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: - Upgrade to the FSF GDB snapshot: 7.0.50.20100128 Date: Sat, 27 Jun 2026 23:54:36 GMT Message-ID: <178260447620.1.9330654594326228304.rpms-gdb-45f79714b93e@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 45f79714b93e094befcd8981e2413018a539b204 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogNDVmNzk3MTRiOTNlMDk0YmVmY2Q4OTgxZTI0MTMwMThhNTM5 YjIwNAogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3Jh cHJvamVjdC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDEtMjhUMjI6MjY6MTUrMDA6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzE5NDEvLTQ0NTkgaW4gMTMgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzQ1 Zjc5NzE0YjkzZTA5NGJlZmNkODk4MWUyNDEzMDE4YTUzOWIyMDQ/YnJhbmNoPWdkYi0xNy4yLXJl YmFzZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgLSBVcGdyYWRlIHRvIHRoZSBG U0YgR0RCIHNuYXBzaG90OiA3LjAuNTAuMjAxMDAxMjgKLSBhcmNoZXItamFua3JhdG9jaHZpbC1m ZWRvcmExMyBjb21taXQ6CiAgICAzOWM1YThiNzVmYWQzYWNkNzIwNDkwM2RiNWRlZTAyNTA1NWE0 NTk0Ci0gRml4IGEgcmVncmVzc2lvbiBvbiAiQUFBOjpBTFBIQSIgdGVzdCBkdWUgdG8gYSBtZXJn ZSBmcm9tIEZTRiBHREIuCi0gRml4IGEgcmVncmVzc2lvbiBvZiBwcmV2aW91cyByZWxlYXNlIGR1 ZSB0byBmYWxzZSBpZGVudGlmaWNhdGlvbiBhcyBjb3JlCiAgICBmaWxlLgotIE1vdmUgaWZ1bmMg LnBhdGNoIGludG8gdGhlIEdJVC1tYW5hZ2VkIGFyY2hlci1qYW5rcmF0b2NodmlsLWZlZG9yYTEz CiAgICBicmFuY2guCi0gVXBkYXRlIGdkYi5waWUvY29yZWZpbGUuZXhwIGZyb20gMjAwNy0wMS0y NiBGU0YgR0RCIGNvbW1pdCBieSBBbmRyZWFzCiAgICBTY2h3YWIuCgotLS0KZGlmZiAtLWdpdCBh Ly5jdnNpZ25vcmUgYi8uY3ZzaWdub3JlCmluZGV4IDFjYWZmZDQuLmE3ZmI2NjUgMTAwNjQ0Ci0t LSBhLy5jdnNpZ25vcmUKKysrIGIvLmN2c2lnbm9yZQpAQCAtMSwyICsxLDIgQEAKLWdkYi03LjAu NTAuMjAxMDAxMjEudGFyLmJ6MgorZ2RiLTcuMC41MC4yMDEwMDEyOC50YXIuYnoyCiBsaWJzdGRj KystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1w aWUtMjAwNTAxMDcucGF0Y2ggYi9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4 IDkyMDg5ODEuLmU0MjI3ZWYgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcu cGF0Y2gKKysrIGIvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtMjA5Nyw3ICsy MDk3LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2NvcmVmaWxlLmV4cAogKyMgdGVzdCByZWluaXRfZnJhbWVfY2FjaGUKICsKICtnZGJfbG9hZCAk e2JpbmZpbGV9Ci0rZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAu KiBcXChcXCkuKiIgInVwIGluIGNvcmVmaWxlLmV4cCAocmVpbml0KSIKKytnZGJfdGVzdCAidXAi ICIjXFswLTlcXSogKlxbMC05eGEtZkgnXF0qIGluIC4qIFxcKC4qXFwpLioiICJ1cCBpbiBjb3Jl ZmlsZS5leHAgKHJlaW5pdCkiCiArCiArZ2RiX3Rlc3QgImNvcmUiICJObyBjb3JlIGZpbGUgbm93 LiIKIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtl ZmlsZS5pbgoKZGlmZiAtLWdpdCBhL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91 dC1kZWJ1Z2luZm8tdjIucGF0Y2ggYi9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhv dXQtZGVidWdpbmZvLXYyLnBhdGNoCmluZGV4IDlkZDc1ZDQuLjZiODc4YTAgMTAwNjQ0Ci0tLSBh L2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gK KysrIGIvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5w YXRjaApAQCAtMzAsMTEgKzMwLDExIEBAIGdsaWJjLWRlYnVnaW5mby0yLjctMi54ODZfNjQ6IC91 c3IvbGliL2RlYnVnL2xpYjY0L2xpYmMuc28uNi5kZWJ1ZzoKICAgPDgxYTI+ICAgICBEV19BVF9u YW1lICAgICAgICA6IChpbmRpcmVjdCBzdHJpbmcsIG9mZnNldDogMHgyODBlKTogX19lcnJub19s b2NhdGlvbgogICA8ODFhOD4gICAgIERXX0FUX01JUFNfbGlua2FnZV9uYW1lOiAoaW5kaXJlY3Qg c3RyaW5nLCBvZmZzZXQ6IDB4MjgwOCk6ICpfX0dJX19fZXJybm9fbG9jYXRpb24KIAotSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2dkYnR5cGVzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTI4L2dkYi9nZGJ0eXBlcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgw Mi5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMDktMDgtMDMgMDk6NTA6NTcuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvZ2RidHlwZXMuYwkyMDA5LTA4LTAzIDE1OjQy OjUxLjAwMDAwMDAwMCArMDIwMAotQEAgLTM3NjksNiArMzc2OSw5IEBAIGdkYnR5cGVzX3Bvc3Rf aW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmEKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcv Z2RiL2dkYnR5cGVzLmMJMjAxMC0wMS0yOCAxMjo1MjoxNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5jCTIwMTAtMDEtMjggMTI6NTI6NDguMDAw MDAwMDAwICswMTAwCitAQCAtMzk3OCw2ICszOTc4LDkgQEAgZ2RidHlwZXNfcG9zdF9pbml0IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYQogICAgICA9IGFyY2hfdHlwZSAoZ2RiYXJjaCwgVFlQRV9DT0RF X0lOVEVSTkFMX0ZVTkNUSU9OLCAwLAogIAkJICI8aW50ZXJuYWwgZnVuY3Rpb24+Iik7CiAgCkBA IC00NCwxMSArNDQsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2dkYnR5cGVz LmMKICAgIHJldHVybiBidWlsdGluX3R5cGU7CiAgfQogIAotSW5kZXg6IGdkYi02LjguNTAuMjAw OTA4MDIvZ2RiL2dkYnR5cGVzLmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0 eXBlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5vcmlnL2dkYi9nZGJ0 eXBlcy5oCTIwMDktMDgtMDMgMDk6NTA6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41 MC4yMDA5MDgwMi9nZGIvZ2RidHlwZXMuaAkyMDA5LTA4LTAzIDE1OjQwOjAyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTExMjgsNiArMTEyOCw4IEBAIHN0cnVjdCBidWlsdGluX3R5cGUKKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0yOCAxMjo1MjoxNy4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5oCTIw MTAtMDEtMjggMTI6NTI6NDguMDAwMDAwMDAwICswMTAwCitAQCAtMTI0NSw2ICsxMjQ1LDggQEAg c3RydWN0IGJ1aWx0aW5fdHlwZQogIAogICAgLyogVGhpcyB0eXBlIGlzIHVzZWQgdG8gcmVwcmVz ZW50IGEgR0RCIGludGVybmFsIGZ1bmN0aW9uLiAgKi8KICAgIHN0cnVjdCB0eXBlICppbnRlcm5h bF9mbjsKQEAgLTU3LDExICs1NywxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIv Z2RidHlwZXMuaAogIH07CiAgCiAgLyogUmV0dXJuIHRoZSB0eXBlIHRhYmxlIGZvciB0aGUgc3Bl Y2lmaWVkIGFyY2hpdGVjdHVyZS4gICovCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIv cGFyc2UuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3BhcnNlLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAyLm9yaWcvZ2RiL3BhcnNlLmMJMjAwOS0wOC0wMyAw OTo1MDo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9wYXJz ZS5jCTIwMDktMDgtMDMgMTU6NDE6NTQuMDAwMDAwMDAwICswMjAwCi1AQCAtNTEwLDcgKzUxMCwx MSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sCistLS0gZ2RiLTcu MC41MC4yMDEwMDEyOC5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMjggMTI6NTI6MTkuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvcGFyc2UuYwkyMDEwLTAxLTI4 IDEyOjUzOjIwLjAwMDAwMDAwMCArMDEwMAorQEAgLTUwOSw3ICs1MDksMTEgQEAgd3JpdGVfZXhw X21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbAogICAgICBjYXNlIG1zdF90ZXh0OgogICAg ICBjYXNlIG1zdF9maWxlX3RleHQ6CiAgICAgIGNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6CkBA IC03MywxMiArNzMsMTIgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL3BhcnNlLmMK ICsJd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3Rl eHRfc3ltYm9sKTsKICAgICAgICBicmVhazsKICAKLSAgICAgY2FzZSBtc3RfZGF0YToKLUluZGV4 OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90YXJnZXQuYworICAgICBjYXNlIG1zdF90ZXh0X2du dV9pZnVuYzoKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90YXJnZXQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvdGFyZ2V0LmMJMjAwOS0wOC0w MyAxMjozODo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90 YXJnZXQuYwkyMDA5LTA4LTAzIDEyOjQ5OjMzLjAwMDAwMDAwMCArMDIwMAotQEAgLTkzMyw2ICs5 MzMsMjUgQEAgcG9wX2FsbF90YXJnZXRzIChpbnQgcXVpdHRpbmcpCistLS0gZ2RiLTcuMC41MC4y MDEwMDEyOC5vcmlnL2dkYi90YXJnZXQuYwkyMDEwLTAxLTI4IDEyOjUyOjI5LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3RhcmdldC5jCTIwMTAtMDEtMjggMTI6 NTI6NDguMDAwMDAwMDAwICswMTAwCitAQCAtMTAwMCw2ICsxMDAwLDI1IEBAIHBvcF9hbGxfdGFy Z2V0cyAoaW50IHF1aXR0aW5nKQogICAgcG9wX2FsbF90YXJnZXRzX2Fib3ZlIChkdW1teV9zdHJh dHVtLCBxdWl0dGluZyk7CiAgfQogIApAQCAtMTA0LDcgKzEwNCw3IEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwODAyL2dkYi90YXJnZXQuYwogIC8qIFVzaW5nIHRoZSBvYmpmaWxlIHNwZWNpZmll ZCBpbiBPQkpGSUxFLCBmaW5kIHRoZSBhZGRyZXNzIGZvciB0aGUKICAgICBjdXJyZW50IHRocmVh ZCdzIHRocmVhZC1sb2NhbCBzdG9yYWdlIHdpdGggb2Zmc2V0IE9GRlNFVC4gICovCiAgQ09SRV9B RERSCi1AQCAtMTAyMyw3ICsxMDQyLDI4IEBAIHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3Mg KHN0cnVjdCBvYmoKK0BAIC0xMDkwLDcgKzExMDksMjggQEAgdGFyZ2V0X3RyYW5zbGF0ZV90bHNf YWRkcmVzcyAoc3RydWN0IG9iagogICAgLyogSXQgd291bGRuJ3QgYmUgd3JvbmcgaGVyZSB0byB0 cnkgYSBnZGJhcmNoIG1ldGhvZCwgdG9vOyBmaW5kaW5nCiAgICAgICBUTFMgaXMgYW4gQUJJLXNw ZWNpZmljIHRoaW5nLiAgQnV0IHdlIGRvbid0IGRvIHRoYXQgeWV0LiAgKi8KICAgIGVsc2UKQEAg LTEzNCwxMCArMTM0LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90YXJnZXQu YwogIAogICAgcmV0dXJuIGFkZHI7CiAgfQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEw MDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ni44LjUwLjIwMDkwODAyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwkyMDA5 LTA4LTAzIDEyOjQ5OjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjgv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5jCTIwMTAtMDEtMjggMTI6NTI6NDgu MDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDI4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTE2NywxMCArMTY3LDEwIEBAIElu ZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJy bm8uYwogKwogKyAgcmV0dXJuIDA7CS8qIGJyZWFrcG9pbnQgKi8KICt9Ci1JbmRleDogZ2RiLTYu OC41MC4yMDA5MDgwMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmV4cAorSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJu by5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItZXJybm8uZXhwCTIwMDktMDgtMDMgMTI6NDk6MzMuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5v LmV4cAkyMDEwLTAxLTI4IDEyOjUyOjQ4LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw2NyBA QAogKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpk aWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaCBiL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKaW5kZXggMmRjZjViMy4uZjJm ZDRmZSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRj aAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCkBAIC01OCw4 ICs1OCwxMCBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9t c2cwMDUxNy5odG1sCiAJKiBleGVjLmMgKGV4ZWNfZmlsZV9hdHRhY2gpOiBQcmludCBhIG1vcmUg dXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhlCiAJdXNlciBkaWQgImdkYiBjb3JlIi4KIAotLS0t IGEvZ2RiL2V4Y2VwdGlvbnMuaAotKysrIGIvZ2RiL2V4Y2VwdGlvbnMuaAorSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjgvZ2RiL2V4Y2VwdGlvbnMuaAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAu NTAuMjAxMDAxMjgub3JpZy9nZGIvZXhjZXB0aW9ucy5oCTIwMTAtMDEtMTggMDc6MjU6MjIuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZXhjZXB0aW9ucy5oCTIw MTAtMDEtMjggMjI6NDk6MDAuMDAwMDAwMDAwICswMTAwCiBAQCAtNzgsNiArNzgsOSBAQCBlbnVt IGVycm9ycyB7CiAgICAvKiBGZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9m IEdEQi4gICovCiAgICBVTlNVUFBPUlRFRF9FUlJPUiwKQEAgLTcwLDM5ICs3Miw0MSBAQCBIdHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAg ICAvKiBBZGQgbW9yZSBlcnJvcnMgaGVyZS4gICovCiAgICBOUl9FUlJPUlMKICB9OwotLS0tIGEv Z2RiL2V4ZWMuYwotKysrIGIvZ2RiL2V4ZWMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgv Z2RiL2V4ZWMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIv ZXhlYy5jCTIwMTAtMDEtMjggMjI6NDg6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDEyOC9nZGIvZXhlYy5jCTIwMTAtMDEtMjggMjI6NTg6NDUuMDAwMDAwMDAwICswMTAw CiBAQCAtMzQsNiArMzQsNyBAQAotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCiAgI2luY2x1ZGUg ImdkYnRocmVhZC5oIgogICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKKyAjaW5jbHVkZSAic29saWIu aCIKICsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNp bmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTI1Myw2ICsyNTQsMTkgQEAgZXhlY19m aWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKLSAgICAgICBzY3JhdGNo X3BhdGhuYW1lID0geHN0cmR1cCAoc2NyYXRjaF9wYXRobmFtZSk7Ci0gICAgICAgY2xlYW51cHMg PSBtYWtlX2NsZWFudXAgKHhmcmVlLCBzY3JhdGNoX3BhdGhuYW1lKTsKLSAKLSsgICAgICAvKiBJ ZiB0aGUgdXNlciBhY2NpZGVudGFsbHkgZGlkICJnZGIgY29yZSIsIHByaW50IGEgdXNlZnVsCi0r CSBlcnJvciBtZXNzYWdlLiAgKi8KLSsgICAgICBpZiAoYmZkX2NoZWNrX2Zvcm1hdCAoZXhlY19i ZmQsIGJmZF9jb3JlKSkKLSsgICAgICAgewotKwkgLyogTWFrZSBzdXJlIHRvIGNsb3NlIGV4ZWNf YmZkLCBvciBlbHNlICJydW4iIG1pZ2h0IHRyeSB0byB1c2UKLSsJICAgIGl0LiAgKi8KLSsJIGV4 ZWNfY2xvc2UgKCk7Ci0rCSB0aHJvd19lcnJvciAoSVNfQ09SRV9FUlJPUiwKLSsJCSAgICAgIF8o IlwiJXNcIiBpcyBhIGNvcmUgZmlsZS5cbiIKLSsJCQkiUGxlYXNlIHNwZWNpZnkgYW4gZXhlY3V0 YWJsZSB0byBkZWJ1Zy4iKSwKLSsJCSAgICAgIHNjcmF0Y2hfcGF0aG5hbWUpOwotKyAgICAgICB9 Ci0rCi0gICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChleGVjX2JmZCwgYmZkX29iamVjdCkp Ci0gCXsKK0BAIC0yNTgsNiArMjU5LDE3IEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVu YW1lLCBpbnQgZnIKICAJICAvKiBNYWtlIHN1cmUgdG8gY2xvc2UgZXhlY19iZmQsIG9yIGVsc2Ug InJ1biIgbWlnaHQgdHJ5IHRvIHVzZQotLS0tIGEvZ2RiL21haW4uYwotKysrIGIvZ2RiL21haW4u YwotQEAgLTI0MCw2ICsyNDAsMzYgQEAgY2FwdHVyZWRfY29tbWFuZF9sb29wICh2b2lkICpkYXRh KQorIAkgICAgIGl0LiAgKi8KKyAJICBleGVjX2Nsb3NlICgpOworKworKwkgIC8qIElmIHRoZSB1 c2VyIGFjY2lkZW50YWxseSBkaWQgImdkYiBjb3JlIiwgcHJpbnQgYSB1c2VmdWwKKysJICAgICBl cnJvciBtZXNzYWdlLiAgQ2hlY2sgaXQgb25seSBhZnRlciBiZmRfb2JqZWN0IGhhcyBiZWVuIGNo ZWNrZWQgYXMKKysJICAgICBhIHZhbGlkIGV4ZWN1dGFibGUgbWF5IGdldCByZWNvZ25pemVkIGZv ciBleGFtcGxlIGFsc28gYXMKKysJICAgICAidHJhZC1jb3JlIi4gICovCisrCSAgaWYgKGJmZF9j aGVja19mb3JtYXQgKGV4ZWNfYmZkLCBiZmRfY29yZSkpCisrCSAgICB0aHJvd19lcnJvciAoSVNf Q09SRV9FUlJPUiwKKysJCQkgXygiXCIlc1wiIGlzIGEgY29yZSBmaWxlLlxuIgorKwkJCSAgICJQ bGVhc2Ugc3BlY2lmeSBhbiBleGVjdXRhYmxlIHRvIGRlYnVnLiIpLAorKwkJCSBzY3JhdGNoX3Bh dGhuYW1lKTsKKysKKyAJICBlcnJvciAoXygiXCIlc1wiOiBub3QgaW4gZXhlY3V0YWJsZSBmb3Jt YXQ6ICVzIiksCisgCQkgc2NyYXRjaF9wYXRobmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJv ciAoKSkpOworIAl9CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvbWFpbi5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0y OCAyMjo0ODo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9t YWluLmMJMjAxMC0wMS0yOCAyMjo0OTowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNDEsNiArMjQx LDM2IEBAIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKICAgIHJldHVybiAxOwog IH0KICAKQEAgLTEzOSw3ICsxNDMsNyBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAgc3RhdGljIGludAogIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCiAgewotQEAgLTY2OCw2ICs2OTgsOCBAQCBleHRlcm4gaW50IGdkYnRrX3Rl c3QgKGNoYXIgKik7CitAQCAtNzAzLDYgKzczMyw4IEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAo Y2hhciAqKTsKICAJewogIAkgIHN5bWFyZyA9IGFyZ3Zbb3B0aW5kXTsKICAJICBleGVjYXJnID0g YXJndltvcHRpbmRdOwpAQCAtMTQ4LDcgKzE1Miw3IEBAIEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwKICAJICBvcHRpbmQrKzsKICAJfQog IAotQEAgLTgwMCwxMCArODMxLDI1IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGln bm9yZWQuICglcyVzKVxuIiksCitAQCAtODM1LDEwICs4NjcsMjUgQEAgRXhjZXNzIGNvbW1hbmQg bGluZSBhcmd1bWVudHMgaWdub3JlZC4gKAogICAgICAgICYmIHN5bWFyZyAhPSBOVUxMCiAgICAg ICAgJiYgc3RyY21wIChleGVjYXJnLCBzeW1hcmcpID09IDApCiAgICAgIHsKCmRpZmYgLS1naXQg YS9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0 Y2gKaW5kZXggMmJhZGIyZi4uNjU3NWQ1ZCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRk b25zLnBhdGNoCisrKyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApAQCAtNTYsOSArNTYs OSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXhlYy5jCiAtLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wMS0xNSAyMTozNToxNC4wMDAwMDAwMDAg KzAxMDAKICsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmMJMjAxMC0wMS0xNSAyMTo0 NzoxOS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgImFyY2gt dXRpbHMuaCIKICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgInByb2dzcGFjZS5o IgotICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiArI2luY2x1ZGUgInNvbGliLmgiCiAgCiAgI2lu Y2x1ZGUgPGZjbnRsLmg+CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNo ZXIucGF0Y2gKaW5kZXggNmE5MjU1My4uNjU0NGMwMCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5w YXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDcgKzIsNyBAQCBodHRwOi8vc291cmNl d2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dk Yi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDIx ZTQxOGMwNDI5MGFhNWQyZTc1NTQzZDMxZmUzZmU1ZDcwZDZkNDEKK2NvbW1pdCAzOWM1YThiNzVm YWQzYWNkNzIwNDkwM2RiNWRlZTAyNTA1NWE0NTk0CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBt ZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci10cm9tZXktZGVsYXllZC1zeW1maWxlCkBAIC0xMiw2 ICsxMiw3IEBAIGFyY2hlci1qYW5rcmF0b2NodmlsLWZvcnRyYW4tbW9kdWxlCiBhcmNoZXItamFu a3JhdG9jaHZpbC13YXRjaHBvaW50CiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKIGFyY2hlci1r ZWl0aHMtZXhwci1jdW11bGF0aXZlCithcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwogCiAKIGRp ZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KQEAgLTI1Nyw2ICsy NTgsMjggQEAgaW5kZXggNDBiNzBhYi4uYjI5MWQ0MCAxMDA2NDQKICAgIGFkYV9vcF9uYW1lLAog ICAgYWRhX2R1bXBfc3ViZXhwX2JvZHksCiAgICBhZGFfZXZhbHVhdGVfc3ViZXhwCitkaWZmIC0t Z2l0IGEvZ2RiL2FscGhhLWxpbnV4LXRkZXAuYyBiL2dkYi9hbHBoYS1saW51eC10ZGVwLmMKK2lu ZGV4IDNjNzFmMmYuLmJiZmU1YTEgMTAwNjQ0CistLS0gYS9nZGIvYWxwaGEtbGludXgtdGRlcC5j CisrKysgYi9nZGIvYWxwaGEtbGludXgtdGRlcC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNs dWRlICJzeW10YWIuaCIKKyAjaW5jbHVkZSAicmVnc2V0LmgiCisgI2luY2x1ZGUgInJlZ2NhY2hl LmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAiYWxwaGEtdGRlcC5o IgorIAorQEAgLTIzNiw2ICsyMzcsOSBAQCBhbHBoYV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdk YmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAKKyAgIHNldF9nZGJh cmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbgorICAgICAoZ2RiYXJjaCwgYWxwaGFfbGludXhf cmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVu Y19wdHJfYWRkcik7CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAt V21pc3NpbmctcHJvdG90eXBlcy4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxpbnV4LW5h dC5jIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCiBpbmRleCA1YzllNTU4Li41NWExODczIDEwMDY0 NAogLS0tIGEvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCkBAIC0yOTAsNiArMzEzLDM0IEBAIGluZGV4 IDVjOWU1NTguLjU1YTE4NzMgMTAwNjQ0CiAgICBpMzg2X3NldF9kZWJ1Z19yZWdpc3Rlcl9sZW5n dGggKDgpOwogIAogICAgLyogT3ZlcnJpZGUgdGhlIEdOVS9MaW51eCBpbmZlcmlvciBzdGFydHVw IGhvb2suICAqLworZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMgYi9nZGIvYW1k NjQtbGludXgtdGRlcC5jCitpbmRleCAwMWNjMWNlLi4yYTBmYTg0IDEwMDY0NAorLS0tIGEvZ2Ri L2FtZDY0LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYworQEAgLTE0 ODEsNiArMTQ4MSw5IEBAIGFtZDY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZv IGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgYW1kNjRfbGludXhfcmVjb3JkX3Rk ZXAuYXJnNiA9IEFNRDY0X1I5X1JFR05VTTsKKyAKKyAgIHRkZXAtPmkzODZfc3lzY2FsbF9yZWNv cmQgPSBhbWQ2NF9saW51eF9zeXNjYWxsX3JlY29yZDsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkcik7CisgfQorIAwKKyAKK2RpZmYgLS1naXQgYS9nZGIvYXJtLWxpbnV4 LXRkZXAuYyBiL2dkYi9hcm0tbGludXgtdGRlcC5jCitpbmRleCA2NjFhNWJkLi5kYzkxYWIxIDEw MDY0NAorLS0tIGEvZ2RiL2FybS1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9hcm0tbGludXgtdGRl cC5jCitAQCAtOTA3LDYgKzkwNyw5IEBAIGFybV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFy Y2hfaW5mbyBpbmZvLAorICAgc2V0X2dkYmFyY2hfZGlzcGxhY2VkX3N0ZXBfZnJlZV9jbG9zdXJl IChnZGJhcmNoLAorIAkJCQkJICAgc2ltcGxlX2Rpc3BsYWNlZF9zdGVwX2ZyZWVfY2xvc3VyZSk7 CisgICBzZXRfZ2RiYXJjaF9kaXNwbGFjZWRfc3RlcF9sb2NhdGlvbiAoZ2RiYXJjaCwgZGlzcGxh Y2VkX3N0ZXBfYXRfZW50cnlfcG9pbnQpOworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyKTsKKyB9CisgCisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1X bWlzc2luZy1wcm90b3R5cGVzLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvYXgtZ2RiLmMgYi9nZGIv YXgtZ2RiLmMKIGluZGV4IDU3NzZiYjAuLjYwOTllOTkgMTAwNjQ0CiAtLS0gYS9nZGIvYXgtZ2Ri LmMKQEAgLTM4MSw3ICs0MzIsNyBAQCBpbmRleCA3ZWVkYjZjLi5iMTQ3ODI2IDEwMDY0NAogKwog ICNlbmRpZiAvKiBCTE9DS19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dk Yi9icmVha3BvaW50LmMKLWluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CitpbmRleCAwZDU1 ODYyLi45MjU4YzZhIDEwMDY0NAogLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2RiL2Jy ZWFrcG9pbnQuYwogQEAgLTYxLDYgKzYxLDcgQEAKQEAgLTY3MSw3ICs3MjIsNyBAQCBpbmRleCBk NDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogIAkgICAgLyogV2UgZG8gbm90IHN0b3AgZm9yIHRoZXNl LiAgKi8KICAJICAgIGJzLT5zdG9wID0gMDsKICAJICBlbHNlCi1AQCAtMzgyNyw2ICszOTAyLDcg QEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKK0BAIC0zODI2LDYgKzM5MDEsNyBAQCBicHN0YXRf d2hhdCAoYnBzdGF0IGJzKQogICAgc3RydWN0IGJwc3RhdF93aGF0IHJldHZhbDsKICAKICAgIHJl dHZhbC5jYWxsX2R1bW15ID0gMDsKQEAgLTY3OSw3ICs3MzAsNyBAQCBpbmRleCBkNDA0ZWU3Li4y YmUzOTdmIDEwMDY0NAogICAgZm9yICg7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCiAgICAg IHsKICAgICAgICBlbnVtIGNsYXNzIGJzX2NsYXNzID0gbm9fZWZmZWN0OwotQEAgLTM4NzMsMTAg KzM5NDksMTUgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKK0BAIC0zODcyLDEwICszOTQ4LDE1 IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCiAgCSAgICBic19jbGFzcyA9IG5vX2VmZmVjdDsK ICAJICBicmVhazsKICAJY2FzZSBicF9sb25nam1wOgpAQCAtNjk1LDcgKzc0Niw3IEBAIGluZGV4 IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CiAgCSAgYnJlYWs7CiAgCWNhc2UgYnBfc3RlcF9yZXN1 bWU6CiAgCSAgaWYgKGJzLT5zdG9wKQotQEAgLTM4OTksNiArMzk4MCw3IEBAIGJwc3RhdF93aGF0 IChicHN0YXQgYnMpCitAQCAtMzg5OCw2ICszOTc5LDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBi cykKICAJY2FzZSBicF90aHJlYWRfZXZlbnQ6CiAgCWNhc2UgYnBfb3ZlcmxheV9ldmVudDoKICAJ Y2FzZSBicF9sb25nam1wX21hc3RlcjoKQEAgLTcwMyw3ICs3NTQsNyBAQCBpbmRleCBkNDA0ZWU3 Li4yYmUzOTdmIDEwMDY0NAogIAkgIGJzX2NsYXNzID0gYnBfbm9zdG9wOwogIAkgIGJyZWFrOwog IAljYXNlIGJwX2NhdGNocG9pbnQ6Ci1AQCAtNDA0Myw2ICs0MTI1LDggQEAgcHJpbnRfb25lX2Jy ZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTQwNDIsNiArNDEy NCw4IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAq YiwKICAgICAge2JwX2FjY2Vzc193YXRjaHBvaW50LCAiYWNjIHdhdGNocG9pbnQifSwKICAgICAg e2JwX2xvbmdqbXAsICJsb25nam1wIn0sCiAgICAgIHticF9sb25nam1wX3Jlc3VtZSwgImxvbmdq bXAgcmVzdW1lIn0sCkBAIC03MTIsNyArNzYzLDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAx MDA2NDQKICAgICAge2JwX3N0ZXBfcmVzdW1lLCAic3RlcCByZXN1bWUifSwKICAgICAge2JwX3dh dGNocG9pbnRfc2NvcGUsICJ3YXRjaHBvaW50IHNjb3BlIn0sCiAgICAgIHticF9jYWxsX2R1bW15 LCAiY2FsbCBkdW1teSJ9LAotQEAgLTQwNTAsNiArNDEzNCw3IEBAIHByaW50X29uZV9icmVha3Bv aW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MDQ5LDYgKzQxMzMsNyBA QCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAg ICAgIHticF90aHJlYWRfZXZlbnQsICJ0aHJlYWQgZXZlbnRzIn0sCiAgICAgIHticF9vdmVybGF5 X2V2ZW50LCAib3ZlcmxheSBldmVudHMifSwKICAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9u Z2ptcCBtYXN0ZXIifSwKQEAgLTcyMCw3ICs3NzEsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdm IDEwMDY0NAogICAgICB7YnBfY2F0Y2hwb2ludCwgImNhdGNocG9pbnQifSwKICAgICAge2JwX3Ry YWNlcG9pbnQsICJ0cmFjZXBvaW50In0sCiAgICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0 IHRyYWNlcG9pbnQifSwKLUBAIC00MTc0LDYgKzQyNTksOCBAQCBwcmludF9vbmVfYnJlYWtwb2lu dF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCitAQCAtNDE3Myw2ICs0MjU4LDggQEAg cHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAg ICAgIGNhc2UgYnBfZmluaXNoOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgICBjYXNl IGJwX2xvbmdqbXBfcmVzdW1lOgpAQCAtNzI5LDcgKzc4MCw3IEBAIGluZGV4IGQ0MDRlZTcuLjJi ZTM5N2YgMTAwNjQ0CiAgICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgICBjYXNlIGJw X3dhdGNocG9pbnRfc2NvcGU6CiAgICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTQxODEs NiArNDI2OCw3IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtw b2ludCAqYiwKK0BAIC00MTgwLDYgKzQyNjcsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2Nh dGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6 CiAgICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9t YXN0ZXI6CkBAIC03MzcsNyArNzg4LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQK ICAgICAgICBjYXNlIGJwX3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9p bnQ6CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6Ci1AQCAtNDgxOSw2ICs0OTA3LDggQEAgYWxs b2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgxOCw2ICs0 OTA2LDggQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAg ICAgIGNhc2UgYnBfZmluaXNoOgogICAgICBjYXNlIGJwX2xvbmdqbXA6CiAgICAgIGNhc2UgYnBf bG9uZ2ptcF9yZXN1bWU6CkBAIC03NDYsNyArNzk3LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3 ZiAxMDA2NDQKICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBv aW50X3Njb3BlOgogICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtNDgyNyw2ICs0OTE3LDcg QEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgy Niw2ICs0OTE2LDcgQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpi cHQpCiAgICAgIGNhc2UgYnBfb3ZlcmxheV9ldmVudDoKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6 CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC03NTQsNyArODA1LDcgQEAgaW5kZXgg ZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAgICAgICBsb2MtPmxvY190eXBlID0gYnBfbG9jX3Nv ZnR3YXJlX2JyZWFrcG9pbnQ7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgYnBfaGFyZHdhcmVf YnJlYWtwb2ludDoKLUBAIC01MDEzLDggKzUxMDQsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFu ZW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC01MDEyLDggKzUxMDMsNyBAQCBtYWtlX2Jy ZWFrcG9pbnRfcGVybWFuZW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICB9CiAgCiAgLyogQ2Fs bCB0aGlzIHJvdXRpbmUgd2hlbiBzdGVwcGluZyBhbmQgbmV4dGluZyB0byBlbmFibGUgYSBicmVh a3BvaW50CkBAIC03NjQsNyArODE1LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQK ICAKICB2b2lkCiAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkKLUBAIC01MDI3 LDEwICs1MTE3LDExIEBAIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCitAQCAt NTAyNiwxMCArNTExNiwxMSBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQog ICAgICAgY2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHJlcXVlc3RlZCB0 aHJlYWQuICAqLwogICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCiAgICAgIGlmIChi LT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCkBAIC03NzgsNyArODI5LDcgQEAgaW5k ZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAJY2xvbmUtPnRocmVhZCA9IHRocmVhZDsKICAg ICAgICB9CiAgfQotQEAgLTUwNDIsNyArNTEzMyw3IEBAIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9p bnQgKGludCB0aHJlYWQpCitAQCAtNTA0MSw3ICs1MTMyLDcgQEAgZGVsZXRlX2xvbmdqbXBfYnJl YWtwb2ludCAoaW50IHRocmVhZCkKICAgIHN0cnVjdCBicmVha3BvaW50ICpiLCAqdGVtcDsKICAK ICAgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCB0ZW1wKQpAQCAtNzg3LDcgKzgzOCw3IEBAIGlu ZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CiAgICAgICAgewogIAlpZiAoYi0+dGhyZWFkID09 IHRocmVhZCkKICAJICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci1AQCAtNjExNyw2ICs2MjA4LDgg QEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNjExNiw2ICs2MjA3LDggQEAg bWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAgICAgICAgY2FzZSBicF9maW5pc2g6CiAg ICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBA IC03OTYsNyArODQ3LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAgICAgICBj YXNlIGJwX3N0ZXBfcmVzdW1lOgogICAgICAgIGNhc2UgYnBfY2FsbF9kdW1teToKICAgICAgICBj YXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6Ci1AQCAtNjEyNSw2ICs2MjE4LDcgQEAgbWVudGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNjEyNCw2ICs2MjE3LDcgQEAgbWVudGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIpCiAgICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAg IGNhc2UgYnBfaml0X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC04 MDQsNyArODU1LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAJYnJlYWs7CiAg ICAgICAgfQogIAotQEAgLTc1MDksNiArNzYwMyw3IEBAIHN0cnVjdCB1bnRpbF9icmVha19jb21t YW5kX2NvbnRpbnVhdGlvbl9hcmdzCitAQCAtNzUwOCw2ICs3NjAyLDcgQEAgc3RydWN0IHVudGls X2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MKICB7CiAgICBzdHJ1Y3QgYnJlYWtwb2lu dCAqYnJlYWtwb2ludDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50MjsKQEAgLTgx Miw3ICs4NjMsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogIH07CiAgCiAgLyog VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZmV0Y2hfaW5mZXJpb3JfZXZlbnQgdmlhIHRoZQot QEAgLTc1MjMsNiArNzYxOCw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uICh2 b2lkICphcmcpCitAQCAtNzUyMiw2ICs3NjE3LDcgQEAgdW50aWxfYnJlYWtfY29tbWFuZF9jb250 aW51YXRpb24gKHZvaWQgKmFyZykKICAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5icmVha3BvaW50 KTsKICAgIGlmIChhLT5icmVha3BvaW50MikKICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJy ZWFrcG9pbnQyKTsKQEAgLTgyMCw3ICs4NzEsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEw MDY0NAogIH0KICAKICB2b2lkCi1AQCAtNzUzNCw2ICs3NjMwLDggQEAgdW50aWxfYnJlYWtfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTMzLDYg Kzc2MjksOCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwg aW50IGFueXdoZXJlKQogICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7CiAgICBzdHJ1 Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDIgPSBOVUxMOwogICAgc3RydWN0IGNsZWFudXAgKm9s ZF9jaGFpbjsKQEAgLTgyOSw3ICs4ODAsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0 NAogIAogICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7CiAgCi1AQCAtNzU3Miw2ICs3NjcwLDkg QEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3 aGVyZSkKK0BAIC03NTcxLDYgKzc2NjksOSBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICph cmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogIAogICAgb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50KTsKICAKQEAgLTgzOSw3ICs4OTAs NyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogICAgLyogS2VlcCB3aXRoaW4gdGhl IGN1cnJlbnQgZnJhbWUsIG9yIGluIGZyYW1lcyBjYWxsZWQgYnkgdGhlIGN1cnJlbnQKICAgICAg IG9uZS4gICovCiAgCi1AQCAtNzU4NCw2ICs3Njg1LDEwIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCitAQCAtNzU4Myw2ICs3Njg0 LDEwIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQg YW55d2hlcmUpCiAgCQkJCQkgICAgICBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSksCiAg CQkJCQkgICAgICBicF91bnRpbCk7CiAgICAgICAgbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3Bv aW50IChicmVha3BvaW50Mik7CkBAIC04NTAsNyArOTAxLDcgQEAgaW5kZXggZDQwNGVlNy4uMmJl Mzk3ZiAxMDA2NDQKICAgICAgfQogIAogICAgcHJvY2VlZCAoLTEsIFRBUkdFVF9TSUdOQUxfREVG QVVMVCwgMCk7Ci1AQCAtNzYwMCw2ICs3NzA1LDcgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hh ciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTk5LDYgKzc3MDQsNyBA QCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdo ZXJlKQogIAogICAgICAgIGFyZ3MtPmJyZWFrcG9pbnQgPSBicmVha3BvaW50OwogICAgICAgIGFy Z3MtPmJyZWFrcG9pbnQyID0gYnJlYWtwb2ludDI7CkBAIC04NTgsNyArOTA5LDcgQEAgaW5kZXgg ZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAKICAgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRf Y2hhaW4pOwogICAgICAgIGFkZF9jb250aW51YXRpb24gKGluZmVyaW9yX3RocmVhZCAoKSwKLUBA IC04Nzg1LDYgKzg4OTEsNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90 dHkpCitAQCAtODc4NCw2ICs4ODkwLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50 IGZyb21fdHR5KQogIAkgICAgJiYgYi0+dHlwZSAhPSBicF90aHJlYWRfZXZlbnQKICAJICAgICYm IGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAogIAkgICAgJiYgYi0+dHlwZSAhPSBicF9sb25n am1wX21hc3RlcgpAQCAtODY2LDcgKzkxNyw3IEBAIGluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAw NjQ0CiAgCSAgICAmJiBiLT5udW1iZXIgPj0gMCkKICAJICB7CiAgCSAgICBicmVha3NfdG9fZGVs ZXRlID0gMTsKLUBAIC04ODA0LDYgKzg5MTEsNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJn LCBpbnQgZnJvbV90dHkpCitAQCAtODgwMyw2ICs4OTEwLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkJJiYgYi0+dHlwZSAhPSBicF9qaXRfZXZlbnQKICAJ CSYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAogIAkJJiYgYi0+dHlwZSAhPSBicF9sb25n am1wX21hc3RlcgpAQCAtODc0LDcgKzkyNSw3IEBAIGluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAw NjQ0CiAgCQkmJiBiLT5udW1iZXIgPj0gMCkKICAJICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIp OwogIAkgIH0KLUBAIC05MTE0LDYgKzkyMjIsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZv aWQgKmJpbnQpCitAQCAtOTExMyw2ICs5MjIxLDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2 b2lkICpiaW50KQogIAkgcmVzZXQgbGF0ZXIgYnkgYnJlYWtwb2ludF9yZV9zZXQuICAqLwogICAg ICBjYXNlIGJwX292ZXJsYXlfZXZlbnQ6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBA IC04ODIsNyArOTMzLDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAgICAgICBk ZWxldGVfYnJlYWtwb2ludCAoYik7CiAgICAgICAgYnJlYWs7CiAgCi1AQCAtOTEzNiw2ICs5MjQ1 LDggQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorQEAgLTkxMzUsNiArOTI0 NCw4IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF9z dGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICBjYXNlIGJwX2xvbmdqbXBf cmVzdW1lOgpAQCAtODkxLDcgKzk0Miw3IEBAIGluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0 CiAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgogICAgICAgIGJyZWFrOwogICAgICB9Ci1AQCAtOTE3 OCw2ICs5Mjg5LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCitAQCAtOTE3Nyw2ICs5Mjg4 LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJf YnJlYWtwb2ludCAoIl9sb25nam1wIik7CiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtw b2ludCAoInNpZ2xvbmdqbXAiKTsKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50 ICgiX3NpZ2xvbmdqbXAiKTsKQEAgLTg5OSw3ICs5NTAsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUz OTdmIDEwMDY0NAogIH0KICAMCiAgLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhpcyBi cmVha3BvaW50OgotQEAgLTEwMTczLDYgKzEwMjg1LDIyIEBAIGFsbF90cmFjZXBvaW50cyAoKQor QEAgLTEwMTcyLDYgKzEwMjg0LDIyIEBAIGFsbF90cmFjZXBvaW50cyAoKQogICAgcmV0dXJuIHRw X3ZlYzsKICB9CiAgCkBAIC05MjIsNyArOTczLDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAx MDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhi cmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQgYXMg YSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTEwNzE3LDQgKzEwODQ1LDUgQEAg aW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2Vy dGVkIG1vZGUgaXMgb2ZmLiIpLAorQEAgLTEwNzE2LDQgKzEwODQ0LDUgQEAgaW5mZXJpb3IgaW4g YWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMg b2ZmLiIpLAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9i c2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2Nl ZWQpOwpAQCAtOTc4LDcgKzEwMjksNyBAQCBpbmRleCA2YjM3M2EzLi41OWFhNDEyIDEwMDY0NAog IGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqZ2V0X3RyYWNlcG9pbnQgKGludCBudW0pOwogIAog ZGlmZiAtLWdpdCBhL2dkYi9jLWV4cC55IGIvZ2RiL2MtZXhwLnkKLWluZGV4IDhlMDA5NzkuLjky ZWZiMzkgMTAwNjQ0CitpbmRleCA4ZTAwOTc5Li5iODZmYzhlIDEwMDY0NAogLS0tIGEvZ2RiL2Mt ZXhwLnkKICsrKyBiL2dkYi9jLWV4cC55CiBAQCAtNDE4LDYgKzQxOCwyNCBAQCBleHAgICAgIDog ICAgICAgZXhwICcoJyBub25lbXB0eV90eXBlbGlzdCAnKScgY29uc3Rfb3Jfdm9sYXRpbGUKQEAg LTEwMjEsNyArMTA3MiwyMiBAQCBpbmRleCA4ZTAwOTc5Li45MmVmYjM5IDEwMDY0NAogIAkJCSAg c3ltID0KICAJCQkgICAgbG9va3VwX3N5bWJvbCAobmFtZSwgKGNvbnN0IHN0cnVjdCBibG9jayAq KSBOVUxMLAogIAkJCQkJICAgVkFSX0RPTUFJTiwgKGludCAqKSBOVUxMKTsKLUBAIC0yMDMzLDYg KzIwNTIsMTMgQEAgc3RhdGljIGludCBsYXN0X3dhc19zdHJ1Y3RvcDsKK0BAIC0xMjk4LDYgKzEz MTcsMTQgQEAgbmFtZV9ub3RfdHlwZW5hbWUgOglOQU1FCisgICAgY29udGV4dCB3aGVyZSBvbmx5 IGEgbmFtZSBjb3VsZCBvY2N1ciwgdGhpcyBtaWdodCBiZSB1c2VmdWwuCisgICAJfAlOQU1FX09S X0lOVAorICAqLworKwl8CW9wZXJhdG9yCisrCQkJeworKwkJCSAgJCQuc3Rva2VuID0gJDE7Cisr CQkJICAkJC5zeW0gPSBsb29rdXBfc3ltYm9sICgkMS5wdHIsCisrCQkJCQkJICBleHByZXNzaW9u X2NvbnRleHRfYmxvY2ssCisrCQkJCQkJICBWQVJfRE9NQUlOLAorKwkJCQkJCSAgJiQkLmlzX2Ff ZmllbGRfb2ZfdGhpcyk7CisrCQkJfQorIAk7CisgCisgJSUKK0BAIC0yMDMzLDYgKzIwNjAsMTMg QEAgc3RhdGljIGludCBsYXN0X3dhc19zdHJ1Y3RvcDsKICBzdGF0aWMgaW50CiAgeXlsZXggKHZv aWQpCiAgewpAQCAtMTAzNSw3ICsxMTAxLDcgQEAgaW5kZXggOGUwMDk3OS4uOTJlZmIzOSAxMDA2 NDQKICAgIGludCBjOwogICAgaW50IG5hbWVsZW47CiAgICB1bnNpZ25lZCBpbnQgaTsKLUBAIC0y MDQxLDkgKzIwNjcsMTkgQEAgeXlsZXggKHZvaWQpCitAQCAtMjA0MSw5ICsyMDc1LDE5IEBAIHl5 bGV4ICh2b2lkKQogICAgY2hhciAqY29weTsKICAKICAgIGxhc3Rfd2FzX3N0cnVjdG9wID0gMDsK QEAgLTEwNTcsNyArMTEyMyw3IEBAIGluZGV4IDhlMDA5NzkuLjkyZWZiMzkgMTAwNjQ0CiAgICAv KiBDaGVjayBpZiB0aGlzIGlzIGEgbWFjcm8gaW52b2NhdGlvbiB0aGF0IHdlIG5lZWQgdG8gZXhw YW5kLiAgKi8KICAgIGlmICghIHNjYW5uaW5nX21hY3JvX2V4cGFuc2lvbiAoKSkKICAgICAgewot QEAgLTIwNzksMTAgKzIxMTUsMTkgQEAgeXlsZXggKHZvaWQpCitAQCAtMjA3OSwxMCArMjEyMywx OSBAQCB5eWxleCAodm9pZCkKICAJICAgICYmIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSAh PSBsYW5ndWFnZV9jcGx1cykKICAJICBicmVhazsKICAKQEAgLTEwNzcsNyArMTE0Myw3IEBAIGlu ZGV4IDhlMDA5NzkuLjkyZWZiMzkgMTAwNjQ0CiAgCXJldHVybiB0b2tlbnRhYjJbaV0udG9rZW47 CiAgICAgICAgfQogIAotQEAgLTIxMTEsNiArMjE1Niw4IEBAIHl5bGV4ICh2b2lkKQorQEAgLTIx MTEsNiArMjE2NCw4IEBAIHl5bGV4ICh2b2lkKQogICAgICAgICAgcmV0dXJuIDA7CiAgCiAgICAg IGNhc2UgJyAnOgpAQCAtMTA4Niw3ICsxMTUyLDcgQEAgaW5kZXggOGUwMDk3OS4uOTJlZmIzOSAx MDA2NDQKICAgICAgY2FzZSAnXHQnOgogICAgICBjYXNlICdcbic6CiAgICAgICAgbGV4cHRyKys7 Ci1AQCAtMjI2OCwxMSArMjMxNSwxMyBAQCB5eWxleCAodm9pZCkKK0BAIC0yMjY4LDExICsyMzIz LDEzIEBAIHl5bGV4ICh2b2lkKQogICAgICBlcnJvciAoIkludmFsaWQgY2hhcmFjdGVyICclYycg aW4gZXhwcmVzc2lvbi4iLCBjKTsKICAKICAgIC8qIEl0J3MgYSBuYW1lLiAgU2VlIGhvdyBsb25n IGl0IGlzLiAgKi8KQEAgLTExMDAsNyArMTE2Niw3IEBAIGluZGV4IDhlMDA5NzkuLjkyZWZiMzkg MTAwNjQ0CiAgICAgICAgLyogVGVtcGxhdGUgcGFyYW1ldGVyIGxpc3RzIGFyZSBwYXJ0IG9mIHRo ZSBuYW1lLgogIAkgRklYTUU6IFRoaXMgbWlzaGFuZGxlcyBgcHJpbnQgJGE8NCYmJGE+MycuICAq LwogIAotQEAgLTIzNTcsMTQgKzI0MDYsMjkgQEAgeXlsZXggKHZvaWQpCitAQCAtMjM1NywxNCAr MjQxNCwyOSBAQCB5eWxleCAodm9pZCkKICAgICAgIGN1cnJlbnRseSBhcyBuYW1lcyBvZiB0eXBl czsgTkFNRSBmb3Igb3RoZXIgc3ltYm9scy4KICAgICAgIFRoZSBjYWxsZXIgaXMgbm90IGNvbnN0 cmFpbmVkIHRvIGNhcmUgYWJvdXQgdGhlIGRpc3RpbmN0aW9uLiAgKi8KICAgIHsKQEAgLTExMzEs NyArMTE5Nyw3IEBAIGluZGV4IDhlMDA5NzkuLjkyZWZiMzkgMTAwNjQ0CiAgICAgIC8qIENhbGwg bG9va3VwX3N5bXRhYiwgbm90IGxvb2t1cF9wYXJ0aWFsX3N5bXRhYiwgaW4gY2FzZSB0aGVyZSBh cmUKICAgICAgICAgbm8gcHN5bXRhYnMgKGNvZmYsIHhjb2ZmLCBvciBzb21lIGZ1dHVyZSBjaGFu Z2UgdG8gYmxvdyBhd2F5IHRoZQogICAgICAgICBwc3ltdGFicyBvbmNlIG9uY2Ugc3ltYm9scyBh cmUgcmVhZCkuICAqLwotQEAgLTI0MjMsNiArMjQ4Nyw3IEBAIHl5bGV4ICh2b2lkKQorQEAgLTI0 MjMsNiArMjQ5NSw3IEBAIHl5bGV4ICh2b2lkKQogICAgICB5eWx2YWwuc3N5bS5pc19hX2ZpZWxk X29mX3RoaXMgPSBpc19hX2ZpZWxkX29mX3RoaXM7CiAgICAgIGlmIChpbl9wYXJzZV9maWVsZCAm JiAqbGV4cHRyID09ICdcMCcpCiAgICAgICAgc2F3X25hbWVfYXRfZW9mID0gMTsKQEAgLTEyOTks NyArMTM2NSw3IEBAIGluZGV4IGViZGU4NzYuLjkwN2IyNzUgMTAwNjQ0CiAgI3VuZGVmIFJFTE9D X1NSQ0RJUgogIAogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1p bmRleCA0OTgwMTA2Li5iZTY5NDg4IDEwMDc1NQoraW5kZXggZDQ0NGIwOC4uZDRjZWQ4OSAxMDA3 NTUKIC0tLSBhL2dkYi9jb25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzYsNiAr Njc2LDggQEAgUkVQT1JUX0JVR1NfVE8KQEAgLTE0MTQsNyArMTQ4MCw3IEBAIGluZGV4IDQ5ODAx MDYuLmJlNjk0ODggMTAwNzU1CiAgCiAgICAjIEZsYWdzIG5lZWRlZCB0byBjb21waWxlIFB5dGhv biBjb2RlICh0YWtlbiBmcm9tIHB5dGhvbi1jb25maWcgLS1jZmxhZ3MpLgogZGlmZiAtLWdpdCBh L2dkYi9jb25maWd1cmUuYWMgYi9nZGIvY29uZmlndXJlLmFjCi1pbmRleCBhNzU2YTJkLi5iNDRl MjFkIDEwMDY0NAoraW5kZXggOGRhNjg2Ny4uOGUzOTI1NCAxMDA2NDQKIC0tLSBhL2dkYi9jb25m aWd1cmUuYWMKICsrKyBiL2dkYi9jb25maWd1cmUuYWMKIEBAIC0xMDgsNiArMTA4LDUxIEBAIEFT X0hFTFBfU1RSSU5HKFstLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXM9UEFUSF0sIFthdXRvbWF0aWNh bGx5IHJlbG9jYXRlIHRoaXMgcGF0CkBAIC0xNDkyLDcgKzE1NTgsNyBAQCBpbmRleCA4MWY2YTVk Li4wOTdkYjY1IDEwMDY0NAogIAkJCXsgJCQgPSAkMS5jb21wOwogIAkJCSAgaWYgKCQyKSAkJCA9 IGZpbGxfY29tcCAoREVNQU5HTEVfQ09NUE9ORU5UX0xPQ0FMX05BTUUsICQkLCAkMik7IH0KIGRp ZmYgLS1naXQgYS9nZGIvY3AtbmFtZXNwYWNlLmMgYi9nZGIvY3AtbmFtZXNwYWNlLmMKLWluZGV4 IDA0YjY2NWIuLjIxZTAxM2EgMTAwNjQ0CitpbmRleCA4Y2E5YzIwLi4yMWUwMTNhIDEwMDY0NAog LS0tIGEvZ2RiL2NwLW5hbWVzcGFjZS5jCiArKysgYi9nZGIvY3AtbmFtZXNwYWNlLmMKIEBAIC0z NCwxNCArMzQsMTcgQEAKQEAgLTE1NTYsNyArMTYyMiw3IEBAIGluZGV4IDA0YjY2NWIuLjIxZTAx M2EgMTAwNjQ0CiAgICAgU2V0IGl0cyBuZXh0IG1lbWJlciBpbiB0aGUgbGlua2VkIGxpc3QgdG8g TkVYVDsgYWxsb2NhdGUgYWxsIG1lbW9yeQogICAgIHVzaW5nIHhtYWxsb2MuICBJdCBjb3BpZXMg dGhlIHN0cmluZ3MsIHNvIE5BTUUgY2FuIGJlIGEgdGVtcG9yYXJ5CiAgICAgc3RyaW5nLiAgKi8K LUBAIC0yMDcsMTQgKzIxNSwyMSBAQCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVz cGFjZSkKK0BAIC0yMDcsMTMgKzIxNSwxOSBAQCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIg Km5hbWVzcGFjZSkKICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICoKICBjcF9hZGRfdXNpbmcgKGNvbnN0 IGNoYXIgKmRlc3QsCiAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCkBAIC0xNTc2LDEx ICsxNjQyLDkgQEAgaW5kZXggMDRiNjY1Yi4uMjFlMDEzYSAxMDA2NDQKICsgIHJldHZhbC0+ZGVj bGFyYXRpb24gPSBzYXZlc3RyaW5nIChkZWNsYXJhdGlvbiwgc3RybGVuIChkZWNsYXJhdGlvbikp OwogKyAgcmV0dmFsLT5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOwogICAgcmV0dmFsLT5uZXh0 ID0gbmV4dDsKLSsgIHJldHZhbC0+c2VhcmNoZWQgPSAwOworICAgcmV0dmFsLT5zZWFyY2hlZCA9 IDA7CiAgCi0gICByZXR1cm4gcmV0dmFsOwotIH0KLUBAIC0yMjksMTIgKzI0NCw0OCBAQCBjcF9h ZGRfdXNpbmcgKGNvbnN0IGNoYXIgKmRlc3QsCitAQCAtMjMwLDE5ICsyNDQsMTAwIEBAIGNwX2Fk ZF91c2luZyAoY29uc3QgY2hhciAqZGVzdCwKICAKICBzdHJ1Y3Qgc3ltYm9sICoKICBjcF9sb29r dXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLApAQCAtMTU4OCwxNSArMTY1Miwx NyBAQCBpbmRleCAwNGI2NjViLi4yMWUwMTNhIDEwMDY0NAogIAkJCSAgIGNvbnN0IHN0cnVjdCBi bG9jayAqYmxvY2ssCiAgCQkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQogIHsKLS0gIHJl dHVybiBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLCBk b21haW4sCi0tCQkJCSBibG9ja19zY29wZSAoYmxvY2spLCAwKTsKKy0gIHN0cnVjdCBzeW1ib2wg KnN5bTsKICsgIHN0cnVjdCBzeW1ib2wgKnN5bTsgCi0rICBjb25zdCBjaGFyICpzY29wZSA9IGJs b2NrX3Njb3BlIChibG9jayk7Ci0rCisgICBjb25zdCBjaGFyICpzY29wZSA9IGJsb2NrX3Njb3Bl IChibG9jayk7CisgCistICBzeW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBsaW5r YWdlX25hbWUsIGJsb2NrLCBkb21haW4sIHNjb3BlLCAwKTsKICsgIHN5bSA9IGxvb2t1cF9uYW1l c3BhY2Vfc2NvcGUgKG5hbWUsIGJsb2NrLCBkb21haW4sIHNjb3BlLCAwKTsKLSsgIGlmIChzeW0g IT0gTlVMTCkKLSsgICAgcmV0dXJuIHN5bTsKLSsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAg cmV0dXJuIHN5bTsKKyAKKy0gIHJldHVybiBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoc2Nv cGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMSk7CiArICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9uYW1l c3BhY2Uoc2NvcGUsIG5hbWUsIGJsb2NrLCBkb21haW4pOwogK30KICsKQEAgLTE2MjksNzggKzE2 OTUsMTAxIEBAIGluZGV4IDA0YjY2NWIuLjIxZTAxM2EgMTAwNjQ0CiArICAgIH0KICsKICsgIHJl dHVybiBOVUxMOwotIH0KLSAKLSAvKiBMb29rdXAgTkFNRSBhdCBuYW1lc3BhY2Ugc2NvcGUgKG9y LCBpbiBDIHRlcm1zLCBpbiBzdGF0aWMgYW5kCi1AQCAtMjUyLDkgKzMwMyw4IEBAIGNwX2xvb2t1 cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgIkE6OngiLCBhbmQgaWYg dGhhdCBjYWxsIGZhaWxzLCB0aGVuIHRoZSBmaXJzdCBjYWxsIGxvb2tzIGZvcgotICAgICJ4Ii4g ICovCi0gCi0tc3RhdGljIHN0cnVjdCBzeW1ib2wgKgorK30KKysKKysvKiBMb29rdXAgTkFNRSBh dCBuYW1lc3BhY2Ugc2NvcGUgKG9yLCBpbiBDIHRlcm1zLCBpbiBzdGF0aWMgYW5kCisrICAgZ2xv YmFsIHZhcmlhYmxlcykuICBTQ09QRSBpcyB0aGUgbmFtZXNwYWNlIHRoYXQgdGhlIGN1cnJlbnQK KysgICBmdW5jdGlvbiBpcyBkZWZpbmVkIHdpdGhpbjsgb25seSBjb25zaWRlciBuYW1lc3BhY2Vz IHdob3NlIGxlbmd0aAorKyAgIGlzIGF0IGxlYXN0IFNDT1BFX0xFTi4gIE90aGVyIGFyZ3VtZW50 cyBhcmUgYXMgaW4KKysgICBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsLgorKworKyAgIEZvciBl eGFtcGxlLCBpZiB3ZSdyZSB3aXRoaW4gYSBmdW5jdGlvbiBBOjpCOjpmIGFuZCBsb29raW5nIGZv ciBhCisrICAgc3ltYm9sIHgsIHRoaXMgd2lsbCBnZXQgY2FsbGVkIHdpdGggTkFNRSA9ICJ4Iiwg U0NPUEUgPSAiQTo6QiIsIGFuZAorKyAgIFNDT1BFX0xFTiA9IDAuICBJdCB0aGVuIGNhbGxzIGl0 c2VsZiB3aXRoIE5BTUUgYW5kIFNDT1BFIHRoZSBzYW1lLAorKyAgIGJ1dCB3aXRoIFNDT1BFX0xF TiA9IDEuICBBbmQgdGhlbiBpdCBjYWxscyBpdHNlbGYgd2l0aCBOQU1FIGFuZAorKyAgIFNDT1BF IHRoZSBzYW1lLCBidXQgd2l0aCBTQ09QRV9MRU4gPSA0LiAgVGhpcyB0aGlyZCBjYWxsIGxvb2tz IGZvcgorKyAgICJBOjpCOjp4IjsgaWYgaXQgZG9lc24ndCBmaW5kIGl0LCB0aGVuIHRoZSBzZWNv bmQgY2FsbCBsb29rcyBmb3IKKysgICAiQTo6eCIsIGFuZCBpZiB0aGF0IGNhbGwgZmFpbHMsIHRo ZW4gdGhlIGZpcnN0IGNhbGwgbG9va3MgZm9yCisrICAgIngiLiAgKi8KKysKICtzdHJ1Y3Qgc3lt Ym9sICoKLSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAotLQkJCWNv bnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQljb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAot IAkJCWNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLSAJCQljb25zdCBjaGFyICpzY29wZSwKLUBA IC0yNzYsOCArMzI2LDcgQEAgbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29uc3QgY2hhciAqbmFt ZSwKLSAJICBuZXdfc2NvcGVfbGVuICs9IDI7Ci0gCX0KLSAgICAgICBuZXdfc2NvcGVfbGVuICs9 IGNwX2ZpbmRfZmlyc3RfY29tcG9uZW50IChzY29wZSArIG5ld19zY29wZV9sZW4pOwotLSAgICAg IHN5bSA9IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ss Ci0tCQkJCSAgICBkb21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVuKTsKKytsb29rdXBfbmFtZXNw YWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAorKwkJCWNvbnN0IHN0cnVjdCBibG9jayAqYmxv Y2ssCisrCQkJY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorKwkJCWNvbnN0IGNoYXIgKnNjb3Bl LAorKwkJCWludCBzY29wZV9sZW4pCisreworKyAgY2hhciAqbmFtZXNwYWNlOworKworKyAgaWYg KHNjb3BlW3Njb3BlX2xlbl0gIT0gJ1wwJykKKysgICAgeworKyAgICAgIC8qIFJlY3Vyc2l2ZWx5 IHNlYXJjaCBmb3IgbmFtZXMgaW4gY2hpbGQgbmFtZXNwYWNlcyBmaXJzdC4gICovCisrCisrICAg ICAgc3RydWN0IHN5bWJvbCAqc3ltOworKyAgICAgIGludCBuZXdfc2NvcGVfbGVuID0gc2NvcGVf bGVuOworKworKyAgICAgIC8qIElmIHRoZSBjdXJyZW50IHNjb3BlIGlzIGZvbGxvd2VkIGJ5ICI6 OiIsIHNraXAgcGFzdCB0aGF0LiAgKi8KKysgICAgICBpZiAobmV3X3Njb3BlX2xlbiAhPSAwKQor Kwl7CisrCSAgZ2RiX2Fzc2VydCAoc2NvcGVbbmV3X3Njb3BlX2xlbl0gPT0gJzonKTsKKysJICBu ZXdfc2NvcGVfbGVuICs9IDI7CisrCX0KKysgICAgICBuZXdfc2NvcGVfbGVuICs9IGNwX2ZpbmRf Zmlyc3RfY29tcG9uZW50IChzY29wZSArIG5ld19zY29wZV9sZW4pOwogKyAgICAgIHN5bSA9IGxv b2t1cF9uYW1lc3BhY2Vfc2NvcGUgKG5hbWUsIGJsb2NrLCBkb21haW4sIHNjb3BlLCBuZXdfc2Nv cGVfbGVuKTsKLSAgICAgICBpZiAoc3ltICE9IE5VTEwpCi0gCXJldHVybiBzeW07Ci0gICAgIH0K LUBAIC0yODgsMjUgKzMzNyw5OCBAQCBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFy ICpuYW1lLAotICAgbmFtZXNwYWNlID0gYWxsb2NhIChzY29wZV9sZW4gKyAxKTsKLSAgIHN0cm5j cHkgKG5hbWVzcGFjZSwgc2NvcGUsIHNjb3BlX2xlbik7Ci0gICBuYW1lc3BhY2Vbc2NvcGVfbGVu XSA9ICdcMCc7Ci0tICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKG5hbWVzcGFj ZSwgbmFtZSwgbGlua2FnZV9uYW1lLAotLQkJCQkgICAgIGJsb2NrLCBkb21haW4pOworKyAgICAg IGlmIChzeW0gIT0gTlVMTCkKKysJcmV0dXJuIHN5bTsKKysgICAgfQorKworKyAgLyogT2theSwg d2UgZGlkbid0IGZpbmQgYSBtYXRjaCBpbiBvdXIgY2hpbGRyZW4sIHNvIGxvb2sgZm9yIHRoZQor KyAgICAgbmFtZSBpbiB0aGUgY3VycmVudCBuYW1lc3BhY2UuICAqLworKworKyAgbmFtZXNwYWNl ID0gYWxsb2NhIChzY29wZV9sZW4gKyAxKTsKKysgIHN0cm5jcHkgKG5hbWVzcGFjZSwgc2NvcGUs IHNjb3BlX2xlbik7CisrICBuYW1lc3BhY2Vbc2NvcGVfbGVuXSA9ICdcMCc7CiArICByZXR1cm4g Y3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKG5hbWVzcGFjZSwgbmFtZSxibG9jaywgZG9t YWluKTsKICB9CiAgCi0tLyogTG9vayB1cCBOQU1FIGluIHRoZSBDKysgbmFtZXNwYWNlIE5BTUVT UEFDRSwgYXBwbHlpbmcgdGhlIHVzaW5nCi0tICAgZGlyZWN0aXZlcyB0aGF0IGFyZSBhY3RpdmUg aW4gQkxPQ0suICBPdGhlciBhcmd1bWVudHMgYXJlIGFzIGluCi0rLyogTG9vayB1cCBOQU1FIGlu IHRoZSBDKysgbmFtZXNwYWNlIE5BTUVTUEFDRS4gT3RoZXIgYXJndW1lbnRzIGFyZSBhcyBpbgot ICAgIGNwX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwuICAqLworIC8qIExvb2sgdXAgTkFNRSBpbiB0 aGUgQysrIG5hbWVzcGFjZSBOQU1FU1BBQ0UuIE90aGVyIGFyZ3VtZW50cyBhcmUgYXMgaW4KK0BA IC0yNTAsMjUgKzM0NSwyNCBAQCBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFy ICpuYW1lLAogIAotK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLStjcF9sb29rdXBfc3ltYm9sX2lu X25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9s ICoKKyBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNl LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ss CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFp bikKICsJCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKICsJCQkgICAgICAgY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaywKICsJCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotK3sK KyB7CiArCi0rICBpZiAobmFtZXNwYWNlWzBdID09ICdcMCcpCi0rICAgIHsKKyAgIGlmIChuYW1l c3BhY2VbMF0gPT0gJ1wwJykKKyAgICAgeworLSAgICAgIHJldHVybiBsb29rdXBfc3ltYm9sX2Zp bGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG9tYWluLCAwKTsKICsgICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxlIChu YW1lLCBibG9jayxkb21haW4sIDApOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKKyAgICAgfQor ICAgZWxzZQorICAgICB7CistICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25hbWUgPSBhbGxvY2Eg KHN0cmxlbiAobmFtZXNwYWNlKSArIDIgKworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJsZW4gKG5hbWUrIDEpKTsKICsgICAgICBjaGFyICpjb25jYXRlbmF0ZWRf bmFtZQogKwk9IGFsbG9jYSAoc3RybGVuIChuYW1lc3BhY2UpICsgMiArIHN0cmxlbiAobmFtZSkg KyAxKTsKLSsgICAgICBzdHJjcHkgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lc3BhY2UpOwotKyAg ICAgIHN0cmNhdCAoY29uY2F0ZW5hdGVkX25hbWUsICI6OiIpOwotKyAgICAgIHN0cmNhdCAoY29u Y2F0ZW5hdGVkX25hbWUsIG5hbWUpOworICAgICAgIHN0cmNweSAoY29uY2F0ZW5hdGVkX25hbWUs IG5hbWVzcGFjZSk7CisgICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgIjo6Iik7Cisg ICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFtZSk7CistICAgICAgcmV0dXJuIGxv b2t1cF9zeW1ib2xfZmlsZSAoY29uY2F0ZW5hdGVkX25hbWUsIGxpbmthZ2VfbmFtZSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgZG9tYWluLGNwX2lzX2Fub255bW91 cyAobmFtZXNwYWNlKSk7CiArICAgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uY2F0 ZW5hdGVkX25hbWUsIGJsb2NrLCBkb21haW4sCiArCQkJCWNwX2lzX2Fub255bW91cyAobmFtZXNw YWNlKSk7Ci0rICAgIH0KLSt9Ci0rCi0rLyogVXNlZCBmb3IgY2xlYW51cHMgdG8gcmVzZXQgdGhl ICJzZWFyY2hlZCIgZmxhZyBpbmNhc2UKLSsgICBvZiBhbiBlcnJvci4gICovCi0rCi0rc3RhdGlj IHZvaWQKLStyZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQgKHZvaWQgKmRhdGEpCi0rewotKyAgc3Ry dWN0IHVzaW5nX2RpcmVjdCAqZGlyZWN0ID0gZGF0YTsKLSsgIGRpcmVjdC0+c2VhcmNoZWQgPSAw OwotK30KLSsKLSsvKiBTZWFyY2ggZm9yIE5BTUUgYnkgYXBwbHlpbmcgYWxsIGltcG9ydCBzdGF0 ZW1lbnRzIGJlbG9uZ2luZworICAgICB9CisgfQorIAorQEAgLTI4Myw5ICszNzcsMTcgQEAgcmVz ZXRfZGlyZWN0aXZlX3NlYXJjaGVkICh2b2lkICpkYXRhKQorIH0KKyAKKyAvKiBTZWFyY2ggZm9y IE5BTUUgYnkgYXBwbHlpbmcgYWxsIGltcG9ydCBzdGF0ZW1lbnRzIGJlbG9uZ2luZworLSAgIHRv IEJMT0NLIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGluIFNDT1BFLgogKyAgIHRvIEJMT0NLIHdoaWNo IGFyZSBhcHBsaWNhYmxlIGluIFNDT1BFLiBJZiBERUNMQVJBVElPTl9PTkxZIHRoZSBzZWFyY2gK ICsgICBpcyByZXN0cmljdGVkIHRvIHVzaW5nIGRlY2xhcmF0aW9ucy4KICsgICBFeGFtcGxlOgpA QCAtMTcxMCw2OCArMTc5OSw3MSBAQCBpbmRleCAwNGI2NjViLi4yMWUwMTNhIDEwMDY0NAogKyAg ICAgfQogKyAgICAgdXNpbmcgQTo6eDsKICsKLSsgICBJZiBTRUFSQ0hfUEFSRU5UUyB0aGUgc2Vh cmNoIHdpbGwgaW5jbHVkZSBpbXBvcnRzIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGluCisgICAgSWYg U0VBUkNIX1BBUkVOVFMgdGhlIHNlYXJjaCB3aWxsIGluY2x1ZGUgaW1wb3J0cyB3aGljaCBhcmUg YXBwbGljYWJsZSBpbgorLSAgIHBhcmVudHMgb2YgU0NPUEUuCiArICAgcGFyZW50cyBvZiBzY29w ZXMuCi0rICAgRXhhbXBsZToKLSsKLSsgICAgIG5hbWVzcGFjZSBBewotKyAgICAgICB1c2luZyBu YW1lc3BhY2UgWDsKLSsgICAgICAgbmFtZXNwYWNlIEJ7Ci0rICAgICAgICAgdXNpbmcgbmFtZXNw YWNlIFk7Ci0rICAgICAgIH0KLSsgICAgIH0KLSsKLSsgICBJZiBTQ09QRSBpcyAiQTo6QiIgYW5k IFNFQVJDSF9QQVJFTlRTIGlzIHRydWUgdGhlIGltcG9ydHMgb2YgbmFtZXNwYWNlcyBYCi0rICAg YW5kIFkgd2lsbCBiZSBjb25zaWRlcmVkLiBJZiBTRUFSQ0hfUEFSRU5UUyBpcyBmYWxzZSBvbmx5 IHRoZSBpbXBvcnQgb2YgWQotKyAgIGlzIGNvbnNpZGVyZWQuICAqLwotKwotIHN0cnVjdCBzeW1i b2wgKgotLWNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2Us Ci0tCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJICAgIGNvbnN0IGNoYXIgKmxpbmthZ2Vf bmFtZSwKLS0JCQkgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLS0JCQkgICAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKQotK2NwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAoY29uc3QgY2hh ciAqc2NvcGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKKyAgICBF eGFtcGxlOgorIAorICAgICAgbmFtZXNwYWNlIEF7CitAQCAtMjk5LDI2ICs0MDEsMzMgQEAgcmVz ZXRfZGlyZWN0aXZlX3NlYXJjaGVkICh2b2lkICpkYXRhKQorICAgIGFuZCBZIHdpbGwgYmUgY29u c2lkZXJlZC4gSWYgU0VBUkNIX1BBUkVOVFMgaXMgZmFsc2Ugb25seSB0aGUgaW1wb3J0IG9mIFkK KyAgICBpcyBjb25zaWRlcmVkLiAgKi8KKyAKKy1zdGF0aWMgc3RydWN0IHN5bWJvbCAqCisrc3Ry dWN0IHN5bWJvbCAqCisgY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzIChjb25zdCBjaGFyICpzY29w ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCistICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgaW50IHNlYXJjaF9wYXJlbnRzKQogKyAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGRlY2xhcmF0aW9uX29ubHksCiArICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgc2VhcmNoX3BhcmVudHMpCiAgewotLSAgY29uc3Qgc3RydWN0IHVzaW5nX2RpcmVjdCAq Y3VycmVudDsKKyAgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmN1cnJlbnQ7CiAtICBzdHJ1Y3Qgc3lt Ym9sICpzeW07Ci0rICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjdXJyZW50OworLSAgaW50IGxlbjsK ICsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7Ci0rICBpbnQgZGlyZWN0aXZlX21hdGNoOwor ICAgaW50IGRpcmVjdGl2ZV9tYXRjaDsKICsgIGludCBjdXJyZW50X2xpbmU7Ci0rICBzdHJ1Y3Qg Y2xlYW51cCAqc2VhcmNoZWRfY2xlYW51cDsKLSsKKyAgIHN0cnVjdCBjbGVhbnVwICpzZWFyY2hl ZF9jbGVhbnVwOworIAorLSAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBzeW1ib2wgaW4gdGhl IGdpdmVuIG5hbWVzcGFjZS4gICovCistICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVz cGFjZSAoc2NvcGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKKy0gIGlmIChzeW0gIT0gTlVMTCkKICsg IGlmKCFkZWNsYXJhdGlvbl9vbmx5KQogKyAgICAvKiBGaXJzdCwgdHJ5IHRvIGZpbmQgdGhlIHN5 bWJvbCBpbiB0aGUgZ2l2ZW4gbmFtZXNwYWNlLiAgKi8KICsgICAgc3ltID0gY3BfbG9va3VwX3N5 bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKLSAKLS0gIC8q IEZpcnN0LCBnbyB0aHJvdWdoIHRoZSB1c2luZyBkaXJlY3RpdmVzLiAgSWYgYW55IG9mIHRoZW0g YWRkIG5ldwotKyAgaWYgKCBzeW0gIT0gTlVMTCkKLSsgICAgcmV0dXJuIHN5bTsKICsKKysgIGlm ICggc3ltICE9IE5VTEwpCisgICAgIHJldHVybiBzeW07CisgCiArICBpZiAoaGFzX3N0YWNrX2Zy YW1lcyAoKSkKICsgICAgY3VycmVudF9saW5lID0gZmluZF9wY19saW5lIChnZXRfZnJhbWVfcGMg KGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCkpLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwKS5saW5lOwogKyAgZWxzZQogKyAgICBjdXJyZW50X2xpbmUg PSAwOwogKwotKyAgLyogR28gdGhyb3VnaCB0aGUgdXNpbmcgZGlyZWN0aXZlcy4gIElmIGFueSBv ZiB0aGVtIGFkZCBuZXcKKyAgIC8qIEdvIHRocm91Z2ggdGhlIHVzaW5nIGRpcmVjdGl2ZXMuICBJ ZiBhbnkgb2YgdGhlbSBhZGQgbmV3CiAgICAgICBuYW1lcyB0byB0aGUgbmFtZXNwYWNlIHdlJ3Jl IHNlYXJjaGluZyBpbiwgc2VlIGlmIHdlIGNhbiBmaW5kIGEKICAgICAgIG1hdGNoIGJ5IGFwcGx5 aW5nIHRoZW0uICAqLwotIAotQEAgLTMxNCwzOSArNDM2LDc4IEBAIGNwX2xvb2t1cF9zeW1ib2xf bmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCitAQCAtMzI3LDEyMyArNDM2LDc4IEBA IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAoY29uc3QgY2hhciAqc2NvcGUsCiAgICAgICAgIGN1 cnJlbnQgIT0gTlVMTDsKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpCiAgICAgIHsK LS0gICAgICBpZiAoc3RyY21wIChuYW1lc3BhY2UsIGN1cnJlbnQtPmltcG9ydF9kZXN0KSA9PSAw KQorLSAgICAgIGxlbiA9IHN0cmxlbiAoY3VycmVudC0+aW1wb3J0X2Rlc3QpOworLSAgICAgIGRp cmVjdGl2ZV9tYXRjaCA9IChzZWFyY2hfcGFyZW50cworLSAgICAgICAgICAgICAgICAgICAgICAg ICA/IChzdHJuY21wIChzY29wZSwgY3VycmVudC0+aW1wb3J0X2Rlc3QsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbiAoY3VycmVudC0+aW1wb3J0X2Rlc3QpKSA9 PSAwCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChsZW4gPT0gMAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfHwgc2NvcGVbbGVuXSA9PSAnOicgfHwgc2NvcGVbbGVu XSA9PSAnXDAnKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgOiBzdHJjbXAgKHNjb3BlLCBj dXJyZW50LT5pbXBvcnRfZGVzdCkgPT0gMCk7CistCiArICAKLSsgICAgICAvKiBJZiB0aGUgaW1w b3J0IGRlc3RpbmF0aW9uIGlzIHRoZSBjdXJyZW50IHNjb3BlIG9yIG9uZSBvZiBpdHMgYW5jZXN0 b3JzIHRoZW4KLSsgICAgICAgICBpdCBpcyBhcHBsaWNhYmxlLiAgKi8KKyAgICAgICAvKiBJZiB0 aGUgaW1wb3J0IGRlc3RpbmF0aW9uIGlzIHRoZSBjdXJyZW50IHNjb3BlIG9yIG9uZSBvZiBpdHMg YW5jZXN0b3JzIHRoZW4KKyAgICAgICAgICBpdCBpcyBhcHBsaWNhYmxlLiAgKi8KKy0gICAgICBp ZiAoZGlyZWN0aXZlX21hdGNoICYmICFjdXJyZW50LT5zZWFyY2hlZCkKICsgICAgICBkaXJlY3Rp dmVfbWF0Y2ggPSBzZWFyY2hfcGFyZW50cyA/CiArICAgICAgICAgICAgICAgICAgICAgICAgc3Ry bmNtcCAoc2NvcGUsIGN1cnJlbnQtPmltcG9ydF9kZXN0LAogKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cmxlbihjdXJyZW50LT5pbXBvcnRfZGVzdCkpID09IDAgOgpAQCAtMTc4 MSwxMSArMTg3Myw4MiBAQCBpbmRleCAwNGI2NjViLi4yMWUwMTNhIDEwMDY0NAogKyAgICAgICAg ICBjdXJyZW50LT5saW5lX251bWJlciA8IGN1cnJlbnRfbGluZSAmJgogKyAgICAgICAgICAhY3Vy cmVudC0+c2VhcmNoZWQpCiAgCXsKLS0JICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFj ZSAoY3VycmVudC0+aW1wb3J0X3NyYywKLS0JCQkJCSAgICBuYW1lLAotLQkJCQkJICAgIGxpbmth Z2VfbmFtZSwKLS0JCQkJCSAgICBibG9jaywKLS0JCQkJCSAgICBkb21haW4pOworLQkvKiBNYXJr IHRoaXMgaW1wb3J0IGFzIHNlYXJjaGVkIHNvIHRoYXQgdGhlIHJlY3Vyc2l2ZSBjYWxsIGRvZXMg bm90CistICAgICAgICAgICBzZWFyY2ggaXQgYWdhaW4uICAqLworLQljdXJyZW50LT5zZWFyY2hl ZCA9IDE7CistCXNlYXJjaGVkX2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKHJlc2V0X2RpcmVjdGl2 ZV9zZWFyY2hlZCwgY3VycmVudCk7CistCistCXN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNw YWNlIChjdXJyZW50LT5pbXBvcnRfc3JjLAorLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZSwKKy0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmthZ2Vf bmFtZSwKKy0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorLQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluLAorLQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCk7CistCistCWN1cnJlbnQtPnNlYXJjaGVkID0gMDsKKy0JZGlz Y2FyZF9jbGVhbnVwcyAoc2VhcmNoZWRfY2xlYW51cCk7CistCistCWlmIChzeW0gIT0gTlVMTCkK Ky0JICByZXR1cm4gc3ltOworLQl9CistICAgIH0KKy0KKy0gIHJldHVybiBOVUxMOworLX0KKy0K Ky0gLyogU2VhcmNoZXMgZm9yIE5BTUUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLCBhbmQgYnkg YXBwbHlpbmcgcmVsZXZhbnQgaW1wb3J0CistICAgIHN0YXRlbWVudHMgYmVsb25naW5nIHRvIEJM T0NLIGFuZCBpdHMgcGFyZW50cy4gU0NPUEUgaXMgdGhlIG5hbWVzcGFjZSBzY29wZQorLSAgICBv ZiB0aGUgY29udGV4dCBpbiB3aGljaCB0aGUgc2VhcmNoIGlzIGJlaW5nIGV2YWx1YXRlZC4gICov CistCistc3RydWN0IHN5bWJvbCoKKy1jcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3Qg Y2hhciAqc2NvcGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5h bWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFt ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9j aywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWlu LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2VhcmNoX3BhcmVudHMp CisteworLSAgc3RydWN0IHN5bWJvbCAqc3ltOworLQorLSAgLyogU2VhcmNoIGZvciBuYW1lIGlu IG5hbWVzcGFjZXMgaW1wb3J0ZWQgdG8gdGhpcyBhbmQgcGFyZW50IGJsb2Nrcy4gICovCistICB3 aGlsZSAoYmxvY2sgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1i b2xfaW1wb3J0cyAoc2NvcGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9wYXJlbnRzKTsKKy0K Ky0gICAgICBpZiAoc3ltKQorLQlyZXR1cm4gc3ltOworLQorLSAgICAgIGJsb2NrID0gQkxPQ0tf U1VQRVJCTE9DSyAoYmxvY2spOworLSAgICB9CistCistICByZXR1cm4gTlVMTDsKKy19CistCist LyogTG9va3VwIE5BTUUgYXQgbmFtZXNwYWNlIHNjb3BlIChvciwgaW4gQyB0ZXJtcywgaW4gc3Rh dGljIGFuZAorLSAgIGdsb2JhbCB2YXJpYWJsZXMpLiAgU0NPUEUgaXMgdGhlIG5hbWVzcGFjZSB0 aGF0IHRoZSBjdXJyZW50CistICAgZnVuY3Rpb24gaXMgZGVmaW5lZCB3aXRoaW47IG9ubHkgY29u c2lkZXIgbmFtZXNwYWNlcyB3aG9zZSBsZW5ndGgKKy0gICBpcyBhdCBsZWFzdCBTQ09QRV9MRU4u ICBPdGhlciBhcmd1bWVudHMgYXJlIGFzIGluCistICAgY3BfbG9va3VwX3N5bWJvbF9ub25sb2Nh bC4KKy0KKy0gICBGb3IgZXhhbXBsZSwgaWYgd2UncmUgd2l0aGluIGEgZnVuY3Rpb24gQTo6Qjo6 ZiBhbmQgbG9va2luZyBmb3IgYQorLSAgIHN5bWJvbCB4LCB0aGlzIHdpbGwgZ2V0IGNhbGxlZCB3 aXRoIE5BTUUgPSAieCIsIFNDT1BFID0gIkE6OkIiLCBhbmQKKy0gICBTQ09QRV9MRU4gPSAwLiAg SXQgdGhlbiBjYWxscyBpdHNlbGYgd2l0aCBOQU1FIGFuZCBTQ09QRSB0aGUgc2FtZSwKKy0gICBi dXQgd2l0aCBTQ09QRV9MRU4gPSAxLiAgQW5kIHRoZW4gaXQgY2FsbHMgaXRzZWxmIHdpdGggTkFN RSBhbmQKKy0gICBTQ09QRSB0aGUgc2FtZSwgYnV0IHdpdGggU0NPUEVfTEVOID0gNC4gIFRoaXMg dGhpcmQgY2FsbCBsb29rcyBmb3IKKy0gICAiQTo6Qjo6eCI7IGlmIGl0IGRvZXNuJ3QgZmluZCBp dCwgdGhlbiB0aGUgc2Vjb25kIGNhbGwgbG9va3MgZm9yCistICAgIkE6OngiLCBhbmQgaWYgdGhh dCBjYWxsIGZhaWxzLCB0aGVuIHRoZSBmaXJzdCBjYWxsIGxvb2tzIGZvcgorLSAgICJ4Ii4gICov CistCistc3RhdGljIHN0cnVjdCBzeW1ib2wgKgorLWxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNv bnN0IGNoYXIgKm5hbWUsCistCQkJY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorLQkJCWNvbnN0 IHN0cnVjdCBibG9jayAqYmxvY2ssCistCQkJY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorLQkJ CWNvbnN0IGNoYXIgKnNjb3BlLAorLQkJCWludCBzY29wZV9sZW4pCisteworLSAgY2hhciAqbmFt ZXNwYWNlOwogKwkgIGN1cnJlbnQtPnNlYXJjaGVkID0gMTsKICsJICBzZWFyY2hlZF9jbGVhbnVw ID0gbWFrZV9jbGVhbnVwIChyZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQsIGN1cnJlbnQpOwogKwpA QCAtMTgxNiw3ICsxOTc5LDEwIEBAIGluZGV4IDA0YjY2NWIuLjIxZTAxM2EgMTAwNjQ0CiArCSAg ICBkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKICsJICAgIGNvbnRpbnVlOwog KwkgICAgfQotKworIAorLSAgaWYgKHNjb3BlW3Njb3BlX2xlbl0gIT0gJ1wwJykKKy0gICAgewor LSAgICAgIC8qIFJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgbmFtZXMgaW4gY2hpbGQgbmFtZXNwYWNl cyBmaXJzdC4gICovCiArCSAgaWYgKHN0cmNtcCAobmFtZSwgY3VycmVudC0+YWxpYXMpID09IDAp CiArCSAgICAvKiBJZiB0aGUgaW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxp YXMgbWF0Y2hlcyB0aGUKICsJICAgICAgIHNvdWdodCBuYW1lLiBQYXNzIGN1cnJlbnQtPmlubmVy IGFzIHRoZSBOQU1FIHRvIGRpcmVjdCB0aGUKQEAgLTE4MzYsNDEgKzIwMDIsNDAgQEAgaW5kZXgg MDRiNjY1Yi4uMjFlMDEzYSAxMDA2NDQKICsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwLAogKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwog KwkgICAgfQotKworIAorLSAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKy0gICAgICBpbnQgbmV3 X3Njb3BlX2xlbiA9IHNjb3BlX2xlbjsKICsJICBjdXJyZW50LT5zZWFyY2hlZCA9IDA7CiArCSAg ZGlzY2FyZF9jbGVhbnVwcyAoc2VhcmNoZWRfY2xlYW51cCk7Ci0rCi0gCSAgaWYgKHN5bSAhPSBO VUxMKQotIAkgICAgcmV0dXJuIHN5bTsKKyAKKy0gICAgICAvKiBJZiB0aGUgY3VycmVudCBzY29w ZSBpcyBmb2xsb3dlZCBieSAiOjoiLCBza2lwIHBhc3QgdGhhdC4gICovCistICAgICAgaWYgKG5l d19zY29wZV9sZW4gIT0gMCkKKy0JeworLQkgIGdkYl9hc3NlcnQgKHNjb3BlW25ld19zY29wZV9s ZW5dID09ICc6Jyk7CistCSAgbmV3X3Njb3BlX2xlbiArPSAyOworKwkgIGlmIChzeW0gIT0gTlVM TCkKKysJICAgIHJldHVybiBzeW07CiAgCX0KKy0gICAgICBuZXdfc2NvcGVfbGVuICs9IGNwX2Zp bmRfZmlyc3RfY29tcG9uZW50IChzY29wZSArIG5ld19zY29wZV9sZW4pOworLSAgICAgIHN5bSA9 IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCistCQkJ CSAgICBkb21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVuKTsKKy0gICAgICBpZiAoc3ltICE9IE5V TEwpCistCXJldHVybiBzeW07CiAgICAgIH0KICAKLS0gIC8qIFdlIGRpZG4ndCBmaW5kIGFueXRo aW5nIGJ5IGFwcGx5aW5nIGFueSBvZiB0aGUgdXNpbmcgZGlyZWN0aXZlcwotLSAgICAgdGhhdCBh cmUgc3RpbGwgYXBwbGljYWJsZTsgc28gbGV0J3Mgc2VlIGlmIHdlJ3ZlIGdvdCBhIG1hdGNoCi0t ICAgICB1c2luZyB0aGUgY3VycmVudCBuYW1lc3BhY2UuICAqLwotLSAgCi0tICBpZiAobmFtZXNw YWNlWzBdID09ICdcMCcpCi0tICAgIHsKLS0gICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxl IChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLAotLQkJCQkgZG9tYWluLCAwKTsKLS0gICAgfQot LSAgZWxzZQotLSAgICB7Ci0tICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25hbWUKLS0JPSBhbGxv Y2EgKHN0cmxlbiAobmFtZXNwYWNlKSArIDIgKyBzdHJsZW4gKG5hbWUpICsgMSk7Ci0tICAgICAg c3RyY3B5IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFtZXNwYWNlKTsKLS0gICAgICBzdHJjYXQgKGNv bmNhdGVuYXRlZF9uYW1lLCAiOjoiKTsKLS0gICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1l LCBuYW1lKTsKLS0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbmNhdGVuYXRlZF9u YW1lLCBsaW5rYWdlX25hbWUsCi0tCQkJCWJsb2NrLCBkb21haW4sIAotLQkJCQljcF9pc19hbm9u eW1vdXMgKG5hbWVzcGFjZSkpOwotLSAgICAgIHJldHVybiBzeW07Ci0tICAgIH0KKy0gIC8qIE9r YXksIHdlIGRpZG4ndCBmaW5kIGEgbWF0Y2ggaW4gb3VyIGNoaWxkcmVuLCBzbyBsb29rIGZvciB0 aGUKKy0gICAgIG5hbWUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLiAgKi8KKy0KKy0gIG5hbWVz cGFjZSA9IGFsbG9jYSAoc2NvcGVfbGVuICsgMSk7CistICBzdHJuY3B5IChuYW1lc3BhY2UsIHNj b3BlLCBzY29wZV9sZW4pOworLSAgbmFtZXNwYWNlW3Njb3BlX2xlbl0gPSAnXDAnOworLSAgcmV0 dXJuIGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChuYW1lc3BhY2UsIG5hbWUsIGxpbmth Z2VfbmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ss IGRvbWFpbik7CiArICByZXR1cm4gTlVMTDsKICB9CiAgCiAgLyogTG9vayB1cCBOQU1FIGluIEJM T0NLJ3Mgc3RhdGljIGJsb2NrIGFuZCBpbiBnbG9iYWwgYmxvY2tzLiAgSWYKLUBAIC0zNTYsMTcg KzUxNywxNSBAQCBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNw YWNlLAorQEAgLTQ1MywxNyArNTE3LDE1IEBAIGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0 IGNoYXIgKm5hbWUsCiAgCiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgogIGxvb2t1cF9zeW1ib2xf ZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE4ODksNyArMjA1NCw3IEBAIGluZGV4IDA0YjY2 NWIuLjIxZTAxM2EgMTAwNjQ0CiAgICBpZiAoYW5vbnltb3VzX25hbWVzcGFjZSkKICAgICAgewog ICAgICAgIC8qIFN5bWJvbHMgZGVmaW5lZCBpbiBhbm9ueW1vdXMgbmFtZXNwYWNlcyBoYXZlIGV4 dGVybmFsIGxpbmthZ2UKLUBAIC0zNzYsMTIgKzUzNSwxMSBAQCBsb29rdXBfc3ltYm9sX2ZpbGUg KGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNDczLDEyICs1MzUsMTEgQEAgbG9va3VwX3N5bWJvbF9m aWxlIChjb25zdCBjaGFyICpuYW1lLAogICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqZ2xvYmFs X2Jsb2NrID0gYmxvY2tfZ2xvYmFsX2Jsb2NrIChibG9jayk7CiAgICAgICAgCiAgICAgICAgaWYg KGdsb2JhbF9ibG9jayAhPSBOVUxMKQpAQCAtMTkwNCw3ICsyMDY5LDcgQEAgaW5kZXggMDRiNjY1 Yi4uMjFlMDEzYSAxMDA2NDQKICAgICAgfQogIAogICAgaWYgKHN5bSAhPSBOVUxMKQotQEAgLTQw Miw2ICs1NjAsNyBAQCBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAt NDk5LDYgKzU2MCw3IEBAIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKICAg ICAgICBzeW0gPSBsb29rdXBfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAobmFtZSk7CiAgICAg ICAgaWYgKHN5bSAhPSBOVUxMKQogIAlyZXR1cm4gc3ltOwpAQCAtMTkxMiwxOCArMjA3NywyMSBA QCBpbmRleCAwNGI2NjViLi4yMWUwMTNhIDEwMDY0NAogICAgICB9CiAgCiAgICByZXR1cm4gTlVM TDsKLUBAIC00MjksOSArNTg4LDggQEAgY3BfbG9va3VwX25lc3RlZF90eXBlIChzdHJ1Y3QgdHlw ZSAqcGFyZW50X3R5cGUsCi0gCSAgIGxvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIHdvcmtzIHdoZW4g bG9va2luZyB0aGVtIHVwLiAgKi8KK0BAIC01MjcsMTAgKzU4OSw5IEBAIGNwX2xvb2t1cF9uZXN0 ZWRfdHlwZSAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlLAogIAogIAljb25zdCBjaGFyICpwYXJl bnRfbmFtZSA9IFRZUEVfVEFHX05BTUUgKHBhcmVudF90eXBlKTsKLS0Jc3RydWN0IHN5bWJvbCAq c3ltID0gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKHBhcmVudF9uYW1lLAotKwlzdHJ1Y3Qg c3ltYm9sICpzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAocGFyZW50X25hbWUs Ci0gCQkJCQkJCSBuZXN0ZWRfbmFtZSwKLS0JCQkJCQkJIE5VTEwsCi0gCQkJCQkJCSBibG9jaywK LSAJCQkJCQkJIFZBUl9ET01BSU4pOworIAlzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBjcF9sb29rdXBf c3ltYm9sX2luX25hbWVzcGFjZSAocGFyZW50X25hbWUsCistCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRfbmFtZSwKKy0JICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCistCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywKKy0J ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUl9E T01BSU4pOworKwkJCQkJCQkgbmVzdGVkX25hbWUsCisrCQkJCQkJCSBibG9jaywKKysJCQkJCQkJ IFZBUl9ET01BSU4pOwogIAlpZiAoc3ltID09IE5VTEwgfHwgU1lNQk9MX0NMQVNTIChzeW0pICE9 IExPQ19UWVBFREVGKQotQEAgLTY3Nyw3ICs4MzUsNyBAQCBjaGVja19vbmVfcG9zc2libGVfbmFt ZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKKyAJICByZXR1cm4gTlVM TDsKKyAJZWxzZQorQEAgLTc3NCw3ICs4MzUsNyBAQCBjaGVja19vbmVfcG9zc2libGVfbmFtZXNw YWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKICAKICAgIG1lbWNweSAobmFt ZV9jb3B5LCBuYW1lLCBsZW4pOwogICAgbmFtZV9jb3B5W2xlbl0gPSAnXDAnOwpAQCAtMTkzMiw3 ICsyMTAwLDcgQEAgaW5kZXggMDRiNjY1Yi4uMjFlMDEzYSAxMDA2NDQKICAKICAgIGlmIChzeW0g PT0gTlVMTCkKICAgICAgewotQEAgLTcxOCw3ICs4NzYsNyBAQCBsb29rdXBfcG9zc2libGVfbmFt ZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC04MTUsNyArODc2LDcgQEAgbG9v a3VwX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgICAg c3RydWN0IHN5bWJvbCAqc3ltOwogIAogICAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wg KGdldF9wb3NzaWJsZV9uYW1lc3BhY2VfYmxvY2sgKG9iamZpbGUpLApAQCAtMTk2OCwxMCArMjEz NiwxMCBAQCBpbmRleCBjMzFmY2ZmLi5mYzI5NGFlIDEwMDY0NAogICAgICAgIHBzeW10YWJfdG9f c3ltdGFiIChwcyk7CiAgICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuaCBiL2dkYi9j cC1zdXBwb3J0LmgKLWluZGV4IGE2Mjk5NTUuLjJhZmRiNDggMTAwNjQ0CitpbmRleCAzM2IxYjQ0 Li41MGY4ZmU5IDEwMDY0NAogLS0tIGEvZ2RiL2NwLXN1cHBvcnQuaAogKysrIGIvZ2RiL2NwLXN1 cHBvcnQuaAotQEAgLTM4LDE1ICszOCwzMyBAQCBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50Owor QEAgLTM4LDE0ICszOCwyOSBAQCBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50OwogIAogIC8qIFRo aXMgc3RydWN0IGlzIGRlc2lnbmVkIHRvIHN0b3JlIGRhdGEgZnJvbSB1c2luZyBkaXJlY3RpdmVz LiAgSXQKICAgICBzYXlzIHRoYXQgbmFtZXMgZnJvbSBuYW1lc3BhY2UgSU1QT1JUX1NSQyBzaG91 bGQgYmUgdmlzaWJsZSB3aXRoaW4KQEAgLTIwMDIsMTMgKzIxNzAsOSBAQCBpbmRleCBhNjI5OTU1 Li4yYWZkYjQ4IDEwMDY0NAogKyAgaW50IGxpbmVfbnVtYmVyOwogKwogICAgc3RydWN0IHVzaW5n X2RpcmVjdCAqbmV4dDsKLSsKLSsgIC8qIFVzZWQgZHVyaW5nIGltcG9ydCBzZWFyY2ggdG8gdGVt cG9yYXJseSBtYXJrIHRoaXMgbm9kZSBhcyBzZWFyY2VkLiAgKi8KLSsgIGludCBzZWFyY2hlZDsK LSB9OwogIAotIAotQEAgLTU0LDYgKzcyLDcgQEAgc3RydWN0IHVzaW5nX2RpcmVjdAorICAgLyog VXNlZCBkdXJpbmcgaW1wb3J0IHNlYXJjaCB0byB0ZW1wb3JhcmlseSBtYXJrIHRoaXMgbm9kZSBh cyBzZWFyY2hlZC4gICovCitAQCAtNTcsNiArNzIsNyBAQCBzdHJ1Y3QgdXNpbmdfZGlyZWN0CiAg CiAgZXh0ZXJuIGNoYXIgKmNwX2Nhbm9uaWNhbGl6ZV9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cmlu Zyk7CiAgCkBAIC0yMDE2LDcgKzIxODAsNyBAQCBpbmRleCBhNjI5OTU1Li4yYWZkYjQ4IDEwMDY0 NAogIGV4dGVybiBjaGFyICpjcF9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGNvbnN0IGNoYXIg KnBoeXNuYW1lKTsKICAKICBleHRlcm4gY2hhciAqbWV0aG9kX25hbWVfZnJvbV9waHlzbmFtZSAo Y29uc3QgY2hhciAqcGh5c25hbWUpOwotQEAgLTc5LDEwICs5OCwxNiBAQCBleHRlcm4gaW50IGNw X3ZhbGlkYXRlX29wZXJhdG9yIChjb25zdCBjaGFyICppbnB1dCk7CitAQCAtODIsMTAgKzk4LDE2 IEBAIGV4dGVybiBpbnQgY3BfdmFsaWRhdGVfb3BlcmF0b3IgKGNvbnN0IGNoYXIgKmlucHV0KTsK ICBleHRlcm4gaW50IGNwX2lzX2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKTsKICAK ICBleHRlcm4gdm9pZCBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChjb25zdCBjaGFyICpkZXN0LApA QCAtMjAzNCw3ICsyMTk4LDcgQEAgaW5kZXggYTYyOTk1NS4uMmFmZGI0OCAxMDA2NDQKICAJCQkJ CSAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV4dCk7CiAgCiAgZXh0ZXJuIHZvaWQgY3BfaW5pdGlh bGl6ZV9uYW1lc3BhY2UgKHZvaWQpOwotQEAgLTk5LDE1ICsxMjQsMjAgQEAgZXh0ZXJuIHZvaWQg Y3Bfc2V0X2Jsb2NrX3Njb3BlIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsCitAQCAtMTAy LDE2ICsxMjQsMjAgQEAgZXh0ZXJuIHZvaWQgY3Bfc2V0X2Jsb2NrX3Njb3BlIChjb25zdCBzdHJ1 Y3Qgc3ltYm9sICpzeW1ib2wsCiAgZXh0ZXJuIHZvaWQgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25h bWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCk7CiAgCiAgZXh0ZXJuIHN0cnVj dCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCkBA IC0yMDUzLDcgKzIyMTcsOCBAQCBpbmRleCBhNjI5OTU1Li4yYWZkYjQ4IDEwMDY0NAogLQkJCQkJ CSAgY29uc3QgY2hhciAqbmFtZSwKIC0JCQkJCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwK IC0JCQkJCQkgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0tCQkJCQkJICBjb25zdCBkb21h aW5fZW51bSBkb21haW4pOworLQkJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorLQkJ CQkJCSAgY29uc3QgaW50IHNlYXJjaF9wYXJlbnRzKTsKICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKQEAgLTIwNzMsMTAgKzIyMzgsMTAgQEAg aW5kZXggNmVmNjc2Ny4uNWY0ODI1YyAxMDA2NDQKICAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRz LCAvKiBzeW1fb2Zmc2V0czogcGFyc2UgdXNlcidzIG9mZnNldHMgdG8KICAJCQkgICAgICBpbnRl cm5hbCBmb3JtICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2Mv Z2RiLnRleGluZm8KLWluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CitpbmRleCBmYzExNjA5 Li4yZmJkYjhjIDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbwotQEAgLTExNTksNiArMTE1OSwxNiBAQCBmb3IgcmVtb3RlIGRlYnVnZ2lu Zy4KK0BAIC0xMTU3LDYgKzExNTcsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCiAgUnVuIHVz aW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91 dHB1dC4KICBAYyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAg SW52ZXN0aWdhdGUuCiAgCkBAIC0yMDkzLDcgKzIyNTgsNyBAQCBpbmRleCBkNzE2ZDBkLi4zNWRj MTg1IDEwMDY0NAogIEBjIHJlc29sdmUgdGhlIHNpdHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5 CiAgQGl0ZW0gLXR1aQogIEBjaW5kZXggQGNvZGV7LS10dWl9Ci1AQCAtMTkxNDUsNyArMTkxNTUs NyBAQCBjb21tYW5kOgorQEAgLTE5MjA2LDcgKzE5MjE2LDcgQEAgdXNpbmcgdGhlIEBjb2Rle3Nj cmlwdC1leHRlbnNpb259IHNldHRpbmcuCiAgQHRhYmxlIEBjb2RlCiAgQGtpbmRleCBzb3VyY2UK ICBAY2luZGV4IGV4ZWN1dGUgY29tbWFuZHMgZnJvbSBhIGZpbGUKQEAgLTIxMDIsNyArMjI2Nyw3 IEBAIGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgRXhlY3V0ZSB0aGUgY29tbWFuZCBm aWxlIEB2YXJ7ZmlsZW5hbWV9LgogIEBlbmQgdGFibGUKICAKLUBAIC0xOTQyOCw4ICsxOTQzOCw2 IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgorQEAgLTE5NDg0LDggKzE5 NDk0LDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CiAgCiAgQHNtYWxs ZXhhbXBsZQogIChAdmFsdWV7R0RCUH0pIHB5dGhvbgpAQCAtMjExMSw3ICsyMjc2LDcgQEAgaW5k ZXggZDcxNmQwZC4uMzVkYzE4NSAxMDA2NDQKICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0x OTQ0Miw2ICsxOTQ1MCwxNCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250 cm9sbGVkIHVzaW5nIEBjb2Rle21haW50IHNldAorQEAgLTE5NDk4LDYgKzE5NTA2LDE0IEBAIGlu IGEgUHl0aG9uIHNjcmlwdC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcgQGNvZGV7bWFp bnQgc2V0CiAgcHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7b259LCB0aGUgZGVmYXVsdCwg dGhlbiBQeXRob24gc3RhY2sKICBwcmludGluZyBpcyBlbmFibGVkOyBpZiBAY29kZXtvZmZ9LCB0 aGVuIFB5dGhvbiBzdGFjayBwcmludGluZyBpcwogIGRpc2FibGVkLgpAQCAtMjEyNSw4ICsyMjkw LDggQEAgaW5kZXggZDcxNmQwZC4uMzVkYzE4NSAxMDA2NDQKICthdXRvLWxvYWRpbmcgaXMgZGlz YWJsZWQuCiAgQGVuZCB0YWJsZQogIAotIEBub2RlIFB5dGhvbiBBUEkKLUBAIC0xOTQ0OSw2ICsx OTQ2NSwxNCBAQCBkaXNhYmxlZC4KKyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQ eXRob24gc2NyaXB0IGZyb20gdGhlIEB2YWx1ZXtHREJOfQorQEAgLTE5NTE5LDYgKzE5NTM1LDE0 IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCiAgQGNpbmRleCBweXRob24gYXBpCiAg QGNpbmRleCBwcm9ncmFtbWluZyBpbiBweXRob24KICAKQEAgLTIxNDEsNyArMjMwNiw3IEBAIGlu ZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgQGNpbmRleCBweXRob24gc3Rkb3V0CiAgQGNp bmRleCBweXRob24gcGFnaW5hdGlvbgogIEF0IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlk ZXMgUHl0aG9uJ3MgQGNvZGV7c3lzLnN0ZG91dH0gYW5kCi1AQCAtMTk0NjEsMTMgKzE5NDg1LDE3 IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlv biBpcyB0aHJvd24uCitAQCAtMTk1MzEsMTMgKzE5NTU1LDE3IEBAIHNpdHVhdGlvbiwgYSBQeXRo b24gQGNvZGV7S2V5Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKiBCYXNp YyBQeXRob246OiAgICAgICAgICAgICAgICBCYXNpYyBQeXRob24gRnVuY3Rpb25zLgogICogRXhj ZXB0aW9uIEhhbmRsaW5nOjoKICAqIEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1dG9t YXRpY2FsbHkgbG9hZGluZyBQeXRob24gY29kZS4KQEAgLTIxNjAsNyArMjMyNSw3IEBAIGluZGV4 IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgKiBGcmFtZXMgSW4gUHl0aG9uOjogICAgICAgICAg ICBBY2Vzc2luZyBpbmZlcmlvciBzdGFjayBmcmFtZXMgZnJvbSBQeXRob24uCiAgKiBMYXp5IFN0 cmluZ3MgSW4gUHl0aG9uOjogICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgbGF6eSBzdHJp bmdzLgogIEBlbmQgbWVudQotQEAgLTE5NDk1LDYgKzE5NTIzLDEyIEBAIGNvbW1hbmQgYXMgaGF2 aW5nIG9yaWdpbmF0ZWQgZnJvbSB0aGUgdXNlciBpbnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5Lgor QEAgLTE5NTY1LDYgKzE5NTkzLDEyIEBAIGNvbW1hbmQgYXMgaGF2aW5nIG9yaWdpbmF0ZWQgZnJv bSB0aGUgdXNlciBpbnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5LgogIEl0IG11c3QgYmUgYSBib29s ZWFuIHZhbHVlLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gQGNvZGV7RmFsc2V9LgogIEBl bmQgZGVmdW4KICAKQEAgLTIxNzMsNyArMjMzOCw3IEBAIGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUg MTAwNjQ0CiAgQGZpbmRleCBnZGIucGFyYW1ldGVyCiAgQGRlZnVuIHBhcmFtZXRlciBwYXJhbWV0 ZXIKICBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgQHZhbHVle0dEQk59IHBhcmFtZXRlci4gIEB2YXJ7 cGFyYW1ldGVyfSBpcyBhCi1AQCAtMTk1MTEsNiArMTk1NDUsNyBAQCBhIFB5dGhvbiB2YWx1ZSBv ZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgorQEAgLTE5NTgxLDYgKzE5NjE1 LDcgQEAgYSBQeXRob24gdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUsIGFuZCByZXR1cm5l ZC4KICBAZGVmdW4gaGlzdG9yeSBudW1iZXIKICBSZXR1cm4gYSB2YWx1ZSBmcm9tIEB2YWx1ZXtH REJOfSdzIHZhbHVlIGhpc3RvcnkgKEBweHJlZntWYWx1ZQogIEhpc3Rvcnl9KS4gIEB2YXJ7bnVt YmVyfSBpbmRpY2F0ZXMgd2hpY2ggaGlzdG9yeSBlbGVtZW50IHRvIHJldHVybi4KQEAgLTIxODEs NyArMjM0Niw3IEBAIGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgSWYgQHZhcntudW1i ZXJ9IGlzIG5lZ2F0aXZlLCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHRha2UgaXRzIGFic29sdXRl IHZhbHVlCiAgYW5kIGNvdW50IGJhY2t3YXJkIGZyb20gdGhlIGxhc3QgZWxlbWVudCAoaS5lLiwg dGhlIG1vc3QgcmVjZW50IGVsZW1lbnQpIHRvCiAgZmluZCB0aGUgdmFsdWUgdG8gcmV0dXJuLiAg SWYgQHZhcntudW1iZXJ9IGlzIHplcm8sIHRoZW4gQHZhbHVle0dEQk59IHdpbGwKLUBAIC0xOTUz NSw2ICsxOTU3MCwyMSBAQCBjb21wdXRlIHZhbHVlcywgZm9yIGV4YW1wbGUsIGl0IGlzIHRoZSBv bmx5IHdheSB0byBnZXQgdGhlIHZhbHVlIG9mIGEKK0BAIC0xOTYwNSw2ICsxOTY0MCwyMSBAQCBj b21wdXRlIHZhbHVlcywgZm9yIGV4YW1wbGUsIGl0IGlzIHRoZSBvbmx5IHdheSB0byBnZXQgdGhl IHZhbHVlIG9mIGEKICBjb252ZW5pZW5jZSB2YXJpYWJsZSAoQHB4cmVme0NvbnZlbmllbmNlIFZh cnN9KSBhcyBhIEBjb2Rle2dkYi5WYWx1ZX0uCiAgQGVuZCBkZWZ1bgogIApAQCAtMjIwMyw3ICsy MzY4LDcgQEAgaW5kZXggZDcxNmQwZC4uMzVkYzE4NSAxMDA2NDQKICBAZmluZGV4IGdkYi53cml0 ZQogIEBkZWZ1biB3cml0ZSBzdHJpbmcKICBQcmludCBhIHN0cmluZyB0byBAdmFsdWV7R0RCTn0n cyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4KLUBAIC0xOTU0OSw2ICsxOTU5OSwx MSBAQCBGbHVzaCBAdmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVh bS4gIEZsdXNoaW5nCitAQCAtMTk2MTksNiArMTk2NjksMTEgQEAgRmx1c2ggQHZhbHVle0dEQk59 J3MgcGFnaW5hdGVkIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0uICBGbHVzaGluZwogIGZ1bmN0aW9u LgogIEBlbmQgZGVmdW4KICAKQEAgLTIyMTUsNyArMjM4MCw3IEBAIGluZGV4IGQ3MTZkMGQuLjM1 ZGMxODUgMTAwNjQ0CiAgQG5vZGUgRXhjZXB0aW9uIEhhbmRsaW5nCiAgQHN1YnN1YnNlY3Rpb24g RXhjZXB0aW9uIEhhbmRsaW5nCiAgQGNpbmRleCBweXRob24gZXhjZXB0aW9ucwotQEAgLTE5Nzg3 LDYgKzE5ODQyLDkgQEAgbW9kdWxlOgorQEAgLTE5ODU3LDYgKzE5OTEyLDkgQEAgbW9kdWxlOgog IFRoaXMgZnVuY3Rpb24gbG9va3MgdXAgYSB0eXBlIGJ5IG5hbWUuICBAdmFye25hbWV9IGlzIHRo ZSBuYW1lIG9mIHRoZQogIHR5cGUgdG8gbG9vayB1cC4gIEl0IG11c3QgYmUgYSBzdHJpbmcuCiAg CkBAIC0yMjI1LDcgKzIzOTAsNyBAQCBpbmRleCBkNzE2ZDBkLi4zNWRjMTg1IDEwMDY0NAogIE9y ZGluYXJpbHksIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgQGNvZGV7 Z2RiLlR5cGV9LgogIElmIHRoZSBuYW1lZCB0eXBlIGNhbm5vdCBiZSBmb3VuZCwgaXQgd2lsbCB0 aHJvdyBhbiBleGNlcHRpb24uCiAgQGVuZCBkZWZ1bgotQEAgLTE5OTA5LDcgKzE5OTY3LDcgQEAg SWYgdGhlIHR5cGUgZG9lcyBub3QgaGF2ZSBhIHRhcmdldCwgdGhpcyBtZXRob2Qgd2lsbCB0aHJv dyBhbgorQEAgLTE5OTc5LDcgKzIwMDM3LDcgQEAgSWYgdGhlIHR5cGUgZG9lcyBub3QgaGF2ZSBh IHRhcmdldCwgdGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBhbgogIGV4Y2VwdGlvbi4KICBAZW5kIGRl Zm1ldGhvZAogIApAQCAtMjIzNCw3ICsyMzk5LDcgQEAgaW5kZXggZDcxNmQwZC4uMzVkYzE4NSAx MDA2NDQKICBJZiB0aGlzIEBjb2Rle2dkYi5UeXBlfSBpcyBhbiBpbnN0YW50aWF0aW9uIG9mIGEg dGVtcGxhdGUsIHRoaXMgd2lsbAogIHJldHVybiBhIG5ldyBAY29kZXtnZGIuVHlwZX0gd2hpY2gg cmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUKICBAdmFye259dGggdGVtcGxhdGUgYXJndW1lbnQu Ci1AQCAtMTk5MTcsNyArMTk5NzUsOCBAQCByZXR1cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdo aWNoIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgdGhlCitAQCAtMTk5ODcsNyArMjAwNDUsOCBAQCBy ZXR1cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2VudHMgdGhlIHR5cGUgb2Yg dGhlCiAgSWYgdGhpcyBAY29kZXtnZGIuVHlwZX0gaXMgbm90IGEgdGVtcGxhdGUgdHlwZSwgdGhp cyB3aWxsIHRocm93IGFuCiAgZXhjZXB0aW9uLiAgT3JkaW5hcmlseSwgb25seSBDQHR7Kyt9IGNv ZGUgd2lsbCBoYXZlIHRlbXBsYXRlIHR5cGVzLgogIApAQCAtMjI0NCw3ICsyNDA5LDcgQEAgaW5k ZXggZDcxNmQwZC4uMzVkYzE4NSAxMDA2NDQKICBAZW5kIGRlZm1ldGhvZAogIEBlbmQgdGFibGUK ICAKLUBAIC0yMDI3MSw2ICsyMDMzMCwxMjEgQEAgaW1wb3J0IGdkYi5saWJzdGRjeHgudjYKK0BA IC0yMDM0MSw2ICsyMDQwMCwxMjEgQEAgaW1wb3J0IGdkYi5saWJzdGRjeHgudjYKICBnZGIubGli c3RkY3h4LnY2LnJlZ2lzdGVyX3ByaW50ZXJzIChnZGIuY3VycmVudF9vYmpmaWxlICgpKQogIEBl bmQgc21hbGxleGFtcGxlCiAgCkBAIC0yMzY2LDcgKzI1MzEsNyBAQCBpbmRleCBkNzE2ZDBkLi4z NWRjMTg1IDEwMDY0NAogIEBub2RlIENvbW1hbmRzIEluIFB5dGhvbgogIEBzdWJzdWJzZWN0aW9u IENvbW1hbmRzIEluIFB5dGhvbgogIAotQEAgLTIwNTIzLDYgKzIwNjk3LDEzNSBAQCByZWdpc3Ry YXRpb24gb2YgdGhlIGNvbW1hbmQgd2l0aCBAdmFsdWV7R0RCTn0uICBEZXBlbmRpbmcgb24gaG93 IHRoZQorQEAgLTIwNTkzLDYgKzIwNzY3LDEzNSBAQCByZWdpc3RyYXRpb24gb2YgdGhlIGNvbW1h bmQgd2l0aCBAdmFsdWV7R0RCTn0uICBEZXBlbmRpbmcgb24gaG93IHRoZQogIFB5dGhvbiBjb2Rl IGlzIHJlYWQgaW50byBAdmFsdWV7R0RCTn0sIHlvdSBtYXkgbmVlZCB0byBpbXBvcnQgdGhlCiAg QGNvZGV7Z2RifSBtb2R1bGUgZXhwbGljaXRseS4KICAKQEAgLTI1MDIsNyArMjY2Nyw3IEBAIGlu ZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgQG5vZGUgRnVuY3Rpb25zIEluIFB5dGhvbgog IEBzdWJzdWJzZWN0aW9uIFdyaXRpbmcgbmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9ucwogIAotQEAg LTIwNjI3LDYgKzIwOTMwLDgyIEBAIHdoaWNoIGlzIHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZS4g IEB4cmVme1ByZXR0eSBQcmludGluZ30sIGZvciBtb3JlCitAQCAtMjA2OTcsNiArMjEwMDAsODIg QEAgd2hpY2ggaXMgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50 aW5nfSwgZm9yIG1vcmUKICBpbmZvcm1hdGlvbi4KICBAZW5kIGRlZml2YXIKICAKQEAgLTI1ODUs NyArMjc1MCw3IEBAIGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgQG5vZGUgRnJhbWVz IEluIFB5dGhvbgogIEBzdWJzdWJzZWN0aW9uIEFjZXNzaW5nIGluZmVyaW9yIHN0YWNrIGZyYW1l cyBmcm9tIFB5dGhvbi4KICAKLUBAIC0yMDY5MSw2ICsyMTA3MCwxNCBAQCBmdW5jdGlvbiB0byBh IHN0cmluZy4KK0BAIC0yMDc2MSw2ICsyMTE0MCwxNCBAQCBmdW5jdGlvbiB0byBhIHN0cmluZy4K ICBSZXR1cm5zIHRoZSBmcmFtZSdzIHJlc3VtZSBhZGRyZXNzLgogIEBlbmQgZGVmbWV0aG9kCiAg CkBAIC0yNjAwLDcgKzI3NjUsNyBAQCBpbmRleCBkNzE2ZDBkLi4zNWRjMTg1IDEwMDY0NAogIEBk ZWZtZXRob2QgRnJhbWUgb2xkZXIKICBSZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMg ZnJhbWUuCiAgQGVuZCBkZWZtZXRob2QKLUBAIC0yMDY5OSwxMCArMjEwODYsMTggQEAgUmV0dXJu IHRoZSBmcmFtZSB0aGF0IGNhbGxlZCB0aGlzIGZyYW1lLgorQEAgLTIwNzY5LDEwICsyMTE1Niwx OCBAQCBSZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMgZnJhbWUuCiAgUmV0dXJuIHRo ZSBmcmFtZSBjYWxsZWQgYnkgdGhpcyBmcmFtZS4KICBAZW5kIGRlZm1ldGhvZAogIApAQCAtMzE0 NSw3ICszMzEwLDcgQEAgaW5kZXggZmEwYmQxMS4uZmRlYTJiNCAxMDA2NDQKICAKICAjZW5kaWYg LyogZHdhcmYybG9jLmggKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3 YXJmMnJlYWQuYwotaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKK2luZGV4IDJmNjcxY2Eu LmJmNTJkNGYgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYy cmVhZC5jCiBAQCAtNDgsNiArNDgsMTEgQEAKQEAgLTM3NjMsNyArMzkyOCw3IEBAIGluZGV4IDE1 ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgICAgIHsKICAgICAgY2FzZSBEV19UQUdfbmFtZXNwYWNl OgogICAgICBjYXNlIERXX1RBR190eXBlZGVmOgotQEAgLTI2MjMsNyArMjg2OCwyMyBAQCBwZGlf bmVlZHNfbmFtZXNwYWNlIChlbnVtIGR3YXJmX3RhZyB0YWcpCitAQCAtMjYyMyw3ICsyODY4LDMw IEBAIHBkaV9uZWVkc19uYW1lc3BhY2UgKGVudW0gZHdhcmZfdGFnIHRhZykKICAgICAgY2FzZSBE V19UQUdfdW5pb25fdHlwZToKICAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKICAg ICAgY2FzZSBEV19UQUdfZW51bWVyYXRvcjoKQEAgLTM3ODAsNiArMzk0NSwxMyBAQCBpbmRleCAx NWVmM2U5Li45OWY3MjliIDEwMDY0NAogKwlhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf ZXh0ZXJuYWwsIGN1KTsKICsJaWYgKGF0dHIgPT0gTlVMTCAmJiBkaWUtPnBhcmVudC0+dGFnICE9 IERXX1RBR19uYW1lc3BhY2UpCiArCSAgcmV0dXJuIDA7CisrCS8qIEEgdmFyaWFibGUgaW4gYSBs ZXhpY2FsIGJsb2NrIG9mIHNvbWUga2luZCBkb2VzIG5vdCBuZWVkIGEKKysJICAgbmFtZXNwYWNl LCBldmVuIHRob3VnaCBpbiBDKysgc3VjaCB2YXJpYWJsZXMgbWF5IGJlCisrCSAgIGV4dGVybmFs IGFuZCBoYXZlIGEgbWFuZ2xlZCBuYW1lLiAgKi8KKysJaWYgKGRpZS0+cGFyZW50LT50YWcgPT0g IERXX1RBR19sZXhpY2FsX2Jsb2NrCisrCSAgICB8fCBkaWUtPnBhcmVudC0+dGFnID09ICBEV19U QUdfdHJ5X2Jsb2NrCisrCSAgICB8fCBkaWUtPnBhcmVudC0+dGFnID09ICBEV19UQUdfY2F0Y2hf YmxvY2spCisrCSAgcmV0dXJuIDA7CiArCXJldHVybiAxOwogKyAgICAgIH0KICsgICAgICBicmVh azsKQEAgLTM3ODcsNyArMzk1OSw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAg ICAgIGRlZmF1bHQ6CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KLUBAIC0yNjU2LDEyICsyOTE3 LDEyIEBAIHN0YXRpYyB2b2lkCitAQCAtMjY1NiwxMiArMjkyNCwxMiBAQCBzdGF0aWMgdm9pZAog IGFkZF9wYXJ0aWFsX21vZHVsZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgQ09SRV9B RERSICpsb3dwYywKICAJCSAgICBDT1JFX0FERFIgKmhpZ2hwYywgaW50IG5lZWRfcGMsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogIHsKQEAgLTM4MDQsNyArMzk3Niw3IEBAIGluZGV4IDE1ZWYzZTku Ljk5ZjcyOWIgMTAwNjQ0CiAgfQogIAogIC8qIFJlYWQgYSBwYXJ0aWFsIGRpZSBjb3JyZXNwb25k aW5nIHRvIGEgc3VicHJvZ3JhbSBhbmQgY3JlYXRlIGEgcGFydGlhbAotQEAgLTI3NTIsMjcgKzMw MTMsNiBAQCBndWVzc19zdHJ1Y3R1cmVfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnN0 cnVjdF9wZGksCitAQCAtMjc1MiwyNyArMzAyMCw2IEBAIGd1ZXNzX3N0cnVjdHVyZV9uYW1lIChz dHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqc3RydWN0X3BkaSwKICAKICAgICAgICBpZiAocmVhbF9w ZGktPmRpZV9wYXJlbnQgIT0gTlVMTCkKICAJcmV0dXJuOwpAQCAtMzgzMiw3ICs0MDA0LDcgQEAg aW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgICAgfQogIH0KICAKLUBAIC0zMzI1LDYg KzM1NjUsMTQgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKK0BAIC0zMzI1LDYgKzM1NzIsMTQgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgY2FzZSBEV19UQUdfaW1w b3J0ZWRfZGVjbGFyYXRpb246CiAgICAgIGNhc2UgRFdfVEFHX2ltcG9ydGVkX21vZHVsZToKICAg ICAgICBwcm9jZXNzaW5nX2hhc19uYW1lc3BhY2VfaW5mbyA9IDE7CkBAIC0zODQ3LDcgKzQwMTks NyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAgICAgIGlmIChkaWUtPmNoaWxk ICE9IE5VTEwgJiYgKGRpZS0+dGFnID09IERXX1RBR19pbXBvcnRlZF9kZWNsYXJhdGlvbgogIAkJ CQkgfHwgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2ZvcnRyYW4pKQogIAljb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsIF8oIlRhZyAnJXMnIGhhcyB1bmV4cGVjdGVkIGNoaWxkcmVuIiks Ci1AQCAtMzM0MCw0MSArMzU4OCw3MSBAQCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTMzNDAsNDEgKzM1OTUsNzEgQEAgcHJvY2Vz c19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAvKiBS ZXR1cm4gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIERJRSwgYmFzZWQgb24gaXRzIERXX0FU X25hbWUuCiAgICAgSWYgc2NvcGUgcXVhbGlmaWVycyBhcmUgYXBwcm9wcmlhdGUgdGhleSB3aWxs IGJlIGFkZGVkLiAgVGhlIHJlc3VsdAogICAgIHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBvYmpm aWxlX29ic3RhY2ssIG9yIE5VTEwgaWYgdGhlIERJRSBkb2VzCkBAIC0zOTQwLDcgKzQxMTIsNyBA QCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIC8qIFJlYWQgdGhlIGltcG9ydCBzdGF0 ZW1lbnQgc3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiBkaWUgYW5kIHJlY29yZCBpdC4gICovCiAgCiAg c3RhdGljIHZvaWQKLUBAIC0zMzg1LDkgKzM2NjMsMTUgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50 IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzM4NSw5 ICszNjcwLDE1IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGR3YXJmMl9jdSAqaW1wb3J0ZWRfY3U7 CiAgICBjb25zdCBjaGFyICppbXBvcnRlZF9uYW1lOwogICAgY29uc3QgY2hhciAqaW1wb3J0ZWRf bmFtZV9wcmVmaXg7CkBAIC0zOTU4LDcgKzQxMzAsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3Mjli IDEwMDY0NAogICAgaW1wb3J0X2F0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9pbXBvcnQs IGN1KTsKICAgIGlmIChpbXBvcnRfYXR0ciA9PSBOVUxMKQogICAgICB7Ci1AQCAtMzQzNiwxNyAr MzcyMCwyNyBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zNDM2LDE3ICszNzI3LDI3IEBAIHJlYWRfaW1wb3J0 X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog ICAgICAgIHJldHVybjsKICAgICAgfQogIApAQCAtMzk5Myw3ICs0MTY1LDcgQEAgaW5kZXggMTVl ZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgICAgICBjYW5vbmljYWxfbmFtZSA9IGFsbG9jYSAoc3Ry bGVuIChpbXBvcnRlZF9uYW1lX3ByZWZpeCkgKyAyICsgc3RybGVuIChpbXBvcnRlZF9uYW1lKSAr IDEpOwogICAgICAgIHN0cmNweSAoY2Fub25pY2FsX25hbWUsIGltcG9ydGVkX25hbWVfcHJlZml4 KTsKICAgICAgICBzdHJjYXQgKGNhbm9uaWNhbF9uYW1lLCAiOjoiKTsKLUBAIC0zNDU3LDggKzM3 NTEsMTQgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzQ1Nyw4ICszNzU4LDE0IEBAIHJlYWRfaW1wb3J0X3N0 YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAg ICAgIGNhbm9uaWNhbF9uYW1lID0gYWxsb2NhIChzdHJsZW4gKGltcG9ydGVkX25hbWUpICsgMSk7 CiAgICAgICAgc3RyY3B5IChjYW5vbmljYWxfbmFtZSwgaW1wb3J0ZWRfbmFtZSk7CiAgICAgIH0K QEAgLTQwMTAsNyArNDE4Miw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgfQog IAogIHN0YXRpYyB2b2lkCi1AQCAtMzcyNyw2ICs0MDI3LDE0IEBAIGluaGVyaXRfYWJzdHJhY3Rf ZGllcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM3 MjcsNiArNDAzNCwxNCBAQCBpbmhlcml0X2Fic3RyYWN0X2RpZXMgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CiAg CiAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luLCBjdSk7 CkBAIC00MDI1LDcgKzQxOTcsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAg aWYgKCFhdHRyKQogICAgICByZXR1cm47CiAgCi1AQCAtMzgyNSw2ICs0MTMzLDcgQEAgcmVhZF9m dW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitA QCAtMzgyNSw2ICs0MTQwLDcgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBjaGFyICpuYW1lOwogICAgQ09SRV9BRERSIGJh c2VhZGRyOwogICAgc3RydWN0IGJsb2NrICpibG9jazsKQEAgLTQwMzMsNyArNDIwNSw3IEBAIGlu ZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgICBpbnQgaW5saW5lZF9mdW5jID0gKGRpZS0+ dGFnID09IERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpOwogIAogICAgaWYgKGlubGluZWRfZnVu YykKLUBAIC0zODQzLDEzICs0MTUyLDIzIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM4NDMsMTMgKzQxNTksMjMgQEAg cmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgCiAgICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMs IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKICAKQEAgLTQwNjAsNyArNDIzMiw3IEBAIGluZGV4 IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgICBsb3dwYyArPSBiYXNlYWRkcjsKICAgIGhpZ2hw YyArPSBiYXNlYWRkcjsKICAKLUBAIC0zODc2LDE0ICs0MTk1LDE5IEBAIHJlYWRfZnVuY19zY29w ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM4NzYs MTQgKzQyMDIsMTkgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBjdS0+bGlzdF9pbl9zY29wZSA9ICZsb2NhbF9zeW1i b2xzOwogIApAQCAtNDA4Nyw3ICs0MjU5LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2 NDQKICAgICAgfQogIAogICAgaW5oZXJpdF9hYnN0cmFjdF9kaWVzIChkaWUsIGN1KTsKLUBAIC0z ODk5LDYgKzQyMjMsMTMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzg5OSw2ICs0MjMwLDEzIEBAIHJlYWRfZnVuY19z Y29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJCWRl dGVybWluZV9wcmVmaXggKGRpZSwgY3UpLAogIAkJCXByb2Nlc3NpbmdfaGFzX25hbWVzcGFjZV9p bmZvKTsKICAKQEAgLTQxMDEsMTYgKzQyNzMsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEw MDY0NAogICAgLyogSWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywgcmVjb3JkIHRoZW0uICAqLwog ICAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxvY2ssIGJhc2VhZGRyLCBjdSk7 CiAgICAKLUBAIC0zOTUyLDcgKzQyODMsNyBAQCByZWFkX2xleGljYWxfYmxvY2tfc2NvcGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgfQotICAgbmV3 ID0gcG9wX2NvbnRleHQgKCk7Ci0gCi0tICBpZiAobG9jYWxfc3ltYm9scyAhPSBOVUxMKQotKyAg aWYgKGxvY2FsX3N5bWJvbHMgIT0gTlVMTCB8fCB1c2luZ19kaXJlY3RpdmVzICE9IE5VTEwpCi0g ICAgIHsKLSAgICAgICBzdHJ1Y3QgYmxvY2sgKmJsb2NrCi0gICAgICAgICA9IGZpbmlzaF9ibG9j ayAoMCwgJmxvY2FsX3N5bWJvbHMsIG5ldy0+b2xkX2Jsb2NrcywgbmV3LT5zdGFydF9hZGRyLAot QEAgLTQ1MTcsNyArNDg0OCw3IEBAIGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZv ICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTQ1MTcsNyArNDg1NSw3IEBAIGR3YXJm Ml9hZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGll LAogIAlyZXR1cm47CiAgCiAgICAgICAgLyogR2V0IHBoeXNpY2FsIG5hbWUuICAqLwpAQCAtNDEx OSw3ICs0MjgyLDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAKICAgICAgICAv KiBUaGUgbmFtZSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBhbG9uZyB3aXRoIHRoaXMgb2JqZmlsZSwg c28gd2UgZG9uJ3QKICAJIG5lZWQgdG8gZHVwbGljYXRlIGl0IGZvciB0aGUgdHlwZS4gICovCi1A QCAtNDY3OSw3ICs1MDEwLDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9p bmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTQ2NzksNyArNTAxNyw3IEBAIGR3 YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKICAgICAgcmV0dXJuOwogIAogICAgLyogR2V0IHRoZSBtYW5nbGVkIG5hbWUuICAq LwpAQCAtNDEyOCw3ICs0MjkxLDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAK ICAgIC8qIExvb2sgdXAgbWVtYmVyIGZ1bmN0aW9uIG5hbWUgaW4gZmllbGRsaXN0LiAgKi8KICAg IGZvciAoaSA9IDA7IGkgPCBmaXAtPm5mbmZpZWxkczsgaSsrKQotQEAgLTUwMTAsMTQgKzUzNDEs MTggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorQEAgLTQ5ODYsMTQgKzUzMjQsMTggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIGlm IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKICAJICB8fCBjdS0+bGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfamF2YSkKICAJewpAQCAtNDE1MCw3ICs0MzEzLDcgQEAgaW5kZXggMTVlZjNlOS4u OTlmNzI5YiAxMDA2NDQKICAJfQogICAgICB9CiAgCi1AQCAtNTI1OCw1MSArNTU5Myw2IEBAIHJl YWRfZW51bWVyYXRpb25fdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorQEAgLTUyMzYsNTEgKzU1NzgsNiBAQCByZWFkX2VudW1lcmF0aW9uX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHJldHVybiBzZXRf ZGllX3R5cGUgKGRpZSwgdHlwZSwgY3UpOwogIH0KICAKQEAgLTQyMDIsNyArNDM2NSw3IEBAIGlu ZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgZGll IHdoaWNoIGJlZ2lucyBhbiBlbnVtZXJhdGlvbiwgcHJvY2VzcyBhbGwKICAgICB0aGUgZGllcyB0 aGF0IGRlZmluZSB0aGUgbWVtYmVycyBvZiB0aGUgZW51bWVyYXRpb24sIGFuZCBjcmVhdGUgdGhl CiAgICAgc3ltYm9sIGZvciB0aGUgZW51bWVyYXRpb24gdHlwZS4KLUBAIC01MzgwLDYgKzU2NzAs MjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTUzNTgsNiArNTY1NSwyOSBAQCBwcm9jZXNzX2VudW1l cmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CiAgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwogIH0KICAKQEAgLTQyMzIsNyAr NDM5NSw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgLyogRXh0cmFjdCBhbGwg aW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCiAg ICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUg ZGltZW5zaW9uYWwKICAgICBhcnJheXMuICAqLwotQEAgLTUzOTMsNyArNTcwNiw3IEBAIHJlYWRf YXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor QEAgLTUzNzEsNyArNTY5MSw3IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwg KnJhbmdlX3R5cGUsICppbmRleF90eXBlOwogICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9 IE5VTEw7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNDI0MSw3ICs0NDA0LDcgQEAg aW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3Rv OwogICAgY2hhciAqbmFtZTsKICAKLUBAIC01NDQwLDE2ICs1NzUzLDExIEBAIHJlYWRfYXJyYXlf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU0 MTgsMTYgKzU3MzgsMTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICB0eXBlID0gZWxlbWVudF90eXBlOwogIAogICAgaWYg KHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCkBAIC00MjYz LDcgKzQ0MjYsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIAogICAgLyogVW5k ZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIg b24KICAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVy IGF0dHJpYnV0ZSB0byB0aGUKLUBAIC01NjM4LDcgKzU5NDYsNyBAQCByZWFkX25hbWVzcGFjZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU2MTYsNyAr NTkzMSw3IEBAIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCiAgICAgICAgaWYgKGlzX2Fub255bW91cykKICAJewogIAkgIGNvbnN0IGNo YXIgKnByZXZpb3VzX3ByZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOwpAQCAtNDI3 Miw3ICs0NDM1LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAJfQogICAgICB9 CiAgCi1AQCAtNTY1NCwyMCArNTk2MiwxNTUgQEAgcmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NjMyLDIwICs1OTQ3LDE1NSBA QCByZWFkX25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgICB9CiAgfQogIApAQCAtNDI4NSwxMyArNDQ0OCwxNCBAQCBpbmRleCAxNWVmM2U5 Li45OWY3MjliIDEwMDY0NAogIHsKIC0gIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllID0gZGll LT5jaGlsZDsKICsgIHN0cnVjdCB0eXBlICp0eXBlOwotKworIAorLSAgLyogRklYTUU6IFN1cHBv cnQgdGhlIHNlcGFyYXRlIEZvcnRyYW4gbW9kdWxlIG5hbWVzcGFjZXMuICAqLwogKyAgdHlwZSA9 IHJlYWRfbW9kdWxlX3R5cGUgKGRpZSwgY3UpOwogKwogKyAgaWYgKHR5cGUpCiArICAgIG5ld19z eW1ib2wgKGRpZSwgdHlwZSwgY3UpOwogK30KLSsKKyAKICsvKiBSZWFkIGEgRm9ydHJhbiBtb2R1 bGUgYXMgdHlwZS4KICsKICsgICBNb2R1bGVzIHByZXNlbnQgb25seSBhcyBkZWNsYXJhdGlvbnMg LSBiZWluZyB1c2VkIG9ubHkgZm9yIERXX0FUX2ltcG9ydCBvZgpAQCAtNDMyMCwxMCArNDQ4NCw5 IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiArICB0eXBlID0gaW5pdF90eXBlIChU WVBFX0NPREVfTU9EVUxFLCAwLCAwLCBtb2R1bGVfbmFtZSwgb2JqZmlsZSk7CiArCiArICAvKiBD cmVhdGUgYSBjb250ZXh0IGZvciByZWFkaW5nIHRoZSBtb2R1bGUgdmFyaWFibGVzLiAgKi8KLSAK LS0gIC8qIEZJWE1FOiBTdXBwb3J0IHRoZSBzZXBhcmF0ZSBGb3J0cmFuIG1vZHVsZSBuYW1lc3Bh Y2VzLiAgKi8KKysKICsgIG5ldyA9IHB1c2hfY29udGV4dCAoMCwgMCk7Ci0gCisrCiArICBzYXZl X2ZpbGVfc3ltYm9scyA9IGZpbGVfc3ltYm9sczsKICsgIGZpbGVfc3ltYm9scyA9IE5VTEw7CiAr ICBzYXZlX2dsb2JhbF9zeW1ib2xzID0gZ2xvYmFsX3N5bWJvbHM7CkBAIC00NDMxLDcgKzQ1OTQs NyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIH0KICAKICAvKiBSZXR1cm4gdGhl IG5hbWUgb2YgdGhlIG5hbWVzcGFjZSByZXByZXNlbnRlZCBieSBESUUuICBTZXQKLUBAIC01ODMy LDI5ICs2Mjc1LDExMyBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU4MTAsMjkgKzYyNjAsMTEzIEBAIHJlYWRf dGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZp bGUpOwogICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNo YXJfdHlwZTsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC00NTU5LDcgKzQ3MjIsNyBA QCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vf c3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9 IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBA IC01OTU0LDcgKzY0ODEsNiBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKgorQEAgLTU5MzIsNyArNjQ2 Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCiAgcmVhZF90eXBlZGVmIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgewogICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUgPSBjdS0+b2JqZmlsZTsKQEAgLTQ1NjcsNyArNDczMCw3IEBAIGluZGV4IDE1ZWYzZTku Ljk5ZjcyOWIgMTAwNjQ0CiAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKICAgIHN0cnVjdCB0 eXBlICp0aGlzX3R5cGU7CiAgCi1AQCAtNjA2Miw4ICs2NTg4LDcgQEAgcmVhZF9zdWJyYW5nZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNjA0 MCw4ICs2NTczLDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlOwogICAgc3Ry dWN0IHR5cGUgKnJhbmdlX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNDU3 Nyw3ICs0NzQwLDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgIGNoYXIgKm5h bWU7CiAgICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CiAgICAKLUBAIC02MDc3LDQ5ICs2NjAyLDEw MSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKK0BAIC02MDU1LDQ5ICs2NTg3LDEwMSBAQCByZWFkX3N1YnJhbmdlX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJCSAgICAgMCwg TlVMTCwgY3UtPm9iamZpbGUpOwogICAgICB9CiAgCkBAIC00NjgyLDggKzQ4NDUsNyBAQCBpbmRl eCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9p c19jb25zdGFudCAoYXR0cikpCiArCXsKICsJICBMT05HRVNUIGhpZ2g7Ci0gCi0tICByYW5nZV90 eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgbG93LCBoaWdoKTsKKysK ICsJICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKICsJ ICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2ggJiBuZWdhdGl2ZV9tYXNr KSkKICsJICAgIGhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKQEAgLTQ2OTUsNyArNDg1Nyw4IEBAIGlu ZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiArCSAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90 eXBlKSA9IGxvdyAtIDE7CiArCX0KICsgICAgfQotKworIAorLSAgcmFuZ2VfdHlwZSA9IGNyZWF0 ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7CiArICAvKiBEV19BVF9i aXRfc3RyaWRlIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4g ICovCiArICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsK ICsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCkBAIC00NzE1LDcgKzQ4 NzgsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIAogICAgbmFtZSA9IGR3YXJm Ml9uYW1lIChkaWUsIGN1KTsKICAgIGlmIChuYW1lKQotQEAgLTY1NzgsNiArNzE1NSw3IEBAIGxv YWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICpp bmZvX3B0ciwKK0BAIC02NTU2LDYgKzcxNDAsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICph YmZkLCBnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCiAgCSAgJiYgYWJicmV2 LT50YWcgIT0gRFdfVEFHX2xleGljYWxfYmxvY2sKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19U QUdfdmFyaWFibGUKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbmFtZXNwYWNlCkBAIC00 NzIzLDcgKzQ4ODYsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIAkgICYmIGFi YnJldi0+dGFnICE9IERXX1RBR19tZW1iZXIpCiAgCXsKICAJICAvKiBPdGhlcndpc2Ugd2Ugc2tp cCB0byB0aGUgbmV4dCBzaWJsaW5nLCBpZiBhbnkuICAqLwotQEAgLTY3ODYsOCArNzM2NCw4IEBA IHJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKK0BA IC02NzY0LDggKzczNDksOCBAQCByZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVf aW5mbyAqcGFydF9kaWUsCiAgCSAgICB9CiAgCSAgYnJlYWs7CiAgCWNhc2UgRFdfQVRfTUlQU19s aW5rYWdlX25hbWU6CkBAIC00NzM0LDcgKzQ4OTcsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3Mjli IDEwMDY0NAogIAljYXNlIERXX0FUX2xvd19wYzoKICAJICBoYXNfbG93X3BjX2F0dHIgPSAxOwog IAkgIHBhcnRfZGllLT5sb3dwYyA9IERXX0FERFIgKCZhdHRyKTsKLUBAIC02OTg0LDcgKzc1NjIs OCBAQCBmaXh1cF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGll LAorQEAgLTY5NjIsNyArNzU0Nyw4IEBAIGZpeHVwX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlh bF9kaWVfaW5mbyAqcGFydF9kaWUsCiAgICAvKiBJZiB3ZSBmb3VuZCBhIHJlZmVyZW5jZSBhdHRy aWJ1dGUgYW5kIHRoZSBESUUgaGFzIG5vIG5hbWUsIHRyeQogICAgICAgdG8gZmluZCBhIG5hbWUg aW4gdGhlIHJlZmVycmVkIHRvIERJRS4gICovCiAgCkBAIC00NzQ0LDcgKzQ5MDcsNyBAQCBpbmRl eCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAgICB7CiAgICAgICAgc3RydWN0IHBhcnRpYWxf ZGllX2luZm8gKnNwZWNfZGllOwogIAotQEAgLTgzMjYsMTAgKzg5MDUsMTIgQEAgdmFyX2RlY29k ZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAor QEAgLTgzMDQsMTAgKzg4OTAsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFs dWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkgbG9jYXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQs IG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBldGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAg ICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVz cyBwZXJmb3JtYW5jZQpAQCAtNDc1OSw3ICs0OTIyLDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5 YiAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRp b24gZW50cnksIGZpZ3VyZSBvdXQgaWYgd2UgbmVlZAotQEAgLTgzNTEsMjEgKzg5MzIsMjkgQEAg bmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04MzI5LDIxICs4OTE3LDI5IEBAIG5ld19zeW1ib2wgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgCiAgICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMs IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKICAKQEAgLTQ3OTYsMTIgKzQ5NTksMTQgQEAgaW5k ZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAKICAgICAgICAvKiBEZWZhdWx0IGFzc3VtcHRp b25zLgogICAgICAgICAgIFVzZSB0aGUgcGFzc2VkIHR5cGUgb3IgZGVjb2RlIGl0IGZyb20gdGhl IGRpZS4gICovCi1AQCAtODQ2NSw3ICs5MDU0LDE4IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAt ODQ0Myw3ICs5MDM5LDI0IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgICAgIHZhcl9kZWNvZGVf bG9jYXRpb24gKGF0dHIsIHN5bSwgY3UpOwogIAkgICAgICBhdHRyMiA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2V4dGVybmFsLCBjdSk7CiAgCSAgICAgIGlmIChhdHRyMiAmJiAoRFdfVU5TTkQg KGF0dHIyKSAhPSAwKSkKIC0JCWFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJv bHMpOwogKwkJeworKwkJICBzdHJ1Y3QgcGVuZGluZyAqKmxpc3RfdG9fYWRkOworKwogKwkJICAv KiBXb3JrYXJvdW5kIGdmb3J0cmFuIFBSIGRlYnVnLzQwMDQwIC0gaXQgdXNlcwogKwkJICAgICBE V19BVF9sb2NhdGlvbiBmb3IgdmFyaWFibGVzIGluIC1mUElDIGxpYnJhcmllcyB3aGljaCBtYXkK ICsJCSAgICAgZ2V0IG92ZXJyaWRlbiBieSBvdGhlciBsaWJyYXJpZXMvZXhlY3V0YWJsZSBhbmQg Z2V0CkBAIC00ODExLDIxICs0OTc2LDE2IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0 CiArCQkgICAgICAmJiBkaWUtPnBhcmVudC0+dGFnID09IERXX1RBR19tb2R1bGUpCiArCQkgICAg U1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX1VOUkVTT0xWRUQ7CiArCi0rCQkgIGFkZF9zeW1ib2xf dG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOworKwkJICAvKiBBIHZhcmlhYmxlIHdpdGgg RFdfQVRfZXh0ZXJuYWwgaXMgbmV2ZXIgc3RhdGljLCBidXQgaXQKKysJCSAgICAgbWF5IGJlIGJs b2NrLXNjb3BlZC4gICovCisrCQkgIGxpc3RfdG9fYWRkID0gKGN1LT5saXN0X2luX3Njb3BlID09 ICZmaWxlX3N5bWJvbHMKKysJCQkJID8gJmdsb2JhbF9zeW1ib2xzIDogY3UtPmxpc3RfaW5fc2Nv cGUpOworKwkJICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgbGlzdF90b19hZGQpOwogKwkJfQog IAkgICAgICBlbHNlCiAgCQlhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgY3UtPmxpc3RfaW5fc2Nv cGUpOwogIAkgICAgfQotQEAgLTg2MDIsNyArOTIwMiw3IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g CSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0X2luX3Njb3BlKTsKLSAJICBicmVh azsKLSAJY2FzZSBEV19UQUdfZW51bWVyYXRvcjoKLS0JICBTWU1CT0xfTElOS0FHRV9OQU1FIChz eW0pID0gKGNoYXIgKikgZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci0rCSAgU1lNQk9MX0xJ TktBR0VfTkFNRSAoc3ltKSA9IChjaGFyICopIGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKLSAJICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY29uc3RfdmFsdWUsIGN1KTsKLSAJICBpZiAo YXR0cikKLSAJICAgIHsKLUBAIC04NjI2LDYgKzkyMjYsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC04NjA0LDYgKzkyMTcsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJICBTWU1CT0xfQ0xB U1MgKHN5bSkgPSBMT0NfVFlQRURFRjsKICAJICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmds b2JhbF9zeW1ib2xzKTsKICAJICBicmVhazsKQEAgLTQ4MzcsNyArNDk5Nyw3IEBAIGluZGV4IDE1 ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgCWRlZmF1bHQ6CiAgCSAgLyogTm90IGEgdGFnIHdlIHJl Y29nbml6ZS4gIEhvcGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwogIAkgICAgIHRyYXNoIGRh dGEsIGJ1dCBzaW5jZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1AQCAtODYz OSw4ICs5MjQ0LDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04NjE3LDggKzkyMzUsNyBAQCBu ZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogICAgICAgIC8qIEZvciB0aGUgYmVuZWZpdCBvZiBvbGQgdmVyc2lv bnMgb2YgR0NDLCBjaGVjayBmb3IgYW5vbnltb3VzCiAgCSBuYW1lc3BhY2VzIGJhc2VkIG9uIHRo ZSBkZW1hbmdsZWQgbmFtZS4gICovCiAgICAgICAgaWYgKCFwcm9jZXNzaW5nX2hhc19uYW1lc3Bh Y2VfaW5mbwpAQCAtNDg0Nyw3ICs1MDA3LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2 NDQKICAJY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKHN5bSk7CiAgICAgIH0KICAg IHJldHVybiAoc3ltKTsKLUBAIC04OTUyLDEyICs5NTU2LDE4IEBAIHJlYWRfdHlwZV9kaWUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04OTMwLDEyICs5 NTQ3LDE4IEBAIHJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAgICAgY2FzZSBEV19UQUdfbmFtZXNwYWNlOgogICAgICAgIHRoaXNfdHlw ZSA9IHJlYWRfbmFtZXNwYWNlX3R5cGUgKGRpZSwgY3UpOwogICAgICAgIGJyZWFrOwpAQCAtNDg2 Niw3ICs1MDI2LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgIHJldHVybiB0 aGlzX3R5cGU7CiAgfQogIAotQEAgLTkwMzksMTAgKzk2NDksMTAzIEBAIGRldGVybWluZV9wcmVm aXggKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC05MDE3 LDEwICs5NjQwLDEwMyBAQCBkZXRlcm1pbmVfcHJlZml4IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgICAgU28gaXQgZG9lcyBub3QgbmVlZCBhIHByZWZp eC4gICovCiAgCSAgcmV0dXJuICIiOwogICAgICAgIGRlZmF1bHQ6CkBAIC00OTcxLDcgKzUxMzEs NyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIC8qIFJldHVybiBhIG5ld2x5LWFs bG9jYXRlZCBzdHJpbmcgZm9ybWVkIGJ5IGNvbmNhdGVuYXRpbmcgUFJFRklYIGFuZAogICAgIFNV RkZJWCB3aXRoIGFwcHJvcHJpYXRlIHNlcGFyYXRvci4gIElmIFBSRUZJWCBvciBTVUZGSVggaXMg TlVMTCBvciBlbXB0eSwgdGhlbgogICAgIHNpbXBseSBjb3B5IHRoZSBTVUZGSVggb3IgUFJFRklY LCByZXNwZWN0aXZlbHkuICBJZiBPQlMgaXMgbm9uLW51bGwsCi1AQCAtOTA5MiwxNyArOTc5NSwx MTEgQEAgc2libGluZ19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllKQorQEAgLTkwNzAsMTcgKzk3 ODYsMTExIEBAIHNpYmxpbmdfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKICAgIHJldHVybiBk aWUtPnNpYmxpbmc7CiAgfQogIApAQCAtNDk4NCw3ICs1MTQ0LDExIEBAIGluZGV4IDE1ZWYzZTku Ljk5ZjcyOWIgMTAwNjQ0CiAgewogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKICsgIGNoYXIg Km5hbWU7Ci0rCisgCistICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfTUlQU19saW5r YWdlX25hbWUsIGN1KTsKKy0gIGlmIChhdHRyICYmIERXX1NUUklORyAoYXR0cikpCistICAgIHJl dHVybiBEV19TVFJJTkcgKGF0dHIpOworLSAgcmV0dXJuIGR3YXJmMl9uYW1lIChkaWUsIGN1KTsK ICsgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CiArCiArICAvKiBUaGVzZSBhcmUgdGhl IG9ubHkgbGFuZ3VhZ2VzIHdlIGtub3cgaG93IHRvIHF1YWxpZnkgbmFtZXMgaW4uICAqLwpAQCAt NTA0NywxMSArNTIxMSw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiArCSAgICBu YW1lID0gY25hbWU7CiArCX0KICsgICAgfQotIAotLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0tICBpZiAoYXR0ciAmJiBEV19TVFJJTkcg KGF0dHIpKQotLSAgICByZXR1cm4gRFdfU1RSSU5HIChhdHRyKTsKLS0gIHJldHVybiBkd2FyZjJf bmFtZSAoZGllLCBjdSk7CisrCiArICByZXR1cm4gbmFtZTsKICt9CiArCkBAIC01MDg5LDcgKzUy NDksNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIH0KICAKICAvKiBHZXQgbmFt ZSBvZiBhIGRpZSwgcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLUBAIC0xMTQ1MCw2ICsx MjI0NywzNCBAQCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIp CitAQCAtMTE0MjgsNiArMTIyMzgsMzQgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3Qg YXR0cmlidXRlICphdHRyKQogICAgICB9CiAgfQogIApAQCAtNTEyNCw3ICs1Mjg0LDcgQEAgaW5k ZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICBzdGF0aWMgdm9pZAogIGR3YXJmMl9zeW1ib2xf bWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3lt LAogIAkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtMTE0NzksMzUgKzEyMzA0LDI1 IEBAIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg c3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTExNDU3LDM1ICsxMjI5NSwyNSBAQCBkd2FyZjJfc3lt Ym9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wg KnN5bSwKICAgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0 X2Z1bmNzOwogICAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwogICAg ICB9CkBAIC01MTc1LDcgKzUzMzUsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAog ICAgICB9CiAgfQogIAotQEAgLTExNzk1LDYgKzEyNjEwLDMxIEBAIG9mZnNldF9hbmRfdHlwZV9l cSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTExNzcz LDYgKzEyNjAxLDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMs IGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNf cmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtNTIwNyw3ICs1MzY3LDcgQEAgaW5kZXggMTVlZjNlOS4u OTlmNzI5YiAxMDA2NDQKICAvKiBTZXQgdGhlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIERJRSB0byBU WVBFLiAgU2F2ZSBpdCBpbiBDVSdzIGhhc2gKICAgICB0YWJsZSBpZiBuZWNlc3NhcnkuICBGb3Ig Y29udmVuaWVuY2UsIHJldHVybiBUWVBFLiAgKi8KICAKLUBAIC0xMTgwMyw2ICsxMjY0Myw4IEBA IHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMTc4MSw2ICsxMjYzNCw4IEBAIHNldF9kaWVfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICB7CiAgICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9m czsKICAKQEAgLTUyMTYsNyArNTM3Niw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0 CiAgICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBk YXRhIGlzIGFsd2F5cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBU aGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcg c28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotQEAgLTExOTU4LDIzICsxMjgw MCwxMyBAQCBzaG93X2R3YXJmMl9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0x MTkzNiwyMyArMTI3OTEsMTMgQEAgc2hvd19kd2FyZjJfY21kIChjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCiAgICBjbWRfc2hvd19saXN0IChzaG93X2R3YXJmMl9jbWRsaXN0LCBmcm9tX3R0eSwg IiIpOwogIH0KICAKQEAgLTUyNDQsNyArNTQwNCw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIg MTAwNjQ0CiAgfQogIAogIC8qIG11bm1hcCBkZWJ1ZyBzZWN0aW9ucyBmb3IgT0JKRklMRSwgaWYg bmVjZXNzYXJ5LiAgKi8KLUBAIC0xMTk4MywxNSArMTI4MTUsMTUgQEAgc3RhdGljIHZvaWQKK0BA IC0xMTk2MSwxNSArMTI4MDYsMTUgQEAgc3RhdGljIHZvaWQKICBkd2FyZjJfcGVyX29iamZpbGVf ZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCiAgewogICAgc3RydWN0IGR3 YXJmMl9wZXJfb2JqZmlsZSAqZGF0YSA9IGQ7CkBAIC01MjY5LDcgKzU0MjksNyBAQCBpbmRleCAx NWVmM2U5Li45OWY3MjliIDEwMDY0NAogIH0KICAKICB2b2lkIF9pbml0aWFsaXplX2R3YXJmMl9y ZWFkICh2b2lkKTsKLUBAIC0xMTk5OSw2ICsxMjgzMSw3IEBAIHZvaWQgX2luaXRpYWxpemVfZHdh cmYyX3JlYWQgKHZvaWQpOworQEAgLTExOTc3LDYgKzEyODIyLDcgQEAgdm9pZCBfaW5pdGlhbGl6 ZV9kd2FyZjJfcmVhZCAodm9pZCk7CiAgdm9pZAogIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2 b2lkKQogIHsKQEAgLTUyNzgsMTAgKzU0MzgsMzIgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAx MDA2NDQKICAgICAgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGFfd2l0aF9jbGVhbnVwIChOVUxMLCBk d2FyZjJfcGVyX29iamZpbGVfZnJlZSk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBi L2dkYi9lbGZyZWFkLmMKLWluZGV4IDc4ZTkxNjMuLjRlMjA4ZDEgMTAwNjQ0CitpbmRleCA3OGU5 MTYzLi5kYzhhNzUyIDEwMDY0NAogLS0tIGEvZ2RiL2VsZnJlYWQuYwogKysrIGIvZ2RiL2VsZnJl YWQuYwotQEAgLTg3OSwyMCArODc5LDEzIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKK0BAIC0xNzksNyArMTc5LDggQEAgcmVj b3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZV9sZW4sIGludCBj b3B5X25hbWUsCisgeworICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9h cmNoIChvYmpmaWxlKTsKKyAKKy0gIGlmIChtc190eXBlID09IG1zdF90ZXh0IHx8IG1zX3R5cGUg PT0gbXN0X2ZpbGVfdGV4dCkKKysgIGlmIChtc190eXBlID09IG1zdF90ZXh0IHx8IG1zX3R5cGUg PT0gbXN0X2ZpbGVfdGV4dAorKyAgICAgIHx8IG1zX3R5cGUgPT0gbXN0X3RleHRfZ251X2lmdW5j KQorICAgICBhZGRyZXNzID0gZ2RiYXJjaF9zbWFzaF90ZXh0X2FkZHJlc3MgKGdkYmFyY2gsIGFk ZHJlc3MpOworIAorICAgcmV0dXJuIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sX2Z1bGwgKG5h bWUsIG5hbWVfbGVuLCBjb3B5X25hbWUsIGFkZHJlc3MsCitAQCAtMzg4LDcgKzM4OSwxMCBAQCBl bGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwKKyAJICAg IHsKKyAJICAgICAgaWYgKHN5bS0+ZmxhZ3MgJiAoQlNGX0dMT0JBTCB8IEJTRl9XRUFLKSkKKyAJ CXsKKy0JCSAgbXNfdHlwZSA9IG1zdF90ZXh0OworKwkJICBpZiAoc3ltLT5mbGFncyAmIEJTRl9H TlVfSU5ESVJFQ1RfRlVOQ1RJT04pCisrCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0X2dudV9pZnVu YzsKKysJCSAgZWxzZQorKwkJICAgIG1zX3R5cGUgPSBtc3RfdGV4dDsKKyAJCX0KKyAJICAgICAg ZWxzZSBpZiAoKHN5bS0+bmFtZVswXSA9PSAnLicgJiYgc3ltLT5uYW1lWzFdID09ICdMJykKKyAJ CSAgICAgICB8fCAoKHN5bS0+ZmxhZ3MgJiBCU0ZfTE9DQUwpCitAQCAtODc5LDIwICs4ODMsMTMg QEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxl X2ZsYWdzKQogIAkJCQlzdHJfc2VjdC0+ZmlsZXBvcywKICAJCQkJYmZkX3NlY3Rpb25fc2l6ZSAo YWJmZCwgc3RyX3NlY3QpKTsKICAgICAgfQpAQCAtNTMwNSw3ICs1NDg3LDcgQEAgaW5kZXggNzhl OTE2My4uNGUyMDhkMSAxMDA2NDQKICAgICAgewogICAgICAgIGNoYXIgKmRlYnVnZmlsZTsKICAK LUBAIC05MTAsNiArOTAzLDIwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKK0BAIC05MTAsNiArOTA3LDIwIEBAIGVsZl9zeW1m aWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKICAg ICAgfQogIH0KICAKQEAgLTUzMjYsNyArNTUwOCw3IEBAIGluZGV4IDc4ZTkxNjMuLjRlMjA4ZDEg MTAwNjQ0CiAgLyogVGhpcyBjbGVhbnMgdXAgdGhlIG9iamZpbGUncyBkZXByZWNhdGVkX3N5bV9z dGFiX2luZm8gcG9pbnRlciwgYW5kCiAgICAgdGhlIGNoYWluIG9mIHN0YWJfc2VjdGlvbl9pbmZv J3MsIHRoYXQgbWlnaHQgYmUgZGFuZ2xpbmcgZnJvbQogICAgIGl0LiAgKi8KLUBAIC0xMDUyLDYg KzEwNTksNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQorQEAgLTEwNTIs NiArMTA2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9CiAgICBlbGZf bmV3X2luaXQsCQkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUg c3ltdGFiICovCiAgICBlbGZfc3ltZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlh bCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQoKSAqLwogICAgZWxmX3N5bWZpbGVfcmVhZCwJCS8q IHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIgKi8KQEAgLTUzMzUsNyAr NTUxNyw3IEBAIGluZGV4IDc4ZTkxNjMuLjRlMjA4ZDEgMTAwNjQ0CiAgICBkZWZhdWx0X3N5bWZp bGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9j YXRpb24gKi8KICAgIGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJLyogc3ltX3NlZ21lbnRzOiBHZXQg c2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9l dmFsLmMKLWluZGV4IDI3Yjc4OTUuLjkwYzI5YTMgMTAwNjQ0CitpbmRleCBhMDU1NmNmLi5hYmU2 YTA2IDEwMDY0NAogLS0tIGEvZ2RiL2V2YWwuYwogKysrIGIvZ2RiL2V2YWwuYwogQEAgLTQzLDYg KzQzLDcgQEAKQEAgLTYzNTMsNiArNjUzNSw3NiBAQCBpbmRleCBlMTE3YThlLi42YmQzNzI0IDEw MDY0NAogICAgICB9CiAgICBlbHNlCiAgICAgIHsKK2RpZmYgLS1naXQgYS9nZGIvZnJ2LWxpbnV4 LXRkZXAuYyBiL2dkYi9mcnYtbGludXgtdGRlcC5jCitpbmRleCBjMDUxYTRkLi41YjA3MDYzIDEw MDY0NAorLS0tIGEvZ2RiL2Zydi1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9mcnYtbGludXgtdGRl cC5jCitAQCAtMzIsNiArMzIsNyBAQAorICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKKyAjaW5j bHVkZSAicmVnc2V0LmgiCisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKysjaW5jbHVkZSAibGlu dXgtdGRlcC5oIgorIAorIC8qIERlZmluZSB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGFuIEZSLVYg aW5zdHJ1Y3Rpb24uICAqLworIHN0YXRpYyBjb25zdCBpbnQgZnJ2X2luc3RyX3NpemUgPSA0Owor QEAgLTQ4Niw3ICs0ODcsMjEgQEAgZnJ2X2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICByZXR1cm4gTlVMTDsKKyB9CisgCistDAorK3N0 YXRpYyBDT1JFX0FERFIKKytmcnZfbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCQkgICAgICBDT1JFX0FERFIgYWRkciwKKysJCQkJ ICAgICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisreworKyAgQ09SRV9BRERSIHBjID0gZnJ2 X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCB0YXJnKTsKKysgIENP UkVfQUREUiByZXNvbHZlZDsKKysKKysgIHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1 bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRkciwgcGMpOworKyAgaWYgKHJlc29sdmVkICE9IHBjKQor KyAgICBwYyA9IGZydl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcmVzb2x2 ZWQsIHRhcmcpOworKworKyAgcmV0dXJuIHBjOworK30KKysKKyBzdGF0aWMgdm9pZAorIGZydl9s aW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCkKKyB7CitAQCAtNDk0LDYgKzUwOSwxMCBAQCBmcnZfbGludXhfaW5pdF9hYmkgKHN0 cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICBmcmFt ZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmZnJ2X2xpbnV4X3NpZ3RyYW1wX2Zy YW1lX3Vud2luZCk7IAorICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChn ZGJhcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcnZfbGlu dXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKKysKKysgIGlmIChmcnZfYWJpIChnZGJhcmNo KSA9PSBGUlZfQUJJX0ZEUElDKQorKyAgICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgZnJ2X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyKTsKKyB9CisgCisgc3RhdGljIGVudW0gZ2RiX29zYWJpCitkaWZmIC0tZ2l0IGEvZ2Ri L2Zydi10ZGVwLmMgYi9nZGIvZnJ2LXRkZXAuYworaW5kZXggYTM4ZWM4ZS4uYjg4NTZhOSAxMDA2 NDQKKy0tLSBhL2dkYi9mcnYtdGRlcC5jCisrKysgYi9nZGIvZnJ2LXRkZXAuYworQEAgLTExNjks NyArMTE2OSw3IEBAIGZpbmRfZnVuY19kZXNjciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENP UkVfQUREUiBlbnRyeV9wb2ludCkKKyAgIHJldHVybiBkZXNjcjsKKyB9CisgCistc3RhdGljIENP UkVfQUREUgorK0NPUkVfQUREUgorIGZydl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisgeworZGlmZiAtLWdpdCBh L2dkYi9mcnYtdGRlcC5oIGIvZ2RiL2Zydi10ZGVwLmgKK2luZGV4IDI1Y2M5YzQuLjk1ZDVmZTUg MTAwNjQ0CistLS0gYS9nZGIvZnJ2LXRkZXAuaAorKysrIGIvZ2RiL2Zydi10ZGVwLmgKK0BAIC0x MTgsMyArMTE4LDYgQEAgQ09SRV9BRERSIGZydl9mZXRjaF9vYmpmaWxlX2xpbmtfbWFwIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Cisgc3RydWN0IHRhcmdldF9zb19vcHM7CisgZXh0ZXJuIHN0 cnVjdCB0YXJnZXRfc29fb3BzIGZydl9zb19vcHM7CisgCisrQ09SRV9BRERSIGZydl9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJCQkgIENP UkVfQUREUiBhZGRyLAorKwkJCQkJICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZyk7CiBkaWZmIC0t Z2l0IGEvZ2RiL2dkYmluaXQuaW4gYi9nZGIvZ2RiaW5pdC5pbgogaW5kZXggZmZiN2Y1My4uYTJl N2U5NCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJpbml0LmluCkBAIC02Mzk5LDcgKzY2NTEsNyBAQCBp bmRleCBjZDI0ZWFmLi4xMTlhZjdkIDEwMDY0NAogICAgIG9uY2UgZm9yIGVhY2gga25vd24gdGhy ZWFkLiAgKi8KICB0eXBlZGVmIGludCAoKnRocmVhZF9jYWxsYmFja19mdW5jKSAoc3RydWN0IHRo cmVhZF9pbmZvICosIHZvaWQgKik7CiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIv Z2RidHlwZXMuYwotaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKK2luZGV4IDJmZjg2NDcu LjJiZGFjYTggMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuYwogKysrIGIvZ2RiL2dkYnR5cGVz LmMKIEBAIC0zOSw2ICszOSw5IEBACkBAIC02NDk1LDcgKzY3NDcsNyBAQCBpbmRleCAxMTc2MDZh Li41MzZiZWUyIDEwMDY0NAogICAgICAgIGlmICh0eXBlcHRyKQogIAkqdHlwZXB0ciA9IG50eXBl OwogICAgICB9Ci1AQCAtNzI2LDYgKzc4MCw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3Qg dHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorQEAgLTcyMyw2ICs3 NzcsNyBAQCBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1 Y3QgdHlwZSAqaW5kZXhfdHlwZSwKICAgICAgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXpl b2YgKHN0cnVjdCByYW5nZV9ib3VuZHMpKTsKICAgIFRZUEVfTE9XX0JPVU5EIChyZXN1bHRfdHlw ZSkgPSBsb3dfYm91bmQ7CiAgICBUWVBFX0hJR0hfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGhpZ2hf Ym91bmQ7CkBAIC02NTAzLDcgKzY3NTUsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZiZWUyIDEwMDY0 NAogIAogICAgaWYgKGxvd19ib3VuZCA+PSAwKQogICAgICBUWVBFX1VOU0lHTkVEIChyZXN1bHRf dHlwZSkgPSAxOwotQEAgLTgyNSwyNiArODgwLDQ1IEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1 Y3QgdHlwZSAqcmVzdWx0X3R5cGUsCitAQCAtODIyLDI2ICs4NzcsNDUgQEAgY3JlYXRlX2FycmF5 X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKICAKICAgIFRZUEVfQ09ERSAocmVzdWx0 X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwogICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5 cGUpID0gZWxlbWVudF90eXBlOwpAQCAtNjU2Miw3ICs2ODE0LDcgQEAgaW5kZXggMTE3NjA2YS4u NTM2YmVlMiAxMDA2NDQKICAKICAgIHJldHVybiByZXN1bHRfdHlwZTsKICB9Ci1AQCAtMTMzMSw2 ICsxNDA1LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCitAQCAtMTM0NCw2ICsx NDE4LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCiAgICBjb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsIF8oInN0dWIgdHlwZSBoYXMgTlVMTCBuYW1lIikpOwogIH0KICAK QEAgLTY2NjgsNyArNjkyMCw3IEBAIGluZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAgLyog QWRkZWQgYnkgQnJ5YW4gQm9yZWhhbSwgS2V3aWxsLCBTdW4gU2VwIDE3IDE4OjA3OjE3IDE5ODku CiAgCiAgICAgSWYgdGhpcyBpcyBhIHN0dWJiZWQgc3RydWN0IChpLmUuIGRlY2xhcmVkIGFzIHN0 cnVjdCBmb28gKiksIHNlZSBpZgotQEAgLTE0NjIsNTEgKzE2MzUsMzYgQEAgY2hlY2tfdHlwZWRl ZiAoc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtMTQ3NSw1MSArMTY0OCwzNiBAQCBjaGVja190eXBl ZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgICAgICAgIH0KICAgICAgfQogIApAQCAtNjc0MCw3 ICs2OTkyLDcgQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAJICBUWVBFX1RBUkdF VF9TVFVCICh0eXBlKSA9IDA7CiAgCX0KICAgICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9SQU5HRSkKLUBAIC0xNTE0LDkgKzE2NzIsMTIgQEAgY2hlY2tfdHlwZWRl ZiAoc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtMTUyNyw5ICsxNjg1LDEyIEBAIGNoZWNrX3R5cGVk ZWYgKHN0cnVjdCB0eXBlICp0eXBlKQogIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVO R1RIICh0YXJnZXRfdHlwZSk7CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwogIAl9 CkBAIC02NzUzLDcgKzcwMDUsMTYgQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAg IHJldHVybiB0eXBlOwogIH0KICAKLUBAIC0xODA5LDYgKzE5NzAsNyBAQCBpbml0X3R5cGUgKGVu dW0gdHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKK0BAIC0xNzk4LDYgKzE5 NTksOCBAQCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBm bGFncywKKyAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9IDE7CisgICBpZiAoZmxhZ3MgJiBUWVBF X0ZMQUdfRklYRURfSU5TVEFOQ0UpCisgICAgIFRZUEVfRklYRURfSU5TVEFOQ0UgKHR5cGUpID0g MTsKKysgIGlmIChmbGFncyAmIFRZUEVfRkxBR19HTlVfSUZVTkMpCisrICAgIFRZUEVfR05VX0lG VU5DICh0eXBlKSA9IDE7CisgCisgICBpZiAobmFtZSkKKyAgICAgVFlQRV9OQU1FICh0eXBlKSA9 IG9ic2F2ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1lKSwKK0BAIC0xODIyLDYgKzE5ODUsNyBA QCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywK ICAgICAgICAgIFRZUEVfU1BFQ0lGSUNfRklFTEQgKHR5cGUpID0gVFlQRV9TUEVDSUZJQ19DQUxM SU5HX0NPTlZFTlRJT047CiAgICAgICAgICBicmVhazsKICAgICAgfQpAQCAtNjc2MSw3ICs3MDIy LDcgQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAgIHJldHVybiB0eXBlOwogIH0K ICAKLUBAIC0yOTg2LDMzICszMTQ4LDQyIEBAIHR5cGVfcGFpcl9lcSAoY29uc3Qgdm9pZCAqaXRl bV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTI5OTksMzMgKzMxNjMsNDIgQEAgdHlw ZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCiAg fQogIAogIC8qIEFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlIHVzZWQgYnkgY29weV90eXBlX3JlY3Vy c2l2ZSB0byB3YWxrCkBAIC02ODE5LDcgKzcwODAsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZiZWUy IDEwMDY0NAogICAgICByZXR1cm4gdHlwZTsKICAKICAgIC8qIFRoaXMgdHlwZSBzaG91bGRuJ3Qg YmUgcG9pbnRpbmcgdG8gYW55IHR5cGVzIGluIG90aGVyIG9iamZpbGVzOwotQEAgLTMwMjcsOCAr MzE5OCwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK K0BAIC0zMDQwLDggKzMyMTMsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCiAgICBuZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJj aCAodHlwZSkpOwogIAogICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNo IHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCkBAIC02ODMyLDcgKzcwOTMsNyBAQCBpbmRleCAx MTc2MDZhLi41MzZiZWUyIDEwMDY0NAogICAgc3RvcmVkLT5vbGQgPSB0eXBlOwogICAgc3RvcmVk LT5uZXcgPSBuZXdfdHlwZTsKICAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMwMzksNiArMzIxMiwx OSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0z MDUyLDYgKzMyMjcsMTkgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCiAgICBUWVBFX09CSkZJTEVfT1dORUQgKG5ld190eXBlKSA9IDA7CiAgICBUWVBFX09X TkVSIChuZXdfdHlwZSkuZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwogIApAQCAtNjg1 Miw3ICs3MTEzLDcgQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAgIGlmIChUWVBF X05BTUUgKHR5cGUpKQogICAgICBUWVBFX05BTUUgKG5ld190eXBlKSA9IHhzdHJkdXAgKFRZUEVf TkFNRSAodHlwZSkpOwogICAgaWYgKFRZUEVfVEFHX05BTUUgKHR5cGUpKQotQEAgLTMwNDcsMTIg KzMyMzMsNDUgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CitAQCAtMzA2MCwxMiArMzI0OCw0NSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKICAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9IFRZUEVf SU5TVEFOQ0VfRkxBR1MgKHR5cGUpOwogICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9IFRZUEVf TEVOR1RIICh0eXBlKTsKICAKQEAgLTY4OTgsNyArNzE1OSw3IEBAIGluZGV4IDExNzYwNmEuLjUz NmJlZTIgMTAwNjQ0CiAgICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IFhDQUxMT0MgKG5m aWVsZHMsIHN0cnVjdCBmaWVsZCk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5maWVsZHM7IGkr KykKICAJewotQEAgLTMwNjEsOCArMzI4MCw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTMwNzQsOCArMzI5NSw4IEBAIGNvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkgIFRZUEVfRklFTERfQklUU0laRSAo bmV3X3R5cGUsIGkpID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQ RV9GSUVMRF9UWVBFICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUs IGkpCkBAIC02OTA5LDcgKzcxNzAsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZiZWUyIDEwMDY0NAog IAkgIGlmIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1F IChuZXdfdHlwZSwgaSkgPSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBl LCBpKSk7Ci1AQCAtMzA4OSwyNCArMzMwOCw3NSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMTAyLDI0ICszMzIzLDc1IEBAIGNvcHlfdHlwZV9y ZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTY5 OTEsNyArNzI1Miw3IEBAIGluZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAgICAvKiBNYXli ZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0x Mi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zMTI0 LDYgKzMzOTQsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCitAQCAtMzEzNyw2ICszNDA5LDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAogICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTcwMDksNyAr NzI3MCw3IEBAIGluZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAgLyogTWFrZSBhIGNvcHkg b2YgdGhlIGdpdmVuIFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCiAg ICAgdHlwZXMgYXJlIG5vdCBwcmVzZXJ2ZWQuCiAgICAgCi1AQCAtMzE0Niw2ICszNDI3LDIxMSBA QCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTMxNTksNiArMzQ0Miwy MTEgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgIHJldHVybiBuZXdf dHlwZTsKICB9CiAgCkBAIC03MjIxLDcgKzc0ODIsMjggQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVl MiAxMDA2NDQKICAKICAvKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYXJjaGl0ZWN0 dXJlLXNwZWNpZmljIHR5cGVzLiAgKi8KICAKLUBAIC0zNjM2LDYgKzQxMjIsMTEgQEAgdm9pZAor QEAgLTM0ODIsNiArMzk3MCw4IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpCisgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWls dGluX3ZvaWQpOworICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCisgICAgID0gbG9v a3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVp bHRpbl92b2lkKSk7CisrICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCisrICAgID0g bG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7Cisg CisgICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICov CisgICBidWlsdGluX3R5cGUtPmludGVybmFsX2ZuCitAQCAtMzU5NSw2ICs0MDg1LDExIEBAIG9i amZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgCQkgIjx0ZXh0IHZhcmlhYmxl LCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOworICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmls ZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9sKQorICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRp bl9pbnQ7CisrICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCisr ICAgID0gaW5pdF90eXBlIChUWVBFX0NPREVfRlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywK KysJCSAiPHRleHQgZ251LWlmdW5jIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUp OworKyAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lm dW5jX3N5bWJvbCkKKysgICAgPSBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7Cisg ICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfZGF0YV9zeW1ib2wKKyAgICAgPSBpbml0X3R5cGUgKFRZ UEVfQ09ERV9JTlQsCisgCQkgZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9C SVQsIDAsCitAQCAtMzY0OSw2ICs0MTQ0LDExIEBAIHZvaWQKICBfaW5pdGlhbGl6ZV9nZGJ0eXBl cyAodm9pZCkKICB7CiAgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bv c3RfaW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsKQEAgLTcyMzQsNyArNzUxNiw3IEBAIGluZGV4 IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAgCiAgICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQg KCJvdmVybG9hZCIsIG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsIF8oIlwKIGRpZmYgLS1naXQg YS9nZGIvZ2RidHlwZXMuaCBiL2dkYi9nZGJ0eXBlcy5oCi1pbmRleCAzODBmNzJhLi41NGM4NzM5 IDEwMDY0NAoraW5kZXggNzI5NjhhNS4uNGRmMmEzNyAxMDA2NDQKIC0tLSBhL2dkYi9nZGJ0eXBl cy5oCiArKysgYi9nZGIvZ2RidHlwZXMuaAogQEAgLTEzOCw2ICsxMzgsOCBAQCBlbnVtIHR5cGVf Y29kZQpAQCAtNzI0Niw3ICs3NTI4LDE1IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAwNjQ0 CiAgICAgIC8qIEludGVybmFsIGZ1bmN0aW9uIHR5cGUuICAqLwogICAgICBUWVBFX0NPREVfSU5U RVJOQUxfRlVOQ1RJT04KICAgIH07Ci1AQCAtMjE0LDYgKzIxNiwxMSBAQCBlbnVtIHR5cGVfaW5z dGFuY2VfZmxhZ192YWx1ZQorQEAgLTE3MSw2ICsxNzMsNyBAQCBlbnVtIHR5cGVfZmxhZ192YWx1 ZQorICAgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFID0gKDEgPDwgMTUpLAorICAgVFlQRV9GTEFH X1NUVUJfU1VQUE9SVEVEID0gKDEgPDwgMTYpLAorICAgVFlQRV9GTEFHX05PVFRFWFQgPSAoMSA8 PCAxNyksCisrICBUWVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwgMTgpLAorIAorICAgLyogVXNl ZCBmb3IgZXJyb3ItY2hlY2tpbmcuICAqLworICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19V TlNJR05FRAorQEAgLTIxNCw2ICsyMTcsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFs dWUKICAKICAjZGVmaW5lIFRZUEVfVEFSR0VUX1NUVUIodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ ZmxhZ190YXJnZXRfc3R1YikKICAKQEAgLTcyNTgsNyArNzU0OCwyMCBAQCBpbmRleCAzODBmNzJh Li41NGM4NzM5IDEwMDY0NAogIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBj b3JyZXNwb25kaW5nIHR5cGUgaGFkIAogICAqIGEgc3RhdGljIG1vZGlmaWVyLgogICAqIE5vdGU6 IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJzCi1AQCAt Mjc5LDYgKzI4Niw0OCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorQEAgLTI3MSw2 ICsyNzksMTIgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKKyAKKyAjZGVmaW5lIFRZ UEVfTk9UVEVYVCh0KQkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3R0ZXh0KQorIAorKy8q IEN1cnJlbnRseSB1c2VkIG9ubHkgZm9yIFRZUEVfQ09ERV9GVU5DIHdoZXJlIHNwZWNpZmllcyB0 aGUgcmVhbCBmdW5jdGlvbgorKyAgIGFkZHJlc3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlv biBjYWxsLiAgVFlQRV9UQVJHRVRfVFlQRSBkZXRlcm1pbmVzIHRoZQorKyAgIGZpbmFsIHJldHVy bmVkIGZ1bmN0aW9uIHR5cGUgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuICAqLworKworKyNkZWZp bmUgVFlQRV9HTlVfSUZVTkModCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMp CisrCisgLyogVHlwZSBvd25lci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUg dHlwZSBpcyBvd25lZCBieQorICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJ TEUuICBPdGhlcndlaXNlLCB0aGUgdHlwZSBpcworICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVy ZTsgVFlQRV9PQkpGSUxFIGlzIE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KK0BAIC0yNzksNiArMjkz LDQ4IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgI2RlZmluZSBUWVBFX09XTkVS KHQpIFRZUEVfTUFJTl9UWVBFKHQpLT5vd25lcgogICNkZWZpbmUgVFlQRV9PQkpGSUxFKHQpIChU WVBFX09CSkZJTEVfT1dORUQodCk/IFRZUEVfT1dORVIodCkub2JqZmlsZSA6IE5VTEwpCiAgCkBA IC03MzA3LDcgKzc2MTAsNyBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogIC8qIENv bnN0YW50IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSBoYXMg YQogICAqIGNvbnN0IG1vZGlmaWVyLgogICAqLwotQEAgLTMzNiw4ICszODUsNyBAQCBlbnVtIGZp ZWxkX2xvY19raW5kCitAQCAtMzM2LDggKzM5Miw3IEBAIGVudW0gZmllbGRfbG9jX2tpbmQKICAg IHsKICAgICAgRklFTERfTE9DX0tJTkRfQklUUE9TLAkvKiBiaXRwb3MgKi8KICAgICAgRklFTERf TE9DX0tJTkRfUEhZU0FERFIsCS8qIHBoeXNhZGRyICovCkBAIC03MzE3LDggKzc2MjAsMTEgQEAg aW5kZXggMzgwZjcyYS4uNTRjODczOSAxMDA2NDQKICAgIH07CiAgCiAgLyogQSBkaXNjcmltaW5h bnQgdG8gZGV0ZXJtaW5lIHdoaWNoIGZpZWxkIGluIHRoZSBtYWluX3R5cGUudHlwZV9zcGVjaWZp YwotQEAgLTM4Niw2ICs0MzQsMTMgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTM4NCw4ICs0Mzks MTYgQEAgc3RydWN0IG1haW5fdHlwZQorICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsK KyAgIHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKICAgIHVuc2lnbmVkIGlu dCBmbGFnX25vdHRleHQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lmdW5jIDogMTsK ICAgIHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKICAgIHVuc2lnbmVkIGlu dCBmbGFnX29iamZpbGVfb3duZWQgOiAxOwogKyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFi bGUgOiAxOwpAQCAtNzMzMSw3ICs3NjM3LDcgQEAgaW5kZXggMzgwZjcyYS4uNTRjODczOSAxMDA2 NDQKICAKICAgIC8qIEEgZGlzY3JpbWluYW50IHRlbGxpbmcgdXMgd2hpY2ggZmllbGQgb2YgdGhl IHR5cGVfc3BlY2lmaWMgdW5pb24KICAgICAgIGlzIGJlaW5nIHVzZWQgZm9yIHRoaXMgdHlwZSwg aWYgYW55LiAgKi8KLUBAIC00NTYsNiArNTExLDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC00 NTYsNiArNTE5LDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKICAKICAgIHN0cnVjdCB0eXBlICp0YXJn ZXRfdHlwZTsKICAKQEAgLTczNTIsNyArNzY1OCw3IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3Mzkg MTAwNjQ0CiAgICAvKiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlv biBvZiBlYWNoIGZpZWxkLgogICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0 aGVyZSBpcyBvbmUgImZpZWxkIiwKICAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBl IG9mIHRoZSBzZXQgb3IgYXJyYXkuCi1AQCAtNDkyLDEyICs1NjEsNiBAQCBzdHJ1Y3QgbWFpbl90 eXBlCitAQCAtNDkyLDEyICs1NjksNiBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgCUNPUkVfQURE UiBwaHlzYWRkcjsKICAJY2hhciAqcGh5c25hbWU7CkBAIC03MzY1LDcgKzc2NzEsNyBAQCBpbmRl eCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICAgICAgIH0KICAgICAgICBsb2M7CiAgCi1AQCAt NTM1LDEzICs1OTgsMjIgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTUzNSwxMyArNjA2LDIyIEBA IHN0cnVjdCBtYWluX3R5cGUKICAKICAgICAgc3RydWN0IHJhbmdlX2JvdW5kcwogICAgICB7CkBA IC03MzkzLDcgKzc2OTksNyBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogIAogICAg ICAgIC8qIEZsYWdzIGluZGljYXRpbmcgd2hldGhlciB0aGUgdmFsdWVzIG9mIGxvdyBhbmQgaGln aCBhcmUKICAgICAgICAgICB2YWxpZC4gIFdoZW4gdHJ1ZSwgdGhlIHJlc3BlY3RpdmUgcmFuZ2Ug dmFsdWUgaXMKLUBAIC01OTMsNiArNjY1LDkgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTU5Myw2 ICs2NzMsOSBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgICAgICAgIHN1cHBvcnRpbmcgbXVsdGlwbGUg QUJJcy4gIFJpZ2h0IG5vdyB0aGlzIGlzIG9ubHkgZmV0Y2hlZCBmcm9tCiAgICAgICAgIHRoZSBE d2FyZi0yIERXX0FUX2NhbGxpbmdfY29udmVudGlvbiBhdHRyaWJ1dGUuICAqLwogICAgICB1bnNp Z25lZCBjYWxsaW5nX2NvbnZlbnRpb247CkBAIC03NDAzLDcgKzc3MDksNyBAQCBpbmRleCAzODBm NzJhLi41NGM4NzM5IDEwMDY0NAogICAgfSB0eXBlX3NwZWNpZmljOwogIH07CiAgCi1AQCAtODM5 LDEzICs5MTQsNiBAQCBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUKK0BAIC04MzksMTMgKzkyMiw2 IEBAIHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZQogICAgICBpbnQgaXNfZHluYW1pYyA6IDI7CiAg ICB9OwogIApAQCAtNzQxNyw3ICs3NzIzLDcgQEAgaW5kZXggMzgwZjcyYS4uNTRjODczOSAxMDA2 NDQKICAvKiBTdHJ1Y3QgdXNlZCBmb3IgcmFua2luZyBhIGZ1bmN0aW9uIGZvciBvdmVybG9hZCBy ZXNvbHV0aW9uICovCiAgc3RydWN0IGJhZG5lc3NfdmVjdG9yCiAgICB7Ci1AQCAtOTAwLDkgKzk2 OCw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICop OworQEAgLTkwMCw5ICs5NzYsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBl IChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAo dGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKICAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhp c3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCiAgI2RlZmluZSBUWVBFX0NIQUlOKHRo aXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgpAQCAtNzQzMCw3ICs3NzM2LDcgQEAgaW5kZXggMzgw ZjcyYS4uNTRjODczOSAxMDA2NDQKICAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdU SCAoVkFMVUVfVFlQRSAoWCkpIGlzIHNhZmUuICAqLwogICNkZWZpbmUgVFlQRV9MRU5HVEgodGhp c3R5cGUpICh0aGlzdHlwZSktPmxlbmd0aAogIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJl IFRZUEVfQ09ERV9UWVBFREVGLCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTkxMSwxNSAr OTc5LDI2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBl ICopOworQEAgLTkxMSwxNSArOTg3LDI2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4 X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBU WVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5maWVsZHMKICAjZGVmaW5lIFRZUEVfRklFTERTKHRo aXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMKICAjZGVm aW5lIFRZUEVfVEVNUExBVEVfQVJHUyh0aGlzdHlwZSkgVFlQRV9DUExVU19TUEVDSUZJQyh0aGlz dHlwZSktPnRlbXBsYXRlX2FyZ3MKQEAgLTc0NTksNyArNzc2NSw3IEBAIGluZGV4IDM4MGY3MmEu LjU0Yzg3MzkgMTAwNjQ0CiAgCiAgLyogTW90by1zcGVjaWZpYyBzdHVmZiBmb3IgRk9SVFJBTiBh cnJheXMgKi8KICAKLUBAIC05MjgsMTEgKzEwMDcsMjMgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVf Z25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitAQCAtOTI4LDExICsxMDE1LDIzIEBAIGV4 dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZp bmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCiAgICAg VFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEKFRZUEVfSU5ERVhfVFlQRShhcnJheXR5cGUpKQogIApA QCAtNzQ4NCw3ICs3NzkwLDcgQEAgaW5kZXggMzgwZjcyYS4uNTRjODczOSAxMDA2NDQKICAKICAv KiBDKysgKi8KICAKLUBAIC05NjEsNiArMTA1Miw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2du YXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTk2MSw2ICsxMDYwLDcgQEAgZXh0ZXJu IHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBU WVBFX0dOQVRfU1BFQ0lGSUModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlw ZV9zcGVjaWZpYy5nbmF0X3N0dWZmCiAgI2RlZmluZSBUWVBFX0RFU0NSSVBUSVZFX1RZUEUodGhp c3R5cGUpIFRZUEVfR05BVF9TUEVDSUZJQyh0aGlzdHlwZSktPmRlc2NyaXB0aXZlX3R5cGUKICAj ZGVmaW5lIFRZUEVfQ0FMTElOR19DT05WRU5USU9OKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0 aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMuY2FsbGluZ19jb252ZW50aW9uCkBAIC03NDkyLDcgKzc3 OTgsNyBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICNkZWZpbmUgVFlQRV9CQVNF Q0xBU1ModGhpc3R5cGUsaW5kZXgpIFRZUEVfRklFTERfVFlQRSh0aGlzdHlwZSwgaW5kZXgpCiAg I2RlZmluZSBUWVBFX05fQkFTRUNMQVNTRVModGhpc3R5cGUpIFRZUEVfQ1BMVVNfU1BFQ0lGSUMo dGhpc3R5cGUpLT5uX2Jhc2VjbGFzc2VzCiAgI2RlZmluZSBUWVBFX0JBU0VDTEFTU19OQU1FKHRo aXN0eXBlLGluZGV4KSBUWVBFX0ZJRUxEX05BTUUodGhpc3R5cGUsIGluZGV4KQotQEAgLTk3OSw3 ICsxMDcxLDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5 cGUgKik7CitAQCAtOTc5LDcgKzEwNzksNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1 eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIEZJRUxEX0JJVFBPUyh0aGlzZmxkKSAo KHRoaXNmbGQpLmxvYy5iaXRwb3MpCiAgI2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZU05BTUUodGhp c2ZsZCkgKCh0aGlzZmxkKS5sb2MucGh5c25hbWUpCiAgI2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZ U0FERFIodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MucGh5c2FkZHIpCkBAIC03NTAwLDcgKzc4MDYs NyBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICNkZWZpbmUgU0VUX0ZJRUxEX0JJ VFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9 IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKICAgICBGSUVMRF9CSVRQT1MgKHRoaXNmbGQpID0g KGJpdHBvcykpCi1AQCAtOTg5LDkgKzEwODAsNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05ODksOSArMTA4OCw2IEBAIGV4dGVybiB2 b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUgU0VU X0ZJRUxEX1BIWVNBRERSKHRoaXNmbGQsIGFkZHIpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0 aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkJXAogICAgIEZJRUxEX1NUQVRJQ19Q SFlTQUREUiAodGhpc2ZsZCkgPSAoYWRkcikpCkBAIC03NTEwLDcgKzc4MTYsNyBAQCBpbmRleCAz ODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICNkZWZpbmUgRklFTERfQVJUSUZJQ0lBTCh0aGlzZmxk KSAoKHRoaXNmbGQpLmFydGlmaWNpYWwpCiAgI2RlZmluZSBGSUVMRF9CSVRTSVpFKHRoaXNmbGQp ICgodGhpc2ZsZCkuYml0c2l6ZSkKICAKLUBAIC0xMDAyLDcgKzEwOTAsNiBAQCBleHRlcm4gdm9p ZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC0xMDAyLDcgKzEw OTgsNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAq KTsKICAjZGVmaW5lIFRZUEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQT1Mg KFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BI WVNOQU1FKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQgKHRo aXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXN0eXBl LCBuKSBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKQEAg LTc1MTgsNyArNzgyNCwyNiBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICNkZWZp bmUgVFlQRV9GSUVMRF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZ UEVfRklFTEQodGhpc3R5cGUsbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUodGhpc3R5 cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKICAjZGVmaW5lIFRZ UEVfRklFTERfUEFDS0VEKHRoaXN0eXBlLCBuKSAoRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRo aXN0eXBlLG4pKSE9MCkKLUBAIC0xMzMzLDYgKzE0MjAsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBl ICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKK0BAIC0x MTQxLDYgKzEyMzYsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQorICAgICAgKCopICgpIGNhbiBz ZXJ2ZXIgYXMgYSBnZW5lcmljIGZ1bmN0aW9uIHBvaW50ZXIuICAqLworICAgc3RydWN0IHR5cGUg KmJ1aWx0aW5fZnVuY19wdHI7CisgCisrICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIg dG8gZnVuY3Rpb24gKHJldHVybmluZyB2b2lkKScgdHlwZS4KKysgICAgIFRoZSBmaW5hbCB2b2lk IHJldHVybiB0eXBlIGlzIG5vdCBzaWduaWZpY2FudCBmb3IgaXQuICAqLworKyAgc3RydWN0IHR5 cGUgKmJ1aWx0aW5fZnVuY19mdW5jOworKworIAorICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVz LiAgKi8KKyAKK0BAIC0xMTgxLDYgKzEyODAsNyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCisgCisg ICAvKiBUeXBlcyB1c2VkIGZvciBzeW1ib2xzIHdpdGggbm8gZGVidWcgaW5mb3JtYXRpb24uICAq LworICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGV4dF9zeW1ib2w7CisrICBzdHJ1Y3QgdHlwZSAq bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19k YXRhX3N5bWJvbDsKKyAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Vua25vd25fc3ltYm9sOworICAg c3RydWN0IHR5cGUgKm5vZGVidWdfdGxzX3N5bWJvbDsKK0BAIC0xMzM1LDYgKzE0MzUsMTggQEAg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3Qg dHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsK ICAKQEAgLTc1MzcsNyArNzg2Miw3IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAwNjQ0CiAg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB0eXBlICosCiAgCQkJCQlzdHJ1Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUg Kmxvb2t1cF9zdHJpbmdfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAg LTEzNzUsNiArMTQ3NCw4IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKK0BAIC0xMzc3LDYgKzE0ODksOCBAQCBleHRlcm4gaW50 IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKik7CiAgCiAg ZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB2YWx1 ZSAqKTsKICAKQEAgLTc1NDYsNyArNzg3MSw3IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAw NjQ0CiAgLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAqLwogIAogICNkZWZpbmUgTEVOR1RIX01BVENI KGJ2KSAoKGJ2KS0+cmFua1swXSkKLUBAIC0xNDM3LDEwICsxNTM4LDExIEBAIGV4dGVybiB2b2lk IG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKK0BAIC0xNDM5LDEwICsxNTUz LDExIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsK ICAKICBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpOwogIApAQCAtNzYxMSw2ICs3OTM2LDc4IEBAIGluZGV4IDUzMjE0MDEuLmIx ODgyYTIgMTAwNjQ0CiAgCiAgICAvKiBXZSBkaWRuJ3QgZmluZCBpdDsgcHJpbnQgdGhlIHJhdyBk YXRhLiAgKi8KICAgIGlmICh2Yml0KQorZGlmZiAtLWdpdCBhL2dkYi9ocHBhLWxpbnV4LXRkZXAu YyBiL2dkYi9ocHBhLWxpbnV4LXRkZXAuYworaW5kZXggZWJmYzJmNS4uZTQwMTA1YiAxMDA2NDQK Ky0tLSBhL2dkYi9ocHBhLWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2hwcGEtbGludXgtdGRlcC5j CitAQCAtMzIsNiArMzIsNyBAQAorICNpbmNsdWRlICJyZWdzZXQuaCIKKyAjaW5jbHVkZSAicmVn Y2FjaGUuaCIKKyAjaW5jbHVkZSAiaHBwYS10ZGVwLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAu aCIKKyAKKyAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgorIAorQEAgLTUxMyw3ICs1MTQsMjEgQEAg aHBwYV9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAorIAorICAgcmV0dXJuIE5VTEw7CisgfQorLQwKKysKKytzdGF0aWMgQ09SRV9BRERSCisr aHBwYTMyX2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKKysJCQkJCSBDT1JFX0FERFIgYWRkciwKKysJCQkJCSBzdHJ1Y3QgdGFyZ2V0X29w cyAqdGFyZykKKyt7CisrICBDT1JFX0FERFIgcGMgPSBocHBhMzJfY29udmVydF9mcm9tX2Z1bmNf cHRyX2FkZHIgKGdkYmFyY2gsIGFkZHIsIHRhcmcpOworKyAgQ09SRV9BRERSIHJlc29sdmVkOwor KworKyAgcmVzb2x2ZWQgPSBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRyIChnZGJhcmNo LCBhZGRyLCBwYyk7CisrICBpZiAocmVzb2x2ZWQgIT0gcGMpCisrICAgIHBjID0gaHBwYTMyX2Nv bnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCByZXNvbHZlZCwgdGFyZyk7CisrCisr ICByZXR1cm4gcGM7CisrfQorIAorIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zLiAgKi8KKyBleHRl cm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2hwcGFfbGludXhfdGRlcDsKK0BA IC01NTUsNiArNTcwLDEwIEBAIGhwcGFfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2lu Zm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICAvKiBFbmFibGUgVExTIHN1cHBv cnQuICAqLworICAgc2V0X2dkYmFyY2hfZmV0Y2hfdGxzX2xvYWRfbW9kdWxlX2FkZHJlc3MgKGdk YmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Zy NF9mZXRjaF9vYmpmaWxlX2xpbmtfbWFwKTsKKysKKysgIGlmICh0ZGVwLT5ieXRlc19wZXJfYWRk cmVzcyA9PSA0KQorKyAgICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAo Z2RiYXJjaCwKKysJCQkJICAgICAgIGhwcGEzMl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkcik7CisgfQorIAorIHZvaWQKK2RpZmYgLS1naXQgYS9nZGIvaHBwYS10ZGVwLmMgYi9nZGIv aHBwYS10ZGVwLmMKK2luZGV4IGEwNjY1ZWYuLjM0N2ZiZTQgMTAwNjQ0CistLS0gYS9nZGIvaHBw YS10ZGVwLmMKKysrKyBiL2dkYi9ocHBhLXRkZXAuYworQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGhw cGE2NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdHlwZSAq ZnVuY190eXBlLAorIH0KKyAMCisgCistc3RhdGljIENPUkVfQUREUgorK0NPUkVfQUREUgorIGhw cGEzMl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IENPUkVfQUREUiBhZGRyLAorIAkJCQkgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKKyB7Citk aWZmIC0tZ2l0IGEvZ2RiL2hwcGEtdGRlcC5oIGIvZ2RiL2hwcGEtdGRlcC5oCitpbmRleCBlMmQ4 NzUyLi5jNjI2NjM3IDEwMDY0NAorLS0tIGEvZ2RiL2hwcGEtdGRlcC5oCisrKysgYi9nZGIvaHBw YS10ZGVwLmgKK0BAIC0yNDYsNCArMjQ2LDggQEAgZXh0ZXJuIGludCBocHBhX2luX3NvbGliX2Nh bGxfdHJhbXBvbGluZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJCQkgIENPUkVfQURE UiBwYywgY2hhciAqbmFtZSk7CisgZXh0ZXJuIENPUkVfQUREUiBocHBhX3NraXBfdHJhbXBvbGlu ZV9jb2RlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBDT1JFX0FERFIgcGMpOworIAorK2V4dGVybiBD T1JFX0FERFIgaHBwYTMyX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKKysJCQkJCQkgICAgQ09SRV9BRERSIGFkZHIsCisrCQkJCQkJICAgIHN0cnVj dCB0YXJnZXRfb3BzICp0YXJnKTsKKysKKyAjZW5kaWYgIC8qIGhwcGEtdGRlcC5oICovCiBkaWZm IC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwogaW5k ZXggZmY4MzdmMi4uMTcxMDQ4NyAxMDA2NDQKIC0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCkBA IC03NjQ1LDYgKzgwNDIsMjAgQEAgaW5kZXggZmY4MzdmMi4uMTcxMDQ4NyAxMDA2NDQKICAgIGkz ODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAoNCk7CiAgCiAgICAvKiBPdmVycmlkZSB0aGUg ZGVmYXVsdCBwdHJhY2UgcmVzdW1lIG1ldGhvZC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYt bGludXgtdGRlcC5jIGIvZ2RiL2kzODYtbGludXgtdGRlcC5jCitpbmRleCA1YWNkMjI5Li5hZWMx NzM2IDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbGludXgtdGRlcC5jCisrKysgYi9nZGIvaTM4Ni1s aW51eC10ZGVwLmMKK0BAIC03OTgsNiArNzk4LDkgQEAgaTM4Nl9saW51eF9pbml0X2FiaSAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaTM4Nl9saW51eF9nZXRfc3lzY2FsbF9udW1iZXIp OworIAorICAgc2V0X2dkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZSAoZ2RiYXJjaCwgbGludXhfZ2V0 X3NpZ2luZm9fdHlwZSk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp OworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXBy b3RvdHlwZXMuICAqLwogZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5jIGIvZ2RiL2kzODYtbmF0 LmMKIGluZGV4IGZhMGNjZTYuLjQyZGZkMWMgMTAwNjQ0CiAtLS0gYS9nZGIvaTM4Ni1uYXQuYwpA QCAtNzY5OCw2ICs4MTA5LDUzIEBAIGluZGV4IDczMTdlN2QuLmVhOTE0YTUgMTAwNjQ0CiAgICAg IGludCBkZWJ1Z19yZWdpc3Rlcl9sZW5ndGg7CiAgICB9OwogIAorZGlmZiAtLWdpdCBhL2dkYi9p YTY0LWxpbnV4LXRkZXAuYyBiL2dkYi9pYTY0LWxpbnV4LXRkZXAuYworaW5kZXggYjEyZjI4Mi4u OGRkYjI0YSAxMDA2NDQKKy0tLSBhL2dkYi9pYTY0LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2lh NjQtbGludXgtdGRlcC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJvc2FiaS5oIgor ICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCisgI2luY2x1ZGUgInN5bXRhYi5oIgorKyNpbmNsdWRl ICJsaW51eC10ZGVwLmgiCisgCisgLyogVGhlIHNpZ3RyYW1wIGNvZGUgaXMgaW4gYSBub24tcmVh ZGFibGUgKGV4ZWN1dGFibGUtb25seSkgcmVnaW9uCisgICAgb2YgbWVtb3J5IGNhbGxlZCB0aGUg YGBnYXRlIHBhZ2UnJy4gIFRoZSBhZGRyZXNzZXMgaW4gcXVlc3Rpb24KK0BAIC0xMzksNiArMTQw LDkgQEAgaWE2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgIC8qIEVuYWJsZSBUTFMgc3VwcG9ydC4gICovCisgICBz ZXRfZ2RiYXJjaF9mZXRjaF90bHNfbG9hZF9tb2R1bGVfYWRkcmVzcyAoZ2RiYXJjaCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdnI0X2ZldGNoX29iamZp bGVfbGlua19tYXApOworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIgKGdkYmFyY2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsK KyB9CisgCisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90 b3R5cGVzLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwor aW5kZXggZTczNmZhYS4uOGVjMDI2YiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZjYWxsLmMKKysrKyBi L2dkYi9pbmZjYWxsLmMKK0BAIC0yNTIsOSArMjUyLDE3IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAo c3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKKyAgICAg ICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKKyAJICB8fCBUWVBFX0NP REUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQorIAl7CistCSAgZnVuYWRkciA9IGdkYmFy Y2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCistCQkJCQkJ CSZjdXJyZW50X3RhcmdldCk7CistCSAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0 eXBlKTsKKysJICBDT1JFX0FERFIgZnVuYWRkcjI7CisrCisrCSAgZnVuYWRkcjIgPSBnZGJhcmNo X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBmdW5hZGRyLAorKwkJCQkJCQkg JmN1cnJlbnRfdGFyZ2V0KTsKKysKKysJICAvKiBJZiBUWVBFX0dOVV9JRlVOQyBpcyBjdXJyZW50 bHkgbm90IHJlc29sdmFibGUga2VlcCBpdHMgdHlwZS4gICovCisrCSAgaWYgKGZ1bmFkZHIyICE9 IGZ1bmFkZHIgfHwgIVRZUEVfR05VX0lGVU5DIChmdHlwZSkpCisrCSAgICB7CisrCSAgICAgIGZ1 bmFkZHIgPSBmdW5hZGRyMjsKKysJICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUg KGZ0eXBlKTsKKysJICAgIH0KKyAJfQorICAgICB9CisgICBlbHNlIGlmIChjb2RlID09IFRZUEVf Q09ERV9JTlQpCiBkaWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCiBpbmRl eCBmOTlhNGFlLi41NTk5OTA4IDEwMDY0NAogLS0tIGEvZ2RiL2luZmNtZC5jCkBAIC04NDE5LDI0 ICs4ODc3LDk3IEBAIGluZGV4IDdmYzk1ODQuLmIyODZkZmQgMTAwNjQ0CiArICAgIHsKICsgICAg ICBnZGJfYXNzZXJ0ICghaXNfbHdwIChpbmZlcmlvcl9wdGlkKSk7CiArCi0rICAgICAgcmV0dmFs IHw9IGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOwotKyAgICB9CisrICAgICAg cmV0dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOworKyAgICB9Cisr CisrICByZXR1cm4gcmV0dmFsOworK30KKysKKyAvKiBXYWl0IHVudGlsIExQIGlzIHN0b3BwZWQu ICAqLworIAorIHN0YXRpYyBpbnQKK0BAIC01NTAwLDYgKzU1MzMsOCBAQCBsaW51eF9uYXRfYWRk X3RhcmdldCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCisgICB0LT50b190aHJlYWRfYWRkcmVzc19z cGFjZSA9IGxpbnV4X25hdF90aHJlYWRfYWRkcmVzc19zcGFjZTsKKyAgIHQtPnRvX3N0b3BwZWRf Ynlfd2F0Y2hwb2ludCA9IGxpbnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50 b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsK KysgIGlmIChsaW51eF9vcHMtPnRvX2RldGFjaF93YXRjaHBvaW50cykKKysgICAgdC0+dG9fZGV0 YWNoX3dhdGNocG9pbnRzID0gbGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50czsKKyAKKyAgIHQt PnRvX2Nhbl9hc3luY19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOworICAgdC0+dG9faXNfYXN5 bmNfcCA9IGxpbnV4X25hdF9pc19hc3luY19wOworZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVw LmMgYi9nZGIvbGludXgtdGRlcC5jCitpbmRleCAwN2ZkNjdjLi4wMmIyMzQyIDEwMDY0NAorLS0t IGEvZ2RiL2xpbnV4LXRkZXAuYworKysrIGIvZ2RiL2xpbnV4LXRkZXAuYworQEAgLTIzLDYgKzIz LDggQEAKKyAjaW5jbHVkZSAiYXV4di5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVk ZSAiZWxmL2NvbW1vbi5oIgorKyNpbmNsdWRlICJ2YWx1ZS5oIgorKyNpbmNsdWRlICJpbmZjYWxs LmgiCisgCisgLyogVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0 aGF0IGRvbid0CisgICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVj dHVyZS4gICovCitAQCAtMTUyLDMgKzE1NCw0MyBAQCBsaW51eF9oYXNfc2hhcmVkX2FkZHJlc3Nf c3BhY2UgKHZvaWQpCisgCisgICByZXR1cm4gdGFyZ2V0X2lzX3VjbGludXg7CisgfQorKworKy8q IENhbGwgZ251LWlmdW5jIHRvIHJlc29sdmUgYnJlYWtwb2ludCBhdCBpdHMgcmV0dXJuZWQgZnVu Y3Rpb24uICAqLworKworK0NPUkVfQUREUgorK2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9w dHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgZnVuY19wdHIsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIHBjKQorK3sKKysgIHN0cnVjdCB0 eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVu Y19mdW5jOworKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sOworKyAgc3RydWN0IHZh bHVlICpmdW5jdGlvbiwgKmFkZHJlc3M7CisrCisrICBpZiAoIXRhcmdldF9oYXNfZXhlY3V0aW9u KQorKyAgICByZXR1cm4gcGM7CisrCisrICBtc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9s X2J5X3BjIChmdW5jX3B0cik7CisrICBpZiAobXN5bWJvbCA9PSBOVUxMKQorKyAgICByZXR1cm4g cGM7CisrICBpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSAhPSBtc3RfdGV4dF9nbnVfaWZ1bmMp CisrICAgIHJldHVybiBwYzsKKysKKysgIC8qIE5vdCBhdCB0aGUgZ251LWlmdW5jIGVudHJ5IHBv aW50PyAgKi8KKysgIGlmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkgIT0gZnVuY19w dHIpCisrICAgIHJldHVybiBwYzsKKysKKysgIGZ1bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1 bmNfZnVuY190eXBlKTsKKysgIHNldF92YWx1ZV9hZGRyZXNzIChmdW5jdGlvbiwgcGMpOworKwor KyAgLyogZ251LWlmdW5jcyBoYXZlIG5vIGFyZ3VtZW50cy4gIEZVTkNUSU9OIGlzIHRoZSBjb2Rl IGluc3RydWN0aW9uIGFkZHJlc3MKKysgICAgIHdoaWxlIEFERFJFU1MgaXMgYSBmdW5jdGlvbiBk ZXNjcmlwdG9yLiAgKi8KKysgIGFkZHJlc3MgPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0 aW9uLCAwLCBOVUxMKTsKICsKLSsgIHJldHVybiByZXR2YWw7CisrICByZXR1cm4gdmFsdWVfYXNf YWRkcmVzcyAoYWRkcmVzcyk7CiArfQogKwotIC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBlZC4g ICovCisrQ09SRV9BRERSCisrbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkciwKKysJCQkJICBzdHJ1Y3QgdGFyZ2V0 X29wcyAqdGFyZykKKyt7CisrICByZXR1cm4gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0 ciAoZ2RiYXJjaCwgYWRkciwgYWRkcik7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVw LmggYi9nZGIvbGludXgtdGRlcC5oCitpbmRleCBhOGI1MjJiLi4yODIxOTBlIDEwMDY0NAorLS0t IGEvZ2RiL2xpbnV4LXRkZXAuaAorKysrIGIvZ2RiL2xpbnV4LXRkZXAuaAorQEAgLTIyLDQgKzIy LDExIEBACiAgCi0gc3RhdGljIGludAotQEAgLTU1MDAsNiArNTUzMyw4IEBAIGxpbnV4X25hdF9h ZGRfdGFyZ2V0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKLSAgIHQtPnRvX3RocmVhZF9hZGRyZXNz X3NwYWNlID0gbGludXhfbmF0X3RocmVhZF9hZGRyZXNzX3NwYWNlOwotICAgdC0+dG9fc3RvcHBl ZF9ieV93YXRjaHBvaW50ID0gbGludXhfbmF0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKLSAgIHQt PnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzID0gbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNz OwotKyAgaWYgKGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzKQotKyAgICB0LT50b19k ZXRhY2hfd2F0Y2hwb2ludHMgPSBsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzOworIHN0cnVj dCB0eXBlICpsaW51eF9nZXRfc2lnaW5mb190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqKTsKICAKLSAg IHQtPnRvX2Nhbl9hc3luY19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOwotICAgdC0+dG9faXNf YXN5bmNfcCA9IGxpbnV4X25hdF9pc19hc3luY19wOworK0NPUkVfQUREUiBsaW51eF9jb252ZXJ0 X2Zyb21fZnVuY19hbmRfcHRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJCSAgIENP UkVfQUREUiBmdW5jX3B0ciwgQ09SRV9BRERSIHBjKTsKKysKKytDT1JFX0FERFIgbGludXhfY29u dmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCQkJ ICAgIENPUkVfQUREUiBhZGRyLAorKwkJCQkJICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsK KysKKyAjZW5kaWYgLyogbGludXgtdGRlcC5oICovCiBkaWZmIC0tZ2l0IGEvZ2RiL20yLWxhbmcu YyBiL2dkYi9tMi1sYW5nLmMKIGluZGV4IDgwZTliZjkuLjMwNTc3NzQgMTAwNjQ0CiAtLS0gYS9n ZGIvbTItbGFuZy5jCkBAIC04NDQ5LDYgKzg5ODAsMjggQEAgaW5kZXggODBlOWJmOS4uMzA1Nzc3 NCAxMDA2NDQKICAgIG9wX25hbWVfc3RhbmRhcmQsCiAgICBkdW1wX3N1YmV4cF9ib2R5X3N0YW5k YXJkLAogICAgZXZhbHVhdGVfc3ViZXhwX21vZHVsYTIKK2RpZmYgLS1naXQgYS9nZGIvbTMyci1s aW51eC10ZGVwLmMgYi9nZGIvbTMyci1saW51eC10ZGVwLmMKK2luZGV4IDY4MDQ2MDkuLjJjYjFi ZjkgMTAwNjQ0CistLS0gYS9nZGIvbTMyci1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9tMzJyLWxp bnV4LXRkZXAuYworQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgor IAorICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAj aW5jbHVkZSAic29saWItc3ZyNC5oIgorICNpbmNsdWRlICJzeW10YWIuaCIKKyAKK0BAIC00MjIs NiArNDIzLDkgQEAgbTMycl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZv LCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgIC8qIEVuYWJsZSBUTFMgc3VwcG9ydC4gICov CisgICBzZXRfZ2RiYXJjaF9mZXRjaF90bHNfbG9hZF9tb2R1bGVfYWRkcmVzcyAoZ2RiYXJjaCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdnI0X2ZldGNo X29iamZpbGVfbGlua19tYXApOworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNf cHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyKTsKKyB9CisgCisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2lu Zy1wcm90b3R5cGVzLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvbWFjaG9yZWFkLmMgYi9nZGIvbWFj aG9yZWFkLmMKIGluZGV4IDAyYjYxZDMuLjEzYWI1OTUgMTAwNjQ0CiAtLS0gYS9nZGIvbWFjaG9y ZWFkLmMKQEAgLTg2NDEsNiArOTE5NCwxMDEgQEAgaW5kZXggYjIyNzQxMS4uM2I5MzJmMCAxMDA2 NDQKICAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0X2hhbmRsZSAobmFtZSk7 CiAgCiAgICAgICAgdmFyb2JqX3VwZGF0ZV9vbmUgKHZhciwgcHJpbnRfdmFsdWVzLCAxIC8qIGV4 cGxpY2l0ICovKTsKK2RpZmYgLS1naXQgYS9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMgYi9n ZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMKK2luZGV4IGE2OTFiNjIuLmQ2Nzk1MTYgMTAwNjQ0 CistLS0gYS9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9taWNyb2JsYXpl LWxpbnV4LXRkZXAuYworQEAgLTM1LDYgKzM1LDcgQEAKKyAjaW5jbHVkZSAidHJhZC1mcmFtZS5o IgorICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKKyAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIK KysjaW5jbHVkZSAibGludXgtdGRlcC5oIgorIAorIAorIHN0YXRpYyBpbnQKK0BAIC0xMzMsNiAr MTM0LDkgQEAgbWljcm9ibGF6ZV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBp bmZvLAorICAgLyogVHJhbXBvbGluZXMuICAqLworICAgdHJhbXBfZnJhbWVfcHJlcGVuZF91bndp bmRlciAoZ2RiYXJjaCwKKyAJCQkJJm1pY3JvYmxhemVfbGludXhfc2lnaGFuZGxlcl90cmFtcF9m cmFtZSk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAK KyB2b2lkCitkaWZmIC0tZ2l0IGEvZ2RiL21pbnN5bXMuYyBiL2dkYi9taW5zeW1zLmMKK2luZGV4 IDI4N2Y5ZGUuLjFmZTBmYmUgMTAwNjQ0CistLS0gYS9nZGIvbWluc3ltcy5jCisrKysgYi9nZGIv bWluc3ltcy5jCitAQCAtMzMxLDggKzMzMSw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0 IChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZikKKyAJICAgICAgIG1zeW1i b2wgPSBtc3ltYm9sLT5oYXNoX25leHQpCisgCSAgICB7CisgCSAgICAgIGlmIChzdHJjbXAgKFNZ TUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLCBuYW1lKSA9PSAwICYmCistCQkgIChNU1lNQk9M X1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0IHx8CistCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1i b2wpID09IG1zdF9maWxlX3RleHQpKQorKwkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBt c3RfdGV4dAorKwkJICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVf aWZ1bmMKKysJCSAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkp CisgCQl7CisgCQkgIHN3aXRjaCAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSkKKyAJCSAgICB7CitA QCAtNjk0LDYgKzY5NSwxNiBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQURE UiBwYykKKyAgIHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMs IE5VTEwpOworIH0KKyAKKysvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9u IGltcGxlbWVudGluZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KKysKKytpbnQKKytpbl9nbnVf aWZ1bmNfc3R1YiAoQ09SRV9BRERSIHBjKQorK3sKKysgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq bXN5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMpOworKworKyAgcmV0dXJu IG1zeW1ib2wgJiYgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7 CisrfQorKworIC8qIEZpbmQgdGhlIG1pbmltYWwgc3ltYm9sIG5hbWVkIE5BTUUsIGFuZCByZXR1 cm4gYm90aCB0aGUgbWluc3ltCisgICAgc3RydWN0IGFuZCBpdHMgb2JqZmlsZS4gIFRoaXMgb25s eSBjaGVja3MgdGhlIGxpbmthZ2UgbmFtZS4gIFNldHMKKyAgICAqT0JKRklMRV9QIGFuZCByZXR1 cm5zIHRoZSBtaW5pbWFsIHN5bWJvbCwgaWYgaXQgaXMgZm91bmQuICBJZiBpdAorQEAgLTc2Myw2 ICs3NzQsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwg Q09SRV9BRERSIGFkZHJlc3MsCisgICBzd2l0Y2ggKG1zX3R5cGUpCisgICAgIHsKKyAgICAgY2Fz ZSBtc3RfdGV4dDoKKysgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6CisgICAgIGNhc2UgbXN0 X2ZpbGVfdGV4dDoKKyAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToKKyAgICAgICBzZWN0 aW9uID0gU0VDVF9PRkZfVEVYVCAob2JqZmlsZSk7CitAQCAtMTIyOCw3ICsxMjQwLDggQEAgZmlu ZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBDT1JF X0FERFIgcGMpCisgICAgIHsKKyAgICAgICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1zeW1ib2wp CisgICAgICAgeworLQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwlp ZiAoKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKKysJICAgIHx8IE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQorIAkgICAgJiYgc3RyY21wIChT WU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKKyAJCSAgICAgICBTWU1CT0xfTElOS0FHRV9O QU1FICh0c3ltYm9sKSkgPT0gMCkKKyAJICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1z eW1ib2wpOworZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LXRkZXAuYyBiL2dkYi9taXBzLWxp bnV4LXRkZXAuYworaW5kZXggNmJiNGViNi4uMmIwNzk0MiAxMDA2NDQKKy0tLSBhL2dkYi9taXBz LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL21pcHMtbGludXgtdGRlcC5jCitAQCAtMzgsNiArMzgs NyBAQAorICNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisgI2luY2x1ZGUgIm1pcHMt bGludXgtdGRlcC5oIgorICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCisrI2luY2x1ZGUgImxpbnV4 LXRkZXAuaCIKKyAKKyBzdGF0aWMgc3RydWN0IHRhcmdldF9zb19vcHMgbWlwc19zdnI0X3NvX29w czsKKyAKK0BAIC0xMjI1LDYgKzEyMjYsOSBAQCBtaXBzX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvIGluZm8sCisgCXRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0dXJlLCB0 ZGVzY19kYXRhLCBNSVBTX1JFU1RBUlRfUkVHTlVNLAorIAkJCQkgInJlc3RhcnQiKTsKKyAgICAg fQorKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs CisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgLyog UHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8K IGRpZmYgLS1naXQgYS9nZGIvbWlwc3JlYWQuYyBiL2dkYi9taXBzcmVhZC5jCiBpbmRleCA0ZWY4 MTdlLi4xYzUzNTc0IDEwMDY0NAogLS0tIGEvZ2RiL21pcHNyZWFkLmMKQEAgLTg2NTMsNiArOTMw MSw2NyBAQCBpbmRleCA0ZWY4MTdlLi4xYzUzNTc0IDEwMDY0NAogICAgbWlwc2NvZmZfc3ltZmls ZV9maW5pc2gsCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xlYW51cCAqLwog ICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiBkdW1teSBGSVhNRSB0 aWwgaW1wbGVtIHN5bSByZWxvYyAqLwogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBz eW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KK2RpZmYgLS1naXQgYS9n ZGIvbW4xMDMwMC1saW51eC10ZGVwLmMgYi9nZGIvbW4xMDMwMC1saW51eC10ZGVwLmMKK2luZGV4 IGQ0NjAyYTQuLjdiYmE3MDcgMTAwNjQ0CistLS0gYS9nZGIvbW4xMDMwMC1saW51eC10ZGVwLmMK KysrKyBiL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYworQEAgLTMyLDYgKzMyLDcgQEAKKyAjaW5j bHVkZSAiZnJhbWUuaCIKKyAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgorICNpbmNsdWRlICJ0cmFt cC1mcmFtZS5oIgorKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCisgCisgI2luY2x1ZGUgPHN0ZGxp Yi5oPgorIAorQEAgLTcxOCw2ICs3MTksOSBAQCBhbTMzX2xpbnV4X2luaXRfb3NhYmkgKHN0cnVj dCBnZGJhcmNoX2luZm8gZ2RiaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgCisgICB0 cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51eF9zaWdmcmFt ZSk7CisgICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51 eF9ydF9zaWdmcmFtZSk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp OworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXBy b3RvdHlwZXMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9vYmpjLWxhbmcuYyBiL2dkYi9vYmpjLWxh bmcuYworaW5kZXggYTA1MGYxNS4uMDRkMWYxYyAxMDA2NDQKKy0tLSBhL2dkYi9vYmpjLWxhbmcu YworKysrIGIvZ2RiL29iamMtbGFuZy5jCitAQCAtMTE3OCwxNiArMTE3OCw2IEBAIGZpbmRfbWV0 aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFiLCBjaGFyIHR5cGUsCisgCisgCSAgUVVJVDsKKyAK Ky0JICAvKiBUaGUgbWluaW1hbCBzeW1ib2wgbWlnaHQgcG9pbnQgdG8gYSBmdW5jdGlvbiBkZXNj cmlwdG9yOworLQkgICAgIHJlc29sdmUgaXQgdG8gdGhlIGFjdHVhbCBjb2RlIGFkZHJlc3MgaW5z dGVhZC4gICovCistCSAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChn ZGJhcmNoLCBwYywKKy0JCQkJCQkgICAmY3VycmVudF90YXJnZXQpOworLQorLQkgIGlmIChzeW10 YWIpCistCSAgICBpZiAocGMgPCBCTE9DS19TVEFSVCAoYmxvY2spIHx8IHBjID49IEJMT0NLX0VO RCAoYmxvY2spKQorLQkgICAgICAvKiBOb3QgaW4gdGhlIHNwZWNpZmllZCBzeW10YWIuICAqLwor LQkgICAgICBjb250aW51ZTsKKy0KKyAJICBzeW1uYW1lID0gU1lNQk9MX05BVFVSQUxfTkFNRSAo bXN5bWJvbCk7CisgCSAgaWYgKHN5bW5hbWUgPT0gTlVMTCkKKyAJICAgIGNvbnRpbnVlOworQEAg LTEyMjMsNiArMTIxMywxNyBAQCBmaW5kX21ldGhvZHMgKHN0cnVjdCBzeW10YWIgKnN5bXRhYiwg Y2hhciB0eXBlLAorIAkgICAgICAoKG5zZWxlY3RvciA9PSBOVUxMKSB8fCAoc3RyY21wIChzZWxl Y3RvciwgbnNlbGVjdG9yKSAhPSAwKSkpCisgCSAgICBjb250aW51ZTsKKyAKKysJICAvKiBUaGUg bWluaW1hbCBzeW1ib2wgbWlnaHQgcG9pbnQgdG8gYSBmdW5jdGlvbiBkZXNjcmlwdG9yOworKwkg ICAgIHJlc29sdmUgaXQgdG8gdGhlIGFjdHVhbCBjb2RlIGFkZHJlc3MgaW5zdGVhZC4gIERlbGF5 IHRoZSBjYWxsIGFzCisrCSAgICAgaXRzIHJlc29sdXRpb24gbWF5IGJlIGV4cGVuc2l2ZS4gICov CisrCSAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBw YywKKysJCQkJCQkgICAmY3VycmVudF90YXJnZXQpOworKworKwkgIGlmIChzeW10YWIpCisrCSAg ICBpZiAocGMgPCBCTE9DS19TVEFSVCAoYmxvY2spIHx8IHBjID49IEJMT0NLX0VORCAoYmxvY2sp KQorKwkgICAgICAvKiBOb3QgaW4gdGhlIHNwZWNpZmllZCBzeW10YWIuICAqLworKwkgICAgICBj b250aW51ZTsKKysKKyAJICBzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CisgCSAgaWYgKHN5 bSAhPSBOVUxMKQorIAkgICAgewogZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29i amZpbGVzLmMKIGluZGV4IDBiMDdlMzcuLjVkZTUzMDAgMTAwNjQ0CiAtLS0gYS9nZGIvb2JqZmls ZXMuYwpAQCAtODc0NSw3ICs5NDU0LDcgQEAgaW5kZXggYzY4OTYyMi4uZWIzYWUxMCAxMDA2NDQK ICAgIEFMTF9QU1BBQ0VfT0JKRklMRVMgKHNzLCBvYmpmaWxlKQkJCVwKICAgICAgQUxMX09CSkZJ TEVfUFNZTVRBQlMgKG9iamZpbGUsIHApCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIv cGFyc2UuYwotaW5kZXggZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQKK2luZGV4IGQ1YTE5OWIuLmMz ZWY5ZTEgMTAwNjQ0CiAtLS0gYS9nZGIvcGFyc2UuYwogKysrIGIvZ2RiL3BhcnNlLmMKIEBAIC02 Miw2ICs2Miw3IEBAIGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9z dGFuZGFyZCA9CkBAIC04NzU2LDcgKzk0NjUsMTkgQEAgaW5kZXggZDVhMTk5Yi4uZDJhMDRjMyAx MDA2NDQKICAgICAgb3BfbmFtZV9zdGFuZGFyZCwKICAgICAgZHVtcF9zdWJleHBfYm9keV9zdGFu ZGFyZCwKICAgICAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkCi1AQCAtODQxLDYgKzg0MiwxMCBA QCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQg ZW5kcG9zLAorQEAgLTUxMSw2ICs1MTIsMTEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBt aW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKKyAgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZp bGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wpOworICAgICAgIGJyZWFrOwor IAorKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKKysgICAgICB3cml0ZV9leHBfZWx0X3R5 cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkKKysJCQkJCSAgICAgICAtPm5vZGVidWdfdGV4dF9n bnVfaWZ1bmNfc3ltYm9sKTsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBtc3RfZGF0YToK KyAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgorICAgICBjYXNlIG1zdF9ic3M6CitAQCAtODQxLDYg Kzg0NywxMCBAQCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpl eHByLCBpbnQgZW5kcG9zLAogICAgICAgIGFyZ3MgPSAxOwogICAgICAgIGJyZWFrOwogIApAQCAt ODc2Nyw3ICs5NDg4LDcgQEAgaW5kZXggZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQKICAgICAgY2Fz ZSBPUF9PQkpDX01TR0NBTEw6CS8qIE9iamVjdGl2ZSBDIG1lc3NhZ2UgKG1ldGhvZCkgY2FsbCAq LwogICAgICAgIG9wbGVuID0gNDsKICAgICAgICBhcmdzID0gMSArIGxvbmdlc3RfdG9faW50IChl eHByLT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7Ci1AQCAtMTM2MSw2ICsxMzY2LDE1MCBA QCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQorQEAgLTEzNjEs NiArMTM3MSwxNTEgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4u LikKICAgIHZhX2VuZCAoYXJncyk7CiAgfQogIApAQCAtODgxNyw4ICs5NTM4LDkgQEAgaW5kZXgg ZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQKICsJY29uc3Qgc3RydWN0IHN5bWJvbCAqY29uc3Qgc3lt Ym9sID0gZWx0c1twb3MgKyAyXS5zeW1ib2w7CiArCWNvbnN0IHN0cnVjdCBvYmpfc2VjdGlvbiAq Y29uc3Qgc2VjdGlvbiA9IFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9sKTsKICsKLSsJLyogQ2hl Y2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4gICovCi0rCWlm IChzZWN0aW9uICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKHNlY3Rpb24tPm9i amZpbGUsIGRhdGEpKQorKwkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2YXJpYWJsZSBpdHNl bGYgaXMgcGxhY2VkLgorKwkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5IGJlIE5V TEwuICAqLworKwlpZiAob2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZ TVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCiArCSAgcmV0dXJuIDE7CiArCiArCS8qIENo ZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJs ZS4gICovCkBAIC05MDAzLDggKzk3MjUsNDIgQEAgaW5kZXggMTBmZjczZC4uNWI2OGY1NiAxMDA2 NDQKICAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5 X3dhdGNocG9pbnQ7CiAgICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9z dG9wcGVkX2RhdGFfYWRkcmVzczsKICAgIHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFu Z2UgPSBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZTsKK2RpZmYgLS1naXQg YS9nZGIvcHBjLWxpbnV4LXRkZXAuYyBiL2dkYi9wcGMtbGludXgtdGRlcC5jCitpbmRleCAzNmNl ZGYxLi4yZDczNmZlIDEwMDY0NAorLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKKysrKyBiL2dk Yi9wcGMtbGludXgtdGRlcC5jCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlICJhcmNoLXV0 aWxzLmgiCisgI2luY2x1ZGUgInNwdS10ZGVwLmgiCisgI2luY2x1ZGUgInhtbC1zeXNjYWxsLmgi CisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAw L3Bvd2VycGMtMzJsLmMiCisgI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWFsdGl2 ZWMzMmwuYyIKK0BAIC02NzIsOCArNjczLDE5IEBAIHBwYzY0X2xpbnV4X2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgICByZXMgPSBiZmRf Z2V0X3NlY3Rpb25fY29udGVudHMgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0aW9uLAorIAkJCQkg ICAgICAmYnVmLCBhZGRyIC0gcy0+YWRkciwgOCk7CisgICAgICAgaWYgKHJlcyAhPSAwKQorLQly ZXR1cm4gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIDgsIGJ5dGVfb3JkZXIpCistCQkt IGJmZF9zZWN0aW9uX3ZtYSAocy0+YmZkLCBzLT50aGVfYmZkX3NlY3Rpb24pICsgcy0+YWRkcjsK KysJeworKwkgIENPUkVfQUREUiBwYywgcmVzb2x2ZWQ7CisrCSAgCisrCSAgcGMgPSBleHRyYWN0 X3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgOCwgYnl0ZV9vcmRlcikKKysJICAgICAgIC0gYmZkX3Nl Y3Rpb25fdm1hIChzLT5iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikgKyBzLT5hZGRyOworKworKwkg IHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRk ciwgcGMpOworKwkgIGlmIChyZXNvbHZlZCAhPSBwYykKKysJICAgIHBjID0gcHBjNjRfbGludXhf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLAorKwkJCQkJCQkg dGFyZyk7CisrCisrCSAgcmV0dXJuIHBjOworKwl9CisgICAgfQorIAorICAgcmV0dXJuIGFkZHI7 CiBkaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwotaW5kZXggODhk YjA4Yi4uMThkYWU5ZSAxMDA2NDQKK2luZGV4IGM4Y2IzNWMuLjE4ZGFlOWUgMTAwNjQ0CiAtLS0g YS9nZGIvcHJpbnRjbWQuYwogKysrIGIvZ2RiL3ByaW50Y21kLmMKIEBAIC00Niw3ICs0Niw2IEBA CkBAIC05MDUwLDcgKzk4MDYsNyBAQCBpbmRleCA4OGRiMDhiLi4xOGRhZTllIDEwMDY0NAogIAwK ICAKICAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgotQEAg LTE4NTksNTIgKzE4NzksNiBAQCBkaXNhYmxlX2Rpc3BsYXlfY29tbWFuZCAoY2hhciAqYXJncywg aW50IGZyb21fdHR5KQorQEAgLTE4NTksNTEgKzE4NzksNiBAQCBkaXNhYmxlX2Rpc3BsYXlfY29t bWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogICAgICAgIH0KICB9CiAgCkBAIC05MDgz LDE1ICs5ODM5LDE0IEBAIGluZGV4IDg4ZGIwOGIuLjE4ZGFlOWUgMTAwNjQ0CiAtCXsKIC0JICBj b25zdCBzdHJ1Y3QgYmxvY2sgKmNvbnN0IGJsb2NrID0gZWx0c1tpICsgMV0uYmxvY2s7CiAtCSAg Y29uc3Qgc3RydWN0IHN5bWJvbCAqY29uc3Qgc3ltYm9sID0gZWx0c1tpICsgMl0uc3ltYm9sOwot LQkgIGNvbnN0IHN0cnVjdCBvYmpfc2VjdGlvbiAqY29uc3Qgc2VjdGlvbiA9Ci0tCSAgICBTWU1C T0xfT0JKX1NFQ1RJT04gKHN5bWJvbCk7CiAtCiAtCSAgaWYgKGJsb2NrICE9IE5VTEwKIC0JICAg ICAgJiYgc29saWJfY29udGFpbnNfYWRkcmVzc19wIChzb2xpYiwKIC0JCQkJCSAgIGJsb2NrLT5z dGFydGFkZHIpKQogLQkgICAgcmV0dXJuIDE7CiAtCi0tCSAgaWYgKHNlY3Rpb24gJiYgc2VjdGlv bi0+b2JqZmlsZSA9PSBzb2xpYi0+b2JqZmlsZSkKKy0JICAvKiBTWU1CT0xfT0JKX1NFQ1RJT04g KHN5bWJvbCkgbWF5IGJlIE5VTEwuICAqLworLQkgIGlmIChTWU1CT0xfU1lNVEFCIChzeW1ib2wp LT5vYmpmaWxlID09IHNvbGliLT5vYmpmaWxlKQogLQkgICAgcmV0dXJuIDE7CiAtCX0KIC0gICAg ICBlbmRwb3MgLT0gb3BsZW47CkBAIC05MTAzLDcgKzk4NTgsNyBAQCBpbmRleCA4OGRiMDhiLi4x OGRhZTllIDEwMDY0NAogIC8qIGRpc3BsYXlfY2hhaW4gaXRlbXMgcG9pbnQgdG8gYmxvY2tzIGFu ZCBleHByZXNzaW9ucy4gIFNvbWUgZXhwcmVzc2lvbnMgaW4KICAgICB0dXJuIG1heSBwb2ludCB0 byBzeW1ib2xzLgogICAgIEJvdGggc3ltYm9scyBhbmQgYmxvY2tzIGFyZSBvYnN0YWNrX2FsbG9j J2Qgb24gb2JqZmlsZV9zdGFjaywgYW5kIGFyZQotQEAgLTE5MTYsMTggKzE4OTAsMjAgQEAgZGlz cGxheV91c2VzX3NvbGliX3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpkLAorQEAgLTE5MTUsMTgg KzE4OTAsMjAgQEAgZGlzcGxheV91c2VzX3NvbGliX3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpk LAogIHN0YXRpYyB2b2lkCiAgY2xlYXJfZGFuZ2xpbmdfZGlzcGxheV9leHByZXNzaW9ucyAoc3Ry dWN0IHNvX2xpc3QgKnNvbGliKQogIHsKQEAgLTkxMzQsNyArOTg4OSw3IEBAIGluZGV4IDg4ZGIw OGIuLjE4ZGFlOWUgMTAwNjQ0CiAgfQogIAwKICAKLUBAIC0yODEyLDQgKzI3ODgsNiBAQCBTaG93 IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9s Pi4iKSwgTlVMTCwKK0BAIC0yODExLDQgKzI3ODgsNiBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJj ZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKICAJCQkg ICBOVUxMLAogIAkJCSAgIHNob3dfcHJpbnRfc3ltYm9sX2ZpbGVuYW1lLAogIAkJCSAgICZzZXRw cmludGxpc3QsICZzaG93cHJpbnRsaXN0KTsKQEAgLTE1MjUyLDYgKzE2MDA3LDI4IEBAIGluZGV4 IDFlOGQ0OGUuLjk1MTg1ZDQgMTAwNjQ0CiAgCiAgICAgICAgaWYgKChnZGJfb3V0cHV0X3N5bSA9 PSBOVUxMKSB8fCAoZ2RiX291dHB1dF9sZW5fc3ltID09IE5VTEwpKQogIAlyZXQgPSAtMTsKK2Rp ZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYworaW5k ZXggZGE0MTM3Yi4uZTNmY2IxYSAxMDA2NDQKKy0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKKysr KyBiL2dkYi9zaC1saW51eC10ZGVwLmMKK0BAIC0yNSw2ICsyNSw3IEBACisgCisgI2luY2x1ZGUg ImdsaWJjLXRkZXAuaCIKKyAjaW5jbHVkZSAic2gtdGRlcC5oIgorKyNpbmNsdWRlICJsaW51eC10 ZGVwLmgiCisgCisgI2RlZmluZSBSRUdTeDE2KGJhc2UpIFwKKyAgIHsoYmFzZSksICAgICAgMH0s IFwKK0BAIC04OSw2ICs5MCw5IEBAIHNoX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9p bmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgICAgIHRkZXAtPmNvcmVfZ3Jl Z21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZ3JlZ3NfdGFibGU7CisgICAgICAg dGRlcC0+Y29yZV9mcHJlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZnByZWdz X3RhYmxlOworICAgICB9CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp OworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXBy b3RvdHlwZXMuICAqLwogZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1kYXJ3aW4uYyBiL2dkYi9zb2xp Yi1kYXJ3aW4uYwogaW5kZXggM2M3MDA4OS4uMGVlN2Q4NSAxMDA2NDQKIC0tLSBhL2dkYi9zb2xp Yi1kYXJ3aW4uYwpAQCAtMTUyODgsMTAgKzE2MDY1LDIwIEBAIGluZGV4IDk0YTc3ZmIuLjdlYTY4 ZDIgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29s aWItc3ZyNC5jCi1pbmRleCA4MjZmOGJmLi40ZGVmODhkIDEwMDY0NAoraW5kZXggZTQ5NzM2NC4u ZmViYTIzYyAxMDA2NDQKIC0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKICsrKyBiL2dkYi9zb2xpYi1z dnI0LmMKLUBAIC0xOTYwLDcgKzE5NjAsNiBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyBzdnI0X3Nv X29wczsKK0BAIC0xMjA4LDcgKzEyMDgsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUg KENPUkVfQUREUiBwYykKKyAJICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2gp CisgCSAgfHwgKHBjID49IGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cKKyAJICAgICAgJiYgcGMg PCBpbmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCkKKy0JICB8fCBpbl9wbHRfc2VjdGlvbiAocGMs IE5VTEwpKTsKKysJICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpCisrCSAgfHwgaW5fZ251 X2lmdW5jX3N0dWIgKHBjKSk7CisgfQorIAorIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZE IGFuZCB0YXJnZXQsIGNvbXB1dGUgdGhlIGVudHJ5LXBvaW50CitAQCAtMTk2MSw3ICsxOTYyLDYg QEAgc3RydWN0IHRhcmdldF9zb19vcHMgc3ZyNF9zb19vcHM7CiAgc3RhdGljIHN0cnVjdCBzeW1i b2wgKgogIGVsZl9sb29rdXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCiAgCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKQEAgLTE1Mjk5LDcgKzE2MDg2LDcgQEAg aW5kZXggODI2ZjhiZi4uNGRlZjg4ZCAxMDA2NDQKICAJCSAgICAgICBjb25zdCBkb21haW5fZW51 bSBkb21haW4pCiAgewogICAgYmZkICphYmZkOwotQEAgLTE5NzgsOCArMTk3Nyw3IEBAIGVsZl9s b29rdXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTk3 OSw4ICsxOTc5LDcgQEAgZWxmX2xvb2t1cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKICAgIGlmIChhYmZkID09IE5VTEwgfHwgc2Nhbl9keW50YWcgKERUX1NZTUJP TElDLCBhYmZkLCBOVUxMKSAhPSAxKQogICAgICByZXR1cm4gTlVMTDsKICAKQEAgLTE1MzYwLDYg KzE2MTQ3LDUwIEBAIGluZGV4IGM3YmVhYmEuLmUzMTE2NGMgMTAwNjQ0CiAgICBzb21fc3ltZmls ZV9maW5pc2gsCQkvKiBzeW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8K ICAgIHNvbV9zeW1maWxlX29mZnNldHMsCQkvKiBzeW1fb2Zmc2V0czogIFRyYW5zbGF0ZSBleHQu IHRvIGludC4gcmVsb2NhdGlvbiAqLwogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBz eW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KK2RpZmYgLS1naXQgYS9n ZGIvc3BhcmMtbGludXgtdGRlcC5jIGIvZ2RiL3NwYXJjLWxpbnV4LXRkZXAuYworaW5kZXggZDY1 ZGI2Yy4uZTkxYzBiZiAxMDA2NDQKKy0tLSBhL2dkYi9zcGFyYy1saW51eC10ZGVwLmMKKysrKyBi L2dkYi9zcGFyYy1saW51eC10ZGVwLmMKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgInN5 bXRhYi5oIgorICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1l LmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAic3BhcmMtdGRlcC5o IgorIAorQEAgLTI3OSw2ICsyODAsOSBAQCBzcGFyYzMyX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgZHdhcmYyX2Fw cGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOworIAorICAgc2V0X2dkYmFyY2hfd3JpdGVfcGMgKGdk YmFyY2gsIHNwYXJjX2xpbnV4X3dyaXRlX3BjKTsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZlcnRf ZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21f ZnVuY19wdHJfYWRkcik7CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5j ZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3NwYXJjNjQtbGlu dXgtdGRlcC5jIGIvZ2RiL3NwYXJjNjQtbGludXgtdGRlcC5jCitpbmRleCA4YjdlOTA4Li40ZGU2 ZDljIDEwMDY0NAorLS0tIGEvZ2RiL3NwYXJjNjQtbGludXgtdGRlcC5jCisrKysgYi9nZGIvc3Bh cmM2NC1saW51eC10ZGVwLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgInN5bXRhYi5o IgorICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCisr I2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAic3BhcmM2NC10ZGVwLmgiCisg CitAQCAtMjQ0LDYgKzI0NSw5IEBAIHNwYXJjNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJh cmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICB0ZGVwLT5zdGVwX3Ry YXAgPSBzcGFyYzY0X2xpbnV4X3N0ZXBfdHJhcDsKKyAKKyAgIHNldF9nZGJhcmNoX3dyaXRlX3Bj IChnZGJhcmNoLCBzcGFyYzY0X2xpbnV4X3dyaXRlX3BjKTsKKysKKysgIHNldF9nZGJhcmNoX2Nv bnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkcik7CisgfQorIAwKKyAKIGRpZmYgLS1naXQgYS9nZGIvc3B1LXRk ZXAuYyBiL2dkYi9zcHUtdGRlcC5jCiBpbmRleCBjNmRiOGRjLi43MzU5YjUwIDEwMDY0NAogLS0t IGEvZ2RiL3NwdS10ZGVwLmMKQEAgLTE1NTA2LDEwICsxNjMzNywyMCBAQCBpbmRleCBlZmEwNjll Li5iNTIwYjkzIDEwMDY0NAogIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChz dHJ1Y3Qgb2JqZmlsZSAqKTsKICAKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5 bW1pc2MuYwotaW5kZXggMWYzZWI5ZS4uZDA5NmQ1YyAxMDA2NDQKK2luZGV4IDFmM2ViOWUuLjNm ZjIzOWEgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltbWlzYy5jCiArKysgYi9nZGIvc3ltbWlzYy5jCi1A QCAtMTE0Myw3ICsxMTQzLDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdu b3JlLCBpbnQgZnJvbV90dHkpCitAQCAtMjk0LDYgKzI5NCw5IEBAIGR1bXBfbXN5bWJvbHMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgdWlfZmlsZSAqb3V0ZmlsZSkKKyAJY2FzZSBt c3RfdGV4dDoKKyAJICBtc190eXBlID0gJ1QnOworIAkgIGJyZWFrOworKwljYXNlIG1zdF90ZXh0 X2dudV9pZnVuYzoKKysJICBtc190eXBlID0gJ2knOworKwkgIGJyZWFrOworIAljYXNlIG1zdF9z b2xpYl90cmFtcG9saW5lOgorIAkgIG1zX3R5cGUgPSAnUyc7CisgCSAgYnJlYWs7CitAQCAtMTE0 Myw3ICsxMTQ2LDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdub3JlLCBp bnQgZnJvbV90dHkpCiAgICAgIHdoaWxlIChsZW5ndGgtLSkKICAgICAgICB7CiAgCXN5bSA9IGxv b2t1cF9ibG9ja19zeW1ib2wgKGIsIFNZTUJPTF9MSU5LQUdFX05BTUUgKCpwc3ltKSwKQEAgLTE1 NTE4LDcgKzE2MzU5LDcgQEAgaW5kZXggMWYzZWI5ZS4uZDA5NmQ1YyAxMDA2NDQKICAJaWYgKCFz eW0pCiAgCSAgewogIAkgICAgcHJpbnRmX2ZpbHRlcmVkICgiU3RhdGljIHN5bWJvbCBgIik7Ci1A QCAtMTE2MCw3ICsxMTYwLDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdu b3JlLCBpbnQgZnJvbV90dHkpCitAQCAtMTE2MCw3ICsxMTYzLDcgQEAgbWFpbnRlbmFuY2VfY2hl Y2tfc3ltdGFicyAoY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCiAgICAgIHdoaWxlIChsZW5n dGgtLSkKICAgICAgICB7CiAgCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIFNZTUJPTF9M SU5LQUdFX05BTUUgKCpwc3ltKSwKQEAgLTE1NTI4LDcgKzE2MzY5LDcgQEAgaW5kZXggMWYzZWI5 ZS4uZDA5NmQ1YyAxMDA2NDQKICAJICB7CiAgCSAgICBwcmludGZfZmlsdGVyZWQgKCJHbG9iYWwg c3ltYm9sIGAiKTsKIGRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWlu ZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CitpbmRleCBhZjRlNTAxLi45NTM3ZGFlIDEwMDY0 NAogLS0tIGEvZ2RiL3N5bXRhYi5jCiArKysgYi9nZGIvc3ltdGFiLmMKIEBAIC00Miw2ICs0Miw3 IEBACkBAIC0xNTcxNyw3ICsxNjU1OCw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0 CiAgewogICAgc3RydWN0IHN5bWJvbCAqc3ltOwogICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2Rl Zm4gKmxhbmdkZWY7Ci1AQCAtMTM1NCw1NSArMTM4MSwxOSBAQCBsb29rdXBfc3ltYm9sX2F1eCAo Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorQEAgLTEzNTQsNTYg KzEzODEsMTkgQEAgbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNo YXIgKmxpbmthZ2VfbmFtZSwKICAgIC8qIFNlYXJjaCBzcGVjaWZpZWQgYmxvY2sgYW5kIGl0cyBz dXBlcmlvcnMuICBEb24ndCBzZWFyY2gKICAgICAgIFNUQVRJQ19CTE9DSyBvciBHTE9CQUxfQkxP Q0suICAqLwogIApAQCAtMTU3MzUsMTMgKzE2NTc2LDE0IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkw ZGUgMTAwNjQ0CiAtICAgICAgJiYgYmxvY2sgIT0gTlVMTCkKIC0gICAgewogLSAgICAgIHN0cnVj dCBzeW1ib2wgKnN5bSA9IE5VTEw7CistICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpmdW5jdGlv bl9ibG9jayA9IGJsb2NrOwogLSAgICAgIC8qICd0aGlzJyBpcyBvbmx5IGRlZmluZWQgaW4gdGhl IGZ1bmN0aW9uJ3MgYmxvY2ssIHNvIGZpbmQgdGhlCiAtCSBlbmNsb3NpbmcgZnVuY3Rpb24gYmxv Y2suICAqLwotLSAgICAgIGZvciAoOyBibG9jayAmJiAhQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKTsK LS0JICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jaykpOworLSAgICAgIGZvciAoOyBm dW5jdGlvbl9ibG9jayAmJiAhQkxPQ0tfRlVOQ1RJT04gKGZ1bmN0aW9uX2Jsb2NrKTsKKy0JICAg ZnVuY3Rpb25fYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChmdW5jdGlvbl9ibG9jaykpOwogLQot LSAgICAgIGlmIChibG9jayAmJiAhZGljdF9lbXB0eSAoQkxPQ0tfRElDVCAoYmxvY2spKSkKLS0J c3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIGxhbmdkZWYtPmxhX25hbWVfb2ZfdGhp cywKKy0gICAgICBpZiAoZnVuY3Rpb25fYmxvY2sgJiYgIWRpY3RfZW1wdHkgKEJMT0NLX0RJQ1Qg KGZ1bmN0aW9uX2Jsb2NrKSkpCistCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGZ1bmN0aW9u X2Jsb2NrLCBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMsCiAtCQkJCSAgIE5VTEwsIFZBUl9ET01B SU4pOwogLSAgICAgIGlmIChzeW0pCiAtCXsKQEAgLTE1NzgwLDcgKzE2NjIyLDcgQEAgaW5kZXgg NDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAgIGlmIChzeW0gIT0gTlVMTCkKICAgICAgcmV0dXJu IHN5bTsKICAKLUBAIC0xNDEyLDExICsxNDAzLDExIEBAIGxvb2t1cF9zeW1ib2xfYXV4IChjb25z dCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCitAQCAtMTQxMywxMSArMTQw MywxMSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq bGlua2FnZV9uYW1lLAogICAgICAgZGVzaXJlZCBuYW1lIGFzIGEgZmlsZS1sZXZlbCBzdGF0aWMs IHRoZW4gZG8gcHN5bXRhYi10by1zeW10YWIKICAgICAgIGNvbnZlcnNpb24gb24gdGhlIGZseSBh bmQgcmV0dXJuIHRoZSBmb3VuZCBzeW1ib2wuICovCiAgCkBAIC0xNTc5NCw3ICsxNjYzNiw3IEBA IGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgICBpZiAoc3ltICE9IE5VTEwpCiAgICAg IHJldHVybiBzeW07CiAgCi1AQCAtMTQyNywzMCArMTQxOCw4MSBAQCBsb29rdXBfc3ltYm9sX2F1 eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorQEAgLTE0Mjgs MzAgKzE0MTgsODEgQEAgbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IGNoYXIgKmxpbmthZ2VfbmFtZSwKICAgICBEb24ndCBzZWFyY2ggU1RBVElDX0JMT0NLIG9yIEdM T0JBTF9CTE9DSy4gICovCiAgCiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgpAQCAtMTU4ODcsNyAr MTY3MjksNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAogICAgcmV0dXJuIE5V TEw7CiAgfQotQEAgLTE0ODQsMTMgKzE1MjYsMTIgQEAgbG9va3VwX29iamZpbGVfZnJvbV9ibG9j ayAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaykKK0BAIC0xNDg1LDEzICsxNTI2LDEyIEBAIGxv b2t1cF9vYmpmaWxlX2Zyb21fYmxvY2sgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spCiAgICAg YmxvY2tfZm91bmQgYXBwcm9wcmlhdGVseS4gICovCiAgCiAgc3RydWN0IHN5bWJvbCAqCkBAIC0x NTkwMyw3ICsxNjc0NSw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgICBpZiAo c3ltKQogICAgICB7CiAgICAgICAgYmxvY2tfZm91bmQgPSBibG9jazsKLUBAIC0xNTA2LDcgKzE1 NDcsNiBAQCBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqbGlua2FnZV9uYW1lLAorQEAgLTE1MDcsNyArMTU0Nyw2IEBAIGxvb2t1cF9zeW1ib2xf YXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCiAg c3RydWN0IHN5bWJvbCAqCiAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25z dCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAogIAkJCQkgICBjb25zdCBjaGFyICpuYW1l LApAQCAtMTU5MTEsNyArMTY3NTMsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAog IAkJCQkgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCiAgewogICAgY29uc3Qgc3RydWN0IG9i amZpbGUgKm9iamZpbGU7Ci1AQCAtMTUyNSw3ICsxNTY1LDcgQEAgbG9va3VwX2dsb2JhbF9zeW1i b2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAorQEAg LTE1MjYsNyArMTU2NSw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29u c3Qgc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwKICAgICAgICAgIHsKICAgICAgICAgICAg YnYgPSBCTE9DS1ZFQ1RPUiAocyk7CiAgICAgICAgICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxP Q0sgKGJ2LCBHTE9CQUxfQkxPQ0spOwpAQCAtMTU5MjAsNyArMTY3NjIsNyBAQCBpbmRleCA0MjYz MjZkLi4yMGQ5MGRlIDEwMDY0NAogICAgICAgICAgICBpZiAoc3ltKQogICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgIGJsb2NrX2ZvdW5kID0gYmxvY2s7Ci1AQCAtMTUzNCwxNiArMTU3NCwx NiBAQCBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpm aWxlICptYWluX29iamZpbGUsCitAQCAtMTUzNSwxNiArMTU3NCwxNiBAQCBsb29rdXBfZ2xvYmFs X3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUs CiAgICAgICAgICB9CiAgCiAgICAgICAgLyogTm93IGdvIHRocm91Z2ggcHN5bXRhYnMuICAqLwpA QCAtMTU5NDAsNyArMTY3ODIsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogICAg ICAgICAgICAgICAgcmV0dXJuIGZpeHVwX3N5bWJvbF9zZWN0aW9uIChzeW0sIChzdHJ1Y3Qgb2Jq ZmlsZSAqKW9iamZpbGUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KLUBAIC0xNTU4LDgg KzE1OTgsNyBAQCBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVj dCBvYmpmaWxlICptYWluX29iamZpbGUsCitAQCAtMTU1OSw4ICsxNTk4LDcgQEAgbG9va3VwX2ds b2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpm aWxlLAogICAgIHN0YXRpYyBzeW1ib2xzLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHN5bWJvbCAq CkBAIC0xNTk1MCw3ICsxNjc5Miw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAg CQkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQogIHsKICAgIHN0cnVjdCBzeW1ib2wgKnN5 bTsKLUBAIC0xNTcyLDcgKzE2MTEsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQg YmxvY2tfaW5kZXgsCitAQCAtMTU3Myw3ICsxNjExLDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3lt dGFicyAoaW50IGJsb2NrX2luZGV4LAogICAgewogICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsK ICAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKQEAgLTE1 OTU5LDcgKzE2ODAxLDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAgICAgaWYg KHN5bSkKICAgICAgICB7CiAgCWJsb2NrX2ZvdW5kID0gYmxvY2s7Ci1AQCAtMTU5MCw3ICsxNjI5 LDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAorQEAgLTE1 OTEsNyArMTYyOSw2IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRl eCwKICAKICBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCiAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRh YnMgKGludCBibG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKQEAgLTE1OTY3LDcgKzE2ODA5 LDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJCQkgICAgY29uc3QgZG9tYWlu X2VudW0gZG9tYWluKQogIHsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLUBAIC0xNjAxLDE2ICsx NjM5LDE1IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNv bnN0IGNoYXIgKm5hbWUsCitAQCAtMTYwMiwxNiArMTYzOSwxNSBAQCBsb29rdXBfc3ltYm9sX2F1 eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAogICAgc3RydWN0 IHN5bXRhYiAqczsKICAgIGNvbnN0IGludCBwc3ltdGFiX2luZGV4ID0gKGJsb2NrX2luZGV4ID09 IEdMT0JBTF9CTE9DSyA/IDEgOiAwKTsKICAKQEAgLTE1OTg3LDcgKzE2ODI5LDcgQEAgaW5kZXgg NDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJaWYgKCFzeW0pCiAgCSAgewogIAkgICAgLyogVGhp cyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydCB0cnkKLUBAIC0x NjI3LDcgKzE2NjQsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2lu ZGV4LCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTE2MjgsNyArMTY2NCw3IEBAIGxvb2t1cF9zeW1i b2xfYXV4X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCiAgCSAg ICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwKICAJCQkJICAgICAgIGJsb2NrX2luZGV4 ID09IEdMT0JBTF9CTE9DSyA/CiAgCQkJCSAgICAgICBTVEFUSUNfQkxPQ0sgOiBHTE9CQUxfQkxP Q0spOwpAQCAtMTU5OTYsNyArMTY4MzgsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0 NAogIAkgICAgaWYgKCFzeW0pCiAgCSAgICAgIGVycm9yIChfKCJJbnRlcm5hbDogJXMgc3ltYm9s IGAlcycgZm91bmQgaW4gJXMgcHN5bXRhYiBidXQgbm90IGluIHN5bXRhYi5cbiVzIG1heSBiZSBh biBpbmxpbmVkIGZ1bmN0aW9uLCBvciBtYXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuKGlmIGEg dGVtcGxhdGUsIHRyeSBzcGVjaWZ5aW5nIGFuIGluc3RhbnRpYXRpb246ICVzPHR5cGU+KS4iKSwK ICAJCSAgICAgYmxvY2tfaW5kZXggPT0gR0xPQkFMX0JMT0NLID8gImdsb2JhbCIgOiAic3RhdGlj IiwKLUBAIC0xNjQ2LDcgKzE2ODMsNiBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50 IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTE2NDcsNyArMTY4Myw2IEBAIGxv b2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5h bWUsCiAgCiAgc3RydWN0IHN5bWJvbCAqCiAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAo Y29uc3QgY2hhciAqbmFtZSwKQEAgLTE2MDA0LDcgKzE2ODQ2LDcgQEAgaW5kZXggNDI2MzI2ZC4u MjBkOTBkZSAxMDA2NDQKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogIAkJ CSAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKICB7Ci1AQCAtMTY4MCwxMSArMTcxNiwx MSBAQCBiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAorQEAg LTE2ODEsMTEgKzE3MTYsMTEgQEAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3Qg Y2hhciAqbmFtZSwKICAgICAgIHRoYW4gdGhhdCBvbmUsIHNvIEkgZG9uJ3QgdGhpbmsgd2Ugc2hv dWxkIHdvcnJ5IGFib3V0IHRoYXQgZm9yCiAgICAgICBub3cuICAqLwogIApAQCAtMTYwMTgsNyAr MTY4NjAsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIH0KICAKICAvKiBMb29r dXAgYSBzeW1ib2wgaW4gdGhlIHN0YXRpYyBibG9jayBhc3NvY2lhdGVkIHRvIEJMT0NLLCBpZiB0 aGVyZQotQEAgLTE2OTIsMTQgKzE3MjgsMTMgQEAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2Nh bCAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC0xNjkzLDE0ICsxNzI4LDEzIEBAIGJhc2ljX2xvb2t1 cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCiAgCiAgc3RydWN0IHN5bWJvbCAq CiAgbG9va3VwX3N5bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0xNjAzNCw3ICsx Njg3Niw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgICBlbHNlCiAgICAgIHJl dHVybiBOVUxMOwogIH0KLUBAIC0xNzA5LDcgKzE3NDQsNiBAQCBsb29rdXBfc3ltYm9sX3N0YXRp YyAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC0xNzEwLDcgKzE3NDQsNiBAQCBsb29rdXBfc3ltYm9s X3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKICAKICBzdHJ1Y3Qgc3ltYm9sICoKICBsb29rdXBf c3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE2MDQyLDcgKzE2ODg0LDcgQEAg aW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJCSAgICAgIGNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2ssCiAgCQkgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCiAgewotQEAgLTE3 MTksMTUgKzE3NTMsMTUgQEAgbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUs CitAQCAtMTcyMCwxNSArMTc1MywxNSBAQCBsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hh ciAqbmFtZSwKICAgIC8qIENhbGwgbGlicmFyeS1zcGVjaWZpYyBsb29rdXAgcHJvY2VkdXJlLiAg Ki8KICAgIG9iamZpbGUgPSBsb29rdXBfb2JqZmlsZV9mcm9tX2Jsb2NrIChibG9jayk7CiAgICBp ZiAob2JqZmlsZSAhPSBOVUxMKQpAQCAtMTYwNjEsNyArMTY5MDMsNyBAQCBpbmRleCA0MjYzMjZk Li4yMGQ5MGRlIDEwMDY0NAogIH0KICAKICBpbnQKLUBAIC0xNzUxLDE0ICsxNzg1LDExIEBAIHN5 bWJvbF9tYXRjaGVzX2RvbWFpbiAoZW51bSBsYW5ndWFnZSBzeW1ib2xfbGFuZ3VhZ2UsCitAQCAt MTc1MiwxNCArMTc4NSwxMSBAQCBzeW1ib2xfbWF0Y2hlc19kb21haW4gKGVudW0gbGFuZ3VhZ2Ug c3ltYm9sX2xhbmd1YWdlLAogIH0KICAKICAvKiBMb29rLCBpbiBwYXJ0aWFsX3N5bXRhYiBQU1Qs IGZvciBzeW1ib2wgd2hvc2UgbmF0dXJhbCBuYW1lIGlzIE5BTUUuCkBAIC0xNjA3OCw3ICsxNjky MCw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgewogICAgc3RydWN0IHBhcnRp YWxfc3ltYm9sICp0ZW1wOwogICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoqc3RhcnQsICoqcHN5 bTsKLUBAIC0xODEwLDkgKzE4NDEsNyBAQCBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBw YXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTE4MTEsOSArMTg0MSw3 IEBAIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNv bnN0IGNoYXIgKm5hbWUsCiAgCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8o ImZhaWxlZCBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVjayIpKTsKICAKICAgICAgICB3aGlsZSAo dG9wIDw9IHJlYWxfdG9wCkBAIC0xNjA4OSw3ICsxNjkzMSw3IEBAIGluZGV4IDQyNjMyNmQuLjIw ZDkwZGUgMTAwNjQ0CiAgCXsKICAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xf TEFOR1VBR0UgKCp0b3ApLAogIAkJCQkgICAgIFNZTUJPTF9ET01BSU4gKCp0b3ApLCBkb21haW4p KQotQEAgLTE4MjksMTUgKzE4NTgsOSBAQCBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBw YXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTE4MzAsMTUgKzE4NTgs OSBAQCBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBj b25zdCBjaGFyICpuYW1lLAogICAgICAgIGZvciAocHN5bSA9IHN0YXJ0OyBwc3ltIDwgc3RhcnQg KyBsZW5ndGg7IHBzeW0rKykKICAJewogIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZ TUJPTF9MQU5HVUFHRSAoKnBzeW0pLApAQCAtMTYxMDgsNyArMTY5NTAsNyBAQCBpbmRleCA0MjYz MjZkLi4yMGQ5MGRlIDEwMDY0NAogIAl9CiAgICAgIH0KICAKLUBAIC0xODc5LDIyICsxOTAyLDI1 IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQorQEAg LTE4ODAsMjIgKzE5MDIsMjUgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0 IGNoYXIgKm5hbWUpCiAgICB7CiAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwogICAgICBibG9j ayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKQEAgLTE2MTM5LDcgKzE2 OTgxLDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJaWYgKCFzeW0pCiAgCSAg ewogIAkgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJl c29ydAotQEAgLTE5MDMsNyArMTkyOSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBl IChjb25zdCBjaGFyICpuYW1lKQorQEAgLTE5MDQsNyArMTkyOSw3IEBAIGJhc2ljX2xvb2t1cF90 cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQogIAkgICAgICogdGhlIHBzeW10YWIg Z2V0cyBpdCB3cm9uZyBpbiBzb21lIGNhc2VzLgogIAkgICAgICovCiAgCSAgICBibG9jayA9IEJM T0NLVkVDVE9SX0JMT0NLIChidiwgU1RBVElDX0JMT0NLKTsKQEAgLTE2MTQ4LDcgKzE2OTkwLDcg QEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJICAgIGlmICghc3ltKQogIAkgICAg ICBlcnJvciAoXygiSW50ZXJuYWw6IGdsb2JhbCBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBwc3lt dGFiIGJ1dCBub3QgaW4gc3ltdGFiLlxuXAogICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9u LCBvciBtYXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5MjcsMjEgKzE5NTMsMjYg QEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCitAQCAt MTkyOCwyMSArMTk1MywyNiBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3Qg Y2hhciAqbmFtZSkKICAgIHsKICAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CiAgICAgIGJsb2Nr ID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBTVEFUSUNfQkxPQ0spOwpAQCAtMTYxNzksNyArMTcw MjEsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAlpZiAoIXN5bSkKICAJICB7 CiAgCSAgICAvKiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCBhcyBhIGxhc3QgcmVz b3J0Ci1AQCAtMTk1MCw3ICsxOTgxLDcgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUg KGNvbnN0IGNoYXIgKm5hbWUpCitAQCAtMTk1MSw3ICsxOTgxLDcgQEAgYmFzaWNfbG9va3VwX3Ry YW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCiAgCSAgICAgKiB0aGUgcHN5bXRhYiBn ZXRzIGl0IHdyb25nIGluIHNvbWUgY2FzZXMuCiAgCSAgICAgKi8KICAJICAgIGJsb2NrID0gQkxP Q0tWRUNUT1JfQkxPQ0sgKGJ2LCBHTE9CQUxfQkxPQ0spOwpAQCAtMTYxODgsNyArMTcwMzAsNyBA QCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAkgICAgaWYgKCFzeW0pCiAgCSAgICAg IGVycm9yIChfKCJJbnRlcm5hbDogc3RhdGljIHN5bWJvbCBgJXMnIGZvdW5kIGluICVzIHBzeW10 YWIgYnV0IG5vdCBpbiBzeW10YWIuXG5cCiAgJXMgbWF5IGJlIGFuIGlubGluZWQgZnVuY3Rpb24s IG9yIG1heSBiZSBhIHRlbXBsYXRlIGZ1bmN0aW9uXG5cCi1AQCAtMTk3NSw5ICsyMDA2LDIzIEBA IGZpbmRfbWFpbl9wc3ltdGFiICh2b2lkKQorQEAgLTE5NzYsOSArMjAwNiwyMyBAQCBmaW5kX21h aW5fcHN5bXRhYiAodm9pZCkKICAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0OwogICAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGU7CiAgCkBAIC0xNjIxNCw3ICsxNzA1Niw3IEBAIGluZGV4IDQy NjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgICAgICAgewogIAlyZXR1cm4gKHBzdCk7CiAgICAgICAg fQotQEAgLTE5OTUsMTQgKzIwNDAsMTAgQEAgZmluZF9tYWluX3BzeW10YWIgKHZvaWQpCitAQCAt MTk5NiwxNCArMjA0MCwxMCBAQCBmaW5kX21haW5fcHN5bXRhYiAodm9pZCkKICAgICBzZWFyY2gg b24gdGhlIHN5bWJvbHMuICBFYWNoIHN5bWJvbCB3aGljaCBpcyBtYXJrZWQgYXMgYmVpbmcgYSBP YmpDL0MrKwogICAgIHN5bWJvbCAobGFuZ3VhZ2VfY3BsdXMgb3IgbGFuZ3VhZ2Vfb2JqYyBzZXQp IGhhcyBib3RoIHRoZSBlbmNvZGVkIGFuZAogICAgIG5vbi1lbmNvZGVkIG5hbWVzIHRlc3RlZCBm b3IgYSBtYXRjaC4KQEAgLTE2MjI5LDcgKzE3MDcxLDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBk ZSAxMDA2NDQKICAJCSAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQogIHsKICAgIHN0cnVj dCBkaWN0X2l0ZXJhdG9yIGl0ZXI7Ci1AQCAtMjAxNSw5ICsyMDU2LDcgQEAgbG9va3VwX2Jsb2Nr X3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKK0BA IC0yMDE2LDkgKzIwNTYsNyBAQCBsb29rdXBfYmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLCBjb25zdCBjaGFyICpuYW1lLAogIAkgICBzeW0gPSBkaWN0X2l0ZXJfbmFtZV9u ZXh0IChuYW1lLCAmaXRlcikpCiAgCXsKICAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChT WU1CT0xfTEFOR1VBR0UgKHN5bSksCkBAIC0xNjI0MCw3ICsxNzA4Miw3IEBAIGluZGV4IDQyNjMy NmQuLjIwZDkwZGUgMTAwNjQ0CiAgCSAgICByZXR1cm4gc3ltOwogIAl9CiAgICAgICAgcmV0dXJu IE5VTEw7Ci1AQCAtMjAzNyw5ICsyMDc2LDcgQEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qg c3RydWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yMDM4LDkgKzIwNzYs NyBAQCBsb29rdXBfYmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25z dCBjaGFyICpuYW1lLAogIAkgICBzeW0gPSBkaWN0X2l0ZXJfbmFtZV9uZXh0IChuYW1lLCAmaXRl cikpCiAgCXsKICAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0Ug KHN5bSksCkBAIC0xNjI1MSw3ICsxNzA5MywxNiBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEw MDY0NAogIAkgICAgewogIAkgICAgICBzeW1fZm91bmQgPSBzeW07CiAgCSAgICAgIGlmICghU1lN Qk9MX0lTX0FSR1VNRU5UIChzeW0pKQotQEAgLTMyNjEsNyArMzI5OCw3IEBAIHNlYXJjaF9zeW1i b2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnVtIGtpbmQsIGludCBuZmlsZXMsIGNoYXIgKmZp bGVzW10sCitAQCAtMzIwMSw3ICszMjM3LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4 cCwgZG9tYWluX2VudW0ga2luZCwgaW50IG5maWxlcywgY2hhciAqZmlsZXNbXSwKKyAgIHttc3Rf ZmlsZV9kYXRhLCBtc3Rfc29saWJfdHJhbXBvbGluZSwgbXN0X2FicywgbXN0X3Vua25vd259Owor ICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczRbXQorICAgPQorLSAge21z dF9maWxlX2JzcywgbXN0X3RleHQsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKKysgIHttc3RfZmls ZV9ic3MsIG1zdF90ZXh0X2dudV9pZnVuYywgbXN0X2FicywgbXN0X3Vua25vd259OworICAgZW51 bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGU7CisgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5 cGUgb3VydHlwZTI7CisgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTM7CitAQCAt MzI2Miw3ICszMjk4LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2Vu dW0ga2luZCwgaW50IG5maWxlcywgY2hhciAqZmlsZXNbXSwKICAgICAgIG1hdGNoaW5nIHRoZSBy ZWdleHAuICBUaGF0IHdheSB3ZSBkb24ndCBoYXZlIHRvIHJlcHJvZHVjZSBhbGwgb2YKICAgICAg IHRoZSBtYWNoaW5lcnkgYmVsb3cuICovCiAgCkBAIC0xNjI2MSwxMCArMTcxMTIsMTkgQEAgaW5k ZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAgICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoq Ym91bmQsICoqZ2JvdW5kLCAqKnNib3VuZDsKICAgICAgaW50IGtlZXBfZ29pbmcgPSAxOwogZGlm ZiAtLWdpdCBhL2dkYi9zeW10YWIuaCBiL2dkYi9zeW10YWIuaAotaW5kZXggODAwZmZkOC4uNDI1 M2Y5ZCAxMDA2NDQKK2luZGV4IDE2N2RmZTguLjJmODhlOTMgMTAwNjQ0CiAtLS0gYS9nZGIvc3lt dGFiLmgKICsrKyBiL2dkYi9zeW10YWIuaAotQEAgLTM5Niw3ICszOTYsMTAgQEAgdHlwZWRlZiBl bnVtIGRvbWFpbl9lbnVtX3RhZworQEAgLTI4MCw2ICsyODAsOCBAQCBlbnVtIG1pbmltYWxfc3lt Ym9sX3R5cGUKKyB7CisgICBtc3RfdW5rbm93biA9IDAsCQkvKiBVbmtub3duIHR5cGUsIHRoZSBk ZWZhdWx0ICovCisgICBtc3RfdGV4dCwJCQkvKiBHZW5lcmFsbHkgZXhlY3V0YWJsZSBpbnN0cnVj dGlvbnMgKi8KKysgIG1zdF90ZXh0X2dudV9pZnVuYywJCS8qIEV4ZWN1dGFibGUgY29kZSByZXR1 cm5pbmcgYWRkcmVzcworKwkJCQkgICBvZiBleGVjdXRhYmxlIGNvZGUgKi8KKyAgIG1zdF9kYXRh LAkJCS8qIEdlbmVyYWxseSBpbml0aWFsaXplZCBkYXRhICovCisgICBtc3RfYnNzLAkJCS8qIEdl bmVyYWxseSB1bmluaXRpYWxpemVkIGRhdGEgKi8KKyAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5 IGFic29sdXRlIChub25yZWxvY2F0YWJsZSkgKi8KK0BAIC0zOTYsNyArMzk4LDEwIEBAIHR5cGVk ZWYgZW51bSBkb21haW5fZW51bV90YWcKICAgIEZVTkNUSU9OU19ET01BSU4sCiAgCiAgICAvKiBB bGwgZGVmaW5lZCB0eXBlcyAqLwpAQCAtMTYyNzYsNyArMTcxMzYsNyBAQCBpbmRleCA4MDBmZmQ4 Li40MjUzZjlkIDEwMDY0NAogIH0KICBkb21haW5fZW51bTsKICAKLUBAIC05OTMsNyArOTk2LDYg QEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2wgKGNvbnN0IGNoYXIgKiwgY29u c3Qgc3RydWN0IGJsb2NrICosCitAQCAtOTk0LDcgKzk5OSw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3lt Ym9sICpsb29rdXBfc3ltYm9sIChjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCBibG9jayAqLAog ICAgIHRoYXQgY2FuJ3QgdGhpbmsgb2YgYW55dGhpbmcgYmV0dGVyIHRvIGRvLiAgKi8KICAKICBl eHRlcm4gc3RydWN0IHN5bWJvbCAqYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3Qg Y2hhciAqLApAQCAtMTYyODQsNyArMTcxNDQsNyBAQCBpbmRleCA4MDBmZmQ4Li40MjUzZjlkIDEw MDY0NAogIAkJCQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKICAJCQkJCQkgICAgY29uc3Qg ZG9tYWluX2VudW0pOwogIAotQEAgLTEwMDQsNyArMTAwNiw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3lt Ym9sICpiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICosCitAQCAtMTAw NSw3ICsxMDA5LDYgQEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xvb2t1cF9zeW1ib2xf bm9ubG9jYWwgKGNvbnN0IGNoYXIgKiwKICAgICBpcyBvbmU7IGRvIG5vdGhpbmcgaWYgQkxPQ0sg aXMgTlVMTCBvciBhIGdsb2JhbCBibG9jay4gICovCiAgCiAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wg Kmxvb2t1cF9zeW1ib2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLApAQCAtMTYyOTIsNyArMTcx NTIsNyBAQCBpbmRleCA4MDBmZmQ4Li40MjUzZjlkIDEwMDY0NAogIAkJCQkJICAgIGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2ssCiAgCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsK ICAKLUBAIC0xMDEyLDcgKzEwMTMsNiBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5 bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMTAxMyw3ICsxMDE2LDYgQEAgZXh0 ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1l LAogICAgIG5lY2Vzc2FyeSkuICAqLwogIAogIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBf c3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE2MzAwLDcgKzE3MTYwLDcgQEAg aW5kZXggODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQKICAJCQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAogIAkJCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7CiAgCi1AQCAt MTAyMSwyMSArMTAyMSwxOCBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9n bG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMTAyMiwyMSArMTAyNCwxOCBAQCBleHRlcm4g c3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCiAg ICAgd2lsbCBmaXggdXAgdGhlIHN5bWJvbCBpZiBuZWNlc3NhcnkuICAqLwogIAogIGV4dGVybiBz dHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3QgY2hhciAqbmFtZSwK QEAgLTE2MzIyLDcgKzE3MTgyLDcgQEAgaW5kZXggODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQKICAJ CQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtKTsKICAKICAvKiBsb29rdXAgYSBbc3RydWN0LCB1bmlv biwgZW51bV0gYnkgbmFtZSwgd2l0aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCi1AQCAtMTA2NSw2 ICsxMDYyLDggQEAgZXh0ZXJuIHZvaWQgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpOwor QEAgLTEwNjYsNiArMTA2NSw4IEBAIGV4dGVybiB2b2lkIGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hl ICh2b2lkKTsKICAKICAvKiBmcm9tIHN5bXRhYi5jOiAqLwogIApAQCAtMTYzMzEsNyArMTcxOTEs MTYgQEAgaW5kZXggODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQKICAvKiBsb29rdXAgcGFydGlhbCBz eW1ib2wgdGFibGUgYnkgZmlsZW5hbWUgKi8KICAKICBleHRlcm4gc3RydWN0IHBhcnRpYWxfc3lt dGFiICpsb29rdXBfcGFydGlhbF9zeW10YWIgKGNvbnN0IGNoYXIgKik7Ci1AQCAtMTM2Nyw3ICsx MzY2LDYgQEAgZXh0ZXJuIC8qY29uc3QgKi8gY2hhciAqbWFpbl9uYW1lICh2b2lkKTsKK0BAIC0x MTU5LDYgKzExNjAsOCBAQCBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWlu aW1hbF9zeW1ib2xfYnlfcGNfbmFtZQorIAorIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Kmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoQ09SRV9BRERSKTsKKyAKKytleHRlcm4gaW50 IGluX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpOworKworIGV4dGVybiBzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKgorICAgICBsb29rdXBfbWluaW1hbF9zeW1ib2xfYW5kX29iamZpbGUgKGNv bnN0IGNoYXIgKiwKKyAJCQkJICAgICAgIHN0cnVjdCBvYmpmaWxlICoqKTsKK0BAIC0xMzcyLDcg KzEzNzUsNiBAQCBleHRlcm4gLypjb25zdCAqLyBjaGFyICptYWluX25hbWUgKHZvaWQpOwogIC8q IENoZWNrIGdsb2JhbCBzeW1ib2xzIGluIG9iamZpbGUuICAqLwogIHN0cnVjdCBzeW1ib2wgKmxv b2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCiAgCQkJCQkJICBjb25zdCBjaGFyICpuYW1lLApAQCAtMTc2MjYsMjcgKzE4NDk1LDI1 MCBAQCBpbmRleCBlY2MzMjg5Li5mNzlhZDQwIDEwMDY0NAogKyAgfSB1bmJvdW5kOwogKyNlbmRp ZgogKwotIGludAotIG1haW4gKHZvaWQpCi0gewotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXJyYXlpZHguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5l eHAKLWluZGV4IDBlZjZjNGIuLjMzMGVkODcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlk eC5leHAKLUBAIC01OSw0ICs1OSwxMiBAQCBnZGJfdGVzdCAicHJpbnQgYXJyYXkiIFwKLSAgICAg ICAgICAiXFx7XFxcWzBcXFxdID0gMSwgXFxcWzFcXFxdID0gMiwgXFxcWzJcXFxdID0gMywgXFxc WzNcXFxdID0gNFxcfSIgXAotICAgICAgICAgICJQcmludCBhcnJheSB3aXRoIGFycmF5LWluZGV4 ZXMgb24iCi0gCi0tCi0rc2V0IHRlc3QgInAgdW5ib3VuZC5hID09ICZ1bmJvdW5kLmFcWzBcXSIK KyBpbnQKKyBtYWluICh2b2lkKQorIHsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCitp bmRleCAwZWY2YzRiLi4zMzBlZDg3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9hcnJheWlkeC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhw CitAQCAtNTksNCArNTksMTIgQEAgZ2RiX3Rlc3QgInByaW50IGFycmF5IiBcCisgICAgICAgICAg Ilxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxcXFsyXFxcXSA9IDMsIFxcXFszXFxc XSA9IDRcXH0iIFwKKyAgICAgICAgICAiUHJpbnQgYXJyYXkgd2l0aCBhcnJheS1pbmRleGVzIG9u IgorIAorLQorK3NldCB0ZXN0ICJwIHVuYm91bmQuYSA9PSAmdW5ib3VuZC5hXFswXF0iCisrZ2Ri X3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIiA9IDFcclxuJGdkYl9wcm9t cHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJObyBzeW1ib2wgXCJ1bmJv dW5kXCIgaW4gY3VycmVudCBjb250ZXh0LlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXVuc3VwcG9y dGVkICIkdGVzdCAobm8gR0NDKSIKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251 LWlmdW5jLWxpYi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjA0Y2U5 OQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMt bGliLmMKK0BAIC0wLDAgKzEsNTQgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrdHlwZWRlZiBpbnQgKCpmaW5hbF90 KSAoaW50IGFyZyk7CisrCisrc3RhdGljIGludAorK2luaXRfc3R1YiAoaW50IGFyZykKKyt7Cisr ICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludAorK2ZpbmFsIChpbnQgYXJnKQorK3sKKysg IHJldHVybiBhcmcgKyAxOworK30KKysKKytzdGF0aWMgdm9sYXRpbGUgaW50IGdudV9pZnVuY19p bml0aWFsaXplZDsKKysKKyt2b2lkCisrZ251X2lmdW5jX3ByZSAodm9pZCkKKyt7CisrICBhc3Nl cnQgKCFnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQpOworKworKyAgZ251X2lmdW5jX2luaXRpYWxpemVk ID0gMTsKKyt9CisrCisrZmluYWxfdCBnbnVfaWZ1bmNYICh2b2lkKSBhc20gKCJnbnVfaWZ1bmMi KTsKKythc20gKCIudHlwZSBnbnVfaWZ1bmMsIEBnbnVfaW5kaXJlY3RfZnVuY3Rpb24iKTsKKysK KytmaW5hbF90CisrZ251X2lmdW5jWCAodm9pZCkKKyt7CisrICBpZiAoIWdudV9pZnVuY19pbml0 aWFsaXplZCkKKysgICAgcmV0dXJuIGluaXRfc3R1YjsKKysgIGVsc2UKKysgICAgcmV0dXJuIGZp bmFsOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYworbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLmU0YTgyM2QKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdo dCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisr ZXh0ZXJuIGludCBnbnVfaWZ1bmMgKGludCBhcmcpOworK2V4dGVybiB2b2lkIGdudV9pZnVuY19w cmUgKHZvaWQpOworKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgaW50IGk7CisrCisrICBn bnVfaWZ1bmNfcHJlICgpOworKyAgCisrICBpID0gZ251X2lmdW5jICgxKTsJLyogYnJlYWstYXQt Y2FsbCAqLworKyAgYXNzZXJ0IChpID09IDIpOworKworKyAgZ251X2lmdW5jICgyKTsJLyogYnJl YWstYXQtbmV4dGNhbGwgKi8KKysKKysgIHJldHVybiAwOwkvKiBicmVhay1hdC1leGl0ICovCisr fQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLjRiM2FjNDEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAorQEAgLTAsMCArMSwxMTUgQEAKKysjIENvcHlyaWdo dCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYge1tza2lwX3NobGliX3Rlc3RzXX0geworKyAgICBy ZXR1cm4gMAorK30KKysKKytzZXQgdGVzdGZpbGUgImdudS1pZnVuYyIKKytzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQorKworK3NldCBsaWJmaWxlICIke3Rlc3RmaWxlfS1saWIiCisrc2V0IGxpYnNyYyAke2xpYmZp bGV9LmMKKytzZXQgbGliX3NvICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJmaWxlfS5zbworKwor K3NldCBsaWJfbm9kZWJ1Z19zb19iYXNlICR7bGliZmlsZX0tbm9kZWJ1Zy5zbworK3NldCBsaWJf bm9kZWJ1Z19zbyAke29iamRpcn0vJHtzdWJkaXJ9LyR7bGliX25vZGVidWdfc29fYmFzZX0KKysK KysjIHtkZWJ1Z30gcHJvdmlkZXMgRFdBUkYgc3ltYm9sIGdudV9pZnVuY1ggY29uZnVzaW5nIHRo ZSBFTEYgc3ltYm9sCisrIyBnbnVfaWZ1bmMgZHVyaW5nIGFkZHJlc3MtPnN5bWJvbCByZXNvbHV0 aW9uIGZvciBwcmludGluZyB0aGUgc3ltYm9sLgorKyMgU3RpbGwgd2UgbmVlZCBpdCBoZXJlIGZv ciAic3RlcCJwaW5nIGludG8gdGhlIGZ1bmN0aW9uLgorK3NldCBsaWJfb3B0cyBbbGlzdCBkZWJ1 Z10KKytzZXQgbGliX25vZGVidWdfb3B0cyBbbGlzdF0KKytzZXQgZXhlY19vcHRzIFtsaXN0IGRl YnVnIHNobGliPSRsaWJfc29dCisrCisraWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1d IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3Jj ZGlyfS8ke3N1YmRpcn0vJGxpYnNyYyAkbGliX3NvICRsaWJfb3B0c10gIT0gIiIKKysgICAgIHx8 IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRzcmNmaWxlICRiaW5maWxlIGV4ZWN1 dGFibGUgJGV4ZWNfb3B0c10gIT0gIiJ9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21w aWxlIGVpdGhlciAkbGlic3JjIG9yICRzcmNmaWxlLiIKKysgICAgcmV0dXJuIC0xCisrfQorKwor KyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KKysKKytjbGVhbl9yZXN0YXJ0ICR0ZXN0ZmlsZQor K2dkYl9sb2FkX3NobGlicyAke2xpYl9zb30KKysKKytpZiAhW3J1bnRvX21haW5dIHRoZW4gewor KyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFpbiIKKysgICAgcmV0dXJuIDE7CisrfQorKworKyMg VGhlICJpZiIgY29uZGl0aW9uIGlzIGFydGlmaWNhbCB0byB0ZXN0IHJlZ3Jlc3Npb24gb2YgYSBm b3JtYXQgcGF0Y2guCisrZ2RiX2JyZWFrcG9pbnQgIltnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVh ay1hdC1uZXh0Y2FsbCJdIGlmIGkgJiYgZ251X2lmdW5jIChpKSAhPSA0MiIKKysKKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstYXQtY2FsbCJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWF0LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwuKiIKKysK KysjIFRlc3QgR0RCIHdpbGwgYXV0b21hdGljYWxseSBpbmRpcmVjdCB0aGUgY2FsbC4KKysKKytn ZGJfdGVzdCAicCBnbnVfaWZ1bmMgKDMpIiAiID0gNCIKKysKKysjIFRlc3QgR0RCIHdpbGwgc2tp cCB0aGUgZ251X2lmdW5jIHJlc29sdmVyIG9uIGZpcnN0IGNhbGwuCisrCisrZ2RiX3Rlc3QgInN0 ZXAiICJcclxuZmluYWwgLioiCisrCisrIyBUZXN0IEdEQiB3aWxsIG5vdCBicmVhayBiZWZvcmUg dGhlIGZpbmFsIGNob3NlbiBpbXBsZW1lbnRhdGlvbi4KKysKKysjIEFsc28gdGVzdCBhIGZvcm1h dCBwYXRjaCByZWdyZXNzaW9uOgorKyMgQ29udGludWluZy4KKysjIEVycm9yIGluIHRlc3Rpbmcg YnJlYWtwb2ludCBjb25kaXRpb246CisrIyBBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1 ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuCisrIyAKKysjIEJyZWFrcG9pbnQgMiwgbWFpbiAoKSBh dCAuL2dkYi5iYXNlL2dudS1pZnVuYy5jOjMzCisrCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29u dGludWluZy5cclxuXHJcbkJyZWFrcG9pbnQgLiogKGF0fGluKSAuKmJyZWFrLWF0LW5leHRjYWxs LioiIFwKKysJICJjb250aW51ZSB0byBicmVhay1hdC1uZXh0Y2FsbCIKKysKKytnZGJfYnJlYWtw b2ludCAiZ251X2lmdW5jIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJuZXh0Y2Fs bCBnbnVfaWZ1bmMiCisrCisrZ2RiX3Rlc3QgImZyYW1lIiAiIzAgKygweFxbMC05YS1mXF0rIGlu ICspP2ZpbmFsIFxcKC4qIiAibmV4dGNhbGwgZ251X2lmdW5jIHNraXBwZWQiCisrCisrCisrIyBD b21wYXJlIHRoZSB0d28gZGlmZmVyZW50IGFkZHJlc3NlczoKKysKKytnZGJfdGVzdCAicCBnbnVf aWZ1bmMiICIgPSB7PHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAweFxbMC05YS1mXF0r IDxmaW5hbD4iICJwIGdudV9pZnVuYyBleGVjdXRpbmciCisrZ2RiX3Rlc3QgImluZm8gc3ltIGdu dV9pZnVuYyIgImZpbmFsIGluIHNlY3Rpb24gLioiICJpbmZvIHN5bSBnbnVfaWZ1bmMgZXhlY3V0 aW5nIgorKworK3NldCB0ZXN0ICJpbmZvIGFkZHIgZ251X2lmdW5jIgogK2dkYl90ZXN0X211bHRp cGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICIgPSAxXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysg ICAgLXJlICJTeW1ib2wgXCJnbnVfaWZ1bmNcIiBpcyBhdCAoMHhcWzAtOWEtZlxdKykgaW4gLiok Z2RiX3Byb21wdCAkIiB7CiArCXBhc3MgJHRlc3QKICsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJv bCBcInVuYm91bmRcIiBpbiBjdXJyZW50IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJ dW5zdXBwb3J0ZWQgIiR0ZXN0IChubyBHQ0MpIgotKyAgICB9CiArfQorK2dkYl90ZXN0ICJpbmZv IHN5bSAkZXhwZWN0X291dCgxLHN0cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImlu Zm8gc3ltIDxnbnVfaWZ1bmMtYWRkcmVzcz4iCisrCisrIyA8KmdudV9pZnVuYz4gd291bGQgYmUg YW4gaW5jb3JyZWN0IHJlc29sdXRpb24gZnJvbSBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZS4KKysj IFdlIGRvIG5vdCB1c2Uge2RlYnVnfSBidWlsZCBvcHRpb24gZm9yIHRoaXMgcHVycG9zZS4KKysK KytpZiB7IFtnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRsaWJzcmMgJGxp Yl9ub2RlYnVnX3NvICRsaWJfbm9kZWJ1Z19vcHRzXSAhPSAiIn0geworKyAgICB1bnRlc3RlZCAi Q291bGQgbm90IGNvbXBpbGUgZWl0aGVyICRsaWJzcmMuIgorKyAgICByZXR1cm4gLTEKKyt9Cisr CisrY2xlYW5fcmVzdGFydCAkbGliX25vZGVidWdfc29fYmFzZQorKworK2dkYl90ZXN0ICJwIGdu dV9pZnVuYyIgIiA9IHs8dGV4dCBnbnUtaWZ1bmMgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAw eFxbMC05YS1mXF0rIDxnbnVfaWZ1bmM+IiAicCBnbnVfaWZ1bmMgbm90IGV4ZWN1dGluZyB3aXRo b3V0IGRlYnVnIgorK2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1bmMiICJnbnVfaWZ1bmMgaW4g c2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9pZnVuYyBub3QgZXhlY3V0aW5nIHdpdGhvdXQgZGVi dWciCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmll bGQtYWRkcmVzcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQt YWRkcmVzcy5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uZWViN2I4NQpA QCAtMTgzNDIsNiArMTk0MzQsNDggQEAgaW5kZXggNDU0YzZmNC4uOGY4OGFkNyAxMDA2NDQKICBn ZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgYWRkPGludD4oMiwyKSIgInByaW50IGFkZDxpbnQ+KDIs MikiIHsKICAgICAgLXJlICJcXCRcWzAtOVxdKyA9IDRcclxuJGdkYl9wcm9tcHQgJCIgewogIAlw YXNzICJwcmludCBhZGQ8aW50PigyLDIpIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2V4Y2VwdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leGNlcHRpb24uZXhwCitp bmRleCA0Nzg5MGYxLi4wM2M4ODQ3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av ZXhjZXB0aW9uLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhjZXB0aW9uLmV4cAor QEAgLTE0Niw3ICsxNDYsOSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1lIHsK KyAKKyBzZXQgbmFtZSAiYmFja3RyYWNlIGFmdGVyIGZpcnN0IHRocm93IgorIGdkYl90ZXN0X211 bHRpcGxlICJiYWNrdHJhY2UiICRuYW1lIHsKKy0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRo ZXggaW4gfClfX2N4YV90aHJvdy4qI1xbMC05XF0rJHt3c30kaGV4IGluIGZvbyBcXChpPTIwXFwp IGF0IC4qJHtzcmNmaWxlfTpcWzAtOVxdK1xyXG4jXFswLTlcXSske3dzfSRoZXggaW4gbWFpbiBc XCguKlxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuJGdkYl9wcm9tcHQgJCIgeworKyAg ICAtcmUgIi4qI1xbMC05XF0rLipcW1xbOjw6XF1cXV9fY3hhX3Rocm93XFtcWzo+OlxdXF0uKiNc WzAtOVxdKyR7d3N9JGhleCBpbiBmb28gXFwoaT0yMFxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlc XStcclxuI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLioke3NyY2ZpbGV9 OlxbMC05XF0rXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJIyBFaXRoZXIgX19jeHhhYml2MTo6X19j eGFfdGhyb3cgb3IgX19jeGFfdGhyb3cgY2FuIGJlIHByaW50ZWQKKysJIyBkZXBlbmRpbmcgb24g ZGVidWcgaW5mbyBwcmVzZW5jZS4KKyAJcGFzcyAkbmFtZQorICAgICB9CisgfQorQEAgLTE2OCw3 ICsxNzAsNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1lIHsKKyAKKyBzZXQg bmFtZSAiYmFja3RyYWNlIGFmdGVyIGZpcnN0IGNhdGNoIgorIGdkYl90ZXN0X211bHRpcGxlICJi YWNrdHJhY2UiICRuYW1lIHsKKy0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClf X2N4YV9iZWdpbl9jYXRjaC4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQg Liokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIC1yZSAiLiojXFsw LTlcXSsuKlxbXFs6PDpcXVxdX19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05XF0r JHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2Ri X3Byb21wdCAkIiB7CisgCXBhc3MgJG5hbWUKKyAgICAgfQorIH0KK0BAIC0xOTAsNyArMTkyLDcg QEAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkbmFtZSB7CisgCisgc2V0IG5hbWUgImJh Y2t0cmFjZSBhZnRlciBzZWNvbmQgdGhyb3ciCisgZ2RiX3Rlc3RfbXVsdGlwbGUgImJhY2t0cmFj ZSIgJG5hbWUgeworLSAgICAtcmUgIi4qI1xbMC05XF0rJHt3c30oJGhleCBpbiB8KV9fY3hhX3Ro cm93LiojXFswLTlcXSske3dzfSRoZXggaW4gZm9vIFxcKGk9MjBcXCkgYXQgLioke3NyY2ZpbGV9 OlxbMC05XF0rXHJcbiNcWzAtOVxdKyR7d3N9JGhleCBpbiBtYWluIFxcKC4qXFwpIGF0IC4qJHtz cmNmaWxlfTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIC1yZSAiLiojXFswLTlc XSsuKlxbXFs6PDpcXVxdX19jeGFfdGhyb3dcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30kaGV4 IGluIGZvbyBcXChpPTIwXFwpIGF0IC4qJHtzcmNmaWxlfTpcWzAtOVxdK1xyXG4jXFswLTlcXSsk e3dzfSRoZXggaW4gbWFpbiBcXCguKlxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuJGdk Yl9wcm9tcHQgJCIgeworIAlwYXNzICRuYW1lCisgICAgIH0KKyB9CitAQCAtMjEyLDcgKzIxNCw3 IEBAIGdkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgJG5hbWUgeworIAorIHNldCBuYW1lICJi YWNrdHJhY2UgYWZ0ZXIgc2Vjb25kIGNhdGNoIgorIGdkYl90ZXN0X211bHRpcGxlICJiYWNrdHJh Y2UiICRuYW1lIHsKKy0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClfX2N4YV9i ZWdpbl9jYXRjaC4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3Jj ZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIC1yZSAiLiojXFswLTlcXSsu KlxbXFs6PDpcXVxdX19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30k aGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21w dCAkIiB7CisgCXBhc3MgJG5hbWUKKyAgICAgfQorIH0KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQt c2Fscy5leHAKIGluZGV4IDI1ZWM0YTkuLmU0ZmQ1OWIgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAKQEAgLTE4NzMyLDYgKzE5ODY2LDQ4IEBAIGluZGV4 IDAwMDAwMDAuLmVlOWFlZmYKICtnZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAogKyAgIi4qY2F0 Y2ggKC4uLikuKiIgXAogKyAgImFkdmFuY2Utb3Zlci10aHJvdyIKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5jcC9tLXN0YXRpYy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3Rh dGljLmNjCitpbmRleCAyYTBiNjFjLi43Zjk5N2VmIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbS1zdGF0aWMuY2MKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGlj LmNjCitAQCAtMTUsNiArMTUsMTIgQEAgcHJvdGVjdGVkOgorIAorIHB1YmxpYzoKKyAgIGdudV9v YmpfMShhbnRpcXVpdGllcyBhLCBsb25nIGwpIHt9CisrCisrICBsb25nIG1ldGhvZCAoKQorKyAg eworKyAgICBzdGF0aWMgYm9vbCBzdmFyID0gdHJ1ZTsKKysgICAgcmV0dXJuIGtleTI7CisrICB9 CisgfTsKKyAKKyBjb25zdCBib29sIGdudV9vYmpfMTo6dGVzdDsKK0BAIC03MCw1ICs3Niw4IEBA IGludCBtYWluKCkKKyAKKyAgIHRlc3Q0LmR1bW15ID0gdGVzdDQuZWxzZXdoZXJlOworICAgdGVz dDQuZHVtbXkgPSAwOworLSAgcmV0dXJuIHRlc3Q0LmR1bW15OwkvLyBicmVha3BvaW50OiBjb25z dHJ1Y3RzLWRvbmUKKysKKysgIHRlc3QxLm1ldGhvZCAoKTsgLy8gYnJlYWtwb2ludDogY29uc3Ry dWN0cy1kb25lCisrCisrICByZXR1cm4gdGVzdDQuZHVtbXk7CisgfQorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGljLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20t c3RhdGljLmV4cAoraW5kZXggZjIwNzQ2Mi4uN2I0ZTBjYSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL20tc3RhdGljLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbS1z dGF0aWMuZXhwCitAQCAtMTMyLDUgKzEzMiwxMCBAQCBnZGJfdGVzdCAicHJpbnQgdGVzdDQubm93 aGVyZSIgImZpZWxkIG5vd2hlcmUgaXMgbm9uZXhpc3RlbnQgb3IgaGFzIGJlZW4gb3B0aW1pcwor ICMgdGhhdCBHREIncyBjdXJyZW50IGJlaGF2aW9yIGluIHN1Y2ggc2l0dWF0aW9ucyBpcyBlaXRo ZXIgY29uc2lzdGVudAorICMgYWNyb3NzIHBsYXRmb3JtcyBvciBvcHRpbWFsLCBzbyBJJ20gbm90 IGluY2x1ZGluZyBvbmUgbm93LgorIAorKyMgU3RlcCBpbnRvIHRlc3QxLm1ldGhvZCBhbmQgZXhh bWluZSB0aGUgbWV0aG9kLXNjb3BlZCBzdGF0aWMuCisrIyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0 ZXN0IGZvciBQUiA5NzA4LgorK2dkYl90ZXN0ICJzdGVwIiAiZ251X29ial8xOjptZXRob2QuKiIK KytnZGJfdGVzdCAicHJpbnQgc3ZhciIgIiA9IHRydWUiCisrCisgZ2RiX2V4aXQKKyByZXR1cm4g MAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmNjCiBpbmRleCBmZmZmYjRjLi5iNDA2YTU5IDEw MDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5jYwpAQCAtMTk1ODEs MTggKzIwNzU3LDcwIEBAIGluZGV4IDAwMDAwMDAuLjE4MDY1MjMKICsjIFRlc3QgdGhhdCB0aGUg c2VhcmNoIGNhbiBmYWlsIGVmZmljaWVudGx5IAogKwogK2dkYl90ZXN0ICJwcmludCB5IiAiTm8g c3ltYm9sIFwieVwiIGluIGN1cnJlbnQgY29udGV4dC4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXVzaW5nLmNjCi1pbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uYW1lc3BhY2UtdXNpbmcuY2MKLUBAIC0xLDI2ICsxLDEyOSBAQAorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9uYW1lc3BhY2UuZXhwCitpbmRleCA0MzYyZmQ4Li5mN2NmZDU3IDEwMDY0NAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvbmFtZXNwYWNlLmV4cAorQEAgLTI0LDYgKzI0LDcgQEAKKyAjIGZvciBuYW1lc3BhY2Vz LgorICMgTm90ZTogQXMgb2YgMjAwMC0wNi0wMywgdGhleSBwYXNzZWQgdW5kZXIgZysrIC0gZGpi CisgCisrbG9hZF9saWIgImNwLXN1cHBvcnQuZXhwIgorIAorIGlmICR0cmFjZWxldmVsIHRoZW4g eworICAgICAgICAgc3RyYWNlICR0cmFjZWxldmVsCitAQCAtMjQxLDExICsyNDIsMTYgQEAgZ2Ri X3Rlc3QgInB0eXBlIEUiICJ0eXBlID0gbmFtZXNwYWNlIEM6OkQ6OkUiCisgZ2RiX3Rlc3QgInB0 eXBlIENDbGFzcyIgInR5cGUgPSAoY2xhc3MgQzo6Q0NsYXNzIFx7XHJcbiAgcHVibGljOnxzdHJ1 Y3QgQzo6Q0NsYXNzIFx7KVxyXG4gICAgaW50IHg7XHJcblx9IgorIGdkYl90ZXN0ICJwdHlwZSBD Q2xhc3M6Ok5lc3RlZENsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNz IFx7XHJcbiAgcHVibGljOnxzdHJ1Y3QgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyBceylcclxuICAg IGludCB5O1xyXG5cfSIKKyBnZGJfdGVzdCAicHR5cGUgTmVzdGVkQ2xhc3MiICJObyBzeW1ib2wg XCJOZXN0ZWRDbGFzc1wiIGluIGN1cnJlbnQgY29udGV4dC4iCistc2V0dXBfa2ZhaWwgImdkYi8x NDQ4IiAiKi0qLSoiCistZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6Q0NsYXNzIiAidHlwZSA9IGNsYXNz IEM6OkNDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB4O1xyXG5cfSIKKy1zZXR1cF9r ZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKKy1nZGJfdGVzdCAicHR5cGUgOjpDOjpDQ2xhc3M6Ok5l c3RlZENsYXNzIiAidHlwZSA9IGNsYXNzIEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHtcclxuICBw dWJsaWM6XHJcbiAgICBpbnQgeTtcclxuXH0iCistc2V0dXBfa2ZhaWwgImdkYi8xNDQ4IiAiKi0q LSoiCisrY3BfdGVzdF9wdHlwZV9jbGFzcyBcCisrCSJwdHlwZSA6OkM6OkNDbGFzcyIgIiIgImNs YXNzIiAiQzo6Q0NsYXNzIiBcCisrCXsKKysJICAgIHsgZmllbGQgcHVibGljICJpbnQgeDsiIH0K KysJfQorK2NwX3Rlc3RfcHR5cGVfY2xhc3MgXAorKwkicHR5cGUgOjpDOjpDQ2xhc3M6Ok5lc3Rl ZENsYXNzIiAiIiAiY2xhc3MiICJDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIiBcCisrCXsKKysJICAg IHsgZmllbGQgcHVibGljICJpbnQgeTsiIH0KKysJfQorIGdkYl90ZXN0ICJwdHlwZSA6OkM6Ok5l c3RlZENsYXNzIiAiTm8gc3ltYm9sIFwiTmVzdGVkQ2xhc3NcIiBpbiBuYW1lc3BhY2UgXCJDXCIu IgorIGdkYl90ZXN0ICJwdHlwZSBDOjpDQ2xhc3MiICJObyBzeW1ib2wgXCJDQ2xhc3NcIiBpbiBu YW1lc3BhY2UgXCJDOjpDXCIuIgorIGdkYl90ZXN0ICJwdHlwZSBDOjpDQ2xhc3M6Ok5lc3RlZENs YXNzIiAiTm8gdHlwZSBcIkNDbGFzc1wiIHdpdGhpbiBjbGFzcyBvciBuYW1lc3BhY2UgXCJDOjpD XCIuIgorQEAgLTI1NSw4ICsyNjEsMTEgQEAgZ2RiX3Rlc3QgInB0eXBlIEM6Ok5lc3RlZENsYXNz IiAiTm8gc3ltYm9sIFwiTmVzdGVkQ2xhc3NcIiBpbiBuYW1lc3BhY2UgXCJDOjpDXCIKKyAKKyBn ZGJfdGVzdCAicHJpbnQgY090aGVyRmlsZSIgIlxcJFxbMC05XF0uKiA9IDMxNiIKKyBnZGJfdGVz dCAicHR5cGUgT3RoZXJGaWxlQ2xhc3MiICJ0eXBlID0gKGNsYXNzIEM6Ok90aGVyRmlsZUNsYXNz IFx7XHJcbiAgcHVibGljOnxzdHJ1Y3QgQzo6T3RoZXJGaWxlQ2xhc3MgXHspXHJcbiAgICBpbnQg ejtcclxuXH0iCistc2V0dXBfa2ZhaWwgImdkYi8xNDQ4IiAiKi0qLSoiCistZ2RiX3Rlc3QgInB0 eXBlIDo6Qzo6T3RoZXJGaWxlQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6T3RoZXJGaWxlQ2xhc3Mg XHtcclxuICBwdWJsaWM6XHJcbiAgICBpbnQgejtcclxuXH0iCisrY3BfdGVzdF9wdHlwZV9jbGFz cyBcCisrCSJwdHlwZSA6OkM6Ok90aGVyRmlsZUNsYXNzIiAiIiAiY2xhc3MiICJDOjpPdGhlckZp bGVDbGFzcyIgXAorKwl7CisrCSAgICB7IGZpZWxkIHB1YmxpYyAiaW50IHo7IiB9CisrCX0KKyBn ZGJfdGVzdCAicHR5cGUgQzo6T3RoZXJGaWxlQ2xhc3MiICJObyBzeW1ib2wgXCJPdGhlckZpbGVD bGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6OkNcIi4iCisgCisgIyBTb21lIGFub255bW91cyBuYW1l c3BhY2UgdGVzdHMuCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbnN1c2luZy5j YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25zdXNpbmcuY2MKK2luZGV4IGIxZjBjZTQuLjBiZjJk ZjUgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uc3VzaW5nLmNjCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uc3VzaW5nLmNjCitAQCAtMSwzNCArMSw4MSBAQAorLW5hbWVz cGFjZSBPCiArbmFtZXNwYWNlIE0KLSt7CisgeworLSAgaW50IG94ID0gNDsKICsgIGludCB4ID0g OTExOwotK30KLSsKKyB9CisgCistbmFtZXNwYWNlIFBRCiArbmFtZXNwYWNlIE4KLSt7Cisgewor LSAgaW50IG1hcmtlcjYgKCkKICsgIGludCB4ID0gOTEyOwogK30KICsKQEAgLTE5NjEzLDE0ICsy MDg0MSwxNyBAQCBpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogK3sKICsgIGludAogKyAg bWFya2VyOSAoKQotKyAgeworICAgeworLSAgICByZXR1cm4gMDsKICsgICAgLy94OwogKyAgICBy ZXR1cm4gbWFya2VyMTAgKCk7Ci0rICB9Ci0rfQotKworICAgfQorIH0KKyAKKy1uYW1lc3BhY2Ug UAogK25hbWVzcGFjZSBMCi0reworIHsKKy0gIHVzaW5nIG5hbWVzcGFjZSBPOwogKyAgdXNpbmcg bmFtZXNwYWNlIEo7CiArICBpbnQKICsgIG1hcmtlcjggKCkKQEAgLTE5NjI4LDE2ICsyMDg1OSwy MSBAQCBpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogKyAgICBqeDsKICsgICAgcmV0dXJu IEs6Om1hcmtlcjkgKCk7CiArICB9Ci0rfQotKworIH0KKyAKKy0vLy0tLS0tLS0tLS0tLS0tCist bmFtZXNwYWNlIEMKICtuYW1lc3BhY2UgRwotK3sKKyB7CistICBpbnQgY2MgPSAzOwogKyAgbmFt ZXNwYWNlIEgKICsgIHsKICsgICAgaW50IGdoeCA9IDY7CiArICB9Ci0rfQotKworIH0KKyAKKy11 c2luZyBuYW1lc3BhY2UgQzsKKy1pbnQgbWFya2VyNSAoKQogK25hbWVzcGFjZSBJCiAreyAgCiAr ICBpbnQKQEAgLTE5NjUwLDEzICsyMDg4NiwxNSBAQCBpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEw MDY0NAogK30KICsKICtuYW1lc3BhY2UgRQotK3sKKyB7CistICBjYzsKKy0gIHJldHVybiBQUTo6 bWFya2VyNiAoKTsKICsgIG5hbWVzcGFjZSBGCiArICB7CiArICAgIGludCBlZnggPSA1OwogKyAg fQotK30KLSsKKyB9CisgCiArdXNpbmcgbmFtZXNwYWNlIEU6OkY7CiAraW50CiArbWFya2VyNiAo KQpAQCAtMTk2NjQsMTYgKzIwOTAyLDE2IEBAIGluZGV4IDQ3ODZmZDUuLjhmZjU2MjIgMTAwNjQ0 CiArICBlZng7CiArICByZXR1cm4gSTo6bWFya2VyNyAoKTsKICt9Ci0rCisgCiAgbmFtZXNwYWNl IEEKICB7Ci0gICBpbnQgX2EgPSAxOworQEAgLTM2LDIzICs4Myw0NyBAQCBuYW1lc3BhY2UgQQog ICAgaW50IHggPSAyOwogIH0KICAKIC1pbnQgbWFya2VyNCgpewogLQl1c2luZyBBOjp4OwotLQly ZXR1cm4gMDsKKy0JcmV0dXJuIG1hcmtlcjUgKCk7CiArbmFtZXNwYWNlIEMKICt7CiArICBpbnQg Y2MgPSAzOwpAQCAtMTk2OTAsMTcgKzIwOTI4LDE3IEBAIGluZGV4IDQ3ODZmZDUuLjhmZjU2MjIg MTAwNjQ0CiArewogKyAgY2M7CiArICByZXR1cm4gbWFya2VyNiAoKTsKLSt9Ci0rCisgfQorIAor LWludCBtYXJrZXIzKCl7CistCXJldHVybiBtYXJrZXI0KCk7CiAraW50CiArbWFya2VyNCAoKQog K3sKICsgIHVzaW5nIEQ6OmR4OwogKyAgcmV0dXJuIG1hcmtlcjUgKCk7Ci0gfQotIAotLWludCBt YXJrZXIzKCl7Ci0tCXJldHVybiBtYXJrZXI0KCk7CisrfQorKwogK2ludAogK21hcmtlcjMgKCkK ICt7CkBAIC0xOTcyMyw3ICsyMDk2MSw3IEBAIGluZGV4IDQ3ODZmZDUuLjhmZjU2MjIgMTAwNjQ0 CiAgewogICAgaW50IHRvdGFsID0gMDsKICAgIHsKLUBAIC0yOSwxNyArMTMyLDE4IEBAIGludCBt YXJrZXIxKCkKK0BAIC02MSwxNyArMTMyLDE4IEBAIGludCBtYXJrZXIxKCkKICAgICAgICB1c2lu ZyBuYW1lc3BhY2UgQTsKICAgICAgICBpbnQgYyA9IDI7CiAgICAgICAgewpAQCAtMTk3MzQsNyAr MjA5NzIsNyBAQCBpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogICAgICAgIH0KICAgICAg fQogICAgfQotICAgcmV0dXJuIHRvdGFsOworICAgcmV0dXJuIG1hcmtlcjIoKSArIHRvdGFsOwog IH0KICAKIC1pbnQgbWFpbigpCkBAIC0xOTc0NiwyMyArMjA5ODQsMjAgQEAgaW5kZXggNDc4NmZk NS4uOGZmNTYyMiAxMDA2NDQKIC0gIHJldHVybiBtYXJrZXIxKCk7CiArICByZXR1cm4gbWFya2Vy MSAoKTsKICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVz aW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS11c2luZy5leHAKLWluZGV4 IDMxOTU1MmIuLjA2NzMwODggMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1l c3BhY2UtdXNpbmcuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNp bmcuZXhwCi1AQCAtMjgsNiArMjgsMTEgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWIKLSAgICAg cmV0dXJuIC0xCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbnN1c2luZy5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uc3VzaW5nLmV4cAoraW5kZXggZWYwMjM3ZC4uNDZhNGEw NyAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25zdXNpbmcuZXhwCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uc3VzaW5nLmV4cAorQEAgLTI5LDcgKzI5LDcgQEAgaWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWIKICB9CiAgCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmls ZX1dIHsKKyBpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworLSAgICByZXR1cm4g LTEKICsgICAgcmV0dXJuIC0xOwotK30KLSsKLSsKLSAjIEdldCB0aGluZ3Mgc3RhcnRlZC4KKyB9 CiAgCi0gZ2RiX2V4aXQKLUBAIC00Niw0MiArNTEsMTU1IEBAIGlmICFbcnVudG9fbWFpbl0gdGhl biB7CisgCitAQCAtNTEsMzIgKzUxLDg3IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7CiAgCiAg Z2RiX3Rlc3QgInByaW50IF9hIiAiPSAxIgogIApAQCAtMTk4NTIsMTUgKzIxMDg3LDkgQEAgaW5k ZXggMzE5NTUyYi4uMDY3MzA4OCAxMDA2NDQKICsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8g YnJlYWtwb2ludCBtYXJrZXIzIgogK30KICAKLS1nZGJfdGVzdCAicHJpbnQgX2EiICJObyBzeW1i b2wgXCJfYVwiIGluIGN1cnJlbnQgY29udGV4dC4iICJQcmludCBhIHdpdGhvdXQgaW1wb3J0Igot KyMgZ2NjLTQtMyBwdXRzIGltcG9ydCBzdGF0ZW1lbnRzIGZvciBhbGlhc2VzIGluCi0rIyB0aGUg Z2xvYmFsIHNjb3BlIGluc3RlYWQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSsjIGZ1bmN0aW9uIHNj b3BlLiBUaGVzZSB3cm9uZyBpbXBvcnQgc3RhdGVtZW50cyB0aHJvdwotKyMgdGhpcyB0ZXN0IG9m Zi4gVGhpcyBpcyBmaXhlZCBpbiBnY2MtNC00LgotK2lmIFt0ZXN0X2NvbXBpbGVyX2luZm8gZ2Nj LTQtMy0qXSB0aGVuIHsgc2V0dXBfeGZhaWwgKi0qLSogfQotKwotK2dkYl90ZXN0ICJwcmludCBf YSIgIk5vIHN5bWJvbCBcIl9hXCIgaW4gY3VycmVudCBjb250ZXh0LiIgIlByaW50IF9hIHdpdGhv dXQgaW1wb3J0IgotIAorICMgZ2NjLTQtMyBwdXRzIGltcG9ydCBzdGF0ZW1lbnRzIGZvciBhbGlh c2VzIGluCisgIyB0aGUgZ2xvYmFsIHNjb3BlIGluc3RlYWQgb2YgdGhlIGNvcnJlc3BvbmRpbmcK K0BAIC04OSwzMiArMTQ0LDYyIEBAIGdkYl90ZXN0ICJwcmludCBfYSIgIk5vIHN5bWJvbCBcIl9h XCIgaW4gY3VycmVudCBjb250ZXh0LiIgIlByaW50IF9hIHdpdGhvdXQgaW1wCiAgIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIFRlc3QgcHJpbnRpbmcgb2Yg aW5kaXZpZHVhbGx5IGltcG9ydGVkIGVsZW1lbnRzCiAgCkBAIC0xOTg3MiwyNiArMjExMDEsMzQg QEAgaW5kZXggMzE5NTUyYi4uMDY3MzA4OCAxMDA2NDQKICAKIC1nZGJfdGVzdCAicHJpbnQgeCIg Ij0gMiIKICtnZGJfdGVzdCAicHJpbnQgZHgiICI9IDQiCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworLSMgdGVzdCBwcmludGluZyBvZiBuYW1lc3BhY2UgaW1wb3J0 ZWQgaW50bworLSMgZmlsZSBzY29wZS4KICsjIFRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGFs aWFzZXMKLSsKLStpZiAhW3J1bnRvIG1hcmtlcjVdIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBtYXJrZXI1IgotKyAgICBjb250aW51ZQotK30KLSsKKyAKKyBpZiAhW3J1bnRv IG1hcmtlcjVdIHRoZW4geworICAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBtYXJrZXI1Igor ICAgICBjb250aW51ZQorIH0KKyAKKy1nZGJfdGVzdCAicHJpbnQgY2MiICI9IDMiCiArZ2RiX3Rl c3QgInByaW50IGVmeCIgIj0gNSIKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCistIyB0ZXN0IHByaW50aW5nIG9mIG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvCistIyBm aWxlIHNjb3BlLgogKyMgVGVzdCBwcmludGluZyBvZiB2YXJpYWJsZXMgaW1wb3J0ZWQgZnJvbQog KyMgbmVzdGVkIG5hbWVzcGFjZXMKLSsKKyAKKy1pZiAhW3J1bnRvIFBROjptYXJrZXI2XSB0aGVu IHsKKy0gICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gUFE6Om1hcmtlcjYiCiAraWYgIVtydW50 byBJOjptYXJrZXI3XSB0aGVuIHsKICsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtw b2ludCBJOjptYXJrZXI3IgotKyAgICBjb250aW51ZQotK30KLSsKKyAgICAgY29udGludWUKKyB9 CisgCistZ2RiX3Rlc3QgInByaW50IG94IiAiTm8gc3ltYm9sIFwib3hcIiBpbiBjdXJyZW50IGNv bnRleHQuIgogK2dkYl90ZXN0ICJwcmludCBnaHgiICI9IDYiCiArCiArIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTE5OTI1LDU0ICsyMTE2Miw2IEBAIGlu ZGV4IDMxOTU1MmIuLjA2NzMwODggMTAwNjQ0CiArIyBBc3NlcnQgdGhhdCBNOjp4IGlzIHByaW50 ZWQgYW5kIG5vdCBOOjp4CiArZ2RiX3Rlc3QgInByaW50IHgiICI9IDkxMSIgInByaW50IHggKGZy b20gTTo6eCkiCiArCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNl LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKLWluZGV4IDQzNjJmZDgu LmY3Y2ZkNTcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhw Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwCi1AQCAtMjQsNiArMjQs NyBAQAotICMgZm9yIG5hbWVzcGFjZXMuCi0gIyBOb3RlOiBBcyBvZiAyMDAwLTA2LTAzLCB0aGV5 IHBhc3NlZCB1bmRlciBnKysgLSBkamIKLSAKLStsb2FkX2xpYiAiY3Atc3VwcG9ydC5leHAiCi0g Ci0gaWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLUBA IC0yNDEsMTEgKzI0MiwxNiBAQCBnZGJfdGVzdCAicHR5cGUgRSIgInR5cGUgPSBuYW1lc3BhY2Ug Qzo6RDo6RSIKLSBnZGJfdGVzdCAicHR5cGUgQ0NsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpDQ2xh c3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpDQ2xhc3MgXHspXHJcbiAgICBpbnQgeDtcclxu XH0iCi0gZ2RiX3Rlc3QgInB0eXBlIENDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0gKGNsYXNz IEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpDQ2xhc3M6 Ok5lc3RlZENsYXNzIFx7KVxyXG4gICAgaW50IHk7XHJcblx9IgotIGdkYl90ZXN0ICJwdHlwZSBO ZXN0ZWRDbGFzcyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gY3VycmVudCBjb250ZXh0 LiIKLS1zZXR1cF9rZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKLS1nZGJfdGVzdCAicHR5cGUgOjpD OjpDQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6Q0NsYXNzIFx7XHJcbiAgcHVibGljOlxyXG4gICAg aW50IHg7XHJcblx9IgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgotLWdkYl90ZXN0 ICJwdHlwZSA6OkM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6Q0NsYXNz OjpOZXN0ZWRDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB5O1xyXG5cfSIKLS1zZXR1 cF9rZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKLStjcF90ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0 eXBlIDo6Qzo6Q0NsYXNzIiAiIiAiY2xhc3MiICJDOjpDQ2xhc3MiIFwKLSsJewotKwkgICAgeyBm aWVsZCBwdWJsaWMgImludCB4OyIgfQotKwl9Ci0rY3BfdGVzdF9wdHlwZV9jbGFzcyBcCi0rCSJw dHlwZSA6OkM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICIiICJjbGFzcyIgIkM6OkNDbGFzczo6TmVz dGVkQ2xhc3MiIFwKLSsJewotKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB5OyIgfQotKwl9Ci0g Z2RiX3Rlc3QgInB0eXBlIDo6Qzo6TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFz c1wiIGluIG5hbWVzcGFjZSBcIkNcIi4iCi0gZ2RiX3Rlc3QgInB0eXBlIEM6OkNDbGFzcyIgIk5v IHN5bWJvbCBcIkNDbGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6OkNcIi4iCi0gZ2RiX3Rlc3QgInB0 eXBlIEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICJObyB0eXBlIFwiQ0NsYXNzXCIgd2l0aGluIGNs YXNzIG9yIG5hbWVzcGFjZSBcIkM6OkNcIi4iCi1AQCAtMjU1LDggKzI2MSwxMSBAQCBnZGJfdGVz dCAicHR5cGUgQzo6TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFzc1wiIGluIG5h bWVzcGFjZSBcIkM6OkNcIgotIAotIGdkYl90ZXN0ICJwcmludCBjT3RoZXJGaWxlIiAiXFwkXFsw LTlcXS4qID0gMzE2IgotIGdkYl90ZXN0ICJwdHlwZSBPdGhlckZpbGVDbGFzcyIgInR5cGUgPSAo Y2xhc3MgQzo6T3RoZXJGaWxlQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpPdGhlckZp bGVDbGFzcyBceylcclxuICAgIGludCB6O1xyXG5cfSIKLS1zZXR1cF9rZmFpbCAiZ2RiLzE0NDgi ICIqLSotKiIKLS1nZGJfdGVzdCAicHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgInR5cGUgPSBj bGFzcyBDOjpPdGhlckZpbGVDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB6O1xyXG5c fSIKLStjcF90ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6Qzo6T3RoZXJGaWxlQ2xhc3Mi ICIiICJjbGFzcyIgIkM6Ok90aGVyRmlsZUNsYXNzIiBcCi0rCXsKLSsJICAgIHsgZmllbGQgcHVi bGljICJpbnQgejsiIH0KLSsJfQotIGdkYl90ZXN0ICJwdHlwZSBDOjpPdGhlckZpbGVDbGFzcyIg Ik5vIHN5bWJvbCBcIk90aGVyRmlsZUNsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wiLiIKLSAK LSAjIFNvbWUgYW5vbnltb3VzIG5hbWVzcGFjZSB0ZXN0cy4KIGRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9vdmVybG9hZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmVybG9h ZC5leHAKIGluZGV4IDFiZmEwZjMuLjlmZDMxYTggMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9vdmVybG9hZC5leHAKQEAgLTIxNDAwLDYgKzIyNTg5LDE2IEBAIGluZGV4IDAwMDAw MDAuLjRlOTJlNzUKICsKICtnZGJfZXhpdAogK3JldHVybiAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3Avc2hhZG93LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvdy5l eHAKK2luZGV4IDFlNWU4MGIuLjQwYzM1YTQgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9zaGFkb3cuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFkb3cuZXhwCitA QCAtODUsNSArODUsNCBAQCBnZGJfdGVzdCAicHJpbnQgeCIgIj0gNTUiICJQcmludCBsb2NhbCB4 IG5vdCBuYW1lc3BhY2UgeCIKKyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi bWFya2VyNSJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjUiCisgCistc2V0 dXBfa2ZhaWwgImdkYi83OTM2IiAiKi0qLSoiCisgZ2RiX3Rlc3QgInByaW50IHgiICI9IDExIiAi UHJpbnQgaW1wb3J0ZWQgbmFtZXNwYWNlIHgiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3Avc2hhZG93aW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc2hhZG93aW5nLmNjCiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uNmQ5YzJmMQpAQCAtMjE1NTEsNiAr MjI3NTAsNTYgQEAgaW5kZXggMDAwMDAwMC4uNjkyMmVlZAogK2lmIFt0ZXN0X2NvbXBpbGVyX2lu Zm8gZ2NjLTQtMy0qXSB0aGVuIHsgc2V0dXBfeGZhaWwgKi0qLSogfQogKwogK2dkYl90ZXN0ICJw cmludCB4IiAiPSAxMSIgIlByaW50IGltcG9ydGVkIG5hbWVzcGFjZSB4IgorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC91 c2VyZGVmLmNjCitpbmRleCAzMzhjNThhLi41NmE3MzVmIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvdXNlcmRlZi5jYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdXNlcmRl Zi5jYworQEAgLTMxMSw2ICszMTEsMTEgQEAgcHVibGljOgorICAgaW50IHo7CisgfTsKKyAKKyti b29sIG9wZXJhdG9yPT0gKGNvbnN0IE1lbWJlciAmbTEsIGNvbnN0IE1lbWJlciAmbTIpCisrewor KyAgcmV0dXJuIG0xLnogPT0gbTIuejsKKyt9CisrCisgY2xhc3MgQ29udGFpbmVyCisgeworIHB1 YmxpYzoKK0BAIC0zMzAsOCArMzM1LDEyIEBAIGludCBtYWluICh2b2lkKQorICBBMSB0d28oNCw1 KTsKKyAgQTEgdGhyZWUoMCwwKTsKKyAgQ29udGFpbmVyIGM7CisrIE1lbWJlciBtZW0xLCBtZW0y OworICBpbnQgdmFsOworICAKKysgbWVtMS56ID0gNTsKKysgbWVtMi56ID0gNzsKKysKKyAgbWFy a2VyMSgpOyAvLyBtYXJrZXIxLXJldHVybnMtaGVyZQorICBjb3V0IDw8IG9uZTsgLy8gbWFya2Vy MS1yZXR1cm5zLWhlcmUKKyAgY291dCA8PCB0d287CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvdXNlcmRlZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC91c2VyZGVmLmV4cAor aW5kZXggYmQ1NGM3OC4uMjdlYzgwYiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L3VzZXJkZWYuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC91c2VyZGVmLmV4cAorQEAg LTExMyw2ICsxMTMsNyBAQCBnZGJfdGVzdCAicHJpbnQgb25lID4gdHdvIiAiXFxcJFxbMC05XF0q ID0gMFxbXHJcblxdIgorIGdkYl90ZXN0ICJwcmludCBvbmUgPj0gdHdvIiAiXFxcJFxbMC05XF0q ID0gMFxbXHJcblxdIgorIAorIGdkYl90ZXN0ICJwcmludCBvbmUgPT0gdHdvIiAiXFxcJFxbMC05 XF0qID0gMFxbXHJcblxdIgorK2dkYl90ZXN0ICJwcmludCBvbmUub3BlcmF0b3I9PSAodHdvKSIg IlxcXCRcWzAtOVxdKiA9IDBcW1xyXG5cXSIKKyAKKyBnZGJfdGVzdCAicHJpbnQgb25lICE9IHR3 byIgIlxcXCRcWzAtOVxdKiA9IDFcW1xyXG5cXSIKKyAKK0BAIC0xNTUsNSArMTU2LDggQEAgZ2Ri X3Rlc3QgInByaW50ICpjIiAiXFxcJFxbMC05XF0qID0gXFwoTWVtYmVyICZcXCkgQCRoZXg6IHt6 ID0gLip9IgorIGdkYl90ZXN0ICJwcmludCAmKmMiICJcXFwkXFswLTlcXSogPSBcXChNZW1iZXIg XFwqXFwpICRoZXgiCisgZ2RiX3Rlc3QgInB0eXBlICYqYyIgInR5cGUgPSBzdHJ1Y3QgTWVtYmVy IHtcW1xyXG4gXF0raW50IHo7XFtcclxuXF0rfSAmXFwqIgorIAorK2dkYl90ZXN0ICJwcmludCBv cGVyYXRvcj09IChtZW0xLCBtZW0yKSIgIiA9IGZhbHNlIgorK2dkYl90ZXN0ICJwcmludCBvcGVy YXRvcj09IChtZW0xLCBtZW0xKSIgIiA9IHRydWUiCisrCisgZ2RiX2V4aXQKKyByZXR1cm4gMAog ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5TIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0 CiBpbmRleCAwMDAwMDAwLi5kNWI5Y2E1CkBAIC0yNDc2MCw3ICsyNjAwOSw3IEBAIGluZGV4IGVk NzZiMDkuLjhiZjM2MzQgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBi L2dkYi92YWxvcHMuYwotaW5kZXggY2EzNDA4My4uYzIzZmQ2OCAxMDA2NDQKK2luZGV4IDJjZGJj YmUuLjZiODI0NzYgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dkYi92YWxvcHMu YwogQEAgLTM4LDYgKzM4LDcgQEAKQEAgLTI0OTg1LDE1ICsyNjIzNCwxOSBAQCBpbmRleCBjYTM0 MDgzLi5jMjNmZDY4IDEwMDY0NAogICAgICAgIGlmIChmdW5jX25hbWUgPT0gTlVMTCkKICAgICAg ICAgIHsKICAJICAqc3ltcCA9IGZzeW07Ci1AQCAtMzA5Niw3ICszMjAxLDcgQEAgdmFsdWVfbWF5 YmVfbmFtZXNwYWNlX2VsdCAoY29uc3Qgc3RydWN0IHR5cGUgKmN1cnR5cGUsCitAQCAtMzA5Niw5 ICszMjAxLDkgQEAgdmFsdWVfbWF5YmVfbmFtZXNwYWNlX2VsdCAoY29uc3Qgc3RydWN0IHR5cGUg KmN1cnR5cGUsCiAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CiAgICBzdHJ1Y3QgdmFsdWUgKnJlc3Vs dDsKICAKIC0gIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2VfbmFt ZSwgbmFtZSwgTlVMTCwKKy0JCQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCksIAorLQkJCQkg ICAgVkFSX0RPTUFJTiwgMSk7CiArICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZShu YW1lc3BhY2VfbmFtZSwgbmFtZSwKLSAJCQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCksIAot IAkJCQkgICAgVkFSX0RPTUFJTik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZXRfc2VsZWN0ZWRfYmxvY2sgKDApLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFZBUl9ET01BSU4pOwogIAorICAgaWYgKHN5bSA9PSBOVUxMKQorICAgICByZXR1cm4g TlVMTDsKIEBAIC0zMjQwLDcgKzMzNDUsNyBAQCB2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hhciAq bmFtZSwgaW50IGNvbXBsYWluKQogIAogICAgLyogQ2FsbGluZyBsb29rdXBfYmxvY2tfc3ltYm9s IGlzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIExPQ19SRUdJU1RFUgpAQCAtMjUzNTksMyArMjY2MTIs MjUgQEAgaW5kZXggMjVjYzJkOS4uNjc4NDY1NCAxMDA2NDQKICAgIHhjb2ZmX3N5bWZpbGVfZmlu aXNoLAkJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCiAgICB4 Y29mZl9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiB4bGF0ZSBvZmZzZXRzIGV4dC0+ aW50IGZvcm0gKi8KICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogc3ltX3NlZ21lbnRz OiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCitkaWZmIC0tZ2l0IGEvZ2RiL3h0ZW5zYS1s aW51eC10ZGVwLmMgYi9nZGIveHRlbnNhLWxpbnV4LXRkZXAuYworaW5kZXggNjY3ZDliMy4uMGQ4 NjIxOSAxMDA2NDQKKy0tLSBhL2dkYi94dGVuc2EtbGludXgtdGRlcC5jCisrKysgYi9nZGIveHRl bnNhLWxpbnV4LXRkZXAuYworQEAgLTIyLDYgKzIyLDcgQEAKKyAKKyAjaW5jbHVkZSAic29saWIt c3ZyNC5oIgorICNpbmNsdWRlICJzeW10YWIuaCIKKysjaW5jbHVkZSAibGludXgtdGRlcC5oIgor IAorIC8qIE9TIHNwZWNpZmljIGluaXRpYWxpemF0aW9uIG9mIGdkYmFyY2guICAqLworIAorQEAg LTMwLDYgKzMxLDkgQEAgeHRlbnNhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZv IGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorIHsKKyAgIHNldF9zb2xpYl9zdnI0X2Zl dGNoX2xpbmtfbWFwX29mZnNldHMKKyAgICAgKGdkYmFyY2gsIHN2cjRfaWxwMzJfZmV0Y2hfbGlu a19tYXBfb2Zmc2V0cyk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp OworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXBy b3RvdHlwZXMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2gg Yi9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBhNWNlMTYwLi4wMDAwMDAwCi0tLSBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMDQ1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9n ZGIvd2lraS9Qcm9qZWN0QXJjaGVyCi1odHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvQXJj aGVyQnJhbmNoTWFuYWdlbWVudAotCi1HSVQgc25hcHNob3Q6Ci1jb21taXQgNzkxMTY1ZGYwN2Zk MjJkMzgxZGVmMTMxODk1NGMzODlhNjA2ZjgxYQotCi1hcmNoZXItamFua3JhdG9jaHZpbC1pZnVu YwotCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYWxwaGEtbGludXgtdGRlcC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9hbHBoYS1saW51eC10 ZGVwLmMJMjAxMC0wMS0wMSAwODozMToyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUw LjIwMTAwMTIxL2dkYi9hbHBoYS1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAw MDAwMDAgKzAxMDAKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgInN5bXRhYi5oIgotICNp bmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAibGlu dXgtdGRlcC5oIgotIAotICNpbmNsdWRlICJhbHBoYS10ZGVwLmgiCi0gCi1AQCAtMjM2LDYgKzIz Nyw5IEBAIGFscGhhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmYKLSAKLSAgIHNl dF9nZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbgotICAgICAoZ2RiYXJjaCwgYWxwaGFf bGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2ls ZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvYW1kNjQtbGludXgtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDEyMS5vcmlnL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxMzoyNi4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9hbWQ2NC1saW51eC10ZGVw LmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTU3LDYgKzE1NTcs OSBAQCBhbWQ2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCi0gICBhbWQ2NF9s aW51eF9yZWNvcmRfdGRlcC5hcmc2ID0gQU1ENjRfUjlfUkVHTlVNOwotIAotICAgdGRlcC0+aTM4 Nl9zeXNjYWxsX3JlY29yZCA9IGFtZDY0X2xpbnV4X3N5c2NhbGxfcmVjb3JkOwotKwotKyAgc2V0 X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxp bnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gDAotIAotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL2FybS1saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2FybS1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODoz MToyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9hcm0tbGlu dXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtOTA3LDYg KzkwNyw5IEBAIGFybV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyAKLSAgIHNl dF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2ZyZWVfY2xvc3VyZSAoZ2RiYXJjaCwKLSAJCQkJCSAg IHNpbXBsZV9kaXNwbGFjZWRfc3RlcF9mcmVlX2Nsb3N1cmUpOwotICAgc2V0X2dkYmFyY2hfZGlz cGxhY2VkX3N0ZXBfbG9jYXRpb24gKGdkYmFyY2gsIGRpc3BsYWNlZF9zdGVwX2F0X2VudHJ5X3Bv aW50KTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJh cmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAot IC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4g ICovCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZWxmcmVhZC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMC0wMS0yMSAx NToxMzoyNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9lbGZy ZWFkLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODQsNyArMTg0 LDggQEAgcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLAotIHsKLSAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0gCi0t ICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQpCi0r ICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQKLSsg ICAgICB8fCBtc190eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKLSAgICAgYWRkcmVzcyA9IGdk YmFyY2hfc21hc2hfdGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKLSAKLSAgIHJldHVy biBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9mdWxsIChuYW1lLCBuYW1lX2xlbiwgY29weV9u YW1lLCBhZGRyZXNzLAotQEAgLTM5Myw3ICszOTQsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZQotIAkgICAgewotIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChC U0ZfR0xPQkFMIHwgQlNGX1dFQUspKQotIAkJewotLQkJICBtc190eXBlID0gbXN0X3RleHQ7Ci0r CQkgIGlmIChzeW0tPmZsYWdzICYgQlNGX0dOVV9JTkRJUkVDVF9GVU5DVElPTikKLSsJCSAgICBt c190eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOwotKwkJICBlbHNlCi0rCQkgICAgbXNfdHlwZSA9 IG1zdF90ZXh0OwotIAkJfQotIAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAm JiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQotIAkJICAgICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9M T0NBTCkKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9mcnYtbGludXgtdGRlcC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9mcnYtbGludXgtdGRl cC5jCTIwMTAtMDEtMDEgMDg6MzE6MzIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvZnJ2LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAw MCArMDEwMAotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCi0g I2luY2x1ZGUgInJlZ3NldC5oIgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0rI2luY2x1ZGUg ImxpbnV4LXRkZXAuaCIKLSAKLSAvKiBEZWZpbmUgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBhbiBG Ui1WIGluc3RydWN0aW9uLiAgKi8KLSBzdGF0aWMgY29uc3QgaW50IGZydl9pbnN0cl9zaXplID0g NDsKLUBAIC00ODYsNyArNDg3LDIxIEBAIGZydl9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rp b24gKHN0cnUKLSAgIHJldHVybiBOVUxMOwotIH0KLSAKLS0MCi0rc3RhdGljIENPUkVfQUREUgot K2Zydl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCi0rCQkJCSAgICAgIENPUkVfQUREUiBhZGRyLAotKwkJCQkgICAgICBzdHJ1Y3QgdGFy Z2V0X29wcyAqdGFyZykKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBmcnZfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGFkZHIsIHRhcmcpOwotKyAgQ09SRV9BRERSIHJlc29sdmVk OwotKwotKyAgcmVzb2x2ZWQgPSBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRyIChnZGJh cmNoLCBhZGRyLCBwYyk7Ci0rICBpZiAocmVzb2x2ZWQgIT0gcGMpCi0rICAgIHBjID0gZnJ2X2Nv bnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCByZXNvbHZlZCwgdGFyZyk7Ci0rCi0r ICByZXR1cm4gcGM7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gZnJ2X2xpbnV4X2luaXRfYWJpIChz dHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLUBA IC00OTQsNiArNTA5LDEwIEBAIGZydl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5m byAKLSAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZmcnZfbGludXhf c2lndHJhbXBfZnJhbWVfdW53aW5kKTsgCi0gICBzZXRfZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3Jl X3NlY3Rpb24gKGdkYmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZydl9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24pOwotKwotKyAgaWYgKGZydl9h YmkgKGdkYmFyY2gpID09IEZSVl9BQklfRkRQSUMpCi0rICAgIHNldF9nZGJhcmNoX2NvbnZlcnRf ZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBmcnZfbGludXhfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSBzdGF0aWMgZW51bSBnZGJfb3NhYmkKLUluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9mcnYtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9mcnYtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MzIu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZnJ2LXRkZXAuYwky MDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTExNjksNyArMTE2OSw3IEBA IGZpbmRfZnVuY19kZXNjciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gKLSAgIHJldHVybiBkZXNj cjsKLSB9Ci0gCi0tc3RhdGljIENPUkVfQUREUgotK0NPUkVfQUREUgotIGZydl9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRy LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9vcHMgKnRh cmcpCi0gewotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Zydi10ZGVwLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2Zydi10ZGVwLmgJMjAxMC0w MS0wMSAwODozMTozMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi9mcnYtdGRlcC5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMTE4 LDMgKzExOCw2IEBAIENPUkVfQUREUiBmcnZfZmV0Y2hfb2JqZmlsZV9saW5rX21hcCAoc3QKLSBz dHJ1Y3QgdGFyZ2V0X3NvX29wczsKLSBleHRlcm4gc3RydWN0IHRhcmdldF9zb19vcHMgZnJ2X3Nv X29wczsKLSAKLStDT1JFX0FERFIgZnJ2X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkJCSAgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgIHN0 cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9n ZGJ0eXBlcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9n ZGJ0eXBlcy5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC41MC4yMDEwMDEyMS9nZGIvZ2RidHlwZXMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAw MCArMDEwMAotQEAgLTE5NDYsNiArMTk0Niw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUg Y29kZSwgaW50IGxlbmcKLSAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9IDE7Ci0gICBpZiAoZmxh Z3MgJiBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UpCi0gICAgIFRZUEVfRklYRURfSU5TVEFOQ0Ug KHR5cGUpID0gMTsKLSsgIGlmIChmbGFncyAmIFRZUEVfRkxBR19HTlVfSUZVTkMpCi0rICAgIFRZ UEVfR05VX0lGVU5DICh0eXBlKSA9IDE7Ci0gCi0gICBpZiAobmFtZSkKLSAgICAgVFlQRV9OQU1F ICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1lKSwKLUBAIC0zOTU1LDYg KzM5NTcsOCBAQCBnZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhCi0gICAg ID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwotICAg YnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCi0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlw ZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7Ci0r ICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCi0rICAgID0gbG9va3VwX2Z1bmN0aW9u X3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7Ci0gCi0gICAvKiBUaGlzIHR5 cGUgcmVwcmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCi0gICBidWlsdGluX3R5 cGUtPmludGVybmFsX2ZuCi1AQCAtNDA3MSw2ICs0MDc1LDExIEBAIG9iamZpbGVfdHlwZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCi0gCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZv PiIsIG9iamZpbGUpOwotICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVn X3RleHRfc3ltYm9sKQotICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7Ci0rICBvYmpm aWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCi0rICAgID0gaW5pdF90eXBl IChUWVBFX0NPREVfRlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywKLSsJCSAiPHRleHQgZ251 LWlmdW5jIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOwotKyAgVFlQRV9UQVJH RVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCkKLSsg ICAgPSBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7Ci0gICBvYmpmaWxlX3R5cGUt Pm5vZGVidWdfZGF0YV9zeW1ib2wKLSAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQsCi0g CQkgZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAsCi1JbmRleDog Z2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZ2RidHlwZXMuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEwLTAxLTIxIDE1OjE0OjQxLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2dkYnR5cGVzLmgJMjAx MC0wMS0yMSAxNToxNjozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODgsNiArMTg4LDcgQEAgZW51 bSB0eXBlX2ZsYWdfdmFsdWUKLSAgIFRZUEVfRkxBR19GSVhFRF9JTlNUQU5DRSA9ICgxIDw8IDE1 KSwKLSAgIFRZUEVfRkxBR19TVFVCX1NVUFBPUlRFRCA9ICgxIDw8IDE2KSwKLSAgIFRZUEVfRkxB R19OT1RURVhUID0gKDEgPDwgMTcpLAotKyAgVFlQRV9GTEFHX0dOVV9JRlVOQyA9ICgxIDw8IDE4 KSwKLSAKLSAgIC8qIFVzZWQgZm9yIGVycm9yLWNoZWNraW5nLiAgKi8KLSAgIFRZUEVfRkxBR19N SU4gPSBUWVBFX0ZMQUdfVU5TSUdORUQKLUBAIC0yOTMsNiArMjk0LDEyIEBAIGVudW0gdHlwZV9p bnN0YW5jZV9mbGFnX3ZhbHVlCi0gCi0gI2RlZmluZSBUWVBFX05PVFRFWFQodCkJCShUWVBFX01B SU5fVFlQRSAodCktPmZsYWdfbm90dGV4dCkKLSAKLSsvKiBDdXJyZW50bHkgdXNlZCBvbmx5IGZv ciBUWVBFX0NPREVfRlVOQyB3aGVyZSBzcGVjaWZpZXMgdGhlIHJlYWwgZnVuY3Rpb24KLSsgICBh ZGRyZXNzIGlzIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FsbC4gIFRZUEVfVEFSR0VUX1RZ UEUgZGV0ZXJtaW5lcyB0aGUKLSsgICBmaW5hbCByZXR1cm5lZCBmdW5jdGlvbiB0eXBlIHRvIGJl IHByZXNlbnRlZCB0byB1c2VyLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfR05VX0lGVU5DKHQpCShU WVBFX01BSU5fVFlQRSAodCktPmZsYWdfZ251X2lmdW5jKQotKwotIC8qIFR5cGUgb3duZXIuICBJ ZiBUWVBFX09CSkZJTEVfT1dORUQgaXMgdHJ1ZSwgdGhlIHR5cGUgaXMgb3duZWQgYnkKLSAgICB0 aGUgb2JqZmlsZSByZXRyaWV2ZWQgYXMgVFlQRV9PQkpGSUxFLiAgT3RoZXJ3ZWlzZSwgdGhlIHR5 cGUgaXMKLSAgICBvd25lZCBieSBhbiBhcmNoaXRlY3R1cmU7IFRZUEVfT0JKRklMRSBpcyBOVUxM IGluIHRoaXMgY2FzZS4gICovCi1AQCAtNDQ3LDYgKzQ1NCw3IEBAIHN0cnVjdCBtYWluX3R5cGUK LSAgIHVuc2lnbmVkIGludCBmbGFnX3ZlY3RvciA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19z dHViX3N1cHBvcnRlZCA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19ub3R0ZXh0IDogMTsKLSsg IHVuc2lnbmVkIGludCBmbGFnX2dudV9pZnVuYyA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19m aXhlZF9pbnN0YW5jZSA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpmaWxlX293bmVkIDog MTsKLSAgIHVuc2lnbmVkIGludCBmbGFnX2Rpc2NhcmRhYmxlIDogMTsKLUBAIC0xMjQzLDYgKzEy NTEsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQotICAgICAgKCopICgpIGNhbiBzZXJ2ZXIgYXMg YSBnZW5lcmljIGZ1bmN0aW9uIHBvaW50ZXIuICAqLwotICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5f ZnVuY19wdHI7Ci0gCi0rICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rp b24gKHJldHVybmluZyB2b2lkKScgdHlwZS4KLSsgICAgIFRoZSBmaW5hbCB2b2lkIHJldHVybiB0 eXBlIGlzIG5vdCBzaWduaWZpY2FudCBmb3IgaXQuICAqLwotKyAgc3RydWN0IHR5cGUgKmJ1aWx0 aW5fZnVuY19mdW5jOwotKwotIAotICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KLSAK LUBAIC0xMjg1LDYgKzEyOTcsNyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCi0gCi0gICAvKiBUeXBl cyB1c2VkIGZvciBzeW1ib2xzIHdpdGggbm8gZGVidWcgaW5mb3JtYXRpb24uICAqLwotICAgc3Ry dWN0IHR5cGUgKm5vZGVidWdfdGV4dF9zeW1ib2w7Ci0rICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190 ZXh0X2dudV9pZnVuY19zeW1ib2w7Ci0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19kYXRhX3N5bWJv bDsKLSAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Vua25vd25fc3ltYm9sOwotICAgc3RydWN0IHR5 cGUgKm5vZGVidWdfdGxzX3N5bWJvbDsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9o cHBhLWxpbnV4LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3Jp Zy9nZGIvaHBwYS1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozMy4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLWxpbnV4LXRkZXAuYwkyMDEwLTAx LTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVk ZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgInJlZ2NhY2hlLmgiCi0gI2luY2x1ZGUgImhwcGEtdGRl cC5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgImVsZi9jb21tb24u aCIKLSAKLUBAIC01MTMsNyArNTE0LDIxIEBAIGhwcGFfbGludXhfcmVnc2V0X2Zyb21fY29yZV9z ZWN0aW9uIChzdHIKLSAKLSAgIHJldHVybiBOVUxMOwotIH0KLS0MCi0rCi0rc3RhdGljIENPUkVf QUREUgotK2hwcGEzMl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgc3RydWN0IHRh cmdldF9vcHMgKnRhcmcpCi0rewotKyAgQ09SRV9BRERSIHBjID0gaHBwYTMyX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCB0YXJnKTsKLSsgIENPUkVfQUREUiByZXNv bHZlZDsKLSsKLSsgIHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAo Z2RiYXJjaCwgYWRkciwgcGMpOwotKyAgaWYgKHJlc29sdmVkICE9IHBjKQotKyAgICBwYyA9IGhw cGEzMl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcmVzb2x2ZWQsIHRhcmcp OwotKwotKyAgcmV0dXJuIHBjOwotK30KLSAKLSAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4gICov Ci0gZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9ocHBhX2xpbnV4X3Rk ZXA7Ci1AQCAtNTU1LDYgKzU3MCwxMCBAQCBocHBhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2Ri YXJjaF9pbmZvCi0gICAvKiBFbmFibGUgVExTIHN1cHBvcnQuICAqLwotICAgc2V0X2dkYmFyY2hf ZmV0Y2hfdGxzX2xvYWRfbW9kdWxlX2FkZHJlc3MgKGdkYmFyY2gsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZyNF9mZXRjaF9vYmpmaWxlX2xpbmtfbWFw KTsKLSsKLSsgIGlmICh0ZGVwLT5ieXRlc19wZXJfYWRkcmVzcyA9PSA0KQotKyAgICBzZXRfZ2Ri YXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJICAgICAgIGhw cGEzMl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIHZvaWQKLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLXRkZXAuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxMC0wMS0xOSAxMDoz OToxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLXRk ZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTEyNDcsNyArMTI0 Nyw3IEBAIGhwcGE2NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGIKLSB9Ci0gDAot IAotLXN0YXRpYyBDT1JFX0FERFIKLStDT1JFX0FERFIKLSBocHBhMzJfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkciwKLSAJ CQkJICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCi0gewotSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMjEvZ2RiL2hwcGEtdGRlcC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEy MS5vcmlnL2dkYi9ocHBhLXRkZXAuaAkyMDEwLTAxLTAxIDA4OjMxOjMzLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2hwcGEtdGRlcC5oCTIwMTAtMDEtMjEgMTU6 MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMjQ2LDQgKzI0Niw4IEBAIGV4dGVybiBpbnQgaHBw YV9pbl9zb2xpYl9jYWxsX3RyYW1wb2xpbmUKLSAJCQkJCSAgQ09SRV9BRERSIHBjLCBjaGFyICpu YW1lKTsKLSBleHRlcm4gQ09SRV9BRERSIGhwcGFfc2tpcF90cmFtcG9saW5lX2NvZGUgKHN0cnVj dCBmcmFtZV9pbmZvICosIENPUkVfQUREUiBwYyk7Ci0gCi0rZXh0ZXJuIENPUkVfQUREUiBocHBh MzJfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot KwkJCQkJCSAgICBDT1JFX0FERFIgYWRkciwKLSsJCQkJCQkgICAgc3RydWN0IHRhcmdldF9vcHMg KnRhcmcpOwotKwotICNlbmRpZiAgLyogaHBwYS10ZGVwLmggKi8KLUluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTIxL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMjEub3JpZy9nZGIvaTM4Ni1saW51eC10ZGVwLmMJMjAxMC0wMS0wNCAxNTo1Nzo0 My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pMzg2LWxpbnV4 LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTc5OCw2ICs3 OTgsOSBAQCBpMzg2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkzODZfbGludXhfZ2V0X3N5c2NhbGxfbnVtYmVy KTsKLSAKLSAgIHNldF9nZGJhcmNoX2dldF9zaWdpbmZvX3R5cGUgKGdkYmFyY2gsIGxpbnV4X2dl dF9zaWdpbmZvX3R5cGUpOwotKwotKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRy KTsKLSB9Ci0gCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1w cm90b3R5cGVzLiAgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pYTY0LWxpbnV4 LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaWE2 NC1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pYTY0LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1 OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAib3NhYmku aCIKLSAjaW5jbHVkZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5j bHVkZSAibGludXgtdGRlcC5oIgotIAotIC8qIFRoZSBzaWd0cmFtcCBjb2RlIGlzIGluIGEgbm9u LXJlYWRhYmxlIChleGVjdXRhYmxlLW9ubHkpIHJlZ2lvbgotICAgIG9mIG1lbW9yeSBjYWxsZWQg dGhlIGBgZ2F0ZSBwYWdlJycuICBUaGUgYWRkcmVzc2VzIGluIHF1ZXN0aW9uCi1AQCAtMTM5LDYg KzE0MCw5IEBAIGlhNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8KLSAgIC8q IEVuYWJsZSBUTFMgc3VwcG9ydC4gICovCi0gICBzZXRfZ2RiYXJjaF9mZXRjaF90bHNfbG9hZF9t b2R1bGVfYWRkcmVzcyAoZ2RiYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdnI0X2ZldGNoX29iamZpbGVfbGlua19tYXApOwotKwotKyAgc2V0X2dk YmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxpbnV4 X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gCi0gLyogUHJvdmlkZSBhIHByb3Rv dHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9pbmZjYWxsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIw MTAwMTIxLm9yaWcvZ2RiL2luZmNhbGwuYwkyMDEwLTAxLTAxIDA4OjMxOjM2LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2luZmNhbGwuYwkyMDEwLTAxLTIxIDE1 OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTI1Miw5ICsyNTIsMTcgQEAgZmluZF9mdW5jdGlv bl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aQotICAgICAgIGlmIChUWVBFX0NPREUgKGZ0eXBl KSA9PSBUWVBFX0NPREVfRlVOQwotIAkgIHx8IFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09E RV9NRVRIT0QpCi0gCXsKLS0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKLS0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLS0J ICB2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIENPUkVfQUREUiBm dW5hZGRyMjsKLSsKLSsJICBmdW5hZGRyMiA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCi0rCQkJCQkJCSAmY3VycmVudF90YXJnZXQpOwotKwot KwkgIC8qIElmIFRZUEVfR05VX0lGVU5DIGlzIGN1cnJlbnRseSBub3QgcmVzb2x2YWJsZSBrZWVw IGl0cyB0eXBlLiAgKi8KLSsJICBpZiAoZnVuYWRkcjIgIT0gZnVuYWRkciB8fCAhVFlQRV9HTlVf SUZVTkMgKGZ0eXBlKSkKLSsJICAgIHsKLSsJICAgICAgZnVuYWRkciA9IGZ1bmFkZHIyOwotKwkg ICAgICB2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgICAgfQotIAl9 Ci0gICAgIH0KLSAgIGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX0lOVCkKLUluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTIxL2dkYi9saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4w LjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2xpbnV4LXRkZXAuYwkyMDEwLTAxLTE0IDIyOjIwOjExLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xpbnV4LXRkZXAuYwky MDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTIzLDYgKzIzLDggQEAKLSAj aW5jbHVkZSAiYXV4di5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZWxmL2Nv bW1vbi5oIgotKyNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJpbmZjYWxsLmgiCi0gCi0g LyogVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0 Ci0gICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVjdHVyZS4gICov Ci1AQCAtMTUyLDMgKzE1NCw0MyBAQCBsaW51eF9oYXNfc2hhcmVkX2FkZHJlc3Nfc3BhY2UgKHZv aWQpCi0gCi0gICByZXR1cm4gdGFyZ2V0X2lzX3VjbGludXg7Ci0gfQotKwotKy8qIENhbGwgZ251 LWlmdW5jIHRvIHJlc29sdmUgYnJlYWtwb2ludCBhdCBpdHMgcmV0dXJuZWQgZnVuY3Rpb24uICAq LwotKwotK0NPUkVfQUREUgotK2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgZnVuY19wdHIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCB0eXBlICpmdW5j X2Z1bmNfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOwot KyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sOwotKyAgc3RydWN0IHZhbHVlICpmdW5j dGlvbiwgKmFkZHJlc3M7Ci0rCi0rICBpZiAoIXRhcmdldF9oYXNfZXhlY3V0aW9uKQotKyAgICBy ZXR1cm4gcGM7Ci0rCi0rICBtc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChm dW5jX3B0cik7Ci0rICBpZiAobXN5bWJvbCA9PSBOVUxMKQotKyAgICByZXR1cm4gcGM7Ci0rICBp ZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSAhPSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0rICAgIHJl dHVybiBwYzsKLSsKLSsgIC8qIE5vdCBhdCB0aGUgZ251LWlmdW5jIGVudHJ5IHBvaW50PyAgKi8K LSsgIGlmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkgIT0gZnVuY19wdHIpCi0rICAg IHJldHVybiBwYzsKLSsKLSsgIGZ1bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190 eXBlKTsKLSsgIHNldF92YWx1ZV9hZGRyZXNzIChmdW5jdGlvbiwgcGMpOwotKwotKyAgLyogZ251 LWlmdW5jcyBoYXZlIG5vIGFyZ3VtZW50cy4gIEZVTkNUSU9OIGlzIHRoZSBjb2RlIGluc3RydWN0 aW9uIGFkZHJlc3MKLSsgICAgIHdoaWxlIEFERFJFU1MgaXMgYSBmdW5jdGlvbiBkZXNjcmlwdG9y LiAgKi8KLSsgIGFkZHJlc3MgPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBO VUxMKTsKLSsKLSsgIHJldHVybiB2YWx1ZV9hc19hZGRyZXNzIChhZGRyZXNzKTsKLSt9Ci0rCi0r Q09SRV9BRERSCi0rbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkciwKLSsJCQkJICBzdHJ1Y3QgdGFyZ2V0X29wcyAq dGFyZykKLSt7Ci0rICByZXR1cm4gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2Ri YXJjaCwgYWRkciwgYWRkcik7Ci0rfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xp bnV4LXRkZXAuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIv bGludXgtdGRlcC5oCTIwMTAtMDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvbGludXgtdGRlcC5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAw MDAwMDAwICswMTAwCi1AQCAtMjIsNCArMjIsMTEgQEAKLSAKLSBzdHJ1Y3QgdHlwZSAqbGludXhf Z2V0X3NpZ2luZm9fdHlwZSAoc3RydWN0IGdkYmFyY2ggKik7Ci0gCi0rQ09SRV9BRERSIGxpbnV4 X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJ CQkJICAgQ09SRV9BRERSIGZ1bmNfcHRyLCBDT1JFX0FERFIgcGMpOwotKwotK0NPUkVfQUREUiBs aW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs Ci0rCQkJCQkgICAgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgICAgc3RydWN0IHRhcmdldF9vcHMg KnRhcmcpOwotKwotICNlbmRpZiAvKiBsaW51eC10ZGVwLmggKi8KLUluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTIxL2dkYi9tMzJyLWxpbnV4LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMjEub3JpZy9nZGIvbTMyci1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMToz Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tMzJyLWxpbnV4 LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMwLDYgKzMw LDcgQEAKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotIAotICNpbmNsdWRlICJnbGliYy10ZGVw LmgiCi0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLSAjaW5jbHVkZSAic29saWItc3ZyNC5oIgot ICNpbmNsdWRlICJzeW10YWIuaCIKLSAKLUBAIC00MjIsNiArNDIzLDkgQEAgbTMycl9saW51eF9p bml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbwotICAgLyogRW5hYmxlIFRMUyBzdXBwb3J0LiAg Ki8KLSAgIHNldF9nZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRyZXNzIChnZGJhcmNo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2cjRfZmV0 Y2hfb2JqZmlsZV9saW5rX21hcCk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVu Y19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNz aW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pY3Jv YmxhemUtbGludXgtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5v cmlnL2dkYi9taWNyb2JsYXplLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjM3LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pY3JvYmxhemUtbGludXgt dGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMzUsNiArMzUs NyBAQAotICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCi0gI2luY2x1ZGUgImZyYW1lLXVud2luZC5o IgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0g Ci0gCi0gc3RhdGljIGludAotQEAgLTEzMyw2ICsxMzQsOSBAQCBtaWNyb2JsYXplX2xpbnV4X2lu aXRfYWJpIChzdHJ1Y3QgZ2RiYXJjCi0gICAvKiBUcmFtcG9saW5lcy4gICovCi0gICB0cmFtcF9m cmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLAotIAkJCQkmbWljcm9ibGF6ZV9saW51eF9z aWdoYW5kbGVyX3RyYW1wX2ZyYW1lKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkcik7Ci0gfQotIAotIHZvaWQKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9t aW5zeW1zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL21p bnN5bXMuYwkyMDEwLTAxLTIxIDE1OjEzOjI2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL21pbnN5bXMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCAr MDEwMAotQEAgLTMzMSw4ICszMzEsOSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoY29u c3QgY2hhciAqCi0gCSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+aGFzaF9uZXh0KQotIAkgICAg ewotIAkgICAgICBpZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwgbmFt ZSkgPT0gMCAmJgotLQkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dCB8fAot LQkJICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmlsZV90ZXh0KSkKLSsJCSAgKE1T WU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJCSAgIHx8IE1TWU1CT0xfVFlQRSAo bXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jCi0rCQkgICB8fCBNU1lNQk9MX1RZUEUgKG1z eW1ib2wpID09IG1zdF9maWxlX3RleHQpKQotIAkJewotIAkJICBzd2l0Y2ggKE1TWU1CT0xfVFlQ RSAobXN5bWJvbCkpCi0gCQkgICAgewotQEAgLTY5OCw2ICs2OTksMTYgQEAgbG9va3VwX21pbmlt YWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcAotIHsKLSAgIHJldHVybiBsb29rdXBfbWluaW1h bF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwotIH0KLSsKLSsvKiBSZXR1cm4gbm9u LXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9uIGltcGxlbWVudGluZyBnbnUtaWZ1bmMgc2VsZWN0 aW9uLiAgKi8KLSsKLStpbnQKLStpbl9nbnVfaWZ1bmNfc3R1YiAoQ09SRV9BRERSIHBjKQotK3sK LSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJv bF9ieV9wYyAocGMpOwotKwotKyAgcmV0dXJuIG1zeW1ib2wgJiYgTVNZTUJPTF9UWVBFIChtc3lt Ym9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0rfQotIAwKLSAKLSAvKiBSZXR1cm4gbGVhZGlu ZyBzeW1ib2wgY2hhcmFjdGVyIGZvciBhIEJGRC4gSWYgQkZEIGlzIE5VTEwsCi1AQCAtNzM3LDYg Kzc0OCw3IEBAIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICoKLSAgIHN3 aXRjaCAobXNfdHlwZSkKLSAgICAgewotICAgICBjYXNlIG1zdF90ZXh0OgotKyAgICBjYXNlIG1z dF90ZXh0X2dudV9pZnVuYzoKLSAgICAgY2FzZSBtc3RfZmlsZV90ZXh0OgotICAgICBjYXNlIG1z dF9zb2xpYl90cmFtcG9saW5lOgotICAgICAgIHNlY3Rpb24gPSBTRUNUX09GRl9URVhUIChvYmpm aWxlKTsKLUBAIC0xMjAyLDcgKzEyMTQsOCBAQCBmaW5kX3NvbGliX3RyYW1wb2xpbmVfdGFyZ2V0 IChzdHJ1Y3QgZnJhCi0gICAgIHsKLSAgICAgICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1zeW1i b2wpCi0gICAgICAgewotLQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAot KwlpZiAoKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJICAgIHx8IE1TWU1C T0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQotIAkgICAgJiYgc3RyY21w IChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKLSAJCSAgICAgICBTWU1CT0xfTElOS0FH RV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKLSAJICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJFU1Mg KG1zeW1ib2wpOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pcHMtbGludXgtdGRl cC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9taXBzLWxp bnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL21pcHMtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEu MDAwMDAwMDAwICswMTAwCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlICJ0YXJnZXQtZGVz Y3JpcHRpb25zLmgiCi0gI2luY2x1ZGUgIm1pcHMtbGludXgtdGRlcC5oIgotICNpbmNsdWRlICJn bGliYy10ZGVwLmgiCi0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLSAKLSBzdGF0aWMgc3RydWN0 IHRhcmdldF9zb19vcHMgbWlwc19zdnI0X3NvX29wczsKLSAKLUBAIC0xMjI1LDYgKzEyMjYsOSBA QCBtaXBzX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCi0gCXRkZXNjX251bWJl cmVkX3JlZ2lzdGVyIChmZWF0dXJlLCB0ZGVzY19kYXRhLCBNSVBTX1JFU1RBUlRfUkVHTlVNLAot IAkJCQkgInJlc3RhcnQiKTsKLSAgICAgfQotKwotKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyKTsKLSB9Ci0gCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1X bWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9t bjEwMzAwLWxpbnV4LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEu b3JpZy9nZGIvbW4xMDMwMC1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozNy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAu YwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMyLDYgKzMyLDcgQEAK LSAjaW5jbHVkZSAiZnJhbWUuaCIKLSAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgotICNpbmNsdWRl ICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUg PHN0ZGxpYi5oPgotIAotQEAgLTcxOCw2ICs3MTksOSBAQCBhbTMzX2xpbnV4X2luaXRfb3NhYmkg KHN0cnVjdCBnZGJhcmNoX2luCi0gCi0gICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChn ZGJhcmNoLCAmYW0zM19saW51eF9zaWdmcmFtZSk7Ci0gICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vu d2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51eF9ydF9zaWdmcmFtZSk7Ci0rCi0rICBzZXRfZ2Ri YXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90 eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL29iamMtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4y MDEwMDEyMS5vcmlnL2dkYi9vYmpjLWxhbmcuYwkyMDEwLTAxLTE0IDA5OjAzOjM2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL29iamMtbGFuZy5jCTIwMTAtMDEt MjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMTE3OCwxNiArMTE3OCw2IEBAIGZpbmRf bWV0aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFiLCBjaGEKLSAKLSAJICBRVUlUOwotIAotLQkg IC8qIFRoZSBtaW5pbWFsIHN5bWJvbCBtaWdodCBwb2ludCB0byBhIGZ1bmN0aW9uIGRlc2NyaXB0 b3I7Ci0tCSAgICAgcmVzb2x2ZSBpdCB0byB0aGUgYWN0dWFsIGNvZGUgYWRkcmVzcyBpbnN0ZWFk LiAgKi8KLS0JICBwYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsIHBjLAotLQkJCQkJCSAgICZjdXJyZW50X3RhcmdldCk7Ci0tCi0tCSAgaWYgKHN5bXRhYikK LS0JICAgIGlmIChwYyA8IEJMT0NLX1NUQVJUIChibG9jaykgfHwgcGMgPj0gQkxPQ0tfRU5EIChi bG9jaykpCi0tCSAgICAgIC8qIE5vdCBpbiB0aGUgc3BlY2lmaWVkIHN5bXRhYi4gICovCi0tCSAg ICAgIGNvbnRpbnVlOwotLQotIAkgIHN5bW5hbWUgPSBTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3lt Ym9sKTsKLSAJICBpZiAoc3ltbmFtZSA9PSBOVUxMKQotIAkgICAgY29udGludWU7Ci1AQCAtMTIy Myw2ICsxMjEzLDE3IEBAIGZpbmRfbWV0aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFiLCBjaGEK LSAJICAgICAgKChuc2VsZWN0b3IgPT0gTlVMTCkgfHwgKHN0cmNtcCAoc2VsZWN0b3IsIG5zZWxl Y3RvcikgIT0gMCkpKQotIAkgICAgY29udGludWU7Ci0gCi0rCSAgLyogVGhlIG1pbmltYWwgc3lt Ym9sIG1pZ2h0IHBvaW50IHRvIGEgZnVuY3Rpb24gZGVzY3JpcHRvcjsKLSsJICAgICByZXNvbHZl IGl0IHRvIHRoZSBhY3R1YWwgY29kZSBhZGRyZXNzIGluc3RlYWQuICBEZWxheSB0aGUgY2FsbCBh cwotKwkgICAgIGl0cyByZXNvbHV0aW9uIG1heSBiZSBleHBlbnNpdmUuICAqLwotKwkgIHBjID0g Z2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcGMsCi0rCQkJCQkJ ICAgJmN1cnJlbnRfdGFyZ2V0KTsKLSsKLSsJICBpZiAoc3ltdGFiKQotKwkgICAgaWYgKHBjIDwg QkxPQ0tfU1RBUlQgKGJsb2NrKSB8fCBwYyA+PSBCTE9DS19FTkQgKGJsb2NrKSkKLSsJICAgICAg LyogTm90IGluIHRoZSBzcGVjaWZpZWQgc3ltdGFiLiAgKi8KLSsJICAgICAgY29udGludWU7Ci0r Ci0gCSAgc3ltID0gZmluZF9wY19mdW5jdGlvbiAocGMpOwotIAkgIGlmIChzeW0gIT0gTlVMTCkK LSAJICAgIHsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9wYXJzZS5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMjEg MTU6MTM6MjYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvcGFy c2UuYwkyMDEwLTAxLTIxIDE1OjE2OjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTUxNiw2ICs1MTYs MTEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbAotIAl3cml0ZV9l eHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wp OwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSsgICAg ICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkKLSsJCQkJCSAgICAg ICAtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKTsKLSsgICAgICBicmVhazsKLSsKLSAg ICAgY2FzZSBtc3RfZGF0YToKLSAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgotICAgICBjYXNlIG1z dF9ic3M6Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvcHBjLWxpbnV4LXRkZXAuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvcHBjLWxpbnV4LXRk ZXAuYwkyMDEwLTAxLTA0IDE1OjU3OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL3BwYy1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAw MDAgKzAxMDAKLUBAIC00OCw2ICs0OCw3IEBACi0gI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAj aW5jbHVkZSAic3B1LXRkZXAuaCIKLSAjaW5jbHVkZSAieG1sLXN5c2NhbGwuaCIKLSsjaW5jbHVk ZSAibGludXgtdGRlcC5oIgotIAotICNpbmNsdWRlICJmZWF0dXJlcy9yczYwMDAvcG93ZXJwYy0z MmwuYyIKLSAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtYWx0aXZlYzMybC5jIgot QEAgLTY3Miw4ICs2NzMsMTkgQEAgcHBjNjRfbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIgKAotICAgICAgIHJlcyA9IGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAocy0+YmZkLCBzLT50 aGVfYmZkX3NlY3Rpb24sCi0gCQkJCSAgICAgICZidWYsIGFkZHIgLSBzLT5hZGRyLCA4KTsKLSAg ICAgICBpZiAocmVzICE9IDApCi0tCXJldHVybiBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1 ZiwgOCwgYnl0ZV9vcmRlcikKLS0JCS0gYmZkX3NlY3Rpb25fdm1hIChzLT5iZmQsIHMtPnRoZV9i ZmRfc2VjdGlvbikgKyBzLT5hZGRyOwotKwl7Ci0rCSAgQ09SRV9BRERSIHBjLCByZXNvbHZlZDsK LSsJICAKLSsJICBwYyA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmLCA4LCBieXRlX29y ZGVyKQotKwkgICAgICAgLSBiZmRfc2VjdGlvbl92bWEgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0 aW9uKSArIHMtPmFkZHI7Ci0rCi0rCSAgcmVzb2x2ZWQgPSBsaW51eF9jb252ZXJ0X2Zyb21fZnVu Y19hbmRfcHRyIChnZGJhcmNoLCBhZGRyLCBwYyk7Ci0rCSAgaWYgKHJlc29sdmVkICE9IHBjKQot KwkgICAgcGMgPSBwcGM2NF9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwgcmVzb2x2ZWQsCi0rCQkJCQkJCSB0YXJnKTsKLSsKLSsJICByZXR1cm4gcGM7Ci0rCX0KLSAg ICB9Ci0gCi0gICByZXR1cm4gYWRkcjsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9z aC1saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcv Z2RiL3NoLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjQxLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3NoLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1 OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTI1LDYgKzI1LDcgQEAKLSAKLSAjaW5jbHVkZSAi Z2xpYmMtdGRlcC5oIgotICNpbmNsdWRlICJzaC10ZGVwLmgiCi0rI2luY2x1ZGUgImxpbnV4LXRk ZXAuaCIKLSAKLSAjZGVmaW5lIFJFR1N4MTYoYmFzZSkgXAotICAgeyhiYXNlKSwgICAgICAwfSwg XAotQEAgLTg5LDYgKzkwLDkgQEAgc2hfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2lu Zm8gaQotICAgICAgIHRkZXAtPmNvcmVfZ3JlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVn bWFwICopZ3JlZ3NfdGFibGU7Ci0gICAgICAgdGRlcC0+Y29yZV9mcHJlZ21hcCA9IChzdHJ1Y3Qg c2hfY29yZWZpbGVfcmVnbWFwICopZnByZWdzX3RhYmxlOwotICAgICB9Ci0rCi0rICBzZXRfZ2Ri YXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90 eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL3NvbGliLXN2cjQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDEtMjEgMTU6MTU6MjIuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvc29saWItc3ZyNC5jCTIwMTAt MDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMTI1Nyw3ICsxMjU3LDggQEAgc3Zy NF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcAotIAkgICAmJiBwYyA8IGluZm8t PmludGVycF90ZXh0X3NlY3RfaGlnaCkKLSAJICB8fCAocGMgPj0gaW5mby0+aW50ZXJwX3BsdF9z ZWN0X2xvdwotIAkgICAgICAmJiBwYyA8IGluZm8tPmludGVycF9wbHRfc2VjdF9oaWdoKQotLQkg IHx8IGluX3BsdF9zZWN0aW9uIChwYywgTlVMTCkpOwotKwkgIHx8IGluX3BsdF9zZWN0aW9uIChw YywgTlVMTCkKLSsJICB8fCBpbl9nbnVfaWZ1bmNfc3R1YiAocGMpKTsKLSB9Ci0gCi0gLyogR2l2 ZW4gYW4gZXhlY3V0YWJsZSdzIEFCRkQgYW5kIHRhcmdldCwgY29tcHV0ZSB0aGUgZW50cnktcG9p bnQKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zcGFyYy1saW51eC10ZGVwLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3NwYXJjLWxpbnV4LXRk ZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL3NwYXJjLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAw MDAwMCArMDEwMAotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0gI2lu Y2x1ZGUgInRyYWQtZnJhbWUuaCIKLSAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKLSsjaW5jbHVk ZSAibGludXgtdGRlcC5oIgotIAotICNpbmNsdWRlICJzcGFyYy10ZGVwLmgiCi0gCi1AQCAtMjc5 LDYgKzI4MCw5IEBAIHNwYXJjMzJfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2kKLSAg IGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKLSAKLSAgIHNldF9nZGJhcmNoX3dy aXRlX3BjIChnZGJhcmNoLCBzcGFyY19saW51eF93cml0ZV9wYyk7Ci0rCi0rICBzZXRfZ2RiYXJj aF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29u dmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBl IHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL3NwYXJjNjQtbGludXgtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC41MC4yMDEwMDEyMS5vcmlnL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4 OjMxOjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3NwYXJj NjQtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAt MzEsNiArMzEsNyBAQAotICNpbmNsdWRlICJzeW10YWIuaCIKLSAjaW5jbHVkZSAidHJhZC1mcmFt ZS5oIgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgi Ci0gCi0gI2luY2x1ZGUgInNwYXJjNjQtdGRlcC5oIgotIAotQEAgLTI0NCw2ICsyNDUsOSBAQCBz cGFyYzY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pCi0gICB0ZGVwLT5zdGVwX3Ry YXAgPSBzcGFyYzY0X2xpbnV4X3N0ZXBfdHJhcDsKLSAKLSAgIHNldF9nZGJhcmNoX3dyaXRlX3Bj IChnZGJhcmNoLCBzcGFyYzY0X2xpbnV4X3dyaXRlX3BjKTsKLSsKLSsgIHNldF9nZGJhcmNoX2Nv bnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAwKLSAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTIxL2dkYi9zeW1taXNjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9y aWcvZ2RiL3N5bW1pc2MuYwkyMDEwLTAxLTIxIDE1OjEzOjI3LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5bW1pc2MuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAw MDAwMDAwMCArMDEwMAotQEAgLTI5NCw2ICsyOTQsOSBAQCBkdW1wX21zeW1ib2xzIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgCi0gCWNhc2UgbXN0X3RleHQ6Ci0gCSAgbXNfdHlwZSA9ICdUJzsK LSAJICBicmVhazsKLSsJY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6Ci0rCSAgbXNfdHlwZSA9ICdp JzsKLSsJICBicmVhazsKLSAJY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToKLSAJICBtc190eXBl ID0gJ1MnOwotIAkgIGJyZWFrOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5bXRh Yi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9zeW10YWIu YwkyMDEwLTAxLTIxIDE1OjEzOjI3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAxMjEvZ2RiL3N5bXRhYi5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1A QCAtMzI0NCw3ICszMjQ0LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWlu X2VudQotICAge21zdF9maWxlX2RhdGEsIG1zdF9zb2xpYl90cmFtcG9saW5lLCBtc3RfYWJzLCBt c3RfdW5rbm93bn07Ci0gICBzdGF0aWMgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIHR5cGVzNFtd Ci0gICA9Ci0tICB7bXN0X2ZpbGVfYnNzLCBtc3RfdGV4dCwgbXN0X2FicywgbXN0X3Vua25vd259 OwotKyAge21zdF9maWxlX2JzcywgbXN0X3RleHRfZ251X2lmdW5jLCBtc3RfYWJzLCBtc3RfdW5r bm93bn07Ci0gICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTsKLSAgIGVudW0gbWlu aW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMjsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBv dXJ0eXBlMzsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW10YWIuaAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wMS0y MSAxNToxMTowOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9z eW10YWIuaAkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTI4MCw2ICsy ODAsOCBAQCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUKLSB7Ci0gICBtc3RfdW5rbm93biA9IDAs CQkvKiBVbmtub3duIHR5cGUsIHRoZSBkZWZhdWx0ICovCi0gICBtc3RfdGV4dCwJCQkvKiBHZW5l cmFsbHkgZXhlY3V0YWJsZSBpbnN0cnVjdGlvbnMgKi8KLSsgIG1zdF90ZXh0X2dudV9pZnVuYywJ CS8qIEV4ZWN1dGFibGUgY29kZSByZXR1cm5pbmcgYWRkcmVzcwotKwkJCQkgICBvZiBleGVjdXRh YmxlIGNvZGUgKi8KLSAgIG1zdF9kYXRhLAkJCS8qIEdlbmVyYWxseSBpbml0aWFsaXplZCBkYXRh ICovCi0gICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxseSB1bmluaXRpYWxpemVkIGRhdGEgKi8KLSAg IG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29sdXRlIChub25yZWxvY2F0YWJsZSkgKi8KLUBA IC0xMTU3LDYgKzExNTksOCBAQCBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBf bWluCi0gCi0gZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3lt Ym9sX2J5X3BjIChDT1JFX0FERFIpOwotIAotK2V4dGVybiBpbnQgaW5fZ251X2lmdW5jX3N0dWIg KENPUkVfQUREUiBwYyk7Ci0rCi0gZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbAotICAgKmxv b2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19zZWN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpf c2VjdGlvbiAqKTsKLSAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwkyMDEwLTAxLTIxIDE1OjE1OjQx LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw1NCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLSt0eXBlZGVmIGlu dCAoKmZpbmFsX3QpIChpbnQgYXJnKTsKLSsKLStzdGF0aWMgaW50Ci0raW5pdF9zdHViIChpbnQg YXJnKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0rZmluYWwgKGludCBh cmcpCi0rewotKyAgcmV0dXJuIGFyZyArIDE7Ci0rfQotKwotK3N0YXRpYyB2b2xhdGlsZSBpbnQg Z251X2lmdW5jX2luaXRpYWxpemVkOwotKwotK3ZvaWQKLStnbnVfaWZ1bmNfcHJlICh2b2lkKQot K3sKLSsgIGFzc2VydCAoIWdudV9pZnVuY19pbml0aWFsaXplZCk7Ci0rCi0rICBnbnVfaWZ1bmNf aW5pdGlhbGl6ZWQgPSAxOwotK30KLSsKLStmaW5hbF90IGdudV9pZnVuY1ggKHZvaWQpIGFzbSAo ImdudV9pZnVuYyIpOwotK2FzbSAoIi50eXBlIGdudV9pZnVuYywgQGdudV9pbmRpcmVjdF9mdW5j dGlvbiIpOwotKwotK2ZpbmFsX3QKLStnbnVfaWZ1bmNYICh2b2lkKQotK3sKLSsgIGlmICghZ251 X2lmdW5jX2luaXRpYWxpemVkKQotKyAgICByZXR1cm4gaW5pdF9zdHViOwotKyAgZWxzZQotKyAg ICByZXR1cm4gZmluYWw7Ci0rfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAw MDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwzNiBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLStleHRlcm4gaW50IGdu dV9pZnVuYyAoaW50IGFyZyk7Ci0rZXh0ZXJuIHZvaWQgZ251X2lmdW5jX3ByZSAodm9pZCk7Ci0r Ci0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGdudV9pZnVuY19wcmUg KCk7Ci0rICAKLSsgIGkgPSBnbnVfaWZ1bmMgKDEpOwkvKiBicmVhay1hdC1jYWxsICovCi0rICBh c3NlcnQgKGkgPT0gMik7Ci0rCi0rICBnbnVfaWZ1bmMgKDIpOwkvKiBicmVhay1hdC1uZXh0Y2Fs bCAqLwotKwotKyAgcmV0dXJuIDA7CS8qIGJyZWFrLWF0LWV4aXQgKi8KLSt9Ci1JbmRleDogZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlm dW5jLmV4cAkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwx MTUgQEAKLSsjIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYge1tza2lwX3NobGli X3Rlc3RzXX0gewotKyAgICByZXR1cm4gMAotK30KLSsKLStzZXQgdGVzdGZpbGUgImdudS1pZnVu YyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfQotKwotK3NldCBsaWJmaWxlICIke3Rlc3RmaWxlfS1saWIiCi0r c2V0IGxpYnNyYyAke2xpYmZpbGV9LmMKLStzZXQgbGliX3NvICR7b2JqZGlyfS8ke3N1YmRpcn0v JHtsaWJmaWxlfS5zbwotKwotK3NldCBsaWJfbm9kZWJ1Z19zb19iYXNlICR7bGliZmlsZX0tbm9k ZWJ1Zy5zbwotK3NldCBsaWJfbm9kZWJ1Z19zbyAke29iamRpcn0vJHtzdWJkaXJ9LyR7bGliX25v ZGVidWdfc29fYmFzZX0KLSsKLSsjIHtkZWJ1Z30gcHJvdmlkZXMgRFdBUkYgc3ltYm9sIGdudV9p ZnVuY1ggY29uZnVzaW5nIHRoZSBFTEYgc3ltYm9sCi0rIyBnbnVfaWZ1bmMgZHVyaW5nIGFkZHJl c3MtPnN5bWJvbCByZXNvbHV0aW9uIGZvciBwcmludGluZyB0aGUgc3ltYm9sLgotKyMgU3RpbGwg d2UgbmVlZCBpdCBoZXJlIGZvciAic3RlcCJwaW5nIGludG8gdGhlIGZ1bmN0aW9uLgotK3NldCBs aWJfb3B0cyBbbGlzdCBkZWJ1Z10KLStzZXQgbGliX25vZGVidWdfb3B0cyBbbGlzdF0KLStzZXQg ZXhlY19vcHRzIFtsaXN0IGRlYnVnIHNobGliPSRsaWJfc29dCi0rCi0raWYgW2dldF9jb21waWxl cl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dkYl9j b21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJGxpYnNyYyAkbGliX3NvICRsaWJfb3B0 c10gIT0gIiIKLSsgICAgIHx8IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRzcmNm aWxlICRiaW5maWxlIGV4ZWN1dGFibGUgJGV4ZWNfb3B0c10gIT0gIiJ9IHsKLSsgICAgdW50ZXN0 ZWQgIkNvdWxkIG5vdCBjb21waWxlIGVpdGhlciAkbGlic3JjIG9yICRzcmNmaWxlLiIKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSsKLStjbGVhbl9y ZXN0YXJ0ICR0ZXN0ZmlsZQotK2dkYl9sb2FkX3NobGlicyAke2xpYl9zb30KLSsKLStpZiAhW3J1 bnRvX21haW5dIHRoZW4gewotKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFpbiIKLSsgICAgcmV0 dXJuIDE7Ci0rfQotKwotKyMgVGhlICJpZiIgY29uZGl0aW9uIGlzIGFydGlmaWNhbCB0byB0ZXN0 IHJlZ3Jlc3Npb24gb2YgYSBmb3JtYXQgcGF0Y2guCi0rZ2RiX2JyZWFrcG9pbnQgIltnZGJfZ2V0 X2xpbmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2FsbCJdIGlmIGkgJiYgZ251X2lmdW5jIChpKSAh PSA0MiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstYXQt Y2FsbCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWF0LWNhbGwiICIuKmJy ZWFrLWF0LWNhbGwuKiIKLSsKLSsjIFRlc3QgR0RCIHdpbGwgYXV0b21hdGljYWxseSBpbmRpcmVj dCB0aGUgY2FsbC4KLSsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMgKDMpIiAiID0gNCIKLSsKLSsj IFRlc3QgR0RCIHdpbGwgc2tpcCB0aGUgZ251X2lmdW5jIHJlc29sdmVyIG9uIGZpcnN0IGNhbGwu Ci0rCi0rZ2RiX3Rlc3QgInN0ZXAiICJcclxuZmluYWwgLioiCi0rCi0rIyBUZXN0IEdEQiB3aWxs IG5vdCBicmVhayBiZWZvcmUgdGhlIGZpbmFsIGNob3NlbiBpbXBsZW1lbnRhdGlvbi4KLSsKLSsj IEFsc28gdGVzdCBhIGZvcm1hdCBwYXRjaCByZWdyZXNzaW9uOgotKyMgQ29udGludWluZy4KLSsj IEVycm9yIGluIHRlc3RpbmcgYnJlYWtwb2ludCBjb25kaXRpb246Ci0rIyBBdHRlbXB0IHRvIHRh a2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuCi0rIyAKLSsjIEJyZWFr cG9pbnQgMiwgbWFpbiAoKSBhdCAuL2dkYi5iYXNlL2dudS1pZnVuYy5jOjMzCi0rCi0rZ2RiX3Rl c3QgImNvbnRpbnVlIiAiQ29udGludWluZy5cclxuXHJcbkJyZWFrcG9pbnQgLiogKGF0fGluKSAu KmJyZWFrLWF0LW5leHRjYWxsLioiIFwKLSsJICJjb250aW51ZSB0byBicmVhay1hdC1uZXh0Y2Fs bCIKLSsKLStnZGJfYnJlYWtwb2ludCAiZ251X2lmdW5jIgotKwotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJuZXh0Y2FsbCBnbnVfaWZ1bmMiCi0rCi0rZ2RiX3Rlc3QgImZyYW1lIiAiIzAg KygweFxbMC05YS1mXF0rIGluICspP2ZpbmFsIFxcKC4qIiAibmV4dGNhbGwgZ251X2lmdW5jIHNr aXBwZWQiCi0rCi0rCi0rIyBDb21wYXJlIHRoZSB0d28gZGlmZmVyZW50IGFkZHJlc3NlczoKLSsK LStnZGJfdGVzdCAicCBnbnVfaWZ1bmMiICIgPSB7PHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGlu Zm8+fSAweFxbMC05YS1mXF0rIDxmaW5hbD4iICJwIGdudV9pZnVuYyBleGVjdXRpbmciCi0rZ2Ri X3Rlc3QgImluZm8gc3ltIGdudV9pZnVuYyIgImZpbmFsIGluIHNlY3Rpb24gLioiICJpbmZvIHN5 bSBnbnVfaWZ1bmMgZXhlY3V0aW5nIgotKwotK3NldCB0ZXN0ICJpbmZvIGFkZHIgZ251X2lmdW5j IgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJTeW1ib2wgXCJn bnVfaWZ1bmNcIiBpcyBhdCAoMHhcWzAtOWEtZlxdKykgaW4gLiokZ2RiX3Byb21wdCAkIiB7Ci0r CXBhc3MgJHRlc3QKLSsgICAgfQotK30KLStnZGJfdGVzdCAiaW5mbyBzeW0gJGV4cGVjdF9vdXQo MSxzdHJpbmcpIiAiZ251X2lmdW5jIGluIHNlY3Rpb24gLioiICJpbmZvIHN5bSA8Z251X2lmdW5j LWFkZHJlc3M+IgotKwotKyMgPCpnbnVfaWZ1bmM+IHdvdWxkIGJlIGFuIGluY29ycmVjdCByZXNv bHV0aW9uIGZyb20gRFdfQVRfTUlQU19saW5rYWdlX25hbWUuCi0rIyBXZSBkbyBub3QgdXNlIHtk ZWJ1Z30gYnVpbGQgb3B0aW9uIGZvciB0aGlzIHB1cnBvc2UuCi0rCi0raWYgeyBbZ2RiX2NvbXBp bGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfbm9kZWJ1Z19zbyAkbGli X25vZGVidWdfb3B0c10gIT0gIiJ9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxl IGVpdGhlciAkbGlic3JjLiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3RhcnQg JGxpYl9ub2RlYnVnX3NvX2Jhc2UKLSsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMiICIgPSB7PHRl eHQgZ251LWlmdW5jIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gMHhcWzAtOWEtZlxdKyA8Z251 X2lmdW5jPiIgInAgZ251X2lmdW5jIG5vdCBleGVjdXRpbmcgd2l0aG91dCBkZWJ1ZyIKLStnZGJf dGVzdCAiaW5mbyBzeW0gZ251X2lmdW5jIiAiZ251X2lmdW5jIGluIHNlY3Rpb24gLioiICJpbmZv IHN5bSBnbnVfaWZ1bmMgbm90IGV4ZWN1dGluZyB3aXRob3V0IGRlYnVnIgotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMJMjAxMC0wMS0w MSAwODozMTo0Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi94 dGVuc2EtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1A QCAtMjIsNiArMjIsNyBAQAotIAotICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCi0gI2luY2x1ZGUg InN5bXRhYi5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gLyogT1Mgc3BlY2lmaWMg aW5pdGlhbGl6YXRpb24gb2YgZ2RiYXJjaC4gICovCi0gCi1AQCAtMzAsNiArMzEsOSBAQCB4dGVu c2FfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luCi0gewotICAgc2V0X3NvbGliX3N2 cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cwotICAgICAoZ2RiYXJjaCwgc3ZyNF9pbHAzMl9mZXRj aF9saW5rX21hcF9vZmZzZXRzKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3Np bmctcHJvdG90eXBlcy4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNo IGIvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCmluZGV4IGVmODZmMDYuLjNiOTA3OWYgMTAwNjQ0 Ci0tLSBhL2dkYi1mb3J0cmFuLWNvbW1vbi5wYXRjaAorKysgYi9nZGItZm9ydHJhbi1jb21tb24u cGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZHdh cmYycmVhZC5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZHdhcmYycmVhZC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJ MjAxMC0wMS0xNSAyMTozNToxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0xNSAyMTo0MTozMi4wMDAwMDAwMDAgKzAxMDAK LUBAIC01ODExLDEyICs1ODExLDE0IEBAIHJlYWRfc2V0X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHIKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwky MDEwLTAxLTI4IDEyOjUzOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAx MjgvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTI4IDEyOjU0OjM0LjAwMDAwMDAwMCArMDEwMAor QEAgLTU4MTgsMTIgKzU4MTgsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cgogICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOwogIH0K ICAKQEAgLTE5LDcgKzE5LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJm MnJlYWQuYwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKICAgIHN0cnVjdCBzeW1ib2wgKnN5 bTsKICAgIENPUkVfQUREUiBiYXNlID0gKENPUkVfQUREUikgMDsKLUBAIC01ODQxLDEwICs1ODQz LDQwIEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC01ODQ4 LDEwICs1ODUwLDQwIEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwK ICAgICAgfQogICAgaWYgKGRpZS0+Y2hpbGQgIT0gTlVMTCkKICAgICAgewpAQCAtNjAsNyArNjAs NyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgYXR0 ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uLCBj dSk7CiAgCSAgaWYgKGF0dHIpCiAgCSAgICB7Ci1AQCAtNTg2Miw4ICs1ODk0LDI1IEBAIHJlYWRf Y29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC01ODY5LDggKzU5MDEsMjUg QEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIAkgICAgICBTWU1C T0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9IGJhc2UgKyBieXRlX29mZnNldDsKICAJICAgICAgYWRk X3N5bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CiAgCSAgICB9CkBAIC04Niw3 ICs4Niw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKICAg ICAgfQogIH0KICAKLUBAIC05MDUyLDYgKzkxMDEsMTMgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdAorQEAgLTkwNjEsNiArOTExMCwxMyBAQCBuZXdfc3ltYm9sIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0CiAgCSAgICB7CiAgCSAgICAgIHZhcl9kZWNvZGVf bG9jYXRpb24gKGF0dHIsIHN5bSwgY3UpOwogIAkgICAgICBhdHRyMiA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2V4dGVybmFsLCBjdSk7CkBAIC05OSw4ICs5OSw4IEBAIEluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKICsKICAJICAgICAgaWYgKGF0dHIyICYmIChE V19VTlNORCAoYXR0cjIpICE9IDApKQogIAkJewotIAkJICAvKiBXb3JrYXJvdW5kIGdmb3J0cmFu IFBSIGRlYnVnLzQwMDQwIC0gaXQgdXNlcwotQEAgLTkyMzAsNiArOTI4NiwxMSBAQCBuZXdfc3lt Ym9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0CisgCQkgIHN0cnVjdCBwZW5kaW5nICoq bGlzdF90b19hZGQ7CitAQCAtOTI0NSw2ICs5MzAxLDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QKICAJICBTWU1CT0xfRE9NQUlOIChzeW0pID0gTU9EVUxFX0RP TUFJTjsKICAJICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKICAJ ICBicmVhazsKQEAgLTExMiwxMSArMTEyLDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9kd2FyZjJyZWFkLmMKICAJZGVmYXVsdDoKICAJICAvKiBOb3QgYSB0YWcgd2UgcmVjb2du aXplLiAgSG9wZWZ1bGx5IHdlIGFyZW4ndCBwcm9jZXNzaW5nCiAgCSAgICAgdHJhc2ggZGF0YSwg YnV0IHNpbmNlIHdlIG11c3Qgc3BlY2lmaWNhbGx5IGlnbm9yZSB0aGluZ3MKLUluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9mLWxhbmcuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgv Z2RiL2YtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9mLWxhbmcuYwkyMDEwLTAxLTE1IDIxOjM1OjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2YtbGFuZy5jCTIwMTAtMDEtMTUgMjE6MzU6MjcuMDAwMDAwMDAw ICswMTAwCi1AQCAtNDQ4LDI3ICs0NDgsMyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lk KQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZi1sYW5nLmMJMjAxMC0wMS0yOCAx Mjo1MzozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLWxh bmcuYwkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ0NiwyNyArNDQ2 LDMgQEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCkKICAKICAgIGFkZF9sYW5ndWFnZSAo JmZfbGFuZ3VhZ2VfZGVmbik7CiAgfQpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2YtbGFuZy5jCiAtICAgIH0KIC0gIHJldHVybiAoTlVMTCk7CiAt fQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtbGFuZy5oCitJbmRleDogZ2RiLTcu MC41MC4yMDEwMDEyOC9nZGIvZi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIw MTAwMTE1Lm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZi1sYW5nLmgJMjAxMC0wMS0xNSAyMToz NToyNy4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL2Yt bGFuZy5oCTIwMTAtMDEtMjggMTI6NTM6MzguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDEyOC9nZGIvZi1sYW5nLmgJMjAxMC0wMS0yOCAxMjo1Mzo0Ni4wMDAwMDAwMDAgKzAx MDAKIEBAIC01MSwzNiArNTEsOCBAQCBlbnVtIGY5MF9yYW5nZV90eXBlCiAgICAgIE5PTkVfQk9V TkRfREVGQVVMVAkJLyogIihsb3c6aGlnaCkiICAqLwogICAgfTsKQEAgLTE4NSwxMCArMTg1LDEw IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9mLWxhbmcuaAogIAogIC8qIFdoZW4g cmVhc29uYWJsZSBhcnJheSBib3VuZHMgY2Fubm90IGJlIGZldGNoZWQsIHN1Y2ggYXMgd2hlbiAK ICAgICB5b3UgYXNrIHRvICdtdCBwcmludCBzeW1ib2xzJyBhbmQgdGhlcmUgaXMgbm8gc3RhY2sg ZnJhbWUgYW5kIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtdmFscHJpbnQuYwor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2YtdmFscHJpbnQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTAtMDEtMTUg MjE6MzU6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZi12 YWxwcmludC5jCTIwMTAtMDEtMTUgMjE6MzU6MjcuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu MC41MC4yMDEwMDEyOC5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMC0wMS0yOCAxMjo1MzozOC4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMJ MjAxMC0wMS0yOCAxMjo1Mzo0Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zNCw2ICszNCw4IEBACiAg I2luY2x1ZGUgImdkYmNvcmUuaCIKICAjaW5jbHVkZSAiY29tbWFuZC5oIgpAQCAtMzcxLDEwICsz NzEsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtdmFscHJpbnQuYwogIH0K ICAKICB2b2lkCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3RhY2suYworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3N0YWNrLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N0YWNrLmMJMjAxMC0wMS0xNSAyMTozNToxMy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zdGFjay5jCTIwMTAtMDEtMTUg MjE6MzU6MjcuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dk Yi9zdGFjay5jCTIwMTAtMDEtMjggMTI6NTI6MTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC41MC4yMDEwMDEyOC9nZGIvc3RhY2suYwkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCAr MDEwMAogQEAgLTE0NzQsNiArMTQ3NCw4IEBAIHByaW50X2Jsb2NrX2ZyYW1lX2xvY2FscyAoc3Ry dWN0IGJsb2NrICoKICAJY2FzZSBMT0NfQ09NUFVURUQ6CiAgCSAgaWYgKFNZTUJPTF9JU19BUkdV TUVOVCAoc3ltKSkKQEAgLTM4NCwxMCArMzg0LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9zdGFjay5jCiAgCSAgdmFsdWVzX3ByaW50ZWQgPSAxOwogIAkgIHByaW50X3Zhcmlh YmxlX2FuZF92YWx1ZSAoTlVMTCwgc3ltLCBmcmFtZSwgc3RyZWFtLCA0ICogbnVtX3RhYnMpOwog IAkgIGJyZWFrOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRhYi5oCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvc3ltdGFiLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgJMjAxMC0w MS0xNSAyMTozNTo1Ny4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9y aWcvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMjggMTI6NTI6MjAuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvc3ltdGFiLmgJMjAxMC0wMS0yOCAxMjo1Mzo0Ni4wMDAw MDAwMDAgKzAxMDAKIEBAIC00MDEsNyArNDAxLDEwIEBAIHR5cGVkZWYgZW51bSBkb21haW5fZW51 bV90YWcKICAgIFRZUEVTX0RPTUFJTiwKICAKQEAgLTQwMCw4ICs0MDAsMTAgQEAgSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRhYi5oCiAgfQogIGRvbWFpbl9lbnVtOwogIAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2su ZXhwCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2NvbW1vbi1ibG9jay5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAw MDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwxMDEgQEAKICsjIENvcHlyaWdodCAyMDA4IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtNTA0LDggKzUwNiwxMCBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgKICtnZGJfdGVzdCAicCBpeF94IiAiID0g MSAqIiAicCBpeF94IGluIgogK2dkYl90ZXN0ICJwIGl5X3kiICIgPSAyICoiICJwIGl5X3kgaW4i CiArZ2RiX3Rlc3QgInAgaXpfejIiICIgPSAzICoiICJwIGl6X3oyIGluIgotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1i bG9jay5mOTAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5MAkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCAr MDEwMAogQEAgLTAsMCArMSw2NyBAQAogKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArIQoKZGlmZiAtLWdpdCBhL2dkYi1nZGJzZXJ2ZXItdHJhY2Vwb2lu dC1yZXZlcnQucGF0Y2ggYi9nZGItZ2Ric2VydmVyLXRyYWNlcG9pbnQtcmV2ZXJ0LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTk2MjRkLi4wMDAwMDAwCi0tLSBhL2dkYi1n ZGJzZXJ2ZXItdHJhY2Vwb2ludC1yZXZlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcz ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDEvbXNnMDAx ODMuaHRtbAotCi1SRVZFUlQKLQotLS0tIC4vZ2RiL2dkYnNlcnZlci9pMzg3LWZwLmMJMjAxMC0w MS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1m cC5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1AQCAtNzMsNyArNzMsNyBA QCBzdHJ1Y3QgaTM4N19meHNhdmUgewotIH07Ci0gCi0gdm9pZAotLWkzODdfY2FjaGVfdG9fZnNh dmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLStpMzg3X2NhY2hlX3Rv X2ZzYXZlICh2b2lkICpidWYpCi0gewotICAgc3RydWN0IGkzODdfZnNhdmUgKmZwID0gKHN0cnVj dCBpMzg3X2ZzYXZlICopIGJ1ZjsKLSAgIGludCBpOwotQEAgLTgxLDM5ICs4MSwzOCBAQCBpMzg3 X2NhY2hlX3RvX2ZzYXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gICB1bnNpZ25lZCBsb25nIHZh bCwgdmFsMjsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCi0tICAgIGNvbGxlY3RfcmVn aXN0ZXIgKHJlZ2NhY2hlLCBpICsgc3QwX3JlZ251bSwKLS0JCSAgICAgICgoY2hhciAqKSAmZnAt PnN0X3NwYWNlWzBdKSArIGkgKiAxMCk7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGkgKyBzdDBf cmVnbnVtLCAoKGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTApOwotIAotLSAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0t ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2Zm KTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0r ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmb29mZiIsICZmcC0+Zm9vZmYpOwotICAgCi0g ICAvKiBUaGlzIG9uZSdzIDExIGJpdHMuLi4gKi8KLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJmb3AiLCAmdmFsMik7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KCJmb3AiLCAmdmFsMik7Ci0gICBmcC0+Zm9wID0gKHZhbDIgJiAweDdGRikgfCAoZnAtPmZvcCAm IDB4RjgwMCk7Ci0gCi0gICAvKiBTb21lIHJlZ2lzdGVycyBhcmUgMTYtYml0LiAgKi8KLS0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmY3RybCIsICZ2YWwpOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZmN0cmwiLCAmdmFsKTsKLSAgIGZwLT5mY3RybCA9IHZh bDsKLSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2 YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZnN0YXQiLCAmdmFsKTsKLSAgIHZh bCAmPSAweEZGRkY7Ci0gICBmcC0+ZnN0YXQgPSB2YWw7Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAiZnRhZyIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lICgiZnRhZyIsICZ2YWwpOwotICAgdmFsICY9IDB4RkZGRjsKLSAgIGZwLT5mdGFnID0g dmFsOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpc2VnIiwg JnZhbCk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmaXNlZyIsICZ2YWwpOwotICAg dmFsICY9IDB4RkZGRjsKLSAgIGZwLT5maXNlZyA9IHZhbDsKLSAKLS0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgiZm9zZWciLCAmdmFsKTsKLSAgIHZhbCAmPSAweEZGRkY7Ci0gICBmcC0+Zm9z ZWcgPSB2YWw7Ci0gfQotIAotIHZvaWQKLS1pMzg3X2ZzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0raTM4N19mc2F2ZV90b19jYWNoZSAo Y29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIHN0cnVjdCBpMzg3X2ZzYXZlICpmcCA9IChzdHJ1Y3Qg aTM4N19mc2F2ZSAqKSBidWY7Ci0gICBpbnQgaTsKLUBAIC0xMjEsMzUgKzEyMCwzNCBAQCBpMzg3 X2ZzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gICB1bnNpZ25lZCBsb25nIHZh bDsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCi0tICAgIHN1cHBseV9yZWdpc3RlciAo cmVnY2FjaGUsIGkgKyBzdDBfcmVnbnVtLAotLQkJICAgICAoKGNoYXIgKikgJmZwLT5zdF9zcGFj ZVswXSkgKyBpICogMTApOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGkgKyBzdDBfcmVnbnVtLCAo KGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTApOwotIAotLSAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmlvZmYiLCAmZnAtPmZpb2ZmKTsKLS0gIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZvb2ZmIiwgJmZwLT5mb29mZik7Ci0rICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0rICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAoImZvb2ZmIiwgJmZwLT5mb29mZik7Ci0gCi0gICAvKiBTb21lIHJlZ2lz dGVycyBhcmUgMTYtYml0LiAgKi8KLSAgIHZhbCA9IGZwLT5mY3RybCAmIDB4RkZGRjsKLS0gIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZjdHJsIiwgJnZhbCk7Ci0rICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZjdHJsIiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+ZnN0 YXQgJiAweEZGRkY7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3Rh dCIsICZ2YWwpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmc3RhdCIsICZ2YWwpOwot IAotICAgdmFsID0gZnAtPmZ0YWcgJiAweEZGRkY7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJmdGFnIiwgJnZhbCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo ImZ0YWciLCAmdmFsKTsKLSAKLSAgIHZhbCA9IGZwLT5maXNlZyAmIDB4RkZGRjsKLS0gIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpc2VnIiwgJnZhbCk7Ci0rICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAoImZpc2VnIiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+Zm9zZWcg JiAweEZGRkY7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIs ICZ2YWwpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmb3NlZyIsICZ2YWwpOwotIAot ICAgLyogZm9wIGhhcyBvbmx5IDExIHZhbGlkIGJpdHMuICAqLwotICAgdmFsID0gKGZwLT5mb3Ap ICYgMHg3RkY7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3AiLCAm dmFsKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZm9wIiwgJnZhbCk7Ci0gfQotIAot IHZvaWQKLS1pMzg3X2NhY2hlX3RvX2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg dm9pZCAqYnVmKQotK2kzODdfY2FjaGVfdG9fZnhzYXZlICh2b2lkICpidWYpCi0gewotICAgc3Ry dWN0IGkzODdfZnhzYXZlICpmcCA9IChzdHJ1Y3QgaTM4N19meHNhdmUgKikgYnVmOwotICAgaW50 IGk7Ci1AQCAtMTU4LDI5ICsxNTYsMjcgQEAgaTM4N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCBy ZWdjYWNoZSAqcgotICAgdW5zaWduZWQgbG9uZyB2YWwsIHZhbDI7Ci0gCi0gICBmb3IgKGkgPSAw OyBpIDwgODsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHN0MF9y ZWdudW0sCi0tCQkgICAgICAoKGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTYpOwot KyAgICBjb2xsZWN0X3JlZ2lzdGVyIChpICsgc3QwX3JlZ251bSwgKChjaGFyICopICZmcC0+c3Rf c3BhY2VbMF0pICsgaSAqIDE2KTsKLSAgIGZvciAoaSA9IDA7IGkgPCBudW1feG1tX3JlZ2lzdGVy czsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHhtbTBfcmVnbnVt LAotLQkJICAgICAgKChjaGFyICopICZmcC0+eG1tX3NwYWNlWzBdKSArIGkgKiAxNik7Ci0rICAg IGNvbGxlY3RfcmVnaXN0ZXIgKGkgKyB4bW0wX3JlZ251bSwgKChjaGFyICopICZmcC0+eG1tX3Nw YWNlWzBdKSArIGkgKiAxNik7Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiZmlvZmYiLCAmZnAtPmZpb2ZmKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJmb29mZiIsICZmcC0+Zm9vZmYpOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgIm14Y3NyIiwgJmZwLT5teGNzcik7Ci0rICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKCJmaW9mZiIsICZmcC0+ZmlvZmYpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lICgiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo Im14Y3NyIiwgJmZwLT5teGNzcik7Ci0gCi0gICAvKiBUaGlzIG9uZSdzIDExIGJpdHMuLi4gKi8K LS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3AiLCAmdmFsMik7Ci0r ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmb3AiLCAmdmFsMik7Ci0gICBmcC0+Zm9wID0g KHZhbDIgJiAweDdGRikgfCAoZnAtPmZvcCAmIDB4RjgwMCk7Ci0gCi0gICAvKiBTb21lIHJlZ2lz dGVycyBhcmUgMTYtYml0LiAgKi8KLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJmY3RybCIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZmN0cmwi LCAmdmFsKTsKLSAgIGZwLT5mY3RybCA9IHZhbDsKLSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lICgiZnN0YXQiLCAmdmFsKTsKLSAgIGZwLT5mc3RhdCA9IHZhbDsKLSAKLSAgIC8qIENvbnZl cnQgdG8gdGhlIHNpbXBsaWZlZCB0YWcgZm9ybSBzdG9yZWQgaW4gZnhzYXZlIGRhdGEuICAqLwot LSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKLSsg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZ0YWciLCAmdmFsKTsKLSAgIHZhbCAmPSAweEZG RkY7Ci0gICB2YWwyID0gMDsKLSAgIGZvciAoaSA9IDc7IGkgPj0gMDsgaS0tKQotQEAgLTE5Miwx MCArMTg4LDEwIEBAIGkzODdfY2FjaGVfdG9fZnhzYXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKLSAg ICAgfQotICAgZnAtPmZ0YWcgPSB2YWwyOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgImZpc2VnIiwgJnZhbCk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KCJmaXNlZyIsICZ2YWwpOwotICAgZnAtPmZpc2VnID0gdmFsOwotIAotLSAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZvc2VnIiwgJnZhbCk7Ci0rICBjb2xsZWN0X3JlZ2lz dGVyX2J5X25hbWUgKCJmb3NlZyIsICZ2YWwpOwotICAgZnAtPmZvc2VnID0gdmFsOwotIH0KLSAK LUBAIC0yNDcsNyArMjQzLDcgQEAgaTM4N19mdGFnIChzdHJ1Y3QgaTM4N19meHNhdmUgKmZwLCBp bnQgcgotIH0KLSAKLSB2b2lkCi0taTM4N19meHNhdmVfdG9fY2FjaGUgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLStpMzg3X2Z4c2F2ZV90b19jYWNoZSAoY29u c3Qgdm9pZCAqYnVmKQotIHsKLSAgIHN0cnVjdCBpMzg3X2Z4c2F2ZSAqZnAgPSAoc3RydWN0IGkz ODdfZnhzYXZlICopIGJ1ZjsKLSAgIGludCBpLCB0b3A7Ci1AQCAtMjU2LDIyICsyNTIsMjAgQEAg aTM4N19meHNhdmVfdG9fY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAqcgotICAgdW5zaWduZWQgbG9u ZyB2YWw7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCBpICsgc3QwX3JlZ251bSwKLS0JCSAgICAgKChjaGFyICopICZmcC0+c3Rf c3BhY2VbMF0pICsgaSAqIDE2KTsKLSsgICAgc3VwcGx5X3JlZ2lzdGVyIChpICsgc3QwX3JlZ251 bSwgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDE2KTsKLSAgIGZvciAoaSA9IDA7 IGkgPCBudW1feG1tX3JlZ2lzdGVyczsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCBpICsgeG1tMF9yZWdudW0sCi0tCQkgICAgICgoY2hhciAqKSAmZnAtPnhtbV9zcGFjZVsw XSkgKyBpICogMTYpOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGkgKyB4bW0wX3JlZ251bSwgKChj aGFyICopICZmcC0+eG1tX3NwYWNlWzBdKSArIGkgKiAxNik7Ci0gCi0tICBzdXBwbHlfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaW9mZiIsICZmcC0+ZmlvZmYpOwotLSAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKLS0gIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIm14Y3NyIiwgJmZwLT5teGNzcik7Ci0rICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0rICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAoImZvb2ZmIiwgJmZwLT5mb29mZik7Ci0rICBzdXBwbHlfcmVnaXN0 ZXJfYnlfbmFtZSAoIm14Y3NyIiwgJmZwLT5teGNzcik7Ci0gCi0gICAvKiBTb21lIHJlZ2lzdGVy cyBhcmUgMTYtYml0LiAgKi8KLSAgIHZhbCA9IGZwLT5mY3RybCAmIDB4RkZGRjsKLS0gIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZjdHJsIiwgJnZhbCk7Ci0rICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAoImZjdHJsIiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+ZnN0YXQg JiAweEZGRkY7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3RhdCIs ICZ2YWwpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmc3RhdCIsICZ2YWwpOwotIAot ICAgLyogR2VuZXJhdGUgdGhlIGZvcm0gb2YgZnRhZyBkYXRhIHRoYXQgR0RCIGV4cGVjdHMuICAq LwotICAgdG9wID0gKGZwLT5mc3RhdCA+PiAxMSkgJiAweDc7Ci1AQCAtMjg1LDE0ICsyNzksMTQg QEAgaTM4N19meHNhdmVfdG9fY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAqcgotIAl0YWcgPSAzOwot ICAgICAgIHZhbCB8PSB0YWcgPDwgKDIgKiBpKTsKLSAgICAgfQotLSAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAiZnRhZyIsICZ2YWwpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKCJmdGFnIiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+ZmlzZWcgJiAweEZGRkY7Ci0t ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaXNlZyIsICZ2YWwpOwotKyAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmaXNlZyIsICZ2YWwpOwotIAotICAgdmFsID0gZnAt PmZvc2VnICYgMHhGRkZGOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi Zm9zZWciLCAmdmFsKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZm9zZWciLCAmdmFs KTsKLSAKLSAgIHZhbCA9IChmcC0+Zm9wKSAmIDB4N0ZGOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAiZm9wIiwgJnZhbCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAoImZvcCIsICZ2YWwpOwotIH0KLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1mcC5oCTIwMTAt MDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2kzODct ZnAuaAkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTIwLDExICsyMCwx MSBAQAotICNpZm5kZWYgSTM4N19GUF9ICi0gI2RlZmluZSBJMzg3X0ZQX0gKLSAKLS12b2lkIGkz ODdfY2FjaGVfdG9fZnNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1Zik7 Ci0tdm9pZCBpMzg3X2ZzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBj b25zdCB2b2lkICpidWYpOwotK3ZvaWQgaTM4N19jYWNoZV90b19mc2F2ZSAodm9pZCAqYnVmKTsK LSt2b2lkIGkzODdfZnNhdmVfdG9fY2FjaGUgKGNvbnN0IHZvaWQgKmJ1Zik7Ci0gCi0tdm9pZCBp Mzg3X2NhY2hlX3RvX2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVm KTsKLS12b2lkIGkzODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBjb25zdCB2b2lkICpidWYpOwotK3ZvaWQgaTM4N19jYWNoZV90b19meHNhdmUgKHZvaWQgKmJ1 Zik7Ci0rdm9pZCBpMzg3X2Z4c2F2ZV90b19jYWNoZSAoY29uc3Qgdm9pZCAqYnVmKTsKLSAKLSBl eHRlcm4gaW50IG51bV94bW1fcmVnaXN0ZXJzOwotIAotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51 eC1hcm0tbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dk Yi9nZGJzZXJ2ZXIvbGludXgtYXJtLWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAw ICswMTAwCi1AQCAtODEsMTcgKzgxLDE3IEBAIGFybV9jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGlu dCByZWdubykKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1hcm1fZmlsbF9ncmVnc2V0IChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rYXJtX2ZpbGxfZ3JlZ3NldCAodm9pZCAq YnVmKQotIHsKLSAgIGludCBpOwotIAotICAgZm9yIChpID0gMDsgaSA8IGFybV9udW1fcmVnczsg aSsrKQotICAgICBpZiAoYXJtX3JlZ21hcFtpXSAhPSAtMSkKLS0gICAgICBjb2xsZWN0X3JlZ2lz dGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBhcm1fcmVnbWFwW2ldKTsKLSsgICAg ICBjb2xsZWN0X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIGFybV9yZWdtYXBbaV0pOwot IH0KLSAKLSBzdGF0aWMgdm9pZAotLWFybV9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0rYXJtX3N0b3JlX2dyZWdzZXQgKGNvbnN0IHZv aWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAgIGNoYXIgemVyb2J1Zls4XTsKLUBAIC05OSwxMyAr OTksMTMgQEAgYXJtX3N0b3JlX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnYwotICAgbWVt c2V0ICh6ZXJvYnVmLCAwLCA4KTsKLSAgIGZvciAoaSA9IDA7IGkgPCBhcm1fbnVtX3JlZ3M7IGkr KykKLSAgICAgaWYgKGFybV9yZWdtYXBbaV0gIT0gLTEpCi0tICAgICAgc3VwcGx5X3JlZ2lzdGVy IChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBhcm1fcmVnbWFwW2ldKTsKLSsgICAgICBz dXBwbHlfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgYXJtX3JlZ21hcFtpXSk7Ci0gICAg IGVsc2UKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCB6ZXJvYnVmKTsKLSsg ICAgICBzdXBwbHlfcmVnaXN0ZXIgKGksIHplcm9idWYpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAot LWFybV9maWxsX3dtbXhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1 ZikKLSthcm1fZmlsbF93bW14cmVnc2V0ICh2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gCi1A QCAtMTEzLDE2ICsxMTMsMTUgQEAgYXJtX2ZpbGxfd21teHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZQotICAgICByZXR1cm47Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKLS0gICAg Y29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGFybV9udW1fcmVncyArIGksIChjaGFyICopIGJ1 ZiArIGkgKiA4KTsKLSsgICAgY29sbGVjdF9yZWdpc3RlciAoYXJtX251bV9yZWdzICsgaSwgKGNo YXIgKikgYnVmICsgaSAqIDgpOwotIAotICAgLyogV2Ugb25seSBoYXZlIGFjY2VzcyB0byB3Y3Nz Ziwgd2Nhc2YsIGFuZCB3Y2dyMC13Y2dyMy4gICovCi0gICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsr KQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgYXJtX251bV9yZWdzICsgaSArIDE2 LAotLQkJICAgICAgKGNoYXIgKikgYnVmICsgMTYgKiA4ICsgaSAqIDQpOwotKyAgICBjb2xsZWN0 X3JlZ2lzdGVyIChhcm1fbnVtX3JlZ3MgKyBpICsgMTYsIChjaGFyICopIGJ1ZiArIDE2ICogOCAr IGkgKiA0KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1hcm1fc3RvcmVfd21teHJlZ3NldCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK2FybV9zdG9yZV93bW14 cmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gCi1AQCAtMTMwLDE2ICsx MjksMTUgQEAgYXJtX3N0b3JlX3dtbXhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcgotICAgICBy ZXR1cm47Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKLS0gICAgc3VwcGx5X3JlZ2lz dGVyIChyZWdjYWNoZSwgYXJtX251bV9yZWdzICsgaSwgKGNoYXIgKikgYnVmICsgaSAqIDgpOwot KyAgICBzdXBwbHlfcmVnaXN0ZXIgKGFybV9udW1fcmVncyArIGksIChjaGFyICopIGJ1ZiArIGkg KiA4KTsKLSAKLSAgIC8qIFdlIG9ubHkgaGF2ZSBhY2Nlc3MgdG8gd2Nzc2YsIHdjYXNmLCBhbmQg d2NncjAtd2NncjMuICAqLwotICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKLS0gICAgc3VwcGx5 X3JlZ2lzdGVyIChyZWdjYWNoZSwgYXJtX251bV9yZWdzICsgaSArIDE2LAotLQkJICAgICAoY2hh ciAqKSBidWYgKyAxNiAqIDggKyBpICogNCk7Ci0rICAgIHN1cHBseV9yZWdpc3RlciAoYXJtX251 bV9yZWdzICsgaSArIDE2LCAoY2hhciAqKSBidWYgKyAxNiAqIDggKyBpICogNCk7Ci0gfQotIAot IHN0YXRpYyB2b2lkCi0tYXJtX2ZpbGxfdmZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCB2b2lkICpidWYpCi0rYXJtX2ZpbGxfdmZwcmVnc2V0ICh2b2lkICpidWYpCi0gewotICAg aW50IGksIG51bSwgYmFzZTsKLSAKLUBAIC0xNTMsMTMgKzE1MSwxMyBAQCBhcm1fZmlsbF92ZnBy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnCi0gCi0gICBiYXNlID0gZmluZF9yZWdubyAoImQw Iik7Ci0gICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBiYXNlICsgaSwgKGNoYXIgKikgYnVmICsgaSAqIDgpOwotKyAgICBjb2xsZWN0 X3JlZ2lzdGVyIChiYXNlICsgaSwgKGNoYXIgKikgYnVmICsgaSAqIDgpOwotIAotLSAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZwc2NyIiwgKGNoYXIgKikgYnVmICsgMzIg KiA4KTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZwc2NyIiwgKGNoYXIgKikgYnVm ICsgMzIgKiA4KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1hcm1fc3RvcmVfdmZwcmVnc2V0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0rYXJtX3N0b3JlX3Zm cHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIGludCBpLCBudW0sIGJhc2U7Ci0gCi1A QCAtMTczLDI4ICsxNzEsMjggQEAgYXJtX3N0b3JlX3ZmcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZQotIAotICAgYmFzZSA9IGZpbmRfcmVnbm8gKCJkMCIpOwotICAgZm9yIChpID0gMDsgaSA8 IG51bTsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBiYXNlICsgaSwgKGNo YXIgKikgYnVmICsgaSAqIDgpOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGJhc2UgKyBpLCAoY2hh ciAqKSBidWYgKyBpICogOCk7Ci0gCi0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJmcHNjciIsIChjaGFyICopIGJ1ZiArIDMyICogOCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAoImZwc2NyIiwgKGNoYXIgKikgYnVmICsgMzIgKiA4KTsKLSB9Ci0gCi0gZXh0ZXJu IGludCBkZWJ1Z190aHJlYWRzOwotIAotIHN0YXRpYyBDT1JFX0FERFIKLS1hcm1fZ2V0X3BjIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotK2FybV9nZXRfcGMgKCkKLSB7Ci0gICB1bnNpZ25l ZCBsb25nIHBjOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwg JnBjKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKLSAgIGlmIChk ZWJ1Z190aHJlYWRzKQotICAgICBmcHJpbnRmIChzdGRlcnIsICJzdG9wIHBjIGlzICUwOGx4XG4i LCBwYyk7Ci0gICByZXR1cm4gcGM7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tYXJtX3NldF9wYyAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQotK2FybV9zZXRfcGMgKENP UkVfQUREUiBwYykKLSB7Ci0gICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7Ci0tICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7Ci0rICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKLSB9Ci0gCi0gLyogQ29ycmVjdCBpbiBlaXRo ZXIgZW5kaWFubmVzcy4gICovCi1AQCAtMjEyLDEwICsyMTAsOSBAQCBzdGF0aWMgY29uc3QgdW5z aWduZWQgbG9uZyBhcm1fZWFiaV9icmVhCi0gc3RhdGljIGludAotIGFybV9icmVha3BvaW50X2F0 IChDT1JFX0FERFIgd2hlcmUpCi0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdl dF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOwotICAgdW5zaWduZWQgbG9u ZyBjcHNyOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImNwc3Ii LCAmY3Bzcik7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJjcHNyIiwgJmNwc3IpOwot IAotICAgaWYgKGNwc3IgJiAweDIwKQotICAgICB7Ci1AQCAtMjQ2LDExICsyNDMsMTAgQEAgYXJt X2JyZWFrcG9pbnRfYXQgKENPUkVfQUREUiB3aGVyZSkKLSAgICBpcyBvdXRzaWRlIG9mIHRoZSBm dW5jdGlvbi4gIFNvIHJhdGhlciB0aGFuIGltcG9ydGluZyBzb2Z0d2FyZSBzaW5nbGUtc3RlcCwK LSAgICB3ZSBjYW4ganVzdCBydW4gdW50aWwgZXhpdC4gICovCi0gc3RhdGljIENPUkVfQUREUgot LWFybV9yZWluc2VydF9hZGRyICh2b2lkKQotK2FybV9yZWluc2VydF9hZGRyICgpCi0gewotLSAg c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRf aW5mZXJpb3IsIDEpOwotICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJsciIsICZwYyk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKCJsciIsICZwYyk7Ci0gICByZXR1cm4gcGM7Ci0gfQotIAotLS0tIC4vZ2RiL2dkYnNlcnZl ci9saW51eC1jcmlzLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWNyaXMtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4w MDAwMDAwMDAgKzAxMDAKLUBAIC02MiwyMCArNjIsMjAgQEAgY3Jpc19jYW5ub3RfZmV0Y2hfcmVn aXN0ZXIgKGludCByZWdubykKLSBleHRlcm4gaW50IGRlYnVnX3RocmVhZHM7Ci0gCi0gc3RhdGlj IENPUkVfQUREUgotLWNyaXNfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lk KQotK2NyaXNfZ2V0X3BjICh2b2lkKQotIHsKLSAgIHVuc2lnbmVkIGxvbmcgcGM7Ci0tICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOwotKyAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOwotICAgaWYgKGRlYnVnX3RocmVhZHMpCi0gICAg IGZwcmludGYgKHN0ZGVyciwgInN0b3AgcGMgaXMgJTA4bHhcbiIsIHBjKTsKLSAgIHJldHVybiBw YzsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1jcmlzX3NldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgQ09SRV9BRERSIHBjKQotK2NyaXNfc2V0X3BjIChDT1JFX0FERFIgcGMpCi0gewot ICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJw YyIsICZuZXdwYyk7Ci0gfQotIAotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBjcmlzX2Jy ZWFrcG9pbnQgPSAweGU5Mzg7Ci1AQCAtMTAyLDkgKzEwMiw4IEBAIGNyaXNfYnJlYWtwb2ludF9h dCAoQ09SRV9BRERSIHdoZXJlKQotIHN0YXRpYyBDT1JFX0FERFIKLSBjcmlzX3JlaW5zZXJ0X2Fk ZHIgKHZvaWQpCi0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRf cmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOwotICAgdW5zaWduZWQgbG9uZyBwYzsKLS0g IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzcnAiLCAmcGMpOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgic3JwIiwgJnBjKTsKLSAgIHJldHVybiBwYzsKLSB9Ci0g Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWNyaXN2MzItbG93LmMJMjAxMC0wMS0yMCAyMzo1 NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpc3YzMi1s b3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTU0LDIwICs1NCwy MCBAQCBzdGF0aWMgaW50IGNyaXNfcmVnbWFwW10gPSB7Ci0gZXh0ZXJuIGludCBkZWJ1Z190aHJl YWRzOwotIAotIHN0YXRpYyBDT1JFX0FERFIKLS1jcmlzX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSkKLStjcmlzX2dldF9wYyAodm9pZCkKLSB7Ci0gICB1bnNpZ25lZCBsb25nIHBj OwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLSsg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKLSAgIGlmIChkZWJ1Z190aHJl YWRzKQotICAgICBmcHJpbnRmIChzdGRlcnIsICJzdG9wIHBjIGlzICUwOGx4XG4iLCBwYyk7Ci0g ICByZXR1cm4gcGM7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tY3Jpc19zZXRfcGMgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKLStjcmlzX3NldF9wYyAoQ09SRV9BRERS IHBjKQotIHsKLSAgIHVuc2lnbmVkIGxvbmcgbmV3cGMgPSBwYzsKLS0gIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lICgicGMiLCAmbmV3cGMpOwotIH0KLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv cnQgY3Jpc19icmVha3BvaW50ID0gMHhlOTM4OwotQEAgLTk5LDQxICs5OSwzOSBAQCBjcmlzX2Jy ZWFrcG9pbnRfYXQgKENPUkVfQUREUiB3aGVyZSkKLSBzdGF0aWMgQ09SRV9BRERSCi0gY3Jpc19y ZWluc2VydF9hZGRyICh2b2lkKQotIHsKLS0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBn ZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLSAgIHVuc2lnbmVkIGxv bmcgcGM7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic3JwIiwgJnBj KTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInNycCIsICZwYyk7Ci0gICByZXR1cm4g cGM7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICAgIGludCBicCwgdW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCi0rY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKGlu dCBicCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCi0gewotICAgc3dp dGNoIChicCkKLSAgICAgewotICAgICBjYXNlIDA6Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAiczMiLCAmc3RhcnQpOwotLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgInM0IiwgJmVuZCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKCJzMyIsICZzdGFydCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJz NCIsICZlbmQpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDE6Ci0tICAgICAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczUiLCAmc3RhcnQpOwotLSAgICAgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM2IiwgJmVuZCk7Ci0rICAgICAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJzNSIsICZzdGFydCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKCJzNiIsICZlbmQpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDI6Ci0tICAgICAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczciLCAmc3RhcnQpOwotLSAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM4IiwgJmVuZCk7Ci0rICAgICAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzNyIsICZzdGFydCk7Ci0rICAgICAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJzOCIsICZlbmQpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDM6 Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczkiLCAmc3RhcnQp OwotLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMxMCIsICZlbmQp OwotKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczkiLCAmc3RhcnQpOwotKyAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczEwIiwgJmVuZCk7Ci0gICAgICAgYnJlYWs7Ci0g ICAgIGNhc2UgNDoKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJz MTEiLCAmc3RhcnQpOwotLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg InMxMiIsICZlbmQpOwotKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczExIiwgJnN0 YXJ0KTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInMxMiIsICZlbmQpOwotICAg ICAgIGJyZWFrOwotICAgICBjYXNlIDU6Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAiczEzIiwgJnN0YXJ0KTsKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJzMTQiLCAmZW5kKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAoInMxMyIsICZzdGFydCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTQi LCAmZW5kKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotIH0KLUBAIC0xNDUsNyArMTQzLDYgQEAg Y3Jpc19pbnNlcnRfcG9pbnQgKGNoYXIgdHlwZSwgQ09SRV9BRERSIAotICAgdW5zaWduZWQgbG9u ZyBicF9jdHJsOwotICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwotICAgdW5zaWduZWQgbG9u ZyBjY3M7Ci0tICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotIAotICAgLyogQnJlYWtwb2lu dC93YXRjaHBvaW50IHR5cGVzIChHREIgdGVybWlub2xvZ3kpOgotICAgICAgMCA9IG1lbW9yeSBi cmVha3BvaW50IGZvciBpbnN0cnVjdGlvbnMKLUBAIC0xNjEsMTUgKzE1OCwxMyBAQCBjcmlzX2lu c2VydF9wb2ludCAoY2hhciB0eXBlLCBDT1JFX0FERFIgCi0gICAgICAgcmV0dXJuIDE7Ci0gICAg IH0KLSAKLS0gIHJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlv ciwgMSk7Ci0tCi0gICAvKiBSZWFkIHdhdGNocG9pbnRzIGFyZSBzZXQgYXMgYWNjZXNzIHdhdGNo cG9pbnRzLCBiZWNhdXNlIG9mIEdEQidzCi0gICAgICBpbmFiaWxpdHkgdG8gZGVhbCB3aXRoIHB1 cmUgcmVhZCB3YXRjaHBvaW50cy4gICovCi0gICBpZiAodHlwZSA9PSAnMycpCi0gICAgIHR5cGUg PSAnNCc7Ci0gCi0gICAvKiBHZXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIuICAqLwotLSAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMwIiwgJmJwX2N0cmwpOwotKyAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczAiLCAmYnBfY3RybCk7Ci0gCi0gICAvKiBUaGUg d2F0Y2hwb2ludCBhbGxvY2F0aW9uIHNjaGVtZSBpcyB0aGUgc2ltcGxlc3QgcG9zc2libGUuCi0g ICAgICBGb3IgZXhhbXBsZSwgaWYgYSByZWdpb24gaXMgd2F0Y2hlZCBmb3IgcmVhZCBhbmQKLUBA IC0yMDcsMTkgKzIwMiwxOSBAQCBjcmlzX2luc2VydF9wb2ludCAoY2hhciB0eXBlLCBDT1JFX0FE RFIgCi0gICAgIH0KLSAKLSAgIC8qIFNldHVwIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLiAg Ki8KLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMwIiwgJmJwX2N0cmwp OwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMCIsICZicF9jdHJsKTsKLSAKLSAgIC8q IFNldHVwIHRoZSByYW5nZS4gICovCi0gICBzdGFydCA9IGFkZHI7Ci0gICBlbmQgPSBhZGRyICsg bGVuIC0gMTsKLSAKLSAgIC8qIENvbmZpZ3VyZSB0aGUgd2F0Y2hwb2ludCByZWdpc3Rlci4gICov Ci0tICBjcmlzX3dyaXRlX2RhdGFfYnJlYWtwb2ludCAocmVnY2FjaGUsIGJwLCBzdGFydCwgZW5k KTsKLSsgIGNyaXNfd3JpdGVfZGF0YV9icmVha3BvaW50IChicCwgc3RhcnQsIGVuZCk7Ci0gCi0t ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiY2NzIiwgJmNjcyk7Ci0rICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJjY3MiLCAmY2NzKTsKLSAgIC8qIFNldCB0aGUgUzEg ZmxhZyB0byBlbmFibGUgd2F0Y2hwb2ludHMuICAqLwotICAgY2NzIHw9ICgxIDw8IDE5KTsKLS0g IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImNjcyIsICZjY3MpOwotKyAgc3Vw cGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJjY3MiLCAmY2NzKTsKLSAKLSAgIHJldHVybiAwOwotIH0K LUBAIC0yMzAsNyArMjI1LDYgQEAgY3Jpc19yZW1vdmVfcG9pbnQgKGNoYXIgdHlwZSwgQ09SRV9B RERSIAotICAgaW50IGJwOwotICAgdW5zaWduZWQgbG9uZyBicF9jdHJsOwotICAgdW5zaWduZWQg bG9uZyBzdGFydCwgZW5kOwotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKLSAKLSAgIC8q IEJyZWFrcG9pbnQvd2F0Y2hwb2ludCB0eXBlczoKLSAgICAgIDAgPSBtZW1vcnkgYnJlYWtwb2lu dCBmb3IgaW5zdHJ1Y3Rpb25zCi1AQCAtMjQyLDE1ICsyMzYsMTMgQEAgY3Jpc19yZW1vdmVfcG9p bnQgKGNoYXIgdHlwZSwgQ09SRV9BRERSIAotICAgaWYgKHR5cGUgPCAnMicgfHwgdHlwZSA+ICc0 JykKLSAgICAgcmV0dXJuIC0xOwotIAotLSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hl IChjdXJyZW50X2luZmVyaW9yLCAxKTsKLS0KLSAgIC8qIFJlYWQgd2F0Y2hwb2ludHMgYXJlIHNl dCBhcyBhY2Nlc3Mgd2F0Y2hwb2ludHMsIGJlY2F1c2Ugb2YgR0RCJ3MKLSAgICAgIGluYWJpbGl0 eSB0byBkZWFsIHdpdGggcHVyZSByZWFkIHdhdGNocG9pbnRzLiAgKi8KLSAgIGlmICh0eXBlID09 ICczJykKLSAgICAgdHlwZSA9ICc0JzsKLSAKLSAgIC8qIEdldCB0aGUgY29uZmlndXJhdGlvbiBy ZWdpc3Rlci4gICovCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczAi LCAmYnBfY3RybCk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzMCIsICZicF9jdHJs KTsKLSAKLSAgIC8qIFRyeSB0byBmaW5kIGEgd2F0Y2hwb2ludCB0aGF0IGlzIGNvbmZpZ3VyZWQg Zm9yIHRoZQotICAgICAgc3BlY2lmaWVkIHJhbmdlLCB0aGVuIGNoZWNrIHRoYXQgcmVhZC93cml0 ZSBhbHNvIG1hdGNoZXMuICAqLwotQEAgLTI2MiwxOCArMjU0LDE4IEBAIGNyaXNfcmVtb3ZlX3Bv aW50IChjaGFyIHR5cGUsIENPUkVfQUREUiAKLSAgIHVuc2lnbmVkIGxvbmcgYnBfZF9yZWdzWzEy XTsKLSAKLSAgIC8qIEdldCBhbGwgcmFuZ2UgcmVnaXN0ZXJzIHRvIHNpbXBsaWZ5IHNlYXJjaC4g ICovCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczMiLCAmYnBfZF9y ZWdzWzBdKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzNCIsICZi cF9kX3JlZ3NbMV0pOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM1 IiwgJmJwX2RfcmVnc1syXSk7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiczYiLCAmYnBfZF9yZWdzWzNdKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVn Y2FjaGUsICJzNyIsICZicF9kX3JlZ3NbNF0pOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgInM4IiwgJmJwX2RfcmVnc1s1XSk7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAiczkiLCAmYnBfZF9yZWdzWzZdKTsKLS0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTAiLCAmYnBfZF9yZWdzWzddKTsKLS0gIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTEiLCAmYnBfZF9yZWdzWzhdKTsKLS0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTIiLCAmYnBfZF9yZWdzWzldKTsK LS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTMiLCAmYnBfZF9yZWdz WzEwXSk7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczE0IiwgJmJw X2RfcmVnc1sxMV0pOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczMiLCAmYnBfZF9y ZWdzWzBdKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInM0IiwgJmJwX2RfcmVnc1sx XSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzNSIsICZicF9kX3JlZ3NbMl0pOwot KyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczYiLCAmYnBfZF9yZWdzWzNdKTsKLSsgIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInM3IiwgJmJwX2RfcmVnc1s0XSk7Ci0rICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKCJzOCIsICZicF9kX3JlZ3NbNV0pOwotKyAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lICgiczkiLCAmYnBfZF9yZWdzWzZdKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAoInMxMCIsICZicF9kX3JlZ3NbN10pOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lICgiczExIiwgJmJwX2RfcmVnc1s4XSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KCJzMTIiLCAmYnBfZF9yZWdzWzldKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMx MyIsICZicF9kX3JlZ3NbMTBdKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMxNCIs ICZicF9kX3JlZ3NbMTFdKTsKLSAKLSAgIGZvciAoYnAgPSAwOyBicCA8IDY7IGJwKyspCi0gICAg IHsKLUBAIC0zMDcsMTEgKzI5OSwxMSBAQCBjcmlzX3JlbW92ZV9wb2ludCAoY2hhciB0eXBlLCBD T1JFX0FERFIgCi0gICAgICBzdGFydC9lbmQgYWRkcmVzc2VzLiAgKi8KLSAgIGJwX2N0cmwgJj0g figzIDw8ICgyICsgKGJwICogNCkpKTsKLSAgIC8qIFNldHVwIHRoZSBjb25maWd1cmF0aW9uIHJl Z2lzdGVyLiAgKi8KLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMwIiwg JmJwX2N0cmwpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMCIsICZicF9jdHJsKTsK LSAKLSAgIHN0YXJ0ID0gZW5kID0gMDsKLSAgIC8qIENvbmZpZ3VyZSB0aGUgd2F0Y2hwb2ludCBy ZWdpc3Rlci4gICovCi0tICBjcmlzX3dyaXRlX2RhdGFfYnJlYWtwb2ludCAocmVnY2FjaGUsIGJw LCBzdGFydCwgZW5kKTsKLSsgIGNyaXNfd3JpdGVfZGF0YV9icmVha3BvaW50IChicCwgc3RhcnQs IGVuZCk7Ci0gCi0gICAvKiBOb3RlIHRoYXQgd2UgZG9uJ3QgY2xlYXIgdGhlIFMxIGZsYWcgaGVy ZS4gIEl0J3MgZG9uZSB3aGVuIGNvbnRpbnVpbmcuICAqLwotICAgcmV0dXJuIDA7Ci0tLS0gLi9n ZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICsw MTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUu MDAwMDAwMDAwICswMTAwCi1AQCAtNDUxLDggKzQ1MSw3IEBAIGhhbmRsZV9leHRlbmRlZF93YWl0 IChzdHJ1Y3QgbHdwX2luZm8gKmUKLSBzdGF0aWMgQ09SRV9BRERSCi0gZ2V0X3N0b3BfcGMgKHZv aWQpCi0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2Fj aGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOwotLSAgQ09SRV9BRERSIHN0b3BfcGMgPSAoKnRoZV9s b3dfdGFyZ2V0LmdldF9wYykgKHJlZ2NhY2hlKTsKLSsgIENPUkVfQUREUiBzdG9wX3BjID0gKCp0 aGVfbG93X3RhcmdldC5nZXRfcGMpICgpOwotIAotICAgaWYgKCEgZ2V0X3RocmVhZF9sd3AgKGN1 cnJlbnRfaW5mZXJpb3IpLT5zdGVwcGluZykKLSAgICAgc3RvcF9wYyAtPSB0aGVfbG93X3Rhcmdl dC5kZWNyX3BjX2FmdGVyX2JyZWFrOwotQEAgLTg4NSw3ICs4ODQsNiBAQCBjaGVja19yZW1vdmVk X2JyZWFrcG9pbnQgKHN0cnVjdCBsd3BfaW5mCi0gewotICAgQ09SRV9BRERSIHN0b3BfcGM7Ci0g ICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yOwotLSAgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZTsKLSAKLSAgIGlmIChldmVudF9jaGlsZC0+cGVuZGluZ19pc19icmVha3BvaW50 ID09IDApCi0gICAgIHJldHVybiAwOwotQEAgLTg5Niw3ICs4OTQsNyBAQCBjaGVja19yZW1vdmVk X2JyZWFrcG9pbnQgKHN0cnVjdCBsd3BfaW5mCi0gCi0gICBzYXZlZF9pbmZlcmlvciA9IGN1cnJl bnRfaW5mZXJpb3I7Ci0gICBjdXJyZW50X2luZmVyaW9yID0gZ2V0X2x3cF90aHJlYWQgKGV2ZW50 X2NoaWxkKTsKLS0gIHJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZl cmlvciwgMSk7Ci0rCi0gICBzdG9wX3BjID0gZ2V0X3N0b3BfcGMgKCk7Ci0gCi0gICAvKiBJZiB0 aGUgUEMgaGFzIGNoYW5nZWQgc2luY2Ugd2Ugc3RvcHBlZCwgdGhlbiB3ZSBzaG91bGRuJ3QgZG8K LUBAIC05MzIsNyArOTMwLDcgQEAgY2hlY2tfcmVtb3ZlZF9icmVha3BvaW50IChzdHJ1Y3QgbHdw X2luZgotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnX3RocmVhZHMpCi0gCWZwcmludGYgKHN0ZGVy ciwgIlNldCBwYyB0byAweCVseFxuIiwgKGxvbmcpIHN0b3BfcGMpOwotLSAgICAgICgqdGhlX2xv d190YXJnZXQuc2V0X3BjKSAocmVnY2FjaGUsIHN0b3BfcGMpOwotKyAgICAgICgqdGhlX2xvd190 YXJnZXQuc2V0X3BjKSAoc3RvcF9wYyk7Ci0gICAgIH0KLSAKLSAgIC8qIFdlIGNvbnN1bWVkIHRo ZSBwZW5kaW5nIFNJR1RSQVAuICAqLwotQEAgLTEwNjUsMTIgKzEwNjMsMTEgQEAgcmV0cnk6Ci0g ICAgICAgJiYgdGhlX2xvd190YXJnZXQuZ2V0X3BjICE9IE5VTEwpCi0gICAgIHsKLSAgICAgICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yID0gY3VycmVudF9pbmZlcmlvcjsKLS0g ICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3Vy cmVudF9pbmZlcmlvciwgMSk7Ci0gICAgICAgQ09SRV9BRERSIHBjOwotIAotICAgICAgIGN1cnJl bnRfaW5mZXJpb3IgPSAoc3RydWN0IHRocmVhZF9pbmZvICopCi0gCWZpbmRfaW5mZXJpb3JfaWQg KCZhbGxfdGhyZWFkcywgY2hpbGQtPmhlYWQuaWQpOwotLSAgICAgIHBjID0gKCp0aGVfbG93X3Rh cmdldC5nZXRfcGMpIChyZWdjYWNoZSk7Ci0rICAgICAgcGMgPSAoKnRoZV9sb3dfdGFyZ2V0Lmdl dF9wYykgKCk7Ci0gICAgICAgZnByaW50ZiAoc3RkZXJyLCAibGludXhfd2FpdF9mb3JfbHdwOiBw YyBpcyAweCVseFxuIiwgKGxvbmcpIHBjKTsKLSAgICAgICBjdXJyZW50X2luZmVyaW9yID0gc2F2 ZWRfaW5mZXJpb3I7Ci0gICAgIH0KLUBAIC0xODM1LDggKzE4MzIsNyBAQCBsaW51eF9yZXN1bWVf b25lX2x3cCAoc3RydWN0IGx3cF9pbmZvICpsCi0gCi0gICBpZiAoZGVidWdfdGhyZWFkcyAmJiB0 aGVfbG93X3RhcmdldC5nZXRfcGMgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAx KTsKLS0gICAgICBDT1JFX0FERFIgcGMgPSAoKnRoZV9sb3dfdGFyZ2V0LmdldF9wYykgKHJlZ2Nh Y2hlKTsKLSsgICAgICBDT1JFX0FERFIgcGMgPSAoKnRoZV9sb3dfdGFyZ2V0LmdldF9wYykgKCk7 Ci0gICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICByZXN1bWluZyBmcm9tIHBjIDB4JWx4XG4iLCAo bG9uZykgcGMpOwotICAgICB9Ci0gCi1AQCAtMjEyNSw3ICsyMTIxLDcgQEAgcmVnaXN0ZXJfYWRk ciAoaW50IHJlZ251bSkKLSAKLSAvKiBGZXRjaCBvbmUgcmVnaXN0ZXIuICAqLwotIHN0YXRpYyB2 b2lkCi0tZmV0Y2hfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdu bykKLStmZXRjaF9yZWdpc3RlciAoaW50IHJlZ25vKQotIHsKLSAgIENPUkVfQUREUiByZWdhZGRy OwotICAgaW50IGksIHNpemU7Ci1AQCAtMjE2NCwyOSArMjE2MCwyOSBAQCBmZXRjaF9yZWdpc3Rl ciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoCi0gICAgIH0KLSAKLSAgIGlmICh0aGVfbG93X3Rh cmdldC5zdXBwbHlfcHRyYWNlX3JlZ2lzdGVyKQotLSAgICB0aGVfbG93X3RhcmdldC5zdXBwbHlf cHRyYWNlX3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7Ci0rICAgIHRoZV9sb3dfdGFy Z2V0LnN1cHBseV9wdHJhY2VfcmVnaXN0ZXIgKHJlZ25vLCBidWYpOwotICAgZWxzZQotLSAgICBz dXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmKTsKLSsgICAgc3VwcGx5X3JlZ2lz dGVyIChyZWdubywgYnVmKTsKLSAKLSBlcnJvcl9leGl0OjsKLSB9Ci0gCi0gLyogRmV0Y2ggYWxs IHJlZ2lzdGVycywgb3IganVzdCBvbmUsIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuICAqLwotIHN0 YXRpYyB2b2lkCi0tdXNyX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IHJlZ25vKQotK3Vzcl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKGlu dCByZWdubykKLSB7Ci0gICBpZiAocmVnbm8gPT0gLTEpCi0gICAgIGZvciAocmVnbm8gPSAwOyBy ZWdubyA8IHRoZV9sb3dfdGFyZ2V0Lm51bV9yZWdzOyByZWdubysrKQotLSAgICAgIGZldGNoX3Jl Z2lzdGVyIChyZWdjYWNoZSwgcmVnbm8pOwotKyAgICAgIGZldGNoX3JlZ2lzdGVyIChyZWdubyk7 Ci0gICBlbHNlCi0tICAgIGZldGNoX3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8pOwotKyAgICBm ZXRjaF9yZWdpc3RlciAocmVnbm8pOwotIH0KLSAKLSAvKiBTdG9yZSBvdXIgcmVnaXN0ZXIgdmFs dWVzIGJhY2sgaW50byB0aGUgaW5mZXJpb3IuCi0gICAgSWYgUkVHTk8gaXMgLTEsIGRvIHRoaXMg Zm9yIGFsbCByZWdpc3RlcnMuCi0gICAgT3RoZXJ3aXNlLCBSRUdOTyBzcGVjaWZpZXMgd2hpY2gg cmVnaXN0ZXIgKHNvIHdlIGNhbiBzYXZlIHRpbWUpLiAgKi8KLSBzdGF0aWMgdm9pZAotLXVzcl9z dG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBy ZWdubykKLSt1c3Jfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChpbnQgcmVnbm8pCi0gewotICAg Q09SRV9BRERSIHJlZ2FkZHI7Ci0gICBpbnQgaSwgc2l6ZTsKLUBAIC0yMjExLDkgKzIyMDcsOSBA QCB1c3Jfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnCi0gICAgICAgbWVtc2V0 IChidWYsIDAsIHNpemUpOwotIAotICAgICAgIGlmICh0aGVfbG93X3RhcmdldC5jb2xsZWN0X3B0 cmFjZV9yZWdpc3RlcikKLS0JdGhlX2xvd190YXJnZXQuY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIg KHJlZ2NhY2hlLCByZWdubywgYnVmKTsKLSsJdGhlX2xvd190YXJnZXQuY29sbGVjdF9wdHJhY2Vf cmVnaXN0ZXIgKHJlZ25vLCBidWYpOwotICAgICAgIGVsc2UKLS0JY29sbGVjdF9yZWdpc3RlciAo cmVnY2FjaGUsIHJlZ25vLCBidWYpOwotKwljb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgYnVmKTsK LSAKLSAgICAgICBwaWQgPSBsd3BpZF9vZiAoZ2V0X3RocmVhZF9sd3AgKGN1cnJlbnRfaW5mZXJp b3IpKTsKLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBzaXplb2YgKFBUUkFDRV9Y RkVSX1RZUEUpKQotQEAgLTIyNDUsNyArMjI0MSw3IEBAIHVzcl9zdG9yZV9pbmZlcmlvcl9yZWdp c3RlcnMgKHN0cnVjdCByZWcKLSAgICAgfQotICAgZWxzZQotICAgICBmb3IgKHJlZ25vID0gMDsg cmVnbm8gPCB0aGVfbG93X3RhcmdldC5udW1fcmVnczsgcmVnbm8rKykKLS0gICAgICB1c3Jfc3Rv cmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVnbm8pOwotKyAgICAgIHVzcl9zdG9y ZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ25vKTsKLSB9Ci0gI2VuZGlmIC8qIEhBVkVfTElOVVhf VVNSUkVHUyAqLwotIAotQEAgLTIyNTQsNyArMjI1MCw3IEBAIHVzcl9zdG9yZV9pbmZlcmlvcl9y ZWdpc3RlcnMgKHN0cnVjdCByZWcKLSAjaWZkZWYgSEFWRV9MSU5VWF9SRUdTRVRTCi0gCi0gc3Rh dGljIGludAotLXJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlKQotK3JlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzICgpCi0gewot ICAgc3RydWN0IHJlZ3NldF9pbmZvICpyZWdzZXQ7Ci0gICBpbnQgc2F3X2dlbmVyYWxfcmVncyA9 IDA7Ci1AQCAtMjMwMCw3ICsyMjk2LDcgQEAgcmVnc2V0c19mZXRjaF9pbmZlcmlvcl9yZWdpc3Rl cnMgKHN0cnVjdAotIAl9Ci0gICAgICAgZWxzZSBpZiAocmVnc2V0LT50eXBlID09IEdFTkVSQUxf UkVHUykKLSAJc2F3X2dlbmVyYWxfcmVncyA9IDE7Ci0tICAgICAgcmVnc2V0LT5zdG9yZV9mdW5j dGlvbiAocmVnY2FjaGUsIGJ1Zik7Ci0rICAgICAgcmVnc2V0LT5zdG9yZV9mdW5jdGlvbiAoYnVm KTsKLSAgICAgICByZWdzZXQgKys7Ci0gICAgICAgZnJlZSAoYnVmKTsKLSAgICAgfQotQEAgLTIz MTEsNyArMjMwNyw3IEBAIHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QK LSB9Ci0gCi0gc3RhdGljIGludAotLXJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotK3JlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0 ZXJzICgpCi0gewotICAgc3RydWN0IHJlZ3NldF9pbmZvICpyZWdzZXQ7Ci0gICBpbnQgc2F3X2dl bmVyYWxfcmVncyA9IDA7Ci1AQCAtMjM0NSw3ICsyMzQxLDcgQEAgcmVnc2V0c19zdG9yZV9pbmZl cmlvcl9yZWdpc3RlcnMgKHN0cnVjdAotICAgICAgIGlmIChyZXMgPT0gMCkKLSAJewotIAkgIC8q IFRoZW4gb3ZlcmxheSBvdXIgY2FjaGVkIHJlZ2lzdGVycyBvbiB0aGF0LiAgKi8KLS0JICByZWdz ZXQtPmZpbGxfZnVuY3Rpb24gKHJlZ2NhY2hlLCBidWYpOwotKwkgIHJlZ3NldC0+ZmlsbF9mdW5j dGlvbiAoYnVmKTsKLSAKLSAJICAvKiBPbmx5IG5vdyBkbyB3ZSB3cml0ZSB0aGUgcmVnaXN0ZXIg c2V0LiAgKi8KLSAjaWZuZGVmIF9fc3BhcmNfXwotQEAgLTIzOTUsMjYgKzIzOTEsMjYgQEAgcmVn c2V0c19zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdAotIAotIAotIHZvaWQKLS1saW51 eF9mZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykK LStsaW51eF9mZXRjaF9yZWdpc3RlcnMgKGludCByZWdubykKLSB7Ci0gI2lmZGVmIEhBVkVfTElO VVhfUkVHU0VUUwotLSAgaWYgKHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdj YWNoZSkgPT0gMCkKLSsgIGlmIChyZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoKSA9 PSAwKQotICAgICByZXR1cm47Ci0gI2VuZGlmCi0gI2lmZGVmIEhBVkVfTElOVVhfVVNSUkVHUwot LSAgdXNyX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKLSsgIHVz cl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ25vKTsKLSAjZW5kaWYKLSB9Ci0gCi0gdm9p ZAotLWxpbnV4X3N0b3JlX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50 IHJlZ25vKQotK2xpbnV4X3N0b3JlX3JlZ2lzdGVycyAoaW50IHJlZ25vKQotIHsKLSAjaWZkZWYg SEFWRV9MSU5VWF9SRUdTRVRTCi0tICBpZiAocmVnc2V0c19zdG9yZV9pbmZlcmlvcl9yZWdpc3Rl cnMgKHJlZ2NhY2hlKSA9PSAwKQotKyAgaWYgKHJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0 ZXJzICgpID09IDApCi0gICAgIHJldHVybjsKLSAjZW5kaWYKLSAjaWZkZWYgSEFWRV9MSU5VWF9V U1JSRUdTCi0tICB1c3Jfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVnbm8p OwotKyAgdXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnbm8pOwotICNlbmRpZgotIH0K LSAKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmgJMjAxMC0wMS0yMCAyMzo1NTozOC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmgJMjAxMC0wMS0y MSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yNCw4ICsyNCw4IEBACi0gI2luY2x1ZGUg ImdkYl9wcm9jX3NlcnZpY2UuaCIKLSAKLSAjaWZkZWYgSEFWRV9MSU5VWF9SRUdTRVRTCi0tdHlw ZWRlZiB2b2lkICgqcmVnc2V0X2ZpbGxfZnVuYykgKHN0cnVjdCByZWdjYWNoZSAqLCB2b2lkICop OwotLXR5cGVkZWYgdm9pZCAoKnJlZ3NldF9zdG9yZV9mdW5jKSAoc3RydWN0IHJlZ2NhY2hlICos IGNvbnN0IHZvaWQgKik7Ci0rdHlwZWRlZiB2b2lkICgqcmVnc2V0X2ZpbGxfZnVuYykgKHZvaWQg Kik7Ci0rdHlwZWRlZiB2b2lkICgqcmVnc2V0X3N0b3JlX2Z1bmMpIChjb25zdCB2b2lkICopOwot IGVudW0gcmVnc2V0X3R5cGUgewotICAgR0VORVJBTF9SRUdTLAotICAgRlBfUkVHUywKLUBAIC03 MCw4ICs3MCw4IEBAIHN0cnVjdCBsaW51eF90YXJnZXRfb3BzCi0gICAgICBzdG9yZSB0aGUgcmVn aXN0ZXIsIGFuZCAyIGlmIGZhaWx1cmUgdG8gc3RvcmUgdGhlIHJlZ2lzdGVyCi0gICAgICBpcyBh Y2NlcHRhYmxlLiAgKi8KLSAgIGludCAoKmNhbm5vdF9zdG9yZV9yZWdpc3RlcikgKGludCk7Ci0t ICBDT1JFX0FERFIgKCpnZXRfcGMpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKLS0gIHZv aWQgKCpzZXRfcGMpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgbmV3cGMp OwotKyAgQ09SRV9BRERSICgqZ2V0X3BjKSAodm9pZCk7Ci0rICB2b2lkICgqc2V0X3BjKSAoQ09S RV9BRERSIG5ld3BjKTsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJyZWFrcG9pbnQ7Ci0gICBp bnQgYnJlYWtwb2ludF9sZW47Ci0gICBDT1JFX0FERFIgKCpicmVha3BvaW50X3JlaW5zZXJ0X2Fk ZHIpICh2b2lkKTsKLUBAIC04OCwxMCArODgsOCBAQCBzdHJ1Y3QgbGludXhfdGFyZ2V0X29wcwot IAotICAgLyogSG9va3MgdG8gcmVmb3JtYXQgcmVnaXN0ZXIgZGF0YSBmb3IgUEVFS1VTUi9QT0tF VVNSIChpbiBwYXJ0aWN1bGFyCi0gICAgICBmb3IgcmVnaXN0ZXJzIHNtYWxsZXIgdGhhbiBhbiB4 ZmVyIHVuaXQpLiAgKi8KLS0gIHZvaWQgKCpjb2xsZWN0X3B0cmFjZV9yZWdpc3RlcikgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJCSAgIGludCByZWdubywgY2hhciAqYnVmKTsKLS0g IHZvaWQgKCpzdXBwbHlfcHRyYWNlX3JlZ2lzdGVyKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwKLS0JCQkJICBpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKmJ1Zik7Ci0rICB2b2lkICgqY29sbGVj dF9wdHJhY2VfcmVnaXN0ZXIpIChpbnQgcmVnbm8sIGNoYXIgKmJ1Zik7Ci0rICB2b2lkICgqc3Vw cGx5X3B0cmFjZV9yZWdpc3RlcikgKGludCByZWdubywgY29uc3QgY2hhciAqYnVmKTsKLSAKLSAg IC8qIEhvb2sgdG8gY29udmVydCBmcm9tIHRhcmdldCBmb3JtYXQgdG8gcHRyYWNlIGZvcm1hdCBh bmQgYmFjay4KLSAgICAgIFJldHVybnMgdHJ1ZSBpZiBhbnkgY29udmVyc2lvbiB3YXMgZG9uZTsg ZmFsc2Ugb3RoZXJ3aXNlLgotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1tMzJyLWxvdy5jCTIw MTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xp bnV4LW0zMnItbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC01 MywyMCArNTMsMTggQEAgbTMycl9jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykKLSB9 Ci0gCi0gc3RhdGljIENPUkVfQUREUgotLW0zMnJfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlKQotK20zMnJfZ2V0X3BjICgpCi0gewotICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Ci0tICBpZiAoZGVi dWdfdGhyZWFkcykKLS0gICAgZnByaW50ZiAoc3RkZXJyLCAic3RvcCBwYyBpcyAlMDhseFxuIiwg cGMpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOwotICAgcmV0dXJu IHBjOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLW0zMnJfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCi0rbTMycl9zZXRfcGMgKENPUkVfQUREUiBwYykKLSB7 Ci0gICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo InBjIiwgJm5ld3BjKTsKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG0zMnJf YnJlYWtwb2ludCA9IDB4MTBmMTsKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbTY4ay1sb3cu YwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZl ci9saW51eC1tNjhrLWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1A QCAtNzEsNDAgKzcxLDQwIEBAIG02OGtfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8p Ci0gI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSAKLSBzdGF0aWMgdm9pZAotLW02OGtfZmlsbF9n cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rbTY4a19maWxs X2dyZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IDA7IGkg PCBtNjhrX251bV9ncmVnczsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwg aSwgKGNoYXIgKikgYnVmICsgbTY4a19yZWdtYXBbaV0pOwotKyAgICBjb2xsZWN0X3JlZ2lzdGVy IChpLCAoY2hhciAqKSBidWYgKyBtNjhrX3JlZ21hcFtpXSk7Ci0gfQotIAotIHN0YXRpYyB2b2lk Ci0tbTY4a19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2 b2lkICpidWYpCi0rbTY4a19zdG9yZV9ncmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0gewotICAg aW50IGk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgbTY4a19udW1fZ3JlZ3M7IGkrKykKLS0gICAg c3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKGNvbnN0IGNoYXIgKikgYnVmICsgbTY4a19y ZWdtYXBbaV0pOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGksIChjb25zdCBjaGFyICopIGJ1ZiAr IG02OGtfcmVnbWFwW2ldKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1tNjhrX2ZpbGxfZnByZWdz ZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLSttNjhrX2ZpbGxfZnBy ZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IG02OGtfbnVt X2dyZWdzOyBpIDwgbTY4a19udW1fcmVnczsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChy ZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZgotLQkJCSArIChtNjhrX3JlZ21hcFtpXSAtIG02OGtf cmVnbWFwW202OGtfbnVtX2dyZWdzXSkpKTsKLSsgICAgY29sbGVjdF9yZWdpc3RlciAoaSwgKChj aGFyICopIGJ1ZgotKwkJCSAgKyAobTY4a19yZWdtYXBbaV0gLSBtNjhrX3JlZ21hcFttNjhrX251 bV9ncmVnc10pKSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tbTY4a19zdG9yZV9mcHJlZ3NldCAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK202OGtfc3RvcmVf ZnByZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9 IG02OGtfbnVtX2dyZWdzOyBpIDwgbTY4a19udW1fcmVnczsgaSsrKQotLSAgICBzdXBwbHlfcmVn aXN0ZXIgKHJlZ2NhY2hlLCBpLCAoKGNvbnN0IGNoYXIgKikgYnVmCi0rICAgIHN1cHBseV9yZWdp c3RlciAoaSwgKChjb25zdCBjaGFyICopIGJ1ZgotIAkJCSArIChtNjhrX3JlZ21hcFtpXSAtIG02 OGtfcmVnbWFwW202OGtfbnVtX2dyZWdzXSkpKTsKLSB9Ci0gCi1AQCAtMTI2LDIwICsxMjYsMjAg QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbTY4a19icmVha3BvaQotICNkZWZpbmUgbTY4 a19icmVha3BvaW50X2xlbiAyCi0gCi0gc3RhdGljIENPUkVfQUREUgotLW02OGtfZ2V0X3BjIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotK202OGtfZ2V0X3BjICgpCi0gewotICAgdW5zaWdu ZWQgbG9uZyBwYzsKLSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJw YyIsICZwYyk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7Ci0gICBy ZXR1cm4gcGM7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tbTY4a19zZXRfcGMgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiB2YWx1ZSkKLSttNjhrX3NldF9wYyAoQ09SRV9BRERS IHZhbHVlKQotIHsKLSAgIHVuc2lnbmVkIGxvbmcgbmV3cGMgPSB2YWx1ZTsKLSAKLS0gIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKLSsgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmbmV3cGMpOwotIH0KLSAKLSBzdGF0aWMgaW50Ci0tLS0g Li9nZGIvZ2Ric2VydmVyL2xpbnV4LW1pcHMtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAw MDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbWlwcy1sb3cuYwkyMDEwLTAx LTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTExNSwxNSArMTE1LDE1IEBAIG1pcHNf Y2Fubm90X3N0b3JlX3JlZ2lzdGVyIChpbnQgcmVnbm8pCi0gfQotIAotIHN0YXRpYyBDT1JFX0FE RFIKLS1taXBzX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKLSttaXBzX2dldF9w YyAoKQotIHsKLSAgIHVuaW9uIG1pcHNfcmVnaXN0ZXIgcGM7Ci0tICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCBwYy5idWYpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lICgicGMiLCBwYy5idWYpOwotICAgcmV0dXJuIHJlZ2lzdGVyX3NpemUgKDApID09IDQg PyBwYy5yZWczMiA6IHBjLnJlZzY0OwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLW1pcHNfc2V0X3Bj IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCi0rbWlwc19zZXRfcGMg KENPUkVfQUREUiBwYykKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lzdGVyIG5ld3BjOwotICAgaWYg KHJlZ2lzdGVyX3NpemUgKDApID09IDQpCi1AQCAtMTMxLDcgKzEzMSw3IEBAIG1pcHNfc2V0X3Bj IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCAKLSAgIGVsc2UKLSAgICAgbmV3cGMucmVnNjQg PSBwYzsKLSAKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgbmV3 cGMuYnVmKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCBuZXdwYy5idWYpOwot IH0KLSAKLSAvKiBDb3JyZWN0IGluIGVpdGhlciBlbmRpYW5uZXNzLiAgKi8KLUBAIC0xNDIsMTEg KzE0MiwxMCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfYnJlYWtwb2luCi0gICAg aXMgb3V0c2lkZSBvZiB0aGUgZnVuY3Rpb24uICBTbyByYXRoZXIgdGhhbiBpbXBvcnRpbmcgc29m dHdhcmUgc2luZ2xlLXN0ZXAsCi0gICAgd2UgY2FuIGp1c3QgcnVuIHVudGlsIGV4aXQuICAqLwot IHN0YXRpYyBDT1JFX0FERFIKLS1taXBzX3JlaW5zZXJ0X2FkZHIgKHZvaWQpCi0rbWlwc19yZWlu c2VydF9hZGRyICgpCi0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJl YWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOwotICAgdW5pb24gbWlwc19yZWdpc3Rl ciByYTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJyMzEiLCByYS5i dWYpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicjMxIiwgcmEuYnVmKTsKLSAgIHJl dHVybiByZWdpc3Rlcl9zaXplICgwKSA9PSA0ID8gcmEucmVnMzIgOiByYS5yZWc2NDsKLSB9Ci0g Ci1AQCAtMTg0LDI2ICsxODMsMjQgQEAgcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3Qg cHNfcHJvYwotICNpZmRlZiBIQVZFX1BUUkFDRV9HRVRSRUdTCi0gCi0gc3RhdGljIHZvaWQKLS1t aXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkgICAg ICAgaW50IHVzZV82NGJpdCwgaW50IHJlZ25vLCB1bmlvbiBtaXBzX3JlZ2lzdGVyICpyZWcpCi0r bWlwc19jb2xsZWN0X3JlZ2lzdGVyIChpbnQgdXNlXzY0Yml0LCBpbnQgcmVnbm8sIHVuaW9uIG1p cHNfcmVnaXN0ZXIgKnJlZykKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lzdGVyIHRtcF9yZWc7Ci0g Ci0gICBpZiAodXNlXzY0Yml0KQotICAgICB7Ci0tICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVn Y2FjaGUsIHJlZ25vLCAmdG1wX3JlZy5yZWc2NCk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAo cmVnbm8sICZ0bXBfcmVnLnJlZzY0KTsKLSAgICAgICAqcmVnID0gdG1wX3JlZzsKLSAgICAgfQot ICAgZWxzZQotICAgICB7Ci0tICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25v LCAmdG1wX3JlZy5yZWczMik7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnbm8sICZ0bXBf cmVnLnJlZzMyKTsKLSAgICAgICByZWctPnJlZzY0ID0gdG1wX3JlZy5yZWczMjsKLSAgICAgfQot IH0KLSAKLSBzdGF0aWMgdm9pZAotLW1pcHNfc3VwcGx5X3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLAotLQkJICAgICAgaW50IHVzZV82NGJpdCwgaW50IHJlZ25vLCBjb25zdCB1 bmlvbiBtaXBzX3JlZ2lzdGVyICpyZWcpCi0rbWlwc19zdXBwbHlfcmVnaXN0ZXIgKGludCB1c2Vf NjRiaXQsIGludCByZWdubywgY29uc3QgdW5pb24gbWlwc19yZWdpc3RlciAqcmVnKQotIHsKLSAg IGludCBvZmZzZXQgPSAwOwotIAotQEAgLTIxMiwzNSArMjA5LDMzIEBAIG1pcHNfc3VwcGx5X3Jl Z2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnIKLSAgIGlmIChfX0JZVEVfT1JERVIgPT0gX19CSUdf RU5ESUFOICYmICF1c2VfNjRiaXQpCi0gICAgIG9mZnNldCA9IDQ7Ci0gCi0tICBzdXBwbHlfcmVn aXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgcmVnLT5idWYgKyBvZmZzZXQpOwotKyAgc3VwcGx5X3Jl Z2lzdGVyIChyZWdubywgcmVnLT5idWYgKyBvZmZzZXQpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAot LW1pcHNfY29sbGVjdF9yZWdpc3Rlcl8zMmJpdCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwK LS0JCQkgICAgIGludCB1c2VfNjRiaXQsIGludCByZWdubywgdW5zaWduZWQgY2hhciAqYnVmKQot K21pcHNfY29sbGVjdF9yZWdpc3Rlcl8zMmJpdCAoaW50IHVzZV82NGJpdCwgaW50IHJlZ25vLCB1 bnNpZ25lZCBjaGFyICpidWYpCi0gewotICAgdW5pb24gbWlwc19yZWdpc3RlciB0bXBfcmVnOwot ICAgaW50IHJlZzMyOwotIAotLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNl XzY0Yml0LCByZWdubywgJnRtcF9yZWcpOwotKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2Vf NjRiaXQsIHJlZ25vLCAmdG1wX3JlZyk7Ci0gICByZWczMiA9IHRtcF9yZWcucmVnNjQ7Ci0gICBt ZW1jcHkgKGJ1ZiwgJnJlZzMyLCA0KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1taXBzX3N1cHBs eV9yZWdpc3Rlcl8zMmJpdCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLS0JCQkgICAgaW50 IHVzZV82NGJpdCwgaW50IHJlZ25vLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYpCi0rbWlwc19z dXBwbHlfcmVnaXN0ZXJfMzJiaXQgKGludCB1c2VfNjRiaXQsIGludCByZWdubywgY29uc3QgdW5z aWduZWQgY2hhciAqYnVmKQotIHsKLSAgIHVuaW9uIG1pcHNfcmVnaXN0ZXIgdG1wX3JlZzsKLSAg IGludCByZWczMjsKLSAKLSAgIG1lbWNweSAoJnJlZzMyLCBidWYsIDQpOwotICAgdG1wX3JlZy5y ZWc2NCA9IHJlZzMyOwotLSAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRi aXQsIHJlZ25vLCAmdG1wX3JlZyk7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0 LCByZWdubywgJnRtcF9yZWcpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLW1pcHNfZmlsbF9ncmVn c2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rbWlwc19maWxsX2dy ZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lzdGVyICpyZWdzZXQgPSBi dWY7Ci0gICBpbnQgaSwgdXNlXzY0Yml0OwotQEAgLTI0OCwyNyArMjQzLDIwIEBAIG1pcHNfZmls bF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2MKLSAgIHVzZV82NGJpdCA9IChyZWdpc3Rl cl9zaXplICgwKSA9PSA4KTsKLSAKLSAgIGZvciAoaSA9IDE7IGkgPCAzMjsgaSsrKQotLSAgICBt aXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGksIHJlZ3NldCArIGkp OwotKyAgICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHVzZV82NGJpdCwgaSwgcmVnc2V0ICsgaSk7 Ci0gCi0tICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJ IGZpbmRfcmVnbm8gKCJsbyIpLCByZWdzZXQgKyAzMik7Ci0tICBtaXBzX2NvbGxlY3RfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJIGZpbmRfcmVnbm8gKCJoaSIpLCByZWdzZXQg KyAzMyk7Ci0tICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0t CQkJIGZpbmRfcmVnbm8gKCJwYyIpLCByZWdzZXQgKyAzNCk7Ci0tICBtaXBzX2NvbGxlY3RfcmVn aXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJIGZpbmRfcmVnbm8gKCJiYWR2YWRkciIp LCByZWdzZXQgKyAzNSk7Ci0tICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2Vf NjRiaXQsCi0tCQkJIGZpbmRfcmVnbm8gKCJzdGF0dXMiKSwgcmVnc2V0ICsgMzYpOwotLSAgbWlw c19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAotLQkJCSBmaW5kX3JlZ25v ICgiY2F1c2UiKSwgcmVnc2V0ICsgMzcpOwotKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2Vf NjRiaXQsIGZpbmRfcmVnbm8gKCJsbyIpLCByZWdzZXQgKyAzMik7Ci0rICBtaXBzX2NvbGxlY3Rf cmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImhpIiksIHJlZ3NldCArIDMzKTsKLSsg IG1pcHNfY29sbGVjdF9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgicGMiKSwgcmVn c2V0ICsgMzQpOwotKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVn bm8gKCJiYWR2YWRkciIpLCByZWdzZXQgKyAzNSk7Ci0rICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIg KHVzZV82NGJpdCwgZmluZF9yZWdubyAoInN0YXR1cyIpLCByZWdzZXQgKyAzNik7Ci0rICBtaXBz X2NvbGxlY3RfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImNhdXNlIiksIHJlZ3Nl dCArIDM3KTsKLSAKLS0gIG1pcHNfY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJp dCwKLS0JCQkgZmluZF9yZWdubyAoInJlc3RhcnQiKSwgcmVnc2V0ICsgMCk7Ci0rICBtaXBzX2Nv bGxlY3RfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoInJlc3RhcnQiKSwgcmVnc2V0 ICsgMCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tbWlwc19zdG9yZV9ncmVnc2V0IChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0rbWlwc19zdG9yZV9ncmVnc2V0 IChjb25zdCB2b2lkICpidWYpCi0gewotICAgY29uc3QgdW5pb24gbWlwc19yZWdpc3RlciAqcmVn c2V0ID0gYnVmOwotICAgaW50IGksIHVzZV82NGJpdDsKLUBAIC0yNzYsMjQgKzI2NCwyMCBAQCBt aXBzX3N0b3JlX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnCi0gICB1c2VfNjRiaXQgPSAo cmVnaXN0ZXJfc2l6ZSAoMCkgPT0gOCk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykK LS0gICAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGksIHJlZ3Nl dCArIGkpOwotKyAgICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCBpLCByZWdzZXQg KyBpKTsKLSAKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LCBm aW5kX3JlZ25vICgibG8iKSwgcmVnc2V0ICsgMzIpOwotLSAgbWlwc19zdXBwbHlfcmVnaXN0ZXIg KHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJoaSIpLCByZWdzZXQgKyAzMyk7Ci0t ICBtaXBzX3N1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwgZmluZF9yZWdubyAo InBjIiksIHJlZ3NldCArIDM0KTsKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwg dXNlXzY0Yml0LAotLQkJCWZpbmRfcmVnbm8gKCJiYWR2YWRkciIpLCByZWdzZXQgKyAzNSk7Ci0t ICBtaXBzX3N1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwKLS0JCQlmaW5kX3Jl Z25vICgic3RhdHVzIiksIHJlZ3NldCArIDM2KTsKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChy ZWdjYWNoZSwgdXNlXzY0Yml0LAotLQkJCWZpbmRfcmVnbm8gKCJjYXVzZSIpLCByZWdzZXQgKyAz Nyk7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgibG8i KSwgcmVnc2V0ICsgMzIpOwotKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmlu ZF9yZWdubyAoImhpIiksIHJlZ3NldCArIDMzKTsKLSsgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyICh1 c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJwYyIpLCByZWdzZXQgKyAzNCk7Ci0rICBtaXBzX3N1cHBs eV9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiYmFkdmFkZHIiKSwgcmVnc2V0ICsg MzUpOwotKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoInN0 YXR1cyIpLCByZWdzZXQgKyAzNik7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0 LCBmaW5kX3JlZ25vICgiY2F1c2UiKSwgcmVnc2V0ICsgMzcpOwotIAotLSAgbWlwc19zdXBwbHlf cmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJZmluZF9yZWdubyAoInJlc3RhcnQi KSwgcmVnc2V0ICsgMCk7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5k X3JlZ25vICgicmVzdGFydCIpLCByZWdzZXQgKyAwKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1t aXBzX2ZpbGxfZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikK LSttaXBzX2ZpbGxfZnByZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lz dGVyICpyZWdzZXQgPSBidWY7Ci0gICBpbnQgaSwgdXNlXzY0Yml0LCBmaXJzdF9mcCwgYmlnX2Vu ZGlhbjsKLUBAIC0zMDUsMTkgKzI4OSwxOCBAQCBtaXBzX2ZpbGxfZnByZWdzZXQgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnCi0gICAvKiBTZWUgR0RCIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBwZWN1 bGlhciBsYXlvdXQuICAqLwotICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCi0gICAgIGlmICh1 c2VfNjRiaXQpCi0tICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGZpcnN0X2ZwICsg aSwgcmVnc2V0W2ldLmJ1Zik7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAoZmlyc3RfZnAgKyBp LCByZWdzZXRbaV0uYnVmKTsKLSAgICAgZWxzZQotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJl Z2NhY2hlLCBmaXJzdF9mcCArIGksCi0rICAgICAgY29sbGVjdF9yZWdpc3RlciAoZmlyc3RfZnAg KyBpLAotIAkJCXJlZ3NldFtpICYgfjFdLmJ1ZiArIDQgKiAoYmlnX2VuZGlhbiAhPSAoaSAmIDEp KSk7Ci0gCi0tICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKHJlZ2NhY2hlLCB1c2VfNjRi aXQsCi0tCQkJICAgICAgIGZpbmRfcmVnbm8gKCJmY3NyIiksIHJlZ3NldFszMl0uYnVmKTsKLS0g IG1pcHNfY29sbGVjdF9yZWdpc3Rlcl8zMmJpdCAocmVnY2FjaGUsIHVzZV82NGJpdCwgZmluZF9y ZWdubyAoImZpciIpLAotKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyXzMyYml0ICh1c2VfNjRiaXQs IGZpbmRfcmVnbm8gKCJmY3NyIiksIHJlZ3NldFszMl0uYnVmKTsKLSsgIG1pcHNfY29sbGVjdF9y ZWdpc3Rlcl8zMmJpdCAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiZmlyIiksCi0gCQkJICAgICAg IHJlZ3NldFszMl0uYnVmICsgNCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tbWlwc19zdG9yZV9m cHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK21p cHNfc3RvcmVfZnByZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKLSB7Ci0gICBjb25zdCB1bmlvbiBt aXBzX3JlZ2lzdGVyICpyZWdzZXQgPSBidWY7Ci0gICBpbnQgaSwgdXNlXzY0Yml0LCBmaXJzdF9m cCwgYmlnX2VuZGlhbjsKLUBAIC0zMjksMTQgKzMxMiwxMyBAQCBtaXBzX3N0b3JlX2ZwcmVnc2V0 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gICAvKiBTZWUgR0RCIGZvciBhIGRpc2N1c3Npb24gb2Yg dGhpcyBwZWN1bGlhciBsYXlvdXQuICAqLwotICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCi0g ICAgIGlmICh1c2VfNjRiaXQpCi0tICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgZmly c3RfZnAgKyBpLCByZWdzZXRbaV0uYnVmKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXIgKGZpcnN0 X2ZwICsgaSwgcmVnc2V0W2ldLmJ1Zik7Ci0gICAgIGVsc2UKLS0gICAgICBzdXBwbHlfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCBmaXJzdF9mcCArIGksCi0rICAgICAgc3VwcGx5X3JlZ2lzdGVyIChmaXJz dF9mcCArIGksCi0gCQkgICAgICAgcmVnc2V0W2kgJiB+MV0uYnVmICsgNCAqIChiaWdfZW5kaWFu ICE9IChpICYgMSkpKTsKLSAKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyXzMyYml0IChyZWdjYWNo ZSwgdXNlXzY0Yml0LAotLQkJCSAgICAgIGZpbmRfcmVnbm8gKCJmY3NyIiksIHJlZ3NldFszMl0u YnVmKTsKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyXzMyYml0IChyZWdjYWNoZSwgdXNlXzY0Yml0 LCBmaW5kX3JlZ25vICgiZmlyIiksCi0rICBtaXBzX3N1cHBseV9yZWdpc3Rlcl8zMmJpdCAodXNl XzY0Yml0LCBmaW5kX3JlZ25vICgiZmNzciIpLCByZWdzZXRbMzJdLmJ1Zik7Ci0rICBtaXBzX3N1 cHBseV9yZWdpc3Rlcl8zMmJpdCAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiZmlyIiksCi0gCQkJ ICAgICAgcmVnc2V0WzMyXS5idWYgKyA0KTsKLSB9Ci0gI2VuZGlmIC8qIEhBVkVfUFRSQUNFX0dF VFJFR1MgKi8KLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCTIwMTAtMDEtMjAg MjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1s b3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTE2OSwyNyArMTY5 LDI2IEBAIHBwY19jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykKLSB9Ci0gCi0gc3Rh dGljIHZvaWQKLS1wcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIGludCByZWdubywgY2hhciAqYnVmKQotK3BwY19jb2xsZWN0X3B0cmFjZV9yZWdp c3RlciAoaW50IHJlZ25vLCBjaGFyICpidWYpCi0gewotICAgaW50IHNpemUgPSByZWdpc3Rlcl9z aXplIChyZWdubyk7Ci0gCi0gICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChsb25nKSk7Ci0gCi0g ICBpZiAoc2l6ZSA8IHNpemVvZiAobG9uZykpCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCByZWdubywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOwotKyAgICBjb2xsZWN0X3Jl Z2lzdGVyIChyZWdubywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOwotICAgZWxzZQotLSAg ICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7Ci0rICAgIGNvbGxlY3Rf cmVnaXN0ZXIgKHJlZ25vLCBidWYpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXBwY19zdXBwbHlf cHRyYWNlX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAgICBpbnQg cmVnbm8sIGNvbnN0IGNoYXIgKmJ1ZikKLStwcGNfc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAoaW50 IHJlZ25vLCBjb25zdCBjaGFyICpidWYpCi0gewotICAgaW50IHNpemUgPSByZWdpc3Rlcl9zaXpl IChyZWdubyk7Ci0gICBpZiAoc2l6ZSA8IHNpemVvZiAobG9uZykpCi0tICAgIHN1cHBseV9yZWdp c3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYgKyBzaXplb2YgKGxvbmcpIC0gc2l6ZSk7Ci0rICAg IHN1cHBseV9yZWdpc3RlciAocmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykgLSBzaXplKTsKLSAg IGVsc2UKLS0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7Ci0rICAg IHN1cHBseV9yZWdpc3RlciAocmVnbm8sIGJ1Zik7Ci0gfQotIAotIAotQEAgLTIwMCw3ICsxOTks NyBAQCBwcGNfc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhCi0gICAgcmV0dXJu IHRvIEZEIGFuZCBBRERSIHRoZSBmaWxlIGhhbmRsZSBhbmQgTlBDIHBhcmFtZXRlciBhZGRyZXNz Ci0gICAgdXNlZCB3aXRoIHRoZSBzeXN0ZW0gY2FsbC4gIFJldHVybiBub24temVybyBpZiBzdWNj ZXNzZnVsLiAgKi8KLSBzdGF0aWMgaW50Ci0tcGFyc2Vfc3B1ZnNfcnVuIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBpbnQgKmZkLCBDT1JFX0FERFIgKmFkZHIpCi0rcGFyc2Vfc3B1ZnNfcnVu IChpbnQgKmZkLCBDT1JFX0FERFIgKmFkZHIpCi0gewotICAgQ09SRV9BRERSIGN1cnJfcGM7Ci0g ICBpbnQgY3Vycl9pbnNuOwotQEAgLTIwOSwxMCArMjA4LDEwIEBAIHBhcnNlX3NwdWZzX3J1biAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWMKLSAgIGlmIChyZWdpc3Rlcl9zaXplICgwKSA9PSA0KQot ICAgICB7Ci0gICAgICAgdW5zaWduZWQgaW50IHBjLCByMCwgcjMsIHI0OwotLSAgICAgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Ci0tICAgICAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInIwIiwgJnIwKTsKLS0gICAgICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAib3JpZ19yMyIsICZyMyk7Ci0tICAgICAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInI0IiwgJnI0KTsKLSsgICAgICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgicjAiLCAmcjApOwotKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo Im9yaWdfcjMiLCAmcjMpOwotKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInI0Iiwg JnI0KTsKLSAgICAgICBjdXJyX3BjID0gKENPUkVfQUREUikgcGM7Ci0gICAgICAgY3Vycl9yMCA9 IChpbnQpIHIwOwotICAgICAgICpmZCA9IChpbnQpIHIzOwotQEAgLTIyMSwxMCArMjIwLDEwIEBA IHBhcnNlX3NwdWZzX3J1biAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWMKLSAgIGVsc2UKLSAgICAg ewotICAgICAgIHVuc2lnbmVkIGxvbmcgcGMsIHIwLCByMywgcjQ7Ci0tICAgICAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLS0gICAgICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicjAiLCAmcjApOwotLSAgICAgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJvcmlnX3IzIiwgJnIzKTsKLS0gICAgICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicjQiLCAmcjQpOwotKyAgICAgIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKCJyMCIsICZyMCk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgib3Jp Z19yMyIsICZyMyk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicjQiLCAmcjQp OwotICAgICAgIGN1cnJfcGMgPSAoQ09SRV9BRERSKSBwYzsKLSAgICAgICBjdXJyX3IwID0gKGlu dCkgcjA7Ci0gICAgICAgKmZkID0gKGludCkgcjM7Ci1AQCAtMjQ2LDEyICsyNDUsMTIgQEAgcGFy c2Vfc3B1ZnNfcnVuIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhYwotIH0KLSAKLSBzdGF0aWMgQ09S RV9BRERSCi0tcHBjX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKLStwcGNfZ2V0 X3BjICh2b2lkKQotIHsKLSAgIENPUkVfQUREUiBhZGRyOwotICAgaW50IGZkOwotIAotLSAgaWYg KHBhcnNlX3NwdWZzX3J1biAocmVnY2FjaGUsICZmZCwgJmFkZHIpKQotKyAgaWYgKHBhcnNlX3Nw dWZzX3J1biAoJmZkLCAmYWRkcikpCi0gICAgIHsKLSAgICAgICB1bnNpZ25lZCBpbnQgcGM7Ci0g ICAgICAgKCp0aGVfdGFyZ2V0LT5yZWFkX21lbW9yeSkgKGFkZHIsICh1bnNpZ25lZCBjaGFyICop ICZwYywgNCk7Ci1AQCAtMjYwLDI0ICsyNTksMjQgQEAgcHBjX2dldF9wYyAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSkKLSAgIGVsc2UgaWYgKHJlZ2lzdGVyX3NpemUgKDApID09IDQpCi0gICAg IHsKLSAgICAgICB1bnNpZ25lZCBpbnQgcGM7Ci0tICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKCJwYyIsICZwYyk7Ci0gICAgICAgcmV0dXJuIChDT1JFX0FERFIpIHBjOwotICAgICB9Ci0g ICBlbHNlCi0gICAgIHsKLSAgICAgICB1bnNpZ25lZCBsb25nIHBjOwotLSAgICAgIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Ci0rICAgICAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOwotICAgICAgIHJldHVybiAoQ09SRV9BRERSKSBw YzsKLSAgICAgfQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXBwY19zZXRfcGMgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKLStwcGNfc2V0X3BjIChDT1JFX0FERFIgcGMp Ci0gewotICAgQ09SRV9BRERSIGFkZHI7Ci0gICBpbnQgZmQ7Ci0gCi0tICBpZiAocGFyc2Vfc3B1 ZnNfcnVuIChyZWdjYWNoZSwgJmZkLCAmYWRkcikpCi0rICBpZiAocGFyc2Vfc3B1ZnNfcnVuICgm ZmQsICZhZGRyKSkKLSAgICAgewotICAgICAgIHVuc2lnbmVkIGludCBuZXdwYyA9IHBjOwotICAg ICAgICgqdGhlX3RhcmdldC0+d3JpdGVfbWVtb3J5KSAoYWRkciwgKHVuc2lnbmVkIGNoYXIgKikg Jm5ld3BjLCA0KTsKLUBAIC0yODUsMTIgKzI4NCwxMiBAQCBwcGNfc2V0X3BjIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBDCi0gICBlbHNlIGlmIChyZWdpc3Rlcl9zaXplICgwKSA9PSA0KQot ICAgICB7Ci0gICAgICAgdW5zaWduZWQgaW50IG5ld3BjID0gcGM7Ci0tICAgICAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOwotKyAgICAgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmbmV3cGMpOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsK LSAgICAgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOwotKyAgICAgIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lICgicGMiLCAmbmV3cGMpOwotICAgICB9Ci0gfQotIAotQEAgLTQ1MCwxOCArNDQ5 LDE4IEBAIHBwY19icmVha3BvaW50X2F0IChDT1JFX0FERFIgd2hlcmUpCi0gLyogUHJvdmlkZSBv bmx5IGEgZmlsbCBmdW5jdGlvbiBmb3IgdGhlIGdlbmVyYWwgcmVnaXN0ZXIgc2V0LiAgcHNfbGdl dHJlZ3MKLSAgICB3aWxsIHVzZSB0aGlzIGZvciBOUFRMIHN1cHBvcnQuICAqLwotIAotLXN0YXRp YyB2b2lkIHBwY19maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQg KmJ1ZikKLStzdGF0aWMgdm9pZCBwcGNfZmlsbF9ncmVnc2V0ICh2b2lkICpidWYpCi0gewotICAg aW50IGk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykKLS0gICAgcHBjX2NvbGxlY3Rf cHRyYWNlX3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKGNoYXIgKikgYnVmICsgcHBjX3JlZ21hcFtp XSk7Ci0rICAgIHBwY19jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAoaSwgKGNoYXIgKikgYnVmICsg cHBjX3JlZ21hcFtpXSk7Ci0gCi0gICBmb3IgKGkgPSA2NDsgaSA8IDcwOyBpKyspCi0tICAgIHBw Y19jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAocmVnY2FjaGUsIGksIChjaGFyICopIGJ1ZiArIHBw Y19yZWdtYXBbaV0pOwotKyAgICBwcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKGksIChjaGFy ICopIGJ1ZiArIHBwY19yZWdtYXBbaV0pOwotIAotICAgZm9yIChpID0gNzE7IGkgPCA3MzsgaSsr KQotLSAgICBwcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoY2hhciAq KSBidWYgKyBwcGNfcmVnbWFwW2ldKTsKLSsgICAgcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVy IChpLCAoY2hhciAqKSBidWYgKyBwcGNfcmVnbWFwW2ldKTsKLSB9Ci0gCi0gI2lmbmRlZiBQVFJB Q0VfR0VUVlNYUkVHUwotQEAgLTQ3Miw3ICs0NzEsNyBAQCBzdGF0aWMgdm9pZCBwcGNfZmlsbF9n cmVnc2V0IChzdHJ1Y3QgcmVnCi0gI2RlZmluZSBTSVpFT0ZfVlNYUkVHUyAzMio4Ci0gCi0gc3Rh dGljIHZvaWQKLS1wcGNfZmlsbF92c3hyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IHZvaWQgKmJ1ZikKLStwcGNfZmlsbF92c3hyZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQg aSwgYmFzZTsKLSAgIGNoYXIgKnJlZ3NldCA9IGJ1ZjsKLUBAIC00ODIsMTEgKzQ4MSwxMSBAQCBw cGNfZmlsbF92c3hyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnCi0gCi0gICBiYXNlID0gZmlu ZF9yZWdubyAoInZzMGgiKTsKLSAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQotLSAgICBjb2xs ZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSArIGksICZyZWdzZXRbaSAqIDhdKTsKLSsgICAg Y29sbGVjdF9yZWdpc3RlciAoYmFzZSArIGksICZyZWdzZXRbaSAqIDhdKTsKLSB9Ci0gCi0gc3Rh dGljIHZvaWQKLS1wcGNfc3RvcmVfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBjb25zdCB2b2lkICpidWYpCi0rcHBjX3N0b3JlX3ZzeHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVm KQotIHsKLSAgIGludCBpLCBiYXNlOwotICAgY29uc3QgY2hhciAqcmVnc2V0ID0gYnVmOwotQEAg LTQ5Niw3ICs0OTUsNyBAQCBwcGNfc3RvcmVfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJl Ci0gCi0gICBiYXNlID0gZmluZF9yZWdubyAoInZzMGgiKTsKLSAgIGZvciAoaSA9IDA7IGkgPCAz MjsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBiYXNlICsgaSwgJnJlZ3Nl dFtpICogOF0pOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGJhc2UgKyBpLCAmcmVnc2V0W2kgKiA4 XSk7Ci0gfQotIAotICNpZm5kZWYgUFRSQUNFX0dFVFZSUkVHUwotQEAgLTUwNyw3ICs1MDYsNyBA QCBwcGNfc3RvcmVfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gI2RlZmluZSBTSVpF T0ZfVlJSRUdTIDMzKjE2KzQKLSAKLSBzdGF0aWMgdm9pZAotLXBwY19maWxsX3ZycmVnc2V0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rcHBjX2ZpbGxfdnJyZWdzZXQg KHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaSwgYmFzZTsKLSAgIGNoYXIgKnJlZ3NldCA9IGJ1ZjsK LUBAIC01MTcsMTQgKzUxNiwxNCBAQCBwcGNfZmlsbF92cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjCi0gCi0gICBiYXNlID0gZmluZF9yZWdubyAoInZyMCIpOwotICAgZm9yIChpID0gMDsg aSA8IDMyOyBpKyspCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBiYXNlICsgaSwg JnJlZ3NldFtpICogMTZdKTsKLSsgICAgY29sbGVjdF9yZWdpc3RlciAoYmFzZSArIGksICZyZWdz ZXRbaSAqIDE2XSk7Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi dnNjciIsICZyZWdzZXRbMzIgKiAxNiArIDEyXSk7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAidnJzYXZlIiwgJnJlZ3NldFszMyAqIDE2XSk7Ci0rICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKCJ2c2NyIiwgJnJlZ3NldFszMiAqIDE2ICsgMTJdKTsKLSsgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInZyc2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOwotIH0KLSAK LSBzdGF0aWMgdm9pZAotLXBwY19zdG9yZV92cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK3BwY19zdG9yZV92cnJlZ3NldCAoY29uc3Qgdm9pZCAq YnVmKQotIHsKLSAgIGludCBpLCBiYXNlOwotICAgY29uc3QgY2hhciAqcmVnc2V0ID0gYnVmOwot QEAgLTUzNCwxMCArNTMzLDEwIEBAIHBwY19zdG9yZV92cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZWcKLSAKLSAgIGJhc2UgPSBmaW5kX3JlZ25vICgidnIwIik7Ci0gICBmb3IgKGkgPSAwOyBp IDwgMzI7IGkrKykKLS0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSArIGksICZy ZWdzZXRbaSAqIDE2XSk7Ci0rICAgIHN1cHBseV9yZWdpc3RlciAoYmFzZSArIGksICZyZWdzZXRb aSAqIDE2XSk7Ci0gCi0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJ2c2Ny IiwgJnJlZ3NldFszMiAqIDE2ICsgMTJdKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgInZyc2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOwotKyAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKCJ2c2NyIiwgJnJlZ3NldFszMiAqIDE2ICsgMTJdKTsKLSsgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lICgidnJzYXZlIiwgJnJlZ3NldFszMyAqIDE2XSk7Ci0gfQotIAotICNpZm5k ZWYgUFRSQUNFX0dFVEVWUlJFR1MKLUBAIC01NTMsNyArNTUyLDcgQEAgc3RydWN0IGdkYl9ldnJy ZWdzZXRfdAotIH07Ci0gCi0gc3RhdGljIHZvaWQKLS1wcGNfZmlsbF9ldnJyZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLStwcGNfZmlsbF9ldnJyZWdzZXQgKHZv aWQgKmJ1ZikKLSB7Ci0gICBpbnQgaSwgZXYwOwotICAgc3RydWN0IGdkYl9ldnJyZWdzZXRfdCAq cmVnc2V0ID0gYnVmOwotQEAgLTU2MywxNCArNTYyLDE0IEBAIHBwY19maWxsX2V2cnJlZ3NldCAo c3RydWN0IHJlZ2NhY2hlICpyZWcKLSAKLSAgIGV2MCA9IGZpbmRfcmVnbm8gKCJldjBoIik7Ci0g ICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykKLS0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2Fj aGUsIGV2MCArIGksICZyZWdzZXQtPmV2cltpXSk7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGV2 MCArIGksICZyZWdzZXQtPmV2cltpXSk7Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAiYWNjIiwgJnJlZ3NldC0+YWNjKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJzcGVmc2NyIiwgJnJlZ3NldC0+c3BlZnNjcik7Ci0rICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKCJhY2MiLCAmcmVnc2V0LT5hY2MpOwotKyAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lICgic3BlZnNjciIsICZyZWdzZXQtPnNwZWZzY3IpOwotIH0KLSAKLSBzdGF0 aWMgdm9pZAotLXBwY19zdG9yZV9ldnJyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGNvbnN0IHZvaWQgKmJ1ZikKLStwcGNfc3RvcmVfZXZycmVnc2V0IChjb25zdCB2b2lkICpidWYp Ci0gewotICAgaW50IGksIGV2MDsKLSAgIGNvbnN0IHN0cnVjdCBnZGJfZXZycmVnc2V0X3QgKnJl Z3NldCA9IGJ1ZjsKLUBAIC01ODAsMTAgKzU3OSwxMCBAQCBwcGNfc3RvcmVfZXZycmVnc2V0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlCi0gCi0gICBldjAgPSBmaW5kX3JlZ25vICgiZXYwaCIpOwotICAg Zm9yIChpID0gMDsgaSA8IDMyOyBpKyspCi0tICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUs IGV2MCArIGksICZyZWdzZXQtPmV2cltpXSk7Ci0rICAgIHN1cHBseV9yZWdpc3RlciAoZXYwICsg aSwgJnJlZ3NldC0+ZXZyW2ldKTsKLSAKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdj YWNoZSwgImFjYyIsICZyZWdzZXQtPmFjYyk7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJzcGVmc2NyIiwgJnJlZ3NldC0+c3BlZnNjcik7Ci0rICBzdXBwbHlfcmVnaXN0 ZXJfYnlfbmFtZSAoImFjYyIsICZyZWdzZXQtPmFjYyk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoInNwZWZzY3IiLCAmcmVnc2V0LT5zcGVmc2NyKTsKLSB9Ci0gCi0gc3RydWN0IHJlZ3Nl dF9pbmZvIHRhcmdldF9yZWdzZXRzW10gPSB7Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXMz OTAtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9n ZGJzZXJ2ZXIvbGludXgtczM5MC1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCAr MDEwMAotQEAgLTEwNiw3ICsxMDYsNyBAQCBzMzkwX2Nhbm5vdF9zdG9yZV9yZWdpc3RlciAoaW50 IHJlZ25vKQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXMzOTBfY29sbGVjdF9wdHJhY2VfcmVnaXN0 ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywgY2hhciAqYnVmKQotK3Mz OTBfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKGludCByZWdubywgY2hhciAqYnVmKQotIHsKLSAg IGludCBzaXplID0gcmVnaXN0ZXJfc2l6ZSAocmVnbm8pOwotICAgaWYgKHNpemUgPCBzaXplb2Yg KGxvbmcpKQotQEAgLTEyMyw5ICsxMjMsOSBAQCBzMzkwX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVy IChzdHJ1Y3QgcmVnCi0gCX0KLSAgICAgICBlbHNlIGlmIChyZWdhZGRyID09IFBUX1BTV0FERFIK LSAJICAgICAgIHx8IChyZWdhZGRyID49IFBUX0dQUjAgJiYgcmVnYWRkciA8PSBQVF9HUFIxNSkp Ci0tCWNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmICsgc2l6ZW9mIChsb25n KSAtIHNpemUpOwotKwljb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgYnVmICsgc2l6ZW9mIChsb25n KSAtIHNpemUpOwotICAgICAgIGVsc2UKLS0JY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJl Z25vLCBidWYpOwotKwljb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgYnVmKTsKLSAKLSAgICAgICAv KiBXaGVuIGRlYnVnZ2luZyBhIDMyLWJpdCBpbmZlcmlvciBvbiBhIDY0LWJpdCBob3N0LCBtYWtl IHN1cmUKLSAJIHRoZSAzMS1iaXQgYWRkcmVzc2luZyBtb2RlIGJpdCBpcyBzZXQgaW4gdGhlIFBT VyBtYXNrLiAgKi8KLUBAIC0xMzcsNyArMTM3LDcgQEAgczM5MF9jb2xsZWN0X3B0cmFjZV9yZWdp c3RlciAoc3RydWN0IHJlZwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXMzOTBfc3VwcGx5X3B0cmFj ZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLCBjb25zdCBj aGFyICpidWYpCi0rczM5MF9zdXBwbHlfcHRyYWNlX3JlZ2lzdGVyIChpbnQgcmVnbm8sIGNvbnN0 IGNoYXIgKmJ1ZikKLSB7Ci0gICBpbnQgc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKHJlZ25vKTsKLSAg IGlmIChzaXplIDwgc2l6ZW9mIChsb25nKSkKLUBAIC0xNTIsMTggKzE1MiwxOCBAQCBzMzkwX3N1 cHBseV9wdHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCByZWdjCi0gCX0KLSAgICAgICBlbHNlIGlmIChy ZWdhZGRyID09IFBUX1BTV0FERFIKLSAJICAgICAgIHx8IChyZWdhZGRyID49IFBUX0dQUjAgJiYg cmVnYWRkciA8PSBQVF9HUFIxNSkpCi0tCXN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25v LCBidWYgKyBzaXplb2YgKGxvbmcpIC0gc2l6ZSk7Ci0rCXN1cHBseV9yZWdpc3RlciAocmVnbm8s IGJ1ZiArIHNpemVvZiAobG9uZykgLSBzaXplKTsKLSAgICAgICBlbHNlCi0tCXN1cHBseV9yZWdp c3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOwotKwlzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBi dWYpOwotICAgICB9Ci0gICBlbHNlCi0tICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJl Z25vLCBidWYpOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBidWYpOwotIH0KLSAKLSAv KiBQcm92aWRlIG9ubHkgYSBmaWxsIGZ1bmN0aW9uIGZvciB0aGUgZ2VuZXJhbCByZWdpc3RlciBz ZXQuICBwc19sZ2V0cmVncwotICAgIHdpbGwgdXNlIHRoaXMgZm9yIE5QVEwgc3VwcG9ydC4gICov Ci0gCi0tc3RhdGljIHZvaWQgczM5MF9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIHZvaWQgKmJ1ZikKLStzdGF0aWMgdm9pZCBzMzkwX2ZpbGxfZ3JlZ3NldCAodm9pZCAq YnVmKQotIHsKLSAgIGludCBpOwotIAotQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCBz MzkwX2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlCi0gCSAgfHwgdGhlX2xvd190YXJnZXQucmVnbWFw W2ldID4gUFRfQUNSMTUpCi0gCWNvbnRpbnVlOwotIAotLSAgICAgIHMzOTBfY29sbGVjdF9wdHJh Y2VfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoY2hhciAqKSBidWYKLSsgICAgICBzMzkwX2NvbGxl Y3RfcHRyYWNlX3JlZ2lzdGVyIChpLCAoY2hhciAqKSBidWYKLSAJCQkJICAgICAgICsgdGhlX2xv d190YXJnZXQucmVnbWFwW2ldKTsKLSAgICAgfQotIH0KLUBAIC0xODgsMTIgKzE4OCwxMiBAQCBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzMzkwX2JyZWFrcG9pCi0gI2RlZmluZSBzMzkwX2Jy ZWFrcG9pbnRfbGVuIDIKLSAKLSBzdGF0aWMgQ09SRV9BRERSCi0tczM5MF9nZXRfcGMgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUpCi0rczM5MF9nZXRfcGMgKCkKLSB7Ci0gICBpZiAocmVnaXN0 ZXJfc2l6ZSAoMCkgPT0gNCkKLSAgICAgewotICAgICAgIHVuc2lnbmVkIGludCBwYzsKLS0gICAg ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicHN3YSIsICZwYyk7Ci0rICAg ICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicHN3YSIsICZwYyk7Ci0gI2lmbmRlZiBfX3Mz OTB4X18KLSAgICAgICBwYyAmPSAweDdmZmZmZmZmOwotICNlbmRpZgotQEAgLTIwMiwxMyArMjAy LDEzIEBAIHMzOTBfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotICAgZWxzZQot ICAgICB7Ci0gICAgICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAicHN3YSIsICZwYyk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgicHN3YSIsICZwYyk7Ci0gICAgICAgcmV0dXJuIHBjOwotICAgICB9Ci0gfQot IAotIHN0YXRpYyB2b2lkCi0tczM5MF9zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IENPUkVfQUREUiBuZXdwYykKLStzMzkwX3NldF9wYyAoQ09SRV9BRERSIG5ld3BjKQotIHsKLSAg IGlmIChyZWdpc3Rlcl9zaXplICgwKSA9PSA0KQotICAgICB7Ci1AQCAtMjE2LDEyICsyMTYsMTIg QEAgczM5MF9zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIAotICNpZm5kZWYgX19z MzkweF9fCi0gICAgICAgcGMgfD0gMHg4MDAwMDAwMDsKLSAjZW5kaWYKLS0gICAgICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwc3dhIiwgJnBjKTsKLSsgICAgICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAoInBzd2EiLCAmcGMpOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsK LSAgICAgICB1bnNpZ25lZCBsb25nIHBjID0gbmV3cGM7Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAicHN3YSIsICZwYyk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKCJwc3dhIiwgJnBjKTsKLSAgICAgfQotIH0KLSAKLUBAIC0yNjgsOCArMjY4LDcg QEAgczM5MF9hcmNoX3NldHVwICh2b2lkKQotICNpZmRlZiBfX3MzOTB4X18KLSAgIHsKLSAgICAg dW5zaWduZWQgaW50IHBzd207Ci0tICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRf dGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLS0gICAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzd20iLCAmcHN3bSk7Ci0rICAgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoInBzd20iLCAmcHN3bSk7Ci0gICAgIGlmIChwc3dtICYgMSkKLSAgICAg ICBpbml0X3JlZ2lzdGVyc19zMzkweF9saW51eDY0ICgpOwotIAotLS0tIC4vZ2RiL2dkYnNlcnZl ci9saW51eC1zaC1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL2dkYnNlcnZlci9saW51eC1zaC1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAw MDAwMCArMDEwMAotQEAgLTU5LDE4ICs1OSwxOCBAQCBzaF9jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIg KGludCByZWdubykKLSB9Ci0gCi0gc3RhdGljIENPUkVfQUREUgotLXNoX2dldF9wYyAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSkKLStzaF9nZXRfcGMgKCkKLSB7Ci0gICB1bnNpZ25lZCBsb25n IHBjOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsK LSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKLSAgIHJldHVybiBwYzsK LSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1zaF9zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIENPUkVfQUREUiBwYykKLStzaF9zZXRfcGMgKENPUkVfQUREUiBwYykKLSB7Ci0gICB1bnNp Z25lZCBsb25nIG5ld3BjID0gcGM7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJwYyIsICZuZXdwYyk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5l d3BjKTsKLSB9Ci0gCi0gLyogQ29ycmVjdCBpbiBlaXRoZXIgZW5kaWFubmVzcywgb2J2aW91c2x5 LiAgKi8KLUBAIC05NCwxMyArOTQsMTMgQEAgc2hfYnJlYWtwb2ludF9hdCAoQ09SRV9BRERSIHdo ZXJlKQotIC8qIFByb3ZpZGUgb25seSBhIGZpbGwgZnVuY3Rpb24gZm9yIHRoZSBnZW5lcmFsIHJl Z2lzdGVyIHNldC4gIHBzX2xnZXRyZWdzCi0gICAgd2lsbCB1c2UgdGhpcyBmb3IgTlBUTCBzdXBw b3J0LiAgKi8KLSAKLS1zdGF0aWMgdm9pZCBzaF9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLStzdGF0aWMgdm9pZCBzaF9maWxsX2dyZWdzZXQgKHZv aWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCAyMzsgaSsrKQot ICAgICBpZiAoc2hfcmVnbWFwW2ldICE9IC0xKQotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJl Z2NhY2hlLCBpLCAoY2hhciAqKSBidWYgKyBzaF9yZWdtYXBbaV0pOwotKyAgICAgIGNvbGxlY3Rf cmVnaXN0ZXIgKGksIChjaGFyICopIGJ1ZiArIHNoX3JlZ21hcFtpXSk7Ci0gfQotIAotIHN0cnVj dCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1tdID0gewotLS0tIC4vZ2RiL2dkYnNlcnZlci9s aW51eC1zcGFyYy1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL2dkYnNlcnZlci9saW51eC1zcGFyYy1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAw MDAwMDAwMCArMDEwMAotQEAgLTExMyw3ICsxMTMsNyBAQCBzcGFyY19jYW5ub3RfZmV0Y2hfcmVn aXN0ZXIgKGludCByZWdubykKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1zcGFyY19maWxsX2dyZWdz ZXRfdG9fc3RhY2sgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikK LStzcGFyY19maWxsX2dyZWdzZXRfdG9fc3RhY2sgKGNvbnN0IHZvaWQgKmJ1ZikKLSB7Ci0gICBp bnQgaTsKLSAgIENPUkVfQUREUiBhZGRyID0gMDsKLUBAIC0xMjgsMTQgKzEyOCwxNCBAQCBzcGFy Y19maWxsX2dyZWdzZXRfdG9fc3RhY2sgKHN0cnVjdCByZWdjCi0gCi0gICBmb3IgKGkgPSBsMF9y ZWdubzsgaSA8PSBpN19yZWdubzsgaSsrKQotICAgICB7Ci0tICAgICAgY29sbGVjdF9yZWdpc3Rl ciAocmVnY2FjaGUsIGksIHRtcF9yZWdfYnVmKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyIChp LCB0bXBfcmVnX2J1Zik7Ci0gICAgICAgKCp0aGVfdGFyZ2V0LT53cml0ZV9tZW1vcnkpIChhZGRy LCB0bXBfcmVnX2J1Ziwgc2l6ZW9mKHRtcF9yZWdfYnVmKSk7Ci0gICAgICAgYWRkciArPSBzaXpl b2YodG1wX3JlZ19idWYpOwotICAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tc3BhcmNfZmls bF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rc3BhcmNf ZmlsbF9ncmVnc2V0ICh2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gICBpbnQgcmFuZ2U7Ci1A QCAtMTQzLDI1ICsxNDMsMjUgQEAgc3BhcmNfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZwotICAgZm9yIChyYW5nZSA9IDA7IHJhbmdlIDwgTl9HUkVHU19SQU5HRVM7IHJhbmdlKysp Ci0gICAgIGZvciAoaSA9IGdyZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fc3RhcnQ7IGkgPD0gZ3Jl Z3NfcmFuZ2VzW3JhbmdlXS5yZWdub19lbmQ7IGkrKykKLSAgICAgICBpZiAoc3BhcmNfcmVnbWFw W2ldICE9IC0xKQotLQljb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1 ZikgKyBzcGFyY19yZWdtYXBbaV0pOwotKwljb2xsZWN0X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikg YnVmKSArIHNwYXJjX3JlZ21hcFtpXSk7Ci0gCi0tICBzcGFyY19maWxsX2dyZWdzZXRfdG9fc3Rh Y2sgKHJlZ2NhY2hlLCBidWYpOwotKyAgc3BhcmNfZmlsbF9ncmVnc2V0X3RvX3N0YWNrIChidWYp OwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXNwYXJjX2ZpbGxfZnByZWdzZXQgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLStzcGFyY19maWxsX2ZwcmVnc2V0ICh2b2lkICpi dWYpCi0gewotICAgaW50IGk7Ci0gICBpbnQgcmFuZ2U7Ci0gCi0gICBmb3IgKHJhbmdlID0gMDsg cmFuZ2UgPCBOX0ZQUkVHU19SQU5HRVM7IHJhbmdlKyspCi0gICAgIGZvciAoaSA9IGZwcmVnc19y YW5nZXNbcmFuZ2VdLnJlZ25vX3N0YXJ0OyBpIDw9IGZwcmVnc19yYW5nZXNbcmFuZ2VdLnJlZ25v X2VuZDsgaSsrKQotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoKGNoYXIg KikgYnVmKSArIHNwYXJjX3JlZ21hcFtpXSk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAoaSwg KChjaGFyICopIGJ1ZikgKyBzcGFyY19yZWdtYXBbaV0pOwotIAotIH0KLSAKLSBzdGF0aWMgdm9p ZAotLXNwYXJjX3N0b3JlX2dyZWdzZXRfZnJvbV9zdGFjayAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK3NwYXJjX3N0b3JlX2dyZWdzZXRfZnJvbV9zdGFjayAo Y29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIGludCBpOwotICAgQ09SRV9BRERSIGFkZHIgPSAwOwot QEAgLTE3NywxMyArMTc3LDEzIEBAIHNwYXJjX3N0b3JlX2dyZWdzZXRfZnJvbV9zdGFjayAoc3Ry dWN0IHIKLSAgIGZvciAoaSA9IGwwX3JlZ25vOyBpIDw9IGk3X3JlZ25vOyBpKyspCi0gICAgIHsK LSAgICAgICAoKnRoZV90YXJnZXQtPnJlYWRfbWVtb3J5KSAoYWRkciwgdG1wX3JlZ19idWYsIHNp emVvZih0bXBfcmVnX2J1ZikpOwotLSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGks IHRtcF9yZWdfYnVmKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXIgKGksIHRtcF9yZWdfYnVmKTsK LSAgICAgICBhZGRyICs9IHNpemVvZih0bXBfcmVnX2J1Zik7Ci0gICAgIH0KLSB9Ci0gCi0gc3Rh dGljIHZvaWQKLS1zcGFyY19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBjb25zdCB2b2lkICpidWYpCi0rc3BhcmNfc3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVm KQotIHsKLSAgIGludCBpOwotICAgY2hhciB6ZXJvYnVmWzhdOwotQEAgLTE5NCwzMyArMTk0LDMx IEBAIHNwYXJjX3N0b3JlX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmUKLSAgIGZvciAocmFu Z2UgPSAwOyByYW5nZSA8IE5fR1JFR1NfUkFOR0VTOyByYW5nZSsrKQotICAgICBmb3IgKGkgPSBn cmVnc19yYW5nZXNbcmFuZ2VdLnJlZ25vX3N0YXJ0OyBpIDw9IGdyZWdzX3Jhbmdlc1tyYW5nZV0u cmVnbm9fZW5kOyBpKyspCi0gICAgICAgaWYgKHNwYXJjX3JlZ21hcFtpXSAhPSAtMSkKLS0Jc3Vw cGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBzcGFyY19yZWdtYXBb aV0pOwotKwlzdXBwbHlfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFw W2ldKTsKLSAgICAgICBlbHNlCi0tCXN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksIHplcm9i dWYpOwotKwlzdXBwbHlfcmVnaXN0ZXIgKGksIHplcm9idWYpOwotIAotLSAgc3BhcmNfc3RvcmVf Z3JlZ3NldF9mcm9tX3N0YWNrIChyZWdjYWNoZSwgYnVmKTsKLSsgIHNwYXJjX3N0b3JlX2dyZWdz ZXRfZnJvbV9zdGFjayAoYnVmKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1zcGFyY19zdG9yZV9m cHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK3Nw YXJjX3N0b3JlX2ZwcmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gICBp bnQgcmFuZ2U7Ci0gCi0gICBmb3IgKHJhbmdlID0gMDsgcmFuZ2UgPCBOX0ZQUkVHU19SQU5HRVM7 IHJhbmdlKyspCi0tICAgIGZvciAoaSA9IGZwcmVnc19yYW5nZXNbcmFuZ2VdLnJlZ25vX3N0YXJ0 OwotLQkgaSA8PSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19lbmQ7Ci0tCSBpKyspCi0tICAg ICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBzcGFyY19y ZWdtYXBbaV0pOwotKyAgICBmb3IgKGkgPSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19zdGFy dDsgaSA8PSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19lbmQ7IGkrKykKLSsgICAgICBzdXBw bHlfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFwW2ldKTsKLSB9Ci0g Ci0gZXh0ZXJuIGludCBkZWJ1Z190aHJlYWRzOwotIAotIHN0YXRpYyBDT1JFX0FERFIKLS1zcGFy Y19nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCi0rc3BhcmNfZ2V0X3BjICgpCi0g ewotLSAgdW5zaWduZWQgbG9uZyBwYzsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVn Y2FjaGUsICJwYyIsICZwYyk7Ci0rICBDT1JFX0FERFIgcGM7Ci0rICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKCJwYyIsICZwYyk7Ci0gICBpZiAoZGVidWdfdGhyZWFkcykKLSAgICAgZnByaW50 ZiAoc3RkZXJyLCAic3RvcCBwYyBpcyAlMDhseFxuIiwgcGMpOwotICAgcmV0dXJuIHBjOwotQEAg LTI0OSwxMiArMjQ3LDExIEBAIHNwYXJjX2JyZWFrcG9pbnRfYXQgKENPUkVfQUREUiB3aGVyZSkK LSAgICBpcyBvdXRzaWRlIG9mIHRoZSBmdW5jdGlvbi4gIFNvIHJhdGhlciB0aGFuIGltcG9ydGlu ZyBzb2Z0d2FyZSBzaW5nbGUtc3RlcCwKLSAgICB3ZSBjYW4ganVzdCBydW4gdW50aWwgZXhpdC4g ICovCi0gc3RhdGljIENPUkVfQUREUgotLXNwYXJjX3JlaW5zZXJ0X2FkZHIgKHZvaWQpCi0rc3Bh cmNfcmVpbnNlcnRfYWRkciAoKQotIHsKLS0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBn ZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLSAgIENPUkVfQUREUiBs cjsKLSAgIC8qIE83IGlzIHRoZSBlcXVpdmFsZW50IHRvIHRoZSAnbHInIG9mIG90aGVyIGFyY2hz LiAgKi8KLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJvNyIsICZscik7 Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJvNyIsICZscik7Ci0gICByZXR1cm4gbHI7 Ci0gfQotIAotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMJMjAxMC0wMS0yMCAy Mzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxv dy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1AQCAtMTczLDcgKzE3Myw3 IEBAIGkzODZfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCi0gfQotIAotIHN0YXRp YyB2b2lkCi0teDg2X2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9p ZCAqYnVmKQotK3g4Nl9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAK LUBAIC0xODIsMjAgKzE4MiwxOSBAQCB4ODZfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhCi0gICAgIHsKLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgWDg2XzY0X05VTV9SRUdTOyBp KyspCi0gCWlmICh4ODZfNjRfcmVnbWFwW2ldICE9IC0xKQotLQkgIGNvbGxlY3RfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBpLCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9yZWdtYXBbaV0pOwotKwkgIGNv bGxlY3RfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgeDg2XzY0X3JlZ21hcFtpXSk7Ci0g ICAgICAgcmV0dXJuOwotICAgICB9Ci0gI2VuZGlmCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwgSTM4 Nl9OVU1fUkVHUzsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChj aGFyICopIGJ1ZikgKyBpMzg2X3JlZ21hcFtpXSk7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGks ICgoY2hhciAqKSBidWYpICsgaTM4Nl9yZWdtYXBbaV0pOwotIAotLSAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgIm9yaWdfZWF4IiwKLS0JCQkgICAgKChjaGFyICopIGJ1Zikg KyBPUklHX0VBWCAqIDQpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgib3JpZ19lYXgi LCAoKGNoYXIgKikgYnVmKSArIE9SSUdfRUFYICogNCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0t eDg2X3N0b3JlX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQg KmJ1ZikKLSt4ODZfc3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIGludCBp OwotIAotQEAgLTIwNCw1MCArMjAzLDQ5IEBAIHg4Nl9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2MKLSAgICAgewotICAgICAgIGZvciAoaSA9IDA7IGkgPCBYODZfNjRfTlVNX1JF R1M7IGkrKykKLSAJaWYgKHg4Nl82NF9yZWdtYXBbaV0gIT0gLTEpCi0tCSAgc3VwcGx5X3JlZ2lz dGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyB4ODZfNjRfcmVnbWFwW2ldKTsKLSsJ ICBzdXBwbHlfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgeDg2XzY0X3JlZ21hcFtpXSk7 Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gI2VuZGlmCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwg STM4Nl9OVU1fUkVHUzsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAo KGNoYXIgKikgYnVmKSArIGkzODZfcmVnbWFwW2ldKTsKLSsgICAgc3VwcGx5X3JlZ2lzdGVyIChp LCAoKGNoYXIgKikgYnVmKSArIGkzODZfcmVnbWFwW2ldKTsKLSAKLS0gIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgIm9yaWdfZWF4IiwKLS0JCQkgICAoKGNoYXIgKikgYnVmKSAr IE9SSUdfRUFYICogNCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoIm9yaWdfZWF4Iiwg KChjaGFyICopIGJ1ZikgKyBPUklHX0VBWCAqIDQpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXg4 Nl9maWxsX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0r eDg2X2ZpbGxfZnByZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gI2lmZGVmIF9feDg2XzY0X18KLS0g IGkzODdfY2FjaGVfdG9fZnhzYXZlIChyZWdjYWNoZSwgYnVmKTsKLSsgIGkzODdfY2FjaGVfdG9f ZnhzYXZlIChidWYpOwotICNlbHNlCi0tICBpMzg3X2NhY2hlX3RvX2ZzYXZlIChyZWdjYWNoZSwg YnVmKTsKLSsgIGkzODdfY2FjaGVfdG9fZnNhdmUgKGJ1Zik7Ci0gI2VuZGlmCi0gfQotIAotIHN0 YXRpYyB2b2lkCi0teDg2X3N0b3JlX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBjb25zdCB2b2lkICpidWYpCi0reDg2X3N0b3JlX2ZwcmVnc2V0IChjb25zdCB2b2lkICpidWYp Ci0gewotICNpZmRlZiBfX3g4Nl82NF9fCi0tICBpMzg3X2Z4c2F2ZV90b19jYWNoZSAocmVnY2Fj aGUsIGJ1Zik7Ci0rICBpMzg3X2Z4c2F2ZV90b19jYWNoZSAoYnVmKTsKLSAjZWxzZQotLSAgaTM4 N19mc2F2ZV90b19jYWNoZSAocmVnY2FjaGUsIGJ1Zik7Ci0rICBpMzg3X2ZzYXZlX3RvX2NhY2hl IChidWYpOwotICNlbmRpZgotIH0KLSAKLSAjaWZuZGVmIF9feDg2XzY0X18KLSAKLSBzdGF0aWMg dm9pZAotLXg4Nl9maWxsX2ZweHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9p ZCAqYnVmKQotK3g4Nl9maWxsX2ZweHJlZ3NldCAodm9pZCAqYnVmKQotIHsKLS0gIGkzODdfY2Fj aGVfdG9fZnhzYXZlIChyZWdjYWNoZSwgYnVmKTsKLSsgIGkzODdfY2FjaGVfdG9fZnhzYXZlIChi dWYpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXg4Nl9zdG9yZV9mcHhyZWdzZXQgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLSt4ODZfc3RvcmVfZnB4cmVnc2V0 IChjb25zdCB2b2lkICpidWYpCi0gewotLSAgaTM4N19meHNhdmVfdG9fY2FjaGUgKHJlZ2NhY2hl LCBidWYpOwotKyAgaTM4N19meHNhdmVfdG9fY2FjaGUgKGJ1Zik7Ci0gfQotIAotICNlbmRpZgot QEAgLTI4MiwzOCArMjgwLDM4IEBAIHN0cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1td ID0KLSB9OwotIAotIHN0YXRpYyBDT1JFX0FERFIKLS14ODZfZ2V0X3BjIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlKQotK3g4Nl9nZXRfcGMgKHZvaWQpCi0gewotICAgaW50IHVzZV82NGJpdCA9 IHJlZ2lzdGVyX3NpemUgKDApID09IDg7Ci0gCi0gICBpZiAodXNlXzY0Yml0KQotICAgICB7Ci0g ICAgICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAicmlwIiwgJnBjKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KCJyaXAiLCAmcGMpOwotICAgICAgIHJldHVybiAoQ09SRV9BRERSKSBwYzsKLSAgICAgfQotICAg ZWxzZQotICAgICB7Ci0gICAgICAgdW5zaWduZWQgaW50IHBjOwotLSAgICAgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJlaXAiLCAmcGMpOwotKyAgICAgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoImVpcCIsICZwYyk7Ci0gICAgICAgcmV0dXJuIChDT1JFX0FERFIpIHBj OwotICAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0teDg2X3NldF9wYyAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQotK3g4Nl9zZXRfcGMgKENPUkVfQUREUiBwYykK LSB7Ci0gICBpbnQgdXNlXzY0Yml0ID0gcmVnaXN0ZXJfc2l6ZSAoMCkgPT0gODsKLSAKLSAgIGlm ICh1c2VfNjRiaXQpCi0gICAgIHsKLSAgICAgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7Ci0t ICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicmlwIiwgJm5ld3BjKTsK LSsgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInJpcCIsICZuZXdwYyk7Ci0gICAgIH0K LSAgIGVsc2UKLSAgICAgewotICAgICAgIHVuc2lnbmVkIGludCBuZXdwYyA9IHBjOwotLSAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImVpcCIsICZuZXdwYyk7Ci0rICAg ICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJlaXAiLCAmbmV3cGMpOwotICAgICB9Ci0gfQot IAwKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgteHRlbnNhLWxvdy5jCTIwMTAtMDEtMjAgMjM6 NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXh0ZW5zYS1s b3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTM3LDcgKzM3LDcg QEAgZW51bSByZWdudW0gewotIH07Ci0gCi0gc3RhdGljIHZvaWQKLS14dGVuc2FfZmlsbF9ncmVn c2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0reHRlbnNhX2ZpbGxf Z3JlZ3NldCAodm9pZCAqYnVmKQotIHsKLSAgIGVsZl9ncmVnX3QqIHJzZXQgPSAoZWxmX2dyZWdf dCopYnVmOwotICAgaW50IGFyMF9yZWdudW07Ci1AQCAtNTEsMjcgKzUxLDI3IEBAIHh0ZW5zYV9m aWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmUKLSAKLSAgIGZvciAoaSA9IGFyMF9yZWdu dW07IGkgPCBhcjBfcmVnbnVtICsgWENIQUxfTlVNX0FSRUdTOyBpKyspCi0gICAgIHsKLS0gICAg ICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgcHRyKTsKLSsgICAgICBjb2xsZWN0X3Jl Z2lzdGVyIChpLCBwdHIpOwotICAgICAgIHB0ciArPSByZWdpc3Rlcl9zaXplKGkpOwotICAgICB9 Ci0gCi0gICAvKiBMb29wIHJlZ2lzdGVycywgaWYgaGFyZHdhcmUgaGFzIGl0LiAgKi8KLSAKLSAj aWYgWENIQUxfSEFWRV9MT09QCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAibGJlZyIsIChjaGFyKikmcnNldFtSX0xCRUddKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJsZW5kIiwgKGNoYXIqKSZyc2V0W1JfTEVORF0pOwotLSAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImxjb3VudCIsIChjaGFyKikmcnNldFtSX0xD T1VOVF0pOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgibGJlZyIsIChjaGFyKikmcnNl dFtSX0xCRUddKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImxlbmQiLCAoY2hhciop JnJzZXRbUl9MRU5EXSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJsY291bnQiLCAo Y2hhciopJnJzZXRbUl9MQ09VTlRdKTsKLSAjZW5kaWYKLSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJdKTsKLS0gIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsIChjaGFyKikmcnNldFtSX1BDXSk7 Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicHMiLCAoY2hhciopJnJz ZXRbUl9QU10pOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIndpbmRv d2Jhc2UiLCAoY2hhciopJnJzZXRbUl9XQl0pOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgIndpbmRvd3N0YXJ0IiwgKGNoYXIqKSZyc2V0W1JfV1NdKTsKLSsgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInNhciIsIChjaGFyKikmcnNldFtSX1NBUl0pOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAoY2hhciopJnJzZXRbUl9QQ10pOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicHMiLCAoY2hhciopJnJzZXRbUl9QU10pOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgid2luZG93YmFzZSIsIChjaGFyKikmcnNldFtSX1dCXSk7 Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJ3aW5kb3dzdGFydCIsIChjaGFyKikmcnNl dFtSX1dTXSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0teHRlbnNhX3N0b3JlX2dyZWdzZXQgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLSt4dGVuc2Ffc3RvcmVf Z3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIGNvbnN0IGVsZl9ncmVnX3QqIHJzZXQg PSAoY29uc3QgZWxmX2dyZWdfdCopYnVmOwotICAgaW50IGFyMF9yZWdudW07Ci1AQCAtODUsNDcg Kzg1LDQ3IEBAIHh0ZW5zYV9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnIKLSAKLSAg IGZvciAoaSA9IGFyMF9yZWdudW07IGkgPCBhcjBfcmVnbnVtICsgWENIQUxfTlVNX0FSRUdTOyBp KyspCi0gICAgIHsKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCBwdHIpOwot KyAgICAgIHN1cHBseV9yZWdpc3RlciAoaSwgcHRyKTsKLSAgICAgICBwdHIgKz0gcmVnaXN0ZXJf c2l6ZShpKTsKLSAgICAgfQotIAotICAgLyogTG9vcCByZWdpc3RlcnMsIGlmIGhhcmR3YXJlIGhh cyBpdC4gICovCi0gCi0gI2lmIFhDSEFMX0hBVkVfTE9PUAotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAibGJlZyIsIChjaGFyKikmcnNldFtSX0xCRUddKTsKLS0gIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImxlbmQiLCAoY2hhciopJnJzZXRbUl9MRU5E XSk7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJsY291bnQiLCAoY2hh ciopJnJzZXRbUl9MQ09VTlRdKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgibGJlZyIs IChjaGFyKikmcnNldFtSX0xCRUddKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgibGVu ZCIsIChjaGFyKikmcnNldFtSX0xFTkRdKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgi bGNvdW50IiwgKGNoYXIqKSZyc2V0W1JfTENPVU5UXSk7Ci0gI2VuZGlmCi0gCi0tICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJdKTsK LS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgKGNoYXIqKSZyc2V0 W1JfUENdKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzIiwgKGNo YXIqKSZyc2V0W1JfUFNdKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg IndpbmRvd2Jhc2UiLCAoY2hhciopJnJzZXRbUl9XQl0pOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAid2luZG93c3RhcnQiLCAoY2hhciopJnJzZXRbUl9XU10pOwotKyAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJdKTsKLSsg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAoY2hhciopJnJzZXRbUl9QQ10pOwotKyAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJwcyIsIChjaGFyKikmcnNldFtSX1BTXSk7Ci0rICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoIndpbmRvd2Jhc2UiLCAoY2hhciopJnJzZXRbUl9XQl0p OwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJ3aW5kb3dzdGFydCIsIChjaGFyKikmcnNl dFtSX1dTXSk7Ci0gfQotIAotIC8qIFh0ZW5zYSBHTlUvTGludXggUFRSQUNFIGludGVyZmFjZSBp bmNsdWRlcyBleHRlbmRlZCByZWdpc3RlciBzZXQuICAqLwotIAotIHN0YXRpYyB2b2lkCi0teHRl bnNhX2ZpbGxfeHRyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikK LSt4dGVuc2FfZmlsbF94dHJlZ3NldCAodm9pZCAqYnVmKQotIHsKLSAgIGNvbnN0IHh0ZW5zYV9y ZWd0YWJsZV90ICpwdHI7Ci0gCi0gICBmb3IgKHB0ciA9IHh0ZW5zYV9yZWdtYXBfdGFibGU7IHB0 ci0+bmFtZTsgcHRyKyspCi0gICAgIHsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCBwdHItPm5hbWUsCi0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChw dHItPm5hbWUsCi0gCQkJCShjaGFyKilidWYgKyBwdHItPnB0cmFjZV9vZmZzZXQpOwotICAgICB9 Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0teHRlbnNhX3N0b3JlX3h0cmVnc2V0IChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0reHRlbnNhX3N0b3JlX3h0cmVnc2V0 IChjb25zdCB2b2lkICpidWYpCi0gewotICAgY29uc3QgeHRlbnNhX3JlZ3RhYmxlX3QgKnB0cjsK LSAKLSAgIGZvciAocHRyID0geHRlbnNhX3JlZ21hcF90YWJsZTsgcHRyLT5uYW1lOyBwdHIrKykK LSAgICAgewotLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgcHRyLT5u YW1lLAotKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChwdHItPm5hbWUsCi0gCQkJCShj aGFyKilidWYgKyBwdHItPnB0cmFjZV9vZmZzZXQpOwotICAgICB9Ci0gfQotQEAgLTE1MCwxOSAr MTUwLDE5IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHh0ZW5zYV9icmVha3AKLSAjZGVm aW5lIHh0ZW5zYV9icmVha3BvaW50X2xlbiAyCi0gCi0gc3RhdGljIENPUkVfQUREUgotLXh0ZW5z YV9nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCi0reHRlbnNhX2dldF9wYyAodm9p ZCkKLSB7Ci0gICB1bnNpZ25lZCBsb25nIHBjOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo InBjIiwgJnBjKTsKLSAgIHJldHVybiBwYzsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS14dGVuc2Ff c2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCi0reHRlbnNh X3NldF9wYyAoQ09SRV9BRERSIHBjKQotIHsKLSAgIHVuc2lnbmVkIGxvbmcgbmV3cGMgPSBwYzsK LS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKLSsg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmbmV3cGMpOwotIH0KLSAKLSBzdGF0aWMg aW50Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL250by1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAw MDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9udG8tbG93LmMJMjAxMC0wMS0yMSAy MDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC02MDEsNyArNjAxLDcgQEAgbnRvX3dhaXQgKHB0 aWRfdCBwdGlkLAotICAgIElmIFJFR05PIGlzIC0xLCBmZXRjaCBhbGwgcmVnaXN0ZXJzLCBvciBS RUdOTyByZWdpc3RlciBvbmx5IG90aGVyd2lzZS4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1udG9f ZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCi0r bnRvX2ZldGNoX3JlZ2lzdGVycyAoaW50IHJlZ25vKQotIHsKLSAgIGludCByZWdzaXplOwotICAg cHJvY2ZzX2dyZWcgZ3JlZzsKLUBAIC02MjksNyArNjI5LDcgQEAgbnRvX2ZldGNoX3JlZ2lzdGVy cyAoc3RydWN0IHJlZ2NhY2hlICpyZQotIAkgICAgewotIAkgICAgICBjb25zdCB1bnNpZ25lZCBp bnQgcmVnaXN0ZXJvZmZzZXQKLSAJCT0gdGhlX2xvd190YXJnZXQucmVnaXN0ZXJfb2Zmc2V0IChy ZWdubyk7Ci0tCSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCAoKGNoYXIg KikmZ3JlZykgKyByZWdpc3Rlcm9mZnNldCk7Ci0rCSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVn bm8sICgoY2hhciAqKSZncmVnKSArIHJlZ2lzdGVyb2Zmc2V0KTsKLSAJICAgIH0KLSAJfQotICAg ICAgIGVsc2UKLUBAIC02MzgsNyArNjM4LDcgQEAgbnRvX2ZldGNoX3JlZ2lzdGVycyAoc3RydWN0 IHJlZ2NhY2hlICpyZQotIAkgICAgPSB0aGVfbG93X3RhcmdldC5yZWdpc3Rlcl9vZmZzZXQgKHJl Z25vKTsKLSAJICBpZiAocmVnaXN0ZXJvZmZzZXQgPT0gLTEpCi0gCSAgICByZXR1cm47Ci0tCSAg c3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sICgoY2hhciAqKSZncmVnKSArIHJlZ2lz dGVyb2Zmc2V0KTsKLSsJICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCAoKGNoYXIgKikmZ3JlZykg KyByZWdpc3Rlcm9mZnNldCk7Ci0gCX0KLSAgICAgfQotICAgZWxzZQotQEAgLTY0OSw3ICs2NDks NyBAQCBudG9fZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gICAgV2UgYWx3 YXlzIHN0b3JlIGFsbCByZWdpc3RlcnMsIHJlZ2FyZGxlc3Mgb2YgUkVHTk8uICAqLwotIAotIHN0 YXRpYyB2b2lkCi0tbnRvX3N0b3JlX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ25vKQotK250b19zdG9yZV9yZWdpc3RlcnMgKGludCByZWdubykKLSB7Ci0gICBw cm9jZnNfZ3JlZyBncmVnOwotICAgaW50IGVycjsKLUBAIC02NzEsNyArNjcxLDcgQEAgbnRvX3N0 b3JlX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZQotICAgICB7Ci0gICAgICAgY29uc3Qg dW5zaWduZWQgaW50IHJlZ29mZnNldAotIAk9IHRoZV9sb3dfdGFyZ2V0LnJlZ2lzdGVyX29mZnNl dCAocmVnbm8pOwotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgKChj aGFyICopJmdyZWcpICsgcmVnb2Zmc2V0KTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdu bywgKChjaGFyICopJmdyZWcpICsgcmVnb2Zmc2V0KTsKLSAgICAgfQotICAgZXJyID0gZGV2Y3Rs IChudG9faW5mZXJpb3IuY3RsX2ZkLCBEQ01EX1BST0NfU0VUR1JFRywgJmdyZWcsIHNpemVvZiAo Z3JlZyksCi0gCQkwKTsKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvcHJvYy1zZXJ2aWNlLmMJMjAxMC0w MS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvcHJvYy1z ZXJ2aWNlLmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMDEsNyAr MTAxLDYgQEAgcHNfbGdldHJlZ3MgKGdkYl9wc19wcm9jaGFuZGxlX3QgcGgsIGx3cAotICNpZmRl ZiBIQVZFX1JFR1NFVFMKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHdwOwotICAgc3RydWN0IHRocmVh ZF9pbmZvICpyZWdfaW5mZXJpb3IsICpzYXZlX2luZmVyaW9yOwotLSAgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZTsKLSAKLSAgIGx3cCA9IGZpbmRfbHdwX3BpZCAocGlkX3RvX3B0aWQgKGx3cGlk KSk7Ci0gICBpZiAobHdwID09IE5VTEwpCi1AQCAtMTEwLDkgKzEwOSw5IEBAIHBzX2xnZXRyZWdz IChnZGJfcHNfcHJvY2hhbmRsZV90IHBoLCBsd3AKLSAgIHJlZ19pbmZlcmlvciA9IGdldF9sd3Bf dGhyZWFkIChsd3ApOwotICAgc2F2ZV9pbmZlcmlvciA9IGN1cnJlbnRfaW5mZXJpb3I7Ci0gICBj dXJyZW50X2luZmVyaW9yID0gcmVnX2luZmVyaW9yOwotLSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFk X3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLS0gIHRoZV90YXJnZXQtPmZldGNoX3Jl Z2lzdGVycyAocmVnY2FjaGUsIC0xKTsKLS0gIGdyZWdzZXRfaW5mbyAoKS0+ZmlsbF9mdW5jdGlv biAocmVnY2FjaGUsIGdyZWdzZXQpOwotKwotKyAgdGhlX3RhcmdldC0+ZmV0Y2hfcmVnaXN0ZXJz ICgtMSk7Ci0rICBncmVnc2V0X2luZm8gKCktPmZpbGxfZnVuY3Rpb24gKGdyZWdzZXQpOwotIAot ICAgY3VycmVudF9pbmZlcmlvciA9IHNhdmVfaW5mZXJpb3I7Ci0gICByZXR1cm4gUFNfT0s7Ci0t LS0gLi9nZGIvZ2Ric2VydmVyL3JlZ2NhY2hlLmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAw MDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvcmVnY2FjaGUuYwkyMDEwLTAxLTIxIDIwOjMz OjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTIzLDYgKzIzLDE2IEBACi0gI2luY2x1ZGUgPHN0ZGxp Yi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSsvKiBUaGUgcHJpdmF0ZSBkYXRhIGZvciB0 aGUgcmVnaXN0ZXIgY2FjaGUuICBOb3RlIHRoYXQgd2UgaGF2ZSBvbmUKLSsgICBwZXIgaW5mZXJp b3I7IHRoaXMgaXMgcHJpbWFyaWx5IGZvciBzaW1wbGljaXR5LCBhcyB0aGUgcGVyZm9ybWFuY2UK LSsgICBiZW5lZml0IGlzIG1pbmltYWwuICAqLwotKwotK3N0cnVjdCBpbmZlcmlvcl9yZWdjYWNo ZV9kYXRhCi0rewotKyAgaW50IHJlZ2lzdGVyc192YWxpZDsKLSsgIHVuc2lnbmVkIGNoYXIgKnJl Z2lzdGVyczsKLSt9OwotKwotIHN0YXRpYyBpbnQgcmVnaXN0ZXJfYnl0ZXM7Ci0gCi0gc3RhdGlj IHN0cnVjdCByZWcgKnJlZ19kZWZzOwotQEAgLTMwLDIzICs0MCwyMCBAQCBzdGF0aWMgaW50IG51 bV9yZWdpc3RlcnM7Ci0gCi0gY29uc3QgY2hhciAqKmdkYnNlcnZlcl9leHBlZGl0ZV9yZWdzOwot IAotLXN0cnVjdCByZWdjYWNoZSAqCi0tZ2V0X3RocmVhZF9yZWdjYWNoZSAoc3RydWN0IHRocmVh ZF9pbmZvICp0aHJlYWQsIGludCBmZXRjaCkKLStzdGF0aWMgc3RydWN0IGluZmVyaW9yX3JlZ2Nh Y2hlX2RhdGEgKgotK2dldF9yZWdjYWNoZSAoc3RydWN0IHRocmVhZF9pbmZvICppbmYsIGludCBm ZXRjaCkKLSB7Ci0tICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotKyAgc3RydWN0IGluZmVy aW9yX3JlZ2NhY2hlX2RhdGEgKnJlZ2NhY2hlOwotIAotLSAgcmVnY2FjaGUgPSAoc3RydWN0IHJl Z2NhY2hlICopIGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCk7Ci0rICByZWdjYWNoZSA9 IChzdHJ1Y3QgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAqKSBpbmZlcmlvcl9yZWdjYWNoZV9kYXRh IChpbmYpOwotIAotICAgaWYgKHJlZ2NhY2hlID09IE5VTEwpCi0gICAgIGZhdGFsICgibm8gcmVn aXN0ZXIgY2FjaGUiKTsKLSAKLSsgIC8qIEZJWE1FIC0gZmV0Y2ggcmVnaXN0ZXJzIGZvciBJTkYg Ki8KLSAgIGlmIChmZXRjaCAmJiByZWdjYWNoZS0+cmVnaXN0ZXJzX3ZhbGlkID09IDApCi0gICAg IHsKLS0gICAgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yID0gY3VycmVudF9p bmZlcmlvcjsKLS0KLS0gICAgICBjdXJyZW50X2luZmVyaW9yID0gdGhyZWFkOwotLSAgICAgIGZl dGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIC0xKTsKLS0gICAgICBjdXJyZW50X2lu ZmVyaW9yID0gc2F2ZWRfaW5mZXJpb3I7Ci0rICAgICAgZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJz ICgtMSk7Ci0gICAgICAgcmVnY2FjaGUtPnJlZ2lzdGVyc192YWxpZCA9IDE7Ci0gICAgIH0KLSAK LUBAIC01NywxNiArNjQsMTYgQEAgdm9pZAotIHJlZ2NhY2hlX2ludmFsaWRhdGVfb25lIChzdHJ1 Y3QgaW5mZXJpb3JfbGlzdF9lbnRyeSAqZW50cnkpCi0gewotICAgc3RydWN0IHRocmVhZF9pbmZv ICp0aHJlYWQgPSAoc3RydWN0IHRocmVhZF9pbmZvICopIGVudHJ5OwotLSAgc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZTsKLSsgIHN0cnVjdCBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICpyZWdjYWNo ZTsKLSAKLS0gIHJlZ2NhY2hlID0gKHN0cnVjdCByZWdjYWNoZSAqKSBpbmZlcmlvcl9yZWdjYWNo ZV9kYXRhICh0aHJlYWQpOwotKyAgcmVnY2FjaGUgPSAoc3RydWN0IGluZmVyaW9yX3JlZ2NhY2hl X2RhdGEgKikgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAodGhyZWFkKTsKLSAKLSAgIGlmIChyZWdj YWNoZS0+cmVnaXN0ZXJzX3ZhbGlkKQotICAgICB7Ci0gICAgICAgc3RydWN0IHRocmVhZF9pbmZv ICpzYXZlZF9pbmZlcmlvciA9IGN1cnJlbnRfaW5mZXJpb3I7Ci0gCi0gICAgICAgY3VycmVudF9p bmZlcmlvciA9IHRocmVhZDsKLS0gICAgICBzdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2Nh Y2hlLCAtMSk7Ci0rICAgICAgc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzICgtMSk7Ci0gICAgICAg Y3VycmVudF9pbmZlcmlvciA9IHNhdmVkX2luZmVyaW9yOwotICAgICB9Ci0gCi1AQCAtNzQsMjUg KzgxLDI0IEBAIHJlZ2NhY2hlX2ludmFsaWRhdGVfb25lIChzdHJ1Y3QgaW5mZXJpb3IKLSB9Ci0g Ci0gdm9pZAotLXJlZ2NhY2hlX2ludmFsaWRhdGUgKHZvaWQpCi0rcmVnY2FjaGVfaW52YWxpZGF0 ZSAoKQotIHsKLSAgIGZvcl9lYWNoX2luZmVyaW9yICgmYWxsX3RocmVhZHMsIHJlZ2NhY2hlX2lu dmFsaWRhdGVfb25lKTsKLSB9Ci0gCi0tc3RydWN0IHJlZ2NhY2hlICoKLSt2b2lkICoKLSBuZXdf cmVnaXN0ZXJfY2FjaGUgKHZvaWQpCi0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsK LSsgIHN0cnVjdCBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICpyZWdjYWNoZTsKLSAKLSAgIGlmIChy ZWdpc3Rlcl9ieXRlcyA9PSAwKQotICAgICByZXR1cm4gTlVMTDsgLyogVGhlIGFyY2hpdGVjdHVy ZSBoYXNuJ3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuICAqLwotIAotICAgcmVnY2FjaGUgPSB4bWFs bG9jIChzaXplb2YgKCpyZWdjYWNoZSkpOwotIAotLSAgLyogTWFrZSBzdXJlIHRvIHplcm8taW5p dGlhbGl6ZSB0aGUgcmVnaXN0ZXIgY2FjaGUgd2hlbiBpdCBpcwotLSAgICAgY3JlYXRlZCwgaW4g Y2FzZSB0aGVyZSBhcmUgcmVnaXN0ZXJzIHRoZSB0YXJnZXQgbmV2ZXIKLS0gICAgIGZldGNoZXMu ICBUaGlzIHdheSB0aGV5J2xsIHJlYWQgYXMgemVybyBpbnN0ZWFkIG9mCi0tICAgICBnYXJiYWdl LiAgKi8KLSsgIC8qIE1ha2Ugc3VyZSB0byB6ZXJvLWluaXRpYWxpemUgdGhlIHJlZ2lzdGVyIGNh Y2hlIHdoZW4gaXQgaXMgY3JlYXRlZCwKLSsgICAgIGluIGNhc2UgdGhlcmUgYXJlIHJlZ2lzdGVy cyB0aGUgdGFyZ2V0IG5ldmVyIGZldGNoZXMuICBUaGlzIHdheSB0aGV5J2xsCi0rICAgICByZWFk IGFzIHplcm8gaW5zdGVhZCBvZiBnYXJiYWdlLiAgKi8KLSAgIHJlZ2NhY2hlLT5yZWdpc3RlcnMg PSB4Y2FsbG9jICgxLCByZWdpc3Rlcl9ieXRlcyk7Ci0gCi0gICByZWdjYWNoZS0+cmVnaXN0ZXJz X3ZhbGlkID0gMDsKLUBAIC0xMDEsOCArMTA3LDExIEBAIG5ld19yZWdpc3Rlcl9jYWNoZSAodm9p ZCkKLSB9Ci0gCi0gdm9pZAotLWZyZWVfcmVnaXN0ZXJfY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUpCi0rZnJlZV9yZWdpc3Rlcl9jYWNoZSAodm9pZCAqcmVnY2FjaGVfcCkKLSB7Ci0r ICBzdHJ1Y3QgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAqcmVnY2FjaGUKLSsgICAgPSAoc3RydWN0 IGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKikgcmVnY2FjaGVfcDsKLSsKLSAgIGlmIChyZWdjYWNo ZSkKLSAgICAgewotICAgICAgIGZyZWUgKHJlZ2NhY2hlLT5yZWdpc3RlcnMpOwotQEAgLTExNCwx MCArMTIzLDggQEAgc3RhdGljIHZvaWQKLSByZWFsbG9jX3JlZ2lzdGVyX2NhY2hlIChzdHJ1Y3Qg aW5mZXJpb3JfbGlzdF9lbnRyeSAqdGhyZWFkX3ApCi0gewotICAgc3RydWN0IHRocmVhZF9pbmZv ICp0aHJlYWQgPSAoc3RydWN0IHRocmVhZF9pbmZvICopIHRocmVhZF9wOwotLSAgc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZQotLSAgICA9IChzdHJ1Y3QgcmVnY2FjaGUgKikgaW5mZXJpb3JfcmVn Y2FjaGVfZGF0YSAodGhyZWFkKTsKLSAKLS0gIGZyZWVfcmVnaXN0ZXJfY2FjaGUgKHJlZ2NhY2hl KTsKLSsgIGZyZWVfcmVnaXN0ZXJfY2FjaGUgKGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVh ZCkpOwotICAgc2V0X2luZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCwgbmV3X3JlZ2lzdGVy X2NhY2hlICgpKTsKLSB9Ci0gCi1AQCAtMTQ3LDE4ICsxNTQsMTggQEAgc2V0X3JlZ2lzdGVyX2Nh Y2hlIChzdHJ1Y3QgcmVnICpyZWdzLCBpbgotIH0KLSAKLSB2b2lkCi0tcmVnaXN0ZXJzX3RvX3N0 cmluZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY2hhciAqYnVmKQotK3JlZ2lzdGVyc190 b19zdHJpbmcgKGNoYXIgKmJ1ZikKLSB7Ci0tICB1bnNpZ25lZCBjaGFyICpyZWdpc3RlcnMgPSBy ZWdjYWNoZS0+cmVnaXN0ZXJzOwotKyAgdW5zaWduZWQgY2hhciAqcmVnaXN0ZXJzID0gZ2V0X3Jl Z2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKS0+cmVnaXN0ZXJzOwotIAotICAgY29udmVydF9p bnRfdG9fYXNjaWkgKHJlZ2lzdGVycywgYnVmLCByZWdpc3Rlcl9ieXRlcyk7Ci0gfQotIAotIHZv aWQKLS1yZWdpc3RlcnNfZnJvbV9zdHJpbmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNo YXIgKmJ1ZikKLStyZWdpc3RlcnNfZnJvbV9zdHJpbmcgKGNoYXIgKmJ1ZikKLSB7Ci0gICBpbnQg bGVuID0gc3RybGVuIChidWYpOwotLSAgdW5zaWduZWQgY2hhciAqcmVnaXN0ZXJzID0gcmVnY2Fj aGUtPnJlZ2lzdGVyczsKLSsgIHVuc2lnbmVkIGNoYXIgKnJlZ2lzdGVycyA9IGdldF9yZWdjYWNo ZSAoY3VycmVudF9pbmZlcmlvciwgMSktPnJlZ2lzdGVyczsKLSAKLSAgIGlmIChsZW4gIT0gcmVn aXN0ZXJfYnl0ZXMgKiAyKQotICAgICB7Ci1AQCAtMjA3LDQwICsyMTQsNDAgQEAgcmVnaXN0ZXJf c2l6ZSAoaW50IG4pCi0gfQotIAotIHN0YXRpYyB1bnNpZ25lZCBjaGFyICoKLS1yZWdpc3Rlcl9k YXRhIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgbiwgaW50IGZldGNoKQotK3JlZ2lz dGVyX2RhdGEgKGludCBuLCBpbnQgZmV0Y2gpCi0gewotLSAgcmV0dXJuIHJlZ2NhY2hlLT5yZWdp c3RlcnMgKyAocmVnX2RlZnNbbl0ub2Zmc2V0IC8gOCk7Ci0rICB1bnNpZ25lZCBjaGFyICpyZWdp c3RlcnMKLSsgICAgPSBnZXRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIGZldGNoKS0+cmVn aXN0ZXJzOwotKwotKyAgcmV0dXJuIHJlZ2lzdGVycyArIChyZWdfZGVmc1tuXS5vZmZzZXQgLyA4 KTsKLSB9Ci0gCi0gdm9pZAotLXN1cHBseV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgaW50IG4sIGNvbnN0IHZvaWQgKmJ1ZikKLStzdXBwbHlfcmVnaXN0ZXIgKGludCBuLCBj b25zdCB2b2lkICpidWYpCi0gewotLSAgbWVtY3B5IChyZWdpc3Rlcl9kYXRhIChyZWdjYWNoZSwg biwgMCksIGJ1ZiwgcmVnaXN0ZXJfc2l6ZSAobikpOwotKyAgbWVtY3B5IChyZWdpc3Rlcl9kYXRh IChuLCAwKSwgYnVmLCByZWdpc3Rlcl9zaXplIChuKSk7Ci0gfQotIAotIHZvaWQKLS1zdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLS0JCQkgY29uc3Qg Y2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqYnVmKQotK3N1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChj b25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICpidWYpCi0gewotLSAgc3VwcGx5X3JlZ2lzdGVy IChyZWdjYWNoZSwgZmluZF9yZWdubyAobmFtZSksIGJ1Zik7Ci0rICBzdXBwbHlfcmVnaXN0ZXIg KGZpbmRfcmVnbm8gKG5hbWUpLCBidWYpOwotIH0KLSAKLSB2b2lkCi0tY29sbGVjdF9yZWdpc3Rl ciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG4sIHZvaWQgKmJ1ZikKLStjb2xsZWN0 X3JlZ2lzdGVyIChpbnQgbiwgdm9pZCAqYnVmKQotIHsKLS0gIG1lbWNweSAoYnVmLCByZWdpc3Rl cl9kYXRhIChyZWdjYWNoZSwgbiwgMSksIHJlZ2lzdGVyX3NpemUgKG4pKTsKLSsgIG1lbWNweSAo YnVmLCByZWdpc3Rlcl9kYXRhIChuLCAxKSwgcmVnaXN0ZXJfc2l6ZSAobikpOwotIH0KLSAKLSB2 b2lkCi0tY29sbGVjdF9yZWdpc3Rlcl9hc19zdHJpbmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIGludCBuLCBjaGFyICpidWYpCi0rY29sbGVjdF9yZWdpc3Rlcl9hc19zdHJpbmcgKGludCBu LCBjaGFyICpidWYpCi0gewotLSAgY29udmVydF9pbnRfdG9fYXNjaWkgKHJlZ2lzdGVyX2RhdGEg KHJlZ2NhY2hlLCBuLCAxKSwKLS0JCQlidWYsIHJlZ2lzdGVyX3NpemUgKG4pKTsKLSsgIGNvbnZl cnRfaW50X3RvX2FzY2lpIChyZWdpc3Rlcl9kYXRhIChuLCAxKSwgYnVmLCByZWdpc3Rlcl9zaXpl IChuKSk7Ci0gfQotIAotIHZvaWQKLS1jb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpidWYpCi0r Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChjb25zdCBjaGFyICpuYW1lLCB2b2lkICpidWYpCi0g ewotLSAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGZpbmRfcmVnbm8gKG5hbWUpLCBidWYp OwotKyAgY29sbGVjdF9yZWdpc3RlciAoZmluZF9yZWdubyAobmFtZSksIGJ1Zik7Ci0gfQotLS0t IC4vZ2RiL2dkYnNlcnZlci9yZWdjYWNoZS5oCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL3JlZ2NhY2hlLmgJMjAxMC0wMS0yMSAyMDozMzox NS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yMSwyNyArMjEsMTQgQEAKLSAjZGVmaW5lIFJFR0NBQ0hF X0gKLSAKLSBzdHJ1Y3QgaW5mZXJpb3JfbGlzdF9lbnRyeTsKLS1zdHJ1Y3QgdGhyZWFkX2luZm87 Ci0tCi0tLyogVGhlIGRhdGEgZm9yIHRoZSByZWdpc3RlciBjYWNoZS4gIE5vdGUgdGhhdCB3ZSBo YXZlIG9uZSBwZXIKLS0gICBpbmZlcmlvcjsgdGhpcyBpcyBwcmltYXJpbHkgZm9yIHNpbXBsaWNp dHksIGFzIHRoZSBwZXJmb3JtYW5jZQotLSAgIGJlbmVmaXQgaXMgbWluaW1hbC4gICovCi0tCi0t c3RydWN0IHJlZ2NhY2hlCi0tewotLSAgaW50IHJlZ2lzdGVyc192YWxpZDsKLS0gIHVuc2lnbmVk IGNoYXIgKnJlZ2lzdGVyczsKLS19OwotIAotIC8qIENyZWF0ZSBhIG5ldyByZWdpc3RlciBjYWNo ZSBmb3IgSU5GRVJJT1IuICAqLwotIAotLXN0cnVjdCByZWdjYWNoZSAqbmV3X3JlZ2lzdGVyX2Nh Y2hlICh2b2lkKTsKLS0KLS1zdHJ1Y3QgcmVnY2FjaGUgKmdldF90aHJlYWRfcmVnY2FjaGUgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkLCBpbnQgZmV0Y2gpOwotK3ZvaWQgKm5ld19yZWdpc3Rl cl9jYWNoZSAodm9pZCk7Ci0gCi0gLyogUmVsZWFzZSBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0 aCB0aGUgcmVnaXN0ZXIgY2FjaGUgZm9yIElORkVSSU9SLiAgKi8KLSAKLS12b2lkIGZyZWVfcmVn aXN0ZXJfY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpOwotK3ZvaWQgZnJlZV9yZWdp c3Rlcl9jYWNoZSAodm9pZCAqcmVnY2FjaGUpOwotIAotIC8qIEludmFsaWRhdGUgY2FjaGVkIHJl Z2lzdGVycyBmb3Igb25lIG9yIGFsbCB0aHJlYWRzLiAgKi8KLSAKLUBAIC01MSwxMSArMzgsMTEg QEAgdm9pZCByZWdjYWNoZV9pbnZhbGlkYXRlICh2b2lkKTsKLSAvKiBDb252ZXJ0IGFsbCByZWdp c3RlcnMgdG8gYSBzdHJpbmcgaW4gdGhlIGN1cnJlbnRseSBzcGVjaWZpZWQgcmVtb3RlCi0gICAg Zm9ybWF0LiAgKi8KLSAKLS12b2lkIHJlZ2lzdGVyc190b19zdHJpbmcgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGNoYXIgKmJ1Zik7Ci0rdm9pZCByZWdpc3RlcnNfdG9fc3RyaW5nIChjaGFy ICpidWYpOwotIAotIC8qIENvbnZlcnQgYSBzdHJpbmcgdG8gcmVnaXN0ZXIgdmFsdWVzIGFuZCBm aWxsIG91ciByZWdpc3RlciBjYWNoZS4gICovCi0gCi0tdm9pZCByZWdpc3RlcnNfZnJvbV9zdHJp bmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNoYXIgKmJ1Zik7Ci0rdm9pZCByZWdpc3Rl cnNfZnJvbV9zdHJpbmcgKGNoYXIgKmJ1Zik7Ci0gCi0gLyogUmV0dXJuIGEgcG9pbnRlciB0byB0 aGUgZGVzY3JpcHRpb24gb2YgcmVnaXN0ZXIgYGBuJycuICAqLwotIAotQEAgLTcwLDE1ICs1Nywx NCBAQCBpbnQgZmluZF9yZWdubyAoY29uc3QgY2hhciAqbmFtZSk7Ci0gZXh0ZXJuIGNvbnN0IGNo YXIgKipnZGJzZXJ2ZXJfZXhwZWRpdGVfcmVnczsKLSBleHRlcm4gY29uc3QgY2hhciAqZ2Ric2Vy dmVyX3htbHRhcmdldDsKLSAKLS12b2lkIHN1cHBseV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IG4sIGNvbnN0IHZvaWQgKmJ1Zik7Ci0rdm9pZCBzdXBwbHlfcmVnaXN0 ZXIgKGludCBuLCBjb25zdCB2b2lkICpidWYpOwotIAotLXZvaWQgc3VwcGx5X3JlZ2lzdGVyX2J5 X25hbWUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICAgICAgY29uc3QgY2hhciAq bmFtZSwgY29uc3Qgdm9pZCAqYnVmKTsKLSt2b2lkIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChj b25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICpidWYpOwotIAotLXZvaWQgY29sbGVjdF9yZWdp c3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG4sIHZvaWQgKmJ1Zik7Ci0rdm9p ZCBjb2xsZWN0X3JlZ2lzdGVyIChpbnQgbiwgdm9pZCAqYnVmKTsKLSAKLS12b2lkIGNvbGxlY3Rf cmVnaXN0ZXJfYXNfc3RyaW5nIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgbiwgY2hh ciAqYnVmKTsKLSt2b2lkIGNvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChpbnQgbiwgY2hhciAq YnVmKTsKLSAKLS12b2lkIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYnVmKTsKLSt2b2lkIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYnVmKTsKLSAKLSAjZW5k aWYgLyogUkVHQ0FDSEVfSCAqLwotLS0tIC4vZ2RiL2dkYnNlcnZlci9yZW1vdGUtdXRpbHMuYwky MDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9y ZW1vdGUtdXRpbHMuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTEw NTMsNyArMTA1Myw3IEBAIGNvbnZlcnRfYXNjaWlfdG9faW50IChjaGFyICpmcm9tLCB1bnNpZ24K LSB9Ci0gCi0gc3RhdGljIGNoYXIgKgotLW91dHJlZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ25vLCBjaGFyICpidWYpCi0rb3V0cmVnIChpbnQgcmVnbm8sIGNoYXIgKmJ1ZikK LSB7Ci0gICBpZiAoKHJlZ25vID4+IDEyKSAhPSAwKQotICAgICAqYnVmKysgPSB0b2hleCAoKHJl Z25vID4+IDEyKSAmIDB4Zik7Ci1AQCAtMTA2Miw3ICsxMDYyLDcgQEAgb3V0cmVnIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcgotICAgKmJ1ZisrID0gdG9oZXggKChyZWdubyA+PiA0 KSAmIDB4Zik7Ci0gICAqYnVmKysgPSB0b2hleCAocmVnbm8gJiAweGYpOwotICAgKmJ1ZisrID0g JzonOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9hc19zdHJpbmcgKHJlZ2NhY2hlLCByZWdubywgYnVm KTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChyZWdubywgYnVmKTsKLSAgIGJ1ZiAr PSAyICogcmVnaXN0ZXJfc2l6ZSAocmVnbm8pOwotICAgKmJ1ZisrID0gJzsnOwotIAotQEAgLTEx MTYsNyArMTExNiw2IEBAIHByZXBhcmVfcmVzdW1lX3JlcGx5IChjaGFyICpidWYsIHB0aWRfdCAK LSAgICAgICB7Ci0gCXN0cnVjdCB0aHJlYWRfaW5mbyAqc2F2ZWRfaW5mZXJpb3I7Ci0gCWNvbnN0 IGNoYXIgKipyZWdwOwotLQlzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotIAotIAlzcHJpbnRm IChidWYsICJUJTAyeCIsIHN0YXR1cy0+dmFsdWUuc2lnKTsKLSAJYnVmICs9IHN0cmxlbiAoYnVm KTsKLUBAIC0xMTI3LDggKzExMjYsNiBAQCBwcmVwYXJlX3Jlc3VtZV9yZXBseSAoY2hhciAqYnVm LCBwdGlkX3QgCi0gCi0gCWN1cnJlbnRfaW5mZXJpb3IgPSBmaW5kX3RocmVhZF9wdGlkIChwdGlk KTsKLSAKLS0JcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9y LCAxKTsKLS0KLSAJaWYgKHRoZV90YXJnZXQtPnN0b3BwZWRfYnlfd2F0Y2hwb2ludCAhPSBOVUxM Ci0gCSAgICAmJiAoKnRoZV90YXJnZXQtPnN0b3BwZWRfYnlfd2F0Y2hwb2ludCkgKCkpCi0gCSAg ewotQEAgLTExNTEsNyArMTE0OCw3IEBAIHByZXBhcmVfcmVzdW1lX3JlcGx5IChjaGFyICpidWYs IHB0aWRfdCAKLSAKLSAJd2hpbGUgKCpyZWdwKQotIAkgIHsKLS0JICAgIGJ1ZiA9IG91dHJlZyAo cmVnY2FjaGUsIGZpbmRfcmVnbm8gKCpyZWdwKSwgYnVmKTsKLSsJICAgIGJ1ZiA9IG91dHJlZyAo ZmluZF9yZWdubyAoKnJlZ3ApLCBidWYpOwotIAkgICAgcmVncCArKzsKLSAJICB9Ci0gCSpidWYg PSAnXDAnOwotLS0tIC4vZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYwkyMDEwLTAxLTIwIDIzOjU1OjM4 LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYwkyMDEwLTAxLTIx IDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTI0NTYsMjUgKzI0NTYsMTUgQEAgcHJvY2Vz c19zZXJpYWxfZXZlbnQgKHZvaWQpCi0gCX0KLSAgICAgICBicmVhazsKLSAgICAgY2FzZSAnZyc6 Ci0tICAgICAgewotLQlzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotLQotLQlyZXF1aXJlX3J1 bm5pbmcgKG93bl9idWYpOwotLQlzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7Ci0tCXJlZ2NhY2hl ID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7Ci0tCXJlZ2lzdGVy c190b19zdHJpbmcgKHJlZ2NhY2hlLCBvd25fYnVmKTsKLS0gICAgICB9Ci0rICAgICAgcmVxdWly ZV9ydW5uaW5nIChvd25fYnVmKTsKLSsgICAgICBzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7Ci0r ICAgICAgcmVnaXN0ZXJzX3RvX3N0cmluZyAob3duX2J1Zik7Ci0gICAgICAgYnJlYWs7Ci0gICAg IGNhc2UgJ0cnOgotLSAJewotLQkgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7Ci0tCi0tCSAg cmVxdWlyZV9ydW5uaW5nIChvd25fYnVmKTsKLS0JICBzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7 Ci0tCSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAx KTsKLS0JICByZWdpc3RlcnNfZnJvbV9zdHJpbmcgKHJlZ2NhY2hlLCAmb3duX2J1ZlsxXSk7Ci0t CSAgd3JpdGVfb2sgKG93bl9idWYpOwotLQl9Ci0rICAgICAgcmVxdWlyZV9ydW5uaW5nIChvd25f YnVmKTsKLSsgICAgICBzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7Ci0rICAgICAgcmVnaXN0ZXJz X2Zyb21fc3RyaW5nICgmb3duX2J1ZlsxXSk7Ci0rICAgICAgd3JpdGVfb2sgKG93bl9idWYpOwot ICAgICAgIGJyZWFrOwotICAgICBjYXNlICdtJzoKLSAgICAgICByZXF1aXJlX3J1bm5pbmcgKG93 bl9idWYpOwotLS0tIC4vZ2RiL2dkYnNlcnZlci90YXJnZXQuaAkyMDEwLTAxLTIwIDIzOjU1OjM4 LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci90YXJnZXQuaAkyMDEwLTAxLTIx IDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTE2NiwxMyArMTY2LDEzIEBAIHN0cnVjdCB0 YXJnZXRfb3BzCi0gCi0gICAgICBJZiBSRUdOTyBpcyAtMSwgZmV0Y2ggYWxsIHJlZ2lzdGVyczsg b3RoZXJ3aXNlLCBmZXRjaCBhdCBsZWFzdCBSRUdOTy4gICovCi0gCi0tICB2b2lkICgqZmV0Y2hf cmVnaXN0ZXJzKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKTsKLSsgIHZv aWQgKCpmZXRjaF9yZWdpc3RlcnMpIChpbnQgcmVnbm8pOwotIAotICAgLyogU3RvcmUgcmVnaXN0 ZXJzIHRvIHRoZSBpbmZlcmlvciBwcm9jZXNzLgotIAotICAgICAgSWYgUkVHTk8gaXMgLTEsIHN0 b3JlIGFsbCByZWdpc3RlcnM7IG90aGVyd2lzZSwgc3RvcmUgYXQgbGVhc3QgUkVHTk8uICAqLwot IAotLSAgdm9pZCAoKnN0b3JlX3JlZ2lzdGVycykgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGludCByZWdubyk7Ci0rICB2b2lkICgqc3RvcmVfcmVnaXN0ZXJzKSAoaW50IHJlZ25vKTsKLSAK LSAgIC8qIFJlYWQgbWVtb3J5IGZyb20gdGhlIGluZmVyaW9yIHByb2Nlc3MuICBUaGlzIHNob3Vs ZCBnZW5lcmFsbHkgYmUKLSAgICAgIGNhbGxlZCB0aHJvdWdoIHJlYWRfaW5mZXJpb3JfbWVtb3J5 LCB3aGljaCBoYW5kbGVzIGJyZWFrcG9pbnQgc2hhZG93aW5nLgotQEAgLTMwNywxMSArMzA3LDEx IEBAIHZvaWQgc2V0X3RhcmdldF9vcHMgKHN0cnVjdCB0YXJnZXRfb3BzICoKLSAjZGVmaW5lIG15 dGhyZWFkX2FsaXZlKHBpZCkgXAotICAgKCp0aGVfdGFyZ2V0LT50aHJlYWRfYWxpdmUpIChwaWQp Ci0gCi0tI2RlZmluZSBmZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMocmVnY2FjaGUsIHJlZ25vKQlc Ci0tICAoKnRoZV90YXJnZXQtPmZldGNoX3JlZ2lzdGVycykgKHJlZ2NhY2hlLCByZWdubykKLSsj ZGVmaW5lIGZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyhyZWdubykgXAotKyAgKCp0aGVfdGFyZ2V0 LT5mZXRjaF9yZWdpc3RlcnMpIChyZWdubykKLSAKLS0jZGVmaW5lIHN0b3JlX2luZmVyaW9yX3Jl Z2lzdGVycyhyZWdjYWNoZSwgcmVnbm8pIFwKLS0gICgqdGhlX3RhcmdldC0+c3RvcmVfcmVnaXN0 ZXJzKSAocmVnY2FjaGUsIHJlZ25vKQotKyNkZWZpbmUgc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJz KHJlZ25vKSBcCi0rICAoKnRoZV90YXJnZXQtPnN0b3JlX3JlZ2lzdGVycykgKHJlZ25vKQotIAot ICNkZWZpbmUgam9pbl9pbmZlcmlvcihwaWQpIFwKLSAgICgqdGhlX3RhcmdldC0+am9pbikgKHBp ZCkKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvd2luMzItYXJtLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6 MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWFybS1sb3cuYwky MDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTkzLDE5ICs5MywxNyBAQCBy ZWdwdHIgKENPTlRFWFQqIGMsIGludCByKQotIAotIC8qIEZldGNoIHJlZ2lzdGVyIGZyb20gZ2Ri c2VydmVyIHJlZ2NhY2hlIGRhdGEuICAqLwotIHN0YXRpYyB2b2lkCi0tYXJtX2ZldGNoX2luZmVy aW9yX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAgICAgd2luMzJf dGhyZWFkX2luZm8gKnRoLCBpbnQgcikKLSthcm1fZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIgKHdp bjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpCi0gewotICAgY2hhciAqY29udGV4dF9vZmZzZXQg PSByZWdwdHIgKCZ0aC0+Y29udGV4dCwgcik7Ci0tICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hl LCByLCBjb250ZXh0X29mZnNldCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXIgKHIsIGNvbnRleHRfb2Zm c2V0KTsKLSB9Ci0gCi0gLyogU3RvcmUgYSBuZXcgcmVnaXN0ZXIgdmFsdWUgaW50byB0aGUgdGhy ZWFkIGNvbnRleHQgb2YgVEguICAqLwotIHN0YXRpYyB2b2lkCi0tYXJtX3N0b3JlX2luZmVyaW9y X3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAgICAgd2luMzJfdGhy ZWFkX2luZm8gKnRoLCBpbnQgcikKLSthcm1fc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXIgKHdpbjMy X3RocmVhZF9pbmZvICp0aCwgaW50IHIpCi0gewotLSAgY29sbGVjdF9yZWdpc3RlciAocmVnY2Fj aGUsIHIsIHJlZ3B0ciAoJnRoLT5jb250ZXh0LCByKSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyIChy LCByZWdwdHIgKCZ0aC0+Y29udGV4dCwgcikpOwotIH0KLSAKLSAvKiBDb3JyZWN0IGluIGVpdGhl ciBlbmRpYW5uZXNzLiAgV2UgZG8gbm90IHN1cHBvcnQgVGh1bWIgeWV0LiAgKi8KLS0tLSAuL2dk Yi9nZGJzZXJ2ZXIvd2luMzItaTM4Ni1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAw MCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci93aW4zMi1pMzg2LWxvdy5jCTIwMTAtMDEtMjEg MjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1AQCAtMjcxLDggKzI3MSw3IEBAIHN0YXRpYyBjb25z dCBpbnQgbWFwcGluZ3NbXSA9IHsKLSAKLSAvKiBGZXRjaCByZWdpc3RlciBmcm9tIGdkYnNlcnZl ciByZWdjYWNoZSBkYXRhLiAgKi8KLSBzdGF0aWMgdm9pZAotLWkzODZfZmV0Y2hfaW5mZXJpb3Jf cmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICAgICAgd2luMzJfdGhy ZWFkX2luZm8gKnRoLCBpbnQgcikKLStpMzg2X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVyICh3aW4z Ml90aHJlYWRfaW5mbyAqdGgsIGludCByKQotIHsKLSAgIGNoYXIgKmNvbnRleHRfb2Zmc2V0ID0g KGNoYXIgKikgJnRoLT5jb250ZXh0ICsgbWFwcGluZ3Nbcl07Ci0gCi1AQCAtMjgwLDI0ICsyNzks MjMgQEAgaTM4Nl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlciAoc3RydWN0IHJlZwotICAgaWYgKHIg PT0gRkNTX1JFR05VTSkKLSAgICAgewotICAgICAgIGwgPSAqKChsb25nICopIGNvbnRleHRfb2Zm c2V0KSAmIDB4ZmZmZjsKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCAoY2hh ciAqKSAmbCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyLCAoY2hhciAqKSAmbCk7Ci0gICAg IH0KLSAgIGVsc2UgaWYgKHIgPT0gRk9QX1JFR05VTSkKLSAgICAgewotICAgICAgIGwgPSAoKigo bG9uZyAqKSBjb250ZXh0X29mZnNldCkgPj4gMTYpICYgKCgxIDw8IDExKSAtIDEpOwotLSAgICAg IHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHIsIChjaGFyICopICZsKTsKLSsgICAgICBzdXBw bHlfcmVnaXN0ZXIgKHIsIChjaGFyICopICZsKTsKLSAgICAgfQotICAgZWxzZQotLSAgICBzdXBw bHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCBjb250ZXh0X29mZnNldCk7Ci0rICAgIHN1cHBseV9y ZWdpc3RlciAociwgY29udGV4dF9vZmZzZXQpOwotIH0KLSAKLSAvKiBTdG9yZSBhIG5ldyByZWdp c3RlciB2YWx1ZSBpbnRvIHRoZSB0aHJlYWQgY29udGV4dCBvZiBUSC4gICovCi0gc3RhdGljIHZv aWQKLS1pMzg2X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLAotLQkJCSAgICAgIHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpCi0raTM4Nl9zdG9y ZV9pbmZlcmlvcl9yZWdpc3RlciAod2luMzJfdGhyZWFkX2luZm8gKnRoLCBpbnQgcikKLSB7Ci0g ICBjaGFyICpjb250ZXh0X29mZnNldCA9IChjaGFyICopICZ0aC0+Y29udGV4dCArIG1hcHBpbmdz W3JdOwotLSAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHIsIGNvbnRleHRfb2Zmc2V0KTsK LSsgIGNvbGxlY3RfcmVnaXN0ZXIgKHIsIGNvbnRleHRfb2Zmc2V0KTsKLSB9Ci0gCi0gc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaTM4Nl93aW4zMl9icmVha3BvaW50ID0gMHhjYzsKLS0tLSAu L2dkYi9nZGJzZXJ2ZXIvd2luMzItbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAg KzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvd2luMzItbG93LmMJMjAxMC0wMS0yMSAyMDozMzox NS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNzIsMjkgKzM3MiwyOSBAQCBjaGlsZF9jb250aW51ZSAo RFdPUkQgY29udGludWVfc3RhdHVzLCBpCi0gCi0gLyogRmV0Y2ggcmVnaXN0ZXIocykgZnJvbSB0 aGUgY3VycmVudCB0aHJlYWQgY29udGV4dC4gICovCi0gc3RhdGljIHZvaWQKLS1jaGlsZF9mZXRj aF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByKQot K2NoaWxkX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoaW50IHIpCi0gewotICAgaW50IHJlZ25v OwotICAgd2luMzJfdGhyZWFkX2luZm8gKnRoID0gdGhyZWFkX3JlYyAoY3VycmVudF9pbmZlcmlv cl9wdGlkICgpLCBUUlVFKTsKLSAgIGlmIChyID09IC0xIHx8IHIgPiBOVU1fUkVHUykKLS0gICAg Y2hpbGRfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSwgTlVNX1JFR1MpOwotKyAg ICBjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKE5VTV9SRUdTKTsKLSAgIGVsc2UKLSAg ICAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDwgcjsgcmVnbm8rKykKLS0gICAgICAoKnRoZV9sb3df dGFyZ2V0LmZldGNoX2luZmVyaW9yX3JlZ2lzdGVyKSAocmVnY2FjaGUsIHRoLCByZWdubyk7Ci0r ICAgICAgKCp0aGVfbG93X3RhcmdldC5mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcikgKHRoLCByZWdu byk7Ci0gfQotIAotIC8qIFN0b3JlIGEgbmV3IHJlZ2lzdGVyIHZhbHVlIGludG8gdGhlIGN1cnJl bnQgdGhyZWFkIGNvbnRleHQuICBXZSBkb24ndAotICAgIGNoYW5nZSB0aGUgcHJvZ3JhbSdzIGNv bnRleHQgdW50aWwgbGF0ZXIsIHdoZW4gd2UgcmVzdW1lIGl0LiAgKi8KLSBzdGF0aWMgdm9pZAot LWNoaWxkX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHIpCi0rY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChpbnQgcikKLSB7Ci0g ICBpbnQgcmVnbm87Ci0gICB3aW4zMl90aHJlYWRfaW5mbyAqdGggPSB0aHJlYWRfcmVjIChjdXJy ZW50X2luZmVyaW9yX3B0aWQgKCksIFRSVUUpOwotICAgaWYgKHIgPT0gLTEgfHwgciA9PSAwIHx8 IHIgPiBOVU1fUkVHUykKLS0gICAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdj YWNoZSwgTlVNX1JFR1MpOwotKyAgICBjaGlsZF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKE5V TV9SRUdTKTsKLSAgIGVsc2UKLSAgICAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDwgcjsgcmVnbm8r KykKLS0gICAgICAoKnRoZV9sb3dfdGFyZ2V0LnN0b3JlX2luZmVyaW9yX3JlZ2lzdGVyKSAocmVn Y2FjaGUsIHRoLCByZWdubyk7Ci0rICAgICAgKCp0aGVfbG93X3RhcmdldC5zdG9yZV9pbmZlcmlv cl9yZWdpc3RlcikgKHRoLCByZWdubyk7Ci0gfQotIAotIC8qIE1hcCB0aGUgV2luZG93cyBlcnJv ciBudW1iZXIgaW4gRVJST1IgdG8gYSBsb2NhbGUtZGVwZW5kZW50IGVycm9yCi1AQCAtMTU2OSw3 ICsxNTY5LDYgQEAgc3RhdGljIHB0aWRfdAotIHdpbjMyX3dhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1 Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKm91cnN0YXR1cywgaW50IG9wdGlvbnMpCi0gewotICAgc3Ry dWN0IHByb2Nlc3NfaW5mbyAqcHJvY2VzczsKLS0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7 Ci0gCi0gICB3aGlsZSAoMSkKLSAgICAgewotQEAgLTE1OTEsOCArMTU5MCw3IEBAIHdpbjMyX3dh aXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3cKLSAJICBPVVRNU0cyICgoIkNoaWxkIFN0 b3BwZWQgd2l0aCBzaWduYWwgPSAlZCBcbiIsCi0gCQkgICAgb3Vyc3RhdHVzLT52YWx1ZS5zaWcp KTsKLSAKLS0JICByZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJp b3IsIDEpOwotLQkgIGNoaWxkX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIC0x KTsKLSsJICBjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKC0xKTsKLSAKLSAJICBpZiAo b3Vyc3RhdHVzLT5raW5kID09IFRBUkdFVF9XQUlUS0lORF9MT0FERUQKLSAJICAgICAgJiYgIXNl cnZlcl93YWl0aW5nKQotQEAgLTE2MjQsMTcgKzE2MjIsMTcgQEAgd2luMzJfd2FpdCAocHRpZF90 IHB0aWQsIHN0cnVjdCB0YXJnZXRfdwotIC8qIEZldGNoIHJlZ2lzdGVycyBmcm9tIHRoZSBpbmZl cmlvciBwcm9jZXNzLgotICAgIElmIFJFR05PIGlzIC0xLCBmZXRjaCBhbGwgcmVnaXN0ZXJzOyBv dGhlcndpc2UsIGZldGNoIGF0IGxlYXN0IFJFR05PLiAgKi8KLSBzdGF0aWMgdm9pZAotLXdpbjMy X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50 IHJlZ25vKQotK3dpbjMyX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoaW50IHJlZ25vKQotIHsK LS0gIGNoaWxkX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKLSsg IGNoaWxkX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnbm8pOwotIH0KLSAKLSAvKiBTdG9y ZSByZWdpc3RlcnMgdG8gdGhlIGluZmVyaW9yIHByb2Nlc3MuCi0gICAgSWYgUkVHTk8gaXMgLTEs IHN0b3JlIGFsbCByZWdpc3RlcnM7IG90aGVyd2lzZSwgc3RvcmUgYXQgbGVhc3QgUkVHTk8uICAq LwotIHN0YXRpYyB2b2lkCi0td2luMzJfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCi0rd2luMzJfc3RvcmVfaW5mZXJpb3JfcmVn aXN0ZXJzIChpbnQgcmVnbm8pCi0gewotLSAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJz IChyZWdjYWNoZSwgcmVnbm8pOwotKyAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChy ZWdubyk7Ci0gfQotIAotIC8qIFJlYWQgbWVtb3J5IGZyb20gdGhlIGluZmVyaW9yIHByb2Nlc3Mu ICBUaGlzIHNob3VsZCBnZW5lcmFsbHkgYmUKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvd2luMzItbG93 LmgJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2 ZXIvd2luMzItbG93LmgJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC02 MSwxMiArNjEsMTAgQEAgc3RydWN0IHdpbjMyX3RhcmdldF9vcHMKLSAgIHZvaWQgKCp0aHJlYWRf YWRkZWQpICh3aW4zMl90aHJlYWRfaW5mbyAqdGgpOwotIAotICAgLyogRmV0Y2ggcmVnaXN0ZXIg ZnJvbSBnZGJzZXJ2ZXIgcmVnY2FjaGUgZGF0YS4gICovCi0tICB2b2lkICgqZmV0Y2hfaW5mZXJp b3JfcmVnaXN0ZXIpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCQkgICB3aW4zMl90 aHJlYWRfaW5mbyAqdGgsIGludCByKTsKLSsgIHZvaWQgKCpmZXRjaF9pbmZlcmlvcl9yZWdpc3Rl cikgKHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpOwotIAotICAgLyogU3RvcmUgYSBuZXcg cmVnaXN0ZXIgdmFsdWUgaW50byB0aGUgdGhyZWFkIGNvbnRleHQgb2YgVEguICAqLwotLSAgdm9p ZCAoKnN0b3JlX2luZmVyaW9yX3JlZ2lzdGVyKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwK LS0JCQkJICAgd2luMzJfdGhyZWFkX2luZm8gKnRoLCBpbnQgcik7Ci0rICB2b2lkICgqc3RvcmVf aW5mZXJpb3JfcmVnaXN0ZXIpICh3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKTsKLSAKLSAg IHZvaWQgKCpzaW5nbGVfc3RlcCkgKHdpbjMyX3RocmVhZF9pbmZvICp0aCk7Ci0gCgpkaWZmIC0t Z2l0IGEvZ2RiLXNvbGliLWRpc3BsYXkucGF0Y2ggYi9nZGItc29saWItZGlzcGxheS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFjMzQyMC4uMDAwMDAwMAotLS0gYS9nZGIt c29saWItZGlzcGxheS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNDg1Lmh0bWwKLVN1 YmplY3Q6IFtwYXRjaF0gRml4IHNvbGliLWRpc3BsYXkuZXhwIGNyYXNoCi0KLVsgTWFkZSBtb3Jl IHNhZmUgZm9yIGRvd25zdHJlYW0gcGF0Y2ggKyBwb3J0ZWQgZm9yIFZMQS4gIF0KLQotSGksCi0K LWl0IGlzIGEgdGVzdHN1aXRlIHJlZ3Jlc3Npb24gYWdhaW5zdCBnZGItNy4wIGFsdGhvdWdoIHRo ZSBidWcgd2FzIHByb2JhYmx5Ci1wcmVzZW50IGV2ZW4gaW4gZ2RiLTcuMCAoaXQgc3RhcnRlZCB0 byByZXByb2R1Y2Ugc2luY2Ugb25lIGNvbXBsZXRlbHkKLXVucmVsYXRlZCBEYW5pZWwgSi4ncyBw YXRjaCkuICBUaGlzIHBhdGNoIGZpeGVzICgtbG1jaGVjayBtYXkgYmUgcmVxdWlyZWQpOgotCi0g UEFTUzogZ2RiLmJhc2Uvc29saWItZGlzcGxheS5leHA6IGRpc3BsYXkgYV9nbG9iYWwKLSBQQVNT OiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogZGlzcGxheSBiX2dsb2JhbAotIFBBU1M6IGdk Yi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBkaXNwbGF5IGNfZ2xvYmFsCi0tRVJST1I6IFByb2Nl c3Mgbm8gbG9uZ2VyIGV4aXN0cwotLVVOUkVTT0xWRUQ6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXku ZXhwOiBhZnRlciByZXJ1bgotLVdBUk5JTkc6IHJlbW90ZV9leHBlY3Qgc3RhdGVtZW50IHdpdGhv dXQgYSBkZWZhdWx0IGNhc2U/IQotLUZBSUw6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBD YW4ndCBydW4gdG8gbWFpbiAoMykKLStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDog YWZ0ZXIgcmVydW4KLStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogYWZ0ZXIgcmVy dW4KLStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogYnJlYWsgMjUKLStQQVNTOiBn ZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogY29udGludWUKLStQQVNTOiBnZGIuYmFzZS9zb2xp Yi1kaXNwbGF5LmV4cDogZGlzcGxheSBtYWluX2dsb2JhbAotK1BBU1M6IGdkYi5iYXNlL3NvbGli LWRpc3BsYXkuZXhwOiBkaXNwbGF5IGFfbG9jYWwKLStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNw bGF5LmV4cDogZGlzcGxheSBhX3N0YXRpYwotK1BBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXku ZXhwOiBicmVhayAyNQotK1BBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBjb250aW51 ZQotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTIt bGludXgtZ251LgotCi1UaGUgcXVlc3Rpb24gaXMgd2hldGhlciBTWU1CT0xfU1lNVEFCIChzeW1i b2wpIGNhbiBiZSBldmVyIE5VTEwgYXQgdGhpcyBwb2ludC4KLUlNTyBub3QsIGl0IGNhbiBiZSBO VUxMIG9ubHkgdGVtcG9yYXJpbHkgZHVyaW5nIHJlYWRpbmcgc3ltYm9scy4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi0yMDEwLTAxLTIwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0KLQkqIHByaW50Y21kLmMgKGRpc3BsYXlfdXNlc19zb2xpYl9wKTogUmVtb3Zl IHZhcmlhYmxlIHNlY3Rpb24uICBBY2Nlc3MKLQlvYmpmaWxlIHZpYSBTWU1CT0xfU1lNVEFCLgot Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvcGFyc2UuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvcGFyc2UuYwkyMDEwLTAxLTIxIDE1OjE2OjE1 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3BhcnNlLmMJMjAx MC0wMS0yMSAxNToyMTo0NS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNDI1LDYgKzE0MjUsMTAgQEAg b3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaQotIAlpZiAoc2VjdGlvbiAm JiBvYmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChzZWN0aW9uLT5vYmpmaWxlLCBkYXRh KSkKLSAJICByZXR1cm4gMTsKLSAKLSsJLyogU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1h eSBiZSBOVUxMLiAgKi8KLSsJaWYgKFNZTUJPTF9TWU1UQUIgKHN5bWJvbCkgJiYgb2JqZmlsZV9m dW5jICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwg ZGF0YSkpCi0rCSAgcmV0dXJuIDE7Ci0rCi0gCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxh Y2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi0gCW9iamZpbGUgPSBibG9j a19vYmpmaWxlIChibG9jayk7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLnBhdGNoIGIv Z2RiLXVwc3RyZWFtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjcyMjFm Li4wMDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2 ICswLDAgQEAKLVtvYnZdIHRlc3RzdWl0ZTogRml4IGdkYi5hcmNoL2kzODYtYnBfcGVybWFuZW50 LmV4cCByZWdyZXNzaW9uCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx MC0wMS9tc2cwMDU1NC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEw LTAxL21zZzAwMjAzLmh0bWwKLQotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEw LzAxLzIyIDE3OjA2OjQ5CTEuMjA5OQotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwky MDEwLzAxLzI0IDA0OjI5OjMyCTEuMjEwMAotIyMgLTEsMyArMSw4IEBACi0rMjAxMC0wMS0yNCAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGdkYi5h cmNoL2kzODYtYnBfcGVybWFuZW50LmV4cCAoRGlzYXNzZW1ibGUgZnVuY3Rpb24gJyRmdW5jdGlv bicpOgotKwlBZGp1c3QgaXQgZm9yIERJU0FTU0VNQkxZX09NSVRfRk5BTUUuCi0rCi0gMjAxMC0w MS0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlQ UiBzeW10YWIvMTExOTk6Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1icF9w ZXJtYW5lbnQuZXhwCTIwMTAvMDEvMDEgMDc6MzI6MDAJMS4zCi0rKysgc3JjL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvaTM4Ni1icF9wZXJtYW5lbnQuZXhwCTIwMTAvMDEvMjQgMDQ6Mjk6MzIJMS40 Ci1AQCAtNjIsNyArNjIsNyBAQAotIHNldCBmdW5jdGlvbiBzdGFuZGFyZAotIAotIHNldCByZXRj b2RlIFtnZGJfdGVzdF9tdWx0aXBsZSAiZGlzYXNzZW1ibGUgJGZ1bmN0aW9uIiAiRGlzYXNzZW1i bGUgZnVuY3Rpb24gJyRmdW5jdGlvbiciIHsKLS0gICAgLXJlICIuKigkaGV4KSA8JGZ1bmN0aW9u XFwrMD4uKigkaGV4KSA8JGZ1bmN0aW9uXFwrND4uKigkaGV4KSA8JGZ1bmN0aW9uXFwrNT4uKigk aGV4KSA8JGZ1bmN0aW9uXFwrNj4uKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgLXJlICIuKigkaGV4 KSA8XFwrMD4uKigkaGV4KSA8XFwrND4uKigkaGV4KSA8XFwrNT4uKigkaGV4KSA8XFwrNj4uKiRn ZGJfcHJvbXB0ICQiIHsKLSAgICAgICBzZXQgZnVuY3Rpb25fc3RhcnQgJGV4cGVjdF9vdXQoMSxz dHJpbmcpOwotICAgICAgIHNldCBhZGRyZXNzICRleHBlY3Rfb3V0KDIsc3RyaW5nKTsKLSAgICAg ICBzZXQgYWRkcmVzczEgJGV4cGVjdF9vdXQoMyxzdHJpbmcpOwoKZGlmZiAtLWdpdCBhL2dkYi5z cGVjIGIvZ2RiLnNwZWMKaW5kZXggODk4NjQ2Ny4uM2ZkMTFiZiAxMDA2NDQKLS0tIGEvZ2RiLnNw ZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTMyLDExICszMiwxMSBAQCBOYW1lOiBnZGIlez9fd2l0aF9k ZWJ1ZzotZGVidWd9CiAjIFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92ZXJzaW9uLmlu LgogIyBOT1RFOiB0aGUgRlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5NIGZvciBvZmZp Y2lhbCByZWxlYXNlcywgbGlrZSA2LjMKICMgYW5kLCBzaW5jZSBKYW51YXJ5IDIwMDUsIFguWS5a LmRhdGUgZm9yIGRhaWx5IHNuYXBzaG90cywgbGlrZSA2LjMuNTAuMjAwNTAxMTIgIyAoZGFpbHkg c25hcHNob3QgZnJvbSBtYWlsaW5lKSwgb3IgNi4zLjAuMjAwNDAxMTIgKGhlYWQgb2YgdGhlIHJl bGVhc2UgYnJhbmNoKS4KLVZlcnNpb246IDcuMC41MC4yMDEwMDEyMQorVmVyc2lvbjogNy4wLjUw LjIwMTAwMTI4CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNl cnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBv ZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRo ZSB0ZXN0aW5nLgotUmVsZWFzZTogOSV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0le2Rpc3R9 CitSZWxlYXNlOiAxMCV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0le2Rpc3R9CiAKIExpY2Vu c2U6IEdQTHYzKwogR3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtMjQyLDcgKzI0Miw3 IEBAIFBhdGNoMjI5OiBnZGItNi4zLWJ6MTQwNTMyLXBwYy11bndpbmRpbmctdGVzdC5wYXRjaAog UGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAog CiAjIEJhY2twb3J0ZWQgZml4dXBzIHBvc3QgdGhlIHNvdXJjZSB0YXJiYWxsLgotUGF0Y2gyMzI6 IGdkYi11cHN0cmVhbS5wYXRjaAorI1BhdGNoMjMyOiBnZGItdXBzdHJlYW0ucGF0Y2gKIAogIyBU ZXN0Y2FzZSBmb3IgUFBDIFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5IChCWiAy MzAwMDApLgogUGF0Y2gyMzQ6IGdkYi02LjYtYnoyMzAwMDAtcG93ZXI2LWRpc2Fzc2VtYmx5LXRl c3QucGF0Y2gKQEAgLTM4Niw5ICszODYsNiBAQCBQYXRjaDM4MTogZ2RiLXNpbXVsdGFuZW91cy1z dGVwLXJlc3VtZS1icmVha3BvaW50LXRlc3QucGF0Y2gKICMgRml4IEdOVS9MaW51eCBjb3JlIG9w ZW46IENhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRwdXQgZXJyb3Iu CiBQYXRjaDM4MjogZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKIAotIyBTdXBwb3J0 IEdOVSBJRlVOQ3MgLSBpbmRpcmVjdCBmdW5jdGlvbnMgKEJaIDUzOTU5MCkuCi1QYXRjaDM4Nzog Z2RiLWJ6NTM5NTkwLWdudS1pZnVuYy5wYXRjaAotCiAjIEZpeCBjYWxsYmFjay1tb2RlIHJlYWRs aW5lLTYuMCByZWdyZXNzaW9uIGZvciBDVFJMLUMuCiBQYXRjaDM5MDogZ2RiLXJlYWRsaW5lLTYu MC1zaWduYWwucGF0Y2gKIApAQCAtNDI3LDE1ICs0MjQsOSBAQCBQYXRjaDQwNzogZ2RiLWxpbmVu by1tYWtldXAtdGVzdC5wYXRjaAogIyBUZXN0IHBvd2VyNyBwcGMgZGlzYXNzZW1ibHkuCiBQYXRj aDQwODogZ2RiLXBwYy1wb3dlcjctdGVzdC5wYXRjaAogCi0jIEZpeCBzb2xpYi1kaXNwbGF5LmV4 cCBjcmFzaAotUGF0Y2g0MTE6IGdkYi1zb2xpYi1kaXNwbGF5LnBhdGNoCi0KICMgUmV2ZXJ0OiBB ZGQgLVd1bnVzZWQtZnVuY3Rpb24gdG8gY29tcGlsZSBmbGFncy4KIFBhdGNoNDEyOiBnZGItdW51 c2VkLXJldmVydC5wYXRjaAogCi0jIFJldmVydCBGU0YgR0RCIGdkYnNlcnZlciB0cmFjZXBvaW50 cyBhcyBpbmNvbXBsZXRlIG5vdy4KLVBhdGNoNDEzOiBnZGItZ2Ric2VydmVyLXRyYWNlcG9pbnQt cmV2ZXJ0LnBhdGNoCi0KICMgSXQgbWF5IGNyYXNoIGhlcmUgYnV0IGl0IGlzIG5vdCB1bmRlcnN0 b29kIHdoeS4KIFBhdGNoNDE0OiBnZGItYXJjaGVyLXBpZS1hc3NlcnQtdGVtcC13b3JrYXJvdW5k LnBhdGNoCiAKQEAgLTU3Myw3ICs1NjQsNyBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4 cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAKICVpZiAwJXshP193aXRoX3Vwc3RyZWFt OjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKICVwYXRj aDEyNCAtcDEKICVwYXRjaDEgLXAxCkBAIC02NDIsNyArNjMzLDYgQEAgcm0gLWYgZ2RiL2p2LWV4 cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMjcxIC1w MQogJXBhdGNoMjc0IC1wMQogJXBhdGNoMzUzIC1wMQotJXBhdGNoNDE1IC1wMQogJXBhdGNoMjgy IC1wMQogJXBhdGNoMjg0IC1wMQogJXBhdGNoMjg3IC1wMQpAQCAtNjc0LDcgKzY2NCw2IEBAIHJt IC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMK ICVwYXRjaDM2MCAtcDEKICVwYXRjaDM4MSAtcDEKICVwYXRjaDM4MiAtcDEKLSVwYXRjaDM4NyAt cDEKICVwYXRjaDM5MCAtcDEKICVwYXRjaDM5MSAtcDEKICVwYXRjaDM5MiAtcDEKQEAgLTY4OCwx NiArNjc3LDIwIEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhw LmMgZ2RiL3AtZXhwLmMKICVwYXRjaDQwNiAtcDEKICVwYXRjaDQwNyAtcDEKICVwYXRjaDQwOCAt cDEKLSVwYXRjaDQxMSAtcDEKICVwYXRjaDQxMiAtcDEKLSVwYXRjaDQxMyAtcDEKLSMgQWx3YXlz IHZlcmlmeSBpdHMgYXBwbGljYWJpbGl0eS4KICVwYXRjaDQxNCAtcDEKKyVwYXRjaDQxNSAtcDEK KyVwYXRjaDM5MyAtcDEKKyVwYXRjaDMzNSAtcDEKKyMgUGF0Y2g0MTQ6IGdkYi1hcmNoZXItcGll LWFzc2VydC10ZW1wLXdvcmthcm91bmQucGF0Y2gKKyMgSXQgbWF5IGNyYXNoIGhlcmUgYnV0IGl0 IGlzIG5vdCB1bmRlcnN0b29kIHdoeS4KKyMgUGF0Y2g0MTU6IGdkYi02LjYtYnVpbGRpZC1sb2Nh dGUtY29yZS1hcy1hcmcucGF0Y2gKKyMgQ3VycmVudGx5IGRpc2FibGVkIGZvciBSSEVMIGFzIGl0 IGlzIGEgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIG5vdCBwcmVzZW50CisjIGluIEZTRiBHREIg YW5kIHBvc3NpYmx5IGFmZmVjdGluZyBuZXcgdXNlciBzY3JpcHRzLgogJWlmIDAleyE/cmhlbDox fQogJXBhdGNoNDE0IC1wMSAtUgorJXBhdGNoNDE1IC1wMSAtUgogJWVuZGlmCi0lcGF0Y2gzOTMg LXAxCi0lcGF0Y2gzMzUgLXAxCiAlaWYgMCV7IT9lbDU6MX0KICVwYXRjaDM5MyAtcDEgLVIKICVw YXRjaDMzNSAtcDEgLVIKQEAgLTEwMjAsNiArMTAxMywxNCBAQCBmaQogJWVuZGlmCiAKICVjaGFu Z2Vsb2cKKyogVGh1IEphbiAyOCAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPiAtIDcuMC41MC4yMDEwMDEyOC0xMC5mYzEzCistIFVwZ3JhZGUgdG8gdGhlIEZT RiBHREIgc25hcHNob3Q6IDcuMC41MC4yMDEwMDEyOAorLSBhcmNoZXItamFua3JhdG9jaHZpbC1m ZWRvcmExMyBjb21taXQ6IDM5YzVhOGI3NWZhZDNhY2Q3MjA0OTAzZGI1ZGVlMDI1MDU1YTQ1OTQK KyAgLSBGaXggYSByZWdyZXNzaW9uIG9uICJBQUE6OkFMUEhBIiB0ZXN0IGR1ZSB0byBhIG1lcmdl IGZyb20gRlNGIEdEQi4KKy0gRml4IGEgcmVncmVzc2lvbiBvZiBwcmV2aW91cyByZWxlYXNlIGR1 ZSB0byBmYWxzZSBpZGVudGlmaWNhdGlvbiBhcyBjb3JlIGZpbGUuCistIE1vdmUgaWZ1bmMgLnBh dGNoIGludG8gdGhlIEdJVC1tYW5hZ2VkIGFyY2hlci1qYW5rcmF0b2NodmlsLWZlZG9yYTEzIGJy YW5jaC4KKy0gVXBkYXRlIGdkYi5waWUvY29yZWZpbGUuZXhwIGZyb20gMjAwNy0wMS0yNiBGU0Yg R0RCIGNvbW1pdCBieSBBbmRyZWFzIFNjaHdhYi4KKwogKiBNb24gSmFuIDI1IDIwMTAgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjUwLjIwMTAwMTIxLTku ZmMxMwogLSBFbmFibGUgbG9hZGluZyBhIGNvcmUgZmlsZSBqdXN0IGFzIGEgc2luZ2xlIGFyZ3Vt ZW50IHRvIC91c3IvYmluL2dkYi4KIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmlu ZGV4IDdmYTZhNDQuLjk0ODc4NmYgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpA QCAtMSwyICsxLDIgQEAKLWZjZmJlNmNjYjM2ZDg2YmMwNjg5MWZiZDcwZjE2NjRkICBnZGItNy4w LjUwLjIwMTAwMTIxLnRhci5iejIKKzA1N2M5ZDA4OGNkNjc2Mzk2ZTBjYWFlOWQzYWRhODc5ICBn ZGItNy4wLjUwLjIwMTAwMTI4LnRhci5iejIKIDA0ZTVjNGIxYjllNjMzNDIyY2M0ODk5MGZlNjE5 NThkICBsaWJzdGRjKystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6Mgo=