From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com ([134.134.136.20]:28275 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752821AbbETVPm (ORCPT ); Wed, 20 May 2015 17:15:42 -0400 From: "Jiang, Dave" To: "bhelgaas@google.com" CC: "Allen.Hubbe@emc.com" , "linux-kernel@vger.kernel.org" , "linux-pci@vger.kernel.org" , "jdmason@kudzu.us" , "linux-ntb@googlegroups.com" Subject: Re: [PATCH 04/16] Check the DID for certain workaround error flags to be set. Date: Wed, 20 May 2015 21:15:39 +0000 Message-ID: <1432156539.19618.135.camel@intel.com> References: <9c6ef6eec533bd94ddc6df96bb0b2d37baff75cf.1432135631.git.Allen.Hubbe@emc.com> In-Reply-To: Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org List-ID: T24gV2VkLCAyMDE1LTA1LTIwIGF0IDE2OjExIC0wNTAwLCBCam9ybiBIZWxnYWFzIHdyb3RlOg0K PiBPbiBXZWQsIE1heSAyMCwgMjAxNSBhdCAxMDo0MSBBTSwgQWxsZW4gSHViYmUgPEFsbGVuLkh1 YmJlQGVtYy5jb20+IHdyb3RlOg0KPiA+IEZyb206IERhdmUgSmlhbmcgPGRhdmUuamlhbmdAaW50 ZWwuY29tPg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogRGF2ZSBKaWFuZyA8ZGF2ZS5qaWFuZ0Bp bnRlbC5jb20+DQo+IA0KPiBOZWVkcyBhIHRvcGljIGluIHRoZSBzdWJqZWN0IGxpbmUgYW5kIGEg Y2hhbmdlbG9nLg0KPiANCj4gSXQgYWxzbyBzZWVtcyB0byBkbyBhIGxvdCBtb3JlIHRoYW4ganVz dCBjaGVja2luZyBkZXZpY2UgSUQgKEkgYXNzdW1lDQo+IHRoYXQncyB3aGF0ICJESUQiIG1lYW5z KSwgc28gdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgc3BsaXQgaW50bw0KPiBzZXZlcmFsIHBhdGNo ZXMgdGhhdCBlYWNoIGRvIG9uZSB0aGluZy4gIEkgc2VlIGF0IGxlYXN0Og0KPiANCj4gICAtIGNv c21ldGljIGNvZGUgcmVzdHJ1Y3R1cmluZw0KPiAgIC0gd29ya19zdHJ1Y3QvdGFza2xldF9zdHJ1 Y3QgY2hhbmdlcw0KPiAgIC0gbmV3ICNkZWZpbmVzIGFuZCBiYXIyX29mZigpIGNoYW5nZXMNCg0K SSB0aGluayB0aGlzIHBhdGNoIGdvdCBtYW5nbGVkIHdpdGggY291cGxlIG90aGVyIHBhdGNoZXMu IEFsbGVuPw0KDQo+IA0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdf aW50ZWwuYyB8IDE5NiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAg ZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2ludGVsLmggfCAgMjQgKysrKy0NCj4gPiAgZHJp dmVycy9udGIvbnRiX3RyYW5zcG9ydC5jICAgICAgICAgfCAgMTYgKy0tDQo+ID4gIDMgZmlsZXMg Y2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyksIDEwMyBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfaW50ZWwuYyBiL2RyaXZlcnMv bnRiL2h3L2ludGVsL250Yl9od19pbnRlbC5jDQo+ID4gaW5kZXggZDE2MmYyMi4uODlmZWE1MCAx MDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfaW50ZWwuYw0KPiA+ ICsrKyBiL2RyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19pbnRlbC5jDQo+ID4gQEAgLTUwMyw3 ICs1MDMsNiBAQCBzdGF0aWMgc3NpemVfdCBuZGV2X2RlYnVnZnNfcmVhZChzdHJ1Y3QgZmlsZSAq ZmlscCwgY2hhciBfX3VzZXIgKnVidWYsDQo+ID4gICAgICAgICBzaXplX3QgYnVmX3NpemU7DQo+ ID4gICAgICAgICBzc2l6ZV90IHJldCwgb2ZmOw0KPiA+ICAgICAgICAgdW5pb24geyB1NjQgdjY0 OyB1MzIgdjMyOyB1MTYgdjE2OyB9IHU7DQo+ID4gLSAgICAgICB1bnNpZ25lZCBsb25nIHJlZzsN Cj4gPg0KPiA+ICAgICAgICAgbmRldiA9IGZpbHAtPnByaXZhdGVfZGF0YTsNCj4gPiAgICAgICAg IG1taW8gPSBuZGV2LT5zZWxmX21taW87DQo+ID4gQEAgLTUzOCwxMCArNTM3LDEwIEBAIHN0YXRp YyBzc2l6ZV90IG5kZXZfZGVidWdmc19yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNl ciAqdWJ1ZiwNCj4gPg0KPiA+ICAgICAgICAgaWYgKCFuZGV2LT5yZWctPmxpbmtfaXNfdXAobmRl dikpIHsNCj4gPiAgICAgICAgICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYgKyBvZmYsIGJ1 Zl9zaXplIC0gb2ZmLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaW5r IFNhdHVzIC1cdFx0RG93blxuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkxpbmsgU3RhdHVzIC1cdFx0RG93blxuIik7DQo+ID4gICAgICAgICB9IGVsc2Ugew0KPiA+ ICAgICAgICAgICAgICAgICBvZmYgKz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUgLSBv ZmYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxpbmsgU2F0dXMgLVx0 XHRVcFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxpbmsgU3Rh dHVzIC1cdFx0VXBcbiIpOw0KPiA+ICAgICAgICAgICAgICAgICBvZmYgKz0gc2NucHJpbnRmKGJ1 ZiArIG9mZiwgYnVmX3NpemUgLSBvZmYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIkxpbmsgU3BlZWQgLVx0XHRQQ0ktRSBHZW4gJXVcbiIsDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlRCX0xOS19TVEFfU1BFRUQobmRldi0+bG5rX3N0YSkpOw0K PiA+IEBAIC01NjgsMzYgKzU2NywzMCBAQCBzdGF0aWMgc3NpemVfdCBuZGV2X2RlYnVnZnNfcmVh ZChzdHJ1Y3QgZmlsZSAqZmlscCwgY2hhciBfX3VzZXIgKnVidWYsDQo+ID4gICAgICAgICBvZmYg Kz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUgLSBvZmYsDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICJEb29yYmVsbCBNYXNrIENhY2hlZCAtXHQlI2xseFxuIiwgbmRldi0+ZGJf bWFzayk7DQo+ID4NCj4gPiAtICAgICAgIHJlZyA9IG5kZXYtPnNlbGZfcmVnLT5kYl9tYXNrOw0K PiA+IC0gICAgICAgdS52NjQgPSBuZGV2X2RiX3JlYWQobmRldiwgbW1pbyArIHJlZyk7DQo+ID4g KyAgICAgICB1LnY2NCA9IG5kZXZfZGJfcmVhZChuZGV2LCBtbWlvICsgbmRldi0+c2VsZl9yZWct PmRiX21hc2spOw0KPiA+ICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYgKyBvZmYsIGJ1Zl9z aXplIC0gb2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAiRG9vcmJlbGwgTWFzayAt XHRcdCUjbGx4XG4iLCB1LnY2NCk7DQo+ID4NCj4gPiAtICAgICAgIHJlZyA9IG5kZXYtPnNlbGZf cmVnLT5kYl9iZWxsOw0KPiA+IC0gICAgICAgdS52NjQgPSBuZGV2X2RiX3JlYWQobmRldiwgbW1p byArIHJlZyk7DQo+ID4gKyAgICAgICB1LnY2NCA9IG5kZXZfZGJfcmVhZChuZGV2LCBtbWlvICsg bmRldi0+c2VsZl9yZWctPmRiX2JlbGwpOw0KPiA+ICAgICAgICAgb2ZmICs9IHNjbnByaW50Zihi dWYgKyBvZmYsIGJ1Zl9zaXplIC0gb2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAi RG9vcmJlbGwgQmVsbCAtXHRcdCUjbGx4XG4iLCB1LnY2NCk7DQo+ID4NCj4gPiAgICAgICAgIG9m ZiArPSBzY25wcmludGYoYnVmICsgb2ZmLCBidWZfc2l6ZSAtIG9mZiwNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgIlxuTlRCIEluY29taW5nIFhMQVQ6XG4iKTsNCj4gPg0KPiA+IC0gICAg ICAgcmVnID0gYmFyMl9vZmYobmRldi0+eGxhdF9yZWctPmJhcjJfeGxhdCwgMik7DQo+ID4gLSAg ICAgICB1LnY2NCA9IGlvcmVhZDY0KG1taW8gKyByZWcpOw0KPiA+ICsgICAgICAgdS52NjQgPSBp b3JlYWQ2NChtbWlvICsgYmFyMl9vZmYobmRldi0+eGxhdF9yZWctPmJhcjJfeGxhdCwgMikpOw0K PiA+ICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYgKyBvZmYsIGJ1Zl9zaXplIC0gb2ZmLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAiWExBVDIzIC1cdFx0JSMwMThsbHhcbiIsIHUu djY0KTsNCj4gPg0KPiA+IC0gICAgICAgcmVnID0gYmFyMl9vZmYobmRldi0+eGxhdF9yZWctPmJh cjJfeGxhdCwgNCk7DQo+ID4gLSAgICAgICB1LnY2NCA9IGlvcmVhZDY0KG1taW8gKyByZWcpOw0K PiA+ICsgICAgICAgdS52NjQgPSBpb3JlYWQ2NChtbWlvICsgYmFyMl9vZmYobmRldi0+eGxhdF9y ZWctPmJhcjJfeGxhdCwgNCkpOw0KPiA+ICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYgKyBv ZmYsIGJ1Zl9zaXplIC0gb2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAiWExBVDQ1 IC1cdFx0JSMwMThsbHhcbiIsIHUudjY0KTsNCj4gPg0KPiA+IC0gICAgICAgcmVnID0gYmFyMl9v ZmYobmRldi0+eGxhdF9yZWctPmJhcjJfbGltaXQsIDIpOw0KPiA+IC0gICAgICAgdS52NjQgPSBp b3JlYWQ2NChtbWlvICsgcmVnKTsNCj4gPiArICAgICAgIHUudjY0ID0gaW9yZWFkNjQobW1pbyAr IGJhcjJfb2ZmKG5kZXYtPnhsYXRfcmVnLT5iYXIyX2xpbWl0LCAyKSk7DQo+ID4gICAgICAgICBv ZmYgKz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUgLSBvZmYsDQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICJMTVQyMyAtXHRcdFx0JSMwMThsbHhcbiIsIHUudjY0KTsNCj4gPg0K PiA+IC0gICAgICAgcmVnID0gYmFyMl9vZmYobmRldi0+eGxhdF9yZWctPmJhcjJfbGltaXQsIDQp Ow0KPiA+IC0gICAgICAgdS52NjQgPSBpb3JlYWQ2NChtbWlvICsgcmVnKTsNCj4gPiArICAgICAg IHUudjY0ID0gaW9yZWFkNjQobW1pbyArIGJhcjJfb2ZmKG5kZXYtPnhsYXRfcmVnLT5iYXIyX2xp bWl0LCA0KSk7DQo+ID4gICAgICAgICBvZmYgKz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3Np emUgLSBvZmYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICJMTVQ0NSAtXHRcdFx0JSMw MThsbHhcbiIsIHUudjY0KTsNCj4gPg0KPiA+IEBAIC02MDYsNDEgKzU5OSwzNCBAQCBzdGF0aWMg c3NpemVfdCBuZGV2X2RlYnVnZnNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgY2hhciBfX3VzZXIg KnVidWYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYg KyBvZmYsIGJ1Zl9zaXplIC0gb2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlxuTlRCIE91dGdvaW5nIEIyQiBYTEFUOlxuIik7DQo+ID4NCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICByZWcgPSBiYXIyX29mZihTTkJfUEJBUjJYTEFUX09GRlNFVCwg Mik7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgdS52NjQgPSBpb3JlYWQ2NChtbWlvICsg cmVnKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB1LnY2NCA9IGlvcmVhZDY0KG1taW8g KyBTTkJfUEJBUjIzWExBVF9PRkZTRVQpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG9m ZiArPSBzY25wcmludGYoYnVmICsgb2ZmLCBidWZfc2l6ZSAtIG9mZiwNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCMkIgWExBVDIzIC1cdFx0JSMwMThsbHhc biIsIHUudjY0KTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IGJhcjJf b2ZmKFNOQl9QQkFSMlhMQVRfT0ZGU0VULCA0KTsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICB1LnY2NCA9IGlvcmVhZDY0KG1taW8gKyByZWcpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIHUudjY0ID0gaW9yZWFkNjQobW1pbyArIFNOQl9QQkFSNDVYTEFUX09GRlNFVCk7DQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYgKyBvZmYsIGJ1Zl9z aXplIC0gb2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkIyQiBYTEFUNDUgLVx0XHQlIzAxOGxseFxuIiwgdS52NjQpOw0KPiA+DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgcmVnID0gYmFyMl9vZmYoU05CX1BCQVIyTE1UX09GRlNFVCwgMik7DQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgdS52NjQgPSBpb3JlYWQ2NChtbWlvICsgcmVnKTsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICB1LnY2NCA9IGlvcmVhZDY0KG1taW8gKyBTTkJf UEJBUjIzTE1UX09GRlNFVCk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgb2ZmICs9IHNj bnByaW50ZihidWYgKyBvZmYsIGJ1Zl9zaXplIC0gb2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkIyQiBMTVQyMyAtXHRcdCUjMDE4bGx4XG4iLCB1LnY2 NCk7DQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZWcgPSBiYXIyX29mZihTTkJf UEJBUjJMTVRfT0ZGU0VULCA0KTsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICB1LnY2NCA9 IGlvcmVhZDY0KG1taW8gKyByZWcpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHUudjY0 ID0gaW9yZWFkNjQobW1pbyArIFNOQl9QQkFSNDVMTVRfT0ZGU0VUKTsNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBvZmYgKz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUgLSBvZmYs DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQjJCIExNVDQ1 IC1cdFx0JSMwMThsbHhcbiIsIHUudjY0KTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIG9mZiArPSBzY25wcmludGYoYnVmICsgb2ZmLCBidWZfc2l6ZSAtIG9mZiwNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbk5UQiBTZWNvbmRhcnkgQkFS OlxuIik7DQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZWcgPSBiYXIwX29mZihT TkJfU0JBUjBCQVNFX09GRlNFVCwgMCk7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgdS52 NjQgPSBpb3JlYWQ2NChtbWlvICsgcmVnKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB1 LnY2NCA9IGlvcmVhZDY0KG1taW8gKyBTTkJfU0JBUjBCQVNFX09GRlNFVCk7DQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYgKyBvZmYsIGJ1Zl9zaXplIC0g b2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNCQVIw MSAtXHRcdCUjMDE4bGx4XG4iLCB1LnY2NCk7DQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICByZWcgPSBiYXIwX29mZihTTkJfU0JBUjBCQVNFX09GRlNFVCwgMik7DQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgdS52NjQgPSBpb3JlYWQ2NChtbWlvICsgcmVnKTsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICB1LnY2NCA9IGlvcmVhZDY0KG1taW8gKyBTTkJfU0JBUjIzQkFT RV9PRkZTRVQpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiArPSBzY25wcmludGYo YnVmICsgb2ZmLCBidWZfc2l6ZSAtIG9mZiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJTQkFSMjMgLVx0XHQlIzAxOGxseFxuIiwgdS52NjQpOw0KPiA+DQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gYmFyMF9vZmYoU05CX1NCQVIwQkFTRV9P RkZTRVQsIDQpOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHUudjY0ID0gaW9yZWFkNjQo bW1pbyArIHJlZyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdS52NjQgPSBpb3JlYWQ2 NChtbWlvICsgU05CX1NCQVI0NUJBU0VfT0ZGU0VUKTsNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBvZmYgKz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUgLSBvZmYsDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0JBUjQ1IC1cdFx0JSMwMThs bHhcbiIsIHUudjY0KTsNCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+IEBAIC02NDgsMzEgKzYz NCwzMCBAQCBzdGF0aWMgc3NpemVfdCBuZGV2X2RlYnVnZnNfcmVhZChzdHJ1Y3QgZmlsZSAqZmls cCwgY2hhciBfX3VzZXIgKnVidWYsDQo+ID4gICAgICAgICAgICAgICAgIG9mZiArPSBzY25wcmlu dGYoYnVmICsgb2ZmLCBidWZfc2l6ZSAtIG9mZiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiXG5TTkIgTlRCIFN0YXRpc3RpY3M6XG4iKTsNCj4gPg0KPiA+IC0gICAgICAg ICAgICAgICByZWcgPSBTTkJfVVNNRU1NSVNTX09GRlNFVDsNCj4gPiAtICAgICAgICAgICAgICAg dS52MTYgPSBpb3JlYWQxNihtbWlvICsgcmVnKTsNCj4gPiArICAgICAgICAgICAgICAgdS52MTYg PSBpb3JlYWQxNihtbWlvICsgU05CX1VTTUVNTUlTU19PRkZTRVQpOw0KPiA+ICAgICAgICAgICAg ICAgICBvZmYgKz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUgLSBvZmYsDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVwc3RyZWFtIE1lbW9yeSBNaXNzIC1cdCV1 XG4iLCB1LnYxNik7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgb2ZmICs9IHNjbnByaW50Zihi dWYgKyBvZmYsIGJ1Zl9zaXplIC0gb2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJcblNOQiBOVEIgSGFyZHdhcmUgRXJyb3JzOlxuIik7DQo+ID4NCj4gPiAtICAgICAg ICAgICAgICAgcmVnID0gU05CX0RFVlNUU19PRkZTRVQ7DQo+ID4gLSAgICAgICAgICAgICAgIGlm ICghcGNpX3JlYWRfY29uZmlnX3dvcmQobmRldi0+bnRiLnBkZXYsIHJlZywgJnUudjE2KSkNCj4g PiArICAgICAgICAgICAgICAgaWYgKCFwY2lfcmVhZF9jb25maWdfd29yZChuZGV2LT5udGIucGRl diwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTkJfREVW U1RTX09GRlNFVCwgJnUudjE2KSkNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgKz0g c2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUgLSBvZmYsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiREVWU1RTIC1cdFx0JSMwNnhcbiIsIHUudjE2KTsN Cj4gPg0KPiA+IC0gICAgICAgICAgICAgICByZWcgPSBTTkJfTElOS19TVEFUVVNfT0ZGU0VUOw0K PiA+IC0gICAgICAgICAgICAgICBpZiAoIXBjaV9yZWFkX2NvbmZpZ193b3JkKG5kZXYtPm50Yi5w ZGV2LCByZWcsICZ1LnYxNikpDQo+ID4gKyAgICAgICAgICAgICAgIGlmICghcGNpX3JlYWRfY29u ZmlnX3dvcmQobmRldi0+bnRiLnBkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU05CX0xJTktfU1RBVFVTX09GRlNFVCwgJnUudjE2KSkNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBvZmYgKz0gc2NucHJpbnRmKGJ1ZiArIG9mZiwgYnVmX3NpemUg LSBvZmYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTE5L U1RTIC1cdFx0JSMwNnhcbiIsIHUudjE2KTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICByZWcg PSBTTkJfVU5DRVJSU1RTX09GRlNFVDsNCj4gPiAtICAgICAgICAgICAgICAgaWYgKCFwY2lfcmVh ZF9jb25maWdfZHdvcmQobmRldi0+bnRiLnBkZXYsIHJlZywgJnUudjMyKSkNCj4gPiArICAgICAg ICAgICAgICAgaWYgKCFwY2lfcmVhZF9jb25maWdfZHdvcmQobmRldi0+bnRiLnBkZXYsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOQl9VTkNFUlJTVFNf T0ZGU0VULCAmdS52MzIpKQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiArPSBzY25w cmludGYoYnVmICsgb2ZmLCBidWZfc2l6ZSAtIG9mZiwNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJVTkNFUlJTVFMgLVx0XHQlIzA2eFxuIiwgdS52MzIpOw0K PiA+DQo+ID4gLSAgICAgICAgICAgICAgIHJlZyA9IFNOQl9DT1JFUlJTVFNfT0ZGU0VUOw0KPiA+ IC0gICAgICAgICAgICAgICBpZiAoIXBjaV9yZWFkX2NvbmZpZ19kd29yZChuZGV2LT5udGIucGRl diwgcmVnLCAmdS52MzIpKQ0KPiA+ICsgICAgICAgICAgICAgICBpZiAoIXBjaV9yZWFkX2NvbmZp Z19kd29yZChuZGV2LT5udGIucGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU05CX0NPUkVSUlNUU19PRkZTRVQsICZ1LnYzMikpDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgb2ZmICs9IHNjbnByaW50ZihidWYgKyBvZmYsIGJ1Zl9zaXplIC0g b2ZmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNPUkVS UlNUUyAtXHRcdCUjMDZ4XG4iLCB1LnYzMik7DQo+ID4gICAgICAgICB9DQo+ID4gQEAgLTEzODgs NyArMTM3Myw2IEBAIHN0YXRpYyBpbnQgc25iX3NldHVwX2IyYl9tdyhzdHJ1Y3QgaW50ZWxfbnRi X2RldiAqbmRldiwNCj4gPiAgew0KPiA+ICAgICAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7DQo+ ID4gICAgICAgICB2b2lkIF9faW9tZW0gKm1taW87DQo+ID4gLSAgICAgICB1bnNpZ25lZCBsb25n IG9mZjsNCj4gPiAgICAgICAgIHJlc291cmNlX3NpemVfdCBiYXJfc2l6ZTsNCj4gPiAgICAgICAg IHBoeXNfYWRkcl90IGJhcl9hZGRyOw0KPiA+ICAgICAgICAgaW50IGIyYl9iYXI7DQo+ID4gQEAg LTE0ODQsOSArMTQ2OCw2IEBAIHN0YXRpYyBpbnQgc25iX3NldHVwX2IyYl9tdyhzdHJ1Y3QgaW50 ZWxfbnRiX2RldiAqbmRldiwNCj4gPiAgICAgICAgICAgICAgICAgZGV2X2RiZyhuZGV2X2Rldihu ZGV2KSwgIlNCQVI1U1ogJSN4XG4iLCBiYXJfc3opOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4g LSAgICAgICAvKiBzZXR1cCBpbmNvbWluZyBiYXIgYmFzZSBhZGRyZXNzZXMgKi8NCj4gPiAtICAg ICAgIG9mZiA9IFNOQl9TQkFSMEJBU0VfT0ZGU0VUOw0KPiA+IC0NCj4gPiAgICAgICAgIC8qIFNC QVIwMSBoaXQgYnkgZmlyc3QgcGFydCBvZiB0aGUgYjJiIGJhciAqLw0KPiA+ICAgICAgICAgaWYg KGIyYl9iYXIgPT0gMCkgew0KPiA+ICAgICAgICAgICAgICAgICBiYXJfYWRkciA9IGFkZHItPmJh cjBfYWRkcjsNCj4gPiBAQCAtMTUwNCw3ICsxNDg1LDcgQEAgc3RhdGljIGludCBzbmJfc2V0dXBf YjJiX213KHN0cnVjdCBpbnRlbF9udGJfZGV2ICpuZGV2LA0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ ID4gICAgICAgICBkZXZfZGJnKG5kZXZfZGV2KG5kZXYpLCAiU0JBUjAxICUjMDE4bGx4XG4iLCBi YXJfYWRkcik7DQo+ID4gLSAgICAgICBpb3dyaXRlNjQoYmFyX2FkZHIsIG1taW8gKyBiYXIwX29m ZihvZmYsIDApKTsNCj4gPiArICAgICAgIGlvd3JpdGU2NChiYXJfYWRkciwgbW1pbyArIFNOQl9T QkFSMEJBU0VfT0ZGU0VUKTsNCj4gPg0KPiA+ICAgICAgICAgLyogT3RoZXIgU0JBUiBhcmUgbm9y bWFsbHkgaGl0IGJ5IHRoZSBQQkFSIHhsYXQsIGV4Y2VwdCBmb3IgYjJiIGJhci4NCj4gPiAgICAg ICAgICAqIFRoZSBiMmIgYmFyIGlzIGVpdGhlciBkaXNhYmxlZCBhYm92ZSwgb3IgY29uZmlndXJl ZCBoYWxmLXNpemUsIGFuZA0KPiA+IEBAIC0xNTEyLDEwMiArMTQ5Myw5NiBAQCBzdGF0aWMgaW50 IHNuYl9zZXR1cF9iMmJfbXcoc3RydWN0IGludGVsX250Yl9kZXYgKm5kZXYsDQo+ID4gICAgICAg ICAgKi8NCj4gPg0KPiA+ICAgICAgICAgYmFyX2FkZHIgPSBhZGRyLT5iYXIyX2FkZHI2NCArIChi MmJfYmFyID09IDIgPyBuZGV2LT5iMmJfb2ZmIDogMCk7DQo+ID4gLSAgICAgICBpb3dyaXRlNjQo YmFyX2FkZHIsIG1taW8gKyBiYXIwX29mZihvZmYsIDIpKTsNCj4gPiAtICAgICAgIGJhcl9hZGRy ID0gaW9yZWFkNjQobW1pbyArIGJhcjBfb2ZmKG9mZiwgMikpOw0KPiA+ICsgICAgICAgaW93cml0 ZTY0KGJhcl9hZGRyLCBtbWlvICsgU05CX1NCQVIyM0JBU0VfT0ZGU0VUKTsNCj4gPiArICAgICAg IGJhcl9hZGRyID0gaW9yZWFkNjQobW1pbyArIFNOQl9TQkFSMjNCQVNFX09GRlNFVCk7DQo+ID4g ICAgICAgICBkZXZfZGJnKG5kZXZfZGV2KG5kZXYpLCAiU0JBUjIzICUjMDE4bGx4XG4iLCBiYXJf YWRkcik7DQo+ID4NCj4gPiAgICAgICAgIGlmICghbmRldi0+YmFyNF9zcGxpdCkgew0KPiA+ICAg ICAgICAgICAgICAgICBiYXJfYWRkciA9IGFkZHItPmJhcjRfYWRkcjY0ICsNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAoYjJiX2JhciA9PSA0ID8gbmRldi0+YjJiX29mZiA6IDApOw0KPiA+ IC0gICAgICAgICAgICAgICBpb3dyaXRlNjQoYmFyX2FkZHIsIG1taW8gKyBiYXIwX29mZihvZmYs IDQpKTsNCj4gPiAtICAgICAgICAgICAgICAgYmFyX2FkZHIgPSBpb3JlYWQ2NChtbWlvICsgYmFy MF9vZmYob2ZmLCA0KSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlvd3JpdGU2NChiYXJfYWRkciwg bW1pbyArIFNOQl9TQkFSNDVCQVNFX09GRlNFVCk7DQo+ID4gKyAgICAgICAgICAgICAgIGJhcl9h ZGRyID0gaW9yZWFkNjQobW1pbyArIFNOQl9TQkFSNDVCQVNFX09GRlNFVCk7DQo+ID4gICAgICAg ICAgICAgICAgIGRldl9kYmcobmRldl9kZXYobmRldiksICJTQkFSNDUgJSMwMThsbHhcbiIsIGJh cl9hZGRyKTsNCj4gPiAgICAgICAgIH0gZWxzZSB7DQo+ID4gICAgICAgICAgICAgICAgIGJhcl9h ZGRyID0gYWRkci0+YmFyNF9hZGRyMzIgKw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIChi MmJfYmFyID09IDQgPyBuZGV2LT5iMmJfb2ZmIDogMCk7DQo+ID4gLSAgICAgICAgICAgICAgIGlv d3JpdGUzMihiYXJfYWRkciwgbW1pbyArIGJhcjBfb2ZmKG9mZiwgNCkpOw0KPiA+IC0gICAgICAg ICAgICAgICBiYXJfYWRkciA9IGlvcmVhZDMyKG1taW8gKyBiYXIwX29mZihvZmYsIDQpKTsNCj4g PiArICAgICAgICAgICAgICAgaW93cml0ZTMyKGJhcl9hZGRyLCBtbWlvICsgU05CX1NCQVI0QkFT RV9PRkZTRVQpOw0KPiA+ICsgICAgICAgICAgICAgICBiYXJfYWRkciA9IGlvcmVhZDMyKG1taW8g KyBTTkJfU0JBUjRCQVNFX09GRlNFVCk7DQo+ID4gICAgICAgICAgICAgICAgIGRldl9kYmcobmRl dl9kZXYobmRldiksICJTQkFSNCAlIzAxMGxseFxuIiwgYmFyX2FkZHIpOw0KPiA+DQo+ID4gICAg ICAgICAgICAgICAgIGJhcl9hZGRyID0gYWRkci0+YmFyNV9hZGRyMzIgKw0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIChiMmJfYmFyID09IDUgPyBuZGV2LT5iMmJfb2ZmIDogMCk7DQo+ID4g LSAgICAgICAgICAgICAgIGlvd3JpdGUzMihiYXJfYWRkciwgbW1pbyArIGJhcjBfb2ZmKG9mZiwg NSkpOw0KPiA+IC0gICAgICAgICAgICAgICBiYXJfYWRkciA9IGlvcmVhZDMyKG1taW8gKyBiYXIw X29mZihvZmYsIDUpKTsNCj4gPiArICAgICAgICAgICAgICAgaW93cml0ZTMyKGJhcl9hZGRyLCBt bWlvICsgU05CX1NCQVI1QkFTRV9PRkZTRVQpOw0KPiA+ICsgICAgICAgICAgICAgICBiYXJfYWRk ciA9IGlvcmVhZDMyKG1taW8gKyBTTkJfU0JBUjVCQVNFX09GRlNFVCk7DQo+ID4gICAgICAgICAg ICAgICAgIGRldl9kYmcobmRldl9kZXYobmRldiksICJTQkFSNSAlIzAxMGxseFxuIiwgYmFyX2Fk ZHIpOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAvKiBzZXR1cCBpbmNvbWluZyBi YXIgbGltaXRzID09IGJhc2UgYWRkcnMgKHplcm8gbGVuZ3RoIHdpbmRvd3MpICovDQo+ID4gLSAg ICAgICBvZmYgPSBTTkJfU0JBUjJMTVRfT0ZGU0VUOw0KPiA+DQo+ID4gICAgICAgICBiYXJfYWRk ciA9IGFkZHItPmJhcjJfYWRkcjY0ICsgKGIyYl9iYXIgPT0gMiA/IG5kZXYtPmIyYl9vZmYgOiAw KTsNCj4gPiAtICAgICAgIGlvd3JpdGU2NChiYXJfYWRkciwgbW1pbyArIGJhcjJfb2ZmKG9mZiwg MikpOw0KPiA+IC0gICAgICAgYmFyX2FkZHIgPSBpb3JlYWQ2NChtbWlvICsgYmFyMl9vZmYob2Zm LCAyKSk7DQo+ID4gKyAgICAgICBpb3dyaXRlNjQoYmFyX2FkZHIsIG1taW8gKyBTTkJfU0JBUjIz TE1UX09GRlNFVCk7DQo+ID4gKyAgICAgICBiYXJfYWRkciA9IGlvcmVhZDY0KG1taW8gKyBTTkJf U0JBUjIzTE1UX09GRlNFVCk7DQo+ID4gICAgICAgICBkZXZfZGJnKG5kZXZfZGV2KG5kZXYpLCAi U0JBUjIzTE1UICUjMDE4bGx4XG4iLCBiYXJfYWRkcik7DQo+ID4NCj4gPiAgICAgICAgIGlmICgh bmRldi0+YmFyNF9zcGxpdCkgew0KPiA+ICAgICAgICAgICAgICAgICBiYXJfYWRkciA9IGFkZHIt PmJhcjRfYWRkcjY0ICsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAoYjJiX2JhciA9PSA0 ID8gbmRldi0+YjJiX29mZiA6IDApOw0KPiA+IC0gICAgICAgICAgICAgICBpb3dyaXRlNjQoYmFy X2FkZHIsIG1taW8gKyBiYXIyX29mZihvZmYsIDQpKTsNCj4gPiAtICAgICAgICAgICAgICAgYmFy X2FkZHIgPSBpb3JlYWQ2NChtbWlvICsgYmFyMl9vZmYob2ZmLCA0KSk7DQo+ID4gKyAgICAgICAg ICAgICAgIGlvd3JpdGU2NChiYXJfYWRkciwgbW1pbyArIFNOQl9TQkFSNDVMTVRfT0ZGU0VUKTsN Cj4gPiArICAgICAgICAgICAgICAgYmFyX2FkZHIgPSBpb3JlYWQ2NChtbWlvICsgU05CX1NCQVI0 NUxNVF9PRkZTRVQpOw0KPiA+ICAgICAgICAgICAgICAgICBkZXZfZGJnKG5kZXZfZGV2KG5kZXYp LCAiU0JBUjQ1TE1UICUjMDE4bGx4XG4iLCBiYXJfYWRkcik7DQo+ID4gICAgICAgICB9IGVsc2Ug ew0KPiA+ICAgICAgICAgICAgICAgICBiYXJfYWRkciA9IGFkZHItPmJhcjRfYWRkcjMyICsNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAoYjJiX2JhciA9PSA0ID8gbmRldi0+YjJiX29mZiA6 IDApOw0KPiA+IC0gICAgICAgICAgICAgICBpb3dyaXRlMzIoYmFyX2FkZHIsIG1taW8gKyBiYXIy X29mZihvZmYsIDQpKTsNCj4gPiAtICAgICAgICAgICAgICAgYmFyX2FkZHIgPSBpb3JlYWQzMiht bWlvICsgYmFyMl9vZmYob2ZmLCA0KSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlvd3JpdGUzMihi YXJfYWRkciwgbW1pbyArIFNOQl9TQkFSNExNVF9PRkZTRVQpOw0KPiA+ICsgICAgICAgICAgICAg ICBiYXJfYWRkciA9IGlvcmVhZDMyKG1taW8gKyBTTkJfU0JBUjRMTVRfT0ZGU0VUKTsNCj4gPiAg ICAgICAgICAgICAgICAgZGV2X2RiZyhuZGV2X2RldihuZGV2KSwgIlNCQVI0TE1UICUjMDEwbGx4 XG4iLCBiYXJfYWRkcik7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgYmFyX2FkZHIgPSBhZGRy LT5iYXI1X2FkZHIzMiArDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgKGIyYl9iYXIgPT0g NSA/IG5kZXYtPmIyYl9vZmYgOiAwKTsNCj4gPiAtICAgICAgICAgICAgICAgaW93cml0ZTMyKGJh cl9hZGRyLCBtbWlvICsgYmFyMl9vZmYob2ZmLCA1KSk7DQo+ID4gLSAgICAgICAgICAgICAgIGJh cl9hZGRyID0gaW9yZWFkMzIobW1pbyArIGJhcjJfb2ZmKG9mZiwgNSkpOw0KPiA+ICsgICAgICAg ICAgICAgICBpb3dyaXRlMzIoYmFyX2FkZHIsIG1taW8gKyBTTkJfU0JBUjVMTVRfT0ZGU0VUKTsN Cj4gPiArICAgICAgICAgICAgICAgYmFyX2FkZHIgPSBpb3JlYWQzMihtbWlvICsgU05CX1NCQVI1 TE1UX09GRlNFVCk7DQo+ID4gICAgICAgICAgICAgICAgIGRldl9kYmcobmRldl9kZXYobmRldiks ICJTQkFSNUxNVCAlIzA1bGx4XG4iLCBiYXJfYWRkcik7DQo+ID4gICAgICAgICB9DQo+ID4NCj4g PiAgICAgICAgIC8qIHplcm8gaW5jb21pbmcgdHJhbnNsYXRpb24gYWRkcnMgKi8NCj4gPiAtICAg ICAgIG9mZiA9IFNOQl9TQkFSMlhMQVRfT0ZGU0VUOw0KPiA+IC0NCj4gPiAtICAgICAgIGlvd3Jp dGU2NCgwLCBtbWlvICsgYmFyMl9vZmYob2ZmLCAyKSk7DQo+ID4gKyAgICAgICBpb3dyaXRlNjQo MCwgbW1pbyArIFNOQl9TQkFSMjNYTEFUX09GRlNFVCk7DQo+ID4NCj4gPiAgICAgICAgIGlmICgh bmRldi0+YmFyNF9zcGxpdCkgew0KPiA+IC0gICAgICAgICAgICAgICBpb3dyaXRlNjQoMCwgbW1p byArIGJhcjJfb2ZmKG9mZiwgNCkpOw0KPiA+ICsgICAgICAgICAgICAgICBpb3dyaXRlNjQoMCwg bW1pbyArIFNOQl9TQkFSNDVYTEFUX09GRlNFVCk7DQo+ID4gICAgICAgICB9IGVsc2Ugew0KPiA+ IC0gICAgICAgICAgICAgICBpb3dyaXRlMzIoMCwgbW1pbyArIGJhcjJfb2ZmKG9mZiwgNCkpOw0K PiA+IC0gICAgICAgICAgICAgICBpb3dyaXRlMzIoMCwgbW1pbyArIGJhcjJfb2ZmKG9mZiwgNSkp Ow0KPiA+ICsgICAgICAgICAgICAgICBpb3dyaXRlMzIoMCwgbW1pbyArIFNOQl9TQkFSNFhMQVRf T0ZGU0VUKTsNCj4gPiArICAgICAgICAgICAgICAgaW93cml0ZTMyKDAsIG1taW8gKyBTTkJfU0JB UjVYTEFUX09GRlNFVCk7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgIC8qIHplcm8g b3V0Z29pbmcgdHJhbnNsYXRpb24gbGltaXRzICh3aG9sZSBiYXIgc2l6ZSB3aW5kb3dzKSAqLw0K PiA+IC0gICAgICAgb2ZmID0gU05CX1BCQVIyTE1UX09GRlNFVDsNCj4gPiAtICAgICAgIGlvd3Jp dGU2NCgwLCBtbWlvICsgYmFyMl9vZmYob2ZmLCAyKSk7DQo+ID4gKyAgICAgICBpb3dyaXRlNjQo MCwgbW1pbyArIFNOQl9QQkFSMjNMTVRfT0ZGU0VUKTsNCj4gPiAgICAgICAgIGlmICghbmRldi0+ YmFyNF9zcGxpdCkgew0KPiA+IC0gICAgICAgICAgICAgICBpb3dyaXRlNjQoMCwgbW1pbyArIGJh cjJfb2ZmKG9mZiwgNCkpOw0KPiA+ICsgICAgICAgICAgICAgICBpb3dyaXRlNjQoMCwgbW1pbyAr IFNOQl9QQkFSNDVMTVRfT0ZGU0VUKTsNCj4gPiAgICAgICAgIH0gZWxzZSB7DQo+ID4gLSAgICAg ICAgICAgICAgIGlvd3JpdGUzMigwLCBtbWlvICsgYmFyMl9vZmYob2ZmLCA0KSk7DQo+ID4gLSAg ICAgICAgICAgICAgIGlvd3JpdGUzMigwLCBtbWlvICsgYmFyMl9vZmYob2ZmLCA1KSk7DQo+ID4g KyAgICAgICAgICAgICAgIGlvd3JpdGUzMigwLCBtbWlvICsgU05CX1BCQVI0TE1UX09GRlNFVCk7 DQo+ID4gKyAgICAgICAgICAgICAgIGlvd3JpdGUzMigwLCBtbWlvICsgU05CX1BCQVI1TE1UX09G RlNFVCk7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgIC8qIHNldCBvdXRnb2luZyB0 cmFuc2xhdGlvbiBvZmZzZXRzICovDQo+ID4gLSAgICAgICBvZmYgPSBTTkJfUEJBUjJYTEFUX09G RlNFVDsNCj4gPiAtDQo+ID4gICAgICAgICBiYXJfYWRkciA9IHBlZXJfYWRkci0+YmFyMl9hZGRy NjQ7DQo+ID4gLSAgICAgICBpb3dyaXRlNjQoYmFyX2FkZHIsIG1taW8gKyBiYXIyX29mZihvZmYs IDIpKTsNCj4gPiAtICAgICAgIGJhcl9hZGRyID0gaW9yZWFkNjQobW1pbyArIGJhcjJfb2ZmKG9m ZiwgMikpOw0KPiA+ICsgICAgICAgaW93cml0ZTY0KGJhcl9hZGRyLCBtbWlvICsgU05CX1BCQVIy M1hMQVRfT0ZGU0VUKTsNCj4gPiArICAgICAgIGJhcl9hZGRyID0gaW9yZWFkNjQobW1pbyArIFNO Ql9QQkFSMjNYTEFUX09GRlNFVCk7DQo+ID4gICAgICAgICBkZXZfZGJnKG5kZXZfZGV2KG5kZXYp LCAiUEJBUjIzWExBVCAlIzAxOGxseFxuIiwgYmFyX2FkZHIpOw0KPiA+DQo+ID4gICAgICAgICBp ZiAoIW5kZXYtPmJhcjRfc3BsaXQpIHsNCj4gPiAgICAgICAgICAgICAgICAgYmFyX2FkZHIgPSBw ZWVyX2FkZHItPmJhcjRfYWRkcjY0Ow0KPiA+IC0gICAgICAgICAgICAgICBpb3dyaXRlNjQoYmFy X2FkZHIsIG1taW8gKyBiYXIyX29mZihvZmYsIDQpKTsNCj4gPiAtICAgICAgICAgICAgICAgYmFy X2FkZHIgPSBpb3JlYWQ2NChtbWlvICsgYmFyMl9vZmYob2ZmLCA0KSk7DQo+ID4gKyAgICAgICAg ICAgICAgIGlvd3JpdGU2NChiYXJfYWRkciwgbW1pbyArIFNOQl9QQkFSNDVYTEFUX09GRlNFVCk7 DQo+ID4gKyAgICAgICAgICAgICAgIGJhcl9hZGRyID0gaW9yZWFkNjQobW1pbyArIFNOQl9QQkFS NDVYTEFUX09GRlNFVCk7DQo+ID4gICAgICAgICAgICAgICAgIGRldl9kYmcobmRldl9kZXYobmRl diksICJQQkFSNDVYTEFUICUjMDE4bGx4XG4iLCBiYXJfYWRkcik7DQo+ID4gICAgICAgICB9IGVs c2Ugew0KPiA+ICAgICAgICAgICAgICAgICBiYXJfYWRkciA9IHBlZXJfYWRkci0+YmFyMl9hZGRy NjQ7DQo+ID4gLSAgICAgICAgICAgICAgIGlvd3JpdGUzMihiYXJfYWRkciwgbW1pbyArIGJhcjJf b2ZmKG9mZiwgNCkpOw0KPiA+IC0gICAgICAgICAgICAgICBiYXJfYWRkciA9IGlvcmVhZDMyKG1t aW8gKyBiYXIyX29mZihvZmYsIDQpKTsNCj4gPiArICAgICAgICAgICAgICAgaW93cml0ZTMyKGJh cl9hZGRyLCBtbWlvICsgU05CX1BCQVI0WExBVF9PRkZTRVQpOw0KPiA+ICsgICAgICAgICAgICAg ICBiYXJfYWRkciA9IGlvcmVhZDMyKG1taW8gKyBTTkJfUEJBUjRYTEFUX09GRlNFVCk7DQo+ID4g ICAgICAgICAgICAgICAgIGRldl9kYmcobmRldl9kZXYobmRldiksICJQQkFSNFhMQVQgJSMwMTBs bHhcbiIsIGJhcl9hZGRyKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICBiYXJfYWRkciA9IHBl ZXJfYWRkci0+YmFyMl9hZGRyNjQ7DQo+ID4gLSAgICAgICAgICAgICAgIGlvd3JpdGUzMihiYXJf YWRkciwgbW1pbyArIGJhcjJfb2ZmKG9mZiwgNSkpOw0KPiA+IC0gICAgICAgICAgICAgICBiYXJf YWRkciA9IGlvcmVhZDMyKG1taW8gKyBiYXIyX29mZihvZmYsIDUpKTsNCj4gPiArICAgICAgICAg ICAgICAgaW93cml0ZTMyKGJhcl9hZGRyLCBtbWlvICsgU05CX1BCQVI1WExBVF9PRkZTRVQpOw0K PiA+ICsgICAgICAgICAgICAgICBiYXJfYWRkciA9IGlvcmVhZDMyKG1taW8gKyBTTkJfUEJBUjVY TEFUX09GRlNFVCk7DQo+ID4gICAgICAgICAgICAgICAgIGRldl9kYmcobmRldl9kZXYobmRldiks ICJQQkFSNVhMQVQgJSMwMTBsbHhcbiIsIGJhcl9hZGRyKTsNCj4gPiAgICAgICAgIH0NCj4gPg0K PiA+IEBAIC0xNzQ3LDI5ICsxNzIyLDY4IEBAIHN0YXRpYyBpbnQgc25iX2luaXRfZGV2KHN0cnVj dCBpbnRlbF9udGJfZGV2ICpuZGV2KQ0KPiA+ICAgICAgICAgdTggcHBkOw0KPiA+ICAgICAgICAg aW50IHJjLCBtZW07DQo+ID4NCj4gPiArICAgICAgIHBkZXYgPSBuZGV2X3BkZXYobmRldik7DQo+ ID4gKw0KPiA+ICsgICAgICAgc3dpdGNoIChwZGV2LT5kZXZpY2UpIHsNCj4gPiAgICAgICAgIC8q IFRoZXJlIGlzIGEgWGVvbiBoYXJkd2FyZSBlcnJhdGEgcmVsYXRlZCB0byB3cml0ZXMgdG8gU0RP T1JCRUxMIG9yDQo+ID4gICAgICAgICAgKiBCMkJET09SQkVMTCBpbiBjb25qdW5jdGlvbiB3aXRo IGluYm91bmQgYWNjZXNzIHRvIE5UQiBNTUlPIFNwYWNlLA0KPiA+ICAgICAgICAgICogd2hpY2gg bWF5IGhhbmcgdGhlIHN5c3RlbS4gIFRvIHdvcmthcm91bmQgdGhpcyB1c2UgdGhlIHNlY29uZCBt ZW1vcnkNCj4gPiAgICAgICAgICAqIHdpbmRvdyB0byBhY2Nlc3MgdGhlIGludGVycnVwdCBhbmQg c2NyYXRjaCBwYWQgcmVnaXN0ZXJzIG9uIHRoZQ0KPiA+ICAgICAgICAgICogcmVtb3RlIHN5c3Rl bS4NCj4gPiAgICAgICAgICAqLw0KPiA+IC0gICAgICAgbmRldi0+aHdlcnJfZmxhZ3MgfD0gTlRC X0hXRVJSX1NET09SQkVMTF9MT0NLVVA7DQo+ID4gKyAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURf SU5URUxfTlRCX1NTX0pTRjoNCj4gPiArICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9O VEJfUFNfSlNGOg0KPiA+ICsgICAgICAgY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9CMkJf SlNGOg0KPiA+ICsgICAgICAgY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9TU19TTkI6DQo+ ID4gKyAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfTlRCX1BTX1NOQjoNCj4gPiArICAg ICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9OVEJfQjJCX1NOQjoNCj4gPiArICAgICAgIGNh c2UgUENJX0RFVklDRV9JRF9JTlRFTF9OVEJfU1NfSVZUOg0KPiA+ICsgICAgICAgY2FzZSBQQ0lf REVWSUNFX0lEX0lOVEVMX05UQl9QU19JVlQ6DQo+ID4gKyAgICAgICBjYXNlIFBDSV9ERVZJQ0Vf SURfSU5URUxfTlRCX0IyQl9JVlQ6DQo+ID4gKyAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURfSU5U RUxfTlRCX1NTX0hTWDoNCj4gPiArICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9OVEJf UFNfSFNYOg0KPiA+ICsgICAgICAgY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9CMkJfSFNY Og0KPiA+ICsgICAgICAgICAgICAgICBuZGV2LT5od2Vycl9mbGFncyB8PSBOVEJfSFdFUlJfU0RP T1JCRUxMX0xPQ0tVUDsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICB9 DQo+ID4NCj4gPiArICAgICAgIHN3aXRjaCAocGRldi0+ZGV2aWNlKSB7DQo+ID4gICAgICAgICAv KiBUaGVyZSBpcyBhIGhhcmR3YXJlIGVycmF0YSByZWxhdGVkIHRvIGFjY2Vzc2luZyBhbnkgcmVn aXN0ZXIgaW4NCj4gPiAgICAgICAgICAqIFNCMDFCQVNFIGluIHRoZSBwcmVzZW5jZSBvZiBiaWRp cmVjdGlvbmFsIHRyYWZmaWMgY3Jvc3NpbmcgdGhlIE5UQi4NCj4gPiAgICAgICAgICAqLw0KPiA+ IC0gICAgICAgbmRldi0+aHdlcnJfZmxhZ3MgfD0gTlRCX0hXRVJSX1NCMDFCQVNFX0xPQ0tVUDsN Cj4gPiArICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9OVEJfU1NfSVZUOg0KPiA+ICsg ICAgICAgY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9QU19JVlQ6DQo+ID4gKyAgICAgICBj YXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfTlRCX0IyQl9JVlQ6DQo+ID4gKyAgICAgICBjYXNlIFBD SV9ERVZJQ0VfSURfSU5URUxfTlRCX1NTX0hTWDoNCj4gPiArICAgICAgIGNhc2UgUENJX0RFVklD RV9JRF9JTlRFTF9OVEJfUFNfSFNYOg0KPiA+ICsgICAgICAgY2FzZSBQQ0lfREVWSUNFX0lEX0lO VEVMX05UQl9CMkJfSFNYOg0KPiA+ICsgICAgICAgICAgICAgICBuZGV2LT5od2Vycl9mbGFncyB8 PSBOVEJfSFdFUlJfU0IwMUJBU0VfTE9DS1VQOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsN Cj4gPiArICAgICAgIH0NCj4gPg0KPiA+ICsgICAgICAgc3dpdGNoIChwZGV2LT5kZXZpY2UpIHsN Cj4gPiAgICAgICAgIC8qIEhXIEVycmF0YSBvbiBiaXQgMTQgb2YgYjJiZG9vcmJlbGwgcmVnaXN0 ZXIuICBXcml0ZXMgd2lsbCBub3QgYmUNCj4gPiAgICAgICAgICAqIG1pcnJvcmVkIHRvIHRoZSBy ZW1vdGUgc3lzdGVtLiAgU2hyaW5rIHRoZSBudW1iZXIgb2YgYml0cyBieSBvbmUsDQo+ID4gICAg ICAgICAgKiBzaW5jZSBiaXQgMTQgaXMgdGhlIGxhc3QgYml0Lg0KPiA+ICAgICAgICAgICovDQo+ ID4gLSAgICAgICBuZGV2LT5od2Vycl9mbGFncyB8PSBOVEJfSFdFUlJfQjJCRE9PUkJFTExfQklU MTQ7DQo+ID4gKyAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfTlRCX1NTX0pTRjoNCj4g PiArICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9OVEJfUFNfSlNGOg0KPiA+ICsgICAg ICAgY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9CMkJfSlNGOg0KPiA+ICsgICAgICAgY2Fz ZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9TU19TTkI6DQo+ID4gKyAgICAgICBjYXNlIFBDSV9E RVZJQ0VfSURfSU5URUxfTlRCX1BTX1NOQjoNCj4gPiArICAgICAgIGNhc2UgUENJX0RFVklDRV9J RF9JTlRFTF9OVEJfQjJCX1NOQjoNCj4gPiArICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTlRF TF9OVEJfU1NfSVZUOg0KPiA+ICsgICAgICAgY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9Q U19JVlQ6DQo+ID4gKyAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfTlRCX0IyQl9JVlQ6 DQo+ID4gKyAgICAgICBjYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfTlRCX1NTX0hTWDoNCj4gPiAr ICAgICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9OVEJfUFNfSFNYOg0KPiA+ICsgICAgICAg Y2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX05UQl9CMkJfSFNYOg0KPiA+ICsgICAgICAgICAgICAg ICBuZGV2LT5od2Vycl9mbGFncyB8PSBOVEJfSFdFUlJfQjJCRE9PUkJFTExfQklUMTQ7DQo+ID4g KyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICBu ZGV2LT5yZWcgPSAmc25iX3JlZzsNCj4gPg0KPiA+IC0gICAgICAgcGRldiA9IG5kZXZfcGRldihu ZGV2KTsNCj4gPiAtDQo+ID4gICAgICAgICByYyA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYs IFNOQl9QUERfT0ZGU0VULCAmcHBkKTsNCj4gPiAgICAgICAgIGlmIChyYykNCj4gPiAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU87DQo+ID4gQEAgLTIwNjIsMTQgKzIwNzYsMTQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9udGJfeGxhdF9yZWcgc25iX3ByaV94bGF0ID0gew0KPiA+ICAg ICAgICAgICogd2luZG93IGJ5IHNldHRpbmcgdGhlIGxpbWl0IGVxdWFsIHRvIGJhc2UsIG5vciBj YW4gaXQgbGltaXQgdGhlIHNpemUNCj4gPiAgICAgICAgICAqIG9mIHRoZSBtZW1vcnkgd2luZG93 IGJ5IHNldHRpbmcgdGhlIGxpbWl0IHRvIGJhc2UgKyBzaXplLg0KPiA+ICAgICAgICAgICovDQo+ ID4gLSAgICAgICAuYmFyMl9saW1pdCAgICAgICAgICAgICA9IFNOQl9QQkFSMkxNVF9PRkZTRVQs DQo+ID4gLSAgICAgICAuYmFyMl94bGF0ICAgICAgICAgICAgICA9IFNOQl9QQkFSMlhMQVRfT0ZG U0VULA0KPiA+ICsgICAgICAgLmJhcjJfbGltaXQgICAgICAgICAgICAgPSBTTkJfUEJBUjIzTE1U X09GRlNFVCwNCj4gPiArICAgICAgIC5iYXIyX3hsYXQgICAgICAgICAgICAgID0gU05CX1BCQVIy M1hMQVRfT0ZGU0VULA0KPiA+ICB9Ow0KPiA+DQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfbnRiX3hsYXRfcmVnIHNuYl9zZWNfeGxhdCA9IHsNCj4gPiAgICAgICAgIC5iYXIwX2Jhc2Ug ICAgICAgICAgICAgID0gU05CX1NCQVIwQkFTRV9PRkZTRVQsDQo+ID4gLSAgICAgICAuYmFyMl9s aW1pdCAgICAgICAgICAgICA9IFNOQl9TQkFSMkxNVF9PRkZTRVQsDQo+ID4gLSAgICAgICAuYmFy Ml94bGF0ICAgICAgICAgICAgICA9IFNOQl9TQkFSMlhMQVRfT0ZGU0VULA0KPiA+ICsgICAgICAg LmJhcjJfbGltaXQgICAgICAgICAgICAgPSBTTkJfU0JBUjIzTE1UX09GRlNFVCwNCj4gPiArICAg ICAgIC5iYXIyX3hsYXQgICAgICAgICAgICAgID0gU05CX1NCQVIyM1hMQVRfT0ZGU0VULA0KPiA+ ICB9Ow0KPiA+DQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfYjJiX2FkZHIgc25iX2Iy Yl91c2RfYWRkciA9IHsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9udGIvaHcvaW50ZWwvbnRi X2h3X2ludGVsLmggYi9kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfaW50ZWwuaA0KPiA+IGlu ZGV4IDAyMjRiMWEuLmZlYzY4OWQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9udGIvaHcvaW50 ZWwvbnRiX2h3X2ludGVsLmgNCj4gPiArKysgYi9kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdf aW50ZWwuaA0KPiA+IEBAIC03MCwxMSArNzAsMjcgQEANCj4gPg0KPiA+ICAvKiBTTkIgaGFyZHdh cmUgKGFuZCBKU0YsIElWVCwgSFNYKSAqLw0KPiA+DQo+ID4gLSNkZWZpbmUgU05CX1BCQVIyTE1U X09GRlNFVCAgICAgICAgICAgIDB4MDAwMA0KPiA+IC0jZGVmaW5lIFNOQl9QQkFSMlhMQVRfT0ZG U0VUICAgICAgICAgICAweDAwMTANCj4gPiAtI2RlZmluZSBTTkJfU0JBUjJMTVRfT0ZGU0VUICAg ICAgICAgICAgMHgwMDIwDQo+ID4gLSNkZWZpbmUgU05CX1NCQVIyWExBVF9PRkZTRVQgICAgICAg ICAgIDB4MDAzMA0KPiA+ICsjZGVmaW5lIFNOQl9QQkFSMjNMTVRfT0ZGU0VUICAgICAgICAgICAw eDAwMDANCj4gPiArI2RlZmluZSBTTkJfUEJBUjQ1TE1UX09GRlNFVCAgICAgICAgICAgMHgwMDA4 DQo+ID4gKyNkZWZpbmUgU05CX1BCQVI0TE1UX09GRlNFVCAgICAgICAgICAgIDB4MDAwOA0KPiA+ ICsjZGVmaW5lIFNOQl9QQkFSNUxNVF9PRkZTRVQgICAgICAgICAgICAweDAwMGMNCj4gPiArI2Rl ZmluZSBTTkJfUEJBUjIzWExBVF9PRkZTRVQgICAgICAgICAgMHgwMDEwDQo+ID4gKyNkZWZpbmUg U05CX1BCQVI0NVhMQVRfT0ZGU0VUICAgICAgICAgIDB4MDAxOA0KPiA+ICsjZGVmaW5lIFNOQl9Q QkFSNFhMQVRfT0ZGU0VUICAgICAgICAgICAweDAwMTgNCj4gPiArI2RlZmluZSBTTkJfUEJBUjVY TEFUX09GRlNFVCAgICAgICAgICAgMHgwMDFjDQo+ID4gKyNkZWZpbmUgU05CX1NCQVIyM0xNVF9P RkZTRVQgICAgICAgICAgIDB4MDAyMA0KPiA+ICsjZGVmaW5lIFNOQl9TQkFSNDVMTVRfT0ZGU0VU ICAgICAgICAgICAweDAwMjgNCj4gPiArI2RlZmluZSBTTkJfU0JBUjRMTVRfT0ZGU0VUICAgICAg ICAgICAgMHgwMDI4DQo+ID4gKyNkZWZpbmUgU05CX1NCQVI1TE1UX09GRlNFVCAgICAgICAgICAg IDB4MDAyYw0KPiA+ICsjZGVmaW5lIFNOQl9TQkFSMjNYTEFUX09GRlNFVCAgICAgICAgICAweDAw MzANCj4gPiArI2RlZmluZSBTTkJfU0JBUjQ1WExBVF9PRkZTRVQgICAgICAgICAgMHgwMDM4DQo+ ID4gKyNkZWZpbmUgU05CX1NCQVI0WExBVF9PRkZTRVQgICAgICAgICAgIDB4MDAzOA0KPiA+ICsj ZGVmaW5lIFNOQl9TQkFSNVhMQVRfT0ZGU0VUICAgICAgICAgICAweDAwM2MNCj4gPiAgI2RlZmlu ZSBTTkJfU0JBUjBCQVNFX09GRlNFVCAgICAgICAgICAgMHgwMDQwDQo+ID4gKyNkZWZpbmUgU05C X1NCQVIyM0JBU0VfT0ZGU0VUICAgICAgICAgIDB4MDA0OA0KPiA+ICsjZGVmaW5lIFNOQl9TQkFS NDVCQVNFX09GRlNFVCAgICAgICAgICAweDAwNTANCj4gPiArI2RlZmluZSBTTkJfU0JBUjRCQVNF X09GRlNFVCAgICAgICAgICAgMHgwMDUwDQo+ID4gKyNkZWZpbmUgU05CX1NCQVI1QkFTRV9PRkZT RVQgICAgICAgICAgIDB4MDA1NA0KPiA+ICAjZGVmaW5lIFNOQl9TQkRGX09GRlNFVCAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDA1Yw0KPiA+ICAjZGVmaW5lIFNOQl9OVEJDTlRMX09GRlNFVCAg ICAgICAgICAgICAweDAwNTgNCj4gPiAgI2RlZmluZSBTTkJfUERPT1JCRUxMX09GRlNFVCAgICAg ICAgICAgMHgwMDYwDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQu YyBiL2RyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYw0KPiA+IGluZGV4IGYxZWQxYjcuLmJiMmVi ODUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jDQo+ID4gKysr IGIvZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jDQo+ID4gQEAgLTIwNCw4ICsyMDQsOCBAQCBz dHJ1Y3QgbnRiX3RyYW5zcG9ydF9jdHggew0KPiA+DQo+ID4gICAgICAgICBib29sIGxpbmtfaXNf dXA7DQo+ID4gICAgICAgICBzdHJ1Y3QgZGVsYXllZF93b3JrIGxpbmtfd29yazsNCj4gPiAtICAg ICAgIHN0cnVjdCB3b3JrX3N0cnVjdCBkYl93b3JrOw0KPiA+ICAgICAgICAgc3RydWN0IHdvcmtf c3RydWN0IGxpbmtfY2xlYW51cDsNCj4gPiArICAgICAgIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBk Yl93b3JrOw0KPiA+ICB9Ow0KPiA+DQo+ID4gIGVudW0gew0KPiA+IEBAIC0yNDEsNyArMjQxLDcg QEAgZW51bSB7DQo+ID4gICNkZWZpbmUgTlRCX1FQX0RFRl9OVU1fRU5UUklFUyAxMDANCj4gPiAg I2RlZmluZSBOVEJfTElOS19ET1dOX1RJTUVPVVQgIDEwDQo+ID4NCj4gPiAtc3RhdGljIHZvaWQg bnRiX3RyYW5zcG9ydF9kb29yYmVsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpOw0KPiA+ ICtzdGF0aWMgdm9pZCBudGJfdHJhbnNwb3J0X2Rvb3JiZWxsX3dvcmsodW5zaWduZWQgbG9uZyBk YXRhKTsNCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBudGJfY3R4X29wcyBudGJfdHJhbnNwb3J0 X29wczsNCj4gPiAgc3RhdGljIHN0cnVjdCBudGJfY2xpZW50IG50Yl90cmFuc3BvcnRfY2xpZW50 Ow0KPiA+DQo+ID4gQEAgLTEwMDIsOCArMTAwMiw5IEBAIHN0YXRpYyBpbnQgbnRiX3RyYW5zcG9y dF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpDQo+ ID4gICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgIElOSVRfREVMQVlFRF9XT1JLKCZudC0+bGlu a193b3JrLCBudGJfdHJhbnNwb3J0X2xpbmtfd29yayk7DQo+ID4gLSAgICAgICBJTklUX1dPUkso Jm50LT5kYl93b3JrLCBudGJfdHJhbnNwb3J0X2Rvb3JiZWxsX3dvcmspOw0KPiA+ICAgICAgICAg SU5JVF9XT1JLKCZudC0+bGlua19jbGVhbnVwLCBudGJfdHJhbnNwb3J0X2xpbmtfY2xlYW51cF93 b3JrKTsNCj4gPiArICAgICAgIHRhc2tsZXRfaW5pdCgmbnQtPmRiX3dvcmssIG50Yl90cmFuc3Bv cnRfZG9vcmJlbGxfd29yaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u ZyludCk7DQo+ID4NCj4gPiAgICAgICAgIHJjID0gbnRiX3NldF9jdHgobmRldiwgbnQsICZudGJf dHJhbnNwb3J0X29wcyk7DQo+ID4gICAgICAgICBpZiAocmMpDQo+ID4gQEAgLTEwNDQsNyArMTA0 NSw3IEBAIHN0YXRpYyB2b2lkIG50Yl90cmFuc3BvcnRfZnJlZShzdHJ1Y3QgbnRiX2NsaWVudCAq c2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpDQo+ID4gICAgICAgICBpbnQgaTsNCj4gPg0KPiA+ ICAgICAgICAgbnRiX3RyYW5zcG9ydF9saW5rX2NsZWFudXAobnQpOw0KPiA+IC0gICAgICAgY2Fu Y2VsX3dvcmtfc3luYygmbnQtPmRiX3dvcmspOw0KPiA+ICsgICAgICAgdGFza2xldF9kaXNhYmxl KCZudC0+ZGJfd29yayk7DQo+ID4gICAgICAgICBjYW5jZWxfd29ya19zeW5jKCZudC0+bGlua19j bGVhbnVwKTsNCj4gPiAgICAgICAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmbnQtPmxpbmtf d29yayk7DQo+ID4NCj4gPiBAQCAtMTg1MCwxMCArMTg1MSw5IEBAIHVuc2lnbmVkIGludCBudGJf dHJhbnNwb3J0X21heF9zaXplKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCkNCj4gPiAgfQ0K PiA+ICBFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X21heF9zaXplKTsNCj4gPg0KPiA+ IC1zdGF0aWMgdm9pZCBudGJfdHJhbnNwb3J0X2Rvb3JiZWxsX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQ0KPiA+ICtzdGF0aWMgdm9pZCBudGJfdHJhbnNwb3J0X2Rvb3JiZWxsX3dvcmso dW5zaWduZWQgbG9uZyBkYXRhKQ0KPiA+ICB7DQo+ID4gLSAgICAgICBzdHJ1Y3QgbnRiX3RyYW5z cG9ydF9jdHggKm50ID0gY29udGFpbmVyX29mKHdvcmssDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4LCBkYl93b3JrKTsNCj4gPiArICAgICAgIHN0 cnVjdCBudGJfdHJhbnNwb3J0X2N0eCAqbnQgPSAodm9pZCAqKWRhdGE7DQo+ID4gICAgICAgICBz dHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXA7DQo+ID4gICAgICAgICB1NjQgZGJfbWFzaywgZGJf Yml0cywgZGJfYWdhaW47DQo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgcXBfbnVtOw0KPiA+IEBA IC0xODkwLDcgKzE4OTAsNyBAQCBzdGF0aWMgdm9pZCBudGJfdHJhbnNwb3J0X2Rvb3JiZWxsX2Nh bGxiYWNrKHZvaWQgKmRhdGEsIGludCB2ZWN0b3IpDQo+ID4NCj4gPiAgICAgICAgIG50Yl9kYl9z ZXRfbWFzayhudC0+bmRldiwgbnRiX2RiX3ZhbGlkX21hc2sobnQtPm5kZXYpKTsNCj4gPg0KPiA+ IC0gICAgICAgc2NoZWR1bGVfd29yaygmbnQtPmRiX3dvcmspOw0KPiA+ICsgICAgICAgdGFza2xl dF9zY2hlZHVsZSgmbnQtPmRiX3dvcmspOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIGNvbnN0 IHN0cnVjdCBudGJfY3R4X29wcyBudGJfdHJhbnNwb3J0X29wcyA9IHsNCj4gPiAtLQ0KPiA+IDIu NC4wLnJjMC40My5nY2Y4YThjNg0KPiA+DQo+ID4gLS0NCj4gPiBUbyB1bnN1YnNjcmliZSBmcm9t IHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtcGNpIiBpbg0KPiA+ IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+ID4g TW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8t aW5mby5odG1sDQo=