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: - Rebase to FSF GDB 7.2.50.20101117 (which is a 7.3 pre-release). Date: Sat, 27 Jun 2026 23:54:45 GMT Message-ID: <178260448579.1.11526711103961595421.rpms-gdb-e00e5eae57c2@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: e00e5eae57c22a7c6fce5dfc2d49f75bbe1e3579 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogZTAwZTVlYWU1N2MyMmE3YzZmY2U1ZGZjMmQ0 OWY3NWJiZTFlMzU3OQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMC0xMS0xN1QwMzo1ODoxNiswMTowMApTdGF0cyAgOiArNTEy OC8tMTY0NTYgaW4gNDkgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0 Lm9yZy9ycG1zL2dkYi9jL2UwMGU1ZWFlNTdjMjJhN2M2ZmNlNWRmYzJkNDlmNzViYmUxZTM1Nzk/ YnJhbmNoPWdkYi0xNy4yLXJlYmFzZS1mNDQKCkxvZzoKLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjIu NTAuMjAxMDExMTcgKHdoaWNoIGlzIGEgNy4zIHByZS1yZWxlYXNlKS4KCi0tLQpkaWZmIC0tZ2l0 IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggODE4YjFlNi4uMmJmYTYwOSAxMDA2NDQK LS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xICsxIEBACi1nZGItNy4yLnRh ci5iejIKK2dkYi03LjIuNTAuMjAxMDExMTcudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMt YnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2ggYi9nZGItNi4zLWJ6MjMxODMyLW9ic3RhY2stMmdi LnBhdGNoCmluZGV4IDQ3YmQ2OGIuLjM4NzQyY2QgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtYnoyMzE4 MzItb2JzdGFjay0yZ2IucGF0Y2gKKysrIGIvZ2RiLTYuMy1iejIzMTgzMi1vYnN0YWNrLTJnYi5w YXRjaApAQCAtMSwxMSArMSwxMSBAQAogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3pp bGxhL3Nob3dfYnVnLmNnaT9pZD0yMzE4MzIKIAogCi1JbmRleDogZ2RiLTYuOC9nZGIvc3ltbWlz Yy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltbWlzYy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTYuOC5vcmlnL2dkYi9zeW1taXNjLmMJMjAwOC0wMy0xNyAxNjowNjoyNC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNi44L2dkYi9zeW1taXNjLmMJMjAwOC0wNy0xNCAxMDoyNzo1 MC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMzAsOCArMjMwLDggQEAgcHJpbnRfb2JqZmlsZV9zdGF0 aXN0aWNzICh2b2lkKQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvc3ltbWlzYy5j CTIwMTAtMTEtMTYgMDc6NTM6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvc3ltbWlzYy5jCTIwMTAtMTEtMTYgMDg6MDM6MDguMDAwMDAwMDAwICswMTAwCitA QCAtMTg2LDggKzE4Niw4IEBAIHByaW50X29iamZpbGVfc3RhdGlzdGljcyAodm9pZCkKICAgICAg aWYgKE9CSlNUQVQgKG9iamZpbGUsIHN6X3N0cnRhYikgPiAwKQogICAgICAgIHByaW50Zl9maWx0 ZXJlZCAoXygiICBTcGFjZSB1c2VkIGJ5IGEub3V0IHN0cmluZyB0YWJsZXM6ICVkXG4iKSwKICAJ CSAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBzel9zdHJ0YWIpKTsKQEAgLTE0LDEyICsxNCwxMiBA QCBJbmRleDogZ2RiLTYuOC9nZGIvc3ltbWlzYy5jCiArICAgIHByaW50Zl9maWx0ZXJlZCAoXygi ICBUb3RhbCBtZW1vcnkgdXNlZCBmb3Igb2JqZmlsZSBvYnN0YWNrOiAlbGRcbiIpLAogKwkJICAg ICAobG9uZykgb2JzdGFja19tZW1vcnlfdXNlZCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaykp OwogICAgICBwcmludGZfZmlsdGVyZWQgKF8oIiAgVG90YWwgbWVtb3J5IHVzZWQgZm9yIHBzeW1i b2wgY2FjaGU6ICVkXG4iKSwKLSAJCSAgICAgYmNhY2hlX21lbW9yeV91c2VkIChvYmpmaWxlLT5w c3ltYm9sX2NhY2hlKSk7Ci0gICAgIHByaW50Zl9maWx0ZXJlZCAoXygiICBUb3RhbCBtZW1vcnkg dXNlZCBmb3IgbWFjcm8gY2FjaGU6ICVkXG4iKSwKLUluZGV4OiBnZGItNi44L2luY2x1ZGUvb2Jz dGFjay5oCisgCQkgICAgIGJjYWNoZV9tZW1vcnlfdXNlZCAocHN5bWJvbF9iY2FjaGVfZ2V0X2Jj YWNoZQorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZmlsZS0+cHN5bWJvbF9jYWNo ZSkpKTsKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2luY2x1ZGUvb2JzdGFjay5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuOC5vcmlnL2luY2x1ZGUvb2JzdGFjay5oCTIwMDUtMDUtMTAgMTI6 MjE6MDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC9pbmNsdWRlL29ic3RhY2suaAkyMDA4 LTA3LTE0IDEwOjI3OjUwLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYu b3JpZy9pbmNsdWRlL29ic3RhY2suaAkyMDA4LTEwLTIxIDAxOjAzOjMxLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvaW5jbHVkZS9vYnN0YWNrLmgJMjAxMC0xMS0xNiAw ODowMjozNy4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xODgsMzEgKzE4OCwzMSBAQCBzdHJ1Y3Qgb2Jz dGFjawkJLyogY29udHJvbCBjdXJyZW50IG9iamVjCiAgCiAgLyogRGVjbGFyZSB0aGUgZXh0ZXJu YWwgZnVuY3Rpb25zIHdlIHVzZTsgdGhleSBhcmUgaW4gb2JzdGFjay5jLiAgKi8KQEAgLTEzNCwx MCArMTM0LDEwIEBAIEluZGV4OiBnZGItNi44L2luY2x1ZGUvb2JzdGFjay5oCiAgCSAgICA9ICho KS0+dGVtcCArIChjaGFyICopIChoKS0+Y2h1bmspCQkJCVwKICAgICA6ICgoKG9ic3RhY2tfZnJl ZSkgKChoKSwgKGgpLT50ZW1wICsgKGNoYXIgKikgKGgpLT5jaHVuayksIDApLCAwKSkpCiAgCi1J bmRleDogZ2RiLTYuOC9saWJpYmVydHkvb2JzdGFjay5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9saWJpYmVydHkvb2JzdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC5vcmlnL2xp YmliZXJ0eS9vYnN0YWNrLmMJMjAwNS0wNS0xMCAxNzozMzozMy4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNi44L2xpYmliZXJ0eS9vYnN0YWNrLmMJMjAwOC0wNy0xNCAxMDoyNzo1MC4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvbGliaWJlcnR5L29ic3RhY2su YwkyMDA1LTA1LTEwIDE3OjMzOjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAx MDExMTYvbGliaWJlcnR5L29ic3RhY2suYwkyMDEwLTExLTE2IDA4OjAyOjM3LjAwMDAwMDAwMCAr MDEwMAogQEAgLTQ0LDkgKzQ0LDExIEBACiAgI2lmICFkZWZpbmVkIChfTElCQykgJiYgZGVmaW5l ZCAoX19HTlVfTElCUkFSWV9fKSAmJiBfX0dOVV9MSUJSQVJZX18gPiAxCiAgI2luY2x1ZGUgPGdu dS12ZXJzaW9ucy5oPgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtZ3N0YWNrLTIwMDUwNDExLnBhdGNo IGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKaW5kZXggMmQ5OTQyOC4uOThkNWJiMCAx MDA2NDQKLS0tIGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKKysrIGIvZ2RiLTYuMy1n c3RhY2stMjAwNTA0MTEucGF0Y2gKQEAgLTQsMjAgKzQsMjAgQEAKIAl0byBpbnN0YWxsIGFuZCB1 bmluc3RhbGwuCiAJKiBnc3RhY2suc2gsIGdzdGFjay4xOiBOZXcgZmlsZXMuCiAKLUluZGV4OiBn ZGItNy4yL2dkYi9NYWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01h a2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9NYWtlZmlsZS5pbgky MDEwLTA5LTAzIDA5OjM3OjU1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL01ha2Vm aWxlLmluCTIwMTAtMDktMDMgMDk6Mzg6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMTAxMCw3ICsx MDEwLDcgQEAgaW5zdGFsbDogYWxsIGluc3RhbGwtb25seSAKKy0tLSBnZGItNy4yLjUwLjIwMTAx MTE2Lm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTAtMTEtMDUgMTU6MzE6MjUuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvTWFrZWZpbGUuaW4JMjAxMC0xMS0xNiAw Nzo1NjoxMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC05NzIsNyArOTcyLDcgQEAgZ2RiLno6Z2RiLjEK KyBpbnN0YWxsOiBhbGwKKyAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsLW9ubHkK ICAKLSAjIFRoZSAiaW5zdGFsbC1vbmx5IiB0YXJnZXQgYWxzbyBpbnN0YWxscyB0aGUgc3lzY2Fs bHMnIFhNTCBmaWxlcyBpbgotICMgdGhlIHN5c3RlbS4KLS1pbnN0YWxsLW9ubHk6ICQoQ09ORklH X0lOU1RBTEwpIHhtbC1zeXNjYWxsLWluc3RhbGwKLStpbnN0YWxsLW9ubHk6IGluc3RhbGwtZ3N0 YWNrICQoQ09ORklHX0lOU1RBTEwpIHhtbC1zeXNjYWxsLWluc3RhbGwKKy1pbnN0YWxsLW9ubHk6 ICQoQ09ORklHX0lOU1RBTEwpCisraW5zdGFsbC1vbmx5OiBpbnN0YWxsLWdzdGFjayAkKENPTkZJ R19JTlNUQUxMKQogIAl0cmFuc2Zvcm1lZF9uYW1lPWB0PSckKHByb2dyYW1fdHJhbnNmb3JtX25h bWUpJzsgXAogIAkJCSAgZWNobyBnZGIgfCBzZWQgLWUgIiQkdCJgIDsgXAogIAkJaWYgdGVzdCAi eCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4OyB0aGVuIFwKLUBAIC0xMDQ2LDcgKzEwNDYsMjUgQEAg aW5zdGFsbC10dWk6CitAQCAtMTAwOCw3ICsxMDA4LDI1IEBAIGluc3RhbGwtdHVpOgogIGluc3Rh bGwtcHl0aG9uOgogIAkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERFU1RE SVIpJChHREJfREFUQURJUikvcHl0aG9uL2dkYgogIApAQCAtNDQsNyArNDQsNyBAQCBJbmRleDog Z2RiLTcuMi9nZGIvTWFrZWZpbGUuaW4KICAJdHJhbnNmb3JtZWRfbmFtZT1gdD0nJChwcm9ncmFt X3RyYW5zZm9ybV9uYW1lKSc7IFwKICAJCQkgIGVjaG8gZ2RiIHwgc2VkIC1lICQkdGAgOyBcCiAg CQlpZiB0ZXN0ICJ4JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4gXAotQEAgLTEwNjgsNiAr MTA4NiwxNyBAQCB1bmluc3RhbGwtdHVpOgorQEAgLTEwMzAsNiArMTA0OCwxNyBAQCB1bmluc3Rh bGwtdHVpOgogIAkJZmkgOyBcCiAgCQlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQkdHJhbnNm b3JtZWRfbmFtZSQoRVhFRVhUKSBcCiAgCQkgICAgICAkKERFU1RESVIpJChtYW4xZGlyKS8kJHRy YW5zZm9ybWVkX25hbWUuMQpAQCAtNjIsMTAgKzYyLDEwIEBAIEluZGV4OiBnZGItNy4yL2dkYi9N YWtlZmlsZS5pbgogIAogICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUgYnVpbHQgc3RhbmRh bG9uZSBmb3IgdGVzdGluZy4KICB0ZXN0LWNwLW5hbWUtcGFyc2VyLm86IGNwLW5hbWUtcGFyc2Vy LmMKLUluZGV4OiBnZGItNy4yL2dkYi9nc3RhY2suc2gKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi9nc3RhY2suc2gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi9nc3RhY2suc2gJMjAxMC0w OS0wMyAwOTozODoxMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9nc3RhY2suc2gJMjAxMC0xMS0xNiAwNzo1NTo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAg KzEsNDggQEAKICsjIS9iaW4vc2gKICsKQEAgLTExNSwxMCArMTE1LDEwIEBAIEluZGV4OiBnZGIt Ny4yL2dkYi9nc3RhY2suc2gKICsgICAgLWUgJ3MvXlwoKGdkYikgXCkqLy8nIFwKICsgICAgLWUg Jy9eIy9wJyBcCiArICAgIC1lICcvXlRocmVhZC9wJwotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nc3RhY2suZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dzdGFjay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmV4cAkyMDEwLTA5LTAzIDA5OjM4OjEyLjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3Rh Y2suZXhwCTIwMTAtMTEtMTYgMDc6NTU6NDcuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDcx IEBACiArIyBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCkBAIC0xOTEsMTAgKzE5MSwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dzdGFjay5leHAKICtnZGJfZXhpdAogKwogK3JlbW90ZV9leGVjIGhvc3QgImtpbGwg LTkgJHBpZCIKLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmMK K0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNr LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmMJMjAx MC0wOS0wMyAwOTozODoxMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmMJMjAxMC0xMS0xNiAwNzo1NTo0Ny4wMDAw MDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtbGFyZ2Ut Y29yZS0yMDA1MTIwNi5wYXRjaCBiL2dkYi02LjMtbGFyZ2UtY29yZS0yMDA1MTIwNi5wYXRjaApp bmRleCA4Nzg5YTZhLi4zYmU3NDZhIDEwMDY0NAotLS0gYS9nZGItNi4zLWxhcmdlLWNvcmUtMjAw NTEyMDYucGF0Y2gKKysrIGIvZ2RiLTYuMy1sYXJnZS1jb3JlLTIwMDUxMjA2LnBhdGNoCkBAIC0y NSwxMCArMjUsMTAgQEAKIAogCVBvcnQgdG8gR0RCLTYuNy4KIAotSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3N5bWZpbGUtbWVtLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9zeW1maWxlLW1lbS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmln L2dkYi9zeW1maWxlLW1lbS5jCTIwMTAtMDEtMDEgMDg6MzE6NDIuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc3ltZmlsZS1tZW0uYwkyMDEwLTA3LTEyIDEwOjQ2 OjI0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvc3lt ZmlsZS1tZW0uYwkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUtbWVtLmMJMjAxMC0xMS0xNiAwODowMDozNy4wMDAw MDAwMDAgKzAxMDAKIEBAIC01Nyw2ICs1NywxNCBAQAogICNpbmNsdWRlICJlbGYvY29tbW9uLmgi CiAgCkBAIC01MywxMCArNTMsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3N5 bWZpbGUtbWVtLmMKICAgIGlmIChuYmZkID09IE5VTEwpCiAgICAgIGVycm9yIChfKCJGYWlsZWQg dG8gcmVhZCBhIHZhbGlkIG9iamVjdCBmaWxlIGltYWdlIGZyb20gbWVtb3J5LiIpKTsKICAKLUlu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYworSW5kZXg6IGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL3RhcmdldC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcx MS5vcmlnL2dkYi90YXJnZXQuYwkyMDEwLTA3LTEyIDEwOjAwOjU2LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5jCTIwMTAtMDctMTIgMTA6NDc6MDQu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90YXJnZXQu YwkyMDEwLTExLTE2IDA3OjUzOjU5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL3RhcmdldC5jCTIwMTAtMTEtMTYgMDg6MDA6MzcuMDAwMDAwMDAwICswMTAwCiBA QCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW50IG5vc3ltYm9sIChjaGFyICosIENPUkVfQUREUiAq CiAgCiAgc3RhdGljIHZvaWQgdGNvbXBsYWluICh2b2lkKSBBVFRSSUJVVEVfTk9SRVRVUk47CkBA IC04NCw3ICs4NCw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwog IAkgICAgbm9tZW1vcnkpOwogICAgZGVfZmF1bHQgKHRvX2ZpbGVzX2luZm8sCiAgCSAgICAodm9p ZCAoKikgKHN0cnVjdCB0YXJnZXRfb3BzICopKQotQEAgLTE1MjYsNyArMTUyNiw3IEBAIHRhcmdl dF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICoKK0BAIC0xNTUwLDcgKzE1NTAsNyBA QCB0YXJnZXRfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqCiAgICAgaXQgbWFrZXMg bm8gcHJvZ3Jlc3MsIGFuZCB0aGVuIHJldHVybiBob3cgbXVjaCB3YXMgdHJhbnNmZXJyZWQpLiAq LwogIAogIGludApAQCAtOTMsNyArOTMsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGFyZ2V0LmMKICB7CiAgICAvKiBEaXNwYXRjaCB0byB0aGUgdG9wbW9zdCB0YXJnZXQsIG5v dCB0aGUgZmxhdHRlbmVkIGN1cnJlbnRfdGFyZ2V0LgogICAgICAgTWVtb3J5IGFjY2Vzc2VzIGNo ZWNrIHRhcmdldC0+dG9faGFzXyhhbGxfKW1lbW9yeSwgYW5kIHRoZQotQEAgLTE1NDIsNyArMTU0 Miw3IEBAIHRhcmdldF9yZWFkX21lbW9yeSAoQ09SRV9BRERSIG1lbWFkZHIsIGcKK0BAIC0xNTY2 LDcgKzE1NjYsNyBAQCB0YXJnZXRfcmVhZF9tZW1vcnkgKENPUkVfQUREUiBtZW1hZGRyLCBnCiAg ICAgdGhlIHRhcmdldCdzIHN0YWNrLiAgVGhpcyBtYXkgdHJpZ2dlciBkaWZmZXJlbnQgY2FjaGUg YmVoYXZpb3IuICAqLwogIAogIGludApAQCAtMTAyLDcgKzEwMiw3IEBAIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRoZSB0b3Bt b3N0IHRhcmdldCwgbm90IHRoZSBmbGF0dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAgICBNZW1v cnkgYWNjZXNzZXMgY2hlY2sgdGFyZ2V0LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQgdGhlCi1A QCAtMTU2MSw3ICsxNTYxLDcgQEAgdGFyZ2V0X3JlYWRfc3RhY2sgKENPUkVfQUREUiBtZW1hZGRy LCBnZAorQEAgLTE1ODUsNyArMTU4NSw3IEBAIHRhcmdldF9yZWFkX3N0YWNrIChDT1JFX0FERFIg bWVtYWRkciwgZ2QKICAgICBDYWxsZXJzIHRoYXQgY2FuIGRlYWwgd2l0aCBwYXJ0aWFsIHdyaXRl cyBzaG91bGQgY2FsbCB0YXJnZXRfd3JpdGUuICAqLwogIAogIGludApAQCAtMTExLDcgKzExMSw3 IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwogIHsKICAgIC8qIERp c3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRhcmdldCwgbm90IHRoZSBmbGF0dGVuZWQgY3VycmVudF90 YXJnZXQuCiAgICAgICBNZW1vcnkgYWNjZXNzZXMgY2hlY2sgdGFyZ2V0LT50b19oYXNfKGFsbF8p bWVtb3J5LCBhbmQgdGhlCi1AQCAtMzIxOCw4ICszMjE4LDggQEAgZGVidWdfdG9fcHJlcGFyZV90 b19zdG9yZSAoc3RydWN0IHJlZ2NhYworQEAgLTMzNDgsOCArMzM0OCw4IEBAIGRlYnVnX3RvX3By ZXBhcmVfdG9fc3RvcmUgKHN0cnVjdCByZWdjYWMKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywgInRhcmdldF9wcmVwYXJlX3RvX3N0b3JlICgpXG4iKTsKICB9CiAgCkBAIC0xMjIs NyArMTIyLDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5jCiAgCQkJ ICAgICAgaW50IHdyaXRlLCBzdHJ1Y3QgbWVtX2F0dHJpYiAqYXR0cmliLAogIAkJCSAgICAgIHN0 cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQpCiAgewotQEAgLTMyMjksOCArMzIyOSw4IEBAIGRlcHJl Y2F0ZWRfZGVidWdfeGZlcl9tZW1vcnkgKENPUkVfQUREUiAKK0BAIC0zMzU5LDggKzMzNTksOCBA QCBkZXByZWNhdGVkX2RlYnVnX3hmZXJfbWVtb3J5IChDT1JFX0FERFIgCiAgCQkJCQkJYXR0cmli LCB0YXJnZXQpOwogIAogICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtMTMz LDExICsxMzMsMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5jCiAg CQkgICAgICB3cml0ZSA/ICJ3cml0ZSIgOiAicmVhZCIsIHJldHZhbCk7CiAgCiAgICBpZiAocmV0 dmFsID4gMCkKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuaAorSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MS45MC4yMDEwMDcxMS5vcmlnL2dkYi90YXJnZXQuaAkyMDEwLTA3LTEyIDEwOjAwOjU2LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5oCTIwMTAtMDct MTIgMTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtNDE3LDEwICs0MTcsMTAgQEAgc3RydWN0 IHRhcmdldF9vcHMKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3RhcmdldC5oCTIw MTAtMTEtMTYgMDc6NTM6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvdGFyZ2V0LmgJMjAxMC0xMS0xNiAwODowMDozNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC00 MjksMTAgKzQyOSwxMCBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogICAgICAgICBOT1RFOiBjYWduZXkv MjAwNC0xMC0wMTogVGhpcyBoYXMgYmVlbiBlbnRpcmVseSBzdXBlcnNlZWRlZCBieQogICAgICAg ICB0b194ZmVyX3BhcnRpYWwgYW5kIGluZmVyaW9yIGluaGVyaXRhbmNlLiAgKi8KICAKQEAgLTE1 Miw3ICsxNTIsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGFyZ2V0LmgKICAK ICAgICAgdm9pZCAoKnRvX2ZpbGVzX2luZm8pIChzdHJ1Y3QgdGFyZ2V0X29wcyAqKTsKICAgICAg aW50ICgqdG9faW5zZXJ0X2JyZWFrcG9pbnQpIChzdHJ1Y3QgZ2RiYXJjaCAqLCBzdHJ1Y3QgYnBf dGFyZ2V0X2luZm8gKik7Ci1AQCAtODM4LDEyICs4MzgsMTIgQEAgZXh0ZXJuIHZvaWQgdGFyZ2V0 X2RjYWNoZV9pbnZhbGlkYXRlICh2bworQEAgLTg0NiwxMiArODQ2LDEyIEBAIGV4dGVybiB2b2lk IHRhcmdldF9kY2FjaGVfaW52YWxpZGF0ZSAodm8KICAKICBleHRlcm4gaW50IHRhcmdldF9yZWFk X3N0cmluZyAoQ09SRV9BRERSLCBjaGFyICoqLCBpbnQsIGludCAqKTsKICAKQEAgLTE2OCwxMCAr MTY4LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuaAogIAogIC8q IEZldGNoZXMgdGhlIHRhcmdldCdzIG1lbW9yeSBtYXAuICBJZiBvbmUgaXMgZm91bmQgaXQgaXMg c29ydGVkCiAgICAgYW5kIHJldHVybmVkLCBhZnRlciBzb21lIGNvbnNpc3RlbmN5IGNoZWNraW5n LiAgT3RoZXJ3aXNlLCBOVUxMCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZGNhY2hl LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9kY2FjaGUuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZGNhY2hlLmMJMjAxMC0wNS0xNCAxOTo1 MzoxNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kY2FjaGUu YwkyMDEwLTA3LTEyIDEwOjQ2OjI0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAx MDExMTYub3JpZy9nZGIvZGNhY2hlLmMJMjAxMC0wNS0xNCAxOTo1MzoxNS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9kY2FjaGUuYwkyMDEwLTExLTE2IDA4OjAw OjM3LjAwMDAwMDAwMCArMDEwMAogQEAgLTQ2NSwxMCArNDY1LDEwIEBAIGRjYWNoZV9mcmVlIChE Q0FDSEUgKmRjYWNoZSkKICAgICBOT1RFOiBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSB0b194 ZmVyX3BhcnRpYWwgaW50ZXJmYWNlLCBpbiB3aGljaAogICAgIHBvc2l0aXZlIHZhbHVlcyBsZXNz IHRoYW4gTEVOIG1lYW4gZnVydGhlciB0cmFuc2ZlcnMgbWF5IGJlIHBvc3NpYmxlLiAgKi8KQEAg LTE4NSwxMCArMTg1LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kY2FjaGUu YwogIHsKICAgIGludCBpOwogICAgaW50IHJlczsKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9kY2FjaGUuaAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2RjYWNoZS5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9kY2FjaGUuaAkyMDEw LTAxLTAxIDA4OjMxOjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL2RjYWNoZS5oCTIwMTAtMDctMTIgMTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9kY2FjaGUuaAkyMDEwLTAxLTAxIDA4OjMxOjMwLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2RjYWNoZS5oCTIwMTAt MTEtMTYgMDg6MDA6MzcuMDAwMDAwMDAwICswMTAwCiBAQCAtMzUsOCArMzUsOCBAQCB2b2lkIGRj YWNoZV9mcmVlIChEQ0FDSEUgKik7CiAgCiAgLyogU2ltcGxlIHRvIGNhbGwgZnJvbSA8cmVtb3Rl Pl94ZmVyX21lbW9yeSAqLwpAQCAtMjAwLDEwICsyMDAsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2RjYWNoZS5oCiAgCiAgdm9pZCBkY2FjaGVfdXBkYXRlIChEQ0FDSEUgKmRj YWNoZSwgQ09SRV9BRERSIG1lbWFkZHIsIGdkYl9ieXRlICpteWFkZHIsCiAgCQkgICAgaW50IGxl bik7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5jCitJbmRleDogZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvZXhlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEw MDcxMS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wNS0xNCAyMDozNToxMS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmMJMjAxMC0wNy0xMiAxMDo0NjoyNC4w MDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2V4ZWMuYwky MDEwLTA4LTMxIDIwOjA4OjQzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL2V4ZWMuYwkyMDEwLTExLTE2IDA4OjAwOjM3LjAwMDAwMDAwMCArMDEwMAogQEAgLTU3 MSw3ICs1NzEsNyBAQCBtYXBfdm1hcCAoYmZkICphYmZkLCBiZmQgKmFyY2gpCiAgfQogIAwKQEAg LTIxMywxMSArMjEzLDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmMK ICBzZWN0aW9uX3RhYmxlX3hmZXJfbWVtb3J5X3BhcnRpYWwgKGdkYl9ieXRlICpyZWFkYnVmLCBj b25zdCBnZGJfYnl0ZSAqd3JpdGVidWYsCiAgCQkJCSAgIFVMT05HRVNUIG9mZnNldCwgTE9OR0VT VCBsZW4sCiAgCQkJCSAgIHN0cnVjdCB0YXJnZXRfc2VjdGlvbiAqc2VjdGlvbnMsCi1JbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3 MTEub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0wNy0xMiAxMDo0NDozNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9saW51eC1uYXQuYwkyMDEwLTA3LTEyIDEw OjQ2OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTUxOTcsNyArNTE5Nyw3IEBAIGxpbnV4X3hmZXJf cGFydGlhbCAoc3RydWN0IHRhcmdldF9vcHMgKm8KKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9y aWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDg6MDA6MjYuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMJMjAxMC0xMS0xNiAwODowMDoz Ny4wMDAwMDAwMDAgKzAxMDAKK0BAIC01MjUxLDcgKzUyNTEsNyBAQCBsaW51eF94ZmVyX3BhcnRp YWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvCiAgI2VuZGlmCiAgICAgICAgaWYgKGl0ZXJhdGVfb3Zl cl9sd3BzIChpYTY0X2xpbnV4X2NoZWNrX3N0YWNrX3JlZ2lvbiwgJnJhbmdlKSAhPSBOVUxMKQog IAl7IC8qIFRoaXMgcmVnaW9uIGNvbnRhaW5zIGlhNjQgcnNlIHJlZ2lzdGVycywgd2UgaGF2ZSB0 byByZS1yZWFkLiAgKi8KQEAgLTIyNiwxMCArMjI2LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9saW51eC1uYXQuYwogIAogIAkgIC8qIFJlLXJlYWQgcmVnaXN0ZXIgc3RhY2sg YXJlYS4gICovCiAgCSAgeHhmZXIgPSBzdXBlcl94ZmVyX3BhcnRpYWwgKG9wcywgb2JqZWN0LCBh bm5leCwKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9yZW1vdGUuYworSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3JlbW90ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9yZW1vdGUuYwkyMDEwLTA3LTA3IDE4OjE1OjE2LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3JlbW90ZS5jCTIwMTAtMDctMTIg MTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dk Yi9yZW1vdGUuYwkyMDEwLTExLTA0IDA1OjQ4OjIxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3JlbW90ZS5jCTIwMTAtMTEtMTYgMDg6MDA6MzcuMDAwMDAwMDAw ICswMTAwCiBAQCAtMjUsNiArMjUsNyBAQAogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCiAgI2lu Y2x1ZGUgPGN0eXBlLmg+CkBAIC0yNjksMTEgKzI2OSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvcmVtb3RlLmMKICB9CiAgCiAgLyogU2VuZHMgYSBwYWNrZXQgd2l0aCBjb250 ZW50IGRldGVybWluZWQgYnkgdGhlIHByaW50ZiBmb3JtYXQgc3RyaW5nCi1JbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvcmVtb3RlLXNpbS5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvcmVtb3RlLXNpbS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5v cmlnL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wNS0xNiAyMzoxMToxNC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wNy0xMiAxMDo0 NjoyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC03NTksMTEgKzc1OSwxNCBAQCBnZGJzaW1fcHJlcGFy ZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhY2hlCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmln L2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wOC0xMCAwNjozOToyNi4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0xMS0xNiAwODowMTox Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDU1LDExICsxMDU1LDEzIEBAIGdkYnNpbV9wcmVwYXJl X3RvX3N0b3JlIChzdHJ1Y3QgcmVnY2FjaGUKICAKICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg Ynl0ZXMgdHJhbnNmZXJyZWQuICovCiAgCkBAIC0yODYsMTQgKzI4NiwxMyBAQCBJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvcmVtb3RlLXNpbS5jCiAgewogKyAgLyogQ29udmVydCB0byBs ZW4gdHlwZSB0aGF0IHNpbV9yZWFkIGFuZCBzaW1fd3JpdGUgY2FuIGhhbmRsZS4gICovCiArICBp bnQgeGZlcl9sZW4gPSAoaW50KWxlbjsKLSsKLSAgIC8qIElmIG5vIHByb2dyYW0gaXMgcnVubmlu ZyB5ZXQsIHRoZW4gaWdub3JlIHRoZSBzaW11bGF0b3IgZm9yCi0gICAgICBtZW1vcnkuICBQYXNz IHRoZSByZXF1ZXN0IGRvd24gdG8gdGhlIG5leHQgdGFyZ2V0LCBob3BlZnVsbHkKLSAgICAgIGFu IGV4ZWMgZmlsZS4gICovCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5oCisg ICBzdHJ1Y3Qgc2ltX2luZmVyaW9yX2RhdGEgKnNpbV9kYXRhCisgICAgID0gZ2V0X3NpbV9pbmZl cmlvcl9kYXRhIChjdXJyZW50X2luZmVyaW9yICgpLCBTSU1fSU5TVEFOQ0VfTk9UX05FRURFRCk7 CisgCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZXhlYy5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9leGVjLmgJMjAxMC0wMS0wMSAwODozMToz MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmgJMjAx MC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2 Lm9yaWcvZ2RiL2V4ZWMuaAkyMDEwLTAxLTAxIDA4OjMxOjMxLjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2V4ZWMuaAkyMDEwLTExLTE2IDA4OjAwOjM3LjAwMDAw MDAwMCArMDEwMAogQEAgLTYwLDcgKzYwLDcgQEAgZXh0ZXJuIGludCByZXNpemVfc2VjdGlvbl90 YWJsZSAoc3RydWN0IAogIAogICAgIE9uZSwgYW5kIG9ubHkgb25lLCBvZiByZWFkYnVmIG9yIHdy aXRlYnVmIG11c3QgYmUgbm9uLU5VTEwuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVhZG5l dmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKaW5k ZXggN2NkYzBmNy4uNTE5NjQzZCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5 MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTExLDEx ICsxMSwxMSBAQAogCiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUgT3B0aW9ucyk6IERvY3Vt ZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZG9jL2dk Yi50ZXhpbmZvCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZG9jL2dkYi50ZXhpbmZv CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMC0wNy0yMyAyMDo1ODo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkw LjIwMTAwNzIxL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNy0yMyAyMDo1OToxNS4wMDAwMDAw MDAgKzAyMDAKLUBAIC05OTgsNiArOTk4LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVu dGlyZSBzeW1ib2wgdGEKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2RvYy9nZGIu dGV4aW5mbwkyMDEwLTExLTEyIDIxOjQ5OjQxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTExLTE2IDA3OjU5OjMxLjAwMDAw MDAwMCArMDEwMAorQEAgLTEwMDEsNiArMTAwMSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUn cyBlbnRpcmUgc3ltYm9sIHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5j cmVtZW50YWxseSBhcyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwg YnV0IG1ha2VzIGZ1dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4KICAKQEAgLTI4LDExICsyOCwxMSBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0 YWJsZQogIAogIEBub2RlIE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEv Z2RiL21haW4uYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL21haW4uYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDctMjMg MjA6NTg6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvbWFp bi5jCTIwMTAtMDctMjMgMjA6NTk6MTUuMDAwMDAwMDAwICswMjAwCi1AQCAtMzkxLDYgKzM5MSw3 IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5v cmlnL2dkYi9tYWluLmMJMjAxMC0xMS0xNiAwNzo1OToyMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9tYWluLmMJMjAxMC0xMS0xNiAwNzo1OTo1OS4wMDAwMDAw MDAgKzAxMDAKK0BAIC0zOTAsNiArMzkwLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK ICAgICAgICB7InhkYiIsIG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7 ImRieCIsIG5vX2FyZ3VtZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ci LCBub19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDE4ICs0MCwx OCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvbWFpbi5jCiAgICAgICAgeyJyIiwg bm9fYXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCiAgICAgICAgeyJxdWlldCIs IG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAogICAgICAgIHsicSIsIG5vX2FyZ3VtZW50LCAmcXVp ZXQsIDF9LAotQEAgLTEwMzgsNiArMTAzOSw3IEBAIE9wdGlvbnM6XG5cblwKLSAgIGZwdXRzX3Vu ZmlsdGVyZWQgKF8oIlwKK0BAIC05ODIsNiArOTgzLDcgQEAgT3B0aW9uczpcblxuXAorICAgZnB1 dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90 IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAg ICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogKyAgLS1yZWFk bmV2ZXIgICAgICAgIERvIG5vdCByZWFkIHN5bWJvbCBmaWxlcy5cblwKICAiKSwgc3RyZWFtKTsK ICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklM RSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MjEvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIv c3ltZmlsZS5jCTIwMTAtMDctMjMgMjA6NTg6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvc3ltZmlsZS5jCTIwMTAtMDctMjMgMjA6NTk6MTUuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMC0x MC0xNyAyMDo0OTo0Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9zeW1maWxlLmMJMjAxMC0xMS0xNiAwNzo1OTozMS4wMDAwMDAwMDAgKzAxMDAKIEBAIC04MCw2 ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAv KiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZSAqLwpAQCAtNjAsMTkgKzYwLDE5 IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9zeW1maWxlLmMKICAKICAvKiBFeHRl cm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAqLwogIAotSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MjEvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3 MjEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjMgMjA6NTg6NTMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjMg MjA6NTk6MjYuMDAwMDAwMDAwICswMjAwCi1AQCAtNTQsNiArNTQsNyBAQAotICNpbmNsdWRlICJl eGNlcHRpb25zLmgiCi0gI2luY2x1ZGUgImdkYl9zdGF0LmgiCi0gI2luY2x1ZGUgImNvbXBsZXRl ci5oIgorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAt MTEtMTYgMDc6NTQ6MDIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MDA6MTguMDAwMDAwMDAwICswMTAwCitAQCAt NTcsNiArNTcsNyBAQAorICNpbmNsdWRlICJ2ZWMuaCIKKyAjaW5jbHVkZSAiYy1sYW5nLmgiCisg I2luY2x1ZGUgInZhbHByaW50LmgiCiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRlIDxm Y250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTI4Myw4ICsxMjg0LDkgQEAg ZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTEzNTYsOCArMTM1 Nyw5IEBAIGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICBi ZmRfbWFwX292ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2VjdGlv bnMsIE5VTEwpOwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7 CiAgICAgIH0KQEAgLTg0LDEwICs4NCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9n ZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgY2Fu IGVpdGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgotSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MjEvZ2RiL3RvcC5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdG9wLmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQt MDcgMTg6NTQ6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIv dG9wLmgJMjAxMC0wNy0yMyAyMDo1OToxNS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUw LjIwMTAxMTE2Lm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6MzkuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdG9wLmgJMjAxMC0xMS0xNiAwNzo1OToz MS4wMDAwMDAwMDAgKzAxMDAKIEBAIC02MSw2ICs2MSw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9t cHQgKGNoYXIgKik7CiAgCiAgLyogRnJvbSByYW5kb20gcGxhY2VzLiAgKi8KCmRpZmYgLS1naXQg YS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoIGIvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1 MDEwNy5wYXRjaAppbmRleCA0NDBiMjgzLi44MjQ1NTRlIDEwMDY0NAotLS0gYS9nZGItNi4zLXRl c3QtcGllLTIwMDUwMTA3LnBhdGNoCisrKyBiL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0 Y2gKQEAgLTEsMjUgKzEsMjUgQEAKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0 c3VpdGUvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMDYub3Jp Zy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDEwLTAyLTE5IDIwOjE2OjM2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUu YWMJMjAxMC0wMy0wNiAyMzoxOTo1Ni4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIw MTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMC0xMS0wNSAxNTozMToy OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Y29uZmlndXJlLmFjCTIwMTAtMTEtMTYgMDc6NTY6NTMuMDAwMDAwMDAwICswMTAwCiBAQCAtMTQ0 LDYgKzE0NCw2IEBAIEFDX09VVFBVVChbTWFrZWZpbGUgXAogICAgZ2RiLmNwL01ha2VmaWxlIGdk Yi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBcCiAgICBnZGIuZm9ydHJhbi9N YWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxlIFwKICAgIGdkYi5t aS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgXAotLSAg Z2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIFwK LSsgIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmls ZSBnZGIucGllL01ha2VmaWxlIFwKKy0gIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFr ZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIFwKKysgIGdkYi5vYmpj L01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2Fs L01ha2VmaWxlIGdkYi5waWUvTWFrZWZpbGUgXAogICAgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIu cmV2ZXJzZS9NYWtlZmlsZSBcCiAgICBnZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFr ZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZV0pCi1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIv dGVzdHN1aXRlL2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3Rz dWl0ZS9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjkwLjIwMTAwMzA2Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMC0wMi0xOSAyMDoxNjozNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTAt MDMtMDYgMjM6MjA6MTIuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5v cmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTAtMTEtMDUgMTU6MzE6MjkuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQky MDEwLTExLTE2IDA3OjU3OjU5LjAwMDAwMDAwMCArMDEwMAogQEAgLTM1MTUsNyArMzUxNSw3IEBA IGRvbmUKICAKICAKICAKLS1hY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZp bGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdk Yi5iYXNlL01ha2VmaWxlIGdkYi5jcC9NYWtlZmlsZSBnZGIuZGlzYXNtL01ha2VmaWxlIGdkYi5k d2FyZjIvTWFrZWZpbGUgZ2RiLmZvcnRyYW4vTWFrZWZpbGUgZ2RiLnNlcnZlci9NYWtlZmlsZSBn ZGIuamF2YS9NYWtlZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2Ri Lm11bHRpL01ha2VmaWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBh c2NhbC9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdk Yi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIgot K2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGIuYWRhL01ha2Vm aWxlIGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJhc2UvTWFrZWZpbGUg Z2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBn ZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxl IGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUg Z2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdk Yi5waWUvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBn ZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIK Ky1hY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtl ZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2VmaWxl IGdkYi5jcC9NYWtlZmlsZSBnZGIuZGlzYXNtL01ha2VmaWxlIGdkYi5kd2FyZjIvTWFrZWZpbGUg Z2RiLmZvcnRyYW4vTWFrZWZpbGUgZ2RiLnNlcnZlci9NYWtlZmlsZSBnZGIuamF2YS9NYWtlZmls ZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2RiLm11bHRpL01ha2VmaWxl IGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBn ZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi50aHJlYWRzL01ha2Vm aWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZp bGUiCisrYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEv TWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZpbGUgZ2RiLmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9NYWtl ZmlsZSBnZGIuY3AvTWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2Vm aWxlIGdkYi5mb3J0cmFuL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFr ZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0aS9NYWtl ZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZp bGUgZ2RiLnBpZS9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2Vm aWxlIGdkYi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2Vm aWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUiCiAgCiAgY2F0ID5jb25mY2FjaGUgPDxcX0FDRU9GCiAg IyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2Yg Y29uZmlndXJlCkBAIC0zMSwxMCArMzEsMTAgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYv Z2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKICAgICAgImdkYi5weXRob24vTWFrZWZpbGUiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLnB5dGhvbi9NYWtlZmlsZSIgOzsKICAgICAgImdk Yi5yZXZlcnNlL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5yZXZl cnNlL01ha2VmaWxlIiA7OwogICAgICAiZ2RiLnRocmVhZHMvTWFrZWZpbGUiKSBDT05GSUdfRklM RVM9IiRDT05GSUdfRklMRVMgZ2RiLnRocmVhZHMvTWFrZWZpbGUiIDs7Ci1JbmRleDogZ2RiLTcu MC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKK0luZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCTIwMTAt MDMtMDYgMjM6MTk6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMJMjAxMC0xMS0xNiAwNzo1NjozNC4wMDAwMDAw MDAgKzAxMDAKIEBAIC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQg dG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBi eSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTU2 LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvYXR0YWNoLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjAu OTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYworSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDEw LTAzLTA2IDIzOjE5OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDEwLTExLTE2IDA3OjU2OjM0LjAwMDAw MDAwMCArMDEwMAogQEAgLTAsMCArMSwyNCBAQAogKy8qIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRl ZCB0byBiZSBzdGFydGVkIG91dHNpZGUgb2YgZ2RiLCBhbmQgdGhlbgogKyAgIGF0dGFjaGVkIHRv IGJ5IGdkYi4gIFRodXMsIGl0IHNpbXBseSBzcGlucyBpbiBhIGxvb3AuICBUaGUgbG9vcApAQCAt ODUsMTAgKzg1LDEwIEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9hdHRhY2gyLmMKICsgICAgfQogKyAgcmV0dXJuICgwKTsKICt9Ci1JbmRleDogZ2Ri LTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuYworSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5jCTIwMTAt MDMtMDYgMjM6MTk6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuYwkyMDEwLTExLTE2IDA3OjU2OjM0LjAwMDAwMDAw MCArMDEwMAogQEAgLTAsMCArMSwxNDYgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMjM2LDEwICsyMzYsMTAgQEAgSW5kZXg6IGdk Yi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMKICsgICAgfQog KyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2JyZWFrMS5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvYnJlYWsxLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90 ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwkyMDEwLTAzLTA2IDIzOjE5OjMxLjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFr MS5jCTIwMTAtMTEtMTYgMDc6NTY6MzQuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDQ0IEBA CiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsK QEAgLTI4NSwxMCArMjg1LDEwIEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0 c3VpdGUvZ2RiLnBpZS9icmVhazEuYwogK3ZvaWQgbWFya2VyMyAoYSwgYikgY2hhciAqYSwgKmI7 IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhlcmUgKi8KICt2b2lkIG1hcmtlcjQgKGQpIGxvbmcg ZDsge30JCS8qIHNldCBicmVha3BvaW50IDEzIGhlcmUgKi8KICsjZW5kaWYKLUluZGV4OiBnZGIt Ny4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFrZXIuYworSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZW1h a2VyLmMJMjAxMC0wMy0wNiAyMzoxOTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFrZXIuYwkyMDEwLTExLTE2IDA3 OjU2OjM0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwxNDIgQEAKICsvKiBDb3B5cmlnaHQg MTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OQogKyAgIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgpAQCAtNDMyLDEwICs0MzIsMTAgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAx MDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCiArICByZXR1cm4gMDsKICt9 CiArCi1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0 YWNoLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2F0dGFjaC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9hdHRhY2guZXhwCTIwMTAtMDMtMDYgMjM6MTk6MzEuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAky MDEwLTExLTE2IDA3OjU2OjM0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw0MjMgQEAKICsj ICAgQ29weXJpZ2h0IDE5OTcsIDE5OTksIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCkBAIC04NjAsMTAgKzg2MCwxMCBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAogK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCiAr CiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9icmVhay5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9icmVhay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0 c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMC0wMy0wNiAyMzoxOTozMS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5l eHAJMjAxMC0xMS0xNiAwNzo1NjozNC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsOTY2IEBA CiArIyAgIENvcHlyaWdodCAxOTg4LCAxOTkwLCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk1LCAxOTk2 LCAxOTk3LCAxOTk4LCAxOTk5LAogKyMgICAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0CkBAIC0xODMx LDEwICsxODMxLDEwIEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9icmVhay5leHAKICsgICAgc2VuZF9nZGIgInNldCBhcmdzIG1haW5cbiIKICsgICAg Z2RiX2V4cGVjdCAtcmUgIi4qJGdkYl9wcm9tcHQgJCIge30KICt9Ci1JbmRleDogZ2RiLTcuMC45 MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCitJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUu ZXhwCTIwMTAtMDMtMDYgMjM6MTk6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTAtMTEtMTYgMDc6 NTY6MzQuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDIzMyBAQAogKyMgQ29weXJpZ2h0IDE5 OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAKICsjIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjA2OSwxMCArMjA2OSwxMCBAQCBJbmRl eDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhw CiArZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAuKiBcXCguKlxc KS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIChyZWluaXQpIgogKwogK2dkYl90ZXN0ICJjb3JlIiAi Tm8gY29yZSBmaWxlIG5vdy4iCi1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4KK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90 ZXN0c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuOTAuMjAxMDAz MDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCTIwMTAtMDMtMDYgMjM6MTk6MzEu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvTWFrZWZpbGUuaW4JMjAxMC0xMS0xNiAwNzo1NjozNC4wMDAwMDAwMDAgKzAxMDAKIEBA IC0wLDAgKzEsMTkgQEAKICtWUEFUSCA9IEBzcmNkaXJACiArc3JjZGlyID0gQHNyY2RpckAKCmRp ZmYgLS1naXQgYS9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZv LXYyLnBhdGNoIGIvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5m by12Mi5wYXRjaAppbmRleCA5NGMwMDcyLi4zMDA4NTBlIDEwMDY0NAotLS0gYS9nZGItNi41LWJ6 MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCisrKyBiL2dkYi02 LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gKQEAgLTMw LDExICszMCwxMSBAQCBnbGliYy1kZWJ1Z2luZm8tMi43LTIueDg2XzY0OiAvdXNyL2xpYi9kZWJ1 Zy9saWI2NC9saWJjLnNvLjYuZGVidWc6CiAgIDw4MWEyPiAgICAgRFdfQVRfbmFtZSAgICAgICAg OiAoaW5kaXJlY3Qgc3RyaW5nLCBvZmZzZXQ6IDB4MjgwZSk6IF9fZXJybm9fbG9jYXRpb24KICAg PDgxYTg+ICAgICBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZTogKGluZGlyZWN0IHN0cmluZywgb2Zm c2V0OiAweDI4MDgpOiAqX19HSV9fX2Vycm5vX2xvY2F0aW9uCiAKLUluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv Z2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIv Z2RidHlwZXMuYwkyMDEwLTAxLTI4IDEyOjUyOjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMjgvZ2RiL2dkYnR5cGVzLmMJMjAxMC0wMS0yOCAxMjo1Mjo0OC4wMDAwMDAw MDAgKzAxMDAKLUBAIC0zOTc4LDYgKzM5NzgsOSBAQCBnZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVj dCBnZGJhcmNoICpnZGJhCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9nZGJ0eXBl cy5jCTIwMTAtMTEtMTYgMDc6NTM6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvZ2RidHlwZXMuYwkyMDEwLTExLTE2IDA4OjAxOjMzLjAwMDAwMDAwMCArMDEw MAorQEAgLTQyNjIsNiArNDI2Miw5IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFy Y2ggKmdkYmEKICAgICAgPSBhcmNoX3R5cGUgKGdkYmFyY2gsIFRZUEVfQ09ERV9JTlRFUk5BTF9G VU5DVElPTiwgMCwKICAJCSAiPGludGVybmFsIGZ1bmN0aW9uPiIpOwogIApAQCAtNDQsMTEgKzQ0 LDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5jCiAgICByZXR1 cm4gYnVpbHRpbl90eXBlOwogIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9n ZGJ0eXBlcy5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidHlwZXMuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEw LTAxLTI4IDEyOjUyOjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjgv Z2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0yOCAxMjo1Mjo0OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0x MjQ1LDYgKzEyNDUsOCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCistLS0gZ2RiLTcuMi41MC4yMDEw MTExNi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTAtMTEtMTYgMDc6NTM6NTkuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidHlwZXMuaAkyMDEwLTExLTE2IDA4 OjAxOjMzLjAwMDAwMDAwMCArMDEwMAorQEAgLTEyOTQsNiArMTI5NCw4IEBAIHN0cnVjdCBidWls dGluX3R5cGUKICAKICAgIC8qIFRoaXMgdHlwZSBpcyB1c2VkIHRvIHJlcHJlc2VudCBhIEdEQiBp bnRlcm5hbCBmdW5jdGlvbi4gICovCiAgICBzdHJ1Y3QgdHlwZSAqaW50ZXJuYWxfZm47CkBAIC01 NywxMSArNTcsMTEgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2dkYnR5cGVzLmgK ICB9OwogIAogIC8qIFJldHVybiB0aGUgdHlwZSB0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBhcmNo aXRlY3R1cmUuICAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3BhcnNlLmMKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9wYXJzZS5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC41MC4yMDEwMDEyOC5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMjggMTI6NTI6MTkuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvcGFyc2UuYwkyMDEwLTAx LTI4IDEyOjUzOjIwLjAwMDAwMDAwMCArMDEwMAotQEAgLTUwOSw3ICs1MDksMTEgQEAgd3JpdGVf ZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbAorLS0tIGdkYi03LjIuNTAuMjAxMDEx MTYub3JpZy9nZGIvcGFyc2UuYwkyMDEwLTExLTE2IDA3OjUzOjU5LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3BhcnNlLmMJMjAxMC0xMS0xNiAwODowMTozMy4w MDAwMDAwMDAgKzAxMDAKK0BAIC01MzAsNyArNTMwLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChz dHJ1Y3QgbWluaW1hbF9zeW1ib2wKICAgICAgY2FzZSBtc3RfdGV4dDoKICAgICAgY2FzZSBtc3Rf ZmlsZV90ZXh0OgogICAgICBjYXNlIG1zdF9zb2xpYl90cmFtcG9saW5lOgpAQCAtNzQsMTIgKzc0 LDEyIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9wYXJzZS5jCiAgICAgICAgYnJl YWs7CiAgCiAgICAgIGNhc2UgbXN0X3RleHRfZ251X2lmdW5jOgotSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjgvZ2RiL3RhcmdldC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGFy Z2V0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL3Rhcmdl dC5jCTIwMTAtMDEtMjggMTI6NTI6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4y MDEwMDEyOC9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0yOCAxMjo1Mjo0OC4wMDAwMDAwMDAgKzAxMDAK LUBAIC0xMDAwLDYgKzEwMDAsMjUgQEAgcG9wX2FsbF90YXJnZXRzIChpbnQgcXVpdHRpbmcpCi0g ICBwb3BfYWxsX3RhcmdldHNfYWJvdmUgKGR1bW15X3N0cmF0dW0sIHF1aXR0aW5nKTsKKy0tLSBn ZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTAtMTEtMTYgMDg6MDA6Mzcu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGFyZ2V0LmMJMjAx MC0xMS0xNiAwODowMTo1Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDY3LDYgKzEwNjcsMjUgQEAg dGFyZ2V0X2lzX3B1c2hlZCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCisgICByZXR1cm4gMDsKICB9 CiAgCiArc3RhdGljIGludApAQCAtMTA0LDcgKzEwNCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTI4L2dkYi90YXJnZXQuYwogIC8qIFVzaW5nIHRoZSBvYmpmaWxlIHNwZWNpZmllZCBpbiBP QkpGSUxFLCBmaW5kIHRoZSBhZGRyZXNzIGZvciB0aGUKICAgICBjdXJyZW50IHRocmVhZCdzIHRo cmVhZC1sb2NhbCBzdG9yYWdlIHdpdGggb2Zmc2V0IE9GRlNFVC4gICovCiAgQ09SRV9BRERSCi1A QCAtMTA5MCw3ICsxMTA5LDI4IEBAIHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MgKHN0cnVj dCBvYmoKK0BAIC0xMTU3LDcgKzExNzYsMjggQEAgdGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVz cyAoc3RydWN0IG9iagogICAgLyogSXQgd291bGRuJ3QgYmUgd3JvbmcgaGVyZSB0byB0cnkgYSBn ZGJhcmNoIG1ldGhvZCwgdG9vOyBmaW5kaW5nCiAgICAgICBUTFMgaXMgYW4gQUJJLXNwZWNpZmlj IHRoaW5nLiAgQnV0IHdlIGRvbid0IGRvIHRoYXQgeWV0LiAgKi8KICAgIGVsc2UKQEAgLTEzNCwx MCArMTM0LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90YXJnZXQuYwogIAog ICAgcmV0dXJuIGFkZHI7CiAgfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUw LjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwkyMDEwLTAxLTI4 IDEyOjUyOjQ4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5jCTIwMTAtMTEtMTYgMDg6MDE6MzMuMDAwMDAw MDAwICswMTAwCiBAQCAtMCwwICsxLDI4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTE2NywxMCArMTY3LDEwIEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwog KwogKyAgcmV0dXJuIDA7CS8qIGJyZWFrcG9pbnQgKi8KICt9Ci1JbmRleDogZ2RiLTcuMC41MC4y MDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmV4cAorSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItZXJybm8uZXhwCTIwMTAtMDEtMjggMTI6NTI6NDguMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmV4cAky MDEwLTExLTE2IDA4OjAxOjMzLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw2MCBAQAogKyMg Q29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0t Z2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQt bG9jYXRlLXJwbS5wYXRjaAppbmRleCAzMDgzMmM2Li40NDE2ZTY4IDEwMDY0NAotLS0gYS9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRl LXJwbS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNy4yL2dkYi9ldmVudC10b3Au YworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTA2LTI2IDA4OjQ0OjQ3LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMTAtMDYgMjI6 Mzk6MzIuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9l dmVudC10b3AuYwkyMDEwLTA5LTExIDE4OjAwOjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAw MDAwICswMTAwCiBAQCAtMzMsNiArMzMsNyBAQAogICNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5o IiAgICAgLyogZm9yIHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAqLwogICNpbmNsdWRlICJtYWlu LmgiCkBAIC0yOCwxMCArMjgsMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2V2ZW50LXRvcC5jCiAg ICAvKiBFYWNoIGludGVycHJldGVyIGhhcyBpdHMgb3duIHJ1bGVzIG9uIGRpc3BsYXlpbmcgdGhl IGNvbW1hbmQKICAgICAgIHByb21wdC4gICovCiAgICBpZiAoIWN1cnJlbnRfaW50ZXJwX2Rpc3Bs YXlfcHJvbXB0X3AgKCkpCi1JbmRleDogZ2RiLTcuMi9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvZWxmcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5v cmlnL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4yL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0wNiAyMjozOTo1Mi4wMDAwMDAwMDAgKzAy MDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTExLTE2 IDA4OjA0OjE4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2Vs ZnJlYWQuYwkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAogQEAgLTQyLDYgKzQy LDcgQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJnZGJjbWQuaCIKQEAgLTQ2 NCwxMSArNDY0LDExIEBAIEluZGV4OiBnZGItNy4yL2dkYi9lbGZyZWFkLmMKICB9CiAgCiAgc3Rh dGljIGNoYXIgKgotSW5kZXg6IGdkYi03LjIvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9n ZGIvc3ltZmlsZS5oCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi9nZGIvc3ltZmlsZS5oCTIwMTAtMTAtMDYgMjI6Mzk6NTIuMDAwMDAwMDAwICswMjAwCi1A QCAtNTc3LDYgKzU3Nyw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJf Z2UKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTExLTE2 IDA4OjA0OjE4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3N5 bWZpbGUuaAkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAorQEAgLTU1Miw2ICs1 NTIsOCBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCiAgZXh0ZXJu IGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkLAog IAkJCQkgICBjaGFyICoqbGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3VmZml4KTsKICBleHRl cm4gdm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNo YXIgKmRlYnVnKTsKQEAgLTQ3NywxMSArNDc3LDExIEBAIEluZGV4OiBnZGItNy4yL2dkYi9zeW1m aWxlLmgKICAKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAotSW5kZXg6IGdkYi03LjIvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMTAtMDYgMjI6Mzk6MzIu MDAwMDAwMDAwICswMjAwCi1AQCAtMTM1OSw3ICsxMzU5LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9z dGFydCB7IH0geworLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCTIwMTAtMTEtMTYgMDg6MDQ6MTguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMTEtMTYgMDg6MTQ6 MjYuMDAwMDAwMDAwICswMTAwCitAQCAtMTM1OCw3ICsxMzU4LDcgQEAgcHJvYyBkZWZhdWx0X2dk Yl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAw LiIKICAJfQogICAgICB9CkBAIC00OTAsMTAgKzQ5MCwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQtdmVyYm9z ZSAwXG4iCiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJfcHJvbXB0ICQiIHsKLUlu ZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAky MDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAy MDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3Vw cG9ydC5leHAJMjAxMC0xMS0xNiAwODowNDoxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMTEtMTYg MDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBAQCAtMjIxLDcgKzIyMSw3IEBAIHByb2MgZGVmYXVs dF9taV9nZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgfQogICAgICAJfQpAQCAtNTAzLDEwICs1 MDMsMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAK ICAgICAgc2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBn ZGJfZXhwZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxy XG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGItNy4yL2dkYi90 dWkvdHVpLWludGVycC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdHVpL3R1aS1p bnRlcnAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAu YwkyMDEwLTA1LTE4IDAwOjIxOjQzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3R1 aS90dWktaW50ZXJwLmMJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAKKy0tLSBn ZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wNS0xOCAw MDoyMTo0My4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90dWkv dHVpLWludGVycC5jCTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBAQCAtMzAs NiArMzAsNyBAQAogICNpbmNsdWRlICJ0dWkvdHVpLmgiCiAgI2luY2x1ZGUgInR1aS90dWktaW8u aCIKQEAgLTUyNCwxMCArNTI0LDEwIEBAIEluZGV4OiBnZGItNy4yL2dkYi90dWkvdHVpLWludGVy cC5jCiAgICAgICAgLyogVGVsbCByZWFkbGluZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlzcGxheSBp cyBhbmQgd2hhdCBmdW5jdGlvbgogICAgICAgICAgIGl0IHdpbGwgbmVlZCB0byBjYWxsIGFmdGVy IGEgd2hvbGUgbGluZSBpcyByZWFkLiBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0aGUg Zmlyc3QgcHJvbXB0LiAgKi8KLUluZGV4OiBnZGItNy4yL2dkYi9hY2xvY2FsLm00CitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYWNsb2NhbC5tNAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDEwLTA1LTIzIDAyOjU2OjU5LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjIvZ2RiL2FjbG9jYWwubTQJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAx MC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9hY2xvY2FsLm00CTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBAQCAt MTksNiArMTksMTYyIEBAIFlvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEkK ICBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1 aWxkIHN5c3RlbSBlbnRpcmVseS4KICBUbyBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1l bnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBhdXRvcmVjb25mJy5dKV0pCkBAIC02OTEs MTAgKzY5MSwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIvYWNsb2NhbC5tNAogICMgQ29weXJpZ2h0 IChDKSAyMDAyLCAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICAjCiAgIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbgotSW5kZXg6IGdkYi03LjIvZ2RiL2NvbmZpZy5pbgorSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi9nZGIvY29uZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9jb25maWcuaW4JMjAx MC0wOS0wMiAxOToxMjozNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9jb25maWcuaW4JMjAxMC0xMS0xNiAwODoxNDoyNi4wMDAwMDAwMDAgKzAxMDAKIEBAIC00 Niw2ICs0Niw5IEBACiAgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgdGFyZ2V0IHZlY3Rvci4g Ki8KICAjdW5kZWYgREVGQVVMVF9CRkRfVkVDCkBAIC03MDUsNyArNzA1LDcgQEAgSW5kZXg6IGdk Yi03LjIvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlmIHRyYW5zbGF0aW9uIG9mIHBy b2dyYW0gbWVzc2FnZXMgdG8gdGhlIHVzZXIncyBuYXRpdmUKICAgICBsYW5ndWFnZSBpcyByZXF1 ZXN0ZWQuICovCiAgI3VuZGVmIEVOQUJMRV9OTFMKLUBAIC0yMzEsNiArMjM0LDkgQEAKK0BAIC0y MzIsNiArMjM1LDkgQEAKICAvKiBEZWZpbmUgaWYgUHl0aG9uIDIuNyBpcyBiZWluZyB1c2VkLiAq LwogICN1bmRlZiBIQVZFX0xJQlBZVEhPTjJfNwogIApAQCAtNzE1LDEwICs3MTUsMTAgQEAgSW5k ZXg6IGdkYi03LjIvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQgbGlicmFy eSBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5kZXg6IGdk Yi03LjIvZ2RiL2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZp Z3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMTAt MDYgMjI6Mzk6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvY29uZmlndXJlCTIw MTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTEx Ni5vcmlnL2dkYi9jb25maWd1cmUJMjAxMC0xMS0wNSAwMjo1MDoxNy4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9jb25maWd1cmUJMjAxMC0xMS0xNiAwODoxNToz My4wMDAwMDAwMDAgKzAxMDAKIEBAIC02NzksNiArNjc5LDkgQEAgUkVQT1JUX0JVR1NfVE8KICBQ S0dWRVJTSU9OCiAgVEFSR0VUX09CUwpAQCAtNzI2LDE4ICs3MjYsMTggQEAgSW5kZXg6IGdkYi03 LjIvZ2RiL2NvbmZpZ3VyZQogK1JQTV9MSUJTCiArUlBNX0NGTEFHUwogK1BLR19DT05GSUcKLSBw eXRob25kaXIKLSBHREJfREFUQURJUl9QQVRICiAgR0RCX0RBVEFESVIKLUBAIC05NDgsNiArOTUx LDcgQEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKKyBERUJVR0RJUgorIGFtX19mYXN0ZGVwQ0Nf RkFMU0UKK0BAIC05NDUsNiArOTQ4LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKKyB3 aXRoX3NlcGFyYXRlX2RlYnVnX2RpcgogIHdpdGhfZ2RiX2RhdGFkaXIKICB3aXRoX3JlbG9jYXRl ZF9zb3VyY2VzCi0gd2l0aF9weXRob25kaXIKICt3aXRoX3JwbQogIGVuYWJsZV90YXJnZXRzCiAg ZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RiY2xpCi1AQCAtOTg4LDYgKzk5Miw5IEBAIExE RkxBR1MKK0BAIC05ODYsNiArOTkwLDkgQEAgTERGTEFHUwogIExJQlMKICBDUFBGTEFHUwogIENQ UApAQCAtNzQ3LDE2ICs3NDcsMTYgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2NvbmZpZ3VyZQogIFlB Q0MKICBZRkxBR1MKICBYTUtNRicKLUBAIC0xNjUzLDYgKzE2NjAsOCBAQCBPcHRpb25hbCBQYWNr YWdlczoKK0BAIC0xNjQ5LDYgKzE2NTYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtEQVRBRElSL2dkYl0KLSAgIC0td2l0aC1weXRob25kaXIgICAg ICAgIGluc3RhbGwgUHl0aG9uIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBbREFUQURJUi9nZGIvcHl0aG9uXQorICAgLS13aXRoLXJlbG9jYXRlZC1z b3VyY2VzPVBBVEgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVs b2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKICsgIC0td2l0aC1ycG0gICAgICAgICAg ICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQogICAgLS13aXRo LWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAog ICAgLS13aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFk IG9mIHRoZSB0ZXJtY2FwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAt MTY4OCw2ICsxNjk3LDkgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6 CitAQCAtMTY4NCw2ICsxNjkzLDkgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJp YWJsZXM6CiAgICBDUFBGTEFHUyAgICBDL0MrKy9PYmplY3RpdmUgQyBwcmVwcm9jZXNzb3IgZmxh Z3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmCiAgICAgICAgICAgICAgICB5b3UgaGF2ZSBoZWFk ZXJzIGluIGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KICAgIENQUCAgICAg ICAgIEMgcHJlcHJvY2Vzc29yCkBAIC03NjYsNyArNzY2LDcgQEAgSW5kZXg6IGdkYi03LjIvZ2Ri L2NvbmZpZ3VyZQogICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDIENvbXBpbGVyJyBp bXBsZW1lbnRhdGlvbiB0byB1c2UuIERlZmF1bHRzIHRvCiAgICAgICAgICAgICAgICB0aGUgZmly c3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6IGBiaXNvbiAteScsIGBieWFjYycsIGB5YWNjJy4KICAg IFlGTEFHUyAgICAgIFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIGJ5 IGRlZmF1bHQgdG8gJFlBQ0MuCi1AQCAtNzk1MSw2ICs3OTYzLDQ4NSBAQCBfQUNFT0YKK0BAIC03 ODgxLDYgKzc4OTMsNDg2IEBAIF9BQ0VPRgogIGZpCiAgCiAgCkBAIC0xMjQ5LDE2ICsxMjQ5LDE3 IEBAIEluZGV4OiBnZGItNy4yL2dkYi9jb25maWd1cmUKICsgICAgZmkKICsgIGZpCiArZmkKKysK ICAKICAKLSAKLUluZGV4OiBnZGItNy4yL2dkYi9jb25maWd1cmUuYWMKKyBzdWJkaXJzPSIkc3Vi ZGlycyBkb2MgdGVzdHN1aXRlIgorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZp Z3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvY29uZmlndXJlLmFjCTIw MTAtMTAtMDYgMjI6Mzk6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvY29uZmln dXJlLmFjCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTUyLDYgKzE1 MiwxOTggQEAgZWxzZQotIGZpCi0gQUNfU1VCU1QocHl0aG9uZGlyKQorLS0tIGdkYi03LjIuNTAu MjAxMDExMTYub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMTEtMDUgMDI6NTA6MTguMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmlndXJlLmFjCTIwMTAt MTEtMTYgMDg6MTU6MTAuMDAwMDAwMDAwICswMTAwCitAQCAtMTA4LDYgKzEwOCwxOTkgQEAgQVNf SEVMUF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcworICAgICAgICAgICAgICAgW1Jl bG9jYXRlZCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gXSkKKyBdKQogIAogKyMgSW50ZWdy YXRpb24gd2l0aCBycG0gbGlicmFyeSB0byBzdXBwb3J0IG1pc3NpbmcgZGVidWdpbmZvIHN1Z2dl c3Rpb25zLgogKyMgLS13aXRob3V0LXJwbTogRGlzYWJsZSBhbnkgcnBtIHN1cHBvcnQuCkBAIC0x NDUyLDEzICsxNDUzLDE0IEBAIEluZGV4OiBnZGItNy4yL2dkYi9jb25maWd1cmUuYWMKICsgICAg ZmkKICsgIGZpCiArZmkKLSAKKysgCiAgQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkK ICAKLUluZGV4OiBnZGItNy4yL2dkYi9hY2luY2x1ZGUubTQKKyAjIENoZWNrIHdoZXRoZXIgdG8g c3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi9hY2luY2x1ZGUubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9y aWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTA1LTI3IDA1OjQwOjQ1LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIw MTAtMDUtMjcgMDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBA QCAtMSwzICsxLDUgQEAKICsjIHNlcmlhbCAxCiArCkBAIC0xNDc0LDExICsxNDc2LDExIEBAIElu ZGV4OiBnZGItNy4yL2dkYi9hY2luY2x1ZGUubTQKICAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERD CiAgIyBAbWFpbmRleCBQUk9HX0NDX1NUREMKICAjIEBvdmluZGV4IENDCi1JbmRleDogZ2RiLTcu Mi9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29yZWxvdy5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMC0xMC0wNiAy MjozOTozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9jb3JlbG93LmMJMjAxMC0x MC0wNiAyMjozOTo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMzEsNyArMzMxLDcgQEAgYnVpbGRf aWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9y aWcvZ2RiL2NvcmVsb3cuYwkyMDEwLTExLTE2IDA4OjA0OjE4LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvcmVsb3cuYwkyMDEwLTExLTE2IDA4OjE0OjI2LjAw MDAwMDAwMCArMDEwMAorQEAgLTMxNyw3ICszMTcsNyBAQCBidWlsZF9pZF9sb2NhdGVfZXhlYyAo aW50IGZyb21fdHR5KQogICAgICAgICAgc3ltZmlsZV9vYmpmaWxlLT5mbGFncyB8PSBPQkpGX0JV SUxEX0lEX0NPUkVfTE9BREVEOwogICAgICB9CiAgICBlbHNlCgpkaWZmIC0tZ2l0IGEvZ2RiLTYu Ni1iejIyOTUxNy1nY29yZS13aXRob3V0LXRlcm1pbmFsLnBhdGNoIGIvZ2RiLTYuNi1iejIyOTUx Ny1nY29yZS13aXRob3V0LXRlcm1pbmFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA2ODZiYjlkLi4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnoyMjk1MTctZ2NvcmUtd2l0aG91 dC10ZXJtaW5hbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0yMDA3LTA0 LTIyICBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2Ri X2djb3JlLnNoOiBSZWRpcmVjdCBHREIgZnJvbSBgPC9kZXYvbnVsbCcuCi0KLTIwMDctMDQtMjIg IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFz ZS9nY29yZWJnLmV4cCwgZ2RiLmJhc2UvZ2NvcmViZy5jOiBOZXcgZmlsZXMuCi0KLQotLS0tIGdk Yi02LjYtb3JpZy9nZGIvZ2RiX2djb3JlLnNoCTIwMDUtMTItMTcgMTc6MzM6NTkuMDAwMDAwMDAw IC0wNTAwCi0rKysgZ2RiLTYuNi9nZGIvZ2RiX2djb3JlLnNoCTIwMDctMDQtMjIgMDU6NDI6NTAu MDAwMDAwMDAwIC0wNDAwCi1AQCAtNzEsNyArNzEsOSBAQAotIHF1aXQKLSBFT0YKLSAKLS0JZ2Ri IC14ICR0bXBmaWxlIC1iYXRjaAotKwkjIGA8L2Rldi9udWxsJyB0byBhdm9pZCB0b3VjaGluZyBp bnRlcmFjdGl2ZSB0ZXJtaW5hbCBpZiBpdCBpcwotKwkjIGF2YWlsYWJsZSBidXQgbm90IGFjY2Vz c2libGUgKFNJR1RUSU4gcmlzaykKLSsJZ2RiIC14ICR0bXBmaWxlIC1iYXRjaCA8L2Rldi9udWxs Ci0gCi0gCWlmIFsgLXIgJG5hbWUuJHBpZCBdIDsgdGhlbiAKLSAJICAgIHJjPTAKLS0tLSAvZGV2 L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nY29yZWJnLmMJMjUgRmViIDIwMDcgMTI6MjE6MjAgLTAwMDAKLUBAIC0wLDAgKzEsNDMg QEAKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1 ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c2lnbmFsLmg+ Ci0rCi0raW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBwaWRfdCBwaWQg PSAwOwotKyAgcGlkX3QgcHBpZDsKLSsgIGNoYXIgYnVmWzI1Nl07Ci0rCi0rICBpZiAoYXJnYyAh PSA0KQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAiU3ludGF4OiAlcyB7c3RhbmRh cmR8ZGV0YWNoZWR9IDxnY29yZSBjb21tYW5kPiA8Y29yZSBvdXRwdXQgZmlsZT5cbiIsCi0rCSAg ICAgICBhcmd2WzBdKTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAgfQotKwotKyAgcGlkID0gZm9y ayAoKTsKLSsKLSsgIHN3aXRjaCAocGlkKQotKyAgICB7Ci0rICAgICAgY2FzZSAwOgotKyAgICAg ICAgaWYgKHN0cmNtcCAoYXJndlsxXSwgImRldGFjaGVkIikgPT0gMCkKLSsJICBzZXRwZ3JwICgp OwotKwlwcGlkID0gZ2V0cHBpZCAoKTsKLSsJc3ByaW50ZiAoYnVmLCAic2ggJXMgLW8gJXMgJWQi LCBhcmd2WzJdLCBhcmd2WzNdLCAoaW50KSBwcGlkKTsKLSsJc3lzdGVtIChidWYpOwotKwlraWxs IChwcGlkLCBTSUdURVJNKTsKLSsJYnJlYWs7Ci0rCi0rICAgICAgY2FzZSAtMToKLSsJcGVycm9y ICgiZm9yayBlcnJcbiIpOwotKwlleGl0ICgxKTsKLSsJYnJlYWs7Ci0rCi0rICAgICAgZGVmYXVs dDoKLSsJc2xlZXAgKDYwKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIC9kZXYv bnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2djb3JlYmcuZXhwCTI1IEZlYiAyMDA3IDEyOjIxOjIwIC0wMDAwCi1AQCAtMCwwICsxLDEx MyBAQAotKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFBs ZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBm aWxlIHRvOgotKyMgYnVnLWdkYkBwcmVwLmFpLm1pdC5lZHUKLSsKLSsjIFRoaXMgZmlsZSB3YXMg d3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0r IyBUaGlzIGlzIGEgdGVzdCBmb3IgYGdkYl9nY29yZS5zaCcgZnVuY3Rpb25hbGl0eS4KLSsjIEl0 IGFsc28gdGVzdHMgYSByZWdyZXNzaW9uIHdpdGggYGdkYl9nY29yZS5zaCcgYmVpbmcgcnVuIHdp dGhvdXQgaXRzCi0rIyBhY2Nlc3NpYmxlIHRlcm1pbmFsLgotKwotK2lmICFbaW5mbyBleGlzdHMg R0NPUkVdIHsKLSsgICAgc2V0IEdDT1JFICIke3NyY2Rpcn0vLi4vZ2RiX2djb3JlLnNoIgotK30K LSt2ZXJib3NlICJ1c2luZyBHQ09SRSA9ICRHQ09SRSIgMgotKwotK3NldCB0ZXN0ZmlsZSAiZ2Nv cmViZyIKLStzZXQgc3JjZmlsZSAgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rc2V0IGNvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0udGVzdAotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAi IiB9IHsKLSsgICAgIHVudGVzdGVkIGdjb3JlYmcuZXhwCi0rICAgICByZXR1cm4gLTEKLSt9Ci0r Ci0rIyBDbGVhbnVwLgotKwotK3Byb2MgY29yZV9jbGVhbiB7fSB7Ci0rICAgIGdsb2JhbCBjb3Jl ZmlsZQotKwotKyAgICBmb3JlYWNoIGZpbGUgW2dsb2IgLW5vY29tcGxhaW4gW2pvaW4gW2xpc3Qg JGNvcmVmaWxlICpdICIiXV0gewotKwl2ZXJib3NlICJEZWxldGUgZmlsZSAkZmlsZSIgMQotKwly ZW1vdGVfZmlsZSB0YXJnZXQgZGVsZXRlICRmaWxlCi0rICAgIH0KLSt9Ci0rY29yZV9jbGVhbgot K3JlbW90ZV9maWxlIHRhcmdldCBkZWxldGUgIi4vZ2RiIgotKwotKyMgR2VuZXJhdGUgdGhlIGNv cmUgZmlsZS4KLSsKLSsjIFByb3ZpZGUgYC4vZ2RiJyBmb3IgYGdkYl9nY29yZS5zaCcgcnVubmlu ZyBpdCBhcyBhIGJhcmUgYGdkYicgY29tbWFuZC4KLSsjIFNldHVwIGFsc28gYCRQQVRIJyBhcHBy b3ByaWF0ZWx5LgotKyMgSWYgR0RCIHdhcyBub3QgZm91bmQgbGV0IGBnZGJfZ2NvcmUuc2gnIHRv IGZpbmQgdGhlIHN5c3RlbSBHREIgYnkgYCRQQVRIJy4KLStpZiB7JEdEQiAhPSAiZ2RiIn0gewot KyAgICBmaWxlIGxpbmsgLi9nZGIgJEdEQgotK30KLStnbG9iYWwgZW52Ci0rc2V0IG9sZHBhdGgg JGVudihQQVRIKQotK3NldCBlbnYoUEFUSCkgW2pvaW4gW2xpc3QgLiAkZW52KFBBVEgpXSAiOiJd Ci0rdmVyYm9zZSAiUEFUSCA9ICRlbnYoUEFUSCkiIDIKLSsKLSsjIFRlc3QgZmlsZSBib2R5Lgot KyMgJGRldGFjaGVkID09ICJzdGFuZGFyZCIgfHwgJGRldGFjaGVkID09ICJkZXRhY2hlZCIKLSsK LStwcm9jIHRlc3RfYm9keSB7IGRldGFjaGVkIH0gewotKyAgICBnbG9iYWwgYmluZmlsZQotKyAg ICBnbG9iYWwgR0NPUkUKLSsgICAgZ2xvYmFsIGNvcmVmaWxlCi0rCi0rICAgIHNldCByZXMgW3Jl bW90ZV9zcGF3biB0YXJnZXQgIiRiaW5maWxlICRkZXRhY2hlZCAkR0NPUkUgJGNvcmVmaWxlIl0K LSsgICAgaWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotKwlmYWlsICJTcGF3bmluZyAk ZGV0YWNoZWQgZ2NvcmUiCi0rCXJldHVybiAxCi0rICAgIH0KLSsgICAgcGFzcyAiU3Bhd25pbmcg JGRldGFjaGVkIGdjb3JlIgotKyAgICByZW1vdGVfZXhwZWN0IHRhcmdldCAyMCB7Ci0rCXRpbWVv dXQgewotKwkgICAgZmFpbCAiU3Bhd25lZCAkZGV0YWNoZWQgZ2NvcmUgZmluaXNoZWQiCi0rCSAg ICByZW1vdGVfZXhlYyB0YXJnZXQgImtpbGwgLTkgLVtleHBfcGlkIC1pICRyZXNdIgotKwkgICAg cmV0dXJuIDEKLSsJfQotKwllb2YgewotKwkgICAgcGFzcyAiU3Bhd25lZCAkZGV0YWNoZWQgZ2Nv cmUgZmluaXNoZWQiCi0rCSAgICByZW1vdGVfd2FpdCB0YXJnZXQgMjAKLSsJfQotKyAgICB9Ci0r Ci0rICAgIGlmIHsxID09IFtsbGVuZ3RoIFtnbG9iIC1ub2NvbXBsYWluIFtqb2luIFtsaXN0ICRj b3JlZmlsZSAqXSAiIl1dXX0gewotKwlwYXNzICJDb3JlIGZpbGUgZ2VuZXJhdGVkIGJ5ICRkZXRh Y2hlZCBnY29yZSIKLSsgICAgfSBlbHNlIHsKLSsJZmFpbCAiQ29yZSBmaWxlIGdlbmVyYXRlZCBi eSAkZGV0YWNoZWQgZ2NvcmUiCi0rICAgIH0KLSsgICAgY29yZV9jbGVhbgotK30KLSsKLSsjIEZp cnN0IGEgZ2VuZXJhbCBgZ2RiX2djb3JlLnNoJyBzcGF3biB3aXRoIGl0cyBjb250cm9sbGluZyB0 ZXJtaW5hbCBhdmFpbGFibGUuCi0rCi0rdGVzdF9ib2R5IHN0YW5kYXJkCi0rCi0rIyBBbmQgbm93 IGBnZGJfZ2NvcmUuc2gnIHNwYXduIHdpdGhvdXQgaXRzIGNvbnRyb2xsaW5nIHRlcm1pbmFsIGF2 YWlsYWJsZS4KLSsjIEl0IGlzIHNwYXduZWQgdGhyb3VnaCBgZ2NvcmViZy5jJyB1c2luZyBzZXRw Z3JwICgpLgotKwotK3Rlc3RfYm9keSBkZXRhY2hlZAotKwotKwotKyMgQ2xlYW51cC4KLSsKLStz ZXQgZW52KFBBVEgpICRvbGRwYXRoCi0rcmVtb3RlX2ZpbGUgdGFyZ2V0IGRlbGV0ZSAiLi9nZGIi CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9p bnRzMi5wYXRjaCBiL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50 czIucGF0Y2gKaW5kZXggMGViOGE0NC4uZjE5NzEyZSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hl ZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAorKysgYi9nZGItNi42LXNj aGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoCkBAIC0yMSwxMCArMjEs MTAgQEAKIAogCVBvcnQgdG8gR0RCLTYuOHByZS4KIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2luZmVyaW9yLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZlcmlv ci5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9pbmZlcmlv ci5oCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvaW5mZXJpb3IuaAkyMDEwLTA3LTEyIDEwOjA0OjI1LjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDEwLTA2LTI0 IDE3OjE3OjMwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2lu ZmVyaW9yLmgJMjAxMC0xMS0xNiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOTgsNyAr MTk4LDE1IEBAIGV4dGVybiB2b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZvaWQpOwogIC8qIFRoZSBg cmVzdW1lJyByb3V0aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBzcGVjaWFsIGNpcmN1bXN0 YW5jZXMuCiAgICAgTm9ybWFsbHksIHVzZSBgcHJvY2VlZCcsIHdoaWNoIGhhbmRsZXMgYSBsb3Qg b2YgYm9va2tlZXBpbmcuICAqLwpAQCAtNDIsMTEgKzQyLDExIEBAIEluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9pbmZlcmlvci5oCiAgCiAgLyogRnJvbSBtaXNjIGZpbGVzICovCiAgCi1J bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3 MTEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwkyMDEwLTA3LTEyIDEwOjA1OjI2 LjAwMDAwMDAwMCArMDIwMAotQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBmb2xsb3dfZm9y ayAodm9pZCk7CistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9pbmZydW4uYwkyMDEw LTExLTE2IDA3OjUzOjU5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2luZnJ1bi5jCTIwMTAtMTEtMTYgMDc6NTU6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtNzQs NyArNzQsNyBAQCBzdGF0aWMgaW50IGZvbGxvd19mb3JrICh2b2lkKTsKICBzdGF0aWMgdm9pZCBz ZXRfc2NoZWRsb2NrX2Z1bmMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKICAJCQkJc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKmMpOwogIApAQCAtNTUsNyArNTUsNyBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKICAKICBzdGF0aWMgaW50IGN1cnJlbnRseV9zdGVw cGluZ19vcl9uZXh0aW5nX2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAogIAkJCQkJ CSAgIHZvaWQgKmRhdGEpOwotQEAgLTE1NDksNyArMTU0OSw3IEBAIG1heWJlX3NvZnR3YXJlX3Np bmdsZXN0ZXAgKHN0cnVjdCBnZGJhcmMKK0BAIC0xNTU3LDcgKzE1NTcsNyBAQCBtYXliZV9zb2Z0 d2FyZV9zaW5nbGVzdGVwIChzdHJ1Y3QgZ2RiYXJjCiAgICAgU1RFUCBub256ZXJvIGlmIHdlIHNo b3VsZCBzdGVwICh6ZXJvIHRvIGNvbnRpbnVlIGluc3RlYWQpLgogICAgIFNJRyBpcyB0aGUgc2ln bmFsIHRvIGdpdmUgdGhlIGluZmVyaW9yICh6ZXJvIGZvciBub25lKS4gICovCiAgdm9pZApAQCAt NjQsOCArNjQsOCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKICB7 CiAgICBpbnQgc2hvdWxkX3Jlc3VtZSA9IDE7CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NsZWFu dXBzID0gbWFrZV9jbGVhbnVwIChyZXN1bWVfY2xlYW51cHMsIDApOwotQEAgLTE1NjIsMTAgKzE1 NjIsMTIgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZwotICAgUVVJ VDsKK0BAIC0xNTg5LDEwICsxNTg5LDEyIEBAIHJlc3VtZSAoaW50IHN0ZXAsIGVudW0gdGFyZ2V0 X3NpZ25hbCBzaWcKKyAgICAgfQogIAogICAgaWYgKGRlYnVnX2luZnJ1bikKIC0gICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtODEsNyArODEsNyBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKICAKICAgIC8qIE5vcm1hbGx5LCBieSB0aGUgdGlt ZSB3ZSByZWFjaCBgcmVzdW1lJywgdGhlIGJyZWFrcG9pbnRzIGFyZSBlaXRoZXIKICAgICAgIHJl bW92ZWQgb3IgaW5zZXJ0ZWQsIGFzIGFwcHJvcHJpYXRlLiAgVGhlIGV4Y2VwdGlvbiBpcyBpZiB3 ZSdyZSBzaXR0aW5nCi1AQCAtMTY3OCw5ICsxNjgwLDEwIEBAIGEgY29tbWFuZCBsaWtlIGByZXR1 cm4nIG9yIGBqdW1wJyB0byBjb24KK0BAIC0xNzEwLDkgKzE3MTIsMTAgQEAgYSBjb21tYW5kIGxp a2UgYHJldHVybicgb3IgYGp1bXAnIHRvIGNvbgogIAkgICAgIGluZGl2aWR1YWxseS4gICovCiAg CSAgcmVzdW1lX3B0aWQgPSBpbmZlcmlvcl9wdGlkOwogIAl9CkBAIC05NCw3ICs5NCw3IEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwogIAl7CiAgCSAgLyogVXNlci1z ZXR0YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gKi8K ICAJICByZXN1bWVfcHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtMTg4OSw3ICsxODkyLDcgQEAg cHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE5MjEsNyArMTky NCw3IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdHA7CiAgICBDT1JFX0FERFIgcGM7CiAgICBzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqYXNwYWNlOwpAQCAtMTAzLDcgKzEwMyw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9pbmZydW4uYwogIAogICAgLyogSWYgd2UncmUgc3RvcHBlZCBhdCBhIGZvcmsvdmZv cmssIGZvbGxvdyB0aGUgYnJhbmNoIHNldCBieSB0aGUKICAgICAgICJzZXQgZm9sbG93LWZvcmst bW9kZSIgY29tbWFuZDsgb3RoZXJ3aXNlLCB3ZSdsbCBqdXN0IHByb2NlZWQKLUBAIC0xOTI0LDEz ICsxOTI3LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BA IC0xOTU2LDEzICsxOTU5LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdl dF9zaWcKICAJICAgYWN0dWFsbHkgYmUgZXhlY3V0aW5nIHRoZSBicmVha3BvaW50IGluc24gYW55 d2F5LgogIAkgICBXZSdsbCBiZSAodW4tKWV4ZWN1dGluZyB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rp b24uICAqLwogIApAQCAtMTE5LDcgKzExOSw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9pbmZydW4uYwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKLUBAIC0xOTcxLDEzICsxOTc0 LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0yMDAz LDEzICsyMDA2LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcK ICAJIGlzIHJlcXVpcmVkIGl0IHJldHVybnMgVFJVRSBhbmQgc2V0cyB0aGUgY3VycmVudCB0aHJl YWQgdG8KICAJIHRoZSBvbGQgdGhyZWFkLiAqLwogICAgICAgIGlmIChwcmVwYXJlX3RvX3Byb2Nl ZWQgKHN0ZXApKQpAQCAtMTM1LDcgKzEzNSw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9pbmZydW4uYwogICAgICB7CiAgICAgICAgdHAtPnRyYXBfZXhwZWN0ZWQgPSAxOwogICAg ICAgIC8qIElmIGRpc3BsYWNlZCBzdGVwcGluZyBpcyBlbmFibGVkLCB3ZSBjYW4gc3RlcCBvdmVy IHRoZQotQEAgLTIwNjQsOCArMjA2NywxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51 bSB0YXJnZXRfc2lnCitAQCAtMjA5Niw4ICsyMDk5LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBh ZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIC8qIFJlc2V0IHRvIG5vcm1hbCBzdGF0ZS4gICovCiAg ICBpbml0X2luZndhaXRfc3RhdGUgKCk7CiAgCkBAIC0xNTAsNyArMTUwLDcgQEAgSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBXYWl0IGZvciBpdCB0byBz dG9wIChpZiBub3Qgc3RhbmRhbG9uZSkKICAgICAgIGFuZCBpbiBhbnkgY2FzZSBkZWNvZGUgd2h5 IGl0IHN0b3BwZWQsIGFuZCBhY3QgYWNjb3JkaW5nbHkuICAqLwotQEAgLTQ5MDMsMTMgKzQ5MTEs MTggQEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAorQEAgLTQ4NTks MTMgKzQ4NjcsMTggQEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAog IAogIC8qIElzIHRocmVhZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNpbmdsZS1zdGVwcGluZz8gICov CiAgCkBAIC0xNzQsMTEgKzE3NCwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv aW5mcnVuLmMKICB9CiAgCiAgLyogUmV0dXJucyB0cnVlIGlmIGFueSB0aHJlYWQgKmJ1dCogdGhl IG9uZSBwYXNzZWQgaW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgt bmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4 LW5hdC5jCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMJMjAxMC0wNy0xMiAxMDowNDoyNS4wMDAwMDAwMDAg KzAyMDAKLUBAIC0yODI3LDcgKzI4MjcsMTAgQEAgY291bnRfZXZlbnRzX2NhbGxiYWNrIChzdHJ1 Y3QgbHdwX2luZm8gKgorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvbGludXgtbmF0 LmMJMjAxMC0xMS0xNiAwNzo1Mzo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9saW51eC1uYXQuYwkyMDEwLTExLTE2IDA3OjU0OjM2LjAwMDAwMDAwMCArMDEw MAorQEAgLTI4ODMsNyArMjg4MywxMCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBs d3BfaW5mbyAqCiAgc3RhdGljIGludAogIHNlbGVjdF9zaW5nbGVzdGVwX2x3cF9jYWxsYmFjayAo c3RydWN0IGx3cF9pbmZvICpscCwgdm9pZCAqZGF0YSkKICB7CkBAIC0xOTAsMTAgKzE5MCwxMCBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMKICAgICAgcmV0dXJu IDE7CiAgICBlbHNlCiAgICAgIHJldHVybiAwOwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL2xpbnV4LW5hdC5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0 LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5h dC5oCTIwMTAtMDYtMTEgMTQ6MTA6MTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvbGludXgtbmF0LmgJMjAxMC0wNy0xMiAxMDowNDoyNS4wMDAwMDAwMDAgKzAy MDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDct MjcgMjI6NTE6MzcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv bGludXgtbmF0LmgJMjAxMC0xMS0xNiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKIEBAIC01NSw4 ICs1NSw4IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyogSWYgbm9uLXplcm8sIGEgcGVuZGluZyB3 YWl0IHN0YXR1cy4gICovCiAgICBpbnQgc3RhdHVzOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtc3Rl cC10aHJlYWQtZXhpdC5wYXRjaCBiL2dkYi02LjYtc3RlcC10aHJlYWQtZXhpdC5wYXRjaAppbmRl eCBjZTgwMjMyLi4yMmFmYmVhIDEwMDY0NAotLS0gYS9nZGItNi42LXN0ZXAtdGhyZWFkLWV4aXQu cGF0Y2gKKysrIGIvZ2RiLTYuNi1zdGVwLXRocmVhZC1leGl0LnBhdGNoCkBAIC0xLDggKzEsOCBA QAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44 LjUwLjIwMDkwODExLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMDktMDgtMTIgMDc6MjE6MjAuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvbGludXgtbmF0LmMJMjAw OS0wOC0xMiAwODoxMToyNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNjU2LDE2ICsxNjU2LDE4IEBA IHJlc3VtZV9zZXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAKKy0tLSBnZGItNy4yLjUw LjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDc6NTg6MTUuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMJMjAxMC0x MS0xNiAwNzo1OTowNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xODYzLDE2ICsxODYzLDE4IEBAIHJl c3VtZV9zZXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAKICAKICBzdGF0aWMgdm9pZAog IGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCkBAIC0yMSw5ICsyMSw5 IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9saW51eC1uYXQuYwogKwkJCShzdGVw ID09IFJFU1VNRV9TVEVQX05FRURFRAogKwkJCSA/ICJuZWVkZWQiIDogKHN0ZXAgPyAic3RlcCIg OiAicmVzdW1lIikpLAogIAkJCXRhcmdldF9waWRfdG9fc3RyIChwdGlkKSwKLSAJCQlzaWdubyA/ IHN0cnNpZ25hbCAoc2lnbm8pIDogIjAiLAotIAkJCXRhcmdldF9waWRfdG9fc3RyIChpbmZlcmlv cl9wdGlkKSk7Ci1AQCAtMjYyNSwxMCArMjYyNywzNCBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50 IChpbnQgbHdwaWQsIGludCBzCisgCQkJKHNpZ25vICE9IFRBUkdFVF9TSUdOQUxfMAorIAkJCSA/ IHN0cnNpZ25hbCAodGFyZ2V0X3NpZ25hbF90b19ob3N0IChzaWdubykpIDogIjAiKSwKK0BAIC0z MTcxLDEwICszMTczLDM0IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50 IHMKICAKICAgICAgICBpZiAobnVtX2x3cHMgKEdFVF9QSUQgKGxwLT5wdGlkKSkgPiAxKQogICAg ICAgICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy1iejQyNjYwMC1EV19UQUdfaW50ZXJmYWNlX3R5 cGUtZml4LnBhdGNoIGIvZ2RiLTYuNy1iejQyNjYwMC1EV19UQUdfaW50ZXJmYWNlX3R5cGUtZml4 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTk0ODZjLi4wMDAwMDAwCi0t LSBhL2dkYi02LjctYno0MjY2MDAtRFdfVEFHX2ludGVyZmFjZV90eXBlLWZpeC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLU9yaWdpbmFsIHBhdGNoIHdhczoKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA3LTEyL21zZzAwMzk3Lmh0bWwKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDctMTIvbXNnMDAxMjMuaHRtbAotCi1leHRl bmRlZCBmb3IgdGhlIFJIRUwgc2FmZXR5OgotCi0yMDA3LTEyLTI4ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGR3YXJmMnJlYWQuYyAoZml4dXBfcGFy dGlhbF9kaWUpOiBQcm92aWRlIGZ1bGwKLQlgRFdfVEFHX2NsYXNzX3R5cGUnLXR5cGUgYmFja2lu ZyBmb3IgYERXX1RBR19pbnRlcmZhY2VfdHlwZScsIGV2ZW4gZm9yCi0JbmFtZXNwYWNlcyB3aGlj aCBzaG91bGQgbm90IGFwcGx5IGZvciBKYXZhIGBEV19UQUdfaW50ZXJmYWNlX3R5cGUnLgotCi0y MDA4LTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0K LQlQb3J0IHRvIEdEQi02LjhwcmUuCi0KLUluZGV4OiAuL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLVJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2R3YXJmMnJlYWQuYyx2Ci1yZXRyaWV2 aW5nIHJldmlzaW9uIDEuMjQ1Ci1kaWZmIC11IC1wIC1yMS4yNDUgZHdhcmYycmVhZC5jCi0tLS0g Li9nZGIvZHdhcmYycmVhZC5jCTI2IERlYyAyMDA3IDEyOjM2OjE4IC0wMDAwCTEuMjQ1Ci0rKysg Li9nZGIvZHdhcmYycmVhZC5jCTI3IERlYyAyMDA3IDIzOjI1OjQ5IC0wMDAwCi1AQCAtNTg4Nyw3 ICs1ODg3LDggQEAgZml4dXBfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbgotIAot ICAgLyogU2V0IGRlZmF1bHQgbmFtZXMgZm9yIHNvbWUgdW5uYW1lZCBESUVzLiAgKi8KLSAgIGlm IChwYXJ0X2RpZS0+bmFtZSA9PSBOVUxMICYmIChwYXJ0X2RpZS0+dGFnID09IERXX1RBR19zdHJ1 Y3R1cmVfdHlwZQotLQkJCQkgfHwgcGFydF9kaWUtPnRhZyA9PSBEV19UQUdfY2xhc3NfdHlwZSkp Ci0rCQkJCSB8fCBwYXJ0X2RpZS0+dGFnID09IERXX1RBR19jbGFzc190eXBlCi0rCQkJCSB8fCBw YXJ0X2RpZS0+dGFnID09IERXX1RBR19pbnRlcmZhY2VfdHlwZSkpCi0gICAgIHBhcnRfZGllLT5u YW1lID0gIihhbm9ueW1vdXMgY2xhc3MpIjsKLSAKLSAgIGlmIChwYXJ0X2RpZS0+bmFtZSA9PSBO VUxMICYmIHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX25hbWVzcGFjZSkKLUBAIC01ODk1LDYgKzU4 OTYsNyBAQCBmaXh1cF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luCi0gCi0gICBp ZiAocGFydF9kaWUtPnRhZyA9PSBEV19UQUdfc3RydWN0dXJlX3R5cGUKLSAgICAgICB8fCBwYXJ0 X2RpZS0+dGFnID09IERXX1RBR19jbGFzc190eXBlCi0rICAgICAgfHwgcGFydF9kaWUtPnRhZyA9 PSBEV19UQUdfaW50ZXJmYWNlX3R5cGUKLSAgICAgICB8fCBwYXJ0X2RpZS0+dGFnID09IERXX1RB R191bmlvbl90eXBlKQotICAgICBndWVzc19zdHJ1Y3R1cmVfbmFtZSAocGFydF9kaWUsIGN1KTsK LSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaCBiL2dk Yi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDMyODM5ODQuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25zdGFu dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIw MTAwNzExLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEyIDIzOjA3OjM1LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3 LTEzIDAwOjEzOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTIyNTEsNiArMjI1MSw3IEBAIHNjYW5f cGFydGlhbF9zeW1ib2xzIChzdHJ1Y3QgcGFydGlhbF9kaWUKLSAJICAgICAgYWRkX3BhcnRpYWxf c3VicHJvZ3JhbSAocGRpLCBsb3dwYywgaGlnaHBjLCBuZWVkX3BjLCBjdSk7Ci0gCSAgICAgIGJy ZWFrOwotIAkgICAgY2FzZSBEV19UQUdfdmFyaWFibGU6Ci0rCSAgICBjYXNlIERXX1RBR19jb25z dGFudDoKLSAJICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6Ci0gCSAgICBjYXNlIERXX1RBR191bmlv bl90eXBlOgotIAkgICAgICBpZiAoIXBkaS0+aXNfZGVjbGFyYXRpb24pCi1AQCAtMjQ1Miw2ICsy NDUzLDcgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaQotIAl9Ci0g ICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFdfVEFHX3ZhcmlhYmxlOgotKyAgICBjYXNlIERXX1RB R19jb25zdGFudDoKLSAgICAgICBpZiAocGRpLT5pc19leHRlcm5hbCkKLSAJewotIAkgIC8qIEds b2JhbCBWYXJpYWJsZS4KLUBAIC0zMjg5LDYgKzMyOTEsNyBAQCBkaWVfbmVlZHNfbmFtZXNwYWNl IChzdHJ1Y3QgZGllX2luZm8gKmRpCi0gICAgICAgcmV0dXJuIDE7Ci0gCi0gICAgIGNhc2UgRFdf VEFHX3ZhcmlhYmxlOgotKyAgICBjYXNlIERXX1RBR19jb25zdGFudDoKLSAgICAgICAvKiBXZSBv bmx5IG5lZWQgdG8gcHJlZml4ICJnbG9iYWxseSIgdmlzaWJsZSB2YXJpYWJsZXMuICBUaGVzZSBp bmNsdWRlCi0gCSBhbnkgdmFyaWFibGUgbWFya2VkIHdpdGggRFdfQVRfZXh0ZXJuYWwgb3IgYW55 IHZhcmlhYmxlIHRoYXQKLSAJIGxpdmVzIGluIGEgbmFtZXNwYWNlLiAgW1ZhcmlhYmxlcyBpbiBh bm9ueW1vdXMgbmFtZXNwYWNlcwotQEAgLTQ2MzgsNyArNDY0MSw4IEBAIGR3YXJmMl9hZGRfZmll bGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAKLSAJICBmaXAtPm5vbl9wdWJsaWNfZmllbGRzID0g MTsKLSAJfQotICAgICB9Ci0tICBlbHNlIGlmIChkaWUtPnRhZyA9PSBEV19UQUdfbWVtYmVyIHx8 IGRpZS0+dGFnID09IERXX1RBR192YXJpYWJsZSkKLSsgIGVsc2UgaWYgKGRpZS0+dGFnID09IERX X1RBR19tZW1iZXIgfHwgZGllLT50YWcgPT0gRFdfVEFHX3ZhcmlhYmxlCi0rCSAgIHx8IGRpZS0+ dGFnID09IERXX1RBR19jb25zdGFudCkKLSAgICAgewotICAgICAgIC8qIEMrKyBzdGF0aWMgbWVt YmVyLiAgKi8KLSAKLUBAIC01MjUwLDcgKzUyNTQsOCBAQCByZWFkX3N0cnVjdHVyZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpCi0gICAgICAgd2hpbGUgKGNoaWxkX2RpZSAmJiBjaGlsZF9kaWUt PnRhZykKLSAJewotIAkgIGlmIChjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfbWVtYmVyCi0tCSAg ICAgIHx8IGNoaWxkX2RpZS0+dGFnID09IERXX1RBR192YXJpYWJsZSkKLSsJICAgICAgfHwgY2hp bGRfZGllLT50YWcgPT0gRFdfVEFHX3ZhcmlhYmxlCi0rCSAgICAgIHx8IGNoaWxkX2RpZS0+dGFn ID09IERXX1RBR19jb25zdGFudCkKLSAJICAgIHsKLSAJICAgICAgLyogTk9URTogY2FybHRvbi8y MDAyLTExLTA1OiBBIEMrKyBzdGF0aWMgZGF0YSBtZW1iZXIKLSAJCSBzaG91bGQgYmUgYSBEV19U QUdfbWVtYmVyIHRoYXQgaXMgYSBkZWNsYXJhdGlvbiwgYnV0Ci1AQCAtNTM5Niw2ICs1NDAxLDcg QEAgcHJvY2Vzc19zdHJ1Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbwotICAgICB7Ci0gICAg ICAgaWYgKGNoaWxkX2RpZS0+dGFnID09IERXX1RBR19tZW1iZXIKLSAJICB8fCBjaGlsZF9kaWUt PnRhZyA9PSBEV19UQUdfdmFyaWFibGUKLSsJICB8fCBjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdf Y29uc3RhbnQKLSAJICB8fCBjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfaW5oZXJpdGFuY2UpCi0g CXsKLSAJICAvKiBEbyBub3RoaW5nLiAgKi8KLUBAIC03MTA5LDYgKzcxMTUsNyBAQCBsb2FkX3Bh cnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqCi0gCSAgJiYgYWJicmV2LT50YWcgIT0g RFdfVEFHX3N1YnByb2dyYW0KLSAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbGV4aWNhbF9i bG9jawotIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR192YXJpYWJsZQotKwkgICYmIGFiYnJl di0+dGFnICE9IERXX1RBR19jb25zdGFudAotIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19u YW1lc3BhY2UKLSAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbW9kdWxlCi0gCSAgJiYgYWJi cmV2LT50YWcgIT0gRFdfVEFHX21lbWJlcikKLUBAIC03MjE3LDYgKzcyMjQsNyBAQCBsb2FkX3Bh cnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqCi0gICAgICAgaWYgKGxvYWRfYWxsCi0g CSAgfHwgYWJicmV2LT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0KLSAJICB8fCBhYmJyZXYtPnRh ZyA9PSBEV19UQUdfdmFyaWFibGUKLSsJICB8fCBhYmJyZXYtPnRhZyA9PSBEV19UQUdfY29uc3Rh bnQKLSAJICB8fCBhYmJyZXYtPnRhZyA9PSBEV19UQUdfbmFtZXNwYWNlCi0gCSAgfHwgcGFydF9k aWUtPmlzX2RlY2xhcmF0aW9uKQotIAl7Ci1AQCAtOTA1OSw2ICs5MDY3LDExIEBAIG5ld19zeW1i b2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QKLSAJICAvKiBEbyBub3QgYWRkIHRoZSBz eW1ib2wgdG8gYW55IGxpc3RzLiAgSXQgd2lsbCBiZSBmb3VuZCB2aWEKLSAJICAgICBCTE9DS19G VU5DVElPTiBmcm9tIHRoZSBibG9ja3ZlY3Rvci4gICovCi0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdf VEFHX2NvbnN0YW50OgotKwkgIFNZTUJPTF9UWVBFIChzeW0pID0gbWFrZV9jdl90eXBlICgxLAot KwkJCQkJICAgIFRZUEVfVk9MQVRJTEUgKFNZTUJPTF9UWVBFIChzeW0pKSwKLSsJCQkJCSAgICBT WU1CT0xfVFlQRSAoc3ltKSwgTlVMTCk7Ci0rCSAgLyogUEFTU1RIUlUgKi8KLSAJY2FzZSBEV19U QUdfdmFyaWFibGU6Ci0gCWNhc2UgRFdfVEFHX21lbWJlcjoKLSAJICAvKiBDb21waWxhdGlvbiB3 aXRoIG1pbmltYWwgZGVidWcgaW5mbyBtYXkgcmVzdWx0IGluIHZhcmlhYmxlcwoKZGlmZiAtLWdp dCBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoIGIvZ2RiLWFyY2hl ci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKaW5kZXggZTgxYThkZC4uNzQxZjY4NCAx MDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKKysr IGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKQEAgLTEsOCArMSw4 IEBACi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvYnJlYWtwb2ludC5jCitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0wNy0xMiAyMzowNzoz My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9icmVha3BvaW50 LmMJMjAxMC0wNy0xMyAwMDozODowNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMDE1OSw2ICsxMDE1 OSw1MCBAQCB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVhCistLS0gZ2Ri LTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0xMS0xNiAwNzo1Mzo1 OC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9icmVha3BvaW50 LmMJMjAxMC0xMS0xNiAwODoyODo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDI0OSw2ICsxMDI0 OSw1MCBAQCB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVhCiAgICB1cGRh dGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDEpOwogIH0KICAKQEAgLTUzLDIzICs1MywyMyBAQCBJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvYnJlYWtwb2ludC5jCiAgLyogUmVzZXQgYSBi cmVha3BvaW50IGdpdmVuIGl0J3Mgc3RydWN0IGJyZWFrcG9pbnQgKiBCSU5ULgogICAgIFRoZSB2 YWx1ZSB3ZSByZXR1cm4gZW5kcyB1cCBiZWluZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hf ZXJyb3JzLgogICAgIFVudXNlZCBpbiB0aGlzIGNhc2UuICAqLwotSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2JyZWFrcG9pbnQuaAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L2JyZWFrcG9pbnQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9n ZGIvYnJlYWtwb2ludC5oCTIwMTAtMDctMTIgMjM6MDc6MzMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMDctMTMgMDA6Mzc6MzQu MDAwMDAwMDAwICswMjAwCi1AQCAtMTA4OCw0ICsxMDg4LDcgQEAgZXh0ZXJuIHZvaWQgY2hlY2tf dHJhY2Vwb2ludF9jb21tYW5kIChjaAotIGV4dGVybiB2b2lkIHN0YXJ0X3JicmVha19icmVha3Bv aW50cyAodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgZW5kX3JicmVha19icmVha3BvaW50cyAodm9pZCk7 CistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMC0xMS0x NiAwNzo1Mzo1OC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9i cmVha3BvaW50LmgJMjAxMC0xMS0xNiAwODoyOTowNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMTI4 LDQgKzExMjgsNyBAQCBleHRlcm4gdm9pZCBlbmRfcmJyZWFrX2JyZWFrcG9pbnRzICh2b2lkCisg ZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGludCAo KikgKHN0cnVjdCBicmVha3BvaW50ICosCisgCQkJCQkJCSAgICAgdm9pZCAqKSwgdm9pZCAqKTsK ICAKICtleHRlcm4gdm9pZCBicmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwogICNlbmRp ZiAvKiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL29iamZpbGVzLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9vYmpmaWxl cy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9vYmpmaWxl cy5jCTIwMTAtMDUtMTYgMDI6NDY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvb2JqZmlsZXMuYwkyMDEwLTA3LTEzIDAwOjM3OjE5LjAwMDAwMDAwMCArMDIw MAotQEAgLTgzNCw2ICs4MzQsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEw LTEwLTE3IDE5OjQ1OjE2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL29iamZpbGVzLmMJMjAxMC0xMS0xNiAwODoyODo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC04 NDQsNiArODQ0LDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkK ICAJCQkJb2JqX3NlY3Rpb25fYWRkciAocykpOwogICAgICB9CiAgCgpkaWZmIC0tZ2l0IGEvZ2Ri LWFyY2hlci1waWUtYWRkb25zLnBhdGNoIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCmlu ZGV4IDRiY2M0YjQuLjY3Y2EzNGEgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy5w YXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1J bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMyAwMDoyNjoyNS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAx MC0wNy0xMyAwMDozNDowMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NzM3LDcgKzU3MzcsMTIgQEAg cmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorLS0tIGdkYi03LjIuNTAu MjAxMDExMTYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MjU6MjEuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZHdhcmYycmVhZC5jCTIwMTAt MTEtMTYgMDg6MjY6MzUuMDAwMDAwMDAwICswMTAwCitAQCAtNzMyNSw3ICs3MzI1LDEyIEBAIHJl YWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICB7CiAgICBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyOwogICAgc3RydWN0IHN5bWJvbCAqc3ltOwpAQCAtMTYsNyArMTYsNyBAQCBJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgCiAgICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKICAgIGlmIChhdHRyKQotQEAg LTU3NDYsNiArNTc1MSw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwKK0BAIC03MzM0LDYgKzczMzksNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9p bmZvICpkaWUsCiAgICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCiAgICAgICAg ICB7CiAgICAgICAgICAgIGJhc2UgPSBkZWNvZGVfbG9jZGVzYyAoRFdfQkxPQ0sgKGF0dHIpLCBj dSk7CkBAIC0yNCw3ICsyNCw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2Fy ZjJyZWFkLmMKICAgICAgICAgIH0KICAgICAgICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfc2VjdGlv bl9vZmZzZXQgKGF0dHIpKQogICAgICAgICAgewotQEAgLTU4MDcsMTIgKzU4MTMsMTUgQEAgcmVh ZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTczOTUsMTIgKzc0MDEs MTUgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIAkgICAgICBl bHNlCiAgCQlkd2FyZjJfY29tcGxleF9sb2NhdGlvbl9leHByX2NvbXBsYWludCAoKTsKICAKQEAg LTQyLDcgKzQyLDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQu YwogIAkgIGVsc2UKICAJICAgIFNFVF9GSUVMRF9QSFlTTkFNRSAoKmZpZWxkLCBTWU1CT0xfTElO S0FHRV9OQU1FIChzeW0pKTsKICAJICBGSUVMRF9UWVBFICgqZmllbGQpID0gU1lNQk9MX1RZUEUg KHN5bSk7Ci1AQCAtNTgyNiw3ICs1ODM1LDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBk aWVfaW5mbyAqZGllLAorQEAgLTc0MTQsNyArNzQyMyw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwKICAKICAgICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUsIHR5 cGUsIGN1KTsKICAgICAgICAvKiBTWU1CT0xfVkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVzZWQg YXMgYWxsIGl0cyBmaWVsZHMgYXJlIHN0YXRpYy4gICovCkBAIC01MSwxMCArNTEsMTAgQEAgSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgICAgIHNldF9k aWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7CiAgICAgIH0KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9nZGJ0eXBlcy5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidHlw ZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZ2RidHlw ZXMuaAkyMDEwLTA3LTEyIDIzOjA3OjM0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wNy0xMyAwMDozNDowMC4wMDAwMDAwMDAgKzAy MDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0xMS0x NiAwODowMTozMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9n ZGJ0eXBlcy5oCTIwMTAtMTEtMTYgMDg6MjY6MzUuMDAwMDAwMDAwICswMTAwCiBAQCAtMzk1LDYg KzM5NSw3IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgZW51bSBmaWVsZF9sb2Nf a2luZAogICAgewpAQCAtNjMsNyArNjMsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvZ2RidHlwZXMuaAogICAgICBGSUVMRF9MT0NfS0lORF9QSFlTQUREUiwJLyogcGh5c2FkZHIg Ki8KICAgICAgRklFTERfTE9DX0tJTkRfUEhZU05BTUUJLyogcGh5c25hbWUgKi8KICAgIH07Ci1A QCAtNTc3LDYgKzU3OCw3IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01NzYsNiArNTc3LDcgQEAg c3RydWN0IG1haW5fdHlwZQogIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRoZSB0YXJnZXQpIG9m IHRoZSBzdGF0aWMgZmllbGQuCiAgCSAgIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmds ZWQgbGFiZWwgb2YgdGhlIHN0YXRpYyBmaWVsZC4gKi8KICAKQEAgLTcxLDcgKzcxLDcgQEAgSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2dkYnR5cGVzLmgKICAJQ09SRV9BRERSIHBoeXNh ZGRyOwogIAljaGFyICpwaHlzbmFtZTsKICAgICAgICB9Ci1AQCAtMTA3Myw2ICsxMDc1LDcgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTExMDEsNiArMTEw Myw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5l IEZJRUxEX0xPQ19LSU5EKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jX2tpbmQpCiAgI2RlZmluZSBG SUVMRF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuYml0cG9zKQogICNkZWZpbmUgRklF TERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNuYW1lKQpAQCAt NzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZ2RidHlwZXMuaAog ICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBo eXNhZGRyKQogICNkZWZpbmUgU0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAog ICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwK LUBAIC0xMDgwLDYgKzEwODMsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBl IChzdHJ1CitAQCAtMTEwOCw2ICsxMTExLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9h dXhfdHlwZSAoc3RydQogICNkZWZpbmUgU0VUX0ZJRUxEX1BIWVNOQU1FKHRoaXNmbGQsIG5hbWUp CQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNO QU1FLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodGhpc2ZsZCkgPSAobmFtZSkpCkBA IC04Nyw3ICs4Nyw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9nZGJ0eXBlcy5o CiAgI2RlZmluZSBTRVRfRklFTERfUEhZU0FERFIodGhpc2ZsZCwgYWRkcikJCQlcCiAgICAoRklF TERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCiAgICAg RklFTERfU1RBVElDX1BIWVNBRERSICh0aGlzZmxkKSA9IChhZGRyKSkKLUBAIC0xMDkyLDYgKzEw OTYsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTEy MCw2ICsxMTI0LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQog ICNkZWZpbmUgVFlQRV9GSUVMRF9MT0NfS0lORCh0aGlzdHlwZSwgbikgRklFTERfTE9DX0tJTkQg KFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfQklUUE9TKHRo aXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVm aW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNf UEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKQEAgLTk1LDEwICs5NSwxMCBAQCBJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgVFlQRV9G SUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAo VFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklDSUFM KHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCiAg I2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQ RV9GSUVMRCh0aGlzdHlwZSxuKSkKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9qdi1s YW5nLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9qdi1sYW5nLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEwLTA1LTE3 IDE5OjE4OjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2p2 LWxhbmcuYwkyMDEwLTA3LTEzIDAwOjM0OjAwLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvanYtbGFuZy5jCTIwMTAtMDgtMDkgMjE6NDI6NDcuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvanYtbGFuZy5jCTIwMTAtMTEt MTYgMDg6MjY6MzUuMDAwMDAwMDAwICswMTAwCiBAQCAtNDA5LDcgKzQwOSw4IEBAIGphdmFfbGlu a19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAKICAgIGZpZWxkcyA9IE5VTEw7CkBA IC0xMTksMTEgKzExOSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvanYtbGFu Zy5jCiAgICAgICAgZWxzZQogIAlUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgPSA4ICogYm9m ZnNldDsKICAgICAgICBpZiAoYWNjZmxhZ3MgJiAweDgwMDApCS8qIEZJRUxEX1VOUkVTT0xWRURf RkxBRyAqLwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3ZhbHVlLmMKK0luZGV4OiBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi92YWx1ZS5jCTIwMTAtMDctMTIgMjM6MDc6MzMuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdmFsdWUuYwkyMDEwLTA3LTEzIDAw OjM1OjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTE5NDMsNyArMTk0Myw4IEBAIHZhbHVlX3N0YXRp Y19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9y aWcvZ2RiL3ZhbHVlLmMJMjAxMC0xMS0xNiAwNzo1NDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi92YWx1ZS5jCTIwMTAtMTEtMTYgMDg6MjY6MzUuMDAwMDAw MDAwICswMTAwCitAQCAtMTk2NSw3ICsxOTY1LDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgaQogICAgICB7CiAgICAgIGNhc2UgRklFTERfTE9DX0tJTkRfUEhZU0FE RFI6CiAgICAgICAgcmV0dmFsID0gdmFsdWVfYXRfbGF6eSAoVFlQRV9GSUVMRF9UWVBFICh0eXBl LCBmaWVsZG5vKSwKQEAgLTEzMywxMyArMTMzLDMgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL3ZhbHVlLmMKICAgICAgICBicmVhazsKICAgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9Q SFlTTkFNRToKICAgICAgewotQEAgLTE5NzcsNyArMTk3OCw4IEBAIHZhbHVlX3N0YXRpY19maWVs ZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKLSAgCX0KLSAgICAgICBpZiAocmV0dmFsICYmIFZBTFVF X0xWQUwgKHJldHZhbCkgPT0gbHZhbF9tZW1vcnkpCi0gCVNFVF9GSUVMRF9QSFlTQUREUiAoVFlQ RV9GSUVMRCAodHlwZSwgZmllbGRubyksCi0tCQkJICAgIHZhbHVlX2FkZHJlc3MgKHJldHZhbCkp OwotKwkJCSAgICB2YWx1ZV9hZGRyZXNzIChyZXR2YWwpCi0rCQkJICAgIC0gKFRZUEVfT0JKRklM RSAodHlwZSkgPT0gTlVMTCA/IDAgOiBBTk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBlKS0+c2Vj dGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkpKTsKLSAg ICAgICBicmVhazsKLSAgICAgfQotICAgICBkZWZhdWx0OgoKZGlmZiAtLWdpdCBhL2dkYi1hcmNo ZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IDQzZmRhOWUuLmVmMzY0ZDUgMTAwNjQ0 Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiwxMjcg KzIsMjMgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKIGh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJ VCBzbmFwc2hvdDoKLWNvbW1pdCA3NGZmZjU4ZDAwNzZmZTk3YzZjOTlkNjVmYTU4MTI2MzE1MjY2 NjQ2Citjb21taXQgOWRkMDYxZjEwZTdkM2E4YThjMmQ5ZmZhMjQ5MmEwOGVmYjkxZjI5MwogCiBi cmFuY2ggYGFyY2hlcicgLSB0aGUgbWVyZ2Ugb2YgYnJhbmNoZXM6CiBhcmNoZXItamFua3JhdG9j aHZpbC12bGEKIGFyY2hlci1qYW5rcmF0b2NodmlsLXdhdGNocG9pbnQzCiBhcmNoZXItamFua3Jh dG9jaHZpbC1pZnVuYwotYXJjaGVyLXBtdWxkb29uLW5leHQtb3Zlci10aHJvdzIKLWFyY2hlci10 cm9tZXktcHl0aG9uIChub3QgYSBtZXJnZSkKLWFyY2hlci10cm9tZXktb3B0aW9uYWwtcHN5bXRh YiAoY2hlcnJ5LXBpY2tlZCBmcm9tIHBvc3QtNy4yIG1hc3RlcikKKyNhcmNoZXItcG11bGRvb24t bmV4dC1vdmVyLXRocm93MgorI2FyY2hlci10cm9tZXktcHl0aG9uIChub3QgYSBtZXJnZSkKKyNh cmNoZXItdHJvbWV5LW9wdGlvbmFsLXBzeW10YWIgKGNoZXJyeS1waWNrZWQgZnJvbSBwb3N0LTcu MiBtYXN0ZXIpCiAjVE9ETzphcmNoZXItdHJvbWV5LXRocmVhZGVkLWR3YXJmCiAKIAotZGlmZiAt LWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggZjA3YmM4Yi4u MzcwM2RjYSAxMDA2NDQKLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL01ha2VmaWxl LmluCi1AQCAtMTY5LDYgKzE2OSwxMiBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZ U1RFTV9ST09UQAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9S T09UX0RFRklORUAKLSAKLSAjIERpZCB0aGUgdXNlciBnaXZlIHVzIGEgLS13aXRoLWdkYi1kYXRh ZGlyIG9wdGlvbj8KLStHREJfREFUQURJUl9QQVRIID0gQEdEQl9EQVRBRElSX1BBVEhACi0rCi0r IyBUaGUgYXJndW1lbnQgdG8gLS13aXRoLXB5dGhvbmRpci4gIElmIG5vdCBnaXZlbiwgdGhpcyBp cwotKyMgR0RCX0RBVEFESVJfUEFUSC9weXRob24uCi0rcHl0aG9uZGlyID0gQHB5dGhvbmRpckAK LSsKLSBHREJfREFUQURJUiA9IEBHREJfREFUQURJUkAKLSAKLSAjIEhlbHBlciBjb2RlIGZyb20g Z251bGliLgotQEAgLTI5NSwxMyArMzAxLDEzIEBAIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKLSAJ cHl0aG9uL3B5LWNtZC5jIFwKLSAJcHl0aG9uL3B5LWZyYW1lLmMgXAotIAlweXRob24vcHktZnVu Y3Rpb24uYyBcCi0rCXB5dGhvbi9weS1ob29rcy5jIFwKLSAJcHl0aG9uL3B5LWluZmVyaW9yLmMg XAotIAlweXRob24vcHktaW5mdGhyZWFkLmMgXAotIAlweXRob24vcHktbGF6eS1zdHJpbmcuYyBc Ci0gCXB5dGhvbi9weS1vYmpmaWxlLmMgXAotIAlweXRob24vcHktcGFyYW0uYyBcCi0gCXB5dGhv bi9weS1wcmV0dHlwcmludC5jIFwKLS0JcHl0aG9uL3B5LXByb2dzcGFjZS5jIFwKLSAJcHl0aG9u L3B5LXN5bWJvbC5jIFwKLSAJcHl0aG9uL3B5LXN5bXRhYi5jIFwKLSAJcHl0aG9uL3B5LXR5cGUu YyBcCi1AQCAtNzgwLDggKzc4Niw4IEBAIGNvbmZpZy9yczYwMDAvbm0tcnM2MDAwLmggdG9wLmgg YnNkLWt2bS5oIGdkYi1zdGFicy5oIHJlZ2dyb3Vwcy5oIFwKLSBhbm5vdGF0ZS5oIHNpbS1yZWdu by5oIGRpY3Rpb25hcnkuaCBkZnAuaCBtYWluLmggZnJhbWUtdW53aW5kLmgJXAotIHJlbW90ZS1m aWxlaW8uaCBpMzg2LWxpbnV4LXRkZXAuaCB2YXgtdGRlcC5oIG9iamMtbGFuZy5oIFwKLSBzZW50 aW5lbC1mcmFtZS5oIGJjYWNoZS5oIHN5bWZpbGUuaCB3aW5kb3dzLXRkZXAuaCBsaW51eC10ZGVw LmggXAotLWdkYl91c2xlZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5oIGFkYS1vcGVyYXRvci5pbmMg bWljcm9ibGF6ZS10ZGVwLmggXAotLXBzeW10YWIuaCBwc3ltcHJpdi5oCi0rZ2RiX3VzbGVlcC5o IGppdC5oIHB5dGhvbi9weXRob24uaCBweXRob24vcHl0aG9uLWludGVybmFsLmggXAotK3htbC1z eXNjYWxsLmggYWRhLW9wZXJhdG9yLmluYyBtaWNyb2JsYXplLXRkZXAuaAotIAotICMgSGVhZGVy IGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4g b2JqZGlyLgotIAotQEAgLTEzMDEsNiArMTMwNywxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29u ZmlnLmluIGNvbmZpZy5zdGF0dXMKLSAJICBDT05GSUdfTElOS1M9IFwKLSAJICAkKFNIRUxMKSBj b25maWcuc3RhdHVzCi0gCi0rLmdkYmluaXQ6ICQoc3JjZGlyKS9nZGJpbml0LmluIGNvbmZpZy5z dGF0dXMKLSsJQ09ORklHX0ZJTEVTPSIuZ2RiaW5pdDpnZGJpbml0LmluIiBcCi0rCSAgQ09ORklH X0NPTU1BTkRTPSBcCi0rCSAgQ09ORklHX0hFQURFUlM9IFwKLSsJICAkKFNIRUxMKSBjb25maWcu c3RhdHVzCi0rCi0gY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUu dGd0IGNvbmZpZ3VyZS5ob3N0Ci0gCSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCi0g Ci1AQCAtMjAyNCw2ICsyMDM2LDEwIEBAIHB5LWZ1bmN0aW9uLm86ICQoc3JjZGlyKS9weXRob24v cHktZnVuY3Rpb24uYwotIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5 dGhvbi9weS1mdW5jdGlvbi5jCi0gCSQoUE9TVENPTVBJTEUpCi0gCi0rcHktaG9va3MubzogJChz cmNkaXIpL3B5dGhvbi9weS1ob29rcy5jCi0rCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAk KHNyY2RpcikvcHl0aG9uL3B5LWhvb2tzLmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLSBweS1pbmZl cmlvci5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWluZmVyaW9yLmMKLSAJJChDT01QSUxFKSAkKFBZ VEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktaW5mZXJpb3IuYwotIAkkKFBPU1RDT01Q SUxFKQotQEAgLTIwNzIsNiArMjA4OCwzNiBAQCBweS12YWx1ZS5vOiAkKHNyY2RpcikvcHl0aG9u L3B5LXZhbHVlLmMKLSAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRo b24vcHktdmFsdWUuYwotIAkkKFBPU1RDT01QSUxFKQotIAotKyMgQWxsIHB5dGhvbiBsaWJyYXJ5 IGZpbGVzLCB3aXRoIHRoZSAicHl0aG9uL2xpYiIgc3RyaXBwZWQgb2ZmLgotKyMgTm90ZSB0aGF0 IHdlIHNob3VsZCBvbmx5IGluc3RhbGwgZmlsZXMgaW4gdGhlICJnZGIiIG1vZHVsZS4KLStQWV9G SUxFUyA9IGdkYi9GcmFtZUl0ZXJhdG9yLnB5IGdkYi9GcmFtZVdyYXBwZXIucHkgZ2RiL2NvbW1h bmQvYWxpYXMucHkgXAotKyAgICBnZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgZ2RiL2NvbW1hbmQv cmVxdWlyZS5weSBcCi0rICAgIGdkYi9jb21tYW5kL3BhaG9sZS5weSBnZGIvY29tbWFuZC91cHRv LnB5IGdkYi9jb21tYW5kL19faW5pdF9fLnB5IFwKLSsgICAgZ2RiL2NvbW1hbmQvaWdub3JlX2Vy cm9ycy5weSBnZGIvY29tbWFuZC9zYXZlX2JyZWFrcG9pbnRzLnB5IFwKLSsgICAgZ2RiL2Z1bmN0 aW9uL2NhbGxlcl9pcy5weSBnZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgXAotKyAgICBnZGIvZnVu Y3Rpb24vX19pbml0X18ucHkgZ2RiL2JhY2t0cmFjZS5weSBnZGIvX19pbml0X18ucHkKLSsKLSsj IEluc3RhbGwgdGhlIFB5dGhvbiBsaWJyYXJ5LiAgUHl0aG9uIGxpYnJhcnkgZmlsZXMgZ28gdW5k ZXIKLSsjICQocHl0aG9uZGlyKS4KLStpbnN0YWxsLXB5dGhvbjoKLSsJZmlsZXM9JyQoUFlfRklM RVMpJzsgZm9yIGZpbGUgaW4gJCRmaWxlczsgZG8gXAotKwkgIGRpcj1gZWNobyAiJCRmaWxlIiB8 IHNlZCAncywvW14vXSokJCwsJ2A7IFwKLSsJICAkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0 YWxsZGlycyAkKERFU1RESVIpJChweXRob25kaXIpLyQkZGlyOyBcCi0rCSAgJChJTlNUQUxMX0RB VEEpICQoc3JjZGlyKS9weXRob24vbGliLyQkZmlsZSAkKERFU1RESVIpJChweXRob25kaXIpLyQk ZmlsZTsgXAotKwlkb25lCi0rCi0rIyBPdGhlciBwYWNrYWdlcyBtYXkgaGF2ZSB0aGVpciBmaWxl cyBpbnN0YWxsZWQgaW4gJChweXRob25kaXIpLgotK3VuaW5zdGFsbC1weXRob246Ci0rCWZpbGVz PSckKFBZX0ZJTEVTKSc7IGZvciBmaWxlIGluICQkZmlsZXM7IGRvIFwKLSsJICBzbGFzaGRpcj1g ZWNobyAiLyQkZmlsZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdgOyBcCi0rCSAgcm0gLWYgJChERVNU RElSKSQocHl0aG9uZGlyKS8kJGZpbGU7IFwKLSsJICB3aGlsZSB0ZXN0ICJ4JCRmaWxlIiAhPSAi eCQkc2xhc2hkaXIiOyBkbyBcCi0rCSAgICBybWRpciAyPi9kZXYvbnVsbCAiJChERVNURElSKSQo cHl0aG9uZGlyKSQkc2xhc2hkaXIiOyBcCi0rCSAgICBmaWxlPSIkJHNsYXNoZGlyIjsgXAotKwkg ICAgc2xhc2hkaXI9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdgOyBcCi0rCSAg ZG9uZSBcCi0rCWRvbmUKLSsKLSAjCi0gIyBEZXBlbmRlbmN5IHRyYWNraW5nLiAgTW9zdCBvZiB0 aGlzIGlzIGNvbmRpdGlvbmFsIG9uIEdOVSBNYWtlIGJlaW5nCi0gIyBmb3VuZCBieSBjb25maWd1 cmU7IGlmIEdOVSBNYWtlIGlzIG5vdCBmb3VuZCwgd2UgZmFsbCBiYWNrIHRvIGEKIGRpZmYgLS1n aXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dkYi9hZGEtbGFuZy5jCi1pbmRleCAxZDRjMzhiLi5jYWZi ODhlIDEwMDY0NAoraW5kZXggZWE3MWVhMi4uY2NkN2IyOSAxMDA2NDQKIC0tLSBhL2dkYi9hZGEt bGFuZy5jCiArKysgYi9nZGIvYWRhLWxhbmcuYwotQEAgLTExMTE0LDYgKzExMTE0LDcgQEAgYWRh X29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBjLCBp bnQgKm9wbGVucCwKK0BAIC0xMTI1MCw2ICsxMTI1MCw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGgg KGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCiAgCiAg c3RhdGljIGludAogIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50IHBvcywKQEAgLTEzMCw3ICsyNiw3IEBAIGluZGV4IDFkNGMzOGIuLmNhZmI4OGUgMTAwNjQ0 CiAgCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZv aWQgKmRhdGEpLAogIAkJICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTExMTI4LDEyICsxMTEyOSwx NSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3Ms CitAQCAtMTEyNjQsMTIgKzExMjY1LDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJYnJlYWs7CiAgCiAgICAgICAgZGVmYXVsdDoKQEAg LTE0OSw3ICs0NSw3IEBAIGluZGV4IDFkNGMzOGIuLmNhZmI4OGUgMTAwNjQ0CiAgICAgIHJldHVy biAxOwogIAogZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYyBiL2dkYi9hbWQ2NC1s aW51eC1uYXQuYwotaW5kZXggYzBlZGMxMC4uMTdkMzZiNSAxMDA2NDQKK2luZGV4IDE2ZTk3YTIu LjNhNWQ1N2UgMTAwNjQ0CiAtLS0gYS9nZGIvYW1kNjQtbGludXgtbmF0LmMKICsrKyBiL2dkYi9h bWQ2NC1saW51eC1uYXQuYwogQEAgLTM3NSw2ICszNzUsMjAgQEAgYW1kNjRfbGludXhfZHJfdW5z ZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCkBAIC0xNzMsNyArNjksNyBAQCBpbmRleCBj MGVkYzEwLi4xN2QzNmI1IDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfbmV3 X3RocmVhZCAocHRpZF90IHB0aWQpCi1AQCAtNzk2LDYgKzgxMCw3IEBAIF9pbml0aWFsaXplX2Ft ZDY0X2xpbnV4X25hdCAodm9pZCkKK0BAIC04MDAsNiArODE0LDcgQEAgX2luaXRpYWxpemVfYW1k NjRfbGludXhfbmF0ICh2b2lkKQogICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRkciA9IGFtZDY0X2xp bnV4X2RyX3Jlc2V0X2FkZHI7CiAgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0gYW1kNjRfbGlu dXhfZHJfZ2V0X3N0YXR1czsKICAgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyA9IGFtZDY0X2xp bnV4X2RyX3Vuc2V0X3N0YXR1czsKQEAgLTI4OSw3ICsxODUsNyBAQCBpbmRleCAwMzQ4YmY0Li5m MDFkMGVlIDEwMDY0NAogIAogIC8qIFJldHVybiB0aGUgaW5uZXJtb3N0IHN0YWNrIGZyYW1lIGV4 ZWN1dGluZyBpbnNpZGUgb2YgQkxPQ0ssCiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBi L2dkYi9icmVha3BvaW50LmMKLWluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CitpbmRleCA2 YjU1MzEzLi5iMTUyZWRhIDEwMDY0NAogLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2Ri L2JyZWFrcG9pbnQuYwogQEAgLTYyLDYgKzYyLDcgQEAKQEAgLTMxMCw3ICsyMDYsNyBAQCBpbmRl eCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIHN0YXRpYyBpbnQgYnJlYWtwb2ludF9yZV9zZXRf b25lICh2b2lkICopOwogIAogIHN0YXRpYyB2b2lkIGNsZWFyX2NvbW1hbmQgKGNoYXIgKiwgaW50 KTsKLUBAIC0xMDYsNiArMTEwLDkgQEAgc3RhdGljIHZvaWQgYnJlYWtfY29tbWFuZF8xIChjaGFy ICosIGludCwgaW50KTsKK0BAIC0xMDQsNiArMTA4LDkgQEAgc3RhdGljIHZvaWQgYnJlYWtfY29t bWFuZF8xIChjaGFyICosIGludCwgaW50KTsKICAKICBzdGF0aWMgdm9pZCBtZW50aW9uIChzdHJ1 Y3QgYnJlYWtwb2ludCAqKTsKICAKQEAgLTMyMCw3ICsyMTYsNyBAQCBpbmRleCA2YTY4NjRjLi41 ZGYzMzZkIDEwMDY0NAogIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBnZGJ0ayBzb3VyY2Vz IGFuZCB0aHVzIGNhbiBub3QgYmUgbWFkZSBzdGF0aWMuICAqLwogIHN0cnVjdCBicmVha3BvaW50 ICpzZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCQkJICAg ICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSwKLUBAIC0yMzAsNiArMjM3LDEwIEBAIHN0YXRpYyB2 b2lkIGRpc2FibGVfdHJhY2VfY29tbWFuZCAoY2hhciAqLCBpbnQpOworQEAgLTIxOSw2ICsyMjYs MTAgQEAgc3RhdGljIHZvaWQgZGlzYWJsZV90cmFjZV9jb21tYW5kIChjaGFyICosIGludCk7CiAg CiAgc3RhdGljIHZvaWQgdHJhY2VfcGFzc19jb21tYW5kIChjaGFyICosIGludCk7CiAgCkBAIC0z MzEsMTYgKzIyNyw3IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgLyogQXNzdW1p bmcgd2UncmUgY3JlYXRpbmcgYSBzdGF0aWMgdHJhY2Vwb2ludCwgZG9lcyBTIGxvb2sgbGlrZSBh CiAgICAgc3RhdGljIHRyYWNlcG9pbnQgbWFya2VyIHNwZWMgKCItbSBNQVJLRVJfSUQiKT8gICov CiAgI2RlZmluZSBpc19tYXJrZXJfc3BlYyhzKQkJCQkJCVwKLUBAIC00MzAsNyArNDQxLDcgQEAg c3RhdGljIGludCB0cmFjZXBvaW50X2NvdW50OwotIAotIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqYnJlYWtwb2ludF9zZXRfY21kbGlzdDsKLSBzdGF0aWMgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmJyZWFrcG9pbnRfc2hvd19jbWRsaXN0OwotLXN0YXRpYyBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqc2F2ZV9jbWRsaXN0OwotK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzYXZl X2NtZGxpc3Q7Ci0gCi0gLyogUmV0dXJuIHdoZXRoZXIgYSBicmVha3BvaW50IGlzIGFuIGFjdGl2 ZSBlbmFibGVkIGJyZWFrcG9pbnQuICAqLwotIHN0YXRpYyBpbnQKLUBAIC0xMjUyLDYgKzEyNjMs MjIgQEAgd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpiKQor QEAgLTEyNDEsNiArMTI1MiwyMiBAQCB3YXRjaHBvaW50X2luX3RocmVhZF9zY29wZSAoc3RydWN0 IGJyZWFrcG9pbnQgKmIpCiAgCSAgICAgICYmICFpc19leGVjdXRpbmcgKGluZmVyaW9yX3B0aWQp KSk7CiAgfQogIApAQCAtMzYzLDcgKzI1MCw3IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAw NjQ0CiAgLyogQXNzdW1pbmcgdGhhdCBCIGlzIGEgd2F0Y2hwb2ludDoKICAgICAtIFJlcGFyc2Ug d2F0Y2hwb2ludCBleHByZXNzaW9uLCBpZiBSRVBBUlNFIGlzIG5vbi16ZXJvCiAgICAgLSBFdmFs dWF0ZSBleHByZXNzaW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIEItPnZhbAotQEAgLTEzMDcs NiArMTMzNCw4IEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgaW50 IHJlcGFyc2UpCitAQCAtMTI5Niw2ICsxMzIzLDggQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVj dCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKICAgIHN0cnVjdCBmcmFtZV9pZCBzYXZlZF9m cmFtZV9pZDsKICAgIGludCBmcmFtZV9zYXZlZDsKICAKQEAgLTM3Miw3ICsyNTksNyBAQCBpbmRl eCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgLyogSWYgdGhpcyBpcyBhIGxvY2FsIHdhdGNo cG9pbnQsIHdlIG9ubHkgd2FudCB0byBjaGVjayBpZiB0aGUKICAgICAgIHdhdGNocG9pbnQgZnJh bWUgaXMgaW4gc2NvcGUgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHRoZSB0aHJlYWQKICAgICAg IHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB3YXRjaHBvaW50LiAgKi8KLUBAIC0xNTEwLDEz ICsxNTM5LDcgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQg cmVwYXJzZSkKK0BAIC0xNTAwLDEzICsxNTI5LDcgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVj dCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKICBXYXRjaHBvaW50ICVkIGRlbGV0ZWQgYmVj YXVzZSB0aGUgcHJvZ3JhbSBoYXMgbGVmdCB0aGUgYmxvY2tcblwKICBpbiB3aGljaCBpdHMgZXhw cmVzc2lvbiBpcyB2YWxpZC5cbiIpLAogIAkJICAgICAgIGItPm51bWJlcik7CkBAIC0zODcsNjkg KzI3NCw3IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgICAgIH0KICAKICAgIC8q IFJlc3RvcmUgdGhlIHNlbGVjdGVkIGZyYW1lLiAgKi8KLUBAIC0yMjAxLDYgKzIyMjQsMzMgQEAg Y3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQgKGNvbnN0IGNoYXIgKmZ1bmNf bmFtZSkKLSAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotIH0KLSAKLSsvKiBJbnN0YWxsIGEg bWFzdGVyIGJyZWFrcG9pbnQgb24gdGhlIHVud2luZGVyJ3MgZGVidWcgaG9vay4gICovCi0rCi0r dm9pZAotK2NyZWF0ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCi0rewotKyAg c3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0rCi0rICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0r ICAgIHsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmRlYnVnX2hvb2s7Ci0rCi0rICAg ICAgZGVidWdfaG9vayA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0ICgiX1Vud2luZF9EZWJ1 Z0hvb2siLCBvYmpmaWxlKTsKLSsgICAgICBpZiAoZGVidWdfaG9vayAhPSBOVUxMKQotKwl7Ci0r CSAgc3RydWN0IGJyZWFrcG9pbnQgKmI7Ci0rCi0rCSAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVh a3BvaW50IChnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKSwKLSsJCQkJCSAgU1lNQk9MX1ZBTFVF X0FERFJFU1MgKGRlYnVnX2hvb2spLAotKwkJCQkJICBicF9leGNlcHRpb25fbWFzdGVyKTsKLSsJ ICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCJfVW53aW5kX0RlYnVnSG9vayIpOwotKwkgIGIt PmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwotKwl9Ci0rICAgIH0KLSsKLSsgIHVwZGF0ZV9n bG9iYWxfbG9jYXRpb25fbGlzdCAoMSk7Ci0rfQotKwotIHZvaWQKLSB1cGRhdGVfYnJlYWtwb2lu dHNfYWZ0ZXJfZXhlYyAodm9pZCkKLSB7Ci1AQCAtMjI0Miw3ICsyMjkyLDggQEAgdXBkYXRlX2Jy ZWFrcG9pbnRzX2FmdGVyX2V4ZWMgKHZvaWQpCi0gICAgIC8qIFRocmVhZCBldmVudCBicmVha3Bv aW50cyBtdXN0IGJlIHNldCBhbmV3IGFmdGVyIGFuIGV4ZWMoKSwKLSAgICAgICAgYXMgbXVzdCBv dmVybGF5IGV2ZW50IGFuZCBsb25nam1wIG1hc3RlciBicmVha3BvaW50cy4gICovCi0gICAgIGlm IChiLT50eXBlID09IGJwX3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZl bnQKLS0JfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX3N0 ZF90ZXJtaW5hdGVfbWFzdGVyKQotKwl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8 IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKLSsJfHwgYi0+dHlwZSA9PSBicF9l eGNlcHRpb25fbWFzdGVyKQotICAgICAgIHsKLSAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotIAlj b250aW51ZTsKLUBAIC0yMjU3LDcgKzIzMDgsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJf ZXhlYyAodm9pZCkKLSAKLSAgICAgLyogTG9uZ2ptcCBhbmQgbG9uZ2ptcC1yZXN1bWUgYnJlYWtw b2ludHMgYXJlIGFsc28gbWVhbmluZ2xlc3MKLSAgICAgICAgYWZ0ZXIgYW4gZXhlYy4gICovCi0t ICAgIGlmIChiLT50eXBlID09IGJwX2xvbmdqbXAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX3Jl c3VtZSkKLSsgICAgaWYgKGItPnR5cGUgPT0gYnBfbG9uZ2ptcCB8fCBiLT50eXBlID09IGJwX2xv bmdqbXBfcmVzdW1lCi0rCXx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uIHx8IGItPnR5cGUgPT0g YnBfZXhjZXB0aW9uX3Jlc3VtZSkKLSAgICAgICB7Ci0gCWRlbGV0ZV9icmVha3BvaW50IChiKTsK LSAJY29udGludWU7Ci1AQCAtMjMxOSw2ICsyMzcxLDcgQEAgdXBkYXRlX2JyZWFrcG9pbnRzX2Fm dGVyX2V4ZWMgKHZvaWQpCi0gICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNp Z2xvbmdqbXAiKTsKLSAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xv bmdqbXAiKTsKLSAgIGNyZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgic3Rk Ojp0ZXJtaW5hdGUoKSIpOwotKyAgY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAo KTsKLSB9Ci0gCi0gaW50Ci1AQCAtMjM0Niw2ICsyMzk5LDggQEAgZGV0YWNoX2JyZWFrcG9pbnRz IChpbnQgcGlkKQorQEAgLTIzNTQsNiArMjM3Nyw4IEBAIGRldGFjaF9icmVha3BvaW50cyAoaW50 IHBpZCkKICAgIC8qIERldGFjaCBzaW5nbGUtc3RlcCBicmVha3BvaW50cyBhcyB3ZWxsLiAgKi8K ICAgIGRldGFjaF9zaW5nbGVfc3RlcF9icmVha3BvaW50cyAoKTsKICAKQEAgLTQ1OCw3ICsyODMs NyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgZG9fY2xlYW51cHMgKG9sZF9j aGFpbik7CiAgICByZXR1cm4gdmFsOwogIH0KLUBAIC0yNDQ3LDkgKzI1MDIsMTEgQEAgcmVtb3Zl X2JyZWFrcG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBp cykKK0BAIC0yNDU1LDkgKzI0ODAsMTEgQEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3RydWN0IGJw X2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKICAJcmV0dXJuIHZhbDsKICAgICAg ICBiLT5pbnNlcnRlZCA9IChpcyA9PSBtYXJrX2luc2VydGVkKTsKICAgICAgfQpAQCAtNDcyLDI5 ICsyOTcsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgICAgIHZhbCA9IHRh cmdldF9yZW1vdmVfd2F0Y2hwb2ludCAoYi0+YWRkcmVzcywgYi0+bGVuZ3RoLAogIAkJCQkgICAg ICBiLT53YXRjaHBvaW50X3R5cGUsIGItPm93bmVyLT5jb25kX2V4cCk7CiAgCi1AQCAtMzIzNyw2 ICszMjk0LDEyIEBAIHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKLSAgICAgICByZXN1bHQg PSBQUklOVF9OT1RISU5HOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIGJwX2V4Y2VwdGlv bl9tYXN0ZXI6Ci0rICAgICAgLyogVGhlc2Ugc2hvdWxkIG5ldmVyIGJlIGVuYWJsZWQuICAqLwot KyAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiRXhjZXB0aW9uIE1hc3RlciBCcmVha3BvaW50OiBn ZGIgc2hvdWxkIG5vdCBzdG9wIVxuIikpOwotKyAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7 Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgYnBfd2F0Y2hwb2ludDoKLSAgICAgY2FzZSBi cF9oYXJkd2FyZV93YXRjaHBvaW50OgotICAgICAgIGFubm90YXRlX3dhdGNocG9pbnQgKGItPm51 bWJlcik7Ci1AQCAtMzMyNCw2ICszMzg3LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJz KQotICAgICBjYXNlIGJwX25vbmU6Ci0gICAgIGNhc2UgYnBfbG9uZ2ptcDoKLSAgICAgY2FzZSBi cF9sb25nam1wX3Jlc3VtZToKLSsgICAgY2FzZSBicF9leGNlcHRpb246Ci0rICAgIGNhc2UgYnBf ZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKLSAgICAgY2FzZSBi cF93YXRjaHBvaW50X3Njb3BlOgotICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtMzMzMSw2 ICszMzk2LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQorQEAgLTMzNDIsNiArMzM2 OSw4IEBAIHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKICAgICAgY2FzZSBicF90cmFjZXBv aW50OgogICAgICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAgICAgY2FzZSBicF9qaXRfZXZl bnQ6CkBAIC01MDMsMTYgKzMwNiwxNiBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAog ICAgICBkZWZhdWx0OgogICAgICAgIHJlc3VsdCA9IFBSSU5UX1VOS05PV047CiAgICAgICAgYnJl YWs7Ci1AQCAtMzU0OSw2ICszNjE2LDggQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKLSAg IGdkYl9hc3NlcnQgKGJzLT5icmVha3BvaW50X2F0LT5vd25lciAhPSBOVUxMKTsKLSAgIGIgPSBi cy0+YnJlYWtwb2ludF9hdC0+b3duZXI7CitAQCAtMzU2Miw2ICszNTkxLDggQEAgd2F0Y2hwb2lu dF9jaGVjayAodm9pZCAqcCkKKyAgIGdkYl9hc3NlcnQgKGJzLT5icmVha3BvaW50X2F0ICE9IE5V TEwpOworICAgYiA9IGJzLT5icmVha3BvaW50X2F0OwogIAogKyAgZ2RiX2Fzc2VydCAoaXNfd2F0 Y2hwb2ludCAoYikpOwogKwogICAgLyogSWYgdGhpcyBpcyBhIGxvY2FsIHdhdGNocG9pbnQsIHdl IG9ubHkgd2FudCB0byBjaGVjayBpZiB0aGUKICAgICAgIHdhdGNocG9pbnQgZnJhbWUgaXMgaW4g c2NvcGUgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHRoZSB0aHJlYWQKICAgICAgIHRoYXQgd2Fz IHVzZWQgdG8gY3JlYXRlIHRoZSB3YXRjaHBvaW50LiAgKi8KLUBAIC0zNjU1LDEzICszNzI0LDcg QEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKK0BAIC0zNjY4LDEzICszNjk5LDcgQEAgd2F0 Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKICAgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICIgZGVs ZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9jayBpblxuXAogIHdoaWNo IGl0cyBleHByZXNzaW9uIGlzIHZhbGlkLlxuIik7ICAgICAKICAKQEAgLTUyNyw3ICszMzAsNyBA QCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIAogICAgICAgIHJldHVybiBXUF9ERUxF VEVEOwogICAgICB9Ci1AQCAtMzczMCw4ICszNzkzLDEyIEBAIGJwc3RhdF9jaGVja19sb2NhdGlv biAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwKK0BAIC0zNzQzLDggKzM3NjgsMTIgQEAg YnBzdGF0X2NoZWNrX2xvY2F0aW9uIChjb25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLAogIAog IC8qIElmIEJTIHJlZmVycyB0byBhIHdhdGNocG9pbnQsIGRldGVybWluZSBpZiB0aGUgd2F0Y2hl ZCB2YWx1ZXMKICAgICBoYXMgYWN0dWFsbHkgY2hhbmdlZCwgYW5kIHdlIHNob3VsZCBzdG9wLiAg SWYgbm90LCBzZXQgQlMtPnN0b3AKQEAgLTU0Miw3ICszNDUsNyBAQCBpbmRleCA2YTY4NjRjLi41 ZGYzMzZkIDEwMDY0NAogIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCiAgewog ICAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibDsKLUBAIC0zODY1LDkgKzM5MzIsNyBAQCBi cHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnBzdGF0IGJzKQorQEAgLTM4NzgsOSArMzkwNyw3IEBA IGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCiAgCSAgICBjYXNlIDA6CiAgCSAg ICAgIC8qIEVycm9yIGZyb20gY2F0Y2hfZXJyb3JzLiAgKi8KICAJICAgICAgcHJpbnRmX2ZpbHRl cmVkIChfKCJXYXRjaHBvaW50ICVkIGRlbGV0ZWQuXG4iKSwgYi0+bnVtYmVyKTsKQEAgLTU1Myw3 ICszNTYsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIAkgICAgICAvKiBXZSd2 ZSBhbHJlYWR5IHByaW50ZWQgd2hhdCBuZWVkcyB0byBiZSBwcmludGVkLiAgKi8KICAJICAgICAg YnMtPnByaW50X2l0ID0gcHJpbnRfaXRfZG9uZTsKICAJICAgICAgYnJlYWs7Ci1AQCAtMzg4MSw4 ICszOTQ2LDEwIEBAIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCitAQCAtMzg5 NCw4ICszOTIxLDEwIEBAIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCiAgCSAg ICAgYW55dGhpbmcgZm9yIHRoaXMgd2F0Y2hwb2ludC4gICovCiAgCSAgYnMtPnByaW50X2l0ID0g cHJpbnRfaXRfbm9vcDsKICAJICBicy0+c3RvcCA9IDA7CkBAIC01NjQsMTYgKzM2NywxNiBAQCBp bmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIH0KICAKICAKLUBAIC0zOTE0LDcgKzM5ODEs NyBAQCBicHN0YXRfY2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChicHN0YXQgYnMsIHB0aWRf dCBwdGlkKQotIAkgd2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhhdCB3ZSB3aWxsIGhhbmRs ZSB0aGUKLSAJIG91dC1vZi1zY29wZSBldmVudC4gIFdlJ2xsIGdldCB0byB0aGUgd2F0Y2hwb2lu dCBuZXh0Ci0gCSBpdGVyYXRpb24uICAqLwotLSAgICAgIGlmIChiLT50eXBlID09IGJwX3dhdGNo cG9pbnRfc2NvcGUpCi0rICAgICAgaWYgKGItPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSAm JiBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gYikKLSAJYi0+cmVsYXRlZF9icmVha3BvaW50LT53 YXRjaHBvaW50X3RyaWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7Ci0gCi0gICAgICAgaWYg KGlzX3dhdGNocG9pbnQgKGIpKQotQEAgLTQwNDUsNiArNDExMiw4IEBAIGJwc3RhdF9zdG9wX3N0 YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC00MDM1LDcgKzQwNjQsNyBA QCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCisgICBz dHJ1Y3QgYnBfbG9jYXRpb24gKmJsOworICAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7CisgICAv KiBGaXJzdCBpdGVtIG9mIGFsbG9jYXRlZCBicHN0YXQncy4gICovCistICBicHN0YXQgYnNfaGVh ZCA9IE5VTEwsICpic19saW5rID0gJmJzX2hlYWQ7CisrICBicHN0YXQgYnNfaGVhZCA9IE5VTEws ICpic19saW5rID0gJmJzX2hlYWQsICpic19saW5rX25leHQ7CisgICAvKiBQb2ludGVyIHRvIHRo ZSBsYXN0IHRoaW5nIGluIHRoZSBjaGFpbiBjdXJyZW50bHkuICAqLworICAgYnBzdGF0IGJzOwor ICAgaW50IGl4OworQEAgLTQwNTYsNiArNDA4NSw4IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKICAKICAgICAgICBmb3IgKGJsID0gYi0+bG9jOyBi bCAhPSBOVUxMOyBibCA9IGJsLT5uZXh0KQogIAl7CkBAIC01ODIsNDMgKzM4NSw0NSBAQCBpbmRl eCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIAkgIC8qIEZvciBoYXJkd2FyZSB3YXRjaHBvaW50 cywgd2UgbG9vayBvbmx5IGF0IHRoZSBmaXJzdCBsb2NhdGlvbi4KICAJICAgICBUaGUgd2F0Y2hw b2ludF9jaGVjayBmdW5jdGlvbiB3aWxsIHdvcmsgb24gdGhlIGVudGlyZSBleHByZXNzaW9uLAog IAkgICAgIG5vdCB0aGUgaW5kaXZpZHVhbCBsb2NhdGlvbnMuICBGb3IgcmVhZCB3YXRjaHBvaW50 cywgdGhlCi1AQCAtNDA2Miw2ICs0MTMxLDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3Qg YWRkcmVzc19zcGFjZSAqYXNwYWNlLAotIAkgIC8qIENvbWUgaGVyZSBpZiBpdCdzIGEgd2F0Y2hw b2ludCwgb3IgaWYgdGhlIGJyZWFrIGFkZHJlc3MgbWF0Y2hlcyAqLwotIAotIAkgIGJzID0gYnBz dGF0X2FsbG9jIChibCwgYnMpOwkvKiBBbGxvYyBhIGJwc3RhdCB0byBleHBsYWluIHN0b3AgKi8K LSsJICBnZGJfYXNzZXJ0IChic19wcmV2LT5uZXh0ID09IGJzKTsKLSAKLSAJICAvKiBBc3N1bWUg d2Ugc3RvcC4gIFNob3VsZCB3ZSBmaW5kIHdhdGNocG9pbnQgdGhhdCBpcyBub3QgYWN0dWFsbHkK LSAJICAgICB0cmlnZ2VyZWQsIG9yIGlmIGNvbmRpdGlvbiBvZiBicmVha3BvaW50IGlzIGZhbHNl LCB3ZSdsbCByZXNldAotQEAgLTQwNjksMTMgKzQxMzksMjMgQEAgYnBzdGF0X3N0b3Bfc3RhdHVz IChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlLAotIAkgIGJzLT5zdG9wID0gMTsKLSAJICBi cy0+cHJpbnQgPSAxOwotIAotLQkgIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicyk7Ci0tCSAg aWYgKCFicy0+c3RvcCkKLS0JICAgIGNvbnRpbnVlOwotKwkgIGlmICghYnBzdGF0X2NoZWNrX3dh dGNocG9pbnQgKGJzKSkKLSsJICAgIHsKLSsJICAgICAgLyogRW5zdXJlIGJwc3RhdF9leHBsYWlu c19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKLSsJCSB0aGUgY2F1 c2Ugb2YgdGhpcyB0cmFwLiAgKi8KLSsKLSsJICAgICAgZ2RiX2Fzc2VydCAoYnMtPnByaW50X2l0 ID09IHByaW50X2l0X25vb3ApOwotKwkgICAgICBnZGJfYXNzZXJ0ICghYnMtPnN0b3ApOwotKwkg ICAgICB4ZnJlZSAoYnMpOwotKwkgICAgICBicyA9IGJzX3ByZXY7Ci0rCSAgICAgIGJzLT5uZXh0 ID0gTlVMTDsKLSsJICAgICAgY29udGludWU7Ci0rCSAgICB9CitAQCAtNDA4NCw3ICs0MTE1LDcg QEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlLAorIAkg ICAgIHdhdGNocG9pbnQgYXMgdHJpZ2dlcmVkIHNvIHRoYXQgd2Ugd2lsbCBoYW5kbGUgdGhlCisg CSAgICAgb3V0LW9mLXNjb3BlIGV2ZW50LiAgV2UnbGwgZ2V0IHRvIHRoZSB3YXRjaHBvaW50IG5l eHQKKyAJICAgICBpdGVyYXRpb24uICAqLworLQkgIGlmIChiLT50eXBlID09IGJwX3dhdGNocG9p bnRfc2NvcGUpCisrCSAgaWYgKGItPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSAmJiBiLT5y ZWxhdGVkX2JyZWFrcG9pbnQgIT0gYikKKyAJICAgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+d2F0 Y2hwb2ludF90cmlnZ2VyZWQgPSB3YXRjaF90cmlnZ2VyZWRfeWVzOworIAl9CisgICAgIH0KK0BA IC00MTA4LDE0ICs0MTM5LDI2IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nf c3BhY2UgKmFzcGFjZSwKICAKLSAJICBpZiAoYi0+dHlwZSA9PSBicF90aHJlYWRfZXZlbnQgfHwg Yi0+dHlwZSA9PSBicF9vdmVybGF5X2V2ZW50Ci0gCSAgICAgIHx8IGItPnR5cGUgPT0gYnBfbG9u Z2ptcF9tYXN0ZXIKLS0JICAgICAgfHwgYi0+dHlwZSA9PSBicF9zdGRfdGVybWluYXRlX21hc3Rl cikKLSsJICAgICAgfHwgYi0+dHlwZSA9PSBicF9zdGRfdGVybWluYXRlX21hc3RlcgotKwkgICAg ICB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpCi0gCSAgICAvKiBXZSBkbyBub3Qg c3RvcCBmb3IgdGhlc2UuICAqLwotIAkgICAgYnMtPnN0b3AgPSAwOwotIAkgIGVsc2UKLUBAIC00 MTc2LDcgKzQyNTYsNyBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQorICAgcmVtb3ZlZF9hbnkg PSAwOworIAorLSAgZm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQp CisrICBmb3IgKGJzX2xpbmsgPSAmYnNfaGVhZDsgKmJzX2xpbmsgIT0gTlVMTDsgYnNfbGluayA9 IGJzX2xpbmtfbmV4dCkKKyAgICAgeworKyAgICAgIGJzID0gKmJzX2xpbms7CisrICAgICAgYnNf bGlua19uZXh0ID0gJmJzLT5uZXh0OworKworICAgICAgIGlmICghYnMtPnN0b3ApCisgCWNvbnRp bnVlOworIAorICAgICAgIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicyk7CisgICAgICAgaWYg KCFicy0+c3RvcCkKKy0JY29udGludWU7CisrCXsKKysJICAvKiBFbnN1cmUgYnBzdGF0X2V4cGxh aW5zX3NpZ25hbCBzdGF5cyBmYWxzZSBpZiB0aGlzIEJMIGNvdWxkIG5vdCBiZQorKwkgICAgIHRo ZSBjYXVzZSBvZiB0aGlzIHRyYXAuICAqLworKworKwkgIGdkYl9hc3NlcnQgKGJzLT5wcmludF9p dCA9PSBwcmludF9pdF9ub29wKTsKKysJICBnZGJfYXNzZXJ0ICghYnMtPnN0b3ApOworKwkgIGJz X2xpbmtfbmV4dCA9IGJzX2xpbms7CisrCSAgeGZyZWUgKGJzKTsKKysJICBjb250aW51ZTsKKysJ fQorIAorICAgICAgIGIgPSBicy0+YnJlYWtwb2ludF9hdDsKKyAKK0BAIC00MjA1LDcgKzQyNDgs NyBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQogIC8qIERlY2lkZSB3aGF0IGluZnJ1biBuZWVk cyB0byBkbyB3aXRoIHRoaXMgYnBzdGF0LiAgKi8KICAKICBzdHJ1Y3QgYnBzdGF0X3doYXQKQEAg LTYyNyw3ICs0MzIsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIHsKICAgIHN0 cnVjdCBicHN0YXRfd2hhdCByZXR2YWw7CiAgICAvKiBXZSBuZWVkIHRvIGRlZmVyIGNhbGxpbmcg YHNvbGliX2FkZCcsIGFzIGFkZGluZyBuZXcgc3ltYm9scwotQEAgLTQxODQsMTEgKzQyNjQsMTMg QEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKK0BAIC00MjEzLDExICs0MjU2LDEyIEBAIGJwc3Rh dF93aGF0IChicHN0YXQgYnMpCiAgICAgICBhbmQgaGVuY2UgbWF5IGNsZWFyIHVucHJvY2Vzc2Vk IGVudHJpZXMgaW4gdGhlIEJTIGNoYWluLiAgKi8KICAgIGludCBzaGxpYl9ldmVudCA9IDA7CiAg ICBpbnQgaml0X2V2ZW50ID0gMDsKQEAgLTYzNSwzOCArNDQwLDEzIEBAIGluZGV4IDZhNjg2NGMu LjVkZjMzNmQgMTAwNjQ0CiAgCiAgICByZXR2YWwubWFpbl9hY3Rpb24gPSBCUFNUQVRfV0hBVF9L RUVQX0NIRUNLSU5HOwogICAgcmV0dmFsLmNhbGxfZHVtbXkgPSBTVE9QX05PTkU7Ci0rICByZXR2 YWwuaXNfbG9uZ2ptcCA9IDA7CiAgCiAtICBmb3IgKDsgYnMgIT0gTlVMTDsgYnMgPSBicy0+bmV4 dCkKICsgIGZvciAoYnMgPSBic19oZWFkOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQogICAg ICB7CiAgICAgICAgLyogRXh0cmFjdCB0aGlzIEJTJ3MgYWN0aW9uLiAgQWZ0ZXIgcHJvY2Vzc2lu ZyBlYWNoIEJTLCB3ZSBjaGVjawogIAkgaWYgaXRzIGFjdGlvbiBvdmVycmlkZXMgYWxsIHdlJ3Zl IHNlZW0gc28gZmFyLiAgKi8KLUBAIC00MjQyLDEwICs0MzI0LDE1IEBAIGJwc3RhdF93aGF0IChi cHN0YXQgYnMpCi0gCSAgICB9Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgYnBfbG9uZ2ptcDoKLSsJY2Fz ZSBicF9leGNlcHRpb246Ci0gCSAgdGhpc19hY3Rpb24gPSBCUFNUQVRfV0hBVF9TRVRfTE9OR0pN UF9SRVNVTUU7Ci0rCSAgcmV0dmFsLmlzX2xvbmdqbXAgPSBicy0+YnJlYWtwb2ludF9hdC0+b3du ZXItPnR5cGUgPT0gYnBfbG9uZ2ptcDsKLSAJICBicmVhazsKLSAJY2FzZSBicF9sb25nam1wX3Jl c3VtZToKLSsJY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgotIAkgIHRoaXNfYWN0aW9uID0gQlBT VEFUX1dIQVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUU7Ci0rCSAgcmV0dmFsLmlzX2xvbmdqbXAKLSsJ ICAgID0gYnMtPmJyZWFrcG9pbnRfYXQtPm93bmVyLT50eXBlID09IGJwX2xvbmdqbXBfcmVzdW1l OwotIAkgIGJyZWFrOwotIAljYXNlIGJwX3N0ZXBfcmVzdW1lOgotIAkgIGlmIChicy0+c3RvcCkK LUBAIC00MjYxLDYgKzQzNDgsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQotIAljYXNlIGJw X292ZXJsYXlfZXZlbnQ6Ci0gCWNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6Ci0gCWNhc2UgYnBfc3Rk X3Rlcm1pbmF0ZV9tYXN0ZXI6Ci0rCWNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKLSAJICB0aGlz X2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NJTkdMRTsKLSAJICBicmVhazsKLSAJY2FzZSBicF9jYXRj aHBvaW50OgotQEAgLTQzMTMsNiArNDQwMSwyMCBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQor QEAgLTQzNDIsNiArNDM4NiwyMCBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogIAkgICAgIG91 dCBhbHJlYWR5LiAgKi8KICAJICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAog IAkJCSAgXygiYnBzdGF0X3doYXQ6IHRyYWNlcG9pbnQgZW5jb3VudGVyZWQiKSk7CkBAIC02ODcs NyArNDY3LDcgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAJZGVmYXVsdDoKICAJ ICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAogIAkJCSAgXygiYnBzdGF0X3do YXQ6IHVuaGFuZGxlZCBicHR5cGUgJWQiKSwgKGludCkgYnB0eXBlKTsKLUBAIC00MzUwLDYgKzQ0 NTIsMjMgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKK0BAIC00Mzc5LDYgKzQ0MzcsMjEgQEAg YnBzdGF0X3doYXQgKGJwc3RhdCBicykKICAgICAgICBoYW5kbGVfaml0X2V2ZW50ICgpOwogICAg ICB9CiAgCkBAIC02OTUsMTUgKzQ3NSwxMyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0 NAogKyAgICB7CiArICAgICAgaWYgKGJzLT5icmVha3BvaW50X2F0ID09IE5VTEwpCiArCWNvbnRp bnVlOwotKyAgICAgIGlmIChicy0+YnJlYWtwb2ludF9hdC0+b3duZXIgPT0gTlVMTCkKLSsJY29u dGludWU7Ci0rICAgICAgc3dpdGNoIChicy0+YnJlYWtwb2ludF9hdC0+b3duZXItPnR5cGUpCisr ICAgICAgc3dpdGNoIChicy0+YnJlYWtwb2ludF9hdC0+dHlwZSkKICsJewogKwljYXNlIGJwX2du dV9pZnVuY19yZXNvbHZlcjoKLSsJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoYnMtPmJyZWFr cG9pbnRfYXQtPm93bmVyKTsKKysJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoYnMtPmJyZWFr cG9pbnRfYXQpOwogKwkgIGJyZWFrOwogKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1 cm46Ci0rCSAgZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChicy0+YnJlYWtwb2ludF9h dC0+b3duZXIpOworKwkgIGdudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoYnMtPmJyZWFr cG9pbnRfYXQpOwogKwkgIGJyZWFrOwogKwl9CiArICAgIH0KQEAgLTcxMSw0NSArNDg5LDE2IEBA IGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAK LUBAIC00NDYxLDYgKzQ1ODAsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIsCi0gICAgIHticF9hY2Nlc3Nfd2F0Y2hwb2ludCwgImFjYyB3YXRj aHBvaW50In0sCi0gICAgIHticF9sb25nam1wLCAibG9uZ2ptcCJ9LAotICAgICB7YnBfbG9uZ2pt cF9yZXN1bWUsICJsb25nam1wIHJlc3VtZSJ9LAotKyAgICB7YnBfZXhjZXB0aW9uLCAiZXhjZXB0 aW9uIn0sCi0rICAgIHticF9leGNlcHRpb25fcmVzdW1lLCAiZXhjZXB0aW9uIHJlc3VtZSJ9LAot ICAgICB7YnBfc3RlcF9yZXN1bWUsICJzdGVwIHJlc3VtZSJ9LAotICAgICB7YnBfd2F0Y2hwb2lu dF9zY29wZSwgIndhdGNocG9pbnQgc2NvcGUifSwKLSAgICAge2JwX2NhbGxfZHVtbXksICJjYWxs IGR1bW15In0sCi1AQCAtNDQ3MCwxMSArNDU5MSwxNCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9s b2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCi0gICAgIHticF9vdmVybGF5X2V2ZW50LCAi b3ZlcmxheSBldmVudHMifSwKLSAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0 ZXIifSwKLSAgICAge2JwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyLCAic3RkOjp0ZXJtaW5hdGUgbWFz dGVyIn0sCi0rICAgIHticF9leGNlcHRpb25fbWFzdGVyLCAiZXhjZXB0aW9uIG1hc3RlciJ9LAot ICAgICB7YnBfY2F0Y2hwb2ludCwgImNhdGNocG9pbnQifSwKLSAgICAge2JwX3RyYWNlcG9pbnQs ICJ0cmFjZXBvaW50In0sCitAQCAtNDQ5Nyw2ICs0NTcwLDggQEAgYnB0eXBlX3N0cmluZyAoZW51 bSBicHR5cGUgdHlwZSkKICAgICAge2JwX2Zhc3RfdHJhY2Vwb2ludCwgImZhc3QgdHJhY2Vwb2lu dCJ9LAogICAgICB7YnBfc3RhdGljX3RyYWNlcG9pbnQsICJzdGF0aWMgdHJhY2Vwb2ludCJ9LAog ICAgICB7YnBfaml0X2V2ZW50LCAiaml0IGV2ZW50cyJ9LAogKyAgICB7YnBfZ251X2lmdW5jX3Jl c29sdmVyLCAiZ251LWlmdW5jIHJlc29sdmVyIn0sCiArICAgIHticF9nbnVfaWZ1bmNfcmVzb2x2 ZXJfcmV0dXJuLCAiZ251LWZ1bmMgcmVzb2x2ZXIgcmV0dXJuIn0sCiAgICB9OwotICAgCi0gICBz dGF0aWMgY2hhciBicGVuYWJsZXNbXSA9ICJueW5ueSI7Ci1AQCAtNDU5NSw2ICs0NzE5LDggQEAg cHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAotICAg ICAgIGNhc2UgYnBfZmluaXNoOgotICAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKLSAgICAgICBjYXNl IGJwX2xvbmdqbXBfcmVzdW1lOgotKyAgICAgIGNhc2UgYnBfZXhjZXB0aW9uOgotKyAgICAgIGNh c2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgICBjYXNlIGJwX3N0ZXBfcmVzdW1lOgotICAg ICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKLSAgICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6 Ci1AQCAtNDYwNCwxMCArNDczMCwxMyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKmIsCi0gICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgotICAg ICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6Ci0gICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRl X21hc3RlcjoKLSsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gICAgICAgY2FzZSBi cF90cmFjZXBvaW50OgorIAorICAgaWYgKCgoaW50KSB0eXBlID49IChzaXplb2YgKGJwdHlwZXMp IC8gc2l6ZW9mIChicHR5cGVzWzBdKSkpCitAQCAtNDY0Myw2ICs0NzE4LDggQEAgcHJpbnRfb25l X2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICAgIGNhc2Ug YnBfZmFzdF90cmFjZXBvaW50OgogICAgICAgIGNhc2UgYnBfc3RhdGljX3RyYWNlcG9pbnQ6CiAg ICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CkBAIC03NTgsNyArNTA3LDcgQEAgaW5kZXggNmE2ODY0 Yy4uNWRmMzM2ZCAxMDA2NDQKICAJaWYgKG9wdHMuYWRkcmVzc3ByaW50KQogIAkgIHsKICAJICAg IGFubm90YXRlX2ZpZWxkICg0KTsKLUBAIC00ODg4LDcgKzUwMTcsOCBAQCB1c2VyX3NldHRhYmxl X2JyZWFrcG9pbnQgKGNvbnN0IHN0cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTQ5MjMsNyArNTAw MCw4IEBAIHVzZXJfc2V0dGFibGVfYnJlYWtwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9pbnQg KmIpCiAgCSAgfHwgYi0+dHlwZSA9PSBicF9jYXRjaHBvaW50CiAgCSAgfHwgYi0+dHlwZSA9PSBi cF9oYXJkd2FyZV9icmVha3BvaW50CiAgCSAgfHwgaXNfdHJhY2Vwb2ludCAoYikKQEAgLTc2OCwz NCArNTE3LDI0IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgfQogIAkKICAvKiBQ cmludCBpbmZvcm1hdGlvbiBvbiB1c2VyIHNldHRhYmxlIGJyZWFrcG9pbnQgKHdhdGNocG9pbnQs IGV0YykKLUBAIC01MzM0LDYgKzU0NjQsOCBAQCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0 IGJyZWFrcG9pbnQgKmJwdCkKLSAgICAgY2FzZSBicF9maW5pc2g6Ci0gICAgIGNhc2UgYnBfbG9u Z2ptcDoKLSAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKLSsgICAgY2FzZSBicF9leGNlcHRp b246Ci0rICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgY2FzZSBicF9zdGVwX3Jl c3VtZToKLSAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgotICAgICBjYXNlIGJwX2NhbGxf ZHVtbXk6Ci1AQCAtNTM0NCw2ICs1NDc2LDkgQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVj dCBicmVha3BvaW50ICpicHQpCitAQCAtNTM4OSw2ICs1NDY3LDggQEAgYWxsb2NhdGVfYnBfbG9j YXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfaml0X2V2ZW50Ogog ICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgogICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVf bWFzdGVyOgogKyAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKICsgICAgY2FzZSBicF9n bnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6 CiAgICAgICAgbG9jLT5sb2NfdHlwZSA9IGJwX2xvY19zb2Z0d2FyZV9icmVha3BvaW50OwogICAg ICAgIGJyZWFrOwogICAgICBjYXNlIGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQ6Ci1AQCAtNTQyMCw2 ICs1NTU1LDcgQEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotICAgYi0+c3lzY2FsbHNfdG9fYmVfY2F1Z2h0ID0gTlVMTDsKK0BA IC01NDc3LDYgKzU1NTcsNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91dF9sb2NhdGlvbiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICBiLT5vcHMgPSBOVUxMOwogICAgYi0+Y29uZGl0 aW9uX25vdF9wYXJzZWQgPSAwOworICAgYi0+cHlfYnBfb2JqZWN0ID0gTlVMTDsKICsgIGItPnJl bGF0ZWRfYnJlYWtwb2ludCA9IGI7CiAgCiAgICAvKiBBZGQgdGhpcyBicmVha3BvaW50IHRvIHRo ZSBlbmQgb2YgdGhlIGNoYWluCiAgICAgICBzbyB0aGF0IGEgbGlzdCBvZiBicmVha3BvaW50cyB3 aWxsIGNvbWUgb3V0IGluIG9yZGVyCi1AQCAtNTQzOSw3ICs1NTc1LDcgQEAgc2V0X3Jhd19icmVh a3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTU0 OTYsNyArNTU3Nyw3IEBAIHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAKICAvKiBJbml0aWFsaXplIGxvYy0+ZnVuY3Rpb25fbmFt ZS4gICovCiAgc3RhdGljIHZvaWQKQEAgLTgwNCw3ICs1NDMsNyBAQCBpbmRleCA2YTY4NjRjLi41 ZGYzMzZkIDEwMDY0NAogIHsKICAgIGdkYl9hc3NlcnQgKGxvYy0+b3duZXIgIT0gTlVMTCk7CiAg Ci1AQCAtNTQ0Nyw4ICs1NTgzLDI5IEBAIHNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9u IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKK0BAIC01NTA0LDggKzU1ODUsMjkgQEAgc2V0X2Jy ZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQogICAg ICAgIHx8IGxvYy0+b3duZXItPnR5cGUgPT0gYnBfaGFyZHdhcmVfYnJlYWtwb2ludAogICAgICAg IHx8IGlzX3RyYWNlcG9pbnQgKGxvYy0+b3duZXIpKQogICAgICB7CkBAIC04MzYsNyArNTc1LDcg QEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAgICAgICBpZiAobG9jLT5mdW5jdGlv bl9uYW1lKQogIAlsb2MtPmZ1bmN0aW9uX25hbWUgPSB4c3RyZHVwIChsb2MtPmZ1bmN0aW9uX25h bWUpOwogICAgICB9Ci1AQCAtNTUyMSw3ICs1Njc4LDggQEAgc2V0X3Jhd19icmVha3BvaW50IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC01NTc4LDcgKzU2ODAsOCBAQCBzZXRfcmF3X2Jy ZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgYi0+bG9jLT5zZWN0aW9uID0g c2FsLnNlY3Rpb247CiAgICBiLT5saW5lX251bWJlciA9IHNhbC5saW5lOwogIApAQCAtODQ2LDQx ICs1ODUsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIAogICAgYnJlYWtwb2lu dHNfY2hhbmdlZCAoKTsKICAKLUBAIC01NTQ4LDggKzU3MDYsNyBAQCBtYWtlX2JyZWFrcG9pbnRf cGVybWFuZW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSB9Ci0gCi0gLyogQ2FsbCB0aGlzIHJv dXRpbmUgd2hlbiBzdGVwcGluZyBhbmQgbmV4dGluZyB0byBlbmFibGUgYSBicmVha3BvaW50Ci0t ICAgaWYgd2UgZG8gYSBsb25nam1wKCkgaW4gVEhSRUFELiAgV2hlbiB3ZSBoaXQgdGhhdCBicmVh a3BvaW50LCBjYWxsCi0tICAgc2V0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQoKSB0byBmaWd1 cmUgb3V0IHdoZXJlIHdlIGFyZSBnb2luZy4gKi8KLSsgICBpZiB3ZSBkbyBhIGxvbmdqbXAoKSBv ciAndGhyb3cnIGluIFRIUkVBRC4gICovCi0gCi0gdm9pZAotIHNldF9sb25nam1wX2JyZWFrcG9p bnQgKGludCB0aHJlYWQpCi1AQCAtNTU2MiwxMSArNTcxOSwxMiBAQCBzZXRfbG9uZ2ptcF9icmVh a3BvaW50IChpbnQgdGhyZWFkKQotICAgICAgY2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUgdGhl bSBmb3IgdGhlIHJlcXVlc3RlZCB0aHJlYWQuICAqLwotICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUg KGIsIHRlbXApCi0gICAgIGlmIChiLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCi0t CSYmIGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIpCi0rCSYmIChiLT50eXBlID09IGJwX2xv bmdqbXBfbWFzdGVyCi0rCSAgICB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpKQot ICAgICAgIHsKLSAJc3RydWN0IGJyZWFrcG9pbnQgKmNsb25lID0gY2xvbmVfbW9tZW50YXJ5X2Jy ZWFrcG9pbnQgKGIpOwotIAotLQljbG9uZS0+dHlwZSA9IGJwX2xvbmdqbXA7Ci0rCWNsb25lLT50 eXBlID0gYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlciA/IGJwX2xvbmdqbXAgOiBicF9leGNl cHRpb247Ci0gCWNsb25lLT50aHJlYWQgPSB0aHJlYWQ7Ci0gICAgICAgfQotIH0KLUBAIC01NTc4 LDcgKzU3MzYsNyBAQCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQotICAg c3RydWN0IGJyZWFrcG9pbnQgKmIsICp0ZW1wOwotIAotICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUg KGIsIHRlbXApCi0tICAgIGlmIChiLT50eXBlID09IGJwX2xvbmdqbXApCi0rICAgIGlmIChiLT50 eXBlID09IGJwX2xvbmdqbXAgfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb24pCi0gICAgICAgewot IAlpZiAoYi0+dGhyZWFkID09IHRocmVhZCkKLSAJICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci1A QCAtNjU5NSw3ICs2NzUzLDcgQEAgY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBi cmVha3BvaW50ICpvcmlnKQorQEAgLTY2NTIsNyArNjc1NSw3IEBAIGNsb25lX21vbWVudGFyeV9i cmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqb3JpZykKICAKICAgIGNvcHkgPSBzZXRfcmF3 X2JyZWFrcG9pbnRfd2l0aG91dF9sb2NhdGlvbiAob3JpZy0+Z2RiYXJjaCwgb3JpZy0+dHlwZSk7 CiAgICBjb3B5LT5sb2MgPSBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoY29weSk7CkBAIC04ODksNyAr NTk0LDcgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAKICAgIGNvcHktPmxvYy0+ Z2RiYXJjaCA9IG9yaWctPmxvYy0+Z2RiYXJjaDsKICAgIGNvcHktPmxvYy0+cmVxdWVzdGVkX2Fk ZHJlc3MgPSBvcmlnLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzOwotQEAgLTY2OTQsNiArNjg1Miw3 IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTY3NTEsNiArNjg1NCw3IEBA IG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQogIAlkb19jbGVhbnVwcyAodWlfb3V0X2No YWluKTsKICAJYnJlYWs7CiAgICAgICAgY2FzZSBicF9icmVha3BvaW50OgpAQCAtODk3LDcgKzYw Miw3IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgCWlmICh1aV9vdXRfaXNfbWlf bGlrZV9wICh1aW91dCkpCiAgCSAgewogIAkgICAgc2F5X3doZXJlID0gMDsKLUBAIC02NzA0LDYg KzY4NjMsOCBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC02NzYxLDYgKzY4 NjUsOCBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICAJZWxzZQogIAkgIHByaW50 Zl9maWx0ZXJlZCAoXygiQnJlYWtwb2ludCIpKTsKICAJcHJpbnRmX2ZpbHRlcmVkIChfKCIgJWQi KSwgYi0+bnVtYmVyKTsKQEAgLTkwNiwyNSArNjExLDE1IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMz NmQgMTAwNjQ0CiAgCXNheV93aGVyZSA9IDE7CiAgCWJyZWFrOwogICAgICAgIGNhc2UgYnBfaGFy ZHdhcmVfYnJlYWtwb2ludDoKLUBAIC02NzUwLDYgKzY5MTEsOCBAQCBtZW50aW9uIChzdHJ1Y3Qg YnJlYWtwb2ludCAqYikKLSAgICAgICBjYXNlIGJwX2ZpbmlzaDoKLSAgICAgICBjYXNlIGJwX2xv bmdqbXA6Ci0gICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKLSsgICAgICBjYXNlIGJwX2V4 Y2VwdGlvbjoKLSsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1bWU6Ci0gICAgICAgY2FzZSBi cF9zdGVwX3Jlc3VtZToKLSAgICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci0gICAgICAgY2FzZSBi cF9zdGRfdGVybWluYXRlOgotQEAgLTY3NjAsNiArNjkyMyw4IEBAIG1lbnRpb24gKHN0cnVjdCBi cmVha3BvaW50ICpiKQorQEAgLTY4MTcsNiArNjkyMyw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVh a3BvaW50ICpiKQogICAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9u Z2ptcF9tYXN0ZXI6CiAgICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKICsgICAg ICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0rICAgICAgY2FzZSBicF9leGNl cHRpb25fbWFzdGVyOgogIAlicmVhazsKICAgICAgICB9CiAgCi1AQCAtNjgyMCw3ICs2OTg1LDgg QEAgYWRkX2xvY2F0aW9uX3RvX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAg LTY4NzcsNyArNjk4NCw4IEBAIGFkZF9sb2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJl YWtwb2ludCAqYiwKICAgIGdkYl9hc3NlcnQgKGxvYy0+cHNwYWNlICE9IE5VTEwpOwogICAgbG9j LT5zZWN0aW9uID0gc2FsLT5zZWN0aW9uOwogIApAQCAtOTM0LDYxICs2MjksNyBAQCBpbmRleCA2 YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgcmV0dXJuIGxvYzsKICB9CiAgDAotQEAgLTgzNDYs NiArODUxMiw3IEBAIHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdz Ci0gewotICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7Ci0gICBzdHJ1Y3QgYnJlYWtw b2ludCAqYnJlYWtwb2ludDI7Ci0rICBpbnQgdGhyZWFkX251bTsKLSB9OwotIAotIC8qIFRoaXMg ZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGZldGNoX2luZmVyaW9yX2V2ZW50IHZpYSB0aGUKLUBAIC04 MzYwLDYgKzg1MjcsNyBAQCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAq YXJnKQotICAgZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQpOwotICAgaWYgKGEtPmJy ZWFrcG9pbnQyKQotICAgICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludDIpOwotKyAg ZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAoYS0+dGhyZWFkX251bSk7Ci0gfQotIAotIHZvaWQK LUBAIC04MzcxLDYgKzg1MzksOCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQotICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9p bnQ7Ci0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDIgPSBOVUxMOwotICAgc3RydWN0 IGNsZWFudXAgKm9sZF9jaGFpbjsKLSsgIGludCB0aHJlYWQ7Ci0rICBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwOwotIAotICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7Ci0gCi1AQCAtODQwOSw2ICs4 NTc5LDkgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGlu dCBhbnl3aGVyZSkKLSAKLSAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtw b2ludCAoYnJlYWtwb2ludCk7Ci0gCi0rICB0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKLSsgIHRo cmVhZCA9IHRwLT5udW07Ci0rCi0gICAvKiBLZWVwIHdpdGhpbiB0aGUgY3VycmVudCBmcmFtZSwg b3IgaW4gZnJhbWVzIGNhbGxlZCBieSB0aGUgY3VycmVudAotICAgICAgb25lLiAgKi8KLSAKLUBA IC04NDIxLDYgKzg1OTQsMTAgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHksIGludCBhbnl3aGVyZSkKLSAJCQkJCSAgICAgIGZyYW1lX3Vud2luZF9jYWxsZXJf aWQgKGZyYW1lKSwKLSAJCQkJCSAgICAgIGJwX3VudGlsKTsKLSAgICAgICBtYWtlX2NsZWFudXBf ZGVsZXRlX2JyZWFrcG9pbnQgKGJyZWFrcG9pbnQyKTsKLSsKLSsgICAgICBzZXRfbG9uZ2ptcF9i cmVha3BvaW50ICh0aHJlYWQpOwotKyAgICAgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZnJhbWVf dW53aW5kX2NhbGxlcl9pZCAoZnJhbWUpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xv bmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKLSAgICAgfQotIAotICAgcHJvY2Vl ZCAoLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVMVCwgMCk7Ci1AQCAtODQzNyw2ICs4NjE0LDcgQEAg dW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVy ZSkKLSAKLSAgICAgICBhcmdzLT5icmVha3BvaW50ID0gYnJlYWtwb2ludDsKLSAgICAgICBhcmdz LT5icmVha3BvaW50MiA9IGJyZWFrcG9pbnQyOwotKyAgICAgIGFyZ3MtPnRocmVhZF9udW0gPSB0 aHJlYWQ7Ci0gCi0gICAgICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAgICAgICBh ZGRfY29udGludWF0aW9uIChpbmZlcmlvcl90aHJlYWQgKCksCi1AQCAtOTU2NCwxMiArOTc0Miwy MiBAQCBkZWxldGVfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKK0BAIC05NzEy LDEyICs5ODIwLDIyIEBAIGRlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0 KQogIAogICAgLyogQXQgbGVhc3QgYXZvaWQgdGhpcyBzdGFsZSByZWZlcmVuY2UgdW50aWwgdGhl IHJlZmVyZW5jZSBjb3VudGluZyBvZgogICAgICAgYnJlYWtwb2ludHMgZ2V0cyByZXNvbHZlZC4g ICovCkBAIC0xMDE2LDIzICs2NTcsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAog ICAgICB9CiAgCiAgICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9kZWxldGVkIChicHQtPm51 bWJlcik7Ci1AQCAtOTY1OCw2ICs5ODQ2LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywg aW50IGZyb21fdHR5KQotIAkgICAgJiYgYi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50Ci0gCSAg ICAmJiBiLT50eXBlICE9IGJwX2xvbmdqbXBfbWFzdGVyCi0gCSAgICAmJiBiLT50eXBlICE9IGJw X3N0ZF90ZXJtaW5hdGVfbWFzdGVyCi0rCSAgICAmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9t YXN0ZXIKLSAJICAgICYmIGItPm51bWJlciA+PSAwKQotIAkgIHsKLSAJICAgIGJyZWFrc190b19k ZWxldGUgPSAxOwotQEAgLTk2NzksNiArOTg2OCw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICph cmcsIGludCBmcm9tX3R0eSkKLSAJCSYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAotIAkJ JiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgotIAkJJiYgYi0+dHlwZSAhPSBicF9zdGRf dGVybWluYXRlX21hc3RlcgotKwkJJiYgYi0+dHlwZSAhPSBicF9leGNlcHRpb25fbWFzdGVyCi0g CQkmJiBiLT5udW1iZXIgPj0gMCkKLSAJICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotIAkg IH0KLUBAIC05ODg3LDYgKzEwMDc3LDkgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChz dHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC0xMDA0OSw2ICsxMDE2Nyw5IEBAIHVwZGF0ZV9icmVh a3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgIHJldHVybjsKICAK ICAgIGItPmxvYyA9IE5VTEw7CkBAIC0xMDQyLDcgKzY2Nyw3IEBAIGluZGV4IDZhNjg2NGMuLjVk ZjMzNmQgMTAwNjQ0CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQogICAg ICB7Ci1AQCAtOTkxMywxMSArMTAxMDYsNyBAQCB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMg KHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTEwMDc1LDExICsxMDE5Niw3IEBAIHVwZGF0ZV9i cmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgCSAgICB9CiAgCX0K ICAKQEAgLTEwNTUsNyArNjgwLDcgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAJ Yi0+c291cmNlX2ZpbGUgPSB4c3RyZHVwIChzYWxzLnNhbHNbaV0uc3ltdGFiLT5maWxlbmFtZSk7 CiAgCiAgICAgICAgaWYgKGItPmxpbmVfbnVtYmVyID09IDApCi1AQCAtOTk5OSw2ICsxMDE4OCw3 IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKK0BAIC0xMDE2MSw2ICsxMDI3 OCw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF90 cmFjZXBvaW50OgogICAgICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAgICAgY2FzZSBicF9z dGF0aWNfdHJhY2Vwb2ludDoKQEAgLTEwNjMsMzQgKzY4OCwxNSBAQCBpbmRleCA2YTY4NjRjLi41 ZGYzMzZkIDEwMDY0NAogICAgICAgIC8qIERvIG5vdCBhdHRlbXB0IHRvIHJlLXNldCBicmVha3Bv aW50cyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cC4gICovCiAgICAgICAgaWYgKGItPmVuYWJsZV9z dGF0ZSA9PSBicF9zdGFydHVwX2Rpc2FibGVkKQogIAlyZXR1cm4gMDsKLUBAIC0xMDEzOSw2ICsx MDMyOSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBi cF9vdmVybGF5X2V2ZW50OgotICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgotICAgICBjYXNl IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6 Ci0gICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotICAgICAgIGJyZWFrOwotIAotQEAgLTEw MTYyLDcgKzEwMzUzLDEwIEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAg ICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKK0BAIC0xMDMyNSw2ICsxMDQ0Myw3IEBAIGJyZWFrcG9p bnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICBj YXNlIGJwX2xvbmdqbXBfcmVzdW1lOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbjoKLSsgICAgY2Fz ZSBicF9leGNlcHRpb25fcmVzdW1lOgogICAgICBjYXNlIGJwX2ppdF9ldmVudDoKICsgICAgY2Fz ZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgogICAgICAgIGJyZWFrOwogICAgICB9CiAg Ci1AQCAtMTAyMDUsNiArMTAzOTksNyBAQCBicmVha3BvaW50X3JlX3NldCAodm9pZCkKLSAgIGNy ZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgic2lnbG9uZ2ptcCIpOwotICAgY3JlYXRl X2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJfc2lnbG9uZ2ptcCIpOwotICAgY3JlYXRlX3N0 ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQgKCJzdGQ6OnRlcm1pbmF0ZSgpIik7Ci0rICBj cmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICgpOwotIH0KLSAMCi0gLyogUmVzZXQg dGhlIHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVha3BvaW50OgotQEAgLTEwMzM0LDExICsxMDUy OSwyMCBAQCBtYXBfYnJlYWtwb2ludF9udW1iZXJzIChjaGFyICphcmdzLCB2b2lkICgqZnVuY3Rp b24pIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAorQEAgLTEwNDk2LDExICsxMDYxNSwyNSBAQCBtYXBf YnJlYWtwb2ludF9udW1iZXJzIChjaGFyICphcmdzLCB2b2lkICgqZnVuY3Rpb24pIChzdHJ1Y3Qg YnJlYWtwb2ludCAqLAogIAkgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCB0bXApCiAgCSAgICBp ZiAoYi0+bnVtYmVyID09IG51bSkKICAJICAgICAgewpAQCAtMTEwOSwxMyArNzE1LDE4IEBAIGlu ZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiArCQkgICAgLyogRlVOQ1RJT04gY2FuIGJlIGFs c28gZGVsZXRlX2JyZWFrcG9pbnQuICAqLwogKwkJICAgIG5leHRfcmVsYXRlZF9iID0gcmVsYXRl ZF9icmVha3BvaW50LT5yZWxhdGVkX2JyZWFrcG9pbnQ7CiArCQkgICAgZnVuY3Rpb24gKHJlbGF0 ZWRfYnJlYWtwb2ludCwgZGF0YSk7CisrCisrCQkgICAgLyogRm9yIGRlbGV0ZV9icmVha3BvaW50 IG9mIHRoZSBsYXN0IGVudHJ5IG9mIHRoZSByaW5nIHdlCisrCQkgICAgICAgd2VyZSB0cmF2ZXJz aW5nIHdlIHdvdWxkIG5ldmVyIGdldCBiYWNrIHRvIEIuICAqLworKwkJICAgIGlmIChuZXh0X3Jl bGF0ZWRfYiA9PSByZWxhdGVkX2JyZWFrcG9pbnQpCisrCQkgICAgICBicmVhazsKICsJCSAgICBy ZWxhdGVkX2JyZWFrcG9pbnQgPSBuZXh0X3JlbGF0ZWRfYjsKICsJCSAgfQogKwkJd2hpbGUgKHJl bGF0ZWRfYnJlYWtwb2ludCAhPSBiKTsKICAJCWJyZWFrOwogIAkgICAgICB9CiAgCSAgaWYgKG1h dGNoID09IDApCi1AQCAtMTE0MjgsNiArMTE2MzIsMjIgQEAgYWxsX3RyYWNlcG9pbnRzICgpCitA QCAtMTE2MDQsNiArMTE3MzcsMjIgQEAgYWxsX3RyYWNlcG9pbnRzICgpCiAgICByZXR1cm4gdHBf dmVjOwogIH0KICAKQEAgLTExMzgsNyArNzQ5LDcgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAx MDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhi cmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQgYXMg YSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTExNDk3LDYgKzExNzE3LDEwNyBA QCBzYXZlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorQEAgLTExNjczLDYgKzEx ODIyLDEwNyBAQCBzYXZlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogICAgaGVs cF9saXN0IChzYXZlX2NtZGxpc3QsICJzYXZlICIsIC0xLCBnZGJfc3Rkb3V0KTsKICB9CiAgCkBA IC0xMjQzLDQ0ICs4NTQsMjAgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICsgIHVw ZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscyk7CiArfQogKwotIHZvaWQKLSBfaW5p dGlhbGl6ZV9icmVha3BvaW50ICh2b2lkKQotIHsKLUBAIC0xMjAyMiw0ICsxMjM0Myw1IEBAIGlu ZmVyaW9yIGluIGFsbC1zdG9wIG1vZGUsIGdkYiBiZWhhdmVzIGFzIGlmIGFsd2F5cy1pbnNlcnRl ZCBtb2RlIGlzIG9mZi4iKSwKKyBzdHJ1Y3QgYnJlYWtwb2ludCAqCisgaXRlcmF0ZV9vdmVyX2Jy ZWFrcG9pbnRzIChpbnQgKCpjYWxsYmFjaykgKHN0cnVjdCBicmVha3BvaW50ICosIHZvaWQgKiks CisgCQkJICB2b2lkICpkYXRhKQorQEAgLTEyMjIyLDQgKzEyNDcyLDUgQEAgaW5mZXJpb3IgaW4g YWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMg b2ZmLiIpLAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9i c2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2Nl ZWQpOwogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90eXBlc19tYXJr X3VzZWQpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFrcG9p bnQuaAotaW5kZXggNmY1ZDA1MC4uZDBjM2NjMSAxMDA2NDQKK2luZGV4IGUzNGMyZDMuLjRhYWRk NTcgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5oCiArKysgYi9nZGIvYnJlYWtwb2ludC5o Ci1AQCAtNTYsNiArNTYsMTMgQEAgZW51bSBicHR5cGUKLSAgICAgYnBfbG9uZ2ptcCwJCQkvKiBz ZWNyZXQgYnJlYWtwb2ludCB0byBmaW5kIGxvbmdqbXAoKSAqLwotICAgICBicF9sb25nam1wX3Jl c3VtZSwJCS8qIHNlY3JldCBicmVha3BvaW50IHRvIGVzY2FwZSBsb25nam1wKCkgKi8KLSAKLSsg ICAgLyogQW4gaW50ZXJuYWwgYnJlYWtwb2ludCB0aGF0IGlzIGluc3RhbGxlZCBvbiB0aGUgdW53 aW5kZXIncwotKyAgICAgICBkZWJ1ZyBob29rLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uLAotKyAg ICAvKiBBbiBpbnRlcm5hbCBicmVha3BvaW50IHRoYXQgaXMgc2V0IGF0IHRoZSBwb2ludCB3aGVy ZSBhbgotKyAgICAgICBleGNlcHRpb24gd2lsbCBsYW5kLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9u X3Jlc3VtZSwKLSsKLSAgICAgLyogVXNlZCBieSB3YWl0X2Zvcl9pbmZlcmlvciBmb3Igc3RlcHBp bmcgb3ZlciBzdWJyb3V0aW5lIGNhbGxzLCBmb3IKLSAgICAgICAgc3RlcHBpbmcgb3ZlciBzaWdu YWwgaGFuZGxlcnMsIGFuZCBmb3Igc2tpcHBpbmcgcHJvbG9ndWVzLiAgKi8KLSAgICAgYnBfc3Rl cF9yZXN1bWUsCi1AQCAtMTI1LDYgKzEzMiw5IEBAIGVudW0gYnB0eXBlCi0gICAgIC8qIE1hc3Rl ciBjb3BpZXMgb2Ygc3RkOjp0ZXJtaW5hdGUgYnJlYWtwb2ludHMuICAqLwotICAgICBicF9zdGRf dGVybWluYXRlX21hc3RlciwKLSAKLSsgICAgLyogTGlrZSBicF9sb25nam1wX21hc3RlciwgYnV0 IGZvciBleGNlcHRpb25zLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uX21hc3RlciwKLSsKLSAgICAg YnBfY2F0Y2hwb2ludCwKLSAKLSAgICAgYnBfdHJhY2Vwb2ludCwKLUBAIC0xMzMsNiArMTQzLDkg QEAgZW51bSBicHR5cGUKK0BAIC0xMzgsNiArMTM4LDkgQEAgZW51bSBicHR5cGUKICAKICAgICAg LyogRXZlbnQgZm9yIEpJVCBjb21waWxlZCBjb2RlIGdlbmVyYXRpb24gb3IgZGVsZXRpb24uICAq LwogICAgICBicF9qaXRfZXZlbnQsCkBAIC0xMjkwLDQxNCArODc3LDMwIEBAIGluZGV4IDZmNWQw NTAuLmQwYzNjYzEgMTAwNjQ0CiAgICB9OwogIAogIC8qIFN0YXRlcyBvZiBlbmFibGVtZW50IG9m IGJyZWFrcG9pbnQuICovCi1AQCAtNjUzLDYgKzY2NiwxMCBAQCBzdHJ1Y3QgYnBzdGF0X3doYXQK LSAgICAgICAgY29udGludWluZyBmcm9tIGEgY2FsbCBkdW1teSB3aXRob3V0IHBvcHBpbmcgdGhl IGZyYW1lIGlzIG5vdCBhCi0gICAgICAgIHVzZWZ1bCBvbmUpLiAgKi8KLSAgICAgZW51bSBzdG9w X3N0YWNrX2tpbmQgY2FsbF9kdW1teTsKLSsKLSsgICAgLyogVXNlZCBmb3IgQlBTVEFUX1dIQVRf U0VUX0xPTkdKTVBfUkVTVU1FLiAgVHJ1ZSBpZiB3ZSBhcmUKLSsgICAgICAgaGFuZGxpbmcgYSBs b25nam1wLCBmYWxzZSBpZiB3ZSBhcmUgaGFuZGxpbmcgYW4gZXhjZXB0aW9uLiAgKi8KLSsgICAg aW50IGlzX2xvbmdqbXA7Ci0gICB9OwotIAotIC8qIFRoZSBwb3NzaWJsZSByZXR1cm4gdmFsdWVz IGZvciBwcmludF9icHN0YXQsIHByaW50X2l0X25vcm1hbCwKIGRpZmYgLS1naXQgYS9nZGIvYy10 eXBlcHJpbnQuYyBiL2dkYi9jLXR5cGVwcmludC5jCi1pbmRleCA5MjZhZTJmLi5hNTliOTY1IDEw MDY0NAoraW5kZXggMDRmODEyNy4uMmUyOWViMiAxMDA2NDQKIC0tLSBhL2dkYi9jLXR5cGVwcmlu dC5jCiArKysgYi9nZGIvYy10eXBlcHJpbnQuYwotQEAgLTU4NSw3ICs1ODUsMTMgQEAgY190eXBl X3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOwotIAotICAgICAgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlsiKTsKLS0gICAgICBpZiAoVFlQRV9MRU5HVEggKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA+IDAKLSsgICAgICBpZiAoVFlQRV9SQU5HRV9EQVRBIChU WVBFX0lOREVYX1RZUEUgKHR5cGUpKS0+aGlnaC5raW5kCi0rCSAgIT0gUkFOR0VfQk9VTkRfS0lO RF9DT05TVEFOVCkKLSsJewotKwkgIC8qIE5vIF8oKSAtIHByaW50ZWQgc291cmNlcyBzaG91bGQg bm90IGJlIGxvY2FsZSBkZXBlbmRlbnQuICAqLwotKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgInZhcmlhYmxlIik7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChUWVBFX0xFTkdUSCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSkpID4gMAotIAkmJiAhVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19V TkRFRklORUQgKHR5cGUpKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsCi0gCQkJ ICAoVFlQRV9MRU5HVEggKHR5cGUpCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5pbiBiL2dkYi9j b25maWcuaW4KLWluZGV4IDFmYzQ1N2QuLmY0Yzg0NmEgMTAwNjQ0Ci0tLS0gYS9nZGIvY29uZmln LmluCi0rKysgYi9nZGIvY29uZmlnLmluCi1AQCAtNTAsMTEgKzUwLDEwIEBACi0gICAgbGFuZ3Vh Z2UgaXMgcmVxdWVzdGVkLiAqLwotICN1bmRlZiBFTkFCTEVfTkxTCi0gCi0tLyogbG9vayBmb3Ig Z2xvYmFsIHNlcGFyYXRlIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoIFtEQVRBRElSL2dkYl0gKi8K LSsvKiBHbG9iYWwgZGlyZWN0b3J5IGZvciBHREIgZGF0YSBmaWxlcy4gKi8KLSAjdW5kZWYgR0RC X0RBVEFESVIKLSAKLS0vKiBEZWZpbmUgaWYgdGhlIGdkYi1kYXRhZGlyIGRpcmVjdG9yeSBzaG91 bGQgYmUgcmVsb2NhdGVkIHdoZW4gR0RCIGlzIG1vdmVkLgotLSAgICovCi0rLyogRGVmaW5lIGlm IEdEQiBkYXRhZGlyIHNob3VsZCBiZSByZWxvY2F0ZWQgd2hlbiBHREIgaXMgbW92ZWQuICovCi0g I3VuZGVmIEdEQl9EQVRBRElSX1JFTE9DQVRBQkxFCi0gCi0gLyogRGVmaW5lIHRvIGJlIGEgc3Ry aW5nIG5hbWluZyB0aGUgZGVmYXVsdCBob3N0IGNoYXJhY3RlciBzZXQuICovCi1AQCAtNzY5LDYg Kzc2OCw5IEBACi0gICAgJ3B0cmRpZmZfdCcuICovCi0gI3VuZGVmIFBUUkRJRkZfVF9TVUZGSVgK LSAKLSsvKiBEZWZpbmUgdG8gaW5zdGFsbCBwYXRoIGZvciBQeXRob24gc291cmNlcyAqLwotKyN1 bmRlZiBQWVRIT05ESVIKLSsKLSAvKiBEZWZpbmUgaWYgdGhlIHB5dGhvbiBkaXJlY3Rvcnkgc2hv dWxkIGJlIHJlbG9jYXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC4gKi8KLSAjdW5kZWYgUFlUSE9OX1BB VEhfUkVMT0NBVEFCTEUKLSAKLWRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZp Z3VyZQotaW5kZXggMDQxZmZjMS4uODI0M2FiYiAxMDA3NTUKLS0tLSBhL2dkYi9jb25maWd1cmUK LSsrKyBiL2dkYi9jb25maWd1cmUKLUBAIC02NzksNiArNjc5LDggQEAgUkVQT1JUX0JVR1NfVE8K LSBQS0dWRVJTSU9OCi0gVEFSR0VUX09CUwotIHN1YmRpcnMKLStweXRob25kaXIKLStHREJfREFU QURJUl9QQVRICi0gR0RCX0RBVEFESVIKLSBERUJVR0RJUgotIGFtX19mYXN0ZGVwQ0NfRkFMU0UK LUBAIC05NDUsNiArOTQ3LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKLSB3aXRoX3Nl cGFyYXRlX2RlYnVnX2RpcgotIHdpdGhfZ2RiX2RhdGFkaXIKLSB3aXRoX3JlbG9jYXRlZF9zb3Vy Y2VzCi0rd2l0aF9weXRob25kaXIKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZk Ci0gZW5hYmxlX2dkYmNsaQotQEAgLTE2NDYsNiArMTY0OSwxMCBAQCBPcHRpb25hbCBQYWNrYWdl czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEQVRBRElSL2dkYl0KLSAgIC0td2l0aC1y ZWxvY2F0ZWQtc291cmNlcz1QQVRICi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0 aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCi0rICAtLXdpdGgtZ2Ri LWRhdGFkaXIgICAgICBsb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGF0YSBmaWxlcyBpbiB0aGlz IHBhdGgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFtEQVRBRElSL2dkYl0KLSsgIC0td2l0 aC1weXRob25kaXIgICAgICAgIGluc3RhbGwgUHl0aG9uIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRo Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGIvcHl0aG9uXQotICAgLS13 aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9y dAotICAgLS13aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0 ZWFkIG9mIHRoZSB0ZXJtY2FwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1A QCAtNzg3OCw2ICs3ODg1LDczIEBAIF9BQ0VPRgotIGZpCi0gCi0gCi0rIyBHREIncyBkYXRhZGly IHJlbG9jYXRpb24KLSsKLStnZGJkYXRhZGlyPSR7ZGF0YWRpcn0vZ2RiCi0rCi0rCi0rIyBDaGVj ayB3aGV0aGVyIC0td2l0aC1nZGItZGF0YWRpciB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRo X2dkYl9kYXRhZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfZ2RiX2Rh dGFkaXI7IGdkYmRhdGFkaXI9IiR7d2l0aHZhbH0iCi0rZmkKLSsKLSsKLSsKLSsgIHRlc3QgIngk cHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgotKyAgdGVzdCAi eCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotKyAgYWNf ZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRnZGJkYXRhZGlyYAotKyAgYWNfZGVmaW5lX2Rpcj1gZXZh bCBlY2hvICRhY19kZWZpbmVfZGlyYAotKwotK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsj ZGVmaW5lIEdEQl9EQVRBRElSICIkYWNfZGVmaW5lX2RpciIKLStfQUNFT0YKLSsKLSsKLSsKLStp ZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FIHx8IHRlc3QgIngkZXhlY19wcmVmaXgiID0g J3gke3ByZWZpeH0nOyB0aGVuCi0rICBpZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgot KyAgICB0ZXN0X3ByZWZpeD0vdXNyL2xvY2FsCi0rICBlbHNlCi0rICAgIHRlc3RfcHJlZml4PSRw cmVmaXgKLSsgIGZpCi0rZWxzZQotKyAgdGVzdF9wcmVmaXg9JGV4ZWNfcHJlZml4Ci0rZmkKLSsK LStjYXNlICR7Z2RiZGF0YWRpcn0gaW4KLSsgICIke3Rlc3RfcHJlZml4fSJ8IiR7dGVzdF9wcmVm aXh9LyIqfFwKLSsgICcke2V4ZWNfcHJlZml4fSd8JyR7ZXhlY19wcmVmaXh9LycqKQotKwotKyRh c19lY2hvICIjZGVmaW5lIEdEQl9EQVRBRElSX1JFTE9DQVRBQkxFIDEiID4+Y29uZmRlZnMuaAot KwotKyAgOzsKLStlc2FjCi0rR0RCX0RBVEFESVJfUEFUSD0ke2dkYmRhdGFkaXJ9Ci0rCi0rCi0r Ci0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1weXRob25kaXIgd2FzIGdpdmVuLgotK2lmIHRlc3Qg IiR7d2l0aF9weXRob25kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9w eXRob25kaXI7IHB5dGhvbmRpcj0iJHt3aXRodmFsfSIKLStlbHNlCi0rICBweXRob25kaXI9bm8K LStmaQotKwotKwotKyMgSWYgdGhlIHVzZXIgcGFzc2VkIGluIGEgcGF0aCwgZGVmaW5lIGl0LiAg T3RoZXJ3aXNlLCBjb21wdXRlIGl0IGF0Ci0rIyBydW50aW1lIGJhc2VkIG9uIHRoZSBwb3NzaWJs eS1yZWxvY2F0YWJsZSBkYXRhZGlyLgotK2lmIHRlc3QgIiRweXRob25kaXIiID0gIm5vIjsgdGhl bgotKyAgcHl0aG9uZGlyPSckKEdEQl9EQVRBRElSX1BBVEgpL3B5dGhvbicKLStlbHNlCi0rCi0r Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgUFlUSE9ORElSICIkcHl0aG9uZGly IgotK19BQ0VPRgotKwotK2ZpCi0rCi0rCi0rCi0gCi0gCi0gc3ViZGlycz0iJHN1YmRpcnMgZG9j IHRlc3RzdWl0ZSIKLUBAIC0xMDkxOSw2ICsxMDk5Myw3IEBAICRhc19lY2hvICIjZGVmaW5lIEhB VkVfUFlUSE9OIDEiID4+Y29uZmRlZnMuaAotICAgQ09ORklHX0RFUFM9IiRDT05GSUdfREVQUyBc JChTVUJESVJfUFlUSE9OX0RFUFMpIgotICAgQ09ORklHX1NSQ1M9IiRDT05GSUdfU1JDUyBcJChT VUJESVJfUFlUSE9OX1NSQ1MpIgotICAgQ09ORklHX0lOU1RBTEw9IiRDT05GSUdfSU5TVEFMTCBp bnN0YWxsLXB5dGhvbiIKLSsgIENPTkZJR19VTklOU1RBTEw9IiRDT05GSUdfVU5JTlNUQUxMIHVu aW5zdGFsbC1weXRob24iCi0gICBFTkFCTEVfQ0ZMQUdTPSIkRU5BQkxFX0NGTEFHUyBcJChTVUJE SVJfUFlUSE9OX0NGTEFHUykiCi0gCi0gICAjIEZsYWdzIG5lZWRlZCB0byBjb21waWxlIFB5dGhv biBjb2RlICh0YWtlbiBmcm9tIHB5dGhvbi1jb25maWcgLS1jZmxhZ3MpLgotZGlmZiAtLWdpdCBh L2dkYi9jb25maWd1cmUuYWMgYi9nZGIvY29uZmlndXJlLmFjCi1pbmRleCBiNjljM2I2Li40ZTg5 NTU4IDEwMDY0NAotLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2RiL2NvbmZpZ3VyZS5h YwotQEAgLTEwOCw2ICsxMDgsNTEgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQt c291cmNlcz1QQVRIXSwgW2F1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXQKLSAgICAgICAg ICAgICAgIFtSZWxvY2F0ZWQgZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMuIF0pCi0gXSkKK0BA IC01NzksNyArNTc5LDEzIEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisgCSAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiKSIpOwogIAotKyMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCi0rCi0rZ2RiZGF0 YWRpcj0ke2RhdGFkaXJ9L2dkYgotKwotK0FDX0FSR19XSVRIKFtnZGItZGF0YWRpcl0sCi0rICBb QVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nZGItZGF0YWRpcl0sCi0rICAgICAgICAgICAgICAgICAg W2xvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFUQURJ Ui9nZGJdXSldLCBbZ2RiZGF0YWRpcj0iJHt3aXRodmFsfSJdKQotKwotK0FDX0RFRklORV9ESVIo R0RCX0RBVEFESVIsIGdkYmRhdGFkaXIsCi0rICAgICAgICAgICAgICBbR2xvYmFsIGRpcmVjdG9y eSBmb3IgR0RCIGRhdGEgZmlsZXMuIF0pCi0rCi0raWYgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4 Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhlbgotKyAgaWYg dGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KLSsgICAgdGVzdF9wcmVmaXg9L3Vzci9sb2Nh bAotKyAgZWxzZQotKyAgICB0ZXN0X3ByZWZpeD0kcHJlZml4Ci0rICBmaQotK2Vsc2UKLSsgIHRl c3RfcHJlZml4PSRleGVjX3ByZWZpeAotK2ZpCi0rCi0rY2FzZSAke2dkYmRhdGFkaXJ9IGluCi0r ICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCi0rICAnJHtleGVjX3ByZWZp eH0nfCcke2V4ZWNfcHJlZml4fS8nKikKLSsgICAgQUNfREVGSU5FKEdEQl9EQVRBRElSX1JFTE9D QVRBQkxFLCAxLCBbRGVmaW5lIGlmIEdEQiBkYXRhZGlyIHNob3VsZCBiZSByZWxvY2F0ZWQgd2hl biBHREIgaXMgbW92ZWQuXSkKLSsgIDs7Ci0rZXNhYwotK0dEQl9EQVRBRElSX1BBVEg9JHtnZGJk YXRhZGlyfQotK0FDX1NVQlNUKEdEQl9EQVRBRElSX1BBVEgpCi0rCi0rQUNfQVJHX1dJVEgoW3B5 dGhvbmRpcl0sCi0rICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1weXRob25kaXJdLAotKyAgICAg ICAgICAgICAgICAgIFtpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFU QURJUi9nZGIvcHl0aG9uXV0pXSwgW3B5dGhvbmRpcj0iJHt3aXRodmFsfSJdLCBbcHl0aG9uZGly PW5vXSkKLSsKLSsjIElmIHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBpdC4gIE90 aGVyd2lzZSwgY29tcHV0ZSBpdCBhdAotKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9zc2libHkt cmVsb2NhdGFibGUgZGF0YWRpci4KLStpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7IHRoZW4K LSsgIHB5dGhvbmRpcj0nJChHREJfREFUQURJUl9QQVRIKS9weXRob24nCi0rZWxzZQotKyAgQUNf REVGSU5FX1VOUVVPVEVEKFBZVEhPTkRJUiwgIiRweXRob25kaXIiLAotKyAgICAgIFtEZWZpbmUg dG8gaW5zdGFsbCBwYXRoIGZvciBQeXRob24gc291cmNlc10pCi0rZmkKLStBQ19TVUJTVChweXRo b25kaXIpCi0rCi0rCi0gQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKLSAKLSAjIENo ZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMK LUBAIC04MzMsNiArODc4LDcgQEAgaWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iICE9IG5vOyB0 aGVuCi0gICBDT05GSUdfREVQUz0iJENPTkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUyki Ci0gICBDT05GSUdfU1JDUz0iJENPTkZJR19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0g ICBDT05GSUdfSU5TVEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgotKyAgQ09O RklHX1VOSU5TVEFMTD0iJENPTkZJR19VTklOU1RBTEwgdW5pbnN0YWxsLXB5dGhvbiIKLSAgIEVO QUJMRV9DRkxBR1M9IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKLSAK LSAgICMgRmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0 aG9uLWNvbmZpZyAtLWNmbGFncykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBi L2dkYi9kb2MvZ2RiLnRleGluZm8KLWluZGV4IDY1ZDQ4OTkuLjk2NzY3YjAgMTAwNjQ0Ci0tLS0g YS9nZGIvZG9jL2dkYi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtMTE2 Miw2ICsxMTYyLDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgotIFJ1biB1c2luZyBAdmFye2Rl dmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCi0gQGMg RklYTUU6IGtpbmdkb24gdGhpbmtzIHRoZXJlIGlzIG1vcmUgdG8gLXR0eS4gIEludmVzdGlnYXRl LgotIAotK0BpdGVtIC1QCi0rQGNpbmRleCBAY29kZXstUH0KLStAaXRlbXggLS1weXRob24KLStA Y2luZGV4IEBjb2Rley0tcHl0aG9ufQotK0NoYW5nZSBpbnRlcnByZXRhdGlvbiBvZiBjb21tYW5k IGxpbmUgc28gdGhhdCB0aGUgYXJndW1lbnQgaW1tZWRpYXRlbHkKLStmb2xsb3dpbmcgdGhpcyBz d2l0Y2ggaXMgdGFrZW4gdG8gYmUgdGhlIG5hbWUgb2YgYSBQeXRob24gc2NyaXB0IGZpbGUuCi0r VGhpcyBvcHRpb24gc3RvcHMgb3B0aW9uIHByb2Nlc3Npbmc7IHN1YnNlcXVlbnQgb3B0aW9ucyBh cmUgcGFzc2VkIHRvCi0rUHl0aG9uIGFzIEBjb2Rle3N5cy5hcmd2fS4gIFRoaXMgb3B0aW9uIGlz IG9ubHkgYXZhaWxhYmxlIGlmIFB5dGhvbgotK3NjcmlwdGluZyBzdXBwb3J0IHdhcyBlbmFibGVk IHdoZW4gQHZhbHVle0dEQk59IHdhcyBjb25maWd1cmVkLgotKwotIEBjIHJlc29sdmUgdGhlIHNp dHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5Ci0gQGl0ZW0gLXR1aQotIEBjaW5kZXggQGNvZGV7 LS10dWl9Ci1AQCAtMTQzMDgsNiArMTQzMTgsNyBAQCBwcm9ncmFtLiAgVG8gZGVidWcgYSBjb3Jl IGR1bXAgb2YgYSBwcmV2aW91cyBydW4sIHlvdSBtdXN0IGFsc28gdGVsbAotIEBtZW51Ci0gKiBG aWxlczo6ICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kcyB0byBzcGVjaWZ5IGZpbGVzCi0g KiBTZXBhcmF0ZSBEZWJ1ZyBGaWxlczo6ICAgICAgICBEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4g c2VwYXJhdGUgZmlsZXMKLSsqIEluZGV4IEZpbGVzOjogICAgICAgICAgICAgICAgIEluZGV4IGZp bGVzIHNwZWVkIHVwIEdEQgotICogU3ltYm9sIEVycm9yczo6ICAgICAgICAgICAgICAgRXJyb3Jz IHJlYWRpbmcgc3ltYm9sIGZpbGVzCi0gKiBEYXRhIEZpbGVzOjogICAgICAgICAgICAgICAgICBH REIgZGF0YSBmaWxlcwotIEBlbmQgbWVudQotQEAgLTE1MTk3LDYgKzE1MjA4LDQ2IEBAIGdudV9k ZWJ1Z2xpbmtfY3JjMzIgKHVuc2lnbmVkIGxvbmcgY3JjLAotIFRoaXMgY29tcHV0YXRpb24gZG9l cyBub3QgYXBwbHkgdG8gdGhlIGBgYnVpbGQgSUQnJyBtZXRob2QuCi0gCi0gCi0rQG5vZGUgSW5k ZXggRmlsZXMKLStAc2VjdGlvbiBJbmRleCBGaWxlcyBTcGVlZCBVcCBAdmFsdWV7R0RCTn0KLStA Y2luZGV4IGluZGV4IGZpbGVzCi0rQGNpbmRleCBAc2FtcHsuZ2RiX2luZGV4fSBzZWN0aW9uCi0r Ci0rV2hlbiBAdmFsdWV7R0RCTn0gZmluZHMgYSBzeW1ib2wgZmlsZSwgaXQgc2NhbnMgdGhlIHN5 bWJvbHMgaW4gdGhlCi0rZmlsZSBpbiBvcmRlciB0byBjb25zdHJ1Y3QgYW4gaW50ZXJuYWwgc3lt Ym9sIHRhYmxlLiAgVGhpcyBsZXRzIG1vc3QKLStAdmFsdWV7R0RCTn0gb3BlcmF0aW9ucyB3b3Jr IHF1aWNrbHktLS1hdCB0aGUgY29zdCBvZiBhIGRlbGF5IGVhcmx5Ci0rb24uICBGb3IgbGFyZ2Ug cHJvZ3JhbXMsIHRoaXMgZGVsYXkgY2FuIGJlIHF1aXRlIGxlbmd0aHksIHNvCi0rQHZhbHVle0dE Qk59IHByb3ZpZGVzIGEgd2F5IHRvIGJ1aWxkIGFuIGluZGV4LCB3aGljaCBzcGVlZHMgdXAKLStz dGFydHVwLgotKwotK1RoZSBpbmRleCBpcyBzdG9yZWQgYXMgYSBzZWN0aW9uIGluIHRoZSBzeW1i b2wgZmlsZS4gIEB2YWx1ZXtHREJOfSBjYW4KLSt3cml0ZSB0aGUgaW5kZXggdG8gYSBmaWxlLCB0 aGVuIHlvdSBjYW4gcHV0IGl0IGludG8gdGhlIHN5bWJvbCBmaWxlCi0rdXNpbmcgQGNvbW1hbmR7 b2JqY29weX0uCi0rCi0rVG8gY3JlYXRlIGFuIGluZGV4IGZpbGUsIHVzZSB0aGUgQGNvZGV7c2F2 ZSBnZGItaW5kZXh9IGNvbW1hbmQ6Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGl0ZW0gc2F2ZSBnZGIt aW5kZXggQHZhcntkaXJlY3Rvcnl9Ci0rQGtpbmRleCBzYXZlIGdkYi1pbmRleAotK0NyZWF0ZSBh biBpbmRleCBmaWxlIGZvciBlYWNoIHN5bWJvbCBmaWxlIGN1cnJlbnRseSBrbm93biBieQotK0B2 YWx1ZXtHREJOfS4gIEVhY2ggZmlsZSBpcyBuYW1lZCBhZnRlciBpdHMgY29ycmVzcG9uZGluZyBz eW1ib2wgZmlsZSwKLSt3aXRoIEBzYW1wey5nZGItaW5kZXh9IGFwcGVuZGVkLCBhbmQgaXMgd3Jp dHRlbiBpbnRvIHRoZSBnaXZlbgotK0B2YXJ7ZGlyZWN0b3J5fS4KLStAZW5kIHRhYmxlCi0rCi0r T25jZSB5b3UgaGF2ZSBjcmVhdGVkIGFuIGluZGV4IGZpbGUgeW91IGNhbiBtZXJnZSBpdCBpbnRv IHlvdXIgc3ltYm9sCi0rZmlsZSwgaGVyZSBuYW1lZCBAZmlsZXtzeW1maWxlfSwgdXNpbmcgQGNv bW1hbmR7b2JqY29weX06Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyQgb2JqY29weSAtLWFkZC1zZWN0 aW9uIC5nZGJfaW5kZXg9c3ltZmlsZS5nZGItaW5kZXggXAotKyAgICAtLXNldC1zZWN0aW9uLWZs YWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgc3ltZmlsZSBzeW1maWxlCi0rQGVuZCBzbWFsbGV4YW1w bGUKLSsKLStUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUgbGltaXRhdGlvbiBvbiBpbmRpY2VzLiAg VGhleSBvbmx5IHdvcmsgd2hlbgotK2ZvciBEV0FSRiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIG5v dCBzdGFicy4gIEFuZCwgdGhleSBkbyBub3QKLStjdXJyZW50bHkgd29yayBmb3IgcHJvZ3JhbXMg dXNpbmcgQWRhLgotKwotKwotIEBub2RlIFN5bWJvbCBFcnJvcnMKLSBAc2VjdGlvbiBFcnJvcnMg UmVhZGluZyBTeW1ib2wgRmlsZXMKLSAKLUBAIC0yMDM0OSw4ICsyMDQwMCw2IEBAIGNvbnRhaW5p bmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUKLSAoQHZhbHVl e0dEQlB9KSBweXRob24KLS1UeXBlIHB5dGhvbiBzY3JpcHQKLS1FbmQgd2l0aCBhIGxpbmUgc2F5 aW5nIGp1c3QgImVuZCIuCi0gPnByaW50IDIzCi0gPmVuZAotIDIzCi1AQCAtMjAzNjMsNiArMjA0 MTIsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2lu ZyBAY29kZXttYWludCBzZXQKLSBweXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29kZXtvbn0sIHRo ZSBkZWZhdWx0LCB0aGVuIFB5dGhvbiBzdGFjawotIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBj b2Rle29mZn0sIHRoZW4gUHl0aG9uIHN0YWNrIHByaW50aW5nIGlzCi0gZGlzYWJsZWQuCi0rCi0r QGtpbmRleCBtYWludCBzZXQgcHl0aG9uIGF1dG8tbG9hZAotK0BpdGVtIG1haW50IHNldCBweXRo b24gYXV0by1sb2FkCi0rQnkgZGVmYXVsdCwgQHZhbHVle0dEQk59IHdpbGwgYXR0ZW1wdCB0byBh dXRvbWF0aWNhbGx5IGxvYWQgUHl0aG9uCi0rY29kZSB3aGVuIGFuIG9iamVjdCBmaWxlIGlzIG9w ZW5lZC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcKLStAY29kZXttYWludCBzZXQgcHl0 aG9uIGF1dG8tbG9hZH06IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4KLStQeXRob24g YXV0by1sb2FkaW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uCi0rYXV0 by1sb2FkaW5nIGlzIGRpc2FibGVkLgotIEBlbmQgdGFibGUKKyAJZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiWyIpOworLQlpZiAoZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3VuZCwg JmhpZ2hfYm91bmQpKQorKwlpZiAoVFlQRV9SQU5HRV9EQVRBIChUWVBFX0lOREVYX1RZUEUgKHR5 cGUpKS0+aGlnaC5raW5kCisrCSAgICAhPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UKQorKwkg IHsKKysJICAgIC8qIE5vIF8oKSAtIHByaW50ZWQgc291cmNlcyBzaG91bGQgbm90IGJlIGxvY2Fs ZSBkZXBlbmRlbnQuICAqLworKwkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAidmFyaWFi bGUiKTsKKysJICB9CisrCWVsc2UgaWYgKGdldF9hcnJheV9ib3VuZHMgKHR5cGUsICZsb3dfYm91 bmQsICZoaWdoX2JvdW5kKSkKKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIChp bnQpIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSkpOworIAlmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJdIik7CiAgCi0gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBleGVjdXRlIGEgUHl0aG9u IHNjcmlwdCBmcm9tIHRoZSBAdmFsdWV7R0RCTn0KLUBAIC0yMDM4NCw2ICsyMDQ0MSwxNCBAQCBh bmQgdGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgotIEBjaW5kZXggcHl0aG9uIGFwaQotIEBjaW5k ZXggcHJvZ3JhbW1pbmcgaW4gcHl0aG9uCi0gCi0rWW91IGNhbiBnZXQgcXVpY2sgb25saW5lIGhl bHAgZm9yIEB2YWx1ZXtHREJOfSdzIFB5dGhvbiBBUEkgYnkgaXNzdWluZwotK3RoZSBjb21tYW5k IEB3e0BrYmR7cHl0aG9uIGhlbHAgKGdkYil9fS4KLSsKLStGdW5jdGlvbnMgYW5kIG1ldGhvZHMg d2hpY2ggaGF2ZSB0d28gb3IgbW9yZSBvcHRpb25hbCBhcmd1bWVudHMgYWxsb3cKLSt0aGVtIHRv IGJlIHNwZWNpZmllZCB1c2luZyBrZXl3b3JkIHN5bnRheC4gIFRoaXMgYWxsb3dzIHBhc3Npbmcg c29tZQotK29wdGlvbmFsIGFyZ3VtZW50cyB3aGlsZSBza2lwcGluZyBvdGhlcnMuICBFeGFtcGxl OgotK0B3e0Bjb2Rle2dkYi5zb21lX2Z1bmN0aW9uICgnZm9vJywgYmFyID0gMSwgYmF6ID0gMil9 fS4KLSsKLSBAY2luZGV4IHB5dGhvbiBzdGRvdXQKLSBAY2luZGV4IHB5dGhvbiBwYWdpbmF0aW9u Ci0gQXQgc3RhcnR1cCwgQHZhbHVle0dEQk59IG92ZXJyaWRlcyBQeXRob24ncyBAY29kZXtzeXMu c3Rkb3V0fSBhbmQKLUBAIC0yMDM5NSw3ICsyMDQ2MCw3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24g QGNvZGV7S2V5Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0gQG1lbnUKLSAq IEJhc2ljIFB5dGhvbjo6ICAgICAgICAgICAgICAgIEJhc2ljIFB5dGhvbiBGdW5jdGlvbnMuCi0g KiBFeGNlcHRpb24gSGFuZGxpbmc6OgotLSogVmFsdWVzIEZyb20gSW5mZXJpb3I6OgotKyogVmFs dWVzIEZyb20gSW5mZXJpb3I6OglQeXRob24gcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzLgotICog VHlwZXMgSW4gUHl0aG9uOjogICAgICAgICAgICAgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHR5 cGVzLgotICogUHJldHR5IFByaW50aW5nIEFQSTo6ICAgICAgICAgUHJldHR5LXByaW50aW5nIHZh bHVlcy4KLSAqIFNlbGVjdGluZyBQcmV0dHktUHJpbnRlcnM6OiAgIEhvdyBHREIgY2hvb3NlcyBh IHByZXR0eS1wcmludGVyLgotQEAgLTIwNDU2LDYgKzIwNTIxLDEyIEBAIFJldHVybiBhIHNlcXVl bmNlIGhvbGRpbmcgYWxsIG9mIEB2YWx1ZXtHREJOfSdzIGJyZWFrcG9pbnRzLgotIEB4cmVme0Jy ZWFrcG9pbnRzIEluIFB5dGhvbn0sIGZvciBtb3JlIGluZm9ybWF0aW9uLgotIEBlbmQgZGVmdW4K LSAKLStAZmluZGV4IGdkYi5icmVha3BvaW50cwotK0BkZWZ1biBicmVha3BvaW50cwotK1JldHVy biBhIHNlcXVlbmNlIGhvbGRpbmcgYWxsIG9mIEB2YWx1ZXtHREJOfSdzIGJyZWFrcG9pbnRzLgot K0B4cmVme0JyZWFrcG9pbnRzIEluIFB5dGhvbn0sIGZvciBtb3JlIGluZm9ybWF0aW9uLgotK0Bl bmQgZGVmdW4KLSsKLSBAZmluZGV4IGdkYi5wYXJhbWV0ZXIKLSBAZGVmdW4gcGFyYW1ldGVyIHBh cmFtZXRlcgotIFJldHVybiB0aGUgdmFsdWUgb2YgYSBAdmFsdWV7R0RCTn0gcGFyYW1ldGVyLiAg QHZhcntwYXJhbWV0ZXJ9IGlzIGEKLUBAIC0yMDQ3Miw2ICsyMDU0Myw3IEBAIGEgUHl0aG9uIHZh bHVlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLCBhbmQgcmV0dXJuZWQuCi0gQGRlZnVuIGhpc3Rv cnkgbnVtYmVyCi0gUmV0dXJuIGEgdmFsdWUgZnJvbSBAdmFsdWV7R0RCTn0ncyB2YWx1ZSBoaXN0 b3J5IChAcHhyZWZ7VmFsdWUKLSBIaXN0b3J5fSkuICBAdmFye251bWJlcn0gaW5kaWNhdGVzIHdo aWNoIGhpc3RvcnkgZWxlbWVudCB0byByZXR1cm4uCi0rCi0gSWYgQHZhcntudW1iZXJ9IGlzIG5l Z2F0aXZlLCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHRha2UgaXRzIGFic29sdXRlIHZhbHVlCi0g YW5kIGNvdW50IGJhY2t3YXJkIGZyb20gdGhlIGxhc3QgZWxlbWVudCAoaS5lLiwgdGhlIG1vc3Qg cmVjZW50IGVsZW1lbnQpIHRvCi0gZmluZCB0aGUgdmFsdWUgdG8gcmV0dXJuLiAgSWYgQHZhcntu dW1iZXJ9IGlzIHplcm8sIHRoZW4gQHZhbHVle0dEQk59IHdpbGwKLUBAIC0yMDQ5Niw2ICsyMDU2 OCwyMSBAQCBjb21wdXRlIHZhbHVlcywgZm9yIGV4YW1wbGUsIGl0IGlzIHRoZSBvbmx5IHdheSB0 byBnZXQgdGhlIHZhbHVlIG9mIGEKLSBjb252ZW5pZW5jZSB2YXJpYWJsZSAoQHB4cmVme0NvbnZl bmllbmNlIFZhcnN9KSBhcyBhIEBjb2Rle2dkYi5WYWx1ZX0uCi0gQGVuZCBkZWZ1bgotIAotK0Bm aW5kZXggZ2RiLnBvc3RfZXZlbnQKLStAZGVmdW4gcG9zdF9ldmVudCBldmVudAotK1B1dCBAdmFy e2V2ZW50fSwgYSBjYWxsYWJsZSBvYmplY3QgdGFraW5nIG5vIGFyZ3VtZW50cywgaW50bwotK0B2 YWx1ZXtHREJOfSdzIGludGVybmFsIGV2ZW50IHF1ZXVlLiAgVGhpcyBjYWxsYWJsZSB3aWxsIGJl IGludm9rZWQgYXQKLStzb21lIGxhdGVyIHBvaW50LCBkdXJpbmcgQHZhbHVle0dEQk59J3MgZXZl bnQgcHJvY2Vzc2luZy4gIEV2ZW50cwotK3Bvc3RlZCB1c2luZyBAY29kZXtwb3N0X2V2ZW50fSB3 aWxsIGJlIHJ1biBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleQotK3dlcmUgcG9zdGVkOyBob3dl dmVyLCB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZXkgd2lsbCBiZQotK3Byb2Nlc3Nl ZCByZWxhdGl2ZSB0byBvdGhlciBldmVudHMgaW5zaWRlIEB2YWx1ZXtHREJOfS4KLSsKLStAdmFs dWV7R0RCTn0gaXMgbm90IHRocmVhZC1zYWZlLiAgSWYgeW91ciBQeXRob24gcHJvZ3JhbSB1c2Vz IG11bHRpcGxlCi0rdGhyZWFkcywgeW91IG11c3QgYmUgY2FyZWZ1bCB0byBvbmx5IGNhbGwgQHZh bHVle0dEQk59LXNwZWNpZmljCi0rZnVuY3Rpb25zIGluIHRoZSBtYWluIEB2YWx1ZXtHREJOfSB0 aHJlYWQuICBAY29kZXtwb3N0X2V2ZW50fSBlbnN1cmVzCi0rdGhpcy4KLStAZW5kIGRlZnVuCi0r Ci0gQGZpbmRleCBnZGIud3JpdGUKLSBAZGVmdW4gd3JpdGUgc3RyaW5nCi0gUHJpbnQgYSBzdHJp bmcgdG8gQHZhbHVle0dEQk59J3MgcGFnaW5hdGVkIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0uCiBk aWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbyBiL2dkYi9kb2MvZ2RiaW50LnRleGlu Zm8KLWluZGV4IDU0MTg3ZGQuLjMyMGI1MDEgMTAwNjQ0CitpbmRleCA0YTExMmFhLi43YjZiZWQ0 IDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGJp bnQudGV4aW5mbwotQEAgLTIxMDIsNiArMjEwMiwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1w dCB0byBoYW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAorQEAgLTIx MDQsNiArMjEwNCwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9s cyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAogIHdlIGNyZWF0ZSBAZGZue3BhcnRpYWwg c3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCiAgc3ltYm9scywgYW5k IG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4gbmVjZXNzYXJ5Lgog IApAQCAtMTcxNiw3ICs5MTksNyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBz ZWN0aW9uIFN5bWJvbCBSZWFkaW5nCiAgCiAgQGNpbmRleCBzeW1ib2wgcmVhZGluZwotQEAgLTIx OTQsNiArMjIwNiw3IEBAIHN5bXRhYi4gIFVwb24gcmV0dXJuLCBAY29kZXtwc3QtPnJlYWRpbn0g c2hvdWxkIGhhdmUgYmVlbiBzZXQgdG8gMSwgYW5kCitAQCAtMjE5Niw2ICsyMjA4LDcgQEAgc3lt dGFiLiAgVXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91bGQgaGF2ZSBiZWVuIHNl dCB0byAxLCBhbmQKICB6ZXJvIGlmIHRoZXJlIHdlcmUgbm8gc3ltYm9scyBpbiB0aGF0IHBhcnQg b2YgdGhlIHN5bWJvbCBmaWxlLgogIEBlbmQgdGFibGUKICAKQEAgLTE3MjQsNyArOTI3LDcgQEAg aW5kZXggNTQxODdkZC4uMzIwYjUwMSAxMDA2NDQKICBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBU YWJsZXMKICAKICBAdmFsdWV7R0RCTn0gaGFzIHRocmVlIHR5cGVzIG9mIHN5bWJvbCB0YWJsZXM6 Ci1AQCAtMjI5NSw2ICsyMzA4LDcgQEAgYW5kIHBhcnRpYWwgc3ltYm9sIHRhYmxlcyBiZWhpbmQg YSBzZXQgb2YgZnVuY3Rpb24gcG9pbnRlcnMga25vd24gYXMKK0BAIC0yMjk3LDYgKzIzMTAsNyBA QCBhbmQgcGFydGlhbCBzeW1ib2wgdGFibGVzIGJlaGluZCBhIHNldCBvZiBmdW5jdGlvbiBwb2lu dGVycyBrbm93biBhcwogIHRoZSBAZGZue3F1aWNrIHN5bWJvbCBmdW5jdGlvbnN9LiAgVGhlc2Ug YXJlIGRvY3VtZW50ZWQgaW4KICBAZmlsZXtzeW1maWxlLmh9LgogIApAQCAtMTczMiw3ICs5MzUs NyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBzZWN0aW9uIFR5cGVzCiAgCiAg QHVubnVtYmVyZWRzdWJzZWMgRnVuZGFtZW50YWwgVHlwZXMgKGUuZy4sIEBjb2Rle0ZUX1ZPSUR9 LCBAY29kZXtGVF9CT09MRUFOfSkuCi1AQCAtMjMxNyw2ICsyMzMxLDcgQEAgdHlwZXMgbWFwIHRv IG9uZSBAY29kZXtUWVBFX0NPREVfKn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CitA QCAtMjMxOSw2ICsyMzMzLDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBAY29kZXtUWVBFX0NPREVfKn0g dHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CiAgb3RoZXIgbWVtYmVycyBvZiB0aGUgdHlw ZSBzdHJ1Y3QsIHN1Y2ggYXMgd2hldGhlciB0aGUgdHlwZSBpcyBzaWduZWQKICBvciB1bnNpZ25l ZCwgYW5kIGhvdyBtYW55IGJpdHMgaXQgdXNlcy4KICAKQEAgLTE3NDAsNyArOTQzLDcgQEAgaW5k ZXggNTQxODdkZC4uMzIwYjUwMSAxMDA2NDQKICBAdW5udW1iZXJlZHN1YnNlYyBCdWlsdGluIFR5 cGVzIChlLmcuLCBAY29kZXtidWlsdGluX3R5cGVfdm9pZH0sIEBjb2Rle2J1aWx0aW5fdHlwZV9j aGFyfSkuCiAgCiAgVGhlc2UgYXJlIGluc3RhbmNlcyBvZiB0eXBlIHN0cnVjdHMgdGhhdCByb3Vn aGx5IGNvcnJlc3BvbmQgdG8KLUBAIC0yMzMxLDYgKzIzNDYsNyBAQCBvbmx5IG9uZSBpbnN0YW5j ZSBleGlzdHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQorQEAgLTIzMzMs NiArMjM0OCw3IEBAIG9ubHkgb25lIGluc3RhbmNlIGV4aXN0cywgd2hpbGUgQGZpbGV7Yy1sYW5n LmN9IGJ1aWxkcyBhcyBtYW55CiAgQGNvZGV7VFlQRV9DT0RFX0lOVH0gdHlwZXMgYXMgbmVlZGVk LCB3aXRoIGVhY2ggb25lIGFzc29jaWF0ZWQgd2l0aAogIHNvbWUgcGFydGljdWxhciBvYmpmaWxl LgogIApAQCAtMTc0OCw3ICs5NTEsNyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAog IEBzZWN0aW9uIE9iamVjdCBGaWxlIEZvcm1hdHMKICBAY2luZGV4IG9iamVjdCBmaWxlIGZvcm1h dHMKICAKLUBAIC0yNDE2LDYgKzI0MzIsNyBAQCBTT00sIHdoaWNoIGlzIGEgY3Jvc3MtbGFuZ3Vh Z2UgQUJJKS4KK0BAIC0yNDE4LDYgKzI0MzQsNyBAQCBTT00sIHdoaWNoIGlzIGEgY3Jvc3MtbGFu Z3VhZ2UgQUJJKS4KICAKICBUaGUgU09NIHJlYWRlciBpcyBpbiBAZmlsZXtzb21yZWFkLmN9Lgog IApAQCAtMTc1Niw3ICs5NTksNyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBz ZWN0aW9uIERlYnVnZ2luZyBGaWxlIEZvcm1hdHMKICAKICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVz IGNoYXJhY3RlcmlzdGljcyBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAotQEAgLTI0ODcs NiArMjUwNCw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgor QEAgLTI0ODksNiArMjUwNiw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBE V0FSRiAyLgogIEBjaW5kZXggU09NIGRlYnVnZ2luZyBpbmZvCiAgTGlrZSBDT0ZGLCB0aGUgU09N IGRlZmluaXRpb24gaW5jbHVkZXMgZGVidWdnaW5nIGluZm9ybWF0aW9uLgogIApAQCAtMTc2NCw3 ICs5NjcsNyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBzZWN0aW9uIEFkZGlu ZyBhIE5ldyBTeW1ib2wgUmVhZGVyIHRvIEB2YWx1ZXtHREJOfQogIAogIEBjaW5kZXggYWRkaW5n IGRlYnVnZ2luZyBpbmZvIHJlYWRlcgotQEAgLTI1MDksNiArMjUyNyw3IEBAIHdpbGwgb25seSBl dmVyIGJlIGltcGxlbWVudGVkIGJ5IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxl ZAorQEAgLTI1MTEsNiArMjUyOSw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxlbWVudGVkIGJ5 IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAogIGRpcmVjdGx5LiAgVGhpcyBp bnRlcmZhY2Ugc2hvdWxkIGJlIGRlc2NyaWJlZCBpbiBhIGZpbGUKICBAZmlsZXtiZmQvbGliQHZh cnt4eXp9Lmh9LCB3aGljaCBpcyBpbmNsdWRlZCBieSBAdmFsdWV7R0RCTn0uCiAgCkBAIC0xNzcy LDcgKzk3NSw3IEBAIGluZGV4IDU0MTg3ZGQuLjMyMGI1MDEgMTAwNjQ0CiAgQHNlY3Rpb24gTWVt b3J5IE1hbmFnZW1lbnQgZm9yIFN5bWJvbCBGaWxlcwogIAogIE1vc3QgbWVtb3J5IGFzc29jaWF0 ZWQgd2l0aCBhIGxvYWRlZCBzeW1ib2wgZmlsZSBpcyBzdG9yZWQgb24KLUBAIC0yNTIwLDEwICsy NTM5LDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQgb3IgcmVsb2Fk ZWQuICBUaGVyZWZvcmUgb25lCitAQCAtMjUyMiwxMCArMjU0MSw0NSBAQCByZWxlYXNlZCB3aGVu IHRoZSBvYmpmaWxlIGlzIHVubG9hZGVkIG9yIHJlbG9hZGVkLiAgVGhlcmVmb3JlIG9uZQogIG9i amZpbGUgbXVzdCBub3QgcmVmZXJlbmNlIHN5bWJvbCBvciB0eXBlIGRhdGEgZnJvbSBhbm90aGVy IG9iamZpbGU7CiAgdGhleSBjb3VsZCBiZSB1bmxvYWRlZCBhdCBkaWZmZXJlbnQgdGltZXMuCiAg CkBAIC0xODc4LDIzICsxMDgxLDEwIEBAIGluZGV4IDYxYjhmMDAuLmQ5NGMwM2MgMTAwNjQ0CiAg ICAvKiBUaGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vyc2lvbiwgdmlh IERXX09QX2NhbGwqLAogICAgICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2JqZWN0X2FkZHJl c3MsIGV0Yy4sIGFuZCB0aGUgbWF4aW11bQogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBi L2dkYi9kd2FyZjJsb2MuYwotaW5kZXggZjU5YmM0MC4uN2ZmMGVmOSAxMDA2NDQKK2luZGV4IGIy YWVjZjIuLmFmYzc5MDcgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsrKyBiL2dkYi9k d2FyZjJsb2MuYwotQEAgLTQ4LDYgKzQ4LDEyIEBAIHN0YXRpYyB2b2lkCi0gZHdhcmZfZXhwcl9m cmFtZV9iYXNlXzEgKHN0cnVjdCBzeW1ib2wgKmZyYW1lZnVuYywgQ09SRV9BRERSIHBjLAotIAkJ CSBjb25zdCBnZGJfYnl0ZSAqKnN0YXJ0LCBzaXplX3QgKmxlbmd0aCk7Ci0gCi0rc3RhdGljIHN0 cnVjdCB2YWx1ZSAqZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwK LSsJCQkJCSAgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCQkgICAgICAgY29u c3QgZ2RiX2J5dGUgKmRhdGEsCi0rCQkJCQkgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZSwKLSsJ CQkJCSAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KTsKLSsKLSAvKiBBIGhl bHBlciBmdW5jdGlvbiBmb3IgZGVhbGluZyB3aXRoIGxvY2F0aW9uIGxpc3RzLiAgR2l2ZW4gYQot ICAgIHN5bWJvbCBiYXRvbiAoQkFUT04pIGFuZCBhIHBjIHZhbHVlIChQQyksIGZpbmQgdGhlIGFw cHJvcHJpYXRlCi0gICAgbG9jYXRpb24gZXhwcmVzc2lvbiwgc2V0ICpMT0NFWFBSX0xFTkdUSCwg YW5kIHJldHVybiBhIHBvaW50ZXIKLUBAIC0xMjcsNiArMTMzLDkgQEAgc3RydWN0IGR3YXJmX2V4 cHJfYmF0b24KK0BAIC0xMjcsNiArMTI3LDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KICB7 CiAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7CiAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpwZXJfY3U7CkBAIC0xOTA0LDcgKzEwOTQsNyBAQCBpbmRleCBmNTliYzQwLi43ZmYwZWY5 IDEwMDY0NAogIH07CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9ucyBmb3IgZHdhcmYyX2V2YWx1YXRl X2xvY19kZXNjLiAgKi8KLUBAIC0xOTUsMjMgKzIwNCwzMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jh c2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCitAQCAtMTk1LDIz ICsxOTgsMzMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVjdCBzeW1ib2wgKmZyYW1l ZnVuYywgQ09SRV9BRERSIHBjLAogICAgICAgIHN5bWJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JB VE9OIChmcmFtZWZ1bmMpOwogICAgICAgICpzdGFydCA9IGZpbmRfbG9jYXRpb25fZXhwcmVzc2lv biAoc3ltYmF0b24sIGxlbmd0aCwgcGMpOwogICAgICB9CkBAIC0xOTQ3LDcgKzExMzcsNyBAQCBp bmRleCBmNTliYzQwLi43ZmYwZWY5IDEwMDY0NAogIH0KICAKICAvKiBIZWxwZXIgZnVuY3Rpb24g Zm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gIENvbXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAt MjYzLDYgKzI4MiwxNTggQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhw cl9jb250ZXh0ICpjdHgsIHNpemVfdCBkaWVfb2Zmc2V0KQorQEAgLTI2Myw2ICsyNzYsMTU4IEBA IGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBz aXplX3QgZGllX29mZnNldCkKICAgIHJldHVybiBwZXJfY3VfZHdhcmZfY2FsbCAoY3R4LCBkaWVf b2Zmc2V0LCBkZWJhdG9uLT5wZXJfY3UpOwogIH0KICAKQEAgLTIxMDYsNyArMTI5Niw3IEBAIGlu ZGV4IGY1OWJjNDAuLjdmZjBlZjkgMTAwNjQ0CiAgc3RydWN0IHBpZWNlX2Nsb3N1cmUKICB7CiAg ICAvKiBSZWZlcmVuY2UgY291bnQuICAqLwotQEAgLTg4NywxMCArMTA1OCw4IEBAIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKK0BAIC04ODcsMTAgKzEwNTIsOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCQkJICBzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCiAgewogICAgc3RydWN0IHZhbHVlICpyZXR2YWw7 CkBAIC0yMTE4LDcgKzEzMDgsNyBAQCBpbmRleCBmNTliYzQwLi43ZmYwZWY5IDEwMDY0NAogIAog ICAgaWYgKHNpemUgPT0gMCkKICAgICAgewotQEAgLTkwMCwyNCArMTA2OSw4IEBAIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKK0BAIC05MDAsMjQgKzEwNjMsOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgICAgICAgcmV0dXJu IHJldHZhbDsKICAgICAgfQogIApAQCAtMjE0NCw3ICsxMzM0LDcgQEAgaW5kZXggZjU5YmM0MC4u N2ZmMGVmOSAxMDA2NDQKICAgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQogICAgICB7CiAgICAg ICAgc3RydWN0IHBpZWNlX2Nsb3N1cmUgKmM7Ci1AQCAtOTUxLDYgKzExMDQsMTEgQEAgZHdhcmYy X2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLAorQEAgLTk1MSw2ICsxMDk4LDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJICAgIENPUkVf QUREUiBhZGRyZXNzID0gZHdhcmZfZXhwcl9mZXRjaF9hZGRyZXNzIChjdHgsIDApOwogIAkgICAg aW50IGluX3N0YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5IChj dHgsIDApOwogIApAQCAtMjE1Niw3ICsxMzQ2LDcgQEAgaW5kZXggZjU5YmM0MC4uN2ZmMGVmOSAx MDA2NDQKICAJICAgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICAJICAgIFZBTFVF X0xWQUwgKHJldHZhbCkgPSBsdmFsX21lbW9yeTsKICAJICAgIHNldF92YWx1ZV9sYXp5IChyZXR2 YWwsIDEpOwotQEAgLTI1OTAsMTEgKzI3NDgsNTEgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9y ZWYgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAt MjU4NywxMSArMjczOSw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5 bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkgZGxiYXRvbi0+cGVy X2N1KTsKICB9CiAgCkBAIC0yMjExLDEwICsxNDAxLDEwIEBAIGluZGV4IGY1OWJjNDAuLjdmZjBl ZjkgMTAwNjQ0CiArICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgogK307CiBkaWZmIC0tZ2l0 IGEvZ2RiL2R3YXJmMmxvYy5oIGIvZ2RiL2R3YXJmMmxvYy5oCi1pbmRleCA4MjZiYzQ1Li4xZTdk OGRjIDEwMDY0NAoraW5kZXggYTJjZmU3Zi4uZjJkMDdlZiAxMDA2NDQKIC0tLSBhL2dkYi9kd2Fy ZjJsb2MuaAogKysrIGIvZ2RiL2R3YXJmMmxvYy5oCi1AQCAtODYsNSArODYsMTQgQEAgc3RydWN0 IGR3YXJmMl9sb2NsaXN0X2JhdG9uCitAQCAtOTYsNSArOTYsMTQgQEAgc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uCiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3Bz IGR3YXJmMl9sb2NleHByX2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1 dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jczsKQEAgLTIyMzAsMTQyICsxNDIwLDEwIEBAIGlu ZGV4IDgyNmJjNDUuLjFlN2Q4ZGMgMTAwNjQ0CiAgCiAgI2VuZGlmIC8qIGR3YXJmMmxvYy5oICov CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4 IDFlNzUyMzUuLmQ1NGUyNjYgMTAwNjQ0CitpbmRleCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAog LS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTUxLDYg KzUxLDkgQEAKLSAjaW5jbHVkZSAidHlwZXByaW50LmgiCi0gI2luY2x1ZGUgImp2LWxhbmcuaCIK LSAjaW5jbHVkZSAicHN5bXByaXYuaCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNs dWRlICJnZGJfc3RhdC5oIgotKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKLSAKLSAjaW5jbHVkZSA8 ZmNudGwuaD4KLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEyOSw2ICsxMzIsMzMgQEAg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8KLSAgIGludCByZWFkaW47Ci0gfTsKLSAKLSsvKiBB bGwgb2Zmc2V0cyBpbiB0aGUgaW5kZXggYXJlIG9mIHRoaXMgdHlwZS4gIEl0IG11c3QgYmUKLSsg ICBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQuICAqLwotK3R5cGVkZWYgdWludDMyX3Qgb2Zmc2V0 X3R5cGU7Ci0rCi0rREVGX1ZFQ19JIChvZmZzZXRfdHlwZSk7Ci0rCi0rLyogQSBkZXNjcmlwdGlv biBvZiB0aGUgbWFwcGVkIGluZGV4LiAgVGhlIGZpbGUgZm9ybWF0IGlzIGRlc2NyaWJlZCBpbgot KyAgIGEgY29tbWVudCBieSB0aGUgY29kZSB0aGF0IHdyaXRlcyB0aGUgaW5kZXguICAqLwotK3N0 cnVjdCBtYXBwZWRfaW5kZXgKLSt7Ci0rICAvKiBUaGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBidWZm ZXIuICAqLwotKyAgb2ZmX3QgdG90YWxfc2l6ZTsKLSsgIC8qIEEgcG9pbnRlciB0byB0aGUgYWRk cmVzcyB0YWJsZSBkYXRhLiAgKi8KLSsgIGNvbnN0IGdkYl9ieXRlICphZGRyZXNzX3RhYmxlOwot KyAgLyogU2l6ZSBvZiB0aGUgYWRkcmVzcyB0YWJsZSBkYXRhIGluIGJ5dGVzLiAgKi8KLSsgIG9m ZnNldF90eXBlIGFkZHJlc3NfdGFibGVfc2l6ZTsKLSsgIC8qIFRoZSBoYXNoIHRhYmxlLiAgKi8K LSsgIGNvbnN0IG9mZnNldF90eXBlICppbmRleF90YWJsZTsKLSsgIC8qIFNpemUgaW4gc2xvdHMs IGVhY2ggc2xvdCBpcyAyIG9mZnNldF90eXBlcy4gICovCi0rICBvZmZzZXRfdHlwZSBpbmRleF90 YWJsZV9zbG90czsKLSsgIC8qIEEgcG9pbnRlciB0byB0aGUgY29uc3RhbnQgcG9vbC4gICovCi0r ICBjb25zdCBjaGFyICpjb25zdGFudF9wb29sOwotK307Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpkd2FyZjJfcGVyX2N1X2RhdGFfcHRyOwotK0RFRl9WRUNfUCAoZHdh cmYyX3Blcl9jdV9kYXRhX3B0cik7Ci0rCi0gc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQotIHsK LSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGluZm87Ci1AQCAtMTQxLDYgKzE3MSw3IEBA IHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZv IHR5cGVzOwotICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gZnJhbWU7Ci0gICBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyBlaF9mcmFtZTsKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvIGdkYl9pbmRleDsKLSAKLSAgIC8qIEJhY2sgbGluay4gICovCi0gICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZTsKLUBAIC0xNjMsNiArMTk0LDEyIEBAIHN0cnVjdCBkd2FyZjJfcGVyX29iamZp bGUKLSAgIC8qIEEgZmxhZyBpbmRpY2F0aW5nIHdldGhlciB0aGlzIG9iamZpbGUgaGFzIGEgc2Vj dGlvbiBsb2FkZWQgYXQgYQotICAgICAgVk1BIG9mIDAuICAqLwotICAgaW50IGhhc19zZWN0aW9u X2F0X3plcm87Ci0rCi0rICAvKiBUcnVlIGlmIHdlIGFyZSB1c2luZyB0aGUgbWFwcGVkIGluZGV4 LiAgKi8KLSsgIHVuc2lnbmVkIGNoYXIgdXNpbmdfaW5kZXg7Ci0rCi0rICAvKiBUaGUgbWFwcGVk IGluZGV4LiAgKi8KLSsgIHN0cnVjdCBtYXBwZWRfaW5kZXggKmluZGV4X3RhYmxlOwotIH07Ci0g Ci0gc3RhdGljIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmR3YXJmMl9wZXJfb2JqZmlsZTsK LUBAIC0xODIsNiArMjE5LDcgQEAgc3RhdGljIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmR3 YXJmMl9wZXJfb2JqZmlsZTsKLSAjZGVmaW5lIFRZUEVTX1NFQ1RJT04gICAgImRlYnVnX3R5cGVz IgotICNkZWZpbmUgRlJBTUVfU0VDVElPTiAgICAiZGVidWdfZnJhbWUiCi0gI2RlZmluZSBFSF9G UkFNRV9TRUNUSU9OICJlaF9mcmFtZSIKLSsjZGVmaW5lIEdEQl9JTkRFWF9TRUNUSU9OICJnZGJf aW5kZXgiCi0gCi0gLyogbG9jYWwgZGF0YSB0eXBlcyAqLwotIAotQEAgLTMwNyw2ICszNDUsMzIg QEAgc3RydWN0IGR3YXJmMl9jdQotICAgdW5zaWduZWQgaW50IGhhc19uYW1lc3BhY2VfaW5mbyA6 IDE7Ci0gfTsKLSAKLSsvKiBXaGVuIHVzaW5nIHRoZSBpbmRleCAoYW5kIHRodXMgbm90IHVzaW5n IHBzeW10YWJzKSwgZWFjaCBDVSBoYXMgYW4KLSsgICBvYmplY3Qgb2YgdGhpcyB0eXBlLiAgVGhp cyBpcyB1c2VkIHRvIGhvbGQgaW5mb3JtYXRpb24gbmVlZGVkIGJ5Ci0rICAgdGhlIHZhcmlvdXMg InF1aWNrIiBtZXRob2RzLiAgKi8KLStzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9xdWlja19kYXRhCi0r ewotKyAgLyogVGhlIGxpbmUgdGFibGUuICBUaGlzIGNhbiBiZSBOVUxMIGlmIHRoZXJlIHdhcyBu byBsaW5lIHRhYmxlLiAgKi8KLSsgIHN0cnVjdCBsaW5lX2hlYWRlciAqbGluZXM7Ci0rCi0rICAv KiBUaGUgZmlsZSBuYW1lcyBmcm9tIHRoZSBsaW5lIHRhYmxlLiAgKi8KLSsgIGNvbnN0IGNoYXIg KipmaWxlX25hbWVzOwotKyAgLyogVGhlIGZpbGUgbmFtZXMgZnJvbSB0aGUgbGluZSB0YWJsZSBh ZnRlciBiZWluZyBydW4gdGhyb3VnaAotKyAgICAgZ2RiX3JlYWxwYXRoLiAgKi8KLSsgIGNvbnN0 IGNoYXIgKipmdWxsX25hbWVzOwotKwotKyAgLyogVGhlIGNvcnJlc3BvbmRpbmcgc3ltYm9sIHRh YmxlLiAgVGhpcyBpcyBOVUxMIGlmIHN5bWJvbHMgZm9yIHRoaXMKLSsgICAgIENVIGhhdmUgbm90 IHlldCBiZWVuIHJlYWQuICAqLwotKyAgc3RydWN0IHN5bXRhYiAqc3ltdGFiOwotKwotKyAgLyog QSB0ZW1wb3JhcnkgbWFyayBiaXQgdXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIGFsbCBDVXMgaW4K LSsgICAgIGV4cGFuZF9zeW10YWJzX21hdGNoaW5nLiAgKi8KLSsgIHVuc2lnbmVkIGludCBtYXJr IDogMTsKLSsKLSsgIC8qIFRydWUgaWYgd2UndmUgdHJpZWQgdG8gcmVhZCB0aGUgbGluZSB0YWJs ZS4gICovCi0rICB1bnNpZ25lZCBpbnQgcmVhZF9saW5lcyA6IDE7Ci0rfTsKLSsKLSAvKiBQZXJz aXN0ZW50IGRhdGEgaGVsZCBmb3IgYSBjb21waWxhdGlvbiB1bml0LCBldmVuIHdoZW4gbm90Ci0g ICAgcHJvY2Vzc2luZyBpdC4gIFdlIHB1dCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUgaW4g dGhlCi0gICAgcmVhZF9zeW10YWJfcHJpdmF0ZSBmaWVsZCBvZiB0aGUgcHN5bXRhYi4gIElmIHdl IGVuY291bnRlcgotQEAgLTM0NywxMCArNDExLDIxIEBAIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEKLSAgICAgIGl0LiAgKi8KLSAgIGh0YWJfdCB0eXBlX2hhc2g7Ci0gCi0tICAvKiBUaGUgcGFy dGlhbCBzeW1ib2wgdGFibGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcGlsYXRpb24gdW5pdCwK LS0gICAgIG9yIE5VTEwgZm9yIHBhcnRpYWwgdW5pdHMgKHdoaWNoIGRvIG5vdCBoYXZlIGFuIGFz c29jaWF0ZWQKLS0gICAgIHN5bXRhYikuICAqLwotLSAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpw c3ltdGFiOwotKyAgLyogVGhlIGNvcnJlc3BvbmRpbmcgb2JqZmlsZS4gICovCi0rICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZTsKLSsKLSsgIC8qIFdoZW4gdXNpbmcgcGFydGlhbCBzeW1ib2wgdGFi bGVzLCB0aGUgJ3BzeW10YWInIGZpZWxkIGlzIGFjdGl2ZS4KLSsgICAgIE90aGVyd2lzZSB0aGUg J3F1aWNrJyBmaWVsZCBpcyBhY3RpdmUuICAqLwotKyAgdW5pb24KLSsgIHsKLSsgICAgLyogVGhl IHBhcnRpYWwgc3ltYm9sIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXBpbGF0aW9uIHVu aXQsCi0rICAgICAgIG9yIE5VTEwgZm9yIHBhcnRpYWwgdW5pdHMgKHdoaWNoIGRvIG5vdCBoYXZl IGFuIGFzc29jaWF0ZWQKLSsgICAgICAgc3ltdGFiKS4gICovCi0rICAgIHN0cnVjdCBwYXJ0aWFs X3N5bXRhYiAqcHN5bXRhYjsKLSsKLSsgICAgLyogRGF0YSBuZWVkZWQgYnkgdGhlICJxdWljayIg ZnVuY3Rpb25zLiAgKi8KLSsgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSAqcXVp Y2s7Ci0rICB9IHY7Ci0gfTsKLSAKLSAvKiBFbnRyeSBpbiB0aGUgc2lnbmF0dXJlZF90eXBlcyBo YXNoIHRhYmxlLiAgKi8KLUBAIC0xMDgzLDYgKzExNTgsOSBAQCBzdGF0aWMgaW50IGF0dHJfZm9y bV9pc19zZWN0aW9uX29mZnNldCAoc3RydWN0IGF0dHJpYnV0ZSAqKTsKK0BAIC0xMjIxLDYgKzEy MjEsOSBAQCBzdGF0aWMgaW50IGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoc3RydWN0IGF0 dHJpYnV0ZSAqKTsKICAKICBzdGF0aWMgaW50IGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0 IGF0dHJpYnV0ZSAqKTsKICAKQEAgLTIzNzUsNyArMTQzMyw3IEBAIGluZGV4IDFlNzUyMzUuLmQ1 NGUyNjYgMTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChz dHJ1Y3QgYXR0cmlidXRlICphdHRyLAogIAkJCQkJIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAJCQkJ CSBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci1AQCAtMTExMyw2ICsxMTkxLDkgQEAgc3RhdGljIHZv aWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKK0BAIC0xMjUxLDYgKzEyNTQsOSBAQCBz dGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAogIHN0YXRpYyB2b2lk IGZyZWVfb25lX2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKik7CiAgCkBAIC0yMzg1LDc2NjkgKzE0 NDMsMzUyOSBAQCBpbmRleCAxZTc1MjM1Li5kNTRlMjY2IDEwMDY0NAogIHN0YXRpYyBzdHJ1Y3Qg dHlwZSAqc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKICAJ CQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICopOwogIAotQEAgLTExMzIsNiArMTIxMyw1NiBAQCBzdGF0 aWMgdm9pZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7 CitAQCAtMTI3NSw2ICsxMjgxLDkgQEAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGVf YXRfb2Zmc2V0ICh1bnNpZ25lZCBpbnQsCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGll X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCiAr c3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmYyX2F0dHJfdG9fbG9jZXhw cl9iYXRvbgogKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KTsKICsKLStzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9xdWV1ZSAodm9pZCAqZHVtbXkpOwot KwotK3N0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1LAotKwkJCSAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotKwotK3N0YXRp YyB2b2lkIHByb2Nlc3NfcXVldWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSsKLStzdGF0 aWMgdm9pZCBmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoc3RydWN0IGRpZV9pbmZvICpkaWUsCi0r CQkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UsCi0rCQkJCSAgICAgY2hhciAqKm5hbWUsIGNo YXIgKipjb21wX2Rpcik7Ci0rCi0rc3RhdGljIGNoYXIgKmZpbGVfZnVsbF9uYW1lIChpbnQgZmls ZSwgc3RydWN0IGxpbmVfaGVhZGVyICpsaCwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKmNvbXBfZGly KTsKLSsKLStzdGF0aWMgZ2RiX2J5dGUgKnBhcnRpYWxfcmVhZF9jb21wX3VuaXRfaGVhZCAoc3Ry dWN0IGNvbXBfdW5pdF9oZWFkICpoZWFkZXIsCi0rCQkJCQkgICAgICBnZGJfYnl0ZSAqaW5mb19w dHIsCi0rCQkJCQkgICAgICBnZGJfYnl0ZSAqYnVmZmVyLAotKwkJCQkJICAgICAgdW5zaWduZWQg aW50IGJ1ZmZlcl9zaXplLAotKwkJCQkJICAgICAgYmZkICphYmZkKTsKLSsKLStzdGF0aWMgdm9p ZCBpbml0X2N1X2RpZV9yZWFkZXIgKHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCi0r CQkJCXN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKyBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9x dWV1ZSAodm9pZCAqZHVtbXkpOworIAorIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAorQEAgLTcxMTIsNiArNzEyMSwyOSBAQCBw cm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCisgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOworIH0KKyAK KysvKiBDcmVhdGUgYSBuZXcgYXJyYXkgZGltZW5zaW9uIHJlZmVyZW5jaW5nIGl0cyB0YXJnZXQg dHlwZSBUWVBFLgogKwotKyNpZiBXT1JEU19CSUdFTkRJQU4KKysgICBNdWx0aWRpbWVuc2lvbmFs IGFycmF5cyBhcmUgaW50ZXJuYWxseSByZXByZXNlbnRlZCBhcyBhIHN0YWNrIG9mCisrICAgc2lu Z2xlZGltZW5zaW9uYWwgYXJyYXlzIGJlaW5nIHJlZmVyZW5jZWQgYnkgdGhlaXIgVFlQRV9UQVJH RVRfVFlQRS4gICovCiArCi0rLyogQ29udmVydCBWQUxVRSBiZXR3ZWVuIGJpZy0gYW5kIGxpdHRs ZS1lbmRpYW4uICAqLwotK3N0YXRpYyBvZmZzZXRfdHlwZQotK2J5dGVfc3dhcCAob2Zmc2V0X3R5 cGUgdmFsdWUpCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKytjcmVhdGVfc2luZ2xlX2FycmF5X2Rp bWVuc2lvbiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJ CSAgICAgICBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiArewot KyAgb2Zmc2V0X3R5cGUgcmVzdWx0OwotKwotKyAgcmVzdWx0ID0gKHZhbHVlICYgMHhmZikgPDwg MjQ7Ci0rICByZXN1bHQgfD0gKHZhbHVlICYgMHhmZjAwKSA8PCA4OwotKyAgcmVzdWx0IHw9ICh2 YWx1ZSAmIDB4ZmYwMDAwKSA+PiA4OwotKyAgcmVzdWx0IHw9ICh2YWx1ZSAmIDB4ZmYwMDAwMDAp ID4+IDI0OwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9CisrICB0eXBlID0gY3JlYXRlX2FycmF5X3R5 cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGUpOwogKwotKyNkZWZpbmUgTUFZQkVfU1dBUChWKSAg Ynl0ZV9zd2FwIChWKQorKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgbmVlZCB0 byBiZSBmZXRjaGVkIGJ5CisrICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgPG11bHRpX2Y3 N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgorKyAgICAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIG9u bHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCisrICBmZXRjaF9kaWVfdHlwZV9h dHRycyAoZGllLCB0eXBlLCBjdSk7CiArCi0rI2Vsc2UKLSsjZGVmaW5lIE1BWUJFX1NXQVAoVikg KFYpCi0rI2VuZGlmIC8qIFdPUkRTX0JJR0VORElBTiAqLworKyAgLyogVGhlc2UgZ2VuZXJpYyB0 eXBlIGF0dHJpYnV0ZXMgYXJlIGNoZWNrZWQgZm9yIGFsbG9jYXRlZC9hc3NvY2lhdGVkCisrICAg ICB2YWxpZGl0eSB3aGlsZSBhY2Nlc3NpbmcgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0suICAq LworKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgcmFuZ2VfdHlwZSwgY3UpOwogKwotKy8q IFRoZSBzdWZmaXggZm9yIGFuIGluZGV4IGZpbGUuICAqLwotKyNkZWZpbmUgSU5ERVhfU1VGRklY ICIuZ2RiLWluZGV4IgorKyAgcmV0dXJuIHR5cGU7CisrfQogKwotIC8qIFRyeSB0byBsb2NhdGUg dGhlIHNlY3Rpb25zIHdlIG5lZWQgZm9yIERXQVJGIDIgZGVidWdnaW5nCi0gICAgaW5mb3JtYXRp b24gYW5kIHJldHVybiB0cnVlIGlmIHdlIGhhdmUgZW5vdWdoIHRvIGRvIHNvbWV0aGluZy4gICov CisgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJ RSBhbmQgcHV0IGl0IGluCisgICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlz IG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKKyAgICBhcnJheXMuICAqLworQEAgLTcxMjUs NyArNzE1Nyw3IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5 cGUsICppbmRleF90eXBlOworICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7Cisg ICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOworLSAgaW50IG5kaW0gPSAwOworKyAgaW50IG5kaW0g PSAwLCBpOworICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisgICBjaGFyICpuYW1lOwogIAot QEAgLTEyMzAsNiArMTM2MSwxMSBAQCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zIChiZmQgKmFiZmQs IGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqaWdub3JlX3B0cikKLSAgICAgICBkd2FyZjJfcGVyX29i amZpbGUtPnR5cGVzLmFzZWN0aW9uID0gc2VjdHA7Ci0gICAgICAgZHdhcmYyX3Blcl9vYmpmaWxl LT50eXBlcy5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgfQotKyAg ZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgR0RCX0lOREVYX1NFQ1RJT04pKQot KyAgICB7Ci0rICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24gPSBz ZWN0cDsKLSsgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5zaXplID0gYmZkX2dl dF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSsgICAgfQorQEAgLTcxNzgsMTcgKzcyMTAsMTEgQEAg cmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCisgICB0eXBlID0gZWxlbWVudF90eXBlOwogIAotICAgaWYgKChiZmRfZ2V0X3NlY3Rpb25f ZmxhZ3MgKGFiZmQsIHNlY3RwKSAmIFNFQ19MT0FEKQotICAgICAgICYmIGJmZF9zZWN0aW9uX3Zt YSAoYWJmZCwgc2VjdHApID09IDApCi1AQCAtMTM1Myw4NyArMTQ4OSw5NDAgQEAgZHdhcmYyX3Jl YWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlv bl9pbmZvICppbmZvKQotICAgaWYgKHBhZ2VzaXplID09IDApCi0gICAgIHBhZ2VzaXplID0gZ2V0 cGFnZXNpemUgKCk7CisgICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JE X2NvbF9tYWpvcikKKy0gICAgeworLSAgICAgIGludCBpID0gMDsKKy0KKy0gICAgICB3aGlsZSAo aSA8IG5kaW0pCistCXR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2Vf dHlwZXNbaSsrXSk7CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHdoaWxlIChuZGlt LS0gPiAwKQorLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5 cGVzW25kaW1dKTsKKy0gICAgfQorKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKQorKyAg ICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlw ZXNbaV0sIGRpZSwgY3UpOworKyAgZWxzZSAvKiAocmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkg PT0gRFdfT1JEX3Jvd19tYWpvcikgKi8KKysgICAgZm9yIChpID0gbmRpbSAtIDE7IGkgPj0gMDsg aS0tKQorKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAodHlwZSwg cmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOwogIAotLSAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0 aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCi0tICAgICB3YXN0 ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNl Y3Rpb25zCi0tICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KLSsgIC8qIE9ubHkgdHJ5IHRv IG1tYXAgc2VjdGlvbnMgd2hpY2ggYXJlIGxhcmdlIGVub3VnaDogd2UgZG9uJ3Qgd2FudCB0bwot KyAgICAgd2FzdGUgc3BhY2UgZHVlIHRvIGZyYWdtZW50YXRpb24uICBBbHNvLCBvbmx5IHRyeSBt bWFwIGZvciBzZWN0aW9ucwotKyAgICAgd2l0aG91dCByZWxvY2F0aW9ucy4gICovCi0rCi0rICBp ZiAoaW5mby0+c2l6ZSA+IDQgKiBwYWdlc2l6ZSAmJiAoc2VjdHAtPmZsYWdzICYgU0VDX1JFTE9D KSA9PSAwKQotKyAgICB7Ci0rICAgICAgb2ZmX3QgcGdfb2Zmc2V0ID0gc2VjdHAtPmZpbGVwb3Mg JiB+KHBhZ2VzaXplIC0gMSk7Ci0rICAgICAgc2l6ZV90IG1hcF9sZW5ndGggPSBpbmZvLT5zaXpl ICsgc2VjdHAtPmZpbGVwb3MgLSBwZ19vZmZzZXQ7Ci0rICAgICAgY2FkZHJfdCByZXRidWYgPSBi ZmRfbW1hcCAoYWJmZCwgMCwgbWFwX2xlbmd0aCwgUFJPVF9SRUFELAotKwkJCQkgTUFQX1BSSVZB VEUsIHBnX29mZnNldCk7Ci0rCi0rICAgICAgaWYgKHJldGJ1ZiAhPSBNQVBfRkFJTEVEKQotKwl7 Ci0rCSAgaW5mby0+d2FzX21tYXBwZWQgPSAxOwotKwkgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZiAr IChzZWN0cC0+ZmlsZXBvcyAmIChwYWdlc2l6ZSAtIDEpKSA7Ci0rI2lmIEhBVkVfUE9TSVhfTUFE VklTRQotKwkgIHBvc2l4X21hZHZpc2UgKHJldGJ1ZiwgbWFwX2xlbmd0aCwgUE9TSVhfTUFEVl9X SUxMTkVFRCk7Ci0rI2VuZGlmCi0rCSAgcmV0dXJuOwotKwl9Ci0rICAgIH0KLSsjZW5kaWYKKyAg IC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0aGV5 IG9jY3VyIG9uCisgICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMg YW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCitAQCAtNzY4MSwyOSArNzcwNywxMTQgQEAgcmVhZF90 YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmls ZSk7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hh cl90eXBlOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIHVuc2lnbmVkIGludCBsZW5n dGg7CisrICBpbnQgbGVuZ3RoOwogKwotKyAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5v cm1hbCwgbm90LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCi0rICBpbmZvLT5idWZmZXIgPSBidWYK LSsgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5z aXplKTsKKysgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2lu dDsKKysgIC8qIFJBTkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklMRSwgbm90IGFzIGEg cGVybWFuZW50IHR5cGUuICAqLworKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUp OworKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cu ICAqLworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90eXBlLCBpbmRl eF90eXBlLCAwLCAtMSk7CiArCi0rICAvKiBXaGVuIGRlYnVnZ2luZyAubyBmaWxlcywgd2UgbWF5 IG5lZWQgdG8gYXBwbHkgcmVsb2NhdGlvbnM7IHNlZQotKyAgICAgaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMDItMDQvbXNnMDAxMzYuaHRtbCAuCi0rICAgICBXZSBuZXZl ciBjb21wcmVzcyBzZWN0aW9ucyBpbiAubyBmaWxlcywgc28gd2Ugb25seSBuZWVkIHRvCi0rICAg ICB0cnkgdGhpcyB3aGVuIHRoZSBzZWN0aW9uIGlzIG5vdCBjb21wcmVzc2VkLiAgKi8KLSsgIHJl dGJ1ZiA9IHN5bWZpbGVfcmVsb2NhdGVfZGVidWdfc2VjdGlvbiAob2JqZmlsZSwgc2VjdHAsIGJ1 Zik7Ci0rICBpZiAocmV0YnVmICE9IE5VTEwpCisrICAvKiBDL0MrKyBzaG91bGQgcHJvYmFibHkg aGF2ZSB0aGUgbG93IGJvdW5kIDAgYnV0IEMvQysrIGRvZXMgbm90IHVzZQorKyAgICAgRFdfVEFH X3N0cmluZ190eXBlLiAgKi8KKysgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7Cisg CisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgY3UpOwor LSAgaWYgKGF0dHIpCistICAgIHsKKy0gICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7Cisr ICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogKyAgICB7Ci0rICAgICAg aW5mby0+YnVmZmVyID0gcmV0YnVmOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgaWYg KGJmZF9zZWVrIChhYmZkLCBzZWN0cC0+ZmlsZXBvcywgU0VFS19TRVQpICE9IDAKLSsgICAgICB8 fCBiZmRfYnJlYWQgKGJ1ZiwgaW5mby0+c2l6ZSwgYWJmZCkgIT0gaW5mby0+c2l6ZSkKLSsgICAg ZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJvbSAnJXMnIiks Ci0rCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKLSt9Ci0rCi0rLyogRmlsbCBpbiBTRUNU UCwgQlVGUCBhbmQgU0laRVAgd2l0aCBzZWN0aW9uIGluZm8sIGdpdmVuIE9CSkZJTEUgYW5kCi0r ICAgU0VDVElPTl9OQU1FLiAqLwotKwotK3ZvaWQKLStkd2FyZjJfZ2V0X3NlY3Rpb25faW5mbyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgYXNlY3Rpb24gKipzZWN0cCwgZ2RiX2J5dGUgKipidWZwLAot KyAgICAgICAgICAgICAgICAgICAgICAgICBiZmRfc2l6ZV90eXBlICpzaXplcCkKLSt7Ci0rICBz dHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkYXRhCi0rICAgID0gb2JqZmlsZV9kYXRhIChvYmpm aWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7Ci0rICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyAqaW5mbzsKLSsKLSsgIC8qIFdlIG1heSBzZWUgYW4gb2JqZmlsZSB3aXRob3V0IGFueSBE V0FSRiwgaW4gd2hpY2ggY2FzZSB3ZSBqdXN0Ci0rICAgICByZXR1cm4gbm90aGluZy4gICovCi0r ICBpZiAoZGF0YSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgKnNlY3RwID0gTlVMTDsKLSsgICAg ICAqYnVmcCA9IE5VTEw7Ci0rICAgICAgKnNpemVwID0gMDsKLSsgICAgICByZXR1cm47Ci0rICAg IH0KLSsgIGlmIChzZWN0aW9uX2lzX3AgKHNlY3Rpb25fbmFtZSwgRUhfRlJBTUVfU0VDVElPTikp Ci0rICAgIGluZm8gPSAmZGF0YS0+ZWhfZnJhbWU7Ci0rICBlbHNlIGlmIChzZWN0aW9uX2lzX3Ag KHNlY3Rpb25fbmFtZSwgRlJBTUVfU0VDVElPTikpCi0rICAgIGluZm8gPSAmZGF0YS0+ZnJhbWU7 Ci0rICBlbHNlCi0rICAgIGdkYl9hc3NlcnQgKDApOwotKwotKyAgaWYgKGluZm8tPmFzZWN0aW9u ICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGluZm8tPmJ1ZmZlciA9PSBOVUxMKQotKyAg ICAvKiBXZSBoYXZlbid0IHJlYWQgdGhpcyBzZWN0aW9uIGluIHlldC4gIERvIGl0IG5vdy4gICov Ci0rICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGluZm8pOworKyAgICAgIC8qIFNl Y3VyaXR5IGNoZWNrIGZvciBhIHNpemUgb3ZlcmZsb3cuICAqLworKyAgICAgIGlmIChEV19CTE9D SyAoYXR0ciktPnNpemUgKyAyIDwgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKQorKwlUWVBFX0hJR0hf Qk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgICAvKiBFeHRlbmQgdGhlIERXQVJGIGJsb2Nr IGJ5IGEgbmV3IERXX09QX2RlcmVmL0RXX09QX2RlcmVmX3NpemUKKysJIGluc3RydWN0aW9uIGFz IERXX0FUX3N0cmluZ19sZW5ndGggc3BlY2lmaWVzIHRoZSBsZW5ndGggbG9jYXRpb24sIG5vdAor KwkgaXRzIHZhbHVlLiAgKi8KKysgICAgICBlbHNlCisrCXsKKysJICBzdHJ1Y3QgZHdhcmYyX2xv Y2V4cHJfYmF0b24gKmxlbmd0aF9iYXRvbiA9IE5VTEw7CisrCSAgc3RydWN0IGR3YXJmX2Jsb2Nr ICpibGsgPSBEV19CTE9DSyAoYXR0cik7CiArCi0rICAqc2VjdHAgPSBpbmZvLT5hc2VjdGlvbjsK LSsgICpidWZwID0gaW5mby0+YnVmZmVyOwotKyAgKnNpemVwID0gaW5mby0+c2l6ZTsKLSt9Cisr CSAgLyogVHVybiBhbnkgc2luZ2xlIERXX09QX3JlZyogaW50byBEV19PUF9icmVnKigwKSBidXQg Y2xlYXJpbmcKKysJICAgICBEV19PUF9kZXJlZiogaW4gc3VjaCBjYXNlLiAgKi8KICsKLSsMCisr CSAgaWYgKGJsay0+c2l6ZSA9PSAxICYmIGJsay0+ZGF0YVswXSA+PSBEV19PUF9yZWcwCisrCSAg ICAgICYmIGJsay0+ZGF0YVswXSA8PSBEV19PUF9yZWczMSkKKysJICAgIGxlbmd0aF9iYXRvbiA9 IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysJICBlbHNlIGlmIChi bGstPnNpemUgPiAxICYmIGJsay0+ZGF0YVswXSA9PSBEV19PUF9yZWd4KQorKwkgICAgeworKwkg ICAgICBVTE9OR0VTVCB1bG9uZ2VzdDsKKysJICAgICAgY29uc3QgZ2RiX2J5dGUgKmVuZDsKICsK LSsvKiBSZWFkIGluIHRoZSBzeW1ib2xzIGZvciBQRVJfQ1UuICBPQkpGSUxFIGlzIHRoZSBvYmpm aWxlIGZyb20gd2hpY2gKLSsgICB0aGlzIENVIGNhbWUuICAqLwotK3N0YXRpYyB2b2lkCi0rZHcy X2RvX2luc3RhbnRpYXRlX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJICAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotK3sKLSsgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOworKwkgICAgICBlbmQgPSByZWFkX3VsZWIxMjggKCZibGstPmRhdGFbMV0sICZi bGstPmRhdGFbYmxrLT5zaXplXSwKKysJCQkJICAmdWxvbmdlc3QpOworKwkgICAgICBpZiAoZW5k ID09ICZibGstPmRhdGFbYmxrLT5zaXplXSkKKysJCWxlbmd0aF9iYXRvbiA9IGR3YXJmMl9hdHRy X3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysJICAgIH0KICsKLSsgIGJhY2tfdG8gPSBt YWtlX2NsZWFudXAgKGR3YXJmMl9yZWxlYXNlX3F1ZXVlLCBOVUxMKTsKKysJICBpZiAobGVuZ3Ro X2JhdG9uID09IE5VTEwpCisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnNpemVf YXR0cjsKKysJICAgICAgZ2RiX2J5dGUgKmRhdGE7CiArCi0rICBxdWV1ZV9jb21wX3VuaXQgKHBl cl9jdSwgb2JqZmlsZSk7CisrCSAgICAgIGxlbmd0aF9iYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZj dS0+Y29tcF91bml0X29ic3RhY2ssCisrCQkJCQkgICAgc2l6ZW9mICgqbGVuZ3RoX2JhdG9uKSk7 CisrCSAgICAgIGxlbmd0aF9iYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysJICAgICAgbGVu Z3RoX2JhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgMjsKKysJICAgICAgZGF0 YSA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssCisrCQkJCSAgICBsZW5n dGhfYmF0b24tPnNpemUpOworKwkgICAgICBsZW5ndGhfYmF0b24tPmRhdGEgPSBkYXRhOworKwkg ICAgICBtZW1jcHkgKGRhdGEsIERXX0JMT0NLIChhdHRyKS0+ZGF0YSwgRFdfQkxPQ0sgKGF0dHIp LT5zaXplKTsKICsKLSsgIGlmIChwZXJfY3UtPmZyb21fZGVidWdfdHlwZXMpCi0rICAgIHJlYWRf c2lnbmF0dXJlZF90eXBlX2F0X29mZnNldCAob2JqZmlsZSwgcGVyX2N1LT5vZmZzZXQpOwotKyAg ZWxzZQotKyAgICBsb2FkX2Z1bGxfY29tcF91bml0IChwZXJfY3UsIG9iamZpbGUpOworKwkgICAg ICAvKiBEV19BVF9CWVRFX1NJWkUgZXhpc3RpbmcgdG9nZXRoZXIgd2l0aCBEV19BVF9TVFJJTkdf TEVOR1RICisrCQkgc3BlY2lmaWVzIHRoZSBzaXplIG9mIGFuIGludGVnZXIgdG8gZmV0Y2guICAq LworKwkgICAgICBzaXplX2F0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUs IGN1KTsKKysJICAgICAgaWYgKHNpemVfYXR0cikKKysJCXsKKysJCSAgZGF0YVtEV19CTE9DSyAo YXR0ciktPnNpemVdID0gRFdfT1BfZGVyZWZfc2l6ZTsKKysJCSAgZGF0YVtEV19CTE9DSyAoYXR0 ciktPnNpemUgKyAxXSA9IERXX1VOU05EIChzaXplX2F0dHIpOworKwkJICBpZiAoZGF0YVtEV19C TE9DSyAoYXR0ciktPnNpemUgKyAxXSAhPSBEV19VTlNORCAoc2l6ZV9hdHRyKSkKKysJCSAgICBj b21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrCQkJICAgICAgIF8oIkRXX0FUX3N0cmlu Z19sZW5ndGgncyBEV19BVF9ieXRlX3NpemUgIgorKwkJCQkgImludGVnZXIgZXhjZWVkcyB0aGUg Ynl0ZSBzaXplIHN0b3JhZ2UiKSk7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCXsKKysJCSAgZGF0 YVtEV19CTE9DSyAoYXR0ciktPnNpemVdID0gRFdfT1BfZGVyZWY7CisrCQkgIGRhdGFbRFdfQkxP Q0sgKGF0dHIpLT5zaXplICsgMV0gPSBEV19PUF9ub3A7CisrCQl9CisrCSAgICB9CiArCi0rICBw cm9jZXNzX3F1ZXVlIChvYmpmaWxlKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUp LT5oaWdoLmtpbmQKKysJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBU WVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhf YmF0b247CisrCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KKyAgICAgfQor ICAgZWxzZQorICAgICB7CistICAgICAgLyogY2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUg YXR0cmlidXRlICovCisrICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChh dHRyKSkKKysJeworKwkgIC8qIFdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBhIGNvbnN0YW50 IGFkZHJlc3Mgd2hlcmUgdGhlIGxvY2F0aW9uCisrCSAgICAgc2hvdWxkIGJlIHJlYWQgZnJvbSAt IGF0dHJfZm9ybV9pc19ibG9jayBpcyBleHBlY3RlZCBpbnN0ZWFkLiAgU2VlCisrCSAgICAgRFdB UkYgZm9yIHRoZSBEV19BVF9TVFJJTkdfTEVOR1RIIHZzLiBEV19BVF9CWVRFX1NJWkUgZGlmZmVy ZW5jZS4KKysJICAgICAqLworKwkgIC8qIFBBU1NUSFJVICovCisrCX0KICsKLSsgIC8qIEFnZSB0 aGUgY2FjaGUsIHJlbGVhc2luZyBjb21waWxhdGlvbiB1bml0cyB0aGF0IGhhdmUgbm90Ci0rICAg ICBiZWVuIHVzZWQgcmVjZW50bHkuICAqLwotKyAgYWdlX2NhY2hlZF9jb21wX3VuaXRzICgpOwor ICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKy0g ICAgICBpZiAoYXR0cikKKy0gICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQg KGF0dHIpOworLSAgICAgICAgfQorKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9j ayAoYXR0cikpCisrCXsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtp bmQKKysJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBUWVBFX1JBTkdF X0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0 dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2Vf dHlwZSkgPSAxOworKwl9CisrICAgICAgZWxzZSBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29u c3RhbnQgKGF0dHIpKQorKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dl dF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKyAgICAgICBlbHNlCistICAgICAgICB7 CistICAgICAgICAgIGxlbmd0aCA9IDE7CistICAgICAgICB9CisrCVRZUEVfSElHSF9CT1VORCAo cmFuZ2VfdHlwZSkgPSAxOworICAgICB9CisgCistICBpbmRleF90eXBlID0gb2JqZmlsZV90eXBl IChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7CistICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5 cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7CisgICBjaGFyX3R5cGUgPSBsYW5ndWFn ZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7CisgICB0eXBl ID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUpOworIAor QEAgLTc5ODUsOCArODA5Niw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsK KyAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK Ky0gIExPTkdFU1QgbG93ID0gMDsKKy0gIExPTkdFU1QgaGlnaCA9IC0xOworKyAgTE9OR0VTVCBs b3c7CisgICBjaGFyICpuYW1lOworICAgTE9OR0VTVCBuZWdhdGl2ZV9tYXNrOworIAorQEAgLTc5 OTksNDggKzgxMDksMTI1IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgaWYgKHJhbmdlX3R5cGUpCisgICAgIHJldHVy biByYW5nZV90eXBlOworIAorLSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFu KQorLSAgICB7CistICAgICAgLyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwg aWYgbm90IGdpdmVuLiAgKi8KKy0gICAgICBsb3cgPSAxOworLSAgICB9CisrICAvKiBMT1dfQk9V TkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNldCBmb3IgcmVhbCBiZWxvdy4gICovCisrICByYW5nZV90 eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgMCwgLTEpOwogKwotKyAg ZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotK30KKysgIG5lZ2F0aXZlX21hc2sgPSAKKysgICAgKExP TkdFU1QpIC0xIDw8IChUWVBFX0xFTkdUSCAoYmFzZV90eXBlKSAqIFRBUkdFVF9DSEFSX0JJVCAt IDEpOwogKwotKy8qIEVuc3VyZSB0aGF0IHRoZSBzeW1ib2xzIGZvciBQRVJfQ1UgaGF2ZSBiZWVu IHJlYWQgaW4uICBPQkpGSUxFIGlzCi0rICAgdGhlIG9iamZpbGUgZnJvbSB3aGljaCB0aGlzIENV IGNhbWUuICBSZXR1cm5zIHRoZSByZXN1bHRpbmcgc3ltYm9sCi0rICAgdGFibGUuICAqLwotK3N0 YXRpYyBzdHJ1Y3Qgc3ltdGFiICoKLStkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKLSsJCQlzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCi0r ewotKyAgaWYgKCFwZXJfY3UtPnYucXVpY2stPnN5bXRhYikKKysgIC8qIEV4Y2x1ZGUgbGFuZ3Vh Z2VfYWRhIGZyb20gYW55IFRZUEVfRFlOQU1JQyBjb25zdHJ1Y3RzIGJlbG93LiAgR0RCIEFkYQor KyAgICAgc3VwcG9ydHMgaW1wbGVtZW50cyB0aGUgZHluYW1pYyBib3VuZHMgaW4gYSBub24tRFdB UkYgd2F5IGFuZCB0aGUKKysgICAgIGV4aXN0aW5nIERXQVJGIGR5bmFtaWMgYm91bmRzIGFyZSBp bnZhbGlkLCBsZWFkaW5nIHRvIG1lbW9yeSBhY2Nlc3MKKysgICAgIGVycm9ycy4gICovCisgCist ICAvKiBGSVhNRTogRm9yIHZhcmlhYmxlIHNpemVkIGFycmF5cyBlaXRoZXIgb2YgdGhlc2UgY291 bGQgYmUKKy0gICAgIGEgdmFyaWFibGUgcmF0aGVyIHRoYW4gYSBjb25zdGFudCB2YWx1ZS4gIFdl J2xsIGFsbG93IGl0LAorLSAgICAgYnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBpdC4g ICovCisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsK Ky0gIGlmIChhdHRyKQorLSAgICBsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUg KGF0dHIsIDApOworKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBj dS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQogKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFu dXAgKmJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY2FjaGVkX2NvbXBfdW5pdHMsIE5VTEwp OwotKyAgICAgIGluY3JlbWVudF9yZWFkaW5nX3N5bXRhYiAoKTsKLSsgICAgICBkdzJfZG9faW5z dGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBwZXJfY3UpOwotKyAgICAgIGRvX2NsZWFudXBzIChi YWNrX3RvKTsKKysgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCA9 IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+bG93LnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9j ZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkg PSAxOworKyAgICAgIC8qIEZvciBzZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VO RCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KKysgICAgICBsb3cgPSAwOwogKyAgICB9Ci0rICByZXR1 cm4gcGVyX2N1LT52LnF1aWNrLT5zeW10YWI7Ci0rfQotKwotKy8qIEEgaGVscGVyIGZ1bmN0aW9u IHRoYXQga25vd3MgaG93IHRvIHJlYWQgYSA2NC1iaXQgdmFsdWUgaW4gYSB3YXkKLSsgICB0aGF0 IGRvZXNuJ3QgbWFrZSBnZGIgZGllLiAgUmV0dXJucyAxIGlmIHRoZSBjb252ZXJzaW9uIHdlbnQg b2ssIDAKLSsgICBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQKLStleHRyYWN0X2N1X3ZhbHVl IChjb25zdCBjaGFyICpieXRlcywgVUxPTkdFU1QgKnJlc3VsdCkKLSt7Ci0rICBpZiAoc2l6ZW9m IChVTE9OR0VTVCkgPCA4KQorKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikg JiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKICsgICAgewotKyAgICAgIGludCBpOwor KyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKKysgICAgICBzdHJ1Y3QgZHdhcmYy X2N1ICp0YXJnZXRfY3UgPSBjdTsKKysgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9j X2F0dHI7CiArCi0rICAgICAgLyogSWdub3JlIHRoZSB1cHBlciA0IGJ5dGVzIGlmIHRoZXkgYXJl IGFsbCB6ZXJvLiAgKi8KLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpKQotKwlpZiAoYnl0 ZXNbaSArIDRdICE9IDApCi0rCSAgcmV0dXJuIDA7CisrICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxv d19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKKysgICAgICBnZGJfYXNz ZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOworKyAgICAgIHRhcmdldF9s b2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0 X2N1KTsKICsKLSsgICAgICAqcmVzdWx0ID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChieXRl cywgNCwgQkZEX0VORElBTl9MSVRUTEUpOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmxvdy5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOworKyAgICAg IFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QubG9jbGlz dAorKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0 dHIsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93 LnUuZHdhcmZfbG9jbGlzdC50eXBlCisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0 YXJnZXRfY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAg IC8qIEZvciBzZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBt aXNzaW5nLiAgKi8KKysgICAgICBsb3cgPSAwOwogKyAgICB9CiArICBlbHNlCi0rICAgICpyZXN1 bHQgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCA4LCBCRkRfRU5ESUFOX0xJVFRM RSk7Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogUmVhZCB0aGUgQ1UgbGlzdCBmcm9tIHRoZSBt YXBwZWQgaW5kZXgsIGFuZCB1c2UgaXQgdG8gY3JlYXRlIGFsbAotKyAgIHRoZSBDVSBvYmplY3Rz IGZvciB0aGlzIG9iamZpbGUuICBSZXR1cm4gMCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywKLSsg ICAxIGlmIGV2ZXJ5dGhpbmcgd2VudCBvay4gICovCi0rc3RhdGljIGludAotK2NyZWF0ZV9jdXNf ZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBtYXBwZWRfaW5kZXgg KmluZGV4LAotKwkJICAgICAgIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LCBvZmZzZXRfdHlwZSBj dV9saXN0X2VsZW1lbnRzKQotK3sKLSsgIG9mZnNldF90eXBlIGk7Ci0rICBjb25zdCBjaGFyICpl bnRyeTsKLSsKLSsgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzID0gY3VfbGlzdF9l bGVtZW50cyAvIDI7Ci0rICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzCi0rICAg ID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCSAgICAgZHdh cmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKLSsJCSAgICAgKiBzaXplb2YgKHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKikpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGN1X2xpc3RfZWxl bWVudHM7IGkgKz0gMikKICsgICAgewotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEg KnRoZV9jdTsKLSsgICAgICBVTE9OR0VTVCBvZmZzZXQsIGxlbmd0aDsKLSsKLSsgICAgICBpZiAo IWV4dHJhY3RfY3VfdmFsdWUgKGN1X2xpc3QsICZvZmZzZXQpCi0rCSAgfHwgIWV4dHJhY3RfY3Vf dmFsdWUgKGN1X2xpc3QgKyA4LCAmbGVuZ3RoKSkKLSsJcmV0dXJuIDA7Ci0rICAgICAgY3VfbGlz dCArPSAyICogODsKLSsKLSsgICAgICB0aGVfY3UgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjaywKLSsJCQkgICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSk7 Ci0rICAgICAgdGhlX2N1LT5vZmZzZXQgPSBvZmZzZXQ7Ci0rICAgICAgdGhlX2N1LT5sZW5ndGgg PSBsZW5ndGg7Ci0rICAgICAgdGhlX2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKLSsgICAgICB0aGVf Y3UtPnYucXVpY2sgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywK LSsJCQkJCXN0cnVjdCBkd2FyZjJfcGVyX2N1X3F1aWNrX2RhdGEpOwotKyAgICAgIGR3YXJmMl9w ZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaSAvIDJdID0gdGhlX2N1OworKyAgICAgIGlmIChh dHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCisrCWxvdyA9IGR3YXJmMl9nZXRf YXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7CisrICAgICAgZWxzZQorKwl7CisrCSAgaWYg KGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorKwkgICAgeworKwkgICAgICAvKiBG T1JUUkFOIGltcGxpZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLworKwkg ICAgICBsb3cgPSAxOworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgLyogQWNj b3JkaW5nIHRvIERXQVJGIHdlIHNob3VsZCBhc3N1bWUgdGhlIHZhbHVlIDAgb25seSBmb3IKKysJ CSBMQU5HVUFHRV9DIGFuZCBMQU5HVUFHRV9DUExVUy4gICovCisrCSAgICAgIGxvdyA9IDA7Cisr CSAgICB9CisrCX0KKysgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxv dyAmIG5lZ2F0aXZlX21hc2spKQorKwlsb3cgfD0gbmVnYXRpdmVfbWFzazsKKysgICAgICBUWVBF X0xPV19CT1VORCAocmFuZ2VfdHlwZSkgPSBsb3c7CisrICAgICAgaWYgKGxvdyA+PSAwKQorKwlU WVBFX1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDE7CisrICAgIH0KKyAKKyAgIGF0dHIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOworLSAgaWYgKGF0dHIpCisrICBp ZiAoIWF0dHIgfHwgKCFhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmICFhdHRyX2Zvcm1faXNf Y29uc3RhbnQgKGF0dHIpCisrCQkmJiAhaXNfcmVmX2F0dHIgKGF0dHIpKSkKKyAgICAgeworLSAg ICAgIGlmIChhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sxIHx8IGlzX3JlZl9hdHRyIChhdHRy KSkKKy0gICAgICAgIHsKKy0gICAgICAgICAgLyogR0NDIGVuY29kZXMgYXJyYXlzIHdpdGggdW5z cGVjaWZpZWQgb3IgZHluYW1pYyBsZW5ndGgKKy0gICAgICAgICAgICAgd2l0aCBhIERXX0ZPUk1f YmxvY2sxIGF0dHJpYnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUuCistICAgICAgICAgICAg IEZJWE1FOiBHREIgZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhhbmRsZSBkeW5hbWljCistICAg ICAgICAgICAgIGFycmF5cyBwcm9wZXJseSwgdHJlYXQgdGhlbSBhcyBhcnJheXMgd2l0aCB1bnNw ZWNpZmllZAorLSAgICAgICAgICAgICBsZW5ndGggZm9yIG5vdy4KKy0KKy0gICAgICAgICAgICAg RklYTUU6IGppbWIvMjAwMy0wOS0yMjogR0RCIGRvZXMgbm90IHJlYWxseSBrbm93CistICAgICAg ICAgICAgIGhvdyB0byBoYW5kbGUgYXJyYXlzIG9mIHVuc3BlY2lmaWVkIGxlbmd0aAorLSAgICAg ICAgICAgICBlaXRoZXI7IHdlIGp1c3QgcmVwcmVzZW50IHRoZW0gYXMgemVyby1sZW5ndGgKKy0g ICAgICAgICAgICAgYXJyYXlzLiAgQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIHVwcGVyIGJvdW5kIGdp dmVuCistICAgICAgICAgICAgIHRoZSBsb3dlciBib3VuZCB3ZSd2ZSBjb21wdXRlZCBhYm92ZS4g ICovCistICAgICAgICAgIGhpZ2ggPSBsb3cgLSAxOworLSAgICAgICAgfQorLSAgICAgIGVsc2UK Ky0gICAgICAgIGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEp OworKyAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOworKyAg ICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5lZWRsZXNzbHkgaW5lZmZlY3RpdmUg aW4gY2hlY2tfdHlwZWRlZi4gICovCisrICAgICAgaWYgKGF0dHIgJiYgKGF0dHJfZm9ybV9pc19i bG9jayAoYXR0cikgfHwgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkpCisrICAgICAgCXsK KysJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKHJhbmdlX3R5cGUpID0gMTsKKysJ ICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKKysJfQorKyAgICAgIC8qIFBhc3MgaXQg bm93IGFzIHRoZSByZWd1bGFyIERXX0FUX3VwcGVyX2JvdW5kLiAgKi8KICsgICAgfQogKwotKyAg cmV0dXJuIDE7Ci0rfQotKwotKy8qIFJlYWQgdGhlIGFkZHJlc3MgbWFwIGRhdGEgZnJvbSB0aGUg bWFwcGVkIGluZGV4LCBhbmQgdXNlIGl0IHRvCi0rICAgcG9wdWxhdGUgdGhlIG9iamZpbGUncyBw c3ltdGFic19hZGRybWFwLiAgKi8KLStzdGF0aWMgdm9pZAotK2NyZWF0ZV9hZGRybWFwX2Zyb21f aW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRl eCkKLSt7Ci0rICBjb25zdCBnZGJfYnl0ZSAqaXRlciwgKmVuZDsKLSsgIHN0cnVjdCBvYnN0YWNr IHRlbXBfb2JzdGFjazsKLSsgIHN0cnVjdCBhZGRybWFwICptdXRhYmxlX21hcDsKLSsgIHN0cnVj dCBjbGVhbnVwICpjbGVhbnVwOwotKyAgQ09SRV9BRERSIGJhc2VhZGRyOwotKwotKyAgb2JzdGFj a19pbml0ICgmdGVtcF9vYnN0YWNrKTsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfb2JzdGFj a19mcmVlICgmdGVtcF9vYnN0YWNrKTsKLSsgIG11dGFibGVfbWFwID0gYWRkcm1hcF9jcmVhdGVf bXV0YWJsZSAoJnRlbXBfb2JzdGFjayk7Ci0rCi0rICBpdGVyID0gaW5kZXgtPmFkZHJlc3NfdGFi bGU7Ci0rICBlbmQgPSBpdGVyICsgaW5kZXgtPmFkZHJlc3NfdGFibGVfc2l6ZTsKLSsKLSsgIGJh c2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVY VCAob2JqZmlsZSkpOwotKwotKyAgd2hpbGUgKGl0ZXIgPCBlbmQpCisrICBpZiAoYXR0ciAmJiBh dHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEp CiArICAgIHsKLSsgICAgICBVTE9OR0VTVCBoaSwgbG8sIGN1X2luZGV4OwotKyAgICAgIGxvID0g ZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChpdGVyLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSk7Ci0r ICAgICAgaXRlciArPSA4OwotKyAgICAgIGhpID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChp dGVyLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSk7Ci0rICAgICAgaXRlciArPSA4OwotKyAgICAgIGN1 X2luZGV4ID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChpdGVyLCA0LCBCRkRfRU5ESUFOX0xJ VFRMRSk7Ci0rICAgICAgaXRlciArPSA0OwotKyAgICAgIAotKyAgICAgIGFkZHJtYXBfc2V0X2Vt cHR5IChtdXRhYmxlX21hcCwgbG8gKyBiYXNlYWRkciwgaGkgKyBiYXNlYWRkciAtIDEsCi0rCQkJ IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbY3VfaW5kZXhdKTsKKysgICAgICBU WVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5E X0RXQVJGX0JMT0NLOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gu dS5kd2FyZl9ibG9jayA9CisrCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRy LCBjdSk7CisrICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CiArICAgIH0KKysg IGVsc2UgaWYgKGF0dHIgJiYgaXNfcmVmX2F0dHIgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBs YW5ndWFnZV9hZGEpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdldF9kaWU7 CisrICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7CisrICAgICAgc3RydWN0 IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwogKwotKyAgb2JqZmlsZS0+cHN5bXRhYnNfYWRk cm1hcCA9IGFkZHJtYXBfY3JlYXRlX2ZpeGVkIChtdXRhYmxlX21hcCwKLSsJCQkJCQkgICAgJm9i amZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQot KwotKy8qIFRoZSBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzIGluIHRoZSBtYXBwZWQgaW5kZXgu ICBUaGlzIGlzIHRoZQotKyAgIHNhbWUgYXMgdGhlIGhhc2h0YWIuYyBoYXNoIGZ1bmN0aW9uLCBi dXQgd2Uga2VlcCBhIHNlcGFyYXRlIGNvcHkgdG8KLSsgICBtYWludGFpbiBjb250cm9sIG92ZXIg dGhlIGltcGxlbWVudGF0aW9uLiAgVGhpcyBpcyBuZWNlc3NhcnkKLSsgICBiZWNhdXNlIHRoZSBo YXNoIGZ1bmN0aW9uIGlzIHRpZWQgdG8gdGhlIGZvcm1hdCBvZiB0aGUgbWFwcGVkIGluZGV4Ci0r ICAgZmlsZS4gICovCi0rc3RhdGljIGhhc2h2YWxfdAotK21hcHBlZF9pbmRleF9zdHJpbmdfaGFz aCAoY29uc3Qgdm9pZCAqcCkKLSt7Ci0rICBjb25zdCB1bnNpZ25lZCBjaGFyICpzdHIgPSAoY29u c3QgdW5zaWduZWQgY2hhciAqKSBwOwotKyAgaGFzaHZhbF90IHIgPSAwOwotKyAgdW5zaWduZWQg Y2hhciBjOwotKwotKyAgd2hpbGUgKChjID0gKnN0cisrKSAhPSAwKQotKyAgICByID0gciAqIDY3 ICsgYyAtIDExMzsKLSsKLSsgIHJldHVybiByOwotK30KLSsKLSsvKiBGaW5kIGEgc2xvdCBpbiB0 aGUgbWFwcGVkIGluZGV4IElOREVYIGZvciB0aGUgb2JqZWN0IG5hbWVkIE5BTUUuCi0rICAgSWYg TkFNRSBpcyBmb3VuZCwgc2V0ICpWRUNfT1VUIHRvIHBvaW50IHRvIHRoZSBDVSB2ZWN0b3IgaW4g dGhlCi0rICAgY29uc3RhbnQgcG9vbCBhbmQgcmV0dXJuIDEuICBJZiBOQU1FIGNhbm5vdCBiZSBm b3VuZCwgcmV0dXJuIDAuICAqLwotK3N0YXRpYyBpbnQKLStmaW5kX3Nsb3RfaW5fbWFwcGVkX2hh c2ggKHN0cnVjdCBtYXBwZWRfaW5kZXggKmluZGV4LCBjb25zdCBjaGFyICpuYW1lLAotKwkJCSAg b2Zmc2V0X3R5cGUgKip2ZWNfb3V0KQotK3sKLSsgIG9mZnNldF90eXBlIGhhc2ggPSBtYXBwZWRf aW5kZXhfc3RyaW5nX2hhc2ggKG5hbWUpOwotKyAgb2Zmc2V0X3R5cGUgc2xvdCwgc3RlcDsKKysg ICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJn ZXRfY3UpOworKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2Jq ZmlsZSk7CisrICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUs IERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOwogKwotKyAgc2xvdCA9IGhhc2ggJiAoaW5kZXgt PmluZGV4X3RhYmxlX3Nsb3RzIC0gMSk7Ci0rICBzdGVwID0gKChoYXNoICogMTcpICYgKGluZGV4 LT5pbmRleF90YWJsZV9zbG90cyAtIDEpKSB8IDE7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOwor KyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0 LmxvY2xpc3QKKysgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0 X2xvY19hdHRyLCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5cGUKKysgICAgICAgID0gZGllX3R5cGUgKHRhcmdl dF9kaWUsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7 CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9jb3VudCwgY3UpOworLSAgICAgIGlmIChhdHRyKQorKyAgICAgIExPTkdFU1QgaGln aDsKICsKLSsgIGZvciAoOzspCisrICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0 YW50IChhdHRyKSkKKysJaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0 ciwgMCk7CisrICAgICAgZWxzZQorIAl7CistCSAgaW50IGNvdW50ID0gZHdhcmYyX2dldF9hdHRy X2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKKy0JICBoaWdoID0gbG93ICsgY291bnQgLSAxOwor KwkgIC8qIEFkYSBleHBlY3RzIGFuIGVtcHR5IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0 ZXMuICAqLworKwkgIGlmIChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKwkgICAgVFlQ RV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOworKwkgIGhpZ2ggPSBsb3cg LSAxOworIAl9CisrICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdo ICYgbmVnYXRpdmVfbWFzaykpCisrCWhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKKysgICAgICBUWVBF X0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gaGlnaDsKKyAgICAgfQorIAorICAgLyogRHdhcmYt MiBzcGVjaWZpY2F0aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlw ZXMKK0BAIC04MDgyLDIwICs4MjY5LDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAl9CisgICAgIH0KKyAKKy0gIG5l Z2F0aXZlX21hc2sgPQorLSAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5 cGUpICogVEFSR0VUX0NIQVJfQklUIC0gMSk7CistICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2Vf dHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZlX21hc2spKQorLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFz azsKKy0gIGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZl X21hc2spKQorLSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7CisrICAvKiBEV19BVF9iaXRfc3Ry aWRlIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4gICovCisr ICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKKysgIGlm IChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxh bmd1YWdlX2FkYSkKICsgICAgewotKyAgICAgIC8qIENvbnZlcnQgYSBzbG90IG51bWJlciB0byBh biBvZmZzZXQgaW50byB0aGUgdGFibGUuICAqLwotKyAgICAgIG9mZnNldF90eXBlIGkgPSAyICog c2xvdDsKLSsgICAgICBjb25zdCBjaGFyICpzdHI7Ci0rICAgICAgaWYgKGluZGV4LT5pbmRleF90 YWJsZVtpXSA9PSAwICYmIGluZGV4LT5pbmRleF90YWJsZVtpICsgMV0gPT0gMCkKLSsJcmV0dXJu IDA7Ci0rCi0rICAgICAgc3RyID0gaW5kZXgtPmNvbnN0YW50X3Bvb2wgKyBNQVlCRV9TV0FQIChp bmRleC0+aW5kZXhfdGFibGVbaV0pOwotKyAgICAgIGlmICghc3RyY21wIChuYW1lLCBzdHIpKQot Kwl7Ci0rCSAgKnZlY19vdXQgPSAob2Zmc2V0X3R5cGUgKikgKGluZGV4LT5jb25zdGFudF9wb29s Ci0rCQkJCSAgICAgICsgTUFZQkVfU1dBUCAoaW5kZXgtPmluZGV4X3RhYmxlW2kgKyAxXSkpOwot KwkgIHJldHVybiAxOwotKwl9Ci0rCi0rICAgICAgc2xvdCA9IChzbG90ICsgc3RlcCkgJiAoaW5k ZXgtPmluZGV4X3RhYmxlX3Nsb3RzIC0gMSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3Ry aWRlLnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAo YXR0ciwgY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwogKyAgICB9 Ci0rfQotKwotKy8qIFJlYWQgdGhlIGluZGV4IGZpbGUuICBJZiBldmVyeXRoaW5nIHdlbnQgb2ss IGluaXRpYWxpemUgdGhlICJxdWljayIKLSsgICBlbGVtZW50cyBvZiBhbGwgdGhlIENVcyBhbmQg cmV0dXJuIDEuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KLStzdGF0aWMgaW50Ci0rZHdhcmYy X3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGNoYXIgKmFkZHI7 Ci0rICBzdHJ1Y3QgbWFwcGVkX2luZGV4ICptYXA7Ci0rICBvZmZzZXRfdHlwZSAqbWV0YWRhdGE7 Ci0rICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlzdDsKLSsgIG9mZnNldF90eXBlIGN1X2xpc3RfZWxl bWVudHM7Ci0rCi0rICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24g PT0gTlVMTAotKyAgICAgIHx8IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4LnNpemUgPT0g MCkKLSsgICAgcmV0dXJuIDA7Ci0rICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdh cmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXgpOwotKwotKyAgYWRkciA9IGR3YXJmMl9wZXJfb2Jq ZmlsZS0+Z2RiX2luZGV4LmJ1ZmZlcjsKLSsgIC8qIFZlcnNpb24gY2hlY2suICAqLwotKyAgaWYg KE1BWUJFX1NXQVAgKCoob2Zmc2V0X3R5cGUgKikgYWRkcikgIT0gMSkKLSsgICAgcmV0dXJuIDA7 Ci0rCi0rICBtYXAgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywg c3RydWN0IG1hcHBlZF9pbmRleCk7Ci0rICBtYXAtPnRvdGFsX3NpemUgPSBkd2FyZjJfcGVyX29i amZpbGUtPmdkYl9pbmRleC5zaXplOwotKwotKyAgbWV0YWRhdGEgPSAob2Zmc2V0X3R5cGUgKikg KGFkZHIgKyBzaXplb2YgKG9mZnNldF90eXBlKSk7Ci0rICBjdV9saXN0ID0gYWRkciArIE1BWUJF X1NXQVAgKG1ldGFkYXRhWzBdKTsKLSsgIGN1X2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NXQVAg KG1ldGFkYXRhWzFdKSAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzBdKSkKLSsJCSAgICAgIC8gOCk7 Ci0rICBtYXAtPmFkZHJlc3NfdGFibGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbMV0p OwotKyAgbWFwLT5hZGRyZXNzX3RhYmxlX3NpemUgPSAoTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0p Ci0rCQkJICAgICAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzFdKSk7Ci0rICBtYXAtPmluZGV4X3Rh YmxlID0gKG9mZnNldF90eXBlICopIChhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0pKTsK LSsgIG1hcC0+aW5kZXhfdGFibGVfc2xvdHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhWzNdKQot KwkJCSAgICAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVsyXSkpCi0rCQkJICAgIC8gKDIgKiBzaXpl b2YgKG9mZnNldF90eXBlKSkpOwotKyAgbWFwLT5jb25zdGFudF9wb29sID0gYWRkciArIE1BWUJF X1NXQVAgKG1ldGFkYXRhWzNdKTsKLSsKLSsgIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChv YmpmaWxlLCBtYXAsIGN1X2xpc3QsIGN1X2xpc3RfZWxlbWVudHMpKQotKyAgICByZXR1cm4gMDsK LSsKLSsgIGNyZWF0ZV9hZGRybWFwX2Zyb21faW5kZXggKG9iamZpbGUsIG1hcCk7Ci0rCi0rICBk d2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlID0gbWFwOwotKyAgZHdhcmYyX3Blcl9vYmpm aWxlLT51c2luZ19pbmRleCA9IDE7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogQSBoZWxw ZXIgZm9yIHRoZSAicXVpY2siIGZ1bmN0aW9ucyB3aGljaCBzZXRzIHRoZSBnbG9iYWwKLSsgICBk d2FyZjJfcGVyX29iamZpbGUgYWNjb3JkaW5nIHRvIE9CSkZJTEUuICAqLwotK3N0YXRpYyB2b2lk Ci0rZHcyX3NldHVwIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSt7Ci0rICBkd2FyZjJfcGVy X29iamZpbGUgPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5 KTsKLSsgIGdkYl9hc3NlcnQgKGR3YXJmMl9wZXJfb2JqZmlsZSk7Ci0rfQotKwotKy8qIEEgaGVs cGVyIGZvciB0aGUgInF1aWNrIiBmdW5jdGlvbnMgd2hpY2ggYXR0ZW1wdHMgdG8gcmVhZCB0aGUg bGluZQotKyAgIHRhYmxlIGZvciBUSElTX0NVLiAgKi8KLStzdGF0aWMgdm9pZAotK2R3Ml9yZXF1 aXJlX2xpbmVfaGVhZGVyIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgc3RydWN0IGR3 YXJmMl9wZXJfY3VfZGF0YSAqdGhpc19jdSkKLSt7Ci0rICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5v YmZkOwotKyAgc3RydWN0IGxpbmVfaGVhZGVyICpsaCA9IE5VTEw7Ci0rICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotKyAgc3RydWN0IGRpZV9p bmZvICpjb21wX3VuaXRfZGllOwotKyAgZ2RiX2J5dGUgKmJlZ19vZl9jb21wX3VuaXQsICppbmZv X3B0ciwgKmJ1ZmZlcjsKLSsgIGludCBoYXNfY2hpbGRyZW4sIGk7Ci0rICBzdHJ1Y3QgZHdhcmYy X2N1IGN1OwotKyAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQsIGJ1ZmZlcl9zaXplOwotKyAgc3Ry dWN0IGRpZV9yZWFkZXJfc3BlY3MgcmVhZGVyX3NwZWNzOwotKyAgY2hhciAqbmFtZSwgKmNvbXBf ZGlyOwotKwotKyAgaWYgKHRoaXNfY3UtPnYucXVpY2stPnJlYWRfbGluZXMpCi0rICAgIHJldHVy bjsKLSsgIHRoaXNfY3UtPnYucXVpY2stPnJlYWRfbGluZXMgPSAxOwotKwotKyAgbWVtc2V0ICgm Y3UsIDAsIHNpemVvZiAoY3UpKTsKLSsgIGN1Lm9iamZpbGUgPSBvYmpmaWxlOwotKyAgb2JzdGFj a19pbml0ICgmY3UuY29tcF91bml0X29ic3RhY2spOwotKwotKyAgY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKGZyZWVfc3RhY2tfY29tcF91bml0LCAmY3UpOwotKwotKyAgZHdhcmYyX3JlYWRfc2Vj dGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mbyk7Ci0rICBidWZmZXJfc2l6 ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5zaXplOwotKyAgYnVmZmVyID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmZvLmJ1ZmZlcjsKLSsgIGluZm9fcHRyID0gYnVmZmVyICsgdGhpc19jdS0+ b2Zmc2V0OwotKyAgYmVnX29mX2NvbXBfdW5pdCA9IGluZm9fcHRyOwotKwotKyAgaW5mb19wdHIg PSBwYXJ0aWFsX3JlYWRfY29tcF91bml0X2hlYWQgKCZjdS5oZWFkZXIsIGluZm9fcHRyLAotKwkJ CQkJICBidWZmZXIsIGJ1ZmZlcl9zaXplLAotKwkJCQkJICBhYmZkKTsKLSsKLSsgIC8qIENvbXBs ZXRlIHRoZSBjdV9oZWFkZXIuICAqLwotKyAgY3UuaGVhZGVyLm9mZnNldCA9IGJlZ19vZl9jb21w X3VuaXQgLSBidWZmZXI7Ci0rICBjdS5oZWFkZXIuZmlyc3RfZGllX29mZnNldCA9IGluZm9fcHRy IC0gYmVnX29mX2NvbXBfdW5pdDsKLSsKLSsgIHRoaXNfY3UtPmN1ID0gJmN1OwotKyAgY3UucGVy X2N1ID0gdGhpc19jdTsKLSsKLSsgIGR3YXJmMl9yZWFkX2FiYnJldnMgKGFiZmQsICZjdSk7Ci0r ICBtYWtlX2NsZWFudXAgKGR3YXJmMl9mcmVlX2FiYnJldl90YWJsZSwgJmN1KTsKLSsKLSsgIGlm ICh0aGlzX2N1LT5mcm9tX2RlYnVnX3R5cGVzKQotKyAgICBpbmZvX3B0ciArPSA4IC8qc2lnbmF0 dXJlKi8gKyBjdS5oZWFkZXIub2Zmc2V0X3NpemU7Ci0rICBpbml0X2N1X2RpZV9yZWFkZXIgKCZy ZWFkZXJfc3BlY3MsICZjdSk7Ci0rICBpbmZvX3B0ciA9IHJlYWRfZnVsbF9kaWUgKCZyZWFkZXJf c3BlY3MsICZjb21wX3VuaXRfZGllLCBpbmZvX3B0ciwKLSsJCQkgICAgJmhhc19jaGlsZHJlbik7 Ci0rCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FUX3N0bXRfbGlz dCwgJmN1KTsKLSsgIGlmIChhdHRyKQorKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAo YXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKICsgICAgewotKyAgICAgIHVu c2lnbmVkIGludCBsaW5lX29mZnNldCA9IERXX1VOU05EIChhdHRyKTsKLSsgICAgICBsaCA9IGR3 YXJmX2RlY29kZV9saW5lX2hlYWRlciAobGluZV9vZmZzZXQsIGFiZmQsICZjdSk7CisrICAgICAg c3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOworKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRh cmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsK KyAKKy0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoTlVMTCwgYmFzZV90eXBlLCBs b3csIGhpZ2gpOworKyAgICAgIHRhcmdldF9kaWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRp ZSwgYXR0ciwgJnRhcmdldF9jdSk7CisrICAgICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpm aWxlID09IGN1LT5vYmpmaWxlKTsKKysgICAgICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0 ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRpb24sIHRhcmdldF9jdSk7CisgCistICAvKiBNYXJr IGFycmF5cyB3aXRoIGR5bmFtaWMgbGVuZ3RoIGF0IGxlYXN0IGFzIGFuIGFycmF5IG9mIHVuc3Bl Y2lmaWVkCistICAgICBsZW5ndGguICBHREIgY291bGQgY2hlY2sgdGhlIGJvdW5kYXJ5IGJ1dCBi ZWZvcmUgaXQgZ2V0cyBpbXBsZW1lbnRlZCBhdAorLSAgICAgbGVhc3QgYWxsb3cgYWNjZXNzaW5n IHRoZSBhcnJheSBlbGVtZW50cy4gICovCistICBpZiAoYXR0ciAmJiBhdHRyLT5mb3JtID09IERX X0ZPUk1fYmxvY2sxKQorLSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBl KSA9IDE7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUu a2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7CisrICAgICAg VFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0 LmxvY2xpc3QKKysgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0 X2xvY19hdHRyLCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfbG9jbGlzdC50eXBlCisrICAgICAgICA9IGRpZV90eXBl ICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlw ZSkgPSAxOwogKyAgICB9Ci0rICBpZiAobGggPT0gTlVMTCkKKysgIGVsc2UgaWYgKGF0dHIgJiYg YXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKICsgICAgewotKyAgICAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7Ci0rICAgICAgcmV0dXJuOworKyAgICAgIFRZUEVfQllURV9TVFJJREUgKHJh bmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKysg ICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPT0gMCkKKysJY29tcGxhaW50 ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUg d2l0aCB1bnN1cHBvcnRlZCB2YWx1ZSAwIikpOwogKyAgICB9CisgCisgICBuYW1lID0gZHdhcmYy X25hbWUgKGRpZSwgY3UpOworICAgaWYgKG5hbWUpCitAQCAtMTA1NTksMTAgKzEwNzY3LDEyIEBA IHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1i b2wgKnN5bSwKKyAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVt b3J5IGxvY2F0aW9uIGlzCisgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9j aywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAorICAgICAgbm90IGJlIHdvcnRod2hpbGUu ICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKKy0gICAgIG9y IG1lbW9yeSBudW1iZXJzIHNob3cgbWUgb3RoZXJ3aXNlLiAgKi8KKysgICAgIG9yIG1lbW9yeSBu dW1iZXJzIHNob3cgbWUgb3RoZXJ3aXNlLgorKyAgICAgCisrICAgICBTWU1CT0xfQ0xBU1MgbWF5 IGdldCBvdmVycmlkZW4gYnkgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KKyAKKy0g IGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7CisgICBTWU1CT0xf Q0xBU1MgKHN5bSkgPSBMT0NfQ09NUFVURUQ7CisrICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0 ZWQgKGF0dHIsIHN5bSwgY3UpOworIH0KKyAKKyAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBEV0FS RiBpbmZvcm1hdGlvbiBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCitAQCAtMTA2MDAsNiAr MTA4MTAsOCBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCisgICAgICAgZWxzZQorIAlzeW0gPSBP QlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IHN5bWJvbCk7 CisgICAgICAgT0JKU1RBVCAob2JqZmlsZSwgbl9zeW1zKyspOworKyAgICAgIC8qIFNvbWUgbWV0 aG9kcyBhcmUgY2FsbGVkIHcvbyBjaGVja2luZyBTWU1CT0xfQ09NUFVURURfT1BTIHZhbGlkaXR5 LiAgKi8KKysgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5n X2Z1bmNzOworIAorICAgICAgIC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5h bWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4gICovCisgICAgICAgU1lNQk9MX1NFVF9MQU5H VUFHRSAoc3ltLCBjdS0+bGFuZ3VhZ2UpOworQEAgLTExMzY3LDYgKzExNTc5LDkgQEAgcmVhZF90 eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisg ICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGlmICh0aGlzX3R5cGUpCisrICAgIGZpbmFsaXpl X3R5cGUgKHRoaXNfdHlwZSk7CiArCi0rICBmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoY29tcF91 bml0X2RpZSwgJmN1LCAmbmFtZSwgJmNvbXBfZGlyKTsKLSsKLSsgIHRoaXNfY3UtPnYucXVpY2st PmxpbmVzID0gbGg7CisgICByZXR1cm4gdGhpc190eXBlOworIH0KKyAKK0BAIC0xNDExOSw2NyAr MTQzMzQsMTAyIEBAIGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cikKKyAgICAgfQorIH0KKyAKKy1zdGF0aWMgdm9pZAorLWR3YXJmMl9zeW1ib2xfbWFya19jb21w dXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorLQkJCSAg ICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrLyogQ29udmVydCBEV19CTE9DSyBpbnRvIHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbi4gIEFUVFIgbXVzdCBiZSBhIERXX0JMT0NLCisrICAgYXR0 cmlidXRlIHR5cGUuICAqLwogKwotKyAgdGhpc19jdS0+di5xdWljay0+ZmlsZV9uYW1lcwotKyAg ICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkgICAgIGxo LT5udW1fZmlsZV9uYW1lcyAqIHNpemVvZiAoY2hhciAqKSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwg bGgtPm51bV9maWxlX25hbWVzOyArK2kpCi0rICAgIHRoaXNfY3UtPnYucXVpY2stPmZpbGVfbmFt ZXNbaV0gPSBmaWxlX2Z1bGxfbmFtZSAoaSArIDEsIGxoLCBjb21wX2Rpcik7Cisrc3RhdGljIHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqCisrZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRv biAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgeworLSAg aWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKKy0gICAgICAvKiAiLmRlYnVn X2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUK Ky0JIHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGlu IHRoZQorLQkgb3RoZXIgYnJhbmNoLiAgKi8KKy0gICAgICAmJiBEV19VTlNORCAoYXR0cikgPCBk d2FyZjJfcGVyX29iamZpbGUtPmxvYy5zaXplKQorLSAgICB7CistICAgICAgc3RydWN0IGR3YXJm Ml9sb2NsaXN0X2JhdG9uICpiYXRvbjsKKysgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAq YmF0b247CisgCistICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywKKy0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2Jh dG9uKSk7CistICAgICAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CistICAgICAgZ2RiX2Fz c2VydCAoYmF0b24tPnBlcl9jdSk7CisrICBnZGJfYXNzZXJ0IChhdHRyX2Zvcm1faXNfYmxvY2sg KGF0dHIpKTsKKyAKKy0gICAgICBkd2FyZjJfcmVhZF9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZp bGUtPm9iamZpbGUsCistCQkJICAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jKTsKKysgIGJhdG9u ID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAo KmJhdG9uKSk7CisrICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQg KGJhdG9uLT5wZXJfY3UpOworIAorLSAgICAgIC8qIFdlIGRvbid0IGtub3cgaG93IGxvbmcgdGhl IGxvY2F0aW9uIGxpc3QgaXMsIGJ1dCBtYWtlIHN1cmUgd2UKKy0JIGRvbid0IHJ1biBvZmYgdGhl IGVkZ2Ugb2YgdGhlIHNlY3Rpb24uICAqLworLSAgICAgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKKy0gICAgICBiYXRvbi0+ZGF0 YSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKKy0g ICAgICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKKy0gICAgICBpZiAo Y3UtPmJhc2Vfa25vd24gPT0gMCkKKy0JY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAor LQkJICAgXygiTG9jYXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFz ZSBhZGRyZXNzLiIpKTsKKysgIC8qIE5vdGUgdGhhdCB3ZSdyZSBqdXN0IGNvcHlpbmcgdGhlIGJs b2NrJ3MgZGF0YSBwb2ludGVyCisrICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2Un cmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKKysgICAgIGluZm9fYnVmZmVyIGZvciBTWU0ncyBv YmpmaWxlOyByaWdodCBub3cgd2UgbmV2ZXIgcmVsZWFzZQorKyAgICAgdGhhdCBidWZmZXIsIGJ1 dCB3aGVuIHdlIGRvIGNsZWFuIHVwIHByb3Blcmx5IHRoaXMgbWF5CisrICAgICBuZWVkIHRvIGNo YW5nZS4gICovCisrICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKKysgIGJh dG9uLT5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOworKyAgZ2RiX2Fzc2VydCAoYmF0b24t PnNpemUgPT0gMCB8fCBiYXRvbi0+ZGF0YSAhPSBOVUxMKTsKICsKLSsgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7CisrICByZXR1cm4gYmF0b247CiArfQogKwotKy8qIEEgaGVscGVyIGZvciB0aGUg InF1aWNrIiBmdW5jdGlvbnMgd2hpY2ggY29tcHV0ZXMgYW5kIGNhY2hlcyB0aGUKLSsgICByZWFs IHBhdGggZm9yIGEgZ2l2ZW4gZmlsZSBuYW1lIGZyb20gdGhlIGxpbmUgdGFibGUuCi0rICAgZHcy X3JlcXVpcmVfbGluZV9oZWFkZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSB0aGlzIGlz Ci0rICAgaW52b2tlZC4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2R3Ml9yZXF1aXJlX2Z1 bGxfcGF0aCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkgICAgICAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqY3UsCi0rCQkgICAgICAgaW50IGluZGV4KQorK3N0YXRpYyBzdHJ1Y3Qg ZHdhcmYyX2xvY2xpc3RfYmF0b24gKgorK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKLSsgIGlmICgh Y3UtPnYucXVpY2stPmZ1bGxfbmFtZXMpCi0rICAgIGN1LT52LnF1aWNrLT5mdWxsX25hbWVzCi0r ICAgICAgPSBPQlNUQUNLX0NBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQlj dS0+di5xdWljay0+bGluZXMtPm51bV9maWxlX25hbWVzLAotKwkJCXNpemVvZiAoY2hhciAqKSk7 CisrICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwogKwotKyAgaWYgKCFjdS0+ di5xdWljay0+ZnVsbF9uYW1lc1tpbmRleF0pCi0rICAgIGN1LT52LnF1aWNrLT5mdWxsX25hbWVz W2luZGV4XQotKyAgICAgID0gZ2RiX3JlYWxwYXRoIChjdS0+di5xdWljay0+ZmlsZV9uYW1lc1tp bmRleF0pOworKyAgLyogRFdfQVRfbG9jYXRpb24gb2YgdGhlIHJlZmVyZW5jZWQgRElFIG1heSBi ZSBtaXNzaW5nIGlmIHRoZSByZWZlcmVuY2VkCisrICAgICB2YXJpYWJsZSBoYXMgYmVlbiBvcHRp bWl6ZWQgb3V0LiAgKi8KKysgIGlmICghYXR0cikKKysgICAgcmV0dXJuIE5VTEw7CisgCisrICBk d2FyZjJfcmVhZF9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUsCisrCQkgICAg ICAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jKTsKICsKLSsgIHJldHVybiBjdS0+di5xdWljay0+ ZnVsbF9uYW1lc1tpbmRleF07Ci0rfQorKyAgaWYgKCEoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zm c2V0IChhdHRyKQorKwkvKiAiLmRlYnVnX2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRo ZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUKKysJICAgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0 aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCisrCSAgIG90aGVyIGJyYW5jaC4gICovCisr CSYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpKQorKyAg ICByZXR1cm4gTlVMTDsKICsKLStzdGF0aWMgc3RydWN0IHN5bXRhYiAqCi0rZHcyX2ZpbmRfbGFz dF9zb3VyY2Vfc3ltdGFiIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSt7Ci0rICBpbnQgaW5k ZXg7Ci0rICBkdzJfc2V0dXAgKG9iamZpbGUpOwotKyAgaW5kZXggPSBkd2FyZjJfcGVyX29iamZp bGUtPm5fY29tcF91bml0cyAtIDE7Ci0rICByZXR1cm4gZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAo b2JqZmlsZSwKLSsJCQkJIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaW5kZXhd KTsKKysgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2ssCisrCQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CisrICBiYXRv bi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3UpOwor KworKyAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0 IG1ha2Ugc3VyZSB3ZQorKyAgICAgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBvZiB0aGUgc2VjdGlv bi4gICovCisrICBiYXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUgLSBE V19VTlNORCAoYXR0cik7CisrICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9j LmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKKysgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+ YmFzZV9hZGRyZXNzOworKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCisrICAgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJICAgICAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3 aXRob3V0IHNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CisrCisrICByZXR1cm4g YmF0b247CiArfQogKworKy8qIFNZTSBtYXkgZ2V0IGl0cyBTWU1CT0xfQ0xBU1Mgb3ZlcnJpZGVu IG9uIGludmFsaWQgQVRUUiBjb250ZW50LiAgKi8KKysKICtzdGF0aWMgdm9pZAotK2R3Ml9mb3Jn ZXRfY2FjaGVkX3NvdXJjZV9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytkd2FyZjJf c3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1i b2wgKnN5bSwKKysJCQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKLSsgIGludCBpOwor KyAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpsb2NsaXN0X2JhdG9uOwogKwotKyAgZHcy X3NldHVwIChvYmpmaWxlKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUt Pm5fY29tcF91bml0czsgKytpKQorKyAgbG9jbGlzdF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xv Y2xpc3RfYmF0b24gKGF0dHIsIGN1KTsKKysgIGlmIChsb2NsaXN0X2JhdG9uKQogKyAgICB7Ci0r ICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUt PmFsbF9jb21wX3VuaXRzW2ldOwotKwotKyAgICAgIGlmIChjdS0+di5xdWljay0+ZnVsbF9uYW1l cykKLSsJewotKwkgIGludCBqOwotKwotKwkgIGZvciAoaiA9IDA7IGogPCBjdS0+di5xdWljay0+ bGluZXMtPm51bV9maWxlX25hbWVzOyArK2opCi0rCSAgICB4ZnJlZSAoKHZvaWQgKikgY3UtPnYu cXVpY2stPmZ1bGxfbmFtZXNbal0pOwotKwl9CisgICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAo c3ltKSA9ICZkd2FyZjJfbG9jbGlzdF9mdW5jczsKKy0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFU T04gKHN5bSkgPSBiYXRvbjsKKysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBs b2NsaXN0X2JhdG9uOwogKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbnQKLStkdzJfbG9va3VwX3N5 bXRhYiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkgICBj b25zdCBjaGFyICpmdWxsX3BhdGgsIGNvbnN0IGNoYXIgKnJlYWxfcGF0aCwKLSsJCSAgIHN0cnVj dCBzeW10YWIgKipyZXN1bHQpCi0rewotKyAgaW50IGk7Ci0rICBpbnQgY2hlY2tfYmFzZW5hbWUg PSBsYmFzZW5hbWUgKG5hbWUpID09IG5hbWU7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpiYXNlX2N1ID0gTlVMTDsKLSsKLSsgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Ci0rICBmb3IgKGkg PSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKLSsgICAgewot KyAgICAgIGludCBqOwotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdh cmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKLSsKLSsgICAgICBpZiAoY3UtPnYu cXVpY2stPnN5bXRhYikKLSsJY29udGludWU7Ci0rCi0rICAgICAgZHcyX3JlcXVpcmVfbGluZV9o ZWFkZXIgKG9iamZpbGUsIGN1KTsKLSsgICAgICBpZiAoIWN1LT52LnF1aWNrLT5saW5lcykKLSsJ Y29udGludWU7Ci0rCi0rICAgICAgZm9yIChqID0gMDsgaiA8IGN1LT52LnF1aWNrLT5saW5lcy0+ bnVtX2ZpbGVfbmFtZXM7ICsraikKLSsJewotKwkgIGNvbnN0IGNoYXIgKnRoaXNfbmFtZSA9IGN1 LT52LnF1aWNrLT5maWxlX25hbWVzW2pdOwotKwotKwkgIGlmIChGSUxFTkFNRV9DTVAgKG5hbWUs IHRoaXNfbmFtZSkgPT0gMCkKLSsJICAgIHsKLSsJICAgICAgKnJlc3VsdCA9IGR3Ml9pbnN0YW50 aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1KTsKLSsJICAgICAgcmV0dXJuIDE7Ci0rCSAgICB9Ci0r Ci0rCSAgaWYgKGNoZWNrX2Jhc2VuYW1lICYmICEgYmFzZV9jdQotKwkgICAgICAmJiBGSUxFTkFN RV9DTVAgKGxiYXNlbmFtZSAodGhpc19uYW1lKSwgbmFtZSkgPT0gMCkKLSsJICAgIGJhc2VfY3Ug PSBjdTsKLSsKLSsJICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGNv bnN0IGNoYXIgKnRoaXNfZnVsbF9uYW1lID0gZHcyX3JlcXVpcmVfZnVsbF9wYXRoIChvYmpmaWxl LAotKwkJCQkJCQkJICBjdSwgaik7Ci0rCi0rCSAgICAgIGlmICh0aGlzX2Z1bGxfbmFtZQotKwkJ ICAmJiBGSUxFTkFNRV9DTVAgKGZ1bGxfcGF0aCwgdGhpc19mdWxsX25hbWUpID09IDApCi0rCQl7 Ci0rCQkgICpyZXN1bHQgPSBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBjdSk7Ci0r CQkgIHJldHVybiAxOwotKwkJfQotKwkgICAgfQotKwotKwkgIGlmIChyZWFsX3BhdGggIT0gTlVM TCkKLSsJICAgIHsKLSsJICAgICAgY29uc3QgY2hhciAqdGhpc19mdWxsX25hbWUgPSBkdzJfcmVx dWlyZV9mdWxsX3BhdGggKG9iamZpbGUsCi0rCQkJCQkJCQkgIGN1LCBqKTsKLSsKLSsJICAgICAg aWYgKHRoaXNfZnVsbF9uYW1lICE9IE5VTEwpCi0rCQl7Ci0rCQkgIGNoYXIgKnJwID0gZ2RiX3Jl YWxwYXRoICh0aGlzX2Z1bGxfbmFtZSk7Ci0rCQkgIGlmIChycCAhPSBOVUxMICYmIEZJTEVOQU1F X0NNUCAocmVhbF9wYXRoLCBycCkgPT0gMCkKLSsJCSAgICB7Ci0rCQkgICAgICB4ZnJlZSAocnAp OwotKwkJICAgICAgKnJlc3VsdCA9IGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1 KTsKLSsJCSAgICAgIHJldHVybiAxOwotKwkJICAgIH0KLSsJCSAgeGZyZWUgKHJwKTsKLSsJCX0K LSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICBpZiAoYmFzZV9jdSkKKysgIGVsc2UgaWYgKGF0 dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCiArICAgIHsKLSsgICAgICAqcmVzdWx0ID0gZHcyX2lu c3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgYmFzZV9jdSk7Ci0rICAgICAgcmV0dXJuIDE7Ci0r ICAgIH0KLSsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgc3RydWN0IHN5bXRhYiAqCi0r ZHcyX2xvb2t1cF9zeW1ib2wgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgYmxvY2tfaW5k ZXgsCi0rCQkgICBjb25zdCBjaGFyICpuYW1lLCBkb21haW5fZW51bSBkb21haW4pCi0rewotKyAg LyogV2UgZG8gYWxsIHRoZSB3b3JrIGluIHRoZSBwcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcg aG9vawotKyAgICAgaW5zdGVhZC4gICovCi0rICByZXR1cm4gTlVMTDsKLSt9CisrICAgICAgU1lN Qk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsKKysgICAgICBT WU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9u IChhdHRyLCBjdSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIHN0cnVjdCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CisrICAgICAgZHdhcmYyX2ludmFsaWRfYXR0cmliX2Ns YXNzX2NvbXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9uIiwKKysJCQkJCSAgICAgU1lNQk9M X05BVFVSQUxfTkFNRSAoc3ltKSk7CisgCistICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgm Y3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3 YXJmMl9sb2NleHByX2JhdG9uKSk7CistICAgICAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7 CistICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7CisrICAgICAgLyogU29tZSBtZXRo b2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFsaWRpdHku ICAqLworIAorLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorLQl7CistCSAg LyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIK Ky0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9pbnRpbmcg aW50byB0aGUKKy0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93 IHdlIG5ldmVyIHJlbGVhc2UKKy0JICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xl YW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKKy0JICAgICBuZWVkIHRvIGNoYW5nZS4gICovCistCSAg YmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7CistCSAgYmF0b24tPmRhdGEgPSBE V19CTE9DSyAoYXR0ciktPmRhdGE7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICBkd2FyZjJf aW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24gZGVzY3JpcHRpb24iLAor LQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKKy0JICBiYXRvbi0+c2l6ZSA9IDA7 CistCSAgYmF0b24tPmRhdGEgPSBOVUxMOworLQl9CisrICAgICAgU1lNQk9MX0NPTVBVVEVEX09Q UyAoc3ltKSA9ICZkd2FyZjJfbWlzc2luZ19mdW5jczsKKysgICAgICBTWU1CT0xfTE9DQVRJT05f QkFUT04gKHN5bSkgPSBOVUxMOworIAorLSAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkg PSAmZHdhcmYyX2xvY2V4cHJfZnVuY3M7CistICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChz eW0pID0gYmF0b247CisrICAgICAgLyogRm9yIGZ1bmN0aW9ucyBhIG1pc3NpbmcgRFdfQVRfZnJh bWVfYmFzZSBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgdGhlCisrCSB3aG9sZSBmdW5jdGlvbiBkZWZp bml0aW9uLCBvbmx5IGl0cyBmcmFtZSBiYXNlIHJlc29sdmluZy4gICovCisrICAgICAgaWYgKGF0 dHItPm5hbWUgPT0gRFdfQVRfbG9jYXRpb24pCisrCVNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19P UFRJTUlaRURfT1VUOworICAgICB9CisgfQorIAorQEAgLTE0NTMzLDYgKzE0NzgzLDMxIEBAIG9m ZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1f cmhzKQorICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CisgfQor IAorKy8qIEZpbGwgaW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2FibGUgZm9yIHR5cGUgRElF cy4gICovCiArCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBleHBhbmRzIGFsbCBzeW10YWJz IHRoYXQgaG9sZCBhbiBvYmplY3QKLSsgICBuYW1lZCBOQU1FLiAgKi8KICtzdGF0aWMgdm9pZAot K2R3Ml9kb19leHBhbmRfc3ltdGFic19tYXRjaGluZyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IGNoYXIgKm5hbWUpCisrZmV0Y2hfZGllX3R5cGVfYXR0cnMgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQogK3sKLSsgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CisrICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy OwogKwotKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCi0rICAgIHsKLSsg ICAgICBvZmZzZXRfdHlwZSAqdmVjOworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X2RhdGFfbG9jYXRpb24sIGN1KTsKKysgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQor KyAgICBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpID0gZHdhcmYyX2F0dHJf dG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwKKysJCQkJCQkJCQkgIGN1KTsKKysgIGdkYl9hc3NlcnQg KCFUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkpOwogKwotKyAgICAgIGlmIChmaW5k X3Nsb3RfaW5fbWFwcGVkX2hhc2ggKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUsCi0r CQkJCSAgICBuYW1lLCAmdmVjKSkKLSsJewotKwkgIG9mZnNldF90eXBlIGksIGxlbiA9IE1BWUJF X1NXQVAgKCp2ZWMpOwotKwkgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKLSsJICAgIHsKLSsJ ICAgICAgb2Zmc2V0X3R5cGUgY3VfaW5kZXggPSBNQVlCRV9TV0FQICh2ZWNbaSArIDFdKTsKLSsJ ICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3U7Ci0rCSAgICAgIGN1ID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tjdV9pbmRleF07Ci0rCSAgICAgIGR3Ml9pbnN0 YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1KTsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rfQor KyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOworKyAgaWYg KGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9 IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQg KCFUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKTsKICsKLStzdGF0aWMgdm9pZAotK2R3Ml9wcmVf ZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkg aW50IGtpbmQsIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJCSBkb21haW5fZW51bSBkb21haW4pCi0r ewotKyAgZHcyX2RvX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLCBuYW1lKTsKKysg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7CisrICBpZiAo YXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSA9 IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQg KCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSk7CiArfQogKwotK3N0YXRpYyB2b2lkCi0rZHcy X3ByaW50X3N0YXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSt7Ci0rICBpbnQgaSwgY291 bnQ7Ci0rCi0rICBkdzJfc2V0dXAgKG9iamZpbGUpOwotKyAgY291bnQgPSAwOwotKyAgZm9yIChp ID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCi0rICAgIHsK LSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+YWxsX2NvbXBfdW5pdHNbaV07CisgLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBE SUUgdG8gVFlQRS4gIFNhdmUgaXQgaW4gQ1UncyBoYXNoCisgICAgdGFibGUgaWYgbmVjZXNzYXJ5 LiAgRm9yIGNvbnZlbmllbmNlLCByZXR1cm4gVFlQRS4KKyAKK0BAIC0xNDU1OCw2ICsxNDgzMyw4 IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3Ut Pm9iamZpbGU7CisgICBodGFiX3QgKnR5cGVfaGFzaF9wdHI7CisgCisrICBmZXRjaF9kaWVfdHlw ZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CiArCi0rICAgICAgaWYgKCFjdS0+di5xdWljay0+c3lt dGFiKQotKwkrK2NvdW50OwotKyAgICB9Ci0rICBwcmludGZfZmlsdGVyZWQgKF8oIiAgTnVtYmVy IG9mIHVucmVhZCBDVXM6ICVkXG4iKSwgY291bnQpOwotK30KKyAgIC8qIEZvciBBZGEgdHlwZXMs IG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNpZmljIGRhdGEgaXMgYWx3YXlzCisgICAgICBp bml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0KS4gIFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3 aGVyZQorICAgICAgd2Ugc2hvdWxkIG5vdCBiZSBkb2luZyBzbywgYmVjYXVzZSB0aGUgdHlwZS1z cGVjaWZpYyBhcmVhIGlzCitkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFk LmMKK2luZGV4IDI3MGY5M2YuLmE1ODljMjMgMTAwNjQ0CistLS0gYS9nZGIvZWxmcmVhZC5jCisr KysgYi9nZGIvZWxmcmVhZC5jCitAQCAtMzcsNiArMzcsNyBAQAorICNpbmNsdWRlICJjb21wbGFp bnRzLmgiCisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgInBzeW1wcml2LmgiCisr I2luY2x1ZGUgImdkYnR5cGVzLmgiCisgCisgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVh ZCAodm9pZCk7CisgCitAQCAtMTgzLDcgKzE4NCw4IEBAIHJlY29yZF9taW5pbWFsX3N5bWJvbCAo Y29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVfbGVuLCBpbnQgY29weV9uYW1lLAorIHsKKyAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CisgCist ICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQpCisr ICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQKKysg ICAgICB8fCBtc190eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKKyAgICAgYWRkcmVzcyA9IGdk YmFyY2hfc21hc2hfdGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKKyAKKyAgIHJldHVy biBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9mdWxsIChuYW1lLCBuYW1lX2xlbiwgY29weV9u YW1lLCBhZGRyZXNzLAorQEAgLTM5MSw3ICszOTMsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHR5cGUsCisgCSAgICB7CisgCSAgICAgIGlmIChzeW0t PmZsYWdzICYgKEJTRl9HTE9CQUwgfCBCU0ZfV0VBSykpCisgCQl7CistCQkgIG1zX3R5cGUgPSBt c3RfdGV4dDsKKysJCSAgaWYgKHN5bS0+ZmxhZ3MgJiBCU0ZfR05VX0lORElSRUNUX0ZVTkNUSU9O KQorKwkJICAgIG1zX3R5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7CisrCQkgIGVsc2UKKysJCSAg ICBtc190eXBlID0gbXN0X3RleHQ7CisgCQl9CisgCSAgICAgIGVsc2UgaWYgKChzeW0tPm5hbWVb MF0gPT0gJy4nICYmIHN5bS0+bmFtZVsxXSA9PSAnTCcpCisgCQkgICAgICAgfHwgKChzeW0tPmZs YWdzICYgQlNGX0xPQ0FMKQorQEAgLTU3Miw2ICs1NzcsMjUwIEBAIGVsZl9zeW10YWJfcmVhZCAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAorICAgICB9CisgfQorIAorKy8qIEZJ WE1FOiBEZWxheSBpdCB0aHJvdWdoIGVsZl9zeW1fZm5zLiAgKi8KICsKICtzdGF0aWMgdm9pZAot K2R3Ml9kdW1wIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytlbGZfcmVsX3BsdF9yZWFkIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUpCiArewot KyAgLyogTm90aGluZyB3b3J0aCBwcmludGluZy4gICovCi0rfQorKyAgYmZkICpvYmZkID0gb2Jq ZmlsZS0+b2JmZDsKKysgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRf ZWxmX2JhY2tlbmRfZGF0YSAob2JmZCk7CisrICBhc2VjdGlvbiAqcGx0LCAqcmVscGx0LCAqZ290 X3BsdDsKKysgIHVuc2lnbmVkIHU7CisrICBpbnQgcGx0X2VsZl9pZHg7CisrICBiZmRfc2l6ZV90 eXBlIHJlbG9jX2NvdW50LCByZWxvYzsKKysgIGNoYXIgKnN0cmluZ19idWZmZXIgPSBOVUxMOwor KyAgc2l6ZV90IHN0cmluZ19idWZmZXJfc2l6ZSA9IDA7CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFj a190bzsKKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+Z2RiYXJjaDsKKysg IHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f ZGF0YV9wdHI7CisrICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRyX3R5cGUpOwog KwotK3N0YXRpYyB2b2lkCi0rZHcyX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg c3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMsCi0rCSAgICAgIHN0cnVjdCBzZWN0 aW9uX29mZnNldHMgKmRlbHRhKQotK3sKLSsgIC8qIFRoZXJlJ3Mgbm90aGluZyB0byByZWxvY2F0 ZSBoZXJlLiAgKi8KLSt9CisrICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9i YWNrbGluaykKKysgICAgcmV0dXJuOwogKwotK3N0YXRpYyB2b2lkCi0rZHcyX2V4cGFuZF9zeW10 YWJzX2Zvcl9mdW5jdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCSBjb25zdCBj aGFyICpmdW5jX25hbWUpCi0rewotKyAgZHcyX2RvX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChv YmpmaWxlLCBmdW5jX25hbWUpOwotK30KKysgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1l IChvYmZkLCAiLnBsdCIpOworKyAgaWYgKHBsdCA9PSBOVUxMKQorKyAgICByZXR1cm47CisrICBw bHRfZWxmX2lkeCA9IGVsZl9zZWN0aW9uX2RhdGEgKHBsdCktPnRoaXNfaWR4OwogKwotK3N0YXRp YyB2b2lkCi0rZHcyX2V4cGFuZF9hbGxfc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp Ci0rewotKyAgaW50IGk7CisrICBnb3RfcGx0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9i ZmQsICIuZ290LnBsdCIpOworKyAgaWYgKGdvdF9wbHQgPT0gTlVMTCkKKysgICAgcmV0dXJuOwog KwotKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVy X29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ld OworKyAgLyogVGhpcyBzZWFyY2ggYWxnb3JpdGhtIGlzIGZyb20gX2JmZF9lbGZfY2Fub25pY2Fs aXplX2R5bmFtaWNfcmVsb2MuICAqLworKyAgZm9yIChyZWxwbHQgPSBvYmZkLT5zZWN0aW9uczsg cmVscGx0ICE9IE5VTEw7IHJlbHBsdCA9IHJlbHBsdC0+bmV4dCkKKysgICAgaWYgKGVsZl9zZWN0 aW9uX2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX2luZm8gPT0gcGx0X2VsZl9pZHgKKysJJiYg KGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTAor KwkgICAgfHwgZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfdHlwZSA9PSBT SFRfUkVMQSkpCisrICAgICAgYnJlYWs7CisrICBpZiAocmVscGx0ID09IE5VTEwpCisrICAgIHJl dHVybjsKICsKLSsgICAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBjdSk7Ci0r ICAgIH0KLSt9CisrICBpZiAoISBiZWQtPnMtPnNsdXJwX3JlbG9jX3RhYmxlIChvYmZkLCByZWxw bHQsIGR5bl9zeW1ib2xfdGFibGUsIFRSVUUpKQorKyAgICByZXR1cm47CiArCi0rc3RhdGljIHZv aWQKLStkdzJfZXhwYW5kX3N5bXRhYnNfd2l0aF9maWxlbmFtZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCi0rCQkJCSAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgaW50IGk7CisrICBi YWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZzdHJpbmdfYnVm ZmVyKTsKICsKLSsgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgZHdh cmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIHJlbG9jX2NvdW50ID0gcmVs cGx0LT5zaXplIC8gZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfZW50c2l6 ZTsKKysgIGZvciAocmVsb2MgPSAwOyByZWxvYyA8IHJlbG9jX2NvdW50OyByZWxvYysrKQogKyAg ICB7Ci0rICAgICAgaW50IGo7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3Ug PSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgICAgIGNvbnN0IGNo YXIgKm5hbWUsICpuYW1lX2dvdF9wbHQ7CisrICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICpt c3ltOworKyAgICAgIENPUkVfQUREUiBhZGRyZXNzOworKyAgICAgIGNvbnN0IGNoYXIgKnN1ZmZp eCA9ICJAZ290LnBsdCI7CisrICAgICAgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdHJsZW4gKHN1ZmZp eCk7CisrICAgICAgc2l6ZV90IG5hbWVfbGVuOwogKwotKyAgICAgIGlmIChjdS0+di5xdWljay0+ c3ltdGFiKQotKwljb250aW51ZTsKKysgICAgICBuYW1lID0gYmZkX2FzeW1ib2xfbmFtZSAoKnJl bHBsdC0+cmVsb2NhdGlvbltyZWxvY10uc3ltX3B0cl9wdHIpOworKyAgICAgIG5hbWVfbGVuID0g c3RybGVuIChuYW1lKTsKKysgICAgICBhZGRyZXNzID0gcmVscGx0LT5yZWxvY2F0aW9uW3JlbG9j XS5hZGRyZXNzOwogKwotKyAgICAgIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIChvYmpmaWxlLCBj dSk7Ci0rICAgICAgaWYgKCFjdS0+di5xdWljay0+bGluZXMpCisrICAgICAgLyogRG9lcyB0aGUg cG9pbnRlciByZXNpZGUgaW4gdGhlIC5nb3QucGx0IHNlY3Rpb24/ICAqLworKyAgICAgIGlmICgh KGJmZF9nZXRfc2VjdGlvbl92bWEgKG9iZmQsIGdvdF9wbHQpIDw9IGFkZHJlc3MKKysgICAgICAg ICAgICAmJiBhZGRyZXNzIDwgYmZkX2dldF9zZWN0aW9uX3ZtYSAob2JmZCwgZ290X3BsdCkKKysJ CQkgKyBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoZ290X3BsdCkpKQogKwljb250aW51ZTsKICsKLSsg ICAgICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1lczsg KytqKQorKyAgICAgIC8qIFdlIGNhbm5vdCBjaGVjayBpZiBOQU1FIGlzIGEgcmVmZXJlbmNlIHRv IG1zdF90ZXh0X2dudV9pZnVuYyBhcyBpbgorKwkgT0JKRklMRSB0aGUgc3ltYm9sIGlzIHVuZGVm aW5lZCBhbmQgdGhlIG9iamZpbGUgaGF2aW5nIE5BTUUgZGVmaW5lZAorKwkgbWF5IG5vdCB5ZXQg aGF2ZSBiZWVuIGxvYWRlZC4gICovCisrCisrICAgICAgaWYgKHN0cmluZ19idWZmZXJfc2l6ZSA8 IG5hbWVfbGVuICsgc3VmZml4X2xlbikKICsJewotKwkgIGNvbnN0IGNoYXIgKnRoaXNfbmFtZSA9 IGN1LT52LnF1aWNrLT5maWxlX25hbWVzW2pdOwotKwkgIGlmIChzdHJjbXAgKHRoaXNfbmFtZSwg ZmlsZW5hbWUpID09IDApCi0rCSAgICB7Ci0rCSAgICAgIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIg KG9iamZpbGUsIGN1KTsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9CisrCSAgc3RyaW5nX2J1ZmZl cl9zaXplID0gMiAqIChuYW1lX2xlbiArIHN1ZmZpeF9sZW4pOworKwkgIHN0cmluZ19idWZmZXIg PSB4cmVhbGxvYyAoc3RyaW5nX2J1ZmZlciwgc3RyaW5nX2J1ZmZlcl9zaXplKTsKICsJfQorKyAg ICAgIG1lbWNweSAoc3RyaW5nX2J1ZmZlciwgbmFtZSwgbmFtZV9sZW4pOworKyAgICAgIG1lbWNw eSAoJnN0cmluZ19idWZmZXJbbmFtZV9sZW5dLCBzdWZmaXgsIHN1ZmZpeF9sZW4pOworKworKyAg ICAgIG1zeW0gPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKHN0cmluZ19idWZmZXIsIG5hbWVfbGVu ICsgc3VmZml4X2xlbiwgMSwKKysJCQkJICAgIGFkZHJlc3MsIG1zdF9zbG90X2dvdF9wbHQsIGdv dF9wbHQsCisrCQkJCSAgICBvYmpmaWxlKTsKKysgICAgICBpZiAobXN5bSkKKysJTVNZTUJPTF9T SVpFIChtc3ltKSA9IHB0cl9zaXplOwogKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoYmFja190 byk7CiArfQogKwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStkdzJfZmluZF9zeW1ib2xfZmlsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCisrLyogRnVuY3Rpb24g ZG9lcyBub3QgY2hlY2sgZm9yIHBvc3NpYmx5IGNyZWF0ZWQgZHVwbGljaXRpZXMgaW4gdGhlIGNh Y2hlLgorKyAgIENoZWNrIGl0IGJ5IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIGZpcnN0LiAg Ki8KKysKKytzdGF0aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sICoKKytnbnVfaWZ1bmNfcmVjb3Jk X2NhY2hlX3VuY2hlY2tlZCAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJCQkJICBDT1JF X0FERFIgZnVuY3Rpb25fYWRkcmVzcykKICt7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdTsKLSsgIG9mZnNldF90eXBlICp2ZWM7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1z eW0sICptc3ltX25ldzsKKysgIGFzZWN0aW9uICpzZWN0OworKyAgc3RydWN0IG9iamZpbGUgKm9i amZpbGU7CisrICBjaGFyICpmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3Q7CiArCi0rICBkdzJf c2V0dXAgKG9iamZpbGUpOwotKwotKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3Rh YmxlKQorKyAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZnVuY3Rpb25fYWRk cmVzcyk7CisrICBpZiAobXN5bSA9PSBOVUxMKQorKyAgICByZXR1cm4gTlVMTDsKKysgIGlmIChT WU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKICsgICAgcmV0 dXJuIE5VTEw7CisrICAvKiBtaW5pbWFsIHN5bWJvbHMgaGF2ZSBhbHdheXMgU1lNQk9MX09CSl9T RUNUSU9OIG5vbi1OVUxMLiAgKi8KKysgIHNlY3QgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0p LT50aGVfYmZkX3NlY3Rpb247CisrICBvYmpmaWxlID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3lt KS0+b2JqZmlsZTsKICsKLSsgIGlmICghZmluZF9zbG90X2luX21hcHBlZF9oYXNoIChkd2FyZjJf cGVyX29iamZpbGUtPmluZGV4X3RhYmxlLAotKwkJCQkgbmFtZSwgJnZlYykpCisrICAvKiBJZiAu cGx0IGp1bXBzIGJhY2sgdG8gLnBsdCB0aGUgc3ltYm9sIGlzIHN0aWxsIGRlZmVycmVkIGZvciBs YXRlcgorKyAgICAgcmVzb2x1dGlvbiBhbmQgaXQgaGFzIG5vIHVzZSBmb3IgR0RCLiAgQmVzaWRl cyAiLnRleHQiIHRoaXMgc3ltYm9sIGNhbgorKyAgICAgcmVzaWRlIGFsc28gaW4gIi5vcGQiIGZv ciBwcGM2NCBmdW5jdGlvbiBkZXNjcmlwdG9yLiAgKi8KKysgIGlmIChzdHJjbXAgKGJmZF9nZXRf c2VjdGlvbl9uYW1lIChvYmpmaWxlLT5vYmZkLCBzZWN0KSwgIi5wbHQiKSA9PSAwKQogKyAgICBy ZXR1cm4gTlVMTDsKICsKLSsgIC8qIE5vdGUgdGhhdCB0aGlzIGp1c3QgbG9va3MgYXQgdGhlIHZl cnkgZmlyc3Qgb25lIG5hbWVkIE5BTUUgLS0gYnV0Ci0rICAgICBhY3R1YWxseSB3ZSBhcmUgbG9v a2luZyBmb3IgYSBmdW5jdGlvbi4gIGZpbmRfbWFpbl9maWxlbmFtZQotKyAgICAgc2hvdWxkIGJl IHJld3JpdHRlbiBzbyB0aGF0IGl0IGRvZXNuJ3QgcmVxdWlyZSBhIGN1c3RvbSBob29rLiAgSXQK LSsgICAgIGNvdWxkIGp1c3QgdXNlIHRoZSBvcmRpbmFyeSBzeW1ib2wgdGFibGVzLiAgKi8KLSsg IC8qIHZlY1swXSBpcyB0aGUgbGVuZ3RoLCB3aGljaCBtdXN0IGFsd2F5cyBiZSA+MC4gICovCi0r ICBjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbTUFZQkVfU1dBUCAodmVj WzFdKV07CisrICBmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QgPSBhbGxvY2EgKHN0cmxlbiAo ZnVuY3Rpb25fbmFtZSkKKysJCQkJCSsgc3RybGVuICgiQGdudS1pZnVuYy10Z3QiKSArIDEpOwor KyAgc3ByaW50ZiAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0LCAiJXNAZ251LWlmdW5jLXRn dCIsIGZ1bmN0aW9uX25hbWUpOwogKwotKyAgZHcyX3JlcXVpcmVfbGluZV9oZWFkZXIgKG9iamZp bGUsIGN1KTsKLSsgIGlmICghY3UtPnYucXVpY2stPmxpbmVzKQotKyAgICByZXR1cm4gTlVMTDsK KysgIC8qIENyZWF0ZSBuZXcgYWxpYXMgIkBnbnUtaWZ1bmMtdGd0IiBmb3IgTVNZTS4gICovCisr ICBtc3ltX25ldyA9IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1 bmNfdGd0LAorKwkJCQkgICAgc3RybGVuIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QpLCAx LAorKwkJCQkgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pLAorKwkJCQkgICAgTVNZTUJP TF9UWVBFIChtc3ltKSwgc2VjdCwgb2JqZmlsZSk7CisrICAvKiBTaG91bGQgbm90IGhhcHBlbi4g ICovCisrICBpZiAobXN5bV9uZXcgPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CiArCi0rICByZXR1 cm4gY3UtPnYucXVpY2stPmZpbGVfbmFtZXNbY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9u YW1lcyAtIDFdOworKyAgLyogb2JqZmlsZS0+bXN5bWJvbHMgYXJyYXkgaXMgYWxyZWFkeSBhbGxv Y2F0ZWQgb24gb2JzdGFjayBhbmQgaXQgY2Fubm90IGJlCisrICAgICBlYXNpbHkgZXh0ZW5kZWQu ICBUaGVyZWZvcmUgPHRhYj4tY29tcGxldGlvbiBvbiBzeW1ib2wgbmFtZXMgd2lsbCBuZXZlcgor KyAgICAgc2hvdyB0aGUgQGdudS1pZnVuYy10Z3Qgc3ltYm9sLiAgTGluayBpdCBhdCBsZWFzdCB0 byB0aGUgaGFzaCB0YWJsZSBzbworKyAgICAgdGhhdCByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNo ZSBjYW4gZmluZCBpdC4gICovCisrICBhZGRfbWluc3ltX3RvX2hhc2hfdGFibGUgKG1zeW1fbmV3 LCBvYmpmaWxlLT5tc3ltYm9sX2hhc2gpOworKyAgICAKKysgIE1TWU1CT0xfU0laRSAobXN5bV9u ZXcpID0gTVNZTUJPTF9TSVpFIChtc3ltKTsKKysgIHJldHVybiBtc3ltX25ldzsKICt9CiArCi0r c3RhdGljIHZvaWQKLStkdzJfbWFwX2FkYV9zeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSsJCSAgICAgaW50ICgqd2lsZF9tYXRjaCkgKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBj aGFyICopLAotKwkJICAgICBpbnQgKCppc19uYW1lX3N1ZmZpeCkgKGNvbnN0IGNoYXIgKiksCi0r CQkgICAgIHZvaWQgKCpjYWxsYmFjaykgKHN0cnVjdCBvYmpmaWxlICosCi0rCQkJCSAgICAgICBz dHJ1Y3Qgc3ltdGFiICosIHZvaWQgKiksCi0rCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBn bG9iYWwsCi0rCQkgICAgIGRvbWFpbl9lbnVtIG5hbWVzcGFjZSwgaW50IHdpbGQsCi0rCQkgICAg IHZvaWQgKmRhdGEpCi0rewotKyAgLyogRm9yIG5vdywgd2UgZG9uJ3Qgc3VwcG9ydCBBZGEsIHNv IHRoaXMgZnVuY3Rpb24gY2FuJ3QgYmUKLSsgICAgIHJlYWNoZWQuICAqLwotKyAgaW50ZXJuYWxf ZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgXygibWFwX2FkYV9zeW10YWJzIGNhbGxl ZCB2aWEgaW5kZXggbWV0aG9kIikpOwotK30KKysvKiBDaGVjayBmaXJzdCB0aGUgY2FjaGUgaWYg aXQgLSB1bmxpa2VseSAtIGhhcyBub3QgYmVlbiBwb3B1bGF0ZWQgc2luY2UKKysgICBicF9nbnVf aWZ1bmNfcmVzb2x2ZXIgaGFzIGJlZW4gY3JlYXRlZC4gIGdudV9pZnVuY19yZWNvcmRfY2FjaGVf dW5jaGVja2VkCisrICAgY291bGQgY3JlYXRlIGEgZHVwbGljYXRlIHN5bWJvbCBvdGhlcndpc2Uu ICAqLwogKwotK3N0YXRpYyB2b2lkCi0rZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgICAgIGludCAoKmZpbGVfbWF0Y2hlcikgKGNvbnN0 IGNoYXIgKiwgdm9pZCAqKSwKLSsJCQkgICAgIGludCAoKm5hbWVfbWF0Y2hlcikgKGNvbnN0IGNo YXIgKiwgdm9pZCAqKSwKLSsJCQkgICAgIGRvbWFpbl9lbnVtIGtpbmQsCi0rCQkJICAgICB2b2lk ICpkYXRhKQorK3ZvaWQKKytnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJCQlDT1JFX0FERFIgZnVuY3Rp b25fYWRkcmVzcykKICt7Ci0rICBpbnQgaTsKLSsgIG9mZnNldF90eXBlIGl0ZXI7Ci0rCi0rICBk dzJfc2V0dXAgKG9iamZpbGUpOwotKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3Rh YmxlKQotKyAgICByZXR1cm47CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CiArCi0r ICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkK KysgIG1zeW0gPSByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSAoZnVuY3Rpb25fbmFtZSk7Cisr ICBpZiAobXN5bSA9PSBOVUxMKQorKyAgICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tl ZCAoZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fYWRkcmVzcyk7CisrICBlbHNlIGlmIChTWU1CT0xf VkFMVUVfQUREUkVTUyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKICsgICAgewotKyAgICAg IGludCBqOwotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKKysgICAgICAvKiBUaGlzIGNhc2UgaW5kaWNh dGVzIGJ1Z2d5IGluZmVyaW9yIHByb2dyYW0uICBHREIgd291bGQgbmVlZCB0byB1cGRhdGUKKysJ IGl0cyBNU1lNIGNhY2hlIHN5bWJvbCBmb3IgZnVuY3Rpb25fYWRkcmVzcy4gIEFueXdheSBGVU5D VElPTl9OQU1FIGlzCisrCSBuZXZlciBub3JtYWxseSBmb3VuZCBpbiB0aGUgY2FzZSBhcyBpbiBz dWNoIGNhc2Ugbm8KKysJIGJwX2dudV9pZnVuY19yZXNvbHZlciB3b3VsZCBiZSBjcmVhdGVkIGlu IHRoZSBmaXJzdCBwbGFjZS4gICovCiArCi0rICAgICAgY3UtPnYucXVpY2stPm1hcmsgPSAwOwot KyAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFiKQotKwljb250aW51ZTsKKysgICAgICB3YXJu aW5nIChfKCJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gXCIlc1wiIGhhcyBjaGFuZ2VkIGl0cyByZXNv bHZlZCAiCisrCQkgImZ1bmN0aW9uX2FkZHJlc3MgZnJvbSAlcyB0byAlczsgR0RCIGlzIHVzaW5n IHRoZSBmb3JtZXIgb25lIiksCisrCSAgICAgICBmdW5jdGlvbl9uYW1lLCBwYWRkcmVzcyAoZ2Ri YXJjaCwgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pKSwKKysJICAgICAgIHBhZGRyZXNzIChn ZGJhcmNoLCBmdW5jdGlvbl9hZGRyZXNzKSk7CisrICAgIH0KKyt9CiArCi0rICAgICAgZHcyX3Jl cXVpcmVfbGluZV9oZWFkZXIgKG9iamZpbGUsIGN1KTsKLSsgICAgICBpZiAoIWN1LT52LnF1aWNr LT5saW5lcykKLSsJY29udGludWU7Cisrc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCisr cmVzb2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lKQorK3sK KysgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ290X3BsdDsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlOwogKwotKyAgICAgIGZvciAoaiA9IDA7IGogPCBjdS0+di5xdWljay0+bGluZXMtPm51bV9m aWxlX25hbWVzOyArK2opCi0rCXsKLSsJICBpZiAoZmlsZV9tYXRjaGVyIChjdS0+di5xdWljay0+ ZmlsZV9uYW1lc1tqXSwgZGF0YSkpCi0rCSAgICB7Ci0rCSAgICAgIGN1LT52LnF1aWNrLT5tYXJr ID0gMTsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQorKyAgZnVuY3Rpb25f bmFtZV9nb3RfcGx0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpICsgc3RybGVuICgi QGdvdC5wbHQiKQorKwkJCQkgICsgMSk7CisrICBzcHJpbnRmIChmdW5jdGlvbl9uYW1lX2dvdF9w bHQsICIlc0Bnb3QucGx0IiwgZnVuY3Rpb25fbmFtZSk7CiArCi0rICBmb3IgKGl0ZXIgPSAwOwot KyAgICAgICBpdGVyIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFi bGVfc2xvdHM7Ci0rICAgICAgICsraXRlcikKKysgIEFMTF9QU1BBQ0VfT0JKRklMRVMgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSwgb2JqZmlsZSkKICsgICAgewotKyAgICAgIG9mZnNldF90eXBlIGlk eCA9IDIgKiBpdGVyOwotKyAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICAgICAgb2Zmc2V0X3R5 cGUgKnZlYywgdmVjX2xlbiwgdmVjX2lkeDsKKysgICAgICBiZmQgKm9iZmQgPSBvYmpmaWxlLT5v YmZkOworKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+Z2RiYXJjaDsK KysgICAgICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5i dWlsdGluX2RhdGFfcHRyOworKyAgICAgIHNpemVfdCBwdHJfc2l6ZSA9IFRZUEVfTEVOR1RIIChw dHJfdHlwZSk7CisrICAgICAgQ09SRV9BRERSIHBvaW50ZXJfYWRkcmVzcywgZnVuY3Rpb25fYWRk cmVzczsKKysgICAgICBhc2VjdGlvbiAqcGx0OworKyAgICAgIGdkYl9ieXRlICpidWYgPSBhbGxv Y2EgKHB0cl9zaXplKTsKKysgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CiArCi0r ICAgICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlW2lk eF0gPT0gMAotKwkgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3Rh YmxlW2lkeCArIDFdID09IDApCisrICAgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAo ZnVuY3Rpb25fbmFtZV9nb3RfcGx0LCBOVUxMLCBvYmpmaWxlKTsKKysgICAgICBpZiAobXN5bSA9 PSBOVUxMKQorKwljb250aW51ZTsKKysgICAgICBpZiAoTVNZTUJPTF9UWVBFIChtc3ltKSAhPSBt c3Rfc2xvdF9nb3RfcGx0KQogKwljb250aW51ZTsKKysgICAgICBwb2ludGVyX2FkZHJlc3MgPSBT WU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSk7CiArCi0rICAgICAgbmFtZSA9IChkd2FyZjJfcGVy X29iamZpbGUtPmluZGV4X3RhYmxlLT5jb25zdGFudF9wb29sCi0rCSAgICAgICsgZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4XSk7CisrICAgICAgcGx0ID0g YmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iZmQsICIucGx0Iik7CisrICAgICAgaWYgKHBsdCA9 PSBOVUxMKQorKwljb250aW51ZTsKICsKLSsgICAgICBpZiAoISAoKm5hbWVfbWF0Y2hlcikgKG5h bWUsIGRhdGEpKQorKyAgICAgIGlmIChNU1lNQk9MX1NJWkUgKG1zeW0pICE9IHB0cl9zaXplKQor Kwljb250aW51ZTsKKysgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChwb2ludGVyX2FkZHJl c3MsIGJ1ZiwgcHRyX3NpemUpICE9IDApCiArCWNvbnRpbnVlOworKyAgICAgIGZ1bmN0aW9uX2Fk ZHJlc3MgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKGJ1ZiwgcHRyX3R5cGUpOwogKwotKyAgICAg IC8qIFRoZSBuYW1lIHdhcyBtYXRjaGVkLCBub3cgZXhwYW5kIGNvcnJlc3BvbmRpbmcgQ1VzIHRo YXQgd2VyZQotKwkgbWFya2VkLiAgKi8KLSsgICAgICB2ZWMgPSAob2Zmc2V0X3R5cGUgKikgKGR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKLSsJCQkgICAgICsg ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4ICsgMV0pOwot KyAgICAgIHZlY19sZW4gPSBNQVlCRV9TV0FQICh2ZWNbMF0pOwotKyAgICAgIGZvciAodmVjX2lk eCA9IDA7IHZlY19pZHggPCB2ZWNfbGVuOyArK3ZlY19pZHgpCi0rCXsKLSsJICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpjdQotKwkgICAgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21w X3VuaXRzW01BWUJFX1NXQVAgKHZlY1t2ZWNfaWR4ICsgMV0pXTsKLSsJICBpZiAoY3UtPnYucXVp Y2stPm1hcmspCi0rCSAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBjdSk7Ci0r CX0KKysgICAgICBtc3ltID0gZ251X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQgKGZ1bmN0 aW9uX25hbWUsIGZ1bmN0aW9uX2FkZHJlc3MpOworKyAgICAgIGlmIChtc3ltID09IE5VTEwpCisr CWNvbnRpbnVlOworKyAgICAgIHJldHVybiBtc3ltOwogKyAgICB9CisrCisrICByZXR1cm4gTlVM TDsKICt9CiArCi0rc3RhdGljIHN0cnVjdCBzeW10YWIgKgotK2R3Ml9maW5kX3BjX3NlY3Rfc3lt dGFiIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgc3RydWN0IG1pbmltYWxfc3ltYm9s ICptc3ltYm9sLAotKwkJCSBDT1JFX0FERFIgcGMsCi0rCQkJIHN0cnVjdCBvYmpfc2VjdGlvbiAq c2VjdGlvbiwKLSsJCQkgaW50IHdhcm5faWZfcmVhZGluKQorK3N0cnVjdCBtaW5pbWFsX3N5bWJv bCAqCisrcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25h bWUpCiArewotKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqZGF0YTsKLSsKLSsgIGR3Ml9z ZXR1cCAob2JqZmlsZSk7Ci0rCi0rICBpZiAoIW9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXApCi0r ICAgIHJldHVybiBOVUxMOwotKwotKyAgZGF0YSA9IGFkZHJtYXBfZmluZCAob2JqZmlsZS0+cHN5 bXRhYnNfYWRkcm1hcCwgcGMpOwotKyAgaWYgKCFkYXRhKQotKyAgICByZXR1cm4gTlVMTDsKKysg IGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndDsKICsKLSsgIGlmICh3YXJuX2lmX3Jl YWRpbiAmJiBkYXRhLT52LnF1aWNrLT5zeW10YWIpCi0rICAgIHdhcm5pbmcgKF8oIihJbnRlcm5h bCBlcnJvcjogcGMgJXMgaW4gcmVhZCBpbiBDVSwgYnV0IG5vdCBpbiBzeW10YWIuKVxuIiksCi0r CSAgICAgcGFkZHJlc3MgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBwYykpOworKyAgZnVu Y3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUp CisrCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKKysgIHNwcmludGYgKGZ1 bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9u YW1lKTsKICsKLSsgIHJldHVybiBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBkYXRh KTsKKysgIHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ251X2lm dW5jX3RndCwgTlVMTCwgTlVMTCk7CiArfQogKwotK3N0YXRpYyB2b2lkCi0rZHcyX21hcF9zeW1i b2xfbmFtZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJICAgICAgdm9pZCAoKmZ1bikg KGNvbnN0IGNoYXIgKiwgdm9pZCAqKSwKLSsJCSAgICAgIHZvaWQgKmRhdGEpCisraW50CisrcmVz b2x2ZV9nbnVfaWZ1bmMgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIENPUkVfQUREUiAqZnVu Y3Rpb25fYWRkcmVzc3ApCiArewotKyAgb2Zmc2V0X3R5cGUgaXRlcjsKLSsgIGR3Ml9zZXR1cCAo b2JqZmlsZSk7Ci0gCi0tICBpZiAoaW5mby0+c2l6ZSA+IDQgKiBwYWdlc2l6ZSAmJiAoc2VjdHAt PmZsYWdzICYgU0VDX1JFTE9DKSA9PSAwKQotKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmlu ZGV4X3RhYmxlKQotKyAgICByZXR1cm47CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07 CiArCi0rICBmb3IgKGl0ZXIgPSAwOwotKyAgICAgICBpdGVyIDwgZHdhcmYyX3Blcl9vYmpmaWxl LT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7Ci0rICAgICAgICsraXRlcikKLSAgICAg ewotLSAgICAgIG9mZl90IHBnX29mZnNldCA9IHNlY3RwLT5maWxlcG9zICYgfihwYWdlc2l6ZSAt IDEpOwotLSAgICAgIHNpemVfdCBtYXBfbGVuZ3RoID0gaW5mby0+c2l6ZSArIHNlY3RwLT5maWxl cG9zIC0gcGdfb2Zmc2V0OwotLSAgICAgIGNhZGRyX3QgcmV0YnVmID0gYmZkX21tYXAgKGFiZmQs IDAsIG1hcF9sZW5ndGgsIFBST1RfUkVBRCwKLS0JCQkJIE1BUF9QUklWQVRFLCBwZ19vZmZzZXQp OwotKyAgICAgIG9mZnNldF90eXBlIGlkeCA9IDIgKiBpdGVyOwotKyAgICAgIGNvbnN0IGNoYXIg Km5hbWU7Ci0rICAgICAgb2Zmc2V0X3R5cGUgKnZlYywgdmVjX2xlbiwgdmVjX2lkeDsKLSAKLS0g ICAgICBpZiAocmV0YnVmICE9IE1BUF9GQUlMRUQpCi0tCXsKLS0JICBpbmZvLT53YXNfbW1hcHBl ZCA9IDE7Ci0tCSAgaW5mby0+YnVmZmVyID0gcmV0YnVmICsgKHNlY3RwLT5maWxlcG9zICYgKHBh Z2VzaXplIC0gMSkpIDsKLS0jaWYgSEFWRV9QT1NJWF9NQURWSVNFCi0tCSAgcG9zaXhfbWFkdmlz ZSAocmV0YnVmLCBtYXBfbGVuZ3RoLCBQT1NJWF9NQURWX1dJTExORUVEKTsKLS0jZW5kaWYKLS0J ICByZXR1cm47Ci0tCX0KLSsgICAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJs ZS0+aW5kZXhfdGFibGVbaWR4XSA9PSAwCi0rCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRl eF90YWJsZS0+aW5kZXhfdGFibGVbaWR4ICsgMV0gPT0gMCkKLSsJY29udGludWU7CisrICBtc3lt ID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9uX25hbWUpOworKyAgaWYgKG1z eW0gIT0gTlVMTCkKKysgICAgeworKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9W QUxVRV9BRERSRVNTIChtc3ltKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQogKwotKyAgICAg IG5hbWUgPSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+Y29uc3RhbnRfcG9vbAot KwkgICAgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlW2lk eF0pOworKyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2dvdCAoZnVuY3Rpb25fbmFtZSk7 CisrICBpZiAobXN5bSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgKmZ1bmN0aW9uX2FkZHJlc3Nw ID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOworKyAgICAgIHJldHVybiAxOworKyAgICB9 CiArCi0rICAgICAgKCpmdW4pIChuYW1lLCBkYXRhKTsKLSAgICAgfQotLSNlbmRpZgorKyAgcmV0 dXJuIDA7CiArfQotIAotLSAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90 LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCi0tICBpbmZvLT5idWZmZXIgPSBidWYKLS0gICAgPSBv YnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5zaXplKTsKLStz dGF0aWMgdm9pZAotK2R3Ml9tYXBfc3ltYm9sX2ZpbGVuYW1lcyAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCi0rCQkJICB2b2lkICgqZnVuKSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZv aWQgKiksCi0rCQkJICB2b2lkICpkYXRhKQotK3sKLSsgIGludCBpOwotIAotLSAgLyogV2hlbiBk ZWJ1Z2dpbmcgLm8gZmlsZXMsIHdlIG1heSBuZWVkIHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUK LS0gICAgIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAw MTM2Lmh0bWwgLgotLSAgICAgV2UgbmV2ZXIgY29tcHJlc3Mgc2VjdGlvbnMgaW4gLm8gZmlsZXMs IHNvIHdlIG9ubHkgbmVlZCB0bwotLSAgICAgdHJ5IHRoaXMgd2hlbiB0aGUgc2VjdGlvbiBpcyBu b3QgY29tcHJlc3NlZC4gICovCi0tICByZXRidWYgPSBzeW1maWxlX3JlbG9jYXRlX2RlYnVnX3Nl Y3Rpb24gKG9iamZpbGUsIHNlY3RwLCBidWYpOwotLSAgaWYgKHJldGJ1ZiAhPSBOVUxMKQotKyAg ZHcyX3NldHVwIChvYmpmaWxlKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZp bGUtPm5fY29tcF91bml0czsgKytpKQotICAgICB7Ci0tICAgICAgaW5mby0+YnVmZmVyID0gcmV0 YnVmOwotLSAgICAgIHJldHVybjsKLSsgICAgICBpbnQgajsKLSsgICAgICBzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07 CiArCi0rICAgICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi0rCWNvbnRpbnVlOwotKwotKyAg ICAgIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIChvYmpmaWxlLCBjdSk7Ci0rICAgICAgaWYgKCFj dS0+di5xdWljay0+bGluZXMpCi0rCWNvbnRpbnVlOworIHN0cnVjdCBidWlsZF9pZAorICAgewor ICAgICBzaXplX3Qgc2l6ZTsKK0BAIC04MDAsNiArMTA0OSw4IEBAIGVsZl9zeW1maWxlX3JlYWQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKKyAJICAgICAgIGJm ZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKyAKKyAgICAgICBlbGZfc3ltdGFiX3JlYWQg KG9iamZpbGUsIFNUX0RZTkFNSUMsIGR5bnN5bWNvdW50LCBkeW5fc3ltYm9sX3RhYmxlLCAwKTsK ICsKLSsgICAgICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9u YW1lczsgKytqKQotKwl7Ci0rCSAgY29uc3QgY2hhciAqdGhpc19mdWxsX25hbWUgPSBkdzJfcmVx dWlyZV9mdWxsX3BhdGggKG9iamZpbGUsIGN1LCBqKTsKLSsJICAoKmZ1bikgKGN1LT52LnF1aWNr LT5maWxlX25hbWVzW2pdLCB0aGlzX2Z1bGxfbmFtZSwgZGF0YSk7Ci0rCX0KKysgICAgICBlbGZf cmVsX3BsdF9yZWFkIChvYmpmaWxlLCBkeW5fc3ltYm9sX3RhYmxlKTsKICAgICAgfQotK30KICAK LS0gIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCi0t ICAgICAgfHwgYmZkX2JyZWFkIChidWYsIGluZm8tPnNpemUsIGFiZmQpICE9IGluZm8tPnNpemUp Ci0tICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBkYXRhIGZyb20g JyVzJyIpLAotLQkgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rc3RhdGljIGludAotK2R3 Ml9oYXNfc3ltYm9scyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgcmV0dXJuIDE7 Ci0gfQorICAgLyogQWRkIHN5bnRoZXRpYyBzeW1ib2xzIC0gZm9yIGluc3RhbmNlLCBuYW1lcyBm b3IgYW55IFBMVCBlbnRyaWVzLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2 YWwuYworaW5kZXggMTZlOThhZS4uNGZhNGQ1ZiAxMDA2NDQKKy0tLSBhL2dkYi9ldmFsLmMKKysr KyBiL2dkYi9ldmFsLmMKK0BAIC00NCw2ICs0NCw3IEBACisgI2luY2x1ZGUgIm9iamZpbGVzLmgi CisgI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKyAjaW5jbHVkZSAid3JhcHBlci5oIgorKyNp bmNsdWRlICJkd2FyZjJsb2MuaCIKICAKLS0vKiBGaWxsIGluIFNFQ1RQLCBCVUZQIGFuZCBTSVpF UCB3aXRoIHNlY3Rpb24gaW5mbywgZ2l2ZW4gT0JKRklMRSBhbmQKLS0gICBTRUNUSU9OX05BTUUu ICovCi0rY29uc3Qgc3RydWN0IHF1aWNrX3N5bWJvbF9mdW5jdGlvbnMgZHdhcmYyX2dkYl9pbmRl eF9mdW5jdGlvbnMgPQotK3sKLSsgIGR3Ml9oYXNfc3ltYm9scywKLSsgIGR3Ml9maW5kX2xhc3Rf c291cmNlX3N5bXRhYiwKLSsgIGR3Ml9mb3JnZXRfY2FjaGVkX3NvdXJjZV9pbmZvLAotKyAgZHcy X2xvb2t1cF9zeW10YWIsCi0rICBkdzJfbG9va3VwX3N5bWJvbCwKLSsgIGR3Ml9wcmVfZXhwYW5k X3N5bXRhYnNfbWF0Y2hpbmcsCi0rICBkdzJfcHJpbnRfc3RhdHMsCi0rICBkdzJfZHVtcCwKLSsg IGR3Ml9yZWxvY2F0ZSwKLSsgIGR3Ml9leHBhbmRfc3ltdGFic19mb3JfZnVuY3Rpb24sCi0rICBk dzJfZXhwYW5kX2FsbF9zeW10YWJzLAotKyAgZHcyX2V4cGFuZF9zeW10YWJzX3dpdGhfZmlsZW5h bWUsCi0rICBkdzJfZmluZF9zeW1ib2xfZmlsZSwKLSsgIGR3Ml9tYXBfYWRhX3N5bXRhYnMsCi0r ICBkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcsCi0rICBkdzJfZmluZF9wY19zZWN0X3N5bXRh YiwKLSsgIGR3Ml9tYXBfc3ltYm9sX25hbWVzLAotKyAgZHcyX21hcF9zeW1ib2xfZmlsZW5hbWVz Ci0rfTsKKyAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotLXZvaWQKLS1kd2FyZjJfZ2V0X3Nl Y3Rpb25faW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnNlY3Rpb25f bmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgYXNlY3Rpb24gKipzZWN0cCwgZ2RiX2J5 dGUgKipidWZwLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBiZmRfc2l6ZV90eXBlICpzaXpl cCkKLS17Ci0tICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkYXRhCi0tICAgID0gb2JqZmls ZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7Ci0tICBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyAqaW5mbzsKLSsvKiBJbml0aWFsaXplIGZvciByZWFkaW5nIERXQVJG IGZvciB0aGlzIG9iamZpbGUuICBSZXR1cm4gMCBpZiB0aGlzCi0rICAgZmlsZSB3aWxsIHVzZSBw c3ltdGFicywgb3IgMSBpZiB1c2luZyB0aGUgR05VIGluZGV4LiAgKi8KLSAKLS0gIC8qIFdlIG1h eSBzZWUgYW4gb2JqZmlsZSB3aXRob3V0IGFueSBEV0FSRiwgaW4gd2hpY2ggY2FzZSB3ZSBqdXN0 Ci0tICAgICByZXR1cm4gbm90aGluZy4gICovCi0tICBpZiAoZGF0YSA9PSBOVUxMKQotK2ludAot K2R3YXJmMl9pbml0aWFsaXplX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sK LSsgIC8qIElmIHdlJ3JlIGFib3V0IHRvIHJlYWQgZnVsbCBzeW1ib2xzLCBkb24ndCBib3RoZXIg d2l0aCB0aGUKLSsgICAgIGluZGljZXMuICBJbiB0aGlzIGNhc2Ugd2UgYWxzbyBkb24ndCBjYXJl IGlmIHNvbWUgb3RoZXIgZGVidWcKLSsgICAgIGZvcm1hdCBpcyBtYWtpbmcgcHN5bXRhYnMsIGJl Y2F1c2UgdGhleSBhcmUgYWxsIGFib3V0IHRvIGJlCi0rICAgICBleHBhbmRlZCBhbnl3YXkuICAq LwotKyAgaWYgKChvYmpmaWxlLT5mbGFncyAmIE9CSkZfUkVBRE5PVykpCi0gICAgIHsKLS0gICAg ICAqc2VjdHAgPSBOVUxMOwotLSAgICAgICpidWZwID0gTlVMTDsKLS0gICAgICAqc2l6ZXAgPSAw OwotLSAgICAgIHJldHVybjsKLSsgICAgICBpbnQgaTsKLSsKLSsgICAgICBkd2FyZjJfcGVyX29i amZpbGUtPnVzaW5nX2luZGV4ID0gMTsKLSsgICAgICBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKG9i amZpbGUpOwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5f Y29tcF91bml0czsgKytpKQotKwl7Ci0rCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3Ug PSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwotKwotKwkgIGN1LT52LnF1 aWNrID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJCQlz dHJ1Y3QgZHdhcmYyX3Blcl9jdV9xdWlja19kYXRhKTsKLSsJfQotKwotKyAgICAgIC8qIFJldHVy biAxIHNvIHRoYXQgZ2RiIHNlZXMgdGhlICJxdWljayIgZnVuY3Rpb25zLiAgSG93ZXZlciwKLSsJ IHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIG5vLW9wcyBiZWNhdXNlIHdlIHdpbGwgaGF2ZSBleHBh bmRlZAotKwkgYWxsIHN5bXRhYnMuICAqLwotKyAgICAgIHJldHVybiAxOwotICAgICB9Ci0tICBp ZiAoc2VjdGlvbl9pc19wIChzZWN0aW9uX25hbWUsIEVIX0ZSQU1FX1NFQ1RJT04pKQotLSAgICBp bmZvID0gJmRhdGEtPmVoX2ZyYW1lOwotLSAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0aW9u X25hbWUsIEZSQU1FX1NFQ1RJT04pKQotLSAgICBpbmZvID0gJmRhdGEtPmZyYW1lOwotLSAgZWxz ZQotLSAgICBnZGJfYXNzZXJ0ICgwKTsKK0BAIC04MDYsNiArODA3LDcgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgICBpbnQgc2F2ZV9wb3Mx OworICAgc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24gPSBOVUxMOworICAgY2hhciAqZnVuY3Rpb25f bmFtZSA9IE5VTEw7CisrICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwogIAotLSAgaWYgKGlu Zm8tPmFzZWN0aW9uICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGluZm8tPmJ1ZmZlciA9 PSBOVUxMKQotLSAgICAvKiBXZSBoYXZlbid0IHJlYWQgdGhpcyBzZWN0aW9uIGluIHlldC4gIERv IGl0IG5vdy4gICovCi0tICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGluZm8pOwot KyAgaWYgKGR3YXJmMl9yZWFkX2luZGV4IChvYmpmaWxlKSkKLSsgICAgcmV0dXJuIDE7CisgICBw YyA9ICgqcG9zKSsrOworICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29kZTsKK0BAIC0xODIyLDYg KzE4MjQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKKyAJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJh cmNoKS0+YnVpbHRpbl9pbnQsCisgCQkJCSBub3RfbHZhbCk7CisgCSAgICB9CisrCSAgZWxzZSBp ZiAoVFlQRV9HTlVfSUZVTkMgKGZ0eXBlKSkKKysJICAgIHJldHVybiBhbGxvY2F0ZV92YWx1ZSAo VFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKSk7CisgCSAgZWxzZSBp ZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKQorIAkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVl IChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpOworIAkgIGVsc2UKK0BAIC0xODQ4LDYgKzE4NTIs OCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK ICAKLS0gICpzZWN0cCA9IGluZm8tPmFzZWN0aW9uOwotLSAgKmJ1ZnAgPSBpbmZvLT5idWZmZXI7 Ci0tICAqc2l6ZXAgPSBpbmZvLT5zaXplOwotKyAgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChvYmpm aWxlKTsKLSsgIHJldHVybiAwOwotIH0KKyAgICAgICAvKiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5 cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KKyAgICAgICBhcmcxID0gZXZhbHVhdGVf c3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOworKyAgICAgIG9sZF9jaGFpbiA9 IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKKysgICAgICBvYmplY3RfYWRkcmVzc19z ZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChhcmcxKSk7CisgICAgICAgdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKKyAgICAgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsK ICAKLSsMCi0rCi0gLyogQnVpbGQgYSBwYXJ0aWFsIHN5bWJvbCB0YWJsZS4gICovCitAQCAtMTg2 OCw2ICsxODc0LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCisgCSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworIAkgICAgfQorIAl9 IAorKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwogIAotIHZvaWQKLUBAIC0xNjk5LDYg KzI2ODgsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCi0gICAgICAgdHlwZV9zaWctPnNpZ25hdHVyZSA9IHNpZ25hdHVyZTsKLSAgICAg ICB0eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0OwotICAgICAgIHR5cGVfc2lnLT50eXBlX29mZnNl dCA9IHR5cGVfb2Zmc2V0OwotKyAgICAgIHR5cGVfc2lnLT5wZXJfY3Uub2JqZmlsZSA9IG9iamZp bGU7Ci0gCi0gICAgICAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlc19odGFiLCB0eXBlX3Np ZywgSU5TRVJUKTsKLSAgICAgICBnZGJfYXNzZXJ0IChzbG90ICE9IE5VTEwpOwotQEAgLTE4OTcs NyArMjg4Nyw3IEBAIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotICAgLyogU3RvcmUgdGhlIGZ1bmN0aW9uIHRoYXQgcmVhZHMgaW4gdGhlIHJlc3Qg b2YgdGhlIHN5bWJvbCB0YWJsZSAqLwotICAgcHN0LT5yZWFkX3N5bXRhYiA9IGR3YXJmMl9wc3lt dGFiX3RvX3N5bXRhYjsKLSAKLS0gIHRoaXNfY3UtPnBzeW10YWIgPSBwc3Q7Ci0rICB0aGlzX2N1 LT52LnBzeW10YWIgPSBwc3Q7Ci0gCi0gICBkd2FyZjJfZmluZF9iYXNlX2FkZHJlc3MgKGNvbXBf dW5pdF9kaWUsICZjdSk7Ci0gCi1AQCAtMjE4Miw2ICszMTcyLDcgQEAgY3JlYXRlX2FsbF9jb21w X3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgICBtZW1zZXQgKHRoaXNfY3Us IDAsIHNpemVvZiAoKnRoaXNfY3UpKTsKLSAgICAgICB0aGlzX2N1LT5vZmZzZXQgPSBvZmZzZXQ7 Ci0gICAgICAgdGhpc19jdS0+bGVuZ3RoID0gbGVuZ3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6ZTsK LSsgICAgICB0aGlzX2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKLSAKLSAgICAgICBpZiAobl9jb21w X3VuaXRzID09IG5fYWxsb2NhdGVkKQorICAgICAgIHN3aXRjaCAoY29kZSkKICAJewotQEAgLTI2 MTMsNyArMzYwNCw3IEBAIGFkZF9wYXJ0aWFsX3N1YnByb2dyYW0gKHN0cnVjdCBwYXJ0aWFsX2Rp ZV9pbmZvICpwZGksCi0gCSAgICAgIGFkZHJtYXBfc2V0X2VtcHR5IChvYmpmaWxlLT5wc3ltdGFi c19hZGRybWFwLAotIAkJCQkgcGRpLT5sb3dwYyArIGJhc2VhZGRyLAotIAkJCQkgcGRpLT5oaWdo cGMgLSAxICsgYmFzZWFkZHIsCi0tCQkJCSBjdS0+cGVyX2N1LT5wc3ltdGFiKTsKLSsJCQkJIGN1 LT5wZXJfY3UtPnYucHN5bXRhYik7Ci0gCSAgICB9Ci0gICAgICAgICAgIGlmICghcGRpLT5pc19k ZWNsYXJhdGlvbikKLSAJICAgIC8qIElnbm9yZSBzdWJwcm9ncmFtIERJRXMgdGhhdCBkbyBub3Qg aGF2ZSBhIG5hbWUsIHRoZXkgYXJlCi1AQCAtMjg4NSw3ICszODc2LDYgQEAgbG9jYXRlX3BkaV9z aWJsaW5nIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqb3JpZ19wZGksCi0gc3RhdGljIHZvaWQK LSBkd2FyZjJfcHN5bXRhYl90b19zeW10YWIgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0KQot IHsKLS0gIC8qIEZJWE1FOiBUaGlzIGlzIGJhcmVseSBtb3JlIHRoYW4gYSBzdHViLiAgKi8KLSAg IGlmIChwc3QgIT0gTlVMTCkKLSAgICAgewotICAgICAgIGlmIChwc3QtPnJlYWRpbikKLUBAIC0y OTU4LDcgKzM5NDgsOSBAQCBwcm9jZXNzX3F1ZXVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK LSAgICAgIG1heSBsb2FkIGEgbmV3IENVLCBhZGRpbmcgaXQgdG8gdGhlIGVuZCBvZiB0aGUgcXVl dWUuICAqLwotICAgZm9yIChpdGVtID0gZHdhcmYyX3F1ZXVlOyBpdGVtICE9IE5VTEw7IGR3YXJm Ml9xdWV1ZSA9IGl0ZW0gPSBuZXh0X2l0ZW0pCi0gICAgIHsKLS0gICAgICBpZiAoaXRlbS0+cGVy X2N1LT5wc3ltdGFiICYmICFpdGVtLT5wZXJfY3UtPnBzeW10YWItPnJlYWRpbikKLSsgICAgICBp ZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT51c2luZ19pbmRleAotKwkgID8gIWl0ZW0tPnBlcl9jdS0+ di5xdWljay0+c3ltdGFiCi0rCSAgOiAoaXRlbS0+cGVyX2N1LT52LnBzeW10YWIgJiYgIWl0ZW0t PnBlcl9jdS0+di5wc3ltdGFiLT5yZWFkaW4pKQotIAlwcm9jZXNzX2Z1bGxfY29tcF91bml0IChp dGVtLT5wZXJfY3UpOwotIAotICAgICAgIGl0ZW0tPnBlcl9jdS0+cXVldWVkID0gMDsKLUBAIC0z MDM1LDIyICs0MDI3LDcgQEAgcHN5bXRhYl90b19zeW10YWJfMSAoc3RydWN0IHBhcnRpYWxfc3lt dGFiICpwc3QpCi0gICAgICAgcmV0dXJuOwotICAgICB9CitAQCAtMjMyNSwxMyArMjMzMiwxOSBA QCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAg ICAgICB7CisgCWludCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CisgCWludCBh cnJheV9zaXplX2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworKwlpbnQgYnl0ZV9zdHJpZGVfYXJy YXlbTUFYX0ZPUlRSQU5fRElNU107CisgCWludCBuZGltZW5zaW9ucyA9IDEsIGk7CisgCXN0cnVj dCB0eXBlICp0bXBfdHlwZTsKKyAJaW50IG9mZnNldF9pdGVtOwkvKiBUaGUgYXJyYXkgb2Zmc2V0 IHdoZXJlIHRoZSBpdGVtIGxpdmVzICovCisrCUNPUkVfQUREUiBvZmZzZXRfYnl0ZTsJLyogYnl0 ZV9zdHJpZGUgYmFzZWQgb2Zmc2V0ICAqLworKwl1bnNpZ25lZCBlbGVtZW50X3NpemU7CiAgCi0t ICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChkd2FyZjJfcmVsZWFzZV9xdWV1ZSwgTlVMTCk7Ci0t Ci0tICBxdWV1ZV9jb21wX3VuaXQgKHBlcl9jdSwgcHN0LT5vYmpmaWxlKTsKLS0KLS0gIGlmIChw ZXJfY3UtPmZyb21fZGVidWdfdHlwZXMpCi0tICAgIHJlYWRfc2lnbmF0dXJlZF90eXBlX2F0X29m ZnNldCAocHN0LT5vYmpmaWxlLCBwZXJfY3UtPm9mZnNldCk7Ci0tICBlbHNlCi0tICAgIGxvYWRf ZnVsbF9jb21wX3VuaXQgKHBlcl9jdSwgcHN0LT5vYmpmaWxlKTsKLS0KLS0gIHByb2Nlc3NfcXVl dWUgKHBzdC0+b2JqZmlsZSk7Ci0tCi0tICAvKiBBZ2UgdGhlIGNhY2hlLCByZWxlYXNpbmcgY29t cGlsYXRpb24gdW5pdHMgdGhhdCBoYXZlIG5vdAotLSAgICAgYmVlbiB1c2VkIHJlY2VudGx5LiAg Ki8KLS0gIGFnZV9jYWNoZWRfY29tcF91bml0cyAoKTsKLS0KLS0gIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKLSsgIGR3Ml9kb19pbnN0YW50aWF0ZV9zeW10YWIgKHBzdC0+b2JqZmlsZSwgcGVyX2N1 KTsKLSB9CisgCWlmIChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCisgCSAgZXJyb3IgKF8oIlRv byBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsK ICAKLSAvKiBMb2FkIHRoZSBESUVzIGFzc29jaWF0ZWQgd2l0aCBQRVJfQ1UgaW50byBtZW1vcnku ICAqLwotQEAgLTMxMzAsOSArNDEwNyw4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gc3Rh dGljIHZvaWQKLSBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpwZXJfY3UpCi0gewotLSAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QgPSBwZXJfY3Ut PnBzeW10YWI7Ci0gICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSA9IHBlcl9jdS0+Y3U7Ci0tICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBzdC0+b2JqZmlsZTsKLSsgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOwotICAgQ09SRV9BRERSIGxvd3BjLCBoaWdocGM7Ci0g ICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLUBA IC0zMTY1LDggKzQxNDEsMTUgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1KQotICAgICB7Ci0gICAgICAgc3ltdGFiLT5sYW5ndWFnZSA9 IGN1LT5sYW5ndWFnZTsKLSAgICAgfQotLSAgcHN0LT5zeW10YWIgPSBzeW10YWI7Ci0tICBwc3Qt PnJlYWRpbiA9IDE7CisrCW9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAw KTsKKysJb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOwogKwot KyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXgpCi0rICAgIHBlcl9jdS0+di5x dWljay0+c3ltdGFiID0gc3ltdGFiOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RydWN0IHBh cnRpYWxfc3ltdGFiICpwc3QgPSBwZXJfY3UtPnYucHN5bXRhYjsKLSsgICAgICBwc3QtPnN5bXRh YiA9IHN5bXRhYjsKLSsgICAgICBwc3QtPnJlYWRpbiA9IDE7Ci0rICAgIH0KKyAJdG1wX3R5cGUg PSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CisgCW5kaW1lbnNpb25zID0gY2Fs Y19mNzdfYXJyYXlfZGltcyAodHlwZSk7CiAgCi0gICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0g fQotQEAgLTM1NTcsNiArNDU0MCw0NiBAQCBmcmVlX2N1X2xpbmVfaGVhZGVyICh2b2lkICphcmcp Ci0gfQorQEAgLTIzNjEsNiArMjM3NCw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQg KHRtcF90eXBlKTsKKyAJICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7 CiAgCi0gc3RhdGljIHZvaWQKLStmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotKwkJCSBjaGFyICoqbmFtZSwgY2hhciAq KmNvbXBfZGlyKQotK3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rCi0rICAqbmFtZSA9 IE5VTEw7Ci0rICAqY29tcF9kaXIgPSBOVUxMOwotKwotKyAgLyogRmluZCB0aGUgZmlsZW5hbWUu ICBEbyBub3QgdXNlIGR3YXJmMl9uYW1lIGhlcmUsIHNpbmNlIHRoZSBmaWxlbmFtZQotKyAgICAg aXMgbm90IGEgc291cmNlIGxhbmd1YWdlIGlkZW50aWZpZXIuICAqLwotKyAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX25hbWUsIGN1KTsKLSsgIGlmIChhdHRyKQotKyAgICB7Ci0rICAg ICAgKm5hbWUgPSBEV19TVFJJTkcgKGF0dHIpOwotKyAgICB9Ci0rCi0rICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfY29tcF9kaXIsIGN1KTsKLSsgIGlmIChhdHRyKQotKyAgICAqY29t cF9kaXIgPSBEV19TVFJJTkcgKGF0dHIpOwotKyAgZWxzZSBpZiAoKm5hbWUgIT0gTlVMTCAmJiBJ U19BQlNPTFVURV9QQVRIICgqbmFtZSkpCi0rICAgIHsKLSsgICAgICAqY29tcF9kaXIgPSBsZGly bmFtZSAoKm5hbWUpOwotKyAgICAgIGlmICgqY29tcF9kaXIgIT0gTlVMTCkKLSsJbWFrZV9jbGVh bnVwICh4ZnJlZSwgKmNvbXBfZGlyKTsKLSsgICAgfQotKyAgaWYgKCpjb21wX2RpciAhPSBOVUxM KQotKyAgICB7Ci0rICAgICAgLyogSXJpeCA2LjIgbmF0aXZlIGNjIHByZXBlbmRzIDxtYWNoaW5l Pi46IHRvIHRoZSBjb21waWxhdGlvbgotKwkgZGlyZWN0b3J5LCBnZXQgcmlkIG9mIGl0LiAgKi8K LSsgICAgICBjaGFyICpjcCA9IHN0cmNociAoKmNvbXBfZGlyLCAnOicpOwotKwotKyAgICAgIGlm IChjcCAmJiBjcCAhPSAqY29tcF9kaXIgJiYgY3BbLTFdID09ICcuJyAmJiBjcFsxXSA9PSAnLycp Ci0rCSpjb21wX2RpciA9IGNwICsgMTsKLSsgICAgfQotKwotKyAgaWYgKCpuYW1lID09IE5VTEwp Ci0rICAgICpuYW1lID0gIjx1bmtub3duPiI7Ci0rfQorKwkgICAgYnl0ZV9zdHJpZGVfYXJyYXlb bmFyZ3MgLSBpIC0gMV0gPQorKwkJCQkJVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRSAodG1w X3R5cGUpOwogKwotK3N0YXRpYyB2b2lkCi0gcmVhZF9maWxlX3Njb3BlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUgPSBjdS0+b2JqZmlsZTsKLUBAIC0zNTgyLDM1ICs0NjA1LDcgQEAgcmVhZF9maWxlX3Nj b3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBsb3dw YyArPSBiYXNlYWRkcjsKLSAgIGhpZ2hwYyArPSBiYXNlYWRkcjsKLSAKLS0gIC8qIEZpbmQgdGhl IGZpbGVuYW1lLiAgRG8gbm90IHVzZSBkd2FyZjJfbmFtZSBoZXJlLCBzaW5jZSB0aGUgZmlsZW5h bWUKLS0gICAgIGlzIG5vdCBhIHNvdXJjZSBsYW5ndWFnZSBpZGVudGlmaWVyLiAgKi8KLS0gIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9uYW1lLCBjdSk7Ci0tICBpZiAoYXR0cikKLS0g ICAgewotLSAgICAgIG5hbWUgPSBEV19TVFJJTkcgKGF0dHIpOwotLSAgICB9Ci0tCi0tICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY29tcF9kaXIsIGN1KTsKLS0gIGlmIChhdHRyKQot LSAgICBjb21wX2RpciA9IERXX1NUUklORyAoYXR0cik7Ci0tICBlbHNlIGlmIChuYW1lICE9IE5V TEwgJiYgSVNfQUJTT0xVVEVfUEFUSCAobmFtZSkpCi0tICAgIHsKLS0gICAgICBjb21wX2RpciA9 IGxkaXJuYW1lIChuYW1lKTsKLS0gICAgICBpZiAoY29tcF9kaXIgIT0gTlVMTCkKLS0JbWFrZV9j bGVhbnVwICh4ZnJlZSwgY29tcF9kaXIpOwotLSAgICB9Ci0tICBpZiAoY29tcF9kaXIgIT0gTlVM TCkKLS0gICAgewotLSAgICAgIC8qIElyaXggNi4yIG5hdGl2ZSBjYyBwcmVwZW5kcyA8bWFjaGlu ZT4uOiB0byB0aGUgY29tcGlsYXRpb24KLS0JIGRpcmVjdG9yeSwgZ2V0IHJpZCBvZiBpdC4gICov Ci0tICAgICAgY2hhciAqY3AgPSBzdHJjaHIgKGNvbXBfZGlyLCAnOicpOwotLQotLSAgICAgIGlm IChjcCAmJiBjcCAhPSBjb21wX2RpciAmJiBjcFstMV0gPT0gJy4nICYmIGNwWzFdID09ICcvJykK LS0JY29tcF9kaXIgPSBjcCArIDE7Ci0tICAgIH0KLS0KLS0gIGlmIChuYW1lID09IE5VTEwpCi0t ICAgIG5hbWUgPSAiPHVua25vd24+IjsKLSsgIGZpbmRfZmlsZV9hbmRfZGlyZWN0b3J5IChkaWUs IGN1LCAmbmFtZSwgJmNvbXBfZGlyKTsKKyAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBp IC0gMV0gPSB1cHBlciAtIGxvd2VyICsgMTsKICAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9sYW5ndWFnZSwgY3UpOwotICAgaWYgKGF0dHIpCi1AQCAtNTUyOSw2ICs2NTI0LDI5 IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7Ci0g fQorIAkgICAgLyogWmVyby1ub3JtYWxpemUgc3Vic2NyaXB0cyBzbyB0aGF0IG9mZnNldHRpbmcg d2lsbCB3b3JrLiAqLworQEAgLTIzNzksMTMgKzIzOTUsMjUgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCSAgICAgIHRtcF90eXBlID0gY2hl Y2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKKyAJICB9CiAgCi0rLyog Q3JlYXRlIGEgbmV3IGFycmF5IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUg VFlQRS4KLSsKLSsgICBNdWx0aWRpbWVuc2lvbmFsIGFycmF5cyBhcmUgaW50ZXJuYWxseSByZXBy ZXNlbnRlZCBhcyBhIHN0YWNrIG9mCi0rICAgc2luZ2xlZGltZW5zaW9uYWwgYXJyYXlzIGJlaW5n IHJlZmVyZW5jZWQgYnkgdGhlaXIgVFlQRV9UQVJHRVRfVFlQRS4gICovCi0rCi0rc3RhdGljIHN0 cnVjdCB0eXBlICoKLStjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAotKwkJCSAgICAgICBzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgdHlwZSA9IGNyZWF0ZV9hcnJh eV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlKTsKLSsKLSsgIC8qIFRoZXNlIGdlbmVyaWMg dHlwZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgZmV0Y2hlZCBieQotKyAgICAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIDxtdWx0aV9mNzdfc3Vic2NyaXB0PidzIGNhbGwgb2YKLSsgICAgIHZhbHVl X3N1YnNjcmlwdGVkX3J2YWx1ZSBvbmx5IGZvciB0aGUgaW5uZXJtb3N0IGFycmF5IHR5cGUuICAq LwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwotKwotKyAgLyogVGhl c2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgYXJlIGNoZWNrZWQgZm9yIGFsbG9jYXRlZC9hc3Nv Y2lhdGVkCi0rICAgICB2YWxpZGl0eSB3aGlsZSBhY2Nlc3NpbmcgRklFTERfTE9DX0tJTkRfRFdB UkZfQkxPQ0suICAqLwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgcmFuZ2VfdHlwZSwg Y3UpOworKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8gZjc3X2dldF9sb3dl cmJvdW5kIGNhbGxzIGFib3ZlLiAgKi8KKysJZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiArCi0r ICByZXR1cm4gdHlwZTsKLSt9CisgCS8qIE5vdyBsZXQgdXMgY2FsY3VsYXRlIHRoZSBvZmZzZXQg Zm9yIHRoaXMgaXRlbSAqLworIAorLQlvZmZzZXRfaXRlbSA9IHN1YnNjcmlwdF9hcnJheVtuZGlt ZW5zaW9ucyAtIDFdOworKwlvZmZzZXRfaXRlbSA9IDA7CisrCW9mZnNldF9ieXRlID0gMDsKICsK LSAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElF IGFuZCBwdXQgaXQgaW4KLSAgICB0aGUgRElFJ3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMg b25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25hbAotICAgIGFycmF5cy4gICovCi1AQCAtNTU0Miw3 ICs2NTYwLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlw ZSwgKmluZGV4X3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKLSAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBpbnQgbmRpbSA9IDA7Ci0rICBpbnQgbmRpbSA9 IDAsIGk7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSAgIGNoYXIgKm5hbWU7CisrCWZv ciAoaSA9IG5kaW1lbnNpb25zIC0gMTsgaSA+PSAwOyAtLWkpCisrCSAgeworKwkgICAgb2Zmc2V0 X2l0ZW0gKj0gYXJyYXlfc2l6ZV9hcnJheVtpXTsKKysJICAgIGlmIChieXRlX3N0cmlkZV9hcnJh eVtpXSA9PSAwKQorKwkgICAgICBvZmZzZXRfaXRlbSArPSBzdWJzY3JpcHRfYXJyYXlbaV07Cisr CSAgICBlbHNlCisrCSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNjcmlwdF9hcnJheVtpXSAqIGJ5 dGVfc3RyaWRlX2FycmF5W2ldOworKwkgIH0KICAKLUBAIC01NTk1LDE3ICs2NjEzLDExIEBAIHJl YWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotICAgdHlwZSA9IGVsZW1lbnRfdHlwZTsKKy0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAxOyBp ID4gMDsgLS1pKQorLQkgIG9mZnNldF9pdGVtID0KKy0JICAgIGFycmF5X3NpemVfYXJyYXlbaSAt IDFdICogb2Zmc2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworKwllbGVtZW50X3Np emUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKKysJb2Zmc2V0 X2J5dGUgKz0gb2Zmc2V0X2l0ZW0gKiBlbGVtZW50X3NpemU7CiAgCi0gICBpZiAocmVhZF9hcnJh eV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKLS0gICAgewotLSAgICAgIGlu dCBpID0gMDsKLS0KLS0gICAgICB3aGlsZSAoaSA8IG5kaW0pCi0tCXR5cGUgPSBjcmVhdGVfYXJy YXlfdHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlwZXNbaSsrXSk7Ci0tICAgIH0KLS0gIGVsc2UK LS0gICAgewotLSAgICAgIHdoaWxlIChuZGltLS0gPiAwKQotLQl0eXBlID0gY3JlYXRlX2FycmF5 X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW25kaW1dKTsKLS0gICAgfQotKyAgICBmb3Ig KGkgPSAwOyBpIDwgbmRpbTsgaSsrKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5 X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOwotKyAgZWxzZSAvKiAo cmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX3Jvd19tYWpvcikgKi8KLSsgICAg Zm9yIChpID0gbmRpbSAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2lu Z2xlX2FycmF5X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworIAkv KiBMZXQgdXMgbm93IHBsYXkgYSBkaXJ0eSB0cmljazogd2Ugd2lsbCB0YWtlIGFyZzEgCisgCSAg IHdoaWNoIGlzIGEgdmFsdWUgbm9kZSBwb2ludGluZyB0byB0aGUgdG9wbW9zdCBsZXZlbAorQEAg LTIzOTUsNyArMjQyMyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmV4cGVjdF90eXBlLAorIAkgICByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgdmFsdWUgKi8KICAK LSAgIC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0 aGV5IG9jY3VyIG9uCi0gICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFk ZHMgYW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCi1AQCAtNjA1OSwyOSArNzA3MSwxMTQgQEAgcmVh ZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2Jq ZmlsZSk7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAq Y2hhcl90eXBlOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIHVuc2lnbmVkIGludCBs ZW5ndGg7Ci0rICBpbnQgbGVuZ3RoOwotKwotKyAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAo b2JqZmlsZSktPmJ1aWx0aW5faW50OwotKyAgLyogUkFOR0VfVFlQRSBpcyBhbGxvY2F0ZWQgZnJv bSBPQkpGSUxFLCBub3QgYXMgYSBwZXJtYW5lbnQgdHlwZS4gICovCi0rICByYW5nZV90eXBlID0g YWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0rICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hfQk9VTkQgYXJl IHNldCBmb3IgcmVhbCBiZWxvdy4gICovCi0rICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5 cGUgKHJhbmdlX3R5cGUsIGluZGV4X3R5cGUsIDAsIC0xKTsKLSsKLSsgIC8qIEMvQysrIHNob3Vs ZCBwcm9iYWJseSBoYXZlIHRoZSBsb3cgYm91bmQgMCBidXQgQy9DKysgZG9lcyBub3QgdXNlCi0r ICAgICBEV19UQUdfc3RyaW5nX3R5cGUuICAqLwotKyAgVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5 cGUpID0gMTsKKyAJZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAoYXJnMSwgdG1wX3R5cGUpOwor LQlyZXR1cm4gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcmcxLCBvZmZzZXRfaXRlbSwgMCk7 CisrCXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFyZzEsIG9mZnNldF9ieXRlKTsK KyAgICAgICB9CiAgCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xl bmd0aCwgY3UpOwotLSAgaWYgKGF0dHIpCi0tICAgIHsKLS0gICAgICBsZW5ndGggPSBEV19VTlNO RCAoYXR0cik7Ci0rICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAg ICB7Ci0rICAgICAgLyogU2VjdXJpdHkgY2hlY2sgZm9yIGEgc2l6ZSBvdmVyZmxvdy4gICovCi0r ICAgICAgaWYgKERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDIgPCBEV19CTE9DSyAoYXR0ciktPnNp emUpCi0rCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSAxOwotKyAgICAgIC8qIEV4dGVu ZCB0aGUgRFdBUkYgYmxvY2sgYnkgYSBuZXcgRFdfT1BfZGVyZWYvRFdfT1BfZGVyZWZfc2l6ZQot KwkgaW5zdHJ1Y3Rpb24gYXMgRFdfQVRfc3RyaW5nX2xlbmd0aCBzcGVjaWZpZXMgdGhlIGxlbmd0 aCBsb2NhdGlvbiwgbm90Ci0rCSBpdHMgdmFsdWUuICAqLwotKyAgICAgIGVsc2UKKyAgICAgY2Fz ZSBCSU5PUF9MT0dJQ0FMX0FORDoKK0BAIC0yNjI5LDE0ICsyNjU3LDIyIEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIGlmIChleHBl Y3RfdHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorIAll eHBlY3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBl KSk7CisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9z LCBub3NpZGUpOworKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVw LCAwKTsKKysgICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChhcmcx KSk7CisgICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKKyAg ICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EUFRSCisgCSAgfHwg VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVNQkVSUFRSKQorIAllcnJvciAoXygiQXR0 ZW1wdCB0byBkZXJlZmVyZW5jZSBwb2ludGVyIHRvIG1lbWJlciB3aXRob3V0IGFuIG9iamVjdCIp KTsKKyAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKKy0JZ290byBub3NpZGVyZXQ7CiAr CXsKLSsJICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmxlbmd0aF9iYXRvbiA9IE5VTEw7 Ci0rCSAgc3RydWN0IGR3YXJmX2Jsb2NrICpibGsgPSBEV19CTE9DSyAoYXR0cik7Ci0rCi0rCSAg LyogVHVybiBhbnkgc2luZ2xlIERXX09QX3JlZyogaW50byBEV19PUF9icmVnKigwKSBidXQgY2xl YXJpbmcKLSsJICAgICBEV19PUF9kZXJlZiogaW4gc3VjaCBjYXNlLiAgKi8KLSsKLSsJICBpZiAo YmxrLT5zaXplID09IDEgJiYgYmxrLT5kYXRhWzBdID49IERXX09QX3JlZzAKLSsJICAgICAgJiYg YmxrLT5kYXRhWzBdIDw9IERXX09QX3JlZzMxKQotKwkgICAgbGVuZ3RoX2JhdG9uID0gZHdhcmYy X2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKwkgIGVsc2UgaWYgKGJsay0+c2l6 ZSA+IDEgJiYgYmxrLT5kYXRhWzBdID09IERXX09QX3JlZ3gpCisrCSAgZG9fY2xlYW51cHMgKG9s ZF9jaGFpbik7CisrCSAgZ290byBub3NpZGVyZXQ7CisrCX0KKyAgICAgICBpZiAodW5vcF91c2Vy X2RlZmluZWRfcCAob3AsIGFyZzEpKQorLQlyZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwg bm9zaWRlKTsKKysJeworKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKwkgIHJldHVybiB2 YWx1ZV94X3Vub3AgKGFyZzEsIG9wLCBub3NpZGUpOworKwl9CisgICAgICAgZWxzZSBpZiAobm9z aWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKQorIAl7CisgCSAgdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKK0BAIC0yNjQ1LDEyICsyNjgxLDE4IEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgIC8qIElu IEMgeW91IGNhbiBkZXJlZmVyZW5jZSBhbiBhcnJheSB0byBnZXQgdGhlIDFzdCBlbHQuICAqLwor IAkgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorIAkgICAgKQor LQkgICAgcmV0dXJuIHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAorLQkJCSAg ICAgICBsdmFsX21lbW9yeSk7CiArCSAgICB7Ci0rCSAgICAgIFVMT05HRVNUIHVsb25nZXN0Owot KwkgICAgICBjb25zdCBnZGJfYnl0ZSAqZW5kOwotKwotKwkgICAgICBlbmQgPSByZWFkX3VsZWIx MjggKCZibGstPmRhdGFbMV0sICZibGstPmRhdGFbYmxrLT5zaXplXSwKLSsJCQkJICAmdWxvbmdl c3QpOwotKwkgICAgICBpZiAoZW5kID09ICZibGstPmRhdGFbYmxrLT5zaXplXSkKLSsJCWxlbmd0 aF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysJICAg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgICAgIHJldHVybiB2YWx1ZV96ZXJvIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKKysJCQkJIGx2YWxfbWVtb3J5KTsKICsJICAgIH0KLSsK LSsJICBpZiAobGVuZ3RoX2JhdG9uID09IE5VTEwpCisgCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfSU5UKQorLQkgICAgLyogR0RCIGFsbG93cyBkZXJlZmVyZW5jaW5n IGFuIGludC4gICovCistCSAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAt PmdkYmFyY2gpLT5idWlsdGluX2ludCwKKy0JCQkgICAgICAgbHZhbF9tZW1vcnkpOwogKwkgICAg ewotKwkgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpzaXplX2F0dHI7Ci0rCSAgICAgIGdkYl9ieXRl ICpkYXRhOwotKwotKwkgICAgICBsZW5ndGhfYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNv bXBfdW5pdF9vYnN0YWNrLAotKwkJCQkJICAgIHNpemVvZiAoKmxlbmd0aF9iYXRvbikpOwotKwkg ICAgICBsZW5ndGhfYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rCSAgICAgIGxlbmd0aF9i YXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDI7Ci0rCSAgICAgIGRhdGEgPSBv YnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAotKwkJCQkgICAgbGVuZ3RoX2Jh dG9uLT5zaXplKTsKLSsJICAgICAgbGVuZ3RoX2JhdG9uLT5kYXRhID0gZGF0YTsKLSsJICAgICAg bWVtY3B5IChkYXRhLCBEV19CTE9DSyAoYXR0ciktPmRhdGEsIERXX0JMT0NLIChhdHRyKS0+c2l6 ZSk7Ci0rCi0rCSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhlciB3aXRo IERXX0FUX1NUUklOR19MRU5HVEgKLSsJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4gaW50ZWdl ciB0byBmZXRjaC4gICovCi0rCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX2J5dGVfc2l6ZSwgY3UpOwotKwkgICAgICBpZiAoc2l6ZV9hdHRyKQotKwkJewotKwkJICBk YXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXplOwotKwkJICBkYXRh W0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdID0gRFdfVU5TTkQgKHNpemVfYXR0cik7Ci0rCQkg IGlmIChkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdICE9IERXX1VOU05EIChzaXplX2F0 dHIpKQotKwkJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgICAgICAg XygiRFdfQVRfc3RyaW5nX2xlbmd0aCdzIERXX0FUX2J5dGVfc2l6ZSAiCi0rCQkJCSAiaW50ZWdl ciBleGNlZWRzIHRoZSBieXRlIHNpemUgc3RvcmFnZSIpKTsKLSsJCX0KLSsJICAgICAgZWxzZQot KwkJewotKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZjsKLSsJ CSAgZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX09QX25vcDsKLSsJCX0KKysJ ICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgICAgIC8qIEdEQiBhbGxvd3MgZGVy ZWZlcmVuY2luZyBhbiBpbnQuICAqLworKwkgICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRp bl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJIGx2YWxfbWVtb3J5KTsK ICsJICAgIH0KLSsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQK LSsJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsJICBUWVBFX1JBTkdFX0RB VEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247Ci0rCSAg VFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rCX0KLSAgICAgfQotICAgZWxzZQotICAg ICB7Ci0tICAgICAgLyogY2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlICov Ci0rICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKKyAJICBl bHNlCisgCSAgICBlcnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBv aW50ZXIgdmFsdWUuIikpOworIAl9CitAQCAtMjY2MCw5ICsyNzAyLDE0IEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgZG8uICAibG9uZyBs b25nIiB2YXJpYWJsZXMgYXJlIHJhcmUgZW5vdWdoIHRoYXQKKyAJIEJVSUxUSU5fVFlQRV9MT05H RVNUIHdvdWxkIHNlZW0gdG8gYmUgYSBtaXN0YWtlLiAgKi8KKyAgICAgICBpZiAoVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQorLQlyZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRp bl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKy0JCQkgICAgICAoQ09SRV9BRERS KSB2YWx1ZV9hc19hZGRyZXNzIChhcmcxKSk7CistICAgICAgcmV0dXJuIHZhbHVlX2luZCAoYXJn MSk7CiArCXsKLSsJICAvKiBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgYSBjb25zdGFudCBh ZGRyZXNzIHdoZXJlIHRoZSBsb2NhdGlvbgotKwkgICAgIHNob3VsZCBiZSByZWFkIGZyb20gLSBh dHRyX2Zvcm1faXNfYmxvY2sgaXMgZXhwZWN0ZWQgaW5zdGVhZC4gIFNlZQotKwkgICAgIERXQVJG IGZvciB0aGUgRFdfQVRfU1RSSU5HX0xFTkdUSCB2cy4gRFdfQVRfQllURV9TSVpFIGRpZmZlcmVu Y2UuCi0rCSAgICAgKi8KLSsJICAvKiBQQVNTVEhSVSAqLwotKwl9Ci0rCi0gICAgICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwotLSAgICAgIGlmIChhdHRy KQotLSAgICAgICAgewotLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7Ci0tICAg ICAgICB9Ci0rICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsJ ewotKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZAotKwkgICAgPSBS QU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmhpZ2gudS5kd2FyZl9ibG9jayA9Ci0rCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHBy X2JhdG9uIChhdHRyLCBjdSk7Ci0rCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Cisr CSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgcmV0dXJuIHZhbHVlX2F0X2xhenkgKGJ1 aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCisrCQkJCShDT1JFX0FERFIp IHZhbHVlX2FzX2FkZHJlc3MgKGFyZzEpKTsKICsJfQotKyAgICAgIGVsc2UgaWYgKGF0dHIgJiYg YXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsJVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90 eXBlKSA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0gICAgICAg ZWxzZQotLSAgICAgICAgewotLSAgICAgICAgICBsZW5ndGggPSAxOwotLSAgICAgICAgfQotKwlU WVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKLSAgICAgfQorKyAgICAgIGFyZzEgPSB2 YWx1ZV9pbmQgKGFyZzEpOworKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAg IHJldHVybiBhcmcxOwogIAotLSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSkt PmJ1aWx0aW5faW50OwotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBp bmRleF90eXBlLCAxLCBsZW5ndGgpOwotICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2No YXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwotICAgdHlwZSA9IGNyZWF0ZV9z dHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKKyAgICAgY2FzZSBVTk9Q X0FERFI6CisgICAgICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1l bWJlcnMuICAqLworQEAgLTMwMDgsNyArMzA1NSw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2Nv ZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorIHsKKyAgIGVudW0gZXhwX29wY29kZSBv cDsKKyAgIGludCBwYzsKKy0gIHN0cnVjdCB2YWx1ZSAqdmFsOworKyAgc3RydWN0IHZhbHVlICp2 YWwgPSBOVUxMOworICAgc3RydWN0IHN5bWJvbCAqdmFyOworICAgc3RydWN0IHR5cGUgKnR5cGU7 CiAgCi1AQCAtNjMyNCw2MCArNzQyMSwxMzYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgdHlwZSAqYmFz ZV90eXBlOwotICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7Ci0gICBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyOwotLSAgTE9OR0VTVCBsb3cgPSAwOwotLSAgTE9OR0VTVCBoaWdoID0gLTE7Ci0rICBM T05HRVNUIGxvdzsKLSAgIGNoYXIgKm5hbWU7Ci0gICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CitA QCAtMzAxOSwxMyArMzA2NiwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwKKyAgICAgeworICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKKyAg ICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CisrICAgICAgLyogYWRkcmVzc19v Zl92YXJpYWJsZSB3aWxsIGNhbGwgb2JqZWN0X2FkZHJlc3Nfc2V0IGZvciBjaGVja190eXBlZGVm LgorKwkgQ2FsbCBpdCBvbmx5IGlmIHJlcXVpcmVkIGFzIGl0IGNhbiBlcnJvci1vdXQgb24gVkFS IGluIHJlZ2lzdGVyLiAgKi8KKysgICAgICBpZiAoVFlQRV9EWU5BTUlDIChTWU1CT0xfVFlQRSAo dmFyKSkpCisrCXZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsg MV0uYmxvY2spOworICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChTWU1CT0xfVFlQRSAodmFy KSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisgCSAg JiYgIVRZUEVfVkVDVE9SICh0eXBlKQorIAkgICYmIENBU1RfSVNfQ09OVkVSU0lPTiAoZXhwLT5s YW5ndWFnZV9kZWZuKSkKKyAJeworIAkgICgqcG9zKSArPSA0OworLQkgIHZhbCA9IGFkZHJlc3Nf b2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOworKwkgIGlmICghdmFs KQorKwkgICAgdmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAx XS5ibG9jayk7CisgCSAgcmV0dXJuIHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKSwKKyAJCQkgICAgIHZhbCk7CisgCX0KK0BAIC0zMDc3LDkg KzMxMjksMTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCAqcG9zKQogIAotICAgYmFzZV90eXBlID0gZGllX3R5cGUgKGRpZSwgY3UpOwot KyAgLyogUHJlc2VydmUgQkFTRV9UWVBFJ3Mgb3JpZ2luYWwgdHlwZSwganVzdCBzZXQgaXRzIExF TkdUSC4gICovCi0rICBjaGVja190eXBlZGVmIChiYXNlX3R5cGUpOworICAgICBjYXNlIE9QX1ZB Ul9WQUxVRToKKyAgICAgICAoKnBvcykgKz0gNDsKKy0gICAgICB0eXBlID0gY2hlY2tfdHlwZWRl ZiAoU1lNQk9MX1RZUEUgKGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbCkpOworLSAgICAgIHJldHVy bgorLQl2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdFU1QpIFRZUEVfTEVOR1RI ICh0eXBlKSk7CisrICAgICAgLyogV2UgZG8gbm90IG5lZWQgdG8gY2FsbCByZWFkX3Zhcl92YWx1 ZSBidXQgdGhlIG9iamVjdCBldmFsdWF0aW9uIG1heQorKwkgbmVlZCB0byBoYXZlIGV4ZWN1dGVk IG9iamVjdF9hZGRyZXNzX3NldCB3aGljaCBuZWVkcyB2YWxpZAorKwkgU1lNQk9MX1ZBTFVFX0FE RFJFU1Mgb2YgdGhlIHN5bWJvbC4gIFN0aWxsIFZBTFVFIHJldHVybmVkIGJ5CisrCSByZWFkX3Zh cl92YWx1ZSB3ZSBsZWZ0IGFzIGxhenkuICAqLworKyAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChy ZWFkX3Zhcl92YWx1ZSAoZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sLAorKwkJCQkJZGVwcmVjYXRl ZF9zYWZlX2dldF9zZWxlY3RlZF9mcmFtZSAoKSkpOworKyAgICAgIHJldHVybiB2YWx1ZV9mcm9t X2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdFU1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7CiAgCi0g ICAvKiBUaGUgZGllX3R5cGUgY2FsbCBhYm92ZSBtYXkgaGF2ZSBhbHJlYWR5IHNldCB0aGUgdHlw ZSBmb3IgdGhpcyBESUUuICAqLwotICAgcmFuZ2VfdHlwZSA9IGdldF9kaWVfdHlwZSAoZGllLCBj dSk7Ci0gICBpZiAocmFuZ2VfdHlwZSkKLSAgICAgcmV0dXJuIHJhbmdlX3R5cGU7CisgICAgIGRl ZmF1bHQ6CisgICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9z LCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7CitkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5oIGIv Z2RiL2YtbGFuZy5oCitpbmRleCBmNWJiODJkLi4yOWNmNWJhIDEwMDY0NAorLS0tIGEvZ2RiL2Yt bGFuZy5oCisrKysgYi9nZGIvZi1sYW5nLmgKK0BAIC0yOCw2ICsyOCwxMCBAQCBleHRlcm4gdm9p ZCBmX2Vycm9yIChjaGFyICopOwkvKiBEZWZpbmVkIGluIGYtZXhwLnkgKi8KKyBleHRlcm4gdm9p ZCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHVpX2Zp bGUgKiwgaW50LAorIAkJCSAgaW50KTsKICAKLS0gIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3Vh Z2VfZm9ydHJhbikKLS0gICAgewotLSAgICAgIC8qIEZPUlRSQU4gaW1wbGllcyBhIGxvd2VyIGJv dW5kIG9mIDEsIGlmIG5vdCBnaXZlbi4gICovCi0tICAgICAgbG93ID0gMTsKLS0gICAgfQotKyAg LyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLwot KyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIDAsIC0x KTsKLSsKLSsgIG5lZ2F0aXZlX21hc2sgPSAKLSsgICAgKExPTkdFU1QpIC0xIDw8IChUWVBFX0xF TkdUSCAoYmFzZV90eXBlKSAqIFRBUkdFVF9DSEFSX0JJVCAtIDEpOworK2V4dGVybiBjb25zdCBj aGFyICpmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtCisrICAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOworK2V4dGVybiB2b2lkIGZf b2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3RydWN0IHR5cGUgKnR5cGUpOwog KwotKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlDIGNvbnN0 cnVjdHMgYmVsb3cuICBHREIgQWRhCi0rICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRoZSBkeW5h bWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQotKyAgICAgZXhpc3RpbmcgRFdB UkYgZHluYW1pYyBib3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFjY2Vzcwot KyAgICAgZXJyb3JzLiAgKi8KKyBleHRlcm4gaW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAq LCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKKyAJCQlzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsCisgCQkJY29uc3Qgc3RydWN0IHZhbHVlICosCitkaWZmIC0tZ2l0IGEvZ2RiL2YtdHlw ZXByaW50LmMgYi9nZGIvZi10eXBlcHJpbnQuYworaW5kZXggZDM1YTI1NS4uZGVjODFkNSAxMDA2 NDQKKy0tLSBhL2dkYi9mLXR5cGVwcmludC5jCisrKysgYi9nZGIvZi10eXBlcHJpbnQuYworQEAg LTMyLDcgKzMyLDcgQEAKKyAjaW5jbHVkZSAiZ2RiY29yZS5oIgorICNpbmNsdWRlICJ0YXJnZXQu aCIKKyAjaW5jbHVkZSAiZi1sYW5nLmgiCistCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorICNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCisgI2luY2x1ZGUgPGVycm5vLmg+CiAgCi0tICAvKiBGSVhN RTogRm9yIHZhcmlhYmxlIHNpemVkIGFycmF5cyBlaXRoZXIgb2YgdGhlc2UgY291bGQgYmUKLS0g ICAgIGEgdmFyaWFibGUgcmF0aGVyIHRoYW4gYSBjb25zdGFudCB2YWx1ZS4gIFdlJ2xsIGFsbG93 IGl0LAotLSAgICAgYnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBpdC4gICovCi0gICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKLS0gIGlmIChh dHRyKQotLSAgICBsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDAp OwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3Vh Z2UgIT0gbGFuZ3VhZ2VfYWRhKQorQEAgLTQ5LDYgKzQ5LDM0IEBAIHZvaWQgZl90eXBlX3ByaW50 X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorIHZvaWQg Zl90eXBlX3ByaW50X2Jhc2UgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwg aW50KTsKKyAMCisgCisrY29uc3QgY2hhciAqCisrZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlk X3ByaW50X3RvX3N0cmVhbSAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJCQkgICAgIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0pCisreworKyAgY29uc3QgY2hhciAqbXNnOworKworKyAgbXNnID0gb2Jq ZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUpOworKyAgaWYgKG1zZyAhPSBOVUxMKQog KyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBS QU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFu Z2VfdHlwZSktPmxvdy51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4 cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0g MTsKLSsgICAgICAvKiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQg d291bGQgYmUgbWlzc2luZy4gICovCi0rICAgICAgbG93ID0gMDsKKysgICAgICAvKiBBc3N1bWlu ZyB0aGUgY29udGVudCBwcmludGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4g ICovCisrICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7CiArICAg IH0KLSsgIGVsc2UgaWYgKGF0dHIgJiYgaXNfcmVmX2F0dHIgKGF0dHIpICYmIGN1LT5sYW5ndWFn ZSAhPSBsYW5ndWFnZV9hZGEpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdl dF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7Ci0rICAgICAg c3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwogKwotKyAgICAgIHRhcmdldF9kaWUg PSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7Ci0rICAgICAg Z2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKLSsgICAgICB0 YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRpb24s IHRhcmdldF9jdSk7CisrICByZXR1cm4gbXNnOworK30KICsKLSsgICAgICBUWVBFX1JBTkdFX0RB VEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElT VDsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cudS5kd2FyZl9sb2Ns aXN0LmxvY2xpc3QKLSsgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFy Z2V0X2xvY19hdHRyLCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QudHlwZQotKyAgICAgICAgPSBkaWVfdHlwZSAodGFy Z2V0X2RpZSwgdGFyZ2V0X2N1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0g MTsKLSsgICAgICAvKiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQg d291bGQgYmUgbWlzc2luZy4gICovCi0rICAgICAgbG93ID0gMDsKLSsgICAgfQotKyAgZWxzZQot KyAgICB7Ci0rICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkK LSsJbG93ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAg ICBlbHNlCi0rCXsKLSsJICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4pCi0r CSAgICB7Ci0rCSAgICAgIC8qIEZPUlRSQU4gaW1wbGllcyBhIGxvd2VyIGJvdW5kIG9mIDEsIGlm IG5vdCBnaXZlbi4gICovCi0rCSAgICAgIGxvdyA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkg ICAgewotKwkgICAgICAvKiBBY2NvcmRpbmcgdG8gRFdBUkYgd2Ugc2hvdWxkIGFzc3VtZSB0aGUg dmFsdWUgMCBvbmx5IGZvcgotKwkJIExBTkdVQUdFX0MgYW5kIExBTkdVQUdFX0NQTFVTLiAgKi8K LSsJICAgICAgbG93ID0gMDsKLSsJICAgIH0KLSsJfQotKyAgICAgIGlmICghVFlQRV9VTlNJR05F RCAoYmFzZV90eXBlKSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykpCi0rCWxvdyB8PSBuZWdhdGl2 ZV9tYXNrOwotKyAgICAgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IGxvdzsKLSsgICAg ICBpZiAobG93ID49IDApCi0rCVRZUEVfVU5TSUdORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAg fQotIAotICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3VwcGVyX2JvdW5kLCBjdSk7 Ci0tICBpZiAoYXR0cikKLSsgIGlmICghYXR0ciB8fCAoIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0 cikgJiYgIWF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikKLSsJCSYmICFpc19yZWZfYXR0ciAo YXR0cikpKQotICAgICB7Ci0tICAgICAgaWYgKGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9jazEg fHwgaXNfcmVmX2F0dHIgKGF0dHIpKQotLSAgICAgICAgewotLSAgICAgICAgICAvKiBHQ0MgZW5j b2RlcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZCBvciBkeW5hbWljIGxlbmd0aAotLSAgICAgICAg ICAgICB3aXRoIGEgRFdfRk9STV9ibG9jazEgYXR0cmlidXRlIG9yIGEgcmVmZXJlbmNlIGF0dHJp YnV0ZS4KLS0gICAgICAgICAgICAgRklYTUU6IEdEQiBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8g aGFuZGxlIGR5bmFtaWMKLS0gICAgICAgICAgICAgYXJyYXlzIHByb3Blcmx5LCB0cmVhdCB0aGVt IGFzIGFycmF5cyB3aXRoIHVuc3BlY2lmaWVkCi0tICAgICAgICAgICAgIGxlbmd0aCBmb3Igbm93 LgotLQotLSAgICAgICAgICAgICBGSVhNRTogamltYi8yMDAzLTA5LTIyOiBHREIgZG9lcyBub3Qg cmVhbGx5IGtub3cKLS0gICAgICAgICAgICAgaG93IHRvIGhhbmRsZSBhcnJheXMgb2YgdW5zcGVj aWZpZWQgbGVuZ3RoCi0tICAgICAgICAgICAgIGVpdGhlcjsgd2UganVzdCByZXByZXNlbnQgdGhl bSBhcyB6ZXJvLWxlbmd0aAotLSAgICAgICAgICAgICBhcnJheXMuICBDaG9vc2UgYW4gYXBwcm9w cmlhdGUgdXBwZXIgYm91bmQgZ2l2ZW4KLS0gICAgICAgICAgICAgdGhlIGxvd2VyIGJvdW5kIHdl J3ZlIGNvbXB1dGVkIGFib3ZlLiAgKi8KLS0gICAgICAgICAgaGlnaCA9IGxvdyAtIDE7Ci0tICAg ICAgICB9Ci0tICAgICAgZWxzZQotLSAgICAgICAgaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25z dGFudF92YWx1ZSAoYXR0ciwgMSk7Ci0rICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX2NvdW50LCBjdSk7Ci0rICAgICAgLyogSXQgZG9lcyBub3QgaHVydCBidXQgaXQgaXMgbmVl ZGxlc3NseSBpbmVmZmVjdGl2ZSBpbiBjaGVja190eXBlZGVmLiAgKi8KLSsgICAgICBpZiAoYXR0 ciAmJiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSB8fCBhdHRyX2Zvcm1faXNfY29uc3RhbnQg KGF0dHIpKSkKLSsgICAgICAJewotKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAo cmFuZ2VfdHlwZSkgPSAxOwotKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKwl9 Ci0rICAgICAgLyogUGFzcyBpdCBub3cgYXMgdGhlIHJlZ3VsYXIgRFdfQVRfdXBwZXJfYm91bmQu ICAqLwotKyAgICB9Cisrdm9pZAorK2Zfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJv ciAoc3RydWN0IHR5cGUgKnR5cGUpCisreworKyAgY29uc3QgY2hhciAqbXNnOwogKwotKyAgaWYg KGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFu Z3VhZ2VfYWRhKQorKyAgbXNnID0gb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUp OworKyAgaWYgKG1zZyAhPSBOVUxMKQogKyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQot KwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKyAgICAgIFRZ UEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNj ZXNzIGl0IGJlY2F1c2UgdGhlICVzLiIpLCBfKG1zZykpOwogKyAgICB9Ci0rICBlbHNlIGlmIChh dHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRh KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOwotKyAgICAgIHN0 cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OwotKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUg KnRhcmdldF9sb2NfYXR0cjsKLSsKLSsgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZf b3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdl dF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7Ci0rICAgICAgdGFyZ2V0X2xvY19hdHRyID0g ZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOworK30K ICsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5H RV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBkd2FyZjJf YXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Ci0rICAg ICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3QudHlw ZQotKyAgICAgICAgPSBkaWVfdHlwZSAodGFyZ2V0X2RpZSwgdGFyZ2V0X2N1KTsKLSsgICAgICBU WVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0t ICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7Ci0tICAgICAg aWYgKGF0dHIpCi0rICAgICAgTE9OR0VTVCBoaWdoOworIC8qIExFVkVMIGlzIHRoZSBkZXB0aCB0 byBpbmRlbnQgbGluZXMgYnkuICAqLworIAorIHZvaWQKK0BAIC01OCw2ICs4Niw5IEBAIGZfcHJp bnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0cmluZywgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwKKyAgIGVudW0gdHlwZV9jb2RlIGNvZGU7CisgICBpbnQgZGVtYW5n bGVkX2FyZ3M7CisgCisrICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3Rv X3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQorKyAgICByZXR1cm47CiArCi0rICAgICAg aWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsJaGlnaCA9IGR3YXJm Ml9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICAgICAgZWxzZQotIAl7Ci0t CSAgaW50IGNvdW50ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsK LS0JICBoaWdoID0gbG93ICsgY291bnQgLSAxOwotKwkgIFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKHJhbmdlX3R5cGUpID0gMTsKLSsJICBoaWdoID0gbG93IC0gMTsKLSAJfQotKyAgICAgIGlm ICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQot KwloaWdoIHw9IG5lZ2F0aXZlX21hc2s7Ci0rICAgICAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90 eXBlKSA9IGhpZ2g7Ci0gICAgIH0KKyAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBlLCBzdHJlYW0s IHNob3csIGxldmVsKTsKKyAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworICAgaWYgKCh2YXJz dHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCitAQCAtMTY1LDYgKzE5Niw5IEBA IGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sCiAgCi0gICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0 bHkgYWxsb3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwotQEAgLTY0MTksMjAgKzc1OTIsNDEg QEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gCX0KLSAgICAgfQorICAgUVVJVDsKICAKLS0gIG5lZ2F0aXZlX21hc2sgPQot LSAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VUX0NI QVJfQklUIC0gMSk7Ci0tICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAm IG5lZ2F0aXZlX21hc2spKQotLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKLS0gIGlmICghVFlQ RV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQotLSAgICBo aWdoIHw9IG5lZ2F0aXZlX21hc2s7Ci0rICAvKiBEV19BVF9iaXRfc3RyaWRlIGlzIGN1cnJlbnRs eSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4gICovCi0rICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKLSsgIGlmIChhdHRyICYmIGF0dHJf Zm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLSsg ICAgewotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLmtp bmQKLSsgICAgICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsgICAgICBUWVBF X1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrID0KLSsJ CQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBF X0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBp c19yZWZfYXR0ciAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLSsgICAg ewotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKLSsgICAgICBzdHJ1Y3QgZHdh cmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRf bG9jX2F0dHI7CisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfVFlQRURFRikK KysgICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CisrCisgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlw ZSkpCisgICAgIHsKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CitkaWZmIC0tZ2l0IGEvZ2Ri L2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4IGUyN2Y3OWUuLjkzMzIyYTIg MTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9nZGIvZi12YWxwcmludC5jCitA QCAtNTQsMTUgKzU0LDE3IEBAIGludCBmNzdfYXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9SVFJBTl9E SU1TICsgMV1bMl07CisgLyogVGhlIGZvbGxvd2luZyBtYWNybyBnaXZlcyB1cyB0aGUgc2l6ZSBv ZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCisgICAgbiBpcyAxIGJhc2VkLiAqLwogIAotLSAg cmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGln aCk7Ci0rICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRy LCAmdGFyZ2V0X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0g Y3UtPm9iamZpbGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJn ZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKKy0jZGVmaW5lIEY3N19ESU1fU0la RShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMV0pCisrI2RlZmluZSBGNzdfRElNX0NPVU5U KG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVsxXSkKICAKLS0gIC8qIE1hcmsgYXJyYXlzIHdp dGggZHluYW1pYyBsZW5ndGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0g ICAgIGxlbmd0aC4gIEdEQiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBn ZXRzIGltcGxlbWVudGVkIGF0Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5 IGVsZW1lbnRzLiAgKi8KLS0gIGlmIChhdHRyICYmIGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9j azEpCi0tICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rICAg ICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBFX1JBTkdF X0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAot KyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIs IHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9z dHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9k aWUsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0r ICAgIH0KLSsgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkK LSsgICAgewotKyAgICAgIFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dl dF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAgICBpZiAoVFlQRV9CWVRFX1NU UklERSAocmFuZ2VfdHlwZSkgPT0gMCkKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRz LAotKwkJICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1cHBvcnRlZCB2YWx1 ZSAwIikpOwotKyAgICB9CistLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0IGZv ciByb3cgbiB3aGVyZSBuIGlzIDEtYmFzZWQuICovCisrLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1 cyB0aGUgZWxlbWVudCBzaXplIGZvciByb3cgbiB3aGVyZSBuIGlzIDEtYmFzZWQuICovCiAgCi0g ICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotICAgaWYgKG5hbWUpCi1AQCAtODcxMiwx MCArOTkwNiwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRy LCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0gICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJl Z2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwotICAgICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJl YWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQKLSAgICAgIG5vdCBi ZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1h bmNlCi0tICAgICBvciBtZW1vcnkgbnVtYmVycyBzaG93IG1lIG90aGVyd2lzZS4gICovCi0rICAg ICBvciBtZW1vcnkgbnVtYmVycyBzaG93IG1lIG90aGVyd2lzZS4KLSsgICAgIAotKyAgICAgU1lN Qk9MX0NMQVNTIG1heSBnZXQgb3ZlcnJpZGVuIGJ5IGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRl ZC4gICovCistI2RlZmluZSBGNzdfRElNX09GRlNFVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxb bl1bMF0pCisrI2RlZmluZSBGNzdfRElNX0JZVEVfU1RSSURFKG4pIChmNzdfYXJyYXlfb2Zmc2V0 X3RibFtuXVswXSkKICAKLS0gIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3lt LCBjdSk7Ci0gICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfQ09NUFVURUQ7Ci0rICBkd2FyZjJf c3ltYm9sX21hcmtfY29tcHV0ZWQgKGF0dHIsIHN5bSwgY3UpOwotIH0KKyBpbnQKKyBmNzdfZ2V0 X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQorIHsKKysgIGZfb2JqZWN0X2FkZHJlc3Nf ZGF0YV92YWxpZF9vcl9lcnJvciAodHlwZSk7CisrCisgICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9C T1VORF9JU19VTkRFRklORUQgKHR5cGUpKQorICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5 IG5vdCBiZSAnKicgaW4gRjc3IikpOwogIAotIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhIERXQVJG IGluZm9ybWF0aW9uIGVudHJ5LCBmaWd1cmUgb3V0IGlmIHdlIG5lZWQKLUBAIC04NzQ2LDYgKzk5 NDIsOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkJCQkJICAgICBzaXplb2YgKHN0cnVjdCBzeW1i b2wpKTsKLSAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7Ci0gICAgICAgbWVtc2V0 IChzeW0sIDAsIHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOwotKyAgICAgIC8qIFNvbWUgbWV0aG9k cyBhcmUgY2FsbGVkIHcvbyBjaGVja2luZyBTWU1CT0xfQ09NUFVURURfT1BTIHZhbGlkaXR5LiAg Ki8KLSsgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1 bmNzOworQEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBl ICp0eXBlKQorIGludAorIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCisg eworKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKKysKKyAg IGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCisgICAgIHsK Ky0gICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFuZHMuICBB c3N1bWUgdGhhdAorLQkgdXBwZXJfYm91bmQgPT0gbG93ZXJfYm91bmQgc28gdGhhdCB3ZSBzaG93 IGF0IGxlYXN0IDEgZWxlbWVudC4KKy0JIElmIHRoZSB1c2VyIHdhbnRzIHRvIHNlZSBtb3JlIGVs ZW1lbnRzLCBsZXQgaGltIG1hbnVhbGx5IGFzayBmb3IgJ2VtCistCSBhbmQgd2UnbGwgc3Vic2Ny aXB0IHRoZSBhcnJheSBhbmQgc2hvdyBoaW0uICAqLworKyAgICAgIC8qIFdlIGhhdmUgYW4gYXNz dW1lZCBzaXplIGFycmF5IG9uIG91ciBoYW5kcy4gIEFzIHR5cGVfbGVuZ3RoX2dldAorKwkgYWxy ZWFkeSBhc3N1bWVzIGEgbGVuZ3RoIHplcm8gb2YgYXJyYXlzIHdpdGggdW5kZXJmaW5lZCBib3Vu ZHMgVkFMQUREUgorKwkgcGFzc2VkIHRvIHRoZSBGb3J0cmFuIGZ1bmN0aW9ucyBkb2VzIG5vdCBj b250YWluZWQgdGhlIHJlYWwgaW5mZXJpb3IKKysJIG1lbW9yeSBjb250ZW50LiAgVXNlciBzaG91 bGQgcmVxdWVzdCBwcmludGluZyBvZiBzcGVjaWZpYyBhcnJheQorKwkgZWxlbWVudHMgaW5zdGVh ZC4gICovCiAgCi0gICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFt ZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KLSAgICAgICBTWU1CT0xfTEFOR1VBR0Ug KHN5bSkgPSBjdS0+bGFuZ3VhZ2U7Ci1AQCAtOTM3NSw2ICsxMDU3Myw5IEBAIHJlYWRfdHlwZV9k aWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBi cmVhazsKKy0gICAgICByZXR1cm4gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKKysgICAgICBy ZXR1cm4gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKSAtIDE7CiAgICAgIH0KICAKLSsgIGlmICh0 aGlzX3R5cGUpCi0rICAgIGZpbmFsaXplX3R5cGUgKHRoaXNfdHlwZSk7CisgICByZXR1cm4gVFlQ RV9BUlJBWV9VUFBFUl9CT1VORF9WQUxVRSAodHlwZSk7CitAQCAtMTM0LDI0ICsxMzksMjkgQEAg Zjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtKQorICAgICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0 bXBfdHlwZSk7CisgICAgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsK KyAKKy0gICAgICBGNzdfRElNX1NJWkUgKG5kaW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKKysg ICAgICBGNzdfRElNX0NPVU5UIChuZGltZW4pID0gdXBwZXIgLSBsb3dlciArIDE7CiArCi0gICBy ZXR1cm4gdGhpc190eXBlOwotIH0KKysgICAgICBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4p ID0KKysgICAgICAgIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHRtcF90eXBlKTsKKyAK KyAgICAgICB0bXBfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKTsKKyAgICAgICBu ZGltZW4rKzsKKyAgICAgfQorIAorLSAgLyogTm93IHdlIG11bHRpcGx5IGVsdGxlbiBieSBhbGwg dGhlIG9mZnNldHMsIHNvIHRoYXQgbGF0ZXIgd2UgCisrICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0 bGVuIGJ5IGFsbCB0aGUgQllURV9TVFJJREVzLCBzbyB0aGF0IGxhdGVyIHdlCisgICAgICBjYW4g cHJpbnQgb3V0IGFycmF5IGVsZW1lbnRzIGNvcnJlY3RseS4gIFVwIHRpbGwgbm93IHdlIAorLSAg ICAga25vdyBhbiBvZmZzZXQgdG8gYXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNvIAor KyAgICAga25vdyBhbiBlbHRsZW4gdG8gYXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNv CisgICAgICBoYXZlIHRvIGtub3cgaG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBp dGVtICovCiAgCi1AQCAtMTE5NzksNjcgKzEzMTgwLDEwMiBAQCBhdHRyX2Zvcm1faXNfY29uc3Rh bnQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCisgICBuZGltZW4tLTsKKyAgIGVsdGxlbiA9IFRZ UEVfTEVOR1RIICh0bXBfdHlwZSk7CistICBGNzdfRElNX09GRlNFVCAobmRpbWVuKSA9IGVsdGxl bjsKKysgIGlmIChGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID09IDApCisrICAgIEY3N19E SU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRsZW47CisgICB3aGlsZSAoLS1uZGltZW4gPiAw KQorICAgICB7CistICAgICAgZWx0bGVuICo9IEY3N19ESU1fU0laRSAobmRpbWVuICsgMSk7Cist ICAgICAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CisrICAgICAgZWx0bGVuICo9 IEY3N19ESU1fQ09VTlQgKG5kaW1lbiArIDEpOworKyAgICAgIGlmIChGNzdfRElNX0JZVEVfU1RS SURFIChuZGltZW4pID09IDApCisrCUY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRs ZW47CiAgICAgIH0KICB9CiAgCi0tc3RhdGljIHZvaWQKLS1kd2FyZjJfc3ltYm9sX21hcmtfY29t cHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLS0JCQkg ICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotKy8qIENvbnZlcnQgRFdfQkxPQ0sgaW50byBzdHJ1 Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24uICBBVFRSIG11c3QgYmUgYSBEV19CTE9DSwotKyAgIGF0 dHJpYnV0ZSB0eXBlLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICoKLStkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRy LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25f b2Zmc2V0IChhdHRyKQotLSAgICAgIC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFs bCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotLQkgdGhlIHNlY3Rpb24uICBJZiBzbywg ZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCi0tCSBvdGhlciBicmFuY2guICAq LwotLSAgICAgICYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNp emUpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwot KyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKK0BAIC0xNzIsMzQgKzE4Miwz NCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwKICAKLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xp c3RfYmF0b24pKTsKLS0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0gICAgICBn ZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKLSsgIGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9pc19i bG9jayAoYXR0cikpOworICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKKyAgICAgeworLSAgICAg IGZvciAoaSA9IDA7IChpIDwgRjc3X0RJTV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25z LT5wcmludF9tYXgpOyBpKyspCisrICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX0NPVU5U IChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCisgCXsKKyAJICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOworIAkgIGY3N19wcmludF9hcnJheV8xIChu c3MgKyAxLCBuZGltZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkJICAgICB2 YWxhZGRyICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAorLQkJCSAgICAgYWRkcmVzcyArIGkg KiBGNzdfRElNX09GRlNFVCAobnNzKSwKKysJCQkgICAgIHZhbGFkZHIgKyBpICogRjc3X0RJTV9C WVRFX1NUUklERSAobnNzKSwKKysJCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9CWVRFX1NU UklERSAobnNzKSwKKyAJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCBlbHRz KTsKKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOworIAl9CistICAgICAgaWYg KCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAK KysgICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdfRElNX0NP VU5UIChuc3MpKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAgICAgfQor ICAgZWxzZQorICAgICB7CistICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNz KSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OworKyAgICAgIGZvciAoaSA9IDA7IGkg PCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7Cisg CSAgIGkrKywgKCplbHRzKSsrKQorIAl7CisgCSAgdmFsX3ByaW50IChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSwKKy0JCSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lv bnMpLAorKwkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNp b25zKSwKKyAJCSAgICAgMCwKKy0JCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAo bmRpbWVuc2lvbnMpLAorKwkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUg KG5kaW1lbnNpb25zKSwKKyAJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsIGN1 cnJlbnRfbGFuZ3VhZ2UpOwogIAotLSAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9w ZXJfb2JqZmlsZS0+b2JqZmlsZSwKLS0JCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwot KyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywg c2l6ZW9mICgqYmF0b24pKTsKLSsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotKyAgZ2Ri X2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7CistCSAgaWYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNz KSAtIDEpKQorKwkgIGlmIChpICE9IChGNzdfRElNX0NPVU5UIChuc3MpIC0gMSkpCisgCSAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwogIAotLSAgICAgIC8qIFdlIGRvbid0IGtu b3cgaG93IGxvbmcgdGhlIGxvY2F0aW9uIGxpc3QgaXMsIGJ1dCBtYWtlIHN1cmUgd2UKLS0JIGRv bid0IHJ1biBvZmYgdGhlIGVkZ2Ugb2YgdGhlIHNlY3Rpb24uICAqLwotLSAgICAgIGJhdG9uLT5z aXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKLS0g ICAgICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VO U05EIChhdHRyKTsKLS0gICAgICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVz czsKLS0gICAgICBpZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkKLS0JY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLAotLQkJICAgXygiTG9jYXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lm eWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsKLSsgIC8qIE5vdGUgdGhhdCB3ZSdyZSBqdXN0 IGNvcHlpbmcgdGhlIGJsb2NrJ3MgZGF0YSBwb2ludGVyCi0rICAgICBoZXJlLCBub3QgdGhlIGFj dHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKLSsgICAgIGluZm9fYnVm ZmVyIGZvciBTWU0ncyBvYmpmaWxlOyByaWdodCBub3cgd2UgbmV2ZXIgcmVsZWFzZQotKyAgICAg dGhhdCBidWZmZXIsIGJ1dCB3aGVuIHdlIGRvIGNsZWFuIHVwIHByb3Blcmx5IHRoaXMgbWF5Ci0r ICAgICBuZWVkIHRvIGNoYW5nZS4gICovCi0rICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRy KS0+c2l6ZTsKLSsgIGJhdG9uLT5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwotKyAgZ2Ri X2Fzc2VydCAoYmF0b24tPnNpemUgPT0gMCB8fCBiYXRvbi0+ZGF0YSAhPSBOVUxMKTsKLSsKLSsg IHJldHVybiBiYXRvbjsKLSt9Ci0rCi0rc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRv biAqCi0rZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0 ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2Jh dG9uICpiYXRvbjsKLSsKLSsgIC8qIERXX0FUX2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2VkIERJ RSBtYXkgYmUgbWlzc2luZyBpZiB0aGUgcmVmZXJlbmNlZAotKyAgICAgdmFyaWFibGUgaGFzIGJl ZW4gb3B0aW1pemVkIG91dC4gICovCi0rICBpZiAoIWF0dHIpCi0rICAgIHJldHVybiBOVUxMOwot KwotKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLAot KwkJICAgICAgICZkd2FyZjJfcGVyX29iamZpbGUtPmxvYyk7Ci0rCi0rICBpZiAoIShhdHRyX2Zv cm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCi0rCS8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4 aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotKwkgICB0aGUgc2VjdGlv bi4gIElmIHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNvbXBsYWludCBpbiB0aGUKLSsJICAgb3Ro ZXIgYnJhbmNoLiAgKi8KLSsJJiYgRFdfVU5TTkQgKGF0dHIpIDwgZHdhcmYyX3Blcl9vYmpmaWxl LT5sb2Muc2l6ZSkpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgYmF0b24gPSBvYnN0YWNrX2Fs bG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkgc2l6ZW9mIChzdHJ1Y3Qg ZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKLSsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1Owot KyAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7Ci0rCi0rICAvKiBXZSBkb24ndCBrbm93IGhv dyBsb25nIHRoZSBsb2NhdGlvbiBsaXN0IGlzLCBidXQgbWFrZSBzdXJlIHdlCi0rICAgICBkb24n dCBydW4gb2ZmIHRoZSBlZGdlIG9mIHRoZSBzZWN0aW9uLiAgKi8KLSsgIGJhdG9uLT5zaXplID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKLSsgIGJhdG9u LT5kYXRhID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIp OwotKyAgYmF0b24tPmJhc2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7Ci0rICBpZiAoY3Ut PmJhc2Vfa25vd24gPT0gMCkKLSsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAot KwkgICAgICAgXygiTG9jYXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1Ug YmFzZSBhZGRyZXNzLiIpKTsKLSsKLSsgIHJldHVybiBiYXRvbjsKLSt9Ci0rCi0rLyogU1lNIG1h eSBnZXQgaXRzIFNZTUJPTF9DTEFTUyBvdmVycmlkZW4gb24gaW52YWxpZCBBVFRSIGNvbnRlbnQu ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1 Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0rCQkJICAgICBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xp c3RfYmF0b247Ci0gCi0rICBsb2NsaXN0X2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9i YXRvbiAoYXR0ciwgY3UpOwotKyAgaWYgKGxvY2xpc3RfYmF0b24pCi0rICAgIHsKLSAgICAgICBT WU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzOwotLSAgICAg IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwotKyAgICAgIFNZTUJPTF9MT0NB VElPTl9CQVRPTiAoc3ltKSA9IGxvY2xpc3RfYmF0b247Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0 dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgIHsKLSsgICAgICBTWU1CT0xfQ09NUFVURURf T1BTIChzeW0pID0gJmR3YXJmMl9sb2NleHByX2Z1bmNzOwotKyAgICAgIFNZTUJPTF9MT0NBVElP Tl9CQVRPTiAoc3ltKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsK KyAJICBpZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCistCSAgICAgICYmIChp ICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkpCisrCSAgICAgICYmIChpICE9IChGNzdfRElN X0NPVU5UIChuc3MpIC0gMSkpKQorIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4u Iik7CisgCX0KICAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpiYXRvbjsKLSsgICAgICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3Nf Y29tcGxhaW50ICgibG9jYXRpb24gZGVzY3JpcHRpb24iLAotKwkJCQkJICAgICBTWU1CT0xfTkFU VVJBTF9OQU1FIChzeW0pKTsKLSAKLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+ b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYy X2xvY2V4cHJfYmF0b24pKTsKLS0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0g ICAgICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKLSsgICAgICAvKiBTb21lIG1ldGhvZHMg YXJlIGNhbGxlZCB3L28gY2hlY2tpbmcgU1lNQk9MX0NPTVBVVEVEX09QUyB2YWxpZGl0eS4gICov CitAQCAtMjU2LDYgKzI2Niw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCisgICBDT1JFX0FERFIg YWRkcjsKKyAgIGludCBpbmRleDsKICAKLS0gICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChh dHRyKSkKLS0JewotLQkgIC8qIE5vdGUgdGhhdCB3ZSdyZSBqdXN0IGNvcHlpbmcgdGhlIGJsb2Nr J3MgZGF0YSBwb2ludGVyCi0tCSAgICAgaGVyZSwgbm90IHRoZSBhY3R1YWwgZGF0YS4gIFdlJ3Jl IHN0aWxsIHBvaW50aW5nIGludG8gdGhlCi0tCSAgICAgaW5mb19idWZmZXIgZm9yIFNZTSdzIG9i amZpbGU7IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNlCi0tCSAgICAgdGhhdCBidWZmZXIsIGJ1 dCB3aGVuIHdlIGRvIGNsZWFuIHVwIHByb3Blcmx5IHRoaXMgbWF5Ci0tCSAgICAgbmVlZCB0byBj aGFuZ2UuICAqLwotLQkgIGJhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOwotLQkg IGJhdG9uLT5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwotLQl9Ci0tICAgICAgZWxzZQot LQl7Ci0tCSAgZHdhcmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2NvbXBsYWludCAoImxvY2F0aW9u IGRlc2NyaXB0aW9uIiwKLS0JCQkJCQkgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7Ci0tCSAg YmF0b24tPnNpemUgPSAwOwotLQkgIGJhdG9uLT5kYXRhID0gTlVMTDsKLS0JfQotKyAgICAgIFNZ TUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7Ci0rICAgICAg U1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gTlVMTDsKKysgIGlmIChmX29iamVjdF9hZGRy ZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtICh0eXBlLCBzdHJlYW0pICE9IE5VTEwpCisr ICAgIHJldHVybiAwOworKworICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CisgICBzd2l0Y2ggKFRZ UEVfQ09ERSAodHlwZSkpCisgICAgIHsKK2RpZmYgLS1naXQgYS9nZGIvZmluZHZhci5jIGIvZ2Ri L2ZpbmR2YXIuYworaW5kZXggZTBjYTEyYy4uZGU2MzExYSAxMDA2NDQKKy0tLSBhL2dkYi9maW5k dmFyLmMKKysrKyBiL2dkYi9maW5kdmFyLmMKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUg InVzZXItcmVncy5oIgorICNpbmNsdWRlICJibG9jay5oIgorICNpbmNsdWRlICJvYmpmaWxlcy5o IgorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKICAKLS0gICAgICBTWU1CT0xfQ09NUFVURURfT1BT IChzeW0pID0gJmR3YXJmMl9sb2NleHByX2Z1bmNzOwotLSAgICAgIFNZTUJPTF9MT0NBVElPTl9C QVRPTiAoc3ltKSA9IGJhdG9uOwotKyAgICAgIC8qIEZvciBmdW5jdGlvbnMgYSBtaXNzaW5nIERX X0FUX2ZyYW1lX2Jhc2UgZG9lcyBub3Qgb3B0aW1pemUgb3V0IHRoZQotKwkgd2hvbGUgZnVuY3Rp b24gZGVmaW5pdGlvbiwgb25seSBpdHMgZnJhbWUgYmFzZSByZXNvbHZpbmcuICAqLwotKyAgICAg IGlmIChhdHRyLT5uYW1lID09IERXX0FUX2xvY2F0aW9uKQotKwlTWU1CT0xfQ0xBU1MgKHN5bSkg PSBMT0NfT1BUSU1JWkVEX09VVDsKLSAgICAgfQotIH0KKyAvKiBCYXNpYyBieXRlLXN3YXBwaW5n IHJvdXRpbmVzLiAgQWxsICdleHRyYWN0JyBmdW5jdGlvbnMgcmV0dXJuIGEKKyAgICBob3N0LWZv cm1hdCBpbnRlZ2VyIGZyb20gYSB0YXJnZXQtZm9ybWF0IGludGVnZXIgYXQgQUREUiB3aGljaCBp cworQEAgLTQwMSwyNyArNDAyLDE2IEBAIHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qg c3ltYm9sICpzeW0pCisgLyogR2l2ZW4gYSBzdHJ1Y3Qgc3ltYm9sIGZvciBhIHZhcmlhYmxlLAor ICAgIGFuZCBhIHN0YWNrIGZyYW1lIGlkLCByZWFkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUK KyAgICBhbmQgcmV0dXJuIGEgKHBvaW50ZXIgdG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcg dGhlIHZhbHVlLiAKKy0gICBJZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4g YSB6ZXJvIHBvaW50ZXIuICAqLworKyAgIElmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQs IHJldHVybiBhIHplcm8gcG9pbnRlci4KKysgICBXZSBoYXZlIHRvIGZpcnN0IGZpbmQgdGhlIGFk ZHJlc3Mgb2YgdGhlIHZhcmlhYmxlIGJlZm9yZSBhbGxvY2F0aW5nIHN0cnVjdAorKyAgIHZhbHVl IHRvIHJldHVybiBhcyBpdHMgc2l6ZSBtYXkgZGVwZW5kIG9uIERXX09QX1BVU0hfT0JKRUNUX0FE RFJFU1MgcG9zc2libHkKKysgICB1c2VkIGJ5IGl0cyB0eXBlLiAgKi8KICAKLUBAIC0xMjA1MCw3 ICsxMzI4Niw3IEBAIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAotIHN0cnVjdCBvYmpmaWxlICoKLSBkd2FyZjJf cGVyX2N1X29iamZpbGUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKyBzdHJ1 Y3QgdmFsdWUgKgorIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKICB7Ci0tICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9j dS0+cHN5bXRhYi0+b2JqZmlsZTsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1 LT5vYmpmaWxlOworLSAgc3RydWN0IHZhbHVlICp2OworICAgc3RydWN0IHR5cGUgKnR5cGUgPSBT WU1CT0xfVFlQRSAodmFyKTsKKyAgIENPUkVfQUREUiBhZGRyOworLSAgaW50IGxlbjsKKy0KKy0g IGlmIChTWU1CT0xfQ0xBU1MgKHZhcikgPT0gTE9DX0NPTVBVVEVECistICAgICAgfHwgU1lNQk9M X0NMQVNTICh2YXIpID09IExPQ19SRUdJU1RFUikKKy0gICAgLyogVGhlc2UgY2FzZXMgZG8gbm90 IHVzZSBWLiAgKi8KKy0gICAgdiA9IE5VTEw7CistICBlbHNlCistICAgIHsKKy0gICAgICB2ID0g YWxsb2NhdGVfdmFsdWUgKHR5cGUpOworLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1v cnk7CS8qIFRoZSBtb3N0IGxpa2VseSBwb3NzaWJpbGl0eS4gICovCistICAgIH0KKy0KKy0gIGxl biA9IFRZUEVfTEVOR1RIICh0eXBlKTsKICAKLSAgIC8qIFJldHVybiB0aGUgbWFzdGVyIG9iamZp bGUsIHNvIHRoYXQgd2UgY2FuIHJlcG9ydCBhbmQgbG9vayB1cCB0aGUKLSAgICAgIGNvcnJlY3Qg ZmlsZSBjb250YWluaW5nIHRoaXMgdmFyaWFibGUuICAqLwotQEAgLTEyMDcwLDcgKzEzMzA2LDcg QEAgZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBl cl9jdSkKLSAgIGVsc2UKLSAgICAgewotICAgICAgIC8qIElmIHRoZSBDVSBpcyBub3QgY3VycmVu dGx5IHJlYWQgaW4sIHdlIHJlLXJlYWQgaXRzIGhlYWRlci4gICovCi0tICAgICAgc3RydWN0IG9i amZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPnBzeW10YWItPm9iamZpbGU7Ci0rICAgICAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPm9iamZpbGU7Ci0gICAgICAgc3RydWN0IGR3YXJm Ml9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUKLSAJPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3 YXJmMl9vYmpmaWxlX2RhdGFfa2V5KTsKLSAgICAgICBnZGJfYnl0ZSAqaW5mb19wdHIgPSBwZXJf b2JqZmlsZS0+aW5mby5idWZmZXIgKyBwZXJfY3UtPm9mZnNldDsKLUBAIC0xMjA5Miw3ICsxMzMy OCw3IEBAIGR3YXJmMl9wZXJfY3Vfb2Zmc2V0X3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKnBlcl9jdSkKLSAgIGVsc2UKKyAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFy KSkKKyAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOworQEAgLTQyOSwzMyArNDE5LDQzIEBAIHJlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK KyAgIHN3aXRjaCAoU1lNQk9MX0NMQVNTICh2YXIpKQogICAgICB7Ci0gICAgICAgLyogSWYgdGhl IENVIGlzIG5vdCBjdXJyZW50bHkgcmVhZCBpbiwgd2UgcmUtcmVhZCBpdHMgaGVhZGVyLiAgKi8K LS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+cHN5bXRhYi0+b2JqZmls ZTsKLSsgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+b2JqZmlsZTsKLSAg ICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZQotIAk9IG9iamZpbGVf ZGF0YSAob2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXkpOwotICAgICAgIGdkYl9ieXRl ICppbmZvX3B0ciA9IHBlcl9vYmpmaWxlLT5pbmZvLmJ1ZmZlciArIHBlcl9jdS0+b2Zmc2V0Owot QEAgLTEyMTEyLDcgKzEzMzQ4LDcgQEAgZHdhcmYyX3Blcl9jdV9vZmZzZXRfc2l6ZSAoc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIENPUkVfQUREUgotIGR3YXJmMl9wZXJfY3Vf dGV4dF9vZmZzZXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSB7Ci0tICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+cHN5bXRhYi0+b2JqZmlsZTsKLSsgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOworICAgICBjYXNlIExPQ19D T05TVDoKKy0gICAgICAvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4g ICovCistICAgICAgc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiks IGxlbiwKKy0JCQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBlKSks CistCQkJICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikpOworLSAgICAgIFZBTFVFX0xW QUwgKHYpID0gbm90X2x2YWw7CistICAgICAgcmV0dXJuIHY7CisrICAgICAgeworKwkvKiBQdXQg dGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCisrCXN0cnVjdCB2YWx1ZSAq diA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKysJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsK KysJc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFRZUEVfTEVO R1RIICh0eXBlKSwKKysJCQkgICAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2gg KHR5cGUpKSwKKysJCQkgICAgICAoTE9OR0VTVCkgU1lNQk9MX1ZBTFVFICh2YXIpKTsKKysJcmV0 dXJuIHY7CisrICAgICAgfQogIAotICAgcmV0dXJuIEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9u X29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKLSB9Ci1AQCAtMTIzMzQsNiArMTM1 NzAsMzAgQEAgZHdhcmYyX2ZyZWVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0g ICAvKiBDYWNoZWQgRElFIHRyZWVzIHVzZSB4bWFsbG9jIGFuZCB0aGUgY29tcF91bml0X29ic3Rh Y2suICAqLwotICAgZnJlZV9jYWNoZWRfY29tcF91bml0cyAoTlVMTCk7CisgICAgIGNhc2UgTE9D X0xBQkVMOgorLSAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0 LiAgKi8KKy0gICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCistCXsKKy0JICBDT1JFX0FERFIg YWRkcgorLQkgICAgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERS RVNTICh2YXIpLAorLQkJCQkJU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsKKysgICAgICB7Cisr CS8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KKysJc3RydWN0 IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKwlWQUxVRV9MVkFMICh2KSA9IG5v dF9sdmFsOworKwlpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCisrCSAgeworKwkgICAgQ09SRV9BRERS IGFkZHIKKysJICAgICAgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9B RERSRVNTICh2YXIpLAorKwkJCQkJICBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwogIAotKyAg aWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXgpCi0rICAgIHsKLSsgICAgICBpbnQg aTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBf dW5pdHM7ICsraSkKLSsJewotKwkgIGludCBqOwotKwkgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKLSsKLSsJICBp ZiAoIWN1LT52LnF1aWNrLT5saW5lcykKLSsJICAgIGNvbnRpbnVlOwotKwotKwkgIGZvciAoaiA9 IDA7IGogPCBjdS0+di5xdWljay0+bGluZXMtPm51bV9maWxlX25hbWVzOyArK2opCi0rCSAgICB7 Ci0rCSAgICAgIGlmIChjdS0+di5xdWljay0+ZmlsZV9uYW1lcykKLSsJCXhmcmVlICgodm9pZCAq KSBjdS0+di5xdWljay0+ZmlsZV9uYW1lc1tqXSk7Ci0rCSAgICAgIGlmIChjdS0+di5xdWljay0+ ZnVsbF9uYW1lcykKLSsJCXhmcmVlICgodm9pZCAqKSBjdS0+di5xdWljay0+ZnVsbF9uYW1lc1tq XSk7Ci0rCSAgICB9Ci0rCi0rCSAgZnJlZV9saW5lX2hlYWRlciAoY3UtPnYucXVpY2stPmxpbmVz KTsKLSsJfQotKyAgICB9Ci0rCi0gICAvKiBFdmVyeXRoaW5nIGVsc2Ugc2hvdWxkIGJlIG9uIHRo ZSBvYmpmaWxlIG9ic3RhY2suICAqLwotIH0KKy0JICBzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1 ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLCBhZGRyKTsKKy0JfQorLSAgICAgIGVsc2UKKy0Jc3Rv cmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKKy0JCQkgICAg ICBTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSk7CistICAgICAgVkFMVUVfTFZBTCAodikgPSBu b3RfbHZhbDsKKy0gICAgICByZXR1cm4gdjsKKysJICAgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZh bHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsIGFkZHIpOworKwkgIH0KKysJZWxzZQorKwkgIHN0 b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsCisrCQkJCVNZ TUJPTF9WQUxVRV9BRERSRVNTICh2YXIpKTsKKysJcmV0dXJuIHY7CisrICAgICAgfQogIAotQEAg LTEyMzY4LDYgKzEzNjI4LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRl bV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQotICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9 PSBvZnNfcmhzLT5vZmZzZXQ7Ci0gfQorICAgICBjYXNlIExPQ19DT05TVF9CWVRFUzoKKy0gICAg ICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFy KSwgbGVuKTsKKy0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOworLSAgICAgIHJldHVy biB2OworKyAgICAgIHsKKysJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUp OworKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOworKwltZW1jcHkgKHZhbHVlX2NvbnRlbnRz X3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwKKysJCVRZUEVfTEVOR1RIICh0eXBl KSk7CisrCXJldHVybiB2OworKyAgICAgIH0KICAKLSsvKiBGaWxsIGluIGdlbmVyaWMgYXR0cmli dXRlcyBhcHBsaWNhYmxlIGZvciB0eXBlIERJRXMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZmV0 Y2hfZGllX3R5cGVfYXR0cnMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlw ZSwKLSsJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7CisgICAgIGNhc2UgTE9DX1NUQVRJQzoKKyAgICAgICBpZiAob3ZlcmxheV9kZWJ1 Z2dpbmcpCitAQCAtNDk2LDEyICs0OTYsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1i b2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOworIAorICAg ICBjYXNlIExPQ19CTE9DSzoKKy0gICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCistCXNldF92 YWx1ZV9hZGRyZXNzICh2LCBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MKKy0JICAoQkxPQ0tfU1RB UlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSkp OworLSAgICAgIGVsc2UKKy0Jc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIEJMT0NLX1NUQVJUIChTWU1C T0xfQkxPQ0tfVkFMVUUgKHZhcikpKTsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7CisrICAg ICAgICBDT1JFX0FERFIgYWRkcjsKKysJc3RydWN0IHZhbHVlICp2OwogKwotKyAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKLSsgIGlmIChhdHRyX2Zv cm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sg KHR5cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwKLSsJCQkJCQkJCQkg IGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkp OwotKwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOwot KyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgIFRZUEVfQUxMT0NBVEVEICh0 eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9h c3NlcnQgKCFUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKTsKLSsKLSsgIGF0dHIgPSBkd2FyZjJf YXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Js b2NrIChhdHRyKSkKLSsgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NP Q0lBVEVEICh0eXBlKSk7Ci0rfQotKwotIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGgg RElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAotICAgIHRhYmxlIGlmIG5lY2Vzc2Fy eS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCisrCWlmIChvdmVybGF5X2RlYnVnZ2lu ZykKKysJICBhZGRyID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCisrCSAgICAoQkxPQ0tfU1RB UlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7 CisrCWVsc2UKKysJICBhZGRyID0gQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFy KSk7CisrCS8qIEFERFIgaXMgc2V0IGhlcmUgZm9yIEFMTE9DQVRFX1ZBTFVFJ3MgQ0hFQ0tfVFlQ RURFRiBmb3IKKysJICAgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCisrCW9iamVjdF9h ZGRyZXNzX3NldCAoYWRkcik7CisrCXYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCVZBTFVF X0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CisrCXNldF92YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsK KysJcmV0dXJuIHY7CisrICAgICAgfQogIAotQEAgLTEyMzkxLDYgKzEzNjc2LDggQEAgc2V0X2Rp ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotIHsKLSAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqc2xv dCwgb2ZzOworICAgICBjYXNlIExPQ19SRUdJU1RFUjoKKyAgICAgY2FzZSBMT0NfUkVHUEFSTV9B RERSOgorQEAgLTUyMCw3ICs1MzEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgCSAgICAgIGVycm9yIChfKCJWYWx1ZSBv ZiByZWdpc3RlciB2YXJpYWJsZSBub3QgYXZhaWxhYmxlLiIpKTsKICAKLSsgIGZldGNoX2RpZV90 eXBlX2F0dHJzIChkaWUsIHR5cGUsIGN1KTsKKyAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNz IChyZWd2YWwpOworLQkgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKyAJICB9Cisg CWVsc2UKKyAJICB7CitAQCAtNTYzLDE4ICs1NzMsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOwor IAorICAgICBjYXNlIExPQ19PUFRJTUlaRURfT1VUOgorLSAgICAgIFZBTFVFX0xWQUwgKHYpID0g bm90X2x2YWw7CistICAgICAgc2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHYsIDEpOworLSAgICAg IHJldHVybiB2OworKyAgICAgIHsKKysgICAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRl X3ZhbHVlICh0eXBlKTsKICsKLSAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRo ZSBnbmF0LXNwZWNpZmljIGRhdGEgaXMgYWx3YXlzCi0gICAgICBpbml0aWFsaXplZCAoaWYgbm90 IGFscmVhZHkgc2V0KS4gIFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQotICAgICAgd2Ugc2hv dWxkIG5vdCBiZSBkb2luZyBzbywgYmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVhIGlzCi1A QCAtMTI1OTEsOCArMTM4NzgsNTY3IEBAIGR3YXJmMl9wZXJfb2JqZmlsZV9mcmVlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZCkKLSAgIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRh dGEtPnR5cGVzKTsKLSAgIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKLSAg IG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKLSsgIG11bm1hcF9zZWN0 aW9uX2J1ZmZlciAoJmRhdGEtPmdkYl9pbmRleCk7Ci0rfQorKwlWQUxVRV9MVkFMICh2KSA9IG5v dF9sdmFsOworKwlzZXRfdmFsdWVfb3B0aW1pemVkX291dCAodiwgMSk7CisrCXJldHVybiB2Owor KyAgICAgIH0KKyAKKyAgICAgZGVmYXVsdDoKKyAgICAgICBlcnJvciAoXygiQ2Fubm90IGxvb2sg dXAgdmFsdWUgb2YgYSBib3RjaGVkIHN5bWJvbC4iKSk7CisgICAgICAgYnJlYWs7CisgICAgIH0K KyAKKy0gIHNldF92YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsKKy0gIHNldF92YWx1ZV9sYXp5ICh2 LCAxKTsKKy0gIHJldHVybiB2OworKyAgeworKyAgICBzdHJ1Y3QgdmFsdWUgKnY7CiArCi0rDAor KyAgICAvKiBBRERSIGlzIHNldCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENIRUNLX1RZUEVE RUYgZm9yCisrICAgICAgIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MuICAqLworKyAgICBvYmpl Y3RfYWRkcmVzc19zZXQgKGFkZHIpOworKyAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwor KyAgICBWQUxVRV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OworKyAgICBzZXRfdmFsdWVfYWRkcmVz cyAodiwgYWRkcik7CiArCi0rLyogVGhlIGNvbnRlbnRzIG9mIHRoZSBoYXNoIHRhYmxlIHdlIGNy ZWF0ZSB3aGVuIGJ1aWxkaW5nIHRoZSBzdHJpbmcKLSsgICB0YWJsZS4gICovCi0rc3RydWN0IHN0 cnRhYl9lbnRyeQotK3sKLSsgIG9mZnNldF90eXBlIG9mZnNldDsKLSsgIGNvbnN0IGNoYXIgKnN0 cjsKLSt9OworKyAgICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7CiArCi0rLyogSGFzaCBmdW5jdGlv biBmb3IgYSBzdHJ0YWJfZW50cnkuICAqLwotK3N0YXRpYyBoYXNodmFsX3QKLStoYXNoX3N0cnRh Yl9lbnRyeSAoY29uc3Qgdm9pZCAqZSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RydGFiX2VudHJ5 ICplbnRyeSA9IGU7Ci0rICByZXR1cm4gbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoIChlbnRyeS0+ c3RyKTsKLSt9CisrICAgIHJldHVybiB2OworKyAgfQorIH0KKyAKKyAvKiBJbnN0YWxsIGRlZmF1 bHQgYXR0cmlidXRlcyBmb3IgcmVnaXN0ZXIgdmFsdWVzLiAgKi8KK0BAIC02MTEsMTAgKzYzNiwx MSBAQCBzdHJ1Y3QgdmFsdWUgKgorIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0 eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgeworICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOworLSAgc3RydWN0IHR5 cGUgKnR5cGUxID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisgICBzdHJ1Y3QgdmFsdWUgKnY7Cisg CistICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlw ZTEpKQorKyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwogKwotKy8qIEVxdWFsaXR5IGZ1 bmN0aW9uIGZvciBhIHN0cnRhYl9lbnRyeS4gICovCi0rc3RhdGljIGludAotK2VxX3N0cnRhYl9l bnRyeSAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qg c3RydGFiX2VudHJ5ICplYSA9IGE7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RydGFiX2VudHJ5ICplYiA9 IGI7Ci0rICByZXR1cm4gIXN0cmNtcCAoZWEtPnN0ciwgZWItPnN0cik7Ci0rfQorKyAgaWYgKGdk YmFyY2hfY29udmVydF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQorICAgICB7 CisgICAgICAgLyogVGhlIElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRh aW5pbmcgdGhlCisgICAgICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4g IEl0IG1pZ2h0IG5lZWQgdG8KK0BAIC02MjgsNyArNjU0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3Rl ciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSkKKyAgICAgICBWQUxVRV9GUkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAg ICAgICBWQUxVRV9SRUdOVU0gKHYpID0gcmVnbnVtOworICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJf dG9fdmFsdWUgKGdkYmFyY2gsCistCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlMSwgdmFsdWVfY29u dGVudHNfcmF3ICh2KSk7CisrCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlLCB2YWx1ZV9jb250ZW50 c19yYXcgKHYpKTsKKyAgICAgfQorICAgZWxzZQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL2dk YnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYworaW5kZXggZDk2ZDBmOC4uNGJlYmNkYSAxMDA2NDQK Ky0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYworQEAgLTM5LDYgKzM5 LDkgQEAKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAj aW5jbHVkZSAiaGFzaHRhYi5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorKyNpbmNsdWRlICJk d2FyZjJleHByLmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorIAorIC8qIEluaXRpYWxp emUgQkFETkVTUyBjb25zdGFudHMuICAqLworQEAgLTE0NSw2ICsxNDgsMTEgQEAgc3RhdGljIHZv aWQgcHJpbnRfYXJnX3R5cGVzIChzdHJ1Y3QgZmllbGQgKiwgaW50LCBpbnQpOworIHN0YXRpYyB2 b2lkIGR1bXBfZm5fZmllbGRsaXN0cyAoc3RydWN0IHR5cGUgKiwgaW50KTsKKyBzdGF0aWMgdm9p ZCBwcmludF9jcGx1c19zdHVmZiAoc3RydWN0IHR5cGUgKiwgaW50KTsKKyAKKysvKiBUaGUgaGFz aCB0YWJsZSBob2xkaW5nIGFsbCBkaXNjYXJkYWJsZSBgc3RydWN0IHR5cGUgKicgcmVmZXJlbmNl cy4gICovCisrc3RhdGljIGh0YWJfdCB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlOwogKwotKy8qIENy ZWF0ZSBhIHN0cnRhYl9lbnRyeSBoYXNoIHRhYmxlLiAgKi8KLStzdGF0aWMgaHRhYl90Ci0rY3Jl YXRlX3N0cnRhYiAodm9pZCkKLSt7Ci0rICByZXR1cm4gaHRhYl9jcmVhdGVfYWxsb2MgKDEwMCwg aGFzaF9zdHJ0YWJfZW50cnksIGVxX3N0cnRhYl9lbnRyeSwKLSsJCQkgICAgeGZyZWUsIHhjYWxs b2MsIHhmcmVlKTsKLSt9CisrLyogQ3VycmVudCB0eXBlX2Rpc2NhcmRhYmxlX2NoZWNrIHBhc3Mg dXNlZCBmb3IgVFlQRV9ESVNDQVJEQUJMRV9BR0UuICAqLworK3N0YXRpYyBpbnQgdHlwZV9kaXNj YXJkYWJsZV9hZ2VfY3VycmVudDsKKyAKKyAvKiBBbGxvY2F0ZSBhIG5ldyBPQkpGSUxFLWFzc29j aWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKKyAgICB3aXRoIHNvbWUgZGVmYXVsdHMu ICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9jYXRlZAorQEAgLTE3NSw2ICsx ODMsMzkgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICByZXR1cm4g dHlwZTsKKyB9CisgCisrLyogRGVjbGFyZSBUWVBFIGFzIGRpc2NhcmRhYmxlIG9uIG5leHQgZ2Fy YmFnZSBjb2xsZWN0aW9uIGJ5IGZyZWVfYWxsX3R5cGVzLgorKyAgIFlvdSBtdXN0IGNhbGwgdHlw ZV9tYXJrX3VzZWQgZHVyaW5nIGVhY2ggZnJlZV9hbGxfdHlwZXMgdG8gcHJvdGVjdCBUWVBFIGZy b20KKysgICBiZWluZyBkZWFsbG9jYXRlZC4gICovCiArCi0rLyogQWRkIGEgc3RyaW5nIHRvIHRo ZSBjb25zdGFudCBwb29sLiAgUmV0dXJuIHRoZSBzdHJpbmcncyBvZmZzZXQgaW4KLSsgICBob3N0 IG9yZGVyLiAgKi8KLStzdGF0aWMgb2Zmc2V0X3R5cGUKLSthZGRfc3RyaW5nIChodGFiX3QgdGFi bGUsIHN0cnVjdCBvYnN0YWNrICpjcG9vbCwgY29uc3QgY2hhciAqc3RyKQorK3N0YXRpYyB2b2lk Cisrc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKHN0cnVjdCB0eXBlICp0eXBlKQogK3sKICsgIHZv aWQgKipzbG90OwotKyAgc3RydWN0IHN0cnRhYl9lbnRyeSBlbnRyeTsKLSsgIHN0cnVjdCBzdHJ0 YWJfZW50cnkgKnJlc3VsdDsKICsKLSsgIGVudHJ5LnN0ciA9IHN0cjsKLSsgIHNsb3QgPSBodGFi X2ZpbmRfc2xvdCAodGFibGUsICZlbnRyeSwgSU5TRVJUKTsKLSsgIGlmICgqc2xvdCkKLSsgICAg cmVzdWx0ID0gKnNsb3Q7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSBYTkVXIChz dHJ1Y3Qgc3RydGFiX2VudHJ5KTsKLSsgICAgICByZXN1bHQtPm9mZnNldCA9IG9ic3RhY2tfb2Jq ZWN0X3NpemUgKGNwb29sKTsKLSsgICAgICByZXN1bHQtPnN0ciA9IHN0cjsKLSsgICAgICBvYnN0 YWNrX2dyb3dfc3RyMCAoY3Bvb2wsIHN0cik7Ci0rICAgICAgKnNsb3QgPSByZXN1bHQ7Ci0rICAg IH0KLSsgIHJldHVybiByZXN1bHQtPm9mZnNldDsKLSt9Ci0rCi0rLyogQW4gZW50cnkgaW4gdGhl IHN5bWJvbCB0YWJsZS4gICovCi0rc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeQotK3sKLSsgIC8q IFRoZSBuYW1lIG9mIHRoZSBzeW1ib2wuICAqLwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIC8q IFRoZSBvZmZzZXQgb2YgdGhlIG5hbWUgaW4gdGhlIGNvbnN0YW50IHBvb2wuICAqLwotKyAgb2Zm c2V0X3R5cGUgaW5kZXhfb2Zmc2V0OwotKyAgLyogQSBzb3J0ZWQgdmVjdG9yIG9mIHRoZSBpbmRp Y2VzIG9mIGFsbCB0aGUgQ1VzIHRoYXQgaG9sZCBhbiBvYmplY3QKLSsgICAgIG9mIHRoaXMgbmFt ZS4gICovCi0rICBWRUMgKG9mZnNldF90eXBlKSAqY3VfaW5kaWNlczsKLSt9OwotKwotKy8qIFRo ZSBzeW1ib2wgdGFibGUuICBUaGlzIGlzIGEgcG93ZXItb2YtMi1zaXplZCBoYXNoIHRhYmxlLiAg Ki8KLStzdHJ1Y3QgbWFwcGVkX3N5bXRhYgotK3sKLSsgIG9mZnNldF90eXBlIG5fZWxlbWVudHM7 Ci0rICBvZmZzZXRfdHlwZSBzaXplOwotKyAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqKmRh dGE7Ci0rfTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7CiArCi0r LyogSGFzaCBmdW5jdGlvbiBmb3IgYSBzeW10YWJfaW5kZXhfZW50cnkuICAqLwotK3N0YXRpYyBo YXNodmFsX3QKLStoYXNoX3N5bXRhYl9lbnRyeSAoY29uc3Qgdm9pZCAqZSkKLSt7Ci0rICBjb25z dCBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5ICplbnRyeSA9IGU7Ci0rICByZXR1cm4gaXRlcmF0 aXZlX2hhc2ggKFZFQ19hZGRyZXNzIChvZmZzZXRfdHlwZSwgZW50cnktPmN1X2luZGljZXMpLAot KwkJCSBzaXplb2YgKG9mZnNldF90eXBlKSAqIFZFQ19sZW5ndGggKG9mZnNldF90eXBlLAotKwkJ CQkJCQkgICAgZW50cnktPmN1X2luZGljZXMpLAotKwkJCSAwKTsKLSt9CisrICBUWVBFX0RJU0NB UkRBQkxFICh0eXBlKSA9IDE7CisrICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBl X2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwogKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciBh IHN5bXRhYl9pbmRleF9lbnRyeS4gICovCi0rc3RhdGljIGludAotK2VxX3N5bXRhYl9lbnRyeSAo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltdGFi X2luZGV4X2VudHJ5ICplYSA9IGE7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5 ICplYiA9IGI7Ci0rICBpbnQgbGVuID0gVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsIGVhLT5jdV9p bmRpY2VzKTsKLSsgIGlmIChsZW4gIT0gVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsIGViLT5jdV9p bmRpY2VzKSkKLSsgICAgcmV0dXJuIDA7Ci0rICByZXR1cm4gIW1lbWNtcCAoVkVDX2FkZHJlc3Mg KG9mZnNldF90eXBlLCBlYS0+Y3VfaW5kaWNlcyksCi0rCQkgIFZFQ19hZGRyZXNzIChvZmZzZXRf dHlwZSwgZWItPmN1X2luZGljZXMpLAotKwkJICBzaXplb2YgKG9mZnNldF90eXBlKSAqIGxlbik7 CisrICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUsIHR5cGUs IElOU0VSVCk7CisrICBnZGJfYXNzZXJ0ICghKnNsb3QpOworKyAgKnNsb3QgPSB0eXBlOwogK30K ICsKLSsvKiBEZXN0cm95IGEgc3ltdGFiX2luZGV4X2VudHJ5LiAgKi8KLStzdGF0aWMgdm9pZAot K2RlbGV0ZV9zeW10YWJfZW50cnkgKHZvaWQgKnApCi0rewotKyAgc3RydWN0IHN5bXRhYl9pbmRl eF9lbnRyeSAqZW50cnkgPSBwOwotKyAgVkVDX2ZyZWUgKG9mZnNldF90eXBlLCBlbnRyeS0+Y3Vf aW5kaWNlcyk7Ci0rICB4ZnJlZSAoZW50cnkpOwotK30KKysvKiBBbGxvY2F0ZSBhIG5ldyB0eXBl IGxpa2UgYWxsb2NfdHlwZSBidXQgcHJlc2VydmUgZm9yIGl0IHRoZSBkaXNjYXJkYWJpbGl0eQor KyAgIHN0YXRlIG9mIFBBUkVOVF9UWVBFLiAgKi8KICsKLSsvKiBDcmVhdGUgYSBoYXNoIHRhYmxl IGhvbGRpbmcgc3ltdGFiX2luZGV4X2VudHJ5IG9iamVjdHMuICAqLwotK3N0YXRpYyBodGFiX3QK LStjcmVhdGVfaW5kZXhfdGFibGUgKHZvaWQpCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKythbGxv Y190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQogK3sKLSsgIHJldHVy biBodGFiX2NyZWF0ZV9hbGxvYyAoMTAwLCBoYXNoX3N5bXRhYl9lbnRyeSwgZXFfc3ltdGFiX2Vu dHJ5LAotKwkJCSAgICBkZWxldGVfc3ltdGFiX2VudHJ5LCB4Y2FsbG9jLCB4ZnJlZSk7Ci0rfQor KyAgc3RydWN0IHR5cGUgKm5ld190eXBlID0gYWxsb2NfdHlwZV9jb3B5IChwYXJlbnRfdHlwZSk7 CiArCi0rLyogQ3JlYXRlIGEgbmV3IG1hcHBlZCBzeW10YWIgb2JqZWN0LiAgKi8KLStzdGF0aWMg c3RydWN0IG1hcHBlZF9zeW10YWIgKgotK2NyZWF0ZV9tYXBwZWRfc3ltdGFiICh2b2lkKQotK3sK LSsgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIgPSBYTkVXIChzdHJ1Y3QgbWFwcGVkX3N5 bXRhYik7Ci0rICBzeW10YWItPm5fZWxlbWVudHMgPSAwOwotKyAgc3ltdGFiLT5zaXplID0gMTAy NDsKLSsgIHN5bXRhYi0+ZGF0YSA9IFhDTkVXVkVDIChzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5 ICosIHN5bXRhYi0+c2l6ZSk7Ci0rICByZXR1cm4gc3ltdGFiOwotK30KKysgIGlmIChUWVBFX0RJ U0NBUkRBQkxFIChwYXJlbnRfdHlwZSkpCisrICAgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChu ZXdfdHlwZSk7CiArCi0rLyogRGVzdHJveSBhIG1hcHBlZF9zeW10YWIuICAqLwotK3N0YXRpYyB2 b2lkCi0rY2xlYW51cF9tYXBwZWRfc3ltdGFiICh2b2lkICpwKQotK3sKLSsgIHN0cnVjdCBtYXBw ZWRfc3ltdGFiICpzeW10YWIgPSBwOwotKyAgLyogVGhlIGNvbnRlbnRzIG9mIHRoZSBhcnJheSBh cmUgZnJlZWQgd2hlbiB0aGUgb3RoZXIgaGFzaCB0YWJsZSBpcwotKyAgICAgZGVzdHJveWVkLiAg Ki8KLSsgIHhmcmVlIChzeW10YWItPmRhdGEpOwotKyAgeGZyZWUgKHN5bXRhYik7CisrICByZXR1 cm4gbmV3X3R5cGU7CiArfQogKwotKy8qIEZpbmQgYSBzbG90IGluIFNZTVRBQiBmb3IgdGhlIHN5 bWJvbCBOQU1FLiAgUmV0dXJucyBhIHBvaW50ZXIgdG8KLSsgICB0aGUgc2xvdC4gICovCi0rc3Rh dGljIHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKioKLStmaW5kX3Nsb3QgKHN0cnVjdCBtYXBw ZWRfc3ltdGFiICpzeW10YWIsIGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgb2Zmc2V0X3R5cGUg aW5kZXgsIHN0ZXAsIGhhc2ggPSBtYXBwZWRfaW5kZXhfc3RyaW5nX2hhc2ggKG5hbWUpOwotKwot KyAgaW5kZXggPSBoYXNoICYgKHN5bXRhYi0+c2l6ZSAtIDEpOwotKyAgc3RlcCA9ICgoaGFzaCAq IDE3KSAmIChzeW10YWItPnNpemUgLSAxKSkgfCAxOwotKwotKyAgZm9yICg7OykKLSsgICAgewot KyAgICAgIGlmICghc3ltdGFiLT5kYXRhW2luZGV4XSB8fCAhc3RyY21wIChuYW1lLCBzeW10YWIt PmRhdGFbaW5kZXhdLT5uYW1lKSkKLSsJcmV0dXJuICZzeW10YWItPmRhdGFbaW5kZXhdOwotKyAg ICAgIGluZGV4ID0gKGluZGV4ICsgc3RlcCkgJiAoc3ltdGFiLT5zaXplIC0gMSk7Ci0rICAgIH0K LSB9CisgLyogQWxsb2NhdGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJl IGFuZCBmaWxsIGl0CisgICAgd2l0aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBl IHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKKyAgICBvbiB0aGUgaGVhcC4gICovCitAQCAtMzAwLDcg KzM0MSw3IEBAIG1ha2VfcG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5 cGUgKip0eXBlcHRyKQogIAotKy8qIEV4cGFuZCBTWU1UQUIncyBoYXNoIHRhYmxlLiAgKi8KLStz dGF0aWMgdm9pZAotK2hhc2hfZXhwYW5kIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiKQot K3sKLSsgIG9mZnNldF90eXBlIG9sZF9zaXplID0gc3ltdGFiLT5zaXplOwotKyAgb2Zmc2V0X3R5 cGUgaTsKLSsgIHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKipvbGRfZW50cmllcyA9IHN5bXRh Yi0+ZGF0YTsKLSsKLSsgIHN5bXRhYi0+c2l6ZSAqPSAyOwotKyAgc3ltdGFiLT5kYXRhID0gWENO RVdWRUMgKHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKiwgc3ltdGFiLT5zaXplKTsKLSsKLSsg IGZvciAoaSA9IDA7IGkgPCBvbGRfc2l6ZTsgKytpKQorICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAq dHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCisgICAgIHsK Ky0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7CisrICAgICAgbnR5cGUgPSBh bGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7CisgICAgICAgaWYgKHR5cGVwdHIpCisgCSp0eXBl cHRyID0gbnR5cGU7CisgICAgIH0KK0BAIC0zNzcsNyArNDE4LDcgQEAgbWFrZV9yZWZlcmVuY2Vf dHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKKyAKKyAgIGlm ICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0 ZSBvbmUuICAqLworICAgICB7CistICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUp OworKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOworICAgICAgIGlm ICh0eXBlcHRyKQorIAkqdHlwZXB0ciA9IG50eXBlOworICAgICB9CitAQCAtNzQ4LDYgKzc4OSw3 IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0 eXBlICppbmRleF90eXBlLAorICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAo c3RydWN0IHJhbmdlX2JvdW5kcykpOworICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBlKSA9 IGxvd19ib3VuZDsKKyAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9ib3Vu ZDsKKysgIFRZUEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7CisgCisgICBpZiAobG93 X2JvdW5kID49IDApCisgICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7CitAQCAt ODkxLDI2ICs5MzMsNDUgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRf dHlwZSwKKyAKKyAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwor ICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOworLSAgaWYg KGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5k KSA8IDApCistICAgIGxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOworLSAgQ0hFQ0tfVFlQRURF RiAoZWxlbWVudF90eXBlKTsKKy0gIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJh eSBsZW5ndGguICBBZGEgYXJyYXlzIGNhbiBiZQorLSAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhl IGhpZ2hfYm91bmQgYmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCistICAgICBJbiBz dWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KKy0gIGlmICho aWdoX2JvdW5kIDwgbG93X2JvdW5kKQorLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0g MDsKKy0gIGVsc2UKKy0gICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CistICAgICAgVFlQ RV9MRU5HVEggKGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwor ICAgVFlQRV9ORklFTERTIChyZXN1bHRfdHlwZSkgPSAxOworICAgVFlQRV9GSUVMRFMgKHJlc3Vs dF90eXBlKSA9CisgICAgIChzdHJ1Y3QgZmllbGQgKikgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBl LCBzaXplb2YgKHN0cnVjdCBmaWVsZCkpOworICAgVFlQRV9JTkRFWF9UWVBFIChyZXN1bHRfdHlw ZSkgPSByYW5nZV90eXBlOworICAgVFlQRV9WUFRSX0ZJRUxETk8gKHJlc3VsdF90eXBlKSA9IC0x OworIAorLSAgLyogVFlQRV9GTEFHX1RBUkdFVF9TVFVCIHdpbGwgdGFrZSBjYXJlIG9mIHplcm8g bGVuZ3RoIGFycmF5cyAqLworKyAgLyogRFdBUkYgYmxvY2tzIG1heSBkZXBlbmQgb24gcnVudGlt ZSBpbmZvcm1hdGlvbiBsaWtlCisrICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIG5vdCBi ZWluZyBhdmFpbGFibGUgZHVyaW5nIHRoZQorKyAgICAgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4g ICovCisrICBpZiAoVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgIT0gUkFO R0VfQk9VTkRfS0lORF9DT05TVEFOVAorKyAgICAgIHx8IFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmhpZ2gua2luZCAhPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UCisrICAgICAgfHwg VFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKKysgICAgICB8fCBUWVBFX0hJ R0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKKysgICAgICB8fCBnZXRfZGlzY3JldGVf Ym91bmRzIChyYW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQogKyAgICB7 Ci0rICAgICAgaWYgKG9sZF9lbnRyaWVzW2ldKQotKwl7Ci0rCSAgc3RydWN0IHN5bXRhYl9pbmRl eF9lbnRyeSAqKnNsb3QgPSBmaW5kX3Nsb3QgKHN5bXRhYiwKLSsJCQkJCQkJb2xkX2VudHJpZXNb aV0tPm5hbWUpOwotKwkgICpzbG90ID0gb2xkX2VudHJpZXNbaV07Ci0rCX0KKysgICAgICBsb3df Ym91bmQgPSAwOworKyAgICAgIGhpZ2hfYm91bmQgPSAtMTsKICsgICAgfQogKwotKyAgeGZyZWUg KG9sZF9lbnRyaWVzKTsKLSt9Ci0rCi0rLyogQWRkIGFuIGVudHJ5IHRvIFNZTVRBQi4gIE5BTUUg aXMgdGhlIG5hbWUgb2YgdGhlIHN5bWJvbC4gIENVX0lOREVYCi0rICAgaXMgdGhlIGluZGV4IG9m IHRoZSBDVSBpbiB3aGljaCB0aGUgc3ltYm9sIGFwcGVhcnMuICAqLwotK3N0YXRpYyB2b2lkCi0r YWRkX2luZGV4X2VudHJ5IChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiLCBjb25zdCBjaGFy ICpuYW1lLAotKwkJIG9mZnNldF90eXBlIGN1X2luZGV4KQotK3sKLSsgIHN0cnVjdCBzeW10YWJf aW5kZXhfZW50cnkgKipzbG90OwotKwotKyAgKytzeW10YWItPm5fZWxlbWVudHM7Ci0rICBpZiAo NCAqIHN5bXRhYi0+bl9lbGVtZW50cyAvIDMgPj0gc3ltdGFiLT5zaXplKQotKyAgICBoYXNoX2V4 cGFuZCAoc3ltdGFiKTsKLSsKLSsgIHNsb3QgPSBmaW5kX3Nsb3QgKHN5bXRhYiwgbmFtZSk7Ci0r ICBpZiAoISpzbG90KQotKyAgICB7Ci0rICAgICAgKnNsb3QgPSBYTkVXIChzdHJ1Y3Qgc3ltdGFi X2luZGV4X2VudHJ5KTsKLSsgICAgICAoKnNsb3QpLT5uYW1lID0gbmFtZTsKLSsgICAgICAoKnNs b3QpLT5jdV9pbmRpY2VzID0gTlVMTDsKLSsgICAgfQotKyAgLyogRG9uJ3QgcHVzaCBhbiBpbmRl eCB0d2ljZS4gIER1ZSB0byBob3cgd2UgYWRkIGVudHJpZXMgd2Ugb25seQotKyAgICAgaGF2ZSB0 byBjaGVjayB0aGUgbGFzdCBvbmUuICAqLyAKLSsgIGlmIChWRUNfZW1wdHkgKG9mZnNldF90eXBl LCAoKnNsb3QpLT5jdV9pbmRpY2VzKQotKyAgICAgIHx8IFZFQ19sZW5ndGggKG9mZnNldF90eXBl LCAoKnNsb3QpLT5jdV9pbmRpY2VzKSAhPSBjdV9pbmRleCkKLSsgICAgVkVDX3NhZmVfcHVzaCAo b2Zmc2V0X3R5cGUsICgqc2xvdCktPmN1X2luZGljZXMsIGN1X2luZGV4KTsKLSt9Ci0rCi0rLyog QWRkIGEgdmVjdG9yIG9mIGluZGljZXMgdG8gdGhlIGNvbnN0YW50IHBvb2wuICAqLwotK3N0YXRp YyBvZmZzZXRfdHlwZQotK2FkZF9pbmRpY2VzX3RvX2Nwb29sIChodGFiX3QgaW5kZXhfdGFibGUs IHN0cnVjdCBvYnN0YWNrICpjcG9vbCwKLSsJCSAgICAgIHN0cnVjdCBzeW10YWJfaW5kZXhfZW50 cnkgKmVudHJ5KQotK3sKLSsgIHZvaWQgKipzbG90OwotKwotKyAgc2xvdCA9IGh0YWJfZmluZF9z bG90IChpbmRleF90YWJsZSwgZW50cnksIElOU0VSVCk7Ci0rICBpZiAoISpzbG90KQotKyAgICB7 Ci0rICAgICAgb2Zmc2V0X3R5cGUgbGVuID0gVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsIGVudHJ5 LT5jdV9pbmRpY2VzKTsKLSsgICAgICBvZmZzZXRfdHlwZSB2YWwgPSBNQVlCRV9TV0FQIChsZW4p OwotKyAgICAgIG9mZnNldF90eXBlIGl0ZXI7Ci0rICAgICAgaW50IGk7Ci0rCi0rICAgICAgKnNs b3QgPSBlbnRyeTsKLSsgICAgICBlbnRyeS0+aW5kZXhfb2Zmc2V0ID0gb2JzdGFja19vYmplY3Rf c2l6ZSAoY3Bvb2wpOwotKwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoY3Bvb2wsICZ2YWwsIHNpemVv ZiAodmFsKSk7Ci0rICAgICAgZm9yIChpID0gMDsKLSsJICAgVkVDX2l0ZXJhdGUgKG9mZnNldF90 eXBlLCBlbnRyeS0+Y3VfaW5kaWNlcywgaSwgaXRlcik7Ci0rCSAgICsraSkKLSsJewotKwkgIHZh bCA9IE1BWUJFX1NXQVAgKGl0ZXIpOwotKwkgIG9ic3RhY2tfZ3JvdyAoY3Bvb2wsICZ2YWwsIHNp emVvZiAodmFsKSk7Ci0rCX0KLSsgICAgfQorKyAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcg dGhlIGFycmF5IGxlbmd0aC4gIEFkYSBhcnJheXMgY2FuIGJlCisrICAgICBlbXB0eSBhcnJheXMg d2l0aCB0aGUgaGlnaF9ib3VuZCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KKysg ICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBhcnJheSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICBUWVBF X1RBUkdFVF9TVFVCIG5lZWRzIHRvCisrICAgICBiZSBjaGVja2VkIGFzIGl0IG1heSBoYXZlIGRl cGVuZGVuY2llcyBvbiBEV0FSRiBibG9ja3MgZGVwZW5kaW5nIG9uCisrICAgICBydW50aW1lIGlu Zm9ybWF0aW9uIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBDUkVBVEVfQVJSQVlfVFlQRSB0aW1l LiAgKi8KKysgIGlmIChoaWdoX2JvdW5kIDwgbG93X2JvdW5kIHx8IFRZUEVfVEFSR0VUX1NUVUIg KGVsZW1lbnRfdHlwZSkpCisrICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwogKyAg ZWxzZQogKyAgICB7Ci0rICAgICAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqb2xkX2VudHJ5 ID0gKnNsb3Q7Ci0rICAgICAgZW50cnktPmluZGV4X29mZnNldCA9IG9sZF9lbnRyeS0+aW5kZXhf b2Zmc2V0OwotKyAgICAgIGVudHJ5ID0gb2xkX2VudHJ5OwotKyAgICB9Ci0rICByZXR1cm4gZW50 cnktPmluZGV4X29mZnNldDsKLSt9Ci0rCi0rLyogV3JpdGUgdGhlIG1hcHBlZCBoYXNoIHRhYmxl IFNZTVRBQiB0byB0aGUgb2JzdGFjayBPVVRQVVQsIHdpdGgKLSsgICBjb25zdGFudCBwb29sIGVu dHJpZXMgZ29pbmcgaW50byB0aGUgb2JzdGFjayBDUE9PTC4gICovCi0rc3RhdGljIHZvaWQKLSt3 cml0ZV9oYXNoX3RhYmxlIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiLAotKwkJICBzdHJ1 Y3Qgb2JzdGFjayAqb3V0cHV0LCBzdHJ1Y3Qgb2JzdGFjayAqY3Bvb2wpCi0rewotKyAgb2Zmc2V0 X3R5cGUgaTsKLSsgIGh0YWJfdCBpbmRleF90YWJsZTsKLSsgIGh0YWJfdCBzdHJfdGFibGU7Ci0r Ci0rICBpbmRleF90YWJsZSA9IGNyZWF0ZV9pbmRleF90YWJsZSAoKTsKLSsgIHN0cl90YWJsZSA9 IGNyZWF0ZV9zdHJ0YWIgKCk7Ci0rICAvKiBXZSBhZGQgYWxsIHRoZSBpbmRleCB2ZWN0b3JzIHRv IHRoZSBjb25zdGFudCBwb29sIGZpcnN0LCB0bwotKyAgICAgZW5zdXJlIGFsaWdubWVudCBpcyBv ay4gICovCi0rICBmb3IgKGkgPSAwOyBpIDwgc3ltdGFiLT5zaXplOyArK2kpCi0rICAgIHsKLSsg ICAgICBpZiAoc3ltdGFiLT5kYXRhW2ldKQotKwlhZGRfaW5kaWNlc190b19jcG9vbCAoaW5kZXhf dGFibGUsIGNwb29sLCBzeW10YWItPmRhdGFbaV0pOworKyAgICAgIENIRUNLX1RZUEVERUYgKGVs ZW1lbnRfdHlwZSk7CisrICAgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CisrCVRZUEVf TEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKICsg ICAgfQogKwotKyAgLyogTm93IHdyaXRlIG91dCB0aGUgaGFzaCB0YWJsZS4gICovCi0rICBmb3Ig KGkgPSAwOyBpIDwgc3ltdGFiLT5zaXplOyArK2kpCisgICBpZiAoVFlQRV9MRU5HVEggKHJlc3Vs dF90eXBlKSA9PSAwKQorLSAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOwog KyAgICB7Ci0rICAgICAgb2Zmc2V0X3R5cGUgc3RyX29mZiwgdmVjX29mZjsKLSsKLSsgICAgICBp ZiAoc3ltdGFiLT5kYXRhW2ldKQotKwl7Ci0rCSAgc3RyX29mZiA9IGFkZF9zdHJpbmcgKHN0cl90 YWJsZSwgY3Bvb2wsIHN5bXRhYi0+ZGF0YVtpXS0+bmFtZSk7Ci0rCSAgdmVjX29mZiA9IHN5bXRh Yi0+ZGF0YVtpXS0+aW5kZXhfb2Zmc2V0OwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyog V2hpbGUgMCBpcyBhIHZhbGlkIGNvbnN0YW50IHBvb2wgaW5kZXgsIGl0IGlzIG5vdCB2YWxpZAot KwkgICAgIHRvIGhhdmUgMCBmb3IgYm90aCBvZmZzZXRzLiAgKi8KLSsJICBzdHJfb2ZmID0gMDsK LSsJICB2ZWNfb2ZmID0gMDsKLSsJfQotKwotKyAgICAgIHN0cl9vZmYgPSBNQVlCRV9TV0FQIChz dHJfb2ZmKTsKLSsgICAgICB2ZWNfb2ZmID0gTUFZQkVfU1dBUCAodmVjX29mZik7Ci0rCi0rICAg ICAgb2JzdGFja19ncm93IChvdXRwdXQsICZzdHJfb2ZmLCBzaXplb2YgKHN0cl9vZmYpKTsKLSsg ICAgICBvYnN0YWNrX2dyb3cgKG91dHB1dCwgJnZlY19vZmYsIHNpemVvZiAodmVjX29mZikpOwor KyAgICAgIC8qIFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBmb3Igc3BlY2lmaWMgaW5z dGFuY2VzIGJ5CisrCSBDSEVDS19UWVBFREVGLiAgKi8KKysgICAgICBUWVBFX1RBUkdFVF9TVFVC IChyZXN1bHRfdHlwZSkgPSAxOwogKyAgICB9CisgCisgICByZXR1cm4gcmVzdWx0X3R5cGU7Cisg fQorQEAgLTE0MTMsNiArMTQ3NCwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxhaW50ICh2b2lkKQor ICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJzdHViIHR5cGUgaGFzIE5VTEwg bmFtZSIpKTsKKyB9CisgCisrLyogQ2FsY3VsYXRlIHRoZSBtZW1vcnkgbGVuZ3RoIG9mIGFycmF5 IFRZUEUuCiArCi0rICBodGFiX2RlbGV0ZSAoc3RyX3RhYmxlKTsKLSsgIGh0YWJfZGVsZXRlIChp bmRleF90YWJsZSk7Ci0rfQorKyAgIFRBUkdFVF9UWVBFIHNob3VsZCBiZSBzZXQgdG8gYGNoZWNr X3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKScgYXMKKysgICBhIHBlcmZvcm1hbmNl IGhpbnQuICBGZWVsIGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0IEZVTExfU1BBTiB0byByZXR1cm4g dGhlCisrICAgc2l6ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFkZGluZyBvZiB0aGUgbGFzdCBlbGVt ZW50IC0gaXQgbWF5IGRpZmZlciBmcm9tIHRoZQorKyAgIGNsZWFyZWQgRlVMTF9TUEFOIHJldHVy biB2YWx1ZSAodGhlIGV4cGVjdGVkIFNJWkVPRikgZm9yIG5vbi16ZXJvCisrICAgVFlQRV9CWVRF X1NUUklERSB2YWx1ZXMuICAqLwogKwotKy8qIFdyaXRlIGFuIGFkZHJlc3MgZW50cnkgdG8gQURE Ul9PQlNUQUNLLiAgVGhlIGFkZHJlc3NlcyBhcmUgdGFrZW4KLSsgICBmcm9tIFBTVDsgQ1VfSU5E RVggaXMgdGhlIGluZGV4IG9mIHRoZSBDVSBpbiB0aGUgdmVjdG9yIG9mIGFsbAotKyAgIENVcy4g ICovCi0rc3RhdGljIHZvaWQKLSthZGRfYWRkcmVzc19lbnRyeSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCi0rCQkgICBzdHJ1Y3Qgb2JzdGFjayAqYWRkcl9vYnN0YWNrLCBzdHJ1Y3QgcGFydGlh bF9zeW10YWIgKnBzdCwKLSsJCSAgIHVuc2lnbmVkIGludCBjdV9pbmRleCkKKytzdGF0aWMgTE9O R0VTVAorK3R5cGVfbGVuZ3RoX2dldCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICp0 YXJnZXRfdHlwZSwgaW50IGZ1bGxfc3BhbikKICt7Ci0rICBvZmZzZXRfdHlwZSBvZmZzZXQ7Ci0r ICBjaGFyIGFkZHJbOF07Ci0rICBDT1JFX0FERFIgYmFzZWFkZHI7CisrICBzdHJ1Y3QgdHlwZSAq cmFuZ2VfdHlwZTsKKysgIExPTkdFU1QgYnl0ZV9zdHJpZGUgPSAwOwkvKiBgPSAwJyBmb3IgYSBm YWxzZSBHQ0Mgd2FybmluZy4gICovCisrICBMT05HRVNUIGNvdW50LCBlbGVtZW50X3NpemUsIHJl dHZhbDsKICsKLSsgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0 cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOworKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0g VFlQRV9DT0RFX0FSUkFZCisrICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVf U1RSSU5HKQorKyAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpOwogKwotKyAgc3RvcmVfdW5z aWduZWRfaW50ZWdlciAoYWRkciwgOCwgQkZEX0VORElBTl9MSVRUTEUsIHBzdC0+dGV4dGxvdyAt IGJhc2VhZGRyKTsKLSsgIG9ic3RhY2tfZ3JvdyAoYWRkcl9vYnN0YWNrLCBhZGRyLCA4KTsKLSsg IHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGFkZHIsIDgsIEJGRF9FTkRJQU5fTElUVExFLCBwc3Qt PnRleHRoaWdoIC0gYmFzZWFkZHIpOwotKyAgb2JzdGFja19ncm93IChhZGRyX29ic3RhY2ssIGFk ZHIsIDgpOwotKyAgb2Zmc2V0ID0gTUFZQkVfU1dBUCAoY3VfaW5kZXgpOwotKyAgb2JzdGFja19n cm93IChhZGRyX29ic3RhY2ssICZvZmZzZXQsIHNpemVvZiAob2Zmc2V0X3R5cGUpKTsKLSt9Cisr ICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5EIGZvciBpbnZhbGlkICh1bmFsbG9j YXRlZC91bmFzc29jaWF0ZWQpCisrICAgICBGb3J0cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQg ZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4gYmUKKysgICAgIHplcm8tbGVuZ3Ro LiAgKi8KKysgIGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSkpCisrICAg IHJldHVybiAwOwogKwotKy8qIEFkZCBhIGxpc3Qgb2YgcGFydGlhbCBzeW1ib2xzIHRvIFNZTVRB Qi4gICovCi0rc3RhdGljIHZvaWQKLSt3cml0ZV9wc3ltYm9scyAoc3RydWN0IG1hcHBlZF9zeW10 YWIgKnN5bXRhYiwKLSsJCXN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW1wLAotKwkJaW50IGNv dW50LAotKwkJb2Zmc2V0X3R5cGUgY3VfaW5kZXgpCi0rewotKyAgZm9yICg7IGNvdW50LS0gPiAw OyArK3BzeW1wKQorKyAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7CisrICBp ZiAoVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKQorKyAgICAgIHx8IFRZUEVf SElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpKQorKyAgICByZXR1cm4gMDsKKysgIGNv dW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5n ZV90eXBlKSArIDE7CisrICAvKiBJdCBtYXkgaGFwcGVuIGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0 aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAgKi8KKysgIGlmIChjb3VudCA8IDApCisrICAg IHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZhbGlkIGJvdW5kcyAlcy4uJXMi KSwKKysJICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9uZ2VzdCAoVFlQRV9MT1dfQk9VTkQgKHJh bmdlX3R5cGUpKSwKKysJICAgICBwbG9uZ2VzdCAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBl KSkpOworKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGNvdW50ID09IDAgcmln aHQuICAqLworKyAgaWYgKGNvdW50IDw9IDApCisrICAgIHJldHVybiAwOworKyAgaWYgKGZ1bGxf c3BhbiB8fCBjb3VudCA+IDEpCiArICAgIHsKLSsgICAgICBpZiAoU1lNQk9MX0xBTkdVQUdFICgq cHN5bXApID09IGxhbmd1YWdlX2FkYSkKLSsJZXJyb3IgKF8oIkFkYSBpcyBub3QgY3VycmVudGx5 IHN1cHBvcnRlZCBieSB0aGUgaW5kZXgiKSk7Ci0rICAgICAgYWRkX2luZGV4X2VudHJ5IChzeW10 YWIsIFNZTUJPTF9OQVRVUkFMX05BTUUgKCpwc3ltcCksIGN1X2luZGV4KTsKKysgICAgICAvKiBX ZSBkbyBub3QgdXNlIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHR5cGUpIGhlcmUgYXMg d2Ugd2FudCB0bworKyAgICAgICAgIGZvcmNlIEZVTExfU1BBTiB0byAxLiAgKi8KKysgICAgICBi eXRlX3N0cmlkZSA9IFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpOworKyAgICAgIGlmIChi eXRlX3N0cmlkZSA9PSAwKQorKyAgICAgICAgeworKwkgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxM KQorKwkgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSk7CisrCSAgYnl0ZV9zdHJpZGUgPSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBO VUxMLCAxKTsKKysJfQogKyAgICB9Ci0rfQogKwotKy8qIFdyaXRlIHRoZSBjb250ZW50cyBvZiBh biAoInVuZmluaXNoZWQiKSBvYnN0YWNrIHRvIEZJTEUuICBUaHJvdyBhbgotKyAgIGV4Y2VwdGlv biBpZiB0aGVyZSBpcyBhbiBlcnJvci4gICovCi0rc3RhdGljIHZvaWQKLSt3cml0ZV9vYnN0YWNr IChGSUxFICpmaWxlLCBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKLSt7Ci0rICBpZiAoZndyaXRl IChvYnN0YWNrX2Jhc2UgKG9ic3RhY2spLCAxLCBvYnN0YWNrX29iamVjdF9zaXplIChvYnN0YWNr KSwKLSsJICAgICAgZmlsZSkKLSsgICAgICAhPSBvYnN0YWNrX29iamVjdF9zaXplIChvYnN0YWNr KSkKLSsgICAgZXJyb3IgKF8oImNvdWxkbid0IGRhdGEgd3JpdGUgdG8gZmlsZSIpKTsKLSt9Cisr ICAvKiBGb3Igbm93LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8g YmUgMCBpZiBpdHMgbGVuZ3RoCisrICAgICBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVs b3cgYXNzdW1lcyB0aGF0IGZvciB4IDwgMCwKKysgICAgIChVTE9OR0VTVCkgeCA9PSAteCArIFVM T05HRVNUX01BWCArIDEsIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkCisrICAg ICBieSBDLCBidXQgaXMgdXN1YWxseSB0cnVlIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYg eCB3ZXJlIHVuc2lnbmVkCisrICAgICB3aXRoIGl0cyBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVz ZXMgdGhlIGZhY3QgdGhhdCBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcworKyAgICAgYWx3YXlzIHJl cHJlc2VudGFibGUgaW4gVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQr MQorKyAgICAgb3ZlcmZsb3dzLCBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRo ZXNlIHRlc3RzIGlmIHdlIGRlY2lkZSB0bworKyAgICAgaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0 aW9uIG9mIFRZUEVfTEVOR1RIIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULgorKyAgICAg Ki8KICsKLSsvKiBVbmxpbmsgYSBmaWxlIGlmIHRoZSBhcmd1bWVudCBpcyBub3QgTlVMTC4gICov Ci0rc3RhdGljIHZvaWQKLSt1bmxpbmtfaWZfc2V0ICh2b2lkICpwKQotK3sKLSsgIGNoYXIgKipm aWxlbmFtZSA9IHA7Ci0rICBpZiAoKmZpbGVuYW1lKQotKyAgICB1bmxpbmsgKCpmaWxlbmFtZSk7 CisrICBpZiAoZnVsbF9zcGFuKQorKyAgICB7CisrICAgICAgcmV0dmFsID0gY291bnQgKiBieXRl X3N0cmlkZTsKKysgICAgICBpZiAoY291bnQgPT0gMCB8fCByZXR2YWwgLyBjb3VudCAhPSBieXRl X3N0cmlkZSB8fCByZXR2YWwgPiBVSU5UX01BWCkKKysJcmV0dmFsID0gMDsKKysgICAgICByZXR1 cm4gcmV0dmFsOworKyAgICB9CisrICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKKysgICAgdGFy Z2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICBl bGVtZW50X3NpemUgPSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKKysg IHJldHZhbCA9IChjb3VudCAtIDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7CisrICBp ZiAocmV0dmFsIDwgZWxlbWVudF9zaXplCisrICAgICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKKysg ICAgICAgICAgJiYgKHJldHZhbCAtIGVsZW1lbnRfc2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3Vu dCAtIDEpCisrICAgICAgfHwgcmV0dmFsID4gVUlOVF9NQVgpCisrICAgIHJldHZhbCA9IDA7Cisr ICByZXR1cm4gcmV0dmFsOwogK30KICsKLSsvKiBDcmVhdGUgYW4gaW5kZXggZmlsZSBmb3IgT0JK RklMRSBpbiB0aGUgZGlyZWN0b3J5IERJUi4gICovCi0rc3RhdGljIHZvaWQKLSt3cml0ZV9wc3lt dGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKmRpcikK KysvKiBQcmVwYXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4gIEN1 cnJlbnRseSB0aGlzIGZ1bmN0aW9uCisrICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZTkFN SUMgZmxhZy4gICovCisrCisrdm9pZAorK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBl KQogK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgY2hhciAqZmlsZW5hbWUsICpj bGVhbnVwX2ZpbGVuYW1lOwotKyAgc3RydWN0IG9ic3RhY2sgY29udGVudHMsIGFkZHJfb2JzdGFj aywgY29uc3RhbnRfcG9vbCwgc3ltdGFiX29ic3RhY2ssIGN1X2xpc3Q7CiArICBpbnQgaTsKLSsg IEZJTEUgKm91dF9maWxlOwotKyAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKLSsgIG9m ZnNldF90eXBlIHZhbCwgc2l6ZV9vZl9jb250ZW50cywgdG90YWxfbGVuOwotKyAgc3RydWN0IHN0 YXQgc3Q7Ci0rICBjaGFyIGJ1Zls4XTsKLSsKLSsgIGlmICghb2JqZmlsZS0+cHN5bXRhYnMpCi0r ICAgIHJldHVybjsKLSsgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4KQotKyAg ICBlcnJvciAoXygiQ2Fubm90IHVzZSBhbiBpbmRleCB0byBjcmVhdGUgdGhlIGluZGV4IikpOwog KwotKyAgaWYgKHN0YXQgKG9iamZpbGUtPm5hbWUsICZzdCkgPCAwKQotKyAgICBwZXJyb3Jfd2l0 aF9uYW1lIChfKCJDb3VsZCBub3Qgc3RhdCIpKTsKLSsKLSsgIGZpbGVuYW1lID0gY29uY2F0IChk aXIsIFNMQVNIX1NUUklORywgbGJhc2VuYW1lIChvYmpmaWxlLT5uYW1lKSwKLSsJCSAgICAgSU5E RVhfU1VGRklYLCAoY2hhciAqKSBOVUxMKTsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhm cmVlLCBmaWxlbmFtZSk7Ci0rCi0rICBvdXRfZmlsZSA9IGZvcGVuIChmaWxlbmFtZSwgIndiIik7 Ci0rICBpZiAoIW91dF9maWxlKQotKyAgICBlcnJvciAoXygiQ2FuJ3Qgb3BlbiBgJXMnIGZvciB3 cml0aW5nIiksIGZpbGVuYW1lKTsKLSsKLSsgIGNsZWFudXBfZmlsZW5hbWUgPSBmaWxlbmFtZTsK LSsgIG1ha2VfY2xlYW51cCAodW5saW5rX2lmX3NldCwgJmNsZWFudXBfZmlsZW5hbWUpOwotKwot KyAgc3ltdGFiID0gY3JlYXRlX21hcHBlZF9zeW10YWIgKCk7Ci0rICBtYWtlX2NsZWFudXAgKGNs ZWFudXBfbWFwcGVkX3N5bXRhYiwgc3ltdGFiKTsKLSsKLSsgIG9ic3RhY2tfaW5pdCAoJmFkZHJf b2JzdGFjayk7Ci0rICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmYWRkcl9vYnN0YWNrKTsK KysgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyArK2kpCisrICAgIGlmIChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpICYmIFRZUEVfRFlOQU1JQyAoVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBpKSkpCisrICAgICAgYnJlYWs7CiArCi0rICBvYnN0YWNrX2luaXQgKCZjdV9saXN0 KTsKLSsgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZjdV9saXN0KTsKKysgIC8qIEZJWE1F OiBjcGx1c19zdHVmZiBpcyBpZ25vcmVkIGhlcmUuICAqLworKyAgaWYgKGkgPCBUWVBFX05GSUVM RFMgKHR5cGUpCisrICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkgJiYgVFlQRV9E WU5BTUlDIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKKysgICAgICB8fCAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkp KQorKyAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKKyt9CiArCi0rICBmb3IgKGkgPSAwOyBp IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKyAvKiBGaW5kIHRoZSBy ZWFsIHR5cGUgb2YgVFlQRS4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVhbCB0eXBlLAor ICAgIGFmdGVyIHJlbW92aW5nIGFsbCBsYXllcnMgb2YgdHlwZWRlZnMsIGFuZCBjb21wbGV0aW5n IG9wYXF1ZSBvciBzdHViCisgICAgdHlwZXMuICBDb21wbGV0aW9uIGNoYW5nZXMgdGhlIFRZUEUg YXJndW1lbnQsIGJ1dCBzdHJpcHBpbmcgb2YKK0BAIC0xNTc1LDUyICsxNzM1LDM2IEBAIGNoZWNr X3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQorICAgICAgICAgfQorICAgICB9CisgCistICBp ZiAoVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkpCisrICAvKiBjb3B5X3R5cGVfcmVjdXJzaXZlIGF1 dG9tYXRpY2FsbHkgbWFrZXMgdGhlIHJlc3VsdGluZyB0eXBlIGNvbnRhaW5pbmcgb25seQorKyAg ICAgY29uc3RhbnQgdmFsdWVzIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rp b24uICAqLworKyAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCiArICAgIHsKLSsgICAgICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBf dW5pdHNbaV07Ci0rICAgICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiID0gY3UtPnYu cHN5bXRhYjsKLSsgICAgICBnZGJfYnl0ZSB2YWxbOF07Ci0rCi0rICAgICAgd3JpdGVfcHN5bWJv bHMgKHN5bXRhYiwKLSsJCSAgICAgIG9iamZpbGUtPmdsb2JhbF9wc3ltYm9scy5saXN0ICsgcHN5 bXRhYi0+Z2xvYmFsc19vZmZzZXQsCi0rCQkgICAgICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBp KTsKLSsgICAgICB3cml0ZV9wc3ltYm9scyAoc3ltdGFiLAotKwkJICAgICAgb2JqZmlsZS0+c3Rh dGljX3BzeW1ib2xzLmxpc3QgKyBwc3ltdGFiLT5zdGF0aWNzX29mZnNldCwKLSsJCSAgICAgIHBz eW10YWItPm5fc3RhdGljX3N5bXMsIGkpOwotKwotKyAgICAgIGFkZF9hZGRyZXNzX2VudHJ5IChv YmpmaWxlLCAmYWRkcl9vYnN0YWNrLCBwc3ltdGFiLCBpKTsKLSsKLSsgICAgICBzdG9yZV91bnNp Z25lZF9pbnRlZ2VyICh2YWwsIDgsIEJGRF9FTkRJQU5fTElUVExFLCBjdS0+b2Zmc2V0KTsKLSsg ICAgICBvYnN0YWNrX2dyb3cgKCZjdV9saXN0LCB2YWwsIDgpOwotKyAgICAgIHN0b3JlX3Vuc2ln bmVkX2ludGVnZXIgKHZhbCwgOCwgQkZEX0VORElBTl9MSVRUTEUsIGN1LT5sZW5ndGgpOwotKyAg ICAgIG9ic3RhY2tfZ3JvdyAoJmN1X2xpc3QsIHZhbCwgOCk7Ci0rICAgIH0KLSsKLSsgIG9ic3Rh Y2tfaW5pdCAoJmNvbnN0YW50X3Bvb2wpOwotKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAo JmNvbnN0YW50X3Bvb2wpOwotKyAgb2JzdGFja19pbml0ICgmc3ltdGFiX29ic3RhY2spOwotKyAg bWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJnN5bXRhYl9vYnN0YWNrKTsKLSsgIHdyaXRlX2hh c2hfdGFibGUgKHN5bXRhYiwgJnN5bXRhYl9vYnN0YWNrLCAmY29uc3RhbnRfcG9vbCk7Ci0rCi0r ICBvYnN0YWNrX2luaXQgKCZjb250ZW50cyk7Ci0rICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVl ICgmY29udGVudHMpOwotKyAgc2l6ZV9vZl9jb250ZW50cyA9IDUgKiBzaXplb2YgKG9mZnNldF90 eXBlKTsKLSsgIHRvdGFsX2xlbiA9IHNpemVfb2ZfY29udGVudHM7Ci0rCi0rICAvKiBUaGUgdmVy c2lvbiBudW1iZXIuICAqLwotKyAgdmFsID0gTUFZQkVfU1dBUCAoMSk7Ci0rICBvYnN0YWNrX2dy b3cgKCZjb250ZW50cywgJnZhbCwgc2l6ZW9mICh2YWwpKTsKLSsKLSsgIC8qIFRoZSBvZmZzZXQg b2YgdGhlIENVIGxpc3QgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLwotKyAgdmFsID0g TUFZQkVfU1dBUCAodG90YWxfbGVuKTsKLSsgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFs LCBzaXplb2YgKHZhbCkpOwotKyAgdG90YWxfbGVuICs9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZj dV9saXN0KTsKLSsKLSsgIC8qIFRoZSBvZmZzZXQgb2YgdGhlIGFkZHJlc3MgdGFibGUgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLwotKyAgdmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVu KTsKLSsgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOwotKyAg dG90YWxfbGVuICs9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZhZGRyX29ic3RhY2spOwotKwotKyAg LyogVGhlIG9mZnNldCBvZiB0aGUgc3ltYm9sIHRhYmxlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBm aWxlLiAgKi8KLSsgIHZhbCA9IE1BWUJFX1NXQVAgKHRvdGFsX2xlbik7Ci0rICBvYnN0YWNrX2dy b3cgKCZjb250ZW50cywgJnZhbCwgc2l6ZW9mICh2YWwpKTsKLSsgIHRvdGFsX2xlbiArPSBvYnN0 YWNrX29iamVjdF9zaXplICgmc3ltdGFiX29ic3RhY2spOwotKwotKyAgLyogVGhlIG9mZnNldCBv ZiB0aGUgY29uc3RhbnQgcG9vbCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi0rICB2 YWwgPSBNQVlCRV9TV0FQICh0b3RhbF9sZW4pOwotKyAgb2JzdGFja19ncm93ICgmY29udGVudHMs ICZ2YWwsIHNpemVvZiAodmFsKSk7Ci0rICB0b3RhbF9sZW4gKz0gb2JzdGFja19vYmplY3Rfc2l6 ZSAoJmNvbnN0YW50X3Bvb2wpOwotKwotKyAgZ2RiX2Fzc2VydCAob2JzdGFja19vYmplY3Rfc2l6 ZSAoJmNvbnRlbnRzKSA9PSBzaXplX29mX2NvbnRlbnRzKTsKLSsKLSsgIHdyaXRlX29ic3RhY2sg KG91dF9maWxlLCAmY29udGVudHMpOwotKyAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZjdV9s aXN0KTsKLSsgIHdyaXRlX29ic3RhY2sgKG91dF9maWxlLCAmYWRkcl9vYnN0YWNrKTsKLSsgIHdy aXRlX29ic3RhY2sgKG91dF9maWxlLCAmc3ltdGFiX29ic3RhY2spOwotKyAgd3JpdGVfb2JzdGFj ayAob3V0X2ZpbGUsICZjb25zdGFudF9wb29sKTsKLSsKLSsgIGZjbG9zZSAob3V0X2ZpbGUpOwot KwotKyAgLyogV2Ugd2FudCB0byBrZWVwIHRoZSBmaWxlLCBzbyB3ZSBzZXQgY2xlYW51cF9maWxl bmFtZSB0byBOVUxMCi0rICAgICBoZXJlLiAgU2VlIHVubGlua19pZl9zZXQuICAqLwotKyAgY2xl YW51cF9maWxlbmFtZSA9IE5VTEw7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQot KwotKy8qIFRoZSBtYXBwZWQgaW5kZXggZmlsZSBmb3JtYXQgaXMgZGVzaWduZWQgdG8gYmUgZGly ZWN0bHkgbW1hcCgpYWJsZQotKyAgIG9uIGFueSBhcmNoaXRlY3R1cmUuICBJbiBtb3N0IGNhc2Vz LCBhIGRhdHVtIGlzIHJlcHJlc2VudGVkIHVzaW5nIGEKLSsgICBsaXR0bGUtZW5kaWFuIDMyLWJp dCBpbnRlZ2VyIHZhbHVlLCBjYWxsZWQgYW4gb2Zmc2V0X3R5cGUuICBCaWcKLSsgICBlbmRpYW4g bWFjaGluZXMgbXVzdCBieXRlLXN3YXAgdGhlIHZhbHVlcyBiZWZvcmUgdXNpbmcgdGhlbS4KLSsg ICBFeGNlcHRpb25zIHRvIHRoaXMgcnVsZSBhcmUgbm90ZWQuICBUaGUgZGF0YSBpcyBsYWlkIG91 dCBzdWNoIHRoYXQKLSsgICBhbGlnbm1lbnQgaXMgYWx3YXlzIHJlc3BlY3RlZC4KLSsKLSsgICBB IG1hcHBlZCBpbmRleCBjb25zaXN0cyBvZiBzZXZlcmFsIHNlY3Rpb25zLgotKwotKyAgIDEuIFRo ZSBmaWxlIGhlYWRlci4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIG9mIG9mZnNldF90 eXBlCi0rICAgdW5sZXNzIG90aGVyd2lzZSBub3RlZDoKLSsgICBbMF0gVGhlIHZlcnNpb24gbnVt YmVyLiAgQ3VycmVudGx5IDEuCi0rICAgWzFdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9m IHRoZSBmaWxlLCBvZiB0aGUgQ1UgbGlzdC4KLSsgICBbMl0gVGhlIG9mZnNldCwgZnJvbSB0aGUg c3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBhZGRyZXNzIHNlY3Rpb24uCi0rICAgWzNdIFRoZSBv ZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgc3ltYm9sIHRhYmxlLgot KyAgIFs0XSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGNv bnN0YW50IHBvb2wuCi0rCi0rICAgMi4gVGhlIENVIGxpc3QuICBUaGlzIGlzIGEgc2VxdWVuY2Ug b2YgcGFpcnMgb2YgNjQtYml0Ci0rICAgbGl0dGxlLWVuZGlhbiB2YWx1ZXMuICBUaGUgZmlyc3Qg ZWxlbWVudCBpbiBlYWNoIHBhaXIgaXMgdGhlIG9mZnNldAotKyAgIG9mIGEgQ1UgaW4gdGhlIC5k ZWJ1Z19pbmZvIHNlY3Rpb24uICBUaGUgc2Vjb25kIGVsZW1lbnQgaW4gZWFjaAotKyAgIHBhaXIg aXMgdGhlIGxlbmd0aCBvZiB0aGF0IENVLiAgUmVmZXJlbmNlcyB0byBhIENVIGVsc2V3aGVyZSBp biB0aGUKLSsgICBtYXAgYXJlIGRvbmUgdXNpbmcgYSBDVSBpbmRleCwgd2hpY2ggaXMganVzdCB0 aGUgMC1iYXNlZCBpbmRleCBpbnRvCi0rICAgdGhpcyB0YWJsZS4KLSsKLSsgICAzLiBUaGUgYWRk cmVzcyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mgc2VjdGlvbiBjb25zaXN0cyBvZiBhIHNlcXVlbmNl Ci0rICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAgRWFjaCBhZGRyZXNzIGVudHJ5IGhhcyB0aHJlZSBl bGVtZW50cy4KLSsgICBbMF0gVGhlIGxvdyBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0 bGUtZW5kaWFuIHZhbHVlLgotKyAgIFsxXSBUaGUgaGlnaCBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0 LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgotKyAgIFsyXSBUaGUgQ1UgaW5kZXguICBUaGlzIGlz IGFuIG9mZnNldF90eXBlIHZhbHVlLgotKwotKyAgIDQuIFRoZSBzeW1ib2wgdGFibGUuICBUaGlz IGlzIGEgaGFzaCB0YWJsZS4gIFRoZSBzaXplIG9mIHRoZSBoYXNoCi0rICAgdGFibGUgaXMgYWx3 YXlzIGEgcG93ZXIgb2YgMi4gIFRoZSBpbml0aWFsIGhhc2ggYW5kIHRoZSBzdGVwIGFyZQotKyAg IGN1cnJlbnRseSBkZWZpbmVkIGJ5IHRoZSBgZmluZF9zbG90JyBmdW5jdGlvbi4KLSsKLSsgICBF YWNoIHNsb3QgaW4gdGhlIGhhc2ggdGFibGUgY29uc2lzdHMgb2YgYSBwYWlyIG9mIG9mZnNldF90 eXBlCi0rICAgdmFsdWVzLiAgVGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBvZmZzZXQgb2YgdGhlIHN5 bWJvbCdzIG5hbWUgaW4gdGhlCi0rICAgY29uc3RhbnQgcG9vbC4gIFRoZSBzZWNvbmQgdmFsdWUg aXMgdGhlIG9mZnNldCBvZiB0aGUgQ1UgdmVjdG9yIGluCi0rICAgdGhlIGNvbnN0YW50IHBvb2wu Ci0rCi0rICAgSWYgYm90aCB2YWx1ZXMgYXJlIDAsIHRoZW4gdGhpcyBzbG90IGluIHRoZSBoYXNo IHRhYmxlIGlzIGVtcHR5LgotKyAgIFRoaXMgaXMgb2sgYmVjYXVzZSB3aGlsZSAwIGlzIGEgdmFs aWQgY29uc3RhbnQgcG9vbCBpbmRleCwgaXQKLSsgICBjYW5ub3QgYmUgYSB2YWxpZCBpbmRleCBm b3IgYm90aCBhIHN0cmluZyBhbmQgYSBDVSB2ZWN0b3IuCi0rCi0rICAgQSBzdHJpbmcgaW4gdGhl IGNvbnN0YW50IHBvb2wgaXMgc3RvcmVkIGFzIGEgXDAtdGVybWluYXRlZCBzdHJpbmcsCi0rICAg YXMgeW91J2QgZXhwZWN0LgotKwotKyAgIEEgQ1UgdmVjdG9yIGluIHRoZSBjb25zdGFudCBwb29s IGlzIGEgc2VxdWVuY2Ugb2Ygb2Zmc2V0X3R5cGUKLSsgICB2YWx1ZXMuICBUaGUgZmlyc3QgdmFs dWUgaXMgdGhlIG51bWJlciBvZiBDVSBpbmRpY2VzIGluIHRoZSB2ZWN0b3IuCi0rICAgRWFjaCBz dWJzZXF1ZW50IHZhbHVlIGlzIHRoZSBpbmRleCBvZiBhIENVIGluIHRoZSBDVSBsaXN0LiAgVGhp cwotKyAgIGVsZW1lbnQgaW4gdGhlIGhhc2ggdGFibGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGlj aCBDVXMgZGVmaW5lIHRoZQotKyAgIHN5bWJvbC4KLSsKLSsgICA1LiBUaGUgY29uc3RhbnQgcG9v bC4gIFRoaXMgaXMgc2ltcGx5IGEgYnVuY2ggb2YgYnl0ZXMuICBJdCBpcwotKyAgIG9yZ2FuaXpl ZCBzbyB0aGF0IGFsaWdubWVudCBpcyBjb3JyZWN0OiBDVSB2ZWN0b3JzIGFyZSBzdG9yZWQKLSsg ICBmaXJzdCwgZm9sbG93ZWQgYnkgc3RyaW5ncy4gICovCi0rc3RhdGljIHZvaWQKLStzYXZlX2dk Yl9pbmRleF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZTsKLSsKLSsgIGlmICghYXJnIHx8ICEqYXJnKQotKyAgICBlcnJvciAo XygidXNhZ2U6IHNhdmUgZ2RiLWluZGV4IERJUkVDVE9SWSIpKTsKLSsKLSsgIEFMTF9PQkpGSUxF UyAob2JqZmlsZSkKLSsgIHsKLSsgICAgc3RydWN0IHN0YXQgc3Q7Ci0rCi0rICAgIC8qIElmIHRo ZSBvYmpmaWxlIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYW4gYWN0dWFsIGZpbGUsIHNraXAgaXQu ICAqLwotKyAgICBpZiAoc3RhdCAob2JqZmlsZS0+bmFtZSwgJnN0KSA8IDApCi0rICAgICAgY29u dGludWU7Ci0rCi0rICAgIGR3YXJmMl9wZXJfb2JqZmlsZSA9IG9iamZpbGVfZGF0YSAob2JqZmls ZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXkpOwotKyAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxl KQotKyAgICAgIHsKLSsJdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OworKyAg ICAgIGh0YWJfdCBjb3BpZWRfdHlwZXM7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGVfb2xkID0g dHlwZTsKICsKLSsJVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0VSUk9SKQotKwkgIHsK LSsJICAgIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChvYmpmaWxlLCBhcmcpOwotKwkgIH0KLSsJ aWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKwkgIGV4Y2VwdGlvbl9mcHJpbnRmIChnZGJfc3RkZXJy LCBleGNlcHQsCi0rCQkJICAgICBfKCJFcnJvciB3aGlsZSB3cml0aW5nIGluZGV4IGZvciBgJXMn OiAiKSwKLSsJCQkgICAgIG9iamZpbGUtPm5hbWUpOwotKyAgICAgIH0KLSsgIH0KLSt9CisrICAg ICAgY29waWVkX3R5cGVzID0gY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChOVUxMKTsKKysgICAg ICB0eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAodHlwZSwgY29waWVkX3R5cGVzKTsKKysgICAg ICBodGFiX2RlbGV0ZSAoY29waWVkX3R5cGVzKTsKICsKLSsMCisrICAgICAgZ2RiX2Fzc2VydCAo VFlQRV9EWU5BTUlDICh0eXBlKSA9PSAwKTsKKysgICAgfQogKwotIGludCBkd2FyZjJfYWx3YXlz X2Rpc2Fzc2VtYmxlOworKyAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpIHx8IFRZUEVfRFlO QU1JQyAodHlwZSkpCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKKyAg ICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSk7CiAgCi0gc3RhdGljIHZvaWQKLUBAIC0xMjYwOSw2ICsxNDQ1NSw4IEBA IHZvaWQgX2luaXRpYWxpemVfZHdhcmYyX3JlYWQgKHZvaWQpOwotIHZvaWQKLSBfaW5pdGlhbGl6 ZV9kd2FyZjJfcmVhZCAodm9pZCkKLSB7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYzsK LSsKLSAgIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5Ci0gICAgID0gcmVnaXN0ZXJfb2JqZmlsZV9k YXRhX3dpdGhfY2xlYW51cCAoTlVMTCwgZHdhcmYyX3Blcl9vYmpmaWxlX2ZyZWUpOworKyAgICAg IGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQorKwlUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSA9IHRh cmdldF90eXBlOworICAgICAgIGlmIChUWVBFX1NUVUIgKHRhcmdldF90eXBlKSB8fCBUWVBFX1RB UkdFVF9TVFVCICh0YXJnZXRfdHlwZSkpCisgCXsKKyAJICAvKiBFbXB0eS4gICovCisgCX0KKyAg ICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorLQkgICAg ICAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxCistCSAgICAgICAmJiAoVFlQRV9DT0RFIChy YW5nZV90eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKSkKKy0JCSAgID09IFRZUEVfQ09ERV9S QU5HRSkpCisrCSAgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJJTkcp CisgCXsKKyAJICAvKiBOb3cgcmVjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHR5cGUs IGJhc2VkIG9uIGl0cworLQkgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0 eXBlJ3MgbGVuZ3RoLgorLQkgICAgIFdhdGNoIG91dCBmb3IgQWRhIG51bGwgQWRhIGFycmF5cyB3 aGVyZSB0aGUgaGlnaCBib3VuZAorLQkgICAgIGlzIHNtYWxsZXIgdGhhbiB0aGUgbG93IGJvdW5k LiAqLworLQkgIGNvbnN0IExPTkdFU1QgbG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJhbmdl X3R5cGUpOworLQkgIGNvbnN0IExPTkdFU1QgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAo cmFuZ2VfdHlwZSk7CistCSAgVUxPTkdFU1QgbGVuOworLQorLQkgIGlmIChoaWdoX2JvdW5kIDwg bG93X2JvdW5kKQorLQkgICAgbGVuID0gMDsKKy0JICBlbHNlCistCSAgICB7CistCSAgICAgIC8q IEZvciBub3csIHdlIGNvbnNlcnZhdGl2ZWx5IHRha2UgdGhlIGFycmF5IGxlbmd0aCB0byBiZSAw CistCQkgaWYgaXRzIGxlbmd0aCBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNz dW1lcworLQkJIHRoYXQgZm9yIHggPCAwLCAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9N QVggKyAxLAorLQkJIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkIGJ5IEMsIGJ1 dCBpcyB1c3VhbGx5IHRydWUKKy0JCSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2Vy ZSB1bnNpZ25lZCB3aXRoIGl0cworLQkJIGhpZ2gtb3JkZXIgYml0IG9uKS4gSXQgdXNlcyB0aGUg ZmFjdCB0aGF0CistCQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJlcHJlc2VudGFi bGUgaW4KKy0JCSBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92 ZXJmbG93cywKKy0JCSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRl c3RzIGlmIHdlIAorLQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24gb2Yg VFlQRV9MRU5HVEgKKy0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gKi8KKy0JICAg ICAgVUxPTkdFU1QgdWxvdyA9IGxvd19ib3VuZCwgdWhpZ2ggPSBoaWdoX2JvdW5kOworLQkgICAg ICBVTE9OR0VTVCB0bGVuID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKKy0KKy0JICAgICAg bGVuID0gdGxlbiAqICh1aGlnaCAtIHVsb3cgKyAxKTsKKy0JICAgICAgaWYgKHRsZW4gPT0gMCB8 fCAobGVuIC8gdGxlbiAtIDEgKyB1bG93KSAhPSB1aGlnaCAKKy0JCSAgfHwgbGVuID4gVUlOVF9N QVgpCistCQlsZW4gPSAwOworLQkgICAgfQorLQkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IGxlbjsK KysJICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4g ICovCisrCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gdHlwZV9sZW5ndGhfZ2V0ICh0eXBlLCB0YXJn ZXRfdHlwZSwgMCk7CisgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOworIAl9CisgICAg ICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCitAQCAtMTYy OCw2ICsxNzcyLDcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCisgCSAgVFlQ RV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKKyAJICBUWVBFX1RB UkdFVF9TVFVCICh0eXBlKSA9IDA7CisgCX0KKysgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0g MDsKKyAgICAgfQogIAotQEAgLTEyNjU2LDQgKzE0NTA0LDkgQEAgVGhlIHZhbHVlIGlzIHRoZSBt YXhpbXVtIGRlcHRoIHRvIHByaW50LiIpLAotIAkJCSAgICBOVUxMLAotIAkJCSAgICBOVUxMLAot IAkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0rCi0rICBjID0gYWRkX2Nt ZCAoImdkYi1pbmRleCIsIGNsYXNzX2ZpbGVzLCBzYXZlX2dkYl9pbmRleF9jb21tYW5kLAotKwkg ICAgICAgXygiU2F2ZSBhIC5nZGItaW5kZXggZmlsZSIpLAotKwkgICAgICAgJnNhdmVfY21kbGlz dCk7Ci0rICBzZXRfY21kX2NvbXBsZXRlciAoYywgZmlsZW5hbWVfY29tcGxldGVyKTsKLSB9Ci1k aWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKLWluZGV4IDhjMDA5Mzgu LmEyNTBjNTggMTAwNjQ0Ci0tLS0gYS9nZGIvZWxmcmVhZC5jCi0rKysgYi9nZGIvZWxmcmVhZC5j Ci1AQCAtMzcsOSArMzcsMTMgQEAKLSAjaW5jbHVkZSAiY29tcGxhaW50cy5oIgotICNpbmNsdWRl ICJkZW1hbmdsZS5oIgotICNpbmNsdWRlICJwc3ltcHJpdi5oIgotKyNpbmNsdWRlICJnZGJ0eXBl cy5oIgorICAgdHlwZSA9IG1ha2VfcXVhbGlmaWVkX3R5cGUgKHR5cGUsIGluc3RhbmNlX2ZsYWdz LCBOVUxMKTsKK0BAIC0xOTAyLDYgKzIwNDcsOCBAQCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2Rl IGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKKyAgICAgVFlQRV9TVFVCX1NVUFBPUlRFRCAo dHlwZSkgPSAxOworICAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFKQorICAg ICBUWVBFX0ZJWEVEX0lOU1RBTkNFICh0eXBlKSA9IDE7CisrICBpZiAoZmxhZ3MgJiBUWVBFX0ZM QUdfR05VX0lGVU5DKQorKyAgICBUWVBFX0dOVV9JRlVOQyAodHlwZSkgPSAxOwogIAotIGV4dGVy biB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOworICAgaWYgKG5hbWUpCisgICAgIFRZ UEVfTkFNRSAodHlwZSkgPSBvYnNhdmVzdHJpbmcgKG5hbWUsIHN0cmxlbiAobmFtZSksCitAQCAt MzE5NCwzMyArMzM0MSw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBj b25zdCB2b2lkICppdGVtX3JocykKKyB9CiAgCi0rLyogRm9yd2FyZCBkZWNsYXJhdGlvbi4gICov Ci0rc3RhdGljIHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleDsKLSsKLSAvKiBU aGUgc3RydWN0IGVsZmluZm8gaXMgYXZhaWxhYmxlIG9ubHkgZHVyaW5nIEVMRiBzeW1ib2wgdGFi bGUgYW5kCi0gICAgcHN5bXRhYiByZWFkaW5nLiAgSXQgaXMgZGVzdHJveWVkIGF0IHRoZSBjb21w bGV0aW9uIG9mIHBzeW10YWItcmVhZGluZy4KLSAgICBJdCdzIGxvY2FsIHRvIGVsZl9zeW1maWxl X3JlYWQuICAqLwotQEAgLTE4MCw3ICsxODQsOCBAQCByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNv bnN0IGNoYXIgKm5hbWUsIGludCBuYW1lX2xlbiwgaW50IGNvcHlfbmFtZSwKKyAvKiBBbGxvY2F0 ZSB0aGUgaGFzaCB0YWJsZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNpdmUgdG8gd2FsaworLSAg IHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gIFdlIHVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVj YXVzZQorLSAgIE9CSkZJTEUgaXMgYWJvdXQgdG8gYmUgZGVsZXRlZC4gICovCisrICAgdHlwZXMg d2l0aG91dCBkdXBsaWNhdGVzLiAgICovCisgCisgaHRhYl90CisgY3JlYXRlX2NvcGllZF90eXBl c19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworLSAgcmV0dXJuIGh0YWJfY3Jl YXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAorLQkJCSAgICAg ICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorLQkJCSAgICAgICBoYXNodGFiX29i c3RhY2tfYWxsb2NhdGUsCistCQkJICAgICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7Cisr ICBpZiAob2JqZmlsZSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgLyogTlVMTCBPQkpGSUxFIGlz IGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWluZWQgaW4KKysJIE9CSkZJTEVf TUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVFX0hJU1RPUllfQ0hBSU4uICBU YWJsZQorKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVz ZSB4ZnJlZS4gICovCisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlICgxLCB0eXBlX3BhaXJfaGFz aCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAg IC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0IHRvIGJl IGRlbGV0ZWQuICBUYWJsZQorKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1h bGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9j X2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAorKwkJCQkgICB4ZnJlZSwgJm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRl LAorKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAgICB9CisgfQogIAotLSAg aWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0KQotKyAg aWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0Ci0rICAg ICAgfHwgbXNfdHlwZSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0gICAgIGFkZHJlc3MgPSBnZGJh cmNoX3NtYXNoX3RleHRfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcmVzcyk7CistLyogUmVjdXJzaXZl bHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLCBpZiBpdCBpcyBhc3NvY2lhdGVkIHdpdGgKKy0gICBP QkpGSUxFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nIG1hbGxvYywgYSBzYXZl ZCB0eXBlIGlmCistICAgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVE X1RZUEVTKSwgb3IgVFlQRSBpZiBpdCBpcworLSAgIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklM RS4gICovCisrLyogQSBoZWxwZXIgZm9yIGNvcHlfdHlwZV9yZWN1cnNpdmUuICBUaGlzIGRvZXMg YWxsIHRoZSB3b3JrLiAgT0JKRklMRSBpcyB1c2VkCisrICAgb25seSBmb3IgYW4gYXNzZXJ0aW9u IGNoZWNraW5nLiAgKi8KICAKLSAgIHJldHVybiBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9m dWxsIChuYW1lLCBuYW1lX2xlbiwgY29weV9uYW1lLCBhZGRyZXNzLAotQEAgLTM4OCw3ICszOTMs MTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHR5cGUs Ci0gCSAgICB7Ci0gCSAgICAgIGlmIChzeW0tPmZsYWdzICYgKEJTRl9HTE9CQUwgfCBCU0ZfV0VB SykpCi0gCQl7Ci0tCQkgIG1zX3R5cGUgPSBtc3RfdGV4dDsKLSsJCSAgaWYgKHN5bS0+ZmxhZ3Mg JiBCU0ZfR05VX0lORElSRUNUX0ZVTkNUSU9OKQotKwkJICAgIG1zX3R5cGUgPSBtc3RfdGV4dF9n bnVfaWZ1bmM7Ci0rCQkgIGVsc2UKLSsJCSAgICBtc190eXBlID0gbXN0X3RleHQ7Ci0gCQl9Ci0g CSAgICAgIGVsc2UgaWYgKChzeW0tPm5hbWVbMF0gPT0gJy4nICYmIHN5bS0+bmFtZVsxXSA9PSAn TCcpCi0gCQkgICAgICAgfHwgKChzeW0tPmZsYWdzICYgQlNGX0xPQ0FMKQotQEAgLTU2OSw2ICs1 NzcsMjUwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0 eXBlLAotICAgICB9Ci0gfQorLXN0cnVjdCB0eXBlICoKKy1jb3B5X3R5cGVfcmVjdXJzaXZlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgCistCQkgICAgIHN0cnVjdCB0eXBlICp0eXBlLAorLQkJ ICAgICBodGFiX3QgY29waWVkX3R5cGVzKQorK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCisrY29weV90 eXBlX3JlY3Vyc2l2ZV8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgCisrCQkgICAgICAgc3Ry dWN0IHR5cGUgKnR5cGUsCisrCQkgICAgICAgaHRhYl90IGNvcGllZF90eXBlcykKKyB7CisgICBz dHJ1Y3QgdHlwZV9wYWlyICpzdG9yZWQsIHBhaXI7CisgICB2b2lkICoqc2xvdDsKKyAgIHN0cnVj dCB0eXBlICpuZXdfdHlwZTsKICAKLSsvKiBGSVhNRTogRGVsYXkgaXQgdGhyb3VnaCBlbGZfc3lt X2Zucy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStlbGZfcmVsX3BsdF9yZWFkIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgYXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUpCi0rewotKyAgYmZkICpv YmZkID0gb2JqZmlsZS0+b2JmZDsKLSsgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpi ZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAob2JmZCk7Ci0rICBhc2VjdGlvbiAqcGx0LCAqcmVs cGx0LCAqZ290X3BsdDsKLSsgIHVuc2lnbmVkIHU7Ci0rICBpbnQgcGx0X2VsZl9pZHg7Ci0rICBi ZmRfc2l6ZV90eXBlIHJlbG9jX2NvdW50LCByZWxvYzsKLSsgIGNoYXIgKnN0cmluZ19idWZmZXIg PSBOVUxMOwotKyAgc2l6ZV90IHN0cmluZ19idWZmZXJfc2l6ZSA9IDA7Ci0rICBzdHJ1Y3QgY2xl YW51cCAqYmFja190bzsKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+Z2Ri YXJjaDsKLSsgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCkt PmJ1aWx0aW5fZGF0YV9wdHI7Ci0rICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRy X3R5cGUpOwotKwotKyAgaWYgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xp bmspCi0rICAgIHJldHVybjsKLSsKLSsgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChv YmZkLCAiLnBsdCIpOwotKyAgaWYgKHBsdCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rICBwbHRf ZWxmX2lkeCA9IGVsZl9zZWN0aW9uX2RhdGEgKHBsdCktPnRoaXNfaWR4OwotKwotKyAgZ290X3Bs dCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLmdvdC5wbHQiKTsKLSsgIGlmIChn b3RfcGx0ID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIC8qIFRoaXMgc2VhcmNoIGFsZ29y aXRobSBpcyBmcm9tIF9iZmRfZWxmX2Nhbm9uaWNhbGl6ZV9keW5hbWljX3JlbG9jLiAgKi8KLSsg IGZvciAocmVscGx0ID0gb2JmZC0+c2VjdGlvbnM7IHJlbHBsdCAhPSBOVUxMOyByZWxwbHQgPSBy ZWxwbHQtPm5leHQpCi0rICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hk ci5zaF9pbmZvID09IHBsdF9lbGZfaWR4Ci0rCSYmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQp LT50aGlzX2hkci5zaF90eXBlID09IFNIVF9SRUwKLSsJICAgIHx8IGVsZl9zZWN0aW9uX2RhdGEg KHJlbHBsdCktPnRoaXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTEEpKQotKyAgICAgIGJyZWFrOwot KyAgaWYgKHJlbHBsdCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoISBiZWQtPnMt PnNsdXJwX3JlbG9jX3RhYmxlIChvYmZkLCByZWxwbHQsIGR5bl9zeW1ib2xfdGFibGUsIFRSVUUp KQotKyAgICByZXR1cm47CistICBpZiAoISBUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpKQorKyAg aWYgKCEgVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSAmJiAhVFlQRV9EWU5BTUlDICh0eXBlKSkK KyAgICAgcmV0dXJuIHR5cGU7CisgCisgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJlIHBvaW50 aW5nIHRvIGFueSB0eXBlcyBpbiBvdGhlciBvYmpmaWxlczsKK0BAIC0zMjM1LDggKzMzOTEsMTAg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgICBuZXdf dHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOworIAorICAgLyog V2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBp biBjYXNlCistICAgICB3ZSBlbmNvdW50ZXIgdGhpcyB0eXBlIGFnYWluIGR1cmluZyBhIHJlY3Vy c2l2ZSBjYWxsIGJlbG93LiAgKi8KKy0gIHN0b3JlZCA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxl LT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoc3RydWN0IHR5cGVfcGFpcikpOworKyAgICAgd2Ug ZW5jb3VudGVyIHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4g IE1lbW9yeSBjb3VsZAorKyAgICAgYmUgYWxsb2NhdGVkIGZyb20gT0JKRklMRSBpbiB0aGUgY2Fz ZSB3ZSB3aWxsIGJlIHJlbW92aW5nIE9CSkZJTEUsIHRoaXMKKysgICAgIG9wdGltaXphdGlvbiBp cyBtaXNzZWQgYW5kIHhmcmVlIGlzIGNhbGxlZCBmb3IgaXQgZnJvbSBDT1BJRURfVFlQRVMuICAq LworKyAgc3RvcmVkID0geG1hbGxvYyAoc2l6ZW9mICgqc3RvcmVkKSk7CisgICBzdG9yZWQtPm9s ZCA9IHR5cGU7CisgICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOworICAgKnNsb3QgPSBzdG9yZWQ7 CitAQCAtMzI0Nyw2ICszNDA1LDE5IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorICAgVFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOworICAg VFlQRV9PV05FUiAobmV3X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKKyAK KysgIC8qIFRZUEVfTUFJTl9UWVBFIG1lbW9yeSBjb3B5IGFib3ZlIHJld3JvdGUgdGhlIFRZUEVf RElTQ0FSREFCTEUgZmxhZyBzbyB3ZQorKyAgICAgbmVlZCB0byBpbml0aWFsaXplIGl0IGFnYWlu LiAgQW5kIGV2ZW4gaWYgVFlQRSB3YXMgYWxyZWFkeSBkaXNjYXJkYWJsZQorKyAgICAgTkVXX1RZ UEUgc28gZmFyIGlzIG5vdCByZWdpc3RlcmVkIGluIFRZUEVfRElTQ0FSREFCTEVfVEFCTEUuICAq LworKyAgVFlQRV9ESVNDQVJEQUJMRSAobmV3X3R5cGUpID0gMDsKKysgIHNldF90eXBlX2FzX2Rp c2NhcmRhYmxlIChuZXdfdHlwZSk7CiArCi0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVl X2N1cnJlbnRfY29udGVudHMsICZzdHJpbmdfYnVmZmVyKTsKKysgIC8qIFByZS1jbGVhciB0aGUg ZmllbGRzIHByb2Nlc3NlZCBieSBkZWxldGVfbWFpbl90eXBlLiAgSWYgRFdBUkYgYmxvY2sKKysg ICAgIGV2YWx1YXRpb25zIGJlbG93IGNhbGwgZXJyb3Igd2Ugd291bGQgbGVhdmUgYW4gdW5mcmVl YWJsZSBUWVBFLiAgKi8KKysgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IE5VTEw7Cisr ICBUWVBFX1ZQVFJfQkFTRVRZUEUgKG5ld190eXBlKSA9IE5VTEw7CisrICBUWVBFX05GSUVMRFMg KG5ld190eXBlKSA9IDA7CisrICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gTlVMTDsKICsKLSsg IHJlbG9jX2NvdW50ID0gcmVscGx0LT5zaXplIC8gZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+ dGhpc19oZHIuc2hfZW50c2l6ZTsKLSsgIGZvciAocmVsb2MgPSAwOyByZWxvYyA8IHJlbG9jX2Nv dW50OyByZWxvYysrKQorICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCisgICAgIFRZUEVfTkFNRSAo bmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CisgICBpZiAoVFlQRV9UQUdf TkFNRSAodHlwZSkpCitAQCAtMzI1NSwxMiArMzQyNiw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190 eXBlKSA9IFRZUEVfSU5TVEFOQ0VfRkxBR1MgKHR5cGUpOworICAgVFlQRV9MRU5HVEggKG5ld190 eXBlKSA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKyAKKysgIGlmIChUWVBFX0FMTE9DQVRFRCAobmV3 X3R5cGUpKQogKyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqbmFtZSwgKm5hbWVfZ290X3BsdDsK LSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07Ci0rICAgICAgQ09SRV9BRERSIGFk ZHJlc3M7Ci0rICAgICAgY29uc3QgY2hhciAqc3VmZml4ID0gIkBnb3QucGx0IjsKLSsgICAgICBz aXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbiAoc3VmZml4KTsKLSsgICAgICBzaXplX3QgbmFtZV9s ZW47CisrICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpKTsK ICsKLSsgICAgICBuYW1lID0gYmZkX2FzeW1ib2xfbmFtZSAoKnJlbHBsdC0+cmVsb2NhdGlvblty ZWxvY10uc3ltX3B0cl9wdHIpOwotKyAgICAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKTsKLSsg ICAgICBhZGRyZXNzID0gcmVscGx0LT5yZWxvY2F0aW9uW3JlbG9jXS5hZGRyZXNzOworKyAgICAg IGlmICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUp KSkKKysgICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gMTsKKysgICAgICBU WVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgfQogKwotKyAgICAgIC8qIERv ZXMgdGhlIHBvaW50ZXIgcmVzaWRlIGluIHRoZSAuZ290LnBsdCBzZWN0aW9uPyAgKi8KLSsgICAg ICBpZiAoIShiZmRfZ2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3RfcGx0KSA8PSBhZGRyZXNzCi0r ICAgICAgICAgICAgJiYgYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlvbl92bWEgKG9iZmQsIGdvdF9w bHQpCi0rCQkJICsgYmZkX2dldF9zZWN0aW9uX3NpemUgKGdvdF9wbHQpKSkKLSsJY29udGludWU7 CisrICBpZiAoVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCisrICAgIHsKKysgICAgICBnZGJf YXNzZXJ0ICghVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpKTsKICsKLSsgICAgICAvKiBX ZSBjYW5ub3QgY2hlY2sgaWYgTkFNRSBpcyBhIHJlZmVyZW5jZSB0byBtc3RfdGV4dF9nbnVfaWZ1 bmMgYXMgaW4KLSsJIE9CSkZJTEUgdGhlIHN5bWJvbCBpcyB1bmRlZmluZWQgYW5kIHRoZSBvYmpm aWxlIGhhdmluZyBOQU1FIGRlZmluZWQKLSsJIG1heSBub3QgeWV0IGhhdmUgYmVlbiBsb2FkZWQu ICAqLworKyAgICAgIGlmICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FTU09DSUFU RUQgKG5ld190eXBlKSkpCisrICAgICAgICBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkg PSAxOworKyAgICAgIFRZUEVfQVNTT0NJQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgfQog KwotKyAgICAgIGlmIChzdHJpbmdfYnVmZmVyX3NpemUgPCBuYW1lX2xlbiArIHN1ZmZpeF9sZW4p CisrICBpZiAoIVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSIChuZXdfdHlwZSkKKysgICAgICAm JiBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSkKKysgICAgeworKyAg ICAgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKQorKyAgICAgICAgICB8fCBUWVBF X05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCisrCVRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9C TE9DSyAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgICBlbHNlCiArCXsKLSsJICBzdHJpbmdfYnVm ZmVyX3NpemUgPSAyICogKG5hbWVfbGVuICsgc3VmZml4X2xlbik7Ci0rCSAgc3RyaW5nX2J1ZmZl ciA9IHhyZWFsbG9jIChzdHJpbmdfYnVmZmVyLCBzdHJpbmdfYnVmZmVyX3NpemUpOworKwkgIFRZ UEVfREFUQV9MT0NBVElPTl9JU19BRERSIChuZXdfdHlwZSkgPSAxOworKwkgIFRZUEVfREFUQV9M T0NBVElPTl9BRERSIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysJCQkJ ICAgIChUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSk7CiArCX0KLSsg ICAgICBtZW1jcHkgKHN0cmluZ19idWZmZXIsIG5hbWUsIG5hbWVfbGVuKTsKLSsgICAgICBtZW1j cHkgKCZzdHJpbmdfYnVmZmVyW25hbWVfbGVuXSwgc3VmZml4LCBzdWZmaXhfbGVuKTsKLSsKLSsg ICAgICBtc3ltID0gcmVjb3JkX21pbmltYWxfc3ltYm9sIChzdHJpbmdfYnVmZmVyLCBuYW1lX2xl biArIHN1ZmZpeF9sZW4sIDEsCi0rCQkJCSAgICBhZGRyZXNzLCBtc3Rfc2xvdF9nb3RfcGx0LCBn b3RfcGx0LAotKwkJCQkgICAgb2JqZmlsZSk7Ci0rICAgICAgaWYgKG1zeW0pCi0rCU1TWU1CT0xf U0laRSAobXN5bSkgPSBwdHJfc2l6ZTsKICsgICAgfQogKwotKyAgZG9fY2xlYW51cHMgKGJhY2tf dG8pOwotK30KLSsKLSsvKiBGdW5jdGlvbiBkb2VzIG5vdCBjaGVjayBmb3IgcG9zc2libHkgY3Jl YXRlZCBkdXBsaWNpdGllcyBpbiB0aGUgY2FjaGUuCi0rICAgQ2hlY2sgaXQgYnkgcmVzb2x2ZV9n bnVfaWZ1bmNfYnlfY2FjaGUgZmlyc3QuICAqLworICAgLyogQ29weSB0aGUgZmllbGRzLiAgKi8K KyAgIGlmIChUWVBFX05GSUVMRFMgKHR5cGUpKQorICAgICB7CisgICAgICAgaW50IGksIG5maWVs ZHM7CisgCisrICAgICAgLyogVFlQRV9DT0RFX1JBTkdFIHVzZXMgVFlQRV9SQU5HRV9EQVRBIG9m IHRoZSB1bmlvbiB3aXRoIFRZUEVfRklFTERTLiAgKi8KKysgICAgICBnZGJfYXNzZXJ0IChUWVBF X0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9SQU5HRSk7CiArCi0rc3RhdGljIHN0cnVjdCBtaW5p bWFsX3N5bWJvbCAqCi0rZ251X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQgKGNvbnN0IGNo YXIgKmZ1bmN0aW9uX25hbWUsCi0rCQkJCSAgQ09SRV9BRERSIGZ1bmN0aW9uX2FkZHJlc3MpCi0r ewotKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltLCAqbXN5bV9uZXc7Ci0rICBhc2VjdGlv biAqc2VjdDsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotKyAgY2hhciAqZnVuY3Rpb25f bmFtZV9nbnVfaWZ1bmNfdGd0OworICAgICAgIG5maWVsZHMgPSBUWVBFX05GSUVMRFMgKHR5cGUp OworKyAgICAgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0gbmZpZWxkczsKKyAgICAgICBUWVBF X0ZJRUxEUyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKKyAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQorIAl7CitAQCAtMzI2OSw4ICszNDc2 LDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCSAg VFlQRV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5 cGUsIGkpOworIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQorIAkgICAgVFlQRV9G SUVMRF9UWVBFIChuZXdfdHlwZSwgaSkKKy0JICAgICAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChv YmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAorLQkJCQkgICAgIGNvcGllZF90eXBl cyk7CisrCSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLCBUWVBFX0ZJRUxE X1RZUEUgKHR5cGUsIGkpLAorKwkJCQkgICAgICAgY29waWVkX3R5cGVzKTsKKyAJICBpZiAoVFlQ RV9GSUVMRF9OQU1FICh0eXBlLCBpKSkKKyAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUs IGkpID0gCisgCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOworQEAg LTMyOTcsMjQgKzM1MDQsMTY2IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAorIAl9CisgICAgIH0KKyAKKysgIC8qIEJvdGggRklFTERfTE9DX0tJTkRfRFdB UkZfQkxPQ0sgYW5kIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCB3ZXJlCisrICAgICBw b3NzaWJseSBjb252ZXJ0ZWQuICAqLworKyAgVFlQRV9EWU5BTUlDIChuZXdfdHlwZSkgPSAwOwog KwotKyAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZnVuY3Rpb25fYWRkcmVz cyk7Ci0rICBpZiAobXN5bSA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIGlmIChTWU1C T0xfVkFMVUVfQUREUkVTUyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKLSsgICAgcmV0dXJu IE5VTEw7Ci0rICAvKiBtaW5pbWFsIHN5bWJvbHMgaGF2ZSBhbHdheXMgU1lNQk9MX09CSl9TRUNU SU9OIG5vbi1OVUxMLiAgKi8KLSsgIHNlY3QgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT50 aGVfYmZkX3NlY3Rpb247Ci0rICBvYmpmaWxlID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3ltKS0+ b2JqZmlsZTsKKyAgIC8qIEZvciByYW5nZSB0eXBlcywgY29weSB0aGUgYm91bmRzIGluZm9ybWF0 aW9uLiAqLworLSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQorKyAg aWYgKFRZUEVfQ09ERSAobmV3X3R5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKKyAgICAgeworICAg ICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg cmFuZ2VfYm91bmRzKSk7CisgICAgICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0gKlRZ UEVfUkFOR0VfREFUQSAodHlwZSk7CiArCi0rICAvKiBJZiAucGx0IGp1bXBzIGJhY2sgdG8gLnBs dCB0aGUgc3ltYm9sIGlzIHN0aWxsIGRlZmVycmVkIGZvciBsYXRlcgotKyAgICAgcmVzb2x1dGlv biBhbmQgaXQgaGFzIG5vIHVzZSBmb3IgR0RCLiAgQmVzaWRlcyAiLnRleHQiIHRoaXMgc3ltYm9s IGNhbgotKyAgICAgcmVzaWRlIGFsc28gaW4gIi5vcGQiIGZvciBwcGM2NCBmdW5jdGlvbiBkZXNj cmlwdG9yLiAgKi8KLSsgIGlmIChzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChvYmpmaWxl LT5vYmZkLCBzZWN0KSwgIi5wbHQiKSA9PSAwKQotKyAgICByZXR1cm4gTlVMTDsKKysgICAgICBz d2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2luZCkKKysJeworKwljYXNl IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ6CisrCSAgYnJlYWs7CisrCWNhc2UgUkFOR0VfQk9V TkRfS0lORF9EV0FSRl9CTE9DSzoKKysJICAvKiBgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u JyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICBpdCBpcyBleHBlY3RlZCB0 byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCisrCSAgICAgVFlQRV9OT1RfQUxM T0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCisr CSAgICAgKi8KKysJICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkgfHwgVFlQRV9O T1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpCisrCSAgICAgIHx8ICEgaGFzX3N0YWNrX2ZyYW1lcyAo KSkKKysJICAgIHsKKysJICAgICAgLyogV2Ugc2hvdWxkIHNldCAxIGZvciBGb3J0cmFuIGJ1dCBo b3cgdG8gZmluZCB0aGUgbGFuZ3VhZ2U/ICAqLworKwkgICAgICBUWVBFX0xPV19CT1VORCAobmV3 X3R5cGUpID0gMDsKKysJICAgICAgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkg PSAxOworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkg PSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysJCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5 cGUpLT5sb3cudS5kd2FyZl9ibG9jayk7CisrCSAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSkt Pmxvdy5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKKysJICBicmVhazsKKysJY2Fz ZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6CisrCSAgeworKwkgICAgQ09SRV9BRERS IGFkZHI7CiArCi0rICBmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QgPSBhbGxvY2EgKHN0cmxl biAoZnVuY3Rpb25fbmFtZSkKLSsJCQkJCSsgc3RybGVuICgiQGdudS1pZnVuYy10Z3QiKSArIDEp OwotKyAgc3ByaW50ZiAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0LCAiJXNAZ251LWlmdW5j LXRndCIsIGZ1bmN0aW9uX25hbWUpOworKwkgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9i YXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCisrCSAgICAgICBpdCBpcyBleHBl Y3RlZCB0byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCisrCSAgICAgICBUWVBF X05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3Ig VFlQRS4KKysJICAgICAgICovCisrCSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190 eXBlKQorKwkgICAgICAgICYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhh c19zdGFja19mcmFtZXMgKCkKKysJICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwK KysJCSAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0Lmxv Y2xpc3QsCisrCQkgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9j bGlzdC50eXBlLCAmYWRkcikpCisrCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBh ZGRyOworKwkgICAgZWxzZQorKwkgICAgICB7CisrCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZv cnRyYW4gYnV0IGhvdyB0byBmaW5kIHRoZSBsYW5ndWFnZT8gICovCisrCQlUWVBFX0xPV19CT1VO RCAobmV3X3R5cGUpID0gMDsKKysJCVRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUp ID0gMTsKKysJICAgICAgfQorKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5r aW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKKysJICB9CisrCSAgYnJlYWs7CisrCX0K ICsKLSsgIC8qIENyZWF0ZSBuZXcgYWxpYXMgIkBnbnUtaWZ1bmMtdGd0IiBmb3IgTVNZTS4gICov Ci0rICBtc3ltX25ldyA9IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoZnVuY3Rpb25fbmFtZV9nbnVf aWZ1bmNfdGd0LAotKwkJCQkgICAgc3RybGVuIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3Qp LCAxLAotKwkJCQkgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pLAotKwkJCQkgICAgTVNZ TUJPTF9UWVBFIChtc3ltKSwgc2VjdCwgb2JqZmlsZSk7Ci0rICAvKiBTaG91bGQgbm90IGhhcHBl bi4gICovCi0rICBpZiAobXN5bV9uZXcgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7CisrICAgICAg c3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kKQorKwl7CisrCWNh c2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9C T1VORF9LSU5EX0RXQVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0 b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVk IHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9B TExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4K KysJICAgICAqLworKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBF X05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVz ICgpKQorKwkgICAgeworKwkgICAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVf TE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkgICAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJ TkVEIChuZXdfdHlwZSkgPSAxOworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIFRZUEVfSElHSF9C T1VORCAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJICAgICAgIChU WVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBF X1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05T VEFOVDsKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6 CisrCSAgeworKwkgICAgQ09SRV9BRERSIGFkZHI7CiArCi0rICAvKiBvYmpmaWxlLT5tc3ltYm9s cyBhcnJheSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBvbiBvYnN0YWNrIGFuZCBpdCBjYW5ub3QgYmUK LSsgICAgIGVhc2lseSBleHRlbmRlZC4gIFRoZXJlZm9yZSA8dGFiPi1jb21wbGV0aW9uIG9uIHN5 bWJvbCBuYW1lcyB3aWxsIG5ldmVyCi0rICAgICBzaG93IHRoZSBAZ251LWlmdW5jLXRndCBzeW1i b2wuICBMaW5rIGl0IGF0IGxlYXN0IHRvIHRoZSBoYXNoIHRhYmxlIHNvCi0rICAgICB0aGF0IHJl c29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIGNhbiBmaW5kIGl0LiAgKi8KLSsgIGFkZF9taW5zeW1f dG9faGFzaF90YWJsZSAobXN5bV9uZXcsIG9iamZpbGUtPm1zeW1ib2xfaGFzaCk7Ci0rICAgIAot KyAgTVNZTUJPTF9TSVpFIChtc3ltX25ldykgPSBNU1lNQk9MX1NJWkUgKG1zeW0pOwotKyAgcmV0 dXJuIG1zeW1fbmV3OwotK30KKysJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24n IGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQg dG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgorKwkgICAgICAgVFlQRV9OT1Rf QUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUu CisrCSAgICAgICAqLworKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkK KysJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3Rh Y2tfZnJhbWVzICgpCisrCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsCisrCQkg ICAgICAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0Lmxv Y2xpc3QsCisrCQkgICAgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2Fy Zl9sb2NsaXN0LnR5cGUsCisrCQkgICAgICAgJmFkZHIpKQorKwkgICAgICBUWVBFX0hJR0hfQk9V TkQgKG5ld190eXBlKSA9IGFkZHI7CisrCSAgICBlbHNlCisrCSAgICAgIHsKKysJCVRZUEVfSElH SF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSAtIDE7CisrCQlU WVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOworKwkgICAgICB9CisrCSAg ICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lO RF9DT05TVEFOVDsKKysJICB9CisrCSAgYnJlYWs7CisrCX0KICsKLSsvKiBDaGVjayBmaXJzdCB0 aGUgY2FjaGUgaWYgaXQgLSB1bmxpa2VseSAtIGhhcyBub3QgYmVlbiBwb3B1bGF0ZWQgc2luY2UK LSsgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgaGFzIGJlZW4gY3JlYXRlZC4gIGdudV9pZnVuY19y ZWNvcmRfY2FjaGVfdW5jaGVja2VkCi0rICAgY291bGQgY3JlYXRlIGEgZHVwbGljYXRlIHN5bWJv bCBvdGhlcndpc2UuICAqLworKyAgICAgIHN3aXRjaCAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlw ZSktPmJ5dGVfc3RyaWRlLmtpbmQpCisrCXsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNU QU5UOgorKwkgIGJyZWFrOworKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6Cisr CSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBv YmpmaWxlIHNvCisrCSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBD SEVDS19UWVBFREVGLgorKwkgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNT T0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgorKwkgICAgICovCisrCSAgaWYgKFRZUEVf Tk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBl KQorKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMgKCkpCisrCSAgICBUWVBFX0JZVEVfU1RS SURFIChuZXdfdHlwZSkgPSAwOworKwkgIGVsc2UKKysJICAgIFRZUEVfQllURV9TVFJJREUgKG5l d190eXBlKSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAorKwkJCShUWVBFX1JBTkdFX0RBVEEg KG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9ibG9jayk7CisrCSAgVFlQRV9SQU5HRV9E QVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQKKysJICAgID0gUkFOR0VfQk9VTkRfS0lO RF9DT05TVEFOVDsKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xP Q0xJU1Q6CisrCSAgeworKwkgICAgQ09SRV9BRERSIGFkZHIgPSAwOwogKwotK3ZvaWQKLStnbnVf aWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAq ZnVuY3Rpb25fbmFtZSwKLSsJCQlDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykKLSt7Ci0rICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisrCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2Ns aXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICAgIGl0IGlz IGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICAg IFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlk IGZvciBUWVBFLgorKwkgICAgICAgKi8KKysJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAo bmV3X3R5cGUpCisrCQkmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNf c3RhY2tfZnJhbWVzICgpKQorKwkgICAgICBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKKysJICAg ICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2Ns aXN0LmxvY2xpc3QsCisrCQlUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUu dS5kd2FyZl9sb2NsaXN0LnR5cGUsCisrCQkmYWRkcik7CisrCSAgICBUWVBFX0JZVEVfU1RSSURF IChuZXdfdHlwZSkgPSBhZGRyOworKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5 dGVfc3RyaWRlLmtpbmQKKysJICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkg IH0KKysJICBicmVhazsKKysJfQogKwotKyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2Nh Y2hlIChmdW5jdGlvbl9uYW1lKTsKLSsgIGlmIChtc3ltID09IE5VTEwpCi0rICAgIGdudV9pZnVu Y19yZWNvcmRfY2FjaGVfdW5jaGVja2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9hZGRyZXNz KTsKLSsgIGVsc2UgaWYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSAhPSBmdW5jdGlvbl9h ZGRyZXNzKQotKyAgICB7Ci0rICAgICAgLyogVGhpcyBjYXNlIGluZGljYXRlcyBidWdneSBpbmZl cmlvciBwcm9ncmFtLiAgR0RCIHdvdWxkIG5lZWQgdG8gdXBkYXRlCi0rCSBpdHMgTVNZTSBjYWNo ZSBzeW1ib2wgZm9yIGZ1bmN0aW9uX2FkZHJlc3MuICBBbnl3YXkgRlVOQ1RJT05fTkFNRSBpcwot KwkgbmV2ZXIgbm9ybWFsbHkgZm91bmQgaW4gdGhlIGNhc2UgYXMgaW4gc3VjaCBjYXNlIG5vCi0r CSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgd291bGQgYmUgY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxh Y2UuICAqLworKyAgICAgIC8qIENvbnZlcnQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5U IGludG8gYSByZWd1bGFyIGJvdW5kLiAgKi8KKysgICAgICBpZiAoVFlQRV9SQU5HRV9ISUdIX0JP VU5EX0lTX0NPVU5UIChuZXdfdHlwZSkpCisrCXsKKysJICBUWVBFX0hJR0hfQk9VTkQgKG5ld190 eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkKKysJCQkJICAgICAgICsgVFlQRV9ISUdI X0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VO VCAobmV3X3R5cGUpID0gMDsKKysJfQorICAgICB9CisgCisgICAvKiBDb3B5IHBvaW50ZXJzIHRv IG90aGVyIHR5cGVzLiAgKi8KKyAgIGlmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkKKyAgICAg VFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUpID0gCistICAgICAgY29weV90eXBlX3JlY3Vyc2l2 ZSAob2JqZmlsZSwgCistCQkJICAgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkJICAgY29w aWVkX3R5cGVzKTsKKysgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIAorKwkJ CSAgICAgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCisrCQkJICAgICBjb3BpZWRfdHlwZXMpOwor ICAgaWYgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkpCisgICAgIFRZUEVfVlBUUl9CQVNFVFlQ RSAobmV3X3R5cGUpID0gCistICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwKKy0J CQkgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLAorLQkJCSAgIGNvcGllZF90eXBlcyk7Cisr ICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLAorKwkJCSAgICAgVFlQRV9WUFRS X0JBU0VUWVBFICh0eXBlKSwKKysJCQkgICAgIGNvcGllZF90eXBlcyk7CisgICAvKiBNYXliZSBj b3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMuCisgCisgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0w OTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKK0BAIC0zMzMxLDYg KzM2ODAsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CisgICByZXR1cm4gbmV3X3R5cGU7CisgfQorIAorKy8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAg Y29weSkgVFlQRS4gIFJldHVybiBhIG5ldyB0eXBlIGFsbG9jYXRlZCB1c2luZworKyAgIG1hbGxv YywgYSBzYXZlZCB0eXBlIGlmIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIFRZUEUgKHVzaW5nIENP UElFRF9UWVBFUyksCisrICAgb3IgVFlQRSBpZiBpdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIE9C SkZJTEUuICAqLwogKwotKyAgICAgIHdhcm5pbmcgKF8oImdudS1pbmRpcmVjdC1mdW5jdGlvbiBc IiVzXCIgaGFzIGNoYW5nZWQgaXRzIHJlc29sdmVkICIKLSsJCSAiZnVuY3Rpb25fYWRkcmVzcyBm cm9tICVzIHRvICVzOyBHREIgaXMgdXNpbmcgdGhlIGZvcm1lciBvbmUiKSwKLSsJICAgICAgIGZ1 bmN0aW9uX25hbWUsIHBhZGRyZXNzIChnZGJhcmNoLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5 bSkpLAotKwkgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGZ1bmN0aW9uX2FkZHJlc3MpKTsKLSsg ICAgfQorK3N0cnVjdCB0eXBlICoKKytjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAq dHlwZSwKKysJCSAgICAgaHRhYl90IGNvcGllZF90eXBlcykKKyt7CisrICByZXR1cm4gY29weV90 eXBlX3JlY3Vyc2l2ZV8xIChUWVBFX09CSkZJTEUgKHR5cGUpLCB0eXBlLCBjb3BpZWRfdHlwZXMp OwogK30KICsKLStzdGF0aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sICoKLStyZXNvbHZlX2dudV9p ZnVuY19ieV9nb3QgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUpCisgLyogTWFrZSBhIGNvcHkg b2YgdGhlIGdpdmVuIFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCisg ICAgdHlwZXMgYXJlIG5vdCBwcmVzZXJ2ZWQuCisgICAgCitAQCAtMzM1Myw2ICszNzEzLDE5OSBA QCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorICAgcmV0dXJuIG5ld190eXBl OworIH0KKyAKKysvKiBDYWxsYmFjayB0eXBlIGZvciBtYWluX3R5cGVfY3Jhd2wuICAqLworK3R5 cGVkZWYgaW50ICgqbWFpbl90eXBlX2NyYXdsX2l0ZXIpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9p ZCAqZGF0YSk7CisrCisrLyogSXRlcmF0ZSBhbGwgbWFpbl90eXBlIHN0cnVjdHVyZXMgcmVhY2hh YmxlIHRocm91Z2ggYW55IGBzdHJ1Y3QgdHlwZSAqJyBmcm9tCisrICAgVFlQRS4gIElURVIgd2ls bCBiZSBjYWxsZWQgb25seSBmb3Igb25lIHR5cGUgb2YgZWFjaCBtYWluX3R5cGUsIHVzZQorKyAg IFRZUEVfQ0hBSU4gdHJhdmVyc2FsIHRvIGZpbmQgYWxsIHRoZSB0eXBlIGluc3RhbmNlcy4gIElU RVIgaXMgYmVpbmcgY2FsbGVkCisrICAgZm9yIGVhY2ggbWFpbl90eXBlIGZvdW5kLiAgSVRFUiBy ZXR1cm5zIG5vbi16ZXJvIGlmIG1haW5fdHlwZV9jcmF3bCBzaG91bGQKKysgICBkZXB0aC1maXJz dCBlbnRlciB0aGUgc3BlY2lmaWMgdHlwZS4gIElURVIgbXVzdCBwcm92aWRlIHNvbWUgZGV0ZWN0 aW9uIGZvcgorKyAgIHJlZW50ZXJpbmcgdGhlIHNhbWUgbWFpbl90eXBlIGFzIHRoaXMgZnVuY3Rp b24gd291bGQgb3RoZXJ3aXNlIGVuZGxlc3NseQorKyAgIGxvb3AuICAqLworKworK3N0YXRpYyB2 b2lkCisrbWFpbl90eXBlX2NyYXdsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgbWFpbl90eXBlX2NyYXds X2l0ZXIgaXRlciwgdm9pZCAqZGF0YSkKICt7Ci0rICBjaGFyICpmdW5jdGlvbl9uYW1lX2dvdF9w bHQ7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIHN0cnVjdCB0eXBlICp0eXBlX2l0 ZXI7CisrICBpbnQgaTsKICsKLSsgIGZ1bmN0aW9uX25hbWVfZ290X3BsdCA9IGFsbG9jYSAoc3Ry bGVuIChmdW5jdGlvbl9uYW1lKSArIHN0cmxlbiAoIkBnb3QucGx0IikKLSsJCQkJICArIDEpOwot KyAgc3ByaW50ZiAoZnVuY3Rpb25fbmFtZV9nb3RfcGx0LCAiJXNAZ290LnBsdCIsIGZ1bmN0aW9u X25hbWUpOworKyAgaWYgKCF0eXBlKQorKyAgICByZXR1cm47CiArCi0rICBBTExfUFNQQUNFX09C SkZJTEVTIChjdXJyZW50X3Byb2dyYW1fc3BhY2UsIG9iamZpbGUpCi0rICAgIHsKLSsgICAgICBi ZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOwotKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo ID0gb2JqZmlsZS0+Z2RiYXJjaDsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWls dGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotKyAgICAgIHNpemVfdCBwdHJf c2l6ZSA9IFRZUEVfTEVOR1RIIChwdHJfdHlwZSk7Ci0rICAgICAgQ09SRV9BRERSIHBvaW50ZXJf YWRkcmVzcywgZnVuY3Rpb25fYWRkcmVzczsKLSsgICAgICBhc2VjdGlvbiAqcGx0OwotKyAgICAg IGdkYl9ieXRlICpidWYgPSBhbGxvY2EgKHB0cl9zaXplKTsKLSsgICAgICBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKm1zeW07CisrICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5V TEwpOwogKwotKyAgICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25h bWVfZ290X3BsdCwgTlVMTCwgb2JqZmlsZSk7Ci0rICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKLSsJ Y29udGludWU7Ci0rICAgICAgaWYgKE1TWU1CT0xfVFlQRSAobXN5bSkgIT0gbXN0X3Nsb3RfZ290 X3BsdCkKLSsJY29udGludWU7Ci0rICAgICAgcG9pbnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVF X0FERFJFU1MgKG1zeW0pOwotKwotKyAgICAgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1l IChvYmZkLCAiLnBsdCIpOwotKyAgICAgIGlmIChwbHQgPT0gTlVMTCkKLSsJY29udGludWU7Ci0r Ci0rICAgICAgaWYgKE1TWU1CT0xfU0laRSAobXN5bSkgIT0gcHRyX3NpemUpCi0rCWNvbnRpbnVl OwotKyAgICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHBvaW50ZXJfYWRkcmVzcywgYnVmLCBw dHJfc2l6ZSkgIT0gMCkKLSsJY29udGludWU7Ci0rICAgICAgZnVuY3Rpb25fYWRkcmVzcyA9IGV4 dHJhY3RfdHlwZWRfYWRkcmVzcyAoYnVmLCBwdHJfdHlwZSk7Ci0rCi0rICAgICAgbXN5bSA9IGdu dV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9h ZGRyZXNzKTsKLSsgICAgICBpZiAobXN5bSA9PSBOVUxMKQotKwljb250aW51ZTsKLSsgICAgICBy ZXR1cm4gbXN5bTsKLSsgICAgfQotKwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK3N0cnVjdCBt aW5pbWFsX3N5bWJvbCAqCi0rcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGNvbnN0IGNoYXIg KmZ1bmN0aW9uX25hbWUpCi0rewotKyAgY2hhciAqZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0 OwotKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1 bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKLSsg IHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3Qi LCBmdW5jdGlvbl9uYW1lKTsKLSsKLSsgIHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1 bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgTlVMTCwgTlVMTCk7Ci0rfQotKwotK2ludAotK3Jl c29sdmVfZ251X2lmdW5jIChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBDT1JFX0FERFIgKmZ1 bmN0aW9uX2FkZHJlc3NwKQotK3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKLSsK LSsgIG1zeW0gPSByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSAoZnVuY3Rpb25fbmFtZSk7Ci0r ICBpZiAobXN5bSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgKmZ1bmN0aW9uX2FkZHJlc3NwID0g U1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0r Ci0rICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChmdW5jdGlvbl9uYW1lKTsKLSsg IGlmIChtc3ltICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAqZnVuY3Rpb25fYWRkcmVzc3AgPSBT WU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsK LSsgIHJldHVybiAwOwotK30KLSsKLSBzdHJ1Y3QgYnVpbGRfaWQKLSAgIHsKLSAgICAgc2l6ZV90 IHNpemU7Ci1AQCAtNzk3LDYgKzEwNDksOCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCSAgICAgICBiZmRfZXJybXNnIChi ZmRfZ2V0X2Vycm9yICgpKSk7Ci0gCi0gICAgICAgZWxmX3N5bXRhYl9yZWFkIChvYmpmaWxlLCBT VF9EWU5BTUlDLCBkeW5zeW1jb3VudCwgZHluX3N5bWJvbF90YWJsZSwgMCk7Ci0rCi0rICAgICAg ZWxmX3JlbF9wbHRfcmVhZCAob2JqZmlsZSwgZHluX3N5bWJvbF90YWJsZSk7Ci0gICAgIH0KLSAK LSAgIC8qIEFkZCBzeW50aGV0aWMgc3ltYm9scyAtIGZvciBpbnN0YW5jZSwgbmFtZXMgZm9yIGFu eSBQTFQgZW50cmllcy4gICovCi1AQCAtODY5LDExICsxMTIzLDkgQEAgZWxmX3N5bWZpbGVfcmVh ZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQotIAkJCQlzdHJf c2VjdC0+ZmlsZXBvcywKLSAJCQkJYmZkX3NlY3Rpb25fc2l6ZSAoYWJmZCwgc3RyX3NlY3QpKTsK LSAgICAgfQotLSAgaWYgKGR3YXJmMl9oYXNfaW5mbyAob2JqZmlsZSkpCi0tICAgIHsKLS0gICAg ICAvKiBEV0FSRiAyIHNlY3Rpb25zICovCi0tICAgICAgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChv YmpmaWxlKTsKLS0gICAgfQotKwotKyAgaWYgKGR3YXJmMl9oYXNfaW5mbyAob2JqZmlsZSkgJiYg ZHdhcmYyX2luaXRpYWxpemVfb2JqZmlsZSAob2JqZmlsZSkpCi0rICAgIG9iamZpbGUtPnNmID0g JmVsZl9zeW1fZm5zX2dkYl9pbmRleDsKLSAKLSAgIC8qIElmIHRoZSBmaWxlIGhhcyBpdHMgb3du IHN5bWJvbCB0YWJsZXMgaXQgaGFzIG5vIHNlcGFyYXRlIGRlYnVnIGluZm8uCi0gICAgICBgLmR5 bnN5bScvYC5zeW10YWInIGdvIHRvIE1TWU1CT0xTLCBgLmRlYnVnX2luZm8nIGdvZXMgdG8gU1lN VEFCUy9QU1lNVEFCUy4KLUBAIC0xMDQ5LDYgKzEzMDEsMjQgQEAgc3RhdGljIHN0cnVjdCBzeW1f Zm5zIGVsZl9zeW1fZm5zID0KLSAgIE5VTEwJCQkJLyogbmV4dDogcG9pbnRlciB0byBuZXh0IHN0 cnVjdCBzeW1fZm5zICovCi0gfTsKLSAKLSsvKiBUaGUgc2FtZSBhcyBlbGZfc3ltX2ZucywgYnV0 IG5vdCByZWdpc3RlcmVkIGFuZCB1c2VzIHRoZQotKyAgIERXQVJGLXNwZWNpZmljIEdOVSBpbmRl eCByYXRoZXIgdGhhbiBwc3ltdGFiLiAgKi8KLStzdGF0aWMgc3RydWN0IHN5bV9mbnMgZWxmX3N5 bV9mbnNfZ2RiX2luZGV4ID0KLSt7Ci0rICBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyLAotKyAgZWxm X25ld19pbml0LAkJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJl IHN5bWFiICovCi0rICBlbGZfc3ltZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlh bCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlZCgpICovCi0rICBlbGZfc3ltZmlsZV9yZWFkLAkJLyog c3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmlsZSBpbnRvIHN5bXRhYiAqLwotKyAgZWxmX3N5bWZp bGVfZmluaXNoLAkJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICov Ci0rICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUg ZXh0LiB0byBpbnQuIHJlbG9jYXRpbiAqLwotKyAgZWxmX3N5bWZpbGVfc2VnbWVudHMsCQkvKiBz eW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KLSsJCQkJICAgYSBmaWxl LiAgKi8KLSsgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN5bV9yZWFkX2xpbmV0 YWJsZSAqLwotKyAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBzeW1fcmVsb2NhdGU6IFJl bG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCi0rICAmZHdhcmYyX2dkYl9pbmRleF9mdW5jdGlv bnMsCi0rICBOVUxMCQkJCS8qIG5leHQ6IHBvaW50ZXIgdG8gbmV4dCBzdHJ1Y3Qgc3ltX2ZucyAq LwotK307Ci0rCi0gdm9pZAotIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCi0gewotZGlmZiAt LWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCBmZjE3YzM0Li43YjllODcxIDEw MDY0NAotLS0tIGEvZ2RiL2V2YWwuYwotKysrIGIvZ2RiL2V2YWwuYwotQEAgLTQ0LDYgKzQ0LDcg QEAKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgot ICNpbmNsdWRlICJ3cmFwcGVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotIAotICNpbmNs dWRlICJnZGJfYXNzZXJ0LmgiCi0gCi1AQCAtNzg4LDYgKzc4OSw3IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotICAgaW50IHNhdmVfcG9zMTsK LSAgIHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uID0gTlVMTDsKLSAgIGNoYXIgKmZ1bmN0aW9uX25h bWUgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAKLSAgIHBjID0gKCpw b3MpKys7Ci0gICBvcCA9IGV4cC0+ZWx0c1twY10ub3Bjb2RlOwotQEAgLTE3NzIsNiArMTc3NCw4 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAot IAkgICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5i dWlsdGluX2ludCwKLSAJCQkJIG5vdF9sdmFsKTsKLSAJICAgIH0KLSsJICBlbHNlIGlmIChUWVBF X0dOVV9JRlVOQyAoZnR5cGUpKQotKwkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVlIChUWVBFX1RB UkdFVF9UWVBFIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpKTsKLSAJICBlbHNlIGlmIChUWVBF X1RBUkdFVF9UWVBFIChmdHlwZSkpCi0gCSAgICByZXR1cm4gYWxsb2NhdGVfdmFsdWUgKFRZUEVf VEFSR0VUX1RZUEUgKGZ0eXBlKSk7Ci0gCSAgZWxzZQotQEAgLTE3OTgsNiArMTgwMiw4IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAotICAg ICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGgu ICAqLwotICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3Ms IG5vc2lkZSk7Ci0rICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAs IDApOwotKyAgICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEp KTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAg ICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwotIAotQEAgLTE4MTgsNiArMTgyNCw3IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAg ICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKLSAJICAgIH0KLSAJfSAKLSsgICAgICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKLSAKLSAgICAgICBzd2l0Y2ggKGNvZGUpCi0gCXsKLUBAIC0yMjU0 LDEzICsyMjYxLDE5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAotICAgICAgIHsKLSAJaW50IHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9E SU1TXTsKLSAJaW50IGFycmF5X3NpemVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0rCWludCBi eXRlX3N0cmlkZV9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLSAJaW50IG5kaW1lbnNpb25zID0g MSwgaTsKLSAJc3RydWN0IHR5cGUgKnRtcF90eXBlOwotIAlpbnQgb2Zmc2V0X2l0ZW07CS8qIFRo ZSBhcnJheSBvZmZzZXQgd2hlcmUgdGhlIGl0ZW0gbGl2ZXMgKi8KLSsJQ09SRV9BRERSIG9mZnNl dF9ieXRlOwkvKiBieXRlX3N0cmlkZSBiYXNlZCBvZmZzZXQgICovCi0rCXVuc2lnbmVkIGVsZW1l bnRfc2l6ZTsKLSAKLSAJaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLSAJICBlcnJvciAo XygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJ TVMpOwotIAotKwlvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0r CW9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSsKLSAJdG1w X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0gCW5kaW1lbnNpb25z ID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0gCi1AQCAtMjI5MCw2ICsyMzAzLDkgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAg ICB1cHBlciA9IGY3N19nZXRfdXBwZXJib3VuZCAodG1wX3R5cGUpOwotIAkgICAgbG93ZXIgPSBm NzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKLSAKLSsJICAgIGJ5dGVfc3RyaWRlX2FycmF5 W25hcmdzIC0gaSAtIDFdID0KLSsJCQkJCVRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHRt cF90eXBlKTsKLSsKLSAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBpIC0gMV0gPSB1cHBl ciAtIGxvd2VyICsgMTsKLSAKLSAJICAgIC8qIFplcm8tbm9ybWFsaXplIHN1YnNjcmlwdHMgc28g dGhhdCBvZmZzZXR0aW5nIHdpbGwgd29yay4gKi8KLUBAIC0yMzA4LDEzICsyMzI0LDI1IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAg ICB0bXBfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7 Ci0gCSAgfQotIAotKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8gZjc3X2dl dF9sb3dlcmJvdW5kIGNhbGxzIGFib3ZlLiAgKi8KLSsJZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7 Ci0rCi0gCS8qIE5vdyBsZXQgdXMgY2FsY3VsYXRlIHRoZSBvZmZzZXQgZm9yIHRoaXMgaXRlbSAq LwotIAotLQlvZmZzZXRfaXRlbSA9IHN1YnNjcmlwdF9hcnJheVtuZGltZW5zaW9ucyAtIDFdOwot KwlvZmZzZXRfaXRlbSA9IDA7Ci0rCW9mZnNldF9ieXRlID0gMDsKLSsKLSsJZm9yIChpID0gbmRp bWVuc2lvbnMgLSAxOyBpID49IDA7IC0taSkKLSsJICB7Ci0rCSAgICBvZmZzZXRfaXRlbSAqPSBh cnJheV9zaXplX2FycmF5W2ldOwotKwkgICAgaWYgKGJ5dGVfc3RyaWRlX2FycmF5W2ldID09IDAp Ci0rCSAgICAgIG9mZnNldF9pdGVtICs9IHN1YnNjcmlwdF9hcnJheVtpXTsKLSsJICAgIGVsc2UK LSsJICAgICAgb2Zmc2V0X2J5dGUgKz0gc3Vic2NyaXB0X2FycmF5W2ldICogYnl0ZV9zdHJpZGVf YXJyYXlbaV07Ci0rCSAgfQotIAotLQlmb3IgKGkgPSBuZGltZW5zaW9ucyAtIDE7IGkgPiAwOyAt LWkpCi0tCSAgb2Zmc2V0X2l0ZW0gPQotLQkgICAgYXJyYXlfc2l6ZV9hcnJheVtpIC0gMV0gKiBv ZmZzZXRfaXRlbSArIHN1YnNjcmlwdF9hcnJheVtpIC0gMV07Ci0rCWVsZW1lbnRfc2l6ZSA9IFRZ UEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSkpOwotKwlvZmZzZXRfYnl0ZSAr PSBvZmZzZXRfaXRlbSAqIGVsZW1lbnRfc2l6ZTsKLSAKLSAJLyogTGV0IHVzIG5vdyBwbGF5IGEg ZGlydHkgdHJpY2s6IHdlIHdpbGwgdGFrZSBhcmcxIAotIAkgICB3aGljaCBpcyBhIHZhbHVlIG5v ZGUgcG9pbnRpbmcgdG8gdGhlIHRvcG1vc3QgbGV2ZWwKLUBAIC0yMzI0LDcgKzIzNTIsNyBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJICAg cmV0dXJucyB0aGUgY29ycmVjdCB0eXBlIHZhbHVlICovCi0gCi0gCWRlcHJlY2F0ZWRfc2V0X3Zh bHVlX3R5cGUgKGFyZzEsIHRtcF90eXBlKTsKLS0JcmV0dXJuIHZhbHVlX3N1YnNjcmlwdGVkX3J2 YWx1ZSAoYXJnMSwgb2Zmc2V0X2l0ZW0sIDApOwotKwlyZXR1cm4gdmFsdWVfc3Vic2NyaXB0ZWRf cnZhbHVlIChhcmcxLCBvZmZzZXRfYnl0ZSk7Ci0gICAgICAgfQotIAotICAgICBjYXNlIEJJTk9Q X0xPR0lDQUxfQU5EOgotQEAgLTI1NTgsMTQgKzI1ODYsMjIgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gICAgICAgaWYgKGV4cGVjdF90eXBl ICYmIFRZUEVfQ09ERSAoZXhwZWN0X3R5cGUpID09IFRZUEVfQ09ERV9QVFIpCi0gCWV4cGVjdF90 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAoZXhwZWN0X3R5cGUpKTsKLSAg ICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChleHBlY3RfdHlwZSwgZXhwLCBwb3MsIG5vc2lk ZSk7Ci0rICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwot KyAgICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAg ICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0RQVFIKLSAJICB8fCBUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9NRU1CRVJQVFIpCi0gCWVycm9yIChfKCJBdHRlbXB0IHRv IGRlcmVmZXJlbmNlIHBvaW50ZXIgdG8gbWVtYmVyIHdpdGhvdXQgYW4gb2JqZWN0IikpOwotICAg ICAgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQotLQlnb3RvIG5vc2lkZXJldDsKLSsJewotKwkg IGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgIGdvdG8gbm9zaWRlcmV0OwotKwl9Ci0gICAg ICAgaWYgKHVub3BfdXNlcl9kZWZpbmVkX3AgKG9wLCBhcmcxKSkKLS0JcmV0dXJuIHZhbHVlX3hf dW5vcCAoYXJnMSwgb3AsIG5vc2lkZSk7Ci0rCXsKLSsJICBkb19jbGVhbnVwcyAob2xkX2NoYWlu KTsKLSsJICByZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsKLSsJfQotICAg ICAgIGVsc2UgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKLSAJewotIAkg IHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAtMjU3NCwxMiAr MjYxMCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKLSAJICAvKiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRo ZSAxc3QgZWx0LiAgKi8KLSAJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf QVJSQVkKLSAJICAgICkKLS0JICAgIHJldHVybiB2YWx1ZV96ZXJvIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSwKLS0JCQkgICAgICAgbHZhbF9tZW1vcnkpOwotKwkgICAgewotKwkgICAgICBkb19j bGVhbnVwcyAob2xkX2NoYWluKTsKLSsJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpLAotKwkJCQkgbHZhbF9tZW1vcnkpOwotKwkgICAgfQotIAkgIGVsc2Ug aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKLS0JICAgIC8qIEdEQiBhbGxv d3MgZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLwotLQkgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1 aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0tCQkJICAgICAgIGx2YWxf bWVtb3J5KTsKLSsJICAgIHsKLSsJICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAg ICAgIC8qIEdEQiBhbGxvd3MgZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLwotKwkgICAgICByZXR1 cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwK LSsJCQkJIGx2YWxfbWVtb3J5KTsKLSsJICAgIH0KLSAJICBlbHNlCi0gCSAgICBlcnJvciAoXygi QXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIikpOwotIAl9 Ci1AQCAtMjU4OSw5ICsyNjMxLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJsZXMgYXJlIHJh cmUgZW5vdWdoIHRoYXQKLSAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNlZW0gdG8gYmUg YSBtaXN0YWtlLiAgKi8KLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf SU5UKQotLQlyZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gp LT5idWlsdGluX2ludCwKLS0JCQkgICAgICAoQ09SRV9BRERSKSB2YWx1ZV9hc19hZGRyZXNzIChh cmcxKSk7Ci0tICAgICAgcmV0dXJuIHZhbHVlX2luZCAoYXJnMSk7Ci0rCXsKLSsJICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKLSsJICByZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBl IChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKLSsJCQkJKENPUkVfQUREUikgdmFsdWVfYXNf YWRkcmVzcyAoYXJnMSkpOwotKwl9Ci0rICAgICAgYXJnMSA9IHZhbHVlX2luZCAoYXJnMSk7Ci0r ICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgcmV0dXJuIGFyZzE7Ci0gCi0g ICAgIGNhc2UgVU5PUF9BRERSOgotICAgICAgIC8qIEMrKzogY2hlY2sgZm9yIGFuZCBoYW5kbGUg cG9pbnRlciB0byBtZW1iZXJzLiAgKi8KLUBAIC0yOTMzLDcgKzI5ODAsNyBAQCBldmFsdWF0ZV9z dWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSB7Ci0gICBlbnVt IGV4cF9vcGNvZGUgb3A7Ci0gICBpbnQgcGM7Ci0tICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSsgIHN0 cnVjdCB2YWx1ZSAqdmFsID0gTlVMTDsKLSAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKLSAgIHN0cnVj dCB0eXBlICp0eXBlOwotIAotQEAgLTI5NDQsMTIgKzI5OTEsMTcgQEAgZXZhbHVhdGVfc3ViZXhw X3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0gICAgIHsKLSAgICAgY2Fz ZSBPUF9WQVJfVkFMVUU6Ci0gICAgICAgdmFyID0gZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sOwot KyAgICAgIC8qIGFkZHJlc3Nfb2ZfdmFyaWFibGUgd2lsbCBjYWxsIG9iamVjdF9hZGRyZXNzX3Nl dCBmb3IgY2hlY2tfdHlwZWRlZi4KLSsJIENhbGwgaXQgb25seSBpZiByZXF1aXJlZCBhcyBpdCBj YW4gZXJyb3Itb3V0IG9uIFZBUiBpbiByZWdpc3Rlci4gICovCi0rICAgICAgaWYgKFRZUEVfRFlO QU1JQyAoU1lNQk9MX1RZUEUgKHZhcikpKQotKwl2YWwgPSBhZGRyZXNzX29mX3ZhcmlhYmxlICh2 YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJsb2NrKTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRl ZiAoU1lNQk9MX1RZUEUgKHZhcikpOwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZ UEVfQ09ERV9BUlJBWQotIAkgICYmIENBU1RfSVNfQ09OVkVSU0lPTiAoZXhwLT5sYW5ndWFnZV9k ZWZuKSkKLSAJewotIAkgICgqcG9zKSArPSA0OwotLQkgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFi bGUgKHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwotKwkgIGlmICghdmFsKQotKwkgICAg dmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7 Ci0gCSAgcmV0dXJuIHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpKSwKLSAJCQkgICAgIHZhbCk7Ci0gCX0KLUBAIC0zMDAxLDkgKzMwNTMsMTMg QEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCAqcG9zKQotIAotICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKLSAgICAgICAoKnBvcykgKz0gNDsK LS0gICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAoU1lNQk9MX1RZUEUgKGV4cC0+ZWx0c1twYyAr IDJdLnN5bWJvbCkpOwotLSAgICAgIHJldHVybgotLQl2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVf dHlwZSwgKExPTkdFU1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rICAgICAgLyogV2UgZG8gbm90 IG5lZWQgdG8gY2FsbCByZWFkX3Zhcl92YWx1ZSBidXQgdGhlIG9iamVjdCBldmFsdWF0aW9uIG1h eQotKwkgbmVlZCB0byBoYXZlIGV4ZWN1dGVkIG9iamVjdF9hZGRyZXNzX3NldCB3aGljaCBuZWVk cyB2YWxpZAotKwkgU1lNQk9MX1ZBTFVFX0FERFJFU1Mgb2YgdGhlIHN5bWJvbC4gIFN0aWxsIFZB TFVFIHJldHVybmVkIGJ5Ci0rCSByZWFkX3Zhcl92YWx1ZSB3ZSBsZWZ0IGFzIGxhenkuICAqLwot KyAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChyZWFkX3Zhcl92YWx1ZSAoZXhwLT5lbHRzW3BjICsg Ml0uc3ltYm9sLAotKwkJCQkJZGVwcmVjYXRlZF9zYWZlX2dldF9zZWxlY3RlZF9mcmFtZSAoKSkp OwotKyAgICAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdFU1Qp IFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgdmFsID0gZXZh bHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lEX1NJREVfRUZGRUNU Uyk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5oIGIvZ2RiL2YtbGFuZy5oCi1pbmRleCBmNWJi ODJkLi4yOWNmNWJhIDEwMDY0NAotLS0tIGEvZ2RiL2YtbGFuZy5oCi0rKysgYi9nZGIvZi1sYW5n LmgKLUBAIC0yOCw2ICsyOCwxMCBAQCBleHRlcm4gdm9pZCBmX2Vycm9yIChjaGFyICopOwkvKiBE ZWZpbmVkIGluIGYtZXhwLnkgKi8KLSBleHRlcm4gdm9pZCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0 eXBlICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAotIAkJCSAgaW50KTsK LSAKLStleHRlcm4gY29uc3QgY2hhciAqZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50 X3RvX3N0cmVhbQotKyAgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt KTsKLStleHRlcm4gdm9pZCBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHN0 cnVjdCB0eXBlICp0eXBlKTsKLSsKLSBleHRlcm4gaW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlw ZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKLSAJCQlzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsCi0gCQkJY29uc3Qgc3RydWN0IHZhbHVlICosCi1kaWZmIC0tZ2l0IGEvZ2RiL2Yt dHlwZXByaW50LmMgYi9nZGIvZi10eXBlcHJpbnQuYwotaW5kZXggZDM1YTI1NS4uZGVjODFkNSAx MDA2NDQKLS0tLSBhL2dkYi9mLXR5cGVwcmludC5jCi0rKysgYi9nZGIvZi10eXBlcHJpbnQuYwot QEAgLTMyLDcgKzMyLDcgQEAKLSAjaW5jbHVkZSAiZ2RiY29yZS5oIgotICNpbmNsdWRlICJ0YXJn ZXQuaCIKLSAjaW5jbHVkZSAiZi1sYW5nLmgiCi0tCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgot ICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi1AQCAtNDks NiArNDksMzQgQEAgdm9pZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBl ICosIHN0cnVjdCB1aV9maWxlICosCi0gdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwotIAwKLSAKLStjb25zdCBjaGFyICoK LStmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKLSsJCQkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBjb25z dCBjaGFyICptc2c7Ci0rCi0rICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAo dHlwZSk7Ci0rICBpZiAobXNnICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBBc3N1bWluZyB0 aGUgY29udGVudCBwcmludGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4gICov Ci0rICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7Ci0rICAgIH0K LSsKLSsgIHJldHVybiBtc2c7Ci0rfQotKwotK3ZvaWQKLStmX29iamVjdF9hZGRyZXNzX2RhdGFf dmFsaWRfb3JfZXJyb3IgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGNvbnN0IGNoYXIgKm1z ZzsKLSsKLSsgIG1zZyA9IG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKTsKLSsg IGlmIChtc2cgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNz IGl0IGJlY2F1c2UgdGhlICVzLiIpLCBfKG1zZykpOwotKyAgICB9Ci0rfQotKwotIC8qIExFVkVM IGlzIHRoZSBkZXB0aCB0byBpbmRlbnQgbGluZXMgYnkuICAqLwotIAotIHZvaWQKLUBAIC01OCw2 ICs4Niw5IEBAIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZh cnN0cmluZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgIGVudW0gdHlwZV9jb2RlIGNvZGU7 Ci0gICBpbnQgZGVtYW5nbGVkX2FyZ3M7Ci0gCi0rICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRh X3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAgICByZXR1 cm47Ci0rCi0gICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93LCBsZXZlbCk7 Ci0gICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKLSAgIGlmICgodmFyc3RyaW5nICE9IE5VTEwg JiYgKnZhcnN0cmluZyAhPSAnXDAnKQotQEAgLTE2NSw2ICsxOTYsOSBAQCBmX3R5cGVfcHJpbnRf dmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LAotIAotICAgUVVJVDsKLSAKLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9U WVBFREVGKQotKyAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLSsKLSAgIHN3aXRjaCAoVFlQRV9D T0RFICh0eXBlKSkKLSAgICAgewotICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLWRpZmYgLS1n aXQgYS9nZGIvZi12YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQuYwotaW5kZXggODVmNjk4ZC4u MmY3MmI5NyAxMDA2NDQKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHBy aW50LmMKLUBAIC01NCwxNSArNTQsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9G T1JUUkFOX0RJTVMgKyAxXVsyXTsKLSAvKiBUaGUgZm9sbG93aW5nIG1hY3JvIGdpdmVzIHVzIHRo ZSBzaXplIG9mIHRoZSBudGggZGltZW5zaW9uLCBXaGVyZSAKLSAgICBuIGlzIDEgYmFzZWQuICov Ci0gCi0tI2RlZmluZSBGNzdfRElNX1NJWkUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzFd KQotKyNkZWZpbmUgRjc3X0RJTV9DT1VOVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMV0p Ci0gCi0tLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0IGZvciByb3cgbiB3aGVy ZSBuIGlzIDEtYmFzZWQuICovCi0rLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgZWxlbWVu dCBzaXplIGZvciByb3cgbiB3aGVyZSBuIGlzIDEtYmFzZWQuICovCi0gCi0tI2RlZmluZSBGNzdf RElNX09GRlNFVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCi0rI2RlZmluZSBGNzdf RElNX0JZVEVfU1RSSURFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkKLSAKLSBpbnQK LSBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIHsKLSsgIGZfb2JqZWN0 X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAodHlwZSk7Ci0rCi0gICBpZiAoVFlQRV9BUlJB WV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQotICAgICBlcnJvciAoXygiTG93ZXIg Ym91bmQgbWF5IG5vdCBiZSAnKicgaW4gRjc3IikpOwotIAotQEAgLTcyLDE0ICs3NCwxNyBAQCBm NzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIGludAotIGY3N19nZXRfdXBw ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotKyAgZl9vYmplY3RfYWRkcmVzc19kYXRh X3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKLSsKLSAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5E X0lTX1VOREVGSU5FRCAodHlwZSkpCi0gICAgIHsKLS0gICAgICAvKiBXZSBoYXZlIGFuIGFzc3Vt ZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFuZHMuICBBc3N1bWUgdGhhdAotLQkgdXBwZXJfYm91bmQg PT0gbG93ZXJfYm91bmQgc28gdGhhdCB3ZSBzaG93IGF0IGxlYXN0IDEgZWxlbWVudC4KLS0JIElm IHRoZSB1c2VyIHdhbnRzIHRvIHNlZSBtb3JlIGVsZW1lbnRzLCBsZXQgaGltIG1hbnVhbGx5IGFz ayBmb3IgJ2VtCi0tCSBhbmQgd2UnbGwgc3Vic2NyaXB0IHRoZSBhcnJheSBhbmQgc2hvdyBoaW0u ICAqLwotKyAgICAgIC8qIFdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5IG9uIG91ciBoYW5k cy4gIEFzIHR5cGVfbGVuZ3RoX2dldAotKwkgYWxyZWFkeSBhc3N1bWVzIGEgbGVuZ3RoIHplcm8g b2YgYXJyYXlzIHdpdGggdW5kZXJmaW5lZCBib3VuZHMgVkFMQUREUgotKwkgcGFzc2VkIHRvIHRo ZSBGb3J0cmFuIGZ1bmN0aW9ucyBkb2VzIG5vdCBjb250YWluZWQgdGhlIHJlYWwgaW5mZXJpb3IK LSsJIG1lbW9yeSBjb250ZW50LiAgVXNlciBzaG91bGQgcmVxdWVzdCBwcmludGluZyBvZiBzcGVj aWZpYyBhcnJheQotKwkgZWxlbWVudHMgaW5zdGVhZC4gICovCi0gCi0tICAgICAgcmV0dXJuIGY3 N19nZXRfbG93ZXJib3VuZCAodHlwZSk7Ci0rICAgICAgcmV0dXJuIGY3N19nZXRfbG93ZXJib3Vu ZCAodHlwZSkgLSAxOwotICAgICB9Ci0gCi0gICByZXR1cm4gVFlQRV9BUlJBWV9VUFBFUl9CT1VO RF9WQUxVRSAodHlwZSk7Ci1AQCAtMTM0LDI0ICsxMzksMjkgQEAgZjc3X2NyZWF0ZV9hcnJheXBy aW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt KQotICAgICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7Ci0gICAgICAg bG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKLSAKLS0gICAgICBGNzdfRElN X1NJWkUgKG5kaW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKLSsgICAgICBGNzdfRElNX0NPVU5U IChuZGltZW4pID0gdXBwZXIgLSBsb3dlciArIDE7Ci0rCi0rICAgICAgRjc3X0RJTV9CWVRFX1NU UklERSAobmRpbWVuKSA9Ci0rICAgICAgICBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0 bXBfdHlwZSk7Ci0gCi0gICAgICAgdG1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlw ZSk7Ci0gICAgICAgbmRpbWVuKys7Ci0gICAgIH0KLSAKLS0gIC8qIE5vdyB3ZSBtdWx0aXBseSBl bHRsZW4gYnkgYWxsIHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAotKyAgLyogTm93IHdl IG11bHRpcGx5IGVsdGxlbiBieSBhbGwgdGhlIEJZVEVfU1RSSURFcywgc28gdGhhdCBsYXRlciB3 ZQotICAgICAgY2FuIHByaW50IG91dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBVcCB0aWxs IG5vdyB3ZSAKLS0gICAgIGtub3cgYW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBi dXQgd2UgYWxzbyAKLSsgICAgIGtub3cgYW4gZWx0bGVuIHRvIGFwcGx5IHRvIGdldCB0aGUgaXRl bSBidXQgd2UgYWxzbwotICAgICAgaGF2ZSB0byBrbm93IGhvdyBtdWNoIHRvIGFkZCB0byBnZXQg dG8gdGhlIG5leHQgaXRlbSAqLwotIAotICAgbmRpbWVuLS07Ci0gICBlbHRsZW4gPSBUWVBFX0xF TkdUSCAodG1wX3R5cGUpOwotLSAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47Ci0r ICBpZiAoRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAwKQotKyAgICBGNzdfRElNX0JZ VEVfU1RSSURFIChuZGltZW4pID0gZWx0bGVuOwotICAgd2hpbGUgKC0tbmRpbWVuID4gMCkKLSAg ICAgewotLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiArIDEpOwotLSAgICAg IEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotKyAgICAgIGVsdGxlbiAqPSBGNzdf RElNX0NPVU5UIChuZGltZW4gKyAxKTsKLSsgICAgICBpZiAoRjc3X0RJTV9CWVRFX1NUUklERSAo bmRpbWVuKSA9PSAwKQotKwlGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0gZWx0bGVuOwot ICAgICB9Ci0gfQotIAotQEAgLTE3MiwzNCArMTgyLDM0IEBAIGY3N19wcmludF9hcnJheV8xIChp bnQgbnNzLCBpbnQgbmRpbWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAotIAotICAgaWYgKG5z cyAhPSBuZGltZW5zaW9ucykKLSAgICAgewotLSAgICAgIGZvciAoaSA9IDA7IChpIDwgRjc3X0RJ TV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCi0rICAg ICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRp b25zLT5wcmludF9tYXgpOyBpKyspCi0gCXsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIoICIpOwotIAkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAxLCBuZGltZW5zaW9ucywgVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksCi0tCQkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fT0ZG U0VUIChuc3MpLAotLQkJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobnNzKSwK LSsJCQkgICAgIHZhbGFkZHIgKyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAobnNzKSwKLSsJCQkg ICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAobnNzKSwKLSAJCQkgICAgIHN0 cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCBlbHRzKTsKLSAJICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICIpICIpOwotIAl9Ci0tICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50 X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAKLSsgICAgICBpZiAoKmVsdHMgPj0gb3B0 aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdfRElNX0NPVU5UIChuc3MpKQotIAlmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAg Zm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+ cHJpbnRfbWF4OwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYm ICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7Ci0gCSAgIGkrKywgKCplbHRzKSsrKQotIAl7 Ci0gCSAgdmFsX3ByaW50IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLS0JCSAgICAgdmFsYWRk ciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAotKwkJICAgICB2YWxhZGRyICsg aSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAgICAgMCwKLS0JCSAg ICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAotKwkJICAgICBh ZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAgICAg c3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwotIAotLQkg IGlmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkKLSsJICBpZiAoaSAhPSAoRjc3X0RJ TV9DT1VOVCAobnNzKSAtIDEpKQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCAi KTsKLSAKLSAJICBpZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCi0tCSAgICAg ICYmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkpCi0rCSAgICAgICYmIChpICE9IChG NzdfRElNX0NPVU5UIChuc3MpIC0gMSkpKQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiLi4uIik7Ci0gCX0KLSAgICAgfQotQEAgLTI1Niw2ICsyNjYsOSBAQCBmX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRf b2Zmc2V0LAotICAgQ09SRV9BRERSIGFkZHI7Ci0gICBpbnQgaW5kZXg7Ci0gCi0rICBpZiAoZl9v YmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAh PSBOVUxMKQotKyAgICByZXR1cm4gMDsKLSsKLSAgIENIRUNLX1RZUEVERUYgKHR5cGUpOwotICAg c3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2ZpbmRj bWQuYyBiL2dkYi9maW5kY21kLmMKLWluZGV4IGFjNjNhOWUuLmU5YmE0NWMgMTAwNjQ0Ci0tLS0g YS9nZGIvZmluZGNtZC5jCi0rKysgYi9nZGIvZmluZGNtZC5jCi1AQCAtNDUsNiArNDUsNDEgQEAg cHV0X2JpdHMgKGJmZF91aW50NjRfdCBkYXRhLCBjaGFyICpidWYsIGludCBiaXRzLCBiZmRfYm9v bGVhbiBiaWdfcCkKLSAgICAgfQotIH0KLSAKLSsvKiBBbGxvY2F0ZXMgYSBidWZmZXIgaW4gKlBB VFRFUk5fQlVGLCB3aXRoIGEgaGFyZC1jb2RlZCBpbml0aWFsIHNpemUgd2hpY2gKLSsgICB3aWxs IGJlIHJldHVybmVkIGluICpQQVRURVJOX0JVRl9TSVpFLiAqUEFUVEVSTl9CVUZfRU5EIHBvaW50 cyB0byB0aGUgc2FtZQotKyAgIHBsYWNlIGFzICpQQVRURVJOX0JVRiwgaW5kaWNhdGluZyB0aGF0 IHRoZSBidWZmZXIgaXMgaW5pdGlhbGx5IGVtcHR5LiAgKi8KLSsKLSt2b2lkCi0rYWxsb2NhdGVf cGF0dGVybl9idWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZiwgY2hhciAqKnBhdHRlcm5fYnVmX2Vu ZCwKLSsJCQkgVUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUpCi0rewotKyNkZWZpbmUgSU5JVElB TF9QQVRURVJOX0JVRl9TSVpFIDEwMAotKyAgKnBhdHRlcm5fYnVmX3NpemUgPSBJTklUSUFMX1BB VFRFUk5fQlVGX1NJWkU7Ci0rICAqcGF0dGVybl9idWYgPSB4bWFsbG9jICgqcGF0dGVybl9idWZf c2l6ZSk7Ci0rICAqcGF0dGVybl9idWZfZW5kID0gKnBhdHRlcm5fYnVmOwotK30KLSsKLSsvKiBH cm93cyAqUEFUVEVSTl9CVUYgYnkgYSBmYWN0b3Igb2YgdHdvIGlmIGl0J3Mgbm90IGxhcmdlIGVu b3VnaCB0byBob2xkCi0rICAgVkFMX0JZVEVTIG1vcmUgYnl0ZXMgIG9yIGEgNjQtYml0IHZhbHVl LCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgotKyAgICpQQVRURVJOX0JVRl9FTkQgaXMgdXBkYXRlZCBh cyBuZWNlc3NhcnkuICAqLwotKwotK3ZvaWQKLStpbmNyZWFzZV9wYXR0ZXJuX2J1ZmZlciAoY2hh ciAqKnBhdHRlcm5fYnVmLCBjaGFyICoqcGF0dGVybl9idWZfZW5kLAotKwkJCSBVTE9OR0VTVCAq cGF0dGVybl9idWZfc2l6ZSwgaW50IHZhbF9ieXRlcykKLSt7Ci0rICAgIC8qIEtlZXAgaXQgc2lt cGxlIGFuZCBhc3N1bWUgc2l6ZSA9PSAnZycgd2hlbiB3YXRjaGluZyBmb3Igd2hlbiB3ZQotKyAg ICAgICBuZWVkIHRvIGdyb3cgdGhlIHBhdHRlcm4gYnVmLiAgKi8KLSsgICAgaWYgKCgqcGF0dGVy bl9idWZfZW5kIC0gKnBhdHRlcm5fYnVmICsgbWF4ICh2YWxfYnl0ZXMsIHNpemVvZiAoaW50NjRf dCkpKQotKwk+ICpwYXR0ZXJuX2J1Zl9zaXplKQotKyAgICAgIHsKLSsJc2l6ZV90IGN1cnJlbnRf b2Zmc2V0ID0gKnBhdHRlcm5fYnVmX2VuZCAtICpwYXR0ZXJuX2J1ZjsKLSsKLSsJKnBhdHRlcm5f YnVmX3NpemUgKj0gMjsKLSsJKnBhdHRlcm5fYnVmID0geHJlYWxsb2MgKCpwYXR0ZXJuX2J1Ziwg KnBhdHRlcm5fYnVmX3NpemUpOwotKwkqcGF0dGVybl9idWZfZW5kID0gKnBhdHRlcm5fYnVmICsg Y3VycmVudF9vZmZzZXQ7Ci0rICAgICAgfQotK30KLSsKLSAvKiBTdWJyb3V0aW5lIG9mIGZpbmRf Y29tbWFuZCB0byBzaW1wbGlmeSBpdC4KLSAgICBQYXJzZSB0aGUgYXJndW1lbnRzIG9mIHRoZSAi ZmluZCIgY29tbWFuZC4gICovCi0gCi1AQCAtNjEsOCArOTYsNyBAQCBwYXJzZV9maW5kX2FyZ3Mg KGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291bnRwLAotICAgY2hhciAqcGF0dGVybl9idWY7 Ci0gICAvKiBDdXJyZW50IHNpemUgb2Ygc2VhcmNoIHBhdHRlcm4gYnVmZmVyLgotICAgICAgV2Ug cmVhbGxvYyBzcGFjZSBhcyBuZWVkZWQuICAqLwotLSNkZWZpbmUgSU5JVElBTF9QQVRURVJOX0JV Rl9TSVpFIDEwMAotLSAgVUxPTkdFU1QgcGF0dGVybl9idWZfc2l6ZSA9IElOSVRJQUxfUEFUVEVS Tl9CVUZfU0laRTsKLSsgIFVMT05HRVNUIHBhdHRlcm5fYnVmX3NpemU7Ci0gICAvKiBQb2ludGVy IHRvIG9uZSBwYXN0IHRoZSBsYXN0IGluLXVzZSBwYXJ0IG9mIHBhdHRlcm5fYnVmLiAgKi8KLSAg IGNoYXIgKnBhdHRlcm5fYnVmX2VuZDsKLSAgIFVMT05HRVNUIHBhdHRlcm5fbGVuOwotQEAgLTc1 LDggKzEwOSw3IEBAIHBhcnNlX2ZpbmRfYXJncyAoY2hhciAqYXJncywgVUxPTkdFU1QgKm1heF9j b3VudHAsCi0gICBpZiAoYXJncyA9PSBOVUxMKQotICAgICBlcnJvciAoXygiTWlzc2luZyBzZWFy Y2ggcGFyYW1ldGVycy4iKSk7Ci0gCi0tICBwYXR0ZXJuX2J1ZiA9IHhtYWxsb2MgKHBhdHRlcm5f YnVmX3NpemUpOwotLSAgcGF0dGVybl9idWZfZW5kID0gcGF0dGVybl9idWY7Ci0rICBhbGxvY2F0 ZV9wYXR0ZXJuX2J1ZmZlciAoJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9idWZfZW5kLCAmcGF0dGVy bl9idWZfc2l6ZSk7Ci0gICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVu dF9jb250ZW50cywgJnBhdHRlcm5fYnVmKTsKLSAKLSAgIC8qIEdldCBzZWFyY2ggZ3JhbnVsYXJp dHkgYW5kL29yIG1heCBjb3VudCBpZiBzcGVjaWZpZWQuCi1AQCAtMTc1LDE3ICsyMDgsOSBAQCBw YXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291bnRwLAotICAgICAg IHYgPSBwYXJzZV90b19jb21tYV9hbmRfZXZhbCAoJnMpOwotICAgICAgIHZhbF9ieXRlcyA9IFRZ UEVfTEVOR1RIICh2YWx1ZV90eXBlICh2KSk7Ci0gCi0tICAgICAgLyogS2VlcCBpdCBzaW1wbGUg YW5kIGFzc3VtZSBzaXplID09ICdnJyB3aGVuIHdhdGNoaW5nIGZvciB3aGVuIHdlCi0tCSBuZWVk IHRvIGdyb3cgdGhlIHBhdHRlcm4gYnVmLiAgKi8KLS0gICAgICBpZiAoKHBhdHRlcm5fYnVmX2Vu ZCAtIHBhdHRlcm5fYnVmICsgbWF4ICh2YWxfYnl0ZXMsIHNpemVvZiAoaW50NjRfdCkpKQotLQkg ID4gcGF0dGVybl9idWZfc2l6ZSkKLS0JewotLQkgIHNpemVfdCBjdXJyZW50X29mZnNldCA9IHBh dHRlcm5fYnVmX2VuZCAtIHBhdHRlcm5fYnVmOwotKyAgICAgIGluY3JlYXNlX3BhdHRlcm5fYnVm ZmVyICgmcGF0dGVybl9idWYsICZwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgICZwYXR0ZXJu X2J1Zl9zaXplLCB2YWxfYnl0ZXMpOwotIAotLQkgIHBhdHRlcm5fYnVmX3NpemUgKj0gMjsKLS0J ICBwYXR0ZXJuX2J1ZiA9IHhyZWFsbG9jIChwYXR0ZXJuX2J1ZiwgcGF0dGVybl9idWZfc2l6ZSk7 Ci0tCSAgcGF0dGVybl9idWZfZW5kID0gcGF0dGVybl9idWYgKyBjdXJyZW50X29mZnNldDsKLS0J fQotIAotICAgICAgIGlmIChzaXplICE9ICdcMCcpCi0gCXsKLUBAIC0yNDAsNiArMjY1LDQ1IEBA IHBhcnNlX2ZpbmRfYXJncyAoY2hhciAqYXJncywgVUxPTkdFU1QgKm1heF9jb3VudHAsCi0gICBk aXNjYXJkX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwotIH0KLSAKLSsvKiBEcml2ZXMgdGFyZ2V0 X3NlYXJjaF9tZW1vcnkgdG8gc3dlZXAgdGhyb3VnaCB0aGUgc3BlY2lmaWVkIHNlYXJjaCBzcGFj ZSwKLSsgICBwb3NzaWJseSBpbiBzZXZlcmFsIGl0ZXJhdGlvbnMgKHdpdGggb25lIGNhbGwgdG8g dGhpcyBmdW5jdGlvbiBmb3IgZWFjaAotKyAgIGl0ZXJhdGlvbikuICAqU1RBUlRfQUREUiBpcyB0 aGUgYWRkcmVzcyB3aGVyZSB0aGUgc2VhcmNoIHN0YXJ0cywgYW5kIGlzCi0rICAgdXBkYXRlZCB0 byB0aGUgbmV4dCBzdGFydGluZyBhZGRyZXNzIHRvIGNvbnRpbnVlIHRoZSBzZWFyY2guCi0rICAg KlNFQVJDSF9TUEFDRV9MRU4gaXMgdGhlIGFtb3VudCBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHNl YXJjaGVkLCBhbmQgaXMKLSsgICB1cGRhdGVkIGZvciB0aGUgbmV4dCBpdGVyYXRpb24uIFBBVFRF Uk5fQlVGIGhvbGRzIHRoZSBwYXR0ZXJuIHRvIGJlIHNlYXJjaGVkCi0rICAgZm9yLCBQQVRURVJO X0xFTiBpcyB0aGUgc2l6ZSBvZiB0aGUgcGF0dGVybiBpbiBieXRlcy4gIElmIGEgbWF0Y2ggaXMg Zm91bmQsCi0rICAgaXQncyBhZGRyZXNzIGlzIHB1dCBpbiAqRk9VTkRfQUREUi4KLSsKLSsgICBS ZXR1cm5zIDEgaWYgZm91bmQsIDAgaWYgbm90IGZvdW5kLCBhbmQgLTEgaWYgdGhlcmUgd2FzIGFu IGVycm9yIHJlcXVpcmluZwotKyAgIGhhbHRpbmcgb2YgdGhlIHNlYXJjaCAoZS5nLiBtZW1vcnkg cmVhZCBlcnJvcikuICAqLwotKwotK2ludAotK3NlYXJjaF9tZW1vcnkgKENPUkVfQUREUiAqc3Rh cnRfYWRkciwgVUxPTkdFU1QgKnNlYXJjaF9zcGFjZV9sZW4sCi0rCSAgICAgICBjb25zdCBjaGFy ICpwYXR0ZXJuX2J1ZiwgVUxPTkdFU1QgcGF0dGVybl9sZW4sCi0rCSAgICAgICBDT1JFX0FERFIg KmZvdW5kX2FkZHIpCi0rewotKyAgLyogT2Zmc2V0IGZyb20gc3RhcnQgb2YgdGhpcyBpdGVyYXRp b24gdG8gdGhlIG5leHQgaXRlcmF0aW9uLiAgKi8KLSsgIFVMT05HRVNUIG5leHRfaXRlcl9pbmNy OwotKyAgaW50IGZvdW5kOwotKyAgICAKLSsgIGZvdW5kID0gdGFyZ2V0X3NlYXJjaF9tZW1vcnkg KCpzdGFydF9hZGRyLCAqc2VhcmNoX3NwYWNlX2xlbiwKLSsJCQkJcGF0dGVybl9idWYsIHBhdHRl cm5fbGVuLCBmb3VuZF9hZGRyKTsKLSsgIGlmIChmb3VuZCA8PSAwKQotKyAgICByZXR1cm4gZm91 bmQ7Ci0rCi0rICAvKiBCZWdpbiBuZXh0IGl0ZXJhdGlvbiBhdCBvbmUgYnl0ZSBwYXN0IHRoaXMg bWF0Y2guICAqLwotKyAgbmV4dF9pdGVyX2luY3IgPSAoKmZvdW5kX2FkZHIgLSAqc3RhcnRfYWRk cikgKyAxOwotKwotKyAgLyogRm9yIHJvYnVzdG5lc3MsIHdlIGRvbid0IGxldCBzZWFyY2hfc3Bh Y2VfbGVuIGdvIC12ZSBoZXJlLiAgKi8KLSsgIGlmICgqc2VhcmNoX3NwYWNlX2xlbiA+PSBuZXh0 X2l0ZXJfaW5jcikKLSsgICAgKnNlYXJjaF9zcGFjZV9sZW4gLT0gbmV4dF9pdGVyX2luY3I7Ci0r ICBlbHNlCi0rICAgICpzZWFyY2hfc3BhY2VfbGVuID0gMDsKLSsgICpzdGFydF9hZGRyICs9IG5l eHRfaXRlcl9pbmNyOwotKwotKyAgcmV0dXJuIGZvdW5kOwotK30KLSsKLSBzdGF0aWMgdm9pZAot IGZpbmRfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotIHsKLUBAIC0yNzAsMTIg KzMzNCwxMSBAQCBmaW5kX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIHdo aWxlIChzZWFyY2hfc3BhY2VfbGVuID49IHBhdHRlcm5fbGVuCi0gCSAmJiBmb3VuZF9jb3VudCA8 IG1heF9jb3VudCkKLSAgICAgewotLSAgICAgIC8qIE9mZnNldCBmcm9tIHN0YXJ0IG9mIHRoaXMg aXRlcmF0aW9uIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gICovCi0tICAgICAgVUxPTkdFU1QgbmV4 dF9pdGVyX2luY3I7Ci0gICAgICAgQ09SRV9BRERSIGZvdW5kX2FkZHI7Ci0tICAgICAgaW50IGZv dW5kID0gdGFyZ2V0X3NlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIHNlYXJjaF9zcGFjZV9sZW4s Ci0tCQkJCQlwYXR0ZXJuX2J1ZiwgcGF0dGVybl9sZW4sICZmb3VuZF9hZGRyKTsKLSsgICAgICBp bnQgZm91bmQ7Ci0gCi0rICAgICAgZm91bmQgPSBzZWFyY2hfbWVtb3J5ICgmc3RhcnRfYWRkciwg JnNlYXJjaF9zcGFjZV9sZW4sIHBhdHRlcm5fYnVmLAotKwkJCSAgICAgcGF0dGVybl9sZW4sICZm b3VuZF9hZGRyKTsKLSAgICAgICBpZiAoZm91bmQgPD0gMCkKLSAJYnJlYWs7Ci0gCi1AQCAtMjgz LDE2ICszNDYsNiBAQCBmaW5kX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAg ICAgICBwcmludGZfZmlsdGVyZWQgKCJcbiIpOwotICAgICAgICsrZm91bmRfY291bnQ7Ci0gICAg ICAgbGFzdF9mb3VuZF9hZGRyID0gZm91bmRfYWRkcjsKLS0KLS0gICAgICAvKiBCZWdpbiBuZXh0 IGl0ZXJhdGlvbiBhdCBvbmUgYnl0ZSBwYXN0IHRoaXMgbWF0Y2guICAqLwotLSAgICAgIG5leHRf aXRlcl9pbmNyID0gKGZvdW5kX2FkZHIgLSBzdGFydF9hZGRyKSArIDE7Ci0tCi0tICAgICAgLyog Rm9yIHJvYnVzdG5lc3MsIHdlIGRvbid0IGxldCBzZWFyY2hfc3BhY2VfbGVuIGdvIC12ZSBoZXJl LiAgKi8KLS0gICAgICBpZiAoc2VhcmNoX3NwYWNlX2xlbiA+PSBuZXh0X2l0ZXJfaW5jcikKLS0J c2VhcmNoX3NwYWNlX2xlbiAtPSBuZXh0X2l0ZXJfaW5jcjsKLS0gICAgICBlbHNlCi0tCXNlYXJj aF9zcGFjZV9sZW4gPSAwOwotLSAgICAgIHN0YXJ0X2FkZHIgKz0gbmV4dF9pdGVyX2luY3I7Ci0g ICAgIH0KLSAKLSAgIC8qIFJlY29yZCBhbmQgcHJpbnQgdGhlIHJlc3VsdHMuICAqLwotZGlmZiAt LWdpdCBhL2dkYi9maW5kdmFyLmMgYi9nZGIvZmluZHZhci5jCi1pbmRleCBlMGNhMTJjLi5kZTYz MTFhIDEwMDY0NAotLS0tIGEvZ2RiL2ZpbmR2YXIuYwotKysrIGIvZ2RiL2ZpbmR2YXIuYwotQEAg LTM1LDYgKzM1LDcgQEAKLSAjaW5jbHVkZSAidXNlci1yZWdzLmgiCi0gI2luY2x1ZGUgImJsb2Nr LmgiCi0gI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotIAot IC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9u cyByZXR1cm4gYQotICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQg aW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCi1AQCAtNDAxLDI3ICs0MDIsMTYgQEAgc3ltYm9sX3Jl YWRfbmVlZHNfZnJhbWUgKHN0cnVjdCBzeW1ib2wgKnN5bSkKLSAvKiBHaXZlbiBhIHN0cnVjdCBz eW1ib2wgZm9yIGEgdmFyaWFibGUsCi0gICAgYW5kIGEgc3RhY2sgZnJhbWUgaWQsIHJlYWQgdGhl IHZhbHVlIG9mIHRoZSB2YXJpYWJsZQotICAgIGFuZCByZXR1cm4gYSAocG9pbnRlciB0byBhKSBz dHJ1Y3QgdmFsdWUgY29udGFpbmluZyB0aGUgdmFsdWUuIAotLSAgIElmIHRoZSB2YXJpYWJsZSBj YW5ub3QgYmUgZm91bmQsIHJldHVybiBhIHplcm8gcG9pbnRlci4gICovCi0rICAgSWYgdGhlIHZh cmlhYmxlIGNhbm5vdCBiZSBmb3VuZCwgcmV0dXJuIGEgemVybyBwb2ludGVyLgotKyAgIFdlIGhh dmUgdG8gZmlyc3QgZmluZCB0aGUgYWRkcmVzcyBvZiB0aGUgdmFyaWFibGUgYmVmb3JlIGFsbG9j YXRpbmcgc3RydWN0Ci0rICAgdmFsdWUgdG8gcmV0dXJuIGFzIGl0cyBzaXplIG1heSBkZXBlbmQg b24gRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBwb3NzaWJseQotKyAgIHVzZWQgYnkgaXRzIHR5 cGUuICAqLwotIAotIHN0cnVjdCB2YWx1ZSAqCi0gcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1i b2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLS0gIHN0cnVjdCB2YWx1ZSAq djsKLSAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7Ci0gICBDT1JFX0FE RFIgYWRkcjsKLS0gIGludCBsZW47Ci0tCi0tICBpZiAoU1lNQk9MX0NMQVNTICh2YXIpID09IExP Q19DT01QVVRFRAotLSAgICAgIHx8IFNZTUJPTF9DTEFTUyAodmFyKSA9PSBMT0NfUkVHSVNURVIp Ci0tICAgIC8qIFRoZXNlIGNhc2VzIGRvIG5vdCB1c2UgVi4gICovCi0tICAgIHYgPSBOVUxMOwot LSAgZWxzZQotLSAgICB7Ci0tICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLS0gICAg ICBWQUxVRV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OwkvKiBUaGUgbW9zdCBsaWtlbHkgcG9zc2li aWxpdHkuICAqLwotLSAgICB9Ci0tCi0tICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0g ICBpZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCi0gICAgIGdkYl9hc3NlcnQgKGZy YW1lKTsKLUBAIC00MjksMzMgKzQxOSw0MyBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJv bCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICBzd2l0Y2ggKFNZTUJPTF9DTEFT UyAodmFyKSkKLSAgICAgewotICAgICBjYXNlIExPQ19DT05TVDoKLS0gICAgICAvKiBQdXQgdGhl IGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCi0tICAgICAgc3RvcmVfc2lnbmVk X2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIGxlbiwKLS0JCQkgICAgZ2RiYXJjaF9i eXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBlKSksCi0tCQkJICAgIChMT05HRVNUKSBTWU1C T0xfVkFMVUUgKHZhcikpOwotLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7Ci0tICAg ICAgcmV0dXJuIHY7Ci0rICAgICAgewotKwkvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFy Z2V0IGZvcm1hdC4gICovCi0rCXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBl KTsKLSsJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSsJc3RvcmVfc2lnbmVkX2ludGVnZXIg KHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFRZUEVfTEVOR1RIICh0eXBlKSwKLSsJCQkgICAgICBn ZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKHR5cGUpKSwKLSsJCQkgICAgICAoTE9O R0VTVCkgU1lNQk9MX1ZBTFVFICh2YXIpKTsKLSsJcmV0dXJuIHY7Ci0rICAgICAgfQotIAotICAg ICBjYXNlIExPQ19MQUJFTDoKLS0gICAgICAvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFy Z2V0IGZvcm1hdC4gICovCi0tICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQotLQl7Ci0tCSAg Q09SRV9BRERSIGFkZHIKLS0JICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xf VkFMVUVfQUREUkVTUyAodmFyKSwKLS0JCQkJCVNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci0r ICAgICAgewotKwkvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICov Ci0rCXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsJVkFMVUVfTFZB TCAodikgPSBub3RfbHZhbDsKLSsJaWYgKG92ZXJsYXlfZGVidWdnaW5nKQotKwkgIHsKLSsJICAg IENPUkVfQUREUiBhZGRyCi0rCSAgICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1C T0xfVkFMVUVfQUREUkVTUyAodmFyKSwKLSsJCQkJCSAgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIp KTsKLSAKLS0JICBzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0 eXBlLCBhZGRyKTsKLS0JfQotLSAgICAgIGVsc2UKLS0Jc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFs dWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKLS0JCQkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVT UyAodmFyKSk7Ci0tICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICByZXR1 cm4gdjsKLSsJICAgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiks IHR5cGUsIGFkZHIpOwotKwkgIH0KLSsJZWxzZQotKwkgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZh bHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsCi0rCQkJCVNZTUJPTF9WQUxVRV9BRERSRVNTICh2 YXIpKTsKLSsJcmV0dXJuIHY7Ci0rICAgICAgfQotIAotICAgICBjYXNlIExPQ19DT05TVF9CWVRF UzoKLS0gICAgICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9C WVRFUyAodmFyKSwgbGVuKTsKLS0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotLSAg ICAgIHJldHVybiB2OwotKyAgICAgIHsKLSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFs dWUgKHR5cGUpOwotKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotKwltZW1jcHkgKHZhbHVl X2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwKLSsJCVRZUEVfTEVO R1RIICh0eXBlKSk7Ci0rCXJldHVybiB2OwotKyAgICAgIH0KLSAKLSAgICAgY2FzZSBMT0NfU1RB VElDOgotICAgICAgIGlmIChvdmVybGF5X2RlYnVnZ2luZykKLUBAIC00OTYsMTIgKzQ5NiwyMyBA QCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCi0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgTE9DX0JMT0NLOgotLSAgICAgIGlm IChvdmVybGF5X2RlYnVnZ2luZykKLS0Jc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIHN5bWJvbF9vdmVy bGF5ZWRfYWRkcmVzcwotLQkgIChCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIp KSwgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKSk7Ci0tICAgICAgZWxzZQotLQlzZXRfdmFsdWVf YWRkcmVzcyAodiwgQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSkpOwotLSAg ICAgIHJldHVybiB2OwotKyAgICAgIHsKLSsgICAgICAgIENPUkVfQUREUiBhZGRyOwotKwlzdHJ1 Y3QgdmFsdWUgKnY7Ci0rCi0rCWlmIChvdmVybGF5X2RlYnVnZ2luZykKLSsJICBhZGRyID0gc3lt Ym9sX292ZXJsYXllZF9hZGRyZXNzCi0rCSAgICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19W QUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci0rCWVsc2UKLSsJICBhZGRy ID0gQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSk7Ci0rCS8qIEFERFIgaXMg c2V0IGhlcmUgZm9yIEFMTE9DQVRFX1ZBTFVFJ3MgQ0hFQ0tfVFlQRURFRiBmb3IKLSsJICAgRFdf T1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCi0rCW9iamVjdF9hZGRyZXNzX3NldCAoYWRkcik7 Ci0rCXYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0rCVZBTFVFX0xWQUwgKHYpID0gbHZhbF9t ZW1vcnk7Ci0rCXNldF92YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsKLSsJcmV0dXJuIHY7Ci0rICAg ICAgfQotIAotICAgICBjYXNlIExPQ19SRUdJU1RFUjoKLSAgICAgY2FzZSBMT0NfUkVHUEFSTV9B RERSOgotQEAgLTUyMCw3ICs1MzEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gCSAgICAgIGVycm9yIChfKCJWYWx1ZSBv ZiByZWdpc3RlciB2YXJpYWJsZSBub3QgYXZhaWxhYmxlLiIpKTsKLSAKLSAJICAgIGFkZHIgPSB2 YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwpOwotLQkgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21l bW9yeTsKLSAJICB9Ci0gCWVsc2UKLSAJICB7Ci1AQCAtNTYzLDE4ICs1NzMsMzMgQEAgcmVhZF92 YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQot ICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIExPQ19PUFRJTUlaRURfT1VUOgotLSAgICAgIFZB TFVFX0xWQUwgKHYpID0gbm90X2x2YWw7Ci0tICAgICAgc2V0X3ZhbHVlX29wdGltaXplZF9vdXQg KHYsIDEpOwotLSAgICAgIHJldHVybiB2OwotKyAgICAgIHsKLSsgICAgICAgIHN0cnVjdCB2YWx1 ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsKLSsJVkFMVUVfTFZBTCAodikgPSBub3Rf bHZhbDsKLSsJc2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHYsIDEpOwotKwlyZXR1cm4gdjsKLSsg ICAgICB9Ci0gCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgZXJyb3IgKF8oIkNhbm5vdCBsb29rIHVw IHZhbHVlIG9mIGEgYm90Y2hlZCBzeW1ib2wuIikpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0g Ci0tICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7Ci0tICBzZXRfdmFsdWVfbGF6eSAodiwg MSk7Ci0tICByZXR1cm4gdjsKLSsgIHsKLSsgICAgc3RydWN0IHZhbHVlICp2OwotKwotKyAgICAv KiBBRERSIGlzIHNldCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENIRUNLX1RZUEVERUYgZm9y Ci0rICAgICAgIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MuICAqLwotKyAgICBvYmplY3RfYWRk cmVzc19zZXQgKGFkZHIpOwotKyAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKyAgICBW QUxVRV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OwotKyAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwg YWRkcik7Ci0rCi0rICAgIHNldF92YWx1ZV9sYXp5ICh2LCAxKTsKLSsKLSsgICAgcmV0dXJuIHY7 Ci0rICB9Ci0gfQotIAotIC8qIEluc3RhbGwgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciByZWdpc3Rl ciB2YWx1ZXMuICAqLwotQEAgLTYxMSwxMCArNjM2LDExIEBAIHN0cnVjdCB2YWx1ZSAqCi0gdmFs dWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9m cmFtZV9hcmNoIChmcmFtZSk7Ci0tICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190eXBlZGVm ICh0eXBlKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAKLS0gIGlmIChnZGJhcmNoX2NvbnZlcnRf cmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCi0rICB0eXBlID0gY2hlY2tfdHlw ZWRlZiAodHlwZSk7Ci0rCi0rICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFy Y2gsIHJlZ251bSwgdHlwZSkpCi0gICAgIHsKLSAgICAgICAvKiBUaGUgSVNBL0FCSSBuZWVkIHRv IHNvbWV0aGluZyB3ZWlyZCB3aGVuIG9idGFpbmluZyB0aGUKLSAgICAgICAgICBzcGVjaWZpZWQg dmFsdWUgZnJvbSB0aGlzIHJlZ2lzdGVyLiAgSXQgbWlnaHQgbmVlZCB0bwotQEAgLTYyOCw3ICs2 NTQsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251 bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAgIFZBTFVFX0ZSQU1FX0lEICh2KSA9 IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotICAgICAgIFZBTFVFX1JFR05VTSAodikgPSByZWdudW07 Ci0gICAgICAgZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAoZ2RiYXJjaCwKLS0JCQkJIGZyYW1l LCByZWdudW0sIHR5cGUxLCB2YWx1ZV9jb250ZW50c19yYXcgKHYpKTsKLSsJCQkJIGZyYW1lLCBy ZWdudW0sIHR5cGUsIHZhbHVlX2NvbnRlbnRzX3JhdyAodikpOwotICAgICB9Ci0gICBlbHNlCi0g ICAgIHsKLWRpZmYgLS1naXQgYS9nZGIvZ2RiY21kLmggYi9nZGIvZ2RiY21kLmgKLWluZGV4IDc4 MTUxZGQuLmRhMTE2ODYgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RiY21kLmgKLSsrKyBiL2dkYi9nZGJj bWQuaAotQEAgLTEyNCw2ICsxMjQsMTAgQEAgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpzZXRjaGVja2xpc3Q7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93 Y2hlY2tsaXN0OwotIAotKy8qIENoYWluIGNvbnRhaW5pbmcgYWxsIGRlZmluZWQgInNhdmUiIHN1 YmNvbW1hbmRzLiAgKi8KLSsKLStleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNhdmVf Y21kbGlzdDsKLSsKLSBleHRlcm4gdm9pZCBleGVjdXRlX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsK LSBleHRlcm4gY2hhciAqZXhlY3V0ZV9jb21tYW5kX3RvX3N0cmluZyAoY2hhciAqcCwgaW50IGZy b21fdHR5KTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZ2RiaW5pdC5pbiBiL2dkYi9nZGJpbml0Lmlu Ci1pbmRleCBmZmI3ZjUzLi5hMmU3ZTk0IDEwMDY0NAotLS0tIGEvZ2RiL2dkYmluaXQuaW4KLSsr KyBiL2dkYi9nZGJpbml0LmluCi1AQCAtMSw1ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRo ZSBlbnZpcm9ubWVudCBmb3IgZGVidWdnaW5nIGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRo b24gbGlicmFyeSBhbmQgInJlcXVpcmUiIGNvbW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRo IGltcG9ydCBhYnNwYXRoCi0rZ2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9u L2xpYicpCi0rZ2RiLnB5dGhvbmxpYmRpciA9IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0g W2dkYi5kYXRhZGlyICsgJy9nZGInXQotK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikK LStlbmQKLStzb3VyY2UgQHNyY2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKLSsKLSBz ZXQgY29tcGxhaW50cyAxCi0gCi0gYiBpbnRlcm5hbF9lcnJvcgotZGlmZiAtLWdpdCBhL2dkYi9n ZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQuaAotaW5kZXggY2QyNGVhZi4uOTYzODM2OCAxMDA2 NDQKLS0tLSBhL2dkYi9nZGJ0aHJlYWQuaAotKysrIGIvZ2RiL2dkYnRocmVhZC5oCi1AQCAtNjYs NiArNjYsOSBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFN0ZXAtcmVzdW1lIG9yIGxvbmdq bXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVz dW1lX2JyZWFrcG9pbnQ7Ci0gCi0rICAvKiBFeGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAq LwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKLSsK LSAgIC8qIFJhbmdlIHRvIHNpbmdsZSBzdGVwIHdpdGhpbi4KLSAKLSAgICAgIElmIHRoaXMgaXMg bm9uemVybywgcmVzcG9uZCB0byBhIHNpbmdsZS1zdGVwIHNpZ25hbCBieSBjb250aW51aW5nCi1A QCAtMTg1LDYgKzE4OCwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFRydWUgaWYgdGhp cyB0aHJlYWQgaGFzIGJlZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgdG8gc3RvcC4gICovCi0gICBp bnQgc3RvcF9yZXF1ZXN0ZWQ7Ci0gCi0rICAvKiBUaGUgaW5pdGlhdGluZyBmcmFtZSBvZiBhIG5l eHRpbmcgb3BlcmF0aW9uLCB1c2VkIGZvciBkZWNpZGluZwotKyAgICAgd2hpY2ggZXhjZXB0aW9u cyB0byBpbnRlcmNlcHQuICAqLwotKyAgc3RydWN0IGZyYW1lX2lkIGluaXRpYXRpbmdfZnJhbWU7 Ci0rCi0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1l bnRhdGlvbi4gICovCi0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKLSAK LUBAIC0yMjEsNiArMjI4LDkgQEAgZXh0ZXJuIHZvaWQgZGVsZXRlX3RocmVhZF9zaWxlbnQgKHB0 aWRfdCk7Ci0gLyogRGVsZXRlIGEgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRoZSB0aHJl YWQgZGF0YWJhc2UuICovCi0gZXh0ZXJuIHZvaWQgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9p bnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsKLSAKLSsvKiBEZWxldGUgYW4gZXhjZXB0aW9uX3Jl c3VtZV9icmVha3BvaW50IGZyb20gdGhlIHRocmVhZCBkYXRhYmFzZS4gKi8KLStleHRlcm4gdm9p ZCBkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8g Kik7Ci0rCi0gLyogVHJhbnNsYXRlIHRoZSBpbnRlZ2VyIHRocmVhZCBpZCAoR0RCJ3MgaG9tZWdy b3duIGlkLCBub3QgdGhlIHN5c3RlbSdzKQotICAgIGludG8gYSAicGlkIiAod2hpY2ggbWF5IGJl IG92ZXJsb2FkZWQgd2l0aCBleHRyYSB0aHJlYWQgaW5mb3JtYXRpb24pLiAgKi8KLSBleHRlcm4g cHRpZF90IHRocmVhZF9pZF90b19waWQgKGludCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVz LmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggNDQzZjZmNy4uZDg1MmExNCAxMDA2NDQKLS0tLSBh L2dkYi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTM5LDYgKzM5LDkgQEAK LSAjaW5jbHVkZSAiY3AtYWJpLmgiCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVk ZSAiaGFzaHRhYi5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotKyNpbmNsdWRlICJkd2FyZjJl eHByLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotIAotIAotIC8qIEZsb2F0Zm9ybWF0IHBh aXJzLiAgKi8KLUBAIC0xMjMsNiArMTI2LDExIEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBl cyAoc3RydWN0IGZpZWxkICosIGludCwgaW50KTsKLSBzdGF0aWMgdm9pZCBkdW1wX2ZuX2ZpZWxk bGlzdHMgKHN0cnVjdCB0eXBlICosIGludCk7Ci0gc3RhdGljIHZvaWQgcHJpbnRfY3BsdXNfc3R1 ZmYgKHN0cnVjdCB0eXBlICosIGludCk7Ci0gCi0rLyogVGhlIGhhc2ggdGFibGUgaG9sZGluZyBh bGwgZGlzY2FyZGFibGUgYHN0cnVjdCB0eXBlIConIHJlZmVyZW5jZXMuICAqLwotK3N0YXRpYyBo dGFiX3QgdHlwZV9kaXNjYXJkYWJsZV90YWJsZTsKLSsKLSsvKiBDdXJyZW50IHR5cGVfZGlzY2Fy ZGFibGVfY2hlY2sgcGFzcyB1c2VkIGZvciBUWVBFX0RJU0NBUkRBQkxFX0FHRS4gICovCi0rc3Rh dGljIGludCB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwotIAotIC8qIEFsbG9jYXRlIGEg bmV3IE9CSkZJTEUtYXNzb2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAotICAgIHdp dGggc29tZSBkZWZhdWx0cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2Nh dGVkCi1AQCAtMTUzLDYgKzE2MSwzOSBAQCBhbGxvY190eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKLSAgIHJldHVybiB0eXBlOwotIH0KLSAKLSsvKiBEZWNsYXJlIFRZUEUgYXMgZGlzY2Fy ZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMuCi0rICAg WW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90eXBlcyB0 byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK3NldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7 Ci0rICB2b2lkICoqc2xvdDsKLSsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX0RJU0NBUkRBQkxFICh0 eXBlKSk7Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7Ci0rICBUWVBFX0RJU0NB UkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwotKwotKyAg c2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCB0eXBlLCBJTlNF UlQpOwotKyAgZ2RiX2Fzc2VydCAoISpzbG90KTsKLSsgICpzbG90ID0gdHlwZTsKLSt9Ci0rCi0r LyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUgYnV0IHByZXNlcnZlIGZvciBp dCB0aGUgZGlzY2FyZGFiaWxpdHkKLSsgICBzdGF0ZSBvZiBQQVJFTlRfVFlQRS4gICovCi0rCi0r c3RhdGljIHN0cnVjdCB0eXBlICoKLSthbGxvY190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUg KnBhcmVudF90eXBlKQotK3sKLSsgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVf Y29weSAocGFyZW50X3R5cGUpOwotKwotKyAgaWYgKFRZUEVfRElTQ0FSREFCTEUgKHBhcmVudF90 eXBlKSkKLSsgICAgc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190eXBlKTsKLSsKLSsgIHJl dHVybiBuZXdfdHlwZTsKLSt9Ci0rCi0gLyogQWxsb2NhdGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lh dGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0Ci0gICAgd2l0aCBzb21lIGRlZmF1bHRzLiAg U3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLSAgICBvbiB0aGUgaGVh cC4gICovCi1AQCAtMjc4LDcgKzMxOSw3IEBAIG1ha2VfcG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5cGVwdHIgPT0gMCB8 fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCi0gICAg IHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAgICAgbnR5cGUg PSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVwdHIpCi0gCSp0 eXBlcHRyID0gbnR5cGU7Ci0gICAgIH0KLUBAIC0zNTUsNyArMzk2LDcgQEAgbWFrZV9yZWZlcmVu Y2VfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKLSAKLSAg IGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxv Y2F0ZSBvbmUuICAqLwotICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5 cGUpOwotKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOwotICAgICAg IGlmICh0eXBlcHRyKQotIAkqdHlwZXB0ciA9IG50eXBlOwotICAgICB9Ci1AQCAtNzI2LDYgKzc2 Nyw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVj dCB0eXBlICppbmRleF90eXBlLAotICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVv ZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwotICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBl KSA9IGxvd19ib3VuZDsKLSAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9i b3VuZDsKLSsgIFRZUEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7Ci0gCi0gICBpZiAo bG93X2JvdW5kID49IDApCi0gICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1A QCAtODI1LDI2ICs4NjcsNDUgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1 bHRfdHlwZSwKLSAKLSAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZ OwotICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOwotLSAg aWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2Jv dW5kKSA8IDApCi0tICAgIGxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOwotLSAgQ0hFQ0tfVFlQ RURFRiAoZWxlbWVudF90eXBlKTsKLS0gIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBh cnJheSBsZW5ndGguICBBZGEgYXJyYXlzIGNhbiBiZQotLSAgICAgZW1wdHkgYXJyYXlzIHdpdGgg dGhlIGhpZ2hfYm91bmQgYmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCi0tICAgICBJ biBzdWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KLS0gIGlm IChoaWdoX2JvdW5kIDwgbG93X2JvdW5kKQotLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUp ID0gMDsKLS0gIGVsc2UKLS0gICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0tICAgICAg VFlQRV9MRU5HVEggKGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEp OwotICAgVFlQRV9ORklFTERTIChyZXN1bHRfdHlwZSkgPSAxOwotICAgVFlQRV9GSUVMRFMgKHJl c3VsdF90eXBlKSA9Ci0gICAgIChzdHJ1Y3QgZmllbGQgKikgVFlQRV9aQUxMT0MgKHJlc3VsdF90 eXBlLCBzaXplb2YgKHN0cnVjdCBmaWVsZCkpOwotICAgVFlQRV9JTkRFWF9UWVBFIChyZXN1bHRf dHlwZSkgPSByYW5nZV90eXBlOwotICAgVFlQRV9WUFRSX0ZJRUxETk8gKHJlc3VsdF90eXBlKSA9 IC0xOwotIAotLSAgLyogVFlQRV9GTEFHX1RBUkdFVF9TVFVCIHdpbGwgdGFrZSBjYXJlIG9mIHpl cm8gbGVuZ3RoIGFycmF5cyAqLwotKyAgLyogRFdBUkYgYmxvY2tzIG1heSBkZXBlbmQgb24gcnVu dGltZSBpbmZvcm1hdGlvbiBsaWtlCi0rICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIG5v dCBiZWluZyBhdmFpbGFibGUgZHVyaW5nIHRoZQotKyAgICAgQ1JFQVRFX0FSUkFZX1RZUEUgdGlt ZS4gICovCi0rICBpZiAoVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgIT0g UkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZUEVfUkFOR0VfREFUQSAocmFu Z2VfdHlwZSktPmhpZ2gua2luZCAhPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UCi0rICAgICAg fHwgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKLSsgICAgICB8fCBUWVBF X0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKLSsgICAgICB8fCBnZXRfZGlzY3Jl dGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQotKyAg ICB7Ci0rICAgICAgbG93X2JvdW5kID0gMDsKLSsgICAgICBoaWdoX2JvdW5kID0gLTE7Ci0rICAg IH0KLSsKLSsgIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBB ZGEgYXJyYXlzIGNhbiBiZQotKyAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQg YmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCi0rICAgICBJbiBzdWNoIGNhc2VzLCB0 aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgVFlQRV9UQVJHRVRfU1RVQiBuZWVkcyB0 bwotKyAgICAgYmUgY2hlY2tlZCBhcyBpdCBtYXkgaGF2ZSBkZXBlbmRlbmNpZXMgb24gRFdBUkYg YmxvY2tzIGRlcGVuZGluZyBvbgotKyAgICAgcnVudGltZSBpbmZvcm1hdGlvbiBub3QgYXZhaWxh YmxlIGR1cmluZyB0aGUgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4gICovCi0rICBpZiAoaGlnaF9i b3VuZCA8IGxvd19ib3VuZCB8fCBUWVBFX1RBUkdFVF9TVFVCIChlbGVtZW50X3R5cGUpKQotKyAg ICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gMDsKLSsgIGVsc2UKLSsgICAgewotKyAgICAg IENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7Ci0rICAgICAgVFlQRV9MRU5HVEggKHJlc3Vs dF90eXBlKSA9Ci0rCVRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBs b3dfYm91bmQgKyAxKTsKLSsgICAgfQotKwotICAgaWYgKFRZUEVfTEVOR1RIIChyZXN1bHRfdHlw ZSkgPT0gMCkKLS0gICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKLSsgICAg ewotKyAgICAgIC8qIFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBmb3Igc3BlY2lmaWMg aW5zdGFuY2VzIGJ5Ci0rCSBDSEVDS19UWVBFREVGLiAgKi8KLSsgICAgICBUWVBFX1RBUkdFVF9T VFVCIChyZXN1bHRfdHlwZSkgPSAxOwotKyAgICB9Ci0gCi0gICByZXR1cm4gcmVzdWx0X3R5cGU7 Ci0gfQotQEAgLTEzNTMsNiArMTQxNCwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxhaW50ICh2b2lk KQotICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJzdHViIHR5cGUgaGFzIE5V TEwgbmFtZSIpKTsKLSB9Ci0gCi0rLyogQ2FsY3VsYXRlIHRoZSBtZW1vcnkgbGVuZ3RoIG9mIGFy cmF5IFRZUEUuCi0rCi0rICAgVEFSR0VUX1RZUEUgc2hvdWxkIGJlIHNldCB0byBgY2hlY2tfdHlw ZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpJyBhcwotKyAgIGEgcGVyZm9ybWFuY2UgaGlu dC4gIEZlZWwgZnJlZSB0byBwYXNzIE5VTEwuICBTZXQgRlVMTF9TUEFOIHRvIHJldHVybiB0aGUK LSsgICBzaXplIGluY2wuIHRoZSBwb3NzaWJsZSBwYWRkaW5nIG9mIHRoZSBsYXN0IGVsZW1lbnQg LSBpdCBtYXkgZGlmZmVyIGZyb20gdGhlCi0rICAgY2xlYXJlZCBGVUxMX1NQQU4gcmV0dXJuIHZh bHVlICh0aGUgZXhwZWN0ZWQgU0laRU9GKSBmb3Igbm9uLXplcm8KLSsgICBUWVBFX0JZVEVfU1RS SURFIHZhbHVlcy4gICovCi0rCi0rc3RhdGljIExPTkdFU1QKLSt0eXBlX2xlbmd0aF9nZXQgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUsIGludCBmdWxsX3NwYW4p Ci0rewotKyAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7Ci0rICBMT05HRVNUIGJ5dGVfc3RyaWRl ID0gMDsJLyogYD0gMCcgZm9yIGEgZmFsc2UgR0NDIHdhcm5pbmcuICAqLwotKyAgTE9OR0VTVCBj b3VudCwgZWxlbWVudF9zaXplLCByZXR2YWw7Ci0rCi0rICBpZiAoVFlQRV9DT0RFICh0eXBlKSAh PSBUWVBFX0NPREVfQVJSQVkKLSsgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09E RV9TVFJJTkcpCi0rICAgIHJldHVybiBUWVBFX0xFTkdUSCAodHlwZSk7Ci0rCi0rICAvKiBBdm9p ZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5EIGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFz c29jaWF0ZWQpCi0rICAgICBGb3J0cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxs IG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4gYmUKLSsgICAgIHplcm8tbGVuZ3RoLiAgKi8KLSsg IGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSkpCi0rICAgIHJldHVybiAw OwotKwotKyAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7Ci0rICBpZiAoVFlQ RV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKQotKyAgICAgIHx8IFRZUEVfSElHSF9C T1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpKQotKyAgICByZXR1cm4gMDsKLSsgIGNvdW50ID0g VFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBl KSArIDE7Ci0rICAvKiBJdCBtYXkgaGFwcGVuIGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyBy ZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAgKi8KLSsgIGlmIChjb3VudCA8IDApCi0rICAgIHdhcm5p bmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZhbGlkIGJvdW5kcyAlcy4uJXMiKSwKLSsJ ICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9uZ2VzdCAoVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5 cGUpKSwKLSsJICAgICBwbG9uZ2VzdCAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSkpOwot KyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGNvdW50ID09IDAgcmlnaHQuICAq LwotKyAgaWYgKGNvdW50IDw9IDApCi0rICAgIHJldHVybiAwOwotKyAgaWYgKGZ1bGxfc3BhbiB8 fCBjb3VudCA+IDEpCi0rICAgIHsKLSsgICAgICAvKiBXZSBkbyBub3QgdXNlIFRZUEVfQVJSQVlf QllURV9TVFJJREVfVkFMVUUgKHR5cGUpIGhlcmUgYXMgd2Ugd2FudCB0bwotKyAgICAgICAgIGZv cmNlIEZVTExfU1BBTiB0byAxLiAgKi8KLSsgICAgICBieXRlX3N0cmlkZSA9IFRZUEVfQllURV9T VFJJREUgKHJhbmdlX3R5cGUpOwotKyAgICAgIGlmIChieXRlX3N0cmlkZSA9PSAwKQotKyAgICAg ICAgewotKwkgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQotKwkgICAgdGFyZ2V0X3R5cGUgPSBj aGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rCSAgYnl0ZV9zdHJpZGUg PSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsJfQotKyAgICB9Ci0r Ci0rICAvKiBGb3Igbm93LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGgg dG8gYmUgMCBpZiBpdHMgbGVuZ3RoCi0rICAgICBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUg YmVsb3cgYXNzdW1lcyB0aGF0IGZvciB4IDwgMCwKLSsgICAgIChVTE9OR0VTVCkgeCA9PSAteCAr IFVMT05HRVNUX01BWCArIDEsIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkCi0r ICAgICBieSBDLCBidXQgaXMgdXN1YWxseSB0cnVlIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUg aWYgeCB3ZXJlIHVuc2lnbmVkCi0rICAgICB3aXRoIGl0cyBoaWdoLW9yZGVyIGJpdCBvbikuIEl0 IHVzZXMgdGhlIGZhY3QgdGhhdCBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcwotKyAgICAgYWx3YXlz IHJlcHJlc2VudGFibGUgaW4gVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91 bmQrMQotKyAgICAgb3ZlcmZsb3dzLCBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdl IHRoZXNlIHRlc3RzIGlmIHdlIGRlY2lkZSB0bwotKyAgICAgaW5jcmVhc2UgdGhlIHJlcHJlc2Vu dGF0aW9uIG9mIFRZUEVfTEVOR1RIIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULgotKyAg ICAgKi8KLSsKLSsgIGlmIChmdWxsX3NwYW4pCi0rICAgIHsKLSsgICAgICByZXR2YWwgPSBjb3Vu dCAqIGJ5dGVfc3RyaWRlOwotKyAgICAgIGlmIChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50 ICE9IGJ5dGVfc3RyaWRlIHx8IHJldHZhbCA+IFVJTlRfTUFYKQotKwlyZXR2YWwgPSAwOwotKyAg ICAgIHJldHVybiByZXR2YWw7Ci0rICAgIH0KLSsgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQot KyAgICB0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsKLSsgIGVsZW1lbnRfc2l6ZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEws IDEpOwotKyAgcmV0dmFsID0gKGNvdW50IC0gMSkgKiBieXRlX3N0cmlkZSArIGVsZW1lbnRfc2l6 ZTsKLSsgIGlmIChyZXR2YWwgPCBlbGVtZW50X3NpemUKLSsgICAgICB8fCAoYnl0ZV9zdHJpZGUg IT0gMAotKyAgICAgICAgICAmJiAocmV0dmFsIC0gZWxlbWVudF9zaXplKSAvIGJ5dGVfc3RyaWRl ICE9IGNvdW50IC0gMSkKLSsgICAgICB8fCByZXR2YWwgPiBVSU5UX01BWCkKLSsgICAgcmV0dmFs ID0gMDsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKy8qIFByZXBhcmUgVFlQRSBhZnRlciBi ZWluZyByZWFkIGluIGJ5IHRoZSBiYWNrZW5kLiAgQ3VycmVudGx5IHRoaXMgZnVuY3Rpb24KLSsg ICBvbmx5IHByb3BhZ2F0ZXMgdGhlIFRZUEVfRFlOQU1JQyBmbGFnLiAgKi8KLSsKLSt2b2lkCi0r ZmluYWxpemVfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAgaW50IGk7Ci0rCi0rICBm b3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgKytpKQotKyAgICBpZiAoVFlQRV9G SUVMRF9UWVBFICh0eXBlLCBpKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfRklFTERfVFlQRSAodHlw ZSwgaSkpKQotKyAgICAgIGJyZWFrOwotKwotKyAgLyogRklYTUU6IGNwbHVzX3N0dWZmIGlzIGln bm9yZWQgaGVyZS4gICovCi0rICBpZiAoaSA8IFRZUEVfTkZJRUxEUyAodHlwZSkKLSsgICAgICB8 fCAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVlBUUl9C QVNFVFlQRSAodHlwZSkpKQotKyAgICAgIHx8IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSAmJiBU WVBFX0RZTkFNSUMgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkpCi0rICAgIFRZUEVfRFlOQU1J QyAodHlwZSkgPSAxOwotK30KLSsKLSAvKiBBZGRlZCBieSBCcnlhbiBCb3JlaGFtLCBLZXdpbGws IFN1biBTZXAgMTcgMTg6MDc6MTcgMTk4OS4KLSAKLSAgICBJZiB0aGlzIGlzIGEgc3R1YmJlZCBz dHJ1Y3QgKGkuZS4gZGVjbGFyZWQgYXMgc3RydWN0IGZvbyAqKSwgc2VlIGlmCi1AQCAtMTQ4Niw1 MiArMTY0NiwzNiBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgICAg IH0KLSAgICAgfQotIAotLSAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpKQotKyAgLyogY29w eV90eXBlX3JlY3Vyc2l2ZSBhdXRvbWF0aWNhbGx5IG1ha2VzIHRoZSByZXN1bHRpbmcgdHlwZSBj b250YWluaW5nIG9ubHkKLSsgICAgIGNvbnN0YW50IHZhbHVlcyBleHBlY3RlZCBieSB0aGUgY2Fs bGVycyBvZiB0aGlzIGZ1bmN0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQot KyAgICB7Ci0rICAgICAgaHRhYl90IGNvcGllZF90eXBlczsKLSsgICAgICBzdHJ1Y3QgdHlwZSAq dHlwZV9vbGQgPSB0eXBlOwotKwotKyAgICAgIGNvcGllZF90eXBlcyA9IGNyZWF0ZV9jb3BpZWRf dHlwZXNfaGFzaCAoTlVMTCk7Ci0rICAgICAgdHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHR5 cGUsIGNvcGllZF90eXBlcyk7Ci0rICAgICAgaHRhYl9kZWxldGUgKGNvcGllZF90eXBlcyk7Ci0r Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EWU5BTUlDICh0eXBlKSA9PSAwKTsKLSsgICAgfQot KwotKyAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpIHx8IFRZUEVfRFlOQU1JQyAodHlwZSkp Ci0gICAgIHsKLS0gICAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKLSAgICAgICBzdHJ1Y3Qg dHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSk7Ci0gCi0rICAgICAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCi0rCVRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpID0gdGFyZ2V0X3R5cGU7Ci0gICAgICAgaWYgKFRZUEVfU1RVQiAodGFyZ2V0X3R5 cGUpIHx8IFRZUEVfVEFSR0VUX1NUVUIgKHRhcmdldF90eXBlKSkKLSAJewotIAkgIC8qIEVtcHR5 LiAgKi8KLSAJfQotICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X0FSUkFZCi0tCSAgICAgICAmJiBUWVBFX05GSUVMRFMgKHR5cGUpID09IDEKLS0JICAgICAgICYm IChUWVBFX0NPREUgKHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpKQotLQkJICAg PT0gVFlQRV9DT0RFX1JBTkdFKSkKLSsJICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX1NUUklORykKLSAJewotIAkgIC8qIE5vdyByZWNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0 aGUgYXJyYXkgdHlwZSwgYmFzZWQgb24gaXRzCi0tCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFu ZCB0aGUgdGFyZ2V0IHR5cGUncyBsZW5ndGguCi0tCSAgICAgV2F0Y2ggb3V0IGZvciBBZGEgbnVs bCBBZGEgYXJyYXlzIHdoZXJlIHRoZSBoaWdoIGJvdW5kCi0tCSAgICAgaXMgc21hbGxlciB0aGFu IHRoZSBsb3cgYm91bmQuICovCi0tCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xP V19CT1VORCAocmFuZ2VfdHlwZSk7Ci0tCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQ RV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKTsKLS0JICBVTE9OR0VTVCBsZW47Ci0tCi0tCSAgaWYg KGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCi0tCSAgICBsZW4gPSAwOwotLQkgIGVsc2UKLS0JICAg IHsKLS0JICAgICAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkg bGVuZ3RoIHRvIGJlIDAKLS0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUg Y29kZSBiZWxvdyBhc3N1bWVzCi0tCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAt eCArIFVMT05HRVNUX01BWCArIDEsCi0tCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJh bnRlZWQgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZQotLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJl IHRydWUgaWYgeCB3ZXJlIHVuc2lnbmVkIHdpdGggaXRzCi0tCQkgaGlnaC1vcmRlciBiaXQgb24p LiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQKLS0JCSBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcyBhbHdh eXMgcmVwcmVzZW50YWJsZSBpbgotLQkJIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQt bG93X2JvdW5kKzEgb3ZlcmZsb3dzLAotLQkJIGl0IG92ZXJmbG93cyB0byAwLiAgV2UgbXVzdCBj aGFuZ2UgdGhlc2UgdGVzdHMgaWYgd2UgCi0tCQkgZGVjaWRlIHRvIGluY3JlYXNlIHRoZSByZXBy ZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSAotLQkJIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05H RVNULiAqLwotLQkgICAgICBVTE9OR0VTVCB1bG93ID0gbG93X2JvdW5kLCB1aGlnaCA9IGhpZ2hf Ym91bmQ7Ci0tCSAgICAgIFVMT05HRVNUIHRsZW4gPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUp OwotLQotLQkgICAgICBsZW4gPSB0bGVuICogKHVoaWdoIC0gdWxvdyArIDEpOwotLQkgICAgICBp ZiAodGxlbiA9PSAwIHx8IChsZW4gLyB0bGVuIC0gMSArIHVsb3cpICE9IHVoaWdoIAotLQkJICB8 fCBsZW4gPiBVSU5UX01BWCkKLS0JCWxlbiA9IDA7Ci0tCSAgICB9Ci0tCSAgVFlQRV9MRU5HVEgg KHR5cGUpID0gbGVuOwotKwkgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0 eXBlJ3MgbGVuZ3RoLiAgKi8KLSsJICBUWVBFX0xFTkdUSCAodHlwZSkgPSB0eXBlX2xlbmd0aF9n ZXQgKHR5cGUsIHRhcmdldF90eXBlLCAwKTsKLSAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9 IDA7Ci0gCX0KLSAgICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9S QU5HRSkKLUBAIC0xNTM5LDkgKzE2ODMsMTIgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUg KnR5cGUpCi0gCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBl KTsKLSAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7Ci0gCX0KLSsgICAgICBUWVBFX0RZ TkFNSUMgKHR5cGUpID0gMDsKLSAgICAgfQotKwotICAgLyogQ2FjaGUgVFlQRV9MRU5HVEggZm9y IGZ1dHVyZSB1c2UuICAqLwotICAgVFlQRV9MRU5HVEggKG9yaWdfdHlwZSkgPSBUWVBFX0xFTkdU SCAodHlwZSk7Ci0rCi0gICByZXR1cm4gdHlwZTsKLSB9Ci0gCi1AQCAtMTgxMSw2ICsxOTU4LDgg QEAgaW5pdF90eXBlIChlbnVtIHR5cGVfY29kZSBjb2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3Ms Ci0gICAgIFRZUEVfTk9UVEVYVCAodHlwZSkgPSAxOwotICAgaWYgKGZsYWdzICYgVFlQRV9GTEFH X0ZJWEVEX0lOU1RBTkNFKQotICAgICBUWVBFX0ZJWEVEX0lOU1RBTkNFICh0eXBlKSA9IDE7Ci0r ICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfR05VX0lGVU5DKQotKyAgICBUWVBFX0dOVV9JRlVOQyAo dHlwZSkgPSAxOwotIAotICAgaWYgKG5hbWUpCi0gICAgIFRZUEVfTkFNRSAodHlwZSkgPSBvYnNh dmVzdHJpbmcgKG5hbWUsIHN0cmxlbiAobmFtZSksCi1AQCAtMzAwNiwzMyArMzE1NSw0MiBAQCB0 eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykK LSB9Ci0gCi0gLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVj dXJzaXZlIHRvIHdhbGsKLS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JK RklMRSdzIG9ic3RhY2ssIGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0 ZWQuICAqLwotKyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJfdAot IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewot LSAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9w YWlyX2VxLAotLQkJCSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJ CSAgICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29ic3Rh Y2tfZGVhbGxvY2F0ZSk7Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAg LyogTlVMTCBPQkpGSUxFIGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWlu ZWQgaW4KLSsJIE9CSkZJTEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVF X0hJU1RPUllfQ0hBSU4uICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQg YnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRl ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsgIGVs c2UKLSsgICAgewotKyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpG SUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdl dCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJu IGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAot KwkJCQkgICB4ZnJlZSwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFzaHRh Yl9vYnN0YWNrX2FsbG9jYXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwot KyAgICB9Ci0gfQotIAotLS8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRSwgaWYg aXQgaXMgYXNzb2NpYXRlZCB3aXRoCi0tICAgT0JKRklMRS4gIFJldHVybiBhIG5ldyB0eXBlIGFs bG9jYXRlZCB1c2luZyBtYWxsb2MsIGEgc2F2ZWQgdHlwZSBpZgotLSAgIHdlIGhhdmUgYWxyZWFk eSB2aXNpdGVkIFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyksIG9yIFRZUEUgaWYgaXQgaXMKLS0g ICBub3QgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLwotKy8qIEEgaGVscGVyIGZvciBjb3B5 X3R5cGVfcmVjdXJzaXZlLiAgVGhpcyBkb2VzIGFsbCB0aGUgd29yay4gIE9CSkZJTEUgaXMgdXNl ZAotKyAgIG9ubHkgZm9yIGFuIGFzc2VydGlvbiBjaGVja2luZy4gICovCi0gCi0tc3RydWN0IHR5 cGUgKgotLWNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKLS0J CSAgICAgc3RydWN0IHR5cGUgKnR5cGUsCi0tCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCi0r c3RhdGljIHN0cnVjdCB0eXBlICoKLStjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCAKLSsJCSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgICBo dGFiX3QgY29waWVkX3R5cGVzKQotIHsKLSAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0b3JlZCwgcGFp cjsKLSAgIHZvaWQgKipzbG90OwotICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwotIAotLSAgaWYg KCEgVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JKRklMRV9PV05F RCAodHlwZSkgJiYgIVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0eXBlOwotIAot ICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3Ro ZXIgb2JqZmlsZXM7Ci1AQCAtMzA0Nyw4ICszMjA1LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2gg KGdldF90eXBlX2FyY2ggKHR5cGUpKTsKLSAKLSAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlw ZSB0byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQotLSAgICAgd2UgZW5jb3Vu dGVyIHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gICovCi0t ICBzdG9yZWQgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXpl b2YgKHN0cnVjdCB0eXBlX3BhaXIpKTsKLSsgICAgIHdlIGVuY291bnRlciB0aGlzIHR5cGUgYWdh aW4gZHVyaW5nIGEgcmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQKLSsgICAgIGJl IGFsbG9jYXRlZCBmcm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSByZW1vdmluZyBP QkpGSUxFLCB0aGlzCi0rICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4ZnJlZSBpcyBj YWxsZWQgZm9yIGl0IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KLSsgIHN0b3JlZCA9IHhtYWxsb2Mg KHNpemVvZiAoKnN0b3JlZCkpOwotICAgc3RvcmVkLT5vbGQgPSB0eXBlOwotICAgc3RvcmVkLT5u ZXcgPSBuZXdfdHlwZTsKLSAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMwNTksNiArMzIxOSwxOSBA QCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIFRZUEVf T0JKRklMRV9PV05FRCAobmV3X3R5cGUpID0gMDsKLSAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5n ZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7Ci0gCi0rICAvKiBUWVBFX01BSU5fVFlQRSBt ZW1vcnkgY29weSBhYm92ZSByZXdyb3RlIHRoZSBUWVBFX0RJU0NBUkRBQkxFIGZsYWcgc28gd2UK LSsgICAgIG5lZWQgdG8gaW5pdGlhbGl6ZSBpdCBhZ2Fpbi4gIEFuZCBldmVuIGlmIFRZUEUgd2Fz IGFscmVhZHkgZGlzY2FyZGFibGUKLSsgICAgIE5FV19UWVBFIHNvIGZhciBpcyBub3QgcmVnaXN0 ZXJlZCBpbiBUWVBFX0RJU0NBUkRBQkxFX1RBQkxFLiAgKi8KLSsgIFRZUEVfRElTQ0FSREFCTEUg KG5ld190eXBlKSA9IDA7Ci0rICBzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAobmV3X3R5cGUpOwot KwotKyAgLyogUHJlLWNsZWFyIHRoZSBmaWVsZHMgcHJvY2Vzc2VkIGJ5IGRlbGV0ZV9tYWluX3R5 cGUuICBJZiBEV0FSRiBibG9jawotKyAgICAgZXZhbHVhdGlvbnMgYmVsb3cgY2FsbCBlcnJvciB3 ZSB3b3VsZCBsZWF2ZSBhbiB1bmZyZWVhYmxlIFRZUEUuICAqLwotKyAgVFlQRV9UQVJHRVRfVFlQ RSAobmV3X3R5cGUpID0gTlVMTDsKLSsgIFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUpID0g TlVMTDsKLSsgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0gMDsKLSsgIFRZUEVfRklFTERTIChu ZXdfdHlwZSkgPSBOVUxMOwotKwotICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCi0gICAgIFRZUEVf TkFNRSAobmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7Ci0gICBpZiAoVFlQ RV9UQUdfTkFNRSAodHlwZSkpCi1AQCAtMzA2NywxMiArMzI0MCw0OCBAQCBjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIFRZUEVfSU5TVEFOQ0VfRkxBR1Mg KG5ld190eXBlKSA9IFRZUEVfSU5TVEFOQ0VfRkxBR1MgKHR5cGUpOwotICAgVFlQRV9MRU5HVEgg KG5ld190eXBlKSA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSsgIGlmIChUWVBFX0FMTE9DQVRF RCAobmV3X3R5cGUpKQotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9D QVRFRCAobmV3X3R5cGUpKTsKLSsKLSsgICAgICBpZiAoIWR3YXJmX2xvY2V4cHJfYmF0b25fZXZh bCAoVFlQRV9BTExPQ0FURUQgKG5ld190eXBlKSkpCi0rICAgICAgICBUWVBFX05PVF9BTExPQ0FU RUQgKG5ld190eXBlKSA9IDE7Ci0rICAgICAgVFlQRV9BTExPQ0FURUQgKG5ld190eXBlKSA9IE5V TEw7Ci0rICAgIH0KLSsKLSsgIGlmIChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkKLSsgICAg ewotKyAgICAgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpOwot KwotKyAgICAgIGlmICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FTU09DSUFURUQg KG5ld190eXBlKSkpCi0rICAgICAgICBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSAx OwotKyAgICAgIFRZUEVfQVNTT0NJQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKLSsgICAgfQotKwot KyAgaWYgKCFUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAobmV3X3R5cGUpCi0rICAgICAgJiYg VFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkpCi0rICAgIHsKLSsgICAg ICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKLSsgICAgICAgICAgfHwgVFlQRV9O T1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpKQotKwlUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxP Q0sgKG5ld190eXBlKSA9IE5VTEw7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgVFlQRV9EQVRBX0xP Q0FUSU9OX0lTX0FERFIgKG5ld190eXBlKSA9IDE7Ci0rCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FE RFIgKG5ld190eXBlKSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAotKwkJCQkgICAgKFRZUEVf REFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpKTsKLSsJfQotKyAgICB9Ci0rCi0g ICAvKiBDb3B5IHRoZSBmaWVsZHMuICAqLwotICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0g ICAgIHsKLSAgICAgICBpbnQgaSwgbmZpZWxkczsKLSAKLSsgICAgICAvKiBUWVBFX0NPREVfUkFO R0UgdXNlcyBUWVBFX1JBTkdFX0RBVEEgb2YgdGhlIHVuaW9uIHdpdGggVFlQRV9GSUVMRFMuICAq LwotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdF KTsKLSsKLSAgICAgICBuZmllbGRzID0gVFlQRV9ORklFTERTICh0eXBlKTsKLSsgICAgICBUWVBF X05GSUVMRFMgKG5ld190eXBlKSA9IG5maWVsZHM7Ci0gICAgICAgVFlQRV9GSUVMRFMgKG5ld190 eXBlKSA9IFhDQUxMT0MgKG5maWVsZHMsIHN0cnVjdCBmaWVsZCk7Ci0gICAgICAgZm9yIChpID0g MDsgaSA8IG5maWVsZHM7IGkrKykKLSAJewotQEAgLTMwODEsOCArMzI5MCw4IEBAIGNvcHlfdHlw ZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkgIFRZUEVfRklFTERfQklU U0laRSAobmV3X3R5cGUsIGkpID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKLSAJICBp ZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkKLSAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3 X3R5cGUsIGkpCi0tCSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgVFlQRV9G SUVMRF9UWVBFICh0eXBlLCBpKSwKLS0JCQkJICAgICBjb3BpZWRfdHlwZXMpOwotKwkgICAgICA9 IGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAob2JqZmlsZSwgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBp KSwKLSsJCQkJICAgICAgIGNvcGllZF90eXBlcyk7Ci0gCSAgaWYgKFRZUEVfRklFTERfTkFNRSAo dHlwZSwgaSkpCi0gCSAgICBUWVBFX0ZJRUxEX05BTUUgKG5ld190eXBlLCBpKSA9IAotIAkgICAg ICB4c3RyZHVwIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKTsKLUBAIC0zMTA5LDI0ICszMzE4 LDE2NiBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJ fQotICAgICB9Ci0gCi0rICAvKiBCb3RoIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLIGFuZCBU WVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgd2VyZQotKyAgICAgcG9zc2libHkgY29udmVy dGVkLiAgKi8KLSsgIFRZUEVfRFlOQU1JQyAobmV3X3R5cGUpID0gMDsKLSsKLSAgIC8qIEZvciBy YW5nZSB0eXBlcywgY29weSB0aGUgYm91bmRzIGluZm9ybWF0aW9uLiAqLwotLSAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQotKyAgaWYgKFRZUEVfQ09ERSAobmV3X3R5 cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLSAgICAgewotICAgICAgIFRZUEVfUkFOR0VfREFUQSAo bmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRzKSk7Ci0gICAg ICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0gKlRZUEVfUkFOR0VfREFUQSAodHlwZSk7 Ci0rCi0rICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LmtpbmQp Ci0rCXsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwlj YXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQg aXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAg IFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlk IGZvciBUWVBFLgotKwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5 cGUpIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19z dGFja19mcmFtZXMgKCkpCi0rCSAgICB7Ci0rCSAgICAgIC8qIFdlIHNob3VsZCBzZXQgMSBmb3Ig Rm9ydHJhbiBidXQgaG93IHRvIGZpbmQgdGhlIGxhbmd1YWdlPyAgKi8KLSsJICAgICAgVFlQRV9M T1dfQk9VTkQgKG5ld190eXBlKSA9IDA7Ci0rCSAgICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5F RCAobmV3X3R5cGUpID0gMTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBUWVBFX0xPV19CT1VO RCAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCi0rCQkJCShUWVBFX1JBTkdF X0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFU QSAobmV3X3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAg YnJlYWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJ ICAgIENPUkVfQUREUiBhZGRyOwotKwotKwkgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9i YXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgICBpdCBpcyBleHBl Y3RlZCB0byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAgICAgICBUWVBF X05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3Ig VFlQRS4KLSsJICAgICAgICovCi0rCSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190 eXBlKQotKwkgICAgICAgICYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhh c19zdGFja19mcmFtZXMgKCkKLSsJICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwK LSsJCSAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0Lmxv Y2xpc3QsCi0rCQkgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9j bGlzdC50eXBlLCAmYWRkcikpCi0rCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBh ZGRyOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZv cnRyYW4gYnV0IGhvdyB0byBmaW5kIHRoZSBsYW5ndWFnZT8gICovCi0rCQlUWVBFX0xPV19CT1VO RCAobmV3X3R5cGUpID0gMDsKLSsJCVRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUp ID0gMTsKLSsJICAgICAgfQotKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5r aW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0K LSsKLSsgICAgICBzd2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQp Ci0rCXsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwlj YXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQg aXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAg IFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlk IGZvciBUWVBFLgotKwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5 cGUpIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19z dGFja19mcmFtZXMgKCkpCi0rCSAgICB7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5 cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgICAgIFRZUEVfSElHSF9C T1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAg VFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJ CQkgICAgICAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sp OwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VO RF9LSU5EX0NPTlNUQU5UOwotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdB UkZfTE9DTElTVDoKLSsJICB7Ci0rCSAgICBDT1JFX0FERFIgYWRkcjsKLSsKLSsJICAgIC8qIGBz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBz bwotKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19U WVBFREVGLgotKwkgICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lB VEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQ RV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09D SUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpCi0rCSAgICAgICAgJiYgZHdh cmZfbG9jbGlzdF9iYXRvbl9ldmFsCi0rCQkgICAgICAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlw ZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQkgICAgICAgVFlQRV9SQU5HRV9E QVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkgICAgICAgJmFk ZHIpKQotKwkgICAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IGFkZHI7Ci0rCSAgICBl bHNlCi0rCSAgICAgIHsKLSsJCVRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1df Qk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCQlUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdf dHlwZSkgPSAxOwotKwkgICAgICB9Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+ aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7 Ci0rCX0KLSsKLSsgICAgICBzd2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRl X3N0cmlkZS5raW5kKQotKwl7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJ ICBicmVhazsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBz dHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBz bwotKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQ RURFRi4KLSsJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQg YXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExP Q0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAg ICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQotKwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3 X3R5cGUpID0gMDsKLSsJICBlbHNlCi0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkg PSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlw ZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3 X3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rCSAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RB TlQ7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgot KwkgIHsKLSsJICAgIENPUkVfQUREUiBhZGRyID0gMDsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdh cmYyX2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAg ICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgot KwkgICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBu b3QgdmFsaWQgZm9yIFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxM T0NBVEVEIChuZXdfdHlwZSkKLSsJCSYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUp ICYmIGhhc19zdGFja19mcmFtZXMgKCkpCi0rCSAgICAgIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZh bAotKwkgICAgICAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3 YXJmX2xvY2xpc3QubG9jbGlzdCwKLSsJCVRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRl X3N0cmlkZS51LmR3YXJmX2xvY2xpc3QudHlwZSwKLSsJCSZhZGRyKTsKLSsJICAgIFRZUEVfQllU RV9TVFJJREUgKG5ld190eXBlKSA9IGFkZHI7Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190 eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAotKwkgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RB TlQ7Ci0rCSAgfQotKwkgIGJyZWFrOwotKwl9Ci0rCi0rICAgICAgLyogQ29udmVydCBUWVBFX1JB TkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgaW50byBhIHJlZ3VsYXIgYm91bmQuICAqLwotKyAgICAg IGlmIChUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSkKLSsJewotKwkg IFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKQot KwkJCQkgICAgICAgKyBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgVFlQRV9S QU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChuZXdfdHlwZSkgPSAwOwotKwl9Ci0gICAgIH0KLSAK LSAgIC8qIENvcHkgcG9pbnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKQotICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKLS0g ICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLCAKLS0JCQkgICBUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSwKLS0JCQkgICBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGNvcHlfdHlwZV9yZWN1 cnNpdmVfMSAob2JqZmlsZSwgCi0rCQkJICAgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJ CQkgICAgIGNvcGllZF90eXBlcyk7Ci0gICBpZiAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSkK LSAgICAgVFlQRV9WUFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5cGVf cmVjdXJzaXZlIChvYmpmaWxlLAotLQkJCSAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksCi0t CQkJICAgY29waWVkX3R5cGVzKTsKLSsgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZp bGUsCi0rCQkJICAgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLAotKwkJCSAgICAgY29waWVk X3R5cGVzKTsKLSAgIC8qIE1heWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KLSAKLSAg ICAgIE5PVEUgZHJvdy8yMDA1LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNpZmlj IGJpdHMgbGlrZQotQEAgLTMxNDMsNiArMzQ5NCwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0rLyog UmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxs b2NhdGVkIHVzaW5nCi0rICAgbWFsbG9jLCBhIHNhdmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5 IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwKLSsgICBvciBUWVBFIGlmIGl0IGlz IG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICovCi0rCi0rc3RydWN0IHR5cGUgKgotK2Nv cHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJICAgICBodGFiX3QgY29w aWVkX3R5cGVzKQotK3sKLSsgIHJldHVybiBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKFRZUEVfT0JK RklMRSAodHlwZSksIHR5cGUsIGNvcGllZF90eXBlcyk7Ci0rfQotKwotIC8qIE1ha2UgYSBjb3B5 IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQot ICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgotICAgIAotQEAgLTMxNjUsNiArMzUyNywxOTkg QEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIHJldHVybiBuZXdfdHlw ZTsKLSB9Ci0gCi0rLyogQ2FsbGJhY2sgdHlwZSBmb3IgbWFpbl90eXBlX2NyYXdsLiAgKi8KLSt0 eXBlZGVmIGludCAoKm1haW5fdHlwZV9jcmF3bF9pdGVyKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZv aWQgKmRhdGEpOwotKwotKy8qIEl0ZXJhdGUgYWxsIG1haW5fdHlwZSBzdHJ1Y3R1cmVzIHJlYWNo YWJsZSB0aHJvdWdoIGFueSBgc3RydWN0IHR5cGUgKicgZnJvbQotKyAgIFRZUEUuICBJVEVSIHdp bGwgYmUgY2FsbGVkIG9ubHkgZm9yIG9uZSB0eXBlIG9mIGVhY2ggbWFpbl90eXBlLCB1c2UKLSsg ICBUWVBFX0NIQUlOIHRyYXZlcnNhbCB0byBmaW5kIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMuICBJ VEVSIGlzIGJlaW5nIGNhbGxlZAotKyAgIGZvciBlYWNoIG1haW5fdHlwZSBmb3VuZC4gIElURVIg cmV0dXJucyBub24temVybyBpZiBtYWluX3R5cGVfY3Jhd2wgc2hvdWxkCi0rICAgZGVwdGgtZmly c3QgZW50ZXIgdGhlIHNwZWNpZmljIHR5cGUuICBJVEVSIG11c3QgcHJvdmlkZSBzb21lIGRldGVj dGlvbiBmb3IKLSsgICByZWVudGVyaW5nIHRoZSBzYW1lIG1haW5fdHlwZSBhcyB0aGlzIGZ1bmN0 aW9uIHdvdWxkIG90aGVyd2lzZSBlbmRsZXNzbHkKLSsgICBsb29wLiAgKi8KLSsKLStzdGF0aWMg dm9pZAotK21haW5fdHlwZV9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3 bF9pdGVyIGl0ZXIsIHZvaWQgKmRhdGEpCi0rewotKyAgc3RydWN0IHR5cGUgKnR5cGVfaXRlcjsK LSsgIGludCBpOwotKwotKyAgaWYgKCF0eXBlKQotKyAgICByZXR1cm47Ci0rCi0rICBnZGJfYXNz ZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwotKwotKyAgLyogYHN0cnVjdCBjcGx1 c19zdHJ1Y3RfdHlwZScgaGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQgYnkgdGhpcyBmdW5jdGlvbi4g ICovCi0rICBnZGJfYXNzZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNU Ci0rCSAgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9VTklPTikKLSsJICAg ICAgfHwgIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICBpZiAoISgqaXRlcikgKHR5 cGUsIGRhdGEpKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBJdGVyYXRlIGFsbCB0aGUgdHlwZSBp bnN0YW5jZXMgb2YgdGhpcyBtYWluX3R5cGUuICAqLwotKyAgdHlwZV9pdGVyID0gdHlwZTsKLSsg IGRvCi0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBFX01BSU5fVFlQRSAodHlwZV9pdGVy KSA9PSBUWVBFX01BSU5fVFlQRSAodHlwZSkpOwotKwotKyAgICAgIG1haW5fdHlwZV9jcmF3bCAo VFlQRV9QT0lOVEVSX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsgICAgICBtYWluX3R5cGVf Y3Jhd2wgKFRZUEVfUkVGRVJFTkNFX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsKLSsgICAg ICB0eXBlX2l0ZXIgPSBUWVBFX0NIQUlOICh0eXBlX2l0ZXIpOwotKyAgICB9Ci0rICB3aGlsZSAo dHlwZV9pdGVyICE9IHR5cGUpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAo dHlwZSk7IGkrKykKLSsgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUs IGkpLCBpdGVyLCBkYXRhKTsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSksIGl0ZXIsIGRhdGEpOwotKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1ZQVFJfQkFT RVRZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSt9Ci0rCi0rLyogQSBoZWxwZXIgZm9yIGRlbGV0 ZV90eXBlIHdoaWNoIGRlbGV0ZXMgYSBtYWluX3R5cGUgYW5kIHRoZSB0aGluZ3MgdG8gd2hpY2gK LSsgICBpdCByZWZlcnMuICBUWVBFIGlzIGEgdHlwZSB3aG9zZSBtYWluX3R5cGUgd2Ugd2lzaCB0 byBkZXN0cm95LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2RlbGV0ZV9tYWluX3R5cGUgKHN0cnVj dCB0eXBlICp0eXBlKQotK3sKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVND QVJEQUJMRSAodHlwZSkpOwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBO VUxMKTsKLSsKLSsgIHhmcmVlIChUWVBFX05BTUUgKHR5cGUpKTsKLSsgIHhmcmVlIChUWVBFX1RB R19OQU1FICh0eXBlKSk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBl KTsgKytpKQotKyAgICB7Ci0rICAgICAgeGZyZWUgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkp OwotKwotKyAgICAgIGlmIChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBpKSA9PSBGSUVMRF9M T0NfS0lORF9QSFlTTkFNRSkKLSsJeGZyZWUgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FICh0 eXBlLCBpKSk7Ci0rICAgIH0KLSsgIHhmcmVlIChUWVBFX0ZJRUxEUyAodHlwZSkpOwotKwotKyAg Z2RiX2Fzc2VydCAoIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICB4ZnJlZSAoVFlQ RV9NQUlOX1RZUEUgKHR5cGUpKTsKLSt9Ci0rCi0rLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2Vz IG9uIFRZUEVfQ0hBSU4gb2YgVFlQRSwgaW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKLSsgICBt YWluX3R5cGUuICBUWVBFIG11c3QgYmUgYSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJt YW5lbnQgbm9yIG9iamZpbGUKLSsgICBhc3NvY2lhdGVkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAot K2RlbGV0ZV90eXBlX2NoYWluIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICBzdHJ1Y3QgdHlw ZSAqdHlwZV9pdGVyLCAqdHlwZV9pdGVyX3RvX2ZyZWU7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBF X0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUp ID09IE5VTEwpOwotKwotKyAgZGVsZXRlX21haW5fdHlwZSAodHlwZSk7Ci0rCi0rICB0eXBlX2l0 ZXIgPSB0eXBlOwotKyAgZG8KLSsgICAgewotKyAgICAgIHR5cGVfaXRlcl90b19mcmVlID0gdHlw ZV9pdGVyOwotKyAgICAgIHR5cGVfaXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVfaXRlcik7Ci0rICAg ICAgeGZyZWUgKHR5cGVfaXRlcl90b19mcmVlKTsKLSsgICAgfQotKyAgd2hpbGUgKHR5cGVfaXRl ciAhPSB0eXBlKTsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJs ZV90YWJsZS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlzY2FyZGFibGVfaGFz aCAoY29uc3Qgdm9pZCAqcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHA7Ci0r Ci0rICByZXR1cm4gaHRhYl9oYXNoX3BvaW50ZXIgKFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7Ci0r fQotKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAg Ki8KLSsKLStzdGF0aWMgaW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7Ci0r ICBjb25zdCBzdHJ1Y3QgdHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJuIFRZUEVfTUFJTl9U WVBFIChsZWZ0KSA9PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsKLSsvKiBBIGhlbHBl ciBmb3IgdHlwZV9tYXJrX3VzZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBlX21hcmtfdXNl ZF9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICBpZiAoIVRZ UEVfRElTQ0FSREFCTEUgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChUWVBFX0RJ U0NBUkRBQkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKLSsg ICAgcmV0dXJuIDA7Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rp c2NhcmRhYmxlX2FnZV9jdXJyZW50OwotKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4g ICovCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogTWFyayBUWVBFIGFuZCBpdHMgY29ubmVjdGVk IHR5cGVzIGFzIHVzZWQgaW4gdGhpcyBmcmVlX2FsbF90eXBlcyBwYXNzLiAgKi8KLSsKLSt2b2lk Ci0rdHlwZV9tYXJrX3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGlmICh0eXBlID09 IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkp Ci0rICAgIHJldHVybjsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAodHlwZSwgdHlwZV9tYXJrX3Vz ZWRfY3Jhd2wsIE5VTEwpOwotK30KLSsKLSsvKiBBIHRyYXZlcnNlIGNhbGxiYWNrIGZvciB0eXBl X2Rpc2NhcmRhYmxlX3RhYmxlIHdoaWNoIHJlbW92ZXMgYW55Ci0rICAgdHlwZV9kaXNjYXJkYWJs ZSB3aG9zZSByZWZlcmVuY2UgY291bnQgaXMgbm93IHplcm8gKHVudXNlZCBsaW5rKS4gICovCi0r Ci0rc3RhdGljIGludAotK3R5cGVfZGlzY2FyZGFibGVfcmVtb3ZlICh2b2lkICoqc2xvdCwgdm9p ZCAqdW51c2VkKQotK3sKLSsgIHN0cnVjdCB0eXBlICp0eXBlID0gKnNsb3Q7Ci0rCi0rICBnZGJf YXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0rICBpZiAoVFlQRV9ESVNDQVJE QUJMRV9BR0UgKHR5cGUpICE9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQpCi0rICAgIHsK LSsgICAgICBkZWxldGVfdHlwZV9jaGFpbiAodHlwZSk7Ci0rCi0rICAgICAgaHRhYl9jbGVhcl9z bG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCBzbG90KTsKLSsgICAgfQotKwotKyAgcmV0dXJu IDE7Ci0rfQotKwotKy8qIEZyZWUgYWxsIHRoZSByZWNsYWltYWJsZSB0eXBlcyB0aGF0IGhhdmUg YmVlbiBhbGxvY2F0ZWQgYW5kIHRoYXQgaGF2ZQotKyAgIGN1cnJlbnRseSB6ZXJvIHJlZmVyZW5j ZSBjb3VudGVyLgotKwotKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIGVhY2ggY29t bWFuZCwgc3VjY2Vzc2Z1bCBvciBub3QuICBVc2UgdGhpcwotKyAgIGNsZWFudXAgb25seSBpbiB0 aGUgR0RCIGlkbGUgc3RhdGUgYXMgR0RCIG9ubHkgbWFya3MgdGhvc2UgdHlwZXMgdXNlZCBieQot KyAgIGdsb2JhbGx5IHRyYWNrZWQgb2JqZWN0cyAod2l0aCBubyBhdXRvdmFyaWFibGUgcmVmZXJl bmNlcyB0cmFja2luZykuICAqLwotKwotK3ZvaWQKLStmcmVlX2FsbF90eXBlcyAodm9pZCkKLSt7 Ci0rICAvKiBNYXJrIGEgbmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3 ZXJlIHZpc2l0ZWQgYWZ0ZXIgZWFjaAotKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0 YWxlIGVudHJpZXMgYWxyZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCi0rICAgICB2YWx1ZS4g ICovCi0rICB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7Ci0rCi0rICBvYnNlcnZl cl9ub3RpZnlfbWFya191c2VkICgpOwotKwotKyAgaHRhYl90cmF2ZXJzZSAodHlwZV9kaXNjYXJk YWJsZV90YWJsZSwgdHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30KLSAKLSAvKiBI ZWxwZXIgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHR5cGVz LiAgKi8KLSAKLUBAIC0zNTExLDYgKzQwNjYsOCBAQCBnZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoKQotICAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGJ1aWx0aW5f dHlwZS0+YnVpbHRpbl92b2lkKTsKLSAgIGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cgot ICAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGxvb2t1cF9mdW5jdGlvbl90eXBlIChidWlsdGlu X3R5cGUtPmJ1aWx0aW5fdm9pZCkpOwotKyAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfZnVu YwotKyAgICA9IGxvb2t1cF9mdW5jdGlvbl90eXBlIChidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVu Y19wdHIpOwotIAotICAgLyogVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBHREIgaW50ZXJuYWwgZnVu Y3Rpb24uICAqLwotICAgYnVpbHRpbl90eXBlLT5pbnRlcm5hbF9mbgotQEAgLTM2MjQsNiArNDE4 MSwxOCBAQCBvYmpmaWxlX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIAkJICI8dGV4 dCB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4iLCBvYmpmaWxlKTsKLSAgIFRZUEVfVEFSR0VUX1RZ UEUgKG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbCkKLSAgICAgPSBvYmpmaWxlX3R5 cGUtPmJ1aWx0aW5faW50OwotKyAgb2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5j X3N5bWJvbAotKyAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0ZVTkMsIDEsIFRZUEVfRkxBR19H TlVfSUZVTkMsCi0rCQkgIjx0ZXh0IGdudS1pbmRpcmVjdC1mdW5jdGlvbiB2YXJpYWJsZSwgbm8g ZGVidWcgaW5mbz4iLAotKwkJIG9iamZpbGUpOwotKyAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmls ZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCkKLSsgICAgPSBvYmpmaWxlX3R5 cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7Ci0rICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfZ290X3Bs dF9zeW1ib2wKLSsgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9QVFIsIGdkYmFyY2hfYWRkcl9i aXQgKGdkYmFyY2gpIC8gOCwgMCwKLSsJCSAiPHRleHQgZnJvbSBqdW1wIHNsb3QgaW4gLmdvdC5w bHQsIG5vIGRlYnVnIGluZm8+IiwKLSsJCSBvYmpmaWxlKTsKLSsgIFRZUEVfVEFSR0VUX1RZUEUg KG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbCkKLSsgICAgPSBvYmpmaWxlX3R5 cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7Ci0gICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfZGF0YV9z eW1ib2wKLSAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQsCi0gCQkgZ2RiYXJjaF9pbnRf Yml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAsCi1AQCAtMzY3OCw2ICs0MjQ3LDExIEBA IHZvaWQKLSBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKLSB7Ci0gICBnZGJ0eXBlc19kYXRh ID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsK LSsKLSsgIHR5cGVfZGlzY2FyZGFibGVfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMjAsIHR5 cGVfZGlzY2FyZGFibGVfaGFzaCwKLSsJCQkJCSAgICAgdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCwg TlVMTCwKLSsJCQkJCSAgICAgeGNhbGxvYywgeGZyZWUpOwotKwotICAgb2JqZmlsZV90eXBlX2Rh dGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7Ci0gCi0gICBhZGRfc2V0c2hvd196aW50ZWdl cl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsIF8oIlwKLWRpZmYg LS1naXQgYS9nZGIvZ2RidHlwZXMuaCBiL2dkYi9nZGJ0eXBlcy5oCi1pbmRleCAwODUyNzBlLi5j YjJiODhlIDEwMDY0NAotLS0tIGEvZ2RiL2dkYnR5cGVzLmgKLSsrKyBiL2dkYi9nZGJ0eXBlcy5o Ci1AQCAtMTcxLDYgKzE3MSw3IEBAIGVudW0gdHlwZV9mbGFnX3ZhbHVlCi0gICBUWVBFX0ZMQUdf RklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNSksCi0gICBUWVBFX0ZMQUdfU1RVQl9TVVBQT1JURUQg PSAoMSA8PCAxNiksCi0gICBUWVBFX0ZMQUdfTk9UVEVYVCA9ICgxIDw8IDE3KSwKLSsgIFRZUEVf RkxBR19HTlVfSUZVTkMgPSAoMSA8PCAxOCksCi0gCi0gICAvKiBVc2VkIGZvciBlcnJvci1jaGVj a2luZy4gICovCi0gICBUWVBFX0ZMQUdfTUlOID0gVFlQRV9GTEFHX1VOU0lHTkVECi1AQCAtMjE0 LDYgKzIxNSwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQotIAotICNkZWZpbmUg VFlQRV9UQVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3RhcmdldF9zdHVi KQotIAotKy8qIFR5cGUgbmVlZHMgdG8gYmUgZXZhbHVhdGVkIG9uIGVhY2ggQ0hFQ0tfVFlQRURF RiBhbmQgaXRzIHJlc3VsdHMgbXVzdCBub3QgYmUKLSsgICBzdGlja3kuICAqLwotKwotKyNkZWZp bmUgVFlQRV9EWU5BTUlDKHQpCQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2R5bmFtaWMpCi0r Ci0gLyogU3RhdGljIHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgdHlw ZSBoYWQgCi0gICogYSBzdGF0aWMgbW9kaWZpZXIuCi0gICogTm90ZTogVGhpcyBtYXkgYmUgdW5u ZWNlc3NhcnksIHNpbmNlIHN0YXRpYyBkYXRhIG1lbWJlcnMKLUBAIC0yNzEsNiArMjc3LDEyIEBA IGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCi0gCi0gI2RlZmluZSBUWVBFX05PVFRFWFQo dCkJCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfbm90dGV4dCkKLSAKLSsvKiBVc2VkIG9ubHkg Zm9yIFRZUEVfQ09ERV9GVU5DIHdoZXJlIGl0IHNwZWNpZmllcyB0aGUgcmVhbCBmdW5jdGlvbgot KyAgIGFkZHJlc3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiAgVFlQRV9UQVJH RVRfVFlQRSBkZXRlcm1pbmVzIHRoZQotKyAgIGZpbmFsIHJldHVybmVkIGZ1bmN0aW9uIHR5cGUg dG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuICAqLwotKwotKyNkZWZpbmUgVFlQRV9HTlVfSUZVTkMo dCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMpCi0rCi0gLyogVHlwZSBvd25l ci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUgdHlwZSBpcyBvd25lZCBieQot ICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJTEUuICBPdGhlcndlaXNlLCB0 aGUgdHlwZSBpcwotICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZTsgVFlQRV9PQkpGSUxFIGlz IE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KLUBAIC0yODUsNiArMjk3LDQ4IEBAIGVudW0gdHlwZV9p bnN0YW5jZV9mbGFnX3ZhbHVlCi0gCi0gI2RlZmluZSBUWVBFX0RFQ0xBUkVEX0NMQVNTKHQpIChU WVBFX01BSU5fVFlQRSAodCktPmZsYWdfZGVjbGFyZWRfY2xhc3MpCi0gCi0rLyogRGVmaW5lIHRo aXMgdHlwZSBhcyBiZWluZyByZWNsYWltYWJsZSBkdXJpbmcgZnJlZV9hbGxfdHlwZXMuICBUeXBl IGlzCi0rICAgcmVxdWlyZWQgdG8gYmUgaGF2ZSBUWVBFX09CSkZJTEUgc2V0IHRvIE5VTEwuICBT ZXR0aW5nIHRoaXMgZmxhZyByZXF1aXJlcwotKyAgIGluaXRpYWxpemluZyBUWVBFX0RJU0NBUkRB QkxFX0FHRSwgc2VlIGFsbG9jX3R5cGVfZGlzY2FyZGFibGUuICAqLwotKwotKyNkZWZpbmUgVFlQ RV9ESVNDQVJEQUJMRSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlKQot KwotKy8qIE1hcmtlciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJr X3VzZWQgYnkgdGhpcwotKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGlu ZyBwYXNzLiAgQ3VycmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCi0rICAgYnkgVFlQRV9ESVNDQVJE QUJMRV9BR0VfQ1VSUkVOVC4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0 KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2FnZSkKLSsKLSsvKiBJcyBI SUdIX0JPVU5EIGEgbG93LWJvdW5kIHJlbGF0aXZlIGNvdW50ICgxKSBvciB0aGUgaGlnaCBib3Vu ZCBpdHNlbGYgKDApPyAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19D T1VOVChyYW5nZV90eXBlKSBcCi0rICAoVFlQRV9NQUlOX1RZUEUgKHJhbmdlX3R5cGUpLT5mbGFn X3JhbmdlX2hpZ2hfYm91bmRfaXNfY291bnQpCi0rCi0rLyogTm90IGFsbG9jYXRlZC4gIFRZUEVf QUxMT0NBVEVEKHQpIG11c3QgYmUgTlVMTCBpbiBzdWNoIGNhc2UuICBJZiB0aGlzIGZsYWcKLSsg ICBpcyB1bnNldCBhbmQgVFlQRV9BTExPQ0FURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlz IGFsbG9jYXRlZC4gIElmIHRoaXMKLSsgICBmbGFnIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRF RCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0cyBEV0FSRiBibG9jawotKyAgIGRldGVybWluZXMgdGhl IGFjdHVhbCBhbGxvY2F0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FMTE9D QVRFRCh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hbGxvY2F0ZWQpCi0rCi0rLyog Tm90IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2gg Y2FzZS4gIElmIHRoaXMgZmxhZwotKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFURUQodCkg aXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgotKyAgIHRoaXMgZmxhZyBp cyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJG IGJsb2NrCi0rICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9uIHN0YXRlLiAgKi8K LSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFURUQodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ ZmxhZ19ub3RfYXNzb2NpYXRlZCkKLSsKLSsvKiBBZGRyZXNzIG9mIHRoZSBhY3R1YWwgZGF0YSBh cyBmb3IgRFdfQVRfZGF0YV9sb2NhdGlvbi4gIEl0cyBkd2FyZiBibG9jayBtdXN0Ci0rICAgbm90 IGJlIGV2YWx1YXRlZCB1bmxlc3MgYm90aCBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9U X0FTU09DSUFURUQgYXJlCi0rICAgZmFsc2UuICBJZiBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQURE UiBzZXQgdGhlbiBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiB2YWx1ZQotKyAgIGlzIHRoZSBhY3R1 YWwgZGF0YSBhZGRyZXNzIHZhbHVlLiAgSWYgdW5zZXQgYW5kCi0rICAgVFlQRV9EQVRBX0xPQ0FU SU9OX0RXQVJGX0JMT0NLIGlzIE5VTEwgdGhlbiB0aGUgdmFsdWUgaXMgdGhlIG5vcm1hbAotKyAg IHZhbHVlX3Jhd19hZGRyZXNzLiAgSWYgdW5zZXQgYW5kIFRZUEVfREFUQV9MT0NBVElPTl9EV0FS Rl9CTE9DSyBpcyBub3QgTlVMTAotKyAgIHRoZW4gaXRzIERXQVJGIGJsb2NrIGRldGVybWluZXMg dGhlIGFjdHVhbCBkYXRhIGFkZHJlc3MuICAqLwotKwotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FU SU9OX0lTX0FERFIodCkgXAotKyAgKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kYXRhX2xvY2F0 aW9uX2lzX2FkZHIpCi0rCi0gLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUg Y29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCi0gICogY29uc3QgbW9kaWZpZXIuCi0gICovCi1AQCAt Mzg5LDExICs0NDMsMTkgQEAgc3RydWN0IG1haW5fdHlwZQotICAgdW5zaWduZWQgaW50IGZsYWdf dmVjdG9yIDogMTsKLSAgIHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKLSAg IHVuc2lnbmVkIGludCBmbGFnX25vdHRleHQgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZ251 X2lmdW5jIDogMTsKLSAgIHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKLSAg IHVuc2lnbmVkIGludCBmbGFnX29iamZpbGVfb3duZWQgOiAxOwotICAgLyogVHJ1ZSBpZiB0aGlz IHR5cGUgd2FzIGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgotICAgICAgInN0cnVj dCIuICAqLwotICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOwotKyAgdW5z aWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGUgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZGlz Y2FyZGFibGVfYWdlIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2R5bmFtaWMgOiAxOwotKyAg dW5zaWduZWQgaW50IGZsYWdfcmFuZ2VfaGlnaF9ib3VuZF9pc19jb3VudCA6IDE7Ci0rICB1bnNp Z25lZCBpbnQgZmxhZ19ub3RfYWxsb2NhdGVkIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX25v dF9hc3NvY2lhdGVkIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2RhdGFfbG9jYXRpb25faXNf YWRkciA6IDE7Ci0gCi0gICAvKiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxk IG9mIHRoZSB0eXBlX3NwZWNpZmljIHVuaW9uCi0gICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlz IHR5cGUsIGlmIGFueS4gICovCi1AQCAtNDY3LDYgKzUyOSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBl Ci0gCi0gICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7Ci0gCi0rICAvKiBGb3IgRFdfQVRfZGF0 YV9sb2NhdGlvbi4gICovCi0rICB1bmlvbgotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKLSsgICAgICBDT1JFX0FERFIgYWRkcjsKLSsgICAg fQotKyAgZGF0YV9sb2NhdGlvbjsKLSsKLSsgIC8qIEZvciBEV19BVF9hbGxvY2F0ZWQuICAqLwot KyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICphbGxvY2F0ZWQ7Ci0rCi0rICAvKiBGb3Ig RFdfQVRfYXNzb2NpYXRlZC4gICovCi0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFz c29jaWF0ZWQ7Ci0rCi0gICAvKiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNj cmlwdGlvbiBvZiBlYWNoIGZpZWxkLgotICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5 cGVzLCB0aGVyZSBpcyBvbmUgImZpZWxkIiwKLSAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFp biB0eXBlIG9mIHRoZSBzZXQgb3IgYXJyYXkuCi1AQCAtNTQwLDEzICs2MTYsMzQgQEAgc3RydWN0 IG1haW5fdHlwZQotIAotICAgICBzdHJ1Y3QgcmFuZ2VfYm91bmRzCi0gICAgIHsKLSsgICAgICBz dHJ1Y3QKLSsJewotKwkgIHVuaW9uCi0rCSAgICB7Ci0rCSAgICAgIExPTkdFU1QgY29uc3RhbnQ7 Ci0rCSAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7Ci0rCSAg ICAgIHN0cnVjdAotKwkJewotKwkJICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xp c3Q7Ci0rCQkgIHN0cnVjdCB0eXBlICp0eXBlOwotKwkJfQotKwkgICAgICBkd2FyZl9sb2NsaXN0 OwotKwkgICAgfQotKwkgIHU7Ci0rCSAgZW51bSByYW5nZV9ib3VuZF9raW5kCi0rCSAgICB7Ci0r CSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQsCi0rCSAgICAgIFJBTkdFX0JPVU5EX0tJ TkRfRFdBUkZfQkxPQ0ssCi0rCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVAot KwkgICAgfQotKwkgIGtpbmQ7Ci0rCX0KLSAgICAgICAvKiBMb3cgYm91bmQgb2YgcmFuZ2UuICov Ci0tCi0tICAgICAgTE9OR0VTVCBsb3c7Ci0tCi0rICAgICAgbG93LAotICAgICAgIC8qIEhpZ2gg Ym91bmQgb2YgcmFuZ2UuICovCi0tCi0tICAgICAgTE9OR0VTVCBoaWdoOwotKyAgICAgIGhpZ2gs Ci0rICAgICAgLyogQnl0ZSBzdHJpZGUgb2YgcmFuZ2UuICovCi0rICAgICAgYnl0ZV9zdHJpZGU7 Ci0gCi0gICAgICAgLyogRmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YWx1ZXMgb2YgbG93 IGFuZCBoaWdoIGFyZQotICAgICAgICAgIHZhbGlkLiAgV2hlbiB0cnVlLCB0aGUgcmVzcGVjdGl2 ZSByYW5nZSB2YWx1ZSBpcwotQEAgLTg4OSw5ICs5ODYsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0 ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfUE9JTlRFUl9U WVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKLSAjZGVmaW5lIFRZUEVfUkVG RVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCi0gI2RlZmlu ZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgotLS8qIE5vdGUgdGhhdCBp ZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYgdHlwZSwgeW91IGhhdmUgdG8gY2FsbCBjaGVja190eXBl ZGVmLgotLSAgIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0 aGUgVFlQRURFRiB0eXBlLAotLSAgIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBl ZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQotKy8qIE5vdGUgdGhhdCBpZiB0aGlzdHlw ZSBpcyBhIFRZUEVERUYsIEFSUkFZIG9yIFNUUklORyB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsCi0r ICAgY2hlY2tfdHlwZWRlZi4gIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xF TkdUSCBvZiB0aGUgVFlQRURFRgotKyAgIHR5cGUsIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBj aGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQotICAgIGNhbGxzIGNoZWNr X3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkgaXMgc2FmZS4gICovCi0gI2Rl ZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCi0gLyogTm90ZSB0 aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYsIHNvIGlmIHlvdSB3YW50IHRo ZSByZWFsCi1AQCAtODk5LDExICs5OTYsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9h dXhfdHlwZSAoc3RydWN0IHR5cGUgKik7Ci0gI2RlZmluZSBUWVBFX0NPREUodGhpc3R5cGUpIFRZ UEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29kZQotICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0 eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5maWVsZHMKLSAjZGVmaW5lIFRZUEVfRklF TERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMK LSsjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyh0aGlzdHlwZSkgVFlQRV9N QUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5kd2FyZl9ibG9jawotKyNkZWZpbmUg VFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlw ZSktPmRhdGFfbG9jYXRpb24uYWRkcgotKyNkZWZpbmUgVFlQRV9BTExPQ0FURUQodGhpc3R5cGUp IFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFsbG9jYXRlZAotKyNkZWZpbmUgVFlQRV9BU1NP Q0lBVEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5hc3NvY2lhdGVkCi0g Ci0gI2RlZmluZSBUWVBFX0lOREVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAw KQotICNkZWZpbmUgVFlQRV9SQU5HRV9EQVRBKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlz dHlwZSktPmZsZHNfYm5kcy5ib3VuZHMKLS0jZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdlX3R5 cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93Ci0tI2RlZmluZSBUWVBFX0hJR0hf Qk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoCi0rI2Rl ZmluZSBUWVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlw ZSktPmxvdy51LmNvbnN0YW50Ci0rI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoLnUuY29uc3RhbnQKLSsjZGVmaW5lIFRZ UEVfQllURV9TVFJJREUocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5i eXRlX3N0cmlkZS51LmNvbnN0YW50Ci0gI2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklORUQo cmFuZ2VfdHlwZSkgXAotICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3VuZGVm aW5lZAotICNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCi1A QCAtOTIwLDcgKzEwMjIsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAo c3RydWN0IHR5cGUgKik7Ci0gICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFy cmF5dHlwZSkpKSkKLSAKLSAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfVkFMVUUoYXJy YXl0eXBlKSBcCi0tICAgKFRZUEVfTE9XX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBl KSkpKQotKyAgVFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkKLSsK LSsvKiBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpIHdpdGgg YSBmYWxsYmFjayB0byB0aGUKLSsgICBlbGVtZW50IHNpemUgaWYgbm8gc3BlY2lmaWMgc3RyaWRl IHZhbHVlIGlzIGtub3duLiAgKi8KLSsjZGVmaW5lIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFM VUUoYXJyYXl0eXBlKQkJXAotKyAgKFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAo YXJyYXl0eXBlKSkgPT0gMAlcCi0rICAgPyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAo YXJyYXl0eXBlKSkJCVwKLSsgICA6IFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAo YXJyYXl0eXBlKSkpCi0gCi0gLyogQysrICovCi0gCi1AQCAtMTE0MSw2ICsxMjUwLDEwIEBAIHN0 cnVjdCBidWlsdGluX3R5cGUKLSAgICAgICgqKSAoKSBjYW4gc2VydmVyIGFzIGEgZ2VuZXJpYyBm dW5jdGlvbiBwb2ludGVyLiAgKi8KLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfcHRyOwot IAotKyAgLyogYGZ1bmN0aW9uIHJldHVybmluZyBwb2ludGVyIHRvIGZ1bmN0aW9uIChyZXR1cm5p bmcgdm9pZCknIHR5cGUuCi0rICAgICBUaGUgZmluYWwgdm9pZCByZXR1cm4gdHlwZSBpcyBub3Qg c2lnbmlmaWNhbnQgZm9yIGl0LiAgKi8KLSsgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfZnVu YzsKLSsKLSAKLSAgIC8qIFNwZWNpYWwtcHVycG9zZSB0eXBlcy4gICovCi0gCi1AQCAtMTE4MSw2 ICsxMjk0LDggQEAgc3RydWN0IG9iamZpbGVfdHlwZQotIAotICAgLyogVHlwZXMgdXNlZCBmb3Ig c3ltYm9scyB3aXRoIG5vIGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KLSAgIHN0cnVjdCB0eXBlICpu b2RlYnVnX3RleHRfc3ltYm9sOwotKyAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGV4dF9nbnVfaWZ1 bmNfc3ltYm9sOwotKyAgc3RydWN0IHR5cGUgKm5vZGVidWdfZ290X3BsdF9zeW1ib2w7Ci0gICBz dHJ1Y3QgdHlwZSAqbm9kZWJ1Z19kYXRhX3N5bWJvbDsKLSAgIHN0cnVjdCB0eXBlICpub2RlYnVn X3Vua25vd25fc3ltYm9sOwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGxzX3N5bWJvbDsKLUBA IC0xMzI4LDYgKzE0NDMsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlw ZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJICAgICAgIHN0cnVjdCB0eXBl ICopOwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVj dCB0eXBlICosIGludCwgaW50KTsKLSAKLStleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2VfYW55 X2ZpZWxkX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkJCQlpbnQgZmll bGRubyk7Ci0rCi0rZXh0ZXJuIGludCB0eXBlX3JhbmdlX2hpZ2hfYm91bmRfaW50ZXJuYWwgKHN0 cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKLSsKLStleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291bnRf Ym91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKLSsKLStleHRlcm4gQ09S RV9BRERSIHR5cGVfcmFuZ2VfYnl0ZV9zdHJpZGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5n ZV90eXBlLAotKwkJCQkJCSAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSk7Ci0rCi0rZXh0ZXJu IHZvaWQgZmluYWxpemVfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpOwotKwotIGV4dGVybiBzdHJ1 Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAq LAotIAkJCQkJc3RydWN0IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfc3Ry aW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKLUBAIC0xMzcwLDYgKzE0 OTcsOCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHR5cGUgKik7Ci0gCi0gZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKLSAKLStleHRlcm4gdm9pZCB0eXBlX21hcmtfdXNlZCAo c3RydWN0IHR5cGUgKnR5cGUpOwotKwotIC8qIE92ZXJsb2FkIHJlc29sdXRpb24gKi8KLSAKLSAj ZGVmaW5lIExFTkdUSF9NQVRDSChidikgKChidiktPnJhbmtbMF0pCi1AQCAtMTQzMiwxMCArMTU2 MSwxMSBAQCBleHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmludF90eXBlIChjaGFyICosIGludCk7 Ci0gCi0gZXh0ZXJuIGh0YWJfdCBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKTsKLSAKLS1leHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZV9yZWN1cnNp dmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCQkJIHN0cnVjdCB0eXBlICp0eXBlLAot K2V4dGVybiBzdHJ1Y3QgdHlwZSAqY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IHR5cGUgKnR5 cGUsCi0gCQkJCQkgaHRhYl90IGNvcGllZF90eXBlcyk7Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBl ICpjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKTsKLSAKLStleHRlcm4gdm9pZCBm cmVlX2FsbF90eXBlcyAodm9pZCk7Ci0rCi0gI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KLWRpZmYg LS1naXQgYS9nZGIvaTM4Ni1saW51eC1uYXQuYyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1pbmRl eCA0ZmNlMWFjLi4xNDRhODk5IDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbGludXgtbmF0LmMKLSsr KyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1AQCAtNzQ3LDYgKzc0NywyMSBAQCBpMzg2X2xpbnV4 X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQotICAgICB9Ci0gfQotIAotKy8q IFNlZSBpMzg2X2RyX2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4Nl9s aW51eF9kcl9zZXRfY29udHJvbAotKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBhcyB0 aGV5IHdvdWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoaTM4Nl9saW51eF9kciku ICAqLwotKwotK3N0YXRpYyB2b2lkCi0raTM4Nl9saW51eF9kcl9kZXRhY2ggKHZvaWQpCi0rewot KyAgaW50IHJlZ251bTsKLSsKLSsgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCBE Ul9DT05UUk9MLCAwKTsKLSsgIGkzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh+MFVMKTsKLSsg IGZvciAocmVnbnVtID0gRFJfRklSU1RBRERSOyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJlZ251 bSsrKQotKyAgICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgcmVnbnVtLCAwKTsK LSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBpMzg2X2xpbnV4X25ld190aHJlYWQgKHB0aWRfdCBwdGlk KQotIHsKLUBAIC05NzYsNiArOTkxLDcgQEAgX2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQgKHZv aWQpCi0gICBpMzg2X2RyX2xvdy5yZXNldF9hZGRyID0gaTM4Nl9saW51eF9kcl9yZXNldF9hZGRy OwotICAgaTM4Nl9kcl9sb3cuZ2V0X3N0YXR1cyA9IGkzODZfbGludXhfZHJfZ2V0X3N0YXR1czsK LSAgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyA9IGkzODZfbGludXhfZHJfdW5zZXRfc3RhdHVz OwotKyAgaTM4Nl9kcl9sb3cuZGV0YWNoID0gaTM4Nl9saW51eF9kcl9kZXRhY2g7Ci0gICBpMzg2 X3NldF9kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggKDQpOwotIAotICAgLyogT3ZlcnJpZGUgdGhlIGRl ZmF1bHQgcHRyYWNlIHJlc3VtZSBtZXRob2QuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5h dC5jIGIvZ2RiL2kzODYtbmF0LmMKLWluZGV4IGVhYTM2NDQuLjA5MjFjN2UgMTAwNjQ0Ci0tLS0g YS9nZGIvaTM4Ni1uYXQuYwotKysrIGIvZ2RiL2kzODYtbmF0LmMKLUBAIC01MzMsNiArNTMzLDE3 IEBAIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQg dHlwZSwKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotKy8qIFNlZSB0YXJnZXRfZGV0YWNoX3dh dGNocG9pbnRzLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0raTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHMg KHZvaWQpCi0rewotKyAgaWYgKGkzODZfZHJfbG93LmRldGFjaCkKLSsgICAgaTM4Nl9kcl9sb3cu ZGV0YWNoICgpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIC8qIFJldHVybiBub24temVybyBp ZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRzIGF0Ci0gICAgYWRkcmVz cyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8KLSAKLUBAIC02ODUsNiAr Njk2LDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQotICAg dC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOwot ICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50OwotICAg dC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OwotKyAgdC0+ dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gICB0LT50 b19pbnNlcnRfaHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7Ci0gICB0 LT50b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7Ci0g fQotZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKLWluZGV4IDcz MTdlN2QuLmVhOTE0YTUgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuaAotKysrIGIvZ2RiL2kz ODYtbmF0LmgKLUBAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRjaHBv aW50cyAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gICAgICAgdW5zZXRfc3RhdHVzICAgICAgICAg ICAgIC0tIHVuc2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKLSAJCQkJICBzdGF0 dXMgKERSNikgcmVnaXN0ZXIgZm9yIGFsbCBMV1BzCi0gCi0rICAgICAgZGV0YWNoICAgICAgICAg ICAgICAgICAgIC0tIGNsZWFyIGFsbCBkZWJ1ZyByZWdpc3RlcnMgb2Ygb25seSB0aGUKLSsJCQkJ ICBJTkZFUklPUl9QVElEIHRhc2sgd2l0aG91dCBhZmZlY3RpbmcgYW55Ci0rCQkJCSAgcmVnaXN0 ZXIgY2FjaGVzLgotKwotICAgIEFkZGl0aW9uYWxseSwgdGhlIG5hdGl2ZSBmaWxlIHNob3VsZCBz ZXQgdGhlIGRlYnVnX3JlZ2lzdGVyX2xlbmd0aAotICAgIGZpZWxkIHRvIDQgb3IgOCBkZXBlbmRp bmcgb24gdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIGZvcgotICAgIGRldWJnIHJlZ2lzdGVycy4g ICovCi1AQCAtNzMsNiArNzcsNyBAQCBzdHJ1Y3QgaTM4Nl9kcl9sb3dfdHlwZQotICAgICB2b2lk ICgqcmVzZXRfYWRkcikgKGludCk7Ci0gICAgIHVuc2lnbmVkIGxvbmcgKCpnZXRfc3RhdHVzKSAo dm9pZCk7Ci0gICAgIHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsKLSsgICAg dm9pZCAoKmRldGFjaCkgKHZvaWQpOwotICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoOwot ICAgfTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwotaW5k ZXggMGM5YTNhZi4uOTU3ZWMxZCAxMDA2NDQKLS0tLSBhL2dkYi9pbmZjYWxsLmMKLSsrKyBiL2dk Yi9pbmZjYWxsLmMKLUBAIC0yMjUsNiArMjI1LDU2IEBAIHZhbHVlX2FyZ19jb2VyY2UgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmFyZywKLSAgIHJldHVybiB2YWx1ZV9j YXN0ICh0eXBlLCBhcmcpOwotIH0KLSAKLSsvKiBDYWxsIGdudS1pZnVuYyAoU1RUX0dOVV9JRlVO QyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEgcmVhbAotKyAgIGZ1bmN0aW9u IHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlvbiBlbnRyeS4gIEZ1bmN0aW9u IHJldHVybnMKLSsgICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkIGZ1 bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRWQUxfVFlQRVAKLSsgICBpcyBub3QgTlVMTCBmaWxsIGlu ICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVk Ci0rICAgZnVuY3Rpb24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9UWVBFUCBpbnRhY3QgaWYgdGhl IHJldHVybiB0eXBlIGNvdWxkIG5vdCBiZQotKyAgIGZvdW5kLiAgKi8KLSsKLStzdGF0aWMgQ09S RV9BRERSCi0rZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JF X0FERFIgcGMpCi0rewotKyAgY2hhciAqbmFtZV9hdF9wYzsKLSsgIENPUkVfQUREUiBzdGFydF9h dF9wYywgYWRkcmVzczsKLSsgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5f dHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOwotKyAgc3RydWN0IHZhbHVlICpmdW5j dGlvbiwgKmFkZHJlc3NfdmFsOwotKwotKyAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAo cGMsICZuYW1lX2F0X3BjLCAmc3RhcnRfYXRfcGMsIE5VTEwpCi0rICAgICAgJiYgc3RhcnRfYXRf cGMgPT0gcGMpCi0rICAgIHsKLSsgICAgICBpZiAocmVzb2x2ZV9nbnVfaWZ1bmMgKG5hbWVfYXRf cGMsICZhZGRyZXNzKSkKLSsJcmV0dXJuIGFkZHJlc3M7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAg bmFtZV9hdF9wYyA9IE5VTEw7Ci0rCi0rICBmdW5jdGlvbiA9IGFsbG9jYXRlX3ZhbHVlIChmdW5j X2Z1bmNfdHlwZSk7Ci0rICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24sIHBjKTsKLSsKLSsg IC8qIGdudS1pZnVuY3MgaGF2ZSBubyBhcmd1bWVudHMuICBGVU5DVElPTiBpcyB0aGUgZnVuY3Rp b24gZW50cnkgYWRkcmVzcwotKyAgICAgd2hpbGUgQUREUkVTUyBpcyBhIHBvc3NpYmxlIGZ1bmN0 aW9uIGRlc2NyaXB0b3IuLiAgKi8KLSsgIGFkZHJlc3NfdmFsID0gY2FsbF9mdW5jdGlvbl9ieV9o YW5kIChmdW5jdGlvbiwgMCwgTlVMTCk7Ci0rICBhZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAo YWRkcmVzc192YWwpOwotKwotKyAgaWYgKG5hbWVfYXRfcGMpCi0rICAgIGdudV9pZnVuY19yZWNv cmRfY2FjaGUgKGdkYmFyY2gsIG5hbWVfYXRfcGMsIGFkZHJlc3MpOwotKwotKyAgcmV0dXJuIGdk YmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGFkZHJlc3MsICZjdXJy ZW50X3RhcmdldCk7Ci0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rZmluZF9mdW5jdGlv bl9yZXR1cm5fdHlwZSAoQ09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9 IGZpbmRfcGNfZnVuY3Rpb24gKHBjKTsKLSsKLSsgIGlmIChzeW0gIT0gTlVMTCAmJiBCTE9DS19T VEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChzeW0pKSA9PSBwYwotKyAgICAgICYmIFNZTUJPTF9U WVBFIChzeW0pICE9IE5VTEwpCi0rICAgIHJldHVybiBUWVBFX1RBUkdFVF9UWVBFIChTWU1CT0xf VFlQRSAoc3ltKSk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0gLyogRGV0ZXJtaW5lIGEg ZnVuY3Rpb24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJvbSBpdHMgdmFsdWUuCi0g ICAgQ2FsbHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZhbGlkIGZvciBjYWxsaW5n LiAgKi8KLSAKLUBAIC0yMzMsNyArMjgzLDYgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1Y3Qg dmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBlKQotIHsKLSAgIHN0cnVj dCB0eXBlICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7Ci0g ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKGZ0eXBlKTsKLS0gIGVu dW0gdHlwZV9jb2RlIGNvZGUgPSBUWVBFX0NPREUgKGZ0eXBlKTsKLSAgIHN0cnVjdCB0eXBlICp2 YWx1ZV90eXBlID0gTlVMTDsKLSAgIENPUkVfQUREUiBmdW5hZGRyOwotIAotQEAgLTI0MSwyNCAr MjkwLDM0IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3Ry dWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKLSAgICAgIHBhcnQgb2YgaXQuICAqLwotIAotICAgLyog RGV0ZXJtaW5lIGFkZHJlc3MgdG8gY2FsbC4gICovCi0tICBpZiAoY29kZSA9PSBUWVBFX0NPREVf RlVOQyB8fCBjb2RlID09IFRZUEVfQ09ERV9NRVRIT0QpCi0tICAgIHsKLS0gICAgICBmdW5hZGRy ID0gdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24pOwotLSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RB UkdFVF9UWVBFIChmdHlwZSk7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RF X1BUUikKLSsgIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfRlVOQwotKyAgICAg IHx8IFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpCi0rICAgIGZ1bmFkZHIg PSB2YWx1ZV9hZGRyZXNzIChmdW5jdGlvbik7Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKGZ0eXBl KSA9PSBUWVBFX0NPREVfUFRSKQotICAgICB7Ci0gICAgICAgZnVuYWRkciA9IHZhbHVlX2FzX2Fk ZHJlc3MgKGZ1bmN0aW9uKTsKLSAgICAgICBmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFS R0VUX1RZUEUgKGZ0eXBlKSk7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVf Q09ERV9GVU5DCi0gCSAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkK LSsJZnVuYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs IGZ1bmFkZHIsCi0rCQkJCQkJICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKLSsgICAgfQotKyAgaWYg KFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0rICAgICAgfHwgVFlQRV9DT0RF IChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKLSsgICAgewotKyAgICAgIHZhbHVlX3R5cGUg PSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfR05VX0lGVU5D IChmdHlwZSkpCi0gCXsKLS0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKLS0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLS0J ICB2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIGZ1bmFkZHIgPSBn bnVfaWZ1bmNfcmVzb2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7Ci0rCi0rCSAgLyogU2tpcCBxdWVy eWluZyB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCi0rCSAg ICAgYXNrZWQgZm9yLiAgKi8KLSsJICBpZiAocmV0dmFsX3R5cGUpCi0rCSAgICB2YWx1ZV90eXBl ID0gZmluZF9mdW5jdGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7Ci0gCX0KLSAgICAgfQotLSAg ZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfSU5UKQotKyAgZWxzZSBpZiAoVFlQRV9DT0RFIChm dHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKLSAgICAgewotICAgICAgIC8qIEhhbmRsZSB0aGUgY2Fz ZSBvZiBmdW5jdGlvbnMgbGFja2luZyBkZWJ1Z2dpbmcgaW5mby4KLSAgICAgICAgICBUaGVpciB2 YWx1ZXMgYXJlIGNoYXJhY3RlcnMgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCi1k aWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCi1pbmRleCBjNGNkYjA2Li5k MjEzZjZhIDEwMDY0NAotLS0tIGEvZ2RiL2luZmNtZC5jCi0rKysgYi9nZGIvaW5mY21kLmMKLUBA IC04MjIsNyArODIyLDcgQEAgbmV4dGlfY29tbWFuZCAoY2hhciAqY291bnRfc3RyaW5nLCBpbnQg ZnJvbV90dHkpCi0gICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0cmluZyk7Ci0gfQotIAotLXN0YXRp YyB2b2lkCi0rdm9pZAotIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCAodm9pZCAq YXJnKQotIHsKLSAgIGludCB0aHJlYWQgPSAqIChpbnQgKikgYXJnOwotQEAgLTg2MiwxMCArODYy LDEzIEBAIHN0ZXBfMSAoaW50IHNraXBfc3Vicm91dGluZXMsIGludCBzaW5nbGVfaW5zdCwgY2hh ciAqY291bnRfc3RyaW5nKQotIAotICAgaWYgKCFzaW5nbGVfaW5zdCB8fCBza2lwX3N1YnJvdXRp bmVzKQkJLyogbGVhdmUgc2kgY29tbWFuZCBhbG9uZSAqLwotICAgICB7Ci0rICAgICAgc3RydWN0 IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKLSsKLSAgICAgICBpZiAoaW5f dGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQotICAJdGhyZWFkID0gcGlkX3RvX3RocmVhZF9p ZCAoaW5mZXJpb3JfcHRpZCk7Ci0gCi0gICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhy ZWFkKTsKLSsgICAgICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1 cnJlbnRfZnJhbWUgKCkpOwotIAotICAgICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBf YnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKLSAgICAgfQotQEAgLTEyMTksNiArMTIyMiwx NSBAQCBzaWduYWxfY29tbWFuZCAoY2hhciAqc2lnbnVtX2V4cCwgaW50IGZyb21fdHR5KQotICAg cHJvY2VlZCAoKENPUkVfQUREUikgLTEsIG91cnNpZywgMCk7Ci0gfQotIAotKy8qIEEgY29udGlu dWF0aW9uIGNhbGxiYWNrIGZvciB1bnRpbF9uZXh0X2NvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rdW50aWxfbmV4dF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRwID0gYXJnOwotKyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAodHAt Pm51bSk7Ci0rfQotKwotIC8qIFByb2NlZWQgdW50aWwgd2UgcmVhY2ggYSBkaWZmZXJlbnQgc291 cmNlIGxpbmUgd2l0aCBwYyBncmVhdGVyIHRoYW4KLSAgICBvdXIgY3VycmVudCBvbmUgb3IgZXhp dCB0aGUgZnVuY3Rpb24uICBXZSBza2lwIGNhbGxzIGluIGJvdGggY2FzZXMuCi0gCi1AQCAtMTIz NSw2ICsxMjQ3LDggQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gICBzdHJ1 Y3Qgc3ltYm9sICpmdW5jOwotICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0gICBzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOwotKyAgaW50IHRocmVhZCA9 IHRwLT5udW07Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotIAotICAgY2xlYXJfcHJv Y2VlZF9zdGF0dXMgKCk7Ci0gICBzZXRfc3RlcF9mcmFtZSAoKTsKLUBAIC0xMjcwLDcgKzEyODQs MTkgQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gCi0gICB0cC0+c3RlcF9t dWx0aSA9IDA7CQkvKiBPbmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KLSAKLSsgIHNldF9sb25n am1wX2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9m cmFtZV9pZCAoZnJhbWUpOwotKyAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChkZWxldGVfbG9u Z2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwotKwotICAgcHJvY2VlZCAoKENPUkVf QUREUikgLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVMVCwgMSk7Ci0rCi0rICBpZiAodGFyZ2V0X2Nh bl9hc3luY19wICgpICYmIGlzX3J1bm5pbmcgKGluZmVyaW9yX3B0aWQpKQotKyAgICB7Ci0rICAg ICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgICAgICBhZGRfY29udGludWF0aW9u ICh0cCwgdW50aWxfbmV4dF9jb250aW51YXRpb24sIHRwLCBOVUxMKTsKLSsgICAgfQotKyAgZWxz ZQotKyAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBA IC0xNDYzLDYgKzE0ODksNyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFy ZykKLSAgIGlmIChicyAhPSBOVUxMICYmIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKLSAgICAgb2Jz ZXJ2ZXJfbm90aWZ5X25vcm1hbF9zdG9wIChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7Ci0gICBk ZWxldGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludCk7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVh a3BvaW50IChpbmZlcmlvcl90aHJlYWQgKCktPm51bSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1A QCAtMTU0Niw2ICsxNTczLDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0 aW9uLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJl YWtwb2ludDsKLSAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0gICBzdHJ1Y3QgZmluaXNo X2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MgKmNhcmdzOwotKyAgaW50IHRocmVhZCA9IHRwLT5u dW07Ci0gCi0gICBzYWwgPSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsK LSAgIHNhbC5wYyA9IGdldF9mcmFtZV9wYyAoZnJhbWUpOwotQEAgLTE1NTYsNiArMTU4NCwxMCBA QCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKLSAKLSAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtw b2ludCAoYnJlYWtwb2ludCk7Ci0gCi0rICBzZXRfbG9uZ2ptcF9icmVha3BvaW50ICh0aHJlYWQp OwotKyAgdHAtPmluaXRpYXRpbmdfZnJhbWUgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSsgIG1h a2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsK LSsKLSAgIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCA9IDE7ICAgIC8qIFdlIHdhbnQgc3RvcF9yZWdp c3RlcnMsIHBsZWFzZS4uLiAgKi8KLSAgIGNhcmdzID0geG1hbGxvYyAoc2l6ZW9mICgqY2FyZ3Mp KTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvaW5mZXJpb3IuaCBiL2dkYi9pbmZlcmlvci5oCi1pbmRl eCA1YWJlYzY4Li5lMzA5Mjc3IDEwMDY0NAotLS0tIGEvZ2RiL2luZmVyaW9yLmgKLSsrKyBiL2dk Yi9pbmZlcmlvci5oCi1AQCAtMjkxLDYgKzI5MSw4IEBAIGV4dGVybiB2b2lkIGludGVycnVwdF90 YXJnZXRfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KTsKLSAKLSBleHRlcm4gdm9p ZCBpbnRlcnJ1cHRfdGFyZ2V0XzEgKGludCBhbGxfdGhyZWFkcyk7Ci0gCi0rZXh0ZXJuIHZvaWQg ZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpOwotKwotIGV4dGVy biB2b2lkIGRldGFjaF9jb21tYW5kIChjaGFyICosIGludCk7Ci0gCi0gZXh0ZXJuIHZvaWQgbm90 aWNlX25ld19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2lu ZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCi1pbmRleCA1NGIxZDlmLi41OGQwNDVhIDEwMDY0NAotLS0t IGEvZ2RiL2luZnJ1bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC00NSw2ICs0NSw4IEBACi0g I2luY2x1ZGUgImxhbmd1YWdlLmgiCi0gI2luY2x1ZGUgInNvbGliLmgiCi0gI2luY2x1ZGUgIm1h aW4uaCIKLSsjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgotKyNpbmNsdWRlICJibG9jay5oIgotICNp bmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgotICNpbmNs dWRlICJldmVudC10b3AuaCIKLUBAIC0zNjcsNiArMzY5LDcgQEAgZm9sbG93X2ZvcmsgKHZvaWQp Ci0gICAgICBwYXJlbnQgdGhyZWFkIHN0cnVjdHVyZSdzIHJ1biBjb250cm9sIHJlbGF0ZWQgZmll bGRzLCBub3QganVzdCB0aGVzZS4KLSAgICAgIEluaXRpYWxpemVkIHRvIGF2b2lkICJtYXkgYmUg dXNlZCB1bmluaXRpYWxpemVkIiB3YXJuaW5ncyBmcm9tIGdjYy4gICovCi0gICBzdHJ1Y3QgYnJl YWtwb2ludCAqc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0rICBzdHJ1Y3QgYnJlYWtw b2ludCAqZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKLSAgIENPUkVfQUREUiBz dGVwX3JhbmdlX3N0YXJ0ID0gMDsKLSAgIENPUkVfQUREUiBzdGVwX3JhbmdlX2VuZCA9IDA7Ci0g ICBzdHJ1Y3QgZnJhbWVfaWQgc3RlcF9mcmFtZV9pZCA9IHsgMCB9OwotQEAgLTQxOSw2ICs0MjIs OCBAQCBmb2xsb3dfZm9yayAodm9pZCkKLSAJICAgIHN0ZXBfcmFuZ2Vfc3RhcnQgPSB0cC0+c3Rl cF9yYW5nZV9zdGFydDsKLSAJICAgIHN0ZXBfcmFuZ2VfZW5kID0gdHAtPnN0ZXBfcmFuZ2VfZW5k OwotIAkgICAgc3RlcF9mcmFtZV9pZCA9IHRwLT5zdGVwX2ZyYW1lX2lkOwotKwkgICAgZXhjZXB0 aW9uX3Jlc3VtZV9icmVha3BvaW50Ci0rCSAgICAgID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9p bnQgKHRwLT5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQpOwotIAotIAkgICAgLyogRm9yIG5v dywgZGVsZXRlIHRoZSBwYXJlbnQncyBzciBicmVha3BvaW50LCBvdGhlcndpc2UsCi0gCSAgICAg ICBwYXJlbnQvY2hpbGQgc3IgYnJlYWtwb2ludHMgYXJlIGNvbnNpZGVyZWQgZHVwbGljYXRlcywK LUBAIC00MjksNiArNDM0LDcgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCi0gCSAgICB0cC0+c3RlcF9y YW5nZV9zdGFydCA9IDA7Ci0gCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSAwOwotIAkgICAgdHAt PnN0ZXBfZnJhbWVfaWQgPSBudWxsX2ZyYW1lX2lkOwotKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCAodHApOwotIAkgIH0KLSAKLSAJcGFyZW50ID0gaW5mZXJpb3JfcHRp ZDsKLUBAIC00NzAsNiArNDc2LDggQEAgZm9sbG93X2ZvcmsgKHZvaWQpCi0gCQkgICAgdHAtPnN0 ZXBfcmFuZ2Vfc3RhcnQgPSBzdGVwX3JhbmdlX3N0YXJ0OwotIAkJICAgIHRwLT5zdGVwX3Jhbmdl X2VuZCA9IHN0ZXBfcmFuZ2VfZW5kOwotIAkJICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gc3RlcF9m cmFtZV9pZDsKLSsJCSAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50Ci0rCQkgICAg ICA9IGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKLSAJCSAgfQotIAkJZWxzZQotIAkJICB7 Ci1AQCAtNTIzLDYgKzUzMSw5IEBAIGZvbGxvd19pbmZlcmlvcl9yZXNldF9icmVha3BvaW50cyAo dm9pZCkKLSAgIGlmICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCkKLSAgICAgYnJlYWtwb2lu dF9yZV9zZXRfdGhyZWFkICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCk7Ci0gCi0rICBpZiAo dHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKLSsgICAgYnJlYWtwb2ludF9yZV9zZXRf dGhyZWFkICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKLSsKLSAgIC8qIFJlaW5z ZXJ0IGFsbCBicmVha3BvaW50cyBpbiB0aGUgY2hpbGQuICBUaGUgdXNlciBtYXkgaGF2ZSBzZXQK LSAgICAgIGJyZWFrcG9pbnRzIGFmdGVyIGNhdGNoaW5nIHRoZSBmb3JrLCBpbiB3aGljaCBjYXNl IHRob3NlCi0gICAgICB3ZXJlIG5ldmVyIHNldCBpbiB0aGUgY2hpbGQsIGJ1dCBvbmx5IGluIHRo ZSBwYXJlbnQuICBUaGlzIG1ha2VzCi1AQCAtNzYwLDYgKzc3MSw3IEBAIGZvbGxvd19leGVjIChw dGlkX3QgcGlkLCBjaGFyICpleGVjZF9wYXRobmFtZSkKLSAgIC8qIElmIHRoZXJlIHdhcyBvbmUs IGl0J3MgZ29uZSBub3cuICBXZSBjYW5ub3QgdHJ1bHkgc3RlcC10by1uZXh0Ci0gICAgICBzdGF0 ZW1lbnQgdGhyb3VnaCBhbiBleGVjKCkuICovCi0gICB0aC0+c3RlcF9yZXN1bWVfYnJlYWtwb2lu dCA9IE5VTEw7Ci0rICB0aC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKLSAg IHRoLT5zdGVwX3JhbmdlX3N0YXJ0ID0gMDsKLSAgIHRoLT5zdGVwX3JhbmdlX2VuZCA9IDA7Ci0g Ci1AQCAtMjE5MCw2ICsyMjAyLDggQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnRfYXRfc2FsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJCQkgIHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgc3Jfc2FsLAotIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lk KTsKLSBzdGF0aWMgdm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0 IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsKLStzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVz dW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKLSsJCQkJICAgIHN0cnVjdCBm cmFtZV9pbmZvICosIHN0cnVjdCBzeW1ib2wgKik7Ci0gCi0gc3RhdGljIHZvaWQgc3RvcF9zdGVw cGluZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwotIHN0YXRpYyB2b2lk IHByZXBhcmVfdG9fd2FpdCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwot QEAgLTIzMTMsNiArMjMyNyw3IEBAIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2NhbGxi YWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKmluZm8sIHZvaWQgKmRhdGEpCi0gICAgIHJldHVybiAw OwotIAotICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOwotKyAgZGVsZXRl X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoaW5mbyk7Ci0gICByZXR1cm4gMDsKLSB9Ci0g Ci1AQCAtMjMzNyw2ICsyMzUyLDcgQEAgZGVsZXRlX3N0ZXBfdGhyZWFkX3N0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgKHZvaWQpCi0gICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9y X3RocmVhZCAoKTsKLSAKLSAgICAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAodHAp OwotKyAgICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKLSAgICAg fQotICAgZWxzZQotICAgICAvKiBJbiBhbGwtc3RvcCBtb2RlLCBkZWxldGUgYWxsIHN0ZXAtcmVz dW1lIGFuZCBsb25nam1wLXJlc3VtZQotQEAgLTMyNDEsNiArMzI1NywxMCBAQCBoYW5kbGVfaW5m ZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotIAotICAg ICAgIHN0b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hlIChlY3Mt PnB0aWQpKTsKLSAKLSsgICAgICAvKiBDbGVhciBXQVRDSFBPSU5UX1RSSUdHRVJFRCB2YWx1ZXMg ZnJvbSBwcmV2aW91cyBzdG9wIHdoaWNoIGNvdWxkCi0rCSBjb25mdXNlIGJwc3RhdF9zdG9wX3N0 YXR1cyBhbmQgYnBzdGF0X2V4cGxhaW5zX3NpZ25hbC4gICovCi0rICAgICAgd2F0Y2hwb2ludHNf dHJpZ2dlcmVkICgmZWNzLT53cyk7Ci0rCi0gICAgICAgZWNzLT5ldmVudF90aHJlYWQtPnN0b3Bf YnBzdGF0Ci0gCT0gYnBzdGF0X3N0b3Bfc3RhdHVzIChnZXRfcmVnY2FjaGVfYXNwYWNlIChnZXRf Y3VycmVudF9yZWdjYWNoZSAoKSksCi0gCQkJICAgICAgc3RvcF9wYywgZWNzLT5wdGlkKTsKLUBA IC0zMzI4LDYgKzMzNDgsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSAKLSAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVh ZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7Ci0gCi0rICAgICAgLyogQ2xl YXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBj b3VsZAotKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19z aWduYWwuICAqLwotKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOwotKwot ICAgICAgIC8qIERvIHdoYXRldmVyIGlzIG5lY2Vzc2FyeSB0byB0aGUgcGFyZW50IGJyYW5jaCBv ZiB0aGUgdmZvcmsuICAqLwotICAgICAgIGhhbmRsZV92Zm9ya19jaGlsZF9leGVjX29yX2V4aXQg KDEpOwotIAotQEAgLTQwNzYsMjMgKzQxMDAsMzMgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6 Ci0gCi0gCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQgPSAxOwot IAotLQlpZiAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFyY2gpCi0tCSAgICB8 fCAhZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQgKGdkYmFyY2gsIGZyYW1lLCAmam1wX2J1Zl9w YykpCi0rCWlmICh3aGF0LmlzX2xvbmdqbXApCi0gCSAgewotLQkgICAgaWYgKGRlYnVnX2luZnJ1 bikKLS0JICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAotKwkgICAgaWYg KCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQotKwkJfHwgIWdkYmFyY2hf Z2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLAotKwkJCQkJCWZyYW1lLCAmam1wX2J1Zl9wYykp Ci0rCSAgICAgIHsKLSsJCWlmIChkZWJ1Z19pbmZydW4pCi0rCQkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywgIlwKLSBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VN RSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7Ci0tCSAgICBrZWVwX2dvaW5nIChl Y3MpOwotLQkgICAgcmV0dXJuOwotLQkgIH0KLSsJCWtlZXBfZ29pbmcgKGVjcyk7Ci0rCQlyZXR1 cm47Ci0rCSAgICAgIH0KLSAKLS0JLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVu dCBzdGVwLXJlc3VtZSBicmVha3BvaW50Ci0tCSAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVh a3BvaW50LiAgKi8KLS0JZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRf dGhyZWFkKTsKLSsJICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3Rl cC1yZXN1bWUgYnJlYWtwb2ludAotKwkgICAgICAgd2l0aCBhIGxvbmdqbXAtcmVzdW1lIGJyZWFr cG9pbnQuICAqLwotKwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZl bnRfdGhyZWFkKTsKLSAKLS0JLyogSW5zZXJ0IGEgYnJlYWtwb2ludCBhdCByZXN1bWUgYWRkcmVz cy4gICovCi0tCWluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBf YnVmX3BjKTsKLSsJICAgIC8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3Mu ICAqLwotKwkgICAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFyY2gsIGpt cF9idWZfcGMpOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIHN0cnVjdCBzeW1ib2wgKmZ1 bmMgPSBnZXRfZnJhbWVfZnVuY3Rpb24gKGZyYW1lKTsKLSAKLSsJICAgIGlmIChmdW5jKQotKwkg ICAgICBjaGVja19leGNlcHRpb25fcmVzdW1lIChlY3MsIGZyYW1lLCBmdW5jKTsKLSsJICB9Ci0g CWtlZXBfZ29pbmcgKGVjcyk7Ci0gCXJldHVybjsKLSAKLUBAIC00MTAxLDggKzQxMzUsNTIgQEAg aW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25n am1wX3RhcmdldClcbiIpOwotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAJ CQkgICAgICAiaW5mcnVuOiBCUFNUQVRfV0hBVF9DTEVBUl9MT05HSk1QX1JFU1VNRVxuIik7Ci0g Ci0tCWdkYl9hc3NlcnQgKGVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwX3Jlc3VtZV9icmVha3BvaW50 ICE9IE5VTEwpOwotLQlkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90 aHJlYWQpOwotKwlpZiAod2hhdC5pc19sb25nam1wKQotKwkgIHsKLSsJICAgIGdkYl9hc3NlcnQg KGVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwX3Jlc3VtZV9icmVha3BvaW50ICE9IE5VTEwpOwotKwkg ICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKLSsJ ICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICAvKiBUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB0byBj b25zaWRlci4KLSsKLSsJICAgICAgIDEuIFRoZSBpbml0aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBl eGlzdHMuICBJbiB0aGlzIGNhc2UKLSsJICAgICAgIHdlIG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUg ZXhjZXB0aW9uIGhhcyBnb25lIHRvbyBmYXIuCi0rCi0rCSAgICAgICAyLiBUaGUgaW5pdGlhdGlu ZyBmcmFtZSBleGlzdHMsIGFuZCBpcyB0aGUgc2FtZSBhcyB0aGUKLSsJICAgICAgIGN1cnJlbnQg ZnJhbWUuICBXZSBzdG9wLCBiZWNhdXNlIHRoZSBleGNlcHRpb24gaGFzIGJlZW4KLSsJICAgICAg IGNhdWdodC4KLSsKLSsJICAgICAgIDMuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4aXN0cyBhbmQg aXMgZGlmZmVyZW50IGZyb20KLSsJICAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgVGhpcyBtZWFu cyB0aGUgZXhjZXB0aW9uIGhhcyBiZWVuCi0rCSAgICAgICBjYXVnaHQgYmVuZWF0aCB0aGUgaW5p dGlhdGluZyBmcmFtZSwgc28ga2VlcCBnb2luZy4gICovCi0rCSAgICBzdHJ1Y3QgZnJhbWVfaW5m byAqaW5pdF9mcmFtZQotKwkgICAgICA9IGZyYW1lX2ZpbmRfYnlfaWQgKGVjcy0+ZXZlbnRfdGhy ZWFkLT5pbml0aWF0aW5nX2ZyYW1lKTsKLSsKLSsJICAgIGdkYl9hc3NlcnQgKGVjcy0+ZXZlbnRf dGhyZWFkLT5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7Ci0rCSAgICBkZWxl dGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0rCi0r CSAgICBpZiAoaW5pdF9mcmFtZSkKLSsJICAgICAgewotKwkJc3RydWN0IGZyYW1lX2lkIGN1cnJl bnRfaWQKLSsJCSAgPSBnZXRfZnJhbWVfaWQgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKLSsJCWlm IChmcmFtZV9pZF9lcSAoY3VycmVudF9pZCwKLSsJCQkJIGVjcy0+ZXZlbnRfdGhyZWFkLT5pbml0 aWF0aW5nX2ZyYW1lKSkKLSsJCSAgewotKwkJICAgIC8qIENhc2UgMi4gIEZhbGwgdGhyb3VnaC4g ICovCi0rCQkgIH0KLSsJCWVsc2UKLSsJCSAgewotKwkJICAgIC8qIENhc2UgMy4gICovCi0rCQkg ICAga2VlcF9nb2luZyAoZWNzKTsKLSsJCSAgICByZXR1cm47Ci0rCQkgIH0KLSsJICAgICAgfQot KwotKwkgICAgLyogRm9yIENhc2VzIDEgYW5kIDIsIHJlbW92ZSB0aGUgc3RlcC1yZXN1bWUgYnJl YWtwb2ludCwKLSsJICAgICAgIGlmIGl0IGV4aXN0cy4gICovCi0rCSAgICBkZWxldGVfc3RlcF9y ZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOwotKwkgIH0KLSAKLSAJZWNzLT5l dmVudF90aHJlYWQtPnN0b3Bfc3RlcCA9IDE7Ci0gCXByaW50X3N0b3BfcmVhc29uIChFTkRfU1RF UFBJTkdfUkFOR0UsIDApOwotQEAgLTUwNzAsNiArNTE0OCw5NyBAQCBpbnNlcnRfbG9uZ2ptcF9y ZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykK LSAgICAgc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9u Z2ptcF9yZXN1bWUpOwotIH0KLSAKLSsvKiBJbnNlcnQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVh a3BvaW50LiAgVFAgaXMgdGhlIHRocmVhZCB0aHJvd2luZwotKyAgIHRoZSBleGNlcHRpb24uICBU aGUgYmxvY2sgQiBpcyB0aGUgYmxvY2sgb2YgdGhlIHVud2luZGVyIGRlYnVnIGhvb2sKLSsgICBm dW5jdGlvbi4gIEZSQU1FIGlzIHRoZSBmcmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsIHRv IHRoaXMKLSsgICBmdW5jdGlvbi4gIFNZTSBpcyB0aGUgc3ltYm9sIG9mIHRoZSBmdW5jdGlvbiBh cmd1bWVudCBob2xkaW5nIHRoZQotKyAgIHRhcmdldCBQQyBvZiB0aGUgZXhjZXB0aW9uLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK2luc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHAsCi0rCQkJCSAgICBzdHJ1Y3QgYmxvY2sgKmIsCi0rCQkJCSAg ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCSAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0p Ci0rewotKyAgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLSsKLSsgIC8qIFdlIHdhbnQgdG8gaWdu b3JlIGVycm9ycyBoZXJlLiAgKi8KLSsgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQot KyAgICB7Ci0rICAgICAgc3RydWN0IHN5bWJvbCAqdnN5bTsKLSsgICAgICBzdHJ1Y3QgdmFsdWUg KnZhbHVlOwotKyAgICAgIENPUkVfQUREUiBoYW5kbGVyOwotKyAgICAgIHN0cnVjdCBicmVha3Bv aW50ICpicDsKLSsKLSsgICAgICB2c3ltID0gbG9va3VwX3N5bWJvbCAoU1lNQk9MX0xJTktBR0Vf TkFNRSAoc3ltKSwgYiwgVkFSX0RPTUFJTiwgTlVMTCk7Ci0rICAgICAgdmFsdWUgPSByZWFkX3Zh cl92YWx1ZSAodnN5bSwgZnJhbWUpOwotKyAgICAgIC8qIElmIHRoZSB2YWx1ZSB3YXMgb3B0aW1p emVkIG91dCwgcmV2ZXJ0IHRvIHRoZSBvbGQgYmVoYXZpb3IuICAqLwotKyAgICAgIGlmICghIHZh bHVlX29wdGltaXplZF9vdXQgKHZhbHVlKSkKLSsJewotKwkgIGhhbmRsZXIgPSB2YWx1ZV9hc19h ZGRyZXNzICh2YWx1ZSk7Ci0rCi0rCSAgaWYgKGRlYnVnX2luZnJ1bikKLSsJICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJImluZnJ1bjogZXhjZXB0aW9uIHJlc3VtZSBh dCAlbHhcbiIsCi0rCQkJCSh1bnNpZ25lZCBsb25nKSBoYW5kbGVyKTsKLSsKLSsJICBicCA9IHNl dF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJ CQkJCSAgICAgICBoYW5kbGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKLSsJICBicC0+dGhyZWFk ID0gdHAtPm51bTsKLSsJICBpbmZlcmlvcl90aHJlYWQgKCktPmV4Y2VwdGlvbl9yZXN1bWVfYnJl YWtwb2ludCA9IGJwOwotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rLyogVGhpcyBpcyBjYWxsZWQgd2hl biBhbiBleGNlcHRpb24gaGFzIGJlZW4gaW50ZXJjZXB0ZWQuICBDaGVjayB0bwotKyAgIHNlZSB3 aGV0aGVyIHRoZSBleGNlcHRpb24ncyBkZXN0aW5hdGlvbiBpcyBvZiBpbnRlcmVzdCwgYW5kIGlm IHNvLAotKyAgIHNldCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFrcG9pbnQgdGhlcmUuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlv bl9jb250cm9sX3N0YXRlICplY3MsCi0rCQkJc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBzdHJ1 Y3Qgc3ltYm9sICpmdW5jKQotK3sKLSsgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0rCi0rICBU UllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBibG9j ayAqYjsKLSsgICAgICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVyOwotKyAgICAgIHN0cnVjdCBz eW1ib2wgKnN5bTsKLSsgICAgICBpbnQgYXJnbm8gPSAwOwotKwotKyAgICAgIC8qIFRoZSBleGNl cHRpb24gYnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVjaWZpYyBicmVha3BvaW50IG9uCi0rCSB0 aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJlZCBhczoKLSsJIAotKwkgdm9pZCBfVW53 aW5kX0RlYnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpoYW5kbGVyKTsKLSsJIAotKwkgVGhlIENG QSBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRvIHdoaWNoIGNvbnRyb2wgaXMKLSsJIGFi b3V0IHRvIGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBpcyB0aGUgZGVzdGluYXRpb24gUEMuCi0r CSAKLSsJIFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludCBh dCBIQU5ETEVSLgotKwkgVGhpcyBpcyBub3QgZXh0cmVtZWx5IGVmZmljaWVudCBidXQgaXQgYXZv aWRzIGlzc3VlcyBpbiBnZGIKLSsJIHdpdGggY29tcHV0aW5nIHRoZSBEV0FSRiBDRkEsIGFuZCBp dCBhbHNvIHdvcmtzIGV2ZW4gaW4gd2VpcmQKLSsJIGNhc2VzIHN1Y2ggYXMgdGhyb3dpbmcgYW4g ZXhjZXB0aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCi0rCSBoYW5kbGVyLiAgKi8KLSsKLSsgICAg ICBiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKLSsgICAgICBBTExfQkxPQ0tfU1lNQk9M UyAoYiwgaXRlciwgc3ltKQotKwl7Ci0rCSAgaWYgKCFTWU1CT0xfSVNfQVJHVU1FTlQgKHN5bSkp Ci0rCSAgICBjb250aW51ZTsKLSsKLSsJICBpZiAoYXJnbm8gPT0gMCkKLSsJICAgICsrYXJnbm87 Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVh a3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCwKLSsJCQkJCQkgIGIsIGZyYW1lLCBzeW0pOwotKwkg ICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0g c3RvcF9zdGVwcGluZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gewot ZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYwotaW5kZXggOTNh ZGZjZC4uMzQ0MTJhNiAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuYwotKysrIGIvZ2RiL2xp bnV4LW5hdC5jCi1AQCAtMjU4Nyw2ICsyNTg3LDM5IEBAIGxpbnV4X25hdF9zdG9wcGVkX2RhdGFf YWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSICphZGRyX3ApCi0gICBy ZXR1cm4gbHAtPnN0b3BwZWRfZGF0YV9hZGRyZXNzX3A7Ci0gfQotIAotKy8qIEluIGBzZXQgZm9s bG93LWZvcmstbW9kZSBjaGlsZCcgd2l0aCBtdWx0aXRocmVhZGVkIHBhcmVudCB3ZSBuZWVkIHRv IGRldGFjaAotKyAgIHdhdGNocG9pbnRzIGZyb20gYWxsIHRoZSBMV1BzLiAgSW4gc3VjaCBjYXNl IElORkVSSU9SX1BUSUQgd2lsbCBiZSB0aGUKLSsgICBub24tdGhyZWFkZWQgbmV3IGNoaWxkIHdo aWxlIExXUF9MSVNUIHdpbGwgc3RpbGwgY29udGFpbiBhbGwgdGhlIHRocmVhZHMgb2YKLSsgICB0 aGUgcGFyZW50IGJlaW5nIGRldGFjaGVkLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rbGludXhfbmF0 X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwot KyAgaW50IGZvdW5kID0gMCwgcmV0dmFsID0gMDsKLSsgIHB0aWRfdCBmaWx0ZXIgPSBwaWRfdG9f cHRpZCAocHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0rICBzdHJ1Y3QgY2xlYW51cCAq b2xkX2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOwotKwotKyAgZm9yIChscCA9IGx3cF9s aXN0OyBscDsgbHAgPSBscC0+bmV4dCkKLSsgICAgaWYgKHB0aWRfbWF0Y2ggKGxwLT5wdGlkLCBm aWx0ZXIpKQotKyAgICAgIHsKLSsJaW5mZXJpb3JfcHRpZCA9IGxwLT5wdGlkOwotKwlyZXR2YWwg fD0gbGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0rCWZvdW5kID0gMTsKLSsg ICAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsKLSsgIGlmICghZm91bmQp Ci0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0ICghaXNfbHdwIChpbmZlcmlvcl9wdGlkKSk7Ci0r Ci0rICAgICAgcmV0dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOwot KyAgICB9Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSAvKiBXYWl0IHVudGlsIExQIGlz IHN0b3BwZWQuICAqLwotIAotIHN0YXRpYyBpbnQKLUBAIC01NjA2LDYgKzU2MzksOCBAQCBsaW51 eF9uYXRfYWRkX3RhcmdldCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCi0gICB0LT50b190aHJlYWRf YWRkcmVzc19zcGFjZSA9IGxpbnV4X25hdF90aHJlYWRfYWRkcmVzc19zcGFjZTsKLSAgIHQtPnRv X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IGxpbnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7 Ci0gICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFf YWRkcmVzczsKLSsgIGlmIChsaW51eF9vcHMtPnRvX2RldGFjaF93YXRjaHBvaW50cykKLSsgICAg dC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gbGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50czsK LSAKLSAgIHQtPnRvX2Nhbl9hc3luY19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOwotICAgdC0+ dG9faXNfYXN5bmNfcCA9IGxpbnV4X25hdF9pc19hc3luY19wOwotZGlmZiAtLWdpdCBhL2dkYi9s aW51eC10ZGVwLmMgYi9nZGIvbGludXgtdGRlcC5jCi1pbmRleCAwN2ZkNjdjLi4yNTI0MjUwIDEw MDY0NAotLS0tIGEvZ2RiL2xpbnV4LXRkZXAuYwotKysrIGIvZ2RiL2xpbnV4LXRkZXAuYwotQEAg LTIzLDYgKzIzLDggQEAKLSAjaW5jbHVkZSAiYXV4di5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIK LSAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgotKyNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRl ICJpbmZjYWxsLmgiCi0gCi0gLyogVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0 ZWN0dXJlcyB0aGF0IGRvbid0Ci0gICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdp bmZvIHN0cnVjdHVyZS4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMK LWluZGV4IGJmZDEyMTMuLjcyZmFhYmQgMTAwNjQ0Ci0tLS0gYS9nZGIvbWFpbi5jCi0rKysgYi9n ZGIvbWFpbi5jCi1AQCAtMzksNiArMzksNyBAQAotIAotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0g I2luY2x1ZGUgIm1haW4uaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRl ICJzb3VyY2UuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0gI2luY2x1ZGUgInB5dGhv bi9weXRob24uaCIKLUBAIC0yNTksNiArMjYwLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKLSAgIGNoYXIgKmNkYXJnID0gTlVMTDsKLSAgIGNoYXIgKnR0eWFyZyA9IE5VTEw7Ci0gCi0r ICBpbnQgcHl0aG9uX3NjcmlwdCA9IDA7Ci0rCi0gICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRo YXQgd2UgY2FuIHRha2UgdGhlaXIgYWRkcmVzcyBpbiBhbiBpbml0aWFsaXplci4gICovCi0gICBz dGF0aWMgaW50IHByaW50X2hlbHA7Ci0gICBzdGF0aWMgaW50IHByaW50X3ZlcnNpb247Ci1AQCAt NDQzLDEwICs0NDYsMTQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgICB7ImFy Z3MiLCBub19hcmd1bWVudCwgJnNldF9hcmdzLCAxfSwKLSAgICAgICB7ImwiLCByZXF1aXJlZF9h cmd1bWVudCwgMCwgJ2wnfSwKLSAgICAgICB7InJldHVybi1jaGlsZC1yZXN1bHQiLCBub19hcmd1 bWVudCwgJnJldHVybl9jaGlsZF9yZXN1bHQsIDF9LAotKyNpZiBIQVZFX1BZVEhPTgotKyAgICAg IHsicHl0aG9uIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCi0rICAgICAgeyJQIiwgbm9fYXJndW1l bnQsIDAsICdQJ30sCi0rI2VuZGlmCi0gICAgICAgezAsIG5vX2FyZ3VtZW50LCAwLCAwfQotICAg ICB9OwotIAotLSAgICB3aGlsZSAoMSkKLSsgICAgd2hpbGUgKCFweXRob25fc2NyaXB0KQotICAg ICAgIHsKLSAJaW50IG9wdGlvbl9pbmRleDsKLSAKLUBAIC00NjQsNiArNDcxLDkgQEAgY2FwdHVy ZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAJICBjYXNlIDA6Ci0gCSAgICAvKiBMb25nIG9wdGlvbiB0 aGF0IGp1c3Qgc2V0cyBhIGZsYWcuICAqLwotIAkgICAgYnJlYWs7Ci0rCSAgY2FzZSAnUCc6Ci0r CSAgICBweXRob25fc2NyaXB0ID0gMTsKLSsJICAgIGJyZWFrOwotIAkgIGNhc2UgT1BUX1NFOgot IAkgICAgc3ltYXJnID0gb3B0YXJnOwotIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NTAs NyArNjYwLDMxIEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKLSAKLSAgIC8qIE5v dyB0aGF0IGdkYl9pbml0IGhhcyBjcmVhdGVkIHRoZSBpbml0aWFsIGluZmVyaW9yLCB3ZSdyZSBp biBwb3NpdGlvbgotICAgICAgdG8gc2V0IGFyZ3MgZm9yIHRoYXQgaW5mZXJpb3IuICAqLwotLSAg aWYgKHNldF9hcmdzKQotKyAgaWYgKHB5dGhvbl9zY3JpcHQpCi0rICAgIHsKLSsgICAgICAvKiBU aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBweXRob24gc2NyaXB0IHRvIGV2YWx1YXRlLCBhbmQKLSsJ IHN1YnNlcXVlbnQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCBmb3IKLSsJIHBy b2Nlc3NpbmcgdGhlcmUuICAqLwotKyAgICAgIGlmIChvcHRpbmQgPj0gYXJnYykKLSsJewotKwkg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKLSsJCQkgICAgICBfKCIlczogUHl0aG9u IHNjcmlwdCBmaWxlIG5hbWUgcmVxdWlyZWRcbiIpLAotKwkJCSAgICAgIGFyZ3ZbMF0pOwotKwkg IGV4aXQgKDEpOwotKwl9Ci0rCi0rICAgICAgLyogRklYTUU6IHNob3VsZCBoYW5kbGUgaW5mZXJp b3IgSS9PIGludGVsbGlnZW50bHkgaGVyZS4KLSsJIEUuZy4sIHNob3VsZCBiZSBwb3NzaWJsZSB0 byBydW4gZ2RiIGluIHBpcGVsaW5lIGFuZCBoYXZlCi0rCSBQeXRob24gKGFuZCBnZGIpIG91dHB1 dCBnbyB0byBzdGRlcnIgb3IgZmlsZTsgYW5kIGlmIGEKLSsJIHByb21wdCBpcyBuZWVkZWQsIG9w ZW4gdGhlIHR0eS4gICovCi0rICAgICAgcXVpZXQgPSAxOwotKyAgICAgIC8qIEZJWE1FOiBzaG91 bGQgcmVhZCAuZ2RiaW5pdCBpZiwgYW5kIG9ubHkgaWYsIGEgcHJvbXB0IGlzCi0rCSByZXF1ZXN0 ZWQgYnkgdGhlIHNjcmlwdC4gIFRob3VnaC4uLiBtYXliZSB0aGlzIGlzIG5vdAotKwkgaWRlYWw/ ICAqLwotKyAgICAgIC8qIEZJWE1FOiBsaWtld2lzZSwgcmVhZGluZyBpbiBoaXN0b3J5LiAgKi8K LSsgICAgICBpbmhpYml0X2dkYmluaXQgPSAxOwotKyAgICB9Ci0rICBlbHNlIGlmIChzZXRfYXJn cykKLSAgICAgewotICAgICAgIC8qIFRoZSByZW1haW5pbmcgb3B0aW9ucyBhcmUgdGhlIGNvbW1h bmQtbGluZSBvcHRpb25zIGZvciB0aGUKLSAJIGluZmVyaW9yLiAgVGhlIGZpcnN0IG9uZSBpcyB0 aGUgc3ltL2V4ZWMgZmlsZSwgYW5kIHRoZSByZXN0Ci1AQCAtODkwLDcgKzkyNCw4IEBAIENhbid0 IGF0dGFjaCB0byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY29yZSBmaWxlIGF0IHRoZSBzYW1lIHRp bWUuIikpOwotICAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQgaGlz dG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuIHJlYWQuICovCi0tICBp bml0X2hpc3RvcnkgKCk7Ci0rICBpZiAoIXB5dGhvbl9zY3JpcHQpCi0rICAgIGluaXRfaGlzdG9y eSAoKTsKLSAKLSAgIGlmIChiYXRjaF9mbGFnKQotICAgICB7Ci1AQCAtOTAxLDEzICs5MzYsMjUg QEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjb3JlIGZpbGUgYXQgdGhl IHNhbWUgdGltZS4iKSk7Ci0gICAvKiBTaG93IHRpbWUgYW5kL29yIHNwYWNlIHVzYWdlLiAgKi8K LSAgIGRvX2NsZWFudXBzIChwcmVfc3RhdF9jaGFpbik7Ci0gCi0tICAvKiBOT1RFOiBjYWduZXkv MTk5OS0xMS0wNzogVGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QKLS0gICAgIG1v dmluZyB0aGlzIGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9v cCgpCi0tICAgICBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUgbWFpbiB0aGlu ZyBob2xkaW5nIGJhY2sgdGhhdAotLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgpIC0gaGFz IGJlZW4gZWxpbWluYXRlZC4gKi8KLS0gIHdoaWxlICgxKQotKyNpZiBIQVZFX1BZVEhPTgotKyAg aWYgKHB5dGhvbl9zY3JpcHQpCi0gICAgIHsKLS0gICAgICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVk X2NvbW1hbmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rICAgICAgZXh0ZXJuIGlu dCBwYWdpbmF0aW9uX2VuYWJsZWQ7Ci0rICAgICAgcGFnaW5hdGlvbl9lbmFibGVkID0gMDsKLSsg ICAgICBydW5fcHl0aG9uX3NjcmlwdCAoYXJnYyAtIG9wdGluZCwgJmFyZ3Zbb3B0aW5kXSk7Ci0r ICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsjZW5kaWYKLSsgICAgewotKyAgICAg IC8qIE5PVEU6IGNhZ25leS8xOTk5LTExLTA3OiBUaGVyZSBpcyBwcm9iYWJseSBubyByZWFzb24g Zm9yIG5vdAotKwkgbW92aW5nIHRoaXMgbG9vcCBhbmQgdGhlIGNvZGUgZm91bmQgaW4gY2FwdHVy ZWRfY29tbWFuZF9sb29wKCkKLSsJIGludG8gdGhlIGNvbW1hbmRfbG9vcCgpIHByb3Blci4gIFRo ZSBtYWluIHRoaW5nIGhvbGRpbmcgYmFjayB0aGF0Ci0rCSBjaGFuZ2UgLSBTRVRfVE9QX0xFVkVM KCkgLSBoYXMgYmVlbiBlbGltaW5hdGVkLiAqLwotKyAgICAgIHdoaWxlICgxKQotKwl7Ci0rCSAg Y2F0Y2hfZXJyb3JzIChjYXB0dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19B TEwpOwotKwl9Ci0gICAgIH0KLSAgIC8qIE5vIGV4aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1aXRf Y29tbWFuZC4gICovCi0gfQotQEAgLTkzOSw3ICs5ODYsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0pCi0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gVGhpcyBp cyB0aGUgR05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKLSAgICAgZ2RiIFtvcHRpb25zXSBbZXhl Y3V0YWJsZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBbb3B0 aW9uc10gLS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxu XAotKyAgICBnZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFy Z3VtZW50cyAuLi5dXG4iKSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRzX3Vu ZmlsdGVyZWQgKF8oIlwKLSsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1m aWxlIFtzY3JpcHQtYXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1 dHNfdW5maWx0ZXJlZCAoXygiXG5cCi0gT3B0aW9uczpcblxuXAotICIpLCBzdHJlYW0pOwotICAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotQEAgLTk3Nyw3ICsxMDI5LDEzIEBAIE9wdGlvbnM6XG5c blwKLSAgIC0tbncJCSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCi0gICAt LW54ICAgICAgICAgICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7Ci0gICBmcHV0c191bmZp bHRlcmVkIChnZGJpbml0LCBzdHJlYW0pOwotLSAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUu XG5cCi0rICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5cbiIpLCBzdHJlYW0pOwotKyNpZiBI QVZFX1BZVEhPTgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotKyAgLS1weXRob24sIC1QICAg ICAgIEZvbGxvd2luZyBhcmd1bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmluZ1xu XAotKyAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHNjcmlwdC5c biIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotICAgLS1x dWlldCAgICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxu XAotICAgLS1yZWFkbm93ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0 IGFjY2Vzcy5cblwKLSAiKSwgc3RyZWFtKTsKLWRpZmYgLS1naXQgYS9nZGIvbWFpbnQuYyBiL2dk Yi9tYWludC5jCi1pbmRleCAyOGZkNjEwLi40ZTIxNDc2IDEwMDY0NAotLS0tIGEvZ2RiL21haW50 LmMKLSsrKyBiL2dkYi9tYWludC5jCi1AQCAtOTA5LDQgKzkwOSwxMiBAQCBXaGVuIGVuYWJsZWQg R0RCIGlzIHByb2ZpbGVkLiIpLAotIAkJCSAgIHNob3dfbWFpbnRlbmFuY2VfcHJvZmlsZV9wLAot IAkJCSAgICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwKLSAJCQkgICAmbWFpbnRlbmFuY2Vfc2hv d19jbWRsaXN0KTsKLSsgIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoImdkYl9kYXRhZGlyIiwg Y2xhc3NfbWFpbnRlbmFuY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdkYl9kYXRh ZGlyLCBfKCJTZXQgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIF8oIlNob3cgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIF8oIlwKLStXaGVuIHNldCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRoIHRv IHNlYXJjaCBmb3IgZGF0YSBmaWxlcy4iKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWludGVuYW5jZV9zZXRf Y21kbGlzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hvd19j bWRsaXN0KTsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9t aS1jbWQtdmFyLmMKLWluZGV4IDMxMGFkZTkuLmQ4NzEwYTEgMTAwNjQ0Ci0tLS0gYS9nZGIvbWkv bWktY21kLXZhci5jCi0rKysgYi9nZGIvbWkvbWktY21kLXZhci5jCi1AQCAtNzAyLDcgKzcwMiw2 IEBAIG1pX2NtZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFy Z2MpCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIC8qIEdldCB2YXJvYmogaGFuZGxl LCBpZiBhIHZhbGlkIHZhciBvYmogbmFtZSB3YXMgc3BlY2lmaWVkICovCi0gICAgICAgc3RydWN0 IHZhcm9iaiAqdmFyID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUpOwotIAotICAgICAgIHZhcm9i al91cGRhdGVfb25lICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7Ci1kaWZm IC0tZ2l0IGEvZ2RiL21pbnN5bXMuYyBiL2dkYi9taW5zeW1zLmMKLWluZGV4IGNiNDU0NWMuLjky ZDQwMjcgMTAwNjQ0Ci0tLS0gYS9nZGIvbWluc3ltcy5jCi0rKysgYi9nZGIvbWluc3ltcy5jCi1A QCAtMzM3LDggKzMzNyw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFy ICpuYW1lLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZikKLSAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9s LT5oYXNoX25leHQpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdF X05BTUUgKG1zeW1ib2wpLCBuYW1lKSA9PSAwICYmCi0tCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1i b2wpID09IG1zdF90ZXh0IHx8Ci0tCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9m aWxlX3RleHQpKQotKwkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwkJ ICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKLSsJCSAg IHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCi0gCQl7Ci0gCQkg IHN3aXRjaCAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSkKLSAJCSAgICB7Ci1AQCAtNzAwLDYgKzcw MSwxNiBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKLSAgIHJl dHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwotIH0K LSAKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9uIGltcGxlbWVudGlu ZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KLSsKLStpbnQKLStpbl9nbnVfaWZ1bmNfc3R1YiAo Q09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxv b2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMpOwotKwotKyAgcmV0dXJuIG1zeW1ib2wgJiYg TVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0rfQotKwotIC8q IEZpbmQgdGhlIG1pbmltYWwgc3ltYm9sIG5hbWVkIE5BTUUsIGFuZCByZXR1cm4gYm90aCB0aGUg bWluc3ltCi0gICAgc3RydWN0IGFuZCBpdHMgb2JqZmlsZS4gIFRoaXMgb25seSBjaGVja3MgdGhl IGxpbmthZ2UgbmFtZS4gIFNldHMKLSAgICAqT0JKRklMRV9QIGFuZCByZXR1cm5zIHRoZSBtaW5p bWFsIHN5bWJvbCwgaWYgaXQgaXMgZm91bmQuICBJZiBpdAotQEAgLTc2OSw2ICs3ODAsNyBAQCBw cmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSIGFk ZHJlc3MsCi0gICBzd2l0Y2ggKG1zX3R5cGUpCi0gICAgIHsKLSAgICAgY2FzZSBtc3RfdGV4dDoK LSsgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6Ci0gICAgIGNhc2UgbXN0X2ZpbGVfdGV4dDoK LSAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToKLSAgICAgICBzZWN0aW9uID0gU0VDVF9P RkZfVEVYVCAob2JqZmlsZSk7Ci1AQCAtMTIzNSw3ICsxMjQ3LDggQEAgZmluZF9zb2xpYl90cmFt cG9saW5lX3RhcmdldCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBDT1JFX0FERFIgcGMpCi0g ICAgIHsKLSAgICAgICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1zeW1ib2wpCi0gICAgICAgewot LQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwlpZiAoKE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJICAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJv bCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQotIAkgICAgJiYgc3RyY21wIChTWU1CT0xfTElOS0FH RV9OQU1FIChtc3ltYm9sKSwKLSAJCSAgICAgICBTWU1CT0xfTElOS0FHRV9OQU1FICh0c3ltYm9s KSkgPT0gMCkKLSAJICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpOwotZGlm ZiAtLWdpdCBhL2dkYi9wLWxhbmcuYyBiL2dkYi9wLWxhbmcuYwotaW5kZXggMDg3MzhhYy4uNjRk MmU5ZiAxMDA2NDQKLS0tLSBhL2dkYi9wLWxhbmcuYwotKysrIGIvZ2RiL3AtbGFuZy5jCi1AQCAt MjIyLDcgKzIyMiwxMSBAQCBwYXNjYWxfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IHN0cnVjdCB0eXBlICp0eXBlLAotICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsK LSAgIGludCBpbl9xdW90ZXMgPSAwOwotICAgaW50IG5lZWRfY29tbWEgPSAwOwotLSAgaW50IHdp ZHRoID0gVFlQRV9MRU5HVEggKHR5cGUpOwotKyAgaW50IHdpZHRoOwotKwotKyAgLyogUHJlc2Vy dmUgVFlQRSdzIG9yaWdpbmFsIHR5cGUsIGp1c3Qgc2V0IGl0cyBMRU5HVEguICAqLwotKyAgY2hl Y2tfdHlwZWRlZiAodHlwZSk7Ci0rICB3aWR0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAg IC8qIElmIHRoZSBzdHJpbmcgd2FzIG5vdCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxl bWVudHMnLCBhbmQKLSAgICAgIHRoZSBsYXN0IGJ5dGUgb2YgaXQgaXMgYSBudWxsLCB3ZSBkb24n dCBwcmludCB0aGF0LCBpbiB0cmFkaXRpb25hbCBDCi1kaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJp bnQuYyBiL2dkYi9wLXZhbHByaW50LmMKLWluZGV4IDRkMzliZWQuLmQwZGRlYmMgMTAwNjQ0Ci0t LS0gYS9nZGIvcC12YWxwcmludC5jCi0rKysgYi9nZGIvcC12YWxwcmludC5jCi1AQCAtMzgsNiAr MzgsNyBAQAotICNpbmNsdWRlICJwLWxhbmcuaCIKLSAjaW5jbHVkZSAiY3AtYWJpLmgiCi0gI2lu Y2x1ZGUgImNwLXN1cHBvcnQuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gDAotIAotIAot QEAgLTY4LDggKzY5LDI3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7Ci0gICBM T05HRVNUIHZhbDsKLSAgIENPUkVfQUREUiBhZGRyOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tf dG87Ci0rICBzdHJ1Y3QgdHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7Ci0rICBDT1JFX0FERFIgc2F2 ZWRfYWRkcmVzcyA9IGFkZHJlc3M7Ci0rICAKLSsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51 bGxfY2xlYW51cCwgMCk7Ci0rICB0eXBlID0gb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHR5cGUs ICZhZGRyZXNzKTsKLSsgIGlmICh0eXBlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBmcHV0c19m aWx0ZXJlZCAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHNhdmVkX3R5cGUpLCBzdHJl YW0pOwotKyAgICAgIGdkYl9mbHVzaCAoc3RyZWFtKTsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFj a190byk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgIGlmIChhZGRyZXNzICE9IHNhdmVk X2FkZHJlc3MpCi0rICAgIHsKLSsgICAgICBzaXplX3QgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5 cGUpOwotIAotLSAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7Ci0rICAgICAgdmFsYWRkciA9IHhtYWxs b2MgKGxlbmd0aCk7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgKGdkYl9ieXRlICopIHZh bGFkZHIpOwotKyAgICAgIHJlYWRfbWVtb3J5IChhZGRyZXNzLCAoZ2RiX2J5dGUgKikgdmFsYWRk ciwgbGVuZ3RoKTsKLSsgICAgfQotICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7 Ci0gICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgotQEAgLTEyNSw4ICsxNDUsOSBAQCBwYXNjYWxf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0g CQl7Ci0gCQkgIGkgPSAwOwotIAkJfQotLQkgICAgICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMg KHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwKLS0JCQkJ CXJlY3Vyc2UsIG9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKLSsJICAgICAgdmFsX3ByaW50 X2FycmF5X2VsZW1lbnRzIChzYXZlZF90eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LAot KwkJCQkJc2F2ZWRfYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLAotKwkJCQkJb3JpZ2luYWxfdmFs dWUsIG9wdGlvbnMsIGkpOwotIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7 Ci0gCSAgICB9Ci0gCSAgYnJlYWs7Ci1AQCAtMTY0LDYgKzE4NSw3IEBAIHBhc2NhbF92YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAvKiBU cnkgdG8gcHJpbnQgd2hhdCBmdW5jdGlvbiBpdCBwb2ludHMgdG8uICAqLwotIAkgIHByaW50X2Fk ZHJlc3NfZGVtYW5nbGUgKGdkYmFyY2gsIGFkZHIsIHN0cmVhbSwgZGVtYW5nbGUpOwotIAkgIC8q IFJldHVybiB2YWx1ZSBpcyBpcnJlbGV2YW50IGV4Y2VwdCBmb3Igc3RyaW5nIHBvaW50ZXJzLiAg Ki8KLSsJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gCSAgcmV0dXJuICgwKTsKLSAJfQotIAot QEAgLTI1Miw2ICsyNzQsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gICAgICAgLyogUmV0dXJuIG51bWJlciBvZiBjaGFy YWN0ZXJzIHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAJICdcMCcgaWYgd2Ug cmVhY2hlZCB0aGUgZW5kLiAgdmFsX3ByaW50X3N0cmluZyB0YWtlcyBjYXJlIGluY2x1ZGluZwot IAkgdGhlIHRlcm1pbmF0aW5nICdcMCcgaWYgbmVjZXNzYXJ5LiAgKi8KLSsgICAgICBkb19jbGVh bnVwcyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuIGk7Ci0gCi0gICAgICAgYnJlYWs7Ci1AQCAt NTU0LDYgKzU3Nyw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAgICAgICBlcnJvciAoXygiSW52YWxpZCBwYXNjYWwgdHlw ZSBjb2RlICVkIGluIHN5bWJvbCB0YWJsZS4iKSwgVFlQRV9DT0RFICh0eXBlKSk7Ci0gICAgIH0K LSAgIGdkYl9mbHVzaCAoc3RyZWFtKTsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgIHJl dHVybiAoMCk7Ci0gfQotIAwKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5j Ci1pbmRleCBjODg1YzZhLi5jYmY5YzY1IDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBi L2dkYi9wYXJzZS5jCi1AQCAtNDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3Ry dWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQotICAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCAmY3VycmVudF90YXJnZXQpOwotICAgaWYg KHBjICE9IGFkZHIpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmlmdW5j X21zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKLSsKLSAgICAgICAvKiBJ biB0aGlzIGNhc2UsIGFzc3VtZSB3ZSBoYXZlIGEgY29kZSBzeW1ib2wgaW5zdGVhZCBvZgotIAkg YSBkYXRhIHN5bWJvbC4gICovCi0tICAgICAgdHlwZSA9IG1zdF90ZXh0OwotKwotKyAgICAgIGlm IChpZnVuY19tc3ltICE9IE5VTEwgJiYgTVNZTUJPTF9UWVBFIChpZnVuY19tc3ltKSA9PSBtc3Rf dGV4dF9nbnVfaWZ1bmMKLSsJICAmJiBTWU1CT0xfVkFMVUVfQUREUkVTUyAoaWZ1bmNfbXN5bSkg PT0gcGMpCi0rCXsKLSsJICAvKiBBIGZ1bmN0aW9uIGRlc2NyaXB0b3IgaGFzIGJlZW4gcmVzb2x2 ZWQgYnV0IFBDIGlzIHN0aWxsIGluIHRoZQotKwkgICAgIGdudS1pZnVuYyByZXNvbHZlciBib2R5 IChzdWNoIGFzIGJlY2F1c2UgaW5mZXJpb3IgZG9lcyBub3QgcnVuIHRvCi0rCSAgICAgYmUgYWJs ZSB0byBjYWxsIGl0KS4gICovCi0rCSAgdHlwZSA9IG1zdF90ZXh0X2dudV9pZnVuYzsKLSsJfQot KyAgICAgIGVsc2UKLSsJdHlwZSA9IG1zdF90ZXh0OwotICAgICAgIHNlY3Rpb24gPSBOVUxMOwot ICAgICAgIGFkZHIgPSBwYzsKLSAgICAgfQotQEAgLTUyMSw2ICs1MzMsMTEgQEAgd3JpdGVfZXhw X21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKLSAgICAgICB3cml0ZV9l eHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wp OwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSsgICAg ICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkKLSsJCQkJCSAgICAg ICAtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKTsKLSsgICAgICBicmVhazsKLSsKLSAg ICAgY2FzZSBtc3RfZGF0YToKLSAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgotICAgICBjYXNlIG1z dF9ic3M6Ci1AQCAtNTI4LDYgKzU0NSwxMCBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1p bmltYWxfc3ltYm9sICptc3ltYm9sKQotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmls ZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z19kYXRhX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci0g Ci0rICAgIGNhc2UgbXN0X3Nsb3RfZ290X3BsdDoKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUg KG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfZ290X3BsdF9zeW1ib2wpOwotKyAgICAg IGJyZWFrOworKyAgLyogYHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZScgaGFuZGxpbmcgaXMgdW5z dXBwb3J0ZWQgYnkgdGhpcyBmdW5jdGlvbi4gICovCisrICBnZGJfYXNzZXJ0ICgoVFlQRV9DT0RF ICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCisrCSAgICAgICAmJiBUWVBFX0NPREUgKHR5cGUp ICE9IFRZUEVfQ09ERV9VTklPTikKKysJICAgICAgfHwgIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBl KSk7CiArCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxl X3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3Vua25vd25fc3ltYm9sKTsKLSAgICAgICBicmVhazsK LUBAIC0xNDEyLDYgKzE0MzMsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hh ciAqeSwgLi4uKQotIAotIGludAotIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCSBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCQkJIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAotIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCi0gCQkJIHZvaWQgKmRh dGEpCi1AQCAtMTQ1Myw3ICsxNDc1LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0gCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVs dHNbcG9zICsgMiArIGFyZ10udHlwZTsKLSAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0g VFlQRV9PQkpGSUxFICh0eXBlKTsKLSAKLS0JICAgIGlmIChvYmpmaWxlICYmICgqb2JqZmlsZV9m dW5jKSAob2JqZmlsZSwgZGF0YSkpCi0rCSAgICBpZiAob2JqZmlsZSAmJiBvYmpmaWxlX2Z1bmMg JiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSAJICAgICAgcmV0dXJuIDE7Ci0g CSAgfQotICAgICAgIH0KLUBAIC0xNDcxLDcgKzE0OTMsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAJLyogQ2hlY2sgb2Jq ZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KLSAJICAgU1lNQk9MX09C Sl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KLS0JaWYgKCgqb2JqZmlsZV9mdW5j KSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0rCWlmIChvYmpmaWxl X2Z1bmMKLSsJICAgICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+ b2JqZmlsZSwgZGF0YSkpCi0gCSAgcmV0dXJuIDE7Ci0gCi0gCS8qIENoZWNrIG9iamZpbGUgd2hl cmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi1AQCAtMTQ4 NCwyNCArMTUwNywyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwgaW50IHBvcywKLSAKLSAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5k IE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0gCi0tICBpZiAodHlw ZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpCi0rICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMgJiYgKCp0 eXBlX2Z1bmMpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuIDE7Ci0rICBpZiAodHlwZSAmJiBU WVBFX09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwotICAgICAgICYmICgqb2JqZmlsZV9m dW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCi0gICAgIHJldHVybiAxOwotLSAgaWYg KG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSsgIGlmIChvYmpm aWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQot ICAgICByZXR1cm4gMTsKLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBDYWxsIE9CSkZJTEVf RlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcgcmVmZXJlbmNlZCBieSBF WFAuCi0tICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVMTCBPQkpGSUxF LiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KLS0gICBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVk IERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMKLS0gICBub24t emVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvIHZhbHVlIGlzIGltbWVkaWF0ZWx5 IHJldHVybmVkIHRvCi0tICAgdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvIGlzIHJldHVybmVk IGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4KLS0gICAqLwotKy8qIENhbGwgVFlQ RV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBPQkpGSUxFIGZvdW5kIGJl aW5nCi0rICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUgZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxs ZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAotKyAgIE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBh c3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4KLSsgICBJZiBh bnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhl cikgbm9uLXplcm8KLSsgICB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2Fs bGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQKLSsgICBhZnRlciBpdGVyYXRpbmcgdGhy b3VnaCB3aG9sZSBFWFAuICAqLwotIAotIHN0YXRpYyBpbnQKLSBleHBfaXRlcmF0ZSAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwKLSsJICAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAq dHlwZSwgdm9pZCAqZGF0YSksCi0gCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAotIAkgICAgIHZvaWQgKmRhdGEpCi0gewotQEAg LTE1MTYsNyArMTU0Miw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAot IAotICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwotICAgICAgIGlmIChleHAtPmxhbmd1YWdl X2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCi0tCQkJCQkJCSAg IG9iamZpbGVfZnVuYywgZGF0YSkpCi0rCQkJCQkJCSAgIHR5cGVfZnVuYywKLSsJCQkJCQkJICAg b2JqZmlsZV9mdW5jLAotKwkJCQkJCQkgICBkYXRhKSkKLSAJcmV0dXJuIDE7Ci0gCi0gICAgICAg ZW5kcG9zID0gcG9zOwotQEAgLTE1NDcsNyArMTU3NSwyNiBAQCBleHBfdXNlc19vYmpmaWxlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBn ZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5V TEwpOwotIAotLSAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIGV4cF91c2VzX29iamZpbGVfaXRl ciwgb2JqZmlsZSk7Ci0rICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVMTCwgZXhwX3VzZXNf b2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKLSt9CisrICBpZiAoISgqaXRlcikgKHR5cGUsIGRhdGEp KQorKyAgICByZXR1cm47CiArCi0rLyogSGVscGVyIGZvciBleHBfdHlwZXNfbWFya191c2VkLiAg Ki8KKysgIC8qIEl0ZXJhdGUgYWxsIHRoZSB0eXBlIGluc3RhbmNlcyBvZiB0aGlzIG1haW5fdHlw ZS4gICovCisrICB0eXBlX2l0ZXIgPSB0eXBlOworKyAgZG8KKysgICAgeworKyAgICAgIGdkYl9h c3NlcnQgKFRZUEVfTUFJTl9UWVBFICh0eXBlX2l0ZXIpID09IFRZUEVfTUFJTl9UWVBFICh0eXBl KSk7CiArCi0rc3RhdGljIGludAotK2V4cF90eXBlc19tYXJrX3VzZWRfaXRlciAoc3RydWN0IHR5 cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICB0eXBlX21hcmtfdXNlZCAodHlwZSk7Cisr ICAgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1BPSU5URVJfVFlQRSAodHlwZSksIGl0ZXIsIGRh dGEpOworKyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9SRUZFUkVOQ0VfVFlQRSAodHlwZSks IGl0ZXIsIGRhdGEpOwogKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCi0rICBy ZXR1cm4gMDsKKysgICAgICB0eXBlX2l0ZXIgPSBUWVBFX0NIQUlOICh0eXBlX2l0ZXIpOworKyAg ICB9CisrICB3aGlsZSAodHlwZV9pdGVyICE9IHR5cGUpOworKworKyAgZm9yIChpID0gMDsgaSA8 IFRZUEVfTkZJRUxEUyAodHlwZSk7IGkrKykKKysgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX0ZJ RUxEX1RZUEUgKHR5cGUsIGkpLCBpdGVyLCBkYXRhKTsKKysKKysgIG1haW5fdHlwZV9jcmF3bCAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOworKyAgbWFpbl90eXBlX2NyYXds IChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKICt9CiArCi0rLyogQ2Fs bCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IHR5cGUgY29udGFpbmVkIGluIEVYUC4gICovCisrLyog QSBoZWxwZXIgZm9yIGRlbGV0ZV90eXBlIHdoaWNoIGRlbGV0ZXMgYSBtYWluX3R5cGUgYW5kIHRo ZSB0aGluZ3MgdG8gd2hpY2gKKysgICBpdCByZWZlcnMuICBUWVBFIGlzIGEgdHlwZSB3aG9zZSBt YWluX3R5cGUgd2Ugd2lzaCB0byBkZXN0cm95LiAgKi8KICsKLSt2b2lkCi0rZXhwX3R5cGVzX21h cmtfdXNlZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCkKKytzdGF0aWMgdm9pZAorK2RlbGV0ZV9t YWluX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQogK3sKLSsgIGV4cF9pdGVyYXRlIChleHAsIGV4 cF90eXBlc19tYXJrX3VzZWRfaXRlciwgTlVMTCwgTlVMTCk7Ci0gfQotIAotIHZvaWQKLWRpZmYg LS1naXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVmcy5oCi1pbmRleCBiYjc5 YWUxLi5mYmJkNjAwIDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKLSsrKyBiL2dkYi9w YXJzZXItZGVmcy5oCi1AQCAtMTk0LDYgKzE5NCw4IEBAIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xl bmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwKLSAJ CQkJICAgICAgaW50ICopOwotIAotIGV4dGVybiBpbnQgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0rCQkJCSAgICBpbnQgKCp0eXBlX2Z1 bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCQkgICAgICB2b2lkICpkYXRhKSwKLSAJCQkJ ICAgIGludCAoKm9iamZpbGVfZnVuYykKLSAJCQkJICAgICAgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpkYXRhKSwKLSAJCQkJICAgIHZvaWQgKmRhdGEpOwotQEAgLTI4NSw2ICsyODcs NyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKLSAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGltbWVk aWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybwotICAgICAgICBz aG91bGQgYmUgcmV0dXJuZWQuICAqLwotICAgICBpbnQgKCpvcGVyYXRvcl9jaGVjaykgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0rCQkJICAgaW50ICgqdHlwZV9mdW5jKSAoc3Ry dWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAotIAkJCSAgIGludCAoKm9iamZpbGVfZnVuYykg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQkJCXZvaWQgKmRhdGEpLAotIAkJCSAgIHZv aWQgKmRhdGEpOwotQEAgLTMyMyw0ICszMjYsOCBAQCBleHRlcm4gdm9pZCBwYXJzZXJfZnByaW50 ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLikgQVRUUklCVVRFX1BSSU5URiAoMiwgMyk7Ci0g Ci0gZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0gCi0rZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxl IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisrICBp bnQgaTsKICsKLStleHRlcm4gdm9pZCBleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwKTsKKysgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKTsKKysg IGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7CiArCi0gI2VuZGlmIC8q IFBBUlNFUl9ERUZTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LW5hdC5jIGIvZ2Ri L3BwYy1saW51eC1uYXQuYwotaW5kZXggMThkZGVlNy4uNjUyYjAyYSAxMDA2NDQKLS0tLSBhL2dk Yi9wcGMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLUBAIC0yMDEwLDYg KzIwMTAsMjQgQEAgcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwg aW50IGxlbiwgaW50IHJ3LAotICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0rLyogU2VlIHRhcmdldF9k ZXRhY2hfd2F0Y2hwb2ludHMuICBEbyBub3QgdXNlIHdyYXBwZXIKLSsgICBwcGNfbGludXhfcmVt b3ZlX3dhdGNocG9pbnQgYXMgaXQgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQotKyAg IChzYXZlZF9kYWJyX3ZhbHVlKS4gICovCisrICB4ZnJlZSAoVFlQRV9OQU1FICh0eXBlKSk7Cisr ICB4ZnJlZSAoVFlQRV9UQUdfTkFNRSAodHlwZSkpOwogKwotK3N0YXRpYyBpbnQKLStwcGNfbGlu dXhfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQotK3sKLSsgIHBpZF90IHRpZDsKKysgIGZvciAo aSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyArK2kpCisrICAgIHsKKysgICAgICB4ZnJl ZSAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7CiArCi0rICB0aWQgPSBUSURHRVQgKGluZmVy aW9yX3B0aWQpOwotKyAgaWYgKHRpZCA9PSAwKQotKyAgICB0aWQgPSBQSURHRVQgKGluZmVyaW9y X3B0aWQpOworKyAgICAgIGlmIChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBpKSA9PSBGSUVM RF9MT0NfS0lORF9QSFlTTkFNRSkKKysJeGZyZWUgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1F ICh0eXBlLCBpKSk7CisrICAgIH0KKysgIHhmcmVlIChUWVBFX0ZJRUxEUyAodHlwZSkpOwogKwot KyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDAp Ci0rICAgIHJldHVybiAtMTsKLSsgIHJldHVybiAwOworKyAgZ2RiX2Fzc2VydCAoIUhBVkVfQ1BM VVNfU1RSVUNUICh0eXBlKSk7CisrCisrICB4ZnJlZSAoVFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsK ICt9CiArCi0gc3RhdGljIHZvaWQKLSBwcGNfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQp Ci0gewotQEAgLTIzNDksNiArMjM2Nyw3IEBAIF9pbml0aWFsaXplX3BwY19saW51eF9uYXQgKHZv aWQpCi0gICB0LT50b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgPSBwcGNfbGludXhfcmVn aW9uX29rX2Zvcl9od193YXRjaHBvaW50OwotICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBw cGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQ7Ci0gICB0LT50b19yZW1vdmVfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludDsKLSsgIHQtPnRvX2RldGFjaF93YXRjaHBvaW50 cyA9IHBwY19saW51eF9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gICB0LT50b19zdG9wcGVkX2J5X3dh dGNocG9pbnQgPSBwcGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50OwotICAgdC0+dG9fc3Rv cHBlZF9kYXRhX2FkZHJlc3MgPSBwcGNfbGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3M7Ci0gICB0 LT50b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlID0gcHBjX2xpbnV4X3dhdGNocG9pbnRf YWRkcl93aXRoaW5fcmFuZ2U7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJp bnRjbWQuYwotaW5kZXggNWZmYTA5OS4uNThkOWM3OSAxMDA2NDQKLS0tLSBhL2dkYi9wcmludGNt ZC5jCi0rKysgYi9nZGIvcHJpbnRjbWQuYwotQEAgLTk3MSw2ICs5NzEsMTEgQEAgcHJpbnRfY29t bWFuZF8xIChjaGFyICpleHAsIGludCBpbnNwZWN0LCBpbnQgdm9pZHByaW50KQotICAgZWxzZQot ICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7Ci0gCi0rICAvKiBEbyBub3QgdHJ5 IHRvIE9CSkVDVF9BRERSRVNTX1NFVCBoZXJlIGFueXRoaW5nLiAgV2UgYXJlIGludGVyZXN0ZWQg aW4gdGhlCi0rICAgICBzb3VyY2UgdmFyaWFibGUgYmFzZSBhZGRyZXNzZXMgYXMgZm91bmQgYnkg UkVBRF9WQVJfVkFMVUUuICBUaGUgdmFsdWUgaGVyZQotKyAgICAgY2FuIGJlIGFscmVhZHkgYSBj YWxjdWxhdGVkIGV4cHJlc3Npb24gYWRkcmVzcyBpbmFwcHJvcHJpYXRlIGZvcgotKyAgICAgRFdf T1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCisrLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2Vz IG9uIFRZUEVfQ0hBSU4gb2YgVFlQRSwgaW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKKysgICBt YWluX3R5cGUuICBUWVBFIG11c3QgYmUgYSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJt YW5lbnQgbm9yIG9iamZpbGUKKysgICBhc3NvY2lhdGVkLiAgKi8KICsKLSAgIGlmICh2b2lkcHJp bnQgfHwgKHZhbCAmJiB2YWx1ZV90eXBlICh2YWwpICYmCi0gCQkgICAgVFlQRV9DT0RFICh2YWx1 ZV90eXBlICh2YWwpKSAhPSBUWVBFX0NPREVfVk9JRCkpCi0gICAgIHsKLUBAIC0xNDcxLDYgKzE0 NzYsMjIgQEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKLSAJc2V0X2ludGVy bmFsdmFyIChsb29rdXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwot ICAgICB9Ci0gfQorK3N0YXRpYyB2b2lkCisrZGVsZXRlX3R5cGVfY2hhaW4gKHN0cnVjdCB0eXBl ICp0eXBlKQorK3sKKysgIHN0cnVjdCB0eXBlICp0eXBlX2l0ZXIsICp0eXBlX2l0ZXJfdG9fZnJl ZTsKICsKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBm cm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KKysgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FS REFCTEUgKHR5cGUpKTsKKysgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVM TCk7CiArCi0rc3RhdGljIHZvaWQKLStwcmludF90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisrICBk ZWxldGVfbWFpbl90eXBlICh0eXBlKTsKKysKKysgIHR5cGVfaXRlciA9IHR5cGU7CisrICBkbwor KyAgICB7CisrICAgICAgdHlwZV9pdGVyX3RvX2ZyZWUgPSB0eXBlX2l0ZXI7CisrICAgICAgdHlw ZV9pdGVyID0gVFlQRV9DSEFJTiAodHlwZV9pdGVyKTsKKysgICAgICB4ZnJlZSAodHlwZV9pdGVy X3RvX2ZyZWUpOworKyAgICB9CisrICB3aGlsZSAodHlwZV9pdGVyICE9IHR5cGUpOworK30KKysK KysvKiBIYXNoIGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8KKysKKytz dGF0aWMgaGFzaHZhbF90CisrdHlwZV9kaXNjYXJkYWJsZV9oYXNoIChjb25zdCB2b2lkICpwKQog K3sKLSsgIHN0cnVjdCBkaXNwbGF5ICpkOworKyAgY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUgPSBw OwogKwotKyAgaWYgKGxhc3RfZXhhbWluZV92YWx1ZSkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHZh bHVlX3R5cGUgKGxhc3RfZXhhbWluZV92YWx1ZSkpOworKyAgcmV0dXJuIGh0YWJfaGFzaF9wb2lu dGVyIChUWVBFX01BSU5fVFlQRSAodHlwZSkpOworK30KICsKLSsgIGZvciAoZCA9IGRpc3BsYXlf Y2hhaW47IGQ7IGQgPSBkLT5uZXh0KQotKyAgICBpZiAoZC0+ZXhwKQotKyAgICAgIGV4cF90eXBl c19tYXJrX3VzZWQgKGQtPmV4cCk7CisrLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHR5cGVfZGlz Y2FyZGFibGVfdGFibGUuICAqLworKworK3N0YXRpYyBpbnQKKyt0eXBlX2Rpc2NhcmRhYmxlX2Vx dWFsIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorK3sKKysgIGNvbnN0IHN0cnVjdCB0 eXBlICpsZWZ0ID0gYTsKKysgIGNvbnN0IHN0cnVjdCB0eXBlICpyaWdodCA9IGI7CisrCisrICBy ZXR1cm4gVFlQRV9NQUlOX1RZUEUgKGxlZnQpID09IFRZUEVfTUFJTl9UWVBFIChyaWdodCk7CiAr fQogKwotIAwKLSAKLSAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNo YWluLgotQEAgLTI4NjksNCArMjg5MCw2IEBAIFNob3cgcHJpbnRpbmcgb2Ygc291cmNlIGZpbGVu YW1lIGFuZCBsaW5lIG51bWJlciB3aXRoIDxzeW1ib2w+LiIpLCBOVUxMLAotICAgYWRkX2NvbSAo ImV2YWwiLCBub19jbGFzcywgZXZhbF9jb21tYW5kLCBfKCJcCi0gQ29udmVydCBcInByaW50ZiBm b3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFyZzIsIGFyZzMsIC4uLiwgYXJnbiB0b1xuXAotIGEgY29t bWFuZCBsaW5lLCBhbmQgY2FsbCBpdC4iKSk7CisrLyogQSBoZWxwZXIgZm9yIHR5cGVfbWFya191 c2VkLiAgKi8KICsKLSsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21h cmtfdXNlZCk7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9wc3ltdGFiLmMgYi9nZGIvcHN5bXRhYi5j Ci1pbmRleCA5N2E0ZWVjLi5mY2UxOWM5IDEwMDY0NAotLS0tIGEvZ2RiL3BzeW10YWIuYwotKysr IGIvZ2RiL3BzeW10YWIuYwotQEAgLTQyMSw2ICs0MjEsMTQgQEAgbG9va3VwX3N5bWJvbF9hdXhf cHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgcmV0dXJuIE5VTEw7Ci0gfQot IAotK3N0YXRpYyB2b2lkCi0rcHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nX3BzeW10YWJzIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJICAgICAgaW50IGtpbmQsIGNvbnN0IGNoYXIg Km5hbWUsCi0rCQkJCSAgICAgIGRvbWFpbl9lbnVtIGRvbWFpbikKKytzdGF0aWMgaW50CisrdHlw ZV9tYXJrX3VzZWRfY3Jhd2wgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICp1bnVzZWQpCiArewot KyAgLyogTm90aGluZy4gICovCisrICBpZiAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKQorKyAg ICByZXR1cm4gMDsKKysKKysgIGlmIChUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPT0gdHlw ZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKKysgICAgcmV0dXJuIDA7CisrCisrICBUWVBFX0RJ U0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OworKwor KyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMTsKICt9CiArCi0g LyogTG9vaywgaW4gcGFydGlhbF9zeW10YWIgUFNULCBmb3Igc3ltYm9sIHdob3NlIG5hdHVyYWwg bmFtZSBpcyBOQU1FLgotICAgIENoZWNrIHRoZSBnbG9iYWwgc3ltYm9scyBpZiBHTE9CQUwsIHRo ZSBzdGF0aWMgc3ltYm9scyBpZiBub3QuICovCi0gCi1AQCAtOTQxLDcgKzk0OSw3IEBAIHBzeW10 YWJfdG9fZnVsbG5hbWUgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHMpCi0gICByZXR1cm4gTlVM TDsKLSB9Ci0gCi0tc3RhdGljIGNoYXIgKgotK3N0YXRpYyBjb25zdCBjaGFyICoKLSBmaW5kX3N5 bWJvbF9maWxlX2Zyb21fcGFydGlhbCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNo YXIgKm5hbWUpCi0gewotICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3Q7Ci1AQCAtMTE5OSw2 ICsxMjA3LDcgQEAgY29uc3Qgc3RydWN0IHF1aWNrX3N5bWJvbF9mdW5jdGlvbnMgcHN5bV9mdW5j dGlvbnMgPQotICAgZm9yZ2V0X2NhY2hlZF9zb3VyY2VfaW5mb19wYXJ0aWFsLAotICAgbG9va3Vw X3N5bXRhYl92aWFfcGFydGlhbF9zeW10YWIsCi0gICBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFi cywKLSsgIHByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZ19wc3ltdGFicywKLSAgIHByaW50X3Bz eW10YWJfc3RhdHNfZm9yX29iamZpbGUsCi0gICBkdW1wX3BzeW10YWJzX2Zvcl9vYmpmaWxlLAot ICAgcmVsb2NhdGVfcHN5bXRhYnMsCi1kaWZmIC0tZ2l0IGEvZ2RiL3BzeW10YWIuaCBiL2dkYi9w c3ltdGFiLmgKLWluZGV4IDliOGM4ZGYuLmRlOGI2N2UgMTAwNjQ0Ci0tLS0gYS9nZGIvcHN5bXRh Yi5oCi0rKysgYi9nZGIvcHN5bXRhYi5oCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQdWJsaWMgcGFy dGlhbCBzeW1ib2wgdGFibGUgZGVmaW5pdGlvbnMuCi0gCi0tICAgQ29weXJpZ2h0IChDKSAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMjAwOSwg MjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLSAgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHREIuCi0gCi1AQCAtMjgsNCArMjgsNiBAQCB2b2lkIG1hcF9wYXJ0aWFsX3N5bWJv bF9maWxlbmFtZXMgKHZvaWQgKCopIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLSAKLSBl eHRlcm4gY29uc3Qgc3RydWN0IHF1aWNrX3N5bWJvbF9mdW5jdGlvbnMgcHN5bV9mdW5jdGlvbnM7 Ci0gCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zIGR3YXJmMl9n ZGJfaW5kZXhfZnVuY3Rpb25zOwotKwotICNlbmRpZiAvKiBQU1lNVEFCX0ggKi8KLWRpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weSBiL2dkYi9weXRob24vbGli L2dkYi9GcmFtZUl0ZXJhdG9yLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uNTY1NDU0NgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1l SXRlcmF0b3IucHkKLUBAIC0wLDAgKzEsMzMgQEAKLSsjIEl0ZXJhdG9yIG92ZXIgZnJhbWVzLgor Ky8qIE1hcmsgVFlQRSBhbmQgaXRzIGNvbm5lY3RlZCB0eXBlcyBhcyB1c2VkIGluIHRoaXMgZnJl ZV9hbGxfdHlwZXMgcGFzcy4gICovCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrdm9pZAorK3R5cGVfbWFya191c2VkIChzdHJ1 Y3QgdHlwZSAqdHlwZSkKKyt7CisrICBpZiAodHlwZSA9PSBOVUxMKQorKyAgICByZXR1cm47CiAr Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyAgaWYgKCFUWVBFX0RJU0NBUkRBQkxF ICh0eXBlKSkKKysgICAgcmV0dXJuOwogKwotK2NsYXNzIEZyYW1lSXRlcmF0b3I6Ci0rICAgICIi IkFuIGl0ZXJhdG9yIHRoYXQgaXRlcmF0ZXMgb3ZlciBmcmFtZXMuIiIiCisrICBtYWluX3R5cGVf Y3Jhd2wgKHR5cGUsIHR5cGVfbWFya191c2VkX2NyYXdsLCBOVUxMKTsKKyt9CiArCi0rICAgIGRl ZiBfX2luaXRfXyAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgIkluaXRpYWxpemUgYSBGcmFtZUl0 ZXJhdG9yLiAgRlJBTUUgaXMgdGhlIHN0YXJ0aW5nIGZyYW1lLiIKLSsgICAgICAgIHNlbGYuZnJh bWUgPSBmcmFtZQorKy8qIEEgdHJhdmVyc2UgY2FsbGJhY2sgZm9yIHR5cGVfZGlzY2FyZGFibGVf dGFibGUgd2hpY2ggcmVtb3ZlcyBhbnkKKysgICB0eXBlX2Rpc2NhcmRhYmxlIHdob3NlIHJlZmVy ZW5jZSBjb3VudCBpcyBub3cgemVybyAodW51c2VkIGxpbmspLiAgKi8KICsKLSsgICAgZGVmIF9f aXRlcl9fIChzZWxmKToKLSsgICAgICAgIHJldHVybiBzZWxmCisrc3RhdGljIGludAorK3R5cGVf ZGlzY2FyZGFibGVfcmVtb3ZlICh2b2lkICoqc2xvdCwgdm9pZCAqdW51c2VkKQorK3sKKysgIHN0 cnVjdCB0eXBlICp0eXBlID0gKnNsb3Q7CiArCi0rICAgIGRlZiBuZXh0IChzZWxmKToKLSsgICAg ICAgIHJlc3VsdCA9IHNlbGYuZnJhbWUKLSsgICAgICAgIGlmIHJlc3VsdCBpcyBOb25lOgotKyAg ICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSsgICAgICAgIHNlbGYuZnJhbWUgPSByZXN1 bHQub2xkZXIgKCkKLSsgICAgICAgIHJldHVybiByZXN1bHQKLWRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3Jh cHBlci5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmI3OTBhNTQKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKLUBA IC0wLDAgKzEsMTEyIEBACi0rIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVzLgorKyAgZ2RiX2Fzc2Vy dCAoVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpOwogKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgaWYgKFRZUEVfRElTQ0FSREFC TEVfQUdFICh0eXBlKSAhPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50KQorKyAgICB7Cisr ICAgICAgZGVsZXRlX3R5cGVfY2hhaW4gKHR5cGUpOwogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysgICAgICBodGFiX2NsZWFyX3Nsb3QgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUs IHNsb3QpOworKyAgICB9CiArCi0raW1wb3J0IGdkYgotKwotKyMgRklYTUU6IGFyZ3VhYmx5IGFs bCB0aGlzIHNob3VsZCBiZSBvbiBGcmFtZSBzb21laG93LgotK2NsYXNzIEZyYW1lV3JhcHBlcjoK LSsgICAgZGVmIF9faW5pdF9fIChzZWxmLCBmcmFtZSk6Ci0rICAgICAgICBzZWxmLmZyYW1lID0g ZnJhbWU7Ci0rCi0rICAgIGRlZiB3cml0ZV9zeW1ib2wgKHNlbGYsIHN0cmVhbSwgc3ltLCBibG9j ayk6Ci0rICAgICAgICBpZiBsZW4gKHN5bS5saW5rYWdlX25hbWUpOgotKyAgICAgICAgICAgIG5z eW0sIGlzX2ZpZWxkX29mX3RoaXMgPSBnZGIubG9va3VwX3N5bWJvbCAoc3ltLmxpbmthZ2VfbmFt ZSwgYmxvY2spCi0rICAgICAgICAgICAgaWYgbnN5bS5hZGRyX2NsYXNzICE9IGdkYi5TWU1CT0xf TE9DX1JFR0lTVEVSOgotKyAgICAgICAgICAgICAgICBzeW0gPSBuc3ltCi0rCi0rICAgICAgICBz dHJlYW0ud3JpdGUgKHN5bS5wcmludF9uYW1lICsgIj0iKQotKyAgICAgICAgdHJ5OgotKyAgICAg ICAgICAgIHZhbCA9IHNlbGYucmVhZF92YXIgKHN5bSkKLSsgICAgICAgICAgICBpZiB2YWwgIT0g Tm9uZToKLSsgICAgICAgICAgICAgICAgdmFsID0gc3RyICh2YWwpCi0rICAgICAgICAjIEZJWE1F OiB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgYSBtb3JlIHByZWNpc2UgZXhjZXB0aW9uIGhlcmUuCi0r ICAgICAgICBleGNlcHQgUnVudGltZUVycm9yLCB0ZXh0OgotKyAgICAgICAgICAgIHZhbCA9IHRl eHQKLSsgICAgICAgIGlmIHZhbCA9PSBOb25lOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAo Ij8/PyIpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoc3RyICh2 YWwpKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfbG9jYWxzIChzZWxmLCBzdHJlYW0sIGZ1bmMp OgotKyAgICAgICAgaWYgbm90IGZ1bmM6Ci0rICAgICAgICAgICAgcmV0dXJuCi0rCi0rICAgICAg ICBmaXJzdCA9IFRydWUKLSsgICAgICAgIGJsb2NrID0gZnVuYy52YWx1ZQotKwotKyAgICAgICAg Zm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAgICBpZiBzeW0uaXNfYXJndW1lbnQ6Ci0rICAg ICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgICAgIHNlbGYud3JpdGVfc3ltYm9s IChzdHJlYW0sIHN5bSwgYmxvY2spCi0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgnXG4nKQot KwotKyAgICBkZWYgcHJpbnRfZnJhbWVfYXJncyAoc2VsZiwgc3RyZWFtLCBmdW5jKToKLSsgICAg ICAgIGlmIG5vdCBmdW5jOgotKyAgICAgICAgICAgIHJldHVybgotKwotKyAgICAgICAgZmlyc3Qg PSBUcnVlCi0rICAgICAgICBibG9jayA9IGZ1bmMudmFsdWUKLSsKLSsgICAgICAgIGZvciBzeW0g aW4gYmxvY2s6Ci0rICAgICAgICAgICAgaWYgbm90IHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAg ICAgICAgICAgY29udGludWU7Ci0rCi0rICAgICAgICAgICAgaWYgbm90IGZpcnN0OgotKyAgICAg ICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIsICIpCi0rCi0rICAgICAgICAgICAgc2VsZi53cml0 ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBibG9jaykKLSsgICAgICAgICAgICBmaXJzdCA9IEZhbHNl Ci0rCi0rICAgICMgRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGp1c3QgYmUgYSBtZXRob2Qg b24gZ2RiLkZyYW1lLgotKyAgICAjIEJ1dCB0aGVuIHdlIG5lZWQgc3RyZWFtIHdyYXBwZXJzLgot KyAgICBkZWYgZGVzY3JpYmUgKHNlbGYsIHN0cmVhbSwgZnVsbCk6Ci0rICAgICAgICBpZiBzZWxm LnR5cGUgKCkgPT0gZ2RiLkRVTU1ZX0ZSQU1FOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAo IiA8ZnVuY3Rpb24gY2FsbGVkIGZyb20gZ2RiPlxuIikKLSsgICAgICAgIGVsaWYgc2VsZi50eXBl ICgpID09IGdkYi5TSUdUUkFNUF9GUkFNRToKLSsgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIg PHNpZ25hbCBoYW5kbGVyIGNhbGxlZD5cbiIpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAg IHNhbCA9IHNlbGYuZmluZF9zYWwgKCkKLSsgICAgICAgICAgICBwYyA9IHNlbGYucGMgKCkKLSsg ICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lICgpCi0rICAgICAgICAgICAgaWYgbm90IG5hbWU6 Ci0rICAgICAgICAgICAgICAgIG5hbWUgPSAiPz8iCi0rICAgICAgICAgICAgaWYgcGMgIT0gc2Fs LnBjIG9yIG5vdCBzYWwuc3ltdGFiOgotKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIg MHglMDh4IGluIiAlIHBjKQotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiAiICsgbmFtZSAr ICIgKCIpCi0rCi0rICAgICAgICAgICAgZnVuYyA9IHNlbGYuZnVuY3Rpb24gKCkKLSsgICAgICAg ICAgICBzZWxmLnByaW50X2ZyYW1lX2FyZ3MgKHN0cmVhbSwgZnVuYykKLSsKLSsgICAgICAgICAg ICBzdHJlYW0ud3JpdGUgKCIpIikKLSsKLSsgICAgICAgICAgICBpZiBzYWwuc3ltdGFiIGFuZCBz YWwuc3ltdGFiLmZpbGVuYW1lOgotKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgYXQg IiArIHNhbC5zeW10YWIuZmlsZW5hbWUpCi0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAo IjoiICsgc3RyIChzYWwubGluZSkpCi0rCi0rICAgICAgICAgICAgaWYgbm90IHNlbGYubmFtZSAo KSBvciAobm90IHNhbC5zeW10YWIgb3Igbm90IHNhbC5zeW10YWIuZmlsZW5hbWUpOgotKyAgICAg ICAgICAgICAgICBsaWIgPSBnZGIuc29saWJfYWRkcmVzcyAocGMpCi0rICAgICAgICAgICAgICAg IGlmIGxpYjoKLSsgICAgICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiBmcm9tICIgKyBs aWIpCi0rCi0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiXG4iKQotKwotKyAgICAgICAgICAg IGlmIGZ1bGw6Ci0rICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVfbG9jYWxzIChzdHJl YW0sIGZ1bmMpCi0rCi0rICAgIGRlZiBfX2dldGF0dHJfXyAoc2VsZiwgbmFtZSk6Ci0rICAgICAg ICByZXR1cm4gZ2V0YXR0ciAoc2VsZi5mcmFtZSwgbmFtZSkKLWRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvX19pbml0X18ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMzc1YzY4Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKLUBAIC0wLDAgKzEsMTkg QEAKLSsjIFN0YXJ0dXAgY29kZS4KKysgIHJldHVybiAxOworK30KICsKLSsjIENvcHlyaWdodCAo QykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBGcmVlIGFsbCB0aGUg cmVjbGFpbWFibGUgdHlwZXMgdGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGFuZCB0aGF0IGhhdmUK KysgICBjdXJyZW50bHkgemVybyByZWZlcmVuY2UgY291bnRlci4KICsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgZWFjaCBj b21tYW5kLCBzdWNjZXNzZnVsIG9yIG5vdC4gIFVzZSB0aGlzCisrICAgY2xlYW51cCBvbmx5IGlu IHRoZSBHREIgaWRsZSBzdGF0ZSBhcyBHREIgb25seSBtYXJrcyB0aG9zZSB0eXBlcyB1c2VkIGJ5 CisrICAgZ2xvYmFsbHkgdHJhY2tlZCBvYmplY3RzICh3aXRoIG5vIGF1dG92YXJpYWJsZSByZWZl cmVuY2VzIHRyYWNraW5nKS4gICovCiArCi0rIyBMb2FkIHRoZSByZXF1aXJlIGNvbW1hbmQgYnkg ZGVmYXVsdC4KLStpbXBvcnQgZ2RiLmNvbW1hbmQucmVxdWlyZQotZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNl LnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmJhYWI1ZgotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQotQEAgLTAsMCAr MSw0MiBAQAotKyMgRmlsdGVyaW5nIGJhY2t0cmFjZS4KKyt2b2lkCisrZnJlZV9hbGxfdHlwZXMg KHZvaWQpCisreworKyAgLyogTWFyayBhIG5ldyBwYXNzLiAgQXMgR0RCIGNoZWNrcyBhbGwgdGhl IGVudHJpZXMgd2VyZSB2aXNpdGVkIGFmdGVyIGVhY2gKKysgICAgIHBhc3MgdGhlcmUgY2Fubm90 IGJlIGFueSBzdGFsZSBlbnRyaWVzIGFscmVhZHkgY29udGFpbmluZyB0aGUgY2hhbmdlZAorKyAg ICAgdmFsdWUuICAqLworKyAgdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCBePSAxOwogKwot KyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAg b2JzZXJ2ZXJfbm90aWZ5X21hcmtfdXNlZCAoKTsKICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrICBodGFiX3RyYXZlcnNlICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCB0eXBlX2Rp c2NhcmRhYmxlX3JlbW92ZSwgTlVMTCk7CisrfQorIAorIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8g aW5pdGlhbGl6ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHlwZXMuICAqLworIAorQEAgLTM3MDEs NiArNDI1NCw4IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp CisgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQp OworICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCisgICAgID0gbG9va3VwX3BvaW50 ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lk KSk7CisrICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCisrICAgID0gbG9va3VwX2Z1 bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7CisgCisgICAvKiBU aGlzIHR5cGUgcmVwcmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCisgICBidWls dGluX3R5cGUtPmludGVybmFsX2ZuCitAQCAtMzgxNCw2ICs0MzY5LDE4IEBAIG9iamZpbGVfdHlw ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1 ZyBpbmZvPiIsIG9iamZpbGUpOworICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5u b2RlYnVnX3RleHRfc3ltYm9sKQorICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7Cisr ICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCisrICAgID0gaW5p dF90eXBlIChUWVBFX0NPREVfRlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywKKysJCSAiPHRl eHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsCisrCQkg b2JqZmlsZSk7CisrICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4 dF9nbnVfaWZ1bmNfc3ltYm9sKQorKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5 bWJvbDsKKysgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbAorKyAgICA9IGlu aXRfdHlwZSAoVFlQRV9DT0RFX1BUUiwgZ2RiYXJjaF9hZGRyX2JpdCAoZ2RiYXJjaCkgLyA4LCAw LAorKwkJICI8dGV4dCBmcm9tIGp1bXAgc2xvdCBpbiAuZ290LnBsdCwgbm8gZGVidWcgaW5mbz4i LAorKwkJIG9iamZpbGUpOworKyAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2Rl YnVnX2dvdF9wbHRfc3ltYm9sKQorKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5 bWJvbDsKKyAgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19kYXRhX3N5bWJvbAorICAgICA9IGluaXRf dHlwZSAoVFlQRV9DT0RFX0lOVCwKKyAJCSBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gpIC8gSE9T VF9DSEFSX0JJVCwgMCwKK0BAIC0zODY4LDYgKzQ0MzUsMTEgQEAgdm9pZAorIF9pbml0aWFsaXpl X2dkYnR5cGVzICh2b2lkKQorIHsKKyAgIGdkYnR5cGVzX2RhdGEgPSBnZGJhcmNoX2RhdGFfcmVn aXN0ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0X2luaXQpOwogKwotK2ltcG9ydCBnZGIKLStp bXBvcnQgaXRlcnRvb2xzCisrICB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlID0gaHRhYl9jcmVhdGVf YWxsb2MgKDIwLCB0eXBlX2Rpc2NhcmRhYmxlX2hhc2gsCisrCQkJCQkgICAgIHR5cGVfZGlzY2Fy ZGFibGVfZXF1YWwsIE5VTEwsCisrCQkJCQkgICAgIHhjYWxsb2MsIHhmcmVlKTsKICsKLSsjIE91 ciBvbmx5IGV4cG9ydHMuCi0rX19hbGxfXyA9IFsncHVzaF9mcmFtZV9maWx0ZXInLCAnY3JlYXRl X2ZyYW1lX2ZpbHRlciddCisgICBvYmpmaWxlX3R5cGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVf ZGF0YSAoKTsKKyAKKyAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9f Y2xhc3MsICZvdmVybG9hZF9kZWJ1ZywgXygiXAorZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5o IGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IDUxZWI0NDUuLjYyN2U1YWYgMTAwNjQ0CistLS0gYS9n ZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKK0BAIC0xNzAsNiArMTcwLDcgQEAg ZW51bSB0eXBlX2ZsYWdfdmFsdWUKKyAgIFRZUEVfRkxBR19WRUNUT1IgPSAoMSA8PCAxNSksCisg ICBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNiksCisgICBUWVBFX0ZMQUdfU1RV Ql9TVVBQT1JURUQgPSAoMSA8PCAxNyksCisrICBUWVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwg MTgpLAorIAorICAgLyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcuICAqLworICAgVFlQRV9GTEFH X01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAorQEAgLTIxNCw2ICsyMTUsMTEgQEAgZW51bSB0eXBl X2luc3RhbmNlX2ZsYWdfdmFsdWUKKyAKKyAjZGVmaW5lIFRZUEVfVEFSR0VUX1NUVUIodCkJKFRZ UEVfTUFJTl9UWVBFICh0KS0+ZmxhZ190YXJnZXRfc3R1YikKKyAKKysvKiBUeXBlIG5lZWRzIHRv IGJlIGV2YWx1YXRlZCBvbiBlYWNoIENIRUNLX1RZUEVERUYgYW5kIGl0cyByZXN1bHRzIG11c3Qg bm90IGJlCisrICAgc3RpY2t5LiAgKi8KICsKLStmcmFtZV9maWx0ZXIgPSBOb25lCisrI2RlZmlu ZSBUWVBFX0RZTkFNSUModCkJCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZHluYW1pYykKICsK LStkZWYgcHVzaF9mcmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKLSsgICAgIiIiUmVnaXN0ZXIg YSBuZXcgYmFja3RyYWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNlJyBjb21tYW5k LgotK1RoZSBmaWx0ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4gYXJndW1lbnQu ICBUaGUgaXRlcmF0b3IKLSt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmplY3RzLiAgVGhl IGZpbHRlciBzaG91bGQgaW4gdHVybiBhY3QgYXMKLSthbiBpdGVyYXRvciByZXR1cm5pbmcgc3Vj aCBvYmplY3RzLiIiIgotKyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1lX2Zp bHRlciA9PSBOb25lOgotKyAgICAgICAgZnJhbWVfZmlsdGVyID0gY29uc3RydWN0b3IKLSsgICAg ZWxzZToKLSsgICAgICAgIGZyYW1lX2ZpbHRlciA9IGxhbWJkYSBpdGVyYXRvcjogY29uc3RydWN0 b3IgKGZyYW1lX2ZpbHRlciAoaXRlcmF0b3IpKQorIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBp cyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAorICAqIGEgc3RhdGljIG1vZGlmaWVy LgorICAqIE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBt ZW1iZXJzCitAQCAtMjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1 ZQorIAorICNkZWZpbmUgVFlQRV9OT1RURVhUKHQpCShUWVBFX0lOU1RBTkNFX0ZMQUdTICh0KSAm IFRZUEVfSU5TVEFOQ0VfRkxBR19OT1RURVhUKQorIAorKy8qIFVzZWQgb25seSBmb3IgVFlQRV9D T0RFX0ZVTkMgd2hlcmUgaXQgc3BlY2lmaWVzIHRoZSByZWFsIGZ1bmN0aW9uCisrICAgYWRkcmVz cyBpcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGNhbGwuICBUWVBFX1RBUkdFVF9UWVBFIGRl dGVybWluZXMgdGhlCisrICAgZmluYWwgcmV0dXJuZWQgZnVuY3Rpb24gdHlwZSB0byBiZSBwcmVz ZW50ZWQgdG8gdXNlci4gICovCiArCi0rZGVmIGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpOgot KyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1lX2ZpbHRlciBpcyBOb25lOgot KyAgICAgICAgcmV0dXJuIGl0ZXIKLSsgICAgcmV0dXJuIGZyYW1lX2ZpbHRlciAoaXRlcikKKysj ZGVmaW5lIFRZUEVfR05VX0lGVU5DKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZ251X2lm dW5jKQogKwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL19faW5pdF9f LnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvX19pbml0X18ucHkKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9fX2luaXRfXy5weQotQEAgLTAsMCArMSBAQAorIC8q IFR5cGUgb3duZXIuICBJZiBUWVBFX09CSkZJTEVfT1dORUQgaXMgdHJ1ZSwgdGhlIHR5cGUgaXMg b3duZWQgYnkKKyAgICB0aGUgb2JqZmlsZSByZXRyaWV2ZWQgYXMgVFlQRV9PQkpGSUxFLiAgT3Ro ZXJ3ZWlzZSwgdGhlIHR5cGUgaXMKKyAgICBvd25lZCBieSBhbiBhcmNoaXRlY3R1cmU7IFRZUEVf T0JKRklMRSBpcyBOVUxMIGluIHRoaXMgY2FzZS4gICovCitAQCAtMjg1LDYgKzI5Nyw0OCBAQCBl bnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorIAorICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9D TEFTUyh0KSAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQorIAorKy8q IERlZmluZSB0aGlzIHR5cGUgYXMgYmVpbmcgcmVjbGFpbWFibGUgZHVyaW5nIGZyZWVfYWxsX3R5 cGVzLiAgVHlwZSBpcworKyAgIHJlcXVpcmVkIHRvIGJlIGhhdmUgVFlQRV9PQkpGSUxFIHNldCB0 byBOVUxMLiAgU2V0dGluZyB0aGlzIGZsYWcgcmVxdWlyZXMKKysgICBpbml0aWFsaXppbmcgVFlQ RV9ESVNDQVJEQUJMRV9BR0UsIHNlZSBhbGxvY190eXBlX2Rpc2NhcmRhYmxlLiAgKi8KICsKLWRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weSBiL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL2FsaWFzLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uOTZiNjYxOAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvYWxpYXMucHkKLUBAIC0wLDAgKzEsNTkgQEAKLSsjIEFsaWFzIGNvbW1hbmQuCisr I2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZGlz Y2FyZGFibGUpCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrLyogTWFya2VyIHRoaXMgdHlwZSBoYXMgYmVlbiB2aXNpdGVkIGJ5IHRoZSB0 eXBlX21hcmtfdXNlZCBieSB0aGlzCisrICAgbWFyay1hbmQtc3dlZXAgdHlwZXMgZ2FyYmFnZSBj b2xsZWN0aW5nIHBhc3MuICBDdXJyZW50IHBhc3MgaXMgcmVwcmVzZW50ZWQKKysgICBieSBUWVBF X0RJU0NBUkRBQkxFX0FHRV9DVVJSRU5ULiAgKi8KICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0KQkoVFlQRV9NQUlOX1RZUEUg KHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2FnZSkKICsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgQWxp YXNJbXBsZW1lbnRhdGlvbiAoZ2RiLkNvbW1hbmQpOgotKyAgICBkZWYgX19pbml0X18gKHNlbGYs IG5hbWUsIHJlYWwsIGRvYyk6Ci0rICAgICAgICAjIEhhdmUgdG8gc2V0IF9fZG9jX18gYmVmb3Jl IHRoZSBzdXBlciBpbml0IGNhbGwuCi0rICAgICAgICAjIEl0IHdvdWxkIGJlIG5pY2UgaWYgZ2Ri J3MgaGVscCBsb29rZWQgdXAgX19kb2NfXyBkeW5hbWljYWxseS4KLSsgICAgICAgIHNlbGYuX19k b2NfXyA9IGRvYwotKyAgICAgICAgIyBOb3RlOiBubyBnb29kIHdheSB0byBjb21wbGV0ZSA6KAot KyAgICAgICAgc3VwZXIgKEFsaWFzSW1wbGVtZW50YXRpb24sIHNlbGYpLl9faW5pdF9fIChuYW1l LCBnZGIuQ09NTUFORF9OT05FKQotKyAgICAgICAgc2VsZi5yZWFsID0gcmVhbAotKwotKyAgICBk ZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgZ2RiLmV4ZWN1dGUgKHNl bGYucmVhbCArICcgJyArIGFyZywgZnJvbV90dHkpCi0rCi0rY2xhc3MgQWxpYXNDb21tYW5kIChn ZGIuQ29tbWFuZCk6Ci0rICAgICIiIkFsaWFzIG9uZSBjb21tYW5kIHRvIGFub3RoZXIuCi0rSW4g dGhlIHNpbXBsZXN0IGZvcm0sIHRoZSBmaXJzdCB3b3JkIGlzIHRoZSBuYW1lIG9mIHRoZSBhbGlh cywgYW5kCi0rdGhlIHJlbWFpbmluZyB3b3JkcyBhcmUgdGhlIHRoZSBleHBhbnNpb24uCi0rQW4g Jz0nIGJ5IGl0c2VsZiBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYSBtdWx0aS13b3JkIGFsaWFzOyB3 b3JkcwotK2JlZm9yZSB0aGUgJz0nIGFyZSB0aGUgbmFtZSBvZiB0aGUgbmV3IGNvbW1hbmQuIiIi Ci0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICAjIENvbXBsZXRpb24gaXMg bm90IHF1aXRlIHJpZ2h0IGhlcmUuCi0rICAgICAgICBzdXBlciAoQWxpYXNDb21tYW5kLCBzZWxm KS5fX2luaXRfXyAoImFsaWFzIiwgZ2RiLkNPTU1BTkRfTk9ORSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkKLSsKLSsg ICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBzZWxmLmRvbnRf cmVwZWF0ICgpCi0rICAgICAgICAjIFdpdGhvdXQgc29tZSBmb3JtIG9mIHF1b3Rpbmcgd2UgY2Fu J3QgYWxpYXMgYSBtdWx0aS13b3JkCi0rICAgICAgICAjIGNvbW1hbmQgdG8gYW5vdGhlciBjb21t YW5kLgotKyAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgpCi0rICAgICAgICB0cnk6Ci0rICAgICAg ICAgICAgc3RhcnQgPSBhcmdzLmluZGV4ICgnPScpCi0rICAgICAgICAgICAgZW5kID0gc3RhcnQg KyAxCi0rICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSsgICAgICAgICAgICBzdGFydCA9IDEK LSsgICAgICAgICAgICBlbmQgPSAxCi0rICAgICAgICB0YXJnZXQgPSAiICIuam9pbihhcmdzW2Vu ZDpdKQotKyAgICAgICAgQWxpYXNJbXBsZW1lbnRhdGlvbiAoIiAiLmpvaW4gKGFyZ3NbMDpzdGFy dF0pLCB0YXJnZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBjb21tYW5k IGlzIGFuIGFsaWFzIGZvciAnJXMnLiIgJSB0YXJnZXQpCi0rCi0rQWxpYXNDb21tYW5kKCkKLWRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgYi9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi5lYzlhNTI3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKLUBAIC0wLDAgKzEsMTA2IEBACi0rIyBOZXcg YmFja3RyYWNlIGNvbW1hbmQuCisrLyogSXMgSElHSF9CT1VORCBhIGxvdy1ib3VuZCByZWxhdGl2 ZSBjb3VudCAoMSkgb3IgdGhlIGhpZ2ggYm91bmQgaXRzZWxmICgwKT8gICovCiArCi0rIyBDb3B5 cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrI2Rl ZmluZSBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQocmFuZ2VfdHlwZSkgXAorKyAgKFRZ UEVfTUFJTl9UWVBFIChyYW5nZV90eXBlKS0+ZmxhZ19yYW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50 KQogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysvKiBOb3QgYWxsb2NhdGVkLiAg VFlQRV9BTExPQ0FURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElmIHRoaXMgZmxh ZworKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBOVUxMIHRoZW4gdGhlIHR5 cGUgaXMgYWxsb2NhdGVkLiAgSWYgdGhpcworKyAgIGZsYWcgaXMgdW5zZXQgYW5kIFRZUEVfQUxM T0NBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCisrICAgZGV0ZXJtaW5l cyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gc3RhdGUuICAqLwogKwotK2ltcG9ydCBnZGIKLStpbXBv cnQgZ2RiLmJhY2t0cmFjZQotK2ltcG9ydCBpdGVydG9vbHMKLStmcm9tIGdkYi5GcmFtZUl0ZXJh dG9yIGltcG9ydCBGcmFtZUl0ZXJhdG9yCi0rZnJvbSBnZGIuRnJhbWVXcmFwcGVyIGltcG9ydCBG cmFtZVdyYXBwZXIKLStpbXBvcnQgc3lzCi0rCi0rY2xhc3MgUmV2ZXJzZUJhY2t0cmFjZVBhcmFt ZXRlciAoZ2RiLlBhcmFtZXRlcik6Ci0rICAgICIiIlRoZSBuZXctYmFja3RyYWNlIGNvbW1hbmQg Y2FuIHNob3cgYmFja3RyYWNlcyBpbiAncmV2ZXJzZScgb3JkZXIuCi0rVGhpcyBtZWFucyB0aGF0 IHRoZSBpbm5lcm1vc3QgZnJhbWUgd2lsbCBiZSBwcmludGVkIGxhc3QuCi0rTm90ZSB0aGF0IHJl dmVyc2UgYmFja3RyYWNlcyBhcmUgbW9yZSBleHBlbnNpdmUgdG8gY29tcHV0ZS4iIiIKLSsKLSsg ICAgc2V0X2RvYyA9ICJFbmFibGUgb3IgZGlzYWJsZSByZXZlcnNlIGJhY2t0cmFjZXMuIgotKyAg ICBzaG93X2RvYyA9ICJTaG93IHdoZXRoZXIgYmFja3RyYWNlcyB3aWxsIGJlIHByaW50ZWQgaW4g cmV2ZXJzZSBvcmRlci4iCi0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIGdk Yi5QYXJhbWV0ZXIuX19pbml0X18gKHNlbGYsICJyZXZlcnNlLWJhY2t0cmFjZSIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSywgZ2RiLlBBUkFNX0JP T0xFQU4pCi0rICAgICAgICAjIERlZmF1bHQgdG8gY29tcGF0aWJpbGl0eSB3aXRoIGdkYi4KLSsg ICAgICAgIHNlbGYudmFsdWUgPSBGYWxzZQotKwotK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFjZSAo Z2RiLkNvbW1hbmQpOgotKyAgICAiIiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1l cywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lcy4KLStXaXRoIGEgbmVnYXRpdmUgYXJndW1lbnQs IHByaW50IG91dGVybW9zdCAtQ09VTlQgZnJhbWVzLgotK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1YWxp ZmllciBhbHNvIHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCi0rVXNl IG9mIHRoZSAncmF3JyBxdWFsaWZpZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFibGUg bW9kdWxlcy4KLSsiIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgICMg RklYTUU6IHRoaXMgaXMgbm90IHdvcmtpbmcgcXVpdGUgd2VsbCBlbm91Z2ggdG8gcmVwbGFjZQot KyAgICAgICAgIyAiYmFja3RyYWNlIiB5ZXQuCi0rICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRf XyAoc2VsZiwgIm5ldy1iYWNrdHJhY2UiLCBnZGIuQ09NTUFORF9TVEFDSykKLSsgICAgICAgIHNl bGYucmV2ZXJzZSA9IFJldmVyc2VCYWNrdHJhY2VQYXJhbWV0ZXIoKQotKwotKyAgICBkZWYgcmV2 ZXJzZV9pdGVyIChzZWxmLCBpdGVyKToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAgICBm b3IgaXRlbSBpbiBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0rICAg ICAgICByZXN1bHQucmV2ZXJzZSgpCi0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0rCi0rICAgIGRl ZiBmaW5hbF9uIChzZWxmLCBpdGVyLCB4KToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAg ICBmb3IgaXRlbSBpbiBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0r ICAgICAgICByZXR1cm4gcmVzdWx0W3g6XQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcs IGZyb21fdHR5KToKLSsgICAgICAgIGkgPSAwCi0rICAgICAgICBjb3VudCA9IDAKLSsgICAgICAg IGZpbHRlciA9IFRydWUKLSsgICAgICAgIGZ1bGwgPSBGYWxzZQotKwotKyAgICAgICAgZm9yIHdv cmQgaW4gYXJnLnNwbGl0ICgiICIpOgotKyAgICAgICAgICAgIGlmIHdvcmQgPT0gJyc6Ci0rICAg ICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgZWxpZiB3b3JkID09ICdyYXcnOgot KyAgICAgICAgICAgICAgICBmaWx0ZXIgPSBGYWxzZQotKyAgICAgICAgICAgIGVsaWYgd29yZCA9 PSAnZnVsbCc6Ci0rICAgICAgICAgICAgICAgIGZ1bGwgPSBUcnVlCi0rICAgICAgICAgICAgZWxz ZToKLSsgICAgICAgICAgICAgICAgY291bnQgPSBpbnQgKHdvcmQpCi0rCi0rICAgICAgICAjIEZJ WE1FOiBwcm92aWRlIG9wdGlvbiB0byBzdGFydCBhdCBzZWxlY3RlZCBmcmFtZQotKyAgICAgICAg IyBIb3dldmVyLCBzaG91bGQgc3RpbGwgbnVtYmVyIGFzIGlmIHN0YXJ0aW5nIGZyb20gbmV3ZXN0 Ci0rCW5ld2VzdF9mcmFtZSA9IGdkYi5zZWxlY3RlZF90aHJlYWQgKCkubmV3ZXN0X2ZyYW1lICgp Ci0rICAgICAgICBpdGVyID0gaXRlcnRvb2xzLmltYXAgKEZyYW1lV3JhcHBlciwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVJdGVyYXRvciAobmV3ZXN0X2ZyYW1lKSkKLSsg ICAgICAgIGlmIGZpbHRlcjoKLSsgICAgICAgICAgICBpdGVyID0gZ2RiLmJhY2t0cmFjZS5jcmVh dGVfZnJhbWVfZmlsdGVyIChpdGVyKQotKwotKyAgICAgICAgIyBOb3cgd3JhcCBpbiBhbiBpdGVy YXRvciB0aGF0IG51bWJlcnMgdGhlIGZyYW1lcy4KLSsgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMu aXppcCAoaXRlcnRvb2xzLmNvdW50ICgwKSwgaXRlcikKLSsKLSsgICAgICAgICMgUmV2ZXJzZSBp ZiB0aGUgdXNlciB3YW50ZWQgdGhhdC4KLSsgICAgICAgIGlmIHNlbGYucmV2ZXJzZS52YWx1ZToK LSsgICAgICAgICAgICBpdGVyID0gc2VsZi5yZXZlcnNlX2l0ZXIgKGl0ZXIpCi0rCi0rICAgICAg ICAjIEV4dHJhY3Qgc3ViLXJhbmdlIHVzZXIgd2FudHMuCi0rICAgICAgICBpZiBjb3VudCA8IDA6 Ci0rICAgICAgICAgICAgaXRlciA9IHNlbGYuZmluYWxfbiAoaXRlciwgY291bnQpCi0rICAgICAg ICBlbGlmIGNvdW50ID4gMDoKLSsgICAgICAgICAgICBpdGVyID0gaXRlcnRvb2xzLmlzbGljZSAo aXRlciwgMCwgY291bnQpCi0rCi0rICAgICAgICBmb3IgcGFpciBpbiBpdGVyOgotKyAgICAgICAg ICAgIHN5cy5zdGRvdXQud3JpdGUgKCIjJS0yZCIgJSBwYWlyWzBdKQotKyAgICAgICAgICAgIHBh aXJbMV0uZGVzY3JpYmUgKHN5cy5zdGRvdXQsIGZ1bGwpCi0rCi0rRmlsdGVyaW5nQmFja3RyYWNl KCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3Jz LnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLUBAIC0wLDAg KzEsMzcgQEAKLSsjIElnbm9yZSBlcnJvcnMgaW4gdXNlciBjb21tYW5kcy4KKysjZGVmaW5lIFRZ UEVfTk9UX0FMTE9DQVRFRCh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hbGxvY2F0 ZWQpCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrLyogTm90IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBOVUxM IGluIHN1Y2ggY2FzZS4gIElmIHRoaXMgZmxhZworKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09D SUFURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgorKyAgIHRo aXMgZmxhZyBpcyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4g aXRzIERXQVJGIGJsb2NrCisrICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9uIHN0 YXRlLiAgKi8KICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrI2RlZmluZSBUWVBF X05PVF9BU1NPQ0lBVEVEKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfbm90X2Fzc29jaWF0 ZWQpCisrCisrLyogQWRkcmVzcyBvZiB0aGUgYWN0dWFsIGRhdGEgYXMgZm9yIERXX0FUX2RhdGFf bG9jYXRpb24uICBJdHMgZHdhcmYgYmxvY2sgbXVzdAorKyAgIG5vdCBiZSBldmFsdWF0ZWQgdW5s ZXNzIGJvdGggVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZQor KyAgIGZhbHNlLiAgSWYgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgc2V0IHRoZW4gVFlQRV9E QVRBX0xPQ0FUSU9OX0FERFIgdmFsdWUKKysgICBpcyB0aGUgYWN0dWFsIGRhdGEgYWRkcmVzcyB2 YWx1ZS4gIElmIHVuc2V0IGFuZAorKyAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyBp cyBOVUxMIHRoZW4gdGhlIHZhbHVlIGlzIHRoZSBub3JtYWwKKysgICB2YWx1ZV9yYXdfYWRkcmVz cy4gIElmIHVuc2V0IGFuZCBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgaXMgbm90IE5V TEwKKysgICB0aGVuIGl0cyBEV0FSRiBibG9jayBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgZGF0YSBh ZGRyZXNzLiAgKi8KICsKLStpbXBvcnQgZ2RiCisrI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05f SVNfQUREUih0KSBcCisrICAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RhdGFfbG9jYXRpb25f aXNfYWRkcikKICsKLStjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29tbWFuZCk6Ci0r ICAgICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVycm9ycy4KLStP bmx5IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCi0rVGhpcyBpcyBwcmltYXJpbHkg dXNlZnVsIGluIHNjcmlwdHMuIiIiCisgLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0 LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCisgICogY29uc3QgbW9kaWZpZXIuCisgICov CitAQCAtMzg4LDExICs0NDIsMTkgQEAgc3RydWN0IG1haW5fdHlwZQorICAgdW5zaWduZWQgaW50 IGZsYWdfdmFyYXJncyA6IDE7CisgICB1bnNpZ25lZCBpbnQgZmxhZ192ZWN0b3IgOiAxOworICAg dW5zaWduZWQgaW50IGZsYWdfc3R1Yl9zdXBwb3J0ZWQgOiAxOworKyAgdW5zaWduZWQgaW50IGZs YWdfZ251X2lmdW5jIDogMTsKKyAgIHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDog MTsKKyAgIHVuc2lnbmVkIGludCBmbGFnX29iamZpbGVfb3duZWQgOiAxOworICAgLyogVHJ1ZSBp ZiB0aGlzIHR5cGUgd2FzIGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgorICAgICAg InN0cnVjdCIuICAqLworICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOwor KyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGUgOiAxOworKyAgdW5zaWduZWQgaW50IGZs YWdfZGlzY2FyZGFibGVfYWdlIDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX2R5bmFtaWMgOiAx OworKyAgdW5zaWduZWQgaW50IGZsYWdfcmFuZ2VfaGlnaF9ib3VuZF9pc19jb3VudCA6IDE7Cisr ICB1bnNpZ25lZCBpbnQgZmxhZ19ub3RfYWxsb2NhdGVkIDogMTsKKysgIHVuc2lnbmVkIGludCBm bGFnX25vdF9hc3NvY2lhdGVkIDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX2RhdGFfbG9jYXRp b25faXNfYWRkciA6IDE7CisgCisgICAvKiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNo IGZpZWxkIG9mIHRoZSB0eXBlX3NwZWNpZmljIHVuaW9uCisgICAgICBpcyBiZWluZyB1c2VkIGZv ciB0aGlzIHR5cGUsIGlmIGFueS4gICovCitAQCAtNDY2LDYgKzUyOCwyMCBAQCBzdHJ1Y3QgbWFp bl90eXBlCisgCisgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CisgCisrICAvKiBGb3IgRFdf QVRfZGF0YV9sb2NhdGlvbi4gICovCisrICB1bmlvbgorKyAgICB7CisrICAgICAgc3RydWN0IGR3 YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKKysgICAgICBDT1JFX0FERFIgYWRkcjsK KysgICAgfQorKyAgZGF0YV9sb2NhdGlvbjsKICsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToK LSsgICAgICAgIHN1cGVyIChJZ25vcmVFcnJvcnNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoImln bm9yZS1lcnJvcnMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZGIuQ09NTUFORF9PQlNDVVJFLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FLi4uCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9DT01NQU5E KQorKyAgLyogRm9yIERXX0FUX2FsbG9jYXRlZC4gICovCisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24gKmFsbG9jYXRlZDsKICsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9t X3R0eSk6Ci0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJv bV90dHkpCi0rICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcGFzcworKyAgLyogRm9yIERX X0FUX2Fzc29jaWF0ZWQuICAqLworKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICphc3Nv Y2lhdGVkOwogKwotK0lnbm9yZUVycm9yc0NvbW1hbmQgKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFu ZC9wYWhvbGUucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMWEwYmYw Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUu cHkKLUBAIC0wLDAgKzEsNzUgQEAKLSsjIHBhaG9sZSBjb21tYW5kIGZvciBnZGIKKyAgIC8qIEZv ciBzdHJ1Y3R1cmUgYW5kIHVuaW9uIHR5cGVzLCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQu CisgICAgICBGb3Igc2V0IGFuZCBwYXNjYWwgYXJyYXkgdHlwZXMsIHRoZXJlIGlzIG9uZSAiZmll bGQiLAorICAgICAgd2hvc2UgdHlwZSBpcyB0aGUgZG9tYWluIHR5cGUgb2YgdGhlIHNldCBvciBh cnJheS4KK0BAIC01MzksMTMgKzYxNSwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgCisgICAgIHN0 cnVjdCByYW5nZV9ib3VuZHMKKyAgICAgeworKyAgICAgIHN0cnVjdAorKwl7CisrCSAgdW5pb24K KysJICAgIHsKKysJICAgICAgTE9OR0VTVCBjb25zdGFudDsKKysJICAgICAgc3RydWN0IGR3YXJm Ml9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKKysJICAgICAgc3RydWN0CisrCQl7CisrCQkg IHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlzdDsKKysJCSAgc3RydWN0IHR5cGUg KnR5cGU7CisrCQl9CisrCSAgICAgIGR3YXJmX2xvY2xpc3Q7CisrCSAgICB9CisrCSAgdTsKKysJ ICBlbnVtIHJhbmdlX2JvdW5kX2tpbmQKKysJICAgIHsKKysJICAgICAgUkFOR0VfQk9VTkRfS0lO RF9DT05TVEFOVCwKKysJICAgICAgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSywKKysJICAg ICAgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUCisrCSAgICB9CisrCSAga2luZDsKKysJ fQorICAgICAgIC8qIExvdyBib3VuZCBvZiByYW5nZS4gKi8KKy0KKy0gICAgICBMT05HRVNUIGxv dzsKKy0KKysgICAgICBsb3csCisgICAgICAgLyogSGlnaCBib3VuZCBvZiByYW5nZS4gKi8KKy0K Ky0gICAgICBMT05HRVNUIGhpZ2g7CisrICAgICAgaGlnaCwKKysgICAgICAvKiBCeXRlIHN0cmlk ZSBvZiByYW5nZS4gKi8KKysgICAgICBieXRlX3N0cmlkZTsKKyAKKyAgICAgICAvKiBGbGFncyBp bmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cgYW5kIGhpZ2ggYXJlCisgICAgICAg ICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNwZWN0aXZlIHJhbmdlIHZhbHVlIGlzCitAQCAt OTE3LDkgKzEwMTQsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1 Y3QgdHlwZSAqKTsKKyAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5 cGUpLT5wb2ludGVyX3R5cGUKKyAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUp ICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCisgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBl KSAodGhpc3R5cGUpLT5jaGFpbgorLS8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVE RUYgdHlwZSwgeW91IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmLgorLSAgIEJ1dCBjaGVja190 eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRiB0eXBlLAorLSAg IHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxv Y2F0ZV92YWx1ZQorKy8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYsIEFSUkFZ IG9yIFNUUklORyB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsCisrICAgY2hlY2tfdHlwZWRlZi4gIEJ1 dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRgor KyAgIHR5cGUsIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBT aW5jZSBhbGxvY2F0ZV92YWx1ZQorICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RI IChWQUxVRV9UWVBFIChYKSkgaXMgc2FmZS4gICovCisgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlz dHlwZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCisgLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUg VFlQRV9DT0RFX1RZUEVERUYsIHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCitAQCAtOTI3LDExICsx MDI0LDE2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBl ICopOworICNkZWZpbmUgVFlQRV9DT0RFKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlw ZSktPmNvZGUKKyAjZGVmaW5lIFRZUEVfTkZJRUxEUyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUo dGhpc3R5cGUpLT5uZmllbGRzCisgI2RlZmluZSBUWVBFX0ZJRUxEUyh0aGlzdHlwZSkgVFlQRV9N QUlOX1RZUEUodGhpc3R5cGUpLT5mbGRzX2JuZHMuZmllbGRzCisrI2RlZmluZSBUWVBFX0RBVEFf TE9DQVRJT05fRFdBUkZfQkxPQ0sodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSkt PmRhdGFfbG9jYXRpb24uZHdhcmZfYmxvY2sKKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9B RERSKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5kYXRhX2xvY2F0aW9uLmFk ZHIKKysjZGVmaW5lIFRZUEVfQUxMT0NBVEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhp c3R5cGUpLT5hbGxvY2F0ZWQKKysjZGVmaW5lIFRZUEVfQVNTT0NJQVRFRCh0aGlzdHlwZSkgVFlQ RV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+YXNzb2NpYXRlZAorIAorICNkZWZpbmUgVFlQRV9JTkRF WF9UWVBFKHR5cGUpIFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkKKyAjZGVmaW5lIFRZUEVfUkFO R0VfREFUQSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5mbGRzX2JuZHMuYm91 bmRzCistI2RlZmluZSBUWVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEo cmFuZ2VfdHlwZSktPmxvdworLSNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGlnaAorKyNkZWZpbmUgVFlQRV9MT1dfQk9VTkQo cmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3cudS5jb25zdGFudAor KyNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5n ZV90eXBlKS0+aGlnaC51LmNvbnN0YW50CisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdl X3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5jb25zdGFu dAorICNkZWZpbmUgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKKyAgICBU WVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvd191bmRlZmluZWQKKyAjZGVmaW5lIFRZUEVf SElHSF9CT1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkgXAorQEAgLTk0OCw3ICsxMDUwLDE0IEBA IGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworICAg IChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCisgCisgI2Rl ZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAorLSAgIChUWVBF X0xPV19CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkKKysgIFRZUEVfTE9XX0JP VU5EIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIw MDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogVFlQRV9CWVRFX1NU UklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSB3aXRoIGEgZmFsbGJhY2sgdG8gdGhl CisrICAgZWxlbWVudCBzaXplIGlmIG5vIHNwZWNpZmljIHN0cmlkZSB2YWx1ZSBpcyBrbm93bi4g ICovCisrI2RlZmluZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFKGFycmF5dHlwZSkJCVwK KysgIChUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpID09IDAJ XAorKyAgID8gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5dHlwZSkpCQlcCisr ICAgOiBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpKQorIAor IC8qIEMrKyAqLworIAorQEAgLTExNzYsNiArMTI4NSwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBl CisgICAgICAoKikgKCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4g ICovCisgICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKKyAKKysgIC8qIGBmdW5jdGlv biByZXR1cm5pbmcgcG9pbnRlciB0byBmdW5jdGlvbiAocmV0dXJuaW5nIHZvaWQpJyB0eXBlLgor KyAgICAgVGhlIGZpbmFsIHZvaWQgcmV0dXJuIHR5cGUgaXMgbm90IHNpZ25pZmljYW50IGZvciBp dC4gICovCisrICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX2Z1bmM7CiArCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorIAorICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8K KyAKK0BAIC0xMjE2LDYgKzEzMjksOCBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCisgCisgICAvKiBU eXBlcyB1c2VkIGZvciBzeW1ib2xzIHdpdGggbm8gZGVidWcgaW5mb3JtYXRpb24uICAqLworICAg c3RydWN0IHR5cGUgKm5vZGVidWdfdGV4dF9zeW1ib2w7CisrICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1 Z190ZXh0X2dudV9pZnVuY19zeW1ib2w7CisrICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19nb3RfcGx0 X3N5bWJvbDsKKyAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOworICAgc3RydWN0 IHR5cGUgKm5vZGVidWdfdW5rbm93bl9zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190 bHNfc3ltYm9sOworQEAgLTEzNjMsNiArMTQ3OCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNy ZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAorIAkJCQkgICAg ICAgc3RydWN0IHR5cGUgKik7CisgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfYXJyYXlfcmFu Z2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOworIAorK2V4dGVybiBDT1JFX0FERFIg dHlwZV9yYW5nZV9hbnlfZmllbGRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAor KwkJCQkJCWludCBmaWVsZG5vKTsKICsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgUGFob2xlIChn ZGIuQ29tbWFuZCk6Ci0rICAgICIiIlNob3cgdGhlIGhvbGVzIGluIGEgc3RydWN0dXJlLgotK1Ro aXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSB0eXBlIG5hbWUuCi0rSXQgcHJp bnRzIHRoZSB0eXBlIGFuZCBkaXNwbGF5cyBjb21tZW50cyBzaG93aW5nIHdoZXJlIGhvbGVzIGFy ZS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChQYWhv bGUsIHNlbGYpLl9faW5pdF9fICgicGFob2xlIiwgZ2RiLkNPTU1BTkRfTk9ORSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfU1lNQk9MKQotKwot KyAgICBkZWYgcGFob2xlIChzZWxmLCB0eXBlLCBsZXZlbCwgbmFtZSk6Ci0rICAgICAgICBpZiBu YW1lIGlzIE5vbmU6Ci0rICAgICAgICAgICAgbmFtZSA9ICcnCi0rICAgICAgICB0YWcgPSB0eXBl LnRhZwotKyAgICAgICAgaWYgdGFnIGlzIE5vbmU6Ci0rICAgICAgICAgICAgdGFnID0gJycKLSsg ICAgICAgIHByaW50ICclc3N0cnVjdCAlcyB7JyAlICgnICcgKiAoMiAqIGxldmVsKSwgdGFnKQot KyAgICAgICAgYml0cG9zID0gMAotKyAgICAgICAgZm9yIGZpZWxkIGluIHR5cGUuZmllbGRzICgp OgotKyAgICAgICAgICAgICMgU2tpcCBzdGF0aWMgZmllbGRzLgotKyAgICAgICAgICAgIGlmIG5v dCBoYXNhdHRyIChmaWVsZCwgKCdiaXRwb3MnKSk6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVl Ci0rCi0rICAgICAgICAgICAgZnR5cGUgPSBmaWVsZC50eXBlLnN0cmlwX3R5cGVkZWZzKCkKLSsK LSsgICAgICAgICAgICBpZiBiaXRwb3MgIT0gZmllbGQuYml0cG9zOgotKyAgICAgICAgICAgICAg ICBob2xlID0gZmllbGQuYml0cG9zIC0gYml0cG9zCi0rICAgICAgICAgICAgICAgIHByaW50ICcg IC8qIFhYWCAlZCBiaXQgaG9sZSwgdHJ5IHRvIHBhY2sgKi8nICUgaG9sZQotKyAgICAgICAgICAg ICAgICBiaXRwb3MgPSBmaWVsZC5iaXRwb3MKLSsgICAgICAgICAgICBpZiBmaWVsZC5iaXRzaXpl ID4gMDoKLSsgICAgICAgICAgICAgICAgZmllbGRzaXplID0gZmllbGQuYml0c2l6ZQotKyAgICAg ICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgICMgVEFSR0VUX0NIQVJfQklUIGhlcmUuLi4K LSsgICAgICAgICAgICAgICAgZmllbGRzaXplID0gOCAqIGZ0eXBlLnNpemVvZgotKwotKyAgICAg ICAgICAgICMgVEFSR0VUX0NIQVJfQklUCi0rICAgICAgICAgICAgcHJpbnQgJyAvKiAlM2QgJTNk ICovJyAlIChpbnQgKGJpdHBvcyAvIDgpLCBpbnQgKGZpZWxkc2l6ZSAvIDgpKSwKLSsgICAgICAg ICAgICBiaXRwb3MgPSBiaXRwb3MgKyBmaWVsZHNpemUKLSsKLSsgICAgICAgICAgICBpZiBmdHlw ZS5jb2RlID09IGdkYi5UWVBFX0NPREVfU1RSVUNUOgotKyAgICAgICAgICAgICAgICBzZWxmLnBh aG9sZSAoZnR5cGUsIGxldmVsICsgMSwgZmllbGQubmFtZSkKLSsgICAgICAgICAgICBlbHNlOgot KyAgICAgICAgICAgICAgICBwcmludCAnICcgKiAoMiArIDIgKiBsZXZlbCksCi0rICAgICAgICAg ICAgICAgIHByaW50ICclcyAlcycgJSAoc3RyIChmdHlwZSksIGZpZWxkLm5hbWUpCi0rCi0rICAg ICAgICBwcmludCAnICcgKiAoMTQgKyAyICogbGV2ZWwpLAotKyAgICAgICAgcHJpbnQgJ30gJXMn ICUgbmFtZQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsgICAg ICAgIHR5cGUgPSBnZGIubG9va3VwX3R5cGUgKGFyZykKLSsgICAgICAgIHR5cGUgPSB0eXBlLnN0 cmlwX3R5cGVkZWZzICgpCi0rICAgICAgICBpZiB0eXBlLmNvZGUgIT0gZ2RiLlRZUEVfQ09ERV9T VFJVQ1Q6Ci0rICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yLCAnJXMgaXMgbm90IGEgc3RydWN0 IHR5cGUnICUgYXJnCi0rICAgICAgICBwcmludCAnICcgKiAxNCwKLSsgICAgICAgIHNlbGYucGFo b2xlICh0eXBlLCAwLCAnJykKLSsKLStQYWhvbGUoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9y ZXF1aXJlLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWZiYzFlOAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5w eQotQEAgLTAsMCArMSw1NyBAQAotKyMgRGVtYW5kLWxvYWRpbmcgY29tbWFuZHMuCisrZXh0ZXJu IGludCB0eXBlX3JhbmdlX2hpZ2hfYm91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90 eXBlKTsKICsKLSsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKytleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291bnRfYm91bmRfaW50ZXJuYWwg KHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrZXh0ZXJuIENPUkVfQUREUiB0eXBlX3JhbmdlX2J5dGVfc3RyaWRlX2ludGVybmFsIChz dHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKKysJCQkJCQkgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5 cGUpOwogKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgb3MKLSsKLStjbGFzcyBSZXF1aXJlQ29tbWFu ZCAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJQcmVmaXggY29tbWFuZCBmb3IgcmVxdWlyaW5nIGZl YXR1cmVzLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIg KFJlcXVpcmVDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInJlcXVpcmUiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01Q TEVURV9OT05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVHJ1ZSkKLSsKLStjbGFzcyBSZXF1aXJlU3ViY29tbWFuZCAoZ2RiLkNvbW1hbmQpOgotKyAg ICAiIiJEZW1hbmQtbG9hZCBhIGNvbW1hbmQgYnkgbmFtZS4iIiIKLSsKLSsgICAgZGVmIF9faW5p dF9fIChzZWxmLCBuYW1lKToKLSsgICAgICAgIHNlbGYuX19kb2NfXyA9ICJEZW1hbmQtbG9hZCBh ICVzIGJ5IG5hbWUuIiAlIG5hbWUKLSsgICAgICAgIHN1cGVyIChSZXF1aXJlU3ViY29tbWFuZCwg c2VsZikuX19pbml0X18gKCJyZXF1aXJlICVzIiAlIG5hbWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVVBQT1JUKQotKyAg ICAgICAgc2VsZi5uYW1lID0gbmFtZQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZy b21fdHR5KToKLSsgICAgICAgIGZvciBjbWQgaW4gYXJnLnNwbGl0KCk6Ci0rICAgICAgICAgICAg ZXhlYyAoJ2ltcG9ydCBnZGIuJyArIHNlbGYubmFtZSArICcuJyArIGNtZCwgZ2xvYmFscyAoKSkK LSsKLSsgICAgZGVmIGNvbXBsZXRlIChzZWxmLCB0ZXh0LCB3b3JkKToKLSsgICAgICAgIGRpciA9 IGdkYi5weXRob25kaXIgKyAnL2dkYi8nICsgc2VsZi5uYW1lCi0rICAgICAgICByZXN1bHQgPSBb XQotKyAgICAgICAgZm9yIGZpbGUgaW4gb3MubGlzdGRpcihkaXIpOgotKyAgICAgICAgICAgIGlm IG5vdCBmaWxlLnN0YXJ0c3dpdGggKHdvcmQpIG9yIG5vdCBmaWxlLmVuZHN3aXRoICgnLnB5Jyk6 Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgZmVhdHVyZSA9IGZpbGVb MDotM10KLSsgICAgICAgICAgICBpZiBmZWF0dXJlID09ICdyZXF1aXJlJyBvciBmZWF0dXJlID09 ICdfX2luaXRfXyc6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgcmVz dWx0LmFwcGVuZCAoZmVhdHVyZSkKLSsgICAgICAgIHJldHVybiByZXN1bHQKLSsKLStSZXF1aXJl Q29tbWFuZCgpCi0rUmVxdWlyZVN1YmNvbW1hbmQoImNvbW1hbmQiKQotK1JlcXVpcmVTdWJjb21t YW5kKCJmdW5jdGlvbiIpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQv c2F2ZV9icmVha3BvaW50cy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3NhdmVfYnJl YWtwb2ludHMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42MTQzMTg3 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9zYXZlX2Jy ZWFrcG9pbnRzLnB5Ci1AQCAtMCwwICsxLDY1IEBACi0rIyBTYXZlIGJyZWFrcG9pbnRzLgorK2V4 dGVybiB2b2lkIGZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKTsKICsKLSsjIENvcHly aWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBleHRl cm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHR5cGUgKiwKKyAJCQkJCXN0cnVjdCB0eXBlICopOworIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9v a3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7CitAQCAtMTQw OCw2ICsxNTM1LDggQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBl ICosIHN0cnVjdCB0eXBlICopOworIAorIGV4dGVybiBpbnQgaXNfdW5pcXVlX2FuY2VzdG9yIChz dHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKik7CisgCisrZXh0ZXJuIHZvaWQgdHlwZV9tYXJr X3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKTsKICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisgLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAqLworIAorICNkZWZpbmUgTEVOR1RIX01BVENI KGJ2KSAoKGJ2KS0+cmFua1swXSkKK0BAIC0xNDc4LDEwICsxNjA3LDExIEBAIGV4dGVybiB2b2lk IG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKKyAKKyBleHRlcm4gaHRhYl90 IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIAor LWV4dGVybiBzdHJ1Y3QgdHlwZSAqY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCistCQkJCQkgc3RydWN0IHR5cGUgKnR5cGUsCisrZXh0ZXJuIHN0cnVjdCB0eXBl ICpjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAJCQkJCSBodGFiX3Qg Y29waWVkX3R5cGVzKTsKKyAKKyBleHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZSAoY29uc3Qg c3RydWN0IHR5cGUgKnR5cGUpOworIAorK2V4dGVybiB2b2lkIGZyZWVfYWxsX3R5cGVzICh2b2lk KTsKICsKLStmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0raW1wb3J0IGdk YgotKwotK2NsYXNzIFNhdmVQcmVmaXhDb21tYW5kIChnZGIuQ29tbWFuZCk6Ci0rICAiUHJlZml4 IGNvbW1hbmQgZm9yIHNhdmluZyB0aGluZ3MuIgotKwotKyAgZGVmIF9faW5pdF9fIChzZWxmKToK LSsgICAgc3VwZXIgKFNhdmVQcmVmaXhDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNhdmUiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFO RF9TVVBQT1JULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZGIuQ09NUExFVEVfTk9ORSwgVHJ1ZSkKLSsKLStjbGFzcyBTYXZlQnJlYWtwb2ludHNDb21t YW5kIChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlNhdmUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludHMg dG8gYSBmaWxlLgotK1RoaXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSBmaWxl IG5hbWUuCi0rVGhlIGJyZWFrcG9pbnRzIGNhbiBiZSByZXN0b3JlZCB1c2luZyB0aGUgJ3NvdXJj ZScgY29tbWFuZC4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1 cGVyIChTYXZlQnJlYWtwb2ludHNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNhdmUgYnJlYWtw b2ludHMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZGIuQ09NTUFORF9TVVBQT1JULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfRklMRU5BTUUpCi0rCi0r ICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5kb250 X3JlcGVhdCAoKQotKyAgICAgICAgYnBzID0gZ2RiLmJyZWFrcG9pbnRzICgpCi0rICAgICAgICBp ZiBicHMgaXMgTm9uZToKLSsgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICdObyBicmVh a3BvaW50cyB0byBzYXZlJwotKyAgICAgICAgd2l0aCBvcGVuIChhcmcuc3RyaXAgKCksICd3Jykg YXMgZjoKLSsgICAgICAgICAgICBmb3IgYnAgaW4gYnBzOgotKyAgICAgICAgICAgICAgICBwcmlu dCA+PiBmLCAiYnJlYWsiLCBicC5sb2NhdGlvbiwKLSsgICAgICAgICAgICAgICAgaWYgYnAudGhy ZWFkIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgIiB0aHJl YWQiLCBicC50aHJlYWQsCi0rICAgICAgICAgICAgICAgIGlmIGJwLmNvbmRpdGlvbiBpcyBub3Qg Tm9uZToKLSsgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIgaWYiLCBicC5jb25kaXRp b24sCi0rICAgICAgICAgICAgICAgIHByaW50ID4+IGYKLSsgICAgICAgICAgICAgICAgaWYgbm90 IGJwLmVuYWJsZWQ6Ci0rICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAiZGlzYWJsZSAk YnBudW0iCi0rICAgICAgICAgICAgICAgICMgTm90ZTogd2UgZG9uJ3Qgc2F2ZSB0aGUgaWdub3Jl IGNvdW50OyB0aGVyZSBkb2Vzbid0Ci0rICAgICAgICAgICAgICAgICMgc2VlbSB0byBiZSBtdWNo IHBvaW50LgotKyAgICAgICAgICAgICAgICBjb21tYW5kcyA9IGJwLmNvbW1hbmRzCi0rICAgICAg ICAgICAgICAgIGlmIGNvbW1hbmRzIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICAgICAg cHJpbnQgPj4gZiwgImNvbW1hbmRzIgotKyAgICAgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQg Q09NTUFORFMgaGFzIGEgdHJhaWxpbmcgbmV3bGluZS4KLSsgICAgICAgICAgICAgICAgICAgIHBy aW50ID4+IGYsIGNvbW1hbmRzLAotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgImVu ZCIKLSsgICAgICAgICAgICAgICAgcHJpbnQgPj4gZgotKwotK1NhdmVQcmVmaXhDb21tYW5kICgp Ci0rU2F2ZUJyZWFrcG9pbnRzQ29tbWFuZCAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGli L2dkYi9jb21tYW5kL3VwdG8ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5 Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZmFmNTRlZAotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5weQotQEAgLTAsMCAr MSwxMjkgQEAKLSsjIHVwdG8gY29tbWFuZC4KKyAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLworZGlm ZiAtLWdpdCBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKK2lu ZGV4IDRmY2UxYWMuLjE0NGE4OTkgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYwor KysrIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKK0BAIC03NDcsNiArNzQ3LDIxIEBAIGkzODZfbGlu dXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCisgICAgIH0KKyB9CisgCisr LyogU2VlIGkzODZfZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBpMzg2 X2xpbnV4X2RyX3NldF9jb250cm9sCisrICAgb3IgaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIGFz IHRoZXkgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQorKyAgIChpMzg2X2xpbnV4X2Ry KS4gICovCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrc3RhdGljIHZvaWQKKytpMzg2X2xpbnV4X2RyX2RldGFjaCAodm9pZCkKKyt7Cisr ICBpbnQgcmVnbnVtOwogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysgIGkzODZf bGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCBEUl9DT05UUk9MLCAwKTsKKysgIGkzODZfbGlu dXhfZHJfdW5zZXRfc3RhdHVzICh+MFVMKTsKKysgIGZvciAocmVnbnVtID0gRFJfRklSU1RBRERS OyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJlZ251bSsrKQorKyAgICBpMzg2X2xpbnV4X2RyX3Nl dCAoaW5mZXJpb3JfcHRpZCwgcmVnbnVtLCAwKTsKKyt9CiArCi0raW1wb3J0IGdkYgotK2ltcG9y dCByZQotK2Zyb20gZ2RiLkZyYW1lSXRlcmF0b3IgaW1wb3J0IEZyYW1lSXRlcmF0b3IKLStmcm9t IGdkYi5GcmFtZVdyYXBwZXIgaW1wb3J0IEZyYW1lV3JhcHBlcgotKwotK2NsYXNzIFVwdG9QcmVm aXggKGdkYi5Db21tYW5kKToKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1 cGVyIChVcHRvUHJlZml4LCBzZWxmKS5fX2luaXRfXyAoInVwdG8iLCBnZGIuQ09NTUFORF9TVEFD SywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0g VHJ1ZSkKLSsKLStjbGFzcyBVcHRvSW1wbGVtZW50YXRpb24gKGdkYi5Db21tYW5kKToKLSsgICAg ZGVmIF9faW5pdF9fIChzZWxmLCBzdWJjb21tYW5kKToKLSsgICAgICAgIHN1cGVyIChVcHRvSW1w bGVtZW50YXRpb24sIHNlbGYpLl9faW5pdF9fICgidXB0byAiICsgc3ViY29tbWFuZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFO RF9TVEFDSykKLSsKLSsgICAgZGVmIHNlYXJjaCAoc2VsZik6Ci0rICAgICAgICBzYXZlZCA9IGdk Yi5zZWxlY3RlZF9mcmFtZSAoKQotKyAgICAgICAgaXRlciA9IEZyYW1lSXRlcmF0b3IgKHNhdmVk KQotKyAgICAgICAgZm91bmQgPSBGYWxzZQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGZv ciBmcmFtZSBpbiBpdGVyOgotKyAgICAgICAgICAgICAgICBmcmFtZS5zZWxlY3QgKCkKLSsgICAg ICAgICAgICAgICAgdHJ5OgotKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5maWx0ZXIgKGZy YW1lKToKLSsgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyID0gRnJhbWVXcmFwcGVyIChm cmFtZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmRlc2NyaWJlIChzeXMuc3Rk b3V0LCBGYWxzZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgICAg ICAgICAgZXhjZXB0OgotKyAgICAgICAgICAgICAgICAgICAgcGFzcwotKyAgICAgICAgZXhjZXB0 OgotKyAgICAgICAgICAgIHBhc3MKLSsgICAgICAgIHNhdmVkLnNlbGVjdCAoKQotKyAgICAgICAg cmFpc2UgUnVudGltZUVycm9yLCAnQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyBmcmFtZScKLSsK LSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBzZWxmLnJ4 ID0gcmUuY29tcGlsZSAoYXJnKQotKyAgICAgICAgc2VsZi5zZWFyY2ggKCkKLSsKLStjbGFzcyBV cHRvU3ltYm9sQ29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKLSsgICAgIiIiU2VsZWN0IGFu ZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIHN5bWJvbC4KLStUaGUg YXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAg dGhlCi0rc3RhY2ssIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmcmFtZSB3aG9zZSBzeW1ib2wgbWF0 Y2hlcyB0aGUgcmVndWxhcgotK2V4cHJlc3Npb24uIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAo c2VsZik6Ci0rICAgICAgICBzdXBlciAoVXB0b1N5bWJvbENvbW1hbmQsIHNlbGYpLl9faW5pdF9f ICgic3ltYm9sIikKLSsKLSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAg bmFtZSA9IGZyYW1lLm5hbWUgKCkKLSsgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0rICAg ICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAgICAgICAg ICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rY2xhc3MgVXB0 b1NvdXJjZUNvbW1hbmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6Ci0rICAgICIiIlNlbGVjdCBhbmQg cHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBzb3VyY2UgZmlsZS4KLStU aGUgYXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMg dXAgdGhlCi0rc3RhY2ssIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmcmFtZSB3aG9zZSBzb3VyY2Ug ZmlsZSBuYW1lIG1hdGNoZXMgdGhlCi0rcmVndWxhciBleHByZXNzaW9uLiIiIgotKwotKyAgICBk ZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFVwdG9Tb3VyY2VDb21tYW5kLCBz ZWxmKS5fX2luaXRfXyAoInNvdXJjZSIpCi0rCi0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1l KToKLSsgICAgICAgIG5hbWUgPSBmcmFtZS5maW5kX3NhbCAoKS5zeW10YWIuZmlsZW5hbWUKLSsg ICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFy Y2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotKyAg ICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rY2xhc3MgVXB0b09iamVjdENvbW1hbmQgKFVwdG9JbXBs ZW1lbnRhdGlvbik6Ci0rICAgICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBjYWxsaW5nIHN0YWNr IGZyYW1lLCBiYXNlZCBvbiBvYmplY3QgZmlsZS4KLStUaGUgYXJndW1lbnQgaXMgYSByZWd1bGFy IGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlCi0rc3RhY2ssIHN0b3BwaW5n IGF0IHRoZSBmaXJzdCBmcmFtZSB3aG9zZSBvYmplY3QgZmlsZSBuYW1lIG1hdGNoZXMgdGhlCi0r cmVndWxhciBleHByZXNzaW9uLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAg ICAgICAgc3VwZXIgKFVwdG9PYmplY3RDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoIm9iamVjdCIp Ci0rCi0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIG5hbWUgPSBmcmFt ZS5maW5kX3NhbCAoKS5zeW10YWIub2JqZmlsZS5maWxlbmFtZQotKyAgICAgICAgaWYgbmFtZSBp cyBub3QgTm9uZToKLSsgICAgICAgICAgICBpZiBzZWxmLnJ4LnNlYXJjaCAobmFtZSkgaXMgbm90 IE5vbmU6Ci0rICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0rICAgICAgICByZXR1cm4gRmFs c2UKLSsKLStjbGFzcyBVcHRvV2hlcmVDb21tYW5kIChVcHRvSW1wbGVtZW50YXRpb24pOgotKyAg ICAiIiJTZWxlY3QgYW5kIHByaW50IHNvbWUgY2FsbGluZyBzdGFjayBmcmFtZSwgYmFzZWQgb24g ZXhwcmVzc2lvbi4KLStUaGUgYXJndW1lbnQgaXMgYW4gZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFu ZCBtb3ZlcyB1cCB0aGUgc3RhY2ssCi0rcGFyc2luZyBhbmQgZXZhbHVhdGluZyB0aGUgZXhwcmVz c2lvbiBpbiBlYWNoIGZyYW1lLiAgVGhpcyBzdG9wcyB3aGVuCi0rdGhlIGV4cHJlc3Npb24gZXZh bHVhdGVzIHRvIGEgbm9uLXplcm8gKHRydWUpIHZhbHVlLiIiIgotKwotKyAgICBkZWYgX19pbml0 X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFVwdG9XaGVyZUNvbW1hbmQsIHNlbGYpLl9faW5p dF9fICgid2hlcmUiKQotKwotKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6Ci0rICAgICAg ICB0cnk6Ci0rICAgICAgICAgICAgaWYgZ2RiLnBhcnNlX2FuZF9ldmFsIChzZWxmLmV4cHJlc3Np b24pOgotKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgZXhjZXB0OgotKyAg ICAgICAgICAgIHBhc3MKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICBkZWYgaW52b2tl IChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsgICAgICAgIHNlbGYuZXhwcmVzc2lvbiA9IGFyZwot KyAgICAgICAgc2VsZi5zZWFyY2ggKCkKLSsKLStVcHRvUHJlZml4ICgpCi0rVXB0b1N5bWJvbENv bW1hbmQgKCkKLStVcHRvU291cmNlQ29tbWFuZCAoKQotK1VwdG9PYmplY3RDb21tYW5kICgpCi0r VXB0b1doZXJlQ29tbWFuZCAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9mdW5j dGlvbi9fX2luaXRfXy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5w eQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjhiMTM3ODkKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weQotQEAg LTAsMCArMSBAQAorIHN0YXRpYyB2b2lkCisgaTM4Nl9saW51eF9uZXdfdGhyZWFkIChwdGlkX3Qg cHRpZCkKKyB7CitAQCAtOTc2LDYgKzk5MSw3IEBAIF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0 ICh2b2lkKQorICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRkciA9IGkzODZfbGludXhfZHJfcmVzZXRf YWRkcjsKKyAgIGkzODZfZHJfbG93LmdldF9zdGF0dXMgPSBpMzg2X2xpbnV4X2RyX2dldF9zdGF0 dXM7CisgICBpMzg2X2RyX2xvdy51bnNldF9zdGF0dXMgPSBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0 YXR1czsKKysgIGkzODZfZHJfbG93LmRldGFjaCA9IGkzODZfbGludXhfZHJfZGV0YWNoOworICAg aTM4Nl9zZXRfZGVidWdfcmVnaXN0ZXJfbGVuZ3RoICg0KTsKKyAKKyAgIC8qIE92ZXJyaWRlIHRo ZSBkZWZhdWx0IHB0cmFjZSByZXN1bWUgbWV0aG9kLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvaTM4 Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCitpbmRleCBlYWEzNjQ0Li4wOTIxYzdlIDEwMDY0NAor LS0tIGEvZ2RiL2kzODYtbmF0LmMKKysrKyBiL2dkYi9pMzg2LW5hdC5jCitAQCAtNTMzLDYgKzUz MywxNyBAQCBpMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwg aW50IHR5cGUsCisgICByZXR1cm4gcmV0dmFsOworIH0KKyAKKysvKiBTZWUgdGFyZ2V0X2RldGFj aF93YXRjaHBvaW50cy4gICovCiArCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1 bmN0aW9uL2NhbGxlcl9pcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJf aXMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yYjljNWM3Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5 Ci1AQCAtMCwwICsxLDU4IEBACi0rIyBDYWxsZXItaXMgZnVuY3Rpb25zLgorK3N0YXRpYyBpbnQK KytpMzg2X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBpZiAoaTM4Nl9kcl9sb3cu ZGV0YWNoKQorKyAgICBpMzg2X2RyX2xvdy5kZXRhY2ggKCk7CiArCi0rIyBDb3B5cmlnaHQgKEMp IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICByZXR1cm4gMDsKKyt9CiAr Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIC8qIFJldHVybiBub24temVybyBpZiB3 ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRzIGF0CisgICAgYWRkcmVzcyBB RERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8KKyAKK0BAIC02ODUsNiArNjk2 LDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorICAgdC0+ dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworICAg dC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50OworICAgdC0+ dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9f ZGV0YWNoX3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7CisgICB0LT50b19p bnNlcnRfaHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7CisgICB0LT50 b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7CisgfQor ZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKK2luZGV4IDczMTdl N2QuLmVhOTE0YTUgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1uYXQuaAorKysrIGIvZ2RiL2kzODYt bmF0LmgKK0BAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRjaHBvaW50 cyAoc3RydWN0IHRhcmdldF9vcHMgKik7CisgICAgICAgdW5zZXRfc3RhdHVzICAgICAgICAgICAg IC0tIHVuc2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKKyAJCQkJICBzdGF0dXMg KERSNikgcmVnaXN0ZXIgZm9yIGFsbCBMV1BzCisgCisrICAgICAgZGV0YWNoICAgICAgICAgICAg ICAgICAgIC0tIGNsZWFyIGFsbCBkZWJ1ZyByZWdpc3RlcnMgb2Ygb25seSB0aGUKKysJCQkJICBJ TkZFUklPUl9QVElEIHRhc2sgd2l0aG91dCBhZmZlY3RpbmcgYW55CisrCQkJCSAgcmVnaXN0ZXIg Y2FjaGVzLgogKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgcmUKLSsKLStjbGFzcyBDYWxsZXJJcyAo Z2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxpbmcgZnVuY3Rp b24ncyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5nLgotK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25l IG9yIHR3byBhcmd1bWVudHMuCi0rVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIGEg ZnVuY3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKLStuYW1lIGlzIGVxdWFsIHRvIHRo aXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgotK1RoZSBvcHRpb25hbCBz ZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMK LSt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQg aXMgMS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChD YWxsZXJJcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfaXMiKQotKwotKyAgICBkZWYgaW52b2tl IChzZWxmLCBuYW1lLCBuZnJhbWVzID0gMSk6Ci0rICAgICAgICBmcmFtZSA9IGdkYi5zZWxlY3Rl ZF9mcmFtZSAoKQotKyAgICAgICAgd2hpbGUgbmZyYW1lcyA+IDA6Ci0rICAgICAgICAgICAgZnJh bWUgPSBmcmFtZS5vbGRlciAoKQotKyAgICAgICAgICAgIG5mcmFtZXMgPSBuZnJhbWVzIC0gMQot KyAgICAgICAgcmV0dXJuIGZyYW1lLm5hbWUgKCkgPT0gbmFtZS5zdHJpbmcgKCkKLSsKLStjbGFz cyBDYWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24pOgotKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0 aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmluZy4KLStUaGlzIGZ1bmN0 aW9uIHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRzLgotK1RoZSBmaXJzdCBhcmd1bWVudCBpcyBh IHJlZ3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncwotK25hbWUgaXMg bWF0Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZS4KLStU aGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVuY3Rpb24gaG93IG1hbnkg c3RhY2sgZnJhbWVzCi0rdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlvbi4g IFRoZSBkZWZhdWx0IGlzIDEuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAg ICAgICBzdXBlciAoQ2FsbGVyTWF0Y2hlcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfbWF0Y2hl cyIpCi0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKLSsgICAg ICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAgICB3aGlsZSBuZnJhbWVz ID4gMDoKLSsgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCi0rICAgICAgICAgICAg bmZyYW1lcyA9IG5mcmFtZXMgLSAxCi0rICAgICAgICByZXR1cm4gcmUubWF0Y2ggKG5hbWUuc3Ry aW5nICgpLCBmcmFtZS5uYW1lICgpKSBpcyBub3QgTm9uZQotKwotK0NhbGxlcklzKCkKLStDYWxs ZXJNYXRjaGVzKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kZWJiM2JiCi0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLUBAIC0wLDAgKzEs NDcgQEAKLSsjIEluLXNjb3BlIGZ1bmN0aW9uLgorICAgIEFkZGl0aW9uYWxseSwgdGhlIG5hdGl2 ZSBmaWxlIHNob3VsZCBzZXQgdGhlIGRlYnVnX3JlZ2lzdGVyX2xlbmd0aAorICAgIGZpZWxkIHRv IDQgb3IgOCBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIGZvcgorICAgIGRl dWJnIHJlZ2lzdGVycy4gICovCitAQCAtNzMsNiArNzcsNyBAQCBzdHJ1Y3QgaTM4Nl9kcl9sb3df dHlwZQorICAgICB2b2lkICgqcmVzZXRfYWRkcikgKGludCk7CisgICAgIHVuc2lnbmVkIGxvbmcg KCpnZXRfc3RhdHVzKSAodm9pZCk7CisgICAgIHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25l ZCBsb25nKTsKKysgICAgdm9pZCAoKmRldGFjaCkgKHZvaWQpOworICAgICBpbnQgZGVidWdfcmVn aXN0ZXJfbGVuZ3RoOworICAgfTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2Ri L2luZmNhbGwuYworaW5kZXggN2Y2MGU1Ni4uYjdhY2ZjNiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZj YWxsLmMKKysrKyBiL2dkYi9pbmZjYWxsLmMKK0BAIC0yMjUsNiArMjI1LDU2IEBAIHZhbHVlX2Fy Z19jb2VyY2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmFyZywKKyAg IHJldHVybiB2YWx1ZV9jYXN0ICh0eXBlLCBhcmcpOworIH0KKyAKKysvKiBDYWxsIGdudS1pZnVu YyAoU1RUX0dOVV9JRlVOQyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEgcmVh bAorKyAgIGZ1bmN0aW9uIHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlvbiBl bnRyeS4gIEZ1bmN0aW9uIHJldHVybnMKKysgICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251LWlm dW5jLXJlc29sdmVkIGZ1bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRWQUxfVFlQRVAKKysgICBpcyBu b3QgTlVMTCBmaWxsIGluICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUgZ251 LWlmdW5jLXJlc29sdmVkCisrICAgZnVuY3Rpb24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9UWVBF UCBpbnRhY3QgaWYgdGhlIHJldHVybiB0eXBlIGNvdWxkIG5vdCBiZQorKyAgIGZvdW5kLiAgKi8K ICsKLSsjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KytzdGF0aWMgQ09SRV9BRERSCisrZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBDT1JFX0FERFIgcGMpCisreworKyAgY2hhciAqbmFtZV9hdF9wYzsKKysgIENPUkVf QUREUiBzdGFydF9hdF9wYywgYWRkcmVzczsKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlw ZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3RydWN0 IHZhbHVlICpmdW5jdGlvbiwgKmFkZHJlc3NfdmFsOwogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZV9hdF9w YywgJnN0YXJ0X2F0X3BjLCBOVUxMKQorKyAgICAgICYmIHN0YXJ0X2F0X3BjID09IHBjKQorKyAg ICB7CisrICAgICAgaWYgKHJlc29sdmVfZ251X2lmdW5jIChuYW1lX2F0X3BjLCAmYWRkcmVzcykp CisrCXJldHVybiBhZGRyZXNzOworKyAgICB9CisrICBlbHNlCisrICAgIG5hbWVfYXRfcGMgPSBO VUxMOwogKwotK2ltcG9ydCBnZGIKKysgIGZ1bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNf ZnVuY190eXBlKTsKKysgIHNldF92YWx1ZV9hZGRyZXNzIChmdW5jdGlvbiwgcGMpOwogKwotK2Ns YXNzIEluU2NvcGUgKGdkYi5GdW5jdGlvbik6Ci0rICAgICIiIlJldHVybiBUcnVlIGlmIGFsbCB0 aGUgZ2l2ZW4gdmFyaWFibGVzIG9yIG1hY3JvcyBhcmUgaW4gc2NvcGUuCi0rVGFrZXMgb25lIGFy Z3VtZW50IGZvciBlYWNoIHZhcmlhYmxlIG5hbWUgdG8gYmUgY2hlY2tlZC4iIiIKKysgIC8qIGdu dS1pZnVuY3MgaGF2ZSBubyBhcmd1bWVudHMuICBGVU5DVElPTiBpcyB0aGUgZnVuY3Rpb24gZW50 cnkgYWRkcmVzcworKyAgICAgd2hpbGUgQUREUkVTUyBpcyBhIHBvc3NpYmxlIGZ1bmN0aW9uIGRl c2NyaXB0b3IuLiAgKi8KKysgIGFkZHJlc3NfdmFsID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChm dW5jdGlvbiwgMCwgTlVMTCk7CisrICBhZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAoYWRkcmVz c192YWwpOwogKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKwlzdXBlciAoSW5TY29wZSwg c2VsZikuX19pbml0X18gKCJpbl9zY29wZSIpCisrICBpZiAobmFtZV9hdF9wYykKKysgICAgZ251 X2lmdW5jX3JlY29yZF9jYWNoZSAoZ2RiYXJjaCwgbmFtZV9hdF9wYywgYWRkcmVzcyk7CiArCi0r ICAgIGRlZiBpbnZva2UgKHNlbGYsICp2YXJzKToKLSsgICAgICAgIGlmIGxlbiAodmFycykgPT0g MDoKLSsJICAgIHJhaXNlIFR5cGVFcnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9uZSBh cmd1bWVudCIKKysgIHJldHVybiBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChn ZGJhcmNoLCBhZGRyZXNzLCAmY3VycmVudF90YXJnZXQpOworK30KICsKLSsgICAgICAgICMgZ2Ri LlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1dCBpbiBhIG1hcC4KLSsJIyBD b252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KLSsJd2FudGVkID0gc2V0IChtYXAgKGxhbWJkYSB4OiB4 LnN0cmluZyAoKSwgdmFycykpCi0rCWZvdW5kID0gc2V0ICgpCi0rCWJsb2NrID0gZ2RiLnNlbGVj dGVkX2ZyYW1lICgpLmJsb2NrICgpCi0rCXdoaWxlIGJsb2NrOgotKwkgICAgZm9yIHN5bSBpbiBi bG9jazoKLSsJCWlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0rCQkgICAg ICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxlKToKLSsJCSAgICBpZiBzeW0u bmFtZSBpbiB3YW50ZWQ6Ci0rCQkJZm91bmQuYWRkIChzeW0ubmFtZSkKKytzdGF0aWMgc3RydWN0 IHR5cGUgKgorK2ZpbmRfZnVuY3Rpb25fcmV0dXJuX3R5cGUgKENPUkVfQUREUiBwYykKKyt7Cisr ICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CiArCi0rCSAgICBi bG9jayA9IGJsb2NrLnN1cGVyYmxvY2sKKysgIGlmIChzeW0gIT0gTlVMTCAmJiBCTE9DS19TVEFS VCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChzeW0pKSA9PSBwYworKyAgICAgICYmIFNZTUJPTF9UWVBF IChzeW0pICE9IE5VTEwpCisrICAgIHJldHVybiBUWVBFX1RBUkdFVF9UWVBFIChTWU1CT0xfVFlQ RSAoc3ltKSk7CiArCi0rCXJldHVybiB3YW50ZWQgPT0gZm91bmQKKysgIHJldHVybiBOVUxMOwor K30KICsKLStJblNjb3BlICgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1jbWQuYyBiL2dk Yi9weXRob24vcHktY21kLmMKLWluZGV4IDJjZmY0YmEuLjkyNTUzMzYgMTAwNjQ0Ci0tLS0gYS9n ZGIvcHl0aG9uL3B5LWNtZC5jCi0rKysgYi9nZGIvcHl0aG9uL3B5LWNtZC5jCi1AQCAtNDksOCAr NDksNyBAQCBzdGF0aWMgc3RydWN0IGNtZHB5X2NvbXBsZXRlciBjb21wbGV0ZXJzW10gPQotIAot ICNkZWZpbmUgTl9DT01QTEVURVJTIChzaXplb2YgKGNvbXBsZXRlcnMpIC8gc2l6ZW9mIChjb21w bGV0ZXJzWzBdKSkKKyAvKiBEZXRlcm1pbmUgYSBmdW5jdGlvbidzIGFkZHJlc3MgYW5kIGl0cyBy ZXR1cm4gdHlwZSBmcm9tIGl0cyB2YWx1ZS4KKyAgICBDYWxscyBlcnJvcigpIGlmIHRoZSBmdW5j dGlvbiBpcyBub3QgdmFsaWQgZm9yIGNhbGxpbmcuICAqLwogIAotLS8qIEEgZ2RiIGNvbW1hbmQu ICBGb3IgdGhlIHRpbWUgYmVpbmcgb25seSBvcmRpbmFyeSBjb21tYW5kcyAobm90Ci0tICAgc2V0 L3Nob3cgY29tbWFuZHMpIGFyZSBhbGxvd2VkLiAgKi8KLSsvKiBBIGdkYiBjb21tYW5kLiAgKi8K LSBzdHJ1Y3QgY21kcHlfb2JqZWN0CitAQCAtMjMzLDcgKzI4Myw2IEBAIGZpbmRfZnVuY3Rpb25f YWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkK ICB7Ci0gICBQeU9iamVjdF9IRUFECi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1ob29rcy5j IGIvZ2RiL3B5dGhvbi9weS1ob29rcy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uYTMxNDBiYwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9weS1ob29rcy5j Ci1AQCAtMCwwICsxLDUwIEBACi0rLyogTm90aWZpY2F0aW9ucyBmcm9tIGdkYiB0byBQeXRob24K LSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorICAgc3RydWN0IHR5cGUgKmZ0eXBl ID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKKyAgIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAoZnR5cGUpOworLSAgZW51bSB0eXBlX2NvZGUg Y29kZSA9IFRZUEVfQ09ERSAoZnR5cGUpOworICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBO VUxMOworICAgQ09SRV9BRERSIGZ1bmFkZHI7CisgCitAQCAtMjQxLDI0ICsyOTAsMzQgQEAgZmlu ZF9mdW5jdGlvbl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJl dHZhbF90eXBlKQorICAgICAgcGFydCBvZiBpdC4gICovCisgCisgICAvKiBEZXRlcm1pbmUgYWRk cmVzcyB0byBjYWxsLiAgKi8KKy0gIGlmIChjb2RlID09IFRZUEVfQ09ERV9GVU5DIHx8IGNvZGUg PT0gVFlQRV9DT0RFX01FVEhPRCkKKy0gICAgeworLSAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRy ZXNzIChmdW5jdGlvbik7CistICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0 eXBlKTsKKy0gICAgfQorLSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQorKyAgaWYg KFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisrICAgICAgfHwgVFlQRV9DT0RF IChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKysgICAgZnVuYWRkciA9IHZhbHVlX2FkZHJl c3MgKGZ1bmN0aW9uKTsKKysgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09E RV9QVFIpCisgICAgIHsKKyAgICAgICBmdW5hZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAoZnVuY3Rp b24pOworICAgICAgIGZ0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5 cGUpKTsKKyAgICAgICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKKyAJ ICB8fCBUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQorKwlmdW5hZGRyID0g Z2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKKysJ CQkJCQkgICAgICAmY3VycmVudF90YXJnZXQpOworKyAgICB9CisrICBpZiAoVFlQRV9DT0RFIChm dHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKKysgICAgICB8fCBUWVBFX0NPREUgKGZ0eXBlKSA9PSBU WVBFX0NPREVfTUVUSE9EKQorKyAgICB7CisrICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VU X1RZUEUgKGZ0eXBlKTsKICsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAgICAg IGlmIChUWVBFX0dOVV9JRlVOQyAoZnR5cGUpKQorIAl7CistCSAgZnVuYWRkciA9IGdkYmFyY2hf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCistCQkJCQkJCSZj dXJyZW50X3RhcmdldCk7CistCSAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBl KTsKKysJICBmdW5hZGRyID0gZ251X2lmdW5jX3Jlc29sdmUgKGdkYmFyY2gsIGZ1bmFkZHIpOwog KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCSAgLyogU2tpcCBxdWVyeWluZyB0aGUgZnVu Y3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCisrCSAgICAgYXNrZWQgZm9y LiAgKi8KKysJICBpZiAocmV0dmFsX3R5cGUpCisrCSAgICB2YWx1ZV90eXBlID0gZmluZF9mdW5j dGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7CisgCX0KKyAgICAgfQorLSAgZWxzZSBpZiAoY29k ZSA9PSBUWVBFX0NPREVfSU5UKQorKyAgZWxzZSBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQ RV9DT0RFX0lOVCkKKyAgICAgeworICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlv bnMgbGFja2luZyBkZWJ1Z2dpbmcgaW5mby4KKyAgICAgICAgICBUaGVpciB2YWx1ZXMgYXJlIGNo YXJhY3RlcnMgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCitkaWZmIC0tZ2l0IGEv Z2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCitpbmRleCBmNmIwMGRhLi41NmU1NThiIDEwMDY0 NAorLS0tIGEvZ2RiL2luZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC0zMjY3LDYgKzMy NjcsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xf c3RhdGUgKmVjcykKKyAKKyAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3Ro cmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CisgCisrICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lO VF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3VsZAorKwkgY29u ZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLwor KyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOwogKwotKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLworICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jw c3RhdAorIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0X2N1 cnJlbnRfcmVnY2FjaGUgKCkpLAorIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRpZCk7CitAQCAt MzM1NCw2ICszMzU4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlv bl9jb250cm9sX3N0YXRlICplY3MpCisgCisgICAgICAgc3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRf cGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOworIAorKyAgICAgIC8qIENsZWFy IFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Agd2hpY2ggY291 bGQKKysJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhwbGFpbnNfc2ln bmFsLiAgKi8KKysgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndzKTsKICsKLSsj aW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgotKyNpbmNsdWRl ICJjaGFyc2V0LmgiCi0rI2luY2x1ZGUgInB5dGhvbi5oIgotKyNpbmNsdWRlICJweXRob24taW50 ZXJuYWwuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAgICAgICAvKiBEbyB3aGF0ZXZlciBp cyBuZWNlc3NhcnkgdG8gdGhlIHBhcmVudCBicmFuY2ggb2YgdGhlIHZmb3JrLiAgKi8KKyAgICAg ICBoYW5kbGVfdmZvcmtfY2hpbGRfZXhlY19vcl9leGl0ICgxKTsKKyAKK2RpZmYgLS1naXQgYS9n ZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKK2luZGV4IDBlMTgwMzQuLjk2ODk1ZGIg MTAwNjQ0CistLS0gYS9nZGIvbGludXgtbmF0LmMKKysrKyBiL2dkYi9saW51eC1uYXQuYworQEAg LTI2MDcsNiArMjYwNywzOSBAQCBsaW51eF9uYXRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiAqYWRkcl9wKQorICAgcmV0dXJuIGxwLT5zdG9w cGVkX2RhdGFfYWRkcmVzc19wOworIH0KKyAKKysvKiBJbiBgc2V0IGZvbGxvdy1mb3JrLW1vZGUg Y2hpbGQnIHdpdGggbXVsdGl0aHJlYWRlZCBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2gKKysgICB3 YXRjaHBvaW50cyBmcm9tIGFsbCB0aGUgTFdQcy4gIEluIHN1Y2ggY2FzZSBJTkZFUklPUl9QVElE IHdpbGwgYmUgdGhlCisrICAgbm9uLXRocmVhZGVkIG5ldyBjaGlsZCB3aGlsZSBMV1BfTElTVCB3 aWxsIHN0aWxsIGNvbnRhaW4gYWxsIHRoZSB0aHJlYWRzIG9mCisrICAgdGhlIHBhcmVudCBiZWlu ZyBkZXRhY2hlZC4gICovCiArCi0rUHlPYmplY3QgKgotK2dkYnB5X2dldF9ob29rX2Z1bmN0aW9u IChjb25zdCBjaGFyICpuYW1lKQorK3N0YXRpYyBpbnQKKytsaW51eF9uYXRfZGV0YWNoX3dhdGNo cG9pbnRzICh2b2lkKQogK3sKLSsgIFB5T2JqZWN0ICpob29rczsKLSsgIFB5T2JqZWN0ICpyZXN1 bHQ7Ci0rCi0rICBpZiAoISBQeU9iamVjdF9IYXNBdHRyU3RyaW5nIChnZGJfbW9kdWxlLCAiaG9v a3MiKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICBob29rcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJp bmcgKGdkYl9tb2R1bGUsICJob29rcyIpOwotKyAgaWYgKCEgaG9va3MpCi0rICAgIHJldHVybiBO VUxMOwotKyAgLyogVGhlIGNhc3QgaXMgYmVjYXVzZSB0aGUgUHl0aG9uIGZ1bmN0aW9uIGRvZXNu J3QgZGVjbGFyZSBjb25zdCBhcmd1bWVudC4KLSsgICAgIFRoaXMgaXMgYSBwcm9ibGVtIGluIFB5 dGhvbiB2ZXJzaW9uIDIuNCwgYnV0IG5vdCBpbiAyLjUuICAqLwotKyAgaWYgKCEgUHlPYmplY3Rf SGFzQXR0clN0cmluZyAoaG9va3MsIChjaGFyICopIG5hbWUpKQotKyAgICB7Ci0rICAgICAgUHlf REVDUkVGIChob29rcyk7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsgIC8qIFRoZSBj YXN0IGlzIGJlY2F1c2UgdGhlIFB5dGhvbiBmdW5jdGlvbiBkb2Vzbid0IGRlY2xhcmUgY29uc3Qg YXJndW1lbnQuCi0rICAgICBUaGlzIGlzIGEgcHJvYmxlbSBpbiBQeXRob24gdmVyc2lvbiAyLjQs IGJ1dCBub3QgaW4gMi41LiAgKi8KLSsgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcg KGhvb2tzLCAoY2hhciAqKSBuYW1lKTsKLSsgIFB5X0RFQ1JFRiAoaG9va3MpOwotKyAgcmV0dXJu IHJlc3VsdDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1tZW1idWYuYyBiL2dkYi9w eXRob24vcHktbWVtYnVmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43 YmMyOTRjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL3B5LW1lbWJ1Zi5jCi1AQCAt MCwwICsxLDI2OCBAQAotKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gdGhlIGluZmVyaW9yIG1lbW9y eS4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgIHN0 cnVjdCBsd3BfaW5mbyAqbHA7CisrICBpbnQgZm91bmQgPSAwLCByZXR2YWwgPSAwOworKyAgcHRp ZF90IGZpbHRlciA9IHBpZF90b19wdGlkIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsK KysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7CiAr Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrICBmb3IgKGxwID0gbHdwX2xp c3Q7IGxwOyBscCA9IGxwLT5uZXh0KQorKyAgICBpZiAocHRpZF9tYXRjaCAobHAtPnB0aWQsIGZp bHRlcikpCisrICAgICAgeworKwlpbmZlcmlvcl9wdGlkID0gbHAtPnB0aWQ7CisrCXJldHZhbCB8 PSBsaW51eF9vcHMtPnRvX2RldGFjaF93YXRjaHBvaW50cyAoKTsKKysJZm91bmQgPSAxOworKyAg ICAgIH0KICsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0r I2luY2x1ZGUgImdkYmNvcmUuaCIKLSsjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCisrICBk b19jbGVhbnVwcyAob2xkX2NoYWluKTsKICsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICBQeU9iamVj dF9IRUFECi0rICB2b2lkICpidWZmZXI7CisrICBpZiAoIWZvdW5kKQorKyAgICB7CisrICAgICAg Z2RiX2Fzc2VydCAoIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOwogKwotKyAgLyogVGhlc2UgYXJl IGtlcHQganVzdCBmb3IgbWJweV9zdHIuICAqLwotKyAgQ09SRV9BRERSIGFkZHI7Ci0rICBDT1JF X0FERFIgbGVuZ3RoOwotK30gbWVtYnVmX29iamVjdDsKKysgICAgICByZXR2YWwgfD0gbGludXhf b3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7CisrICAgIH0KICsKLStzdGF0aWMgUHlUeXBl T2JqZWN0IG1lbWJ1Zl9vYmplY3RfdHlwZTsKKysgIHJldHVybiByZXR2YWw7CisrfQogKwotKy8q IEltcGxlbWVudGF0aW9uIG9mIGdkYi5yZWFkX21lbW9yeSAoYWRkcmVzcywgbGVuZ3RoKS4KLSsg ICBSZXR1cm5zIGEgUHl0aG9uIGJ1ZmZlciBvYmplY3Qgd2l0aCBMRU5HVEggYnl0ZXMgb2YgdGhl IGluZmVyaW9yJ3MgbWVtb3J5Ci0rICAgYXQgQUREUkVTUy4gQm90aCBhcmd1bWVudHMgYXJlIGlu dGVnZXJzLiAgKi8KKyAvKiBDb21tb25seSBhbnkgYnJlYWtwb2ludCAvIHdhdGNocG9pbnQgZ2Vu ZXJhdGUgb25seSBTSUdUUkFQLiAgKi8KKyAKKyBzdGF0aWMgaW50CitAQCAtNTY2MCw2ICs1Njkz LDggQEAgbGludXhfbmF0X2FkZF90YXJnZXQgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorICAgdC0+ dG9fdGhyZWFkX2FkZHJlc3Nfc3BhY2UgPSBsaW51eF9uYXRfdGhyZWFkX2FkZHJlc3Nfc3BhY2U7 CisgICB0LT50b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgPSBsaW51eF9uYXRfc3RvcHBlZF9ieV93 YXRjaHBvaW50OworICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBsaW51eF9uYXRfc3Rv cHBlZF9kYXRhX2FkZHJlc3M7CisrICBpZiAobGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2lu dHMpCisrICAgIHQtPnRvX2RldGFjaF93YXRjaHBvaW50cyA9IGxpbnV4X25hdF9kZXRhY2hfd2F0 Y2hwb2ludHM7CisgCisgICB0LT50b19jYW5fYXN5bmNfcCA9IGxpbnV4X25hdF9jYW5fYXN5bmNf cDsKKyAgIHQtPnRvX2lzX2FzeW5jX3AgPSBsaW51eF9uYXRfaXNfYXN5bmNfcDsKK2RpZmYgLS1n aXQgYS9nZGIvbGludXgtdGRlcC5jIGIvZ2RiL2xpbnV4LXRkZXAuYworaW5kZXggYzUxZWRlOS4u ZWY4Y2JkYSAxMDA2NDQKKy0tLSBhL2dkYi9saW51eC10ZGVwLmMKKysrKyBiL2dkYi9saW51eC10 ZGVwLmMKK0BAIC0yNCw2ICsyNCw4IEBACisgI2luY2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRl ICJlbGYvY29tbW9uLmgiCisgI2luY2x1ZGUgImluZmVyaW9yLmgiCisrI2luY2x1ZGUgInZhbHVl LmgiCisrI2luY2x1ZGUgImluZmNhbGwuaCIKKyAKKyBzdGF0aWMgc3RydWN0IGdkYmFyY2hfZGF0 YSAqbGludXhfZ2RiYXJjaF9kYXRhX2hhbmRsZTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvbWkvbWkt Y21kLXZhci5jIGIvZ2RiL21pL21pLWNtZC12YXIuYworaW5kZXggMzEwYWRlOS4uZDg3MTBhMSAx MDA2NDQKKy0tLSBhL2dkYi9taS9taS1jbWQtdmFyLmMKKysrKyBiL2dkYi9taS9taS1jbWQtdmFy LmMKK0BAIC03MDIsNyArNzAyLDYgQEAgbWlfY21kX3Zhcl91cGRhdGUgKGNoYXIgKmNvbW1hbmQs IGNoYXIgKiphcmd2LCBpbnQgYXJnYykKKyAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAg LyogR2V0IHZhcm9iaiBoYW5kbGUsIGlmIGEgdmFsaWQgdmFyIG9iaiBuYW1lIHdhcyBzcGVjaWZp ZWQgKi8KKyAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0X2hhbmRsZSAobmFt ZSk7CisgCisgICAgICAgdmFyb2JqX3VwZGF0ZV9vbmUgKHZhciwgcHJpbnRfdmFsdWVzLCAxIC8q IGV4cGxpY2l0ICovKTsKK2RpZmYgLS1naXQgYS9nZGIvbWluc3ltcy5jIGIvZ2RiL21pbnN5bXMu YworaW5kZXggMGE1N2U3Ny4uNmJlNzRkZiAxMDA2NDQKKy0tLSBhL2dkYi9taW5zeW1zLmMKKysr KyBiL2dkYi9taW5zeW1zLmMKK0BAIC0zMzcsOCArMzM3LDkgQEAgbG9va3VwX21pbmltYWxfc3lt Ym9sX3RleHQgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmKQorIAkgICAg ICAgbXN5bWJvbCA9IG1zeW1ib2wtPmhhc2hfbmV4dCkKKyAJICAgIHsKKyAJICAgICAgaWYgKHN0 cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCksIG5hbWUpID09IDAgJiYKKy0JCSAg KE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQgfHwKKy0JCSAgIE1TWU1CT0xfVFlQ RSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCisrCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1i b2wpID09IG1zdF90ZXh0CisrCQkgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90 ZXh0X2dudV9pZnVuYworKwkJICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmls ZV90ZXh0KSkKKyAJCXsKKyAJCSAgc3dpdGNoIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpKQorIAkJ ICAgIHsKK0BAIC03MDAsNiArNzAxLDE2IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAo Q09SRV9BRERSIHBjKQorICAgcmV0dXJuIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19zZWN0 aW9uIChwYywgTlVMTCk7CisgfQorIAorKy8qIFJldHVybiBub24temVybyBpZmYgUEMgaXMgaW4g ZnVuY3Rpb24gaW1wbGVtZW50aW5nIGdudS1pZnVuYyBzZWxlY3Rpb24uICAqLwogKwotK1B5T2Jq ZWN0ICoKLStnZGJweV9yZWFkX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQorK2ludAorK2luX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpCiArewotKyAgaW50IGVy cm9yID0gMDsKLSsgIENPUkVfQUREUiBhZGRyLCBsZW5ndGg7Ci0rICB2b2lkICpidWZmZXIgPSBO VUxMOwotKyAgbWVtYnVmX29iamVjdCAqbWVtYnVmX29iajsKLSsgIFB5T2JqZWN0ICphZGRyX29i aiwgKmxlbmd0aF9vYmo7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHMgPSBOVUxMOwotKyAg dm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwotKyAgaWYgKCEgUHlBcmdf UGFyc2VUdXBsZSAoYXJncywgIk9PIiwgJmFkZHJfb2JqLCAmbGVuZ3RoX29iaikpCi0rICAgIHJl dHVybiBOVUxMOwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsg ICAgewotKyAgICAgIGlmICghZ2V0X2FkZHJfZnJvbV9weXRob24gKGFkZHJfb2JqLCAmYWRkcikK LSsJICB8fCAhZ2V0X2FkZHJfZnJvbV9weXRob24gKGxlbmd0aF9vYmosICZsZW5ndGgpKQotKwl7 Ci0rCSAgZXJyb3IgPSAxOwotKwkgIGJyZWFrOwotKwl9CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1i b2wgKm1zeW1ib2wgPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKICsKLSsgICAg ICBidWZmZXIgPSB4bWFsbG9jIChsZW5ndGgpOwotKyAgICAgIGNsZWFudXBzID0gbWFrZV9jbGVh bnVwICh4ZnJlZSwgYnVmZmVyKTsKKysgIHJldHVybiBtc3ltYm9sICYmIE1TWU1CT0xfVFlQRSAo bXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jOworK30KICsKLSsgICAgICByZWFkX21lbW9y eSAoYWRkciwgYnVmZmVyLCBsZW5ndGgpOworIC8qIEZpbmQgdGhlIG1pbmltYWwgc3ltYm9sIG5h bWVkIE5BTUUsIGFuZCByZXR1cm4gYm90aCB0aGUgbWluc3ltCisgICAgc3RydWN0IGFuZCBpdHMg b2JqZmlsZS4gIFRoaXMgb25seSBjaGVja3MgdGhlIGxpbmthZ2UgbmFtZS4gIFNldHMKKyAgICAq T0JKRklMRV9QIGFuZCByZXR1cm5zIHRoZSBtaW5pbWFsIHN5bWJvbCwgaWYgaXQgaXMgZm91bmQu ICBJZiBpdAorQEAgLTc2OSw2ICs3ODAsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAo Y29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHJlc3MsCisgICBzd2l0Y2ggKG1zX3R5cGUp CisgICAgIHsKKyAgICAgY2FzZSBtc3RfdGV4dDoKKysgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1 bmM6CisgICAgIGNhc2UgbXN0X2ZpbGVfdGV4dDoKKyAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBv bGluZToKKyAgICAgICBzZWN0aW9uID0gU0VDVF9PRkZfVEVYVCAob2JqZmlsZSk7CitAQCAtMTIz NCw3ICsxMjQ2LDggQEAgZmluZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCAoc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lLCBDT1JFX0FERFIgcGMpCisgICAgIHsKKyAgICAgICBBTExfTVNZTUJPTFMg KG9iamZpbGUsIG1zeW1ib2wpCisgICAgICAgeworLQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9s KSA9PSBtc3RfdGV4dAorKwlpZiAoKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQK KysJICAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQor IAkgICAgJiYgc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKKyAJCSAgICAg ICBTWU1CT0xfTElOS0FHRV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKKyAJICByZXR1cm4gU1lNQk9M X1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpOworZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMg Yi9nZGIvcC12YWxwcmludC5jCitpbmRleCA0NGEyZDcyLi5lM2FlYWQ0IDEwMDY0NAorLS0tIGEv Z2RiL3AtdmFscHJpbnQuYworKysrIGIvZ2RiL3AtdmFscHJpbnQuYworQEAgLTM4LDYgKzM4LDcg QEAKKyAjaW5jbHVkZSAicC1sYW5nLmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRl ICJjcC1zdXBwb3J0LmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAwKKyAKKyAKK0BAIC02 OCw4ICs2OSwyNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCisgICBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlOworICAgTE9OR0VT VCB2YWw7CisgICBDT1JFX0FERFIgYWRkcjsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwor KyAgc3RydWN0IHR5cGUgKnNhdmVkX3R5cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2Fk ZHJlc3MgPSBhZGRyZXNzOworKyAgCisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2Ns ZWFudXAsIDApOworKyAgdHlwZSA9IG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRk cmVzcyk7CisrICBpZiAodHlwZSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgZnB1dHNfZmlsdGVy ZWQgKG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsK KysgICAgICBnZGJfZmx1c2ggKHN0cmVhbSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OworKyAgICAgIHJldHVybiAwOwogKyAgICB9Ci0rICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAo ZXhjZXB0KTsKLSsKLSsgIGlmIChlcnJvcikKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBkaXNj YXJkX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0rCi0rICBtZW1idWZfb2JqID0gUHlPYmplY3RfTmV3 IChtZW1idWZfb2JqZWN0LCAmbWVtYnVmX29iamVjdF90eXBlKTsKLSsgIGlmIChtZW1idWZfb2Jq ID09IE5VTEwpCisrICBpZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRyZXNzKQogKyAgICB7Ci0rICAg ICAgeGZyZWUgKGJ1ZmZlcik7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19NZW1vcnlF cnJvciwKLSsJCSAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBidWZmZXIgb2JqZWN0 LiIpOwotKyAgICAgIHJldHVybiBOVUxMOworKyAgICAgIHNpemVfdCBsZW5ndGggPSBUWVBFX0xF TkdUSCAodHlwZSk7CisgCistICBDSEVDS19UWVBFREVGICh0eXBlKTsKKysgICAgICB2YWxhZGRy ID0geG1hbGxvYyAobGVuZ3RoKTsKKysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCAoZ2RiX2J5 dGUgKikgdmFsYWRkcik7CisrICAgICAgcmVhZF9tZW1vcnkgKGFkZHJlc3MsIChnZGJfYnl0ZSAq KSB2YWxhZGRyLCBsZW5ndGgpOwogKyAgICB9CisgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkp CisgICAgIHsKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CitAQCAtMTI1LDggKzE0NSw5IEBA IHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKKyAJCXsKKyAJCSAgaSA9IDA7CisgCQl9CistCSAgICAgIHZhbF9wcmludF9hcnJheV9l bGVtZW50cyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgYWRkcmVzcywgc3RyZWFt LAorLQkJCQkJcmVjdXJzZSwgb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGkpOworKwkgICAgICB2 YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHNhdmVkX3R5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9v ZmZzZXQsCisrCQkJCQlzYXZlZF9hZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsCisrCQkJCQlvcmln aW5hbF92YWx1ZSwgb3B0aW9ucywgaSk7CisgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIn0iKTsKKyAJICAgIH0KKyAJICBicmVhazsKK0BAIC0xNjQsNiArMTg1LDcgQEAgcGFzY2Fs X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAor IAkgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0by4gICovCisgCSAg cHJpbnRfYWRkcmVzc19kZW1hbmdsZSAoZ2RiYXJjaCwgYWRkciwgc3RyZWFtLCBkZW1hbmdsZSk7 CisgCSAgLyogUmV0dXJuIHZhbHVlIGlzIGlycmVsZXZhbnQgZXhjZXB0IGZvciBzdHJpbmcgcG9p bnRlcnMuICAqLworKwkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAJICByZXR1cm4gKDApOwor IAl9CisgCitAQCAtMjU0LDYgKzI3Niw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKKyAgICAgICAvKiBSZXR1cm4gbnVtYmVy IG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZworIAkgJ1ww JyBpZiB3ZSByZWFjaGVkIHRoZSBlbmQuICB2YWxfcHJpbnRfc3RyaW5nIHRha2VzIGNhcmUgaW5j bHVkaW5nCisgCSB0aGUgdGVybWluYXRpbmcgJ1wwJyBpZiBuZWNlc3NhcnkuICAqLworKyAgICAg IGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAgICAgICByZXR1cm4gaTsKKyAKKyAgICAgICBicmVh azsKK0BAIC01NTYsNiArNTc5LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorICAgICAgIGVycm9yIChfKCJJbnZhbGlkIHBh c2NhbCB0eXBlIGNvZGUgJWQgaW4gc3ltYm9sIHRhYmxlLiIpLCBUWVBFX0NPREUgKHR5cGUpKTsK KyAgICAgfQorICAgZ2RiX2ZsdXNoIChzdHJlYW0pOworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OworICAgcmV0dXJuICgwKTsKKyB9CisgDAorZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2Ri L3BhcnNlLmMKK2luZGV4IDE4MDM4ZWQuLjE0MzhhZTAgMTAwNjQ0CistLS0gYS9nZGIvcGFyc2Uu YworKysrIGIvZ2RiL3BhcnNlLmMKK0BAIC00ODcsOSArNDg3LDIxIEBAIHdyaXRlX2V4cF9tc3lt Ym9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCisgICBwYyA9IGdkYmFyY2hfY29u dmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGFkZHIsICZjdXJyZW50X3RhcmdldCk7 CisgICBpZiAocGMgIT0gYWRkcikKKyAgICAgeworKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqaWZ1bmNfbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMpOwogKwotKyAg bWVtYnVmX29iai0+YnVmZmVyID0gYnVmZmVyOwotKyAgbWVtYnVmX29iai0+YWRkciA9IGFkZHI7 Ci0rICBtZW1idWZfb2JqLT5sZW5ndGggPSBsZW5ndGg7Ci0rCi0rICByZXR1cm4gUHlCdWZmZXJf RnJvbVJlYWRXcml0ZU9iamVjdCAoKFB5T2JqZWN0ICopIG1lbWJ1Zl9vYmosIDAsCi0rCQkJCSAg ICAgICBQeV9FTkRfT0ZfQlVGRkVSKTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YgZ2Ri LndyaXRlX21lbW9yeSAoYWRkcmVzcywgYnVmZmVyIFssIGxlbmd0aF0pLgotKyAgIFdyaXRlcyB0 aGUgY29udGVudHMgb2YgQlVGRkVSIChhIFB5dGhvbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgcmVh ZCBidWZmZXIKLSsgICBwcm90b2NvbCkgYXQgQUREUkVTUyBpbiB0aGUgaW5mZXJpb3IncyBtZW1v cnkuICBXcml0ZSBMRU5HVEggYnl0ZXMgZnJvbQotKyAgIEJVRkZFUiwgb3IgaXRzIGVudGlyZSBj b250ZW50cyBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHByb3ZpZGVkLiAgVGhlCi0rICAgZnVuY3Rp b24gcmV0dXJucyBub3RoaW5nLiAgKi8KLSsKLStQeU9iamVjdCAqCi0rZ2RicHlfd3JpdGVfbWVt b3J5IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewotKyAgaW50IGJ1Zl9sZW4s IGVycm9yID0gMDsKLSsgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKLSsgIENPUkVfQUREUiBhZGRyLCBs ZW5ndGg7Ci0rICBQeU9iamVjdCAqYWRkcl9vYmosICpsZW5ndGhfb2JqID0gTlVMTDsKLSsgIHZv bGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIGlmICghIFB5QXJnX1Bh cnNlVHVwbGUgKGFyZ3MsICJPcyN8TyIsICZhZGRyX29iaiwgJmJ1ZmZlciwgJmJ1Zl9sZW4sCi0r CQkJICAmbGVuZ3RoX29iaikpCi0rICAgIHJldHVybiBOVUxMOworICAgICAgIC8qIEluIHRoaXMg Y2FzZSwgYXNzdW1lIHdlIGhhdmUgYSBjb2RlIHN5bWJvbCBpbnN0ZWFkIG9mCisgCSBhIGRhdGEg c3ltYm9sLiAgKi8KKy0gICAgICB0eXBlID0gbXN0X3RleHQ7CiArCi0rICBUUllfQ0FUQ0ggKGV4 Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgaWYgKCFnZXRfYWRkcl9mcm9t X3B5dGhvbiAoYWRkcl9vYmosICZhZGRyKSkKLSsJewotKwkgIGVycm9yID0gMTsKLSsJICBicmVh azsKLSsJfQotKyAgICAgIAotKyAgICAgIGlmICghbGVuZ3RoX29iaikKLSsJbGVuZ3RoID0gYnVm X2xlbjsKLSsgICAgICBlbHNlIGlmICghZ2V0X2FkZHJfZnJvbV9weXRob24gKGxlbmd0aF9vYmos ICZsZW5ndGgpKQorKyAgICAgIGlmIChpZnVuY19tc3ltICE9IE5VTEwgJiYgTVNZTUJPTF9UWVBF IChpZnVuY19tc3ltKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJICAmJiBTWU1CT0xfVkFMVUVf QUREUkVTUyAoaWZ1bmNfbXN5bSkgPT0gcGMpCiArCXsKLSsJICBlcnJvciA9IDE7Ci0rCSAgYnJl YWs7CisrCSAgLyogQSBmdW5jdGlvbiBkZXNjcmlwdG9yIGhhcyBiZWVuIHJlc29sdmVkIGJ1dCBQ QyBpcyBzdGlsbCBpbiB0aGUKKysJICAgICBnbnUtaWZ1bmMgcmVzb2x2ZXIgYm9keSAoc3VjaCBh cyBiZWNhdXNlIGluZmVyaW9yIGRvZXMgbm90IHJ1biB0bworKwkgICAgIGJlIGFibGUgdG8gY2Fs bCBpdCkuICAqLworKwkgIHR5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7CiArCX0KKysgICAgICBl bHNlCisrCXR5cGUgPSBtc3RfdGV4dDsKKyAgICAgICBzZWN0aW9uID0gTlVMTDsKKyAgICAgICBh ZGRyID0gcGM7CisgICAgIH0KK0BAIC01MjEsNiArNTMzLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9s IChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCisgICAgICAgd3JpdGVfZXhwX2VsdF90 eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3RleHRfc3ltYm9sKTsKKyAgICAg ICBicmVhazsKKyAKKysgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6CisrICAgICAgd3JpdGVf ZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpCisrCQkJCQkgICAgICAgLT5ub2Rl YnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCk7CisrICAgICAgYnJlYWs7CiArCi0rICAgICAgd3Jp dGVfbWVtb3J5IChhZGRyLCBidWZmZXIsIGxlbmd0aCk7Ci0rICAgIH0KLSsgIEdEQl9QWV9IQU5E TEVfRVhDRVBUSU9OIChleGNlcHQpOwotKwotKyAgaWYgKGVycm9yKQotKyAgICByZXR1cm4gTlVM TDsKLSsKLSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLSsvKiBEZXN0cnVjdG9yIG9mIE1lbWJ1 ZiBvYmplY3RzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK21icHlfZGVhbGxvYyAoUHlPYmplY3Qg KnNlbGYpCi0rewotKyAgeGZyZWUgKCgobWVtYnVmX29iamVjdCAqKSBzZWxmKS0+YnVmZmVyKTsK LSsgIHNlbGYtPm9iX3R5cGUtPnRwX2ZyZWUgKHNlbGYpOwotK30KLSsKLSsvKiBSZXR1cm4gYSBk ZXNjcmlwdGlvbiBvZiB0aGUgTWVtYnVmIG9iamVjdC4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0 ICoKLSttYnB5X3N0ciAoUHlPYmplY3QgKnNlbGYpCi0rewotKyAgbWVtYnVmX29iamVjdCAqbWVt YnVmX29iaiA9IChtZW1idWZfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICByZXR1cm4gUHlTdHJpbmdf RnJvbUZvcm1hdCAoIm1lbW9yeSBidWZmZXIgZm9yIGFkZHJlc3MgJXMsICVzIGJ5dGVzIGxvbmci LAotKwkJCSAgICAgIHBhZGRyZXNzIChtZW1idWZfb2JqLT5hZGRyKSwKLSsJCQkgICAgICBwdWxv bmdlc3QgKG1lbWJ1Zl9vYmotPmxlbmd0aCkpOwotK30KLSsKLStzdGF0aWMgUHlfc3NpemVfdAot K2dldF9yZWFkX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc2VnbWVudCwgdm9p ZCAqKnB0cnB0cikKLSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1Zl9v YmplY3QgKikgc2VsZjsKLSsKLSsgIGlmIChzZWdtZW50KQotKyAgICB7Ci0rICAgICAgUHlFcnJf U2V0U3RyaW5nIChQeUV4Y19TeXN0ZW1FcnJvciwKLSsJCSAgICAgICAiVGhlIG1lbW9yeSBidWZm ZXIgc3VwcG9ydHMgb25seSBvbmUgc2VnbWVudC4iKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAg IH0KLSsKLSsgICpwdHJwdHIgPSBtZW1idWZfb2JqLT5idWZmZXI7CisgICAgIGNhc2UgbXN0X2Rh dGE6CisgICAgIGNhc2UgbXN0X2ZpbGVfZGF0YToKKyAgICAgY2FzZSBtc3RfYnNzOgorQEAgLTUy OCw2ICs1NDUsMTAgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq bXN5bWJvbCkKKyAgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmls ZSktPm5vZGVidWdfZGF0YV9zeW1ib2wpOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNlIG1z dF9zbG90X2dvdF9wbHQ6CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUg KG9iamZpbGUpLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sKTsKKysgICAgICBicmVhazsKICsKLSsg IHJldHVybiBtZW1idWZfb2JqLT5sZW5ndGg7CisgICAgIGRlZmF1bHQ6CisgICAgICAgd3JpdGVf ZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3Vua25vd25fc3lt Ym9sKTsKKyAgICAgICBicmVhazsKK0BAIC0xNDgxLDYgKzE1MDIsNyBAQCBwYXJzZXJfZnByaW50 ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQorIAorIGludAorIG9wZXJhdG9yX2NoZWNr X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorKwkJCSBpbnQgKCp0 eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCisgCQkJIGludCAoKm9i amZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJICAgICAgdm9pZCAq ZGF0YSksCisgCQkJIHZvaWQgKmRhdGEpCitAQCAtMTUyMiw3ICsxNTQ0LDcgQEAgb3BlcmF0b3Jf Y2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisgCSAgICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsKKyAJICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKKyAKKy0JICAgIGlmIChv YmpmaWxlICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisrCSAgICBpZiAob2Jq ZmlsZSAmJiBvYmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkK KyAJICAgICAgcmV0dXJuIDE7CisgCSAgfQorICAgICAgIH0KK0BAIC0xNTQwLDcgKzE1NjIsOCBA QCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBv cywKKyAKKyAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBs YWNlZC4KKyAJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8K Ky0JaWYgKCgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwg ZGF0YSkpCisrCWlmIChvYmpmaWxlX2Z1bmMKKysJICAgICYmICgqb2JqZmlsZV9mdW5jKSAoU1lN Qk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCisgCSAgcmV0dXJuIDE7CisgCisg CS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2 YXJpYWJsZS4gICovCitAQCAtMTU1MywyNCArMTU3NiwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKyAKKyAgIC8qIEludm9rZSBj YWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVM TC4gICovCisgCistICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpCisrICBpZiAodHlw ZSAmJiB0eXBlX2Z1bmMgJiYgKCp0eXBlX2Z1bmMpICh0eXBlLCBkYXRhKSkKKysgICAgcmV0dXJu IDE7CisrICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwor ICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCisg ICAgIHJldHVybiAxOworLSAgaWYgKG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxl LCBkYXRhKSkKKysgIGlmIChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVu YykgKG9iamZpbGUsIGRhdGEpKQorICAgICByZXR1cm4gMTsKKyAKKyAgIHJldHVybiAwOworIH0K KyAKKy0vKiBDYWxsIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQg YmVpbmcgcmVmZXJlbmNlZCBieSBFWFAuCistICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2Fs bGVkIHdpdGggTlVMTCBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KKy0gICBhcmJp dHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVuY3Rp b25zIHJldHVybnMKKy0gICBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJv IHZhbHVlIGlzIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvCistICAgdGhlIGNhbGxlci4gIE90aGVy d2lzZSB6ZXJvIGlzIHJldHVybmVkIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4K Ky0gICAqLworKy8qIENhbGwgVFlQRV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBF IGFuZCBPQkpGSUxFIGZvdW5kIGJlaW5nCisrICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUgZnVu Y3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAorKyAgIE9CSkZJ TEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERB VEEgcG9pbnRlci4KKysgICBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJv IHZhbHVlIHRoZW4gKGFueSBvdGhlcikgbm9uLXplcm8KKysgICB2YWx1ZSBpcyBpbW1lZGlhdGVs eSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQKKysg ICBhZnRlciBpdGVyYXRpbmcgdGhyb3VnaCB3aG9sZSBFWFAuICAqLworIAorIHN0YXRpYyBpbnQK KyBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKysJICAgICBpbnQgKCp0eXBl X2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCisgCSAgICAgaW50ICgqb2Jq ZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAorIAkgICAg IHZvaWQgKmRhdGEpCisgeworQEAgLTE1ODUsNyArMTYxMSw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLAorIAorICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOworICAg ICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAo ZXhwLCBwb3MsCistCQkJCQkJCSAgIG9iamZpbGVfZnVuYywgZGF0YSkpCisrCQkJCQkJCSAgIHR5 cGVfZnVuYywKKysJCQkJCQkJICAgb2JqZmlsZV9mdW5jLAorKwkJCQkJCQkgICBkYXRhKSkKKyAJ cmV0dXJuIDE7CisgCisgICAgICAgZW5kcG9zID0gcG9zOworQEAgLTE2MTYsNyArMTY0NCwyNiBA QCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKKyB7CisgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOworIAorLSAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAs IGV4cF91c2VzX29iamZpbGVfaXRlciwgb2JqZmlsZSk7CisrICByZXR1cm4gZXhwX2l0ZXJhdGUg KGV4cCwgTlVMTCwgZXhwX3VzZXNfb2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKICt9CiArCi0rc3Rh dGljIFB5X3NzaXplX3QKLStnZXRfd3JpdGVfYnVmZmVyIChQeU9iamVjdCAqc2VsZiwgUHlfc3Np emVfdCBzZWdtZW50LCB2b2lkICoqcHRycHRyKQorKy8qIEhlbHBlciBmb3IgZXhwX3R5cGVzX21h cmtfdXNlZC4gICovCisrCisrc3RhdGljIGludAorK2V4cF90eXBlc19tYXJrX3VzZWRfaXRlciAo c3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKICt7Ci0rICByZXR1cm4gZ2V0X3JlYWRf YnVmZmVyIChzZWxmLCBzZWdtZW50LCBwdHJwdHIpOworKyAgdHlwZV9tYXJrX3VzZWQgKHR5cGUp OworKworKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKICt9 CiArCi0rc3RhdGljIFB5X3NzaXplX3QKLStnZXRfc2VnX2NvdW50IChQeU9iamVjdCAqc2VsZiwg UHlfc3NpemVfdCAqbGVucCkKKysvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgdHlwZSBj b250YWluZWQgaW4gRVhQLiAgKi8KKysKKyt2b2lkCisrZXhwX3R5cGVzX21hcmtfdXNlZCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCkKICt7Ci0rICBpZiAobGVucCkKLSsgICAgKmxlbnAgPSAoKG1l bWJ1Zl9vYmplY3QgKikgc2VsZiktPmxlbmd0aDsKKysgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90 eXBlc19tYXJrX3VzZWRfaXRlciwgTlVMTCwgTlVMTCk7CisgfQorIAorIHZvaWQKK2RpZmYgLS1n aXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVmcy5oCitpbmRleCAxNjI1NTc1 Li5kMDcyZjg2IDEwMDY0NAorLS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKKysrKyBiL2dkYi9wYXJz ZXItZGVmcy5oCitAQCAtMTk0LDYgKzE5NCw4IEBAIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0 aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwKKyAJCQkJ ICAgICAgaW50ICopOworIAorIGV4dGVybiBpbnQgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0 cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisrCQkJCSAgICBpbnQgKCp0eXBlX2Z1bmMp IChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkJCQkgICAgICB2b2lkICpkYXRhKSwKKyAJCQkJICAg IGludCAoKm9iamZpbGVfZnVuYykKKyAJCQkJICAgICAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCB2b2lkICpkYXRhKSwKKyAJCQkJICAgIHZvaWQgKmRhdGEpOworQEAgLTI5MSw2ICsyOTMsNyBA QCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKKyAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0 ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybworICAgICAgICBzaG91 bGQgYmUgcmV0dXJuZWQuICAqLworICAgICBpbnQgKCpvcGVyYXRvcl9jaGVjaykgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCBwb3MsCisrCQkJICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0 IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJCSAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJCXZvaWQgKmRhdGEpLAorIAkJCSAgIHZvaWQg KmRhdGEpOworQEAgLTMyOSw0ICszMzIsOCBAQCBleHRlcm4gdm9pZCBwYXJzZXJfZnByaW50ZiAo RklMRSAqLCBjb25zdCBjaGFyICosIC4uLikgQVRUUklCVVRFX1BSSU5URiAoMiwgMyk7CisgCisg ZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCisrZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiArCi0rICBy ZXR1cm4gMTsKLSt9CisrZXh0ZXJuIHZvaWQgZXhwX3R5cGVzX21hcmtfdXNlZCAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCk7CisrCisgI2VuZGlmIC8qIFBBUlNFUl9ERUZTX0ggKi8KK2RpZmYgLS1n aXQgYS9nZGIvcHBjLWxpbnV4LW5hdC5jIGIvZ2RiL3BwYy1saW51eC1uYXQuYworaW5kZXggMThk ZGVlNy4uNjUyYjAyYSAxMDA2NDQKKy0tLSBhL2dkYi9wcGMtbGludXgtbmF0LmMKKysrKyBiL2dk Yi9wcGMtbGludXgtbmF0LmMKK0BAIC0yMDEwLDYgKzIwMTAsMjQgQEAgcHBjX2xpbnV4X3JlbW92 ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorICAgcmV0dXJu IHJldDsKKyB9CisgCisrLyogU2VlIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICBEbyBub3Qg dXNlIHdyYXBwZXIKKysgICBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgYXMgaXQgd291bGQg bW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQorKyAgIChzYXZlZF9kYWJyX3ZhbHVlKS4gICovCiAr Ci0rc3RhdGljIFB5X3NzaXplX3QKLStnZXRfY2hhcl9idWZmZXIgKFB5T2JqZWN0ICpzZWxmLCBQ eV9zc2l6ZV90IHNlZ21lbnQsIGNoYXIgKipwdHJwdHIpCisrc3RhdGljIGludAorK3BwY19saW51 eF9kZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpCiArewotKyAgdm9pZCAqcHRyID0gTlVMTDsKLSsg IFB5X3NzaXplX3QgcmV0OworKyAgcGlkX3QgdGlkOwogKwotKyAgcmV0ID0gZ2V0X3JlYWRfYnVm ZmVyIChzZWxmLCBzZWdtZW50LCAmcHRyKTsKLSsgICpwdHJwdHIgPSAoY2hhciAqKSBwdHI7Cisr ICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0 aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOwogKwotKyAgcmV0dXJuIHJldDsKKysgIGlmIChw dHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIHRpZCwgTlVMTCwgTlVMTCkgPCAwKQorKyAgICBy ZXR1cm4gLTE7CisrICByZXR1cm4gMDsKICt9CiArCi0rLyogUHl0aG9uIGRvZXNuJ3QgcHJvdmlk ZSBhIGRlY2VudCB3YXkgdG8gZ2V0IGNvbXBhdGliaWxpdHkgaGVyZS4gICovCi0rI2lmIEhBVkVf TElCUFlUSE9OMl80Ci0rI2RlZmluZSBDSEFSQlVGRkVSUFJPQ19OQU1FIGdldGNoYXJidWZmZXJw cm9jCi0rI2Vsc2UKLSsjZGVmaW5lIENIQVJCVUZGRVJQUk9DX05BTUUgY2hhcmJ1ZmZlcnByb2MK LSsjZW5kaWYKKyBzdGF0aWMgdm9pZAorIHBwY19saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRp ZCkKKyB7CitAQCAtMjM0OSw2ICsyMzY3LDcgQEAgX2luaXRpYWxpemVfcHBjX2xpbnV4X25hdCAo dm9pZCkKKyAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9IHBwY19saW51eF9y ZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQ7CisgICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50 ID0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9p bnRzID0gcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50czsKKyAgIHQtPnRvX3N0b3BwZWRfYnlf d2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19z dG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKKyAg IHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGludXhfd2F0Y2hwb2lu dF9hZGRyX3dpdGhpbl9yYW5nZTsKK2RpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9w cmludGNtZC5jCitpbmRleCA1NTg2NzY3Li4xNDRlODUxIDEwMDY0NAorLS0tIGEvZ2RiL3ByaW50 Y21kLmMKKysrKyBiL2dkYi9wcmludGNtZC5jCitAQCAtOTcxLDYgKzk3MSwxMSBAQCBwcmludF9j b21tYW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCisgICBlbHNl CisgICAgIHZhbCA9IGFjY2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKKyAKKysgIC8qIERvIG5vdCB0 cnkgdG8gT0JKRUNUX0FERFJFU1NfU0VUIGhlcmUgYW55dGhpbmcuICBXZSBhcmUgaW50ZXJlc3Rl ZCBpbiB0aGUKKysgICAgIHNvdXJjZSB2YXJpYWJsZSBiYXNlIGFkZHJlc3NlcyBhcyBmb3VuZCBi eSBSRUFEX1ZBUl9WQUxVRS4gIFRoZSB2YWx1ZSBoZXJlCisrICAgICBjYW4gYmUgYWxyZWFkeSBh IGNhbGN1bGF0ZWQgZXhwcmVzc2lvbiBhZGRyZXNzIGluYXBwcm9wcmlhdGUgZm9yCisrICAgICBE V19PUF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8KICsKLStzdGF0aWMgUHlCdWZmZXJQcm9jcyBi dWZmZXJfcHJvY3MgPSB7Ci0rICBnZXRfcmVhZF9idWZmZXIsCi0rICBnZXRfd3JpdGVfYnVmZmVy LAotKyAgZ2V0X3NlZ19jb3VudCwKLSsgIC8qIFRoZSBjYXN0IGhlcmUgd29ya3MgYXJvdW5kIGEg ZGlmZmVyZW5jZSBiZXR3ZWVuIFB5dGhvbiAyLjQgYW5kCi0rICAgICBQeXRob24gMi41LiAgKi8K LSsgIChDSEFSQlVGRkVSUFJPQ19OQU1FKSBnZXRfY2hhcl9idWZmZXIKLSt9OworICAgaWYgKHZv aWRwcmludCB8fCAodmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKKyAJCSAgICBUWVBFX0NPREUg KHZhbHVlX3R5cGUgKHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKKyAgICAgeworQEAgLTE0NzEs NiArMTQ3NiwyMiBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorIAlzZXRf aW50ZXJuYWx2YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1 ZSk7CisgICAgIH0KKyB9CiArCi0rc3RhdGljIFB5VHlwZU9iamVjdCBtZW1idWZfb2JqZWN0X3R5 cGUgPSB7Ci0rICBQeU9iamVjdF9IRUFEX0lOSVQgKE5VTEwpCi0rICAwLAkJCQkgIC8qb2Jfc2l6 ZSovCi0rICAiZ2RiLk1lbWJ1ZiIsCQkJICAvKnRwX25hbWUqLwotKyAgc2l6ZW9mIChtZW1idWZf b2JqZWN0KSwJICAvKnRwX2Jhc2ljc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfaXRlbXNpemUqLwot KyAgbWJweV9kZWFsbG9jLAkJCSAgLyp0cF9kZWFsbG9jKi8KLSsgIDAsCQkJCSAgLyp0cF9wcmlu dCovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfc2V0YXR0ciov Ci0rICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCi0rICAwLAkJCQkgIC8qdHBfcmVwciovCi0rICAw LAkJCQkgIC8qdHBfYXNfbnVtYmVyKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5jZSovCi0r ICAwLAkJCQkgIC8qdHBfYXNfbWFwcGluZyovCi0rICAwLAkJCQkgIC8qdHBfaGFzaCAqLwotKyAg MCwJCQkJICAvKnRwX2NhbGwqLwotKyAgbWJweV9zdHIsCQkJICAvKnRwX3N0ciovCi0rICAwLAkJ CQkgIC8qdHBfZ2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHJvKi8KLSsgICZidWZm ZXJfcHJvY3MsCQkgIC8qdHBfYXNfYnVmZmVyKi8KLSsgIFB5X1RQRkxBR1NfREVGQVVMVCwJCSAg Lyp0cF9mbGFncyovCi0rICAiR0RCIG1lbW9yeSBidWZmZXIgb2JqZWN0IiwgCSAgLyp0cF9kb2Mq LwotKyAgMCwJCQkJICAvKiB0cF90cmF2ZXJzZSAqLwotKyAgMCwJCQkJICAvKiB0cF9jbGVhciAq LwotKyAgMCwJCQkJICAvKiB0cF9yaWNoY29tcGFyZSAqLwotKyAgMCwJCQkJICAvKiB0cF93ZWFr bGlzdG9mZnNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9pdGVyICovCi0rICAwLAkJCQkgIC8qIHRw X2l0ZXJuZXh0ICovCi0rICAwLAkJCQkgIC8qIHRwX21ldGhvZHMgKi8KLSsgIDAsCQkJCSAgLyog dHBfbWVtYmVycyAqLwotKyAgMCwJCQkJICAvKiB0cF9nZXRzZXQgKi8KLSsgIDAsCQkJCSAgLyog dHBfYmFzZSAqLwotKyAgMCwJCQkJICAvKiB0cF9kaWN0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Rl c2NyX2dldCAqLwotKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9zZXQgKi8KLSsgIDAsCQkJCSAgLyog dHBfZGljdG9mZnNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9pbml0ICovCi0rICAwLAkJCQkgIC8q IHRwX2FsbG9jICovCi0rICBQeVR5cGVfR2VuZXJpY05ldwkJICAvKiB0cF9uZXcgKi8KLSt9Owor Ky8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhp cyBHREIgc291cmNlIGZpbGUuICAqLwogKwotK3ZvaWQKLStnZGJweV9pbml0aWFsaXplX21lbWJ1 ZiAodm9pZCkKKytzdGF0aWMgdm9pZAorK3ByaW50X3R5cGVzX21hcmtfdXNlZCAodm9pZCkKICt7 Ci0rICBpZiAoUHlUeXBlX1JlYWR5ICgmbWVtYnVmX29iamVjdF90eXBlKSA8IDApCi0rICAgIHJl dHVybjsKKysgIHN0cnVjdCBkaXNwbGF5ICpkOwogKwotKyAgUHlfSU5DUkVGICgmbWVtYnVmX29i amVjdF90eXBlKTsKLSsgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIk1lbWJ1ZiIs IChQeU9iamVjdCAqKSAmbWVtYnVmX29iamVjdF90eXBlKTsKKysgIGlmIChsYXN0X2V4YW1pbmVf dmFsdWUpCisrICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChsYXN0X2V4YW1pbmVfdmFs dWUpKTsKKysKKysgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQgPSBkLT5uZXh0KQorKyAg ICBpZiAoZC0+ZXhwKQorKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQgKGQtPmV4cCk7CiArfQot ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYyBiL2dkYi9weXRob24vcHkt cHJldHR5cHJpbnQuYwotaW5kZXggNDM0YzhhNS4uYjIyYzU1NyAxMDA2NDQKLS0tLSBhL2dkYi9w eXRob24vcHktcHJldHR5cHJpbnQuYwotKysrIGIvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5j Ci1AQCAtMjA0LDEwICsyMDQsMTAgQEAgcHJldHR5X3ByaW50X29uZV92YWx1ZSAoUHlPYmplY3Qg KnByaW50ZXIsIHN0cnVjdCB2YWx1ZSAqKm91dF92YWx1ZSkKLSAJICAgICAgJiYgcmVzdWx0ICE9 IFB5X05vbmUpCi0gCSAgICB7Ci0gCSAgICAgICpvdXRfdmFsdWUgPSBjb252ZXJ0X3ZhbHVlX2Zy b21fcHl0aG9uIChyZXN1bHQpOwotLQkgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQgKCkpCi0tCQkq b3V0X3ZhbHVlID0gTlVMTDsKLS0JICAgICAgUHlfREVDUkVGIChyZXN1bHQpOwotLQkgICAgICBy ZXN1bHQgPSBOVUxMOwotKyAJICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotKyAJCSpvdXRf dmFsdWUgPSBOVUxMOwotKyAJICAgICAgUHlfREVDUkVGIChyZXN1bHQpOwotKyAJICAgICAgcmVz dWx0ID0gTlVMTDsKLSAJICAgIH0KLSAJfQotICAgICB9Ci1AQCAtNzAwLDE0ICs3MDAsNyBAQCBn ZGJweV9nZXRfdmFyb2JqX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdmFsdWUgKnZhbHVlKQotIHsK LSAgIFB5T2JqZWN0ICp2YWxfb2JqOwotICAgUHlPYmplY3QgKnByZXR0eV9wcmludGVyID0gTlVM TDsKLS0gIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKKysKKyAMCiAgCi0t ICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotLSAgICB7Ci0tICAgICAgdmFs dWUgPSB2YWx1ZV9jb3B5ICh2YWx1ZSk7Ci0tICAgIH0KLS0gIEdEQl9QWV9IQU5ETEVfRVhDRVBU SU9OIChleGNlcHQpOwotLSAgCi0gICB2YWxfb2JqID0gdmFsdWVfdG9fdmFsdWVfb2JqZWN0ICh2 YWx1ZSk7Ci0gICBpZiAoISB2YWxfb2JqKQotICAgICByZXR1cm4gTlVMTDsKKyAvKiBBZGQgYW4g ZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgorQEAgLTI4NjksNCArMjg5MCw2 IEBAIFNob3cgcHJpbnRpbmcgb2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciB3aXRo IDxzeW1ib2w+LiIpLCBOVUxMLAorICAgYWRkX2NvbSAoImV2YWwiLCBub19jbGFzcywgZXZhbF9j b21tYW5kLCBfKCJcCisgQ29udmVydCBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFy ZzIsIGFyZzMsIC4uLiwgYXJnbiB0b1xuXAorIGEgY29tbWFuZCBsaW5lLCBhbmQgY2FsbCBpdC4i KSk7CisrCisrICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBlc19tYXJrX3Vz ZWQpOworIH0KIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXR5cGUuYyBiL2dkYi9weXRob24v cHktdHlwZS5jCi1pbmRleCBiOTAxMjU1Li40ZmYxOGU1IDEwMDY0NAoraW5kZXggODIzMjQzNi4u ZTlmYzhhYSAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktdHlwZS5jCiArKysgYi9nZGIvcHl0 aG9uL3B5LXR5cGUuYwotQEAgLTI3LDYgKzI3LDggQEAKLSAjaW5jbHVkZSAiZGVtYW5nbGUuaCIK LSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKK0BAIC0yOSw2ICsyOSw4IEBACiAgI2luY2x1ZGUgImxh bmd1YWdlLmgiCisgI2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJiY2FjaGUuaCIKICsjaW5j bHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAogIHR5cGVkZWYg c3RydWN0IHB5dHlfdHlwZV9vYmplY3QKICB7Ci1AQCAtMzUsMTEgKzM3LDE3IEBAIHR5cGVkZWYg c3RydWN0IHB5dHlfdHlwZV9vYmplY3QKK0BAIC0zNywxMSArMzksMTcgQEAgdHlwZWRlZiBzdHJ1 Y3QgcHl0eV90eXBlX29iamVjdAogIAogICAgLyogSWYgYSBUeXBlIG9iamVjdCBpcyBhc3NvY2lh dGVkIHdpdGggYW4gb2JqZmlsZSwgaXQgaXMga2VwdCBvbiBhCiAgICAgICBkb3VibHktbGlua2Vk IGxpc3QsIHJvb3RlZCBpbiB0aGUgb2JqZmlsZS4gIFRoaXMgbGV0cyB1cyBjb3B5IHRoZQpAQCAt MTAwNjYsNyArNDk4NCw3IEBAIGluZGV4IGI5MDEyNTUuLjRmZjE4ZTUgMTAwNjQ0CiAgc3RhdGlj IFB5VHlwZU9iamVjdCB0eXBlX29iamVjdF90eXBlOwogIAogIC8qIEEgRmllbGQgb2JqZWN0LiAg Ki8KLUBAIC02MTgsOCArNjI2LDU5IEBAIHR5cHlfc3RyIChQeU9iamVjdCAqc2VsZikKK0BAIC05 MTksOCArOTI3LDU5IEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqb3RoZXIsIGludCBvcCkKICAKICAMCiAgCkBAIC0xMDEyNiw3ICs1MDQ0LDcgQEAgaW5kZXgg YjkwMTI1NS4uNGZmMThlNSAxMDA2NDQKICBzdGF0aWMgdm9pZAogIHNhdmVfb2JqZmlsZV90eXBl cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQogIHsKLUBAIC02MzcsMTIg KzY5NiwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2 b2lkICpkYXR1bSkKK0BAIC05MzgsMTIgKzk5NywxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICAgICAgewogICAgICAgIHR5cGVf b2JqZWN0ICpuZXh0ID0gb2JqLT5uZXh0OwogIApAQCAtMTAxNDQsNyArNTA2Miw3IEBAIGluZGV4 IGI5MDEyNTUuLjRmZjE4ZTUgMTAwNjQ0CiAgCiAgICAgICAgb2JqID0gbmV4dDsKICAgICAgfQot QEAgLTY1Myw0MiArNzEzLDI1IEBAIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIHZvaWQgKmRhdHVtKQorQEAgLTk1NCw0MiArMTAxNCwyNSBAQCBzYXZlX29iamZp bGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICB9CiAgCiAg c3RhdGljIHZvaWQKQEAgLTEwMTk5LDcgKzUxMTcsNyBAQCBpbmRleCBiOTAxMjU1Li40ZmYxOGU1 IDEwMDY0NAogIH0KICAKICAvKiBDcmVhdGUgYSBuZXcgVHlwZSByZWZlcnJpbmcgdG8gVFlQRS4g ICovCi1AQCAtNjk5LDcgKzc0MiwxMCBAQCB0eXBlX3RvX3R5cGVfb2JqZWN0IChzdHJ1Y3QgdHlw ZSAqdHlwZSkKK0BAIC0xMDAwLDcgKzEwNDMsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3Ry dWN0IHR5cGUgKnR5cGUpCiAgCiAgICB0eXBlX29iaiA9IFB5T2JqZWN0X05ldyAodHlwZV9vYmpl Y3QsICZ0eXBlX29iamVjdF90eXBlKTsKICAgIGlmICh0eXBlX29iaikKQEAgLTEwMjExLDcgKzUx MjksNyBAQCBpbmRleCBiOTAxMjU1Li40ZmYxOGU1IDEwMDY0NAogIAogICAgcmV0dXJuIChQeU9i amVjdCAqKSB0eXBlX29iajsKICB9Ci1AQCAtNzczLDYgKzgxOSw4IEBAIGdkYnB5X2luaXRpYWxp emVfdHlwZXMgKHZvaWQpCitAQCAtMTA3NCw2ICsxMTIwLDggQEAgZ2RicHlfaW5pdGlhbGl6ZV90 eXBlcyAodm9pZCkKICAKICAgIFB5X0lOQ1JFRiAoJmZpZWxkX29iamVjdF90eXBlKTsKICAgIFB5 TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIkZpZWxkIiwgKFB5T2JqZWN0ICopICZmaWVs ZF9vYmplY3RfdHlwZSk7CkBAIC0xMDIyMSw0ODMgKzUxMzksNDkgQEAgaW5kZXggYjkwMTI1NS4u NGZmMThlNSAxMDA2NDQKICAKICAMCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5j IGIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCi1pbmRleCAyMDI0MDIxLi5lOGJlMTJkIDEwMDY0NAor aW5kZXggNDQ0NTY1NS4uOGIwNmZkOCAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktdmFsdWUu YwogKysrIGIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCi1AQCAtMjUsNiArMjUsNyBAQAotICNpbmNs dWRlICJsYW5ndWFnZS5oIgotICNpbmNsdWRlICJkZnAuaCIKLSAjaW5jbHVkZSAidmFscHJpbnQu aCIKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgImluZmNhbGwuaCIKKyAjaW5jbHVkZSAi ZXhwcmVzc2lvbi5oIgorICNpbmNsdWRlICJjcC1hYmkuaCIKICsjaW5jbHVkZSAib2JzZXJ2ZXIu aCIKICAKICAjaWZkZWYgSEFWRV9QWVRIT04KICAKLUBAIC0xMDY3LDYgKzEwNjgsMTcgQEAgZ2Ri cHlfaXNfdmFsdWVfb2JqZWN0IChQeU9iamVjdCAqb2JqKQotICAgcmV0dXJuIFB5T2JqZWN0X1R5 cGVDaGVjayAob2JqLCAmdmFsdWVfb2JqZWN0X3R5cGUpOwotIH0KLSAKLSsvKiBDYWxsIHR5cGVf bWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBm aWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZvaWQp Ci0rewotKyAgdmFsdWVfb2JqZWN0ICppdGVyOwotKwotKyAgZm9yIChpdGVyID0gdmFsdWVzX2lu X3B5dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpCi0rICAgIHR5cGVfbWFya191c2VkICh2 YWx1ZV90eXBlIChpdGVyLT52YWx1ZSkpOwotK30KLSsKLSB2b2lkCi0gZ2RicHlfaW5pdGlhbGl6 ZV92YWx1ZXMgKHZvaWQpCi0gewotQEAgLTEwNzcsNiArMTA4OSw4IEBAIGdkYnB5X2luaXRpYWxp emVfdmFsdWVzICh2b2lkKQotICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFs dWUiLCAoUHlPYmplY3QgKikgJnZhbHVlX29iamVjdF90eXBlKTsKLSAKLSAgIHZhbHVlc19pbl9w eXRob24gPSBOVUxMOwotKwotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHl0aG9uX3R5 cGVzX21hcmtfdXNlZCk7Ci0gfQotIAotIAwKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhv bi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAotaW5kZXggMmI4ZDMw MS4uMGFmOTljOCAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLSsr KyBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLUBAIC04MiwxMCArODIsMTEgQEAgc3Ry dWN0IGxhbmd1YWdlX2RlZm47Ci0gc3RydWN0IHByb2dyYW1fc3BhY2U7Ci0gCi0gZXh0ZXJuIFB5 T2JqZWN0ICpnZGJfbW9kdWxlOwotLWV4dGVybiBQeVR5cGVPYmplY3QgdmFsdWVfb2JqZWN0X3R5 cGU7Ci0gZXh0ZXJuIFB5VHlwZU9iamVjdCBibG9ja19vYmplY3RfdHlwZTsKLStleHRlcm4gUHlU eXBlT2JqZWN0IHZhbHVlX29iamVjdF90eXBlOwotIGV4dGVybiBQeVR5cGVPYmplY3Qgc3ltYm9s X29iamVjdF90eXBlOwotIAotKy8qIFVzZWQgaW4gcHl0aG9uLWluZmVyaW9yLmMuICAqLwotIHR5 cGVkZWYgc3RydWN0Ci0gewotICAgUHlPYmplY3RfSEVBRAotQEAgLTEyNiw2ICsxMjcsMTAgQEAg UHlPYmplY3QgKmJsb2NrX3RvX2Jsb2NrX29iamVjdCAoc3RydWN0IGJsb2NrICpibG9jaywgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpOwotIFB5T2JqZWN0ICp2YWx1ZV90b192YWx1ZV9vYmplY3Qg KHN0cnVjdCB2YWx1ZSAqdik7Ci0gUHlPYmplY3QgKnR5cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVj dCB0eXBlICopOwotIFB5T2JqZWN0ICpmcmFtZV9pbmZvX3RvX2ZyYW1lX29iamVjdCAoc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKTsKLStQeU9iamVjdCAqZnJhbWVfaW5mb190b19mcmFtZV9vYmpl Y3QgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSk7Ci0rdGhyZWFkX29iamVjdCAqY3JlYXRlX3Ro cmVhZF9vYmplY3QgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApOwotK3RocmVhZF9vYmplY3QgKmZp bmRfdGhyZWFkX29iamVjdCAocHRpZF90IHB0aWQpOwotK1B5T2JqZWN0ICpmaW5kX2luZmVyaW9y X29iamVjdCAoaW50IHBpZCk7Ci0gCi0gUHlPYmplY3QgKnBzcGFjZV90b19wc3BhY2Vfb2JqZWN0 IChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqKTsKLSBQeU9iamVjdCAqcHNweV9nZXRfcHJpbnRlcnMg KFB5T2JqZWN0ICosIHZvaWQgKik7Ci1AQCAtMTQ1LDggKzE1MCwxMSBAQCBzdHJ1Y3QgdHlwZSAq dHlwZV9vYmplY3RfdG9fdHlwZSAoUHlPYmplY3QgKm9iaik7Ci0gc3RydWN0IHN5bXRhYiAqc3lt dGFiX29iamVjdF90b19zeW10YWIgKFB5T2JqZWN0ICpvYmopOwotIHN0cnVjdCBzeW10YWJfYW5k X2xpbmUgKnNhbF9vYmplY3RfdG9fc3ltdGFiX2FuZF9saW5lIChQeU9iamVjdCAqb2JqKTsKLSAK LStQeU9iamVjdCAqZ2RicHlfZ2V0X2hvb2tfZnVuY3Rpb24gKGNvbnN0IGNoYXIgKik7Ci0gdm9p ZCBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7Ci0rCi0gdm9pZCBnZGJweV9pbml0 aWFsaXplX3ZhbHVlcyAodm9pZCk7Ci0rdm9pZCBnZGJweV9pbml0aWFsaXplX2JyZWFrcG9pbnRz ICh2b2lkKTsKLSB2b2lkIGdkYnB5X2luaXRpYWxpemVfZnJhbWVzICh2b2lkKTsKLSB2b2lkIGdk YnB5X2luaXRpYWxpemVfc3ltdGFicyAodm9pZCk7Ci0gdm9pZCBnZGJweV9pbml0aWFsaXplX2Nv bW1hbmRzICh2b2lkKTsKLUBAIC0xNTQsNiArMTYyLDcgQEAgdm9pZCBnZGJweV9pbml0aWFsaXpl X3N5bWJvbHMgKHZvaWQpOwotIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9zeW10YWJzICh2b2lkKTsK LSB2b2lkIGdkYnB5X2luaXRpYWxpemVfYmxvY2tzICh2b2lkKTsKLSB2b2lkIGdkYnB5X2luaXRp YWxpemVfdHlwZXMgKHZvaWQpOwotK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9ibG9ja3MgKHZvaWQp OwotIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9mdW5jdGlvbnMgKHZvaWQpOwotIHZvaWQgZ2RicHlf aW5pdGlhbGl6ZV9wc3BhY2UgKHZvaWQpOwotIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9vYmpmaWxl ICh2b2lkKTsKLUBAIC0xNzEsNiArMTgwLDEyIEBAIHN0cnVjdCBjbGVhbnVwICplbnN1cmVfcHl0 aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gZXh0ZXJuIHN0cnVjdCBnZGJhcmNo ICpweXRob25fZ2RiYXJjaDsKLSBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5 dGhvbl9sYW5ndWFnZTsKLSAKLStjaGFyICpnZGJweV9wYXJzZV9jb21tYW5kX25hbWUgKGNoYXIg KnRleHQsCi0rCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCwKLSsJCQkJ c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzdGFydF9saXN0KTsKLSsKLStQeU9iamVjdCAqZ2Ri cHlfcGFyYW1ldGVyX3ZhbHVlIChlbnVtIHZhcl90eXBlcywgdm9pZCAqKTsKLSsKLSAvKiBVc2Ug dGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8gdGhyb3cgdGhlIGFwcHJvcHJpYXRlIFB5dGhvbgot ICAgIGV4Y2VwdGlvbi4gICovCi0gI2RlZmluZSBHREJfUFlfSEFORExFX0VYQ0VQVElPTihFeGNl cHRpb24pCQkJCVwKLUBAIC0yMjEsMTMgKzIzNiwxNCBAQCBpbnQgZ2RicHlfaXNfdmFsdWVfb2Jq ZWN0IChQeU9iamVjdCAqb2JqKTsKLSBQeU9iamVjdCAqYXBwbHlfdmFyb2JqX3ByZXR0eV9wcmlu dGVyIChQeU9iamVjdCAqcHJpbnRfb2JqLAotIAkJCQkgICAgICAgc3RydWN0IHZhbHVlICoqcmVw bGFjZW1lbnQpOwotIFB5T2JqZWN0ICpnZGJweV9nZXRfdmFyb2JqX3ByZXR0eV9wcmludGVyIChz dHJ1Y3QgdmFsdWUgKnZhbHVlKTsKLStQeU9iamVjdCAqZ2RicHlfaW5zdGFudGlhdGVfcHJpbnRl ciAoUHlPYmplY3QgKmNvbnMsIFB5T2JqZWN0ICp2YWx1ZSk7Ci0gY2hhciAqZ2RicHlfZ2V0X2Rp c3BsYXlfaGludCAoUHlPYmplY3QgKnByaW50ZXIpOwotIFB5T2JqZWN0ICpnZGJweV9kZWZhdWx0 X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci0gCi0tZXh0ZXJu IFB5T2JqZWN0ICpnZGJweV9kb2NfY3N0OwotIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfY2hpbGRy ZW5fY3N0OwotIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfdG9fc3RyaW5nX2NzdDsKLSBleHRlcm4g UHlPYmplY3QgKmdkYnB5X2Rpc3BsYXlfaGludF9jc3Q7Ci0rZXh0ZXJuIFB5T2JqZWN0ICpnZGJw eV9kb2NfY3N0OwotIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfZW5hYmxlZF9jc3Q7Ci0gCi0gZXh0 ZXJuIFB5T2JqZWN0ICpnZGJweV9nZGJlcnJvcl9leGM7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKLWluZGV4IDczNDZmYmEuLjM0NzA4YzQg MTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCi0rKysgYi9nZGIvcHl0aG9uL3B5dGhv bi5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJ2YWx1ZS5oIgotICNpbmNsdWRlICJs YW5ndWFnZS5oIgotICNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImV2ZW50LWxv b3AuaCIKLSAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAKLUBAIC00MiwxMCArNDMsMTcgQEAgc3Rh dGljIGludCBnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSAxOwotICNpbmNsdWRlICJjbGkvY2xp LWRlY29kZS5oIgotICNpbmNsdWRlICJjaGFyc2V0LmgiCi0gI2luY2x1ZGUgInRvcC5oIgotKyNp bmNsdWRlICJzb2xpYi5oIgotICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSsjaW5jbHVk ZSAibGluZXNwZWMuaCIKLSsjaW5jbHVkZSAic3ltdGFiLmgiCi0rI2luY2x1ZGUgInNvdXJjZS5o IgotICNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0rI2luY2x1 ZGUgImdkYnRocmVhZC5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZ2RidGhy ZWFkLmgiCi0rI2luY2x1ZGUgImV2ZW50LXRvcC5oIgotIAotIHN0YXRpYyBQeU1ldGhvZERlZiBH ZGJNZXRob2RzW107Ci0gCi1AQCAtMzc0LDYgKzM4MiwxMDUgQEAgZXhlY3V0ZV9nZGJfY29tbWFu ZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCi0gICBQeV9S RVRVUk5fTk9ORTsKLSB9Ci0gCi0rLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLnNvbGliX2FkZHJl c3MgKExvbmcpIC0+IFN0cmluZy4KLSsgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQg bGlicmFyeSBob2xkaW5nIGEgZ2l2ZW4gYWRkcmVzcywgb3IgTm9uZS4gICovCi0rCi0rc3RhdGlj IFB5T2JqZWN0ICoKLStnZGJweV9zb2xpYl9hZGRyZXNzIChQeU9iamVjdCAqc2VsZiwgUHlPYmpl Y3QgKmFyZ3MpCi0rewotKyAgdW5zaWduZWQgbG9uZyBsb25nIHBjOwotKyAgY2hhciAqc29uYW1l OwotKyAgUHlPYmplY3QgKnN0cl9vYmo7Ci0rCi0rICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFy Z3MsICJLIiwgJnBjKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBzb25hbWUgPSBzb2xpYl9u YW1lX2Zyb21fYWRkcmVzcyAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBwYyk7Ci0rICBpZiAoc29u YW1lKQotKyAgICBzdHJfb2JqID0gUHlTdHJpbmdfRGVjb2RlIChzb25hbWUsIHN0cmxlbiAoc29u YW1lKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHN0 cl9vYmogPSBQeV9Ob25lOwotKyAgICAgIFB5X0lOQ1JFRiAoUHlfTm9uZSk7Ci0rICAgIH0KLSsK LSsgIHJldHVybiBzdHJfb2JqOwotK30KLSsKLSsvKiBBIFB5dGhvbiBmdW5jdGlvbiB3aGljaCBp cyBhIHdyYXBwZXIgZm9yIGRlY29kZV9saW5lXzEuICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAq Ci0rZ2RicHlfZGVjb2RlX2xpbmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7 Ci0rICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FscyA9IHsgTlVMTCwgMCB9OyAvKiBJbml0 aWFsaXplIHRvIGFwcGVhc2UgZ2NjLiAgKi8KLSsgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2Fs OwotKyAgY2hhciAqYXJnID0gTlVMTDsKLSsgIGludCBmcmVlX3NhbHMgPSAwLCBpOwotKyAgUHlP YmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBl eGNlcHQ7Ci0rCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAifHMiLCAmYXJnKSkK LSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tf QUxMKQotKyAgICB7Ci0rICAgICAgaWYgKGFyZykKLSsJewotKwkgIGNoYXIgKmNvcHk7Ci0rCi0r CSAgYXJnID0gc3RyZHVwIChhcmcpOwotKwkgIGNvcHkgPSBhcmc7Ci0rCi0rCSAgc2FscyA9IGRl Y29kZV9saW5lXzEgKCZjb3B5LCAwLCAwLCAwLCAwLCAwKTsKLSsJICBmcmVlX3NhbHMgPSAxOwot Kwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgc2V0X2RlZmF1bHRfc291cmNlX3N5bXRhYl9hbmRf bGluZSAoKTsKLSsJICBzYWwgPSBnZXRfY3VycmVudF9zb3VyY2Vfc3ltdGFiX2FuZF9saW5lICgp OwotKwkgIHNhbHMuc2FscyA9ICZzYWw7Ci0rCSAgc2Fscy5uZWx0cyA9IDE7Ci0rCX0KLSsgICAg fQotKyAgaWYgKGFyZykKLSsgICAgeGZyZWUgKGFyZyk7Ci0rCi0rICBpZiAoZXhjZXB0LnJlYXNv biA8IDApCi0rICAgIHsKLSsgICAgICBpZiAoZnJlZV9zYWxzKQotKwl4ZnJlZSAoc2Fscy5zYWxz KTsKLSsgICAgICAvKiBXZSBrbm93IHRoaXMgd2lsbCBhbHdheXMgdGhyb3cuICAqLwotKyAgICAg IEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOwotKyAgICB9Ci0rCi0rICBpZiAoc2Fs cy5uZWx0cykKLSsgICAgewotKyAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3IChzYWxzLm5lbHRz KTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQotKwl7Ci0rCSAgUHlP YmplY3QgKm9iajsKLSsJICBjaGFyICpzdHI7Ci0rCi0rCSAgb2JqID0gc3ltdGFiX2FuZF9saW5l X3RvX3NhbF9vYmplY3QgKHNhbHMuc2Fsc1tpXSk7Ci0rCSAgaWYgKCEgb2JqKQotKwkgICAgewot KwkgICAgICBQeV9ERUNSRUYgKHJlc3VsdCk7Ci0rCSAgICAgIHJlc3VsdCA9IE5VTEw7Ci0rCSAg ICAgIGJyZWFrOwotKwkgICAgfQotKwotKwkgIFB5VHVwbGVfU2V0SXRlbSAocmVzdWx0LCBpLCBv YmopOwotKwl9Ci0rICAgIH0KLSsKLSsgIGlmIChmcmVlX3NhbHMpCi0rICAgIHhmcmVlIChzYWxz LnNhbHMpOwotKwotKyAgaWYgKHJlc3VsdCkKLSsgICAgcmV0dXJuIHJlc3VsdDsKLSsgIFB5X1JF VFVSTl9OT05FOwotK30KLSsKLSAvKiBQYXJzZSBhIHN0cmluZyBhbmQgZXZhbHVhdGUgaXQgYXMg YW4gZXhwcmVzc2lvbi4gICovCi0gc3RhdGljIFB5T2JqZWN0ICoKLSBnZGJweV9wYXJzZV9hbmRf ZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotQEAgLTQxNCw2ICs1MjEsMTE0 IEBAIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUp Ci0gCi0gDAotIAotKy8qIFBvc3RpbmcgYW5kIGhhbmRsaW5nIGV2ZW50cy4gICovCi0rCi0rLyog QSBzaW5nbGUgZXZlbnQuICAqLwotK3N0cnVjdCBnZGJweV9ldmVudAotK3sKLSsgIC8qIFRoZSBQ eXRob24gZXZlbnQuICBUaGlzIGlzIGp1c3QgYSBjYWxsYWJsZSBvYmplY3QuICAqLwotKyAgUHlP YmplY3QgKmV2ZW50OwotKyAgLyogVGhlIG5leHQgZXZlbnQuICAqLwotKyAgc3RydWN0IGdkYnB5 X2V2ZW50ICpuZXh0OwotK307Ci0rCi0rLyogQWxsIHBlbmRpbmcgZXZlbnRzLiAgKi8KLStzdGF0 aWMgc3RydWN0IGdkYnB5X2V2ZW50ICpnZGJweV9ldmVudF9saXN0OwotKy8qIFRoZSBmaW5hbCBs aW5rIG9mIHRoZSBldmVudCBsaXN0LiAgKi8KLStzdGF0aWMgc3RydWN0IGdkYnB5X2V2ZW50ICoq Z2RicHlfZXZlbnRfbGlzdF9lbmQ7Ci0rCi0rLyogV2UgdXNlIGEgZmlsZSBoYW5kbGVyLCBhbmQg bm90IGFuIGFzeW5jIGhhbmRsZXIsIHNvIHRoYXQgd2UgY2FuCi0rICAgd2FrZSB1cCB0aGUgbWFp biB0aHJlYWQgZXZlbiB3aGVuIGl0IGlzIGJsb2NrZWQgaW4gcG9sbCgpLiAgKi8KLStzdGF0aWMg aW50IGdkYnB5X2V2ZW50X2Zkc1syXTsKLSsKLSsvKiBUaGUgZmlsZSBoYW5kbGVyIGNhbGxiYWNr LiAgVGhpcyByZWFkcyBmcm9tIHRoZSBpbnRlcm5hbCBwaXBlLCBhbmQKLSsgICB0aGVuIHByb2Nl c3NlcyB0aGUgUHl0aG9uIGV2ZW50IHF1ZXVlLiAgVGhpcyB3aWxsIGFsd2F5cyBiZSBydW4gaW4K LSsgICB0aGUgbWFpbiBnZGIgdGhyZWFkLiAgKi8KLStzdGF0aWMgdm9pZAotK2dkYnB5X3J1bl9l dmVudHMgKGludCBlcnIsIGdkYl9jbGllbnRfZGF0YSBpZ25vcmUpCi0rewotKyAgc3RydWN0IGNs ZWFudXAgKmNsZWFudXA7Ci0rICBjaGFyIGJ1ZmZlclsxMDBdOwotKyAgaW50IHI7Ci0rCi0rICBj bGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRf bGFuZ3VhZ2UpOwotKwotKyAgLyogSnVzdCByZWFkIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBvbiB0 aGUgZmQuICBJdCBpcyByZWxhdGl2ZWx5Ci0rICAgICBoYXJtbGVzcyBpZiB0aGVyZSBhcmUgYW55 IGJ5dGVzIGxlZnQgb3Zlci4gICovCi0rICByID0gcmVhZCAoZ2RicHlfZXZlbnRfZmRzWzBdLCBi dWZmZXIsIHNpemVvZiAoYnVmZmVyKSk7Ci0rCi0rICB3aGlsZSAoZ2RicHlfZXZlbnRfbGlzdCkK LSsgICAgewotKyAgICAgIC8qIERpc3BhdGNoaW5nIHRoZSBldmVudCBtaWdodCBwdXNoIGEgbmV3 IGVsZW1lbnQgb250byB0aGUgZXZlbnQKLSsJIGxvb3AsIHNvIHdlIHVwZGF0ZSBoZXJlICJhdG9t aWNhbGx5IGVub3VnaCIuICAqLwotKyAgICAgIHN0cnVjdCBnZGJweV9ldmVudCAqaXRlbSA9IGdk YnB5X2V2ZW50X2xpc3Q7Ci0rICAgICAgZ2RicHlfZXZlbnRfbGlzdCA9IGdkYnB5X2V2ZW50X2xp c3QtPm5leHQ7Ci0rICAgICAgaWYgKGdkYnB5X2V2ZW50X2xpc3QgPT0gTlVMTCkKLSsJZ2RicHlf ZXZlbnRfbGlzdF9lbmQgPSAmZ2RicHlfZXZlbnRfbGlzdDsKLSsKLSsgICAgICAvKiBJZ25vcmUg ZXJyb3JzLiAgKi8KLSsgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0IChpdGVtLT5ldmVudCwgTlVM TCk7Ci0rCi0rICAgICAgUHlfREVDUkVGIChpdGVtLT5ldmVudCk7Ci0rICAgICAgeGZyZWUgKGl0 ZW0pOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotKy8qIFN1 Ym1pdCBhbiBldmVudCB0byB0aGUgZ2RiIHRocmVhZC4gICovCi0rc3RhdGljIFB5T2JqZWN0ICoK LStnZGJweV9wb3N0X2V2ZW50IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewot KyAgc3RydWN0IGdkYnB5X2V2ZW50ICpldmVudDsKLSsgIFB5T2JqZWN0ICpmdW5jOwotKyAgaW50 IHdha2V1cDsKLSsKLSsgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgIk8iLCAmZnVuYykp Ci0rICAgIHJldHVybiBOVUxMOwotKwotKyAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrIChmdW5jKSkK LSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLCAiUG9z dGVkIGV2ZW50IGlzIG5vdCBjYWxsYWJsZSIpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9 Ci0rCi0rICBQeV9JTkNSRUYgKGZ1bmMpOwotKwotKyAgLyogRnJvbSBoZXJlIHVudGlsIHRoZSBl bmQgb2YgdGhlIGZ1bmN0aW9uLCB3ZSBoYXZlIHRoZSBHSUwsIHNvIHdlCi0rICAgICBjYW4gb3Bl cmF0ZSBvbiBvdXIgZ2xvYmFsIGRhdGEgc3RydWN0dXJlcyB3aXRob3V0IHdvcnJ5aW5nLiAgKi8K LSsgIHdha2V1cCA9IGdkYnB5X2V2ZW50X2xpc3QgPT0gTlVMTDsKLSsKLSsgIGV2ZW50ID0gWE5F VyAoc3RydWN0IGdkYnB5X2V2ZW50KTsKLSsgIGV2ZW50LT5ldmVudCA9IGZ1bmM7Ci0rICBldmVu dC0+bmV4dCA9IE5VTEw7Ci0rICAqZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSBldmVudDsKLSsgIGdk YnB5X2V2ZW50X2xpc3RfZW5kID0gJmV2ZW50LT5uZXh0OwotKwotKyAgLyogV2FrZSB1cCBnZGIg d2hlbiBuZWVkZWQuICAqLwotKyAgaWYgKHdha2V1cCkKLSsgICAgewotKyAgICAgIGNoYXIgYyA9 ICdxJzsJCS8qIEFueXRoaW5nLiAqLwotKyAgICAgIGlmICh3cml0ZSAoZ2RicHlfZXZlbnRfZmRz WzFdLCAmYywgMSkgIT0gMSkKLSsgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8gKFB5 RXhjX0lPRXJyb3IpOwotKyAgICB9Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rLyog SW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGV2ZW50IGhhbmRsZXIuICAqLwotK3N0YXRpYyB2b2lkCi0r Z2RicHlfaW5pdGlhbGl6ZV9ldmVudHMgKHZvaWQpCi0rewotKyAgaWYgKCFwaXBlIChnZGJweV9l dmVudF9mZHMpKQotKyAgICB7Ci0rICAgICAgZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSAmZ2RicHlf ZXZlbnRfbGlzdDsKLSsgICAgICBhZGRfZmlsZV9oYW5kbGVyIChnZGJweV9ldmVudF9mZHNbMF0s IGdkYnB5X3J1bl9ldmVudHMsIE5VTEwpOwotKyAgICB9Ci0rfQotKwotKwwKLSsKLSAvKiBQcmlu dGluZy4gICovCi0gCi0gLyogQSBweXRob24gZnVuY3Rpb24gdG8gd3JpdGUgYSBzaW5nbGUgc3Ry aW5nIHVzaW5nIGdkYidzIGZpbHRlcmVkCi1AQCAtNDU5LDYgKzY3NCw1MyBAQCBnZGJweV9wcmlu dF9zdGFjayAodm9pZCkKK0BAIC0xMjIwLDYgKzEyMjEsMTcgQEAgZ2RicHlfaXNfdmFsdWVfb2Jq ZWN0IChQeU9iamVjdCAqb2JqKQorICAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAob2JqLCAm dmFsdWVfb2JqZWN0X3R5cGUpOworIH0KICAKLSAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3Nw YWNlLgotICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLwotKy8qIFRydWUgaWYgJ2dkYiAtUCcg d2FzIHVzZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGludCBydW5uaW5nX3B5dGhv bl9zY3JpcHQ7Ci0rCi0rLyogVHJ1ZSBpZiB3ZSBhcmUgY3VycmVudGx5IGluIGEgY2FsbCB0byAn Z2RiLmNsaScsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGludCBpbl9jbGk7Ci0rCi0r LyogRW50ZXIgdGhlIGNvbW1hbmQgbG9vcC4gICovCisrLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBm b3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCiAr Ci0rc3RhdGljIFB5T2JqZWN0ICoKLStnZGJweV9jbGkgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9i amVjdCAqdW51c2VkMikKKytzdGF0aWMgdm9pZAorK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZv aWQpCiArewotKyAgaWYgKCEgcnVubmluZ19weXRob25fc2NyaXB0IHx8IGluX2NsaSkKLSsgICAg cmV0dXJuIFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGludm9rZSBD TEkgcmVjdXJzaXZlbHkiKTsKLSsKLSsgIGluX2NsaSA9IDE7Ci0rICBjbGlfY29tbWFuZF9sb29w ICgpOwotKyAgaW5fY2xpID0gMDsKKysgIHZhbHVlX29iamVjdCAqaXRlcjsKICsKLSsgIFB5X1JF VFVSTl9OT05FOworKyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5dGhvbjsgaXRlcjsgaXRlciA9 IGl0ZXItPm5leHQpCisrICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChpdGVyLT52YWx1 ZSkpOwogK30KICsKLSsvKiBTZXQgdXAgdGhlIFB5dGhvbiBhcmd1bWVudCB2ZWN0b3IgYW5kIGV2 YWx1YXRlIGEgc2NyaXB0LiAgVGhpcyBpcwotKyAgIHVzZWQgdG8gaW1wbGVtZW50ICdnZGIgLVAn LiAgKi8KLSsKLSt2b2lkCi0rcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJn dikKLSt7Ci0rICBGSUxFICppbnB1dDsKLSsKLSsgIC8qIFdlIG5ldmVyIGZyZWUgdGhpcywgc2lu Y2Ugd2UgcGxhbiB0byBleGl0IGF0IHRoZSBlbmQuICAqLwotKyAgZW5zdXJlX3B5dGhvbl9lbnYg KGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworIHZvaWQKKyBnZGJweV9p bml0aWFsaXplX3ZhbHVlcyAodm9pZCkKKyB7CitAQCAtMTIzMCw2ICsxMjQyLDggQEAgZ2RicHlf aW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCisgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1 bGUsICJWYWx1ZSIsIChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUpOworIAorICAgdmFs dWVzX2luX3B5dGhvbiA9IE5VTEw7CiArCi0rICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOwot KyAgUHlTeXNfU2V0QXJndiAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsKLSsgIGlucHV0ID0gZm9wZW4g KGFyZ3ZbMF0sICJyIik7Ci0rICBpZiAoISBpbnB1dCkKLSsgICAgewotKyAgICAgIGZwcmludGYg KHN0ZGVyciwgImNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIiwgYXJndlswXSwgc3RyZXJyb3IgKGVy cm5vKSk7Ci0rICAgICAgZXhpdCAoMSk7Ci0rICAgIH0KLSsgIFB5UnVuX1NpbXBsZUZpbGUgKGlu cHV0LCBhcmd2WzBdKTsKLSsgIGZjbG9zZSAoaW5wdXQpOwotKyAgZXhpdCAoMCk7Ci0rfQotKwot KwwKLSsKLSAKLSBzdGF0aWMgUHlPYmplY3QgKgotIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFj ZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotQEAgLTcyMCw2ICs5ODIs NyBAQCBFbmFibGVzIG9yIGRpc2FibGVzIHByaW50aW5nIG9mIFB5dGhvbiBzdGFjayB0cmFjZXMu IiksCi0gICBnZGJweV9pbml0aWFsaXplX2xhenlfc3RyaW5nICgpOwotICAgZ2RicHlfaW5pdGlh bGl6ZV90aHJlYWQgKCk7Ci0gICBnZGJweV9pbml0aWFsaXplX2luZmVyaW9yICgpOwotKyAgZ2Ri cHlfaW5pdGlhbGl6ZV9ldmVudHMgKCk7Ci0gCi0gICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJpbXBv cnQgZ2RiIik7Ci0gICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJnZGIucHJldHR5X3ByaW50ZXJzID0g W10iKTsKLUBAIC03ODcsNiArMTA1MCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2Rz W10gPQotICAgICAiR2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9LAotICAgeyAiZXhlY3V0ZSIs IChQeUNGdW5jdGlvbikgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9L RVlXT1JEUywKLSAgICAgIkV4ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKLSsgIHsgImNsaSIsIGdk YnB5X2NsaSwgTUVUSF9OT0FSR1MsCi0rICAgICJFbnRlciB0aGUgZ2RiIENMSSIgfSwKLSAgIHsg InBhcmFtZXRlciIsIGdkYnB5X3BhcmFtZXRlciwgTUVUSF9WQVJBUkdTLAotICAgICAiUmV0dXJu IGEgZ2RiIHBhcmFtZXRlcidzIHZhbHVlIiB9LAotIAotQEAgLTgyNSwxMSArMTA5MCwyMSBAQCBh IGJvb2xlYW4gaW5kaWNhdGluZyBpZiBuYW1lIGlzIGEgZmllbGQgb2YgdGhlIGN1cnJlbnQgaW1w bGllZCBhcmd1bWVudFxuXAotIGB0aGlzJyAod2hlbiB0aGUgY3VycmVudCBsYW5ndWFnZSBpcyBv YmplY3Qtb3JpZW50ZWQpLiIgfSwKLSAgIHsgImJsb2NrX2Zvcl9wYyIsIGdkYnB5X2Jsb2NrX2Zv cl9wYywgTUVUSF9WQVJBUkdTLAotICAgICAiUmV0dXJuIHRoZSBibG9jayBjb250YWluaW5nIHRo ZSBnaXZlbiBwYyB2YWx1ZSwgb3IgTm9uZS4iIH0sCi0rICB7ICJzb2xpYl9hZGRyZXNzIiwgZ2Ri cHlfc29saWJfYWRkcmVzcywgTUVUSF9WQVJBUkdTLAotKyAgICAic29saWJfYWRkcmVzcyAoTG9u ZykgLT4gU3RyaW5nLlxuXAotK1JldHVybiB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkg aG9sZGluZyBhIGdpdmVuIGFkZHJlc3MsIG9yIE5vbmUuIiB9LAotKyAgeyAiZGVjb2RlX2xpbmUi LCBnZGJweV9kZWNvZGVfbGluZSwgTUVUSF9WQVJBUkdTLAotKyAgICAiRGVjb2RlIGEgc3RyaW5n IGFyZ3VtZW50IHRoZSB3YXkgdGhhdCAnYnJlYWsnIG9yICdlZGl0JyBkb2VzLlxuXAotK1JldHVy biBhIHR1cGxlIGhvbGRpbmcgdGhlIGZpbGUgbmFtZSAob3IgTm9uZSkgYW5kIGxpbmUgbnVtYmVy IChvciBOb25lKS5cblwKLStOb3RlOiBtYXkgbGF0ZXIgY2hhbmdlIHRvIHJldHVybiBhbiBvYmpl Y3QuIiB9LAotICAgeyAicGFyc2VfYW5kX2V2YWwiLCBnZGJweV9wYXJzZV9hbmRfZXZhbCwgTUVU SF9WQVJBUkdTLAotICAgICAicGFyc2VfYW5kX2V2YWwgKFN0cmluZykgLT4gVmFsdWUuXG5cCi0g UGFyc2UgU3RyaW5nIGFzIGFuIGV4cHJlc3Npb24sIGV2YWx1YXRlIGl0LCBhbmQgcmV0dXJuIHRo ZSByZXN1bHQgYXMgYSBWYWx1ZS4iCi0gICB9LAotIAotKyAgeyAicG9zdF9ldmVudCIsIGdkYnB5 X3Bvc3RfZXZlbnQsIE1FVEhfVkFSQVJHUywKLSsgICAgIlBvc3QgYW4gZXZlbnQgaW50byBnZGIn cyBldmVudCBsb29wLiIgfSwKLSsKLSAgIHsgInRhcmdldF9jaGFyc2V0IiwgZ2RicHlfdGFyZ2V0 X2NoYXJzZXQsIE1FVEhfTk9BUkdTLAotICAgICAidGFyZ2V0X2NoYXJzZXQgKCkgLT4gc3RyaW5n LlxuXAotIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0YXJnZXQgY2hhcnNldC4iIH0s Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgK LWluZGV4IGFmZmQ0YTQuLjU0MDc4NzggMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5o Ci0rKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1AQCAtMjgsNiArMjgsOCBAQCB2b2lkIGV2YWxf cHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwotIAot IHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmls ZSk7Ci0gCi0rdm9pZCBydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK LSsKLSBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09S RV9BRERSIGFkZHJlc3MsCi0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJl Y3Vyc2UsCisrICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChweXRob25fdHlwZXNfbWFya191 c2VkKTsKKyB9CisgCisgDAogZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29s aWItc3ZyNC5jCi1pbmRleCAxZjEzNWQ0Li40ODk4MzhkIDEwMDY0NAoraW5kZXggZGIyMTM2MC4u MTg5N2QxMCAxMDA2NDQKIC0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKICsrKyBiL2dkYi9zb2xpYi1z dnI0LmMKLUBAIC0xMjc4LDcgKzEyNzgsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUg KENPUkVfQUREUiBwYykKK0BAIC0xMjc2LDcgKzEyNzYsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNv bHZlX2NvZGUgKENPUkVfQUREUiBwYykKICAJICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9z ZWN0X2hpZ2gpCiAgCSAgfHwgKHBjID49IGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cKICAJICAg ICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCkKQEAgLTEwNzA3LDg5ICs1MTkx LDExIEBAIGluZGV4IDFmMTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAgfQogIAogIC8qIEdpdmVuIGFu IGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQsIGNvbXB1dGUgdGhlIGVudHJ5LXBvaW50Ci1k aWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1maWxlLmMKLWluZGV4IDQyZjdhZTMu LjM3MWRiMGQgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5j Ci1AQCAtMTA1OSw2ICsxMDU5LDkgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zm c2V0cyAoYmZkICphYmZkLAotICAgY29uc3QgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUg KGFiZmQpOwotICAgY29uc3QgaW50IGZyb21fdHR5ID0gYWRkX2ZsYWdzICYgU1lNRklMRV9WRVJC T1NFOwotIAotKyAgaWYgKHJlYWRub3dfc3ltYm9sX2ZpbGVzKQotKyAgICBmbGFncyB8PSBPQkpG X1JFQUROT1c7Ci0rCi0gICBteV9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKGFi ZmQpOwotIAotICAgLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIGJ1cnAgaWYgd2UnZCBiZQotQEAg LTEwOTUsNyArMTA5OCw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMg KGJmZCAqYWJmZCwKLSAgICAgIHRoZSBnZGIgc3RhcnR1cCBjb21tYW5kIGxpbmUgb3Igb24gYSBw ZXIgc3ltYm9sIGZpbGUgYmFzaXMuICBFeHBhbmQKLSAgICAgIGFsbCBwYXJ0aWFsIHN5bWJvbCB0 YWJsZXMgZm9yIHRoaXMgb2JqZmlsZSBpZiBzby4gKi8KLSAKLS0gIGlmICgoZmxhZ3MgJiBPQkpG X1JFQUROT1cpIHx8IHJlYWRub3dfc3ltYm9sX2ZpbGVzKQotKyAgaWYgKChmbGFncyAmIE9CSkZf UkVBRE5PVykpCi0gICAgIHsKLSAgICAgICBpZiAoZnJvbV90dHkgfHwgaW5mb192ZXJib3NlKQot IAl7Ci1AQCAtMTUzMyw3ICsxNTM2LDcgQEAgc3ltYm9sX2ZpbGVfY29tbWFuZCAoY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQotIHZvaWQKLSBzZXRfaW5pdGlhbF9sYW5ndWFnZSAodm9pZCkKLSB7 Ci0tICBjaGFyICpmaWxlbmFtZTsKLSsgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwotICAgZW51bSBs YW5ndWFnZSBsYW5nID0gbGFuZ3VhZ2VfdW5rbm93bjsKLSAKLSAgIGZpbGVuYW1lID0gZmluZF9t YWluX2ZpbGVuYW1lICgpOwotQEAgLTI2NjAsNyArMjY2Myw3IEBAIGluaXRfZmlsZW5hbWVfbGFu Z3VhZ2VfdGFibGUgKHZvaWQpCi0gfQotIAotIGVudW0gbGFuZ3VhZ2UKLS1kZWR1Y2VfbGFuZ3Vh Z2VfZnJvbV9maWxlbmFtZSAoY2hhciAqZmlsZW5hbWUpCi0rZGVkdWNlX2xhbmd1YWdlX2Zyb21f ZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIGludCBpOwotICAgY2hhciAq Y3A7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuaCBiL2dkYi9zeW1maWxlLmgKLWluZGV4IGQ1 M2M0NjUuLjU4MTUzNTQgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltZmlsZS5oCi0rKysgYi9nZGIvc3lt ZmlsZS5oCi1AQCAtMTcxLDYgKzE3MSwxNSBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9u cwotIAkJCQkgICBpbnQga2luZCwgY29uc3QgY2hhciAqbmFtZSwKLSAJCQkJICAgZG9tYWluX2Vu dW0gZG9tYWluKTsKLSAKLSsgIC8qIFRoaXMgaXMgY2FsbGVkIHRvIGV4cGFuZCBzeW1ib2wgdGFi bGVzIGJlZm9yZSBsb29raW5nIHVwIGEKLSsgICAgIHN5bWJvbC4gIEEgYmFja2VuZCBjYW4gY2hv b3NlIHRvIGltcGxlbWVudCB0aGlzIGFuZCB0aGVuIGhhdmUgaXRzCi0rICAgICBgbG9va3VwX3N5 bWJvbCcgaG9vayBhbHdheXMgcmV0dXJuIE5VTEwsIG9yIHRoZSByZXZlcnNlLiAgKEl0Ci0rICAg ICBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gaW1wbGVtZW50IGJvdGguKSAgVGhlIGFyZ3VtZW50cyBh cmUgYXMgZm9yCi0rICAgICBgbG9va3VwX3N5bWJvbCcuICAqLwotKyAgdm9pZCAoKnByZV9leHBh bmRfc3ltdGFic19tYXRjaGluZykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgICAg ICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJCSAgICAgICBkb21haW5fZW51bSBk b21haW4pOwotKwotICAgLyogUHJpbnQgc3RhdGlzdGljcyBhYm91dCBhbnkgaW5kaWNlcyBsb2Fk ZWQgZm9yIE9CSkZJTEUuICBUaGUKLSAgICAgIHN0YXRpc3RpY3Mgc2hvdWxkIGJlIHByaW50ZWQg dG8gZ2RiX3N0ZG91dC4gIFRoaXMgaXMgdXNlZCBmb3IKLSAgICAgICJtYWludCBwcmludCBzdGF0 aXN0aWNzIi4gICovCi1AQCAtMjAxLDcgKzIxMCw3IEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVu Y3Rpb25zCi0gCi0gICAvKiBSZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgZmlsZSBob2xkaW5n IHRoZSBzeW1ib2wgaW4gT0JKRklMRQotICAgICAgbmFtZWQgTkFNRS4gIElmIG5vIHN1Y2ggc3lt Ym9sIGV4aXN0cyBpbiBPQkpGSUxFLCByZXR1cm4gTlVMTC4gICovCi0tICBjaGFyICooKmZpbmRf c3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7 Ci0rICBjb25zdCBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7Ci0gCi0gICAvKiBUaGlzIG1ldGhvZCBpcyBzcGVjaWZp YyB0byBBZGEuICBJdCB3YWxrcyB0aGUgcGFydGlhbCBzeW1ib2wKLSAgICAgIHRhYmxlcyBvZiBP QkpGSUxFIGxvb2tpbmcgZm9yIGEgbmFtZSBtYXRjaC4gIFdJTERfTUFUQ0ggYW5kCi1AQCAtNTY2 LDYgKzU3NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5jcmVtZW50X3JlYWRpbmdfc3lt dGFiICh2b2lkKTsKLSAKLSBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZp bGUgKik7Ci0gCi0rZXh0ZXJuIGludCBkd2FyZjJfaW5pdGlhbGl6ZV9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqKTsKLSBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKHN0cnVjdCBv YmpmaWxlICopOwotIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChzdHJ1Y3Qg b2JqZmlsZSAqKTsKLSAKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1pc2Mu YwotaW5kZXggNjJlNmI5Ny4uMDBkYzYxMyAxMDA2NDQKK2luZGV4IGVmNjMyMTYuLjFjYzkwODIg MTAwNjQ0CiAtLS0gYS9nZGIvc3ltbWlzYy5jCiArKysgYi9nZGIvc3ltbWlzYy5jCi1AQCAtMjYy LDYgKzI2Miw5IEBAIGR1bXBfbXN5bWJvbHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1 Y3QgdWlfZmlsZSAqb3V0ZmlsZSkKK0BAIC0yNjQsNiArMjY0LDkgQEAgZHVtcF9tc3ltYm9scyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCB1aV9maWxlICpvdXRmaWxlKQogIAljYXNl IG1zdF90ZXh0OgogIAkgIG1zX3R5cGUgPSAnVCc7CiAgCSAgYnJlYWs7CkBAIC0xMDgwMCwxMTAg KzUyMDYsMjMgQEAgaW5kZXggNjJlNmI5Ny4uMDBkYzYxMyAxMDA2NDQKICAJICBtc190eXBlID0g J1MnOwogIAkgIGJyZWFrOwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIu YwotaW5kZXggMmM0YzllNC4uMjhmMDQ1MCAxMDA2NDQKK2luZGV4IGE2MDIzYjkuLjlkNTc3YjAg MTAwNjQ0CiAtLS0gYS9nZGIvc3ltdGFiLmMKICsrKyBiL2dkYi9zeW10YWIuYwotQEAgLTEyOTUs MTYgKzEyOTUsMjUgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4 LCBjb25zdCBjaGFyICpuYW1lLAotICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jazsKLSAgIHN0 cnVjdCBzeW10YWIgKnM7Ci0gCi0tICBBTExfUFJJTUFSWV9TWU1UQUJTIChvYmpmaWxlLCBzKQot KyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgewotLSAgICBidiA9IEJMT0NLVkVDVE9SIChz KTsKLS0gICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLS0g ICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0tICAg IGlmIChzeW0pCi0tICAgICAgewotLQlibG9ja19mb3VuZCA9IGJsb2NrOwotLQlyZXR1cm4gZml4 dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7Ci0tICAgICAgfQotKyAgICBpZiAob2Jq ZmlsZS0+c2YpCi0rICAgICAgb2JqZmlsZS0+c2YtPnFmLT5wcmVfZXhwYW5kX3N5bXRhYnNfbWF0 Y2hpbmcgKG9iamZpbGUsCi0rCQkJCQkJICAgIGJsb2NrX2luZGV4LAotKwkJCQkJCSAgICBuYW1l LCBkb21haW4pOwotKwotKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQotKyAg ICAgIGlmIChzLT5wcmltYXJ5KQotKwl7Ci0rCSAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0rCSAg YmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLSsJICBzeW0gPSBs b29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSsJICBpZiAoc3ltKQot KwkgICAgewotKwkgICAgICBibG9ja19mb3VuZCA9IGJsb2NrOwotKwkgICAgICByZXR1cm4gZml4 dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7Ci0rCSAgICB9Ci0rCX0KLSAgIH0KLSAK LSAgIHJldHVybiBOVUxMOwotQEAgLTE1NDcsMTUgKzE1NTYsMjQgQEAgYmFzaWNfbG9va3VwX3Ry YW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgICBvZiB0aGUgZGVzaXJlZCBu YW1lIGFzIGEgZ2xvYmFsLCB0aGVuIGRvIHBzeW10YWItdG8tc3ltdGFiCi0gICAgICBjb252ZXJz aW9uIG9uIHRoZSBmbHkgYW5kIHJldHVybiB0aGUgZm91bmQgc3ltYm9sLiAgKi8KLSAKLS0gIEFM TF9QUklNQVJZX1NZTVRBQlMgKG9iamZpbGUsIHMpCi0rICBBTExfT0JKRklMRVMgKG9iamZpbGUp Ci0gICB7Ci0tICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotLSAgICBibG9jayA9IEJMT0NLVkVD VE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOwotLSAgICBpZiAoc3ltICYmICFUWVBF X0lTX09QQVFVRSAoU1lNQk9MX1RZUEUgKHN5bSkpKQotLSAgICAgIHsKLS0JcmV0dXJuIFNZTUJP TF9UWVBFIChzeW0pOwotLSAgICAgIH0KLSsgICAgaWYgKG9iamZpbGUtPnNmKQotKyAgICAgIG9i amZpbGUtPnNmLT5xZi0+cHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLAotKwkJ CQkJCSAgICBHTE9CQUxfQkxPQ0ssCi0rCQkJCQkJICAgIG5hbWUsIFNUUlVDVF9ET01BSU4pOwot KwotKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQotKyAgICAgIGlmIChzLT5w cmltYXJ5KQotKwl7Ci0rCSAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0rCSAgYmxvY2sgPSBCTE9D S1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7Ci0rCSAgc3ltID0gbG9va3VwX2Jsb2Nr X3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOwotKwkgIGlmIChzeW0gJiYgIVRZ UEVfSVNfT1BBUVVFIChTWU1CT0xfVFlQRSAoc3ltKSkpCi0rCSAgICB7Ci0rCSAgICAgIHJldHVy biBTWU1CT0xfVFlQRSAoc3ltKTsKLSsJICAgIH0KLSsJfQotICAgfQotIAotICAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQotQEAgLTE1OTksMTQgKzE2MTcsMTYgQEAgYmFzaWNfbG9va3VwX3RyYW5z cGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCi0gLyogRklYTUU6ICBXaGF0IGFib3V0IGxh bmd1YWdlcyB3aXRob3V0IG1haW4oKSBvciBzcGVjaWFsbHkgbGlua2VkCi0gICAgZXhlY3V0YWJs ZXMgdGhhdCBoYXZlIG5vIG1haW4oKSA/ICovCi0gCi0tY2hhciAqCi0rY29uc3QgY2hhciAqCi0g ZmluZF9tYWluX2ZpbGVuYW1lICh2b2lkKQotIHsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl OwotLSAgY2hhciAqcmVzdWx0LCAqbmFtZSA9IG1haW5fbmFtZSAoKTsKLSsgIGNoYXIgKm5hbWUg PSBtYWluX25hbWUgKCk7Ci0gCi0gICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICB7Ci0rICAg IGNvbnN0IGNoYXIgKnJlc3VsdDsKLSsKLSAgICAgaWYgKCFvYmpmaWxlLT5zZikKLSAgICAgICBj b250aW51ZTsKLSAgICAgcmVzdWx0ID0gb2JqZmlsZS0+c2YtPnFmLT5maW5kX3N5bWJvbF9maWxl IChvYmpmaWxlLCBuYW1lKTsKLUBAIC0yOTE0LDcgKzI5MzQsNyBAQCBzZWFyY2hfc3ltYm9scyAo Y2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1td LAotICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczNbXQorQEAgLTI5ODgs NyArMjk4OCw3IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnVtIGtp bmQsIGludCBuZmlsZXMsIGNoYXIgKmZpbGVzW10sCisgICBzdGF0aWMgY29uc3QgZW51bSBtaW5p bWFsX3N5bWJvbF90eXBlIHR5cGVzM1tdCiAgICAgID0ge21zdF9maWxlX2RhdGEsIG1zdF9zb2xp Yl90cmFtcG9saW5lLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0gICBzdGF0aWMgZW51bSBtaW5p bWFsX3N5bWJvbF90eXBlIHR5cGVzNFtdCisgICBzdGF0aWMgY29uc3QgZW51bSBtaW5pbWFsX3N5 bWJvbF90eXBlIHR5cGVzNFtdCiAtICAgID0ge21zdF9maWxlX2JzcywgbXN0X3RleHQsIG1zdF9h YnMsIG1zdF91bmtub3dufTsKICsgICAgPSB7bXN0X2ZpbGVfYnNzLCBtc3RfdGV4dF9nbnVfaWZ1 bmMsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKICAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBv dXJ0eXBlOwogICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUyOwogICAgZW51bSBt aW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUzOwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuaCBi L2dkYi9zeW10YWIuaAotaW5kZXggYmVkYzEwYS4uZGMyODRlNCAxMDA2NDQKK2luZGV4IGE0MDMy ZjguLjk0NGRkMzMgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltdGFiLmgKICsrKyBiL2dkYi9zeW10YWIu aAotQEAgLTI3Nyw2ICsyNzcsOSBAQCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUKK0BAIC0yOTAs NiArMjkwLDkgQEAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlCiAgewogICAgbXN0X3Vua25vd24g PSAwLAkJLyogVW5rbm93biB0eXBlLCB0aGUgZGVmYXVsdCAqLwogICAgbXN0X3RleHQsCQkJLyog R2VuZXJhbGx5IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zICovCkBAIC0xMDkxMyw3ICs1MjMyLDcg QEAgaW5kZXggYmVkYzEwYS4uZGMyODRlNCAxMDA2NDQKICAgIG1zdF9kYXRhLAkJCS8qIEdlbmVy YWxseSBpbml0aWFsaXplZCBkYXRhICovCiAgICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxseSB1bmlu aXRpYWxpemVkIGRhdGEgKi8KICAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29sdXRlIChu b25yZWxvY2F0YWJsZSkgKi8KLUBAIC05MTcsMTEgKzkyMCwyNSBAQCBleHRlcm4gc3RydWN0IHN5 bWJvbCAqZmluZF9wY19zZWN0X2Z1bmN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlv biAqKTsKK0BAIC05NTUsMTEgKzk1OCwyNSBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqZmluZF9w Y19zZWN0X2Z1bmN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKICAKICAv KiBsb29rdXAgZnVuY3Rpb24gZnJvbSBhZGRyZXNzLCByZXR1cm4gbmFtZSwgc3RhcnQgYWRkciBh bmQgZW5kIGFkZHIgKi8KICAKQEAgLTEwOTQxLDcgKzUyNjAsNyBAQCBpbmRleCBiZWRjMTBhLi5k YzI4NGU0IDEwMDY0NAogIC8qIGxvb2t1cCBwYXJ0aWFsIHN5bWJvbCB0YWJsZSBieSBhZGRyZXNz IGFuZCBzZWN0aW9uICovCiAgCiAgZXh0ZXJuIHN0cnVjdCBzeW10YWIgKmZpbmRfcGNfc2VjdF9z eW10YWJfdmlhX3BhcnRpYWwgKENPUkVfQUREUiwKLUBAIC05OTYsNiArMTAxMyw4IEBAIGV4dGVy biBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19uYW1l CitAQCAtMTAzNCw2ICsxMDUxLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9v a3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX25hbWUKICAKICBleHRlcm4gc3RydWN0IG1pbmltYWxf c3ltYm9sICpsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUik7CiAgCkBAIC0x MDk1MCwyNiArNTI2OSw4IEBAIGluZGV4IGJlZGMxMGEuLmRjMjg0ZTQgMTAwNjQ0CiAgZXh0ZXJu IHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCiAgICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9hbmRf b2JqZmlsZSAoY29uc3QgY2hhciAqLAogIAkJCQkgICAgICAgc3RydWN0IG9iamZpbGUgKiopOwot QEAgLTExMzcsNyArMTE1Niw3IEBAIGV4dGVybiBjaGFyICoqbWFrZV9zb3VyY2VfZmlsZXNfY29t cGxldGlvbl9saXN0IChjaGFyICosIGNoYXIgKik7Ci0gCi0gaW50IG1hdGNoaW5nX29ial9zZWN0 aW9ucyAoc3RydWN0IG9ial9zZWN0aW9uICosIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKLSAKLS1l eHRlcm4gY2hhciAqZmluZF9tYWluX2ZpbGVuYW1lICh2b2lkKTsKLStleHRlcm4gY29uc3QgY2hh ciAqZmluZF9tYWluX2ZpbGVuYW1lICh2b2lkKTsKLSAKLSBleHRlcm4gc3RydWN0IHN5bXRhYiAq ZmluZF9saW5lX3N5bXRhYiAoc3RydWN0IHN5bXRhYiAqLCBpbnQsIGludCAqLCBpbnQgKik7Ci0g Ci1AQCAtMTE1MCw3ICsxMTY5LDcgQEAgZXh0ZXJuIHZvaWQgc2tpcF9wcm9sb2d1ZV9zYWwgKHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUgKik7Ci0gCi0gZXh0ZXJuIHZvaWQgY2xlYXJfc3ltdGFiX3Vz ZXJzICh2b2lkKTsKLSAKLS1leHRlcm4gZW51bSBsYW5ndWFnZSBkZWR1Y2VfbGFuZ3VhZ2VfZnJv bV9maWxlbmFtZSAoY2hhciAqKTsKLStleHRlcm4gZW51bSBsYW5ndWFnZSBkZWR1Y2VfbGFuZ3Vh Z2VfZnJvbV9maWxlbmFtZSAoY29uc3QgY2hhciAqKTsKLSAKLSAvKiBzeW10YWIuYyAqLwotIAog ZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuYyBiL2dkYi90YXJnZXQuYwotaW5kZXggNGNhYmNiZC4u MzRiM2I2MCAxMDA2NDQKK2luZGV4IDU5ODQxMjUuLjA2NTg5ZDQgMTAwNjQ0CiAtLS0gYS9nZGIv dGFyZ2V0LmMKICsrKyBiL2dkYi90YXJnZXQuYwogQEAgLTEyMyw2ICsxMjMsOCBAQCBzdGF0aWMg aW50IGRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50LApAQCAt MTA5OTksNyArNTMwMCw3IEBAIGluZGV4IDRjYWJjYmQuLjM0YjNiNjAgMTAwNjQ0CiAgICBkZV9m YXVsdCAodG9fc3RvcHBlZF9ieV93YXRjaHBvaW50LAogIAkgICAgKGludCAoKikgKHZvaWQpKQog IAkgICAgcmV0dXJuX3plcm8pOwotQEAgLTM0NDAsNiArMzQ0NiwxOSBAQCBkZWJ1Z190b19yZW1v dmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTM1 NzAsNiArMzU3NiwxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIsIGludCBsZW4sIGludCB0eXBlLAogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC0xMTAx OSw3ICs1MzIwLDcgQEAgaW5kZXggNGNhYmNiZC4uMzRiM2I2MCAxMDA2NDQKICBzdGF0aWMgdm9p ZAogIGRlYnVnX3RvX3Rlcm1pbmFsX2luaXQgKHZvaWQpCiAgewotQEAgLTM2ODcsNiArMzcwNiw3 IEBAIHNldHVwX3RhcmdldF9kZWJ1ZyAodm9pZCkKK0BAIC0zODE3LDYgKzM4MzYsNyBAQCBzZXR1 cF90YXJnZXRfZGVidWcgKHZvaWQpCiAgICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfaHdfYnJl YWtwb2ludCA9IGRlYnVnX3RvX3JlbW92ZV9od19icmVha3BvaW50OwogICAgY3VycmVudF90YXJn ZXQudG9faW5zZXJ0X3dhdGNocG9pbnQgPSBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludDsKICAg IGN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV93YXRjaHBvaW50ID0gZGVidWdfdG9fcmVtb3ZlX3dh dGNocG9pbnQ7CkBAIC0xMTAyOCwxMCArNTMyOSwxMCBAQCBpbmRleCA0Y2FiY2JkLi4zNGIzYjYw IDEwMDY0NAogICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBkZWJ1 Z190b19zdG9wcGVkX2RhdGFfYWRkcmVzczsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX3dhdGNocG9p bnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3Jh bmdlOwogZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQuaAotaW5kZXggM2M4 YzAxNy4uNjA4YTc0MiAxMDA2NDQKK2luZGV4IDcyOTBkOTAuLmMwMjZkNzYgMTAwNjQ0CiAtLS0g YS9nZGIvdGFyZ2V0LmgKICsrKyBiL2dkYi90YXJnZXQuaAotQEAgLTQzMyw2ICs0MzMsNyBAQCBz dHJ1Y3QgdGFyZ2V0X29wcworQEAgLTQ0NSw2ICs0NDUsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwog ICAgICAgICBwcm92aWRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldF8qIG1hY3Jvcy4g ICovCiAgICAgIGludCAoKnRvX3JlbW92ZV93YXRjaHBvaW50KSAoQ09SRV9BRERSLCBpbnQsIGlu dCwgc3RydWN0IGV4cHJlc3Npb24gKik7CiAgICAgIGludCAoKnRvX2luc2VydF93YXRjaHBvaW50 KSAoQ09SRV9BRERSLCBpbnQsIGludCwgc3RydWN0IGV4cHJlc3Npb24gKik7CkBAIC0xMTAzOSw3 ICs1MzQwLDcgQEAgaW5kZXggM2M4YzAxNy4uNjA4YTc0MiAxMDA2NDQKICAKICAgICAgaW50ICgq dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50KSAodm9pZCk7CiAgICAgIGludCB0b19oYXZlX3N0ZXBw YWJsZV93YXRjaHBvaW50OwotQEAgLTEzMTYsNiArMTMxNywxNSBAQCBleHRlcm4gY2hhciAqbm9y bWFsX3BpZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKK0BAIC0xMzI0LDYgKzEzMjUsMTUgQEAgZXh0 ZXJuIGNoYXIgKm5vcm1hbF9waWRfdG9fc3RyIChwdGlkX3QgcHRpZCk7CiAgI2RlZmluZQl0YXJn ZXRfcmVtb3ZlX3dhdGNocG9pbnQoYWRkciwgbGVuLCB0eXBlLCBjb25kKSBcCiAgICAgICAoKmN1 cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV93YXRjaHBvaW50KSAoYWRkciwgbGVuLCB0eXBlLCBjb25k KQogIApAQCAtMTEwNTUsMjUgKzUzNTYsNiBAQCBpbmRleCAzYzhjMDE3Li42MDhhNzQyIDEwMDY0 NAogICNkZWZpbmUgdGFyZ2V0X2luc2VydF9od19icmVha3BvaW50KGdkYmFyY2gsIGJwX3RndCkg XAogICAgICAgKCpjdXJyZW50X3RhcmdldC50b19pbnNlcnRfaHdfYnJlYWtwb2ludCkgKGdkYmFy Y2gsIGJwX3RndCkKICAKLUBAIC0xMzY5LDYgKzEzNzksMTggQEAgZXh0ZXJuIGludCB0YXJnZXRf c2VhcmNoX21lbW9yeSAoQ09SRV9BRERSIHN0YXJ0X2FkZHIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVUxPTkdFU1QgcGF0dGVybl9sZW4sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ09SRV9BRERSICpmb3VuZF9hZGRycCk7Ci0gCi0rLyogVXRpbGl0eSBm dW5jdGlvbnMgd2hpY2ggY2FuIGJlIHVzZWQgYnkgc2VhcmNoX21lbW9yeSBpbXBsZW1lbnRhdGlv bnMuICAqLwotKwotK3ZvaWQgYWxsb2NhdGVfcGF0dGVybl9idWZmZXIgKGNoYXIgKipwYXR0ZXJu X2J1ZnAsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgVUxPTkdFU1QgKnBhdHRl cm5fYnVmX3NpemUpOwotKwotK3ZvaWQgaW5jcmVhc2VfcGF0dGVybl9idWZmZXIgKGNoYXIgKipw YXR0ZXJuX2J1ZnAsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgVUxPTkdFU1Qg KnBhdHRlcm5fYnVmX3NpemUsIGludCB2YWxfYnl0ZXMpOwotKwotK2ludCBzZWFyY2hfbWVtb3J5 IChDT1JFX0FERFIgKnN0YXJ0X2FkZHIsIFVMT05HRVNUICpzZWFyY2hfc3BhY2VfbGVuLAotKwkJ ICAgY29uc3QgY2hhciAqcGF0dGVybl9idWYsIFVMT05HRVNUIHBhdHRlcm5fbGVuLAotKwkJICAg Q09SRV9BRERSICpmb3VuZF9hZGRyKTsKLSsKLSAvKiBUcmFjZXBvaW50LXJlbGF0ZWQgb3BlcmF0 aW9ucy4gICovCi0gCi0gI2RlZmluZSB0YXJnZXRfdHJhY2VfaW5pdCgpIFwKIGRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAogaW5kZXggMDAwMDAwMC4uODNmYWFmNgpAQCAtMTI3NzksNDM1ICs3MDYxLDE0NCBA QCBpbmRleCAwMDAwMDAwLi41ZGE3Mzc4CiArIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgdmxhCi0rc2V0IHNyY2Zp bGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAg ICB1bnRlc3RlZCB2bGEKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KLSsKLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9 IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVtcDEiCi0rZ2RiX3Rlc3Qg IndoYXRpcyB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxcXF0iICJmaXJzdDogd2hh dGlzIHRlbXAyIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhc XFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0 eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAxIgotK2dkYl90ZXN0ICJw dHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDIi Ci0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0 OiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyAy NiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDEiCi0rZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAn MicgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAyIgotK2dkYl90ZXN0ICJw IHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMyIK LSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStnZGJfdGVz dCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgInNlY29uZDog d2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxb dmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDIiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0 ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMyIKLSsK LStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25k OiBwdHlwZSB0ZW1wMSIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxb NzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMiIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDMiICJ0 eXBlID0gY2hhciBcXFxbNDhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVz dCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRl bXAxIgotK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNl Y29uZDogcHJpbnQgdGVtcDIiCi0rZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMg NDggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9nZGI5NTkzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYwot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc4M2M5NjIKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKLUBAIC0wLDAgKzEsMTgw IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsgICAqLwotKyNp bmNsdWRlIDxpb3N0cmVhbT4KLSsKLSt1c2luZyBuYW1lc3BhY2Ugc3RkOwotKwotK2NsYXNzIE5l eHRPdmVyVGhyb3dEZXJpdmF0ZXMKLSt7Ci0rCi0rcHVibGljOgotKwotKwotKyAgLy8gU2luZ2xl IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGlzIGZ1bmN0aW9uLgotKyAgdm9pZCBmdW5jdGlvbjEo KSAKLSsgIHsKLSsgICAgdGhyb3cgMjA7Ci0rICB9Ci0rCi0rICAvLyBUaHJvdyBhbiBleGNlcHRp b24gaW4gYW5vdGhlciBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rpb24yKCkgCi0rICB7Ci0rICAg IGZ1bmN0aW9uMSgpOwotKyAgfQotKwotKyAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGluIGFub3Ro ZXIgZnVuY3Rpb24sIGJ1dCBoYW5kbGUgaXQKLSsgIC8vIGxvY2FsbHkuCi0rICB2b2lkIGZ1bmN0 aW9uMyAoKSAKLSsgIHsKLSsgICAgewotKyAgICAgIHRyeQotKwl7Ci0rCSAgZnVuY3Rpb24xICgp OwotKwl9Ci0rICAgICAgY2F0Y2ggKC4uLikgCi0rCXsKLSsJICBjb3V0IDw8ICJDYXVnaHQgYW5k IGhhbmRsZWQgZnVuY3Rpb24xIGV4Y2VwdGlvbiIgPDwgZW5kbDsKLSsJfQotKyAgICB9Ci0rICB9 Ci0rCi0rICB2b2lkIHJldGhyb3cgKCkKLSsgIHsKLSsgICAgdHJ5Ci0rICAgICAgewotKwlmdW5j dGlvbjEgKCk7Ci0rICAgICAgfQotKyAgICBjYXRjaCAoLi4uKQotKyAgICAgIHsKLSsJdGhyb3c7 Ci0rICAgICAgfQotKyAgfQotKwotKyAgdm9pZCBmaW5pc2ggKCkKLSsgIHsKLSsgICAgLy8gV2Ug dXNlIHRoaXMgdG8gdGVzdCB0aGF0IGEgImZpbmlzaCIgaGVyZSBkb2VzIG5vdCBlbmQgdXAgaW4K LSsgICAgLy8gdGhpcyBmcmFtZSwgYnV0IGluIHRoZSBvbmUgYWJvdmUuCi0rICAgIHRyeQotKyAg ICAgIHsKLSsJZnVuY3Rpb24xICgpOwotKyAgICAgIH0KLSsgICAgY2F0Y2ggKGludCB4KQotKyAg ICAgIHsKLSsgICAgICB9Ci0rICAgIGZ1bmN0aW9uMSAoKTsJCS8vIG1hcmtlciBmb3IgdW50aWwK LSsgIH0KLSsKLSsgIHZvaWQgdW50aWwgKCkKLSsgIHsKLSsgICAgZnVuY3Rpb24xICgpOwotKyAg ICBmdW5jdGlvbjEgKCk7CQkvLyB1bnRpbCBoZXJlCi0rICB9Ci0rCi0rfTsKLStOZXh0T3ZlclRo cm93RGVyaXZhdGVzIG5leHRfY2FzZXM7Ci0rCi0rCi0raW50IG1haW4gKCkgCi0reyAKLSsgIHRy eQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjEgKCk7Ci0rICAgIH0KLSsgIGNh dGNoICguLi4pCi0rICAgIHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0KLSsKLSsgIHRyeQot KyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7Ci0rICAgIH0KLSsgIGNhdGNo ICguLi4pCi0rICAgIHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0KLSsKLSsgIHRyeQotKyAg ICB7Ci0rICAgICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVkIHNvIHdlIGNhbiBuZXh0IG92ZXIgb25l IGJ1dCBzdGVwIGludG8KLSsgICAgICAvLyBhbm90aGVyLgotKyAgICAgIG5leHRfY2FzZXMuZnVu Y3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlz Y2FyZAotKyAgICB9Ci0rCi0rICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMyAoKTsKLSsKLSsgIHRyeQot KyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5yZXRocm93ICgpOwotKyAgICB9Ci0rICBjYXRjaCAo Li4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICB0cnkKLSsgICAg ewotKyAgICAgIC8vIEFub3RoZXIgZHVwbGljYXRlIHNvIHdlIGNhbiB0ZXN0ICJmaW5pc2giLgot KyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQot KyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICAvLyBBbm90aGVyIHRlc3Qg Zm9yICJmaW5pc2giLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nhc2VzLmZpbmlzaCAo KTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0rCi0rICAvLyBUZXN0 IG9mICJ1bnRpbCIuCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZmluaXNoICgp OwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0KLSsKLSsgIC8vIFRlc3Qg b2YgInVudGlsIiB3aXRoIGFuIGFyZ3VtZW50LgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0 X2Nhc2VzLnVudGlsICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0K LSsKLSsgIC8vIFRlc3Qgb2YgImFkdmFuY2UiLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0 X2Nhc2VzLnVudGlsICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0K LSt9Ci0rCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjNkYWQ3Y2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2dkYjk1OTMuZXhwCi1AQCAtMCwwICsxLDE4MiBAQAotKyMgQ29weXJpZ2h0IDIwMDgs IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2Ug JHRyYWNlbGV2ZWwKLSt9Ci0rCi0raWYgeyBbc2tpcF9jcGx1c190ZXN0c10gfSB7IGNvbnRpbnVl IH0KLSsKLStzZXQgdGVzdGZpbGUgImdkYjk1OTMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u Y2MKLStzZXQgYmluZmlsZSAkb2JqZGlyLyRzdWJkaXIvJHRlc3RmaWxlCi0rCi0rIyBDcmVhdGUg YW5kIHNvdXJjZSB0aGUgZmlsZSB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBj b21waWxlcgotKyMgdXNlZCB0byBjb21waWxlIHRoZSB0ZXN0IGNhc2UuCi0raWYgW2dldF9jb21w aWxlcl9pbmZvICR7YmluZmlsZX0gImMrKyJdIHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAK LSsgICAgcmV0dXJuIC0xCi0rfQorKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9 ICIiIH0gewotKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAorK3NldCB0ZXN0ZmlsZSB2bGEKKytz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysg ICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogKyAgICByZXR1cm4g LTEKICt9CiArCi0rIyBTb21lIHRhcmdldHMgY2FuJ3QgZG8gZnVuY3Rpb24gY2FsbHMsIHNvIGRv bid0IGV2ZW4gYm90aGVyIHdpdGggdGhpcwotKyMgdGVzdC4KLStpZiBbdGFyZ2V0X2luZm8gZXhp c3RzIGdkYixjYW5ub3RfY2FsbF9mdW5jdGlvbnNdIHsKLSsgICAgc2V0dXBfeGZhaWwgIiotKi0q IiA5NTkzCi0rICAgIGZhaWwgIlRoaXMgdGFyZ2V0IGNhbiBub3QgY2FsbCBmdW5jdGlvbnMiCi0r ICAgIGNvbnRpbnVlCi0rfQotKwogK2dkYl9leGl0CiArZ2RiX3N0YXJ0CiArZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCiArZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotK2lmICFb cnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCi0r ICAgIGNvbnRpbnVlCi0rfSAKLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhlIG5lZWRlZCB1 bndpbmRlciBob29rcy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53 aW5kX0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7Ci0rICAgIC1yZSAiPSAu Kl9VbndpbmRfRGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICJjaGVjayBm b3IgdW53aW5kZXIgaG9vayIKLSsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJy ZW50IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBQYXNzIHRoZSB0ZXN0IHNvIHdl IGRvbid0IGdldCBib2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KLSsJcGFzcyAiY2hlY2sgZm9y IHVud2luZGVyIGhvb2siCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsg ICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0 ZWQgdmxhCiArICAgIHJldHVybiAtMQogK30KICsKLSsjIFNlZSBodHRwOi8vc291cmNld2FyZS5v cmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTk1OTMKLSsKLStnZGJfdGVzdCAibmV4dCIgXAot KyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJvdyAxIgotKwot K2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCi0rICAi bmV4dCBwYXN0IGNhdGNoIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICAgIi4qY2F0Y2gg KC4uLikuKiIgXAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgMiIKLSsKLStnZGJfdGVzdCAibmV4 dCIgXAotKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlvbjIuKiIgXAotKyAgIm5leHQgcGFzdCBjYXRj aCAyIgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0K ICsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xKCkuKiIgXAotKyAgInN0ZXAg aW50byBmdW5jdGlvbjIgMSIKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVy ZSIKICsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAg ICJuZXh0IG92ZXIgYSB0aHJvdyAzIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0g Y2hhciBcXFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMSIKKytnZGJfdGVzdCAi d2hhdGlzIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0 aXMgdGVtcDIiCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxc XF0iICJmaXJzdDogd2hhdGlzIHRlbXAzIgogKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipu ZXh0X2Nhc2VzLmZ1bmN0aW9uMy4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDMiCisrZ2RiX3Rl c3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlwZSB0 ZW1wMSIKKytnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAi Zmlyc3Q6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFy IFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMiCiArCi0rZ2RiX3Rlc3QgIm5leHQiIFwK LSsgICIuKm5leHRfY2FzZXMucmV0aHJvdy4qIiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJvdyA0 IgorK2dkYl90ZXN0ICJwIHRlbXAxIiAiID0gJzEnIDxyZXBlYXRzIDI2IHRpbWVzPiIgImZpcnN0 OiBwcmludCB0ZW1wMSIKKytnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyAyNiB0 aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDIiCisrZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycg PHJlcGVhdHMgNDggdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAzIgogKwotK2dkYl90ZXN0ICJu ZXh0IiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAibmV4dCBvdmVyIGEgcmV0aHJvdyIK KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKICsKLStnZGJfdGVzdCAi bmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlvbjIuKiIgXAotKyAgIm5leHQgYWZ0ZXIg YSByZXRocm93IgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbdmFy aWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDEiCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1w MiIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMiIK KytnZGJfdGVzdCAid2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29u ZDogd2hhdGlzIHRlbXAzIgogKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEo KS4qIiBcCi0rICAic3RlcCBpbnRvIGZ1bmN0aW9uMiAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1w MSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAxIgorK2dkYl90 ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBl IHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0i ICJzZWNvbmQ6IHB0eXBlIHRlbXAzIgogKwotK2dkYl90ZXN0ICJmaW5pc2giIFwKLSsgICIuKmNh dGNoICguLi4pLioiIFwKLSsgICJmaW5pc2ggMSIKKytnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcx JyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAxIgorK2dkYl90ZXN0ICJw IHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDIi CisrZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAic2Vjb25k OiBwcmludCB0ZW1wMyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNo cG9pbnQtZGVsZXRlLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRl LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4wMzFlZjkyCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmMK K0BAIC0wLDAgKzEsMzMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgogKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZp bmlzaCAoKS4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDQiCisrICAgQ29weXJpZ2h0IDIwMTAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsg ICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0rICAic3RlcCBpbnRvIGZpbmlzaCBtZXRob2QiCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAi LipjYXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDIiCisrICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KICsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy5maW5pc2ggKCkuKiIg XAotKyAgIm5leHQgcGFzdCBjYXRjaCA1IgorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwogKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAg InN0ZXAgaW50byBmaW5pc2gsIGZvciB1bnRpbCIKKyt2b2lkCisrZnVuYyAodm9pZCkKKyt7Cisr ICB2b2xhdGlsZSBpbnQgeCA9IDA7CiArCi0rZ2RiX3Rlc3QgInVudGlsIiBcCi0rICAiLipmdW5j dGlvbjEgKCkuKiIgXAotKyAgInVudGlsIHdpdGggbm8gYXJndW1lbnQgMSIKKysgIHgrKzsJLyog YnJlYWstaGVyZSAqLworKyAgeCsrOworK30KICsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251 bWJlciAibWFya2VyIGZvciB1bnRpbCIgJHRlc3RmaWxlLmNjXQorK2ludAorK21haW4gKHZvaWQp CisreworKyAgZnVuYyAoKTsKICsKLStnZGJfdGVzdCAidW50aWwgJGxpbmUiIFwKLSsgICIuKmZ1 bmN0aW9uMSAoKS4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDYiCisrICByZXR1cm4gMDsKKyt9 CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmV4cAorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ1YmM2NTAKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCitAQCAtMCww ICsxLDM4IEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKLStnZGJfdGVzdCAidW50aWwiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJ1 bnRpbCB3aXRoIG5vIGFyZ3VtZW50IDIiCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMK KysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgog KwotK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ1bnRpbCBoZXJlIiAkdGVzdGZpbGUu Y2NdCisrc2V0IHRlc3RmaWxlICJ3YXRjaHBvaW50LWRlbGV0ZSIKKytzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQog KwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnVudGlsICgpLioiIFwKLSsg ICJuZXh0IHBhc3QgY2F0Y2ggNiIKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZp bGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9XSB9IHsKKysgICAgdW50ZXN0ZWQgJHt0ZXN0 ZmlsZX0uZXhwCisrICAgIHJldHVybiAtMQorK30KICsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAg Ii4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGludG8gdW50aWwiCisrIyBJdCBpcyBtb3Jl IGNvbXBhdGlibGUgdGhpcyB3YXkuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2FuLXVzZS1o dy13YXRjaHBvaW50cyAwIgogKwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAotKyAgIi4qY2F0 Y2ggKC4uLikuKiIgXAotKyAgInVudGlsLW92ZXItdGhyb3ciCisraWYgIVtydW50b19tYWluXSB7 CisrICAgIHJldHVybiAtMQorK30KICsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9j YXNlcy51bnRpbCAoKS4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDciCisrIyBFbnN1cmUgdGhl cmUgaXMgYSBwYXJlbnQgZnJhbWUgdG8gY3JlYXRlIHJlbGF0ZWQgYnBfd2F0Y2hwb2ludF9zY29w ZS4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4q IgogKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAgInN0 ZXAgaW50byB1bnRpbCwgZm9yIGFkdmFuY2UiCisrZ2RiX3Rlc3QgIndhdGNoIHgiIHtXYXRjaHBv aW50IFswLTldKzogeH0KICsKLStnZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAotKyAgIi4qY2F0 Y2ggKC4uLikuKiIgXAotKyAgImFkdmFuY2Utb3Zlci10aHJvdyIKKytnZGJfdGVzdF9ub19vdXRw dXQge2RlbGV0ZSAkYnBudW19CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1ib3VuZC1sb2NsaXN0LlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5k LWxvY2xpc3QuUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjdmYjAwZWEK QEAgLTE0MjA1LDE0NSArODE5Niw2IEBAIGluZGV4IDAwMDAwMDAuLjIyNmRjNWQKICsgIGggPSAn aCcKICsgIGNhbGwgZm9vIChnLCBoKQogK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmdkYi9zZWxmdGVzdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhw Ci1pbmRleCBmYzhiY2NjLi5lMDUzODEzIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Z2RiL3NlbGZ0ZXN0LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4 cAotQEAgLTkyLDYgKzkyLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNl dCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHR0eWFyZyBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBj b21tYW5kICJzdGVwIgotIAkgICAgfQotKwkgICAgLXJlICIuKnB5dGhvbl9zY3JpcHQgPSAwLiok Z2RiX3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2Ny aXB0IGluaXRpYWxpemF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAg ICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdk Yl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5k X3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAi bmV4dCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjU1YWE4MGQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmphdmEvam5wZS5leHAKLUBAIC0wLDAgKzEsNzQgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30K LSsKLStsb2FkX2xpYiAiamF2YS5leHAiCi0rCi0rc2V0IHRlc3RmaWxlICJqbnBlIgotK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LmphdmEKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2NvbXBpbGVfamF2YV9mcm9tX3NvdXJjZSAke3NyY2Rpcn0v JHN1YmRpci8ke3NyY2ZpbGV9ICR7YmluZmlsZX0gIi1nIl0gIT0gIiIgfSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZGlyfS8kc3ViZGlyLyR7c3JjZmlsZX0iCi0rICAg IHJldHVybiAtMQotK30KLSsKLSsjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0rCi0rZ2RiX2V4 aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStn ZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJy ZWFrIGhlcmUiICR0ZXN0ZmlsZS5qYXZhXQotK2dkYl90ZXN0ICJicmVhayAkdGVzdGZpbGUuamF2 YTokbGluZSIgIiIKLSsKLStnZGJfdGVzdCAicnVuIiBcCi0rICAiLy8gYnJlYWsgaGVyZS4qIiBc Ci0rICAicnVuIGphdmEgbmV4dC1vdmVyLXRocm93IgotKwotKyMgU2VlIHdoZXRoZXIgd2UgaGF2 ZSB0aGUgbmVlZGVkIHVud2luZGVyIGhvb2tzLgotK3NldCBvayAxCi0rZ2RiX3Rlc3RfbXVsdGlw bGUgInByaW50IF9VbndpbmRfRGVidWdIb29rIiAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4g amF2YSIgewotKyAgICAtcmUgIj0gLipfVW53aW5kX0RlYnVnSG9vay4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIKLSsgICAgfQot KyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMgZmFpbHMgaW4g dGhlIHJlc3VsdHMuCi0rCXNldHVwX3hmYWlsICotKi0qCi0rCWZhaWwgImNoZWNrIGZvciB1bndp bmRlciBob29rIGluIGphdmEiCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsK LSsgICAgdW50ZXN0ZWQgam5wZS5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl90ZXN0 ICJoYW5kbGUgU0lHU0VHViBub3N0b3Agbm9wcmludCIgXAotKyAgIlNJR1NFR1YuKmZhdWx0IiBc Ci0rICAiZGlzYWJsZSBTSUdTRUdWIGZvciBuZXh0LW92ZXItTlBFIgotKwotKyMgVGhlIGxpbmUg d2hlcmUgd2Ugc3RvcCBkaWZmZXIgYWNjb3JkaW5nIHRvIGdjajsgY2hlY2sganVzdCB3ZSBkaWQg bm90IGFscmVhZHkKLSsjIGV4ZWN1dGUgdGhlIGNhdGNoIHBvaW50LgotKwotK2dkYl90ZXN0ICJu ZXh0IiBcCi0rICAiIiBcCi0rICAibmV4dCBvdmVyIE5QRSIKLSsKLStnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAiY2F0Y2ggcG9pbnQiXQotK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJjYXRjaCBwb2ludCIgIi4qLy8gY2F0Y2ggcG9pbnQuKiIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuamF2YSBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEv am5wZS5qYXZhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzUyNDgzMAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmphdmEKLUBA IC0wLDAgKzEsMzggQEAKLSsvLyBUZXN0IG5leHQtb3Zlci1OUEUuCi0rLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsgICAqLwotKwotK3B1YmxpYyBjbGFzcyBqbnBlCi0rewotKyAg cHVibGljIHN0YXRpYyBTdHJpbmcgbnBlICgpCi0rICB7Ci0rICAgIHJldHVybiAoKE9iamVjdCkg bnVsbCkudG9TdHJpbmcoKTsKLSsgIH0KLSsKLSsgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChT dHJpbmdbXSBhcmdzKQotKyAgewotKyAgICB0cnkKLSsgICAgICB7Ci0rCVN5c3RlbS5vdXQucHJp bnRsbiAobnBlICgpKTsgLy8gYnJlYWsgaGVyZQotKyAgICAgIH0KLSsgICAgY2F0Y2ggKE51bGxQ b2ludGVyRXhjZXB0aW9uIG4pCi0rICAgICAgewotKwlTeXN0ZW0ub3V0LnByaW50bG4gKCJzdWNj ZXNzIik7IC8vIGNhdGNoIHBvaW50Ci0rICAgICAgfQotKyAgfQotK30KIGRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKIG5ldyBmaWxlIG1vZGUg MTAwNjQ0CiBpbmRleCAwMDAwMDAwLi43MjlmNDU3CkBAIC0xNDQ0NywxMCArODI5OSwxMCBAQCBp bmRleCAwMDAwMDAwLi5mMmRlNzE4CiArZ2RiX3Rlc3QgInAgYXJyXFswXF0iICJcXCRcWzAtOVxd KyA9IDQyIgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmlu Zy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9ydHJhbi1zdHJpbmcuZXhwCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjk5N2VlYworaW5kZXggMDAwMDAwMC4uYzEw OGVhNQogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4t c3RyaW5nLmV4cAotQEAgLTAsMCArMSw0MSBAQAorQEAgLTAsMCArMSwzOSBAQAogKyMgQ29weXJp Z2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQpAQCAtMTQ0ODIsMTMgKzgzMzQsMTEgQEAgaW5kZXggMDAwMDAwMC4uZjk5N2VlYwogKyAgICBy ZXR1cm4gLTEKICt9CiArCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4geworK2lmICFbcnVudG8g JHNyY2ZpbGU6W2dkYl9nZXRfbGluZV9udW1iZXIgInMgPSBzIl1dIHRoZW4gewogKyAgICBwZXJy b3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKICsgICAgY29udGludWUKICt9 CiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInMgPSBzIl0KLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAicyA9IHMiCiArZ2RiX3Rlc3QgImZyYW1lIiAiLipzPSdm b28nLioiCiArZ2RiX3Rlc3QgInB0eXBlIHMiICJ0eXBlID0gY2hhcmFjdGVyXFwqMyIKICtnZGJf dGVzdCAicCBzIiAiXFwkXFswLTlcXSogPSAnZm9vJyIKQEAgLTE0NzI0LDE1NCArODU3NCw2IEBA IGluZGV4IDAwMDAwMDAuLjI5NTYwMmQKICsgIHMgOj0gJ3Rlc3QnIzAnc3RyaW5nJzsKICsgIHdy aXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQgMiBoZXJlIH0KICtlbmQuCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktY21kLmV4cAotaW5kZXggMGYyNTBkMi4uODRlNTAzOCAxMDA2NDQKLS0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktY21kLmV4cAotQEAgLTIwLDI0ICsyMCw2IEBAIGlmICR0cmFjZWxldmVsIHRo ZW4gewotICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSB9Ci0gCi0tIyBVc2FnZTogZ2RiX3B5X3Rl c3RfbXVsdGlwbGUgTkFNRSBJTlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0uLi4KLS0jIFJ1biBh IHRlc3QgbmFtZWQgTkFNRSwgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dC4K LS0jIEFmdGVyIGVhY2ggaW5wdXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciByZXN1bHQgbGluZSBS RVNVTFQuCi0tIyBTdWNjZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90aGVyd2lz ZS4KLS1wcm9jIGdkYl9weV90ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsKLS0gICAgZ2xvYmFs IGdkYl9wcm9tcHQKLS0gICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7Ci0tCWlmIHtb Z2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgewotLQkgICAgLXJlICJc W1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7Ci0tCQlwYXNz ICIkbmFtZSAtICRpbnB1dCIKLS0JICAgIH0KLS0JfV19IHsKLS0JICAgIHJldHVybiAxCi0tCX0K LS0gICAgfQotLSAgICByZXR1cm4gMAotLX0KLS0KLSAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIu Ci0gCi0gZ2RiX2V4aXQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt ZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAotaW5kZXgg ZTEyMTJkMy4uNzdmNDRmNSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1mcmFtZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAK LUBAIC04OSw4ICs4OSw2IEBAIGdkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMCA9IGYx Lm5ld2VyICgpIiAiZ2V0IGZpcnN0IGZyYW1lIiAwCi0gCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCAncmVzdWx0ID0nLCBmMCA9PSBmMSIgIiA9IEZhbHNlIiAidGVzdCBlcXVhbGl0eSBjb21wYXJp c29uIChmYWxzZSkiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCA9PSBm MCIgIiA9IFRydWUiICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgotLWdkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjEiICIgPSBUcnVlIiAidGVzdCBpbmVx dWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgotLWdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3Vs dCA9JywgZjAgIT0gZjAiICIgPSBGYWxzZSIgInRlc3QgaW5lcXVhbGl0eSBjb21wYXJpc29uIChm YWxzZSkiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5pc192YWxpZCAo KSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLmlzX3ZhbGlkIgotIGdkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAubmFtZSAoKSIgIiA9IGYyIiAidGVzdCBGcmFtZS5uYW1lIgotIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAudHlwZSAoKSA9PSBnZGIuTk9STUFM X0ZSQU1FIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUudHlwZSIKLUBAIC0xMDUsMyArMTAzLDUgQEAg Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5yZWFkX3ZhciAoJ3ZhcmlhYmxl X3doaWNoX3N1cmVseV9kb2VzbnRfZXgKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQg PScsIGYwLnJlYWRfdmFyICgnYScpIiAiID0gMSIgInRlc3QgRnJhbWUucmVhZF92YXIgLSBzdWNj ZXNzIgotIAotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVk X2ZyYW1lICgpID09IGYxIiAiID0gVHJ1ZSIgInRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1lIgotKwot K2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJs b2NrIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mdW5jdGlvbi5leHAKLWluZGV4IDM4YzU2OTMuLmU3 ZjAwMzcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24u ZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhwCi1AQCAt MjAsMjQgKzIwLDYgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAotIH0KLSAKLS0jIFVzYWdlOiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJF U1VMVCB7SU5QVVQgUkVTVUxUfS4uLgotLSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0 aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0LgotLSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5l IElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VMVC4KLS0jIFN1Y2NlZWQgaWYgYWxs IHJlc3VsdHMgYXJlIHNlZW47IGZhaWwgb3RoZXJ3aXNlLgotLXByb2MgZ2RiX3B5X3Rlc3RfbXVs dGlwbGUge25hbWUgYXJnc30gewotLSAgICBnbG9iYWwgZ2RiX3Byb21wdAotLSAgICBmb3JlYWNo IHtpbnB1dCByZXN1bHR9ICRhcmdzIHsKLS0JaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQg IiRuYW1lIC0gJGlucHV0IiB7Ci0tCSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxd KygkZ2RiX3Byb21wdCB8ICo+KSQiIHsKLS0JCXBhc3MgIiRuYW1lIC0gJGlucHV0IgotLQkgICAg fQotLQl9XX0gewotLQkgICAgcmV0dXJuIDEKLS0JfQotLSAgICB9Ci0tICAgIHJldHVybiAwCi0t fQotLQotICMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSAKLSBnZGJfZXhpdAotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCi1pbmRleCAzYjJhYWRkLi4wM2Ji ZjNlIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50 LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAot QEAgLTEwMiw2ICsxMDIsOCBAQCBwcm9jIHJ1bl9sYW5nX3Rlc3RzIHtsYW5nfSB7Ci0gICAgIGdk Yl90ZXN0ICJwcmludCBlc3RyaW5nIiAiXCJlbWJlZGRlZCB4XFxcXDIwMVxcXFwyMDJcXFxcMjAz XFxcXDIwNFwiIgotICAgICBnZGJfdGVzdCAicHJpbnQgYyIgIiA9IGNvbnRhaW5lciBcImNvbnRh aW5lclwiIHdpdGggMiBlbGVtZW50cyA9IHskbmwgKi4wLiA9IDIzLCRubCAqLjEuID0gNzIkbmx9 IgotIAotKyAgICBnZGJfdGVzdCAicHJpbnQgbnVsbHN0ciIgIlJ1bnRpbWVFcnJvcjogRXJyb3Ig cmVhZGluZyBzdHJpbmcgZnJvbSBpbmZlcmlvci4qIgotKwotICAgICBnZGJfdGVzdCAicHJpbnQg bnN0eXBlIiAiID0geyRubCAqLjAuID0gNywkbmwgKi4xLiA9IDQyJG5sfSIKLSAgICAgZ2RiX3Rl c3QgImNvbnRpbnVlIiAiUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHlcLiIKLSAKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotaW5kZXggYTI0YmMxMS4uZTMwNDNiYyAxMDA2NDQKLS0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLUBAIC0zMTMsNiArMzEzLDE1IEBAIHByb2Mg dGVzdF92YWx1ZV9hZnRlcl9kZWF0aCB7fSB7Ci0gICAgICJwcmludCB2YWx1ZSdzIHR5cGUiCi0g fQotIAotKyMgUmVncmVzc2lvbiB0ZXN0IGZvciBhIGNhc3QgZmFpbHVyZS4gIFRoZSBidWcgd2Fz IHRoYXQgaWYgd2UgY2FzdCBhCi0rIyB2YWx1ZSB0byBpdHMgb3duIHR5cGUsIGdkYiBjb3VsZCBj cmFzaC4gIFRoaXMgaGFwcGVuZWQgYmVjYXVzZSB3ZQotKyMgY291bGQgZW5kIHVwIGRvdWJsZS1m cmVlaW5nIGEgc3RydWN0IHZhbHVlLgotK3Byb2MgdGVzdF9jYXN0X3JlZ3Jlc3Npb24ge30gewot KyAgZ2RiX3Rlc3QgInB5dGhvbiB2ID0gZ2RiLlZhbHVlKDUpIiAiIiAiY3JlYXRlIHZhbHVlIGZv ciBjYXN0IHRlc3QiCi0rICBnZGJfdGVzdCAicHl0aG9uIHYgPSB2LmNhc3Qodi50eXBlKSIgIiIg ImNhc3QgdmFsdWUgZm9yIGNhc3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gcHJpbnQgdiIg IjUiICJwcmludCB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgotK30KLSsKLSAjIFJlZ3Jlc3Npb24gdGVz dCBmb3IgaW52YWxpZCBzdWJzY3JpcHQgb3BlcmF0aW9ucy4gIFRoZSBidWcgd2FzIHRoYXQKLSAj IHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSB3YXMgbm90IGJlaW5nIGNoZWNrZWQgYmVmb3JlIGFsbG93 aW5nIGEKLSAjIHN1YnNjcmlwdCBvcGVyYXRpb24gdG8gcHJvY2VlZC4KLUBAIC00MzcsNiArNDQ2 LDcgQEAgaWYgIVtydW50b19tYWluXSB0aGVuIHsKLSB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCi0g dGVzdF9sYXp5X3N0cmluZ3MKLSB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoCi0rdGVzdF9jYXN0X3Jl Z3Jlc3Npb24KLSAKLSAjIFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkg dG8gdGVzdCBlaXRoZXIgQyBvciBDKysKLSAjIHZhbHVlcy4gCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzAzMTlmZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwCi1AQCAtMCww ICsxLDI0IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot KyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzQxMDgKLSsK LStnZGJfZXhpdAotK2dkYl9zdGFydAotKwotKyMgU2tpcCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNj cmlwdGluZyBpcyBub3QgZW5hYmxlZC4KLStpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNv bnRpbnVlIH0KLSsKLStnZGJfdGVzdCAicHl0aG9uIHByaW50IGdkYi5zb2xpYl9hZGRyZXNzKC0x KSIgIk5vbmUiICJnZGIuc29saWJfYWRkcmVzcyBleGlzdHMiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAogaW5kZXggMDAwMDAwMC4uNGRjMzA4YgpAQCAtMTU0MTUsMjAgKzkxMTcsOCBAQCBp bmRleCAwMDAwMDAwLi4xZGM5M2FiCiAraWYge1tpc3RhcmdldCAiKi0qLWxpbnV4KiJdfSB7CiAr ICAgIHRlc3QgY2hpbGQgRk9MTE9XX0NISUxECiArfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1pbmRleCAyMGUyZmI3 Li5iMjdkMjVjIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotQEAgLTI3LDYgKzI3LDcgQEAgaWYgeyR0b29sID09 ICIifSB7Ci0gfQotIAotIGxvYWRfbGliIGxpYmdsb3NzLmV4cAotK2xvYWRfbGliIHB5dGhvbi1z dXBwb3J0LmV4cAotIAotIGdsb2JhbCBHREIKLSAKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2xpYi9wYXNjYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAotaW5kZXggOTY5 MWJjMS4uMTNlYThiNSAxMDA2NDQKK2luZGV4IGFmMGIwMGQuLmUxYThkYzQgMTAwNjQ0CiAtLS0g YS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9w YXNjYWwuZXhwCiBAQCAtMzcsNiArMzcsOSBAQCBwcm9jIHBhc2NhbF9pbml0IHt9IHsKQEAgLTE1 NDYyLDEwNCArOTE1MiwxMSBAQCBpbmRleCA5NjkxYmMxLi4xM2VhOGI1IDEwMDY0NAogICAgICB9 CiAgICAgIHNldCBwYXNjYWxfaW5pdF9kb25lIDEKICB9ICAgCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9saWIvcHl0aG9uLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHl0aG9u LXN1cHBvcnQuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjhlOTgz NgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHl0aG9uLXN1cHBvcnQu ZXhwCi1AQCAtMCwwICsxLDUzIEBACi0rZ2xvYmFsIHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQKLSsK LSsjIFJldHVybiAxIGlmIFB5dGhvbiBzY3JpcHRpbmcgaXMgc3VwcG9ydGVkIGluIEdEQiwgMCBp ZiBub3QuCi0rcHJvYyBweXRob25fc3VwcG9ydGVkIHsgfSB7Ci0rICBnbG9iYWwgZ2RiX3Byb21w dAotKyAgZ2xvYmFsIHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQKLSsKLSsgIGlmIFtpbmZvIGV4aXN0 cyBweXRob25fc3VwcG9ydGVkX3NhdmVkXSB7Ci0rICAgICAgdmVyYm9zZSAicHl0aG9uX3N1cHBv cnRlZDogIHJldHVybmluZyBzYXZlZCAkcHl0aG9uX3N1cHBvcnRlZF9zYXZlZCIgMgotKyAgICAg IHJldHVybiAkcHl0aG9uX3N1cHBvcnRlZF9zYXZlZAotKyAgfQotKwotKyAgZ2RiX3Rlc3RfbXVs dGlwbGUgInB5dGhvbiBwcmludCAnaGVsbG8sIHdvcmxkISciICJ2ZXJpZnkgcHl0aG9uIHN1cHBv cnQiIHsKLSsgICAgLXJlICJub3Qgc3VwcG9ydGVkLiokZ2RiX3Byb21wdCAkIgl7Ci0rICAgICAg cmV0dXJuIFtzZXQgcHl0aG9uX3N1cHBvcnRlZF9zYXZlZCAwXQotKyAgICB9Ci0rICAgIC1yZSAi JGdkYl9wcm9tcHQgJCIJewotKyAgICAgIHJldHVybiBbc2V0IHB5dGhvbl9zdXBwb3J0ZWRfc2F2 ZWQgMV0KLSsgICAgfQotKyAgfQotKwotKyAgcmV0dXJuIFtzZXQgcHl0aG9uX3N1cHBvcnRlZF9z YXZlZCAwXQotK30KLSsKLSsjIFJ1biBhIGNvbW1hbmQgaW4gR0RCLCBhbmQgcmVwb3J0IGEgZmFp bHVyZSBpZiBhIFB5dGhvbiBleGNlcHRpb24gaXMgdGhyb3duLgotKyMgSWYgcmVwb3J0X3Bhc3Mg aXMgdHJ1ZSwgcmVwb3J0IGEgcGFzcyBpZiBubyBleGNlcHRpb24gaXMgdGhyb3duLgotK3Byb2Mg Z2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCB7Y21kIG5hbWUgcmVwb3J0X3Bhc3N9IHsKLSsgIGdsb2Jh bCBnZGJfcHJvbXB0Ci0rCi0rICBnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRuYW1lIHsKLSsgICAg ICAtcmUgIlRyYWNlYmFjay4qJGdkYl9wcm9tcHQgJCIgIHsgZmFpbCAkbmFtZSB9Ci0rICAgICAg LXJlICIkZ2RiX3Byb21wdCAkIgkgICAgICB7IGlmICRyZXBvcnRfcGFzcyB7IHBhc3MgJG5hbWUg fSB9Ci0rICB9Ci0rfQotKwotKyMgVXNhZ2U6IGdkYl9weV90ZXN0X211bHRpcGxlIE5BTUUgSU5Q VVQgUkVTVUxUIHtJTlBVVCBSRVNVTFR9Li4uCi0rIyBSdW4gYSB0ZXN0IG5hbWVkIE5BTUUsIGNv bnNpc3Rpbmcgb2YgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQuCi0rIyBBZnRlciBlYWNoIGlucHV0 IGxpbmUgSU5QVVQsIHNlYXJjaCBmb3IgcmVzdWx0IGxpbmUgUkVTVUxULgotKyMgU3VjY2VlZCBp ZiBhbGwgcmVzdWx0cyBhcmUgc2VlbjsgZmFpbCBvdGhlcndpc2UuCi0rcHJvYyBnZGJfcHlfdGVz dF9tdWx0aXBsZSB7bmFtZSBhcmdzfSB7Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rCi0rICAg IGZvcmVhY2gge2lucHV0IHJlc3VsdH0gJGFyZ3MgewotKwlpZiB7W2dkYl90ZXN0X211bHRpcGxl ICRpbnB1dCAiJG5hbWUgLSAkaW5wdXQiIHsKLSsJICAgIC1yZSAiXFtcclxuXF0qKCRyZXN1bHQp XFtcclxuXF0rKCRnZGJfcHJvbXB0IHwgKj4pJCIgewotKwkJcGFzcyAiJG5hbWUgLSAkaW5wdXQi Ci0rCSAgICB9Ci0rCX1dfSB7Ci0rCSAgICByZXR1cm4gMQotKwl9Ci0rICAgIH0KLSsgICAgcmV0 dXJuIDAKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCi1pbmRl eCAwYjI5MWJhLi5hZTNlNGZmIDEwMDY0NAotLS0tIGEvZ2RiL3RocmVhZC5jCi0rKysgYi9nZGIv dGhyZWFkLmMKLUBAIC05MCw2ICs5MCwxNiBAQCBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2lu dCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSAgICAgfQotIH0KLSAKLSt2b2lkCi0rZGVsZXRl X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSt7 Ci0rICBpZiAodHAgJiYgdHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKLSsgICAgewot KyAgICAgIGRlbGV0ZV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50 KTsKLSsgICAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKLSsgICAg fQotK30KLSsKLSBzdGF0aWMgdm9pZAotIGNsZWFyX3RocmVhZF9pbmZlcmlvcl9yZXNvdXJjZXMg KHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCi0gewotQEAgLTEwMyw2ICsxMTMsMTIgQEAgY2xlYXJf dGhyZWFkX2luZmVyaW9yX3Jlc291cmNlcyAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSAgICAg ICB0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICAgIH0KLSAKLSsgIGlmICh0 cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KQotKyAgICB7Ci0rICAgICAgdHAtPmV4Y2Vw dGlvbl9yZXN1bWVfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0 b3A7Ci0rICAgICAgdHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0rICAg IH0KLSsKLSAgIGJwc3RhdF9jbGVhciAoJnRwLT5zdG9wX2Jwc3RhdCk7Ci0gCi0gICBkaXNjYXJk X2FsbF9pbnRlcm1lZGlhdGVfY29udGludWF0aW9uc190aHJlYWQgKHRwKTsKIGRpZmYgLS1naXQg YS9nZGIvdG9wLmMgYi9nZGIvdG9wLmMKLWluZGV4IGIyOWU2OGQuLjhlZGFjNzAgMTAwNjQ0Citp bmRleCA2NjgwYzM4Li4zOGQxY2MyIDEwMDY0NAogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIv dG9wLmMKLUBAIC0zMzcsNiArMzM3LDcgQEAgdm9pZAorQEAgLTMzOCw2ICszMzgsNyBAQCB2b2lk CiAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCiAgewogICAgZnJlZV9hbGxfdmFsdWVz ICgpOwpAQCAtMTU2MjUsNyArOTIyMiw3IEBAIGluZGV4IGNlOWY1NTEuLjVmOWQ3MzkgMTAwNjQ0 CiAgCiAgc3RhdGljIHZvaWQKIGRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGguYyBiL2dkYi92YWxh cml0aC5jCi1pbmRleCAwYzQwOTA1Li5hNzgxNjM2IDEwMDY0NAoraW5kZXggN2M1NTNkMS4uODBi ZTgyZiAxMDA2NDQKIC0tLSBhL2dkYi92YWxhcml0aC5jCiArKysgYi9nZGIvdmFsYXJpdGguYwog QEAgLTE2MSwxMiArMTYxLDI2IEBAIHZhbHVlX3N1YnNjcmlwdCAoc3RydWN0IHZhbHVlICphcnJh eSwgTE9OR0VTVCBpbmRleCkKQEAgLTE1NzE5LDcgKzkzMTYsNyBAQCBpbmRleCAwYzQwOTA1Li5h NzgxNjM2IDEwMDY0NAogIH0KICAKIGRpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFs b3BzLmMKLWluZGV4IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CitpbmRleCA5MzJlMzExLi41Y2U1 NjVmIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbG9wcy5jCiArKysgYi9nZGIvdmFsb3BzLmMKIEBAIC0z OCw2ICszOCw3IEBACkBAIC0xNTczMCw3ICs5MzI3LDcgQEAgaW5kZXggN2ZiYWQxMC4uOGUzMjQw NSAxMDA2NDQKICAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5o IgotQEAgLTg1OCw2ICs4NTksNjUgQEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51 bSBsdmFsX3R5cGUgbHYpCitAQCAtODk3LDYgKzg5OCw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0 eXBlICp0eXBlLCBlbnVtIGx2YWxfdHlwZSBsdikKICAgIHJldHVybiB2YWw7CiAgfQogIApAQCAt MTU3OTYsNyArOTM5Myw3IEBAIGluZGV4IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CiAgLyogSGVs cGVyIGZ1bmN0aW9uIGZvciB2YWx1ZV9hdCwgdmFsdWVfYXRfbGF6eSwgYW5kIHZhbHVlX2F0X2xh enlfc3RhY2suICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotQEAgLTk1NiwxNSArMTAx NiwyMSBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKK0BAIC05OTUsMTUg KzEwNTUsMjEgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAgIH0K ICAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIHsKQEAg LTE1ODI1LDcgKzk0MjIsNyBAQCBpbmRleCA3ZmJhZDEwLi44ZTMyNDA1IDEwMDY0NAogIAl9CiAg ICAgIH0KICAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKLUBA IC0xMzc0LDcgKzE0NDAsMTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1Y3QgYmxvY2sgKmIpCitAQCAtMTQwNyw3ICsxNDczLDE4IEBAIGFkZHJlc3Nfb2Zf dmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChW QUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAg ICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTU4 NDUsNyArOTQ0Miw3IEBAIGluZGV4IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CiAgCiAgICAgICAg cmV0dXJuIHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFk ZHIpOwogICAgICB9Ci1AQCAtMTQ4MSw2ICsxNTU4LDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0x NTE1LDYgKzE1OTIsNyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3Ry dWN0IHZhbHVlICphcmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJnMSkpOwpAQCAtMTU4NTMsNyArOTQ1MCw3IEBAIGluZGV4IDdmYmFk MTAuLjhlMzI0MDUgMTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21l dGhpbmcgcmVxdWlyaW5nIGEgcG9pbnRlciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBu b3QgeWV0IGJlZW4gcHVzaGVkIHRvIHRoZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE0 OTAsOCArMTU2OCwxMiBAQCB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkK K0BAIC0xNTI0LDggKzE2MDIsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUg KmFyZzEpCiAgICBpZiAoVkFMVUVfTFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVy cm9yIChfKCJBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBt ZW1vcnkuIikpOwogIApAQCAtMTU4NjgsNyArOTQ2NSw3IEBAIGluZGV4IDdmYmFkMTAuLjhlMzI0 MDUgMTAwNjQ0CiAgCiAgLyogR2l2ZW4gYSB2YWx1ZSB3aGljaCBpcyBhIGZ1bmN0aW9uLCByZXR1 cm4gYSB2YWx1ZSB3aGljaCBpcyBhIHBvaW50ZXIKIGRpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQu YyBiL2dkYi92YWxwcmludC5jCi1pbmRleCBhZDYyNjhlLi5mYjBlZjdhIDEwMDY0NAoraW5kZXgg ZGRiMTZlNC4uYzRjMjk2OSAxMDA2NDQKIC0tLSBhL2dkYi92YWxwcmludC5jCiArKysgYi9nZGIv dmFscHJpbnQuYwogQEAgLTM2LDYgKzM2LDcgQEAKQEAgLTE1ODg3LDcgKzk0ODQsNyBAQCBpbmRl eCBhZDYyNjhlLi5mYjBlZjdhIDEwMDY0NAogICAgICBjYXNlIFRZUEVfQ09ERV9CSVRTVFJJTkc6 CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGRlZmF1bHQ6Ci1AQCAtMTE0Miw2ICsxMTQyLDcgQEAg dmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCitAQCAtMTEwNCw2ICsxMTA0LDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1l bnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgewogICAg dW5zaWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsKICAgIHVuc2lnbmVkIGxlbjsKQEAgLTE1 ODk1LDEwICs5NDkyLDEwIEBAIGluZGV4IGFkNjI2OGUuLmZiMGVmN2EgMTAwNjQ0CiAgICBzdHJ1 Y3QgdHlwZSAqZWx0dHlwZSwgKmluZGV4X3R5cGU7CiAgICB1bnNpZ25lZCBlbHRsZW47CiAgICAv KiBQb3NpdGlvbiBvZiB0aGUgYXJyYXkgZWxlbWVudCB3ZSBhcmUgZXhhbWluaW5nIHRvIHNlZQot QEAgLTExNTAsOSArMTE1MSwzMyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKK0BAIC0xMTEyLDkgKzExMTMsMzMg QEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCiAgICAvKiBOdW1iZXIgb2YgcmVwZXRpdGlvbnMgd2UgaGF2ZSBkZXRl Y3RlZCBzbyBmYXIuICAqLwogICAgdW5zaWduZWQgaW50IHJlcHM7Ci0gICBMT05HRVNUIGxvd19i b3VuZF9pbmRleCA9IDA7CisgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKICsgIHN0 cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRy ZXNzOwogKyAgCkBAIC0xNTkzMCwxOCArOTUyNyw4IEBAIGluZGV4IGFkNjI2OGUuLmZiMGVmN2Eg MTAwNjQ0CiArICBlbHRsZW4gPSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKTsK ICAgIGluZGV4X3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwogIAotICAgLyogQ29tcHV0 ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheS4gIE9uIG1vc3QgYXJyYXlzLAot QEAgLTExNjAsOSArMTE4NSw2IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAotICAgICAgaXMgc2ltcGx5IHRoZSBz aXplIG9mIHRoZSBhcnJheSBkaXZpZGVkIGJ5IHRoZSBzaXplIG9mIHRoZSBlbGVtZW50cy4KLSAg ICAgIEJ1dCBmb3IgYXJyYXlzIG9mIGVsZW1lbnRzIHdob3NlIHNpemUgaXMgemVybywgd2UgbmVl ZCB0byBsb29rIGF0Ci0gICAgICB0aGUgYm91bmRzLiAgKi8KLS0gIGlmIChlbHRsZW4gIT0gMCkK LS0gICAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC8gZWx0bGVuOwotLSAgZWxzZQotICAgICB7 Ci0gICAgICAgTE9OR0VTVCBsb3csIGhpOwotIAotQEAgLTEyMzYsNiArMTI1OCw4IEBAIHZhbF9w cmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAorICAgaWYgKGdldF9hcnJheV9ib3VuZHMgKHR5cGUsICZsb3dfYm91bmQsICZoaWdo X2JvdW5kKSkKK0BAIC0xMTg5LDYgKzEyMTQsOCBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgewogICAg ICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwogICAgICB9CkBAIC0xNTk1MSw3 ICs5NTM4LDcgQEAgaW5kZXggYWQ2MjY4ZS4uZmIwZWY3YSAxMDA2NDQKICAKICAvKiBSZWFkIExF TiBieXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0aGUK IGRpZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCBkNTUyNDAyLi5i MTAyNjljIDEwMDY0NAoraW5kZXggODVjYjYyYS4uMDEzYTlmYyAxMDA2NDQKIC0tLSBhL2dkYi92 YWx1ZS5jCiArKysgYi9nZGIvdmFsdWUuYwogQEAgLTM5LDYgKzM5LDcgQEAKQEAgLTE1OTYyLDcg Kzk1NDksNyBAQCBpbmRleCBkNTUyNDAyLi5iMTAyNjljIDEwMDY0NAogIAogICNpbmNsdWRlICJw eXRob24vcHl0aG9uLmgiCiAgCi1AQCAtODI4LDEyICs4MjksMTUgQEAgdm9pZAorQEAgLTg1MCwx MiArODUxLDE1IEBAIHZvaWQKICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3Qg dmFsdWUgKmNvbXBvbmVudCwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKndob2xlKQog IHsKQEAgLTE1OTc4LDcgKzk1NjUsNyBAQCBpbmRleCBkNTUyNDAyLi5iMTAyNjljIDEwMDY0NAog ICAgaWYgKHdob2xlLT5sdmFsID09IGx2YWxfY29tcHV0ZWQpCiAgICAgIHsKICAgICAgICBzdHJ1 Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB3aG9sZS0+bG9jYXRpb24uY29tcHV0ZWQuZnVuY3M7Ci1A QCAtODQxLDYgKzg0NSwxMiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3Qg dmFsdWUgKmNvbXBvbmVudCwKK0BAIC04NjMsNiArODY3LDEyIEBAIHNldF92YWx1ZV9jb21wb25l bnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAogICAgICAgIGlmIChmdW5jcy0+ Y29weV9jbG9zdXJlKQogICAgICAgICAgY29tcG9uZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9z dXJlID0gZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hvbGUpOwogICAgICB9CkBAIC0xNTk5MSw3ICs5 NTc4LDcgQEAgaW5kZXggZDU1MjQwMi4uYjEwMjY5YyAxMDA2NDQKICB9CiAgCiAgDAotQEAgLTk3 Myw2ICs5ODMsMjkgQEAgc2hvd192YWx1ZXMgKGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkK K0BAIC05OTUsNiArMTAwNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50IGZy b21fdHR5KQogICAgICAgIG51bV9leHBbMV0gPSAnXDAnOwogICAgICB9CiAgfQpAQCAtMTYwMjEs NyArOTYwOCw3IEBAIGluZGV4IGQ1NTI0MDIuLmIxMDI2OWMgMTAwNjQ0CiAgDAogIC8qIEludGVy bmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgog ICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAt MTQ1MSw2ICsxNDg0LDQwIEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorQEAgLTE0NzMsNiArMTUwNiw0MCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9u IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIHJldHVybiAoKmlmbi0+aGFuZGxlcikgKGdk YmFyY2gsIGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQogIApAQCAtMTYw NjIsNyArOTY0OSw3IEBAIGluZGV4IGQ1NTI0MDIuLmIxMDI2OWMgMTAwNjQ0CiAgLyogVGhlICdm dW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3RoaW5nIC0tIGl0IGlzIGp1c3QgYQogICAg IHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlvbiBOQU1FIiB3b3JrLiAgVGhpcyBpcyBh bHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN1Yi1jb21tYW5kIHRo YXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMTQ5OCwxMSArMTU2NSwxMCBAQCBwcmVzZXJ2ZV9vbmVf dmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAg LTE1MjAsMTEgKzE1ODcsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZh bHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCSAgICBodGFiX3QgY29waWVkX3R5cGVz KQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVlLT50eXBlKSA9PSBvYmpmaWxlKQpAQCAt MTYwNzYsNyArOTY2Myw3IEBAIGluZGV4IGQ1NTI0MDIuLmIxMDI2OWMgMTAwNjQ0CiAgCQkJCQkJ IGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTE1MTcsMTMgKzE1ODMsMTMgQEAgcHJlc2VydmVf b25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCitAQCAtMTUzOSwxMyArMTYwNSwxMyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2 YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAg ICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAgIGlmICh2YXItPnUuaW50ZWdlci50 eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVnZXIudHlwZSkgPT0gb2JqZmlsZSkKICAJ dmFyLT51LmludGVnZXIudHlwZQpAQCAtMTYwOTIsNyArOTY3OSw3IEBAIGluZGV4IGQ1NTI0MDIu LmIxMDI2OWMgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgSU5URVJOQUxWQVJf VkFMVUU6Ci1AQCAtMjM4Nyw3ICsyNDUzLDI0IEBAIHZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqZGVjKQorQEAgLTIzOTksNyArMjQ2NSwyNCBA QCB2YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KmRlYykKICBzdHJ1Y3QgdmFsdWUgKgogIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQog IHsKQEAgLTE2MTE4LDcgKzk3MDUsNyBAQCBpbmRleCBkNTUyNDAyLi5iMTAyNjljIDEwMDY0NAog IAogICAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZV9hcmdfdG1wKSA9PSBUWVBFX0NPREVfUkVG KQogICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBl X2FyZ190bXApLAotQEAgLTI0ODUsNCArMjU2OCw4IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5p dGlhbGl6ZWQuIikpOworQEAgLTI0OTcsNCArMjU4MCw4IEBAIFZBUklBQkxFIGlzIGFscmVhZHkg aW5pdGlhbGl6ZWQuIikpOwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNz LCBmdW5jdGlvbl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2lu ZyBoZWxwIG9uIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwg ImZ1bmN0aW9uICIsIDAsICZjbWRsaXN0KTsKQEAgLTE2MTI4LDEwICs5NzE1LDEwIEBAIGluZGV4 IGQ1NTI0MDIuLmIxMDI2OWMgMTAwNjQ0CiArICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkICh2 YWx1ZV90eXBlc19tYXJrX3VzZWQpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIvdmFsdWUuaCBiL2dk Yi92YWx1ZS5oCi1pbmRleCAxMmNiYzBhLi5hNTA4YmY2IDEwMDY0NAoraW5kZXggZWYyY2I0Zi4u YWM5OWE0YiAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5oCiArKysgYi9nZGIvdmFsdWUuaAotQEAg LTM3Miw2ICszNzIsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUg KHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0pOworQEAgLTM3Myw2ICszNzMsMTAgQEAg ZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBlICp0eXBl LCBET1VCTEVTVCBudW0pOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxv YXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBjb25zdCBnZGJfYnl0ZSAqZGVjYnl0ZXMp OwogIApAQCAtMTYxNDIsNyArOTcyOSw3IEBAIGluZGV4IDEyY2JjMGEuLmE1MDhiZjYgMTAwNjQ0 CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXQgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JF X0FERFIgYWRkcik7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXRfbGF6eSAoc3RydWN0 IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICAKLUBAIC03MjksNyArNzMzLDcgQEAgZXh0 ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGludCk7 CitAQCAtNzMzLDcgKzczNyw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRl X3NwYWNlX2luX2luZmVyaW9yIChpbnQpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX29m X2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29tcGxhaW4pOwogIAogIGV4dGVybiBzdHJ1 Y3QgdmFsdWUgKnZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwK QEAgLTE2MTUyLDcgKzk3MzksNyBAQCBpbmRleCAxMmNiYzBhLi5hNTA4YmY2IDEwMDY0NAogIC8q IFVzZXIgZnVuY3Rpb24gaGFuZGxlci4gICovCiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3Zhcm9iai5j IGIvZ2RiL3Zhcm9iai5jCi1pbmRleCBiOWI4ZTkxLi5hODFkMjVjIDEwMDY0NAoraW5kZXggMjU1 MThkNC4uY2I1ZDhhMiAxMDA2NDQKIC0tLSBhL2dkYi92YXJvYmouYwogKysrIGIvZ2RiL3Zhcm9i ai5jCiBAQCAtMjYsNiArMjYsOCBAQAoKZGlmZiAtLWdpdCBhL2dkYi1iejU1NTA3Ni1nY29yZS1z bWFsbC1oZWlnaHQucGF0Y2ggYi9nZGItYno1NTUwNzYtZ2NvcmUtc21hbGwtaGVpZ2h0LnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2FkNjZiLi4wMDAwMDAwCi0tLSBhL2dk Yi1iejU1NTA3Ni1nY29yZS1zbWFsbC1oZWlnaHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx MiArMCwwIEBACi0tLS0gYS9nZGIvZ2RiX2djb3JlLnNoCi0rKysgYi9nZGIvZ2RiX2djb3JlLnNo Ci1AQCAtNjQsNiArNjQsOSBAQCBmb3IgcGlkIGluICQqCi0gZG8KLSAJIyBXcml0ZSBnZGIgc2Ny aXB0IGZvciBwaWQgJHBpZC4gIAotIAljYXQgPj4kdG1wZmlsZSA8PEVPRgotK3NldCBwYWdpbmF0 aW9uIG9mZgotK3NldCB3aWR0aCAwCi0rc2V0IGhlaWdodCAwCi0gYXR0YWNoICRwaWQKLSBnY29y ZSAkbmFtZS4kcGlkCi0gZGV0YWNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1w cmludC0yZC12ZWN0b3JzLnBhdGNoIGIvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0 b3JzLnBhdGNoCmluZGV4IGYxYTg5NzMuLmNlZDc4ZDIgMTAwNjQ0Ci0tLSBhL2dkYi1iejU2Mjc2 My1wcmV0dHktcHJpbnQtMmQtdmVjdG9ycy5wYXRjaAorKysgYi9nZGItYno1NjI3NjMtcHJldHR5 LXByaW50LTJkLXZlY3RvcnMucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogCSogZ2RiLnB5dGhv bi9wcjEwNjU5LmV4cC4gIE5ldyBmaWxlLgogCSogZ2RiLnB5dGhvbi9wcjEwNjU5LnB5OiBOZXcg ZmlsZS4KIAotSW5kZXg6IGdkYi03LjEvZ2RiL3ZhbHByaW50LmgKK0luZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi92YWxwcmludC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dk Yi92YWxwcmludC5oCTIwMTAtMDYtMzAgMTQ6MDI6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMS9nZGIvdmFscHJpbnQuaAkyMDEwLTA2LTMwIDE0OjM1OjI0LjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdmFscHJpbnQuaAkyMDEwLTExLTAzIDE1 OjIxOjU3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3ZhbHBy aW50LmgJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC05MCw2ICs5MCw5 IEBAIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zCiAgCiAgICAvKiBJZiBub256ZXJvLCBwcmlu dCB0aGUgdmFsdWUgaW4gInN1bW1hcnkiIGZvcm0uICAqLwpAQCAtMjYsMTEgKzI2LDExIEBAIElu ZGV4OiBnZGItNy4xL2dkYi92YWxwcmludC5oCiAgfTsKICAKICAvKiBUaGUgZ2xvYmFsIHByaW50 IG9wdGlvbnMgc2V0IGJ5IHRoZSB1c2VyLiAgSW4gZ2VuZXJhbCB0aGlzIHNob3VsZAotSW5kZXg6 IGdkYi03LjEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCitJbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xLm9yaWcvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTAtMDYtMzAgMTQ6MDE6NDAu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJ MjAxMC0wNi0zMCAxNDozNDo0OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zODUsNyArMzg1LDggQEAg cHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAorLS0tIGdkYi03LjIuNTAu MjAxMDExMTYub3JpZy9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMC0xMS0xMiAyMTo0 OTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9weXRob24v cHktcHJldHR5cHJpbnQuYwkyMDEwLTExLTE2IDA4OjM2OjMyLjAwMDAwMDAwMCArMDEwMAorQEAg LTQ5OSw3ICs0OTksOCBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmplY3QgKnByaW50ZXIsIGNvbnN0 CiAgCiAgICAvKiBVc2UgdGhlIHByZXR0eXByaW50X2FycmF5cyBvcHRpb24gaWYgd2UgYXJlIHBy aW50aW5nIGFuIGFycmF5LAogICAgICAgYW5kIHRoZSBwcmV0dHkgb3B0aW9uIG90aGVyd2lzZS4g ICovCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy4xL2dkYi9weXRob24vcHktcHJldHR5 cHJpbnQuYwogIAogICAgLyogTWFudWZhY3R1cmUgYSBkdW1teSBQeXRob24gZnJhbWUgdG8gd29y ayBhcm91bmQgUHl0aG9uIDIuNCBidWcsCiAgICAgICB3aGVyZSBpdCBpbnNpc3RzIG9uIGhhdmlu ZyBhIG5vbi1OVUxMIHRzdGF0ZS0+ZnJhbWUgd2hlbgotQEAgLTM5Nyw2ICszOTgsOSBAQCBwcmlu dF9jaGlsZHJlbiAoUHlPYmplY3QgKnByaW50ZXIsIGNvbnN0CitAQCAtNTExLDYgKzUxMiw5IEBA IHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKICAgICAgICBnb3RvIGRv bmU7CiAgICAgIH0KICAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGZyYW1lKTsKQEAgLTUwLDcg KzUwLDcgQEAgSW5kZXg6IGdkYi03LjEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCiAgCiAg ICBkb25lX2ZsYWcgPSAwOwogICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMtPnByaW50X21heDsg KytpKQotQEAgLTQzMSwxMiArNDM1LDIzIEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJp bnRlciwgY29uc3QKK0BAIC01NDUsMTIgKzU0OSwyMyBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmpl Y3QgKnByaW50ZXIsIGNvbnN0CiAgCSAzLiBPdGhlci4gIEFsd2F5cyBwcmludCBhICIsIi4gICov CiAgICAgICAgaWYgKGkgPT0gMCkKICAJewpAQCAtNzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcu MS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKICAgICAgICBlbHNlIGlmICghIGlzX21hcCB8 fCBpICUgMiA9PSAwKQogIAlmcHV0c19maWx0ZXJlZCAocHJldHR5ID8gIiwiIDogIiwgIiwgc3Ry ZWFtKTsKICAKLUBAIC00NjUsNiArNDgwLDEwIEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAq cHJpbnRlciwgY29uc3QKK0BAIC01NzksNiArNTk0LDEwIEBAIHByaW50X2NoaWxkcmVuIChQeU9i amVjdCAqcHJpbnRlciwgY29uc3QKICAKICAgICAgICBpZiAoaXNfbWFwICYmIGkgJSAyID09IDAp CiAgCWZwdXRzX2ZpbHRlcmVkICgiWyIsIHN0cmVhbSk7CkBAIC05MCw3ICs5MCw3IEBAIEluZGV4 OiBnZGItNy4xL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwogICAgICAgIGVsc2UgaWYgKGlz X2FycmF5KQogIAl7CiAgCSAgLyogV2UgcHJpbnQgdGhlIGluZGV4LCBub3Qgd2hhdGV2ZXIgdGhl IGNoaWxkIG1ldGhvZAotQEAgLTUzOSw3ICs1NTgsMTIgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2Jq ZWN0ICpwcmludGVyLCBjb25zdAorQEAgLTY1NSw3ICs2NzQsMTIgQEAgcHJpbnRfY2hpbGRyZW4g KFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAogIAkgIGZwdXRzX2ZpbHRlcmVkICgiXG4iLCBzdHJl YW0pOwogIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CiAg CX0KQEAgLTEwNCwxNSArMTA0LDE1IEBAIEluZGV4OiBnZGItNy4xL2dkYi9weXRob24vcHktcHJl dHR5cHJpbnQuYwogICAgICB9CiAgCiAgIGRvbmU6Ci1AQCAtNTYxLDYgKzU4NSw3IEBAIGFwcGx5 X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnQKK0BAIC02NzgsNiArNzAyLDcgQEAg YXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdAogICAgc3RydWN0IGNsZWFu dXAgKmNsZWFudXBzOwogICAgaW50IHJlc3VsdCA9IDA7Ci0gICBpbnQgaXNfcHlfbm9uZSA9IDA7 CisgICBlbnVtIHN0cmluZ19yZXByX3Jlc3VsdCBwcmludF9yZXN1bHQ7CiArICBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9uc19jb3B5OwogICAgY2xlYW51cHMgPSBlbnN1cmVfcHl0 aG9uX2VudiAoZ2RiYXJjaCwgbGFuZ3VhZ2UpOwogIAogICAgLyogSW5zdGFudGlhdGUgdGhlIHBy aW50ZXIuICAqLwotQEAgLTU4MiwxMiArNjA3LDIzIEBAIGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRl ciAoc3RydWN0IHR5cGUgKnQKK0BAIC03MDksOSArNzM0LDIxIEBAIGFwcGx5X3ZhbF9wcmV0dHlf cHJpbnRlciAoc3RydWN0IHR5cGUgKnQKICAKICAgIC8qIElmIHdlIGFyZSBwcmludGluZyBhIG1h cCwgd2Ugd2FudCBzb21lIHNwZWNpYWwgZm9ybWF0dGluZy4gICovCiAgICBoaW50ID0gZ2RicHlf Z2V0X2Rpc3BsYXlfaGludCAocHJpbnRlcik7CkBAIC0xMjgsMjEgKzEyOCwxNiBAQCBJbmRleDog Z2RiLTcuMS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKICAgIG1ha2VfY2xlYW51cCAoZnJl ZV9jdXJyZW50X2NvbnRlbnRzLCAmaGludCk7CiAgCiAgICAvKiBQcmludCB0aGUgc2VjdGlvbiAq LwotLSAgaXNfcHlfbm9uZSA9IHByaW50X3N0cmluZ19yZXByIChwcmludGVyLCBoaW50LCBzdHJl YW0sIHJlY3Vyc2UsCi0tCQkJCSAgb3B0aW9ucywgbGFuZ3VhZ2UsIGdkYmFyY2gpOwotLSAgcHJp bnRfY2hpbGRyZW4gKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgbGFu Z3VhZ2UsCi0rICBpc19weV9ub25lID0gb3B0aW9uc19jb3B5LT5wcmV0dHlwcmludF9tYXRyaXgg PwotKyAgICAxIDogcHJpbnRfc3RyaW5nX3JlcHIgKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwKLSsJ CQkgICByZWN1cnNlLCBvcHRpb25zX2NvcHksCi0rCQkJICAgbGFuZ3VhZ2UsIGdkYmFyY2gpOwot KyAgcHJpbnRfY2hpbGRyZW4gKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9u c19jb3B5LCBsYW5ndWFnZSwKLSAJCSAgaXNfcHlfbm9uZSk7Ci0gCi0gICByZXN1bHQgPSAxOwot SW5kZXg6IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkuY2MKKysgIGlm IChvcHRpb25zX2NvcHktPnByZXR0eXByaW50X21hdHJpeCkKKysgICAgcHJpbnRfcmVzdWx0ID0g c3RyaW5nX3JlcHJfbm9uZTsKKytlbHNlIC8qIFJlZCBIYXQgMkQgbWF0cml4IHBhdGNoICovCisg ICBwcmludF9yZXN1bHQgPSBwcmludF9zdHJpbmdfcmVwciAocHJpbnRlciwgaGludCwgc3RyZWFt LCByZWN1cnNlLAorIAkJCQkgICAgb3B0aW9ucywgbGFuZ3VhZ2UsIGdkYmFyY2gpOworICAgaWYg KHByaW50X3Jlc3VsdCAhPSBzdHJpbmdfcmVwcl9lcnJvcikKK0luZGV4OiBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LmNjCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5jYwkyMDEwLTA2LTMwIDE0OjM0 OjQ5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3ByMTA2NTkuY2MJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAx MDAKIEBAIC0wLDAgKzEsNDMgQEAKICsjaW5jbHVkZSA8bGlzdD4KICsjaW5jbHVkZSA8dmVjdG9y PiAgLy8gL3Vzci9pbmNsdWRlL2MrKy80LjQuMS9iaXRzL3ZlY3Rvci50Y2MKQEAgLTE4NywxMCAr MTgyLDEwIEBAIEluZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5 LmNjCiArICAKICsgIHJldHVybiAwOyAgLy8gYnJlYWsKICt9Ci1JbmRleDogZ2RiLTcuMS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LmV4cAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkuZXhwCTIwMTAtMDYtMzAgMTQ6MzQ6 NDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHIxMDY1OS5leHAJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAx MDAKIEBAIC0wLDAgKzEsODIgQEAKICsjQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCkBAIC0yNzQsMTAgKzI2OSwxMCBAQCBJbmRleDogZ2RiLTcuMS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5leHAKICsjIAogKwogKwotSW5kZXg6IGdkYi03 LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkucHkKK0luZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LnB5CiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5weQkyMDEwLTA2LTMwIDE0 OjM0OjQ5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkucHkJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAg KzAxMDAKIEBAIC0wLDAgKzEsMTA5IEBACiArIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0zODgsMTEgKzM4MywxMSBAQCBJbmRl eDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5weQogK2Zha2VfcHJl dHR5X3ByaW50ZXJzX2RpY3QgPSB7fQogKwogK2J1aWxkX2xpYmZha2VjeHhfZGljdGlvbmFyeSAo KQotSW5kZXg6IGdkYi03LjEvZ2RiL3ZhbHByaW50LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi92YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi92YWxw cmludC5jCTIwMTAtMDYtMzAgMTM6NTE6MjYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9n ZGIvdmFscHJpbnQuYwkyMDEwLTA2LTMwIDE0OjM1OjQxLjAwMDAwMDAwMCArMDIwMAotQEAgLTgz LDcgKzgzLDggQEAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgdXNlcl9wcmludF9vcAorLS0t IGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdmFscHJpbnQuYwkyMDEwLTExLTE2IDA3OjU0 OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3ZhbHByaW50 LmMJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC04NSw3ICs4NSw4IEBA IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIHVzZXJfcHJpbnRfb3AKICAgIDEsCQkJCS8qIHN0 YXRpY19maWVsZF9wcmludCAqLwogICAgMSwJCQkJLyogcGFzY2FsX3N0YXRpY19maWVsZF9wcmlu dCAqLwogICAgMCwJCQkJLyogcmF3ICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTc1MjkyLWRlbGF5 ZWQtcGh5c25hbWUucGF0Y2ggYi9nZGItYno1NzUyOTItZGVsYXllZC1waHlzbmFtZS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1MzkxZC4uMDAwMDAwMAotLS0gYS9nZGIt Yno1NzUyOTItZGVsYXllZC1waHlzbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzMCAr MCwwIEBACi1NYWRlIG1vcmUgc2FmZSAoYnV0IGxlc3MgZWZmZWN0aXZlKSBieSB1c2luZyBhIGxp bmtlZCBsaXN0LgotCi1CYXNlZCBvbjoKLQlSZTogW1JGQV0gRGVsYXllZCBwaHlzbmFtZSBjb21w dXRhdGlvbgotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA1L21z ZzAwMjQ4Lmh0bWwKLQotTmVpdGhlciBpdHMgb2JzdGFjay1sZWFrLnBhdGNoIG5vcgotCVtwYXRj aF0gRml4IGR1cGxpY2F0ZSB0eXBlcyBmb3Igc2luZ2xlIERJRQotCWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA1L21zZzAwMjcxLmh0bWwKLWlzIG5lZWRlZCBhcyB0 aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgotCi1JbmRleDogZ2RiLTcuMS45MC4yMDEw MDcyMS9nZGIvZHdhcmYycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcy MS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0yMiAxMTo1OToxOS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0yMiAx MjowMDowOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNTMsNiArMjUzLDI4IEBAIHN0cnVjdCBjb21w X3VuaXRfaGVhZAotICAgdW5zaWduZWQgaW50IGZpcnN0X2RpZV9vZmZzZXQ7Ci0gfTsKLSAKLSsv KiBUeXBlIHVzZWQgZm9yIGRlbGF5aW5nIGNvbXB1dGF0aW9uIG9mIG1ldGhvZCBwaHlzbmFtZXMu Ci0rICAgU2VlIGNvbW1lbnRzIGZvciBjb21wdXRlX2RlbGF5ZWRfcGh5c25hbWVzLiAgKi8KLStz dHJ1Y3QgZGVsYXllZF9tZXRob2RfaW5mbwotK3sKLSsgIHN0cnVjdCBkZWxheWVkX21ldGhvZF9p bmZvICpuZXh0OwotKwotKyAgLyogVGhlIHR5cGUgdG8gd2hpY2ggdGhlIG1ldGhvZCBpcyBhdHRh Y2hlZCwgaS5lLiwgaXRzIHBhcmVudCBjbGFzcy4gICovCi0rICBzdHJ1Y3QgdHlwZSAqdHlwZTsK LSsKLSsgIC8qIFRoZSBpbmRleCBvZiB0aGUgbWV0aG9kIGluIHRoZSB0eXBlJ3MgZnVuY3Rpb24g ZmllbGRsaXN0cy4gICovCi0rICBpbnQgZm5maWVsZF9pbmRleDsKLSsKLSsgIC8qIFRoZSBpbmRl eCBvZiB0aGUgbWV0aG9kIGluIHRoZSBmaWVsZGxpc3QuICAqLwotKyAgaW50IGluZGV4OwotKwot KyAgLyogVGhlIG5hbWUgb2YgdGhlIERJRS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwotKwot KyAgLyogIFRoZSBESUUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWV0aG9kLiAgKi8KLSsgIHN0cnVj dCBkaWVfaW5mbyAqZGllOwotK307Ci0rCi0gLyogSW50ZXJuYWwgc3RhdGUgd2hlbiBkZWNvZGlu ZyBhIHBhcnRpY3VsYXIgY29tcGlsYXRpb24gdW5pdC4gICovCi0gc3RydWN0IGR3YXJmMl9jdQot IHsKLUBAIC0zMzEsNiArMzUzLDEwIEBAIHN0cnVjdCBkd2FyZjJfY3UKLSAgIC8qIEhlYWRlciBk YXRhIGZyb20gdGhlIGxpbmUgdGFibGUsIGR1cmluZyBmdWxsIHN5bWJvbCBwcm9jZXNzaW5nLiAg Ki8KLSAgIHN0cnVjdCBsaW5lX2hlYWRlciAqbGluZV9oZWFkZXI7Ci0gCi0rICAvKiBBIGxpc3Qg b2YgbWV0aG9kcyB3aGljaCBuZWVkIHRvIGhhdmUgcGh5c25hbWVzIGNvbXB1dGVkCi0rICAgICBh ZnRlciBhbGwgdHlwZSBpbmZvcm1hdGlvbiBoYXMgYmVlbiByZWFkLiAgKi8KLSsgIHN0cnVjdCBk ZWxheWVkX21ldGhvZF9pbmZvICptZXRob2RfbGlzdDsKLSsKLSAgIC8qIE1hcmsgdXNlZCB3aGVu IHJlbGVhc2luZyBjYWNoZWQgZGllcy4gICovCi0gICB1bnNpZ25lZCBpbnQgbWFyayA6IDE7Ci0g Ci1AQCAtMTIzOSw2ICsxMjY1LDkgQEAgc3RhdGljIGdkYl9ieXRlICpwYXJ0aWFsX3JlYWRfY29t cF91bml0XwotIHN0YXRpYyB2b2lkIGluaXRfY3VfZGllX3JlYWRlciAoc3RydWN0IGRpZV9yZWFk ZXJfc3BlY3MgKnJlYWRlciwKLSAJCQkJc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotIAotK3N0YXRp YyBjb25zdCBjaGFyICpkd2FyZjJfcGh5c25hbWUgKGNoYXIgKm5hbWUsIHN0cnVjdCBkaWVfaW5m byAqZGllLAotKwkJCQkgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotKwotICNpZiBXT1JEU19C SUdFTkRJQU4KLSAKLSAvKiBDb252ZXJ0IFZBTFVFIGJldHdlZW4gYmlnLSBhbmQgbGl0dGxlLWVu ZGlhbi4gICovCi1AQCAtNDEwMyw2ICs0MTMyLDU4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0 cnVjdCBkd2FyZjJfcGVyX2MKLSAgIGRpc2NhcmRfY2xlYW51cHMgKGZyZWVfY3VfY2xlYW51cCk7 Ci0gfQotIAotKy8qIEFkZCBhIERJRSB0byB0aGUgZGVsYXllZCBwaHlzbmFtZSBsaXN0LiAgKi8K LStzdGF0aWMgdm9pZAotK2FkZF90b19tZXRob2RfbGlzdCAoc3RydWN0IHR5cGUgKnR5cGUsIGlu dCBmbmZpZWxkX2luZGV4LCBpbnQgaW5kZXgsCi0rCQkgICAgY29uc3QgY2hhciAqbmFtZSwgc3Ry dWN0IGRpZV9pbmZvICpkaWUsCi0rCQkgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAg c3RydWN0IGRlbGF5ZWRfbWV0aG9kX2luZm8gKm1pOwotKwotKyAgbWkgPSB4bWFsbG9jIChzaXpl b2YgKCptaSkpOwotKyAgbWktPm5leHQgPSBjdS0+bWV0aG9kX2xpc3Q7Ci0rICBjdS0+bWV0aG9k X2xpc3QgPSBtaTsKLSsgIG1pLT50eXBlID0gdHlwZTsKLSsgIG1pLT5mbmZpZWxkX2luZGV4ID0g Zm5maWVsZF9pbmRleDsKLSsgIG1pLT5pbmRleCA9IGluZGV4OwotKyAgbWktPm5hbWUgPSBuYW1l OwotKyAgbWktPmRpZSA9IGRpZTsKLSt9Ci0rCi0rLyogQ29tcHV0ZSB0aGUgcGh5c25hbWVzIG9m IGFueSBtZXRob2RzIG9uIHRoZSBDVSdzIG1ldGhvZCBsaXN0LgotKwotKyAgIFRoZSBjb21wdXRh dGlvbiBvZiBtZXRob2QgcGh5c25hbWVzIGlzIGRlbGF5ZWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhl Ci0rICAgKGJhZCkgY29uZGl0aW9uIHRoYXQgb25lIG9mIHRoZSBtZXRob2QncyBmb3JtYWwgcGFy YW1ldGVycyBpcyBvZiBhbiBhcyB5ZXQKLSsgICBpbmNvbXBsZXRlIHR5cGUuICAqLwotK3N0YXRp YyB2b2lkCi0rY29tcHV0ZV9kZWxheWVkX3BoeXNuYW1lcyAoc3RydWN0IGR3YXJmMl9jdSAqY3Up Ci0rewotKyAgc3RydWN0IGRlbGF5ZWRfbWV0aG9kX2luZm8gKm1pOwotKyAgCi0rICBmb3IgKG1p ID0gY3UtPm1ldGhvZF9saXN0OyBtaTsgbWkgPSBtaS0+bmV4dCkKLSsgICAgewotKyAgICAgIGNo YXIgKnBoeXNuYW1lOwotKyAgICAgIHN0cnVjdCBmbl9maWVsZGxpc3QgKmZuX2ZscAotKwk9ICZU WVBFX0ZOX0ZJRUxETElTVCAobWktPnR5cGUsIG1pLT5mbmZpZWxkX2luZGV4KTsKLSsgICAgICBw aHlzbmFtZSA9IChjaGFyICopIGR3YXJmMl9waHlzbmFtZSAoKGNoYXIgKikgbWktPm5hbWUsIG1p LT5kaWUsIGN1KTsKLSsgICAgICBmbl9mbHAtPmZuX2ZpZWxkc1ttaS0+aW5kZXhdLnBoeXNuYW1l ID0gcGh5c25hbWUgPyBwaHlzbmFtZSA6ICIiOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lk Ci0rbWV0aG9kX2xpc3RfY2xlYW51cCAodm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCBkZWxheWVk X21ldGhvZF9pbmZvICoqbWV0aG9kX2xpc3RfcG9pbnRlciA9IGFyZzsKLSsKLSsgIHdoaWxlICgq bWV0aG9kX2xpc3RfcG9pbnRlcikKLSsgICAgewotKyAgICAgIHN0cnVjdCBkZWxheWVkX21ldGhv ZF9pbmZvICptaSA9ICptZXRob2RfbGlzdF9wb2ludGVyOwotKwotKyAgICAgICptZXRob2RfbGlz dF9wb2ludGVyID0gbWktPm5leHQ7Ci0rICAgICAgeGZyZWUgKG1pKTsKLSsgICAgfQotK30KLSsK LSAvKiBHZW5lcmF0ZSBmdWxsIHN5bWJvbCBpbmZvcm1hdGlvbiBmb3IgUFNUIGFuZCBDVSwgd2hv c2UgRElFcyBoYXZlCi0gICAgYWxyZWFkeSBiZWVuIGxvYWRlZCBpbnRvIG1lbW9yeS4gICovCi0g Ci1AQCAtNDExMyw3ICs0MTk0LDcgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3 YXJmMl9wZQotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPm9iamZpbGU7Ci0g ICBDT1JFX0FERFIgbG93cGMsIGhpZ2hwYzsKLSAgIHN0cnVjdCBzeW10YWIgKnN5bXRhYjsKLS0g IHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG8sICpk ZWxheWVkX2xpc3RfY2xlYW51cDsKLSAgIENPUkVfQUREUiBiYXNlYWRkcjsKLSAKLSAgIGJhc2Vh ZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAo b2JqZmlsZSkpOwotQEAgLTQxMjMsMTEgKzQyMDQsMjIgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5p dCAoc3RydWN0IGR3YXJmMl9wZQotIAotICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmZmlsZV9zeW1i b2xzOwotIAotKyAgLyogSWYgbWV0aG9kcyB3ZXJlIGZvdW5kIGluIHRoZSBwYXJ0aWFsIHN5bWJv bCB0YWJsZSwgd2UgYWxsb2NhdGUgb25lCi0rICAgICBiaWcgYnVmZmVyIHRvIGhvbGQgdGhlIGVu dGlyZSBkZWxheWVkIGxpc3QgZm9yIHRoZSBDVS4gICovCi0rICBkZWxheWVkX2xpc3RfY2xlYW51 cCA9IG1ha2VfY2xlYW51cCAobWV0aG9kX2xpc3RfY2xlYW51cCwKLSsJCQkJICAgICAgICZjdS0+ bWV0aG9kX2xpc3QpOwotKwotICAgZHdhcmYyX2ZpbmRfYmFzZV9hZGRyZXNzIChjdS0+ZGllcywg Y3UpOwotIAotICAgLyogRG8gbGluZSBudW1iZXIgZGVjb2RpbmcgaW4gcmVhZF9maWxlX3Njb3Bl ICgpICovCi0gICBwcm9jZXNzX2RpZSAoY3UtPmRpZXMsIGN1KTsKLSAKLSsgIC8qIE5vdyB0aGF0 IHdlIGhhdmUgcHJvY2Vzc2VkIGFsbCB0aGUgRElFcyBpbiB0aGUgQ1UsIGFsbCB0aGUgdHlwZXMg Ci0rICAgICBzaG91bGQgYmUgY29tcGxldGUsIGFuZCBpdCBzaG91bGQgbm93IGJlIHNhZmUgdG8g Y29tcHV0ZSBhbGwgb2YgdGhlCi0rICAgICBwaHlzbmFtZXMuICAqLwotKyAgY29tcHV0ZV9kZWxh eWVkX3BoeXNuYW1lcyAoY3UpOwotKyAgZG9fY2xlYW51cHMgKGRlbGF5ZWRfbGlzdF9jbGVhbnVw KTsKLSsKLSAgIC8qIFNvbWUgY29tcGlsZXJzIGRvbid0IGRlZmluZSBhIERXX0FUX2hpZ2hfcGMg YXR0cmlidXRlIGZvciB0aGUKLSAgICAgIGNvbXBpbGF0aW9uIHVuaXQuICBJZiB0aGUgRFdfQVRf aGlnaF9wYyBpcyBtaXNzaW5nLCBzeW50aGVzaXplCi0gICAgICBpdCwgYnkgc2Nhbm5pbmcgdGhl IERJRSdzIGJlbG93IHRoZSBjb21waWxhdGlvbiB1bml0LiAgKi8KLUBAIC01ODM4LDcgKzU5MzAs NiBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCi0gICBpbnQgaTsK LSAgIHN0cnVjdCBmbl9maWVsZCAqZm5wOwotICAgY2hhciAqZmllbGRuYW1lOwotLSAgY2hhciAq cGh5c25hbWU7Ci0gICBzdHJ1Y3QgbmV4dGZuZmllbGQgKm5ld19mbmZpZWxkOwotICAgc3RydWN0 IHR5cGUgKnRoaXNfdHlwZTsKLSAKLUBAIC01ODUwLDkgKzU5NDEsNiBAQCBkd2FyZjJfYWRkX21l bWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCi0gICBpZiAoZmllbGRuYW1lID09IE5VTEwpCi0g ICAgIHJldHVybjsKLSAKLS0gIC8qIEdldCB0aGUgbWFuZ2xlZCBuYW1lLiAgKi8KLS0gIHBoeXNu YW1lID0gKGNoYXIgKikgZHdhcmYyX3BoeXNuYW1lIChmaWVsZG5hbWUsIGRpZSwgY3UpOwotLQot ICAgLyogTG9vayB1cCBtZW1iZXIgZnVuY3Rpb24gbmFtZSBpbiBmaWVsZGxpc3QuICAqLwotICAg Zm9yIChpID0gMDsgaSA8IGZpcC0+bmZuZmllbGRzOyBpKyspCi0gICAgIHsKLUBAIC01ODc4LDcg KzU5NjYsNyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCi0gICAg ICAgZmxwLT5uYW1lID0gZmllbGRuYW1lOwotICAgICAgIGZscC0+bGVuZ3RoID0gMDsKLSAgICAg ICBmbHAtPmhlYWQgPSBOVUxMOwotLSAgICAgIGZpcC0+bmZuZmllbGRzKys7Ci0rICAgICAgaSA9 IGZpcC0+bmZuZmllbGRzKys7Ci0gICAgIH0KLSAKLSAgIC8qIENyZWF0ZSBhIG5ldyBtZW1iZXIg ZnVuY3Rpb24gZmllbGQgYW5kIGNoYWluIGl0IHRvIHRoZSBmaWVsZCBsaXN0Ci1AQCAtNTg5Miw5 ICs1OTgwLDE5IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKLSAK LSAgIC8qIEZpbGwgaW4gdGhlIG1lbWJlciBmdW5jdGlvbiBmaWVsZCBpbmZvLiAgKi8KLSAgIGZu cCA9ICZuZXdfZm5maWVsZC0+Zm5maWVsZDsKLS0gIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxs b2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpmaWxlLCBzbyB3ZSBkb24ndAotLSAgICAgbmVlZCB0 byBkdXBsaWNhdGUgaXQgZm9yIHRoZSB0eXBlLiAgKi8KLS0gIGZucC0+cGh5c25hbWUgPSBwaHlz bmFtZSA/IHBoeXNuYW1lIDogIiI7Ci0rCi0rICAvKiBEZWxheSBwcm9jZXNzaW5nIG9mIHRoZSBw aHlzbmFtZSB1bnRpbCBsYXRlci4gICovCi0rICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdl X2NwbHVzIHx8IGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQotKyAgICB7Ci0rICAgICAg YWRkX3RvX21ldGhvZF9saXN0ICh0eXBlLCBpLCBmbHAtPmxlbmd0aCAtIDEsIGZpZWxkbmFtZSwK LSsJCQkgIGRpZSwgY3UpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICpw aHlzbmFtZSA9IChjaGFyICopIGR3YXJmMl9waHlzbmFtZSAoZmllbGRuYW1lLCBkaWUsIGN1KTsK LSsgICAgICBmbnAtPnBoeXNuYW1lID0gcGh5c25hbWUgPyBwaHlzbmFtZSA6ICIiOwotKyAgICB9 Ci0rCi0gICBmbnAtPnR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKLSAgIHRoaXNfdHlwZSA9 IHJlYWRfdHlwZV9kaWUgKGRpZSwgY3UpOwotICAgaWYgKHRoaXNfdHlwZSAmJiBUWVBFX0NPREUg KHRoaXNfdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCi1AQCAtNTkyMCw3ICs2MDE4LDcgQEAgZHdh cmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAotICAgICB9Ci0gICBlbHNlCi0g ICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygibWVtYmVyIGZ1bmN0aW9uIHR5 cGUgbWlzc2luZyBmb3IgJyVzJyIpLAotLQkgICAgICAgcGh5c25hbWUpOwotKwkgICAgICAgZHdh cmYyX2Z1bGxfbmFtZSAoZmllbGRuYW1lLCBkaWUsIGN1KSk7Ci0gCi0gICAvKiBHZXQgZmNvbnRl eHQgZnJvbSBEV19BVF9jb250YWluaW5nX3R5cGUgaWYgcHJlc2VudC4gICovCi0gICBpZiAoZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfY29udGFpbmluZ190eXBlLCBjdSkgIT0gTlVMTCkKLUBAIC04 Mjk5LDcgKzgzOTcsOSBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAq Ci0gCQkgICAgICB8fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19pbnRlcmZhY2VfdHlwZQotIAkJ ICAgICAgfHwgbGFzdF9kaWUtPnRhZyA9PSBEV19UQUdfc3RydWN0dXJlX3R5cGUKLSAJCSAgICAg IHx8IGxhc3RfZGllLT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUpKQotLQkgICAgICB8fCAoY3Ut Pmxhbmd1YWdlID09IGxhbmd1YWdlX2FkYQotKwkgICAgICB8fCAoKGN1LT5sYW5ndWFnZSA9PSBs YW5ndWFnZV9hZGEKLSsJCSAgIHx8IGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwotKwkJ ICAgfHwgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpCi0gCQkgICYmIChsYXN0X2RpZS0+ dGFnID09IERXX1RBR19zdWJwcm9ncmFtCi0gCQkgICAgICB8fCBsYXN0X2RpZS0+dGFnID09IERX X1RBR19sZXhpY2FsX2Jsb2NrKSkpKQotIAl7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS45MC4y MDEwMDcyMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCTIwMTAtMDctMjIgMTE6 NTk6MjkuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDM1NSBAQAotKy8qIENvcHlyaWdodCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBDb21waWxlZCBmcm9tOgotKwotKyAgICBu YW1lc3BhY2UgTgotKyAgICB7Ci0rICAgICAgY2xhc3MgQwotKyAgICAgIHsKLSsgICAgICBwdWJs aWM6Ci0rICAgICAgICB0eXBlZGVmIHZvaWQgKCp0KSAoQyk7Ci0rICAgICAgICBDICh0KSB7fQot KyAgICAgIH07Ci0rICAgICAgdHlwZWRlZiBDOjp0IHU7Ci0rICAgICAgdSBmOwotKyAgICAgIEMg YyAoZik7Ci0rICAgIH07Ci0rCi0rICAgIGludAotKyAgICBtYWluICgpCi0rICAgIHsKLSsgICAg ICByZXR1cm4gMDsKLSsgICAgfQotKyovCi0rCi0rCS50ZXh0Ci0rX1pOMU4xY0U6CQotKwkuc2Vj dGlvbgkuZGVidWdfaW5mbwotK2Q6Ci0rCS5sb25nCS5MZGVidWdfaW5mb19lbmQgLSAxZiAvKiBM ZW5ndGggb2YgQ1UgaW5mbyAqLwotKzE6Ci0rCS4yYnl0ZQkweDIJCS8qIERXQVJGIHZlcnNpb24g bnVtYmVyICovCi0rCS5sb25nCS5MZGVidWdfYWJicmV2MAkvKiBBYmJyZXYgb2Zmc2V0ICovCi0r CS5ieXRlCTB4NAkJLyogUG9pbnRlciBzaXplICovCi0rZGllYjoJLnVsZWIxMjggMHgxCQkvKiBE V19UQUdfY29tcGlsZV91bml0ICovCi0rCS5sb25nCS5MQVNGNAkJLyogRFdfQVRfcHJvZHVjZXIg Ki8KLSsJLmJ5dGUJMHg0CQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkubG9uZwkuTEFTRjUJCS8q IERXX0FUX25hbWUgKi8KLSsJLmxvbmcJLkxBU0Y2CQkvKiBEV19BVF9jb21wX2RpciAqLwotKwku bG9uZwkweDAJCS8qIERXX0FUX2xvd19wYyAqLwotKwkubG9uZwkweDAJCS8qIERXX0FUX2hpZ2hf cGMgKi8KLSsJLmxvbmcJMHgwCQkvKiBEV19BVF9lbnRyeV9wYyAqLwotK2RpZTI5OgkudWxlYjEy OCAweDIJCS8qIERXX1RBR19uYW1lc3BhY2UgKi8KLSsJLnN0cmluZwkiTiIJCS8qIERXX0FUX25h bWUgKi8KLStkaWUzMjoJLnVsZWIxMjggMHgzCQkvKiBEV19UQUdfY2xhc3NfdHlwZSAqLwotKwku c3RyaW5nCSJDIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJCS8qIERXX0FUX2RlY2xh cmF0aW9uICovCi0rZGllMzY6CS51bGViMTI4IDB4NAkJLyogRFdfVEFHX3R5cGVkZWYgKi8KLSsJ LnN0cmluZwkidSIJCS8qIERXX0FUX25hbWUgKi8KLSsJLmxvbmcJZGllN2UtZAkJLyogRFdfQVRf dHlwZSAqLwotK2RpZTNmOgkudWxlYjEyOCAweDUJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwku c3RyaW5nCSJmIgkJLyogRFdfQVRfbmFtZSAqLwotKwkubG9uZwkuTEFTRjAJCS8qIERXX0FUX01J UFNfbGlua2FnZV9uYW1lICovCi0rCS5sb25nCWRpZTM2LWQJCS8qIERXX0FUX3R5cGUgKi8KLSsJ LmJ5dGUJMHgxCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuYnl0ZQkweDEJCS8qIERXX0FUX2Rl Y2xhcmF0aW9uICovCi0rZGllNGU6CS51bGViMTI4IDB4NQkJLyogRFdfVEFHX3ZhcmlhYmxlICov Ci0rCS5zdHJpbmcJImMiCQkvKiBEV19BVF9uYW1lICovCi0rCS5sb25nCS5MQVNGMQkJLyogRFdf QVRfTUlQU19saW5rYWdlX25hbWUgKi8KLSsJLmxvbmcJZGllNWUtZAkJLyogRFdfQVRfdHlwZSAq LwotKwkuYnl0ZQkweDEJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS5ieXRlCTB4MQkJLyogRFdf QVRfZGVjbGFyYXRpb24gKi8KLSsJLmJ5dGUJMHgwCi0rZGllNWU6CS51bGViMTI4IDB4NgkJLyog RFdfVEFHX2NsYXNzX3R5cGUgKi8KLSsJLmxvbmcJZGllMzItZAkJLyogRFdfQVRfc3BlY2lmaWNh dGlvbiAqLwotKwkuYnl0ZQkweDEJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotK2RpZTZhOgkudWxl YjEyOCAweDcJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCTB4MQkJLyogRFdfQVRf ZXh0ZXJuYWwgKi8KLSsJLnN0cmluZwkiQyIJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJMHgx CQkvKiBEV19BVF9kZWNsYXJhdGlvbiAqLwotK2RpZTcxOgkudWxlYjEyOCAweDgJCS8qIERXX1RB R19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCWRpZThmLWQJCS8qIERXX0FUX3R5cGUgKi8K LSsJLmJ5dGUJMHgxCQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rZGllNzc6CS51bGViMTI4IDB4 OQkJLyogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIgKi8KLSsJLmxvbmcJZGllN2UtZAkJLyogRFdf QVRfdHlwZSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rZGllN2U6CS51bGViMTI4IDB4 YQkJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDQJCS8qIERXX0FUX2J5dGVf c2l6ZSAqLwotKwkubG9uZwlkaWU4NC1kCQkvKiBEV19BVF90eXBlICovCi0rZGllODQ6CS51bGVi MTI4IDB4YgkJLyogRFdfVEFHX3N1YnJvdXRpbmVfdHlwZSAqLwotK2RpZTg5OgkudWxlYjEyOCAw eDkJCS8qIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCWRpZTVlLWQJCS8qIERX X0FUX3R5cGUgKi8KLSsJLmJ5dGUJMHgwCi0rZGllOGY6CS51bGViMTI4IDB4YQkJLyogRFdfVEFH X3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDQJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwku bG9uZwlkaWU1ZS1kCQkvKiBEV19BVF90eXBlICovCi0rZGllOTU6CS51bGViMTI4IDB4YwkJLyog RFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmxvbmcJZGllNmEtZAkJLyogRFdfQVRfc3BlY2lmaWNh dGlvbiAqLwotKwkuYnl0ZQkweDIJCS8qIERXX0FUX2lubGluZSAqLwotK2RpZTlmOgkudWxlYjEy OCAweGQJCS8qIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCS5MQVNGNwkJLyog RFdfQVRfbmFtZSAqLwotKwkubG9uZwlkaWVhZi1kCQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRl CTB4MQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLwotK2RpZWE5OgkudWxlYjEyOCAweDkJCS8qIERX X1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCWRpZTdlLWQJCS8qIERXX0FUX3R5cGUg Ki8KLSsJLmJ5dGUJMHgwCi0rZGllYWY6CS51bGViMTI4IDB4ZQkJLyogRFdfVEFHX2NvbnN0X3R5 cGUgKi8KLSsJLmxvbmcJZGllOGYtZAkJLyogRFdfQVRfdHlwZSAqLwotK2RpZWI0OgkudWxlYjEy OCAweGYJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5sb25nCWRpZTk1LWQJCS8qIERXX0FU X2Fic3RyYWN0X29yaWdpbiAqLwotKwkubG9uZwlfWk4xTjFjRQkvKiBEV19BVF9sb3dfcGMgKi8K LSsJLmxvbmcJX1pOMU4xY0UJLyogRFdfQVRfaGlnaF9wYyAqLwotK2RpZWM5OgkudWxlYjEyOCAw eDEwCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkubG9uZwlkaWU5Zi1kCQkvKiBEV19BVF9h YnN0cmFjdF9vcmlnaW4gKi8KLSsJLmJ5dGUJMmYtMWYJCS8qIERXX0FUX2xvY2F0aW9uICovCi0r MToKLSsJLmJ5dGUJMHg1MAkJLyogRFdfT1BfcmVnMCAqLwotKzI6Ci0rZGllZDE6CS51bGViMTI4 IDB4MTAJCS8qIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCWRpZWE5LWQJCS8q IERXX0FUX2Fic3RyYWN0X29yaWdpbiAqLwotKwkuYnl0ZQkyZi0xZgkJLyogRFdfQVRfbG9jYXRp b24gKi8KLSsxOgotKwkuYnl0ZQkweDUxCQkvKiBEV19PUF9yZWcxICovCi0rMjoKLSsJLmJ5dGUJ MHgwCi0rZGllZGE6CS51bGViMTI4IDB4MTEJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5i eXRlCTB4MQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSsJLmxvbmcJLkxBU0Y4CQkvKiBEV19BVF9u YW1lICovCi0rCS5sb25nCWRpZWYyLWQJCS8qIERXX0FUX3R5cGUgKi8KLSsJLmxvbmcJX1pOMU4x Y0UJLyogRFdfQVRfbG93X3BjICovCi0rCS5sb25nCV9aTjFOMWNFCS8qIERXX0FUX2hpZ2hfcGMg Ki8KLStkaWVmMjoJLnVsZWIxMjggMHgxMgkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYnl0 ZQkweDQJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkuYnl0ZQkweDUJCS8qIERXX0FUX2VuY29k aW5nICovCi0rCS5zdHJpbmcJImludCIJCS8qIERXX0FUX25hbWUgKi8KLStkaWUxNDk6CS51bGVi MTI4IDB4MTYJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkubG9uZwlkaWU0ZS1kCQkvKiBEV19B VF9zcGVjaWZpY2F0aW9uICovCi0rCS5ieXRlCTB4NQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJ LmJ5dGUJMHgzCi0rCS5sb25nCV9aTjFOMWNFCi0rCS5ieXRlCTB4MAotKy5MZGVidWdfaW5mb19l bmQ6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS51bGVi MTI4IDB4MQkJLyogYWJicmV2IGNvZGUqLwotKwkudWxlYjEyOCAweDExCQkvKiBEV19UQUdfY29t cGlsZV91bml0ICovCi0rCS5ieXRlCTB4MQkJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGVi MTI4IDB4MjUJCS8qIERXX0FUX3Byb2R1Y2VyKi8KLSsJLnVsZWIxMjggMHhlCQkvKiBEV19GT1JN X3N0cnAgKi8KLSsJLnVsZWIxMjggMHgxMwkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIx MjggMHhiCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4IDB4MwkJLyogRFdfQVRfbmFt ZSAqLwotKwkudWxlYjEyOCAweGUJCS8qIERXX0ZPUk1fc3RycCAqLwotKwkudWxlYjEyOCAweDFi CQkvKiBEV19BVF9jb21wX2RpciAqLwotKwkudWxlYjEyOCAweGUJCS8qIERXX0ZPUk1fc3RycCAq LwotKwkudWxlYjEyOCAweDExCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjggMHgxCQkv KiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjggMHgxMgkJLyogRFdfQVRfaGlnaF9wYyAqLwot KwkudWxlYjEyOCAweDEJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOCAweDUyCQkvKiBE V19BVF9lbnRyeV9wYyAqLwotKwkudWxlYjEyOCAweDEJCS8qIERXX0ZPUk1fYWRkciAqLwotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MgkJLyogYWJicmV2IGNvZGUgKi8K LSsJLnVsZWIxMjggMHgzOQkJLyogRFdfVEFHX25hbWVzcGFjZSAqLwotKwkuYnl0ZQkweDEJCS8q IERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJ LnVsZWIxMjggMHg4CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJ MHgwCi0rCS51bGViMTI4IDB4MwkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjggMHgyCQkv KiBEV19UQUdfY2xhc3NfdHlwZSAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9u byAqLwotKwkudWxlYjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHg4CQkv KiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOCAweDNjCQkvKiBEV19BVF9kZWNsYXJhdGlv biAqLwotKwkudWxlYjEyOCAweGMJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NAkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgg MHgxNgkJLyogRFdfVEFHX3R5cGVkZWYgKi8KLSsJLmJ5dGUJMHgwCQkvKiBEV19oYXNfY2hpbGRy ZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgzCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4IDB4 OAkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAq LwotKwkudWxlYjEyOCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5i eXRlCTB4MAotKwkudWxlYjEyOCAweDUJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4 MzQJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJl bl9ubyAqLwotKwkudWxlYjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHg4 CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOCAweDIwMDcJCS8qIERXX0FUX01JUFNf bGlua2FnZV9uYW1lICovCi0rCS51bGViMTI4IDB4ZQkJLyogRFdfRk9STV9zdHJwICovCi0rCS51 bGViMTI4IDB4NDkJCS8qIERXX0FUX1RZUEUgKi8KLSsJLnVsZWIxMjggMHgxMwkJLyogRFdfRk9S TV9yZWY0ICovCi0rCS51bGViMTI4IDB4M2YJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS51bGVi MTI4IDB4YwkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4IDB4M2MJCS8qIERXX0FUX2Rl Y2xhcmF0aW9uICovCi0rCS51bGViMTI4IDB4YwkJLyogRFdfRk9STV9mbGFnICovCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg2CQkvKiBhYmJyZXYgY29kZSAqLwotKwku dWxlYjEyOCAweDIJCS8qIERXX1RBR19jbGFzc190eXBlICovCi0rCS5ieXRlCTB4MQkJLyogRFdf aGFzX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDQ3CQkvKiBEV19BVF9zcGVjaWZpY2F0 aW9uICovCi0rCS51bGViMTI4IDB4MTMJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAw eGIJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOCAweGIJCS8qIERXX0ZPUk1fZGF0 YTEgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcJCS8qIGFiYnJl diBjb2RlICovCi0rCS51bGViMTI4IDB4MmUJCS8qIERXX1RBR19zdWJwcm9ncmEgKi8KLSsJLmJ5 dGUJMHgxCQkvKiBEV19oYXNfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4M2YJCS8qIERX X0FUX2V4dGVybmFsICovCi0rCS51bGViMTI4IDB4YwkJLyogRFdfRk9STV9mbGFnICovCi0rCS51 bGViMTI4IDB4MwkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOCAweDgJCS8qIERXX0ZPUk1f c3RyaW5nICovCi0rCS51bGViMTI4IDB4M2MJCS8qIERXX0FUX2RlY2xhcmF0aW9uICovCi0rCS51 bGViMTI4IDB4YwkJLyogRFdfRk9STV9mbGFnICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHg4CQkvKiBhYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOCAweDUJCS8qIERX X1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5ieXRlCTB4MAkJLyogRFdfaGFzX2NoaWxkcmVu X25vICovCi0rCS51bGViMTI4IDB4NDkJCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjggMHgx MwkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MzQJCS8qIERXX0FUX2FydGlmaWNp YWwgKi8KLSsJLnVsZWIxMjggMHhjCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLmJ5dGUJMHgwCi0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDkJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4 IDB4NQkJLyogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIgKi8KLSsJLmJ5dGUJMHgwCQkvKiBEV19o YXNfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAqLwotKwku dWxlYjEyOCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4 MAotKwkudWxlYjEyOCAweGEJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4ZgkJLyog RFdfVEFHX3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9u byAqLwotKwkudWxlYjEyOCAweGIJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOCAw eGIJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAq LwotKwkudWxlYjEyOCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5i eXRlCTB4MAotKwkudWxlYjEyOCAweGIJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4 MTUJCS8qIERXX1RBR19zdWJyb3V0aW5lX3R5cGUgKi8KLSsJLmJ5dGUJMHgxCQkvKiBEV19oYXNf Y2hpbGRyZW5feWVzICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhj CQkvKiBhYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOCAweDJlCQkvKiBEV19UQUdfc3VicHJvZ3Jh bSAqLwotKwkuYnl0ZQkweDEJCS8qIERXX2hhc19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjgg MHg0NwkJLyogRFdfQVRfc3BlY2lmaWNhdGlvbiAqLwotKwkudWxlYjEyOCAweDEzCQkvKiBEV19G T1JNX3JlZjQgKi8KLSsJLnVsZWIxMjggMHgyMAkJLyogRFdfQVRfaW5saW5lICovCi0rCS51bGVi MTI4IDB4YgkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0r CS51bGViMTI4IDB4ZAkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjggMHg1CQkvKiBEV19U QUdfZm9ybWFsX3BhcmFtZXRlciAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9u byAqLwotKwkudWxlYjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHhlCQkv KiBEV19GT1JNX3N0cnAgKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAqLwotKwku dWxlYjEyOCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjggMHgzNAkJLyogRFdf QVRfYXJ0aWZpY2lhbCAqLwotKwkudWxlYjEyOCAweGMJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4ZQkJLyogYWJicmV2IGNvZGUgKi8K LSsJLnVsZWIxMjggMHgyNgkJLyogRFdfVEFHX2NvbnN0X3R5cGUgKi8KLSsJLmJ5dGUJMHgwCQkv KiBEV19oYXNfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAq LwotKwkudWxlYjEyOCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5i eXRlCTB4MAotKwkudWxlYjEyOCAweGYJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4 MmUJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCTB4MQkJLyogRFdfaGFzX2NoaWxk cmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMxCQkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8K LSsJLnVsZWIxMjggMHgxMwkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MTEJCS8q IERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOCAweDEJCS8qIERXX0ZPUk1fYWRkciAqLwotKwku dWxlYjEyOCAweDEyCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4IDB4MQkJLyogRFdf Rk9STV9hZGRyICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgxMAkJ LyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjggMHg1CQkvKiBEV19UQUdfZm9ybWFsX3BhcmFt ZXRlciAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9ubyAqLwotKwkudWxlYjEy OCAweDMxCQkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLnVsZWIxMjggMHgxMwkJLyog RFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MgkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJ LnVsZWIxMjggMHhhCQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJ MHgwCi0rCS51bGViMTI4IDB4MTEJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4MmUJ CS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCTB4MAkJLyogRFdfaGFzX2NoaWxkcmVu X25vICovCi0rCS51bGViMTI4IDB4M2YJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS51bGViMTI4 IDB4YwkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4IDB4MwkJLyogRFdfQVRfbmFtZSAq LwotKwkudWxlYjEyOCAweGUJCS8qIERXX0ZPUk1fc3RycCAqLwotKwkudWxlYjEyOCAweDQ5CQkv KiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwku dWxlYjEyOCAweDExCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjggMHgxCQkvKiBEV19G T1JNX2FkZHIgKi8KLSsJLnVsZWIxMjggMHgxMgkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkudWxl YjEyOCAweDEJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0r CS51bGViMTI4IDB4MTIJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4MjQJCS8qIERX X1RBR19iYXNlX3R5cGUgKi8KLSsJLmJ5dGUJMHgwCQkvKiBEV19oYXNfY2hpbGRyZW5fbm8gKi8K LSsJLnVsZWIxMjggMHhiCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjggMHhiCQkv KiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4IDB4M2UJCS8qIERXX0FUX2VuY29kaW5nICov Ci0rCS51bGViMTI4IDB4YgkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOCAweDMJCS8q IERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHg4CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MTYJCS8qIGFiYnJldiBjb2RlICov Ci0rCS51bGViMTI4IDB4MzQJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkweDAJCS8q IERXX2hhc19jaGlsZHJlbl9ubyAqLwotKwkudWxlYjEyOCAweDQ3CQkvKiBEV19BVF9zcGVjaWZp Y2F0aW9uICovCi0rCS51bGViMTI4IDB4MTMJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEy OCAweDIJCS8qIERXX0FUX2xvY2F0aW9uICovCi0rCS51bGViMTI4IDB4YQkJLyogRFdfRk9STV9i bG9jazEgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnNlY3Rp b24JLmRlYnVnX3N0cgotKy5MQVNGMDoKLSsJLnN0cmluZwkiX1pOMU4xZkUiCi0rLkxBU0Y3Ogot Kwkuc3RyaW5nCSJ0aGlzIgotKy5MQVNGNjoKLSsJLnN0cmluZwkiIgotKy5MQVNGODoKLSsJLnN0 cmluZwkibWFpbiIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJIl9aTjFOMWNFIgotKy5MQVNGNToKLSsJ LnN0cmluZwkicHIxMTQ2NS5jYyIKLSsuTEFTRjQ6Ci0rCS5zdHJpbmcJIkdOVSBDKysgNC40LjIi Ci0rCS5pZGVudAkiR0NDOiAoR05VKSA0LjQuMiIKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIx L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LmV4cAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjEu OTAuMjAxMDA3MjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhwCTIwMTAtMDct MjIgMTE6NTk6MjkuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDM5IEBACi0rIyBDb3B5cmln aHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdl dHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEg c2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0K LSsgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxm Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQg YXJtLSotZWFiaSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAg ICByZXR1cm4gMCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAicHIxMTQ2NSIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotKwotK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgb2JqZWN0 IHt9XSAhPSAiIiB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3RhcnQgJGV4 ZWN1dGFibGUKLSsKLSsjIFRlc3QgZGVsYXllZCBwaHlzbmFtZSBjb21wdXRhdGlvbnMKLStnZGJf dGVzdCAicCBOOjpjLkMiIHsgPSB7dm9pZCBcKE46OkMgXCosIHZvaWQgXChcKlwpXChOOjpDXClc KX0uKn0KCmRpZmYgLS1naXQgYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTFvZjUucGF0Y2gg Yi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTFvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDE2Yzc4OWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8t bG9zdC0xb2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDgvbXNnMDA1NTkuaHRtbAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOC9tc2cwMDE5OS5odG1sCi0KLSMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA4LzMxIDE4OjA4OjQyCTEuMTIxMjkKLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEwLzA4LzMxIDE4OjExOjQ4CTEuMTIxMzAKLSMjIC0xLDUgKzEsMTQgQEAK LSAyMDEwLTA4LTMxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0gCi0rCU1ha2UgbGludXhfZ2V0X3NpZ2luZm9fdHlwZSBgdHlwZSAqJyB1bmlxdWUuCi0rCSog bGludXgtdGRlcC5jIChsaW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlLCBzdHJ1Y3QgbGludXhfZ2Ri YXJjaF9kYXRhKQotKwkoaW5pdF9saW51eF9nZGJhcmNoX2RhdGEsIGdldF9saW51eF9nZGJhcmNo X2RhdGEpOiBOZXcuCi0rCShsaW51eF9nZXRfc2lnaW5mb190eXBlKTogTmV3IHZhcmlhYmxlIGxp bnV4X2dkYmFyY2hfZGF0YS4gIEluaXRpYWxpemUKLSsJaXQuICBVc2UgbGludXhfZ2RiYXJjaF9k YXRhLT5zaWdpbmZvX3R5cGUgYXMgYSBwZXJzaXN0ZW50IHN0b3JhZ2UuCi0rCShfaW5pdGlhbGl6 ZV9saW51eF90ZGVwKTogTmV3LgotKwotKzIwMTAtMDgtMzEgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJQ29kZSBjbGVhbnVwLgotIAkqIGRlZnMuaCAo ZmluZF9tZW1vcnlfcmVnaW9uX2Z0eXBlKTogTmV3IHR5cGVkZWYuCi0gCShleGVjX3NldF9maW5k X21lbW9yeV9yZWdpb25zKTogVXNlIGl0LgotSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LXRkZXAu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDkt MjUgMTU6MzA6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvbGludXgtdGRlcC5j CTIwMTAtMDktMjUgMTU6MzE6NTQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjYsMTggKzI2LDQyIEBA Ci0gI2luY2x1ZGUgInZhbHVlLmgiCi0gI2luY2x1ZGUgImluZmNhbGwuaCIKLSAKLStzdGF0aWMg c3RydWN0IGdkYmFyY2hfZGF0YSAqbGludXhfZ2RiYXJjaF9kYXRhX2hhbmRsZTsKLSsKLStzdHJ1 Y3QgbGludXhfZ2RiYXJjaF9kYXRhCi0rICB7Ci0rICAgIHN0cnVjdCB0eXBlICpzaWdpbmZvX3R5 cGU7Ci0rICB9OwotKwotK3N0YXRpYyB2b2lkICoKLStpbml0X2xpbnV4X2dkYmFyY2hfZGF0YSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgcmV0dXJuIEdEQkFSQ0hfT0JTVEFDS19a QUxMT0MgKGdkYmFyY2gsIHN0cnVjdCBsaW51eF9nZGJhcmNoX2RhdGEpOwotK30KLSsKLStzdGF0 aWMgc3RydWN0IGxpbnV4X2dkYmFyY2hfZGF0YSAqCi0rZ2V0X2xpbnV4X2dkYmFyY2hfZGF0YSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgcmV0dXJuIGdkYmFyY2hfZGF0YSAoZ2Ri YXJjaCwgbGludXhfZ2RiYXJjaF9kYXRhX2hhbmRsZSk7Ci0rfQotKwotIC8qIFRoaXMgZnVuY3Rp b24gaXMgc3VpdGFibGUgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkb24ndAotICAgIGV4dGVuZC9v dmVycmlkZSB0aGUgc3RhbmRhcmQgc2lnaW5mbyBzdHJ1Y3R1cmUuICAqLwotIAotIHN0cnVjdCB0 eXBlICoKLSBsaW51eF9nZXRfc2lnaW5mb190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkK LSB7Ci0rICBzdHJ1Y3QgbGludXhfZ2RiYXJjaF9kYXRhICpsaW51eF9nZGJhcmNoX2RhdGE7Ci0g ICBzdHJ1Y3QgdHlwZSAqaW50X3R5cGUsICp1aW50X3R5cGUsICpsb25nX3R5cGUsICp2b2lkX3B0 cl90eXBlOwotICAgc3RydWN0IHR5cGUgKnVpZF90eXBlLCAqcGlkX3R5cGU7Ci0gICBzdHJ1Y3Qg dHlwZSAqc2lndmFsX3R5cGUsICpjbG9ja190eXBlOwotICAgc3RydWN0IHR5cGUgKnNpZ2luZm9f dHlwZSwgKnNpZmllbGRzX3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAKLSsgIGxpbnV4 X2dkYmFyY2hfZGF0YSA9IGdldF9saW51eF9nZGJhcmNoX2RhdGEgKGdkYmFyY2gpOwotKyAgaWYg KGxpbnV4X2dkYmFyY2hfZGF0YS0+c2lnaW5mb190eXBlICE9IE5VTEwpCi0rICAgIHJldHVybiBs aW51eF9nZGJhcmNoX2RhdGEtPnNpZ2luZm9fdHlwZTsKLSsKLSAgIGludF90eXBlID0gYXJjaF9p bnRlZ2VyX3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCksCi0gCQkJIAkw LCAiaW50Iik7Ci0gICB1aW50X3R5cGUgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwgZ2Ri YXJjaF9pbnRfYml0IChnZGJhcmNoKSwKLUBAIC0xMzcsNiArMTYxLDggQEAgbGludXhfZ2V0X3Np Z2luZm9fdHlwZSAoc3RydWN0IGdkYmFyY2ggKgotIAkJCQkgICAgICAgIl9zaWZpZWxkcyIsIHNp ZmllbGRzX3R5cGUsCi0gCQkJCSAgICAgICBUWVBFX0xFTkdUSCAobG9uZ190eXBlKSk7Ci0gCi0r ICBsaW51eF9nZGJhcmNoX2RhdGEtPnNpZ2luZm9fdHlwZSA9IHNpZ2luZm9fdHlwZTsKLSsKLSAg IHJldHVybiBzaWdpbmZvX3R5cGU7Ci0gfQotIAotQEAgLTE1NCwzICsxODAsMTAgQEAgbGludXhf aGFzX3NoYXJlZF9hZGRyZXNzX3NwYWNlICh2b2lkKQotIAotICAgcmV0dXJuIHRhcmdldF9pc191 Y2xpbnV4OwotIH0KLSsKLSt2b2lkCi0rX2luaXRpYWxpemVfbGludXhfdGRlcCAodm9pZCkKLSt7 Ci0rICBsaW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlID0KLSsgICAgZ2RiYXJjaF9kYXRhX3JlZ2lz dGVyX3Bvc3RfaW5pdCAoaW5pdF9saW51eF9nZGJhcmNoX2RhdGEpOwotK30KCmRpZmYgLS1naXQg YS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTJvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2ln aW5mby1sb3N0LTJvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MTg0 ZTAuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0yb2Y1LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwNDMwLmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTAtMDkvbXNnMDAxNTIuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMC8wOS8yNCAxMToxNTo1MQkxLjEyMTk5Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8w OS8yNCAxMzo0MTo0MgkxLjEyMjAwCi0jIyAtMSw1ICsxLDEyIEBACi0gMjAxMC0wOS0yNCAgUGVk cm8gQWx2ZXMgIDxwZWRyb0Bjb2Rlc291cmNlcnkuY29tPgotIAotKwkqIGFtZDY0LWxpbnV4LW5h dC5jIChjb21wYXRfc2lnaW5mb19mcm9tX3NpZ2luZm8pCi0rCShzaWdpbmZvX2Zyb21fY29tcGF0 X3NpZ2luZm8pOiBBbHNvIGNvcHkgc2lfcGlkIGFuZCBzaV91aWQgd2hlbgotKwlzaV9jb2RlIGlz IDwgMC4gIENoZWNrIGZvciBzaV9jb2RlID09IFNJX1RJTUVSIGJlZm9yZSBjaGVja2luZyBmb3IK LSsJc2lfY29kZSA8IDAuCi0rCi0rMjAxMC0wOS0yNCAgUGVkcm8gQWx2ZXMgIDxwZWRyb0Bjb2Rl c291cmNlcnkuY29tPgotKwotIAkqIG9iamZpbGVzLmggKEFMTF9PQkpTRUNUSU9OUyk6IEhhbmRs ZSBicmVha3MgaW4gdGhlIGlubmVyIGxvb3AuCi0gCi0gMjAxMC0wOS0yMiAgSm9lbCBCcm9iZWNr ZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+Ci0tLS0gc3JjL2dkYi9hbWQ2NC1saW51eC1uYXQu YwkyMDEwLzA0LzIyIDIwOjAyOjU1CTEuMzIKLSsrKyBzcmMvZ2RiL2FtZDY0LWxpbnV4LW5hdC5j CTIwMTAvMDkvMjQgMTM6NDE6NDMJMS4zMwotQEAgLTU3NCw4ICs1NzQsMTAgQEAKLSAgIHRvLT5z aV9lcnJubyA9IGZyb20tPnNpX2Vycm5vOwotICAgdG8tPnNpX2NvZGUgPSBmcm9tLT5zaV9jb2Rl OwotIAotLSAgaWYgKHRvLT5zaV9jb2RlIDwgMCkKLSsgIGlmICh0by0+c2lfY29kZSA9PSBTSV9U SU1FUikKLSAgICAgewotKyAgICAgIHRvLT5jcHRfc2lfdGltZXJpZCA9IGZyb20tPnNpX3RpbWVy aWQ7Ci0rICAgICAgdG8tPmNwdF9zaV9vdmVycnVuID0gZnJvbS0+c2lfb3ZlcnJ1bjsKLSAgICAg ICB0by0+Y3B0X3NpX3B0ciA9IChpbnRwdHJfdCkgZnJvbS0+c2lfcHRyOwotICAgICB9Ci0gICBl bHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9VU0VSKQotQEAgLTU4MywxMCArNTg1LDEwIEBACi0g ICAgICAgdG8tPmNwdF9zaV9waWQgPSBmcm9tLT5zaV9waWQ7Ci0gICAgICAgdG8tPmNwdF9zaV91 aWQgPSBmcm9tLT5zaV91aWQ7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKHRvLT5zaV9jb2RlID09IFNJ X1RJTUVSKQotKyAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPCAwKQotICAgICB7Ci0tICAgICAgdG8t PmNwdF9zaV90aW1lcmlkID0gZnJvbS0+c2lfdGltZXJpZDsKLS0gICAgICB0by0+Y3B0X3NpX292 ZXJydW4gPSBmcm9tLT5zaV9vdmVycnVuOwotKyAgICAgIHRvLT5jcHRfc2lfcGlkID0gZnJvbS0+ c2lfcGlkOwotKyAgICAgIHRvLT5jcHRfc2lfdWlkID0gZnJvbS0+c2lfdWlkOwotICAgICAgIHRv LT5jcHRfc2lfcHRyID0gKGludHB0cl90KSBmcm9tLT5zaV9wdHI7Ci0gICAgIH0KLSAgIGVsc2UK LUBAIC02MjgsOCArNjMwLDEwIEBACi0gICB0by0+c2lfZXJybm8gPSBmcm9tLT5zaV9lcnJubzsK LSAgIHRvLT5zaV9jb2RlID0gZnJvbS0+c2lfY29kZTsKLSAKLS0gIGlmICh0by0+c2lfY29kZSA8 IDApCi0rICBpZiAodG8tPnNpX2NvZGUgPT0gU0lfVElNRVIpCi0gICAgIHsKLSsgICAgICB0by0+ c2lfdGltZXJpZCA9IGZyb20tPmNwdF9zaV90aW1lcmlkOwotKyAgICAgIHRvLT5zaV9vdmVycnVu ID0gZnJvbS0+Y3B0X3NpX292ZXJydW47Ci0gICAgICAgdG8tPnNpX3B0ciA9ICh2b2lkICopIChp bnRwdHJfdCkgZnJvbS0+Y3B0X3NpX3B0cjsKLSAgICAgfQotICAgZWxzZSBpZiAodG8tPnNpX2Nv ZGUgPT0gU0lfVVNFUikKLUBAIC02MzcsMTAgKzY0MSwxMCBAQAotICAgICAgIHRvLT5zaV9waWQg PSBmcm9tLT5jcHRfc2lfcGlkOwotICAgICAgIHRvLT5zaV91aWQgPSBmcm9tLT5jcHRfc2lfdWlk OwotICAgICB9Ci0tICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikKLSsgIGlmICh0 by0+c2lfY29kZSA8IDApCi0gICAgIHsKLS0gICAgICB0by0+c2lfdGltZXJpZCA9IGZyb20tPmNw dF9zaV90aW1lcmlkOwotLSAgICAgIHRvLT5zaV9vdmVycnVuID0gZnJvbS0+Y3B0X3NpX292ZXJy dW47Ci0rICAgICAgdG8tPnNpX3BpZCA9IGZyb20tPmNwdF9zaV9waWQ7Ci0rICAgICAgdG8tPnNp X3VpZCA9IGZyb20tPmNwdF9zaV91aWQ7Ci0gICAgICAgdG8tPnNpX3B0ciA9ICh2b2lkICopIChp bnRwdHJfdCkgZnJvbS0+Y3B0X3NpX3B0cjsKLSAgICAgfQotICAgZWxzZQotIyMjIHNyYy9nZGIv Z2Ric2VydmVyL0NoYW5nZUxvZwkyMDEwLzA5LzEzIDE5OjExOjAzCTEuNDMxCi0jIyMgc3JjL2dk Yi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCTIwMTAvMDkvMjQgMTM6NDE6NDMJMS40MzIKLSMjIC0xLDMg KzEsMTAgQEAKLSsyMDEwLTA5LTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5j b20+Ci0rCi0rCSogbGludXgteDg2LWxvdy5jIChjb21wYXRfc2lnaW5mb19mcm9tX3NpZ2luZm8p Ci0rCShzaWdpbmZvX2Zyb21fY29tcGF0X3NpZ2luZm8pOiBBbHNvIGNvcHkgc2lfcGlkIGFuZCBz aV91aWQgd2hlbgotKwlzaV9jb2RlIGlzIDwgMC4gIENoZWNrIGZvciBzaV9jb2RlID09IFNJX1RJ TUVSIGJlZm9yZSBjaGVja2luZyBmb3IKLSsJc2lfY29kZSA8IDAuCi0rCi0gMjAxMC0wOS0xMyAg Sm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+Ci0gCi0gCSogbHlueC1pMzg2 LWxvdy5jOiBOZXcgZmlsZS4KLS0tLSBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMJ MjAxMC8wOC8yNyAwMDoxNjo0OAkxLjIzCi0rKysgc3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2 LWxvdy5jCTIwMTAvMDkvMjQgMTM6NDE6NDMJMS4yNAotQEAgLTc5Miw4ICs3OTIsMTAgQEAKLSAg IHRvLT5zaV9lcnJubyA9IGZyb20tPnNpX2Vycm5vOwotICAgdG8tPnNpX2NvZGUgPSBmcm9tLT5z aV9jb2RlOwotIAotLSAgaWYgKHRvLT5zaV9jb2RlIDwgMCkKLSsgIGlmICh0by0+c2lfY29kZSA9 PSBTSV9USU1FUikKLSAgICAgewotKyAgICAgIHRvLT5jcHRfc2lfdGltZXJpZCA9IGZyb20tPnNp X3RpbWVyaWQ7Ci0rICAgICAgdG8tPmNwdF9zaV9vdmVycnVuID0gZnJvbS0+c2lfb3ZlcnJ1bjsK LSAgICAgICB0by0+Y3B0X3NpX3B0ciA9IChpbnRwdHJfdCkgZnJvbS0+c2lfcHRyOwotICAgICB9 Ci0gICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9VU0VSKQotQEAgLTgwMSwxMCArODAzLDEw IEBACi0gICAgICAgdG8tPmNwdF9zaV9waWQgPSBmcm9tLT5zaV9waWQ7Ci0gICAgICAgdG8tPmNw dF9zaV91aWQgPSBmcm9tLT5zaV91aWQ7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKHRvLT5zaV9jb2Rl ID09IFNJX1RJTUVSKQotKyAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPCAwKQotICAgICB7Ci0tICAg ICAgdG8tPmNwdF9zaV90aW1lcmlkID0gZnJvbS0+c2lfdGltZXJpZDsKLS0gICAgICB0by0+Y3B0 X3NpX292ZXJydW4gPSBmcm9tLT5zaV9vdmVycnVuOwotKyAgICAgIHRvLT5jcHRfc2lfcGlkID0g ZnJvbS0+c2lfcGlkOwotKyAgICAgIHRvLT5jcHRfc2lfdWlkID0gZnJvbS0+c2lfdWlkOwotICAg ICAgIHRvLT5jcHRfc2lfcHRyID0gKGludHB0cl90KSBmcm9tLT5zaV9wdHI7Ci0gICAgIH0KLSAg IGVsc2UKLUBAIC04NDYsOCArODQ4LDEwIEBACi0gICB0by0+c2lfZXJybm8gPSBmcm9tLT5zaV9l cnJubzsKLSAgIHRvLT5zaV9jb2RlID0gZnJvbS0+c2lfY29kZTsKLSAKLS0gIGlmICh0by0+c2lf Y29kZSA8IDApCi0rICBpZiAodG8tPnNpX2NvZGUgPT0gU0lfVElNRVIpCi0gICAgIHsKLSsgICAg ICB0by0+c2lfdGltZXJpZCA9IGZyb20tPmNwdF9zaV90aW1lcmlkOwotKyAgICAgIHRvLT5zaV9v dmVycnVuID0gZnJvbS0+Y3B0X3NpX292ZXJydW47Ci0gICAgICAgdG8tPnNpX3B0ciA9ICh2b2lk ICopIChpbnRwdHJfdCkgZnJvbS0+Y3B0X3NpX3B0cjsKLSAgICAgfQotICAgZWxzZSBpZiAodG8t PnNpX2NvZGUgPT0gU0lfVVNFUikKLUBAIC04NTUsMTAgKzg1OSwxMCBAQAotICAgICAgIHRvLT5z aV9waWQgPSBmcm9tLT5jcHRfc2lfcGlkOwotICAgICAgIHRvLT5zaV91aWQgPSBmcm9tLT5jcHRf c2lfdWlkOwotICAgICB9Ci0tICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikKLSsg IGVsc2UgaWYgKHRvLT5zaV9jb2RlIDwgMCkKLSAgICAgewotLSAgICAgIHRvLT5zaV90aW1lcmlk ID0gZnJvbS0+Y3B0X3NpX3RpbWVyaWQ7Ci0tICAgICAgdG8tPnNpX292ZXJydW4gPSBmcm9tLT5j cHRfc2lfb3ZlcnJ1bjsKLSsgICAgICB0by0+c2lfcGlkID0gZnJvbS0+Y3B0X3NpX3BpZDsKLSsg ICAgICB0by0+c2lfdWlkID0gZnJvbS0+Y3B0X3NpX3VpZDsKLSAgICAgICB0by0+c2lfcHRyID0g KHZvaWQgKikgKGludHB0cl90KSBmcm9tLT5jcHRfc2lfcHRyOwotICAgICB9Ci0gICBlbHNlCgpk aWZmIC0tZ2l0IGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0zb2Y1LnBhdGNoIGIvZ2RiLWJ6 NTkyMDMxLXNpZ2luZm8tbG9zdC0zb2Y1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBlNDVjODNkLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtM29m NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDQzOC5odG1sCi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA5L21zZzAwMTU2Lmh0bWwKLQotIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTAvMDkvMjQgMTY6MTE6NDQJMS4xMjIwMwotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTAvMDkvMjQgMTg6MzU6MjAJMS4xMjIwNAotIyMgLTEsMyArMSwxNiBAQAotKzIwMTAt MDktMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJ Rml4IGxvc3Qgc2lnaW5mb190IGZvciBpbmZlcmlvciBjYWxscy4KLSsJKiBpbmZydW4uYwotKwko c3RydWN0IGluZmVyaW9yX3RocmVhZF9zdGF0ZSkgPHNpZ2luZm9fZ2RiYXJjaCwgc2lnaW5mb19k YXRhPjogTmV3LgotKwkoc2F2ZV9pbmZlcmlvcl90aHJlYWRfc3RhdGUpOiBOZXcgdmFyaWFibGVz IHJlZ2NhY2hlLCBnZGJhcmNoIGFuZAotKwlzaWdpbmZvX2RhdGEuICBJbml0aWFsaXplIFNJR0lO Rk9fREFUQSBpZiBnZGJhcmNoX2dldF9zaWdpbmZvX3R5cGVfcC4KLSsJTW92ZSBJTkZfU1RBVEUg YWxsb2NhdGlvbiBsYXRlciwgcHJlLWNsZWFyIGl0LiAgSW5pdGlhbGl6ZSBSRUdJU1RFUlMKLSsJ dXNpbmcgUkVHQ0FDSEUuCi0rCShyZXN0b3JlX2luZmVyaW9yX3RocmVhZF9zdGF0ZSk6IE5ldyB2 YXJpYWJsZXMgcmVnY2FjaGUgYW5kIGdkYmFyY2guCi0rCVJlc3RvcmUgU0lHSU5GT19EQVRBIGZv ciBtYXRjaGluZyBHREJBUkNILiAgUmVzdG9yZSBSRUdJU1RFUlMgdXNpbmcKLSsJUkVHQ0FDSEUu ICBGcmVlIGFsc28gU0lHSU5GT19EQVRBLgotKwotIDIwMTAtMDktMjQgIFRvbSBUcm9tZXkgIDx0 cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJKiBkd2FyZjJyZWFkLmMgKGR3Ml9leHBhbmRfc3ltdGFi c19tYXRjaGluZyk6IEFkZCBtaXNzaW5nCi0tLS0gc3JjL2dkYi9pbmZydW4uYwkyMDEwLzA5LzA2 IDE0OjIyOjA3CTEuNDUwCi0rKysgc3JjL2dkYi9pbmZydW4uYwkyMDEwLzA5LzI0IDE4OjM1OjI3 CTEuNDUxCi1AQCAtNjAzNywxOCArNjAzNyw1NyBAQAotICAgZW51bSB0YXJnZXRfc2lnbmFsIHN0 b3Bfc2lnbmFsOwotICAgQ09SRV9BRERSIHN0b3BfcGM7Ci0gICBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2lzdGVyczsKLSsKLSsgIC8qIEZvcm1hdCBvZiBTSUdJTkZPIG9yIE5VTEwgaWYgaXQgaXMgbm90 IHByZXNlbnQuICAqLwotKyAgc3RydWN0IGdkYmFyY2ggKnNpZ2luZm9fZ2RiYXJjaDsKLSsKLSsg IC8qIFRoZSBpbmZlcmlvciBmb3JtYXQgZGVwZW5kcyBvbiBTSUdJTkZPX0dEQkFSQ0ggYW5kIGl0 IGhhcyBhIGxlbmd0aCBvZgotKyAgICAgVFlQRV9MRU5HVEggKGdkYmFyY2hfZ2V0X3NpZ2luZm9f dHlwZSAoKSkuICBGb3IgZGlmZmVyZW50IGdkYmFyY2ggdGhlCi0rICAgICBjb250ZW50IHdvdWxk IGJlIGludmFsaWQuICAqLwotKyAgZ2RiX2J5dGUgKnNpZ2luZm9fZGF0YTsKLSB9OwotIAotIHN0 cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUgKgotIHNhdmVfaW5mZXJpb3JfdGhyZWFkX3N0YXRl ICh2b2lkKQotIHsKLS0gIHN0cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUgKmluZl9zdGF0ZSA9 IFhNQUxMT0MgKHN0cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUpOwotKyAgc3RydWN0IGluZmVy aW9yX3RocmVhZF9zdGF0ZSAqaW5mX3N0YXRlOwotICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9 IGluZmVyaW9yX3RocmVhZCAoKTsKLSsgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRf Y3VycmVudF9yZWdjYWNoZSAoKTsKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3Jl Z2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKLSsgIGdkYl9ieXRlICpzaWdpbmZvX2RhdGEgPSBOVUxM OwotKwotKyAgaWYgKGdkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZV9wIChnZGJhcmNoKSkKLSsgICAg ewotKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZ2RiYXJjaF9nZXRfc2lnaW5mb190eXBlIChn ZGJhcmNoKTsKLSsgICAgICBzaXplX3QgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotKyAgICAg IHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKwotKyAgICAgIHNpZ2luZm9fZGF0YSA9IHhtYWxs b2MgKGxlbik7Ci0rICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHNpZ2luZm9f ZGF0YSk7Ci0rCi0rICAgICAgaWYgKHRhcmdldF9yZWFkICgmY3VycmVudF90YXJnZXQsIFRBUkdF VF9PQkpFQ1RfU0lHTkFMX0lORk8sIE5VTEwsCi0rCQkgICAgICAgc2lnaW5mb19kYXRhLCAwLCBs ZW4pID09IGxlbikKLSsJZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7Ci0rICAgICAgZWxzZQot Kwl7Ci0rCSAgLyogRXJyb3JzIGlnbm9yZWQuICAqLwotKwkgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKLSsJICBzaWdpbmZvX2RhdGEgPSBOVUxMOwotKwl9Ci0rICAgIH0KLSsKLSsgIGluZl9zdGF0 ZSA9IFhaQUxMT0MgKHN0cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUpOwotKwotKyAgaWYgKHNp Z2luZm9fZGF0YSkKLSsgICAgewotKyAgICAgIGluZl9zdGF0ZS0+c2lnaW5mb19nZGJhcmNoID0g Z2RiYXJjaDsKLSsgICAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZGF0YSA9IHNpZ2luZm9fZGF0YTsK LSsgICAgfQotIAotICAgaW5mX3N0YXRlLT5zdG9wX3NpZ25hbCA9IHRwLT5zdG9wX3NpZ25hbDsK LSAgIGluZl9zdGF0ZS0+c3RvcF9wYyA9IHN0b3BfcGM7Ci0gCi0tICBpbmZfc3RhdGUtPnJlZ2lz dGVycyA9IHJlZ2NhY2hlX2R1cCAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpOwotKyAgaW5mX3N0 YXRlLT5yZWdpc3RlcnMgPSByZWdjYWNoZV9kdXAgKHJlZ2NhY2hlKTsKLSAKLSAgIHJldHVybiBp bmZfc3RhdGU7Ci0gfQotQEAgLTYwNTksMTYgKzYwOTgsMjkgQEAKLSByZXN0b3JlX2luZmVyaW9y X3RocmVhZF9zdGF0ZSAoc3RydWN0IGluZmVyaW9yX3RocmVhZF9zdGF0ZSAqaW5mX3N0YXRlKQot IHsKLSAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7Ci0rICBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCk7Ci0rICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7Ci0g Ci0gICB0cC0+c3RvcF9zaWduYWwgPSBpbmZfc3RhdGUtPnN0b3Bfc2lnbmFsOwotICAgc3RvcF9w YyA9IGluZl9zdGF0ZS0+c3RvcF9wYzsKLSAKLSsgIGlmIChpbmZfc3RhdGUtPnNpZ2luZm9fZ2Ri YXJjaCA9PSBnZGJhcmNoKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBnZGJh cmNoX2dldF9zaWdpbmZvX3R5cGUgKGdkYmFyY2gpOwotKyAgICAgIHNpemVfdCBsZW4gPSBUWVBF X0xFTkdUSCAodHlwZSk7Ci0rCi0rICAgICAgLyogRXJyb3JzIGlnbm9yZWQuICAqLwotKyAgICAg IHRhcmdldF93cml0ZSAoJmN1cnJlbnRfdGFyZ2V0LCBUQVJHRVRfT0JKRUNUX1NJR05BTF9JTkZP LCBOVUxMLAotKwkJICAgIGluZl9zdGF0ZS0+c2lnaW5mb19kYXRhLCAwLCBsZW4pOwotKyAgICB9 Ci0rCi0gICAvKiBUaGUgaW5mZXJpb3IgY2FuIGJlIGdvbmUgaWYgdGhlIHVzZXIgdHlwZXMgInBy aW50IGV4aXQoMCkiCi0gICAgICAoYW5kIHBlcmhhcHMgb3RoZXIgdGltZXMpLiAgKi8KLSAgIGlm ICh0YXJnZXRfaGFzX2V4ZWN1dGlvbikKLSAgICAgLyogTkI6IFRoZSByZWdpc3RlciB3cml0ZSBn b2VzIHRocm91Z2ggdG8gdGhlIHRhcmdldC4gICovCi0tICAgIHJlZ2NhY2hlX2NweSAoZ2V0X2N1 cnJlbnRfcmVnY2FjaGUgKCksIGluZl9zdGF0ZS0+cmVnaXN0ZXJzKTsKLSsgICAgcmVnY2FjaGVf Y3B5IChyZWdjYWNoZSwgaW5mX3N0YXRlLT5yZWdpc3RlcnMpOwotICAgcmVnY2FjaGVfeGZyZWUg KGluZl9zdGF0ZS0+cmVnaXN0ZXJzKTsKLSsgIHhmcmVlIChpbmZfc3RhdGUtPnNpZ2luZm9fZGF0 YSk7Ci0gICB4ZnJlZSAoaW5mX3N0YXRlKTsKLSB9Ci0gCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUv Q2hhbmdlTG9nCTIwMTAvMDkvMjIgMjA6MDg6MDQJMS4yNDU2Ci0jIyMgc3JjL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCTIwMTAvMDkvMjQgMTg6MzU6MjgJMS4yNDU3Ci0jIyAtMSwzICsxLDkgQEAK LSsyMDEwLTA5LTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCi0rCUZpeCBsb3N0IHNpZ2luZm9fdCBmb3IgaW5mZXJpb3IgY2FsbHMuCi0rCSogZ2RiLmJh c2Uvc2lnaW5mby1pbmZjYWxsLmV4cDogTmV3IGZpbGUuCi0rCSogZ2RiLmJhc2Uvc2lnaW5mby1p bmZjYWxsLmM6IE5ldyBmaWxlLgotKwotIDIwMTAtMDktMjIgIEpvZWwgQnJvYmVja2VyICA8YnJv YmVja2VyQGFkYWNvcmUuY29tPgotIAotIAkqIGdkYi5kd2FyZjIvZHcyLWNvbnN0LlM6IE1pbm9y IChzcGFjZSkgcmVmb3JtYXR0aW5nLgotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Np Z2luZm8taW5mY2FsbC5jCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnaW5mby1p bmZjYWxsLmMJMjAxMC0wOS0yNSAxMzoyNToyNS4wMDcxNjkwMDAgKzAwMDAKLUBAIC0wLDAgKzEs NzkgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVk ZSA8c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4K LSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rCi0rI2lmbmRlZiBTQV9TSUdJTkZPCi0rIyBlcnJvciAi U0FfU0lHSU5GTyBpcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0IgotKyNlbmRpZgotKwotK3N0YXRp YyBpbnQKLStjYWxsbWUgKHZvaWQpCi0rewotKyAgcmV0dXJuIDQyOwotK30KLSsKLStzdGF0aWMg aW50Ci0rcGFzcyAodm9pZCkKLSt7Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludAot K2ZhaWwgKHZvaWQpCi0rewotKyAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raGFu ZGxlciAoaW50IHNpZywgc2lnaW5mb190ICpzaWdpbmZvLCB2b2lkICpjb250ZXh0KQotK3sKLSsg IGFzc2VydCAoc2lnID09IFNJR1VTUjEpOwotKyAgYXNzZXJ0IChzaWdpbmZvLT5zaV9zaWdubyA9 PSBTSUdVU1IxKTsKLSsgIGlmIChzaWdpbmZvLT5zaV9waWQgPT0gZ2V0cGlkICgpKQotKyAgICBw YXNzICgpOwotKyAgZWxzZQotKyAgICBmYWlsICgpOwotK30KLSsKLStpbnQKLSttYWluICh2b2lk KQotK3sKLSsgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Ci0rICBpbnQgaTsKLSsKLSsgIGNhbGxtZSAo KTsKLSsKLSsgIG1lbXNldCAoJnNhLCAwLCBzaXplb2YgKHNhKSk7Ci0rICBzYS5zYV9zaWdhY3Rp b24gPSBoYW5kbGVyOwotKyAgc2Euc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOwotKwotKyAgaSA9IHNp Z2VtcHR5c2V0ICgmc2Euc2FfbWFzayk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICBpID0g c2lnYWN0aW9uIChTSUdVU1IxLCAmc2EsIE5VTEwpOwotKyAgYXNzZXJ0IChpID09IDApOwotKwot KyAgaSA9IHJhaXNlIChTSUdVU1IxKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIHNsZWVw ICg2MDApOwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3NpZ2luZm8taW5mY2FsbC5leHAKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdp bmZvLWluZmNhbGwuZXhwCTIwMTAtMDktMjUgMTM6MjU6MjUuMzU3NzI0MDAwICswMDAwCi1AQCAt MCwwICsxLDQ3IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgW3RhcmdldF9p bmZvIGV4aXN0cyBnZGIsbm9zaWduYWxzXSB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIHNpZ2lu Zm8taW5mY2FsbC5leHAgYmVjYXVzZSBvZiBub3NpZ25hbHMuIgotKyAgICBjb250aW51ZQotK30K LSsKLStzZXQgdGVzdGZpbGUgc2lnaW5mby1pbmZjYWxsCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uYwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9Ci0raWYgeyBbcHJlcGFyZV9mb3JfdGVz dGluZyAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFibGVdIH0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJl YWtwb2ludCAicGFzcyIKLStnZGJfYnJlYWtwb2ludCAiZmFpbCIKLSsKLStnZGJfdGVzdCAiY29u dGludWUiICJQcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCAuKiIgImNvbnRpbnVlIHRv IFNJR1VTUjEiCi0rCi0rZ2RiX3Rlc3QgInAgY2FsbG1lICgpIiAiID0gNDIiCi0rCi0rc2V0IHRl c3QgImNvbnRpbnVlIHRvIHRoZSBoYW5kbGVyIgotK2dkYl90ZXN0X211bHRpcGxlICJjb250aW51 ZSIgJHRlc3QgewotKyAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssXFteXHJcblxdKiBwYXNz IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAi QnJlYWtwb2ludCBcWzAtOVxdKyxcW15cclxuXF0qIGZhaWwgLipcclxuJGdkYl9wcm9tcHQgJCIg ewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSt9CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTkyMDMxLXNp Z2luZm8tbG9zdC00b2Y1LnBhdGNoIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1LnBh dGNoCmluZGV4IGE3M2FiMzMuLjI5MDY0NGMgMTAwNjQ0Ci0tLSBhL2dkYi1iejU5MjAzMS1zaWdp bmZvLWxvc3QtNG9mNS5wYXRjaAorKysgYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUu cGF0Y2gKQEAgLTc4LDExICs3OCwxMSBAQCBnZGIvdGVzdHN1aXRlLwogCSogZ2RiLnRocmVhZHMv c2lnc3RlcC10aHJlYWRzLmV4cDogTmV3IGZpbGUuCiAJKiBnZGIudGhyZWFkcy9zaWdzdGVwLXRo cmVhZHMuYzogTmV3IGZpbGUuCiAKLUluZGV4OiBnZGItNy4yL2dkYi9saW51eC1uYXQuYworSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEwLTA5LTI1IDE1OjMwOjU0LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDktMjUgMTU6Mzc6MjMu MDAwMDAwMDAwICswMjAwCi1AQCAtMjcwMiw2ICsyNzAyLDggQEAgc3RvcF93YWl0X2NhbGxiYWNr IChzdHJ1Y3QgbHdwX2luZm8gKmxwLAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIv bGludXgtbmF0LmMJMjAxMC0xMS0xNiAwODoyMTo0Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi9saW51eC1uYXQuYwkyMDEwLTExLTE2IDA5OjEyOjI2LjAwMDAw MDAwMCArMDEwMAorQEAgLTI3NTksNiArMjc1OSw4IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3Ry dWN0IGx3cF9pbmZvICpscCwKICAgICAgewogICAgICAgIGludCBzdGF0dXM7CiAgCkBAIC05MSwx MSArOTEsMTEgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCiAgICAgICAgc3RhdHVz ID0gd2FpdF9sd3AgKGxwKTsKICAgICAgICBpZiAoc3RhdHVzID09IDApCiAgCXJldHVybiAwOwot QEAgLTI3MjYsMTEwICsyNzI4LDYxIEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9p bmZvICpscCwKK0BAIC0yNzgzLDExMCArMjc4NSw2MSBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0 cnVjdCBsd3BfaW5mbyAqbHAsCiAgCiAgICAgICAgaWYgKFdTVE9QU0lHIChzdGF0dXMpICE9IFNJ R1NUT1ApCiAgCXsKLS0JICBpZiAoV1NUT1BTSUcgKHN0YXR1cykgPT0gU0lHVFJBUCkKKy0JICBp ZiAobGludXhfbmF0X3N0YXR1c19pc19ldmVudCAoc3RhdHVzKSkKIC0JICAgIHsKIC0JICAgICAg LyogSWYgYSBMV1Agb3RoZXIgdGhhbiB0aGUgTFdQIHRoYXQgd2UncmUgcmVwb3J0aW5nIGFuCiAt CSAgICAgICAgIGV2ZW50IGZvciBoYXMgaGl0IGEgR0RCIGJyZWFrcG9pbnQgKGFzIG9wcG9zZWQg dG8KQEAgLTI0OCw3ICsyNDgsNyBAQCBJbmRleDogZ2RiLTcuMi9nZGIvbGludXgtbmF0LmMKICAJ ICBscC0+c2lnbmFsbGVkID0gMDsKICAJfQogICAgICB9Ci1AQCAtMzQxNiw1MiArMzM2OSw2IEBA IHJldHJ5OgorQEAgLTM0NjksNTIgKzM0MjIsNiBAQCByZXRyeToKICAJbHAgPSBOVUxMOwogICAg ICB9CiAgCkBAIC0zMDEsMTAgKzMwMSwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIvbGludXgtbmF0 LmMKICAgIGlmICghdGFyZ2V0X2Nhbl9hc3luY19wICgpKQogICAgICB7CiAgICAgICAgLyogQ2F1 c2VzIFNJR0lOVCB0byBiZSBwYXNzZWQgb24gdG8gdGhlIGF0dGFjaGVkIHByb2Nlc3MuICAqLwot SW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMu YworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9z aWdpbmZvLXRocmVhZHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9zaWdpbmZvLXRocmVhZHMuYwkyMDEwLTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdp bmZvLXRocmVhZHMuYwkyMDEwLTExLTE2IDA5OjA4OjQ0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAs MCArMSw0NDcgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgogKwpAQCAtNzUzLDEwICs3NTMsMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuYwogKwogKyAgcmV0dXJuIEVYSVRfU1VD Q0VTUzsKICt9Ci1JbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2lu Zm8tdGhyZWFkcy5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCTIwMTAtMDktMjUgMTU6MzI6 MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAJMjAxMC0xMS0xNiAwOTowODo0NC4wMDAw MDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsOTQgQEAKICsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtODUyLDEwICs4NTIsMTAgQEAgSW5kZXg6IGdk Yi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCiArfQog KwogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50IGJyZWFrLWF0LWV4aXQgIi4qYnJlYWstYXQt ZXhpdC4qIgotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVw LXRocmVhZHMuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuYwkyMDEwLTA5LTI1IDE1OjMyOjMyLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9zaWdzdGVwLXRocmVhZHMuYwkyMDEwLTExLTE2IDA5OjA4OjQ0LjAwMDAwMDAwMCArMDEw MAogQEAgLTAsMCArMSw1NCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCiArCkBAIC05MTEsMTAgKzkxMSwxMCBAQCBJbmRleDogZ2RiLTcuMi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCiArICBzdGFydCAoTlVM TCk7CS8qIG1haW4tc3RhcnQgKi8KICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAorSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAt dGhyZWFkcy5leHAJMjAxMC0wOS0yNSAxNTozMjozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRz LmV4cAkyMDEwLTExLTE2IDA5OjA4OjQ0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw3NCBA QAogKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpk aWZmIC0tZ2l0IGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC01b2Y1LnBhdGNoIGIvZ2RiLWJ6 NTkyMDMxLXNpZ2luZm8tbG9zdC01b2Y1LnBhdGNoCmluZGV4IDZiZjkzZWYuLmI4MjEyYmIgMTAw NjQ0Ci0tLSBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaAorKysgYi9nZGIt Yno1OTIwMzEtc2lnaW5mby1sb3N0LTVvZjUucGF0Y2gKQEAgLTI2LDExICsyNiwxMSBAQCBnZGIv CiAJKGxpbnV4X25hdF9zZXRfc2lnaW5mb19maXh1cCk6IFVzZSBQVFJBQ0VfR0VUU0lHSU5GTy4K IAkqIGxpbnV4LW5hdC5oIChzdHJ1Y3QgbHdwX2luZm8pIDxzaWdpbmZvPjogUmVtb3ZlLgogCi1J bmRleDogZ2RiLTcuMi9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvbGludXgt bmF0LmMJMjAxMC0wOS0yNSAxNTozNzoyMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dk Yi9saW51eC1uYXQuYwkyMDEwLTA5LTI1IDE1OjM4OjE4LjAwMDAwMDAwMCArMDIwMAotQEAgLTE4 NTEsNyArMTg1MSw2IEBAIHJlc3VtZV9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwgdm8K Ky0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYg MDk6MTI6MjYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGlu dXgtbmF0LmMJMjAxMC0xMS0xNiAwOToxMzoyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xODUwLDcg KzE4NTAsNiBAQCByZXN1bWVfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvCiAgCQkJ ICAgIHRhcmdldF9waWRfdG9fc3RyIChscC0+cHRpZCkpOwogICAgICAgIGxwLT5zdG9wcGVkID0g MDsKICAgICAgICBscC0+c3RlcCA9IDA7CkBAIC00Niw3ICs0Niw3IEBAIEluZGV4OiBnZGItNy4y L2dkYi9saW51eC1uYXQuYwogICAgbHAtPnN0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IDA7CiAgCiAg ICBpZiAoZGVidWdfbGludXhfbmF0KQotQEAgLTI0ODMsMjIgKzI0ODEsNiBAQCB3YWl0X2x3cCAo c3RydWN0IGx3cF9pbmZvICpscCkKK0BAIC0yNTAzLDIyICsyNTAxLDYgQEAgd2FpdF9sd3AgKHN0 cnVjdCBsd3BfaW5mbyAqbHApCiAgICByZXR1cm4gc3RhdHVzOwogIH0KICAKQEAgLTY5LDcgKzY5 LDcgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCiAgLyogU2VuZCBhIFNJR1NUT1Ag dG8gTFAuICAqLwogIAogIHN0YXRpYyBpbnQKLUBAIC0yNzMwLDkgKzI3MTIsNiBAQCBzdG9wX3dh aXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCitAQCAtMjc4Nyw5ICsyNzY5LDYgQEAg c3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAogIAl7CiAgCSAgLyogVGhl IHRocmVhZCB3YXMgc3RvcHBlZCB3aXRoIGEgc2lnbmFsIG90aGVyIHRoYW4gU0lHU1RPUC4gICov CiAgCkBAIC03OSwxMCArNzksMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCiAg CSAgc2F2ZV9zaWd0cmFwIChscCk7CiAgCiAgCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0z MTAyLDEyICszMDgxLDcgQEAgbGludXhfbmF0X2ZpbHRlcl9ldmVudCAoaW50IGx3cGlkLCBpbnQg cworQEAgLTMxNTUsMTIgKzMxMzQsNyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQgbHdw aWQsIGludCBzCiAgICAgIH0KICAKLSAgIGlmIChXSUZTVE9QUEVEIChzdGF0dXMpICYmIFdTVE9Q U0lHIChzdGF0dXMpID09IFNJR1RSQVApCisgICBpZiAobGludXhfbmF0X3N0YXR1c19pc19ldmVu dCAoc3RhdHVzKSkKIC0gICAgewogLSAgICAgIC8qIFNhdmUgdGhlIHRyYXAncyBzaWdpbmZvIGlu IGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICovCiAtICAgICAgc2F2ZV9zaWdpbmZvIChscCk7CkBA IC05Myw3ICs5Myw3IEBAIEluZGV4OiBnZGItNy4yL2dkYi9saW51eC1uYXQuYwogIAogICAgLyog Q2hlY2sgaWYgdGhlIHRocmVhZCBoYXMgZXhpdGVkLiAgKi8KICAgIGlmICgoV0lGRVhJVEVEIChz dGF0dXMpIHx8IFdJRlNJR05BTEVEIChzdGF0dXMpKQotQEAgLTM3MDYsNyArMzY4MCw2IEBAIHJl c3VtZV9zdG9wcGVkX3Jlc3VtZWRfbHdwcyAoc3RydWN0IGx3cF8KK0BAIC0zNzYzLDcgKzM3Mzcs NiBAQCByZXN1bWVfc3RvcHBlZF9yZXN1bWVkX2x3cHMgKHN0cnVjdCBsd3BfCiAgICAgICAgbGlu dXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5w dGlkKSksCiAgCQkJICAgIGxwLT5zdGVwLCBUQVJHRVRfU0lHTkFMXzApOwogICAgICAgIGxwLT5z dG9wcGVkID0gMDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbmRleDogZ2RiLTcuMi9nZGIvbGludXgt bmF0LmMKICAgICAgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAgfQogIAot QEAgLTU4NzgsMTEgKzU4NTEsMTkgQEAgbGludXhfbmF0X3NldF9zaWdpbmZvX2ZpeHVwIChzdHJ1 Y3QgdGFyZworQEAgLTU5MzIsMTEgKzU5MDUsMTkgQEAgbGludXhfbmF0X3NldF9zaWdpbmZvX2Zp eHVwIChzdHJ1Y3QgdGFyZwogIHN0cnVjdCBzaWdpbmZvICoKICBsaW51eF9uYXRfZ2V0X3NpZ2lu Zm8gKHB0aWRfdCBwdGlkKQogIHsKQEAgLTEyNCwxMCArMTI0LDEwIEBAIEluZGV4OiBnZGItNy4y L2dkYi9saW51eC1uYXQuYwogIH0KICAKICAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVu Y2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5h dC5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDktMjUgMTU6MzA6NTAu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvbGludXgtbmF0LmgJMjAxMC0wOS0yNSAx NTozNzo1Ny4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2Ri L2xpbnV4LW5hdC5oCTIwMTAtMTEtMTYgMDc6NTQ6MzYuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmgJMjAxMC0xMS0xNiAwOToxMjo0NC4wMDAw MDAwMDAgKzAxMDAKIEBAIC01OCwxMCArNTgsNiBAQCBzdHJ1Y3QgbHdwX2luZm8KICAgIC8qIFRo ZSBraW5kIG9mIHN0ZXBwaW5nIG9mIHRoaXMgTFdQLiAgKi8KICAgIGVudW0gcmVzdW1lX3N0ZXAg c3RlcDsKCmRpZmYgLS1naXQgYS9nZGItYno1OTQ1NjAtY29yZS12cy1wcm9jZXNzLnBhdGNoIGIv Z2RiLWJ6NTk0NTYwLWNvcmUtdnMtcHJvY2Vzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNWY3YjlkNC4uMDAwMDAwMAotLS0gYS9nZGItYno1OTQ1NjAtY29yZS12cy1wcm9j ZXNzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS0tLSAuL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMC0wNS0yNCAxOTozNzowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNS0yNCAxOTozODo1Ni4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xNDc2OCwzMyArMTQ3NjgsMjEgQEAgYW5kIEBjb2Rle3Nob3cgYXJjaGl0ZWN0dXJlfS4KLSBA Y2luZGV4IGFjdGl2ZSB0YXJnZXRzCi0gQGNpbmRleCBtdWx0aXBsZSB0YXJnZXRzCi0gCi0tVGhl cmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgdGFyZ2V0czogcHJvY2Vzc2VzLCBjb3JlIGZpbGVzLCBh bmQKLS1leGVjdXRhYmxlIGZpbGVzLiAgQHZhbHVle0dEQk59IGNhbiB3b3JrIGNvbmN1cnJlbnRs eSBvbiB1cCB0byB0aHJlZQotLWFjdGl2ZSB0YXJnZXRzLCBvbmUgaW4gZWFjaCBjbGFzcy4gIFRo aXMgYWxsb3dzIHlvdSB0byAoZm9yIGV4YW1wbGUpCi0tc3RhcnQgYSBwcm9jZXNzIGFuZCBpbnNw ZWN0IGl0cyBhY3Rpdml0eSB3aXRob3V0IGFiYW5kb25pbmcgeW91ciB3b3JrIG9uCi0tYSBjb3Jl IGZpbGUuCi0tCi0tRm9yIGV4YW1wbGUsIGlmIHlvdSBleGVjdXRlIEBzYW1we2dkYiBhLm91dH0s IHRoZW4gdGhlIGV4ZWN1dGFibGUgZmlsZQotLUBjb2Rle2Eub3V0fSBpcyB0aGUgb25seSBhY3Rp dmUgdGFyZ2V0LiAgSWYgeW91IGRlc2lnbmF0ZSBhIGNvcmUgZmlsZSBhcwotLXdlbGwtLS1wcmVz dW1hYmx5IGZyb20gYSBwcmlvciBydW4gdGhhdCBjcmFzaGVkIGFuZCBjb3JlZHVtcGVkLS0tdGhl bgotLUB2YWx1ZXtHREJOfSBoYXMgdHdvIGFjdGl2ZSB0YXJnZXRzIGFuZCB1c2VzIHRoZW0gaW4g dGFuZGVtLCBsb29raW5nCi0tZmlyc3QgaW4gdGhlIGNvcmVmaWxlIHRhcmdldCwgdGhlbiBpbiB0 aGUgZXhlY3V0YWJsZSBmaWxlLCB0byBzYXRpc2Z5Ci0tcmVxdWVzdHMgZm9yIG1lbW9yeSBhZGRy ZXNzZXMuICAoVHlwaWNhbGx5LCB0aGVzZSB0d28gY2xhc3NlcyBvZiB0YXJnZXQKLS1hcmUgY29t cGxlbWVudGFyeSwgc2luY2UgY29yZSBmaWxlcyBjb250YWluIG9ubHkgYSBwcm9ncmFtJ3MKLS1y ZWFkLXdyaXRlIG1lbW9yeS0tLXZhcmlhYmxlcyBhbmQgc28gb24tLS1wbHVzIG1hY2hpbmUgc3Rh dHVzLCB3aGlsZQotLWV4ZWN1dGFibGUgZmlsZXMgY29udGFpbiBvbmx5IHRoZSBwcm9ncmFtIHRl eHQgYW5kIGluaXRpYWxpemVkIGRhdGEuKQotLQotLVdoZW4geW91IHR5cGUgQGNvZGV7cnVufSwg eW91ciBleGVjdXRhYmxlIGZpbGUgYmVjb21lcyBhbiBhY3RpdmUgcHJvY2VzcwotLXRhcmdldCBh cyB3ZWxsLiAgV2hlbiBhIHByb2Nlc3MgdGFyZ2V0IGlzIGFjdGl2ZSwgYWxsIEB2YWx1ZXtHREJO fQotLWNvbW1hbmRzIHJlcXVlc3RpbmcgbWVtb3J5IGFkZHJlc3NlcyByZWZlciB0byB0aGF0IHRh cmdldDsgYWRkcmVzc2VzIGluCi0tYW4gYWN0aXZlIGNvcmUgZmlsZSBvciBleGVjdXRhYmxlIGZp bGUgdGFyZ2V0IGFyZSBvYnNjdXJlZCB3aGlsZSB0aGUKLS1wcm9jZXNzIHRhcmdldCBpcyBhY3Rp dmUuCi0tCi0tVXNlIHRoZSBAY29kZXtjb3JlLWZpbGV9IGFuZCBAY29kZXtleGVjLWZpbGV9IGNv bW1hbmRzIHRvIHNlbGVjdCBhIG5ldwotLWNvcmUgZmlsZSBvciBleGVjdXRhYmxlIHRhcmdldCAo QHB4cmVme0ZpbGVzLCAsQ29tbWFuZHMgdG8gU3BlY2lmeQotLUZpbGVzfSkuICBUbyBzcGVjaWZ5 IGFzIGEgdGFyZ2V0IGEgcHJvY2VzcyB0aGF0IGlzIGFscmVhZHkgcnVubmluZywgdXNlCi0tdGhl IEBjb2Rle2F0dGFjaH0gY29tbWFuZCAoQHB4cmVme0F0dGFjaCwgLERlYnVnZ2luZyBhbiBBbHJl YWR5LXJ1bm5pbmcKLS1Qcm9jZXNzfSkuCi0rVGhlcmUgYXJlIG11bHRpcGxlIGNsYXNzZXMgb2Yg dGFyZ2V0cyBzdWNoIGFzOiBwcm9jZXNzZXMsIGV4ZWN1dGFibGUgZmlsZXMgb3IKLStyZWNvcmRp bmcgc2Vzc2lvbnMuICBDb3JlIGZpbGVzIGJlbG9uZyB0byB0aGUgcHJvY2VzcyBjbGFzcywgdGhl cmUgY2FuIGJlCi0rYWN0aXZlIG9ubHkgb25lIG9mIGEgY29yZSBvciBhIHJ1bm5pbmcgcHJvY2Vz cy4gIE90aGVyd2lzZSBAdmFsdWV7R0RCTn0gY2FuCi0rd29yayBjb25jdXJyZW50bHkgb24gbXVs dGlwbGUgYWN0aXZlIHRhcmdldHMsIG9uZSBpbiBlYWNoIGNsYXNzLiAgVGhpcyBhbGxvd3MKLSt5 b3UgdG8gKGZvciBleGFtcGxlKSBzdGFydCBhIHByb2Nlc3MgYW5kIGluc3BlY3QgaXRzIGFjdGl2 aXR5IHdoaWxlIHN0aWxsCi0raGF2aW5nIGFjY2VzcyB0byB0aGUgZXhlY3V0YWJsZSBmaWxlIGFm dGVyIHRoZSBwcm9jZXNzIGZpbmlzaGVzLiAgT3IgaWYgeW91Ci0rc3RhcnQgcHJvY2VzcyByZWNv cmRpbmcgKEBweHJlZntSZXZlcnNlIEV4ZWN1dGlvbn0pIGFuZCBAY29kZXtyZXZlcnNlLXN0ZXB9 Ci0rdGhlcmUgeW91IGFyZSBwcmVzZW50ZWQgYSB2aXJ0dWFsIGxheWVyIG9mIHRoZSByZWNvcmRp bmcgdGFyZ2V0IHdoaWxlIHRoZQotK3Byb2Nlc3MgdGFyZ2V0IHJlbWFpbnMgc3RvcHBlZCBhdCB0 aGUgY2hyb25vbG9naWNhbGx5IGxhc3QgcG9pbnQgb2YgdGhlIHByb2Nlc3MKLStleGVjdXRpb24u Ci0rCi0rVXNlIHRoZSBAY29kZXtjb3JlLWZpbGV9IGFuZCBAY29kZXtleGVjLWZpbGV9IGNvbW1h bmRzIHRvIHNlbGVjdCBhIG5ldyBjb3JlCi0rZmlsZSBvciBleGVjdXRhYmxlIHRhcmdldCAoQHB4 cmVme0ZpbGVzLCAsQ29tbWFuZHMgdG8gU3BlY2lmeSBGaWxlc30pLiAgVG8KLStzcGVjaWZ5IGFz IGEgdGFyZ2V0IGEgcHJvY2VzcyB0aGF0IGlzIGFscmVhZHkgcnVubmluZywgdXNlIHRoZSBAY29k ZXthdHRhY2h9Ci0rY29tbWFuZCAoQHB4cmVme0F0dGFjaCwgLERlYnVnZ2luZyBhbiBBbHJlYWR5 LXJ1bm5pbmcgUHJvY2Vzc30pLgotIAotIEBub2RlIFRhcmdldCBDb21tYW5kcwotIEBzZWN0aW9u IENvbW1hbmRzIGZvciBNYW5hZ2luZyBUYXJnZXRzCi0tLS0gLi9nZGIvaW5mY21kLmMJMjAxMC0w NS0yNCAxOTozNzowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9pbmZjbWQuYwkyMDEwLTA1 LTI0IDE5OjQxOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTQ4Myw2ICs0ODMsMTMgQEAgcnVuX2Nv bW1hbmRfMSAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LAotIAotICAgZG9udF9yZXBlYXQgKCk7 Ci0gCi0rICBpZiAoY29yZV9iZmQpCi0rICAgIHsKLSsgICAgICBjb3JlX2ZpbGVfY29tbWFuZCAo TlVMTCwgZnJvbV90dHkpOwotKyAgICAgIGlmIChjb3JlX2JmZCkKLSsJd2FybmluZyAoXygiQ29y ZSBmaWxlIG5vdCB1bmxvYWRlZC4iKSk7Ci0rICAgIH0KLSsKLSAgIGtpbGxfaWZfYWxyZWFkeV9y dW5uaW5nIChmcm9tX3R0eSk7Ci0gCi0gICBpbml0X3dhaXRfZm9yX2luZmVyaW9yICgpOwotQEAg LTIzNzMsNiArMjM4MCwxMyBAQCBhdHRhY2hfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5Ci0gCWVycm9yIChfKCJOb3Qga2lsbGVkLiIpKTsKLSAgICAgfQotIAotKyAgaWYgKGNvcmVf YmZkKQotKyAgICB7Ci0rICAgICAgY29yZV9maWxlX2NvbW1hbmQgKE5VTEwsIGZyb21fdHR5KTsK LSsgICAgICBpZiAoY29yZV9iZmQpCi0rCXdhcm5pbmcgKF8oIkNvcmUgZmlsZSBub3QgdW5sb2Fk ZWQuIikpOwotKyAgICB9Ci0rCi0gICAvKiBDbGVhbiB1cCBhbnkgbGVmdG92ZXJzIGZyb20gb3Ro ZXIgcnVucy4gIFNvbWUgb3RoZXIgdGhpbmdzIGZyb20KLSAgICAgIHRoaXMgZnVuY3Rpb24gc2hv dWxkIHByb2JhYmx5IGJlIG1vdmVkIGludG8gdGFyZ2V0X3ByZV9pbmZlcmlvci4gICovCi0gICB0 YXJnZXRfcHJlX2luZmVyaW9yIChmcm9tX3R0eSk7Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2NvcmVmaWxlLmV4cAkyMDEwLTAxLTA5IDAxOjE0OjExLjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJMjAxMC0wNS0yNCAxOTozODo1 Ni4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODIsMyArMTgyLDYyIEBAIGdkYl9sb2FkICR7YmluZmls ZX0KLSBnZGJfdGVzdCAidXAiICIjXFswLTlcXSogKlxbMC05eGEtZkgnXF0qIGluIC4qIFxcKC4q XFwpLioiICJ1cCBpbiBjb3JlZmlsZS5leHAgKHJlaW5pdCkiCi0gCi0gZ2RiX3Rlc3QgImNvcmUi ICJObyBjb3JlIGZpbGUgbm93LiIKLSsKLSsKLSsjIFRlc3QgYSBydW4gKHN0YXJ0KSBjb21tYW5k IHdpbGwgY2xlYXIgYW55IGxvYWRlZCBjb3JlIGZpbGUuCi0rCi0rZ2RiX3Rlc3QgImNvcmUtZmls ZSAkY29yZWZpbGUiICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLioiICJydW46IGxvYWQgY29yZSBh Z2FpbiIKLStnZGJfdGVzdCAiaW5mbyBmaWxlcyIgIlxyXG5Mb2NhbCBjb3JlIGR1bXAgZmlsZTpc clxuLioiICJydW46IHNhbml0eSBjaGVjayB3ZSBzZWUgdGhlIGNvcmUgZmlsZSIKLSsKLStzZXQg dGVzdCAicnVuOiB3aXRoIGNvcmUiCi0raWYgW3J1bnRvX21haW5dIHsKLSsgICAgcGFzcyAkdGVz dAotK30gZWxzZSB7Ci0rICAgIGZhaWwgJHRlc3QKLSt9Ci0rCi0rc2V0IHRlc3QgInJ1bjogY29y ZSBmaWxlIGlzIGNsZWFyZWQiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gZmlsZXMiICR0ZXN0 IHsKLSsgICAgIlxyXG5Mb2NhbCBjb3JlIGR1bXAgZmlsZTpcclxuLipcclxuJGdkYl9wcm9tcHQg JCIgewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSsgICAgIlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0r CXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStnZGJfZXhpdAotKwotKwotKyMgVGVzdCBhbiBh dHRhY2ggY29tbWFuZCB3aWxsIGNsZWFyIGFueSBsb2FkZWQgY29yZSBmaWxlLgotKwotK2lmICFb aXNfcmVtb3RlIHRhcmdldF0gewotKyAgICBzZXQgdGVzdCAiYXR0YWNoOiBzcGF3biBzbGVlcCIK LSsgICAgc2V0IHJlcyBbcmVtb3RlX3NwYXduIGhvc3QgIiRiaW5maWxlIHNsZWVwIl07Ci0rICAg IGlmIHsgJHJlcyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsKLSsJcGVycm9yICIkdGVzdCBmYWlsZWQu IgotKwlmYWlsICR0ZXN0Ci0rCXJldHVybgotKyAgICB9Ci0rICAgIHNldCBwaWQgW2V4cF9waWQg LWkgJHJlc10KLSsgICAgIyBXZSBkbyBub3QgY2FyZSBvZiB0aGUgc3RhcnR1cCBwaGFzZSB3aGVy ZSBpdCB3aWxsIGJlIGNhdWdodC4KLSsKLSsgICAgZ2RiX3N0YXJ0Ci0rCi0rICAgIGdkYl90ZXN0 ICJjb3JlLWZpbGUgJGNvcmVmaWxlIiAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qIiAiYXR0YWNo OiBsb2FkIGNvcmUgYWdhaW4iCi0rICAgIGdkYl90ZXN0ICJpbmZvIGZpbGVzIiAiXHJcbkxvY2Fs IGNvcmUgZHVtcCBmaWxlOlxyXG4uKiIgImF0dGFjaDogc2FuaXR5IGNoZWNrIHdlIHNlZSB0aGUg Y29yZSBmaWxlIgotKwotKyAgICBnZGJfdGVzdCAiYXR0YWNoICRwaWQiICJBdHRhY2hpbmcgdG8g cHJvY2VzcyAkcGlkXHJcbi4qIiAiYXR0YWNoOiB3aXRoIGNvcmUiCi0rCi0rICAgIHNldCB0ZXN0 ICJhdHRhY2g6IGNvcmUgZmlsZSBpcyBjbGVhcmVkIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAi aW5mbyBmaWxlcyIgJHRlc3QgewotKwkiXHJcbkxvY2FsIGNvcmUgZHVtcCBmaWxlOlxyXG4uKlxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBmYWlsICR0ZXN0Ci0rCX0KLSsJIlxyXG4kZ2RiX3By b21wdCAkIiB7Ci0rCSAgICBwYXNzICR0ZXN0Ci0rCX0KLSsgICAgfQotKwotKyAgICBnZGJfZXhp dAotK30KLS0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZW1ha2VyLmMJMjAxMC0wMS0w MSAwODozMjowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Y29yZW1ha2VyLmMJMjAxMC0wNS0yNCAxOTozODo1Ni4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzMs OCArMTMzLDE0IEBAIGZ1bmMxICgpCi0gICBmdW5jMiAoKTsKLSB9Ci0gCi0taW50IG1haW4gKCkK LStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gewotKyAgaWYgKGFyZ2MgPT0g MiAmJiBzdHJjbXAgKGFyZ3ZbMV0sICJzbGVlcCIpID09IDApCi0rICAgIHsKLSsgICAgICBzbGVl cCAoNjApOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0gICBtbWFwZGF0YSAoKTsKLSAgIGZ1 bmMxICgpOwotICAgcmV0dXJuIDA7CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjE0NjU5LXByZWxpbmst ZHluYnNzLnBhdGNoIGIvZ2RiLWJ6NjE0NjU5LXByZWxpbmstZHluYnNzLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTUxNGVjLi4wMDAwMDAwCi0tLSBhL2dkYi1iejYxNDY1 OS1wcmVsaW5rLWR5bmJzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNyArMCwwIEBACi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wNy9tc2cwMDIzNy5odG1s Ci1TdWJqZWN0OiBbcGF0Y2hdIEZpeCByZWdyZXNzaW9uIG9uIHByZWxpbmtlZCBleGVjdXRhYmxl cwotCi1IaSwKLQotdGhlcmUgaXMgYSByZWdyZXNzaW9uIHNpbmNlIGdkYi03LjAgZm9yIGEgY29t YmluYXRpb24gb2Y6Ci0gKiBwcmVsaW5rZWQKLSAqIG1haW4gZXhlY3V0YWJsZQotICogdXNpbmcg c2VwYXJhdGUgZGVidWcgaW5mbwotICogdXNpbmcgY29weSByZWxvY2F0aW9ucwotCi1JdCBpcyBz aW5jZSBhIHBhdGNoIGZvciBib3RoIFBJRSBhbmQgKEFGQUlLKSBPU1ggc3VwcG9ydDoKLQlbY29t bWl0XSBzeW1zX2Zyb21fb2JqZmlsZTogUmVsYXRpdml6ZSBhbHNvIE1BSU5MSU5FCi0JaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDAwODAuaHRtbAotCi13 aGljaCBzdGFydGVkIHRvIHVzZSBwcm9ibGVtYXRpYyBhZGRyX2luZm9fbWFrZV9yZWxhdGl2ZSBl dmVuIGZvciBtYWluCi1leGVjdXRhYmxlcy4gIHByZWxpbms8LT5nZGIgZGlzY3Vzc2lvbiBhdDoK LQlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYxNDY1OQotCi1D dXJyZW50bHkgaW4gdGhlIHVuZm9ydHVuYXRlbHkgZXhlY3V0YWJsZXMgR0RCIGhhcyBpbnZhbGlk IGRpc3BsY2VtZW50IGZvcgotc3ltYm9scyBpbiAuYnNzOgotCWludCBic3N2YXIsICpic3N2YXJw ID0gJmJzc3ZhcjsKLQkoZ2RiKSBwICZic3N2YXIKLQkkMSA9IChpbnQgKikgMHg2MDBiNTQKLQko Z2RiKSBwIGJzc3ZhcnAKLQkkMiA9IChpbnQgKikgMHg2MDBiNTAKLQotPGFic3RyYWN0LWhpZ2hl ci1wb2ludC1vZi12aWV3PgotYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgY291bGQganVzdCBzaW1w bHkgc3VidHJhY3QgZW50cnkgcG9pbnQgYWRkcmVzcyBhbmQKLXByb3ZpZGUgc2luZ2xlIENPUkVf QUREUiBvYmpmaWxlLT5vZmZzZXQgKGluc3RlYWQgb2YgdGhlIGN1cnJlbnQKLXNlY3Rpb25fb2Zm c2V0cyBhcnJheSB3aXRoIG9mZnNldHMgc3BlY2lmaWMgZm9yIGVhY2ggc2VjdGlvbikuICBMaW51 eCBzeXN0ZW1zCi11c2UgYWx3YXlzIHNpbmdsZSBvZmZzZXQgZm9yIHRoZSB3aG9sZSBvYmpmaWxl LiAgQUZBSUsgdGhlc2UgcGVyLXNlY3Rpb24KLW9mZnNldHMgYXJlIHRoZXJlIGZvciBzb21lIGVt YmVkZGVkIHRhcmdldHMuICBDdXJpb3VzbHkgR0RCIGFscmVhZHkgdXNlcyBhdAotbWFueSBwbGFj ZXMKLQliYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1Rf T0ZGX1RFWFQgKG9iamZpbGUpKTsKLWluc3RlYWQgb2YgdXNpbmcgb2Zmc2V0IGZvciB0aGUgYXBw cm9wcmlhdGUgc2VjdGlvbiBhdCB0aGF0IHBsYWNlIGFuZCBub2JvZHkKLWNvbXBsYWlucy4KLTwv YWJzdHJhY3QtaGlnaGVyLXBvaW50LW9mLXZpZXc+Ci0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZf NjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExMy1saW51eC1nbnUuCi0KLVByb3Bvc2luZyBmb3Ig dGhlIGdkYi03LjIgYnJhbmNoLiAgSSBoYWQgcHJvYmxlbXMgZml4aW5nIHVwIG15IGNyYXNoaW5n IFguCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0wNy0xNSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBzeW1maWxlLmMgKGFkZHJfc2Vj dGlvbl9uYW1lKTogTmV3IGZ1bmN0aW9uLgotCShhZGRyc19zZWN0aW9uX2NvbXBhcik6IFVzZSBp dC4KLQkoYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUpOiBVc2UgaXQuICBNb3ZlIHZhcmlhYmxlIHNl Y3RfbmFtZSBpbnRvIGEgbW9yZQotCWlubmVyIGJsb2NrLiAgTWFrZSAiLmR5bmJzcyIgYW5kICIu c2R5bmJzcyIgY2hlY2tzIG1vcmUgc3RyaWN0LgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMC0wNy0x NSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIu YmFzZS9wcmVsaW5rLWxpYi5jIChjb3B5cmVsb2MpOiBOZXcgaW5pdGlhbGl6ZWQgdmFyaWFibGUu Ci0JKiBnZGIuYmFzZS9wcmVsaW5rLmMgKGNvcHlyZWxvYywgYnNzdmFyLCBic3N2YXJwKTogTmV3 IHZhcmlhYmxlcy4KLQkobWFpbik6IFVzZSBjb3B5cmVsb2MuCi0JKiBnZGIuYmFzZS9wcmVsaW5r LmV4cCAoc3BsaXQgZGVidWcgb2YgZXhlY3V0YWJsZSkKLQkoLmR5bmJzcyB2cy4gLmJzcyBhZGRy ZXNzIHNoaWZ0KTogTmV3IHRlc3RzLgotCi0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIv c3ltZmlsZS5jCi1AQCAtNTQ3LDYgKzU0NywyMyBAQCByZWxhdGl2ZV9hZGRyX2luZm9fdG9fc2Vj dGlvbl9vZmZzZXRzIChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpzZWN0aW9uX29mZnNldHMsCi0g ICAgIH0KLSB9Ci0gCi0rLyogVHJhbnNmb3JtIHNlY3Rpb24gbmFtZSBTIGZvciBhIG5hbWUgY29t cGFyaXNvbi4gIHByZWxpbmsgY2FuIHNwbGl0IHNlY3Rpb24KLSsgICBgLmJzcycgaW50byB0d28g c2VjdGlvbnMgYC5keW5ic3MnIGFuZCBgLmJzcycgKGluIHRoaXMgb3JkZXIpLiAgU2ltaWxhcmx5 Ci0rICAgcHJlbGluayBjYW4gc3BsaXQgYC5zYnNzJyBpbnRvIGAuc2R5bmJzcycgYW5kIGAuc2Jz cycuICBVc2UgdmlydHVhbCBhZGRyZXNzCi0rICAgb2YgdGhlIG5ldyBgLmR5bmJzcycgKGAuc2R5 bmJzcycpIHNlY3Rpb24gYXMgdGhlIGFkamFjZW50IG5ldyBgLmJzcycKLSsgICAoYC5zYnNzJykg c2VjdGlvbiBoYXMgaW52YWxpZCAoaW5jcmVhc2VkKSB2aXJ0dWFsIGFkZHJlc3MuICAqLwotKwot K3N0YXRpYyBjb25zdCBjaGFyICoKLSthZGRyX3NlY3Rpb25fbmFtZSAoY29uc3QgY2hhciAqcykK LSt7Ci0rICBpZiAoc3RyY21wIChzLCAiLmR5bmJzcyIpID09IDApCi0rICAgIHJldHVybiAiLmJz cyI7Ci0rICBpZiAoc3RyY21wIChzLCAiLnNkeW5ic3MiKSA9PSAwKQotKyAgICByZXR1cm4gIi5z YnNzIjsKLSsKLSsgIHJldHVybiBzOwotK30KLSsKLSAvKiBxc29ydCBjb21wYXJhdG9yIGZvciBh ZGRyc19zZWN0aW9uX3NvcnQuICBTb3J0IGVudHJpZXMgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5Ci0g ICAgdGhlaXIgKG5hbWUsIHNlY3RpbmRleCkgcGFpci4gIHNlY3RpbmRleCBtYWtlcyB0aGUgc29y dCBieSBuYW1lIHN0YWJsZS4gICovCi0gCi1AQCAtNTU3LDcgKzU3NCw3IEBAIGFkZHJzX3NlY3Rp b25fY29tcGFyIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0gICBjb25zdCBzdHJ1 Y3Qgb3RoZXJfc2VjdGlvbnMgKmIgPSAqKChzdHJ1Y3Qgb3RoZXJfc2VjdGlvbnMgKiopIGJwKTsK LSAgIGludCByZXR2YWwsIGFfaWR4LCBiX2lkeDsKLSAKLS0gIHJldHZhbCA9IHN0cmNtcCAoYS0+ bmFtZSwgYi0+bmFtZSk7Ci0rICByZXR2YWwgPSBzdHJjbXAgKGFkZHJfc2VjdGlvbl9uYW1lIChh LT5uYW1lKSwgYWRkcl9zZWN0aW9uX25hbWUgKGItPm5hbWUpKTsKLSAgIGlmIChyZXR2YWwpCi0g ICAgIHJldHVybiByZXR2YWw7Ci0gCi1AQCAtNjQxLDE0ICs2NTgsMTYgQEAgYWRkcl9pbmZvX21h a2VfcmVsYXRpdmUgKHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMsIGJmZCAqYWJmZCkK LSAKLSAgIHdoaWxlICgqYWRkcnNfc29ydGVkKQotICAgICB7Ci0tICAgICAgY29uc3QgY2hhciAq c2VjdF9uYW1lID0gKCphZGRyc19zb3J0ZWQpLT5uYW1lOwotKyAgICAgIGNvbnN0IGNoYXIgKnNl Y3RfbmFtZSA9IGFkZHJfc2VjdGlvbl9uYW1lICgoKmFkZHJzX3NvcnRlZCktPm5hbWUpOwotIAot ICAgICAgIHdoaWxlICgqYWJmZF9hZGRyc19zb3J0ZWQKLS0JICAgICAmJiBzdHJjbXAgKCgqYWJm ZF9hZGRyc19zb3J0ZWQpLT5uYW1lLCBzZWN0X25hbWUpIDwgMCkKLSsJICAgICAmJiBzdHJjbXAg KGFkZHJfc2VjdGlvbl9uYW1lICgoKmFiZmRfYWRkcnNfc29ydGVkKS0+bmFtZSksCi0rCQkJc2Vj dF9uYW1lKSA8IDApCi0gCWFiZmRfYWRkcnNfc29ydGVkKys7Ci0gCi0gICAgICAgaWYgKCphYmZk X2FkZHJzX3NvcnRlZAotLQkgICYmIHN0cmNtcCAoKCphYmZkX2FkZHJzX3NvcnRlZCktPm5hbWUs IHNlY3RfbmFtZSkgPT0gMCkKLSsJICAmJiBzdHJjbXAgKGFkZHJfc2VjdGlvbl9uYW1lICgoKmFi ZmRfYWRkcnNfc29ydGVkKS0+bmFtZSksCi0rCQkgICAgIHNlY3RfbmFtZSkgPT0gMCkKLSAJewot IAkgIGludCBpbmRleF9pbl9hZGRyczsKLSAKLUBAIC02NzYsNyArNjk1LDYgQEAgYWRkcl9pbmZv X21ha2VfcmVsYXRpdmUgKHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMsIGJmZCAqYWJm ZCkKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBhZGRycy0+bnVtX3NlY3Rpb25zICYmIGFkZHJzLT5v dGhlcltpXS5uYW1lOyBpKyspCi0gICAgIHsKLS0gICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUg PSBhZGRycy0+b3RoZXJbaV0ubmFtZTsKLSAgICAgICBzdHJ1Y3Qgb3RoZXJfc2VjdGlvbnMgKnNl Y3QgPSBhZGRyc190b19hYmZkX2FkZHJzW2ldOwotIAotICAgICAgIGlmIChzZWN0KQotQEAgLTY5 NCw2ICs3MTIsOSBAQCBhZGRyX2luZm9fbWFrZV9yZWxhdGl2ZSAoc3RydWN0IHNlY3Rpb25fYWRk cl9pbmZvICphZGRycywgYmZkICphYmZkKQotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0rCSAgLyog YWRkcl9zZWN0aW9uX25hbWUgdHJhbnNmb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIFNFQ1RfTkFN RS4gICovCi0rCSAgY29uc3QgY2hhciAqc2VjdF9uYW1lID0gYWRkcnMtPm90aGVyW2ldLm5hbWU7 Ci0rCi0gCSAgLyogVGhpcyBzZWN0aW9uIGRvZXMgbm90IGV4aXN0IGluIEFCRkQsIHdoaWNoIGlz IG5vcm1hbGx5Ci0gCSAgICAgdW5leHBlY3RlZCBhbmQgd2Ugd2FudCB0byBpc3N1ZSBhIHdhcm5p bmcuCi0gCi1AQCAtNzA0LDEyICs3MjUsMjAgQEAgYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgKHN0 cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMsIGJmZCAqYWJmZCkKLSAJICAgICBhIHdhcm5p bmcuICBTaGFyZWQgbGlicmFyaWVzIGNvbnRhaW4ganVzdCB0aGUgc2VjdGlvbgotIAkgICAgICIu Z251LmxpYmxpc3QiIGJ1dCBpdCBpcyBub3QgbWFya2VkIGFzIGxvYWRhYmxlIHRoZXJlLiAgVGhl cmUgaXMKLSAJICAgICBubyBvdGhlciB3YXkgdG8gaWRlbnRpZnkgdGhlbSB0aGFuIGJ5IHRoZWly IG5hbWUgYXMgdGhlIHNlY3Rpb25zCi0tCSAgICAgY3JlYXRlZCBieSBwcmVsaW5rIGhhdmUgbm8g c3BlY2lhbCBmbGFncy4gICovCi0rCSAgICAgY3JlYXRlZCBieSBwcmVsaW5rIGhhdmUgbm8gc3Bl Y2lhbCBmbGFncy4KLSsKLSsJICAgICBGb3IgdGhlIHNlY3Rpb25zIGAuYnNzJyBhbmQgYC5zYnNz JyBzZWUgYWRkcl9zZWN0aW9uX25hbWUuICAqLwotIAotIAkgIGlmICghKHN0cmNtcCAoc2VjdF9u YW1lLCAiLmdudS5saWJsaXN0IikgPT0gMAotIAkJfHwgc3RyY21wIChzZWN0X25hbWUsICIuZ251 LmNvbmZsaWN0IikgPT0gMAotLQkJfHwgc3RyY21wIChzZWN0X25hbWUsICIuZHluYnNzIikgPT0g MAotLQkJfHwgc3RyY21wIChzZWN0X25hbWUsICIuc2R5bmJzcyIpID09IDApKQotKwkJfHwgKHN0 cmNtcCAoc2VjdF9uYW1lLCAiLmJzcyIpID09IDAKLSsJCSAgICAmJiBpID4gMAotKwkJICAgICYm IHN0cmNtcCAoYWRkcnMtPm90aGVyW2kgLSAxXS5uYW1lLCAiLmR5bmJzcyIpID09IDAKLSsJCSAg ICAmJiBhZGRyc190b19hYmZkX2FkZHJzW2kgLSAxXSAhPSBOVUxMKQotKwkJfHwgKHN0cmNtcCAo c2VjdF9uYW1lLCAiLnNic3MiKSA9PSAwCi0rCQkgICAgJiYgaSA+IDAKLSsJCSAgICAmJiBzdHJj bXAgKGFkZHJzLT5vdGhlcltpIC0gMV0ubmFtZSwgIi5zZHluYnNzIikgPT0gMAotKwkJICAgICYm IGFkZHJzX3RvX2FiZmRfYWRkcnNbaSAtIDFdICE9IE5VTEwpKSkKLSAJICAgIHdhcm5pbmcgKF8o InNlY3Rpb24gJXMgbm90IGZvdW5kIGluICVzIiksIHNlY3RfbmFtZSwKLSAJCSAgICAgYmZkX2dl dF9maWxlbmFtZSAoYWJmZCkpOwotIAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVs aW5rLWxpYi5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ByZWxpbmstbGliLmMKLUBA IC0xNiw2ICsxNiw4IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKi8KLSAKLStpbnQgY29weXJlbG9j ID0gMTsKLSsKLSBpbnQKLSBnICh2b2lkICgqcCkodm9pZCkpCi0gewotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJl bGluay5jCi1AQCAtMTgsNiArMTgsMTEgQEAKLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAKLStl eHRlcm4gaW50IGNvcHlyZWxvYzsKLSsKLSsvKiBUZXN0IEdEQiBpdHNlbGYgZmluZHMgYCZic3N2 YXInIHJpZ2h0LiAgICovCi0rc3RhdGljIGludCBic3N2YXIsICpic3N2YXJwID0gJmJzc3ZhcjsK LSsKLSBleHRlcm4gdm9pZCAoKmggKHZvaWQpKSAodm9pZCAoKikodm9pZCkpOwotIAotIGludAot QEAgLTI1LDUgKzMwLDYgQEAgbWFpbiAodm9pZCkKLSB7Ci0gICB2b2lkICgqZikgKHZvaWQgKCop KHZvaWQpKSA9IGggKCk7Ci0gICBwcmludGYgKCIlcFxuIiwgZik7Ci0rICBwcmludGYgKCIlZFxu IiwgY29weXJlbG9jKTsKLSAgIGYgKDApOwotIH0KLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvcHJlbGluay5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJlbGluay5leHAK LUBAIC01Nyw2ICs1NywxMyBAQCBpZiB7JHByZWxpbmtfYXJncyA9PSAiIn0gewotICAgICByZXR1 cm4gLTEKLSB9Ci0gCi0rc2V0IHRlc3QgInNwbGl0IGRlYnVnIG9mIGV4ZWN1dGFibGUiCi0raWYg W2dkYl9nbnVfc3RyaXBfZGVidWcgJGJpbmZpbGVdIHsKLSsgICAgZmFpbCAkdGVzdAotK30gZWxz ZSB7Ci0rICAgIHBhc3MgJHRlc3QKLSt9Ci0rCi0gaWYgIVtwcmVsaW5rX3llcyAkcHJlbGlua19h cmdzXSB7Ci0gICAgICMgTWF5YmUgd2UgZG9uJ3QgaGF2ZSBwcmVsaW5rLgotICAgICByZXR1cm4g LTEKLUBAIC0xMDUsMyArMTEyLDUgQEAgY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotIGdkYl90 ZXN0X25vX291dHB1dCAic2V0IHZlcmJvc2Ugb24iCi0gCi0gZ2RiX3Rlc3QgImNvcmUtZmlsZSAk b2JqZGlyLyRzdWJkaXIvcHJlbGluay5jb3JlIiAiVXNpbmcgUElDIFxcKFBvc2l0aW9uIEluZGVw ZW5kZW50IENvZGVcXCkgcHJlbGluayBkaXNwbGFjZW1lbnQgMHhcW14wXF1cWzAtOWEtZlxdKiBm b3IgXFteXHJcblxdKltmaWxlIHRhaWwgJHtsaWJmaWxlfV0uKiIgInNlZW4gZGlzcGxhY2VtZW50 IG1lc3NhZ2UiCi0rCi0rZ2RiX3Rlc3QgInAgJmJzc3ZhciA9PSBic3N2YXJwIiAiID0gMSIgIi5k eW5ic3MgdnMuIC5ic3MgYWRkcmVzcyBzaGlmdCIKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejYyNzQz Mi1sb29wLXN0YXRpYy1zZWxmLWNsYXNzLnBhdGNoIGIvZ2RiLWJ6NjI3NDMyLWxvb3Atc3RhdGlj LXNlbGYtY2xhc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMDNmMTcu LjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjI3NDMyLWxvb3Atc3RhdGljLXNlbGYtY2xhc3MucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyODAgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDA0NDAuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXgg aW5maW5pdGUgbG9vcCBjcmFzaCBvbiBzZWxmLXJlZmVyZW5jaW5nIGNsYXNzCi0KLUhpLAotCi1j bGFzcyBDIHsgc3RhdGljIEMgczsgfTsgaXMgYSBwcm9ibGVtIGZvciBHREIgYXMgaXQgcmVmZXJl bmNlcyBpdHNlbGYgYW5kIGl0Ci1jYW4gY3Jhc2guICBEb3duc3RyZWFtIEJ1ZzoKLQlodHRwczov L2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYyNzQzMgotCi0jMyAgMHgwMDAw MDAwMDAwNWIyY2M1IGluIGdudXYzX3Bhc3NfYnlfcmVmZXJlbmNlICh0eXBlPTB4MTA0NGQzYzgp IGF0IC4uLy4uL2dkYi9nbnUtdjMtYWJpLmM6ODQwCi0jNCAgMHgwMDAwMDAwMDAwNWIyY2M1IGlu IGdudXYzX3Bhc3NfYnlfcmVmZXJlbmNlICh0eXBlPTB4MTA0NGQzYzgpIGF0IC4uLy4uL2dkYi9n bnUtdjMtYWJpLmM6ODQwCi1bLi4uXQotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82 NC1tMzIsaTY4Nn0tZmVkb3JhMTMtbGludXgtZ251LgotCi1GWUkgdGhlIC5jYyBmaWxlIGlzIG5v dCByZXByb2R1Y2libGUgb24gLSBhbmQgb25seSBvbiAtIEZlZG9yYSAxNCBHQ0MsIGZpbGVkOgot CWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjM3MzE1Ci0KLUkg d291bGQgZXZlbiBjaGVjayBpdCBpbiBpbiBzb21lIHRpbWUuCi0KLQotVGhhbmtzLAotSmFuCi0K LQotZ2RiLwotMjAxMC0wOS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JRml4IEdEQiBjcmFzaCBvbiBpbmZlcmlvciBjYWxscyB3aXRoIHNlbGYtcmVm ZXJlbmNpbmcgY2xhc3Nlcy4KLQkqIGdudS12My1hYmkuYyAoZ251djNfcGFzc19ieV9yZWZlcmVu Y2UpOiBEbyBub3QgY2FsbCBpdHNlbGYgb24gc3RhdGljCi0JbWVtYmVyIGZpZWxkcy4KLQotZ2Ri L3Rlc3RzdWl0ZS8KLTIwMTAtMDktMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCUZpeCBHREIgY3Jhc2ggb24gaW5mZXJpb3IgY2FsbHMgd2l0aCBzZWxm LXJlZmVyZW5jaW5nIGNsYXNzZXMuCi0JKiBnZGIuZHdhcmYyL2R3Mi1jcC1pbmZjYWxsLXJlZi1z dGF0aWMuZXhwOiBOZXcgZmlsZS4KLQkqIGdkYi5kd2FyZjIvZHcyLWNwLWluZmNhbGwtcmVmLXN0 YXRpYy1tYWluLmM6IE5ldyBmaWxlLgotCSogZ2RiLmR3YXJmMi9kdzItY3AtaW5mY2FsbC1yZWYt c3RhdGljLlM6IE5ldyBmaWxlLgotCi0tLS0gYS9nZGIvZ251LXYzLWFiaS5jCi0rKysgYi9nZGIv Z251LXYzLWFiaS5jCi1AQCAtODM1LDkgKzgzNSwxMCBAQCBnbnV2M19wYXNzX2J5X3JlZmVyZW5j ZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0gICAgICBieSByZWZlcmVuY2UsIHNvIGRvZXMgdGhpcyBj bGFzcy4gIFNpbWlsYXJseSBmb3IgbWVtYmVycywgd2hpY2gKLSAgICAgIGFyZSBjb25zdHJ1Y3Rl ZCB3aGVuZXZlciB0aGlzIGNsYXNzIGlzLiAgV2UgZG8gbm90IG5lZWQgdG8gd29ycnkKLSAgICAg IGFib3V0IHJlY3Vyc2l2ZSBsb29wcyBoZXJlLCBzaW5jZSB3ZSBhcmUgb25seSBsb29raW5nIGF0 IG1lbWJlcnMKLS0gICAgIG9mIGNvbXBsZXRlIGNsYXNzIHR5cGUuICAqLwotKyAgICAgb2YgY29t cGxldGUgY2xhc3MgdHlwZS4gIEFsc28gaWdub3JlIGFueSBzdGF0aWMgbWVtYmVycy4gICovCi0g ICBmb3IgKGZpZWxkbnVtID0gMDsgZmllbGRudW0gPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBmaWVs ZG51bSsrKQotLSAgICBpZiAoZ251djNfcGFzc19ieV9yZWZlcmVuY2UgKFRZUEVfRklFTERfVFlQ RSAodHlwZSwgZmllbGRudW0pKSkKLSsgICAgaWYgKFRZUEVfRklFTERfTE9DX0tJTkQgKHR5cGUs IGZpZWxkbnVtKSA9PSBGSUVMRF9MT0NfS0lORF9CSVRQT1MKLSsgICAgICAgICYmIGdudXYzX3Bh c3NfYnlfcmVmZXJlbmNlIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbnVtKSkpCi0gICAg ICAgcmV0dXJuIDE7Ci0gCi0gICByZXR1cm4gMDsKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY3AtaW5mY2FsbC1yZWYtc3RhdGljLW1haW4uYwotQEAg LTAsMCArMSw1MSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwot Ky8qIGNsYXNzIEMKLSsgICAgIHsKLSsgICAgIHB1YmxpYzoKLSsgICAgICAgc3RhdGljIEMgczsK LSsgICAgIH07Ci0rICAgQyBDOjpzOwotKyAgIEMgZigpCi0rICAgewotKyAgICAgcmV0dXJuIEM6 OnM7Ci0rICAgfSAgKi8KLSsKLSthc20gKCIuZ2xvYmwgY3VfdGV4dF9zdGFydCIpOwotK2FzbSAo ImN1X3RleHRfc3RhcnQ6Iik7Ci0rCi0rYXNtICgiLmdsb2JsIGZfc3RhcnQiKTsKLSthc20gKCJm X3N0YXJ0OiIpOwotKwotK3ZvaWQKLStmICh2b2lkKQotK3sKLSt9Ci0rCi0rYXNtICgiLmdsb2Js IGZfZW5kIik7Ci0rYXNtICgiZl9lbmQ6Iik7Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0r ICBmICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK2FzbSAoIi5nbG9ibCBjdV90ZXh0X2VuZCIp OwotK2FzbSAoImN1X3RleHRfZW5kOiIpOwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1jcC1pbmZjYWxsLXJlZi1zdGF0aWMuUwotQEAgLTAsMCArMSwx MTUgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBEZWJ1 ZyBpbmZvcm1hdGlvbiAqLwotKwotKwkuc2VjdGlvbiAuZGVidWdfaW5mbwotKy5MY3UxX2JlZ2lu OgotKwkvKiBDVSBoZWFkZXIgKi8KLSsJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkv KiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLwotKy5MY3UxX3N0YXJ0OgotKwkuMmJ5dGUJ MgkJCQkvKiBEV0FSRiBWZXJzaW9uICovCi0rCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBP ZmZzZXQgaW50byBhYmJyZXYgc2VjdGlvbiAqLwotKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6 ZSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RB R19jb21waWxlX3VuaXQgKi8KLSsJLjRieXRlCWN1X3RleHRfc3RhcnQJCQkvKiBEV19BVF9sb3df cGMgKi8KLSsJLjRieXRlCWN1X3RleHRfZW5kCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkuYXNj aWkJImZpbGUxLnR4dFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmFzY2lpCSJHTlUgQyAzLjMu M1wwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTQJCQkJLyogRFdfQVRfbGFuZ3Vh Z2UgKERXX0xBTkdfQ19wbHVzX3BsdXMpICovCi0rCi0rLkx0eXBlX2NsYXNzOgotKwkudWxlYjEy OAkzCQkJLyogQWJicmV2OiBEV19UQUdfY2xhc3NfdHlwZSAqLwotKwkuYXNjaWkJCSJDXDAiCQkJ LyogRFdfQVRfbmFtZSAqLwotKwotKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBEV19UQUdfbWVt YmVyICovCi0rCS5hc2NpaQkJInNcMCIJCQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkx0 eXBlX2NsYXNzLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBE V19BVF9kZWNsYXJhdGlvbiAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICovCi0r Ci0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIERXX1RBR19jbGFzc190eXBlICov Ci0rCi0rCS51bGViMTI4CTUJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5h c2NpaQkJImZcMCIJCQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkx0eXBlX2NsYXNzLS5M Y3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLjRieXRlCQlmX3N0YXJ0CQkJLyogRFdfQVRf bG93X3BjICovCi0rCS40Ynl0ZQkJZl9lbmQJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCi0rCS5i eXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rCi0rLkxjdTFfZW5kOgotKwot Ky8qIEFiYnJldiB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYx X2JlZ2luOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgx MQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRy ZW4gKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkw eDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hf cGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4 MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcg Ki8KLSsJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS51bGViMTI4CTB4 OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5n dWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0r Ci0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDIJCQkvKiBE V19UQUdfY2xhc3NfdHlwZSAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwku dWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZP Uk1fc3RyaW5nICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTQJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweGQJCQkvKiBEV19UQUdfbWVtYmVyICovCi0rCS5ieXRlCQkwCQkJLyog aGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVs ZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERX X0FUX3R5cGUgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxl YjEyOAkweDNjCQkJLyogRFdfQVRfZGVjbGFyYXRpb24gKi8KLSsJLnVsZWIxMjgJMHhjCQkJLyog RFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLwot KwkudWxlYjEyOAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIx MjgJNQkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MmUJCQkvKiBEV19UQUdfc3Vi cHJvZ3JhbSAqLwotKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkw eDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5n ICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJ CQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAq LwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJ CS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWNwLWluZmNhbGwtcmVmLXN0YXRpYy5leHAKLUBAIC0wLDAgKzEsNDkg QEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMK LSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIENoZWNrIHRoYXQgR0RCIGNhbiBj YWxsIEMrKyBmdW5jdGlvbnMgd2hvc2UgcGFyYW1ldGVycyBvciByZXR1cm4gdmFsdWVzIGhhdmUK LSsjIHR5cGUgY29udGFpbmluZyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhlIHNhbWUgdHlwZS4KLSsK LSsjIFN0aWxsIG5vIEMrKyBjb21waWxlciBpcyB1c2VkLgotK2lmIHsgW3NraXBfY3BsdXNfdGVz dHNdIH0geyBjb250aW51ZSB9Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRh cmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNr IGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4 Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSot ZWxmKl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJn ZXQgYXJtLSotZWFiaSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewot KyAgICByZXR1cm4gMCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLWNwLWluZmNhbGwtcmVm LXN0YXRpYyIKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rl c3RmaWxlfSBbbGlzdCAke3Rlc3RmaWxlfS1tYWluLmMgJHt0ZXN0ZmlsZX0uU10ge31dIH0gewot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotKyMgbWFpbiBpcyBub3QgcHJvdmlkZWQgYnkgRFdBUkYuCi0rZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJzZXQgbGFuZ3VhZ2UgYysrIgotKwotKyMgVGhlcmUgYXJlIG5vIG1hbmds ZWQgbmFtZXMgaW4gRFdBUkYgdG8gc3VnZ2VzdCB0aGUgdjMgQUJJLgotK2dkYl90ZXN0X25vX291 dHB1dCAic2V0IGNwLWFiaSBnbnUtdjMiCi0rCi0rIyBHREIgY291bGQgY3Jhc2guICBUaGVyZSBp cyBubyBEV19BVF9sb2NhdGlvbiBzbyBpdCBpcyA8b3B0aW1pemVkIG91dD4uCi0rZ2RiX3Rlc3Qg InAgZigpIiB7ID0ge3N0YXRpYyBzID0gPG9wdGltaXplZCBvdXQ+fX0KLQoKZGlmZiAtLWdpdCBh L2dkYi1iejYzMTE1OC1jeHgtdGhpcy1sb29rdXAucGF0Y2ggYi9nZGItYno2MzExNTgtY3h4LXRo aXMtbG9va3VwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDdhZTA1Li4w MDAwMDAwCi0tLSBhL2dkYi1iejYzMTE1OC1jeHgtdGhpcy1sb29rdXAucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwxNCArMCwwIEBACi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19i dWcuY2dpP2lkPTYzMTE1OAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTAtMDkvbXNnMDAyMjkuaHRtbAotU3ViamVjdDogW3BhdGNoXSBQUiAxMTk5MiAiUmVncmVzc2lv bjogQysrIHRoaXMgc2NvcGUgc29tZXRpbWVzIGRvZXMgbm90IHdvcmsiCi0KLS0tLSBnZGItNy4y L2dkYi9jLWV4cC55Lm9yaWcJMjAxMC0wOC0xOSAxNzo1MDowMC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4yL2dkYi9jLWV4cC55CTIwMTAtMDktMTEgMjA6MzA6MTUuMDAwMDAwMDAwICswMjAw Ci1AQCAtMjQyMiw2ICsyNDIyLDcgQEAgY2xhc3NpZnlfbmFtZSAoc3RydWN0IGJsb2NrICpibG9j aykKLSAKLSAgIGlmIChzeW0gPT0gTlVMTAotICAgICAgICYmIHBhcnNlX2xhbmd1YWdlLT5sYV9s YW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwotKyAgICAgICYmICFpc19hX2ZpZWxkX29mX3RoaXMK LSAgICAgICAmJiAhbG9va3VwX21pbmltYWxfc3ltYm9sIChjb3B5LCBOVUxMLCBOVUxMKSkKLSAg ICAgcmV0dXJuIFVOS05PV05fQ1BQX05BTUU7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjMxNTc1 LWdkYi1pbmRleC1ub2JpdHMucGF0Y2ggYi9nZGItYno2MzE1NzUtZ2RiLWluZGV4LW5vYml0cy5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA3YTYxMy4uMDAwMDAwMAotLS0g YS9nZGItYno2MzE1NzUtZ2RiLWluZGV4LW5vYml0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDYxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5 L21zZzAwMTgzLmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0gLmdkYl9pbmRleDogRG8gbm90IGNyYXNo IG9uIE5PQklUUwotCi1IaSwKLQotZWxmdXRpbHMtMC4xNDggc3RpbGwgZG8gbm90IGNvbnRhaW4g cGF0Y2ggb2YgaXRzIEdJVAotODA0ZTljYTRkNjQ0ZTY0YTYxMjUzMDdjYmYwYTBiODk0NzdkNzYx MSB3aGVyZSB0aGUgLmdkYl9pbmRleCBzZWN0aW9uIGhhcyBiZWVuCi1hbHNvIHNwbGl0IGludG8g dGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZmlsZS4KLQotRHVlIHRvIGl0IGJpbmFyaWVzIHNwbGl0 IHVzaW5nIGVsZnV0aWxzLTAuMTQ4IGNvbnRhaW4KLSAgWzM4XSAuZ2RiX2luZGV4ICAgICAgICBO T0JJVFMgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgIDAwMDAzMzhjCi1pbnN0ZWFkIG9mIGV4 cGVjdGVkCi0gIFsyOF0gLmdkYl9pbmRleCAgICAgICAgUFJPR0JJVFMgICAgICAgICAwMDAwMDAw MDAwMDAwMDAwICAwMDAwMjExYwotCi1hbmQgZHVlIHRvIGl0IEdEQiB3aGlsZSByZWFkaW5nIHRo ZSBmaWxlIGNhbiBlcnJvcigpIGJ5OgotUmVhZGluZyBzeW1ib2xzIGZyb20geC5kZWJ1Zy4uLkR3 YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJvbSAneC5kZWJ1ZycKLQotd2hpY2gg c2hvdWxkIG5vdCBiZSBmYXRhbCBidXQgZHVlIHRvIHNvbWUgb3RoZXIgYnVncyB0aGVyZWluIGl0 IGNhbiBjcmFzaCBHREIuCi0KLVRoZSB3cm9uZyBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGUgaXMg Zm9yIGV4YW1wbGU6Ci1odHRwOi8va29qaXBrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMv Z2xpYmMvMi4xMi45MC8xMC94ODZfNjQvZ2xpYmMtZGVidWdpbmZvLTIuMTIuOTAtMTAueDg2XzY0 LnJwbQotL3Vzci9saWIvZGVidWcvbGliNjQvbGlidXRpbC0yLjEyLjkwLnNvLmRlYnVnCi0KLU9L IHRvIGNoZWNrLWluPwotCi1JdCBkb2VzIG5vdCBhdHRlbXB0IHRvIHVzZSAuZ2RiX2luZGV4IGZy b20gdGhlIG1haW4gYmluYXJ5LCBpdCB3aWxsIGp1c3QKLWRpc2FibGUgLmdkYl9pbmRleCB1c2Fn ZSBvbiB0aGVzZSBiaW5hcmllcy4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA5L21zZzAwMDYyLmh0bWwKLQotIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTAvMDkvMDggMTk6MDk6NDIJMS4xMjE2MgotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTAvMDkvMDggMTk6NDk6MjgJMS4xMjE2MwotIyMgLTEsMyArMSw3IEBACi0rMjAxMC0w OS0wOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkq IGR3YXJmMnJlYWQuYyAoZHdhcmYyX3JlYWRfaW5kZXgpOiBSZXR1cm4gb24gbm8gU0VDX0hBU19D T05URU5UUy4KLSsKLSAyMDEwLTA5LTA4ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291 cmNlcnkuY29tPgotIAotIAkqIGR3YXJmMnJlYWQuYyAocmVhZF9zdHJ1Y3R1cmVfdHlwZSk6IE1v dmUgcHJvY2Vzc2luZyBvZgotLS0tIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTAvMDkvMDggMTk6 MDk6NDIJMS40NTIKLSsrKyBzcmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLzA5LzA4IDE5OjQ5OjI4 CTEuNDUzCi1AQCAtMTkwNCw2ICsxOTA0LDEzIEBACi0gICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxl LT5nZGJfaW5kZXguYXNlY3Rpb24gPT0gTlVMTAotICAgICAgIHx8IGR3YXJmMl9wZXJfb2JqZmls ZS0+Z2RiX2luZGV4LnNpemUgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci0rCi0rICAvKiBPbGRlciBl bGZ1dGlscyBzdHJpcCB2ZXJzaW9ucyBjb3VsZCBrZWVwIHRoZSBzZWN0aW9uIGluIHRoZSBtYWlu Ci0rICAgICBleGVjdXRhYmxlIHdoaWxlIHNwbGl0dGluZyBpdCBmb3IgdGhlIHNlcGFyYXRlIGRl YnVnIGluZm8gZmlsZS4gICovCi0rICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24pCi0rICAgICAgICYgU0VDX0hBU19DT05URU5U UykgPT0gMCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpm aWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXgpOwotIAotICAgYWRkciA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4LmJ1ZmZlcjsKCmRpZmYgLS1naXQgYS9nZGItYno2MzQ2 NjAtZ2RicHktbG9hZC1vbi1hdHRhY2gucGF0Y2ggYi9nZGItYno2MzQ2NjAtZ2RicHktbG9hZC1v bi1hdHRhY2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMjM3NzYuLjAw MDAwMDAKLS0tIGEvZ2RiLWJ6NjM0NjYwLWdkYnB5LWxvYWQtb24tYXR0YWNoLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTAtMDkvbXNnMDAzNjUuaHRtbAotU3ViamVjdDogW3BhdGNoXSBweXRob246IGxv YWQgKi1nZGIucHkgZm9yIHNobGlicyBkdXJpbmcgYXR0YWNoCi0KLUhpLAotCi1jdXJyZW50bHkg aWYgeW91IGF0dGFjaCB0byBvciBsb2FkIGEgY29yZSBmaWxlIGZvciBleGVjdXRhYmxlLCBpdHMg LWdkYi5weQotc2NyaXB0IGlzIGxvYWRlZC4gIEJ1dCBub25lIC1nZGIucHkgZm9yIHRoZSBzaGFy ZWQgbGlicmFyaWVzLgotCi1TcGF3bmVkIG9yIHdpdGggdGhlIGZpeCAobGlic3RkYysrLWdkYi5w eSk6Ci0jMSAgMHgwMDAwMDAwMDAwNDAwN2I1IGluIGYgKHM9ImEiKSBhdCAxLkM6NAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeIGlzIHN0ZDo6c3RyaW5nCi0KLUF0dGFjaGVkL2NvcmUg d2l0aG91dCB0aGUgZml4OgotIzEgIDB4MDAwMDAwMDAwMDQwMDdiNSBpbiBmIChzPS4uLikgYXQg MS5DOjQKLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9y YTEzLWxpbnV4LWdudS4KLQotTW9zdGx5IG9idmlvdXMsIEkgd2lsbCBjaGVjayBpdCBpbiBsYXRl ci4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTA5LTIyICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIG1haW4uYzogSW5jbHVkZSBvYmpm aWxlcy5oLgotCShjYXB0dXJlZF9tYWluKTogTmV3IHZhcmlhYmxlIG9iamZpbGUuICBDYWxsCi0J bG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgZm9yIEFMTF9PQkpGSUxFUy4KLQotLS0tIC4v Z2RiL21haW4uYwkyMDEwLTA5LTIyIDEwOjUxOjMyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2Ri L21haW4uYwkyMDEwLTA5LTIyIDEwOjUwOjQ0LjAwMDAwMDAwMCArMDIwMAotQEAgLTQzLDYgKzQz LDcgQEAKLSAjaW5jbHVkZSAic291cmNlLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgot ICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi0rI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0gCi0g LyogVGhlIHNlbGVjdGVkIGludGVycHJldGVyLiAgVGhpcyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQg Y29tbWFuZAotICAgIHZhcmlhYmxlLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAt IHNpbmNlCi1AQCAtMzIzLDYgKzMyNCw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0g Ci0gICBpbnQgaTsKLSAgIGludCBzYXZlX2F1dG9fbG9hZDsKLSsgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlOwotIAotICAgc3RydWN0IGNsZWFudXAgKnByZV9zdGF0X2NoYWluID0gbWFrZV9jb21t YW5kX3N0YXRzX2NsZWFudXAgKDApOwotIAotQEAgLTk1Nyw4ICs5NTksOCBAQCBDYW4ndCBhdHRh Y2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvCi0gICAgICBXZSB3YWl0IHVudGlsIG5vdyBi ZWNhdXNlIGl0IGlzIGNvbW1vbiB0byBhZGQgdG8gdGhlIHNvdXJjZSBzZWFyY2gKLSAgICAgIHBh dGggaW4gbG9jYWxfZ2RiaW5pdC4gICovCi0gICBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gc2F2 ZV9hdXRvX2xvYWQ7Ci0tICBpZiAoc3ltZmlsZV9vYmpmaWxlICE9IE5VTEwpCi0tICAgIGxvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzeW1maWxlX29iamZpbGUpOwotKyAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQotKyAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgbmNtZDsgaSsrKQotICAgICB7Ci0KCmRpZmYgLS1n aXQgYS9nZGItYno2Mzc3NzAtaWZ1bmMtd2F0Y2hwb2ludC1kZWxldGUucGF0Y2ggYi9nZGItYno2 Mzc3NzAtaWZ1bmMtd2F0Y2hwb2ludC1kZWxldGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDE3MDE1ZGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjM3NzcwLWlmdW5jLXdhdGNo cG9pbnQtZGVsZXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLWNvbW1p dCAzMGZlZGFkZjIyNGE4YzExOTU3NWZjYzhhNmNlZDUxZjBkNGFlZTlmCi1BdXRob3I6IEphbiBL cmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBXZWQgU2VwIDI5 IDAxOjI1OjM5IDIwMTAgKzAyMDAKLQotICAgIEZpeCB0aGUgY3Jhc2guCi0KLWNvbW1pdCBkMTAx Y2U1OTdmMmQ2MTQzZTlmMDIzYTQ0NDQzNTJiY2VmZmIyNjc5Ci1BdXRob3I6IEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBXZWQgU2VwIDI5IDAwOjQy OjM3IDIwMTAgKzAyMDAKLQotICAgIE5ldyB0ZXN0Y2FzZSBmb3I6IGh0dHBzOi8vYnVnemlsbGEu cmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjM3NzcwCi0KLWRpZmYgLS1naXQgYS9nZGIvYnJl YWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5kZXggZGU1MTIzMS4uMThiNzg2OCAxMDA2 NDQKLS0tLSBhL2dkYi9icmVha3BvaW50LmMKLSsrKyBiL2dkYi9icmVha3BvaW50LmMKLUBAIC0x MDU2MCw2ICsxMDU2MCwxMSBAQCBtYXBfYnJlYWtwb2ludF9udW1iZXJzIChjaGFyICphcmdzLCB2 b2lkICgqZnVuY3Rpb24pIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAotIAkJICAgIC8qIEZVTkNUSU9O IGNhbiBiZSBhbHNvIGRlbGV0ZV9icmVha3BvaW50LiAgKi8KLSAJCSAgICBuZXh0X3JlbGF0ZWRf YiA9IHJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50OwotIAkJICAgIGZ1bmN0 aW9uIChyZWxhdGVkX2JyZWFrcG9pbnQsIGRhdGEpOwotKwotKwkJICAgIC8qIEZvciBkZWxldGVf YnJlYWtwb2ludCBvZiB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgcmluZyB3ZQotKwkJICAgICAgIHdl cmUgdHJhdmVyc2luZyB3ZSB3b3VsZCBuZXZlciBnZXQgYmFjayB0byBCLiAgKi8KLSsJCSAgICBp ZiAobmV4dF9yZWxhdGVkX2IgPT0gcmVsYXRlZF9icmVha3BvaW50KQotKwkJICAgICAgYnJlYWs7 Ci0gCQkgICAgcmVsYXRlZF9icmVha3BvaW50ID0gbmV4dF9yZWxhdGVkX2I7Ci0gCQkgIH0KLSAJ CXdoaWxlIChyZWxhdGVkX2JyZWFrcG9pbnQgIT0gYik7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS93YXRjaHBvaW50LWRlbGV0ZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uMDMxZWY5MgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LWRlbGV0ZS5jCi1AQCAtMCwwICsxLDMzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rdm9pZAotK2Z1bmMgKHZvaWQpCi0rewotKyAgdm9sYXRp bGUgaW50IHggPSAwOwotKwotKyAgeCsrOwkvKiBicmVhay1oZXJlICovCi0rICB4Kys7Ci0rfQot KwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgZnVuYyAoKTsKLSsKLSsgIHJldHVybiAwOwot K30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRl LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDViYzY1MAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5leHAKLUBAIC0w LDAgKzEsMzggQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUg IndhdGNocG9pbnQtZGVsZXRlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgeyBbcHJlcGFyZV9m b3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7Ci0r ICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBJ dCBpcyBtb3JlIGNvbXBhdGlibGUgdGhpcyB3YXkuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQg Y2FuLXVzZS1ody13YXRjaHBvaW50cyAwIgotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rIyBFbnN1cmUgdGhlcmUgaXMgYSBwYXJlbnQgZnJhbWUgdG8gY3Jl YXRlIHJlbGF0ZWQgYnBfd2F0Y2hwb2ludF9zY29wZS4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4qIgotKwotK2dkYl90ZXN0ICJ3YXRjaCB4IiB7 V2F0Y2hwb2ludCBbMC05XSs6IHh9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkZWxldGUgJGJw bnVtfQoKZGlmZiAtLWdpdCBhL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTFvZjMucGF0Y2ggYi9n ZGItYno2NDU3NzMtaWZvcnQtY2FzZS0xb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBlYzlmODhkLi4wMDAwMDAwCi0tLSBhL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTFv ZjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTEvbXNnMDAwODQuaHRtbAotU3ViamVjdDogW25l dyB0ZXN0Y2FzZV0gUmVncmVzc2lvbiA3LjEtPjcuMiBmb3IgaUZvcnQgIFtSZTogW1JGQS12Ml0g ZHdhcmYgZGVidWcgZm9ybWF0OiBTdXBwb3J0IERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlciBhdHRy aWJ1dGVdCi0KLU9uIEZyaSwgMjEgTWF5IDIwMTAgMjI6NDU6MzUgKzAyMDAsIFBpZXJyZSBNdWxs ZXIgd3JvdGU6Ci0+ICAgVGhhbmtzLCBJIGNvbW1pdHRlZCB0aGUgcGF0Y2guCi0KLWNvbW1pdCA1 NzBkNWQwMWRlMzVlZmZhZGEyNzdhNjk1NTJjMDkwM2E0OTI4MjQxCi1BdXRob3I6IFBpZXJyZSBN dWxsZXIgPG11bGxlckBpY3MudS1zdHJhc2JnLmZyPgotRGF0ZTogICBGcmkgTWF5IDIxIDIwOjQ1 OjE4IDIwMTAgKzAwMDAKLQotCSogZHdhcmYycmVhZC5jIChuZXdfc3ltYm9sKTogSGFuZGxlIERX X0FUX3ZhcmlhYmxlX3BhcmFtZXRlcgotCWF0dHJpYnV0ZS4KLQotCi1QbGVhc2UgcmV2ZXJ0IHRo aXMgcGF0Y2guCi0KLT5Gcm9tIHRoZSBEV0FSRi00IGRlc2NyaXB0aW9uIG9mIERXX0FUX3Zhcmlh YmxlX3BhcmFtZXRlciBJIGRvIG5vdCB0aGluayBpdAotY2hhbmdlcyB0aGUgZGF0YSBzdHJ1Y3R1 cmVzIG1lYW5pbmcgaW4gYW55IHdheS4gIEl0IGp1c3Qgc3RhdGVzIHdoaWNoIGRhdGEgY2FuCi1i ZSBtb2RpZmllZCBieSB3aG9tLiAgSSBkbyBub3QgdGhpbmsgdGhpcyBpcyB1c2VmdWwgZm9yIEdE QiBpbiBhbnkgd2F5LgotCi0KLT4gPiBJIHRoaW5rIGl0IHdvdWxkIGJlIGltcHJvdmVkIGJ5IGEg dGVzdCBjYXNlLCBidXQgdGhhdCBpcyB1cCB0byB5b3UuCi0+IAotPiAgIFRoaXMgdGVzdCB3b3Vs ZCBiZSBwYXNjYWwgc3BlY2lmaWMgYW55aG93LAotCi1JIGJlbGlldmUgdGhlIFBhc2NhbCBjb21w aWxlciBzaG91bGQgZ2VuZXJhdGUgZGlmZmVyZW50IGRlYnVnIGluZm8uICBGb3IgdGhlCi1gdmFy JyBrZXl3b3JkIHlvdSBjYW4gZWl0aGVyIChhKSB1c2UgRFdfVEFHX3JlZmVyZW5jZV90eXBlIGFu ZCBwb2ludAotRFdfQVRfbG9jYXRpb24gYXQgdGhlIHBvaW50ZXIgb3IgKGIpIHVzZSBEV19PUF9k ZXJlZiAoYXMgaUZvcnQgZG9lcykgb24gdGhlCi1wYXNzZWQgcG9pbnRlciBhbmQgcG9pbnQgRFdf QVRfbG9jYXRpb24gYXQgdGhlIHZhbHVlIGl0c2VsZi4KLURXX0FUX3ZhcmlhYmxlX3BhcmFtZXRl ciB3b3VsZCBiZSB0cnVlIG9ubHkgZm9yIHRoZSAoYSkgY2hvaWNlLgotCi0xCSAgc3Vicm91dGlu ZSBmIChpKQotMgkgIGludGVnZXIgaQotMwkgIGkgPSAyCi00CSAgZW5kCi01CSAgcHJvZ3JhbSB2 YXJwYXJhbQotNgkgIGludGVnZXIgbQotNwkgIG0gPSAxCi04CSAgY2FsbCBmIChtKQotOQkgIHdy aXRlKCosKikgbQotMTAJICBlbmQKLQotZm9yIGlGb3J0IDExLjEgMjAxMDA4MDYgaXQgcmVncmVz c2VkIHRoaXMgY29kZSwgR0RCLTcuMSBkaXNwbGF5ZWQ6Ci0KLUJyZWFrcG9pbnQgMSwgZiAoaT0x KSBhdCB2YXJwYXJhbS5mOTA6MwotMwkgIGkgPSAyCi0oZ2RiKSBwIGkKLSQxID0gMQotCi13aGls ZSBHREItNy4yIGRpc3BsYXlzOgotCi1CcmVha3BvaW50IDIsIGYgKGk9QDB4MSkgYXQgdmFycGFy YW0uZjkwOjMKLTMJICBpID0gMgotKGdkYikgcCBpCi0kMSA9IChSRUYgVE8gLT4gKCBJTlRFR0VS KDQpICkpIEAweDE6IDxlcnJvciByZWFkaW5nIHZhcmlhYmxlPgotCi0obm90ZSB0aGF0IGAweDEn IEdEQiBjb25zaWRlcnMgYXMgYW4gYWRkcmVzcyBoZXJlKQotCi0KLQotQSBuZXcgdGVzdGNhc2Ug Zm9yIHRoZSBpRm9ydCB1c2FnZSBjYXNlIGlzIGF0dGFjaGVkLgotCi1ObyByZWdyZXNzaW9ucyBv biB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCi0K LUkgd2lsbCB0aGVuIGNoZWNrLWluIHRoZSB0ZXN0Y2FzZSBvciB5b3UgY2FuIG9yIHNvLgotCi0K LVJlZ2FyZHMsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTExLTA0ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlSZXZlcnQ6Ci0JMjAxMC0wNS0yMSAgUGllcnJl IE11bGxlciAgPG11bGxlckBpY3MudS1zdHJhc2JnLmZyPgotCSogZHdhcmYycmVhZC5jIChuZXdf c3ltYm9sKTogSGFuZGxlIERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlcgotCWF0dHJpYnV0ZS4KLQot Z2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMTEtMDQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCSogZHcyLWlmb3J0LXBhcmFtZXRlci1kZWJ1Zy5TOiBOZXcgZmls ZS4KLQkqIGR3Mi1pZm9ydC1wYXJhbWV0ZXIuYzogTmV3IGZpbGUuCi0JKiBkdzItaWZvcnQtcGFy YW1ldGVyLmV4cDogTmV3IGZpbGUuCi0KLUluZGV4OiBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTExLTA3 IDA1OjI0OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIvZ2RiL2R3YXJmMnJlYWQuYwky MDEwLTExLTA3IDA1OjM2OjM0LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwNDc0LDE0ICsxMDQ3NCw2 IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QKLSAJICAgIHsKLSAJ ICAgICAgZHdhcmYyX2NvbnN0X3ZhbHVlIChhdHRyLCBzeW0sIGN1KTsKLSAJICAgIH0KLS0JICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdmFyaWFibGVfcGFyYW1ldGVyLCBjdSk7Ci0t CSAgaWYgKGF0dHIgJiYgRFdfVU5TTkQgKGF0dHIpKQotLQkgICAgewotLQkgICAgICBzdHJ1Y3Qg dHlwZSAqcmVmX3R5cGU7Ci0tCi0tCSAgICAgIHJlZl90eXBlID0gbG9va3VwX3JlZmVyZW5jZV90 eXBlIChTWU1CT0xfVFlQRSAoc3ltKSk7Ci0tCSAgICAgIFNZTUJPTF9UWVBFIChzeW0pID0gcmVm X3R5cGU7Ci0tCSAgICB9Ci0gCi0gCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0 X2luX3Njb3BlKTsKLSAJICBicmVhazsKLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9kdzItaWZvcnQtcGFyYW1ldGVyLWRlYnVnLlMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWZvcnQtcGFyYW1ldGVyLWRlYnVnLlMJMjAxMC0x MS0wNyAwNTozNjoxOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTIyIEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rCS5zZWN0aW9uIC5kZWJ1Z19pbmZv Ci0rLkxjdTFfYmVnaW46Ci0rCS8qIENVIGhlYWRlciAqLwotKwkuNGJ5dGUJLkxjdTFfZW5kIC0g LkxjdTFfc3RhcnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCi0rLkxjdTFfc3Rh cnQ6Ci0rCS4yYnl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MYWJicmV2 MV9iZWdpbgkJCS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCi0rCS5ieXRlCTQJCQkJ LyogUG9pbnRlciBzaXplICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8q IEFiYnJldjogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYXNjaWkJImZpbGUxLnR4dFwwIgkJ CS8qIERXX0FUX25hbWUgKi8KLSsJLmFzY2lpCSJHTlUgQyAzLjMuM1wwIgkJCS8qIERXX0FUX3By b2R1Y2VyICovCi0rCS5ieXRlCTEJCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpICovCi0rCS40Ynl0 ZQlmdW5jCQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJbWFpbgkJCQkvKiBEV19BVF9o aWdoX3BjICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJwcm9ncmFt ICovCi0rCS5ieXRlCQkxCQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSsJLmFzY2lpCQkiZnVuY1ww IgkJLyogRFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJCWZ1bmMJCQkvKiBEV19BVF9sb3dfcGMgKi8K LSsJLjRieXRlCQltYWluCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwotKwkudWxlYjEyOAkzCQkJ LyogQWJicmV2OiBEV19UQUdfZm9ybWFsX3BhcmFtZXRlciAqLwotKwkuYXNjaWkJCSJwYXJhbVww IgkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX3ZhcmlhYmxlX3BhcmFt ZXRlciAqLwotKwkuNGJ5dGUJCS5MdHlwZV9pbnQgLSAuTGN1MV9iZWdpbgkvKiBEV19BVF90eXBl ICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJ MwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXB0cgkJCS8qICAgPGFkZHI+ICovCi0r CS5ieXRlCQkweDYJCQkvKiAgIERXX09QX2RlcmVmICovCi0rMjoKLSsKLSsJLmJ5dGUJCTAJCQkv KiBFbmQgb2YgY2hpbGRyZW4gb2YgZnVuYyAqLwotKwotKy5MdHlwZV9pbnQ6Ci0rCS51bGViMTI4 CTQJCQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmFzY2lpCQkiaW50XDAiCQkJ LyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJNAkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwku Ynl0ZQkJNQkJCS8qIERXX0FUX2VuY29kaW5nICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9m IGNoaWxkcmVuIG9mIENVICovCi0rLkxjdTFfZW5kOgotKwotKy8qIEFiYnJldiB0YWJsZSAqLwot Kwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgotKwkudWxlYjEyOAkx CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxl X3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgz CQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAq LwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHg4 CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0FUX2xhbmd1 YWdlICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJ MHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2Fk ZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJ MHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBB YmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDJlCQkJLyogRFdfVEFHX3N1YnByb2dyYW0gKi8K LSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzZgkJCS8qIERX X0FUX2V4dGVybmFsICovCi0rCS51bGViMTI4CTB4YwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwku dWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZP Uk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVs ZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19B VF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgwNQkJ CS8qIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxk cmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4 CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHg0YgkJCS8qIERXX0FUX3Zhcmlh YmxlX3BhcmFtZXRlciAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0r CS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBE V19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJ LnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIx MjgJNAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFz ZV90eXBlICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4 MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcg Ki8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS51bGViMTI4CTB4 YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgzZQkJCS8qIERXX0FUX2VuY29k aW5nICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4 MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsK LSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWZv cnQtcGFyYW1ldGVyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItaWZvcnQtcGFyYW1ldGVyLmMJMjAxMC0xMS0wNyAwNTozNjoxOC4wMDAwMDAwMDAgKzAx MDAKLUBAIC0wLDAgKzEsMzEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KLSsKLStpbnQgdmFsdWUgPSAweGRlYWRmMDBkOwotK2ludCAqcHRyID0gJnZhbHVlOwotKwot K3ZvaWQKLStmdW5jICh2b2lkKQotK3sKLSt9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0r ICBmdW5jICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1pZm9ydC1wYXJhbWV0ZXIuZXhwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRlci5leHAJMjAxMC0xMS0w NyAwNTozNjoxOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsNDAgQEAKLSsjIENvcHlyaWdo dCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KLSsKLSsjIFZlcmlmeSBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgZG9l cyBub3QgbW9kaWZ5IHRoZSBkYXRhIHN0cnVjdHVyZXMgbWVhbmluZwotKyMgZm9yIEdEQiwgYXMg YmVpbmcgdXNlZCBieSBpRm9ydC4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24g dGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBp Y2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGlu dXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3Rh cmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7 Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLWlmb3J0LXBhcmFtZXRl ciIKLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3Rm aWxlfSBbbGlzdCAke3Rlc3RmaWxlfS5jICR7dGVzdGZpbGV9LWRlYnVnLlNdIHtub2RlYnVnfV0g fSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIGZ1bmNdIHsKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotK2dkYl90ZXN0ICJwL3ggcGFyYW0iICIgPSAweGRlYWRmMDBkIgoKZGlm ZiAtLWdpdCBhL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTJvZjMucGF0Y2ggYi9nZGItYno2NDU3 NzMtaWZvcnQtY2FzZS0yb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi ODcxYTcwLi4wMDAwMDAwCi0tLSBhL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTJvZjMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMTEvbXNnMDAxMDcuaHRtbAotU3ViamVjdDogW3BhdGNoIDEvMl0g Q29kZSBjbGVhbnVwOiBOZXcgaW5pdF9vbmVfY29tcF91bml0Ci0KLUhpLAotCi11bmlmeSBzb21l IGNvZGUgaW50byBhIGZ1bmN0aW9uLCB0byBiZSBleHRlbmRlZCBpbiB0aGUgbmV4dCBwYXRjaC4K LQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTExLTA2ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlDb2RlIGNsZWFudXAuCi0JKiBkd2FyZjJy ZWFkLmMgKGFsbG9jX29uZV9jb21wX3VuaXQpOiBSZW5hbWUgcHJvdG90eXBlIHRvIC4uLgotCShp bml0X29uZV9jb21wX3VuaXQpOiAuLi4gdGhpcyBvbmUuCi0JKHByZXBhcmVfb25lX2NvbXBfdW5p dCk6IE5ldyBwcm90b3R5cGUuCi0JKGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyLCBwcm9jZXNzX3Bz eW10YWJfY29tcF91bml0KTogVXNlCi0JaW5pdF9vbmVfY29tcF91bml0LgotCShwcm9jZXNzX3Bz eW10YWJfY29tcF91bml0KTogVXNlIHByZXBhcmVfb25lX2NvbXBfdW5pdC4KLQkobG9hZF9wYXJ0 aWFsX2NvbXBfdW5pdCk6IFJlbW92ZSB2YXJpYWJsZSBhdHRyLiAgVXNlCi0JaW5pdF9vbmVfY29t cF91bml0IHdpdGggeG1hbGxvYy4gIFVzZSBwcmVwYXJlX29uZV9jb21wX3VuaXQuCi0JKGxvYWRf ZnVsbF9jb21wX3VuaXQpOiBVc2UgaW5pdF9vbmVfY29tcF91bml0IHdpdGggeG1hbGxvYy4gIFVz ZQotCXByZXBhcmVfb25lX2NvbXBfdW5pdC4KLQkocmVhZF9zaWduYXR1cmVkX3R5cGUpOiBSZW1v dmUgdmFyaWFibGUgYXR0ci4gIFVzZSBpbml0X29uZV9jb21wX3VuaXQuCi0JVXNlIHByZXBhcmVf b25lX2NvbXBfdW5pdC4KLQkoYWxsb2Nfb25lX2NvbXBfdW5pdCk6IFJlbmFtZSB0byAuLi4KLQko aW5pdF9vbmVfY29tcF91bml0KTogLi4uIGhlcmUgYW5kIHJlbW92ZSB0aGVyZSBjYWxsb2MsIG5l dyBwYXJhbWV0ZXIKLQljdS4KLQkocHJlcGFyZV9vbmVfY29tcF91bml0KTogTmV3IGZ1bmN0aW9u LgotCi1JbmRleDogZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozNjozNC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozODoyMS4w MDAwMDAwMDAgKzAxMDAKLUBAIC0xMjE0LDcgKzEyMTQsMTEgQEAgc3RhdGljIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKmR3YXJmMgotIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpkd2FyZjJfZmluZF9jb21wX3VuaXQKLSAgICh1bnNpZ25lZCBpbnQgb2Zmc2V0LCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSk7Ci0gCi0tc3RhdGljIHN0cnVjdCBkd2FyZjJfY3UgKmFsbG9jX29u ZV9jb21wX3VuaXQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLStzdGF0aWMgdm9pZCBpbml0 X29uZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotKwkJCQlzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSk7Ci0rCi0rc3RhdGljIHZvaWQgcHJlcGFyZV9vbmVfY29tcF91bml0IChzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSwKLSsJCQkJICAgc3RydWN0IGRpZV9pbmZvICpjb21wX3VuaXRfZGll KTsKLSAKLSBzdGF0aWMgdm9pZCBmcmVlX29uZV9jb21wX3VuaXQgKHZvaWQgKik7Ci0gCi1AQCAt MTk4MCwxMCArMTk4NCw3IEBAIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIChzdHJ1Y3Qgb2JqZmls ZSAKLSAgICAgcmV0dXJuOwotICAgdGhpc19jdS0+di5xdWljay0+cmVhZF9saW5lcyA9IDE7Ci0g Ci0tICBtZW1zZXQgKCZjdSwgMCwgc2l6ZW9mIChjdSkpOwotLSAgY3Uub2JqZmlsZSA9IG9iamZp bGU7Ci0tICBvYnN0YWNrX2luaXQgKCZjdS5jb21wX3VuaXRfb2JzdGFjayk7Ci0tCi0rICBpbml0 X29uZV9jb21wX3VuaXQgKCZjdSwgb2JqZmlsZSk7Ci0gICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51 cCAoZnJlZV9zdGFja19jb21wX3VuaXQsICZjdSk7Ci0gCi0gICBkd2FyZjJfcmVhZF9zZWN0aW9u IChvYmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvKTsKLUBAIC0yOTc4LDEwICsyOTc5 LDcgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAoc3RydWN0IG9iamZpbAotICAgQ09SRV9B RERSIGJlc3RfbG93cGMgPSAwLCBiZXN0X2hpZ2hwYyA9IDA7Ci0gICBzdHJ1Y3QgZGllX3JlYWRl cl9zcGVjcyByZWFkZXJfc3BlY3M7Ci0gCi0tICBtZW1zZXQgKCZjdSwgMCwgc2l6ZW9mIChjdSkp OwotLSAgY3Uub2JqZmlsZSA9IG9iamZpbGU7Ci0tICBvYnN0YWNrX2luaXQgKCZjdS5jb21wX3Vu aXRfb2JzdGFjayk7Ci0tCi0rICBpbml0X29uZV9jb21wX3VuaXQgKCZjdSwgb2JqZmlsZSk7Ci0g ICBiYWNrX3RvX2lubmVyID0gbWFrZV9jbGVhbnVwIChmcmVlX3N0YWNrX2NvbXBfdW5pdCwgJmN1 KTsKLSAKLSAgIGluZm9fcHRyID0gcGFydGlhbF9yZWFkX2NvbXBfdW5pdF9oZWFkICgmY3UuaGVh ZGVyLCBpbmZvX3B0ciwKLUBAIC0zMDM1LDEyICszMDMzLDcgQEAgcHJvY2Vzc19wc3ltdGFiX2Nv bXBfdW5pdCAoc3RydWN0IG9iamZpbAotICAgICAgIHJldHVybiBpbmZvX3B0cjsKLSAgICAgfQot IAotLSAgLyogU2V0IHRoZSBsYW5ndWFnZSB3ZSdyZSBkZWJ1Z2dpbmcuICAqLwotLSAgYXR0ciA9 IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGllLCBEV19BVF9sYW5ndWFnZSwgJmN1KTsKLS0gIGlm IChhdHRyKQotLSAgICBzZXRfY3VfbGFuZ3VhZ2UgKERXX1VOU05EIChhdHRyKSwgJmN1KTsKLS0g IGVsc2UKLS0gICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCAmY3UpOwotKyAg cHJlcGFyZV9vbmVfY29tcF91bml0ICgmY3UsIGNvbXBfdW5pdF9kaWUpOwotIAotICAgLyogQWxs b2NhdGUgYSBuZXcgcGFydGlhbCBzeW1ib2wgdGFibGUgc3RydWN0dXJlLiAgKi8KLSAgIGF0dHIg PSBkd2FyZjJfYXR0ciAoY29tcF91bml0X2RpZSwgRFdfQVRfbmFtZSwgJmN1KTsKLUBAIC0zMjYz LDcgKzMyNTYsOCBAQCBsb2FkX3BhcnRpYWxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCi0g ICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIgKyB0aGlzX2N1LT5v ZmZzZXQ7Ci0gICBiZWdfb2ZfY29tcF91bml0ID0gaW5mb19wdHI7Ci0gCi0tICBjdSA9IGFsbG9j X29uZV9jb21wX3VuaXQgKG9iamZpbGUpOwotKyAgY3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkp OwotKyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7Ci0gCi0gICAvKiA/Pz8gTWlz c2luZyBjbGVhbnVwIGZvciBDVT8gICovCi0gCi1AQCAtMzI5MCwxMiArMzI4NCw3IEBAIGxvYWRf cGFydGlhbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGUKLSAgIGluZm9fcHRyID0gcmVhZF9m dWxsX2RpZSAoJnJlYWRlcl9zcGVjcywgJmNvbXBfdW5pdF9kaWUsIGluZm9fcHRyLAotIAkJCSAg ICAmaGFzX2NoaWxkcmVuKTsKLSAKLS0gIC8qIFNldCB0aGUgbGFuZ3VhZ2Ugd2UncmUgZGVidWdn aW5nLiAgKi8KLS0gIGF0dHIgPSBkd2FyZjJfYXR0ciAoY29tcF91bml0X2RpZSwgRFdfQVRfbGFu Z3VhZ2UsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAgICBzZXRfY3VfbGFuZ3VhZ2UgKERXX1VOU05E IChhdHRyKSwgY3UpOwotLSAgZWxzZQotLSAgICBzZXRfY3VfbGFuZ3VhZ2UgKGxhbmd1YWdlX21p bmltYWwsIGN1KTsKLSsgIHByZXBhcmVfb25lX2NvbXBfdW5pdCAoY3UsIGNvbXBfdW5pdF9kaWUp OwotIAotICAgLyogQ2hlY2sgaWYgY29tcCB1bml0IGhhc19jaGlsZHJlbi4KLSAgICAgIElmIHNv LCByZWFkIHRoZSByZXN0IG9mIHRoZSBwYXJ0aWFsIHN5bWJvbHMgZnJvbSB0aGlzIGNvbXAgdW5p dC4KLUBAIC00MjI3LDcgKzQyMTYsOCBAQCBsb2FkX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdh cmYyX3Blcl9jCi0gICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIg KyBvZmZzZXQ7Ci0gICBiZWdfb2ZfY29tcF91bml0ID0gaW5mb19wdHI7Ci0gCi0tICBjdSA9IGFs bG9jX29uZV9jb21wX3VuaXQgKG9iamZpbGUpOwotKyAgY3UgPSB4bWFsbG9jIChzaXplb2YgKCpj dSkpOwotKyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7Ci0gCi0gICAvKiBJZiBh biBlcnJvciBvY2N1cnMgd2hpbGUgbG9hZGluZywgcmVsZWFzZSBvdXIgc3RvcmFnZS4gICovCi0g ICBmcmVlX2N1X2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKGZyZWVfb25lX2NvbXBfdW5pdCwgY3Up OwotQEAgLTQyNTQsMTEgKzQyNDQsNyBAQCBsb2FkX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdh cmYyX3Blcl9jCi0gICAgICBhbGwgb2JqZmlsZXMgbmVlZGVkIGZvciByZWZlcmVuY2VzIGhhdmUg YmVlbiBsb2FkZWQgeWV0LCBhbmQgc3ltYm9sCi0gICAgICB0YWJsZSBwcm9jZXNzaW5nIGlzbid0 IGluaXRpYWxpemVkLiAgQnV0IHdlIGhhdmUgdG8gc2V0IHRoZSBDVSBsYW5ndWFnZSwKLSAgICAg IG9yIHdlIHdvbid0IGJlIGFibGUgdG8gYnVpbGQgdHlwZXMgY29ycmVjdGx5LiAgKi8KLS0gIGF0 dHIgPSBkd2FyZjJfYXR0ciAoY3UtPmRpZXMsIERXX0FUX2xhbmd1YWdlLCBjdSk7Ci0tICBpZiAo YXR0cikKLS0gICAgc2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1KTsKLS0gIGVs c2UKLS0gICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCBjdSk7Ci0rICBwcmVw YXJlX29uZV9jb21wX3VuaXQgKGN1LCBjdS0+ZGllcyk7Ci0gCi0gICAvKiBTaW1pbGFybHksIGlm IHdlIGRvIG5vdCByZWFkIHRoZSBwcm9kdWNlciwgd2UgY2FuIG5vdCBhcHBseQotICAgICAgcHJv ZHVjZXItc3BlY2lmaWMgaW50ZXJwcmV0YXRpb24uICAqLwotQEAgLTEyNjE3LDE3ICsxMjYwMywx NSBAQCByZWFkX3NpZ25hdHVyZWRfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iCi0gICBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdTsKLSAgIFVMT05HRVNUIHNpZ25hdHVyZTsKLSAgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvLCAqZnJlZV9jdV9jbGVhbnVwOwotLSAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK LSAKLSAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUt PnR5cGVzKTsKLSAgIHR5cGVzX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVy ICsgdHlwZV9zaWctPm9mZnNldDsKLSAKLSAgIGdkYl9hc3NlcnQgKHR5cGVfc2lnLT5wZXJfY3Uu Y3UgPT0gTlVMTCk7Ci0gCi0tICBjdSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGR3YXJmMl9j dSkpOwotLSAgbWVtc2V0IChjdSwgMCwgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2N1KSk7Ci0tICBv YnN0YWNrX2luaXQgKCZjdS0+Y29tcF91bml0X29ic3RhY2spOwotLSAgY3UtPm9iamZpbGUgPSBv YmpmaWxlOwotKyAgY3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkpOwotKyAgaW5pdF9vbmVfY29t cF91bml0IChjdSwgb2JqZmlsZSk7Ci0rCi0gICB0eXBlX3NpZy0+cGVyX2N1LmN1ID0gY3U7Ci0g ICBjdS0+cGVyX2N1ID0gJnR5cGVfc2lnLT5wZXJfY3U7Ci0gCi1AQCAtMTI2NTksMTEgKzEyNjQz LDcgQEAgcmVhZF9zaWduYXR1cmVkX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYgotICAgICAgYWxs IG9iamZpbGVzIG5lZWRlZCBmb3IgcmVmZXJlbmNlcyBoYXZlIGJlZW4gbG9hZGVkIHlldCwgYW5k IHN5bWJvbAotICAgICAgdGFibGUgcHJvY2Vzc2luZyBpc24ndCBpbml0aWFsaXplZC4gIEJ1dCB3 ZSBoYXZlIHRvIHNldCB0aGUgQ1UgbGFuZ3VhZ2UsCi0gICAgICBvciB3ZSB3b24ndCBiZSBhYmxl IHRvIGJ1aWxkIHR5cGVzIGNvcnJlY3RseS4gICovCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGN1 LT5kaWVzLCBEV19BVF9sYW5ndWFnZSwgY3UpOwotLSAgaWYgKGF0dHIpCi0tICAgIHNldF9jdV9s YW5ndWFnZSAoRFdfVU5TTkQgKGF0dHIpLCBjdSk7Ci0tICBlbHNlCi0tICAgIHNldF9jdV9sYW5n dWFnZSAobGFuZ3VhZ2VfbWluaW1hbCwgY3UpOwotKyAgcHJlcGFyZV9vbmVfY29tcF91bml0IChj dSwgY3UtPmRpZXMpOwotIAotICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotIAotQEAgLTEzNzU1 LDE1ICsxMzczNSwyOSBAQCBkd2FyZjJfZmluZF9jb21wX3VuaXQgKHVuc2lnbmVkIGludCBvZmZz Ci0gICByZXR1cm4gdGhpc19jdTsKLSB9Ci0gCi0tLyogTWFsbG9jIHNwYWNlIGZvciBhIGR3YXJm Ml9jdSBmb3IgT0JKRklMRSBhbmQgaW5pdGlhbGl6ZSBpdC4gICovCi0rLyogSW5pdGlhbGl6ZSBk d2FyZjJfY3UgQ1UgZm9yIE9CSkZJTEUgaW4gYSBwcmUtYWxsb2NhdGVkIHNwYWNlLiAgKi8KLSAK LS1zdGF0aWMgc3RydWN0IGR3YXJmMl9jdSAqCi0tYWxsb2Nfb25lX2NvbXBfdW5pdCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCi0rc3RhdGljIHZvaWQKLStpbml0X29uZV9jb21wX3VuaXQgKHN0 cnVjdCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0tICBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSA9IHhjYWxsb2MgKDEsIHNpemVvZiAoc3RydWN0IGR3YXJmMl9jdSkp OwotKyAgbWVtc2V0IChjdSwgMCwgc2l6ZW9mICgqY3UpKTsKLSAgIGN1LT5vYmpmaWxlID0gb2Jq ZmlsZTsKLSAgIG9ic3RhY2tfaW5pdCAoJmN1LT5jb21wX3VuaXRfb2JzdGFjayk7Ci0tICByZXR1 cm4gY3U7Ci0rfQotKwotKy8qIEluaXRpYWlsaXplIGJhc2ljIGZpZWxkcyBvZiBkd2FyZl9jdSBD VSBhY2NvcmRpbmcgdG8gRElFIENPTVBfVU5JVF9ESUUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0r cHJlcGFyZV9vbmVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGRpZV9p bmZvICpjb21wX3VuaXRfZGllKQotK3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rCi0r ICAvKiBTZXQgdGhlIGxhbmd1YWdlIHdlJ3JlIGRlYnVnZ2luZy4gICovCi0rICBhdHRyID0gZHdh cmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FUX2xhbmd1YWdlLCBjdSk7Ci0rICBpZiAoYXR0 cikKLSsgICAgc2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1KTsKLSsgIGVsc2UK LSsgICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCBjdSk7Ci0gfQotIAotIC8q IFJlbGVhc2Ugb25lIGNhY2hlZCBjb21waWxhdGlvbiB1bml0LCBDVS4gIFdlIHVubGluayBpdCBm cm9tIHRoZSB0cmVlCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2UtM29mMy5w YXRjaCBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTNvZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDA4NGY5ZDIuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjQ1NzczLWlmb3J0 LWNhc2UtM29mMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0OCArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0xMS9tc2cwMDEwOC5odG1sCi1TdWJq ZWN0OiBbcGF0Y2ggMi8yXSBpRm9ydCBjb21wYXQuOiBjYXNlIGluc2Vuc2l0aXZlIHN5bWJvbHMg KFBSIDExMzEzKQotCi1IaSwKLQotaUZvcnQgKEludGVsIEZvcnRyYW4gY29tcGlsZXIpIHByb2R1 Y2VzIERJRXMgbGlrZToKLQotIDwxPjwxZGM+OiBBYmJyZXYgTnVtYmVyOiA2IChEV19UQUdfbW9k dWxlKQotICAgIDwxZTA+ICAgRFdfQVRfbmFtZSAgICAgICAgOiBNT0QxICAgIAotCi1CdXQgRm9y dHJhbiBpcyBjYXNlIGluc2Vuc2l0aXZlLCB0aGVyZWZvcmUgR0RCIGxvd2VyY2FzZXMgYW55IHVz ZXIgaW5wdXQKLWZpcnN0LiAgU3ltYm9scyBjYW5ub3QgbWF0Y2guICBnZm9ydHJhbiBhbHdheXMg cHJvZHVjZXMgbG93ZXJjYXNlZCBESUUgbmFtZXMuCi0KLUkgd2FzIHRvbGQgYnkgSmFrdWIgSmVs aW5layBHQ0MgZnJvbnRlbmQgd2lsbCBuZXZlciBiZSBwcm9wZXJseSBjYXNlCi1wcmVzZXJ2aW5n IC0gdG8gb3V0cHV0ICJNb2QxIiBpZiB1c2VyIHN0YXRlZCBpdCBpbiBzdWNoIGNhc2UgaW4gdGhl IHNvdXJjZXMuCi0KLVRoZXJlZm9yZSBHREIgd2lsbCBub3cgbG93ZXJjYXNlIGFueSBjYXNlIGlu c2Vuc2l0aXZlIHN5bWJvbCBuYW1lcyBvbiB0aGVpcgotcmVhZC1pbiBmcm9tIERXQVJGLgotCi1F TEYgc3ltYm9sIHRhYmxlcyBhcmUgY3VycmVudGx5IG5vdCB0b3VjaGVkIC0gdGhlaXIgbWF0Y2hp bmcgdG8gdGhlaXIgQ1UgKGFuZAotdGh1cyB0byB0aGVpciBEV19BVF9pZGVudGlmaWVyX2Nhc2Ug LyBEV19BVF9sYW5ndWFnZSkgaXMgZXhwZW5zaXZlIGFuZCBpdCBkb2VzCi1ub3Qgc2VlbSB0byBt ZSB0byBiZSBuZWVkZWQgZm9yIGlGb3J0IGFzIG9ubHkgdGhlIG1vZHVsZSBuYW1lcyBhcmUgdXBw ZXJjYXNlZAotdGhlcmUuCi0KLUZvciB0aGUgaUZvcnQgY29tcGF0aWJpbGl0eSB0aGVyZSBpcyBh bHNvIG5lZWRlZDoKLQlbbmV3IHRlc3RjYXNlXSBSZWdyZXNzaW9uIDcuMS0+Ny4yIGZvciBpRm9y dCBbUmU6IFtSRkEtdjJdIGR3YXJmIGRlYnVnIGZvcm1hdDogU3VwcG9ydCBEV19BVF92YXJpYWJs ZV9wYXJhbWV0ZXIgYXR0cmlidXRlXQotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEwLTExL21zZzAwMDg0Lmh0bWwKLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4 ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTE0c25hcHNob3QtbGludXgtZ251LgotCi0KLVRoYW5rcywK LUphbgotCi0KLWdkYi8KLTIwMTAtMTEtMDcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCVBSIDExMzEzIC0gY2FzZSBpbnNlbnNpdGl2ZSBpZGVudGlmaWVy cyBpbiBEV0FSRiBub3QgaW4gbG93ZXJjYXNlLgotCSogZHdhcmYycmVhZC5jOiBJbmNsdWRlIGN0 eXBlLmguCi0JKHN0cnVjdCBkd2FyZjJfY3UpIDxjYXNlX3NlbnNpdGl2aXR5PjogTmV3LgotCShz dHJ1Y3QgYXR0cmlidXRlKSA8c3RyaW5nX2lzX2Nhbm9uaWNhbD46IFVwZGF0ZSB0aGUgY29tbWVu dC4KLQkoY2Fub25pY2FsX2Nhc2UpOiBOZXcgZGVjbGFyYXRpb24uCi0JKHJlYWRfcGFydGlhbF9k aWUpOiBDYWxsIGNhbm9uaWNhbF9jYXNlLgotCShjYW5vbmljYWxfY2FzZSk6IE5ldyBmdW5jdGlv bi4KLQkoZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lKTogVXBkYXRlIHRoZSBmdW5jdGlvbiBjb21t ZW50LiAgQ2FsbAotCWNhbm9uaWNhbF9jYXNlLCBhZGp1c3QgdGhlIG9ic3RhY2sgYWxsb2NhdGlv bi4KLQkoZHdhcmYyX25hbWUpOiBDYWxsIGNhbm9uaWNhbF9jYXNlLCBzZXQgRFdfU1RSSU5HX0lT X0NBTk9OSUNBTC4KLQkoaW5pdF9vbmVfY29tcF91bml0LCBwcmVwYXJlX29uZV9jb21wX3VuaXQp OiBTZXQgY3UtPmNhc2Vfc2Vuc2l0aXZpdHkuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTExLTA3 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQUiAxMTMx MyAtIGNhc2UgaW5zZW5zaXRpdmUgaWRlbnRpZmllcnMgaW4gRFdBUkYgbm90IGluIGxvd2VyY2Fz ZS4KLQkqIGdkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUtZGVidWcuUzogTmV3LgotCSog Z2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS5jOiBOZXcuCi0JKiBnZGIuZHdhcmYyL2R3 Mi1jYXNlLWluc2Vuc2l0aXZlLmV4cDogTmV3LgotCSogZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4 cCAobWlfcnVudG8pOiBVc2UgbG93ZXJjYXNlIG1haW5fXy4KLQotSW5kZXg6IGdkYi03LjIvZ2Ri L2R3YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvZHdhcmYycmVh ZC5jCTIwMTAtMTEtMDcgMDU6Mzg6MjEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi9nZGIv ZHdhcmYycmVhZC5jCTIwMTAtMTEtMDcgMDU6Mzg6NDcuMDAwMDAwMDAwICswMTAwCi1AQCAtNTUs NiArNTUsNyBAQAotICNpbmNsdWRlICJnZGJfc3RhdC5oIgotICNpbmNsdWRlICJjb21wbGV0ZXIu aCIKLSAjaW5jbHVkZSAidG9wLmgiCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi0gI2luY2x1ZGUg PGZjbnRsLmg+Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0zNzYsNiArMzc3LDEwIEBA IHN0cnVjdCBkd2FyZjJfY3UKLSAgICAgIERJRXMgZm9yIG5hbWVzcGFjZXMsIHdlIGRvbid0IG5l ZWQgdG8gdHJ5IHRvIGluZmVyIHRoZW0KLSAgICAgIGZyb20gbWFuZ2xlZCBuYW1lcy4gICovCi0g ICB1bnNpZ25lZCBpbnQgaGFzX25hbWVzcGFjZV9pbmZvIDogMTsKLSsKLSsgIC8qIEFyZSBpZGVu dGlmaWVycyBpbiB0aGlzIENVIGNhc2Ugc2Vuc2l0aXZlIG9yIHNob3VsZCB0aGV5IGJlIGxvd2Vy Y2FzZWQKLSsgICAgIGJlZm9yZSBzdG9yaW5nIHRoZW0gaW50byBHREIgc3ltYm9sIHRhYmxlcz8g ICovCi0rICBlbnVtIGNhc2Vfc2Vuc2l0aXZpdHkgY2FzZV9zZW5zaXRpdml0eTsKLSB9OwotIAot IC8qIFdoZW4gdXNpbmcgdGhlIGluZGV4IChhbmQgdGh1cyBub3QgdXNpbmcgcHN5bXRhYnMpLCBl YWNoIENVIGhhcyBhbgotQEAgLTYyMSw5ICs2MjYsMTAgQEAgc3RydWN0IGF0dHJpYnV0ZQotICAg ICBFTlVNX0JJVEZJRUxEKGR3YXJmX2F0dHJpYnV0ZSkgbmFtZSA6IDE2OwotICAgICBFTlVNX0JJ VEZJRUxEKGR3YXJmX2Zvcm0pIGZvcm0gOiAxNTsKLSAKLS0gICAgLyogSGFzIERXX1NUUklORyBh bHJlYWR5IGJlZW4gdXBkYXRlZCBieSBkd2FyZjJfY2Fub25pY2FsaXplX25hbWU/ICBUaGlzCi0t ICAgICAgIGZpZWxkIHNob3VsZCBiZSBpbiB1LnN0ciAoZXhpc3Rpbmcgb25seSBmb3IgRFdfU1RS SU5HKSBidXQgaXQgaXMga2VwdAotLSAgICAgICBoZXJlIGZvciBiZXR0ZXIgc3RydWN0IGF0dHJp YnV0ZSBhbGlnbm1lbnQuICAqLwotKyAgICAvKiBIYXMgRFdfU1RSSU5HIGFscmVhZHkgYmVlbiB1 cGRhdGVkIGJ5IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSBvcgotKyAgICAgICBjYW5vbmljYWxf Y2FzZT8gIFRoaXMgZmllbGQgc2hvdWxkIGJlIGluIHUuc3RyIChleGlzdGluZyBvbmx5IGZvcgot KyAgICAgICBEV19TVFJJTkcpIGJ1dCBpdCBpcyBrZXB0IGhlcmUgZm9yIGJldHRlciBzdHJ1Y3Qg YXR0cmlidXRlIGFsaWdubWVudC4KLSsgICAgICAgKi8KLSAgICAgdW5zaWduZWQgaW50IHN0cmlu Z19pc19jYW5vbmljYWwgOiAxOwotIAotICAgICB1bmlvbgotQEAgLTExMDksNiArMTExNSw5IEBA IHN0YXRpYyBnZGJfYnl0ZSAqcmVhZF9mdWxsX2RpZSAoY29uc3Qgc3QKLSAKLSBzdGF0aWMgdm9p ZCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0g Ci0rc3RhdGljIGNoYXIgKmNhbm9uaWNhbF9jYXNlIChjaGFyICpuYW1lLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSwKLSsJCQkgICAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKLSsKLSBzdGF0aWMg Y2hhciAqZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICosIHN0cnVjdCBkd2FyZjJfY3Ug KiwKLSAJCQkJICAgICAgIHN0cnVjdCBvYnN0YWNrICopOwotIAotQEAgLTg1ODksNyArODU5OCw4 IEBAIHJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmYKLSAJICAgIGNhc2Ug RFdfVEFHX2VudW1lcmF0b3I6Ci0gCSAgICAgIC8qIFRoZXNlIHRhZ3MgYWx3YXlzIGhhdmUgc2lt cGxlIGlkZW50aWZpZXJzIGFscmVhZHk7IG5vIG5lZWQKLSAJCSB0byBjYW5vbmljYWxpemUgdGhl bS4gICovCi0tCSAgICAgIHBhcnRfZGllLT5uYW1lID0gRFdfU1RSSU5HICgmYXR0cik7Ci0rCSAg ICAgIHBhcnRfZGllLT5uYW1lID0gY2Fub25pY2FsX2Nhc2UgKERXX1NUUklORyAoJmF0dHIpLCBj dSwKLSsJCQkJCSAgICAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0gCSAgICAg IGJyZWFrOwotIAkgICAgZGVmYXVsdDoKLSAJICAgICAgcGFydF9kaWUtPm5hbWUKLUBAIC0xMTA0 Myw3ICsxMTA1MywzNiBAQCBzaWJsaW5nX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUpCi0gICBy ZXR1cm4gZGllLT5zaWJsaW5nOwotIH0KLSAKLS0vKiBHZXQgbmFtZSBvZiBhIGRpZSwgcmV0dXJu IE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLSsvKiBDb252ZXJ0IE5BTUUgdG8gdGhlIGxvd2VyIGNh c2UgaWYgQ1UgaXMgY2FzZV9zZW5zaXRpdmVfb2ZmLiAgQWxsb2NhdGUKLSsgICBtZW1vcnkgb24g T0JTVEFDSyBpZiBuZWVkZWQsIG90aGVyd2lzZSByZXR1cm4gdGhlIE5BTUUgcG9pbnRlci4gICov Ci0rCi0rc3RhdGljIGNoYXIgKgotK2Nhbm9uaWNhbF9jYXNlIChjaGFyICpuYW1lLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSwKLSsJCXN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQotK3sKLSsgIGNoYXIg KnJldHZhbDsKLSsgIGludCBpOwotKwotKyAgaWYgKGN1LT5jYXNlX3NlbnNpdGl2aXR5ID09IGNh c2Vfc2Vuc2l0aXZlX29uKQotKyAgICByZXR1cm4gbmFtZTsKLSsKLSsgIGZvciAoaSA9IDA7IG5h bWVbaV0gIT0gMDsgaSsrKQotKyAgICBpZiAodG9sb3dlciAobmFtZVtpXSkgIT0gbmFtZVtpXSkK LSsgICAgICBicmVhazsKLSsgIGlmIChuYW1lW2ldID09IDApCi0rICAgIHJldHVybiBuYW1lOwot KwotKyAgcmV0dmFsID0gb2JzdGFja19hbGxvYyAob2JzdGFjaywgc3RybGVuIChuYW1lKSArIDEp OwotKwotKyAgZm9yIChpID0gMDsgbmFtZVtpXSAhPSAwOyBpKyspCi0rICAgIHJldHZhbFtpXSA9 IHRvbG93ZXIgKG5hbWVbaV0pOwotKyAgcmV0dmFsW2ldID0gMDsKLSsKLSsgIHJldHVybiByZXR2 YWw7Ci0rfQotKwotKy8qIEdldCBuYW1lIG9mIGEgZGllLCByZXR1cm4gTlVMTCBpZiBub3QgZm91 bmQuICBjYW5vbmljYWxfY2FzZSBpcyBhbHdheXMKLSsgICBhbHJlYWR5IGNhbGxlZCBmb3IgdGhl IHJldHVybmVkIHN0cmluZy4gICovCi0gCi0gc3RhdGljIGNoYXIgKgotIGR3YXJmMl9jYW5vbmlj YWxpemVfbmFtZSAoY2hhciAqbmFtZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCi1AQCAtMTEwNTUs MTQgKzExMDk0LDI2IEBAIGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAoY2hhciAqbmFtZSwgc3QK LSAKLSAgICAgICBpZiAoY2Fub25fbmFtZSAhPSBOVUxMKQotIAl7Ci0tCSAgaWYgKHN0cmNtcCAo Y2Fub25fbmFtZSwgbmFtZSkgIT0gMCkKLS0JICAgIG5hbWUgPSBvYnNhdmVzdHJpbmcgKGNhbm9u X25hbWUsIHN0cmxlbiAoY2Fub25fbmFtZSksCi0rCSAgY2hhciAqY2FzZWRfbmFtZTsKLSsKLSsJ ICBjYXNlZF9uYW1lID0gY2Fub25pY2FsX2Nhc2UgKGNhbm9uX25hbWUsIGN1LCBvYnN0YWNrKTsK LSsKLSsJICAvKiBQdXNoIENBU0VEX05BTUUgb24gT0JTVEFDSyBvbmx5IGlmIGl0IGlzbid0IGFs cmVhZHkgcHVzaGVkIHRoZXJlCi0rCSAgICAgYnkgY2Fub25pY2FsX2Nhc2UgYW5kIGlmIGl0IHdh cyBhbGxvY2F0ZWQgdXNpbmcgeG1hbGxvYyBieQotKwkgICAgIGNwX2Nhbm9uaWNhbGl6ZV9zdHJp bmcuICAqLwotKwkgIGlmIChzdHJjbXAgKGNhbm9uX25hbWUsIGNhc2VkX25hbWUpID09IDAKLSsJ ICAgICAgJiYgc3RyY21wIChjYW5vbl9uYW1lLCBuYW1lKSAhPSAwKQotKwkgICAgbmFtZSA9IG9i c2F2ZXN0cmluZyAoY2FzZWRfbmFtZSwgc3RybGVuIChjYXNlZF9uYW1lKSwKLSAJCQkJIG9ic3Rh Y2spOwotKwkgIGVsc2UKLSsJICAgIG5hbWUgPSBjYXNlZF9uYW1lOwotIAkgIHhmcmVlIChjYW5v bl9uYW1lKTsKLSsKLSsJICByZXR1cm4gbmFtZTsKLSAJfQotICAgICB9Ci0gCi0tICByZXR1cm4g bmFtZTsKLSsgIHJldHVybiBjYW5vbmljYWxfY2FzZSAobmFtZSwgY3UsIG9ic3RhY2spOwotIH0K LSAKLSAvKiBHZXQgbmFtZSBvZiBhIGRpZSwgcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8K LUBAIC0xMTA4OCw3ICsxMTEzOSwxMyBAQCBkd2FyZjJfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjCi0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0gICAgIGNhc2Ug RFdfVEFHX2VudW1lcmF0b3I6Ci0gICAgICAgLyogVGhlc2UgdGFncyBhbHdheXMgaGF2ZSBzaW1w bGUgaWRlbnRpZmllcnMgYWxyZWFkeTsgbm8gbmVlZAotLQkgdG8gY2Fub25pY2FsaXplIHRoZW0u ICAqLwotKwkgdG8gY2FsbCBkd2FyZjJfY2Fub25pY2FsaXplX25hbWUgZm9yIHRoZW0uICAqLwot KyAgICAgIGlmICghRFdfU1RSSU5HX0lTX0NBTk9OSUNBTCAoYXR0cikpCi0rCXsKLSsJICBEV19T VFJJTkcgKGF0dHIpID0gY2Fub25pY2FsX2Nhc2UgKERXX1NUUklORyAoYXR0ciksIGN1LAotKwkJ CQkJICAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rCSAgRFdfU1RSSU5HX0lT X0NBTk9OSUNBTCAoYXR0cikgPSAxOwotKwl9Ci0gICAgICAgcmV0dXJuIERXX1NUUklORyAoYXR0 cik7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX3N1YnByb2dyYW06Ci1AQCAtMTM3NDMsNiArMTM4MDAs NyBAQCBpbml0X29uZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfY3UgKmN1Ci0gICBtZW1zZXQg KGN1LCAwLCBzaXplb2YgKCpjdSkpOwotICAgY3UtPm9iamZpbGUgPSBvYmpmaWxlOwotICAgb2Jz dGFja19pbml0ICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrKTsKLSsgIGN1LT5jYXNlX3NlbnNpdGl2 aXR5ID0gY2FzZV9zZW5zaXRpdmVfb247Ci0gfQotIAotIC8qIEluaXRpYWlsaXplIGJhc2ljIGZp ZWxkcyBvZiBkd2FyZl9jdSBDVSBhY2NvcmRpbmcgdG8gRElFIENPTVBfVU5JVF9ESUUuICAqLwot QEAgLTEzNzU4LDYgKzEzODE2LDEzIEBAIHByZXBhcmVfb25lX2NvbXBfdW5pdCAoc3RydWN0IGR3 YXJmMl9jdSAKLSAgICAgc2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1KTsKLSAg IGVsc2UKLSAgICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCBjdSk7Ci0rCi0r ICBhdHRyID0gZHdhcmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FUX2lkZW50aWZpZXJfY2Fz ZSwgY3UpOwotKyAgaWYgKGF0dHIpCi0rICAgIGN1LT5jYXNlX3NlbnNpdGl2aXR5ID0gKERXX1VO U05EIChhdHRyKSA9PSBEV19JRF9jYXNlX3NlbnNpdGl2ZQotKwkJCSAgICA/IGNhc2Vfc2Vuc2l0 aXZlX29uIDogY2FzZV9zZW5zaXRpdmVfb2ZmKTsKLSsgIGVsc2UKLSsgICAgY3UtPmNhc2Vfc2Vu c2l0aXZpdHkgPSBjdS0+bGFuZ3VhZ2VfZGVmbi0+bGFfY2FzZV9zZW5zaXRpdml0eTsKLSB9Ci0g Ci0gLyogUmVsZWFzZSBvbmUgY2FjaGVkIGNvbXBpbGF0aW9uIHVuaXQsIENVLiAgV2UgdW5saW5r IGl0IGZyb20gdGhlIHRyZWUKLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItY2FzZS1pbnNlbnNpdGl2ZS1kZWJ1Zy5TCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUtZGVidWcuUwkyMDEwLTExLTA3 IDA1OjM4OjM1LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMjIgQEAKLSsvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdo dCAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsJ LnNlY3Rpb24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0r CS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9u IFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAq LwotKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rp b24gKi8KLSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICov Ci0rCS51bGViMTI4IDIJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5h c2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBDIDMu My4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMgkJCQkvKiBEV19BVF9sYW5n dWFnZSAoRFdfTEFOR19DKSAqLwotKwkuYnl0ZQkzCQkJCS8qIERXX0FUX2lkZW50aWZpZXJfY2Fz ZSAoRFdfSURfY2FzZV9pbnNlbnNpdGl2ZSkgKi8KLSsJLjRieXRlCQlGVU5DX2F0dHIJCS8qIERX X0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJCUZVTkNfbGFuZyAJCS8qIERXX0FUX2hpZ2hfcGMgKi8K LSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmJ5 dGUJCTEJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuYXNjaWkJCSJGVU5DX2F0dHJcMCIJCS8q IERXX0FUX25hbWUgKi8KLSsJLjRieXRlCQlGVU5DX2F0dHIJCS8qIERXX0FUX2xvd19wYyAqLwot KwkuNGJ5dGUJCUZVTkNfbGFuZyAJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsKLSsJLmJ5dGUJCTAJ CQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KLSsuTGN1MV9lbmQ6Ci0rCi0rLkxjdTJfYmVn aW46Ci0rCS8qIENVIGhlYWRlciAqLwotKwkuNGJ5dGUJLkxjdTJfZW5kIC0gLkxjdTJfc3RhcnQJ CS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCi0rLkxjdTJfc3RhcnQ6Ci0rCS4yYnl0 ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJCS8q IE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCi0rCS5ieXRlCTQJCQkJLyogUG9pbnRlciBz aXplICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdf VEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYXNjaWkJImZpbGUxLnR4dFwwIgkJCS8qIERXX0FUX25h bWUgKi8KLSsJLmFzY2lpCSJHTlUgQyAzLjMuM1wwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0r CS5ieXRlCTgJCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKERXX0xBTkdfRm9ydHJhbjkwKSAqLwotKwku NGJ5dGUJCUZVTkNfbGFuZwkJLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0ZQkJbWFpbgkJCS8q IERXX0FUX2hpZ2hfcGMgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1 YnByb2dyYW0gKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuYXNjaWkJ CSJGVU5DX2xhbmdcMCIJCS8qIERXX0FUX25hbWUgKi8KLSsJLjRieXRlCQlGVU5DX2xhbmcJCS8q IERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJCW1haW4JCQkvKiBEV19BVF9oaWdoX3BjICovCi0r Ci0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rLkxjdTJfZW5kOgot KwotKy8qIEFiYnJldiB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJy ZXYxX2JlZ2luOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJ MHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hp bGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkw eDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJv ZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIx MjgJMHgxMwkJCS8qIERXX0FUX2xhbmd1YWdlICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZP Uk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxl YjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FU X2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov Ci0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJ LyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAq LwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8q IERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAq LwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEz CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRh MSAqLwotKwkudWxlYjEyOAkweDQyCQkJLyogRFdfQVRfaWRlbnRpZmllcl9jYXNlICovCi0rCS51 bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERX X0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVs ZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdf Rk9STV9hZGRyICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDJlCQkJLyogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmJ5dGUJCTAJ CQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzZgkJCS8qIERXX0FUX2V4dGVybmFs ICovCi0rCS51bGViMTI4CTB4YwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov Ci0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJ LyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICov Ci0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vu c2l0aXZlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt Y2FzZS1pbnNlbnNpdGl2ZS5jCTIwMTAtMTEtMDcgMDU6Mzg6MzUuMDAwMDAwMDAwICswMTAwCi1A QCAtMCwwICsxLDM2IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNCwgMjAwNywgMjAwOCwgMjAwOSwgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogVGhpcyBvbmUgaXMgRFdfTEFOR19DIGJ1dCBp dCB1c2VzIERXX0lEX2Nhc2VfaW5zZW5zaXRpdmUuICAqLwotKwotK3ZvaWQKLStGVU5DX2F0dHIg KHZvaWQpCi0rewotK30KLSsKLSsvKiBUaGlzIG9uZSBoYXMgbm8gRFdfQVRfaWRlbnRpZmllcl9j YXNlIGJ1dCBpdCBpcyBEV19MQU5HX0ZvcnRyYW45MC4gICovCi0rCi0rdm9pZAotK0ZVTkNfbGFu ZyAodm9pZCkKLSt7Ci0rfQotKwotK2ludAotK21haW4oKQotK3sKLSsgIHJldHVybiAwOwotK30K LUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNp dGl2ZS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt Y2FzZS1pbnNlbnNpdGl2ZS5leHAJMjAxMC0xMS0wNyAwNTozODozNS4wMDAwMDAwMDAgKzAxMDAK LUBAIC0wLDAgKzEsNDEgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMg dGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5k IHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4K LStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUq XQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1v cGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3Rh cmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0 ZmlsZSAiZHcyLWNhc2UtaW5zZW5zaXRpdmUiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGlu ZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uYyAke3Rlc3Rm aWxlfS1kZWJ1Zy5TXSB7bm9kZWJ1Z31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgbGFuZ3VhZ2UgZm9ydHJhbiIKLSsKLStpZiB7W2dkYl9icmVh a3BvaW50ICJmdU5DX2F0dHIiXSA9PSAxfSB7Ci0rICAgIHBhc3MgInNldHRpbmcgYnJlYWtwb2lu dCBhdCBmdU5DX2F0dHIiCi0rfQotKwotK2lmIHtbZ2RiX2JyZWFrcG9pbnQgImZ1TkNfbGFuZyJd ID09IDF9IHsKLSsgICAgcGFzcyAic2V0dGluZyBicmVha3BvaW50IGF0IGZ1TkNfbGFuZyIKLSt9 Ci1JbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFy LWNoaWxkLWYuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAJMjAxMC0xMS0wNyAw NTozODozNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNiw3ICszNiw3IEBAIGlmIHtbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHsKLSBtaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKLSBtaV9nZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0tbWlfcnVudG8gTUFJTl9f Ci0rbWlfcnVudG8gbWFpbl9fCi0gCi0gbWlfZ2RiX3Rlc3QgIi12YXItY3JlYXRlIGFycmF5ICog YXJyYXkiIFwKLSAgICAgIlxcXmRvbmUsbmFtZT1cImFycmF5XCIsbnVtY2hpbGQ9XCIzXCIsdmFs dWU9XCIuKlwiLHR5cGU9XCJpbnRlZ2VyIFxcKDIsLTE6MVxcKVwiIiBcCgpkaWZmIC0tZ2l0IGEv Z2RiLWV4ZWMtcGllLWFtZDY0LnBhdGNoIGIvZ2RiLWV4ZWMtcGllLWFtZDY0LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODQwM2FkLi4wMDAwMDAwCi0tLSBhL2dkYi1leGVj LXBpZS1hbWQ2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxOCArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDUxOS5odG1sCi1TdWJq ZWN0OiBbcGF0Y2hdIEZpeCBpbmZlcmlvciBleGVjbCBvZiBuZXcgUElFIHg4Nl82NAotCi1IaSwK LQotZ2NjIC1vIDEgMS5jIC1XYWxsIC1nIC1mUElFIC1waWU7IGdkYiAtbnggLi8xIC1leCAnYiBt YWluJyAtZXggciAtZXggYyAKLQotU3RhcnRpbmcgcHJvZ3JhbTogLi4uL2dkYi8xIAotQnJlYWtw b2ludCAxLCBtYWluIChhcmdjPTEsIGFyZ3Y9MHg3ZmZmZmZmZmRmZjgpIGF0IDEuYzo3Ci03CSAg c2V0YnVmIChzdGRvdXQsIE5VTEwpOwotQ29udGludWluZy4KLXJlLWV4ZWMKLXByb2Nlc3MgMjgw NTYgaXMgZXhlY3V0aW5nIG5ldyBwcm9ncmFtOiAuLi4vZ2RiLzEKLUVycm9yIGluIHJlLXNldHRp bmcgYnJlYWtwb2ludCAxOiBDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4ODBjCi1l eGl0Ci1Qcm9ncmFtIGV4aXRlZCBub3JtYWxseS4KLShnZGIpIF8KLQotd2hpbGUgaXQgc2hvdWxk IGJlOgotCi1yZS1leGVjCi1wcm9jZXNzIDI4MDk1IGlzIGV4ZWN1dGluZyBuZXcgcHJvZ3JhbTog Li4uL2dkYi8xCi1CcmVha3BvaW50IDEsIG1haW4gKGFyZ2M9MiwgYXJndj0weDdmZmZmZmZmZTAw OCkgYXQgMS5jOjcKLTcJICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7Ci0oZ2RiKSBfCi0KLVRoZSBl cnJvciBjb21lcyBmcm9tOgotCi10aHJvd19lcnJvciA8LSBtZW1vcnlfZXJyb3IgPC0gcmVhZF9t ZW1vcnkgPC0gcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciA8LQotYW1kNjRfYW5hbHl6ZV9w cm9sb2d1ZSA8LSBhbWQ2NF9za2lwX3Byb2xvZ3VlIDwtIGdkYmFyY2hfc2tpcF9wcm9sb2d1ZSA8 LQotc2tpcF9wcm9sb2d1ZV9zYWwgPC0gZmluZF9mdW5jdGlvbl9zdGFydF9zYWwgPC0gc3ltYm9s X2ZvdW5kIDwtIGRlY29kZV92YXJpYWJsZQotPC0gZGVjb2RlX2xpbmVfMSA8LSBicmVha3BvaW50 X3JlX3NldF9vbmUgPC0gY2F0Y2hfZXJyb3JzIDwtIGJyZWFrcG9pbnRfcmVfc2V0Ci08LSBjbGVh cl9zeW10YWJfdXNlcnMgPC0gbmV3X3N5bWZpbGVfb2JqZmlsZSA8LQotc3ltYm9sX2ZpbGVfYWRk X3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyA8LSBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgPC0KLXN5 bWJvbF9maWxlX2FkZCA8LSBzeW1ib2xfZmlsZV9hZGRfbWFpbl8xIDwtIHN5bWJvbF9maWxlX2Fk ZF9tYWluIDwtCi1mb2xsb3dfZXhlYwotCi0KLUkgdW5kZXJzdGFuZCB0aGlzIGhhY2sgaXMgbm90 IG5pY2UsIHRoZSBjb3JyZWN0IHdheSB3b3VsZCBiZSB0byB1bmlmeSBtb3JlCi1mb2xsb3dfZXhl YyB3aXRoIHBvc3RfY3JlYXRlX2luZmVyaW9yLiAgQnV0IEkgY291bGQgYnJlYWsgaXQgZm9yIG5v bi1HTlUvTGludXgKLXRhcmdldHMgYSBsb3QuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQs eDg2XzY0LW0zMixpNjg2fS1mZWRvcmExNHNuYXBzaG90LWxpbnV4LWdudS4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi1mb3IgdGhlIGRlbW8gYWJvdmU6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSNp bmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdGRpby5o PgotaW50Ci1tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gIHNldGJ1ZiAoc3Rkb3V0 LCBOVUxMKTsKLSAgaWYgKGFyZ2MgPT0gMSkKLSAgICB7Ci0gICAgICBwdXRzICgicmUtZXhlYyIp OwotICAgICAgZXhlY2wgKCIvcHJvYy9zZWxmL2V4ZSIsIGFyZ3ZbMF0sICJmb28iLCBOVUxMKTsK LSAgICAgIGFzc2VydCAoMCk7Ci0gICAgfQotICBwdXRzICgiZXhpdCIpOwotICByZXR1cm4gMDsK LX0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLWdkYi8KLTIwMTAtMDktMzAgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogaW5mcnVuLmMgKGZvbGxv d19leGVjKTogUmVwbGFjZSBzeW1ib2xfZmlsZV9hZGRfbWFpbiBieQotCXN5bWJvbF9maWxlX2Fk ZCB3aXRoIFNZTUZJTEVfREVGRVJfQlBfUkVTRVQsIHNldF9pbml0aWFsX2xhbmd1YWdlIGFuZAot CWJyZWFrcG9pbnRfcmVfc2V0LgotCSogbTMyci1yb20uYyAobTMycl9sb2FkLCBtMzJyX3VwbG9h ZF9jb21tYW5kKTogVXNlIHBhcmFtZXRlciAwIGZvcgotCWNsZWFyX3N5bXRhYl91c2Vycy4KLQkq IG9iamZpbGVzLmMgKGZyZWVfYWxsX29iamZpbGVzKTogTGlrZXdpc2UuCi0JKiByZW1vdGUtbTMy ci1zZGkuYyAobTMycl9sb2FkKTogTGlrZXdpc2UuCi0JKiBzb2xpYi1zb20uYyAoc29tX3NvbGli X2NyZWF0ZV9pbmZlcmlvcl9ob29rKTogTGlrZXdpc2UuCi0JKiBzeW1maWxlLmMgKG5ld19zeW1m aWxlX29iamZpbGUpOiBOZXcgY29tbWVudCBmb3IgYWRkX2ZsYWdzLiAgQ2FsbAotCWNsZWFyX3N5 bXRhYl91c2VycyB3aXRoIEFERF9GTEFHUy4KLQkocmVyZWFkX3N5bWJvbHMpOiBVc2UgcGFyYW1l dGVyIDAgZm9yIGNsZWFyX3N5bXRhYl91c2Vycy4KLQkoY2xlYXJfc3ltdGFiX3VzZXJzKTogTmV3 IHBhcmFtZXRlciBhZGRfZmxhZ3MuICBEbyBub3QgY2FsbAotCWJyZWFrcG9pbnRfcmVfc2V0IGlm IFNZTUZJTEVfREVGRVJfQlBfUkVTRVQuCi0JKGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwKTog VXNlIHBhcmFtZXRlciAwIGZvciBjbGVhcl9zeW10YWJfdXNlcnMuCi0JKiBzeW10YWIuaCAoY2xl YXJfc3ltdGFiX3VzZXJzKTogTmV3IHBhcmFtZXRlciBhZGRfZmxhZ3MuCi0KLWdkYi90ZXN0c3Vp dGUvCi0yMDEwLTA5LTMwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQkqIGdkYi5iYXNlL3BpZS1leGVjbC5leHA6IE5ldyBmaWxlLgotCSogZ2RiLmJhc2Uv cGllLWV4ZWNsLmM6IE5ldyBmaWxlLgotCi1JbmRleDogZ2RiLTcuMi9nZGIvaW5mcnVuLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAtMTAtMTIgMTg6Mjc6 NTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvaW5mcnVuLmMJMjAxMC0xMC0xMiAx ODoyOToyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC04NDAsOCArODQwLDE1IEBAIGZvbGxvd19leGVj IChwdGlkX3QgcGlkLCBjaGFyICpleGVjZF9wYXQKLSAgIC8qIFRoYXQgYS5vdXQgaXMgbm93IHRo ZSBvbmUgdG8gdXNlLiAqLwotICAgZXhlY19maWxlX2F0dGFjaCAoZXhlY2RfcGF0aG5hbWUsIDAp OwotIAotLSAgLyogTG9hZCB0aGUgbWFpbiBmaWxlJ3Mgc3ltYm9scy4gICovCi0tICBzeW1ib2xf ZmlsZV9hZGRfbWFpbiAoZXhlY2RfcGF0aG5hbWUsIDApOwotKyAgLyogU1lNRklMRV9ERUZFUl9C UF9SRVNFVCBpcyB1c2VkIGFzIHRoZSBwcm9wZXIgZGlzcGxhY2VtZW50IGZvciBQSUUKLSsgICAg IChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlKSBtYWluIHN5bWJvbCBmaWxlIHdpbGwg Z2V0IGFwcGxpZWQgYnkKLSsgICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIGJlbG93LiAg YnJlYWtwb2ludF9yZV9zZXQgd291bGQgZmFpbCB0byBpbnNlcnQKLSsgICAgIHRoZSBicmVha3Bv aW50cyB3aXRoIHRoZSB6ZXJvIGRpc3BsYWNlbWVudC4gICovCi0rCi0rICBzeW1ib2xfZmlsZV9h ZGQgKGV4ZWNkX3BhdGhuYW1lLCBTWU1GSUxFX01BSU5MSU5FIHwgU1lNRklMRV9ERUZFUl9CUF9S RVNFVCwKLSsJCSAgIE5VTEwsIDApOwotKwotKyAgc2V0X2luaXRpYWxfbGFuZ3VhZ2UgKCk7Ci0g Ci0gI2lmZGVmIFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09LCi0gICBTT0xJQl9DUkVBVEVfSU5G RVJJT1JfSE9PSyAoUElER0VUIChpbmZlcmlvcl9wdGlkKSk7Ci1AQCAtODUxLDYgKzg1OCw4IEBA IGZvbGxvd19leGVjIChwdGlkX3QgcGlkLCBjaGFyICpleGVjZF9wYXQKLSAKLSAgIGppdF9pbmZl cmlvcl9jcmVhdGVkX2hvb2sgKCk7Ci0gCi0rICBicmVha3BvaW50X3JlX3NldCAoKTsKLSsKLSAg IC8qIFJlaW5zZXJ0IGFsbCBicmVha3BvaW50cy4gIChUaG9zZSB3aGljaCB3ZXJlIHN5bWJvbGlj IGhhdmUKLSAgICAgIGJlZW4gcmVzZXQgdG8gdGhlIHByb3BlciBhZGRyZXNzIGluIHRoZSBuZXcg YS5vdXQsIHRoYW5rcwotICAgICAgdG8gc3ltYm9sX2ZpbGVfY29tbWFuZC4uLikgKi8KLUluZGV4 OiBnZGItNy4yL2dkYi9tMzJyLXJvbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dk Yi9tMzJyLXJvbS5jCTIwMTAtMDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMi9nZGIvbTMyci1yb20uYwkyMDEwLTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAwMCArMDIwMAot QEAgLTE4OCw3ICsxODgsNyBAQCBtMzJyX2xvYWQgKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90 dHkpCi0gICAgICB0aGUgc3RhY2sgbWF5IG5vdCBiZSB2YWxpZCwgYW5kIHRoaW5ncyB3b3VsZCBn ZXQgaG9ycmlibHkKLSAgICAgIGNvbmZ1c2VkLi4uICovCi0gCi0tICBjbGVhcl9zeW10YWJfdXNl cnMgKCk7Ci0rICBjbGVhcl9zeW10YWJfdXNlcnMgKDApOwotIH0KLSAKLSBzdGF0aWMgdm9pZAot QEAgLTU1MSw3ICs1NTEsNyBAQCBtMzJyX3VwbG9hZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQg ZnJvCi0gICAgICB0aGUgc3RhY2sgbWF5IG5vdCBiZSB2YWxpZCwgYW5kIHRoaW5ncyB3b3VsZCBn ZXQgaG9ycmlibHkKLSAgICAgIGNvbmZ1c2VkLi4uICovCi0gCi0tICBjbGVhcl9zeW10YWJfdXNl cnMgKCk7Ci0rICBjbGVhcl9zeW10YWJfdXNlcnMgKDApOwotIH0KLSAKLSAvKiBQcm92aWRlIGEg cHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdk Yi03LjIvZ2RiL29iamZpbGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL29i amZpbGVzLmMJMjAxMC0xMC0xMiAxODoyNzo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4y L2dkYi9vYmpmaWxlcy5jCTIwMTAtMTAtMTIgMTg6Mjk6MzkuMDAwMDAwMDAwICswMjAwCi1AQCAt Njk5LDcgKzY5OSw3IEBAIGZyZWVfYWxsX29iamZpbGVzICh2b2lkKQotICAgewotICAgICBmcmVl X29iamZpbGUgKG9iamZpbGUpOwotICAgfQotLSAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOwotKyAg Y2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKLSB9Ci0gDAotIC8qIFJlbG9jYXRlIE9CSkZJTEUgdG8g TkVXX09GRlNFVFMuICBUaGVyZSBzaG91bGQgYmUgT0JKRklMRS0+TlVNX1NFQ1RJT05TCi1JbmRl eDogZ2RiLTcuMi9nZGIvcmVtb3RlLW0zMnItc2RpLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y Lm9yaWcvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCTIwMTAtMDctMDcgMTg6MTU6MTYuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvcmVtb3RlLW0zMnItc2RpLmMJMjAxMC0xMC0xMiAxODoy OToyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzc3LDcgKzEzNzcsNyBAQCBtMzJyX2xvYWQgKGNo YXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgICAgIG1pZ2h0IGJlIHRvIGNhbGwgbm9ybWFsX3N0 b3AsIGV4Y2VwdCB0aGF0IHRoZSBzdGFjayBtYXkgbm90IGJlIHZhbGlkLAotICAgICAgYW5kIHRo aW5ncyB3b3VsZCBnZXQgaG9ycmlibHkgY29uZnVzZWQuLi4gKi8KLSAKLS0gIGNsZWFyX3N5bXRh Yl91c2VycyAoKTsKLSsgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7Ci0gCi0gICBpZiAoIW5vc3Rh cnQpCi0gICAgIHsKLUluZGV4OiBnZGItNy4yL2dkYi9zb2xpYi1zb20uYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIub3JpZy9nZGIvc29saWItc29tLmMJMjAxMC0wNS0xNyAwMTo0OTo1OC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9zb2xpYi1zb20uYwkyMDEwLTEwLTEyIDE4OjI5 OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTM1NCw3ICszNTQsNyBAQCBrZWVwX2dvaW5nOgotICAg LyogTWFrZSB0aGUgYnJlYWtwb2ludCBhdCAiX3N0YXJ0IiBhIHNoYXJlZCBsaWJyYXJ5IGV2ZW50 IGJyZWFrcG9pbnQuICAqLwotICAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdl dF9nZGJhcmNoLCBhbmFkZHIpOwotIAotLSAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOwotKyAgY2xl YXJfc3ltdGFiX3VzZXJzICgwKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUluZGV4OiBnZGItNy4y L2dkYi9zeW1maWxlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3N5bWZpbGUu YwkyMDEwLTEwLTEyIDE4OjI3OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3N5 bWZpbGUuYwkyMDEwLTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwMzYsNyAr MTAzNiw3IEBAIHN5bXNfZnJvbV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAKLSAv KiBQZXJmb3JtIHJlcXVpcmVkIGFjdGlvbnMgYWZ0ZXIgZWl0aGVyIHJlYWRpbmcgaW4gdGhlIGlu aXRpYWwKLSAgICBzeW1ib2xzIGZvciBhIG5ldyBvYmpmaWxlLCBvciBtYXBwaW5nIGluIHRoZSBz eW1ib2xzIGZyb20gYSByZXVzYWJsZQotLSAgIG9iamZpbGUuICovCi0rICAgb2JqZmlsZS4gIEFE RF9GTEFHUyBpcyBhIGJpdG1hc2sgb2YgZW51bSBzeW1maWxlX2FkZF9mbGFncy4gICovCi0gCi0g dm9pZAotIG5ld19zeW1maWxlX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQg YWRkX2ZsYWdzKQotQEAgLTEwNDksNyArMTA0OSw3IEBAIG5ld19zeW1maWxlX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmoKLSAgICAgICAvKiBPSywgbWFrZSBpdCB0aGUgInJlYWwiIHN5bWJv bCBmaWxlLiAgKi8KLSAgICAgICBzeW1maWxlX29iamZpbGUgPSBvYmpmaWxlOwotIAotLSAgICAg IGNsZWFyX3N5bXRhYl91c2VycyAoKTsKLSsgICAgICBjbGVhcl9zeW10YWJfdXNlcnMgKGFkZF9m bGFncyk7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxFX0RFRkVSX0JQ X1JFU0VUKSA9PSAwKQotICAgICB7Ci1AQCAtMjUyNyw3ICsyNTI3LDcgQEAgcmVyZWFkX3N5bWJv bHMgKHZvaWQpCi0gICAgICAgLyogTm90aWZ5IG9iamZpbGVzIHRoYXQgd2UndmUgbW9kaWZpZWQg b2JqZmlsZSBzZWN0aW9ucy4gICovCi0gICAgICAgb2JqZmlsZXNfY2hhbmdlZCAoKTsKLSAKLS0g ICAgICBjbGVhcl9zeW10YWJfdXNlcnMgKCk7Ci0rICAgICAgY2xlYXJfc3ltdGFiX3VzZXJzICgw KTsKLSAgICAgICAvKiBBdCBsZWFzdCBvbmUgb2JqZmlsZSBoYXMgY2hhbmdlZCwgc28gd2UgY2Fu IGNvbnNpZGVyIHRoYXQKLSAgICAgICAgICB0aGUgZXhlY3V0YWJsZSB3ZSdyZSBkZWJ1Z2dpbmcg aGFzIGNoYW5nZWQgdG9vLiAgKi8KLSAgICAgICBvYnNlcnZlcl9ub3RpZnlfZXhlY3V0YWJsZV9j aGFuZ2VkICgpOwotQEAgLTI3NDUsMTAgKzI3NDUsMTAgQEAgYWxsb2NhdGVfc3ltdGFiIChjaGFy ICpmaWxlbmFtZSwgc3RydWN0IAotIAwKLSAKLSAvKiBSZXNldCBhbGwgZGF0YSBzdHJ1Y3R1cmVz IGluIGdkYiB3aGljaCBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRvIHN5bWJvbAotLSAgIHRhYmxl IGRhdGEuICAqLwotKyAgIHRhYmxlIGRhdGEuICBBRERfRkxBR1MgaXMgYSBiaXRtYXNrIG9mIGVu dW0gc3ltZmlsZV9hZGRfZmxhZ3MuICAqLwotIAotIHZvaWQKLS1jbGVhcl9zeW10YWJfdXNlcnMg KHZvaWQpCi0rY2xlYXJfc3ltdGFiX3VzZXJzIChpbnQgYWRkX2ZsYWdzKQotIHsKLSAgIC8qIFNv bWVkYXksIHdlIHNob3VsZCBkbyBiZXR0ZXIgdGhhbiB0aGlzLCBieSBvbmx5IGJsb3dpbmcgYXdh eQotICAgICAgdGhlIHRoaW5ncyB0aGF0IHJlYWxseSBuZWVkIHRvIGJlIGJsb3duLiAgKi8KLUBA IC0yNzU4LDcgKzI3NTgsOCBAQCBjbGVhcl9zeW10YWJfdXNlcnMgKHZvaWQpCi0gICBjbGVhcl9j dXJyZW50X3NvdXJjZV9zeW10YWJfYW5kX2xpbmUgKCk7Ci0gCi0gICBjbGVhcl9kaXNwbGF5cyAo KTsKLS0gIGJyZWFrcG9pbnRfcmVfc2V0ICgpOwotKyAgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxF X0RFRkVSX0JQX1JFU0VUKSA9PSAwKQotKyAgICBicmVha3BvaW50X3JlX3NldCAoKTsKLSAgIHNl dF9kZWZhdWx0X2JyZWFrcG9pbnQgKDAsIE5VTEwsIDAsIDAsIDApOwotICAgY2xlYXJfcGNfZnVu Y3Rpb25fY2FjaGUgKCk7Ci0gICBvYnNlcnZlcl9ub3RpZnlfbmV3X29iamZpbGUgKE5VTEwpOwot QEAgLTI3NzcsNyArMjc3OCw3IEBAIGNsZWFyX3N5bXRhYl91c2VycyAodm9pZCkKLSBzdGF0aWMg dm9pZAotIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICh2b2lkICppZ25vcmUpCi0gewotLSAg Y2xlYXJfc3ltdGFiX3VzZXJzICgpOwotKyAgY2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKLSB9Ci0g DAotIC8qIE9WRVJMQVlTOgotSW5kZXg6IGdkYi03LjIvZ2RiL3N5bXRhYi5oCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9zeW10YWIuaAkyMDEwLTEwLTEyIDE4OjI3OjU2LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3N5bXRhYi5oCTIwMTAtMTAtMTIgMTg6Mjk6MjQu MDAwMDAwMDAwICswMjAwCi1AQCAtMTE3MCw3ICsxMTcwLDcgQEAgZXh0ZXJuIHZvaWQgc2tpcF9w cm9sb2d1ZV9zYWwgKHN0cnVjdCBzeQotIAotIC8qIHN5bWZpbGUuYyAqLwotIAotLWV4dGVybiB2 b2lkIGNsZWFyX3N5bXRhYl91c2VycyAodm9pZCk7Ci0rZXh0ZXJuIHZvaWQgY2xlYXJfc3ltdGFi X3VzZXJzIChpbnQgYWRkX2ZsYWdzKTsKLSAKLSBleHRlcm4gZW51bSBsYW5ndWFnZSBkZWR1Y2Vf bGFuZ3VhZ2VfZnJvbV9maWxlbmFtZSAoY29uc3QgY2hhciAqKTsKLSAKLUluZGV4OiBnZGItNy4y L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGllLWV4ZWNsLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGllLWV4ZWNsLmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAw MDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNTEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+ Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKwotK3N0YXRpYyB2b2lkIHBpZV9leGVjbF9tYXJrZXIg KHZvaWQpOwotKwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBz ZXRidWYgKHN0ZG91dCwgTlVMTCk7Ci0rCi0rI2lmIEJJTiA9PSAxCi0rICBpZiAoYXJnYyA9PSAy KQotKyAgICB7Ci0rICAgICAgcHJpbnRmICgicGllLWV4ZWNsOiByZS1leGVjOiAlc1xuIiwgYXJn dlsxXSk7Ci0rICAgICAgZXhlY2wgKGFyZ3ZbMV0sIGFyZ3ZbMV0sIE5VTEwpOwotKyAgICAgIGFz c2VydCAoMCk7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsgIHBpZV9leGVjbF9tYXJrZXIgKCk7Ci0r Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogcGllX2V4ZWNsX21hcmtlciBtdXN0IGJlIG9uIGEg ZGlmZmVyZW50IGFkZHJlc3MgdGhhbiBpbiBgcGllLWV4ZWNsMi5jJy4gICovCi0rCi0rdm9sYXRp bGUgaW50IHY7Ci0rCi0rc3RhdGljIHZvaWQKLStwaWVfZXhlY2xfbWFya2VyICh2b2lkKQotK3sK LSsgIHYgPSAxOwotK30KLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGll LWV4ZWNsLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUt ZXhlY2wuZXhwCTIwMTAtMTAtMTIgMTg6Mjk6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDk0IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGUgcHJvYmxlbSB3YXMg ZHVlIHRvIGFtZDY0X3NraXBfcHJvbG9ndWUgYXR0ZW1wdGluZyB0byBhY2Nlc3MgaW5mZXJpb3IK LSsjIG1lbW9yeSBiZWZvcmUgdGhlIFBJRSAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJs ZSkgZ2V0cyByZWxvY2F0ZWQuCi0rCi0raWYgeyAhW2lzdGFyZ2V0ICotbGludXgqXX0gewotKyAg ICBjb250aW51ZQotK30KLSsKLStzZXQgdGVzdGZpbGUgInBpZS1leGVjbCIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGV4ZWN1dGFibGUxICR7dGVzdGZpbGV9MQotK3NldCBleGVj dXRhYmxlMiAke3Rlc3RmaWxlfTIKLStzZXQgYmluZmlsZTEgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e2V4ZWN1dGFibGUxfQotK3NldCBiaW5maWxlMiAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0 YWJsZTJ9Ci0rCi0rIyBVc2UgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYWNjb3JkaW5nIHRvIGBC SU4nIGFzIEdEQiByZW1lbWJlcnMgdGhlIHNvdXJjZQotKyMgZmlsZSBuYW1lIG9mIHRoZSBicmVh a3BvaW50LgotKwotK3NldCBvcHRzIFtsaXN0IGRlYnVnIHthZGRpdGlvbmFsX2ZsYWdzPS1mUElF IC1waWV9XQotK2lmIHtbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFi bGUxICRzcmNmaWxlIFtjb25jYXQgJG9wdHMge2FkZGl0aW9uYWxfZmxhZ3M9LURCSU49MX1dXSA9 PSAiIgotKyAgICB8fCBbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFi bGUyICRzcmNmaWxlIFtjb25jYXQgJG9wdHMge2FkZGl0aW9uYWxfZmxhZ3M9LURCSU49Mn1dXSA9 PSAiIn0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFi bGUxfQotKwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGFyZ3MgJHtiaW5maWxlMn0iCi0rCi0r aWYgIVtydW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIERvIG5vdCBzdG9w IG9uIGBtYWluJyBhZnRlciByZS1leGVjLgotK2RlbGV0ZV9icmVha3BvaW50cwotKwotK2dkYl9i cmVha3BvaW50ICJwaWVfZXhlY2xfbWFya2VyIgotK2dkYl90ZXN0ICJpbmZvIGJyZWFrcG9pbnRz IiAiLioiICIiCi0rCi0rc2V0IGFkZHIxICIiCi0rc2V0IHRlc3QgInBpZV9leGVjbF9tYXJrZXIg YWRkcmVzcyBmaXJzdCIKLStnZGJfdGVzdF9tdWx0aXBsZSAicC94ICZwaWVfZXhlY2xfbWFya2Vy IiAkdGVzdCB7Ci0rICAgIC1yZSAiID0gKDB4XFswLTlhLWZcXSspXHJcbiRnZGJfcHJvbXB0ICQi IHsKLSsJc2V0IGFkZHIxICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAg IH0KLSt9Ci0rdmVyYm9zZSAtbG9nICJhZGRyMSBpcyAkYWRkcjEiCi0rCi0rc2V0IHRlc3QgImNv bnRpbnVlIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJFcnJv ciBpbiByZS1zZXR0aW5nIGJyZWFrcG9pbnQiIHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAg IC1yZSAiQ2Fubm90IGFjY2VzcyBtZW1vcnkiIHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAg IC1yZSAicGllLWV4ZWNsOiByZS1leGVjLipleGVjdXRpbmcgbmV3IHByb2dyYW0uKlxyXG5CcmVh a3BvaW50IFxbMC05XF0rLFxbXlxyXG5cXSogcGllX2V4ZWNsX21hcmtlciAuKlxyXG4kZ2RiX3By b21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStnZGJfdGVzdCAiaW5mbyBi cmVha3BvaW50cyIgIi4qIiAiIgotKwotK3NldCBhZGRyMiAiIgotK3NldCB0ZXN0ICJwaWVfZXhl Y2xfbWFya2VyIGFkZHJlc3Mgc2Vjb25kIgotK2dkYl90ZXN0X211bHRpcGxlICJwL3ggJnBpZV9l eGVjbF9tYXJrZXIiICR0ZXN0IHsKLSsgICAgLXJlICIgPSAoMHhcWzAtOWEtZlxdKylcclxuJGdk Yl9wcm9tcHQgJCIgewotKwlzZXQgYWRkcjIgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCXBhc3Mg JHRlc3QKLSsgICAgfQotK30KLSt2ZXJib3NlIC1sb2cgImFkZHIyIGlzICRhZGRyMiIKLSsKLSsj IEVuc3VyZSB3ZSBjYW5ub3QgZ2V0IGEgZmFsc2UgUEFTUyBhbmQgdGhlIGluZmVyaW9yIGhhcyBy ZWFsbHkgY2hhbmdlZC4KLStzZXQgdGVzdCAicGllX2V4ZWNsX21hcmtlciBhZGRyZXNzIGhhcyBj aGFuZ2VkIgotK2lmIFtzdHJpbmcgZXF1YWwgJGFkZHIxICRhZGRyMl0gewotKyAgICBmYWlsICR0 ZXN0Ci0rfSBlbHNlIHsKLSsgICAgcGFzcyAkdGVzdAotK30KCmRpZmYgLS1naXQgYS9nZGItZm9y dHJhbi1jb21tb24ucGF0Y2ggYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKaW5kZXggNjNmYTgx Yy4uYTcwYjc4MCAxMDA2NDQKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCisrKyBiL2dk Yi1mb3J0cmFuLWNvbW1vbi5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcv Z2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjEzOjAyLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjI2OjI1 LjAwMDAwMDAwMCArMDIwMAotQEAgLTU3MjcsMTIgKzU3MjcsMTQgQEAgcmVhZF9zZXRfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cgorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9n ZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MTk6NTQuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MjU6MjEu MDAwMDAwMDAwICswMTAwCitAQCAtNzMxNSwxMiArNzMxNSwxNCBAQCByZWFkX3NldF90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RyCiAgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHNl dF90eXBlLCBjdSk7CiAgfQogIApAQCAtMTksNyArMTksNyBAQCBJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAg c3RydWN0IHN5bWJvbCAqc3ltOwogICAgQ09SRV9BRERSIGJhc2UgPSAoQ09SRV9BRERSKSAwOwot QEAgLTU3NTcsMTAgKzU3NTksNDAgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5m byAqZGllLAorQEAgLTczNDUsMTAgKzczNDcsNDAgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVj dCBkaWVfaW5mbyAqZGllLAogICAgICB9CiAgICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQogICAg ICB7CkBAIC01OCw5ICs1OCw5IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2Fy ZjJyZWFkLmMKICsKICsJICAvKiBVbmRvY3VtZW50ZWQgaW4gRFdBUkYzLCB3aGVuIGl0IGNhbiBi ZSBwcmVzZW50PyAgKi8KICAJICBhdHRyID0gZHdhcmYyX2F0dHIgKGNoaWxkX2RpZSwgRFdfQVRf ZGF0YV9tZW1iZXJfbG9jYXRpb24sIGN1KTsKLSAJICBpZiAoYXR0cikKKyAJICBpZiAoc3ltICE9 IE5VTEwgJiYgYXR0ciAhPSBOVUxMKQogIAkgICAgewotQEAgLTU3NzgsOCArNTgxMCwyNSBAQCBy ZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtNzM2Niw4ICs3Mzk4 LDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJICAgICAg U1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkgPSBiYXNlICsgYnl0ZV9vZmZzZXQ7CiAgCSAgICAg IGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOwogIAkgICAgfQpAQCAt ODYsNyArODYsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5j CiAgICAgIH0KICB9CiAgCi1AQCAtOTEwNiw2ICs5MTU1LDEzIEBAIG5ld19zeW1ib2wgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QKK0BAIC0xMDk1NCw2ICsxMTAwMywxMyBAQCBuZXdfc3lt Ym9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCiAgCSAgICB7CiAgCSAgICAgIHZhcl9k ZWNvZGVfbG9jYXRpb24gKGF0dHIsIHN5bSwgY3UpOwogIAkgICAgICBhdHRyMiA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX2V4dGVybmFsLCBjdSk7CkBAIC05NywxMiArOTcsMTIgQEAgSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogKwkJICAmJiBkaWUtPnBhcmVu dC0+dGFnID09IERXX1RBR19jb21tb25fYmxvY2spCiArCQlhdHRyMiA9IE5VTEw7CiArCi0gCSAg ICAgIGlmIChhdHRyMiAmJiAoRFdfVU5TTkQgKGF0dHIyKSAhPSAwKSkKLSAJCXsKLSAJCSAgc3Ry dWN0IHBlbmRpbmcgKipsaXN0X3RvX2FkZDsKLUBAIC05Mjc3LDYgKzkzMzMsMTEgQEAgbmV3X3N5 bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorIAkgICAgICBpZiAoU1lNQk9MX0NM QVNTIChzeW0pID09IExPQ19TVEFUSUMKKyAJCSAgJiYgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5 bSkgPT0gMAorIAkJICAmJiAhZHdhcmYyX3Blcl9vYmpmaWxlLT5oYXNfc2VjdGlvbl9hdF96ZXJv KQorQEAgLTExMTI2LDYgKzExMTgyLDExIEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHMKICAJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfVFlQRURFRjsKLSAJICBh ZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKKyAJICBsaXN0X3RvX2Fk ZCA9ICZnbG9iYWxfc3ltYm9sczsKICAJICBicmVhazsKICsJY2FzZSBEV19UQUdfY29tbW9uX2Js b2NrOgogKwkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19TVEFUSUM7CkBAIC0xMTIsMTAgKzEx MiwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgCWRl ZmF1bHQ6CiAgCSAgLyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4gIEhvcGVmdWxseSB3ZSBhcmVu J3QgcHJvY2Vzc2luZwogIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBzaW5jZSB3ZSBtdXN0IHNwZWNp ZmljYWxseSBpZ25vcmUgdGhpbmdzCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi1s YW5nLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxhbmcuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZi1sYW5nLmMJMjAxMC0wNy0xMyAw MDoyNDowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLWxh bmcuYwkyMDEwLTA3LTEzIDAwOjI1OjU2LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAu MjAxMDExMTYub3JpZy9nZGIvZi1sYW5nLmMJMjAxMC0xMS0xNiAwODoyMTo0Ni4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxhbmcuYwkyMDEwLTExLTE2IDA4 OjIyOjA1LjAwMDAwMDAwMCArMDEwMAogQEAgLTQ0MywyNyArNDQzLDMgQEAgX2luaXRpYWxpemVf Zl9sYW5ndWFnZSAodm9pZCkKICAKICAgIGFkZF9sYW5ndWFnZSAoJmZfbGFuZ3VhZ2VfZGVmbik7 CkBAIC0xNDQsMTAgKzE0NCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi1s YW5nLmMKIC0gICAgfQogLSAgcmV0dXJuIChOVUxMKTsKIC19Ci1JbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxh bmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZi1sYW5n LmgJMjAxMC0wNy0xMyAwMDoyNDowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9mLWxhbmcuaAkyMDEwLTA3LTEzIDAwOjI1OjU2LjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvZi1sYW5nLmgJMjAxMC0xMS0xNiAwODoy MTo0Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxhbmcu aAkyMDEwLTExLTE2IDA4OjIyOjA1LjAwMDAwMDAwMCArMDEwMAogQEAgLTUyLDM2ICs1Miw4IEBA IGVudW0gZjkwX3JhbmdlX3R5cGUKICAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxvdzpo aWdoKSIgICovCiAgICB9OwpAQCAtMTg1LDEwICsxODUsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2YtbGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFycmF5IGJvdW5k cyBjYW5ub3QgYmUgZmV0Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sgdG8gJ210IHBy aW50IHN5bWJvbHMnIGFuZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1JbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcx MS5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMC0wNy0xMyAwMDoyNDoyNS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLXZhbHByaW50LmMJMjAxMC0wNy0xMyAw MDozMjowNS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2Ri L2YtdmFscHJpbnQuYwkyMDEwLTExLTE2IDA4OjIxOjQ2LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTExLTE2IDA4OjIyOjA1LjAw MDAwMDAwMCArMDEwMAogQEAgLTM0LDYgKzM0LDggQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgog ICNpbmNsdWRlICJjb21tYW5kLmgiCkBAIC0zNzEsMTEgKzM3MSwxMSBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZi12YWxwcmludC5jCiAgfQogIAogIHZvaWQKLUluZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9zdGFjay5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvc3RhY2suYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv c3RhY2suYwkyMDEwLTA3LTAxIDE3OjM2OjE3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL3N0YWNrLmMJMjAxMC0wNy0xMyAwMDoyOTo0OS4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xNDg0LDYgKzE0ODQsOCBAQCBpdGVyYXRlX292ZXJfYmxvY2tfbG9jYWxzIChzdHJ1 Y3QgYmxvY2sgCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9zdGFjay5jCTIwMTAt MDktMzAgMTI6Mjk6MDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvc3RhY2suYwkyMDEwLTExLTE2IDA4OjIyOjA1LjAwMDAwMDAwMCArMDEwMAorQEAgLTE0OTAs NiArMTQ5MCw4IEBAIGl0ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbHMgKHN0cnVjdCBibG9jayAKICAJ Y2FzZSBMT0NfQ09NUFVURUQ6CiAgCSAgaWYgKFNZTUJPTF9JU19BUkdVTUVOVCAoc3ltKSkKICAJ ICAgIGJyZWFrOwpAQCAtMzg0LDExICszODQsMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL3N0YWNrLmMKICAJICAoKmNiKSAoU1lNQk9MX1BSSU5UX05BTUUgKHN5bSksIHN5bSwg Y2JfZGF0YSk7CiAgCSAgYnJlYWs7CiAgCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv c3ltdGFiLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW10YWIuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wNy0x MiAyMzowNzozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9z eW10YWIuaAkyMDEwLTA3LTEzIDAwOjI3OjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM5Niw3ICsz OTYsMTAgQEAgdHlwZWRlZiBlbnVtIGRvbWFpbl9lbnVtX3RhZworLS0tIGdkYi03LjIuNTAuMjAx MDExMTYub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0xMS0xNiAwNzo1Mzo1OS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW10YWIuaAkyMDEwLTExLTE2IDA4OjIy OjA1LjAwMDAwMDAwMCArMDEwMAorQEAgLTQwOCw3ICs0MDgsMTAgQEAgdHlwZWRlZiBlbnVtIGRv bWFpbl9lbnVtX3RhZwogICAgRlVOQ1RJT05TX0RPTUFJTiwKICAKICAgIC8qIEFsbCBkZWZpbmVk IHR5cGVzICovCkBAIC00MDAsMTAgKzQwMCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvc3ltdGFiLmgKICB9CiAgZG9tYWluX2VudW07CiAgCi1JbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJs b2NrLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAtMDctMTMgMDA6MjU6NTYuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Nv bW1vbi1ibG9jay5leHAJMjAxMC0xMS0xNiAwODoyMjowNS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0w LDAgKzEsMTAxIEBACiArIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KICsKQEAgLTUwNiwxMCArNTA2LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogK2dkYl90ZXN0ICJw IGl4X3giICIgPSAxICoiICJwIGl4X3ggaW4iCiArZ2RiX3Rlc3QgInAgaXlfeSIgIiA9IDIgKiIg InAgaXlfeSBpbiIKICtnZGJfdGVzdCAicCBpel96MiIgIiA9IDMgKiIgInAgaXpfejIgaW4iCi1J bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1v bi1ibG9jay5mOTAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5MAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCTIwMTAtMDctMTMgMDA6 MjU6NTYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAJMjAxMC0xMS0xNiAwODoyMjowNS4wMDAw MDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsNjcgQEAKICshIENvcHlyaWdodCAyMDA4IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyEKCmRpZmYgLS1naXQgYS9nZGItZ2RiLWFkZC1pbmRl eC1zY3JpcHQucGF0Y2ggYi9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKaW5kZXggYzc3 MGE3Ny4uMWMxNDVhYyAxMDA2NDQKLS0tIGEvZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNo CisrKyBiL2dkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaApAQCAtNDAsMTEgKzQwLDExIEBA IFN1YmplY3Q6IFtQQVRDSCA0LzRdIGFkZCBnZGItYWRkLWluZGV4CiAgNSBmaWxlcyBjaGFuZ2Vk LCA1NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDc1NSBn ZGIvZ2RiLWFkZC1pbmRleAogCi1kaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01h a2VmaWxlLmluCi1pbmRleCA2ZGJiMjg0Li44MjEwYTJjIDEwMDY0NAotLS0tIGEvZ2RiL01ha2Vm aWxlLmluCi0rKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xMDE4LDcgKzEwMTgsMTYgQEAgaW5z dGFsbC1vbmx5OiAkKENPTkZJR19JTlNUQUxMKSB4bWwtc3lzY2FsbC1pbnN0YWxsCitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTAtMTEtMTYgMDg6MDM6MTcu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvTWFrZWZpbGUuaW4J MjAxMC0xMS0xNiAwODo0Nzo0NS4wMDAwMDAwMDAgKzAxMDAKK0BAIC05ODYsNyArOTg2LDE2IEBA IGluc3RhbGwtb25seTogaW5zdGFsbC1nc3RhY2sgJChDT05GSUdfSU4KICAJCSQoU0hFTEwpICQo c3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzIFwKICAJCQkkKERFU1RESVIpJChtYW4xZGlyKSA7IFwK ICAJCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvZ2RiLjEgXApAQCAtNjIsMTEgKzYyLDExIEBA IGluZGV4IDZkYmIyODQuLjgyMTBhMmMgMTAwNjQ0CiAgCUAkKE1BS0UpIERPPWluc3RhbGwgIkRP RElSUz0kKFNVQkRJUlMpIiAkKEZMQUdTX1RPX1BBU1MpIHN1YmRpcl9kbwogIC5QSE9OWTogaW5z dGFsbC10dWkKICBpbnN0YWxsLXR1aToKLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZv IGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggNjkxNDFlMy4uNDU3ZTZiNCAxMDA2NDQKLS0t LSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC0x NTA0NSw2ICsxNTA0NSwxNCBAQCBUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUgbGltaXRhdGlvbiBv biBpbmRpY2VzLiAgVGhleSBvbmx5IHdvcmsgd2hlbgorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIuNTAuMjAxMDEx MTYub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMTEtMTYgMDg6MDQ6MTguMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAt MTEtMTYgMDg6NTY6MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMTU1MDAsNiArMTU1MDAsMTQgQEAg VGhlcmUgYXJlIGN1cnJlbnRseSBzb21lIGxpbWl0YXRpb24gb24gaQogIGZvciBEV0FSRiBkZWJ1 Z2dpbmcgaW5mb3JtYXRpb24sIG5vdCBzdGFicy4gIEFuZCwgdGhleSBkbyBub3QKICBjdXJyZW50 bHkgd29yayBmb3IgcHJvZ3JhbXMgdXNpbmcgQWRhLgogIApAQCAtNzgsMTQgKzc4LDEzIEBAIGlu ZGV4IDY5MTQxZTMuLjQ1N2U2YjQgMTAwNjQ0CiArJCBnZGItYWRkLWluZGV4IHN5bWZpbGUKICtA ZW5kIHNtYWxsZXhhbXBsZQogKwotIAogIEBub2RlIFN5bWJvbCBFcnJvcnMKICBAc2VjdGlvbiBF cnJvcnMgUmVhZGluZyBTeW1ib2wgRmlsZXMKLWRpZmYgLS1naXQgYS9nZGIvZ2RiLWFkZC1pbmRl eCBiL2dkYi9nZGItYWRkLWluZGV4Ci1uZXcgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggMDAwMDAw MC4uYzlhMDNiMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2dkYi1hZGQtaW5kZXgKKyAKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9nZGItYWRkLWluZGV4Cis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvZ2RiLWFkZC1pbmRleAkyMDEwLTExLTE2IDA4OjQ3OjQ1LjAw MDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwzMCBAQAogKyMhIC9iaW4vc2gKICsKQEAgLTExNyw2 ICsxMTYsMyBAQCBpbmRleCAwMDAwMDAwLi5jOWEwM2IwCiArZmkKICsKICtleGl0IDAKLS0tIAot MS42LjIuNQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWdkYmluZGV4LWFkYS1yZWdyZXNzaW9uLnBhdGNo IGIvZ2RiLWdkYmluZGV4LWFkYS1yZWdyZXNzaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA5ZDY3ZDU4Li4wMDAwMDAwCi0tLSBhL2dkYi1nZGJpbmRleC1hZGEtcmVncmVz c2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMjczLmh0bWwKLVN1YmplY3Q6IFtw YXRjaF0gLmdkYl9pbmRleDogRml4IEFkYSByZWdyZXNzaW9uCi0KLUhpLAotCi1vbiBhIHN5c3Rl bSB3aXRoIGxpYnJhcmllcyB1c2luZyAuZ2RiX2luZGV4IGFsbCB0aGUgQWRhIHRlc3RjYXNlcyBG QUlMOgotCi1SdW5uaW5nIC4vZ2RiLmFkYS9wcmludF9wYy5leHAgLi4uCi1GQUlMOiBnZGIuYWRh L3ByaW50X3BjLmV4cDogc3RhcnQgaW5mZXJpb3IgKEdEQiBpbnRlcm5hbCBlcnJvcikKLUZBSUw6 IGdkYi5hZGEvcHJpbnRfcGMuZXhwOiBwIC94ICRwYwotCi1kd2FyZjJyZWFkLmM6MjM3NDogaW50 ZXJuYWwtZXJyb3I6IG1hcF9hZGFfc3ltdGFicyBjYWxsZWQgdmlhIGluZGV4IG1ldGhvZAotCi1G QUlsIGlzIG9uIEZlZG9yYSAxNCBzbmFwc2hvdCB1c2luZyBnY2MtZGVidWdpbmZvLTQuNS4xLTMu ZmMxNC54ODZfNjQgZmlsZToKLQkvdXNyL2xpYi9kZWJ1Zy9saWI2NC9saWJnY2Nfcy00LjUuMS0y MDEwMDkwNy5zby4xLmRlYnVnCi0KLVRoZSByZWdyZXNzaW9ucyBnZXQgZml4ZWQgb24geDg2XzY0 LWZlZG9yYTE0c25hcHNob3QtbGludXgtZ251IGJ5IHRoZSBhdHRhY2hlZAotcGF0Y2guICBObyBy ZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1s aW51eC1nbnUuCi0KLUR1cmluZyBteSB0ZXN0cyB3aXRoIGBzZXQgbGFuZ3VhZ2UgYWRhJyBJIGNv dWxkIG5vdCBsb29rdXAgbm9uLUFkYSBzeW1ib2xzCi1hbnl3YXkgc28gSSBiZWxpZXZlIHRoZSBw YXRjaCBpcyBPSyBidXQgc3VyZSBpdCBuZWVkcyBhbiBBZGEtd2lzZSByZXZpZXcuCi0KLQotVGhh bmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0wOS0xNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJyZWFkLmMgKGR3Ml9tYXBfYWRhX3N5bXRh YnMpOiBSZW1vdmUgdGhlIGludGVybmFsX2Vycm9yLgotCVVwZGF0ZSB0aGUgY29tbWVudC4KLQot LS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTIzNjks MTAgKzIzNjksOSBAQCBkdzJfbWFwX2FkYV9zeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSAJCSAgICAgZG9tYWluX2VudW0gbmFtZXNwYWNlLCBpbnQgd2lsZCwKLSAJCSAgICAgdm9p ZCAqZGF0YSkKLSB7Ci0tICAvKiBGb3Igbm93LCB3ZSBkb24ndCBzdXBwb3J0IEFkYSwgc28gdGhp cyBmdW5jdGlvbiBjYW4ndCBiZQotLSAgICAgcmVhY2hlZC4gICovCi0tICBpbnRlcm5hbF9lcnJv ciAoX19GSUxFX18sIF9fTElORV9fLAotLQkJICBfKCJtYXBfYWRhX3N5bXRhYnMgY2FsbGVkIHZp YSBpbmRleCBtZXRob2QiKSk7Ci0rICAvKiBGb3Igbm93LCB3ZSBkb24ndCBzdXBwb3J0IEFkYS4g IFN0aWxsIHRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGlmIHRoZQotKyAgICAgY3VycmVudCBs YW5ndWFnZSBpcyBBZGEgZm9yIGEgbm9uLUFkYSBvYmpmaWxlIHVzaW5nIEdOVSBpbmRleC4gIEFz IEFkYQotKyAgICAgZG9lcyBub3QgbG9vayBmb3Igbm9uLUFkYSBzeW1ib2xzIHRoaXMgZnVuY3Rp b24gc2hvdWxkIGp1c3QgcmV0dXJuLiAgKi8KLSB9Ci0gCi0gc3RhdGljIHZvaWQKLQoKZGlmZiAt LWdpdCBhL2dkYi1nZGJpbmRleC1iaWdlbmRpYW4ucGF0Y2ggYi9nZGItZ2RiaW5kZXgtYmlnZW5k aWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGQ0ZjRmLi4wMDAwMDAw Ci0tLSBhL2dkYi1nZGJpbmRleC1iaWdlbmRpYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5 NiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9t c2cwMDQzNC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA5L21z ZzAwMTU1Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDkvMjQgMTQ6NDc6NTIJ MS4xMjIwMgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDkvMjQgMTY6MTE6NDQJMS4xMjIw MwotIyMgLTEsMyArMSw5IEBACi0rMjAxMC0wOS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRo YXQuY29tPgotKwotKwkqIGR3YXJmMnJlYWQuYyAoZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5n KTogQWRkIG1pc3NpbmcKLSsJTUFZQkVfU1dBUHMuCi0rCShkdzJfbWFwX3N5bWJvbF9uYW1lcyk6 IExpa2V3aXNlLgotKwotIDIwMTAtMDktMjQgIFNhbWkgV2FnaWFhbGxhICA8c3dhZ2lhYWxAcmVk aGF0LmNvbT4KLSAKLSAJKiB2YWxvcHMuYyAoZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9v cCk6IHJlcGxhY2UgaW5jb3JyZWN0Ci0tLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC8wOS8y MiAxOToyMjo0NAkxLjQ2MAotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTAvMDkvMjQgMTY6 MTE6NDYJMS40NjEKLUBAIC0yMzgyLDEwICsyMzgyLDEyIEBACi0gewotICAgaW50IGk7Ci0gICBv ZmZzZXRfdHlwZSBpdGVyOwotKyAgc3RydWN0IG1hcHBlZF9pbmRleCAqaW5kZXg7Ci0gCi0gICBk dzJfc2V0dXAgKG9iamZpbGUpOwotICAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3Rh YmxlKQotICAgICByZXR1cm47Ci0rICBpbmRleCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhf dGFibGU7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21w X3VuaXRzCi0gCQkgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyAr K2kpCi1AQCAtMjQxMSwyOCArMjQxMywyNCBAQAotIAl9Ci0gICAgIH0KLSAKLS0gIGZvciAoaXRl ciA9IDA7Ci0tICAgICAgIGl0ZXIgPCBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5p bmRleF90YWJsZV9zbG90czsKLS0gICAgICAgKytpdGVyKQotKyAgZm9yIChpdGVyID0gMDsgaXRl ciA8IGluZGV4LT5pbmRleF90YWJsZV9zbG90czsgKytpdGVyKQotICAgICB7Ci0gICAgICAgb2Zm c2V0X3R5cGUgaWR4ID0gMiAqIGl0ZXI7Ci0gICAgICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICAg ICBvZmZzZXRfdHlwZSAqdmVjLCB2ZWNfbGVuLCB2ZWNfaWR4OwotIAotLSAgICAgIGlmIChkd2Fy ZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdID09IDAKLS0JICAm JiBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHggKyAxXSA9 PSAwKQotKyAgICAgIGlmIChpbmRleC0+aW5kZXhfdGFibGVbaWR4XSA9PSAwICYmIGluZGV4LT5p bmRleF90YWJsZVtpZHggKyAxXSA9PSAwKQotIAljb250aW51ZTsKLSAKLS0gICAgICBuYW1lID0g KGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKLS0JICAgICAg KyBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsKLSsg ICAgICBuYW1lID0gaW5kZXgtPmNvbnN0YW50X3Bvb2wgKyBNQVlCRV9TV0FQIChpbmRleC0+aW5k ZXhfdGFibGVbaWR4XSk7Ci0gCi0gICAgICAgaWYgKCEgKCpuYW1lX21hdGNoZXIpIChuYW1lLCBk YXRhKSkKLSAJY29udGludWU7Ci0gCi0gICAgICAgLyogVGhlIG5hbWUgd2FzIG1hdGNoZWQsIG5v dyBleHBhbmQgY29ycmVzcG9uZGluZyBDVXMgdGhhdCB3ZXJlCi0gCSBtYXJrZWQuICAqLwotLSAg ICAgIHZlYyA9IChvZmZzZXRfdHlwZSAqKSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJs ZS0+Y29uc3RhbnRfcG9vbAotLQkJCSAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3Rh YmxlLT5pbmRleF90YWJsZVtpZHggKyAxXSk7Ci0rICAgICAgdmVjID0gKG9mZnNldF90eXBlICop IChpbmRleC0+Y29uc3RhbnRfcG9vbAotKwkJCSAgICAgKyBNQVlCRV9TV0FQIChpbmRleC0+aW5k ZXhfdGFibGVbaWR4ICsgMV0pKTsKLSAgICAgICB2ZWNfbGVuID0gTUFZQkVfU1dBUCAodmVjWzBd KTsKLSAgICAgICBmb3IgKHZlY19pZHggPSAwOyB2ZWNfaWR4IDwgdmVjX2xlbjsgKyt2ZWNfaWR4 KQotIAl7Ci1AQCAtMjQ3NiwyNSArMjQ3NCwyNCBAQAotIAkJICAgICAgdm9pZCAqZGF0YSkKLSB7 Ci0gICBvZmZzZXRfdHlwZSBpdGVyOwotKyAgc3RydWN0IG1hcHBlZF9pbmRleCAqaW5kZXg7Ci0r Ci0gICBkdzJfc2V0dXAgKG9iamZpbGUpOwotIAotICAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUt PmluZGV4X3RhYmxlKQotICAgICByZXR1cm47Ci0rICBpbmRleCA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+aW5kZXhfdGFibGU7Ci0gCi0tICBmb3IgKGl0ZXIgPSAwOwotLSAgICAgICBpdGVyIDwgZHdh cmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7Ci0tICAgICAg ICsraXRlcikKLSsgIGZvciAoaXRlciA9IDA7IGl0ZXIgPCBpbmRleC0+aW5kZXhfdGFibGVfc2xv dHM7ICsraXRlcikKLSAgICAgewotICAgICAgIG9mZnNldF90eXBlIGlkeCA9IDIgKiBpdGVyOwot ICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgICAgb2Zmc2V0X3R5cGUgKnZlYywgdmVjX2xl biwgdmVjX2lkeDsKLSAKLS0gICAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJs ZS0+aW5kZXhfdGFibGVbaWR4XSA9PSAwCi0tCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRl eF90YWJsZS0+aW5kZXhfdGFibGVbaWR4ICsgMV0gPT0gMCkKLSsgICAgICBpZiAoaW5kZXgtPmlu ZGV4X3RhYmxlW2lkeF0gPT0gMCAmJiBpbmRleC0+aW5kZXhfdGFibGVbaWR4ICsgMV0gPT0gMCkK LSAJY29udGludWU7Ci0gCi0tICAgICAgbmFtZSA9IChkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4 X3RhYmxlLT5jb25zdGFudF9wb29sCi0tCSAgICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRl eF90YWJsZS0+aW5kZXhfdGFibGVbaWR4XSk7Ci0rICAgICAgbmFtZSA9IChpbmRleC0+Y29uc3Rh bnRfcG9vbCArIE1BWUJFX1NXQVAgKGluZGV4LT5pbmRleF90YWJsZVtpZHhdKSk7Ci0gCi0gICAg ICAgKCpmdW4pIChuYW1lLCBkYXRhKTsKLSAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi1nZGJpbmRl eC12MS10by12Mi5wYXRjaCBiL2dkYi1nZGJpbmRleC12MS10by12Mi5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMmE3YjliNy4uMDAwMDAwMAotLS0gYS9nZGItZ2RiaW5kZXgt djEtdG8tdjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2ODkgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wNy9tc2cwMDEzOS5odG1sCi0KLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEwLzA3LzIzIDIxOjEwOjU0CTEuMTIwMTMKLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEwLzA3LzIzIDIyOjE1OjEzCTEuMTIwMTQKLSMjIC0xLDMgKzEsMzEgQEAKLSsy MDEwLTA3LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZHdhcmYy cmVhZC5jIChzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlKSA8bl90eXBlX2NvbXBfdW5pdHMsCi0r CXR5cGVfY29tcF91bml0cz46IE5ldyBmaWVsZHMuCi0rCShkdzJfZ2V0X2N1KTogTmV3IGZ1bmN0 aW9uLgotKwkoY3JlYXRlX2N1c19mcm9tX2luZGV4KTogUmVtb3ZlIHVudXNlZCBhcmd1bWVudC4K LSsJKGNyZWF0ZV9zaWduYXR1cmVkX3R5cGVfaGFzaF9mcm9tX2luZGV4KTogTmV3IGZ1bmN0aW9u LgotKwkoY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRleCk6IFVwZGF0ZS4KLSsJKGR3YXJmMl9yZWFk X2luZGV4KTogSGFuZGxlIHZlcnNpb24gMi4KLSsJKGR3Ml9maW5kX2xhc3Rfc291cmNlX3N5bXRh YiwgZHcyX2ZvcmdldF9jYWNoZWRfc291cmNlX2luZm8pCi0rCShkdzJfbG9va3VwX3N5bXRhYiwg ZHcyX2RvX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nKQotKwkoZHcyX3ByaW50X3N0YXRzLCBkdzJf ZXhwYW5kX2FsbF9zeW10YWJzKQotKwkoZHcyX2V4cGFuZF9zeW10YWJzX3dpdGhfZmlsZW5hbWUs IGR3Ml9maW5kX3N5bWJvbF9maWxlKQotKwkoZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nLCBk dzJfbWFwX3N5bWJvbF9maWxlbmFtZXMpOiBVcGRhdGUuCi0rCShkd2FyZjJfaW5pdGlhbGl6ZV9v YmpmaWxlKTogQ2FsbCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZS4KLSsJKGFsbG9jYXRl X3NpZ25hdHVyZWRfdHlwZV9oYXNoX3RhYmxlKTogTmV3IGZ1bmN0aW9uLgotKwkoYWRkX3NpZ25h dHVyZWRfdHlwZV9jdV90b19saXN0KTogTGlrZXdpc2UuCi0rCShjcmVhdGVfZGVidWdfdHlwZXNf aGFzaF90YWJsZSk6IFVzZSB0aGVtLiAgU2V0IHR5cGVfY29tcF91bml0cy4KLSsJKHJlYWRfc2ln bmF0dXJlZF90eXBlKTogRW5zdXJlIHNlY3Rpb24gZGF0YSBpcyBhdmFpbGFibGUuCi0rCShhZGRf YWRkcmVzc19lbnRyeSk6IERvbid0IHJlY29yZCBlbXB0eSByYW5nZXMuCi0rCShzdHJ1Y3Qgc2ln bmF0dXJlZF90eXBlX2luZGV4X2RhdGEpOiBOZXcuCi0rCSh3cml0ZV9vbmVfc2lnbmF0dXJlZF90 eXBlKTogTmV3IGZ1bmN0aW9uLgotKwkod3JpdGVfcHN5bXRhYnNfdG9faW5kZXgpOiBXcml0ZSB0 eXBlIENVcy4KLSsJKHNhdmVfZ2RiX2luZGV4X2NvbW1hbmQpOiBVcGRhdGUgY29tbWVudC4KLSsJ KHByb2Nlc3NfdHlwZV9jb21wX3VuaXQpOiBNb3ZlIGluaXRpdGFsaXphdGlvbiBvZgotKwlmcm9t X2RlYnVnX3R5cGVzLi4uCi0rCShjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSk6IC4uLiBo ZXJlLgotKwotIDIwMTAtMDctMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLSAKLSAJKiBnZGJfZ2NvcmUuc2ggKHRtcGZpbGUpOiBSZW1vdmUgdGhlIHZhcmlh YmxlLCBpdHMgaW5pdGlhbGl6YXRpb24sCi1JbmRleDogZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMC0x MiAxODoxMDo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJ MjAxMC0xMC0xMiAxODoxMToxNi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODQsNiArMTg0LDEyIEBA IHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKLSAgIC8qIFRoZSBudW1iZXIgb2YgY29tcGlsYXRp b24gdW5pdHMgaW4gQUxMX0NPTVBfVU5JVFMuICAqLwotICAgaW50IG5fY29tcF91bml0czsKLSAK LSsgIC8qIFRoZSBudW1iZXIgb2YgLmRlYnVnX3R5cGVzLXJlbGF0ZWQgQ1VzLiAgKi8KLSsgIGlu dCBuX3R5cGVfY29tcF91bml0czsKLSsKLSsgIC8qIFRoZSAuZGVidWdfdHlwZXMtcmVsYXRlZCBD VXMuICAqLwotKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKnR5cGVfY29tcF91bml0czsK LSsKLSAgIC8qIEEgY2hhaW4gb2YgY29tcGlsYXRpb24gdW5pdHMgdGhhdCBhcmUgY3VycmVudGx5 IHJlYWQgaW4sIHNvIHRoYXQKLSAgICAgIHRoZXkgY2FuIGJlIGZyZWVkIGxhdGVyLiAgKi8KLSAg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnJlYWRfaW5fY2hhaW47Ci1AQCAtMTIyNiw2ICsx MjMyLDggQEAgc3RhdGljIHN0cnVjdCB0eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdAotIAotIHN0 YXRpYyB2b2lkIGNyZWF0ZV9hbGxfY29tcF91bml0cyAoc3RydWN0IG9iamZpbGUgKik7Ci0gCi0r c3RhdGljIGludCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpOwotKwotIHN0YXRpYyB2b2lkIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKiwKLSAJCQkJIHN0cnVjdCBvYmpmaWxlICopOwotIAotQEAgLTEy NjksNiArMTI3Nyw4IEBAIHN0YXRpYyB2b2lkIGluaXRfY3VfZGllX3JlYWRlciAoc3RydWN0IGQK LSBzdGF0aWMgY29uc3QgY2hhciAqZHdhcmYyX3BoeXNuYW1lIChjaGFyICpuYW1lLCBzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwKLSAJCQkJICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLSAKLStzdGF0 aWMgaHRhYl90IGFsbG9jYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX3RhYmxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSk7Ci0rCi0gI2lmIFdPUkRTX0JJR0VORElBTgotIAotIC8qIENvbnZlcnQg VkFMVUUgYmV0d2VlbiBiaWctIGFuZCBsaXR0bGUtZW5kaWFuLiAgKi8KLUBAIC0xNjQ2LDYgKzE2 NTYsMTggQEAgZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKgotICAgcmV0 dXJuIHBlcl9jdS0+di5xdWljay0+c3ltdGFiOwotIH0KLSAKLSsvKiBSZXR1cm4gdGhlIENVIGdp dmVuIGl0cyBpbmRleC4gICovCi0rc3RhdGljIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKgot K2R3Ml9nZXRfY3UgKGludCBpbmRleCkKLSt7Ci0rICBpZiAoaW5kZXggPj0gZHdhcmYyX3Blcl9v YmpmaWxlLT5uX2NvbXBfdW5pdHMpCi0rICAgIHsKLSsgICAgICBpbmRleCAtPSBkd2FyZjJfcGVy X29iamZpbGUtPm5fY29tcF91bml0czsKLSsgICAgICByZXR1cm4gZHdhcmYyX3Blcl9vYmpmaWxl LT50eXBlX2NvbXBfdW5pdHNbaW5kZXhdOwotKyAgICB9Ci0rICByZXR1cm4gZHdhcmYyX3Blcl9v YmpmaWxlLT5hbGxfY29tcF91bml0c1tpbmRleF07Ci0rfQotKwotIC8qIEEgaGVscGVyIGZ1bmN0 aW9uIHRoYXQga25vd3MgaG93IHRvIHJlYWQgYSA2NC1iaXQgdmFsdWUgaW4gYSB3YXkKLSAgICB0 aGF0IGRvZXNuJ3QgbWFrZSBnZGIgZGllLiAgUmV0dXJucyAxIGlmIHRoZSBjb252ZXJzaW9uIHdl bnQgb2ssIDAKLSAgICBvdGhlcndpc2UuICAqLwotQEAgLTE2NzIsMTEgKzE2OTQsMTAgQEAgZXh0 cmFjdF9jdV92YWx1ZSAoY29uc3QgY2hhciAqYnl0ZXMsIFVMTwotICAgIHRoZSBDVSBvYmplY3Rz IGZvciB0aGlzIG9iamZpbGUuICBSZXR1cm4gMCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywKLSAg ICAxIGlmIGV2ZXJ5dGhpbmcgd2VudCBvay4gICovCi0gc3RhdGljIGludAotLWNyZWF0ZV9jdXNf ZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBtYXBwZWRfaW5kZXgg KmluZGV4LAotLQkJICAgICAgIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LCBvZmZzZXRfdHlwZSBj dV9saXN0X2VsZW1lbnRzKQotK2NyZWF0ZV9jdXNfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LAotKwkJICAgICAgIG9mZnNldF90eXBl IGN1X2xpc3RfZWxlbWVudHMpCi0gewotICAgb2Zmc2V0X3R5cGUgaTsKLS0gIGNvbnN0IGNoYXIg KmVudHJ5OwotIAotICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMgPSBjdV9saXN0 X2VsZW1lbnRzIC8gMjsKLSAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHMKLUBA IC0xNzA3LDYgKzE3MjgsNTggQEAgY3JlYXRlX2N1c19mcm9tX2luZGV4IChzdHJ1Y3Qgb2JqZmls ZSAqbwotICAgcmV0dXJuIDE7Ci0gfQotIAotKy8qIENyZWF0ZSB0aGUgc2lnbmF0dXJlZCB0eXBl IGhhc2ggdGFibGUgZnJvbSB0aGUgaW5kZXguICAqLwotK3N0YXRpYyBpbnQKLStjcmVhdGVfc2ln bmF0dXJlZF90eXBlX2hhc2hfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0r CQkJCQljb25zdCBnZGJfYnl0ZSAqYnl0ZXMsCi0rCQkJCQlvZmZzZXRfdHlwZSBlbGVtZW50cykK LSt7Ci0rICBvZmZzZXRfdHlwZSBpOwotKyAgaHRhYl90IHR5cGVfaGFzaDsKLSsKLSsgIGR3YXJm Ml9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMgPSBlbGVtZW50cyAvIDM7Ci0rICBkd2Fy ZjJfcGVyX29iamZpbGUtPnR5cGVfY29tcF91bml0cwotKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90 eXBlX2NvbXBfdW5pdHMKLSsJCSAgICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKikpOwotKwotKyAgdHlwZV9oYXNoID0gYWxsb2NhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hf dGFibGUgKG9iamZpbGUpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnRzOyBpICs9IDMp Ci0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICp0eXBlX3NpZzsKLSsgICAg ICBVTE9OR0VTVCBvZmZzZXQsIHR5cGVfb2Zmc2V0LCBzaWduYXR1cmU7Ci0rICAgICAgdm9pZCAq KnNsb3Q7Ci0rCi0rICAgICAgaWYgKCFleHRyYWN0X2N1X3ZhbHVlIChieXRlcywgJm9mZnNldCkK LSsJICB8fCAhZXh0cmFjdF9jdV92YWx1ZSAoYnl0ZXMgKyA4LCAmdHlwZV9vZmZzZXQpKQotKwly ZXR1cm4gMDsKLSsgICAgICBzaWduYXR1cmUgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ5 dGVzICsgMTYsIDgsIEJGRF9FTkRJQU5fTElUVExFKTsKLSsgICAgICBieXRlcyArPSAzICogODsK LSsKLSsgICAgICB0eXBlX3NpZyA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9v YnN0YWNrLAotKwkJCQkgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSk7Ci0rICAgICAgdHlwZV9zaWct PnNpZ25hdHVyZSA9IHNpZ25hdHVyZTsKLSsgICAgICB0eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0 OwotKyAgICAgIHR5cGVfc2lnLT50eXBlX29mZnNldCA9IHR5cGVfb2Zmc2V0OwotKyAgICAgIHR5 cGVfc2lnLT5wZXJfY3UuZnJvbV9kZWJ1Z190eXBlcyA9IDE7Ci0rICAgICAgdHlwZV9zaWctPnBl cl9jdS5vZmZzZXQgPSBvZmZzZXQ7Ci0rICAgICAgdHlwZV9zaWctPnBlcl9jdS5vYmpmaWxlID0g b2JqZmlsZTsKLSsgICAgICB0eXBlX3NpZy0+cGVyX2N1LnYucXVpY2sKLSsJPSBPQlNUQUNLX1pB TExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkgIHN0cnVjdCBkd2FyZjJfcGVy X2N1X3F1aWNrX2RhdGEpOwotKwotKyAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAodHlwZV9o YXNoLCB0eXBlX3NpZywgSU5TRVJUKTsKLSsgICAgICAqc2xvdCA9IHR5cGVfc2lnOwotKwotKyAg ICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZV9jb21wX3VuaXRzW2kgLyAzXSA9ICZ0eXBlX3Np Zy0+cGVyX2N1OwotKyAgICB9Ci0rCi0rICBkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRf dHlwZXMgPSB0eXBlX2hhc2g7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0gLyogUmVhZCB0aGUg YWRkcmVzcyBtYXAgZGF0YSBmcm9tIHRoZSBtYXBwZWQgaW5kZXgsIGFuZCB1c2UgaXQgdG8KLSAg ICBwb3B1bGF0ZSB0aGUgb2JqZmlsZSdzIHBzeW10YWJzX2FkZHJtYXAuICAqLwotIHN0YXRpYyB2 b2lkCi1AQCAtMTczOCw3ICsxODExLDcgQEAgY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRleCAoc3Ry dWN0IG9iamZpbAotICAgICAgIGl0ZXIgKz0gNDsKLSAgICAgICAKLSAgICAgICBhZGRybWFwX3Nl dF9lbXB0eSAobXV0YWJsZV9tYXAsIGxvICsgYmFzZWFkZHIsIGhpICsgYmFzZWFkZHIgLSAxLAot LQkJCSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2N1X2luZGV4XSk7Ci0rCQkJ IGR3Ml9nZXRfY3UgKGN1X2luZGV4KSk7Ci0gICAgIH0KLSAKLSAgIG9iamZpbGUtPnBzeW10YWJz X2FkZHJtYXAgPSBhZGRybWFwX2NyZWF0ZV9maXhlZCAobXV0YWJsZV9tYXAsCi1AQCAtMTgwNSw4 ICsxODc4LDkgQEAgZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotICAg Y2hhciAqYWRkcjsKLSAgIHN0cnVjdCBtYXBwZWRfaW5kZXggKm1hcDsKLSAgIG9mZnNldF90eXBl ICptZXRhZGF0YTsKLS0gIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0OwotLSAgb2Zmc2V0X3R5cGUg Y3VfbGlzdF9lbGVtZW50czsKLSsgIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LCAqdHlwZXNfbGlz dDsKLSsgIG9mZnNldF90eXBlIHZlcnNpb24sIGN1X2xpc3RfZWxlbWVudHMsIHR5cGVzX2xpc3Rf ZWxlbWVudHM7Ci0rICBpbnQgaTsKLSAKLSAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9p bmRleC5hc2VjdGlvbiA9PSBOVUxMCi0gICAgICAgfHwgZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJf aW5kZXguc2l6ZSA9PSAwKQotQEAgLTE4MjIsMjYgKzE4OTYsNTggQEAgZHdhcmYyX3JlYWRfaW5k ZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIAotICAgYWRkciA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+Z2RiX2luZGV4LmJ1ZmZlcjsKLSAgIC8qIFZlcnNpb24gY2hlY2suICAqLwotLSAgaWYgKE1B WUJFX1NXQVAgKCoob2Zmc2V0X3R5cGUgKikgYWRkcikgIT0gMSkKLSsgIHZlcnNpb24gPSBNQVlC RV9TV0FQICgqKG9mZnNldF90eXBlICopIGFkZHIpOwotKyAgaWYgKHZlcnNpb24gPT0gMSkKLSsg ICAgewotKyAgICAgIC8qIEluZGV4IHZlcnNpb24gMSBuZWdsZWN0ZWQgdG8gYWNjb3VudCBmb3Ig LmRlYnVnX3R5cGVzLiAgU28sCi0rCSBpZiB3ZSBzZWUgLmRlYnVnX3R5cGVzLCB3ZSBjYW5ub3Qg dXNlIHRoaXMgaW5kZXguICAqLwotKyAgICAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVz LmFzZWN0aW9uICE9IE5VTEwKLSsJICAmJiBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLnNpemUg IT0gMCkKLSsJcmV0dXJuIDA7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHZlcnNpb24gIT0gMikKLSAg ICAgcmV0dXJuIDA7Ci0gCi0gICBtYXAgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZp bGVfb2JzdGFjaywgc3RydWN0IG1hcHBlZF9pbmRleCk7Ci0gICBtYXAtPnRvdGFsX3NpemUgPSBk d2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5zaXplOwotIAotICAgbWV0YWRhdGEgPSAob2Zm c2V0X3R5cGUgKikgKGFkZHIgKyBzaXplb2YgKG9mZnNldF90eXBlKSk7Ci0tICBjdV9saXN0ID0g YWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzBdKTsKLS0gIGN1X2xpc3RfZWxlbWVudHMgPSAo KE1BWUJFX1NXQVAgKG1ldGFkYXRhWzFdKSAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzBdKSkKLSsK LSsgIGkgPSAwOwotKyAgY3VfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7 Ci0rICBjdV9saXN0X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVtpICsgMV0pIC0g TUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQotIAkJICAgICAgLyA4KTsKLS0gIG1hcC0+YWRkcmVz c190YWJsZSA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVsxXSk7Ci0tICBtYXAtPmFkZHJl c3NfdGFibGVfc2l6ZSA9IChNQVlCRV9TV0FQIChtZXRhZGF0YVsyXSkKLS0JCQkgICAgIC0gTUFZ QkVfU1dBUCAobWV0YWRhdGFbMV0pKTsKLS0gIG1hcC0+aW5kZXhfdGFibGUgPSAob2Zmc2V0X3R5 cGUgKikgKGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVsyXSkpOwotLSAgbWFwLT5pbmRleF90 YWJsZV9zbG90cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbM10pCi0tCQkJICAgICAtIE1BWUJF X1NXQVAgKG1ldGFkYXRhWzJdKSkKLSsgICsraTsKLSsKLSsgIGlmICh2ZXJzaW9uID09IDIpCi0r ICAgIHsKLSsgICAgICB0eXBlc19saXN0ID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ld KTsKLSsgICAgICB0eXBlc19saXN0X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVtp ICsgMV0pCi0rCQkJICAgICAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCi0rCQkJICAgICAv IDgpOwotKyAgICAgICsraTsKLSsgICAgfQotKwotKyAgbWFwLT5hZGRyZXNzX3RhYmxlID0gYWRk ciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKLSsgIG1hcC0+YWRkcmVzc190YWJsZV9zaXpl ID0gKE1BWUJFX1NXQVAgKG1ldGFkYXRhW2kgKyAxXSkKLSsJCQkgICAgIC0gTUFZQkVfU1dBUCAo bWV0YWRhdGFbaV0pKTsKLSsgICsraTsKLSsKLSsgIG1hcC0+aW5kZXhfdGFibGUgPSAob2Zmc2V0 X3R5cGUgKikgKGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpOwotKyAgbWFwLT5pbmRl eF90YWJsZV9zbG90cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQotKwkJCSAgICAg LSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCi0gCQkJICAgIC8gKDIgKiBzaXplb2YgKG9mZnNl dF90eXBlKSkpOwotLSAgbWFwLT5jb25zdGFudF9wb29sID0gYWRkciArIE1BWUJFX1NXQVAgKG1l dGFkYXRhWzNdKTsKLSsgICsraTsKLSAKLS0gIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChv YmpmaWxlLCBtYXAsIGN1X2xpc3QsIGN1X2xpc3RfZWxlbWVudHMpKQotKyAgbWFwLT5jb25zdGFu dF9wb29sID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKLSsKLSsgIGlmICghY3Jl YXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBjdV9saXN0LCBjdV9saXN0X2VsZW1lbnRzKSkK LSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAodmVyc2lvbiA9PSAyCi0rICAgICAgJiYgdHlwZXNf bGlzdF9lbGVtZW50cwotKyAgICAgICYmICFjcmVhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfZnJv bV9pbmRleCAob2JqZmlsZSwgdHlwZXNfbGlzdCwKLSsJCQkJCQkgIHR5cGVzX2xpc3RfZWxlbWVu dHMpKQotICAgICByZXR1cm4gMDsKLSAKLSAgIGNyZWF0ZV9hZGRybWFwX2Zyb21faW5kZXggKG9i amZpbGUsIG1hcCk7Ci1AQCAtMTk2OCw4ICsyMDc0LDcgQEAgZHcyX2ZpbmRfbGFzdF9zb3VyY2Vf c3ltdGFiIChzdHJ1Y3Qgb2JqZgotICAgaW50IGluZGV4OwotICAgZHcyX3NldHVwIChvYmpmaWxl KTsKLSAgIGluZGV4ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMgLSAxOwotLSAg cmV0dXJuIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsCi0tCQkJCSBkd2FyZjJfcGVy X29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2luZGV4XSk7Ci0rICByZXR1cm4gZHcyX2luc3RhbnRp YXRlX3N5bXRhYiAob2JqZmlsZSwgZHcyX2dldF9jdSAoaW5kZXgpKTsKLSB9Ci0gCi0gc3RhdGlj IHZvaWQKLUBAIC0xOTc4LDkgKzIwODMsMTAgQEAgZHcyX2ZvcmdldF9jYWNoZWRfc291cmNlX2lu Zm8gKHN0cnVjdCBvYgotICAgaW50IGk7Ci0gCi0gICBkdzJfc2V0dXAgKG9iamZpbGUpOwotLSAg Zm9yIChpID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCi0r ICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCi0rCQkg ICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyArK2kpCi0gICAgIHsK LS0gICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+YWxsX2NvbXBfdW5pdHNbaV07Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq Y3UgPSBkdzJfZ2V0X2N1IChpKTsKLSAKLSAgICAgICBpZiAoY3UtPnYucXVpY2stPmZ1bGxfbmFt ZXMpCi0gCXsKLUBAIC0yMDAyLDEwICsyMTA4LDExIEBAIGR3Ml9sb29rdXBfc3ltdGFiIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmkKLSAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmJhc2VfY3Ug PSBOVUxMOwotIAotICAgZHcyX3NldHVwIChvYmpmaWxlKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBk d2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQotKyAgZm9yIChpID0gMDsgaSA8 IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cwotKwkJICAgKyBkd2FyZjJfcGVyX29i amZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsgKytpKQotICAgICB7Ci0gICAgICAgaW50IGo7Ci0t ICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUt PmFsbF9jb21wX3VuaXRzW2ldOwotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1 ID0gZHcyX2dldF9jdSAoaSk7Ci0gCi0gICAgICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi0g CWNvbnRpbnVlOwotQEAgLTIwOTcsOCArMjIwNCw4IEBAIGR3Ml9kb19leHBhbmRfc3ltdGFic19t YXRjaGluZyAoc3RydWN0IG8KLSAJICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCi0gCSAgICB7 Ci0gCSAgICAgIG9mZnNldF90eXBlIGN1X2luZGV4ID0gTUFZQkVfU1dBUCAodmVjW2kgKyAxXSk7 Ci0tCSAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1OwotLQkgICAgICBjdSA9IGR3 YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbY3VfaW5kZXhdOwotKwkgICAgICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3Ml9nZXRfY3UgKGN1X2luZGV4KTsKLSsKLSAJ ICAgICAgZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOwotIAkgICAgfQotIAl9 Ci1AQCAtMjEyMCw5ICsyMjI3LDEwIEBAIGR3Ml9wcmludF9zdGF0cyAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUKLSAKLSAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Ci0gICBjb3VudCA9IDA7Ci0tICBm b3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKLSsg IGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKLSsJCSAg ICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkKLSAgICAgewot LSAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxl LT5hbGxfY29tcF91bml0c1tpXTsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpj dSA9IGR3Ml9nZXRfY3UgKGkpOwotIAotICAgICAgIGlmICghY3UtPnYucXVpY2stPnN5bXRhYikK LSAJKytjb3VudDsKLUBAIC0yMTU2LDkgKzIyNjQsMTEgQEAgZHcyX2V4cGFuZF9hbGxfc3ltdGFi cyAoc3RydWN0IG9iamZpbGUgKgotICAgaW50IGk7Ci0gCi0gICBkdzJfc2V0dXAgKG9iamZpbGUp OwotLSAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyAr K2kpCi0rCi0rICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3Vu aXRzCi0rCQkgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyArK2kp Ci0gICAgIHsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9w ZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqY3UgPSBkdzJfZ2V0X2N1IChpKTsKLSAKLSAgICAgICBkdzJfaW5zdGFudGlhdGVf c3ltdGFiIChvYmpmaWxlLCBjdSk7Ci0gICAgIH0KLUBAIC0yMTcxLDEwICsyMjgxLDExIEBAIGR3 Ml9leHBhbmRfc3ltdGFic193aXRoX2ZpbGVuYW1lIChzdHJ1Y3QKLSAgIGludCBpOwotIAotICAg ZHcyX3NldHVwIChvYmpmaWxlKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZp bGUtPm5fY29tcF91bml0czsgKytpKQotKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29i amZpbGUtPm5fY29tcF91bml0cwotKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9j b21wX3VuaXRzKTsgKytpKQotICAgICB7Ci0gICAgICAgaW50IGo7Ci0tICAgICAgc3RydWN0IGR3 YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRz W2ldOwotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAo aSk7Ci0gCi0gICAgICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi0gCWNvbnRpbnVlOwotQEAg LTIyMTUsNyArMjMyNiw3IEBAIGR3Ml9maW5kX3N5bWJvbF9maWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2IKLSAgICAgIHNob3VsZCBiZSByZXdyaXR0ZW4gc28gdGhhdCBpdCBkb2Vzbid0IHJlcXVpcmUg YSBjdXN0b20gaG9vay4gIEl0Ci0gICAgICBjb3VsZCBqdXN0IHVzZSB0aGUgb3JkaW5hcnkgc3lt Ym9sIHRhYmxlcy4gICovCi0gICAvKiB2ZWNbMF0gaXMgdGhlIGxlbmd0aCwgd2hpY2ggbXVzdCBh bHdheXMgYmUgPjAuICAqLwotLSAgY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3Vu aXRzW01BWUJFX1NXQVAgKHZlY1sxXSldOwotKyAgY3UgPSBkdzJfZ2V0X2N1IChNQVlCRV9TV0FQ ICh2ZWNbMV0pKTsKLSAKLSAgIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIChvYmpmaWxlLCBjdSk7 Ci0gICBpZiAoIWN1LT52LnF1aWNrLT5saW5lcykKLUBAIC0yMjUzLDEwICsyMzY0LDExIEBAIGR3 Ml9leHBhbmRfc3ltdGFic19tYXRjaGluZyAoc3RydWN0IG9iamYKLSAgIGlmICghZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmRleF90YWJsZSkKLSAgICAgcmV0dXJuOwotIAotLSAgZm9yIChpID0gMDsg aSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCi0rICBmb3IgKGkgPSAw OyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCi0rCQkgICArIGR3YXJmMl9w ZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyArK2kpCi0gICAgIHsKLSAgICAgICBpbnQg ajsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2Jq ZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqY3UgPSBkdzJfZ2V0X2N1IChpKTsKLSAKLSAgICAgICBjdS0+di5xdWljay0+bWFyayA9IDA7 Ci0gICAgICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi1AQCAtMjMwMSw4ICsyNDEzLDkgQEAg ZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChzdHJ1Y3Qgb2JqZgotICAgICAgIHZlY19sZW4g PSBNQVlCRV9TV0FQICh2ZWNbMF0pOwotICAgICAgIGZvciAodmVjX2lkeCA9IDA7IHZlY19pZHgg PCB2ZWNfbGVuOyArK3ZlY19pZHgpCi0gCXsKLS0JICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdQotLQkgICAgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW01BWUJFX1NX QVAgKHZlY1t2ZWNfaWR4ICsgMV0pXTsKLSsJICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpj dTsKLSsKLSsJICBjdSA9IGR3Ml9nZXRfY3UgKE1BWUJFX1NXQVAgKHZlY1t2ZWNfaWR4ICsgMV0p KTsKLSAJICBpZiAoY3UtPnYucXVpY2stPm1hcmspCi0gCSAgICBkdzJfaW5zdGFudGlhdGVfc3lt dGFiIChvYmpmaWxlLCBjdSk7Ci0gCX0KLUBAIC0yMzcyLDEwICsyNDg1LDExIEBAIGR3Ml9tYXBf c3ltYm9sX2ZpbGVuYW1lcyAoc3RydWN0IG9iamZpbGUKLSAgIGludCBpOwotIAotICAgZHcyX3Nl dHVwIChvYmpmaWxlKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5f Y29tcF91bml0czsgKytpKQotKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUt Pm5fY29tcF91bml0cwotKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3Vu aXRzKTsgKytpKQotICAgICB7Ci0gICAgICAgaW50IGo7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwot KyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7Ci0g Ci0gICAgICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi0gCWNvbnRpbnVlOwotQEAgLTI0MzYs MTAgKzI1NTAsMTIgQEAgZHdhcmYyX2luaXRpYWxpemVfb2JqZmlsZSAoc3RydWN0IG9iamZpbAot IAotICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXggPSAxOwotICAgICAgIGNy ZWF0ZV9hbGxfY29tcF91bml0cyAob2JqZmlsZSk7Ci0rICAgICAgY3JlYXRlX2RlYnVnX3R5cGVz X2hhc2hfdGFibGUgKG9iamZpbGUpOwotIAotLSAgICAgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJf cGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQotKyAgICAgIGZvciAoaSA9IDA7IGkgPCAo ZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKLSsJCSAgICAgICArIGR3YXJmMl9wZXJf b2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyArK2kpCi0gCXsKLS0JICBzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07 Ci0rCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkdzJfZ2V0X2N1IChpKTsKLSAK LSAJICBjdS0+di5xdWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAotIAkJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7Ci1AQCAtMjY1Myw2 ICsyNzY5LDM0IEBAIGVxX3R5cGVfc2lnbmF0dXJlIChjb25zdCB2b2lkICppdGVtX2xocywKLSAg IHJldHVybiBsaHMtPnNpZ25hdHVyZSA9PSByaHMtPnNpZ25hdHVyZTsKLSB9Ci0gCi0rLyogQWxs b2NhdGUgYSBoYXNoIHRhYmxlIGZvciBzaWduYXR1cmVkIHR5cGVzLiAgKi8KLSsKLStzdGF0aWMg aHRhYl90Ci0rYWxsb2NhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfdGFibGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQotK3sKLSsgIHJldHVybiBodGFiX2NyZWF0ZV9hbGxvY19leCAoNDEsCi0r CQkJICAgICAgIGhhc2hfdHlwZV9zaWduYXR1cmUsCi0rCQkJICAgICAgIGVxX3R5cGVfc2lnbmF0 dXJlLAotKwkJCSAgICAgICBOVUxMLAotKwkJCSAgICAgICAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAotKwkJCSAgICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0rCQkJICAgICAgIGR1 bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7Ci0rfQotKwotKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHRv IGFkZCBhIHNpZ25hdHVyZWQgdHlwZSBDVSB0byBhIGxpc3QuICAqLwotKwotK3N0YXRpYyBpbnQK LSthZGRfc2lnbmF0dXJlZF90eXBlX2N1X3RvX2xpc3QgKHZvaWQgKipzbG90LCB2b2lkICpkYXR1 bSkKLSt7Ci0rICBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICpzaWd0ID0gKnNsb3Q7Ci0rICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICoqKmRhdGFwID0gZGF0dW07Ci0rCi0rICAqKmRhdGFwID0g JnNpZ3QtPnBlcl9jdTsKLSsgICsrKmRhdGFwOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotIC8q IENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBvZiBhbGwgZW50cmllcyBpbiB0aGUgLmRlYnVnX3R5cGVz IHNlY3Rpb24uCi0gICAgVGhlIHJlc3VsdCBpcyB6ZXJvIGlmIHRoZXJlIGlzIGFuIGVycm9yIChl LmcuIG1pc3NpbmcgLmRlYnVnX3R5cGVzIHNlY3Rpb24pLAotICAgIG90aGVyd2lzZSBub24temVy by4JKi8KLUBAIC0yNjYyLDYgKzI4MDYsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJs ZSAoc3RydWN0IG9iCi0gewotICAgZ2RiX2J5dGUgKmluZm9fcHRyOwotICAgaHRhYl90IHR5cGVz X2h0YWI7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICoqaXRlcjsKLSAKLSAgIGR3YXJm Ml9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzKTsKLSAg IGluZm9fcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5idWZmZXI7Ci1AQCAtMjY3Miwx MyArMjgxNyw3IEBAIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChzdHJ1Y3Qgb2IKLSAg ICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotLSAgdHlwZXNfaHRhYiA9IGh0YWJfY3JlYXRlX2Fs bG9jX2V4ICg0MSwKLS0JCQkJICAgICBoYXNoX3R5cGVfc2lnbmF0dXJlLAotLQkJCQkgICAgIGVx X3R5cGVfc2lnbmF0dXJlLAotLQkJCQkgICAgIE5VTEwsCi0tCQkJCSAgICAgJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywKLS0JCQkJICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJ CSAgICAgZHVtbXlfb2JzdGFja19kZWFsbG9jYXRlKTsKLSsgIHR5cGVzX2h0YWIgPSBhbGxvY2F0 ZV9zaWduYXR1cmVkX3R5cGVfaGFzaF90YWJsZSAob2JqZmlsZSk7Ci0gCi0gICBpZiAoZHdhcmYy X2RpZV9kZWJ1ZykKLSAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiU2lnbmF0 dXJlZCB0eXBlczpcbiIpOwotQEAgLTI3MjYsNiArMjg2NSw3IEBAIGNyZWF0ZV9kZWJ1Z190eXBl c19oYXNoX3RhYmxlIChzdHJ1Y3Qgb2IKLSAgICAgICB0eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0 OwotICAgICAgIHR5cGVfc2lnLT50eXBlX29mZnNldCA9IHR5cGVfb2Zmc2V0OwotICAgICAgIHR5 cGVfc2lnLT5wZXJfY3Uub2JqZmlsZSA9IG9iamZpbGU7Ci0rICAgICAgdHlwZV9zaWctPnBlcl9j dS5mcm9tX2RlYnVnX3R5cGVzID0gMTsKLSAKLSAgICAgICBzbG90ID0gaHRhYl9maW5kX3Nsb3Qg KHR5cGVzX2h0YWIsIHR5cGVfc2lnLCBJTlNFUlQpOwotICAgICAgIGdkYl9hc3NlcnQgKHNsb3Qg IT0gTlVMTCk7Ci1AQCAtMjc0MCw2ICsyODgwLDE2IEBAIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNo X3RhYmxlIChzdHJ1Y3Qgb2IKLSAKLSAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+c2lnbmF0dXJlZF90 eXBlcyA9IHR5cGVzX2h0YWI7Ci0gCi0rICBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21w X3VuaXRzID0gaHRhYl9lbGVtZW50cyAodHlwZXNfaHRhYik7Ci0rICBkd2FyZjJfcGVyX29iamZp bGUtPnR5cGVfY29tcF91bml0cwotKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCi0rCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5p dHMKLSsJCSAgICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOwotKyAg aXRlciA9ICZkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVfY29tcF91bml0c1swXTsKLSsgIGh0YWJf dHJhdmVyc2Vfbm9yZXNpemUgKHR5cGVzX2h0YWIsIGFkZF9zaWduYXR1cmVkX3R5cGVfY3VfdG9f bGlzdCwgJml0ZXIpOwotKyAgZ2RiX2Fzc2VydCAoaXRlciAtICZkd2FyZjJfcGVyX29iamZpbGUt PnR5cGVfY29tcF91bml0c1swXQotKwkgICAgICA9PSBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlw ZV9jb21wX3VuaXRzKTsKLSsKLSAgIHJldHVybiAxOwotIH0KLSAKLUBAIC0zMDA4LDcgKzMxNTgs NiBAQCBwcm9jZXNzX3R5cGVfY29tcF91bml0ICh2b2lkICoqc2xvdCwgdm9pCi0gICBzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1OwotIAotICAgdGhpc19jdSA9ICZlbnRyeS0+cGVy X2N1OwotLSAgdGhpc19jdS0+ZnJvbV9kZWJ1Z190eXBlcyA9IDE7Ci0gCi0gICBnZGJfYXNzZXJ0 IChkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLnJlYWRpbik7Ci0gICBwcm9jZXNzX3BzeW10YWJf Y29tcF91bml0IChvYmpmaWxlLCB0aGlzX2N1LAotQEAgLTEyNDgzLDEzICsxMjYzMiwxNiBAQCBz dGF0aWMgdm9pZAotIHJlYWRfc2lnbmF0dXJlZF90eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSAJCSAgICAgIHN0cnVjdCBzaWduYXR1cmVkX3R5cGUgKnR5cGVfc2lnKQotIHsKLS0gIGdk Yl9ieXRlICp0eXBlc19wdHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmJ1ZmZlciArIHR5 cGVfc2lnLT5vZmZzZXQ7Ci0rICBnZGJfYnl0ZSAqdHlwZXNfcHRyOwotICAgc3RydWN0IGRpZV9y ZWFkZXJfc3BlY3MgcmVhZGVyX3NwZWNzOwotICAgc3RydWN0IGR3YXJmMl9jdSAqY3U7Ci0gICBV TE9OR0VTVCBzaWduYXR1cmU7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bywgKmZyZWVfY3Vf Y2xlYW51cDsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0gCi0rICBkd2FyZjJfcmVhZF9z ZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcyk7Ci0rICB0eXBlc19w dHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmJ1ZmZlciArIHR5cGVfc2lnLT5vZmZzZXQ7 Ci0rCi0gICBnZGJfYXNzZXJ0ICh0eXBlX3NpZy0+cGVyX2N1LmN1ID09IE5VTEwpOwotIAotICAg Y3UgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkd2FyZjJfY3UpKTsKLUBAIC0xNDQwMiw2ICsx NDU1NCwxMCBAQCBhZGRfYWRkcmVzc19lbnRyeSAoc3RydWN0IG9iamZpbGUgKm9iamZpCi0gICBj aGFyIGFkZHJbOF07Ci0gICBDT1JFX0FERFIgYmFzZWFkZHI7Ci0gCi0rICAvKiBEb24ndCBib3Ro ZXIgcmVjb3JkaW5nIGVtcHR5IHJhbmdlcy4gICovCi0rICBpZiAocHN0LT50ZXh0bG93ID09IHBz dC0+dGV4dGhpZ2gpCi0rICAgIHJldHVybjsKLSsKLSAgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9i amZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwotIAotICAg c3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYWRkciwgOCwgQkZEX0VORElBTl9MSVRUTEUsIHBzdC0+ dGV4dGxvdyAtIGJhc2VhZGRyKTsKLUBAIC0xNDQ0NywxMyArMTQ2MDMsNTMgQEAgdW5saW5rX2lm X3NldCAodm9pZCAqcCkKLSAgICAgdW5saW5rICgqZmlsZW5hbWUpOwotIH0KLSAKLSsvKiBBIGhl bHBlciBzdHJ1Y3QgdXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIGRlYnVnX3R5cGVzLiAgKi8KLStz dHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2RhdGEKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZTsKLSsgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWI7Ci0rICBzdHJ1Y3Qgb2Jz dGFjayAqdHlwZXNfbGlzdDsKLSsgIGludCBjdV9pbmRleDsKLSt9OwotKwotKy8qIEEgaGVscGVy IGZ1bmN0aW9uIHRoYXQgd3JpdGVzIGEgc2luZ2xlIHNpZ25hdHVyZWRfdHlwZSB0byBhbgotKyAg IG9ic3RhY2suICAqLwotK3N0YXRpYyBpbnQKLSt3cml0ZV9vbmVfc2lnbmF0dXJlZF90eXBlICh2 b2lkICoqc2xvdCwgdm9pZCAqZCkKLSt7Ci0rICBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4 X2RhdGEgKmluZm8gPSBkOwotKyAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqZW50cnkgPSAoc3Ry dWN0IHNpZ25hdHVyZWRfdHlwZSAqKSAqc2xvdDsKLSsgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKmN1ID0gJmVudHJ5LT5wZXJfY3U7Ci0rICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10 YWIgPSBjdS0+di5wc3ltdGFiOwotKyAgZ2RiX2J5dGUgdmFsWzhdOwotKwotKyAgd3JpdGVfcHN5 bWJvbHMgKGluZm8tPnN5bXRhYiwKLSsJCSAgaW5mby0+b2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xz Lmxpc3QgKyBwc3ltdGFiLT5nbG9iYWxzX29mZnNldCwKLSsJCSAgcHN5bXRhYi0+bl9nbG9iYWxf c3ltcywgaW5mby0+Y3VfaW5kZXgpOwotKyAgd3JpdGVfcHN5bWJvbHMgKGluZm8tPnN5bXRhYiwK LSsJCSAgaW5mby0+b2JqZmlsZS0+c3RhdGljX3BzeW1ib2xzLmxpc3QgKyBwc3ltdGFiLT5zdGF0 aWNzX29mZnNldCwKLSsJCSAgcHN5bXRhYi0+bl9zdGF0aWNfc3ltcywgaW5mby0+Y3VfaW5kZXgp OwotKwotKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsLCA4LCBCRkRfRU5ESUFOX0xJVFRM RSwgZW50cnktPm9mZnNldCk7Ci0rICBvYnN0YWNrX2dyb3cgKGluZm8tPnR5cGVzX2xpc3QsIHZh bCwgOCk7Ci0rICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWwsIDgsIEJGRF9FTkRJQU5fTElU VExFLCBlbnRyeS0+dHlwZV9vZmZzZXQpOwotKyAgb2JzdGFja19ncm93IChpbmZvLT50eXBlc19s aXN0LCB2YWwsIDgpOwotKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsLCA4LCBCRkRfRU5E SUFOX0xJVFRMRSwgZW50cnktPnNpZ25hdHVyZSk7Ci0rICBvYnN0YWNrX2dyb3cgKGluZm8tPnR5 cGVzX2xpc3QsIHZhbCwgOCk7Ci0rCi0rICArK2luZm8tPmN1X2luZGV4OwotKwotKyAgcmV0dXJu IDE7Ci0rfQotKwotIC8qIENyZWF0ZSBhbiBpbmRleCBmaWxlIGZvciBPQkpGSUxFIGluIHRoZSBk aXJlY3RvcnkgRElSLiAgKi8KLSBzdGF0aWMgdm9pZAotIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZGlyKQotIHsKLSAgIHN0cnVj dCBjbGVhbnVwICpjbGVhbnVwOwotICAgY2hhciAqZmlsZW5hbWUsICpjbGVhbnVwX2ZpbGVuYW1l OwotLSAgc3RydWN0IG9ic3RhY2sgY29udGVudHMsIGFkZHJfb2JzdGFjaywgY29uc3RhbnRfcG9v bCwgc3ltdGFiX29ic3RhY2ssIGN1X2xpc3Q7Ci0rICBzdHJ1Y3Qgb2JzdGFjayBjb250ZW50cywg YWRkcl9vYnN0YWNrLCBjb25zdGFudF9wb29sLCBzeW10YWJfb2JzdGFjazsKLSsgIHN0cnVjdCBv YnN0YWNrIGN1X2xpc3QsIHR5cGVzX2N1X2xpc3Q7Ci0gICBpbnQgaTsKLSAgIEZJTEUgKm91dF9m aWxlOwotICAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKLUBAIC0xNDQ4OSw2ICsxNDY4 NSwxMiBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gICBvYnN0 YWNrX2luaXQgKCZjdV9saXN0KTsKLSAgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZjdV9s aXN0KTsKLSAKLSsgIG9ic3RhY2tfaW5pdCAoJnR5cGVzX2N1X2xpc3QpOwotKyAgbWFrZV9jbGVh bnVwX29ic3RhY2tfZnJlZSAoJnR5cGVzX2N1X2xpc3QpOwotKwotKyAgLyogVGhlIGxpc3QgaXMg YWxyZWFkeSBzb3J0ZWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYWRkaXRpb25hbAotKyAgICAg d29yayBoZXJlLiAgQWxzbywgdGhlIGRlYnVnX3R5cGVzIGVudHJpZXMgZG8gbm90IGFwcGVhciBp bgotKyAgICAgYWxsX2NvbXBfdW5pdHMsIGJ1dCBvbmx5IGluIHRoZWlyIG93biBoYXNoIHRhYmxl LiAgKi8KLSAgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0 czsgKytpKQotICAgICB7Ci0gICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBk d2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwotQEAgLTE0NTEwLDYgKzE0NzEy LDE5IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKLSAgICAgICBv YnN0YWNrX2dyb3cgKCZjdV9saXN0LCB2YWwsIDgpOwotICAgICB9Ci0gCi0rICAvKiBXcml0ZSBv dXQgdGhlIC5kZWJ1Z190eXBlIGVudHJpZXMsIGlmIGFueS4gICovCi0rICBpZiAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5zaWduYXR1cmVkX3R5cGVzKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHNpZ25h dHVyZWRfdHlwZV9pbmRleF9kYXRhIHNpZ19kYXRhOwotKwotKyAgICAgIHNpZ19kYXRhLm9iamZp bGUgPSBvYmpmaWxlOwotKyAgICAgIHNpZ19kYXRhLnN5bXRhYiA9IHN5bXRhYjsKLSsgICAgICBz aWdfZGF0YS50eXBlc19saXN0ID0gJnR5cGVzX2N1X2xpc3Q7Ci0rICAgICAgc2lnX2RhdGEuY3Vf aW5kZXggPSBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsKLSsgICAgICBodGFiX3Ry YXZlcnNlX25vcmVzaXplIChkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMsCi0r CQkJICAgICAgd3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSwgJnNpZ19kYXRhKTsKLSsgICAgfQot KwotICAgb2JzdGFja19pbml0ICgmY29uc3RhbnRfcG9vbCk7Ci0gICBtYWtlX2NsZWFudXBfb2Jz dGFja19mcmVlICgmY29uc3RhbnRfcG9vbCk7Ci0gICBvYnN0YWNrX2luaXQgKCZzeW10YWJfb2Jz dGFjayk7Ci1AQCAtMTQ1MTgsMTEgKzE0NzMzLDExIEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4 IChzdHJ1Y3Qgb2JqZmlsZSAKLSAKLSAgIG9ic3RhY2tfaW5pdCAoJmNvbnRlbnRzKTsKLSAgIG1h a2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZjb250ZW50cyk7Ci0tICBzaXplX29mX2NvbnRlbnRz ID0gNSAqIHNpemVvZiAob2Zmc2V0X3R5cGUpOwotKyAgc2l6ZV9vZl9jb250ZW50cyA9IDYgKiBz aXplb2YgKG9mZnNldF90eXBlKTsKLSAgIHRvdGFsX2xlbiA9IHNpemVfb2ZfY29udGVudHM7Ci0g Ci0gICAvKiBUaGUgdmVyc2lvbiBudW1iZXIuICAqLwotLSAgdmFsID0gTUFZQkVfU1dBUCAoMSk7 Ci0rICB2YWwgPSBNQVlCRV9TV0FQICgyKTsKLSAgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAm dmFsLCBzaXplb2YgKHZhbCkpOwotIAotICAgLyogVGhlIG9mZnNldCBvZiB0aGUgQ1UgbGlzdCBm cm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi1AQCAtMTQ1MzAsNiArMTQ3NDUsMTEgQEAg d3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAotICAgb2JzdGFja19ncm93 ICgmY29udGVudHMsICZ2YWwsIHNpemVvZiAodmFsKSk7Ci0gICB0b3RhbF9sZW4gKz0gb2JzdGFj a19vYmplY3Rfc2l6ZSAoJmN1X2xpc3QpOwotIAotKyAgLyogVGhlIG9mZnNldCBvZiB0aGUgdHlw ZXMgQ1UgbGlzdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi0rICB2YWwgPSBNQVlC RV9TV0FQICh0b3RhbF9sZW4pOwotKyAgb2JzdGFja19ncm93ICgmY29udGVudHMsICZ2YWwsIHNp emVvZiAodmFsKSk7Ci0rICB0b3RhbF9sZW4gKz0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJnR5cGVz X2N1X2xpc3QpOwotKwotICAgLyogVGhlIG9mZnNldCBvZiB0aGUgYWRkcmVzcyB0YWJsZSBmcm9t IHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi0gICB2YWwgPSBNQVlCRV9TV0FQICh0b3RhbF9s ZW4pOwotICAgb2JzdGFja19ncm93ICgmY29udGVudHMsICZ2YWwsIHNpemVvZiAodmFsKSk7Ci1A QCAtMTQ1NDksNiArMTQ3NjksNyBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9i amZpbGUgCi0gCi0gICB3cml0ZV9vYnN0YWNrIChvdXRfZmlsZSwgJmNvbnRlbnRzKTsKLSAgIHdy aXRlX29ic3RhY2sgKG91dF9maWxlLCAmY3VfbGlzdCk7Ci0rICB3cml0ZV9vYnN0YWNrIChvdXRf ZmlsZSwgJnR5cGVzX2N1X2xpc3QpOwotICAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZhZGRy X29ic3RhY2spOwotICAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZzeW10YWJfb2JzdGFjayk7 Ci0gICB3cml0ZV9vYnN0YWNrIChvdXRfZmlsZSwgJmNvbnN0YW50X3Bvb2wpOwotQEAgLTE0NTcz LDE4ICsxNDc5NCwzMyBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUg Ci0gCi0gICAgMS4gVGhlIGZpbGUgaGVhZGVyLiAgVGhpcyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVl cywgb2Ygb2Zmc2V0X3R5cGUKLSAgICB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkOgotLSAgIFswXSBU aGUgdmVyc2lvbiBudW1iZXIuICBDdXJyZW50bHkgMS4KLSsgICBbMF0gVGhlIHZlcnNpb24gbnVt YmVyLiAgQ3VycmVudGx5IDEgb3IgMi4gIFRoZSBkaWZmZXJlbmNlcyBhcmUKLSsgICBub3RlZCBi ZWxvdy4gIFZlcnNpb24gMSBkaWQgbm90IGFjY291bnQgZm9yIC5kZWJ1Z190eXBlcyBzZWN0aW9u czsKLSsgICB0aGUgcHJlc2VuY2Ugb2YgYSAuZGVidWdfdHlwZXMgc2VjdGlvbiBpbnZhbGlkYXRl cyBhbnkgdmVyc2lvbiAxCi0rICAgaW5kZXggdGhhdCBtYXkgZXhpc3QuCi0gICAgWzFdIFRoZSBv ZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgQ1UgbGlzdC4KLSsgICBb MS41XSBJbiB2ZXJzaW9uIDIsIHRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxl LCBvZiB0aGUKLSsgICB0eXBlcyBDVSBsaXN0LiAgVGhpcyBvZmZzZXQgZG9lcyBub3QgYXBwZWFy IGluIHZlcnNpb24gMS4gIE5vdGUKLSsgICB0aGF0IHRoaXMgY2FuIGJlIGVtcHR5LCBpbiB3aGlj aCBjYXNlIHRoaXMgb2Zmc2V0IHdpbGwgYmUgZXF1YWwgdG8KLSsgICB0aGUgbmV4dCBvZmZzZXQu Ci0gICAgWzJdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUg YWRkcmVzcyBzZWN0aW9uLgotICAgIFszXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0 aGUgZmlsZSwgb2YgdGhlIHN5bWJvbCB0YWJsZS4KLSAgICBbNF0gVGhlIG9mZnNldCwgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBjb25zdGFudCBwb29sLgotIAotICAgIDIuIFRo ZSBDVSBsaXN0LiAgVGhpcyBpcyBhIHNlcXVlbmNlIG9mIHBhaXJzIG9mIDY0LWJpdAotLSAgIGxp dHRsZS1lbmRpYW4gdmFsdWVzLiAgVGhlIGZpcnN0IGVsZW1lbnQgaW4gZWFjaCBwYWlyIGlzIHRo ZSBvZmZzZXQKLS0gICBvZiBhIENVIGluIHRoZSAuZGVidWdfaW5mbyBzZWN0aW9uLiAgVGhlIHNl Y29uZCBlbGVtZW50IGluIGVhY2gKLS0gICBwYWlyIGlzIHRoZSBsZW5ndGggb2YgdGhhdCBDVS4g IFJlZmVyZW5jZXMgdG8gYSBDVSBlbHNld2hlcmUgaW4gdGhlCi0tICAgbWFwIGFyZSBkb25lIHVz aW5nIGEgQ1UgaW5kZXgsIHdoaWNoIGlzIGp1c3QgdGhlIDAtYmFzZWQgaW5kZXggaW50bwotLSAg IHRoaXMgdGFibGUuCi0rICAgbGl0dGxlLWVuZGlhbiB2YWx1ZXMsIHNvcnRlZCBieSB0aGUgQ1Ug b2Zmc2V0LiAgVGhlIGZpcnN0IGVsZW1lbnQKLSsgICBpbiBlYWNoIHBhaXIgaXMgdGhlIG9mZnNl dCBvZiBhIENVIGluIHRoZSAuZGVidWdfaW5mbyBzZWN0aW9uLiAgVGhlCi0rICAgc2Vjb25kIGVs ZW1lbnQgaW4gZWFjaCBwYWlyIGlzIHRoZSBsZW5ndGggb2YgdGhhdCBDVS4gIFJlZmVyZW5jZXMK LSsgICB0byBhIENVIGVsc2V3aGVyZSBpbiB0aGUgbWFwIGFyZSBkb25lIHVzaW5nIGEgQ1UgaW5k ZXgsIHdoaWNoIGlzCi0rICAganVzdCB0aGUgMC1iYXNlZCBpbmRleCBpbnRvIHRoaXMgdGFibGUu ICBOb3RlIHRoYXQgaWYgdGhlcmUgYXJlCi0rICAgdHlwZSBDVXMsIHRoZW4gY29uY2VwdHVhbGx5 IENVcyBhbmQgdHlwZSBDVXMgZm9ybSBhIHNpbmdsZSBsaXN0IGZvcgotKyAgIHRoZSBwdXJwb3Nl cyBvZiBDVSBpbmRpY2VzLgotKwotKyAgIDIuNSBUaGUgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgZG9l cyBub3QgYXBwZWFyIGluIGEgdmVyc2lvbiAxIGluZGV4LgotKyAgIFRoaXMgaXMgYSBzZXF1ZW5j ZSBvZiB0cmlwbGV0cyBvZiA2NC1iaXQgbGl0dGxlLWVuZGlhbiB2YWx1ZXMuICBJbgotKyAgIGEg dHJpcGxldCwgdGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBDVSBvZmZzZXQsIHRoZSBzZWNvbmQgdmFs dWUgaXMKLSsgICB0aGUgdHlwZSBvZmZzZXQgaW4gdGhlIENVLCBhbmQgdGhlIHRoaXJkIHZhbHVl IGlzIHRoZSB0eXBlCi0rICAgc2lnbmF0dXJlLiAgVGhlIHR5cGVzIENVIGxpc3QgaXMgbm90IHNv cnRlZC4KLSAKLSAgICAzLiBUaGUgYWRkcmVzcyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mgc2VjdGlv biBjb25zaXN0cyBvZiBhIHNlcXVlbmNlCi0gICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAgRWFjaCBh ZGRyZXNzIGVudHJ5IGhhcyB0aHJlZSBlbGVtZW50cy4KCmRpZmYgLS1naXQgYS9nZGItZ2RiaW5k ZXgtdjItdG8tdjMucGF0Y2ggYi9nZGItZ2RiaW5kZXgtdjItdG8tdjMucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDcwNDUuLjAwMDAwMDAKLS0tIGEvZ2RiLWdkYmluZGV4 LXYyLXRvLXYzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjc4ICswLDAgQEAKLUZZSTogaW5k ZXggcHJlLWV4cGFuc2lvbiBmaXgKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hl cy8yMDEwLTA5L21zZzAwNDUyLmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMTAtMDkvbXNnMDAxNjUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8y NyAxNzo0MTozNQkxLjEyMjA2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8yNyAxODo0 MjozNQkxLjEyMjA3Ci0jIyAtMSw1ICsxLDE3IEBACi0gMjAxMC0wOS0yNyAgVG9tIFRyb21leSAg PHRyb21leUByZWRoYXQuY29tPgotIAotKwkqIGR3YXJmMnJlYWQuYyAoZHdhcmYyX3JlYWRfaW5k ZXgpOiBPbmx5IGFsbG93IHZlcnNpb24gMy4KLSsJKHdyaXRlX3BzeW1ib2xzKTogQWRkICdwc3lt c19zZWVuJyBhbmQgJ2lzX3N0YXRpYycgYXJndW1lbnRzLgotKwlPbmx5IGVtaXQgYSBnaXZlbiBw c3ltYm9sIG9uY2UuCi0rCShzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2RhdGEpIDxwc3lt c19zZWVuPjogTmV3IGZpZWxkLgotKwkod3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSk6IFVwZGF0 ZS4KLSsJKGNsZWFudXBfaHRhYik6IE5ldyBmdW5jdGlvbi4KLSsJKHdyaXRlX3BzeW10YWJzX3Rv X2luZGV4KTogVXBkYXRlLiAgQ3JlYXRlIHBzeW1zX3NlZW4gaGFzaC4gIEJ1bXAKLSsJdmVyc2lv biB0byAzLgotKwkoc2F2ZV9nZGJfaW5kZXhfY29tbWFuZCk6IFVwZGF0ZSBpbmRleCBkb2N1bWVu dGF0aW9uLgotKwotKzIwMTAtMDktMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4K LSsKLSAJKiBiY2FjaGUuYyAoZXhwYW5kX2hhc2hfdGFibGUpOiBVc2UgaGFzaF9mdW5jdGlvbiwg bm90IGhhc2guCi0gCi0gMjAxMC0wOS0yNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29t PgotSW5kZXg6IGdkYi03LjIvZ2RiL2R3YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTE6MjcuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTI6MDMuMDAw MDAwMDAwICswMjAwCi1AQCAtMTg5NywxNSArMTg5NywxMCBAQCBkd2FyZjJfcmVhZF9pbmRleCAo c3RydWN0IG9iamZpbGUgKm9iamZpCi0gICBhZGRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJf aW5kZXguYnVmZmVyOwotICAgLyogVmVyc2lvbiBjaGVjay4gICovCi0gICB2ZXJzaW9uID0gTUFZ QkVfU1dBUCAoKihvZmZzZXRfdHlwZSAqKSBhZGRyKTsKLS0gIGlmICh2ZXJzaW9uID09IDEpCi0t ICAgIHsKLS0gICAgICAvKiBJbmRleCB2ZXJzaW9uIDEgbmVnbGVjdGVkIHRvIGFjY291bnQgZm9y IC5kZWJ1Z190eXBlcy4gIFNvLAotLQkgaWYgd2Ugc2VlIC5kZWJ1Z190eXBlcywgd2UgY2Fubm90 IHVzZSB0aGlzIGluZGV4LiAgKi8KLS0gICAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBl cy5hc2VjdGlvbiAhPSBOVUxMCi0tCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5zaXpl ICE9IDApCi0tCXJldHVybiAwOwotLSAgICB9Ci0tICBlbHNlIGlmICh2ZXJzaW9uICE9IDIpCi0r ICAvKiBWZXJzaW9ucyBlYXJsaWVyIHRoYW4gMyBlbWl0dGVkIGV2ZXJ5IGNvcHkgb2YgYSBwc3lt Ym9sLiAgVGhpcwotKyAgICAgY2F1c2VzIHRoZSBpbmRleCB0byBiZWhhdmUgdmVyeSBwb29ybHkg Zm9yIGNlcnRhaW4gcmVxdWVzdHMuICBTbywKLSsgICAgIGl0IHNlZW1zIGJldHRlciB0byBqdXN0 IGlnbm9yZSBzdWNoIGluZGljZXMuICAqLwotKyAgaWYgKHZlcnNpb24gPCAzKQotICAgICByZXR1 cm4gMDsKLSAKLSAgIG1hcCA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLCBzdHJ1Y3QgbWFwcGVkX2luZGV4KTsKLUBAIC0xOTE5LDE0ICsxOTE0LDExIEBAIGR3YXJm Ml9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAJCSAgICAgIC8gOCk7Ci0gICAr K2k7Ci0gCi0tICBpZiAodmVyc2lvbiA9PSAyKQotLSAgICB7Ci0tICAgICAgdHlwZXNfbGlzdCA9 IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Ci0tICAgICAgdHlwZXNfbGlzdF9lbGVt ZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQotLQkJCSAgICAgIC0gTUFZQkVf U1dBUCAobWV0YWRhdGFbaV0pKQotLQkJCSAgICAgLyA4KTsKLS0gICAgICArK2k7Ci0tICAgIH0K LSsgIHR5cGVzX2xpc3QgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwotKyAgdHlw ZXNfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQotKwkJCSAg LSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCi0rCQkJIC8gOCk7Ci0rICArK2k7Ci0gCi0gICBt YXAtPmFkZHJlc3NfdGFibGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwotICAg bWFwLT5hZGRyZXNzX3RhYmxlX3NpemUgPSAoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQot QEAgLTE5NDQsOCArMTkzNiw3IEBAIGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmkKLSAgIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBjdV9saXN0LCBj dV9saXN0X2VsZW1lbnRzKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpZiAodmVyc2lvbiA9PSAy Ci0tICAgICAgJiYgdHlwZXNfbGlzdF9lbGVtZW50cwotKyAgaWYgKHR5cGVzX2xpc3RfZWxlbWVu dHMKLSAgICAgICAmJiAhY3JlYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX2Zyb21faW5kZXggKG9i amZpbGUsIHR5cGVzX2xpc3QsCi0gCQkJCQkJICB0eXBlc19saXN0X2VsZW1lbnRzKSkKLSAgICAg cmV0dXJuIDA7Ci1AQCAtMTQ1NjgsMTUgKzE0NTU5LDM4IEBAIGFkZF9hZGRyZXNzX2VudHJ5IChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAvKiBBZGQgYSBsaXN0IG9mIHBhcnRpYWwgc3ltYm9scyB0 byBTWU1UQUIuICAqLwotIHN0YXRpYyB2b2lkCi0gd3JpdGVfcHN5bWJvbHMgKHN0cnVjdCBtYXBw ZWRfc3ltdGFiICpzeW10YWIsCi0rCQlodGFiX3QgcHN5bXNfc2VlbiwKLSAJCXN0cnVjdCBwYXJ0 aWFsX3N5bWJvbCAqKnBzeW1wLAotIAkJaW50IGNvdW50LAotLQkJb2Zmc2V0X3R5cGUgY3VfaW5k ZXgpCi0rCQlvZmZzZXRfdHlwZSBjdV9pbmRleCwKLSsJCWludCBpc19zdGF0aWMpCi0gewotICAg Zm9yICg7IGNvdW50LS0gPiAwOyArK3BzeW1wKQotICAgICB7Ci0rICAgICAgdm9pZCAqKnNsb3Qs ICpsb29rdXA7Ci0rCi0gICAgICAgaWYgKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW1wKSA9PSBsYW5n dWFnZV9hZGEpCi0gCWVycm9yIChfKCJBZGEgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkg dGhlIGluZGV4IikpOwotLSAgICAgIGFkZF9pbmRleF9lbnRyeSAoc3ltdGFiLCBTWU1CT0xfTkFU VVJBTF9OQU1FICgqcHN5bXApLCBjdV9pbmRleCk7Ci0rCi0rICAgICAgLyogV2Ugb25seSB3YW50 IHRvIGFkZCBhIGdpdmVuIHBzeW1ib2wgb25jZS4gIEhvd2V2ZXIsIHdlIGFsc28KLSsJIHdhbnQg dG8gYWNjb3VudCBmb3Igd2hldGhlciBpdCBpcyBnbG9iYWwgb3Igc3RhdGljLiAgU28sIHdlCi0r CSBtYXkgYWRkIGl0IHR3aWNlLCB1c2luZyBzbGlnaHRseSBkaWZmZXJlbnQgdmFsdWVzLiAgKi8K LSsgICAgICBpZiAoaXNfc3RhdGljKQotKwl7Ci0rCSAgdWludHB0cl90IHZhbCA9IDEgfCAodWlu dHB0cl90KSAqcHN5bXA7Ci0rCi0rCSAgbG9va3VwID0gKHZvaWQgKikgdmFsOwotKwl9Ci0rICAg ICAgZWxzZQotKwlsb29rdXAgPSAqcHN5bXA7Ci0rCi0rICAgICAgLyogT25seSBhZGQgYSBnaXZl biBwc3ltYm9sIG9uY2UuICAqLwotKyAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAocHN5bXNf c2VlbiwgbG9va3VwLCBJTlNFUlQpOwotKyAgICAgIGlmICghKnNsb3QpCi0rCXsKLSsJICAqc2xv dCA9IGxvb2t1cDsKLSsJICBhZGRfaW5kZXhfZW50cnkgKHN5bXRhYiwgU1lNQk9MX05BVFVSQUxf TkFNRSAoKnBzeW1wKSwgY3VfaW5kZXgpOwotKwl9Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTQ2MDYs NiArMTQ2MjAsNyBAQCBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2RhdGEKLSAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlOwotICAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKLSAg IHN0cnVjdCBvYnN0YWNrICp0eXBlc19saXN0OwotKyAgaHRhYl90IHBzeW1zX3NlZW47Ci0gICBp bnQgY3VfaW5kZXg7Ci0gfTsKLSAKLUBAIC0xNDYyMSwxMSArMTQ2MzYsMTUgQEAgd3JpdGVfb25l X3NpZ25hdHVyZWRfdHlwZSAodm9pZCAqKnNsb3QsIAotICAgZ2RiX2J5dGUgdmFsWzhdOwotIAot ICAgd3JpdGVfcHN5bWJvbHMgKGluZm8tPnN5bXRhYiwKLSsJCSAgaW5mby0+cHN5bXNfc2VlbiwK LSAJCSAgaW5mby0+b2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLmxpc3QgKyBwc3ltdGFiLT5nbG9i YWxzX29mZnNldCwKLS0JCSAgcHN5bXRhYi0+bl9nbG9iYWxfc3ltcywgaW5mby0+Y3VfaW5kZXgp OwotKwkJICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBpbmZvLT5jdV9pbmRleCwKLSsJCSAgMCk7 Ci0gICB3cml0ZV9wc3ltYm9scyAoaW5mby0+c3ltdGFiLAotKwkJICBpbmZvLT5wc3ltc19zZWVu LAotIAkJICBpbmZvLT5vYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMubGlzdCArIHBzeW10YWItPnN0 YXRpY3Nfb2Zmc2V0LAotLQkJICBwc3ltdGFiLT5uX3N0YXRpY19zeW1zLCBpbmZvLT5jdV9pbmRl eCk7Ci0rCQkgIHBzeW10YWItPm5fc3RhdGljX3N5bXMsIGluZm8tPmN1X2luZGV4LAotKwkJICAx KTsKLSAKLSAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbCwgOCwgQkZEX0VORElBTl9MSVRU TEUsIGVudHJ5LT5vZmZzZXQpOwotICAgb2JzdGFja19ncm93IChpbmZvLT50eXBlc19saXN0LCB2 YWwsIDgpOwotQEAgLTE0NjM5LDYgKzE0NjU4LDE0IEBAIHdyaXRlX29uZV9zaWduYXR1cmVkX3R5 cGUgKHZvaWQgKipzbG90LCAKLSAgIHJldHVybiAxOwotIH0KLSAKLSsvKiBBIGNsZWFudXAgZnVu Y3Rpb24gZm9yIGFuIGh0YWJfdC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStjbGVhbnVwX2h0YWIg KHZvaWQgKmFyZykKLSt7Ci0rICBodGFiX2RlbGV0ZSAoYXJnKTsKLSt9Ci0rCi0gLyogQ3JlYXRl IGFuIGluZGV4IGZpbGUgZm9yIE9CSkZJTEUgaW4gdGhlIGRpcmVjdG9yeSBESVIuICAqLwotIHN0 YXRpYyB2b2lkCi0gd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBjb25zdCBjaGFyICpkaXIpCi1AQCAtMTQ2NTMsNiArMTQ2ODAsNyBAQCB3cml0ZV9wc3lt dGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gICBvZmZzZXRfdHlwZSB2YWwsIHNpemVf b2ZfY29udGVudHMsIHRvdGFsX2xlbjsKLSAgIHN0cnVjdCBzdGF0IHN0OwotICAgY2hhciBidWZb OF07Ci0rICBodGFiX3QgcHN5bXNfc2VlbjsKLSAKLSAgIGlmICghb2JqZmlsZS0+cHN5bXRhYnMp Ci0gICAgIHJldHVybjsKLUBAIC0xNDY4NSw2ICsxNDcxMywxMCBAQCB3cml0ZV9wc3ltdGFic190 b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gICBvYnN0YWNrX2luaXQgKCZ0eXBlc19jdV9saXN0 KTsKLSAgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZ0eXBlc19jdV9saXN0KTsKLSAKLSsg IHBzeW1zX3NlZW4gPSBodGFiX2NyZWF0ZV9hbGxvYyAoMTAwLCBodGFiX2hhc2hfcG9pbnRlciwg aHRhYl9lcV9wb2ludGVyLAotKwkJCQkgIE5VTEwsIHhjYWxsb2MsIHhmcmVlKTsKLSsgIG1ha2Vf Y2xlYW51cCAoY2xlYW51cF9odGFiLCBwc3ltc19zZWVuKTsKLSsKLSAgIC8qIFRoZSBsaXN0IGlz IGFscmVhZHkgc29ydGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFkZGl0aW9uYWwKLSAgICAg IHdvcmsgaGVyZS4gIEFsc28sIHRoZSBkZWJ1Z190eXBlcyBlbnRyaWVzIGRvIG5vdCBhcHBlYXIg aW4KLSAgICAgIGFsbF9jb21wX3VuaXRzLCBidXQgb25seSBpbiB0aGVpciBvd24gaGFzaCB0YWJs ZS4gICovCi1AQCAtMTQ2OTUsMTEgKzE0NzI3LDE1IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4 IChzdHJ1Y3Qgb2JqZmlsZSAKLSAgICAgICBnZGJfYnl0ZSB2YWxbOF07Ci0gCi0gICAgICAgd3Jp dGVfcHN5bWJvbHMgKHN5bXRhYiwKLSsJCSAgICAgIHBzeW1zX3NlZW4sCi0gCQkgICAgICBvYmpm aWxlLT5nbG9iYWxfcHN5bWJvbHMubGlzdCArIHBzeW10YWItPmdsb2JhbHNfb2Zmc2V0LAotLQkJ ICAgICAgcHN5bXRhYi0+bl9nbG9iYWxfc3ltcywgaSk7Ci0rCQkgICAgICBwc3ltdGFiLT5uX2ds b2JhbF9zeW1zLCBpLAotKwkJICAgICAgMCk7Ci0gICAgICAgd3JpdGVfcHN5bWJvbHMgKHN5bXRh YiwKLSsJCSAgICAgIHBzeW1zX3NlZW4sCi0gCQkgICAgICBvYmpmaWxlLT5zdGF0aWNfcHN5bWJv bHMubGlzdCArIHBzeW10YWItPnN0YXRpY3Nfb2Zmc2V0LAotLQkJICAgICAgcHN5bXRhYi0+bl9z dGF0aWNfc3ltcywgaSk7Ci0rCQkgICAgICBwc3ltdGFiLT5uX3N0YXRpY19zeW1zLCBpLAotKwkJ ICAgICAgMSk7Ci0gCi0gICAgICAgYWRkX2FkZHJlc3NfZW50cnkgKG9iamZpbGUsICZhZGRyX29i c3RhY2ssIHBzeW10YWIsIGkpOwotIAotQEAgLTE0NzE3LDYgKzE0NzUzLDcgQEAgd3JpdGVfcHN5 bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAotICAgICAgIHNpZ19kYXRhLm9iamZpbGUg PSBvYmpmaWxlOwotICAgICAgIHNpZ19kYXRhLnN5bXRhYiA9IHN5bXRhYjsKLSAgICAgICBzaWdf ZGF0YS50eXBlc19saXN0ID0gJnR5cGVzX2N1X2xpc3Q7Ci0rICAgICAgc2lnX2RhdGEucHN5bXNf c2VlbiA9IHBzeW1zX3NlZW47Ci0gICAgICAgc2lnX2RhdGEuY3VfaW5kZXggPSBkd2FyZjJfcGVy X29iamZpbGUtPm5fY29tcF91bml0czsKLSAgICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChk d2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMsCi0gCQkJICAgICAgd3JpdGVfb25l X3NpZ25hdHVyZWRfdHlwZSwgJnNpZ19kYXRhKTsKLUBAIC0xNDczNCw3ICsxNDc3MSw3IEBAIHdy aXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKLSAgIHRvdGFsX2xlbiA9IHNp emVfb2ZfY29udGVudHM7Ci0gCi0gICAvKiBUaGUgdmVyc2lvbiBudW1iZXIuICAqLwotLSAgdmFs ID0gTUFZQkVfU1dBUCAoMik7Ci0rICB2YWwgPSBNQVlCRV9TV0FQICgzKTsKLSAgIG9ic3RhY2tf Z3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOwotIAotICAgLyogVGhlIG9mZnNl dCBvZiB0aGUgQ1UgbGlzdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi1AQCAtMTQ3 OTEsMTggKzE0ODI4LDE2IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmls ZSAKLSAKLSAgICAxLiBUaGUgZmlsZSBoZWFkZXIuICBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgdmFs dWVzLCBvZiBvZmZzZXRfdHlwZQotICAgIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQ6Ci0tICAgWzBd IFRoZSB2ZXJzaW9uIG51bWJlci4gIEN1cnJlbnRseSAxIG9yIDIuICBUaGUgZGlmZmVyZW5jZXMg YXJlCi0tICAgbm90ZWQgYmVsb3cuICBWZXJzaW9uIDEgZGlkIG5vdCBhY2NvdW50IGZvciAuZGVi dWdfdHlwZXMgc2VjdGlvbnM7Ci0tICAgdGhlIHByZXNlbmNlIG9mIGEgLmRlYnVnX3R5cGVzIHNl Y3Rpb24gaW52YWxpZGF0ZXMgYW55IHZlcnNpb24gMQotLSAgIGluZGV4IHRoYXQgbWF5IGV4aXN0 LgotKwotKyAgIFswXSBUaGUgdmVyc2lvbiBudW1iZXIsIGN1cnJlbnRseSAzLiAgVmVyc2lvbnMg MSBhbmQgMiBhcmUKLSsgICBvYnNvbGV0ZS4KLSAgICBbMV0gVGhlIG9mZnNldCwgZnJvbSB0aGUg c3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBDVSBsaXN0LgotLSAgIFsxLjVdIEluIHZlcnNpb24g MiwgdGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZQotLSAgIHR5 cGVzIENVIGxpc3QuICBUaGlzIG9mZnNldCBkb2VzIG5vdCBhcHBlYXIgaW4gdmVyc2lvbiAxLiAg Tm90ZQotLSAgIHRoYXQgdGhpcyBjYW4gYmUgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhpcyBvZmZz ZXQgd2lsbCBiZSBlcXVhbCB0bwotLSAgIHRoZSBuZXh0IG9mZnNldC4KLS0gICBbMl0gVGhlIG9m ZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBhZGRyZXNzIHNlY3Rpb24u Ci0tICAgWzNdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUg c3ltYm9sIHRhYmxlLgotLSAgIFs0XSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUg ZmlsZSwgb2YgdGhlIGNvbnN0YW50IHBvb2wuCi0rICAgWzJdIFRoZSBvZmZzZXQsIGZyb20gdGhl IHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgdHlwZXMgQ1UgbGlzdC4KLSsgICBOb3RlIHRoYXQg dGhpcyBzZWN0aW9uIGNhbiBiZSBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGlzIG9mZnNldCB3aWxs Ci0rICAgYmUgZXF1YWwgdG8gdGhlIG5leHQgb2Zmc2V0LgotKyAgIFszXSBUaGUgb2Zmc2V0LCBm cm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGFkZHJlc3Mgc2VjdGlvbi4KLSsgICBb NF0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBzeW1ib2wg dGFibGUuCi0rICAgWzVdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBv ZiB0aGUgY29uc3RhbnQgcG9vbC4KLSAKLSAgICAyLiBUaGUgQ1UgbGlzdC4gIFRoaXMgaXMgYSBz ZXF1ZW5jZSBvZiBwYWlycyBvZiA2NC1iaXQKLSAgICBsaXR0bGUtZW5kaWFuIHZhbHVlcywgc29y dGVkIGJ5IHRoZSBDVSBvZmZzZXQuICBUaGUgZmlyc3QgZWxlbWVudAotQEAgLTE0ODEzLDE5ICsx NDg0OCwxOSBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gICAg dHlwZSBDVXMsIHRoZW4gY29uY2VwdHVhbGx5IENVcyBhbmQgdHlwZSBDVXMgZm9ybSBhIHNpbmds ZSBsaXN0IGZvcgotICAgIHRoZSBwdXJwb3NlcyBvZiBDVSBpbmRpY2VzLgotIAotLSAgIDIuNSBU aGUgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgZG9lcyBub3QgYXBwZWFyIGluIGEgdmVyc2lvbiAxIGlu ZGV4LgotLSAgIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlwbGV0cyBvZiA2NC1iaXQgbGl0dGxl LWVuZGlhbiB2YWx1ZXMuICBJbgotLSAgIGEgdHJpcGxldCwgdGhlIGZpcnN0IHZhbHVlIGlzIHRo ZSBDVSBvZmZzZXQsIHRoZSBzZWNvbmQgdmFsdWUgaXMKLS0gICB0aGUgdHlwZSBvZmZzZXQgaW4g dGhlIENVLCBhbmQgdGhlIHRoaXJkIHZhbHVlIGlzIHRoZSB0eXBlCi0tICAgc2lnbmF0dXJlLiAg VGhlIHR5cGVzIENVIGxpc3QgaXMgbm90IHNvcnRlZC4KLSsgICAzLiBUaGUgdHlwZXMgQ1UgbGlz dC4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlwbGV0cyBvZiA2NC1iaXQKLSsgICBsaXR0bGUt ZW5kaWFuIHZhbHVlcy4gIEluIGEgdHJpcGxldCwgdGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBDVQot KyAgIG9mZnNldCwgdGhlIHNlY29uZCB2YWx1ZSBpcyB0aGUgdHlwZSBvZmZzZXQgaW4gdGhlIENV LCBhbmQgdGhlCi0rICAgdGhpcmQgdmFsdWUgaXMgdGhlIHR5cGUgc2lnbmF0dXJlLiAgVGhlIHR5 cGVzIENVIGxpc3QgaXMgbm90Ci0rICAgc29ydGVkLgotIAotLSAgIDMuIFRoZSBhZGRyZXNzIHNl Y3Rpb24uICBUaGUgYWRkcmVzcyBzZWN0aW9uIGNvbnNpc3RzIG9mIGEgc2VxdWVuY2UKLSsgICA0 LiBUaGUgYWRkcmVzcyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mgc2VjdGlvbiBjb25zaXN0cyBvZiBh IHNlcXVlbmNlCi0gICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAgRWFjaCBhZGRyZXNzIGVudHJ5IGhh cyB0aHJlZSBlbGVtZW50cy4KLSAgICBbMF0gVGhlIGxvdyBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0 LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgotICAgIFsxXSBUaGUgaGlnaCBhZGRyZXNzLiAgVGhp cyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgotICAgIFsyXSBUaGUgQ1UgaW5kZXgu ICBUaGlzIGlzIGFuIG9mZnNldF90eXBlIHZhbHVlLgotIAotLSAgIDQuIFRoZSBzeW1ib2wgdGFi bGUuICBUaGlzIGlzIGEgaGFzaCB0YWJsZS4gIFRoZSBzaXplIG9mIHRoZSBoYXNoCi0rICAgNS4g VGhlIHN5bWJvbCB0YWJsZS4gIFRoaXMgaXMgYSBoYXNoIHRhYmxlLiAgVGhlIHNpemUgb2YgdGhl IGhhc2gKLSAgICB0YWJsZSBpcyBhbHdheXMgYSBwb3dlciBvZiAyLiAgVGhlIGluaXRpYWwgaGFz aCBhbmQgdGhlIHN0ZXAgYXJlCi0gICAgY3VycmVudGx5IGRlZmluZWQgYnkgdGhlIGBmaW5kX3Ns b3QnIGZ1bmN0aW9uLgotIAotQEAgLTE0ODQ3LDcgKzE0ODgyLDcgQEAgd3JpdGVfcHN5bXRhYnNf dG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAotICAgIGVsZW1lbnQgaW4gdGhlIGhhc2ggdGFibGUg aXMgdXNlZCB0byBpbmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5lIHRoZQotICAgIHN5bWJvbC4KLSAK LS0gICA1LiBUaGUgY29uc3RhbnQgcG9vbC4gIFRoaXMgaXMgc2ltcGx5IGEgYnVuY2ggb2YgYnl0 ZXMuICBJdCBpcwotKyAgIDYuIFRoZSBjb25zdGFudCBwb29sLiAgVGhpcyBpcyBzaW1wbHkgYSBi dW5jaCBvZiBieXRlcy4gIEl0IGlzCi0gICAgb3JnYW5pemVkIHNvIHRoYXQgYWxpZ25tZW50IGlz IGNvcnJlY3Q6IENVIHZlY3RvcnMgYXJlIHN0b3JlZAotICAgIGZpcnN0LCBmb2xsb3dlZCBieSBz dHJpbmdzLiAgKi8KLSBzdGF0aWMgdm9pZAoKZGlmZiAtLWdpdCBhL2dkYi1uZXh0LW92ZXItdGhy b3cucGF0Y2ggYi9nZGItbmV4dC1vdmVyLXRocm93LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmFjZmVlZjIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItbmV4dC1vdmVy LXRocm93LnBhdGNoCkBAIC0wLDAgKzEsMTI4MyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMTAvbXNnMDAxMDkuaHRtbAorU3ViamVjdDogUkZDOiBuZXh0L2Zp bmlzaC9ldGMgLXZzLSBleGNlcHRpb25zCisKK1RoaXMgaXMgYSByZWZyZXNoIG9mOgorCisgICAg aHR0cDovL3d3dy5zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTA1L21zZzAwNjM1 Lmh0bWwKKworKFRoZSB0aHJlYWQgY29udGludWVzIGluIHRoZSBmb2xsb3dpbmcgbW9udGguKQor CitJIHJlYmFzZWQgdGhlIHBhdGNoIGFuZCBhZGRyZXNzZWQgUGVkcm8ncyBjb21tZW50cy4KKwor SSBkaWQgbm90IGFkZCB0aGUgdXNlciBub3RpZmljYXRpb24gdGhhdCBEb3VnIGFza2VkIGZvci4K KworVGhpcyB2ZXJzaW9uIGRvZXMgd29yayBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20g YSBzaWduYWwgaGFuZGxlci4KK1RoZSBpbmNsdWRlZCBKYXZhIHRlc3QgY2FzZSBjaGVja3MgdGhh dCAob24gbW9zdCBwbGF0Zm9ybXMpLgorCitCdWlsdCBhbmQgcmVndGVzdGVkIG9uIHg4Ni02NCAo Y29tcGlsZSBmYXJtKS4KK1Rlc3RzIGZvciB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgYXJlIGluY2x1 ZGVkLgorCitJJ2QgYXBwcmVjaWF0ZSBjb21tZW50cy4gIEkgZG9uJ3Qgd2FudCB0byBjb21taXQg dGhpcyB3aXRob3V0IGEgcmV2aWV3LAorYXMgbXkgZXhwZXJpZW5jZSBpcyB0aGF0IEkgdXN1YWxs eSBlcnIgd2hlbiB0b3VjaGluZyBicmVha3BvaW50cyBvcgoraW5mcnVuLgorCitJZiB5b3Ugd2Fu dCB0byB0cnkgdGhpcyB5b3Vyc2VsZiwgeW91IHdpbGwgbmVlZCBhIG5ldy1lbm91Z2ggbGliZ2Nj LCBvbmUKK3RoYXQgaW5jbHVkZXMgdGhlIG5lY2Vzc2FyeSBkZWJ1Z2dpbmcgaG9vay4KKworVG9t CisKKzIwMTAtMTAtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KKworCSogaW5m cnVuLmMgKGhhbmRsZV9pbmZlcmlvcl9ldmVudCk6IEhhbmRsZSBleGNlcHRpb24gYnJlYWtwb2lu dHMuCisJKGhhbmRsZV9pbmZlcmlvcl9ldmVudCk6IExpa2V3aXNlLgorCShpbnNlcnRfZXhjZXB0 aW9uX3Jlc3VtZV9icmVha3BvaW50KTogTmV3IGZ1bmN0aW9uLgorCShjaGVja19leGNlcHRpb25f cmVzdW1lKTogTGlrZXdpc2UuCisJKiBpbmZlcmlvci5oIChkZWxldGVfbG9uZ2ptcF9icmVha3Bv aW50X2NsZWFudXApOiBEZWNsYXJlLgorCSogaW5mY21kLmMgKGRlbGV0ZV9sb25nam1wX2JyZWFr cG9pbnRfY2xlYW51cCk6IE5vIGxvbmdlciBzdGF0aWMuCisJKHN0ZXBfMSk6IFNldCB0aHJlYWQn cyBpbml0aWF0aW5nIGZyYW1lLgorCSh1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbik6IE5ldyBmdW5j dGlvbi4KKwkodW50aWxfbmV4dF9jb21tYW5kKTogU3VwcG9ydCBleGNlcHRpb24gYnJlYWtwb2lu dHMuCisJKGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbik6IERlbGV0ZSBsb25nam1wIGJyZWFr cG9pbnQuCisJKGZpbmlzaF9mb3J3YXJkKTogU3VwcG9ydCBleGNlcHRpb24gYnJlYWtwb2ludHMu CisJKiBnZGJ0aHJlYWQuaCAoc3RydWN0IHRocmVhZF9pbmZvKSA8aW5pdGlhdGluZ19mcmFtZT46 IE5ldyBmaWVsZC4KKwkqIGJyZWFrcG9pbnQuaCAoZW51bSBicHR5cGUpIDxicF9leGNlcHRpb24s IGJwX2V4Y2VwdGlvbl9yZXN1bWUsCisJYnBfZXhjZXB0aW9uX21hc3Rlcj46IE5ldyBjb25zdGFu dHMuCisJKHN0cnVjdCBicHN0YXRfd2hhdCkgPGlzX2xvbmdqbXA+OiBOZXcgZmllbGQuCisJKiBi cmVha3BvaW50LmMgKGNyZWF0ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQpOiBOZXcgZnVu Y3Rpb24uCisJKHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjKTogSGFuZGxlIGJwX2V4Y2Vw dGlvbl9tYXN0ZXIuICBDYWxsCisJY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludC4K KwkocHJpbnRfaXRfdHlwaWNhbCk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVyLCBicF9leGNl cHRpb24uCisJKGJwc3RhdF9zdG9wX3N0YXR1cyk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVy LgorCShicHN0YXRfd2hhdCk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVyLCBicF9leGNlcHRp b24sCisJYnBfZXhjZXB0aW9uX3Jlc3VtZS4KKwkoYnB0eXBlX3N0cmluZyk6IExpa2V3aXNlLgor CShwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbik6IExpa2V3aXNlLgorCShhbGxvY2F0ZV9i cF9sb2NhdGlvbik6IExpa2V3aXNlLgorCShzZXRfbG9uZ2ptcF9icmVha3BvaW50KTogSGFuZGxl IGV4Y2VwdGlvbiBicmVha3BvaW50cy4KKwkoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCk6IExp a2V3aXNlLgorCShtZW50aW9uKTogTGlrZXdpc2UuCisJKHN0cnVjdCB1bnRpbF9icmVha19jb21t YW5kX2NvbnRpbnVhdGlvbl9hcmdzKSA8dGhyZWFkX251bT46IE5ldworCWZpZWxkLgorCSh1bnRp bF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbik6IENhbGwKKwlkZWxldGVfbG9uZ2ptcF9icmVh a3BvaW50LgorCSh1bnRpbF9icmVha19jb21tYW5kKTogU3VwcG9ydCBleGNlcHRpb24gYnJlYWtw b2ludHMuCisJKGRlbGV0ZV9jb21tYW5kKTogTGlrZXdpc2UuCisJKGJyZWFrcG9pbnRfcmVfc2V0 X29uZSk6IExpa2V3aXNlLgorCShicmVha3BvaW50X3JlX3NldCk6IExpa2V3aXNlLgorCisyMDEw LTEwLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisKKwkqIGdkYi5qYXZhL2pu cGUuamF2YTogTmV3IGZpbGUuCisJKiBnZGIuamF2YS9qbnBlLmV4cDogTmV3IGZpbGUuCisJKiBn ZGIuY3AvZ2RiOTU5My5leHA6IE5ldyBmaWxlLgorCSogZ2RiLmNwL2dkYjk1OTMuY2M6IE5ldyBm aWxlLgorCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYnJlYWtwb2ludC5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAx MC0xMS0xNyAwMjozODo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9icmVha3BvaW50LmMJMjAxMC0xMS0xNyAwMjo0MTo1My4wMDAwMDAwMDAgKzAxMDAKK0BA IC0yMjMyLDYgKzIyMzIsMzMgQEAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9p bnQgKAorICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisgfQorIAorKy8qIEluc3RhbGwgYSBt YXN0ZXIgYnJlYWtwb2ludCBvbiB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLiAgKi8KKysKKyt2 b2lkCisrY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAodm9pZCkKKyt7CisrICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysKKysgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKysg ICAgeworKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqZGVidWdfaG9vazsKKysKKysgICAg ICBkZWJ1Z19ob29rID0gbG9va3VwX21pbmltYWxfc3ltYm9sX3RleHQgKCJfVW53aW5kX0RlYnVn SG9vayIsIG9iamZpbGUpOworKyAgICAgIGlmIChkZWJ1Z19ob29rICE9IE5VTEwpCisrCXsKKysJ ICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKKysKKysJICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFr cG9pbnQgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLAorKwkJCQkJICBTWU1CT0xfVkFMVUVf QUREUkVTUyAoZGVidWdfaG9vayksCisrCQkJCQkgIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOworKwkg IGItPmFkZHJfc3RyaW5nID0geHN0cmR1cCAoIl9VbndpbmRfRGVidWdIb29rIik7CisrCSAgYi0+ ZW5hYmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7CisrCX0KKysgICAgfQorKworKyAgdXBkYXRlX2ds b2JhbF9sb2NhdGlvbl9saXN0ICgxKTsKKyt9CisrCisgdm9pZAorIHVwZGF0ZV9icmVha3BvaW50 c19hZnRlcl9leGVjICh2b2lkKQorIHsKK0BAIC0yMjczLDcgKzIzMDAsOCBAQCB1cGRhdGVfYnJl YWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKKyAgICAgLyogVGhyZWFkIGV2ZW50IGJyZWFrcG9p bnRzIG11c3QgYmUgc2V0IGFuZXcgYWZ0ZXIgYW4gZXhlYygpLAorICAgICAgICBhcyBtdXN0IG92 ZXJsYXkgZXZlbnQgYW5kIGxvbmdqbXAgbWFzdGVyIGJyZWFrcG9pbnRzLiAgKi8KKyAgICAgaWYg KGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVu dAorLQl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBfc3Rk X3Rlcm1pbmF0ZV9tYXN0ZXIpCisrCXx8IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIgfHwg Yi0+dHlwZSA9PSBicF9zdGRfdGVybWluYXRlX21hc3RlcgorKwl8fCBiLT50eXBlID09IGJwX2V4 Y2VwdGlvbl9tYXN0ZXIpCisgICAgICAgeworIAlkZWxldGVfYnJlYWtwb2ludCAoYik7CisgCWNv bnRpbnVlOworQEAgLTIyODgsNyArMjMxNiw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9l eGVjICh2b2lkKQorIAorICAgICAvKiBMb25nam1wIGFuZCBsb25nam1wLXJlc3VtZSBicmVha3Bv aW50cyBhcmUgYWxzbyBtZWFuaW5nbGVzcworICAgICAgICBhZnRlciBhbiBleGVjLiAgKi8KKy0g ICAgaWYgKGItPnR5cGUgPT0gYnBfbG9uZ2ptcCB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfcmVz dW1lKQorKyAgICBpZiAoYi0+dHlwZSA9PSBicF9sb25nam1wIHx8IGItPnR5cGUgPT0gYnBfbG9u Z2ptcF9yZXN1bWUKKysJfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb24gfHwgYi0+dHlwZSA9PSBi cF9leGNlcHRpb25fcmVzdW1lKQorICAgICAgIHsKKyAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwor IAljb250aW51ZTsKK0BAIC0yMzUwLDYgKzIzNzksNyBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0 ZXJfZXhlYyAodm9pZCkKKyAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgic2ln bG9uZ2ptcCIpOworICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJfc2lnbG9u Z2ptcCIpOworICAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQgKCJzdGQ6 OnRlcm1pbmF0ZSgpIik7CisrICBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICgp OworIH0KKyAKKyBpbnQKK0BAIC0zMjc1LDYgKzMzMDUsMTIgQEAgcHJpbnRfaXRfdHlwaWNhbCAo YnBzdGF0IGJzKQorICAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7CisgICAgICAgYnJlYWs7 CisgCisrICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKKysgICAgICAvKiBUaGVzZSBzaG91 bGQgbmV2ZXIgYmUgZW5hYmxlZC4gICovCisrICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJFeGNl cHRpb24gTWFzdGVyIEJyZWFrcG9pbnQ6IGdkYiBzaG91bGQgbm90IHN0b3AhXG4iKSk7CisrICAg ICAgcmVzdWx0ID0gUFJJTlRfTk9USElORzsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBi cF93YXRjaHBvaW50OgorICAgICBjYXNlIGJwX2hhcmR3YXJlX3dhdGNocG9pbnQ6CisgICAgICAg YW5ub3RhdGVfd2F0Y2hwb2ludCAoYi0+bnVtYmVyKTsKK0BAIC0zMzYyLDYgKzMzOTgsOCBAQCBw cmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCisgICAgIGNhc2UgYnBfbm9uZToKKyAgICAgY2Fz ZSBicF9sb25nam1wOgorICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgorKyAgICBjYXNlIGJw X2V4Y2VwdGlvbjoKKysgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgorICAgICBjYXNlIGJw X3N0ZXBfcmVzdW1lOgorICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6CisgICAgIGNhc2Ug YnBfY2FsbF9kdW1teToKK0BAIC00MTY0LDcgKzQyMDIsOCBAQCBicHN0YXRfc3RvcF9zdGF0dXMg KHN0cnVjdCBhZGRyZXNzX3NwYWNlCisgCisgCSAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2 ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAorIAkgICAgICB8fCBiLT50eXBlID09 IGJwX2xvbmdqbXBfbWFzdGVyCistCSAgICAgIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0 ZV9tYXN0ZXIpCisrCSAgICAgIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIK KysJICAgICAgfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFzdGVyKQorIAkgICAgLyogV2Ug ZG8gbm90IHN0b3AgZm9yIHRoZXNlLiAgKi8KKyAJICAgIGJzLT5zdG9wID0gMDsKKyAJICBlbHNl CitAQCAtNDI2MCw2ICs0Mjk5LDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBic19oZWFkKQorIAor ICAgcmV0dmFsLm1haW5fYWN0aW9uID0gQlBTVEFUX1dIQVRfS0VFUF9DSEVDS0lORzsKKyAgIHJl dHZhbC5jYWxsX2R1bW15ID0gU1RPUF9OT05FOworKyAgcmV0dmFsLmlzX2xvbmdqbXAgPSAwOwor IAorICAgZm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCisgICAg IHsKK0BAIC00MzE1LDEwICs0MzU1LDE0IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnNfaGVhZCkK KyAJICAgIH0KKyAJICBicmVhazsKKyAJY2FzZSBicF9sb25nam1wOgorKwljYXNlIGJwX2V4Y2Vw dGlvbjoKKyAJICB0aGlzX2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRTsK KysJICByZXR2YWwuaXNfbG9uZ2ptcCA9IGJwdHlwZSA9PSBicF9sb25nam1wOworIAkgIGJyZWFr OworIAljYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgorKwljYXNlIGJwX2V4Y2VwdGlvbl9yZXN1bWU6 CisgCSAgdGhpc19hY3Rpb24gPSBCUFNUQVRfV0hBVF9DTEVBUl9MT05HSk1QX1JFU1VNRTsKKysJ ICByZXR2YWwuaXNfbG9uZ2ptcCA9IGJwdHlwZSA9PSBicF9sb25nam1wX3Jlc3VtZTsKKyAJICBi cmVhazsKKyAJY2FzZSBicF9zdGVwX3Jlc3VtZToKKyAJICBpZiAoYnMtPnN0b3ApCitAQCAtNDMz NCw2ICs0Mzc4LDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBic19oZWFkKQorIAljYXNlIGJwX292 ZXJsYXlfZXZlbnQ6CisgCWNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CisgCWNhc2UgYnBfc3RkX3Rl cm1pbmF0ZV9tYXN0ZXI6CisrCWNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKKyAJICB0aGlzX2Fj dGlvbiA9IEJQU1RBVF9XSEFUX1NJTkdMRTsKKyAJICBicmVhazsKKyAJY2FzZSBicF9jYXRjaHBv aW50OgorQEAgLTQ1NTYsNiArNDYwMSw4IEBAIGJwdHlwZV9zdHJpbmcgKGVudW0gYnB0eXBlIHR5 cGUpCisgICAgIHticF9hY2Nlc3Nfd2F0Y2hwb2ludCwgImFjYyB3YXRjaHBvaW50In0sCisgICAg IHticF9sb25nam1wLCAibG9uZ2ptcCJ9LAorICAgICB7YnBfbG9uZ2ptcF9yZXN1bWUsICJsb25n am1wIHJlc3VtZSJ9LAorKyAgICB7YnBfZXhjZXB0aW9uLCAiZXhjZXB0aW9uIn0sCisrICAgIHti cF9leGNlcHRpb25fcmVzdW1lLCAiZXhjZXB0aW9uIHJlc3VtZSJ9LAorICAgICB7YnBfc3RlcF9y ZXN1bWUsICJzdGVwIHJlc3VtZSJ9LAorICAgICB7YnBfd2F0Y2hwb2ludF9zY29wZSwgIndhdGNo cG9pbnQgc2NvcGUifSwKKyAgICAge2JwX2NhbGxfZHVtbXksICJjYWxsIGR1bW15In0sCitAQCAt NDU2NSw2ICs0NjEyLDcgQEAgYnB0eXBlX3N0cmluZyAoZW51bSBicHR5cGUgdHlwZSkKKyAgICAg e2JwX292ZXJsYXlfZXZlbnQsICJvdmVybGF5IGV2ZW50cyJ9LAorICAgICB7YnBfbG9uZ2ptcF9t YXN0ZXIsICJsb25nam1wIG1hc3RlciJ9LAorICAgICB7YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIs ICJzdGQ6OnRlcm1pbmF0ZSBtYXN0ZXIifSwKKysgICAge2JwX2V4Y2VwdGlvbl9tYXN0ZXIsICJl eGNlcHRpb24gbWFzdGVyIn0sCisgICAgIHticF9jYXRjaHBvaW50LCAiY2F0Y2hwb2ludCJ9LAor ICAgICB7YnBfdHJhY2Vwb2ludCwgInRyYWNlcG9pbnQifSwKKyAgICAge2JwX2Zhc3RfdHJhY2Vw b2ludCwgImZhc3QgdHJhY2Vwb2ludCJ9LAorQEAgLTQ3MDUsNiArNDc1Myw4IEBAIHByaW50X29u ZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnIKKyAgICAgICBjYXNlIGJwX2ZpbmlzaDoK KyAgICAgICBjYXNlIGJwX2xvbmdqbXA6CisgICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToK KysgICAgICBjYXNlIGJwX2V4Y2VwdGlvbjoKKysgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1 bWU6CisgICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKKyAgICAgICBjYXNlIGJwX3dhdGNocG9p bnRfc2NvcGU6CisgICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgorQEAgLTQ3MTQsNiArNDc2NCw3 IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnIKKyAgICAgICBjYXNl IGJwX292ZXJsYXlfZXZlbnQ6CisgICAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKKyAgICAg ICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgorKyAgICAgIGNhc2UgYnBfZXhjZXB0aW9u X21hc3RlcjoKKyAgICAgICBjYXNlIGJwX3RyYWNlcG9pbnQ6CisgICAgICAgY2FzZSBicF9mYXN0 X3RyYWNlcG9pbnQ6CisgICAgICAgY2FzZSBicF9zdGF0aWNfdHJhY2Vwb2ludDoKK0BAIC01NDU3 LDYgKzU1MDgsOCBAQCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgCisg ICAgIGNhc2UgYnBfZmluaXNoOgorICAgICBjYXNlIGJwX2xvbmdqbXA6CisgICAgIGNhc2UgYnBf bG9uZ2ptcF9yZXN1bWU6CisrICAgIGNhc2UgYnBfZXhjZXB0aW9uOgorKyAgICBjYXNlIGJwX2V4 Y2VwdGlvbl9yZXN1bWU6CisgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CisgICAgIGNhc2UgYnBf d2F0Y2hwb2ludF9zY29wZToKKyAgICAgY2FzZSBicF9jYWxsX2R1bW15OgorQEAgLTU0NjksNiAr NTUyMiw3IEBAIGFsbG9jYXRlX2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAKKyAgICAg Y2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKKyAgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXI6CisgICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKKysgICAgY2Fz ZSBicF9leGNlcHRpb25fbWFzdGVyOgorICAgICAgIGxvYy0+bG9jX3R5cGUgPSBicF9sb2Nfc29m dHdhcmVfYnJlYWtwb2ludDsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBicF9oYXJkd2FyZV9i cmVha3BvaW50OgorQEAgLTU3MDgsOCArNTc2Miw3IEBAIG1ha2VfYnJlYWtwb2ludF9wZXJtYW5l bnQgKHN0cnVjdCBicmVha3AKKyB9CisgCisgLyogQ2FsbCB0aGlzIHJvdXRpbmUgd2hlbiBzdGVw cGluZyBhbmQgbmV4dGluZyB0byBlbmFibGUgYSBicmVha3BvaW50CistICAgaWYgd2UgZG8gYSBs b25nam1wKCkgaW4gVEhSRUFELiAgV2hlbiB3ZSBoaXQgdGhhdCBicmVha3BvaW50LCBjYWxsCist ICAgc2V0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQoKSB0byBmaWd1cmUgb3V0IHdoZXJlIHdl IGFyZSBnb2luZy4gKi8KKysgICBpZiB3ZSBkbyBhIGxvbmdqbXAoKSBvciAndGhyb3cnIGluIFRI UkVBRC4gICovCisgCisgdm9pZAorIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQp CitAQCAtNTcyMiwxMSArNTc3NSwxMiBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhy ZWFkKQorICAgICAgY2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHJlcXVl c3RlZCB0aHJlYWQuICAqLworICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCisgICAg IGlmIChiLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCistCSYmIGItPnR5cGUgPT0g YnBfbG9uZ2ptcF9tYXN0ZXIpCisrCSYmIChiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyCisr CSAgICB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpKQorICAgICAgIHsKKyAJc3Ry dWN0IGJyZWFrcG9pbnQgKmNsb25lID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKGIpOwor IAorLQljbG9uZS0+dHlwZSA9IGJwX2xvbmdqbXA7CisrCWNsb25lLT50eXBlID0gYi0+dHlwZSA9 PSBicF9sb25nam1wX21hc3RlciA/IGJwX2xvbmdqbXAgOiBicF9leGNlcHRpb247CisgCWNsb25l LT50aHJlYWQgPSB0aHJlYWQ7CisgICAgICAgfQorIH0KK0BAIC01NzM4LDcgKzU3OTIsNyBAQCBk ZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQorICAgc3RydWN0IGJyZWFrcG9p bnQgKmIsICp0ZW1wOworIAorICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCistICAg IGlmIChiLT50eXBlID09IGJwX2xvbmdqbXApCisrICAgIGlmIChiLT50eXBlID09IGJwX2xvbmdq bXAgfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb24pCisgICAgICAgeworIAlpZiAoYi0+dGhyZWFk ID09IHRocmVhZCkKKyAJICBkZWxldGVfYnJlYWtwb2ludCAoYik7CitAQCAtNjkxMyw2ICs2OTY3 LDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisgICAgICAgY2FzZSBicF9maW5p c2g6CisgICAgICAgY2FzZSBicF9sb25nam1wOgorICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1 bWU6CisrICAgICAgY2FzZSBicF9leGNlcHRpb246CisrICAgICAgY2FzZSBicF9leGNlcHRpb25f cmVzdW1lOgorICAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CisgICAgICAgY2FzZSBicF9jYWxs X2R1bW15OgorICAgICAgIGNhc2UgYnBfc3RkX3Rlcm1pbmF0ZToKK0BAIC02OTI0LDYgKzY5ODAs NyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKKyAgICAgICBjYXNlIGJwX2xvbmdq bXBfbWFzdGVyOgorICAgICAgIGNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CisgICAgICAg Y2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgorKyAgICAgIGNhc2UgYnBfZXhjZXB0 aW9uX21hc3RlcjoKKyAJYnJlYWs7CisgICAgICAgfQorIAorQEAgLTg1OTgsNiArODY1NSw3IEBA IHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl8KKyB7CisgICBzdHJ1Y3Qg YnJlYWtwb2ludCAqYnJlYWtwb2ludDsKKyAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50 MjsKKysgIGludCB0aHJlYWRfbnVtOworIH07CisgCisgLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgYnkgZmV0Y2hfaW5mZXJpb3JfZXZlbnQgdmlhIHRoZQorQEAgLTg2MTIsNiArODY3MCw3IEBA IHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICoKKyAgIGRlbGV0ZV9icmVh a3BvaW50IChhLT5icmVha3BvaW50KTsKKyAgIGlmIChhLT5icmVha3BvaW50MikKKyAgICAgZGVs ZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQyKTsKKysgIGRlbGV0ZV9sb25nam1wX2JyZWFr cG9pbnQgKGEtPnRocmVhZF9udW0pOworIH0KKyAKKyB2b2lkCitAQCAtODYyMyw2ICs4NjgyLDgg QEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbQorICAgc3RydWN0IGJy ZWFrcG9pbnQgKmJyZWFrcG9pbnQ7CisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDIg PSBOVUxMOworICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKysgIGludCB0aHJlYWQ7Cisr ICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOworIAorICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7 CisgCitAQCAtODY2MSw2ICs4NzIyLDkgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJn LCBpbnQgZnJvbQorIAorICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3Bv aW50IChicmVha3BvaW50KTsKKyAKKysgIHRwID0gaW5mZXJpb3JfdGhyZWFkICgpOworKyAgdGhy ZWFkID0gdHAtPm51bTsKKysKKyAgIC8qIEtlZXAgd2l0aGluIHRoZSBjdXJyZW50IGZyYW1lLCBv ciBpbiBmcmFtZXMgY2FsbGVkIGJ5IHRoZSBjdXJyZW50CisgICAgICBvbmUuICAqLworIAorQEAg LTg2NzMsNiArODczNywxMCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBm cm9tCisgCQkJCQkgICAgICBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSksCisgCQkJCQkg ICAgICBicF91bnRpbCk7CisgICAgICAgbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChi cmVha3BvaW50Mik7CisrCisrICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsK KysgICAgICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGZyYW1lX3Vud2luZF9jYWxsZXJfaWQgKGZy YW1lKTsKKysgICAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xl YW51cCwgJnRocmVhZCk7CisgICAgIH0KKyAKKyAgIHByb2NlZWQgKC0xLCBUQVJHRVRfU0lHTkFM X0RFRkFVTFQsIDApOworQEAgLTg2ODksNiArODc1Nyw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb20KKyAKKyAgICAgICBhcmdzLT5icmVha3BvaW50ID0gYnJlYWtw b2ludDsKKyAgICAgICBhcmdzLT5icmVha3BvaW50MiA9IGJyZWFrcG9pbnQyOworKyAgICAgIGFy Z3MtPnRocmVhZF9udW0gPSB0aHJlYWQ7CisgCisgICAgICAgZGlzY2FyZF9jbGVhbnVwcyAob2xk X2NoYWluKTsKKyAgICAgICBhZGRfY29udGludWF0aW9uIChpbmZlcmlvcl90aHJlYWQgKCksCitA QCAtOTk0MCw2ICsxMDAwOSw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSkKKyAJICAgICYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAorIAkgICAgJiYgYi0+ dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgorIAkgICAgJiYgYi0+dHlwZSAhPSBicF9zdGRfdGVy bWluYXRlX21hc3RlcgorKwkgICAgJiYgYi0+dHlwZSAhPSBicF9leGNlcHRpb25fbWFzdGVyCisg CSAgICAmJiBiLT5udW1iZXIgPj0gMCkKKyAJICB7CisgCSAgICBicmVha3NfdG9fZGVsZXRlID0g MTsKK0BAIC05OTYxLDYgKzEwMDMxLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50 IGZyb21fdHR5KQorIAkJJiYgYi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50CisgCQkmJiBiLT50 eXBlICE9IGJwX2xvbmdqbXBfbWFzdGVyCisgCQkmJiBiLT50eXBlICE9IGJwX3N0ZF90ZXJtaW5h dGVfbWFzdGVyCisrCQkmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKKyAJCSYmIGIt Pm51bWJlciA+PSAwKQorIAkgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CisgCSAgfQorQEAg LTEwNDcwLDYgKzEwNTQxLDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQor ICAgICBjYXNlIGJwX292ZXJsYXlfZXZlbnQ6CisgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6 CisgICAgIGNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CisrICAgIGNhc2UgYnBfZXhjZXB0 aW9uX21hc3RlcjoKKyAgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CisgICAgICAgYnJlYWs7 CisgCitAQCAtMTA0OTMsNiArMTA1NjUsOCBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQg KmJpbnQpCisgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CisgICAgIGNhc2UgYnBfbG9uZ2ptcDoK KyAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKKysgICAgY2FzZSBicF9leGNlcHRpb246Cisr ICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKKyAgICAgY2FzZSBicF9qaXRfZXZlbnQ6Cisg ICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKKyAgICAgICBicmVhazsKK0BA IC0xMDUzNyw2ICsxMDYxMSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0ICh2b2lkKQorICAgY3JlYXRl X2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJzaWdsb25nam1wIik7CisgICBjcmVhdGVfbG9u Z2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoIl9zaWdsb25nam1wIik7CisgICBjcmVhdGVfc3RkX3Rl cm1pbmF0ZV9tYXN0ZXJfYnJlYWtwb2ludCAoInN0ZDo6dGVybWluYXRlKCkiKTsKKysgIGNyZWF0 ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQgKCk7CisgfQorIAwKKyAvKiBSZXNldCB0aGUg dGhyZWFkIG51bWJlciBvZiB0aGlzIGJyZWFrcG9pbnQ6CitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvYnJlYWtwb2ludC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi41MC4yMDEwMTEx Ni5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMC0xMS0xNyAwMjozODo1OS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9icmVha3BvaW50LmgJMjAxMC0xMS0xNyAw MjozOToxOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC02MSw2ICs2MSwxMyBAQCBlbnVtIGJwdHlwZQor ICAgICBicF9sb25nam1wLAkJCS8qIHNlY3JldCBicmVha3BvaW50IHRvIGZpbmQgbG9uZ2ptcCgp ICovCisgICAgIGJwX2xvbmdqbXBfcmVzdW1lLAkJLyogc2VjcmV0IGJyZWFrcG9pbnQgdG8gZXNj YXBlIGxvbmdqbXAoKSAqLworIAorKyAgICAvKiBBbiBpbnRlcm5hbCBicmVha3BvaW50IHRoYXQg aXMgaW5zdGFsbGVkIG9uIHRoZSB1bndpbmRlcidzCisrICAgICAgIGRlYnVnIGhvb2suICAqLwor KyAgICBicF9leGNlcHRpb24sCisrICAgIC8qIEFuIGludGVybmFsIGJyZWFrcG9pbnQgdGhhdCBp cyBzZXQgYXQgdGhlIHBvaW50IHdoZXJlIGFuCisrICAgICAgIGV4Y2VwdGlvbiB3aWxsIGxhbmQu ICAqLworKyAgICBicF9leGNlcHRpb25fcmVzdW1lLAorKworICAgICAvKiBVc2VkIGJ5IHdhaXRf Zm9yX2luZmVyaW9yIGZvciBzdGVwcGluZyBvdmVyIHN1YnJvdXRpbmUgY2FsbHMsIGZvcgorICAg ICAgICBzdGVwcGluZyBvdmVyIHNpZ25hbCBoYW5kbGVycywgYW5kIGZvciBza2lwcGluZyBwcm9s b2d1ZXMuICAqLworICAgICBicF9zdGVwX3Jlc3VtZSwKK0BAIC0xMzAsNiArMTM3LDkgQEAgZW51 bSBicHR5cGUKKyAgICAgLyogTWFzdGVyIGNvcGllcyBvZiBzdGQ6OnRlcm1pbmF0ZSBicmVha3Bv aW50cy4gICovCisgICAgIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyLAorIAorKyAgICAvKiBMaWtl IGJwX2xvbmdqbXBfbWFzdGVyLCBidXQgZm9yIGV4Y2VwdGlvbnMuICAqLworKyAgICBicF9leGNl cHRpb25fbWFzdGVyLAorKworICAgICBicF9jYXRjaHBvaW50LAorIAorICAgICBicF90cmFjZXBv aW50LAorQEAgLTY3Miw2ICs2ODIsMTAgQEAgc3RydWN0IGJwc3RhdF93aGF0CisgICAgICAgIGNv bnRpbnVpbmcgZnJvbSBhIGNhbGwgZHVtbXkgd2l0aG91dCBwb3BwaW5nIHRoZSBmcmFtZSBpcyBu b3QgYQorICAgICAgICB1c2VmdWwgb25lKS4gICovCisgICAgIGVudW0gc3RvcF9zdGFja19raW5k IGNhbGxfZHVtbXk7CisrCisrICAgIC8qIFVzZWQgZm9yIEJQU1RBVF9XSEFUX1NFVF9MT05HSk1Q X1JFU1VNRS4gIFRydWUgaWYgd2UgYXJlCisrICAgICAgIGhhbmRsaW5nIGEgbG9uZ2ptcCwgZmFs c2UgaWYgd2UgYXJlIGhhbmRsaW5nIGFuIGV4Y2VwdGlvbi4gICovCisrICAgIGludCBpc19sb25n am1wOworICAgfTsKKyAKKyAvKiBUaGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBmb3IgcHJpbnRf YnBzdGF0LCBwcmludF9pdF9ub3JtYWwsCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv Z2RidGhyZWFkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2Ri L2dkYnRocmVhZC5oCTIwMTAtMTEtMDIgMDI6Mzc6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidGhyZWFkLmgJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAw MDAwMDAgKzAxMDAKK0BAIC0xODUsNiArMTg1LDEwIEBAIHN0cnVjdCB0aHJlYWRfaW5mbworICAg LyogVHJ1ZSBpZiB0aGlzIHRocmVhZCBoYXMgYmVlbiBleHBsaWNpdGx5IHJlcXVlc3RlZCB0byBz dG9wLiAgKi8KKyAgIGludCBzdG9wX3JlcXVlc3RlZDsKKyAKKysgIC8qIFRoZSBpbml0aWF0aW5n IGZyYW1lIG9mIGEgbmV4dGluZyBvcGVyYXRpb24sIHVzZWQgZm9yIGRlY2lkaW5nCisrICAgICB3 aGljaCBleGNlcHRpb25zIHRvIGludGVyY2VwdC4gICovCisrICBzdHJ1Y3QgZnJhbWVfaWQgaW5p dGlhdGluZ19mcmFtZTsKKysKKyAgIC8qIFByaXZhdGUgZGF0YSB1c2VkIGJ5IHRoZSB0YXJnZXQg dmVjdG9yIGltcGxlbWVudGF0aW9uLiAgKi8KKyAgIHN0cnVjdCBwcml2YXRlX3RocmVhZF9pbmZv ICpwcml2YXRlOworIAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZmNtZC5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9pbmZjbWQuYwkyMDEw LTA3LTAxIDE3OjM2OjE1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2luZmNtZC5jCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCitAQCAtODIy LDcgKzgyMiw3IEBAIG5leHRpX2NvbW1hbmQgKGNoYXIgKmNvdW50X3N0cmluZywgaW50IGYKKyAg IHN0ZXBfMSAoMSwgMSwgY291bnRfc3RyaW5nKTsKKyB9CisgCistc3RhdGljIHZvaWQKKyt2b2lk CisgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpCisgeworICAg aW50IHRocmVhZCA9ICogKGludCAqKSBhcmc7CitAQCAtODYyLDEwICs4NjIsMTMgQEAgc3RlcF8x IChpbnQgc2tpcF9zdWJyb3V0aW5lcywgaW50IHNpbmdsZQorIAorICAgaWYgKCFzaW5nbGVfaW5z dCB8fCBza2lwX3N1YnJvdXRpbmVzKQkJLyogbGVhdmUgc2kgY29tbWFuZCBhbG9uZSAqLworICAg ICB7CisrICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsK KysKKyAgICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQorICAJdGhyZWFk ID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7CisgCisgICAgICAgc2V0X2xvbmdq bXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgICAgICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdl dF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOworIAorICAgICAgIG1ha2VfY2xlYW51 cCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKKyAgICAgfQor QEAgLTEyMTksNiArMTIyMiwxNSBAQCBzaWduYWxfY29tbWFuZCAoY2hhciAqc2lnbnVtX2V4cCwg aW50IGZyCisgICBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgb3Vyc2lnLCAwKTsKKyB9CisgCisr LyogQSBjb250aW51YXRpb24gY2FsbGJhY2sgZm9yIHVudGlsX25leHRfY29tbWFuZC4gICovCisr Cisrc3RhdGljIHZvaWQKKyt1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQorK3sK KysgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBhcmc7CisrICBkZWxldGVfbG9uZ2ptcF9icmVh a3BvaW50ICh0cC0+bnVtKTsKKyt9CisrCisgLyogUHJvY2VlZCB1bnRpbCB3ZSByZWFjaCBhIGRp ZmZlcmVudCBzb3VyY2UgbGluZSB3aXRoIHBjIGdyZWF0ZXIgdGhhbgorICAgIG91ciBjdXJyZW50 IG9uZSBvciBleGl0IHRoZSBmdW5jdGlvbi4gIFdlIHNraXAgY2FsbHMgaW4gYm90aCBjYXNlcy4K KyAKK0BAIC0xMjM1LDYgKzEyNDcsOCBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0 eSkKKyAgIHN0cnVjdCBzeW1ib2wgKmZ1bmM7CisgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNh bDsKKyAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7CisrICBp bnQgdGhyZWFkID0gdHAtPm51bTsKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgCisg ICBjbGVhcl9wcm9jZWVkX3N0YXR1cyAoKTsKKyAgIHNldF9zdGVwX2ZyYW1lICgpOworQEAgLTEy NzAsNyArMTI4NCwxOSBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAKKyAg IHRwLT5zdGVwX211bHRpID0gMDsJCS8qIE9ubHkgb25lIGNhbGwgdG8gcHJvY2VlZCAqLworIAor KyAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2Zy YW1lID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAg KGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CisrCisgICBwcm9j ZWVkICgoQ09SRV9BRERSKSAtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAxKTsKKysKKysgIGlm ICh0YXJnZXRfY2FuX2FzeW5jX3AgKCkgJiYgaXNfcnVubmluZyAoaW5mZXJpb3JfcHRpZCkpCisr ICAgIHsKKysgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIGFkZF9j b250aW51YXRpb24gKHRwLCB1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiwgdHAsIE5VTEwpOworKyAg ICB9CisrICBlbHNlCisrICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworIH0KKyAKKyBzdGF0 aWMgdm9pZAorQEAgLTE0NjMsNiArMTQ4OSw3IEBAIGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlv biAodm9pZCAqYXJnKQorICAgaWYgKGJzICE9IE5VTEwgJiYgdHAtPnByb2NlZWRfdG9fZmluaXNo KQorICAgICBvYnNlcnZlcl9ub3RpZnlfbm9ybWFsX3N0b3AgKGJzLCAxIC8qIHByaW50IGZyYW1l ICovKTsKKyAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5icmVha3BvaW50KTsKKysgIGRlbGV0ZV9s b25nam1wX2JyZWFrcG9pbnQgKGluZmVyaW9yX3RocmVhZCAoKS0+bnVtKTsKKyB9CisgCisgc3Rh dGljIHZvaWQKK0BAIC0xNTQ2LDYgKzE1NzMsNyBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5 bWJvbCAqZnVuY3Rpb24sCisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKKyAgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgICBzdHJ1Y3QgZmluaXNoX2NvbW1hbmRfY29udGlu dWF0aW9uX2FyZ3MgKmNhcmdzOworKyAgaW50IHRocmVhZCA9IHRwLT5udW07CisgCisgICBzYWwg PSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsKKyAgIHNhbC5wYyA9IGdl dF9mcmFtZV9wYyAoZnJhbWUpOworQEAgLTE1NTYsNiArMTU4NCwxMCBAQCBmaW5pc2hfZm9yd2Fy ZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sCisgCisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFu dXBfZGVsZXRlX2JyZWFrcG9pbnQgKGJyZWFrcG9pbnQpOworIAorKyAgc2V0X2xvbmdqbXBfYnJl YWtwb2ludCAodGhyZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lk IChmcmFtZSk7CisrICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xl YW51cCwgJnRocmVhZCk7CisrCisgICB0cC0+cHJvY2VlZF90b19maW5pc2ggPSAxOyAgICAvKiBX ZSB3YW50IHN0b3BfcmVnaXN0ZXJzLCBwbGVhc2UuLi4gICovCisgICBjYXJncyA9IHhtYWxsb2Mg KHNpemVvZiAoKmNhcmdzKSk7CisgCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5m ZXJpb3IuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvaW5m ZXJpb3IuaAkyMDEwLTExLTE3IDAyOjM4OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL2luZmVyaW9yLmgJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0yOTksNiArMjk5LDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF9j b21tYW5kIChjaAorIAorIGV4dGVybiB2b2lkIGludGVycnVwdF90YXJnZXRfMSAoaW50IGFsbF90 aHJlYWRzKTsKKyAKKytleHRlcm4gdm9pZCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFu dXAgKHZvaWQgKmFyZyk7CisrCisgZXh0ZXJuIHZvaWQgZGV0YWNoX2NvbW1hbmQgKGNoYXIgKiwg aW50KTsKKyAKKyBleHRlcm4gdm9pZCBub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QsIGludCwg aW50KTsKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZydW4uYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0xMS0xNyAw MjozODo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZy dW4uYwkyMDEwLTExLTE3IDAyOjM5OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ1LDYgKzQ1LDgg QEAKKyAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKKyAjaW5jbHVkZSAic29saWIuaCIKKyAjaW5jbHVk ZSAibWFpbi5oIgorKyNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCisrI2luY2x1ZGUgImJsb2NrLmgi CisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAjaW5jbHVkZSAibWkvbWktY29tbW9uLmgiCisg I2luY2x1ZGUgImV2ZW50LXRvcC5oIgorQEAgLTIyMjksNiArMjIzMSw4IEBAIHN0YXRpYyB2b2lk IGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW4KKyAJCQkJCQkgIHN0cnVjdCBzeW10YWJfYW5k X2xpbmUgc3Jfc2FsLAorIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKKyBzdGF0aWMg dm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwg Q09SRV9BRERSKTsKKytzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3Qg ZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKKysJCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICos IHN0cnVjdCBzeW1ib2wgKik7CisgCisgc3RhdGljIHZvaWQgc3RvcF9zdGVwcGluZyAoc3RydWN0 IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOworIHN0YXRpYyB2b2lkIHByZXBhcmVfdG9f d2FpdCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOworQEAgLTQxMjEsMjMg KzQxMjUsMzMgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CisgCisgCWVjcy0+ZXZlbnRfdGhy ZWFkLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQgPSAxOworIAorLQlpZiAoIWdkYmFyY2hfZ2V0 X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFyY2gpCistCSAgICB8fCAhZ2RiYXJjaF9nZXRfbG9uZ2pt cF90YXJnZXQgKGdkYmFyY2gsIGZyYW1lLCAmam1wX2J1Zl9wYykpCisrCWlmICh3aGF0LmlzX2xv bmdqbXApCisgCSAgeworLQkgICAgaWYgKGRlYnVnX2luZnJ1bikKKy0JICAgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAorKwkgICAgaWYgKCFnZGJhcmNoX2dldF9sb25nam1w X3RhcmdldF9wIChnZGJhcmNoKQorKwkJfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChn ZGJhcmNoLAorKwkJCQkJCWZyYW1lLCAmam1wX2J1Zl9wYykpCisrCSAgICAgIHsKKysJCWlmIChk ZWJ1Z19pbmZydW4pCisrCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKKyBp bmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdq bXBfdGFyZ2V0KVxuIik7CistCSAgICBrZWVwX2dvaW5nIChlY3MpOworLQkgICAgcmV0dXJuOwor LQkgIH0KKysJCWtlZXBfZ29pbmcgKGVjcyk7CisrCQlyZXR1cm47CisrCSAgICAgIH0KKyAKKy0J LyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3VtZSBicmVha3Bv aW50CistCSAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50LiAgKi8KKy0JZGVsZXRl X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKysJICAgIC8qIFdl J3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUgYnJlYWtwb2ludAor KwkgICAgICAgd2l0aCBhIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLworKwkgICAgZGVs ZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKyAKKy0JLyog SW5zZXJ0IGEgYnJlYWtwb2ludCBhdCByZXN1bWUgYWRkcmVzcy4gICovCistCWluc2VydF9sb25n am1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKKysJICAgIC8qIElu c2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLworKwkgICAgaW5zZXJ0X2xv bmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFyY2gsIGptcF9idWZfcGMpOworKwkgIH0KKysJ ZWxzZQorKwkgIHsKKysJICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rp b24gKGZyYW1lKTsKKyAKKysJICAgIGlmIChmdW5jKQorKwkgICAgICBjaGVja19leGNlcHRpb25f cmVzdW1lIChlY3MsIGZyYW1lLCBmdW5jKTsKKysJICB9CisgCWtlZXBfZ29pbmcgKGVjcyk7Cisg CXJldHVybjsKKyAKK0BAIC00MTQ5LDYgKzQxNjMsNTMgQEAgaW5mcnVuOiBCUFNUQVRfV0hBVF9T RVRfTE9OR0pNUF9SRVNVTUUgKAorIAlnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+c3Rl cF9yZXN1bWVfYnJlYWtwb2ludCAhPSBOVUxMKTsKKyAJZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFr cG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKyAKKysJaWYgKCF3aGF0LmlzX2xvbmdqbXApCisr CSAgeworKwkgICAgLyogVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgdG8gY29uc2lkZXIuCisrCSAg ICAgICAKKysJICAgICAgIDEuIFRoZSBpbml0aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBleGlzdHMu ICBJbiB0aGlzIGNhc2UKKysJICAgICAgIHdlIG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0 aW9uIGhhcyBnb25lIHRvbyBmYXIuCisrCSAgICAgICAKKysJICAgICAgIDIuIFRoZSBpbml0aWF0 aW5nIGZyYW1lIGV4aXN0cywgYW5kIGlzIHRoZSBzYW1lIGFzIHRoZQorKwkgICAgICAgY3VycmVu dCBmcmFtZS4KKysJICAgICAgIAorKwkgICAgICAgMi4xLiBJZiB3ZSBhcmUgc3RlcHBpbmcsIGRl ZmVyIHRvIHRoZSBzdGVwcGluZyBsb2dpYy4KKysJICAgICAgIAorKwkgICAgICAgMi4yLiBPdGhl cndpc2UsIHdlIGFyZSBub3Qgc3RlcHBpbmcsIHNvIHdlIGFyZSBkb2luZyBhCisrCSAgICAgICAi ZmluaXNoIiBhbmQgd2UgaGF2ZSByZWFjaGVkIHRoZSBjYWxsaW5nIGZyYW1lLiAgU28sCisrCSAg ICAgICBzdG9wLgorKwkgICAgICAgCisrCSAgICAgICAzLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBl eGlzdHMgYW5kIGlzIGRpZmZlcmVudCBmcm9tCisrCSAgICAgICB0aGUgY3VycmVudCBmcmFtZS4g IFRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgorKwkgICAgICAgY2F1Z2h0IGJlbmVh dGggdGhlIGluaXRpYXRpbmcgZnJhbWUsIHNvIGtlZXAgZ29pbmcuICAqLworKwkgICAgc3RydWN0 IGZyYW1lX2luZm8gKmluaXRfZnJhbWUKKysJICAgICAgPSBmcmFtZV9maW5kX2J5X2lkIChlY3Mt PmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSk7CisrCSAgICBpZiAoaW5pdF9mcmFtZSkK KysJICAgICAgeworKwkJc3RydWN0IGZyYW1lX2lkIGN1cnJlbnRfaWQKKysJCSAgPSBnZXRfZnJh bWVfaWQgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKKysJCWlmIChmcmFtZV9pZF9lcSAoY3VycmVu dF9pZCwKKysJCQkJIGVjcy0+ZXZlbnRfdGhyZWFkLT5pbml0aWF0aW5nX2ZyYW1lKSkKKysJCSAg eworKwkJICAgIGlmIChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9yYW5nZV9zdGFydCkKKysJCSAg ICAgIHsKKysJCQkvKiBDYXNlIDIuMS4gICovCisrCQkJYnJlYWs7CisrCQkgICAgICB9CisrCQkg ICAgZWxzZQorKwkJICAgICAgeworKwkJCS8qIENhc2UgMi4yOiBmYWxsIHRocm91Z2guICAqLwor KwkJICAgICAgfQorKwkJICB9CisrCQllbHNlCisrCQkgIHsKKysJCSAgICAvKiBDYXNlIDMuICAq LworKwkJICAgIGtlZXBfZ29pbmcgKGVjcyk7CisrCQkgICAgcmV0dXJuOworKwkJICB9CisrCSAg ICAgIH0KKysJICB9CisrCisgCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAxOworIAlw cmludF9lbmRfc3RlcHBpbmdfcmFuZ2VfcmVhc29uICgpOworIAlzdG9wX3N0ZXBwaW5nIChlY3Mp OworQEAgLTUxMjcsNiArNTE4OCwxMDAgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9p bnQgKHN0cnVjdAorICAgICBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMgKGdkYmFyY2gs IHBjLCBicF9sb25nam1wX3Jlc3VtZSk7CisgfQorIAorKy8qIEluc2VydCBhbiBleGNlcHRpb24g cmVzdW1lIGJyZWFrcG9pbnQuICBUUCBpcyB0aGUgdGhyZWFkIHRocm93aW5nCisrICAgdGhlIGV4 Y2VwdGlvbi4gIFRoZSBibG9jayBCIGlzIHRoZSBibG9jayBvZiB0aGUgdW53aW5kZXIgZGVidWcg aG9vaworKyAgIGZ1bmN0aW9uLiAgRlJBTUUgaXMgdGhlIGZyYW1lIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGNhbGwgdG8gdGhpcworKyAgIGZ1bmN0aW9uLiAgU1lNIGlzIHRoZSBzeW1ib2wgb2YgdGhl IGZ1bmN0aW9uIGFyZ3VtZW50IGhvbGRpbmcgdGhlCisrICAgdGFyZ2V0IFBDIG9mIHRoZSBleGNl cHRpb24uICAqLworKworK3N0YXRpYyB2b2lkCisraW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJl YWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKKysJCQkJICAgIHN0cnVjdCBibG9jayAq YiwKKysJCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkJICAgIHN0cnVjdCBz eW1ib2wgKnN5bSkKKyt7CisrICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOworKworKyAgLyogV2Ug d2FudCB0byBpZ25vcmUgZXJyb3JzIGhlcmUuICAqLworKyAgVFJZX0NBVENIIChlLCBSRVRVUk5f TUFTS19BTEwpCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc3ltYm9sICp2c3ltOworKyAgICAgIHN0 cnVjdCB2YWx1ZSAqdmFsdWU7CisrICAgICAgQ09SRV9BRERSIGhhbmRsZXI7CisrICAgICAgc3Ry dWN0IGJyZWFrcG9pbnQgKmJwOworKworKyAgICAgIHZzeW0gPSBsb29rdXBfc3ltYm9sIChTWU1C T0xfTElOS0FHRV9OQU1FIChzeW0pLCBiLCBWQVJfRE9NQUlOLCBOVUxMKTsKKysgICAgICB2YWx1 ZSA9IHJlYWRfdmFyX3ZhbHVlICh2c3ltLCBmcmFtZSk7CisrICAgICAgLyogSWYgdGhlIHZhbHVl IHdhcyBvcHRpbWl6ZWQgb3V0LCByZXZlcnQgdG8gdGhlIG9sZCBiZWhhdmlvci4gICovCisrICAg ICAgaWYgKCEgdmFsdWVfb3B0aW1pemVkX291dCAodmFsdWUpKQorKwl7CisrCSAgaGFuZGxlciA9 IHZhbHVlX2FzX2FkZHJlc3MgKHZhbHVlKTsKKysKKysJICAvKiBXZSdyZSBnb2luZyB0byByZXBs YWNlIHRoZSBjdXJyZW50IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQKKysJICAgICB3aXRoIGFuIGV4 Y2VwdGlvbi1yZXN1bWUgYnJlYWtwb2ludC4gICovCisrCSAgZGVsZXRlX3N0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgKHRwKTsKKysKKysJICBpZiAoZGVidWdfaW5mcnVuKQorKwkgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0 ICVseFxuIiwKKysJCQkJKHVuc2lnbmVkIGxvbmcpIGhhbmRsZXIpOworKworKwkgIGJwID0gc2V0 X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZXRfZnJhbWVfYXJjaCAoZnJhbWUpLAorKwkJ CQkJICAgICAgIGhhbmRsZXIsIGJwX2V4Y2VwdGlvbl9yZXN1bWUpOworKwkgIGluZmVyaW9yX3Ro cmVhZCAoKS0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9IGJwOworKwl9CisrICAgIH0KKyt9Cisr CisrLyogVGhpcyBpcyBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gaW50ZXJjZXB0 ZWQuICBDaGVjayB0bworKyAgIHNlZSB3aGV0aGVyIHRoZSBleGNlcHRpb24ncyBkZXN0aW5hdGlv biBpcyBvZiBpbnRlcmVzdCwgYW5kIGlmIHNvLAorKyAgIHNldCBhbiBleGNlcHRpb24gcmVzdW1l IGJyZWFrcG9pbnQgdGhlcmUuICAqLworKworK3N0YXRpYyB2b2lkCisrY2hlY2tfZXhjZXB0aW9u X3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MsCisrCQkJc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLCBzdHJ1Y3Qgc3ltYm9sICpmdW5jKQorK3sKKysgIHN0cnVjdCBn ZGJfZXhjZXB0aW9uIGU7CisrCisrICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKKysg ICAgeworKyAgICAgIHN0cnVjdCBibG9jayAqYjsKKysgICAgICBzdHJ1Y3QgZGljdF9pdGVyYXRv ciBpdGVyOworKyAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKysgICAgICBpbnQgYXJnbm8gPSAw OworKworKyAgICAgIC8qIFRoZSBleGNlcHRpb24gYnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVj aWZpYyBicmVha3BvaW50IG9uCisrCSB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJl ZCBhczoKKysJIAorKwkgdm9pZCBfVW53aW5kX0RlYnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpo YW5kbGVyKTsKKysJIAorKwkgVGhlIENGQSBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRv IHdoaWNoIGNvbnRyb2wgaXMKKysJIGFib3V0IHRvIGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBp cyB0aGUgZGVzdGluYXRpb24gUEMuCisrCSAKKysJIFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQg YSB0ZW1wb3JhcnkgYnJlYWtwb2ludCBhdCBIQU5ETEVSLgorKwkgVGhpcyBpcyBub3QgZXh0cmVt ZWx5IGVmZmljaWVudCBidXQgaXQgYXZvaWRzIGlzc3VlcyBpbiBnZGIKKysJIHdpdGggY29tcHV0 aW5nIHRoZSBEV0FSRiBDRkEsIGFuZCBpdCBhbHNvIHdvcmtzIGV2ZW4gaW4gd2VpcmQKKysJIGNh c2VzIHN1Y2ggYXMgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCisr CSBoYW5kbGVyLiAgKi8KKysKKysgICAgICBiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsK KysgICAgICBBTExfQkxPQ0tfU1lNQk9MUyAoYiwgaXRlciwgc3ltKQorKwl7CisrCSAgaWYgKCFT WU1CT0xfSVNfQVJHVU1FTlQgKHN5bSkpCisrCSAgICBjb250aW51ZTsKKysKKysJICBpZiAoYXJn bm8gPT0gMCkKKysJICAgICsrYXJnbm87CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICBpbnNl cnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCwKKysJCQkJ CQkgIGIsIGZyYW1lLCBzeW0pOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQorKyAgICB9 CisrfQorKworIHN0YXRpYyB2b2lkCisgc3RvcF9zdGVwcGluZyAoc3RydWN0IGV4ZWN1dGlvbl9j b250cm9sX3N0YXRlICplY3MpCisgeworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYwkyMDEwLTExLTE3IDAyOjM5OjE5LjAwMDAw MDAwMCArMDEwMAorQEAgLTAsMCArMSwxODAgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKyAgICovCisrI2luY2x1ZGUgPGlvc3RyZWFtPgorKworK3VzaW5nIG5h bWVzcGFjZSBzdGQ7CisrCisrY2xhc3MgTmV4dE92ZXJUaHJvd0Rlcml2YXRlcworK3sKKysKKytw dWJsaWM6CisrCisrCisrICAvLyBTaW5nbGUgdGhyb3cgYW4gZXhjZXB0aW9uIGluIHRoaXMgZnVu Y3Rpb24uCisrICB2b2lkIGZ1bmN0aW9uMSgpIAorKyAgeworKyAgICB0aHJvdyAyMDsKKysgIH0K KysKKysgIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9uLgorKyAgdm9p ZCBmdW5jdGlvbjIoKSAKKysgIHsKKysgICAgZnVuY3Rpb24xKCk7CisrICB9CisrCisrICAvLyBU aHJvdyBhbiBleGNlcHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbiwgYnV0IGhhbmRsZSBpdAorKyAg Ly8gbG9jYWxseS4KKysgIHZvaWQgZnVuY3Rpb24zICgpIAorKyAgeworKyAgICB7CisrICAgICAg dHJ5CisrCXsKKysJICBmdW5jdGlvbjEgKCk7CisrCX0KKysgICAgICBjYXRjaCAoLi4uKSAKKysJ eworKwkgIGNvdXQgPDwgIkNhdWdodCBhbmQgaGFuZGxlZCBmdW5jdGlvbjEgZXhjZXB0aW9uIiA8 PCBlbmRsOworKwl9CisrICAgIH0KKysgIH0KKysKKysgIHZvaWQgcmV0aHJvdyAoKQorKyAgewor KyAgICB0cnkKKysgICAgICB7CisrCWZ1bmN0aW9uMSAoKTsKKysgICAgICB9CisrICAgIGNhdGNo ICguLi4pCisrICAgICAgeworKwl0aHJvdzsKKysgICAgICB9CisrICB9CisrCisrICB2b2lkIGZp bmlzaCAoKQorKyAgeworKyAgICAvLyBXZSB1c2UgdGhpcyB0byB0ZXN0IHRoYXQgYSAiZmluaXNo IiBoZXJlIGRvZXMgbm90IGVuZCB1cCBpbgorKyAgICAvLyB0aGlzIGZyYW1lLCBidXQgaW4gdGhl IG9uZSBhYm92ZS4KKysgICAgdHJ5CisrICAgICAgeworKwlmdW5jdGlvbjEgKCk7CisrICAgICAg fQorKyAgICBjYXRjaCAoaW50IHgpCisrICAgICAgeworKyAgICAgIH0KKysgICAgZnVuY3Rpb24x ICgpOwkJLy8gbWFya2VyIGZvciB1bnRpbAorKyAgfQorKworKyAgdm9pZCB1bnRpbCAoKQorKyAg eworKyAgICBmdW5jdGlvbjEgKCk7CisrICAgIGZ1bmN0aW9uMSAoKTsJCS8vIHVudGlsIGhlcmUK KysgIH0KKysKKyt9OworK05leHRPdmVyVGhyb3dEZXJpdmF0ZXMgbmV4dF9jYXNlczsKKysKKysK KytpbnQgbWFpbiAoKSAKKyt7IAorKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLmZ1 bmN0aW9uMSAoKTsKKysgICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgIC8vIERp c2NhcmQKKysgICAgfQorKworKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLmZ1bmN0 aW9uMiAoKTsKKysgICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgIC8vIERpc2Nh cmQKKysgICAgfQorKworKyAgdHJ5CisrICAgIHsKKysgICAgICAvLyBUaGlzIGlzIGR1cGxpY2F0 ZWQgc28gd2UgY2FuIG5leHQgb3ZlciBvbmUgYnV0IHN0ZXAgaW50bworKyAgICAgIC8vIGFub3Ro ZXIuCisrICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7CisrICAgIH0KKysgIGNhdGNoICgu Li4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJkCisrICAgIH0KKysKKysgIG5leHRfY2FzZXMu ZnVuY3Rpb24zICgpOworKworKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLnJldGhy b3cgKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJk CisrICAgIH0KKysKKysgIHRyeQorKyAgICB7CisrICAgICAgLy8gQW5vdGhlciBkdXBsaWNhdGUg c28gd2UgY2FuIHRlc3QgImZpbmlzaCIuCisrICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7 CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJkCisrICAg IH0KKysKKysgIC8vIEFub3RoZXIgdGVzdCBmb3IgImZpbmlzaCIuCisrICB0cnkKKysgICAgewor KyAgICAgIG5leHRfY2FzZXMuZmluaXNoICgpOworKyAgICB9CisrICBjYXRjaCAoLi4uKQorKyAg ICB7CisrICAgIH0KKysKKysgIC8vIFRlc3Qgb2YgInVudGlsIi4KKysgIHRyeQorKyAgICB7Cisr ICAgICAgbmV4dF9jYXNlcy5maW5pc2ggKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAg IHsKKysgICAgfQorKworKyAgLy8gVGVzdCBvZiAidW50aWwiIHdpdGggYW4gYXJndW1lbnQuCisr ICB0cnkKKysgICAgeworKyAgICAgIG5leHRfY2FzZXMudW50aWwgKCk7CisrICAgIH0KKysgIGNh dGNoICguLi4pCisrICAgIHsKKysgICAgfQorKworKyAgLy8gVGVzdCBvZiAiYWR2YW5jZSIuCisr ICB0cnkKKysgICAgeworKyAgICAgIG5leHRfY2FzZXMudW50aWwgKCk7CisrICAgIH0KKysgIGNh dGNoICguLi4pCisrICAgIHsKKysgICAgfQorK30KKysKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuZXhwCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi41 MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAkyMDEwLTExLTE3IDAy OjM5OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwxODIgQEAKKysjIENvcHlyaWdodCAy MDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysKKytpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKysg ICAgc3RyYWNlICR0cmFjZWxldmVsCisrfQorKworK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0g eyBjb250aW51ZSB9CisrCisrc2V0IHRlc3RmaWxlICJnZGI5NTkzIgorK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmNjCisrc2V0IGJpbmZpbGUgJG9iamRpci8kc3ViZGlyLyR0ZXN0ZmlsZQorKwor KyMgQ3JlYXRlIGFuZCBzb3VyY2UgdGhlIGZpbGUgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBh Ym91dCB0aGUgY29tcGlsZXIKKysjIHVzZWQgdG8gY29tcGlsZSB0aGUgdGVzdCBjYXNlLgorK2lm IFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9ICJjKysiXSB7CisrICAgIHVudGVzdGVkIGdk Yjk1OTMuZXhwCisrICAgIHJldHVybiAtMQorK30KKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVi dWcgYysrfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkIGdkYjk1OTMuZXhwCisrICAgIHJldHVy biAtMQorK30KKysKKysjIFNvbWUgdGFyZ2V0cyBjYW4ndCBkbyBmdW5jdGlvbiBjYWxscywgc28g ZG9uJ3QgZXZlbiBib3RoZXIgd2l0aCB0aGlzCisrIyB0ZXN0LgorK2lmIFt0YXJnZXRfaW5mbyBl eGlzdHMgZ2RiLGNhbm5vdF9jYWxsX2Z1bmN0aW9uc10geworKyAgICBzZXR1cF94ZmFpbCAiKi0q LSoiIDk1OTMKKysgICAgZmFpbCAiVGhpcyB0YXJnZXQgY2FuIG5vdCBjYWxsIGZ1bmN0aW9ucyIK KysgICAgY29udGludWUKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYg IVtydW50b19tYWluXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIK KysgICAgY29udGludWUKKyt9IAorKworKyMgU2VlIHdoZXRoZXIgd2UgaGF2ZSB0aGUgbmVlZGVk IHVud2luZGVyIGhvb2tzLgorK3NldCBvayAxCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IF9V bndpbmRfRGVidWdIb29rIiAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2siIHsKKysgICAgLXJlICI9 IC4qX1Vud2luZF9EZWJ1Z0hvb2suKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgImNoZWNr IGZvciB1bndpbmRlciBob29rIgorKyAgICB9CisrICAgIC1yZSAiTm8gc3ltYm9sIC4qIGluIGN1 cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgeworKwkjIFBhc3MgdGhlIHRlc3Qgc28g d2UgZG9uJ3QgZ2V0IGJvZ3VzIGZhaWxzIGluIHRoZSByZXN1bHRzLgorKwlwYXNzICJjaGVjayBm b3IgdW53aW5kZXIgaG9vayIKKysJc2V0IG9rIDAKKysgICAgfQorK30KKytpZiB7ISRva30gewor KyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAorKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBTZWUg aHR0cDovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD05NTkzCisrCisr Z2RiX3Rlc3QgIm5leHQiIFwKKysgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgICAibmV4dCBv dmVyIGEgdGhyb3cgMSIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5m dW5jdGlvbjIuKiIgXAorKyAgIm5leHQgcGFzdCBjYXRjaCAxIgorKworK2dkYl90ZXN0ICJuZXh0 IiBcCisrICAgICIuKmNhdGNoICguLi4pLioiIFwKKysgICAgIm5leHQgb3ZlciBhIHRocm93IDIi CisrCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwK KysgICJuZXh0IHBhc3QgY2F0Y2ggMiIKKysKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgIi4qZnVu Y3Rpb24xKCkuKiIgXAorKyAgInN0ZXAgaW50byBmdW5jdGlvbjIgMSIKKysKKytnZGJfdGVzdCAi bmV4dCIgXAorKyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAgICJuZXh0IG92ZXIgYSB0aHJv dyAzIgorKworK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMy4q IiBcCisrICAibmV4dCBwYXN0IGNhdGNoIDMiCisrCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIu Km5leHRfY2FzZXMucmV0aHJvdy4qIiBcCisrICAgICJuZXh0IG92ZXIgYSB0aHJvdyA0IgorKwor K2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAibmV4dCBvdmVy IGEgcmV0aHJvdyIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5mdW5j dGlvbjIuKiIgXAorKyAgIm5leHQgYWZ0ZXIgYSByZXRocm93IgorKworK2dkYl90ZXN0ICJzdGVw IiBcCisrICAiLipmdW5jdGlvbjEoKS4qIiBcCisrICAic3RlcCBpbnRvIGZ1bmN0aW9uMiAyIgor KworK2dkYl90ZXN0ICJmaW5pc2giIFwKKysgICIuKmNhdGNoICguLi4pLioiIFwKKysgICJmaW5p c2ggMSIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5maW5pc2ggKCku KiIgXAorKyAgIm5leHQgcGFzdCBjYXRjaCA0IgorKworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAi LipmdW5jdGlvbjEgKCkuKiIgXAorKyAgInN0ZXAgaW50byBmaW5pc2ggbWV0aG9kIgorKworK2dk Yl90ZXN0ICJmaW5pc2giIFwKKysgICIuKmNhdGNoICguLi4pLioiIFwKKysgICJmaW5pc2ggMiIK KysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5maW5pc2ggKCkuKiIgXAor KyAgIm5leHQgcGFzdCBjYXRjaCA1IgorKworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAiLipmdW5j dGlvbjEgKCkuKiIgXAorKyAgInN0ZXAgaW50byBmaW5pc2gsIGZvciB1bnRpbCIKKysKKytnZGJf dGVzdCAidW50aWwiIFwKKysgICIuKmNhdGNoIC5pbnQgeC4qIiBcCisrICAidW50aWwgd2l0aCBu byBhcmd1bWVudCAxIgorKworK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIg Zm9yIHVudGlsIiAkdGVzdGZpbGUuY2NdCisrCisrZ2RiX3Rlc3QgInVudGlsICRsaW5lIiBcCisr ICAiLipmdW5jdGlvbjEgKCkuKiIgXAorKyAgIm5leHQgcGFzdCBjYXRjaCA2IgorKworK2dkYl90 ZXN0ICJ1bnRpbCIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgInVudGlsIHdpdGggbm8g YXJndW1lbnQgMiIKKysKKytzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAidW50aWwgaGVy ZSIgJHRlc3RmaWxlLmNjXQorKworK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2Vz LnVudGlsICgpLioiIFwKKysgICJuZXh0IHBhc3QgY2F0Y2ggNiIKKysKKytnZGJfdGVzdCAic3Rl cCIgXAorKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKKysgICJzdGVwIGludG8gdW50aWwiCisrCisr Z2RiX3Rlc3QgInVudGlsICRsaW5lIiBcCisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAidW50 aWwtb3Zlci10aHJvdyIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy51 bnRpbCAoKS4qIiBcCisrICAibmV4dCBwYXN0IGNhdGNoIDciCisrCisrZ2RiX3Rlc3QgInN0ZXAi IFwKKysgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCisrICAic3RlcCBpbnRvIHVudGlsLCBmb3IgYWR2 YW5jZSIKKysKKytnZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAorKyAgIi4qY2F0Y2ggKC4uLiku KiIgXAorKyAgImFkdmFuY2Utb3Zlci10aHJvdyIKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5leHAJMjAxMC0xMS0xNyAwMjozOTox OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsNzQgQEAKKysjIENvcHlyaWdodCAyMDA5LCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKytpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKysgIHN0cmFjZSAkdHJhY2Vs ZXZlbAorK30KKysKKytsb2FkX2xpYiAiamF2YS5leHAiCisrCisrc2V0IHRlc3RmaWxlICJqbnBl IgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmphdmEKKytzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYgIHsgW2NvbXBpbGVfamF2YV9mcm9tX3NvdXJjZSAk e3NyY2Rpcn0vJHN1YmRpci8ke3NyY2ZpbGV9ICR7YmluZmlsZX0gIi1nIl0gIT0gIiIgfSB7Cisr ICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZGlyfS8kc3ViZGlyLyR7c3JjZmls ZX0iCisrICAgIHJldHVybiAtMQorK30KKysKKysjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCisr CisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisrc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9u dW1iZXIgImJyZWFrIGhlcmUiICR0ZXN0ZmlsZS5qYXZhXQorK2dkYl90ZXN0ICJicmVhayAkdGVz dGZpbGUuamF2YTokbGluZSIgIiIKKysKKytnZGJfdGVzdCAicnVuIiBcCisrICAiLy8gYnJlYWsg aGVyZS4qIiBcCisrICAicnVuIGphdmEgbmV4dC1vdmVyLXRocm93IgorKworKyMgU2VlIHdoZXRo ZXIgd2UgaGF2ZSB0aGUgbmVlZGVkIHVud2luZGVyIGhvb2tzLgorK3NldCBvayAxCisrZ2RiX3Rl c3RfbXVsdGlwbGUgInByaW50IF9VbndpbmRfRGVidWdIb29rIiAiY2hlY2sgZm9yIHVud2luZGVy IGhvb2sgaW4gamF2YSIgeworKyAgICAtcmUgIj0gLipfVW53aW5kX0RlYnVnSG9vay4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIK KysgICAgfQorKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4k Z2RiX3Byb21wdCAkIiB7CisrCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMg ZmFpbHMgaW4gdGhlIHJlc3VsdHMuCisrCXNldHVwX3hmYWlsICotKi0qCisrCWZhaWwgImNoZWNr IGZvciB1bndpbmRlciBob29rIGluIGphdmEiCisrCXNldCBvayAwCisrICAgIH0KKyt9CisraWYg eyEkb2t9IHsKKysgICAgdW50ZXN0ZWQgam5wZS5leHAKKysgICAgcmV0dXJuIC0xCisrfQorKwor K2dkYl90ZXN0ICJoYW5kbGUgU0lHU0VHViBub3N0b3Agbm9wcmludCIgXAorKyAgIlNJR1NFR1Yu KmZhdWx0IiBcCisrICAiZGlzYWJsZSBTSUdTRUdWIGZvciBuZXh0LW92ZXItTlBFIgorKworKyMg VGhlIGxpbmUgd2hlcmUgd2Ugc3RvcCBkaWZmZXIgYWNjb3JkaW5nIHRvIGdjajsgY2hlY2sganVz dCB3ZSBkaWQgbm90IGFscmVhZHkKKysjIGV4ZWN1dGUgdGhlIGNhdGNoIHBvaW50LgorKworK2dk Yl90ZXN0ICJuZXh0IiBcCisrICAiIiBcCisrICAibmV4dCBvdmVyIE5QRSIKKysKKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiY2F0Y2ggcG9pbnQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJjYXRjaCBwb2ludCIgIi4qLy8gY2F0Y2ggcG9pbnQuKiIKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5qYXZhCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUu amF2YQkyMDEwLTExLTE3IDAyOjM5OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwzOCBA QAorKy8vIFRlc3QgbmV4dC1vdmVyLU5QRS4KKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKyAgICovCisrCisrcHVibGljIGNsYXNzIGpucGUKKyt7CisrICBwdWJsaWMgc3RhdGlj IFN0cmluZyBucGUgKCkKKysgIHsKKysgICAgcmV0dXJuICgoT2JqZWN0KSBudWxsKS50b1N0cmlu ZygpOworKyAgfQorKworKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3Mp CisrICB7CisrICAgIHRyeQorKyAgICAgIHsKKysJU3lzdGVtLm91dC5wcmludGxuIChucGUgKCkp OyAvLyBicmVhayBoZXJlCisrICAgICAgfQorKyAgICBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRp b24gbikKKysgICAgICB7CisrCVN5c3RlbS5vdXQucHJpbnRsbiAoInN1Y2Nlc3MiKTsgLy8gY2F0 Y2ggcG9pbnQKKysgICAgICB9CisrICB9CisrfQoKZGlmZiAtLWdpdCBhL2dkYi1wcjEyMDI4LWRv dWJsZS1mcmVlLnBhdGNoIGIvZ2RiLXByMTIwMjgtZG91YmxlLWZyZWUucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlYjIxMTUuLjAwMDAwMDAKLS0tIGEvZ2RiLXByMTIwMjgt ZG91YmxlLWZyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDMyMS5odG1sCi1TdWJq ZWN0OiBbcGF0Y2hdIFBSIDEyMDI4ICJHREIgY3Jhc2hlcyBvbiBhIGRvdWJsZSBmcmVlIGR1cmlu ZyBvdmVybG9hZCByZXNvbHV0aW9uIgotCi1vbGRfY2xlYW51cHMgd2FzIGJlaW5nIHNldCB0d2lj ZSBtYWtpbmcgdGhlIGxhdGVyIGNhbGwgdG8gCi1kaXNjYXJkX2NsZWFudXBzIGlnbm9yZSB0aGUg Zmlyc3QgJ21ha2VfY2xlYW51cCcgcmVxdWVzdC4KLQotVGhlIHBhdGNoIGlzIHByb3Bvc2VkIGZv ciBib3RoIGhlYWQgYW5kIHRoZSA3LjIgYnJhbmNoLgotCi1UaGlzIGhhcyBiZWVuIHJlZ3Jlc3Np b24gdGVzdGVkIG9uIHg4NjY0IHdpdGggZ2NjLTQuNC40LTEwLmZjMTMKLQotCi1GaXggUFIgMTIw Mjg6ICJHREIgY3Jhc2hlcyBvbiBhIGRvdWJsZSBmcmVlIGR1cmluZyBvdmVybG9hZCByZXNvbHV0 aW9uICIKLQotMjAxMC0wOS0xNiAgU2FtaSBXYWdpYWFsbGEgIDxzd2FnaWFhbEByZWRoYXQuY29t PgotCi0JUFIgQysrLzEyMDI4Ci0JKiB2YWxvcHMuYyAoZmluZF9vbG9hZF9jaGFtcF9uYW1lc3Bh Y2VfbG9vcCk6IHJlbW92ZWQgaW5jb3JyZWN0Ci0JJ29sZF9jbGVhbnVwcycgcmVhc3NpZ25tZW50 LgotCi0yMDEwLTA5LTE2ICBTYW1pIFdhZ2lhYWxsYSAgPHN3YWdpYWFsQHJlZGhhdC5jb20+Ci0K LQkqIGdkYi5jcC9wcjEyMDI4LmNjOiBOZXcuCi0JKiBnZGIuY3AvcHIxMjAyOC5leHA6IE5ldy4K LQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIwMjguY2MgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9wcjEyMDI4LmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uMGZjYWI2YgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av cHIxMjAyOC5jYwotQEAgLTAsMCArMSwyMSBAQAotK2NsYXNzIEF7fTsKLStjbGFzcyBCe307Ci0r Y2xhc3MgQzogcHVibGljIEIge307Ci0rCi0rbmFtZXNwYWNlIER7Ci0rICBpbnQgZm9vIChBKSB7 IHJldHVybiAxMTsgfQotKyAgaW50IGZvbyAoQykgeyByZXR1cm4gMTI7IH0KLSt9Ci0rCi0raW50 IG1haW4oKQotK3sKLSsgIEEgYTsKLSsgIEIgYjsKLSsgIEMgYzsKLSsKLSsgIEQ6OmZvbyAoYSk7 Ci0rICAvLyAgRDo6Zm9vIChiKTsKLSsgIEQ6OmZvbyAoYyk7Ci0rCi0rICByZXR1cm4gMDsKLSt9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjAyOC5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9wcjEyMDI4LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjc0NmM2YjUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L3ByMTIwMjguZXhwCi1AQCAtMCwwICsxLDI5IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rCi0rc2V0IHRlc3RmaWxlIHByMTIwMjgKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwot K2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7 c3JjZmlsZX0ge2RlYnVnIGMrK31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsKLStpZiAhW3J1bnRvX21h aW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4i Ci0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl90ZXN0ICJwIEQ6OmZvbyhiKSIgIkNhbm5vdCBy ZXNvbHZlIGZ1bmN0aW9uIGZvbyB0byBhbnkgb3ZlcmxvYWRlZCBpbnN0YW5jZSIKLWRpZmYgLS1n aXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4IDdmYmFkMTAuLjRlODNhMDQg MTAwNjQ0Ci0tLS0gYS9nZGIvdmFsb3BzLmMKLSsrKyBiL2dkYi92YWxvcHMuYwotQEAgLTI3MTUs NyArMjcxNSw3IEBAIGZpbmRfb2xvYWRfY2hhbXBfbmFtZXNwYWNlX2xvb3AgKHN0cnVjdCB0eXBl ICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCi0gICAgICBmdW5jdGlvbiBzeW1ib2wgdG8gc3RhcnQg b2ZmIHdpdGguKSAgKi8KLSAKLSAgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUs ICpvbG9hZF9zeW1zKTsKLS0gIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsICpv bG9hZF9jaGFtcF9idik7Ci0rICBtYWtlX2NsZWFudXAgKHhmcmVlLCAqb2xvYWRfY2hhbXBfYnYp OwotICAgbmV3X25hbWVzcGFjZSA9IGFsbG9jYSAobmFtZXNwYWNlX2xlbiArIDEpOwotICAgc3Ry bmNweSAobmV3X25hbWVzcGFjZSwgcXVhbGlmaWVkX25hbWUsIG5hbWVzcGFjZV9sZW4pOwotICAg bmV3X25hbWVzcGFjZVtuYW1lc3BhY2VfbGVuXSA9ICdcMCc7CgpkaWZmIC0tZ2l0IGEvZ2RiLXB5 dGhvbi1lcnJvci1zdGF0ZS5wYXRjaCBiL2dkYi1weXRob24tZXJyb3Itc3RhdGUucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZGY1MTguLjAwMDAwMDAKLS0tIGEvZ2RiLXB5 dGhvbi1lcnJvci1zdGF0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5MiArMCwwIEBACi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0xMC9tc2cwMDE3NS5odG1s Ci1TdWJqZWN0OiBSZTogW3BhdGNoXSBweXRob246IHNhdmUvcmVzdG9yZS9maXggZXJyb3Igc3Rh dGUKLQotT24gRnJpLCAwOCBPY3QgMjAxMCAyMjowODoyNyArMDIwMCwgRG91ZyBFdmFucyB3cm90 ZToKLT4gVGhlIGNvbW1lbnQgYWJvdmUgdGhpcyBjb2RlIHNheXM6Ci0+IAotPiAgIC8qIE5vdGU6 IElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBh bmQKLT4gICAgICBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KLT4gCi0+IElTVE0gdGhh dCBlaXRoZXIgdGhpcyBjb21tZW50IGlzIHdyb25nIG9yIHRoZSBhYm92ZSBwYXRjaCBpcyB3cm9u Zywgb3IKLT4gc29tZSBjb21iaW5hdGlvbiB0aGVyZW9mLgotCi1UaGlzIGNvbW1lbnQgaXMgcmln aHQsIFB5dGhvbiBoYXMgbm8gYnVnIHRoZXJlLCBvdGhlciBnZGIvcHl0aG9uLyBjb2RlIGhhcwot YnVncy4gIFRoYXQgaXMgc29tZSBnZGIvcHl0aG9uLyBjb2RlIHJldHVybmVkIHN1Y2Nlc3MgdmFs dWUgd2hpbGUgc3RpbGwKLWxlYXZpbmcgdGhlIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgU3VjaCBj YXNlIGlzIHVuZGVmaW5lZCBhbmQgdW5jaGVja2VkIGJ5Ci1QeXRob24uICBQeXRob24gZXJyb3Ig c3RhdGUgZG9lcyBub3QgZm9sbG93IHRoZSBlcnJubyBQT1NJWCBzZW1hbnRpY3MKLQlUaGUgc2V0 dGluZyBvZiBlcnJubyBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhIGZ1bmN0aW9uIGlzCi0J dW5zcGVjaWZpZWQgWy4uLl0uCi1hcyBQeXRob24gcmVxdWlyZXMgaW5zdGVhZDoKLQlUaGUgUHl0 aG9uIGVycm9yIHN0YXRlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGEgZnVuY3Rpb24gbXVz dCBiZQotCWNsZWFyZWQuCi0KLUkgaGF2ZSBjaGVja2VkIGNhbGxlcnMgb2YgdGhlc2UgZnVuY3Rp b25zLCBhcyBhIGNsb3N1cmUgb24gdGhlIGNhbGxlcnMgb2YgdGhlCi10b3AgcHktdXRpbHMuYyBm dW5jdGlvbnMuICBUaGF0IGRvZXMgbm90IG1lYW4gdGhpcyBQeXRob24gZXJyb3Igc3RhdGUgaGFu ZGxpbmcKLXZlcmlmaWNhdGlvbiBpcyBjb21wbGV0ZToKLQlweXRob25fc3RyaW5nX3RvX3VuaWNv ZGUgdW5pY29kZV90b19lbmNvZGVkX3N0cmluZwotCXVuaWNvZGVfdG9fZW5jb2RlZF9weXRob25f c3RyaW5nIHVuaWNvZGVfdG9fdGFyZ2V0X3N0cmluZwotCXVuaWNvZGVfdG9fdGFyZ2V0X3B5dGhv bl9zdHJpbmcgcHl0aG9uX3N0cmluZ190b190YXJnZXRfc3RyaW5nCi0JcHl0aG9uX3N0cmluZ190 b190YXJnZXRfcHl0aG9uX3N0cmluZyBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nCi0JdGFy Z2V0X3N0cmluZ190b191bmljb2RlIGdkYnB5X29ial90b19zdHJpbmcgZ2RicHlfZXhjZXB0aW9u X3RvX3N0cmluZwotCWdldF9hZGRyX2Zyb21fcHl0aG9uIGNvbnZlcnRfdmFsdWVfZnJvbV9weXRo b24gZnJhcHlfcmVhZF92YXIKLQlnZGJweV9nZXRfZGlzcGxheV9oaW50IHZhbHB5X2dldGl0ZW0g RklYTUUgc2V0X3BhcmFtZXRlcl92YWx1ZQotCWNvbXB1dGVfZW51bV92YWx1ZXMgaW5mcHlfcmVh ZF9tZW1vcnkgaW5mcHlfd3JpdGVfbWVtb3J5Ci0JaW5mcHlfc2VhcmNoX21lbW9yeSB2YWxweV9u ZXcgdmFscHlfY2FsbCB2YWxweV9iaW5vcCB2YWxweV9yaWNoY29tcGFyZQotCXByZXR0eV9wcmlu dF9vbmVfdmFsdWUgc2V0X2F0dHIgcGFybXB5X2luaXQKLQotVGhlcmVmb3JlIEkgaGF2ZSByZW1v dmVkIHRoZSBjaGVjayBhZnRlciBQeVJ1bl9TaW1wbGVGaWxlLgotCi1ObyByZWdyZXNzaW9ucyBv biB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCi0K LQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0xMC0wOSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBweXRob24vcHktYnJlYWtwb2ludC5jIChi cHB5X3NldF9jb25kaXRpb24pOiBOZXcgY29tbWVudC4KLQkqIHB5dGhvbi9weS1jbWQuYyAoY21k cHlfZnVuY3Rpb24pOiBDYWxsIGFsc28gZ2RicHlfcHJpbnRfc3RhY2sgZm9yCi0JZmFpbGVkIFB5 VW5pY29kZV9EZWNvZGUuCi0JKGNtZHB5X2NvbXBsZXRlcik6IFNraXAgZWxlbWVudCBmb3IgZmFp bGVkCi0JcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZy4KLQkoY21kcHlfaW5pdCk6IFJldHVy biAtMSBvbiBmYWlsZWQgcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZy4KLQkqIHB5dGhvbi9w eS1mcmFtZS5jIChmcmFweV9yZWFkX3Zhcik6IEV4dGVuZCB0aGUgZnVuY3Rpb24gY29tbWVudC4K LQkqIHB5dGhvbi9weS1mdW5jdGlvbi5jIChmbnB5X2luaXQpOiBSZXR1cm4gLTEgb24gZmFpbGVk Ci0JcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZy4KLQkqIHB5dGhvbi9weS1pbmZlcmlvci5j IChpbmZweV9yZWFkX21lbW9yeSwgaW5mcHlfd3JpdGVfbWVtb3J5KTogRXh0ZW5kCi0JdGhlIGZ1 bmN0aW9uIGNvbW1lbnQuCi0JKGluZnB5X3NlYXJjaF9tZW1vcnkpOiBFeHRlbmQgdGhlIGZ1bmN0 aW9uIGNvbW1lbnQuICBSZW1vdmUgdGhlCi0JUHlFcnJfU2V0U3RyaW5nIGNhbGwgb24gYWxyZWFk eSBzZXQgZXJyb3Igc3RhdGUuCi0JKiBweXRob24vcHktcGFyYW0uYyAoc2V0X3BhcmFtZXRlcl92 YWx1ZSk6IEV4dGVuZCB0aGUgZnVuY3Rpb24KLQljb21tZW50LiAgUmV0dXJuIC0xIG9uIGZhaWxl ZCBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nLCB0d2ljZS4KLQkoc2V0X2F0dHIpOiBFeHRl bmQgdGhlIGZ1bmN0aW9uIGNvbW1lbnQuCi0JKGNvbXB1dGVfZW51bV92YWx1ZXMpOiBFeHRlbmQg dGhlIGZ1bmN0aW9uIGNvbW1lbnQuICBOZXcgdmFyaWFibGUKLQliYWNrX3RvLiAgUHJvdGVjdCBz ZWxmLT5lbnVtZXJhdGlvbiBieSBCQUNLX1RPIGNsZWFudXBzLiAgUmV0dXJuIDAgb24KLQlmYWls ZWQgcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZy4KLQkoZ2V0X2RvY19zdHJpbmcpOiBDYWxs IGdkYnB5X3ByaW50X3N0YWNrIG9uIGZhaWxlZAotCXB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJp bmcuCi0JKHBhcm1weV9pbml0KTogRXh0ZW5kIHRoZSBmdW5jdGlvbiBjb21tZW50LgotCSogcHl0 aG9uL3B5LXByZXR0eXByaW50LmMgKHByZXR0eV9wcmludF9vbmVfdmFsdWUpOiBMaWtld2lzZS4K LQkoZ2RicHlfZ2V0X2Rpc3BsYXlfaGludCwgcHJpbnRfY2hpbGRyZW4pOiBDYWxsIGdkYnB5X3By aW50X3N0YWNrIG9uCi0JZmFpbGVkIHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCi0JKiBw eXRob24vcHktdmFsdWUuYyAodmFscHlfbmV3LCB2YWxweV9nZXRpdGVtLCB2YWxweV9jYWxsKQot CSh2YWxweV9iaW5vcCwgdmFscHlfcmljaGNvbXBhcmUpOiBFeHRlbmQgdGhlIGZ1bmN0aW9uIGNv bW1lbnQuCi0JKiBweXRob24vcHl0aG9uLmMKLQkoc3RydWN0IHB5dGhvbl9lbnYpIDxlcnJvcl90 eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrPjogTmV3Ci0JZmllbGRzLgotCShyZXN0 b3JlX3B5dGhvbl9lbnYpOiBIYW5kbGUgUHlFcnJfT2NjdXJyZWQuICBDYWxsIFB5RXJyX1Jlc3Rv cmUuCi0JKGVuc3VyZV9weXRob25fZW52KTogQ2FsbCBQeUVycl9GZXRjaC4KLQkqIHZhcm9iai5j ICh1cGRhdGVfZHluYW1pY192YXJvYmpfY2hpbGRyZW4pOiBDYWxsIGdkYnB5X3ByaW50X3N0YWNr IG9uCi0JZmFpbGVkIGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24uCi0JKHZhbHVlX2dldF9wcmlu dF92YWx1ZSk6IENhbGwgZ2RicHlfcHJpbnRfc3RhY2sgb24gZmFpbGVkCi0JcHl0aG9uX3N0cmlu Z190b190YXJnZXRfcHl0aG9uX3N0cmluZy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMTAtMDkg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnB5 dGhvbi9weS1lcnJvci5leHA6IE5ldyBmaWxlLgotCSogZ2RiLnB5dGhvbi9weS1lcnJvci5weTog TmV3IGZpbGUuCi0KLUluZGV4OiBnZGItNy4yL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCTIw MTAtMTAtMTIgMTg6Mjc6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvcHl0aG9u L3B5LWJyZWFrcG9pbnQuYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAg LTQyMCw2ICs0MjAsOSBAQCBicHB5X2dldF9jb25kaXRpb24gKFB5T2JqZWN0ICpzZWxmLCB2b2lk Ci0gICByZXR1cm4gUHlTdHJpbmdfRGVjb2RlIChzdHIsIHN0cmxlbiAoc3RyKSwgaG9zdF9jaGFy c2V0ICgpLCBOVUxMKTsKLSB9Ci0gCi0rLyogUmV0dXJucyAwIG9uIHN1Y2Nlc3MuICBSZXR1cm5z IC0xIG9uIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuCi0rICAgKi8KLSsKLSBz dGF0aWMgaW50Ci0gYnBweV9zZXRfY29uZGl0aW9uIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3Qg Km5ld3ZhbHVlLCB2b2lkICpjbG9zdXJlKQotIHsKLUluZGV4OiBnZGItNy4yL2dkYi9weXRob24v cHktY21kLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5dGhvbi9weS1jbWQu YwkyMDEwLTEwLTEyIDE4OjI3OjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3B5 dGhvbi9weS1jbWQuYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEz OCw3ICsxMzgsMTAgQEAgY21kcHlfZnVuY3Rpb24gKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50IAot ICAgICBhcmdzID0gIiI7Ci0gICBhcmdvYmogPSBQeVVuaWNvZGVfRGVjb2RlIChhcmdzLCBzdHJs ZW4gKGFyZ3MpLCBob3N0X2NoYXJzZXQgKCksIE5VTEwpOwotICAgaWYgKCEgYXJnb2JqKQotLSAg ICBlcnJvciAoXygiQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnRzIHRvIFB5dGhvbiBzdHJpbmcu IikpOwotKyAgICB7Ci0rICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7Ci0rICAgICAgZXJyb3Ig KF8oIkNvdWxkIG5vdCBjb252ZXJ0IGFyZ3VtZW50cyB0byBQeXRob24gc3RyaW5nLiIpKTsKLSsg ICAgfQotIAotICAgdHR5b2JqID0gZnJvbV90dHkgPyBQeV9UcnVlIDogUHlfRmFsc2U7Ci0gICBQ eV9JTkNSRUYgKHR0eW9iaik7Ci1AQCAtMjU1LDYgKzI1OCwxMiBAQCBjbWRweV9jb21wbGV0ZXIg KHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50Ci0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgfQotIAkg IHJlc3VsdFtvdXRdID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoZWx0KTsKLSsJICBp ZiAocmVzdWx0W291dF0gPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgLyogU2tpcCBwcm9ibGVt IGVsZW1lbnRzLiAgKi8KLSsJICAgICAgUHlFcnJfQ2xlYXIgKCk7Ci0rCSAgICAgIGNvbnRpbnVl OwotKwkgICAgfQotIAkgICsrb3V0OwotIAl9Ci0gICAgICAgcmVzdWx0W291dF0gPSBOVUxMOwot QEAgLTQ2NSw3ICs0NzQsMTUgQEAgY21kcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0 ICphcgotICAgICAgIFB5T2JqZWN0ICpkc19vYmogPSBQeU9iamVjdF9HZXRBdHRyIChzZWxmLCBn ZGJweV9kb2NfY3N0KTsKLSAKLSAgICAgICBpZiAoZHNfb2JqICYmIGdkYnB5X2lzX3N0cmluZyAo ZHNfb2JqKSkKLS0JZG9jc3RyaW5nID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoZHNf b2JqKTsKLSsJewotKwkgIGRvY3N0cmluZyA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcg KGRzX29iaik7Ci0rCSAgaWYgKGRvY3N0cmluZyA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICB4 ZnJlZSAoY21kX25hbWUpOwotKwkgICAgICB4ZnJlZSAocGZ4X25hbWUpOwotKwkgICAgICByZXR1 cm4gLTE7Ci0rCSAgICB9Ci0rCX0KLSAgICAgfQotICAgaWYgKCEgZG9jc3RyaW5nKQotICAgICBk b2NzdHJpbmcgPSB4c3RyZHVwIChfKCJUaGlzIGNvbW1hbmQgaXMgbm90IGRvY3VtZW50ZWQuIikp OwotSW5kZXg6IGdkYi03LjIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi5vcmlnL2dkYi9weXRob24vcHktZnJhbWUuYwkyMDEwLTA2LTI4IDIzOjE2OjAzLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCTIwMTAtMTAt MTIgMTg6Mjg6NTguMDAwMDAwMDAwICswMjAwCi1AQCAtMzg1LDcgKzM4NSw4IEBAIGZyYXB5X2Zp bmRfc2FsIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QKLSAgICBzdGFydCB0aGUgc2VhcmNoIGZy b20gdGhhdCBibG9jaywgb3RoZXJ3aXNlIHNlYXJjaCBmcm9tIHRoZSBmcmFtZSdzCi0gICAgY3Vy cmVudCBibG9jayAoZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgdGhlIHJlc3VtZSBhZGRyZXNzIG9m IHRoZQotICAgIGZyYW1lKS4gIFRoZSB2YXJpYWJsZSBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5n IG9yIGFuIGluc3RhbmNlIG9mIGEKLS0gICBnZGIuU3ltYm9sLiAgVGhlIGJsb2NrIGFyZ3VtZW50 IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgZ2RiLkJsb2NrLiAgKi8KLSsgICBnZGIuU3ltYm9sLiAg VGhlIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgZ2RiLkJsb2NrLiAgUmV0 dXJucwotKyAgIE5VTEwgb24gZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICov Ci0gc3RhdGljIFB5T2JqZWN0ICoKLSBmcmFweV9yZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKQotIHsKLUluZGV4OiBnZGItNy4yL2dkYi9weXRob24vcHktZnVuY3Rpb24u YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvcHl0aG9uL3B5LWZ1bmN0aW9uLmMJ MjAxMC0wNS0xNyAyMzoyMzoyNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9weXRo b24vcHktZnVuY3Rpb24uYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAg LTExMyw3ICsxMTMsMTQgQEAgZm5weV9pbml0IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFy ZwotICAgICB7Ci0gICAgICAgUHlPYmplY3QgKmRzX29iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJp bmcgKHNlbGYsICJfX2RvY19fIik7Ci0gICAgICAgaWYgKGRzX29iaiAmJiBnZGJweV9pc19zdHJp bmcgKGRzX29iaikpCi0tCWRvY3N0cmluZyA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcg KGRzX29iaik7Ci0rCXsKLSsJICBkb2NzdHJpbmcgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3Ry aW5nIChkc19vYmopOwotKwkgIGlmIChkb2NzdHJpbmcgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAg ICAgUHlfREVDUkVGIChzZWxmKTsKLSsJICAgICAgcmV0dXJuIC0xOwotKwkgICAgfQotKwl9Ci0g ICAgIH0KLSAgIGlmICghIGRvY3N0cmluZykKLSAgICAgZG9jc3RyaW5nID0geHN0cmR1cCAoXygi VGhpcyBmdW5jdGlvbiBpcyBub3QgZG9jdW1lbnRlZC4iKSk7Ci1JbmRleDogZ2RiLTcuMi9nZGIv cHl0aG9uL3B5LWluZmVyaW9yLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5 dGhvbi9weS1pbmZlcmlvci5jCTIwMTAtMDYtMjggMjM6MTY6MDMuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMJMjAxMC0xMC0xMiAxODoyODo1OC4w MDAwMDAwMDAgKzAyMDAKLUBAIC0yOTMsNyArMjkzLDggQEAgZ2RicHlfaW5mZXJpb3JzIChQeU9i amVjdCAqdW51c2VkLCBQeU9iagotIAotIC8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi5yZWFkX21l bW9yeSAoYWRkcmVzcywgbGVuZ3RoKS4KLSAgICBSZXR1cm5zIGEgUHl0aG9uIGJ1ZmZlciBvYmpl Y3Qgd2l0aCBMRU5HVEggYnl0ZXMgb2YgdGhlIGluZmVyaW9yJ3MKLS0gICBtZW1vcnkgYXQgQURE UkVTUy4gIEJvdGggYXJndW1lbnRzIGFyZSBpbnRlZ2Vycy4gICovCi0rICAgbWVtb3J5IGF0IEFE RFJFU1MuICBCb3RoIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMuICBSZXR1cm5zIE5VTEwgb24gZXJy b3IsCi0rICAgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KLSBzdGF0aWMgUHlPYmpl Y3QgKgotIGluZnB5X3JlYWRfbWVtb3J5IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Ms IFB5T2JqZWN0ICprdykKLSB7Ci1AQCAtMzYxLDcgKzM2Miw4IEBAIGluZnB5X3JlYWRfbWVtb3J5 IChQeU9iamVjdCAqc2VsZiwgUHlPYmoKLSAgICBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIEJVRkZF UiAoYSBQeXRob24gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIHJlYWQKLSAgICBidWZmZXIgcHJvdG9j b2wpIGF0IEFERFJFU1MgaW4gdGhlIGluZmVyaW9yJ3MgbWVtb3J5LiAgV3JpdGUgTEVOR1RICi0g ICAgYnl0ZXMgZnJvbSBCVUZGRVIsIG9yIGl0cyBlbnRpcmUgY29udGVudHMgaWYgdGhlIGFyZ3Vt ZW50IGlzIG5vdAotLSAgIHByb3ZpZGVkLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgbm90aGluZy4g ICovCi0rICAgcHJvdmlkZWQuICBUaGUgZnVuY3Rpb24gcmV0dXJucyBub3RoaW5nLiAgUmV0dXJu cyBOVUxMIG9uIGVycm9yLCB3aXRoCi0rICAgYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCi0g c3RhdGljIFB5T2JqZWN0ICoKLSBpbmZweV93cml0ZV9tZW1vcnkgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQotIHsKLUBAIC00NzMsNyArNDc1LDggQEAgZ2V0 X2NoYXJfYnVmZmVyIChQeU9iamVjdCAqc2VsZiwgUHlfc3NpegotICAgIHNlYXJjaCBmcm9tIEFE RFJFU1MuICBQQVRURVJOIGlzIHRoZSBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IgKGFuZAotICAgIG11 c3QgYmUgYSBQeXRob24gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBwcm90b2NvbCkuCi0g ICAgUmV0dXJucyBhIFB5dGhvbiBMb25nIG9iamVjdCBob2xkaW5nIHRoZSBhZGRyZXNzIHdoZXJl IHRoZSBwYXR0ZXJuCi0tICAgd2FzIGxvY2F0ZWQsIG9yIGlmIHRoZSBwYXR0ZXJuIHdhcyBub3Qg Zm91bmQsIHJldHVybnMgTm9uZS4gICovCi0rICAgd2FzIGxvY2F0ZWQsIG9yIGlmIHRoZSBwYXR0 ZXJuIHdhcyBub3QgZm91bmQsIHJldHVybnMgTm9uZS4gIFJldHVybnMgTlVMTAotKyAgIG9uIGVy cm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAq Ci0gaW5mcHlfc2VhcmNoX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQ eU9iamVjdCAqa3cpCi0gewotQEAgLTUxMSwxMiArNTE0LDcgQEAgaW5mcHlfc2VhcmNoX21lbW9y eSAoUHlPYmplY3QgKnNlbGYsIFB5TwotIAl9Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgewotLSAg ICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLAotLQkJICAgICAgIF8oIkNh bm5vdCBnZXQgc2VhcmNoIGFkZHJlc3MvcmFuZ2UgZnJvbSBQeXRob24uIikpOwotLQotLSAgICAg IHJldHVybiBOVUxMOwotLSAgICB9Ci0rICAgIHJldHVybiBOVUxMOwotIAotICAgaWYgKCFQeU9i amVjdF9DaGVja1JlYWRCdWZmZXIgKHBhdHRlcm4pKQotICAgICB7Ci1JbmRleDogZ2RiLTcuMi9n ZGIvcHl0aG9uL3B5LXBhcmFtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5 dGhvbi9weS1wYXJhbS5jCTIwMTAtMDUtMTcgMjM6MjM6MjUuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi9nZGIvcHl0aG9uL3B5LXBhcmFtLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xMTAsOCArMTEwLDggQEAgZ2V0X2F0dHIgKFB5T2JqZWN0ICpvYmosIFB5 T2JqZWN0ICphdHRyXwotICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyIChvYmosIGF0 dHJfbmFtZSk7Ci0gfQotIAotLS8qIFNldCBhIHBhcmFtZXRlciB2YWx1ZSBmcm9tIGEgUHl0aG9u IHZhbHVlLiAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEKLS0gICBvbiBmYWlsdXJlLiAgKi8KLSsv KiBTZXQgYSBwYXJhbWV0ZXIgdmFsdWUgZnJvbSBhIFB5dGhvbiB2YWx1ZS4gIFJldHVybiAwIG9u IHN1Y2Nlc3MuICBSZXR1cm5zCi0rICAgLTEgb24gZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0 aW9uIHNldC4gICovCi0gc3RhdGljIGludAotIHNldF9wYXJhbWV0ZXJfdmFsdWUgKHBhcm1weV9v YmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKLSB7Ci1AQCAtMTQyLDcgKzE0MiwxMSBAQCBz ZXRfcGFyYW1ldGVyX3ZhbHVlIChwYXJtcHlfb2JqZWN0ICpzZWxmCi0gCSAgICBzZWxmLT52YWx1 ZS5zdHJpbmd2YWwgPSBOVUxMOwotIAl9Ci0gICAgICAgZWxzZQotLQlzZWxmLT52YWx1ZS5zdHJp bmd2YWwgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nICh2YWx1ZSk7Ci0rCXsKLSsJICBz ZWxmLT52YWx1ZS5zdHJpbmd2YWwgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nICh2YWx1 ZSk7Ci0rCSAgaWYgKHNlbGYtPnZhbHVlLnN0cmluZ3ZhbCA9PSBOVUxMKQotKwkgICAgcmV0dXJu IC0xOwotKwl9Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgdmFyX2VudW06Ci1AQCAtMTU4 LDYgKzE2Miw4IEBAIHNldF9wYXJhbWV0ZXJfdmFsdWUgKHBhcm1weV9vYmplY3QgKnNlbGYKLSAJ ICB9Ci0gCi0gCXN0ciA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKHZhbHVlKTsKLSsJ aWYgKHN0ciA9PSBOVUxMKQotKwkgIHJldHVybiAtMTsKLSAJZm9yIChpID0gMDsgc2VsZi0+ZW51 bWVyYXRpb25baV07ICsraSkKLSAJICBpZiAoISBzdHJjbXAgKHNlbGYtPmVudW1lcmF0aW9uW2ld LCBzdHIpKQotIAkgICAgYnJlYWs7Ci1AQCAtMjU4LDcgKzI2NCw3IEBAIHNldF9wYXJhbWV0ZXJf dmFsdWUgKHBhcm1weV9vYmplY3QgKnNlbGYKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBTZXQg YW4gYXR0cmlidXRlLiAgKi8KLSsvKiBTZXQgYW4gYXR0cmlidXRlLiAgUmV0dXJucyAtMSBvbiBl cnJvciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KLSBzdGF0aWMgaW50Ci0gc2V0 X2F0dHIgKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphdHRyX25hbWUsIFB5T2JqZWN0ICp2YWwp Ci0gewotQEAgLTM1OCwxMiArMzY0LDEzIEBAIGFkZF9zZXRzaG93X2dlbmVyaWMgKGludCBwYXJt Y2xhc3MsIGVudW0KLSAgICAgfQotIH0KLSAKLS0vKiBBIGhlbHBlciB3aGljaCBjb21wdXRlcyBl bnVtIHZhbHVlcy4gIFJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uCi0tICAgZXJyb3IuICAqLwot Ky8qIEEgaGVscGVyIHdoaWNoIGNvbXB1dGVzIGVudW0gdmFsdWVzLiAgUmV0dXJucyAxIG9uIHN1 Y2Nlc3MuICBSZXR1cm5zIDAgb24KLSsgICBlcnJvciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24g c2V0LiAgKi8KLSBzdGF0aWMgaW50Ci0gY29tcHV0ZV9lbnVtX3ZhbHVlcyAocGFybXB5X29iamVj dCAqc2VsZiwgUHlPYmplY3QgKmVudW1fdmFsdWVzKQotIHsKLSAgIFB5X3NzaXplX3Qgc2l6ZSwg aTsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotIAotICAgaWYgKCEgZW51bV92YWx1ZXMp Ci0gICAgIHsKLUBAIC0zOTAsNiArMzk3LDcgQEAgY29tcHV0ZV9lbnVtX3ZhbHVlcyAocGFybXB5 X29iamVjdCAqc2VsZgotICAgICB9Ci0gCi0gICBzZWxmLT5lbnVtZXJhdGlvbiA9IHhtYWxsb2Mg KChzaXplICsgMSkgKiBzaXplb2YgKGNoYXIgKikpOwotKyAgYmFja190byA9IG1ha2VfY2xlYW51 cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmc2VsZi0+ZW51bWVyYXRpb24pOwotICAgbWVtc2V0 IChzZWxmLT5lbnVtZXJhdGlvbiwgMCwgKHNpemUgKyAxKSAqIHNpemVvZiAoY2hhciAqKSk7Ci0g Ci0gICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotQEAgLTM5NywxNiArNDA1LDI3IEBAIGNv bXB1dGVfZW51bV92YWx1ZXMgKHBhcm1weV9vYmplY3QgKnNlbGYKLSAgICAgICBQeU9iamVjdCAq aXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbSAoZW51bV92YWx1ZXMsIGkpOwotIAotICAgICAgIGlm ICghIGl0ZW0pCi0tCXJldHVybiAwOwotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwot KwkgIHJldHVybiAwOwotKwl9Ci0gICAgICAgaWYgKCEgZ2RicHlfaXNfc3RyaW5nIChpdGVtKSkK LSAJewotKwkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAJICBQeUVycl9TZXRTdHJpbmcgKFB5 RXhjX1J1bnRpbWVFcnJvciwgCi0gCQkJICAgXygiVGhlIGVudW1lcmF0aW9uIGl0ZW0gbm90IGEg c3RyaW5nLiIpKTsKLSAJICByZXR1cm4gMDsKLSAJfQotICAgICAgIHNlbGYtPmVudW1lcmF0aW9u W2ldID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoaXRlbSk7Ci0rICAgICAgaWYgKHNl bGYtPmVudW1lcmF0aW9uW2ldID09IE5VTEwpCi0rCXsKLSsJICBkb19jbGVhbnVwcyAoYmFja190 byk7Ci0rCSAgcmV0dXJuIDA7Ci0rCX0KLSsgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCAoY2hh ciAqKSBzZWxmLT5lbnVtZXJhdGlvbltpXSk7Ci0gICAgIH0KLSAKLSsgIGRpc2NhcmRfY2xlYW51 cHMgKGJhY2tfdG8pOwotICAgcmV0dXJuIDE7Ci0gfQotIAotQEAgLTQyMiw3ICs0NDEsMTEgQEAg Z2V0X2RvY19zdHJpbmcgKFB5T2JqZWN0ICpvYmplY3QsIFB5T2JqZQotICAgICAgIFB5T2JqZWN0 ICpkc19vYmogPSBQeU9iamVjdF9HZXRBdHRyIChvYmplY3QsIGF0dHIpOwotIAotICAgICAgIGlm IChkc19vYmogJiYgZ2RicHlfaXNfc3RyaW5nIChkc19vYmopKQotLQlyZXN1bHQgPSBweXRob25f c3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChkc19vYmopOwotKwl7Ci0rCSAgcmVzdWx0ID0gcHl0aG9u X3N0cmluZ190b19ob3N0X3N0cmluZyAoZHNfb2JqKTsKLSsJICBpZiAocmVzdWx0ID09IE5VTEwp Ci0rCSAgICBnZGJweV9wcmludF9zdGFjayAoKTsKLSsJfQotICAgICB9Ci0gICBpZiAoISByZXN1 bHQpCi0gICAgIHJlc3VsdCA9IHhzdHJkdXAgKF8oIlRoaXMgY29tbWFuZCBpcyBub3QgZG9jdW1l bnRlZC4iKSk7Ci1AQCAtNDQ5LDggKzQ3Miw5IEBAIGdldF9kb2Nfc3RyaW5nIChQeU9iamVjdCAq b2JqZWN0LCBQeU9iamUKLSAKLSAgICBUaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHBhcmFtZXRl ciBpcyB0YWtlbiBmcm9tIHRoZSBkb2Mgc3RyaW5nCi0gICAgZm9yIHRoZSBweXRob24gY2xhc3Mu Ci0tICAgCi0tKi8KLSsKLSsgICBSZXR1cm5zIC0xIG9uIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4 Y2VwdGlvbiBzZXQuICAqLwotKwotIHN0YXRpYyBpbnQKLSBwYXJtcHlfaW5pdCAoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLSB7Ci1JbmRleDogZ2RiLTcu Mi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9y aWcvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTAtMTAtMTIgMTg6Mjc6NTcuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMC0x MC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODUsOCArMTg1LDggQEAgZmluZF9w cmV0dHlfcHJpbnRlciAoUHlPYmplY3QgKnZhbHVlKQotICAgIGlzIHJldHVybmVkLiAgSWYgdGhl IGZ1bmN0aW9uIHJldHVybnMgUHlfTk9ORSB0aGF0IG1lYW5zIHRoZSBwcmV0dHkKLSAgICBwcmlu dGVyIHJldHVybmVkIHRoZSBQeXRob24gTm9uZSBhcyBhIHZhbHVlLiAgT3RoZXJ3aXNlLCBpZiB0 aGUKLSAgICBmdW5jdGlvbiByZXR1cm5zIGEgdmFsdWUsICAqT1VUX1ZBTFVFIGlzIHNldCB0byB0 aGUgdmFsdWUsIGFuZCBOVUxMCi0tICAgaXMgcmV0dXJuZWQuICBPbiBlcnJvciwgKk9VVF9WQUxV RSBpcyBzZXQgdG8gTlVMTCwgYW5kIE5VTEwgaXMKLS0gICByZXR1cm5lZC4gICovCi0rICAgaXMg cmV0dXJuZWQuICBPbiBlcnJvciwgKk9VVF9WQUxVRSBpcyBzZXQgdG8gTlVMTCwgTlVMTCBpcwot KyAgIHJldHVybmVkLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLwotIAotIHN0YXRp YyBQeU9iamVjdCAqCi0gcHJldHR5X3ByaW50X29uZV92YWx1ZSAoUHlPYmplY3QgKnByaW50ZXIs IHN0cnVjdCB2YWx1ZSAqKm91dF92YWx1ZSkKLUBAIC0yMzIsNyArMjMyLDExIEBAIGdkYnB5X2dl dF9kaXNwbGF5X2hpbnQgKFB5T2JqZWN0ICpwcmludGUKLSAgIGlmIChoaW50KQotICAgICB7Ci0g ICAgICAgaWYgKGdkYnB5X2lzX3N0cmluZyAoaGludCkpCi0tCXJlc3VsdCA9IHB5dGhvbl9zdHJp bmdfdG9faG9zdF9zdHJpbmcgKGhpbnQpOwotKwl7Ci0rCSAgcmVzdWx0ID0gcHl0aG9uX3N0cmlu Z190b19ob3N0X3N0cmluZyAoaGludCk7Ci0rCSAgaWYgKHJlc3VsdCA9PSBOVUxMKQotKwkgICAg Z2RicHlfcHJpbnRfc3RhY2sgKCk7Ci0rCX0KLSAgICAgICBQeV9ERUNSRUYgKGhpbnQpOwotICAg ICB9Ci0gICBlbHNlCi1AQCAtNTc0LDcgKzU3OCwxMCBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmpl Y3QgKnByaW50ZXIsIGNvbnN0Ci0gCSAgZWxzZQotIAkgICAgewotIAkgICAgICBvdXRwdXQgPSBw eXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChweV92KTsKLS0JICAgICAgZnB1dHNfZmlsdGVy ZWQgKG91dHB1dCwgc3RyZWFtKTsKLSsJICAgICAgaWYgKCFvdXRwdXQpCi0rCQlnZGJweV9wcmlu dF9zdGFjayAoKTsKLSsJICAgICAgZWxzZQotKwkJZnB1dHNfZmlsdGVyZWQgKG91dHB1dCwgc3Ry ZWFtKTsKLSAJICAgICAgeGZyZWUgKG91dHB1dCk7Ci0gCSAgICB9Ci0gCX0KLUluZGV4OiBnZGIt Ny4yL2dkYi9weXRob24vcHktdmFsdWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9n ZGIvcHl0aG9uL3B5LXZhbHVlLmMJMjAxMC0xMC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yL2dkYi9weXRob24vcHktdmFsdWUuYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAw MDAwMDAwMCArMDIwMAotQEAgLTExNCw3ICsxMTQsOCBAQCBub3RlX3ZhbHVlICh2YWx1ZV9vYmpl Y3QgKnZhbHVlX29iaikKLSAgIHZhbHVlc19pbl9weXRob24gPSB2YWx1ZV9vYmo7Ci0gfQotIAot LS8qIENhbGxlZCB3aGVuIGEgbmV3IGdkYi5WYWx1ZSBvYmplY3QgbmVlZHMgdG8gYmUgYWxsb2Nh dGVkLiAgKi8KLSsvKiBDYWxsZWQgd2hlbiBhIG5ldyBnZGIuVmFsdWUgb2JqZWN0IG5lZWRzIHRv IGJlIGFsbG9jYXRlZC4gIFJldHVybnMgTlVMTCBvbgotKyAgIGVycm9yLCB3aXRoIGEgcHl0aG9u IGV4Y2VwdGlvbiBzZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqCi0gdmFscHlfbmV3IChQeVR5 cGVPYmplY3QgKnN1YnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMpCi0g ewotQEAgLTMzNCw3ICszMzUsNyBAQCB2YWxweV9sZW5ndGggKFB5T2JqZWN0ICpzZWxmKQotIH0K LSAKLSAvKiBHaXZlbiBzdHJpbmcgbmFtZSBvZiBhbiBlbGVtZW50IGluc2lkZSBzdHJ1Y3R1cmUs IHJldHVybiBpdHMgdmFsdWUKLS0gICBvYmplY3QuICAqLwotKyAgIG9iamVjdC4gIFJldHVybnMg TlVMTCBvbiBlcnJvciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KLSBzdGF0aWMg UHlPYmplY3QgKgotIHZhbHB5X2dldGl0ZW0gKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5 KQotIHsKLUBAIC00NjgsNyArNDY5LDggQEAgZW51bSB2YWxweV9vcGNvZGUKLSAgICgoVFlQRV9D T0RFIChUWVBFKSA9PSBUWVBFX0NPREVfUkVGKSA/IChUWVBFX1RBUkdFVF9UWVBFIChUWVBFKSkg OiAoVFlQRSkpCi0gCi0gLyogUmV0dXJucyBhIHZhbHVlIG9iamVjdCB3aGljaCBpcyB0aGUgcmVz dWx0IG9mIGFwcGx5aW5nIHRoZSBvcGVyYXRpb24KLS0gICBzcGVjaWZpZWQgYnkgT1BDT0RFIHRv IHRoZSBnaXZlbiBhcmd1bWVudHMuICAqLwotKyAgIHNwZWNpZmllZCBieSBPUENPREUgdG8gdGhl IGdpdmVuIGFyZ3VtZW50cy4gIFJldHVybnMgTlVMTCBvbiBlcnJvciwgd2l0aAotKyAgIGEgcHl0 aG9uIGV4Y2VwdGlvbiBzZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqCi0gdmFscHlfYmlub3Ag KGVudW0gdmFscHlfb3Bjb2RlIG9wY29kZSwgUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhl cikKLSB7Ci1AQCAtNzIzLDcgKzcyNSw4IEBAIHZhbHB5X3hvciAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICpvdGgKLSAgIHJldHVybiB2YWxweV9iaW5vcCAoVkFMUFlfQklUWE9SLCBzZWxmLCBv dGhlcik7Ci0gfQotIAotLS8qIEltcGxlbWVudHMgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZvciB2 YWx1ZSBvYmplY3RzLiAgKi8KLSsvKiBJbXBsZW1lbnRzIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBm b3IgdmFsdWUgb2JqZWN0cy4gIFJldHVybnMgTlVMTCBvbiBlcnJvciwKLSsgICB3aXRoIGEgcHl0 aG9uIGV4Y2VwdGlvbiBzZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqCi0gdmFscHlfcmljaGNv bXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKLSB7Ci1JbmRl eDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5dGhvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5v cmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMC0xMC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMC0xMC0xMiAxODoyODo1OC4w MDAwMDAwMDAgKzAyMDAKLUBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBweXRob25fZW52Ci0gICBQ eUdJTFN0YXRlX1NUQVRFIHN0YXRlOwotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gICBj b25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZ3VhZ2U7Ci0rICBQeU9iamVjdCAqZXJyb3Jf dHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOwotIH07Ci0gCi0gc3RhdGljIHZv aWQKLUBAIC04OSw2ICs5MCwxNiBAQCByZXN0b3JlX3B5dGhvbl9lbnYgKHZvaWQgKnApCi0gewot ICAgc3RydWN0IHB5dGhvbl9lbnYgKmVudiA9IChzdHJ1Y3QgcHl0aG9uX2VudiAqKXA7Ci0gCi0r ICAvKiBMZWZ0b3ZlciBQeXRob24gZXJyb3IgaXMgZm9yYmlkZGVuIGJ5IFB5dGhvbiBFeGNlcHRp b24gSGFuZGxpbmcuICAqLwotKyAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotKyAgICB7Ci0rICAg ICAgLyogVGhpcyBvcmRlciBpcyBzaW1pbGFyIHRvIHRoZSBvbmUgY2FsbGluZyBlcnJvciBhZnRl cndhcmRzLiAqLwotKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotKyAgICAgIHdhcm5pbmcg KF8oImludGVybmFsIGVycm9yOiBVbmhhbmRsZWQgUHl0aG9uIGV4Y2VwdGlvbiIpKTsKLSsgICAg fQotKwotKyAgUHlFcnJfUmVzdG9yZSAoZW52LT5lcnJvcl90eXBlLCBlbnYtPmVycm9yX3ZhbHVl LCBlbnYtPmVycm9yX3RyYWNlYmFjayk7Ci0rCi0gICBQeUdJTFN0YXRlX1JlbGVhc2UgKGVudi0+ c3RhdGUpOwotICAgcHl0aG9uX2dkYmFyY2ggPSBlbnYtPmdkYmFyY2g7Ci0gICBweXRob25fbGFu Z3VhZ2UgPSBlbnYtPmxhbmd1YWdlOwotQEAgLTExMSw2ICsxMjIsOSBAQCBlbnN1cmVfcHl0aG9u X2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCi0gICBweXRob25fZ2RiYXJjaCA9IGdkYmFyY2g7 Ci0gICBweXRob25fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAKLSsgIC8qIFNhdmUgaXQgYW5kIGVu c3VyZSAhIFB5RXJyX09jY3VycmVkICgpIGFmdGVyd2FyZHMuICAqLwotKyAgUHlFcnJfRmV0Y2gg KCZlbnYtPmVycm9yX3R5cGUsICZlbnYtPmVycm9yX3ZhbHVlLCAmZW52LT5lcnJvcl90cmFjZWJh Y2spOwotKyAgCi0gICByZXR1cm4gbWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhvbl9lbnYsIGVu dik7Ci0gfQotIAotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWVy cm9yLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWVy cm9yLmV4cAkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1 NiBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3QgZXJyb3Igd2hp bGUgbG9hZGluZyAqLWdkYi5weS4gIElCTTEwNDcgaXMgY2hvc2VuIGFzIHBvc3NpYmx5IHN1cHBv cnRlZAotKyMgYnkgZ2xpYmMgYnV0IHVuc3VwcG9ydGVkIGJ5IFB5dGhvbgotKwotK3NldCB0ZXN0 ZmlsZSAicHktZXJyb3IiCi0rCi0rbG9hZF9saWIgZ2RiLXB5dGhvbi5leHAKLSsKLSsjIFN0YXJ0 IHdpdGggYSBmcmVzaCBnZGIuCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLSsKLSsjIFNraXAgYWxs IHRlc3RzIGlmIFB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IGVuYWJsZWQuCi0raWYgeyBbc2tpcF9w eXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IGNoYXJzZXQgIklCTTEwNDciCi0r Ci0rc2V0IHRlc3QyICJtYWluIHJlYWNoZWQiCi0rCi0rc2V0IHRlc3QgInNldCBob3N0LWNoYXJz ZXQgJGNoYXJzZXQiCi0rc2V0IHRlc3RfcmVnZXggW3N0cmluZ190b19yZWdleHAgJHRlc3RdCi0r Z2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIl4kdGVzdF9yZWdleFxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIl4kdGVz dF9yZWdleFxyXG5VbmRlZmluZWQgaXRlbTogXCIkY2hhcnNldFwiXFwuXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJeGZhaWwgJHRlc3QKLSsJdW50ZXN0ZWQgJHRlc3QyCi0rCXNldCB0ZXN0MiAiIgot KyAgICB9Ci0rfQotKwotK2lmIHskdGVzdDIgPT0gIiJ9IHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0r Ci0rc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KLSsKLSsjIGFyZ2M9TG9va3VwRXJyb3I6IHVua25v d24gZW5jb2Rpbmc6IElCTTEwNDcKLStnZGJfdGVzdCAic291cmNlICRyZW1vdGVfcHl0aG9uX2Zp bGUiICJUcmFjZWJhY2suKkNsYXNzTmFtZS4qXHJcbkxvb2t1cEVycm9yOiB1bmtub3duIGVuY29k aW5nOiAkY2hhcnNldCIgJHRlc3QyCi0rCi0rZ2RiX3Rlc3QgInAgMSIgIiA9IDEiICJubyBkZWxh eWVkIGVycm9yIgotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWVy cm9yLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXJy b3IucHkJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMjUg QEAKLSsjIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotKwotK2Ns YXNzIENsYXNzTmFtZShnZGIuQ29tbWFuZCk6Ci0rICAgICdhJwotKyAgICBkZWYgX19pbml0X18o c2VsZik6Ci0rICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyAoc2VsZiwgIkNsYXNzTmFtZSIs IGdkYi5DT01NQU5EX0RBVEEsIHByZWZpeD1UcnVlKQotKyAgICBkZWYgaW52b2tlKHNlbGYsIGFy Z3MsIGZyb21fdHR5KToKLSsgICAgICAgIHByaW50Ci0rCi0rQ2xhc3NOYW1lKCkKLUluZGV4OiBn ZGItNy4yL2dkYi92YXJvYmouYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvdmFy b2JqLmMJMjAxMC0xMC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dk Yi92YXJvYmouYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwNTQs NiArMTA1NCw4IEBAIHVwZGF0ZV9keW5hbWljX3Zhcm9ial9jaGlsZHJlbiAoc3RydWN0IHYKLSAJ ICAgIGVycm9yIChfKCJJbnZhbGlkIGl0ZW0gZnJvbSB0aGUgY2hpbGQgbGlzdCIpKTsKLSAKLSAJ ICB2ID0gY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAocHlfdik7Ci0rCSAgaWYgKHYgPT0gTlVM TCkKLSsJICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotIAkgIGluc3RhbGxfZHluYW1pY19jaGls ZCAodmFyLCBjYW5fbWVudGlvbiA/IGNoYW5nZWQgOiBOVUxMLAotIAkJCQkgY2FuX21lbnRpb24g PyBuZXcgOiBOVUxMLAotIAkJCQkgY2FuX21lbnRpb24gPyB1bmNoYW5nZWQgOiBOVUxMLAotQEAg LTI1NDIsNiArMjU0NCw4IEBAIHZhbHVlX2dldF9wcmludF92YWx1ZSAoc3RydWN0IHZhbHVlICp2 YWwKLSAJCQl0eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9jaGFyOwotIAkJ CVB5X0RFQ1JFRiAocHlfc3RyKTsKLSAJCSAgICAgIH0KLSsJCSAgICBlbHNlCi0rCQkgICAgICBn ZGJweV9wcmludF9zdGFjayAoKTsKLSAJCSAgfQotIAkJUHlfREVDUkVGIChvdXRwdXQpOwotIAkg ICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdj YzQ0LnBhdGNoCmluZGV4IGUxOThkNWQuLmJlMTU4NmUgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1n Y2M0NC5wYXRjaAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAK IFNvbWUgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBn Y2M0NCBhbmQgZ2ZvcnRyYW40NCBhcwogdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5h cmllcyBhcmUgZnJvbSBnY2MtNC4xLgogCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0wNy0xMiAy MzowNzozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS5leHAJMjAxMC0xMS0xNiAwOToyNjo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEwLTExLTE2IDA5OjI3 OjIwLjAwMDAwMDAwMCArMDEwMAogQEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlIHZs YQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKQEAgLTMyLDEwICszMiwxMCBAQCBJbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKICAgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogICAgICByZXR1cm4gLTEK ICB9Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLWludGVycC5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAx MDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0w Ny0wNSAyMDowNDozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEwLTA3LTEzIDIzOjExOjIy LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0xMC0xMiAyMDo0MTowNi4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAkyMDEwLTExLTE2IDA5OjI4OjQwLjAwMDAwMDAwMCArMDEwMAogQEAg LTMzLDkgKzMzLDI5IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGVfbGlifV0gewog ICAgICByZXR1cm4gLTEKICB9CkBAIC01NSw4ICs1NSw4IEBAIEluZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogKwogICMgVXNl IC1zb25hbWUgc28gdGhhdCB0aGUgbmV3IGxpYnJhcnkgZ2V0cyBjb3BpZWQgYnkgYnVpbGRfZXhl Y3V0YWJsZV9vd25fbGlicy4KICAKLS1pZiB7W2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlX2xpYn0gJHtiaW5maWxlX2xpYn0gW2xpc3QgZGVidWcgYWRkaXRp b25hbF9mbGFncz0tV2wsLXNvbmFtZSwke3Rlc3R9LnNvXV0gIT0gIiJ9IHsKLStzZXQgZXJyIFtn ZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7Ymlu ZmlsZV9saWJ9IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC1zb25hbWUsJHt0ZXN0 fS5zb11dCistaWYge1tnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9IFtsaXN0IGRlYnVnIGxkZmxhZ3M9LVdsLC1zb25hbWUs JHt0ZXN0fS5zb11dICE9ICIifSB7Cisrc2V0IGVyciBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBs ZGZsYWdzPS1XbCwtc29uYW1lLCR7dGVzdH0uc29dXQogKwogK3Vuc2V0X2JvYXJkX2luZm8gY29t cGlsZXIKICtpZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CkBAIC02NywxMCArNjcsMTAg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVh ay1pbnRlcnAuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAorSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxv Y2suZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTA3LTEzIDAwOjI1OjU2LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTExLTE2IDA5OjI2OjU0LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24t YmxvY2suZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMjAsNyAr MjAsMjUgQEAgc2V0IHRlc3RmaWxlICJjb21tb24tYmxvY2siCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0 ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpA QCAtOTgsMTAgKzk4LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYt c3RyaWRlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMC0wNy0xMiAyMzowNzoz My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMC0xMS0xNiAwOToyNjo1MC4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdh cmYtc3RyaWRlLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAogQEAgLTI3 LDcgKzI3LDI1IEBACiAgc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQogIHNldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmY5MApAQCAtMTI5LDEwICsxMjksMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiAgICAgIHJl dHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHluYW1pYy5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAky MDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDEwLTA3LTEzIDIzOjA1 OjE0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTAtMTEtMTYgMDk6MjY6NTAuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R5bmFtaWMuZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAt MjUsNyArMjUsMjUgQEAgc2V0IHRlc3RmaWxlICJkeW5hbWljIgogIHNldCBzcmNmaWxlICR7dGVz dGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K QEAgLTE2MCwxMCArMTYwLDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFy eS1tb2R1bGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCTIwMTAtMDYtMDMgMDA6 NDE6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEwLTA2LTAzIDAwOjQxOjU2LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAx MDAKIEBAIC0yNSwxNiArMjUsMzQgQEAgaWYgW2dldF9jb21waWxlcl9pbmZvIG5vdC11c2VkXSB7 CiAgICAgcmV0dXJuIC0xCiAgfQpAQCAtMjAzLDEwICsyMDMsMTAgQEAgSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAK ICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJu IC0xCiAgfQotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9tb2R1bGUuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL21vZHVsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTAtMDYtMDMg MDE6MDE6MDEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9tb2R1bGUuZXhwCTIwMTAtMDktMjIgMjE6MjI6NDQuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5l eHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xNiw3ICsxNiwyNSBA QAogIHNldCB0ZXN0ZmlsZSAibW9kdWxlIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MApA QCAtMjM0LDEwICsyMzQsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4 cAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9z dHJpbmcuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdHJpbmcuZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5n LmV4cAkyMDEwLTExLTE2IDA5OjI2OjUwLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTAtMTEtMTYg MDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMjMsNyArMjMsMjUgQEAgc2V0IHRlc3RmaWxl ICJzdHJpbmciCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMjY1LDEwICsyNjUsMTAgQEAgSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhw CiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAgIHJldHVy biAtMQogIH0KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vb21wLXN0ZXAuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEw LTA3LTEzIDAwOjIxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMC0wNy0xMyAyMzowNTox NC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMC0xMS0xNiAwOToyNjo1NC4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vb21wLXN0ZXAuZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAt MTUsNyArMTUsMjYgQEAKICAKICBzZXQgdGVzdGZpbGUgIm9tcC1zdGVwIgpAQCAtMjk3LDEwICsy OTcsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9vbXAtc3RlcC5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCitJ bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2 ZWQtdHlwZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6 MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDIuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rl cml2ZWQtdHlwZS5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0y OCw4ICsyOCwyNiBAQCBzZXQgdGVzdGZpbGUgImRlcml2ZWQtdHlwZSIKICBzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5mOTAKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9CkBAIC0zMzAsMTAgKzMzMCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKICAgICAgcmV0dXJuIC0xCiAg fQogIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdWJhcnJheS5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEw MDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTAtMDEt MDEgMDg6MzI6MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEwLTAxLTAxIDA4OjMyOjAyLjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9z dWJhcnJheS5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yOCw4 ICsyOCwyNiBAQCBzZXQgdGVzdGZpbGUgInN1YmFycmF5IgogIHNldCBzcmNmaWxlICR7dGVzdGZp bGV9LmYKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC0z NjMsMTAgKzM2MywxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1 Zy5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvdGxzLXNlcGRlYnVnLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMC0wNy0x MiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0 LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMC0xMS0xNiAwOToyNjo1MS4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEw MAogQEAgLTMyLDcgKzMyLDI1IEBAIHNldCBiaW5zaGFyZWRkZWJ1Z2ZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGkKICAKICAjIEZJWE1FOiBnY2MgZGVwZW5kZW5jeSAoLVdsLC1zb25hbWUpLgpAQCAtMzk0 LDEwICszOTQsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21w aWxlIHRlc3QgbGlicmFyeSIKICAgICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAorSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTAtMDctMDUgMjA6MDI6NTYuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBv cnQuZXhwCTIwMTAtMDctMTMgMjM6MDk6MzQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41 MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAx MC0xMC0xMiAyMDoxMjo0OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMC0xMS0xNiAwOToyNzoy MC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMTgsOSArMTE4LDMxIEBAIHByb2MgZmlsZV9jb3B5IHtz cmMgZGVzdH0gewogIHByb2MgYnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyB7dGVzdG5hbWUgZXhl Y3V0YWJsZSBzb3VyY2VzIG9wdGlvbnMge2ludGVycCAiIn0ge2RpciAiIn19IHsKICAgICAgZ2xv YmFsIG9iamRpciBzdWJkaXIKCmRpZmYgLS1naXQgYS9nZGItdGVzdHN1aXRlLWxpYi1weXRob24u cGF0Y2ggYi9nZGItdGVzdHN1aXRlLWxpYi1weXRob24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDVhNGE1NjAuLjAwMDAwMDAKLS0tIGEvZ2RiLXRlc3RzdWl0ZS1saWItcHl0 aG9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotYWQyMGU1ZWIxNWQwMzdh MzFlM2I0ODRlOWY1NzU0MmRjOTI3YzBhOQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMC0xMC9tc2cwMDAwNS5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cJMjAxMC8wOS8zMCAxODo1ODowNwkxLjI0NjIKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cJMjAxMC8xMC8wMSAxNzowMzo0OQkxLjI0NjMKLSMjIC0xLDMgKzEsMTkgQEAKLSsyMDEw LTEwLTAxICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0rCi0rCSogbGliL2dkYi1weXRo b24uZXhwOiBOZXcgZmlsZS4KLSsJKiBnZGIucHl0aG9uL3B5LWJsb2NrLmV4cDogVXNlIGl0Lgot KwkqIGdkYi5weXRob24vcHktYnJlYWtwb2ludC5leHA6IERpdHRvLgotKwkqIGdkYi5weXRob24v cHktZnJhbWUuZXhwOiBEaXR0by4KLSsJKiBnZGIucHl0aG9uL3B5LWluZmVyaW9yLmV4cDogRGl0 dG8uCi0rCSogZ2RiLnB5dGhvbi9weS1wYXJhbS5leHA6IERpdHRvLgotKwkqIGdkYi5weXRob24v cHktcHJldHR5cHJpbnQuZXhwOiBEaXR0by4KLSsJKiBnZGIucHl0aG9uL3B5LXNoYXJlZC5leHA6 IERpdHRvLgotKwkqIGdkYi5weXRob24vcHktc3ltYm9sLmV4cDogRGl0dG8uCi0rCSogZ2RiLnB5 dGhvbi9weS1zeW10YWIuZXhwOiBEaXR0by4KLSsJKiBnZGIucHl0aG9uL3B5LXR5cGUuZXhwOiBE aXR0by4KLSsJKiBnZGIucHl0aG9uL3B5LXZhbHVlLmV4cDogRGl0dG8uCi0rCSogZ2RiLnB5dGhv bi9weXRob24uZXhwOiBEaXR0by4KLSsKLSAyMDEwLTA5LTMwICBUb20gVHJvbWV5ICA8dHJvbWV5 QHJlZGhhdC5jb20+Ci0gCi0gCSogZ2RiLmJhc2UvYW5vbi5leHA6IE5ldyBmaWxlLgotLS0tIHNy Yy9nZGIvdGVzdHN1aXRlL2xpYi9nZGItcHl0aG9uLmV4cAotKysrIHNyYy9nZGIvdGVzdHN1aXRl L2xpYi9nZGItcHl0aG9uLmV4cAkyMDEwLTEwLTEyIDE3OjU4OjM1LjkwNDQ2ODAwMCArMDAwMAot QEAgLTAsMCArMSw0NyBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVXRpbGl0 aWVzIGZvciBweXRob24tc2NyaXB0aW5nIHJlbGF0ZWQgdGVzdHMuCi0rCi0rIyBSdW4gYSBjb21t YW5kIGluIEdEQiwgYW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQeXRob24gZXhjZXB0aW9uIGlz IHRocm93bi4KLSsjIElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJlcG9ydCBhIHBhc3MgaWYgbm8g ZXhjZXB0aW9uIGlzIHRocm93bi4KLSsKLStwcm9jIGdkYl9weV90ZXN0X3NpbGVudF9jbWQgeyBj bWQgbmFtZSByZXBvcnRfcGFzcyB9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsKLSsgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkbmFtZSB7Ci0rCS1yZSAiVHJhY2ViYWNrLiokZ2RiX3By b21wdCAkIiB7IGZhaWwgJG5hbWUgfQotKwktcmUgIiRnZGJfcHJvbXB0ICQiICAgICAgICAgICAg eyBpZiAkcmVwb3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQotKyAgICB9Ci0rfQotKwotKyMgVXNh Z2U6IGdkYl9weV90ZXN0X211bHRpcGxlIE5BTUUgSU5QVVQgUkVTVUxUIHtJTlBVVCBSRVNVTFR9 Li4uCi0rIyBSdW4gYSB0ZXN0IG5hbWVkIE5BTUUsIGNvbnNpc3Rpbmcgb2YgbXVsdGlwbGUgbGlu ZXMgb2YgaW5wdXQuCi0rIyBBZnRlciBlYWNoIGlucHV0IGxpbmUgSU5QVVQsIHNlYXJjaCBmb3Ig cmVzdWx0IGxpbmUgUkVTVUxULgotKyMgU3VjY2VlZCBpZiBhbGwgcmVzdWx0cyBhcmUgc2Vlbjsg ZmFpbCBvdGhlcndpc2UuCi0rCi0rcHJvYyBnZGJfcHlfdGVzdF9tdWx0aXBsZSB7IG5hbWUgYXJn cyB9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsgICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0 fSAkYXJncyB7Ci0rCWlmIHtbZ2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1 dCIgewotKwkgICAgLXJlICJcW1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQg fCAqPikkIiB7Ci0rCQlwYXNzICIkbmFtZSAtICRpbnB1dCIKLSsJICAgIH0KLSsJfV19IHsKLSsJ ICAgIHJldHVybiAxCi0rCX0KLSsgICAgfQotKyAgICByZXR1cm4gMAotK30KCmRpZmYgLS1naXQg YS9nZGItdXBzdHJlYW0ucGF0Y2ggYi9nZGItdXBzdHJlYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGFkM2QxMGMuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNDY3ICswLDAgQEAKLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0 LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjEwOTg2Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDEwLTA4L21zZzAwMTEyLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAv MDgvMTggMjI6NTc6NDUJMS4xMjA5NwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDgvMTkg MDc6MzQ6MjYJMS4xMjA5OAotIyMgLTEsMyArMSw5IEBACi0rMjAxMC0wOC0xOSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIHZhcm9iai5jICh2YXJv YmpfY3JlYXRlKTogUmVwbGFjZSB2YXJpYWJsZSBvbGRfZmkgd2l0aCBvbGRfaWQsCi0rCWluaXRp YWxpemUgaXQgYnkgbnVsbF9mcmFtZV9pZCwgd3JhcCBpdHMgdXNhZ2UgYnkgZ2V0X2ZyYW1lX2lk LAotKwlmcmFtZV9pZF9wIGFuZCBmcmFtZV9maW5kX2J5X2lkLgotKwotIDIwMTAtMDgtMTggIFRv bSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJUFIgcHl0aG9uLzExOTAwOgotLS0t IHNyYy9nZGIvdmFyb2JqLmMJMjAxMC8wOC8wNiAxNDoxNzo1NgkxLjE1OQotKysrIHNyYy9nZGIv dmFyb2JqLmMJMjAxMC8wOC8xOSAwNzozNDoyNwkxLjE2MAotQEAgLTUyNCw3ICs1MjQsNyBAQCB2 YXJvYmpfY3JlYXRlIChjaGFyICpvYmpuYW1lLAotIHsKLSAgIHN0cnVjdCB2YXJvYmogKnZhcjsK LSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmaTsKLS0gIHN0cnVjdCBmcmFtZV9pbmZvICpvbGRfZmkg PSBOVUxMOwotKyAgc3RydWN0IGZyYW1lX2lkIG9sZF9pZCA9IG51bGxfZnJhbWVfaWQ7Ci0gICBz dHJ1Y3QgYmxvY2sgKmJsb2NrOwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAKLUBA IC02MTEsNyArNjExLDcgQEAKLSAKLSAJICB2YXItPnJvb3QtPmZyYW1lID0gZ2V0X2ZyYW1lX2lk IChmaSk7Ci0gCSAgdmFyLT5yb290LT50aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZl cmlvcl9wdGlkKTsKLS0JICBvbGRfZmkgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpOwotKwkg IG9sZF9pZCA9IGdldF9mcmFtZV9pZCAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSk7Ci0gCSAg c2VsZWN0X2ZyYW1lIChmaSk7CSAKLSAJfQotIAotQEAgLTYzOSw4ICs2MzksOCBAQAotICAgICAg IHZhci0+cm9vdC0+cm9vdHZhciA9IHZhcjsKLSAKLSAgICAgICAvKiBSZXNldCB0aGUgc2VsZWN0 ZWQgZnJhbWUgKi8KLS0gICAgICBpZiAob2xkX2ZpICE9IE5VTEwpCi0tCXNlbGVjdF9mcmFtZSAo b2xkX2ZpKTsKLSsgICAgICBpZiAoZnJhbWVfaWRfcCAob2xkX2lkKSkKLSsJc2VsZWN0X2ZyYW1l IChmcmFtZV9maW5kX2J5X2lkIChvbGRfaWQpKTsKLSAgICAgfQotIAotICAgLyogSWYgdGhlIHZh cmlhYmxlIG9iamVjdCBuYW1lIGlzIG51bGwsIHRoYXQgbWVhbnMgdGhpcwotCi0KLQotaHR0cHM6 Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02Mjc1MDYKLVJlOiBbcGF0Y2hd IEZpeCBuZXN0aW5nIG9mIHVpX291dF9yZWRpcmVjdAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAxMjIuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMC0wOS9tc2cwMDAzMS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEwLzA5LzAzIDAxOjI5OjA5CTEuMTIxNDkKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEw LzA5LzAzIDE1OjQxOjU5CTEuMTIxNTAKLSMjIC0xLDMgKzEsMjcgQEAKLSsyMDEwLTA5LTAzICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogYnJlYWtw b2ludC5jIChzYXZlX2JyZWFrcG9pbnRzKTogVXNlIFJFVFVSTl9NQVNLX0FMTC4KLSsJKiBjbGkt b3V0LmM6IEluY2x1ZGUgdmVjLmguCi0rCShjbGlfZmllbGRfZm10LCBjbGlfc3BhY2VzLCBjbGlf dGV4dCwgY2xpX21lc3NhZ2UsIGNsaV9mbHVzaCk6IE5ldwotKwl2YXJpYWJsZSBzdHJlYW0sIGlu aXRpYWxpemUgaXQsIHVzZSBpdC4KLSsJKGNsaV9yZWRpcmVjdCk6IE5ldyBmdW5jdGlvbiBjb21t ZW50LiAgUmVwbGFjZSB0aGUgc3RyZWFtIGFuZAotKwlvcmlnaW5hbF9zdHJlYW0gZmllbGRzIGJ5 IHRoZSBuZXcgc3RyZWFtcyBmaWVsZC4gIFJlbW92ZSB0aGUKLSsJb3JpZ2luYWxfc3RyZWFtICE9 IE5VTEwgY29uZGl0aW9uYWwsIGFzc2VydCBlcnJvciBvbiBOVUxMIGluc3RlYWQuCi0rCShvdXRf ZmllbGRfZm10LCBmaWVsZF9zZXBhcmF0b3IpOiBOZXcgdmFyaWFibGUgc3RyZWFtLCBpbml0aWFs aXplIGl0LCB1c2UgaXQuCi0rCShjbGlfb3V0X2RhdGFfY3Rvcik6IEFzc2VydCBub24tTlVMTCBz dHJlYW0uICBSZXBsYWNlIHRoZSBzdHJlYW0gYW5kCi0rCW9yaWdpbmFsX3N0cmVhbSBmaWVsZHMg YnkgdGhlIG5ldyBzdHJlYW1zIGZpZWxkLgotKwkoY2xpX291dF9zZXRfc3RyZWFtKTogUmVwbGFj ZSB0aGUgc3RyZWFtIGZpZWxkIGJ5IHRoZSBuZXcgc3RyZWFtcwotKwlmaWVsZC4KLSsJKiBjbGkt b3V0Lmg6IEluY2x1ZGUgdmVjLmguCi0rCSh1aV9maWxlcCk6IE5ldyB0eXBlZGVmLCBjYWxsIERF Rl9WRUNfUCBmb3IgaXQuCi0rCShzdHJ1Y3QgY2xpX3VpX291dF9kYXRhKTogUmVwbGFjZSB0aGUg c3RyZWFtIGFuZCBvcmlnaW5hbF9zdHJlYW0KLSsJZmllbGRzIGJ5IHRoZSBuZXcgc3RyZWFtcyBm aWVsZC4KLSsJKiBjbGkvY2xpLWxvZ2dpbmcuYyAoc2V0X2xvZ2dpbmdfcmVkaXJlY3QpOiBDYWxs IHVpX291dF9yZWRpcmVjdCB3aXRoCi0rCU5VTEwgZmlyc3QuICBFeHRlbmQgdGhlIGNvbW1lbnQu Ci0rCShoYW5kbGVfcmVkaXJlY3Rpb25zKTogQ2FsbCB1aV9vdXRfcmVkaXJlY3Qgd2l0aCBvdXRw dXQuCi0rCSogcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyAoYnBweV9nZXRfY29tbWFuZHMpOiBNb3Zl IHVpX291dF9yZWRpcmVjdAotKwljYWxscyBvdXRzaWRlIG9mIHRoZSBUUllfQ0FUQ0ggYmxvY2su Ci0rCi0KLVsgY2xpL2NsaS1sb2dnaW5nLmMgcmVtb3ZlZC4gIF0KLQotLS0tIHNyYy9nZGIvYnJl YWtwb2ludC5jCTIwMTAvMDgvMzAgMDk6NDk6MTIJMS41MTEKLSsrKyBzcmMvZ2RiL2JyZWFrcG9p bnQuYwkyMDEwLzA5LzAzIDE1OjQyOjAyCTEuNTEyCi1AQCAtMTE0ODcsNyArMTE0ODcsNyBAQAot IAlmcHJpbnRmX3VuZmlsdGVyZWQgKGZwLCAiICBjb21tYW5kc1xuIik7Ci0gCQotIAl1aV9vdXRf cmVkaXJlY3QgKHVpb3V0LCBmcCk7Ci0tCVRSWV9DQVRDSCAoZXgsIFJFVFVSTl9NQVNLX0VSUk9S KQotKwlUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19BTEwpCi0gCSAgewotIAkgICAgcHJpbnRf Y29tbWFuZF9saW5lcyAodWlvdXQsIHRwLT5jb21tYW5kcy0+Y29tbWFuZHMsIDIpOwotIAkgIH0K LS0tLSBzcmMvZ2RiL2NsaS1vdXQuYwkyMDEwLzA1LzEzIDIzOjUzOjMyCTEuMzAKLSsrKyBzcmMv Z2RiL2NsaS1vdXQuYwkyMDEwLzA5LzAzIDE1OjQyOjAyCTEuMzEKLUBAIC0yNiw2ICsyNiw3IEBA Ci0gI2luY2x1ZGUgImNsaS1vdXQuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotICNpbmNs dWRlICJnZGJfYXNzZXJ0LmgiCi0rI2luY2x1ZGUgInZlYy5oIgotIAotIHR5cGVkZWYgc3RydWN0 IGNsaV91aV9vdXRfZGF0YSBjbGlfb3V0X2RhdGE7Ci0gCi1AQCAtMjI0LDExICsyMjUsMTMgQEAK LSAJICAgICAgIHZhX2xpc3QgYXJncykKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9v dXRfZGF0YSAodWlvdXQpOwotKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKLSAKLSAgIGlmIChk YXRhLT5zdXBwcmVzc19vdXRwdXQpCi0gICAgIHJldHVybjsKLSAKLS0gIHZmcHJpbnRmX2ZpbHRl cmVkIChkYXRhLT5zdHJlYW0sIGZvcm1hdCwgYXJncyk7Ci0rICBzdHJlYW0gPSBWRUNfbGFzdCAo dWlfZmlsZXAsIGRhdGEtPnN0cmVhbXMpOwotKyAgdmZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg Zm9ybWF0LCBhcmdzKTsKLSAKLSAgIGlmIChhbGlnbiAhPSB1aV9ub2FsaWduKQotICAgICBmaWVs ZF9zZXBhcmF0b3IgKCk7Ci1AQCAtMjM4LDIwICsyNDEsMjYgQEAKLSBjbGlfc3BhY2VzIChzdHJ1 Y3QgdWlfb3V0ICp1aW91dCwgaW50IG51bXNwYWNlcykKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRh dGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOwotKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKLSAK LSAgIGlmIChkYXRhLT5zdXBwcmVzc19vdXRwdXQpCi0gICAgIHJldHVybjsKLS0gIHByaW50X3Nw YWNlc19maWx0ZXJlZCAobnVtc3BhY2VzLCBkYXRhLT5zdHJlYW0pOwotKwotKyAgc3RyZWFtID0g VkVDX2xhc3QgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKLSsgIHByaW50X3NwYWNlc19maWx0 ZXJlZCAobnVtc3BhY2VzLCBzdHJlYW0pOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotIGNsaV90ZXh0 IChzdHJ1Y3QgdWlfb3V0ICp1aW91dCwgY29uc3QgY2hhciAqc3RyaW5nKQotIHsKLSAgIGNsaV9v dXRfZGF0YSAqZGF0YSA9IHVpX291dF9kYXRhICh1aW91dCk7Ci0rICBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtOwotIAotICAgaWYgKGRhdGEtPnN1cHByZXNzX291dHB1dCkKLSAgICAgcmV0dXJuOwot LSAgZnB1dHNfZmlsdGVyZWQgKHN0cmluZywgZGF0YS0+c3RyZWFtKTsKLSsKLSsgIHN0cmVhbSA9 IFZFQ19sYXN0ICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcyk7Ci0rICBmcHV0c19maWx0ZXJlZCAo c3RyaW5nLCBzdHJlYW0pOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfUFJJTlRGICgz LCAwKQotQEAgLTI2Miw4ICsyNzEsMTMgQEAKLSAKLSAgIGlmIChkYXRhLT5zdXBwcmVzc19vdXRw dXQpCi0gICAgIHJldHVybjsKLSsKLSAgIGlmICh1aV9vdXRfZ2V0X3ZlcmJsdmwgKHVpb3V0KSA+ PSB2ZXJib3NpdHkpCi0tICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKGRhdGEtPnN0cmVhbSwgZm9y bWF0LCBhcmdzKTsKLSsgICAgewotKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0gPSBWRUNf bGFzdCAodWlfZmlsZXAsIGRhdGEtPnN0cmVhbXMpOwotKwotKyAgICAgIHZmcHJpbnRmX3VuZmls dGVyZWQgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgdm9p ZAotQEAgLTI4MCwyNSArMjk0LDI0IEBACi0gY2xpX2ZsdXNoIChzdHJ1Y3QgdWlfb3V0ICp1aW91 dCkKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOwotKyAg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSA9IFZFQ19sYXN0ICh1aV9maWxlcCwgZGF0YS0+c3RyZWFt cyk7Ci0gCi0tICBnZGJfZmx1c2ggKGRhdGEtPnN0cmVhbSk7Ci0rICBnZGJfZmx1c2ggKHN0cmVh bSk7Ci0gfQotIAotKy8qIE9VVFNUUkVBTSBhcyBub24tTlVMTCB3aWxsIHB1c2ggT1VUU1RSRUFN IG9uIHRoZSBzdGFjayBvZiBvdXRwdXQgc3RyZWFtcwotKyAgIGFuZCBtYWtlIGl0IHRoZXJlZm9y ZSBhY3RpdmUuICBPVVRTVFJFQU0gYXMgTlVMTCB3aWxsIHBvcCB0aGUgbGFzdCBwdXNoZWQKLSsg ICBvdXRwdXQgc3RyZWFtOyBpdCBpcyBhbiBpbnRlcm5hbCBlcnJvciBpZiBpdCBkb2VzIG5vdCBl eGlzdC4gICovCi0rCi0gc3RhdGljIGludAotIGNsaV9yZWRpcmVjdCAoc3RydWN0IHVpX291dCAq dWlvdXQsIHN0cnVjdCB1aV9maWxlICpvdXRzdHJlYW0pCi0gewotICAgY2xpX291dF9kYXRhICpk YXRhID0gdWlfb3V0X2RhdGEgKHVpb3V0KTsKLSAKLSAgIGlmIChvdXRzdHJlYW0gIT0gTlVMTCkK LS0gICAgewotLSAgICAgIGRhdGEtPm9yaWdpbmFsX3N0cmVhbSA9IGRhdGEtPnN0cmVhbTsKLS0g ICAgICBkYXRhLT5zdHJlYW0gPSBvdXRzdHJlYW07Ci0tICAgIH0KLS0gIGVsc2UgaWYgKGRhdGEt Pm9yaWdpbmFsX3N0cmVhbSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgZGF0YS0+c3RyZWFtID0g ZGF0YS0+b3JpZ2luYWxfc3RyZWFtOwotLSAgICAgIGRhdGEtPm9yaWdpbmFsX3N0cmVhbSA9IE5V TEw7Ci0tICAgIH0KLSsgICAgVkVDX3NhZmVfcHVzaCAodWlfZmlsZXAsIGRhdGEtPnN0cmVhbXMs IG91dHN0cmVhbSk7Ci0rICBlbHNlCi0rICAgIFZFQ19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJl YW1zKTsKLSAKLSAgIHJldHVybiAwOwotIH0KLUBAIC0zMTUsMTAgKzMyOCwxMSBAQAotIAkgICAg ICAgY29uc3QgY2hhciAqZm9ybWF0LC4uLikKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1 aV9vdXRfZGF0YSAodWlvdXQpOwotKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSA9IFZFQ19sYXN0 ICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcyk7Ci0gICB2YV9saXN0IGFyZ3M7Ci0gCi0gICB2YV9z dGFydCAoYXJncywgZm9ybWF0KTsKLS0gIHZmcHJpbnRmX2ZpbHRlcmVkIChkYXRhLT5zdHJlYW0s IGZvcm1hdCwgYXJncyk7Ci0rICB2ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBmb3JtYXQsIGFy Z3MpOwotIAotICAgdmFfZW5kIChhcmdzKTsKLSB9Ci1AQCAtMzI5LDggKzM0Myw5IEBACi0gZmll bGRfc2VwYXJhdG9yICh2b2lkKQotIHsKLSAgIGNsaV9vdXRfZGF0YSAqZGF0YSA9IHVpX291dF9k YXRhICh1aW91dCk7Ci0rICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtID0gVkVDX2xhc3QgKHVpX2Zp bGVwLCBkYXRhLT5zdHJlYW1zKTsKLSAKLS0gIGZwdXRjX2ZpbHRlcmVkICgnICcsIGRhdGEtPnN0 cmVhbSk7Ci0rICBmcHV0Y19maWx0ZXJlZCAoJyAnLCBzdHJlYW0pOwotIH0KLSAKLSAvKiBUaGlz IGlzIHRoZSBDTEkgdWktb3V0IGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucyB2ZWN0b3IgKi8KLUBA IC0zNjQsOCArMzc5LDExIEBACi0gdm9pZAotIGNsaV9vdXRfZGF0YV9jdG9yIChjbGlfb3V0X2Rh dGEgKnNlbGYsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0gewotLSAgc2VsZi0+c3RyZWFtID0g c3RyZWFtOwotLSAgc2VsZi0+b3JpZ2luYWxfc3RyZWFtID0gTlVMTDsKLSsgIGdkYl9hc3NlcnQg KHN0cmVhbSAhPSBOVUxMKTsKLSsKLSsgIHNlbGYtPnN0cmVhbXMgPSBOVUxMOwotKyAgVkVDX3Nh ZmVfcHVzaCAodWlfZmlsZXAsIHNlbGYtPnN0cmVhbXMsIHN0cmVhbSk7Ci0rCi0gICBzZWxmLT5z dXBwcmVzc19vdXRwdXQgPSAwOwotIH0KLSAKLUBAIC0zODUsOCArNDAzLDEwIEBACi0gY2xpX291 dF9zZXRfc3RyZWFtIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSkKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOwotLSAg c3RydWN0IHVpX2ZpbGUgKm9sZCA9IGRhdGEtPnN0cmVhbTsKLSsgIHN0cnVjdCB1aV9maWxlICpv bGQ7Ci0rICAKLSsgIG9sZCA9IFZFQ19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKLSsg IFZFQ19xdWlja19wdXNoICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcywgc3RyZWFtKTsKLSAKLS0g IGRhdGEtPnN0cmVhbSA9IHN0cmVhbTsKLSAgIHJldHVybiBvbGQ7Ci0gfQotLS0tIHNyYy9nZGIv Y2xpLW91dC5oCTIwMTAvMDQvMTggMDA6MTE6NTUJMS4xMQotKysrIHNyYy9nZGIvY2xpLW91dC5o CTIwMTAvMDkvMDMgMTU6NDI6MDIJMS4xMgotQEAgLTIyLDE0ICsyMiwxOSBAQAotICNkZWZpbmUg Q0xJX09VVF9ICi0gCi0gI2luY2x1ZGUgInVpLW91dC5oIgotKyNpbmNsdWRlICJ2ZWMuaCIKLSsK LSsvKiBVc2VkIGZvciBjbGlfdWlfb3V0X2RhdGEtPnN0cmVhbXMuICAqLwotKwotK3R5cGVkZWYg c3RydWN0IHVpX2ZpbGUgKnVpX2ZpbGVwOwotK0RFRl9WRUNfUCAodWlfZmlsZXApOwotIAotIC8q IFRoZXNlIGFyZSBleHBvcnRlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4dGVuZGVkIGJ5IG90aGVy IGB1aV9vdXQnCi0gICAgaW1wbGVtZW50YXRpb25zLCBsaWtlIFRVSSdzLiAgKi8KLSAKLSBzdHJ1 Y3QgY2xpX3VpX291dF9kYXRhCi0gICB7Ci0tICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07Ci0t ICAgIHN0cnVjdCB1aV9maWxlICpvcmlnaW5hbF9zdHJlYW07Ci0rICAgIFZFQyAodWlfZmlsZXAp ICpzdHJlYW1zOwotICAgICBpbnQgc3VwcHJlc3Nfb3V0cHV0OwotICAgfTsKLSAKLS0tLSBzcmMv Z2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMJMjAxMC8wNy8wMSAxMDozNjoxMgkxLjQKLSsrKyBz cmMvZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMJMjAxMC8wOS8wMyAxNTo0MjowMwkxLjUKLUBA IC00NzQsMTIgKzQ3NCwxMiBAQAotICAgc3RyaW5nX2ZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7Ci0g ICBjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RyaW5nX2ZpbGUpOwotIAot KyAgdWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgc3RyaW5nX2ZpbGUpOwotICAgVFJZX0NBVENIIChl eGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSAgICAgewotLSAgICAgIHVpX291dF9yZWRpcmVjdCAo dWlvdXQsIHN0cmluZ19maWxlKTsKLSAgICAgICBwcmludF9jb21tYW5kX2xpbmVzICh1aW91dCwg YnJlYWtwb2ludF9jb21tYW5kcyAoYnApLCAwKTsKLS0gICAgICB1aV9vdXRfcmVkaXJlY3QgKHVp b3V0LCBOVUxMKTsKLSAgICAgfQotKyAgdWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgTlVMTCk7Ci0g ICBjbWRzdHIgPSB1aV9maWxlX3hzdHJkdXAgKHN0cmluZ19maWxlLCAmbGVuZ3RoKTsKLSAgIEdE Ql9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOwotIAotIyMjIHNyYy9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwkyMDEwLzA5LzAyIDE1OjE5OjU2CTEuMjQzNQotIyMjIHNyYy9nZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZwkyMDEwLzA5LzAzIDE1OjQyOjA0CTEuMjQzNgotIyMgLTEsMyArMSw3IEBA Ci0rMjAxMC0wOS0wMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotKwotKwkqIGdkYi5iYXNlL3VpLXJlZGlyZWN0LmV4cDogTmV3IGZpbGUuCi0rCi0gMjAxMC0w OS0wMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotICAgICAg ICAgICAgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgotIAotLS0tIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3VpLXJlZGlyZWN0LmV4cAotKysrIHNyYy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3VpLXJlZGlyZWN0LmV4cAkyMDEwLTA5LTExIDE4OjQyOjQwLjA0MDkx MDAwMCArMDAwMAotQEAgLTAsMCArMSw0MSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nIHVpLXJlZGlyZWN0LmV4cCB1aS1yZWRp cmVjdCBzdGFydC5jXSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9icmVha3BvaW50 IG1haW4KLSsKLStzZXQgdGVzdCAiY29tbWFuZHMiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3Qg JHRlc3QgewotKyAgICAtcmUgIkVuZCB3aXRoIGEgbGluZSBzYXlpbmcganVzdCBcImVuZFwiXFwu XHJcbj4kIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStzZXQgdGVzdCAicHJpbnQg MSIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiXHJcbj4kIiB7 Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLStnZGJfdGVzdF9ub19vdXRwdXQgImVuZCIKLSsK LStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBsb2dnaW5nIGZpbGUgL2Rldi9udWxsIgotK2dkYl90 ZXN0ICJzZXQgbG9nZ2luZyBvbiIgIkNvcHlpbmcgb3V0cHV0IHRvIC9kZXYvbnVsbFxcLiIKLStn ZGJfdGVzdCAic2F2ZSBicmVha3BvaW50cyAvZGV2L251bGwiICJTYXZlZCB0byBmaWxlICcvZGV2 L251bGwnXFwuIgotK2dkYl90ZXN0ICJzZXQgbG9nZ2luZyBvZmYiICJEb25lIGxvZ2dpbmcgdG8g L2Rldi9udWxsXFwuIgotK2dkYl90ZXN0ICJoZWxwIiAiTGlzdCBvZiBjbGFzc2VzIG9mIGNvbW1h bmRzOi4qIgotCi0KLQotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9p ZD02Mjc1MDYKLVJlOiBbcGF0Y2hdIEZpeCB1aW91dCBmb3IgZXhlY3V0ZV9jb21tYW5kX3RvX3N0 cmluZwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAy MzUuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOS9tc2cwMDA4 MC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzEwIDE2OjE3OjExCTEuMTIx NzAKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzExIDE2OjAwOjIwCTEuMTIxNzEKLSMj IC0xLDMgKzEsMjEgQEAKLSsyMDEwLTA5LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0rCSAgICBQYXVsIEJvbGxlICA8cGVib2xsZUB0aXNjYWxpLm5sPgot KwotKwlSZWRpcmVjdCBhbHNvIHVpb3V0IGFuZCBzdGR0YXJneyxlcnJ9IGluIGV4ZWN1dGVfY29t bWFuZF90b19zdHJpbmcuCi0rCSogY2xpLWxvZ2dpbmcuYyAoc3RydWN0IHNhdmVkX291dHB1dF9m aWxlcykgPHRhcmdlcnI+OiBOZXcuCi0rCShzZXRfbG9nZ2luZ19yZWRpcmVjdCwgcG9wX291dHB1 dF9maWxlcywgaGFuZGxlX3JlZGlyZWN0aW9ucyk6Ci0rCVJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRh cmdlcnIuCi0rCSogZGVmcy5oIChzdHJ1Y3QgdWlfb3V0LCBtYWtlX2NsZWFudXBfdWlfb3V0X3Jl ZGlyZWN0X3BvcCk6IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogZXZlbnQtdG9wLmMgKGdkYl9z ZXR1cF9yZWFkbGluZSwgZ2RiX2Rpc2FibGVfcmVhZGxpbmUpOiBSZWRpcmVjdAotKwlhbHNvIGdk Yl9zdGR0YXJnZXJyLgotKwkqIHRvcC5jIChleGVjdXRlX2NvbW1hbmRfdG9fc3RyaW5nKTogTW92 ZSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUKLSsJdG8gdGhlIHRvcC4gIFJlZGlyZWN0IGFs c28gZ2RiX3N0ZGxvZywgZ2RiX3N0ZHRhcmcgYW5kIGdkYl9zdGR0YXJnZXJyLgotKwlVc2UgdWlf b3V0X3JlZGlyZWN0LCByZWdpc3RlciBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcC4K LSsJKiB0dWkvdHVpLWlvLmMgKHR1aV9zZXR1cF9pbyk6IFJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRh cmdlcnIuCi0rCSogdXRpbHMuYyAoZG9fdWlfb3V0X3JlZGlyZWN0X3BvcCwgbWFrZV9jbGVhbnVw X3VpX291dF9yZWRpcmVjdF9wb3ApOgotKwlOZXcgZnVuY3Rpb25zLgotKwotCi0jIyMgc3JjL2dk Yi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDkvMTAgMjA6Mjk6MjUJMS4yNDQ0Ci0jIyMgc3Jj L2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDkvMTEgMTY6MDA6MjYJMS4yNDQ1Ci0jIyAt MSwzICsxLDggQEAKLSsyMDEwLTA5LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnB5dGhvbi9weXRob24uZXhwIChzZXQgaGVpZ2h0IDAs IGNvbGxlY3QgaGVscCBmcm9tIHVpb3V0KQotKwkodmVyaWZ5IGhlbHAgdG8gdWlvdXQpOiBOZXcg dGVzdHMuCi0rCi0KLVsgZ2RiX3N0ZHRhcmdlcnIgaGFuZGxpbmcgZHJvcHBlZC4gIF0KLQotLS0t IHNyYy9nZGIvZGVmcy5oCTIwMTAvMDgvMzEgMTg6MDg6NDMJMS4yNzgKLSsrKyBzcmMvZ2RiL2Rl ZnMuaAkyMDEwLzA5LzExIDE2OjAwOjI1CTEuMjc5Ci1AQCAtMzM3LDYgKzMzNywxMCBAQAotIHN0 cnVjdCB1aV9maWxlOwotIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3VpX2Zp bGVfZGVsZXRlIChzdHJ1Y3QgdWlfZmlsZSAqKTsKLSAKLStzdHJ1Y3QgdWlfb3V0OwotK2V4dGVy biBzdHJ1Y3QgY2xlYW51cCAqCi0rICBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcCAo c3RydWN0IHVpX291dCAqdWlvdXQpOwotKwotIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbzsKLSBl eHRlcm4gc3RydWN0IGNsZWFudXAgKihtYWtlX2NsZWFudXBfZnJlZV9zZWN0aW9uX2FkZHJfaW5m byAKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICop KTsKLS0tLSBzcmMvZ2RiL3RvcC5jCTIwMTAvMDgvMDcgMTU6MDA6MzcJMS4xODMKLSsrKyBzcmMv Z2RiL3RvcC5jCTIwMTAvMDkvMTEgMTY6MDA6MjUJMS4xODQKLUBAIC00NzUsMTIgKzQ3NSwyMyBA QAotIAotICAgc3RyX2ZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7Ci0gCi0rICBtYWtlX2NsZWFudXBf dWlfZmlsZV9kZWxldGUgKHN0cl9maWxlKTsKLSAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2Zp bGUgKCZnZGJfc3Rkb3V0KTsKLSAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJf c3RkZXJyKTsKLS0gIG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RyX2ZpbGUpOwotKyAg bWFrZV9jbGVhbnVwX3Jlc3RvcmVfdWlfZmlsZSAoJmdkYl9zdGRsb2cpOwotKyAgbWFrZV9jbGVh bnVwX3Jlc3RvcmVfdWlfZmlsZSAoJmdkYl9zdGR0YXJnKTsKLSsgIG1ha2VfY2xlYW51cF9yZXN0 b3JlX3VpX2ZpbGUgKCZnZGJfc3RkdGFyZ2Vycik7Ci0rCi0rICBpZiAodWlfb3V0X3JlZGlyZWN0 ICh1aW91dCwgc3RyX2ZpbGUpIDwgMCkKLSsgICAgd2FybmluZyAoXygiQ3VycmVudCBvdXRwdXQg cHJvdG9jb2wgZG9lcyBub3Qgc3VwcG9ydCByZWRpcmVjdGlvbiIpKTsKLSsgIGVsc2UKLSsgICAg bWFrZV9jbGVhbnVwX3VpX291dF9yZWRpcmVjdF9wb3AgKHVpb3V0KTsKLSAKLSAgIGdkYl9zdGRv dXQgPSBzdHJfZmlsZTsKLSAgIGdkYl9zdGRlcnIgPSBzdHJfZmlsZTsKLSsgIGdkYl9zdGRsb2cg PSBzdHJfZmlsZTsKLSsgIGdkYl9zdGR0YXJnID0gc3RyX2ZpbGU7Ci0rICBnZGJfc3RkdGFyZ2Vy ciA9IHN0cl9maWxlOwotIAotICAgZXhlY3V0ZV9jb21tYW5kIChwLCBmcm9tX3R0eSk7Ci0gCi0t LS0gc3JjL2dkYi91dGlscy5jCTIwMTAvMDgvMDcgMTU6MDA6MzcJMS4yMzkKLSsrKyBzcmMvZ2Ri L3V0aWxzLmMJMjAxMC8wOS8xMSAxNjowMDoyNQkxLjI0MAotQEAgLTMxMSw2ICszMTEsMjYgQEAK LSAgIHJldHVybiBtYWtlX215X2NsZWFudXAgKCZjbGVhbnVwX2NoYWluLCBkb191aV9maWxlX2Rl bGV0ZSwgYXJnKTsKLSB9Ci0gCi0rLyogSGVscGVyIGZ1bmN0aW9uIGZvciBtYWtlX2NsZWFudXBf dWlfb3V0X3JlZGlyZWN0X3BvcC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkb191aV9vdXRfcmVk aXJlY3RfcG9wICh2b2lkICphcmcpCi0rewotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBhcmc7 Ci0rCi0rICBpZiAodWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgTlVMTCkgPCAwKQotKyAgICB3YXJu aW5nIChfKCJDYW5ub3QgcmVzdG9yZSByZWRpcmVjdGlvbiBvZiB0aGUgY3VycmVudCBvdXRwdXQg cHJvdG9jb2wiKSk7Ci0rfQotKwotKy8qIFJldHVybiBhIG5ldyBjbGVhbnVwIHRoYXQgcG9wcyB0 aGUgbGFzdCByZWRpcmVjdGlvbiBieSB1aV9vdXRfcmVkaXJlY3QKLSsgICB3aXRoIE5VTEwgcGFy YW1ldGVyLiAgKi8KLSsKLStzdHJ1Y3QgY2xlYW51cCAqCi0rbWFrZV9jbGVhbnVwX3VpX291dF9y ZWRpcmVjdF9wb3AgKHN0cnVjdCB1aV9vdXQgKnVpb3V0KQotK3sKLSsgIHJldHVybiBtYWtlX215 X2NsZWFudXAgKCZjbGVhbnVwX2NoYWluLCBkb191aV9vdXRfcmVkaXJlY3RfcG9wLCB1aW91dCk7 Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gZG9fZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAodm9pZCAq YXJnKQotIHsKLS0tLSBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhw LW9yaWcJMjAxMC0wOC0wOSAyMToyMzowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhwCTIwMTAtMDktMTEgMjA6NDk6MjIuMDAw MDAwMDAwICswMjAwCi1AQCAtMTEwLDMgKzExMCw5IEBAIGdkYl90ZXN0X211bHRpcGxlICJweXRo b24gcHJpbnQgXCJcXG5cIiAKLSAgICAgfQotIH0KLSBnZGJfdGVzdCAicSIgIlF1aXQiICJ2ZXJp ZnkgcGFnaW5hdGlvbiBhZnRlcndhcmRzOiBxIgotKwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0 IGhlaWdodCAwIgotKwotK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGEgPSBnZGIuZXhlY3V0 ZSgnaGVscCcsIHRvX3N0cmluZz1UcnVlKSIgImNvbGxlY3QgaGVscCBmcm9tIHVpb3V0IgotKwot K2dkYl90ZXN0ICJweXRob24gcHJpbnQgYSIgIi4qYWxpYXNlcyAtLSBBbGlhc2VzIG9mIG90aGVy IGNvbW1hbmRzLioiICJ2ZXJpZnkgaGVscCB0byB1aW91dCIKCmRpZmYgLS1naXQgYS9nZGIuc3Bl YyBiL2dkYi5zcGVjCmluZGV4IGE3MDkxMjAuLmM4MmU3NTIgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVj CisrKyBiL2dkYi5zcGVjCkBAIC0yMywxOCArMjMsMTkgQEAgTmFtZTogZ2RiJXs/X3dpdGhfZGVi dWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBvZiBnZGIvdmVyc2lvbi5pbi4K ICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJlcmVkIE4uTSBmb3Igb2ZmaWNp YWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFudWFyeSAyMDA1LCBYLlkuWi5k YXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIwMDUwMTEyICMgKGRhaWx5IHNu YXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEyIChoZWFkIG9mIHRoZSByZWxl YXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjIKK1ZlcnNpb246IDcuMi41MC4yMDEwMTExNwogCiAj IFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBz dGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0 YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJl bGVhc2U6IDI1JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7ZGlzdH0KK1JlbGVhc2U6IDEl ez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5k IEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0 aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgR0ZETCBhbmQgQlNEIGFuZCBQdWJsaWMgRG9t YWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCiAjIERvIG5vdCBwcm92aWRlIFVSTCBm b3Igc25hcHNob3RzIGFzIHRoZSBmaWxlIGxhc3RzIHRoZXJlIG9ubHkgZm9yIDIgZGF5cy4KKyMg ZnRwOi8vc291cmNld2FyZS5vcmcvcHViL2dkYi9zbmFwc2hvdHMvY3VycmVudC9nZGItJXt2ZXJz aW9ufS50YXIuYnoyCiAjIGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvc25hcHNob3RzL2Jy YW5jaC9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCiAjIGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9n ZGIvcmVsZWFzZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgotU291cmNlOiBmdHA6Ly9zb3VyY2V3 YXJlLm9yZy9wdWIvZ2RiL3NuYXBzaG90cy9icmFuY2gvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6Mgor U291cmNlOiBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3NuYXBzaG90cy9jdXJyZW50L2dk Yi0le3ZlcnNpb259LnRhci5iejIKIEJ1aWxkcm9vdDogJShta3RlbXAgLXVkICV7X3RtcHBhdGh9 LyV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LVhYWFhYWCkKIFVSTDogaHR0cDovL2dudS5v cmcvc29mdHdhcmUvZ2RiLwogCkBAIC0yNzYsOCArMjc3LDggQEAgUGF0Y2gyMjk6IGdkYi02LjMt YnoxNDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoCiBQYXRjaDIzMTogZ2RiLTYuMy1iejIw MjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0LnBhdGNoCiAKICMgQmFja3BvcnRlZCBmaXh1cHMg cG9zdCB0aGUgc291cmNlIHRhcmJhbGwuCi0jPWRyb3A6IEp1c3QgYmFja3BvcnRzLgotUGF0Y2gy MzI6IGdkYi11cHN0cmVhbS5wYXRjaAorI1hkcm9wOiBKdXN0IGJhY2twb3J0cy4KKyNQYXRjaDIz MjogZ2RiLXVwc3RyZWFtLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIFBQQyBQb3dlcjYvREZQIGlu c3RydWN0aW9ucyBkaXNhc3NlbWJseSAoQlogMjMwMDAwKS4KICM9ZmVkb3JhdGVzdCtwcGMKQEAg LTI5MSwxMCArMjkyLDYgQEAgUGF0Y2gyMzU6IGdkYi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2Iu cGF0Y2gKICM9cHVzaAogUGF0Y2gyNDE6IGdkYi02LjYtYnoyMjU3ODMtZ2RiLWRlYnVnaW5mby1w YXRocy5wYXRjaAogCi0jIEFsbG93IHJ1bm5pbmcgYC91c3IvYmluL2djb3JlJyB3aXRoIHByb3Zp ZGVkIGJ1dCBpbmFjY2Vzc2libGUgdHR5IChCWiAyMjk1MTcpLgotIz1mZWRvcmF0ZXN0OiBEcm9w IHRoZSBvYnNvbGV0ZWQgZ2RiX2djb3JlLnNoIGNoYW5nZS4KLVBhdGNoMjQ1OiBnZGItNi42LWJ6 MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2gKLQogIyBOb3RpZnkgdXNlciBvZiBh IGNoaWxkIGZvcmtlZCBwcm9jZXNzIGJlaW5nIGRldGFjaGVkIChCWiAyMzUxOTcpLgogIz1wdXNo OiBUaGlzIGlzIG1vcmUgYWJvdXQgZGlzY3Vzc2lvbiBpZi93aGF0IHNob3VsZCBiZSBwcmludGVk LgogUGF0Y2gyNDc6IGdkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaApAQCAt MzU3LDggKzM1NCw2IEBAIFBhdGNoMjg5OiBnZGItNi41LWlhNjQtbGlidW53aW5kLWxlYWstdGVz dC5wYXRjaAogUGF0Y2gyOTA6IGdkYi02LjUtbWlzc2VkLXRyYXAtb24tc3RlcC10ZXN0LnBhdGNo CiAKICMgU3VwcG9ydCBEV19UQUdfaW50ZXJmYWNlX3R5cGUgdGhlIHNhbWUgd2F5IGFzIERXX1RB R19jbGFzc190eXBlIChCWiA0MjY2MDApLgotIz1tYXliZXB1c2gKLVBhdGNoMjkzOiBnZGItNi43 LWJ6NDI2NjAwLURXX1RBR19pbnRlcmZhY2VfdHlwZS1maXgucGF0Y2gKICM9ZmVkb3JhdGVzdAog UGF0Y2gyOTQ6IGdkYi02LjctYno0MjY2MDAtRFdfVEFHX2ludGVyZmFjZV90eXBlLXRlc3QucGF0 Y2gKIApAQCAtNDE5LDEwICs0MTQsNiBAQCBQYXRjaDMzMDogZ2RiLTYuOC1iejQzNjAzNy1yZWct bm8tbG9uZ2VyLWFjdGl2ZS5wYXRjaAogIz1wdXNoOiBVc2VmdWwgb25seSBhZnRlciBnZGItNi44 LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2ggLgogUGF0Y2gzMzE6IGdkYi02 LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKIAotIyBTdXBwb3J0IERXX1RBR19jb25zdGFudCBm b3IgRm9ydHJhbiBpbiByZWNlbnQgRmVkb3JhL1JIIEdDQ3MuCi0jPXB1c2gKLVBhdGNoMzMyOiBn ZGItNi44LWZvcnRyYW4tdGFnLWNvbnN0YW50LnBhdGNoCi0KICMgRml4IGF0dGFjaGluZyB0byBz dG9wcGVkIHByb2Nlc3NlcyBhbmQvb3IgcGVuZGluZyBzaWduYWxzLgogIz1wdXNoK3dvcmsKIFBh dGNoMzM3OiBnZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2gKQEAg LTQzNSwxOSArNDI2LDE0IEBAIFBhdGNoMzQzOiBnZGItNi44LXdhdGNocG9pbnQtY29uZGl0aW9u YWxzLXRlc3QucGF0Y2gKICM9ZmVkb3JhdGVzdAogUGF0Y2gzNDg6IGdkYi02LjgtYno0NjY5MDEt YmFja3RyYWNlLWZ1bGwtcHJlbGlua2VkLnBhdGNoCiAKLSMgVGhlIG1lcmdlZCBicmFuY2ggYGFy Y2hlcicgb2Y6IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCisj IFRoZSBtZXJnZWQgYnJhbmNoIGBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExNScgb2Y6Cisj IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCiAjPXB1c2gKICNh cmNoZXItamFua3JhdG9jaHZpbC12bGEKICM9cHVzaAogI2FyY2hlci1qYW5rcmF0b2NodmlsLXdh dGNocG9pbnQzCiAjPXB1c2gKICNhcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwotIz1wdXNoCi0j YXJjaGVyLXBtdWxkb29uLW5leHQtb3Zlci10aHJvdzIKLSM9bWF5YmVwdXNoCi0jYXJjaGVyLXRy b21leS1weXRob24KLSM9bWF5YmVwdXNoCi0jYXJjaGVyLXRyb21leS1vcHRpb25hbC1wc3ltdGFi CiBQYXRjaDM0OTogZ2RiLWFyY2hlci5wYXRjaAogIz1tYXliZXB1c2gKIFBhdGNoNDIwOiBnZGIt YXJjaGVyLWFkYS5wYXRjaApAQCAtNTEyLDEyICs0OTgsNiBAQCBQYXRjaDQxMjogZ2RiLXVudXNl ZC1yZXZlcnQucGF0Y2gKICM9cHVzaCt3b3JrOiBJdCBzaG91bGQgYmUgZml4ZWQgcHJvcGVybHkg aW5zdGVhZC4KIFBhdGNoNDE3OiBnZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gK IAotIyBGaXggY3Jhc2ggb24gQysrIHR5cGVzIGluIHNvbWUgZGVidWcgaW5mbyBmaWxlcyAoQlog NTc1MjkyLCBLZWl0aCBTZWl0eikuCi0jIFRlbXBvcmFyaWx5IHdvcmthcm91bmQgdGhlIGNyYXNo IG9mIEJaIDU3NTI5MiBhcyB0aGVyZSB3YXMgbm93IEJaIDU4NTQ0NS4KLSMgUmUtZW5hYmxlIHRo ZSBCWiA1NzUyOTIgYW5kIEJaIDU4NTQ0NSBDKysgZml4IHVzaW5nIGFuIHVwZGF0ZWQgcGF0Y2gu Ci0jPW1heWJlcHVzaDogTm90IHN1cmUgaWYgYWxsIHRoZSBwYXJ0cyBhcmUgdXBzdHJlYW0uCi1Q YXRjaDQ1MTogZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUucGF0Y2gKLQogIyBGaXggY3Jh c2ggd2hlbiB1c2luZyBHTlUgSUZVTkMgY2FsbCBmcm9tIGJyZWFrcG9pbnQgY29uZGl0aW9uLgog Iz1kcm9wOiBBZnRlciBhcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYyBnZXRzIGluIHRoaXMgb25l IGdldHMgb2Jzb2xldGVkLgogUGF0Y2g0NTQ6IGdkYi1iejUzOTU5MC1nbnUtaWZ1bmMtZml4LWNv bmQucGF0Y2gKQEAgLTUyNiwxMCArNTA2LDYgQEAgUGF0Y2g0NTQ6IGdkYi1iejUzOTU5MC1nbnUt aWZ1bmMtZml4LWNvbmQucGF0Y2gKICM9cHVzaCt3b3JrOiBDdXJyZW50bHkgaXQgaXMgc3RpbGwg bm90IGZ1bGx5IHNhZmUuCiBQYXRjaDQ1OTogZ2RiLW1vcmlidW5kLXV0cmFjZS13b3JrYXJvdW5k LnBhdGNoCiAKLSMgUmVtb3ZlIGNvcmUgZmlsZSB3aGVuIHN0YXJ0aW5nIGEgcHJvY2VzcyAoQlog NTk0NTYwKS4KLSM9bWF5YmVwdXNoCi1QYXRjaDQ2MTogZ2RiLWJ6NTk0NTYwLWNvcmUtdnMtcHJv Y2Vzcy5wYXRjaAotCiAjIEZpeCBmb2xsb3ctZXhlYyBmb3IgQysrIHByb2dyYW1zIChidWdyZXBv cnRlZCBieSBNYXJ0aW4gU3RyYW5za3kpLgogIz1mZWRvcmF0ZXN0CiBQYXRjaDQ3MDogZ2RiLWFy Y2hlci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKQEAgLTU0NCwxOCArNTIwLDEwIEBA IFBhdGNoNDg2OiBnZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZlY3RvcnMucGF0Y2gKICM9 cHVzaCt3b3JrOiBUaGVyZSBhcmUgc29tZSBvdXRzdGFuZGluZyBpc3N1ZXMsIGNoZWNrIHRoZSBt YWlscy4KIFBhdGNoNDg3OiBnZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZlY3RvcnMtbGli c3RkY3h4LnBhdGNoCiAKLSMgRml4IHByZWxpbmtlZCBleGVjdXRhYmxlcyB3aXRoIHNlcGRlYnVn IGFuZCBjb3B5IHJlbG9jYXRpb25zIChCWiA2MTQ2NTkpLgotIz1kcm9wOiBVcHN0cmVhbWVkLgot UGF0Y2g0ODk6IGdkYi1iejYxNDY1OS1wcmVsaW5rLWR5bmJzcy5wYXRjaAotCiAjIFByb3ZpZGUg L3Vzci9iaW4vZ2RiLWFkZC1pbmRleCBmb3IgcnBtLWJ1aWxkIChUb20gVHJvbWV5KS4KICM9ZHJv cDogUmUtY2hlY2sgYWdhaW5zdCB0aGUgdXBzdHJlYW0gdmVyc2lvbi4KIFBhdGNoNDkxOiBnZGIt Z2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKIAotIyBGaXggZ2NvcmUgZnJvbSB2ZXJ5IHNtYWxs IHRlcm1pbmFsIHdpbmRvd3MgKEJaIDU1NTA3NikuCi0jPWRyb3A6IFVwc3RyZWFtZWQuCi1QYXRj aDQ5MzogZ2RiLWJ6NTU1MDc2LWdjb3JlLXNtYWxsLWhlaWdodC5wYXRjaAotCiAjIE91dCBvZiBt ZW1vcnkgaXMganVzdCBhbiBlcnJvciwgbm90IGZhdGFsICh1bmluaXRpYWxpemVkIFZMUyB2YXJz LCBCWiA1NjgyNDgpLgogIz1kcm9wK3dvcms6IEluZmVyaW9yIG9iamVjdHMgc2hvdWxkIGJlIHJl YWQgaW4gcGFydHMsIHRoZW4gdGhpcyBwYXRjaCBnZXRzIG9ic29sZXRlZC4KIFBhdGNoNDk2OiBn ZGItYno1NjgyNDgtb29tLWlzLWVycm9yLnBhdGNoCkBAIC01NjQsNzYgKzUzMiwyMyBAQCBQYXRj aDQ5NjogZ2RiLWJ6NTY4MjQ4LW9vbS1pcy1lcnJvci5wYXRjaAogIz1wdXNoCiBQYXRjaDQ5Nzog Z2RiLWZhbHNlLWdjYy13YXJuaW5nLnBhdGNoCiAKLSMgRG8gbm90IGNyYXNoIG9uIGJyb2tlbiBz ZXBhcmF0ZSBkZWJ1Z2luZm8gZHVlIHRvIG9sZCBlbGZ1dGlscyAoQlogNjMxNTc1KS4KLSM9ZHJv cDogVXBzdHJlYW1lZC4KLVBhdGNoNDk5OiBnZGItYno2MzE1NzUtZ2RiLWluZGV4LW5vYml0cy5w YXRjaAotCi0jIEZpeCBzeW1ib2wgbG9va3VwIG1pc3NlcyBtZXRob2RzIG9mIGN1cnJlbnQgY2xh c3MgKEJaIDYzMTE1OCwgU2FtaSBXYWdpYWFsbGEpLgotIz1tYXliZXB1c2gKLVBhdGNoNTAwOiBn ZGItYno2MzExNTgtY3h4LXRoaXMtbG9va3VwLnBhdGNoCi0KLSMgRml4IEFkYSByZWdyZXNzaW9u IHdoZW4gYW55IC5nZGJfaW5kZXggbGlicmFyeSBpcyBwcmVzZW50LgotIz1kcm9wOiBVcHN0cmVh bWVkLgotUGF0Y2g1MDE6IGdkYi1nZGJpbmRleC1hZGEtcmVncmVzc2lvbi5wYXRjaAotCi0jIHB5 dGhvbjogbG9hZCAqLWdkYi5weSBmb3Igc2hsaWJzIGR1cmluZyBhdHRhY2ggKEJaIDYzNDY2MCku Ci0jPWRyb3A6IFVwc3RyZWFtZWQuCi1QYXRjaDUwMjogZ2RiLWJ6NjM0NjYwLWdkYnB5LWxvYWQt b24tYXR0YWNoLnBhdGNoCi0KLSMgRml4IGRvdWJsZSBmcmVlIGNyYXNoIGR1cmluZyBvdmVybG9h ZCByZXNvbHV0aW9uIChQUiAxMjAyOCwgU2FtaSBXYWdpYWFsbGEpLgotIz1kcm9wOiBVcHN0cmVh bWVkLgotUGF0Y2g1MDM6IGdkYi1wcjEyMDI4LWRvdWJsZS1mcmVlLnBhdGNoCi0KICMgRml4IGdj b3JlIHdyaXRlciBmb3IgLVdsLC16LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQpLgogIz1wdXNo OiBUaGVyZSBpcyBkaWZmZXJlbnQgcGF0Y2ggb24gZ2RiLXBhdGNoZXMsIHdhaXRpbmcgbm93IGZv ciByZXNvbHV0aW9uIGluIGtlcm5lbC4KIFBhdGNoNTA0OiBnZGItYno2MjM3NDktZ2NvcmUtcmVs cm8ucGF0Y2gKIAotIyBGaXggaW5maW5pdGUgbG9vcCBjcmFzaCBvbiBzZWxmLXJlZmVyZW5jaW5n IGNsYXNzIChCWiA2Mjc0MzIpLgotIz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1MDY6IGdkYi1i ejYyNzQzMi1sb29wLXN0YXRpYy1zZWxmLWNsYXNzLnBhdGNoCi0KICMgRml4IGxvc3Qgc2lnaW5m b190IGluIGxpbnV4LW5hdCAoQlogNTkyMDMxKS4KLSM9ZHJvcDogVXBzdHJlYW1lZC4KLVBhdGNo NTA3OiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTFvZjUucGF0Y2gKLSM9ZHJvcDogVXBzdHJl YW1lZC4KLVBhdGNoNTA4OiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTJvZjUucGF0Y2gKLSM9 ZHJvcDogVXBzdHJlYW1lZC4KLVBhdGNoNTA5OiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTNv ZjUucGF0Y2gKICM9cHVzaAogUGF0Y2g1MTA6IGdkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9m NS5wYXRjaAogIz1wdXNoCiBQYXRjaDUxMTogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC01b2Y1 LnBhdGNoCiAKLSMgRml4IC5nZGJfaW5kZXggZm9yIGJpZy1lbmRpYW4gaG9zdHMgKFRvbSBUcm9t ZXkpLgotIz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1MTQ6IGdkYi1nZGJpbmRleC12MS10by12 Mi5wYXRjaAotIz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1MTI6IGdkYi1nZGJpbmRleC1iaWdl bmRpYW4ucGF0Y2gKLSM9ZHJvcDogVXBzdHJlYW1lZC4KLVBhdGNoNTE1OiBnZGItZ2RiaW5kZXgt djItdG8tdjMucGF0Y2gKLQotIyBbaWZ1bmNdIEZpeCBjcmFzaCBvbiBkZWxldGluZyB3YXRjaHBv aW50IG9mIGFuIGF1dG92YXJpYWJsZSAoQlogNjM3NzcwKS4KLSM9ZHJvcDogQSBwYXJ0IG9mIGFy Y2hlci1qYW5rcmF0b2NodmlsLWlmdW5jIHdvcmsuCi1QYXRjaDUxMzogZ2RiLWJ6NjM3NzcwLWlm dW5jLXdhdGNocG9pbnQtZGVsZXRlLnBhdGNoCi0KLSMgRml4IHB5dGhvbiBzdGFsZSBlcnJvciBz dGF0ZSwgYWxzbyBmaXggaXRzIHNhdmUvcmVzdG9yZSAoQlogNjM5MDg5KS4KLSM9ZHJvcDogSnVz dCBhIGJhY2twb3J0LgotUGF0Y2g1MTg6IGdkYi10ZXN0c3VpdGUtbGliLXB5dGhvbi5wYXRjaAot Iz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1MTY6IGdkYi1weXRob24tZXJyb3Itc3RhdGUucGF0 Y2gKLQotIyBGaXggaW5mZXJpb3IgZXhlYyBvZiBuZXcgUElFIHg4Nl82NCAoQlogNjM4OTc5KS4K LSM9ZHJvcDogVXBzdHJlYW1lZC4KLVBhdGNoNTE3OiBnZGItZXhlYy1waWUtYW1kNjQucGF0Y2gK LQogIyBGaXggY3Jhc2ggb24gQ1RSTC1DIHdoaWxlIHJlYWRpbmcgYW4gRUxGIHN5bWJvbCBmaWxl IChCWiA2NDI4NzkpLgogIz1wdXNoCiBQYXRjaDUyMDogZ2RiLWJ6NjQyODc5LWVsZnJlYWQtc2ln aW50LXN0YWxlLnBhdGNoCiAKLSMgaUZvcnQgY29tcGF0LiAtIGNhc2UgaW5zZW5zaXRpdmUgRFdB UkYgbm90IGluIGxvd2VyY2FzZSAoQlogNjQ1NzczKS4KLVBhdGNoNTIyOiBnZGItYno2NDU3NzMt aWZvcnQtY2FzZS0xb2YzLnBhdGNoCi1QYXRjaDUyMzogZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2Ut Mm9mMy5wYXRjaAotUGF0Y2g1MjQ6IGdkYi1iejY0NTc3My1pZm9ydC1jYXNlLTNvZjMucGF0Y2gK KyMgRml4IG5leHQvZmluaXNoL2V0YyAtdnMtIGV4Y2VwdGlvbnMgKFRvbSBUcm9tZXkpLgorIz1w dXNoCitQYXRjaDUyNTogZ2RiLW5leHQtb3Zlci10aHJvdy5wYXRjaAogCiBCdWlsZFJlcXVpcmVz OiBuY3Vyc2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXggYmlzb24gZXhwYXQt ZGV2ZWwlez9faXNhfQogUmVxdWlyZXM6IHJlYWRsaW5lJXs/X2lzYX0KQEAgLTc2OSw3ICs2ODQs NyBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9w LWV4cC5jCiAKICVpZiAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNw YXRjaDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKICVwYXRjaDQyMCAtcDEKICVwYXRjaDEgLXAxCkBA IC04MjAsNyArNzM1LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2Jq Yy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMjM0IC1wMQogJXBhdGNoMjM1IC1wMQogJXBhdGNo MjQxIC1wMQotJXBhdGNoMjQ1IC1wMQogJXBhdGNoMjQ3IC1wMQogJXBhdGNoMjU0IC1wMQogJXBh dGNoMjU4IC1wMQpAQCAtODM3LDcgKzc1MSw2IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTIt ZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDI4NyAtcDEKICVwYXRjaDI4 OSAtcDEKICVwYXRjaDI5MCAtcDEKLSVwYXRjaDI5MyAtcDEKICVwYXRjaDI5NCAtcDEKICVwYXRj aDI5NiAtcDEKICVwYXRjaDI5OCAtcDEKQEAgLTg1Myw3ICs3NjYsNiBAQCBybSAtZiBnZGIvanYt ZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gzMjkg LXAxCiAlcGF0Y2gzMzAgLXAxCiAlcGF0Y2gzMzEgLXAxCi0lcGF0Y2gzMzIgLXAxCiAlcGF0Y2gz MzcgLXAxCiAlcGF0Y2gzNDMgLXAxCiAlcGF0Y2gzNDggLXAxCkBAIC04NzIsMTAgKzc4NCw4IEBA IHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhw LmMKICVwYXRjaDQwOCAtcDEKICVwYXRjaDQxMiAtcDEKICVwYXRjaDQxNyAtcDEKLSVwYXRjaDQ1 MSAtcDEKICVwYXRjaDQ1NCAtcDEKICVwYXRjaDQ1OSAtcDEKLSVwYXRjaDQ2MSAtcDEKICVwYXRj aDQ3MCAtcDEKICVwYXRjaDQ3NSAtcDEKICVwYXRjaDQ4NiAtcDEKQEAgLTg4MywzNCArNzkzLDE0 IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3At ZXhwLmMKICNwYXRjaDQ4NyAtcDEKICVwYXRjaDQxNSAtcDEKICVwYXRjaDUxOSAtcDEKLSVwYXRj aDQ4OSAtcDEKICVwYXRjaDQ5MSAtcDEKLSVwYXRjaDQ5MyAtcDEKICVwYXRjaDQ5NiAtcDEKICVw YXRjaDQ5NyAtcDEKLSVwYXRjaDQ5OSAtcDEKLSVwYXRjaDUwMCAtcDEKLSVwYXRjaDUwMSAtcDEK LSVwYXRjaDUwMiAtcDEKLSVwYXRjaDUwMyAtcDEKICVwYXRjaDUwNCAtcDEKLSVwYXRjaDUwNiAt cDEKLSVwYXRjaDUwNyAtcDEKLSVwYXRjaDUwOCAtcDEKLSVwYXRjaDUwOSAtcDEKICVwYXRjaDUx MCAtcDEKICVwYXRjaDUxMSAtcDEKLSVwYXRjaDUxNCAtcDEKLSVwYXRjaDUxMiAtcDEKLSVwYXRj aDUxNSAtcDEKLSVwYXRjaDUxMyAtcDEKLSVwYXRjaDUxNiAtcDEKLSVwYXRjaDUxNyAtcDEKLSVw YXRjaDUxOCAtcDEKICVwYXRjaDUyMCAtcDEKLSVwYXRjaDUyMiAtcDEKLSVwYXRjaDUyMyAtcDEK LSVwYXRjaDUyNCAtcDEKKyVwYXRjaDUyNSAtcDEKIAogJXBhdGNoMzkzIC1wMQogJXBhdGNoMzM1 IC1wMQpAQCAtMTI4MSw2ICsxMTcxLDkgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIFdl ZCBOb3YgMTcgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4g LSA3LjIuNTAuMjAxMDExMTctMS5mYzE1CistIFJlYmFzZSB0byBGU0YgR0RCIDcuMi41MC4yMDEw MTExNyAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgorCiAqIFN1biBOb3YgIDcgMjAxMCBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMjUuZmMxNAog LSBpRm9ydCBjb21wYXQuIC0gY2FzZSBpbnNlbnNpdGl2ZSBEV0FSRiBub3QgaW4gbG93ZXJjYXNl IChCWiA2NDU3NzMpLgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggNmMy ZDczNC4uYzVlYjlkZSAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsx IEBACi02NDI2MGU2YzU2OTc5ZWU3NTBhMDEwNTVmMTYwOTFhNSAgZ2RiLTcuMi50YXIuYnoyCiti MTMxNDNjN2M3ZTcwZjkyOWM4NmMzZjM2MzI0NzkwOSAgZ2RiLTcuMi41MC4yMDEwMTExNy50YXIu YnoyCg==