From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Koenig, Christian" Subject: Re: [PATCH 1/2] dmr/amdgpu: Avoid HW GPU reset for RAS. Date: Thu, 29 Aug 2019 14:06:20 +0000 Message-ID: <8c2b0bf3-47ff-ea3b-a682-7ec76240be4d@amd.com> References: <1567022426-6612-1-git-send-email-andrey.grodzovsky@amd.com> <85798da5-a4f1-28d3-c80f-9f262743cac9@gmail.com> <9a46188b-b528-0d1f-8c3f-b6ce5b73649f@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <9a46188b-b528-0d1f-8c3f-b6ce5b73649f-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Grodzovsky, Andrey" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "alexdeucher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" , "Zhang, Hawking" QW0gMjkuMDguMTkgdW0gMTY6MDMgc2NocmllYiBHcm9kem92c2t5LCBBbmRyZXk6DQo+IE9uIDgv MjkvMTkgMzozMCBBTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToNCj4+IEFtIDI4LjA4LjE5IHVt IDIyOjAwIHNjaHJpZWIgQW5kcmV5IEdyb2R6b3Zza3k6DQo+Pj4gUHJvYmxlbToNCj4+PiBVbmRl ciBjZXJ0YWluIGNvbmRpdGlvbnMsIHdoZW4gc29tZSBJUCBib2NrcyB0YWtlIGEgUkFTIGVycm9y LA0KPj4+IHdlIGNhbiBnZXQgaW50byBhIHNpdHVhdGlvbiB3aGVyZSBhIEdQVSByZXNldCBpcyBu b3QgcG9zc2libGUNCj4+PiBkdWUgdG8gaXNzdWVzIGluIFJBUyBpbiBTTVUvUFNQLg0KPj4+DQo+ Pj4gVGVtcG9yYXJ5IGZpeCB1bnRpbCBwcm9wZXIgc29sdXRpb24gaW4gUFNQL1NNVSBpcyByZWFk eToNCj4+PiBXaGVuIHVuY29ycmVjdGFibGUgZXJyb3IgaGFwcGVucyB0aGUgREYgd2lsbCB1bmNv bmRpdGlvbmFsbHkNCj4+PiBicm9hZGNhc3QgZXJyb3IgZXZlbnQgcGFja2V0cyB0byBhbGwgaXRz IGNsaWVudHMvc2xhdmUgdXBvbg0KPj4+IHJlY2VpdmluZyBmYXRhbCBlcnJvciBldmVudCBhbmQg ZnJlZXplIGFsbCBpdHMgb3V0Ym91bmQgcXVldWVzLA0KPj4+IGVycl9ldmVudF9hdGh1YiBpbnRl cnJ1cHTCoCB3aWxsIGJlIHRyaWdnZXJlZC4NCj4+PiBJbiBzdWNoIGNhc2UgYW5kIHdlIHVzZSB0 aGlzIGludGVycnVwdA0KPj4+IHRvIGlzc3VlIEdQVSByZXNldC4gVEhlIEdQVSByZXNldCBjb2Rl IGlzIG1vZGlmaWVkIGZvciBzdWNoIGNhc2UgdG8NCj4+PiBhdm9pZCBIVw0KPj4+IHJlc2V0LCBv bmx5IHN0b3BzIHNjaGVkdWxlcnMsIGRlYXRjaGVzIGFsbCBpbiBwcm9ncmVzcyBhbmQgbm90IHll dA0KPj4+IHNjaGVkdWxlZA0KPj4+IGpvYidzIGZlbmNlcywgc2V0IGVycm9yIGNvZGUgb24gdGhl bSBhbmQgc2lnbmFscy4NCj4+PiBBbHNvIHJlamVjdCBhbnkgbmV3IGluY29taW5nIGpvYiBzdWJt aXNzaW9ucyBmcm9tIHVzZXIgc3BhY2UuDQo+Pj4gQWxsIHRoaXMgaXMgZG9uZSB0byBub3RpZnkg dGhlIGFwcGxpY2F0aW9ucyBvZiB0aGUgcHJvYmxlbS4NCj4+Pg0KPj4+IFNpZ25lZC1vZmYtYnk6 IEFuZHJleSBHcm9kem92c2t5IDxhbmRyZXkuZ3JvZHpvdnNreUBhbWQuY29tPg0KPj4+IC0tLQ0K Pj4+ICDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuY8KgwqDCoMKgIHzC oCA0ICsrDQo+Pj4gIMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2Uu YyB8IDk4DQo+Pj4gKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tDQo+Pj4gIMKgIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuY8KgwqDCoCB8wqAgNSArKw0KPj4+ICDC oCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmPCoMKgwqAgfMKgIDYgKysN Cj4+PiAgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jwqDCoMKgIHwg MzAgKysrKysrKy0tDQo+Pj4gIMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9y YXMuaMKgwqDCoCB8IDEyICsrKy0NCj4+PiAgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3Y5XzAuY8KgwqDCoMKgwqAgfCAxMCArLS0NCj4+PiAgwqAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ21jX3Y5XzAuY8KgwqDCoMKgwqAgfCAyNCArKysrLS0tLQ0KPj4+ICDCoCBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9uYmlvX3Y3XzQuY8KgwqDCoMKgIHzCoCA1ICsrDQo+Pj4g IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jwqDCoMKgwqAgfCAzMiAr KysrKy0tLS0tDQo+Pj4gIMKgIDEwIGZpbGVzIGNoYW5nZWQsIDE2NCBpbnNlcnRpb25zKCspLCA2 MiBkZWxldGlvbnMoLSkNCj4+Pg0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfY3MuYw0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2NzLmMNCj4+PiBpbmRleCA5ZGE2ODFlLi4zMDBhZGI4IDEwMDY0NA0KPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jDQo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMNCj4+PiBAQCAtMzgsNiArMzgsNyBAQA0KPj4+ ICDCoCAjaW5jbHVkZSAiYW1kZ3B1X2dtYy5oIg0KPj4+ICDCoCAjaW5jbHVkZSAiYW1kZ3B1X2dl bS5oIg0KPj4+ICDCoCAjaW5jbHVkZSAiYW1kZ3B1X2Rpc3BsYXkuaCINCj4+PiArI2luY2x1ZGUg ImFtZGdwdV9yYXMuaCINCj4+PiAgwqAgwqAgI2lmIGRlZmluZWQoSEFWRV9EUk1fRlJFRV9MQVJH RSkNCj4+PiAgwqAgI2RlZmluZSBrdmZyZWUgZHJtX2ZyZWVfbGFyZ2UNCj4+PiBAQCAtMTQ2MSw2 ICsxNDYyLDkgQEAgaW50IGFtZGdwdV9jc19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0K Pj4+IHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscCkNCj4+PiAgwqDCoMKgwqDCoCBi b29sIHJlc2VydmVkX2J1ZmZlcnMgPSBmYWxzZTsNCj4+PiAgwqDCoMKgwqDCoCBpbnQgaSwgcjsN Cj4+PiAgwqAgK8KgwqDCoCBpZiAoYW1kZ3B1X3Jhc19pbnRyX3RyaWdnZXJlZCgpKQ0KPj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVIV1BPSVNPTjsNCj4+PiArDQo+Pj4gIMKgwqDCoMKgwqAg aWYgKCFhZGV2LT5hY2NlbF93b3JraW5nKQ0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FQlVTWTsNCj4+PiAgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kZXZpY2UuYw0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2RldmljZS5jDQo+Pj4gaW5kZXggMDdhNGJhMC4uM2VjZWUxMCAxMDA2NDQNCj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+PiBAQCAtMzczNCwxMCAr MzczNCwxMCBAQCBzdGF0aWMgYm9vbCBhbWRncHVfZGV2aWNlX2xvY2tfYWRldihzdHJ1Y3QNCj4+ PiBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIHRyeWxvY2spDQo+Pj4gIMKgwqDCoMKgwqAgcmV0 dXJuIHRydWU7DQo+Pj4gIMKgIH0NCj4+PiAgwqAgLXN0YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2Vf dW5sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+Pj4gK3N0YXRpYyB2b2lk IGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ Pj4gYm9vbCBza2lwX2tmZCkNCj4+PiAgwqAgew0KPj4+ICDCoMKgwqDCoMKgIC8qdW5sb2NrIGtm ZDogU1JJT1Ygd291bGQgZG8gaXQgc2VwYXJhdGVseSAqLw0KPj4+IC3CoMKgwqAgaWYgKCFhbWRn cHVfc3Jpb3ZfdmYoYWRldikpDQo+Pj4gK8KgwqDCoCBpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2 KSAmJiAhc2tpcF9rZmQpDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YW1kZ3B1X2FtZGtmZF9wb3N0X3Jlc2V0KGFkZXYpOw0KPj4gSXQncyBtb3N0IGxpa2VseSBiZXR0 ZXIgdG8gY29tcGxldGVseSByZW1vdmUgdGhlIGNhbGwgdG8NCj4+IGFtZGdwdV9hbWRrZmRfcG9z dF9yZXNldCgpIGhlcmUuDQo+DQo+IEZlbGl4IGFkdmlzZWQgdGhhdCB0aGUgd2F5IHRvIHN0b3Ag YWxsIEtGRCBhY3Rpdml0eSBpcyBzaW1wbHkgdG8gTk9UDQo+IGNhbGwgYW1kZ3B1X2FtZGtmZF9w b3N0X3Jlc2V0IHNvIHRoYXQgd2h5IEkgYWRkZWQgdGhpcy4gRG8geW91IG1lYW4geW91DQo+IHBy ZWZlciBhbWRncHVfYW1ka2ZkX3Bvc3RfcmVzZXQgdG8gYmUgb3V0c2lkZSBvZiBhbWRncHVfZGV2 aWNlX3VubG9ja19hZGV2ID8NCg0KWWVzLCBleGFjdGx5LiBJdCBkb2Vzbid0IHNlZW1zIHRvIGJl IHJlbGF0ZWQgdG8gdGhlIHVubG9jayBvcGVyYXRpb24gaW4gDQp0aGUgZmlyc3QgcGxhY2UsIGJ1 dCByYXRoZXIgb25seSBzaWduYWxzIHRoZSBLRkQgdGhhdCB0aGUgcmVzZXQgaXMgDQpjb21wbGV0 ZWQuDQoNCkNocmlzdGlhbi4NCg0KPg0KPg0KPj4+ICDCoMKgwqDCoMKgIGFtZGdwdV92Zl9lcnJv cl90cmFuc19hbGwoYWRldik7DQo+Pj4gIMKgwqDCoMKgwqAgYWRldi0+bXAxX3N0YXRlID0gUFBf TVAxX1NUQVRFX05PTkU7DQo+Pj4gQEAgLTM3NDYsNiArMzc0Niw0NCBAQCBzdGF0aWMgdm9pZCBh bWRncHVfZGV2aWNlX3VubG9ja19hZGV2KHN0cnVjdA0KPj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYp DQo+Pj4gIMKgIH0NCj4+PiAgwqAgwqAgKyNkZWZpbmUgdG9fZHJtX3NjaGVkX2pvYihzY2hlZF9q b2IpwqDCoMKgwqDCoMKgwqAgXA0KPj4+ICvCoMKgwqDCoMKgwqDCoCBjb250YWluZXJfb2YoKHNj aGVkX2pvYiksIHN0cnVjdCBkcm1fc2NoZWRfam9iLCBxdWV1ZV9ub2RlKQ0KPj4+ICsNCj4+PiAr c3RhdGljIHZvaWQgYW1kZ3B1X3N0b3BfYWxsX2pvYnNfb25fc2NoZWQoc3RydWN0IGRybV9ncHVf c2NoZWR1bGVyDQo+Pj4gKnNjaGVkKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3Nj aGVkX2pvYiAqc19qb2I7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqc19l bnRpdHkgPSBOVUxMOw0KPj4+ICvCoMKgwqAgaW50IGk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyog U2lnbmFsIGFsbCBqb2JzIG5vdCB5ZXQgc2NoZWR1bGVkICovDQo+Pj4gK8KgwqDCoCBmb3IgKGkg PSBEUk1fU0NIRURfUFJJT1JJVFlfTUFYIC0gMTsgaSA+PQ0KPj4+IERSTV9TQ0hFRF9QUklPUklU WV9NSU47IGktLSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX3JxICpy cSA9ICZzY2hlZC0+c2NoZWRfcnFbaV07DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo IXJxKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4+ICsNCj4+PiAr wqDCoMKgwqDCoMKgwqAgc3Bpbl9sb2NrKCZycS0+bG9jayk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IGxpc3RfZm9yX2VhY2hfZW50cnkoc19lbnRpdHksICZycS0+ZW50aXRpZXMsIGxpc3QpIHsNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoKHNfam9iID0NCj4+PiB0b19kcm1fc2No ZWRfam9iKHNwc2NfcXVldWVfcG9wKCZzX2VudGl0eS0+am9iX3F1ZXVlKSkpKSB7DQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlICpzX2Zl bmNlID0gc19qb2ItPnNfZmVuY2U7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZG1hX2ZlbmNlX3NpZ25hbCgmc19mZW5jZS0+c2NoZWR1bGVkKTsNCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9mZW5jZV9zZXRfZXJyb3IoJnNfZmVuY2Ut PmZpbmlzaGVkLCAtRUhXUE9JU09OKTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRtYV9mZW5jZV9zaWduYWwoJnNfZmVuY2UtPmZpbmlzaGVkKTsNCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB9DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+PiArwqDCoMKgwqDCoMKg wqAgc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8Kg wqDCoCAvKiBTaWduYWwgYWxsIGpvYnMgYWxyZWFkeSBzY2hlZHVsZWQgdG8gSFcgKi8NCj4+PiAr wqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnkoc19qb2IsICZzY2hlZC0+cmluZ19taXJyb3JfbGlz dCwgbm9kZSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlICpz X2ZlbmNlID0gc19qb2ItPnNfZmVuY2U7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkbWFf ZmVuY2Vfc2V0X2Vycm9yKCZzX2ZlbmNlLT5maW5pc2hlZCwgLUVIV1BPSVNPTik7DQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIGRtYV9mZW5jZV9zaWduYWwoJnNfZmVuY2UtPmZpbmlzaGVkKTsNCj4+PiAr wqDCoMKgIH0NCj4+PiArfQ0KPj4gVGhhdCBtaWdodCBiZSBiZXR0ZXIgcHV0IGludG8gYW1kZ3B1 X2pvYi5jLg0KPj4NCj4+IEFuZCBJIGFzc3VtZSB0aGlzIGlzIGNhbGxlZCBvbmx5IGR1cmluZyBH UFUgcmVzZXQgd2lsbCB0aGUgc2NoZWR1bGVyDQo+PiBmdWxseSBzdG9wcGVkPw0KPg0KPiBZZXMN Cj4NCj4NCj4+PiArDQo+Pj4gIMKgIC8qKg0KPj4+ICDCoMKgICogYW1kZ3B1X2RldmljZV9ncHVf cmVjb3ZlciAtIHJlc2V0IHRoZSBhc2ljIGFuZCByZWNvdmVyIHNjaGVkdWxlcg0KPj4+ICDCoMKg ICoNCj4+PiBAQCAtMzc2NSwxMSArMzgwMywxMiBAQCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVj b3ZlcihzdHJ1Y3QNCj4+PiBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+ICDCoMKgwqDCoMKgIHN0 cnVjdCBhbWRncHVfaGl2ZV9pbmZvICpoaXZlID0gTlVMTDsNCj4+PiAgwqDCoMKgwqDCoCBzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqdG1wX2FkZXYgPSBOVUxMOw0KPj4+ICDCoMKgwqDCoMKgIGludCBp LCByID0gMDsNCj4+PiArwqDCoMKgIGJvb2wgaW5fcmFzX2ludHIgPSBhbWRncHVfcmFzX2ludHJf dHJpZ2dlcmVkKCk7DQo+Pj4gIMKgIMKgwqDCoMKgwqAgbmVlZF9mdWxsX3Jlc2V0ID0gam9iX3Np Z25hbGVkID0gZmFsc2U7DQo+Pj4gIMKgwqDCoMKgwqAgSU5JVF9MSVNUX0hFQUQoJmRldmljZV9s aXN0KTsNCj4+PiAgwqAgLcKgwqDCoCBkZXZfaW5mbyhhZGV2LT5kZXYsICJHUFUgcmVzZXQgYmVn aW4hXG4iKTsNCj4+PiArwqDCoMKgIGRldl9pbmZvKGFkZXYtPmRldiwgIkdQVSAlcyBiZWdpbiFc biIsIGluX3Jhc19pbnRyID8gImpvYnMNCj4+PiBzdG9wIjoicmVzZXQiKTsNCj4+PiBjYW5jZWxf ZGVsYXllZF93b3JrX3N5bmMoJmFkZXYtPmRlbGF5ZWRfaW5pdF93b3JrKTsNCj4+PiAgwqAgQEAg LTM3OTksNyArMzgzOCw3IEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdA0K Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4gIMKgwqDCoMKgwqAgLyogQnVpbGQgbGlzdCBv ZiBkZXZpY2VzIHRvIHJlc2V0ICovDQo+Pj4gIMKgwqDCoMKgwqAgaWbCoCAoYWRldi0+Z21jLnhn bWkubnVtX3BoeXNpY2FsX25vZGVzID4gMSkgew0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KCFoaXZlKSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RldmljZV91bmxv Y2tfYWRldihhZGV2KTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfZGV2aWNl X3VubG9ja19hZGV2KGFkZXYsIGZhbHNlKTsNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC1FTk9ERVY7DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gIMKgIEBA IC0zODI0LDcgKzM4NjMsNyBAQCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVjb3ZlcihzdHJ1Y3QN Cj4+PiBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+ICDCoMKgwqDCoMKgIC8qIGJsb2NrIGFsbCBz Y2hlZHVsZXJzIGFuZCByZXNldCBnaXZlbiBqb2IncyByaW5nICovDQo+Pj4gIMKgwqDCoMKgwqAg bGlzdF9mb3JfZWFjaF9lbnRyeSh0bXBfYWRldiwgZGV2aWNlX2xpc3RfaGFuZGxlLCBnbWMueGdt aS5oZWFkKSB7DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBkaXNhYmxlIHJhcyBvbiBBTEwg SVBzICovDQo+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChhbWRncHVfZGV2aWNlX2lwX25lZWRfZnVs bF9yZXNldCh0bXBfYWRldikpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghaW5fcmFzX2ludHIg JiYgYW1kZ3B1X2RldmljZV9pcF9uZWVkX2Z1bGxfcmVzZXQodG1wX2FkZXYpKQ0KPj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfcmFzX3N1c3BlbmQodG1wX2FkZXYpOw0KPj4+ ICDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfUklOR1M7 ICsraSkgew0KPj4+IEBAIC0zODM0LDEwICszODczLDE2IEBAIGludCBhbWRncHVfZGV2aWNlX2dw dV9yZWNvdmVyKHN0cnVjdA0KPj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+Pj4gIMKgIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRybV9zY2hlZF9zdG9wKCZyaW5nLT5zY2hlZCwgam9iID8gJmpvYi0+ YmFzZSA6IE5VTEwpOw0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaW5f cmFzX2ludHIpDQo+Pj4gKyBhbWRncHVfc3RvcF9hbGxfam9ic19vbl9zY2hlZCgmcmluZy0+c2No ZWQpOw0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ICDCoMKgwqDCoMKgIH0NCj4+PiAg wqAgwqAgK8KgwqDCoCBpZiAoaW5fcmFzX2ludHIpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8g c2tpcF9od19yZXNldDsNCj4+PiArDQo+Pj4gIMKgwqDCoMKgwqAgLyoNCj4+PiAgwqDCoMKgwqDC oMKgICogTXVzdCBjaGVjayBndWlsdHkgc2lnbmFsIGhlcmUgc2luY2UgYWZ0ZXIgdGhpcyBwb2lu dCBhbGwgb2xkDQo+Pj4gIMKgwqDCoMKgwqDCoCAqIEhXIGZlbmNlcyBhcmUgZm9yY2Ugc2lnbmFs ZWQuDQo+Pj4gQEAgLTM5MDIsMzQgKzM5NDcsMzcgQEAgaW50IGFtZGdwdV9kZXZpY2VfZ3B1X3Jl Y292ZXIoc3RydWN0DQo+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+PiAgwqAgwqDCoMKgwqDC oCAvKiBQb3N0IEFTSUMgcmVzZXQgZm9yIGFsbCBkZXZzIC4qLw0KPj4+ICDCoMKgwqDCoMKgIGxp c3RfZm9yX2VhY2hfZW50cnkodG1wX2FkZXYsIGRldmljZV9saXN0X2hhbmRsZSwgZ21jLnhnbWku aGVhZCkgew0KPj4+IC3CoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9S SU5HUzsgKytpKSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nID0gdG1wX2FkZXYtPnJpbmdzW2ldOw0KPj4+ICDCoCAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoIXJpbmcgfHwgIXJpbmctPnNjaGVkLnRocmVhZCkNCj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo IWluX3Jhc19pbnRyKSB7DQo+PiBNYXliZSB3cml0ZSBpdCBsaWtlIHRoaXM6DQo+Pg0KPj4gaWYg KGluX3Jhc19pbnRyKSB7DQo+PiAgwqDCoMKgIGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYoLi4p DQo+PiAgwqDCoMKgIGNvbnRpbnVlOw0KPj4gfQ0KPj4NCj4+IE9yIGV2ZW4gYmV0dGVyIHVzZSBh IGNvbXBsZXRlbHkgc2VwYXJhdGUgdW5sb2NrIGxvb3AuDQo+Pg0KPj4gQ2hyaXN0aWFuLg0KPj4N Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9S SU5HUzsgKytpKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcgPSB0bXBfYWRldi0+cmluZ3NbaV07DQo+Pj4gIMKgIC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qIE5vIHBvaW50IHRvIHJlc3VibWl0IGpvYnMgaWYgd2UgZGlkbid0 IEhXIHJlc2V0Ki8NCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXRtcF9hZGV2LT5h c2ljX3Jlc2V0X3JlcyAmJiAham9iX3NpZ25hbGVkKQ0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMoJnJpbmctPnNjaGVkKTsNCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghcmluZyB8fCAhcmluZy0+c2NoZWQu dGhyZWFkKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250 aW51ZTsNCj4+PiAgwqAgLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX3N0YXJ0KCZy aW5nLT5zY2hlZCwgIXRtcF9hZGV2LT5hc2ljX3Jlc2V0X3Jlcyk7DQo+Pj4gLcKgwqDCoMKgwqDC oMKgIH0NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE5vIHBvaW50IHRv IHJlc3VibWl0IGpvYnMgaWYgd2UgZGlkbid0IEhXIHJlc2V0Ki8NCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICghdG1wX2FkZXYtPmFzaWNfcmVzZXRfcmVzICYmICFqb2Jf c2lnbmFsZWQpDQo+Pj4gKyBkcm1fc2NoZWRfcmVzdWJtaXRfam9icygmcmluZy0+c2NoZWQpOw0K Pj4+ICDCoCAtwqDCoMKgwqDCoMKgwqAgaWYgKCFhbWRncHVfZGV2aWNlX2hhc19kY19zdXBwb3J0 KHRtcF9hZGV2KSAmJg0KPj4+ICFqb2Jfc2lnbmFsZWQpIHsNCj4+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkcm1faGVscGVyX3Jlc3VtZV9mb3JjZV9tb2RlKHRtcF9hZGV2LT5kZGV2KTsNCj4+ PiAtwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZHJtX3NjaGVkX3N0YXJ0KCZyaW5nLT5zY2hlZCwNCj4+PiAhdG1wX2FkZXYtPmFzaWNfcmVzZXRf cmVzKTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gIMKgIC3CoMKgwqDCoMKg wqDCoCB0bXBfYWRldi0+YXNpY19yZXNldF9yZXMgPSAwOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmICghYW1kZ3B1X2RldmljZV9oYXNfZGNfc3VwcG9ydCh0bXBfYWRldikgJiYNCj4+ PiAham9iX3NpZ25hbGVkKSB7DQo+Pj4gKyBkcm1faGVscGVyX3Jlc3VtZV9mb3JjZV9tb2RlKHRt cF9hZGV2LT5kZGV2KTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gIMKgIC3C oMKgwqDCoMKgwqDCoCBpZiAocikgew0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGJh ZCBuZXdzLCBob3cgdG8gdGVsbCBpdCB0byB1c2Vyc3BhY2UgPyAqLw0KPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRldl9pbmZvKHRtcF9hZGV2LT5kZXYsICJHUFUgcmVzZXQoJWQpIGZhaWxl ZFxuIiwNCj4+PiBhdG9taWNfcmVhZCgmYWRldi0+Z3B1X3Jlc2V0X2NvdW50ZXIpKTsNCj4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfdmZfZXJyb3JfcHV0KHRtcF9hZGV2LA0KPj4+ IEFNREdJTV9FUlJPUl9WRl9HUFVfUkVTRVRfRkFJTCwgMCwgcik7DQo+Pj4gLcKgwqDCoMKgwqDC oMKgIH0gZWxzZSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2luZm8odG1wX2Fk ZXYtPmRldiwgIkdQVSByZXNldCglZCkgc3VjY2VlZGVkIVxuIiwNCj4+PiBhdG9taWNfcmVhZCgm YWRldi0+Z3B1X3Jlc2V0X2NvdW50ZXIpKTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0 bXBfYWRldi0+YXNpY19yZXNldF9yZXMgPSAwOw0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAocikgew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyog YmFkIG5ld3MsIGhvdyB0byB0ZWxsIGl0IHRvIHVzZXJzcGFjZSA/ICovDQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfaW5mbyh0bXBfYWRldi0+ZGV2LCAiR1BVIHJlc2V0 KCVkKSBmYWlsZWRcbiIsDQo+Pj4gYXRvbWljX3JlYWQoJmFkZXYtPmdwdV9yZXNldF9jb3VudGVy KSk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfdmZfZXJyb3Jf cHV0KHRtcF9hZGV2LA0KPj4+IEFNREdJTV9FUlJPUl9WRl9HUFVfUkVTRVRfRkFJTCwgMCwgcik7 DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRldl9pbmZvKHRtcF9hZGV2LT5kZXYsICJHUFUgcmVzZXQoJWQp DQo+Pj4gc3VjY2VlZGVkIVxuIiwgYXRvbWljX3JlYWQoJmFkZXYtPmdwdV9yZXNldF9jb3VudGVy KSk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ICDCoMKgwqDCoMKgwqDCoMKg wqAgfQ0KPj4+ICDCoCAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RldmljZV91bmxvY2tfYWRldih0 bXBfYWRldik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYo dG1wX2FkZXYsIGluX3Jhc19pbnRyKTsNCj4+PiAgwqDCoMKgwqDCoCB9DQo+Pj4gIMKgIMKgwqDC oMKgwqAgaWYgKGhpdmUpDQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kcnYuYw0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Rydi5jDQo+Pj4gaW5kZXggMTUxZDdmMi4uNzU3ZmQ2ZCAxMDA2NDQNCj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMNCj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMNCj4+PiBAQCAtNDAsNiArNDAsOCBAQA0KPj4+ ICDCoCDCoCAjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5oIg0KPj4+ICDCoCArI2luY2x1ZGUgImFt ZGdwdV9yYXMuaCINCj4+PiArDQo+Pj4gIMKgIC8qDQo+Pj4gIMKgwqAgKiBLTVMgd3JhcHBlci4N Cj4+PiAgwqDCoCAqIC0gMy4wLjAgLSBpbml0aWFsIGRyaXZlcg0KPj4+IEBAIC0xMTc5LDYgKzEx ODEsOSBAQCBhbWRncHVfcGNpX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KPj4+ICDC oMKgwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7 DQo+Pj4gIMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9w cml2YXRlOw0KPj4+ICDCoCArwqDCoMKgIGlmIChhbWRncHVfcmFzX2ludHJfdHJpZ2dlcmVkKCkp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4+PiArDQo+Pj4gIMKgwqDCoMKgwqAgLyog aWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBWTSwgbWFrZSBzdXJlIHRoZSBkZXZpY2UNCj4+PiAgwqDC oMKgwqDCoMKgICogdG9ybiBkb3duIHByb3Blcmx5IG9uIHJlYm9vdC9zaHV0ZG93bi4NCj4+PiAg wqDCoMKgwqDCoMKgICogdW5mb3J0dW5hdGVseSB3ZSBjYW4ndCBkZXRlY3QgY2VydGFpbg0KPj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMNCj4+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYw0KPj4+IGluZGV4IGRh MjE0M2QuLmNlZDc2NmMgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2ttcy5jDQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2ttcy5jDQo+Pj4gQEAgLTEwNDYsNiArMTA0NiwxMiBAQCBpbnQgYW1kZ3B1X2RyaXZlcl9v cGVuX2ttcyhzdHJ1Y3QgZHJtX2RldmljZQ0KPj4+ICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2KQ0KPj4+ICDCoMKgwqDCoMKgIC8qIEVuc3VyZSBJQiB0ZXN0cyBhcmUgcnVuIG9uIHJp bmcgKi8NCj4+PiAgwqDCoMKgwqDCoCBmbHVzaF9kZWxheWVkX3dvcmsoJmFkZXYtPmRlbGF5ZWRf aW5pdF93b3JrKTsNCj4+PiAgwqAgKw0KPj4+ICvCoMKgwqAgaWYgKGFtZGdwdV9yYXNfaW50cl90 cmlnZ2VyZWQoKSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoIlJBUyBJbnRyIHRy aWdnZXJlZCwgZGV2aWNlIGRpc2FibGVkISEiKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FSFdQT0lTT047DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICDCoMKgwqDCoMKgIGZpbGVf cHJpdi0+ZHJpdmVyX3ByaXYgPSBOVUxMOw0KPj4+ICDCoCDCoMKgwqDCoMKgIHIgPSBwbV9ydW50 aW1lX2dldF9zeW5jKGRldi0+ZGV2KTsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcmFzLmMNCj4+PiBpbmRleCAyZDU4OTdhLi4wODZlNmRmIDEwMDY0NA0KPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYw0KPj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYw0KPj4+IEBAIC0yNCw2ICsyNCw4 IEBADQo+Pj4gIMKgICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+DQo+Pj4gIMKgICNpbmNsdWRl IDxsaW51eC9saXN0Lmg+DQo+Pj4gIMKgICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4+PiAr I2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPg0KPj4+ICsjaW5jbHVkZSA8bGludXgvc3lzY2FsbHMu aD4NCj4+PiAgwqAgI2luY2x1ZGUgImFtZGdwdS5oIg0KPj4+ICDCoCAjaW5jbHVkZSAiYW1kZ3B1 X3Jhcy5oIg0KPj4+ICDCoCAjaW5jbHVkZSAiYW1kZ3B1X2F0b21maXJtd2FyZS5oIg0KPj4+IEBA IC02NCw2ICs2Niw5IEBAIGNvbnN0IGNoYXIgKnJhc19ibG9ja19zdHJpbmdbXSA9IHsNCj4+PiAg wqAgLyogaW5qZWN0IGFkZHJlc3MgaXMgNTIgYml0cyAqLw0KPj4+ICDCoCAjZGVmaW5lwqDCoMKg IFJBU19VTUNfSU5KRUNUX0FERFJfTElNSVTCoMKgwqAgKDB4MVVMTCA8PCA1MikNCj4+PiAgwqAg Kw0KPj4+ICthdG9taWNfdCBhbWRncHVfcmFzX2luX2ludHIgPSBBVE9NSUNfSU5JVCgwKTsNCj4+ PiArDQo+Pj4gIMKgIHN0YXRpYyBpbnQgYW1kZ3B1X3Jhc19yZXNlcnZlX3ZyYW0oc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50NjRfdCBvZmZz ZXQsIHVpbnQ2NF90IHNpemUsDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1 X2JvICoqYm9fcHRyKTsNCj4+PiBAQCAtODAsNyArODUsNyBAQCBzdGF0aWMgc3NpemVfdCBhbWRn cHVfcmFzX2RlYnVnZnNfcmVhZChzdHJ1Y3QgZmlsZQ0KPj4+ICpmLCBjaGFyIF9fdXNlciAqYnVm LA0KPj4+ICDCoMKgwqDCoMKgIHNzaXplX3QgczsNCj4+PiAgwqDCoMKgwqDCoCBjaGFyIHZhbFsx MjhdOw0KPj4+ICDCoCAtwqDCoMKgIGlmIChhbWRncHVfcmFzX2Vycm9yX3F1ZXJ5KG9iai0+YWRl diwgJmluZm8pKQ0KPj4+ICvCoMKgwqAgaWYgKGFtZGdwdV9yYXNfZXJyb3JfcXVlcnkob2JqLT5h ZGV2LCAmaW5mbywgZmFsc2UpKQ0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5W QUw7DQo+Pj4gIMKgIMKgwqDCoMKgwqAgcyA9IHNucHJpbnRmKHZhbCwgc2l6ZW9mKHZhbCksICIl czogJWx1XG4lczogJWx1XG4iLA0KPj4+IEBAIC0xODgsNiArMTkzLDEwIEBAIHN0YXRpYyBpbnQN Cj4+PiBhbWRncHVfcmFzX2RlYnVnZnNfY3RybF9wYXJzZV9kYXRhKHN0cnVjdCBmaWxlICpmLA0K Pj4+ICDCoCDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+ICDCoCB9DQo+Pj4gKw0KPj4+ICtzdGF0 aWMgc3RydWN0IHJhc19tYW5hZ2VyICphbWRncHVfcmFzX2ZpbmRfb2JqKHN0cnVjdCBhbWRncHVf ZGV2aWNlDQo+Pj4gKmFkZXYsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCByYXNfY29tbW9u X2lmICpoZWFkKTsNCj4+PiArDQo+Pj4gIMKgIC8qKg0KPj4+ICDCoMKgICogRE9DOiBBTURHUFUg UkFTIGRlYnVnZnMgY29udHJvbCBpbnRlcmZhY2UNCj4+PiAgwqDCoCAqDQo+Pj4gQEAgLTMwNCw3 ICszMTMsNyBAQCBzdGF0aWMgc3NpemVfdCBhbWRncHVfcmFzX3N5c2ZzX3JlYWQoc3RydWN0DQo+ Pj4gZGV2aWNlICpkZXYsDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCAuaGVhZCA9IG9iai0+aGVh ZCwNCj4+PiAgwqDCoMKgwqDCoCB9Ow0KPj4+ICDCoCAtwqDCoMKgIGlmIChhbWRncHVfcmFzX2Vy cm9yX3F1ZXJ5KG9iai0+YWRldiwgJmluZm8pKQ0KPj4+ICvCoMKgwqAgaWYgKGFtZGdwdV9yYXNf ZXJyb3JfcXVlcnkob2JqLT5hZGV2LCAmaW5mbywgZmFsc2UpKQ0KPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+Pj4gIMKgIMKgwqDCoMKgwqAgcmV0dXJuIHNucHJpbnRm KGJ1ZiwgUEFHRV9TSVpFLCAiJXM6ICVsdVxuJXM6ICVsdVxuIiwNCj4+PiBAQCAtNTkxLDcgKzYw MCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Jhc19lbmFibGVfYWxsX2ZlYXR1cmVzKHN0cnVjdA0K Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4gIMKgIMKgIC8qIHF1ZXJ5L2luamVjdC9jdXJl IGJlZ2luICovDQo+Pj4gIMKgIGludCBhbWRncHVfcmFzX2Vycm9yX3F1ZXJ5KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmFzX3F1ZXJ5X2lm ICppbmZvKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmFzX3F1ZXJ5X2lmICppbmZvLCBi b29sIHByaW50KQ0KPj4+ICDCoCB7DQo+Pj4gIMKgwqDCoMKgwqAgc3RydWN0IHJhc19tYW5hZ2Vy ICpvYmogPSBhbWRncHVfcmFzX2ZpbmRfb2JqKGFkZXYsICZpbmZvLT5oZWFkKTsNCj4+PiAgwqDC oMKgwqDCoCBzdHJ1Y3QgcmFzX2Vycl9kYXRhIGVycl9kYXRhID0gezAsIDAsIDAsIE5VTEx9Ow0K Pj4+IEBAIC02MjcsMTIgKzYzNiwxNCBAQCBpbnQgYW1kZ3B1X3Jhc19lcnJvcl9xdWVyeShzdHJ1 Y3QgYW1kZ3B1X2RldmljZQ0KPj4+ICphZGV2LA0KPj4+ICDCoMKgwqDCoMKgIGluZm8tPnVlX2Nv dW50ID0gb2JqLT5lcnJfZGF0YS51ZV9jb3VudDsNCj4+PiAgwqDCoMKgwqDCoCBpbmZvLT5jZV9j b3VudCA9IG9iai0+ZXJyX2RhdGEuY2VfY291bnQ7DQo+Pj4gIMKgIC3CoMKgwqAgaWYgKGVycl9k YXRhLmNlX2NvdW50KQ0KPj4+ICvCoMKgwqAgaWYgKGVycl9kYXRhLmNlX2NvdW50IHx8IHByaW50 KSB7DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfaW5mbyhhZGV2LT5kZXYsICIlbGQgY29y cmVjdGFibGUgZXJyb3JzIGRldGVjdGVkIGluICVzDQo+Pj4gYmxvY2tcbiIsDQo+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2JqLT5lcnJfZGF0YS5jZV9jb3VudCwgcmFzX2Jsb2Nr X3N0cihpbmZvLT5oZWFkLmJsb2NrKSk7DQo+Pj4gLcKgwqDCoCBpZiAoZXJyX2RhdGEudWVfY291 bnQpDQo+Pj4gK8KgwqDCoCB9DQo+Pj4gK8KgwqDCoCBpZiAoZXJyX2RhdGEudWVfY291bnQgfHwg cHJpbnQpIHsNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9pbmZvKGFkZXYtPmRldiwgIiVs ZCB1bmNvcnJlY3RhYmxlIGVycm9ycyBkZXRlY3RlZCBpbg0KPj4+ICVzIGJsb2NrXG4iLA0KPj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9iai0+ZXJyX2RhdGEudWVfY291bnQsIHJh c19ibG9ja19zdHIoaW5mby0+aGVhZC5ibG9jaykpOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICDCoCDC oMKgwqDCoMKgIHJldHVybiAwOw0KPj4+ICDCoCB9DQo+Pj4gQEAgLTcwMiw3ICs3MTMsNyBAQCBp bnQgYW1kZ3B1X3Jhc19xdWVyeV9lcnJvcl9jb3VudChzdHJ1Y3QNCj4+PiBhbWRncHVfZGV2aWNl ICphZGV2LA0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuaGVhZCA9IG9iai0+aGVh ZCwNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIH07DQo+Pj4gIMKgIC3CoMKgwqDCoMKgwqDCoCBp ZiAoYW1kZ3B1X3Jhc19lcnJvcl9xdWVyeShhZGV2LCAmaW5mbykpDQo+Pj4gK8KgwqDCoMKgwqDC oMKgIGlmIChhbWRncHVfcmFzX2Vycm9yX3F1ZXJ5KGFkZXYsICZpbmZvLCB0cnVlKSkNCj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+Pj4gIMKgIMKgwqDC oMKgwqDCoMKgwqDCoCBkYXRhLmNlX2NvdW50ICs9IGluZm8uY2VfY291bnQ7DQo+Pj4gQEAgLTE3 MTgsMyArMTcyOSwxMCBAQCBpbnQgYW1kZ3B1X3Jhc19maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQ0KPj4+ICDCoCDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+ICDCoCB9DQo+Pj4gKw0K Pj4+ICt2b2lkIGFtZGdwdV9yYXNfZ2xvYmFsX3Jhc19pc3Ioc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIGlmIChhdG9taWNfY21weGNoZygmYW1kZ3B1X3Jh c19pbl9pbnRyLCAwLCAxKSA9PSAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIERSTV9XQVJOKCJS QVMgZXZlbnQgb2YgdHlwZSBFUlJFVkVOVF9BVEhVQl9JTlRFUlJVUFQNCj4+PiBkZXRlY3RlZCEg U3RvcHBpbmcgYWxsIEdQVSBqb2JzLlxuIik7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gK30NCj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5oDQo+Pj4g Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmgNCj4+PiBpbmRleCA1YTBk ZjczLi5jMGUyMmFmIDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yYXMuaA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9yYXMuaA0KPj4+IEBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBhbWRncHVfcmFzX2RlYnVnZnNf cmVtb3ZlKHN0cnVjdA0KPj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgcmFzX2NvbW1vbl9pZiAqaGVhZCk7DQo+Pj4gIMKgIMKgIGludCBhbWRn cHVfcmFzX2Vycm9yX3F1ZXJ5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+IC3CoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgcmFzX3F1ZXJ5X2lmICppbmZvKTsNCj4+PiArwqDCoMKgwqDCoMKg wqAgc3RydWN0IHJhc19xdWVyeV9pZiAqaW5mbywgYm9vbCBwcmludCk7DQo+Pj4gIMKgIMKgIGlu dCBhbWRncHVfcmFzX2Vycm9yX2luamVjdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCByYXNfaW5qZWN0X2lmICppbmZvKTsNCj4+PiBA QCAtNjAwLDQgKzYwMCwxNCBAQCBpbnQgYW1kZ3B1X3Jhc19pbnRlcnJ1cHRfcmVtb3ZlX2hhbmRs ZXIoc3RydWN0DQo+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+PiAgwqAgwqAgaW50IGFtZGdw dV9yYXNfaW50ZXJydXB0X2Rpc3BhdGNoKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHJhc19kaXNwYXRjaF9pZiAqaW5mbyk7DQo+Pj4g Kw0KPj4+ICtleHRlcm4gYXRvbWljX3QgYW1kZ3B1X3Jhc19pbl9pbnRyOw0KPj4+ICsNCj4+PiAr c3RhdGljIGlubGluZSBib29sIGFtZGdwdV9yYXNfaW50cl90cmlnZ2VyZWQodm9pZCkNCj4+PiAr ew0KPj4+ICvCoMKgwqAgcmV0dXJuICEhYXRvbWljX3JlYWQoJmFtZGdwdV9yYXNfaW5faW50cik7 DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3ZvaWQgYW1kZ3B1X3Jhc19nbG9iYWxfcmFzX2lzcihzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7DQo+Pj4gKw0KPj4+ICDCoCAjZW5kaWYNCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYw0KPj4+IGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYw0KPj4+IGluZGV4IGIyYzg2YTAuLmU3 YTgzZjYgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5 XzAuYw0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMNCj4+ PiBAQCAtNTY2OSwxMCArNTY2OSwxMiBAQCBzdGF0aWMgaW50DQo+Pj4gZ2Z4X3Y5XzBfcHJvY2Vz c19yYXNfZGF0YV9jYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+PiAgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfaXZfZW50cnkgKmVudHJ5KQ0KPj4+ICDCoCB7DQo+Pj4g IMKgwqDCoMKgwqAgLyogVE9ETyB1ZSB3aWxsIHRyaWdnZXIgYW4gaW50ZXJydXB0LiAqLw0KPj4+ IC3CoMKgwqAga2dkMmtmZF9zZXRfc3JhbV9lY2NfZmxhZyhhZGV2LT5rZmQuZGV2KTsNCj4+PiAt wqDCoMKgIGlmIChhZGV2LT5nZnguZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9jb3VudCkNCj4+PiAt wqDCoMKgwqDCoMKgwqAgYWRldi0+Z2Z4LmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfY291bnQoYWRl diwgZXJyX2RhdGEpOw0KPj4+IC3CoMKgwqAgYW1kZ3B1X3Jhc19yZXNldF9ncHUoYWRldiwgMCk7 DQo+Pj4gK8KgwqDCoCBpZiAoIWFtZGdwdV9yYXNfaXNfc3VwcG9ydGVkKGFkZXYsIEFNREdQVV9S QVNfQkxPQ0tfX0dGWCkpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAga2dkMmtmZF9zZXRfc3JhbV9l Y2NfZmxhZyhhZGV2LT5rZmQuZGV2KTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGFkZXYtPmdm eC5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGFkZXYtPmdmeC5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KGFkZXYsIGVycl9kYXRh KTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3Jhc19yZXNldF9ncHUoYWRldiwgMCk7DQo+ Pj4gK8KgwqDCoCB9DQo+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuIEFNREdQVV9SQVNfU1VDQ0VTUzsN Cj4+PiAgwqAgfQ0KPj4+ICDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ21jX3Y5XzAuYw0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAu Yw0KPj4+IGluZGV4IDQzYjRmYmMuLjg3YTY2YzIgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYw0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dtY192OV8wLmMNCj4+PiBAQCAtMjQzLDE4ICsyNDMsMjAgQEAgc3RhdGljIGlu dCBnbWNfdjlfMF9wcm9jZXNzX3Jhc19kYXRhX2NiKHN0cnVjdA0KPj4+IGFtZGdwdV9kZXZpY2Ug KmFkZXYsDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmFzX2Vycl9kYXRhICplcnJf ZGF0YSwNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfaXZfZW50cnkgKmVu dHJ5KQ0KPj4+ICDCoCB7DQo+Pj4gLcKgwqDCoCBrZ2Qya2ZkX3NldF9zcmFtX2VjY19mbGFnKGFk ZXYtPmtmZC5kZXYpOw0KPj4+IC3CoMKgwqAgaWYgKGFkZXYtPnVtYy5mdW5jcy0+cXVlcnlfcmFz X2Vycm9yX2NvdW50KQ0KPj4+IC3CoMKgwqDCoMKgwqDCoCBhZGV2LT51bWMuZnVuY3MtPnF1ZXJ5 X3Jhc19lcnJvcl9jb3VudChhZGV2LCBlcnJfZGF0YSk7DQo+Pj4gLcKgwqDCoCAvKiB1bWMgcXVl cnlfcmFzX2Vycm9yX2FkZHJlc3MgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgY2xlYXJpbmcNCj4+ PiAtwqDCoMKgwqAgKiBlcnJvciBzdGF0dXMNCj4+PiAtwqDCoMKgwqAgKi8NCj4+PiAtwqDCoMKg IGlmIChhZGV2LT51bWMuZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9hZGRyZXNzKQ0KPj4+IC3CoMKg wqDCoMKgwqDCoCBhZGV2LT51bWMuZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9hZGRyZXNzKGFkZXYs IGVycl9kYXRhKTsNCj4+PiArwqDCoMKgIGlmICghYW1kZ3B1X3Jhc19pc19zdXBwb3J0ZWQoYWRl diwgQU1ER1BVX1JBU19CTE9DS19fR0ZYKSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBrZ2Qya2Zk X3NldF9zcmFtX2VjY19mbGFnKGFkZXYtPmtmZC5kZXYpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBp ZiAoYWRldi0+dW1jLmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfY291bnQpDQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYWRldi0+dW1jLmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfY291bnQoYWRl diwgZXJyX2RhdGEpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCAvKiB1bWMgcXVlcnlfcmFzX2Vycm9y X2FkZHJlc3MgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgY2xlYXJpbmcNCj4+PiArwqDCoMKgwqDC oMKgwqDCoCAqIGVycm9yIHN0YXR1cw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIGlmIChhZGV2LT51bWMuZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9hZGRyZXNz KQ0KPj4+ICsgYWRldi0+dW1jLmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfYWRkcmVzcyhhZGV2LCBl cnJfZGF0YSk7DQo+Pj4gIMKgIC3CoMKgwqAgLyogb25seSB1bmNvcnJlY3RhYmxlIGVycm9yIG5l ZWRzIGdwdSByZXNldCAqLw0KPj4+IC3CoMKgwqAgaWYgKGVycl9kYXRhLT51ZV9jb3VudCkNCj4+ PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3Jhc19yZXNldF9ncHUoYWRldiwgMCk7DQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIC8qIG9ubHkgdW5jb3JyZWN0YWJsZSBlcnJvciBuZWVkcyBncHUgcmVzZXQg Ki8NCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGVycl9kYXRhLT51ZV9jb3VudCkNCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfcmFzX3Jlc2V0X2dwdShhZGV2LCAwKTsNCj4+PiAr wqDCoMKgIH0NCj4+PiAgwqAgwqDCoMKgwqDCoCByZXR1cm4gQU1ER1BVX1JBU19TVUNDRVNTOw0K Pj4+ICDCoCB9DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L25i aW9fdjdfNC5jDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9uYmlvX3Y3XzQuYw0K Pj4+IGluZGV4IDM2N2Y5ZDYuLjU0NTk5MGMgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvbmJpb192N180LmMNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9uYmlvX3Y3XzQuYw0KPj4+IEBAIC0zMCw2ICszMCw3IEBADQo+Pj4gIMKgICNpbmNs dWRlICJuYmlvL25iaW9fN180XzBfc21uLmgiDQo+Pj4gIMKgICNpbmNsdWRlICJpdnNyY2lkL25i aW8vaXJxc3Jjc19uYmlmXzdfNC5oIg0KPj4+ICDCoCAjaW5jbHVkZSA8dWFwaS9saW51eC9rZmRf aW9jdGwuaD4NCj4+PiArI2luY2x1ZGUgImFtZGdwdV9yYXMuaCINCj4+PiAgwqAgwqAgI2RlZmlu ZSBzbW5OQklGX01HQ0dfQ1RSTF9MQ0xLwqDCoMKgIDB4MTAxM2EyMWMNCj4+PiAgwqAgQEAgLTMy OSw2ICszMzAsOCBAQCBzdGF0aWMgdm9pZA0KPj4+IG5iaW9fdjdfNF9oYW5kbGVfcmFzX2NvbnRy b2xsZXJfaW50cl9ub19iaWZyaW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlDQo+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJRl9ET09SQkVMTF9J TlRfQ05UTCwNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgUkFTX0NOVExSX0lOVEVSUlVQVF9DTEVBUiwgMSk7DQo+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoCBXUkVHMzJfU09DMTUoTkJJTywgMCwgbW1CSUZfRE9PUkJFTExfSU5UX0NOVEwsDQo+ Pj4gYmlmX2Rvb3JiZWxsX2ludHJfY250bCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBh bWRncHVfcmFzX2dsb2JhbF9yYXNfaXNyKGFkZXYpOw0KPj4+ICDCoMKgwqDCoMKgIH0NCj4+PiAg wqAgfQ0KPj4+ICDCoCBAQCAtMzQ0LDYgKzM0Nyw4IEBAIHN0YXRpYyB2b2lkDQo+Pj4gbmJpb192 N180X2hhbmRsZV9yYXNfZXJyX2V2ZW50X2F0aHViX2ludHJfbm9fYmlmcmluZyhzdHJ1Y3QgYW1k Z3B1X2QNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQklGX0RPT1JCRUxMX0lOVF9DTlRMLA0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSQVNfQVRIVUJfRVJSX0VWRU5UX0lOVEVSUlVQ VF9DTEVBUiwgMSk7DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBXUkVHMzJfU09DMTUoTkJJTywg MCwgbW1CSUZfRE9PUkJFTExfSU5UX0NOVEwsDQo+Pj4gYmlmX2Rvb3JiZWxsX2ludHJfY250bCk7 DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBhbWRncHVfcmFzX2dsb2JhbF9yYXNfaXNyKGFk ZXYpOw0KPj4+ICDCoMKgwqDCoMKgIH0NCj4+PiAgwqAgfQ0KPj4+ICDCoCBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMNCj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jDQo+Pj4gaW5kZXggOTU2NDMyZi4uNDM4ZTUwNCAx MDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYw0K Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jDQo+Pj4gQEAg LTE5NzIsMjQgKzE5NzIsMjYgQEAgc3RhdGljIGludA0KPj4+IHNkbWFfdjRfMF9wcm9jZXNzX3Jh c19kYXRhX2NiKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+ICDCoMKgwqDCoMKgIHVp bnQzMl90IGVycl9zb3VyY2U7DQo+Pj4gIMKgwqDCoMKgwqAgaW50IGluc3RhbmNlOw0KPj4+ICDC oCAtwqDCoMKgIGluc3RhbmNlID0gc2RtYV92NF8wX2lycV9pZF90b19zZXEoZW50cnktPmNsaWVu dF9pZCk7DQo+Pj4gLcKgwqDCoCBpZiAoaW5zdGFuY2UgPCAwKQ0KPj4+IC3CoMKgwqDCoMKgwqDC oCByZXR1cm4gMDsNCj4+PiArwqDCoMKgIGlmICghYW1kZ3B1X3Jhc19pc19zdXBwb3J0ZWQoYWRl diwgQU1ER1BVX1JBU19CTE9DS19fR0ZYKSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpbnN0YW5j ZSA9IHNkbWFfdjRfMF9pcnFfaWRfdG9fc2VxKGVudHJ5LT5jbGllbnRfaWQpOw0KPj4+ICvCoMKg wqDCoMKgwqDCoCBpZiAoaW5zdGFuY2UgPCAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAwOw0KPj4+ICDCoCAtwqDCoMKgIHN3aXRjaCAoZW50cnktPnNyY19pZCkgew0KPj4+ IC3CoMKgwqAgY2FzZSBTRE1BMF80XzBfX1NSQ0lEX19TRE1BX1NSQU1fRUNDOg0KPj4+IC3CoMKg wqDCoMKgwqDCoCBlcnJfc291cmNlID0gMDsNCj4+PiAtwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+ Pj4gLcKgwqDCoCBjYXNlIFNETUEwXzRfMF9fU1JDSURfX1NETUFfRUNDOg0KPj4+IC3CoMKgwqDC oMKgwqDCoCBlcnJfc291cmNlID0gMTsNCj4+PiAtwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4g LcKgwqDCoCBkZWZhdWx0Og0KPj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+PiAtwqDC oMKgIH0NCj4+PiArwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChlbnRyeS0+c3JjX2lkKSB7DQo+Pj4g K8KgwqDCoMKgwqDCoMKgIGNhc2UgU0RNQTBfNF8wX19TUkNJRF9fU0RNQV9TUkFNX0VDQzoNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnJfc291cmNlID0gMDsNCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBicmVhazsNCj4+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBTRE1BMF80XzBf X1NSQ0lEX19TRE1BX0VDQzoNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnJfc291cmNl ID0gMTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+PiArwqDCoMKgwqDC oMKgwqAgZGVmYXVsdDoNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+ PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ICDCoCAtwqDCoMKgIGtnZDJrZmRfc2V0X3NyYW1fZWNj X2ZsYWcoYWRldi0+a2ZkLmRldik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGtnZDJrZmRfc2V0X3Ny YW1fZWNjX2ZsYWcoYWRldi0+a2ZkLmRldik7DQo+Pj4gIMKgIC3CoMKgwqAgYW1kZ3B1X3Jhc19y ZXNldF9ncHUoYWRldiwgMCk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV9yYXNfcmVzZXRf Z3B1KGFkZXYsIDApOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICDCoCDCoMKgwqDCoMKgIHJldHVybiBB TURHUFVfUkFTX1NVQ0NFU1M7DQo+Pj4gIMKgIH0NCg0KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9hbWQtZ2Z4