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: - archer-jankratochvil-fedora12 commit: Date: Thu, 23 Jul 2026 18:29:11 GMT Message-ID: <178483135163.1.8195429730246616500.rpms-gdb-6370c17fdf8f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 6370c17fdf8f9ed891910ec6e90bdf99e7215f72 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogNjM3MGMxN2ZkZjhmOWVkODkxOTEwZWM2ZTkwYmRmOTllNzIxNWY3Mgog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMDktMDgtMThUMTk6Mzc6MzUrMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzE4NTMvLTE2IGluIDIgZmlsZShzKQogICAgICAgICAgICBVUkwg ICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzYzNzBjMTdmZGY4 ZjllZDg5MTkxMGVjNmU5MGJkZjk5ZTcyMTVmNzI/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAgICAg ICAgICAgIExvZzoKICAgICAgICAgICAgLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMiBj b21taXQ6CiAgICA4NTBlM2NiMzhhMjVjYjdmZGZhNGNlZjY2NzYyNmZmYmRlNTFiY2FjCi0gRml4 IHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50cy4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5w YXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggMTVjZDdlZC4uMDhjYTRlZCAxMDA2NDQKLS0t IGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDcgKzIsNyBA QCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3Nv dXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBz aG90OgotY29tbWl0IDVlMGQxY2M3NGYxMTkzOTFhMmMzYWUyNWVmNTc0OWZjMjg2NzRmMDYKK2Nv bW1pdCA4NTBlM2NiMzhhMjVjYjdmZGZhNGNlZjY2NzYyNmZmYmRlNTFiY2FjCiAKIGJyYW5jaCBg YXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci10cm9tZXktY2FsbC1mcmFt ZS1jZmEKQEAgLTI5MCw2ICsyOTAsMTAyIEBAIGluZGV4IDliNWQyYzYuLjYxNjc2YTkgMTAwNjQ0 CiAgICBhZGFfb3BfbmFtZSwKICAgIGFkYV9kdW1wX3N1YmV4cF9ib2R5LAogICAgYWRhX2V2YWx1 YXRlX3N1YmV4cAorZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYyBiL2dkYi9hbWQ2 NC1saW51eC1uYXQuYworaW5kZXggN2Q4NDYxYy4uYTZkMzVkNyAxMDA2NDQKKy0tLSBhL2dkYi9h bWQ2NC1saW51eC1uYXQuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCitAQCAtMjcwLDYg KzI3MCw4IEBAIGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZF90IHB0aWQsIGludCByZWdudW0pCisg ICByZXR1cm4gdmFsdWU7CisgfQorIAorKy8qIFNldCBkZWJ1ZyByZWdpc3RlciBSRUdOVU0gdG8g VkFMVUUgaW4gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KKysKKyBzdGF0aWMgdm9pZAor IGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZF90IHB0aWQsIGludCByZWdudW0sIHVuc2lnbmVkIGxv bmcgdmFsdWUpCisgeworQEAgLTI4Niw2ICsyODgsOCBAQCBhbWQ2NF9saW51eF9kcl9zZXQgKHB0 aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQorICAgICBwZXJyb3Jf d2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyByZWdpc3RlciIpKTsKKyB9CisgCisr LyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCisr Cisgc3RhdGljIHZvaWQKKyBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9u ZyBjb250cm9sKQorIHsKK0BAIC0yOTcsNiArMzAxLDggQEAgYW1kNjRfbGludXhfZHJfc2V0X2Nv bnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKKyAgICAgYW1kNjRfbGludXhfZHJfc2V0IChw dGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKKyB9CisgCisrLyogU2V0IGFkZHJlc3MgUkVHTlVN ICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KKysKKyBz dGF0aWMgdm9pZAorIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FE RFIgYWRkcikKKyB7CitAQCAtMzEwLDE4ICszMTYsNTUgQEAgYW1kNjRfbGludXhfZHJfc2V0X2Fk ZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorICAgICBhbWQ2NF9saW51eF9kcl9zZXQg KHB0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7CisgfQorIAorKy8qIFNldCBhZGRy ZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4g ICovCisrCisgc3RhdGljIHZvaWQKKyBhbWQ2NF9saW51eF9kcl9yZXNldF9hZGRyIChpbnQgcmVn bnVtKQorIHsKKyAgIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChyZWdudW0sIDApOworIH0KKyAK KysvKiBHZXQgRFJfU1RBVFVTIGZyb20gb25seSB0aGUgb25lIExXUCBvZiBJTkZFUklPUl9QVElE LiAgKi8KKysKKyBzdGF0aWMgdW5zaWduZWQgbG9uZworIGFtZDY0X2xpbnV4X2RyX2dldF9zdGF0 dXMgKHZvaWQpCisgeworICAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRp ZCwgRFJfU1RBVFVTKTsKKyB9CisgCisrLyogVW5zZXQgVkFMVUUgYml0cyBpbiBEUl9TVEFUVVMg aW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAqLworKworK3N0YXRpYyB2b2lkCisrYW1kNjRfbGlu dXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCisreworKyAgc3RydWN0IGx3 cF9pbmZvICpscDsKKysgIHB0aWRfdCBwdGlkOworKworKyAgQUxMX0xXUFMgKGxwLCBwdGlkKQor KyAgICB7CisrICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKKysgICAgICAKKysgICAgICB2YWx1 ZSA9IGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsKKysgICAgICB2YWx1ZSAm PSB+bWFzazsKKysgICAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERSX1NUQVRVUywgdmFs dWUpOworKyAgICB9CisrfQorKworKy8qIFNlZSBpMzg2X2RyX2xvd190eXBlLmRldGFjaC4gIERv IG5vdCB1c2Ugd3JhcHBlcnMgYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wKKysgICBvciBhbWQ2 NF9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBj YWNoZQorKyAgIChhbWQ2NF9saW51eF9kcikuICAqLworKworK3N0YXRpYyB2b2lkCisrYW1kNjRf bGludXhfZHJfZGV0YWNoICh2b2lkKQorK3sKKysgIGludCByZWdudW07CisrCisrICBhbWQ2NF9s aW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0NPTlRST0wsIDApOworKyAgYW1kNjRfbGlu dXhfZHJfdW5zZXRfc3RhdHVzICh+MFVMKTsKKysgIGZvciAocmVnbnVtID0gRFJfRklSU1RBRERS OyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJlZ251bSsrKQorKyAgICBhbWQ2NF9saW51eF9kcl9z ZXQgKGluZmVyaW9yX3B0aWQsIHJlZ251bSwgMCk7CisrfQorKworIHN0YXRpYyB2b2lkCisgYW1k NjRfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCisgeworQEAgLTY3Miw2ICs3MTUsOCBA QCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQgKHZvaWQpCisgICBpMzg2X2RyX2xvdy5zZXRf YWRkciA9IGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyOworICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRk ciA9IGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CisgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVz ID0gYW1kNjRfbGludXhfZHJfZ2V0X3N0YXR1czsKKysgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1 cyA9IGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKKysgIGkzODZfZHJfbG93LmRldGFjaCA9 IGFtZDY0X2xpbnV4X2RyX2RldGFjaDsKKyAgIGkzODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0 aCAoOCk7CisgCisgICAvKiBPdmVycmlkZSB0aGUgR05VL0xpbnV4IGluZmVyaW9yIHN0YXJ0dXAg aG9vay4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwogaW5kZXgg MTg4OWVjZC4uMzdmYTM0MiAxMDA2NDQKIC0tLSBhL2dkYi9ibG9jay5jCkBAIC0zNjgsNyArNDY0 LDcgQEAgaW5kZXggNTNlNzM3MS4uZDM3M2Y4YSAxMDA2NDQKICsKICAjZW5kaWYgLyogQkxPQ0tf SCAqLwogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1p bmRleCBmMzk0MGUxLi43MDIyMmE0IDEwMDY0NAoraW5kZXggZjM5NDBlMS4uMjM0OWZiYyAxMDA2 NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50LmMKIEBAIC01 OSw2ICs1OSw3IEBACkBAIC00NzcsNyArNTczLDk3IEBAIGluZGV4IGYzOTQwZTEuLjcwMjIyYTQg MTAwNjQ0CiAgCXJldHVybjsKICAgICAgICB9CiAgCi1AQCAtODg0Myw2ICs4ODU2LDIyIEBAIGFs bF90cmFjZXBvaW50cyAoKQorQEAgLTE2OTAsNiArMTcwMyw3IEBAIGRldGFjaF9icmVha3BvaW50 cyAoaW50IHBpZCkKKyAgICAgaWYgKGItPmluc2VydGVkKQorICAgICAgIHZhbCB8PSByZW1vdmVf YnJlYWtwb2ludCAoYiwgbWFya19pbnNlcnRlZCk7CisgICB9CisrICB2YWwgfD0gdGFyZ2V0X2Rl dGFjaF93YXRjaHBvaW50cyAoKTsKKyAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworICAgcmV0 dXJuIHZhbDsKKyB9CitAQCAtMTc4MiwxMiArMTc5NiwxNCBAQCByZW1vdmVfYnJlYWtwb2ludCAo c3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKKyAJcmV0dXJuIHZh bDsKKyAgICAgICBiLT5pbnNlcnRlZCA9IChpcyA9PSBtYXJrX2luc2VydGVkKTsKKyAgICAgfQor LSAgZWxzZSBpZiAoYi0+bG9jX3R5cGUgPT0gYnBfbG9jX2hhcmR3YXJlX3dhdGNocG9pbnQpCisr ICAvKiBicF9sb2NfaGFyZHdhcmVfd2F0Y2hwb2ludCB3aXRoIG1hcmtfaW5zZXJ0ZWQgaXMgYmVp bmcgaGFuZGxlZCBieQorKyAgICAgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cy4gICovCisrICBl bHNlIGlmIChiLT5sb2NfdHlwZSA9PSBicF9sb2NfaGFyZHdhcmVfd2F0Y2hwb2ludCAmJiBpcyA9 PSBtYXJrX3VuaW5zZXJ0ZWQpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgdmFsdWUgKnY7CisgICAg ICAgc3RydWN0IHZhbHVlICpuOworIAorLSAgICAgIGItPmluc2VydGVkID0gKGlzID09IG1hcmtf aW5zZXJ0ZWQpOworKyAgICAgIGItPmluc2VydGVkID0gMDsKKyAgICAgICB2YWwgPSB0YXJnZXRf cmVtb3ZlX3dhdGNocG9pbnQgKGItPmFkZHJlc3MsIGItPmxlbmd0aCwgCisgCQkJCSAgICAgIGIt PndhdGNocG9pbnRfdHlwZSk7CisgCitAQCAtMjk2MSw4ICsyOTc3LDEyIEBAIGJwc3RhdF9jaGVj a19sb2NhdGlvbiAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwgQ09SRV9BRERSIGJwX2Fk ZHIpCisgCisgLyogSWYgQlMgcmVmZXJzIHRvIGEgd2F0Y2hwb2ludCwgZGV0ZXJtaW5lIGlmIHRo ZSB3YXRjaGVkIHZhbHVlcworICAgIGhhcyBhY3R1YWxseSBjaGFuZ2VkLCBhbmQgd2Ugc2hvdWxk IHN0b3AuICBJZiBub3QsIHNldCBCUy0+c3RvcAorLSAgIHRvIDAuICAqLworLXN0YXRpYyB2b2lk CisrICAgdG8gMC4KKysgICBSZXR1cm4gMCBmb3Igd2F0Y2hwb2ludHMgd2hpY2ggY291bGQgbm90 IGJlIHRoZSBjYXVzZSBvZiB0aGlzIHRyYXAuCisrICAgSW4gc3VjaCBjYXNlIFBSSU5UX0lUIHdp bGwgYmUgcHJpbnRfaXRfbm9vcCBhbmQgU1RPUCB3aWxsIGJlIDAuCisrICAgT3RoZXJ3aXNlIHJl dHVybiAxIGJ1dCBpbiBzdWNoIGNhc2UgaXQgaXMgbm90IGd1YXJhbnRlZWQgd2hldGhlciB0aGlz CisrICAgYnJlYWtwb2ludCBkaWQgb3IgZGlkIG5vdCB0cmlnZ2VyIHRoaXMgdHJhcC4gICovCisr c3RhdGljIGludAorIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCisgeworICAg Y29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCA9IGJzLT5icmVha3BvaW50X2F0OworQEAgLTMw NTEsOCArMzA3MSwxMCBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnBzdGF0IGJzKQorIAkg ICAgIGFueXRoaW5nIGZvciB0aGlzIHdhdGNocG9pbnQuICAqLworIAkgIGJzLT5wcmludF9pdCA9 IHByaW50X2l0X25vb3A7CisgCSAgYnMtPnN0b3AgPSAwOworKwkgIHJldHVybiAwOworIAl9Cisg ICAgIH0KKysgIHJldHVybiAxOworIH0KKyAKKyAKK0BAIC0zMTU2LDYgKzMxNzgsOCBAQCBicHN0 YXRfc3RvcF9zdGF0dXMgKENPUkVfQUREUiBicF9hZGRyLCBwdGlkX3QgcHRpZCkKKyAKKyAgIEFM TF9CUF9MT0NBVElPTlMgKGJsKQorICAgeworKyAgICBicHN0YXQgYnNfcHJldiA9IGJzOworKwor ICAgICBiID0gYmwtPm93bmVyOworICAgICBnZGJfYXNzZXJ0IChiKTsKKyAgICAgaWYgKCFicmVh a3BvaW50X2VuYWJsZWQgKGIpICYmIGItPmVuYWJsZV9zdGF0ZSAhPSBicF9wZXJtYW5lbnQpCitA QCAtMzE3Niw2ICszMjAwLDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChDT1JFX0FERFIgYnBfYWRk ciwgcHRpZF90IHB0aWQpCisgICAgIC8qIENvbWUgaGVyZSBpZiBpdCdzIGEgd2F0Y2hwb2ludCwg b3IgaWYgdGhlIGJyZWFrIGFkZHJlc3MgbWF0Y2hlcyAqLworIAorICAgICBicyA9IGJwc3RhdF9h bGxvYyAoYmwsIGJzKTsJLyogQWxsb2MgYSBicHN0YXQgdG8gZXhwbGFpbiBzdG9wICovCisrICAg IGdkYl9hc3NlcnQgKGJzX3ByZXYtPm5leHQgPT0gYnMpOworIAorICAgICAvKiBBc3N1bWUgd2Ug c3RvcC4gIFNob3VsZCB3ZSBmaW5kIHdhdGNocG9pbnQgdGhhdCBpcyBub3QgYWN0dWFsbHkKKyAg ICAgICAgdHJpZ2dlcmVkLCBvciBpZiBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBpcyBmYWxzZSwg d2UnbGwgcmVzZXQKK0BAIC0zMTgzLDkgKzMyMDgsMTggQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChD T1JFX0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCisgICAgIGJzLT5zdG9wID0gMTsKKyAgICAg YnMtPnByaW50ID0gMTsKKyAKKy0gICAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJzKTsKKy0g ICAgaWYgKCFicy0+c3RvcCkKKy0gICAgICBjb250aW51ZTsKKysgICAgaWYgKCFicHN0YXRfY2hl Y2tfd2F0Y2hwb2ludCAoYnMpKQorKyAgICAgIHsKKysJLyogRW5zdXJlIGJwc3RhdF9leHBsYWlu c19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKKysJICAgdGhlIGNh dXNlIG9mIHRoaXMgdHJhcC4gICovCisrCisrCWdkYl9hc3NlcnQgKGJzLT5wcmludF9pdCA9PSBw cmludF9pdF9ub29wKTsKKysJZ2RiX2Fzc2VydCAoIWJzLT5zdG9wKTsKKysJeGZyZWUgKGJzKTsK KysJYnMgPSBic19wcmV2OworKwlicy0+bmV4dCA9IE5VTEw7CisrCWNvbnRpbnVlOworKyAgICAg IH0KKyAKKyAgICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0g YnBfb3ZlcmxheV9ldmVudAorIAl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyKQorQEAg LTg4NDMsNiArODg3NywyMiBAQCBhbGxfdHJhY2Vwb2ludHMgKCkKICAgIHJldHVybiB0cF92ZWM7 CiAgfQogIApAQCAtNTAwLDcgKzY4Niw3IEBAIGluZGV4IGYzOTQwZTEuLjcwMjIyYTQgMTAwNjQ0 CiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJlYWss IHRicmVhayBhbmQgdGhicmVhayBjb21tYW5kcy4KICAgICBJdCBpcyBkZWZpbmVkIGFzIGEgbWFj cm8gdG8gcHJldmVudCBkdXBsaWNhdGlvbi4KLUBAIC05MzQ1LDQgKzkzNzQsNSBAQCBpbmZlcmlv ciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0ZWQgbW9k ZSBpcyBvZmYuIiksCitAQCAtOTM0NSw0ICs5Mzk1LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3Ag bW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAog ICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0 dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwpAQCAt MTAzNjIsNiArMTA1NDgsMjc0IEBAIGluZGV4IDVlNTU1NzMuLjU0MzlhYmEgMTAwNjQ0CiAgIyBU aGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24KICAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3Ry aWJ1dGUgaXQsCiAgIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0 aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtbmF0 LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYworaW5kZXggOTkxYjI3Zi4uNDExYjQxYiAxMDA2NDQK Ky0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCisrKysgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwor QEAgLTU4Niw2ICs1ODYsOCBAQCBpMzg2X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAo c3RydWN0IHRhcmdldF9vcHMgKm9wcywKKyAKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyBpMzg2X2xp bnV4X2RyW0RSX0NPTlRST0wgKyAxXTsKKyAKKysvKiBHZXQgZGVidWcgcmVnaXN0ZXIgUkVHTlVN IHZhbHVlIGZyb20gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KKysKKyBzdGF0aWMgdW5z aWduZWQgbG9uZworIGkzODZfbGludXhfZHJfZ2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSkK KyB7CitAQCAtNjE0LDYgKzYxNiw4IEBAIGkzODZfbGludXhfZHJfZ2V0IChwdGlkX3QgcHRpZCwg aW50IHJlZ251bSkKKyAgIHJldHVybiB2YWx1ZTsKKyB9CisgCisrLyogU2V0IGRlYnVnIHJlZ2lz dGVyIFJFR05VTSB0byBWQUxVRSBpbiBvbmx5IHRoZSBvbmUgTFdQIG9mIFBUSUQuICAqLworKwor IHN0YXRpYyB2b2lkCisgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVt LCB1bnNpZ25lZCBsb25nIHZhbHVlKQorIHsKK0BAIC02MzAsNiArNjM0LDggQEAgaTM4Nl9saW51 eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQor ICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyByZWdpc3RlciIp KTsKKyB9CisgCisrLyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1Bf TElTVC4gICovCisrCisgc3RhdGljIHZvaWQKKyBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sICh1 bnNpZ25lZCBsb25nIGNvbnRyb2wpCisgeworQEAgLTY0MSw2ICs2NDcsOCBAQCBpMzg2X2xpbnV4 X2RyX3NldF9jb250cm9sICh1bnNpZ25lZCBsb25nIGNvbnRyb2wpCisgICAgIGkzODZfbGludXhf ZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKKyB9CisgCisrLyogU2V0IGFkZHJl c3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAg Ki8KKysKKyBzdGF0aWMgdm9pZAorIGkzODZfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0s IENPUkVfQUREUiBhZGRyKQorIHsKK0BAIC02NTQsMTggKzY2Miw1NSBAQCBpMzg2X2xpbnV4X2Ry X3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FERFIgYWRkcikKKyAgICAgaTM4Nl9saW51eF9k cl9zZXQgKHB0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7CisgfQorIAorKy8qIFNl dCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQcyBvZiBMV1Bf TElTVC4gICovCisrCisgc3RhdGljIHZvaWQKKyBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHIgKGlu dCByZWdudW0pCisgeworICAgaTM4Nl9saW51eF9kcl9zZXRfYWRkciAocmVnbnVtLCAwKTsKKyB9 CisgCisrLyogR2V0IERSX1NUQVRVUyBmcm9tIG9ubHkgdGhlIG9uZSBMV1Agb2YgSU5GRVJJT1Jf UFRJRC4gICovCisrCisgc3RhdGljIHVuc2lnbmVkIGxvbmcKKyBpMzg2X2xpbnV4X2RyX2dldF9z dGF0dXMgKHZvaWQpCisgeworICAgcmV0dXJuIGkzODZfbGludXhfZHJfZ2V0IChpbmZlcmlvcl9w dGlkLCBEUl9TVEFUVVMpOworIH0KKyAKKysvKiBVbnNldCBWQUxVRSBiaXRzIGluIERSX1NUQVRV UyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCisrCisrc3RhdGljIHZvaWQKKytpMzg2X2xp bnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorK3sKKysgIHN0cnVjdCBs d3BfaW5mbyAqbHA7CisrICBwdGlkX3QgcHRpZDsKKysKKysgIEFMTF9MV1BTIChscCwgcHRpZCkK KysgICAgeworKyAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CisrICAgICAgCisrICAgICAgdmFs dWUgPSBpMzg2X2xpbnV4X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsKKysgICAgICB2YWx1ZSAm PSB+bWFzazsKKysgICAgICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfU1RBVFVTLCB2YWx1 ZSk7CisrICAgIH0KKyt9CisrCisrLyogU2VlIGkzODZfZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8g bm90IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sCisrICAgb3IgaTM4Nl9s aW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNo ZQorKyAgIChpMzg2X2xpbnV4X2RyKS4gICovCisrCisrc3RhdGljIHZvaWQKKytpMzg2X2xpbnV4 X2RyX2RldGFjaCAodm9pZCkKKyt7CisrICBpbnQgcmVnbnVtOworKworKyAgaTM4Nl9saW51eF9k cl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0NPTlRST0wsIDApOworKyAgaTM4Nl9saW51eF9kcl91 bnNldF9zdGF0dXMgKH4wVUwpOworKyAgZm9yIChyZWdudW0gPSBEUl9GSVJTVEFERFI7IHJlZ251 bSA8PSBEUl9MQVNUQUREUjsgcmVnbnVtKyspCisrICAgIGkzODZfbGludXhfZHJfc2V0IChpbmZl cmlvcl9wdGlkLCByZWdudW0sIDApOworK30KKysKKyBzdGF0aWMgdm9pZAorIGkzODZfbGludXhf bmV3X3RocmVhZCAocHRpZF90IHB0aWQpCisgeworQEAgLTgzMiw2ICs4NzcsOCBAQCBfaW5pdGlh bGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKKyAgIGkzODZfZHJfbG93LnNldF9hZGRyID0gaTM4 Nl9saW51eF9kcl9zZXRfYWRkcjsKKyAgIGkzODZfZHJfbG93LnJlc2V0X2FkZHIgPSBpMzg2X2xp bnV4X2RyX3Jlc2V0X2FkZHI7CisgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0gaTM4Nl9saW51 eF9kcl9nZXRfc3RhdHVzOworKyAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gaTM4Nl9saW51 eF9kcl91bnNldF9zdGF0dXM7CisrICBpMzg2X2RyX2xvdy5kZXRhY2ggPSBpMzg2X2xpbnV4X2Ry X2RldGFjaDsKKyAgIGkzODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAoNCk7CisgCisgICAv KiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJhY2UgcmVzdW1lIG1ldGhvZC4gICovCitkaWZmIC0t Z2l0IGEvZ2RiL2kzODYtbmF0LmMgYi9nZGIvaTM4Ni1uYXQuYworaW5kZXggYWIxYmQ4YS4uZWUz MzBiOCAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LW5hdC5jCisrKysgYi9nZGIvaTM4Ni1uYXQuYwor QEAgLTEzNyw4ICsxMzcsMTEgQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUgaTM4Nl9kcl9sb3c7 CisgI2RlZmluZSBJMzg2X0RSX0dFVF9SV19MRU4oaSkgXAorICAgKChkcl9jb250cm9sX21pcnJv ciA+PiAoRFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRST0xfU0laRSAqIChpKSkpICYgMHgwZikK KyAKKysvKiBNYXNrIHRoYXQgdGhpcyBJJ3RoIHdhdGNocG9pbnQgaGFzIHRyaWdnZXJlZC4gICov CisrI2RlZmluZSBJMzg2X0RSX1dBVENIX01BU0soaSkJKDEgPDwgKGkpKQorKworIC8qIERpZCB0 aGUgd2F0Y2hwb2ludCB3aG9zZSBhZGRyZXNzIGlzIGluIHRoZSBJJ3RoIHJlZ2lzdGVyIGJyZWFr PyAgKi8KKy0jZGVmaW5lIEkzODZfRFJfV0FUQ0hfSElUKGkpCShkcl9zdGF0dXNfbWlycm9yICYg KDEgPDwgKGkpKSkKKysjZGVmaW5lIEkzODZfRFJfV0FUQ0hfSElUKGkpCShkcl9zdGF0dXNfbWly cm9yICYgSTM4Nl9EUl9XQVRDSF9NQVNLIChpKSkKKyAKKyAvKiBBIG1hY3JvIHRvIGxvb3Agb3Zl ciBhbGwgZGVidWcgcmVnaXN0ZXJzLiAgKi8KKyAjZGVmaW5lIEFMTF9ERUJVR19SRUdJU1RFUlMo aSkJZm9yIChpID0gMDsgaSA8IERSX05BRERSOyBpKyspCitAQCAtMzU4LDYgKzM2MSwxMCBAQCBp Mzg2X2luc2VydF9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCB1bnNpZ25lZCBs ZW5fcndfYml0cykKKyAgIGkzODZfZHJfbG93LnNldF9hZGRyIChpLCBhZGRyKTsKKyAgIGkzODZf ZHJfbG93LnNldF9jb250cm9sIChkcl9jb250cm9sX21pcnJvcik7CisgCisrICAvKiBPbmx5IGEg c2FuaXR5IGNoZWNrIGZvciBsZWZ0b3ZlciBiaXRzIChzZXQgcG9zc2libHkgb25seSBieSBpbmZl cmlvcikuICAqLworKyAgaWYgKGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cykKKysgICAgaTM4Nl9k cl9sb3cudW5zZXRfc3RhdHVzIChJMzg2X0RSX1dBVENIX01BU0sgKGkpKTsKKysKKyAgIHJldHVy biAwOworIH0KKyAKK0BAIC0zODcsNiArMzk0LDExIEBAIGkzODZfcmVtb3ZlX2FsaWduZWRfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQorIAkgICAgICBp Mzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfY29udHJvbF9taXJyb3IpOworIAkgICAgICBpZiAo aTM4Nl9kcl9sb3cucmVzZXRfYWRkcikKKyAJCWkzODZfZHJfbG93LnJlc2V0X2FkZHIgKGkpOwor KworKwkgICAgICAvKiBTdGF0dXMgbXVzdCBiZSBhbHJlYWR5IHF1ZXJpZWQgZm9yIGVhY2ggTFdQ LiAgT3RoZXJ3aXNlIGl0IHdpbGwKKysJICAgICAgICAgYmUgbG9zdCBpbiBhbGwtc3RvcCBtb2Rl ICsgYnJlYWtwb2ludCBhbHdheXMtaW5zZXJ0ZWQgb2ZmLiAgKi8KKysJICAgICAgaWYgKGkzODZf ZHJfbG93LnVuc2V0X3N0YXR1cykKKysJCWkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyAoSTM4Nl9E Ul9XQVRDSF9NQVNLIChpKSk7CisgCSAgICB9CisgCSAgcmV0dmFsID0gMDsKKyAJfQorQEAgLTUy MCw2ICs1MzIsMTcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGlu dCBsZW4sIGludCB0eXBlKQorICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCisrLyogU2VlIHRhcmdl dF9kZXRhY2hfd2F0Y2hwb2ludHMuICAqLworKworK3N0YXRpYyBpbnQKKytpMzg2X2RldGFjaF93 YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBpZiAoaTM4Nl9kcl9sb3cuZGV0YWNoKQorKyAgICBp Mzg2X2RyX2xvdy5kZXRhY2ggKCk7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisgLyogUmV0dXJu IG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9yeSByZWdpb24gdGhhdCBzdGFydHMgYXQK KyAgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0ZXMuICAqLworIAor QEAgLTU3NSwyOCArNTk4LDcgQEAgc3RhdGljIGludAorIGkzODZfc3RvcHBlZF9ieV93YXRjaHBv aW50ICh2b2lkKQorIHsKKyAgIENPUkVfQUREUiBhZGRyID0gMDsKKy0gIHJldHVybiBpMzg2X3N0 b3BwZWRfZGF0YV9hZGRyZXNzICgmY3VycmVudF90YXJnZXQsICZhZGRyKTsKKy19CistCistLyog UmV0dXJuIG5vbi16ZXJvIGlmIHRoZSBpbmZlcmlvciBoYXMgc29tZSBicmVhay93YXRjaHBvaW50 IHRoYXQKKy0gICB0cmlnZ2VyZWQuICAqLworLQorLXN0YXRpYyBpbnQKKy1pMzg2X3N0b3BwZWRf YnlfaHdicCAodm9pZCkKKy17CistICBpbnQgaTsKKy0KKy0gIGRyX3N0YXR1c19taXJyb3IgPSBp Mzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOworLSAgaWYgKG1haW50X3Nob3dfZHIpCistICAgIGkz ODZfc2hvd19kciAoInN0b3BwZWRfYnlfaHdicCIsIDAsIDAsIGh3X2V4ZWN1dGUpOworLQorLSAg QUxMX0RFQlVHX1JFR0lTVEVSUyhpKQorLSAgICB7CistICAgICAgaWYgKEkzODZfRFJfV0FUQ0hf SElUIChpKSkKKy0JcmV0dXJuIDE7CistICAgIH0KKy0KKy0gIHJldHVybiAwOworKyAgcmV0dXJu IHRhcmdldF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoJmN1cnJlbnRfdGFyZ2V0LCAmYWRkcik7Cisg fQorIAorIC8qIEluc2VydCBhIGhhcmR3YXJlLWFzc2lzdGVkIGJyZWFrcG9pbnQgYXQgQlBfVEdU LT5wbGFjZWRfYWRkcmVzcy4KK0BAIC02OTAsNiArNjkyLDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2lu dHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3Mg PSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQg PSBpMzg2X2luc2VydF93YXRjaHBvaW50OworICAgdC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBp Mzg2X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gaTM4 Nl9kZXRhY2hfd2F0Y2hwb2ludHM7CisgICB0LT50b19pbnNlcnRfaHdfYnJlYWtwb2ludCA9IGkz ODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7CisgICB0LT50b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9 IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5h dC5oIGIvZ2RiL2kzODYtbmF0LmgKK2luZGV4IGY0OWI5ZjYuLmNkMzE5NTggMTAwNjQ0CistLS0g YS9nZGIvaTM4Ni1uYXQuaAorKysrIGIvZ2RiL2kzODYtbmF0LmgKK0BAIC00OSwxNiArNDksMjMg QEAgZXh0ZXJuIHZvaWQgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICop OworICAgIGZ1bmN0aW9ucyBhcmU6CisgCisgICAgICAgc2V0X2NvbnRyb2wgICAgICAgICAgICAg IC0tIHNldCB0aGUgZGVidWcgY29udHJvbCAoRFI3KQorLQkJCQkgIHJlZ2lzdGVyIHRvIGEgZ2l2 ZW4gdmFsdWUKKysJCQkJICByZWdpc3RlciB0byBhIGdpdmVuIHZhbHVlIGZvciBhbGwgTFdQcwor IAorICAgICAgIHNldF9hZGRyICAgICAgICAgICAgICAgICAtLSBwdXQgYW4gYWRkcmVzcyBpbnRv IG9uZSBkZWJ1ZworLQkJCQkgIHJlZ2lzdGVyCisrCQkJCSAgcmVnaXN0ZXIgZm9yIGFsbCBMV1Bz CisgCisgICAgICAgcmVzZXRfYWRkciAgICAgICAgICAgICAgIC0tIHJlc2V0IHRoZSBhZGRyZXNz IHN0b3JlZCBpbgorLQkJCQkgIG9uZSBkZWJ1ZyByZWdpc3RlcgorKwkJCQkgIG9uZSBkZWJ1ZyBy ZWdpc3RlciBmb3IgYWxsIExXUHMKKyAKKyAgICAgICBnZXRfc3RhdHVzICAgICAgICAgICAgICAg LS0gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZGVidWcKKy0JCQkJICBzdGF0dXMgKERSNikgcmVn aXN0ZXIuCisrCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBjdXJyZW50IExXUAorKwor KyAgICAgIHVuc2V0X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUgc3BlY2lmaWVkIGJp dHMgb2YgdGhlIGRlYnVnCisrCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBhbGwgTFdQ cworKworKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVhciBhbGwgZGVidWcg cmVnaXN0ZXJzIG9mIG9ubHkgdGhlCisrCQkJCSAgSU5GRVJJT1JfUFRJRCB0YXNrIHdpdGhvdXQg YWZmZWN0aW5nIGFueQorKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KKyAKKyAgICBBZGRpdGlvbmFs bHksIHRoZSBuYXRpdmUgZmlsZSBzaG91bGQgc2V0IHRoZSBkZWJ1Z19yZWdpc3Rlcl9sZW5ndGgK KyAgICBmaWVsZCB0byA0IG9yIDggZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNl ZCBmb3IKK0BAIC03MCw2ICs3Nyw4IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlCisgICAgIHZv aWQgKCpzZXRfYWRkcikgKGludCwgQ09SRV9BRERSKTsKKyAgICAgdm9pZCAoKnJlc2V0X2FkZHIp IChpbnQpOworICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3N0YXR1cykgKHZvaWQpOworKyAgICB2 b2lkICgqdW5zZXRfc3RhdHVzKSAodW5zaWduZWQgbG9uZyk7CisrICAgIHZvaWQgKCpkZXRhY2gp ICh2b2lkKTsKKyAgICAgaW50IGRlYnVnX3JlZ2lzdGVyX2xlbmd0aDsKKyAgIH07CisgCitkaWZm IC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCitpbmRleCBlM2VkZGNlLi44OTE3 YWM5IDEwMDY0NAorLS0tIGEvZ2RiL2luZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC0y NjMwLDYgKzI2MzAsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9u X2NvbnRyb2xfc3RhdGUgKmVjcykKKyAKKyAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9w YyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CisgCisrICAgICAgLyogQ2xlYXIg V0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3Vs ZAorKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWdu YWwuICAqLworKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOworKworICAg ICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdCA9IGJwc3RhdF9zdG9wX3N0YXR1cyAo c3RvcF9wYywgZWNzLT5wdGlkKTsKKyAKKyAgICAgICBlY3MtPnJhbmRvbV9zaWduYWwgPSAhYnBz dGF0X2V4cGxhaW5zX3NpZ25hbCAoZWNzLT5ldmVudF90aHJlYWQtPnN0b3BfYnBzdGF0KTsKK0BA IC0yNjY3LDYgKzI2NzEsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKKyAKKyAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVh ZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CisgCisrICAgICAgLyogQ2xl YXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBj b3VsZAorKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19z aWduYWwuICAqLworKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOworKwor ICAgICAgIC8qIFRoaXMgY2F1c2VzIHRoZSBldmVudHBvaW50cyBhbmQgc3ltYm9sIHRhYmxlIHRv IGJlIHJlc2V0LgorICAgICAgICAgIE11c3QgZG8gdGhpcyBub3csIGJlZm9yZSB0cnlpbmcgdG8g ZGV0ZXJtaW5lIHdoZXRoZXIgdG8KKyAgICAgICAgICBzdG9wLiAgKi8KIGRpZmYgLS1naXQgYS9n ZGIvanYtbGFuZy5jIGIvZ2RiL2p2LWxhbmcuYwogaW5kZXggNmI2OGU3ZC4uNTA5NTE4MCAxMDA2 NDQKIC0tLSBhL2dkYi9qdi1sYW5nLmMKQEAgLTEwNTA3LDYgKzEwOTYxLDE1OCBAQCBpbmRleCAz ZTk0M2ExLi4zYjg5NTZjIDEwMDY0NAogIAkgICAgYnVpbGRfY2Fub25pY2FsX2xpbmVfc3BlYyAo dmFsdWVzLnNhbHMsIGNvcHksIGNhbm9uaWNhbCk7CiAgCX0KICAgICAgICByZXR1cm4gdmFsdWVz OworZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYworaW5kZXgg MTMwODg0NC4uZTZmYWQyNCAxMDA2NDQKKy0tLSBhL2dkYi9saW51eC1uYXQuYworKysrIGIvZ2Ri L2xpbnV4LW5hdC5jCitAQCAtMTYyOSw2ICsxNjI5LDcgQEAgcmVzdW1lX2NhbGxiYWNrIChzdHJ1 Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpkYXRhKQorICAgICAgIGxwLT5zdG9wcGVkID0gMDsKKyAg ICAgICBscC0+c3RlcCA9IDA7CisgICAgICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVv ZiAobHAtPnNpZ2luZm8pKTsKKysgICAgICBscC0+d2F0Y2hwb2ludF9oaXRfc2V0ID0gMDsKKyAg ICAgfQorICAgZWxzZSBpZiAobHAtPnN0b3BwZWQgJiYgZGVidWdfbGludXhfbmF0KQorICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJSQzogTm90IHJlc3VtaW5nIHNpYmxpbmcg JXMgKGhhcyBwZW5kaW5nKVxuIiwKK0BAIC0xNzY2LDYgKzE3NjcsNyBAQCBsaW51eF9uYXRfcmVz dW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorIAorICAgbGludXhfb3BzLT50b19yZXN1bWUg KGxpbnV4X29wcywgcHRpZCwgc3RlcCwgc2lnbm8pOworICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8s IDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKysgIGxwLT53YXRjaHBvaW50X2hpdF9zZXQgPSAw OworIAorICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKyAgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorQEAgLTIxNjQsNiArMjE2Niw3OCBAQCBtYXliZV9jbGVhcl9pZ25vcmVfc2ln aW50IChzdHJ1Y3QgbHdwX2luZm8gKmxwKQorICAgICB9CisgfQorIAorKy8qIEZldGNoIHRoZSBw b3NzaWJsZSB0cmlnZ2VyZWQgZGF0YSB3YXRjaHBvaW50IGluZm8gYW5kIHN0b3JlIGl0IHRvIExQ LgorKyAgIFRoZSBoYXJkd2FyZSBkYXRhIHdhdGNocG9pbnQgdHJpZ2dlciBnZXRzIGNsZWFyZWQg ZHVyaW5nIHRoaXMgZmV0Y2guICAqLworKworK3N0YXRpYyB2b2lkCisrc2F2ZV9zaWd0cmFwIChz dHJ1Y3QgbHdwX2luZm8gKmxwKQorK3sKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Cisr CisrICAvKiBsaW51eF9uYXRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgaXMgbm90IGV2ZW4gaW5zdGFs bGVkIGluIHRoaXMgY2FzZS4gICovCisrICBpZiAobGludXhfb3BzLT50b19zdG9wcGVkX2RhdGFf YWRkcmVzcyA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICBvbGRfY2hhaW4gPSBzYXZlX2lu ZmVyaW9yX3B0aWQgKCk7CisrICBpbmZlcmlvcl9wdGlkID0gbHAtPnB0aWQ7CisrCisrICBscC0+ d2F0Y2hwb2ludF9oaXRfc2V0ID0KKysgICAgbGludXhfb3BzLT50b19zdG9wcGVkX2RhdGFfYWRk cmVzcyAoJmN1cnJlbnRfdGFyZ2V0LCAmbHAtPndhdGNocG9pbnRfaGl0KTsKKysKKysgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOworK30KKysKKysvKiBXcmFwIHRhcmdldF9zdG9wcGVkX2RhdGFf YWRkcmVzcyB3aGVyZSB0aGUgR05VL0xpbnV4IG5hdGl2ZSB0YXJnZXQgbWF5IGJlCisrICAgZGly ZWN0ZWQgYnkgdGhlIHdhdGNocG9pbnQvZGVidWcgcmVnaXN0ZXIgbnVtYmVyLiAgQmFzZSB0aGUg cmVwb3J0ZWQgdmFsdWUKKysgICBvbiB0aGUgdHJpZ2dlcmVkIGRhdGEgYWRkcmVzcyBpbnN0ZWFk LiAgRHVyaW5nIGluZmVyaW9yIHN0b3AgdGhlIGFzc2lnbm1lbnQKKysgICBvZiB3YXRjaHBvaW50 L2RlYnVnIHJlZ2lzdGVycyBtYXkgY2hhbmdlIG1ha2luZyB0aGUgcmVnaXN0ZXIgbnVtYmVyIHNw ZWNpZmljCisrICAgdHJpZ2dlciBpbmZvIHN0YWxlLiAgKi8KKysKKytzdGF0aWMgaW50CisrbGlu dXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JF X0FERFIgKmFkZHJfcCkKKyt7CisrICBzdHJ1Y3QgbHdwX2luZm8gKmxwID0gZmluZF9sd3BfcGlk IChpbmZlcmlvcl9wdGlkKTsKKysKKysgIGdkYl9hc3NlcnQgKGxwICE9IE5VTEwpOworKworKyAg KmFkZHJfcCA9IGxwLT53YXRjaHBvaW50X2hpdDsKKysKKysgIHJldHVybiBscC0+d2F0Y2hwb2lu dF9oaXRfc2V0OworK30KKysKKysvKiBJbiBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHdp dGggbXVsdGl0aHJlYWRlZCBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2gKKysgICB3YXRjaHBvaW50 cyBmcm9tIGFsbCB0aGUgTFdQcy4gIEluIHN1Y2ggY2FzZSBJTkZFUklPUl9QVElEIHdpbGwgYmUg dGhlCisrICAgbm9uLXRocmVhZGVkIG5ldyBjaGlsZCB3aGlsZSBMV1BfTElTVCB3aWxsIHN0aWxs IGNvbnRhaW4gYWxsIHRoZSB0aHJlYWRzIG9mCisrICAgdGhlIHBhcmVudCBiZWluZyBkZXRhY2hl ZC4gICovCisrCisrc3RhdGljIGludAorK2xpbnV4X25hdF9kZXRhY2hfd2F0Y2hwb2ludHMgKHZv aWQpCisreworKyAgc3RydWN0IGx3cF9pbmZvICpscDsKKysgIGludCBmb3VuZCA9IDAsIHJldHZh bCA9IDA7CisrICBwdGlkX3QgZmlsdGVyID0gcGlkX3RvX3B0aWQgKHB0aWRfZ2V0X3BpZCAoaW5m ZXJpb3JfcHRpZCkpOworKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IHNhdmVfaW5mZXJp b3JfcHRpZCAoKTsKKysKKysgIGZvciAobHAgPSBsd3BfbGlzdDsgbHA7IGxwID0gbHAtPm5leHQp CisrICAgIGlmIChwdGlkX21hdGNoIChscC0+cHRpZCwgZmlsdGVyKSkKKysgICAgICB7CisrCWlu ZmVyaW9yX3B0aWQgPSBscC0+cHRpZDsKKysJcmV0dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNo X3dhdGNocG9pbnRzICgpOworKwlmb3VuZCA9IDE7CisrICAgICAgfQorKworKyAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CisrCisrICBpZiAoIWZvdW5kKQorKyAgICB7CisrICAgICAgZ2RiX2Fz c2VydCAoIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOworKworKyAgICAgIHJldHZhbCB8PSBsaW51 eF9vcHMtPnRvX2RldGFjaF93YXRjaHBvaW50cyAoKTsKKysgICAgfQorKworKyAgcmV0dXJuIHJl dHZhbDsKKyt9CisrCisgLyogV2FpdCB1bnRpbCBMUCBpcyBzdG9wcGVkLiAgKi8KKyAKKyBzdGF0 aWMgaW50CitAQCAtMjIxNSw2ICsyMjg5LDggQEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3Qg bHdwX2luZm8gKmxwLCB2b2lkICpkYXRhKQorIAkgICAgICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2ln aW5mbyBpbiBjYXNlIHdlIG5lZWQgaXQgbGF0ZXIuICAqLworIAkgICAgICBzYXZlX3NpZ2luZm8g KGxwKTsKKyAKKysJICAgICAgc2F2ZV9zaWd0cmFwIChscCk7CisrCisgCSAgICAgIC8qIE5vdyBy ZXN1bWUgdGhpcyBMV1AgYW5kIGdldCB0aGUgU0lHU1RPUCBldmVudC4gKi8KKyAJICAgICAgZXJy bm8gPSAwOworIAkgICAgICBwdHJhY2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQIChscC0+cHRpZCks IDAsIDApOworQEAgLTI1NzksOSArMjY1NSwxMyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChp bnQgbHdwaWQsIGludCBzdGF0dXMsIGludCBvcHRpb25zKQorICAgICAgIGFkZF90aHJlYWQgKGxw LT5wdGlkKTsKKyAgICAgfQorIAorLSAgLyogU2F2ZSB0aGUgdHJhcCdzIHNpZ2luZm8gaW4gY2Fz ZSB3ZSBuZWVkIGl0IGxhdGVyLiAgKi8KKyAgIGlmIChXSUZTVE9QUEVEIChzdGF0dXMpICYmIFdT VE9QU0lHIChzdGF0dXMpID09IFNJR1RSQVApCistICAgIHNhdmVfc2lnaW5mbyAobHApOworKyAg ICB7CisrICAgICAgLyogU2F2ZSB0aGUgdHJhcCdzIHNpZ2luZm8gaW4gY2FzZSB3ZSBuZWVkIGl0 IGxhdGVyLiAgKi8KKysgICAgICBzYXZlX3NpZ2luZm8gKGxwKTsKKysKKysgICAgICBzYXZlX3Np Z3RyYXAgKGxwKTsKKysgICAgfQorIAorICAgLyogSGFuZGxlIEdOVS9MaW51eCdzIGV4dGVuZGVk IHdhaXRzdGF0dXMgZm9yIHRyYWNlIGV2ZW50cy4gICovCisgICBpZiAoV0lGU1RPUFBFRCAoc3Rh dHVzKSAmJiBXU1RPUFNJRyAoc3RhdHVzKSA9PSBTSUdUUkFQICYmIHN0YXR1cyA+PiAxNiAhPSAw KQorQEAgLTQ4NzEsNiArNDk1MSwxMCBAQCBsaW51eF9uYXRfYWRkX3RhcmdldCAoc3RydWN0IHRh cmdldF9vcHMgKnQpCisgICB0LT50b190aHJlYWRfYWxpdmUgPSBsaW51eF9uYXRfdGhyZWFkX2Fs aXZlOworICAgdC0+dG9fcGlkX3RvX3N0ciA9IGxpbnV4X25hdF9waWRfdG9fc3RyOworICAgdC0+ dG9faGFzX3RocmVhZF9jb250cm9sID0gdGNfc2NoZWRsb2NrOworKyAgaWYgKGxpbnV4X29wcy0+ dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MpCisrICAgIHQtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNz ID0gbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworKyAgaWYgKGxpbnV4X29wcy0+dG9f ZGV0YWNoX3dhdGNocG9pbnRzKQorKyAgICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBsaW51 eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzOworIAorICAgdC0+dG9fY2FuX2FzeW5jX3AgPSBsaW51 eF9uYXRfY2FuX2FzeW5jX3A7CisgICB0LT50b19pc19hc3luY19wID0gbGludXhfbmF0X2lzX2Fz eW5jX3A7CitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5oIGIvZ2RiL2xpbnV4LW5hdC5oCitp bmRleCBkMWVkNmZjLi5mYWY2OGJiIDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4LW5hdC5oCisrKysg Yi9nZGIvbGludXgtbmF0LmgKK0BAIC02Miw2ICs2MiwxMiBAQCBzdHJ1Y3QgbHdwX2luZm8KKyAg ICAgIGJlIHRoZSBhZGRyZXNzIG9mIGEgaGFyZHdhcmUgd2F0Y2hwb2ludC4gICovCisgICBzdHJ1 Y3Qgc2lnaW5mbyBzaWdpbmZvOworIAorKyAgLyogV0FUQ0hQT0lOVF9ISVRfU0VUIGlzIG5vbi16 ZXJvIGlmIHRoaXMgTFdQIHN0b3BwZWQgd2l0aCBhIHRyYXAgYW5kIGEgZGF0YQorKyAgICAgd2F0 Y2hwb2ludCBoYXMgYmVlbiBmb3VuZCBhcyB0cmlnZ2VyZWQuICBJbiBzdWNoIGNhc2UgV0FUQ0hQ T0lOVF9ISVQKKysgICAgIGNvbnRhaW5zIGRhdGEgYWRkcmVzcyBvZiB0aGUgdHJpZ2dlcmVkIGRh dGEgd2F0Y2hwb2ludC4gICovCisrICB1bnNpZ25lZCB3YXRjaHBvaW50X2hpdF9zZXQgOiAxOwor KyAgQ09SRV9BRERSIHdhdGNocG9pbnRfaGl0OworKworICAgLyogTm9uLXplcm8gaWYgd2UgZXhw ZWN0IGEgZHVwbGljYXRlZCBTSUdJTlQuICAqLworICAgaW50IGlnbm9yZV9zaWdpbnQ7CisgCiBk aWZmIC0tZ2l0IGEvZ2RiL20yLWxhbmcuYyBiL2dkYi9tMi1sYW5nLmMKIGluZGV4IDg4YzdlNWUu LjJkMGIzY2EgMTAwNjQ0CiAtLS0gYS9nZGIvbTItbGFuZy5jCkBAIC0xMTQwNiw2ICsxMjAxMiw0 MyBAQCBpbmRleCBjYmRhOWMzLi5hMDdlNmYyIDEwMDY0NAogK2V4dGVybiB2b2lkIGV4cF90eXBl c19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApOwogKwogICNlbmRpZiAvKiBQQVJT RVJfREVGU19IICovCitkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMt bGludXgtbmF0LmMKK2luZGV4IDQ3Yjc0YWQuLjIyZmIyZmMgMTAwNjQ0CistLS0gYS9nZGIvcHBj LWxpbnV4LW5hdC5jCisrKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCitAQCAtMTM5MSw2ICsxMzkx LDI0IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCBydykKKyAgIHJldHVybiAwOworIH0KKyAKKysvKiBTZWUgdGFyZ2V0X2RldGFjaF93 YXRjaHBvaW50cy4gIERvIG5vdCB1c2Ugd3JhcHBlcgorKyAgIHBwY19saW51eF9yZW1vdmVfd2F0 Y2hwb2ludCBhcyBpdCB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hlCisrICAgKHNhdmVk X2RhYnJfdmFsdWUpLiAgKi8KKysKKytzdGF0aWMgaW50CisrcHBjX2xpbnV4X2RldGFjaF93YXRj aHBvaW50cyAodm9pZCkKKyt7CisrICBwaWRfdCB0aWQ7CisrCisrICB0aWQgPSBUSURHRVQgKGlu ZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURHRVQgKGluZmVy aW9yX3B0aWQpOworKworKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCBO VUxMLCBOVUxMKSA8IDApCisrICAgIHJldHVybiAtMTsKKysgIHJldHVybiAwOworK30KKysKKyBz dGF0aWMgdm9pZAorIHBwY19saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKKyB7CitAQCAt MTY0OCw2ICsxNjY2LDcgQEAgX2luaXRpYWxpemVfcHBjX2xpbnV4X25hdCAodm9pZCkKKyAgIHQt PnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9IHBwY19saW51eF9yZWdpb25fb2tfZm9y X2h3X3dhdGNocG9pbnQ7CisgICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IHBwY19saW51eF9p bnNlcnRfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50ID0gcHBjX2xpbnV4 X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gcHBjX2xp bnV4X2RldGFjaF93YXRjaHBvaW50czsKKyAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19zdG9wcGVkX2RhdGFf YWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKKyAgIHQtPnRvX3dhdGNo cG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhp bl9yYW5nZTsKIGRpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9wcmludGNtZC5jCiBp bmRleCA1ZDhiOTM2Li5mYjBhNDU1IDEwMDY0NAogLS0tIGEvZ2RiL3ByaW50Y21kLmMKQEAgLTE4 OTI4LDExICsxOTU3MSw5NCBAQCBpbmRleCA3NDBkNGUwLi40NjFmZjk1IDEwMDY0NAogIAkJCQkJ CSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKICAKICBleHRlcm4gc3RydWN0IHN5bXRhYnNf YW5kX2xpbmVzCitkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3RhcmdldC5jCitpbmRl eCA3ZWU0NDRmLi42MzFlNWY4IDEwMDY0NAorLS0tIGEvZ2RiL3RhcmdldC5jCisrKysgYi9nZGIv dGFyZ2V0LmMKK0BAIC0xMjQsNiArMTI0LDggQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7CisgCisgc3RhdGljIGludCBkZWJ1Z190 b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7CisgCisrc3RhdGljIGlu dCBkZWJ1Z190b19kZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpOworKworIHN0YXRpYyBpbnQgZGVi dWdfdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ICh2b2lkKTsKKyAKKyBzdGF0aWMgaW50IGRlYnVn X3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIg Kik7CitAQCAtNTg0LDYgKzU4Niw3IEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKKyAg ICAgICBJTkhFUklUICh0b19yZW1vdmVfaHdfYnJlYWtwb2ludCwgdCk7CisgICAgICAgSU5IRVJJ VCAodG9faW5zZXJ0X3dhdGNocG9pbnQsIHQpOworICAgICAgIElOSEVSSVQgKHRvX3JlbW92ZV93 YXRjaHBvaW50LCB0KTsKKysgICAgICBJTkhFUklUICh0b19kZXRhY2hfd2F0Y2hwb2ludHMsIHQp OworICAgICAgIElOSEVSSVQgKHRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzLCB0KTsKKyAgICAgICBJ TkhFUklUICh0b19oYXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50LCB0KTsKKyAgICAgICBJTkhFUklU ICh0b19oYXZlX2NvbnRpbnVhYmxlX3dhdGNocG9pbnQsIHQpOworQEAgLTY5NCw2ICs2OTcsOSBA QCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCisgICBkZV9mYXVsdCAodG9fcmVtb3ZlX3dh dGNocG9pbnQsCisgCSAgICAoaW50ICgqKSAoQ09SRV9BRERSLCBpbnQsIGludCkpCisgCSAgICBy ZXR1cm5fbWludXNfb25lKTsKKysgIGRlX2ZhdWx0ICh0b19kZXRhY2hfd2F0Y2hwb2ludHMsCisr CSAgICAoaW50ICgqKSAodm9pZCkpCisrCSAgICByZXR1cm5femVybyk7CisgICBkZV9mYXVsdCAo dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50LAorIAkgICAgKGludCAoKikgKHZvaWQpKQorIAkgICAg cmV0dXJuX3plcm8pOworQEAgLTMwOTUsNiArMzEwMSwxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQorICAgcmV0dXJuIHJl dHZhbDsKKyB9CisgCisrc3RhdGljIGludAorK2RlYnVnX3RvX2RldGFjaF93YXRjaHBvaW50cyAo dm9pZCkKKyt7CisrICBpbnQgcmV0dmFsOworKworKyAgcmV0dmFsID0gZGVidWdfdGFyZ2V0LnRv X2RldGFjaF93YXRjaHBvaW50cyAoKTsKKysKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKKysJCSAgICAgICJ0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzICgpID0gJWxkXG4iLAor KwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHJldHZhbCk7CisrICByZXR1cm4gcmV0dmFsOworK30K KysKKyBzdGF0aWMgdm9pZAorIGRlYnVnX3RvX3Rlcm1pbmFsX2luaXQgKHZvaWQpCisgeworQEAg LTMzNDIsNiArMzM2MSw3IEBAIHNldHVwX3RhcmdldF9kZWJ1ZyAodm9pZCkKKyAgIGN1cnJlbnRf dGFyZ2V0LnRvX3JlbW92ZV9od19icmVha3BvaW50ID0gZGVidWdfdG9fcmVtb3ZlX2h3X2JyZWFr cG9pbnQ7CisgICBjdXJyZW50X3RhcmdldC50b19pbnNlcnRfd2F0Y2hwb2ludCA9IGRlYnVnX3Rv X2luc2VydF93YXRjaHBvaW50OworICAgY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dhdGNocG9p bnQgPSBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludDsKKysgIGN1cnJlbnRfdGFyZ2V0LnRvX2Rl dGFjaF93YXRjaHBvaW50cyA9IGRlYnVnX3RvX2RldGFjaF93YXRjaHBvaW50czsKKyAgIGN1cnJl bnRfdGFyZ2V0LnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IGRlYnVnX3RvX3N0b3BwZWRfYnlf d2F0Y2hwb2ludDsKKyAgIGN1cnJlbnRfdGFyZ2V0LnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzID0g ZGVidWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJlc3M7CisgICBjdXJyZW50X3RhcmdldC50b193YXRj aHBvaW50X2FkZHJfd2l0aGluX3JhbmdlID0gZGVidWdfdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhp bl9yYW5nZTsKIGRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmggYi9nZGIvdGFyZ2V0LmgKLWluZGV4 IDJjNzQzZTkuLmVmMjk2MTAgMTAwNjQ0CitpbmRleCAyYzc0M2U5Li5kYmJjZTEyIDEwMDY0NAog LS0tIGEvZ2RiL3RhcmdldC5oCiArKysgYi9nZGIvdGFyZ2V0LmgKLUBAIC0xMTU3LDYgKzExNTcs MjAgQEAgZXh0ZXJuIGludCB0YXJnZXRfc2VhcmNoX21lbW9yeSAoQ09SRV9BRERSIHN0YXJ0X2Fk ZHIsCitAQCAtMzc2LDYgKzM3Niw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCisgICAgIGludCAoKnRv X3JlbW92ZV9od19icmVha3BvaW50KSAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGJwX3Rhcmdl dF9pbmZvICopOworICAgICBpbnQgKCp0b19yZW1vdmVfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwg aW50LCBpbnQpOworICAgICBpbnQgKCp0b19pbnNlcnRfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwg aW50LCBpbnQpOworKyAgICBpbnQgKCp0b19kZXRhY2hfd2F0Y2hwb2ludHMpICh2b2lkKTsKKyAg ICAgaW50ICgqdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50KSAodm9pZCk7CisgICAgIGludCB0b19o YXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50OworICAgICBpbnQgdG9faGF2ZV9jb250aW51YWJsZV93 YXRjaHBvaW50OworQEAgLTExMjAsNiArMTEyMSwxNSBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3Bp ZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKKyAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2lu dChhZGRyLCBsZW4sIHR5cGUpCVwKKyAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dh dGNocG9pbnQpIChhZGRyLCBsZW4sIHR5cGUpCisgCisrLyogQ2xlYXIgYWxsIGRlYnVnIHJlZ2lz dGVycyB3aXRob3V0IGFmZmVjdGluZyBhbnkgcmVnaXN0ZXIgY2FjaGVzLiAgRnVuY3Rpb24KKysg ICBhY3RzIG9uIElORkVSSU9SX1BUSUQgd2hpY2ggc2hvdWxkIGJlIHRoZSBmb3JrZWQtb2ZmIHBy b2Nlc3MsIGVpdGhlciB0aGUKKysgICBub24tdGhyZWFkZWQgY2hpbGQgb25lIG9yIHRoZSB0aHJl YWRlZCBwYXJlbnQgb25lLCBkZXBlbmRpbmcgb24gYHNldAorKyAgIGZvbGxvdy1mb3JrLW1vZGUn LiAgQm90aCB3YXRjaHBvaW50cyBhbmQgaGFyZHdhcmUgYnJlYWtwb2ludHMgZ2V0IHJlbW92ZWQu CisrICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICovCisrCisrI2RlZmlu ZQl0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzKCkJXAorKyAgICAgKCpjdXJyZW50X3RhcmdldC50 b19kZXRhY2hfd2F0Y2hwb2ludHMpICgpCisrCisgI2RlZmluZSB0YXJnZXRfaW5zZXJ0X2h3X2Jy ZWFrcG9pbnQoZ2RiYXJjaCwgYnBfdGd0KSBcCisgICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2lu c2VydF9od19icmVha3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQorIAorQEAgLTExNTcsNiArMTE2 NywyMCBAQCBleHRlcm4gaW50IHRhcmdldF9zZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgc3RhcnRf YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9OR0VTVCBwYXR0ZXJu X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT1JFX0FERFIgKmZvdW5k X2FkZHJwKTsKICAKQEAgLTE4OTUzLDcgKzE5Njc5LDcgQEAgaW5kZXggMmM3NDNlOS4uZWYyOTYx MCAxMDA2NDQKICAvKiBDb21tYW5kIGxvZ2dpbmcgZmFjaWxpdHkuICAqLwogIAogICNkZWZpbmUg dGFyZ2V0X2xvZ19jb21tYW5kKHApCQkJCQkJXAotQEAgLTEyNzYsNiArMTI5MCwxNCBAQCBleHRl cm4gc3RydWN0IHRhcmdldF9vcHMgKmZpbmRfdGFyZ2V0X2JlbmVhdGggKHN0cnVjdCB0YXJnZXRf b3BzICopOworQEAgLTEyNzYsNiArMTMwMCwxNCBAQCBleHRlcm4gc3RydWN0IHRhcmdldF9vcHMg KmZpbmRfdGFyZ2V0X2JlbmVhdGggKHN0cnVjdCB0YXJnZXRfb3BzICopOwogIAogIGV4dGVybiBj aGFyICp0YXJnZXRfZ2V0X29zZGF0YSAoY29uc3QgY2hhciAqdHlwZSk7CiAgCkBAIC0yMDUxOSwx NSArMjEyNDUsMTAwIEBAIGluZGV4IDAwMDAwMDAuLjVkYTczNzgKICtnZGJfdGVzdCAicCB0ZW1w MSIgIiA9ICcxJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAxIgogK2dk Yl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNlY29uZDogcHJp bnQgdGVtcDIiCiArZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+ IiAic2Vjb25kOiBwcmludCB0ZW1wMyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9jcC1yZWxvY2F0ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxvY2F0ZS5leHAK LWluZGV4IDQwOTVjY2YuLjAzYzA3ZDUgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9jcC1yZWxvY2F0ZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRl LmV4cAotQEAgLTMwLDcgKzMwLDcgQEAgcHJvYyBnZXRfZnVuY19hZGRyZXNzIHsgZnVuYyB9IHsK LSAgICAgZ2xvYmFsIGdkYl9wcm9tcHQgaGV4CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS93YXRjaHBvaW50LWh3LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9p bnQtaHcuYworaW5kZXggOGRhOWFmNS4uZTJkZTUzYSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3dhdGNocG9pbnQtaHcuYworQEAgLTIwLDUgKzIwLDExIEBAIGludCB3YXRjaGVlOworIGludAor IG1haW4gKHZvaWQpCisgeworKyAgdm9sYXRpbGUgaW50IGR1bW15OworKworKyAgZHVtbXkgPSB3 YXRjaGVlOworKyAgZHVtbXkgPSAxOworKyAgZHVtbXkgPSAyOwkvKiBicmVhay1hdC1leGl0ICov CisrCisgICByZXR1cm4gMDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS93YXRjaHBvaW50LWh3LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1o dy5leHAKK2luZGV4IGEyYmI3MzEuLmQ3NGQ2YzcgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3dhdGNocG9pbnQtaHcuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3dhdGNocG9pbnQtaHcuZXhwCitAQCAtMjEsMTkgKzIxLDEyIEBAIGlmIHsoIVtpc3RhcmdldCAi aT84Ni0qLSoiXSAmJiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0KKyAgICAgcmV0dXJuCisgfQog IAotICAgICBzZXQgcmZ1bmMgW3N0cmluZ190b19yZWdleHAgJGZ1bmNdCi0tICAgIGdkYl90ZXN0 X211bHRpcGxlICJwcmludCAnJHtmdW5jfSciICJnZXQgYWRkcmVzcyBvZiAke2Z1bmN9IiB7Cist c2V0IHRlc3RmaWxlIHdhdGNocG9pbnQtaHcKKy1zZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCist c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorLWlmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhl Y3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKy0gICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBp bGUgdGVzdCBwcm9ncmFtIgorK3NldCB0ZXN0IHdhdGNocG9pbnQtaHcKKytzZXQgc3JjZmlsZSAk e3Rlc3R9LmMKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdH0uZXhwICR7dGVzdH0g JHtzcmNmaWxlfV0gfSB7CisgICAgIHJldHVybiAtMQorIH0KKyAKKy1nZGJfZXhpdAorLWdkYl9z dGFydAorLWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorLWdkYl9sb2FkICR7 YmluZmlsZX0KKy0KKyAjIENyZWF0ZSB0aGUgd2F0Y2hwb2ludCBiZWZvcmUgdGhlIGluZmVyaW9y IGdldHMgc3RhcnRlZC4gIE5vdyB0aGUgbmF0aXZlIENQVQorICMgdGFyZ2V0IGlzIHN0aWxsIG5v dCBhY3RpdmUgYW5kIGl0cyBgdG9fY2FuX3VzZV9od19icmVha3BvaW50JyBpcyBub3QKKyAjIGlu c3RhbGxlZCwgdGhlcmVmb3JlIG9ubHkgYSBzb2Z0d2FyZSB3YXRjaHBvaW50IGdldHMgY3JlYXRl ZC4KK0BAIC00MywxMCArMzYsNDAgQEAgZ2RiX3Rlc3QgIndhdGNoIHdhdGNoZWUiICJhdGNocG9p bnQgMTogd2F0Y2hlZSIKKyAjIGBydW50b19tYWluJyBvciBgcnVudG8gbWFpbicgd291bGQgZGVs ZXRlIHRoZSB3YXRjaHBvaW50IGNyZWF0ZWQgYWJvdmUuCisgCisgaWYgeyBbZ2RiX3N0YXJ0X2Nt ZF0gPCAwIH0geworLSAgICB1bnRlc3RlZCBzdGFydAorKyAgICB1bnRlc3RlZCAke3Rlc3R9LmV4 cAorICAgICByZXR1cm4gLTEKKyB9CisgZ2RiX3Rlc3QgIiIgIm1haW4gLiogYXQgLioiICJzdGFy dCIKKyAKKyAjIENoZWNrIGl0IGlzIHJlYWxseSBhIGBodyctd2F0Y2hwb2ludC4KKyBnZGJfdGVz dCAiaW5mbyB3YXRjaHBvaW50cyIgIjEgKmh3IHdhdGNocG9pbnQgLiogd2F0Y2hlZSIKKysKKysj IEJlZm9yZSB0aGUgaW5mZXJpb3IgZ2V0cyBzdGFydGVkIHdlIHdvdWxkIGdldDoKKysjIAlUYXJn ZXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludC4KKytn ZGJfdGVzdCAiZGVsZXRlIDEiCisrZ2RiX3Rlc3QgInJ3YXRjaCB3YXRjaGVlIgorKworK3NldCBi cmVha2xpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LWV4aXQiXQorK2dkYl9icmVh a3BvaW50ICRicmVha2xpbmUKKysKKytnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLlxy XG5IYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgMzogd2F0Y2hlZVxyXG5cclxuVmFsdWUgPSAwXHJc bi4qIgorKworKyMgSGVyZSBzaG91bGQgYmUgbm8gcmVwZWF0ZWQgbm90aWZpY2F0aW9uIG9mIHRo ZSByZWFkIHdhdGNocG9pbnQuCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAiQ29udGludWlu Z1xcLlxbIFxyXG5cXStCcmVha3BvaW50IFxbMC05XF0rLCAuKmJyZWFrLWF0LWV4aXQuKiIgXAor KwkgImNvbnRpbnVlIHRvIGJyZWFrLWF0LWV4aXQgYWZ0ZXIgcndhdGNoIgorKworK2NsZWFuX3Jl c3RhcnQgJHt0ZXN0fQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICB1bnRlc3RlZCAke3Rl c3R9LmV4cAorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX3Rlc3QgImhicmVhayAke3NyY2Zp bGV9OiR7YnJlYWtsaW5lfSIgXAorKwkgIkhhcmR3YXJlIGFzc2lzdGVkIGJyZWFrcG9pbnQgMiBh dCAweFxbMC05YS1mXF0rOiBmaWxlIC4qJHtzcmNmaWxlfSwgbGluZSAke2JyZWFrbGluZX1cXC4i IFwKKysJICJoYnJlYWsiCisrCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAiQ29udGludWlu Z1xcLlxbIFxyXG5cXStCcmVha3BvaW50IFxbMC05XF0rLCAuKmJyZWFrLWF0LWV4aXQuKiIgXAor KwkgImNvbnRpbnVlIHRvIGJyZWFrLWF0LWV4aXQgYWZ0ZXIgaGJyZWFrIgorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2NwLXJlbG9jYXRlLmV4cAoraW5kZXggNDA5NWNjZi4uMDNjMDdkNSAxMDA2NDQKKy0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvY3AtcmVsb2NhdGUuZXhwCitAQCAtMzAsNyArMzAsNyBAQCBwcm9jIGdldF9mdW5j X2FkZHJlc3MgeyBmdW5jIH0geworICAgICBnbG9iYWwgZ2RiX3Byb21wdCBoZXgKKyAKKyAgICAg c2V0IHJmdW5jIFtzdHJpbmdfdG9fcmVnZXhwICRmdW5jXQorLSAgICBnZGJfdGVzdF9tdWx0aXBs ZSAicHJpbnQgJyR7ZnVuY30nIiAiZ2V0IGFkZHJlc3Mgb2YgJHtmdW5jfSIgewogKyAgICBnZGJf dGVzdF9tdWx0aXBsZSAicHJpbnQgJHtmdW5jfSIgImdldCBhZGRyZXNzIG9mICR7ZnVuY30iIHsK ICAJLXJlICJcXFwkXFswLTlcXSsgPSBcXHsuKlxcfSAoMHwoJGhleCkgPCR7cmZ1bmN9PilcW1xy XG5cXSske2dkYl9wcm9tcHR9ICQiIHsKICAJICAgICMgJDEgPSB7aW50ICgpfSAweDI0IDxmdW5j dGlvbl9iYXI+CkBAIC0yNDk2NSw2ICsyNTc3NiwxMDI4IEBAIGluZGV4IDUyMjNmYzguLjAzZTFl YWIgMTAwNjQ0CiAgfQogIAogIGdkYl9weV90ZXN0X211bHRpcGxlICJtdWx0aS1saW5lIHB5dGhv biBjb21tYW5kIiBcCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRj aHBvaW50LWZvcmstZm9ya29mZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBv aW50LWZvcmstZm9ya29mZi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u NGRjMzA4YgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCitAQCAtMCwwICsxLDE3NSBAQAorKy8qIFRlc3QgY2Fz ZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9j ZXNzLgorKworKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwKKysgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisrCisrI2lu Y2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKworK3N0YXRpYyB2b2lkCisr ZGVsYXkgKHZvaWQpCisreworKyAgaW50IGkgPSB1c2xlZXAgKDEwMDAwMDAgLyAxMDApOworKyAg YXNzZXJ0IChpID09IDAgfHwgZXJybm8gPT0gRUlOVFIpOworK30KKysKKysjaWYgZGVmaW5lZCBG T0xMT1dfUEFSRU5UCisrCisrc3RhdGljIHZvaWQKKytmb3Jrb2ZmIChpbnQgbnIpCisreworKyAg cGlkX3QgY2hpbGQsIHBpZF9nb3Q7CisrICBpbnQgZXhpdF9jb2RlID0gNDIgKyBucjsKKysgIGlu dCBzdGF0dXMsIGk7CisrCisrICBjaGlsZCA9IGZvcmsgKCk7CisrICBzd2l0Y2ggKGNoaWxkKQor KyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAgYXNzZXJ0ICgwKTsKKysgICAgY2FzZSAwOgor KyAgICAgIHByaW50ZiAoImNoaWxkJWQ6ICVkXG4iLCBuciwgKGludCkgZ2V0cGlkICgpKTsKKysg ICAgICAvKiBEZWxheSB0byBnZXQgYm90aCB0aGUgImNoaWxkJWQiIGFuZCAicGFyZW50JWQiIG1l c3NhZ2UgcHJpbnRlZCB3aXRob3V0CisrCSBhIHJhY2UgYnJlYWtpbmcgZXhwZWN0IGJ5IGl0cyBl bmRsZXNzIHdhaXQgb24gYCRnZGJfcHJvbXB0JCc6CisrCSBCcmVha3BvaW50IDMsIGJyZWFrcG9p bnQgKCkgYXQgLi4vLi4vLi4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZv cmsuYzozMworKwkgMzMgICAgICB9CisrCSAoZ2RiKSBwYXJlbnQyOiAxNDIyMyAgKi8KKysgICAg ICBpID0gc2xlZXAgKDEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAgICAvKiBX ZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2lu dCkuICAqLworKyAgICAgIHZhcisrOworKyAgICAgIGJyZWFrcG9pbnQgKCk7CisrCisrICAgICAg X2V4aXQgKGV4aXRfY29kZSk7CisrICAgIGRlZmF1bHQ6CisrICAgICAgcHJpbnRmICgicGFyZW50 JWQ6ICVkXG4iLCBuciwgKGludCkgY2hpbGQpOworKyAgICAgIC8qIERlbGF5IHRvIGdldCBib3Ro IHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVzc2FnZSBwcmludGVkLCBzZWUKKysJIGFi b3ZlLiAgKi8KKysgICAgICBpID0gc2xlZXAgKDEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsK KysKKysgICAgICBwaWRfZ290ID0gd2FpdCAoJnN0YXR1cyk7CisrICAgICAgYXNzZXJ0IChwaWRf Z290ID09IGNoaWxkKTsKKysgICAgICBhc3NlcnQgKFdJRkVYSVRFRCAoc3RhdHVzKSk7CisrICAg ICAgYXNzZXJ0IChXRVhJVFNUQVRVUyAoc3RhdHVzKSA9PSBleGl0X2NvZGUpOworKworKyAgICAg IC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZmFsc2Ugd2F0Y2hwb2ludCBy ZW1vdmFsKS4gICovCisrICAgICAgYnJlYWtwb2ludCAoKTsKKysgICAgfQorK30KKysKKysjZWxp ZiBkZWZpbmVkIEZPTExPV19DSElMRAorKworK3N0YXRpYyB2b2xhdGlsZSBpbnQgdXNyMV9nb3Q7 CisrCisrc3RhdGljIHZvaWQKKytoYW5kbGVyX3VzcjEgKGludCBzaWdubykKKyt7CisrICB1c3Ix X2dvdCsrOworK30KKysKKytzdGF0aWMgdm9pZAorK2ZvcmtvZmYgKGludCBucikKKyt7CisrICBw aWRfdCBjaGlsZDsKKysgIGludCBpLCBsb29wOworKyAgc3RydWN0IHNpZ2FjdGlvbiBhY3QsIG9s ZGFjdDsKKysjaWZkZWYgVEhSRUFECisrICB2b2lkICp0aHJlYWRfcmVzdWx0OworKyNlbmRpZgor KworKyAgbWVtc2V0ICgmYWN0LCAwLCBzaXplb2YgYWN0KTsKKysgIGFjdC5zYV9mbGFncyA9IFNB X1JFU1RBUlQ7CisrICBhY3Quc2FfaGFuZGxlciA9IGhhbmRsZXJfdXNyMTsKKysgIHNpZ2VtcHR5 c2V0ICgmYWN0LnNhX21hc2spOworKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNSMSwgJmFjdCwgJm9s ZGFjdCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBjaGlsZCA9IGZvcmsgKCk7CisrICBz d2l0Y2ggKGNoaWxkKQorKyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAgYXNzZXJ0ICgwKTsK KysgICAgZGVmYXVsdDoKKysgICAgICBwcmludGYgKCJwYXJlbnQlZDogJWRcbiIsIG5yLCAoaW50 KSBjaGlsZCk7CisrCisrICAgICAgLyogU2xlZXAgZm9yIGEgd2hpbGUgdG8gcG9zc2libHkgZ2V0 IGluY29ycmVjdGx5IEFUVEFDSF9USFJFQURlZCBieSBHREIKKysJIHRyYWNpbmcgdGhlIGNoaWxk IGZvcmsgd2l0aCBubyBsb25nZXIgdmFsaWQgdGhyZWFkL2x3cCBlbnRyaWVzIG9mIHRoZQorKwkg cGFyZW50LiAgKi8KKysKKysgICAgICBpID0gc2xlZXAgKDIpOworKyAgICAgIGFzc2VydCAoaSA9 PSAwKTsKKysKKysgICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3Qg YSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLworKworKyAgICAgIHZhcisrOworKyAgICAgIGJy ZWFrcG9pbnQgKCk7CisrCisrI2lmZGVmIFRIUkVBRAorKyAgICAgIC8qIEFuZCBuZWl0aGVyIGdv dCBjYXVnaHQgb3VyIHRocmVhZC4gICovCisrCisrICAgICAgc3RlcCA9IDk5OworKyAgICAgIGkg PSBwdGhyZWFkX2pvaW4gKHRocmVhZCwgJnRocmVhZF9yZXN1bHQpOworKyAgICAgIGFzc2VydCAo aSA9PSAwKTsKKysgICAgICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikgOTlVTCk7 CisrI2VuZGlmCisrCisrICAgICAgLyogQmUgc3VyZSBvdXIgY2hpbGQga25vd3Mgd2UgZGlkIG5v dCBnZXQgY2F1Z2h0IGFib3ZlLiAgKi8KKysKKysgICAgICBpID0ga2lsbCAoY2hpbGQsIFNJR1VT UjEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAgICAvKiBTbGVlcCBmb3IgYSB3 aGlsZSB0byBjaGVjayBHREIncyBgaW5mbyB0aHJlYWRzJyBubyBsb25nZXIgdHJhY2tzIHVzIGlu CisrCSB0aGUgY2hpbGQgZm9yay4gICovCisrCisrICAgICAgaSA9IHNsZWVwICgyKTsKKysgICAg ICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICAgICAgX2V4aXQgKDApOworKyAgICBjYXNlIDA6Cisr ICAgICAgcHJpbnRmICgiY2hpbGQlZDogJWRcbiIsIG5yLCAoaW50KSBnZXRwaWQgKCkpOworKwor KyAgICAgIC8qIExldCB0aGUgcGFyZW50IHNpZ25hbCB1cyBhYm91dCBpdHMgc3VjY2Vzcy4gIEJl IGNhcmVmdWwgb2YgcmFjZXMuICAqLworKworKyAgICAgIGZvciAobG9vcCA9IDA7IGxvb3AgPCAx MDAwOyBsb29wKyspCisrCXsKKysJICAvKiBQYXJlbnQgZWl0aGVyIGRpZWQgKGFuZCBVU1IxX0dP VCBpcyB6ZXJvKSBvciBpdCBzdWNjZWVkZWQuICAqLworKwkgIGlmIChraWxsIChnZXRwcGlkICgp LCAwKSAhPSAwKQorKwkgICAgYnJlYWs7CisrCSAgLyogUGFyZW50IHN1Y2NlZWRlZD8gICovCisr CSAgaWYgKHVzcjFfZ290KQorKwkgICAgYnJlYWs7CisrCisrCSAgZGVsYXkgKCk7CisrCX0KKysg ICAgICBhc3NlcnQgKHVzcjFfZ290KTsKKysKKysgICAgICAvKiBXZSBtdXN0IGdldCBjYXVnaHQg aGVyZSAoYWdhaW5zdCBhIGZhbHNlIHdhdGNocG9pbnQgcmVtb3ZhbCkuICAqLworKworKyAgICAg IGJyZWFrcG9pbnQgKCk7CisrICAgIH0KKysKKysgIGkgPSBzaWdhY3Rpb24gKFNJR1VTUjEsICZv bGRhY3QsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworK30KKysKKysjZWxzZQorKyMgZXJy b3IgIiFGT0xMT1dfUEFSRU5UICYmICFGT0xMT1dfQ0hJTEQiCisrI2VuZGlmCitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10LmMKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZGFjZmMwCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCitAQCAtMCwwICsxLDE1 NyBAQAorKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZv cmsoKS1vZmYgb2YgYSBwcm9jZXNzLgorKworKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAgIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKysgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4gICovCisrCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4K KysjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8 c3RkbGliLmg+CisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysKKysjaW5jbHVkZSA8YXNtL3VuaXN0 ZC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjZGVmaW5lIGdldHRpZCgpIHN5c2NhbGwgKF9f TlJfZ2V0dGlkKQorKworKy8qIE5vbi1hdG9taWMgYHZhcisrJyBzaG91bGQgbm90IGh1cnQgYXMg d2Ugc3luY2hyb25pemUgdGhlIHRocmVhZHMgYnkgdGhlIFNURVAKKysgICB2YXJpYWJsZS4gIEhp dC1jb21tZW50cyBuZWVkIHRvIGJlIGR1cGxpY2l0ZSB0aGVyZSB0byBjYXRjaCBib3RoIGF0LXN0 b3BzCisrICAgYW5kIGJlaGluZC1zdG9wcywgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQuICAqLwor KworK3N0YXRpYyB2b2xhdGlsZSBpbnQgdmFyOworKworK3N0YXRpYyB2b2lkCisrZHVtbXkgKHZv aWQpCisreworK30KKysKKytzdGF0aWMgdm9pZAorK2JyZWFrcG9pbnQgKHZvaWQpCisreworK30K KysKKysvKiBJbmNsdWRlIGhlcmUgdGhlIGZ1bmN0aW9uczoKKysgICBzdGF0aWMgdm9pZCBmb3Jr b2ZmIChpbnQgbnIpOworKyAgIHN0YXRpYyB2b2lkIGRlbGF5ICh2b2lkKTsgICovCisrCisrc3Rh dGljIHB0aHJlYWRfdCB0aHJlYWQ7Cisrc3RhdGljIHZvbGF0aWxlIGludCBzdGVwOworKyNkZWZp bmUgVEhSRUFECisrCisrI2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMiCisrCisr c3RhdGljIHZvaWQgKgorK3N0YXJ0ICh2b2lkICphcmcpCisreworKyAgaWYgKHN0ZXAgPj0gMykK KysgICAgZ290byBzdGVwXzM7CisrCisrICB3aGlsZSAoc3RlcCAhPSAxKQorKyAgICBkZWxheSAo KTsKKysKKysgIHZhcisrOwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLworKyAgZHVtbXkgKCk7CS8q IHZhbGlkaXR5LXRocmVhZC1CICovCisrICBzdGVwID0gMjsKKysgIHdoaWxlIChzdGVwICE9IDMp CisrICAgIHsKKysgICAgICBpZiAoc3RlcCA9PSA5OSkKKysJZ290byBzdGVwXzk5OworKyAgICAg IGRlbGF5ICgpOworKyAgICB9CisrCisrc3RlcF8zOgorKyAgaWYgKHN0ZXAgPj0gNSkKKysgICAg Z290byBzdGVwXzU7CisrCisrICB2YXIrKzsJLyogYWZ0ZXItZm9yazEtQiAqLworKyAgZHVtbXkg KCk7CS8qIGFmdGVyLWZvcmsxLUIgKi8KKysgIHN0ZXAgPSA0OworKyAgd2hpbGUgKHN0ZXAgIT0g NSkKKysgICAgeworKyAgICAgIGlmIChzdGVwID09IDk5KQorKwlnb3RvIHN0ZXBfOTk7CisrICAg ICAgZGVsYXkgKCk7CisrICAgIH0KKysKKytzdGVwXzU6CisrICB2YXIrKzsJLyogYWZ0ZXItZm9y azItQiAqLworKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUIgKi8KKysgIHJldHVybiAodm9p ZCAqKSA1VUw7CisrCisrc3RlcF85OToKKysgIC8qIFdlIG11c3Qgbm90IGdldCBjYXVnaHQgaGVy ZSAoYWdhaW5zdCBhIGZvcmdvdHRlbiBicmVha3BvaW50KS4gICovCisrICB2YXIrKzsKKysgIGJy ZWFrcG9pbnQgKCk7CisrICByZXR1cm4gKHZvaWQgKikgOTlVTDsKKyt9CisrCisraW50CisrbWFp biAodm9pZCkKKyt7CisrICBpbnQgaTsKKysgIHZvaWQgKnRocmVhZF9yZXN1bHQ7CisrCisrICBz ZXRidWYgKHN0ZG91dCwgTlVMTCk7CisrICBwcmludGYgKCJtYWluOiAlZFxuIiwgKGludCkgZ2V0 dGlkICgpKTsKKysKKysgIC8qIEdlbmVyYWwgd2F0Y2hwb2ludHMgdmFsaWRpdHkuICAqLworKyAg dmFyKys7CS8qIHZhbGlkaXR5LWZpcnN0ICovCisrICBkdW1teSAoKTsJLyogdmFsaWRpdHktZmly c3QgKi8KKysKKysgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5V TEwpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgdmFyKys7CS8qIHZhbGlkaXR5LXRocmVh ZC1BICovCisrICBkdW1teSAoKTsJLyogdmFsaWRpdHktdGhyZWFkLUEgKi8KKysgIHN0ZXAgPSAx OworKyAgd2hpbGUgKHN0ZXAgIT0gMikKKysgICAgZGVsYXkgKCk7CisrCisrICAvKiBIYXJkd2Fy ZSB3YXRjaHBvaW50cyBnb3QgZGlzYXJtZWQgaGVyZS4gICovCisrICBmb3Jrb2ZmICgxKTsKKysK KysgIHZhcisrOwkvKiBhZnRlci1mb3JrMS1BICovCisrICBkdW1teSAoKTsJLyogYWZ0ZXItZm9y azEtQSAqLworKyAgc3RlcCA9IDM7CisrI2lmZGVmIEZPTExPV19DSElMRAorKyAgLyogU3Bhd24g bmV3IHRocmVhZCBhcyBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgY2hpbGQgb2YgRk9SSy4gICovCisr ICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0aHJlYWQsIE5VTEwsIHN0YXJ0LCBOVUxMKTsKKysgIGFz c2VydCAoaSA9PSAwKTsKKysjZW5kaWYKKysgIHdoaWxlIChzdGVwICE9IDQpCisrICAgIGRlbGF5 ICgpOworKworKyAgLyogQSBzYW5pdHkgY2hlY2sgZm9yIGRvdWJsZSBoYXJkd2FyZSB3YXRjaHBv aW50cyByZW1vdmFsLiAgKi8KKysgIGZvcmtvZmYgKDIpOworKworKyAgdmFyKys7CS8qIGFmdGVy LWZvcmsyLUEgKi8KKysgIGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMi1BICovCisrICBzdGVwID0g NTsKKysjaWZkZWYgRk9MTE9XX0NISUxECisrICAvKiBTcGF3biBuZXcgdGhyZWFkIGFzIGl0IHdh cyBkZWxldGVkIGluIHRoZSBjaGlsZCBvZiBGT1JLLiAgKi8KKysgIGkgPSBwdGhyZWFkX2NyZWF0 ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworKyNl bmRpZgorKworKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkLCAmdGhyZWFkX3Jlc3VsdCk7Cisr ICBhc3NlcnQgKGkgPT0gMCk7CisrICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikg NVVMKTsKKysKKysgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmsuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjVm NjJlN2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0 Y2hwb2ludC1mb3JrLmMKK0BAIC0wLDAgKzEsNTcgQEAKKysvKiBUZXN0IGNhc2UgZm9yIGZvcmdv dHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KKysKKysg ICBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKKysgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs CisrICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworKworKyNpbmNsdWRlIDxhc3Nl cnQuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisrI2lu Y2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKworK3N0YXRpYyB2b2xhdGls ZSBpbnQgdmFyOworKworK3N0YXRpYyB2b2lkCisrYnJlYWtwb2ludCAodm9pZCkKKyt7CisrfQor KworKy8qIEluY2x1ZGUgaGVyZSB0aGUgZnVuY3Rpb246CisrICAgc3RhdGljIHZvaWQgZm9ya29m ZiAoaW50IG5yKTsgICovCisrCisrI2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMi CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7Cisr ICBwcmludGYgKCJtYWluOiAlZFxuIiwgKGludCkgZ2V0cGlkICgpKTsKKysKKysgIC8qIEdlbmVy YWwgd2F0Y2hwb2ludHMgdmFsaWRpdHkuICAqLworKyAgdmFyKys7CisrICAvKiBIYXJkd2FyZSB3 YXRjaHBvaW50cyBnb3QgZGlzYXJtZWQgaGVyZS4gICovCisrICBmb3Jrb2ZmICgxKTsKKysgIC8q IFRoaXMgd2F0Y2hwb2ludCBnb3QgbG9zdCBiZWZvcmUuICAqLworKyAgdmFyKys7CisrICAvKiBB IHNhbml0eSBjaGVjayBmb3IgZG91YmxlIGhhcmR3YXJlIHdhdGNocG9pbnRzIHJlbW92YWwuICAq LworKyAgZm9ya29mZiAoMik7CisrICB2YXIrKzsKKysKKysgIHJldHVybiAwOworK30KK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xZGM5M2FiCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKK0BAIC0wLDAgKzEs MTMwIEBACisrIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IGNhc2Ug Zm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vz cy4KKysKKytwcm9jIHRlc3Qge3R5cGUgc3ltYm9sfSB7CisrICAgIGdsb2JhbCBvYmpkaXIgc3Vi ZGlyIHNyY2RpcgorKworKyAgICBzZXQgdGVzdCB3YXRjaHBvaW50LWZvcmsKKysKKysgICAgZ2xv YmFsIHBmX3ByZWZpeAorKyAgICBzZXQgcHJlZml4X3Rlc3QgJHBmX3ByZWZpeAorKyAgICBsYXBw ZW5kIHBmX3ByZWZpeCAiJHR5cGU6IgorKyAgICBzZXQgcHJlZml4X210ICRwZl9wcmVmaXgKKysK KysgICAgIyBubyB0aHJlYWRzCisrCisrICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF9tdAorKyAg ICBsYXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6IgorKworKyAgICBzZXQgZXhlY3V0 YWJsZSAke3Rlc3R9LSR7dHlwZX0KKysgICAgaWYgeyBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3R9LmMgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9IGV4ZWN1 dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRCRzeW1ib2xdXSAhPSAiIiB9IHsK KysJdW50ZXN0ZWQgJHt0ZXN0fS5leHAKKysJcmV0dXJuIC0xCisrICAgIH0KKysgICAgY2xlYW5f cmVzdGFydCAkZXhlY3V0YWJsZQorKworKyAgICBnZGJfdGVzdCAic2hvdyBkZXRhY2gtb24tZm9y ayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNoIHRoZSBjaGlsZCBvZiBhIGZvcmsgaXMgb24uIgor KyAgICBnZGJfdGVzdCAic2V0IGZvbGxvdy1mb3JrLW1vZGUgJHR5cGUiCisrICAgIGdkYl90ZXN0 ICJzaG93IGZvbGxvdy1mb3JrLW1vZGUiICJEZWJ1Z2dlciByZXNwb25zZSB0byBhIHByb2dyYW0g Y2FsbCBvZiBmb3JrIG9yIHZmb3JrIGlzIFwiJHR5cGVcIi4iCisrICAgICMgVGVzdGNhc2UgdXNl cyBpdCBmb3IgdGhlIGBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJyB0eXBlLgorKyAgICBnZGJfdGVz dCAiaGFuZGxlIFNJR1VTUjEgbm9zdG9wIG5vcHJpbnQgcGFzcyIKKysKKysgICAgaWYgeyAhW3J1 bnRvX21haW5dIH0gdGhlbiB7CisrCWdkYl9zdXBwcmVzc190ZXN0cworKwlyZXR1cm4KKysgICAg fQorKworKyAgICAjIEluc3RhbGwgdGhlIHdhdGNocG9pbnQgb25seSBhZnRlciBnZXR0aW5nIGlu dG8gTUFJTiAtIHdvcmthcm91bmQgc29tZSBQUEMKKysgICAgIyBwcm9ibGVtLgorKyAgICBnZGJf dGVzdCAid2F0Y2ggdmFyIiAiYXRjaHBvaW50IDI6IHZhciIgIlNldCB0aGUgd2F0Y2hwb2ludCIK KysKKysgICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3QgYmUgbGVmdCBvdmVy IGluIHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCisrICAgIGdkYl9icmVha3BvaW50ICJicmVha3Bv aW50IgorKworKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAiYXRjaHBvaW50IDI6 IHZhci4qT2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMS4qZm9ya29mZiAqXFwoMVxcKS4qIiAi d2F0Y2hwb2ludHMgd29yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgInJl YWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50IGFmdGVyIHRoZSBmaXJzdCBmb3Jr IgorKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAiYXRjaHBvaW50IDI6IHZhci4q T2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4qZm9ya29mZiAqXFwoMlxcKS4qIiAid2F0Y2hw b2ludCBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisr CSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50IGFmdGVyIHRoZSBz ZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgImF0Y2hwb2lu dCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDIuKk5ldyB2YWx1ZSA9IDMuKnJldHVybiAqMDsiICJ3YXRj aHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAi Q29udGludWluZy4uKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5LiIgImZpbmlzaCIKKysKKysKKysg ICAgIyB0aHJlYWRzCisrCisrICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF9tdAorKyAgICBsYXBw ZW5kIHBmX3ByZWZpeCAibXVsdGl0aHJlYWRlZDoiCisrCisrICAgIHNldCBleGVjdXRhYmxlICR7 dGVzdH0tbXQtJHt0eXBlfQorKyAgICBpZiB7IFtnZGJfY29tcGlsZV9wdGhyZWFkcyAke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7dGVzdH0tbXQuYyAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJs ZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJvbF1dICE9 ICIiIH0geworKwl1bnRlc3RlZCAke3Rlc3R9LmV4cAorKwlyZXR1cm4gLTEKKysgICAgfQorKyAg ICBjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrCisrICAgIGdkYl90ZXN0ICJzZXQgZm9sbG93 LWZvcmstbW9kZSAkdHlwZSIKKysgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0aGUgYGZvbGxv dy1mb3JrLW1vZGUgY2hpbGQnIHR5cGUuCisrICAgIGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBu b3N0b3Agbm9wcmludCBwYXNzIgorKworKyAgICBpZiB7ICFbcnVudG9fbWFpbl0gfSB0aGVuIHsK KysJZ2RiX3N1cHByZXNzX3Rlc3RzCisrCXJldHVybgorKyAgICB9CisrCisrICAgICMgSW5zdGFs bCB0aGUgd2F0Y2hwb2ludCBvbmx5IGFmdGVyIGdldHRpbmcgaW50byBNQUlOIC0gd29ya2Fyb3Vu ZCBzb21lIFBQQworKyAgICAjIHByb2JsZW0uCisrICAgIGdkYl90ZXN0ICJ3YXRjaCB2YXIiICJh dGNocG9pbnQgMjogdmFyIiAiU2V0IHRoZSB3YXRjaHBvaW50IgorKworKyAgICAjIEl0IGlzIG5l dmVyIGhpdCBidXQgaXQgc2hvdWxkIG5vdCBiZSBsZWZ0IG92ZXIgaW4gdGhlIGZvcmsoKWVkLW9m ZiBjaGlsZC4KKysgICAgZ2RiX2JyZWFrcG9pbnQgImJyZWFrcG9pbnQiCisrCisrICAgIGdkYl90 ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAw LipOZXcgdmFsdWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhyZWFkIHdhdGNocG9p bnRzIHdvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQg MjogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFsdWUgPSAyLip2YWxpZGl0eS10aHJlYWQtQS4q IiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEEiCisrICAgIGdkYl90ZXN0ICJj b250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAyLipOZXcg dmFsdWUgPSAzLip2YWxpZGl0eS10aHJlYWQtQi4qIiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50 cyB3b3JrIGF0IEIiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJyZWFrcG9p bnQgMywgYnJlYWtwb2ludC4qIiAiYnJlYWtwb2ludCAoQSkgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsi CisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipP bGQgdmFsdWUgPSAzLipOZXcgdmFsdWUgPSA0LiphZnRlci1mb3JrMS1BLioiICJ3YXRjaHBvaW50 IEEgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkg ICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSA0LipOZXcgdmFsdWUgPSA1LiphZnRl ci1mb3JrMS1CLioiICJ3YXRjaHBvaW50IEIgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCisrICAgIGdk Yl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4qIiAi YnJlYWtwb2ludCAoQSkgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgorKyAgICBnZGJfdGVzdCAiY29u dGludWUiIFwKKysJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gNS4qTmV3IHZh bHVlID0gNi4qYWZ0ZXItZm9yazItQS4qIiAid2F0Y2hwb2ludCBBIGFmdGVyIHRoZSBzZWNvbmQg Zm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgImF0Y2hwb2ludCAyOiB2 YXIuKk9sZCB2YWx1ZSA9IDYuKk5ldyB2YWx1ZSA9IDcuKmFmdGVyLWZvcmsyLUIuKiIgIndhdGNo cG9pbnQgQiBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIg IkNvbnRpbnVpbmcuLipQcm9ncmFtIGV4aXRlZCBub3JtYWxseS4iICJmaW5pc2giCisrCisrCisr ICAgICMgY2xlYW51cAorKworKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfdGVzdAorK30KKysK Kyt0ZXN0IHBhcmVudCBGT0xMT1dfUEFSRU5UCisrCisrIyBPbmx5IEdOVS9MaW51eCBpcyBrbm93 biB0byBzdXBwb3J0IGBzZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcuCisraWYge1tpc3Rhcmdl dCAiKi0qLWxpbnV4KiJdfSB7CisrICAgIHRlc3QgY2hpbGQgRk9MTE9XX0NISUxECisrfQorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIu YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjE0ZjQyZDYKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYwor QEAgLTAsMCArMSwzNjYgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KysKKysjZGVmaW5lIF9HTlVfU09VUkNFCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVk ZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+Cisr I2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8YXNz ZXJ0Lmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzaWduYWwuaD4KKysj aW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KKysKKysjZGVmaW5l IGdldHRpZCgpIHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQorKworKy8qIFRlcm1pbmF0ZSBhbHdheXMg aW4gdGhlIG1haW4gdGFzaywgaXQgY2FuIGxvY2sgdXAgd2l0aCBTSUdTVE9QcGVkIEdEQgorKyAg IG90aGVyd2lzZS4gICovCisrI2RlZmluZSBUSU1FT1VUIChnZXR0aWQgKCkgPT0gZ2V0cGlkKCkg PyAxMCA6IDE1KQorKworK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgZ2Ric3RvcF9tdXRleCA9IFBU SFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysKKytzdGF0aWMgcGlkX3Qg dGhyZWFkMV90aWQ7Cisrc3RhdGljIHB0aHJlYWRfY29uZF90IHRocmVhZDFfdGlkX2NvbmQgPSBQ VEhSRUFEX0NPTkRfSU5JVElBTElaRVI7Cisrc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0aHJlYWQx X3RpZF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysK KytzdGF0aWMgcGlkX3QgdGhyZWFkMl90aWQ7Cisrc3RhdGljIHB0aHJlYWRfY29uZF90IHRocmVh ZDJfdGlkX2NvbmQgPSBQVEhSRUFEX0NPTkRfSU5JVElBTElaRVI7Cisrc3RhdGljIHB0aHJlYWRf bXV0ZXhfdCB0aHJlYWQyX3RpZF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklU SUFMSVpFUl9OUDsKKysKKytzdGF0aWMgcHRocmVhZF9tdXRleF90IHRlcm1pbmF0ZV9tdXRleCA9 IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysKKytzdGF0aWMgdm9s YXRpbGUgaW50IHRocmVhZDFfcndhdGNoOworK3N0YXRpYyB2b2xhdGlsZSBpbnQgdGhyZWFkMl9y d2F0Y2g7CisrCisrc3RhdGljIGludCB1bnVzZWQxX3J3YXRjaDsKKytzdGF0aWMgaW50IHVudXNl ZDJfcndhdGNoOworKworKy8qIERvIG5vdCB1c2UgYWxhcm0gYXMgaXQgd291bGQgY3JlYXRlIGEg cHRyYWNlIGV2ZW50IHdoaWNoIHdvdWxkIGhhbmcgdXAgdXMgaWYKKysgKiB3ZSBhcmUgYmVpbmcg dHJhY2VkIGJ5IEdEQiB3aGljaCB3ZSBzdG9wcGVkIG91cnNlbHZlcy4gICovCisrCisrc3RhdGlj IHZvaWQgdGltZWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICptdXRleCkKKyt7CisrICBp bnQgaTsKKysgIHN0cnVjdCB0aW1lc3BlYyBzdGFydCwgbm93OworKworKyAgaSA9IGNsb2NrX2dl dHRpbWUgKENMT0NLX01PTk9UT05JQywgJnN0YXJ0KTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysK KysgIGRvCisrICAgIHsKKysgICAgICBpID0gcHRocmVhZF9tdXRleF90cnlsb2NrIChtdXRleCk7 CisrICAgICAgaWYgKGkgPT0gMCkKKysJcmV0dXJuOworKyAgICAgIGFzc2VydCAoaSA9PSBFQlVT WSk7CisrCisrICAgICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7 CisrICAgICAgYXNzZXJ0IChpID09IDApOworKyAgICAgIGFzc2VydCAobm93LnR2X3NlYyA+PSBz dGFydC50dl9zZWMpOworKyAgICB9CisrICB3aGlsZSAobm93LnR2X3NlYyAtIHN0YXJ0LnR2X3Nl YyA8IFRJTUVPVVQpOworKworKyAgZnByaW50ZiAoc3RkZXJyLCAiVGltZWQgb3V0IHdhaXRpbmcg Zm9yIGludGVybmFsIGxvY2shXG4iKTsKKysgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisrfQorKwor K3N0YXRpYyB2b2lkICoKKyt0aHJlYWQxX2Z1bmMgKHZvaWQgKnVudXNlZCkKKyt7CisrICBpbnQg aTsKKysgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7CisrCisrICB0aHJlYWQxX3RpZCA9IGdl dHRpZCAoKTsKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMV90aWRfY29uZCk7 CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICAvKiBCZSBzdXJlIEdEQiBpcyBhbHJlYWR5IHN0 b3BwZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLworKyAgdGltZWRfbXV0ZXhfbG9jayAoJmdkYnN0 b3BfbXV0ZXgpOworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7 CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICByd2F0Y2hfc3RvcmUgPSB0aHJlYWQxX3J3YXRj aDsKKysKKysgIC8qIEJlIHN1cmUgdGhlICJUICh0cmFjaW5nIHN0b3ApIiB0ZXN0IGNhbiBwcm9j ZWVkIGZvciBib3RoIHRocmVhZHMuICAqLworKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRlcm1pbmF0 ZV9tdXRleCk7CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgp OworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK3N0YXRp YyB2b2lkICoKKyt0aHJlYWQyX2Z1bmMgKHZvaWQgKnVudXNlZCkKKyt7CisrICBpbnQgaTsKKysg IHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7CisrCisrICB0aHJlYWQyX3RpZCA9IGdldHRpZCAo KTsKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMl90aWRfY29uZCk7CisrICBh c3NlcnQgKGkgPT0gMCk7CisrCisrICAvKiBCZSBzdXJlIEdEQiBpcyBhbHJlYWR5IHN0b3BwZWQg YmVmb3JlIGNvbnRpbnVpbmcuICAqLworKyAgdGltZWRfbXV0ZXhfbG9jayAoJmdkYnN0b3BfbXV0 ZXgpOworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7CisrICBh c3NlcnQgKGkgPT0gMCk7CisrCisrICByd2F0Y2hfc3RvcmUgPSB0aHJlYWQyX3J3YXRjaDsKKysK KysgIC8qIEJlIHN1cmUgdGhlICJUICh0cmFjaW5nIHN0b3ApIiB0ZXN0IGNhbiBwcm9jZWVkIGZv ciBib3RoIHRocmVhZHMuICAqLworKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRlcm1pbmF0ZV9tdXRl eCk7CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOworKyAg YXNzZXJ0IChpID09IDApOworKworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK3N0YXRpYyBjb25z dCBjaGFyICoKKytwcm9jX3N0cmluZyAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIg KmxpbmUpCisreworKyAgRklMRSAqZjsKKysgIHN0YXRpYyBjaGFyIGJ1ZltMSU5FX01BWF07Cisr ICBzaXplX3QgbGluZV9sZW4gPSBzdHJsZW4gKGxpbmUpOworKworKyAgZiA9IGZvcGVuIChmaWxl bmFtZSwgInIiKTsKKysgIGlmIChmID09IE5VTEwpCisrICAgIHsKKysgICAgICBmcHJpbnRmIChz dGRlcnIsICJmb3BlbiAoXCIlc1wiKSBmb3IgXCIlc1wiOiAlc1xuIiwgZmlsZW5hbWUsIGxpbmUs CisrCSAgICAgICBzdHJlcnJvciAoZXJybm8pKTsKKysgICAgICBleGl0IChFWElUX0ZBSUxVUkUp OworKyAgICB9CisrICB3aGlsZSAoZXJybm8gPSAwLCBmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1Ziks IGYpKQorKyAgICB7CisrICAgICAgY2hhciAqczsKKysKKysgICAgICBzID0gc3RyY2hyIChidWYs ICdcbicpOworKyAgICAgIGFzc2VydCAocyAhPSBOVUxMKTsKKysgICAgICAqcyA9IDA7CisrCisr ICAgICAgaWYgKHN0cm5jbXAgKGJ1ZiwgbGluZSwgbGluZV9sZW4pICE9IDApCisrCWNvbnRpbnVl OworKworKyAgICAgIGlmIChmY2xvc2UgKGYpKQorKwl7CisrCSAgZnByaW50ZiAoc3RkZXJyLCAi ZmNsb3NlIChcIiVzXCIpIGZvciBcIiVzXCI6ICVzXG4iLCBmaWxlbmFtZSwgbGluZSwKKysJCSAg IHN0cmVycm9yIChlcnJubykpOworKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisrCX0KKysKKysg ICAgICByZXR1cm4gJmJ1ZltsaW5lX2xlbl07CisrICAgIH0KKysgIGlmIChlcnJubyAhPSAwKQor KyAgICB7CisrICAgICAgZnByaW50ZiAoc3RkZXJyLCAiZmdldHMgKFwiJXNcIjogJXNcbiIsIGZp bGVuYW1lLCBzdHJlcnJvciAoZXJybm8pKTsKKysgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwor KyAgICB9CisrICBmcHJpbnRmIChzdGRlcnIsICJcIiVzXCI6IE5vIGxpbmUgXCIlc1wiIGZvdW5k LlxuIiwgZmlsZW5hbWUsIGxpbmUpOworKyAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKyt9CisrCisr c3RhdGljIHVuc2lnbmVkIGxvbmcKKytwcm9jX3Vsb25nIChjb25zdCBjaGFyICpmaWxlbmFtZSwg Y29uc3QgY2hhciAqbGluZSkKKyt7CisrICBjb25zdCBjaGFyICpzID0gcHJvY19zdHJpbmcgKGZp bGVuYW1lLCBsaW5lKTsKKysgIGxvbmcgcmV0dmFsOworKyAgY2hhciAqZW5kOworKworKyAgZXJy bm8gPSAwOworKyAgcmV0dmFsID0gc3RydG9sIChzLCAmZW5kLCAxMCk7CisrICBpZiAocmV0dmFs IDwgMCB8fCByZXR2YWwgPj0gTE9OR19NQVggfHwgKGVuZCAmJiAqZW5kKSkKKysgICAgeworKyAg ICAgIGZwcmludGYgKHN0ZGVyciwgIlwiJXNcIjpcIiVzXCI6ICVsZCwgJXNcbiIsIGZpbGVuYW1l LCBsaW5lLCByZXR2YWwsCisrCSAgICAgICBzdHJlcnJvciAoZXJybm8pKTsKKysgICAgICBleGl0 IChFWElUX0ZBSUxVUkUpOworKyAgICB9CisrICByZXR1cm4gcmV0dmFsOworK30KKysKKytzdGF0 aWMgdm9pZAorK3N0YXRlX3dhaXQgKHBpZF90IHByb2Nlc3MsIGNvbnN0IGNoYXIgKndhbnRlZCkK Kyt7CisrICBjaGFyICpmaWxlbmFtZTsKKysgIGludCBpOworKyAgc3RydWN0IHRpbWVzcGVjIHN0 YXJ0LCBub3c7CisrICBjb25zdCBjaGFyICpzdGF0ZTsKKysKKysgIGkgPSBhc3ByaW50ZiAoJmZp bGVuYW1lLCAiL3Byb2MvJWx1L3N0YXR1cyIsICh1bnNpZ25lZCBsb25nKSBwcm9jZXNzKTsKKysg IGFzc2VydCAoaSA+IDApOworKworKyAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05J QywgJnN0YXJ0KTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGRvCisrICAgIHsKKysgICAg ICBzdGF0ZSA9IHByb2Nfc3RyaW5nIChmaWxlbmFtZSwgIlN0YXRlOlx0Iik7CisrICAgICAgaWYg KHN0cmNtcCAoc3RhdGUsIHdhbnRlZCkgPT0gMCkKKysJeworKwkgIGZyZWUgKGZpbGVuYW1lKTsK KysJICByZXR1cm47CisrCX0KKysKKysgICAgICBpZiAoc2NoZWRfeWllbGQgKCkpCisrCXsKKysJ ICBwZXJyb3IgKCJzY2hlZF95aWVsZCgpIik7CisrCSAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysJ fQorKworKyAgICAgIGkgPSBjbG9ja19nZXR0aW1lIChDTE9DS19NT05PVE9OSUMsICZub3cpOwor KyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysgICAgICBhc3NlcnQgKG5vdy50dl9zZWMgPj0gc3Rh cnQudHZfc2VjKTsKKysgICAgfQorKyAgd2hpbGUgKG5vdy50dl9zZWMgLSBzdGFydC50dl9zZWMg PCBUSU1FT1VUKTsKKysKKysgIGZwcmludGYgKHN0ZGVyciwgIlRpbWVkIG91dCB3YWl0aW5nIGZv ciBQSUQgJWx1IFwiJXNcIiAobm93IGl0IGlzIFwiJXNcIikhXG4iLAorKwkgICAodW5zaWduZWQg bG9uZykgcHJvY2Vzcywgd2FudGVkLCBzdGF0ZSk7CisrICBleGl0IChFWElUX0ZBSUxVUkUpOwor K30KKysKKytzdGF0aWMgdm9sYXRpbGUgcGlkX3QgdHJhY2VyID0gMDsKKytzdGF0aWMgcHRocmVh ZF90IHRocmVhZDEsIHRocmVhZDI7CisrCisrc3RhdGljIHZvaWQKKytjbGVhbnVwICh2b2lkKQor K3sKKysgIHByaW50ZiAoIlJlc3VtaW5nIEdEQiBQSUQgJWx1LlxuIiwgKHVuc2lnbmVkIGxvbmcp IHRyYWNlcik7CisrCisrICBpZiAodHJhY2VyKQorKyAgICB7CisrICAgICAgaW50IGk7CisrICAg ICAgaW50IHRyYWNlcl9zYXZlID0gdHJhY2VyOworKworKyAgICAgIHRyYWNlciA9IDA7CisrCisr ICAgICAgaSA9IGtpbGwgKHRyYWNlcl9zYXZlLCBTSUdDT05UKTsKKysgICAgICBhc3NlcnQgKGkg PT0gMCk7CisrICAgIH0KKyt9CisrCisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQorK3sKKysgIGludCBpOworKyAgaW50IHN0YW5kYWxvbmUgPSAwOworKworKyAgaWYgKGFyZ2Mg PT0gMiAmJiBzdHJjbXAgKGFyZ3ZbMV0sICItcyIpID09IDApCisrICAgIHN0YW5kYWxvbmUgPSAx OworKyAgZWxzZQorKyAgICBhc3NlcnQgKGFyZ2MgPT0gMSk7CisrCisrICBzZXRidWYgKHN0ZG91 dCwgTlVMTCk7CisrCisrICB0aW1lZF9tdXRleF9sb2NrICgmZ2Ric3RvcF9tdXRleCk7CisrCisr ICB0aW1lZF9tdXRleF9sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysKKysgIGkgPSBwdGhyZWFk X2NyZWF0ZSAoJnRocmVhZDEsIE5VTEwsIHRocmVhZDFfZnVuYywgTlVMTCk7CisrICBhc3NlcnQg KGkgPT0gMCk7CisrCisrICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0aHJlYWQyLCBOVUxMLCB0aHJl YWQyX2Z1bmMsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgaWYgKCFzdGFuZGFs b25lKQorKyAgICB7CisrICAgICAgdHJhY2VyID0gcHJvY191bG9uZyAoIi9wcm9jL3NlbGYvc3Rh dHVzIiwgIlRyYWNlclBpZDpcdCIpOworKyAgICAgIGlmICh0cmFjZXIgPT0gMCkKKysJeworKwkg IGZwcmludGYgKHN0ZGVyciwgIlRoZSB0ZXN0Y2FzZSBtdXN0IGJlIHJ1biBieSBHREIhXG4iKTsK KysJICBleGl0IChFWElUX0ZBSUxVUkUpOworKwl9CisrICAgICAgaWYgKHRyYWNlciAhPSBnZXRw cGlkICgpKQorKwl7CisrCSAgZnByaW50ZiAoc3RkZXJyLCAiVGhlIHRlc3RjYXNlIHBhcmVudCBt dXN0IGJlIG91ciBHREIgdHJhY2VyIVxuIik7CisrCSAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysJ fQorKyAgICB9CisrCisrICAvKiBTSUdDT05UIG91ciBkZWJ1Z2dlciBpbiB0aGUgY2FzZSBvZiBv dXIgY3Jhc2ggYXMgd2Ugd291bGQgZGVhZGxvY2sKKysgICAgIG90aGVyd2lzZS4gICovCisrCisr ICBhdGV4aXQgKGNsZWFudXApOworKworKyAgcHJpbnRmICgiU3RvcHBpbmcgR0RCIFBJRCAlbHUu XG4iLCAodW5zaWduZWQgbG9uZykgdHJhY2VyKTsKKysKKysgIGlmICh0cmFjZXIpCisrICAgIHsK KysgICAgICBpID0ga2lsbCAodHJhY2VyLCBTSUdTVE9QKTsKKysgICAgICBhc3NlcnQgKGkgPT0g MCk7CisrICAgICAgc3RhdGVfd2FpdCAodHJhY2VyLCAiVCAoc3RvcHBlZCkiKTsKKysgICAgfQor KworKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKKysgIHRpbWVkX211 dGV4X2xvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7CisrCisrICAvKiBMZXQgdGhlIHRocmVhZHMg c3RhcnQuICAqLworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7 CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBwcmludGYgKCJXYWl0aW5nIHRpbGwgdGhlIHRo cmVhZHMgaW5pdGlhbGl6ZSB0aGVpciBUSURzLlxuIik7CisrCisrICBpZiAodGhyZWFkMV90aWQg PT0gMCkKKysgICAgeworKyAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDFfdGlk X2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKwor KyAgICAgIGFzc2VydCAodGhyZWFkMV90aWQgPiAwKTsKKysgICAgfQorKworKyAgaWYgKHRocmVh ZDJfdGlkID09IDApCisrICAgIHsKKysgICAgICBpID0gcHRocmVhZF9jb25kX3dhaXQgKCZ0aHJl YWQyX3RpZF9jb25kLCAmdGhyZWFkMl90aWRfbXV0ZXgpOworKyAgICAgIGFzc2VydCAoaSA9PSAw KTsKKysKKysgICAgICBhc3NlcnQgKHRocmVhZDJfdGlkID4gMCk7CisrICAgIH0KKysKKysgIHBy aW50ZiAoIlRocmVhZCAxIFRJRCA9ICVsdSwgdGhyZWFkIDIgVElEID0gJWx1LCBQSUQgPSAlbHUu XG4iLAorKwkgICh1bnNpZ25lZCBsb25nKSB0aHJlYWQxX3RpZCwgKHVuc2lnbmVkIGxvbmcpIHRo cmVhZDJfdGlkLAorKwkgICh1bnNpZ25lZCBsb25nKSBnZXRwaWQgKCkpOworKworKyAgcHJpbnRm ICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGdldCB0cmFwcGVkIGJ5IHRoZSB3YXRjaHBvaW50 cy5cbiIpOworKworKyAgaWYgKHRyYWNlcikKKysgICAgeworKyAgICAgIC8qIHMzOTB4LXVua25v d24tbGludXgtZ251IHdpbGwgZmFpbCB3aXRoICJSIChydW5uaW5nKSIuICAqLworKworKyAgICAg IHN0YXRlX3dhaXQgKHRocmVhZDFfdGlkLCAiVCAodHJhY2luZyBzdG9wKSIpOworKworKyAgICAg IHN0YXRlX3dhaXQgKHRocmVhZDJfdGlkLCAiVCAodHJhY2luZyBzdG9wKSIpOworKyAgICB9Cisr CisrICBjbGVhbnVwICgpOworKworKyAgcHJpbnRmICgiSm9pbmluZyB0aGUgdGhyZWFkcy5cbiIp OworKworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysg IGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGkgPSBwdGhyZWFkX2pvaW4gKHRocmVhZDEsIE5VTEwp OworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkMiwg TlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBwcmludGYgKCJFeGl0aW5nLlxuIik7 CS8qIGJyZWFrLWF0LWV4aXQgKi8KKysKKysgIC8qIEp1c3QgcHJldmVudCBjb21waWxlciBgd2Fy bmluZzogGyRCIUYbKEJ1bnVzZWRYX3J3YXRjaBskQiFHGyhCIGRlZmluZWQgYnV0IG5vdCB1c2Vk Jy4gICovCisrICB1bnVzZWQxX3J3YXRjaCA9IDE7CisrICB1bnVzZWQyX3J3YXRjaCA9IDI7Cisr CisrICByZXR1cm4gRVhJVF9TVUNDRVNTOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uOGY2NTM2NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5leHAKK0BAIC0wLDAgKzEsMTAxIEBA CisrIyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKwor KyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGVzdCBHREIgY2FuIGNvcGUgd2l0aCB0 d28gd2F0Y2hwb2ludHMgYmVpbmcgaGl0IGJ5IGRpZmZlcmVudCB0aHJlYWRzIGF0IHRoZQorKyMg c2FtZSB0aW1lLCBHREIgcmVwb3J0cyBvbmUgb2YgdGhlbSBhbmQgYWZ0ZXIgImNvbnRpbnVlIiB0 byByZXBvcnQgdGhlIG90aGVyCisrIyBvbmUgR0RCIHNob3VsZCBub3QgYmUgY29uZnVzZWQgYnkg ZGlmZmVyZW50bHkgc2V0IHdhdGNocG9pbnRzIHRoYXQgdGltZS4KKysjIFRoaXMgaXMgdGhlIGdv YWwgb2YgInJlb3JkZXIxIi4gICJyZW9yZGVyMCIgdGVzdHMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxp dHkgb2YKKysjIHR3byB3YXRjaHBvaW50IGJlaW5nIGhpdCBhdCB0aGUgc2FtZSB0aW1lLCB3aXRo b3V0IHJlb3JkZXJpbmcgdGhlbSBkdXJpbmcgdGhlCisrIyBzdG9wLiAgVGhlIGZvcm1lcmx5IGJy b2tlbiBmdW5jdGlvbmFsaXR5IGlzIGR1ZSB0byB0aGUgYWxsLXN0b3AgbW9kZSBkZWZhdWx0Cisr IyAic2hvdyBicmVha3BvaW50IGFsd2F5cy1pbnNlcnRlZCIgYmVpbmcgIm9mZiIuICBGb3JtZXJs eSB0aGUgcmVtZW1iZXJlZCBoaXQKKysjIGNvdWxkIGJlIGFzc2lnbmVkIGR1cmluZyBjb250aW51 YXRpb24gb2YgYSB0aHJlYWQgd2l0aCBwZW5kaW5nIFNJR1RSQVAgdG8gdGhlCisrIyBkaWZmZXJl bnQvbmV3IHdhdGNocG9pbnQsIGp1c3QgYmFzZWQgb24gdGhlIHdhdGNocG9pbnQvZGVidWcgcmVn aXN0ZXIgbnVtYmVyLgorKworK2lmIHtbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixub19oYXJkd2Fy ZV93YXRjaHBvaW50c10KKysgICAgfHwgIVtpc3RhcmdldCAqLSotbGludXgqXX0geworKyAgICBy ZXR1cm4gMDsKKyt9CisrCisrc2V0IHRlc3RmaWxlICJ3YXRjaHRocmVhZHMtcmVvcmRlciIKKytz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQorK2lmIHtbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgJHtiaW5maWxlfSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGFkZGl0 aW9uYWxfZmxhZ3M9LWxydF1dICE9ICIiIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrZm9y ZWFjaCByZW9yZGVyIHswIDF9IHsKKysKKysgICAgZ2xvYmFsIHBmX3ByZWZpeAorKyAgICBzZXQg cHJlZml4X3Rlc3QgJHBmX3ByZWZpeAorKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAicmVvcmRlciRy ZW9yZGVyOiIKKysKKysgICAgY2xlYW5fcmVzdGFydCAkdGVzdGZpbGUKKysKKysgICAgZ2RiX3Rl c3QgInNldCBjYW4tdXNlLWh3LXdhdGNocG9pbnRzIDEiCisrCisrICAgIGlmICFbcnVudG9fbWFp bl0geworKwlnZGJfc3VwcHJlc3NfdGVzdHMKKysgICAgfQorKworKyAgICAjIFVzZSAicndhdGNo IiBhcyAid2F0Y2giIHdvdWxkIHJlcG9ydCB0aGUgd2F0Y2hwb2ludCBjaGFuZ2VkIGp1c3QgYmFz ZWQgb24gaXRzCisrICAgICMgcmVhZCBtZW1vcnkgdmFsdWUgZHVyaW5nIGEgc3RvcCBieSB1bnJl bGF0ZWQgZXZlbnQuICBXZSBhcmUgaW50ZXJlc3RlZCB0byBub3QKKysgICAgIyB0byBsb3NlIHRo ZSBoYXJkd2FyZSB3YXRjaHBvaW50IHRyaWdnZXIuCisrCisrICAgIGdkYl90ZXN0ICJyd2F0Y2gg dGhyZWFkMV9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6IHRocmVh ZDFfcndhdGNoIgorKyAgICBnZGJfdGVzdCB7c2V0ICRyd2F0Y2gxPSRicG51bX0KKysgICAgc2V0 IHRlc3QgInJ3YXRjaCB0aHJlYWQyX3J3YXRjaCIKKysgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgJHRl c3QgJHRlc3QgeworKwktcmUgIlRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdHlwZSBvZiBo YXJkd2FyZSB3YXRjaHBvaW50XFwuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgICMgcHBjNjQg c3VwcG9ydHMgYXQgbW9zdCAxIGh3IHdhdGNocG9pbnRzLgorKwkgICAgdW5zdXBwb3J0ZWQgJHRl c3QKKysJICAgIHJldHVybgorKwl9CisrCS1yZSAiSGFyZHdhcmUgcmVhZCB3YXRjaHBvaW50IFxb MC05XF0rOiB0aHJlYWQyX3J3YXRjaFxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0 ZXN0CisrCX0KKysgICAgfQorKyAgICBnZGJfdGVzdCB7c2V0ICRyd2F0Y2gyPSRicG51bX0KKysg ICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LWV4aXQiXQor KworKyAgICAjIFRoZSB3YXRjaHBvaW50cyBjYW4gaGFwcGVuIGluIGFyYml0cmFyeSBvcmRlciBk ZXBlbmRpbmcgb24gcmFuZG9tOgorKyAgICAjIFNFTDogRm91bmQgMiBTSUdUUkFQIGV2ZW50cywg c2VsZWN0aW5nICNbMDFdCisrICAgICMgQXMgR0RCIGNvbnRhaW5zIG5vIHNyYW5kKCkgb24gdGhl IHNwZWNpZmljIGhvc3QvT1MgaXQgd2lsbCBiZWhhdmUgYWx3YXlzIHRoZQorKyAgICAjIHNhbWUu ICBTdWNoIG9yZGVyIGNhbm5vdCBiZSBndWFyYW50ZWVkIGZvciBHREIgaW4gZ2VuZXJhbC4KKysK KysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgIkhhcmR3YXJlIHJlYWQgd2F0Y2hw b2ludCBcWzAtOVxdKzogdGhyZWFkXFsxMlxdX3J3YXRjaFxyXG5cclxuVmFsdWUgPSAwXHJcbjB4 XFswLTlhLWZcXSsgaW4gdGhyZWFkXFsxMlxdX2Z1bmMgLioiIFwKKysJICAgICAiY29udGludWUg YSIKKysKKysgICAgaWYgJHJlb3JkZXIgeworKwlnZGJfdGVzdCB7ZGVsZXRlICRyd2F0Y2gxfQor KwlnZGJfdGVzdCB7ZGVsZXRlICRyd2F0Y2gyfQorKworKwlnZGJfdGVzdCAicndhdGNoIHVudXNl ZDFfcndhdGNoIiAiSGFyZHdhcmUgcmVhZCB3YXRjaHBvaW50IFxbMC05XF0rOiB1bnVzZWQxX3J3 YXRjaCIKKysJZ2RiX3Rlc3QgInJ3YXRjaCB1bnVzZWQyX3J3YXRjaCIgIkhhcmR3YXJlIHJlYWQg d2F0Y2hwb2ludCBcWzAtOVxdKzogdW51c2VkMl9yd2F0Y2giCisrCisrCWdkYl90ZXN0ICJyd2F0 Y2ggdGhyZWFkMV9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6IHRo cmVhZDFfcndhdGNoIgorKwlnZGJfdGVzdCAicndhdGNoIHRocmVhZDJfcndhdGNoIiAiSGFyZHdh cmUgcmVhZCB3YXRjaHBvaW50IFxbMC05XF0rOiB0aHJlYWQyX3J3YXRjaCIKKysgICAgfQorKwor KyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAiSGFyZHdhcmUgcmVhZCB3YXRjaHBv aW50IFxbMC05XF0rOiB0aHJlYWRcWzEyXF1fcndhdGNoXHJcblxyXG5WYWx1ZSA9IDBcclxuMHhc WzAtOWEtZlxdKyBpbiB0aHJlYWRcWzEyXF1fZnVuYyAuKiIgXAorKwkgICAgICJjb250aW51ZSBi IgorKworKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstYXQtZXhpdCIgIi4q YnJlYWstYXQtZXhpdC4qIgorKworKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfdGVzdAorK30K IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9jcC1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0 c3VpdGUvbGliL2NwLXN1cHBvcnQuZXhwCiBpbmRleCBkYmQyZjU5Li40NGUxYjUxIDEwMDY0NAog LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvY3Atc3VwcG9ydC5leHAKCmRpZmYgLS1naXQgYS9nZGIu c3BlYyBiL2dkYi5zcGVjCmluZGV4IDVhZTAyMDIuLmEyODg2NGEgMTAwNjQ0Ci0tLSBhL2dkYi5z cGVjCisrKyBiL2dkYi5zcGVjCkBAIC0xNCw3ICsxNCw3IEBAIFZlcnNpb246IDYuOC41MC4yMDA5 MDgxOAogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQg bnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5h bWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVz dGluZy4KLVJlbGVhc2U6IDIlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXs/ZGlzdH0KK1Jl bGVhc2U6IDMlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXs/ZGlzdH0KIAogTGljZW5zZTog R1BMdjMrCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC04MjEsNiArODIxLDEwIEBA IGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBUdWUgQXVnIDE4IDIwMDkgSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNi44LjUwLjIwMDkwODE4LTMKKy0gYXJj aGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTIgY29tbWl0OiA4NTBlM2NiMzhhMjVjYjdmZGZhNGNl ZjY2NzYyNmZmYmRlNTFiY2FjCistIEZpeCB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludHMuCisKICog VHVlIEF1ZyAxOCAyMDA5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PiAtIDYuOC41MC4yMDA5MDgxOC0yCiAtIEZpeCBwYXRjaCBmdXp6IDAuCiAK