From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Pohlack Subject: Re: [PATCH v1 08/11] xsplice: Implement support for applying patches Date: Fri, 27 Nov 2015 14:51:17 +0100 Message-ID: <56585FD5.7050905@amazon.com> References: <1446574568-9644-1-git-send-email-ross.lagerwall@citrix.com> <1446574568-9644-8-git-send-email-ross.lagerwall@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1446574568-9644-8-git-send-email-ross.lagerwall@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ross Lagerwall , xen-devel@lists.xen.org Cc: Kevin Tian , Ian Campbell , Jun Nakajima , Andrew Cooper , Stefano Stabellini , Jan Beulich , Aravind Gopalakrishnan , Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org T24gMDMuMTEuMjAxNSAxOToxNiwgUm9zcyBMYWdlcndhbGwgd3JvdGU6Cj4gSW1wbGVtZW50IHN1 cHBvcnQgZm9yIHRoZSBhcHBseSwgcmV2ZXJ0IGFuZCByZXBsYWNlIGFjdGlvbnMuCj4gCj4gVG8g cGVyZm9ybSBhbmQgYWN0aW9uIG9uIGEgcGF5bG9hZCwgdGhlIGh5cGVyY2FsbCBzZXRzIHVwIGEg ZGF0YQo+IHN0cnVjdHVyZSB0byBzY2hlZHVsZSB0aGUgd29yay4gIEEgaG9vayBpcyBhZGRlZCBp biBhbGwgdGhlCj4gcmV0dXJuLXRvLWd1ZXN0IHBhdGhzIHRvIGNoZWNrIGZvciB3b3JrIHRvIGRv IGFuZCBleGVjdXRlIGl0IGlmIG5lZWRlZC4KPiBJbiB0aGlzIHdheSwgcGF0Y2hlcyBjYW4gYmUg YXBwbGllZCB3aXRoIGFsbCBDUFVzIGlkbGUgYW5kIHdpdGhvdXQKPiBzdGFja3MuICBUaGUgZmly c3QgQ1BVIHRvIGRvX3hzcGxpY2UoKSBiZWNvbWVzIHRoZSBtYXN0ZXIgYW5kIHRyaWdnZXJzIGEK PiByZXNjaGVkdWxlIHNvZnRpcnEgdG8gdHJpZ2dlciBhbGwgdGhlIG90aGVyIENQVXMgdG8gZW50 ZXIgZG9feHNwbGljZSgpCj4gd2l0aCBubyBzdGFjay4gIE9uY2UgYWxsIENQVXMgaGF2ZSByZW5k ZXp2b3VzZWQsIGFsbCBDUFVzIGRpc2FibGUgSVJRcwo+IGFuZCBOTUlzIGFyZSBpZ25vcmVkLiBU aGUgc3lzdGVtIGlzIHRoZW4gcXVpc2NpZW50IGFuZCB0aGUgbWFzdGVyCj4gcGVyZm9ybXMgdGhl IGFjdGlvbi4gIEFmdGVyIHRoaXMsIGFsbCBDUFVzIGVuYWJsZSBJUlFzIGFuZCBOTUlzIGFyZQo+ IHJlLWVuYWJsZWQuCj4gCj4gVGhlIGFjdGlvbiB0byBwZXJmb3JtIGlzIG9uZSBvZjoKPiAtIEFQ UExZOiBGb3IgZWFjaCBmdW5jdGlvbiBpbiB0aGUgbW9kdWxlLCBzdG9yZSB0aGUgZmlyc3QgNSBi eXRlcyBvZiB0aGUKPiAgIG9sZCBmdW5jdGlvbiBhbmQgcmVwbGFjZSBpdCB3aXRoIGEganVtcCB0 byB0aGUgbmV3IGZ1bmN0aW9uLgo+IC0gUkVWRVJUOiBDb3B5IHRoZSBwcmV2aW91c2x5IHN0b3Jl ZCBieXRlcyBpbnRvIHRoZSBmaXJzdCA1IGJ5dGVzIG9mIHRoZQo+ICAgb2xkIGZ1bmN0aW9uLgo+ IC0gUkVQTEFDRTogUmV2ZXJ0IGVhY2ggYXBwbGllZCBtb2R1bGUgYW5kIHRoZW4gYXBwbHkgdGhl IG5ldyBtb2R1bGUuCj4gCj4gVG8gcHJldmVudCBhIGRlYWRsb2NrIHdpdGggYW55IG90aGVyIGJh cnJpZXIgaW4gdGhlIHN5c3RlbSwgdGhlIG1hc3Rlcgo+IHdpbGwgd2FpdCBmb3IgdXAgdG8gMzBt cyBiZWZvcmUgdGltaW5nIG91dC4gIEkndmUgdGFrZW4gc29tZQo+IG1lYXN1cmVtZW50cyBhbmQg Zm91bmQgdGhlIHBhdGNoIGFwcGxpY2F0aW9uIHRvIHRha2UgYWJvdXQgMTAwIM68cyBvbiBhCj4g NzIgQ1BVIHN5c3RlbSwgd2hldGhlciBpZGxlIG9yIGZ1bGx5IGxvYWRlZC4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KPiAtLS0K PiAgeGVuL2FyY2gvYXJtL3hzcGxpY2UuYyAgICAgIHwgICA4ICsrCj4gIHhlbi9hcmNoL3g4Ni9k b21haW4uYyAgICAgICB8ICAgNCArCj4gIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jICB8ICAg MiArCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyB8ICAgMiArCj4gIHhlbi9hcmNoL3g4 Ni94c3BsaWNlLmMgICAgICB8ICAxOSArKysrCj4gIHhlbi9jb21tb24veHNwbGljZS5jICAgICAg ICB8IDI2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICB4 ZW4vaW5jbHVkZS9hc20tYXJtL25taS5oICAgfCAgMTMgKysrCj4gIHhlbi9pbmNsdWRlL3hlbi94 c3BsaWNlLmggICB8ICAgNyArLQo+ICA4IGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCsp LCAxMyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3hzcGxpY2Uu YyBiL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKPiBpbmRleCA4ZDg1ZmE5Li4zYzM0ZWIzIDEwMDY0 NAo+IC0tLSBhL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKPiArKysgYi94ZW4vYXJjaC9hcm0veHNw bGljZS5jCj4gQEAgLTMsNiArMywxNCBAQAo+ICAjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+ Cj4gICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgo+ICAKPiArdm9pZCB4c3BsaWNlX2FwcGx5X2pt cChzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKQo+ICt7Cj4gK30KPiArCj4gK3ZvaWQg eHNwbGljZV9yZXZlcnRfam1wKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCj4gK3sK PiArfQo+ICsKPiAgaW50IHhzcGxpY2VfdmVyaWZ5X2VsZih1aW50OF90ICpkYXRhLCBzc2l6ZV90 IGxlbikKPiAgewo+ICAgICAgcmV0dXJuIC1FTk9TWVM7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IGluZGV4IGZlM2JlMzAuLjQ0 MjBjZmMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L2RvbWFpbi5jCj4gQEAgLTM2LDYgKzM2LDcgQEAKPiAgI2luY2x1ZGUgPHhlbi9jcHUu aD4KPiAgI2luY2x1ZGUgPHhlbi93YWl0Lmg+Cj4gICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNz Lmg+Cj4gKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgo+ICAjaW5jbHVkZSA8cHVibGljL3N5c2N0 bC5oPgo+ICAjaW5jbHVkZSA8YXNtL3JlZ3MuaD4KPiAgI2luY2x1ZGUgPGFzbS9tYzE0NjgxOHJ0 Yy5oPgo+IEBAIC0xMjAsNiArMTIxLDcgQEAgc3RhdGljIHZvaWQgaWRsZV9sb29wKHZvaWQpCj4g ICAgICAgICAgKCpwbV9pZGxlKSgpOwo+ICAgICAgICAgIGRvX3Rhc2tsZXQoKTsKPiAgICAgICAg ICBkb19zb2Z0aXJxKCk7Cj4gKyAgICAgICAgZG9feHNwbGljZSgpOwoKRG8gd2UgaGF2ZSBhIHJl cXVpcmVtZW50IGhlcmUgdG8gcnVuIGxhc3Q/ICAtPiAvKiBtdXN0IGJlIGxhc3QgKi8KCj4gICAg ICB9Cj4gIH0KPiAgCj4gQEAgLTEzNiw2ICsxMzgsNyBAQCB2b2lkIHN0YXJ0dXBfY3B1X2lkbGVf bG9vcCh2b2lkKQo+ICAKPiAgc3RhdGljIHZvaWQgbm9yZXR1cm4gY29udGludWVfaWRsZV9kb21h aW4oc3RydWN0IHZjcHUgKnYpCj4gIHsKPiArICAgIGRvX3hzcGxpY2UoKTsKPiAgICAgIHJlc2V0 X3N0YWNrX2FuZF9qdW1wKGlkbGVfbG9vcCk7Cj4gIH0KPiAgCj4gQEAgLTE0Myw2ICsxNDYsNyBA QCBzdGF0aWMgdm9pZCBub3JldHVybiBjb250aW51ZV9ub25pZGxlX2RvbWFpbihzdHJ1Y3QgdmNw dSAqdikKPiAgewo+ICAgICAgY2hlY2tfd2FrZXVwX2Zyb21fd2FpdCgpOwo+ICAgICAgbWFya19y ZWdzX2RpcnR5KGd1ZXN0X2NwdV91c2VyX3JlZ3MoKSk7Cj4gKyAgICBkb194c3BsaWNlKCk7Cj4g ICAgICByZXNldF9zdGFja19hbmRfanVtcChyZXRfZnJvbV9pbnRyKTsKPiAgfQo+ICAKPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2 bS9zdm0uYwo+IGluZGV4IDhkZTQxZmEuLjY1YmY3ZTkgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L2h2bS9zdm0vc3ZtLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYwo+IEBA IC0yNiw2ICsyNiw3IEBACj4gICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+Cj4gICNpbmNsdWRl IDx4ZW4vZG9tYWluX3BhZ2UuaD4KPiAgI2luY2x1ZGUgPHhlbi94ZW5vcHJvZi5oPgo+ICsjaW5j bHVkZSA8eGVuL3hzcGxpY2UuaD4KPiAgI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+Cj4gICNpbmNs dWRlIDxhc20vaW8uaD4KPiAgI2luY2x1ZGUgPGFzbS9wYWdpbmcuaD4KPiBAQCAtMTA3MSw2ICsx MDcyLDcgQEAgc3RhdGljIHZvaWQgbm9yZXR1cm4gc3ZtX2RvX3Jlc3VtZShzdHJ1Y3QgdmNwdSAq dikKPiAgCj4gICAgICBodm1fZG9fcmVzdW1lKHYpOwo+ICAKPiArICAgIGRvX3hzcGxpY2UoKTsK PiAgICAgIHJlc2V0X3N0YWNrX2FuZF9qdW1wKHN2bV9hc21fZG9fcmVzdW1lKTsKPiAgfQo+ICAK PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jIGIveGVuL2FyY2gveDg2 L2h2bS92bXgvdm1jcy5jCj4gaW5kZXggNGVhMWFkMS4uZDk5NmY0NyAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92 bWNzLmMKPiBAQCAtMjUsNiArMjUsNyBAQAo+ICAjaW5jbHVkZSA8eGVuL2tlcm5lbC5oPgo+ICAj aW5jbHVkZSA8eGVuL2tleWhhbmRsZXIuaD4KPiAgI2luY2x1ZGUgPHhlbi92bV9ldmVudC5oPgo+ ICsjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KPiAgI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+Cj4g ICNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5oPgo+ICAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5o Pgo+IEBAIC0xNjg1LDYgKzE2ODYsNyBAQCB2b2lkIHZteF9kb19yZXN1bWUoc3RydWN0IHZjcHUg KnYpCj4gICAgICB9Cj4gIAo+ICAgICAgaHZtX2RvX3Jlc3VtZSh2KTsKPiArICAgIGRvX3hzcGxp Y2UoKTsKPiAgICAgIHJlc2V0X3N0YWNrX2FuZF9qdW1wKHZteF9hc21fZG9fdm1lbnRyeSk7Cj4g IH0KPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMgYi94ZW4vYXJjaC94 ODYveHNwbGljZS5jCj4gaW5kZXggZGJmZjBkNS4uMzFlNDEyNCAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYveHNwbGljZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L3hzcGxpY2UuYwo+IEBAIC0z LDYgKzMsMjUgQEAKPiAgI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgo+ICAjaW5jbHVkZSA8 eGVuL3hzcGxpY2UuaD4KPiAgCj4gKyNkZWZpbmUgUEFUQ0hfSU5TTl9TSVpFIDUKPiArCj4gK3Zv aWQgeHNwbGljZV9hcHBseV9qbXAoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYykKPiAr ewo+ICsgICAgdWludDMyX3QgdmFsOwo+ICsgICAgdWludDhfdCAqb2xkX3B0cjsKPiArCj4gKyAg ICBvbGRfcHRyID0gKHVpbnQ4X3QgKilmdW5jLT5vbGRfYWRkcjsKPiArICAgIG1lbWNweShmdW5j LT51bmRvLCBvbGRfcHRyLCBQQVRDSF9JTlNOX1NJWkUpOwo+ICsgICAgKm9sZF9wdHIrKyA9IDB4 ZTk7IC8qIFJlbGF0aXZlIGp1bXAgKi8KPiArICAgIHZhbCA9IGZ1bmMtPm5ld19hZGRyIC0gZnVu Yy0+b2xkX2FkZHIgLSBQQVRDSF9JTlNOX1NJWkU7Cj4gKyAgICBtZW1jcHkob2xkX3B0ciwgJnZh bCwgc2l6ZW9mIHZhbCk7Cj4gK30KPiArCj4gK3ZvaWQgeHNwbGljZV9yZXZlcnRfam1wKHN0cnVj dCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCj4gK3sKPiArICAgIG1lbWNweSgodm9pZCAqKWZ1 bmMtPm9sZF9hZGRyLCBmdW5jLT51bmRvLCBQQVRDSF9JTlNOX1NJWkUpOwo+ICt9Cj4gKwo+ICBp bnQgeHNwbGljZV92ZXJpZnlfZWxmKHVpbnQ4X3QgKmRhdGEsIHNzaXplX3QgbGVuKQo+ICB7Cj4g IAo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24veHNwbGlj ZS5jCj4gaW5kZXggNWU4OGM1NS4uNDQ3NmJlNSAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL3hz cGxpY2UuYwo+ICsrKyBiL3hlbi9jb21tb24veHNwbGljZS5jCj4gQEAgLTExLDE2ICsxMSwyMSBA QAo+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgo+ICAjaW5jbHVkZSA8eGVuL3N0ZGJv b2wuaD4KPiAgI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgo+ICsjaW5jbHVkZSA8eGVuL3NvZnRpcnEu aD4KPiAgI2luY2x1ZGUgPHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi93YWl0Lmg+Cj4gICNp bmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KPiAgI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+Cj4g ICNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+Cj4gIAo+ICAjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+ Cj4gKyNpbmNsdWRlIDxhc20vbm1pLmg+Cj4gIAo+ICBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHBh eWxvYWRfbGlzdF9sb2NrKTsKPiAgc3RhdGljIExJU1RfSEVBRChwYXlsb2FkX2xpc3QpOwo+ICAK PiArc3RhdGljIExJU1RfSEVBRChhcHBsaWVkX2xpc3QpOwo+ICsKPiAgc3RhdGljIHVuc2lnbmVk IGludCBwYXlsb2FkX2NudDsKPiAgc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX3ZlcnNpb24g PSAxOwo+ICAKPiBAQCAtMjksMTUgKzM0LDM0IEBAIHN0cnVjdCBwYXlsb2FkIHsKPiAgICAgIGlu dDMyX3QgcmM7ICAgICAgICAgLyogMCBvciAtRVhYLiAqLwo+ICAKPiAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgICBsaXN0OyAgIC8qIExpbmtlZCB0byAncGF5bG9hZF9saXN0Jy4gKi8KPiArICAgIHN0 cnVjdCBsaXN0X2hlYWQgICBhcHBsaWVkX2xpc3Q7ICAgLyogTGlua2VkIHRvICdhcHBsaWVkX2xp c3QnLiAqLwo+ICAKPiArICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmNzOwo+ICsg ICAgaW50IG5mdW5jczsKPiAgICAgIHZvaWQgKm1vZHVsZV9hZGRyZXNzOwo+ICAgICAgc2l6ZV90 IG1vZHVsZV9wYWdlczsKPiAgCj4gICAgICBjaGFyICBpZFtYRU5fWFNQTElDRV9OQU1FX1NJWkUg KyAxXTsgICAgICAgICAgLyogTmFtZSBvZiBpdC4gKi8KPiAgfTsKPiAgCj4gKy8qIERlZmluZXMg YW4gb3V0c3RhbmRpbmcgcGF0Y2hpbmcgYWN0aW9uLiAqLwo+ICtzdHJ1Y3QgeHNwbGljZV93b3Jr Cj4gK3sKPiArICAgIGF0b21pY190IHNlbWFwaG9yZTsgICAgICAgICAgLyogVXNlZCBmb3IgcmVu ZGV6dm91cyAqLwo+ICsgICAgYXRvbWljX3QgaXJxX3NlbWFwaG9yZTsgICAgICAvKiBVc2VkIHRv IHNpZ25hbCBhbGwgSVJRcyBkaXNhYmxlZCAqLwo+ICsgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7 ICAgICAgICAvKiBUaGUgcGF5bG9hZCBvbiB3aGljaCB0byBhY3QgKi8KPiArICAgIHZvbGF0aWxl IGJvb2xfdCBkb193b3JrOyAgICAgLyogU2lnbmFscyB3b3JrIHRvIGRvICovCj4gKyAgICB2b2xh dGlsZSBib29sX3QgcmVhZHk7ICAgICAgIC8qIFNpZ25hbHMgYWxsIENQVXMgc3luY2hyb25pemVk ICovCj4gKyAgICB1aW50MzJfdCBjbWQ7ICAgICAgICAgICAgICAgIC8qIEFjdGlvbiByZXF1ZXN0 LiBYU1BMSUNFX0FDVElPTl8qICovCj4gK307Cj4gKwo+ICtzdGF0aWMgREVGSU5FX1NQSU5MT0NL KHhzcGxpY2Vfd29ya19sb2NrKTsKPiArLyogVGhlcmUgY2FuIGJlIG9ubHkgb25lIG91dHN0YW5k aW5nIHBhdGNoaW5nIGFjdGlvbi4gKi8KPiArc3RhdGljIHN0cnVjdCB4c3BsaWNlX3dvcmsgeHNw bGljZV93b3JrOwo+ICsKPiAgc3RhdGljIGludCBsb2FkX21vZHVsZShzdHJ1Y3QgcGF5bG9hZCAq cGF5bG9hZCwgdWludDhfdCAqcmF3LCBzc2l6ZV90IGxlbik7Cj4gIHN0YXRpYyB2b2lkIGZyZWVf bW9kdWxlKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkKTsKPiArc3RhdGljIGludCBzY2hlZHVsZV93 b3JrKHN0cnVjdCBwYXlsb2FkICpkYXRhLCB1aW50MzJfdCBjbWQpOwo+ICAKPiAgc3RhdGljIGNv bnN0IGNoYXIgKnN0YXRlMnN0cihpbnQzMl90IHN0YXRlKQo+ICB7Cj4gQEAgLTM0MSwyOCArMzY1 LDIyIEBAIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlv bl90ICphY3Rpb24pCj4gICAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFVkVSVDoKPiAgICAgICAg ICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCj4gICAgICAgICAg ewo+IC0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCj4gLSAgICAgICAg ICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwo+IC0gICAgICAgICAgICBk YXRhLT5yYyA9IDA7Cj4gLSAgICAgICAgICAgIHJjID0gMDsKPiArICAgICAgICAgICAgZGF0YS0+ cmMgPSAtRUFHQUlOOwo+ICsgICAgICAgICAgICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwgYWN0 aW9uLT5jbWQpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgWFNQ TElDRV9BQ1RJT05fQVBQTFk6Cj4gICAgICAgICAgaWYgKCAoZGF0YS0+c3RhdGUgPT0gWFNQTElD RV9TVEFURV9DSEVDS0VEKSApCj4gICAgICAgICAgewo+IC0gICAgICAgICAgICAvKiBObyBpbXBs ZW1lbnRhdGlvbiB5ZXQuICovCj4gLSAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9T VEFURV9BUFBMSUVEOwo+IC0gICAgICAgICAgICBkYXRhLT5yYyA9IDA7Cj4gLSAgICAgICAgICAg IHJjID0gMDsKPiArICAgICAgICAgICAgZGF0YS0+cmMgPSAtRUFHQUlOOwo+ICsgICAgICAgICAg ICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwgYWN0aW9uLT5jbWQpOwo+ICAgICAgICAgIH0KPiAg ICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVQTEFDRToKPiAgICAg ICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCj4gICAgICAg ICAgewo+IC0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCj4gLSAgICAg ICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwo+IC0gICAgICAgICAg ICBkYXRhLT5yYyA9IDA7Cj4gLSAgICAgICAgICAgIHJjID0gMDsKPiArICAgICAgICAgICAgZGF0 YS0+cmMgPSAtRUFHQUlOOwo+ICsgICAgICAgICAgICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwg YWN0aW9uLT5jbWQpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBicmVhazsKPiAgICAgIGRlZmF1 bHQ6Cj4gQEAgLTYzNyw2ICs2NTUsMjQgQEAgc3RhdGljIGludCBwZXJmb3JtX3JlbG9jcyhzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZikKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMg aW50IGZpbmRfc3BlY2lhbF9zZWN0aW9ucyhzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCj4g K3sKPiArICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKPiArCj4gKyAgICBzZWMgPSB4 c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShlbGYsICIueHNwbGljZS5mdW5jcyIpOwo+ICsgICAgaWYg KCAhc2VjICkKPiArICAgIHsKPiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiLnhzcGxpY2Uu ZnVuY3MgaXMgbWlzc2luZ1xuIik7Cj4gKyAgICAgICAgcmV0dXJuIC0xOwo+ICsgICAgfQo+ICsK PiArICAgIHBheWxvYWQtPmZ1bmNzID0gKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKilzZWMt PmxvYWRfYWRkcjsKPiArICAgIHBheWxvYWQtPm5mdW5jcyA9IHNlYy0+c2VjLT5zaF9zaXplIC8g KHNpemVvZiAqcGF5bG9hZC0+ZnVuY3MpOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ ICBzdGF0aWMgaW50IGxvYWRfbW9kdWxlKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCB1aW50OF90 ICpyYXcsIHNzaXplX3QgbGVuKQo+ICB7Cj4gICAgICBzdHJ1Y3QgeHNwbGljZV9lbGYgZWxmOwo+ IEBAIC02NjIsNiArNjk4LDEwIEBAIHN0YXRpYyBpbnQgbG9hZF9tb2R1bGUoc3RydWN0IHBheWxv YWQgKnBheWxvYWQsIHVpbnQ4X3QgKnJhdywgc3NpemVfdCBsZW4pCj4gICAgICBpZiAoIHJjICkK PiAgICAgICAgICBnb3RvIGVycl9tb2R1bGU7Cj4gIAo+ICsgICAgcmMgPSBmaW5kX3NwZWNpYWxf c2VjdGlvbnMocGF5bG9hZCwgJmVsZik7Cj4gKyAgICBpZiAoIHJjICkKPiArICAgICAgICBnb3Rv IGVycl9tb2R1bGU7Cj4gKwo+ICAgICAgcmV0dXJuIDA7Cj4gIAo+ICAgZXJyX21vZHVsZToKPiBA QCAtNjcyLDYgKzcxMiwyMDYgQEAgc3RhdGljIGludCBsb2FkX21vZHVsZShzdHJ1Y3QgcGF5bG9h ZCAqcGF5bG9hZCwgdWludDhfdCAqcmF3LCBzc2l6ZV90IGxlbikKPiAgICAgIHJldHVybiByYzsK PiAgfQo+ICAKPiArCj4gKy8qCj4gKyAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdldCB0aGUg Q1BVcyBpbnRvIGFuIGFwcHJvcHJpYXRlIHN0YXRlIGFuZAo+ICsgKiBhcHBseSAob3IgcmV2ZXJ0 KSBlYWNoIG9mIHRoZSBtb2R1bGUncyBmdW5jdGlvbnMuCj4gKyAqLwo+ICsKPiArLyoKPiArICog VGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBoYXZpbmcgYWxsIG90aGVyIENQVXMgd2l0aCBubyBz dGFjayBhbmQgSVJRcwo+ICsgKiBkaXNhYmxlZC4KCkhvdyB3b3VsZCB3ZSBndWFyZCBhZ2FpbnN0 IE5NSXM/Cgo+ICsgKi8KPiArc3RhdGljIGludCBhcHBseV9wYXlsb2FkKHN0cnVjdCBwYXlsb2Fk ICpkYXRhKQo+ICt7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAgICBwcmludGsoWEVOTE9HX0RFQlVH ICJBcHBseWluZyBwYXlsb2FkOiAlc1xuIiwgZGF0YS0+aWQpOwo+ICsKPiArICAgIGZvciAoIGkg PSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysgKQo+ICsgICAgICAgIHhzcGxpY2VfYXBwbHlfam1w KGRhdGEtPmZ1bmNzICsgaSk7Cj4gKwo+ICsgICAgbGlzdF9hZGRfdGFpbCgmZGF0YS0+YXBwbGll ZF9saXN0LCAmYXBwbGllZF9saXN0KTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAr LyoKPiArICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBoYXZpbmcgYWxsIG90aGVyIENQVXMg d2l0aCBubyBzdGFjayBhbmQgSVJRcwo+ICsgKiBkaXNhYmxlZC4KPiArICovCj4gK3N0YXRpYyBp bnQgcmV2ZXJ0X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCj4gK3sKPiArICAgIGludCBp Owo+ICsKPiArICAgIHByaW50ayhYRU5MT0dfREVCVUcgIlJldmVydGluZyBwYXlsb2FkOiAlc1xu IiwgZGF0YS0+aWQpOwo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBp KysgKQo+ICsgICAgICAgIHhzcGxpY2VfcmV2ZXJ0X2ptcChkYXRhLT5mdW5jcyArIGkpOwo+ICsK PiArICAgIGxpc3RfZGVsKCZkYXRhLT5hcHBsaWVkX2xpc3QpOwo+ICsKPiArICAgIHJldHVybiAw Owo+ICt9Cj4gKwo+ICsvKiBNdXN0IGJlIGhvbGRpbmcgdGhlIHBheWxvYWRfbGlzdCBsb2NrICov Cj4gK3N0YXRpYyBpbnQgc2NoZWR1bGVfd29yayhzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgdWludDMy X3QgY21kKQo+ICt7Cj4gKyAgICAvKiBGYWlsIGlmIGFuIG9wZXJhdGlvbiBpcyBhbHJlYWR5IHNj aGVkdWxlZCAqLwo+ICsgICAgaWYgKCB4c3BsaWNlX3dvcmsuZG9fd29yayApCj4gKyAgICAgICAg cmV0dXJuIC1FQUdBSU47Cj4gKwo+ICsgICAgeHNwbGljZV93b3JrLmNtZCA9IGNtZDsKPiArICAg IHhzcGxpY2Vfd29yay5kYXRhID0gZGF0YTsKPiArICAgIGF0b21pY19zZXQoJnhzcGxpY2Vfd29y ay5zZW1hcGhvcmUsIDApOwo+ICsgICAgYXRvbWljX3NldCgmeHNwbGljZV93b3JrLmlycV9zZW1h cGhvcmUsIDApOwo+ICsgICAgeHNwbGljZV93b3JrLnJlYWR5ID0gZmFsc2U7Cj4gKyAgICBzbXBf bWIoKTsKPiArICAgIHhzcGxpY2Vfd29yay5kb193b3JrID0gdHJ1ZTsKPiArICAgIHNtcF9tYigp Owo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1hc2tfbm1pX2Nh bGxiYWNrKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBpbnQgY3B1KQo+ICt7Cj4g KyAgICByZXR1cm4gMTsKCk5pY2UgYXBwcm9hY2guICBCdXQgaXQgbWVhbnMgdGhhdDoKKiBBdCBs ZWFzdCBkb19ubWkgd2lsbCBub3QgYmUgc2FmZWx5IHBhdGNoYWJsZS4gIEFueSBpZGVhIGhvdyB3 ZSBjYW4KICBjb21lIHVwIHdpdGggYSBsaXN0IG9mIHNpbWlsYXJseSBub24tcGF0Y2hhYmxlIGZ1 bmN0aW9ucz8KKiBXZSB3aWxsIGxvc2UgTk1JcyBoaXR0aW5nIHVzIGhlcmUuCgo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCByZXNjaGVkdWxlX2ZuKHZvaWQgKnVudXNlZCkKPiArewo+ICsgICAgc21w X21iKCk7IC8qIFN5bmNocm9uaXplIHdpdGggc2V0dGluZyBkb193b3JrICovCj4gKyAgICByYWlz ZV9zb2Z0aXJxKFNDSEVEVUxFX1NPRlRJUlEpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUaGUgbWFp biBmdW5jdGlvbiB3aGljaCBtYW5hZ2VzIHRoZSB3b3JrIG9mIHF1aWVzY2luZyB0aGUgc3lzdGVt IGFuZAo+ICsgKiBwYXRjaGluZyBjb2RlLgo+ICsgKi8KPiArdm9pZCBkb194c3BsaWNlKHZvaWQp Cj4gK3sKPiArICAgIGludCBpZDsKPiArICAgIHVuc2lnbmVkIGludCB0b3RhbF9jcHVzOwo+ICsg ICAgbm1pX2NhbGxiYWNrX3Qgc2F2ZWRfbm1pX2NhbGxiYWNrOwo+ICsKPiArICAgIC8qIEZhc3Qg cGF0aDogbm8gd29yayB0byBkbyAqLwo+ICsgICAgaWYgKCBsaWtlbHkoIXhzcGxpY2Vfd29yay5k b193b3JrKSApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgIEFTU0VSVChsb2NhbF9pcnFf aXNfZW5hYmxlZCgpKTsKPiArCj4gKyAgICBzcGluX2xvY2soJnhzcGxpY2Vfd29ya19sb2NrKTsK PiArICAgIGlkID0gYXRvbWljX3JlYWQoJnhzcGxpY2Vfd29yay5zZW1hcGhvcmUpOwo+ICsgICAg YXRvbWljX2luYygmeHNwbGljZV93b3JrLnNlbWFwaG9yZSk7Cj4gKyAgICBzcGluX3VubG9jaygm eHNwbGljZV93b3JrX2xvY2spOwo+ICsKCkkgaGF2ZSB1c2VkIHNvbWV0aGluZyBsaWtlIHRoaXM6 CgogICAgLyogRGVhbCB3aXRoIENQVSBob3RwbHVnZ2luZyBldGMuLCBjaGFuZ2VzIGluIGNwdV9v bmxpbmVfbWFwIHdoaWxlCiAgICAgKiBydW5uaW5nIHRoaXMgc3luYyBwcm90b2NvbC4KICAgICAq LwogICAgaWYgKCAhIGdldF9jcHVfbWFwcygpICkKICAgICAgICByZXR1cm4gLUVCVVNZOwoKYW5k IGxhdGVyIGluIHRoZSBsYXN0IHdvcmtlcjoKCiAgICAgICAgcHV0X2NwdV9tYXBzKCk7Cgo+ICsg ICAgdG90YWxfY3B1cyA9IG51bV9vbmxpbmVfY3B1cygpOwo+ICsKPiArICAgIGlmICggaWQgPT0g MCApCj4gKyAgICB7Cj4gKyAgICAgICAgc190aW1lX3QgdGltZW91dCwgc3RhcnQ7Cj4gKwo+ICsg ICAgICAgIC8qIFRyaWdnZXIgb3RoZXIgQ1BVcyB0byBleGVjdXRlIGRvX3hzcGxpY2UgKi8KPiAr ICAgICAgICBzbXBfY2FsbF9mdW5jdGlvbihyZXNjaGVkdWxlX2ZuLCBOVUxMLCAwKTsKPiArCj4g KyAgICAgICAgLyogV2FpdCBmb3Igb3RoZXIgQ1BVcyB3aXRoIGEgdGltZW91dCAqLwo+ICsgICAg ICAgIHN0YXJ0ID0gTk9XKCk7Cj4gKyAgICAgICAgdGltZW91dCA9IHN0YXJ0ICsgTUlMTElTRUNT KDMwKTsKPiArICAgICAgICB3aGlsZSAoIGF0b21pY19yZWFkKCZ4c3BsaWNlX3dvcmsuc2VtYXBo b3JlKSAhPSB0b3RhbF9jcHVzICYmCj4gKyAgICAgICAgICAgICAgICBOT1coKSA8IHRpbWVvdXQg KQo+ICsgICAgICAgICAgICBjcHVfcmVsYXgoKTsKPiArCj4gKyAgICAgICAgaWYgKCBhdG9taWNf cmVhZCgmeHNwbGljZV93b3JrLnNlbWFwaG9yZSkgPT0gdG90YWxfY3B1cyApCj4gKyAgICAgICAg ewo+ICsgICAgICAgICAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTI7Cj4gKwo+ICsgICAgICAgICAg ICAvKiAiTWFzayIgTk1JcyAqLwo+ICsgICAgICAgICAgICBzYXZlZF9ubWlfY2FsbGJhY2sgPSBz ZXRfbm1pX2NhbGxiYWNrKG1hc2tfbm1pX2NhbGxiYWNrKTsKPiArCj4gKyAgICAgICAgICAgIC8q IEFsbCBDUFVzIGFyZSB3YWl0aW5nLCBub3cgc2lnbmFsIHRvIGRpc2FibGUgSVJRcyAqLwo+ICsg ICAgICAgICAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSB0cnVlOwo+ICsgICAgICAgICAgICBzbXBf bWIoKTsKPiArCj4gKyAgICAgICAgICAgIC8qIFdhaXQgZm9yIGlycXMgdG8gYmUgZGlzYWJsZWQg Ki8KClRoZXJlIGlzIG5vIHRpbWVvdXQgaGVyZS4gIElmIGEgImZvbGxvd2VyIiBpcyBpbnRlcnJ1 cHRlZCBiZWZvcmUgY2xvc2luZwpoaXMgaW50ZXJydXB0cyB5b3Ugd2FpdCBhcmJpdHJhcmlseSBs b25nIGhlcmUgZm9yIHRoaXMgb25lIGZvbGxvd2VyLgpZb3UgaGF2ZSBubyBwcm9ncmVzcyBndWFy YW50ZWUgZnJvbSB0aGUgZm9sbG93ZXJzIHdpdGhvdXQgY2xvc2VkCmludGVycnVwdHMgb24gdGhl aXIgc2lkZS4KCj4gKyAgICAgICAgICAgIHdoaWxlICggYXRvbWljX3JlYWQoJnhzcGxpY2Vfd29y ay5pcnFfc2VtYXBob3JlKSAhPSAodG90YWxfY3B1cyAtIDEpICkKPiArICAgICAgICAgICAgICAg IGNwdV9yZWxheCgpOwo+ICsKCkFuZCBpZiB5b3UgYXJlIGludGVycnVwdGVkIGhlcmUsIGFsbCBv dGhlcnMgd2lsbCB3YWl0IGFyYml0cmFyaWx5IGxvbmcKaGVyZSBmb3IgeW91LgoKPiArICAgICAg ICAgICAgbG9jYWxfaXJxX2Rpc2FibGUoKTsKPiArICAgICAgICAgICAgLyogTm93IHRoaXMgZnVu Y3Rpb24gc2hvdWxkIGJlIHRoZSBvbmx5IG9uZSBvbiBhbnkgc3RhY2suCj4gKyAgICAgICAgICAg ICAqIE5vIG5lZWQgdG8gbG9jayB0aGUgcGF5bG9hZCBsaXN0IG9yIGFwcGxpZWQgbGlzdC4gKi8K PiArICAgICAgICAgICAgc3dpdGNoICggeHNwbGljZV93b3JrLmNtZCApCj4gKyAgICAgICAgICAg IHsKPiArICAgICAgICAgICAgICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fQVBQTFk6Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHhzcGxpY2Vfd29yay5kYXRhLT5yYyA9IGFwcGx5X3BheWxvYWQo eHNwbGljZV93b3JrLmRhdGEpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHhzcGxp Y2Vfd29yay5kYXRhLT5yYyA9PSAwICkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhz cGxpY2Vfd29yay5kYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKPiArICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBjYXNlIFhTUExJQ0Vf QUNUSU9OX1JFVkVSVDoKPiArICAgICAgICAgICAgICAgICAgICAgICAgeHNwbGljZV93b3JrLmRh dGEtPnJjID0gcmV2ZXJ0X3BheWxvYWQoeHNwbGljZV93b3JrLmRhdGEpOwo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoIHhzcGxpY2Vfd29yay5kYXRhLT5yYyA9PSAwICkKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhzcGxpY2Vfd29yay5kYXRhLT5zdGF0ZSA9IFhTUExJQ0Vf U1RBVEVfQ0hFQ0tFRDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAg ICAgICAgICAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhMiwgJnBheWxvYWRfbGlzdCwgbGlz dCApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICggZGF0YTItPnN0YXRlICE9IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YTItPnJjID0gcmV2ZXJ0X3BheWxvYWQoZGF0YTIpOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhMi0+cmMgPT0gMCApCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTItPnN0YXRlID0gWFNQTElDRV9TVEFURV9D SEVDS0VEOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhz cGxpY2Vfd29yay5kYXRhLT5yYyA9IC1FSU5WQUw7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB4c3Bs aWNlX3dvcmsuZGF0YS0+cmMgIT0gLUVJTlZBTCApCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzcGxpY2Vfd29yay5kYXRhLT5yYyA9 IGFwcGx5X3BheWxvYWQoeHNwbGljZV93b3JrLmRhdGEpOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCB4c3BsaWNlX3dvcmsuZGF0YS0+cmMgPT0gMCApCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeHNwbGljZV93b3JrLmRhdGEtPnN0YXRlID0gWFNQTElDRV9T VEFURV9BUFBMSUVEOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgZGVmYXVsdDoKPiArICAgICAg ICAgICAgICAgICAgICAgICAgeHNwbGljZV93b3JrLmRhdGEtPnJjID0gLUVJTlZBTDsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAg ICAgICAgIGxvY2FsX2lycV9lbmFibGUoKTsKPiArICAgICAgICAgICAgc2V0X25taV9jYWxsYmFj ayhzYXZlZF9ubWlfY2FsbGJhY2spOwo+ICsgICAgICAgIH0KPiArICAgICAgICBlbHNlCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICB4c3BsaWNlX3dvcmsuZGF0YS0+cmMgPSAtRUJVU1k7Cj4g KyAgICAgICAgfQo+ICsKPiArICAgICAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDA7Cj4gKyAg ICAgICAgc21wX21iKCk7IC8qIFN5bmNocm9uaXplIHdpdGggd2FpdGluZyBDUFVzICovCj4gKyAg ICB9Cj4gKyAgICBlbHNlCgpJIGNhbGwgdGhpcyB0aGUgImZvbGxvd2VyIgoKPiArICAgIHsKPiAr ICAgICAgICAvKiBXYWl0IGZvciBhbGwgQ1BVcyB0byByZW5kZXp2b3VzICovCj4gKyAgICAgICAg d2hpbGUgKCB4c3BsaWNlX3dvcmsuZG9fd29yayAmJiAheHNwbGljZV93b3JrLnJlYWR5ICkKPiAr ICAgICAgICB7Cj4gKyAgICAgICAgICAgIGNwdV9yZWxheCgpOwo+ICsgICAgICAgICAgICBzbXBf bWIoKTsKPiArICAgICAgICB9CgpFdmVuIG9mIHRoZSBtYWluIENQVSBhYm92ZSBoYXMgYWxyZWFk eSBkZWNpZGVkIHRvIGFib3J0LCB5b3UgZ28gdGhyb3VnaAp0aGUgY29kZSBiZWxvdy4gIE5vdCBz dXJlIGlmIG9uZSBmb2xsb3dlciBtaWdodCBiZSB0cmFwcGVkIGluIGhlcmUgZm9yCnF1aWNrIGRv X3hzcGxpY2UgcmV0cmllcy4KCj4gKwo+ICsgICAgICAgIC8qIERpc2FibGUgSVJRcyBhbmQgc2ln bmFsICovCj4gKyAgICAgICAgbG9jYWxfaXJxX2Rpc2FibGUoKTsKPiArICAgICAgICBhdG9taWNf aW5jKCZ4c3BsaWNlX3dvcmsuaXJxX3NlbWFwaG9yZSk7Cj4gKwo+ICsgICAgICAgIC8qIFdhaXQg Zm9yIHBhdGNoaW5nIHRvIGNvbXBsZXRlICovCj4gKyAgICAgICAgd2hpbGUgKCB4c3BsaWNlX3dv cmsuZG9fd29yayApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBjcHVfcmVsYXgoKTsKPiAr ICAgICAgICAgICAgc21wX21iKCk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGxvY2FsX2lycV9l bmFibGUoKTsKPiArICAgIH0KPiArfQoKSHVoLCB0aGF0IG5lZWRzIGFub3RoZXIgZGVlcCBkaXZl LgoKTWF5YmUgaXQgd291bGQgYmUgaGVscGZ1bCB0byB3cml0ZSB0aGlzIHN5bmMgcHJvdG9jb2wg dXAgaW4gdGV4dCBmb3JtLgpBbWF6b24gRGV2ZWxvcG1lbnQgQ2VudGVyIEdlcm1hbnkgR21iSApL cmF1c2Vuc3RyLiAzOAoxMDExNyBCZXJsaW4KR2VzY2hhZWZ0c2Z1ZWhyZXI6IERyLiBSYWxmIEhl cmJyaWNoLCBDaHJpc3RpYW4gU2NobGFlZ2VyClVzdC1JRDogREUyODkyMzc4NzkKRWluZ2V0cmFn ZW4gYW0gQW10c2dlcmljaHQgQ2hhcmxvdHRlbmJ1cmcgSFJCIDE0OTE3MyBCCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==