From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by gabe.freedesktop.org (Postfix) with ESMTPS id B037C10E0A4 for ; Fri, 29 Sep 2023 16:36:02 +0000 (UTC) From: "Souza, Jose" To: "igt-dev@lists.freedesktop.org" , "Dugast, Francois" Date: Fri, 29 Sep 2023 16:32:55 +0000 Message-ID: References: <20230928110516.7-1-francois.dugast@intel.com> <20230928110516.7-11-francois.dugast@intel.com> In-Reply-To: <20230928110516.7-11-francois.dugast@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <895938A75A061A4CAEF3BFF19292052C@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH v4 10/14] xe: Update to new VM bind uAPI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Vivi, Rodrigo" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T24gVGh1LCAyMDIzLTA5LTI4IGF0IDExOjA1ICswMDAwLCBGcmFuY29pcyBEdWdhc3Qgd3JvdGU6 DQo+IEZyb206IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPg0KPiANCj4g U3luYyB2cy4gYXN5bmMgY2hhbmdlcyBhbmQgbmV3IGVycm9yIGhhbmRsaW5nLg0KPiANCj4gU2ln bmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+DQo+IFNp Z25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4NCj4gW1Jv ZHJpZ28gcmViYXNlZCBhbmQgZml4ZWQgY29uZmxpY3RzXQ0KPiAtLS0NCj4gIGluY2x1ZGUvZHJt LXVhcGkveGVfZHJtLmggICAgICAgICAgfCAgNTAgKystLS0tLS0NCj4gIGxpYi9pZ3RfZmIuYyAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5j ICAgICAgICAgICAgfCAgIDIgKy0NCj4gIGxpYi9pbnRlbF9jb21wdXRlLmMgICAgICAgICAgICAg ICAgfCAgIDIgKy0NCj4gIGxpYi94ZS94ZV9pb2N0bC5jICAgICAgICAgICAgICAgICAgfCAgMTUg Ky0tDQo+ICBsaWIveGUveGVfaW9jdGwuaCAgICAgICAgICAgICAgICAgIHwgICAzICstDQo+ICBs aWIveGUveGVfcXVlcnkuYyAgICAgICAgICAgICAgICAgIHwgICAyICstDQo+ICB0ZXN0cy9pbnRl bC94ZV9jY3MuYyAgICAgICAgICAgICAgIHwgICA0ICstDQo+ICB0ZXN0cy9pbnRlbC94ZV9jcmVh dGUuYyAgICAgICAgICAgIHwgICA2ICstDQo+ICB0ZXN0cy9pbnRlbC94ZV9kcm1fZmRpbmZvLmMg ICAgICAgIHwgICA0ICstDQo+ICB0ZXN0cy9pbnRlbC94ZV9ldmljdC5jICAgICAgICAgICAgIHwg IDIzICsrLS0NCj4gIHRlc3RzL2ludGVsL3hlX2V4ZWNfYmFsYW5jZXIuYyAgICAgfCAgIDYgKy0N Cj4gIHRlc3RzL2ludGVsL3hlX2V4ZWNfYmFzaWMuYyAgICAgICAgfCAgIDYgKy0NCj4gIHRlc3Rz L2ludGVsL3hlX2V4ZWNfY29tcHV0ZV9tb2RlLmMgfCAgIDYgKy0NCj4gIHRlc3RzL2ludGVsL3hl X2V4ZWNfZmF1bHRfbW9kZS5jICAgfCAgIDYgKy0NCj4gIHRlc3RzL2ludGVsL3hlX2V4ZWNfcmVz ZXQuYyAgICAgICAgfCAgIDggKy0NCj4gIHRlc3RzL2ludGVsL3hlX2V4ZWNfc3RvcmUuYyAgICAg ICAgfCAgIDQgKy0NCj4gIHRlc3RzL2ludGVsL3hlX2V4ZWNfdGhyZWFkcy5jICAgICAgfCAxMTIg KysrKystLS0tLS0tLS0tLS0NCj4gIHRlc3RzL2ludGVsL3hlX2V4ZXJjaXNlX2JsdC5jICAgICAg fCAgIDIgKy0NCj4gIHRlc3RzL2ludGVsL3hlX2d1Y19wYy5jICAgICAgICAgICAgfCAgIDIgKy0N Cj4gIHRlc3RzL2ludGVsL3hlX2h1Y19jb3B5LmMgICAgICAgICAgfCAgIDIgKy0NCj4gIHRlc3Rz L2ludGVsL3hlX2ludGVsX2JiLmMgICAgICAgICAgfCAgIDIgKy0NCj4gIHRlc3RzL2ludGVsL3hl X3BtLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gIHRlc3RzL2ludGVsL3hlX3ZtLmMgICAg ICAgICAgICAgICAgfCAxODkgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIHRlc3Rz L2ludGVsL3hlX3dhaXRmZW5jZS5jICAgICAgICAgfCAgMTkgKy0tDQo+ICAyNSBmaWxlcyBjaGFu Z2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgMzc3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtLXVhcGkveGVfZHJtLmggYi9pbmNsdWRlL2RybS11YXBpL3hlX2RybS5o DQo+IGluZGV4IDBhMDVhMTJiMi4uODBiNGM3NmYzIDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2Ry bS11YXBpL3hlX2RybS5oDQo+ICsrKyBiL2luY2x1ZGUvZHJtLXVhcGkveGVfZHJtLmgNCj4gQEAg LTEzNCwxMCArMTM0LDExIEBAIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlIHsN Cj4gICNkZWZpbmUgRFJNX1hFX0VOR0lORV9DTEFTU19WSURFT19FTkhBTkNFCTMNCj4gICNkZWZp bmUgRFJNX1hFX0VOR0lORV9DTEFTU19DT01QVVRFCQk0DQo+ICAJLyoNCj4gLQkgKiBLZXJuZWwg b25seSBjbGFzcyAobm90IGFjdHVhbCBoYXJkd2FyZSBlbmdpbmUgY2xhc3MpLiBVc2VkIGZvcg0K PiArCSAqIEtlcm5lbCBvbmx5IGNsYXNzZXMgKG5vdCBhY3R1YWwgaGFyZHdhcmUgZW5naW5lIGNs YXNzKS4gVXNlZCBmb3INCj4gIAkgKiBjcmVhdGluZyBvcmRlcmVkIHF1ZXVlcyBvZiBWTSBiaW5k IG9wZXJhdGlvbnMuDQo+ICAJICovDQo+IC0jZGVmaW5lIERSTV9YRV9FTkdJTkVfQ0xBU1NfVk1f QklORAkJNQ0KPiArI2RlZmluZSBEUk1fWEVfRU5HSU5FX0NMQVNTX1ZNX0JJTkRfQVNZTkMJNQ0K PiArI2RlZmluZSBEUk1fWEVfRU5HSU5FX0NMQVNTX1ZNX0JJTkRfU1lOQwk2DQo+ICAJX191MTYg ZW5naW5lX2NsYXNzOw0KPiAgDQo+ICAJX191MTYgZW5naW5lX2luc3RhbmNlOw0KPiBAQCAtNTc3 LDcgKzU3OCw3IEBAIHN0cnVjdCBkcm1feGVfdm1fY3JlYXRlIHsNCj4gIA0KPiAgI2RlZmluZSBE Uk1fWEVfVk1fQ1JFQVRFX1NDUkFUQ0hfUEFHRQkoMHgxIDw8IDApDQo+ICAjZGVmaW5lIERSTV9Y RV9WTV9DUkVBVEVfQ09NUFVURV9NT0RFCSgweDEgPDwgMSkNCj4gLSNkZWZpbmUgRFJNX1hFX1ZN X0NSRUFURV9BU1lOQ19CSU5EX09QUwkoMHgxIDw8IDIpDQo+ICsjZGVmaW5lIERSTV9YRV9WTV9D UkVBVEVfQVNZTkNfREVGQVVMVAkoMHgxIDw8IDIpDQo+ICAjZGVmaW5lIERSTV9YRV9WTV9DUkVB VEVfRkFVTFRfTU9ERQkoMHgxIDw8IDMpDQo+ICAJLyoqIEBmbGFnczogRmxhZ3MgKi8NCj4gIAlf X3UzMiBmbGFnczsNCj4gQEAgLTYzNywzNCArNjM4LDEyIEBAIHN0cnVjdCBkcm1feGVfdm1fYmlu ZF9vcCB7DQo+ICAjZGVmaW5lIFhFX1ZNX0JJTkRfT1BfTUFQCQkweDANCj4gICNkZWZpbmUgWEVf Vk1fQklORF9PUF9VTk1BUAkJMHgxDQo+ICAjZGVmaW5lIFhFX1ZNX0JJTkRfT1BfTUFQX1VTRVJQ VFIJMHgyDQo+IC0jZGVmaW5lIFhFX1ZNX0JJTkRfT1BfUkVTVEFSVAkJMHgzDQo+IC0jZGVmaW5l IFhFX1ZNX0JJTkRfT1BfVU5NQVBfQUxMCQkweDQNCj4gLSNkZWZpbmUgWEVfVk1fQklORF9PUF9Q UkVGRVRDSAkJMHg1DQo+ICsjZGVmaW5lIFhFX1ZNX0JJTkRfT1BfVU5NQVBfQUxMCQkweDMNCj4g KyNkZWZpbmUgWEVfVk1fQklORF9PUF9QUkVGRVRDSAkJMHg0DQo+ICAJLyoqIEBvcDogQmluZCBv cGVyYXRpb24gdG8gcGVyZm9ybSAqLw0KPiAgCV9fdTMyIG9wOw0KPiAgDQo+ICAjZGVmaW5lIFhF X1ZNX0JJTkRfRkxBR19SRUFET05MWQkoMHgxIDw8IDApDQo+IC0JLyoNCj4gLQkgKiBBIGJpbmQg b3BzIGNvbXBsZXRpb25zIGFyZSBhbHdheXMgYXN5bmMsIGhlbmNlIHRoZSBzdXBwb3J0IGZvciBv dXQNCj4gLQkgKiBzeW5jLiBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoZSBhbGxvY2F0aW9uIG9mIHRo ZSBtZW1vcnkgZm9yIG5ldyBwYWdlDQo+IC0JICogdGFibGVzIGFuZCB0aGUgam9iIHRvIHByb2dy YW0gdGhlIHBhZ2VzIHRhYmxlcyBpcyBhc3luY2hyb25vdXMNCj4gLQkgKiByZWxhdGl2ZSB0byB0 aGUgSU9DVEwuIFRoYXQgcGFydCBvZiBhIGJpbmQgb3BlcmF0aW9uIGNhbiBmYWlsIHVuZGVyDQo+ IC0JICogbWVtb3J5IHByZXNzdXJlLCB0aGUgam9iIGluIHByYWN0aWNlIGNhbid0IGZhaWwgdW5s ZXNzIHRoZSBzeXN0ZW0gaXMNCj4gLQkgKiB0b3RhbGx5IHNob3QuDQo+IC0JICoNCj4gLQkgKiBJ ZiB0aGlzIGZsYWcgaXMgY2xlYXIgYW5kIHRoZSBJT0NUTCBkb2Vzbid0IHJldHVybiBhbiBlcnJv ciwgaW4NCj4gLQkgKiBwcmFjdGljZSB0aGUgYmluZCBvcCBpcyBnb29kIGFuZCB3aWxsIGNvbXBs ZXRlLg0KPiAtCSAqDQo+IC0JICogSWYgdGhpcyBmbGFnIGlzIHNldCBhbmQgZG9lc24ndCByZXR1 cm4gYW4gZXJyb3IsIHRoZSBiaW5kIG9wIGNhbg0KPiAtCSAqIHN0aWxsIGZhaWwgYW5kIHJlY292 ZXJ5IGlzIG5lZWRlZC4gSXQgc2hvdWxkIGZyZWUgbWVtb3J5DQo+IC0JICogdmlhIG5vbi1hc3lu YyB1bmJpbmRzLCBhbmQgdGhlbiByZXN0YXJ0IGFsbCBxdWV1ZWQgYXN5bmMgYmluZHMgb3Agdmlh DQo+IC0JICogWEVfVk1fQklORF9PUF9SRVNUQVJULiBPciBhbHRlcm5hdGl2ZWx5IHRoZSB1c2Vy IHNob3VsZCBkZXN0cm95IHRoZQ0KPiAtCSAqIFZNLg0KPiAtCSAqDQo+IC0JICogVGhpcyBmbGFn IGlzIG9ubHkgYWxsb3dlZCB3aGVuIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMgaXMN Cj4gLQkgKiBjb25maWd1cmVkIGluIHRoZSBWTSBhbmQgbXVzdCBiZSBzZXQgaWYgdGhlIFZNIGlz IGNvbmZpZ3VyZWQgd2l0aA0KPiAtCSAqIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMg YW5kIG5vdCBpbiBhbiBlcnJvciBzdGF0ZS4NCj4gLQkgKi8NCj4gICNkZWZpbmUgWEVfVk1fQklO RF9GTEFHX0FTWU5DCQkoMHgxIDw8IDEpDQo+ICAJLyoNCj4gIAkgKiBWYWxpZCBvbiBhIGZhdWx0 aW5nIFZNIG9ubHksIGRvIHRoZSBNQVAgb3BlcmF0aW9uIGltbWVkaWF0ZWx5IHJhdGhlcg0KPiBA QCAtOTA1LDE4ICs4ODQsMTAgQEAgc3RydWN0IGRybV94ZV93YWl0X3VzZXJfZmVuY2Ugew0KPiAg CS8qKiBAZXh0ZW5zaW9uczogUG9pbnRlciB0byB0aGUgZmlyc3QgZXh0ZW5zaW9uIHN0cnVjdCwg aWYgYW55ICovDQo+ICAJX191NjQgZXh0ZW5zaW9uczsNCj4gIA0KPiAtCXVuaW9uIHsNCj4gLQkJ LyoqDQo+IC0JCSAqIEBhZGRyOiB1c2VyIHBvaW50ZXIgYWRkcmVzcyB0byB3YWl0IG9uLCBtdXN0 IHF3b3JkIGFsaWduZWQNCj4gLQkJICovDQo+IC0JCV9fdTY0IGFkZHI7DQo+IC0NCj4gLQkJLyoq DQo+IC0JCSAqIEB2bV9pZDogVGhlIElEIG9mIHRoZSBWTSB3aGljaCBlbmNvdW50ZXIgYW4gZXJy b3IgdXNlZCB3aXRoDQo+IC0JCSAqIERSTV9YRV9VRkVOQ0VfV0FJVF9WTV9FUlJPUi4gVXBwZXIg MzIgYml0cyBtdXN0IGJlIGNsZWFyLg0KPiAtCQkgKi8NCj4gLQkJX191NjQgdm1faWQ7DQo+IC0J fTsNCj4gKwkvKioNCj4gKwkgKiBAYWRkcjogdXNlciBwb2ludGVyIGFkZHJlc3MgdG8gd2FpdCBv biwgbXVzdCBxd29yZCBhbGlnbmVkDQo+ICsJICovDQo+ICsJX191NjQgYWRkcjsNCj4gIA0KPiAg I2RlZmluZSBEUk1fWEVfVUZFTkNFX1dBSVRfRVEJMA0KPiAgI2RlZmluZSBEUk1fWEVfVUZFTkNF X1dBSVRfTkVRCTENCj4gQEAgLTkyOSw3ICs5MDAsNiBAQCBzdHJ1Y3QgZHJtX3hlX3dhaXRfdXNl cl9mZW5jZSB7DQo+ICANCj4gICNkZWZpbmUgRFJNX1hFX1VGRU5DRV9XQUlUX1NPRlRfT1AJKDEg PDwgMCkJLyogZS5nLiBXYWl0IG9uIFZNIGJpbmQgKi8NCj4gICNkZWZpbmUgRFJNX1hFX1VGRU5D RV9XQUlUX0FCU1RJTUUJKDEgPDwgMSkNCj4gLSNkZWZpbmUgRFJNX1hFX1VGRU5DRV9XQUlUX1ZN X0VSUk9SCSgxIDw8IDIpDQo+ICAJLyoqIEBmbGFnczogd2FpdCBmbGFncyAqLw0KPiAgCV9fdTE2 IGZsYWdzOw0KPiAgDQo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMN Cj4gaW5kZXggZjBjMDY4MWFiLi4zNDkzNDg1NWEgMTAwNjQ0DQo+IC0tLSBhL2xpYi9pZ3RfZmIu Yw0KPiArKysgYi9saWIvaWd0X2ZiLmMNCj4gQEAgLTI4OTIsNyArMjg5Miw3IEBAIHN0YXRpYyB2 b2lkIGJsaXRjb3B5KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmRzdF9mYiwNCj4gIAkJCQkJCQkgICZi Yl9zaXplLA0KPiAgCQkJCQkJCSAgbWVtX3JlZ2lvbikgPT0gMCk7DQo+ICAJfSBlbHNlIGlmIChp c194ZSkgew0KPiAtCQl2bSA9IHhlX3ZtX2NyZWF0ZShkc3RfZmItPmZkLCBEUk1fWEVfVk1fQ1JF QVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwkJdm0gPSB4ZV92bV9jcmVhdGUoZHN0X2ZiLT5m ZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIAkJZXhlY19xdWV1ZSA9 IHhlX2V4ZWNfcXVldWVfY3JlYXRlKGRzdF9mYi0+ZmQsIHZtLCAmaW5zdCwgMCk7DQo+ICAJCXhl X2N0eCA9IGludGVsX2N0eF94ZShkc3RfZmItPmZkLCB2bSwgZXhlY19xdWV1ZSwgMCwgMCwgMCk7 DQo+ICAJCW1lbV9yZWdpb24gPSB2cmFtX2lmX3Bvc3NpYmxlKGRzdF9mYi0+ZmQsIDApOw0KPiBk aWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZm ZXIuYw0KPiBpbmRleCA2ZTY2OGQyOGMuLmRmODJlZjVmNSAxMDA2NDQNCj4gLS0tIGEvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmMNCj4gKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMNCj4gQEAg LTk1Myw3ICs5NTMsNyBAQCBfX2ludGVsX2JiX2NyZWF0ZShpbnQgZmQsIHVpbnQzMl90IGN0eCwg dWludDMyX3Qgdm0sIGNvbnN0IGludGVsX2N0eF9jZmdfdCAqY2ZnLA0KPiAgDQo+ICAJCWlmICgh dm0pIHsNCj4gIAkJCWlndF9hc3NlcnRfZighY3R4LCAiTm8gdm0gcHJvdmlkZWQgZm9yIGVuZ2lu ZSIpOw0KPiAtCQkJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNf QklORF9PUFMsIDApOw0KPiArCQkJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVB VEVfQVNZTkNfREVGQVVMVCwgMCk7DQo+ICAJCX0NCj4gIA0KPiAgCQlpYmItPnVzZXNfZnVsbF9w cGd0dCA9IHRydWU7DQo+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfY29tcHV0ZS5jIGIvbGliL2lu dGVsX2NvbXB1dGUuYw0KPiBpbmRleCAwYzMwZjM5YzEuLjFhZTMzY2RmYyAxMDA2NDQNCj4gLS0t IGEvbGliL2ludGVsX2NvbXB1dGUuYw0KPiArKysgYi9saWIvaW50ZWxfY29tcHV0ZS5jDQo+IEBA IC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIGJvX2V4ZWNlbnZfY3JlYXRlKGludCBmZCwgc3Ry dWN0IGJvX2V4ZWNlbnYgKmV4ZWNlbnYpDQo+ICAJCWVsc2UNCj4gIAkJCWVuZ2luZV9jbGFzcyA9 IERSTV9YRV9FTkdJTkVfQ0xBU1NfQ09NUFVURTsNCj4gIA0KPiAtCQlleGVjZW52LT52bSA9IHhl X3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywgMCk7DQo+ICsJ CWV4ZWNlbnYtPnZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RF RkFVTFQsIDApOw0KPiAgCQlleGVjZW52LT5leGVjX3F1ZXVlID0geGVfZXhlY19xdWV1ZV9jcmVh dGVfY2xhc3MoZmQsIGV4ZWNlbnYtPnZtLA0KPiAgCQkJCQkJCQkgZW5naW5lX2NsYXNzKTsNCj4g IAl9DQo+IGRpZmYgLS1naXQgYS9saWIveGUveGVfaW9jdGwuYyBiL2xpYi94ZS94ZV9pb2N0bC5j DQo+IGluZGV4IDQ4Y2QxODVkZS4uODk1ZTNiZDRlIDEwMDY0NA0KPiAtLS0gYS9saWIveGUveGVf aW9jdGwuYw0KPiArKysgYi9saWIveGUveGVfaW9jdGwuYw0KPiBAQCAtMjAxLDE2ICsyMDEsOCBA QCB2b2lkIHhlX3ZtX3VuYmluZF9hc3luYyhpbnQgZmQsIHVpbnQzMl90IHZtLCB1aW50MzJfdCBl eGVjX3F1ZXVlLA0KPiAgc3RhdGljIHZvaWQgX194ZV92bV9iaW5kX3N5bmMoaW50IGZkLCB1aW50 MzJfdCB2bSwgdWludDMyX3QgYm8sIHVpbnQ2NF90IG9mZnNldCwNCj4gIAkJCSAgICAgIHVpbnQ2 NF90IGFkZHIsIHVpbnQ2NF90IHNpemUsIHVpbnQzMl90IG9wKQ0KPiAgew0KPiAtCXN0cnVjdCBk cm1feGVfc3luYyBzeW5jID0gew0KPiAtCQkuZmxhZ3MgPSBEUk1fWEVfU1lOQ19TWU5DT0JKIHwg RFJNX1hFX1NZTkNfU0lHTkFMLA0KPiAtCQkuaGFuZGxlID0gc3luY29ial9jcmVhdGUoZmQsIDAp LA0KPiAtCX07DQo+IC0NCj4gLQlfX3hlX3ZtX2JpbmRfYXNzZXJ0KGZkLCB2bSwgMCwgYm8sIG9m ZnNldCwgYWRkciwgc2l6ZSwgb3AsIDAsICZzeW5jLCAxLA0KPiArCV9feGVfdm1fYmluZF9hc3Nl cnQoZmQsIHZtLCAwLCBibywgb2Zmc2V0LCBhZGRyLCBzaXplLCBvcCwgMCwgTlVMTCwgMCwNCj4g IAkJCSAgICAwLCAwKTsNCj4gLQ0KPiAtCWlndF9hc3NlcnQoc3luY29ial93YWl0KGZkLCAmc3lu Yy5oYW5kbGUsIDEsIElOVDY0X01BWCwgMCwgTlVMTCkpOw0KPiAtCXN5bmNvYmpfZGVzdHJveShm ZCwgc3luYy5oYW5kbGUpOw0KPiAgfQ0KPiAgDQo+ICB2b2lkIHhlX3ZtX2JpbmRfc3luYyhpbnQg ZmQsIHVpbnQzMl90IHZtLCB1aW50MzJfdCBibywgdWludDY0X3Qgb2Zmc2V0LA0KPiBAQCAtMjc2 LDEwICsyNjgsMTEgQEAgdWludDMyX3QgeGVfYm9fY3JlYXRlKGludCBmZCwgaW50IGd0LCB1aW50 MzJfdCB2bSwgdWludDY0X3Qgc2l6ZSkNCj4gIAlyZXR1cm4gY3JlYXRlLmhhbmRsZTsNCj4gIH0N Cj4gIA0KPiAtdWludDMyX3QgeGVfYmluZF9leGVjX3F1ZXVlX2NyZWF0ZShpbnQgZmQsIHVpbnQz Ml90IHZtLCB1aW50NjRfdCBleHQpDQo+ICt1aW50MzJfdCB4ZV9iaW5kX2V4ZWNfcXVldWVfY3Jl YXRlKGludCBmZCwgdWludDMyX3Qgdm0sIHVpbnQ2NF90IGV4dCwgYm9vbCBhc3luYykNCj4gIHsN Cj4gIAlzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSBpbnN0YW5jZSA9IHsNCj4g LQkJLmVuZ2luZV9jbGFzcyA9IERSTV9YRV9FTkdJTkVfQ0xBU1NfVk1fQklORCwNCj4gKwkJLmVu Z2luZV9jbGFzcyA9IGFzeW5jID8gRFJNX1hFX0VOR0lORV9DTEFTU19WTV9CSU5EX0FTWU5DIDoN Cj4gKwkJCURSTV9YRV9FTkdJTkVfQ0xBU1NfVk1fQklORF9TWU5DLA0KPiAgCX07DQo+ICAJc3Ry dWN0IGRybV94ZV9leGVjX3F1ZXVlX2NyZWF0ZSBjcmVhdGUgPSB7DQo+ICAJCS5leHRlbnNpb25z ID0gZXh0LA0KPiBkaWZmIC0tZ2l0IGEvbGliL3hlL3hlX2lvY3RsLmggYi9saWIveGUveGVfaW9j dGwuaA0KPiBpbmRleCBmMGU0MTA5ZGMuLmE4ZGJjZjM3NiAxMDA2NDQNCj4gLS0tIGEvbGliL3hl L3hlX2lvY3RsLmgNCj4gKysrIGIvbGliL3hlL3hlX2lvY3RsLmgNCj4gQEAgLTcxLDcgKzcxLDgg QEAgdWludDMyX3QgeGVfYm9fY3JlYXRlKGludCBmZCwgaW50IGd0LCB1aW50MzJfdCB2bSwgdWlu dDY0X3Qgc2l6ZSk7DQo+ICB1aW50MzJfdCB4ZV9leGVjX3F1ZXVlX2NyZWF0ZShpbnQgZmQsIHVp bnQzMl90IHZtLA0KPiAgCQkJICBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAq aW5zdGFuY2UsDQo+ICAJCQkgIHVpbnQ2NF90IGV4dCk7DQo+IC11aW50MzJfdCB4ZV9iaW5kX2V4 ZWNfcXVldWVfY3JlYXRlKGludCBmZCwgdWludDMyX3Qgdm0sIHVpbnQ2NF90IGV4dCk7DQo+ICt1 aW50MzJfdCB4ZV9iaW5kX2V4ZWNfcXVldWVfY3JlYXRlKGludCBmZCwgdWludDMyX3Qgdm0sIHVp bnQ2NF90IGV4dCwNCj4gKwkJCQkgICBib29sIGFzeW5jKTsNCj4gIHVpbnQzMl90IHhlX2V4ZWNf cXVldWVfY3JlYXRlX2NsYXNzKGludCBmZCwgdWludDMyX3Qgdm0sIHVpbnQxNl90IGNsYXNzKTsN Cj4gIHZvaWQgeGVfZXhlY19xdWV1ZV9kZXN0cm95KGludCBmZCwgdWludDMyX3QgZXhlY19xdWV1 ZSk7DQo+ICB1aW50NjRfdCB4ZV9ib19tbWFwX29mZnNldChpbnQgZmQsIHVpbnQzMl90IGJvKTsN Cj4gZGlmZiAtLWdpdCBhL2xpYi94ZS94ZV9xdWVyeS5jIGIvbGliL3hlL3hlX3F1ZXJ5LmMNCj4g aW5kZXggYzM1NmFiZTFlLi5hYjdiMzExODggMTAwNjQ0DQo+IC0tLSBhL2xpYi94ZS94ZV9xdWVy eS5jDQo+ICsrKyBiL2xpYi94ZS94ZV9xdWVyeS5jDQo+IEBAIC0zMTYsNyArMzE2LDcgQEAgYm9v bCB4ZV9zdXBwb3J0c19mYXVsdHMoaW50IGZkKQ0KPiAgCWJvb2wgc3VwcG9ydHNfZmF1bHRzOw0K PiAgDQo+ICAJc3RydWN0IGRybV94ZV92bV9jcmVhdGUgY3JlYXRlID0gew0KPiAtCQkuZmxhZ3Mg PSBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTIHwNCj4gKwkJLmZsYWdzID0gRFJNX1hF X1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxUIHwNCj4gIAkJCSBEUk1fWEVfVk1fQ1JFQVRFX0ZBVUxU X01PREUsDQo+ICAJfTsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfY2NzLmMg Yi90ZXN0cy9pbnRlbC94ZV9jY3MuYw0KPiBpbmRleCAyMGJiYzQ0NDguLjMwMGI3MzRjOCAxMDA2 NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfY2NzLmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVf Y2NzLmMNCj4gQEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0aWMgdm9pZCBibG9ja19jb3B5KGludCB4 ZSwNCj4gIAkJdWludDMyX3Qgdm0sIGV4ZWNfcXVldWU7DQo+ICANCj4gIAkJaWYgKGNvbmZpZy0+ bmV3X2N0eCkgew0KPiAtCQkJdm0gPSB4ZV92bV9jcmVhdGUoeGUsIERSTV9YRV9WTV9DUkVBVEVf QVNZTkNfQklORF9PUFMsIDApOw0KPiArCQkJdm0gPSB4ZV92bV9jcmVhdGUoeGUsIERSTV9YRV9W TV9DUkVBVEVfQVNZTkNfREVGQVVMVCwgMCk7DQo+ICAJCQlleGVjX3F1ZXVlID0geGVfZXhlY19x dWV1ZV9jcmVhdGUoeGUsIHZtLCAmaW5zdCwgMCk7DQo+ICAJCQlzdXJmX2N0eCA9IGludGVsX2N0 eF94ZSh4ZSwgdm0sIGV4ZWNfcXVldWUsIDAsIDAsIDApOw0KPiAgCQkJc3VyZl9haG5kID0gaW50 ZWxfYWxsb2NhdG9yX29wZW4oeGUsIHN1cmZfY3R4LT52bSwNCj4gQEAgLTU1MCw3ICs1NTAsNyBA QCBzdGF0aWMgdm9pZCBibG9ja19jb3B5X3Rlc3QoaW50IHhlLA0KPiAgCQkJCSAgICAgIGNvcHlm bnNbY29weV9mdW5jdGlvbl0uc3VmZml4KSB7DQo+ICAJCQkJdWludDMyX3Qgc3luY19iaW5kLCBz eW5jX291dDsNCj4gIA0KPiAtCQkJCXZtID0geGVfdm1fY3JlYXRlKHhlLCBEUk1fWEVfVk1fQ1JF QVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwkJCQl2bSA9IHhlX3ZtX2NyZWF0ZSh4ZSwgRFJN X1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIAkJCQlleGVjX3F1ZXVlID0geGVf ZXhlY19xdWV1ZV9jcmVhdGUoeGUsIHZtLCAmaW5zdCwgMCk7DQo+ICAJCQkJc3luY19iaW5kID0g c3luY29ial9jcmVhdGUoeGUsIDApOw0KPiAgCQkJCXN5bmNfb3V0ID0gc3luY29ial9jcmVhdGUo eGUsIDApOw0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfY3JlYXRlLmMgYi90ZXN0cy9p bnRlbC94ZV9jcmVhdGUuYw0KPiBpbmRleCA4ZDg0NWU1YzguLmQ5OWJkNTFjZiAxMDA2NDQNCj4g LS0tIGEvdGVzdHMvaW50ZWwveGVfY3JlYXRlLmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVfY3Jl YXRlLmMNCj4gQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2ludmFsaWRfc2l6 ZShpbnQgZmQpDQo+ICAJdWludDMyX3QgaGFuZGxlOw0KPiAgCWludCByZXQ7DQo+ICANCj4gLQl2 bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywgMCk7 DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVM VCwgMCk7DQo+ICANCj4gIAl4ZV9mb3JfZWFjaF9tZW1fcmVnaW9uKGZkLCBtZW1yZWcsIHJlZ2lv bikgew0KPiAgCQltZW1yZWdpb24gPSB4ZV9tZW1fcmVnaW9uKGZkLCByZWdpb24pOw0KPiBAQCAt MTQwLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9leGVjcXVldWVzKGludCBmZCwgZW51 bSBleGVjX3F1ZXVlX2Rlc3Ryb3kgZWQpDQo+ICANCj4gIAlmZCA9IGRybV9yZW9wZW5fZHJpdmVy KGZkKTsNCj4gIAludW1fZW5naW5lcyA9IHhlX251bWJlcl9od19lbmdpbmVzKGZkKTsNCj4gLQl2 bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywgMCk7 DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVM VCwgMCk7DQo+ICANCj4gIAlleGVjX3F1ZXVlc19wZXJfcHJvY2VzcyA9IG1heF90KHVpbnQzMl90 LCAxLCBNQVhFWEVDUVVFVUVTIC8gbnByb2MpOw0KPiAgCWlndF9kZWJ1ZygibnByb2M6ICV1LCBl eGVjX3F1ZXVlcyBwZXIgcHJvY2VzczogJXVcbiIsIG5wcm9jLCBleGVjX3F1ZXVlc19wZXJfcHJv Y2Vzcyk7DQo+IEBAIC0xOTksNyArMTk5LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlX21hc3NpdmVf c2l6ZShpbnQgZmQpDQo+ICAJdWludDMyX3QgaGFuZGxlOw0KPiAgCWludCByZXQ7DQo+ICANCj4g LQl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywg MCk7DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVG QVVMVCwgMCk7DQo+ICANCj4gIAl4ZV9mb3JfZWFjaF9tZW1fcmVnaW9uKGZkLCBtZW1yZWcsIHJl Z2lvbikgew0KPiAgCQlyZXQgPSBfX2NyZWF0ZV9ibyhmZCwgdm0sIC0xVUxMIDw8IDMyLCByZWdp b24sICZoYW5kbGUpOw0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfZHJtX2ZkaW5mby5j IGIvdGVzdHMvaW50ZWwveGVfZHJtX2ZkaW5mby5jDQo+IGluZGV4IDIyZTQxMGUxNC4uNjQxNjhl ZDE5IDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9pbnRlbC94ZV9kcm1fZmRpbmZvLmMNCj4gKysrIGIv dGVzdHMvaW50ZWwveGVfZHJtX2ZkaW5mby5jDQo+IEBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2 b2lkIHRlc3RfYWN0aXZlKGludCBmZCwgc3RydWN0IGRybV94ZV9lbmdpbmVfY2xhc3NfaW5zdGFu Y2UgKmVjaSkNCj4gIAlzdHJ1Y3QgeGVfc3Bpbl9vcHRzIHNwaW5fb3B0cyA9IHsgLnByZWVtcHQg PSB0cnVlIH07DQo+ICAJaW50IGksIGIsIHJldDsNCj4gIA0KPiAtCXZtID0geGVfdm1fY3JlYXRl KGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwl2bSA9IHhlX3Zt X2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIAlib19z aXplID0gc2l6ZW9mKCpkYXRhKSAqIE5fRVhFQ19RVUVVRVM7DQo+ICAJYm9fc2l6ZSA9IEFMSUdO KGJvX3NpemUgKyB4ZV9jc19wcmVmZXRjaF9zaXplKGZkKSwNCj4gIAkJCXhlX2dldF9kZWZhdWx0 X2FsaWdubWVudChmZCkpOw0KPiBAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Fj dGl2ZShpbnQgZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2kpDQo+ ICANCj4gIAkJZm9yIChpID0gMDsgaSA8IE5fRVhFQ19RVUVVRVM7IGkrKykgew0KPiAgCQkJZXhl Y19xdWV1ZXNbaV0gPSB4ZV9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIGVjaSwgMCk7DQo+IC0J CQliaW5kX2V4ZWNfcXVldWVzW2ldID0geGVfYmluZF9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0s IDApOw0KPiArCQkJYmluZF9leGVjX3F1ZXVlc1tpXSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVh dGUoZmQsIHZtLCAwLCB0cnVlKTsNCj4gIAkJCXN5bmNvYmpzW2ldID0gc3luY29ial9jcmVhdGUo ZmQsIDApOw0KPiAgCQl9DQo+ICAJCXN5bmNvYmpzW05fRVhFQ19RVUVVRVNdID0gc3luY29ial9j cmVhdGUoZmQsIDApOw0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfZXZpY3QuYyBiL3Rl c3RzL2ludGVsL3hlX2V2aWN0LmMNCj4gaW5kZXggNWQ4OTgxZjhkLi5lZWMwMDEyMTggMTAwNjQ0 DQo+IC0tLSBhL3Rlc3RzL2ludGVsL3hlX2V2aWN0LmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVf ZXZpY3QuYw0KPiBAQCAtNjMsMTUgKzYzLDE3IEBAIHRlc3RfZXZpY3QoaW50IGZkLCBzdHJ1Y3Qg ZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLA0KPiAgDQo+ICAJZmQgPSBkcm1fb3Bl bl9kcml2ZXIoRFJJVkVSX1hFKTsNCj4gIA0KPiAtCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1f WEVfVk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwl2bSA9IHhlX3ZtX2NyZWF0ZShm ZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIAlpZiAoZmxhZ3MgJiBC SU5EX0VYRUNfUVVFVUUpDQo+IC0JCWJpbmRfZXhlY19xdWV1ZXNbMF0gPSB4ZV9iaW5kX2V4ZWNf cXVldWVfY3JlYXRlKGZkLCB2bSwgMCk7DQo+ICsJCWJpbmRfZXhlY19xdWV1ZXNbMF0gPSB4ZV9i aW5kX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bSwgMCwgdHJ1ZSk7DQo+ICAJaWYgKGZsYWdzICYg TVVMVElfVk0pIHsNCj4gLQkJdm0yID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRF X0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gLQkJdm0zID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVf Vk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwkJdm0yID0geGVfdm1fY3JlYXRlKGZk LCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RFRkFVTFQsIDApOw0KPiArCQl2bTMgPSB4ZV92bV9j cmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVMVCwgMCk7DQo+ICAJCWlmIChm bGFncyAmIEJJTkRfRVhFQ19RVUVVRSkgew0KPiAtCQkJYmluZF9leGVjX3F1ZXVlc1sxXSA9IHhl X2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZtMiwgMCk7DQo+IC0JCQliaW5kX2V4ZWNfcXVl dWVzWzJdID0geGVfYmluZF9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0zLCAwKTsNCj4gKwkJCWJp bmRfZXhlY19xdWV1ZXNbMV0gPSB4ZV9iaW5kX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bTIsDQo+ ICsJCQkJCQkJCQkwLCB0cnVlKTsNCj4gKwkJCWJpbmRfZXhlY19xdWV1ZXNbMl0gPSB4ZV9iaW5k X2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bTMsDQo+ICsJCQkJCQkJCQkwLCB0cnVlKTsNCj4gIAkJ fQ0KPiAgCX0NCj4gIA0KPiBAQCAtMjQwLDE1ICsyNDIsMTYgQEAgdGVzdF9ldmljdF9jbShpbnQg ZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksDQo+ICANCj4gIAlm ZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfWEUpOw0KPiAgDQo+IC0Jdm0gPSB4ZV92bV9jcmVh dGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMgfA0KPiArCXZtID0geGVfdm1f Y3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RFRkFVTFQgfA0KPiAgCQkJICBEUk1f WEVfVk1fQ1JFQVRFX0NPTVBVVEVfTU9ERSwgMCk7DQo+ICAJaWYgKGZsYWdzICYgQklORF9FWEVD X1FVRVVFKQ0KPiAtCQliaW5kX2V4ZWNfcXVldWVzWzBdID0geGVfYmluZF9leGVjX3F1ZXVlX2Ny ZWF0ZShmZCwgdm0sIDApOw0KPiArCQliaW5kX2V4ZWNfcXVldWVzWzBdID0geGVfYmluZF9leGVj X3F1ZXVlX2NyZWF0ZShmZCwgdm0sIDAsIHRydWUpOw0KPiAgCWlmIChmbGFncyAmIE1VTFRJX1ZN KSB7DQo+IC0JCXZtMiA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19C SU5EX09QUyB8DQo+ICsJCXZtMiA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9B U1lOQ19ERUZBVUxUIHwNCj4gIAkJCQkgICBEUk1fWEVfVk1fQ1JFQVRFX0NPTVBVVEVfTU9ERSwg MCk7DQo+ICAJCWlmIChmbGFncyAmIEJJTkRfRVhFQ19RVUVVRSkNCj4gLQkJCWJpbmRfZXhlY19x dWV1ZXNbMV0gPSB4ZV9iaW5kX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bTIsIDApOw0KPiArCQkJ YmluZF9leGVjX3F1ZXVlc1sxXSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZtMiwN Cj4gKwkJCQkJCQkJCTAsIHRydWUpOw0KPiAgCX0NCj4gIA0KPiAgCWZvciAoaSA9IDA7IGkgPCBu X2V4ZWNfcXVldWVzOyBpKyspIHsNCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ludGVsL3hlX2V4ZWNf YmFsYW5jZXIuYyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfYmFsYW5jZXIuYw0KPiBpbmRleCBmNGY1 NDQwZjQuLjNjYTNkZTg4MSAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfZXhlY19iYWxh bmNlci5jDQo+ICsrKyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfYmFsYW5jZXIuYw0KPiBAQCAtNjYs NyArNjYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2FsbF9hY3RpdmUoaW50IGZkLCBpbnQgZ3QsIGlu dCBjbGFzcykNCj4gIAlpZiAobnVtX3BsYWNlbWVudHMgPCAyKQ0KPiAgCQlyZXR1cm47DQo+ICAN Cj4gLQl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09Q UywgMCk7DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNf REVGQVVMVCwgMCk7DQo+ICAJYm9fc2l6ZSA9IHNpemVvZigqZGF0YSkgKiBudW1fcGxhY2VtZW50 czsNCj4gIAlib19zaXplID0gQUxJR04oYm9fc2l6ZSArIHhlX2NzX3ByZWZldGNoX3NpemUoZmQp LCB4ZV9nZXRfZGVmYXVsdF9hbGlnbm1lbnQoZmQpKTsNCj4gIA0KPiBAQCAtMjA3LDcgKzIwNyw3 IEBAIHRlc3RfZXhlYyhpbnQgZmQsIGludCBndCwgaW50IGNsYXNzLCBpbnQgbl9leGVjX3F1ZXVl cywgaW50IG5fZXhlY3MsDQo+ICAJaWYgKG51bV9wbGFjZW1lbnRzIDwgMikNCj4gIAkJcmV0dXJu Ow0KPiAgDQo+IC0Jdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNf QklORF9PUFMsIDApOw0KPiArCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRF X0FTWU5DX0RFRkFVTFQsIDApOw0KPiAgCWJvX3NpemUgPSBzaXplb2YoKmRhdGEpICogbl9leGVj czsNCj4gIAlib19zaXplID0gQUxJR04oYm9fc2l6ZSArIHhlX2NzX3ByZWZldGNoX3NpemUoZmQp LCB4ZV9nZXRfZGVmYXVsdF9hbGlnbm1lbnQoZmQpKTsNCj4gIA0KPiBAQCAtNDMzLDcgKzQzMyw3 IEBAIHRlc3RfY20oaW50IGZkLCBpbnQgZ3QsIGludCBjbGFzcywgaW50IG5fZXhlY19xdWV1ZXMs IGludCBuX2V4ZWNzLA0KPiAgCWlmIChudW1fcGxhY2VtZW50cyA8IDIpDQo+ICAJCXJldHVybjsN Cj4gIA0KPiAtCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJ TkRfT1BTIHwNCj4gKwl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lO Q19ERUZBVUxUIHwNCj4gIAkJCSAgRFJNX1hFX1ZNX0NSRUFURV9DT01QVVRFX01PREUsIDApOw0K PiAgCWJvX3NpemUgPSBzaXplb2YoKmRhdGEpICogbl9leGVjczsNCj4gIAlib19zaXplID0gQUxJ R04oYm9fc2l6ZSArIHhlX2NzX3ByZWZldGNoX3NpemUoZmQpLA0KPiBkaWZmIC0tZ2l0IGEvdGVz dHMvaW50ZWwveGVfZXhlY19iYXNpYy5jIGIvdGVzdHMvaW50ZWwveGVfZXhlY19iYXNpYy5jDQo+ IGluZGV4IGUyOTM5OGFhYS4uOGRiY2U1MjRkIDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9pbnRlbC94 ZV9leGVjX2Jhc2ljLmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVfZXhlY19iYXNpYy5jDQo+IEBA IC0xMDksNyArMTA5LDcgQEAgdGVzdF9leGVjKGludCBmZCwgc3RydWN0IGRybV94ZV9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UgKmVjaSwNCj4gIAlpZ3RfYXNzZXJ0KG5fdm0gPD0gTUFYX05fRVhFQ19R VUVVRVMpOw0KPiAgDQo+ICAJZm9yIChpID0gMDsgaSA8IG5fdm07ICsraSkNCj4gLQkJdm1baV0g PSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMsIDApOw0K PiArCQl2bVtpXSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZB VUxULCAwKTsNCj4gIAlib19zaXplID0gc2l6ZW9mKCpkYXRhKSAqIG5fZXhlY3M7DQo+ICAJYm9f c2l6ZSA9IEFMSUdOKGJvX3NpemUgKyB4ZV9jc19wcmVmZXRjaF9zaXplKGZkKSwNCj4gIAkJCXhl X2dldF9kZWZhdWx0X2FsaWdubWVudChmZCkpOw0KPiBAQCAtMTUxLDcgKzE1MSw5IEBAIHRlc3Rf ZXhlYyhpbnQgZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksDQo+ ICANCj4gIAkJZXhlY19xdWV1ZXNbaV0gPSB4ZV9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgX192bSwg ZWNpLCAwKTsNCj4gIAkJaWYgKGZsYWdzICYgQklORF9FWEVDX1FVRVVFKQ0KPiAtCQkJYmluZF9l eGVjX3F1ZXVlc1tpXSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIF9fdm0sIDApOw0K PiArCQkJYmluZF9leGVjX3F1ZXVlc1tpXSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQs DQo+ICsJCQkJCQkJCQlfX3ZtLCAwLA0KPiArCQkJCQkJCQkJdHJ1ZSk7DQo+ICAJCWVsc2UNCj4g IAkJCWJpbmRfZXhlY19xdWV1ZXNbaV0gPSAwOw0KPiAgCQlzeW5jb2Jqc1tpXSA9IHN5bmNvYmpf Y3JlYXRlKGZkLCAwKTsNCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ludGVsL3hlX2V4ZWNfY29tcHV0 ZV9tb2RlLmMgYi90ZXN0cy9pbnRlbC94ZV9leGVjX2NvbXB1dGVfbW9kZS5jDQo+IGluZGV4IDAy ZTdlZjIwMS4uYjBhNjc3ZGNhIDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9pbnRlbC94ZV9leGVjX2Nv bXB1dGVfbW9kZS5jDQo+ICsrKyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfY29tcHV0ZV9tb2RlLmMN Cj4gQEAgLTExMyw3ICsxMTMsNyBAQCB0ZXN0X2V4ZWMoaW50IGZkLCBzdHJ1Y3QgZHJtX3hlX2Vu Z2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLA0KPiAgDQo+ICAJaWd0X2Fzc2VydChuX2V4ZWNfcXVl dWVzIDw9IE1BWF9OX0VYRUNRVUVVRVMpOw0KPiAgDQo+IC0Jdm0gPSB4ZV92bV9jcmVhdGUoZmQs IERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMgfA0KPiArCXZtID0geGVfdm1fY3JlYXRl KGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RFRkFVTFQgfA0KPiAgCQkJICBEUk1fWEVfVk1f Q1JFQVRFX0NPTVBVVEVfTU9ERSwgMCk7DQo+ICAJYm9fc2l6ZSA9IHNpemVvZigqZGF0YSkgKiBu X2V4ZWNzOw0KPiAgCWJvX3NpemUgPSBBTElHTihib19zaXplICsgeGVfY3NfcHJlZmV0Y2hfc2l6 ZShmZCksDQo+IEBAIC0xMjMsNyArMTIzLDcgQEAgdGVzdF9leGVjKGludCBmZCwgc3RydWN0IGRy bV94ZV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaSwNCj4gIAkJZXhlY19xdWV1ZXNbaV0gPSB4 ZV9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIGVjaSwgMCk7DQo+ICAJCWlmIChmbGFncyAmIEJJ TkRfRVhFQ1FVRVVFKQ0KPiAgCQkJYmluZF9leGVjX3F1ZXVlc1tpXSA9DQo+IC0JCQkJeGVfYmlu ZF9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIDApOw0KPiArCQkJCXhlX2JpbmRfZXhlY19xdWV1 ZV9jcmVhdGUoZmQsIHZtLCAwLCB0cnVlKTsNCj4gIAkJZWxzZQ0KPiAgCQkJYmluZF9leGVjX3F1 ZXVlc1tpXSA9IDA7DQo+ICAJfTsNCj4gQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZXN0X2V4ZWMoaW50 IGZkLCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLA0KPiAgCQlleGVj X3F1ZXVlc1tpXSA9IHhlX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bSwgZWNpLCAwKTsNCj4gIAkJ aWYgKGZsYWdzICYgQklORF9FWEVDUVVFVUUpDQo+ICAJCQliaW5kX2V4ZWNfcXVldWVzW2ldID0N Cj4gLQkJCQl4ZV9iaW5kX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bSwgMCk7DQo+ICsJCQkJeGVf YmluZF9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIDAsIHRydWUpOw0KPiAgCQllbHNlDQo+ICAJ CQliaW5kX2V4ZWNfcXVldWVzW2ldID0gMDsNCj4gIAl9Ow0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMv aW50ZWwveGVfZXhlY19mYXVsdF9tb2RlLmMgYi90ZXN0cy9pbnRlbC94ZV9leGVjX2ZhdWx0X21v ZGUuYw0KPiBpbmRleCBjNWQ2YmRjZDUuLjkyZDg2OTBhMSAxMDA2NDQNCj4gLS0tIGEvdGVzdHMv aW50ZWwveGVfZXhlY19mYXVsdF9tb2RlLmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVfZXhlY19m YXVsdF9tb2RlLmMNCj4gQEAgLTEzMSw3ICsxMzEsNyBAQCB0ZXN0X2V4ZWMoaW50IGZkLCBzdHJ1 Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLA0KPiAgDQo+ICAJaWd0X2Fzc2Vy dChuX2V4ZWNfcXVldWVzIDw9IE1BWF9OX0VYRUNfUVVFVUVTKTsNCj4gIA0KPiAtCXZtID0geGVf dm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTIHwNCj4gKwl2bSA9 IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxUIHwNCj4gIAkJ CSAgRFJNX1hFX1ZNX0NSRUFURV9GQVVMVF9NT0RFLCAwKTsNCj4gIAlib19zaXplID0gc2l6ZW9m KCpkYXRhKSAqIG5fZXhlY3M7DQo+ICAJYm9fc2l6ZSA9IEFMSUdOKGJvX3NpemUgKyB4ZV9jc19w cmVmZXRjaF9zaXplKGZkKSwNCj4gQEAgLTE2NSw3ICsxNjUsNyBAQCB0ZXN0X2V4ZWMoaW50IGZk LCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLA0KPiAgCQlleGVjX3F1 ZXVlc1tpXSA9IHhlX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bSwgZWNpLCAwKTsNCj4gIAkJaWYg KGZsYWdzICYgQklORF9FWEVDX1FVRVVFKQ0KPiAgCQkJYmluZF9leGVjX3F1ZXVlc1tpXSA9DQo+ IC0JCQkJeGVfYmluZF9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIDApOw0KPiArCQkJCXhlX2Jp bmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZtLCAwLCB0cnVlKTsNCj4gIAkJZWxzZQ0KPiAgCQkJ YmluZF9leGVjX3F1ZXVlc1tpXSA9IDA7DQo+ICAJfTsNCj4gQEAgLTM3NSw3ICszNzUsNyBAQCB0 ZXN0X2F0b21pYyhpbnQgZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICpl Y2ksDQo+ICAJdWludDMyX3QgKnB0cjsNCj4gIAlpbnQgaSwgYiwgd2FpdF9pZHggPSAwOw0KPiAg DQo+IC0Jdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9P UFMgfA0KPiArCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RF RkFVTFQgfA0KPiAgCQkJICBEUk1fWEVfVk1fQ1JFQVRFX0ZBVUxUX01PREUsIDApOw0KPiAgCWJv X3NpemUgPSBzaXplb2YoKmRhdGEpICogbl9hdG9taWM7DQo+ICAJYm9fc2l6ZSA9IEFMSUdOKGJv X3NpemUgKyB4ZV9jc19wcmVmZXRjaF9zaXplKGZkKSwNCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2lu dGVsL3hlX2V4ZWNfcmVzZXQuYyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfcmVzZXQuYw0KPiBpbmRl eCBjYThkN2NjMTMuLjQ0MjQ4Nzc2YiAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfZXhl Y19yZXNldC5jDQo+ICsrKyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfcmVzZXQuYw0KPiBAQCAtNDUs NyArNDUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NwaW4oaW50IGZkLCBzdHJ1Y3QgZHJtX3hlX2Vu Z2luZV9jbGFzc19pbnN0YW5jZSAqZWNpKQ0KPiAgCXN0cnVjdCB4ZV9zcGluICpzcGluOw0KPiAg CXN0cnVjdCB4ZV9zcGluX29wdHMgc3Bpbl9vcHRzID0geyAuYWRkciA9IGFkZHIsIC5wcmVlbXB0 ID0gZmFsc2UgfTsNCj4gIA0KPiAtCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JF QVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hF X1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIAlib19zaXplID0gc2l6ZW9mKCpzcGlu KTsNCj4gIAlib19zaXplID0gQUxJR04oYm9fc2l6ZSArIHhlX2NzX3ByZWZldGNoX3NpemUoZmQp LA0KPiAgCQkJeGVfZ2V0X2RlZmF1bHRfYWxpZ25tZW50KGZkKSk7DQo+IEBAIC0xNzYsNyArMTc2 LDcgQEAgdGVzdF9iYWxhbmNlcihpbnQgZmQsIGludCBndCwgaW50IGNsYXNzLCBpbnQgbl9leGVj X3F1ZXVlcywgaW50IG5fZXhlY3MsDQo+ICAJaWYgKG51bV9wbGFjZW1lbnRzIDwgMikNCj4gIAkJ cmV0dXJuOw0KPiAgDQo+IC0Jdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVf QVNZTkNfQklORF9PUFMsIDApOw0KPiArCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1f Q1JFQVRFX0FTWU5DX0RFRkFVTFQsIDApOw0KPiAgCWJvX3NpemUgPSBzaXplb2YoKmRhdGEpICog bl9leGVjczsNCj4gIAlib19zaXplID0gQUxJR04oYm9fc2l6ZSArIHhlX2NzX3ByZWZldGNoX3Np emUoZmQpLA0KPiAgCQkJeGVfZ2V0X2RlZmF1bHRfYWxpZ25tZW50KGZkKSk7DQo+IEBAIC0zNjIs NyArMzYyLDcgQEAgdGVzdF9sZWdhY3lfbW9kZShpbnQgZmQsIHN0cnVjdCBkcm1feGVfZW5naW5l X2NsYXNzX2luc3RhbmNlICplY2ksDQo+ICAJaWYgKGZsYWdzICYgQ0xPU0VfRkQpDQo+ICAJCWZk ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9YRSk7DQo+ICANCj4gLQl2bSA9IHhlX3ZtX2NyZWF0 ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywgMCk7DQo+ICsJdm0gPSB4ZV92 bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVMVCwgMCk7DQo+ICAJYm9f c2l6ZSA9IHNpemVvZigqZGF0YSkgKiBuX2V4ZWNzOw0KPiAgCWJvX3NpemUgPSBBTElHTihib19z aXplICsgeGVfY3NfcHJlZmV0Y2hfc2l6ZShmZCksDQo+ICAJCQl4ZV9nZXRfZGVmYXVsdF9hbGln bm1lbnQoZmQpKTsNCj4gQEAgLTUyOCw3ICs1MjgsNyBAQCB0ZXN0X2NvbXB1dGVfbW9kZShpbnQg ZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksDQo+ICAJaWYgKGZs YWdzICYgQ0xPU0VfRkQpDQo+ICAJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9YRSk7DQo+ ICANCj4gLQl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5E X09QUyB8DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNf REVGQVVMVCB8DQo+ICAJCQkgIERSTV9YRV9WTV9DUkVBVEVfQ09NUFVURV9NT0RFLCAwKTsNCj4g IAlib19zaXplID0gc2l6ZW9mKCpkYXRhKSAqIG5fZXhlY3M7DQo+ICAJYm9fc2l6ZSA9IEFMSUdO KGJvX3NpemUgKyB4ZV9jc19wcmVmZXRjaF9zaXplKGZkKSwNCj4gZGlmZiAtLWdpdCBhL3Rlc3Rz L2ludGVsL3hlX2V4ZWNfc3RvcmUuYyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfc3RvcmUuYw0KPiBp bmRleCAxNGY3YzliZWMuLjkwNjg0YjhjYiAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVf ZXhlY19zdG9yZS5jDQo+ICsrKyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfc3RvcmUuYw0KPiBAQCAt NzUsNyArNzUsNyBAQCBzdGF0aWMgdm9pZCBzdG9yZShpbnQgZmQpDQo+ICAJc3luY29iaiA9IHN5 bmNvYmpfY3JlYXRlKGZkLCAwKTsNCj4gIAlzeW5jLmhhbmRsZSA9IHN5bmNvYmo7DQo+ICANCj4g LQl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywg MCk7DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVG QVVMVCwgMCk7DQo+ICAJYm9fc2l6ZSA9IHNpemVvZigqZGF0YSk7DQo+ICAJYm9fc2l6ZSA9IEFM SUdOKGJvX3NpemUgKyB4ZV9jc19wcmVmZXRjaF9zaXplKGZkKSwNCj4gIAkJCXhlX2dldF9kZWZh dWx0X2FsaWdubWVudChmZCkpOw0KPiBAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIHN0 b3JlX2FsbChpbnQgZmQsIGludCBndCwgaW50IGNsYXNzKQ0KPiAgCXN0cnVjdCBkcm1feGVfZW5n aW5lX2NsYXNzX2luc3RhbmNlICpod2U7DQo+ICAJaW50IGksIG51bV9wbGFjZW1lbnRzID0gMDsN Cj4gIA0KPiAtCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJ TkRfT1BTLCAwKTsNCj4gKwl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9B U1lOQ19ERUZBVUxULCAwKTsNCj4gIAlib19zaXplID0gc2l6ZW9mKCpkYXRhKTsNCj4gIAlib19z aXplID0gQUxJR04oYm9fc2l6ZSArIHhlX2NzX3ByZWZldGNoX3NpemUoZmQpLA0KPiAgCQkJeGVf Z2V0X2RlZmF1bHRfYWxpZ25tZW50KGZkKSk7DQo+IGRpZmYgLS1naXQgYS90ZXN0cy9pbnRlbC94 ZV9leGVjX3RocmVhZHMuYyBiL3Rlc3RzL2ludGVsL3hlX2V4ZWNfdGhyZWFkcy5jDQo+IGluZGV4 IGM5YTUxZmMwMC4uYmIxNmJkZDg4IDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9pbnRlbC94ZV9leGVj X3RocmVhZHMuYw0KPiArKysgYi90ZXN0cy9pbnRlbC94ZV9leGVjX3RocmVhZHMuYw0KPiBAQCAt NzcsNyArNzcsNyBAQCB0ZXN0X2JhbGFuY2VyKGludCBmZCwgaW50IGd0LCB1aW50MzJfdCB2bSwg dWludDY0X3QgYWRkciwgdWludDY0X3QgdXNlcnB0ciwNCj4gIAl9DQo+ICANCj4gIAlpZiAoIXZt KSB7DQo+IC0JCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJ TkRfT1BTLCAwKTsNCj4gKwkJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVf QVNZTkNfREVGQVVMVCwgMCk7DQo+ICAJCW93bnNfdm0gPSB0cnVlOw0KPiAgCX0NCj4gIA0KPiBA QCAtMjg1LDcgKzI4NSw3IEBAIHRlc3RfY29tcHV0ZV9tb2RlKGludCBmZCwgdWludDMyX3Qgdm0s IHVpbnQ2NF90IGFkZHIsIHVpbnQ2NF90IHVzZXJwdHIsDQo+ICAJfQ0KPiAgDQo+ICAJaWYgKCF2 bSkgew0KPiAtCQl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19C SU5EX09QUyB8DQo+ICsJCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FT WU5DX0RFRkFVTFQgfA0KPiAgCQkJCSAgRFJNX1hFX1ZNX0NSRUFURV9DT01QVVRFX01PREUsIDAp Ow0KPiAgCQlvd25zX3ZtID0gdHJ1ZTsNCj4gIAl9DQo+IEBAIC00NTQsNyArNDU0LDcgQEAgdGVz dF9jb21wdXRlX21vZGUoaW50IGZkLCB1aW50MzJfdCB2bSwgdWludDY0X3QgYWRkciwgdWludDY0 X3QgdXNlcnB0ciwNCj4gIHN0YXRpYyB2b2lkDQo+ICB0ZXN0X2xlZ2FjeV9tb2RlKGludCBmZCwg dWludDMyX3Qgdm0sIHVpbnQ2NF90IGFkZHIsIHVpbnQ2NF90IHVzZXJwdHIsDQo+ICAJCSBzdHJ1 Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLCBpbnQgbl9leGVjX3F1ZXVlcywN Cj4gLQkJIGludCBuX2V4ZWNzLCBpbnQgcmViaW5kX2Vycm9yX2luamVjdCwgdW5zaWduZWQgaW50 IGZsYWdzKQ0KPiArCQkgaW50IG5fZXhlY3MsIHVuc2lnbmVkIGludCBmbGFncykNCj4gIHsNCj4g IAlzdHJ1Y3QgZHJtX3hlX3N5bmMgc3luY1syXSA9IHsNCj4gIAkJeyAuZmxhZ3MgPSBEUk1fWEVf U1lOQ19TWU5DT0JKIHwgRFJNX1hFX1NZTkNfU0lHTkFMLCB9LA0KPiBAQCAtNDg5LDcgKzQ4OSw3 IEBAIHRlc3RfbGVnYWN5X21vZGUoaW50IGZkLCB1aW50MzJfdCB2bSwgdWludDY0X3QgYWRkciwg dWludDY0X3QgdXNlcnB0ciwNCj4gIAl9DQo+ICANCj4gIAlpZiAoIXZtKSB7DQo+IC0JCXZtID0g eGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4g KwkJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVMVCwg MCk7DQo+ICAJCW93bnNfdm0gPSB0cnVlOw0KPiAgCX0NCj4gIA0KPiBAQCAtNTMxLDcgKzUzMSw4 IEBAIHRlc3RfbGVnYWN5X21vZGUoaW50IGZkLCB1aW50MzJfdCB2bSwgdWludDY0X3QgYWRkciwg dWludDY0X3QgdXNlcnB0ciwNCj4gIAkJZWxzZQ0KPiAgCQkJZXhlY19xdWV1ZXNbaV0gPSB4ZV9l eGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIGVjaSwgMCk7DQo+ICAJCWlmIChmbGFncyAmIEJJTkRf RVhFQ19RVUVVRSkNCj4gLQkJCWJpbmRfZXhlY19xdWV1ZXNbaV0gPSB4ZV9iaW5kX2V4ZWNfcXVl dWVfY3JlYXRlKGZkLCB2bSwgMCk7DQo+ICsJCQliaW5kX2V4ZWNfcXVldWVzW2ldID0geGVfYmlu ZF9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sDQo+ICsJCQkJCQkJCQkwLCB0cnVlKTsNCj4gIAkJ ZWxzZQ0KPiAgCQkJYmluZF9leGVjX3F1ZXVlc1tpXSA9IDA7DQo+ICAJCXN5bmNvYmpzW2ldID0g c3luY29ial9jcmVhdGUoZmQsIDApOw0KPiBAQCAtNTgzLDggKzU4NCw3IEBAIHRlc3RfbGVnYWN5 X21vZGUoaW50IGZkLCB1aW50MzJfdCB2bSwgdWludDY0X3QgYWRkciwgdWludDY0X3QgdXNlcnB0 ciwNCj4gIAkJZXhlYy5hZGRyZXNzID0gZXhlY19hZGRyOw0KPiAgCQlpZiAoZSAhPSBpICYmICEo ZmxhZ3MgJiBIQU5HKSkNCj4gIAkJCSBzeW5jb2JqX3Jlc2V0KGZkLCAmc3luY29ianNbZV0sIDEp Ow0KPiAtCQlpZiAoKGZsYWdzICYgSEFORyAmJiBlID09IGhhbmdfZXhlY19xdWV1ZSkgfHwNCj4g LQkJICAgIHJlYmluZF9lcnJvcl9pbmplY3QgPiAwKSB7DQo+ICsJCWlmICgoZmxhZ3MgJiBIQU5H ICYmIGUgPT0gaGFuZ19leGVjX3F1ZXVlKSkgew0KPiAgCQkJaW50IGVycjsNCj4gIA0KPiAgCQkJ ZG8gew0KPiBAQCAtNTk0LDIwICs1OTQsMTAgQEAgdGVzdF9sZWdhY3lfbW9kZShpbnQgZmQsIHVp bnQzMl90IHZtLCB1aW50NjRfdCBhZGRyLCB1aW50NjRfdCB1c2VycHRyLA0KPiAgCQkJeGVfZXhl YyhmZCwgJmV4ZWMpOw0KPiAgCQl9DQo+ICANCj4gLQkJaWYgKGZsYWdzICYgUkVCSU5EICYmIGkg JiYNCj4gLQkJICAgICghKGkgJiAweDFmKSB8fCByZWJpbmRfZXJyb3JfaW5qZWN0ID09IGkpKSB7 DQo+IC0jZGVmaW5lIElOSkVDVF9FUlJPUgkoMHgxIDw8IDMxKQ0KPiAtCQkJaWYgKHJlYmluZF9l cnJvcl9pbmplY3QgPT0gaSkNCj4gLQkJCQlfX3hlX3ZtX2JpbmRfYXNzZXJ0KGZkLCB2bSwgYmlu ZF9leGVjX3F1ZXVlc1tlXSwNCj4gLQkJCQkJCSAgICAwLCAwLCBhZGRyLCBib19zaXplLA0KPiAt CQkJCQkJICAgIFhFX1ZNX0JJTkRfT1BfVU5NQVAsDQo+IC0JCQkJCQkgICAgWEVfVk1fQklORF9G TEFHX0FTWU5DIHwNCj4gLQkJCQkJCSAgICBJTkpFQ1RfRVJST1IsIHN5bmNfYWxsLA0KPiAtCQkJ CQkJICAgIG5fZXhlY19xdWV1ZXMsIDAsIDApOw0KPiAtCQkJZWxzZQ0KPiAtCQkJCXhlX3ZtX3Vu YmluZF9hc3luYyhmZCwgdm0sIGJpbmRfZXhlY19xdWV1ZXNbZV0sDQo+IC0JCQkJCQkgICAwLCBh ZGRyLCBib19zaXplLA0KPiAtCQkJCQkJICAgc3luY19hbGwsIG5fZXhlY19xdWV1ZXMpOw0KPiAr CQlpZiAoZmxhZ3MgJiBSRUJJTkQgJiYgaSAmJiAhKGkgJiAweDFmKSkgew0KPiArCQkJeGVfdm1f dW5iaW5kX2FzeW5jKGZkLCB2bSwgYmluZF9leGVjX3F1ZXVlc1tlXSwNCj4gKwkJCQkJICAgMCwg YWRkciwgYm9fc2l6ZSwNCj4gKwkJCQkJICAgc3luY19hbGwsIG5fZXhlY19xdWV1ZXMpOw0KPiAg DQo+ICAJCQlzeW5jWzBdLmZsYWdzIHw9IERSTV9YRV9TWU5DX1NJR05BTDsNCj4gIAkJCWFkZHIg Kz0gYm9fc2l6ZTsNCj4gQEAgLTcwOSw3ICs2OTksNiBAQCBzdHJ1Y3QgdGhyZWFkX2RhdGEgew0K PiAgCWludCBuX2V4ZWNfcXVldWU7DQo+ICAJaW50IG5fZXhlYzsNCj4gIAlpbnQgZmxhZ3M7DQo+ IC0JaW50IHJlYmluZF9lcnJvcl9pbmplY3Q7DQo+ICAJYm9vbCAqZ287DQo+ICB9Ow0KPiAgDQo+ IEBAIC03MzMsNDYgKzcyMiw3IEBAIHN0YXRpYyB2b2lkICp0aHJlYWQodm9pZCAqZGF0YSkNCj4g IAllbHNlDQo+ICAJCXRlc3RfbGVnYWN5X21vZGUodC0+ZmQsIHQtPnZtX2xlZ2FjeV9tb2RlLCB0 LT5hZGRyLCB0LT51c2VycHRyLA0KPiAgCQkJCSB0LT5lY2ksIHQtPm5fZXhlY19xdWV1ZSwgdC0+ bl9leGVjLA0KPiAtCQkJCSB0LT5yZWJpbmRfZXJyb3JfaW5qZWN0LCB0LT5mbGFncyk7DQo+IC0N Cj4gLQlyZXR1cm4gTlVMTDsNCj4gLX0NCj4gLQ0KPiAtc3RydWN0IHZtX3RocmVhZF9kYXRhIHsN Cj4gLQlwdGhyZWFkX3QgdGhyZWFkOw0KPiAtCWludCBmZDsNCj4gLQlpbnQgdm07DQo+IC19Ow0K PiAtDQo+IC1zdGF0aWMgdm9pZCAqdm1fYXN5bmNfb3BzX2Vycl90aHJlYWQodm9pZCAqZGF0YSkN Cj4gLXsNCj4gLQlzdHJ1Y3Qgdm1fdGhyZWFkX2RhdGEgKmFyZ3MgPSBkYXRhOw0KPiAtCWludCBm ZCA9IGFyZ3MtPmZkOw0KPiAtCWludCByZXQ7DQo+IC0NCj4gLQlzdHJ1Y3QgZHJtX3hlX3dhaXRf dXNlcl9mZW5jZSB3YWl0ID0gew0KPiAtCQkudm1faWQgPSBhcmdzLT52bSwNCj4gLQkJLm9wID0g RFJNX1hFX1VGRU5DRV9XQUlUX05FUSwNCj4gLQkJLmZsYWdzID0gRFJNX1hFX1VGRU5DRV9XQUlU X1ZNX0VSUk9SLA0KPiAtCQkubWFzayA9IERSTV9YRV9VRkVOQ0VfV0FJVF9VMzIsDQo+IC0jZGVm aW5lIEJBU0lDQUxMWV9GT1JFVkVSCTB4ZmZmZmZmZmZmZmZmDQo+IC0JCS50aW1lb3V0ID0gQkFT SUNBTExZX0ZPUkVWRVIsDQo+IC0JfTsNCj4gLQ0KPiAtCXJldCA9IGlndF9pb2N0bChmZCwgRFJN X0lPQ1RMX1hFX1dBSVRfVVNFUl9GRU5DRSwgJndhaXQpOw0KPiAtDQo+IC0Jd2hpbGUgKCFyZXQp IHsNCj4gLQkJc3RydWN0IGRybV94ZV92bV9iaW5kIGJpbmQgPSB7DQo+IC0JCQkudm1faWQgPSBh cmdzLT52bSwNCj4gLQkJCS5udW1fYmluZHMgPSAxLA0KPiAtCQkJLmJpbmQub3AgPSBYRV9WTV9C SU5EX09QX1JFU1RBUlQsDQo+IC0JCX07DQo+IC0NCj4gLQkJLyogUmVzdGFydCBhbmQgd2FpdCBm b3IgbmV4dCBlcnJvciAqLw0KPiAtCQlpZ3RfYXNzZXJ0X2VxKGlndF9pb2N0bChmZCwgRFJNX0lP Q1RMX1hFX1ZNX0JJTkQsDQo+IC0JCQkJCSZiaW5kKSwgMCk7DQo+IC0JCXJldCA9IGlndF9pb2N0 bChmZCwgRFJNX0lPQ1RMX1hFX1dBSVRfVVNFUl9GRU5DRSwgJndhaXQpOw0KPiAtCX0NCj4gKwkJ CQkgdC0+ZmxhZ3MpOw0KPiAgDQo+ICAJcmV0dXJuIE5VTEw7DQo+ICB9DQo+IEBAIC04MjYsNiAr Nzc2LDEwIEBAIHN0YXRpYyB2b2lkICp2bV9hc3luY19vcHNfZXJyX3RocmVhZCh2b2lkICpkYXRh KQ0KPiAgICoJc2hhcmVkIHZtIHJlYmluZCBlcnINCj4gICAqIEBzaGFyZWQtdm0tdXNlcnB0ci1y ZWJpbmQtZXJyOg0KPiAgICoJc2hhcmVkIHZtIHVzZXJwdHIgcmViaW5kIGVycg0KPiArICogQHJl YmluZC1lcnI6DQo+ICsgKglyZWJpbmQgZXJyDQo+ICsgKiBAdXNlcnB0ci1yZWJpbmQtZXJyOg0K PiArICoJdXNlcnB0ciByZWJpbmQgZXJyDQo+ICAgKiBAc2hhcmVkLXZtLXVzZXJwdHItaW52YWxp ZGF0ZToNCj4gICAqCXNoYXJlZCB2bSB1c2VycHRyIGludmFsaWRhdGUNCj4gICAqIEBzaGFyZWQt dm0tdXNlcnB0ci1pbnZhbGlkYXRlLXJhY2U6DQo+IEBAIC04NDIsNyArNzk2LDcgQEAgc3RhdGlj IHZvaWQgKnZtX2FzeW5jX29wc19lcnJfdGhyZWFkKHZvaWQgKmRhdGEpDQo+ICAgKglmZCB1c2Vy cHRyIGludmFsaWRhdGUgcmFjZQ0KPiAgICogQGhhbmctYmFzaWM6DQo+ICAgKgloYW5nIGJhc2lj DQo+IC0gICogQGhhbmctdXNlcnB0cjoNCj4gKyAqIEBoYW5nLXVzZXJwdHI6DQo+ICAgKgloYW5n IHVzZXJwdHINCj4gICAqIEBoYW5nLXJlYmluZDoNCj4gICAqCWhhbmcgcmViaW5kDQo+IEBAIC04 NjQsNiArODE4LDEwIEBAIHN0YXRpYyB2b2lkICp2bV9hc3luY19vcHNfZXJyX3RocmVhZCh2b2lk ICpkYXRhKQ0KPiAgICoJaGFuZyBzaGFyZWQgdm0gcmViaW5kIGVycg0KPiAgICogQGhhbmctc2hh cmVkLXZtLXVzZXJwdHItcmViaW5kLWVycjoNCj4gICAqCWhhbmcgc2hhcmVkIHZtIHVzZXJwdHIg cmViaW5kIGVycg0KPiArICogQGhhbmctcmViaW5kLWVycjoNCj4gKyAqCWhhbmcgcmViaW5kIGVy cg0KPiArICogQGhhbmctdXNlcnB0ci1yZWJpbmQtZXJyOg0KPiArICoJaGFuZyB1c2VycHRyIHJl YmluZCBlcnINCj4gICAqIEBoYW5nLXNoYXJlZC12bS11c2VycHRyLWludmFsaWRhdGU6DQo+ICAg KgloYW5nIHNoYXJlZCB2bSB1c2VycHRyIGludmFsaWRhdGUNCj4gICAqIEBoYW5nLXNoYXJlZC12 bS11c2VycHRyLWludmFsaWRhdGUtcmFjZToNCj4gQEAgLTEwMTksNyArOTc3LDYgQEAgc3RhdGlj IHZvaWQgdGhyZWFkcyhpbnQgZmQsIGludCBmbGFncykNCj4gIAlpbnQgbl9od19lbmdpbmVzID0g MCwgY2xhc3M7DQo+ICAJdWludDY0X3QgaSA9IDA7DQo+ICAJdWludDMyX3Qgdm1fbGVnYWN5X21v ZGUgPSAwLCB2bV9jb21wdXRlX21vZGUgPSAwOw0KPiAtCXN0cnVjdCB2bV90aHJlYWRfZGF0YSB2 bV9lcnJfdGhyZWFkID0ge307DQo+ICAJYm9vbCBnbyA9IGZhbHNlOw0KPiAgCWludCBuX3RocmVh ZHMgPSAwOw0KPiAgCWludCBndDsNCj4gQEAgLTEwNTIsMTggKzEwMDksMTIgQEAgc3RhdGljIHZv aWQgdGhyZWFkcyhpbnQgZmQsIGludCBmbGFncykNCj4gIA0KPiAgCWlmIChmbGFncyAmIFNIQVJF RF9WTSkgew0KPiAgCQl2bV9sZWdhY3lfbW9kZSA9IHhlX3ZtX2NyZWF0ZShmZCwNCj4gLQkJCQkJ ICAgICAgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywNCj4gKwkJCQkJICAgICAgRFJN X1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULA0KPiAgCQkJCQkgICAgICAwKTsNCj4gIAkJdm1f Y29tcHV0ZV9tb2RlID0geGVfdm1fY3JlYXRlKGZkLA0KPiAtCQkJCQkgICAgICAgRFJNX1hFX1ZN X0NSRUFURV9BU1lOQ19CSU5EX09QUyB8DQo+ICsJCQkJCSAgICAgICBEUk1fWEVfVk1fQ1JFQVRF X0FTWU5DX0RFRkFVTFQgfA0KPiAgCQkJCQkgICAgICAgRFJNX1hFX1ZNX0NSRUFURV9DT01QVVRF X01PREUsDQo+ICAJCQkJCSAgICAgICAwKTsNCj4gLQ0KPiAtCQl2bV9lcnJfdGhyZWFkLmZkID0g ZmQ7DQo+IC0JCXZtX2Vycl90aHJlYWQudm0gPSB2bV9sZWdhY3lfbW9kZTsNCj4gLQkJcHRocmVh ZF9jcmVhdGUoJnZtX2Vycl90aHJlYWQudGhyZWFkLCAwLA0KPiAtCQkJICAgICAgIHZtX2FzeW5j X29wc19lcnJfdGhyZWFkLCAmdm1fZXJyX3RocmVhZCk7DQo+IC0NCj4gIAl9DQo+ICANCj4gIAl4 ZV9mb3JfZWFjaF9od19lbmdpbmUoZmQsIGh3ZSkgew0KPiBAQCAtMTA4MywxMSArMTAzNCw2IEBA IHN0YXRpYyB2b2lkIHRocmVhZHMoaW50IGZkLCBpbnQgZmxhZ3MpDQo+ICAJCXRocmVhZHNfZGF0 YVtpXS5uX2V4ZWNfcXVldWUgPSBOX0VYRUNfUVVFVUU7DQo+ICAjZGVmaW5lIE5fRVhFQwkJMTAy NA0KPiAgCQl0aHJlYWRzX2RhdGFbaV0ubl9leGVjID0gTl9FWEVDOw0KPiAtCQlpZiAoZmxhZ3Mg JiBSRUJJTkRfRVJST1IpDQo+IC0JCQl0aHJlYWRzX2RhdGFbaV0ucmViaW5kX2Vycm9yX2luamVj dCA9DQo+IC0JCQkJKE5fRVhFQyAvIChuX2h3X2VuZ2luZXMgKyAxKSkgKiAoaSArIDEpOw0KPiAt CQllbHNlDQo+IC0JCQl0aHJlYWRzX2RhdGFbaV0ucmViaW5kX2Vycm9yX2luamVjdCA9IC0xOw0K PiAgCQl0aHJlYWRzX2RhdGFbaV0uZmxhZ3MgPSBmbGFnczsNCj4gIAkJaWYgKGZsYWdzICYgTUlY RURfTU9ERSkgew0KPiAgCQkJdGhyZWFkc19kYXRhW2ldLmZsYWdzICY9IH5NSVhFRF9NT0RFOw0K PiBAQCAtMTE5MCw4ICsxMTM2LDYgQEAgc3RhdGljIHZvaWQgdGhyZWFkcyhpbnQgZmQsIGludCBm bGFncykNCj4gIAlpZiAodm1fY29tcHV0ZV9tb2RlKQ0KPiAgCQl4ZV92bV9kZXN0cm95KGZkLCB2 bV9jb21wdXRlX21vZGUpOw0KPiAgCWZyZWUodGhyZWFkc19kYXRhKTsNCj4gLQlpZiAoZmxhZ3Mg JiBTSEFSRURfVk0pDQo+IC0JCXB0aHJlYWRfam9pbih2bV9lcnJfdGhyZWFkLnRocmVhZCwgTlVM TCk7DQo+ICAJcHRocmVhZF9iYXJyaWVyX2Rlc3Ryb3koJmJhcnJpZXIpOw0KPiAgfQ0KPiAgDQo+ IEBAIC0xMjE0LDkgKzExNTgsOCBAQCBpZ3RfbWFpbg0KPiAgCQl7ICJzaGFyZWQtdm0tcmViaW5k LWJpbmRleGVjcXVldWUiLCBTSEFSRURfVk0gfCBSRUJJTkQgfA0KPiAgCQkJQklORF9FWEVDX1FV RVVFIH0sDQo+ICAJCXsgInNoYXJlZC12bS11c2VycHRyLXJlYmluZCIsIFNIQVJFRF9WTSB8IFVT RVJQVFIgfCBSRUJJTkQgfSwNCj4gLQkJeyAic2hhcmVkLXZtLXJlYmluZC1lcnIiLCBTSEFSRURf Vk0gfCBSRUJJTkQgfCBSRUJJTkRfRVJST1IgfSwNCj4gLQkJeyAic2hhcmVkLXZtLXVzZXJwdHIt cmViaW5kLWVyciIsIFNIQVJFRF9WTSB8IFVTRVJQVFIgfA0KPiAtCQkJUkVCSU5EIHwgUkVCSU5E X0VSUk9SfSwNCj4gKwkJeyAicmViaW5kLWVyciIsIFJFQklORCB8IFJFQklORF9FUlJPUiB9LA0K PiArCQl7ICJ1c2VycHRyLXJlYmluZC1lcnIiLCBVU0VSUFRSIHwgUkVCSU5EIHwgUkVCSU5EX0VS Uk9SfSwNCj4gIAkJeyAic2hhcmVkLXZtLXVzZXJwdHItaW52YWxpZGF0ZSIsIFNIQVJFRF9WTSB8 IFVTRVJQVFIgfA0KPiAgCQkJSU5WQUxJREFURSB9LA0KPiAgCQl7ICJzaGFyZWQtdm0tdXNlcnB0 ci1pbnZhbGlkYXRlLXJhY2UiLCBTSEFSRURfVk0gfCBVU0VSUFRSIHwNCj4gQEAgLTEyNDAsMTAg KzExODMsOSBAQCBpZ3RfbWFpbg0KPiAgCQl7ICJoYW5nLXNoYXJlZC12bS1yZWJpbmQiLCBIQU5H IHwgU0hBUkVEX1ZNIHwgUkVCSU5EIH0sDQo+ICAJCXsgImhhbmctc2hhcmVkLXZtLXVzZXJwdHIt cmViaW5kIiwgSEFORyB8IFNIQVJFRF9WTSB8IFVTRVJQVFIgfA0KPiAgCQkJUkVCSU5EIH0sDQo+ IC0JCXsgImhhbmctc2hhcmVkLXZtLXJlYmluZC1lcnIiLCBIQU5HIHwgU0hBUkVEX1ZNIHwgUkVC SU5EIHwNCj4gKwkJeyAiaGFuZy1yZWJpbmQtZXJyIiwgSEFORyB8IFJFQklORCB8IFJFQklORF9F UlJPUiB9LA0KPiArCQl7ICJoYW5nLXVzZXJwdHItcmViaW5kLWVyciIsIEhBTkcgfCBVU0VSUFRS IHwgUkVCSU5EIHwNCj4gIAkJCVJFQklORF9FUlJPUiB9LA0KPiAtCQl7ICJoYW5nLXNoYXJlZC12 bS11c2VycHRyLXJlYmluZC1lcnIiLCBIQU5HIHwgU0hBUkVEX1ZNIHwNCj4gLQkJCVVTRVJQVFIg fCBSRUJJTkQgfCBSRUJJTkRfRVJST1IgfSwNCj4gIAkJeyAiaGFuZy1zaGFyZWQtdm0tdXNlcnB0 ci1pbnZhbGlkYXRlIiwgSEFORyB8IFNIQVJFRF9WTSB8DQo+ICAJCQlVU0VSUFRSIHwgSU5WQUxJ REFURSB9LA0KPiAgCQl7ICJoYW5nLXNoYXJlZC12bS11c2VycHRyLWludmFsaWRhdGUtcmFjZSIs IEhBTkcgfCBTSEFSRURfVk0gfA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfZXhlcmNp c2VfYmx0LmMgYi90ZXN0cy9pbnRlbC94ZV9leGVyY2lzZV9ibHQuYw0KPiBpbmRleCBjYTg1ZjVm MTguLjJmMzQ5YjE2ZCAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfZXhlcmNpc2VfYmx0 LmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVfZXhlcmNpc2VfYmx0LmMNCj4gQEAgLTI4MCw3ICsy ODAsNyBAQCBzdGF0aWMgdm9pZCBmYXN0X2NvcHlfdGVzdChpbnQgeGUsDQo+ICAJCQlyZWdpb24x ID0gaWd0X2NvbGxlY3Rpb25fZ2V0X3ZhbHVlKHJlZ2lvbnMsIDApOw0KPiAgCQkJcmVnaW9uMiA9 IGlndF9jb2xsZWN0aW9uX2dldF92YWx1ZShyZWdpb25zLCAxKTsNCj4gIA0KPiAtCQkJdm0gPSB4 ZV92bV9jcmVhdGUoeGUsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMsIDApOw0KPiAr CQkJdm0gPSB4ZV92bV9jcmVhdGUoeGUsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVMVCwg MCk7DQo+ICAJCQlleGVjX3F1ZXVlID0geGVfZXhlY19xdWV1ZV9jcmVhdGUoeGUsIHZtLCAmaW5z dCwgMCk7DQo+ICAJCQljdHggPSBpbnRlbF9jdHhfeGUoeGUsIHZtLCBleGVjX3F1ZXVlLCAwLCAw LCAwKTsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfZ3VjX3BjLmMgYi90ZXN0 cy9pbnRlbC94ZV9ndWNfcGMuYw0KPiBpbmRleCAwMzI3ZDhlMGUuLjNmMmM0YWUyMyAxMDA2NDQN Cj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfZ3VjX3BjLmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVf Z3VjX3BjLmMNCj4gQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgZXhlY19iYXNpYyhpbnQg ZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksDQo+ICAJaWd0X2Fz c2VydChuX2V4ZWNfcXVldWVzIDw9IE1BWF9OX0VYRUNfUVVFVUVTKTsNCj4gIAlpZ3RfYXNzZXJ0 KG5fZXhlY3MgPiAwKTsNCj4gIA0KPiAtCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1f Q1JFQVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJN X1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIAlib19zaXplID0gc2l6ZW9mKCpk YXRhKSAqIG5fZXhlY3M7DQo+ICAJYm9fc2l6ZSA9IEFMSUdOKGJvX3NpemUgKyB4ZV9jc19wcmVm ZXRjaF9zaXplKGZkKSwNCj4gIAkJCXhlX2dldF9kZWZhdWx0X2FsaWdubWVudChmZCkpOw0KPiBk aWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfaHVjX2NvcHkuYyBiL3Rlc3RzL2ludGVsL3hlX2h1 Y19jb3B5LmMNCj4gaW5kZXggYzk4OTFhNzI5Li5jNzFmZjc0YTEgMTAwNjQ0DQo+IC0tLSBhL3Rl c3RzL2ludGVsL3hlX2h1Y19jb3B5LmMNCj4gKysrIGIvdGVzdHMvaW50ZWwveGVfaHVjX2NvcHku Yw0KPiBAQCAtMTE3LDcgKzExNyw3IEBAIHRlc3RfaHVjX2NvcHkoaW50IGZkKQ0KPiAgCQl7IC5h ZGRyID0gQUREUl9CQVRDSCwgLnNpemUgPSBTSVpFX0JBVENIIH0sIC8vIGJhdGNoDQo+ICAJfTsN Cj4gIA0KPiAtCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJ TkRfT1BTLCAwKTsNCj4gKwl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9B U1lOQ19ERUZBVUxULCAwKTsNCj4gIAlleGVjX3F1ZXVlID0geGVfZXhlY19xdWV1ZV9jcmVhdGVf Y2xhc3MoZmQsIHZtLCBEUk1fWEVfRU5HSU5FX0NMQVNTX1ZJREVPX0RFQ09ERSk7DQo+ICAJc3lu Yy5mbGFncyA9IERSTV9YRV9TWU5DX1NZTkNPQkogfCBEUk1fWEVfU1lOQ19TSUdOQUw7DQo+ICAJ c3luYy5oYW5kbGUgPSBzeW5jb2JqX2NyZWF0ZShmZCwgMCk7DQo+IGRpZmYgLS1naXQgYS90ZXN0 cy9pbnRlbC94ZV9pbnRlbF9iYi5jIGIvdGVzdHMvaW50ZWwveGVfaW50ZWxfYmIuYw0KPiBpbmRl eCAwMTU5YTMxNjQuLjI2ZTRkY2M4NSAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfaW50 ZWxfYmIuYw0KPiArKysgYi90ZXN0cy9pbnRlbC94ZV9pbnRlbF9iYi5jDQo+IEBAIC0xOTEsNyAr MTkxLDcgQEAgc3RhdGljIHZvaWQgc2ltcGxlX2JiKHN0cnVjdCBidWZfb3BzICpib3BzLCBib29s IG5ld19jb250ZXh0KQ0KPiAgCWludGVsX2JiX3Jlc2V0KGliYiwgdHJ1ZSk7DQo+ICANCj4gIAlp ZiAobmV3X2NvbnRleHQpIHsNCj4gLQkJdm0gPSB4ZV92bV9jcmVhdGUoeGUsIERSTV9YRV9WTV9D UkVBVEVfQVNZTkNfQklORF9PUFMsIDApOw0KPiArCQl2bSA9IHhlX3ZtX2NyZWF0ZSh4ZSwgRFJN X1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIAkJY3R4ID0geGVfZXhlY19xdWV1 ZV9jcmVhdGUoeGUsIHZtLCB4ZV9od19lbmdpbmUoeGUsIDApLCAwKTsNCj4gIAkJaW50ZWxfYmJf ZGVzdHJveShpYmIpOw0KPiAgCQlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KHhl LCBjdHgsIHZtLCBOVUxMLCBQQUdFX1NJWkUpOw0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwv eGVfcG0uYyBiL3Rlc3RzL2ludGVsL3hlX3BtLmMNCj4gaW5kZXggZmQyOGQ1NjMwLi5iMjk3NmVj ODQgMTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL2ludGVsL3hlX3BtLmMNCj4gKysrIGIvdGVzdHMvaW50 ZWwveGVfcG0uYw0KPiBAQCAtMjU5LDcgKzI1OSw3IEBAIHRlc3RfZXhlYyhkZXZpY2VfdCBkZXZp Y2UsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksDQo+ICAJaWYgKGNo ZWNrX3JwbSkNCj4gIAkJaWd0X2Fzc2VydChpbl9kMyhkZXZpY2UsIGRfc3RhdGUpKTsNCj4gIA0K PiAtCXZtID0geGVfdm1fY3JlYXRlKGRldmljZS5mZF94ZSwgRFJNX1hFX1ZNX0NSRUFURV9BU1lO Q19CSU5EX09QUywgMCk7DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZGV2aWNlLmZkX3hlLCBEUk1f WEVfVk1fQ1JFQVRFX0FTWU5DX0RFRkFVTFQsIDApOw0KPiAgDQo+ICAJaWYgKGNoZWNrX3JwbSkN Cj4gIAkJaWd0X2Fzc2VydChvdXRfb2ZfZDMoZGV2aWNlLCBkX3N0YXRlKSk7DQo+IGRpZmYgLS1n aXQgYS90ZXN0cy9pbnRlbC94ZV92bS5jIGIvdGVzdHMvaW50ZWwveGVfdm0uYw0KPiBpbmRleCA4 OWRmNjE0OWEuLmRkMzMwMjMzNyAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfdm0uYw0K PiArKysgYi90ZXN0cy9pbnRlbC94ZV92bS5jDQo+IEBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGlj IHZvaWQgdW5iaW5kX2FsbChpbnQgZmQsIGludCBuX3ZtYXMpDQo+ICAJCXsgLmZsYWdzID0gRFJN X1hFX1NZTkNfU1lOQ09CSiB8IERSTV9YRV9TWU5DX1NJR05BTCwgfSwNCj4gIAl9Ow0KPiAgDQo+ IC0Jdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMs IDApOw0KPiArCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RF RkFVTFQsIDApOw0KPiAgCWJvID0geGVfYm9fY3JlYXRlKGZkLCAwLCB2bSwgYm9fc2l6ZSk7DQo+ ICANCj4gIAlmb3IgKGkgPSAwOyBpIDwgbl92bWFzOyArK2kpDQo+IEBAIC0zMjIsMTcxICszMjIs NiBAQCBzdGF0aWMgdm9pZCB1c2VycHRyX2ludmFsaWQoaW50IGZkKQ0KPiAgCXhlX3ZtX2Rlc3Ry b3koZmQsIHZtKTsNCj4gIH0NCj4gIA0KPiAtc3RydWN0IHZtX3RocmVhZF9kYXRhIHsNCj4gLQlw dGhyZWFkX3QgdGhyZWFkOw0KPiAtCWludCBmZDsNCj4gLQlpbnQgdm07DQo+IC0JdWludDMyX3Qg Ym87DQo+IC0Jc2l6ZV90IGJvX3NpemU7DQo+IC0JYm9vbCBkZXN0cm95Ow0KPiAtfTsNCj4gLQ0K PiAtLyoqDQo+IC0gKiBTVUJURVNUOiB2bS1hc3luYy1vcHMtZXJyDQo+IC0gKiBEZXNjcmlwdGlv bjogVGVzdCBWTSBhc3luYyBvcHMgZXJyb3INCj4gLSAqIEZ1bmN0aW9uYWxpdHk6IFZNDQo+IC0g KiBUZXN0IGNhdGVnb3J5OiBuZWdhdGl2ZSB0ZXN0DQo+IC0gKg0KPiAtICogU1VCVEVTVDogdm0t YXN5bmMtb3BzLWVyci1kZXN0cm95DQo+IC0gKiBEZXNjcmlwdGlvbjogVGVzdCBWTSBhc3luYyBv cHMgZXJyb3IgZGVzdHJveQ0KPiAtICogRnVuY3Rpb25hbGl0eTogVk0NCj4gLSAqIFRlc3QgY2F0 ZWdvcnk6IG5lZ2F0aXZlIHRlc3QNCj4gLSAqLw0KPiAtDQo+IC1zdGF0aWMgdm9pZCAqdm1fYXN5 bmNfb3BzX2Vycl90aHJlYWQodm9pZCAqZGF0YSkNCj4gLXsNCj4gLQlzdHJ1Y3Qgdm1fdGhyZWFk X2RhdGEgKmFyZ3MgPSBkYXRhOw0KPiAtCWludCBmZCA9IGFyZ3MtPmZkOw0KPiAtCXVpbnQ2NF90 IGFkZHIgPSAweDIwMWEwMDAwOw0KPiAtCWludCBudW1fYmluZHMgPSAwOw0KPiAtCWludCByZXQ7 DQo+IC0NCj4gLQlzdHJ1Y3QgZHJtX3hlX3dhaXRfdXNlcl9mZW5jZSB3YWl0ID0gew0KPiAtCQku dm1faWQgPSBhcmdzLT52bSwNCj4gLQkJLm9wID0gRFJNX1hFX1VGRU5DRV9XQUlUX05FUSwNCj4g LQkJLmZsYWdzID0gRFJNX1hFX1VGRU5DRV9XQUlUX1ZNX0VSUk9SLA0KPiAtCQkubWFzayA9IERS TV9YRV9VRkVOQ0VfV0FJVF9VMzIsDQo+IC0JCS50aW1lb3V0ID0gTVNfVE9fTlMoMTAwMCksDQo+ IC0JfTsNCj4gLQ0KPiAtCWlndF9hc3NlcnRfZXEoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfWEVf V0FJVF9VU0VSX0ZFTkNFLA0KPiAtCQkJCSZ3YWl0KSwgMCk7DQo+IC0JaWYgKGFyZ3MtPmRlc3Ry b3kpIHsNCj4gLQkJdXNsZWVwKDUwMDApOwkvKiBXYWl0IG90aGVyIGJpbmRzIHRvIHF1ZXVlIHVw ICovDQo+IC0JCXhlX3ZtX2Rlc3Ryb3koZmQsIGFyZ3MtPnZtKTsNCj4gLQkJcmV0dXJuIE5VTEw7 DQo+IC0JfQ0KPiAtDQo+IC0Jd2hpbGUgKCFyZXQpIHsNCj4gLQkJc3RydWN0IGRybV94ZV92bV9i aW5kIGJpbmQgPSB7DQo+IC0JCQkudm1faWQgPSBhcmdzLT52bSwNCj4gLQkJCS5udW1fYmluZHMg PSAxLA0KPiAtCQkJLmJpbmQub3AgPSBYRV9WTV9CSU5EX09QX1JFU1RBUlQsDQo+IC0JCX07DQo+ IC0NCj4gLQkJLyogVk0gc3luYyBvcHMgc2hvdWxkIHdvcmsgKi8NCj4gLQkJaWYgKCEobnVtX2Jp bmRzKysgJSAyKSkgew0KPiAtCQkJeGVfdm1fYmluZF9zeW5jKGZkLCBhcmdzLT52bSwgYXJncy0+ Ym8sIDAsIGFkZHIsDQo+IC0JCQkJCWFyZ3MtPmJvX3NpemUpOw0KPiAtCQl9IGVsc2Ugew0KPiAt CQkJeGVfdm1fdW5iaW5kX3N5bmMoZmQsIGFyZ3MtPnZtLCAwLCBhZGRyLA0KPiAtCQkJCQkgIGFy Z3MtPmJvX3NpemUpOw0KPiAtCQkJYWRkciArPSBhcmdzLT5ib19zaXplICogMjsNCj4gLQkJfQ0K PiAtDQo+IC0JCS8qIFJlc3RhcnQgYW5kIHdhaXQgZm9yIG5leHQgZXJyb3IgKi8NCj4gLQkJaWd0 X2Fzc2VydF9lcShpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9YRV9WTV9CSU5ELA0KPiAtCQkJCQkm YmluZCksIDApOw0KPiAtCQlyZXQgPSBpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9YRV9XQUlUX1VT RVJfRkVOQ0UsICZ3YWl0KTsNCj4gLQl9DQo+IC0NCj4gLQlyZXR1cm4gTlVMTDsNCj4gLX0NCj4g LQ0KPiAtc3RhdGljIHZvaWQgdm1fYXN5bmNfb3BzX2VycihpbnQgZmQsIGJvb2wgZGVzdHJveSkN Cj4gLXsNCj4gLQl1aW50MzJfdCB2bTsNCj4gLQl1aW50NjRfdCBhZGRyID0gMHgxYTAwMDA7DQo+ IC0Jc3RydWN0IGRybV94ZV9zeW5jIHN5bmMgPSB7DQo+IC0JCS5mbGFncyA9IERSTV9YRV9TWU5D X1NZTkNPQkogfCBEUk1fWEVfU1lOQ19TSUdOQUwsDQo+IC0JfTsNCj4gLSNkZWZpbmUgTl9CSU5E UwkJMzINCj4gLQlzdHJ1Y3Qgdm1fdGhyZWFkX2RhdGEgdGhyZWFkID0ge307DQo+IC0JdWludDMy X3Qgc3luY29ianNbTl9CSU5EU107DQo+IC0Jc2l6ZV90IGJvX3NpemUgPSAweDEwMDAgKiAzMjsN Cj4gLQl1aW50MzJfdCBibzsNCj4gLQlpbnQgaSwgajsNCj4gLQ0KPiAtCXZtID0geGVfdm1fY3Jl YXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gLQlibyA9IHhl X2JvX2NyZWF0ZShmZCwgMCwgdm0sIGJvX3NpemUpOw0KPiAtDQo+IC0JdGhyZWFkLmZkID0gZmQ7 DQo+IC0JdGhyZWFkLnZtID0gdm07DQo+IC0JdGhyZWFkLmJvID0gYm87DQo+IC0JdGhyZWFkLmJv X3NpemUgPSBib19zaXplOw0KPiAtCXRocmVhZC5kZXN0cm95ID0gZGVzdHJveTsNCj4gLQlwdGhy ZWFkX2NyZWF0ZSgmdGhyZWFkLnRocmVhZCwgMCwgdm1fYXN5bmNfb3BzX2Vycl90aHJlYWQsICZ0 aHJlYWQpOw0KPiAtDQo+IC0JZm9yIChpID0gMDsgaSA8IE5fQklORFM7IGkrKykNCj4gLQkJc3lu Y29ianNbaV0gPSBzeW5jb2JqX2NyZWF0ZShmZCwgMCk7DQo+IC0NCj4gLQlmb3IgKGogPSAwLCBp ID0gMDsgaSA8IE5fQklORFMgLyA0OyBpKyssIGorKykgew0KPiAtCQlzeW5jLmhhbmRsZSA9IHN5 bmNvYmpzW2pdOw0KPiAtI2RlZmluZSBJTkpFQ1RfRVJST1IJKDB4MSA8PCAzMSkNCj4gLQkJaWYg KGkgPT0gTl9CSU5EUyAvIDgpCS8qIEluamVjdCBlcnJvciBvbiB0aGlzIGJpbmQgKi8NCj4gLQkJ CV9feGVfdm1fYmluZF9hc3NlcnQoZmQsIHZtLCAwLCBibywgMCwNCj4gLQkJCQkJICAgIGFkZHIg KyBpICogYm9fc2l6ZSAqIDIsDQo+IC0JCQkJCSAgICBib19zaXplLCBYRV9WTV9CSU5EX09QX01B UCwNCj4gLQkJCQkJICAgIFhFX1ZNX0JJTkRfRkxBR19BU1lOQyB8DQo+IC0JCQkJCSAgICBJTkpF Q1RfRVJST1IsICZzeW5jLCAxLCAwLCAwKTsNCj4gLQkJZWxzZQ0KPiAtCQkJeGVfdm1fYmluZF9h c3luYyhmZCwgdm0sIDAsIGJvLCAwLA0KPiAtCQkJCQkgYWRkciArIGkgKiBib19zaXplICogMiwN Cj4gLQkJCQkJIGJvX3NpemUsICZzeW5jLCAxKTsNCj4gLQl9DQo+IC0NCj4gLQlmb3IgKGkgPSAw OyBpIDwgTl9CSU5EUyAvIDQ7IGkrKywgaisrKSB7DQo+IC0JCXN5bmMuaGFuZGxlID0gc3luY29i anNbal07DQo+IC0JCWlmIChpID09IE5fQklORFMgLyA4KQ0KPiAtCQkJX194ZV92bV9iaW5kX2Fz c2VydChmZCwgdm0sIDAsIDAsIDAsDQo+IC0JCQkJCSAgICBhZGRyICsgaSAqIGJvX3NpemUgKiAy LA0KPiAtCQkJCQkgICAgYm9fc2l6ZSwgWEVfVk1fQklORF9PUF9VTk1BUCwNCj4gLQkJCQkJICAg IFhFX1ZNX0JJTkRfRkxBR19BU1lOQyB8DQo+IC0JCQkJCSAgICBJTkpFQ1RfRVJST1IsICZzeW5j LCAxLCAwLCAwKTsNCj4gLQkJZWxzZQ0KPiAtCQkJeGVfdm1fdW5iaW5kX2FzeW5jKGZkLCB2bSwg MCwgMCwNCj4gLQkJCQkJICAgYWRkciArIGkgKiBib19zaXplICogMiwNCj4gLQkJCQkJICAgYm9f c2l6ZSwgJnN5bmMsIDEpOw0KPiAtCX0NCj4gLQ0KPiAtCWZvciAoaSA9IDA7IGkgPCBOX0JJTkRT IC8gNDsgaSsrLCBqKyspIHsNCj4gLQkJc3luYy5oYW5kbGUgPSBzeW5jb2Jqc1tqXTsNCj4gLQkJ aWYgKGkgPT0gTl9CSU5EUyAvIDgpDQo+IC0JCQlfX3hlX3ZtX2JpbmRfYXNzZXJ0KGZkLCB2bSwg MCwgYm8sIDAsDQo+IC0JCQkJCSAgICBhZGRyICsgaSAqIGJvX3NpemUgKiAyLA0KPiAtCQkJCQkg ICAgYm9fc2l6ZSwgWEVfVk1fQklORF9PUF9NQVAsDQo+IC0JCQkJCSAgICBYRV9WTV9CSU5EX0ZM QUdfQVNZTkMgfA0KPiAtCQkJCQkgICAgSU5KRUNUX0VSUk9SLCAmc3luYywgMSwgMCwgMCk7DQo+ IC0JCWVsc2UNCj4gLQkJCXhlX3ZtX2JpbmRfYXN5bmMoZmQsIHZtLCAwLCBibywgMCwNCj4gLQkJ CQkJIGFkZHIgKyBpICogYm9fc2l6ZSAqIDIsDQo+IC0JCQkJCSBib19zaXplLCAmc3luYywgMSk7 DQo+IC0JfQ0KPiAtDQo+IC0JZm9yIChpID0gMDsgaSA8IE5fQklORFMgLyA0OyBpKyssIGorKykg ew0KPiAtCQlzeW5jLmhhbmRsZSA9IHN5bmNvYmpzW2pdOw0KPiAtCQlpZiAoaSA9PSBOX0JJTkRT IC8gOCkNCj4gLQkJCV9feGVfdm1fYmluZF9hc3NlcnQoZmQsIHZtLCAwLCAwLCAwLA0KPiAtCQkJ CQkgICAgYWRkciArIGkgKiBib19zaXplICogMiwNCj4gLQkJCQkJICAgIGJvX3NpemUsIFhFX1ZN X0JJTkRfT1BfVU5NQVAsDQo+IC0JCQkJCSAgICBYRV9WTV9CSU5EX0ZMQUdfQVNZTkMgfA0KPiAt CQkJCQkgICAgSU5KRUNUX0VSUk9SLCAmc3luYywgMSwgMCwgMCk7DQo+IC0JCWVsc2UNCj4gLQkJ CXhlX3ZtX3VuYmluZF9hc3luYyhmZCwgdm0sIDAsIDAsDQo+IC0JCQkJCSAgIGFkZHIgKyBpICog Ym9fc2l6ZSAqIDIsDQo+IC0JCQkJCSAgIGJvX3NpemUsICZzeW5jLCAxKTsNCj4gLQl9DQo+IC0N Cj4gLQlmb3IgKGkgPSAwOyBpIDwgTl9CSU5EUzsgaSsrKQ0KPiAtCQlpZ3RfYXNzZXJ0KHN5bmNv Ympfd2FpdChmZCwgJnN5bmNvYmpzW2ldLCAxLCBJTlQ2NF9NQVgsIDAsDQo+IC0JCQkJCU5VTEwp KTsNCj4gLQ0KPiAtCWlmICghZGVzdHJveSkNCj4gLQkJeGVfdm1fZGVzdHJveShmZCwgdm0pOw0K PiAtDQo+IC0JcHRocmVhZF9qb2luKHRocmVhZC50aHJlYWQsIE5VTEwpOw0KPiAtfQ0KPiAtDQo+ ICAvKioNCj4gICAqIFNVQlRFU1Q6IHNoYXJlZC0lcy1wYWdlDQo+ICAgKiBEZXNjcmlwdGlvbjog VGVzdCBzaGFyZWQgYXJnWzFdIHBhZ2UNCj4gQEAgLTUzNyw3ICszNzIsNyBAQCBzaGFyZWRfcHRl X3BhZ2UoaW50IGZkLCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLCBp bnQgbl9ibywNCj4gIAlkYXRhID0gbWFsbG9jKHNpemVvZigqZGF0YSkgKiBuX2JvKTsNCj4gIAlp Z3RfYXNzZXJ0KGRhdGEpOw0KPiAgDQo+IC0Jdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9W TV9DUkVBVEVfQVNZTkNfQklORF9PUFMsIDApOw0KPiArCXZtID0geGVfdm1fY3JlYXRlKGZkLCBE Uk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RFRkFVTFQsIDApOw0KPiAgCWJvX3NpemUgPSBzaXplb2Yo c3RydWN0IHNoYXJlZF9wdGVfcGFnZV9kYXRhKTsNCj4gIAlib19zaXplID0gQUxJR04oYm9fc2l6 ZSArIHhlX2NzX3ByZWZldGNoX3NpemUoZmQpLA0KPiAgCQkJeGVfZ2V0X2RlZmF1bHRfYWxpZ25t ZW50KGZkKSk7DQo+IEBAIC03MTgsNyArNTUzLDcgQEAgdGVzdF9iaW5kX2V4ZWNxdWV1ZXNfaW5k ZXBlbmRlbnQoaW50IGZkLCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWMN Cj4gIAlzdHJ1Y3QgeGVfc3Bpbl9vcHRzIHNwaW5fb3B0cyA9IHsgLnByZWVtcHQgPSB0cnVlIH07 DQo+ICAJaW50IGksIGI7DQo+ICANCj4gLQl2bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZN X0NSRUFURV9BU1lOQ19CSU5EX09QUywgMCk7DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERS TV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVMVCwgMCk7DQo+ICAJYm9fc2l6ZSA9IHNpemVvZigq ZGF0YSkgKiBOX0VYRUNfUVVFVUVTOw0KPiAgCWJvX3NpemUgPSBBTElHTihib19zaXplICsgeGVf Y3NfcHJlZmV0Y2hfc2l6ZShmZCksDQo+ICAJCQl4ZV9nZXRfZGVmYXVsdF9hbGlnbm1lbnQoZmQp KTsNCj4gQEAgLTcyOCw3ICs1NjMsNyBAQCB0ZXN0X2JpbmRfZXhlY3F1ZXVlc19pbmRlcGVuZGVu dChpbnQgZmQsIHN0cnVjdCBkcm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplYw0KPiAgDQo+ ICAJZm9yIChpID0gMDsgaSA8IE5fRVhFQ19RVUVVRVM7IGkrKykgew0KPiAgCQlleGVjX3F1ZXVl c1tpXSA9IHhlX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bSwgZWNpLCAwKTsNCj4gLQkJYmluZF9l eGVjX3F1ZXVlc1tpXSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZtLCAwKTsNCj4g KwkJYmluZF9leGVjX3F1ZXVlc1tpXSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZt LCAwLCB0cnVlKTsNCj4gIAkJc3luY29ianNbaV0gPSBzeW5jb2JqX2NyZWF0ZShmZCwgMCk7DQo+ ICAJfQ0KPiAgCXN5bmNvYmpzW05fRVhFQ19RVUVVRVNdID0gc3luY29ial9jcmVhdGUoZmQsIDAp Ow0KPiBAQCAtODk4LDcgKzczMyw3IEBAIHRlc3RfYmluZF9hcnJheShpbnQgZmQsIHN0cnVjdCBk cm1feGVfZW5naW5lX2NsYXNzX2luc3RhbmNlICplY2ksIGludCBuX2V4ZWNzLA0KPiAgDQo+ICAJ aWd0X2Fzc2VydChuX2V4ZWNzIDw9IEJJTkRfQVJSQVlfTUFYX05fRVhFQyk7DQo+ICANCj4gLQl2 bSA9IHhlX3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19CSU5EX09QUywgMCk7 DQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfREVGQVVM VCwgMCk7DQo+ICAJYm9fc2l6ZSA9IHNpemVvZigqZGF0YSkgKiBuX2V4ZWNzOw0KPiAgCWJvX3Np emUgPSBBTElHTihib19zaXplICsgeGVfY3NfcHJlZmV0Y2hfc2l6ZShmZCksDQo+ICAJCQl4ZV9n ZXRfZGVmYXVsdF9hbGlnbm1lbnQoZmQpKTsNCj4gQEAgLTkwOCw3ICs3NDMsNyBAQCB0ZXN0X2Jp bmRfYXJyYXkoaW50IGZkLCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNp LCBpbnQgbl9leGVjcywNCj4gIAlkYXRhID0geGVfYm9fbWFwKGZkLCBibywgYm9fc2l6ZSk7DQo+ ICANCj4gIAlpZiAoZmxhZ3MgJiBCSU5EX0FSUkFZX0JJTkRfRVhFQ19RVUVVRV9GTEFHKQ0KPiAt CQliaW5kX2V4ZWNfcXVldWUgPSB4ZV9iaW5kX2V4ZWNfcXVldWVfY3JlYXRlKGZkLCB2bSwgMCk7 DQo+ICsJCWJpbmRfZXhlY19xdWV1ZSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZt LCAwLCB0cnVlKTsNCj4gIAlleGVjX3F1ZXVlID0geGVfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZt LCBlY2ksIDApOw0KPiAgDQo+ICAJZm9yIChpID0gMDsgaSA8IG5fZXhlY3M7ICsraSkgew0KPiBA QCAtMTA5Miw3ICs5MjcsNyBAQCB0ZXN0X2xhcmdlX2JpbmRzKGludCBmZCwgc3RydWN0IGRybV94 ZV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmVjaSwNCj4gIAl9DQo+ICANCj4gIAlpZ3RfYXNzZXJ0 KG5fZXhlY19xdWV1ZXMgPD0gTUFYX05fRVhFQ19RVUVVRVMpOw0KPiAtCXZtID0geGVfdm1fY3Jl YXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0JJTkRfT1BTLCAwKTsNCj4gKwl2bSA9IHhl X3ZtX2NyZWF0ZShmZCwgRFJNX1hFX1ZNX0NSRUFURV9BU1lOQ19ERUZBVUxULCAwKTsNCj4gIA0K PiAgCWlmIChmbGFncyAmIExBUkdFX0JJTkRfRkxBR19VU0VSUFRSKSB7DQo+ICAJCW1hcCA9IGFs aWduZWRfYWxsb2MoeGVfZ2V0X2RlZmF1bHRfYWxpZ25tZW50KGZkKSwgYm9fc2l6ZSk7DQo+IEBA IC0xMzg0LDcgKzEyMTksNyBAQCB0ZXN0X211bm1hcF9zdHlsZV91bmJpbmQoaW50IGZkLCBzdHJ1 Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLA0KPiAgCQkJdW5iaW5kX25fcGFn ZV9vZmZzZXQgKj0gbl9wYWdlX3Blcl8ybWI7DQo+ICAJfQ0KPiAgDQo+IC0Jdm0gPSB4ZV92bV9j cmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklORF9PUFMsIDApOw0KPiArCXZtID0g eGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RFRkFVTFQsIDApOw0KPiAg CWJvX3NpemUgPSBwYWdlX3NpemUgKiBib19uX3BhZ2VzOw0KPiAgDQo+ICAJaWYgKGZsYWdzICYg TUFQX0ZMQUdfVVNFUlBUUikgew0KPiBAQCAtMTY4NCw3ICsxNTE5LDcgQEAgdGVzdF9tbWFwX3N0 eWxlX2JpbmQoaW50IGZkLCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNp LA0KPiAgCQkJdW5iaW5kX25fcGFnZV9vZmZzZXQgKj0gbl9wYWdlX3Blcl8ybWI7DQo+ICAJfQ0K PiAgDQo+IC0Jdm0gPSB4ZV92bV9jcmVhdGUoZmQsIERSTV9YRV9WTV9DUkVBVEVfQVNZTkNfQklO RF9PUFMsIDApOw0KPiArCXZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FT WU5DX0RFRkFVTFQsIDApOw0KPiAgCWJvX3NpemUgPSBwYWdlX3NpemUgKiBib19uX3BhZ2VzOw0K PiAgDQo+ICAJaWYgKGZsYWdzICYgTUFQX0ZMQUdfVVNFUlBUUikgew0KPiBAQCAtMjAwMSwxMiAr MTgzNiw2IEBAIGlndF9tYWluDQo+ICAJaWd0X3N1YnRlc3QoInVzZXJwdHItaW52YWxpZCIpDQo+ ICAJCXVzZXJwdHJfaW52YWxpZChmZCk7DQo+ICANCj4gLQlpZ3Rfc3VidGVzdCgidm0tYXN5bmMt b3BzLWVyciIpDQo+IC0JCXZtX2FzeW5jX29wc19lcnIoZmQsIGZhbHNlKTsNCj4gLQ0KPiAtCWln dF9zdWJ0ZXN0KCJ2bS1hc3luYy1vcHMtZXJyLWRlc3Ryb3kiKQ0KPiAtCQl2bV9hc3luY19vcHNf ZXJyKGZkLCB0cnVlKTsNCj4gLQ0KPiAgCWlndF9zdWJ0ZXN0KCJzaGFyZWQtcHRlLXBhZ2UiKQ0K PiAgCQl4ZV9mb3JfZWFjaF9od19lbmdpbmUoZmQsIGh3ZSkNCj4gIAkJCXNoYXJlZF9wdGVfcGFn ZShmZCwgaHdlLCA0LA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwveGVfd2FpdGZlbmNlLmMg Yi90ZXN0cy9pbnRlbC94ZV93YWl0ZmVuY2UuYw0KPiBpbmRleCAzNDAwNWZiZWIuLmUwMTE2ZjE4 MSAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaW50ZWwveGVfd2FpdGZlbmNlLmMNCj4gKysrIGIvdGVz dHMvaW50ZWwveGVfd2FpdGZlbmNlLmMNCj4gQEAgLTM0LDcgKzM0LDcgQEAgc3RhdGljIHZvaWQg ZG9fYmluZChpbnQgZmQsIHVpbnQzMl90IHZtLCB1aW50MzJfdCBibywgdWludDY0X3Qgb2Zmc2V0 LA0KPiAgDQo+ICAJc3luY1swXS5hZGRyID0gdG9fdXNlcl9wb2ludGVyKCZ3YWl0X2ZlbmNlKTsN Cj4gIAlzeW5jWzBdLnRpbWVsaW5lX3ZhbHVlID0gdmFsOw0KPiAtCXhlX3ZtX2JpbmQoZmQsIHZt LCBibywgb2Zmc2V0LCBhZGRyLCBzaXplLCBzeW5jLCAxKTsNCj4gKwl4ZV92bV9iaW5kX2FzeW5j KGZkLCB2bSwgMCwgYm8sIG9mZnNldCwgYWRkciwgc2l6ZSwgc3luYywgMSk7DQo+ICB9DQo+ICAN Cj4gIGVudW0gd2FpdHR5cGUgew0KPiBAQCAtNjMsNyArNjMsNyBAQCB3YWl0ZmVuY2UoaW50IGZk LCBlbnVtIHdhaXR0eXBlIHd0KQ0KPiAgCXVpbnQzMl90IGJvXzc7DQo+ICAJaW50NjRfdCB0aW1l b3V0Ow0KPiAgDQo+IC0JdWludDMyX3Qgdm0gPSB4ZV92bV9jcmVhdGUoZmQsIDAsIDApOw0KPiAr CXVpbnQzMl90IHZtID0geGVfdm1fY3JlYXRlKGZkLCBEUk1fWEVfVk1fQ1JFQVRFX0FTWU5DX0RF RkFVTFQsIDApOw0KPiAgCWJvXzEgPSB4ZV9ib19jcmVhdGVfZmxhZ3MoZmQsIHZtLCAweDQwMDAw LCBNWV9GTEFHKTsNCj4gIAlkb19iaW5kKGZkLCB2bSwgYm9fMSwgMCwgMHgyMDAwMDAsIDB4NDAw MDAsIDEpOw0KDQoNCk1pc3NpbmcgWEVfVk1fQklORF9GTEFHX0FTWU5DIHdpdGggdGhlIGFzeW5j IHZtLi4uIHRoaXMgYW5kIG90aGVyIHRlc3RzIGhlcmUgaGF2ZSBzaW1pbGFyIHByb2JsZW0uDQoN Cg0KPiAgCWJvXzIgPSB4ZV9ib19jcmVhdGVfZmxhZ3MoZmQsIHZtLCAweDQwMDAwLCBNWV9GTEFH KTsNCj4gQEAgLTk2LDIxICs5Niw2IEBAIHdhaXRmZW5jZShpbnQgZmQsIGVudW0gd2FpdHR5cGUg d3QpDQo+ICAJCQkgICIsIGVsYXBzZWQ6ICUiIFBSSWQ2NCAiXG4iLA0KPiAgCQkJICB0aW1lb3V0 LCBzaWduYWxsZWQsIHNpZ25hbGxlZCAtIGN1cnJlbnQpOw0KPiAgCX0NCj4gLQ0KPiAtCXhlX3Zt X3VuYmluZF9zeW5jKGZkLCB2bSwgMCwgMHgyMDAwMDAsIDB4NDAwMDApOw0KPiAtCXhlX3ZtX3Vu YmluZF9zeW5jKGZkLCB2bSwgMCwgMHhjMDAwMDAwMCwgMHg0MDAwMCk7DQo+IC0JeGVfdm1fdW5i aW5kX3N5bmMoZmQsIHZtLCAwLCAweDE4MDAwMDAwMCwgMHg0MDAwMCk7DQo+IC0JeGVfdm1fdW5i aW5kX3N5bmMoZmQsIHZtLCAwLCAweDE0MDAwMDAwMCwgMHgxMDAwMCk7DQo+IC0JeGVfdm1fdW5i aW5kX3N5bmMoZmQsIHZtLCAwLCAweDEwMDAwMDAwMCwgMHgxMDAwMDApOw0KPiAtCXhlX3ZtX3Vu YmluZF9zeW5jKGZkLCB2bSwgMCwgMHhjMDA0MDAwMCwgMHgxYzAwMDApOw0KPiAtCXhlX3ZtX3Vu YmluZF9zeW5jKGZkLCB2bSwgMCwgMHhlZmZmZjAwMDAsIDB4MTAwMDApOw0KPiAtCWdlbV9jbG9z ZShmZCwgYm9fNyk7DQo+IC0JZ2VtX2Nsb3NlKGZkLCBib182KTsNCj4gLQlnZW1fY2xvc2UoZmQs IGJvXzUpOw0KPiAtCWdlbV9jbG9zZShmZCwgYm9fNCk7DQo+IC0JZ2VtX2Nsb3NlKGZkLCBib18z KTsNCj4gLQlnZW1fY2xvc2UoZmQsIGJvXzIpOw0KPiAtCWdlbV9jbG9zZShmZCwgYm9fMSk7DQoN CnVucmVsYXRlZCBjaGFuZ2UuDQoNCj4gIH0NCj4gIA0KPiAgaWd0X21haW4NCg0K