From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v4 16/16] xen: Convert page_to_mfn and mfn_to_page to use typesafe MFN Date: Wed, 21 Feb 2018 14:59:30 +0000 Message-ID: References: <20180221140259.29360-1-julien.grall@arm.com> <20180221140259.29360-17-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180221140259.29360-17-julien.grall@arm.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: 'Julien Grall' , "xen-devel@lists.xen.org" Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Suravee Suthikulpanit , Razvan Cojocaru , Jun Nakajima , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Tamas K Lengyel , Jan Beulich , Shane Wang , Ian Jackson , Boris Ostrovsky , Gang Wei List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEp1bGllbiBHcmFsbCBbbWFpbHRv Omp1bGllbi5ncmFsbEBhcm0uY29tXQo+IFNlbnQ6IDIxIEZlYnJ1YXJ5IDIwMTggMTQ6MDMKPiBU bzogeGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3Jh bGxAYXJtLmNvbT47IFN0ZWZhbm8gU3RhYmVsbGluaQo+IDxzc3RhYmVsbGluaUBrZXJuZWwub3Jn PjsgQW5kcmV3IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47Cj4gR2VvcmdlIER1 bmxhcCA8R2VvcmdlLkR1bmxhcEBjaXRyaXguY29tPjsgSWFuIEphY2tzb24KPiA8SWFuLkphY2tz b25AY2l0cml4LmNvbT47IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT47IEtvbnJhZAo+ IFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPjsgVGltIChYZW4ub3JnKSA8 dGltQHhlbi5vcmc+Owo+IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+OyBSYXp2YW4gQ29q b2NhcnUKPiA8cmNvam9jYXJ1QGJpdGRlZmVuZGVyLmNvbT47IFRhbWFzIEsgTGVuZ3llbCA8dGFt YXNAdGtsZW5neWVsLmNvbT47Cj4gUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNv bT47IEJvcmlzIE9zdHJvdnNreQo+IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT47IFN1cmF2 ZWUgU3V0aGlrdWxwYW5pdAo+IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT47IEp1biBO YWthamltYQo+IDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPjsgS2V2aW4gVGlhbiA8a2V2aW4udGlh bkBpbnRlbC5jb20+OyBHZW9yZ2UKPiBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47 IEdhbmcgV2VpIDxnYW5nLndlaUBpbnRlbC5jb20+Owo+IFNoYW5lIFdhbmcgPHNoYW5lLndhbmdA aW50ZWwuY29tPgo+IFN1YmplY3Q6IFtQQVRDSCB2NCAxNi8xNl0geGVuOiBDb252ZXJ0IHBhZ2Vf dG9fbWZuIGFuZCBtZm5fdG9fcGFnZSB0bwo+IHVzZSB0eXBlc2FmZSBNRk4KPiAKPiBNb3N0IG9m IHRoZSB1c2VycyBvZiBwYWdlX3RvX21mbiBhbmQgbWZuX3RvX3BhZ2UgYXJlIGVpdGhlciBvdmVy cmlkaW5nCj4gdGhlIG1hY3JvcyB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90IG9yIHVzZSBt Zm5feC9fbWZuIGJlY2F1c2UgdGhlCj4gcmVzdCBvZiB0aGUgZnVuY3Rpb24gdXNlIG1mbl90Lgo+ IAo+IFNvIG1ha2UgcGFnZV90b19tZm4gYW5kIG1mbl90b19wYWdlIHJldHVybiBtZm5fdCBieSBk ZWZhdWx0LiBUaGUgX18qCj4gdmVyc2lvbiBhcmUgbm93IGRyb3BwZWQgYXMgdGhpcyBwYXRjaCB3 aWxsIGNvbnZlcnQgYWxsIHRoZSByZW1haW5pbmcKPiBub24tdHlwZXNhZmUgY2FsbGVycy4KPiAK PiBPbmx5IHJlYXNvbmFibGUgY2xlYW4tdXBzIGFyZSBkb25lIGluIHRoaXMgcGF0Y2guIFRoZSBy ZXN0IHdpbGwgdXNlCj4gX21mbi9tZm5feCBmb3IgdGhlIHRpbWUgYmVpbmcuCj4gCj4gTGFzdGx5 LCBkb21haW5fcGFnZV90b19tZm4gaXMgYWxzbyBjb252ZXJ0ZWQgdG8gdXNlIG1mbl90IGdpdmVu IHRoYXQKPiBtb3N0IG9mIHRoZSBjYWxsZXJzIGFyZSBub3cgc3dpdGNoZWQgdG8gX21mbihkb21h aW5fcGFnZV90b19tZm4oLi4uKSkuCj4gCj4gU2lnbmVkLW9mZi1ieTogSnVsaWVuIEdyYWxsIDxq dWxpZW4uZ3JhbGxAYXJtLmNvbT4KClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVy cmFudEBjaXRyaXguY29tPgoKPiAKPiAtLS0KPiAKPiBBbmRyZXcgc3VnZ2VzdGVkIHRvIGRyb3Ag SVNfVkFMSURfUEFHRSBpbiB4ZW4vdG1lbV94ZW4uaC4gSGlzCj4gY29tbWVudAo+IHdhczoKPiAK PiAiL3NpZ2ggIFRoaXMgaXMgdGF1dG9sb2dpY2FsLiAgVGhlIGRlZmluaXRpb24gb2YgYSAidmFs aWQgbWZuIiBpbiB0aGlzCj4gY2FzZSBpcyBvbmUgZm9yIHdoaWNoIHdlIGhhdmUgZnJhbWV0YWJs ZSBlbnRyeSwgYW5kIGJ5IGhhdmluZyBhIHN0cnVjdAo+IHBhZ2VfaW5mbyBpbiBvdXIgaGFuZHMs IHRoaXMgaXMgYnkgZGVmaW5pdGlvbiB0cnVlICh1bmxlc3MgeW91IGhhdmUgYQo+IHdpbGQgcG9p bnRlciwgYXQgd2hpY2ggcG9pbnQgeW91ciBidWcgaXMgZWxzZXdoZXJlKS4KPiAKPiBJU19WQUxJ RF9QQUdFKCkgaXMgb25seSBldmVyIHVzZWQgaW4gYXNzZXJ0aW9ucyBhbmQgbmV2ZXIgdXNlZnVs bHksIHNvCj4gaW5zdGVhZCBJIHdvdWxkIHJlbW92ZSBpdCBlbnRpcmVseSByYXRoZXIgdGhhbiB0 cnlpbmcgdG8gZml4IGl0IHVwLiIKPiAKPiBJIGNhbiByZW1vdmUgdGhlIGZ1bmN0aW9uIGluIGEg c2VwYXJhdGUgcGF0Y2ggYXQgdGhlIGJlZ2luaW5nIG9mIHRoZQo+IHNlcmllcyBpZiBLb25yYWQg KFRNRU0gbWFpbnRhaW5lcikgaXMgaGFwcHkgd2l0aCB0aGF0Lgo+IAo+IENjOiBTdGVmYW5vIFN0 YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IEp1bGllbiBHcmFsbCA8anVs aWVuLmdyYWxsQGFybS5jb20+Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNp dHJpeC5jb20+Cj4gQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNv bT4KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+Cj4gQ2M6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiBDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgo+IENjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4K PiBDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiBDYzogUmF6dmFuIENvam9jYXJ1 IDxyY29qb2NhcnVAYml0ZGVmZW5kZXIuY29tPgo+IENjOiBUYW1hcyBLIExlbmd5ZWwgPHRhbWFz QHRrbGVuZ3llbC5jb20+Cj4gQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5j b20+Cj4gQ2M6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+Cj4g Q2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+ Cj4gQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KPiBDYzogS2V2aW4g VGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4gQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5k dW5sYXBAZXUuY2l0cml4LmNvbT4KPiBDYzogR2FuZyBXZWkgPGdhbmcud2VpQGludGVsLmNvbT4K PiBDYzogU2hhbmUgV2FuZyA8c2hhbmUud2FuZ0BpbnRlbC5jb20+Cj4gCj4gICAgIENoYW5nZXMg aW4gdjQ6Cj4gICAgICAgICAtIERyb3AgX19wYWdlX3RvX21mbiBhbmQgX19tZm5fdG9fcGFnZS4g UmV3b3JkIHRoZSBjb21taXQKPiAgICAgICAgIHRpdGxlL21lc3NhZ2UgdG8gcmVmbGVjdCB0aGF0 Lgo+IAo+ICAgICBDaGFuZ2VzIGluIHYzOgo+ICAgICAgICAgLSBSZWJhc2Ugb24gdGhlIGxhdGVz dCBzdGFnaW5nIGFuZCBmaXggc29tZSBjb25mbGljdHMuIFRhZ3MKPiAgICAgICAgIGhhdmVuJ3Qg YmUgcmV0YWluZWQuCj4gICAgICAgICAtIFN3aXRjaCB0aGUgcHJpbnRmIGZvcm1hdCB0byBQUklf bWZuCj4gCj4gICAgIENoYW5nZXMgaW4gdjI6Cj4gICAgICAgICAtIFNvbWUgcGFydCBoYXZlIGJl ZW4gbW92ZWQgaW4gc2VwYXJhdGUgcGF0Y2gKPiAgICAgICAgIC0gUmVtb3ZlIG9uZSBzcHVyaW91 cyBjb21tZW50Cj4gICAgICAgICAtIENvbnZlcnQgZG9tYWluX3BhZ2VfdG9fbWZuIHRvIHVzZSBt Zm5fdAo+IC0tLQo+ICB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgICAgICAgICAgICAgfCAg MiAtLQo+ICB4ZW4vYXJjaC9hcm0va2VybmVsLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ ICB4ZW4vYXJjaC9hcm0vbWVtX2FjY2Vzcy5jICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4v YXJjaC9hcm0vbW0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQo+ICB4ZW4v YXJjaC9hcm0vcDJtLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKy0tLS0tLS0tCj4gIHhl bi9hcmNoL3g4Ni9jcHUvdnBtdS5jICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2Fy Y2gveDg2L2RvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKystLS0tLS0t LS0tCj4gIHhlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jICAgICAgICAgICAgICB8ICA2ICsrKy0t LQo+ICB4ZW4vYXJjaC94ODYvaHZtL2RtLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4 ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQuYyAgICAgICAgICAgfCAgNiArKystLS0KPiAgeGVu L2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9h cmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQo+ICB4 ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICAgICAgICAgfCAgNCArKy0tCj4gIHhlbi9h cmNoL3g4Ni9odm0vc3RkdmdhLmMgICAgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNoL3g4 Ni9odm0vc3ZtL3N2bS5jICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2FyY2gveDg2L2h2 bS92aXJpZGlhbi5jICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0v dm14L3ZtY3MuYyAgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Zt eC5jICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KPiAgeGVuL2FyY2gveDg2L2h2bS92bXgv dnZteC5jICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAg ICAgICAgICAgICAgICAgICB8ICA0IC0tLS0KPiAgeGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsu YyAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fs ay5jICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMgICAgICAgICAg ICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYyAgICAg ICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYyAgICAgICAgICAgfCAg NSAtLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jICAgICAgICAgICAgICAgfCAgOCAr KysrLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jICAgICAgICAgICAgICAgfCAgNiAt LS0tLS0KPiAgeGVuL2FyY2gveDg2L21tL3AybS5jICAgICAgICAgICAgICAgICAgIHwgIDYgLS0t LS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYyAgICAgICAgICAgICAgICB8ICA2IC0tLS0t LQo+ICB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaCAgICAgICAgfCAxNiArKy0tLS0t LS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9udW1hLmMgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCj4gIHhlbi9hcmNoL3g4Ni9waHlzZGV2LmMgICAgICAgICAgICAgICAgICB8ICAyICstCj4g IHhlbi9hcmNoL3g4Ni9wdi9jYWxsYmFjay5jICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4 ZW4vYXJjaC94ODYvcHYvZGVzY3JpcHRvci10YWJsZXMuYyAgICAgfCAgNiAtLS0tLS0KPiAgeGVu L2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyAgICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0K PiAgeGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jICAgICAgICAgICAgICAgIHwgIDYgLS0tLS0tCj4g IHhlbi9hcmNoL3g4Ni9wdi9lbXVsLWdhdGUtb3AuYyAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4 ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMgICAgICAgICAgfCAxMCAtLS0tLS0tLS0tCj4g IHhlbi9hcmNoL3g4Ni9wdi9ncmFudF90YWJsZS5jICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4 ZW4vYXJjaC94ODYvcHYvcm8tcGFnZS1mYXVsdC5jICAgICAgICAgfCAgNiAtLS0tLS0KPiAgeGVu L2FyY2gveDg2L3B2L3NoaW0uYyAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQo+ICB4ZW4vYXJj aC94ODYvc21wYm9vdC5jICAgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KPiAgeGVuL2FyY2gv eDg2L3Rib290LmMgICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQo+ICB4ZW4vYXJjaC94ODYv dHJhcHMuYyAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCj4gIHhlbi9hcmNoL3g4Ni94ODZf NjQvbW0uYyAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vY29tbW9uL2RvbWFpbi5j ICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCj4gIHhlbi9jb21tb24vZ3JhbnRfdGFibGUu YyAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vY29tbW9uL2tpbWFnZS5jICAgICAg ICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KPiAgeGVuL2NvbW1vbi9tZW1vcnkuYyAgICAgICAg ICAgICAgICAgICAgIHwgIDYgLS0tLS0tCj4gIHhlbi9jb21tb24vcGFnZV9hbGxvYy5jICAgICAg ICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vY29tbW9uL3RtZW0uYyAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQo+ICB4ZW4vY29tbW9uL3RtZW1feGVuLmMgICAgICAgICAgICAgICAg ICAgfCAgNCAtLS0tCj4gIHhlbi9jb21tb24vdHJhY2UuYyAgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KPiAgeGVuL2NvbW1vbi92bWFwLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDYg Ky0tLS0tCj4gIHhlbi9jb21tb24veGVub3Byb2YuYyAgICAgICAgICAgICAgICAgICB8ICAyIC0t Cj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyB8IDEyICsrKysrKy0t LS0tLQo+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jICAgICAgICAgfCAgMiArLQo+ ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyAgICAgfCAgMiArLQo+ICB4ZW4v aW5jbHVkZS9hc20tYXJtL21tLmggICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrLS0tLS0t LS0tLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oICAgICAgICAgICAgICAgfCAgNCArKy0t Cj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0t LS0tLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oICAgICAgICAgICAgICAgfCAgMiArLQo+ ICB4ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaCAgICAgICAgICAgICAgfCAzMiArKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICB4ZW4vaW5jbHVkZS94ZW4vZG9tYWluX3BhZ2UuaCAg ICAgICAgICAgfCAgOCArKysrLS0tLQo+ICB4ZW4vaW5jbHVkZS94ZW4vbW0uaCAgICAgICAgICAg ICAgICAgICAgfCAgNSAtLS0tLQo+ICB4ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaCAgICAgICAg ICAgICAgfCAgMiArLQo+ICA2NiBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9ucygrKSwgMjg1 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxk LmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKPiBpbmRleCAxNTVjOTUyMzQ5Li5mZDZj MjQ4MmRlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwo+ICsrKyBi L3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwo+IEBAIC00OSw4ICs0OSw2IEBAIHN0cnVjdCBt YXBfcmFuZ2VfZGF0YQo+ICAvKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1h a2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAgI3VuZGVmIHZpcnRfdG9fbWZuCj4gICNkZWZp bmUgdmlydF90b19tZm4odmEpIF9tZm4oX192aXJ0X3RvX21mbih2YSkpCj4gLSN1bmRlZiBwYWdl X3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcp KQo+IAo+ICAvLyNkZWZpbmUgREVCVUdfMTFfQUxMT0NBVElPTgo+ICAjaWZkZWYgREVCVUdfMTFf QUxMT0NBVElPTgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0va2VybmVsLmMgYi94ZW4vYXJj aC9hcm0va2VybmVsLmMKPiBpbmRleCAyZmIwYjk2ODRkLi44ZmRmZDkxNTQzIDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL2FybS9rZXJuZWwuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9rZXJuZWwuYwo+ IEBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIF9faW5pdCBpbnQga2VybmVsX2RlY29tcHJlc3Mo c3RydWN0Cj4gYm9vdG1vZHVsZSAqbW9kKQo+ICAgICAgICAgIGlvdW5tYXAoaW5wdXQpOwo+ICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICAgICAgfQo+IC0gICAgbWZuID0gX21mbihwYWdlX3Rv X21mbihwYWdlcykpOwo+ICsgICAgbWZuID0gcGFnZV90b19tZm4ocGFnZXMpOwo+ICAgICAgb3V0 cHV0ID0gX192bWFwKCZtZm4sIDEgPDwga2VybmVsX29yZGVyX291dCwgMSwgMSwgUEFHRV9IWVBF UlZJU09SLAo+IFZNQVBfREVGQVVMVCk7Cj4gCj4gICAgICByYyA9IHBlcmZvcm1fZ3VuemlwKG91 dHB1dCwgaW5wdXQsIHNpemUpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbWVtX2FjY2Vz cy5jIGIveGVuL2FyY2gvYXJtL21lbV9hY2Nlc3MuYwo+IGluZGV4IDBmMmNiYjgxZDMuLjExMmUy OTFjYmEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL21lbV9hY2Nlc3MuYwo+ICsrKyBiL3hl bi9hcmNoL2FybS9tZW1fYWNjZXNzLmMKPiBAQCAtMjEwLDcgKzIxMCw3IEBAIHAybV9tZW1fYWNj ZXNzX2NoZWNrX2FuZF9nZXRfcGFnZSh2YWRkcl90Cj4gZ3ZhLCB1bnNpZ25lZCBsb25nIGZsYWcs Cj4gICAgICBpZiAoIHQgIT0gcDJtX3JhbV9ydyApCj4gICAgICAgICAgZ290byBlcnI7Cj4gCj4g LSAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuX3gobWZuKSk7Cj4gKyAgICBwYWdlID0gbWZuX3Rv X3BhZ2UobWZuKTsKPiAKPiAgICAgIGlmICggdW5saWtlbHkoIWdldF9wYWdlKHBhZ2UsIHYtPmRv bWFpbikpICkKPiAgICAgICAgICBwYWdlID0gTlVMTDsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv YXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwo+IGluZGV4IGRiNzQ0NjZhMTYuLjUxMGE1YTIw NTAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL21tLmMKPiArKysgYi94ZW4vYXJjaC9hcm0v bW0uYwo+IEBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCB1bm1hcF9kb21haW5fcGFnZShjb25zdCB2 b2lkICp2YSkKPiAgICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKPiAgfQo+IAo+IC11bnNp Z25lZCBsb25nIGRvbWFpbl9wYWdlX21hcF90b19tZm4oY29uc3Qgdm9pZCAqcHRyKQo+ICttZm5f dCBkb21haW5fcGFnZV9tYXBfdG9fbWZuKGNvbnN0IHZvaWQgKnB0cikKPiAgewo+ICAgICAgdW5z aWduZWQgbG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXB0cjsKPiAgICAgIGxwYWVfdCAqbWFwID0g dGhpc19jcHUoeGVuX2RvbW1hcCk7Cj4gQEAgLTQ4NSwxMiArNDg1LDEyIEBAIHVuc2lnbmVkIGxv bmcgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdAo+IHZvaWQgKnB0cikKPiAgICAgIHVuc2ln bmVkIGxvbmcgb2Zmc2V0ID0gKHZhPj5USElSRF9TSElGVCkgJiBMUEFFX0VOVFJZX01BU0s7Cj4g Cj4gICAgICBpZiAoIHZhID49IFZNQVBfVklSVF9TVEFSVCAmJiB2YSA8IFZNQVBfVklSVF9FTkQg KQo+IC0gICAgICAgIHJldHVybiBfX3ZpcnRfdG9fbWZuKHZhKTsKPiArICAgICAgICByZXR1cm4g dmlydF90b19tZm4odmEpOwo+IAo+ICAgICAgQVNTRVJUKHNsb3QgPj0gMCAmJiBzbG90IDwgRE9N SEVBUF9FTlRSSUVTKTsKPiAgICAgIEFTU0VSVChtYXBbc2xvdF0ucHQuYXZhaWwgIT0gMCk7Cj4g Cj4gLSAgICByZXR1cm4gbWFwW3Nsb3RdLnB0LmJhc2UgKyBvZmZzZXQ7Cj4gKyAgICByZXR1cm4g X21mbihtYXBbc2xvdF0ucHQuYmFzZSArIG9mZnNldCk7Cj4gIH0KPiAgI2VuZGlmCj4gCj4gQEAg LTEyODcsNyArMTI4Nyw3IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAo+ICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgICAgICB9Cj4gCj4gLSAgICAgICAgbWZuID0g X21mbihwYWdlX3RvX21mbihwYWdlKSk7Cj4gKyAgICAgICAgbWZuID0gcGFnZV90b19tZm4ocGFn ZSk7Cj4gICAgICAgICAgdCA9IHAybV9tYXBfZm9yZWlnbjsKPiAKPiAgICAgICAgICByY3VfdW5s b2NrX2RvbWFpbihvZCk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wMm0uYyBiL3hlbi9h cmNoL2FybS9wMm0uYwo+IGluZGV4IDY1ZThiOWM2ZWEuLjhiMTZjODMyMmQgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gvYXJtL3AybS5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3AybS5jCj4gQEAgLTM3 LDEyICszNyw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBtYXhfdm1pZCA9 Cj4gTUFYX1ZNSURfOF9CSVQ7Cj4gCj4gICNkZWZpbmUgUDJNX1JPT1RfUEFHRVMgICAgKDE8PFAy TV9ST09UX09SREVSKQo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vbW0uaCB0byBt YWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVm aW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5kZWYg cGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZu KHBnKSkKPiAtCj4gIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHAybV9pcGFfYml0czsKPiAK PiAgLyogSGVscGVycyB0byBsb29rdXAgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBsZXZlbCAqLwo+ IEBAIC05MCw4ICs4NCw4IEBAIHZvaWQgZHVtcF9wMm1fbG9va3VwKHN0cnVjdCBkb21haW4gKmQs IHBhZGRyX3QKPiBhZGRyKQo+IAo+ICAgICAgcHJpbnRrKCJkb20lZCBJUEEgMHglIlBSSXBhZGRy IlxuIiwgZC0+ZG9tYWluX2lkLCBhZGRyKTsKPiAKPiAtICAgIHByaW50aygiUDJNIEAgJXAgbWZu OjB4JWx4XG4iLAo+IC0gICAgICAgICAgIHAybS0+cm9vdCwgX19wYWdlX3RvX21mbihwMm0tPnJv b3QpKTsKPiArICAgIHByaW50aygiUDJNIEAgJXAgbWZuOiUjIlBSSV9tZm4iXG4iLAo+ICsgICAg ICAgICAgIHAybS0+cm9vdCwgbWZuX3gocGFnZV90b19tZm4ocDJtLT5yb290KSkpOwo+IAo+ICAg ICAgZHVtcF9wdF93YWxrKHBhZ2VfdG9fbWFkZHIocDJtLT5yb290KSwgYWRkciwKPiAgICAgICAg ICAgICAgICAgICBQMk1fUk9PVF9MRVZFTCwgUDJNX1JPT1RfUEFHRVMpOwo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCj4gaW5k ZXggN2JhZjQ2MTRiZS4uYjk3OGUwNTYxMyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvY3B1 L3ZwbXUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCj4gQEAgLTY1Myw3ICs2NTMs NyBAQCBzdGF0aWMgdm9pZCBwdnBtdV9maW5pc2goc3RydWN0IGRvbWFpbiAqZCwKPiB4ZW5fcG11 X3BhcmFtc190ICpwYXJhbXMpCj4gIHsKPiAgICAgIHN0cnVjdCB2Y3B1ICp2Owo+ICAgICAgc3Ry dWN0IHZwbXVfc3RydWN0ICp2cG11Owo+IC0gICAgdWludDY0X3QgbWZuOwo+ICsgICAgbWZuX3Qg bWZuOwo+ICAgICAgdm9pZCAqeGVucG11X2RhdGE7Cj4gCj4gICAgICBpZiAoIChwYXJhbXMtPnZj cHUgPj0gZC0+bWF4X3ZjcHVzKSB8fCAoZC0+dmNwdVtwYXJhbXMtPnZjcHVdID09Cj4gTlVMTCkg KQo+IEBAIC02NzUsNyArNjc1LDcgQEAgc3RhdGljIHZvaWQgcHZwbXVfZmluaXNoKHN0cnVjdCBk b21haW4gKmQsCj4geGVuX3BtdV9wYXJhbXNfdCAqcGFyYW1zKQo+ICAgICAgaWYgKCB4ZW5wbXVf ZGF0YSApCj4gICAgICB7Cj4gICAgICAgICAgbWZuID0gZG9tYWluX3BhZ2VfbWFwX3RvX21mbih4 ZW5wbXVfZGF0YSk7Cj4gLSAgICAgICAgQVNTRVJUKG1mbl92YWxpZChfbWZuKG1mbikpKTsKPiAr ICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikpOwo+ICAgICAgICAgIHVubWFwX2RvbWFpbl9w YWdlX2dsb2JhbCh4ZW5wbXVfZGF0YSk7Cj4gICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUobWZu X3RvX3BhZ2UobWZuKSk7Cj4gICAgICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21h aW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IGluZGV4IGY5MzMyN2IwYTIuLjQ0YmE1MmI3 YmEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4gKysrIGIveGVuL2FyY2gv eDg2L2RvbWFpbi5jCj4gQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIGR1bXBfcGFnZWZyYW1lX2lu Zm8oc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAg fQo+ICAgICAgICAgICAgICBwcmludGsoIiAgICBEb21QYWdlICVwOiBjYWY9JTA4bHgsIHRhZj0l IiBQUnR5cGVfaW5mbyAiXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgX3AocGFnZV90b19tZm4o cGFnZSkpLAo+ICsgICAgICAgICAgICAgICAgICAgX3AobWZuX3gocGFnZV90b19tZm4ocGFnZSkp KSwKPiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNvdW50X2luZm8sIHBhZ2UtPnUuaW51c2Uu dHlwZV9pbmZvKTsKPiAgICAgICAgICB9Cj4gICAgICAgICAgc3Bpbl91bmxvY2soJmQtPnBhZ2Vf YWxsb2NfbG9jayk7Cj4gQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIGR1bXBfcGFnZWZyYW1lX2lu Zm8oc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBhZ2UsICZk LT54ZW5wYWdlX2xpc3QgKQo+ICAgICAgewo+ICAgICAgICAgIHByaW50aygiICAgIFhlblBhZ2Ug JXA6IGNhZj0lMDhseCwgdGFmPSUiIFBSdHlwZV9pbmZvICJcbiIsCj4gLSAgICAgICAgICAgICAg IF9wKHBhZ2VfdG9fbWZuKHBhZ2UpKSwKPiArICAgICAgICAgICAgICAgX3AobWZuX3gocGFnZV90 b19tZm4ocGFnZSkpKSwKPiAgICAgICAgICAgICAgICAgcGFnZS0+Y291bnRfaW5mbywgcGFnZS0+ dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgfQo+ICAgICAgc3Bpbl91bmxvY2soJmQtPnBhZ2Vf YWxsb2NfbG9jayk7Cj4gQEAgLTYzNSw3ICs2MzUsOCBAQCBpbnQgYXJjaF9kb21haW5fc29mdF9y ZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IHZp cnRfdG9fcGFnZShkLT5zaGFyZWRfaW5mbyksICpuZXdfcGFnZTsKPiAgICAgIGludCByZXQgPSAw Owo+ICAgICAgc3RydWN0IGRvbWFpbiAqb3duZXI7Cj4gLSAgICB1bnNpZ25lZCBsb25nIG1mbiwg Z2ZuOwo+ICsgICAgbWZuX3QgbWZuOwo+ICsgICAgdW5zaWduZWQgbG9uZyBnZm47Cj4gICAgICBw Mm1fdHlwZV90IHAybXQ7Cj4gICAgICB1bnNpZ25lZCBpbnQgaTsKPiAKPiBAQCAtNjY5LDcgKzY3 MCw3IEBAIGludCBhcmNoX2RvbWFpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCj4gICAg ICBBU1NFUlQoIG93bmVyID09IGQgKTsKPiAKPiAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2Up Owo+IC0gICAgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKPiArICAgIGdmbiA9IG1mbl90b19n bWZuKGQsIG1mbl94KG1mbikpOwo+IAo+ICAgICAgLyoKPiAgICAgICAqIGdmbiA9PSBJTlZBTElE X0dGTiBpbmRpY2F0ZXMgdGhhdCB0aGUgc2hhcmVkX2luZm8gcGFnZSB3YXMgbmV2ZXIKPiBtYXBw ZWQKPiBAQCAtNjc4LDcgKzY3OSw3IEBAIGludCBhcmNoX2RvbWFpbl9zb2Z0X3Jlc2V0KHN0cnVj dCBkb21haW4gKmQpCj4gICAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQo+ICAg ICAgICAgIGdvdG8gZXhpdF9wdXRfcGFnZTsKPiAKPiAtICAgIGlmICggbWZuX3goZ2V0X2dmbl9x dWVyeShkLCBnZm4sICZwMm10KSkgIT0gbWZuICkKPiArICAgIGlmICggIW1mbl9lcShnZXRfZ2Zu X3F1ZXJ5KGQsIGdmbiwgJnAybXQpLCBtZm4pICkKPiAgICAgIHsKPiAgICAgICAgICBwcmludGso WEVOTE9HX0dfRVJSICJGYWlsZWQgdG8gZ2V0IERvbSVkJ3Mgc2hhcmVkX2luZm8gR0ZOCj4gKCVs eClcbiIsCj4gICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuKTsKPiBAQCAtNjk1LDcg KzY5Niw3IEBAIGludCBhcmNoX2RvbWFpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCj4g ICAgICAgICAgZ290byBleGl0X3B1dF9nZm47Cj4gICAgICB9Cj4gCj4gLSAgICByZXQgPSBndWVz dF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgX21mbihtZm4pLAo+IFBBR0VfT1JE RVJfNEspOwo+ICsgICAgcmV0ID0gZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdm biksIG1mbiwKPiBQQUdFX09SREVSXzRLKTsKPiAgICAgIGlmICggcmV0ICkKPiAgICAgIHsKPiAg ICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJGYWlsZWQgdG8gcmVtb3ZlIERvbSVkJ3Mgc2hh cmVkX2luZm8gZnJhbWUKPiAlbHhcbiIsCj4gQEAgLTcwNCw3ICs3MDUsNyBAQCBpbnQgYXJjaF9k b21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgICAgIGdvdG8gZXhpdF9w dXRfZ2ZuOwo+ICAgICAgfQo+IAo+IC0gICAgcmV0ID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShk LCBfZ2ZuKGdmbiksCj4gX21mbihwYWdlX3RvX21mbihuZXdfcGFnZSkpLAo+ICsgICAgcmV0ID0g Z3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdmbiksIHBhZ2VfdG9fbWZuKG5ld19wYWdl KSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9PUkRFUl80Syk7Cj4g ICAgICBpZiAoIHJldCApCj4gICAgICB7Cj4gQEAgLTEwMDIsNyArMTAwMyw3IEBAIGludCBhcmNo X3NldF9pbmZvX2d1ZXN0KAo+ICAgICAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAg ICAgIGlmICggKHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvICYgUEdUX3R5cGVfbWFzaykgPT0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBHVF9sNF9wYWdlX3RhYmxlICkKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgZG9uZSA9ICFmaWxsX3JvX21wdChfbWZuKHBhZ2VfdG9fbWZuKHBhZ2Up KSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSAhZmlsbF9yb19tcHQocGFnZV90 b19tZm4ocGFnZSkpOwo+IAo+ICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdW5sb2NrKHBhZ2Up Owo+ICAgICAgICAgICAgICAgICAgfQo+IEBAIC0xMTMxLDcgKzExMzIsNyBAQCBpbnQgYXJjaF9z ZXRfaW5mb19ndWVzdCgKPiAgICAgICAgICBsNF9wZ2VudHJ5X3QgKmw0dGFiOwo+IAo+ICAgICAg ICAgIGw0dGFiID0gbWFwX2RvbWFpbl9wYWdlKHBhZ2V0YWJsZV9nZXRfbWZuKHYtPmFyY2guZ3Vl c3RfdGFibGUpKTsKPiAtICAgICAgICAqbDR0YWIgPSBsNGVfZnJvbV9wZm4ocGFnZV90b19tZm4o Y3IzX3BhZ2UpLAo+ICsgICAgICAgICpsNHRhYiA9IGw0ZV9mcm9tX21mbihwYWdlX3RvX21mbihj cjNfcGFnZSksCj4gICAgICAgICAgICAgIF9QQUdFX1BSRVNFTlR8X1BBR0VfUld8X1BBR0VfVVNF UnxfUEFHRV9BQ0NFU1NFRCk7Cj4gICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDR0YWIpOwo+ ICAgICAgfQo+IEBAIC0xOTk3LDcgKzE5OTgsNyBAQCBpbnQgZG9tYWluX3JlbGlucXVpc2hfcmVz b3VyY2VzKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgICAgaWYgKCBkLT5hcmNoLnBpcnFfZW9p X21hcCAhPSBOVUxMICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHVubWFwX2RvbWFpbl9w YWdlX2dsb2JhbChkLT5hcmNoLnBpcnFfZW9pX21hcCk7Cj4gLSAgICAgICAgICAgIHB1dF9wYWdl X2FuZF90eXBlKG1mbl90b19wYWdlKGQtPmFyY2gucGlycV9lb2lfbWFwX21mbikpOwo+ICsgICAg ICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShfbWZuKGQtCj4gPmFyY2gucGly cV9lb2lfbWFwX21mbikpKTsKPiAgICAgICAgICAgICAgZC0+YXJjaC5waXJxX2VvaV9tYXAgPSBO VUxMOwo+ICAgICAgICAgICAgICBkLT5hcmNoLmF1dG9fdW5tYXNrID0gMDsKPiAgICAgICAgICB9 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jIGIveGVuL2FyY2gveDg2 L2RvbWFpbl9wYWdlLmMKPiBpbmRleCAzNDMyYTg1NGRkLi44ODA0NmIzOWM5IDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2RvbWFp bl9wYWdlLmMKPiBAQCAtMzMxLDEzICszMzEsMTMgQEAgdm9pZCB1bm1hcF9kb21haW5fcGFnZV9n bG9iYWwoY29uc3Qgdm9pZCAqcHRyKQo+ICB9Cj4gCj4gIC8qIFRyYW5zbGF0ZSBhIG1hcC1kb21h aW4tcGFnZSdkIGFkZHJlc3MgdG8gdGhlIHVuZGVybHlpbmcgTUZOICovCj4gLXVuc2lnbmVkIGxv bmcgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdCB2b2lkICpwdHIpCj4gK21mbl90IGRvbWFp bl9wYWdlX21hcF90b19tZm4oY29uc3Qgdm9pZCAqcHRyKQo+ICB7Cj4gICAgICB1bnNpZ25lZCBs b25nIHZhID0gKHVuc2lnbmVkIGxvbmcpcHRyOwo+ICAgICAgY29uc3QgbDFfcGdlbnRyeV90ICpw bDFlOwo+IAo+ICAgICAgaWYgKCB2YSA+PSBESVJFQ1RNQVBfVklSVF9TVEFSVCApCj4gLSAgICAg ICAgcmV0dXJuIHZpcnRfdG9fbWZuKHB0cik7Cj4gKyAgICAgICAgcmV0dXJuIF9tZm4odmlydF90 b19tZm4ocHRyKSk7Cj4gCj4gICAgICBpZiAoIHZhID49IFZNQVBfVklSVF9TVEFSVCAmJiB2YSA8 IFZNQVBfVklSVF9FTkQgKQo+ICAgICAgewo+IEBAIC0zNTAsNSArMzUwLDUgQEAgdW5zaWduZWQg bG9uZyBkb21haW5fcGFnZV9tYXBfdG9fbWZuKGNvbnN0IHZvaWQKPiAqcHRyKQo+ICAgICAgICAg IHBsMWUgPSAmX19saW5lYXJfbDFfdGFibGVbbDFfbGluZWFyX29mZnNldCh2YSldOwo+ICAgICAg fQo+IAo+IC0gICAgcmV0dXJuIGwxZV9nZXRfcGZuKCpwbDFlKTsKPiArICAgIHJldHVybiBsMWVf Z2V0X21mbigqcGwxZSk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9kbS5j IGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4gaW5kZXggNzc4ODU3N2E3My4uY2YxZTYwMDk5OCAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMKPiArKysgYi94ZW4vYXJjaC94ODYv aHZtL2RtLmMKPiBAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBpbnQgbW9kaWZpZWRfbWVtb3J5 KHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgICAgICAgICAgKiBUaGVzZSBhcmUgbW9zdCBw cm9iYWJseSBub3QgcGFnZSB0YWJsZXMgYW55IG1vcmUKPiAgICAgICAgICAgICAgICAgICAqIGRv bid0IHRha2UgYSBsb25nIHRpbWUgYW5kIGRvbid0IGRpZSBlaXRoZXIuCj4gICAgICAgICAgICAg ICAgICAgKi8KPiAtICAgICAgICAgICAgICAgIHNoX3JlbW92ZV9zaGFkb3dzKGQsIF9tZm4ocGFn ZV90b19tZm4ocGFnZSkpLCAxLCAwKTsKPiArICAgICAgICAgICAgICAgIHNoX3JlbW92ZV9zaGFk b3dzKGQsIHBhZ2VfdG9fbWZuKHBhZ2UpLCAxLCAwKTsKPiAgICAgICAgICAgICAgICAgIHB1dF9w YWdlKHBhZ2UpOwo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQuYwo+IGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1 aWxkLmMKPiBpbmRleCBhZmViYWVjNzBiLi43MTdmZmZmNTg0IDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1 aWxkLmMKPiBAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHB2aF9wb3B1bGF0 ZV9tZW1vcnlfcmFuZ2Uoc3RydWN0Cj4gZG9tYWluICpkLAo+ICAgICAgICAgICAgICBjb250aW51 ZTsKPiAgICAgICAgICB9Cj4gCj4gLSAgICAgICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdl KGQsIF9nZm4oc3RhcnQpLAo+IF9tZm4ocGFnZV90b19tZm4ocGFnZSkpLAo+ICsgICAgICAgIHJj ID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKHN0YXJ0KSwgcGFnZV90b19tZm4ocGFn ZSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKTsKPiAgICAg ICAgICBpZiAoIHJjICE9IDAgKQo+ICAgICAgICAgIHsKPiBAQCAtMjY5LDcgKzI2OSw3IEBAIHN0 YXRpYyBpbnQgX19pbml0Cj4gcHZoX3NldHVwX3ZteF9yZWFsbW9kZV9oZWxwZXJzKHN0cnVjdCBk b21haW4gKmQpCj4gICAgICB9Cj4gICAgICB3cml0ZV8zMmJpdF9wc2VfaWRlbnRtYXAoaWRlbnRf cHQpOwo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoaWRlbnRfcHQpOwo+IC0gICAgcHV0X3BhZ2Uo bWZuX3RvX3BhZ2UobWZuX3gobWZuKSkpOwo+ICsgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZu KSk7Cj4gICAgICBkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9JREVOVF9QVF0g PSBnYWRkcjsKPiAgICAgIGlmICggcHZoX2FkZF9tZW1fcmFuZ2UoZCwgZ2FkZHIsIGdhZGRyICsg UEFHRV9TSVpFLCBFODIwX1JFU0VSVkVEKSApCj4gICAgICAgICAgICAgIHByaW50aygiVW5hYmxl IHRvIHNldCBpZGVudGl0eSBwYWdlIHRhYmxlcyBhcyByZXNlcnZlZCBpbiB0aGUgbWVtb3J5Cj4g bWFwXG4iKTsKPiBAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwdmhfc3Rl YWxfbG93X3JhbShzdHJ1Y3QgZG9tYWluCj4gKmQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gCj4g ICAgICBmb3IgKCBtZm4gPSBzdGFydDsgbWZuIDwgc3RhcnQgKyBucl9wYWdlczsgbWZuKysgKQo+ ICAgICAgewo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnID0gbWZuX3RvX3BhZ2UobWZu KTsKPiArICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZyA9IG1mbl90b19wYWdlKF9tZm4obWZu KSk7Cj4gICAgICAgICAgaW50IHJjOwo+IAo+ICAgICAgICAgIHJjID0gdW5zaGFyZV94ZW5fcGFn ZV93aXRoX2d1ZXN0KHBnLCBkb21faW8pOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gaW5kZXggM2I4MjQ1NTNh Yi4uZmRkNzE3NzMwMyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gQEAgLTU5MSw3ICs1OTEsNyBAQCBz dGF0aWMgdm9pZCAqaHZtZW11bF9tYXBfbGluZWFyX2FkZHIoCj4gICAgICAgICAgICAgIGdvdG8g dW5oYW5kbGVhYmxlOwo+ICAgICAgICAgIH0KPiAKPiAtICAgICAgICAqbWZuKysgPSBfbWZuKHBh Z2VfdG9fbWZuKHBhZ2UpKTsKPiArICAgICAgICAqbWZuKysgPSBwYWdlX3RvX21mbihwYWdlKTsK PiAKPiAgICAgICAgICBpZiAoIHAybV9pc19kaXNjYXJkX3dyaXRlKHAybXQpICkKPiAgICAgICAg ICB7Cj4gQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGF0aWMgdm9pZCAqaHZtZW11bF9tYXBfbGluZWFy X2FkZHIoCj4gICBvdXQ6Cj4gICAgICAvKiBEcm9wIGFsbCBoZWxkIHJlZmVyZW5jZXMuICovCj4g ICAgICB3aGlsZSAoIG1mbi0tID4gaHZtZW11bF9jdHh0LT5tZm4gKQo+IC0gICAgICAgIHB1dF9w YWdlKG1mbl90b19wYWdlKG1mbl94KCptZm4pKSk7Cj4gKyAgICAgICAgcHV0X3BhZ2UobWZuX3Rv X3BhZ2UoKm1mbikpOwo+IAo+ICAgICAgcmV0dXJuIGVycjsKPiAgfQo+IEBAIC02NDksNyArNjQ5 LDcgQEAgc3RhdGljIHZvaWQgaHZtZW11bF91bm1hcF9saW5lYXJfYWRkcigKPiAgICAgIHsKPiAg ICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKCptZm4pKTsKPiAgICAgICAgICBwYWdpbmdfbWFya19k aXJ0eShjdXJyZCwgKm1mbik7Cj4gLSAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuX3go Km1mbikpKTsKPiArICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZSgqbWZuKSk7Cj4gCj4gICAg ICAgICAgKm1mbisrID0gX21mbigwKTsgLyogQ2xlYW4gc2xvdCBmb3IgbWFwKCkncyBlcnJvciBj aGVja2luZy4gKi8KPiAgICAgIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0u YyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBpbmRleCA5MWJjM2U4YjI3Li43NGRlOTY4MzE1 IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiArKysgYi94ZW4vYXJjaC94 ODYvaHZtL2h2bS5jCj4gQEAgLTIyNDcsNyArMjI0Nyw3IEBAIGludCBodm1fc2V0X2NyMCh1bnNp Z25lZCBsb25nIHZhbHVlLCBib29sX3QKPiBtYXlfZGVmZXIpCj4gICAgICAgICAgICAgIHYtPmFy Y2guZ3Vlc3RfdGFibGUgPSBwYWdldGFibGVfZnJvbV9wYWdlKHBhZ2UpOwo+IAo+ICAgICAgICAg ICAgICBIVk1fREJHX0xPRyhEQkdfTEVWRUxfVk1NVSwgIlVwZGF0ZSBDUjMgdmFsdWUgPSAlbHgs IG1mbiA9Cj4gJWx4IiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdmNw dS5ndWVzdF9jclszXSwgcGFnZV90b19tZm4ocGFnZSkpOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzNdLCBtZm5feChwYWdlX3RvX21mbihwYWdl KSkpOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgICAgIGVsc2UgaWYgKCAhKHZhbHVlICYgWDg2 X0NSMF9QRykgJiYgKG9sZF92YWx1ZSAmIFg4Nl9DUjBfUEcpICkKPiBAQCAtMjYyNCw3ICsyNjI0 LDcgQEAgdm9pZCAqaHZtX21hcF9ndWVzdF9mcmFtZV9ybyh1bnNpZ25lZCBsb25nCj4gZ2ZuLCBi b29sX3QgcGVybWFuZW50KQo+IAo+ICB2b2lkIGh2bV91bm1hcF9ndWVzdF9mcmFtZSh2b2lkICpw LCBib29sX3QgcGVybWFuZW50KQo+ICB7Cj4gLSAgICB1bnNpZ25lZCBsb25nIG1mbjsKPiArICAg IG1mbl90IG1mbjsKPiAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7Cj4gCj4gICAgICBpZiAo ICFwICkKPiBAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBodm1fdW5tYXBfZ3Vlc3RfZnJhbWUo dm9pZCAqcCwgYm9vbF90Cj4gcGVybWFuZW50KQo+ICAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50 cnkodHJhY2ssICZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxpc3QsIGxpc3QpCj4gICAg ICAgICAgICAgIGlmICggdHJhY2stPnBhZ2UgPT0gcGFnZSApCj4gICAgICAgICAgICAgIHsKPiAt ICAgICAgICAgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQsIF9tZm4obWZuKSk7Cj4gKyAgICAg ICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBtZm4pOwo+ICAgICAgICAgICAgICAgICAg bGlzdF9kZWwoJnRyYWNrLT5saXN0KTsKPiAgICAgICAgICAgICAgICAgIHhmcmVlKHRyYWNrKTsK PiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IEBAIC0yNjYyLDcgKzI2NjIsNyBAQCB2b2lkCj4g aHZtX21hcHBlZF9ndWVzdF9mcmFtZXNfbWFya19kaXJ0eShzdHJ1Y3QgZG9tYWluICpkKQo+IAo+ ICAgICAgc3Bpbl9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOwo+ICAg ICAgbGlzdF9mb3JfZWFjaF9lbnRyeSh0cmFjaywgJmQtPmFyY2guaHZtX2RvbWFpbi53cml0ZV9t YXAubGlzdCwgbGlzdCkKPiAtICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBfbWZuKHBhZ2Vf dG9fbWZuKHRyYWNrLT5wYWdlKSkpOwo+ICsgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQsIHBh Z2VfdG9fbWZuKHRyYWNrLT5wYWdlKSk7Cj4gICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1f ZG9tYWluLndyaXRlX21hcC5sb2NrKTsKPiAgfQo+IAo+IEBAIC0zMjM2LDggKzMyMzYsOCBAQCBz dGF0aWMgZW51bSBodm1fdHJhbnNsYXRpb25fcmVzdWx0IF9faHZtX2NvcHkoCj4gCj4gICAgICAg ICAgICAgICAgICBpZiAoIHhjaGcoJmxhc3RwYWdlLCBnZm5feChnZm4pKSAhPSBnZm5feChnZm4p ICkKPiAgICAgICAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19HX0RFQlVHLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiVwdiBhdHRlbXB0ZWQgd3JpdGUgdG8gcmVhZC1vbmx5 IGdmbiAlI2x4IChtZm49JSNseClcbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 LCBnZm5feChnZm4pLCBwYWdlX3RvX21mbihwYWdlKSk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiJXB2IGF0dGVtcHRlZCB3cml0ZSB0byByZWFkLW9ubHkgZ2ZuICUjbHgKPiAobWZu PSUjIlBSSV9tZm4iKVxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGdmbl94 KGdmbiksIG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKSk7Cj4gICAgICAgICAgICAgIH0KPiAgICAg ICAgICAgICAgZWxzZQo+ICAgICAgICAgICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwo+IGluZGV4IDdlNjY5NjVi Y2QuLmExYzIyMThmZGMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4gQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0 aWMgdm9pZCBodm1fcmVtb3ZlX2lvcmVxX2dmbigKPiAgICAgIHN0cnVjdCBkb21haW4gKmQsIHN0 cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCkKPiAgewo+ICAgICAgaWYgKCBndWVzdF9waHlzbWFw X3JlbW92ZV9wYWdlKGQsIF9nZm4oaW9ycC0+Z2ZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfbWZuKHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpKSwgMCkgKQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpLCAw KSApCj4gICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwo+ICAgICAgY2xlYXJfcGFnZShpb3JwLT52 YSk7Cj4gIH0KPiBAQCAtMjgxLDcgKzI4MSw3IEBAIHN0YXRpYyBpbnQgaHZtX2FkZF9pb3JlcV9n Zm4oCj4gICAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKPiAKPiAgICAgIHJjID0gZ3Vlc3RfcGh5 c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGlvcnAtPmdmbiksCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX21mbihwYWdlX3RvX21mbihpb3JwLT5wYWdlKSksIDApOwo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpLCAwKTsKPiAg ICAgIGlmICggcmMgPT0gMCApCj4gICAgICAgICAgcGFnaW5nX21hcmtfcGZuX2RpcnR5KGQsIF9w Zm4oaW9ycC0+Z2ZuKSk7Cj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3Rkdmdh LmMgYi94ZW4vYXJjaC94ODYvaHZtL3N0ZHZnYS5jCj4gaW5kZXggMDg4ZmJkZjhjZS4uOTI1YmFi MjQzOCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3N0ZHZnYS5jCj4gKysrIGIveGVu L2FyY2gveDg2L2h2bS9zdGR2Z2EuYwo+IEBAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBzdGR2Z2Ff aW5pdChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgICAgIGlmICggcGcgPT0gTlVMTCApCj4gICAg ICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIHMtPnZyYW1fcGFnZVtpXSA9IHBnOwo+IC0gICAg ICAgIGNsZWFyX2RvbWFpbl9wYWdlKF9tZm4ocGFnZV90b19tZm4ocGcpKSk7Cj4gKyAgICAgICAg Y2xlYXJfZG9tYWluX3BhZ2UocGFnZV90b19tZm4ocGcpKTsKPiAgICAgIH0KPiAKPiAgICAgIGlm ICggaSA9PSBBUlJBWV9TSVpFKHMtPnZyYW1fcGFnZSkgKQo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL3N2bS9zdm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCj4gaW5kZXgg OWY1OGFmYzJkOC4uMzBlOTUxMDM5ZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3N2 bS9zdm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCj4gQEAgLTE1NDMsNyAr MTU0Myw3IEBAIHN0YXRpYyBpbnQgc3ZtX2NwdV91cF9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUp Cj4gICAgICAgICAgaWYgKCAhcGcgKQo+ICAgICAgICAgICAgICBnb3RvIGVycjsKPiAKPiAtICAg ICAgICBjbGVhcl9kb21haW5fcGFnZShfbWZuKHBhZ2VfdG9fbWZuKHBnKSkpOwo+ICsgICAgICAg IGNsZWFyX2RvbWFpbl9wYWdlKHBhZ2VfdG9fbWZuKHBnKSk7Cj4gICAgICAgICAgKnRoaXNfaHNh ID0gcGFnZV90b19tYWRkcihwZyk7Cj4gICAgICB9Cj4gCj4gQEAgLTE1NTMsNyArMTU1Myw3IEBA IHN0YXRpYyBpbnQgc3ZtX2NwdV91cF9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpCj4gICAgICAg ICAgaWYgKCAhcGcgKQo+ICAgICAgICAgICAgICBnb3RvIGVycjsKPiAKPiAtICAgICAgICBjbGVh cl9kb21haW5fcGFnZShfbWZuKHBhZ2VfdG9fbWZuKHBnKSkpOwo+ICsgICAgICAgIGNsZWFyX2Rv bWFpbl9wYWdlKHBhZ2VfdG9fbWZuKHBnKSk7Cj4gICAgICAgICAgKnRoaXNfdm1jYiA9IHBhZ2Vf dG9fbWFkZHIocGcpOwo+ICAgICAgfQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMKPiBpbmRleCA3MGFhYjUy MGJjLi5kNmFhODlkMGI3IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4u Ywo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYwo+IEBAIC0zNTQsNyArMzU0LDcg QEAgc3RhdGljIHZvaWQgZW5hYmxlX2h5cGVyY2FsbF9wYWdlKHN0cnVjdCBkb21haW4gKmQpCj4g ICAgICAgICAgaWYgKCBwYWdlICkKPiAgICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gICAg ICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlIyJQUklfZ2ZuIiAoTUZO Cj4gJSMiUFJJX21mbiIpXG4iLAo+IC0gICAgICAgICAgICAgICAgIGdtZm4sIHBhZ2UgPyBwYWdl X3RvX21mbihwYWdlKSA6IG1mbl94KElOVkFMSURfTUZOKSk7Cj4gKyAgICAgICAgICAgICAgICAg Z21mbiwgbWZuX3gocGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogSU5WQUxJRF9NRk4pKTsKPiAg ICAgICAgICByZXR1cm47Cj4gICAgICB9Cj4gCj4gQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMg dm9pZCBpbml0aWFsaXplX3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKPiAKPiAgIGZhaWw6Cj4g ICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4K PiAlIyJQUklfbWZuIilcbiIsIGdtZm4sCj4gLSAgICAgICAgICAgICBwYWdlID8gcGFnZV90b19t Zm4ocGFnZSkgOiBtZm5feChJTlZBTElEX01GTikpOwo+ICsgICAgICAgICAgICAgbWZuX3gocGFn ZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogSU5WQUxJRF9NRk4pKTsKPiAgfQo+IAo+ICBzdGF0aWMg dm9pZCB0ZWFyZG93bl92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCj4gQEAgLTQ5Miw3ICs0OTIs NyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLAo+ IGJvb2xfdCBpbml0aWFsaXplKQo+ICAgICAgICAgIGlmICggcGFnZSApCj4gICAgICAgICAgICAg IHB1dF9wYWdlKHBhZ2UpOwo+ICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQmFk IEdNRk4gJSMiUFJJX2dmbiIgKE1GTgo+ICUjIlBSSV9tZm4iKVxuIiwKPiAtICAgICAgICAgICAg ICAgICBnbWZuLCBwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBtZm5feChJTlZBTElEX01GTikp Owo+ICsgICAgICAgICAgICAgICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3RvX21mbihwYWdl KSA6IElOVkFMSURfTUZOKSk7Cj4gICAgICAgICAgcmV0dXJuOwo+ICAgICAgfQo+IAo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zt eC92bWNzLmMKPiBpbmRleCBlNzgxOGNhZWQwLi5hNWExNjA3NDZhIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Zt Y3MuYwo+IEBAIC0xNDMzLDcgKzE0MzMsNyBAQCBpbnQgdm14X3ZjcHVfZW5hYmxlX3BtbChzdHJ1 Y3QgdmNwdSAqdikKPiAKPiAgICAgIHZteF92bWNzX2VudGVyKHYpOwo+IAo+IC0gICAgX192bXdy aXRlKFBNTF9BRERSRVNTLCBwYWdlX3RvX21mbih2LT5hcmNoLmh2bV92bXgucG1sX3BnKSA8PAo+ IFBBR0VfU0hJRlQpOwo+ICsgICAgX192bXdyaXRlKFBNTF9BRERSRVNTLCBwYWdlX3RvX21hZGRy KHYtPmFyY2guaHZtX3ZteC5wbWxfcGcpKTsKPiAgICAgIF9fdm13cml0ZShHVUVTVF9QTUxfSU5E RVgsIE5SX1BNTF9FTlRSSUVTIC0gMSk7Cj4gCj4gICAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25k YXJ5X2V4ZWNfY29udHJvbCB8PQo+IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9QTUw7Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgv dm14LmMKPiBpbmRleCA1Y2Q2ODllODIzLi5jZjdmN2UxYmI3IDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMK PiBAQCAtMjk2OCw3ICsyOTY4LDcgQEAgZ3BfZmF1bHQ6Cj4gIHN0YXRpYyBpbnQgdm14X2FsbG9j X3ZsYXBpY19tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQpCj4gIHsKPiAgICAgIHN0cnVjdCBwYWdl X2luZm8gKnBnOwo+IC0gICAgdW5zaWduZWQgbG9uZyBtZm47Cj4gKyAgICBtZm5fdCBtZm47Cj4g Cj4gICAgICBpZiAoICFjcHVfaGFzX3ZteF92aXJ0dWFsaXplX2FwaWNfYWNjZXNzZXMgKQo+ICAg ICAgICAgIHJldHVybiAwOwo+IEBAIC0yOTc3LDEwICsyOTc3LDEwIEBAIHN0YXRpYyBpbnQgdm14 X2FsbG9jX3ZsYXBpY19tYXBwaW5nKHN0cnVjdAo+IGRvbWFpbiAqZCkKPiAgICAgIGlmICggIXBn ICkKPiAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBn KTsKPiAtICAgIGNsZWFyX2RvbWFpbl9wYWdlKF9tZm4obWZuKSk7Cj4gKyAgICBjbGVhcl9kb21h aW5fcGFnZShtZm4pOwo+ICAgICAgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9ndWVzdChwZywgZCwgWEVO U0hBUkVfd3JpdGFibGUpOwo+IC0gICAgZC0+YXJjaC5odm1fZG9tYWluLnZteC5hcGljX2FjY2Vz c19tZm4gPSBtZm47Cj4gLSAgICBzZXRfbW1pb19wMm1fZW50cnkoZCwgcGFkZHJfdG9fcGZuKEFQ SUNfREVGQVVMVF9QSFlTX0JBU0UpLAo+IF9tZm4obWZuKSwKPiArICAgIGQtPmFyY2guaHZtX2Rv bWFpbi52bXguYXBpY19hY2Nlc3NfbWZuID0gbWZuX3gobWZuKTsKPiArICAgIHNldF9tbWlvX3Ay bV9lbnRyeShkLCBwYWRkcl90b19wZm4oQVBJQ19ERUZBVUxUX1BIWVNfQkFTRSksCj4gbWZuLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssIHAybV9nZXRfaG9zdHAybShk KS0+ZGVmYXVsdF9hY2Nlc3MpOwo+IAo+ICAgICAgcmV0dXJuIDA7Cj4gQEAgLTI5OTEsNyArMjk5 MSw3IEBAIHN0YXRpYyB2b2lkIHZteF9mcmVlX3ZsYXBpY19tYXBwaW5nKHN0cnVjdAo+IGRvbWFp biAqZCkKPiAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gZC0+YXJjaC5odm1fZG9tYWluLnZteC5h cGljX2FjY2Vzc19tZm47Cj4gCj4gICAgICBpZiAoIG1mbiAhPSAwICkKPiAtICAgICAgICBmcmVl X3NoYXJlZF9kb21oZWFwX3BhZ2UobWZuX3RvX3BhZ2UobWZuKSk7Cj4gKyAgICAgICAgZnJlZV9z aGFyZWRfZG9taGVhcF9wYWdlKG1mbl90b19wYWdlKF9tZm4obWZuKSkpOwo+ICB9Cj4gCj4gIHN0 YXRpYyB2b2lkIHZteF9pbnN0YWxsX3ZsYXBpY19tYXBwaW5nKHN0cnVjdCB2Y3B1ICp2KQo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMKPiBiL3hlbi9hcmNoL3g4Ni9o dm0vdm14L3Z2bXguYwo+IGluZGV4IGRmZTk3Yjk3MDUuLmRiOTJhZTY2NjAgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92 bXgvdnZteC5jCj4gQEAgLTg0LDcgKzg0LDcgQEAgaW50IG52bXhfdmNwdV9pbml0aWFsaXNlKHN0 cnVjdCB2Y3B1ICp2KQo+ICAgICAgICAgIH0KPiAgICAgICAgICB2LT5hcmNoLmh2bV92bXgudm1y ZWFkX2JpdG1hcCA9IHZtcmVhZF9iaXRtYXA7Cj4gCj4gLSAgICAgICAgY2xlYXJfZG9tYWluX3Bh Z2UoX21mbihwYWdlX3RvX21mbih2bXJlYWRfYml0bWFwKSkpOwo+ICsgICAgICAgIGNsZWFyX2Rv bWFpbl9wYWdlKHBhZ2VfdG9fbWZuKHZtcmVhZF9iaXRtYXApKTsKPiAKPiAgICAgICAgICB2bXdy aXRlX2JpdG1hcCA9IGFsbG9jX2RvbWhlYXBfcGFnZShOVUxMLCAwKTsKPiAgICAgICAgICBpZiAo ICF2bXdyaXRlX2JpdG1hcCApCj4gQEAgLTE3MjYsNyArMTcyNiw3IEBAIGludCBudm14X2hhbmRs ZV92bXB0cmxkKHN0cnVjdCBjcHVfdXNlcl9yZWdzCj4gKnJlZ3MpCj4gICAgICAgICAgICAgICAg ICBudmNwdS0+bnZfdnZtY3ggPSB2dm1jeDsKPiAgICAgICAgICAgICAgICAgIG52Y3B1LT5udl92 dm1jeGFkZHIgPSBncGE7Cj4gICAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bV92bXgudm1jc19z aGFkb3dfbWFkZHIgPQo+IC0gICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihkb21haW5f cGFnZV9tYXBfdG9fbWZuKHZ2bWN4KSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgbWZuX3RvX21h ZGRyKGRvbWFpbl9wYWdlX21hcF90b19tZm4odnZtY3gpKTsKPiAgICAgICAgICAgICAgfQo+ICAg ICAgICAgICAgICBlbHNlCj4gICAgICAgICAgICAgIHsKPiBAQCAtMTgxMiw3ICsxODEyLDcgQEAg aW50IG52bXhfaGFuZGxlX3ZtY2xlYXIoc3RydWN0IGNwdV91c2VyX3JlZ3MKPiAqcmVncykKPiAg ICAgICAgICB7Cj4gICAgICAgICAgICAgIGlmICggd3JpdGFibGUgKQo+ICAgICAgICAgICAgICAg ICAgY2xlYXJfdnZtY3NfbGF1bmNoZWQoJm52bXgtPmxhdW5jaGVkX2xpc3QsCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fcGFnZV9tYXBfdG9fbWZuKHZ2bWNz KSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5feChkb21haW5f cGFnZV9tYXBfdG9fbWZuKHZ2bWNzKSkpOwo+ICAgICAgICAgICAgICBlbHNlCj4gICAgICAgICAg ICAgICAgICByYyA9IFZNRkFJTF9WQUxJRDsKPiAgICAgICAgICAgICAgaHZtX3VubWFwX2d1ZXN0 X2ZyYW1lKHZ2bWNzLCAwKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4v YXJjaC94ODYvbW0uYwo+IGluZGV4IGQzM2I2YmZhOWQuLmVlYWYwM2ViNDkgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gveDg2L21tLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0uYwo+IEBAIC0xMzEs MTAgKzEzMSw2IEBACj4gICNpbmNsdWRlICJwdi9tbS5oIgo+IAo+ICAvKiBPdmVycmlkZSBtYWNy b3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3Vu ZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdl KG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZu KHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+ICAjdW5kZWYgdmlydF90b19tZm4KPiAgI2Rl ZmluZSB2aXJ0X3RvX21mbih2KSBfbWZuKF9fdmlydF90b19tZm4odikpCj4gCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKPiBiL3hlbi9hcmNoL3g4Ni9tbS9ndWVz dF93YWxrLmMKPiBpbmRleCA2MDU1ZmVjMWFkLi5mNjdhZWRhM2QwIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rf d2Fsay5jCj4gQEAgLTQ2OSwyMCArNDY5LDIwIEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2 Y3B1ICp2LCBzdHJ1Y3QKPiBwMm1fZG9tYWluICpwMm0sCj4gICAgICBpZiAoIGwzcCApCj4gICAg ICB7Cj4gICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDNwKTsKPiAtICAgICAgICBwdXRfcGFn ZShtZm5fdG9fcGFnZShtZm5feChndy0+bDNtZm4pKSk7Cj4gKyAgICAgICAgcHV0X3BhZ2UobWZu X3RvX3BhZ2UoZ3ctPmwzbWZuKSk7Cj4gICAgICB9Cj4gICNlbmRpZgo+ICAjaWYgR1VFU1RfUEFH SU5HX0xFVkVMUyA+PSAzCj4gICAgICBpZiAoIGwycCApCj4gICAgICB7Cj4gICAgICAgICAgdW5t YXBfZG9tYWluX3BhZ2UobDJwKTsKPiAtICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5f eChndy0+bDJtZm4pKSk7Cj4gKyAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UoZ3ctPmwybWZu KSk7Cj4gICAgICB9Cj4gICNlbmRpZgo+ICAgICAgaWYgKCBsMXAgKQo+ICAgICAgewo+ICAgICAg ICAgIHVubWFwX2RvbWFpbl9wYWdlKGwxcCk7Cj4gLSAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3Bh Z2UobWZuX3goZ3ctPmwxbWZuKSkpOwo+ICsgICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKGd3 LT5sMW1mbikpOwo+ICAgICAgfQo+IAo+ICAgICAgcmV0dXJuIHdhbGtfb2s7Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jCj4gYi94ZW4vYXJjaC94ODYvbW0v aGFwL2d1ZXN0X3dhbGsuYwo+IGluZGV4IGM1NTAwMTdiYTQuLmNiM2Y5Y2ViZTcgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKPiArKysgYi94ZW4vYXJjaC94 ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYwo+IEBAIC04Myw3ICs4Myw3IEBAIHVuc2lnbmVkIGxvbmcK PiBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgKPiAgICAgICAgICAqcGZl YyAmPSB+UEZFQ19wYWdlX3ByZXNlbnQ7Cj4gICAgICAgICAgZ290byBvdXRfdHdlYWtfcGZlYzsK PiAgICAgIH0KPiAtICAgIHRvcF9tZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHRvcF9wYWdlKSk7Cj4g KyAgICB0b3BfbWZuID0gcGFnZV90b19tZm4odG9wX3BhZ2UpOwo+IAo+ICAgICAgLyogTWFwIHRo ZSB0b3AtbGV2ZWwgdGFibGUgYW5kIGNhbGwgdGhlIHRyZWUtd2Fsa2VyICovCj4gICAgICBBU1NF UlQobWZuX3ZhbGlkKHRvcF9tZm4pKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL2hh cC9oYXAuYyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKPiBpbmRleCAwMDNjMmQ4ODk2Li4z NzBhNDkwYWFkIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKPiArKysg Yi94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCj4gQEAgLTQyLDEyICs0Miw2IEBACj4gCj4gICNp bmNsdWRlICJwcml2YXRlLmgiCj4gCj4gLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdl LmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UK PiAtI2RlZmluZSBtZm5fdG9fcGFnZShfbSkgX19tZm5fdG9fcGFnZShtZm5feChfbSkpCj4gLSN1 bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKF9wZykgX21mbihfX3BhZ2Vf dG9fbWZuKF9wZykpCj4gLQo+ICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwo+ICAvKiAgICAgICAgICBIQVAgVlJBTSBUUkFDS0lORyBTVVBQT1JUICAg ICAgICAgICAqLwo+ICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYwo+ IGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKPiBpbmRleCAxNGIxYmIwMWU5Li4x NzM4ZGY2OWY2IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2VwdC5j Cj4gKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKPiBAQCAtMTczLDcgKzE3 Myw3IEBAIG5lcHRfd2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgbDJn YSwKPiBlcHRfd2Fsa190ICpndykKPiAgICAgICAgICAgICAgZ290byBtYXBfZXJyOwo+ICAgICAg ICAgIGd3LT5seGVbbHZsXSA9IGx4cFtlcHRfbHZsX3RhYmxlX29mZnNldChsMmdhLCBsdmwpXTsK PiAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShseHApOwo+IC0gICAgICAgIHB1dF9wYWdlKG1m bl90b19wYWdlKG1mbl94KGx4bWZuKSkpOwo+ICsgICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdl KGx4bWZuKSk7Cj4gCj4gICAgICAgICAgaWYgKCBuZXB0X25vbl9wcmVzZW50X2NoZWNrKGd3LT5s eGVbbHZsXSkgKQo+ICAgICAgICAgICAgICBnb3RvIG5vbl9wcmVzZW50Owo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYwo+IGIveGVuL2FyY2gveDg2L21tL21lbV9z aGFyaW5nLmMKPiBpbmRleCA1N2Y1NGM1NWM4Li5mYWQ4YTlkZjEzIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL21lbV9z aGFyaW5nLmMKPiBAQCAtMTUyLDExICsxNTIsNiBAQCBzdGF0aWMgaW5saW5lIHNocl9oYW5kbGVf dCBnZXRfbmV4dF9oYW5kbGUodm9pZCkKPiAgI2RlZmluZSBtZW1fc2hhcmluZ19lbmFibGVkKGQp IFwKPiAgICAgIChpc19odm1fZG9tYWluKGQpICYmIChkKS0+YXJjaC5odm1fZG9tYWluLm1lbV9z aGFyaW5nX2VuYWJsZWQpCj4gCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90 b19wYWdlKF9tKSBfX21mbl90b19wYWdlKG1mbl94KF9tKSkKPiAtI3VuZGVmIHBhZ2VfdG9fbWZu Cj4gLSNkZWZpbmUgcGFnZV90b19tZm4oX3BnKSBfbWZuKF9fcGFnZV90b19tZm4oX3BnKSkKPiAt Cj4gIHN0YXRpYyBhdG9taWNfdCBucl9zYXZlZF9tZm5zICAgPSBBVE9NSUNfSU5JVCgwKTsKPiAg c3RhdGljIGF0b21pY190IG5yX3NoYXJlZF9tZm5zICA9IEFUT01JQ19JTklUKDApOwo+IAo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jIGIveGVuL2FyY2gveDg2L21tL3Ay bS1lcHQuYwo+IGluZGV4IDY2ZGJiM2U4M2EuLjE0YjU5MzkyM2IgMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gveDg2L21tL3AybS1lcHQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMK PiBAQCAtNzQsMTMgKzc0LDEzIEBAIHN0YXRpYyBpbnQgYXRvbWljX3dyaXRlX2VwdF9lbnRyeShl cHRfZW50cnlfdAo+ICplbnRyeXB0ciwgZXB0X2VudHJ5X3QgbmV3LAo+ICAgICAgICAgICAgICAg ICAgZ290byBvdXQ7Cj4gCj4gICAgICAgICAgICAgIHJjID0gLUVTUkNIOwo+IC0gICAgICAgICAg ICBmZG9tID0gcGFnZV9nZXRfb3duZXIobWZuX3RvX3BhZ2UobmV3Lm1mbikpOwo+ICsgICAgICAg ICAgICBmZG9tID0gcGFnZV9nZXRfb3duZXIobWZuX3RvX3BhZ2UoX21mbihuZXcubWZuKSkpOwo+ ICAgICAgICAgICAgICBpZiAoIGZkb20gPT0gTlVMTCApCj4gICAgICAgICAgICAgICAgICBnb3Rv IG91dDsKPiAKPiAgICAgICAgICAgICAgLyogZ2V0IHJlZmNvdW50IG9uIHRoZSBwYWdlICovCj4g ICAgICAgICAgICAgIHJjID0gLUVCVVNZOwo+IC0gICAgICAgICAgICBpZiAoICFnZXRfcGFnZSht Zm5fdG9fcGFnZShuZXcubWZuKSwgZmRvbSkgKQo+ICsgICAgICAgICAgICBpZiAoICFnZXRfcGFn ZShtZm5fdG9fcGFnZShfbWZuKG5ldy5tZm4pKSwgZmRvbSkgKQo+ICAgICAgICAgICAgICAgICAg Z290byBvdXQ7Cj4gICAgICAgICAgfQo+ICAgICAgfQo+IEBAIC05MSw3ICs5MSw3IEBAIHN0YXRp YyBpbnQgYXRvbWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdAo+ICplbnRyeXB0ciwgZXB0 X2VudHJ5X3QgbmV3LAo+ICAgICAgd3JpdGVfYXRvbWljKCZlbnRyeXB0ci0+ZXB0ZSwgbmV3LmVw dGUpOwo+IAo+ICAgICAgaWYgKCB1bmxpa2VseShvbGRtZm4gIT0gbWZuX3goSU5WQUxJRF9NRk4p KSApCj4gLSAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2Uob2xkbWZuKSk7Cj4gKyAgICAgICAg cHV0X3BhZ2UobWZuX3RvX3BhZ2UoX21mbihvbGRtZm4pKSk7Cj4gCj4gICAgICByYyA9IDA7Cj4g Cj4gQEAgLTI3MCw3ICsyNzAsNyBAQCBzdGF0aWMgdm9pZCBlcHRfZnJlZV9lbnRyeShzdHJ1Y3Qg cDJtX2RvbWFpbiAqcDJtLAo+IGVwdF9lbnRyeV90ICplcHRfZW50cnksIGludCBsCj4gICAgICB9 Cj4gCj4gICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKPiAtICAgIHAybV9mcmVlX3B0cChw Mm0sIG1mbl90b19wYWdlKGVwdF9lbnRyeS0+bWZuKSk7Cj4gKyAgICBwMm1fZnJlZV9wdHAocDJt LCBtZm5fdG9fcGFnZShfbWZuKGVwdF9lbnRyeS0+bWZuKSkpOwo+ICB9Cj4gCj4gIHN0YXRpYyBi b29sX3QgZXB0X3NwbGl0X3N1cGVyX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwKPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cG9kLmMKPiBpbmRleCBmYTEzZTA3ZjdjLi42MzFlOWFlYzMzIDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4g QEAgLTI5LDEyICsyOSw2IEBACj4gCj4gICNpbmNsdWRlICJtbS1sb2Nrcy5oIgo+IAo+IC0vKiBP dmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZu X3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UoX20pIF9f bWZuX3RvX3BhZ2UobWZuX3goX20pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBw YWdlX3RvX21mbihfcGcpIF9tZm4oX19wYWdlX3RvX21mbihfcGcpKQo+IC0KPiAgI2RlZmluZSBz dXBlcnBhZ2VfYWxpZ25lZChfeCkgICgoKF94KSYoU1VQRVJQQUdFX1BBR0VTLTEpKT09MCkKPiAK PiAgLyogRW5mb3JjZSBsb2NrIG9yZGVyaW5nIHdoZW4gZ3JhYmJpbmcgdGhlICJleHRlcm5hbCIg cGFnZV9hbGxvYyBsb2NrICovCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBi L3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IGluZGV4IDQ4ZTUwZmI1ZDguLjljZTBhNWM5ZTEgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21t L3AybS5jCj4gQEAgLTQ3LDEyICs0Nyw2IEBAIGJvb2xfdCBfX2luaXRkYXRhIG9wdF9oYXBfMWdi ID0gMSwgX19pbml0ZGF0YQo+IG9wdF9oYXBfMm1iID0gMTsKPiAgYm9vbGVhbl9wYXJhbSgiaGFw XzFnYiIsIG9wdF9oYXBfMWdiKTsKPiAgYm9vbGVhbl9wYXJhbSgiaGFwXzJtYiIsIG9wdF9oYXBf Mm1iKTsKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRo ZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1m bl90b19wYWdlKF9tKSBfX21mbl90b19wYWdlKG1mbl94KF9tKSkKPiAtI3VuZGVmIHBhZ2VfdG9f bWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4oX3BnKSBfbWZuKF9fcGFnZV90b19tZm4oX3BnKSkK PiAtCj4gIERFRklORV9QRVJDUFVfUldMT0NLX0dMT0JBTChwMm1fcGVyY3B1X3J3bG9jayk7Cj4g Cj4gIC8qIEluaXQgdGhlIGRhdGFzdHJ1Y3R1cmVzIGZvciBsYXRlciB1c2UgYnkgdGhlIHAybSBj b2RlICovCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYyBiL3hlbi9hcmNo L3g4Ni9tbS9wYWdpbmcuYwo+IGluZGV4IDhhNjU4YjkxMTguLjJiMDQ0NWZmZTkgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3Bh Z2luZy5jCj4gQEAgLTQ3LDEyICs0Nyw2IEBACj4gIC8qIFBlci1DUFUgdmFyaWFibGUgZm9yIGVu Zm9yY2luZyB0aGUgbG9jayBvcmRlcmluZyAqLwo+ICBERUZJTkVfUEVSX0NQVShpbnQsIG1tX2xv Y2tfbGV2ZWwpOwo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1h a2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZp bmUgbWZuX3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQo+IC0jdW5kZWYgcGFn ZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihfcGcpIF9tZm4oX19wYWdlX3RvX21mbihf cGcpKQo+IC0KPiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KPiAgLyogICAgICAgICAgICAgIExPRyBESVJUWSBTVVBQT1JUICAgICAgICAgICAgICAg Ki8KPiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKPiBiL3hlbi9h cmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCj4gaW5kZXggODQ1NTQxZmU4YS4uZWEwYWQyOGMw NSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaAo+ICsrKyBi L3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCj4gQEAgLTMxNSw3ICszMTUsNyBAQCBz dGF0aWMgaW5saW5lIGludCBwYWdlX2lzX291dF9vZl9zeW5jKHN0cnVjdCBwYWdlX2luZm8KPiAq cCkKPiAKPiAgc3RhdGljIGlubGluZSBpbnQgbWZuX2lzX291dF9vZl9zeW5jKG1mbl90IGdtZm4p Cj4gIHsKPiAtICAgIHJldHVybiBwYWdlX2lzX291dF9vZl9zeW5jKG1mbl90b19wYWdlKG1mbl94 KGdtZm4pKSk7Cj4gKyAgICByZXR1cm4gcGFnZV9pc19vdXRfb2Zfc3luYyhtZm5fdG9fcGFnZShn bWZuKSk7Cj4gIH0KPiAKPiAgc3RhdGljIGlubGluZSBpbnQgcGFnZV9vb3NfbWF5X3dyaXRlKHN0 cnVjdCBwYWdlX2luZm8gKnApCj4gQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgaW5saW5lIGlu dCBwYWdlX29vc19tYXlfd3JpdGUoc3RydWN0IHBhZ2VfaW5mbwo+ICpwKQo+IAo+ICBzdGF0aWMg aW5saW5lIGludCBtZm5fb29zX21heV93cml0ZShtZm5fdCBnbWZuKQo+ICB7Cj4gLSAgICByZXR1 cm4gcGFnZV9vb3NfbWF5X3dyaXRlKG1mbl90b19wYWdlKG1mbl94KGdtZm4pKSk7Cj4gKyAgICBy ZXR1cm4gcGFnZV9vb3NfbWF5X3dyaXRlKG1mbl90b19wYWdlKGdtZm4pKTsKPiAgfQo+ICAjZW5k aWYgLyogKFNIQURPV19PUFRJTUlaQVRJT05TICYgU0hPUFRfT1VUX09GX1NZTkMpICovCj4gCj4g QEAgLTQ2NSwxOCArNDY1LDYgQEAgdm9pZCBzaF9yZXNldF9sM191cF9wb2ludGVycyhzdHJ1Y3Qg dmNwdSAqdik7Cj4gICAqIE1GTi9wYWdlLWluZm8gaGFuZGxpbmcKPiAgICovCj4gCj4gLS8qIE92 ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5f dCAqLwo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShfbSkgX19t Zm5fdG9fcGFnZShtZm5feChfbSkpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBh Z2VfdG9fbWZuKF9wZykgX21mbihfX3BhZ2VfdG9fbWZuKF9wZykpCj4gLQo+IC0vKiBPdmVycmlk ZSBwYWdldGFibGVfdCA8LT4gc3RydWN0IHBhZ2VfaW5mbyBjb252ZXJzaW9ucyB0byB3b3JrIHdp dGgKPiBtZm5fdCAqLwo+IC0jdW5kZWYgcGFnZXRhYmxlX2dldF9wYWdlCj4gLSNkZWZpbmUgcGFn ZXRhYmxlX2dldF9wYWdlKHgpICAgbWZuX3RvX3BhZ2UocGFnZXRhYmxlX2dldF9tZm4oeCkpCj4g LSN1bmRlZiBwYWdldGFibGVfZnJvbV9wYWdlCj4gLSNkZWZpbmUgcGFnZXRhYmxlX2Zyb21fcGFn ZShwZykKPiBwYWdldGFibGVfZnJvbV9tZm4ocGFnZV90b19tZm4ocGcpKQo+IC0KPiAgI2RlZmlu ZSBiYWNrcG9pbnRlcihzcCkgX21mbihwZHhfdG9fcGZuKCh1bnNpZ25lZCBsb25nKShzcCktPnYu c2guYmFjaykpCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2JhY2twb2ludGVyKGNv bnN0IHN0cnVjdCBwYWdlX2luZm8gKnNwKQo+ICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9udW1hLmMgYi94ZW4vYXJjaC94ODYvbnVtYS5jCj4gaW5kZXggNGZjOTY3Zjg5My4uYTg3OTg3 ZGE2ZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbnVtYS5jCj4gKysrIGIveGVuL2FyY2gv eDg2L251bWEuYwo+IEBAIC00MzAsNyArNDMwLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9udW1hKHVu c2lnbmVkIGNoYXIga2V5KQo+ICAgICAgICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2Nr KTsKPiAgICAgICAgICBwYWdlX2xpc3RfZm9yX2VhY2gocGFnZSwgJmQtPnBhZ2VfbGlzdCkKPiAg ICAgICAgICB7Cj4gLSAgICAgICAgICAgIGkgPSBwaHlzX3RvX25pZCgocGFkZHJfdClwYWdlX3Rv X21mbihwYWdlKSA8PCBQQUdFX1NISUZUKTsKPiArICAgICAgICAgICAgaSA9IHBoeXNfdG9fbmlk KHBhZ2VfdG9fbWFkZHIocGFnZSkpOwo+ICAgICAgICAgICAgICBwYWdlX251bV9ub2RlW2ldKys7 Cj4gICAgICAgICAgfQo+ICAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2sp Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jIGIveGVuL2FyY2gveDg2L3Bo eXNkZXYuYwo+IGluZGV4IDM4MGQzNmY2YjkuLjdiZmEwZjIzZjAgMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gveDg2L3BoeXNkZXYuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKPiBAQCAt MjM5LDcgKzIzOSw3IEBAIHJldF90IGRvX3BoeXNkZXZfb3AoaW50IGNtZCwKPiBYRU5fR1VFU1Rf SEFORExFX1BBUkFNKHZvaWQpIGFyZykKPiAgICAgICAgICB9Cj4gCj4gICAgICAgICAgaWYgKCBj bXB4Y2hnKCZjdXJyZC0+YXJjaC5waXJxX2VvaV9tYXBfbWZuLAo+IC0gICAgICAgICAgICAgICAg ICAgICAwLCBwYWdlX3RvX21mbihwYWdlKSkgIT0gMCApCj4gKyAgICAgICAgICAgICAgICAgICAg IDAsIG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKSkgIT0gMCApCj4gICAgICAgICAgewo+ICAgICAg ICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKPiAgICAgICAgICAgICAgcmV0ID0gLUVC VVNZOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvY2FsbGJhY2suYyBiL3hlbi9hcmNo L3g4Ni9wdi9jYWxsYmFjay5jCj4gaW5kZXggOTdkODQzODYwMC4uNTk1N2NiNTA4NSAxMDA2NDQK PiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvY2FsbGJhY2suYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9w di9jYWxsYmFjay5jCj4gQEAgLTMxLDEyICszMSw2IEBACj4gCj4gICNpbmNsdWRlIDxwdWJsaWMv Y2FsbGJhY2suaD4KPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBt YWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVm aW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5kZWYg cGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZu KHBnKSkKPiAtCj4gIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZ3Vlc3Rfbm1pX2NhbGxiYWNrKHVuc2ln bmVkIGxvbmcgYWRkcmVzcykKPiAgewo+ICAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50 Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZGVzY3JpcHRvci10YWJsZXMuYwo+IGIv eGVuL2FyY2gveDg2L3B2L2Rlc2NyaXB0b3ItdGFibGVzLmMKPiBpbmRleCBiNDE4YmJiNTgxLi43 MWJmOTI3MTNlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRhYmxl cy5jCj4gKysrIGIveGVuL2FyY2gveDg2L3B2L2Rlc2NyaXB0b3ItdGFibGVzLmMKPiBAQCAtMjUs MTIgKzI1LDYgQEAKPiAgI2luY2x1ZGUgPGFzbS9wMm0uaD4KPiAgI2luY2x1ZGUgPGFzbS9wdi9t bS5oPgo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhl bSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZu X3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3Rv X21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+ IC0KPiAgLyoKPiAgICogRmx1c2ggdGhlIExEVCwgZHJvcHBpbmcgYW55IHR5cGVyZWZzLiAgUmV0 dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZwo+IHdoZXRoZXIKPiAgICogbWFwcGluZ3MgaGF2ZSBi ZWVuIHJlbW92ZWQgKGkuZS4gYSBUTEIgZmx1c2ggaXMgbmVlZGVkKS4KPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyBiL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxk LmMKPiBpbmRleCAwYmQyZjFiZjkwLi41YjQzMjViODdmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L3g4Ni9wdi9kb20wX2J1aWxkLmMKPiArKysgYi94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5j Cj4gQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIF9faW5pdCB2b2lkIG1hcmtfcHZfcHRfcGFnZXNf cmRvbmx5KHN0cnVjdAo+IGRvbWFpbiAqZCwKPiAgICAgIGZvciAoIGNvdW50ID0gMDsgY291bnQg PCBucl9wdF9wYWdlczsgY291bnQrKyApCj4gICAgICB7Cj4gICAgICAgICAgbDFlX3JlbW92ZV9m bGFncygqcGwxZSwgX1BBR0VfUlcpOwo+IC0gICAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShsMWVf Z2V0X3BmbigqcGwxZSkpOwo+ICsgICAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShsMWVfZ2V0X21m bigqcGwxZSkpOwo+IAo+ICAgICAgICAgIC8qIFJlYWQtb25seSBtYXBwaW5nICsgUEdDX2FsbG9j YXRlZCArIHBhZ2UtdGFibGUgcGFnZS4gKi8KPiAgICAgICAgICBwYWdlLT5jb3VudF9pbmZvICAg ICAgICAgPSBQR0NfYWxsb2NhdGVkIHwgMzsKPiBAQCAtNDk2LDcgKzQ5Niw3IEBAIGludCBfX2lu aXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgIHBhZ2UgPSBhbGxv Y19kb21oZWFwX3BhZ2VzKGQsIG9yZGVyLCAwKTsKPiAgICAgIGlmICggcGFnZSA9PSBOVUxMICkK PiAgICAgICAgICBwYW5pYygiTm90IGVub3VnaCBSQU0gZm9yIGRvbWFpbiAwIGFsbG9jYXRpb24i KTsKPiAtICAgIGFsbG9jX3NwZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKPiArICAgIGFsbG9jX3Nw Zm4gPSBtZm5feChwYWdlX3RvX21mbihwYWdlKSk7Cj4gICAgICBhbGxvY19lcGZuID0gYWxsb2Nf c3BmbiArIGQtPnRvdF9wYWdlczsKPiAKPiAgICAgIGlmICggaW5pdHJkX2xlbiApCj4gQEAgLTUy NCwxMiArNTI0LDEyIEBAIGludCBfX2luaXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFp biAqZCwKPiAgICAgICAgICAgICAgbXB0X2FsbG9jID0gKHBhZGRyX3QpaW5pdHJkLT5tb2Rfc3Rh cnQgPDwgUEFHRV9TSElGVDsKPiAgICAgICAgICAgICAgaW5pdF9kb21oZWFwX3BhZ2VzKG1wdF9h bGxvYywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wdF9hbGxvYyArIFBBR0Vf QUxJR04oaW5pdHJkX2xlbikpOwo+IC0gICAgICAgICAgICBpbml0cmQtPm1vZF9zdGFydCA9IGlu aXRyZF9tZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKPiArICAgICAgICAgICAgaW5pdHJkLT5tb2Rf c3RhcnQgPSBpbml0cmRfbWZuID0gbWZuX3gocGFnZV90b19tZm4ocGFnZSkpOwo+ICAgICAgICAg IH0KPiAgICAgICAgICBlbHNlCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICB3aGlsZSAoIGNv dW50LS0gKQo+IC0gICAgICAgICAgICAgICAgaWYgKCBhc3NpZ25fcGFnZXMoZCwgbWZuX3RvX3Bh Z2UobWZuKyspLCAwLCAwKSApCj4gKyAgICAgICAgICAgICAgICBpZiAoIGFzc2lnbl9wYWdlcyhk LCBtZm5fdG9fcGFnZShfbWZuKG1mbisrKSksIDAsIDApICkKPiAgICAgICAgICAgICAgICAgICAg ICBCVUcoKTsKPiAgICAgICAgICB9Cj4gICAgICAgICAgaW5pdHJkLT5tb2RfZW5kID0gMDsKPiBA QCAtNjYxLDcgKzY2MSw3IEBAIGludCBfX2luaXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRv bWFpbiAqZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDFfUFJPVCA6 IENPTVBBVF9MMV9QUk9UKSk7Cj4gICAgICAgICAgbDF0YWIrKzsKPiAKPiAtICAgICAgICBwYWdl ID0gbWZuX3RvX3BhZ2UobWZuKTsKPiArICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UoX21mbiht Zm4pKTsKPiAgICAgICAgICBpZiAoICFwYWdlLT51LmludXNlLnR5cGVfaW5mbyAmJgo+ICAgICAg ICAgICAgICAgIWdldF9wYWdlX2FuZF90eXBlKHBhZ2UsIGQsIFBHVF93cml0YWJsZV9wYWdlKSAp Cj4gICAgICAgICAgICAgIEJVRygpOwo+IEBAIC04MDEsNyArODAxLDcgQEAgaW50IF9faW5pdCBk b20wX2NvbnN0cnVjdF9wdihzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgc2ktPm5yX3AybV9mcmFt ZXMgPSBkLT50b3RfcGFnZXMgLSBjb3VudDsKPiAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBh Z2UsICZkLT5wYWdlX2xpc3QgKQo+ICAgICAgewo+IC0gICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZu KHBhZ2UpOwo+ICsgICAgICAgIG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiAgICAg ICAgICBCVUdfT04oU0hBUkVEX00yUChnZXRfZ3Bmbl9mcm9tX21mbihtZm4pKSk7Cj4gICAgICAg ICAgaWYgKCBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pID49IGNvdW50ICkKPiAgICAgICAgICB7Cj4g QEAgLTgyNiw3ICs4MjYsNyBAQCBpbnQgX19pbml0IGRvbTBfY29uc3RydWN0X3B2KHN0cnVjdCBk b21haW4gKmQsCj4gICAgICAgICAgICAgIHBhbmljKCJOb3QgZW5vdWdoIFJBTSBmb3IgRE9NMCBy ZXNlcnZhdGlvbiIpOwo+ICAgICAgICAgIHdoaWxlICggcGZuIDwgZC0+dG90X3BhZ2VzICkKPiAg ICAgICAgICB7Cj4gLSAgICAgICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+ICsgICAg ICAgICAgICBtZm4gPSBtZm5feChwYWdlX3RvX21mbihwYWdlKSk7Cj4gICNpZm5kZWYgTkRFQlVH Cj4gICNkZWZpbmUgcGZuIChucl9wYWdlcyAtIDEgLSAocGZuIC0gKGFsbG9jX2VwZm4gLSBhbGxv Y19zcGZuKSkpCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZG9tYWlu LmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKPiBpbmRleCAyYzc4NGZiM2NjLi41NTY1ZTY5 ZjQ0IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9wdi9kb21haW4uYwo+IEBAIC0xMSwxMiArMTEsNiBAQAo+IAo+ICAjaW5jbHVkZSA8 YXNtL3B2L2RvbWFpbi5oPgo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5o IHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4g LSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1 bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90 b19tZm4ocGcpKQo+IC0KPiAgc3RhdGljIHZvaWQgbm9yZXR1cm4gY29udGludWVfbm9uaWRsZV9k b21haW4oc3RydWN0IHZjcHUgKnYpCj4gIHsKPiAgICAgIGNoZWNrX3dha2V1cF9mcm9tX3dhaXQo KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L2VtdWwtZ2F0ZS1vcC5jIGIveGVuL2Fy Y2gveDg2L3B2L2VtdWwtZ2F0ZS0KPiBvcC5jCj4gaW5kZXggMTRjZTk1ZTI2ZS4uODEwYzRmN2Q4 YyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvZW11bC1nYXRlLW9wLmMKPiArKysgYi94 ZW4vYXJjaC94ODYvcHYvZW11bC1nYXRlLW9wLmMKPiBAQCAtNDEsMTIgKzQxLDYgQEAKPiAKPiAg I2luY2x1ZGUgImVtdWxhdGUuaCIKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3Bh Z2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFn ZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+ IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3Bh Z2VfdG9fbWZuKHBnKSkKPiAtCj4gIHN0YXRpYyBpbnQgcmVhZF9nYXRlX2Rlc2NyaXB0b3IodW5z aWduZWQgaW50IGdhdGVfc2VsLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB2Y3B1ICp2LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCAqc2VsLAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2 LW9wLmMgYi94ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LQo+IG9wLmMKPiBpbmRleCAxN2FhZjk3 ZjEwLi5iNDRiMjQxNWE2IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYt b3AuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYwo+IEBAIC00MywxNiAr NDMsNiBAQAo+ICAjaW5jbHVkZSAiZW11bGF0ZS5oIgo+ICAjaW5jbHVkZSAibW0uaCIKPiAKPiAt LyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRo IG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKG1m bikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2Rl ZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gLS8qKioq KioqKioqKioqKioqKioqKioqKgo+IC0gKiBJL08gZW11bGF0aW9uIHN1cHBvcnQKPiAtICovCj4g LQo+ICBzdHJ1Y3QgcHJpdl9vcF9jdHh0IHsKPiAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0 IGN0eHQ7Cj4gICAgICBzdHJ1Y3Qgewo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZ3Jh bnRfdGFibGUuYyBiL3hlbi9hcmNoL3g4Ni9wdi9ncmFudF90YWJsZS5jCj4gaW5kZXggNDU4MDg1 ZTFiNi4uNmI3ZDg1NWM4YSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvZ3JhbnRfdGFi bGUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9ncmFudF90YWJsZS5jCj4gQEAgLTI3LDEyICsy Nyw2IEBACj4gCj4gICNpbmNsdWRlICJtbS5oIgo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJv bSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1m bl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94 KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBf bWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAgc3RhdGljIHVuc2lnbmVkIGludCBncmFudF90 b19wdGVfZmxhZ3ModW5zaWduZWQgaW50IGdyYW50X2ZsYWdzLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2FjaGVfZmxhZ3MpCj4gIHsKPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3JvLXBhZ2UtZmF1bHQuYyBiL3hlbi9hcmNoL3g4 Ni9wdi9yby1wYWdlLQo+IGZhdWx0LmMKPiBpbmRleCA3ZTBlN2U4ZGZjLi4xN2EwODM0NWQxIDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9yby1wYWdlLWZhdWx0LmMKPiArKysgYi94ZW4v YXJjaC94ODYvcHYvcm8tcGFnZS1mYXVsdC5jCj4gQEAgLTMzLDEyICszMyw2IEBACj4gICNpbmNs dWRlICJlbXVsYXRlLmgiCj4gICNpbmNsdWRlICJtbS5oIgo+IAo+IC0vKiBPdmVycmlkZSBtYWNy b3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3Vu ZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdl KG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZu KHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAgLyoqKioqKioqKioqKioqKioqKioq Kgo+ICAgKiBXcml0YWJsZSBQYWdldGFibGVzCj4gICAqLwo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvcHYvc2hpbS5jIGIveGVuL2FyY2gveDg2L3B2L3NoaW0uYwo+IGluZGV4IDUzNDk2NWM5 MmEuLjUxOTI3OGY3OGMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3B2L3NoaW0uYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9wdi9zaGltLmMKPiBAQCAtMzcsOCArMzcsNiBAQAo+IAo+ICAjaW5j bHVkZSA8Y29tcGF0L2dyYW50X3RhYmxlLmg+Cj4gCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0j ZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+ICAjdW5k ZWYgdmlydF90b19tZm4KPiAgI2RlZmluZSB2aXJ0X3RvX21mbih2YSkgX21mbihfX3ZpcnRfdG9f bWZuKHZhKSkKPiAKPiBAQCAtODQ4LDcgKzg0Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGJh dGNoX21lbW9yeV9vcCh1bnNpZ25lZCBpbnQKPiBjbWQsIHVuc2lnbmVkIGludCBvcmRlciwKPiAg ICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKHhtci5leHRlbnRfc3RhcnQsIHBmbnMpOwo+ICAgICAg cGFnZV9saXN0X2Zvcl9lYWNoICggcGcsIGxpc3QgKQo+ICAgICAgewo+IC0gICAgICAgIHBmbnNb eG1yLm5yX2V4dGVudHMrK10gPSBwYWdlX3RvX21mbihwZyk7Cj4gKyAgICAgICAgcGZuc1t4bXIu bnJfZXh0ZW50cysrXSA9IG1mbl94KHBhZ2VfdG9fbWZuKHBnKSk7Cj4gICAgICAgICAgaWYgKCB4 bXIubnJfZXh0ZW50cyA9PSBBUlJBWV9TSVpFKHBmbnMpIHx8ICFwYWdlX2xpc3RfbmV4dChwZywg bGlzdCkgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgbG9uZyBuciA9IHhlbl9oeXBlcmNh bGxfbWVtb3J5X29wKGNtZCwgJnhtcik7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zbXBi b290LmMgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jCj4gaW5kZXggNTJhZDQzZTBlZC4uNDhjOGNk YjczNCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L3NtcGJvb3QuYwo+IEBAIC00OCwxMiArNDgsNiBAQAo+ICAjaW5jbHVkZSA8bWFjaF93 YWtlY3B1Lmg+Cj4gICNpbmNsdWRlIDxzbXBib290X2hvb2tzLmg+Cj4gCj4gLS8qIE92ZXJyaWRl IG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+ IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3Rv X3BhZ2UobWZuX3gobWZuKSkKPiAtI3VuZGVmIHBhZ2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90 b19tZm4ocGcpIF9tZm4oX19wYWdlX3RvX21mbihwZykpCj4gLQo+ICAjZGVmaW5lIHNldHVwX3Ry YW1wb2xpbmUoKQo+IChib290c3ltX3BoeXModHJhbXBvbGluZV9yZWFsbW9kZV9lbnRyeSkpCj4g Cj4gIHVuc2lnbmVkIGxvbmcgX19yZWFkX21vc3RseSB0cmFtcG9saW5lX3BoeXM7Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni90Ym9vdC5jIGIveGVuL2FyY2gveDg2L3Rib290LmMKPiBpbmRl eCA3MWU3NTdjNTUzLi5mYjQ2MTZhZTgzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni90Ym9v dC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3Rib290LmMKPiBAQCAtMTg0LDcgKzE4NCw3IEBAIHN0 YXRpYyB2b2lkIHVwZGF0ZV9wYWdldGFibGVfbWFjKHZtYWNfY3R4X3QgKmN0eCkKPiAKPiAgICAg IGZvciAoIG1mbiA9IDA7IG1mbiA8IG1heF9wYWdlOyBtZm4rKyApCj4gICAgICB7Cj4gLSAgICAg ICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IG1mbl90b19wYWdlKG1mbik7Cj4gKyAgICAgICAg c3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IG1mbl90b19wYWdlKF9tZm4obWZuKSk7Cj4gCj4gICAg ICAgICAgaWYgKCAhbWZuX3ZhbGlkKF9tZm4obWZuKSkgKQo+ICAgICAgICAgICAgICBjb250aW51 ZTsKPiBAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIHRib290X2dlbl94ZW5oZWFwX2lu dGVncml0eShjb25zdAo+IHVpbnQ4X3Qga2V5W1RCX0tFWV9TSVpFXSwKPiAgICAgIHZtYWNfc2V0 X2tleSgodWludDhfdCAqKWtleSwgJmN0eCk7Cj4gICAgICBmb3IgKCBtZm4gPSAwOyBtZm4gPCBt YXhfcGFnZTsgbWZuKysgKQo+ICAgICAgewo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBh Z2UgPSBfX21mbl90b19wYWdlKG1mbik7Cj4gKyAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFn ZSA9IG1mbl90b19wYWdlKF9tZm4obWZuKSk7Cj4gCj4gICAgICAgICAgaWYgKCAhbWZuX3ZhbGlk KF9tZm4obWZuKSkgKQo+ICAgICAgICAgICAgICBjb250aW51ZTsKPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwo+IGluZGV4IDI3MTkwZTA0 MjMuLjU3MTc5NmIxMjMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKPiArKysg Yi94ZW4vYXJjaC94ODYvdHJhcHMuYwo+IEBAIC04MzQsOCArODM0LDggQEAgaW50IHdybXNyX2h5 cGVydmlzb3JfcmVncyh1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbCkKPiAgICAgICAgICAgICAg fQo+IAo+ICAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKPiAtICAgICAgICAg ICAgICAgICAgICAgIkJhZCBHTUZOICVseCAoTUZOICVseCkgdG8gTVNSICUwOHhcbiIsCj4gLSAg ICAgICAgICAgICAgICAgICAgIGdtZm4sIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IC0xVUws IGJhc2UpOwo+ICsgICAgICAgICAgICAgICAgICAgICAiQmFkIEdNRk4gJWx4IChNRk4gJSMiUFJJ X21mbiIpIHRvIE1TUiAlMDh4XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICBnbWZuLCBtZm5f eChwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTiksCj4gYmFzZSk7Cj4gICAg ICAgICAgICAgIHJldHVybiAwOwo+ICAgICAgICAgIH0KPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3g4Nl82NC9tbS5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCj4gaW5kZXggNmI2 Nzk4ODJkNi4uZmY4YTZkZTIzZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21t LmMKPiArKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKPiBAQCAtNDAsMTIgKzQwLDYgQEAg YXNtKCIuZmlsZSBcIiIgX19GSUxFX18gIlwiIik7Cj4gICNpbmNsdWRlIDxhc20vbWVtX3NoYXJp bmcuaD4KPiAgI2luY2x1ZGUgPHB1YmxpYy9tZW1vcnkuaD4KPiAKPiAtLyogT3ZlcnJpZGUgbWFj cm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1 bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90 b19tZm4ocGcpKQo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZSht Zm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKPiAtCj4gIHVuc2lnbmVkIGludCBfX3JlYWRf bW9zdGx5IG0ycF9jb21wYXRfdnN0YXJ0ID0KPiBfX0hZUEVSVklTT1JfQ09NUEFUX1ZJUlRfU1RB UlQ7Cj4gCj4gIGwyX3BnZW50cnlfdCAqY29tcGF0X2lkbGVfcGdfdGFibGVfbDI7Cj4gZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCj4gaW5kZXgg ZTFjMDAzZDcxZS4uZTJhY2ZlZmY4MCAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5j Cj4gKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwo+IEBAIC0xMjE3LDcgKzEyMTcsNyBAQCBpbnQg bWFwX3ZjcHVfaW5mbyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZwo+IGdmbiwgdW5zaWdu ZWQgb2Zmc2V0KQo+ICAgICAgfQo+IAo+ICAgICAgdi0+dmNwdV9pbmZvID0gbmV3X2luZm87Cj4g LSAgICB2LT52Y3B1X2luZm9fbWZuID0gX21mbihwYWdlX3RvX21mbihwYWdlKSk7Cj4gKyAgICB2 LT52Y3B1X2luZm9fbWZuID0gcGFnZV90b19tZm4ocGFnZSk7Cj4gCj4gICAgICAvKiBTZXQgbmV3 IHZjcHVfaW5mbyBwb2ludGVyIC9iZWZvcmUvIHNldHRpbmcgcGVuZGluZyBmbGFncy4gKi8KPiAg ICAgIHNtcF93bWIoKTsKPiBAQCAtMTI1MCw3ICsxMjUwLDcgQEAgdm9pZCB1bm1hcF92Y3B1X2lu Zm8oc3RydWN0IHZjcHUgKnYpCj4gCj4gICAgICB2Y3B1X2luZm9fcmVzZXQodik7IC8qIE5COiBD bG9iYmVycyB2LT52Y3B1X2luZm9fbWZuICovCj4gCj4gLSAgICBwdXRfcGFnZV9hbmRfdHlwZSht Zm5fdG9fcGFnZShtZm5feChtZm4pKSk7Cj4gKyAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9f cGFnZShtZm4pKTsKPiAgfQo+IAo+ICBpbnQgZGVmYXVsdF9pbml0aWFsaXNlX3ZjcHUoc3RydWN0 IHZjcHUgKnYsCj4gWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4gZGlmZiAtLWdp dCBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwo+ IGluZGV4IGU5YTgxYjY2YmUuLjk1OWI3YzY0YjIgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9n cmFudF90YWJsZS5jCj4gKysrIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCj4gQEAgLTQwLDEy ICs0MCw2IEBACj4gICNpbmNsdWRlIDx4c20veHNtLmg+Cj4gICNpbmNsdWRlIDxhc20vZmx1c2h0 bGIuaD4KPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRo ZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBh Z2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0jdW5kZWYgbWZuX3RvX3Bh Z2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkK PiAtCj4gIC8qIFBlci1kb21haW4gZ3JhbnQgaW5mb3JtYXRpb24uICovCj4gIHN0cnVjdCBncmFu dF90YWJsZSB7Cj4gICAgICAvKgo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2tpbWFnZS5jIGIv eGVuL2NvbW1vbi9raW1hZ2UuYwo+IGluZGV4IGFmZDgyOTJjYzEuLjIxMDI0MWRmYjcgMTAwNjQ0 Cj4gLS0tIGEveGVuL2NvbW1vbi9raW1hZ2UuYwo+ICsrKyBiL3hlbi9jb21tb24va2ltYWdlLmMK PiBAQCAtMjMsMTIgKzIzLDYgQEAKPiAKPiAgI2luY2x1ZGUgPGFzbS9wYWdlLmg+Cj4gCj4gLS8q IE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBt Zm5fdCAqLwo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShtZm4p IF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKPiAtI3VuZGVmIHBhZ2VfdG9fbWZuCj4gLSNkZWZp bmUgcGFnZV90b19tZm4ocGcpICBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAgLyoKPiAg ICogV2hlbiBrZXhlYyB0cmFuc2l0aW9ucyB0byB0aGUgbmV3IGtlcm5lbCB0aGVyZSBpcyBhIG9u ZS10by1vbmUKPiAgICogbWFwcGluZyBiZXR3ZWVuIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJl c3Nlcy4gIE9uIHByb2Nlc3NvcnMKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9tZW1vcnkuYyBi L3hlbi9jb21tb24vbWVtb3J5LmMKPiBpbmRleCA5M2Q4NTZkZjAyLi40YzZiMzZiMjk3IDEwMDY0 NAo+IC0tLSBhL3hlbi9jb21tb24vbWVtb3J5LmMKPiArKysgYi94ZW4vY29tbW9uL21lbW9yeS5j Cj4gQEAgLTMzLDEyICszMyw2IEBACj4gICNpbmNsdWRlIDxhc20vZ3Vlc3QuaD4KPiAgI2VuZGlm Cj4gCj4gLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdv cmsgd2l0aCBtZm5fdCAqLwo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3Rv X21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtI3VuZGVmIG1mbl90b19wYWdlCj4g LSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLQo+ ICBzdHJ1Y3QgbWVtb3BfYXJncyB7Cj4gICAgICAvKiBJTlBVVCAqLwo+ICAgICAgc3RydWN0IGRv bWFpbiAqZG9tYWluOyAgICAgLyogRG9tYWluIHRvIGJlIGFmZmVjdGVkLiAqLwo+IGRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYyBiL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCj4g aW5kZXggYjBkYjQxZmVlYS4uN2ZhODQ3YzlhMSAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL3Bh Z2VfYWxsb2MuYwo+ICsrKyBiL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCj4gQEAgLTE1MSwxMiAr MTUxLDYgQEAKPiAgI2RlZmluZSBwMm1fcG9kX29mZmxpbmVfb3JfYnJva2VuX3JlcGxhY2UocGcp IEJVR19PTihwZyAhPSBOVUxMKQo+ICAjZW5kaWYKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZy b20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBw YWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4o cGcpKQo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9f bWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKPiAtCj4gIC8qCj4gICAqIENvbW1hLXNlcGFyYXRlZCBs aXN0IG9mIGhleGFkZWNpbWFsIHBhZ2UgbnVtYmVycyBjb250YWluaW5nIGJhZAo+IGJ5dGVzLgo+ ICAgKiBlLmcuICdiYWRwYWdlPTB4M2Y0NSwweDhhMzIxJy4KPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi90bWVtLmMgYi94ZW4vY29tbW9uL3RtZW0uYwo+IGluZGV4IDMyNGY0MmE2ZjkuLmMwNzdm ODdlNzcgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi90bWVtLmMKPiArKysgYi94ZW4vY29tbW9u L3RtZW0uYwo+IEBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgdG1lbV9wZXJzaXN0ZW50 X3Bvb2xfcGFnZV9wdXQodm9pZAo+ICpwYWdlX3ZhKQo+ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAq cGk7Cj4gCj4gICAgICBBU1NFUlQoSVNfUEFHRV9BTElHTkVEKHBhZ2VfdmEpKTsKPiAtICAgIHBp ID0gbWZuX3RvX3BhZ2UodmlydF90b19tZm4ocGFnZV92YSkpOwo+ICsgICAgcGkgPSBtZm5fdG9f cGFnZShfbWZuKHZpcnRfdG9fbWZuKHBhZ2VfdmEpKSk7Cj4gICAgICBBU1NFUlQoSVNfVkFMSURf UEFHRShwaSkpOwo+ICAgICAgX190bWVtX2ZyZWVfcGFnZV90aGlzcG9vbChwaSk7Cj4gIH0KPiBk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi90bWVtX3hlbi5jIGIveGVuL2NvbW1vbi90bWVtX3hlbi5j Cj4gaW5kZXggYmQ1MmU0NGZhZi4uYmY3YjE0Zjc5YSAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9u L3RtZW1feGVuLmMKPiArKysgYi94ZW4vY29tbW9uL3RtZW1feGVuLmMKPiBAQCAtMTQsMTAgKzE0 LDYgQEAKPiAgI2luY2x1ZGUgPHhlbi9jcHUuaD4KPiAgI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cj4g Cj4gLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsg d2l0aCBtZm5fdCAqLwo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21m bihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gIGJvb2wgX19yZWFkX21vc3RseSBv cHRfdG1lbTsKPiAgYm9vbGVhbl9wYXJhbSgidG1lbSIsIG9wdF90bWVtKTsKPiAKPiBkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi90cmFjZS5jIGIveGVuL2NvbW1vbi90cmFjZS5jCj4gaW5kZXggMmUx ODcwMjMxNy4uMWYxOWI3YTYwNCAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL3RyYWNlLmMKPiAr KysgYi94ZW4vY29tbW9uL3RyYWNlLmMKPiBAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBpbnQg YWxsb2NfdHJhY2VfYnVmcyh1bnNpZ25lZCBpbnQgcGFnZXMpCj4gICAgICAgICAgLyogTm93IHNo YXJlIHRoZSB0cmFjZSBwYWdlcyAqLwo+ICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgcGFnZXM7 IGkrKyApCj4gICAgICAgICAgewo+IC0gICAgICAgICAgICBwZyA9IG1mbl90b19wYWdlKHRfaW5m b19tZm5fbGlzdFtvZmZzZXQgKyBpXSk7Cj4gKyAgICAgICAgICAgIHBnID0gbWZuX3RvX3BhZ2Uo X21mbih0X2luZm9fbWZuX2xpc3Rbb2Zmc2V0ICsgaV0pKTsKPiAgICAgICAgICAgICAgc2hhcmVf eGVuX3BhZ2Vfd2l0aF9wcml2aWxlZ2VkX2d1ZXN0cyhwZywgWEVOU0hBUkVfd3JpdGFibGUpOwo+ ICAgICAgICAgIH0KPiAgICAgIH0KPiBAQCAtMjc0LDcgKzI3NCw3IEBAIG91dF9kZWFsbG9jOgo+ ICAgICAgICAgICAgICB1aW50MzJfdCBtZm4gPSB0X2luZm9fbWZuX2xpc3Rbb2Zmc2V0ICsgaV07 Cj4gICAgICAgICAgICAgIGlmICggIW1mbiApCj4gICAgICAgICAgICAgICAgICBicmVhazsKPiAt ICAgICAgICAgICAgQVNTRVJUKCEobWZuX3RvX3BhZ2UobWZuKS0+Y291bnRfaW5mbyAmIFBHQ19h bGxvY2F0ZWQpKTsKPiArICAgICAgICAgICAgQVNTRVJUKCEobWZuX3RvX3BhZ2UoX21mbihtZm4p KS0+Y291bnRfaW5mbyAmIFBHQ19hbGxvY2F0ZWQpKTsKPiAgICAgICAgICAgICAgZnJlZV94ZW5o ZWFwX3BhZ2VzKG1mbl90b192aXJ0KG1mbiksIDApOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiBk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92bWFwLmMgYi94ZW4vY29tbW9uL3ZtYXAuYwo+IGluZGV4 IDFmNTBjOTE3ODkuLjZlMjk1ODYyZmIgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi92bWFwLmMK PiArKysgYi94ZW4vY29tbW9uL3ZtYXAuYwo+IEBAIC05LDEwICs5LDYgQEAKPiAgI2luY2x1ZGUg PHhlbi92bWFwLmg+Cj4gICNpbmNsdWRlIDxhc20vcGFnZS5oPgo+IAo+IC0vKiBPdmVycmlkZSBt YWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAt I3VuZGVmIHBhZ2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4ocGcpIF9tZm4oX19wYWdl X3RvX21mbihwZykpCj4gLQo+ICBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHZtX2xvY2spOwo+ICBz dGF0aWMgdm9pZCAqX19yZWFkX21vc3RseSB2bV9iYXNlW1ZNQVBfUkVHSU9OX05SXTsKPiAgI2Rl ZmluZSB2bV9iaXRtYXAoeCkgKCh1bnNpZ25lZCBsb25nICopdm1fYmFzZVt4XSkKPiBAQCAtMjc0 LDcgKzI3MCw3IEBAIHN0YXRpYyB2b2lkICp2bWFsbG9jX3R5cGUoc2l6ZV90IHNpemUsIGVudW0K PiB2bWFwX3JlZ2lvbiB0eXBlKQo+IAo+ICAgZXJyb3I6Cj4gICAgICB3aGlsZSAoIGktLSApCj4g LSAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UobWZuX3RvX3BhZ2UobWZuX3gobWZuW2ldKSkpOwo+ ICsgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKG1mbl90b19wYWdlKG1mbltpXSkpOwo+ICAgICAg eGZyZWUobWZuKTsKPiAgICAgIHJldHVybiBOVUxMOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9j b21tb24veGVub3Byb2YuYyBiL3hlbi9jb21tb24veGVub3Byb2YuYwo+IGluZGV4IDVhY2RkZTU2 OTEuLmZlY2RmYjM2OTcgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi94ZW5vcHJvZi5jCj4gKysr IGIveGVuL2NvbW1vbi94ZW5vcHJvZi5jCj4gQEAgLTIyLDggKzIyLDYgQEAKPiAgLyogT3ZlcnJp ZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICov Cj4gICN1bmRlZiB2aXJ0X3RvX21mbgo+ICAjZGVmaW5lIHZpcnRfdG9fbWZuKHZhKSBfbWZuKF9f dmlydF90b19tZm4odmEpKQo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9f cGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKPiAKPiAgLyogTGltaXQgYW1vdW50 IG9mIHBhZ2VzIHVzZWQgZm9yIHNoYXJlZCBidWZmZXIgKHBlciBkb21haW4pICovCj4gICNkZWZp bmUgTUFYX09QUk9GX1NIQVJFRF9QQUdFUyAzMgo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKPiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9pb21tdV9tYXAuYwo+IGluZGV4IGZkMjMyN2QzZTUuLjcwYjQzNDViMzcgMTAwNjQ0Cj4gLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCj4gKysrIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCj4gQEAgLTQ1MSw3ICs0NTEsNyBAQCBz dGF0aWMgaW50IGlvbW11X3BkZV9mcm9tX2dmbihzdHJ1Y3QgZG9tYWluICpkLAo+IHVuc2lnbmVk IGxvbmcgcGZuLAo+ICAgICAgQlVHX09OKCB0YWJsZSA9PSBOVUxMIHx8IGxldmVsIDwgSU9NTVVf UEFHSU5HX01PREVfTEVWRUxfMSB8fAo+ICAgICAgICAgICAgICBsZXZlbCA+IElPTU1VX1BBR0lO R19NT0RFX0xFVkVMXzYgKTsKPiAKPiAtICAgIG5leHRfdGFibGVfbWZuID0gcGFnZV90b19tZm4o dGFibGUpOwo+ICsgICAgbmV4dF90YWJsZV9tZm4gPSBtZm5feChwYWdlX3RvX21mbih0YWJsZSkp Owo+IAo+ICAgICAgaWYgKCBsZXZlbCA9PSBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8xICkKPiAg ICAgIHsKPiBAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfcGRlX2Zyb21fZ2Zu KHN0cnVjdCBkb21haW4gKmQsCj4gdW5zaWduZWQgbG9uZyBwZm4sCj4gICAgICAgICAgICAgICAg ICByZXR1cm4gMTsKPiAgICAgICAgICAgICAgfQo+IAo+IC0gICAgICAgICAgICBuZXh0X3RhYmxl X21mbiA9IHBhZ2VfdG9fbWZuKHRhYmxlKTsKPiArICAgICAgICAgICAgbmV4dF90YWJsZV9tZm4g PSBtZm5feChwYWdlX3RvX21mbih0YWJsZSkpOwo+ICAgICAgICAgICAgICBzZXRfaW9tbXVfcGRl X3ByZXNlbnQoKHUzMiopcGRlLCBuZXh0X3RhYmxlX21mbiwgbmV4dF9sZXZlbCwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhSU9NTVVGX3dyaXRhYmxlLCAhIUlPTU1VRl9y ZWFkYWJsZSk7Cj4gCj4gQEAgLTUyMCw3ICs1MjAsNyBAQCBzdGF0aWMgaW50IGlvbW11X3BkZV9m cm9tX2dmbihzdHJ1Y3QgZG9tYWluICpkLAo+IHVuc2lnbmVkIGxvbmcgcGZuLAo+ICAgICAgICAg ICAgICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKG5leHRfdGFibGVfdmFkZHIpOwo+ICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAxOwo+ICAgICAgICAgICAgICAgICAgfQo+IC0gICAgICAg ICAgICAgICAgbmV4dF90YWJsZV9tZm4gPSBwYWdlX3RvX21mbih0YWJsZSk7Cj4gKyAgICAgICAg ICAgICAgICBuZXh0X3RhYmxlX21mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHRhYmxlKSk7Cj4gICAg ICAgICAgICAgICAgICBzZXRfaW9tbXVfcGRlX3ByZXNlbnQoKHUzMiopcGRlLCBuZXh0X3RhYmxl X21mbiwgbmV4dF9sZXZlbCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAhIUlPTU1VRl93cml0YWJsZSwgISFJT01NVUZfcmVhZGFibGUpOwo+ICAgICAgICAgICAgICB9 Cj4gQEAgLTU3Nyw3ICs1NzcsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1 Y3QgZG9tYWluICpkLAo+IHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ICAgICAgICAgIH0KPiAKPiAgICAg ICAgICBuZXdfcm9vdF92YWRkciA9IF9fbWFwX2RvbWFpbl9wYWdlKG5ld19yb290KTsKPiAtICAg ICAgICBvbGRfcm9vdF9tZm4gPSBwYWdlX3RvX21mbihvbGRfcm9vdCk7Cj4gKyAgICAgICAgb2xk X3Jvb3RfbWZuID0gbWZuX3gocGFnZV90b19tZm4ob2xkX3Jvb3QpKTsKPiAgICAgICAgICBzZXRf aW9tbXVfcGRlX3ByZXNlbnQobmV3X3Jvb3RfdmFkZHIsIG9sZF9yb290X21mbiwgbGV2ZWwsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhSU9NTVVGX3dyaXRhYmxlLCAhIUlPTU1V Rl9yZWFkYWJsZSk7Cj4gICAgICAgICAgbGV2ZWwrKzsKPiBAQCAtNzEyLDcgKzcxMiw3IEBAIGlu dCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKPiB1bnNpZ25lZCBsb25nIGdm biwgdW5zaWduZWQgbG9uZyBtZm4sCj4gICAgICAgICAgfQo+IAo+ICAgICAgICAgIC8qIERlYWxs b2NhdGUgbG93ZXIgbGV2ZWwgcGFnZSB0YWJsZSAqLwo+IC0gICAgICAgIGZyZWVfYW1kX2lvbW11 X3BndGFibGUobWZuX3RvX3BhZ2UocHRfbWZuW21lcmdlX2xldmVsIC0gMV0pKTsKPiArICAgICAg ICBmcmVlX2FtZF9pb21tdV9wZ3RhYmxlKG1mbl90b19wYWdlKF9tZm4ocHRfbWZuW21lcmdlX2xl dmVsIC0KPiAxXSkpKTsKPiAgICAgIH0KPiAKPiAgb3V0Ogo+IEBAIC04MDIsNyArODAyLDcgQEAg dm9pZCBhbWRfaW9tbXVfc2hhcmVfcDJtKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICBtZm5fdCBw Z2RfbWZuOwo+IAo+ICAgICAgcGdkX21mbiA9Cj4gcGFnZXRhYmxlX2dldF9tZm4ocDJtX2dldF9w YWdldGFibGUocDJtX2dldF9ob3N0cDJtKGQpKSk7Cj4gLSAgICBwMm1fdGFibGUgPSBtZm5fdG9f cGFnZShtZm5feChwZ2RfbWZuKSk7Cj4gKyAgICBwMm1fdGFibGUgPSBtZm5fdG9fcGFnZShwZ2Rf bWZuKTsKPiAKPiAgICAgIGlmICggaGQtPmFyY2gucm9vdF90YWJsZSAhPSBwMm1fdGFibGUgKQo+ ICAgICAgewo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCj4g Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCj4gaW5kZXggMWFlY2Y3Y2YzNC4uMmM0 NGZhYmY5OSAxMDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCj4g KysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYwo+IEBAIC0xODQsNyArMTg0LDcg QEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QKPiBkb21haW4gKmQp Cj4gCj4gICAgICAgICAgcGFnZV9saXN0X2Zvcl9lYWNoICggcGFnZSwgJmQtPnBhZ2VfbGlzdCAp Cj4gICAgICAgICAgewo+IC0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IHBhZ2VfdG9f bWZuKHBhZ2UpOwo+ICsgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IG1mbl94KHBhZ2Vf dG9fbWZuKHBhZ2UpKTsKPiAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBtZm5fdG9f Z21mbihkLCBtZm4pOwo+ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFwcGluZyA9IElPTU1V Rl9yZWFkYWJsZTsKPiAgICAgICAgICAgICAgaW50IHJldDsKPiBkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMKPiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3g4Ni9pb21tdS5jCj4gaW5kZXggMDI1MzgyMzE3My4uNjgxODJhZmQ5MSAxMDA2NDQKPiAtLS0g YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwo+ICsrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCj4gQEAgLTU4LDcgKzU4LDcgQEAgaW50IGFyY2hfaW9t bXVfcG9wdWxhdGVfcGFnZV90YWJsZShzdHJ1Y3QgZG9tYWluCj4gKmQpCj4gICAgICAgICAgaWYg KCBpc19odm1fZG9tYWluKGQpIHx8Cj4gICAgICAgICAgICAgIChwYWdlLT51LmludXNlLnR5cGVf aW5mbyAmIFBHVF90eXBlX21hc2spID09IFBHVF93cml0YWJsZV9wYWdlICkKPiAgICAgICAgICB7 Cj4gLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7Cj4g KyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbWZuX3gocGFnZV90b19tZm4ocGFnZSkp Owo+ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9IG1mbl90b19nbWZuKGQsIG1mbik7 Cj4gCj4gICAgICAgICAgICAgIGlmICggZ2ZuICE9IGdmbl94KElOVkFMSURfR0ZOKSApCj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v bW0uaAo+IGluZGV4IDAyM2UyZWIyMTMuLmIxZDk0ODA1ZDQgMTAwNjQ0Cj4gLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLWFybS9tbS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCj4gQEAg LTEzOCw3ICsxMzgsNyBAQCBleHRlcm4gdmFkZHJfdCB4ZW5oZWFwX3ZpcnRfc3RhcnQ7Cj4gICNl bmRpZgo+IAo+ICAjaWZkZWYgQ09ORklHX0FSTV8zMgo+IC0jZGVmaW5lIGlzX3hlbl9oZWFwX3Bh Z2UocGFnZSkKPiBpc194ZW5faGVhcF9tZm4oX19wYWdlX3RvX21mbihwYWdlKSkKPiArI2RlZmlu ZSBpc194ZW5faGVhcF9wYWdlKHBhZ2UpCj4gaXNfeGVuX2hlYXBfbWZuKG1mbl94KHBhZ2VfdG9f bWZuKHBhZ2UpKSkKPiAgI2RlZmluZSBpc194ZW5faGVhcF9tZm4obWZuKSAoeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgIHVuc2lnbmVkIGxvbmcgbWZuXyA9IChtZm4p OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgIChtZm5fID49IG1mbl94 KHhlbmhlYXBfbWZuX3N0YXJ0KSAmJiAgICAgICAgICAgICAgICAgICAgICAgIFwKPiBAQCAtMTQ3 LDcgKzE0Nyw3IEBAIGV4dGVybiB2YWRkcl90IHhlbmhlYXBfdmlydF9zdGFydDsKPiAgI2Vsc2UK PiAgI2RlZmluZSBpc194ZW5faGVhcF9wYWdlKHBhZ2UpICgocGFnZSktPmNvdW50X2luZm8gJiBQ R0NfeGVuX2hlYXApCj4gICNkZWZpbmUgaXNfeGVuX2hlYXBfbWZuKG1mbikgXAo+IC0gICAgKG1m bl92YWxpZChfbWZuKG1mbikpICYmIGlzX3hlbl9oZWFwX3BhZ2UoX19tZm5fdG9fcGFnZShtZm4p KSkKPiArICAgIChtZm5fdmFsaWQoX21mbihtZm4pKSAmJgo+IGlzX3hlbl9oZWFwX3BhZ2UobWZu X3RvX3BhZ2UoX21mbihtZm4pKSkpCj4gICNlbmRpZgo+IAo+ICAjZGVmaW5lIGlzX3hlbl9maXhl ZF9tZm4obWZuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IEBAIC0yMjAs MTIgKzIyMCwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqaW9yZW1hcF93YyhwYWRk cl90Cj4gc3RhcnQsIHNpemVfdCBsZW4pCj4gIH0pCj4gCj4gIC8qIENvbnZlcnQgYmV0d2VlbiBt YWNoaW5lIGZyYW1lIG51bWJlcnMgYW5kIHBhZ2UtaW5mbyBzdHJ1Y3R1cmVzLiAqLwo+IC0jZGVm aW5lIF9fbWZuX3RvX3BhZ2UobWZuKSAgKGZyYW1lX3RhYmxlICsgKHBmbl90b19wZHgobWZuKSAt Cj4gZnJhbWV0YWJsZV9iYXNlX3BkeCkpCj4gLSNkZWZpbmUgX19wYWdlX3RvX21mbihwZykgICBw ZHhfdG9fcGZuKCh1bnNpZ25lZCBsb25nKSgocGcpIC0KPiBmcmFtZV90YWJsZSkgKyBmcmFtZXRh YmxlX2Jhc2VfcGR4KQo+ICsjZGVmaW5lIG1mbl90b19wYWdlKG1mbikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChmcmFtZV90YWJsZSArIChtZm5f dG9fcGR4KG1mbikgLSBmcmFtZXRhYmxlX2Jhc2VfcGR4KSkKPiArI2RlZmluZSBwYWdlX3RvX21m bihwZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICBwZHhfdG9fbWZuKCh1bnNpZ25lZCBsb25nKSgocGcpIC0gZnJhbWVfdGFibGUpICsKPiBmcmFt ZXRhYmxlX2Jhc2VfcGR4KQo+IAo+ICAvKiBDb252ZXJ0IGJldHdlZW4gbWFjaGluZSBhZGRyZXNz ZXMgYW5kIHBhZ2UtaW5mbyBzdHJ1Y3R1cmVzLiAqLwo+IC0jZGVmaW5lIG1hZGRyX3RvX3BhZ2Uo bWEpIF9fbWZuX3RvX3BhZ2UoKG1hKSA+PiBQQUdFX1NISUZUKQo+IC0jZGVmaW5lIHBhZ2VfdG9f bWFkZHIocGcpICgocGFkZHJfdClfX3BhZ2VfdG9fbWZuKHBnKSA8PAo+IFBBR0VfU0hJRlQpCj4g KyNkZWZpbmUgbWFkZHJfdG9fcGFnZShtYSkgbWZuX3RvX3BhZ2UobWFkZHJfdG9fbWZuKG1hKSkK PiArI2RlZmluZSBwYWdlX3RvX21hZGRyKHBnKSAobWZuX3RvX21hZGRyKHBhZ2VfdG9fbWZuKHBn KSkpCj4gCj4gIC8qIENvbnZlcnQgYmV0d2VlbiBmcmFtZSBudW1iZXIgYW5kIGFkZHJlc3MgZm9y bWF0cy4gICovCj4gICNkZWZpbmUgcGZuX3RvX3BhZGRyKHBmbikgKChwYWRkcl90KShwZm4pIDw8 IFBBR0VfU0hJRlQpCj4gQEAgLTIzNSw3ICsyMzcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19p b21lbSAqaW9yZW1hcF93YyhwYWRkcl90Cj4gc3RhcnQsIHNpemVfdCBsZW4pCj4gICNkZWZpbmUg Z2FkZHJfdG9fZ2ZuKGdhKSAgICBfZ2ZuKHBhZGRyX3RvX3BmbihnYSkpCj4gICNkZWZpbmUgbWZu X3RvX21hZGRyKG1mbikgICBwZm5fdG9fcGFkZHIobWZuX3gobWZuKSkKPiAgI2RlZmluZSBtYWRk cl90b19tZm4obWEpICAgIF9tZm4ocGFkZHJfdG9fcGZuKG1hKSkKPiAtI2RlZmluZSB2bWFwX3Rv X21mbih2YSkgICAgIHBhZGRyX3RvX3Bmbih2aXJ0X3RvX21hZGRyKCh2YWRkcl90KXZhKSkKPiAr I2RlZmluZSB2bWFwX3RvX21mbih2YSkgICAgIG1hZGRyX3RvX21mbih2aXJ0X3RvX21hZGRyKCh2 YWRkcl90KXZhKSkKPiAgI2RlZmluZSB2bWFwX3RvX3BhZ2UodmEpICAgIG1mbl90b19wYWdlKHZt YXBfdG9fbWZuKHZhKSkKPiAKPiAgLyogUGFnZS1hbGlnbiBhZGRyZXNzIGFuZCBjb252ZXJ0IHRv IGZyYW1lIG51bWJlciBmb3JtYXQgKi8KPiBAQCAtMjkzLDggKzI5NSw2IEBAIHN0YXRpYyBpbmxp bmUgdWludDY0X3QgZ3ZpcnRfdG9fbWFkZHIodmFkZHJfdCB2YSwKPiBwYWRkcl90ICpwYSwKPiAg ICogVGhlc2UgYXJlIG92ZXJyaWRlbiBpbiB2YXJpb3VzIHNvdXJjZSBmaWxlcyB3aGlsZSB1bmRl cnNjb3JlZCB2ZXJzaW9uCj4gICAqIHJlbWFpbiBpbnRhY3QuCj4gICAqLwo+IC0jZGVmaW5lIG1m bl90b19wYWdlKG1mbikgICAgX19tZm5fdG9fcGFnZShtZm4pCj4gLSNkZWZpbmUgcGFnZV90b19t Zm4ocGcpICAgICBfX3BhZ2VfdG9fbWZuKHBnKQo+ICAjZGVmaW5lIHZpcnRfdG9fbWZuKHZhKSAg ICAgX192aXJ0X3RvX21mbih2YSkKPiAgI2RlZmluZSBtZm5fdG9fdmlydChtZm4pICAgIF9fbWZu X3RvX3ZpcnQobWZuKQo+IAo+IEBAIC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgcGFnZV9pbmZvICp2aXJ0X3RvX3BhZ2UoY29uc3Qgdm9pZAo+ICp2KQo+IAo+ICBzdGF0aWMg aW5saW5lIHZvaWQgKnBhZ2VfdG9fdmlydChjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvICpwZykKPiAg ewo+IC0gICAgcmV0dXJuIG1mbl90b192aXJ0KHBhZ2VfdG9fbWZuKHBnKSk7Cj4gKyAgICByZXR1 cm4gbWZuX3RvX3ZpcnQobWZuX3gocGFnZV90b19tZm4ocGcpKSk7Cj4gIH0KPiAKPiAgc3RydWN0 IHBhZ2VfaW5mbyAqZ2V0X3BhZ2VfZnJvbV9ndmEoc3RydWN0IHZjcHUgKnYsIHZhZGRyX3QgdmEs Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggYi94ZW4vaW5jbHVkZS9h c20tYXJtL3AybS5oCj4gaW5kZXggYTBhYmM4NGVkOC4uYmNhYzE0MWZkNCAxMDA2NDQKPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9w Mm0uaAo+IEBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZV9pbmZv ICpnZXRfcGFnZV9mcm9tX2dmbigKPiAgewo+ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsK PiAgICAgIHAybV90eXBlX3QgcDJtdDsKPiAtICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbWZuX3go cDJtX2xvb2t1cChkLCBfZ2ZuKGdmbiksICZwMm10KSk7Cj4gKyAgICBtZm5fdCBtZm4gPSBwMm1f bG9va3VwKGQsIF9nZm4oZ2ZuKSwgJnAybXQpOwo+IAo+ICAgICAgaWYgKHQpCj4gICAgICAgICAg KnQgPSBwMm10Owo+IEBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFn ZV9pbmZvICpnZXRfcGFnZV9mcm9tX2dmbigKPiAgICAgIGlmICggIXAybV9pc19hbnlfcmFtKHAy bXQpICkKPiAgICAgICAgICByZXR1cm4gTlVMTDsKPiAKPiAtICAgIGlmICggIW1mbl92YWxpZChf bWZuKG1mbikpICkKPiArICAgIGlmICggIW1mbl92YWxpZChtZm4pICkKPiAgICAgICAgICByZXR1 cm4gTlVMTDsKPiAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShtZm4pOwo+IAo+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKPiBp bmRleCAzMDEzYzI2NmZlLi44ZGMzODIxZTk3IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvbW0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+IEBAIC0yNzEsNyAr MjcxLDcgQEAgc3RydWN0IHBhZ2VfaW5mbwo+IAo+ICAjZGVmaW5lIGlzX3hlbl9oZWFwX3BhZ2Uo cGFnZSkgKChwYWdlKS0+Y291bnRfaW5mbyAmIFBHQ194ZW5faGVhcCkKPiAgI2RlZmluZSBpc194 ZW5faGVhcF9tZm4obWZuKSBcCj4gLSAgICAoX19tZm5fdmFsaWQobWZuKSAmJiBpc194ZW5faGVh cF9wYWdlKF9fbWZuX3RvX3BhZ2UobWZuKSkpCj4gKyAgICAoX19tZm5fdmFsaWQobWZuKSAmJiBp c194ZW5faGVhcF9wYWdlKG1mbl90b19wYWdlKF9tZm4obWZuKSkpKQo+ICAjZGVmaW5lIGlzX3hl bl9maXhlZF9tZm4obWZuKSAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICgoKChtZm4pIDw8 IFBBR0VfU0hJRlQpID49IF9fcGEoJl9zdGV4dCkpICYmICBcCj4gICAgICAgKCgobWZuKSA8PCBQ QUdFX1NISUZUKSA8PSBfX3BhKCZfXzJNX3J3ZGF0YV9lbmQpKSkKPiBAQCAtMzg0LDcgKzM4NCw3 IEBAIHZvaWQgcHV0X3BhZ2VfZnJvbV9sMWUobDFfcGdlbnRyeV90IGwxZSwgc3RydWN0Cj4gZG9t YWluICpsMWVfb3duZXIpOwo+IAo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlX2luZm8gKmdl dF9wYWdlX2Zyb21fbWZuKG1mbl90IG1mbiwgc3RydWN0Cj4gZG9tYWluICpkKQo+ICB7Cj4gLSAg ICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gX19tZm5fdG9fcGFnZShtZm5feChtZm4pKTsKPiAr ICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBtZm5fdG9fcGFnZShtZm4pOwo+IAo+ICAgICAg aWYgKCB1bmxpa2VseSghbWZuX3ZhbGlkKG1mbikpIHx8IHVubGlrZWx5KCFnZXRfcGFnZShwYWdl LCBkKSkgKQo+ICAgICAgewo+IEBAIC00NzgsMTAgKzQ3OCwxMCBAQCBleHRlcm4gcGFkZHJfdCBt ZW1faG90cGx1ZzsKPiAgI2RlZmluZSBTSEFSRURfTTJQKF9lKSAgICAgICAgICAgKChfZSkgPT0g U0hBUkVEX00yUF9FTlRSWSkKPiAKPiAgI2RlZmluZSBjb21wYXRfbWFjaGluZV90b19waHlzX21h cHBpbmcgKCh1bnNpZ25lZCBpbnQKPiAqKVJEV1JfQ09NUEFUX01QVF9WSVJUX1NUQVJUKQo+IC0j ZGVmaW5lIF9zZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBmbikgKHsgICAgICAgICAgICAgICAgICAg ICAgICBcCj4gLSAgICBzdHJ1Y3QgZG9tYWluICpkID0gcGFnZV9nZXRfb3duZXIoX19tZm5fdG9f cGFnZShtZm4pKTsgICAgIFwKPiAtICAgIHVuc2lnbmVkIGxvbmcgZW50cnkgPSAoZCAmJiAoZCA9 PSBkb21fY293KSkgPyAgICAgICAgICAgICAgXAo+IC0gICAgICAgIFNIQVJFRF9NMlBfRU5UUlkg OiAocGZuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyNkZWZpbmUgX3NldF9n cGZuX2Zyb21fbWZuKG1mbiwgcGZuKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICBzdHJ1Y3QgZG9tYWluICpkID0gcGFnZV9nZXRfb3duZXIobWZuX3RvX3BhZ2UoX21mbihtZm4p KSk7ICAgIFwKPiArICAgIHVuc2lnbmVkIGxvbmcgZW50cnkgPSAoZCAmJiAoZCA9PSBkb21fY293 KSkgPyAgICAgICAgICAgICAgIFwKPiArICAgICAgICBTSEFSRURfTTJQX0VOVFJZIDogKHBmbik7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICgodm9pZCkoKG1mbikgPj0g KFJEV1JfQ09NUEFUX01QVF9WSVJUX0VORCAtCj4gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQp IC8gNCB8fCBcCj4gICAgICAgICAgICAgIChjb21wYXRfbWFjaGluZV90b19waHlzX21hcHBpbmdb KG1mbildID0gKHVuc2lnbmVkIGludCkoZW50cnkpKSksCj4gXAo+ICAgICAgIG1hY2hpbmVfdG9f cGh5c19tYXBwaW5nWyhtZm4pXSA9IChlbnRyeSkpOyAgICAgICAgICAgICAgICBcCj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Ay bS5oCj4gaW5kZXggMmU3YWE4ZmM3OS4uYzQ4NmI2ZjhmMCAxMDA2NDQKPiAtLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L3AybS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+IEBA IC00ODgsNyArNDg4LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZV9pbmZvICpnZXRfcGFn ZV9mcm9tX2dmbigKPiAgICAgIC8qIE5vbi10cmFuc2xhdGVkIGd1ZXN0cyBzZWUgMS0xIFJBTSAv IE1NSU8gbWFwcGluZ3MgZXZlcnl3aGVyZSAqLwo+ICAgICAgaWYgKCB0ICkKPiAgICAgICAgICAq dCA9IGxpa2VseShkICE9IGRvbV9pbykgPyBwMm1fcmFtX3J3IDogcDJtX21taW9fZGlyZWN0Owo+ IC0gICAgcGFnZSA9IF9fbWZuX3RvX3BhZ2UoZ2ZuKTsKPiArICAgIHBhZ2UgPSBtZm5fdG9fcGFn ZShfbWZuKGdmbikpOwo+ICAgICAgcmV0dXJuIG1mbl92YWxpZChfbWZuKGdmbikpICYmIGdldF9w YWdlKHBhZ2UsIGQpID8gcGFnZSA6IE5VTEw7Cj4gIH0KPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wYWdlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaAo+IGluZGV4 IDQ1Y2E3NDI2NzguLjdlMmExNTQ2YzMgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wYWdlLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaAo+IEBAIC04OCwxMCAr ODgsMTAgQEAKPiAgICAgICgocGFkZHJfdCkoKCh4KS5sNCAmIChQQUREUl9NQVNLJlBBR0VfTUFT SykpKSkKPiAKPiAgLyogR2V0IHBvaW50ZXIgdG8gaW5mbyBzdHJ1Y3R1cmUgb2YgcGFnZSBtYXBw ZWQgYnkgcHRlIChzdHJ1Y3QgcGFnZV9pbmZvICopLgo+ICovCj4gLSNkZWZpbmUgbDFlX2dldF9w YWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShsMWVfZ2V0X3Bmbih4KSkpCj4gLSNkZWZp bmUgbDJlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShsMmVfZ2V0X3Bmbih4 KSkpCj4gLSNkZWZpbmUgbDNlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShs M2VfZ2V0X3Bmbih4KSkpCj4gLSNkZWZpbmUgbDRlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19t Zm5fdG9fcGFnZShsNGVfZ2V0X3Bmbih4KSkpCj4gKyNkZWZpbmUgbDFlX2dldF9wYWdlKHgpICAg ICAgICAgICBtZm5fdG9fcGFnZShsMWVfZ2V0X21mbih4KSkKPiArI2RlZmluZSBsMmVfZ2V0X3Bh Z2UoeCkgICAgICAgICAgIG1mbl90b19wYWdlKGwyZV9nZXRfbWZuKHgpKQo+ICsjZGVmaW5lIGwz ZV9nZXRfcGFnZSh4KSAgICAgICAgICAgbWZuX3RvX3BhZ2UobDNlX2dldF9tZm4oeCkpCj4gKyNk ZWZpbmUgbDRlX2dldF9wYWdlKHgpICAgICAgICAgICBtZm5fdG9fcGFnZShsNGVfZ2V0X21mbih4 KSkKPiAKPiAgLyogR2V0IHB0ZSBhY2Nlc3MgZmxhZ3MgKHVuc2lnbmVkIGludCkuICovCj4gICNk ZWZpbmUgbDFlX2dldF9mbGFncyh4KSAgICAgICAgICAgKGdldF9wdGVfZmxhZ3MoKHgpLmwxKSkK PiBAQCAtMTU3LDEwICsxNTcsMTAgQEAgc3RhdGljIGlubGluZSBsNF9wZ2VudHJ5X3QgbDRlX2Zy b21fcGFkZHIocGFkZHJfdAo+IHBhLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICNkZWZpbmUgbDRl X2Zyb21faW50cHRlKGludHB0ZSkgICAgKChsNF9wZ2VudHJ5X3QpIHsgKGludHB0ZV90KShpbnRw dGUpIH0pCj4gCj4gIC8qIENvbnN0cnVjdCBhIHB0ZSBmcm9tIGEgcGFnZSBwb2ludGVyIGFuZCBh Y2Nlc3MgZmxhZ3MuICovCj4gLSNkZWZpbmUgbDFlX2Zyb21fcGFnZShwYWdlLCBmbGFncykgbDFl X2Zyb21fcGZuKF9fcGFnZV90b19tZm4ocGFnZSksCj4gKGZsYWdzKSkKPiAtI2RlZmluZSBsMmVf ZnJvbV9wYWdlKHBhZ2UsIGZsYWdzKSBsMmVfZnJvbV9wZm4oX19wYWdlX3RvX21mbihwYWdlKSwK PiAoZmxhZ3MpKQo+IC0jZGVmaW5lIGwzZV9mcm9tX3BhZ2UocGFnZSwgZmxhZ3MpIGwzZV9mcm9t X3BmbihfX3BhZ2VfdG9fbWZuKHBhZ2UpLAo+IChmbGFncykpCj4gLSNkZWZpbmUgbDRlX2Zyb21f cGFnZShwYWdlLCBmbGFncykgbDRlX2Zyb21fcGZuKF9fcGFnZV90b19tZm4ocGFnZSksCj4gKGZs YWdzKSkKPiArI2RlZmluZSBsMWVfZnJvbV9wYWdlKHBhZ2UsIGZsYWdzKSBsMWVfZnJvbV9tZm4o cGFnZV90b19tZm4ocGFnZSksCj4gKGZsYWdzKSkKPiArI2RlZmluZSBsMmVfZnJvbV9wYWdlKHBh Z2UsIGZsYWdzKSBsMmVfZnJvbV9tZm4ocGFnZV90b19tZm4ocGFnZSksCj4gKGZsYWdzKSkKPiAr I2RlZmluZSBsM2VfZnJvbV9wYWdlKHBhZ2UsIGZsYWdzKSBsM2VfZnJvbV9tZm4ocGFnZV90b19t Zm4ocGFnZSksCj4gKGZsYWdzKSkKPiArI2RlZmluZSBsNGVfZnJvbV9wYWdlKHBhZ2UsIGZsYWdz KSBsNGVfZnJvbV9tZm4ocGFnZV90b19tZm4ocGFnZSksCj4gKGZsYWdzKSkKPiAKPiAgLyogQWRk IGV4dHJhIGZsYWdzIHRvIGFuIGV4aXN0aW5nIHB0ZS4gKi8KPiAgI2RlZmluZSBsMWVfYWRkX2Zs YWdzKHgsIGZsYWdzKSAgICAoKHgpLmwxIHw9IHB1dF9wdGVfZmxhZ3MoZmxhZ3MpKQo+IEBAIC0y MTUsMTMgKzIxNSwxMyBAQCBzdGF0aWMgaW5saW5lIGw0X3BnZW50cnlfdCBsNGVfZnJvbV9wYWRk cihwYWRkcl90Cj4gcGEsIHVuc2lnbmVkIGludCBmbGFncykKPiAgLyogUGFnZS10YWJsZSB0eXBl LiAqLwo+ICB0eXBlZGVmIHN0cnVjdCB7IHU2NCBwZm47IH0gcGFnZXRhYmxlX3Q7Cj4gICNkZWZp bmUgcGFnZXRhYmxlX2dldF9wYWRkcih4KSAgKChwYWRkcl90KSh4KS5wZm4gPDwgUEFHRV9TSElG VCkKPiAtI2RlZmluZSBwYWdldGFibGVfZ2V0X3BhZ2UoeCkgICBfX21mbl90b19wYWdlKCh4KS5w Zm4pCj4gKyNkZWZpbmUgcGFnZXRhYmxlX2dldF9wYWdlKHgpICAgbWZuX3RvX3BhZ2UocGFnZXRh YmxlX2dldF9tZm4oeCkpCj4gICNkZWZpbmUgcGFnZXRhYmxlX2dldF9wZm4oeCkgICAgKCh4KS5w Zm4pCj4gICNkZWZpbmUgcGFnZXRhYmxlX2dldF9tZm4oeCkgICAgX21mbigoKHgpLnBmbikpCj4g ICNkZWZpbmUgcGFnZXRhYmxlX2lzX251bGwoeCkgICAgKCh4KS5wZm4gPT0gMCkKPiAgI2RlZmlu ZSBwYWdldGFibGVfZnJvbV9wZm4ocGZuKSAoKHBhZ2V0YWJsZV90KSB7IChwZm4pIH0pCj4gICNk ZWZpbmUgcGFnZXRhYmxlX2Zyb21fbWZuKG1mbikgKChwYWdldGFibGVfdCkgeyBtZm5feChtZm4p IH0pCj4gLSNkZWZpbmUgcGFnZXRhYmxlX2Zyb21fcGFnZShwZykKPiBwYWdldGFibGVfZnJvbV9w Zm4oX19wYWdlX3RvX21mbihwZykpCj4gKyNkZWZpbmUgcGFnZXRhYmxlX2Zyb21fcGFnZShwZykK PiBwYWdldGFibGVfZnJvbV9tZm4ocGFnZV90b19tZm4ocGcpKQo+ICAjZGVmaW5lIHBhZ2V0YWJs ZV9mcm9tX3BhZGRyKHApIHBhZ2V0YWJsZV9mcm9tX3BmbigocCk+PlBBR0VfU0hJRlQpCj4gICNk ZWZpbmUgcGFnZXRhYmxlX251bGwoKSAgICAgICAgcGFnZXRhYmxlX2Zyb21fcGZuKDApCj4gCj4g QEAgLTI0MCwxMiArMjQwLDEyIEBAIHZvaWQgY29weV9wYWdlX3NzZTIodm9pZCAqLCBjb25zdCB2 b2lkICopOwo+ICAjZGVmaW5lIF9fbWZuX3RvX3ZpcnQobWZuKSAgKG1hZGRyX3RvX3ZpcnQoKHBh ZGRyX3QpKG1mbikgPDwKPiBQQUdFX1NISUZUKSkKPiAKPiAgLyogQ29udmVydCBiZXR3ZWVuIG1h Y2hpbmUgZnJhbWUgbnVtYmVycyBhbmQgcGFnZS1pbmZvIHN0cnVjdHVyZXMuICovCj4gLSNkZWZp bmUgX19tZm5fdG9fcGFnZShtZm4pICAoZnJhbWVfdGFibGUgKyBwZm5fdG9fcGR4KG1mbikpCj4g LSNkZWZpbmUgX19wYWdlX3RvX21mbihwZykgICBwZHhfdG9fcGZuKCh1bnNpZ25lZCBsb25nKSgo cGcpIC0KPiBmcmFtZV90YWJsZSkpCj4gKyNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSAgICAoZnJh bWVfdGFibGUgKyBtZm5fdG9fcGR4KG1mbikpCj4gKyNkZWZpbmUgcGFnZV90b19tZm4ocGcpICAg ICBwZHhfdG9fbWZuKCh1bnNpZ25lZCBsb25nKSgocGcpIC0KPiBmcmFtZV90YWJsZSkpCj4gCj4g IC8qIENvbnZlcnQgYmV0d2VlbiBtYWNoaW5lIGFkZHJlc3NlcyBhbmQgcGFnZS1pbmZvIHN0cnVj dHVyZXMuICovCj4gLSNkZWZpbmUgX19tYWRkcl90b19wYWdlKG1hKSBfX21mbl90b19wYWdlKCht YSkgPj4gUEFHRV9TSElGVCkKPiAtI2RlZmluZSBfX3BhZ2VfdG9fbWFkZHIocGcpICgocGFkZHJf dClfX3BhZ2VfdG9fbWZuKHBnKSA8PAo+IFBBR0VfU0hJRlQpCj4gKyNkZWZpbmUgX19tYWRkcl90 b19wYWdlKG1hKSBtZm5fdG9fcGFnZShtYWRkcl90b19tZm4obWEpKQo+ICsjZGVmaW5lIF9fcGFn ZV90b19tYWRkcihwZykgKG1mbl90b19tYWRkcihwYWdlX3RvX21mbihwZykpKQo+IAo+ICAvKiBD b252ZXJ0IGJldHdlZW4gZnJhbWUgbnVtYmVyIGFuZCBhZGRyZXNzIGZvcm1hdHMuICAqLwo+ICAj ZGVmaW5lIF9fcGZuX3RvX3BhZGRyKHBmbikgKChwYWRkcl90KShwZm4pIDw8IFBBR0VfU0hJRlQp Cj4gQEAgLTI2NCw4ICsyNjQsNiBAQCB2b2lkIGNvcHlfcGFnZV9zc2UyKHZvaWQgKiwgY29uc3Qg dm9pZCAqKTsKPiAgI2RlZmluZSBtZm5fdG9fdmlydChtZm4pICAgIF9fbWZuX3RvX3ZpcnQobWZu KQo+ICAjZGVmaW5lIHZpcnRfdG9fbWFkZHIodmEpICAgX192aXJ0X3RvX21hZGRyKCh1bnNpZ25l ZCBsb25nKSh2YSkpCj4gICNkZWZpbmUgbWFkZHJfdG9fdmlydChtYSkgICBfX21hZGRyX3RvX3Zp cnQoKHVuc2lnbmVkIGxvbmcpKG1hKSkKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pICAgIF9f bWZuX3RvX3BhZ2UobWZuKQo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSAgICAgX19wYWdlX3Rv X21mbihwZykKPiAgI2RlZmluZSBtYWRkcl90b19wYWdlKG1hKSAgIF9fbWFkZHJfdG9fcGFnZSht YSkKPiAgI2RlZmluZSBwYWdlX3RvX21hZGRyKHBnKSAgIF9fcGFnZV90b19tYWRkcihwZykKPiAg I2RlZmluZSB2aXJ0X3RvX3BhZ2UodmEpICAgIF9fdmlydF90b19wYWdlKHZhKQo+IEBAIC0yNzMs NyArMjcxLDcgQEAgdm9pZCBjb3B5X3BhZ2Vfc3NlMih2b2lkICosIGNvbnN0IHZvaWQgKik7Cj4g ICNkZWZpbmUgcGZuX3RvX3BhZGRyKHBmbikgICBfX3Bmbl90b19wYWRkcihwZm4pCj4gICNkZWZp bmUgcGFkZHJfdG9fcGZuKHBhKSAgICBfX3BhZGRyX3RvX3BmbihwYSkKPiAgI2RlZmluZSBwYWRk cl90b19wZHgocGEpICAgIHBmbl90b19wZHgocGFkZHJfdG9fcGZuKHBhKSkKPiAtI2RlZmluZSB2 bWFwX3RvX21mbih2YSkgICAgIGwxZV9nZXRfcGZuKCp2aXJ0X3RvX3hlbl9sMWUoKHVuc2lnbmVk Cj4gbG9uZykodmEpKSkKPiArI2RlZmluZSB2bWFwX3RvX21mbih2YSkKPiBfbWZuKGwxZV9nZXRf cGZuKCp2aXJ0X3RvX3hlbl9sMWUoKHVuc2lnbmVkIGxvbmcpKHZhKSkpKQo+ICAjZGVmaW5lIHZt YXBfdG9fcGFnZSh2YSkgICAgbWZuX3RvX3BhZ2Uodm1hcF90b19tZm4odmEpKQo+IAo+ICAjZW5k aWYgLyogIWRlZmluZWQoX19BU1NFTUJMWV9fKSAqLwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4vZG9tYWluX3BhZ2UuaAo+IGIveGVuL2luY2x1ZGUveGVuL2RvbWFpbl9wYWdlLmgKPiBp bmRleCA4OTBiYWU1YjljLi4zMjY2OWEzMzM5IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3hl bi9kb21haW5fcGFnZS5oCj4gKysrIGIveGVuL2luY2x1ZGUveGVuL2RvbWFpbl9wYWdlLmgKPiBA QCAtMzQsNyArMzQsNyBAQCB2b2lkIHVubWFwX2RvbWFpbl9wYWdlKGNvbnN0IHZvaWQgKnZhKTsK PiAgLyoKPiAgICogR2l2ZW4gYSBWQSBmcm9tIG1hcF9kb21haW5fcGFnZSgpLCByZXR1cm4gaXRz IHVuZGVybHlpbmcgTUZOLgo+ICAgKi8KPiAtdW5zaWduZWQgbG9uZyBkb21haW5fcGFnZV9tYXBf dG9fbWZuKGNvbnN0IHZvaWQgKnZhKTsKPiArbWZuX3QgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihj b25zdCB2b2lkICp2YSk7Cj4gCj4gIC8qCj4gICAqIFNpbWlsYXIgdG8gdGhlIGFib3ZlIGNhbGxz LCBleGNlcHQgdGhlIG1hcHBpbmcgaXMgYWNjZXNzaWJsZSBpbiBhbGwKPiBAQCAtNDQsMTEgKzQ0 LDExIEBAIHVuc2lnbmVkIGxvbmcgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdCB2b2lkCj4g KnZhKTsKPiAgdm9pZCAqbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChtZm5fdCBtZm4pOwo+ICB2b2lk IHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbChjb25zdCB2b2lkICp2YSk7Cj4gCj4gLSNkZWZpbmUg X19tYXBfZG9tYWluX3BhZ2UocGcpCj4gbWFwX2RvbWFpbl9wYWdlKF9tZm4oX19wYWdlX3RvX21m bihwZykpKQo+ICsjZGVmaW5lIF9fbWFwX2RvbWFpbl9wYWdlKHBnKQo+IG1hcF9kb21haW5fcGFn ZShwYWdlX3RvX21mbihwZykpCj4gCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCAqX19tYXBfZG9tYWlu X3BhZ2VfZ2xvYmFsKGNvbnN0IHN0cnVjdCBwYWdlX2luZm8gKnBnKQo+ICB7Cj4gLSAgICByZXR1 cm4gbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChfbWZuKF9fcGFnZV90b19tZm4ocGcpKSk7Cj4gKyAg ICByZXR1cm4gbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChwYWdlX3RvX21mbihwZykpOwo+ICB9Cj4g Cj4gICNlbHNlIC8qICFDT05GSUdfRE9NQUlOX1BBR0UgKi8KPiBAQCAtNTYsNyArNTYsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgKl9fbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChjb25zdAo+IHN0cnVj dCBwYWdlX2luZm8gKnBnKQo+ICAjZGVmaW5lIG1hcF9kb21haW5fcGFnZShtZm4pICAgICAgICAg ICAgICAgIF9fbWZuX3RvX3ZpcnQobWZuX3gobWZuKSkKPiAgI2RlZmluZSBfX21hcF9kb21haW5f cGFnZShwZykgICAgICAgICAgICAgICBwYWdlX3RvX3ZpcnQocGcpCj4gICNkZWZpbmUgdW5tYXBf ZG9tYWluX3BhZ2UodmEpICAgICAgICAgICAgICAgKCh2b2lkKSh2YSkpCj4gLSNkZWZpbmUgZG9t YWluX3BhZ2VfbWFwX3RvX21mbih2YSkgICAgICAgICAgdmlydF90b19tZm4oKHVuc2lnbmVkCj4g bG9uZykodmEpKQo+ICsjZGVmaW5lIGRvbWFpbl9wYWdlX21hcF90b19tZm4odmEpICAgICAgICAg IF9tZm4odmlydF90b19tZm4oKHVuc2lnbmVkCj4gbG9uZykodmEpKSkKPiAKPiAgc3RhdGljIGlu bGluZSB2b2lkICptYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKG1mbl90IG1mbikKPiAgewo+IGRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vbW0uaCBiL3hlbi9pbmNsdWRlL3hlbi9tbS5oCj4gaW5k ZXggY2FhZDA2ZTc1My4uMjA0ZGQ5YzQ4ZCAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4v bW0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9tbS5oCj4gQEAgLTI3NywxMyArMjc3LDggQEAg c3RydWN0IHBhZ2VfbGlzdF9oZWFkCj4gICMgZGVmaW5lIFBBR0VfTElTVF9OVUxMICgodHlwZW9m KCgoc3RydWN0IHBhZ2VfaW5mbyl7fSkubGlzdC5uZXh0KSl+MCkKPiAKPiAgIyBpZiAhZGVmaW5l ZChwZHhfdG9fcGFnZSkgJiYgIWRlZmluZWQocGFnZV90b19wZHgpCj4gLSMgIGlmIGRlZmluZWQo X19wYWdlX3RvX21mbikgfHwgZGVmaW5lZChfX21mbl90b19wYWdlKQo+IC0jICAgZGVmaW5lIHBh Z2VfdG9fcGR4IF9fcGFnZV90b19tZm4KPiAtIyAgIGRlZmluZSBwZHhfdG9fcGFnZSBfX21mbl90 b19wYWdlCj4gLSMgIGVsc2UKPiAgIyAgIGRlZmluZSBwYWdlX3RvX3BkeCBwYWdlX3RvX21mbgo+ ICAjICAgZGVmaW5lIHBkeF90b19wYWdlIG1mbl90b19wYWdlCj4gLSMgIGVuZGlmCj4gICMgZW5k aWYKPiAKPiAgIyBkZWZpbmUgUEFHRV9MSVNUX0hFQURfSU5JVChuYW1lKSB7IE5VTEwsIE5VTEwg fQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaCBiL3hlbi9pbmNsdWRl L3hlbi90bWVtX3hlbi5oCj4gaW5kZXggNTQyYzBiM2YyMC4uODUxNmEwYjEzMSAxMDA2NDQKPiAt LS0gYS94ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi90 bWVtX3hlbi5oCj4gQEAgLTI1LDcgKzI1LDcgQEAKPiAgdHlwZWRlZiB1aW50MzJfdCBwYWdlc2l6 ZV90OyAgLyogbGlrZSBzaXplX3QsIG11c3QgaGFuZGxlIGxhcmdlc3QgUEFHRV9TSVpFCj4gKi8K PiAKPiAgI2RlZmluZSBJU19QQUdFX0FMSUdORUQoYWRkcikgSVNfQUxJR05FRCgodW5zaWduZWQg bG9uZykoYWRkciksCj4gUEFHRV9TSVpFKQo+IC0jZGVmaW5lIElTX1ZBTElEX1BBR0UoX3BpKSAg ICBtZm5fdmFsaWQoX21mbihwYWdlX3RvX21mbihfcGkpKSkKPiArI2RlZmluZSBJU19WQUxJRF9Q QUdFKF9waSkgICAgbWZuX3ZhbGlkKHBhZ2VfdG9fbWZuKF9waSkpCj4gCj4gIGV4dGVybiBzdHJ1 Y3QgcGFnZV9saXN0X2hlYWQgdG1lbV9wYWdlX2xpc3Q7Cj4gIGV4dGVybiBzcGlubG9ja190IHRt ZW1fcGFnZV9saXN0X2xvY2s7Cj4gLS0KPiAyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt YW4vbGlzdGluZm8veGVuLWRldmVs