From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: - Upgrade to the FSF GDB snapshot: 7.0.50.20100128 Date: Thu, 23 Jul 2026 18:29:25 GMT Message-ID: <178483136572.1.14558771732853724952.rpms-gdb-45f79714b93e@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 45f79714b93e094befcd8981e2413018a539b204 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogNDVmNzk3MTRiOTNlMDk0YmVmY2Q4OTgxZTI0MTMwMThhNTM5YjIwNAog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDEtMjhUMjI6MjY6MTUrMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzE5NDEvLTQ0NTkgaW4gMTMgZmlsZShzKQogICAgICAgICAgICBV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzQ1Zjc5NzE0 YjkzZTA5NGJlZmNkODk4MWUyNDEzMDE4YTUzOWIyMDQ/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAg ICAgICAgICAgIExvZzoKICAgICAgICAgICAgLSBVcGdyYWRlIHRvIHRoZSBGU0YgR0RCIHNuYXBz aG90OiA3LjAuNTAuMjAxMDAxMjgKLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMyBjb21t aXQ6CiAgICAzOWM1YThiNzVmYWQzYWNkNzIwNDkwM2RiNWRlZTAyNTA1NWE0NTk0Ci0gRml4IGEg cmVncmVzc2lvbiBvbiAiQUFBOjpBTFBIQSIgdGVzdCBkdWUgdG8gYSBtZXJnZSBmcm9tIEZTRiBH REIuCi0gRml4IGEgcmVncmVzc2lvbiBvZiBwcmV2aW91cyByZWxlYXNlIGR1ZSB0byBmYWxzZSBp ZGVudGlmaWNhdGlvbiBhcyBjb3JlCiAgICBmaWxlLgotIE1vdmUgaWZ1bmMgLnBhdGNoIGludG8g dGhlIEdJVC1tYW5hZ2VkIGFyY2hlci1qYW5rcmF0b2NodmlsLWZlZG9yYTEzCiAgICBicmFuY2gu Ci0gVXBkYXRlIGdkYi5waWUvY29yZWZpbGUuZXhwIGZyb20gMjAwNy0wMS0yNiBGU0YgR0RCIGNv bW1pdCBieSBBbmRyZWFzCiAgICBTY2h3YWIuCgotLS0KZGlmZiAtLWdpdCBhLy5jdnNpZ25vcmUg Yi8uY3ZzaWdub3JlCmluZGV4IDFjYWZmZDQuLmE3ZmI2NjUgMTAwNjQ0Ci0tLSBhLy5jdnNpZ25v cmUKKysrIGIvLmN2c2lnbm9yZQpAQCAtMSwyICsxLDIgQEAKLWdkYi03LjAuNTAuMjAxMDAxMjEu dGFyLmJ6MgorZ2RiLTcuMC41MC4yMDEwMDEyOC50YXIuYnoyCiBsaWJzdGRjKystdjMtcHl0aG9u LXIxNTU5NzgudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcu cGF0Y2ggYi9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4IDkyMDg5ODEuLmU0 MjI3ZWYgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKysrIGIv Z2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgSW5k ZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVmaWxlLmV4 cAogKyMgdGVzdCByZWluaXRfZnJhbWVfY2FjaGUKICsKICtnZGJfbG9hZCAke2JpbmZpbGV9Ci0r Z2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAuKiBcXChcXCkuKiIg InVwIGluIGNvcmVmaWxlLmV4cCAocmVpbml0KSIKKytnZGJfdGVzdCAidXAiICIjXFswLTlcXSog KlxbMC05eGEtZkgnXF0qIGluIC4qIFxcKC4qXFwpLioiICJ1cCBpbiBjb3JlZmlsZS5leHAgKHJl aW5pdCkiCiArCiArZ2RiX3Rlc3QgImNvcmUiICJObyBjb3JlIGZpbGUgbm93LiIKIEluZGV4OiBn ZGItNi44LjUwLjIwMDkwOTA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5pbgoKZGlm ZiAtLWdpdCBhL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8t djIucGF0Y2ggYi9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZv LXYyLnBhdGNoCmluZGV4IDlkZDc1ZDQuLjZiODc4YTAgMTAwNjQ0Ci0tLSBhL2dkYi02LjUtYnox ODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gKKysrIGIvZ2RiLTYu NS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaApAQCAtMzAs MTEgKzMwLDExIEBAIGdsaWJjLWRlYnVnaW5mby0yLjctMi54ODZfNjQ6IC91c3IvbGliL2RlYnVn L2xpYjY0L2xpYmMuc28uNi5kZWJ1ZzoKICAgPDgxYTI+ICAgICBEV19BVF9uYW1lICAgICAgICA6 IChpbmRpcmVjdCBzdHJpbmcsIG9mZnNldDogMHgyODBlKTogX19lcnJub19sb2NhdGlvbgogICA8 ODFhOD4gICAgIERXX0FUX01JUFNfbGlua2FnZV9uYW1lOiAoaW5kaXJlY3Qgc3RyaW5nLCBvZmZz ZXQ6IDB4MjgwOCk6ICpfX0dJX19fZXJybm9fbG9jYXRpb24KIAotSW5kZXg6IGdkYi02LjguNTAu MjAwOTA4MDIvZ2RiL2dkYnR5cGVzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9n ZGJ0eXBlcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5vcmlnL2dkYi9n ZGJ0eXBlcy5jCTIwMDktMDgtMDMgMDk6NTA6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYu OC41MC4yMDA5MDgwMi9nZGIvZ2RidHlwZXMuYwkyMDA5LTA4LTAzIDE1OjQyOjUxLjAwMDAwMDAw MCArMDIwMAotQEAgLTM3NjksNiArMzc2OSw5IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0 IGdkYmFyY2ggKmdkYmEKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL2dkYnR5cGVz LmMJMjAxMC0wMS0yOCAxMjo1MjoxNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTI4L2dkYi9nZGJ0eXBlcy5jCTIwMTAtMDEtMjggMTI6NTI6NDguMDAwMDAwMDAwICswMTAw CitAQCAtMzk3OCw2ICszOTc4LDkgQEAgZ2RidHlwZXNfcG9zdF9pbml0IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYQogICAgICA9IGFyY2hfdHlwZSAoZ2RiYXJjaCwgVFlQRV9DT0RFX0lOVEVSTkFMX0ZV TkNUSU9OLCAwLAogIAkJICI8aW50ZXJuYWwgZnVuY3Rpb24+Iik7CiAgCkBAIC00NCwxMSArNDQs MTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2dkYnR5cGVzLmMKICAgIHJldHVy biBidWlsdGluX3R5cGU7CiAgfQogIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2dk YnR5cGVzLmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMDkt MDgtMDMgMDk6NTA6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9n ZGIvZ2RidHlwZXMuaAkyMDA5LTA4LTAzIDE1OjQwOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTEx MjgsNiArMTEyOCw4IEBAIHN0cnVjdCBidWlsdGluX3R5cGUKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTI4Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0yOCAxMjo1MjoxNy4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMjggMTI6 NTI6NDguMDAwMDAwMDAwICswMTAwCitAQCAtMTI0NSw2ICsxMjQ1LDggQEAgc3RydWN0IGJ1aWx0 aW5fdHlwZQogIAogICAgLyogVGhpcyB0eXBlIGlzIHVzZWQgdG8gcmVwcmVzZW50IGEgR0RCIGlu dGVybmFsIGZ1bmN0aW9uLiAgKi8KICAgIHN0cnVjdCB0eXBlICppbnRlcm5hbF9mbjsKQEAgLTU3 LDExICs1NywxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvZ2RidHlwZXMuaAog IH07CiAgCiAgLyogUmV0dXJuIHRoZSB0eXBlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGFyY2hp dGVjdHVyZS4gICovCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvcGFyc2UuYworSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3BhcnNlLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ni44LjUwLjIwMDkwODAyLm9yaWcvZ2RiL3BhcnNlLmMJMjAwOS0wOC0wMyAwOTo1MDo1Ny4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9wYXJzZS5jCTIwMDktMDgt MDMgMTU6NDE6NTQuMDAwMDAwMDAwICswMjAwCi1AQCAtNTEwLDcgKzUxMCwxMSBAQCB3cml0ZV9l eHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sCistLS0gZ2RiLTcuMC41MC4yMDEwMDEy OC5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMjggMTI6NTI6MTkuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvcGFyc2UuYwkyMDEwLTAxLTI4IDEyOjUzOjIwLjAw MDAwMDAwMCArMDEwMAorQEAgLTUwOSw3ICs1MDksMTEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0 cnVjdCBtaW5pbWFsX3N5bWJvbAogICAgICBjYXNlIG1zdF90ZXh0OgogICAgICBjYXNlIG1zdF9m aWxlX3RleHQ6CiAgICAgIGNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6CkBAIC03MywxMiArNzMs MTIgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL3BhcnNlLmMKICsJd3JpdGVfZXhw X2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3RleHRfc3ltYm9sKTsK ICAgICAgICBicmVhazsKICAKLSAgICAgY2FzZSBtc3RfZGF0YToKLUluZGV4OiBnZGItNi44LjUw LjIwMDkwODAyL2dkYi90YXJnZXQuYworICAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90YXJnZXQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvdGFyZ2V0LmMJMjAwOS0wOC0wMyAxMjozODo0Ny4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90YXJnZXQuYwkyMDA5 LTA4LTAzIDEyOjQ5OjMzLjAwMDAwMDAwMCArMDIwMAotQEAgLTkzMyw2ICs5MzMsMjUgQEAgcG9w X2FsbF90YXJnZXRzIChpbnQgcXVpdHRpbmcpCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmln L2dkYi90YXJnZXQuYwkyMDEwLTAxLTI4IDEyOjUyOjI5LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjAuNTAuMjAxMDAxMjgvZ2RiL3RhcmdldC5jCTIwMTAtMDEtMjggMTI6NTI6NDguMDAwMDAw MDAwICswMTAwCitAQCAtMTAwMCw2ICsxMDAwLDI1IEBAIHBvcF9hbGxfdGFyZ2V0cyAoaW50IHF1 aXR0aW5nKQogICAgcG9wX2FsbF90YXJnZXRzX2Fib3ZlIChkdW1teV9zdHJhdHVtLCBxdWl0dGlu Zyk7CiAgfQogIApAQCAtMTA0LDcgKzEwNCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAy L2dkYi90YXJnZXQuYwogIC8qIFVzaW5nIHRoZSBvYmpmaWxlIHNwZWNpZmllZCBpbiBPQkpGSUxF LCBmaW5kIHRoZSBhZGRyZXNzIGZvciB0aGUKICAgICBjdXJyZW50IHRocmVhZCdzIHRocmVhZC1s b2NhbCBzdG9yYWdlIHdpdGggb2Zmc2V0IE9GRlNFVC4gICovCiAgQ09SRV9BRERSCi1AQCAtMTAy Myw3ICsxMDQyLDI4IEBAIHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MgKHN0cnVjdCBvYmoK K0BAIC0xMDkwLDcgKzExMDksMjggQEAgdGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoc3Ry dWN0IG9iagogICAgLyogSXQgd291bGRuJ3QgYmUgd3JvbmcgaGVyZSB0byB0cnkgYSBnZGJhcmNo IG1ldGhvZCwgdG9vOyBmaW5kaW5nCiAgICAgICBUTFMgaXMgYW4gQUJJLXNwZWNpZmljIHRoaW5n LiAgQnV0IHdlIGRvbid0IGRvIHRoYXQgeWV0LiAgKi8KICAgIGVsc2UKQEAgLTEzNCwxMCArMTM0 LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90YXJnZXQuYwogIAogICAgcmV0 dXJuIGFkZHI7CiAgfQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1lcnJuby5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDkw ODAyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwkyMDA5LTA4LTAzIDEyOjQ5 OjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5jCTIwMTAtMDEtMjggMTI6NTI6NDguMDAwMDAwMDAwICsw MTAwCiBAQCAtMCwwICsxLDI4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTE2NywxMCArMTY3LDEwIEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwODAyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwogKwogKyAg cmV0dXJuIDA7CS8qIGJyZWFrcG9pbnQgKi8KICt9Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgw Mi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmV4cAorSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJy bm8uZXhwCTIwMDktMDgtMDMgMTI6NDk6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmV4cAkyMDEwLTAx LTI4IDEyOjUyOjQ4LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw2NyBAQAogKyMgQ29weXJp Z2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEv Z2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaCBiL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKaW5kZXggMmRjZjViMy4uZjJmZDRmZSAxMDA2NDQK LS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorKysgYi9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCkBAIC01OCw4ICs1OCwxMCBAQCBI dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1s CiAJKiBleGVjLmMgKGV4ZWNfZmlsZV9hdHRhY2gpOiBQcmludCBhIG1vcmUgdXNlZnVsIGVycm9y IG1lc3NhZ2UgaWYgdGhlCiAJdXNlciBkaWQgImdkYiBjb3JlIi4KIAotLS0tIGEvZ2RiL2V4Y2Vw dGlvbnMuaAotKysrIGIvZ2RiL2V4Y2VwdGlvbnMuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MjgvZ2RiL2V4Y2VwdGlvbnMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgu b3JpZy9nZGIvZXhjZXB0aW9ucy5oCTIwMTAtMDEtMTggMDc6MjU6MjIuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZXhjZXB0aW9ucy5oCTIwMTAtMDEtMjggMjI6 NDk6MDAuMDAwMDAwMDAwICswMTAwCiBAQCAtNzgsNiArNzgsOSBAQCBlbnVtIGVycm9ycyB7CiAg ICAvKiBGZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4gICovCiAg ICBVTlNVUFBPUlRFRF9FUlJPUiwKQEAgLTcwLDM5ICs3Miw0MSBAQCBIdHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAgICAvKiBBZGQgbW9y ZSBlcnJvcnMgaGVyZS4gICovCiAgICBOUl9FUlJPUlMKICB9OwotLS0tIGEvZ2RiL2V4ZWMuYwot KysrIGIvZ2RiL2V4ZWMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2V4ZWMuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZXhlYy5jCTIwMTAt MDEtMjggMjI6NDg6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9n ZGIvZXhlYy5jCTIwMTAtMDEtMjggMjI6NTg6NDUuMDAwMDAwMDAwICswMTAwCiBAQCAtMzQsNiAr MzQsNyBAQAotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCiAgI2luY2x1ZGUgImdkYnRocmVhZC5o IgogICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKKyAjaW5jbHVkZSAic29saWIuaCIKICsjaW5jbHVk ZSAiZXhjZXB0aW9ucy5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJyZWFk bGluZS9yZWFkbGluZS5oIgotQEAgLTI1Myw2ICsyNTQsMTkgQEAgZXhlY19maWxlX2F0dGFjaCAo Y2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKLSAgICAgICBzY3JhdGNoX3BhdGhuYW1lID0g eHN0cmR1cCAoc2NyYXRjaF9wYXRobmFtZSk7Ci0gICAgICAgY2xlYW51cHMgPSBtYWtlX2NsZWFu dXAgKHhmcmVlLCBzY3JhdGNoX3BhdGhuYW1lKTsKLSAKLSsgICAgICAvKiBJZiB0aGUgdXNlciBh Y2NpZGVudGFsbHkgZGlkICJnZGIgY29yZSIsIHByaW50IGEgdXNlZnVsCi0rCSBlcnJvciBtZXNz YWdlLiAgKi8KLSsgICAgICBpZiAoYmZkX2NoZWNrX2Zvcm1hdCAoZXhlY19iZmQsIGJmZF9jb3Jl KSkKLSsgICAgICAgewotKwkgLyogTWFrZSBzdXJlIHRvIGNsb3NlIGV4ZWNfYmZkLCBvciBlbHNl ICJydW4iIG1pZ2h0IHRyeSB0byB1c2UKLSsJICAgIGl0LiAgKi8KLSsJIGV4ZWNfY2xvc2UgKCk7 Ci0rCSB0aHJvd19lcnJvciAoSVNfQ09SRV9FUlJPUiwKLSsJCSAgICAgIF8oIlwiJXNcIiBpcyBh IGNvcmUgZmlsZS5cbiIKLSsJCQkiUGxlYXNlIHNwZWNpZnkgYW4gZXhlY3V0YWJsZSB0byBkZWJ1 Zy4iKSwKLSsJCSAgICAgIHNjcmF0Y2hfcGF0aG5hbWUpOwotKyAgICAgICB9Ci0rCi0gICAgICAg aWYgKCFiZmRfY2hlY2tfZm9ybWF0IChleGVjX2JmZCwgYmZkX29iamVjdCkpCi0gCXsKK0BAIC0y NTgsNiArMjU5LDE3IEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnIK ICAJICAvKiBNYWtlIHN1cmUgdG8gY2xvc2UgZXhlY19iZmQsIG9yIGVsc2UgInJ1biIgbWlnaHQg dHJ5IHRvIHVzZQotLS0tIGEvZ2RiL21haW4uYwotKysrIGIvZ2RiL21haW4uYwotQEAgLTI0MCw2 ICsyNDAsMzYgQEAgY2FwdHVyZWRfY29tbWFuZF9sb29wICh2b2lkICpkYXRhKQorIAkgICAgIGl0 LiAgKi8KKyAJICBleGVjX2Nsb3NlICgpOworKworKwkgIC8qIElmIHRoZSB1c2VyIGFjY2lkZW50 YWxseSBkaWQgImdkYiBjb3JlIiwgcHJpbnQgYSB1c2VmdWwKKysJICAgICBlcnJvciBtZXNzYWdl LiAgQ2hlY2sgaXQgb25seSBhZnRlciBiZmRfb2JqZWN0IGhhcyBiZWVuIGNoZWNrZWQgYXMKKysJ ICAgICBhIHZhbGlkIGV4ZWN1dGFibGUgbWF5IGdldCByZWNvZ25pemVkIGZvciBleGFtcGxlIGFs c28gYXMKKysJICAgICAidHJhZC1jb3JlIi4gICovCisrCSAgaWYgKGJmZF9jaGVja19mb3JtYXQg KGV4ZWNfYmZkLCBiZmRfY29yZSkpCisrCSAgICB0aHJvd19lcnJvciAoSVNfQ09SRV9FUlJPUiwK KysJCQkgXygiXCIlc1wiIGlzIGEgY29yZSBmaWxlLlxuIgorKwkJCSAgICJQbGVhc2Ugc3BlY2lm eSBhbiBleGVjdXRhYmxlIHRvIGRlYnVnLiIpLAorKwkJCSBzY3JhdGNoX3BhdGhuYW1lKTsKKysK KyAJICBlcnJvciAoXygiXCIlc1wiOiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6ICVzIiksCisg CQkgc2NyYXRjaF9wYXRobmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworIAl9 CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvbWFpbi5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0yOCAyMjo0ODo1OS4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9tYWluLmMJMjAxMC0w MS0yOCAyMjo0OTowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNDEsNiArMjQxLDM2IEBAIGNhcHR1 cmVkX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKICAgIHJldHVybiAxOwogIH0KICAKQEAgLTEz OSw3ICsxNDMsNyBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0w MS9tc2cwMDUxNy5odG1sCiAgc3RhdGljIGludAogIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CiAgewotQEAgLTY2OCw2ICs2OTgsOCBAQCBleHRlcm4gaW50IGdkYnRrX3Rlc3QgKGNoYXIgKik7 CitAQCAtNzAzLDYgKzczMyw4IEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKICAJ ewogIAkgIHN5bWFyZyA9IGFyZ3Zbb3B0aW5kXTsKICAJICBleGVjYXJnID0gYXJndltvcHRpbmRd OwpAQCAtMTQ4LDcgKzE1Miw3IEBAIEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hl cy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwKICAJICBvcHRpbmQrKzsKICAJfQogIAotQEAgLTgwMCwx MCArODMxLDI1IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGlnbm9yZWQuICglcyVz KVxuIiksCitAQCAtODM1LDEwICs4NjcsMjUgQEAgRXhjZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVu dHMgaWdub3JlZC4gKAogICAgICAgICYmIHN5bWFyZyAhPSBOVUxMCiAgICAgICAgJiYgc3RyY21w IChleGVjYXJnLCBzeW1hcmcpID09IDApCiAgICAgIHsKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVy LXBpZS1hZGRvbnMucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKaW5kZXggMmJh ZGIyZi4uNjU3NWQ1ZCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCisr KyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApAQCAtNTYsOSArNTYsOSBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXhlYy5jCiAtLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi9leGVjLmMJMjAxMC0wMS0xNSAyMTozNToxNC4wMDAwMDAwMDAgKzAxMDAKICsrKyBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmMJMjAxMC0wMS0xNSAyMTo0NzoxOS4wMDAwMDAw MDAgKzAxMDAKIEBAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKICAj aW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgInByb2dzcGFjZS5oIgotICNpbmNsdWRl ICJleGNlcHRpb25zLmgiCiArI2luY2x1ZGUgInNvbGliLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRs Lmg+CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5k ZXggNmE5MjU1My4uNjU0NGMwMCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9n ZGItYXJjaGVyLnBhdGNoCkBAIC0yLDcgKzIsNyBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2Ri L3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hl ckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDIxZTQxOGMwNDI5MGFh NWQyZTc1NTQzZDMxZmUzZmU1ZDcwZDZkNDEKK2NvbW1pdCAzOWM1YThiNzVmYWQzYWNkNzIwNDkw M2RiNWRlZTAyNTA1NWE0NTk0CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFu Y2hlczoKIGFyY2hlci10cm9tZXktZGVsYXllZC1zeW1maWxlCkBAIC0xMiw2ICsxMiw3IEBAIGFy Y2hlci1qYW5rcmF0b2NodmlsLWZvcnRyYW4tbW9kdWxlCiBhcmNoZXItamFua3JhdG9jaHZpbC13 YXRjaHBvaW50CiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKIGFyY2hlci1rZWl0aHMtZXhwci1j dW11bGF0aXZlCithcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwogCiAKIGRpZmYgLS1naXQgYS9n ZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KQEAgLTI1Nyw2ICsyNTgsMjggQEAgaW5k ZXggNDBiNzBhYi4uYjI5MWQ0MCAxMDA2NDQKICAgIGFkYV9vcF9uYW1lLAogICAgYWRhX2R1bXBf c3ViZXhwX2JvZHksCiAgICBhZGFfZXZhbHVhdGVfc3ViZXhwCitkaWZmIC0tZ2l0IGEvZ2RiL2Fs cGhhLWxpbnV4LXRkZXAuYyBiL2dkYi9hbHBoYS1saW51eC10ZGVwLmMKK2luZGV4IDNjNzFmMmYu LmJiZmU1YTEgMTAwNjQ0CistLS0gYS9nZGIvYWxwaGEtbGludXgtdGRlcC5jCisrKysgYi9nZGIv YWxwaGEtbGludXgtdGRlcC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJzeW10YWIu aCIKKyAjaW5jbHVkZSAicmVnc2V0LmgiCisgI2luY2x1ZGUgInJlZ2NhY2hlLmgiCisrI2luY2x1 ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAiYWxwaGEtdGRlcC5oIgorIAorQEAgLTIz Niw2ICsyMzcsOSBAQCBhbHBoYV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBp bmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAKKyAgIHNldF9nZGJhcmNoX3JlZ3NldF9m cm9tX2NvcmVfc2VjdGlvbgorICAgICAoZ2RiYXJjaCwgYWxwaGFfbGludXhfcmVnc2V0X2Zyb21f Y29yZV9zZWN0aW9uKTsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7 CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJv dG90eXBlcy4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jIGIvZ2RiL2Ft ZDY0LWxpbnV4LW5hdC5jCiBpbmRleCA1YzllNTU4Li41NWExODczIDEwMDY0NAogLS0tIGEvZ2Ri L2FtZDY0LWxpbnV4LW5hdC5jCkBAIC0yOTAsNiArMzEzLDM0IEBAIGluZGV4IDVjOWU1NTguLjU1 YTE4NzMgMTAwNjQ0CiAgICBpMzg2X3NldF9kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggKDgpOwogIAog ICAgLyogT3ZlcnJpZGUgdGhlIEdOVS9MaW51eCBpbmZlcmlvciBzdGFydHVwIGhvb2suICAqLwor ZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMgYi9nZGIvYW1kNjQtbGludXgtdGRl cC5jCitpbmRleCAwMWNjMWNlLi4yYTBmYTg0IDEwMDY0NAorLS0tIGEvZ2RiL2FtZDY0LWxpbnV4 LXRkZXAuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYworQEAgLTE0ODEsNiArMTQ4MSw5 IEBAIGFtZDY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoKQorICAgYW1kNjRfbGludXhfcmVjb3JkX3RkZXAuYXJnNiA9IEFN RDY0X1I5X1JFR05VTTsKKyAKKyAgIHRkZXAtPmkzODZfc3lzY2FsbF9yZWNvcmQgPSBhbWQ2NF9s aW51eF9zeXNjYWxsX3JlY29yZDsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkcik7CisgfQorIAwKKyAKK2RpZmYgLS1naXQgYS9nZGIvYXJtLWxpbnV4LXRkZXAuYyBiL2dk Yi9hcm0tbGludXgtdGRlcC5jCitpbmRleCA2NjFhNWJkLi5kYzkxYWIxIDEwMDY0NAorLS0tIGEv Z2RiL2FybS1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9hcm0tbGludXgtdGRlcC5jCitAQCAtOTA3 LDYgKzkwNyw5IEBAIGFybV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZv LAorICAgc2V0X2dkYmFyY2hfZGlzcGxhY2VkX3N0ZXBfZnJlZV9jbG9zdXJlIChnZGJhcmNoLAor IAkJCQkJICAgc2ltcGxlX2Rpc3BsYWNlZF9zdGVwX2ZyZWVfY2xvc3VyZSk7CisgICBzZXRfZ2Ri YXJjaF9kaXNwbGFjZWRfc3RlcF9sb2NhdGlvbiAoZ2RiYXJjaCwgZGlzcGxhY2VkX3N0ZXBfYXRf ZW50cnlfcG9pbnQpOworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIgKGdkYmFyY2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsK KyB9CisgCisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90 b3R5cGVzLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvYXgtZ2RiLmMgYi9nZGIvYXgtZ2RiLmMKIGlu ZGV4IDU3NzZiYjAuLjYwOTllOTkgMTAwNjQ0CiAtLS0gYS9nZGIvYXgtZ2RiLmMKQEAgLTM4MSw3 ICs0MzIsNyBAQCBpbmRleCA3ZWVkYjZjLi5iMTQ3ODI2IDEwMDY0NAogKwogICNlbmRpZiAvKiBC TE9DS19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3BvaW50 LmMKLWluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CitpbmRleCAwZDU1ODYyLi45MjU4YzZh IDEwMDY0NAogLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwog QEAgLTYxLDYgKzYxLDcgQEAKQEAgLTY3MSw3ICs3MjIsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUz OTdmIDEwMDY0NAogIAkgICAgLyogV2UgZG8gbm90IHN0b3AgZm9yIHRoZXNlLiAgKi8KICAJICAg IGJzLT5zdG9wID0gMDsKICAJICBlbHNlCi1AQCAtMzgyNyw2ICszOTAyLDcgQEAgYnBzdGF0X3do YXQgKGJwc3RhdCBicykKK0BAIC0zODI2LDYgKzM5MDEsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0 IGJzKQogICAgc3RydWN0IGJwc3RhdF93aGF0IHJldHZhbDsKICAKICAgIHJldHZhbC5jYWxsX2R1 bW15ID0gMDsKQEAgLTY3OSw3ICs3MzAsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0 NAogICAgZm9yICg7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCiAgICAgIHsKICAgICAgICBl bnVtIGNsYXNzIGJzX2NsYXNzID0gbm9fZWZmZWN0OwotQEAgLTM4NzMsMTAgKzM5NDksMTUgQEAg YnBzdGF0X3doYXQgKGJwc3RhdCBicykKK0BAIC0zODcyLDEwICszOTQ4LDE1IEBAIGJwc3RhdF93 aGF0IChicHN0YXQgYnMpCiAgCSAgICBic19jbGFzcyA9IG5vX2VmZmVjdDsKICAJICBicmVhazsK ICAJY2FzZSBicF9sb25nam1wOgpAQCAtNjk1LDcgKzc0Niw3IEBAIGluZGV4IGQ0MDRlZTcuLjJi ZTM5N2YgMTAwNjQ0CiAgCSAgYnJlYWs7CiAgCWNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgCSAgaWYg KGJzLT5zdG9wKQotQEAgLTM4OTksNiArMzk4MCw3IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMp CitAQCAtMzg5OCw2ICszOTc5LDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKICAJY2FzZSBi cF90aHJlYWRfZXZlbnQ6CiAgCWNhc2UgYnBfb3ZlcmxheV9ldmVudDoKICAJY2FzZSBicF9sb25n am1wX21hc3RlcjoKQEAgLTcwMyw3ICs3NTQsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEw MDY0NAogIAkgIGJzX2NsYXNzID0gYnBfbm9zdG9wOwogIAkgIGJyZWFrOwogIAljYXNlIGJwX2Nh dGNocG9pbnQ6Ci1AQCAtNDA0Myw2ICs0MTI1LDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9j YXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTQwNDIsNiArNDEyNCw4IEBAIHByaW50 X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICAgICAge2Jw X2FjY2Vzc193YXRjaHBvaW50LCAiYWNjIHdhdGNocG9pbnQifSwKICAgICAge2JwX2xvbmdqbXAs ICJsb25nam1wIn0sCiAgICAgIHticF9sb25nam1wX3Jlc3VtZSwgImxvbmdqbXAgcmVzdW1lIn0s CkBAIC03MTIsNyArNzYzLDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAgICAg e2JwX3N0ZXBfcmVzdW1lLCAic3RlcCByZXN1bWUifSwKICAgICAge2JwX3dhdGNocG9pbnRfc2Nv cGUsICJ3YXRjaHBvaW50IHNjb3BlIn0sCiAgICAgIHticF9jYWxsX2R1bW15LCAiY2FsbCBkdW1t eSJ9LAotQEAgLTQwNTAsNiArNDEzNCw3IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9u IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MDQ5LDYgKzQxMzMsNyBAQCBwcmludF9vbmVf YnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgIHticF90aHJl YWRfZXZlbnQsICJ0aHJlYWQgZXZlbnRzIn0sCiAgICAgIHticF9vdmVybGF5X2V2ZW50LCAib3Zl cmxheSBldmVudHMifSwKICAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0ZXIi fSwKQEAgLTcyMCw3ICs3NzEsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogICAg ICB7YnBfY2F0Y2hwb2ludCwgImNhdGNocG9pbnQifSwKICAgICAge2JwX3RyYWNlcG9pbnQsICJ0 cmFjZXBvaW50In0sCiAgICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRyYWNlcG9pbnQi fSwKLUBAIC00MTc0LDYgKzQyNTksOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKmIsCitAQCAtNDE3Myw2ICs0MjU4LDggQEAgcHJpbnRfb25lX2Jy ZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICAgIGNhc2UgYnBf ZmluaXNoOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgICBjYXNlIGJwX2xvbmdqbXBf cmVzdW1lOgpAQCAtNzI5LDcgKzc4MCw3IEBAIGluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0 CiAgICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRf c2NvcGU6CiAgICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTQxODEsNiArNDI2OCw3IEBA IHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BA IC00MTgwLDYgKzQyNjcsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6CiAgICAgICAgY2Fz ZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC03 MzcsNyArNzg4LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAgICAgICBjYXNl IGJwX3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgICAg Y2FzZSBicF9qaXRfZXZlbnQ6Ci1AQCAtNDgxOSw2ICs0OTA3LDggQEAgYWxsb2NhdGVfYnBfbG9j YXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgxOCw2ICs0OTA2LDggQEAgYWxs b2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBf ZmluaXNoOgogICAgICBjYXNlIGJwX2xvbmdqbXA6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1 bWU6CkBAIC03NDYsNyArNzk3LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAg ICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgog ICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtNDgyNyw2ICs0OTE3LDcgQEAgYWxsb2NhdGVf YnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgyNiw2ICs0OTE2LDcg QEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNh c2UgYnBfb3ZlcmxheV9ldmVudDoKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAgICAgIGNhc2Ug YnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC03NTQsNyArODA1LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJl Mzk3ZiAxMDA2NDQKICAgICAgICBsb2MtPmxvY190eXBlID0gYnBfbG9jX3NvZnR3YXJlX2JyZWFr cG9pbnQ7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtwb2ludDoK LUBAIC01MDEzLDggKzUxMDQsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChzdHJ1Y3Qg YnJlYWtwb2ludCAqYikKK0BAIC01MDEyLDggKzUxMDMsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVy bWFuZW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICB9CiAgCiAgLyogQ2FsbCB0aGlzIHJvdXRp bmUgd2hlbiBzdGVwcGluZyBhbmQgbmV4dGluZyB0byBlbmFibGUgYSBicmVha3BvaW50CkBAIC03 NjQsNyArODE1LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAKICB2b2lkCiAg c2V0X2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkKLUBAIC01MDI3LDEwICs1MTE3LDEx IEBAIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCitAQCAtNTAyNiwxMCArNTEx NiwxMSBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQogICAgICAgY2xvbmVz IG9mIHRob3NlIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHJlcXVlc3RlZCB0aHJlYWQuICAqLwog ICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCiAgICAgIGlmIChiLT5wc3BhY2UgPT0g Y3VycmVudF9wcm9ncmFtX3NwYWNlCkBAIC03NzgsNyArODI5LDcgQEAgaW5kZXggZDQwNGVlNy4u MmJlMzk3ZiAxMDA2NDQKICAJY2xvbmUtPnRocmVhZCA9IHRocmVhZDsKICAgICAgICB9CiAgfQot QEAgLTUwNDIsNyArNTEzMyw3IEBAIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJl YWQpCitAQCAtNTA0MSw3ICs1MTMyLDcgQEAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAoaW50 IHRocmVhZCkKICAgIHN0cnVjdCBicmVha3BvaW50ICpiLCAqdGVtcDsKICAKICAgIEFMTF9CUkVB S1BPSU5UU19TQUZFIChiLCB0ZW1wKQpAQCAtNzg3LDcgKzgzOCw3IEBAIGluZGV4IGQ0MDRlZTcu LjJiZTM5N2YgMTAwNjQ0CiAgICAgICAgewogIAlpZiAoYi0+dGhyZWFkID09IHRocmVhZCkKICAJ ICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci1AQCAtNjExNyw2ICs2MjA4LDggQEAgbWVudGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNjExNiw2ICs2MjA3LDggQEAgbWVudGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIpCiAgICAgICAgY2FzZSBicF9maW5pc2g6CiAgICAgICAgY2FzZSBi cF9sb25nam1wOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC03OTYsNyArODQ3 LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAgICAgICBjYXNlIGJwX3N0ZXBf cmVzdW1lOgogICAgICAgIGNhc2UgYnBfY2FsbF9kdW1teToKICAgICAgICBjYXNlIGJwX3dhdGNo cG9pbnRfc2NvcGU6Ci1AQCAtNjEyNSw2ICs2MjE4LDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKmIpCitAQCAtNjEyNCw2ICs2MjE3LDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9p bnQgKmIpCiAgICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfaml0 X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC04MDQsNyArODU1LDcg QEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAJYnJlYWs7CiAgICAgICAgfQogIAot QEAgLTc1MDksNiArNzYwMyw3IEBAIHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVh dGlvbl9hcmdzCitAQCAtNzUwOCw2ICs3NjAyLDcgQEAgc3RydWN0IHVudGlsX2JyZWFrX2NvbW1h bmRfY29udGludWF0aW9uX2FyZ3MKICB7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2lu dDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50MjsKQEAgLTgxMiw3ICs4NjMsNyBA QCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogIH07CiAgCiAgLyogVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgYnkgZmV0Y2hfaW5mZXJpb3JfZXZlbnQgdmlhIHRoZQotQEAgLTc1MjMsNiAr NzYxOCw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCitA QCAtNzUyMiw2ICs3NjE3LDcgQEAgdW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRpb24gKHZv aWQgKmFyZykKICAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5icmVha3BvaW50KTsKICAgIGlmIChh LT5icmVha3BvaW50MikKICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQyKTsK QEAgLTgyMCw3ICs4NzEsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogIH0KICAK ICB2b2lkCi1AQCAtNzUzNCw2ICs3NjMwLDggQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAq YXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTMzLDYgKzc2MjksOCBAQCB1 bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJl KQogICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7CiAgICBzdHJ1Y3QgYnJlYWtwb2lu dCAqYnJlYWtwb2ludDIgPSBOVUxMOwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKQEAg LTgyOSw3ICs4ODAsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogIAogICAgY2xl YXJfcHJvY2VlZF9zdGF0dXMgKCk7CiAgCi1AQCAtNzU3Miw2ICs3NjcwLDkgQEAgdW50aWxfYnJl YWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03 NTcxLDYgKzc2NjksOSBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSwgaW50IGFueXdoZXJlKQogIAogICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0 ZV9icmVha3BvaW50IChicmVha3BvaW50KTsKICAKQEAgLTgzOSw3ICs4OTAsNyBAQCBpbmRleCBk NDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAogICAgLyogS2VlcCB3aXRoaW4gdGhlIGN1cnJlbnQgZnJh bWUsIG9yIGluIGZyYW1lcyBjYWxsZWQgYnkgdGhlIGN1cnJlbnQKICAgICAgIG9uZS4gICovCiAg Ci1AQCAtNzU4NCw2ICs3Njg1LDEwIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywg aW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCitAQCAtNzU4Myw2ICs3Njg0LDEwIEBAIHVudGls X2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAg CQkJCQkgICAgICBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSksCiAgCQkJCQkgICAgICBi cF91bnRpbCk7CiAgICAgICAgbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3Bv aW50Mik7CkBAIC04NTAsNyArOTAxLDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQK ICAgICAgfQogIAogICAgcHJvY2VlZCAoLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVMVCwgMCk7Ci1A QCAtNzYwMCw2ICs3NzA1LDcgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTk5LDYgKzc3MDQsNyBAQCB1bnRpbF9icmVh a19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogIAogICAg ICAgIGFyZ3MtPmJyZWFrcG9pbnQgPSBicmVha3BvaW50OwogICAgICAgIGFyZ3MtPmJyZWFrcG9p bnQyID0gYnJlYWtwb2ludDI7CkBAIC04NTgsNyArOTA5LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJl Mzk3ZiAxMDA2NDQKICAKICAgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwogICAg ICAgIGFkZF9jb250aW51YXRpb24gKGluZmVyaW9yX3RocmVhZCAoKSwKLUBAIC04Nzg1LDYgKzg4 OTEsNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCitAQCAtODc4 NCw2ICs4ODkwLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQog IAkgICAgJiYgYi0+dHlwZSAhPSBicF90aHJlYWRfZXZlbnQKICAJICAgICYmIGItPnR5cGUgIT0g YnBfb3ZlcmxheV9ldmVudAogIAkgICAgJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpA QCAtODY2LDcgKzkxNyw3IEBAIGluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CiAgCSAgICAm JiBiLT5udW1iZXIgPj0gMCkKICAJICB7CiAgCSAgICBicmVha3NfdG9fZGVsZXRlID0gMTsKLUBA IC04ODA0LDYgKzg5MTEsNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90 dHkpCitAQCAtODgwMyw2ICs4OTEwLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50 IGZyb21fdHR5KQogIAkJJiYgYi0+dHlwZSAhPSBicF9qaXRfZXZlbnQKICAJCSYmIGItPnR5cGUg IT0gYnBfb3ZlcmxheV9ldmVudAogIAkJJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpA QCAtODc0LDcgKzkyNSw3IEBAIGluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CiAgCQkmJiBi LT5udW1iZXIgPj0gMCkKICAJICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogIAkgIH0KLUBA IC05MTE0LDYgKzkyMjIsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCitA QCAtOTExMyw2ICs5MjIxLDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQog IAkgcmVzZXQgbGF0ZXIgYnkgYnJlYWtwb2ludF9yZV9zZXQuICAqLwogICAgICBjYXNlIGJwX292 ZXJsYXlfZXZlbnQ6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC04ODIsNyArOTMz LDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAgICAgICBkZWxldGVfYnJlYWtw b2ludCAoYik7CiAgICAgICAgYnJlYWs7CiAgCi1AQCAtOTEzNiw2ICs5MjQ1LDggQEAgYnJlYWtw b2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorQEAgLTkxMzUsNiArOTI0NCw4IEBAIGJyZWFr cG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToK ICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgpAQCAt ODkxLDcgKzk0Miw3IEBAIGluZGV4IGQ0MDRlZTcuLjJiZTM5N2YgMTAwNjQ0CiAgICAgIGNhc2Ug YnBfaml0X2V2ZW50OgogICAgICAgIGJyZWFrOwogICAgICB9Ci1AQCAtOTE3OCw2ICs5Mjg5LDcg QEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCitAQCAtOTE3Nyw2ICs5Mjg4LDcgQEAgYnJlYWtw b2ludF9yZV9zZXQgKHZvaWQpCiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAo Il9sb25nam1wIik7CiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xv bmdqbXAiKTsKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdq bXAiKTsKQEAgLTg5OSw3ICs5NTAsNyBAQCBpbmRleCBkNDA0ZWU3Li4yYmUzOTdmIDEwMDY0NAog IH0KICAMCiAgLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVha3BvaW50Ogot QEAgLTEwMTczLDYgKzEwMjg1LDIyIEBAIGFsbF90cmFjZXBvaW50cyAoKQorQEAgLTEwMTcyLDYg KzEwMjg0LDIyIEBAIGFsbF90cmFjZXBvaW50cyAoKQogICAgcmV0dXJuIHRwX3ZlYzsKICB9CiAg CkBAIC05MjIsNyArOTczLDcgQEAgaW5kZXggZDQwNGVlNy4uMmJlMzk3ZiAxMDA2NDQKICAMCiAg LyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFr IGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBw cmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTEwNzE3LDQgKzEwODQ1LDUgQEAgaW5mZXJpb3IgaW4g YWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMg b2ZmLiIpLAorQEAgLTEwNzE2LDQgKzEwODQ0LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9k ZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAogICAg YXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFj aF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwpAQCAtOTc4 LDcgKzEwMjksNyBAQCBpbmRleCA2YjM3M2EzLi41OWFhNDEyIDEwMDY0NAogIGV4dGVybiBzdHJ1 Y3QgYnJlYWtwb2ludCAqZ2V0X3RyYWNlcG9pbnQgKGludCBudW0pOwogIAogZGlmZiAtLWdpdCBh L2dkYi9jLWV4cC55IGIvZ2RiL2MtZXhwLnkKLWluZGV4IDhlMDA5NzkuLjkyZWZiMzkgMTAwNjQ0 CitpbmRleCA4ZTAwOTc5Li5iODZmYzhlIDEwMDY0NAogLS0tIGEvZ2RiL2MtZXhwLnkKICsrKyBi L2dkYi9jLWV4cC55CiBAQCAtNDE4LDYgKzQxOCwyNCBAQCBleHAgICAgIDogICAgICAgZXhwICco JyBub25lbXB0eV90eXBlbGlzdCAnKScgY29uc3Rfb3Jfdm9sYXRpbGUKQEAgLTEwMjEsNyArMTA3 MiwyMiBAQCBpbmRleCA4ZTAwOTc5Li45MmVmYjM5IDEwMDY0NAogIAkJCSAgc3ltID0KICAJCQkg ICAgbG9va3VwX3N5bWJvbCAobmFtZSwgKGNvbnN0IHN0cnVjdCBibG9jayAqKSBOVUxMLAogIAkJ CQkJICAgVkFSX0RPTUFJTiwgKGludCAqKSBOVUxMKTsKLUBAIC0yMDMzLDYgKzIwNTIsMTMgQEAg c3RhdGljIGludCBsYXN0X3dhc19zdHJ1Y3RvcDsKK0BAIC0xMjk4LDYgKzEzMTcsMTQgQEAgbmFt ZV9ub3RfdHlwZW5hbWUgOglOQU1FCisgICAgY29udGV4dCB3aGVyZSBvbmx5IGEgbmFtZSBjb3Vs ZCBvY2N1ciwgdGhpcyBtaWdodCBiZSB1c2VmdWwuCisgICAJfAlOQU1FX09SX0lOVAorICAqLwor Kwl8CW9wZXJhdG9yCisrCQkJeworKwkJCSAgJCQuc3Rva2VuID0gJDE7CisrCQkJICAkJC5zeW0g PSBsb29rdXBfc3ltYm9sICgkMS5wdHIsCisrCQkJCQkJICBleHByZXNzaW9uX2NvbnRleHRfYmxv Y2ssCisrCQkJCQkJICBWQVJfRE9NQUlOLAorKwkJCQkJCSAgJiQkLmlzX2FfZmllbGRfb2ZfdGhp cyk7CisrCQkJfQorIAk7CisgCisgJSUKK0BAIC0yMDMzLDYgKzIwNjAsMTMgQEAgc3RhdGljIGlu dCBsYXN0X3dhc19zdHJ1Y3RvcDsKICBzdGF0aWMgaW50CiAgeXlsZXggKHZvaWQpCiAgewpAQCAt MTAzNSw3ICsxMTAxLDcgQEAgaW5kZXggOGUwMDk3OS4uOTJlZmIzOSAxMDA2NDQKICAgIGludCBj OwogICAgaW50IG5hbWVsZW47CiAgICB1bnNpZ25lZCBpbnQgaTsKLUBAIC0yMDQxLDkgKzIwNjcs MTkgQEAgeXlsZXggKHZvaWQpCitAQCAtMjA0MSw5ICsyMDc1LDE5IEBAIHl5bGV4ICh2b2lkKQog ICAgY2hhciAqY29weTsKICAKICAgIGxhc3Rfd2FzX3N0cnVjdG9wID0gMDsKQEAgLTEwNTcsNyAr MTEyMyw3IEBAIGluZGV4IDhlMDA5NzkuLjkyZWZiMzkgMTAwNjQ0CiAgICAvKiBDaGVjayBpZiB0 aGlzIGlzIGEgbWFjcm8gaW52b2NhdGlvbiB0aGF0IHdlIG5lZWQgdG8gZXhwYW5kLiAgKi8KICAg IGlmICghIHNjYW5uaW5nX21hY3JvX2V4cGFuc2lvbiAoKSkKICAgICAgewotQEAgLTIwNzksMTAg KzIxMTUsMTkgQEAgeXlsZXggKHZvaWQpCitAQCAtMjA3OSwxMCArMjEyMywxOSBAQCB5eWxleCAo dm9pZCkKICAJICAgICYmIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSAhPSBsYW5ndWFnZV9j cGx1cykKICAJICBicmVhazsKICAKQEAgLTEwNzcsNyArMTE0Myw3IEBAIGluZGV4IDhlMDA5Nzku LjkyZWZiMzkgMTAwNjQ0CiAgCXJldHVybiB0b2tlbnRhYjJbaV0udG9rZW47CiAgICAgICAgfQog IAotQEAgLTIxMTEsNiArMjE1Niw4IEBAIHl5bGV4ICh2b2lkKQorQEAgLTIxMTEsNiArMjE2NCw4 IEBAIHl5bGV4ICh2b2lkKQogICAgICAgICAgcmV0dXJuIDA7CiAgCiAgICAgIGNhc2UgJyAnOgpA QCAtMTA4Niw3ICsxMTUyLDcgQEAgaW5kZXggOGUwMDk3OS4uOTJlZmIzOSAxMDA2NDQKICAgICAg Y2FzZSAnXHQnOgogICAgICBjYXNlICdcbic6CiAgICAgICAgbGV4cHRyKys7Ci1AQCAtMjI2OCwx MSArMjMxNSwxMyBAQCB5eWxleCAodm9pZCkKK0BAIC0yMjY4LDExICsyMzIzLDEzIEBAIHl5bGV4 ICh2b2lkKQogICAgICBlcnJvciAoIkludmFsaWQgY2hhcmFjdGVyICclYycgaW4gZXhwcmVzc2lv bi4iLCBjKTsKICAKICAgIC8qIEl0J3MgYSBuYW1lLiAgU2VlIGhvdyBsb25nIGl0IGlzLiAgKi8K QEAgLTExMDAsNyArMTE2Niw3IEBAIGluZGV4IDhlMDA5NzkuLjkyZWZiMzkgMTAwNjQ0CiAgICAg ICAgLyogVGVtcGxhdGUgcGFyYW1ldGVyIGxpc3RzIGFyZSBwYXJ0IG9mIHRoZSBuYW1lLgogIAkg RklYTUU6IFRoaXMgbWlzaGFuZGxlcyBgcHJpbnQgJGE8NCYmJGE+MycuICAqLwogIAotQEAgLTIz NTcsMTQgKzI0MDYsMjkgQEAgeXlsZXggKHZvaWQpCitAQCAtMjM1NywxNCArMjQxNCwyOSBAQCB5 eWxleCAodm9pZCkKICAgICAgIGN1cnJlbnRseSBhcyBuYW1lcyBvZiB0eXBlczsgTkFNRSBmb3Ig b3RoZXIgc3ltYm9scy4KICAgICAgIFRoZSBjYWxsZXIgaXMgbm90IGNvbnN0cmFpbmVkIHRvIGNh cmUgYWJvdXQgdGhlIGRpc3RpbmN0aW9uLiAgKi8KICAgIHsKQEAgLTExMzEsNyArMTE5Nyw3IEBA IGluZGV4IDhlMDA5NzkuLjkyZWZiMzkgMTAwNjQ0CiAgICAgIC8qIENhbGwgbG9va3VwX3N5bXRh Yiwgbm90IGxvb2t1cF9wYXJ0aWFsX3N5bXRhYiwgaW4gY2FzZSB0aGVyZSBhcmUKICAgICAgICAg bm8gcHN5bXRhYnMgKGNvZmYsIHhjb2ZmLCBvciBzb21lIGZ1dHVyZSBjaGFuZ2UgdG8gYmxvdyBh d2F5IHRoZQogICAgICAgICBwc3ltdGFicyBvbmNlIG9uY2Ugc3ltYm9scyBhcmUgcmVhZCkuICAq LwotQEAgLTI0MjMsNiArMjQ4Nyw3IEBAIHl5bGV4ICh2b2lkKQorQEAgLTI0MjMsNiArMjQ5NSw3 IEBAIHl5bGV4ICh2b2lkKQogICAgICB5eWx2YWwuc3N5bS5pc19hX2ZpZWxkX29mX3RoaXMgPSBp c19hX2ZpZWxkX29mX3RoaXM7CiAgICAgIGlmIChpbl9wYXJzZV9maWVsZCAmJiAqbGV4cHRyID09 ICdcMCcpCiAgICAgICAgc2F3X25hbWVfYXRfZW9mID0gMTsKQEAgLTEyOTksNyArMTM2NSw3IEBA IGluZGV4IGViZGU4NzYuLjkwN2IyNzUgMTAwNjQ0CiAgI3VuZGVmIFJFTE9DX1NSQ0RJUgogIAog ZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1pbmRleCA0OTgwMTA2 Li5iZTY5NDg4IDEwMDc1NQoraW5kZXggZDQ0NGIwOC4uZDRjZWQ4OSAxMDA3NTUKIC0tLSBhL2dk Yi9jb25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzYsNiArNjc2LDggQEAgUkVQ T1JUX0JVR1NfVE8KQEAgLTE0MTQsNyArMTQ4MCw3IEBAIGluZGV4IDQ5ODAxMDYuLmJlNjk0ODgg MTAwNzU1CiAgCiAgICAjIEZsYWdzIG5lZWRlZCB0byBjb21waWxlIFB5dGhvbiBjb2RlICh0YWtl biBmcm9tIHB5dGhvbi1jb25maWcgLS1jZmxhZ3MpLgogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1 cmUuYWMgYi9nZGIvY29uZmlndXJlLmFjCi1pbmRleCBhNzU2YTJkLi5iNDRlMjFkIDEwMDY0NAor aW5kZXggOGRhNjg2Ny4uOGUzOTI1NCAxMDA2NDQKIC0tLSBhL2dkYi9jb25maWd1cmUuYWMKICsr KyBiL2dkYi9jb25maWd1cmUuYWMKIEBAIC0xMDgsNiArMTA4LDUxIEBAIEFTX0hFTFBfU1RSSU5H KFstLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXM9UEFUSF0sIFthdXRvbWF0aWNhbGx5IHJlbG9jYXRl IHRoaXMgcGF0CkBAIC0xNDkyLDcgKzE1NTgsNyBAQCBpbmRleCA4MWY2YTVkLi4wOTdkYjY1IDEw MDY0NAogIAkJCXsgJCQgPSAkMS5jb21wOwogIAkJCSAgaWYgKCQyKSAkJCA9IGZpbGxfY29tcCAo REVNQU5HTEVfQ09NUE9ORU5UX0xPQ0FMX05BTUUsICQkLCAkMik7IH0KIGRpZmYgLS1naXQgYS9n ZGIvY3AtbmFtZXNwYWNlLmMgYi9nZGIvY3AtbmFtZXNwYWNlLmMKLWluZGV4IDA0YjY2NWIuLjIx ZTAxM2EgMTAwNjQ0CitpbmRleCA4Y2E5YzIwLi4yMWUwMTNhIDEwMDY0NAogLS0tIGEvZ2RiL2Nw LW5hbWVzcGFjZS5jCiArKysgYi9nZGIvY3AtbmFtZXNwYWNlLmMKIEBAIC0zNCwxNCArMzQsMTcg QEAKQEAgLTE1NTYsNyArMTYyMiw3IEBAIGluZGV4IDA0YjY2NWIuLjIxZTAxM2EgMTAwNjQ0CiAg ICAgU2V0IGl0cyBuZXh0IG1lbWJlciBpbiB0aGUgbGlua2VkIGxpc3QgdG8gTkVYVDsgYWxsb2Nh dGUgYWxsIG1lbW9yeQogICAgIHVzaW5nIHhtYWxsb2MuICBJdCBjb3BpZXMgdGhlIHN0cmluZ3Ms IHNvIE5BTUUgY2FuIGJlIGEgdGVtcG9yYXJ5CiAgICAgc3RyaW5nLiAgKi8KLUBAIC0yMDcsMTQg KzIxNSwyMSBAQCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSkKK0BAIC0y MDcsMTMgKzIxNSwxOSBAQCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSkK ICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICoKICBjcF9hZGRfdXNpbmcgKGNvbnN0IGNoYXIgKmRlc3Qs CiAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCkBAIC0xNTc2LDExICsxNjQyLDkgQEAg aW5kZXggMDRiNjY1Yi4uMjFlMDEzYSAxMDA2NDQKICsgIHJldHZhbC0+ZGVjbGFyYXRpb24gPSBz YXZlc3RyaW5nIChkZWNsYXJhdGlvbiwgc3RybGVuIChkZWNsYXJhdGlvbikpOwogKyAgcmV0dmFs LT5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOwogICAgcmV0dmFsLT5uZXh0ID0gbmV4dDsKLSsg IHJldHZhbC0+c2VhcmNoZWQgPSAwOworICAgcmV0dmFsLT5zZWFyY2hlZCA9IDA7CiAgCi0gICBy ZXR1cm4gcmV0dmFsOwotIH0KLUBAIC0yMjksMTIgKzI0NCw0OCBAQCBjcF9hZGRfdXNpbmcgKGNv bnN0IGNoYXIgKmRlc3QsCitAQCAtMjMwLDE5ICsyNDQsMTAwIEBAIGNwX2FkZF91c2luZyAoY29u c3QgY2hhciAqZGVzdCwKICAKICBzdHJ1Y3Qgc3ltYm9sICoKICBjcF9sb29rdXBfc3ltYm9sX25v bmxvY2FsIChjb25zdCBjaGFyICpuYW1lLApAQCAtMTU4OCwxNSArMTY1MiwxNyBAQCBpbmRleCAw NGI2NjViLi4yMWUwMTNhIDEwMDY0NAogIAkJCSAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ss CiAgCQkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQogIHsKLS0gIHJldHVybiBsb29rdXBf bmFtZXNwYWNlX3Njb3BlIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLCBkb21haW4sCi0tCQkJ CSBibG9ja19zY29wZSAoYmxvY2spLCAwKTsKKy0gIHN0cnVjdCBzeW1ib2wgKnN5bTsKICsgIHN0 cnVjdCBzeW1ib2wgKnN5bTsgCi0rICBjb25zdCBjaGFyICpzY29wZSA9IGJsb2NrX3Njb3BlIChi bG9jayk7Ci0rCisgICBjb25zdCBjaGFyICpzY29wZSA9IGJsb2NrX3Njb3BlIChibG9jayk7Cisg CistICBzeW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBsaW5rYWdlX25hbWUsIGJs b2NrLCBkb21haW4sIHNjb3BlLCAwKTsKICsgIHN5bSA9IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUg KG5hbWUsIGJsb2NrLCBkb21haW4sIHNjb3BlLCAwKTsKLSsgIGlmIChzeW0gIT0gTlVMTCkKLSsg ICAgcmV0dXJuIHN5bTsKLSsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsK KyAKKy0gIHJldHVybiBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoc2NvcGUsIG5hbWUsIGxp bmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSk7CiArICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2Uoc2NvcGUs IG5hbWUsIGJsb2NrLCBkb21haW4pOwogK30KICsKQEAgLTE2MjksNzggKzE2OTUsMTAxIEBAIGlu ZGV4IDA0YjY2NWIuLjIxZTAxM2EgMTAwNjQ0CiArICAgIH0KICsKICsgIHJldHVybiBOVUxMOwot IH0KLSAKLSAvKiBMb29rdXAgTkFNRSBhdCBuYW1lc3BhY2Ugc2NvcGUgKG9yLCBpbiBDIHRlcm1z LCBpbiBzdGF0aWMgYW5kCi1AQCAtMjUyLDkgKzMwMyw4IEBAIGNwX2xvb2t1cF9zeW1ib2xfbm9u bG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgIkE6OngiLCBhbmQgaWYgdGhhdCBjYWxsIGZh aWxzLCB0aGVuIHRoZSBmaXJzdCBjYWxsIGxvb2tzIGZvcgotICAgICJ4Ii4gICovCi0gCi0tc3Rh dGljIHN0cnVjdCBzeW1ib2wgKgorK30KKysKKysvKiBMb29rdXAgTkFNRSBhdCBuYW1lc3BhY2Ug c2NvcGUgKG9yLCBpbiBDIHRlcm1zLCBpbiBzdGF0aWMgYW5kCisrICAgZ2xvYmFsIHZhcmlhYmxl cykuICBTQ09QRSBpcyB0aGUgbmFtZXNwYWNlIHRoYXQgdGhlIGN1cnJlbnQKKysgICBmdW5jdGlv biBpcyBkZWZpbmVkIHdpdGhpbjsgb25seSBjb25zaWRlciBuYW1lc3BhY2VzIHdob3NlIGxlbmd0 aAorKyAgIGlzIGF0IGxlYXN0IFNDT1BFX0xFTi4gIE90aGVyIGFyZ3VtZW50cyBhcmUgYXMgaW4K KysgICBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsLgorKworKyAgIEZvciBleGFtcGxlLCBpZiB3 ZSdyZSB3aXRoaW4gYSBmdW5jdGlvbiBBOjpCOjpmIGFuZCBsb29raW5nIGZvciBhCisrICAgc3lt Ym9sIHgsIHRoaXMgd2lsbCBnZXQgY2FsbGVkIHdpdGggTkFNRSA9ICJ4IiwgU0NPUEUgPSAiQTo6 QiIsIGFuZAorKyAgIFNDT1BFX0xFTiA9IDAuICBJdCB0aGVuIGNhbGxzIGl0c2VsZiB3aXRoIE5B TUUgYW5kIFNDT1BFIHRoZSBzYW1lLAorKyAgIGJ1dCB3aXRoIFNDT1BFX0xFTiA9IDEuICBBbmQg dGhlbiBpdCBjYWxscyBpdHNlbGYgd2l0aCBOQU1FIGFuZAorKyAgIFNDT1BFIHRoZSBzYW1lLCBi dXQgd2l0aCBTQ09QRV9MRU4gPSA0LiAgVGhpcyB0aGlyZCBjYWxsIGxvb2tzIGZvcgorKyAgICJB OjpCOjp4IjsgaWYgaXQgZG9lc24ndCBmaW5kIGl0LCB0aGVuIHRoZSBzZWNvbmQgY2FsbCBsb29r cyBmb3IKKysgICAiQTo6eCIsIGFuZCBpZiB0aGF0IGNhbGwgZmFpbHMsIHRoZW4gdGhlIGZpcnN0 IGNhbGwgbG9va3MgZm9yCisrICAgIngiLiAgKi8KKysKICtzdHJ1Y3Qgc3ltYm9sICoKLSBsb29r dXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAotLQkJCWNvbnN0IGNoYXIgKmxp bmthZ2VfbmFtZSwKLSAJCQljb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJCWNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbiwKLSAJCQljb25zdCBjaGFyICpzY29wZSwKLUBAIC0yNzYsOCArMzI2 LDcgQEAgbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29uc3QgY2hhciAqbmFtZSwKLSAJICBuZXdf c2NvcGVfbGVuICs9IDI7Ci0gCX0KLSAgICAgICBuZXdfc2NvcGVfbGVuICs9IGNwX2ZpbmRfZmly c3RfY29tcG9uZW50IChzY29wZSArIG5ld19zY29wZV9sZW4pOwotLSAgICAgIHN5bSA9IGxvb2t1 cF9uYW1lc3BhY2Vfc2NvcGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCi0tCQkJCSAgICBk b21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVuKTsKKytsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChj b25zdCBjaGFyICpuYW1lLAorKwkJCWNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisrCQkJY29u c3QgZG9tYWluX2VudW0gZG9tYWluLAorKwkJCWNvbnN0IGNoYXIgKnNjb3BlLAorKwkJCWludCBz Y29wZV9sZW4pCisreworKyAgY2hhciAqbmFtZXNwYWNlOworKworKyAgaWYgKHNjb3BlW3Njb3Bl X2xlbl0gIT0gJ1wwJykKKysgICAgeworKyAgICAgIC8qIFJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3Ig bmFtZXMgaW4gY2hpbGQgbmFtZXNwYWNlcyBmaXJzdC4gICovCisrCisrICAgICAgc3RydWN0IHN5 bWJvbCAqc3ltOworKyAgICAgIGludCBuZXdfc2NvcGVfbGVuID0gc2NvcGVfbGVuOworKworKyAg ICAgIC8qIElmIHRoZSBjdXJyZW50IHNjb3BlIGlzIGZvbGxvd2VkIGJ5ICI6OiIsIHNraXAgcGFz dCB0aGF0LiAgKi8KKysgICAgICBpZiAobmV3X3Njb3BlX2xlbiAhPSAwKQorKwl7CisrCSAgZ2Ri X2Fzc2VydCAoc2NvcGVbbmV3X3Njb3BlX2xlbl0gPT0gJzonKTsKKysJICBuZXdfc2NvcGVfbGVu ICs9IDI7CisrCX0KKysgICAgICBuZXdfc2NvcGVfbGVuICs9IGNwX2ZpbmRfZmlyc3RfY29tcG9u ZW50IChzY29wZSArIG5ld19zY29wZV9sZW4pOwogKyAgICAgIHN5bSA9IGxvb2t1cF9uYW1lc3Bh Y2Vfc2NvcGUgKG5hbWUsIGJsb2NrLCBkb21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVuKTsKLSAg ICAgICBpZiAoc3ltICE9IE5VTEwpCi0gCXJldHVybiBzeW07Ci0gICAgIH0KLUBAIC0yODgsMjUg KzMzNyw5OCBAQCBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAotICAg bmFtZXNwYWNlID0gYWxsb2NhIChzY29wZV9sZW4gKyAxKTsKLSAgIHN0cm5jcHkgKG5hbWVzcGFj ZSwgc2NvcGUsIHNjb3BlX2xlbik7Ci0gICBuYW1lc3BhY2Vbc2NvcGVfbGVuXSA9ICdcMCc7Ci0t ICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKG5hbWVzcGFjZSwgbmFtZSwgbGlu a2FnZV9uYW1lLAotLQkJCQkgICAgIGJsb2NrLCBkb21haW4pOworKyAgICAgIGlmIChzeW0gIT0g TlVMTCkKKysJcmV0dXJuIHN5bTsKKysgICAgfQorKworKyAgLyogT2theSwgd2UgZGlkbid0IGZp bmQgYSBtYXRjaCBpbiBvdXIgY2hpbGRyZW4sIHNvIGxvb2sgZm9yIHRoZQorKyAgICAgbmFtZSBp biB0aGUgY3VycmVudCBuYW1lc3BhY2UuICAqLworKworKyAgbmFtZXNwYWNlID0gYWxsb2NhIChz Y29wZV9sZW4gKyAxKTsKKysgIHN0cm5jcHkgKG5hbWVzcGFjZSwgc2NvcGUsIHNjb3BlX2xlbik7 CisrICBuYW1lc3BhY2Vbc2NvcGVfbGVuXSA9ICdcMCc7CiArICByZXR1cm4gY3BfbG9va3VwX3N5 bWJvbF9pbl9uYW1lc3BhY2UgKG5hbWVzcGFjZSwgbmFtZSxibG9jaywgZG9tYWluKTsKICB9CiAg Ci0tLyogTG9vayB1cCBOQU1FIGluIHRoZSBDKysgbmFtZXNwYWNlIE5BTUVTUEFDRSwgYXBwbHlp bmcgdGhlIHVzaW5nCi0tICAgZGlyZWN0aXZlcyB0aGF0IGFyZSBhY3RpdmUgaW4gQkxPQ0suICBP dGhlciBhcmd1bWVudHMgYXJlIGFzIGluCi0rLyogTG9vayB1cCBOQU1FIGluIHRoZSBDKysgbmFt ZXNwYWNlIE5BTUVTUEFDRS4gT3RoZXIgYXJndW1lbnRzIGFyZSBhcyBpbgotICAgIGNwX2xvb2t1 cF9zeW1ib2xfbm9ubG9jYWwuICAqLworIC8qIExvb2sgdXAgTkFNRSBpbiB0aGUgQysrIG5hbWVz cGFjZSBOQU1FU1BBQ0UuIE90aGVyIGFyZ3VtZW50cyBhcmUgYXMgaW4KK0BAIC0yNTAsMjUgKzM0 NSwyNCBAQCBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAogIAot K3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLStjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAo Y29uc3QgY2hhciAqbmFtZXNwYWNlLAorIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKKyBjcF9sb29r dXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKICsJCQkgICAg ICAgY29uc3QgY2hhciAqbmFtZSwKICsJCQkgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9j aywKICsJCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotK3sKKyB7CiArCi0rICBp ZiAobmFtZXNwYWNlWzBdID09ICdcMCcpCi0rICAgIHsKKyAgIGlmIChuYW1lc3BhY2VbMF0gPT0g J1wwJykKKyAgICAgeworLSAgICAgIHJldHVybiBsb29rdXBfc3ltYm9sX2ZpbGUgKG5hbWUsIGxp bmthZ2VfbmFtZSwgYmxvY2ssCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9t YWluLCAwKTsKICsgICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxlIChuYW1lLCBibG9jayxk b21haW4sIDApOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKKyAgICAgfQorICAgZWxzZQorICAg ICB7CistICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25hbWUgPSBhbGxvY2EgKHN0cmxlbiAobmFt ZXNwYWNlKSArIDIgKworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJsZW4gKG5hbWUrIDEpKTsKICsgICAgICBjaGFyICpjb25jYXRlbmF0ZWRfbmFtZQogKwk9IGFs bG9jYSAoc3RybGVuIChuYW1lc3BhY2UpICsgMiArIHN0cmxlbiAobmFtZSkgKyAxKTsKLSsgICAg ICBzdHJjcHkgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lc3BhY2UpOwotKyAgICAgIHN0cmNhdCAo Y29uY2F0ZW5hdGVkX25hbWUsICI6OiIpOwotKyAgICAgIHN0cmNhdCAoY29uY2F0ZW5hdGVkX25h bWUsIG5hbWUpOworICAgICAgIHN0cmNweSAoY29uY2F0ZW5hdGVkX25hbWUsIG5hbWVzcGFjZSk7 CisgICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgIjo6Iik7CisgICAgICAgc3RyY2F0 IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFtZSk7CistICAgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xf ZmlsZSAoY29uY2F0ZW5hdGVkX25hbWUsIGxpbmthZ2VfbmFtZSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBibG9jaywgZG9tYWluLGNwX2lzX2Fub255bW91cyAobmFtZXNwYWNl KSk7CiArICAgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uY2F0ZW5hdGVkX25hbWUs IGJsb2NrLCBkb21haW4sCiArCQkJCWNwX2lzX2Fub255bW91cyAobmFtZXNwYWNlKSk7Ci0rICAg IH0KLSt9Ci0rCi0rLyogVXNlZCBmb3IgY2xlYW51cHMgdG8gcmVzZXQgdGhlICJzZWFyY2hlZCIg ZmxhZyBpbmNhc2UKLSsgICBvZiBhbiBlcnJvci4gICovCi0rCi0rc3RhdGljIHZvaWQKLStyZXNl dF9kaXJlY3RpdmVfc2VhcmNoZWQgKHZvaWQgKmRhdGEpCi0rewotKyAgc3RydWN0IHVzaW5nX2Rp cmVjdCAqZGlyZWN0ID0gZGF0YTsKLSsgIGRpcmVjdC0+c2VhcmNoZWQgPSAwOwotK30KLSsKLSsv KiBTZWFyY2ggZm9yIE5BTUUgYnkgYXBwbHlpbmcgYWxsIGltcG9ydCBzdGF0ZW1lbnRzIGJlbG9u Z2luZworICAgICB9CisgfQorIAorQEAgLTI4Myw5ICszNzcsMTcgQEAgcmVzZXRfZGlyZWN0aXZl X3NlYXJjaGVkICh2b2lkICpkYXRhKQorIH0KKyAKKyAvKiBTZWFyY2ggZm9yIE5BTUUgYnkgYXBw bHlpbmcgYWxsIGltcG9ydCBzdGF0ZW1lbnRzIGJlbG9uZ2luZworLSAgIHRvIEJMT0NLIHdoaWNo IGFyZSBhcHBsaWNhYmxlIGluIFNDT1BFLgogKyAgIHRvIEJMT0NLIHdoaWNoIGFyZSBhcHBsaWNh YmxlIGluIFNDT1BFLiBJZiBERUNMQVJBVElPTl9PTkxZIHRoZSBzZWFyY2gKICsgICBpcyByZXN0 cmljdGVkIHRvIHVzaW5nIGRlY2xhcmF0aW9ucy4KICsgICBFeGFtcGxlOgpAQCAtMTcxMCw2OCAr MTc5OSw3MSBAQCBpbmRleCAwNGI2NjViLi4yMWUwMTNhIDEwMDY0NAogKyAgICAgfQogKyAgICAg dXNpbmcgQTo6eDsKICsKLSsgICBJZiBTRUFSQ0hfUEFSRU5UUyB0aGUgc2VhcmNoIHdpbGwgaW5j bHVkZSBpbXBvcnRzIHdoaWNoIGFyZSBhcHBsaWNhYmxlIGluCisgICAgSWYgU0VBUkNIX1BBUkVO VFMgdGhlIHNlYXJjaCB3aWxsIGluY2x1ZGUgaW1wb3J0cyB3aGljaCBhcmUgYXBwbGljYWJsZSBp bgorLSAgIHBhcmVudHMgb2YgU0NPUEUuCiArICAgcGFyZW50cyBvZiBzY29wZXMuCi0rICAgRXhh bXBsZToKLSsKLSsgICAgIG5hbWVzcGFjZSBBewotKyAgICAgICB1c2luZyBuYW1lc3BhY2UgWDsK LSsgICAgICAgbmFtZXNwYWNlIEJ7Ci0rICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIFk7Ci0rICAg ICAgIH0KLSsgICAgIH0KLSsKLSsgICBJZiBTQ09QRSBpcyAiQTo6QiIgYW5kIFNFQVJDSF9QQVJF TlRTIGlzIHRydWUgdGhlIGltcG9ydHMgb2YgbmFtZXNwYWNlcyBYCi0rICAgYW5kIFkgd2lsbCBi ZSBjb25zaWRlcmVkLiBJZiBTRUFSQ0hfUEFSRU5UUyBpcyBmYWxzZSBvbmx5IHRoZSBpbXBvcnQg b2YgWQotKyAgIGlzIGNvbnNpZGVyZWQuICAqLwotKwotIHN0cnVjdCBzeW1ib2wgKgotLWNwX2xv b2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0tCQkJICAgIGNv bnN0IGNoYXIgKm5hbWUsCi0tCQkJICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLS0JCQkg ICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLS0JCQkgICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKQotK2NwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAoY29uc3QgY2hhciAqc2NvcGUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKKyAgICBFeGFtcGxlOgorIAor ICAgICAgbmFtZXNwYWNlIEF7CitAQCAtMjk5LDI2ICs0MDEsMzMgQEAgcmVzZXRfZGlyZWN0aXZl X3NlYXJjaGVkICh2b2lkICpkYXRhKQorICAgIGFuZCBZIHdpbGwgYmUgY29uc2lkZXJlZC4gSWYg U0VBUkNIX1BBUkVOVFMgaXMgZmFsc2Ugb25seSB0aGUgaW1wb3J0IG9mIFkKKyAgICBpcyBjb25z aWRlcmVkLiAgKi8KKyAKKy1zdGF0aWMgc3RydWN0IHN5bWJvbCAqCisrc3RydWN0IHN5bWJvbCAq CisgY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzIChjb25zdCBjaGFyICpzY29wZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCistICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgaW50IHNlYXJjaF9wYXJlbnRzKQogKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGRlY2xhcmF0aW9uX29ubHksCiArICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VhcmNo X3BhcmVudHMpCiAgewotLSAgY29uc3Qgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3VycmVudDsKKyAg IHN0cnVjdCB1c2luZ19kaXJlY3QgKmN1cnJlbnQ7CiAtICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0r ICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjdXJyZW50OworLSAgaW50IGxlbjsKICsgIHN0cnVjdCBz eW1ib2wgKnN5bSA9IE5VTEw7Ci0rICBpbnQgZGlyZWN0aXZlX21hdGNoOworICAgaW50IGRpcmVj dGl2ZV9tYXRjaDsKICsgIGludCBjdXJyZW50X2xpbmU7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqc2Vh cmNoZWRfY2xlYW51cDsKLSsKKyAgIHN0cnVjdCBjbGVhbnVwICpzZWFyY2hlZF9jbGVhbnVwOwor IAorLSAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBzeW1ib2wgaW4gdGhlIGdpdmVuIG5hbWVz cGFjZS4gICovCistICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoc2NvcGUs IG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9tYWluKTsKKy0gIGlmIChzeW0gIT0gTlVMTCkKICsgIGlmKCFkZWNsYXJh dGlvbl9vbmx5KQogKyAgICAvKiBGaXJzdCwgdHJ5IHRvIGZpbmQgdGhlIHN5bWJvbCBpbiB0aGUg Z2l2ZW4gbmFtZXNwYWNlLiAgKi8KICsgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1l c3BhY2UgKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKLSAKLS0gIC8qIEZpcnN0LCBnbyB0 aHJvdWdoIHRoZSB1c2luZyBkaXJlY3RpdmVzLiAgSWYgYW55IG9mIHRoZW0gYWRkIG5ldwotKyAg aWYgKCBzeW0gIT0gTlVMTCkKLSsgICAgcmV0dXJuIHN5bTsKICsKKysgIGlmICggc3ltICE9IE5V TEwpCisgICAgIHJldHVybiBzeW07CisgCiArICBpZiAoaGFzX3N0YWNrX2ZyYW1lcyAoKSkKICsg ICAgY3VycmVudF9saW5lID0gZmluZF9wY19saW5lIChnZXRfZnJhbWVfcGMgKGdldF9zZWxlY3Rl ZF9mcmFtZSAoTlVMTCkpLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwKS5saW5lOwogKyAgZWxzZQogKyAgICBjdXJyZW50X2xpbmUgPSAwOwogKwotKyAg LyogR28gdGhyb3VnaCB0aGUgdXNpbmcgZGlyZWN0aXZlcy4gIElmIGFueSBvZiB0aGVtIGFkZCBu ZXcKKyAgIC8qIEdvIHRocm91Z2ggdGhlIHVzaW5nIGRpcmVjdGl2ZXMuICBJZiBhbnkgb2YgdGhl bSBhZGQgbmV3CiAgICAgICBuYW1lcyB0byB0aGUgbmFtZXNwYWNlIHdlJ3JlIHNlYXJjaGluZyBp biwgc2VlIGlmIHdlIGNhbiBmaW5kIGEKICAgICAgIG1hdGNoIGJ5IGFwcGx5aW5nIHRoZW0uICAq LwotIAotQEAgLTMxNCwzOSArNDM2LDc4IEBAIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChj b25zdCBjaGFyICpuYW1lc3BhY2UsCitAQCAtMzI3LDEyMyArNDM2LDc4IEBAIGNwX2xvb2t1cF9z eW1ib2xfaW1wb3J0cyAoY29uc3QgY2hhciAqc2NvcGUsCiAgICAgICAgIGN1cnJlbnQgIT0gTlVM TDsKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpCiAgICAgIHsKLS0gICAgICBpZiAo c3RyY21wIChuYW1lc3BhY2UsIGN1cnJlbnQtPmltcG9ydF9kZXN0KSA9PSAwKQorLSAgICAgIGxl biA9IHN0cmxlbiAoY3VycmVudC0+aW1wb3J0X2Rlc3QpOworLSAgICAgIGRpcmVjdGl2ZV9tYXRj aCA9IChzZWFyY2hfcGFyZW50cworLSAgICAgICAgICAgICAgICAgICAgICAgICA/IChzdHJuY21w IChzY29wZSwgY3VycmVudC0+aW1wb3J0X2Rlc3QsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cmxlbiAoY3VycmVudC0+aW1wb3J0X2Rlc3QpKSA9PSAwCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICYmIChsZW4gPT0gMAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfHwgc2NvcGVbbGVuXSA9PSAnOicgfHwgc2NvcGVbbGVuXSA9PSAnXDAnKSkK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgOiBzdHJjbXAgKHNjb3BlLCBjdXJyZW50LT5pbXBv cnRfZGVzdCkgPT0gMCk7CistCiArICAKLSsgICAgICAvKiBJZiB0aGUgaW1wb3J0IGRlc3RpbmF0 aW9uIGlzIHRoZSBjdXJyZW50IHNjb3BlIG9yIG9uZSBvZiBpdHMgYW5jZXN0b3JzIHRoZW4KLSsg ICAgICAgICBpdCBpcyBhcHBsaWNhYmxlLiAgKi8KKyAgICAgICAvKiBJZiB0aGUgaW1wb3J0IGRl c3RpbmF0aW9uIGlzIHRoZSBjdXJyZW50IHNjb3BlIG9yIG9uZSBvZiBpdHMgYW5jZXN0b3JzIHRo ZW4KKyAgICAgICAgICBpdCBpcyBhcHBsaWNhYmxlLiAgKi8KKy0gICAgICBpZiAoZGlyZWN0aXZl X21hdGNoICYmICFjdXJyZW50LT5zZWFyY2hlZCkKICsgICAgICBkaXJlY3RpdmVfbWF0Y2ggPSBz ZWFyY2hfcGFyZW50cyA/CiArICAgICAgICAgICAgICAgICAgICAgICAgc3RybmNtcCAoc2NvcGUs IGN1cnJlbnQtPmltcG9ydF9kZXN0LAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cmxlbihjdXJyZW50LT5pbXBvcnRfZGVzdCkpID09IDAgOgpAQCAtMTc4MSwxMSArMTg3Myw4 MiBAQCBpbmRleCAwNGI2NjViLi4yMWUwMTNhIDEwMDY0NAogKyAgICAgICAgICBjdXJyZW50LT5s aW5lX251bWJlciA8IGN1cnJlbnRfbGluZSAmJgogKyAgICAgICAgICAhY3VycmVudC0+c2VhcmNo ZWQpCiAgCXsKLS0JICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY3VycmVudC0+ aW1wb3J0X3NyYywKLS0JCQkJCSAgICBuYW1lLAotLQkJCQkJICAgIGxpbmthZ2VfbmFtZSwKLS0J CQkJCSAgICBibG9jaywKLS0JCQkJCSAgICBkb21haW4pOworLQkvKiBNYXJrIHRoaXMgaW1wb3J0 IGFzIHNlYXJjaGVkIHNvIHRoYXQgdGhlIHJlY3Vyc2l2ZSBjYWxsIGRvZXMgbm90CistICAgICAg ICAgICBzZWFyY2ggaXQgYWdhaW4uICAqLworLQljdXJyZW50LT5zZWFyY2hlZCA9IDE7CistCXNl YXJjaGVkX2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKHJlc2V0X2RpcmVjdGl2ZV9zZWFyY2hlZCwg Y3VycmVudCk7CistCistCXN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjdXJyZW50 LT5pbXBvcnRfc3JjLAorLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwK Ky0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmthZ2VfbmFtZSwKKy0JICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorLQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9tYWluLAorLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMCk7CistCistCWN1cnJlbnQtPnNlYXJjaGVkID0gMDsKKy0JZGlzY2FyZF9jbGVhbnVw cyAoc2VhcmNoZWRfY2xlYW51cCk7CistCistCWlmIChzeW0gIT0gTlVMTCkKKy0JICByZXR1cm4g c3ltOworLQl9CistICAgIH0KKy0KKy0gIHJldHVybiBOVUxMOworLX0KKy0KKy0gLyogU2VhcmNo ZXMgZm9yIE5BTUUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLCBhbmQgYnkgYXBwbHlpbmcgcmVs ZXZhbnQgaW1wb3J0CistICAgIHN0YXRlbWVudHMgYmVsb25naW5nIHRvIEJMT0NLIGFuZCBpdHMg cGFyZW50cy4gU0NPUEUgaXMgdGhlIG5hbWVzcGFjZSBzY29wZQorLSAgICBvZiB0aGUgY29udGV4 dCBpbiB3aGljaCB0aGUgc2VhcmNoIGlzIGJlaW5nIGV2YWx1YXRlZC4gICovCistCistc3RydWN0 IHN5bWJvbCoKKy1jcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3QgY2hhciAqc2NvcGUs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2VhcmNoX3BhcmVudHMpCisteworLSAgc3Ry dWN0IHN5bWJvbCAqc3ltOworLQorLSAgLyogU2VhcmNoIGZvciBuYW1lIGluIG5hbWVzcGFjZXMg aW1wb3J0ZWQgdG8gdGhpcyBhbmQgcGFyZW50IGJsb2Nrcy4gICovCistICB3aGlsZSAoYmxvY2sg IT0gTlVMTCkKKy0gICAgeworLSAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAo c2NvcGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssIGRvbWFpbiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9wYXJlbnRzKTsKKy0KKy0gICAgICBpZiAo c3ltKQorLQlyZXR1cm4gc3ltOworLQorLSAgICAgIGJsb2NrID0gQkxPQ0tfU1VQRVJCTE9DSyAo YmxvY2spOworLSAgICB9CistCistICByZXR1cm4gTlVMTDsKKy19CistCistLyogTG9va3VwIE5B TUUgYXQgbmFtZXNwYWNlIHNjb3BlIChvciwgaW4gQyB0ZXJtcywgaW4gc3RhdGljIGFuZAorLSAg IGdsb2JhbCB2YXJpYWJsZXMpLiAgU0NPUEUgaXMgdGhlIG5hbWVzcGFjZSB0aGF0IHRoZSBjdXJy ZW50CistICAgZnVuY3Rpb24gaXMgZGVmaW5lZCB3aXRoaW47IG9ubHkgY29uc2lkZXIgbmFtZXNw YWNlcyB3aG9zZSBsZW5ndGgKKy0gICBpcyBhdCBsZWFzdCBTQ09QRV9MRU4uICBPdGhlciBhcmd1 bWVudHMgYXJlIGFzIGluCistICAgY3BfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4KKy0KKy0gICBG b3IgZXhhbXBsZSwgaWYgd2UncmUgd2l0aGluIGEgZnVuY3Rpb24gQTo6Qjo6ZiBhbmQgbG9va2lu ZyBmb3IgYQorLSAgIHN5bWJvbCB4LCB0aGlzIHdpbGwgZ2V0IGNhbGxlZCB3aXRoIE5BTUUgPSAi eCIsIFNDT1BFID0gIkE6OkIiLCBhbmQKKy0gICBTQ09QRV9MRU4gPSAwLiAgSXQgdGhlbiBjYWxs cyBpdHNlbGYgd2l0aCBOQU1FIGFuZCBTQ09QRSB0aGUgc2FtZSwKKy0gICBidXQgd2l0aCBTQ09Q RV9MRU4gPSAxLiAgQW5kIHRoZW4gaXQgY2FsbHMgaXRzZWxmIHdpdGggTkFNRSBhbmQKKy0gICBT Q09QRSB0aGUgc2FtZSwgYnV0IHdpdGggU0NPUEVfTEVOID0gNC4gIFRoaXMgdGhpcmQgY2FsbCBs b29rcyBmb3IKKy0gICAiQTo6Qjo6eCI7IGlmIGl0IGRvZXNuJ3QgZmluZCBpdCwgdGhlbiB0aGUg c2Vjb25kIGNhbGwgbG9va3MgZm9yCistICAgIkE6OngiLCBhbmQgaWYgdGhhdCBjYWxsIGZhaWxz LCB0aGVuIHRoZSBmaXJzdCBjYWxsIGxvb2tzIGZvcgorLSAgICJ4Ii4gICovCistCistc3RhdGlj IHN0cnVjdCBzeW1ib2wgKgorLWxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5h bWUsCistCQkJY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorLQkJCWNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2ssCistCQkJY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorLQkJCWNvbnN0IGNoYXIg KnNjb3BlLAorLQkJCWludCBzY29wZV9sZW4pCisteworLSAgY2hhciAqbmFtZXNwYWNlOwogKwkg IGN1cnJlbnQtPnNlYXJjaGVkID0gMTsKICsJICBzZWFyY2hlZF9jbGVhbnVwID0gbWFrZV9jbGVh bnVwIChyZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQsIGN1cnJlbnQpOwogKwpAQCAtMTgxNiw3ICsx OTc5LDEwIEBAIGluZGV4IDA0YjY2NWIuLjIxZTAxM2EgMTAwNjQ0CiArCSAgICBkaXNjYXJkX2Ns ZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKICsJICAgIGNvbnRpbnVlOwogKwkgICAgfQotKwor IAorLSAgaWYgKHNjb3BlW3Njb3BlX2xlbl0gIT0gJ1wwJykKKy0gICAgeworLSAgICAgIC8qIFJl Y3Vyc2l2ZWx5IHNlYXJjaCBmb3IgbmFtZXMgaW4gY2hpbGQgbmFtZXNwYWNlcyBmaXJzdC4gICov CiArCSAgaWYgKHN0cmNtcCAobmFtZSwgY3VycmVudC0+YWxpYXMpID09IDApCiArCSAgICAvKiBJ ZiB0aGUgaW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxpYXMgbWF0Y2hlcyB0 aGUKICsJICAgICAgIHNvdWdodCBuYW1lLiBQYXNzIGN1cnJlbnQtPmlubmVyIGFzIHRoZSBOQU1F IHRvIGRpcmVjdCB0aGUKQEAgLTE4MzYsNDEgKzIwMDIsNDAgQEAgaW5kZXggMDRiNjY1Yi4uMjFl MDEzYSAxMDA2NDQKICsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAog KwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogKwkgICAgfQotKwor IAorLSAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKy0gICAgICBpbnQgbmV3X3Njb3BlX2xlbiA9 IHNjb3BlX2xlbjsKICsJICBjdXJyZW50LT5zZWFyY2hlZCA9IDA7CiArCSAgZGlzY2FyZF9jbGVh bnVwcyAoc2VhcmNoZWRfY2xlYW51cCk7Ci0rCi0gCSAgaWYgKHN5bSAhPSBOVUxMKQotIAkgICAg cmV0dXJuIHN5bTsKKyAKKy0gICAgICAvKiBJZiB0aGUgY3VycmVudCBzY29wZSBpcyBmb2xsb3dl ZCBieSAiOjoiLCBza2lwIHBhc3QgdGhhdC4gICovCistICAgICAgaWYgKG5ld19zY29wZV9sZW4g IT0gMCkKKy0JeworLQkgIGdkYl9hc3NlcnQgKHNjb3BlW25ld19zY29wZV9sZW5dID09ICc6Jyk7 CistCSAgbmV3X3Njb3BlX2xlbiArPSAyOworKwkgIGlmIChzeW0gIT0gTlVMTCkKKysJICAgIHJl dHVybiBzeW07CiAgCX0KKy0gICAgICBuZXdfc2NvcGVfbGVuICs9IGNwX2ZpbmRfZmlyc3RfY29t cG9uZW50IChzY29wZSArIG5ld19zY29wZV9sZW4pOworLSAgICAgIHN5bSA9IGxvb2t1cF9uYW1l c3BhY2Vfc2NvcGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCistCQkJCSAgICBkb21haW4s IHNjb3BlLCBuZXdfc2NvcGVfbGVuKTsKKy0gICAgICBpZiAoc3ltICE9IE5VTEwpCistCXJldHVy biBzeW07CiAgICAgIH0KICAKLS0gIC8qIFdlIGRpZG4ndCBmaW5kIGFueXRoaW5nIGJ5IGFwcGx5 aW5nIGFueSBvZiB0aGUgdXNpbmcgZGlyZWN0aXZlcwotLSAgICAgdGhhdCBhcmUgc3RpbGwgYXBw bGljYWJsZTsgc28gbGV0J3Mgc2VlIGlmIHdlJ3ZlIGdvdCBhIG1hdGNoCi0tICAgICB1c2luZyB0 aGUgY3VycmVudCBuYW1lc3BhY2UuICAqLwotLSAgCi0tICBpZiAobmFtZXNwYWNlWzBdID09ICdc MCcpCi0tICAgIHsKLS0gICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxlIChuYW1lLCBsaW5r YWdlX25hbWUsIGJsb2NrLAotLQkJCQkgZG9tYWluLCAwKTsKLS0gICAgfQotLSAgZWxzZQotLSAg ICB7Ci0tICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25hbWUKLS0JPSBhbGxvY2EgKHN0cmxlbiAo bmFtZXNwYWNlKSArIDIgKyBzdHJsZW4gKG5hbWUpICsgMSk7Ci0tICAgICAgc3RyY3B5IChjb25j YXRlbmF0ZWRfbmFtZSwgbmFtZXNwYWNlKTsKLS0gICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9u YW1lLCAiOjoiKTsKLS0gICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lKTsKLS0g ICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbmNhdGVuYXRlZF9uYW1lLCBsaW5rYWdl X25hbWUsCi0tCQkJCWJsb2NrLCBkb21haW4sIAotLQkJCQljcF9pc19hbm9ueW1vdXMgKG5hbWVz cGFjZSkpOwotLSAgICAgIHJldHVybiBzeW07Ci0tICAgIH0KKy0gIC8qIE9rYXksIHdlIGRpZG4n dCBmaW5kIGEgbWF0Y2ggaW4gb3VyIGNoaWxkcmVuLCBzbyBsb29rIGZvciB0aGUKKy0gICAgIG5h bWUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLiAgKi8KKy0KKy0gIG5hbWVzcGFjZSA9IGFsbG9j YSAoc2NvcGVfbGVuICsgMSk7CistICBzdHJuY3B5IChuYW1lc3BhY2UsIHNjb3BlLCBzY29wZV9s ZW4pOworLSAgbmFtZXNwYWNlW3Njb3BlX2xlbl0gPSAnXDAnOworLSAgcmV0dXJuIGNwX2xvb2t1 cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChuYW1lc3BhY2UsIG5hbWUsIGxpbmthZ2VfbmFtZSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGRvbWFpbik7CiAr ICByZXR1cm4gTlVMTDsKICB9CiAgCiAgLyogTG9vayB1cCBOQU1FIGluIEJMT0NLJ3Mgc3RhdGlj IGJsb2NrIGFuZCBpbiBnbG9iYWwgYmxvY2tzLiAgSWYKLUBAIC0zNTYsMTcgKzUxNywxNSBAQCBj cF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorQEAgLTQ1 MywxNyArNTE3LDE1IEBAIGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUs CiAgCiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgogIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3Qg Y2hhciAqbmFtZSwKQEAgLTE4ODksNyArMjA1NCw3IEBAIGluZGV4IDA0YjY2NWIuLjIxZTAxM2Eg MTAwNjQ0CiAgICBpZiAoYW5vbnltb3VzX25hbWVzcGFjZSkKICAgICAgewogICAgICAgIC8qIFN5 bWJvbHMgZGVmaW5lZCBpbiBhbm9ueW1vdXMgbmFtZXNwYWNlcyBoYXZlIGV4dGVybmFsIGxpbmth Z2UKLUBAIC0zNzYsMTIgKzUzNSwxMSBAQCBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIg Km5hbWUsCitAQCAtNDczLDEyICs1MzUsMTEgQEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBj aGFyICpuYW1lLAogICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqZ2xvYmFsX2Jsb2NrID0gYmxv Y2tfZ2xvYmFsX2Jsb2NrIChibG9jayk7CiAgICAgICAgCiAgICAgICAgaWYgKGdsb2JhbF9ibG9j ayAhPSBOVUxMKQpAQCAtMTkwNCw3ICsyMDY5LDcgQEAgaW5kZXggMDRiNjY1Yi4uMjFlMDEzYSAx MDA2NDQKICAgICAgfQogIAogICAgaWYgKHN5bSAhPSBOVUxMKQotQEAgLTQwMiw2ICs1NjAsNyBA QCBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNDk5LDYgKzU2MCw3 IEBAIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBzeW0gPSBs b29rdXBfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAobmFtZSk7CiAgICAgICAgaWYgKHN5bSAh PSBOVUxMKQogIAlyZXR1cm4gc3ltOwpAQCAtMTkxMiwxOCArMjA3NywyMSBAQCBpbmRleCAwNGI2 NjViLi4yMWUwMTNhIDEwMDY0NAogICAgICB9CiAgCiAgICByZXR1cm4gTlVMTDsKLUBAIC00Mjks OSArNTg4LDggQEAgY3BfbG9va3VwX25lc3RlZF90eXBlIChzdHJ1Y3QgdHlwZSAqcGFyZW50X3R5 cGUsCi0gCSAgIGxvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIHdvcmtzIHdoZW4gbG9va2luZyB0aGVt IHVwLiAgKi8KK0BAIC01MjcsMTAgKzU4OSw5IEBAIGNwX2xvb2t1cF9uZXN0ZWRfdHlwZSAoc3Ry dWN0IHR5cGUgKnBhcmVudF90eXBlLAogIAogIAljb25zdCBjaGFyICpwYXJlbnRfbmFtZSA9IFRZ UEVfVEFHX05BTUUgKHBhcmVudF90eXBlKTsKLS0Jc3RydWN0IHN5bWJvbCAqc3ltID0gY3BfbG9v a3VwX3N5bWJvbF9uYW1lc3BhY2UgKHBhcmVudF9uYW1lLAotKwlzdHJ1Y3Qgc3ltYm9sICpzeW0g PSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAocGFyZW50X25hbWUsCi0gCQkJCQkJCSBu ZXN0ZWRfbmFtZSwKLS0JCQkJCQkJIE5VTEwsCi0gCQkJCQkJCSBibG9jaywKLSAJCQkJCQkJIFZB Ul9ET01BSU4pOworIAlzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25h bWVzcGFjZSAocGFyZW50X25hbWUsCistCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuZXN0ZWRfbmFtZSwKKy0JICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCistCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywKKy0JICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUl9ET01BSU4pOworKwkJ CQkJCQkgbmVzdGVkX25hbWUsCisrCQkJCQkJCSBibG9jaywKKysJCQkJCQkJIFZBUl9ET01BSU4p OwogIAlpZiAoc3ltID09IE5VTEwgfHwgU1lNQk9MX0NMQVNTIChzeW0pICE9IExPQ19UWVBFREVG KQotQEAgLTY3Nyw3ICs4MzUsNyBAQCBjaGVja19vbmVfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJv bCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKKyAJICByZXR1cm4gTlVMTDsKKyAJZWxzZQor QEAgLTc3NCw3ICs4MzUsNyBAQCBjaGVja19vbmVfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAo Y29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKICAKICAgIG1lbWNweSAobmFtZV9jb3B5LCBuYW1l LCBsZW4pOwogICAgbmFtZV9jb3B5W2xlbl0gPSAnXDAnOwpAQCAtMTkzMiw3ICsyMTAwLDcgQEAg aW5kZXggMDRiNjY1Yi4uMjFlMDEzYSAxMDA2NDQKICAKICAgIGlmIChzeW0gPT0gTlVMTCkKICAg ICAgewotQEAgLTcxOCw3ICs4NzYsNyBAQCBsb29rdXBfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJv bCAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC04MTUsNyArODc2LDcgQEAgbG9va3VwX3Bvc3NpYmxl X25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgICAgc3RydWN0IHN5bWJv bCAqc3ltOwogIAogICAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGdldF9wb3NzaWJs ZV9uYW1lc3BhY2VfYmxvY2sgKG9iamZpbGUpLApAQCAtMTk2OCwxMCArMjEzNiwxMCBAQCBpbmRl eCBjMzFmY2ZmLi5mYzI5NGFlIDEwMDY0NAogICAgICAgIHBzeW10YWJfdG9fc3ltdGFiIChwcyk7 CiAgICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuaCBiL2dkYi9jcC1zdXBwb3J0LmgK LWluZGV4IGE2Mjk5NTUuLjJhZmRiNDggMTAwNjQ0CitpbmRleCAzM2IxYjQ0Li41MGY4ZmU5IDEw MDY0NAogLS0tIGEvZ2RiL2NwLXN1cHBvcnQuaAogKysrIGIvZ2RiL2NwLXN1cHBvcnQuaAotQEAg LTM4LDE1ICszOCwzMyBAQCBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50OworQEAgLTM4LDE0ICsz OCwyOSBAQCBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50OwogIAogIC8qIFRoaXMgc3RydWN0IGlz IGRlc2lnbmVkIHRvIHN0b3JlIGRhdGEgZnJvbSB1c2luZyBkaXJlY3RpdmVzLiAgSXQKICAgICBz YXlzIHRoYXQgbmFtZXMgZnJvbSBuYW1lc3BhY2UgSU1QT1JUX1NSQyBzaG91bGQgYmUgdmlzaWJs ZSB3aXRoaW4KQEAgLTIwMDIsMTMgKzIxNzAsOSBAQCBpbmRleCBhNjI5OTU1Li4yYWZkYjQ4IDEw MDY0NAogKyAgaW50IGxpbmVfbnVtYmVyOwogKwogICAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV4 dDsKLSsKLSsgIC8qIFVzZWQgZHVyaW5nIGltcG9ydCBzZWFyY2ggdG8gdGVtcG9yYXJseSBtYXJr IHRoaXMgbm9kZSBhcyBzZWFyY2VkLiAgKi8KLSsgIGludCBzZWFyY2hlZDsKLSB9OwogIAotIAot QEAgLTU0LDYgKzcyLDcgQEAgc3RydWN0IHVzaW5nX2RpcmVjdAorICAgLyogVXNlZCBkdXJpbmcg aW1wb3J0IHNlYXJjaCB0byB0ZW1wb3JhcmlseSBtYXJrIHRoaXMgbm9kZSBhcyBzZWFyY2hlZC4g ICovCitAQCAtNTcsNiArNzIsNyBAQCBzdHJ1Y3QgdXNpbmdfZGlyZWN0CiAgCiAgZXh0ZXJuIGNo YXIgKmNwX2Nhbm9uaWNhbGl6ZV9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cmluZyk7CiAgCkBAIC0y MDE2LDcgKzIxODAsNyBAQCBpbmRleCBhNjI5OTU1Li4yYWZkYjQ4IDEwMDY0NAogIGV4dGVybiBj aGFyICpjcF9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGNvbnN0IGNoYXIgKnBoeXNuYW1lKTsK ICAKICBleHRlcm4gY2hhciAqbWV0aG9kX25hbWVfZnJvbV9waHlzbmFtZSAoY29uc3QgY2hhciAq cGh5c25hbWUpOwotQEAgLTc5LDEwICs5OCwxNiBAQCBleHRlcm4gaW50IGNwX3ZhbGlkYXRlX29w ZXJhdG9yIChjb25zdCBjaGFyICppbnB1dCk7CitAQCAtODIsMTAgKzk4LDE2IEBAIGV4dGVybiBp bnQgY3BfdmFsaWRhdGVfb3BlcmF0b3IgKGNvbnN0IGNoYXIgKmlucHV0KTsKICBleHRlcm4gaW50 IGNwX2lzX2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKTsKICAKICBleHRlcm4gdm9p ZCBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChjb25zdCBjaGFyICpkZXN0LApAQCAtMjAzNCw3ICsy MTk4LDcgQEAgaW5kZXggYTYyOTk1NS4uMmFmZGI0OCAxMDA2NDQKICAJCQkJCSAgc3RydWN0IHVz aW5nX2RpcmVjdCAqbmV4dCk7CiAgCiAgZXh0ZXJuIHZvaWQgY3BfaW5pdGlhbGl6ZV9uYW1lc3Bh Y2UgKHZvaWQpOwotQEAgLTk5LDE1ICsxMjQsMjAgQEAgZXh0ZXJuIHZvaWQgY3Bfc2V0X2Jsb2Nr X3Njb3BlIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsCitAQCAtMTAyLDE2ICsxMjQsMjAg QEAgZXh0ZXJuIHZvaWQgY3Bfc2V0X2Jsb2NrX3Njb3BlIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpz eW1ib2wsCiAgZXh0ZXJuIHZvaWQgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNv bnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCk7CiAgCiAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNw X2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0yMDUzLDcgKzIy MTcsOCBAQCBpbmRleCBhNjI5OTU1Li4yYWZkYjQ4IDEwMDY0NAogLQkJCQkJCSAgY29uc3QgY2hh ciAqbmFtZSwKIC0JCQkJCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKIC0JCQkJCQkgIGNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0tCQkJCQkJICBjb25zdCBkb21haW5fZW51bSBkb21h aW4pOworLQkJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAorLQkJCQkJCSAgY29uc3Qg aW50IHNlYXJjaF9wYXJlbnRzKTsKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAog KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKTsKQEAgLTIwNzMsMTAgKzIyMzgsMTAgQEAgaW5kZXggNmVmNjc2 Ny4uNWY0ODI1YyAxMDA2NDQKICAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzLCAvKiBzeW1fb2Zm c2V0czogcGFyc2UgdXNlcidzIG9mZnNldHMgdG8KICAJCQkgICAgICBpbnRlcm5hbCBmb3JtICov CiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8K LWluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CitpbmRleCBmYzExNjA5Li4yZmJkYjhjIDEw MDY0NAogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwotQEAgLTExNTksNiArMTE1OSwxNiBAQCBmb3IgcmVtb3RlIGRlYnVnZ2luZy4KK0BAIC0xMTU3 LDYgKzExNTcsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCiAgUnVuIHVzaW5nIEB2YXJ7ZGV2 aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KICBAYyBG SVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUu CiAgCkBAIC0yMDkzLDcgKzIyNTgsNyBAQCBpbmRleCBkNzE2ZDBkLi4zNWRjMTg1IDEwMDY0NAog IEBjIHJlc29sdmUgdGhlIHNpdHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1 aQogIEBjaW5kZXggQGNvZGV7LS10dWl9Ci1AQCAtMTkxNDUsNyArMTkxNTUsNyBAQCBjb21tYW5k OgorQEAgLTE5MjA2LDcgKzE5MjE2LDcgQEAgdXNpbmcgdGhlIEBjb2Rle3NjcmlwdC1leHRlbnNp b259IHNldHRpbmcuCiAgQHRhYmxlIEBjb2RlCiAgQGtpbmRleCBzb3VyY2UKICBAY2luZGV4IGV4 ZWN1dGUgY29tbWFuZHMgZnJvbSBhIGZpbGUKQEAgLTIxMDIsNyArMjI2Nyw3IEBAIGluZGV4IGQ3 MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgRXhlY3V0ZSB0aGUgY29tbWFuZCBmaWxlIEB2YXJ7Zmls ZW5hbWV9LgogIEBlbmQgdGFibGUKICAKLUBAIC0xOTQyOCw4ICsxOTQzOCw2IEBAIGNvbnRhaW5p bmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgorQEAgLTE5NDg0LDggKzE5NDk0LDYgQEAgY29u dGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CiAgCiAgQHNtYWxsZXhhbXBsZQogIChA dmFsdWV7R0RCUH0pIHB5dGhvbgpAQCAtMjExMSw3ICsyMjc2LDcgQEAgaW5kZXggZDcxNmQwZC4u MzVkYzE4NSAxMDA2NDQKICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0xOTQ0Miw2ICsxOTQ1 MCwxNCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5n IEBjb2Rle21haW50IHNldAorQEAgLTE5NDk4LDYgKzE5NTA2LDE0IEBAIGluIGEgUHl0aG9uIHNj cmlwdC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcgQGNvZGV7bWFpbnQgc2V0CiAgcHl0 aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7b259LCB0aGUgZGVmYXVsdCwgdGhlbiBQeXRob24g c3RhY2sKICBwcmludGluZyBpcyBlbmFibGVkOyBpZiBAY29kZXtvZmZ9LCB0aGVuIFB5dGhvbiBz dGFjayBwcmludGluZyBpcwogIGRpc2FibGVkLgpAQCAtMjEyNSw4ICsyMjkwLDggQEAgaW5kZXgg ZDcxNmQwZC4uMzVkYzE4NSAxMDA2NDQKICthdXRvLWxvYWRpbmcgaXMgZGlzYWJsZWQuCiAgQGVu ZCB0YWJsZQogIAotIEBub2RlIFB5dGhvbiBBUEkKLUBAIC0xOTQ0OSw2ICsxOTQ2NSwxNCBAQCBk aXNhYmxlZC4KKyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQeXRob24gc2NyaXB0 IGZyb20gdGhlIEB2YWx1ZXtHREJOfQorQEAgLTE5NTE5LDYgKzE5NTM1LDE0IEBAIGFuZCB0aHVz IGlzIGFsd2F5cyBhdmFpbGFibGUuCiAgQGNpbmRleCBweXRob24gYXBpCiAgQGNpbmRleCBwcm9n cmFtbWluZyBpbiBweXRob24KICAKQEAgLTIxNDEsNyArMjMwNiw3IEBAIGluZGV4IGQ3MTZkMGQu LjM1ZGMxODUgMTAwNjQ0CiAgQGNpbmRleCBweXRob24gc3Rkb3V0CiAgQGNpbmRleCBweXRob24g cGFnaW5hdGlvbgogIEF0IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3Mg QGNvZGV7c3lzLnN0ZG91dH0gYW5kCi1AQCAtMTk0NjEsMTMgKzE5NDg1LDE3IEBAIHNpdHVhdGlv biwgYSBQeXRob24gQGNvZGV7S2V5Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24u CitAQCAtMTk1MzEsMTMgKzE5NTU1LDE3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5 Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKiBCYXNpYyBQeXRob246OiAg ICAgICAgICAgICAgICBCYXNpYyBQeXRob24gRnVuY3Rpb25zLgogICogRXhjZXB0aW9uIEhhbmRs aW5nOjoKICAqIEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9h ZGluZyBQeXRob24gY29kZS4KQEAgLTIxNjAsNyArMjMyNSw3IEBAIGluZGV4IGQ3MTZkMGQuLjM1 ZGMxODUgMTAwNjQ0CiAgKiBGcmFtZXMgSW4gUHl0aG9uOjogICAgICAgICAgICBBY2Vzc2luZyBp bmZlcmlvciBzdGFjayBmcmFtZXMgZnJvbSBQeXRob24uCiAgKiBMYXp5IFN0cmluZ3MgSW4gUHl0 aG9uOjogICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgbGF6eSBzdHJpbmdzLgogIEBlbmQg bWVudQotQEAgLTE5NDk1LDYgKzE5NTIzLDEyIEBAIGNvbW1hbmQgYXMgaGF2aW5nIG9yaWdpbmF0 ZWQgZnJvbSB0aGUgdXNlciBpbnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5LgorQEAgLTE5NTY1LDYg KzE5NTkzLDEyIEBAIGNvbW1hbmQgYXMgaGF2aW5nIG9yaWdpbmF0ZWQgZnJvbSB0aGUgdXNlciBp bnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5LgogIEl0IG11c3QgYmUgYSBib29sZWFuIHZhbHVlLiAg SWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gQGNvZGV7RmFsc2V9LgogIEBlbmQgZGVmdW4KICAK QEAgLTIxNzMsNyArMjMzOCw3IEBAIGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgQGZp bmRleCBnZGIucGFyYW1ldGVyCiAgQGRlZnVuIHBhcmFtZXRlciBwYXJhbWV0ZXIKICBSZXR1cm4g dGhlIHZhbHVlIG9mIGEgQHZhbHVle0dEQk59IHBhcmFtZXRlci4gIEB2YXJ7cGFyYW1ldGVyfSBp cyBhCi1AQCAtMTk1MTEsNiArMTk1NDUsNyBAQCBhIFB5dGhvbiB2YWx1ZSBvZiB0aGUgYXBwcm9w cmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgorQEAgLTE5NTgxLDYgKzE5NjE1LDcgQEAgYSBQeXRo b24gdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUsIGFuZCByZXR1cm5lZC4KICBAZGVmdW4g aGlzdG9yeSBudW1iZXIKICBSZXR1cm4gYSB2YWx1ZSBmcm9tIEB2YWx1ZXtHREJOfSdzIHZhbHVl IGhpc3RvcnkgKEBweHJlZntWYWx1ZQogIEhpc3Rvcnl9KS4gIEB2YXJ7bnVtYmVyfSBpbmRpY2F0 ZXMgd2hpY2ggaGlzdG9yeSBlbGVtZW50IHRvIHJldHVybi4KQEAgLTIxODEsNyArMjM0Niw3IEBA IGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgSWYgQHZhcntudW1iZXJ9IGlzIG5lZ2F0 aXZlLCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHRha2UgaXRzIGFic29sdXRlIHZhbHVlCiAgYW5k IGNvdW50IGJhY2t3YXJkIGZyb20gdGhlIGxhc3QgZWxlbWVudCAoaS5lLiwgdGhlIG1vc3QgcmVj ZW50IGVsZW1lbnQpIHRvCiAgZmluZCB0aGUgdmFsdWUgdG8gcmV0dXJuLiAgSWYgQHZhcntudW1i ZXJ9IGlzIHplcm8sIHRoZW4gQHZhbHVle0dEQk59IHdpbGwKLUBAIC0xOTUzNSw2ICsxOTU3MCwy MSBAQCBjb21wdXRlIHZhbHVlcywgZm9yIGV4YW1wbGUsIGl0IGlzIHRoZSBvbmx5IHdheSB0byBn ZXQgdGhlIHZhbHVlIG9mIGEKK0BAIC0xOTYwNSw2ICsxOTY0MCwyMSBAQCBjb21wdXRlIHZhbHVl cywgZm9yIGV4YW1wbGUsIGl0IGlzIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIHZhbHVlIG9mIGEK ICBjb252ZW5pZW5jZSB2YXJpYWJsZSAoQHB4cmVme0NvbnZlbmllbmNlIFZhcnN9KSBhcyBhIEBj b2Rle2dkYi5WYWx1ZX0uCiAgQGVuZCBkZWZ1bgogIApAQCAtMjIwMyw3ICsyMzY4LDcgQEAgaW5k ZXggZDcxNmQwZC4uMzVkYzE4NSAxMDA2NDQKICBAZmluZGV4IGdkYi53cml0ZQogIEBkZWZ1biB3 cml0ZSBzdHJpbmcKICBQcmludCBhIHN0cmluZyB0byBAdmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQg c3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4KLUBAIC0xOTU0OSw2ICsxOTU5OSwxMSBAQCBGbHVzaCBA dmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4gIEZsdXNoaW5n CitAQCAtMTk2MTksNiArMTk2NjksMTEgQEAgRmx1c2ggQHZhbHVle0dEQk59J3MgcGFnaW5hdGVk IHN0YW5kYXJkIG91dHB1dCBzdHJlYW0uICBGbHVzaGluZwogIGZ1bmN0aW9uLgogIEBlbmQgZGVm dW4KICAKQEAgLTIyMTUsNyArMjM4MCw3IEBAIGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0 CiAgQG5vZGUgRXhjZXB0aW9uIEhhbmRsaW5nCiAgQHN1YnN1YnNlY3Rpb24gRXhjZXB0aW9uIEhh bmRsaW5nCiAgQGNpbmRleCBweXRob24gZXhjZXB0aW9ucwotQEAgLTE5Nzg3LDYgKzE5ODQyLDkg QEAgbW9kdWxlOgorQEAgLTE5ODU3LDYgKzE5OTEyLDkgQEAgbW9kdWxlOgogIFRoaXMgZnVuY3Rp b24gbG9va3MgdXAgYSB0eXBlIGJ5IG5hbWUuICBAdmFye25hbWV9IGlzIHRoZSBuYW1lIG9mIHRo ZQogIHR5cGUgdG8gbG9vayB1cC4gIEl0IG11c3QgYmUgYSBzdHJpbmcuCiAgCkBAIC0yMjI1LDcg KzIzOTAsNyBAQCBpbmRleCBkNzE2ZDBkLi4zNWRjMTg1IDEwMDY0NAogIE9yZGluYXJpbHksIHRo aXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgQGNvZGV7Z2RiLlR5cGV9Lgog IElmIHRoZSBuYW1lZCB0eXBlIGNhbm5vdCBiZSBmb3VuZCwgaXQgd2lsbCB0aHJvdyBhbiBleGNl cHRpb24uCiAgQGVuZCBkZWZ1bgotQEAgLTE5OTA5LDcgKzE5OTY3LDcgQEAgSWYgdGhlIHR5cGUg ZG9lcyBub3QgaGF2ZSBhIHRhcmdldCwgdGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBhbgorQEAgLTE5 OTc5LDcgKzIwMDM3LDcgQEAgSWYgdGhlIHR5cGUgZG9lcyBub3QgaGF2ZSBhIHRhcmdldCwgdGhp cyBtZXRob2Qgd2lsbCB0aHJvdyBhbgogIGV4Y2VwdGlvbi4KICBAZW5kIGRlZm1ldGhvZAogIApA QCAtMjIzNCw3ICsyMzk5LDcgQEAgaW5kZXggZDcxNmQwZC4uMzVkYzE4NSAxMDA2NDQKICBJZiB0 aGlzIEBjb2Rle2dkYi5UeXBlfSBpcyBhbiBpbnN0YW50aWF0aW9uIG9mIGEgdGVtcGxhdGUsIHRo aXMgd2lsbAogIHJldHVybiBhIG5ldyBAY29kZXtnZGIuVHlwZX0gd2hpY2ggcmVwcmVzZW50cyB0 aGUgdHlwZSBvZiB0aGUKICBAdmFye259dGggdGVtcGxhdGUgYXJndW1lbnQuCi1AQCAtMTk5MTcs NyArMTk5NzUsOCBAQCByZXR1cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2Vu dHMgdGhlIHR5cGUgb2YgdGhlCitAQCAtMTk5ODcsNyArMjAwNDUsOCBAQCByZXR1cm4gYSBuZXcg QGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgdGhlCiAgSWYgdGhp cyBAY29kZXtnZGIuVHlwZX0gaXMgbm90IGEgdGVtcGxhdGUgdHlwZSwgdGhpcyB3aWxsIHRocm93 IGFuCiAgZXhjZXB0aW9uLiAgT3JkaW5hcmlseSwgb25seSBDQHR7Kyt9IGNvZGUgd2lsbCBoYXZl IHRlbXBsYXRlIHR5cGVzLgogIApAQCAtMjI0NCw3ICsyNDA5LDcgQEAgaW5kZXggZDcxNmQwZC4u MzVkYzE4NSAxMDA2NDQKICBAZW5kIGRlZm1ldGhvZAogIEBlbmQgdGFibGUKICAKLUBAIC0yMDI3 MSw2ICsyMDMzMCwxMjEgQEAgaW1wb3J0IGdkYi5saWJzdGRjeHgudjYKK0BAIC0yMDM0MSw2ICsy MDQwMCwxMjEgQEAgaW1wb3J0IGdkYi5saWJzdGRjeHgudjYKICBnZGIubGlic3RkY3h4LnY2LnJl Z2lzdGVyX3ByaW50ZXJzIChnZGIuY3VycmVudF9vYmpmaWxlICgpKQogIEBlbmQgc21hbGxleGFt cGxlCiAgCkBAIC0yMzY2LDcgKzI1MzEsNyBAQCBpbmRleCBkNzE2ZDBkLi4zNWRjMTg1IDEwMDY0 NAogIEBub2RlIENvbW1hbmRzIEluIFB5dGhvbgogIEBzdWJzdWJzZWN0aW9uIENvbW1hbmRzIElu IFB5dGhvbgogIAotQEAgLTIwNTIzLDYgKzIwNjk3LDEzNSBAQCByZWdpc3RyYXRpb24gb2YgdGhl IGNvbW1hbmQgd2l0aCBAdmFsdWV7R0RCTn0uICBEZXBlbmRpbmcgb24gaG93IHRoZQorQEAgLTIw NTkzLDYgKzIwNzY3LDEzNSBAQCByZWdpc3RyYXRpb24gb2YgdGhlIGNvbW1hbmQgd2l0aCBAdmFs dWV7R0RCTn0uICBEZXBlbmRpbmcgb24gaG93IHRoZQogIFB5dGhvbiBjb2RlIGlzIHJlYWQgaW50 byBAdmFsdWV7R0RCTn0sIHlvdSBtYXkgbmVlZCB0byBpbXBvcnQgdGhlCiAgQGNvZGV7Z2RifSBt b2R1bGUgZXhwbGljaXRseS4KICAKQEAgLTI1MDIsNyArMjY2Nyw3IEBAIGluZGV4IGQ3MTZkMGQu LjM1ZGMxODUgMTAwNjQ0CiAgQG5vZGUgRnVuY3Rpb25zIEluIFB5dGhvbgogIEBzdWJzdWJzZWN0 aW9uIFdyaXRpbmcgbmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9ucwogIAotQEAgLTIwNjI3LDYgKzIw OTMwLDgyIEBAIHdoaWNoIGlzIHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZS4gIEB4cmVme1ByZXR0 eSBQcmludGluZ30sIGZvciBtb3JlCitAQCAtMjA2OTcsNiArMjEwMDAsODIgQEAgd2hpY2ggaXMg dXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nfSwgZm9yIG1v cmUKICBpbmZvcm1hdGlvbi4KICBAZW5kIGRlZml2YXIKICAKQEAgLTI1ODUsNyArMjc1MCw3IEBA IGluZGV4IGQ3MTZkMGQuLjM1ZGMxODUgMTAwNjQ0CiAgQG5vZGUgRnJhbWVzIEluIFB5dGhvbgog IEBzdWJzdWJzZWN0aW9uIEFjZXNzaW5nIGluZmVyaW9yIHN0YWNrIGZyYW1lcyBmcm9tIFB5dGhv bi4KICAKLUBAIC0yMDY5MSw2ICsyMTA3MCwxNCBAQCBmdW5jdGlvbiB0byBhIHN0cmluZy4KK0BA IC0yMDc2MSw2ICsyMTE0MCwxNCBAQCBmdW5jdGlvbiB0byBhIHN0cmluZy4KICBSZXR1cm5zIHRo ZSBmcmFtZSdzIHJlc3VtZSBhZGRyZXNzLgogIEBlbmQgZGVmbWV0aG9kCiAgCkBAIC0yNjAwLDcg KzI3NjUsNyBAQCBpbmRleCBkNzE2ZDBkLi4zNWRjMTg1IDEwMDY0NAogIEBkZWZtZXRob2QgRnJh bWUgb2xkZXIKICBSZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMgZnJhbWUuCiAgQGVu ZCBkZWZtZXRob2QKLUBAIC0yMDY5OSwxMCArMjEwODYsMTggQEAgUmV0dXJuIHRoZSBmcmFtZSB0 aGF0IGNhbGxlZCB0aGlzIGZyYW1lLgorQEAgLTIwNzY5LDEwICsyMTE1NiwxOCBAQCBSZXR1cm4g dGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMgZnJhbWUuCiAgUmV0dXJuIHRoZSBmcmFtZSBjYWxs ZWQgYnkgdGhpcyBmcmFtZS4KICBAZW5kIGRlZm1ldGhvZAogIApAQCAtMzE0NSw3ICszMzEwLDcg QEAgaW5kZXggZmEwYmQxMS4uZmRlYTJiNCAxMDA2NDQKICAKICAjZW5kaWYgLyogZHdhcmYybG9j LmggKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwot aW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKK2luZGV4IDJmNjcxY2EuLmJmNTJkNGYgMTAw NjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCiBAQCAt NDgsNiArNDgsMTEgQEAKQEAgLTM3NjMsNyArMzkyOCw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5Zjcy OWIgMTAwNjQ0CiAgICAgIHsKICAgICAgY2FzZSBEV19UQUdfbmFtZXNwYWNlOgogICAgICBjYXNl IERXX1RBR190eXBlZGVmOgotQEAgLTI2MjMsNyArMjg2OCwyMyBAQCBwZGlfbmVlZHNfbmFtZXNw YWNlIChlbnVtIGR3YXJmX3RhZyB0YWcpCitAQCAtMjYyMyw3ICsyODY4LDMwIEBAIHBkaV9uZWVk c19uYW1lc3BhY2UgKGVudW0gZHdhcmZfdGFnIHRhZykKICAgICAgY2FzZSBEV19UQUdfdW5pb25f dHlwZToKICAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKICAgICAgY2FzZSBEV19U QUdfZW51bWVyYXRvcjoKQEAgLTM3ODAsNiArMzk0NSwxMyBAQCBpbmRleCAxNWVmM2U5Li45OWY3 MjliIDEwMDY0NAogKwlhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZXh0ZXJuYWwsIGN1 KTsKICsJaWYgKGF0dHIgPT0gTlVMTCAmJiBkaWUtPnBhcmVudC0+dGFnICE9IERXX1RBR19uYW1l c3BhY2UpCiArCSAgcmV0dXJuIDA7CisrCS8qIEEgdmFyaWFibGUgaW4gYSBsZXhpY2FsIGJsb2Nr IG9mIHNvbWUga2luZCBkb2VzIG5vdCBuZWVkIGEKKysJICAgbmFtZXNwYWNlLCBldmVuIHRob3Vn aCBpbiBDKysgc3VjaCB2YXJpYWJsZXMgbWF5IGJlCisrCSAgIGV4dGVybmFsIGFuZCBoYXZlIGEg bWFuZ2xlZCBuYW1lLiAgKi8KKysJaWYgKGRpZS0+cGFyZW50LT50YWcgPT0gIERXX1RBR19sZXhp Y2FsX2Jsb2NrCisrCSAgICB8fCBkaWUtPnBhcmVudC0+dGFnID09ICBEV19UQUdfdHJ5X2Jsb2Nr CisrCSAgICB8fCBkaWUtPnBhcmVudC0+dGFnID09ICBEV19UQUdfY2F0Y2hfYmxvY2spCisrCSAg cmV0dXJuIDA7CiArCXJldHVybiAxOwogKyAgICAgIH0KICsgICAgICBicmVhazsKQEAgLTM3ODcs NyArMzk1OSw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgICAgIGRlZmF1bHQ6 CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KLUBAIC0yNjU2LDEyICsyOTE3LDEyIEBAIHN0YXRp YyB2b2lkCitAQCAtMjY1NiwxMiArMjkyNCwxMiBAQCBzdGF0aWMgdm9pZAogIGFkZF9wYXJ0aWFs X21vZHVsZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgQ09SRV9BRERSICpsb3dwYywK ICAJCSAgICBDT1JFX0FERFIgKmhpZ2hwYywgaW50IG5lZWRfcGMsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogIHsKQEAgLTM4MDQsNyArMzk3Niw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAw NjQ0CiAgfQogIAogIC8qIFJlYWQgYSBwYXJ0aWFsIGRpZSBjb3JyZXNwb25kaW5nIHRvIGEgc3Vi cHJvZ3JhbSBhbmQgY3JlYXRlIGEgcGFydGlhbAotQEAgLTI3NTIsMjcgKzMwMTMsNiBAQCBndWVz c19zdHJ1Y3R1cmVfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnN0cnVjdF9wZGksCitA QCAtMjc1MiwyNyArMzAyMCw2IEBAIGd1ZXNzX3N0cnVjdHVyZV9uYW1lIChzdHJ1Y3QgcGFydGlh bF9kaWVfaW5mbyAqc3RydWN0X3BkaSwKICAKICAgICAgICBpZiAocmVhbF9wZGktPmRpZV9wYXJl bnQgIT0gTlVMTCkKICAJcmV0dXJuOwpAQCAtMzgzMiw3ICs0MDA0LDcgQEAgaW5kZXggMTVlZjNl OS4uOTlmNzI5YiAxMDA2NDQKICAgICAgfQogIH0KICAKLUBAIC0zMzI1LDYgKzM1NjUsMTQgQEAg cHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC0zMzI1LDYgKzM1NzIsMTQgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgY2FzZSBEV19UQUdfaW1wb3J0ZWRfZGVjbGFy YXRpb246CiAgICAgIGNhc2UgRFdfVEFHX2ltcG9ydGVkX21vZHVsZToKICAgICAgICBwcm9jZXNz aW5nX2hhc19uYW1lc3BhY2VfaW5mbyA9IDE7CkBAIC0zODQ3LDcgKzQwMTksNyBAQCBpbmRleCAx NWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAgICAgIGlmIChkaWUtPmNoaWxkICE9IE5VTEwgJiYg KGRpZS0+dGFnID09IERXX1RBR19pbXBvcnRlZF9kZWNsYXJhdGlvbgogIAkJCQkgfHwgY3UtPmxh bmd1YWdlICE9IGxhbmd1YWdlX2ZvcnRyYW4pKQogIAljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsIF8oIlRhZyAnJXMnIGhhcyB1bmV4cGVjdGVkIGNoaWxkcmVuIiksCi1AQCAtMzM0MCw0 MSArMzU4OCw3MSBAQCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorQEAgLTMzNDAsNDEgKzM1OTUsNzEgQEAgcHJvY2Vzc19kaWUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAvKiBSZXR1cm4gdGhlIGZ1 bGx5IHF1YWxpZmllZCBuYW1lIG9mIERJRSwgYmFzZWQgb24gaXRzIERXX0FUX25hbWUuCiAgICAg SWYgc2NvcGUgcXVhbGlmaWVycyBhcmUgYXBwcm9wcmlhdGUgdGhleSB3aWxsIGJlIGFkZGVkLiAg VGhlIHJlc3VsdAogICAgIHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlX29ic3RhY2ss IG9yIE5VTEwgaWYgdGhlIERJRSBkb2VzCkBAIC0zOTQwLDcgKzQxMTIsNyBAQCBpbmRleCAxNWVm M2U5Li45OWY3MjliIDEwMDY0NAogIC8qIFJlYWQgdGhlIGltcG9ydCBzdGF0ZW1lbnQgc3BlY2lm aWVkIGJ5IHRoZSBnaXZlbiBkaWUgYW5kIHJlY29yZCBpdC4gICovCiAgCiAgc3RhdGljIHZvaWQK LUBAIC0zMzg1LDkgKzM2NjMsMTUgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzM4NSw5ICszNjcwLDE1IEBA IHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQogICAgc3RydWN0IGR3YXJmMl9jdSAqaW1wb3J0ZWRfY3U7CiAgICBjb25zdCBj aGFyICppbXBvcnRlZF9uYW1lOwogICAgY29uc3QgY2hhciAqaW1wb3J0ZWRfbmFtZV9wcmVmaXg7 CkBAIC0zOTU4LDcgKzQxMzAsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAg aW1wb3J0X2F0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9pbXBvcnQsIGN1KTsKICAgIGlm IChpbXBvcnRfYXR0ciA9PSBOVUxMKQogICAgICB7Ci1AQCAtMzQzNiwxNyArMzcyMCwyNyBAQCBy ZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC0zNDM2LDE3ICszNzI3LDI3IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIHJldHVy bjsKICAgICAgfQogIApAQCAtMzk5Myw3ICs0MTY1LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5 YiAxMDA2NDQKICAgICAgICBjYW5vbmljYWxfbmFtZSA9IGFsbG9jYSAoc3RybGVuIChpbXBvcnRl ZF9uYW1lX3ByZWZpeCkgKyAyICsgc3RybGVuIChpbXBvcnRlZF9uYW1lKSArIDEpOwogICAgICAg IHN0cmNweSAoY2Fub25pY2FsX25hbWUsIGltcG9ydGVkX25hbWVfcHJlZml4KTsKICAgICAgICBz dHJjYXQgKGNhbm9uaWNhbF9uYW1lLCAiOjoiKTsKLUBAIC0zNDU3LDggKzM3NTEsMTQgQEAgcmVh ZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCitAQCAtMzQ1Nyw4ICszNzU4LDE0IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIGNhbm9uaWNh bF9uYW1lID0gYWxsb2NhIChzdHJsZW4gKGltcG9ydGVkX25hbWUpICsgMSk7CiAgICAgICAgc3Ry Y3B5IChjYW5vbmljYWxfbmFtZSwgaW1wb3J0ZWRfbmFtZSk7CiAgICAgIH0KQEAgLTQwMTAsNyAr NDE4Miw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgfQogIAogIHN0YXRpYyB2 b2lkCi1AQCAtMzcyNyw2ICs0MDI3LDE0IEBAIGluaGVyaXRfYWJzdHJhY3RfZGllcyAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM3MjcsNiArNDAzNCwx NCBAQCBpbmhlcml0X2Fic3RyYWN0X2RpZXMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CiAgCiAgICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luLCBjdSk7CkBAIC00MDI1LDcg KzQxOTcsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAgaWYgKCFhdHRyKQog ICAgICByZXR1cm47CiAgCi1AQCAtMzgyNSw2ICs0MTMzLDcgQEAgcmVhZF9mdW5jX3Njb3BlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzgyNSw2ICs0 MTQwLDcgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCiAgICBjaGFyICpuYW1lOwogICAgQ09SRV9BRERSIGJhc2VhZGRyOwogICAg c3RydWN0IGJsb2NrICpibG9jazsKQEAgLTQwMzMsNyArNDIwNSw3IEBAIGluZGV4IDE1ZWYzZTku Ljk5ZjcyOWIgMTAwNjQ0CiAgICBpbnQgaW5saW5lZF9mdW5jID0gKGRpZS0+dGFnID09IERXX1RB R19pbmxpbmVkX3N1YnJvdXRpbmUpOwogIAogICAgaWYgKGlubGluZWRfZnVuYykKLUBAIC0zODQz LDEzICs0MTUyLDIzIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM4NDMsMTMgKzQxNTksMjMgQEAgcmVhZF9mdW5jX3Nj b3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBi YXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RF WFQgKG9iamZpbGUpKTsKICAKQEAgLTQwNjAsNyArNDIzMiw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5 ZjcyOWIgMTAwNjQ0CiAgICBsb3dwYyArPSBiYXNlYWRkcjsKICAgIGhpZ2hwYyArPSBiYXNlYWRk cjsKICAKLUBAIC0zODc2LDE0ICs0MTk1LDE5IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM4NzYsMTQgKzQyMDIsMTkg QEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCiAgCiAgICBjdS0+bGlzdF9pbl9zY29wZSA9ICZsb2NhbF9zeW1ib2xzOwogIApAQCAt NDA4Nyw3ICs0MjU5LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgICAgfQog IAogICAgaW5oZXJpdF9hYnN0cmFjdF9kaWVzIChkaWUsIGN1KTsKLUBAIC0zODk5LDYgKzQyMjMs MTMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCitAQCAtMzg5OSw2ICs0MjMwLDEzIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJCWRldGVybWluZV9wcmVm aXggKGRpZSwgY3UpLAogIAkJCXByb2Nlc3NpbmdfaGFzX25hbWVzcGFjZV9pbmZvKTsKICAKQEAg LTQxMDEsMTYgKzQyNzMsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAgLyog SWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywgcmVjb3JkIHRoZW0uICAqLwogICAgZHdhcmYyX3Jl Y29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxvY2ssIGJhc2VhZGRyLCBjdSk7CiAgICAKLUBAIC0z OTUyLDcgKzQyODMsNyBAQCByZWFkX2xleGljYWxfYmxvY2tfc2NvcGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgfQotICAgbmV3ID0gcG9wX2NvbnRl eHQgKCk7Ci0gCi0tICBpZiAobG9jYWxfc3ltYm9scyAhPSBOVUxMKQotKyAgaWYgKGxvY2FsX3N5 bWJvbHMgIT0gTlVMTCB8fCB1c2luZ19kaXJlY3RpdmVzICE9IE5VTEwpCi0gICAgIHsKLSAgICAg ICBzdHJ1Y3QgYmxvY2sgKmJsb2NrCi0gICAgICAgICA9IGZpbmlzaF9ibG9jayAoMCwgJmxvY2Fs X3N5bWJvbHMsIG5ldy0+b2xkX2Jsb2NrcywgbmV3LT5zdGFydF9hZGRyLAotQEAgLTQ1MTcsNyAr NDg0OCw3IEBAIGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVj dCBkaWVfaW5mbyAqZGllLAorQEAgLTQ1MTcsNyArNDg1NSw3IEBAIGR3YXJmMl9hZGRfZmllbGQg KHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIAlyZXR1cm47 CiAgCiAgICAgICAgLyogR2V0IHBoeXNpY2FsIG5hbWUuICAqLwpAQCAtNDExOSw3ICs0MjgyLDcg QEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAKICAgICAgICAvKiBUaGUgbmFtZSBp cyBhbHJlYWR5IGFsbG9jYXRlZCBhbG9uZyB3aXRoIHRoaXMgb2JqZmlsZSwgc28gd2UgZG9uJ3QK ICAJIG5lZWQgdG8gZHVwbGljYXRlIGl0IGZvciB0aGUgdHlwZS4gICovCi1AQCAtNDY3OSw3ICs1 MDEwLDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0 cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTQ2NzksNyArNTAxNyw3IEBAIGR3YXJmMl9hZGRfbWVt YmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAg ICAgcmV0dXJuOwogIAogICAgLyogR2V0IHRoZSBtYW5nbGVkIG5hbWUuICAqLwpAQCAtNDEyOCw3 ICs0MjkxLDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAKICAgIC8qIExvb2sg dXAgbWVtYmVyIGZ1bmN0aW9uIG5hbWUgaW4gZmllbGRsaXN0LiAgKi8KICAgIGZvciAoaSA9IDA7 IGkgPCBmaXAtPm5mbmZpZWxkczsgaSsrKQotQEAgLTUwMTAsMTQgKzUzNDEsMTggQEAgcmVhZF9z dHJ1Y3R1cmVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorQEAgLTQ5ODYsMTQgKzUzMjQsMTggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIGlmIChjdS0+bGFuZ3Vh Z2UgPT0gbGFuZ3VhZ2VfY3BsdXMKICAJICB8fCBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2 YSkKICAJewpAQCAtNDE1MCw3ICs0MzEzLDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2 NDQKICAJfQogICAgICB9CiAgCi1AQCAtNTI1OCw1MSArNTU5Myw2IEBAIHJlYWRfZW51bWVyYXRp b25fdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAg LTUyMzYsNTEgKzU1NzgsNiBAQCByZWFkX2VudW1lcmF0aW9uX3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHJldHVybiBzZXRfZGllX3R5cGUgKGRp ZSwgdHlwZSwgY3UpOwogIH0KICAKQEAgLTQyMDIsNyArNDM2NSw3IEBAIGluZGV4IDE1ZWYzZTku Ljk5ZjcyOWIgMTAwNjQ0CiAgLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgZGllIHdoaWNoIGJlZ2lu cyBhbiBlbnVtZXJhdGlvbiwgcHJvY2VzcyBhbGwKICAgICB0aGUgZGllcyB0aGF0IGRlZmluZSB0 aGUgbWVtYmVycyBvZiB0aGUgZW51bWVyYXRpb24sIGFuZCBjcmVhdGUgdGhlCiAgICAgc3ltYm9s IGZvciB0aGUgZW51bWVyYXRpb24gdHlwZS4KLUBAIC01MzgwLDYgKzU2NzAsMjkgQEAgcHJvY2Vz c19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorQEAgLTUzNTgsNiArNTY1NSwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3Bl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBuZXdfc3lt Ym9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwogIH0KICAKQEAgLTQyMzIsNyArNDM5NSw3IEBAIGlu ZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24g ZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCiAgICAgdGhlIERJRSdz IHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwK ICAgICBhcnJheXMuICAqLwotQEAgLTUzOTMsNyArNTcwNiw3IEBAIHJlYWRfYXJyYXlfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTUzNzEsNyAr NTY5MSw3IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUs ICppbmRleF90eXBlOwogICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CiAgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNDI0MSw3ICs0NDA0LDcgQEAgaW5kZXggMTVlZjNl OS4uOTlmNzI5YiAxMDA2NDQKICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogICAgY2hhciAq bmFtZTsKICAKLUBAIC01NDQwLDE2ICs1NzUzLDExIEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU0MTgsMTYgKzU3Mzgs MTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgICB0eXBlID0gZWxlbWVudF90eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlf b3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCkBAIC00MjYzLDcgKzQ0MjYsNyBA QCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIAogICAgLyogVW5kZXJzdGFuZCBEd2Fy ZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KICAgICAgIHRo ZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0 byB0aGUKLUBAIC01NjM4LDcgKzU5NDYsNyBAQCByZWFkX25hbWVzcGFjZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU2MTYsNyArNTkzMSw3IEBAIHJl YWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CiAgICAgICAgaWYgKGlzX2Fub255bW91cykKICAJewogIAkgIGNvbnN0IGNoYXIgKnByZXZpb3Vz X3ByZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOwpAQCAtNDI3Miw3ICs0NDM1LDcg QEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAJfQogICAgICB9CiAgCi1AQCAtNTY1 NCwyMCArNTk2MiwxNTUgQEAgcmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NjMyLDIwICs1OTQ3LDE1NSBAQCByZWFkX25hbWVz cGFjZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICB9 CiAgfQogIApAQCAtNDI4NSwxMyArNDQ0OCwxNCBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEw MDY0NAogIHsKIC0gIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllID0gZGllLT5jaGlsZDsKICsg IHN0cnVjdCB0eXBlICp0eXBlOwotKworIAorLSAgLyogRklYTUU6IFN1cHBvcnQgdGhlIHNlcGFy YXRlIEZvcnRyYW4gbW9kdWxlIG5hbWVzcGFjZXMuICAqLwogKyAgdHlwZSA9IHJlYWRfbW9kdWxl X3R5cGUgKGRpZSwgY3UpOwogKwogKyAgaWYgKHR5cGUpCiArICAgIG5ld19zeW1ib2wgKGRpZSwg dHlwZSwgY3UpOwogK30KLSsKKyAKICsvKiBSZWFkIGEgRm9ydHJhbiBtb2R1bGUgYXMgdHlwZS4K ICsKICsgICBNb2R1bGVzIHByZXNlbnQgb25seSBhcyBkZWNsYXJhdGlvbnMgLSBiZWluZyB1c2Vk IG9ubHkgZm9yIERXX0FUX2ltcG9ydCBvZgpAQCAtNDMyMCwxMCArNDQ4NCw5IEBAIGluZGV4IDE1 ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiArICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NPREVfTU9E VUxFLCAwLCAwLCBtb2R1bGVfbmFtZSwgb2JqZmlsZSk7CiArCiArICAvKiBDcmVhdGUgYSBjb250 ZXh0IGZvciByZWFkaW5nIHRoZSBtb2R1bGUgdmFyaWFibGVzLiAgKi8KLSAKLS0gIC8qIEZJWE1F OiBTdXBwb3J0IHRoZSBzZXBhcmF0ZSBGb3J0cmFuIG1vZHVsZSBuYW1lc3BhY2VzLiAgKi8KKysK ICsgIG5ldyA9IHB1c2hfY29udGV4dCAoMCwgMCk7Ci0gCisrCiArICBzYXZlX2ZpbGVfc3ltYm9s cyA9IGZpbGVfc3ltYm9sczsKICsgIGZpbGVfc3ltYm9scyA9IE5VTEw7CiArICBzYXZlX2dsb2Jh bF9zeW1ib2xzID0gZ2xvYmFsX3N5bWJvbHM7CkBAIC00NDMxLDcgKzQ1OTQsNyBAQCBpbmRleCAx NWVmM2U5Li45OWY3MjliIDEwMDY0NAogIH0KICAKICAvKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhl IG5hbWVzcGFjZSByZXByZXNlbnRlZCBieSBESUUuICBTZXQKLUBAIC01ODMyLDI5ICs2Mjc1LDEx MyBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorQEAgLTU4MTAsMjkgKzYyNjAsMTEzIEBAIHJlYWRfdGFnX3N0cmluZ190 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwogICAgc3Ry dWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlwZTsKICAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC00NTU5LDcgKzQ3MjIsNyBAQCBpbmRleCAxNWVm M2U5Li45OWY3MjliIDEwMDY0NAogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJf dHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9IGNyZWF0ZV9zdHJp bmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBAIC01OTU0LDcgKzY0 ODEsNiBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKgorQEAgLTU5MzIsNyArNjQ2Niw2IEBAIHN0YXRp YyBzdHJ1Y3QgdHlwZSAqCiAgcmVhZF90eXBlZGVmIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiAgewogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+ b2JqZmlsZTsKQEAgLTQ1NjcsNyArNDczMCw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAw NjQ0CiAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKICAgIHN0cnVjdCB0eXBlICp0aGlzX3R5 cGU7CiAgCi1AQCAtNjA2Miw4ICs2NTg4LDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNjA0MCw4ICs2NTczLDcg QEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlOwogICAgc3RydWN0IHR5cGUgKnJh bmdlX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNDU3Nyw3ICs0NzQwLDcg QEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgIGNoYXIgKm5hbWU7CiAgICBMT05H RVNUIG5lZ2F0aXZlX21hc2s7CiAgICAKLUBAIC02MDc3LDQ5ICs2NjAyLDEwMSBAQCByZWFkX3N1 YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC02MDU1LDQ5ICs2NTg3LDEwMSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJCSAgICAgMCwgTlVMTCwgY3UtPm9i amZpbGUpOwogICAgICB9CiAgCkBAIC00NjgyLDggKzQ4NDUsNyBAQCBpbmRleCAxNWVmM2U5Li45 OWY3MjliIDEwMDY0NAogKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAo YXR0cikpCiArCXsKICsJICBMT05HRVNUIGhpZ2g7Ci0gCi0tICByYW5nZV90eXBlID0gY3JlYXRl X3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgbG93LCBoaWdoKTsKKysKICsJICBoaWdoID0g ZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKICsJICBpZiAoIVRZUEVf VU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2ggJiBuZWdhdGl2ZV9tYXNrKSkKICsJICAgIGhp Z2ggfD0gbmVnYXRpdmVfbWFzazsKQEAgLTQ2OTUsNyArNDg1Nyw4IEBAIGluZGV4IDE1ZWYzZTku Ljk5ZjcyOWIgMTAwNjQ0CiArCSAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGxvdyAt IDE7CiArCX0KICsgICAgfQotKworIAorLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBl IChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7CiArICAvKiBEV19BVF9iaXRfc3RyaWRlIGlz IGN1cnJlbnRseSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4gICovCiArICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKICsgIGlmIChhdHRy ICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCkBAIC00NzE1LDcgKzQ4NzgsNyBAQCBpbmRl eCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIAogICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUs IGN1KTsKICAgIGlmIChuYW1lKQotQEAgLTY1NzgsNiArNzE1NSw3IEBAIGxvYWRfcGFydGlhbF9k aWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKK0BA IC02NTU2LDYgKzcxNDAsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0 ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdf VEFHX2xleGljYWxfYmxvY2sKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfdmFyaWFibGUK ICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbmFtZXNwYWNlCkBAIC00NzIzLDcgKzQ4ODYs NyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIAkgICYmIGFiYnJldi0+dGFnICE9 IERXX1RBR19tZW1iZXIpCiAgCXsKICAJICAvKiBPdGhlcndpc2Ugd2Ugc2tpcCB0byB0aGUgbmV4 dCBzaWJsaW5nLCBpZiBhbnkuICAqLwotQEAgLTY3ODYsOCArNzM2NCw4IEBAIHJlYWRfcGFydGlh bF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKK0BAIC02NzY0LDggKzcz NDksOCBAQCByZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFydF9k aWUsCiAgCSAgICB9CiAgCSAgYnJlYWs7CiAgCWNhc2UgRFdfQVRfTUlQU19saW5rYWdlX25hbWU6 CkBAIC00NzM0LDcgKzQ4OTcsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIAlj YXNlIERXX0FUX2xvd19wYzoKICAJICBoYXNfbG93X3BjX2F0dHIgPSAxOwogIAkgIHBhcnRfZGll LT5sb3dwYyA9IERXX0FERFIgKCZhdHRyKTsKLUBAIC02OTg0LDcgKzc1NjIsOCBAQCBmaXh1cF9w YXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAorQEAgLTY5NjIs NyArNzU0Nyw4IEBAIGZpeHVwX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAq cGFydF9kaWUsCiAgICAvKiBJZiB3ZSBmb3VuZCBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUgYW5kIHRo ZSBESUUgaGFzIG5vIG5hbWUsIHRyeQogICAgICAgdG8gZmluZCBhIG5hbWUgaW4gdGhlIHJlZmVy cmVkIHRvIERJRS4gICovCiAgCkBAIC00NzQ0LDcgKzQ5MDcsNyBAQCBpbmRleCAxNWVmM2U5Li45 OWY3MjliIDEwMDY0NAogICAgICB7CiAgICAgICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnNw ZWNfZGllOwogIAotQEAgLTgzMjYsMTAgKzg5MDUsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAo c3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTgzMDQsMTAg Kzg4OTAsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg c3RydWN0IHN5bWJvbCAqc3ltLAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdp c3RlciBvciBtZW1vcnkgbG9jYXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFk LWxvY2FsIGJsb2NrLCBldGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUg d29ydGh3aGlsZS4gIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5j ZQpAQCAtNDc1OSw3ICs0OTIyLDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICB9 CiAgCiAgLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZp Z3VyZSBvdXQgaWYgd2UgbmVlZAotQEAgLTgzNTEsMjEgKzg5MzIsMjkgQEAgbmV3X3N5bWJvbCAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKK0BAIC04MzI5LDIxICs4OTE3LDI5IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBi YXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RF WFQgKG9iamZpbGUpKTsKICAKQEAgLTQ3OTYsMTIgKzQ5NTksMTQgQEAgaW5kZXggMTVlZjNlOS4u OTlmNzI5YiAxMDA2NDQKICAKICAgICAgICAvKiBEZWZhdWx0IGFzc3VtcHRpb25zLgogICAgICAg ICAgIFVzZSB0aGUgcGFzc2VkIHR5cGUgb3IgZGVjb2RlIGl0IGZyb20gdGhlIGRpZS4gICovCi1A QCAtODQ2NSw3ICs5MDU0LDE4IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtODQ0Myw3ICs5MDM5 LDI0IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgICAgIHZhcl9kZWNvZGVfbG9jYXRpb24gKGF0 dHIsIHN5bSwgY3UpOwogIAkgICAgICBhdHRyMiA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4 dGVybmFsLCBjdSk7CiAgCSAgICAgIGlmIChhdHRyMiAmJiAoRFdfVU5TTkQgKGF0dHIyKSAhPSAw KSkKIC0JCWFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOwogKwkJewor KwkJICBzdHJ1Y3QgcGVuZGluZyAqKmxpc3RfdG9fYWRkOworKwogKwkJICAvKiBXb3JrYXJvdW5k IGdmb3J0cmFuIFBSIGRlYnVnLzQwMDQwIC0gaXQgdXNlcwogKwkJICAgICBEV19BVF9sb2NhdGlv biBmb3IgdmFyaWFibGVzIGluIC1mUElDIGxpYnJhcmllcyB3aGljaCBtYXkKICsJCSAgICAgZ2V0 IG92ZXJyaWRlbiBieSBvdGhlciBsaWJyYXJpZXMvZXhlY3V0YWJsZSBhbmQgZ2V0CkBAIC00ODEx LDIxICs0OTc2LDE2IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiArCQkgICAgICAm JiBkaWUtPnBhcmVudC0+dGFnID09IERXX1RBR19tb2R1bGUpCiArCQkgICAgU1lNQk9MX0NMQVNT IChzeW0pID0gTE9DX1VOUkVTT0xWRUQ7CiArCi0rCQkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3lt LCAmZ2xvYmFsX3N5bWJvbHMpOworKwkJICAvKiBBIHZhcmlhYmxlIHdpdGggRFdfQVRfZXh0ZXJu YWwgaXMgbmV2ZXIgc3RhdGljLCBidXQgaXQKKysJCSAgICAgbWF5IGJlIGJsb2NrLXNjb3BlZC4g ICovCisrCQkgIGxpc3RfdG9fYWRkID0gKGN1LT5saXN0X2luX3Njb3BlID09ICZmaWxlX3N5bWJv bHMKKysJCQkJID8gJmdsb2JhbF9zeW1ib2xzIDogY3UtPmxpc3RfaW5fc2NvcGUpOworKwkJICBh ZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgbGlzdF90b19hZGQpOwogKwkJfQogIAkgICAgICBlbHNl CiAgCQlhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgY3UtPmxpc3RfaW5fc2NvcGUpOwogIAkgICAg fQotQEAgLTg2MDIsNyArOTIwMiw3IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gCSAgYWRkX3N5bWJv bF90b19saXN0IChzeW0sIGN1LT5saXN0X2luX3Njb3BlKTsKLSAJICBicmVhazsKLSAJY2FzZSBE V19UQUdfZW51bWVyYXRvcjoKLS0JICBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pID0gKGNoYXIg KikgZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci0rCSAgU1lNQk9MX0xJTktBR0VfTkFNRSAo c3ltKSA9IChjaGFyICopIGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKLSAJICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfY29uc3RfdmFsdWUsIGN1KTsKLSAJICBpZiAoYXR0cikKLSAJICAg IHsKLUBAIC04NjI2LDYgKzkyMjYsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04NjA0LDYg KzkyMTcsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBM T0NfVFlQRURFRjsKICAJICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xz KTsKICAJICBicmVhazsKQEAgLTQ4MzcsNyArNDk5Nyw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5Zjcy OWIgMTAwNjQ0CiAgCWRlZmF1bHQ6CiAgCSAgLyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4gIEhv cGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwogIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBzaW5j ZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1AQCAtODYzOSw4ICs5MjQ0LDcg QEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04NjE3LDggKzkyMzUsNyBAQCBuZXdfc3ltYm9sIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgICAgIC8qIEZvciB0aGUgYmVuZWZpdCBvZiBvbGQgdmVyc2lvbnMgb2YgR0NDLCBj aGVjayBmb3IgYW5vbnltb3VzCiAgCSBuYW1lc3BhY2VzIGJhc2VkIG9uIHRoZSBkZW1hbmdsZWQg bmFtZS4gICovCiAgICAgICAgaWYgKCFwcm9jZXNzaW5nX2hhc19uYW1lc3BhY2VfaW5mbwpAQCAt NDg0Nyw3ICs1MDA3LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAJY3Bfc2Nh bl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKHN5bSk7CiAgICAgIH0KICAgIHJldHVybiAoc3lt KTsKLUBAIC04OTUyLDEyICs5NTU2LDE4IEBAIHJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04OTMwLDEyICs5NTQ3LDE4IEBAIHJl YWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK ICAgICAgY2FzZSBEV19UQUdfbmFtZXNwYWNlOgogICAgICAgIHRoaXNfdHlwZSA9IHJlYWRfbmFt ZXNwYWNlX3R5cGUgKGRpZSwgY3UpOwogICAgICAgIGJyZWFrOwpAQCAtNDg2Niw3ICs1MDI2LDcg QEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgIHJldHVybiB0aGlzX3R5cGU7CiAg fQogIAotQEAgLTkwMzksMTAgKzk2NDksMTAzIEBAIGRldGVybWluZV9wcmVmaXggKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC05MDE3LDEwICs5NjQwLDEw MyBAQCBkZXRlcm1pbmVfcHJlZml4IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgCSAgICAgU28gaXQgZG9lcyBub3QgbmVlZCBhIHByZWZpeC4gICovCiAgCSAg cmV0dXJuICIiOwogICAgICAgIGRlZmF1bHQ6CkBAIC00OTcxLDcgKzUxMzEsNyBAQCBpbmRleCAx NWVmM2U5Li45OWY3MjliIDEwMDY0NAogIC8qIFJldHVybiBhIG5ld2x5LWFsbG9jYXRlZCBzdHJp bmcgZm9ybWVkIGJ5IGNvbmNhdGVuYXRpbmcgUFJFRklYIGFuZAogICAgIFNVRkZJWCB3aXRoIGFw cHJvcHJpYXRlIHNlcGFyYXRvci4gIElmIFBSRUZJWCBvciBTVUZGSVggaXMgTlVMTCBvciBlbXB0 eSwgdGhlbgogICAgIHNpbXBseSBjb3B5IHRoZSBTVUZGSVggb3IgUFJFRklYLCByZXNwZWN0aXZl bHkuICBJZiBPQlMgaXMgbm9uLW51bGwsCi1AQCAtOTA5MiwxNyArOTc5NSwxMTEgQEAgc2libGlu Z19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllKQorQEAgLTkwNzAsMTcgKzk3ODYsMTExIEBAIHNp YmxpbmdfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKICAgIHJldHVybiBkaWUtPnNpYmxpbmc7 CiAgfQogIApAQCAtNDk4NCw3ICs1MTQ0LDExIEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAw NjQ0CiAgewogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKICsgIGNoYXIgKm5hbWU7Ci0rCisg CistICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfTUlQU19saW5rYWdlX25hbWUsIGN1 KTsKKy0gIGlmIChhdHRyICYmIERXX1NUUklORyAoYXR0cikpCistICAgIHJldHVybiBEV19TVFJJ TkcgKGF0dHIpOworLSAgcmV0dXJuIGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKICsgIG5hbWUgPSBk d2FyZjJfbmFtZSAoZGllLCBjdSk7CiArCiArICAvKiBUaGVzZSBhcmUgdGhlIG9ubHkgbGFuZ3Vh Z2VzIHdlIGtub3cgaG93IHRvIHF1YWxpZnkgbmFtZXMgaW4uICAqLwpAQCAtNTA0NywxMSArNTIx MSw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiArCSAgICBuYW1lID0gY25hbWU7 CiArCX0KICsgICAgfQotIAotLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNf bGlua2FnZV9uYW1lLCBjdSk7Ci0tICBpZiAoYXR0ciAmJiBEV19TVFJJTkcgKGF0dHIpKQotLSAg ICByZXR1cm4gRFdfU1RSSU5HIChhdHRyKTsKLS0gIHJldHVybiBkd2FyZjJfbmFtZSAoZGllLCBj dSk7CisrCiArICByZXR1cm4gbmFtZTsKICt9CiArCkBAIC01MDg5LDcgKzUyNDksNyBAQCBpbmRl eCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogIH0KICAKICAvKiBHZXQgbmFtZSBvZiBhIGRpZSwg cmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLUBAIC0xMTQ1MCw2ICsxMjI0NywzNCBAQCBh dHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCitAQCAtMTE0Mjgs NiArMTIyMzgsMzQgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICph dHRyKQogICAgICB9CiAgfQogIApAQCAtNTEyNCw3ICs1Mjg0LDcgQEAgaW5kZXggMTVlZjNlOS4u OTlmNzI5YiAxMDA2NDQKICBzdGF0aWMgdm9pZAogIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRl ZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCSAgICAg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtMTE0NzksMzUgKzEyMzA0LDI1IEBAIGR3YXJmMl9z eW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJv bCAqc3ltLAorQEAgLTExNDU3LDM1ICsxMjI5NSwyNSBAQCBkd2FyZjJfc3ltYm9sX21hcmtfY29t cHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAgICAg ICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzOwogICAg ICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwogICAgICB9CkBAIC01MTc1 LDcgKzUzMzUsNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3MjliIDEwMDY0NAogICAgICB9CiAgfQog IAotQEAgLTExNzk1LDYgKzEyNjEwLDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9p ZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTExNzczLDYgKzEyNjAxLDMx IEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQg Kml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7 CiAgfQogIApAQCAtNTIwNyw3ICs1MzY3LDcgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2 NDQKICAvKiBTZXQgdGhlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIERJRSB0byBUWVBFLiAgU2F2ZSBp dCBpbiBDVSdzIGhhc2gKICAgICB0YWJsZSBpZiBuZWNlc3NhcnkuICBGb3IgY29udmVuaWVuY2Us IHJldHVybiBUWVBFLiAgKi8KICAKLUBAIC0xMTgwMyw2ICsxMjY0Myw4IEBAIHNldF9kaWVfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC0xMTc4MSw2ICsxMjYzNCw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7 CiAgICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsKICAKQEAgLTUy MTYsNyArNTM3Niw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgICAvKiBGb3Ig QWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5 cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBm ZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2Ug dGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotQEAgLTExOTU4LDIzICsxMjgwMCwxMyBAQCBzaG93 X2R3YXJmMl9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xMTkzNiwyMyArMTI3 OTEsMTMgQEAgc2hvd19kd2FyZjJfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBj bWRfc2hvd19saXN0IChzaG93X2R3YXJmMl9jbWRsaXN0LCBmcm9tX3R0eSwgIiIpOwogIH0KICAK QEAgLTUyNDQsNyArNTQwNCw3IEBAIGluZGV4IDE1ZWYzZTkuLjk5ZjcyOWIgMTAwNjQ0CiAgfQog IAogIC8qIG11bm1hcCBkZWJ1ZyBzZWN0aW9ucyBmb3IgT0JKRklMRSwgaWYgbmVjZXNzYXJ5LiAg Ki8KLUBAIC0xMTk4MywxNSArMTI4MTUsMTUgQEAgc3RhdGljIHZvaWQKK0BAIC0xMTk2MSwxNSAr MTI4MDYsMTUgQEAgc3RhdGljIHZvaWQKICBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCiAgewogICAgc3RydWN0IGR3YXJmMl9wZXJfb2Jq ZmlsZSAqZGF0YSA9IGQ7CkBAIC01MjY5LDcgKzU0MjksNyBAQCBpbmRleCAxNWVmM2U5Li45OWY3 MjliIDEwMDY0NAogIH0KICAKICB2b2lkIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKTsK LUBAIC0xMTk5OSw2ICsxMjgzMSw3IEBAIHZvaWQgX2luaXRpYWxpemVfZHdhcmYyX3JlYWQgKHZv aWQpOworQEAgLTExOTc3LDYgKzEyODIyLDcgQEAgdm9pZCBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVh ZCAodm9pZCk7CiAgdm9pZAogIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKQogIHsKQEAg LTUyNzgsMTAgKzU0MzgsMzIgQEAgaW5kZXggMTVlZjNlOS4uOTlmNzI5YiAxMDA2NDQKICAgICAg PSByZWdpc3Rlcl9vYmpmaWxlX2RhdGFfd2l0aF9jbGVhbnVwIChOVUxMLCBkd2FyZjJfcGVyX29i amZpbGVfZnJlZSk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFk LmMKLWluZGV4IDc4ZTkxNjMuLjRlMjA4ZDEgMTAwNjQ0CitpbmRleCA3OGU5MTYzLi5kYzhhNzUy IDEwMDY0NAogLS0tIGEvZ2RiL2VsZnJlYWQuYwogKysrIGIvZ2RiL2VsZnJlYWQuYwotQEAgLTg3 OSwyMCArODc5LDEzIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBpbnQgc3ltZmlsZV9mbGFncykKK0BAIC0xNzksNyArMTc5LDggQEAgcmVjb3JkX21pbmltYWxf c3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZV9sZW4sIGludCBjb3B5X25hbWUsCisg eworICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxl KTsKKyAKKy0gIGlmIChtc190eXBlID09IG1zdF90ZXh0IHx8IG1zX3R5cGUgPT0gbXN0X2ZpbGVf dGV4dCkKKysgIGlmIChtc190eXBlID09IG1zdF90ZXh0IHx8IG1zX3R5cGUgPT0gbXN0X2ZpbGVf dGV4dAorKyAgICAgIHx8IG1zX3R5cGUgPT0gbXN0X3RleHRfZ251X2lmdW5jKQorICAgICBhZGRy ZXNzID0gZ2RiYXJjaF9zbWFzaF90ZXh0X2FkZHJlc3MgKGdkYmFyY2gsIGFkZHJlc3MpOworIAor ICAgcmV0dXJuIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sX2Z1bGwgKG5hbWUsIG5hbWVfbGVu LCBjb3B5X25hbWUsIGFkZHJlc3MsCitAQCAtMzg4LDcgKzM4OSwxMCBAQCBlbGZfc3ltdGFiX3Jl YWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwKKyAJICAgIHsKKyAJICAgICAg aWYgKHN5bS0+ZmxhZ3MgJiAoQlNGX0dMT0JBTCB8IEJTRl9XRUFLKSkKKyAJCXsKKy0JCSAgbXNf dHlwZSA9IG1zdF90ZXh0OworKwkJICBpZiAoc3ltLT5mbGFncyAmIEJTRl9HTlVfSU5ESVJFQ1Rf RlVOQ1RJT04pCisrCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0X2dudV9pZnVuYzsKKysJCSAgZWxz ZQorKwkJICAgIG1zX3R5cGUgPSBtc3RfdGV4dDsKKyAJCX0KKyAJICAgICAgZWxzZSBpZiAoKHN5 bS0+bmFtZVswXSA9PSAnLicgJiYgc3ltLT5uYW1lWzFdID09ICdMJykKKyAJCSAgICAgICB8fCAo KHN5bS0+ZmxhZ3MgJiBCU0ZfTE9DQUwpCitAQCAtODc5LDIwICs4ODMsMTMgQEAgZWxmX3N5bWZp bGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQogIAkJ CQlzdHJfc2VjdC0+ZmlsZXBvcywKICAJCQkJYmZkX3NlY3Rpb25fc2l6ZSAoYWJmZCwgc3RyX3Nl Y3QpKTsKICAgICAgfQpAQCAtNTMwNSw3ICs1NDg3LDcgQEAgaW5kZXggNzhlOTE2My4uNGUyMDhk MSAxMDA2NDQKICAgICAgewogICAgICAgIGNoYXIgKmRlYnVnZmlsZTsKICAKLUBAIC05MTAsNiAr OTAzLDIwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQg c3ltZmlsZV9mbGFncykKK0BAIC05MTAsNiArOTA3LDIwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKICAgICAgfQogIH0KICAK QEAgLTUzMjYsNyArNTUwOCw3IEBAIGluZGV4IDc4ZTkxNjMuLjRlMjA4ZDEgMTAwNjQ0CiAgLyog VGhpcyBjbGVhbnMgdXAgdGhlIG9iamZpbGUncyBkZXByZWNhdGVkX3N5bV9zdGFiX2luZm8gcG9p bnRlciwgYW5kCiAgICAgdGhlIGNoYWluIG9mIHN0YWJfc2VjdGlvbl9pbmZvJ3MsIHRoYXQgbWln aHQgYmUgZGFuZ2xpbmcgZnJvbQogICAgIGl0LiAgKi8KLUBAIC0xMDUyLDYgKzEwNTksNyBAQCBz dGF0aWMgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQorQEAgLTEwNTIsNiArMTA2Myw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9CiAgICBlbGZfbmV3X2luaXQsCQkJ Lyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCiAg ICBlbGZfc3ltZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1 cCBmb3Igc3ltX3JlYWQoKSAqLwogICAgZWxmX3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiBy ZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIgKi8KQEAgLTUzMzUsNyArNTUxNyw3IEBAIGlu ZGV4IDc4ZTkxNjMuLjRlMjA4ZDEgMTAwNjQ0CiAgICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywJ Lyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9jYXRpb24gKi8KICAg IGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZv cm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKLWluZGV4 IDI3Yjc4OTUuLjkwYzI5YTMgMTAwNjQ0CitpbmRleCBhMDU1NmNmLi5hYmU2YTA2IDEwMDY0NAog LS0tIGEvZ2RiL2V2YWwuYwogKysrIGIvZ2RiL2V2YWwuYwogQEAgLTQzLDYgKzQzLDcgQEAKQEAg LTYzNTMsNiArNjUzNSw3NiBAQCBpbmRleCBlMTE3YThlLi42YmQzNzI0IDEwMDY0NAogICAgICB9 CiAgICBlbHNlCiAgICAgIHsKK2RpZmYgLS1naXQgYS9nZGIvZnJ2LWxpbnV4LXRkZXAuYyBiL2dk Yi9mcnYtbGludXgtdGRlcC5jCitpbmRleCBjMDUxYTRkLi41YjA3MDYzIDEwMDY0NAorLS0tIGEv Z2RiL2Zydi1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9mcnYtbGludXgtdGRlcC5jCitAQCAtMzIs NiArMzIsNyBAQAorICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKKyAjaW5jbHVkZSAicmVnc2V0 LmgiCisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKysjaW5jbHVkZSAibGludXgtdGRlcC5oIgor IAorIC8qIERlZmluZSB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGFuIEZSLVYgaW5zdHJ1Y3Rpb24u ICAqLworIHN0YXRpYyBjb25zdCBpbnQgZnJ2X2luc3RyX3NpemUgPSA0OworQEAgLTQ4Niw3ICs0 ODcsMjEgQEAgZnJ2X2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCisgICByZXR1cm4gTlVMTDsKKyB9CisgCistDAorK3N0YXRpYyBDT1JFX0FE RFIKKytmcnZfbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorKwkJCQkgICAgICBDT1JFX0FERFIgYWRkciwKKysJCQkJICAgICAgc3RydWN0 IHRhcmdldF9vcHMgKnRhcmcpCisreworKyAgQ09SRV9BRERSIHBjID0gZnJ2X2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCB0YXJnKTsKKysgIENPUkVfQUREUiByZXNv bHZlZDsKKysKKysgIHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAo Z2RiYXJjaCwgYWRkciwgcGMpOworKyAgaWYgKHJlc29sdmVkICE9IHBjKQorKyAgICBwYyA9IGZy dl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcmVzb2x2ZWQsIHRhcmcpOwor KworKyAgcmV0dXJuIHBjOworK30KKysKKyBzdGF0aWMgdm9pZAorIGZydl9saW51eF9pbml0X2Fi aSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyB7 CitAQCAtNDk0LDYgKzUwOSwxMCBAQCBmcnZfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNo X2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICBmcmFtZV91bndpbmRfYXBw ZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmZnJ2X2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCk7 IAorICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChnZGJhcmNoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcnZfbGludXhfcmVnc2V0X2Zy b21fY29yZV9zZWN0aW9uKTsKKysKKysgIGlmIChmcnZfYWJpIChnZGJhcmNoKSA9PSBGUlZfQUJJ X0ZEUElDKQorKyAgICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwKKysJCQkJCSAgZnJ2X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9 CisgCisgc3RhdGljIGVudW0gZ2RiX29zYWJpCitkaWZmIC0tZ2l0IGEvZ2RiL2Zydi10ZGVwLmMg Yi9nZGIvZnJ2LXRkZXAuYworaW5kZXggYTM4ZWM4ZS4uYjg4NTZhOSAxMDA2NDQKKy0tLSBhL2dk Yi9mcnYtdGRlcC5jCisrKysgYi9nZGIvZnJ2LXRkZXAuYworQEAgLTExNjksNyArMTE2OSw3IEBA IGZpbmRfZnVuY19kZXNjciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBlbnRy eV9wb2ludCkKKyAgIHJldHVybiBkZXNjcjsKKyB9CisgCistc3RhdGljIENPUkVfQUREUgorK0NP UkVfQUREUgorIGZydl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIENPUkVfQUREUiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisgeworZGlmZiAtLWdpdCBhL2dkYi9mcnYtdGRl cC5oIGIvZ2RiL2Zydi10ZGVwLmgKK2luZGV4IDI1Y2M5YzQuLjk1ZDVmZTUgMTAwNjQ0CistLS0g YS9nZGIvZnJ2LXRkZXAuaAorKysrIGIvZ2RiL2Zydi10ZGVwLmgKK0BAIC0xMTgsMyArMTE4LDYg QEAgQ09SRV9BRERSIGZydl9mZXRjaF9vYmpmaWxlX2xpbmtfbWFwIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSk7Cisgc3RydWN0IHRhcmdldF9zb19vcHM7CisgZXh0ZXJuIHN0cnVjdCB0YXJnZXRf c29fb3BzIGZydl9zb19vcHM7CisgCisrQ09SRV9BRERSIGZydl9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJCQkgIENPUkVfQUREUiBhZGRy LAorKwkJCQkJICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZyk7CiBkaWZmIC0tZ2l0IGEvZ2RiL2dk YmluaXQuaW4gYi9nZGIvZ2RiaW5pdC5pbgogaW5kZXggZmZiN2Y1My4uYTJlN2U5NCAxMDA2NDQK IC0tLSBhL2dkYi9nZGJpbml0LmluCkBAIC02Mzk5LDcgKzY2NTEsNyBAQCBpbmRleCBjZDI0ZWFm Li4xMTlhZjdkIDEwMDY0NAogICAgIG9uY2UgZm9yIGVhY2gga25vd24gdGhyZWFkLiAgKi8KICB0 eXBlZGVmIGludCAoKnRocmVhZF9jYWxsYmFja19mdW5jKSAoc3RydWN0IHRocmVhZF9pbmZvICos IHZvaWQgKik7CiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwot aW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKK2luZGV4IDJmZjg2NDcuLjJiZGFjYTggMTAw NjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuYwogKysrIGIvZ2RiL2dkYnR5cGVzLmMKIEBAIC0zOSw2 ICszOSw5IEBACkBAIC02NDk1LDcgKzY3NDcsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZiZWUyIDEw MDY0NAogICAgICAgIGlmICh0eXBlcHRyKQogIAkqdHlwZXB0ciA9IG50eXBlOwogICAgICB9Ci1A QCAtNzI2LDYgKzc4MCw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0 X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorQEAgLTcyMyw2ICs3NzcsNyBAQCBjcmVh dGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5k ZXhfdHlwZSwKICAgICAgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVjdCBy YW5nZV9ib3VuZHMpKTsKICAgIFRZUEVfTE9XX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBsb3dfYm91 bmQ7CiAgICBUWVBFX0hJR0hfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGhpZ2hfYm91bmQ7CkBAIC02 NTAzLDcgKzY3NTUsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZiZWUyIDEwMDY0NAogIAogICAgaWYg KGxvd19ib3VuZCA+PSAwKQogICAgICBUWVBFX1VOU0lHTkVEIChyZXN1bHRfdHlwZSkgPSAxOwot QEAgLTgyNSwyNiArODgwLDQ1IEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVz dWx0X3R5cGUsCitAQCAtODIyLDI2ICs4NzcsNDUgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVj dCB0eXBlICpyZXN1bHRfdHlwZSwKICAKICAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQ RV9DT0RFX0FSUkFZOwogICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVu dF90eXBlOwpAQCAtNjU2Miw3ICs2ODE0LDcgQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2 NDQKICAKICAgIHJldHVybiByZXN1bHRfdHlwZTsKICB9Ci1AQCAtMTMzMSw2ICsxNDA1LDEwNSBA QCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCitAQCAtMTM0NCw2ICsxNDE4LDEwNSBAQCBz dHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCiAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsIF8oInN0dWIgdHlwZSBoYXMgTlVMTCBuYW1lIikpOwogIH0KICAKQEAgLTY2NjgsNyAr NjkyMCw3IEBAIGluZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAgLyogQWRkZWQgYnkgQnJ5 YW4gQm9yZWhhbSwgS2V3aWxsLCBTdW4gU2VwIDE3IDE4OjA3OjE3IDE5ODkuCiAgCiAgICAgSWYg dGhpcyBpcyBhIHN0dWJiZWQgc3RydWN0IChpLmUuIGRlY2xhcmVkIGFzIHN0cnVjdCBmb28gKiks IHNlZSBpZgotQEAgLTE0NjIsNTEgKzE2MzUsMzYgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5 cGUgKnR5cGUpCitAQCAtMTQ3NSw1MSArMTY0OCwzNiBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3Qg dHlwZSAqdHlwZSkKICAgICAgICAgIH0KICAgICAgfQogIApAQCAtNjc0MCw3ICs2OTkyLDcgQEAg aW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBl KSA9IDA7CiAgCX0KICAgICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9SQU5HRSkKLUBAIC0xNTE0LDkgKzE2NzIsMTIgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5 cGUgKnR5cGUpCitAQCAtMTUyNyw5ICsxNjg1LDEyIEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0 eXBlICp0eXBlKQogIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRf dHlwZSk7CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwogIAl9CkBAIC02NzUzLDcg KzcwMDUsMTYgQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAgIHJldHVybiB0eXBl OwogIH0KICAKLUBAIC0xODA5LDYgKzE5NzAsNyBAQCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2Rl IGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKK0BAIC0xNzk4LDYgKzE5NTksOCBAQCBpbml0 X3R5cGUgKGVudW0gdHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKKyAgICAg VFlQRV9OT1RURVhUICh0eXBlKSA9IDE7CisgICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfRklYRURf SU5TVEFOQ0UpCisgICAgIFRZUEVfRklYRURfSU5TVEFOQ0UgKHR5cGUpID0gMTsKKysgIGlmIChm bGFncyAmIFRZUEVfRkxBR19HTlVfSUZVTkMpCisrICAgIFRZUEVfR05VX0lGVU5DICh0eXBlKSA9 IDE7CisgCisgICBpZiAobmFtZSkKKyAgICAgVFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2ZXN0cmlu ZyAobmFtZSwgc3RybGVuIChuYW1lKSwKK0BAIC0xODIyLDYgKzE5ODUsNyBAQCBpbml0X3R5cGUg KGVudW0gdHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKICAgICAgICAgIFRZ UEVfU1BFQ0lGSUNfRklFTEQgKHR5cGUpID0gVFlQRV9TUEVDSUZJQ19DQUxMSU5HX0NPTlZFTlRJ T047CiAgICAgICAgICBicmVhazsKICAgICAgfQpAQCAtNjc2MSw3ICs3MDIyLDcgQEAgaW5kZXgg MTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAgIHJldHVybiB0eXBlOwogIH0KICAKLUBAIC0yOTg2 LDMzICszMTQ4LDQyIEBAIHR5cGVfcGFpcl9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0 IHZvaWQgKml0ZW1fcmhzKQorQEAgLTI5OTksMzMgKzMxNjMsNDIgQEAgdHlwZV9wYWlyX2VxIChj b25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCiAgfQogIAogIC8qIEFs bG9jYXRlIHRoZSBoYXNoIHRhYmxlIHVzZWQgYnkgY29weV90eXBlX3JlY3Vyc2l2ZSB0byB3YWxr CkBAIC02ODE5LDcgKzcwODAsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZiZWUyIDEwMDY0NAogICAg ICByZXR1cm4gdHlwZTsKICAKICAgIC8qIFRoaXMgdHlwZSBzaG91bGRuJ3QgYmUgcG9pbnRpbmcg dG8gYW55IHR5cGVzIGluIG90aGVyIG9iamZpbGVzOwotQEAgLTMwMjcsOCArMzE5OCwxMCBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMDQwLDgg KzMyMTMsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgICBuZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOwog IAogICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVk aWF0ZWx5LCBpbiBjYXNlCkBAIC02ODMyLDcgKzcwOTMsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZi ZWUyIDEwMDY0NAogICAgc3RvcmVkLT5vbGQgPSB0eXBlOwogICAgc3RvcmVkLT5uZXcgPSBuZXdf dHlwZTsKICAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMwMzksNiArMzIxMiwxOSBAQCBjb3B5X3R5 cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMDUyLDYgKzMyMjcs MTkgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICBU WVBFX09CSkZJTEVfT1dORUQgKG5ld190eXBlKSA9IDA7CiAgICBUWVBFX09XTkVSIChuZXdfdHlw ZSkuZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwogIApAQCAtNjg1Miw3ICs3MTEzLDcg QEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAgIGlmIChUWVBFX05BTUUgKHR5cGUp KQogICAgICBUWVBFX05BTUUgKG5ld190eXBlKSA9IHhzdHJkdXAgKFRZUEVfTkFNRSAodHlwZSkp OwogICAgaWYgKFRZUEVfVEFHX05BTUUgKHR5cGUpKQotQEAgLTMwNDcsMTIgKzMyMzMsNDUgQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzA2MCwx MiArMzI0OCw0NSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKICAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9IFRZUEVfSU5TVEFOQ0VfRkxB R1MgKHR5cGUpOwogICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9IFRZUEVfTEVOR1RIICh0eXBl KTsKICAKQEAgLTY4OTgsNyArNzE1OSw3IEBAIGluZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0 CiAgICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IFhDQUxMT0MgKG5maWVsZHMsIHN0cnVj dCBmaWVsZCk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5maWVsZHM7IGkrKykKICAJewotQEAg LTMwNjEsOCArMzI4MCw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorQEAgLTMwNzQsOCArMzI5NSw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAogIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5cGUsIGkp ID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCkBAIC02OTA5 LDcgKzcxNzAsNyBAQCBpbmRleCAxMTc2MDZhLi41MzZiZWUyIDEwMDY0NAogIAkgIGlmIChUWVBF X0ZJRUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwg aSkgPSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci1AQCAt MzA4OSwyNCArMzMwOCw3NSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKK0BAIC0zMTAyLDI0ICszMzIzLDc1IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTY5OTEsNyArNzI1Miw3 IEBAIGluZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAgICAvKiBNYXliZSBjb3B5IHRoZSB0 eXBlX3NwZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8g bm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zMTI0LDYgKzMzOTQsMTcg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzEz Nyw2ICszNDA5LDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAogICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTcwMDksNyArNzI3MCw3IEBAIGlu ZGV4IDExNzYwNmEuLjUzNmJlZTIgMTAwNjQ0CiAgLyogTWFrZSBhIGNvcHkgb2YgdGhlIGdpdmVu IFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCiAgICAgdHlwZXMgYXJl IG5vdCBwcmVzZXJ2ZWQuCiAgICAgCi1AQCAtMzE0Niw2ICszNDI3LDIxMSBAQCBjb3B5X3R5cGUg KGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTMxNTksNiArMzQ0MiwyMTEgQEAgY29weV90 eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgIHJldHVybiBuZXdfdHlwZTsKICB9CiAg CkBAIC03MjIxLDcgKzc0ODIsMjggQEAgaW5kZXggMTE3NjA2YS4uNTM2YmVlMiAxMDA2NDQKICAK ICAvKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYXJjaGl0ZWN0dXJlLXNwZWNpZmlj IHR5cGVzLiAgKi8KICAKLUBAIC0zNjM2LDYgKzQxMjIsMTEgQEAgdm9pZAorQEAgLTM0ODIsNiAr Mzk3MCw4IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisg ICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwor ICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCisgICAgID0gbG9va3VwX3BvaW50ZXJf dHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7 CisrICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCisrICAgID0gbG9va3VwX2Z1bmN0 aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7CisgCisgICAvKiBUaGlz IHR5cGUgcmVwcmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCisgICBidWlsdGlu X3R5cGUtPmludGVybmFsX2ZuCitAQCAtMzU5NSw2ICs0MDg1LDExIEBAIG9iamZpbGVfdHlwZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBp bmZvPiIsIG9iamZpbGUpOworICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2Rl YnVnX3RleHRfc3ltYm9sKQorICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7CisrICBv YmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCisrICAgID0gaW5pdF90 eXBlIChUWVBFX0NPREVfRlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywKKysJCSAiPHRleHQg Z251LWlmdW5jIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOworKyAgVFlQRV9U QVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCkK KysgICAgPSBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7CisgICBvYmpmaWxlX3R5 cGUtPm5vZGVidWdfZGF0YV9zeW1ib2wKKyAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQs CisgCQkgZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAsCitAQCAt MzY0OSw2ICs0MTQ0LDExIEBAIHZvaWQKICBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKICB7 CiAgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoZ2Ri dHlwZXNfcG9zdF9pbml0KTsKQEAgLTcyMzQsNyArNzUxNiw3IEBAIGluZGV4IDExNzYwNmEuLjUz NmJlZTIgMTAwNjQ0CiAgCiAgICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIs IG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsIF8oIlwKIGRpZmYgLS1naXQgYS9nZGIvZ2RidHlw ZXMuaCBiL2dkYi9nZGJ0eXBlcy5oCi1pbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAoraW5k ZXggNzI5NjhhNS4uNGRmMmEzNyAxMDA2NDQKIC0tLSBhL2dkYi9nZGJ0eXBlcy5oCiArKysgYi9n ZGIvZ2RidHlwZXMuaAogQEAgLTEzOCw2ICsxMzgsOCBAQCBlbnVtIHR5cGVfY29kZQpAQCAtNzI0 Niw3ICs3NTI4LDE1IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAwNjQ0CiAgICAgIC8qIElu dGVybmFsIGZ1bmN0aW9uIHR5cGUuICAqLwogICAgICBUWVBFX0NPREVfSU5URVJOQUxfRlVOQ1RJ T04KICAgIH07Ci1AQCAtMjE0LDYgKzIxNiwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192 YWx1ZQorQEAgLTE3MSw2ICsxNzMsNyBAQCBlbnVtIHR5cGVfZmxhZ192YWx1ZQorICAgVFlQRV9G TEFHX0ZJWEVEX0lOU1RBTkNFID0gKDEgPDwgMTUpLAorICAgVFlQRV9GTEFHX1NUVUJfU1VQUE9S VEVEID0gKDEgPDwgMTYpLAorICAgVFlQRV9GTEFHX05PVFRFWFQgPSAoMSA8PCAxNyksCisrICBU WVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwgMTgpLAorIAorICAgLyogVXNlZCBmb3IgZXJyb3It Y2hlY2tpbmcuICAqLworICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAorQEAg LTIxNCw2ICsyMTcsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKICAKICAjZGVm aW5lIFRZUEVfVEFSR0VUX1NUVUIodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ190YXJnZXRf c3R1YikKICAKQEAgLTcyNTgsNyArNzU0OCwyMCBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEw MDY0NAogIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5n IHR5cGUgaGFkIAogICAqIGEgc3RhdGljIG1vZGlmaWVyLgogICAqIE5vdGU6IFRoaXMgbWF5IGJl IHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJzCi1AQCAtMjc5LDYgKzI4Niw0 OCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorQEAgLTI3MSw2ICsyNzksMTIgQEAg ZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKKyAKKyAjZGVmaW5lIFRZUEVfTk9UVEVYVCh0 KQkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3R0ZXh0KQorIAorKy8qIEN1cnJlbnRseSB1 c2VkIG9ubHkgZm9yIFRZUEVfQ09ERV9GVU5DIHdoZXJlIHNwZWNpZmllcyB0aGUgcmVhbCBmdW5j dGlvbgorKyAgIGFkZHJlc3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiAgVFlQ RV9UQVJHRVRfVFlQRSBkZXRlcm1pbmVzIHRoZQorKyAgIGZpbmFsIHJldHVybmVkIGZ1bmN0aW9u IHR5cGUgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuICAqLworKworKyNkZWZpbmUgVFlQRV9HTlVf SUZVTkModCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMpCisrCisgLyogVHlw ZSBvd25lci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUgdHlwZSBpcyBvd25l ZCBieQorICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJTEUuICBPdGhlcndl aXNlLCB0aGUgdHlwZSBpcworICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZTsgVFlQRV9PQkpG SUxFIGlzIE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KK0BAIC0yNzksNiArMjkzLDQ4IEBAIGVudW0g dHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgI2RlZmluZSBUWVBFX09XTkVSKHQpIFRZUEVfTUFJ Tl9UWVBFKHQpLT5vd25lcgogICNkZWZpbmUgVFlQRV9PQkpGSUxFKHQpIChUWVBFX09CSkZJTEVf T1dORUQodCk/IFRZUEVfT1dORVIodCkub2JqZmlsZSA6IE5VTEwpCiAgCkBAIC03MzA3LDcgKzc2 MTAsNyBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogIC8qIENvbnN0YW50IHR5cGUu ICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSBoYXMgYQogICAqIGNvbnN0 IG1vZGlmaWVyLgogICAqLwotQEAgLTMzNiw4ICszODUsNyBAQCBlbnVtIGZpZWxkX2xvY19raW5k CitAQCAtMzM2LDggKzM5Miw3IEBAIGVudW0gZmllbGRfbG9jX2tpbmQKICAgIHsKICAgICAgRklF TERfTE9DX0tJTkRfQklUUE9TLAkvKiBiaXRwb3MgKi8KICAgICAgRklFTERfTE9DX0tJTkRfUEhZ U0FERFIsCS8qIHBoeXNhZGRyICovCkBAIC03MzE3LDggKzc2MjAsMTEgQEAgaW5kZXggMzgwZjcy YS4uNTRjODczOSAxMDA2NDQKICAgIH07CiAgCiAgLyogQSBkaXNjcmltaW5hbnQgdG8gZGV0ZXJt aW5lIHdoaWNoIGZpZWxkIGluIHRoZSBtYWluX3R5cGUudHlwZV9zcGVjaWZpYwotQEAgLTM4Niw2 ICs0MzQsMTMgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTM4NCw4ICs0MzksMTYgQEAgc3RydWN0 IG1haW5fdHlwZQorICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsKKyAgIHVuc2lnbmVk IGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX25vdHRl eHQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lmdW5jIDogMTsKICAgIHVuc2lnbmVk IGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX29iamZp bGVfb3duZWQgOiAxOwogKyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGUgOiAxOwpAQCAt NzMzMSw3ICs3NjM3LDcgQEAgaW5kZXggMzgwZjcyYS4uNTRjODczOSAxMDA2NDQKICAKICAgIC8q IEEgZGlzY3JpbWluYW50IHRlbGxpbmcgdXMgd2hpY2ggZmllbGQgb2YgdGhlIHR5cGVfc3BlY2lm aWMgdW5pb24KICAgICAgIGlzIGJlaW5nIHVzZWQgZm9yIHRoaXMgdHlwZSwgaWYgYW55LiAgKi8K LUBAIC00NTYsNiArNTExLDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC00NTYsNiArNTE5LDIw IEBAIHN0cnVjdCBtYWluX3R5cGUKICAKICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKICAK QEAgLTczNTIsNyArNzY1OCw3IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAwNjQ0CiAgICAv KiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIGZp ZWxkLgogICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBpcyBvbmUg ImZpZWxkIiwKICAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRoZSBzZXQg b3IgYXJyYXkuCi1AQCAtNDkyLDEyICs1NjEsNiBAQCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNDky LDEyICs1NjksNiBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgCUNPUkVfQUREUiBwaHlzYWRkcjsK ICAJY2hhciAqcGh5c25hbWU7CkBAIC03MzY1LDcgKzc2NzEsNyBAQCBpbmRleCAzODBmNzJhLi41 NGM4NzM5IDEwMDY0NAogICAgICAgIH0KICAgICAgICBsb2M7CiAgCi1AQCAtNTM1LDEzICs1OTgs MjIgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTUzNSwxMyArNjA2LDIyIEBAIHN0cnVjdCBtYWlu X3R5cGUKICAKICAgICAgc3RydWN0IHJhbmdlX2JvdW5kcwogICAgICB7CkBAIC03MzkzLDcgKzc2 OTksNyBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogIAogICAgICAgIC8qIEZsYWdz IGluZGljYXRpbmcgd2hldGhlciB0aGUgdmFsdWVzIG9mIGxvdyBhbmQgaGlnaCBhcmUKICAgICAg ICAgICB2YWxpZC4gIFdoZW4gdHJ1ZSwgdGhlIHJlc3BlY3RpdmUgcmFuZ2UgdmFsdWUgaXMKLUBA IC01OTMsNiArNjY1LDkgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTU5Myw2ICs2NzMsOSBAQCBz dHJ1Y3QgbWFpbl90eXBlCiAgICAgICAgIHN1cHBvcnRpbmcgbXVsdGlwbGUgQUJJcy4gIFJpZ2h0 IG5vdyB0aGlzIGlzIG9ubHkgZmV0Y2hlZCBmcm9tCiAgICAgICAgIHRoZSBEd2FyZi0yIERXX0FU X2NhbGxpbmdfY29udmVudGlvbiBhdHRyaWJ1dGUuICAqLwogICAgICB1bnNpZ25lZCBjYWxsaW5n X2NvbnZlbnRpb247CkBAIC03NDAzLDcgKzc3MDksNyBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5 IDEwMDY0NAogICAgfSB0eXBlX3NwZWNpZmljOwogIH07CiAgCi1AQCAtODM5LDEzICs5MTQsNiBA QCBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUKK0BAIC04MzksMTMgKzkyMiw2IEBAIHN0cnVjdCBj cGx1c19zdHJ1Y3RfdHlwZQogICAgICBpbnQgaXNfZHluYW1pYyA6IDI7CiAgICB9OwogIApAQCAt NzQxNyw3ICs3NzIzLDcgQEAgaW5kZXggMzgwZjcyYS4uNTRjODczOSAxMDA2NDQKICAvKiBTdHJ1 Y3QgdXNlZCBmb3IgcmFua2luZyBhIGZ1bmN0aW9uIGZvciBvdmVybG9hZCByZXNvbHV0aW9uICov CiAgc3RydWN0IGJhZG5lc3NfdmVjdG9yCiAgICB7Ci1AQCAtOTAwLDkgKzk2OCw5IEBAIGV4dGVy biB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTkwMCw5 ICs5NzYsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlw ZSAqKTsKICAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5w b2ludGVyX3R5cGUKICAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlz dHlwZSktPnJlZmVyZW5jZV90eXBlCiAgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhp c3R5cGUpLT5jaGFpbgpAQCAtNzQzMCw3ICs3NzM2LDcgQEAgaW5kZXggMzgwZjcyYS4uNTRjODcz OSAxMDA2NDQKICAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFMVUVfVFlQ RSAoWCkpIGlzIHNhZmUuICAqLwogICNkZWZpbmUgVFlQRV9MRU5HVEgodGhpc3R5cGUpICh0aGlz dHlwZSktPmxlbmd0aAogIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJlIFRZUEVfQ09ERV9U WVBFREVGLCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTkxMSwxNSArOTc5LDI2IEBAIGV4 dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTkx MSwxNSArOTg3LDI2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVj dCB0eXBlICopOwogICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQ RSh0aGlzdHlwZSktPm5maWVsZHMKICAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBF X01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMKICAjZGVmaW5lIFRZUEVfVEVN UExBVEVfQVJHUyh0aGlzdHlwZSkgVFlQRV9DUExVU19TUEVDSUZJQyh0aGlzdHlwZSktPnRlbXBs YXRlX2FyZ3MKQEAgLTc0NTksNyArNzc2NSw3IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAw NjQ0CiAgCiAgLyogTW90by1zcGVjaWZpYyBzdHVmZiBmb3IgRk9SVFJBTiBhcnJheXMgKi8KICAK LUBAIC05MjgsMTEgKzEwMDcsMjMgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydWN0IHR5cGUgKik7CitAQCAtOTI4LDExICsxMDE1LDIzIEBAIGV4dGVybiB2b2lkIGFs bG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUgVFlQRV9BUlJB WV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCiAgICAgVFlQRV9MT1dfQk9V TkRfVU5ERUZJTkVEKFRZUEVfSU5ERVhfVFlQRShhcnJheXR5cGUpKQogIApAQCAtNzQ4NCw3ICs3 NzkwLDcgQEAgaW5kZXggMzgwZjcyYS4uNTRjODczOSAxMDA2NDQKICAKICAvKiBDKysgKi8KICAK LUBAIC05NjEsNiArMTA1Miw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUg KHN0cnVjdCB0eXBlICopOworQEAgLTk2MSw2ICsxMDYwLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2Nh dGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBUWVBFX0dOQVRfU1BF Q0lGSUModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlwZV9zcGVjaWZpYy5n bmF0X3N0dWZmCiAgI2RlZmluZSBUWVBFX0RFU0NSSVBUSVZFX1RZUEUodGhpc3R5cGUpIFRZUEVf R05BVF9TUEVDSUZJQyh0aGlzdHlwZSktPmRlc2NyaXB0aXZlX3R5cGUKICAjZGVmaW5lIFRZUEVf Q0FMTElOR19DT05WRU5USU9OKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPnR5 cGVfc3BlY2lmaWMuY2FsbGluZ19jb252ZW50aW9uCkBAIC03NDkyLDcgKzc3OTgsNyBAQCBpbmRl eCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICNkZWZpbmUgVFlQRV9CQVNFQ0xBU1ModGhpc3R5 cGUsaW5kZXgpIFRZUEVfRklFTERfVFlQRSh0aGlzdHlwZSwgaW5kZXgpCiAgI2RlZmluZSBUWVBF X05fQkFTRUNMQVNTRVModGhpc3R5cGUpIFRZUEVfQ1BMVVNfU1BFQ0lGSUModGhpc3R5cGUpLT5u X2Jhc2VjbGFzc2VzCiAgI2RlZmluZSBUWVBFX0JBU0VDTEFTU19OQU1FKHRoaXN0eXBlLGluZGV4 KSBUWVBFX0ZJRUxEX05BTUUodGhpc3R5cGUsIGluZGV4KQotQEAgLTk3OSw3ICsxMDcxLDYgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitAQCAt OTc5LDcgKzEwNzksNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1 Y3QgdHlwZSAqKTsKICAjZGVmaW5lIEZJRUxEX0JJVFBPUyh0aGlzZmxkKSAoKHRoaXNmbGQpLmxv Yy5iaXRwb3MpCiAgI2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZU05BTUUodGhpc2ZsZCkgKCh0aGlz ZmxkKS5sb2MucGh5c25hbWUpCiAgI2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc2Zs ZCkgKCh0aGlzZmxkKS5sb2MucGh5c2FkZHIpCkBAIC03NTAwLDcgKzc4MDYsNyBAQCBpbmRleCAz ODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICNkZWZpbmUgU0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxk LCBiaXRwb3MpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19L SU5EX0JJVFBPUywJCVwKICAgICBGSUVMRF9CSVRQT1MgKHRoaXNmbGQpID0gKGJpdHBvcykpCi1A QCAtOTg5LDkgKzEwODAsNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChz dHJ1Y3QgdHlwZSAqKTsKK0BAIC05ODksOSArMTA4OCw2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRl X2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUgU0VUX0ZJRUxEX1BIWVNB RERSKHRoaXNmbGQsIGFkZHIpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJ RUxEX0xPQ19LSU5EX1BIWVNBRERSLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAodGhp c2ZsZCkgPSAoYWRkcikpCkBAIC03NTEwLDcgKzc4MTYsNyBAQCBpbmRleCAzODBmNzJhLi41NGM4 NzM5IDEwMDY0NAogICNkZWZpbmUgRklFTERfQVJUSUZJQ0lBTCh0aGlzZmxkKSAoKHRoaXNmbGQp LmFydGlmaWNpYWwpCiAgI2RlZmluZSBGSUVMRF9CSVRTSVpFKHRoaXNmbGQpICgodGhpc2ZsZCku Yml0c2l6ZSkKICAKLUBAIC0xMDAyLDcgKzEwOTAsNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9n bmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC0xMDAyLDcgKzEwOTgsNiBAQCBleHRl cm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5l IFRZUEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZUEVfRklFTEQg KHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXN0 eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkK ICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXN0eXBlLCBuKSBGSUVMRF9T VEFUSUNfUEhZU0FERFIgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKQEAgLTc1MTgsNyArNzgy NCwyNiBAQCBpbmRleCAzODBmNzJhLi41NGM4NzM5IDEwMDY0NAogICNkZWZpbmUgVFlQRV9GSUVM RF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhp c3R5cGUsbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxE X0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfUEFD S0VEKHRoaXN0eXBlLCBuKSAoRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKSE9 MCkKLUBAIC0xMzMzLDYgKzE0MjAsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJy YXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKK0BAIC0xMTQxLDYgKzEyMzYs MTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQorICAgICAgKCopICgpIGNhbiBzZXJ2ZXIgYXMgYSBn ZW5lcmljIGZ1bmN0aW9uIHBvaW50ZXIuICAqLworICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVu Y19wdHI7CisgCisrICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24g KHJldHVybmluZyB2b2lkKScgdHlwZS4KKysgICAgIFRoZSBmaW5hbCB2b2lkIHJldHVybiB0eXBl IGlzIG5vdCBzaWduaWZpY2FudCBmb3IgaXQuICAqLworKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5f ZnVuY19mdW5jOworKworIAorICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KKyAKK0BA IC0xMTgxLDYgKzEyODAsNyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCisgCisgICAvKiBUeXBlcyB1 c2VkIGZvciBzeW1ib2xzIHdpdGggbm8gZGVidWcgaW5mb3JtYXRpb24uICAqLworICAgc3RydWN0 IHR5cGUgKm5vZGVidWdfdGV4dF9zeW1ib2w7CisrICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0 X2dudV9pZnVuY19zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19kYXRhX3N5bWJvbDsK KyAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Vua25vd25fc3ltYm9sOworICAgc3RydWN0IHR5cGUg Km5vZGVidWdfdGxzX3N5bWJvbDsKK0BAIC0xMzM1LDYgKzE0MzUsMTggQEAgZXh0ZXJuIHN0cnVj dCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwK ICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3Vw X2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTc1Mzcs NyArNzg2Miw3IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVj dCB0eXBlICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICos CiAgCQkJCQlzdHJ1Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJp bmdfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTEzNzUsNiArMTQ3 NCw4IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdHlwZSAqKTsKK0BAIC0xMzc3LDYgKzE0ODksOCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19h bmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKik7CiAgCiAgZXh0ZXJuIGludCBp c191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKICAKQEAg LTc1NDYsNyArNzg3MSw3IEBAIGluZGV4IDM4MGY3MmEuLjU0Yzg3MzkgMTAwNjQ0CiAgLyogT3Zl cmxvYWQgcmVzb2x1dGlvbiAqLwogIAogICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+ cmFua1swXSkKLUBAIC0xNDM3LDEwICsxNTM4LDExIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNl X3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKK0BAIC0xNDM5LDEwICsxNTUzLDExIEBAIGV4dGVy biB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKICAKICBleHRlcm4g aHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp OwogIApAQCAtNzYxMSw2ICs3OTM2LDc4IEBAIGluZGV4IDUzMjE0MDEuLmIxODgyYTIgMTAwNjQ0 CiAgCiAgICAvKiBXZSBkaWRuJ3QgZmluZCBpdDsgcHJpbnQgdGhlIHJhdyBkYXRhLiAgKi8KICAg IGlmICh2Yml0KQorZGlmZiAtLWdpdCBhL2dkYi9ocHBhLWxpbnV4LXRkZXAuYyBiL2dkYi9ocHBh LWxpbnV4LXRkZXAuYworaW5kZXggZWJmYzJmNS4uZTQwMTA1YiAxMDA2NDQKKy0tLSBhL2dkYi9o cHBhLWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2hwcGEtbGludXgtdGRlcC5jCitAQCAtMzIsNiAr MzIsNyBAQAorICNpbmNsdWRlICJyZWdzZXQuaCIKKyAjaW5jbHVkZSAicmVnY2FjaGUuaCIKKyAj aW5jbHVkZSAiaHBwYS10ZGVwLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5j bHVkZSAiZWxmL2NvbW1vbi5oIgorIAorQEAgLTUxMyw3ICs1MTQsMjEgQEAgaHBwYV9saW51eF9y ZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIAorICAg cmV0dXJuIE5VTEw7CisgfQorLQwKKysKKytzdGF0aWMgQ09SRV9BRERSCisraHBwYTMyX2xpbnV4 X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJ CQkJCSBDT1JFX0FERFIgYWRkciwKKysJCQkJCSBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKKyt7 CisrICBDT1JFX0FERFIgcGMgPSBocHBhMzJfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsIGFkZHIsIHRhcmcpOworKyAgQ09SRV9BRERSIHJlc29sdmVkOworKworKyAgcmVzb2x2 ZWQgPSBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRyIChnZGJhcmNoLCBhZGRyLCBwYyk7 CisrICBpZiAocmVzb2x2ZWQgIT0gcGMpCisrICAgIHBjID0gaHBwYTMyX2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChnZGJhcmNoLCByZXNvbHZlZCwgdGFyZyk7CisrCisrICByZXR1cm4gcGM7 CisrfQorIAorIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zLiAgKi8KKyBleHRlcm4gaW5pdGlhbGl6 ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2hwcGFfbGludXhfdGRlcDsKK0BAIC01NTUsNiArNTcw LDEwIEBAIGhwcGFfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICAvKiBFbmFibGUgVExTIHN1cHBvcnQuICAqLworICAg c2V0X2dkYmFyY2hfZmV0Y2hfdGxzX2xvYWRfbW9kdWxlX2FkZHJlc3MgKGdkYmFyY2gsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZyNF9mZXRjaF9vYmpm aWxlX2xpbmtfbWFwKTsKKysKKysgIGlmICh0ZGVwLT5ieXRlc19wZXJfYWRkcmVzcyA9PSA0KQor KyAgICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJ CQkJICAgICAgIGhwcGEzMl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7CisgfQor IAorIHZvaWQKK2RpZmYgLS1naXQgYS9nZGIvaHBwYS10ZGVwLmMgYi9nZGIvaHBwYS10ZGVwLmMK K2luZGV4IGEwNjY1ZWYuLjM0N2ZiZTQgMTAwNjQ0CistLS0gYS9nZGIvaHBwYS10ZGVwLmMKKysr KyBiL2dkYi9ocHBhLXRkZXAuYworQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGhwcGE2NF9yZXR1cm5f dmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdHlwZSAqZnVuY190eXBlLAor IH0KKyAMCisgCistc3RhdGljIENPUkVfQUREUgorK0NPUkVfQUREUgorIGhwcGEzMl9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBh ZGRyLAorIAkJCQkgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKKyB7CitkaWZmIC0tZ2l0IGEv Z2RiL2hwcGEtdGRlcC5oIGIvZ2RiL2hwcGEtdGRlcC5oCitpbmRleCBlMmQ4NzUyLi5jNjI2NjM3 IDEwMDY0NAorLS0tIGEvZ2RiL2hwcGEtdGRlcC5oCisrKysgYi9nZGIvaHBwYS10ZGVwLmgKK0BA IC0yNDYsNCArMjQ2LDggQEAgZXh0ZXJuIGludCBocHBhX2luX3NvbGliX2NhbGxfdHJhbXBvbGlu ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJCQkgIENPUkVfQUREUiBwYywgY2hhciAq bmFtZSk7CisgZXh0ZXJuIENPUkVfQUREUiBocHBhX3NraXBfdHJhbXBvbGluZV9jb2RlIChzdHJ1 Y3QgZnJhbWVfaW5mbyAqLCBDT1JFX0FERFIgcGMpOworIAorK2V4dGVybiBDT1JFX0FERFIgaHBw YTMyX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK KysJCQkJCQkgICAgQ09SRV9BRERSIGFkZHIsCisrCQkJCQkJICAgIHN0cnVjdCB0YXJnZXRfb3Bz ICp0YXJnKTsKKysKKyAjZW5kaWYgIC8qIGhwcGEtdGRlcC5oICovCiBkaWZmIC0tZ2l0IGEvZ2Ri L2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwogaW5kZXggZmY4MzdmMi4u MTcxMDQ4NyAxMDA2NDQKIC0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCkBAIC03NjQ1LDYgKzgw NDIsMjAgQEAgaW5kZXggZmY4MzdmMi4uMTcxMDQ4NyAxMDA2NDQKICAgIGkzODZfc2V0X2RlYnVn X3JlZ2lzdGVyX2xlbmd0aCAoNCk7CiAgCiAgICAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJh Y2UgcmVzdW1lIG1ldGhvZC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRlcC5j IGIvZ2RiL2kzODYtbGludXgtdGRlcC5jCitpbmRleCA1YWNkMjI5Li5hZWMxNzM2IDEwMDY0NAor LS0tIGEvZ2RiL2kzODYtbGludXgtdGRlcC5jCisrKysgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMK K0BAIC03OTgsNiArNzk4LDkgQEAgaTM4Nl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hf aW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaTM4Nl9saW51eF9nZXRfc3lzY2FsbF9udW1iZXIpOworIAorICAgc2V0 X2dkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZSAoZ2RiYXJjaCwgbGludXhfZ2V0X3NpZ2luZm9fdHlw ZSk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAv KiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAq LwogZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5jIGIvZ2RiL2kzODYtbmF0LmMKIGluZGV4IGZh MGNjZTYuLjQyZGZkMWMgMTAwNjQ0CiAtLS0gYS9nZGIvaTM4Ni1uYXQuYwpAQCAtNzY5OCw2ICs4 MTA5LDUzIEBAIGluZGV4IDczMTdlN2QuLmVhOTE0YTUgMTAwNjQ0CiAgICAgIGludCBkZWJ1Z19y ZWdpc3Rlcl9sZW5ndGg7CiAgICB9OwogIAorZGlmZiAtLWdpdCBhL2dkYi9pYTY0LWxpbnV4LXRk ZXAuYyBiL2dkYi9pYTY0LWxpbnV4LXRkZXAuYworaW5kZXggYjEyZjI4Mi4uOGRkYjI0YSAxMDA2 NDQKKy0tLSBhL2dkYi9pYTY0LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2lhNjQtbGludXgtdGRl cC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJvc2FiaS5oIgorICNpbmNsdWRlICJz b2xpYi1zdnI0LmgiCisgI2luY2x1ZGUgInN5bXRhYi5oIgorKyNpbmNsdWRlICJsaW51eC10ZGVw LmgiCisgCisgLyogVGhlIHNpZ3RyYW1wIGNvZGUgaXMgaW4gYSBub24tcmVhZGFibGUgKGV4ZWN1 dGFibGUtb25seSkgcmVnaW9uCisgICAgb2YgbWVtb3J5IGNhbGxlZCB0aGUgYGBnYXRlIHBhZ2Un Jy4gIFRoZSBhZGRyZXNzZXMgaW4gcXVlc3Rpb24KK0BAIC0xMzksNiArMTQwLDkgQEAgaWE2NF9s aW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCkKKyAgIC8qIEVuYWJsZSBUTFMgc3VwcG9ydC4gICovCisgICBzZXRfZ2RiYXJjaF9m ZXRjaF90bHNfbG9hZF9tb2R1bGVfYWRkcmVzcyAoZ2RiYXJjaCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdnI0X2ZldGNoX29iamZpbGVfbGlua19tYXAp OworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs CisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgLyog UHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8K K2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYworaW5kZXggZTczNmZh YS4uOGVjMDI2YiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZjYWxsLmMKKysrKyBiL2dkYi9pbmZjYWxs LmMKK0BAIC0yNTIsOSArMjUyLDE3IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVl ICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKKyAgICAgICBpZiAoVFlQRV9D T0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKKyAJICB8fCBUWVBFX0NPREUgKGZ0eXBlKSA9 PSBUWVBFX0NPREVfTUVUSE9EKQorIAl7CistCSAgZnVuYWRkciA9IGdkYmFyY2hfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCistCQkJCQkJCSZjdXJyZW50X3Rh cmdldCk7CistCSAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKKysJICBD T1JFX0FERFIgZnVuYWRkcjI7CisrCisrCSAgZnVuYWRkcjIgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBmdW5hZGRyLAorKwkJCQkJCQkgJmN1cnJlbnRfdGFy Z2V0KTsKKysKKysJICAvKiBJZiBUWVBFX0dOVV9JRlVOQyBpcyBjdXJyZW50bHkgbm90IHJlc29s dmFibGUga2VlcCBpdHMgdHlwZS4gICovCisrCSAgaWYgKGZ1bmFkZHIyICE9IGZ1bmFkZHIgfHwg IVRZUEVfR05VX0lGVU5DIChmdHlwZSkpCisrCSAgICB7CisrCSAgICAgIGZ1bmFkZHIgPSBmdW5h ZGRyMjsKKysJICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKKysJ ICAgIH0KKyAJfQorICAgICB9CisgICBlbHNlIGlmIChjb2RlID09IFRZUEVfQ09ERV9JTlQpCiBk aWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCiBpbmRleCBmOTlhNGFlLi41 NTk5OTA4IDEwMDY0NAogLS0tIGEvZ2RiL2luZmNtZC5jCkBAIC04NDE5LDI0ICs4ODc3LDk3IEBA IGluZGV4IDdmYzk1ODQuLmIyODZkZmQgMTAwNjQ0CiArICAgIHsKICsgICAgICBnZGJfYXNzZXJ0 ICghaXNfbHdwIChpbmZlcmlvcl9wdGlkKSk7CiArCi0rICAgICAgcmV0dmFsIHw9IGxpbnV4X29w cy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOwotKyAgICB9CisrICAgICAgcmV0dmFsIHw9IGxp bnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOworKyAgICB9CisrCisrICByZXR1cm4g cmV0dmFsOworK30KKysKKyAvKiBXYWl0IHVudGlsIExQIGlzIHN0b3BwZWQuICAqLworIAorIHN0 YXRpYyBpbnQKK0BAIC01NTAwLDYgKzU1MzMsOCBAQCBsaW51eF9uYXRfYWRkX3RhcmdldCAoc3Ry dWN0IHRhcmdldF9vcHMgKnQpCisgICB0LT50b190aHJlYWRfYWRkcmVzc19zcGFjZSA9IGxpbnV4 X25hdF90aHJlYWRfYWRkcmVzc19zcGFjZTsKKyAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2lu dCA9IGxpbnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19zdG9wcGVkX2Rh dGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKKysgIGlmIChsaW51 eF9vcHMtPnRvX2RldGFjaF93YXRjaHBvaW50cykKKysgICAgdC0+dG9fZGV0YWNoX3dhdGNocG9p bnRzID0gbGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50czsKKyAKKyAgIHQtPnRvX2Nhbl9hc3lu Y19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOworICAgdC0+dG9faXNfYXN5bmNfcCA9IGxpbnV4 X25hdF9pc19hc3luY19wOworZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmMgYi9nZGIvbGlu dXgtdGRlcC5jCitpbmRleCAwN2ZkNjdjLi4wMmIyMzQyIDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4 LXRkZXAuYworKysrIGIvZ2RiL2xpbnV4LXRkZXAuYworQEAgLTIzLDYgKzIzLDggQEAKKyAjaW5j bHVkZSAiYXV4di5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAiZWxmL2NvbW1v bi5oIgorKyNpbmNsdWRlICJ2YWx1ZS5oIgorKyNpbmNsdWRlICJpbmZjYWxsLmgiCisgCisgLyog VGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0Cisg ICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVjdHVyZS4gICovCitA QCAtMTUyLDMgKzE1NCw0MyBAQCBsaW51eF9oYXNfc2hhcmVkX2FkZHJlc3Nfc3BhY2UgKHZvaWQp CisgCisgICByZXR1cm4gdGFyZ2V0X2lzX3VjbGludXg7CisgfQorKworKy8qIENhbGwgZ251LWlm dW5jIHRvIHJlc29sdmUgYnJlYWtwb2ludCBhdCBpdHMgcmV0dXJuZWQgZnVuY3Rpb24uICAqLwor KworK0NPUkVfQUREUgorK2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgZnVuY19wdHIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ09SRV9BRERSIHBjKQorK3sKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1 bmNfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAg c3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sOworKyAgc3RydWN0IHZhbHVlICpmdW5jdGlv biwgKmFkZHJlc3M7CisrCisrICBpZiAoIXRhcmdldF9oYXNfZXhlY3V0aW9uKQorKyAgICByZXR1 cm4gcGM7CisrCisrICBtc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChmdW5j X3B0cik7CisrICBpZiAobXN5bWJvbCA9PSBOVUxMKQorKyAgICByZXR1cm4gcGM7CisrICBpZiAo TVNZTUJPTF9UWVBFIChtc3ltYm9sKSAhPSBtc3RfdGV4dF9nbnVfaWZ1bmMpCisrICAgIHJldHVy biBwYzsKKysKKysgIC8qIE5vdCBhdCB0aGUgZ251LWlmdW5jIGVudHJ5IHBvaW50PyAgKi8KKysg IGlmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkgIT0gZnVuY19wdHIpCisrICAgIHJl dHVybiBwYzsKKysKKysgIGZ1bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190eXBl KTsKKysgIHNldF92YWx1ZV9hZGRyZXNzIChmdW5jdGlvbiwgcGMpOworKworKyAgLyogZ251LWlm dW5jcyBoYXZlIG5vIGFyZ3VtZW50cy4gIEZVTkNUSU9OIGlzIHRoZSBjb2RlIGluc3RydWN0aW9u IGFkZHJlc3MKKysgICAgIHdoaWxlIEFERFJFU1MgaXMgYSBmdW5jdGlvbiBkZXNjcmlwdG9yLiAg Ki8KKysgIGFkZHJlc3MgPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBOVUxM KTsKICsKLSsgIHJldHVybiByZXR2YWw7CisrICByZXR1cm4gdmFsdWVfYXNfYWRkcmVzcyAoYWRk cmVzcyk7CiArfQogKwotIC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBlZC4gICovCisrQ09SRV9B RERSCisrbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBDT1JFX0FERFIgYWRkciwKKysJCQkJICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykK Kyt7CisrICByZXR1cm4gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwg YWRkciwgYWRkcik7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmggYi9nZGIvbGlu dXgtdGRlcC5oCitpbmRleCBhOGI1MjJiLi4yODIxOTBlIDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4 LXRkZXAuaAorKysrIGIvZ2RiL2xpbnV4LXRkZXAuaAorQEAgLTIyLDQgKzIyLDExIEBACiAgCi0g c3RhdGljIGludAotQEAgLTU1MDAsNiArNTUzMyw4IEBAIGxpbnV4X25hdF9hZGRfdGFyZ2V0IChz dHJ1Y3QgdGFyZ2V0X29wcyAqdCkKLSAgIHQtPnRvX3RocmVhZF9hZGRyZXNzX3NwYWNlID0gbGlu dXhfbmF0X3RocmVhZF9hZGRyZXNzX3NwYWNlOwotICAgdC0+dG9fc3RvcHBlZF9ieV93YXRjaHBv aW50ID0gbGludXhfbmF0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKLSAgIHQtPnRvX3N0b3BwZWRf ZGF0YV9hZGRyZXNzID0gbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzOwotKyAgaWYgKGxp bnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzKQotKyAgICB0LT50b19kZXRhY2hfd2F0Y2hw b2ludHMgPSBsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzOworIHN0cnVjdCB0eXBlICpsaW51 eF9nZXRfc2lnaW5mb190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqKTsKICAKLSAgIHQtPnRvX2Nhbl9h c3luY19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOwotICAgdC0+dG9faXNfYXN5bmNfcCA9IGxp bnV4X25hdF9pc19hc3luY19wOworK0NPUkVfQUREUiBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19h bmRfcHRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJCSAgIENPUkVfQUREUiBmdW5j X3B0ciwgQ09SRV9BRERSIHBjKTsKKysKKytDT1JFX0FERFIgbGludXhfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCQkJICAgIENPUkVfQURE UiBhZGRyLAorKwkJCQkJICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKKysKKyAjZW5kaWYg LyogbGludXgtdGRlcC5oICovCiBkaWZmIC0tZ2l0IGEvZ2RiL20yLWxhbmcuYyBiL2dkYi9tMi1s YW5nLmMKIGluZGV4IDgwZTliZjkuLjMwNTc3NzQgMTAwNjQ0CiAtLS0gYS9nZGIvbTItbGFuZy5j CkBAIC04NDQ5LDYgKzg5ODAsMjggQEAgaW5kZXggODBlOWJmOS4uMzA1Nzc3NCAxMDA2NDQKICAg IG9wX25hbWVfc3RhbmRhcmQsCiAgICBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkLAogICAgZXZh bHVhdGVfc3ViZXhwX21vZHVsYTIKK2RpZmYgLS1naXQgYS9nZGIvbTMyci1saW51eC10ZGVwLmMg Yi9nZGIvbTMyci1saW51eC10ZGVwLmMKK2luZGV4IDY4MDQ2MDkuLjJjYjFiZjkgMTAwNjQ0Cist LS0gYS9nZGIvbTMyci1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9tMzJyLWxpbnV4LXRkZXAuYwor QEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorIAorICNpbmNsdWRl ICJnbGliYy10ZGVwLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAjaW5jbHVkZSAic29s aWItc3ZyNC5oIgorICNpbmNsdWRlICJzeW10YWIuaCIKKyAKK0BAIC00MjIsNiArNDIzLDkgQEAg bTMycl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCkKKyAgIC8qIEVuYWJsZSBUTFMgc3VwcG9ydC4gICovCisgICBzZXRfZ2Ri YXJjaF9mZXRjaF90bHNfbG9hZF9tb2R1bGVfYWRkcmVzcyAoZ2RiYXJjaCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdnI0X2ZldGNoX29iamZpbGVfbGlu a19tYXApOworKworKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsCisrCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9Cisg CisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVz LiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvbWFjaG9yZWFkLmMgYi9nZGIvbWFjaG9yZWFkLmMKIGlu ZGV4IDAyYjYxZDMuLjEzYWI1OTUgMTAwNjQ0CiAtLS0gYS9nZGIvbWFjaG9yZWFkLmMKQEAgLTg2 NDEsNiArOTE5NCwxMDEgQEAgaW5kZXggYjIyNzQxMS4uM2I5MzJmMCAxMDA2NDQKICAgICAgICBz dHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0X2hhbmRsZSAobmFtZSk7CiAgCiAgICAgICAg dmFyb2JqX3VwZGF0ZV9vbmUgKHZhciwgcHJpbnRfdmFsdWVzLCAxIC8qIGV4cGxpY2l0ICovKTsK K2RpZmYgLS1naXQgYS9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMgYi9nZGIvbWljcm9ibGF6 ZS1saW51eC10ZGVwLmMKK2luZGV4IGE2OTFiNjIuLmQ2Nzk1MTYgMTAwNjQ0CistLS0gYS9nZGIv bWljcm9ibGF6ZS1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9taWNyb2JsYXplLWxpbnV4LXRkZXAu YworQEAgLTM1LDYgKzM1LDcgQEAKKyAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgorICNpbmNsdWRl ICJmcmFtZS11bndpbmQuaCIKKyAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKKysjaW5jbHVkZSAi bGludXgtdGRlcC5oIgorIAorIAorIHN0YXRpYyBpbnQKK0BAIC0xMzMsNiArMTM0LDkgQEAgbWlj cm9ibGF6ZV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLAorICAgLyog VHJhbXBvbGluZXMuICAqLworICAgdHJhbXBfZnJhbWVfcHJlcGVuZF91bndpbmRlciAoZ2RiYXJj aCwKKyAJCQkJJm1pY3JvYmxhemVfbGludXhfc2lnaGFuZGxlcl90cmFtcF9mcmFtZSk7CisrCisr ICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKysJCQkJ CSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyB2b2lkCitkaWZm IC0tZ2l0IGEvZ2RiL21pbnN5bXMuYyBiL2dkYi9taW5zeW1zLmMKK2luZGV4IDI4N2Y5ZGUuLjFm ZTBmYmUgMTAwNjQ0CistLS0gYS9nZGIvbWluc3ltcy5jCisrKysgYi9nZGIvbWluc3ltcy5jCitA QCAtMzMxLDggKzMzMSw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFy ICpuYW1lLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZikKKyAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9s LT5oYXNoX25leHQpCisgCSAgICB7CisgCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdF X05BTUUgKG1zeW1ib2wpLCBuYW1lKSA9PSAwICYmCistCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1i b2wpID09IG1zdF90ZXh0IHx8CistCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9m aWxlX3RleHQpKQorKwkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwkJ ICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJCSAg IHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCisgCQl7CisgCQkg IHN3aXRjaCAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSkKKyAJCSAgICB7CitAQCAtNjk0LDYgKzY5 NSwxNiBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKKyAgIHJl dHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOworIH0K KyAKKysvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9uIGltcGxlbWVudGlu ZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KKysKKytpbnQKKytpbl9nbnVfaWZ1bmNfc3R1YiAo Q09SRV9BRERSIHBjKQorK3sKKysgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxv b2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMpOworKworKyAgcmV0dXJuIG1zeW1ib2wgJiYg TVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7CisrfQorKworIC8q IEZpbmQgdGhlIG1pbmltYWwgc3ltYm9sIG5hbWVkIE5BTUUsIGFuZCByZXR1cm4gYm90aCB0aGUg bWluc3ltCisgICAgc3RydWN0IGFuZCBpdHMgb2JqZmlsZS4gIFRoaXMgb25seSBjaGVja3MgdGhl IGxpbmthZ2UgbmFtZS4gIFNldHMKKyAgICAqT0JKRklMRV9QIGFuZCByZXR1cm5zIHRoZSBtaW5p bWFsIHN5bWJvbCwgaWYgaXQgaXMgZm91bmQuICBJZiBpdAorQEAgLTc2Myw2ICs3NzQsNyBAQCBw cmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSIGFk ZHJlc3MsCisgICBzd2l0Y2ggKG1zX3R5cGUpCisgICAgIHsKKyAgICAgY2FzZSBtc3RfdGV4dDoK KysgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6CisgICAgIGNhc2UgbXN0X2ZpbGVfdGV4dDoK KyAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToKKyAgICAgICBzZWN0aW9uID0gU0VDVF9P RkZfVEVYVCAob2JqZmlsZSk7CitAQCAtMTIyOCw3ICsxMjQwLDggQEAgZmluZF9zb2xpYl90cmFt cG9saW5lX3RhcmdldCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBDT1JFX0FERFIgcGMpCisg ICAgIHsKKyAgICAgICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1zeW1ib2wpCisgICAgICAgewor LQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwlpZiAoKE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKKysJICAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJv bCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQorIAkgICAgJiYgc3RyY21wIChTWU1CT0xfTElOS0FH RV9OQU1FIChtc3ltYm9sKSwKKyAJCSAgICAgICBTWU1CT0xfTElOS0FHRV9OQU1FICh0c3ltYm9s KSkgPT0gMCkKKyAJICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpOworZGlm ZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LXRkZXAuYyBiL2dkYi9taXBzLWxpbnV4LXRkZXAuYwor aW5kZXggNmJiNGViNi4uMmIwNzk0MiAxMDA2NDQKKy0tLSBhL2dkYi9taXBzLWxpbnV4LXRkZXAu YworKysrIGIvZ2RiL21pcHMtbGludXgtdGRlcC5jCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNs dWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisgI2luY2x1ZGUgIm1pcHMtbGludXgtdGRlcC5o IgorICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCisrI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKKyAK KyBzdGF0aWMgc3RydWN0IHRhcmdldF9zb19vcHMgbWlwc19zdnI0X3NvX29wczsKKyAKK0BAIC0x MjI1LDYgKzEyMjYsOSBAQCBtaXBzX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZv IGluZm8sCisgCXRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0dXJlLCB0ZGVzY19kYXRhLCBN SVBTX1JFU1RBUlRfUkVHTlVNLAorIAkJCQkgInJlc3RhcnQiKTsKKyAgICAgfQorKworKyAgc2V0 X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJCQkgIGxp bnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKyB9CisgCisgLyogUHJvdmlkZSBhIHBy b3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KIGRpZmYgLS1naXQg YS9nZGIvbWlwc3JlYWQuYyBiL2dkYi9taXBzcmVhZC5jCiBpbmRleCA0ZWY4MTdlLi4xYzUzNTc0 IDEwMDY0NAogLS0tIGEvZ2RiL21pcHNyZWFkLmMKQEAgLTg2NTMsNiArOTMwMSw2NyBAQCBpbmRl eCA0ZWY4MTdlLi4xYzUzNTc0IDEwMDY0NAogICAgbWlwc2NvZmZfc3ltZmlsZV9maW5pc2gsCS8q IHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xlYW51cCAqLwogICAgZGVmYXVsdF9z eW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiBkdW1teSBGSVhNRSB0aWwgaW1wbGVtIHN5 bSByZWxvYyAqLwogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBzeW1fc2VnbWVudHM6 IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KK2RpZmYgLS1naXQgYS9nZGIvbW4xMDMwMC1s aW51eC10ZGVwLmMgYi9nZGIvbW4xMDMwMC1saW51eC10ZGVwLmMKK2luZGV4IGQ0NjAyYTQuLjdi YmE3MDcgMTAwNjQ0CistLS0gYS9nZGIvbW4xMDMwMC1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9t bjEwMzAwLWxpbnV4LXRkZXAuYworQEAgLTMyLDYgKzMyLDcgQEAKKyAjaW5jbHVkZSAiZnJhbWUu aCIKKyAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgorICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgor KyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCisgCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorQEAg LTcxOCw2ICs3MTksOSBAQCBhbTMzX2xpbnV4X2luaXRfb3NhYmkgKHN0cnVjdCBnZGJhcmNoX2lu Zm8gZ2RiaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgCisgICB0cmFtcF9mcmFtZV9w cmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51eF9zaWdmcmFtZSk7CisgICB0cmFt cF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0zM19saW51eF9ydF9zaWdmcmFt ZSk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAv KiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAq LworZGlmZiAtLWdpdCBhL2dkYi9vYmpjLWxhbmcuYyBiL2dkYi9vYmpjLWxhbmcuYworaW5kZXgg YTA1MGYxNS4uMDRkMWYxYyAxMDA2NDQKKy0tLSBhL2dkYi9vYmpjLWxhbmcuYworKysrIGIvZ2Ri L29iamMtbGFuZy5jCitAQCAtMTE3OCwxNiArMTE3OCw2IEBAIGZpbmRfbWV0aG9kcyAoc3RydWN0 IHN5bXRhYiAqc3ltdGFiLCBjaGFyIHR5cGUsCisgCisgCSAgUVVJVDsKKyAKKy0JICAvKiBUaGUg bWluaW1hbCBzeW1ib2wgbWlnaHQgcG9pbnQgdG8gYSBmdW5jdGlvbiBkZXNjcmlwdG9yOworLQkg ICAgIHJlc29sdmUgaXQgdG8gdGhlIGFjdHVhbCBjb2RlIGFkZHJlc3MgaW5zdGVhZC4gICovCist CSAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBwYywK Ky0JCQkJCQkgICAmY3VycmVudF90YXJnZXQpOworLQorLQkgIGlmIChzeW10YWIpCistCSAgICBp ZiAocGMgPCBCTE9DS19TVEFSVCAoYmxvY2spIHx8IHBjID49IEJMT0NLX0VORCAoYmxvY2spKQor LQkgICAgICAvKiBOb3QgaW4gdGhlIHNwZWNpZmllZCBzeW10YWIuICAqLworLQkgICAgICBjb250 aW51ZTsKKy0KKyAJICBzeW1uYW1lID0gU1lNQk9MX05BVFVSQUxfTkFNRSAobXN5bWJvbCk7Cisg CSAgaWYgKHN5bW5hbWUgPT0gTlVMTCkKKyAJICAgIGNvbnRpbnVlOworQEAgLTEyMjMsNiArMTIx MywxNyBAQCBmaW5kX21ldGhvZHMgKHN0cnVjdCBzeW10YWIgKnN5bXRhYiwgY2hhciB0eXBlLAor IAkgICAgICAoKG5zZWxlY3RvciA9PSBOVUxMKSB8fCAoc3RyY21wIChzZWxlY3RvciwgbnNlbGVj dG9yKSAhPSAwKSkpCisgCSAgICBjb250aW51ZTsKKyAKKysJICAvKiBUaGUgbWluaW1hbCBzeW1i b2wgbWlnaHQgcG9pbnQgdG8gYSBmdW5jdGlvbiBkZXNjcmlwdG9yOworKwkgICAgIHJlc29sdmUg aXQgdG8gdGhlIGFjdHVhbCBjb2RlIGFkZHJlc3MgaW5zdGVhZC4gIERlbGF5IHRoZSBjYWxsIGFz CisrCSAgICAgaXRzIHJlc29sdXRpb24gbWF5IGJlIGV4cGVuc2l2ZS4gICovCisrCSAgcGMgPSBn ZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBwYywKKysJCQkJCQkg ICAmY3VycmVudF90YXJnZXQpOworKworKwkgIGlmIChzeW10YWIpCisrCSAgICBpZiAocGMgPCBC TE9DS19TVEFSVCAoYmxvY2spIHx8IHBjID49IEJMT0NLX0VORCAoYmxvY2spKQorKwkgICAgICAv KiBOb3QgaW4gdGhlIHNwZWNpZmllZCBzeW10YWIuICAqLworKwkgICAgICBjb250aW51ZTsKKysK KyAJICBzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CisgCSAgaWYgKHN5bSAhPSBOVUxMKQor IAkgICAgewogZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKIGlu ZGV4IDBiMDdlMzcuLjVkZTUzMDAgMTAwNjQ0CiAtLS0gYS9nZGIvb2JqZmlsZXMuYwpAQCAtODc0 NSw3ICs5NDU0LDcgQEAgaW5kZXggYzY4OTYyMi4uZWIzYWUxMCAxMDA2NDQKICAgIEFMTF9QU1BB Q0VfT0JKRklMRVMgKHNzLCBvYmpmaWxlKQkJCVwKICAgICAgQUxMX09CSkZJTEVfUFNZTVRBQlMg KG9iamZpbGUsIHApCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYwotaW5k ZXggZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQKK2luZGV4IGQ1YTE5OWIuLmMzZWY5ZTEgMTAwNjQ0 CiAtLS0gYS9nZGIvcGFyc2UuYwogKysrIGIvZ2RiL3BhcnNlLmMKIEBAIC02Miw2ICs2Miw3IEBA IGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9zdGFuZGFyZCA9CkBA IC04NzU2LDcgKzk0NjUsMTkgQEAgaW5kZXggZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQKICAgICAg b3BfbmFtZV9zdGFuZGFyZCwKICAgICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKICAgICAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkCi1AQCAtODQxLDYgKzg0MiwxMCBAQCBvcGVyYXRvcl9s ZW5ndGhfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAorQEAg LTUxMSw2ICs1MTIsMTEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbXN5bWJvbCkKKyAgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2Jq ZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wpOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNl IG1zdF90ZXh0X2dudV9pZnVuYzoKKysgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVf dHlwZSAob2JqZmlsZSkKKysJCQkJCSAgICAgICAtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3lt Ym9sKTsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBtc3RfZGF0YToKKyAgICAgY2FzZSBt c3RfZmlsZV9kYXRhOgorICAgICBjYXNlIG1zdF9ic3M6CitAQCAtODQxLDYgKzg0NywxMCBAQCBv cGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5k cG9zLAogICAgICAgIGFyZ3MgPSAxOwogICAgICAgIGJyZWFrOwogIApAQCAtODc2Nyw3ICs5NDg4 LDcgQEAgaW5kZXggZDVhMTk5Yi4uZDJhMDRjMyAxMDA2NDQKICAgICAgY2FzZSBPUF9PQkpDX01T R0NBTEw6CS8qIE9iamVjdGl2ZSBDIG1lc3NhZ2UgKG1ldGhvZCkgY2FsbCAqLwogICAgICAgIG9w bGVuID0gNDsKICAgICAgICBhcmdzID0gMSArIGxvbmdlc3RfdG9faW50IChleHByLT5lbHRzW2Vu ZHBvcyAtIDJdLmxvbmdjb25zdCk7Ci1AQCAtMTM2MSw2ICsxMzY2LDE1MCBAQCBwYXJzZXJfZnBy aW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQorQEAgLTEzNjEsNiArMTM3MSwxNTEg QEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKICAgIHZhX2Vu ZCAoYXJncyk7CiAgfQogIApAQCAtODgxNyw4ICs5NTM4LDkgQEAgaW5kZXggZDVhMTk5Yi4uZDJh MDRjMyAxMDA2NDQKICsJY29uc3Qgc3RydWN0IHN5bWJvbCAqY29uc3Qgc3ltYm9sID0gZWx0c1tw b3MgKyAyXS5zeW1ib2w7CiArCWNvbnN0IHN0cnVjdCBvYmpfc2VjdGlvbiAqY29uc3Qgc2VjdGlv biA9IFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9sKTsKICsKLSsJLyogQ2hlY2sgb2JqZmlsZSB3 aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4gICovCi0rCWlmIChzZWN0aW9uICYm IG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKHNlY3Rpb24tPm9iamZpbGUsIGRhdGEp KQorKwkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2YXJpYWJsZSBpdHNlbGYgaXMgcGxhY2Vk LgorKwkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5IGJlIE5VTEwuICAqLworKwlp ZiAob2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9s KS0+b2JqZmlsZSwgZGF0YSkpCiArCSAgcmV0dXJuIDE7CiArCiArCS8qIENoZWNrIG9iamZpbGUg d2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCkBAIC05 MDAzLDggKzk3MjUsNDIgQEAgaW5kZXggMTBmZjczZC4uNWI2OGY1NiAxMDA2NDQKICAgIHQtPnRv X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7 CiAgICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFf YWRkcmVzczsKICAgIHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGlu dXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZTsKK2RpZmYgLS1naXQgYS9nZGIvcHBjLWxp bnV4LXRkZXAuYyBiL2dkYi9wcGMtbGludXgtdGRlcC5jCitpbmRleCAzNmNlZGYxLi4yZDczNmZl IDEwMDY0NAorLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9wcGMtbGludXgt dGRlcC5jCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisgI2lu Y2x1ZGUgInNwdS10ZGVwLmgiCisgI2luY2x1ZGUgInhtbC1zeXNjYWxsLmgiCisrI2luY2x1ZGUg ImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtMzJs LmMiCisgI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWFsdGl2ZWMzMmwuYyIKK0BA IC02NzIsOCArNjczLDE5IEBAIHBwYzY0X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRy IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgICByZXMgPSBiZmRfZ2V0X3NlY3Rpb25f Y29udGVudHMgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0aW9uLAorIAkJCQkgICAgICAmYnVmLCBh ZGRyIC0gcy0+YWRkciwgOCk7CisgICAgICAgaWYgKHJlcyAhPSAwKQorLQlyZXR1cm4gZXh0cmFj dF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIDgsIGJ5dGVfb3JkZXIpCistCQktIGJmZF9zZWN0aW9u X3ZtYSAocy0+YmZkLCBzLT50aGVfYmZkX3NlY3Rpb24pICsgcy0+YWRkcjsKKysJeworKwkgIENP UkVfQUREUiBwYywgcmVzb2x2ZWQ7CisrCSAgCisrCSAgcGMgPSBleHRyYWN0X3Vuc2lnbmVkX2lu dGVnZXIgKGJ1ZiwgOCwgYnl0ZV9vcmRlcikKKysJICAgICAgIC0gYmZkX3NlY3Rpb25fdm1hIChz LT5iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikgKyBzLT5hZGRyOworKworKwkgIHJlc29sdmVkID0g bGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRkciwgcGMpOworKwkg IGlmIChyZXNvbHZlZCAhPSBwYykKKysJICAgIHBjID0gcHBjNjRfbGludXhfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLAorKwkJCQkJCQkgdGFyZyk7CisrCisr CSAgcmV0dXJuIHBjOworKwl9CisgICAgfQorIAorICAgcmV0dXJuIGFkZHI7CiBkaWZmIC0tZ2l0 IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwotaW5kZXggODhkYjA4Yi4uMThkYWU5 ZSAxMDA2NDQKK2luZGV4IGM4Y2IzNWMuLjE4ZGFlOWUgMTAwNjQ0CiAtLS0gYS9nZGIvcHJpbnRj bWQuYwogKysrIGIvZ2RiL3ByaW50Y21kLmMKIEBAIC00Niw3ICs0Niw2IEBACkBAIC05MDUwLDcg Kzk4MDYsNyBAQCBpbmRleCA4OGRiMDhiLi4xOGRhZTllIDEwMDY0NAogIAwKICAKICAvKiBBZGQg YW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgotQEAgLTE4NTksNTIgKzE4 NzksNiBAQCBkaXNhYmxlX2Rpc3BsYXlfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5 KQorQEAgLTE4NTksNTEgKzE4NzksNiBAQCBkaXNhYmxlX2Rpc3BsYXlfY29tbWFuZCAoY2hhciAq YXJncywgaW50IGZyb21fdHR5KQogICAgICAgIH0KICB9CiAgCkBAIC05MDgzLDE1ICs5ODM5LDE0 IEBAIGluZGV4IDg4ZGIwOGIuLjE4ZGFlOWUgMTAwNjQ0CiAtCXsKIC0JICBjb25zdCBzdHJ1Y3Qg YmxvY2sgKmNvbnN0IGJsb2NrID0gZWx0c1tpICsgMV0uYmxvY2s7CiAtCSAgY29uc3Qgc3RydWN0 IHN5bWJvbCAqY29uc3Qgc3ltYm9sID0gZWx0c1tpICsgMl0uc3ltYm9sOwotLQkgIGNvbnN0IHN0 cnVjdCBvYmpfc2VjdGlvbiAqY29uc3Qgc2VjdGlvbiA9Ci0tCSAgICBTWU1CT0xfT0JKX1NFQ1RJ T04gKHN5bWJvbCk7CiAtCiAtCSAgaWYgKGJsb2NrICE9IE5VTEwKIC0JICAgICAgJiYgc29saWJf Y29udGFpbnNfYWRkcmVzc19wIChzb2xpYiwKIC0JCQkJCSAgIGJsb2NrLT5zdGFydGFkZHIpKQog LQkgICAgcmV0dXJuIDE7CiAtCi0tCSAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbi0+b2JqZmlsZSA9 PSBzb2xpYi0+b2JqZmlsZSkKKy0JICAvKiBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5 IGJlIE5VTEwuICAqLworLQkgIGlmIChTWU1CT0xfU1lNVEFCIChzeW1ib2wpLT5vYmpmaWxlID09 IHNvbGliLT5vYmpmaWxlKQogLQkgICAgcmV0dXJuIDE7CiAtCX0KIC0gICAgICBlbmRwb3MgLT0g b3BsZW47CkBAIC05MTAzLDcgKzk4NTgsNyBAQCBpbmRleCA4OGRiMDhiLi4xOGRhZTllIDEwMDY0 NAogIC8qIGRpc3BsYXlfY2hhaW4gaXRlbXMgcG9pbnQgdG8gYmxvY2tzIGFuZCBleHByZXNzaW9u cy4gIFNvbWUgZXhwcmVzc2lvbnMgaW4KICAgICB0dXJuIG1heSBwb2ludCB0byBzeW1ib2xzLgog ICAgIEJvdGggc3ltYm9scyBhbmQgYmxvY2tzIGFyZSBvYnN0YWNrX2FsbG9jJ2Qgb24gb2JqZmls ZV9zdGFjaywgYW5kIGFyZQotQEAgLTE5MTYsMTggKzE4OTAsMjAgQEAgZGlzcGxheV91c2VzX3Nv bGliX3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpkLAorQEAgLTE5MTUsMTggKzE4OTAsMjAgQEAg ZGlzcGxheV91c2VzX3NvbGliX3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpkLAogIHN0YXRpYyB2 b2lkCiAgY2xlYXJfZGFuZ2xpbmdfZGlzcGxheV9leHByZXNzaW9ucyAoc3RydWN0IHNvX2xpc3Qg KnNvbGliKQogIHsKQEAgLTkxMzQsNyArOTg4OSw3IEBAIGluZGV4IDg4ZGIwOGIuLjE4ZGFlOWUg MTAwNjQ0CiAgfQogIAwKICAKLUBAIC0yODEyLDQgKzI3ODgsNiBAQCBTaG93IHByaW50aW5nIG9m IHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwK K0BAIC0yODExLDQgKzI3ODgsNiBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBh bmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKICAJCQkgICBOVUxMLAogIAkJ CSAgIHNob3dfcHJpbnRfc3ltYm9sX2ZpbGVuYW1lLAogIAkJCSAgICZzZXRwcmludGxpc3QsICZz aG93cHJpbnRsaXN0KTsKQEAgLTE1MjUyLDYgKzE2MDA3LDI4IEBAIGluZGV4IDFlOGQ0OGUuLjk1 MTg1ZDQgMTAwNjQ0CiAgCiAgICAgICAgaWYgKChnZGJfb3V0cHV0X3N5bSA9PSBOVUxMKSB8fCAo Z2RiX291dHB1dF9sZW5fc3ltID09IE5VTEwpKQogIAlyZXQgPSAtMTsKK2RpZmYgLS1naXQgYS9n ZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYworaW5kZXggZGE0MTM3Yi4u ZTNmY2IxYSAxMDA2NDQKKy0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9zaC1s aW51eC10ZGVwLmMKK0BAIC0yNSw2ICsyNSw3IEBACisgCisgI2luY2x1ZGUgImdsaWJjLXRkZXAu aCIKKyAjaW5jbHVkZSAic2gtdGRlcC5oIgorKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCisgCisg I2RlZmluZSBSRUdTeDE2KGJhc2UpIFwKKyAgIHsoYmFzZSksICAgICAgMH0sIFwKK0BAIC04OSw2 ICs5MCw5IEBAIHNoX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgICAgIHRkZXAtPmNvcmVfZ3JlZ21hcCA9IChzdHJ1 Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZ3JlZ3NfdGFibGU7CisgICAgICAgdGRlcC0+Y29yZV9m cHJlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZnByZWdzX3RhYmxlOworICAg ICB9CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAv KiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAq LwogZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1kYXJ3aW4uYyBiL2dkYi9zb2xpYi1kYXJ3aW4uYwog aW5kZXggM2M3MDA4OS4uMGVlN2Q4NSAxMDA2NDQKIC0tLSBhL2dkYi9zb2xpYi1kYXJ3aW4uYwpA QCAtMTUyODgsMTAgKzE2MDY1LDIwIEBAIGluZGV4IDk0YTc3ZmIuLjdlYTY4ZDIgMTAwNjQ0CiAg fQogIAogZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCi1p bmRleCA4MjZmOGJmLi40ZGVmODhkIDEwMDY0NAoraW5kZXggZTQ5NzM2NC4uZmViYTIzYyAxMDA2 NDQKIC0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKICsrKyBiL2dkYi9zb2xpYi1zdnI0LmMKLUBAIC0x OTYwLDcgKzE5NjAsNiBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyBzdnI0X3NvX29wczsKK0BAIC0x MjA4LDcgKzEyMDgsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUgKENPUkVfQUREUiBw YykKKyAJICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCisgCSAgfHwgKHBj ID49IGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cKKyAJICAgICAgJiYgcGMgPCBpbmZvLT5pbnRl cnBfcGx0X3NlY3RfaGlnaCkKKy0JICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpKTsKKysJ ICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpCisrCSAgfHwgaW5fZ251X2lmdW5jX3N0dWIg KHBjKSk7CisgfQorIAorIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQs IGNvbXB1dGUgdGhlIGVudHJ5LXBvaW50CitAQCAtMTk2MSw3ICsxOTYyLDYgQEAgc3RydWN0IHRh cmdldF9zb19vcHMgc3ZyNF9zb19vcHM7CiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgogIGVsZl9s b29rdXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkgICAg ICAgY29uc3QgY2hhciAqbmFtZSwKQEAgLTE1Mjk5LDcgKzE2MDg2LDcgQEAgaW5kZXggODI2Zjhi Zi4uNGRlZjg4ZCAxMDA2NDQKICAJCSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCiAg ewogICAgYmZkICphYmZkOwotQEAgLTE5NzgsOCArMTk3Nyw3IEBAIGVsZl9sb29rdXBfbGliX3N5 bWJvbCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTk3OSw4ICsxOTc5LDcg QEAgZWxmX2xvb2t1cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK ICAgIGlmIChhYmZkID09IE5VTEwgfHwgc2Nhbl9keW50YWcgKERUX1NZTUJPTElDLCBhYmZkLCBO VUxMKSAhPSAxKQogICAgICByZXR1cm4gTlVMTDsKICAKQEAgLTE1MzYwLDYgKzE2MTQ3LDUwIEBA IGluZGV4IGM3YmVhYmEuLmUzMTE2NGMgMTAwNjQ0CiAgICBzb21fc3ltZmlsZV9maW5pc2gsCQkv KiBzeW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KICAgIHNvbV9zeW1m aWxlX29mZnNldHMsCQkvKiBzeW1fb2Zmc2V0czogIFRyYW5zbGF0ZSBleHQuIHRvIGludC4gcmVs b2NhdGlvbiAqLwogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBzeW1fc2VnbWVudHM6 IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KK2RpZmYgLS1naXQgYS9nZGIvc3BhcmMtbGlu dXgtdGRlcC5jIGIvZ2RiL3NwYXJjLWxpbnV4LXRkZXAuYworaW5kZXggZDY1ZGI2Yy4uZTkxYzBi ZiAxMDA2NDQKKy0tLSBhL2dkYi9zcGFyYy1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9zcGFyYy1s aW51eC10ZGVwLmMKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgInN5bXRhYi5oIgorICNp bmNsdWRlICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCisrI2luY2x1 ZGUgImxpbnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAic3BhcmMtdGRlcC5oIgorIAorQEAgLTI3 OSw2ICsyODAsOSBAQCBzcGFyYzMyX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZv IGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgZHdhcmYyX2FwcGVuZF91bndpbmRl cnMgKGdkYmFyY2gpOworIAorICAgc2V0X2dkYmFyY2hfd3JpdGVfcGMgKGdkYmFyY2gsIHNwYXJj X2xpbnV4X3dyaXRlX3BjKTsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRk cik7CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3Npbmct cHJvdG90eXBlcy4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3NwYXJjNjQtbGludXgtdGRlcC5jIGIv Z2RiL3NwYXJjNjQtbGludXgtdGRlcC5jCitpbmRleCA4YjdlOTA4Li40ZGU2ZDljIDEwMDY0NAor LS0tIGEvZ2RiL3NwYXJjNjQtbGludXgtdGRlcC5jCisrKysgYi9nZGIvc3BhcmM2NC1saW51eC10 ZGVwLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgInN5bXRhYi5oIgorICNpbmNsdWRl ICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCisrI2luY2x1ZGUgImxp bnV4LXRkZXAuaCIKKyAKKyAjaW5jbHVkZSAic3BhcmM2NC10ZGVwLmgiCisgCitAQCAtMjQ0LDYg KzI0NSw5IEBAIHNwYXJjNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5m bywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICB0ZGVwLT5zdGVwX3RyYXAgPSBzcGFyYzY0 X2xpbnV4X3N0ZXBfdHJhcDsKKyAKKyAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChnZGJhcmNoLCBz cGFyYzY0X2xpbnV4X3dyaXRlX3BjKTsKKysKKysgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkcik7CisgfQorIAwKKyAKIGRpZmYgLS1naXQgYS9nZGIvc3B1LXRkZXAuYyBiL2dkYi9z cHUtdGRlcC5jCiBpbmRleCBjNmRiOGRjLi43MzU5YjUwIDEwMDY0NAogLS0tIGEvZ2RiL3NwdS10 ZGVwLmMKQEAgLTE1NTA2LDEwICsxNjMzNywyMCBAQCBpbmRleCBlZmEwNjllLi5iNTIwYjkzIDEw MDY0NAogIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChzdHJ1Y3Qgb2JqZmls ZSAqKTsKICAKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1pc2MuYwotaW5k ZXggMWYzZWI5ZS4uZDA5NmQ1YyAxMDA2NDQKK2luZGV4IDFmM2ViOWUuLjNmZjIzOWEgMTAwNjQ0 CiAtLS0gYS9nZGIvc3ltbWlzYy5jCiArKysgYi9nZGIvc3ltbWlzYy5jCi1AQCAtMTE0Myw3ICsx MTQzLDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdub3JlLCBpbnQgZnJv bV90dHkpCitAQCAtMjk0LDYgKzI5NCw5IEBAIGR1bXBfbXN5bWJvbHMgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBzdHJ1Y3QgdWlfZmlsZSAqb3V0ZmlsZSkKKyAJY2FzZSBtc3RfdGV4dDoKKyAJ ICBtc190eXBlID0gJ1QnOworIAkgIGJyZWFrOworKwljYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoK KysJICBtc190eXBlID0gJ2knOworKwkgIGJyZWFrOworIAljYXNlIG1zdF9zb2xpYl90cmFtcG9s aW5lOgorIAkgIG1zX3R5cGUgPSAnUyc7CisgCSAgYnJlYWs7CitAQCAtMTE0Myw3ICsxMTQ2LDcg QEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkp CiAgICAgIHdoaWxlIChsZW5ndGgtLSkKICAgICAgICB7CiAgCXN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGIsIFNZTUJPTF9MSU5LQUdFX05BTUUgKCpwc3ltKSwKQEAgLTE1NTE4LDcgKzE2MzU5 LDcgQEAgaW5kZXggMWYzZWI5ZS4uZDA5NmQ1YyAxMDA2NDQKICAJaWYgKCFzeW0pCiAgCSAgewog IAkgICAgcHJpbnRmX2ZpbHRlcmVkICgiU3RhdGljIHN5bWJvbCBgIik7Ci1AQCAtMTE2MCw3ICsx MTYwLDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAoY2hhciAqaWdub3JlLCBpbnQgZnJv bV90dHkpCitAQCAtMTE2MCw3ICsxMTYzLDcgQEAgbWFpbnRlbmFuY2VfY2hlY2tfc3ltdGFicyAo Y2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCiAgICAgIHdoaWxlIChsZW5ndGgtLSkKICAgICAg ICB7CiAgCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIFNZTUJPTF9MSU5LQUdFX05BTUUg KCpwc3ltKSwKQEAgLTE1NTI4LDcgKzE2MzY5LDcgQEAgaW5kZXggMWYzZWI5ZS4uZDA5NmQ1YyAx MDA2NDQKICAJICB7CiAgCSAgICBwcmludGZfZmlsdGVyZWQgKCJHbG9iYWwgc3ltYm9sIGAiKTsK IGRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDQyNjMyNmQu LjIwZDkwZGUgMTAwNjQ0CitpbmRleCBhZjRlNTAxLi45NTM3ZGFlIDEwMDY0NAogLS0tIGEvZ2Ri L3N5bXRhYi5jCiArKysgYi9nZGIvc3ltdGFiLmMKIEBAIC00Miw2ICs0Miw3IEBACkBAIC0xNTcx Nyw3ICsxNjU1OCw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgewogICAgc3Ry dWN0IHN5bWJvbCAqc3ltOwogICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdkZWY7 Ci1AQCAtMTM1NCw1NSArMTM4MSwxOSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorQEAgLTEzNTQsNTYgKzEzODEsMTkgQEAg bG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2Vf bmFtZSwKICAgIC8qIFNlYXJjaCBzcGVjaWZpZWQgYmxvY2sgYW5kIGl0cyBzdXBlcmlvcnMuICBE b24ndCBzZWFyY2gKICAgICAgIFNUQVRJQ19CTE9DSyBvciBHTE9CQUxfQkxPQ0suICAqLwogIApA QCAtMTU3MzUsMTMgKzE2NTc2LDE0IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAt ICAgICAgJiYgYmxvY2sgIT0gTlVMTCkKIC0gICAgewogLSAgICAgIHN0cnVjdCBzeW1ib2wgKnN5 bSA9IE5VTEw7CistICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpmdW5jdGlvbl9ibG9jayA9IGJs b2NrOwogLSAgICAgIC8qICd0aGlzJyBpcyBvbmx5IGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uJ3Mg YmxvY2ssIHNvIGZpbmQgdGhlCiAtCSBlbmNsb3NpbmcgZnVuY3Rpb24gYmxvY2suICAqLwotLSAg ICAgIGZvciAoOyBibG9jayAmJiAhQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKTsKLS0JICAgYmxvY2sg PSBCTE9DS19TVVBFUkJMT0NLIChibG9jaykpOworLSAgICAgIGZvciAoOyBmdW5jdGlvbl9ibG9j ayAmJiAhQkxPQ0tfRlVOQ1RJT04gKGZ1bmN0aW9uX2Jsb2NrKTsKKy0JICAgZnVuY3Rpb25fYmxv Y2sgPSBCTE9DS19TVVBFUkJMT0NLIChmdW5jdGlvbl9ibG9jaykpOwogLQotLSAgICAgIGlmIChi bG9jayAmJiAhZGljdF9lbXB0eSAoQkxPQ0tfRElDVCAoYmxvY2spKSkKLS0Jc3ltID0gbG9va3Vw X2Jsb2NrX3N5bWJvbCAoYmxvY2ssIGxhbmdkZWYtPmxhX25hbWVfb2ZfdGhpcywKKy0gICAgICBp ZiAoZnVuY3Rpb25fYmxvY2sgJiYgIWRpY3RfZW1wdHkgKEJMT0NLX0RJQ1QgKGZ1bmN0aW9uX2Js b2NrKSkpCistCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGZ1bmN0aW9uX2Jsb2NrLCBsYW5n ZGVmLT5sYV9uYW1lX29mX3RoaXMsCiAtCQkJCSAgIE5VTEwsIFZBUl9ET01BSU4pOwogLSAgICAg IGlmIChzeW0pCiAtCXsKQEAgLTE1NzgwLDcgKzE2NjIyLDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBk OTBkZSAxMDA2NDQKICAgIGlmIChzeW0gIT0gTlVMTCkKICAgICAgcmV0dXJuIHN5bTsKICAKLUBA IC0xNDEyLDExICsxNDAzLDExIEBAIGxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1l LCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCitAQCAtMTQxMywxMSArMTQwMywxMSBAQCBsb29r dXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAogICAgICAgZGVzaXJlZCBuYW1lIGFzIGEgZmlsZS1sZXZlbCBzdGF0aWMsIHRoZW4gZG8gcHN5 bXRhYi10by1zeW10YWIKICAgICAgIGNvbnZlcnNpb24gb24gdGhlIGZseSBhbmQgcmV0dXJuIHRo ZSBmb3VuZCBzeW1ib2wuICovCiAgCkBAIC0xNTc5NCw3ICsxNjYzNiw3IEBAIGluZGV4IDQyNjMy NmQuLjIwZDkwZGUgMTAwNjQ0CiAgICBpZiAoc3ltICE9IE5VTEwpCiAgICAgIHJldHVybiBzeW07 CiAgCi1AQCAtMTQyNywzMCArMTQxOCw4MSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hh ciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAorQEAgLTE0MjgsMzAgKzE0MTgsODEg QEAgbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmth Z2VfbmFtZSwKICAgICBEb24ndCBzZWFyY2ggU1RBVElDX0JMT0NLIG9yIEdMT0JBTF9CTE9DSy4g ICovCiAgCiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgpAQCAtMTU4ODcsNyArMTY3MjksNyBAQCBp bmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAogICAgcmV0dXJuIE5VTEw7CiAgfQotQEAg LTE0ODQsMTMgKzE1MjYsMTIgQEAgbG9va3VwX29iamZpbGVfZnJvbV9ibG9jayAoY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaykKK0BAIC0xNDg1LDEzICsxNTI2LDEyIEBAIGxvb2t1cF9vYmpmaWxl X2Zyb21fYmxvY2sgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spCiAgICAgYmxvY2tfZm91bmQg YXBwcm9wcmlhdGVseS4gICovCiAgCiAgc3RydWN0IHN5bWJvbCAqCkBAIC0xNTkwMyw3ICsxNjc0 NSw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgICBpZiAoc3ltKQogICAgICB7 CiAgICAgICAgYmxvY2tfZm91bmQgPSBibG9jazsKLUBAIC0xNTA2LDcgKzE1NDcsNiBAQCBsb29r dXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAorQEAgLTE1MDcsNyArMTU0Nyw2IEBAIGxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChj b25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCiAgc3RydWN0IHN5bWJv bCAqCiAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2Jq ZmlsZSAqbWFpbl9vYmpmaWxlLAogIAkJCQkgICBjb25zdCBjaGFyICpuYW1lLApAQCAtMTU5MTEs NyArMTY3NTMsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAkJCQkgICBjb25z dCBkb21haW5fZW51bSBkb21haW4pCiAgewogICAgY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7Ci1AQCAtMTUyNSw3ICsxNTY1LDcgQEAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpm aWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAorQEAgLTE1MjYsNyArMTU2 NSw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0IG9i amZpbGUgKm1haW5fb2JqZmlsZSwKICAgICAgICAgIHsKICAgICAgICAgICAgYnYgPSBCTE9DS1ZF Q1RPUiAocyk7CiAgICAgICAgICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBHTE9C QUxfQkxPQ0spOwpAQCAtMTU5MjAsNyArMTY3NjIsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRl IDEwMDY0NAogICAgICAgICAgICBpZiAoc3ltKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgIGJsb2NrX2ZvdW5kID0gYmxvY2s7Ci1AQCAtMTUzNCwxNiArMTU3NCwxNiBAQCBsb29rdXBf Z2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICptYWluX29i amZpbGUsCitAQCAtMTUzNSwxNiArMTU3NCwxNiBAQCBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9t X29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsCiAgICAgICAgICB9 CiAgCiAgICAgICAgLyogTm93IGdvIHRocm91Z2ggcHN5bXRhYnMuICAqLwpAQCAtMTU5NDAsNyAr MTY3ODIsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogICAgICAgICAgICAgICAg cmV0dXJuIGZpeHVwX3N5bWJvbF9zZWN0aW9uIChzeW0sIChzdHJ1Y3Qgb2JqZmlsZSAqKW9iamZp bGUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KLUBAIC0xNTU4LDggKzE1OTgsNyBAQCBs b29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpt YWluX29iamZpbGUsCitAQCAtMTU1OSw4ICsxNTk4LDcgQEAgbG9va3VwX2dsb2JhbF9zeW1ib2xf ZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAogICAgIHN0 YXRpYyBzeW1ib2xzLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCkBAIC0xNTk1MCw3 ICsxNjc5Miw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgCQkJICAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKQogIHsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLUBAIC0xNTcy LDcgKzE2MTEsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQgYmxvY2tfaW5kZXgs CitAQCAtMTU3Myw3ICsxNjExLDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJs b2NrX2luZGV4LAogICAgewogICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKICAgICAgYmxvY2sg PSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKQEAgLTE1OTU5LDcgKzE2ODAx LDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAgICAgaWYgKHN5bSkKICAgICAg ICB7CiAgCWJsb2NrX2ZvdW5kID0gYmxvY2s7Ci1AQCAtMTU5MCw3ICsxNjI5LDYgQEAgbG9va3Vw X3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAorQEAgLTE1OTEsNyArMTYyOSw2 IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKICAKICBzdGF0 aWMgc3RydWN0IHN5bWJvbCAqCiAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9j a19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKQEAgLTE1OTY3LDcgKzE2ODA5LDcgQEAgaW5kZXgg NDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWlu KQogIHsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLUBAIC0xNjAxLDE2ICsxNjM5LDE1IEBAIGxv b2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5h bWUsCitAQCAtMTYwMiwxNiArMTYzOSwxNSBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAo aW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAogICAgc3RydWN0IHN5bXRhYiAqczsK ICAgIGNvbnN0IGludCBwc3ltdGFiX2luZGV4ID0gKGJsb2NrX2luZGV4ID09IEdMT0JBTF9CTE9D SyA/IDEgOiAwKTsKICAKQEAgLTE1OTg3LDcgKzE2ODI5LDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBk OTBkZSAxMDA2NDQKICAJaWYgKCFzeW0pCiAgCSAgewogIAkgICAgLyogVGhpcyBzaG91bGRuJ3Qg YmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydCB0cnkKLUBAIC0xNjI3LDcgKzE2NjQs NyBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBj aGFyICpuYW1lLAorQEAgLTE2MjgsNyArMTY2NCw3IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10 YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCiAgCSAgICBibG9jayA9IEJM T0NLVkVDVE9SX0JMT0NLIChidiwKICAJCQkJICAgICAgIGJsb2NrX2luZGV4ID09IEdMT0JBTF9C TE9DSyA/CiAgCQkJCSAgICAgICBTVEFUSUNfQkxPQ0sgOiBHTE9CQUxfQkxPQ0spOwpAQCAtMTU5 OTYsNyArMTY4MzgsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAkgICAgaWYg KCFzeW0pCiAgCSAgICAgIGVycm9yIChfKCJJbnRlcm5hbDogJXMgc3ltYm9sIGAlcycgZm91bmQg aW4gJXMgcHN5bXRhYiBidXQgbm90IGluIHN5bXRhYi5cbiVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1 bmN0aW9uLCBvciBtYXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuKGlmIGEgdGVtcGxhdGUsIHRy eSBzcGVjaWZ5aW5nIGFuIGluc3RhbnRpYXRpb246ICVzPHR5cGU+KS4iKSwKICAJCSAgICAgYmxv Y2tfaW5kZXggPT0gR0xPQkFMX0JMT0NLID8gImdsb2JhbCIgOiAic3RhdGljIiwKLUBAIC0xNjQ2 LDcgKzE2ODMsNiBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4 LCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTE2NDcsNyArMTY4Myw2IEBAIGxvb2t1cF9zeW1ib2xf YXV4X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCiAgCiAgc3Ry dWN0IHN5bWJvbCAqCiAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAq bmFtZSwKQEAgLTE2MDA0LDcgKzE2ODQ2LDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2 NDQKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogIAkJCSAgICAgIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbikKICB7Ci1AQCAtMTY4MCwxMSArMTcxNiwxMSBAQCBiYXNpY19s b29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTE2ODEsMTEgKzE3 MTYsMTEgQEAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwK ICAgICAgIHRoYW4gdGhhdCBvbmUsIHNvIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIHdvcnJ5IGFi b3V0IHRoYXQgZm9yCiAgICAgICBub3cuICAqLwogIApAQCAtMTYwMTgsNyArMTY4NjAsNyBAQCBp bmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIH0KICAKICAvKiBMb29rdXAgYSBzeW1ib2wg aW4gdGhlIHN0YXRpYyBibG9jayBhc3NvY2lhdGVkIHRvIEJMT0NLLCBpZiB0aGVyZQotQEAgLTE2 OTIsMTQgKzE3MjgsMTMgQEAgYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hh ciAqbmFtZSwKK0BAIC0xNjkzLDE0ICsxNzI4LDEzIEBAIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9u bG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCiAgCiAgc3RydWN0IHN5bWJvbCAqCiAgbG9va3VwX3N5 bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0xNjAzNCw3ICsxNjg3Niw3IEBAIGlu ZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgICBlbHNlCiAgICAgIHJldHVybiBOVUxMOwog IH0KLUBAIC0xNzA5LDcgKzE3NDQsNiBAQCBsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29uc3QgY2hh ciAqbmFtZSwKK0BAIC0xNzEwLDcgKzE3NDQsNiBAQCBsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29u c3QgY2hhciAqbmFtZSwKICAKICBzdHJ1Y3Qgc3ltYm9sICoKICBsb29rdXBfc3ltYm9sX2dsb2Jh bCAoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE2MDQyLDcgKzE2ODg0LDcgQEAgaW5kZXggNDI2MzI2 ZC4uMjBkOTBkZSAxMDA2NDQKICAJCSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCiAg CQkgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCiAgewotQEAgLTE3MTksMTUgKzE3NTMs MTUgQEAgbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMTcyMCwx NSArMTc1MywxNSBAQCBsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKICAg IC8qIENhbGwgbGlicmFyeS1zcGVjaWZpYyBsb29rdXAgcHJvY2VkdXJlLiAgKi8KICAgIG9iamZp bGUgPSBsb29rdXBfb2JqZmlsZV9mcm9tX2Jsb2NrIChibG9jayk7CiAgICBpZiAob2JqZmlsZSAh PSBOVUxMKQpAQCAtMTYwNjEsNyArMTY5MDMsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEw MDY0NAogIH0KICAKICBpbnQKLUBAIC0xNzUxLDE0ICsxNzg1LDExIEBAIHN5bWJvbF9tYXRjaGVz X2RvbWFpbiAoZW51bSBsYW5ndWFnZSBzeW1ib2xfbGFuZ3VhZ2UsCitAQCAtMTc1MiwxNCArMTc4 NSwxMSBAQCBzeW1ib2xfbWF0Y2hlc19kb21haW4gKGVudW0gbGFuZ3VhZ2Ugc3ltYm9sX2xhbmd1 YWdlLAogIH0KICAKICAvKiBMb29rLCBpbiBwYXJ0aWFsX3N5bXRhYiBQU1QsIGZvciBzeW1ib2wg d2hvc2UgbmF0dXJhbCBuYW1lIGlzIE5BTUUuCkBAIC0xNjA3OCw3ICsxNjkyMCw3IEBAIGluZGV4 IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0CiAgewogICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICp0 ZW1wOwogICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoqc3RhcnQsICoqcHN5bTsKLUBAIC0xODEw LDkgKzE4NDEsNyBAQCBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRh YiAqcHN0LCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTE4MTEsOSArMTg0MSw3IEBAIGxvb2t1cF9w YXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNvbnN0IGNoYXIgKm5h bWUsCiAgCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImZhaWxlZCBpbnRl cm5hbCBjb25zaXN0ZW5jeSBjaGVjayIpKTsKICAKICAgICAgICB3aGlsZSAodG9wIDw9IHJlYWxf dG9wCkBAIC0xNjA4OSw3ICsxNjkzMSw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUgMTAwNjQ0 CiAgCXsKICAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKCp0 b3ApLAogIAkJCQkgICAgIFNZTUJPTF9ET01BSU4gKCp0b3ApLCBkb21haW4pKQotQEAgLTE4Mjks MTUgKzE4NTgsOSBAQCBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRh YiAqcHN0LCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTE4MzAsMTUgKzE4NTgsOSBAQCBsb29rdXBf cGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpu YW1lLAogICAgICAgIGZvciAocHN5bSA9IHN0YXJ0OyBwc3ltIDwgc3RhcnQgKyBsZW5ndGg7IHBz eW0rKykKICAJewogIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZTUJPTF9MQU5HVUFH RSAoKnBzeW0pLApAQCAtMTYxMDgsNyArMTY5NTAsNyBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRl IDEwMDY0NAogIAl9CiAgICAgIH0KICAKLUBAIC0xODc5LDIyICsxOTAyLDI1IEBAIGJhc2ljX2xv b2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQorQEAgLTE4ODAsMjIgKzE5 MDIsMjUgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUp CiAgICB7CiAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwogICAgICBibG9jayA9IEJMT0NLVkVD VE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKQEAgLTE2MTM5LDcgKzE2OTgxLDcgQEAgaW5k ZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJaWYgKCFzeW0pCiAgCSAgewogIAkgICAgLyog VGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydAotQEAgLTE5 MDMsNyArMTkyOSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFy ICpuYW1lKQorQEAgLTE5MDQsNyArMTkyOSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90 eXBlIChjb25zdCBjaGFyICpuYW1lKQogIAkgICAgICogdGhlIHBzeW10YWIgZ2V0cyBpdCB3cm9u ZyBpbiBzb21lIGNhc2VzLgogIAkgICAgICovCiAgCSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JM T0NLIChidiwgU1RBVElDX0JMT0NLKTsKQEAgLTE2MTQ4LDcgKzE2OTkwLDcgQEAgaW5kZXggNDI2 MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJICAgIGlmICghc3ltKQogIAkgICAgICBlcnJvciAoXygi SW50ZXJuYWw6IGdsb2JhbCBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBwc3ltdGFiIGJ1dCBub3Qg aW4gc3ltdGFiLlxuXAogICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBtYXkgYmUg YSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5MjcsMjEgKzE5NTMsMjYgQEAgYmFzaWNfbG9v a3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCitAQCAtMTkyOCwyMSArMTk1 MywyNiBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkK ICAgIHsKICAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CiAgICAgIGJsb2NrID0gQkxPQ0tWRUNU T1JfQkxPQ0sgKGJ2LCBTVEFUSUNfQkxPQ0spOwpAQCAtMTYxNzksNyArMTcwMjEsNyBAQCBpbmRl eCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAlpZiAoIXN5bSkKICAJICB7CiAgCSAgICAvKiBU aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCBhcyBhIGxhc3QgcmVzb3J0Ci1AQCAtMTk1 MCw3ICsxOTgxLDcgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIg Km5hbWUpCitAQCAtMTk1MSw3ICsxOTgxLDcgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5 cGUgKGNvbnN0IGNoYXIgKm5hbWUpCiAgCSAgICAgKiB0aGUgcHN5bXRhYiBnZXRzIGl0IHdyb25n IGluIHNvbWUgY2FzZXMuCiAgCSAgICAgKi8KICAJICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxP Q0sgKGJ2LCBHTE9CQUxfQkxPQ0spOwpAQCAtMTYxODgsNyArMTcwMzAsNyBAQCBpbmRleCA0MjYz MjZkLi4yMGQ5MGRlIDEwMDY0NAogIAkgICAgaWYgKCFzeW0pCiAgCSAgICAgIGVycm9yIChfKCJJ bnRlcm5hbDogc3RhdGljIHN5bWJvbCBgJXMnIGZvdW5kIGluICVzIHBzeW10YWIgYnV0IG5vdCBp biBzeW10YWIuXG5cCiAgJXMgbWF5IGJlIGFuIGlubGluZWQgZnVuY3Rpb24sIG9yIG1heSBiZSBh IHRlbXBsYXRlIGZ1bmN0aW9uXG5cCi1AQCAtMTk3NSw5ICsyMDA2LDIzIEBAIGZpbmRfbWFpbl9w c3ltdGFiICh2b2lkKQorQEAgLTE5NzYsOSArMjAwNiwyMyBAQCBmaW5kX21haW5fcHN5bXRhYiAo dm9pZCkKICAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0OwogICAgc3RydWN0IG9iamZpbGUg Km9iamZpbGU7CiAgCkBAIC0xNjIxNCw3ICsxNzA1Niw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkw ZGUgMTAwNjQ0CiAgICAgICAgewogIAlyZXR1cm4gKHBzdCk7CiAgICAgICAgfQotQEAgLTE5OTUs MTQgKzIwNDAsMTAgQEAgZmluZF9tYWluX3BzeW10YWIgKHZvaWQpCitAQCAtMTk5NiwxNCArMjA0 MCwxMCBAQCBmaW5kX21haW5fcHN5bXRhYiAodm9pZCkKICAgICBzZWFyY2ggb24gdGhlIHN5bWJv bHMuICBFYWNoIHN5bWJvbCB3aGljaCBpcyBtYXJrZWQgYXMgYmVpbmcgYSBPYmpDL0MrKwogICAg IHN5bWJvbCAobGFuZ3VhZ2VfY3BsdXMgb3IgbGFuZ3VhZ2Vfb2JqYyBzZXQpIGhhcyBib3RoIHRo ZSBlbmNvZGVkIGFuZAogICAgIG5vbi1lbmNvZGVkIG5hbWVzIHRlc3RlZCBmb3IgYSBtYXRjaC4K QEAgLTE2MjI5LDcgKzE3MDcxLDcgQEAgaW5kZXggNDI2MzI2ZC4uMjBkOTBkZSAxMDA2NDQKICAJ CSAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQogIHsKICAgIHN0cnVjdCBkaWN0X2l0ZXJh dG9yIGl0ZXI7Ci1AQCAtMjAxNSw5ICsyMDU2LDcgQEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29u c3Qgc3RydWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yMDE2LDkgKzIw NTYsNyBAQCBsb29rdXBfYmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBj b25zdCBjaGFyICpuYW1lLAogIAkgICBzeW0gPSBkaWN0X2l0ZXJfbmFtZV9uZXh0IChuYW1lLCAm aXRlcikpCiAgCXsKICAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VB R0UgKHN5bSksCkBAIC0xNjI0MCw3ICsxNzA4Miw3IEBAIGluZGV4IDQyNjMyNmQuLjIwZDkwZGUg MTAwNjQ0CiAgCSAgICByZXR1cm4gc3ltOwogIAl9CiAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAt MjAzNyw5ICsyMDc2LDcgQEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2Nr ICpibG9jaywgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yMDM4LDkgKzIwNzYsNyBAQCBsb29rdXBf YmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpuYW1l LAogIAkgICBzeW0gPSBkaWN0X2l0ZXJfbmFtZV9uZXh0IChuYW1lLCAmaXRlcikpCiAgCXsKICAJ ICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKHN5bSksCkBAIC0x NjI1MSw3ICsxNzA5MywxNiBAQCBpbmRleCA0MjYzMjZkLi4yMGQ5MGRlIDEwMDY0NAogIAkgICAg ewogIAkgICAgICBzeW1fZm91bmQgPSBzeW07CiAgCSAgICAgIGlmICghU1lNQk9MX0lTX0FSR1VN RU5UIChzeW0pKQotQEAgLTMyNjEsNyArMzI5OCw3IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpy ZWdleHAsIGRvbWFpbl9lbnVtIGtpbmQsIGludCBuZmlsZXMsIGNoYXIgKmZpbGVzW10sCitAQCAt MzIwMSw3ICszMjM3LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2Vu dW0ga2luZCwgaW50IG5maWxlcywgY2hhciAqZmlsZXNbXSwKKyAgIHttc3RfZmlsZV9kYXRhLCBt c3Rfc29saWJfdHJhbXBvbGluZSwgbXN0X2FicywgbXN0X3Vua25vd259OworICAgc3RhdGljIGVu dW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczRbXQorICAgPQorLSAge21zdF9maWxlX2Jzcywg bXN0X3RleHQsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKKysgIHttc3RfZmlsZV9ic3MsIG1zdF90 ZXh0X2dudV9pZnVuYywgbXN0X2FicywgbXN0X3Vua25vd259OworICAgZW51bSBtaW5pbWFsX3N5 bWJvbF90eXBlIG91cnR5cGU7CisgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTI7 CisgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTM7CitAQCAtMzI2Miw3ICszMjk4 LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudW0ga2luZCwgaW50 IG5maWxlcywgY2hhciAqZmlsZXNbXSwKICAgICAgIG1hdGNoaW5nIHRoZSByZWdleHAuICBUaGF0 IHdheSB3ZSBkb24ndCBoYXZlIHRvIHJlcHJvZHVjZSBhbGwgb2YKICAgICAgIHRoZSBtYWNoaW5l cnkgYmVsb3cuICovCiAgCkBAIC0xNjI2MSwxMCArMTcxMTIsMTkgQEAgaW5kZXggNDI2MzI2ZC4u MjBkOTBkZSAxMDA2NDQKICAgICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoqYm91bmQsICoqZ2Jv dW5kLCAqKnNib3VuZDsKICAgICAgaW50IGtlZXBfZ29pbmcgPSAxOwogZGlmZiAtLWdpdCBhL2dk Yi9zeW10YWIuaCBiL2dkYi9zeW10YWIuaAotaW5kZXggODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQK K2luZGV4IDE2N2RmZTguLjJmODhlOTMgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltdGFiLmgKICsrKyBi L2dkYi9zeW10YWIuaAotQEAgLTM5Niw3ICszOTYsMTAgQEAgdHlwZWRlZiBlbnVtIGRvbWFpbl9l bnVtX3RhZworQEAgLTI4MCw2ICsyODAsOCBAQCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUKKyB7 CisgICBtc3RfdW5rbm93biA9IDAsCQkvKiBVbmtub3duIHR5cGUsIHRoZSBkZWZhdWx0ICovCisg ICBtc3RfdGV4dCwJCQkvKiBHZW5lcmFsbHkgZXhlY3V0YWJsZSBpbnN0cnVjdGlvbnMgKi8KKysg IG1zdF90ZXh0X2dudV9pZnVuYywJCS8qIEV4ZWN1dGFibGUgY29kZSByZXR1cm5pbmcgYWRkcmVz cworKwkJCQkgICBvZiBleGVjdXRhYmxlIGNvZGUgKi8KKyAgIG1zdF9kYXRhLAkJCS8qIEdlbmVy YWxseSBpbml0aWFsaXplZCBkYXRhICovCisgICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxseSB1bmlu aXRpYWxpemVkIGRhdGEgKi8KKyAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29sdXRlIChu b25yZWxvY2F0YWJsZSkgKi8KK0BAIC0zOTYsNyArMzk4LDEwIEBAIHR5cGVkZWYgZW51bSBkb21h aW5fZW51bV90YWcKICAgIEZVTkNUSU9OU19ET01BSU4sCiAgCiAgICAvKiBBbGwgZGVmaW5lZCB0 eXBlcyAqLwpAQCAtMTYyNzYsNyArMTcxMzYsNyBAQCBpbmRleCA4MDBmZmQ4Li40MjUzZjlkIDEw MDY0NAogIH0KICBkb21haW5fZW51bTsKICAKLUBAIC05OTMsNyArOTk2LDYgQEAgZXh0ZXJuIHN0 cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2wgKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IGJs b2NrICosCitAQCAtOTk0LDcgKzk5OSw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBf c3ltYm9sIChjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCBibG9jayAqLAogICAgIHRoYXQgY2Fu J3QgdGhpbmsgb2YgYW55dGhpbmcgYmV0dGVyIHRvIGRvLiAgKi8KICAKICBleHRlcm4gc3RydWN0 IHN5bWJvbCAqYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqLApAQCAt MTYyODQsNyArMTcxNDQsNyBAQCBpbmRleCA4MDBmZmQ4Li40MjUzZjlkIDEwMDY0NAogIAkJCQkJ CSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKICAJCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0p OwogIAotQEAgLTEwMDQsNyArMTAwNiw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpiYXNpY19s b29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICosCitAQCAtMTAwNSw3ICsxMDA5LDYg QEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNv bnN0IGNoYXIgKiwKICAgICBpcyBvbmU7IGRvIG5vdGhpbmcgaWYgQkxPQ0sgaXMgTlVMTCBvciBh IGdsb2JhbCBibG9jay4gICovCiAgCiAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1i b2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLApAQCAtMTYyOTIsNyArMTcxNTIsNyBAQCBpbmRl eCA4MDBmZmQ4Li40MjUzZjlkIDEwMDY0NAogIAkJCQkJICAgIGNvbnN0IHN0cnVjdCBibG9jayAq YmxvY2ssCiAgCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKICAKLUBAIC0xMDEy LDcgKzEwMTMsNiBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9zdGF0aWMg KGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMTAxMyw3ICsxMDE2LDYgQEAgZXh0ZXJuIHN0cnVjdCBz eW1ib2wgKmxvb2t1cF9zeW1ib2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLAogICAgIG5lY2Vz c2FyeSkuICAqLwogIAogIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2dsb2Jh bCAoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE2MzAwLDcgKzE3MTYwLDcgQEAgaW5kZXggODAwZmZk OC4uNDI1M2Y5ZCAxMDA2NDQKICAJCQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAog IAkJCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7CiAgCi1AQCAtMTAyMSwyMSArMTAy MSwxOCBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0 IGNoYXIgKm5hbWUsCitAQCAtMTAyMiwyMSArMTAyNCwxOCBAQCBleHRlcm4gc3RydWN0IHN5bWJv bCAqbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgd2lsbCBmaXgg dXAgdGhlIHN5bWJvbCBpZiBuZWNlc3NhcnkuICAqLwogIAogIGV4dGVybiBzdHJ1Y3Qgc3ltYm9s ICpsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE2MzIyLDcg KzE3MTgyLDcgQEAgaW5kZXggODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQKICAJCQkJCSAgIGNvbnN0 IGRvbWFpbl9lbnVtKTsKICAKICAvKiBsb29rdXAgYSBbc3RydWN0LCB1bmlvbiwgZW51bV0gYnkg bmFtZSwgd2l0aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCi1AQCAtMTA2NSw2ICsxMDYyLDggQEAg ZXh0ZXJuIHZvaWQgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpOworQEAgLTEwNjYsNiAr MTA2NSw4IEBAIGV4dGVybiB2b2lkIGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKTsKICAK ICAvKiBmcm9tIHN5bXRhYi5jOiAqLwogIApAQCAtMTYzMzEsNyArMTcxOTEsMTYgQEAgaW5kZXgg ODAwZmZkOC4uNDI1M2Y5ZCAxMDA2NDQKICAvKiBsb29rdXAgcGFydGlhbCBzeW1ib2wgdGFibGUg YnkgZmlsZW5hbWUgKi8KICAKICBleHRlcm4gc3RydWN0IHBhcnRpYWxfc3ltdGFiICpsb29rdXBf cGFydGlhbF9zeW10YWIgKGNvbnN0IGNoYXIgKik7Ci1AQCAtMTM2Nyw3ICsxMzY2LDYgQEAgZXh0 ZXJuIC8qY29uc3QgKi8gY2hhciAqbWFpbl9uYW1lICh2b2lkKTsKK0BAIC0xMTU5LDYgKzExNjAs OCBAQCBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluaW1hbF9zeW1ib2xf YnlfcGNfbmFtZQorIAorIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvb2t1cF9taW5p bWFsX3N5bWJvbF9ieV9wYyAoQ09SRV9BRERSKTsKKyAKKytleHRlcm4gaW50IGluX2dudV9pZnVu Y19zdHViIChDT1JFX0FERFIgcGMpOworKworIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg KgorICAgICBsb29rdXBfbWluaW1hbF9zeW1ib2xfYW5kX29iamZpbGUgKGNvbnN0IGNoYXIgKiwK KyAJCQkJICAgICAgIHN0cnVjdCBvYmpmaWxlICoqKTsKK0BAIC0xMzcyLDcgKzEzNzUsNiBAQCBl eHRlcm4gLypjb25zdCAqLyBjaGFyICptYWluX25hbWUgKHZvaWQpOwogIC8qIENoZWNrIGdsb2Jh bCBzeW1ib2xzIGluIG9iamZpbGUuICAqLwogIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9nbG9iYWxf c3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJ CQkJICBjb25zdCBjaGFyICpuYW1lLApAQCAtMTc2MjYsMjcgKzE4NDk1LDI1MCBAQCBpbmRleCBl Y2MzMjg5Li5mNzlhZDQwIDEwMDY0NAogKyAgfSB1bmJvdW5kOwogKyNlbmRpZgogKwotIGludAot IG1haW4gKHZvaWQpCi0gewotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJy YXlpZHguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLWluZGV4IDBl ZjZjNGIuLjMzMGVkODcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLUBAIC01 OSw0ICs1OSwxMiBAQCBnZGJfdGVzdCAicHJpbnQgYXJyYXkiIFwKLSAgICAgICAgICAiXFx7XFxc WzBcXFxdID0gMSwgXFxcWzFcXFxdID0gMiwgXFxcWzJcXFxdID0gMywgXFxcWzNcXFxdID0gNFxc fSIgXAotICAgICAgICAgICJQcmludCBhcnJheSB3aXRoIGFycmF5LWluZGV4ZXMgb24iCi0gCi0t Ci0rc2V0IHRlc3QgInAgdW5ib3VuZC5hID09ICZ1bmJvdW5kLmFcWzBcXSIKKyBpbnQKKyBtYWlu ICh2b2lkKQorIHsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4 LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCitpbmRleCAwZWY2YzRi Li4zMzBlZDg3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5l eHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCitAQCAtNTksNCAr NTksMTIgQEAgZ2RiX3Rlc3QgInByaW50IGFycmF5IiBcCisgICAgICAgICAgIlxce1xcXFswXFxc XSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxcXFsyXFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwK KyAgICAgICAgICAiUHJpbnQgYXJyYXkgd2l0aCBhcnJheS1pbmRleGVzIG9uIgorIAorLQorK3Nl dCB0ZXN0ICJwIHVuYm91bmQuYSA9PSAmdW5ib3VuZC5hXFswXF0iCisrZ2RiX3Rlc3RfbXVsdGlw bGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIiA9IDFcclxuJGdkYl9wcm9tcHQgJCIgeworKwlw YXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJObyBzeW1ib2wgXCJ1bmJvdW5kXCIgaW4gY3Vy cmVudCBjb250ZXh0LlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXVuc3VwcG9ydGVkICIkdGVzdCAo bm8gR0NDKSIKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2dudS1pZnVuYy1saWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5j CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjA0Y2U5OQorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKK0BAIC0w LDAgKzEsNTQgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysj aW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrdHlwZWRlZiBpbnQgKCpmaW5hbF90KSAoaW50IGFyZyk7 CisrCisrc3RhdGljIGludAorK2luaXRfc3R1YiAoaW50IGFyZykKKyt7CisrICByZXR1cm4gMDsK Kyt9CisrCisrc3RhdGljIGludAorK2ZpbmFsIChpbnQgYXJnKQorK3sKKysgIHJldHVybiBhcmcg KyAxOworK30KKysKKytzdGF0aWMgdm9sYXRpbGUgaW50IGdudV9pZnVuY19pbml0aWFsaXplZDsK KysKKyt2b2lkCisrZ251X2lmdW5jX3ByZSAodm9pZCkKKyt7CisrICBhc3NlcnQgKCFnbnVfaWZ1 bmNfaW5pdGlhbGl6ZWQpOworKworKyAgZ251X2lmdW5jX2luaXRpYWxpemVkID0gMTsKKyt9Cisr CisrZmluYWxfdCBnbnVfaWZ1bmNYICh2b2lkKSBhc20gKCJnbnVfaWZ1bmMiKTsKKythc20gKCIu dHlwZSBnbnVfaWZ1bmMsIEBnbnVfaW5kaXJlY3RfZnVuY3Rpb24iKTsKKysKKytmaW5hbF90Cisr Z251X2lmdW5jWCAodm9pZCkKKyt7CisrICBpZiAoIWdudV9pZnVuY19pbml0aWFsaXplZCkKKysg ICAgcmV0dXJuIGluaXRfc3R1YjsKKysgIGVsc2UKKysgICAgcmV0dXJuIGZpbmFsOworK30KK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLmU0YTgyM2QKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ251LWlmdW5jLmMKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrZXh0ZXJuIGludCBn bnVfaWZ1bmMgKGludCBhcmcpOworK2V4dGVybiB2b2lkIGdudV9pZnVuY19wcmUgKHZvaWQpOwor KworK2ludAorK21haW4gKHZvaWQpCisreworKyAgaW50IGk7CisrCisrICBnbnVfaWZ1bmNfcHJl ICgpOworKyAgCisrICBpID0gZ251X2lmdW5jICgxKTsJLyogYnJlYWstYXQtY2FsbCAqLworKyAg YXNzZXJ0IChpID09IDIpOworKworKyAgZ251X2lmdW5jICgyKTsJLyogYnJlYWstYXQtbmV4dGNh bGwgKi8KKysKKysgIHJldHVybiAwOwkvKiBicmVhay1hdC1leGl0ICovCisrfQorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ251LWlmdW5jLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAuLjRiM2FjNDEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z251LWlmdW5jLmV4cAorQEAgLTAsMCArMSwxMTUgQEAKKysjIENvcHlyaWdodCAoQykgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrCisraWYge1tza2lwX3NobGliX3Rlc3RzXX0geworKyAgICByZXR1cm4gMAorK30K KysKKytzZXQgdGVzdGZpbGUgImdudS1pZnVuYyIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5j Cisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorKworK3NldCBs aWJmaWxlICIke3Rlc3RmaWxlfS1saWIiCisrc2V0IGxpYnNyYyAke2xpYmZpbGV9LmMKKytzZXQg bGliX3NvICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJmaWxlfS5zbworKworK3NldCBsaWJfbm9k ZWJ1Z19zb19iYXNlICR7bGliZmlsZX0tbm9kZWJ1Zy5zbworK3NldCBsaWJfbm9kZWJ1Z19zbyAk e29iamRpcn0vJHtzdWJkaXJ9LyR7bGliX25vZGVidWdfc29fYmFzZX0KKysKKysjIHtkZWJ1Z30g cHJvdmlkZXMgRFdBUkYgc3ltYm9sIGdudV9pZnVuY1ggY29uZnVzaW5nIHRoZSBFTEYgc3ltYm9s CisrIyBnbnVfaWZ1bmMgZHVyaW5nIGFkZHJlc3MtPnN5bWJvbCByZXNvbHV0aW9uIGZvciBwcmlu dGluZyB0aGUgc3ltYm9sLgorKyMgU3RpbGwgd2UgbmVlZCBpdCBoZXJlIGZvciAic3RlcCJwaW5n IGludG8gdGhlIGZ1bmN0aW9uLgorK3NldCBsaWJfb3B0cyBbbGlzdCBkZWJ1Z10KKytzZXQgbGli X25vZGVidWdfb3B0cyBbbGlzdF0KKytzZXQgZXhlY19vcHRzIFtsaXN0IGRlYnVnIHNobGliPSRs aWJfc29dCisrCisraWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRp cn0vJGxpYnNyYyAkbGliX3NvICRsaWJfb3B0c10gIT0gIiIKKysgICAgIHx8IFtnZGJfY29tcGls ZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRzcmNmaWxlICRiaW5maWxlIGV4ZWN1dGFibGUgJGV4ZWNf b3B0c10gIT0gIiJ9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGVpdGhlciAk bGlic3JjIG9yICRzcmNmaWxlLiIKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgU3RhcnQgd2l0 aCBhIGZyZXNoIGdkYi4KKysKKytjbGVhbl9yZXN0YXJ0ICR0ZXN0ZmlsZQorK2dkYl9sb2FkX3No bGlicyAke2xpYl9zb30KKysKKytpZiAhW3J1bnRvX21haW5dIHRoZW4geworKyAgICBmYWlsICJD YW4ndCBydW4gdG8gbWFpbiIKKysgICAgcmV0dXJuIDE7CisrfQorKworKyMgVGhlICJpZiIgY29u ZGl0aW9uIGlzIGFydGlmaWNhbCB0byB0ZXN0IHJlZ3Jlc3Npb24gb2YgYSBmb3JtYXQgcGF0Y2gu CisrZ2RiX2JyZWFrcG9pbnQgIltnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2Fs bCJdIGlmIGkgJiYgZ251X2lmdW5jIChpKSAhPSA0MiIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAiYnJlYWstYXQtY2FsbCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImJyZWFrLWF0LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwuKiIKKysKKysjIFRlc3QgR0RC IHdpbGwgYXV0b21hdGljYWxseSBpbmRpcmVjdCB0aGUgY2FsbC4KKysKKytnZGJfdGVzdCAicCBn bnVfaWZ1bmMgKDMpIiAiID0gNCIKKysKKysjIFRlc3QgR0RCIHdpbGwgc2tpcCB0aGUgZ251X2lm dW5jIHJlc29sdmVyIG9uIGZpcnN0IGNhbGwuCisrCisrZ2RiX3Rlc3QgInN0ZXAiICJcclxuZmlu YWwgLioiCisrCisrIyBUZXN0IEdEQiB3aWxsIG5vdCBicmVhayBiZWZvcmUgdGhlIGZpbmFsIGNo b3NlbiBpbXBsZW1lbnRhdGlvbi4KKysKKysjIEFsc28gdGVzdCBhIGZvcm1hdCBwYXRjaCByZWdy ZXNzaW9uOgorKyMgQ29udGludWluZy4KKysjIEVycm9yIGluIHRlc3RpbmcgYnJlYWtwb2ludCBj b25kaXRpb246CisrIyBBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRl ZCBpbiBtZW1vcnkuCisrIyAKKysjIEJyZWFrcG9pbnQgMiwgbWFpbiAoKSBhdCAuL2dkYi5iYXNl L2dudS1pZnVuYy5jOjMzCisrCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy5cclxu XHJcbkJyZWFrcG9pbnQgLiogKGF0fGluKSAuKmJyZWFrLWF0LW5leHRjYWxsLioiIFwKKysJICJj b250aW51ZSB0byBicmVhay1hdC1uZXh0Y2FsbCIKKysKKytnZGJfYnJlYWtwb2ludCAiZ251X2lm dW5jIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJuZXh0Y2FsbCBnbnVfaWZ1bmMi CisrCisrZ2RiX3Rlc3QgImZyYW1lIiAiIzAgKygweFxbMC05YS1mXF0rIGluICspP2ZpbmFsIFxc KC4qIiAibmV4dGNhbGwgZ251X2lmdW5jIHNraXBwZWQiCisrCisrCisrIyBDb21wYXJlIHRoZSB0 d28gZGlmZmVyZW50IGFkZHJlc3NlczoKKysKKytnZGJfdGVzdCAicCBnbnVfaWZ1bmMiICIgPSB7 PHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAweFxbMC05YS1mXF0rIDxmaW5hbD4iICJw IGdudV9pZnVuYyBleGVjdXRpbmciCisrZ2RiX3Rlc3QgImluZm8gc3ltIGdudV9pZnVuYyIgImZp bmFsIGluIHNlY3Rpb24gLioiICJpbmZvIHN5bSBnbnVfaWZ1bmMgZXhlY3V0aW5nIgorKworK3Nl dCB0ZXN0ICJpbmZvIGFkZHIgZ251X2lmdW5jIgogK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0 ZXN0IHsKLSsgICAgLXJlICIgPSAxXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgLXJlICJTeW1i b2wgXCJnbnVfaWZ1bmNcIiBpcyBhdCAoMHhcWzAtOWEtZlxdKykgaW4gLiokZ2RiX3Byb21wdCAk IiB7CiArCXBhc3MgJHRlc3QKICsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCBcInVuYm91bmRc IiBpbiBjdXJyZW50IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJdW5zdXBwb3J0ZWQg IiR0ZXN0IChubyBHQ0MpIgotKyAgICB9CiArfQorK2dkYl90ZXN0ICJpbmZvIHN5bSAkZXhwZWN0 X291dCgxLHN0cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIDxnbnVf aWZ1bmMtYWRkcmVzcz4iCisrCisrIyA8KmdudV9pZnVuYz4gd291bGQgYmUgYW4gaW5jb3JyZWN0 IHJlc29sdXRpb24gZnJvbSBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZS4KKysjIFdlIGRvIG5vdCB1 c2Uge2RlYnVnfSBidWlsZCBvcHRpb24gZm9yIHRoaXMgcHVycG9zZS4KKysKKytpZiB7IFtnZGJf Y29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRsaWJzcmMgJGxpYl9ub2RlYnVnX3Nv ICRsaWJfbm9kZWJ1Z19vcHRzXSAhPSAiIn0geworKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNv bXBpbGUgZWl0aGVyICRsaWJzcmMuIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrY2xlYW5fcmVz dGFydCAkbGliX25vZGVidWdfc29fYmFzZQorKworK2dkYl90ZXN0ICJwIGdudV9pZnVuYyIgIiA9 IHs8dGV4dCBnbnUtaWZ1bmMgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAweFxbMC05YS1mXF0r IDxnbnVfaWZ1bmM+IiAicCBnbnVfaWZ1bmMgbm90IGV4ZWN1dGluZyB3aXRob3V0IGRlYnVnIgor K2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1bmMiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIg ImluZm8gc3ltIGdudV9pZnVuYyBub3QgZXhlY3V0aW5nIHdpdGhvdXQgZGVidWciCiBkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uZWViN2I4NQpAQCAtMTgzNDIsNiAr MTk0MzQsNDggQEAgaW5kZXggNDU0YzZmNC4uOGY4OGFkNyAxMDA2NDQKICBnZGJfdGVzdF9tdWx0 aXBsZSAicHJpbnQgYWRkPGludD4oMiwyKSIgInByaW50IGFkZDxpbnQ+KDIsMikiIHsKICAgICAg LXJlICJcXCRcWzAtOVxdKyA9IDRcclxuJGdkYl9wcm9tcHQgJCIgewogIAlwYXNzICJwcmludCBh ZGQ8aW50PigyLDIpIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4Y2VwdGlv bi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leGNlcHRpb24uZXhwCitpbmRleCA0Nzg5MGYx Li4wM2M4ODQ3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhjZXB0aW9uLmV4 cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhjZXB0aW9uLmV4cAorQEAgLTE0Niw3ICsx NDYsOSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1lIHsKKyAKKyBzZXQgbmFt ZSAiYmFja3RyYWNlIGFmdGVyIGZpcnN0IHRocm93IgorIGdkYl90ZXN0X211bHRpcGxlICJiYWNr dHJhY2UiICRuYW1lIHsKKy0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClfX2N4 YV90aHJvdy4qI1xbMC05XF0rJHt3c30kaGV4IGluIGZvbyBcXChpPTIwXFwpIGF0IC4qJHtzcmNm aWxlfTpcWzAtOVxdK1xyXG4jXFswLTlcXSske3dzfSRoZXggaW4gbWFpbiBcXCguKlxcKSBhdCAu KiR7c3JjZmlsZX06XFswLTlcXStcclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICAtcmUgIi4qI1xb MC05XF0rLipcW1xbOjw6XF1cXV9fY3hhX3Rocm93XFtcWzo+OlxdXF0uKiNcWzAtOVxdKyR7d3N9 JGhleCBpbiBmb28gXFwoaT0yMFxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuI1xbMC05 XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLioke3NyY2ZpbGV9OlxbMC05XF0rXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJIyBFaXRoZXIgX19jeHhhYml2MTo6X19jeGFfdGhyb3cgb3Ig X19jeGFfdGhyb3cgY2FuIGJlIHByaW50ZWQKKysJIyBkZXBlbmRpbmcgb24gZGVidWcgaW5mbyBw cmVzZW5jZS4KKyAJcGFzcyAkbmFtZQorICAgICB9CisgfQorQEAgLTE2OCw3ICsxNzAsNyBAQCBn ZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1lIHsKKyAKKyBzZXQgbmFtZSAiYmFja3Ry YWNlIGFmdGVyIGZpcnN0IGNhdGNoIgorIGdkYl90ZXN0X211bHRpcGxlICJiYWNrdHJhY2UiICRu YW1lIHsKKy0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClfX2N4YV9iZWdpbl9j YXRjaC4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpc WzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIC1yZSAiLiojXFswLTlcXSsuKlxbXFs6 PDpcXVxdX19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30kaGV4IGlu IG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7 CisgCXBhc3MgJG5hbWUKKyAgICAgfQorIH0KK0BAIC0xOTAsNyArMTkyLDcgQEAgZ2RiX3Rlc3Rf bXVsdGlwbGUgImNvbnRpbnVlIiAkbmFtZSB7CisgCisgc2V0IG5hbWUgImJhY2t0cmFjZSBhZnRl ciBzZWNvbmQgdGhyb3ciCisgZ2RiX3Rlc3RfbXVsdGlwbGUgImJhY2t0cmFjZSIgJG5hbWUgewor LSAgICAtcmUgIi4qI1xbMC05XF0rJHt3c30oJGhleCBpbiB8KV9fY3hhX3Rocm93LiojXFswLTlc XSske3dzfSRoZXggaW4gZm9vIFxcKGk9MjBcXCkgYXQgLioke3NyY2ZpbGV9OlxbMC05XF0rXHJc biNcWzAtOVxdKyR7d3N9JGhleCBpbiBtYWluIFxcKC4qXFwpIGF0IC4qJHtzcmNmaWxlfTpcWzAt OVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIC1yZSAiLiojXFswLTlcXSsuKlxbXFs6PDpc XVxdX19jeGFfdGhyb3dcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30kaGV4IGluIGZvbyBcXChp PTIwXFwpIGF0IC4qJHtzcmNmaWxlfTpcWzAtOVxdK1xyXG4jXFswLTlcXSske3dzfSRoZXggaW4g bWFpbiBcXCguKlxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuJGdkYl9wcm9tcHQgJCIg eworIAlwYXNzICRuYW1lCisgICAgIH0KKyB9CitAQCAtMjEyLDcgKzIxNCw3IEBAIGdkYl90ZXN0 X211bHRpcGxlICJjb250aW51ZSIgJG5hbWUgeworIAorIHNldCBuYW1lICJiYWNrdHJhY2UgYWZ0 ZXIgc2Vjb25kIGNhdGNoIgorIGdkYl90ZXN0X211bHRpcGxlICJiYWNrdHJhY2UiICRuYW1lIHsK Ky0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClfX2N4YV9iZWdpbl9jYXRjaC4q I1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxd K1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIC1yZSAiLiojXFswLTlcXSsuKlxbXFs6PDpcXVxd X19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4g XFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7CisgCXBh c3MgJG5hbWUKKyAgICAgfQorIH0KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9l eHBhbmQtc2Fscy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAKIGlu ZGV4IDI1ZWM0YTkuLmU0ZmQ1OWIgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9l eHBhbmQtc2Fscy5leHAKQEAgLTE4NzMyLDYgKzE5ODY2LDQ4IEBAIGluZGV4IDAwMDAwMDAuLmVl OWFlZmYKICtnZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAogKyAgIi4qY2F0Y2ggKC4uLikuKiIg XAogKyAgImFkdmFuY2Utb3Zlci10aHJvdyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9tLXN0YXRpYy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGljLmNjCitpbmRl eCAyYTBiNjFjLi43Zjk5N2VmIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbS1z dGF0aWMuY2MKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGljLmNjCitAQCAtMTUs NiArMTUsMTIgQEAgcHJvdGVjdGVkOgorIAorIHB1YmxpYzoKKyAgIGdudV9vYmpfMShhbnRpcXVp dGllcyBhLCBsb25nIGwpIHt9CisrCisrICBsb25nIG1ldGhvZCAoKQorKyAgeworKyAgICBzdGF0 aWMgYm9vbCBzdmFyID0gdHJ1ZTsKKysgICAgcmV0dXJuIGtleTI7CisrICB9CisgfTsKKyAKKyBj b25zdCBib29sIGdudV9vYmpfMTo6dGVzdDsKK0BAIC03MCw1ICs3Niw4IEBAIGludCBtYWluKCkK KyAKKyAgIHRlc3Q0LmR1bW15ID0gdGVzdDQuZWxzZXdoZXJlOworICAgdGVzdDQuZHVtbXkgPSAw OworLSAgcmV0dXJuIHRlc3Q0LmR1bW15OwkvLyBicmVha3BvaW50OiBjb25zdHJ1Y3RzLWRvbmUK KysKKysgIHRlc3QxLm1ldGhvZCAoKTsgLy8gYnJlYWtwb2ludDogY29uc3RydWN0cy1kb25lCisr CisrICByZXR1cm4gdGVzdDQuZHVtbXk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL20tc3RhdGljLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGljLmV4cAor aW5kZXggZjIwNzQ2Mi4uN2I0ZTBjYSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L20tc3RhdGljLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbS1zdGF0aWMuZXhwCitA QCAtMTMyLDUgKzEzMiwxMCBAQCBnZGJfdGVzdCAicHJpbnQgdGVzdDQubm93aGVyZSIgImZpZWxk IG5vd2hlcmUgaXMgbm9uZXhpc3RlbnQgb3IgaGFzIGJlZW4gb3B0aW1pcworICMgdGhhdCBHREIn cyBjdXJyZW50IGJlaGF2aW9yIGluIHN1Y2ggc2l0dWF0aW9ucyBpcyBlaXRoZXIgY29uc2lzdGVu dAorICMgYWNyb3NzIHBsYXRmb3JtcyBvciBvcHRpbWFsLCBzbyBJJ20gbm90IGluY2x1ZGluZyBv bmUgbm93LgorIAorKyMgU3RlcCBpbnRvIHRlc3QxLm1ldGhvZCBhbmQgZXhhbWluZSB0aGUgbWV0 aG9kLXNjb3BlZCBzdGF0aWMuCisrIyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBQUiA5 NzA4LgorK2dkYl90ZXN0ICJzdGVwIiAiZ251X29ial8xOjptZXRob2QuKiIKKytnZGJfdGVzdCAi cHJpbnQgc3ZhciIgIiA9IHRydWUiCisrCisgZ2RiX2V4aXQKKyByZXR1cm4gMAogZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9tZW1iZXItcHRyLmNjCiBpbmRleCBmZmZmYjRjLi5iNDA2YTU5IDEwMDY0NAogLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5jYwpAQCAtMTk1ODEsMTggKzIwNzU3LDcw IEBAIGluZGV4IDAwMDAwMDAuLjE4MDY1MjMKICsjIFRlc3QgdGhhdCB0aGUgc2VhcmNoIGNhbiBm YWlsIGVmZmljaWVudGx5IAogKwogK2dkYl90ZXN0ICJwcmludCB5IiAiTm8gc3ltYm9sIFwieVwi IGluIGN1cnJlbnQgY29udGV4dC4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlLXVzaW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5n LmNjCi1pbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1l c3BhY2UtdXNpbmcuY2MKLUBAIC0xLDI2ICsxLDEyOSBAQAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3Bh Y2UuZXhwCitpbmRleCA0MzYyZmQ4Li5mN2NmZDU3IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNw YWNlLmV4cAorQEAgLTI0LDYgKzI0LDcgQEAKKyAjIGZvciBuYW1lc3BhY2VzLgorICMgTm90ZTog QXMgb2YgMjAwMC0wNi0wMywgdGhleSBwYXNzZWQgdW5kZXIgZysrIC0gZGpiCisgCisrbG9hZF9s aWIgImNwLXN1cHBvcnQuZXhwIgorIAorIGlmICR0cmFjZWxldmVsIHRoZW4geworICAgICAgICAg c3RyYWNlICR0cmFjZWxldmVsCitAQCAtMjQxLDExICsyNDIsMTYgQEAgZ2RiX3Rlc3QgInB0eXBl IEUiICJ0eXBlID0gbmFtZXNwYWNlIEM6OkQ6OkUiCisgZ2RiX3Rlc3QgInB0eXBlIENDbGFzcyIg InR5cGUgPSAoY2xhc3MgQzo6Q0NsYXNzIFx7XHJcbiAgcHVibGljOnxzdHJ1Y3QgQzo6Q0NsYXNz IFx7KVxyXG4gICAgaW50IHg7XHJcblx9IgorIGdkYl90ZXN0ICJwdHlwZSBDQ2xhc3M6Ok5lc3Rl ZENsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIFx7XHJcbiAgcHVi bGljOnxzdHJ1Y3QgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyBceylcclxuICAgIGludCB5O1xyXG5c fSIKKyBnZGJfdGVzdCAicHR5cGUgTmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFz c1wiIGluIGN1cnJlbnQgY29udGV4dC4iCistc2V0dXBfa2ZhaWwgImdkYi8xNDQ4IiAiKi0qLSoi CistZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6Q0NsYXNzIiAidHlwZSA9IGNsYXNzIEM6OkNDbGFzcyBc e1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB4O1xyXG5cfSIKKy1zZXR1cF9rZmFpbCAiZ2RiLzE0 NDgiICIqLSotKiIKKy1nZGJfdGVzdCAicHR5cGUgOjpDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIiAi dHlwZSA9IGNsYXNzIEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHtcclxuICBwdWJsaWM6XHJcbiAg ICBpbnQgeTtcclxuXH0iCistc2V0dXBfa2ZhaWwgImdkYi8xNDQ4IiAiKi0qLSoiCisrY3BfdGVz dF9wdHlwZV9jbGFzcyBcCisrCSJwdHlwZSA6OkM6OkNDbGFzcyIgIiIgImNsYXNzIiAiQzo6Q0Ns YXNzIiBcCisrCXsKKysJICAgIHsgZmllbGQgcHVibGljICJpbnQgeDsiIH0KKysJfQorK2NwX3Rl c3RfcHR5cGVfY2xhc3MgXAorKwkicHR5cGUgOjpDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIiAiIiAi Y2xhc3MiICJDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIiBcCisrCXsKKysJICAgIHsgZmllbGQgcHVi bGljICJpbnQgeTsiIH0KKysJfQorIGdkYl90ZXN0ICJwdHlwZSA6OkM6Ok5lc3RlZENsYXNzIiAi Tm8gc3ltYm9sIFwiTmVzdGVkQ2xhc3NcIiBpbiBuYW1lc3BhY2UgXCJDXCIuIgorIGdkYl90ZXN0 ICJwdHlwZSBDOjpDQ2xhc3MiICJObyBzeW1ib2wgXCJDQ2xhc3NcIiBpbiBuYW1lc3BhY2UgXCJD OjpDXCIuIgorIGdkYl90ZXN0ICJwdHlwZSBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIiAiTm8gdHlw ZSBcIkNDbGFzc1wiIHdpdGhpbiBjbGFzcyBvciBuYW1lc3BhY2UgXCJDOjpDXCIuIgorQEAgLTI1 NSw4ICsyNjEsMTEgQEAgZ2RiX3Rlc3QgInB0eXBlIEM6Ok5lc3RlZENsYXNzIiAiTm8gc3ltYm9s IFwiTmVzdGVkQ2xhc3NcIiBpbiBuYW1lc3BhY2UgXCJDOjpDXCIKKyAKKyBnZGJfdGVzdCAicHJp bnQgY090aGVyRmlsZSIgIlxcJFxbMC05XF0uKiA9IDMxNiIKKyBnZGJfdGVzdCAicHR5cGUgT3Ro ZXJGaWxlQ2xhc3MiICJ0eXBlID0gKGNsYXNzIEM6Ok90aGVyRmlsZUNsYXNzIFx7XHJcbiAgcHVi bGljOnxzdHJ1Y3QgQzo6T3RoZXJGaWxlQ2xhc3MgXHspXHJcbiAgICBpbnQgejtcclxuXH0iCist c2V0dXBfa2ZhaWwgImdkYi8xNDQ4IiAiKi0qLSoiCistZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6T3Ro ZXJGaWxlQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6T3RoZXJGaWxlQ2xhc3MgXHtcclxuICBwdWJs aWM6XHJcbiAgICBpbnQgejtcclxuXH0iCisrY3BfdGVzdF9wdHlwZV9jbGFzcyBcCisrCSJwdHlw ZSA6OkM6Ok90aGVyRmlsZUNsYXNzIiAiIiAiY2xhc3MiICJDOjpPdGhlckZpbGVDbGFzcyIgXAor Kwl7CisrCSAgICB7IGZpZWxkIHB1YmxpYyAiaW50IHo7IiB9CisrCX0KKyBnZGJfdGVzdCAicHR5 cGUgQzo6T3RoZXJGaWxlQ2xhc3MiICJObyBzeW1ib2wgXCJPdGhlckZpbGVDbGFzc1wiIGluIG5h bWVzcGFjZSBcIkM6OkNcIi4iCisgCisgIyBTb21lIGFub255bW91cyBuYW1lc3BhY2UgdGVzdHMu CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbnN1c2luZy5jYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25zdXNpbmcuY2MKK2luZGV4IGIxZjBjZTQuLjBiZjJkZjUgMTAwNjQ0Cist LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uc3VzaW5nLmNjCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uc3VzaW5nLmNjCitAQCAtMSwzNCArMSw4MSBAQAorLW5hbWVzcGFjZSBPCiArbmFt ZXNwYWNlIE0KLSt7CisgeworLSAgaW50IG94ID0gNDsKICsgIGludCB4ID0gOTExOwotK30KLSsK KyB9CisgCistbmFtZXNwYWNlIFBRCiArbmFtZXNwYWNlIE4KLSt7CisgeworLSAgaW50IG1hcmtl cjYgKCkKICsgIGludCB4ID0gOTEyOwogK30KICsKQEAgLTE5NjEzLDE0ICsyMDg0MSwxNyBAQCBp bmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogK3sKICsgIGludAogKyAgbWFya2VyOSAoKQot KyAgeworICAgeworLSAgICByZXR1cm4gMDsKICsgICAgLy94OwogKyAgICByZXR1cm4gbWFya2Vy MTAgKCk7Ci0rICB9Ci0rfQotKworICAgfQorIH0KKyAKKy1uYW1lc3BhY2UgUAogK25hbWVzcGFj ZSBMCi0reworIHsKKy0gIHVzaW5nIG5hbWVzcGFjZSBPOwogKyAgdXNpbmcgbmFtZXNwYWNlIEo7 CiArICBpbnQKICsgIG1hcmtlcjggKCkKQEAgLTE5NjI4LDE2ICsyMDg1OSwyMSBAQCBpbmRleCA0 Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogKyAgICBqeDsKICsgICAgcmV0dXJuIEs6Om1hcmtlcjkg KCk7CiArICB9Ci0rfQotKworIH0KKyAKKy0vLy0tLS0tLS0tLS0tLS0tCistbmFtZXNwYWNlIEMK ICtuYW1lc3BhY2UgRwotK3sKKyB7CistICBpbnQgY2MgPSAzOwogKyAgbmFtZXNwYWNlIEgKICsg IHsKICsgICAgaW50IGdoeCA9IDY7CiArICB9Ci0rfQotKworIH0KKyAKKy11c2luZyBuYW1lc3Bh Y2UgQzsKKy1pbnQgbWFya2VyNSAoKQogK25hbWVzcGFjZSBJCiAreyAgCiArICBpbnQKQEAgLTE5 NjUwLDEzICsyMDg4NiwxNSBAQCBpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogK30KICsK ICtuYW1lc3BhY2UgRQotK3sKKyB7CistICBjYzsKKy0gIHJldHVybiBQUTo6bWFya2VyNiAoKTsK ICsgIG5hbWVzcGFjZSBGCiArICB7CiArICAgIGludCBlZnggPSA1OwogKyAgfQotK30KLSsKKyB9 CisgCiArdXNpbmcgbmFtZXNwYWNlIEU6OkY7CiAraW50CiArbWFya2VyNiAoKQpAQCAtMTk2NjQs MTYgKzIwOTAyLDE2IEBAIGluZGV4IDQ3ODZmZDUuLjhmZjU2MjIgMTAwNjQ0CiArICBlZng7CiAr ICByZXR1cm4gSTo6bWFya2VyNyAoKTsKICt9Ci0rCisgCiAgbmFtZXNwYWNlIEEKICB7Ci0gICBp bnQgX2EgPSAxOworQEAgLTM2LDIzICs4Myw0NyBAQCBuYW1lc3BhY2UgQQogICAgaW50IHggPSAy OwogIH0KICAKIC1pbnQgbWFya2VyNCgpewogLQl1c2luZyBBOjp4OwotLQlyZXR1cm4gMDsKKy0J cmV0dXJuIG1hcmtlcjUgKCk7CiArbmFtZXNwYWNlIEMKICt7CiArICBpbnQgY2MgPSAzOwpAQCAt MTk2OTAsMTcgKzIwOTI4LDE3IEBAIGluZGV4IDQ3ODZmZDUuLjhmZjU2MjIgMTAwNjQ0CiArewog KyAgY2M7CiArICByZXR1cm4gbWFya2VyNiAoKTsKLSt9Ci0rCisgfQorIAorLWludCBtYXJrZXIz KCl7CistCXJldHVybiBtYXJrZXI0KCk7CiAraW50CiArbWFya2VyNCAoKQogK3sKICsgIHVzaW5n IEQ6OmR4OwogKyAgcmV0dXJuIG1hcmtlcjUgKCk7Ci0gfQotIAotLWludCBtYXJrZXIzKCl7Ci0t CXJldHVybiBtYXJrZXI0KCk7CisrfQorKwogK2ludAogK21hcmtlcjMgKCkKICt7CkBAIC0xOTcy Myw3ICsyMDk2MSw3IEBAIGluZGV4IDQ3ODZmZDUuLjhmZjU2MjIgMTAwNjQ0CiAgewogICAgaW50 IHRvdGFsID0gMDsKICAgIHsKLUBAIC0yOSwxNyArMTMyLDE4IEBAIGludCBtYXJrZXIxKCkKK0BA IC02MSwxNyArMTMyLDE4IEBAIGludCBtYXJrZXIxKCkKICAgICAgICB1c2luZyBuYW1lc3BhY2Ug QTsKICAgICAgICBpbnQgYyA9IDI7CiAgICAgICAgewpAQCAtMTk3MzQsNyArMjA5NzIsNyBAQCBp bmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogICAgICAgIH0KICAgICAgfQogICAgfQotICAg cmV0dXJuIHRvdGFsOworICAgcmV0dXJuIG1hcmtlcjIoKSArIHRvdGFsOwogIH0KICAKIC1pbnQg bWFpbigpCkBAIC0xOTc0NiwyMyArMjA5ODQsMjAgQEAgaW5kZXggNDc4NmZkNS4uOGZmNTYyMiAx MDA2NDQKIC0gIHJldHVybiBtYXJrZXIxKCk7CiArICByZXR1cm4gbWFya2VyMSAoKTsKICB9Ci1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS11c2luZy5leHAKLWluZGV4IDMxOTU1MmIuLjA2 NzMwODggMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNpbmcu ZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNpbmcuZXhwCi1AQCAt MjgsNiArMjgsMTEgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWIKLSAgICAgcmV0dXJuIC0xCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbnN1c2luZy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uc3VzaW5nLmV4cAoraW5kZXggZWYwMjM3ZC4uNDZhNGEwNyAxMDA2NDQKKy0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25zdXNpbmcuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uc3VzaW5nLmV4cAorQEAgLTI5LDcgKzI5LDcgQEAgaWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IHtkZWIKICB9CiAgCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKKyBpZiBb Z2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworLSAgICByZXR1cm4gLTEKICsgICAgcmV0 dXJuIC0xOwotK30KLSsKLSsKLSAjIEdldCB0aGluZ3Mgc3RhcnRlZC4KKyB9CiAgCi0gZ2RiX2V4 aXQKLUBAIC00Niw0MiArNTEsMTU1IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7CisgCitAQCAt NTEsMzIgKzUxLDg3IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7CiAgCiAgZ2RiX3Rlc3QgInBy aW50IF9hIiAiPSAxIgogIApAQCAtMTk4NTIsMTUgKzIxMDg3LDkgQEAgaW5kZXggMzE5NTUyYi4u MDY3MzA4OCAxMDA2NDQKICsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBt YXJrZXIzIgogK30KICAKLS1nZGJfdGVzdCAicHJpbnQgX2EiICJObyBzeW1ib2wgXCJfYVwiIGlu IGN1cnJlbnQgY29udGV4dC4iICJQcmludCBhIHdpdGhvdXQgaW1wb3J0IgotKyMgZ2NjLTQtMyBw dXRzIGltcG9ydCBzdGF0ZW1lbnRzIGZvciBhbGlhc2VzIGluCi0rIyB0aGUgZ2xvYmFsIHNjb3Bl IGluc3RlYWQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSsjIGZ1bmN0aW9uIHNjb3BlLiBUaGVzZSB3 cm9uZyBpbXBvcnQgc3RhdGVtZW50cyB0aHJvdwotKyMgdGhpcyB0ZXN0IG9mZi4gVGhpcyBpcyBm aXhlZCBpbiBnY2MtNC00LgotK2lmIFt0ZXN0X2NvbXBpbGVyX2luZm8gZ2NjLTQtMy0qXSB0aGVu IHsgc2V0dXBfeGZhaWwgKi0qLSogfQotKwotK2dkYl90ZXN0ICJwcmludCBfYSIgIk5vIHN5bWJv bCBcIl9hXCIgaW4gY3VycmVudCBjb250ZXh0LiIgIlByaW50IF9hIHdpdGhvdXQgaW1wb3J0Igot IAorICMgZ2NjLTQtMyBwdXRzIGltcG9ydCBzdGF0ZW1lbnRzIGZvciBhbGlhc2VzIGluCisgIyB0 aGUgZ2xvYmFsIHNjb3BlIGluc3RlYWQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKK0BAIC04OSwzMiAr MTQ0LDYyIEBAIGdkYl90ZXN0ICJwcmludCBfYSIgIk5vIHN5bWJvbCBcIl9hXCIgaW4gY3VycmVu dCBjb250ZXh0LiIgIlByaW50IF9hIHdpdGhvdXQgaW1wCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIFRlc3QgcHJpbnRpbmcgb2YgaW5kaXZpZHVhbGx5 IGltcG9ydGVkIGVsZW1lbnRzCiAgCkBAIC0xOTg3MiwyNiArMjExMDEsMzQgQEAgaW5kZXggMzE5 NTUyYi4uMDY3MzA4OCAxMDA2NDQKICAKIC1nZGJfdGVzdCAicHJpbnQgeCIgIj0gMiIKICtnZGJf dGVzdCAicHJpbnQgZHgiICI9IDQiCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworLSMgdGVzdCBwcmludGluZyBvZiBuYW1lc3BhY2UgaW1wb3J0ZWQgaW50bworLSMg ZmlsZSBzY29wZS4KICsjIFRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGFsaWFzZXMKLSsKLStp ZiAhW3J1bnRvIG1hcmtlcjVdIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBt YXJrZXI1IgotKyAgICBjb250aW51ZQotK30KLSsKKyAKKyBpZiAhW3J1bnRvIG1hcmtlcjVdIHRo ZW4geworICAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBtYXJrZXI1IgorICAgICBjb250aW51 ZQorIH0KKyAKKy1nZGJfdGVzdCAicHJpbnQgY2MiICI9IDMiCiArZ2RiX3Rlc3QgInByaW50IGVm eCIgIj0gNSIKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCistIyB0 ZXN0IHByaW50aW5nIG9mIG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvCistIyBmaWxlIHNjb3BlLgog KyMgVGVzdCBwcmludGluZyBvZiB2YXJpYWJsZXMgaW1wb3J0ZWQgZnJvbQogKyMgbmVzdGVkIG5h bWVzcGFjZXMKLSsKKyAKKy1pZiAhW3J1bnRvIFBROjptYXJrZXI2XSB0aGVuIHsKKy0gICAgcGVy cm9yICJjb3VsZG4ndCBydW4gdG8gUFE6Om1hcmtlcjYiCiAraWYgIVtydW50byBJOjptYXJrZXI3 XSB0aGVuIHsKICsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBJOjptYXJr ZXI3IgotKyAgICBjb250aW51ZQotK30KLSsKKyAgICAgY29udGludWUKKyB9CisgCistZ2RiX3Rl c3QgInByaW50IG94IiAiTm8gc3ltYm9sIFwib3hcIiBpbiBjdXJyZW50IGNvbnRleHQuIgogK2dk Yl90ZXN0ICJwcmludCBnaHgiICI9IDYiCiArCiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKQEAgLTE5OTI1LDU0ICsyMTE2Miw2IEBAIGluZGV4IDMxOTU1MmIu LjA2NzMwODggMTAwNjQ0CiArIyBBc3NlcnQgdGhhdCBNOjp4IGlzIHByaW50ZWQgYW5kIG5vdCBO Ojp4CiArZ2RiX3Rlc3QgInByaW50IHgiICI9IDkxMSIgInByaW50IHggKGZyb20gTTo6eCkiCiAr Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKLWluZGV4IDQzNjJmZDguLmY3Y2ZkNTcgMTAw NjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwCi1AQCAtMjQsNiArMjQsNyBAQAotICMgZm9y IG5hbWVzcGFjZXMuCi0gIyBOb3RlOiBBcyBvZiAyMDAwLTA2LTAzLCB0aGV5IHBhc3NlZCB1bmRl ciBnKysgLSBkamIKLSAKLStsb2FkX2xpYiAiY3Atc3VwcG9ydC5leHAiCi0gCi0gaWYgJHRyYWNl bGV2ZWwgdGhlbiB7Ci0gICAgICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLUBAIC0yNDEsMTEgKzI0 MiwxNiBAQCBnZGJfdGVzdCAicHR5cGUgRSIgInR5cGUgPSBuYW1lc3BhY2UgQzo6RDo6RSIKLSBn ZGJfdGVzdCAicHR5cGUgQ0NsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpDQ2xhc3MgXHtcclxuICBw dWJsaWM6fHN0cnVjdCBDOjpDQ2xhc3MgXHspXHJcbiAgICBpbnQgeDtcclxuXH0iCi0gZ2RiX3Rl c3QgInB0eXBlIENDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0gKGNsYXNzIEM6OkNDbGFzczo6 TmVzdGVkQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNz IFx7KVxyXG4gICAgaW50IHk7XHJcblx9IgotIGdkYl90ZXN0ICJwdHlwZSBOZXN0ZWRDbGFzcyIg Ik5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gY3VycmVudCBjb250ZXh0LiIKLS1zZXR1cF9r ZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKLS1nZGJfdGVzdCAicHR5cGUgOjpDOjpDQ2xhc3MiICJ0 eXBlID0gY2xhc3MgQzo6Q0NsYXNzIFx7XHJcbiAgcHVibGljOlxyXG4gICAgaW50IHg7XHJcblx9 IgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgotLWdkYl90ZXN0ICJwdHlwZSA6OkM6 OkNDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFz cyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB5O1xyXG5cfSIKLS1zZXR1cF9rZmFpbCAiZ2Ri LzE0NDgiICIqLSotKiIKLStjcF90ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6Qzo6Q0Ns YXNzIiAiIiAiY2xhc3MiICJDOjpDQ2xhc3MiIFwKLSsJewotKwkgICAgeyBmaWVsZCBwdWJsaWMg ImludCB4OyIgfQotKwl9Ci0rY3BfdGVzdF9wdHlwZV9jbGFzcyBcCi0rCSJwdHlwZSA6OkM6OkND bGFzczo6TmVzdGVkQ2xhc3MiICIiICJjbGFzcyIgIkM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiIFwK LSsJewotKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB5OyIgfQotKwl9Ci0gZ2RiX3Rlc3QgInB0 eXBlIDo6Qzo6TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFzc1wiIGluIG5hbWVz cGFjZSBcIkNcIi4iCi0gZ2RiX3Rlc3QgInB0eXBlIEM6OkNDbGFzcyIgIk5vIHN5bWJvbCBcIkND bGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6OkNcIi4iCi0gZ2RiX3Rlc3QgInB0eXBlIEM6OkNDbGFz czo6TmVzdGVkQ2xhc3MiICJObyB0eXBlIFwiQ0NsYXNzXCIgd2l0aGluIGNsYXNzIG9yIG5hbWVz cGFjZSBcIkM6OkNcIi4iCi1AQCAtMjU1LDggKzI2MSwxMSBAQCBnZGJfdGVzdCAicHR5cGUgQzo6 TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6 OkNcIgotIAotIGdkYl90ZXN0ICJwcmludCBjT3RoZXJGaWxlIiAiXFwkXFswLTlcXS4qID0gMzE2 IgotIGdkYl90ZXN0ICJwdHlwZSBPdGhlckZpbGVDbGFzcyIgInR5cGUgPSAoY2xhc3MgQzo6T3Ro ZXJGaWxlQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpPdGhlckZpbGVDbGFzcyBceylc clxuICAgIGludCB6O1xyXG5cfSIKLS1zZXR1cF9rZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKLS1n ZGJfdGVzdCAicHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgInR5cGUgPSBjbGFzcyBDOjpPdGhl ckZpbGVDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB6O1xyXG5cfSIKLStjcF90ZXN0 X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6Qzo6T3RoZXJGaWxlQ2xhc3MiICIiICJjbGFzcyIg IkM6Ok90aGVyRmlsZUNsYXNzIiBcCi0rCXsKLSsJICAgIHsgZmllbGQgcHVibGljICJpbnQgejsi IH0KLSsJfQotIGdkYl90ZXN0ICJwdHlwZSBDOjpPdGhlckZpbGVDbGFzcyIgIk5vIHN5bWJvbCBc Ik90aGVyRmlsZUNsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wiLiIKLSAKLSAjIFNvbWUgYW5v bnltb3VzIG5hbWVzcGFjZSB0ZXN0cy4KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9vdmVybG9hZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmVybG9hZC5leHAKIGluZGV4 IDFiZmEwZjMuLjlmZDMxYTggMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmVy bG9hZC5leHAKQEAgLTIxNDAwLDYgKzIyNTg5LDE2IEBAIGluZGV4IDAwMDAwMDAuLjRlOTJlNzUK ICsKICtnZGJfZXhpdAogK3JldHVybiAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3Avc2hhZG93LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvdy5leHAKK2luZGV4IDFl NWU4MGIuLjQwYzM1YTQgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFkb3cu ZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFkb3cuZXhwCitAQCAtODUsNSArODUs NCBAQCBnZGJfdGVzdCAicHJpbnQgeCIgIj0gNTUiICJQcmludCBsb2NhbCB4IG5vdCBuYW1lc3Bh Y2UgeCIKKyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyNSJdCisg Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjUiCisgCistc2V0dXBfa2ZhaWwgImdk Yi83OTM2IiAiKi0qLSoiCisgZ2RiX3Rlc3QgInByaW50IHgiICI9IDExIiAiUHJpbnQgaW1wb3J0 ZWQgbmFtZXNwYWNlIHgiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc2hhZG93 aW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc2hhZG93aW5nLmNjCiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAogaW5kZXggMDAwMDAwMC4uNmQ5YzJmMQpAQCAtMjE1NTEsNiArMjI3NTAsNTYgQEAg aW5kZXggMDAwMDAwMC4uNjkyMmVlZAogK2lmIFt0ZXN0X2NvbXBpbGVyX2luZm8gZ2NjLTQtMy0q XSB0aGVuIHsgc2V0dXBfeGZhaWwgKi0qLSogfQogKwogK2dkYl90ZXN0ICJwcmludCB4IiAiPSAx MSIgIlByaW50IGltcG9ydGVkIG5hbWVzcGFjZSB4IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL3VzZXJkZWYuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC91c2VyZGVmLmNjCitp bmRleCAzMzhjNThhLi41NmE3MzVmIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av dXNlcmRlZi5jYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdXNlcmRlZi5jYworQEAgLTMx MSw2ICszMTEsMTEgQEAgcHVibGljOgorICAgaW50IHo7CisgfTsKKyAKKytib29sIG9wZXJhdG9y PT0gKGNvbnN0IE1lbWJlciAmbTEsIGNvbnN0IE1lbWJlciAmbTIpCisreworKyAgcmV0dXJuIG0x LnogPT0gbTIuejsKKyt9CisrCisgY2xhc3MgQ29udGFpbmVyCisgeworIHB1YmxpYzoKK0BAIC0z MzAsOCArMzM1LDEyIEBAIGludCBtYWluICh2b2lkKQorICBBMSB0d28oNCw1KTsKKyAgQTEgdGhy ZWUoMCwwKTsKKyAgQ29udGFpbmVyIGM7CisrIE1lbWJlciBtZW0xLCBtZW0yOworICBpbnQgdmFs OworICAKKysgbWVtMS56ID0gNTsKKysgbWVtMi56ID0gNzsKKysKKyAgbWFya2VyMSgpOyAvLyBt YXJrZXIxLXJldHVybnMtaGVyZQorICBjb3V0IDw8IG9uZTsgLy8gbWFya2VyMS1yZXR1cm5zLWhl cmUKKyAgY291dCA8PCB0d287CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdXNl cmRlZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC91c2VyZGVmLmV4cAoraW5kZXggYmQ1NGM3 OC4uMjdlYzgwYiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhw CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC91c2VyZGVmLmV4cAorQEAgLTExMyw2ICsxMTMs NyBAQCBnZGJfdGVzdCAicHJpbnQgb25lID4gdHdvIiAiXFxcJFxbMC05XF0qID0gMFxbXHJcblxd IgorIGdkYl90ZXN0ICJwcmludCBvbmUgPj0gdHdvIiAiXFxcJFxbMC05XF0qID0gMFxbXHJcblxd IgorIAorIGdkYl90ZXN0ICJwcmludCBvbmUgPT0gdHdvIiAiXFxcJFxbMC05XF0qID0gMFxbXHJc blxdIgorK2dkYl90ZXN0ICJwcmludCBvbmUub3BlcmF0b3I9PSAodHdvKSIgIlxcXCRcWzAtOVxd KiA9IDBcW1xyXG5cXSIKKyAKKyBnZGJfdGVzdCAicHJpbnQgb25lICE9IHR3byIgIlxcXCRcWzAt OVxdKiA9IDFcW1xyXG5cXSIKKyAKK0BAIC0xNTUsNSArMTU2LDggQEAgZ2RiX3Rlc3QgInByaW50 ICpjIiAiXFxcJFxbMC05XF0qID0gXFwoTWVtYmVyICZcXCkgQCRoZXg6IHt6ID0gLip9IgorIGdk Yl90ZXN0ICJwcmludCAmKmMiICJcXFwkXFswLTlcXSogPSBcXChNZW1iZXIgXFwqXFwpICRoZXgi CisgZ2RiX3Rlc3QgInB0eXBlICYqYyIgInR5cGUgPSBzdHJ1Y3QgTWVtYmVyIHtcW1xyXG4gXF0r aW50IHo7XFtcclxuXF0rfSAmXFwqIgorIAorK2dkYl90ZXN0ICJwcmludCBvcGVyYXRvcj09ICht ZW0xLCBtZW0yKSIgIiA9IGZhbHNlIgorK2dkYl90ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0x LCBtZW0xKSIgIiA9IHRydWUiCisrCisgZ2RiX2V4aXQKKyByZXR1cm4gMAogZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5TIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAw MDAwLi5kNWI5Y2E1CkBAIC0yNDc2MCw3ICsyNjAwOSw3IEBAIGluZGV4IGVkNzZiMDkuLjhiZjM2 MzQgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMu YwotaW5kZXggY2EzNDA4My4uYzIzZmQ2OCAxMDA2NDQKK2luZGV4IDJjZGJjYmUuLjZiODI0NzYg MTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dkYi92YWxvcHMuYwogQEAgLTM4LDYg KzM4LDcgQEAKQEAgLTI0OTg1LDE1ICsyNjIzNCwxOSBAQCBpbmRleCBjYTM0MDgzLi5jMjNmZDY4 IDEwMDY0NAogICAgICAgIGlmIChmdW5jX25hbWUgPT0gTlVMTCkKICAgICAgICAgIHsKICAJICAq c3ltcCA9IGZzeW07Ci1AQCAtMzA5Niw3ICszMjAxLDcgQEAgdmFsdWVfbWF5YmVfbmFtZXNwYWNl X2VsdCAoY29uc3Qgc3RydWN0IHR5cGUgKmN1cnR5cGUsCitAQCAtMzA5Niw5ICszMjAxLDkgQEAg dmFsdWVfbWF5YmVfbmFtZXNwYWNlX2VsdCAoY29uc3Qgc3RydWN0IHR5cGUgKmN1cnR5cGUsCiAg ICBzdHJ1Y3Qgc3ltYm9sICpzeW07CiAgICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdDsKICAKIC0gIHN5 bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2VfbmFtZSwgbmFtZSwgTlVM TCwKKy0JCQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCksIAorLQkJCQkgICAgVkFSX0RPTUFJ TiwgMSk7CiArICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZShuYW1lc3BhY2VfbmFt ZSwgbmFtZSwKLSAJCQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCksIAotIAkJCQkgICAgVkFS X0RPTUFJTik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VsZWN0 ZWRfYmxvY2sgKDApLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUl9E T01BSU4pOwogIAorICAgaWYgKHN5bSA9PSBOVUxMKQorICAgICByZXR1cm4gTlVMTDsKIEBAIC0z MjQwLDcgKzMzNDUsNyBAQCB2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGNv bXBsYWluKQogIAogICAgLyogQ2FsbGluZyBsb29rdXBfYmxvY2tfc3ltYm9sIGlzIG5lY2Vzc2Fy eSB0byBnZXQgdGhlIExPQ19SRUdJU1RFUgpAQCAtMjUzNTksMyArMjY2MTIsMjUgQEAgaW5kZXgg MjVjYzJkOS4uNjc4NDY1NCAxMDA2NDQKICAgIHhjb2ZmX3N5bWZpbGVfZmluaXNoLAkJLyogc3lt X2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCiAgICB4Y29mZl9zeW1maWxl X29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiB4bGF0ZSBvZmZzZXRzIGV4dC0+aW50IGZvcm0gKi8K ICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVu dCBpbmZvcm1hdGlvbiBmcm9tCitkaWZmIC0tZ2l0IGEvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMg Yi9nZGIveHRlbnNhLWxpbnV4LXRkZXAuYworaW5kZXggNjY3ZDliMy4uMGQ4NjIxOSAxMDA2NDQK Ky0tLSBhL2dkYi94dGVuc2EtbGludXgtdGRlcC5jCisrKysgYi9nZGIveHRlbnNhLWxpbnV4LXRk ZXAuYworQEAgLTIyLDYgKzIyLDcgQEAKKyAKKyAjaW5jbHVkZSAic29saWItc3ZyNC5oIgorICNp bmNsdWRlICJzeW10YWIuaCIKKysjaW5jbHVkZSAibGludXgtdGRlcC5oIgorIAorIC8qIE9TIHNw ZWNpZmljIGluaXRpYWxpemF0aW9uIG9mIGdkYmFyY2guICAqLworIAorQEAgLTMwLDYgKzMxLDkg QEAgeHRlbnNhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoKQorIHsKKyAgIHNldF9zb2xpYl9zdnI0X2ZldGNoX2xpbmtfbWFw X29mZnNldHMKKyAgICAgKGdkYmFyY2gsIHN2cjRfaWxwMzJfZmV0Y2hfbGlua19tYXBfb2Zmc2V0 cyk7CisrCisrICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwKKysJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworIH0KKyAKKyAv KiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAq LwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2ggYi9nZGItYno1Mzk1 OTAtZ251LWlmdW5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWNlMTYw Li4wMDAwMDAwCi0tLSBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMDQ1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9q ZWN0QXJjaGVyCi1odHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvQXJjaGVyQnJhbmNoTWFu YWdlbWVudAotCi1HSVQgc25hcHNob3Q6Ci1jb21taXQgNzkxMTY1ZGYwN2ZkMjJkMzgxZGVmMTMx ODk1NGMzODlhNjA2ZjgxYQotCi1hcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwotCi1JbmRleDog Z2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYWxwaGEtbGludXgtdGRlcC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9hbHBoYS1saW51eC10ZGVwLmMJMjAxMC0w MS0wMSAwODozMToyOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi9hbHBoYS1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAK LUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgInN5bXRhYi5oIgotICNpbmNsdWRlICJyZWdz ZXQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAibGludXgtdGRlcC5oIgot IAotICNpbmNsdWRlICJhbHBoYS10ZGVwLmgiCi0gCi1AQCAtMjM2LDYgKzIzNyw5IEBAIGFscGhh X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmYKLSAKLSAgIHNldF9nZGJhcmNoX3Jl Z3NldF9mcm9tX2NvcmVfc2VjdGlvbgotICAgICAoZ2RiYXJjaCwgYWxwaGFfbGludXhfcmVnc2V0 X2Zyb21fY29yZV9zZWN0aW9uKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3Np bmctcHJvdG90eXBlcy4gICovCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvYW1kNjQt bGludXgtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dk Yi9hbWQ2NC1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxMzoyNi4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMJMjAxMC0wMS0y MSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTU3LDYgKzE1NTcsOSBAQCBhbWQ2NF9s aW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCi0gICBhbWQ2NF9saW51eF9yZWNvcmRf dGRlcC5hcmc2ID0gQU1ENjRfUjlfUkVHTlVNOwotIAotICAgdGRlcC0+aTM4Nl9zeXNjYWxsX3Jl Y29yZCA9IGFtZDY0X2xpbnV4X3N5c2NhbGxfcmVjb3JkOwotKwotKyAgc2V0X2dkYmFyY2hfY29u dmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRf ZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gDAotIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL2FybS1saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAw MTIxLm9yaWcvZ2RiL2FybS1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMToyOS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9hcm0tbGludXgtdGRlcC5jCTIw MTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtOTA3LDYgKzkwNyw5IEBAIGFy bV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyAKLSAgIHNldF9nZGJhcmNoX2Rp c3BsYWNlZF9zdGVwX2ZyZWVfY2xvc3VyZSAoZ2RiYXJjaCwKLSAJCQkJCSAgIHNpbXBsZV9kaXNw bGFjZWRfc3RlcF9mcmVlX2Nsb3N1cmUpOwotICAgc2V0X2dkYmFyY2hfZGlzcGxhY2VkX3N0ZXBf bG9jYXRpb24gKGdkYmFyY2gsIGRpc3BsYWNlZF9zdGVwX2F0X2VudHJ5X3BvaW50KTsKLSsKLSsg IHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJ ICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUg YSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1JbmRleDog Z2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZWxmcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC41MC4yMDEwMDEyMS5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMC0wMS0yMSAxNToxMzoyNy4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9lbGZyZWFkLmMJMjAxMC0w MS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODQsNyArMTg0LDggQEAgcmVjb3Jk X21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLAotIHsKLSAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0gCi0tICBpZiAobXNfdHlw ZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQpCi0rICBpZiAobXNfdHlw ZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQKLSsgICAgICB8fCBtc190 eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKLSAgICAgYWRkcmVzcyA9IGdkYmFyY2hfc21hc2hf dGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKLSAKLSAgIHJldHVybiBwcmltX3JlY29y ZF9taW5pbWFsX3N5bWJvbF9mdWxsIChuYW1lLCBuYW1lX2xlbiwgY29weV9uYW1lLCBhZGRyZXNz LAotQEAgLTM5Myw3ICszOTQsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZQotIAkgICAgewotIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwg QlNGX1dFQUspKQotIAkJewotLQkJICBtc190eXBlID0gbXN0X3RleHQ7Ci0rCQkgIGlmIChzeW0t PmZsYWdzICYgQlNGX0dOVV9JTkRJUkVDVF9GVU5DVElPTikKLSsJCSAgICBtc190eXBlID0gbXN0 X3RleHRfZ251X2lmdW5jOwotKwkJICBlbHNlCi0rCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0Owot IAkJfQotIAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVb MV0gPT0gJ0wnKQotIAkJICAgICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKLUluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9mcnYtbGludXgtdGRlcC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9mcnYtbGludXgtdGRlcC5jCTIwMTAtMDEt MDEgMDg6MzE6MzIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIv ZnJ2LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAg LTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCi0gI2luY2x1ZGUgInJl Z3NldC5oIgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0rI2luY2x1ZGUgImxpbnV4LXRkZXAu aCIKLSAKLSAvKiBEZWZpbmUgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBhbiBGUi1WIGluc3RydWN0 aW9uLiAgKi8KLSBzdGF0aWMgY29uc3QgaW50IGZydl9pbnN0cl9zaXplID0gNDsKLUBAIC00ODYs NyArNDg3LDIxIEBAIGZydl9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnUKLSAg IHJldHVybiBOVUxMOwotIH0KLSAKLS0MCi0rc3RhdGljIENPUkVfQUREUgotK2Zydl9saW51eF9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJ CSAgICAgIENPUkVfQUREUiBhZGRyLAotKwkJCQkgICAgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFy ZykKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBmcnZfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIg KGdkYmFyY2gsIGFkZHIsIHRhcmcpOwotKyAgQ09SRV9BRERSIHJlc29sdmVkOwotKwotKyAgcmVz b2x2ZWQgPSBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRyIChnZGJhcmNoLCBhZGRyLCBw Yyk7Ci0rICBpZiAocmVzb2x2ZWQgIT0gcGMpCi0rICAgIHBjID0gZnJ2X2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChnZGJhcmNoLCByZXNvbHZlZCwgdGFyZyk7Ci0rCi0rICByZXR1cm4gcGM7 Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gZnJ2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJj aF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLUBAIC00OTQsNiArNTA5 LDEwIEBAIGZydl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyAKLSAgIGZyYW1l X3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZmcnZfbGludXhfc2lndHJhbXBfZnJh bWVfdW53aW5kKTsgCi0gICBzZXRfZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKGdk YmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZydl9saW51 eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24pOwotKwotKyAgaWYgKGZydl9hYmkgKGdkYmFyY2gp ID09IEZSVl9BQklfRkRQSUMpCi0rICAgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBmcnZfbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIpOwotIH0KLSAKLSBzdGF0aWMgZW51bSBnZGJfb3NhYmkKLUluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTIxL2dkYi9mcnYtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDEyMS5vcmlnL2dkYi9mcnYtdGRlcC5jCTIwMTAtMDEtMDEgMDg6MzE6MzIuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvZnJ2LXRkZXAuYwkyMDEwLTAxLTIxIDE1 OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTExNjksNyArMTE2OSw3IEBAIGZpbmRfZnVuY19k ZXNjciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gKLSAgIHJldHVybiBkZXNjcjsKLSB9Ci0gCi0t c3RhdGljIENPUkVfQUREUgotK0NPUkVfQUREUgotIGZydl9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCi0gewotSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Zydi10ZGVwLmgKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL2Zydi10ZGVwLmgJMjAxMC0wMS0wMSAwODozMToz Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9mcnYtdGRlcC5o CTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMTE4LDMgKzExOCw2IEBA IENPUkVfQUREUiBmcnZfZmV0Y2hfb2JqZmlsZV9saW5rX21hcCAoc3QKLSBzdHJ1Y3QgdGFyZ2V0 X3NvX29wczsKLSBleHRlcm4gc3RydWN0IHRhcmdldF9zb19vcHMgZnJ2X3NvX29wczsKLSAKLStD T1JFX0FERFIgZnJ2X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKLSsJCQkJCSAgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgIHN0cnVjdCB0YXJnZXRf b3BzICp0YXJnKTsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9nZGJ0eXBlcy5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIw MTAtMDEtMjEgMTU6MTM6MjYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEy MS9nZGIvZ2RidHlwZXMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAg LTE5NDYsNiArMTk0Niw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxl bmcKLSAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9IDE7Ci0gICBpZiAoZmxhZ3MgJiBUWVBFX0ZM QUdfRklYRURfSU5TVEFOQ0UpCi0gICAgIFRZUEVfRklYRURfSU5TVEFOQ0UgKHR5cGUpID0gMTsK LSsgIGlmIChmbGFncyAmIFRZUEVfRkxBR19HTlVfSUZVTkMpCi0rICAgIFRZUEVfR05VX0lGVU5D ICh0eXBlKSA9IDE7Ci0gCi0gICBpZiAobmFtZSkKLSAgICAgVFlQRV9OQU1FICh0eXBlKSA9IG9i c2F2ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1lKSwKLUBAIC0zOTU1LDYgKzM5NTcsOCBAQCBn ZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhCi0gICAgID0gbG9va3VwX3Bv aW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwotICAgYnVpbHRpbl90eXBl LT5idWlsdGluX2Z1bmNfcHRyCi0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1 bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7Ci0rICBidWlsdGluX3R5 cGUtPmJ1aWx0aW5fZnVuY19mdW5jCi0rICAgID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0 aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7Ci0gCi0gICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50 cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCi0gICBidWlsdGluX3R5cGUtPmludGVybmFs X2ZuCi1AQCAtNDA3MSw2ICs0MDc1LDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCi0gCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUp OwotICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9s KQotICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7Ci0rICBvYmpmaWxlX3R5cGUtPm5v ZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCi0rICAgID0gaW5pdF90eXBlIChUWVBFX0NPREVf RlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywKLSsJCSAiPHRleHQgZ251LWlmdW5jIHZhcmlh YmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOwotKyAgVFlQRV9UQVJHRVRfVFlQRSAob2Jq ZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCkKLSsgICAgPSBvYmpmaWxl X3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7Ci0gICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfZGF0 YV9zeW1ib2wKLSAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQsCi0gCQkgZ2RiYXJjaF9p bnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAsCi1JbmRleDogZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvZ2RidHlwZXMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAx MjEub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEwLTAxLTIxIDE1OjE0OjQxLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0yMSAxNTox NjozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODgsNiArMTg4LDcgQEAgZW51bSB0eXBlX2ZsYWdf dmFsdWUKLSAgIFRZUEVfRkxBR19GSVhFRF9JTlNUQU5DRSA9ICgxIDw8IDE1KSwKLSAgIFRZUEVf RkxBR19TVFVCX1NVUFBPUlRFRCA9ICgxIDw8IDE2KSwKLSAgIFRZUEVfRkxBR19OT1RURVhUID0g KDEgPDwgMTcpLAotKyAgVFlQRV9GTEFHX0dOVV9JRlVOQyA9ICgxIDw8IDE4KSwKLSAKLSAgIC8q IFVzZWQgZm9yIGVycm9yLWNoZWNraW5nLiAgKi8KLSAgIFRZUEVfRkxBR19NSU4gPSBUWVBFX0ZM QUdfVU5TSUdORUQKLUBAIC0yOTMsNiArMjk0LDEyIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCi0gCi0gI2RlZmluZSBUWVBFX05PVFRFWFQodCkJCShUWVBFX01BSU5fVFlQRSAodCkt PmZsYWdfbm90dGV4dCkKLSAKLSsvKiBDdXJyZW50bHkgdXNlZCBvbmx5IGZvciBUWVBFX0NPREVf RlVOQyB3aGVyZSBzcGVjaWZpZXMgdGhlIHJlYWwgZnVuY3Rpb24KLSsgICBhZGRyZXNzIGlzIHJl dHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FsbC4gIFRZUEVfVEFSR0VUX1RZUEUgZGV0ZXJtaW5l cyB0aGUKLSsgICBmaW5hbCByZXR1cm5lZCBmdW5jdGlvbiB0eXBlIHRvIGJlIHByZXNlbnRlZCB0 byB1c2VyLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfR05VX0lGVU5DKHQpCShUWVBFX01BSU5fVFlQ RSAodCktPmZsYWdfZ251X2lmdW5jKQotKwotIC8qIFR5cGUgb3duZXIuICBJZiBUWVBFX09CSkZJ TEVfT1dORUQgaXMgdHJ1ZSwgdGhlIHR5cGUgaXMgb3duZWQgYnkKLSAgICB0aGUgb2JqZmlsZSBy ZXRyaWV2ZWQgYXMgVFlQRV9PQkpGSUxFLiAgT3RoZXJ3ZWlzZSwgdGhlIHR5cGUgaXMKLSAgICBv d25lZCBieSBhbiBhcmNoaXRlY3R1cmU7IFRZUEVfT0JKRklMRSBpcyBOVUxMIGluIHRoaXMgY2Fz ZS4gICovCi1AQCAtNDQ3LDYgKzQ1NCw3IEBAIHN0cnVjdCBtYWluX3R5cGUKLSAgIHVuc2lnbmVk IGludCBmbGFnX3ZlY3RvciA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19zdHViX3N1cHBvcnRl ZCA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19ub3R0ZXh0IDogMTsKLSsgIHVuc2lnbmVkIGlu dCBmbGFnX2dudV9pZnVuYyA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19maXhlZF9pbnN0YW5j ZSA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpmaWxlX293bmVkIDogMTsKLSAgIHVuc2ln bmVkIGludCBmbGFnX2Rpc2NhcmRhYmxlIDogMTsKLUBAIC0xMjQzLDYgKzEyNTEsMTAgQEAgc3Ry dWN0IGJ1aWx0aW5fdHlwZQotICAgICAgKCopICgpIGNhbiBzZXJ2ZXIgYXMgYSBnZW5lcmljIGZ1 bmN0aW9uIHBvaW50ZXIuICAqLwotICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19wdHI7Ci0g Ci0rICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24gKHJldHVybmlu ZyB2b2lkKScgdHlwZS4KLSsgICAgIFRoZSBmaW5hbCB2b2lkIHJldHVybiB0eXBlIGlzIG5vdCBz aWduaWZpY2FudCBmb3IgaXQuICAqLwotKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19mdW5j OwotKwotIAotICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KLSAKLUBAIC0xMjg1LDYg KzEyOTcsNyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCi0gCi0gICAvKiBUeXBlcyB1c2VkIGZvciBz eW1ib2xzIHdpdGggbm8gZGVidWcgaW5mb3JtYXRpb24uICAqLwotICAgc3RydWN0IHR5cGUgKm5v ZGVidWdfdGV4dF9zeW1ib2w7Ci0rICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X2dudV9pZnVu Y19zeW1ib2w7Ci0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19kYXRhX3N5bWJvbDsKLSAgIHN0cnVj dCB0eXBlICpub2RlYnVnX3Vua25vd25fc3ltYm9sOwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdf dGxzX3N5bWJvbDsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLWxpbnV4LXRk ZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaHBwYS1s aW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQx LjAwMDAwMDAwMCArMDEwMAotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAicmVnc2V0Lmgi Ci0gI2luY2x1ZGUgInJlZ2NhY2hlLmgiCi0gI2luY2x1ZGUgImhwcGEtdGRlcC5oIgotKyNpbmNs dWRlICJsaW51eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAKLUBAIC01 MTMsNyArNTE0LDIxIEBAIGhwcGFfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChzdHIK LSAKLSAgIHJldHVybiBOVUxMOwotIH0KLS0MCi0rCi0rc3RhdGljIENPUkVfQUREUgotK2hwcGEz Ml9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCi0rCQkJCQkgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgc3RydWN0IHRhcmdldF9vcHMgKnRh cmcpCi0rewotKyAgQ09SRV9BRERSIHBjID0gaHBwYTMyX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyIChnZGJhcmNoLCBhZGRyLCB0YXJnKTsKLSsgIENPUkVfQUREUiByZXNvbHZlZDsKLSsKLSsg IHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRk ciwgcGMpOwotKyAgaWYgKHJlc29sdmVkICE9IHBjKQotKyAgICBwYyA9IGhwcGEzMl9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcmVzb2x2ZWQsIHRhcmcpOwotKwotKyAgcmV0 dXJuIHBjOwotK30KLSAKLSAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4gICovCi0gZXh0ZXJuIGlu aXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9ocHBhX2xpbnV4X3RkZXA7Ci1AQCAtNTU1 LDYgKzU3MCwxMCBAQCBocHBhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCi0g ICAvKiBFbmFibGUgVExTIHN1cHBvcnQuICAqLwotICAgc2V0X2dkYmFyY2hfZmV0Y2hfdGxzX2xv YWRfbW9kdWxlX2FkZHJlc3MgKGdkYmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3ZyNF9mZXRjaF9vYmpmaWxlX2xpbmtfbWFwKTsKLSsKLSsgIGlm ICh0ZGVwLT5ieXRlc19wZXJfYWRkcmVzcyA9PSA0KQotKyAgICBzZXRfZ2RiYXJjaF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJICAgICAgIGhwcGEzMl9saW51eF9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIHZvaWQKLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi9ocHBhLXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxMC0wMS0xOSAxMDozOToxMi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9ocHBhLXRkZXAuYwkyMDEwLTAx LTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGhwcGE2 NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGIKLSB9Ci0gDAotIAotLXN0YXRpYyBD T1JFX0FERFIKLStDT1JFX0FERFIKLSBocHBhMzJfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkciwKLSAJCQkJICAgc3RydWN0 IHRhcmdldF9vcHMgKnRhcmcpCi0gewotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2hw cGEtdGRlcC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9o cHBhLXRkZXAuaAkyMDEwLTAxLTAxIDA4OjMxOjMzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMjEvZ2RiL2hwcGEtdGRlcC5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAw MDAwICswMTAwCi1AQCAtMjQ2LDQgKzI0Niw4IEBAIGV4dGVybiBpbnQgaHBwYV9pbl9zb2xpYl9j YWxsX3RyYW1wb2xpbmUKLSAJCQkJCSAgQ09SRV9BRERSIHBjLCBjaGFyICpuYW1lKTsKLSBleHRl cm4gQ09SRV9BRERSIGhwcGFfc2tpcF90cmFtcG9saW5lX2NvZGUgKHN0cnVjdCBmcmFtZV9pbmZv ICosIENPUkVfQUREUiBwYyk7Ci0gCi0rZXh0ZXJuIENPUkVfQUREUiBocHBhMzJfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCQkJCSAgICBD T1JFX0FERFIgYWRkciwKLSsJCQkJCQkgICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpOwotKwot ICNlbmRpZiAgLyogaHBwYS10ZGVwLmggKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi9pMzg2LWxpbnV4LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEu b3JpZy9nZGIvaTM4Ni1saW51eC10ZGVwLmMJMjAxMC0wMS0wNCAxNTo1Nzo0My4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTc5OCw2ICs3OTgsOSBAQCBpMzg2 X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGkzODZfbGludXhfZ2V0X3N5c2NhbGxfbnVtYmVyKTsKLSAKLSAgIHNl dF9nZGJhcmNoX2dldF9zaWdpbmZvX3R5cGUgKGdkYmFyY2gsIGxpbnV4X2dldF9zaWdpbmZvX3R5 cGUpOwotKwotKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gCi0g LyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAg Ki8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9pYTY0LWxpbnV4LXRkZXAuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvaWE2NC1saW51eC10ZGVw LmMJMjAxMC0wMS0wMSAwODozMTozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIw MTAwMTIxL2dkYi9pYTY0LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAw MCArMDEwMAotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAib3NhYmkuaCIKLSAjaW5jbHVk ZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAibGludXgt dGRlcC5oIgotIAotIC8qIFRoZSBzaWd0cmFtcCBjb2RlIGlzIGluIGEgbm9uLXJlYWRhYmxlIChl eGVjdXRhYmxlLW9ubHkpIHJlZ2lvbgotICAgIG9mIG1lbW9yeSBjYWxsZWQgdGhlIGBgZ2F0ZSBw YWdlJycuICBUaGUgYWRkcmVzc2VzIGluIHF1ZXN0aW9uCi1AQCAtMTM5LDYgKzE0MCw5IEBAIGlh NjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8KLSAgIC8qIEVuYWJsZSBUTFMg c3VwcG9ydC4gICovCi0gICBzZXRfZ2RiYXJjaF9mZXRjaF90bHNfbG9hZF9tb2R1bGVfYWRkcmVz cyAoZ2RiYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdnI0X2ZldGNoX29iamZpbGVfbGlua19tYXApOwotKwotKyAgc2V0X2dkYmFyY2hfY29udmVy dF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxl bmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIx L2dkYi9pbmZjYWxsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcv Z2RiL2luZmNhbGwuYwkyMDEwLTAxLTAxIDA4OjMxOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjAuNTAuMjAxMDAxMjEvZ2RiL2luZmNhbGwuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAw MDAwMCArMDEwMAotQEAgLTI1Miw5ICsyNTIsMTcgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1 Y3QgdmFsdWUgKmZ1bmN0aQotICAgICAgIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NP REVfRlVOQwotIAkgIHx8IFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpCi0g CXsKLS0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwgZnVuYWRkciwKLS0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLS0JICB2YWx1ZV90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIENPUkVfQUREUiBmdW5hZGRyMjsKLSsK LSsJICBmdW5hZGRyMiA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsIGZ1bmFkZHIsCi0rCQkJCQkJCSAmY3VycmVudF90YXJnZXQpOwotKwotKwkgIC8qIElmIFRZ UEVfR05VX0lGVU5DIGlzIGN1cnJlbnRseSBub3QgcmVzb2x2YWJsZSBrZWVwIGl0cyB0eXBlLiAg Ki8KLSsJICBpZiAoZnVuYWRkcjIgIT0gZnVuYWRkciB8fCAhVFlQRV9HTlVfSUZVTkMgKGZ0eXBl KSkKLSsJICAgIHsKLSsJICAgICAgZnVuYWRkciA9IGZ1bmFkZHIyOwotKwkgICAgICB2YWx1ZV90 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgICAgfQotIAl9Ci0gICAgIH0KLSAg IGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX0lOVCkKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTIxL2dkYi9saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIx Lm9yaWcvZ2RiL2xpbnV4LXRkZXAuYwkyMDEwLTAxLTE0IDIyOjIwOjExLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1 OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTIzLDYgKzIzLDggQEAKLSAjaW5jbHVkZSAiYXV4 di5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgotKyNp bmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJpbmZjYWxsLmgiCi0gCi0gLyogVGhpcyBmdW5j dGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0Ci0gICAgZXh0ZW5k L292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVjdHVyZS4gICovCi1AQCAtMTUyLDMg KzE1NCw0MyBAQCBsaW51eF9oYXNfc2hhcmVkX2FkZHJlc3Nfc3BhY2UgKHZvaWQpCi0gCi0gICBy ZXR1cm4gdGFyZ2V0X2lzX3VjbGludXg7Ci0gfQotKwotKy8qIENhbGwgZ251LWlmdW5jIHRvIHJl c29sdmUgYnJlYWtwb2ludCBhdCBpdHMgcmV0dXJuZWQgZnVuY3Rpb24uICAqLwotKwotK0NPUkVf QUREUgotK2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBDT1JFX0FERFIgZnVuY19wdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9 IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOwotKyAgc3RydWN0IG1p bmltYWxfc3ltYm9sICptc3ltYm9sOwotKyAgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgKmFkZHJl c3M7Ci0rCi0rICBpZiAoIXRhcmdldF9oYXNfZXhlY3V0aW9uKQotKyAgICByZXR1cm4gcGM7Ci0r Ci0rICBtc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChmdW5jX3B0cik7Ci0r ICBpZiAobXN5bWJvbCA9PSBOVUxMKQotKyAgICByZXR1cm4gcGM7Ci0rICBpZiAoTVNZTUJPTF9U WVBFIChtc3ltYm9sKSAhPSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0rICAgIHJldHVybiBwYzsKLSsK LSsgIC8qIE5vdCBhdCB0aGUgZ251LWlmdW5jIGVudHJ5IHBvaW50PyAgKi8KLSsgIGlmIChTWU1C T0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkgIT0gZnVuY19wdHIpCi0rICAgIHJldHVybiBwYzsK LSsKLSsgIGZ1bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190eXBlKTsKLSsgIHNl dF92YWx1ZV9hZGRyZXNzIChmdW5jdGlvbiwgcGMpOwotKwotKyAgLyogZ251LWlmdW5jcyBoYXZl IG5vIGFyZ3VtZW50cy4gIEZVTkNUSU9OIGlzIHRoZSBjb2RlIGluc3RydWN0aW9uIGFkZHJlc3MK LSsgICAgIHdoaWxlIEFERFJFU1MgaXMgYSBmdW5jdGlvbiBkZXNjcmlwdG9yLiAgKi8KLSsgIGFk ZHJlc3MgPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBOVUxMKTsKLSsKLSsg IHJldHVybiB2YWx1ZV9hc19hZGRyZXNzIChhZGRyZXNzKTsKLSt9Ci0rCi0rQ09SRV9BRERSCi0r bGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBDT1JFX0FERFIgYWRkciwKLSsJCQkJICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKLSt7Ci0r ICByZXR1cm4gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRkciwg YWRkcik7Ci0rfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2xpbnV4LXRkZXAuaAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbGludXgtdGRlcC5o CTIwMTAtMDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEw MDEyMS9nZGIvbGludXgtdGRlcC5oCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAw Ci1AQCAtMjIsNCArMjIsMTEgQEAKLSAKLSBzdHJ1Y3QgdHlwZSAqbGludXhfZ2V0X3NpZ2luZm9f dHlwZSAoc3RydWN0IGdkYmFyY2ggKik7Ci0gCi0rQ09SRV9BRERSIGxpbnV4X2NvbnZlcnRfZnJv bV9mdW5jX2FuZF9wdHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCQkJICAgQ09SRV9B RERSIGZ1bmNfcHRyLCBDT1JFX0FERFIgcGMpOwotKwotK0NPUkVfQUREUiBsaW51eF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkgICAg Q09SRV9BRERSIGFkZHIsCi0rCQkJCQkgICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpOwotKwot ICNlbmRpZiAvKiBsaW51eC10ZGVwLmggKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi9tMzJyLWxpbnV4LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEu b3JpZy9nZGIvbTMyci1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozNy4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tMzJyLWxpbnV4LXRkZXAuYwkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMwLDYgKzMwLDcgQEAKLSAjaW5j bHVkZSAiZ2RiX3N0cmluZy5oIgotIAotICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCi0rI2luY2x1 ZGUgImxpbnV4LXRkZXAuaCIKLSAjaW5jbHVkZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJz eW10YWIuaCIKLSAKLUBAIC00MjIsNiArNDIzLDkgQEAgbTMycl9saW51eF9pbml0X2FiaSAoc3Ry dWN0IGdkYmFyY2hfaW5mbwotICAgLyogRW5hYmxlIFRMUyBzdXBwb3J0LiAgKi8KLSAgIHNldF9n ZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRyZXNzIChnZGJhcmNoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2cjRfZmV0Y2hfb2JqZmlsZV9s aW5rX21hcCk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAo Z2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0K LSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlw ZXMuICAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pY3JvYmxhemUtbGludXgt dGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9taWNy b2JsYXplLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjM3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5jCTIwMTAt MDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMzUsNiArMzUsNyBAQAotICNpbmNs dWRlICJ0cmFkLWZyYW1lLmgiCi0gI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgotICNpbmNsdWRl ICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gCi0gc3RhdGlj IGludAotQEAgLTEzMyw2ICsxMzQsOSBAQCBtaWNyb2JsYXplX2xpbnV4X2luaXRfYWJpIChzdHJ1 Y3QgZ2RiYXJjCi0gICAvKiBUcmFtcG9saW5lcy4gICovCi0gICB0cmFtcF9mcmFtZV9wcmVwZW5k X3Vud2luZGVyIChnZGJhcmNoLAotIAkJCQkmbWljcm9ibGF6ZV9saW51eF9zaWdoYW5kbGVyX3Ry YW1wX2ZyYW1lKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRy IChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0g fQotIAotIHZvaWQKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9taW5zeW1zLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL21pbnN5bXMuYwkyMDEw LTAxLTIxIDE1OjEzOjI2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL21pbnN5bXMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMz MSw4ICszMzEsOSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoY29uc3QgY2hhciAqCi0g CSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+aGFzaF9uZXh0KQotIAkgICAgewotIAkgICAgICBp ZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwgbmFtZSkgPT0gMCAmJgot LQkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dCB8fAotLQkJICAgTVNZTUJP TF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmlsZV90ZXh0KSkKLSsJCSAgKE1TWU1CT0xfVFlQRSAo bXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJCSAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0g bXN0X3RleHRfZ251X2lmdW5jCi0rCQkgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1z dF9maWxlX3RleHQpKQotIAkJewotIAkJICBzd2l0Y2ggKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkp Ci0gCQkgICAgewotQEAgLTY5OCw2ICs2OTksMTYgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5 X3BjIChDT1JFX0FERFIgcAotIHsKLSAgIHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlf cGNfc2VjdGlvbiAocGMsIE5VTEwpOwotIH0KLSsKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBD IGlzIGluIGZ1bmN0aW9uIGltcGxlbWVudGluZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KLSsK LStpbnQKLStpbl9nbnVfaWZ1bmNfc3R1YiAoQ09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCBt aW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMp OwotKwotKyAgcmV0dXJuIG1zeW1ib2wgJiYgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3Rf dGV4dF9nbnVfaWZ1bmM7Ci0rfQotIAwKLSAKLSAvKiBSZXR1cm4gbGVhZGluZyBzeW1ib2wgY2hh cmFjdGVyIGZvciBhIEJGRC4gSWYgQkZEIGlzIE5VTEwsCi1AQCAtNzM3LDYgKzc0OCw3IEBAIHBy aW1fcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICoKLSAgIHN3aXRjaCAobXNfdHlw ZSkKLSAgICAgewotICAgICBjYXNlIG1zdF90ZXh0OgotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9p ZnVuYzoKLSAgICAgY2FzZSBtc3RfZmlsZV90ZXh0OgotICAgICBjYXNlIG1zdF9zb2xpYl90cmFt cG9saW5lOgotICAgICAgIHNlY3Rpb24gPSBTRUNUX09GRl9URVhUIChvYmpmaWxlKTsKLUBAIC0x MjAyLDcgKzEyMTQsOCBAQCBmaW5kX3NvbGliX3RyYW1wb2xpbmVfdGFyZ2V0IChzdHJ1Y3QgZnJh Ci0gICAgIHsKLSAgICAgICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1zeW1ib2wpCi0gICAgICAg ewotLQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwlpZiAoKE1TWU1C T0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJICAgIHx8IE1TWU1CT0xfVFlQRSAobXN5 bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQotIAkgICAgJiYgc3RyY21wIChTWU1CT0xfTElO S0FHRV9OQU1FIChtc3ltYm9sKSwKLSAJCSAgICAgICBTWU1CT0xfTElOS0FHRV9OQU1FICh0c3lt Ym9sKSkgPT0gMCkKLSAJICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpOwot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL21pcHMtbGludXgtdGRlcC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9taXBzLWxpbnV4LXRkZXAuYwky MDEwLTAxLTAxIDA4OjMxOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL21pcHMtbGludXgtdGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICsw MTAwCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgi Ci0gI2luY2x1ZGUgIm1pcHMtbGludXgtdGRlcC5oIgotICNpbmNsdWRlICJnbGliYy10ZGVwLmgi Ci0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLSAKLSBzdGF0aWMgc3RydWN0IHRhcmdldF9zb19v cHMgbWlwc19zdnI0X3NvX29wczsKLSAKLUBAIC0xMjI1LDYgKzEyMjYsOSBAQCBtaXBzX2xpbnV4 X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCi0gCXRkZXNjX251bWJlcmVkX3JlZ2lzdGVy IChmZWF0dXJlLCB0ZGVzY19kYXRhLCBNSVBTX1JFU1RBUlRfUkVHTlVNLAotIAkJCQkgInJlc3Rh cnQiKTsKLSAgICAgfQotKwotKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsK LSB9Ci0gCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90 b3R5cGVzLiAgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tbjEwMzAwLWxpbnV4 LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvbW4x MDMwMC1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTozNy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIx IDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAi ZnJhbWUuaCIKLSAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgotICNpbmNsdWRlICJ0cmFtcC1mcmFt ZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgot IAotQEAgLTcxOCw2ICs3MTksOSBAQCBhbTMzX2xpbnV4X2luaXRfb3NhYmkgKHN0cnVjdCBnZGJh cmNoX2luCi0gCi0gICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmYW0z M19saW51eF9zaWdmcmFtZSk7Ci0gICB0cmFtcF9mcmFtZV9wcmVwZW5kX3Vud2luZGVyIChnZGJh cmNoLCAmYW0zM19saW51eF9ydF9zaWdmcmFtZSk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVu Y2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL29iamMtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmln L2dkYi9vYmpjLWxhbmcuYwkyMDEwLTAxLTE0IDA5OjAzOjM2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL29iamMtbGFuZy5jCTIwMTAtMDEtMjEgMTU6MTU6NDEu MDAwMDAwMDAwICswMTAwCi1AQCAtMTE3OCwxNiArMTE3OCw2IEBAIGZpbmRfbWV0aG9kcyAoc3Ry dWN0IHN5bXRhYiAqc3ltdGFiLCBjaGEKLSAKLSAJICBRVUlUOwotIAotLQkgIC8qIFRoZSBtaW5p bWFsIHN5bWJvbCBtaWdodCBwb2ludCB0byBhIGZ1bmN0aW9uIGRlc2NyaXB0b3I7Ci0tCSAgICAg cmVzb2x2ZSBpdCB0byB0aGUgYWN0dWFsIGNvZGUgYWRkcmVzcyBpbnN0ZWFkLiAgKi8KLS0JICBw YyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHBjLAotLQkJ CQkJCSAgICZjdXJyZW50X3RhcmdldCk7Ci0tCi0tCSAgaWYgKHN5bXRhYikKLS0JICAgIGlmIChw YyA8IEJMT0NLX1NUQVJUIChibG9jaykgfHwgcGMgPj0gQkxPQ0tfRU5EIChibG9jaykpCi0tCSAg ICAgIC8qIE5vdCBpbiB0aGUgc3BlY2lmaWVkIHN5bXRhYi4gICovCi0tCSAgICAgIGNvbnRpbnVl OwotLQotIAkgIHN5bW5hbWUgPSBTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKTsKLSAJICBp ZiAoc3ltbmFtZSA9PSBOVUxMKQotIAkgICAgY29udGludWU7Ci1AQCAtMTIyMyw2ICsxMjEzLDE3 IEBAIGZpbmRfbWV0aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFiLCBjaGEKLSAJICAgICAgKChu c2VsZWN0b3IgPT0gTlVMTCkgfHwgKHN0cmNtcCAoc2VsZWN0b3IsIG5zZWxlY3RvcikgIT0gMCkp KQotIAkgICAgY29udGludWU7Ci0gCi0rCSAgLyogVGhlIG1pbmltYWwgc3ltYm9sIG1pZ2h0IHBv aW50IHRvIGEgZnVuY3Rpb24gZGVzY3JpcHRvcjsKLSsJICAgICByZXNvbHZlIGl0IHRvIHRoZSBh Y3R1YWwgY29kZSBhZGRyZXNzIGluc3RlYWQuICBEZWxheSB0aGUgY2FsbCBhcwotKwkgICAgIGl0 cyByZXNvbHV0aW9uIG1heSBiZSBleHBlbnNpdmUuICAqLwotKwkgIHBjID0gZ2RiYXJjaF9jb252 ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcGMsCi0rCQkJCQkJICAgJmN1cnJlbnRf dGFyZ2V0KTsKLSsKLSsJICBpZiAoc3ltdGFiKQotKwkgICAgaWYgKHBjIDwgQkxPQ0tfU1RBUlQg KGJsb2NrKSB8fCBwYyA+PSBCTE9DS19FTkQgKGJsb2NrKSkKLSsJICAgICAgLyogTm90IGluIHRo ZSBzcGVjaWZpZWQgc3ltdGFiLiAgKi8KLSsJICAgICAgY29udGludWU7Ci0rCi0gCSAgc3ltID0g ZmluZF9wY19mdW5jdGlvbiAocGMpOwotIAkgIGlmIChzeW0gIT0gTlVMTCkKLSAJICAgIHsKLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9wYXJzZS5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMjEgMTU6MTM6MjYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvcGFyc2UuYwkyMDEwLTAx LTIxIDE1OjE2OjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTUxNiw2ICs1MTYsMTEgQEAgd3JpdGVf ZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbAotIAl3cml0ZV9leHBfZWx0X3R5cGUg KG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wpOwotICAgICAgIGJy ZWFrOwotIAotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSsgICAgICB3cml0ZV9leHBf ZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkKLSsJCQkJCSAgICAgICAtPm5vZGVidWdf dGV4dF9nbnVfaWZ1bmNfc3ltYm9sKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBtc3Rf ZGF0YToKLSAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgotICAgICBjYXNlIG1zdF9ic3M6Ci1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvcHBjLWxpbnV4LXRkZXAuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvcHBjLWxpbnV4LXRkZXAuYwkyMDEwLTAx LTA0IDE1OjU3OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L3BwYy1saW51eC10ZGVwLmMJMjAxMC0wMS0yMSAxNToxNTo0MS4wMDAwMDAwMDAgKzAxMDAKLUBA IC00OCw2ICs0OCw3IEBACi0gI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAjaW5jbHVkZSAic3B1 LXRkZXAuaCIKLSAjaW5jbHVkZSAieG1sLXN5c2NhbGwuaCIKLSsjaW5jbHVkZSAibGludXgtdGRl cC5oIgotIAotICNpbmNsdWRlICJmZWF0dXJlcy9yczYwMDAvcG93ZXJwYy0zMmwuYyIKLSAjaW5j bHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtYWx0aXZlYzMybC5jIgotQEAgLTY3Miw4ICs2 NzMsMTkgQEAgcHBjNjRfbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKAotICAgICAg IHJlcyA9IGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAocy0+YmZkLCBzLT50aGVfYmZkX3NlY3Rp b24sCi0gCQkJCSAgICAgICZidWYsIGFkZHIgLSBzLT5hZGRyLCA4KTsKLSAgICAgICBpZiAocmVz ICE9IDApCi0tCXJldHVybiBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgOCwgYnl0ZV9v cmRlcikKLS0JCS0gYmZkX3NlY3Rpb25fdm1hIChzLT5iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikg KyBzLT5hZGRyOwotKwl7Ci0rCSAgQ09SRV9BRERSIHBjLCByZXNvbHZlZDsKLSsJICAKLSsJICBw YyA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmLCA4LCBieXRlX29yZGVyKQotKwkgICAg ICAgLSBiZmRfc2VjdGlvbl92bWEgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0aW9uKSArIHMtPmFk ZHI7Ci0rCi0rCSAgcmVzb2x2ZWQgPSBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRyIChn ZGJhcmNoLCBhZGRyLCBwYyk7Ci0rCSAgaWYgKHJlc29sdmVkICE9IHBjKQotKwkgICAgcGMgPSBw cGM2NF9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcmVzb2x2ZWQs Ci0rCQkJCQkJCSB0YXJnKTsKLSsKLSsJICByZXR1cm4gcGM7Ci0rCX0KLSAgICB9Ci0gCi0gICBy ZXR1cm4gYWRkcjsKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zaC1saW51eC10ZGVw LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3NoLWxpbnV4 LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL3NoLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAw MDAwMCArMDEwMAotQEAgLTI1LDYgKzI1LDcgQEAKLSAKLSAjaW5jbHVkZSAiZ2xpYmMtdGRlcC5o IgotICNpbmNsdWRlICJzaC10ZGVwLmgiCi0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLSAKLSAj ZGVmaW5lIFJFR1N4MTYoYmFzZSkgXAotICAgeyhiYXNlKSwgICAgICAwfSwgXAotQEAgLTg5LDYg KzkwLDkgQEAgc2hfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgICAg IHRkZXAtPmNvcmVfZ3JlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZ3JlZ3Nf dGFibGU7Ci0gICAgICAgdGRlcC0+Y29yZV9mcHJlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVf cmVnbWFwICopZnByZWdzX3RhYmxlOwotICAgICB9Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVu Y2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEv Z2RiL3NvbGliLXN2cjQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjEub3Jp Zy9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDEtMjEgMTU6MTU6MjIuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDEtMjEgMTU6MTU6 NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMTI1Nyw3ICsxMjU3LDggQEAgc3ZyNF9pbl9keW5zeW1f cmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcAotIAkgICAmJiBwYyA8IGluZm8tPmludGVycF90ZXh0 X3NlY3RfaGlnaCkKLSAJICB8fCAocGMgPj0gaW5mby0+aW50ZXJwX3BsdF9zZWN0X2xvdwotIAkg ICAgICAmJiBwYyA8IGluZm8tPmludGVycF9wbHRfc2VjdF9oaWdoKQotLQkgIHx8IGluX3BsdF9z ZWN0aW9uIChwYywgTlVMTCkpOwotKwkgIHx8IGluX3BsdF9zZWN0aW9uIChwYywgTlVMTCkKLSsJ ICB8fCBpbl9nbnVfaWZ1bmNfc3R1YiAocGMpKTsKLSB9Ci0gCi0gLyogR2l2ZW4gYW4gZXhlY3V0 YWJsZSdzIEFCRkQgYW5kIHRhcmdldCwgY29tcHV0ZSB0aGUgZW50cnktcG9pbnQKLUluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zcGFyYy1saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3NwYXJjLWxpbnV4LXRkZXAuYwkyMDEwLTAx LTAxIDA4OjMxOjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L3NwYXJjLWxpbnV4LXRkZXAuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAot QEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0gI2luY2x1ZGUgInRyYWQt ZnJhbWUuaCIKLSAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKLSsjaW5jbHVkZSAibGludXgtdGRl cC5oIgotIAotICNpbmNsdWRlICJzcGFyYy10ZGVwLmgiCi0gCi1AQCAtMjc5LDYgKzI4MCw5IEBA IHNwYXJjMzJfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2kKLSAgIGR3YXJmMl9hcHBl bmRfdW53aW5kZXJzIChnZGJhcmNoKTsKLSAKLSAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChnZGJh cmNoLCBzcGFyY19saW51eF93cml0ZV9wYyk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2Ug LVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2Ri L3NwYXJjNjQtbGludXgtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEy MS5vcmlnL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3NwYXJjNjQtbGludXgtdGRl cC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMzEsNiArMzEsNyBA QAotICNpbmNsdWRlICJzeW10YWIuaCIKLSAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgotICNpbmNs dWRlICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gI2luY2x1 ZGUgInNwYXJjNjQtdGRlcC5oIgotIAotQEAgLTI0NCw2ICsyNDUsOSBAQCBzcGFyYzY0X2xpbnV4 X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pCi0gICB0ZGVwLT5zdGVwX3RyYXAgPSBzcGFyYzY0 X2xpbnV4X3N0ZXBfdHJhcDsKLSAKLSAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChnZGJhcmNoLCBz cGFyYzY0X2xpbnV4X3dyaXRlX3BjKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkcik7Ci0gfQotIAwKLSAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW1t aXNjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTIxLm9yaWcvZ2RiL3N5bW1p c2MuYwkyMDEwLTAxLTIxIDE1OjEzOjI3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAu MjAxMDAxMjEvZ2RiL3N5bW1pc2MuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEw MAotQEAgLTI5NCw2ICsyOTQsOSBAQCBkdW1wX21zeW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgCi0gCWNhc2UgbXN0X3RleHQ6Ci0gCSAgbXNfdHlwZSA9ICdUJzsKLSAJICBicmVhazsK LSsJY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6Ci0rCSAgbXNfdHlwZSA9ICdpJzsKLSsJICBicmVh azsKLSAJY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToKLSAJICBtc190eXBlID0gJ1MnOwotIAkg IGJyZWFrOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5bXRhYi5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9zeW10YWIuYwkyMDEwLTAxLTIx IDE1OjEzOjI3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3N5 bXRhYi5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMzI0NCw3ICsz MjQ0LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudQotICAge21z dF9maWxlX2RhdGEsIG1zdF9zb2xpYl90cmFtcG9saW5lLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07 Ci0gICBzdGF0aWMgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIHR5cGVzNFtdCi0gICA9Ci0tICB7 bXN0X2ZpbGVfYnNzLCBtc3RfdGV4dCwgbXN0X2FicywgbXN0X3Vua25vd259OwotKyAge21zdF9m aWxlX2JzcywgbXN0X3RleHRfZ251X2lmdW5jLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0gICBl bnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xf dHlwZSBvdXJ0eXBlMjsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsKLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW10YWIuaAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAuNTAuMjAxMDAxMjEub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wMS0yMSAxNToxMTowOS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9zeW10YWIuaAkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTI4MCw2ICsyODAsOCBAQCBlbnVt IG1pbmltYWxfc3ltYm9sX3R5cGUKLSB7Ci0gICBtc3RfdW5rbm93biA9IDAsCQkvKiBVbmtub3du IHR5cGUsIHRoZSBkZWZhdWx0ICovCi0gICBtc3RfdGV4dCwJCQkvKiBHZW5lcmFsbHkgZXhlY3V0 YWJsZSBpbnN0cnVjdGlvbnMgKi8KLSsgIG1zdF90ZXh0X2dudV9pZnVuYywJCS8qIEV4ZWN1dGFi bGUgY29kZSByZXR1cm5pbmcgYWRkcmVzcwotKwkJCQkgICBvZiBleGVjdXRhYmxlIGNvZGUgKi8K LSAgIG1zdF9kYXRhLAkJCS8qIEdlbmVyYWxseSBpbml0aWFsaXplZCBkYXRhICovCi0gICBtc3Rf YnNzLAkJCS8qIEdlbmVyYWxseSB1bmluaXRpYWxpemVkIGRhdGEgKi8KLSAgIG1zdF9hYnMsCQkJ LyogR2VuZXJhbGx5IGFic29sdXRlIChub25yZWxvY2F0YWJsZSkgKi8KLUBAIC0xMTU3LDYgKzEx NTksOCBAQCBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluCi0gCi0gZXh0 ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChD T1JFX0FERFIpOwotIAotK2V4dGVybiBpbnQgaW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBw Yyk7Ci0rCi0gZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbAotICAgKmxvb2t1cF9taW5pbWFs X3N5bWJvbF9ieV9wY19zZWN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsK LSAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251 LWlmdW5jLWxpYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCAr MDEwMAotQEAgLTAsMCArMSw1NCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLSt0eXBlZGVmIGludCAoKmZpbmFsX3Qp IChpbnQgYXJnKTsKLSsKLStzdGF0aWMgaW50Ci0raW5pdF9zdHViIChpbnQgYXJnKQotK3sKLSsg IHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0rZmluYWwgKGludCBhcmcpCi0rewotKyAg cmV0dXJuIGFyZyArIDE7Ci0rfQotKwotK3N0YXRpYyB2b2xhdGlsZSBpbnQgZ251X2lmdW5jX2lu aXRpYWxpemVkOwotKwotK3ZvaWQKLStnbnVfaWZ1bmNfcHJlICh2b2lkKQotK3sKLSsgIGFzc2Vy dCAoIWdudV9pZnVuY19pbml0aWFsaXplZCk7Ci0rCi0rICBnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQg PSAxOwotK30KLSsKLStmaW5hbF90IGdudV9pZnVuY1ggKHZvaWQpIGFzbSAoImdudV9pZnVuYyIp OwotK2FzbSAoIi50eXBlIGdudV9pZnVuYywgQGdudV9pbmRpcmVjdF9mdW5jdGlvbiIpOwotKwot K2ZpbmFsX3QKLStnbnVfaWZ1bmNYICh2b2lkKQotK3sKLSsgIGlmICghZ251X2lmdW5jX2luaXRp YWxpemVkKQotKyAgICByZXR1cm4gaW5pdF9zdHViOwotKyAgZWxzZQotKyAgICByZXR1cm4gZmlu YWw7Ci0rfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nbnUtaWZ1bmMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwkyMDEwLTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEw MAotQEAgLTAsMCArMSwzNiBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLStleHRlcm4gaW50IGdudV9pZnVuYyAoaW50 IGFyZyk7Ci0rZXh0ZXJuIHZvaWQgZ251X2lmdW5jX3ByZSAodm9pZCk7Ci0rCi0raW50Ci0rbWFp biAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGdudV9pZnVuY19wcmUgKCk7Ci0rICAKLSsg IGkgPSBnbnVfaWZ1bmMgKDEpOwkvKiBicmVhay1hdC1jYWxsICovCi0rICBhc3NlcnQgKGkgPT0g Mik7Ci0rCi0rICBnbnVfaWZ1bmMgKDIpOwkvKiBicmVhay1hdC1uZXh0Y2FsbCAqLwotKwotKyAg cmV0dXJuIDA7CS8qIGJyZWFrLWF0LWV4aXQgKi8KLSt9Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEw MDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAkyMDEw LTAxLTIxIDE1OjE1OjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMTUgQEAKLSsjIENv cHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYge1tza2lwX3NobGliX3Rlc3RzXX0gewot KyAgICByZXR1cm4gMAotK30KLSsKLStzZXQgdGVzdGZpbGUgImdudS1pZnVuYyIKLStzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfQotKwotK3NldCBsaWJmaWxlICIke3Rlc3RmaWxlfS1saWIiCi0rc2V0IGxpYnNyYyAk e2xpYmZpbGV9LmMKLStzZXQgbGliX3NvICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJmaWxlfS5z bwotKwotK3NldCBsaWJfbm9kZWJ1Z19zb19iYXNlICR7bGliZmlsZX0tbm9kZWJ1Zy5zbwotK3Nl dCBsaWJfbm9kZWJ1Z19zbyAke29iamRpcn0vJHtzdWJkaXJ9LyR7bGliX25vZGVidWdfc29fYmFz ZX0KLSsKLSsjIHtkZWJ1Z30gcHJvdmlkZXMgRFdBUkYgc3ltYm9sIGdudV9pZnVuY1ggY29uZnVz aW5nIHRoZSBFTEYgc3ltYm9sCi0rIyBnbnVfaWZ1bmMgZHVyaW5nIGFkZHJlc3MtPnN5bWJvbCBy ZXNvbHV0aW9uIGZvciBwcmludGluZyB0aGUgc3ltYm9sLgotKyMgU3RpbGwgd2UgbmVlZCBpdCBo ZXJlIGZvciAic3RlcCJwaW5nIGludG8gdGhlIGZ1bmN0aW9uLgotK3NldCBsaWJfb3B0cyBbbGlz dCBkZWJ1Z10KLStzZXQgbGliX25vZGVidWdfb3B0cyBbbGlzdF0KLStzZXQgZXhlY19vcHRzIFts aXN0IGRlYnVnIHNobGliPSRsaWJfc29dCi0rCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7Ymlu ZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlX3NobGli ICR7c3JjZGlyfS8ke3N1YmRpcn0vJGxpYnNyYyAkbGliX3NvICRsaWJfb3B0c10gIT0gIiIKLSsg ICAgIHx8IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRzcmNmaWxlICRiaW5maWxl IGV4ZWN1dGFibGUgJGV4ZWNfb3B0c10gIT0gIiJ9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkIG5v dCBjb21waWxlIGVpdGhlciAkbGlic3JjIG9yICRzcmNmaWxlLiIKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSsKLStjbGVhbl9yZXN0YXJ0ICR0ZXN0 ZmlsZQotK2dkYl9sb2FkX3NobGlicyAke2xpYl9zb30KLSsKLStpZiAhW3J1bnRvX21haW5dIHRo ZW4gewotKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIDE7Ci0rfQot KwotKyMgVGhlICJpZiIgY29uZGl0aW9uIGlzIGFydGlmaWNhbCB0byB0ZXN0IHJlZ3Jlc3Npb24g b2YgYSBmb3JtYXQgcGF0Y2guCi0rZ2RiX2JyZWFrcG9pbnQgIltnZGJfZ2V0X2xpbmVfbnVtYmVy ICJicmVhay1hdC1uZXh0Y2FsbCJdIGlmIGkgJiYgZ251X2lmdW5jIChpKSAhPSA0MiIKLSsKLStn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstYXQtY2FsbCJdCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWF0LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwu KiIKLSsKLSsjIFRlc3QgR0RCIHdpbGwgYXV0b21hdGljYWxseSBpbmRpcmVjdCB0aGUgY2FsbC4K LSsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMgKDMpIiAiID0gNCIKLSsKLSsjIFRlc3QgR0RCIHdp bGwgc2tpcCB0aGUgZ251X2lmdW5jIHJlc29sdmVyIG9uIGZpcnN0IGNhbGwuCi0rCi0rZ2RiX3Rl c3QgInN0ZXAiICJcclxuZmluYWwgLioiCi0rCi0rIyBUZXN0IEdEQiB3aWxsIG5vdCBicmVhayBi ZWZvcmUgdGhlIGZpbmFsIGNob3NlbiBpbXBsZW1lbnRhdGlvbi4KLSsKLSsjIEFsc28gdGVzdCBh IGZvcm1hdCBwYXRjaCByZWdyZXNzaW9uOgotKyMgQ29udGludWluZy4KLSsjIEVycm9yIGluIHRl c3RpbmcgYnJlYWtwb2ludCBjb25kaXRpb246Ci0rIyBBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBv ZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuCi0rIyAKLSsjIEJyZWFrcG9pbnQgMiwgbWFp biAoKSBhdCAuL2dkYi5iYXNlL2dudS1pZnVuYy5jOjMzCi0rCi0rZ2RiX3Rlc3QgImNvbnRpbnVl IiAiQ29udGludWluZy5cclxuXHJcbkJyZWFrcG9pbnQgLiogKGF0fGluKSAuKmJyZWFrLWF0LW5l eHRjYWxsLioiIFwKLSsJICJjb250aW51ZSB0byBicmVhay1hdC1uZXh0Y2FsbCIKLSsKLStnZGJf YnJlYWtwb2ludCAiZ251X2lmdW5jIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJu ZXh0Y2FsbCBnbnVfaWZ1bmMiCi0rCi0rZ2RiX3Rlc3QgImZyYW1lIiAiIzAgKygweFxbMC05YS1m XF0rIGluICspP2ZpbmFsIFxcKC4qIiAibmV4dGNhbGwgZ251X2lmdW5jIHNraXBwZWQiCi0rCi0r Ci0rIyBDb21wYXJlIHRoZSB0d28gZGlmZmVyZW50IGFkZHJlc3NlczoKLSsKLStnZGJfdGVzdCAi cCBnbnVfaWZ1bmMiICIgPSB7PHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAweFxbMC05 YS1mXF0rIDxmaW5hbD4iICJwIGdudV9pZnVuYyBleGVjdXRpbmciCi0rZ2RiX3Rlc3QgImluZm8g c3ltIGdudV9pZnVuYyIgImZpbmFsIGluIHNlY3Rpb24gLioiICJpbmZvIHN5bSBnbnVfaWZ1bmMg ZXhlY3V0aW5nIgotKwotK3NldCB0ZXN0ICJpbmZvIGFkZHIgZ251X2lmdW5jIgotK2dkYl90ZXN0 X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJTeW1ib2wgXCJnbnVfaWZ1bmNcIiBp cyBhdCAoMHhcWzAtOWEtZlxdKykgaW4gLiokZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QK LSsgICAgfQotK30KLStnZGJfdGVzdCAiaW5mbyBzeW0gJGV4cGVjdF9vdXQoMSxzdHJpbmcpIiAi Z251X2lmdW5jIGluIHNlY3Rpb24gLioiICJpbmZvIHN5bSA8Z251X2lmdW5jLWFkZHJlc3M+Igot KwotKyMgPCpnbnVfaWZ1bmM+IHdvdWxkIGJlIGFuIGluY29ycmVjdCByZXNvbHV0aW9uIGZyb20g RFdfQVRfTUlQU19saW5rYWdlX25hbWUuCi0rIyBXZSBkbyBub3QgdXNlIHtkZWJ1Z30gYnVpbGQg b3B0aW9uIGZvciB0aGlzIHB1cnBvc2UuCi0rCi0raWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtz cmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfbm9kZWJ1Z19zbyAkbGliX25vZGVidWdfb3B0 c10gIT0gIiJ9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGVpdGhlciAkbGli c3JjLiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3RhcnQgJGxpYl9ub2RlYnVn X3NvX2Jhc2UKLSsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMiICIgPSB7PHRleHQgZ251LWlmdW5j IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gMHhcWzAtOWEtZlxdKyA8Z251X2lmdW5jPiIgInAg Z251X2lmdW5jIG5vdCBleGVjdXRpbmcgd2l0aG91dCBkZWJ1ZyIKLStnZGJfdGVzdCAiaW5mbyBz eW0gZ251X2lmdW5jIiAiZ251X2lmdW5jIGluIHNlY3Rpb24gLioiICJpbmZvIHN5bSBnbnVfaWZ1 bmMgbm90IGV4ZWN1dGluZyB3aXRob3V0IGRlYnVnIgotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MjEvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIw MTAwMTIxLm9yaWcvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMJMjAxMC0wMS0wMSAwODozMTo0Ni4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi94dGVuc2EtbGludXgt dGRlcC5jCTIwMTAtMDEtMjEgMTU6MTU6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMjIsNiArMjIs NyBAQAotIAotICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCi0gI2luY2x1ZGUgInN5bXRhYi5oIgot KyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gLyogT1Mgc3BlY2lmaWMgaW5pdGlhbGl6YXRp b24gb2YgZ2RiYXJjaC4gICovCi0gCi1AQCAtMzAsNiArMzEsOSBAQCB4dGVuc2FfbGludXhfaW5p dF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luCi0gewotICAgc2V0X3NvbGliX3N2cjRfZmV0Y2hfbGlu a19tYXBfb2Zmc2V0cwotICAgICAoZ2RiYXJjaCwgc3ZyNF9pbHAzMl9mZXRjaF9saW5rX21hcF9v ZmZzZXRzKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChn ZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQot IAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBl cy4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoIGIvZ2RiLWZvcnRy YW4tY29tbW9uLnBhdGNoCmluZGV4IGVmODZmMDYuLjNiOTA3OWYgMTAwNjQ0Ci0tLSBhL2dkYi1m b3J0cmFuLWNvbW1vbi5wYXRjaAorKysgYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKQEAgLTEs OCArMSw4IEBACi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCitJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0xNSAy MTozNToxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2Fy ZjJyZWFkLmMJMjAxMC0wMS0xNSAyMTo0MTozMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC01ODExLDEy ICs1ODExLDE0IEBAIHJlYWRfc2V0X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHIKKy0t LSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTI4IDEy OjUzOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2R3YXJm MnJlYWQuYwkyMDEwLTAxLTI4IDEyOjU0OjM0LjAwMDAwMDAwMCArMDEwMAorQEAgLTU4MTgsMTIg KzU4MTgsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cgogICAg cmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOwogIH0KICAKQEAgLTE5LDcg KzE5LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwogICAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKICAgIENPUkVf QUREUiBiYXNlID0gKENPUkVfQUREUikgMDsKLUBAIC01ODQxLDEwICs1ODQzLDQwIEBAIHJlYWRf Y29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC01ODQ4LDEwICs1ODUwLDQw IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgICAgfQogICAg aWYgKGRpZS0+Y2hpbGQgIT0gTlVMTCkKICAgICAgewpAQCAtNjAsNyArNjAsNyBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgYXR0ciA9IGR3YXJmMl9h dHRyIChjaGlsZF9kaWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uLCBjdSk7CiAgCSAgaWYg KGF0dHIpCiAgCSAgICB7Ci1AQCAtNTg2Miw4ICs1ODk0LDI1IEBAIHJlYWRfY29tbW9uX2Jsb2Nr IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC01ODY5LDggKzU5MDEsMjUgQEAgcmVhZF9jb21t b25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIAkgICAgICBTWU1CT0xfVkFMVUVfQURE UkVTUyAoc3ltKSA9IGJhc2UgKyBieXRlX29mZnNldDsKICAJICAgICAgYWRkX3N5bWJvbF90b19s aXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CiAgCSAgICB9CkBAIC04Niw3ICs4Niw3IEBAIElu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQogIH0KICAK LUBAIC05MDUyLDYgKzkxMDEsMTMgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdAorQEAgLTkwNjEsNiArOTExMCwxMyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0CiAgCSAgICB7CiAgCSAgICAgIHZhcl9kZWNvZGVfbG9jYXRpb24gKGF0 dHIsIHN5bSwgY3UpOwogIAkgICAgICBhdHRyMiA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4 dGVybmFsLCBjdSk7CkBAIC05OSw4ICs5OSw4IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9kd2FyZjJyZWFkLmMKICsKICAJICAgICAgaWYgKGF0dHIyICYmIChEV19VTlNORCAoYXR0 cjIpICE9IDApKQogIAkJewotIAkJICAvKiBXb3JrYXJvdW5kIGdmb3J0cmFuIFBSIGRlYnVnLzQw MDQwIC0gaXQgdXNlcwotQEAgLTkyMzAsNiArOTI4NiwxMSBAQCBuZXdfc3ltYm9sIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0CisgCQkgIHN0cnVjdCBwZW5kaW5nICoqbGlzdF90b19hZGQ7 CitAQCAtOTI0NSw2ICs5MzAxLDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QKICAJICBTWU1CT0xfRE9NQUlOIChzeW0pID0gTU9EVUxFX0RPTUFJTjsKICAJICBh ZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKICAJICBicmVhazsKQEAg LTExMiwxMSArMTEyLDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJy ZWFkLmMKICAJZGVmYXVsdDoKICAJICAvKiBOb3QgYSB0YWcgd2UgcmVjb2duaXplLiAgSG9wZWZ1 bGx5IHdlIGFyZW4ndCBwcm9jZXNzaW5nCiAgCSAgICAgdHJhc2ggZGF0YSwgYnV0IHNpbmNlIHdl IG11c3Qgc3BlY2lmaWNhbGx5IGlnbm9yZSB0aGluZ3MKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9mLWxhbmcuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2YtbGFuZy5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9mLWxhbmcuYwky MDEwLTAxLTE1IDIxOjM1OjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2YtbGFuZy5jCTIwMTAtMDEtMTUgMjE6MzU6MjcuMDAwMDAwMDAwICswMTAwCi1AQCAt NDQ4LDI3ICs0NDgsMyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZi1sYW5nLmMJMjAxMC0wMS0yOCAxMjo1MzozOC4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLWxhbmcuYwkyMDEwLTAx LTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ0NiwyNyArNDQ2LDMgQEAgX2luaXRp YWxpemVfZl9sYW5ndWFnZSAodm9pZCkKICAKICAgIGFkZF9sYW5ndWFnZSAoJmZfbGFuZ3VhZ2Vf ZGVmbik7CiAgfQpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2YtbGFuZy5jCiAtICAgIH0KIC0gIHJldHVybiAoTlVMTCk7CiAtfQotSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtbGFuZy5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEy OC9nZGIvZi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcv Z2RiL2YtbGFuZy5oCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZi1sYW5nLmgJMjAxMC0wMS0xNSAyMTozNToyNy4wMDAwMDAw MDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTAt MDEtMjggMTI6NTM6MzguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9n ZGIvZi1sYW5nLmgJMjAxMC0wMS0yOCAxMjo1Mzo0Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC01MSwz NiArNTEsOCBAQCBlbnVtIGY5MF9yYW5nZV90eXBlCiAgICAgIE5PTkVfQk9VTkRfREVGQVVMVAkJ LyogIihsb3c6aGlnaCkiICAqLwogICAgfTsKQEAgLTE4NSwxMCArMTg1LDEwIEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9mLWxhbmcuaAogIAogIC8qIFdoZW4gcmVhc29uYWJsZSBh cnJheSBib3VuZHMgY2Fubm90IGJlIGZldGNoZWQsIHN1Y2ggYXMgd2hlbiAKICAgICB5b3UgYXNr IHRvICdtdCBwcmludCBzeW1ib2xzJyBhbmQgdGhlcmUgaXMgbm8gc3RhY2sgZnJhbWUgYW5kIAot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtdmFscHJpbnQuYworSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMjgvZ2RiL2YtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZi12YWxwcmludC5jCTIw MTAtMDEtMTUgMjE6MzU6MjcuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEy OC5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMC0wMS0yOCAxMjo1MzozOC4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMJMjAxMC0wMS0yOCAx Mjo1Mzo0Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zNCw2ICszNCw4IEBACiAgI2luY2x1ZGUgImdk YmNvcmUuaCIKICAjaW5jbHVkZSAiY29tbWFuZC5oIgpAQCAtMzcxLDEwICszNzEsMTAgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtdmFscHJpbnQuYwogIH0KICAKICB2b2lkCi1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3RhY2suYworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjgvZ2RiL3N0YWNrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL3N0YWNrLmMJMjAxMC0wMS0xNSAyMTozNToxMy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zdGFjay5jCTIwMTAtMDEtMTUgMjE6MzU6MjcuMDAw MDAwMDAwICswMTAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dkYi9zdGFjay5jCTIw MTAtMDEtMjggMTI6NTI6MTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEy OC9nZGIvc3RhY2suYwkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAogQEAgLTE0 NzQsNiArMTQ3NCw4IEBAIHByaW50X2Jsb2NrX2ZyYW1lX2xvY2FscyAoc3RydWN0IGJsb2NrICoK ICAJY2FzZSBMT0NfQ09NUFVURUQ6CiAgCSAgaWYgKFNZTUJPTF9JU19BUkdVTUVOVCAoc3ltKSkK QEAgLTM4NCwxMCArMzg0LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zdGFj ay5jCiAgCSAgdmFsdWVzX3ByaW50ZWQgPSAxOwogIAkgIHByaW50X3ZhcmlhYmxlX2FuZF92YWx1 ZSAoTlVMTCwgc3ltLCBmcmFtZSwgc3RyZWFtLCA0ICogbnVtX3RhYnMpOwogIAkgIGJyZWFrOwot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bXRhYi5oCitJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDEyOC9nZGIvc3ltdGFiLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgJMjAxMC0wMS0xNSAyMTozNTo1 Ny4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL3N5bXRh Yi5oCTIwMTAtMDEtMjggMTI6NTI6MjAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDEyOC9nZGIvc3ltdGFiLmgJMjAxMC0wMS0yOCAxMjo1Mzo0Ni4wMDAwMDAwMDAgKzAxMDAK IEBAIC00MDEsNyArNDAxLDEwIEBAIHR5cGVkZWYgZW51bSBkb21haW5fZW51bV90YWcKICAgIFRZ UEVTX0RPTUFJTiwKICAKQEAgLTQwMCw4ICs0MDAsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3N5bXRhYi5oCiAgfQogIGRvbWFpbl9lbnVtOwogIAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCitJbmRleDog Z2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9j ay5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEw MAogQEAgLTAsMCArMSwxMDEgQEAKICsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgogKwpAQCAtNTA0LDggKzUwNiwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvc3ltdGFiLmgKICtnZGJfdGVzdCAicCBpeF94IiAiID0gMSAqIiAicCBpeF94 IGluIgogK2dkYl90ZXN0ICJwIGl5X3kiICIgPSAyICoiICJwIGl5X3kgaW4iCiArZ2RiX3Rlc3Qg InAgaXpfejIiICIgPSAzICoiICJwIGl6X3oyIGluIgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCitJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29t bW9uLWJsb2NrLmY5MAkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAogQEAgLTAs MCArMSw2NyBAQAogKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArIQoKZGlmZiAtLWdpdCBhL2dkYi1nZGJzZXJ2ZXItdHJhY2Vwb2ludC1yZXZlcnQucGF0 Y2ggYi9nZGItZ2Ric2VydmVyLXRyYWNlcG9pbnQtcmV2ZXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA0ZTk2MjRkLi4wMDAwMDAwCi0tLSBhL2dkYi1nZGJzZXJ2ZXItdHJh Y2Vwb2ludC1yZXZlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjczICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDEvbXNnMDAxODMuaHRtbAotCi1S RVZFUlQKLQotLS0tIC4vZ2RiL2dkYnNlcnZlci9pMzg3LWZwLmMJMjAxMC0wMS0yMCAyMzo1NToz OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1mcC5jCTIwMTAtMDEt MjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1AQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgaTM4 N19meHNhdmUgewotIH07Ci0gCi0gdm9pZAotLWkzODdfY2FjaGVfdG9fZnNhdmUgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLStpMzg3X2NhY2hlX3RvX2ZzYXZlICh2b2lk ICpidWYpCi0gewotICAgc3RydWN0IGkzODdfZnNhdmUgKmZwID0gKHN0cnVjdCBpMzg3X2ZzYXZl ICopIGJ1ZjsKLSAgIGludCBpOwotQEAgLTgxLDM5ICs4MSwzOCBAQCBpMzg3X2NhY2hlX3RvX2Zz YXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gICB1bnNpZ25lZCBsb25nIHZhbCwgdmFsMjsKLSAK LSAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCBpICsgc3QwX3JlZ251bSwKLS0JCSAgICAgICgoY2hhciAqKSAmZnAtPnN0X3NwYWNlWzBd KSArIGkgKiAxMCk7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGkgKyBzdDBfcmVnbnVtLCAoKGNo YXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTApOwotIAotLSAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0tICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKLSsgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0rICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKCJmb29mZiIsICZmcC0+Zm9vZmYpOwotICAgCi0gICAvKiBUaGlzIG9u ZSdzIDExIGJpdHMuLi4gKi8KLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJmb3AiLCAmdmFsMik7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmb3AiLCAmdmFs Mik7Ci0gICBmcC0+Zm9wID0gKHZhbDIgJiAweDdGRikgfCAoZnAtPmZvcCAmIDB4RjgwMCk7Ci0g Ci0gICAvKiBTb21lIHJlZ2lzdGVycyBhcmUgMTYtYml0LiAgKi8KLS0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmY3RybCIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgiZmN0cmwiLCAmdmFsKTsKLSAgIGZwLT5mY3RybCA9IHZhbDsKLSAKLS0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2YWwpOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZnN0YXQiLCAmdmFsKTsKLSAgIHZhbCAmPSAweEZGRkY7 Ci0gICBmcC0+ZnN0YXQgPSB2YWw7Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAiZnRhZyIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZnRh ZyIsICZ2YWwpOwotICAgdmFsICY9IDB4RkZGRjsKLSAgIGZwLT5mdGFnID0gdmFsOwotIAotLSAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpc2VnIiwgJnZhbCk7Ci0rICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmaXNlZyIsICZ2YWwpOwotICAgdmFsICY9IDB4RkZG RjsKLSAgIGZwLT5maXNlZyA9IHZhbDsKLSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi Zm9zZWciLCAmdmFsKTsKLSAgIHZhbCAmPSAweEZGRkY7Ci0gICBmcC0+Zm9zZWcgPSB2YWw7Ci0g fQotIAotIHZvaWQKLS1pMzg3X2ZzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBjb25zdCB2b2lkICpidWYpCi0raTM4N19mc2F2ZV90b19jYWNoZSAoY29uc3Qgdm9pZCAq YnVmKQotIHsKLSAgIHN0cnVjdCBpMzg3X2ZzYXZlICpmcCA9IChzdHJ1Y3QgaTM4N19mc2F2ZSAq KSBidWY7Ci0gICBpbnQgaTsKLUBAIC0xMjEsMzUgKzEyMCwzNCBAQCBpMzg3X2ZzYXZlX3RvX2Nh Y2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gICB1bnNpZ25lZCBsb25nIHZhbDsKLSAKLSAgIGZv ciAoaSA9IDA7IGkgPCA4OyBpKyspCi0tICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGkg KyBzdDBfcmVnbnVtLAotLQkJICAgICAoKGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICog MTApOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGkgKyBzdDBfcmVnbnVtLCAoKGNoYXIgKikgJmZw LT5zdF9zcGFjZVswXSkgKyBpICogMTApOwotIAotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KHJlZ2NhY2hlLCAiZmlvZmYiLCAmZnAtPmZpb2ZmKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgImZvb2ZmIiwgJmZwLT5mb29mZik7Ci0rICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAoImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAoImZvb2ZmIiwgJmZwLT5mb29mZik7Ci0gCi0gICAvKiBTb21lIHJlZ2lzdGVycyBhcmUgMTYt Yml0LiAgKi8KLSAgIHZhbCA9IGZwLT5mY3RybCAmIDB4RkZGRjsKLS0gIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgImZjdHJsIiwgJnZhbCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAoImZjdHJsIiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+ZnN0YXQgJiAweEZGRkY7 Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2YWwpOwot KyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmc3RhdCIsICZ2YWwpOwotIAotICAgdmFsID0g ZnAtPmZ0YWcgJiAweEZGRkY7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJmdGFnIiwgJnZhbCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZ0YWciLCAmdmFs KTsKLSAKLSAgIHZhbCA9IGZwLT5maXNlZyAmIDB4RkZGRjsKLS0gIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgImZpc2VnIiwgJnZhbCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoImZpc2VnIiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+Zm9zZWcgJiAweEZGRkY7Ci0t ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOwotKyAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmb3NlZyIsICZ2YWwpOwotIAotICAgLyogZm9wIGhh cyBvbmx5IDExIHZhbGlkIGJpdHMuICAqLwotICAgdmFsID0gKGZwLT5mb3ApICYgMHg3RkY7Ci0t ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3AiLCAmdmFsKTsKLSsgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZm9wIiwgJnZhbCk7Ci0gfQotIAotIHZvaWQKLS1pMzg3 X2NhY2hlX3RvX2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQot K2kzODdfY2FjaGVfdG9fZnhzYXZlICh2b2lkICpidWYpCi0gewotICAgc3RydWN0IGkzODdfZnhz YXZlICpmcCA9IChzdHJ1Y3QgaTM4N19meHNhdmUgKikgYnVmOwotICAgaW50IGk7Ci1AQCAtMTU4 LDI5ICsxNTYsMjcgQEAgaTM4N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcgot ICAgdW5zaWduZWQgbG9uZyB2YWwsIHZhbDI7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgODsgaSsr KQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHN0MF9yZWdudW0sCi0tCQkg ICAgICAoKGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTYpOwotKyAgICBjb2xsZWN0 X3JlZ2lzdGVyIChpICsgc3QwX3JlZ251bSwgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsg aSAqIDE2KTsKLSAgIGZvciAoaSA9IDA7IGkgPCBudW1feG1tX3JlZ2lzdGVyczsgaSsrKQotLSAg ICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHhtbTBfcmVnbnVtLAotLQkJICAgICAg KChjaGFyICopICZmcC0+eG1tX3NwYWNlWzBdKSArIGkgKiAxNik7Ci0rICAgIGNvbGxlY3RfcmVn aXN0ZXIgKGkgKyB4bW0wX3JlZ251bSwgKChjaGFyICopICZmcC0+eG1tX3NwYWNlWzBdKSArIGkg KiAxNik7Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmlvZmYi LCAmZnAtPmZpb2ZmKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJm b29mZiIsICZmcC0+Zm9vZmYpOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNo ZSwgIm14Y3NyIiwgJmZwLT5teGNzcik7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJm aW9mZiIsICZmcC0+ZmlvZmYpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZm9vZmYi LCAmZnAtPmZvb2ZmKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoIm14Y3NyIiwgJmZw LT5teGNzcik7Ci0gCi0gICAvKiBUaGlzIG9uZSdzIDExIGJpdHMuLi4gKi8KLS0gIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3AiLCAmdmFsMik7Ci0rICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKCJmb3AiLCAmdmFsMik7Ci0gICBmcC0+Zm9wID0gKHZhbDIgJiAweDdG RikgfCAoZnAtPmZvcCAmIDB4RjgwMCk7Ci0gCi0gICAvKiBTb21lIHJlZ2lzdGVycyBhcmUgMTYt Yml0LiAgKi8KLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmY3RybCIs ICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZmN0cmwiLCAmdmFsKTsKLSAg IGZwLT5mY3RybCA9IHZhbDsKLSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJmc3RhdCIsICZ2YWwpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZnN0YXQi LCAmdmFsKTsKLSAgIGZwLT5mc3RhdCA9IHZhbDsKLSAKLSAgIC8qIENvbnZlcnQgdG8gdGhlIHNp bXBsaWZlZCB0YWcgZm9ybSBzdG9yZWQgaW4gZnhzYXZlIGRhdGEuICAqLwotLSAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKLSsgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoImZ0YWciLCAmdmFsKTsKLSAgIHZhbCAmPSAweEZGRkY7Ci0gICB2YWwy ID0gMDsKLSAgIGZvciAoaSA9IDc7IGkgPj0gMDsgaS0tKQotQEAgLTE5MiwxMCArMTg4LDEwIEBA IGkzODdfY2FjaGVfdG9fZnhzYXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKLSAgICAgfQotICAgZnAt PmZ0YWcgPSB2YWwyOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg ImZpc2VnIiwgJnZhbCk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmaXNlZyIsICZ2 YWwpOwotICAgZnAtPmZpc2VnID0gdmFsOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgImZvc2VnIiwgJnZhbCk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUg KCJmb3NlZyIsICZ2YWwpOwotICAgZnAtPmZvc2VnID0gdmFsOwotIH0KLSAKLUBAIC0yNDcsNyAr MjQzLDcgQEAgaTM4N19mdGFnIChzdHJ1Y3QgaTM4N19meHNhdmUgKmZwLCBpbnQgcgotIH0KLSAK LSB2b2lkCi0taTM4N19meHNhdmVfdG9fY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGNvbnN0IHZvaWQgKmJ1ZikKLStpMzg3X2Z4c2F2ZV90b19jYWNoZSAoY29uc3Qgdm9pZCAqYnVm KQotIHsKLSAgIHN0cnVjdCBpMzg3X2Z4c2F2ZSAqZnAgPSAoc3RydWN0IGkzODdfZnhzYXZlICop IGJ1ZjsKLSAgIGludCBpLCB0b3A7Ci1AQCAtMjU2LDIyICsyNTIsMjAgQEAgaTM4N19meHNhdmVf dG9fY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAqcgotICAgdW5zaWduZWQgbG9uZyB2YWw7Ci0gCi0g ICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hl LCBpICsgc3QwX3JlZ251bSwKLS0JCSAgICAgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsg aSAqIDE2KTsKLSsgICAgc3VwcGx5X3JlZ2lzdGVyIChpICsgc3QwX3JlZ251bSwgKChjaGFyICop ICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDE2KTsKLSAgIGZvciAoaSA9IDA7IGkgPCBudW1feG1t X3JlZ2lzdGVyczsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpICsgeG1t MF9yZWdudW0sCi0tCQkgICAgICgoY2hhciAqKSAmZnAtPnhtbV9zcGFjZVswXSkgKyBpICogMTYp OwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGkgKyB4bW0wX3JlZ251bSwgKChjaGFyICopICZmcC0+ eG1tX3NwYWNlWzBdKSArIGkgKiAxNik7Ci0gCi0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJmaW9mZiIsICZmcC0+ZmlvZmYpOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgIm14Y3NyIiwgJmZwLT5teGNzcik7Ci0rICBzdXBwbHlfcmVnaXN0 ZXJfYnlfbmFtZSAoImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoImZvb2ZmIiwgJmZwLT5mb29mZik7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo Im14Y3NyIiwgJmZwLT5teGNzcik7Ci0gCi0gICAvKiBTb21lIHJlZ2lzdGVycyBhcmUgMTYtYml0 LiAgKi8KLSAgIHZhbCA9IGZwLT5mY3RybCAmIDB4RkZGRjsKLS0gIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgImZjdHJsIiwgJnZhbCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoImZjdHJsIiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+ZnN0YXQgJiAweEZGRkY7Ci0t ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2YWwpOwotKyAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmc3RhdCIsICZ2YWwpOwotIAotICAgLyogR2VuZXJh dGUgdGhlIGZvcm0gb2YgZnRhZyBkYXRhIHRoYXQgR0RCIGV4cGVjdHMuICAqLwotICAgdG9wID0g KGZwLT5mc3RhdCA+PiAxMSkgJiAweDc7Ci1AQCAtMjg1LDE0ICsyNzksMTQgQEAgaTM4N19meHNh dmVfdG9fY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAqcgotIAl0YWcgPSAzOwotICAgICAgIHZhbCB8 PSB0YWcgPDwgKDIgKiBpKTsKLSAgICAgfQotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAiZnRhZyIsICZ2YWwpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmdGFn IiwgJnZhbCk7Ci0gCi0gICB2YWwgPSBmcC0+ZmlzZWcgJiAweEZGRkY7Ci0tICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaXNlZyIsICZ2YWwpOwotKyAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJmaXNlZyIsICZ2YWwpOwotIAotICAgdmFsID0gZnAtPmZvc2VnICYgMHhG RkZGOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9zZWciLCAmdmFs KTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZm9zZWciLCAmdmFsKTsKLSAKLSAgIHZh bCA9IChmcC0+Zm9wKSAmIDB4N0ZGOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiZm9wIiwgJnZhbCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZvcCIsICZ2 YWwpOwotIH0KLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1mcC5oCTIwMTAtMDEtMjAgMjM6NTU6 MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2kzODctZnAuaAkyMDEwLTAx LTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTIwLDExICsyMCwxMSBAQAotICNpZm5k ZWYgSTM4N19GUF9ICi0gI2RlZmluZSBJMzg3X0ZQX0gKLSAKLS12b2lkIGkzODdfY2FjaGVfdG9f ZnNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1Zik7Ci0tdm9pZCBpMzg3 X2ZzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpi dWYpOwotK3ZvaWQgaTM4N19jYWNoZV90b19mc2F2ZSAodm9pZCAqYnVmKTsKLSt2b2lkIGkzODdf ZnNhdmVfdG9fY2FjaGUgKGNvbnN0IHZvaWQgKmJ1Zik7Ci0gCi0tdm9pZCBpMzg3X2NhY2hlX3Rv X2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKTsKLS12b2lkIGkz ODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lk ICpidWYpOwotK3ZvaWQgaTM4N19jYWNoZV90b19meHNhdmUgKHZvaWQgKmJ1Zik7Ci0rdm9pZCBp Mzg3X2Z4c2F2ZV90b19jYWNoZSAoY29uc3Qgdm9pZCAqYnVmKTsKLSAKLSBleHRlcm4gaW50IG51 bV94bW1fcmVnaXN0ZXJzOwotIAotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1hcm0tbG93LmMJ MjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIv bGludXgtYXJtLWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1AQCAt ODEsMTcgKzgxLDE3IEBAIGFybV9jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykKLSB9 Ci0gCi0gc3RhdGljIHZvaWQKLS1hcm1fZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCB2b2lkICpidWYpCi0rYXJtX2ZpbGxfZ3JlZ3NldCAodm9pZCAqYnVmKQotIHsKLSAg IGludCBpOwotIAotICAgZm9yIChpID0gMDsgaSA8IGFybV9udW1fcmVnczsgaSsrKQotICAgICBp ZiAoYXJtX3JlZ21hcFtpXSAhPSAtMSkKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNo ZSwgaSwgKChjaGFyICopIGJ1ZikgKyBhcm1fcmVnbWFwW2ldKTsKLSsgICAgICBjb2xsZWN0X3Jl Z2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIGFybV9yZWdtYXBbaV0pOwotIH0KLSAKLSBzdGF0 aWMgdm9pZAotLWFybV9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBj b25zdCB2b2lkICpidWYpCi0rYXJtX3N0b3JlX2dyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKLSB7 Ci0gICBpbnQgaTsKLSAgIGNoYXIgemVyb2J1Zls4XTsKLUBAIC05OSwxMyArOTksMTMgQEAgYXJt X3N0b3JlX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnYwotICAgbWVtc2V0ICh6ZXJvYnVm LCAwLCA4KTsKLSAgIGZvciAoaSA9IDA7IGkgPCBhcm1fbnVtX3JlZ3M7IGkrKykKLSAgICAgaWYg KGFybV9yZWdtYXBbaV0gIT0gLTEpCi0tICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwg aSwgKChjaGFyICopIGJ1ZikgKyBhcm1fcmVnbWFwW2ldKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0 ZXIgKGksICgoY2hhciAqKSBidWYpICsgYXJtX3JlZ21hcFtpXSk7Ci0gICAgIGVsc2UKLS0gICAg ICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCB6ZXJvYnVmKTsKLSsgICAgICBzdXBwbHlf cmVnaXN0ZXIgKGksIHplcm9idWYpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLWFybV9maWxsX3dt bXhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLSthcm1fZmls bF93bW14cmVnc2V0ICh2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gCi1AQCAtMTEzLDE2ICsx MTMsMTUgQEAgYXJtX2ZpbGxfd21teHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZQotICAgICBy ZXR1cm47Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKLS0gICAgY29sbGVjdF9yZWdp c3RlciAocmVnY2FjaGUsIGFybV9udW1fcmVncyArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsK LSsgICAgY29sbGVjdF9yZWdpc3RlciAoYXJtX251bV9yZWdzICsgaSwgKGNoYXIgKikgYnVmICsg aSAqIDgpOwotIAotICAgLyogV2Ugb25seSBoYXZlIGFjY2VzcyB0byB3Y3NzZiwgd2Nhc2YsIGFu ZCB3Y2dyMC13Y2dyMy4gICovCi0gICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQotLSAgICBjb2xs ZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgYXJtX251bV9yZWdzICsgaSArIDE2LAotLQkJICAgICAg KGNoYXIgKikgYnVmICsgMTYgKiA4ICsgaSAqIDQpOwotKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChh cm1fbnVtX3JlZ3MgKyBpICsgMTYsIChjaGFyICopIGJ1ZiArIDE2ICogOCArIGkgKiA0KTsKLSB9 Ci0gCi0gc3RhdGljIHZvaWQKLS1hcm1fc3RvcmVfd21teHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK2FybV9zdG9yZV93bW14cmVnc2V0IChjb25z dCB2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gCi1AQCAtMTMwLDE2ICsxMjksMTUgQEAgYXJt X3N0b3JlX3dtbXhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcgotICAgICByZXR1cm47Ci0gCi0g ICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKLS0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNo ZSwgYXJtX251bV9yZWdzICsgaSwgKGNoYXIgKikgYnVmICsgaSAqIDgpOwotKyAgICBzdXBwbHlf cmVnaXN0ZXIgKGFybV9udW1fcmVncyArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKLSAKLSAg IC8qIFdlIG9ubHkgaGF2ZSBhY2Nlc3MgdG8gd2Nzc2YsIHdjYXNmLCBhbmQgd2NncjAtd2NncjMu ICAqLwotICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKLS0gICAgc3VwcGx5X3JlZ2lzdGVyIChy ZWdjYWNoZSwgYXJtX251bV9yZWdzICsgaSArIDE2LAotLQkJICAgICAoY2hhciAqKSBidWYgKyAx NiAqIDggKyBpICogNCk7Ci0rICAgIHN1cHBseV9yZWdpc3RlciAoYXJtX251bV9yZWdzICsgaSAr IDE2LCAoY2hhciAqKSBidWYgKyAxNiAqIDggKyBpICogNCk7Ci0gfQotIAotIHN0YXRpYyB2b2lk Ci0tYXJtX2ZpbGxfdmZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpi dWYpCi0rYXJtX2ZpbGxfdmZwcmVnc2V0ICh2b2lkICpidWYpCi0gewotICAgaW50IGksIG51bSwg YmFzZTsKLSAKLUBAIC0xNTMsMTMgKzE1MSwxMyBAQCBhcm1fZmlsbF92ZnByZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmVnCi0gCi0gICBiYXNlID0gZmluZF9yZWdubyAoImQwIik7Ci0gICBmb3Ig KGkgPSAwOyBpIDwgbnVtOyBpKyspCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBi YXNlICsgaSwgKGNoYXIgKikgYnVmICsgaSAqIDgpOwotKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChi YXNlICsgaSwgKGNoYXIgKikgYnVmICsgaSAqIDgpOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgImZwc2NyIiwgKGNoYXIgKikgYnVmICsgMzIgKiA4KTsKLSsgIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZwc2NyIiwgKGNoYXIgKikgYnVmICsgMzIgKiA4KTsK LSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1hcm1fc3RvcmVfdmZwcmVnc2V0IChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0rYXJtX3N0b3JlX3ZmcHJlZ3NldCAoY29u c3Qgdm9pZCAqYnVmKQotIHsKLSAgIGludCBpLCBudW0sIGJhc2U7Ci0gCi1AQCAtMTczLDI4ICsx NzEsMjggQEAgYXJtX3N0b3JlX3ZmcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZQotIAotICAg YmFzZSA9IGZpbmRfcmVnbm8gKCJkMCIpOwotICAgZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKQot LSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBiYXNlICsgaSwgKGNoYXIgKikgYnVmICsg aSAqIDgpOwotKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGJhc2UgKyBpLCAoY2hhciAqKSBidWYgKyBp ICogOCk7Ci0gCi0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmcHNjciIs IChjaGFyICopIGJ1ZiArIDMyICogOCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZw c2NyIiwgKGNoYXIgKikgYnVmICsgMzIgKiA4KTsKLSB9Ci0gCi0gZXh0ZXJuIGludCBkZWJ1Z190 aHJlYWRzOwotIAotIHN0YXRpYyBDT1JFX0FERFIKLS1hcm1fZ2V0X3BjIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlKQotK2FybV9nZXRfcGMgKCkKLSB7Ci0gICB1bnNpZ25lZCBsb25nIHBjOwot LSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLSsgIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKLSAgIGlmIChkZWJ1Z190aHJlYWRz KQotICAgICBmcHJpbnRmIChzdGRlcnIsICJzdG9wIHBjIGlzICUwOGx4XG4iLCBwYyk7Ci0gICBy ZXR1cm4gcGM7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tYXJtX3NldF9wYyAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQotK2FybV9zZXRfcGMgKENPUkVfQUREUiBwYykK LSB7Ci0gICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAoInBjIiwgJm5ld3BjKTsKLSB9Ci0gCi0gLyogQ29ycmVjdCBpbiBlaXRoZXIgZW5kaWFubmVz cy4gICovCi1AQCAtMjEyLDEwICsyMTAsOSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBh cm1fZWFiaV9icmVhCi0gc3RhdGljIGludAotIGFybV9icmVha3BvaW50X2F0IChDT1JFX0FERFIg d2hlcmUpCi0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVn Y2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOwotICAgdW5zaWduZWQgbG9uZyBjcHNyOwotIAot LSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImNwc3IiLCAmY3Bzcik7Ci0r ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJjcHNyIiwgJmNwc3IpOwotIAotICAgaWYgKGNw c3IgJiAweDIwKQotICAgICB7Ci1AQCAtMjQ2LDExICsyNDMsMTAgQEAgYXJtX2JyZWFrcG9pbnRf YXQgKENPUkVfQUREUiB3aGVyZSkKLSAgICBpcyBvdXRzaWRlIG9mIHRoZSBmdW5jdGlvbi4gIFNv IHJhdGhlciB0aGFuIGltcG9ydGluZyBzb2Z0d2FyZSBzaW5nbGUtc3RlcCwKLSAgICB3ZSBjYW4g anVzdCBydW4gdW50aWwgZXhpdC4gICovCi0gc3RhdGljIENPUkVfQUREUgotLWFybV9yZWluc2Vy dF9hZGRyICh2b2lkKQotK2FybV9yZWluc2VydF9hZGRyICgpCi0gewotLSAgc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEp OwotICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVn Y2FjaGUsICJsciIsICZwYyk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJsciIsICZw Yyk7Ci0gICByZXR1cm4gcGM7Ci0gfQotIAotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1jcmlz LWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ri c2VydmVyL2xpbnV4LWNyaXMtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAx MDAKLUBAIC02MiwyMCArNjIsMjAgQEAgY3Jpc19jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCBy ZWdubykKLSBleHRlcm4gaW50IGRlYnVnX3RocmVhZHM7Ci0gCi0gc3RhdGljIENPUkVfQUREUgot LWNyaXNfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkKQotK2NyaXNfZ2V0 X3BjICh2b2lkKQotIHsKLSAgIHVuc2lnbmVkIGxvbmcgcGM7Ci0tICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lICgicGMiLCAmcGMpOwotICAgaWYgKGRlYnVnX3RocmVhZHMpCi0gICAgIGZwcmludGYgKHN0 ZGVyciwgInN0b3AgcGMgaXMgJTA4bHhcbiIsIHBjKTsKLSAgIHJldHVybiBwYzsKLSB9Ci0gCi0g c3RhdGljIHZvaWQKLS1jcmlzX3NldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09S RV9BRERSIHBjKQotK2NyaXNfc2V0X3BjIChDT1JFX0FERFIgcGMpCi0gewotICAgdW5zaWduZWQg bG9uZyBuZXdwYyA9IHBjOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi cGMiLCAmbmV3cGMpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZuZXdwYyk7 Ci0gfQotIAotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBjcmlzX2JyZWFrcG9pbnQgPSAw eGU5Mzg7Ci1AQCAtMTAyLDkgKzEwMiw4IEBAIGNyaXNfYnJlYWtwb2ludF9hdCAoQ09SRV9BRERS IHdoZXJlKQotIHN0YXRpYyBDT1JFX0FERFIKLSBjcmlzX3JlaW5zZXJ0X2FkZHIgKHZvaWQpCi0g ewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1 cnJlbnRfaW5mZXJpb3IsIDEpOwotICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzcnAiLCAmcGMpOwotKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgic3JwIiwgJnBjKTsKLSAgIHJldHVybiBwYzsKLSB9Ci0gCi0tLS0gLi9nZGIv Z2Ric2VydmVyL2xpbnV4LWNyaXN2MzItbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAw MDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpc3YzMi1sb3cuYwkyMDEwLTAx LTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTU0LDIwICs1NCwyMCBAQCBzdGF0aWMg aW50IGNyaXNfcmVnbWFwW10gPSB7Ci0gZXh0ZXJuIGludCBkZWJ1Z190aHJlYWRzOwotIAotIHN0 YXRpYyBDT1JFX0FERFIKLS1jcmlzX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkK LStjcmlzX2dldF9wYyAodm9pZCkKLSB7Ci0gICB1bnNpZ25lZCBsb25nIHBjOwotLSAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLSsgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKLSAgIGlmIChkZWJ1Z190aHJlYWRzKQotICAgICBm cHJpbnRmIChzdGRlcnIsICJzdG9wIHBjIGlzICUwOGx4XG4iLCBwYyk7Ci0gICByZXR1cm4gcGM7 Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tY3Jpc19zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIENPUkVfQUREUiBwYykKLStjcmlzX3NldF9wYyAoQ09SRV9BRERSIHBjKQotIHsKLSAg IHVuc2lnbmVkIGxvbmcgbmV3cGMgPSBwYzsKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicGMi LCAmbmV3cGMpOwotIH0KLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgY3Jpc19icmVh a3BvaW50ID0gMHhlOTM4OwotQEAgLTk5LDQxICs5OSwzOSBAQCBjcmlzX2JyZWFrcG9pbnRfYXQg KENPUkVfQUREUiB3aGVyZSkKLSBzdGF0aWMgQ09SRV9BRERSCi0gY3Jpc19yZWluc2VydF9hZGRy ICh2b2lkKQotIHsKLS0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3Jl Z2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLSAgIHVuc2lnbmVkIGxvbmcgcGM7Ci0tICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic3JwIiwgJnBjKTsKLSsgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInNycCIsICZwYyk7Ci0gICByZXR1cm4gcGM7Ci0gfQotIAot IHN0YXRpYyB2b2lkCi0tY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsCi0tCQkJICAgIGludCBicCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu ZWQgbG9uZyBlbmQpCi0rY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKGludCBicCwgdW5zaWdu ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCi0gewotICAgc3dpdGNoIChicCkKLSAg ICAgewotICAgICBjYXNlIDA6Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiczMiLCAmc3RhcnQpOwotLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdj YWNoZSwgInM0IiwgJmVuZCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMyIs ICZzdGFydCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzNCIsICZlbmQpOwot ICAgICAgIGJyZWFrOwotICAgICBjYXNlIDE6Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAiczUiLCAmc3RhcnQpOwotLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgInM2IiwgJmVuZCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKCJzNSIsICZzdGFydCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzNiIs ICZlbmQpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDI6Ci0tICAgICAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczciLCAmc3RhcnQpOwotLSAgICAgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM4IiwgJmVuZCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJzNyIsICZzdGFydCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKCJzOCIsICZlbmQpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDM6Ci0tICAgICAgc3Vw cGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczkiLCAmc3RhcnQpOwotLSAgICAgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMxMCIsICZlbmQpOwotKyAgICAgIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczkiLCAmc3RhcnQpOwotKyAgICAgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lICgiczEwIiwgJmVuZCk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgNDoK LS0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTEiLCAmc3RhcnQp OwotLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMxMiIsICZlbmQp OwotKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczExIiwgJnN0YXJ0KTsKLSsgICAg ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInMxMiIsICZlbmQpOwotICAgICAgIGJyZWFrOwot ICAgICBjYXNlIDU6Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi czEzIiwgJnN0YXJ0KTsKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJzMTQiLCAmZW5kKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInMxMyIsICZz dGFydCk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTQiLCAmZW5kKTsKLSAg ICAgICBicmVhazsKLSAgICAgfQotIH0KLUBAIC0xNDUsNyArMTQzLDYgQEAgY3Jpc19pbnNlcnRf cG9pbnQgKGNoYXIgdHlwZSwgQ09SRV9BRERSIAotICAgdW5zaWduZWQgbG9uZyBicF9jdHJsOwot ICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwotICAgdW5zaWduZWQgbG9uZyBjY3M7Ci0tICBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotIAotICAgLyogQnJlYWtwb2ludC93YXRjaHBvaW50 IHR5cGVzIChHREIgdGVybWlub2xvZ3kpOgotICAgICAgMCA9IG1lbW9yeSBicmVha3BvaW50IGZv ciBpbnN0cnVjdGlvbnMKLUBAIC0xNjEsMTUgKzE1OCwxMyBAQCBjcmlzX2luc2VydF9wb2ludCAo Y2hhciB0eXBlLCBDT1JFX0FERFIgCi0gICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLSAKLS0gIHJl Z2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7Ci0tCi0g ICAvKiBSZWFkIHdhdGNocG9pbnRzIGFyZSBzZXQgYXMgYWNjZXNzIHdhdGNocG9pbnRzLCBiZWNh dXNlIG9mIEdEQidzCi0gICAgICBpbmFiaWxpdHkgdG8gZGVhbCB3aXRoIHB1cmUgcmVhZCB3YXRj aHBvaW50cy4gICovCi0gICBpZiAodHlwZSA9PSAnMycpCi0gICAgIHR5cGUgPSAnNCc7Ci0gCi0g ICAvKiBHZXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIuICAqLwotLSAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMwIiwgJmJwX2N0cmwpOwotKyAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lICgiczAiLCAmYnBfY3RybCk7Ci0gCi0gICAvKiBUaGUgd2F0Y2hwb2ludCBh bGxvY2F0aW9uIHNjaGVtZSBpcyB0aGUgc2ltcGxlc3QgcG9zc2libGUuCi0gICAgICBGb3IgZXhh bXBsZSwgaWYgYSByZWdpb24gaXMgd2F0Y2hlZCBmb3IgcmVhZCBhbmQKLUBAIC0yMDcsMTkgKzIw MiwxOSBAQCBjcmlzX2luc2VydF9wb2ludCAoY2hhciB0eXBlLCBDT1JFX0FERFIgCi0gICAgIH0K LSAKLSAgIC8qIFNldHVwIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLiAgKi8KLS0gIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMwIiwgJmJwX2N0cmwpOwotKyAgc3VwcGx5 X3JlZ2lzdGVyX2J5X25hbWUgKCJzMCIsICZicF9jdHJsKTsKLSAKLSAgIC8qIFNldHVwIHRoZSBy YW5nZS4gICovCi0gICBzdGFydCA9IGFkZHI7Ci0gICBlbmQgPSBhZGRyICsgbGVuIC0gMTsKLSAK LSAgIC8qIENvbmZpZ3VyZSB0aGUgd2F0Y2hwb2ludCByZWdpc3Rlci4gICovCi0tICBjcmlzX3dy aXRlX2RhdGFfYnJlYWtwb2ludCAocmVnY2FjaGUsIGJwLCBzdGFydCwgZW5kKTsKLSsgIGNyaXNf d3JpdGVfZGF0YV9icmVha3BvaW50IChicCwgc3RhcnQsIGVuZCk7Ci0gCi0tICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiY2NzIiwgJmNjcyk7Ci0rICBjb2xsZWN0X3JlZ2lz dGVyX2J5X25hbWUgKCJjY3MiLCAmY2NzKTsKLSAgIC8qIFNldCB0aGUgUzEgZmxhZyB0byBlbmFi bGUgd2F0Y2hwb2ludHMuICAqLwotICAgY2NzIHw9ICgxIDw8IDE5KTsKLS0gIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImNjcyIsICZjY3MpOwotKyAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKCJjY3MiLCAmY2NzKTsKLSAKLSAgIHJldHVybiAwOwotIH0KLUBAIC0yMzAsNyAr MjI1LDYgQEAgY3Jpc19yZW1vdmVfcG9pbnQgKGNoYXIgdHlwZSwgQ09SRV9BRERSIAotICAgaW50 IGJwOwotICAgdW5zaWduZWQgbG9uZyBicF9jdHJsOwotICAgdW5zaWduZWQgbG9uZyBzdGFydCwg ZW5kOwotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKLSAKLSAgIC8qIEJyZWFrcG9pbnQv d2F0Y2hwb2ludCB0eXBlczoKLSAgICAgIDAgPSBtZW1vcnkgYnJlYWtwb2ludCBmb3IgaW5zdHJ1 Y3Rpb25zCi1AQCAtMjQyLDE1ICsyMzYsMTMgQEAgY3Jpc19yZW1vdmVfcG9pbnQgKGNoYXIgdHlw ZSwgQ09SRV9BRERSIAotICAgaWYgKHR5cGUgPCAnMicgfHwgdHlwZSA+ICc0JykKLSAgICAgcmV0 dXJuIC0xOwotIAotLSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2lu ZmVyaW9yLCAxKTsKLS0KLSAgIC8qIFJlYWQgd2F0Y2hwb2ludHMgYXJlIHNldCBhcyBhY2Nlc3Mg d2F0Y2hwb2ludHMsIGJlY2F1c2Ugb2YgR0RCJ3MKLSAgICAgIGluYWJpbGl0eSB0byBkZWFsIHdp dGggcHVyZSByZWFkIHdhdGNocG9pbnRzLiAgKi8KLSAgIGlmICh0eXBlID09ICczJykKLSAgICAg dHlwZSA9ICc0JzsKLSAKLSAgIC8qIEdldCB0aGUgY29uZmlndXJhdGlvbiByZWdpc3Rlci4gICov Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczAiLCAmYnBfY3RybCk7 Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzMCIsICZicF9jdHJsKTsKLSAKLSAgIC8q IFRyeSB0byBmaW5kIGEgd2F0Y2hwb2ludCB0aGF0IGlzIGNvbmZpZ3VyZWQgZm9yIHRoZQotICAg ICAgc3BlY2lmaWVkIHJhbmdlLCB0aGVuIGNoZWNrIHRoYXQgcmVhZC93cml0ZSBhbHNvIG1hdGNo ZXMuICAqLwotQEAgLTI2MiwxOCArMjU0LDE4IEBAIGNyaXNfcmVtb3ZlX3BvaW50IChjaGFyIHR5 cGUsIENPUkVfQUREUiAKLSAgIHVuc2lnbmVkIGxvbmcgYnBfZF9yZWdzWzEyXTsKLSAKLSAgIC8q IEdldCBhbGwgcmFuZ2UgcmVnaXN0ZXJzIHRvIHNpbXBsaWZ5IHNlYXJjaC4gICovCi0tICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczMiLCAmYnBfZF9yZWdzWzBdKTsKLS0g IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzNCIsICZicF9kX3JlZ3NbMV0p OwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM1IiwgJmJwX2RfcmVn c1syXSk7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczYiLCAmYnBf ZF9yZWdzWzNdKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzNyIs ICZicF9kX3JlZ3NbNF0pOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg InM4IiwgJmJwX2RfcmVnc1s1XSk7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiczkiLCAmYnBfZF9yZWdzWzZdKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJzMTAiLCAmYnBfZF9yZWdzWzddKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJzMTEiLCAmYnBfZF9yZWdzWzhdKTsKLS0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTIiLCAmYnBfZF9yZWdzWzldKTsKLS0gIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMTMiLCAmYnBfZF9yZWdzWzEwXSk7Ci0tICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczE0IiwgJmJwX2RfcmVnc1sxMV0p OwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczMiLCAmYnBfZF9yZWdzWzBdKTsKLSsg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInM0IiwgJmJwX2RfcmVnc1sxXSk7Ci0rICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzNSIsICZicF9kX3JlZ3NbMl0pOwotKyAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lICgiczYiLCAmYnBfZF9yZWdzWzNdKTsKLSsgIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAoInM3IiwgJmJwX2RfcmVnc1s0XSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKCJzOCIsICZicF9kX3JlZ3NbNV0pOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l ICgiczkiLCAmYnBfZF9yZWdzWzZdKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMx MCIsICZicF9kX3JlZ3NbN10pOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczExIiwg JmJwX2RfcmVnc1s4XSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTIiLCAmYnBf ZF9yZWdzWzldKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMxMyIsICZicF9kX3Jl Z3NbMTBdKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMxNCIsICZicF9kX3JlZ3Nb MTFdKTsKLSAKLSAgIGZvciAoYnAgPSAwOyBicCA8IDY7IGJwKyspCi0gICAgIHsKLUBAIC0zMDcs MTEgKzI5OSwxMSBAQCBjcmlzX3JlbW92ZV9wb2ludCAoY2hhciB0eXBlLCBDT1JFX0FERFIgCi0g ICAgICBzdGFydC9lbmQgYWRkcmVzc2VzLiAgKi8KLSAgIGJwX2N0cmwgJj0gfigzIDw8ICgyICsg KGJwICogNCkpKTsKLSAgIC8qIFNldHVwIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLiAgKi8K LS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMwIiwgJmJwX2N0cmwpOwot KyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMCIsICZicF9jdHJsKTsKLSAKLSAgIHN0YXJ0 ID0gZW5kID0gMDsKLSAgIC8qIENvbmZpZ3VyZSB0aGUgd2F0Y2hwb2ludCByZWdpc3Rlci4gICov Ci0tICBjcmlzX3dyaXRlX2RhdGFfYnJlYWtwb2ludCAocmVnY2FjaGUsIGJwLCBzdGFydCwgZW5k KTsKLSsgIGNyaXNfd3JpdGVfZGF0YV9icmVha3BvaW50IChicCwgc3RhcnQsIGVuZCk7Ci0gCi0g ICAvKiBOb3RlIHRoYXQgd2UgZG9uJ3QgY2xlYXIgdGhlIFMxIGZsYWcgaGVyZS4gIEl0J3MgZG9u ZSB3aGVuIGNvbnRpbnVpbmcuICAqLwotICAgcmV0dXJuIDA7Ci0tLS0gLi9nZGIvZ2Ric2VydmVy L2xpbnV4LWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9n ZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICsw MTAwCi1AQCAtNDUxLDggKzQ1MSw3IEBAIGhhbmRsZV9leHRlbmRlZF93YWl0IChzdHJ1Y3QgbHdw X2luZm8gKmUKLSBzdGF0aWMgQ09SRV9BRERSCi0gZ2V0X3N0b3BfcGMgKHZvaWQpCi0gewotLSAg c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRf aW5mZXJpb3IsIDEpOwotLSAgQ09SRV9BRERSIHN0b3BfcGMgPSAoKnRoZV9sb3dfdGFyZ2V0Lmdl dF9wYykgKHJlZ2NhY2hlKTsKLSsgIENPUkVfQUREUiBzdG9wX3BjID0gKCp0aGVfbG93X3Rhcmdl dC5nZXRfcGMpICgpOwotIAotICAgaWYgKCEgZ2V0X3RocmVhZF9sd3AgKGN1cnJlbnRfaW5mZXJp b3IpLT5zdGVwcGluZykKLSAgICAgc3RvcF9wYyAtPSB0aGVfbG93X3RhcmdldC5kZWNyX3BjX2Fm dGVyX2JyZWFrOwotQEAgLTg4NSw3ICs4ODQsNiBAQCBjaGVja19yZW1vdmVkX2JyZWFrcG9pbnQg KHN0cnVjdCBsd3BfaW5mCi0gewotICAgQ09SRV9BRERSIHN0b3BfcGM7Ci0gICBzdHJ1Y3QgdGhy ZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yOwotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsK LSAKLSAgIGlmIChldmVudF9jaGlsZC0+cGVuZGluZ19pc19icmVha3BvaW50ID09IDApCi0gICAg IHJldHVybiAwOwotQEAgLTg5Niw3ICs4OTQsNyBAQCBjaGVja19yZW1vdmVkX2JyZWFrcG9pbnQg KHN0cnVjdCBsd3BfaW5mCi0gCi0gICBzYXZlZF9pbmZlcmlvciA9IGN1cnJlbnRfaW5mZXJpb3I7 Ci0gICBjdXJyZW50X2luZmVyaW9yID0gZ2V0X2x3cF90aHJlYWQgKGV2ZW50X2NoaWxkKTsKLS0g IHJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7Ci0r Ci0gICBzdG9wX3BjID0gZ2V0X3N0b3BfcGMgKCk7Ci0gCi0gICAvKiBJZiB0aGUgUEMgaGFzIGNo YW5nZWQgc2luY2Ugd2Ugc3RvcHBlZCwgdGhlbiB3ZSBzaG91bGRuJ3QgZG8KLUBAIC05MzIsNyAr OTMwLDcgQEAgY2hlY2tfcmVtb3ZlZF9icmVha3BvaW50IChzdHJ1Y3QgbHdwX2luZgotICAgICB7 Ci0gICAgICAgaWYgKGRlYnVnX3RocmVhZHMpCi0gCWZwcmludGYgKHN0ZGVyciwgIlNldCBwYyB0 byAweCVseFxuIiwgKGxvbmcpIHN0b3BfcGMpOwotLSAgICAgICgqdGhlX2xvd190YXJnZXQuc2V0 X3BjKSAocmVnY2FjaGUsIHN0b3BfcGMpOwotKyAgICAgICgqdGhlX2xvd190YXJnZXQuc2V0X3Bj KSAoc3RvcF9wYyk7Ci0gICAgIH0KLSAKLSAgIC8qIFdlIGNvbnN1bWVkIHRoZSBwZW5kaW5nIFNJ R1RSQVAuICAqLwotQEAgLTEwNjUsMTIgKzEwNjMsMTEgQEAgcmV0cnk6Ci0gICAgICAgJiYgdGhl X2xvd190YXJnZXQuZ2V0X3BjICE9IE5VTEwpCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgdGhyZWFk X2luZm8gKnNhdmVkX2luZmVyaW9yID0gY3VycmVudF9pbmZlcmlvcjsKLS0gICAgICBzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlv ciwgMSk7Ci0gICAgICAgQ09SRV9BRERSIHBjOwotIAotICAgICAgIGN1cnJlbnRfaW5mZXJpb3Ig PSAoc3RydWN0IHRocmVhZF9pbmZvICopCi0gCWZpbmRfaW5mZXJpb3JfaWQgKCZhbGxfdGhyZWFk cywgY2hpbGQtPmhlYWQuaWQpOwotLSAgICAgIHBjID0gKCp0aGVfbG93X3RhcmdldC5nZXRfcGMp IChyZWdjYWNoZSk7Ci0rICAgICAgcGMgPSAoKnRoZV9sb3dfdGFyZ2V0LmdldF9wYykgKCk7Ci0g ICAgICAgZnByaW50ZiAoc3RkZXJyLCAibGludXhfd2FpdF9mb3JfbHdwOiBwYyBpcyAweCVseFxu IiwgKGxvbmcpIHBjKTsKLSAgICAgICBjdXJyZW50X2luZmVyaW9yID0gc2F2ZWRfaW5mZXJpb3I7 Ci0gICAgIH0KLUBAIC0xODM1LDggKzE4MzIsNyBAQCBsaW51eF9yZXN1bWVfb25lX2x3cCAoc3Ry dWN0IGx3cF9pbmZvICpsCi0gCi0gICBpZiAoZGVidWdfdGhyZWFkcyAmJiB0aGVfbG93X3Rhcmdl dC5nZXRfcGMgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLS0gICAgICBD T1JFX0FERFIgcGMgPSAoKnRoZV9sb3dfdGFyZ2V0LmdldF9wYykgKHJlZ2NhY2hlKTsKLSsgICAg ICBDT1JFX0FERFIgcGMgPSAoKnRoZV9sb3dfdGFyZ2V0LmdldF9wYykgKCk7Ci0gICAgICAgZnBy aW50ZiAoc3RkZXJyLCAiICByZXN1bWluZyBmcm9tIHBjIDB4JWx4XG4iLCAobG9uZykgcGMpOwot ICAgICB9Ci0gCi1AQCAtMjEyNSw3ICsyMTIxLDcgQEAgcmVnaXN0ZXJfYWRkciAoaW50IHJlZ251 bSkKLSAKLSAvKiBGZXRjaCBvbmUgcmVnaXN0ZXIuICAqLwotIHN0YXRpYyB2b2lkCi0tZmV0Y2hf cmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKLStmZXRjaF9y ZWdpc3RlciAoaW50IHJlZ25vKQotIHsKLSAgIENPUkVfQUREUiByZWdhZGRyOwotICAgaW50IGks IHNpemU7Ci1AQCAtMjE2NCwyOSArMjE2MCwyOSBAQCBmZXRjaF9yZWdpc3RlciAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoCi0gICAgIH0KLSAKLSAgIGlmICh0aGVfbG93X3RhcmdldC5zdXBwbHlf cHRyYWNlX3JlZ2lzdGVyKQotLSAgICB0aGVfbG93X3RhcmdldC5zdXBwbHlfcHRyYWNlX3JlZ2lz dGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7Ci0rICAgIHRoZV9sb3dfdGFyZ2V0LnN1cHBseV9w dHJhY2VfcmVnaXN0ZXIgKHJlZ25vLCBidWYpOwotICAgZWxzZQotLSAgICBzdXBwbHlfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmKTsKLSsgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdubywg YnVmKTsKLSAKLSBlcnJvcl9leGl0OjsKLSB9Ci0gCi0gLyogRmV0Y2ggYWxsIHJlZ2lzdGVycywg b3IganVzdCBvbmUsIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuICAqLwotIHN0YXRpYyB2b2lkCi0t dXNyX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg aW50IHJlZ25vKQotK3Vzcl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKGludCByZWdubykKLSB7 Ci0gICBpZiAocmVnbm8gPT0gLTEpCi0gICAgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IHRoZV9s b3dfdGFyZ2V0Lm51bV9yZWdzOyByZWdubysrKQotLSAgICAgIGZldGNoX3JlZ2lzdGVyIChyZWdj YWNoZSwgcmVnbm8pOwotKyAgICAgIGZldGNoX3JlZ2lzdGVyIChyZWdubyk7Ci0gICBlbHNlCi0t ICAgIGZldGNoX3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8pOwotKyAgICBmZXRjaF9yZWdpc3Rl ciAocmVnbm8pOwotIH0KLSAKLSAvKiBTdG9yZSBvdXIgcmVnaXN0ZXIgdmFsdWVzIGJhY2sgaW50 byB0aGUgaW5mZXJpb3IuCi0gICAgSWYgUkVHTk8gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdp c3RlcnMuCi0gICAgT3RoZXJ3aXNlLCBSRUdOTyBzcGVjaWZpZXMgd2hpY2ggcmVnaXN0ZXIgKHNv IHdlIGNhbiBzYXZlIHRpbWUpLiAgKi8KLSBzdGF0aWMgdm9pZAotLXVzcl9zdG9yZV9pbmZlcmlv cl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKLSt1c3Jf c3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChpbnQgcmVnbm8pCi0gewotICAgQ09SRV9BRERSIHJl Z2FkZHI7Ci0gICBpbnQgaSwgc2l6ZTsKLUBAIC0yMjExLDkgKzIyMDcsOSBAQCB1c3Jfc3RvcmVf aW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnCi0gICAgICAgbWVtc2V0IChidWYsIDAsIHNp emUpOwotIAotICAgICAgIGlmICh0aGVfbG93X3RhcmdldC5jb2xsZWN0X3B0cmFjZV9yZWdpc3Rl cikKLS0JdGhlX2xvd190YXJnZXQuY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBy ZWdubywgYnVmKTsKLSsJdGhlX2xvd190YXJnZXQuY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHJl Z25vLCBidWYpOwotICAgICAgIGVsc2UKLS0JY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJl Z25vLCBidWYpOwotKwljb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgYnVmKTsKLSAKLSAgICAgICBw aWQgPSBsd3BpZF9vZiAoZ2V0X3RocmVhZF9sd3AgKGN1cnJlbnRfaW5mZXJpb3IpKTsKLSAgICAg ICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBzaXplb2YgKFBUUkFDRV9YRkVSX1RZUEUpKQot QEAgLTIyNDUsNyArMjI0MSw3IEBAIHVzcl9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVj dCByZWcKLSAgICAgfQotICAgZWxzZQotICAgICBmb3IgKHJlZ25vID0gMDsgcmVnbm8gPCB0aGVf bG93X3RhcmdldC5udW1fcmVnczsgcmVnbm8rKykKLS0gICAgICB1c3Jfc3RvcmVfaW5mZXJpb3Jf cmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVnbm8pOwotKyAgICAgIHVzcl9zdG9yZV9pbmZlcmlvcl9y ZWdpc3RlcnMgKHJlZ25vKTsKLSB9Ci0gI2VuZGlmIC8qIEhBVkVfTElOVVhfVVNSUkVHUyAqLwot IAotQEAgLTIyNTQsNyArMjI1MCw3IEBAIHVzcl9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0 cnVjdCByZWcKLSAjaWZkZWYgSEFWRV9MSU5VWF9SRUdTRVRTCi0gCi0gc3RhdGljIGludAotLXJl Z3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl KQotK3JlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzICgpCi0gewotICAgc3RydWN0IHJl Z3NldF9pbmZvICpyZWdzZXQ7Ci0gICBpbnQgc2F3X2dlbmVyYWxfcmVncyA9IDA7Ci1AQCAtMjMw MCw3ICsyMjk2LDcgQEAgcmVnc2V0c19mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdAot IAl9Ci0gICAgICAgZWxzZSBpZiAocmVnc2V0LT50eXBlID09IEdFTkVSQUxfUkVHUykKLSAJc2F3 X2dlbmVyYWxfcmVncyA9IDE7Ci0tICAgICAgcmVnc2V0LT5zdG9yZV9mdW5jdGlvbiAocmVnY2Fj aGUsIGJ1Zik7Ci0rICAgICAgcmVnc2V0LT5zdG9yZV9mdW5jdGlvbiAoYnVmKTsKLSAgICAgICBy ZWdzZXQgKys7Ci0gICAgICAgZnJlZSAoYnVmKTsKLSAgICAgfQotQEAgLTIzMTEsNyArMjMwNyw3 IEBAIHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QKLSB9Ci0gCi0gc3Rh dGljIGludAotLXJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlKQotK3JlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzICgpCi0gewot ICAgc3RydWN0IHJlZ3NldF9pbmZvICpyZWdzZXQ7Ci0gICBpbnQgc2F3X2dlbmVyYWxfcmVncyA9 IDA7Ci1AQCAtMjM0NSw3ICsyMzQxLDcgQEAgcmVnc2V0c19zdG9yZV9pbmZlcmlvcl9yZWdpc3Rl cnMgKHN0cnVjdAotICAgICAgIGlmIChyZXMgPT0gMCkKLSAJewotIAkgIC8qIFRoZW4gb3Zlcmxh eSBvdXIgY2FjaGVkIHJlZ2lzdGVycyBvbiB0aGF0LiAgKi8KLS0JICByZWdzZXQtPmZpbGxfZnVu Y3Rpb24gKHJlZ2NhY2hlLCBidWYpOwotKwkgIHJlZ3NldC0+ZmlsbF9mdW5jdGlvbiAoYnVmKTsK LSAKLSAJICAvKiBPbmx5IG5vdyBkbyB3ZSB3cml0ZSB0aGUgcmVnaXN0ZXIgc2V0LiAgKi8KLSAj aWZuZGVmIF9fc3BhcmNfXwotQEAgLTIzOTUsMjYgKzIzOTEsMjYgQEAgcmVnc2V0c19zdG9yZV9p bmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdAotIAotIAotIHZvaWQKLS1saW51eF9mZXRjaF9yZWdp c3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKLStsaW51eF9mZXRj aF9yZWdpc3RlcnMgKGludCByZWdubykKLSB7Ci0gI2lmZGVmIEhBVkVfTElOVVhfUkVHU0VUUwot LSAgaWYgKHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSkgPT0gMCkK LSsgIGlmIChyZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoKSA9PSAwKQotICAgICBy ZXR1cm47Ci0gI2VuZGlmCi0gI2lmZGVmIEhBVkVfTElOVVhfVVNSUkVHUwotLSAgdXNyX2ZldGNo X2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKLSsgIHVzcl9mZXRjaF9pbmZl cmlvcl9yZWdpc3RlcnMgKHJlZ25vKTsKLSAjZW5kaWYKLSB9Ci0gCi0gdm9pZAotLWxpbnV4X3N0 b3JlX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQotK2xp bnV4X3N0b3JlX3JlZ2lzdGVycyAoaW50IHJlZ25vKQotIHsKLSAjaWZkZWYgSEFWRV9MSU5VWF9S RUdTRVRTCi0tICBpZiAocmVnc2V0c19zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hl KSA9PSAwKQotKyAgaWYgKHJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzICgpID09IDAp Ci0gICAgIHJldHVybjsKLSAjZW5kaWYKLSAjaWZkZWYgSEFWRV9MSU5VWF9VU1JSRUdTCi0tICB1 c3Jfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVnbm8pOwotKyAgdXNyX3N0 b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnbm8pOwotICNlbmRpZgotIH0KLSAKLS0tLSAuL2dk Yi9nZGJzZXJ2ZXIvbGludXgtbG93LmgJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAx MDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmgJMjAxMC0wMS0yMSAyMDozMzoxNS4w MDAwMDAwMDAgKzAxMDAKLUBAIC0yNCw4ICsyNCw4IEBACi0gI2luY2x1ZGUgImdkYl9wcm9jX3Nl cnZpY2UuaCIKLSAKLSAjaWZkZWYgSEFWRV9MSU5VWF9SRUdTRVRTCi0tdHlwZWRlZiB2b2lkICgq cmVnc2V0X2ZpbGxfZnVuYykgKHN0cnVjdCByZWdjYWNoZSAqLCB2b2lkICopOwotLXR5cGVkZWYg dm9pZCAoKnJlZ3NldF9zdG9yZV9mdW5jKSAoc3RydWN0IHJlZ2NhY2hlICosIGNvbnN0IHZvaWQg Kik7Ci0rdHlwZWRlZiB2b2lkICgqcmVnc2V0X2ZpbGxfZnVuYykgKHZvaWQgKik7Ci0rdHlwZWRl ZiB2b2lkICgqcmVnc2V0X3N0b3JlX2Z1bmMpIChjb25zdCB2b2lkICopOwotIGVudW0gcmVnc2V0 X3R5cGUgewotICAgR0VORVJBTF9SRUdTLAotICAgRlBfUkVHUywKLUBAIC03MCw4ICs3MCw4IEBA IHN0cnVjdCBsaW51eF90YXJnZXRfb3BzCi0gICAgICBzdG9yZSB0aGUgcmVnaXN0ZXIsIGFuZCAy IGlmIGZhaWx1cmUgdG8gc3RvcmUgdGhlIHJlZ2lzdGVyCi0gICAgICBpcyBhY2NlcHRhYmxlLiAg Ki8KLSAgIGludCAoKmNhbm5vdF9zdG9yZV9yZWdpc3RlcikgKGludCk7Ci0tICBDT1JFX0FERFIg KCpnZXRfcGMpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKLS0gIHZvaWQgKCpzZXRfcGMp IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgbmV3cGMpOwotKyAgQ09SRV9B RERSICgqZ2V0X3BjKSAodm9pZCk7Ci0rICB2b2lkICgqc2V0X3BjKSAoQ09SRV9BRERSIG5ld3Bj KTsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJyZWFrcG9pbnQ7Ci0gICBpbnQgYnJlYWtwb2lu dF9sZW47Ci0gICBDT1JFX0FERFIgKCpicmVha3BvaW50X3JlaW5zZXJ0X2FkZHIpICh2b2lkKTsK LUBAIC04OCwxMCArODgsOCBAQCBzdHJ1Y3QgbGludXhfdGFyZ2V0X29wcwotIAotICAgLyogSG9v a3MgdG8gcmVmb3JtYXQgcmVnaXN0ZXIgZGF0YSBmb3IgUEVFS1VTUi9QT0tFVVNSIChpbiBwYXJ0 aWN1bGFyCi0gICAgICBmb3IgcmVnaXN0ZXJzIHNtYWxsZXIgdGhhbiBhbiB4ZmVyIHVuaXQpLiAg Ki8KLS0gIHZvaWQgKCpjb2xsZWN0X3B0cmFjZV9yZWdpc3RlcikgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsCi0tCQkJCSAgIGludCByZWdubywgY2hhciAqYnVmKTsKLS0gIHZvaWQgKCpzdXBw bHlfcHRyYWNlX3JlZ2lzdGVyKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLS0JCQkJICBp bnQgcmVnbm8sIGNvbnN0IGNoYXIgKmJ1Zik7Ci0rICB2b2lkICgqY29sbGVjdF9wdHJhY2VfcmVn aXN0ZXIpIChpbnQgcmVnbm8sIGNoYXIgKmJ1Zik7Ci0rICB2b2lkICgqc3VwcGx5X3B0cmFjZV9y ZWdpc3RlcikgKGludCByZWdubywgY29uc3QgY2hhciAqYnVmKTsKLSAKLSAgIC8qIEhvb2sgdG8g Y29udmVydCBmcm9tIHRhcmdldCBmb3JtYXQgdG8gcHRyYWNlIGZvcm1hdCBhbmQgYmFjay4KLSAg ICAgIFJldHVybnMgdHJ1ZSBpZiBhbnkgY29udmVyc2lvbiB3YXMgZG9uZTsgZmFsc2Ugb3RoZXJ3 aXNlLgotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1tMzJyLWxvdy5jCTIwMTAtMDEtMjAgMjM6 NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LW0zMnItbG93 LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC01MywyMCArNTMsMTgg QEAgbTMycl9jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykKLSB9Ci0gCi0gc3RhdGlj IENPUkVfQUREUgotLW0zMnJfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotK20z MnJfZ2V0X3BjICgpCi0gewotICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Ci0tICBpZiAoZGVidWdfdGhyZWFkcykK LS0gICAgZnByaW50ZiAoc3RkZXJyLCAic3RvcCBwYyBpcyAlMDhseFxuIiwgcGMpOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOwotICAgcmV0dXJuIHBjOwotIH0KLSAK LSBzdGF0aWMgdm9pZAotLW0zMnJfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBD T1JFX0FERFIgcGMpCi0rbTMycl9zZXRfcGMgKENPUkVfQUREUiBwYykKLSB7Ci0gICB1bnNpZ25l ZCBsb25nIG5ld3BjID0gcGM7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJwYyIsICZuZXdwYyk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3Bj KTsKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG0zMnJfYnJlYWtwb2ludCA9 IDB4MTBmMTsKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbTY4ay1sb3cuYwkyMDEwLTAxLTIw IDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1tNjhr LWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1AQCAtNzEsNDAgKzcx LDQwIEBAIG02OGtfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCi0gI2luY2x1ZGUg PHN5cy9wdHJhY2UuaD4KLSAKLSBzdGF0aWMgdm9pZAotLW02OGtfZmlsbF9ncmVnc2V0IChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rbTY4a19maWxsX2dyZWdzZXQgKHZv aWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBtNjhrX251bV9n cmVnczsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKGNoYXIgKikg YnVmICsgbTY4a19yZWdtYXBbaV0pOwotKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChpLCAoY2hhciAq KSBidWYgKyBtNjhrX3JlZ21hcFtpXSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tbTY4a19zdG9y ZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0r bTY4a19zdG9yZV9ncmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gCi0g ICBmb3IgKGkgPSAwOyBpIDwgbTY4a19udW1fZ3JlZ3M7IGkrKykKLS0gICAgc3VwcGx5X3JlZ2lz dGVyIChyZWdjYWNoZSwgaSwgKGNvbnN0IGNoYXIgKikgYnVmICsgbTY4a19yZWdtYXBbaV0pOwot KyAgICBzdXBwbHlfcmVnaXN0ZXIgKGksIChjb25zdCBjaGFyICopIGJ1ZiArIG02OGtfcmVnbWFw W2ldKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1tNjhrX2ZpbGxfZnByZWdzZXQgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLSttNjhrX2ZpbGxfZnByZWdzZXQgKHZvaWQg KmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IG02OGtfbnVtX2dyZWdzOyBpIDwg bTY4a19udW1fcmVnczsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwg KChjaGFyICopIGJ1ZgotLQkJCSArIChtNjhrX3JlZ21hcFtpXSAtIG02OGtfcmVnbWFwW202OGtf bnVtX2dyZWdzXSkpKTsKLSsgICAgY29sbGVjdF9yZWdpc3RlciAoaSwgKChjaGFyICopIGJ1Zgot KwkJCSAgKyAobTY4a19yZWdtYXBbaV0gLSBtNjhrX3JlZ21hcFttNjhrX251bV9ncmVnc10pKSk7 Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tbTY4a19zdG9yZV9mcHJlZ3NldCAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK202OGtfc3RvcmVfZnByZWdzZXQgKGNv bnN0IHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IG02OGtfbnVtX2dy ZWdzOyBpIDwgbTY4a19udW1fcmVnczsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCBpLCAoKGNvbnN0IGNoYXIgKikgYnVmCi0rICAgIHN1cHBseV9yZWdpc3RlciAoaSwgKChj b25zdCBjaGFyICopIGJ1ZgotIAkJCSArIChtNjhrX3JlZ21hcFtpXSAtIG02OGtfcmVnbWFwW202 OGtfbnVtX2dyZWdzXSkpKTsKLSB9Ci0gCi1AQCAtMTI2LDIwICsxMjYsMjAgQEAgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgbTY4a19icmVha3BvaQotICNkZWZpbmUgbTY4a19icmVha3BvaW50 X2xlbiAyCi0gCi0gc3RhdGljIENPUkVfQUREUgotLW02OGtfZ2V0X3BjIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlKQotK202OGtfZ2V0X3BjICgpCi0gewotICAgdW5zaWduZWQgbG9uZyBwYzsK LSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Ci0r ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7Ci0gICByZXR1cm4gcGM7Ci0g fQotIAotIHN0YXRpYyB2b2lkCi0tbTY4a19zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIENPUkVfQUREUiB2YWx1ZSkKLSttNjhrX3NldF9wYyAoQ09SRV9BRERSIHZhbHVlKQotIHsK LSAgIHVuc2lnbmVkIGxvbmcgbmV3cGMgPSB2YWx1ZTsKLSAKLS0gIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lICgicGMiLCAmbmV3cGMpOwotIH0KLSAKLSBzdGF0aWMgaW50Ci0tLS0gLi9nZGIvZ2Ric2Vy dmVyL2xpbnV4LW1pcHMtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAK LSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbWlwcy1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1 LjAwMDAwMDAwMCArMDEwMAotQEAgLTExNSwxNSArMTE1LDE1IEBAIG1pcHNfY2Fubm90X3N0b3Jl X3JlZ2lzdGVyIChpbnQgcmVnbm8pCi0gfQotIAotIHN0YXRpYyBDT1JFX0FERFIKLS1taXBzX2dl dF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKLSttaXBzX2dldF9wYyAoKQotIHsKLSAg IHVuaW9uIG1pcHNfcmVnaXN0ZXIgcGM7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAicGMiLCBwYy5idWYpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicGMi LCBwYy5idWYpOwotICAgcmV0dXJuIHJlZ2lzdGVyX3NpemUgKDApID09IDQgPyBwYy5yZWczMiA6 IHBjLnJlZzY0OwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLW1pcHNfc2V0X3BjIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCi0rbWlwc19zZXRfcGMgKENPUkVfQUREUiBw YykKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lzdGVyIG5ld3BjOwotICAgaWYgKHJlZ2lzdGVyX3Np emUgKDApID09IDQpCi1AQCAtMTMxLDcgKzEzMSw3IEBAIG1pcHNfc2V0X3BjIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCAKLSAgIGVsc2UKLSAgICAgbmV3cGMucmVnNjQgPSBwYzsKLSAKLS0g IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgbmV3cGMuYnVmKTsKLSsg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCBuZXdwYy5idWYpOwotIH0KLSAKLSAvKiBD b3JyZWN0IGluIGVpdGhlciBlbmRpYW5uZXNzLiAgKi8KLUBAIC0xNDIsMTEgKzE0MiwxMCBAQCBz dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfYnJlYWtwb2luCi0gICAgaXMgb3V0c2lkZSBv ZiB0aGUgZnVuY3Rpb24uICBTbyByYXRoZXIgdGhhbiBpbXBvcnRpbmcgc29mdHdhcmUgc2luZ2xl LXN0ZXAsCi0gICAgd2UgY2FuIGp1c3QgcnVuIHVudGlsIGV4aXQuICAqLwotIHN0YXRpYyBDT1JF X0FERFIKLS1taXBzX3JlaW5zZXJ0X2FkZHIgKHZvaWQpCi0rbWlwc19yZWluc2VydF9hZGRyICgp Ci0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUg KGN1cnJlbnRfaW5mZXJpb3IsIDEpOwotICAgdW5pb24gbWlwc19yZWdpc3RlciByYTsKLS0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJyMzEiLCByYS5idWYpOwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicjMxIiwgcmEuYnVmKTsKLSAgIHJldHVybiByZWdpc3Rl cl9zaXplICgwKSA9PSA0ID8gcmEucmVnMzIgOiByYS5yZWc2NDsKLSB9Ci0gCi1AQCAtMTg0LDI2 ICsxODMsMjQgQEAgcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvYwotICNp ZmRlZiBIQVZFX1BUUkFDRV9HRVRSRUdTCi0gCi0gc3RhdGljIHZvaWQKLS1taXBzX2NvbGxlY3Rf cmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkgICAgICAgaW50IHVzZV82 NGJpdCwgaW50IHJlZ25vLCB1bmlvbiBtaXBzX3JlZ2lzdGVyICpyZWcpCi0rbWlwc19jb2xsZWN0 X3JlZ2lzdGVyIChpbnQgdXNlXzY0Yml0LCBpbnQgcmVnbm8sIHVuaW9uIG1pcHNfcmVnaXN0ZXIg KnJlZykKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lzdGVyIHRtcF9yZWc7Ci0gCi0gICBpZiAodXNl XzY0Yml0KQotICAgICB7Ci0tICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25v LCAmdG1wX3JlZy5yZWc2NCk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnbm8sICZ0bXBf cmVnLnJlZzY0KTsKLSAgICAgICAqcmVnID0gdG1wX3JlZzsKLSAgICAgfQotICAgZWxzZQotICAg ICB7Ci0tICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCAmdG1wX3JlZy5y ZWczMik7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnbm8sICZ0bXBfcmVnLnJlZzMyKTsK LSAgICAgICByZWctPnJlZzY0ID0gdG1wX3JlZy5yZWczMjsKLSAgICAgfQotIH0KLSAKLSBzdGF0 aWMgdm9pZAotLW1pcHNfc3VwcGx5X3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LAotLQkJICAgICAgaW50IHVzZV82NGJpdCwgaW50IHJlZ25vLCBjb25zdCB1bmlvbiBtaXBzX3Jl Z2lzdGVyICpyZWcpCi0rbWlwc19zdXBwbHlfcmVnaXN0ZXIgKGludCB1c2VfNjRiaXQsIGludCBy ZWdubywgY29uc3QgdW5pb24gbWlwc19yZWdpc3RlciAqcmVnKQotIHsKLSAgIGludCBvZmZzZXQg PSAwOwotIAotQEAgLTIxMiwzNSArMjA5LDMzIEBAIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChzdHJ1 Y3QgcmVnY2FjaGUgKnIKLSAgIGlmIChfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOICYmICF1 c2VfNjRiaXQpCi0gICAgIG9mZnNldCA9IDQ7Ci0gCi0tICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCByZWdubywgcmVnLT5idWYgKyBvZmZzZXQpOwotKyAgc3VwcGx5X3JlZ2lzdGVyIChyZWdu bywgcmVnLT5idWYgKyBvZmZzZXQpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLW1pcHNfY29sbGVj dF9yZWdpc3Rlcl8zMmJpdCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLS0JCQkgICAgIGlu dCB1c2VfNjRiaXQsIGludCByZWdubywgdW5zaWduZWQgY2hhciAqYnVmKQotK21pcHNfY29sbGVj dF9yZWdpc3Rlcl8zMmJpdCAoaW50IHVzZV82NGJpdCwgaW50IHJlZ25vLCB1bnNpZ25lZCBjaGFy ICpidWYpCi0gewotICAgdW5pb24gbWlwc19yZWdpc3RlciB0bXBfcmVnOwotICAgaW50IHJlZzMy OwotIAotLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LCByZWdu bywgJnRtcF9yZWcpOwotKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIHJlZ25v LCAmdG1wX3JlZyk7Ci0gICByZWczMiA9IHRtcF9yZWcucmVnNjQ7Ci0gICBtZW1jcHkgKGJ1Ziwg JnJlZzMyLCA0KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1taXBzX3N1cHBseV9yZWdpc3Rlcl8z MmJpdCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLS0JCQkgICAgaW50IHVzZV82NGJpdCwg aW50IHJlZ25vLCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYpCi0rbWlwc19zdXBwbHlfcmVnaXN0 ZXJfMzJiaXQgKGludCB1c2VfNjRiaXQsIGludCByZWdubywgY29uc3QgdW5zaWduZWQgY2hhciAq YnVmKQotIHsKLSAgIHVuaW9uIG1pcHNfcmVnaXN0ZXIgdG1wX3JlZzsKLSAgIGludCByZWczMjsK LSAKLSAgIG1lbWNweSAoJnJlZzMyLCBidWYsIDQpOwotICAgdG1wX3JlZy5yZWc2NCA9IHJlZzMy OwotLSAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIHJlZ25vLCAm dG1wX3JlZyk7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCByZWdubywgJnRt cF9yZWcpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLW1pcHNfZmlsbF9ncmVnc2V0IChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rbWlwc19maWxsX2dyZWdzZXQgKHZvaWQg KmJ1ZikKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lzdGVyICpyZWdzZXQgPSBidWY7Ci0gICBpbnQg aSwgdXNlXzY0Yml0OwotQEAgLTI0OCwyNyArMjQzLDIwIEBAIG1pcHNfZmlsbF9ncmVnc2V0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2MKLSAgIHVzZV82NGJpdCA9IChyZWdpc3Rlcl9zaXplICgwKSA9 PSA4KTsKLSAKLSAgIGZvciAoaSA9IDE7IGkgPCAzMjsgaSsrKQotLSAgICBtaXBzX2NvbGxlY3Rf cmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGksIHJlZ3NldCArIGkpOwotKyAgICBtaXBz X2NvbGxlY3RfcmVnaXN0ZXIgKHVzZV82NGJpdCwgaSwgcmVnc2V0ICsgaSk7Ci0gCi0tICBtaXBz X2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJIGZpbmRfcmVnbm8g KCJsbyIpLCByZWdzZXQgKyAzMik7Ci0tICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hl LCB1c2VfNjRiaXQsCi0tCQkJIGZpbmRfcmVnbm8gKCJoaSIpLCByZWdzZXQgKyAzMyk7Ci0tICBt aXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJIGZpbmRfcmVn bm8gKCJwYyIpLCByZWdzZXQgKyAzNCk7Ci0tICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCB1c2VfNjRiaXQsCi0tCQkJIGZpbmRfcmVnbm8gKCJiYWR2YWRkciIpLCByZWdzZXQgKyAz NSk7Ci0tICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJ IGZpbmRfcmVnbm8gKCJzdGF0dXMiKSwgcmVnc2V0ICsgMzYpOwotLSAgbWlwc19jb2xsZWN0X3Jl Z2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAotLQkJCSBmaW5kX3JlZ25vICgiY2F1c2UiKSwg cmVnc2V0ICsgMzcpOwotKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRf cmVnbm8gKCJsbyIpLCByZWdzZXQgKyAzMik7Ci0rICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHVz ZV82NGJpdCwgZmluZF9yZWdubyAoImhpIiksIHJlZ3NldCArIDMzKTsKLSsgIG1pcHNfY29sbGVj dF9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgicGMiKSwgcmVnc2V0ICsgMzQpOwot KyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJiYWR2YWRk ciIpLCByZWdzZXQgKyAzNSk7Ci0rICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHVzZV82NGJpdCwg ZmluZF9yZWdubyAoInN0YXR1cyIpLCByZWdzZXQgKyAzNik7Ci0rICBtaXBzX2NvbGxlY3RfcmVn aXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImNhdXNlIiksIHJlZ3NldCArIDM3KTsKLSAK LS0gIG1pcHNfY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwKLS0JCQkgZmlu ZF9yZWdubyAoInJlc3RhcnQiKSwgcmVnc2V0ICsgMCk7Ci0rICBtaXBzX2NvbGxlY3RfcmVnaXN0 ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoInJlc3RhcnQiKSwgcmVnc2V0ICsgMCk7Ci0gfQot IAotIHN0YXRpYyB2b2lkCi0tbWlwc19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0rbWlwc19zdG9yZV9ncmVnc2V0IChjb25zdCB2b2lk ICpidWYpCi0gewotICAgY29uc3QgdW5pb24gbWlwc19yZWdpc3RlciAqcmVnc2V0ID0gYnVmOwot ICAgaW50IGksIHVzZV82NGJpdDsKLUBAIC0yNzYsMjQgKzI2NCwyMCBAQCBtaXBzX3N0b3JlX2dy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnCi0gICB1c2VfNjRiaXQgPSAocmVnaXN0ZXJfc2l6 ZSAoMCkgPT0gOCk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykKLS0gICAgbWlwc19z dXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGksIHJlZ3NldCArIGkpOwotKyAg ICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCBpLCByZWdzZXQgKyBpKTsKLSAKLS0g IG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LCBmaW5kX3JlZ25vICgi bG8iKSwgcmVnc2V0ICsgMzIpOwotLSAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1 c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJoaSIpLCByZWdzZXQgKyAzMyk7Ci0tICBtaXBzX3N1cHBs eV9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwgZmluZF9yZWdubyAoInBjIiksIHJlZ3Nl dCArIDM0KTsKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAot LQkJCWZpbmRfcmVnbm8gKCJiYWR2YWRkciIpLCByZWdzZXQgKyAzNSk7Ci0tICBtaXBzX3N1cHBs eV9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwKLS0JCQlmaW5kX3JlZ25vICgic3RhdHVz IiksIHJlZ3NldCArIDM2KTsKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNl XzY0Yml0LAotLQkJCWZpbmRfcmVnbm8gKCJjYXVzZSIpLCByZWdzZXQgKyAzNyk7Ci0rICBtaXBz X3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgibG8iKSwgcmVnc2V0ICsg MzIpOwotKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImhp IiksIHJlZ3NldCArIDMzKTsKLSsgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZp bmRfcmVnbm8gKCJwYyIpLCByZWdzZXQgKyAzNCk7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAo dXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiYmFkdmFkZHIiKSwgcmVnc2V0ICsgMzUpOwotKyAgbWlw c19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoInN0YXR1cyIpLCByZWdz ZXQgKyAzNik7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25v ICgiY2F1c2UiKSwgcmVnc2V0ICsgMzcpOwotIAotLSAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJl Z2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJZmluZF9yZWdubyAoInJlc3RhcnQiKSwgcmVnc2V0ICsg MCk7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgicmVz dGFydCIpLCByZWdzZXQgKyAwKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1taXBzX2ZpbGxfZnBy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLSttaXBzX2ZpbGxf ZnByZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICB1bmlvbiBtaXBzX3JlZ2lzdGVyICpyZWdzZXQg PSBidWY7Ci0gICBpbnQgaSwgdXNlXzY0Yml0LCBmaXJzdF9mcCwgYmlnX2VuZGlhbjsKLUBAIC0z MDUsMTkgKzI4OSwxOCBAQCBtaXBzX2ZpbGxfZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Ci0gICAvKiBTZWUgR0RCIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBwZWN1bGlhciBsYXlvdXQu ICAqLwotICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCi0gICAgIGlmICh1c2VfNjRiaXQpCi0t ICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGZpcnN0X2ZwICsgaSwgcmVnc2V0W2ld LmJ1Zik7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAoZmlyc3RfZnAgKyBpLCByZWdzZXRbaV0u YnVmKTsKLSAgICAgZWxzZQotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBmaXJz dF9mcCArIGksCi0rICAgICAgY29sbGVjdF9yZWdpc3RlciAoZmlyc3RfZnAgKyBpLAotIAkJCXJl Z3NldFtpICYgfjFdLmJ1ZiArIDQgKiAoYmlnX2VuZGlhbiAhPSAoaSAmIDEpKSk7Ci0gCi0tICBt aXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCi0tCQkJICAg ICAgIGZpbmRfcmVnbm8gKCJmY3NyIiksIHJlZ3NldFszMl0uYnVmKTsKLS0gIG1pcHNfY29sbGVj dF9yZWdpc3Rlcl8zMmJpdCAocmVnY2FjaGUsIHVzZV82NGJpdCwgZmluZF9yZWdubyAoImZpciIp LAotKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyXzMyYml0ICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8g KCJmY3NyIiksIHJlZ3NldFszMl0uYnVmKTsKLSsgIG1pcHNfY29sbGVjdF9yZWdpc3Rlcl8zMmJp dCAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiZmlyIiksCi0gCQkJICAgICAgIHJlZ3NldFszMl0u YnVmICsgNCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tbWlwc19zdG9yZV9mcHJlZ3NldCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK21pcHNfc3RvcmVfZnBy ZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKLSB7Ci0gICBjb25zdCB1bmlvbiBtaXBzX3JlZ2lzdGVy ICpyZWdzZXQgPSBidWY7Ci0gICBpbnQgaSwgdXNlXzY0Yml0LCBmaXJzdF9mcCwgYmlnX2VuZGlh bjsKLUBAIC0zMjksMTQgKzMxMiwxMyBAQCBtaXBzX3N0b3JlX2ZwcmVnc2V0IChzdHJ1Y3QgcmVn Y2FjaGUgKnJlCi0gICAvKiBTZWUgR0RCIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBwZWN1bGlh ciBsYXlvdXQuICAqLwotICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCi0gICAgIGlmICh1c2Vf NjRiaXQpCi0tICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgZmlyc3RfZnAgKyBpLCBy ZWdzZXRbaV0uYnVmKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXIgKGZpcnN0X2ZwICsgaSwgcmVn c2V0W2ldLmJ1Zik7Ci0gICAgIGVsc2UKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hl LCBmaXJzdF9mcCArIGksCi0rICAgICAgc3VwcGx5X3JlZ2lzdGVyIChmaXJzdF9mcCArIGksCi0g CQkgICAgICAgcmVnc2V0W2kgJiB+MV0uYnVmICsgNCAqIChiaWdfZW5kaWFuICE9IChpICYgMSkp KTsKLSAKLS0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyXzMyYml0IChyZWdjYWNoZSwgdXNlXzY0Yml0 LAotLQkJCSAgICAgIGZpbmRfcmVnbm8gKCJmY3NyIiksIHJlZ3NldFszMl0uYnVmKTsKLS0gIG1p cHNfc3VwcGx5X3JlZ2lzdGVyXzMyYml0IChyZWdjYWNoZSwgdXNlXzY0Yml0LCBmaW5kX3JlZ25v ICgiZmlyIiksCi0rICBtaXBzX3N1cHBseV9yZWdpc3Rlcl8zMmJpdCAodXNlXzY0Yml0LCBmaW5k X3JlZ25vICgiZmNzciIpLCByZWdzZXRbMzJdLmJ1Zik7Ci0rICBtaXBzX3N1cHBseV9yZWdpc3Rl cl8zMmJpdCAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiZmlyIiksCi0gCQkJICAgICAgcmVnc2V0 WzMyXS5idWYgKyA0KTsKLSB9Ci0gI2VuZGlmIC8qIEhBVkVfUFRSQUNFX0dFVFJFR1MgKi8KLS0t LSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAw MDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwkyMDEwLTAx LTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTE2OSwyNyArMTY5LDI2IEBAIHBwY19j YW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1w cGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGlu dCByZWdubywgY2hhciAqYnVmKQotK3BwY19jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAoaW50IHJl Z25vLCBjaGFyICpidWYpCi0gewotICAgaW50IHNpemUgPSByZWdpc3Rlcl9zaXplIChyZWdubyk7 Ci0gCi0gICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChsb25nKSk7Ci0gCi0gICBpZiAoc2l6ZSA8 IHNpemVvZiAobG9uZykpCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywg YnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOwotKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdu bywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOwotICAgZWxzZQotLSAgICBjb2xsZWN0X3Jl Z2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJl Z25vLCBidWYpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXBwY19zdXBwbHlfcHRyYWNlX3JlZ2lz dGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAgICBpbnQgcmVnbm8sIGNvbnN0 IGNoYXIgKmJ1ZikKLStwcGNfc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAoaW50IHJlZ25vLCBjb25z dCBjaGFyICpidWYpCi0gewotICAgaW50IHNpemUgPSByZWdpc3Rlcl9zaXplIChyZWdubyk7Ci0g ICBpZiAoc2l6ZSA8IHNpemVvZiAobG9uZykpCi0tICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2Fj aGUsIHJlZ25vLCBidWYgKyBzaXplb2YgKGxvbmcpIC0gc2l6ZSk7Ci0rICAgIHN1cHBseV9yZWdp c3RlciAocmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykgLSBzaXplKTsKLSAgIGVsc2UKLS0gICAg c3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7Ci0rICAgIHN1cHBseV9yZWdp c3RlciAocmVnbm8sIGJ1Zik7Ci0gfQotIAotIAotQEAgLTIwMCw3ICsxOTksNyBAQCBwcGNfc3Vw cGx5X3B0cmFjZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhCi0gICAgcmV0dXJuIHRvIEZEIGFuZCBB RERSIHRoZSBmaWxlIGhhbmRsZSBhbmQgTlBDIHBhcmFtZXRlciBhZGRyZXNzCi0gICAgdXNlZCB3 aXRoIHRoZSBzeXN0ZW0gY2FsbC4gIFJldHVybiBub24temVybyBpZiBzdWNjZXNzZnVsLiAgKi8K LSBzdGF0aWMgaW50Ci0tcGFyc2Vfc3B1ZnNfcnVuIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBpbnQgKmZkLCBDT1JFX0FERFIgKmFkZHIpCi0rcGFyc2Vfc3B1ZnNfcnVuIChpbnQgKmZkLCBD T1JFX0FERFIgKmFkZHIpCi0gewotICAgQ09SRV9BRERSIGN1cnJfcGM7Ci0gICBpbnQgY3Vycl9p bnNuOwotQEAgLTIwOSwxMCArMjA4LDEwIEBAIHBhcnNlX3NwdWZzX3J1biAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWMKLSAgIGlmIChyZWdpc3Rlcl9zaXplICgwKSA9PSA0KQotICAgICB7Ci0gICAg ICAgdW5zaWduZWQgaW50IHBjLCByMCwgcjMsIHI0OwotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Ci0tICAgICAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgInIwIiwgJnIwKTsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAib3JpZ19yMyIsICZyMyk7Ci0tICAgICAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgInI0IiwgJnI0KTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKCJwYyIsICZwYyk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi cjAiLCAmcjApOwotKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoIm9yaWdfcjMiLCAm cjMpOwotKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInI0IiwgJnI0KTsKLSAgICAg ICBjdXJyX3BjID0gKENPUkVfQUREUikgcGM7Ci0gICAgICAgY3Vycl9yMCA9IChpbnQpIHIwOwot ICAgICAgICpmZCA9IChpbnQpIHIzOwotQEAgLTIyMSwxMCArMjIwLDEwIEBAIHBhcnNlX3NwdWZz X3J1biAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWMKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHVu c2lnbmVkIGxvbmcgcGMsIHIwLCByMywgcjQ7Ci0tICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAicjAiLCAmcjApOwotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJvcmlnX3IzIiwgJnIzKTsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAicjQiLCAmcjQpOwotKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAoInBjIiwgJnBjKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJyMCIs ICZyMCk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgib3JpZ19yMyIsICZyMyk7 Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicjQiLCAmcjQpOwotICAgICAgIGN1 cnJfcGMgPSAoQ09SRV9BRERSKSBwYzsKLSAgICAgICBjdXJyX3IwID0gKGludCkgcjA7Ci0gICAg ICAgKmZkID0gKGludCkgcjM7Ci1AQCAtMjQ2LDEyICsyNDUsMTIgQEAgcGFyc2Vfc3B1ZnNfcnVu IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhYwotIH0KLSAKLSBzdGF0aWMgQ09SRV9BRERSCi0tcHBj X2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKLStwcGNfZ2V0X3BjICh2b2lkKQot IHsKLSAgIENPUkVfQUREUiBhZGRyOwotICAgaW50IGZkOwotIAotLSAgaWYgKHBhcnNlX3NwdWZz X3J1biAocmVnY2FjaGUsICZmZCwgJmFkZHIpKQotKyAgaWYgKHBhcnNlX3NwdWZzX3J1biAoJmZk LCAmYWRkcikpCi0gICAgIHsKLSAgICAgICB1bnNpZ25lZCBpbnQgcGM7Ci0gICAgICAgKCp0aGVf dGFyZ2V0LT5yZWFkX21lbW9yeSkgKGFkZHIsICh1bnNpZ25lZCBjaGFyICopICZwYywgNCk7Ci1A QCAtMjYwLDI0ICsyNTksMjQgQEAgcHBjX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSkKLSAgIGVsc2UgaWYgKHJlZ2lzdGVyX3NpemUgKDApID09IDQpCi0gICAgIHsKLSAgICAgICB1 bnNpZ25lZCBpbnQgcGM7Ci0tICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNo ZSwgInBjIiwgJnBjKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZw Yyk7Ci0gICAgICAgcmV0dXJuIChDT1JFX0FERFIpIHBjOwotICAgICB9Ci0gICBlbHNlCi0gICAg IHsKLSAgICAgICB1bnNpZ25lZCBsb25nIHBjOwotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lICgicGMiLCAmcGMpOwotICAgICAgIHJldHVybiAoQ09SRV9BRERSKSBwYzsKLSAgICAgfQot IH0KLSAKLSBzdGF0aWMgdm9pZAotLXBwY19zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIENPUkVfQUREUiBwYykKLStwcGNfc2V0X3BjIChDT1JFX0FERFIgcGMpCi0gewotICAgQ09S RV9BRERSIGFkZHI7Ci0gICBpbnQgZmQ7Ci0gCi0tICBpZiAocGFyc2Vfc3B1ZnNfcnVuIChyZWdj YWNoZSwgJmZkLCAmYWRkcikpCi0rICBpZiAocGFyc2Vfc3B1ZnNfcnVuICgmZmQsICZhZGRyKSkK LSAgICAgewotICAgICAgIHVuc2lnbmVkIGludCBuZXdwYyA9IHBjOwotICAgICAgICgqdGhlX3Rh cmdldC0+d3JpdGVfbWVtb3J5KSAoYWRkciwgKHVuc2lnbmVkIGNoYXIgKikgJm5ld3BjLCA0KTsK LUBAIC0yODUsMTIgKzI4NCwxMiBAQCBwcGNfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBDCi0gICBlbHNlIGlmIChyZWdpc3Rlcl9zaXplICgwKSA9PSA0KQotICAgICB7Ci0gICAg ICAgdW5zaWduZWQgaW50IG5ld3BjID0gcGM7Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOwotKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lICgicGMiLCAmbmV3cGMpOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICB1bnNp Z25lZCBsb25nIG5ld3BjID0gcGM7Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAicGMiLCAmbmV3cGMpOwotKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgi cGMiLCAmbmV3cGMpOwotICAgICB9Ci0gfQotIAotQEAgLTQ1MCwxOCArNDQ5LDE4IEBAIHBwY19i cmVha3BvaW50X2F0IChDT1JFX0FERFIgd2hlcmUpCi0gLyogUHJvdmlkZSBvbmx5IGEgZmlsbCBm dW5jdGlvbiBmb3IgdGhlIGdlbmVyYWwgcmVnaXN0ZXIgc2V0LiAgcHNfbGdldHJlZ3MKLSAgICB3 aWxsIHVzZSB0aGlzIGZvciBOUFRMIHN1cHBvcnQuICAqLwotIAotLXN0YXRpYyB2b2lkIHBwY19m aWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLStzdGF0 aWMgdm9pZCBwcGNfZmlsbF9ncmVnc2V0ICh2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gCi0g ICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykKLS0gICAgcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lz dGVyIChyZWdjYWNoZSwgaSwgKGNoYXIgKikgYnVmICsgcHBjX3JlZ21hcFtpXSk7Ci0rICAgIHBw Y19jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAoaSwgKGNoYXIgKikgYnVmICsgcHBjX3JlZ21hcFtp XSk7Ci0gCi0gICBmb3IgKGkgPSA2NDsgaSA8IDcwOyBpKyspCi0tICAgIHBwY19jb2xsZWN0X3B0 cmFjZV9yZWdpc3RlciAocmVnY2FjaGUsIGksIChjaGFyICopIGJ1ZiArIHBwY19yZWdtYXBbaV0p OwotKyAgICBwcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKGksIChjaGFyICopIGJ1ZiArIHBw Y19yZWdtYXBbaV0pOwotIAotICAgZm9yIChpID0gNzE7IGkgPCA3MzsgaSsrKQotLSAgICBwcGNf Y29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoY2hhciAqKSBidWYgKyBwcGNf cmVnbWFwW2ldKTsKLSsgICAgcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChpLCAoY2hhciAq KSBidWYgKyBwcGNfcmVnbWFwW2ldKTsKLSB9Ci0gCi0gI2lmbmRlZiBQVFJBQ0VfR0VUVlNYUkVH UwotQEAgLTQ3Miw3ICs0NzEsNyBAQCBzdGF0aWMgdm9pZCBwcGNfZmlsbF9ncmVnc2V0IChzdHJ1 Y3QgcmVnCi0gI2RlZmluZSBTSVpFT0ZfVlNYUkVHUyAzMio4Ci0gCi0gc3RhdGljIHZvaWQKLS1w cGNfZmlsbF92c3hyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikK LStwcGNfZmlsbF92c3hyZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaSwgYmFzZTsKLSAg IGNoYXIgKnJlZ3NldCA9IGJ1ZjsKLUBAIC00ODIsMTEgKzQ4MSwxMSBAQCBwcGNfZmlsbF92c3hy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnCi0gCi0gICBiYXNlID0gZmluZF9yZWdubyAoInZz MGgiKTsKLSAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVy IChyZWdjYWNoZSwgYmFzZSArIGksICZyZWdzZXRbaSAqIDhdKTsKLSsgICAgY29sbGVjdF9yZWdp c3RlciAoYmFzZSArIGksICZyZWdzZXRbaSAqIDhdKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1w cGNfc3RvcmVfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lk ICpidWYpCi0rcHBjX3N0b3JlX3ZzeHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIGlu dCBpLCBiYXNlOwotICAgY29uc3QgY2hhciAqcmVnc2V0ID0gYnVmOwotQEAgLTQ5Niw3ICs0OTUs NyBAQCBwcGNfc3RvcmVfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gCi0gICBiYXNl ID0gZmluZF9yZWdubyAoInZzMGgiKTsKLSAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQotLSAg ICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBiYXNlICsgaSwgJnJlZ3NldFtpICogOF0pOwot KyAgICBzdXBwbHlfcmVnaXN0ZXIgKGJhc2UgKyBpLCAmcmVnc2V0W2kgKiA4XSk7Ci0gfQotIAot ICNpZm5kZWYgUFRSQUNFX0dFVFZSUkVHUwotQEAgLTUwNyw3ICs1MDYsNyBAQCBwcGNfc3RvcmVf dnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gI2RlZmluZSBTSVpFT0ZfVlJSRUdTIDMz KjE2KzQKLSAKLSBzdGF0aWMgdm9pZAotLXBwY19maWxsX3ZycmVnc2V0IChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rcHBjX2ZpbGxfdnJyZWdzZXQgKHZvaWQgKmJ1ZikK LSB7Ci0gICBpbnQgaSwgYmFzZTsKLSAgIGNoYXIgKnJlZ3NldCA9IGJ1ZjsKLUBAIC01MTcsMTQg KzUxNiwxNCBAQCBwcGNfZmlsbF92cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjCi0gCi0g ICBiYXNlID0gZmluZF9yZWdubyAoInZyMCIpOwotICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKysp Ci0tICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBiYXNlICsgaSwgJnJlZ3NldFtpICog MTZdKTsKLSsgICAgY29sbGVjdF9yZWdpc3RlciAoYmFzZSArIGksICZyZWdzZXRbaSAqIDE2XSk7 Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAidnNjciIsICZyZWdz ZXRbMzIgKiAxNiArIDEyXSk7Ci0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAidnJzYXZlIiwgJnJlZ3NldFszMyAqIDE2XSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKCJ2c2NyIiwgJnJlZ3NldFszMiAqIDE2ICsgMTJdKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAoInZyc2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOwotIH0KLSAKLSBzdGF0aWMgdm9p ZAotLXBwY19zdG9yZV92cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qg dm9pZCAqYnVmKQotK3BwY19zdG9yZV92cnJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotIHsKLSAg IGludCBpLCBiYXNlOwotICAgY29uc3QgY2hhciAqcmVnc2V0ID0gYnVmOwotQEAgLTUzNCwxMCAr NTMzLDEwIEBAIHBwY19zdG9yZV92cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWcKLSAKLSAg IGJhc2UgPSBmaW5kX3JlZ25vICgidnIwIik7Ci0gICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykK LS0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSArIGksICZyZWdzZXRbaSAqIDE2 XSk7Ci0rICAgIHN1cHBseV9yZWdpc3RlciAoYmFzZSArIGksICZyZWdzZXRbaSAqIDE2XSk7Ci0g Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJ2c2NyIiwgJnJlZ3NldFsz MiAqIDE2ICsgMTJdKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInZy c2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJ2 c2NyIiwgJnJlZ3NldFszMiAqIDE2ICsgMTJdKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1l ICgidnJzYXZlIiwgJnJlZ3NldFszMyAqIDE2XSk7Ci0gfQotIAotICNpZm5kZWYgUFRSQUNFX0dF VEVWUlJFR1MKLUBAIC01NTMsNyArNTUyLDcgQEAgc3RydWN0IGdkYl9ldnJyZWdzZXRfdAotIH07 Ci0gCi0gc3RhdGljIHZvaWQKLS1wcGNfZmlsbF9ldnJyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIHZvaWQgKmJ1ZikKLStwcGNfZmlsbF9ldnJyZWdzZXQgKHZvaWQgKmJ1ZikKLSB7 Ci0gICBpbnQgaSwgZXYwOwotICAgc3RydWN0IGdkYl9ldnJyZWdzZXRfdCAqcmVnc2V0ID0gYnVm OwotQEAgLTU2MywxNCArNTYyLDE0IEBAIHBwY19maWxsX2V2cnJlZ3NldCAoc3RydWN0IHJlZ2Nh Y2hlICpyZWcKLSAKLSAgIGV2MCA9IGZpbmRfcmVnbm8gKCJldjBoIik7Ci0gICBmb3IgKGkgPSAw OyBpIDwgMzI7IGkrKykKLS0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGV2MCArIGks ICZyZWdzZXQtPmV2cltpXSk7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGV2MCArIGksICZyZWdz ZXQtPmV2cltpXSk7Ci0gCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi YWNjIiwgJnJlZ3NldC0+YWNjKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJzcGVmc2NyIiwgJnJlZ3NldC0+c3BlZnNjcik7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKCJhY2MiLCAmcmVnc2V0LT5hY2MpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l ICgic3BlZnNjciIsICZyZWdzZXQtPnNwZWZzY3IpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXBw Y19zdG9yZV9ldnJyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQg KmJ1ZikKLStwcGNfc3RvcmVfZXZycmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0gewotICAgaW50 IGksIGV2MDsKLSAgIGNvbnN0IHN0cnVjdCBnZGJfZXZycmVnc2V0X3QgKnJlZ3NldCA9IGJ1ZjsK LUBAIC01ODAsMTAgKzU3OSwxMCBAQCBwcGNfc3RvcmVfZXZycmVnc2V0IChzdHJ1Y3QgcmVnY2Fj aGUgKnJlCi0gCi0gICBldjAgPSBmaW5kX3JlZ25vICgiZXYwaCIpOwotICAgZm9yIChpID0gMDsg aSA8IDMyOyBpKyspCi0tICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGV2MCArIGksICZy ZWdzZXQtPmV2cltpXSk7Ci0rICAgIHN1cHBseV9yZWdpc3RlciAoZXYwICsgaSwgJnJlZ3NldC0+ ZXZyW2ldKTsKLSAKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImFjYyIs ICZyZWdzZXQtPmFjYyk7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJz cGVmc2NyIiwgJnJlZ3NldC0+c3BlZnNjcik7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo ImFjYyIsICZyZWdzZXQtPmFjYyk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInNwZWZz Y3IiLCAmcmVnc2V0LT5zcGVmc2NyKTsKLSB9Ci0gCi0gc3RydWN0IHJlZ3NldF9pbmZvIHRhcmdl dF9yZWdzZXRzW10gPSB7Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXMzOTAtbG93LmMJMjAx MC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGlu dXgtczM5MC1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTEw Niw3ICsxMDYsNyBAQCBzMzkwX2Nhbm5vdF9zdG9yZV9yZWdpc3RlciAoaW50IHJlZ25vKQotIH0K LSAKLSBzdGF0aWMgdm9pZAotLXMzOTBfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywgY2hhciAqYnVmKQotK3MzOTBfY29sbGVjdF9w dHJhY2VfcmVnaXN0ZXIgKGludCByZWdubywgY2hhciAqYnVmKQotIHsKLSAgIGludCBzaXplID0g cmVnaXN0ZXJfc2l6ZSAocmVnbm8pOwotICAgaWYgKHNpemUgPCBzaXplb2YgKGxvbmcpKQotQEAg LTEyMyw5ICsxMjMsOSBAQCBzMzkwX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChzdHJ1Y3QgcmVn Ci0gCX0KLSAgICAgICBlbHNlIGlmIChyZWdhZGRyID09IFBUX1BTV0FERFIKLSAJICAgICAgIHx8 IChyZWdhZGRyID49IFBUX0dQUjAgJiYgcmVnYWRkciA8PSBQVF9HUFIxNSkpCi0tCWNvbGxlY3Rf cmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOwot Kwljb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOwot ICAgICAgIGVsc2UKLS0JY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOwot Kwljb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgYnVmKTsKLSAKLSAgICAgICAvKiBXaGVuIGRlYnVn Z2luZyBhIDMyLWJpdCBpbmZlcmlvciBvbiBhIDY0LWJpdCBob3N0LCBtYWtlIHN1cmUKLSAJIHRo ZSAzMS1iaXQgYWRkcmVzc2luZyBtb2RlIGJpdCBpcyBzZXQgaW4gdGhlIFBTVyBtYXNrLiAgKi8K LUBAIC0xMzcsNyArMTM3LDcgQEAgczM5MF9jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAoc3RydWN0 IHJlZwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXMzOTBfc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLCBjb25zdCBjaGFyICpidWYpCi0r czM5MF9zdXBwbHlfcHRyYWNlX3JlZ2lzdGVyIChpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKmJ1ZikK LSB7Ci0gICBpbnQgc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKHJlZ25vKTsKLSAgIGlmIChzaXplIDwg c2l6ZW9mIChsb25nKSkKLUBAIC0xNTIsMTggKzE1MiwxOCBAQCBzMzkwX3N1cHBseV9wdHJhY2Vf cmVnaXN0ZXIgKHN0cnVjdCByZWdjCi0gCX0KLSAgICAgICBlbHNlIGlmIChyZWdhZGRyID09IFBU X1BTV0FERFIKLSAJICAgICAgIHx8IChyZWdhZGRyID49IFBUX0dQUjAgJiYgcmVnYWRkciA8PSBQ VF9HUFIxNSkpCi0tCXN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYgKyBzaXpl b2YgKGxvbmcpIC0gc2l6ZSk7Ci0rCXN1cHBseV9yZWdpc3RlciAocmVnbm8sIGJ1ZiArIHNpemVv ZiAobG9uZykgLSBzaXplKTsKLSAgICAgICBlbHNlCi0tCXN1cHBseV9yZWdpc3RlciAocmVnY2Fj aGUsIHJlZ25vLCBidWYpOwotKwlzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBidWYpOwotICAgICB9 Ci0gICBlbHNlCi0tICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOwot KyAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBidWYpOwotIH0KLSAKLSAvKiBQcm92aWRlIG9u bHkgYSBmaWxsIGZ1bmN0aW9uIGZvciB0aGUgZ2VuZXJhbCByZWdpc3RlciBzZXQuICBwc19sZ2V0 cmVncwotICAgIHdpbGwgdXNlIHRoaXMgZm9yIE5QVEwgc3VwcG9ydC4gICovCi0gCi0tc3RhdGlj IHZvaWQgczM5MF9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQg KmJ1ZikKLStzdGF0aWMgdm9pZCBzMzkwX2ZpbGxfZ3JlZ3NldCAodm9pZCAqYnVmKQotIHsKLSAg IGludCBpOwotIAotQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCBzMzkwX2ZpbGxfZ3Jl Z3NldCAoc3RydWN0IHJlCi0gCSAgfHwgdGhlX2xvd190YXJnZXQucmVnbWFwW2ldID4gUFRfQUNS MTUpCi0gCWNvbnRpbnVlOwotIAotLSAgICAgIHMzOTBfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBpLCAoY2hhciAqKSBidWYKLSsgICAgICBzMzkwX2NvbGxlY3RfcHRyYWNlX3Jl Z2lzdGVyIChpLCAoY2hhciAqKSBidWYKLSAJCQkJICAgICAgICsgdGhlX2xvd190YXJnZXQucmVn bWFwW2ldKTsKLSAgICAgfQotIH0KLUBAIC0xODgsMTIgKzE4OCwxMiBAQCBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzMzkwX2JyZWFrcG9pCi0gI2RlZmluZSBzMzkwX2JyZWFrcG9pbnRfbGVu IDIKLSAKLSBzdGF0aWMgQ09SRV9BRERSCi0tczM5MF9nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUpCi0rczM5MF9nZXRfcGMgKCkKLSB7Ci0gICBpZiAocmVnaXN0ZXJfc2l6ZSAoMCkg PT0gNCkKLSAgICAgewotICAgICAgIHVuc2lnbmVkIGludCBwYzsKLS0gICAgICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicHN3YSIsICZwYyk7Ci0rICAgICAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lICgicHN3YSIsICZwYyk7Ci0gI2lmbmRlZiBfX3MzOTB4X18KLSAgICAg ICBwYyAmPSAweDdmZmZmZmZmOwotICNlbmRpZgotQEAgLTIwMiwxMyArMjAyLDEzIEBAIHMzOTBf Z2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotICAgZWxzZQotICAgICB7Ci0gICAg ICAgdW5zaWduZWQgbG9uZyBwYzsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAicHN3YSIsICZwYyk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi cHN3YSIsICZwYyk7Ci0gICAgICAgcmV0dXJuIHBjOwotICAgICB9Ci0gfQotIAotIHN0YXRpYyB2 b2lkCi0tczM5MF9zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBu ZXdwYykKLStzMzkwX3NldF9wYyAoQ09SRV9BRERSIG5ld3BjKQotIHsKLSAgIGlmIChyZWdpc3Rl cl9zaXplICgwKSA9PSA0KQotICAgICB7Ci1AQCAtMjE2LDEyICsyMTYsMTIgQEAgczM5MF9zZXRf cGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIAotICNpZm5kZWYgX19zMzkweF9fCi0gICAg ICAgcGMgfD0gMHg4MDAwMDAwMDsKLSAjZW5kaWYKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJwc3dhIiwgJnBjKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoInBzd2EiLCAmcGMpOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICB1bnNp Z25lZCBsb25nIHBjID0gbmV3cGM7Ci0tICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAicHN3YSIsICZwYyk7Ci0rICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJw c3dhIiwgJnBjKTsKLSAgICAgfQotIH0KLSAKLUBAIC0yNjgsOCArMjY4LDcgQEAgczM5MF9hcmNo X3NldHVwICh2b2lkKQotICNpZmRlZiBfX3MzOTB4X18KLSAgIHsKLSAgICAgdW5zaWduZWQgaW50 IHBzd207Ci0tICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2Nh Y2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLS0gICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgInBzd20iLCAmcHN3bSk7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAoInBzd20iLCAmcHN3bSk7Ci0gICAgIGlmIChwc3dtICYgMSkKLSAgICAgICBpbml0X3JlZ2lz dGVyc19zMzkweF9saW51eDY0ICgpOwotIAotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1zaC1s b3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNl cnZlci9saW51eC1zaC1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAot QEAgLTU5LDE4ICs1OSwxOCBAQCBzaF9jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykK LSB9Ci0gCi0gc3RhdGljIENPUkVfQUREUgotLXNoX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSkKLStzaF9nZXRfcGMgKCkKLSB7Ci0gICB1bnNpZ25lZCBsb25nIHBjOwotLSAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKLSsgIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKLSAgIHJldHVybiBwYzsKLSB9Ci0gCi0gc3Rh dGljIHZvaWQKLS1zaF9zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQURE UiBwYykKLStzaF9zZXRfcGMgKENPUkVfQUREUiBwYykKLSB7Ci0gICB1bnNpZ25lZCBsb25nIG5l d3BjID0gcGM7Ci0tICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZu ZXdwYyk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKLSB9Ci0g Ci0gLyogQ29ycmVjdCBpbiBlaXRoZXIgZW5kaWFubmVzcywgb2J2aW91c2x5LiAgKi8KLUBAIC05 NCwxMyArOTQsMTMgQEAgc2hfYnJlYWtwb2ludF9hdCAoQ09SRV9BRERSIHdoZXJlKQotIC8qIFBy b3ZpZGUgb25seSBhIGZpbGwgZnVuY3Rpb24gZm9yIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHNldC4g IHBzX2xnZXRyZWdzCi0gICAgd2lsbCB1c2UgdGhpcyBmb3IgTlBUTCBzdXBwb3J0LiAgKi8KLSAK LS1zdGF0aWMgdm9pZCBzaF9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IHZvaWQgKmJ1ZikKLStzdGF0aWMgdm9pZCBzaF9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1ZikKLSB7 Ci0gICBpbnQgaTsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCAyMzsgaSsrKQotICAgICBpZiAoc2hf cmVnbWFwW2ldICE9IC0xKQotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAo Y2hhciAqKSBidWYgKyBzaF9yZWdtYXBbaV0pOwotKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGks IChjaGFyICopIGJ1ZiArIHNoX3JlZ21hcFtpXSk7Ci0gfQotIAotIHN0cnVjdCByZWdzZXRfaW5m byB0YXJnZXRfcmVnc2V0c1tdID0gewotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1zcGFyYy1s b3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNl cnZlci9saW51eC1zcGFyYy1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEw MAotQEAgLTExMyw3ICsxMTMsNyBAQCBzcGFyY19jYW5ub3RfZmV0Y2hfcmVnaXN0ZXIgKGludCBy ZWdubykKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1zcGFyY19maWxsX2dyZWdzZXRfdG9fc3RhY2sg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLStzcGFyY19maWxs X2dyZWdzZXRfdG9fc3RhY2sgKGNvbnN0IHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAgIENP UkVfQUREUiBhZGRyID0gMDsKLUBAIC0xMjgsMTQgKzEyOCwxNCBAQCBzcGFyY19maWxsX2dyZWdz ZXRfdG9fc3RhY2sgKHN0cnVjdCByZWdjCi0gCi0gICBmb3IgKGkgPSBsMF9yZWdubzsgaSA8PSBp N19yZWdubzsgaSsrKQotICAgICB7Ci0tICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUs IGksIHRtcF9yZWdfYnVmKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyIChpLCB0bXBfcmVnX2J1 Zik7Ci0gICAgICAgKCp0aGVfdGFyZ2V0LT53cml0ZV9tZW1vcnkpIChhZGRyLCB0bXBfcmVnX2J1 Ziwgc2l6ZW9mKHRtcF9yZWdfYnVmKSk7Ci0gICAgICAgYWRkciArPSBzaXplb2YodG1wX3JlZ19i dWYpOwotICAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tc3BhcmNfZmlsbF9ncmVnc2V0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rc3BhcmNfZmlsbF9ncmVnc2V0 ICh2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gICBpbnQgcmFuZ2U7Ci1AQCAtMTQzLDI1ICsx NDMsMjUgQEAgc3BhcmNfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZwotICAgZm9y IChyYW5nZSA9IDA7IHJhbmdlIDwgTl9HUkVHU19SQU5HRVM7IHJhbmdlKyspCi0gICAgIGZvciAo aSA9IGdyZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fc3RhcnQ7IGkgPD0gZ3JlZ3NfcmFuZ2VzW3Jh bmdlXS5yZWdub19lbmQ7IGkrKykKLSAgICAgICBpZiAoc3BhcmNfcmVnbWFwW2ldICE9IC0xKQot LQljb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBzcGFyY19y ZWdtYXBbaV0pOwotKwljb2xsZWN0X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHNwYXJj X3JlZ21hcFtpXSk7Ci0gCi0tICBzcGFyY19maWxsX2dyZWdzZXRfdG9fc3RhY2sgKHJlZ2NhY2hl LCBidWYpOwotKyAgc3BhcmNfZmlsbF9ncmVnc2V0X3RvX3N0YWNrIChidWYpOwotIH0KLSAKLSBz dGF0aWMgdm9pZAotLXNwYXJjX2ZpbGxfZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIHZvaWQgKmJ1ZikKLStzcGFyY19maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCi0gewotICAg aW50IGk7Ci0gICBpbnQgcmFuZ2U7Ci0gCi0gICBmb3IgKHJhbmdlID0gMDsgcmFuZ2UgPCBOX0ZQ UkVHU19SQU5HRVM7IHJhbmdlKyspCi0gICAgIGZvciAoaSA9IGZwcmVnc19yYW5nZXNbcmFuZ2Vd LnJlZ25vX3N0YXJ0OyBpIDw9IGZwcmVnc19yYW5nZXNbcmFuZ2VdLnJlZ25vX2VuZDsgaSsrKQot LSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoKGNoYXIgKikgYnVmKSArIHNw YXJjX3JlZ21hcFtpXSk7Ci0rICAgICAgY29sbGVjdF9yZWdpc3RlciAoaSwgKChjaGFyICopIGJ1 ZikgKyBzcGFyY19yZWdtYXBbaV0pOwotIAotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXNwYXJjX3N0 b3JlX2dyZWdzZXRfZnJvbV9zdGFjayAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qg dm9pZCAqYnVmKQotK3NwYXJjX3N0b3JlX2dyZWdzZXRfZnJvbV9zdGFjayAoY29uc3Qgdm9pZCAq YnVmKQotIHsKLSAgIGludCBpOwotICAgQ09SRV9BRERSIGFkZHIgPSAwOwotQEAgLTE3NywxMyAr MTc3LDEzIEBAIHNwYXJjX3N0b3JlX2dyZWdzZXRfZnJvbV9zdGFjayAoc3RydWN0IHIKLSAgIGZv ciAoaSA9IGwwX3JlZ25vOyBpIDw9IGk3X3JlZ25vOyBpKyspCi0gICAgIHsKLSAgICAgICAoKnRo ZV90YXJnZXQtPnJlYWRfbWVtb3J5KSAoYWRkciwgdG1wX3JlZ19idWYsIHNpemVvZih0bXBfcmVn X2J1ZikpOwotLSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksIHRtcF9yZWdfYnVm KTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXIgKGksIHRtcF9yZWdfYnVmKTsKLSAgICAgICBhZGRy ICs9IHNpemVvZih0bXBfcmVnX2J1Zik7Ci0gICAgIH0KLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1z cGFyY19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lk ICpidWYpCi0rc3BhcmNfc3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIGlu dCBpOwotICAgY2hhciB6ZXJvYnVmWzhdOwotQEAgLTE5NCwzMyArMTk0LDMxIEBAIHNwYXJjX3N0 b3JlX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmUKLSAgIGZvciAocmFuZ2UgPSAwOyByYW5n ZSA8IE5fR1JFR1NfUkFOR0VTOyByYW5nZSsrKQotICAgICBmb3IgKGkgPSBncmVnc19yYW5nZXNb cmFuZ2VdLnJlZ25vX3N0YXJ0OyBpIDw9IGdyZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fZW5kOyBp KyspCi0gICAgICAgaWYgKHNwYXJjX3JlZ21hcFtpXSAhPSAtMSkKLS0Jc3VwcGx5X3JlZ2lzdGVy IChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBzcGFyY19yZWdtYXBbaV0pOwotKwlzdXBw bHlfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFwW2ldKTsKLSAgICAg ICBlbHNlCi0tCXN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksIHplcm9idWYpOwotKwlzdXBw bHlfcmVnaXN0ZXIgKGksIHplcm9idWYpOwotIAotLSAgc3BhcmNfc3RvcmVfZ3JlZ3NldF9mcm9t X3N0YWNrIChyZWdjYWNoZSwgYnVmKTsKLSsgIHNwYXJjX3N0b3JlX2dyZWdzZXRfZnJvbV9zdGFj ayAoYnVmKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1zcGFyY19zdG9yZV9mcHJlZ3NldCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQotK3NwYXJjX3N0b3JlX2Zw cmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0gewotICAgaW50IGk7Ci0gICBpbnQgcmFuZ2U7Ci0g Ci0gICBmb3IgKHJhbmdlID0gMDsgcmFuZ2UgPCBOX0ZQUkVHU19SQU5HRVM7IHJhbmdlKyspCi0t ICAgIGZvciAoaSA9IGZwcmVnc19yYW5nZXNbcmFuZ2VdLnJlZ25vX3N0YXJ0OwotLQkgaSA8PSBm cHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19lbmQ7Ci0tCSBpKyspCi0tICAgICAgc3VwcGx5X3Jl Z2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBzcGFyY19yZWdtYXBbaV0pOwot KyAgICBmb3IgKGkgPSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19zdGFydDsgaSA8PSBmcHJl Z3NfcmFuZ2VzW3JhbmdlXS5yZWdub19lbmQ7IGkrKykKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXIg KGksICgoY2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFwW2ldKTsKLSB9Ci0gCi0gZXh0ZXJuIGlu dCBkZWJ1Z190aHJlYWRzOwotIAotIHN0YXRpYyBDT1JFX0FERFIKLS1zcGFyY19nZXRfcGMgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCi0rc3BhcmNfZ2V0X3BjICgpCi0gewotLSAgdW5zaWdu ZWQgbG9uZyBwYzsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIs ICZwYyk7Ci0rICBDT1JFX0FERFIgcGM7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJw YyIsICZwYyk7Ci0gICBpZiAoZGVidWdfdGhyZWFkcykKLSAgICAgZnByaW50ZiAoc3RkZXJyLCAi c3RvcCBwYyBpcyAlMDhseFxuIiwgcGMpOwotICAgcmV0dXJuIHBjOwotQEAgLTI0OSwxMiArMjQ3 LDExIEBAIHNwYXJjX2JyZWFrcG9pbnRfYXQgKENPUkVfQUREUiB3aGVyZSkKLSAgICBpcyBvdXRz aWRlIG9mIHRoZSBmdW5jdGlvbi4gIFNvIHJhdGhlciB0aGFuIGltcG9ydGluZyBzb2Z0d2FyZSBz aW5nbGUtc3RlcCwKLSAgICB3ZSBjYW4ganVzdCBydW4gdW50aWwgZXhpdC4gICovCi0gc3RhdGlj IENPUkVfQUREUgotLXNwYXJjX3JlaW5zZXJ0X2FkZHIgKHZvaWQpCi0rc3BhcmNfcmVpbnNlcnRf YWRkciAoKQotIHsKLS0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3Jl Z2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLSAgIENPUkVfQUREUiBscjsKLSAgIC8qIE83 IGlzIHRoZSBlcXVpdmFsZW50IHRvIHRoZSAnbHInIG9mIG90aGVyIGFyY2hzLiAgKi8KLS0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJvNyIsICZscik7Ci0rICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKCJvNyIsICZscik7Ci0gICByZXR1cm4gbHI7Ci0gfQotIAotLS0t IC4vZ2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAw MDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCTIwMTAtMDEt MjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCi1AQCAtMTczLDcgKzE3Myw3IEBAIGkzODZfY2Fu bm90X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0teDg2 X2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQotK3g4 Nl9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gICBpbnQgaTsKLSAKLUBAIC0xODIsMjAg KzE4MiwxOSBAQCB4ODZfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhCi0gICAg IHsKLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgWDg2XzY0X05VTV9SRUdTOyBpKyspCi0gCWlmICh4 ODZfNjRfcmVnbWFwW2ldICE9IC0xKQotLQkgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBp LCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9yZWdtYXBbaV0pOwotKwkgIGNvbGxlY3RfcmVnaXN0 ZXIgKGksICgoY2hhciAqKSBidWYpICsgeDg2XzY0X3JlZ21hcFtpXSk7Ci0gICAgICAgcmV0dXJu OwotICAgICB9Ci0gI2VuZGlmCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwgSTM4Nl9OVU1fUkVHUzsg aSsrKQotLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1Zikg KyBpMzg2X3JlZ21hcFtpXSk7Ci0rICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGksICgoY2hhciAqKSBi dWYpICsgaTM4Nl9yZWdtYXBbaV0pOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgIm9yaWdfZWF4IiwKLS0JCQkgICAgKChjaGFyICopIGJ1ZikgKyBPUklHX0VBWCAq IDQpOwotKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgib3JpZ19lYXgiLCAoKGNoYXIgKikg YnVmKSArIE9SSUdfRUFYICogNCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0teDg2X3N0b3JlX2dy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLSt4ODZf c3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQotIHsKLSAgIGludCBpOwotIAotQEAgLTIw NCw1MCArMjAzLDQ5IEBAIHg4Nl9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2MK LSAgICAgewotICAgICAgIGZvciAoaSA9IDA7IGkgPCBYODZfNjRfTlVNX1JFR1M7IGkrKykKLSAJ aWYgKHg4Nl82NF9yZWdtYXBbaV0gIT0gLTEpCi0tCSAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNo ZSwgaSwgKChjaGFyICopIGJ1ZikgKyB4ODZfNjRfcmVnbWFwW2ldKTsKLSsJICBzdXBwbHlfcmVn aXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgeDg2XzY0X3JlZ21hcFtpXSk7Ci0gICAgICAgcmV0 dXJuOwotICAgICB9Ci0gI2VuZGlmCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwgSTM4Nl9OVU1fUkVH UzsgaSsrKQotLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoKGNoYXIgKikgYnVm KSArIGkzODZfcmVnbWFwW2ldKTsKLSsgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikg YnVmKSArIGkzODZfcmVnbWFwW2ldKTsKLSAKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgIm9yaWdfZWF4IiwKLS0JCQkgICAoKGNoYXIgKikgYnVmKSArIE9SSUdfRUFYICog NCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoIm9yaWdfZWF4IiwgKChjaGFyICopIGJ1 ZikgKyBPUklHX0VBWCAqIDQpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXg4Nl9maWxsX2ZwcmVn c2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0reDg2X2ZpbGxfZnBy ZWdzZXQgKHZvaWQgKmJ1ZikKLSB7Ci0gI2lmZGVmIF9feDg2XzY0X18KLS0gIGkzODdfY2FjaGVf dG9fZnhzYXZlIChyZWdjYWNoZSwgYnVmKTsKLSsgIGkzODdfY2FjaGVfdG9fZnhzYXZlIChidWYp OwotICNlbHNlCi0tICBpMzg3X2NhY2hlX3RvX2ZzYXZlIChyZWdjYWNoZSwgYnVmKTsKLSsgIGkz ODdfY2FjaGVfdG9fZnNhdmUgKGJ1Zik7Ci0gI2VuZGlmCi0gfQotIAotIHN0YXRpYyB2b2lkCi0t eDg2X3N0b3JlX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lk ICpidWYpCi0reDg2X3N0b3JlX2ZwcmVnc2V0IChjb25zdCB2b2lkICpidWYpCi0gewotICNpZmRl ZiBfX3g4Nl82NF9fCi0tICBpMzg3X2Z4c2F2ZV90b19jYWNoZSAocmVnY2FjaGUsIGJ1Zik7Ci0r ICBpMzg3X2Z4c2F2ZV90b19jYWNoZSAoYnVmKTsKLSAjZWxzZQotLSAgaTM4N19mc2F2ZV90b19j YWNoZSAocmVnY2FjaGUsIGJ1Zik7Ci0rICBpMzg3X2ZzYXZlX3RvX2NhY2hlIChidWYpOwotICNl bmRpZgotIH0KLSAKLSAjaWZuZGVmIF9feDg2XzY0X18KLSAKLSBzdGF0aWMgdm9pZAotLXg4Nl9m aWxsX2ZweHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQotK3g4 Nl9maWxsX2ZweHJlZ3NldCAodm9pZCAqYnVmKQotIHsKLS0gIGkzODdfY2FjaGVfdG9fZnhzYXZl IChyZWdjYWNoZSwgYnVmKTsKLSsgIGkzODdfY2FjaGVfdG9fZnhzYXZlIChidWYpOwotIH0KLSAK LSBzdGF0aWMgdm9pZAotLXg4Nl9zdG9yZV9mcHhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLSt4ODZfc3RvcmVfZnB4cmVnc2V0IChjb25zdCB2b2lk ICpidWYpCi0gewotLSAgaTM4N19meHNhdmVfdG9fY2FjaGUgKHJlZ2NhY2hlLCBidWYpOwotKyAg aTM4N19meHNhdmVfdG9fY2FjaGUgKGJ1Zik7Ci0gfQotIAotICNlbmRpZgotQEAgLTI4MiwzOCAr MjgwLDM4IEBAIHN0cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1tdID0KLSB9OwotIAot IHN0YXRpYyBDT1JFX0FERFIKLS14ODZfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl KQotK3g4Nl9nZXRfcGMgKHZvaWQpCi0gewotICAgaW50IHVzZV82NGJpdCA9IHJlZ2lzdGVyX3Np emUgKDApID09IDg7Ci0gCi0gICBpZiAodXNlXzY0Yml0KQotICAgICB7Ci0gICAgICAgdW5zaWdu ZWQgbG9uZyBwYzsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi cmlwIiwgJnBjKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJyaXAiLCAmcGMp OwotICAgICAgIHJldHVybiAoQ09SRV9BRERSKSBwYzsKLSAgICAgfQotICAgZWxzZQotICAgICB7 Ci0gICAgICAgdW5zaWduZWQgaW50IHBjOwotLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJlaXAiLCAmcGMpOwotKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAoImVpcCIsICZwYyk7Ci0gICAgICAgcmV0dXJuIChDT1JFX0FERFIpIHBjOwotICAgICB9Ci0g fQotIAotIHN0YXRpYyB2b2lkCi0teDg2X3NldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgQ09SRV9BRERSIHBjKQotK3g4Nl9zZXRfcGMgKENPUkVfQUREUiBwYykKLSB7Ci0gICBpbnQg dXNlXzY0Yml0ID0gcmVnaXN0ZXJfc2l6ZSAoMCkgPT0gODsKLSAKLSAgIGlmICh1c2VfNjRiaXQp Ci0gICAgIHsKLSAgICAgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7Ci0tICAgICAgc3VwcGx5 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicmlwIiwgJm5ld3BjKTsKLSsgICAgICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAoInJpcCIsICZuZXdwYyk7Ci0gICAgIH0KLSAgIGVsc2UKLSAg ICAgewotICAgICAgIHVuc2lnbmVkIGludCBuZXdwYyA9IHBjOwotLSAgICAgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImVpcCIsICZuZXdwYyk7Ci0rICAgICAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJlaXAiLCAmbmV3cGMpOwotICAgICB9Ci0gfQotIAwKLS0tLSAuL2dk Yi9nZGJzZXJ2ZXIvbGludXgteHRlbnNhLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAw MDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXh0ZW5zYS1sb3cuYwkyMDEwLTAx LTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTM3LDcgKzM3LDcgQEAgZW51bSByZWdu dW0gewotIH07Ci0gCi0gc3RhdGljIHZvaWQKLS14dGVuc2FfZmlsbF9ncmVnc2V0IChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0reHRlbnNhX2ZpbGxfZ3JlZ3NldCAodm9p ZCAqYnVmKQotIHsKLSAgIGVsZl9ncmVnX3QqIHJzZXQgPSAoZWxmX2dyZWdfdCopYnVmOwotICAg aW50IGFyMF9yZWdudW07Ci1AQCAtNTEsMjcgKzUxLDI3IEBAIHh0ZW5zYV9maWxsX2dyZWdzZXQg KHN0cnVjdCByZWdjYWNoZSAqcmUKLSAKLSAgIGZvciAoaSA9IGFyMF9yZWdudW07IGkgPCBhcjBf cmVnbnVtICsgWENIQUxfTlVNX0FSRUdTOyBpKyspCi0gICAgIHsKLS0gICAgICBjb2xsZWN0X3Jl Z2lzdGVyIChyZWdjYWNoZSwgaSwgcHRyKTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyIChpLCBw dHIpOwotICAgICAgIHB0ciArPSByZWdpc3Rlcl9zaXplKGkpOwotICAgICB9Ci0gCi0gICAvKiBM b29wIHJlZ2lzdGVycywgaWYgaGFyZHdhcmUgaGFzIGl0LiAgKi8KLSAKLSAjaWYgWENIQUxfSEFW RV9MT09QCi0tICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAibGJlZyIsIChj aGFyKikmcnNldFtSX0xCRUddKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJsZW5kIiwgKGNoYXIqKSZyc2V0W1JfTEVORF0pOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgImxjb3VudCIsIChjaGFyKikmcnNldFtSX0xDT1VOVF0pOwotKyAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgibGJlZyIsIChjaGFyKikmcnNldFtSX0xCRUddKTsK LSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImxlbmQiLCAoY2hhciopJnJzZXRbUl9MRU5E XSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJsY291bnQiLCAoY2hhciopJnJzZXRb Ul9MQ09VTlRdKTsKLSAjZW5kaWYKLSAKLS0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVn Y2FjaGUsICJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJdKTsKLS0gIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJwYyIsIChjaGFyKikmcnNldFtSX1BDXSk7Ci0tICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicHMiLCAoY2hhciopJnJzZXRbUl9QU10pOwot LSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIndpbmRvd2Jhc2UiLCAoY2hh ciopJnJzZXRbUl9XQl0pOwotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg IndpbmRvd3N0YXJ0IiwgKGNoYXIqKSZyc2V0W1JfV1NdKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAoInNhciIsIChjaGFyKikmcnNldFtSX1NBUl0pOwotKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgicGMiLCAoY2hhciopJnJzZXRbUl9QQ10pOwotKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgicHMiLCAoY2hhciopJnJzZXRbUl9QU10pOwotKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgid2luZG93YmFzZSIsIChjaGFyKikmcnNldFtSX1dCXSk7Ci0rICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKCJ3aW5kb3dzdGFydCIsIChjaGFyKikmcnNldFtSX1dTXSk7Ci0g fQotIAotIHN0YXRpYyB2b2lkCi0teHRlbnNhX3N0b3JlX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLSt4dGVuc2Ffc3RvcmVfZ3JlZ3NldCAoY29u c3Qgdm9pZCAqYnVmKQotIHsKLSAgIGNvbnN0IGVsZl9ncmVnX3QqIHJzZXQgPSAoY29uc3QgZWxm X2dyZWdfdCopYnVmOwotICAgaW50IGFyMF9yZWdudW07Ci1AQCAtODUsNDcgKzg1LDQ3IEBAIHh0 ZW5zYV9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnIKLSAKLSAgIGZvciAoaSA9IGFy MF9yZWdudW07IGkgPCBhcjBfcmVnbnVtICsgWENIQUxfTlVNX0FSRUdTOyBpKyspCi0gICAgIHsK LS0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCBwdHIpOwotKyAgICAgIHN1cHBs eV9yZWdpc3RlciAoaSwgcHRyKTsKLSAgICAgICBwdHIgKz0gcmVnaXN0ZXJfc2l6ZShpKTsKLSAg ICAgfQotIAotICAgLyogTG9vcCByZWdpc3RlcnMsIGlmIGhhcmR3YXJlIGhhcyBpdC4gICovCi0g Ci0gI2lmIFhDSEFMX0hBVkVfTE9PUAotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAibGJlZyIsIChjaGFyKikmcnNldFtSX0xCRUddKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lIChyZWdjYWNoZSwgImxlbmQiLCAoY2hhciopJnJzZXRbUl9MRU5EXSk7Ci0tICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJsY291bnQiLCAoY2hhciopJnJzZXRbUl9M Q09VTlRdKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgibGJlZyIsIChjaGFyKikmcnNl dFtSX0xCRUddKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgibGVuZCIsIChjaGFyKikm cnNldFtSX0xFTkRdKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgibGNvdW50IiwgKGNo YXIqKSZyc2V0W1JfTENPVU5UXSk7Ci0gI2VuZGlmCi0gCi0tICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJdKTsKLS0gIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgKGNoYXIqKSZyc2V0W1JfUENdKTsKLS0g IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzIiwgKGNoYXIqKSZyc2V0W1Jf UFNdKTsKLS0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIndpbmRvd2Jhc2Ui LCAoY2hhciopJnJzZXRbUl9XQl0pOwotLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAid2luZG93c3RhcnQiLCAoY2hhciopJnJzZXRbUl9XU10pOwotKyAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJdKTsKLSsgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lICgicGMiLCAoY2hhciopJnJzZXRbUl9QQ10pOwotKyAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJwcyIsIChjaGFyKikmcnNldFtSX1BTXSk7Ci0rICBzdXBwbHlfcmVnaXN0 ZXJfYnlfbmFtZSAoIndpbmRvd2Jhc2UiLCAoY2hhciopJnJzZXRbUl9XQl0pOwotKyAgc3VwcGx5 X3JlZ2lzdGVyX2J5X25hbWUgKCJ3aW5kb3dzdGFydCIsIChjaGFyKikmcnNldFtSX1dTXSk7Ci0g fQotIAotIC8qIFh0ZW5zYSBHTlUvTGludXggUFRSQUNFIGludGVyZmFjZSBpbmNsdWRlcyBleHRl bmRlZCByZWdpc3RlciBzZXQuICAqLwotIAotIHN0YXRpYyB2b2lkCi0teHRlbnNhX2ZpbGxfeHRy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1ZikKLSt4dGVuc2FfZmls bF94dHJlZ3NldCAodm9pZCAqYnVmKQotIHsKLSAgIGNvbnN0IHh0ZW5zYV9yZWd0YWJsZV90ICpw dHI7Ci0gCi0gICBmb3IgKHB0ciA9IHh0ZW5zYV9yZWdtYXBfdGFibGU7IHB0ci0+bmFtZTsgcHRy KyspCi0gICAgIHsKLS0gICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCBw dHItPm5hbWUsCi0rICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChwdHItPm5hbWUsCi0g CQkJCShjaGFyKilidWYgKyBwdHItPnB0cmFjZV9vZmZzZXQpOwotICAgICB9Ci0gfQotIAotIHN0 YXRpYyB2b2lkCi0teHRlbnNhX3N0b3JlX3h0cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBjb25zdCB2b2lkICpidWYpCi0reHRlbnNhX3N0b3JlX3h0cmVnc2V0IChjb25zdCB2b2lk ICpidWYpCi0gewotICAgY29uc3QgeHRlbnNhX3JlZ3RhYmxlX3QgKnB0cjsKLSAKLSAgIGZvciAo cHRyID0geHRlbnNhX3JlZ21hcF90YWJsZTsgcHRyLT5uYW1lOyBwdHIrKykKLSAgICAgewotLSAg ICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgcHRyLT5uYW1lLAotKyAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChwdHItPm5hbWUsCi0gCQkJCShjaGFyKilidWYgKyBw dHItPnB0cmFjZV9vZmZzZXQpOwotICAgICB9Ci0gfQotQEAgLTE1MCwxOSArMTUwLDE5IEBAIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHh0ZW5zYV9icmVha3AKLSAjZGVmaW5lIHh0ZW5zYV9i cmVha3BvaW50X2xlbiAyCi0gCi0gc3RhdGljIENPUkVfQUREUgotLXh0ZW5zYV9nZXRfcGMgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCi0reHRlbnNhX2dldF9wYyAodm9pZCkKLSB7Ci0gICB1 bnNpZ25lZCBsb25nIHBjOwotIAotLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNo ZSwgInBjIiwgJnBjKTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsK LSAgIHJldHVybiBwYzsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS14dGVuc2Ffc2V0X3BjIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCi0reHRlbnNhX3NldF9wYyAoQ09S RV9BRERSIHBjKQotIHsKLSAgIHVuc2lnbmVkIGxvbmcgbmV3cGMgPSBwYzsKLS0gIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKLSsgIHN1cHBseV9yZWdp c3Rlcl9ieV9uYW1lICgicGMiLCAmbmV3cGMpOwotIH0KLSAKLSBzdGF0aWMgaW50Ci0tLS0gLi9n ZGIvZ2Ric2VydmVyL250by1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEw MAotKysrIC4vZ2RiL2dkYnNlcnZlci9udG8tbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAw MDAwMDAgKzAxMDAKLUBAIC02MDEsNyArNjAxLDcgQEAgbnRvX3dhaXQgKHB0aWRfdCBwdGlkLAot ICAgIElmIFJFR05PIGlzIC0xLCBmZXRjaCBhbGwgcmVnaXN0ZXJzLCBvciBSRUdOTyByZWdpc3Rl ciBvbmx5IG90aGVyd2lzZS4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1udG9fZmV0Y2hfcmVnaXN0 ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCi0rbnRvX2ZldGNoX3Jl Z2lzdGVycyAoaW50IHJlZ25vKQotIHsKLSAgIGludCByZWdzaXplOwotICAgcHJvY2ZzX2dyZWcg Z3JlZzsKLUBAIC02MjksNyArNjI5LDcgQEAgbnRvX2ZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJl Z2NhY2hlICpyZQotIAkgICAgewotIAkgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJv ZmZzZXQKLSAJCT0gdGhlX2xvd190YXJnZXQucmVnaXN0ZXJfb2Zmc2V0IChyZWdubyk7Ci0tCSAg ICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCAoKGNoYXIgKikmZ3JlZykgKyBy ZWdpc3Rlcm9mZnNldCk7Ci0rCSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVnbm8sICgoY2hhciAq KSZncmVnKSArIHJlZ2lzdGVyb2Zmc2V0KTsKLSAJICAgIH0KLSAJfQotICAgICAgIGVsc2UKLUBA IC02MzgsNyArNjM4LDcgQEAgbnRvX2ZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpy ZQotIAkgICAgPSB0aGVfbG93X3RhcmdldC5yZWdpc3Rlcl9vZmZzZXQgKHJlZ25vKTsKLSAJICBp ZiAocmVnaXN0ZXJvZmZzZXQgPT0gLTEpCi0gCSAgICByZXR1cm47Ci0tCSAgc3VwcGx5X3JlZ2lz dGVyIChyZWdjYWNoZSwgcmVnbm8sICgoY2hhciAqKSZncmVnKSArIHJlZ2lzdGVyb2Zmc2V0KTsK LSsJICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCAoKGNoYXIgKikmZ3JlZykgKyByZWdpc3Rlcm9m ZnNldCk7Ci0gCX0KLSAgICAgfQotICAgZWxzZQotQEAgLTY0OSw3ICs2NDksNyBAQCBudG9fZmV0 Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gICAgV2UgYWx3YXlzIHN0b3JlIGFs bCByZWdpc3RlcnMsIHJlZ2FyZGxlc3Mgb2YgUkVHTk8uICAqLwotIAotIHN0YXRpYyB2b2lkCi0t bnRvX3N0b3JlX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25v KQotK250b19zdG9yZV9yZWdpc3RlcnMgKGludCByZWdubykKLSB7Ci0gICBwcm9jZnNfZ3JlZyBn cmVnOwotICAgaW50IGVycjsKLUBAIC02NzEsNyArNjcxLDcgQEAgbnRvX3N0b3JlX3JlZ2lzdGVy cyAoc3RydWN0IHJlZ2NhY2hlICpyZQotICAgICB7Ci0gICAgICAgY29uc3QgdW5zaWduZWQgaW50 IHJlZ29mZnNldAotIAk9IHRoZV9sb3dfdGFyZ2V0LnJlZ2lzdGVyX29mZnNldCAocmVnbm8pOwot LSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgKChjaGFyICopJmdyZWcp ICsgcmVnb2Zmc2V0KTsKLSsgICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgKChjaGFyICop JmdyZWcpICsgcmVnb2Zmc2V0KTsKLSAgICAgfQotICAgZXJyID0gZGV2Y3RsIChudG9faW5mZXJp b3IuY3RsX2ZkLCBEQ01EX1BST0NfU0VUR1JFRywgJmdyZWcsIHNpemVvZiAoZ3JlZyksCi0gCQkw KTsKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvcHJvYy1zZXJ2aWNlLmMJMjAxMC0wMS0yMCAyMzo1NToz OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvcHJvYy1zZXJ2aWNlLmMJMjAx MC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMDEsNyArMTAxLDYgQEAgcHNf bGdldHJlZ3MgKGdkYl9wc19wcm9jaGFuZGxlX3QgcGgsIGx3cAotICNpZmRlZiBIQVZFX1JFR1NF VFMKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHdwOwotICAgc3RydWN0IHRocmVhZF9pbmZvICpyZWdf aW5mZXJpb3IsICpzYXZlX2luZmVyaW9yOwotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsK LSAKLSAgIGx3cCA9IGZpbmRfbHdwX3BpZCAocGlkX3RvX3B0aWQgKGx3cGlkKSk7Ci0gICBpZiAo bHdwID09IE5VTEwpCi1AQCAtMTEwLDkgKzEwOSw5IEBAIHBzX2xnZXRyZWdzIChnZGJfcHNfcHJv Y2hhbmRsZV90IHBoLCBsd3AKLSAgIHJlZ19pbmZlcmlvciA9IGdldF9sd3BfdGhyZWFkIChsd3Ap OwotICAgc2F2ZV9pbmZlcmlvciA9IGN1cnJlbnRfaW5mZXJpb3I7Ci0gICBjdXJyZW50X2luZmVy aW9yID0gcmVnX2luZmVyaW9yOwotLSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChj dXJyZW50X2luZmVyaW9yLCAxKTsKLS0gIHRoZV90YXJnZXQtPmZldGNoX3JlZ2lzdGVycyAocmVn Y2FjaGUsIC0xKTsKLS0gIGdyZWdzZXRfaW5mbyAoKS0+ZmlsbF9mdW5jdGlvbiAocmVnY2FjaGUs IGdyZWdzZXQpOwotKwotKyAgdGhlX3RhcmdldC0+ZmV0Y2hfcmVnaXN0ZXJzICgtMSk7Ci0rICBn cmVnc2V0X2luZm8gKCktPmZpbGxfZnVuY3Rpb24gKGdyZWdzZXQpOwotIAotICAgY3VycmVudF9p bmZlcmlvciA9IHNhdmVfaW5mZXJpb3I7Ci0gICByZXR1cm4gUFNfT0s7Ci0tLS0gLi9nZGIvZ2Ri c2VydmVyL3JlZ2NhY2hlLmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi9nZGJzZXJ2ZXIvcmVnY2FjaGUuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAw MCArMDEwMAotQEAgLTIzLDYgKzIzLDE2IEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNs dWRlIDxzdHJpbmcuaD4KLSAKLSsvKiBUaGUgcHJpdmF0ZSBkYXRhIGZvciB0aGUgcmVnaXN0ZXIg Y2FjaGUuICBOb3RlIHRoYXQgd2UgaGF2ZSBvbmUKLSsgICBwZXIgaW5mZXJpb3I7IHRoaXMgaXMg cHJpbWFyaWx5IGZvciBzaW1wbGljaXR5LCBhcyB0aGUgcGVyZm9ybWFuY2UKLSsgICBiZW5lZml0 IGlzIG1pbmltYWwuICAqLwotKwotK3N0cnVjdCBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhCi0rewot KyAgaW50IHJlZ2lzdGVyc192YWxpZDsKLSsgIHVuc2lnbmVkIGNoYXIgKnJlZ2lzdGVyczsKLSt9 OwotKwotIHN0YXRpYyBpbnQgcmVnaXN0ZXJfYnl0ZXM7Ci0gCi0gc3RhdGljIHN0cnVjdCByZWcg KnJlZ19kZWZzOwotQEAgLTMwLDIzICs0MCwyMCBAQCBzdGF0aWMgaW50IG51bV9yZWdpc3RlcnM7 Ci0gCi0gY29uc3QgY2hhciAqKmdkYnNlcnZlcl9leHBlZGl0ZV9yZWdzOwotIAotLXN0cnVjdCBy ZWdjYWNoZSAqCi0tZ2V0X3RocmVhZF9yZWdjYWNoZSAoc3RydWN0IHRocmVhZF9pbmZvICp0aHJl YWQsIGludCBmZXRjaCkKLStzdGF0aWMgc3RydWN0IGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKgot K2dldF9yZWdjYWNoZSAoc3RydWN0IHRocmVhZF9pbmZvICppbmYsIGludCBmZXRjaCkKLSB7Ci0t ICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotKyAgc3RydWN0IGluZmVyaW9yX3JlZ2NhY2hl X2RhdGEgKnJlZ2NhY2hlOwotIAotLSAgcmVnY2FjaGUgPSAoc3RydWN0IHJlZ2NhY2hlICopIGlu ZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCk7Ci0rICByZWdjYWNoZSA9IChzdHJ1Y3QgaW5m ZXJpb3JfcmVnY2FjaGVfZGF0YSAqKSBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhIChpbmYpOwotIAot ICAgaWYgKHJlZ2NhY2hlID09IE5VTEwpCi0gICAgIGZhdGFsICgibm8gcmVnaXN0ZXIgY2FjaGUi KTsKLSAKLSsgIC8qIEZJWE1FIC0gZmV0Y2ggcmVnaXN0ZXJzIGZvciBJTkYgKi8KLSAgIGlmIChm ZXRjaCAmJiByZWdjYWNoZS0+cmVnaXN0ZXJzX3ZhbGlkID09IDApCi0gICAgIHsKLS0gICAgICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yID0gY3VycmVudF9pbmZlcmlvcjsKLS0K LS0gICAgICBjdXJyZW50X2luZmVyaW9yID0gdGhyZWFkOwotLSAgICAgIGZldGNoX2luZmVyaW9y X3JlZ2lzdGVycyAocmVnY2FjaGUsIC0xKTsKLS0gICAgICBjdXJyZW50X2luZmVyaW9yID0gc2F2 ZWRfaW5mZXJpb3I7Ci0rICAgICAgZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzICgtMSk7Ci0gICAg ICAgcmVnY2FjaGUtPnJlZ2lzdGVyc192YWxpZCA9IDE7Ci0gICAgIH0KLSAKLUBAIC01NywxNiAr NjQsMTYgQEAgdm9pZAotIHJlZ2NhY2hlX2ludmFsaWRhdGVfb25lIChzdHJ1Y3QgaW5mZXJpb3Jf bGlzdF9lbnRyeSAqZW50cnkpCi0gewotICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQgPSAo c3RydWN0IHRocmVhZF9pbmZvICopIGVudHJ5OwotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZTsKLSsgIHN0cnVjdCBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICpyZWdjYWNoZTsKLSAKLS0gIHJl Z2NhY2hlID0gKHN0cnVjdCByZWdjYWNoZSAqKSBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICh0aHJl YWQpOwotKyAgcmVnY2FjaGUgPSAoc3RydWN0IGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKikgaW5m ZXJpb3JfcmVnY2FjaGVfZGF0YSAodGhyZWFkKTsKLSAKLSAgIGlmIChyZWdjYWNoZS0+cmVnaXN0 ZXJzX3ZhbGlkKQotICAgICB7Ci0gICAgICAgc3RydWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZl cmlvciA9IGN1cnJlbnRfaW5mZXJpb3I7Ci0gCi0gICAgICAgY3VycmVudF9pbmZlcmlvciA9IHRo cmVhZDsKLS0gICAgICBzdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCAtMSk7Ci0r ICAgICAgc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzICgtMSk7Ci0gICAgICAgY3VycmVudF9pbmZl cmlvciA9IHNhdmVkX2luZmVyaW9yOwotICAgICB9Ci0gCi1AQCAtNzQsMjUgKzgxLDI0IEBAIHJl Z2NhY2hlX2ludmFsaWRhdGVfb25lIChzdHJ1Y3QgaW5mZXJpb3IKLSB9Ci0gCi0gdm9pZAotLXJl Z2NhY2hlX2ludmFsaWRhdGUgKHZvaWQpCi0rcmVnY2FjaGVfaW52YWxpZGF0ZSAoKQotIHsKLSAg IGZvcl9lYWNoX2luZmVyaW9yICgmYWxsX3RocmVhZHMsIHJlZ2NhY2hlX2ludmFsaWRhdGVfb25l KTsKLSB9Ci0gCi0tc3RydWN0IHJlZ2NhY2hlICoKLSt2b2lkICoKLSBuZXdfcmVnaXN0ZXJfY2Fj aGUgKHZvaWQpCi0gewotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKLSsgIHN0cnVjdCBp bmZlcmlvcl9yZWdjYWNoZV9kYXRhICpyZWdjYWNoZTsKLSAKLSAgIGlmIChyZWdpc3Rlcl9ieXRl cyA9PSAwKQotICAgICByZXR1cm4gTlVMTDsgLyogVGhlIGFyY2hpdGVjdHVyZSBoYXNuJ3QgYmVl biBpbml0aWFsaXplZCB5ZXQuICAqLwotIAotICAgcmVnY2FjaGUgPSB4bWFsbG9jIChzaXplb2Yg KCpyZWdjYWNoZSkpOwotIAotLSAgLyogTWFrZSBzdXJlIHRvIHplcm8taW5pdGlhbGl6ZSB0aGUg cmVnaXN0ZXIgY2FjaGUgd2hlbiBpdCBpcwotLSAgICAgY3JlYXRlZCwgaW4gY2FzZSB0aGVyZSBh cmUgcmVnaXN0ZXJzIHRoZSB0YXJnZXQgbmV2ZXIKLS0gICAgIGZldGNoZXMuICBUaGlzIHdheSB0 aGV5J2xsIHJlYWQgYXMgemVybyBpbnN0ZWFkIG9mCi0tICAgICBnYXJiYWdlLiAgKi8KLSsgIC8q IE1ha2Ugc3VyZSB0byB6ZXJvLWluaXRpYWxpemUgdGhlIHJlZ2lzdGVyIGNhY2hlIHdoZW4gaXQg aXMgY3JlYXRlZCwKLSsgICAgIGluIGNhc2UgdGhlcmUgYXJlIHJlZ2lzdGVycyB0aGUgdGFyZ2V0 IG5ldmVyIGZldGNoZXMuICBUaGlzIHdheSB0aGV5J2xsCi0rICAgICByZWFkIGFzIHplcm8gaW5z dGVhZCBvZiBnYXJiYWdlLiAgKi8KLSAgIHJlZ2NhY2hlLT5yZWdpc3RlcnMgPSB4Y2FsbG9jICgx LCByZWdpc3Rlcl9ieXRlcyk7Ci0gCi0gICByZWdjYWNoZS0+cmVnaXN0ZXJzX3ZhbGlkID0gMDsK LUBAIC0xMDEsOCArMTA3LDExIEBAIG5ld19yZWdpc3Rlcl9jYWNoZSAodm9pZCkKLSB9Ci0gCi0g dm9pZAotLWZyZWVfcmVnaXN0ZXJfY2FjaGUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCi0r ZnJlZV9yZWdpc3Rlcl9jYWNoZSAodm9pZCAqcmVnY2FjaGVfcCkKLSB7Ci0rICBzdHJ1Y3QgaW5m ZXJpb3JfcmVnY2FjaGVfZGF0YSAqcmVnY2FjaGUKLSsgICAgPSAoc3RydWN0IGluZmVyaW9yX3Jl Z2NhY2hlX2RhdGEgKikgcmVnY2FjaGVfcDsKLSsKLSAgIGlmIChyZWdjYWNoZSkKLSAgICAgewot ICAgICAgIGZyZWUgKHJlZ2NhY2hlLT5yZWdpc3RlcnMpOwotQEAgLTExNCwxMCArMTIzLDggQEAg c3RhdGljIHZvaWQKLSByZWFsbG9jX3JlZ2lzdGVyX2NhY2hlIChzdHJ1Y3QgaW5mZXJpb3JfbGlz dF9lbnRyeSAqdGhyZWFkX3ApCi0gewotICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQgPSAo c3RydWN0IHRocmVhZF9pbmZvICopIHRocmVhZF9wOwotLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZQotLSAgICA9IChzdHJ1Y3QgcmVnY2FjaGUgKikgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAo dGhyZWFkKTsKLSAKLS0gIGZyZWVfcmVnaXN0ZXJfY2FjaGUgKHJlZ2NhY2hlKTsKLSsgIGZyZWVf cmVnaXN0ZXJfY2FjaGUgKGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCkpOwotICAgc2V0 X2luZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCwgbmV3X3JlZ2lzdGVyX2NhY2hlICgpKTsK LSB9Ci0gCi1AQCAtMTQ3LDE4ICsxNTQsMTggQEAgc2V0X3JlZ2lzdGVyX2NhY2hlIChzdHJ1Y3Qg cmVnICpyZWdzLCBpbgotIH0KLSAKLSB2b2lkCi0tcmVnaXN0ZXJzX3RvX3N0cmluZyAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgY2hhciAqYnVmKQotK3JlZ2lzdGVyc190b19zdHJpbmcgKGNo YXIgKmJ1ZikKLSB7Ci0tICB1bnNpZ25lZCBjaGFyICpyZWdpc3RlcnMgPSByZWdjYWNoZS0+cmVn aXN0ZXJzOwotKyAgdW5zaWduZWQgY2hhciAqcmVnaXN0ZXJzID0gZ2V0X3JlZ2NhY2hlIChjdXJy ZW50X2luZmVyaW9yLCAxKS0+cmVnaXN0ZXJzOwotIAotICAgY29udmVydF9pbnRfdG9fYXNjaWkg KHJlZ2lzdGVycywgYnVmLCByZWdpc3Rlcl9ieXRlcyk7Ci0gfQotIAotIHZvaWQKLS1yZWdpc3Rl cnNfZnJvbV9zdHJpbmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNoYXIgKmJ1ZikKLSty ZWdpc3RlcnNfZnJvbV9zdHJpbmcgKGNoYXIgKmJ1ZikKLSB7Ci0gICBpbnQgbGVuID0gc3RybGVu IChidWYpOwotLSAgdW5zaWduZWQgY2hhciAqcmVnaXN0ZXJzID0gcmVnY2FjaGUtPnJlZ2lzdGVy czsKLSsgIHVuc2lnbmVkIGNoYXIgKnJlZ2lzdGVycyA9IGdldF9yZWdjYWNoZSAoY3VycmVudF9p bmZlcmlvciwgMSktPnJlZ2lzdGVyczsKLSAKLSAgIGlmIChsZW4gIT0gcmVnaXN0ZXJfYnl0ZXMg KiAyKQotICAgICB7Ci1AQCAtMjA3LDQwICsyMTQsNDAgQEAgcmVnaXN0ZXJfc2l6ZSAoaW50IG4p Ci0gfQotIAotIHN0YXRpYyB1bnNpZ25lZCBjaGFyICoKLS1yZWdpc3Rlcl9kYXRhIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgbiwgaW50IGZldGNoKQotK3JlZ2lzdGVyX2RhdGEgKGlu dCBuLCBpbnQgZmV0Y2gpCi0gewotLSAgcmV0dXJuIHJlZ2NhY2hlLT5yZWdpc3RlcnMgKyAocmVn X2RlZnNbbl0ub2Zmc2V0IC8gOCk7Ci0rICB1bnNpZ25lZCBjaGFyICpyZWdpc3RlcnMKLSsgICAg PSBnZXRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIGZldGNoKS0+cmVnaXN0ZXJzOwotKwot KyAgcmV0dXJuIHJlZ2lzdGVycyArIChyZWdfZGVmc1tuXS5vZmZzZXQgLyA4KTsKLSB9Ci0gCi0g dm9pZAotLXN1cHBseV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG4s IGNvbnN0IHZvaWQgKmJ1ZikKLStzdXBwbHlfcmVnaXN0ZXIgKGludCBuLCBjb25zdCB2b2lkICpi dWYpCi0gewotLSAgbWVtY3B5IChyZWdpc3Rlcl9kYXRhIChyZWdjYWNoZSwgbiwgMCksIGJ1Ziwg cmVnaXN0ZXJfc2l6ZSAobikpOwotKyAgbWVtY3B5IChyZWdpc3Rlcl9kYXRhIChuLCAwKSwgYnVm LCByZWdpc3Rlcl9zaXplIChuKSk7Ci0gfQotIAotIHZvaWQKLS1zdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLS0JCQkgY29uc3QgY2hhciAqbmFtZSwg Y29uc3Qgdm9pZCAqYnVmKQotK3N1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChjb25zdCBjaGFyICpu YW1lLCBjb25zdCB2b2lkICpidWYpCi0gewotLSAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwg ZmluZF9yZWdubyAobmFtZSksIGJ1Zik7Ci0rICBzdXBwbHlfcmVnaXN0ZXIgKGZpbmRfcmVnbm8g KG5hbWUpLCBidWYpOwotIH0KLSAKLSB2b2lkCi0tY29sbGVjdF9yZWdpc3RlciAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IG4sIHZvaWQgKmJ1ZikKLStjb2xsZWN0X3JlZ2lzdGVyIChp bnQgbiwgdm9pZCAqYnVmKQotIHsKLS0gIG1lbWNweSAoYnVmLCByZWdpc3Rlcl9kYXRhIChyZWdj YWNoZSwgbiwgMSksIHJlZ2lzdGVyX3NpemUgKG4pKTsKLSsgIG1lbWNweSAoYnVmLCByZWdpc3Rl cl9kYXRhIChuLCAxKSwgcmVnaXN0ZXJfc2l6ZSAobikpOwotIH0KLSAKLSB2b2lkCi0tY29sbGVj dF9yZWdpc3Rlcl9hc19zdHJpbmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBuLCBj aGFyICpidWYpCi0rY29sbGVjdF9yZWdpc3Rlcl9hc19zdHJpbmcgKGludCBuLCBjaGFyICpidWYp Ci0gewotLSAgY29udmVydF9pbnRfdG9fYXNjaWkgKHJlZ2lzdGVyX2RhdGEgKHJlZ2NhY2hlLCBu LCAxKSwKLS0JCQlidWYsIHJlZ2lzdGVyX3NpemUgKG4pKTsKLSsgIGNvbnZlcnRfaW50X3RvX2Fz Y2lpIChyZWdpc3Rlcl9kYXRhIChuLCAxKSwgYnVmLCByZWdpc3Rlcl9zaXplIChuKSk7Ci0gfQot IAotIHZvaWQKLS1jb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsCi0tCQkJICBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpidWYpCi0rY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lIChjb25zdCBjaGFyICpuYW1lLCB2b2lkICpidWYpCi0gewotLSAgY29sbGVj dF9yZWdpc3RlciAocmVnY2FjaGUsIGZpbmRfcmVnbm8gKG5hbWUpLCBidWYpOwotKyAgY29sbGVj dF9yZWdpc3RlciAoZmluZF9yZWdubyAobmFtZSksIGJ1Zik7Ci0gfQotLS0tIC4vZ2RiL2dkYnNl cnZlci9yZWdjYWNoZS5oCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysg Li9nZGIvZ2Ric2VydmVyL3JlZ2NhY2hlLmgJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAg KzAxMDAKLUBAIC0yMSwyNyArMjEsMTQgQEAKLSAjZGVmaW5lIFJFR0NBQ0hFX0gKLSAKLSBzdHJ1 Y3QgaW5mZXJpb3JfbGlzdF9lbnRyeTsKLS1zdHJ1Y3QgdGhyZWFkX2luZm87Ci0tCi0tLyogVGhl IGRhdGEgZm9yIHRoZSByZWdpc3RlciBjYWNoZS4gIE5vdGUgdGhhdCB3ZSBoYXZlIG9uZSBwZXIK LS0gICBpbmZlcmlvcjsgdGhpcyBpcyBwcmltYXJpbHkgZm9yIHNpbXBsaWNpdHksIGFzIHRoZSBw ZXJmb3JtYW5jZQotLSAgIGJlbmVmaXQgaXMgbWluaW1hbC4gICovCi0tCi0tc3RydWN0IHJlZ2Nh Y2hlCi0tewotLSAgaW50IHJlZ2lzdGVyc192YWxpZDsKLS0gIHVuc2lnbmVkIGNoYXIgKnJlZ2lz dGVyczsKLS19OwotIAotIC8qIENyZWF0ZSBhIG5ldyByZWdpc3RlciBjYWNoZSBmb3IgSU5GRVJJ T1IuICAqLwotIAotLXN0cnVjdCByZWdjYWNoZSAqbmV3X3JlZ2lzdGVyX2NhY2hlICh2b2lkKTsK LS0KLS1zdHJ1Y3QgcmVnY2FjaGUgKmdldF90aHJlYWRfcmVnY2FjaGUgKHN0cnVjdCB0aHJlYWRf aW5mbyAqdGhyZWFkLCBpbnQgZmV0Y2gpOwotK3ZvaWQgKm5ld19yZWdpc3Rlcl9jYWNoZSAodm9p ZCk7Ci0gCi0gLyogUmVsZWFzZSBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaXN0 ZXIgY2FjaGUgZm9yIElORkVSSU9SLiAgKi8KLSAKLS12b2lkIGZyZWVfcmVnaXN0ZXJfY2FjaGUg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpOwotK3ZvaWQgZnJlZV9yZWdpc3Rlcl9jYWNoZSAo dm9pZCAqcmVnY2FjaGUpOwotIAotIC8qIEludmFsaWRhdGUgY2FjaGVkIHJlZ2lzdGVycyBmb3Ig b25lIG9yIGFsbCB0aHJlYWRzLiAgKi8KLSAKLUBAIC01MSwxMSArMzgsMTEgQEAgdm9pZCByZWdj YWNoZV9pbnZhbGlkYXRlICh2b2lkKTsKLSAvKiBDb252ZXJ0IGFsbCByZWdpc3RlcnMgdG8gYSBz dHJpbmcgaW4gdGhlIGN1cnJlbnRseSBzcGVjaWZpZWQgcmVtb3RlCi0gICAgZm9ybWF0LiAgKi8K LSAKLS12b2lkIHJlZ2lzdGVyc190b19zdHJpbmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGNoYXIgKmJ1Zik7Ci0rdm9pZCByZWdpc3RlcnNfdG9fc3RyaW5nIChjaGFyICpidWYpOwotIAot IC8qIENvbnZlcnQgYSBzdHJpbmcgdG8gcmVnaXN0ZXIgdmFsdWVzIGFuZCBmaWxsIG91ciByZWdp c3RlciBjYWNoZS4gICovCi0gCi0tdm9pZCByZWdpc3RlcnNfZnJvbV9zdHJpbmcgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGNoYXIgKmJ1Zik7Ci0rdm9pZCByZWdpc3RlcnNfZnJvbV9zdHJp bmcgKGNoYXIgKmJ1Zik7Ci0gCi0gLyogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVzY3JpcHRp b24gb2YgcmVnaXN0ZXIgYGBuJycuICAqLwotIAotQEAgLTcwLDE1ICs1NywxNCBAQCBpbnQgZmlu ZF9yZWdubyAoY29uc3QgY2hhciAqbmFtZSk7Ci0gZXh0ZXJuIGNvbnN0IGNoYXIgKipnZGJzZXJ2 ZXJfZXhwZWRpdGVfcmVnczsKLSBleHRlcm4gY29uc3QgY2hhciAqZ2Ric2VydmVyX3htbHRhcmdl dDsKLSAKLS12b2lkIHN1cHBseV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg aW50IG4sIGNvbnN0IHZvaWQgKmJ1Zik7Ci0rdm9pZCBzdXBwbHlfcmVnaXN0ZXIgKGludCBuLCBj b25zdCB2b2lkICpidWYpOwotIAotLXZvaWQgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg dm9pZCAqYnVmKTsKLSt2b2lkIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChjb25zdCBjaGFyICpu YW1lLCBjb25zdCB2b2lkICpidWYpOwotIAotLXZvaWQgY29sbGVjdF9yZWdpc3RlciAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG4sIHZvaWQgKmJ1Zik7Ci0rdm9pZCBjb2xsZWN0X3Jl Z2lzdGVyIChpbnQgbiwgdm9pZCAqYnVmKTsKLSAKLS12b2lkIGNvbGxlY3RfcmVnaXN0ZXJfYXNf c3RyaW5nIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgbiwgY2hhciAqYnVmKTsKLSt2 b2lkIGNvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChpbnQgbiwgY2hhciAqYnVmKTsKLSAKLS12 b2lkIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg Y29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYnVmKTsKLSt2b2lkIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYnVmKTsKLSAKLSAjZW5kaWYgLyogUkVHQ0FD SEVfSCAqLwotLS0tIC4vZ2RiL2dkYnNlcnZlci9yZW1vdGUtdXRpbHMuYwkyMDEwLTAxLTIwIDIz OjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9yZW1vdGUtdXRpbHMu YwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwNTMsNyArMTA1Myw3 IEBAIGNvbnZlcnRfYXNjaWlfdG9faW50IChjaGFyICpmcm9tLCB1bnNpZ24KLSB9Ci0gCi0gc3Rh dGljIGNoYXIgKgotLW91dHJlZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25v LCBjaGFyICpidWYpCi0rb3V0cmVnIChpbnQgcmVnbm8sIGNoYXIgKmJ1ZikKLSB7Ci0gICBpZiAo KHJlZ25vID4+IDEyKSAhPSAwKQotICAgICAqYnVmKysgPSB0b2hleCAoKHJlZ25vID4+IDEyKSAm IDB4Zik7Ci1AQCAtMTA2Miw3ICsxMDYyLDcgQEAgb3V0cmVnIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBpbnQgcgotICAgKmJ1ZisrID0gdG9oZXggKChyZWdubyA+PiA0KSAmIDB4Zik7Ci0g ICAqYnVmKysgPSB0b2hleCAocmVnbm8gJiAweGYpOwotICAgKmJ1ZisrID0gJzonOwotLSAgY29s bGVjdF9yZWdpc3Rlcl9hc19zdHJpbmcgKHJlZ2NhY2hlLCByZWdubywgYnVmKTsKLSsgIGNvbGxl Y3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChyZWdubywgYnVmKTsKLSAgIGJ1ZiArPSAyICogcmVnaXN0 ZXJfc2l6ZSAocmVnbm8pOwotICAgKmJ1ZisrID0gJzsnOwotIAotQEAgLTExMTYsNyArMTExNiw2 IEBAIHByZXBhcmVfcmVzdW1lX3JlcGx5IChjaGFyICpidWYsIHB0aWRfdCAKLSAgICAgICB7Ci0g CXN0cnVjdCB0aHJlYWRfaW5mbyAqc2F2ZWRfaW5mZXJpb3I7Ci0gCWNvbnN0IGNoYXIgKipyZWdw OwotLQlzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotIAotIAlzcHJpbnRmIChidWYsICJUJTAy eCIsIHN0YXR1cy0+dmFsdWUuc2lnKTsKLSAJYnVmICs9IHN0cmxlbiAoYnVmKTsKLUBAIC0xMTI3 LDggKzExMjYsNiBAQCBwcmVwYXJlX3Jlc3VtZV9yZXBseSAoY2hhciAqYnVmLCBwdGlkX3QgCi0g Ci0gCWN1cnJlbnRfaW5mZXJpb3IgPSBmaW5kX3RocmVhZF9wdGlkIChwdGlkKTsKLSAKLS0JcmVn Y2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLS0KLSAJ aWYgKHRoZV90YXJnZXQtPnN0b3BwZWRfYnlfd2F0Y2hwb2ludCAhPSBOVUxMCi0gCSAgICAmJiAo KnRoZV90YXJnZXQtPnN0b3BwZWRfYnlfd2F0Y2hwb2ludCkgKCkpCi0gCSAgewotQEAgLTExNTEs NyArMTE0OCw3IEBAIHByZXBhcmVfcmVzdW1lX3JlcGx5IChjaGFyICpidWYsIHB0aWRfdCAKLSAK LSAJd2hpbGUgKCpyZWdwKQotIAkgIHsKLS0JICAgIGJ1ZiA9IG91dHJlZyAocmVnY2FjaGUsIGZp bmRfcmVnbm8gKCpyZWdwKSwgYnVmKTsKLSsJICAgIGJ1ZiA9IG91dHJlZyAoZmluZF9yZWdubyAo KnJlZ3ApLCBidWYpOwotIAkgICAgcmVncCArKzsKLSAJICB9Ci0gCSpidWYgPSAnXDAnOwotLS0t IC4vZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCAr MDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAw MDAwMDAwMCArMDEwMAotQEAgLTI0NTYsMjUgKzI0NTYsMTUgQEAgcHJvY2Vzc19zZXJpYWxfZXZl bnQgKHZvaWQpCi0gCX0KLSAgICAgICBicmVhazsKLSAgICAgY2FzZSAnZyc6Ci0tICAgICAgewot LQlzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOwotLQotLQlyZXF1aXJlX3J1bm5pbmcgKG93bl9i dWYpOwotLQlzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7Ci0tCXJlZ2NhY2hlID0gZ2V0X3RocmVh ZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7Ci0tCXJlZ2lzdGVyc190b19zdHJpbmcg KHJlZ2NhY2hlLCBvd25fYnVmKTsKLS0gICAgICB9Ci0rICAgICAgcmVxdWlyZV9ydW5uaW5nIChv d25fYnVmKTsKLSsgICAgICBzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7Ci0rICAgICAgcmVnaXN0 ZXJzX3RvX3N0cmluZyAob3duX2J1Zik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgJ0cnOgot LSAJewotLQkgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7Ci0tCi0tCSAgcmVxdWlyZV9ydW5u aW5nIChvd25fYnVmKTsKLS0JICBzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7Ci0tCSAgcmVnY2Fj aGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKLS0JICByZWdp c3RlcnNfZnJvbV9zdHJpbmcgKHJlZ2NhY2hlLCAmb3duX2J1ZlsxXSk7Ci0tCSAgd3JpdGVfb2sg KG93bl9idWYpOwotLQl9Ci0rICAgICAgcmVxdWlyZV9ydW5uaW5nIChvd25fYnVmKTsKLSsgICAg ICBzZXRfZGVzaXJlZF9pbmZlcmlvciAoMSk7Ci0rICAgICAgcmVnaXN0ZXJzX2Zyb21fc3RyaW5n ICgmb3duX2J1ZlsxXSk7Ci0rICAgICAgd3JpdGVfb2sgKG93bl9idWYpOwotICAgICAgIGJyZWFr OwotICAgICBjYXNlICdtJzoKLSAgICAgICByZXF1aXJlX3J1bm5pbmcgKG93bl9idWYpOwotLS0t IC4vZ2RiL2dkYnNlcnZlci90YXJnZXQuaAkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCAr MDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci90YXJnZXQuaAkyMDEwLTAxLTIxIDIwOjMzOjE1LjAw MDAwMDAwMCArMDEwMAotQEAgLTE2NiwxMyArMTY2LDEzIEBAIHN0cnVjdCB0YXJnZXRfb3BzCi0g Ci0gICAgICBJZiBSRUdOTyBpcyAtMSwgZmV0Y2ggYWxsIHJlZ2lzdGVyczsgb3RoZXJ3aXNlLCBm ZXRjaCBhdCBsZWFzdCBSRUdOTy4gICovCi0gCi0tICB2b2lkICgqZmV0Y2hfcmVnaXN0ZXJzKSAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKTsKLSsgIHZvaWQgKCpmZXRjaF9y ZWdpc3RlcnMpIChpbnQgcmVnbm8pOwotIAotICAgLyogU3RvcmUgcmVnaXN0ZXJzIHRvIHRoZSBp bmZlcmlvciBwcm9jZXNzLgotIAotICAgICAgSWYgUkVHTk8gaXMgLTEsIHN0b3JlIGFsbCByZWdp c3RlcnM7IG90aGVyd2lzZSwgc3RvcmUgYXQgbGVhc3QgUkVHTk8uICAqLwotIAotLSAgdm9pZCAo KnN0b3JlX3JlZ2lzdGVycykgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubyk7 Ci0rICB2b2lkICgqc3RvcmVfcmVnaXN0ZXJzKSAoaW50IHJlZ25vKTsKLSAKLSAgIC8qIFJlYWQg bWVtb3J5IGZyb20gdGhlIGluZmVyaW9yIHByb2Nlc3MuICBUaGlzIHNob3VsZCBnZW5lcmFsbHkg YmUKLSAgICAgIGNhbGxlZCB0aHJvdWdoIHJlYWRfaW5mZXJpb3JfbWVtb3J5LCB3aGljaCBoYW5k bGVzIGJyZWFrcG9pbnQgc2hhZG93aW5nLgotQEAgLTMwNywxMSArMzA3LDExIEBAIHZvaWQgc2V0 X3RhcmdldF9vcHMgKHN0cnVjdCB0YXJnZXRfb3BzICoKLSAjZGVmaW5lIG15dGhyZWFkX2FsaXZl KHBpZCkgXAotICAgKCp0aGVfdGFyZ2V0LT50aHJlYWRfYWxpdmUpIChwaWQpCi0gCi0tI2RlZmlu ZSBmZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMocmVnY2FjaGUsIHJlZ25vKQlcCi0tICAoKnRoZV90 YXJnZXQtPmZldGNoX3JlZ2lzdGVycykgKHJlZ2NhY2hlLCByZWdubykKLSsjZGVmaW5lIGZldGNo X2luZmVyaW9yX3JlZ2lzdGVycyhyZWdubykgXAotKyAgKCp0aGVfdGFyZ2V0LT5mZXRjaF9yZWdp c3RlcnMpIChyZWdubykKLSAKLS0jZGVmaW5lIHN0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyhyZWdj YWNoZSwgcmVnbm8pIFwKLS0gICgqdGhlX3RhcmdldC0+c3RvcmVfcmVnaXN0ZXJzKSAocmVnY2Fj aGUsIHJlZ25vKQotKyNkZWZpbmUgc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKHJlZ25vKSBcCi0r ICAoKnRoZV90YXJnZXQtPnN0b3JlX3JlZ2lzdGVycykgKHJlZ25vKQotIAotICNkZWZpbmUgam9p bl9pbmZlcmlvcihwaWQpIFwKLSAgICgqdGhlX3RhcmdldC0+am9pbikgKHBpZCkKLS0tLSAuL2dk Yi9nZGJzZXJ2ZXIvd2luMzItYXJtLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWFybS1sb3cuYwkyMDEwLTAxLTIxIDIw OjMzOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTkzLDE5ICs5MywxNyBAQCByZWdwdHIgKENPTlRF WFQqIGMsIGludCByKQotIAotIC8qIEZldGNoIHJlZ2lzdGVyIGZyb20gZ2Ric2VydmVyIHJlZ2Nh Y2hlIGRhdGEuICAqLwotIHN0YXRpYyB2b2lkCi0tYXJtX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVy IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAgICAgd2luMzJfdGhyZWFkX2luZm8g KnRoLCBpbnQgcikKLSthcm1fZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIgKHdpbjMyX3RocmVhZF9p bmZvICp0aCwgaW50IHIpCi0gewotICAgY2hhciAqY29udGV4dF9vZmZzZXQgPSByZWdwdHIgKCZ0 aC0+Y29udGV4dCwgcik7Ci0tICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCBjb250ZXh0 X29mZnNldCk7Ci0rICBzdXBwbHlfcmVnaXN0ZXIgKHIsIGNvbnRleHRfb2Zmc2V0KTsKLSB9Ci0g Ci0gLyogU3RvcmUgYSBuZXcgcmVnaXN0ZXIgdmFsdWUgaW50byB0aGUgdGhyZWFkIGNvbnRleHQg b2YgVEguICAqLwotIHN0YXRpYyB2b2lkCi0tYXJtX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVyIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAgICAgd2luMzJfdGhyZWFkX2luZm8gKnRo LCBpbnQgcikKLSthcm1fc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXIgKHdpbjMyX3RocmVhZF9pbmZv ICp0aCwgaW50IHIpCi0gewotLSAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHIsIHJlZ3B0 ciAoJnRoLT5jb250ZXh0LCByKSk7Ci0rICBjb2xsZWN0X3JlZ2lzdGVyIChyLCByZWdwdHIgKCZ0 aC0+Y29udGV4dCwgcikpOwotIH0KLSAKLSAvKiBDb3JyZWN0IGluIGVpdGhlciBlbmRpYW5uZXNz LiAgV2UgZG8gbm90IHN1cHBvcnQgVGh1bWIgeWV0LiAgKi8KLS0tLSAuL2dkYi9nZGJzZXJ2ZXIv d2luMzItaTM4Ni1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL2dkYnNlcnZlci93aW4zMi1pMzg2LWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAw MDAwMDAwICswMTAwCi1AQCAtMjcxLDggKzI3MSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgbWFwcGlu Z3NbXSA9IHsKLSAKLSAvKiBGZXRjaCByZWdpc3RlciBmcm9tIGdkYnNlcnZlciByZWdjYWNoZSBk YXRhLiAgKi8KLSBzdGF0aWMgdm9pZAotLWkzODZfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICAgICAgd2luMzJfdGhyZWFkX2luZm8gKnRo LCBpbnQgcikKLStpMzg2X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVyICh3aW4zMl90aHJlYWRfaW5m byAqdGgsIGludCByKQotIHsKLSAgIGNoYXIgKmNvbnRleHRfb2Zmc2V0ID0gKGNoYXIgKikgJnRo LT5jb250ZXh0ICsgbWFwcGluZ3Nbcl07Ci0gCi1AQCAtMjgwLDI0ICsyNzksMjMgQEAgaTM4Nl9m ZXRjaF9pbmZlcmlvcl9yZWdpc3RlciAoc3RydWN0IHJlZwotICAgaWYgKHIgPT0gRkNTX1JFR05V TSkKLSAgICAgewotICAgICAgIGwgPSAqKChsb25nICopIGNvbnRleHRfb2Zmc2V0KSAmIDB4ZmZm ZjsKLS0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCAoY2hhciAqKSAmbCk7Ci0r ICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyLCAoY2hhciAqKSAmbCk7Ci0gICAgIH0KLSAgIGVsc2Ug aWYgKHIgPT0gRk9QX1JFR05VTSkKLSAgICAgewotICAgICAgIGwgPSAoKigobG9uZyAqKSBjb250 ZXh0X29mZnNldCkgPj4gMTYpICYgKCgxIDw8IDExKSAtIDEpOwotLSAgICAgIHN1cHBseV9yZWdp c3RlciAocmVnY2FjaGUsIHIsIChjaGFyICopICZsKTsKLSsgICAgICBzdXBwbHlfcmVnaXN0ZXIg KHIsIChjaGFyICopICZsKTsKLSAgICAgfQotICAgZWxzZQotLSAgICBzdXBwbHlfcmVnaXN0ZXIg KHJlZ2NhY2hlLCByLCBjb250ZXh0X29mZnNldCk7Ci0rICAgIHN1cHBseV9yZWdpc3RlciAociwg Y29udGV4dF9vZmZzZXQpOwotIH0KLSAKLSAvKiBTdG9yZSBhIG5ldyByZWdpc3RlciB2YWx1ZSBp bnRvIHRoZSB0aHJlYWQgY29udGV4dCBvZiBUSC4gICovCi0gc3RhdGljIHZvaWQKLS1pMzg2X3N0 b3JlX2luZmVyaW9yX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAg ICAgIHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpCi0raTM4Nl9zdG9yZV9pbmZlcmlvcl9y ZWdpc3RlciAod2luMzJfdGhyZWFkX2luZm8gKnRoLCBpbnQgcikKLSB7Ci0gICBjaGFyICpjb250 ZXh0X29mZnNldCA9IChjaGFyICopICZ0aC0+Y29udGV4dCArIG1hcHBpbmdzW3JdOwotLSAgY29s bGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHIsIGNvbnRleHRfb2Zmc2V0KTsKLSsgIGNvbGxlY3Rf cmVnaXN0ZXIgKHIsIGNvbnRleHRfb2Zmc2V0KTsKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaTM4Nl93aW4zMl9icmVha3BvaW50ID0gMHhjYzsKLS0tLSAuL2dkYi9nZGJzZXJ2 ZXIvd2luMzItbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAu L2dkYi9nZGJzZXJ2ZXIvd2luMzItbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAg KzAxMDAKLUBAIC0zNzIsMjkgKzM3MiwyOSBAQCBjaGlsZF9jb250aW51ZSAoRFdPUkQgY29udGlu dWVfc3RhdHVzLCBpCi0gCi0gLyogRmV0Y2ggcmVnaXN0ZXIocykgZnJvbSB0aGUgY3VycmVudCB0 aHJlYWQgY29udGV4dC4gICovCi0gc3RhdGljIHZvaWQKLS1jaGlsZF9mZXRjaF9pbmZlcmlvcl9y ZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByKQotK2NoaWxkX2ZldGNo X2luZmVyaW9yX3JlZ2lzdGVycyAoaW50IHIpCi0gewotICAgaW50IHJlZ25vOwotICAgd2luMzJf dGhyZWFkX2luZm8gKnRoID0gdGhyZWFkX3JlYyAoY3VycmVudF9pbmZlcmlvcl9wdGlkICgpLCBU UlVFKTsKLSAgIGlmIChyID09IC0xIHx8IHIgPiBOVU1fUkVHUykKLS0gICAgY2hpbGRfZmV0Y2hf aW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSwgTlVNX1JFR1MpOwotKyAgICBjaGlsZF9mZXRj aF9pbmZlcmlvcl9yZWdpc3RlcnMgKE5VTV9SRUdTKTsKLSAgIGVsc2UKLSAgICAgZm9yIChyZWdu byA9IDA7IHJlZ25vIDwgcjsgcmVnbm8rKykKLS0gICAgICAoKnRoZV9sb3dfdGFyZ2V0LmZldGNo X2luZmVyaW9yX3JlZ2lzdGVyKSAocmVnY2FjaGUsIHRoLCByZWdubyk7Ci0rICAgICAgKCp0aGVf bG93X3RhcmdldC5mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcikgKHRoLCByZWdubyk7Ci0gfQotIAot IC8qIFN0b3JlIGEgbmV3IHJlZ2lzdGVyIHZhbHVlIGludG8gdGhlIGN1cnJlbnQgdGhyZWFkIGNv bnRleHQuICBXZSBkb24ndAotICAgIGNoYW5nZSB0aGUgcHJvZ3JhbSdzIGNvbnRleHQgdW50aWwg bGF0ZXIsIHdoZW4gd2UgcmVzdW1lIGl0LiAgKi8KLSBzdGF0aWMgdm9pZAotLWNoaWxkX3N0b3Jl X2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHIpCi0r Y2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChpbnQgcikKLSB7Ci0gICBpbnQgcmVnbm87 Ci0gICB3aW4zMl90aHJlYWRfaW5mbyAqdGggPSB0aHJlYWRfcmVjIChjdXJyZW50X2luZmVyaW9y X3B0aWQgKCksIFRSVUUpOwotICAgaWYgKHIgPT0gLTEgfHwgciA9PSAwIHx8IHIgPiBOVU1fUkVH UykKLS0gICAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSwgTlVNX1JF R1MpOwotKyAgICBjaGlsZF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKE5VTV9SRUdTKTsKLSAg IGVsc2UKLSAgICAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDwgcjsgcmVnbm8rKykKLS0gICAgICAo KnRoZV9sb3dfdGFyZ2V0LnN0b3JlX2luZmVyaW9yX3JlZ2lzdGVyKSAocmVnY2FjaGUsIHRoLCBy ZWdubyk7Ci0rICAgICAgKCp0aGVfbG93X3RhcmdldC5zdG9yZV9pbmZlcmlvcl9yZWdpc3Rlcikg KHRoLCByZWdubyk7Ci0gfQotIAotIC8qIE1hcCB0aGUgV2luZG93cyBlcnJvciBudW1iZXIgaW4g RVJST1IgdG8gYSBsb2NhbGUtZGVwZW5kZW50IGVycm9yCi1AQCAtMTU2OSw3ICsxNTY5LDYgQEAg c3RhdGljIHB0aWRfdAotIHdpbjMyX3dhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dh aXRzdGF0dXMgKm91cnN0YXR1cywgaW50IG9wdGlvbnMpCi0gewotICAgc3RydWN0IHByb2Nlc3Nf aW5mbyAqcHJvY2VzczsKLS0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7Ci0gCi0gICB3aGls ZSAoMSkKLSAgICAgewotQEAgLTE1OTEsOCArMTU5MCw3IEBAIHdpbjMyX3dhaXQgKHB0aWRfdCBw dGlkLCBzdHJ1Y3QgdGFyZ2V0X3cKLSAJICBPVVRNU0cyICgoIkNoaWxkIFN0b3BwZWQgd2l0aCBz aWduYWwgPSAlZCBcbiIsCi0gCQkgICAgb3Vyc3RhdHVzLT52YWx1ZS5zaWcpKTsKLSAKLS0JICBy ZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOwotLQkg IGNoaWxkX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIC0xKTsKLSsJICBjaGls ZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKC0xKTsKLSAKLSAJICBpZiAob3Vyc3RhdHVzLT5r aW5kID09IFRBUkdFVF9XQUlUS0lORF9MT0FERUQKLSAJICAgICAgJiYgIXNlcnZlcl93YWl0aW5n KQotQEAgLTE2MjQsMTcgKzE2MjIsMTcgQEAgd2luMzJfd2FpdCAocHRpZF90IHB0aWQsIHN0cnVj dCB0YXJnZXRfdwotIC8qIEZldGNoIHJlZ2lzdGVycyBmcm9tIHRoZSBpbmZlcmlvciBwcm9jZXNz LgotICAgIElmIFJFR05PIGlzIC0xLCBmZXRjaCBhbGwgcmVnaXN0ZXJzOyBvdGhlcndpc2UsIGZl dGNoIGF0IGxlYXN0IFJFR05PLiAgKi8KLSBzdGF0aWMgdm9pZAotLXdpbjMyX2ZldGNoX2luZmVy aW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQotK3dp bjMyX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoaW50IHJlZ25vKQotIHsKLS0gIGNoaWxkX2Zl dGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKLSsgIGNoaWxkX2ZldGNo X2luZmVyaW9yX3JlZ2lzdGVycyAocmVnbm8pOwotIH0KLSAKLSAvKiBTdG9yZSByZWdpc3RlcnMg dG8gdGhlIGluZmVyaW9yIHByb2Nlc3MuCi0gICAgSWYgUkVHTk8gaXMgLTEsIHN0b3JlIGFsbCBy ZWdpc3RlcnM7IG90aGVyd2lzZSwgc3RvcmUgYXQgbGVhc3QgUkVHTk8uICAqLwotIHN0YXRpYyB2 b2lkCi0td2luMzJfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBpbnQgcmVnbm8pCi0rd2luMzJfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChpbnQg cmVnbm8pCi0gewotLSAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdjYWNoZSwg cmVnbm8pOwotKyAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdubyk7Ci0gfQot IAotIC8qIFJlYWQgbWVtb3J5IGZyb20gdGhlIGluZmVyaW9yIHByb2Nlc3MuICBUaGlzIHNob3Vs ZCBnZW5lcmFsbHkgYmUKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvd2luMzItbG93LmgJMjAxMC0wMS0y MCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvd2luMzItbG93 LmgJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC02MSwxMiArNjEsMTAg QEAgc3RydWN0IHdpbjMyX3RhcmdldF9vcHMKLSAgIHZvaWQgKCp0aHJlYWRfYWRkZWQpICh3aW4z Ml90aHJlYWRfaW5mbyAqdGgpOwotIAotICAgLyogRmV0Y2ggcmVnaXN0ZXIgZnJvbSBnZGJzZXJ2 ZXIgcmVnY2FjaGUgZGF0YS4gICovCi0tICB2b2lkICgqZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIp IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCQkgICB3aW4zMl90aHJlYWRfaW5mbyAq dGgsIGludCByKTsKLSsgIHZvaWQgKCpmZXRjaF9pbmZlcmlvcl9yZWdpc3RlcikgKHdpbjMyX3Ro cmVhZF9pbmZvICp0aCwgaW50IHIpOwotIAotICAgLyogU3RvcmUgYSBuZXcgcmVnaXN0ZXIgdmFs dWUgaW50byB0aGUgdGhyZWFkIGNvbnRleHQgb2YgVEguICAqLwotLSAgdm9pZCAoKnN0b3JlX2lu ZmVyaW9yX3JlZ2lzdGVyKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLS0JCQkJICAgd2lu MzJfdGhyZWFkX2luZm8gKnRoLCBpbnQgcik7Ci0rICB2b2lkICgqc3RvcmVfaW5mZXJpb3JfcmVn aXN0ZXIpICh3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKTsKLSAKLSAgIHZvaWQgKCpzaW5n bGVfc3RlcCkgKHdpbjMyX3RocmVhZF9pbmZvICp0aCk7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXNv bGliLWRpc3BsYXkucGF0Y2ggYi9nZGItc29saWItZGlzcGxheS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZGFjMzQyMC4uMDAwMDAwMAotLS0gYS9nZGItc29saWItZGlzcGxh eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNDg1Lmh0bWwKLVN1YmplY3Q6IFtwYXRj aF0gRml4IHNvbGliLWRpc3BsYXkuZXhwIGNyYXNoCi0KLVsgTWFkZSBtb3JlIHNhZmUgZm9yIGRv d25zdHJlYW0gcGF0Y2ggKyBwb3J0ZWQgZm9yIFZMQS4gIF0KLQotSGksCi0KLWl0IGlzIGEgdGVz dHN1aXRlIHJlZ3Jlc3Npb24gYWdhaW5zdCBnZGItNy4wIGFsdGhvdWdoIHRoZSBidWcgd2FzIHBy b2JhYmx5Ci1wcmVzZW50IGV2ZW4gaW4gZ2RiLTcuMCAoaXQgc3RhcnRlZCB0byByZXByb2R1Y2Ug c2luY2Ugb25lIGNvbXBsZXRlbHkKLXVucmVsYXRlZCBEYW5pZWwgSi4ncyBwYXRjaCkuICBUaGlz IHBhdGNoIGZpeGVzICgtbG1jaGVjayBtYXkgYmUgcmVxdWlyZWQpOgotCi0gUEFTUzogZ2RiLmJh c2Uvc29saWItZGlzcGxheS5leHA6IGRpc3BsYXkgYV9nbG9iYWwKLSBQQVNTOiBnZGIuYmFzZS9z b2xpYi1kaXNwbGF5LmV4cDogZGlzcGxheSBiX2dsb2JhbAotIFBBU1M6IGdkYi5iYXNlL3NvbGli LWRpc3BsYXkuZXhwOiBkaXNwbGF5IGNfZ2xvYmFsCi0tRVJST1I6IFByb2Nlc3Mgbm8gbG9uZ2Vy IGV4aXN0cwotLVVOUkVTT0xWRUQ6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBhZnRlciBy ZXJ1bgotLVdBUk5JTkc6IHJlbW90ZV9leHBlY3Qgc3RhdGVtZW50IHdpdGhvdXQgYSBkZWZhdWx0 IGNhc2U/IQotLUZBSUw6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBDYW4ndCBydW4gdG8g bWFpbiAoMykKLStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogYWZ0ZXIgcmVydW4K LStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogYWZ0ZXIgcmVydW4KLStQQVNTOiBn ZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogYnJlYWsgMjUKLStQQVNTOiBnZGIuYmFzZS9zb2xp Yi1kaXNwbGF5LmV4cDogY29udGludWUKLStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4 cDogZGlzcGxheSBtYWluX2dsb2JhbAotK1BBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhw OiBkaXNwbGF5IGFfbG9jYWwKLStQQVNTOiBnZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cDogZGlz cGxheSBhX3N0YXRpYwotK1BBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBicmVhayAy NQotK1BBU1M6IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwOiBjb250aW51ZQotCi1ObyByZWdy ZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251Lgot Ci1UaGUgcXVlc3Rpb24gaXMgd2hldGhlciBTWU1CT0xfU1lNVEFCIChzeW1ib2wpIGNhbiBiZSBl dmVyIE5VTEwgYXQgdGhpcyBwb2ludC4KLUlNTyBub3QsIGl0IGNhbiBiZSBOVUxMIG9ubHkgdGVt cG9yYXJpbHkgZHVyaW5nIHJlYWRpbmcgc3ltYm9scy4KLQotCi1UaGFua3MsCi1KYW4KLQotCi0y MDEwLTAxLTIwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0K LQkqIHByaW50Y21kLmMgKGRpc3BsYXlfdXNlc19zb2xpYl9wKTogUmVtb3ZlIHZhcmlhYmxlIHNl Y3Rpb24uICBBY2Nlc3MKLQlvYmpmaWxlIHZpYSBTWU1CT0xfU1lNVEFCLgotCi1JbmRleDogZ2Ri LTcuMC41MC4yMDEwMDEyMS9nZGIvcGFyc2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAu MjAxMDAxMjEub3JpZy9nZGIvcGFyc2UuYwkyMDEwLTAxLTIxIDE1OjE2OjE1LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3BhcnNlLmMJMjAxMC0wMS0yMSAxNToy MTo0NS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNDI1LDYgKzE0MjUsMTAgQEAgb3BlcmF0b3JfY2hl Y2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaQotIAlpZiAoc2VjdGlvbiAmJiBvYmpmaWxlX2Z1 bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChzZWN0aW9uLT5vYmpmaWxlLCBkYXRhKSkKLSAJICByZXR1 cm4gMTsKLSAKLSsJLyogU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAg Ki8KLSsJaWYgKFNZTUJPTF9TWU1UQUIgKHN5bWJvbCkgJiYgb2JqZmlsZV9mdW5jICYmICgqb2Jq ZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0rCSAg cmV0dXJuIDE7Ci0rCi0gCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2Rl IHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi0gCW9iamZpbGUgPSBibG9ja19vYmpmaWxlIChi bG9jayk7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLnBhdGNoIGIvZ2RiLXVwc3RyZWFt LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjcyMjFmLi4wMDAwMDAwCi0t LSBhL2dkYi11cHN0cmVhbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVtv YnZdIHRlc3RzdWl0ZTogRml4IGdkYi5hcmNoL2kzODYtYnBfcGVybWFuZW50LmV4cCByZWdyZXNz aW9uCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDU1 NC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTAxL21zZzAwMjAz Lmh0bWwKLQotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzAxLzIyIDE3OjA2 OjQ5CTEuMjA5OQotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzAxLzI0IDA0 OjI5OjMyCTEuMjEwMAotIyMgLTEsMyArMSw4IEBACi0rMjAxMC0wMS0yNCAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGdkYi5hcmNoL2kzODYtYnBf cGVybWFuZW50LmV4cCAoRGlzYXNzZW1ibGUgZnVuY3Rpb24gJyRmdW5jdGlvbicpOgotKwlBZGp1 c3QgaXQgZm9yIERJU0FTU0VNQkxZX09NSVRfRk5BTUUuCi0rCi0gMjAxMC0wMS0yMiAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlQUiBzeW10YWIvMTEx OTk6Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1icF9wZXJtYW5lbnQuZXhw CTIwMTAvMDEvMDEgMDc6MzI6MDAJMS4zCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv aTM4Ni1icF9wZXJtYW5lbnQuZXhwCTIwMTAvMDEvMjQgMDQ6Mjk6MzIJMS40Ci1AQCAtNjIsNyAr NjIsNyBAQAotIHNldCBmdW5jdGlvbiBzdGFuZGFyZAotIAotIHNldCByZXRjb2RlIFtnZGJfdGVz dF9tdWx0aXBsZSAiZGlzYXNzZW1ibGUgJGZ1bmN0aW9uIiAiRGlzYXNzZW1ibGUgZnVuY3Rpb24g JyRmdW5jdGlvbiciIHsKLS0gICAgLXJlICIuKigkaGV4KSA8JGZ1bmN0aW9uXFwrMD4uKigkaGV4 KSA8JGZ1bmN0aW9uXFwrND4uKigkaGV4KSA8JGZ1bmN0aW9uXFwrNT4uKigkaGV4KSA8JGZ1bmN0 aW9uXFwrNj4uKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgLXJlICIuKigkaGV4KSA8XFwrMD4uKigk aGV4KSA8XFwrND4uKigkaGV4KSA8XFwrNT4uKigkaGV4KSA8XFwrNj4uKiRnZGJfcHJvbXB0ICQi IHsKLSAgICAgICBzZXQgZnVuY3Rpb25fc3RhcnQgJGV4cGVjdF9vdXQoMSxzdHJpbmcpOwotICAg ICAgIHNldCBhZGRyZXNzICRleHBlY3Rfb3V0KDIsc3RyaW5nKTsKLSAgICAgICBzZXQgYWRkcmVz czEgJGV4cGVjdF9vdXQoMyxzdHJpbmcpOwoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNw ZWMKaW5kZXggODk4NjQ2Ny4uM2ZkMTFiZiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2Ri LnNwZWMKQEAgLTMyLDExICszMiwxMSBAQCBOYW1lOiBnZGIlez9fd2l0aF9kZWJ1ZzotZGVidWd9 CiAjIFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92ZXJzaW9uLmluLgogIyBOT1RFOiB0 aGUgRlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5NIGZvciBvZmZpY2lhbCByZWxlYXNl cywgbGlrZSA2LjMKICMgYW5kLCBzaW5jZSBKYW51YXJ5IDIwMDUsIFguWS5aLmRhdGUgZm9yIGRh aWx5IHNuYXBzaG90cywgbGlrZSA2LjMuNTAuMjAwNTAxMTIgIyAoZGFpbHkgc25hcHNob3QgZnJv bSBtYWlsaW5lKSwgb3IgNi4zLjAuMjAwNDAxMTIgKGhlYWQgb2YgdGhlIHJlbGVhc2UgYnJhbmNo KS4KLVZlcnNpb246IDcuMC41MC4yMDEwMDEyMQorVmVyc2lvbjogNy4wLjUwLjIwMTAwMTI4CiAK ICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIs IHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8g c3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgot UmVsZWFzZTogOSV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0le2Rpc3R9CitSZWxlYXNlOiAx MCV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0le2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKwog R3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtMjQyLDcgKzI0Miw3IEBAIFBhdGNoMjI5 OiBnZGItNi4zLWJ6MTQwNTMyLXBwYy11bndpbmRpbmctdGVzdC5wYXRjaAogUGF0Y2gyMzE6IGdk Yi02LjMtYnoyMDI2ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCiAjIEJhY2twb3J0 ZWQgZml4dXBzIHBvc3QgdGhlIHNvdXJjZSB0YXJiYWxsLgotUGF0Y2gyMzI6IGdkYi11cHN0cmVh bS5wYXRjaAorI1BhdGNoMjMyOiBnZGItdXBzdHJlYW0ucGF0Y2gKIAogIyBUZXN0Y2FzZSBmb3Ig UFBDIFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5IChCWiAyMzAwMDApLgogUGF0 Y2gyMzQ6IGdkYi02LjYtYnoyMzAwMDAtcG93ZXI2LWRpc2Fzc2VtYmx5LXRlc3QucGF0Y2gKQEAg LTM4Niw5ICszODYsNiBAQCBQYXRjaDM4MTogZ2RiLXNpbXVsdGFuZW91cy1zdGVwLXJlc3VtZS1i cmVha3BvaW50LXRlc3QucGF0Y2gKICMgRml4IEdOVS9MaW51eCBjb3JlIG9wZW46IENhbid0IHJl YWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRwdXQgZXJyb3IuCiBQYXRjaDM4Mjog Z2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKIAotIyBTdXBwb3J0IEdOVSBJRlVOQ3Mg LSBpbmRpcmVjdCBmdW5jdGlvbnMgKEJaIDUzOTU5MCkuCi1QYXRjaDM4NzogZ2RiLWJ6NTM5NTkw LWdudS1pZnVuYy5wYXRjaAotCiAjIEZpeCBjYWxsYmFjay1tb2RlIHJlYWRsaW5lLTYuMCByZWdy ZXNzaW9uIGZvciBDVFJMLUMuCiBQYXRjaDM5MDogZ2RiLXJlYWRsaW5lLTYuMC1zaWduYWwucGF0 Y2gKIApAQCAtNDI3LDE1ICs0MjQsOSBAQCBQYXRjaDQwNzogZ2RiLWxpbmVuby1tYWtldXAtdGVz dC5wYXRjaAogIyBUZXN0IHBvd2VyNyBwcGMgZGlzYXNzZW1ibHkuCiBQYXRjaDQwODogZ2RiLXBw Yy1wb3dlcjctdGVzdC5wYXRjaAogCi0jIEZpeCBzb2xpYi1kaXNwbGF5LmV4cCBjcmFzaAotUGF0 Y2g0MTE6IGdkYi1zb2xpYi1kaXNwbGF5LnBhdGNoCi0KICMgUmV2ZXJ0OiBBZGQgLVd1bnVzZWQt ZnVuY3Rpb24gdG8gY29tcGlsZSBmbGFncy4KIFBhdGNoNDEyOiBnZGItdW51c2VkLXJldmVydC5w YXRjaAogCi0jIFJldmVydCBGU0YgR0RCIGdkYnNlcnZlciB0cmFjZXBvaW50cyBhcyBpbmNvbXBs ZXRlIG5vdy4KLVBhdGNoNDEzOiBnZGItZ2Ric2VydmVyLXRyYWNlcG9pbnQtcmV2ZXJ0LnBhdGNo Ci0KICMgSXQgbWF5IGNyYXNoIGhlcmUgYnV0IGl0IGlzIG5vdCB1bmRlcnN0b29kIHdoeS4KIFBh dGNoNDE0OiBnZGItYXJjaGVyLXBpZS1hc3NlcnQtdGVtcC13b3JrYXJvdW5kLnBhdGNoCiAKQEAg LTU3Myw3ICs1NjQsNyBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpj LWV4cC5jIGdkYi9wLWV4cC5jCiAKICVpZiAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKLSVwYXRj aDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKICVwYXRjaDEyNCAtcDEKICVw YXRjaDEgLXAxCkBAIC02NDIsNyArNjMzLDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1l eHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMjcxIC1wMQogJXBhdGNoMjc0 IC1wMQogJXBhdGNoMzUzIC1wMQotJXBhdGNoNDE1IC1wMQogJXBhdGNoMjgyIC1wMQogJXBhdGNo Mjg0IC1wMQogJXBhdGNoMjg3IC1wMQpAQCAtNjc0LDcgKzY2NCw2IEBAIHJtIC1mIGdkYi9qdi1l eHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDM2MCAt cDEKICVwYXRjaDM4MSAtcDEKICVwYXRjaDM4MiAtcDEKLSVwYXRjaDM4NyAtcDEKICVwYXRjaDM5 MCAtcDEKICVwYXRjaDM5MSAtcDEKICVwYXRjaDM5MiAtcDEKQEAgLTY4OCwxNiArNjc3LDIwIEBA IHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhw LmMKICVwYXRjaDQwNiAtcDEKICVwYXRjaDQwNyAtcDEKICVwYXRjaDQwOCAtcDEKLSVwYXRjaDQx MSAtcDEKICVwYXRjaDQxMiAtcDEKLSVwYXRjaDQxMyAtcDEKLSMgQWx3YXlzIHZlcmlmeSBpdHMg YXBwbGljYWJpbGl0eS4KICVwYXRjaDQxNCAtcDEKKyVwYXRjaDQxNSAtcDEKKyVwYXRjaDM5MyAt cDEKKyVwYXRjaDMzNSAtcDEKKyMgUGF0Y2g0MTQ6IGdkYi1hcmNoZXItcGllLWFzc2VydC10ZW1w LXdvcmthcm91bmQucGF0Y2gKKyMgSXQgbWF5IGNyYXNoIGhlcmUgYnV0IGl0IGlzIG5vdCB1bmRl cnN0b29kIHdoeS4KKyMgUGF0Y2g0MTU6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1h cmcucGF0Y2gKKyMgQ3VycmVudGx5IGRpc2FibGVkIGZvciBSSEVMIGFzIGl0IGlzIGEgbmV3IGV4 cGVyaW1lbnRhbCBmZWF0dXJlIG5vdCBwcmVzZW50CisjIGluIEZTRiBHREIgYW5kIHBvc3NpYmx5 IGFmZmVjdGluZyBuZXcgdXNlciBzY3JpcHRzLgogJWlmIDAleyE/cmhlbDoxfQogJXBhdGNoNDE0 IC1wMSAtUgorJXBhdGNoNDE1IC1wMSAtUgogJWVuZGlmCi0lcGF0Y2gzOTMgLXAxCi0lcGF0Y2gz MzUgLXAxCiAlaWYgMCV7IT9lbDU6MX0KICVwYXRjaDM5MyAtcDEgLVIKICVwYXRjaDMzNSAtcDEg LVIKQEAgLTEwMjAsNiArMTAxMywxNCBAQCBmaQogJWVuZGlmCiAKICVjaGFuZ2Vsb2cKKyogVGh1 IEphbiAyOCAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAt IDcuMC41MC4yMDEwMDEyOC0xMC5mYzEzCistIFVwZ3JhZGUgdG8gdGhlIEZTRiBHREIgc25hcHNo b3Q6IDcuMC41MC4yMDEwMDEyOAorLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMyBjb21t aXQ6IDM5YzVhOGI3NWZhZDNhY2Q3MjA0OTAzZGI1ZGVlMDI1MDU1YTQ1OTQKKyAgLSBGaXggYSBy ZWdyZXNzaW9uIG9uICJBQUE6OkFMUEhBIiB0ZXN0IGR1ZSB0byBhIG1lcmdlIGZyb20gRlNGIEdE Qi4KKy0gRml4IGEgcmVncmVzc2lvbiBvZiBwcmV2aW91cyByZWxlYXNlIGR1ZSB0byBmYWxzZSBp ZGVudGlmaWNhdGlvbiBhcyBjb3JlIGZpbGUuCistIE1vdmUgaWZ1bmMgLnBhdGNoIGludG8gdGhl IEdJVC1tYW5hZ2VkIGFyY2hlci1qYW5rcmF0b2NodmlsLWZlZG9yYTEzIGJyYW5jaC4KKy0gVXBk YXRlIGdkYi5waWUvY29yZWZpbGUuZXhwIGZyb20gMjAwNy0wMS0yNiBGU0YgR0RCIGNvbW1pdCBi eSBBbmRyZWFzIFNjaHdhYi4KKwogKiBNb24gSmFuIDI1IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjUwLjIwMTAwMTIxLTkuZmMxMwogLSBFbmFi bGUgbG9hZGluZyBhIGNvcmUgZmlsZSBqdXN0IGFzIGEgc2luZ2xlIGFyZ3VtZW50IHRvIC91c3Iv YmluL2dkYi4KIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDdmYTZhNDQu Ljk0ODc4NmYgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIg QEAKLWZjZmJlNmNjYjM2ZDg2YmMwNjg5MWZiZDcwZjE2NjRkICBnZGItNy4wLjUwLjIwMTAwMTIx LnRhci5iejIKKzA1N2M5ZDA4OGNkNjc2Mzk2ZTBjYWFlOWQzYWRhODc5ICBnZGItNy4wLjUwLjIw MTAwMTI4LnRhci5iejIKIDA0ZTVjNGIxYjllNjMzNDIyY2M0ODk5MGZlNjE5NThkICBsaWJzdGRj KystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6Mgo=