From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gordan Bobic Subject: Re: =?utf-8?q?HVM_support_for_e820=5Fhost_=28Was=3A_Bug?= =?utf-8?q?=3A_Limitation_of_=3C=3D2GB_RAM_in_domU_persists_with_4=2E3=2E0?= =?utf-8?q?=29?= Date: Thu, 05 Sep 2013 11:00:40 +0100 Message-ID: <16a38256c7066dec234d64854a4f192f@mail.shatteredsilicon.net> References: "\"\\\"<1374798084.10269.2.camel@hastur.hellion.org.uk> <20130729180431.GQ5848@phenom.dumpdata.com> \" <20130903145934.GC1487@konrad-lan.dumpdata.com>\" <52263CBD.1090402@bobich.net> \"\\\"<52264826.3010402@bobich.net> <20130903210833.GB13777@phenom.dumpdata.com>\" \" " <20130905020442.GA2459@phenom.dumpdata.com> <767df7cabb6b0f7198e98a4f034948a7@mail.shatteredsilicon.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <767df7cabb6b0f7198e98a4f034948a7@mail.shatteredsilicon.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Konrad Rzeszutek Wilk Cc: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org IE9uIFRodSwgMDUgU2VwIDIwMTMgMTA6NDE6MDkgKzAxMDAsIEdvcmRhbiBCb2JpYyA8Z29yZGFu QGJvYmljaC5uZXQ+IAogd3JvdGU6Cj4gSG1tLi4uCj4KPiBnY2MgLU8yIC1mb21pdC1mcmFtZS1w b2ludGVyIC1tNjQgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXN0ZD1nbnU5OQo+IC1XYWxsIC1Xc3Ry aWN0LXByb3RvdHlwZXMgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQKPiAtV25vLXVudXNl ZC1idXQtc2V0LXZhcmlhYmxlICAgLUROREVCVUcgLWZuby1idWlsdGluIC1mbm8tY29tbW9uCj4g LVdyZWR1bmRhbnQtZGVjbHMgLWl3aXRocHJlZml4IGluY2x1ZGUgLVdlcnJvciAtV25vLXBvaW50 ZXItYXJpdGgKPiAtcGlwZSAtSS9yb290L3JwbWJ1aWxkL0JVSUxEL3hlbi00LjMuMC94ZW4vaW5j bHVkZQo+IC1JL3Jvb3QvcnBtYnVpbGQvQlVJTEQveGVuLTQuMy4wL3hlbi9pbmNsdWRlL2FzbS14 ODYvbWFjaC1nZW5lcmljCj4gLUkvcm9vdC9ycG1idWlsZC9CVUlMRC94ZW4tNC4zLjAveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9tYWNoLWRlZmF1bHQKPiAtbXNvZnQtZmxvYXQgLWZuby1zdGFjay1wcm90 ZWN0b3IgLWZuby1leGNlcHRpb25zIC1XbmVzdGVkLWV4dGVybnMKPiAtbW5vLXJlZC16b25lIC1t bm8tc3NlIC1mcGljIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMKPiAtREdDQ19IQVNf VklTSUJJTElUWV9BVFRSSUJVVEUgLW5vc3RkaW5jIC1nIC1EX19YRU5fXyAtaW5jbHVkZQo+IC9y b290L3JwbWJ1aWxkL0JVSUxEL3hlbi00LjMuMC94ZW4vaW5jbHVkZS94ZW4vY29uZmlnLmggLURI QVNfQUNQSQo+IC1ESEFTX0dEQlNYIC1ESEFTX1BBU1NUSFJPVUdIIC1NTUQgLU1GIC5kZWJ1Zy5v LmQgLWMgZGVidWcuYyAtbwo+IGRlYnVnLm8KPiBnY2MgLU8yIC1mb21pdC1mcmFtZS1wb2ludGVy IC1tNjQgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXN0ZD1nbnU5OQo+IC1XYWxsIC1Xc3RyaWN0LXBy b3RvdHlwZXMgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQKPiAtV25vLXVudXNlZC1idXQt c2V0LXZhcmlhYmxlICAgLUROREVCVUcgLWZuby1idWlsdGluIC1mbm8tY29tbW9uCj4gLVdyZWR1 bmRhbnQtZGVjbHMgLWl3aXRocHJlZml4IGluY2x1ZGUgLVdlcnJvciAtV25vLXBvaW50ZXItYXJp dGgKPiAtcGlwZSAtSS9yb290L3JwbWJ1aWxkL0JVSUxEL3hlbi00LjMuMC94ZW4vaW5jbHVkZQo+ IC1JL3Jvb3QvcnBtYnVpbGQvQlVJTEQveGVuLTQuMy4wL3hlbi9pbmNsdWRlL2FzbS14ODYvbWFj aC1nZW5lcmljCj4gLUkvcm9vdC9ycG1idWlsZC9CVUlMRC94ZW4tNC4zLjAveGVuL2luY2x1ZGUv YXNtLXg4Ni9tYWNoLWRlZmF1bHQKPiAtbXNvZnQtZmxvYXQgLWZuby1zdGFjay1wcm90ZWN0b3Ig LWZuby1leGNlcHRpb25zIC1XbmVzdGVkLWV4dGVybnMKPiAtbW5vLXJlZC16b25lIC1tbm8tc3Nl IC1mcGljIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMKPiAtREdDQ19IQVNfVklTSUJJ TElUWV9BVFRSSUJVVEUgLW5vc3RkaW5jIC1nIC1EX19YRU5fXyAtaW5jbHVkZQo+IC9yb290L3Jw bWJ1aWxkL0JVSUxEL3hlbi00LjMuMC94ZW4vaW5jbHVkZS94ZW4vY29uZmlnLmggLURIQVNfQUNQ SQo+IC1ESEFTX0dEQlNYIC1ESEFTX1BBU1NUSFJPVUdIIC1NTUQgLU1GIC5kb21haW4uby5kIC1j IGRvbWFpbi5jIC1vCj4gZG9tYWluLm8KPiBkb21haW4uYzogSW4gZnVuY3Rpb24g4oCYYXJjaF9k b21haW5fZGVzdHJveeKAmToKPiBkb21haW4uYzo1OTU6IGVycm9yOiDigJhzdHJ1Y3QgcHZfZG9t YWlu4oCZIGhhcyBubyBtZW1iZXIgbmFtZWQg4oCYZTgyMOKAmQo+IG1ha2VbNF06ICoqKiBbZG9t YWluLm9dIEVycm9yIDEKPgo+IEl0IHdvdWxkIHNlZW0geW91IG9taXR0ZWQgdGhpcyBibG9jayBm cm9tIHRoZSBvcmlnaW5hbCBwYXRjaDoKPgo+ID09PQo+IEBAIC01OTIsOCArNTkyLDggQEAgdm9p ZCBhcmNoX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCj4gIHsKPiAgICAgIGlmICgg aXNfaHZtX2RvbWFpbihkKSApCj4gICAgICAgICAgaHZtX2RvbWFpbl9kZXN0cm95KGQpOwo+IC0g ICAgZWxzZQo+IC0gICAgICAgIHhmcmVlKGQtPmFyY2gucHZfZG9tYWluLmU4MjApOwo+ICsKPiAr ICAgIHhmcmVlKGQtPmFyY2guZTgyMCk7Cj4KPiAgICAgIGZyZWVfZG9tYWluX3BpcnFzKGQpOwo+ ICAgICAgaWYgKCAhaXNfaWRsZV9kb21haW4oZCkgKQo+ID09PQo+Cj4gV2FzIHRoYXQgaW50ZW50 aW9uYWw/IERvZXMgdGhhdCBibG9jayBsb29rIE9LIHRvIHlvdT8gU2hvdWxkIEkgcmUtYWRkIAo+ IGl0PwoKIEp1c3QgdG8gY2xhcmlmeSAtIHJlLWFkZGluZyB0aGlzIGJsb2NrIGZpeGVzIHRoZSBi dWlsZCBpc3N1ZS4KIFdpbGwgdGVzdCB0b25pZ2h0IHdoZXRoZXIgaXQgcnVucy4gV2hhdCBJIHJl YWxseSB3YW50ZWQgdG8KIGtub3cgaXMgd2hldGhlciB0aGlzIGlzIHRoZSBjb3JyZWN0IHdheSB0 byBoYW5kbGUgdGhlIGNsZWFudXAKIGluIHRoaXMgY2FzZS4KCiBHb3JkYW4KCj4gT24gV2VkLCA0 IFNlcCAyMDEzIDIyOjA0OjQyIC0wNDAwLCBLb25yYWQgUnplc3p1dGVrIFdpbGsKPiA8a29ucmFk LndpbGtAb3JhY2xlLmNvbT4gd3JvdGU6Cj4+IE9uIFdlZCwgU2VwIDA0LCAyMDEzIGF0IDAyOjEx OjA2UE0gKzAxMDAsIEdvcmRhbiBCb2JpYyB3cm90ZToKPj4+IEkgaGF2ZSB0aGlzIGF0IHRoZSBw b2ludCB3aGVyZSBpdCBhY3R1YWxseSBidWlsZHMuCj4+PiBPdGhlcndpc2UgY29tcGxldGVseSB1 bnRlc3RlZCAod2lsbCBkbyB0aGF0IGxhdGVyIHRvZGF5KS4KPj4+Cj4+PiBBdHRhY2hlZCBhcmU6 Cj4+Pgo+Pj4gMSkgbGlieGwgcGF0Y2gKPj4+IE1vZGlmaWVkIGZyb20gdGhlIG9yaWdpbmFsIHBh dGNoIHRvIF9ub3RfIGltcGxpY2l0bHkgZW5hYmxlCj4+PiBlODIwX2hvc3Qgd2hlbiBQQ0kgZGV2 aWNlcyBhcmUgcGFzc2VkLgo+Pj4KPj4+IDIpIE11a2VzaCdzIGh5cGVydmlzb3IgZTgyMCBwYXRj aCBmcm9tIGhlcmU6Cj4+PiBodHRwOi8vbGlzdHMueGVuLm9yZy9hcmNoaXZlcy9odG1sL3hlbi1k ZXZlbC8yMDEzLTA1L21zZzAxNjAzLmh0bWwKPj4+IE1vZGlmaWVkIHNsaWdodGx5IHRvIGF0dGVt cHQgdG8gYWRkcmVzcyBKYW4ncyBjb21tZW50IG9uIHRoZSBzYW1lCj4+PiB0aHJlYWQsIGFuZCB0 byBhZGp1c3QgdGhlIGRpZmYgbGluZSBwb2ludGVycyB0byBtYXRjaCBhZ2FpbnN0Cj4+PiA0LjMu MCByZWxlYXNlIGNvZGUuCj4+Cj4+IEkgdGhpbmsgdGhhdCB3YXMgdGhlIG9sZCB2ZXJzaW9uLiBJ IHNwb3R0ZWQgYSBidWcgaW4gaXQgdGhhdAo+PiB3YXMgY2F1c2luZyBhIGhhbmcuIEFuZCBhbHNv IHRoZSBvbmUgdGhhdCBleHBsYWlucyB3aHkgbGlieGwKPj4gd291bGQgcmVmdXNlIHRvIHNldHVw IHRoZSBFODIwLgo+Pgo+PiBUaGUgcHJvYmxlbSB3YXMgdGhhdCBpbiB0aGUgWEVOTUVNX3NldF9t ZW1vcnlfbWFwIHRoZXJlIHdhcwo+PiBhIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBndWVz dCBsYXVuY2hlZCB3YXMgbm90IEhWTS4KPj4KPj4gQWxzbyB0aGVyZSB3YXMgYnVnIGluIHRoZSBp bml0aWFsIGRvbWFpbiBjcmVhdGlvbiB3aGVyZQo+PiB0aGUgc3BpbmxvY2sgd2FzIG9ubHkgc2V0 IGZvciBQViBhbmQgbm90IGZvciBIVk0uCj4+Cj4+Pgo+Pj4gMykgQSBwYXRjaCBiYXNlZCBvbiBL b25yYWQncyBlYXJsaWVyIGluIHRoaXMgdGhyZWFkLCB3aXRoCj4+PiBhIGZldyBhZGRpdGlvbnMg YW5kIGNoYW5nZXMgdG8gbWFrZSBpdCBhbGwgY29tcGlsZS4KPj4+Cj4+PiBTb21lIHBlZXIgcmV2 aWV3IHdvdWxkIGJlIG1vc3Qgd2VsY29tZSAtIHRoaXMgaXMgbXkgZmlyc3QKPj4+IHZlbnR1cmUg aW50byBYZW4gY29kZSwgc28gcGxlYXNlIGRvIGFzc3VtZSB0aGF0IEkgaGF2ZQo+Pj4gbm8gaWRl YSB3aGF0IEknbSBkb2luZyBhdCB0aGUgbW9tZW50LiA6KQo+Pj4KPj4+IEkgYWRkZWQgeWV0IGFu b3RoZXIgRTgyME1BWCAjZGVmaW5lLCB0aGlzIHRpbWUgdG8KPj4+IHRvb2xzL2Zpcm13YXJlL2h2 bWxvYWRlci9lODIwLmgKPj4+Cj4+PiBJZiB0aGVyZSBpcyBhIGJldHRlciBwbGFjZSB0byAjaW5j bHVkZSB0aGF0IHZpYSBmcm9tCj4+PiBlODIwLmMsIHBsZWFzZSBwb2ludCBtZSBpbiB0aGUgcmln aHQgZGlyZWN0aW9uLgo+Pgo+PiBJIHRoaW5rIEkgc2F3IHRoYXQgI2RlZmluZSBpbiB0b29scy9s aWJ4Yy94ZW5jdHJsLmguIEJ1dCBzaW5jZQo+PiB0aGUgdG9vbHMvZmlybXdhcmUgY2Fubm90IGxp bmsgdG8gdGhlIGxpYnhjIChiL2MgaXQgaXMgYSAKPj4gTWluaWNvbnRhaW5lZAo+PiBPUykgSSBi ZWxpZXZlIGp1c3QgaGF2aW5nIHRoZSAjZGVmaW5lIGluIGh2bWxvYWRlci9lODIwLmggaXMKPj4g dGhlIHJpZ2h0IGNhbGwuCj4+Cj4+IEdvb2QgZmlyc3QgcGFzcy4gSSBhbHRlcmVkIGl0IGEgYml0 IGFuZCBnb3QgaW4gdGhlIEhWTSBndWVzdAo+PiB0aGUgRTgyMCBlbnRyaWVzIHByaW50ZWQgb3V0 LiBIZXJlIGlzIGEgYmlnIGdpYW50IGRpZmY6Cj4+Cj4+IGRpZmYgLS1naXQgYS90b29scy9maXJt d2FyZS9odm1sb2FkZXIvZTgyMC5jCj4+IGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2U4MjAu Ywo+PiBpbmRleCAyZTA1ZTkzLi4zYzgwMjQxIDEwMDY0NAo+PiAtLS0gYS90b29scy9maXJtd2Fy ZS9odm1sb2FkZXIvZTgyMC5jCj4+ICsrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9lODIw LmMKPj4gQEAgLTIyLDYgKzIyLDkgQEAKPj4KPj4gICNpbmNsdWRlICJjb25maWcuaCIKPj4gICNp bmNsdWRlICJ1dGlsLmgiCj4+ICsjaW5jbHVkZSAiaHlwZXJjYWxsLmgiCj4+ICsjaW5jbHVkZSA8 eGVuL21lbW9yeS5oPgo+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+Cj4+ICB2b2lkIGR1bXBfZTgy MF90YWJsZShzdHJ1Y3QgZTgyMGVudHJ5ICplODIwLCB1bnNpZ25lZCBpbnQgbnIpCj4+ICB7Cj4+ IEBAIC03NCwxMCArNzcsMjAgQEAgaW50IGJ1aWxkX2U4MjBfdGFibGUoc3RydWN0IGU4MjBlbnRy eSAqZTgyMCwKPj4gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaW9zX2ltYWdl X2Jhc2UpCj4+ICB7Cj4+ICAgICAgdW5zaWduZWQgaW50IG5yID0gMDsKPj4gKyAgICBzdHJ1Y3Qg eGVuX21lbW9yeV9tYXAgb3A7Cj4+ICsgICAgc3RydWN0IGU4MjBlbnRyeSBtYXBbRTgyME1BWF07 Cj4+ICsgICAgaW50IHJjOwo+Pgo+PiAgICAgIGlmICggIWxvd21lbV9yZXNlcnZlZF9iYXNlICkK Pj4gICAgICAgICAgICAgIGxvd21lbV9yZXNlcnZlZF9iYXNlID0gMHhBMDAwMDsKPj4KPj4gKyAg ICBzZXRfeGVuX2d1ZXN0X2hhbmRsZShvcC5idWZmZXIsIG1hcCk7Cj4+ICsKPj4gKyAgICByYyA9 IGh5cGVyY2FsbF9tZW1vcnlfb3AgKCBYRU5NRU1fbWVtb3J5X21hcCwgJm9wKTsKPj4gKyAgICBp ZiAoIHJjICE9IC1FTk9TWVMpIHsgLyogSXQgd29ya3MhPyAqLwo+PiArICAgICAgICBwcmludGYo IiVzOiVkIGdvdCAlZCBvcC5ucl9lbnRyaWVzIFxuIiwgX19mdW5jX18sIF9fTElORV9fLAo+PiBv cC5ucl9lbnRyaWVzKTsKPj4gKyAgICAgICAgZHVtcF9lODIwX3RhYmxlKCZtYXBbMF0sIG9wLm5y X2VudHJpZXMpOwo+PiArICAgIH0KPj4gICAgICAvKiBMb3dtZW0gbXVzdCBiZSBhdCBsZWFzdCA1 MTJLIHRvIGtlZXAgV2luZG93cyBoYXBweSkgKi8KPj4gICAgICBBU1NFUlQgKCBsb3dtZW1fcmVz ZXJ2ZWRfYmFzZSA+IDUxMjw8MTAgKTsKPj4KPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJl L2h2bWxvYWRlci9lODIwLmgKPj4gYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvZTgyMC5oCj4+ IGluZGV4IGIyZWFkN2YuLjJmYTcwMGQgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2 bWxvYWRlci9lODIwLmgKPj4gKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2U4MjAuaAo+ PiBAQCAtOCw2ICs4LDkgQEAKPj4gICNkZWZpbmUgRTgyMF9SRVNFUlZFRCAgICAgMgo+PiAgI2Rl ZmluZSBFODIwX0FDUEkgICAgICAgICAzCj4+ICAjZGVmaW5lIEU4MjBfTlZTICAgICAgICAgIDQK Pj4gKyNkZWZpbmUgRTgyMF9VTlVTQUJMRSAgICAgNQo+PiArCj4+ICsjZGVmaW5lIEU4MjBNQVgg ICAgICAgICAxMjgKPj4KPj4gIHN0cnVjdCBlODIwZW50cnkgewo+PiAgICAgIHVpbnQ2NF90IGFk ZHI7Cj4+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xp YnhsL2xpYnhsX2NyZWF0ZS5jCj4+IGluZGV4IDBjMzJkMGIuLmQ4ZTIzNDYgMTAwNjQ0Cj4+IC0t LSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCj4+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs X2NyZWF0ZS5jCj4+IEBAIC0yMDgsNiArMjA4LDggQEAgaW50IAo+PiBsaWJ4bF9fZG9tYWluX2J1 aWxkX2luZm9fc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLAo+Pgo+PiAgICAgIGxpYnhsX2RlZmJv b2xfc2V0ZGVmYXVsdCgmYl9pbmZvLT5kaXNhYmxlX21pZ3JhdGUsIGZhbHNlKTsKPj4KPj4gKyAg ICBsaWJ4bF9kZWZib29sX3NldGRlZmF1bHQoJmJfaW5mby0+ZTgyMF9ob3N0LCBmYWxzZSk7Cj4+ ICsKPj4gICAgICBzd2l0Y2ggKGJfaW5mby0+dHlwZSkgewo+PiAgICAgIGNhc2UgTElCWExfRE9N QUlOX1RZUEVfSFZNOgo+PiAgICAgICAgICBpZiAoYl9pbmZvLT5zaGFkb3dfbWVta2IgPT0gTElC WExfTUVNS0JfREVGQVVMVCkKPj4gQEAgLTI4MCw3ICsyODIsNiBAQCBpbnQgCj4+IGxpYnhsX19k b21haW5fYnVpbGRfaW5mb19zZXRkZWZhdWx0KGxpYnhsX19nYyAqZ2MsCj4+Cj4+ICAgICAgICAg IGJyZWFrOwo+PiAgICAgIGNhc2UgTElCWExfRE9NQUlOX1RZUEVfUFY6Cj4+IC0gICAgICAgIGxp YnhsX2RlZmJvb2xfc2V0ZGVmYXVsdCgmYl9pbmZvLT51LnB2LmU4MjBfaG9zdCwgZmFsc2UpOwo+ PiAgICAgICAgICBpZiAoYl9pbmZvLT5zaGFkb3dfbWVta2IgPT0gTElCWExfTUVNS0JfREVGQVVM VCkKPj4gICAgICAgICAgICAgIGJfaW5mby0+c2hhZG93X21lbWtiID0gMDsKPj4gICAgICAgICAg aWYgKGJfaW5mby0+dS5wdi5zbGFja19tZW1rYiA9PSBMSUJYTF9NRU1LQl9ERUZBVUxUKQo+PiBk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsIAo+PiBiL3Rvb2xzL2xpYnhs L2xpYnhsX3R5cGVzLmlkbAo+PiBpbmRleCA4NTM0MWEwLi5mZDYzODlhIDEwMDY0NAo+PiAtLS0g YS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKPj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxf dHlwZXMuaWRsCj4+IEBAIC0yOTksNiArMjk5LDggQEAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8g PSAKPj4gU3RydWN0KCJkb21haW5fYnVpbGRfaW5mbyIsWwo+PiAgICAgICgiaXJxcyIsICAgICAg ICAgICAgIEFycmF5KHVpbnQzMiwgIm51bV9pcnFzIikpLAo+PiAgICAgICgiaW9tZW0iLCAgICAg ICAgICAgIEFycmF5KGxpYnhsX2lvbWVtX3JhbmdlLCAibnVtX2lvbWVtIikpLAo+PiAgICAgICgi Y2xhaW1fbW9kZSIsCSAgICAgbGlieGxfZGVmYm9vbCksCj4+ICsgICAgIyBVc2UgaG9zdCdzIEU4 MjAgZm9yIFBDSSBwYXNzdGhyb3VnaC4KPj4gKyAgICAoImU4MjBfaG9zdCIsICAgICAgICBsaWJ4 bF9kZWZib29sKSwKPj4gICAgICAoInUiLCBLZXllZFVuaW9uKE5vbmUsIGxpYnhsX2RvbWFpbl90 eXBlLCAidHlwZSIsCj4+ICAgICAgICAgICAgICAgICAgWygiaHZtIiwgU3RydWN0KE5vbmUsIFso ImZpcm13YXJlIiwgICAgICAgICAKPj4gc3RyaW5nKSwKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgiYmlvcyIsCj4+IGxpYnhsX2Jpb3NfdHlwZSksCj4+IEBAIC0z NDUsOCArMzQ3LDYgQEAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gPSAKPj4gU3RydWN0KCJkb21h aW5fYnVpbGRfaW5mbyIsWwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoImNtZGxpbmUiLCBzdHJpbmcpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoInJhbWRpc2siLCBzdHJpbmcpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoImZlYXR1cmVzIiwgc3RyaW5nLCAKPj4geydjb25zdCc6IFRydWV9KSwK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgaG9zdCdzIEU4 MjAgZm9yIFBDSSAKPj4gcGFzc3Rocm91Z2guCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgiZTgyMF9ob3N0IiwgbGlieGxfZGVmYm9vbCksCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSwKPj4gICAgICAgICAgICAgICAgICAgKCJp bnZhbGlkIiwgU3RydWN0KE5vbmUsIFtdKSksCj4+ICAgICAgICAgICAgICAgICAgIF0sIGtleXZh cl9pbml0X3ZhbCA9IAo+PiAiTElCWExfRE9NQUlOX1RZUEVfSU5WQUxJRCIpKSwKPj4gZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMK Pj4gaW5kZXggYTc4YzkxZC4uOTQ1MTVhNSAxMDA2NDQKPj4gLS0tIGEvdG9vbHMvbGlieGwvbGli eGxfeDg2LmMKPj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMKPj4gQEAgLTIxNiwyOCAr MjE2LDQxIEBAIHN0YXRpYyBpbnQgbGlieGxfX2U4MjBfYWxsb2MobGlieGxfX2djICpnYywKPj4g dWludDMyX3QgZG9taWQsCj4+ICAgICAgc3RydWN0IGU4MjBlbnRyeSBtYXBbRTgyME1BWF07Cj4+ ICAgICAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmJfaW5mbzsKPj4KPj4gLSAgICBpZiAoZF9j b25maWcgPT0gTlVMTCB8fCBkX2NvbmZpZy0+Y19pbmZvLnR5cGUgPT0gCj4+IExJQlhMX0RPTUFJ Tl9UWVBFX0hWTSkKPj4gLSAgICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOwo+PiAtCj4+ICAgICAg Yl9pbmZvID0gJmRfY29uZmlnLT5iX2luZm87Cj4+IC0gICAgaWYgKCFsaWJ4bF9kZWZib29sX3Zh bChiX2luZm8tPnUucHYuZTgyMF9ob3N0KSkKPj4gKyAgICBpZiAoIWxpYnhsX2RlZmJvb2xfdmFs KGJfaW5mby0+ZTgyMF9ob3N0KSkgewo+PiArICAgICAgICBMSUJYTF9fTE9HX0VSUk5PKGN0eCwg TElCWExfX0xPR19FUlJPUiwgIiVzOiVkLiIsX19mdW5jX18sCj4+IF9fTElORV9fKTsKPj4gICAg ICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOwo+PiAtCj4+ICsgICAgfQo+PiAgICAgIHJjID0geGNf Z2V0X21hY2hpbmVfbWVtb3J5X21hcChjdHgtPnhjaCwgbWFwLCBFODIwTUFYKTsKPj4gICAgICBp ZiAocmMgPCAwKSB7Cj4+ICsgICAgICAgIExJQlhMX19MT0dfRVJSTk8oY3R4LCBMSUJYTF9fTE9H X0VSUk9SLCAiJXM6JWQuIixfX2Z1bmNfXywKPj4gX19MSU5FX18pOwo+PiAgICAgICAgICBlcnJu byA9IHJjOwo+PiAgICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKPj4gICAgICB9Cj4+ICAgICAg bnIgPSByYzsKPj4gLSAgICByYyA9IGU4MjBfc2FuaXRpemUoY3R4LCBtYXAsICZuciwgYl9pbmZv LT50YXJnZXRfbWVta2IsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIChiX2luZm8tPm1heF9t ZW1rYiAtIGJfaW5mby0+dGFyZ2V0X21lbWtiKSArCj4+IC0gICAgICAgICAgICAgICAgICAgICAg IGJfaW5mby0+dS5wdi5zbGFja19tZW1rYik7Cj4+ICsgICAgTElCWExfX0xPR19FUlJOTyhjdHgs IExJQlhMX19MT0dfRVJST1IsICIlczolZC5ucjolZCIsX19mdW5jX18sCj4+IF9fTElORV9fLCBu cik7Cj4+ICsgICAgaWYgKGRfY29uZmlnID09IE5VTEwgfHwgZF9jb25maWctPmNfaW5mby50eXBl ID09Cj4+IExJQlhMX0RPTUFJTl9UWVBFX0hWTSkgewo+PiArICAgICAgICByYyA9IGU4MjBfc2Fu aXRpemUoY3R4LCBtYXAsICZuciwgYl9pbmZvLT50YXJnZXRfbWVta2IsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYl9pbmZvLT5tYXhfbWVta2IgLSAKPj4gYl9pbmZvLT50YXJnZXRf bWVta2IpKTsKPj4gKyAgICAgICAgTElCWExfX0xPR19FUlJOTyhjdHgsIExJQlhMX19MT0dfRVJS T1IsCj4+ICIlczolZC5yYyVkIixfX2Z1bmNfXywgX19MSU5FX18sIHJjKTsKPj4gKyAgICB9IGVs c2UgaWYgKGRfY29uZmlnLT5jX2luZm8udHlwZSA9PSBMSUJYTF9ET01BSU5fVFlQRV9QVikgewo+ PiArICAgICAgICByYyA9IGU4MjBfc2FuaXRpemUoY3R4LCBtYXAsICZuciwgYl9pbmZvLT50YXJn ZXRfbWVta2IsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAoYl9pbmZvLT5tYXhfbWVt a2IgLSAKPj4gYl9pbmZvLT50YXJnZXRfbWVta2IpICsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJfaW5mby0+dS5wdi5zbGFja19tZW1rYik7Cj4+ICsgICAgICAgIExJQlhMX19MT0df RVJSTk8oY3R4LCBMSUJYTF9fTE9HX0VSUk9SLAo+PiAiJXM6JWQucmMlZCIsX19mdW5jX18sIF9f TElORV9fLCByYyk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgICAgIExJQlhMX19MT0dfRVJSTk8o Y3R4LCBMSUJYTF9fTE9HX0VSUk9SLAo+PiAiJXM6JWQucmMlZCIsX19mdW5jX18sIF9fTElORV9f LCByYyk7Cj4+ICAgICAgaWYgKHJjKQo+PiAgICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKPj4K Pj4gKyAgICAgICAgTElCWExfX0xPR19FUlJOTyhjdHgsIExJQlhMX19MT0dfRVJST1IsICIlczol ZC5yYyVkLAo+PiBucjolZCIsX19mdW5jX18sIF9fTElORV9fLCByYywgbnIpOwo+PiArCj4+ICAg ICAgcmMgPSB4Y19kb21haW5fc2V0X21lbW9yeV9tYXAoY3R4LT54Y2gsIGRvbWlkLCBtYXAsIG5y KTsKPj4KPj4gKyAgICAgICAgTElCWExfX0xPR19FUlJOTyhjdHgsIExJQlhMX19MT0dfRVJST1Is Cj4+ICIlczolZC5yYyVkIixfX2Z1bmNfXywgX19MSU5FX18sIHJjKTsKPj4gICAgICBpZiAocmMg PCAwKSB7Cj4+ICsgICAgICAgIExJQlhMX19MT0dfRVJSTk8oY3R4LCBMSUJYTF9fTE9HX0VSUk9S LAo+PiAiJXM6JWQucmMlZCIsX19mdW5jX18sIF9fTElORV9fLCByYyk7Cj4+ICAgICAgICAgIGVy cm5vICA9IHJjOwo+PiAgICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKPj4gICAgICB9Cj4+IEBA IC0yOTYsOCArMzA5LDcgQEAgaW50IGxpYnhsX19hcmNoX2RvbWFpbl9jcmVhdGUobGlieGxfX2dj ICpnYywKPj4gbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCj4+ICAgICAgICAgIHhjX3No YWRvd19jb250cm9sKGN0eC0+eGNoLCBkb21pZCwKPj4gWEVOX0RPTUNUTF9TSEFET1dfT1BfU0VU X0FMTE9DQVRJT04sIE5VTEwsIDAsICZzaGFkb3csIDAsIE5VTEwpOwo+PiAgICAgIH0KPj4KPj4g LSAgICBpZiAoZF9jb25maWctPmNfaW5mby50eXBlID09IExJQlhMX0RPTUFJTl9UWVBFX1BWICYm Cj4+IC0gICAgICAgICAgICBsaWJ4bF9kZWZib29sX3ZhbChkX2NvbmZpZy0+Yl9pbmZvLnUucHYu ZTgyMF9ob3N0KSkgewo+PiArICAgIGlmIChsaWJ4bF9kZWZib29sX3ZhbChkX2NvbmZpZy0+Yl9p bmZvLmU4MjBfaG9zdCkpIHsKPj4gICAgICAgICAgcmV0ID0gbGlieGxfX2U4MjBfYWxsb2MoZ2Ms IGRvbWlkLCBkX2NvbmZpZyk7Cj4+ICAgICAgICAgIGlmIChyZXQpIHsKPj4gICAgICAgICAgICAg IExJQlhMX19MT0dfRVJSTk8oZ2MtPm93bmVyLCBMSUJYTF9fTE9HX0VSUk9SLAo+PiBkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5j Cj4+IGluZGV4IGVkOTk2MjIuLmQ5OGNhMjQgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2xpYnhsL3hs X2NtZGltcGwuYwo+PiArKysgYi90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKPj4gQEAgLTEyOTEs MTEgKzEyOTEsNyBAQCBza2lwX3ZmYjoKPj4gICAgICBpZiAoIXhsdV9jZmdfZ2V0X2xvbmcgKGNv bmZpZywgInBjaV9wZXJtaXNzaXZlIiwgJmwsIDApKQo+PiAgICAgICAgICBwY2lfcGVybWlzc2l2 ZSA9IGw7Cj4+Cj4+IC0gICAgLyogVG8gYmUgcmV3b3JrZWQgKGF1dG9tYXRpY2FsbHkgZW5hYmxl ZCkgb25jZSB0aGUgYXV0byAKPj4gYmFsbG9vbmluZwo+PiAtICAgICAqIGFmdGVyIGd1ZXN0IHN0 YXJ0cyBpcyBkb25lICh3aXRoIFBDSSBkZXZpY2VzIHBhc3NlZCBpbikuICovCj4+IC0gICAgaWYg KGNfaW5mby0+dHlwZSA9PSBMSUJYTF9ET01BSU5fVFlQRV9QVikgewo+PiAtICAgICAgICB4bHVf Y2ZnX2dldF9kZWZib29sKGNvbmZpZywgImU4MjBfaG9zdCIsCj4+ICZiX2luZm8tPnUucHYuZTgy MF9ob3N0LCAwKTsKPj4gLSAgICB9Cj4+ICsgICAgeGx1X2NmZ19nZXRfZGVmYm9vbChjb25maWcs ICJlODIwX2hvc3QiLCAmYl9pbmZvLT5lODIwX2hvc3QsIAo+PiAwKTsKPj4KPj4gICAgICBpZiAo IXhsdV9jZmdfZ2V0X2xpc3QgKGNvbmZpZywgInBjaSIsICZwY2lzLCAwLCAwKSkgewo+PiAgICAg ICAgICBkX2NvbmZpZy0+bnVtX3BjaWRldnMgPSAwOwo+PiBAQCAtMTMxNCw3ICsxMzEwLDcgQEAg c2tpcF92ZmI6Cj4+ICAgICAgICAgICAgICAgICAgZF9jb25maWctPm51bV9wY2lkZXZzKys7Cj4+ ICAgICAgICAgIH0KPj4gICAgICAgICAgaWYgKGRfY29uZmlnLT5udW1fcGNpZGV2cyAmJiBjX2lu Zm8tPnR5cGUgPT0gCj4+IExJQlhMX0RPTUFJTl9UWVBFX1BWKQo+PiAtICAgICAgICAgICAgbGli eGxfZGVmYm9vbF9zZXQoJmJfaW5mby0+dS5wdi5lODIwX2hvc3QsIHRydWUpOwo+PiArICAgICAg ICAgICAgbGlieGxfZGVmYm9vbF9zZXQoJmJfaW5mby0+ZTgyMF9ob3N0LCB0cnVlKTsKPj4gICAg ICB9Cj4+Cj4+ICAgICAgc3dpdGNoICh4bHVfY2ZnX2dldF9saXN0KGNvbmZpZywgImNwdWlkIiwg JmNwdWlkcywgMCwgMSkpIHsKPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX3N4cC5jIGIv dG9vbHMvbGlieGwveGxfc3hwLmMKPj4gaW5kZXggYTE2YTAyNS4uZjM0ZjBiYSAxMDA2NDQKPj4g LS0tIGEvdG9vbHMvbGlieGwveGxfc3hwLmMKPj4gKysrIGIvdG9vbHMvbGlieGwveGxfc3hwLmMK Pj4gQEAgLTg3LDYgKzg3LDEwIEBAIHZvaWQgcHJpbnRmX2luZm9fc2V4cChpbnQgZG9taWQsCj4+ IGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnKQo+PiAgICAgICAgICB9Cj4+ICAgICAgfQo+ Pgo+PiArICAgIHByaW50ZigiXHQoZTgyMF9ob3N0ICVzKVxuIiwKPj4gKyAgICAgICAgICAgbGli eGxfZGVmYm9vbF90b19zdHJpbmcoYl9pbmZvLT5lODIwX2hvc3QpKTsKPj4gKwo+PiArCj4+ICAg ICAgcHJpbnRmKCJcdChpbWFnZVxuIik7Cj4+ICAgICAgc3dpdGNoIChjX2luZm8tPnR5cGUpIHsK Pj4gICAgICBjYXNlIExJQlhMX0RPTUFJTl9UWVBFX0hWTToKPj4gQEAgLTE1MCw4ICsxNTQsNiBA QCB2b2lkIHByaW50Zl9pbmZvX3NleHAoaW50IGRvbWlkLAo+PiBsaWJ4bF9kb21haW5fY29uZmln ICpkX2NvbmZpZykKPj4gICAgICAgICAgcHJpbnRmKCJcdFx0XHQoa2VybmVsICVzKVxuIiwgYl9p bmZvLT51LnB2Lmtlcm5lbCk7Cj4+ICAgICAgICAgIHByaW50ZigiXHRcdFx0KGNtZGxpbmUgJXMp XG4iLCBiX2luZm8tPnUucHYuY21kbGluZSk7Cj4+ICAgICAgICAgIHByaW50ZigiXHRcdFx0KHJh bWRpc2sgJXMpXG4iLCBiX2luZm8tPnUucHYucmFtZGlzayk7Cj4+IC0gICAgICAgIHByaW50Zigi XHRcdFx0KGU4MjBfaG9zdCAlcylcbiIsCj4+IC0gICAgICAgICAgICAgICBsaWJ4bF9kZWZib29s X3RvX3N0cmluZyhiX2luZm8tPnUucHYuZTgyMF9ob3N0KSk7Cj4+ICAgICAgICAgIHByaW50Zigi XHRcdClcbiIpOwo+PiAgICAgICAgICBicmVhazsKPj4gICAgICBkZWZhdWx0Ogo+PiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4+IGlu ZGV4IDg3NDc0MmMuLjQ3OTYyMjEgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4u Ywo+PiArKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKPj4gQEAgLTU2NiwxMCArNTY2LDkgQEAg aW50IGFyY2hfZG9tYWluX2NyZWF0ZShzdHJ1Y3QgZG9tYWluICpkLAo+PiB1bnNpZ25lZCBpbnQg ZG9tY3JfZmxhZ3MpCj4+ICAgICAgewo+PiAgICAgICAgICAvKiA2NC1iaXQgUFYgZ3Vlc3QgYnkg ZGVmYXVsdC4gKi8KPj4gICAgICAgICAgZC0+YXJjaC5pc18zMmJpdF9wdiA9IGQtPmFyY2guaGFz XzMyYml0X3NoaW5mbyA9IDA7Cj4+IC0KPj4gLSAgICAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFy Y2gucHZfZG9tYWluLmU4MjBfbG9jayk7Cj4+ICAgICAgfQo+Pgo+PiArICAgIHNwaW5fbG9ja19p bml0KCZkLT5hcmNoLmU4MjBfbG9jayk7Cj4+ICAgICAgLyogaW5pdGlhbGl6ZSBkZWZhdWx0IHRz YyBiZWhhdmlvciBpbiBjYXNlIHRvb2xzIGRvbid0ICovCj4+ICAgICAgdHNjX3NldF9pbmZvKGQs IFRTQ19NT0RFX0RFRkFVTFQsIDBVTCwgMCwgMCk7Cj4+ICAgICAgc3Bpbl9sb2NrX2luaXQoJmQt PmFyY2gudnRzY19sb2NrKTsKPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMg Yi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4+IGluZGV4IDU0YjFlNmEuLjZjOWI1OGMgMTAwNjQ0 Cj4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPj4gKysrIGIveGVuL2FyY2gveDg2L2h2 bS9odm0uYwo+PiBAQCAtMzE0MiwxMCArMzE0MiwxMCBAQCBzdGF0aWMgbG9uZyBodm1fbWVtb3J5 X29wKGludCBjbWQsCj4+IFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+Pgo+PiAg ICAgIHN3aXRjaCAoIGNtZCAmIE1FTU9QX0NNRF9NQVNLICkKPj4gICAgICB7Cj4+IC0gICAgY2Fz ZSBYRU5NRU1fbWVtb3J5X21hcDoKPj4gICAgICBjYXNlIFhFTk1FTV9tYWNoaW5lX21lbW9yeV9t YXA6Cj4+ICAgICAgY2FzZSBYRU5NRU1fbWFjaHBoeXNfbWFwcGluZzoKPj4gICAgICAgICAgcmV0 dXJuIC1FTk9TWVM7Cj4+ICsgICAgY2FzZSBYRU5NRU1fbWVtb3J5X21hcDoKPj4gICAgICBjYXNl IFhFTk1FTV9kZWNyZWFzZV9yZXNlcnZhdGlvbjoKPj4gICAgICAgICAgcmMgPSBkb19tZW1vcnlf b3AoY21kLCBhcmcpOwo+PiAgICAgICAgICBjdXJyZW50LT5kb21haW4tPmFyY2guaHZtX2RvbWFp bi5xZW11X21hcGNhY2hlX2ludmFsaWRhdGUgPSAKPj4gMTsKPj4gQEAgLTMyMTcsMTAgKzMyMTcs MTAgQEAgc3RhdGljIGxvbmcgaHZtX21lbW9yeV9vcF9jb21wYXQzMihpbnQgY21kLAo+PiBYRU5f R1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKPj4KPj4gICAgICBzd2l0Y2ggKCBjbWQgJiBN RU1PUF9DTURfTUFTSyApCj4+ICAgICAgewo+PiAtICAgIGNhc2UgWEVOTUVNX21lbW9yeV9tYXA6 Cj4+ICAgICAgY2FzZSBYRU5NRU1fbWFjaGluZV9tZW1vcnlfbWFwOgo+PiAgICAgIGNhc2UgWEVO TUVNX21hY2hwaHlzX21hcHBpbmc6Cj4+ICAgICAgICAgIHJldHVybiAtRU5PU1lTOwo+PiArICAg IGNhc2UgWEVOTUVNX21lbW9yeV9tYXA6Cj4+ICAgICAgY2FzZSBYRU5NRU1fZGVjcmVhc2VfcmVz ZXJ2YXRpb246Cj4+ICAgICAgICAgIHJjID0gY29tcGF0X21lbW9yeV9vcChjbWQsIGFyZyk7Cj4+ ICAgICAgICAgIGN1cnJlbnQtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnFlbXVfbWFwY2FjaGVf aW52YWxpZGF0ZSA9IAo+PiAxOwo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94 ZW4vYXJjaC94ODYvbW0uYwo+PiBpbmRleCBlN2YwZTEzLi40YzNjZTlhIDEwMDY0NAo+PiAtLS0g YS94ZW4vYXJjaC94ODYvbW0uYwo+PiArKysgYi94ZW4vYXJjaC94ODYvbW0uYwo+PiBAQCAtNDc0 MCwxOSArNDc0MCwxMyBAQCBsb25nIGFyY2hfbWVtb3J5X29wKGludCBvcCwKPj4gWEVOX0dVRVNU X0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4+ICAgICAgICAgICAgICByZXR1cm4gcmM7Cj4+ICAg ICAgICAgIH0KPj4KPj4gLSAgICAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKPj4gLSAgICAg ICAgewo+PiAtICAgICAgICAgICAgcmN1X3VubG9ja19kb21haW4oZCk7Cj4+IC0gICAgICAgICAg ICByZXR1cm4gLUVQRVJNOwo+PiAtICAgICAgICB9Cj4+IC0KPj4gICAgICAgICAgZTgyMCA9IHht YWxsb2NfYXJyYXkoZTgyMGVudHJ5X3QsIGZtYXAubWFwLm5yX2VudHJpZXMpOwo+PiAgICAgICAg ICBpZiAoIGU4MjAgPT0gTlVMTCApCj4+ICAgICAgICAgIHsKPj4gICAgICAgICAgICAgIHJjdV91 bmxvY2tfZG9tYWluKGQpOwo+PiAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICAgICAg ICAgIH0KPj4gLQo+PiArCj4+ICAgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KGU4MjAsIGZt YXAubWFwLmJ1ZmZlciwgCj4+IGZtYXAubWFwLm5yX2VudHJpZXMpICkKPj4gICAgICAgICAgewo+ PiAgICAgICAgICAgICAgeGZyZWUoZTgyMCk7Cj4+IEBAIC00NzYwLDExICs0NzU0LDExIEBAIGxv bmcgYXJjaF9tZW1vcnlfb3AoaW50IG9wLAo+PiBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQp IGFyZykKPj4gICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+PiAgICAgICAgICB9Cj4+Cj4+ IC0gICAgICAgIHNwaW5fbG9jaygmZC0+YXJjaC5wdl9kb21haW4uZTgyMF9sb2NrKTsKPj4gLSAg ICAgICAgeGZyZWUoZC0+YXJjaC5wdl9kb21haW4uZTgyMCk7Cj4+IC0gICAgICAgIGQtPmFyY2gu cHZfZG9tYWluLmU4MjAgPSBlODIwOwo+PiAtICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5ucl9l ODIwID0gZm1hcC5tYXAubnJfZW50cmllczsKPj4gLSAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFy Y2gucHZfZG9tYWluLmU4MjBfbG9jayk7Cj4+ICsgICAgICAgIHNwaW5fbG9jaygmZC0+YXJjaC5l ODIwX2xvY2spOwo+PiArICAgICAgICB4ZnJlZShkLT5hcmNoLmU4MjApOwo+PiArICAgICAgICBk LT5hcmNoLmU4MjAgPSBlODIwOwo+PiArICAgICAgICBkLT5hcmNoLm5yX2U4MjAgPSBmbWFwLm1h cC5ucl9lbnRyaWVzOwo+PiArICAgICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5lODIwX2xvY2sp Owo+Pgo+PiAgICAgICAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKPj4gICAgICAgICAgcmV0dXJu IHJjOwo+PiBAQCAtNDc3OCwyNiArNDc3MiwyNiBAQCBsb25nIGFyY2hfbWVtb3J5X29wKGludCBv cCwKPj4gWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4+ICAgICAgICAgIGlmICgg Y29weV9mcm9tX2d1ZXN0KCZtYXAsIGFyZywgMSkgKQo+PiAgICAgICAgICAgICAgcmV0dXJuIC1F RkFVTFQ7Cj4+Cj4+IC0gICAgICAgIHNwaW5fbG9jaygmZC0+YXJjaC5wdl9kb21haW4uZTgyMF9s b2NrKTsKPj4gKyAgICAgICAgc3Bpbl9sb2NrKCZkLT5hcmNoLmU4MjBfbG9jayk7Cj4+Cj4+ICAg ICAgICAgIC8qIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqLwo+PiAtICAgICAgICBpZiAoIChk LT5hcmNoLnB2X2RvbWFpbi5ucl9lODIwID09IDApIHx8Cj4+IC0gICAgICAgICAgICAgKGQtPmFy Y2gucHZfZG9tYWluLmU4MjAgPT0gTlVMTCkgKQo+PiArICAgICAgICBpZiAoIChkLT5hcmNoLm5y X2U4MjAgPT0gMCkgfHwKPj4gKyAgICAgICAgICAgICAoZC0+YXJjaC5lODIwID09IE5VTEwpICkK Pj4gICAgICAgICAgewo+PiAtICAgICAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFyY2gucHZfZG9t YWluLmU4MjBfbG9jayk7Cj4+ICsgICAgICAgICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5lODIw X2xvY2spOwo+PiAgICAgICAgICAgICAgcmV0dXJuIC1FTk9TWVM7Cj4+ICAgICAgICAgIH0KPj4K Pj4gLSAgICAgICAgbWFwLm5yX2VudHJpZXMgPSBtaW4obWFwLm5yX2VudHJpZXMsIAo+PiBkLT5h cmNoLnB2X2RvbWFpbi5ucl9lODIwKTsKPj4gLSAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KG1h cC5idWZmZXIsIGQtPmFyY2gucHZfZG9tYWluLmU4MjAsCj4+ICsgICAgICAgIG1hcC5ucl9lbnRy aWVzID0gbWluKG1hcC5ucl9lbnRyaWVzLCBkLT5hcmNoLm5yX2U4MjApOwo+PiArICAgICAgICBp ZiAoIGNvcHlfdG9fZ3Vlc3QobWFwLmJ1ZmZlciwgZC0+YXJjaC5lODIwLAo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWFwLm5yX2VudHJpZXMpIHx8Cj4+ICAgICAgICAgICAgICAgX19j b3B5X3RvX2d1ZXN0KGFyZywgJm1hcCwgMSkgKQo+PiAgICAgICAgICB7Cj4+IC0gICAgICAgICAg ICBzcGluX3VubG9jaygmZC0+YXJjaC5wdl9kb21haW4uZTgyMF9sb2NrKTsKPj4gKyAgICAgICAg ICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmU4MjBfbG9jayk7Cj4+ICAgICAgICAgICAgICByZXR1 cm4gLUVGQVVMVDsKPj4gICAgICAgICAgfQo+Pgo+PiAtICAgICAgICBzcGluX3VubG9jaygmZC0+ YXJjaC5wdl9kb21haW4uZTgyMF9sb2NrKTsKPj4gKyAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFy Y2guZTgyMF9sb2NrKTsKPj4gICAgICAgICAgcmV0dXJuIDA7Cj4+ICAgICAgfQo+Pgo+PiBkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCAKPj4gYi94ZW4vaW5jbHVkZS9h c20teDg2L2RvbWFpbi5oCj4+IGluZGV4IGQ3OTQ2NGQuLmMzZjlmOGUgMTAwNjQ0Cj4+IC0tLSBh L3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKPj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9kb21haW4uaAo+PiBAQCAtMjM0LDExICsyMzQsNiBAQCBzdHJ1Y3QgcHZfZG9tYWluCj4+Cj4+ ICAgICAgLyogbWFwX2RvbWFpbl9wYWdlKCkgbWFwcGluZyBjYWNoZS4gKi8KPj4gICAgICBzdHJ1 Y3QgbWFwY2FjaGVfZG9tYWluIG1hcGNhY2hlOwo+PiAtCj4+IC0gICAgLyogUHNldWRvcGh5c2lj YWwgZTgyMCBtYXAgKFhFTk1FTV9tZW1vcnlfbWFwKS4gICovCj4+IC0gICAgc3BpbmxvY2tfdCBl ODIwX2xvY2s7Cj4+IC0gICAgc3RydWN0IGU4MjBlbnRyeSAqZTgyMDsKPj4gLSAgICB1bnNpZ25l ZCBpbnQgbnJfZTgyMDsKPj4gIH07Cj4+Cj4+ICBzdHJ1Y3QgYXJjaF9kb21haW4KPj4gQEAgLTMx Myw2ICszMDgsMTEgQEAgc3RydWN0IGFyY2hfZG9tYWluCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwb3NzaWJseSBvdGhlciBjYXNlcyBpbiB0aGUgZnV0dXJlIAo+PiAqLwo+ PiAgICAgIHVpbnQ2NF90IHZ0c2Nfa2VybmNvdW50OyAvKiBmb3IgaHZtLCBjb3VudHMgYWxsIHZ0 c2MgKi8KPj4gICAgICB1aW50NjRfdCB2dHNjX3VzZXJjb3VudDsgLyogbm90IHVzZWQgZm9yIGh2 bSAqLwo+PiArCj4+ICsgICAgLyogUHNldWRvcGh5c2ljYWwgZTgyMCBtYXAgKFhFTk1FTV9tZW1v cnlfbWFwKS4gICovCj4+ICsgICAgc3BpbmxvY2tfdCBlODIwX2xvY2s7Cj4+ICsgICAgc3RydWN0 IGU4MjBlbnRyeSAqZTgyMDsKPj4gKyAgICB1bnNpZ25lZCBpbnQgbnJfZTgyMDsKPj4gIH0gX19j YWNoZWxpbmVfYWxpZ25lZDsKPj4KPj4gICNkZWZpbmUgaGFzX2FyY2hfcGRldnMoZCkgICAgKCFs aXN0X2VtcHR5KCYoZCktPmFyY2gucGRldl9saXN0KSkKPj4KPj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+ PiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+PiBodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRw Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=