From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id D573110EFB9 for ; Fri, 13 May 2022 08:51:02 +0000 (UTC) From: "Kahola, Mika" To: "B, Jeevan" , "igt-dev@lists.freedesktop.org" Date: Fri, 13 May 2022 08:51:00 +0000 Message-ID: <961c22f649da44b1b23bacd47c11ddd6@intel.com> References: <20220512110113.31158-1-jeevan.b@intel.com> <20220512110113.31158-3-jeevan.b@intel.com> In-Reply-To: <20220512110113.31158-3-jeevan.b@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v3 2/4] lib/DG2: create flat ccs framebuffers with 4-tile List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Latvala, Petri" , "Heikkila, Juha-pekka" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCLCBKZWV2YW4gPGplZXZhbi5i QGludGVsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE1heSAxMiwgMjAyMiAyOjAxIFBNDQo+IFRv OiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBDYzogS2Fob2xhLCBNaWthIDxtaWth LmthaG9sYUBpbnRlbC5jb20+OyBEZWFrLCBJbXJlDQo+IDxpbXJlLmRlYWtAaW50ZWwuY29tPjsg TGF0dmFsYSwgUGV0cmkgPHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPjsgSGVpa2tpbGEsDQo+IEp1 aGEtcGVra2EgPGp1aGEtcGVra2EuaGVpa2tpbGFAaW50ZWwuY29tPjsgQiwgSmVldmFuIDxqZWV2 YW4uYkBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCBpLWctdCB2MyAyLzRdIGxpYi9ERzI6 IGNyZWF0ZSBmbGF0IGNjcyBmcmFtZWJ1ZmZlcnMgd2l0aCA0LXRpbGUNCj4gDQo+IEZyb206IEp1 aGEtUGVra2EgSGVpa2tpbMOkIDxqdWhhLXBla2thLmhlaWtraWxhQGludGVsLmNvbT4NCj4gDQo+ IEFkZCBzdXBwb3J0IGZvciBERzIgZmxhdCBjY3MgZnJhbWVidWZmZXJzIHdpdGggdGlsZS00Lg0K PiANCj4gU2lnbmVkLW9mZi1ieTogSnVoYS1QZWtrYSBIZWlra2lsw6QgPGp1aGEtcGVra2EuaGVp a2tpbGFAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBKZWV2YW4gQiA8amVldmFuLmJAaW50 ZWwuY29tPg0KDQpSZXZpZXdlZC1ieTogTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVsLmNv bT4NCg0KPiAtLS0NCj4gIGxpYi9nZW45X3JlbmRlci5oICAgICAgIHwgIDM4ICsrKysrKysrKy0t LQ0KPiAgbGliL2lndF9mYi5jICAgICAgICAgICAgfCAgNTEgKysrKysrKysrKysrLS0tLQ0KPiAg bGliL2ludGVsX2F1eF9wZ3RhYmxlLmMgfCAgIDYgKy0NCj4gIGxpYi9pbnRlbF9iYXRjaGJ1ZmZl ci5jIHwgICAyICstDQo+ICBsaWIvaW50ZWxfYnVmb3BzLmMgICAgICB8IDExOCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+ICBsaWIvaW50ZWxfY2hpcHNldC5oICAgICB8 ICAgMyArLQ0KPiAgbGliL3JlbmRlcmNvcHlfZ2VuOS5jICAgfCAxMjUgKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQ0KPiAgbGliL3ZlYm94Y29weV9nZW4xMi5jICAgfCAx MDkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4gIDggZmlsZXMgY2hhbmdl ZCwgMzQ3IGluc2VydGlvbnMoKyksIDEwNSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQg YS9saWIvZ2VuOV9yZW5kZXIuaCBiL2xpYi9nZW45X3JlbmRlci5oIGluZGV4IDA2ZDk3MThjLi5h ZjNhMmIzYQ0KPiAxMDA2NDQNCj4gLS0tIGEvbGliL2dlbjlfcmVuZGVyLmgNCj4gKysrIGIvbGli L2dlbjlfcmVuZGVyLmgNCj4gQEAgLTU5LDkgKzU5LDE1IEBAIHN0cnVjdCBnZW45X3N1cmZhY2Vf c3RhdGUgew0KPiAgCQl1aW50MzJfdCBkZXB0aDoxMTsNCj4gIAl9IHNzMzsNCj4gDQo+IC0Jc3Ry dWN0IHsNCj4gLQkJdWludDMyX3QgbWluaW11bV9hcnJheV9lbGVtZW50OjI3Ow0KPiAtCQl1aW50 MzJfdCBwYWQwOjU7DQo+ICsJdW5pb24gew0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJdWludDMyX3Qg bWluaW11bV9hcnJheV9lbGVtZW50OjI3Ow0KPiArCQkJdWludDMyX3QgcGFkMDo1Ow0KPiArCQl9 IHNrbDsNCj4gKwkJc3RydWN0IHsNCj4gKwkJCXVpbnQzMl90IGRlY29tcHJlc3NfaW5fbDM6MTsN Cj4gKwkJCXVpbnQzMl90IHBhZDA6MzE7DQo+ICsJCX0gZGcyOw0KPiAgCX0gc3M0Ow0KPiANCj4g IAlzdHJ1Y3Qgew0KPiBAQCAtMTE2LDYgKzEyMiwxNSBAQCBzdHJ1Y3QgZ2VuOV9zdXJmYWNlX3N0 YXRlIHsNCj4gIAkJCXVpbnQzMl90IG1lZGlhX2NvbXByZXNzaW9uOjE7DQo+ICAJCQl1aW50MzJf dCBwYWQyOjE7DQo+ICAJCX0gdGdsOw0KPiArDQo+ICsJCXN0cnVjdCB7DQo+ICsJCQl1aW50MzJf dCBwYWQwOjE0Ow0KPiArCQkJdWludDMyX3QNCj4gZGlzYWJsZV9zdXBwb3J0X2Zvcl9tdWx0aV9n cHVfcGFydGlhbF93cml0ZXM6MTsNCj4gKwkJCXVpbnQzMl90IGRpc2FibGVfc3VwcG9ydF9mb3Jf bXVsdGlfZ3B1X2F0b21pY3M6MTsNCj4gKwkJCXVpbnQzMl90IHBhZDE6MTQ7DQo+ICsJCQl1aW50 MzJfdCBtZW1vcnlfY29tcHJlc3Npb25fZW5hYmxlOjE7DQo+ICsJCQl1aW50MzJfdCBtZW1vcnlf Y29tcHJlc3Npb25fdHlwZToxOw0KPiArCQl9IGRnMjsNCj4gIAl9IHNzNzsNCj4gDQo+ICAJc3Ry dWN0IHsNCj4gQEAgLTEzOCwxNSArMTUzLDIyIEBAIHN0cnVjdCBnZW45X3N1cmZhY2Vfc3RhdGUg ew0KPiAgCQl1aW50MzJfdCBhdXhfYmFzZV9hZGRyX2hpOw0KPiAgCX0gc3MxMTsNCj4gDQo+IC0J LyogcmVnaXN0ZXIgY2FuIGJlIHVzZWQgZm9yIGVpdGhlcg0KPiAtCSAqIGNsZWFyIHZhbHVlIG9y IGRlcHRoIGNsZWFyIHZhbHVlDQo+IC0JICovDQo+ICAJc3RydWN0IHsNCj4gLQkJdWludDMyX3Qg Y2xlYXJfYWRkcmVzczsNCj4gKwkJLyoNCj4gKwkJICogY29tcHJlc3Npb25fZm9ybWF0IGlzIHVz ZWQgb25seSBkZzIgb253YXJkLg0KPiArCQkgKiBwcmlvciB0byBkZzIgZnVsbCBzczEyIGlzIHVz ZWQgZm9yIHRoZSBhZGRyZXNzDQo+ICsJCSAqIGJ1dCBkdWUgdG8gYWxpZ25tZW50cyBiaXRzIDAu LjYgd2lsbCBiZSB6ZXJvDQo+ICsJCSAqIGFuZCBhc3NlcnRlZCBpbiBjb2RlIHRvIGJlIHNvDQo+ ICsJCSAqLw0KPiArCQl1aW50MzJfdCBjb21wcmVzc2lvbl9mb3JtYXQ6NTsNCj4gKwkJdWludDMy X3QgcGFkMDoxOw0KPiArCQl1aW50MzJfdCBjbGVhcl9hZGRyZXNzOjI2Ow0KPiAgCX0gc3MxMjsN Cj4gDQo+ICAJc3RydWN0IHsNCj4gLQkJdWludDMyX3QgY2xlYXJfYWRkcmVzc19oaTsNCj4gKwkJ dWludDMyX3QgY2xlYXJfYWRkcmVzc19oaToxNjsNCj4gKwkJdWludDMyX3QgcGFkMDoxNjsNCj4g Kw0KPiAgCX0gc3MxMzsNCj4gDQo+ICAJc3RydWN0IHsNCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf ZmIuYyBiL2xpYi9pZ3RfZmIuYyBpbmRleCBlYWZiZTdmZC4uZjNjYjcxMWUgMTAwNjQ0DQo+IC0t LSBhL2xpYi9pZ3RfZmIuYw0KPiArKysgYi9saWIvaWd0X2ZiLmMNCj4gQEAgLTQ1Nyw2ICs0NTcs OSBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXplKGludCBmZCwgdWludDY0X3QgbW9kaWZpZXIs IGludA0KPiBmYl9icHAsDQo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9S Q19DQ1NfQ0M6DQo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6 DQo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRDoNCj4gKwljYXNlIEk5MTVfRk9STUFU X01PRF80X1RJTEVEX0RHMl9SQ19DQ1M6DQo+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxF RF9ERzJfTUNfQ0NTOg0KPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0ND U19DQzoNCj4gIAkJaWd0X3JlcXVpcmVfaW50ZWwoZmQpOw0KPiAgCQlpZiAoaW50ZWxfZGlzcGxh eV92ZXIoaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpID09IDIpIHsNCj4gIAkJCSp3aWR0aF9yZXQg PSAxMjg7DQo+IEBAIC01NjUsMTQgKzU2OCwxNyBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXpl KGludCBmZCwgdWludDY0X3QgbW9kaWZpZXIsIGludA0KPiBmYl9icHAsDQo+IA0KPiAgc3RhdGlj IGJvb2wgaXNfZ2VuMTJfbWNfY2NzX21vZGlmaWVyKHVpbnQ2NF90IG1vZGlmaWVyKSAgew0KPiAt CXJldHVybiBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M7 DQo+ICsJcmV0dXJuIG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01D X0NDUyB8fA0KPiArCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRF9ERzJfTUNf Q0NTOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBib29sIGlzX2dlbjEyX2Njc19tb2RpZmllcih1aW50 NjRfdCBtb2RpZmllcikgIHsNCj4gIAlyZXR1cm4gaXNfZ2VuMTJfbWNfY2NzX21vZGlmaWVyKG1v ZGlmaWVyKSB8fA0KPiAgCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4x Ml9SQ19DQ1MgfHwNCj4gLQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VO MTJfUkNfQ0NTX0NDOw0KPiArCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9H RU4xMl9SQ19DQ1NfQ0MNCj4gfHwNCj4gKwkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EXzRf VElMRURfREcyX1JDX0NDUyB8fA0KPiArCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfNF9U SUxFRF9ERzJfUkNfQ0NTX0NDOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBib29sIGlzX2Njc19tb2Rp Zmllcih1aW50NjRfdCBtb2RpZmllcikgQEAgLTU4NCw3ICs1OTAsNyBAQCBzdGF0aWMNCj4gYm9v bCBpc19jY3NfbW9kaWZpZXIodWludDY0X3QgbW9kaWZpZXIpDQo+IA0KPiAgc3RhdGljIGJvb2wg aXNfY2NzX3BsYW5lKGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpICB7DQo+IC0J aWYgKCFpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkNCj4gKwlpZiAoIWlzX2Njc19tb2Rp ZmllcihmYi0+bW9kaWZpZXIpIHx8DQo+ICtIQVNfRkxBVENDUyhpbnRlbF9nZXRfZHJtX2Rldmlk KGZiLT5mZCkpKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+IA0KPiAgCXJldHVybiBwbGFuZSA+PSBm Yi0+bnVtX3BsYW5lcyAvIDI7DQo+IEBAIC02MDIsOCArNjA4LDE1IEBAIHN0YXRpYyBib29sIGlz X2dlbjEyX2Njc19wbGFuZShjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwNCj4gaW50IHBsYW5lKQ0K PiANCj4gIHN0YXRpYyBib29sIGlzX2dlbjEyX2Njc19jY19wbGFuZShjb25zdCBzdHJ1Y3QgaWd0 X2ZiICpmYiwgaW50IHBsYW5lKSAgew0KPiAtCXJldHVybiBmYi0+bW9kaWZpZXIgPT0NCj4gSTkx NV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTX0NDICYmDQo+IC0JICAgICAgIHBsYW5l ID09IDI7DQo+ICsJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9H RU4xMl9SQ19DQ1NfQ0MNCj4gJiYNCj4gKwkgICAgcGxhbmUgPT0gMikNCj4gKwkJcmV0dXJuIHRy dWU7DQo+ICsNCj4gKwlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF80X1RJTEVE X0RHMl9SQ19DQ1NfQ0MgJiYNCj4gKwkgICAgcGxhbmUgPT0gMSkNCj4gKwkJcmV0dXJuIHRydWU7 DQo+ICsNCj4gKwlyZXR1cm4gZmFsc2U7DQo+ICB9DQo+IA0KPiAgYm9vbCBpZ3RfZmJfaXNfZ2Vu MTJfY2NzX2NjX3BsYW5lKGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpIEBAIC0N Cj4gNjg2LDEwICs2OTksMTEgQEAgc3RhdGljIGludCBmYl9udW1fcGxhbmVzKGNvbnN0IHN0cnVj dCBpZ3RfZmIgKmZiKSAgew0KPiAgCWludCBudW1fcGxhbmVzID0gbG9va3VwX2RybV9mb3JtYXQo ZmItPmRybV9mb3JtYXQpLT5udW1fcGxhbmVzOw0KPiANCj4gLQlpZiAoaXNfY2NzX21vZGlmaWVy KGZiLT5tb2RpZmllcikpDQo+ICsJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpICYm DQo+ICshSEFTX0ZMQVRDQ1MoaW50ZWxfZ2V0X2RybV9kZXZpZChmYi0+ZmQpKSkNCj4gIAkJbnVt X3BsYW5lcyAqPSAyOw0KPiANCj4gLQlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEX0dFTjEyX1JDX0NDU19DQykNCj4gKwlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDU19DQw0KPiB8fA0KPiArCSAgICBmYi0+bW9k aWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0NDU19DQykNCj4gIAkJbnVt X3BsYW5lcysrOw0KPiANCj4gIAlyZXR1cm4gbnVtX3BsYW5lczsNCj4gQEAgLTc2Myw3ICs3Nzcs NyBAQCBzdGF0aWMgdWludDMyX3QgY2FsY19wbGFuZV9zdHJpZGUoc3RydWN0IGlndF9mYiAqZmIs IGludA0KPiBwbGFuZSkNCj4gIAkJcmV0dXJuIEFMSUdOKG1pbl9zdHJpZGUsIHRpbGVfd2lkdGgp Ow0KPiAgCX0gZWxzZSBpZiAoaXNfZ2VuMTJfY2NzX2NjX3BsYW5lKGZiLCBwbGFuZSkpIHsNCj4g IAkJLyogY2xlYXIgY29sb3IgYWx3YXlzIGZpeGVkIHRvIDY0IGJ5dGVzICovDQo+IC0JCXJldHVy biA2NDsNCj4gKwkJcmV0dXJuIEhBU19GTEFUQ0NTKGludGVsX2dldF9kcm1fZGV2aWQoZmItPmZk KSkgPyA1MTIgOiA2NDsNCj4gIAl9IGVsc2UgaWYgKGlzX2dlbjEyX2Njc19wbGFuZShmYiwgcGxh bmUpKSB7DQo+ICAJCS8qDQo+ICAJCSAqIFRoZSBDQ1Mgc3VyZmFjZSBzdHJpZGUgaXMNCj4gQEAg LTk2Niw2ICs5ODAsOSBAQCB1aW50NjRfdCBpZ3RfZmJfbW9kX3RvX3RpbGluZyh1aW50NjRfdCBt b2RpZmllcikNCj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoN Cj4gIAkJcmV0dXJuIEk5MTVfVElMSU5HX1k7DQo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9U SUxFRDoNCj4gKwljYXNlIEk5MTVfRk9STUFUX01PRF80X1RJTEVEX0RHMl9SQ19DQ1M6DQo+ICsJ Y2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRF9ERzJfTUNfQ0NTOg0KPiArCWNhc2UgSTkxNV9G T1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0NDU19DQzoNCj4gIAkJcmV0dXJuIEk5MTVfVElMSU5H XzQ7DQo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6DQo+ICAJY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfWWZfVElMRURfQ0NTOg0KPiBAQCAtMjUwNCw5ICsyNTIxLDEwIEBAIGlndF9mYl9j cmVhdGVfaW50ZWxfYnVmKGludCBmZCwgc3RydWN0IGJ1Zl9vcHMgKmJvcHMsDQo+ICAJaWYgKGlz X2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKSB7DQo+ICAJCWlndF9hc3NlcnRfZXEoZmItPnN0 cmlkZXNbMF0gJiAxMjcsIDApOw0KPiANCj4gLQkJaWYgKGlzX2dlbjEyX2Njc19tb2RpZmllcihm Yi0+bW9kaWZpZXIpKQ0KPiAtCQkJaWd0X2Fzc2VydF9lcShmYi0+c3RyaWRlc1sxXSAmIDYzLCAw KTsNCj4gLQkJZWxzZQ0KPiArCQlpZiAoaXNfZ2VuMTJfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmll cikpIHsNCj4gKwkJCWlmICghSEFTX0ZMQVRDQ1MoaW50ZWxfZ2V0X2RybV9kZXZpZChmYi0+ZmQp KSkNCj4gKwkJCQlpZ3RfYXNzZXJ0X2VxKGZiLT5zdHJpZGVzWzFdICYgNjMsIDApOw0KPiArCQl9 IGVsc2UNCj4gIAkJCWlndF9hc3NlcnRfZXEoZmItPnN0cmlkZXNbMV0gJiAxMjcsIDApOw0KPiAN Cj4gIAkJaWYgKGlzX2dlbjEyX21jX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKQ0KPiBAQCAt MjUzOSw3ICsyNTU3LDcgQEAgaWd0X2ZiX2NyZWF0ZV9pbnRlbF9idWYoaW50IGZkLCBzdHJ1Y3Qg YnVmX29wcyAqYm9wcywNCj4gIAkJYnVmLT55dXZfc2VtaXBsYW5hcl9icHAgPSB5dXZfc2VtaXBs YW5hcl9icHAoZmItDQo+ID5kcm1fZm9ybWF0KTsNCj4gDQo+ICAJaWYgKGlzX2Njc19tb2RpZmll cihmYi0+bW9kaWZpZXIpKSB7DQo+IC0JCW51bV9zdXJmYWNlcyA9IGZiLT5udW1fcGxhbmVzIC8g MjsNCj4gKwkJbnVtX3N1cmZhY2VzID0gZmItPm51bV9wbGFuZXMgLw0KPiArKEhBU19GTEFUQ0NT KGludGVsX2dldF9kcm1fZGV2aWQoZmItPmZkKSkgPyAxIDogMik7DQo+ICAJCWZvciAoaSA9IDA7 IGkgPCBudW1fc3VyZmFjZXM7IGkrKykNCj4gIAkJCWluaXRfYnVmX2NjcyhidWYsIGksDQo+ICAJ CQkJICAgICBmYi0+b2Zmc2V0c1tudW1fc3VyZmFjZXMgKyBpXSwgQEAgLTI1NjAsNg0KPiArMjU3 OCw5IEBAIGlndF9mYl9jcmVhdGVfaW50ZWxfYnVmKGludCBmZCwgc3RydWN0IGJ1Zl9vcHMgKmJv cHMsDQo+ICAJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4x Ml9SQ19DQ1NfQ0MpDQo+ICAJCWJ1Zi0+Y2Mub2Zmc2V0ID0gZmItPm9mZnNldHNbMl07DQo+IA0K PiArCWlmIChmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0ND U19DQykNCj4gKwkJYnVmLT5jYy5vZmZzZXQgPSBmYi0+b2Zmc2V0c1sxXTsNCj4gKw0KPiAgCXJl dHVybiBidWY7DQo+ICB9DQo+IA0KPiBAQCAtNDU3MCw2ICs0NTkxLDEyIEBAIGNvbnN0IGNoYXIg KmlndF9mYl9tb2RpZmllcl9uYW1lKHVpbnQ2NF90DQo+IG1vZGlmaWVyKQ0KPiAgCQlyZXR1cm4g IlktTUNfQ0NTIjsNCj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF80X1RJTEVEOg0KPiAgCQlyZXR1 cm4gIjQiOw0KPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0NDUzoNCj4g KwkJcmV0dXJuICI0LVJDX0NDUyI7DQo+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRF9E RzJfTUNfQ0NTOg0KPiArCQlyZXR1cm4gIjQtTUNfQ0NTIjsNCj4gKwljYXNlIEk5MTVfRk9STUFU X01PRF80X1RJTEVEX0RHMl9SQ19DQ1NfQ0M6DQo+ICsJCXJldHVybiAiNC1SQ19DQ1MtQ0MiOw0K PiAgCWRlZmF1bHQ6DQo+ICAJCXJldHVybiAiPyI7DQo+ICAJfQ0KPiBkaWZmIC0tZ2l0IGEvbGli L2ludGVsX2F1eF9wZ3RhYmxlLmMgYi9saWIvaW50ZWxfYXV4X3BndGFibGUuYyBpbmRleA0KPiBm NTc5NmZkZi4uZTMxYTZjMzQgMTAwNjQ0DQo+IC0tLSBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5j DQo+ICsrKyBiL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jDQo+IEBAIC0yNjMsNyArMjYzLDggQEAg c3RhdGljIHVpbnQ2NF90IHBndF9nZXRfbDFfZmxhZ3MoY29uc3Qgc3RydWN0IGludGVsX2J1Zg0K PiAqYnVmLCBpbnQgc3VyZmFjZV9pZHgpDQo+ICAJfSBlbnRyeSA9IHsNCj4gIAkJLmUgPSB7DQo+ ICAJCQkudmFsaWQgPSAxLA0KPiAtCQkJLnRpbGVfbW9kZSA9IGJ1Zi0+dGlsaW5nID09IEk5MTVf VElMSU5HX1kgPyAxIDogMCwNCj4gKwkJCS50aWxlX21vZGUgPSBidWYtPnRpbGluZyA9PSBJOTE1 X1RJTElOR19ZID8gMSA6DQo+ICsJCQkJKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HXzQgPyAy IDogMCksDQo+ICAJCX0NCj4gIAl9Ow0KPiANCj4gQEAgLTI3NCw3ICsyNzUsOCBAQCBzdGF0aWMg dWludDY0X3QgcGd0X2dldF9sMV9mbGFncyhjb25zdCBzdHJ1Y3QgaW50ZWxfYnVmDQo+ICpidWYs IGludCBzdXJmYWNlX2lkeCkNCj4gIAkgKi8NCj4gIAlpZ3RfYXNzZXJ0KGJ1Zi0+dGlsaW5nID09 IEk5MTVfVElMSU5HX1kgfHwNCj4gIAkJICAgYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYg fHwNCj4gLQkJICAgYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWXMpOw0KPiArCQkgICBidWYt PnRpbGluZyA9PSBJOTE1X1RJTElOR19ZcyB8fA0KPiArCQkgICBidWYtPnRpbGluZyA9PSBJOTE1 X1RJTElOR180KTsNCj4gDQo+ICAJZW50cnkuZS55Y3IgPSBzdXJmYWNlX2lkeCA+IDA7DQo+IA0K PiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hi dWZmZXIuYyBpbmRleA0KPiBlYmYzYzU5OC4uODFkMmUxNDAgMTAwNjQ0DQo+IC0tLSBhL2xpYi9p bnRlbF9iYXRjaGJ1ZmZlci5jDQo+ICsrKyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jDQo+IEBA IC0xMTQ2LDcgKzExNDYsNyBAQCBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgaWd0X2dldF9yZW5kZXJf Y29weWZ1bmMoaW50DQo+IGRldmlkKQ0KPiAgCQljb3B5ID0gZ2VuOV9yZW5kZXJfY29weWZ1bmM7 DQo+ICAJZWxzZSBpZiAoSVNfR0VOMTEoZGV2aWQpKQ0KPiAgCQljb3B5ID0gZ2VuMTFfcmVuZGVy X2NvcHlmdW5jOw0KPiAtCWVsc2UgaWYgKElTX0RHMihkZXZpZCkpDQo+ICsJZWxzZSBpZiAoSEFT XzRUSUxFKGRldmlkKSkNCj4gIAkJY29weSA9IGdlbjEycDcxX3JlbmRlcl9jb3B5ZnVuYzsNCj4g IAllbHNlIGlmIChJU19HRU4xMihkZXZpZCkpDQo+ICAJCWNvcHkgPSBnZW4xMl9yZW5kZXJfY29w eWZ1bmM7DQo+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfYnVmb3BzLmMgYi9saWIvaW50ZWxfYnVm b3BzLmMgaW5kZXggZjEzMDYzZmEuLjA1YzBiMGQ0DQo+IDEwMDY0NA0KPiAtLS0gYS9saWIvaW50 ZWxfYnVmb3BzLmMNCj4gKysrIGIvbGliL2ludGVsX2J1Zm9wcy5jDQo+IEBAIC04OSw2ICs4OSw3 IEBADQo+ICAjZGVmaW5lIFRJTEVfWSAgICAgIFRJTEVfREVGKEk5MTVfVElMSU5HX1kpDQo+ICAj ZGVmaW5lIFRJTEVfWWYgICAgIFRJTEVfREVGKEk5MTVfVElMSU5HX1lmKQ0KPiAgI2RlZmluZSBU SUxFX1lzICAgICBUSUxFX0RFRihJOTE1X1RJTElOR19ZcykNCj4gKyNkZWZpbmUgVElMRV80ICAg ICAgVElMRV9ERUYoSTkxNV9USUxJTkdfNCkNCj4gDQo+ICAjZGVmaW5lIENDU19PRkZTRVQoYnVm KSAoYnVmLT5jY3NbMF0ub2Zmc2V0KSAgI2RlZmluZSBDQ1NfU0laRShnZW4sIGJ1ZikgXCBAQA0K PiAtMTA1LDE2ICsxMDYsMTkgQEAgc3RydWN0IGJ1Zl9vcHMgew0KPiAgCXVpbnQzMl90IHN1cHBv cnRlZF9od190aWxlczsNCj4gIAl1aW50MzJfdCBzd2l6emxlX3g7DQo+ICAJdWludDMyX3Qgc3dp enpsZV95Ow0KPiArCXVpbnQzMl90IHN3aXp6bGVfdGlsZTQ7DQo+ICAJYm9fY29weSBsaW5lYXJf dG87DQo+ICAJYm9fY29weSBsaW5lYXJfdG9feDsNCj4gIAlib19jb3B5IGxpbmVhcl90b195Ow0K PiAgCWJvX2NvcHkgbGluZWFyX3RvX3lmOw0KPiAgCWJvX2NvcHkgbGluZWFyX3RvX3lzOw0KPiAr CWJvX2NvcHkgbGluZWFyX3RvX3RpbGU0Ow0KPiAgCWJvX2NvcHkgdG9fbGluZWFyOw0KPiAgCWJv X2NvcHkgeF90b19saW5lYXI7DQo+ICAJYm9fY29weSB5X3RvX2xpbmVhcjsNCj4gIAlib19jb3B5 IHlmX3RvX2xpbmVhcjsNCj4gIAlib19jb3B5IHlzX3RvX2xpbmVhcjsNCj4gKwlib19jb3B5IHRp bGU0X3RvX2xpbmVhcjsNCj4gIH07DQo+IA0KPiAgc3RhdGljIGNvbnN0IGNoYXIgKnRpbGluZ19z dHIodWludDMyX3QgdGlsaW5nKSBAQCAtMTI1LDYgKzEyOSw3IEBAIHN0YXRpYyBjb25zdA0KPiBj aGFyICp0aWxpbmdfc3RyKHVpbnQzMl90IHRpbGluZykNCj4gIAljYXNlIEk5MTVfVElMSU5HX1k6 ICAgIHJldHVybiAiWSI7DQo+ICAJY2FzZSBJOTE1X1RJTElOR19ZZjogICByZXR1cm4gIllmIjsN Cj4gIAljYXNlIEk5MTVfVElMSU5HX1lzOiAgIHJldHVybiAiWXMiOw0KPiArCWNhc2UgSTkxNV9U SUxJTkdfNDogICAgcmV0dXJuICI0IjsNCj4gIAlkZWZhdWx0OiAgICAgICAgICAgICAgIHJldHVy biAiVU5LTk9XTiI7DQo+ICAJfQ0KPiAgfQ0KPiBAQCAtMjIyLDcgKzIyNyw4IEBAIHN0YXRpYyB2 b2lkIHNldF9od190aWxlZChzdHJ1Y3QgYnVmX29wcyAqYm9wcywgc3RydWN0DQo+IGludGVsX2J1 ZiAqYnVmKSAgew0KPiAgCXVpbnQzMl90IHJldF90aWxpbmcsIHJldF9zd2l6emxlOw0KPiANCj4g LQlpZiAoYnVmLT50aWxpbmcgIT0gSTkxNV9USUxJTkdfWCAmJiBidWYtPnRpbGluZyAhPSBJOTE1 X1RJTElOR19ZKQ0KPiArCWlmIChidWYtPnRpbGluZyAhPSBJOTE1X1RJTElOR19YICYmIGJ1Zi0+ dGlsaW5nICE9IEk5MTVfVElMSU5HX1kgJiYNCj4gKwkgICAgYnVmLT50aWxpbmcgIT0gSTkxNV9U SUxJTkdfNCkNCj4gIAkJcmV0dXJuOw0KPiANCj4gIAlpZiAoIWJ1Zl9vcHNfaGFzX2h3X2ZlbmNl KGJvcHMsIGJ1Zi0+dGlsaW5nKSkgeyBAQCAtMzIwLDYgKzMyNiw1MA0KPiBAQCBzdGF0aWMgdm9p ZCAqeV9wdHIodm9pZCAqcHRyLA0KPiAgCXJldHVybiBwdHIgKyBwb3M7DQo+ICB9DQo+IA0KPiAr LyoNCj4gKyAqICh4LHkpIHRvIG1lbW9yeSBsb2NhdGlvbiBpbiB0aWxlZC00IHN1cmZhY2UNCj4g KyAqDQo+ICsgKiBjb3ZlcnRlZCB0aG9zZSBkaXZpc2lvbnMgYW5kIG11bHRpcGxpY2F0aW9ucyB0 byBzaGlmdHMgYW5kIG1hc2tzDQo+ICsgKiBpbiBob3BlIHRoaXMgd291bGRuJ3QgYmUgc28gc2xv dy4NCj4gKyAqLw0KPiArc3RhdGljIHZvaWQgKnRpbGU0X3B0cih2b2lkICpwdHIsDQo+ICsJCQl1 bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksDQo+ICsJCQl1bnNpZ25lZCBpbnQgc3RyaWRl LCB1bnNpZ25lZCBpbnQgY3BwKSB7DQo+ICsJY29uc3QgaW50IHRpbGVfd2lkdGggPSAxMjg7DQo+ ICsJY29uc3QgaW50IHRpbGVfaGVpZ2h0ID0gMzI7DQo+ICsJY29uc3QgaW50IHN1YnRpbGVfc2l6 ZSA9IDY0Ow0KPiArCWNvbnN0IGludCBvd29yZHMgPSAxNjsNCj4gKwlpbnQgYmFzZSwgX3gsIF95 LCBzdWJ0aWxlLCB0aWxlX3gsIHRpbGVfeTsNCj4gKwlpbnQgeF9sb2MgPSB4IDw8IF9fYnVpbHRp bl9jdHooY3BwKTsNCj4gKwlpbnQgcG9zOw0KPiArDQo+ICsJLyogUGl4ZWwgaW4gdGlsZSB2aWEg bWFza3MgKi8NCj4gKwl0aWxlX3ggPSB4X2xvYyAmICh0aWxlX3dpZHRoIC0gMSk7DQo+ICsJdGls ZV95ID0geSAmICh0aWxlX2hlaWdodCAtIDEpOw0KPiArDQo+ICsJLyogc3VidGlsZSBpbiA0ayB0 aWxlICovDQo+ICsJX3ggPSB0aWxlX3ggPj4gX19idWlsdGluX2N0eihvd29yZHMpOw0KPiArCV95 ID0gdGlsZV95ID4+IDI7DQo+ICsNCj4gKwkvKiB0aWxlLTQgc3dpenpsZSAqLw0KPiArCXN1YnRp bGUgPSAoKF95ID4+IDEpIDw8IDQpICsgKChfeSAmIDEpIDw8IDIpICsgKF94ICYgMykgKyAoKF94 ICYgNCkgPDwNCj4gKzEpOw0KPiArDQo+ICsJLyogbWVtb3J5IGxvY2F0aW9uICovDQo+ICsJYmFz ZSA9ICh5ID4+IF9fYnVpbHRpbl9jdHoodGlsZV9oZWlnaHQpKSAqDQo+ICsJCShzdHJpZGUgPDwg X19idWlsdGluX2N0eih0aWxlX2hlaWdodCkpICsNCj4gKwkJKCgoeF9sb2MgPj4gX19idWlsdGlu X2N0eih0aWxlX3dpZHRoKSkgPDwgX19idWlsdGluX2N0eig0MDk2KSkpOw0KPiArDQo+ICsJcG9z ID0gYmFzZSArIChzdWJ0aWxlIDw8IF9fYnVpbHRpbl9jdHooc3VidGlsZV9zaXplKSkgKw0KPiAr CQkoKHRpbGVfeSAmIDMpIDw8IF9fYnVpbHRpbl9jdHoob3dvcmRzKSkgKw0KPiArCQkodGlsZV94 ICYgKG93b3JkcyAtIDEpKTsNCj4gKwlpZ3RfYXNzZXJ0KChwb3MgJiAoY3BwIC0gMSkpID09IDAp Ow0KPiArCXBvcyA9IHBvcyA+PiBfX2J1aWx0aW5fY3R6KGNwcCk7DQo+ICsNCj4gKwlyZXR1cm4g cHRyICsgcG9zOw0KPiArfQ0KPiArDQo+ICsNCj4gIHN0YXRpYyB2b2lkICp5Zl9wdHIodm9pZCAq cHRyLA0KPiAgCQkgICAgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LA0KPiAgCQkgICAg dW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNwcCkgQEAgLTM2NSw2ICs0MTUsOCBA QA0KPiBzdGF0aWMgdGlsZV9mbiBfX2dldF90aWxlX2ZuX3B0cihpbnQgdGlsaW5nKQ0KPiAgCWNh c2UgSTkxNV9USUxJTkdfWWY6DQo+ICAJCWZuID0geWZfcHRyOw0KPiAgCQlicmVhazsNCj4gKwlj YXNlIEk5MTVfVElMSU5HXzQ6DQo+ICsJCWZuID0gdGlsZTRfcHRyOw0KPiAgCWNhc2UgSTkxNV9U SUxJTkdfWXM6DQo+ICAJCS8qIFRvIGJlIGltcGxlbWVudGVkICovDQo+ICAJCWJyZWFrOw0KPiBA QCAtMzkxLDcgKzQ0Myw3IEBAIHN0YXRpYyB2b2lkIF9fY29weV9jY3Moc3RydWN0IGJ1Zl9vcHMg KmJvcHMsIHN0cnVjdA0KPiBpbnRlbF9idWYgKmJ1ZiwNCj4gIAl2b2lkICptYXA7DQo+ICAJaW50 IGdlbjsNCj4gDQo+IC0JaWYgKCFidWYtPmNvbXByZXNzaW9uKQ0KPiArCWlmICghYnVmLT5jb21w cmVzc2lvbiB8fCBIQVNfRkxBVENDUyhpbnRlbF9nZXRfZHJtX2RldmlkKGJvcHMtPmZkKSkpDQo+ ICAJCXJldHVybjsNCj4gDQo+ICAJZ2VuID0gYm9wcy0+aW50ZWxfZ2VuOw0KPiBAQCAtNTUxLDYg KzYwMywxMyBAQCBzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b195cyhzdHJ1Y3QgYnVmX29wcyAq Ym9wcywNCj4gc3RydWN0IGludGVsX2J1ZiAqYnVmLA0KPiAgCV9fY29weV9saW5lYXJfdG8oYm9w cy0+ZmQsIGJ1ZiwgbGluZWFyLCBJOTE1X1RJTElOR19ZcywgMCk7ICB9DQo+IA0KPiArc3RhdGlj IHZvaWQgY29weV9saW5lYXJfdG9fdGlsZTQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHN0cnVjdCBp bnRlbF9idWYgKmJ1ZiwNCj4gKwkJCQkgdWludDMyX3QgKmxpbmVhcikNCj4gK3sNCj4gKwlERUJV R0ZOKCk7DQo+ICsJX19jb3B5X2xpbmVhcl90byhib3BzLT5mZCwgYnVmLCBsaW5lYXIsIEk5MTVf VElMSU5HXzQsDQo+ICtib3BzLT5zd2l6emxlX3RpbGU0KTsgfQ0KPiArDQo+ICBzdGF0aWMgdm9p ZCBfX2NvcHlfdG9fbGluZWFyKGludCBmZCwgc3RydWN0IGludGVsX2J1ZiAqYnVmLA0KPiAgCQkJ ICAgICB1aW50MzJfdCAqbGluZWFyLCBpbnQgdGlsaW5nLCB1aW50MzJfdCBzd2l6emxlKSAgeyBA QCAtDQo+IDYwMSw2ICs2NjAsMTMgQEAgc3RhdGljIHZvaWQgY29weV95c190b19saW5lYXIoc3Ry dWN0IGJ1Zl9vcHMgKmJvcHMsIHN0cnVjdA0KPiBpbnRlbF9idWYgKmJ1ZiwNCj4gIAlfX2NvcHlf dG9fbGluZWFyKGJvcHMtPmZkLCBidWYsIGxpbmVhciwgSTkxNV9USUxJTkdfWXMsIDApOyAgfQ0K PiANCj4gK3N0YXRpYyB2b2lkIGNvcHlfdGlsZTRfdG9fbGluZWFyKHN0cnVjdCBidWZfb3BzICpi b3BzLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsDQo+ICsJCQkJIHVpbnQzMl90ICpsaW5lYXIpDQo+ ICt7DQo+ICsJREVCVUdGTigpOw0KPiArCV9fY29weV90b19saW5lYXIoYm9wcy0+ZmQsIGJ1Ziwg bGluZWFyLCBJOTE1X1RJTElOR180LCAwKTsgfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBjb3B5X2xp bmVhcl90b19ndHQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwN Cj4gIAkJCSAgICAgICB1aW50MzJfdCAqbGluZWFyKQ0KPiAgew0KPiBAQCAtNzUyLDExICs4MTgs MTAgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9idWZfaW5pdChzdHJ1Y3QgYnVmX29wcyAqYm9wcywN Cj4gIAlJR1RfSU5JVF9MSVNUX0hFQUQoJmJ1Zi0+bGluayk7DQo+IA0KPiAgCWlmIChjb21wcmVz c2lvbikgew0KPiAtCQlpbnQgYXV4X3dpZHRoLCBhdXhfaGVpZ2h0Ow0KPiAtDQo+ICAJCWlndF9y ZXF1aXJlKGJvcHMtPmludGVsX2dlbiA+PSA5KTsNCj4gIAkJaWd0X2Fzc2VydChyZXFfdGlsaW5n ID09IEk5MTVfVElMSU5HX1kgfHwNCj4gLQkJCSAgIHJlcV90aWxpbmcgPT0gSTkxNV9USUxJTkdf WWYpOw0KPiArCQkJICAgcmVxX3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZiB8fA0KPiArCQkJICAg cmVxX3RpbGluZyA9PSBJOTE1X1RJTElOR180KTsNCj4gIAkJLyoNCj4gIAkJICogT24gR0VOMTIr IHdlIGFsaWduIHRoZSBtYWluIHN1cmZhY2UgdG8gNCAqIDQgbWFpbiBzdXJmYWNlDQo+ICAJCSAq IHRpbGVzLCB3aGljaCBpcyA2NGtCLiBUaGVzZSAxNiB0aWxlcyBhcmUgbWFwcGVkIGJ5IDQgQVVY IEBAIC0NCj4gNzc4LDEzICs4NDMsMTggQEAgc3RhdGljIHZvaWQgX19pbnRlbF9idWZfaW5pdChz dHJ1Y3QgYnVmX29wcyAqYm9wcywNCj4gIAkJYnVmLT5icHAgPSBicHA7DQo+ICAJCWJ1Zi0+Y29t cHJlc3Npb24gPSBjb21wcmVzc2lvbjsNCj4gDQo+IC0JCWF1eF93aWR0aCA9IGludGVsX2J1Zl9j Y3Nfd2lkdGgoYm9wcy0+aW50ZWxfZ2VuLCBidWYpOw0KPiAtCQlhdXhfaGVpZ2h0ID0gaW50ZWxf YnVmX2Njc19oZWlnaHQoYm9wcy0+aW50ZWxfZ2VuLCBidWYpOw0KPiArCQlpZiAoIUhBU19GTEFU Q0NTKGludGVsX2dldF9kcm1fZGV2aWQoYm9wcy0+ZmQpKSkgew0KPiArCQkJaW50IGF1eF93aWR0 aCwgYXV4X2hlaWdodDsNCj4gDQo+IC0JCWJ1Zi0+Y2NzWzBdLm9mZnNldCA9IGJ1Zi0+c3VyZmFj ZVswXS5zdHJpZGUgKiBBTElHTihoZWlnaHQsIDMyKTsNCj4gLQkJYnVmLT5jY3NbMF0uc3RyaWRl ID0gYXV4X3dpZHRoOw0KPiArCQkJYXV4X3dpZHRoID0gaW50ZWxfYnVmX2Njc193aWR0aChib3Bz LT5pbnRlbF9nZW4sIGJ1Zik7DQo+ICsJCQlhdXhfaGVpZ2h0ID0gaW50ZWxfYnVmX2Njc19oZWln aHQoYm9wcy0+aW50ZWxfZ2VuLA0KPiBidWYpOw0KPiANCj4gLQkJc2l6ZSA9IGJ1Zi0+Y2NzWzBd Lm9mZnNldCArIGF1eF93aWR0aCAqIGF1eF9oZWlnaHQ7DQo+ICsJCQlidWYtPmNjc1swXS5vZmZz ZXQgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlICoNCj4gQUxJR04oaGVpZ2h0LCAzMik7DQo+ICsJ CQlidWYtPmNjc1swXS5zdHJpZGUgPSBhdXhfd2lkdGg7DQo+ICsJCQlzaXplID0gYnVmLT5jY3Nb MF0ub2Zmc2V0ICsgYXV4X3dpZHRoICogYXV4X2hlaWdodDsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJ CXNpemUgPSBidWYtPmNjc1swXS5vZmZzZXQ7DQo+ICsJCX0NCj4gIAl9IGVsc2Ugew0KPiAgCQlp ZiAodGlsaW5nKSB7DQo+ICAJCQlkZXZpZCA9ICBpbnRlbF9nZXRfZHJtX2RldmlkKGJvcHMtPmZk KTsgQEAgLTExNzYsMTcNCj4gKzEyNDYsMTkgQEAgdm9pZCBpbnRlbF9idWZfd3JpdGVfYXV4X3Rv X3BuZyhzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIGNvbnN0DQo+IGNoYXIgKmZpbGVuYW1lKSAgI2Rl ZmluZSBERUZBVUxUX0JVRk9QUyhfX2dlbl9zdGFydCwgX19nZW5fZW5kKSBcDQo+ICAJLmdlbl9z dGFydCAgICAgICAgICA9IF9fZ2VuX3N0YXJ0LCBcDQo+ICAJLmdlbl9lbmQgICAgICAgICAgICA9 IF9fZ2VuX2VuZCwgXA0KPiAtCS5zdXBwb3J0ZWRfaHdfdGlsZXMgPSBUSUxFX1ggfCBUSUxFX1ks IFwNCj4gKwkuc3VwcG9ydGVkX2h3X3RpbGVzID0gVElMRV9YIHwgVElMRV9ZIHwgVElMRV80LCBc DQo+ICAJLmxpbmVhcl90byAgICAgICAgICA9IGNvcHlfbGluZWFyX3RvX3djLCBcDQo+ICAJLmxp bmVhcl90b194ICAgICAgICA9IGNvcHlfbGluZWFyX3RvX2d0dCwgXA0KPiAgCS5saW5lYXJfdG9f eSAgICAgICAgPSBjb3B5X2xpbmVhcl90b19ndHQsIFwNCj4gIAkubGluZWFyX3RvX3lmICAgICAg ID0gY29weV9saW5lYXJfdG9feWYsIFwNCj4gIAkubGluZWFyX3RvX3lzICAgICAgID0gY29weV9s aW5lYXJfdG9feXMsIFwNCj4gKwkubGluZWFyX3RvX3RpbGU0ICAgID0gY29weV9saW5lYXJfdG9f dGlsZTQsIFwNCj4gIAkudG9fbGluZWFyICAgICAgICAgID0gY29weV93Y190b19saW5lYXIsIFwN Cj4gIAkueF90b19saW5lYXIgICAgICAgID0gY29weV9ndHRfdG9fbGluZWFyLCBcDQo+ICAJLnlf dG9fbGluZWFyICAgICAgICA9IGNvcHlfZ3R0X3RvX2xpbmVhciwgXA0KPiAgCS55Zl90b19saW5l YXIgICAgICAgPSBjb3B5X3lmX3RvX2xpbmVhciwgXA0KPiAtCS55c190b19saW5lYXIgICAgICAg PSBjb3B5X3lzX3RvX2xpbmVhcg0KPiArCS55c190b19saW5lYXIgICAgICAgPSBjb3B5X3lzX3Rv X2xpbmVhciwgXA0KPiArCS50aWxlNF90b19saW5lYXIgICAgPSBjb3B5X3RpbGU0X3RvX2xpbmVh cg0KPiANCj4gIHN0cnVjdCBidWZfb3BzIGJ1Zl9vcHNfYXJyW10gPSB7DQo+ICAJew0KPiBAQCAt MTIwMSw3ICsxMjczLDcgQEAgc3RydWN0IGJ1Zl9vcHMgYnVmX29wc19hcnJbXSA9IHsNCj4gDQo+ ICAJew0KPiAgCQlERUZBVUxUX0JVRk9QUygxMiwgMTIpLA0KPiAtCQkuc3VwcG9ydGVkX3RpbGVz ICAgPSBUSUxFX05PTkUgfCBUSUxFX1ggfCBUSUxFX1kgfCBUSUxFX1lmIHwNCj4gVElMRV9ZcywN Cj4gKwkJLnN1cHBvcnRlZF90aWxlcyAgID0gVElMRV9OT05FIHwgVElMRV9YIHwgVElMRV9ZIHwg VElMRV9ZZiB8DQo+IFRJTEVfWXMgfCBUSUxFXzQsDQo+ICAJfSwNCj4gIH07DQo+IA0KPiBAQCAt MTIzMCw2ICsxMzAyLDggQEAgc3RhdGljIGJvb2wgcHJvYmVfaHdfdGlsaW5nKHN0cnVjdCBidWZf b3BzICpib3BzLA0KPiB1aW50MzJfdCB0aWxpbmcsDQo+ICAJCQlib3BzLT5zd2l6emxlX3ggPSBi dWZfc3dpenpsZTsNCj4gIAkJZWxzZSBpZiAodGlsaW5nID09IEk5MTVfVElMSU5HX1kpDQo+ICAJ CQlib3BzLT5zd2l6emxlX3kgPSBidWZfc3dpenpsZTsNCj4gKwkJZWxzZSBpZiAodGlsaW5nID09 IEk5MTVfVElMSU5HXzQpDQo+ICsJCQlib3BzLT5zd2l6emxlX3RpbGU0ID0gYnVmX3N3aXp6bGU7 DQo+IA0KPiAgCQkqc3dpenpsaW5nX3N1cHBvcnRlZCA9IGJ1Zl9zd2l6emxlID09IHBoeXNfc3dp enpsZTsNCj4gIAl9DQo+IEBAIC0xMzkwLDYgKzE0NjQsMjQgQEAgc3RhdGljIHN0cnVjdCBidWZf b3BzICpfX2J1Zl9vcHNfY3JlYXRlKGludCBmZCwgYm9vbA0KPiBjaGVja19pZGVtcG90ZW5jeSkN Cj4gIAkJfQ0KPiAgCX0NCj4gDQo+ICsJaWYgKGlzX2h3X3RpbGluZ19zdXBwb3J0ZWQoYm9wcywg STkxNV9USUxJTkdfNCkpIHsNCj4gKwkJYm9vbCBzd2l6emxpbmdfc3VwcG9ydGVkOw0KPiArCQli b29sIHN1cHBvcnRlZCA9IHByb2JlX2h3X3RpbGluZyhib3BzLCBJOTE1X1RJTElOR180LA0KPiAr CQkJCQkJICZzd2l6emxpbmdfc3VwcG9ydGVkKTsNCj4gKw0KPiArCQlpZiAoIXN3aXp6bGluZ19z dXBwb3J0ZWQpIHsNCj4gKwkJCWlndF9kZWJ1ZygiU3dpenpsaW5nIGZvciA0IGlzIG5vdCBzdXBw b3J0ZWRcbiIpOw0KPiArCQkJYm9wcy0+c3VwcG9ydGVkX3RpbGVzICY9IH5USUxFXzQ7DQo+ICsJ CX0NCj4gKw0KPiArCQlpZ3RfZGVidWcoIjQgZmVuY2Ugc3VwcG9ydDogJXNcbiIsIGJvb2xfc3Ry KHN1cHBvcnRlZCkpOw0KPiArCQlpZiAoIXN1cHBvcnRlZCkgew0KPiArCQkJYm9wcy0+c3VwcG9y dGVkX2h3X3RpbGVzICY9IH5USUxFXzQ7DQo+ICsJCQlib3BzLT5saW5lYXJfdG9fdGlsZTQgPSBj b3B5X2xpbmVhcl90b190aWxlNDsNCj4gKwkJCWJvcHMtPnRpbGU0X3RvX2xpbmVhciA9IGNvcHlf dGlsZTRfdG9fbGluZWFyOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICAJLyogRGlzYWJsZSBvdGhl ciB0aWxpbmcgZm9ybWF0IGZ1bmN0aW9ucyBpZiBub3Qgc3VwcG9ydGVkICovDQo+ICAJaWYgKCFp c190aWxpbmdfc3VwcG9ydGVkKGJvcHMsIEk5MTVfVElMSU5HX1lmKSkgew0KPiAgCQlpZ3RfZGVi dWcoIllmIGZvcm1hdCBub3Qgc3VwcG9ydGVkXG4iKTsgZGlmZiAtLWdpdA0KPiBhL2xpYi9pbnRl bF9jaGlwc2V0LmggYi9saWIvaW50ZWxfY2hpcHNldC5oIGluZGV4IGRiNzVhODI5Li40ZDlmNDYy MyAxMDA2NDQNCj4gLS0tIGEvbGliL2ludGVsX2NoaXBzZXQuaA0KPiArKysgYi9saWIvaW50ZWxf Y2hpcHNldC5oDQo+IEBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBpbnRlbF9jaGVja19wY2godm9p ZCk7DQo+IA0KPiAgI2RlZmluZSBIQVNfNFRJTEUoZGV2aWQpCShpbnRlbF9nZXRfZGV2aWNlX2lu Zm8oZGV2aWQpLT5oYXNfNHRpbGUpDQo+IA0KPiAtI2RlZmluZSBIQVNfRkxBVENDUyhkZXZpZCkJ KGludGVsX2dldF9kZXZpY2VfaW5mbyhkZXZpZCktPmhhc19mbGF0Y2NzKQ0KPiArLyogdXNlIEhB U180VElMRSBoZXJlIGFzIGFsbCBkZXZpY2VzIHdpdGggNC10aWxlIGhhdmUgZmxhdCBjY3MuICov DQo+ICsjZGVmaW5lIEhBU19GTEFUQ0NTKGRldmlkKQlIQVNfNFRJTEUoZGV2aWQpDQo+IA0KPiAg I2VuZGlmIC8qIF9JTlRFTF9DSElQU0VUX0ggKi8NCj4gZGlmZiAtLWdpdCBhL2xpYi9yZW5kZXJj b3B5X2dlbjkuYyBiL2xpYi9yZW5kZXJjb3B5X2dlbjkuYyBpbmRleA0KPiA2YzQ1ZWZiNC4uYWUw Zjc3NWEgMTAwNjQ0DQo+IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2dlbjkuYw0KPiArKysgYi9saWIv cmVuZGVyY29weV9nZW45LmMNCj4gQEAgLTE2NSw3ICsxNjUsOCBAQCBpbnRlbF9nZXRfdWNfbW9j cyhpbnQgZmQpIHsNCj4gDQo+ICAvKiBNb3N0bHkgY29weStwYXN0ZSBmcm9tIGdlbjYsIGV4Y2Vw dCBoZWlnaHQsIHdpZHRoLCBwaXRjaCBtb3ZlZCAqLyAgc3RhdGljDQo+IHVpbnQzMl90IC1nZW44 X2JpbmRfYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBjb25zdCBzdHJ1Y3QgaW50ZWxfYnVmICpi dWYsIGludA0KPiBpc19kc3QpIHsNCj4gK2dlbjhfYmluZF9idWYoc3RydWN0IGludGVsX2JiICpp YmIsIGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgaW50IGlzX2RzdCwNCj4gKwkgICAgICBi b29sIGZhc3RfY2xlYXIpIHsNCj4gIAlzdHJ1Y3QgZ2VuOV9zdXJmYWNlX3N0YXRlICpzczsNCj4g IAl1aW50MzJfdCB3cml0ZV9kb21haW4sIHJlYWRfZG9tYWluOw0KPiAgCXVpbnQ2NF90IGFkZHJl c3M7DQo+IEBAIC0xOTIsMTUgKzE5MywyNiBAQCBnZW44X2JpbmRfYnVmKHN0cnVjdCBpbnRlbF9i YiAqaWJiLCBjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfYnVmICpidWYsIGludCBpc19kc3QpIHsNCj4g IAkJY2FzZSA2NDogc3MtPnNzMC5zdXJmYWNlX2Zvcm1hdCA9DQo+IFNVUkZBQ0VGT1JNQVRfUjE2 RzE2QjE2QTE2X0ZMT0FUOyBicmVhazsNCj4gIAkJZGVmYXVsdDogaWd0X2Fzc2VydCgwKTsNCj4g IAl9DQo+IC0Jc3MtPnNzMC5yZW5kZXJfY2FjaGVfcmVhZF93cml0ZSA9IDE7DQo+ICAJc3MtPnNz MC52ZXJ0aWNhbF9hbGlnbm1lbnQgPSAxOyAvKiBhbGlnbiA0ICovDQo+IC0Jc3MtPnNzMC5ob3Jp em9udGFsX2FsaWdubWVudCA9IDE7IC8qIGFsaWduIDQgKi8NCj4gKwlzcy0+c3MwLmhvcml6b250 YWxfYWxpZ25tZW50ID0gMTsgLyogYWxpZ24gNCBvciBIQUxJR05fMzIgb24gZGlzcGxheQ0KPiAr dmVyID49IDEzKi8NCj4gKw0KPiArCWlmIChIQVNfNFRJTEUoaWJiLT5kZXZpZCkpIHsNCj4gKwkJ LyoNCj4gKwkJICogbW9jcyB0YWJsZSB2ZXJzaW9uIDEgaW5kZXggMyBncm91YiB3YiB1c2UgbDMN Cj4gKwkJICovDQo+ICsJCXNzLT5zczEubWVtb3J5X29iamVjdF9jb250cm9sID0gMyA8PCAxOw0K PiArCQlzcy0+c3M1Lm1pcF90YWlsX3N0YXJ0X2xvZCA9IDA7DQo+ICsJfSBlbHNlIHsNCj4gKwkJ c3MtPnNzMC5yZW5kZXJfY2FjaGVfcmVhZF93cml0ZSA9IDE7DQo+ICsJCXNzLT5zczEubWVtb3J5 X29iamVjdF9jb250cm9sID0gaW50ZWxfZ2V0X3VjX21vY3MoaTkxNSk7DQo+ICsJCXNzLT5zczUu bWlwX3RhaWxfc3RhcnRfbG9kID0gMTsgLyogbmVlZGVkIHdpdGggdHJtb2RlICovDQo+ICsJfQ0K PiArDQo+ICAJaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1gpDQo+ICAJCXNzLT5zczAu dGlsZWRfbW9kZSA9IDI7DQo+ICAJZWxzZSBpZiAoYnVmLT50aWxpbmcgIT0gSTkxNV9USUxJTkdf Tk9ORSkNCj4gIAkJc3MtPnNzMC50aWxlZF9tb2RlID0gMzsNCj4gDQo+IC0Jc3MtPnNzMS5tZW1v cnlfb2JqZWN0X2NvbnRyb2wgPSBpbnRlbF9nZXRfdWNfbW9jcyhpOTE1KTsNCj4gIAlpZiAoaW50 ZWxfYnVmX3B4cChidWYpKQ0KPiAgCQlzcy0+c3MxLm1lbW9yeV9vYmplY3RfY29udHJvbCB8PSAx Ow0KPiANCj4gQEAgLTIwOCw3ICsyMjAsNiBAQCBnZW44X2JpbmRfYnVmKHN0cnVjdCBpbnRlbF9i YiAqaWJiLCBjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfYnVmICpidWYsIGludCBpc19kc3QpIHsNCj4g IAkJc3MtPnNzNS50cm1vZGUgPSAxOw0KPiAgCWVsc2UgaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVf VElMSU5HX1lzKQ0KPiAgCQlzcy0+c3M1LnRybW9kZSA9IDI7DQo+IC0Jc3MtPnNzNS5taXBfdGFp bF9zdGFydF9sb2QgPSAxOyAvKiBuZWVkZWQgd2l0aCB0cm1vZGUgKi8NCj4gDQo+ICAJYWRkcmVz cyA9IGludGVsX2JiX29mZnNldF9yZWxvYyhpYmIsIGJ1Zi0+aGFuZGxlLA0KPiAgCQkJCQlyZWFk X2RvbWFpbiwgd3JpdGVfZG9tYWluLA0KPiBAQCAtMjI5LDIwICsyNDAsMjMgQEAgZ2VuOF9iaW5k X2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgY29uc3Qgc3RydWN0DQo+IGludGVsX2J1ZiAqYnVm LCBpbnQgaXNfZHN0KSB7DQo+ICAJaWYgKGJ1Zi0+Y29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVT U0lPTl9NRURJQSkNCj4gIAkJc3MtPnNzNy50Z2wubWVkaWFfY29tcHJlc3Npb24gPSAxOw0KPiAg CWVsc2UgaWYgKGJ1Zi0+Y29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9SRU5ERVIpIHsN Cj4gLQkJaWd0X2Fzc2VydChidWYtPmNjc1swXS5zdHJpZGUpOw0KPiAtDQo+ICAJCXNzLT5zczYu YXV4X21vZGUgPSAweDU7IC8qIEFVWF9DQ1NfRSAqLw0KPiAtCQlzcy0+c3M2LmF1eF9waXRjaCA9 IChidWYtPmNjc1swXS5zdHJpZGUgLyAxMjgpIC0gMTsNCj4gDQo+IC0JCWFkZHJlc3MgPSBpbnRl bF9iYl9vZmZzZXRfcmVsb2Nfd2l0aF9kZWx0YShpYmIsIGJ1Zi0+aGFuZGxlLA0KPiAtCQkJCQkJ CSAgIHJlYWRfZG9tYWluLA0KPiB3cml0ZV9kb21haW4sDQo+IC0JCQkJCQkJICAgKGJ1Zi0+Y2Mu b2Zmc2V0ID8gKDENCj4gPDwgMTApIDogMCkgfCBidWYtPmNjc1swXS5vZmZzZXQsDQo+IC0JCQkJ CQkJICAgaW50ZWxfYmJfb2Zmc2V0KGliYikNCj4gKyA0ICogMTAsDQo+IC0JCQkJCQkJICAgYnVm LT5hZGRyLm9mZnNldCk7DQo+IC0JCXNzLT5zczEwLmF1eF9iYXNlX2FkZHIgPSAoYWRkcmVzcyAr IGJ1Zi0+Y2NzWzBdLm9mZnNldCkgPj4gMTI7DQo+IC0JCXNzLT5zczExLmF1eF9iYXNlX2FkZHJf aGkgPSAoYWRkcmVzcyArIGJ1Zi0+Y2NzWzBdLm9mZnNldCkgPj4NCj4gMzI7DQo+ICsJCWlmIChi dWYtPmNjc1swXS5zdHJpZGUpIHsNCj4gKw0KPiArCQkJc3MtPnNzNi5hdXhfcGl0Y2ggPSAoYnVm LT5jY3NbMF0uc3RyaWRlIC8gMTI4KSAtIDE7DQo+ICsNCj4gKwkJCWFkZHJlc3MgPSBpbnRlbF9i Yl9vZmZzZXRfcmVsb2Nfd2l0aF9kZWx0YShpYmIsIGJ1Zi0NCj4gPmhhbmRsZSwNCj4gKw0KPiBy ZWFkX2RvbWFpbiwgd3JpdGVfZG9tYWluLA0KPiArCQkJCQkJCQkgICAoYnVmLQ0KPiA+Y2Mub2Zm c2V0ID8gKDEgPDwgMTApIDogMCkNCj4gKwkJCQkJCQkJICAgfCBidWYtDQo+ID5jY3NbMF0ub2Zm c2V0LA0KPiArDQo+IGludGVsX2JiX29mZnNldChpYmIpICsgNCAqIDEwLA0KPiArCQkJCQkJCQkg ICBidWYtDQo+ID5hZGRyLm9mZnNldCk7DQo+ICsJCQlzcy0+c3MxMC5hdXhfYmFzZV9hZGRyID0g KGFkZHJlc3MgKyBidWYtDQo+ID5jY3NbMF0ub2Zmc2V0KSA+PiAxMjsNCj4gKwkJCXNzLT5zczEx LmF1eF9iYXNlX2FkZHJfaGkgPSAoYWRkcmVzcyArIGJ1Zi0NCj4gPmNjc1swXS5vZmZzZXQpID4+ IDMyOw0KPiArCQl9DQo+IA0KPiAtCQlpZiAoYnVmLT5jYy5vZmZzZXQpIHsNCj4gKwkJaWYgKGZh c3RfY2xlYXIgfHwgKGJ1Zi0+Y2Mub2Zmc2V0ICYmICFIQVNfRkxBVENDUyhpYmItPmRldmlkKSkp DQo+IHsNCj4gIAkJCWlndF9hc3NlcnQoYnVmLT5jb21wcmVzc2lvbiA9PQ0KPiBJOTE1X0NPTVBS RVNTSU9OX1JFTkRFUik7DQo+IA0KPiAgCQkJc3MtPnNzMTAuY2xlYXJ2YWx1ZV9hZGRyX2VuYWJs ZSA9IDE7IEBAIC0yNTIsOA0KPiArMjY2LDMwIEBAIGdlbjhfYmluZF9idWYoc3RydWN0IGludGVs X2JiICppYmIsIGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgaW50DQo+IGlzX2RzdCkgew0K PiAgCQkJCQkJCQkgICBidWYtDQo+ID5jYy5vZmZzZXQsDQo+IA0KPiBpbnRlbF9iYl9vZmZzZXQo aWJiKSArIDQgKiAxMiwNCj4gIAkJCQkJCQkJICAgYnVmLQ0KPiA+YWRkci5vZmZzZXQpOw0KPiAt CQkJc3MtPnNzMTIuY2xlYXJfYWRkcmVzcyA9IGFkZHJlc3MgKyBidWYtPmNjLm9mZnNldDsNCj4g Kw0KPiArCQkJLyoNCj4gKwkJCSAqIElmIHRoaXMgYXNzZXJ0IGRvZXNuJ3QgaG9sZCBiZWxvdyBj bGVhciBhZGRyZXNzIHdpbGwgYmUNCj4gKwkJCSAqIHdyaXR0ZW4gd3JvbmcuDQo+ICsJCQkgKi8N Cj4gKw0KPiArCQkJaWd0X2Fzc2VydChfX2J1aWx0aW5fY3R6bChhZGRyZXNzICsgYnVmLT5jYy5v ZmZzZXQpID49IDYNCj4gJiYNCj4gKwkJCQkgICAoX19idWlsdGluX2NsemwoYWRkcmVzcyArIGJ1 Zi0+Y2Mub2Zmc2V0KSA+PQ0KPiAxNikpOw0KPiArDQo+ICsJCQlzcy0+c3MxMi5jbGVhcl9hZGRy ZXNzID0gKGFkZHJlc3MgKyBidWYtPmNjLm9mZnNldCkgPj4NCj4gNjsNCj4gIAkJCXNzLT5zczEz LmNsZWFyX2FkZHJlc3NfaGkgPSAoYWRkcmVzcyArIGJ1Zi0+Y2Mub2Zmc2V0KQ0KPiA+PiAzMjsN Cj4gKwkJfSBlbHNlIGlmIChIQVNfRkxBVENDUyhpYmItPmRldmlkKSkgew0KPiArCQkJc3MtPnNz Ny5kZzIubWVtb3J5X2NvbXByZXNzaW9uX3R5cGUgPSAwOw0KPiArCQkJc3MtPnNzNy5kZzIubWVt b3J5X2NvbXByZXNzaW9uX2VuYWJsZSA9IDA7DQo+ICsJCQlzcy0NCj4gPnNzNy5kZzIuZGlzYWJs ZV9zdXBwb3J0X2Zvcl9tdWx0aV9ncHVfcGFydGlhbF93cml0ZXMgPSAxOw0KPiArCQkJc3MtPnNz Ny5kZzIuZGlzYWJsZV9zdXBwb3J0X2Zvcl9tdWx0aV9ncHVfYXRvbWljcyA9DQo+IDE7DQo+ICsN Cj4gKwkJCS8qDQo+ICsJCQkgKiBGb3Igbm93IGhlcmUgaXMgY29taW5nIG9ubHkgMzJicHAgcmdi IGZvcm1hdA0KPiArCQkJICogd2hpY2ggaXMgbWFya2VkIGJlbG93IGFzIEI4RzhSOFg4X1VOT1JN ID0gJzgnDQo+ICsJCQkgKiBJZiBoZXJlIGV2ZXIgYXJyaXZlIG90aGVyIGZvcm1hdHMgYmVsb3cg bmVlZCB0byBiZQ0KPiArCQkJICogZml4ZWQgdG8gdGFrZSB0aGF0IGludG8gYWNjb3VudC4NCj4g KwkJCSAqLw0KPiArCQkJc3MtPnNzMTIuY29tcHJlc3Npb25fZm9ybWF0ID0gODsNCj4gIAkJfQ0K PiAgCX0NCj4gDQo+IEBAIC0yNjYsMTQgKzMwMiwxNSBAQCBnZW44X2JpbmRfc3VyZmFjZXMoc3Ry dWN0IGludGVsX2JiICppYmIsDQo+ICAJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKmRzdCkN Cj4gIHsNCj4gIAl1aW50MzJfdCAqYmluZGluZ190YWJsZSwgYmluZGluZ190YWJsZV9vZmZzZXQ7 DQo+ICsJYm9vbCBmYXN0X2NsZWFyID0gIXNyYzsNCj4gDQo+ICAJYmluZGluZ190YWJsZSA9IGlu dGVsX2JiX3B0cl9hbGlnbihpYmIsIDMyKTsNCj4gIAliaW5kaW5nX3RhYmxlX29mZnNldCA9IGlu dGVsX2JiX3B0cl9hZGRfcmV0dXJuX3ByZXZfb2Zmc2V0KGliYiwgMzIpOw0KPiANCj4gLQliaW5k aW5nX3RhYmxlWzBdID0gZ2VuOF9iaW5kX2J1ZihpYmIsIGRzdCwgMSk7DQo+ICsJYmluZGluZ190 YWJsZVswXSA9IGdlbjhfYmluZF9idWYoaWJiLCBkc3QsIDEsIGZhc3RfY2xlYXIpOw0KPiANCj4g IAlpZiAoc3JjICE9IE5VTEwpDQo+IC0JCWJpbmRpbmdfdGFibGVbMV0gPSBnZW44X2JpbmRfYnVm KGliYiwgc3JjLCAwKTsNCj4gKwkJYmluZGluZ190YWJsZVsxXSA9IGdlbjhfYmluZF9idWYoaWJi LCBzcmMsIDAsIGZhbHNlKTsNCj4gDQo+ICAJcmV0dXJuIGJpbmRpbmdfdGFibGVfb2Zmc2V0Ow0K PiAgfQ0KPiBAQCAtODU2LDEyICs4OTMsMTQgQEAgZ2VuOF9lbWl0X3BzKHN0cnVjdCBpbnRlbF9i YiAqaWJiLCB1aW50MzJfdCBrZXJuZWwsDQo+IGJvb2wgZmFzdF9jbGVhcikgeyAgc3RhdGljIHZv aWQgIGdlbjlfZW1pdF9kZXB0aChzdHJ1Y3QgaW50ZWxfYmIgKmliYikgIHsNCj4gKwlib29sIG5l ZWRfMTBkdyA9IEhBU180VElMRShpYmItPmRldmlkKTsNCj4gKw0KPiAgCWludGVsX2JiX291dChp YmIsIEdFTjhfM0RTVEFURV9XTV9ERVBUSF9TVEVOQ0lMIHwgKDQgLSAyKSk7DQo+ICAJaW50ZWxf YmJfb3V0KGliYiwgMCk7DQo+ICAJaW50ZWxfYmJfb3V0KGliYiwgMCk7DQo+ICAJaW50ZWxfYmJf b3V0KGliYiwgMCk7DQo+IA0KPiAtCWludGVsX2JiX291dChpYmIsIEdFTjdfM0RTVEFURV9ERVBU SF9CVUZGRVIgfCAoOC0yKSk7DQo+ICsJaW50ZWxfYmJfb3V0KGliYiwgR0VON18zRFNUQVRFX0RF UFRIX0JVRkZFUiB8IChuZWVkXzEwZHcgPyAoMTAtDQo+IDIpIDoNCj4gKyg4LTIpKSk7DQo+ICAJ aW50ZWxfYmJfb3V0KGliYiwgMCk7DQo+ICAJaW50ZWxfYmJfb3V0KGliYiwgMCk7DQo+ICAJaW50 ZWxfYmJfb3V0KGliYiwgMCk7DQo+IEBAIC04NjksNiArOTA4LDEwIEBAIGdlbjlfZW1pdF9kZXB0 aChzdHJ1Y3QgaW50ZWxfYmIgKmliYikNCj4gIAlpbnRlbF9iYl9vdXQoaWJiLCAwKTsNCj4gIAlp bnRlbF9iYl9vdXQoaWJiLCAwKTsNCj4gIAlpbnRlbF9iYl9vdXQoaWJiLCAwKTsNCj4gKwlpZiAo bmVlZF8xMGR3KSB7DQo+ICsJCWludGVsX2JiX291dChpYmIsIDApOw0KPiArCQlpbnRlbF9iYl9v dXQoaWJiLCAwKTsNCj4gKwl9DQo+IA0KPiAgCWludGVsX2JiX291dChpYmIsIEdFTjhfM0RTVEFU RV9ISUVSX0RFUFRIX0JVRkZFUiB8ICg1LTIpKTsNCj4gIAlpbnRlbF9iYl9vdXQoaWJiLCAwKTsN Cj4gQEAgLTEwODAsNyArMTEyMyw3IEBAIHZvaWQgX2dlbjlfcmVuZGVyX29wKHN0cnVjdCBpbnRl bF9iYiAqaWJiLA0KPiANCj4gIAlnZW45X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzKGliYik7DQo+ IA0KPiAtCWlmIChJU19ERzIoaWJiLT5kZXZpZCkgfHwgaW50ZWxfZ2VuKGliYi0+ZGV2aWQpID4g MTIpIHsNCj4gKwlpZiAoSEFTXzRUSUxFKGliYi0+ZGV2aWQpIHx8IGludGVsX2dlbihpYmItPmRl dmlkKSA+IDEyKSB7DQo+ICAJCWludGVsX2JiX291dChpYmIsDQo+IEdFTjRfM0RTVEFURV9CSU5E SU5HX1RBQkxFX1BPT0xfQUxMT0MgfCAyKTsNCj4gIAkJaW50ZWxfYmJfZW1pdF9yZWxvYyhpYmIs IGliYi0+aGFuZGxlLA0KPiAgCQkJCSAgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSIHwNCj4gSTkx NV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLCAwLCBAQCAtMTE5NywxOCArMTI0MCwxMiBAQCB2b2lk DQo+IGdlbjEycDcxX3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwNCj4gIAkJ CSAgICAgIHN0cnVjdCBpbnRlbF9idWYgKmRzdCwNCj4gIAkJCSAgICAgIHVuc2lnbmVkIGludCBk c3RfeCwgdW5zaWduZWQgaW50IGRzdF95KSAgew0KPiAtCXN0cnVjdCBhdXhfcGd0YWJsZV9pbmZv IHBndGFibGVfaW5mbyA9IHsgfTsNCj4gLQ0KPiAtCWdlbjEyX2F1eF9wZ3RhYmxlX2luaXQoJnBn dGFibGVfaW5mbywgaWJiLCBzcmMsIGRzdCk7DQo+IC0NCj4gIAlfZ2VuOV9yZW5kZXJfb3AoaWJi LCBzcmMsIHNyY194LCBzcmNfeSwNCj4gIAkJCXdpZHRoLCBoZWlnaHQsIGRzdCwgZHN0X3gsIGRz dF95LA0KPiAtCQkJcGd0YWJsZV9pbmZvLnBndGFibGVfYnVmLA0KPiArCQkJTlVMTCwNCj4gIAkJ CU5VTEwsDQo+ICAJCQlnZW4xMnA3MV9yZW5kZXJfY29weSwNCj4gIAkJCXNpemVvZihnZW4xMnA3 MV9yZW5kZXJfY29weSkpOw0KPiAtDQo+IC0JZ2VuMTJfYXV4X3BndGFibGVfY2xlYW51cChpYmIs ICZwZ3RhYmxlX2luZm8pOw0KPiAgfQ0KPiANCj4gIHZvaWQgZ2VuMTJfcmVuZGVyX2NsZWFyZnVu YyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgQEAgLTEyMTcsMTYgKzEyNTQsMjQgQEANCj4gdm9pZCBn ZW4xMl9yZW5kZXJfY2xlYXJmdW5jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLA0KPiAgCQkJICAgIHVu c2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwNCj4gIAkJCSAgICBjb25zdCBm bG9hdCBjbGVhcl9jb2xvcls0XSkNCj4gIHsNCj4gLQlzdHJ1Y3QgYXV4X3BndGFibGVfaW5mbyBw Z3RhYmxlX2luZm8gPSB7IH07DQo+IC0NCj4gLQlnZW4xMl9hdXhfcGd0YWJsZV9pbml0KCZwZ3Rh YmxlX2luZm8sIGliYiwgTlVMTCwgZHN0KTsNCj4gLQ0KPiAtCV9nZW45X3JlbmRlcl9vcChpYmIs IE5VTEwsIDAsIDAsDQo+IC0JCSAgICAgICAgd2lkdGgsIGhlaWdodCwgZHN0LCBkc3RfeCwgZHN0 X3ksDQo+IC0JCSAgICAgICAgcGd0YWJsZV9pbmZvLnBndGFibGVfYnVmLA0KPiAtCQkgICAgICAg IGNsZWFyX2NvbG9yLA0KPiAtCQkgICAgICAgIGdlbjEyX3JlbmRlcl9jb3B5LA0KPiAtCQkgICAg ICAgIHNpemVvZihnZW4xMl9yZW5kZXJfY29weSkpOw0KPiAtDQo+IC0JZ2VuMTJfYXV4X3BndGFi bGVfY2xlYW51cChpYmIsICZwZ3RhYmxlX2luZm8pOw0KPiArCWlmICghSEFTXzRUSUxFKGliYi0+ ZGV2aWQpKSB7DQo+ICsJCXN0cnVjdCBhdXhfcGd0YWJsZV9pbmZvIHBndGFibGVfaW5mbyA9IHsg fTsNCj4gKw0KPiArCQlnZW4xMl9hdXhfcGd0YWJsZV9pbml0KCZwZ3RhYmxlX2luZm8sIGliYiwg TlVMTCwgZHN0KTsNCj4gKw0KPiArCQlfZ2VuOV9yZW5kZXJfb3AoaWJiLCBOVUxMLCAwLCAwLA0K PiArCQkJCXdpZHRoLCBoZWlnaHQsIGRzdCwgZHN0X3gsIGRzdF95LA0KPiArCQkJCXBndGFibGVf aW5mby5wZ3RhYmxlX2J1ZiwNCj4gKwkJCQljbGVhcl9jb2xvciwNCj4gKwkJCQlnZW4xMl9yZW5k ZXJfY29weSwNCj4gKwkJCQlzaXplb2YoZ2VuMTJfcmVuZGVyX2NvcHkpKTsNCj4gKwkJZ2VuMTJf YXV4X3BndGFibGVfY2xlYW51cChpYmIsICZwZ3RhYmxlX2luZm8pOw0KPiArCX0gZWxzZSB7DQo+ ICsJCQlfZ2VuOV9yZW5kZXJfb3AoaWJiLCBOVUxMLCAwLCAwLA0KPiArCQkJCQl3aWR0aCwgaGVp Z2h0LCBkc3QsIGRzdF94LCBkc3RfeSwNCj4gKwkJCQkJTlVMTCwNCj4gKwkJCQkJY2xlYXJfY29s b3IsDQo+ICsJCQkJCWdlbjEycDcxX3JlbmRlcl9jb3B5LA0KPiArCQkJCQlzaXplb2YoZ2VuMTJw NzFfcmVuZGVyX2NvcHkpKTsNCj4gKwl9DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9saWIvdmVib3hj b3B5X2dlbjEyLmMgYi9saWIvdmVib3hjb3B5X2dlbjEyLmMgaW5kZXgNCj4gMTc1NjQ0OTMuLmFh OTA5MzliIDEwMDY0NA0KPiAtLS0gYS9saWIvdmVib3hjb3B5X2dlbjEyLmMNCj4gKysrIGIvbGli L3ZlYm94Y29weV9nZW4xMi5jDQo+IEBAIC01MywxOSArNTMsMjUgQEAgc3RydWN0IHZlYm94X3N1 cmZhY2Vfc3RhdGUgew0KPiAgCQl1aW50MzJfdCB3aWR0aDoxNDsNCj4gIAkJdWludDMyX3QgaGVp Z2h0OjE0Ow0KPiAgCX0gc3MyOw0KPiAtCXN0cnVjdCB7DQo+ICsJdW5pb24gew0KPiArCQlzdHJ1 Y3Qgew0KPiAgI2RlZmluZSBWRUJPWF9USUxFX1dBTEtfWE1BSk9SIDANCj4gICNkZWZpbmUgVkVC T1hfVElMRV9XQUxLX1lNQUpPUiAxDQo+IC0JCXVpbnQzMl90IHRpbGVfd2FsazoxOw0KPiAtCQl1 aW50MzJfdCB0aWxlZF9zdXJmYWNlOjE7DQo+IC0JCXVpbnQzMl90IGNocm9tYV9oYWxmX3BpdGNo OjE7DQo+IC0JCXVpbnQzMl90IHN1cmZhY2VfcGl0Y2g6MTc7DQo+IC0JCXVpbnQzMl90IGNocm9t YV9pbnRlcmxlYXZlOjE7DQo+IC0JCXVpbnQzMl90IGxzYl9wYWNrZWRfZW5hYmxlOjE7DQo+IC0J CXVpbnQzMl90IGJheWVyX2lucHV0X2FsaWdubWVudDoyOw0KPiAtCQl1aW50MzJfdCBiYXllcl9w YXR0ZXJuX2Zvcm1hdDoxOw0KPiAtCQl1aW50MzJfdCBiYXllcl9wYXR0ZXJuX29mZnNldDoyOw0K PiAtCQl1aW50MzJfdCBzdXJmYWNlX2Zvcm1hdDo1Ow0KPiArCQkJdWludDMyX3QgdGlsZV93YWxr OjE7DQo+ICsJCQl1aW50MzJfdCB0aWxlZF9zdXJmYWNlOjE7DQo+ICsJCQl1aW50MzJfdCBjaHJv bWFfaGFsZl9waXRjaDoxOw0KPiArCQkJdWludDMyX3Qgc3VyZmFjZV9waXRjaDoxNzsNCj4gKwkJ CXVpbnQzMl90IGNocm9tYV9pbnRlcmxlYXZlOjE7DQo+ICsJCQl1aW50MzJfdCBsc2JfcGFja2Vk X2VuYWJsZToxOw0KPiArCQkJdWludDMyX3QgYmF5ZXJfaW5wdXRfYWxpZ25tZW50OjI7DQo+ICsJ CQl1aW50MzJfdCBiYXllcl9wYXR0ZXJuX2Zvcm1hdDoxOw0KPiArCQkJdWludDMyX3QgYmF5ZXJf cGF0dGVybl9vZmZzZXQ6MjsNCj4gKwkJCXVpbnQzMl90IHN1cmZhY2VfZm9ybWF0OjU7DQo+ICsJ CX0gdGdsOw0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJdWludDMyX3QgdGlsZV9tb2RlOjI7DQo+ICsJ CQl1aW50MzJfdCBwYWQwOjMwOw0KPiArCQl9IGRnMjsNCj4gIAl9IHNzMzsNCj4gIAlzdHJ1Y3Qg ew0KPiAgCQl1aW50MzJfdCB1X3lfb2Zmc2V0OjE1Ow0KPiBAQCAtODIsOSArODgsMTUgQEAgc3Ry dWN0IHZlYm94X3N1cmZhY2Vfc3RhdGUgew0KPiAgCQl1aW50MzJfdCBmcmFtZV94X29mZnNldDox NTsNCj4gIAkJdWludDMyX3QgcGFkOjI7DQo+ICAJfSBzczY7DQo+IC0Jc3RydWN0IHsNCj4gLQkJ dWludDMyX3QgZGVyaXZlZF9zdXJmYWNlX3BpdGNoOjE3Ow0KPiAtCQl1aW50MzJfdCBwYWQ6MTU7 DQo+ICsJdW5pb24gew0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJdWludDMyX3QgZGVyaXZlZF9zdXJm YWNlX3BpdGNoOjE3Ow0KPiArCQkJdWludDMyX3QgcGFkOjE1Ow0KPiArCQl9IHNrbDsNCj4gKwkJ c3RydWN0IHsNCj4gKwkJCXVpbnQzMl90IHBhZDoyNzsNCj4gKwkJCXVpbnQzMl90IGNvbXByZXNz aW9uX2Zvcm1hdDo1Ow0KPiArCQl9IGRnMjsNCj4gIAl9IHNzNzsNCj4gIAlzdHJ1Y3Qgew0KPiAg CQl1aW50MzJfdCBza2luX3Njb3JlX291dHB1dF9zdXJmYWNlX3BpdGNoOjE3Ow0KPiBAQCAtMTY2 LDE3ICsxNzgsNDYgQEAgc3RhdGljIHZvaWQgZW1pdF9zdXJmYWNlX3N0YXRlX2NtZChzdHJ1Y3Qg aW50ZWxfYmINCj4gKmliYiwNCj4gIAlzcy0+c3MyLmhlaWdodCA9IGhlaWdodCAtIDE7DQo+ICAJ c3MtPnNzMi53aWR0aCA9IHdpZHRoIC0gMTsNCj4gDQo+IC0Jc3MtPnNzMy5zdXJmYWNlX2Zvcm1h dCA9IGZvcm1hdDsNCj4gKwlzcy0+c3MzLnRnbC5zdXJmYWNlX2Zvcm1hdCA9IGZvcm1hdDsNCj4g IAlpZiAoZm9ybWF0X2lzX2ludGVybGVhdmVkX3l1dihmb3JtYXQpKQ0KPiAtCQlzcy0+c3MzLmNo cm9tYV9pbnRlcmxlYXZlID0gMTsNCj4gLQlzcy0+c3MzLnN1cmZhY2VfcGl0Y2ggPSBwaXRjaCAt IDE7DQo+IC0Jc3MtPnNzMy50aWxlX3dhbGsgPSAodGlsaW5nID09IEk5MTVfVElMSU5HX1kpIHx8 DQo+IC0JCQkgICAgKHRpbGluZyA9PSBJOTE1X1RJTElOR19ZZik7DQo+IC0Jc3MtPnNzMy50aWxl ZF9zdXJmYWNlID0gdGlsaW5nICE9IEk5MTVfVElMSU5HX05PTkU7DQo+ICsJCXNzLT5zczMudGds LmNocm9tYV9pbnRlcmxlYXZlID0gMTsNCj4gKwlzcy0+c3MzLnRnbC5zdXJmYWNlX3BpdGNoID0g cGl0Y2ggLSAxOw0KPiANCj4gIAlzcy0+c3M0LnVfeV9vZmZzZXQgPSB1dl9vZmZzZXQgLyBwaXRj aDsNCj4gDQo+IC0Jc3MtPnNzNy5kZXJpdmVkX3N1cmZhY2VfcGl0Y2ggPSBwaXRjaCAtIDE7DQo+ ICsJaWYgKEhBU19GTEFUQ0NTKGliYi0+ZGV2aWQpKSB7DQo+ICsJCS8qDQo+ICsJCSAqIGYtdGls ZSA9IDMgKFRpbGUgRikNCj4gKwkJICovDQo+ICsJCXNzLT5zczMuZGcyLnRpbGVfbW9kZSA9ICh0 aWxpbmcgIT0gSTkxNV9USUxJTkdfTk9ORSkgPyAzIDogMDsNCj4gKw0KPiArCQlzd2l0Y2ggKGZv cm1hdCkgew0KPiArCQljYXNlIFI4RzhCOEE4X1VOT1JNOg0KPiArCQkJc3MtPnNzNy5kZzIuY29t cHJlc3Npb25fZm9ybWF0ID0gMHhhOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgUExBTkFSXzQy MF84Og0KPiArCQkJc3MtPnNzNy5kZzIuY29tcHJlc3Npb25fZm9ybWF0ID0gMHhmOw0KPiArCQkJ YnJlYWs7DQo+ICsJCWNhc2UgUExBTkFSXzQyMF8xNjoNCj4gKwkJCXNzLT5zczcuZGcyLmNvbXBy ZXNzaW9uX2Zvcm1hdCA9IDg7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSBZQ1JDQl9OT1JNQUw6 DQo+ICsJCQlzcy0+c3M3LmRnMi5jb21wcmVzc2lvbl9mb3JtYXQgPSAzOw0KPiArCQkJYnJlYWs7 DQo+ICsJCWNhc2UgUEFDS0VEXzQ0NEFfODoNCj4gKwkJCXNzLT5zczcuZGcyLmNvbXByZXNzaW9u X2Zvcm1hdCA9IDB4OTsNCj4gKwkJCWJyZWFrOw0KPiArCQlkZWZhdWx0Og0KPiArCQkJaWd0X2Fz c2VydCgwKTsNCj4gKwkJfQ0KPiArCX0gZWxzZSB7DQo+ICsJCXNzLT5zczMudGdsLnRpbGVfd2Fs ayA9ICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkgfHwNCj4gKwkJCSh0aWxpbmcgPT0gSTkxNV9U SUxJTkdfWWYpIHx8DQo+ICsJCQkodGlsaW5nID09IEk5MTVfVElMSU5HXzQpOw0KPiArCQlzcy0+ c3MzLnRnbC50aWxlZF9zdXJmYWNlID0gdGlsaW5nICE9IEk5MTVfVElMSU5HX05PTkU7DQo+ICsJ fQ0KPiArDQo+ICsJc3MtPnNzNy5za2wuZGVyaXZlZF9zdXJmYWNlX3BpdGNoID0gcGl0Y2ggLSAx Ow0KPiANCj4gIAlpbnRlbF9iYl9wdHJfYWRkKGliYiwgc2l6ZW9mKCpzcykpOw0KPiAgfQ0KPiBA QCAtMjAzLDcgKzI0NCwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0X3RpbGluZ19jb252ZXJ0X2NtZChz dHJ1Y3QgaW50ZWxfYmINCj4gKmliYiwNCj4gIAkJdGMtPnRjMV8yLmlucHV0X2NvbXByZXNzaW9u X3R5cGUgPQ0KPiAgCQkJc3JjLT5jb21wcmVzc2lvbiA9PSBJOTE1X0NPTVBSRVNTSU9OX1JFTkRF UjsNCj4gIAl9DQo+IC0JdGMtPnRjMV8yLmlucHV0X3RpbGVkX3Jlc291cmNlX21vZGUgPSBzcmMt PnRpbGluZyA9PSBJOTE1X1RJTElOR19ZZjsNCj4gKw0KPiArCWlmIChIQVNfNFRJTEUoaWJiLT5k ZXZpZCkpDQo+ICsJCXRjLT50YzFfMi5pbnB1dF9tb2NzX2lkeCA9IDM7DQo+ICsJZWxzZQ0KPiAr CQl0Yy0+dGMxXzIuaW5wdXRfdGlsZWRfcmVzb3VyY2VfbW9kZSA9IHNyYy0+dGlsaW5nID09DQo+ IEk5MTVfVElMSU5HX1lmOw0KPiAgCXJlbG9jX2RlbHRhID0gdGMtPnRjMV8yX2w7DQo+IA0KPiAg CWlndF9hc3NlcnQoc3JjLT5hZGRyLm9mZnNldCA9PSBBTElHTihzcmMtPmFkZHIub2Zmc2V0LCAw eDEwMDApKTsgQEAgLQ0KPiAyMjAsNyArMjY1LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfdGlsaW5n X2NvbnZlcnRfY21kKHN0cnVjdCBpbnRlbF9iYiAqaWJiLA0KPiAgCQl0Yy0+dGMzXzQub3V0cHV0 X2NvbXByZXNzaW9uX3R5cGUgPQ0KPiAgCQkJZHN0LT5jb21wcmVzc2lvbiA9PSBJOTE1X0NPTVBS RVNTSU9OX1JFTkRFUjsNCj4gIAl9DQo+IC0JdGMtPnRjM180Lm91dHB1dF90aWxlZF9yZXNvdXJj ZV9tb2RlID0gZHN0LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWY7DQo+ICsNCj4gKwlpZiAoSEFT XzRUSUxFKGliYi0+ZGV2aWQpKQ0KPiArCQl0Yy0+dGMzXzQub3V0cHV0X21vY3NfaWR4ID0gMzsN Cj4gKwllbHNlDQo+ICsJCXRjLT50YzNfNC5vdXRwdXRfdGlsZWRfcmVzb3VyY2VfbW9kZSA9IGRz dC0+dGlsaW5nID09DQo+IEk5MTVfVElMSU5HX1lmOw0KPiArDQo+ICAJcmVsb2NfZGVsdGEgPSB0 Yy0+dGMzXzRfbDsNCj4gDQo+ICAJaWd0X2Fzc2VydChkc3QtPmFkZHIub2Zmc2V0ID09IEFMSUdO KGRzdC0+YWRkci5vZmZzZXQsIDB4MTAwMCkpOyBAQCAtDQo+IDI1NSwxMCArMzA1LDEyIEBAIHZv aWQgZ2VuMTJfdmVib3hfY29weWZ1bmMoc3RydWN0IGludGVsX2JiICppYmIsDQo+ICAJaW50ZWxf YmJfYWRkX2ludGVsX2J1ZihpYmIsIGRzdCwgdHJ1ZSk7DQo+ICAJaW50ZWxfYmJfYWRkX2ludGVs X2J1ZihpYmIsIHNyYywgZmFsc2UpOw0KPiANCj4gLQlpbnRlbF9iYl9wdHJfc2V0KGliYiwgQkFU Q0hfU1RBVEVfU1BMSVQpOw0KPiAtCWdlbjEyX2F1eF9wZ3RhYmxlX2luaXQoJmF1eF9wZ3RhYmxl X2luZm8sIGliYiwgc3JjLCBkc3QpOw0KPiAtCWF1eF9wZ3RhYmxlX3N0YXRlID0gZ2VuMTJfY3Jl YXRlX2F1eF9wZ3RhYmxlX3N0YXRlKGliYiwNCj4gLQ0KPiBhdXhfcGd0YWJsZV9pbmZvLnBndGFi bGVfYnVmKTsNCj4gKwlpZiAoIUhBU19GTEFUQ0NTKGliYi0+ZGV2aWQpKSB7DQo+ICsJCWludGVs X2JiX3B0cl9zZXQoaWJiLCBCQVRDSF9TVEFURV9TUExJVCk7DQo+ICsJCWdlbjEyX2F1eF9wZ3Rh YmxlX2luaXQoJmF1eF9wZ3RhYmxlX2luZm8sIGliYiwgc3JjLCBkc3QpOw0KPiArCQlhdXhfcGd0 YWJsZV9zdGF0ZSA9IGdlbjEyX2NyZWF0ZV9hdXhfcGd0YWJsZV9zdGF0ZShpYmIsDQo+ICsNCj4g YXV4X3BndGFibGVfaW5mby5wZ3RhYmxlX2J1Zik7DQo+ICsJfQ0KPiANCj4gIAlpbnRlbF9iYl9w dHJfc2V0KGliYiwgMCk7DQo+ICAJZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShpYmIsIGF1 eF9wZ3RhYmxlX3N0YXRlLCBmYWxzZSk7IEBAIC0NCj4gMzExLDUgKzM2Myw2IEBAIHZvaWQgZ2Vu MTJfdmVib3hfY29weWZ1bmMoc3RydWN0IGludGVsX2JiICppYmIsDQo+IA0KPiAgCWludGVsX2Ji X3Jlc2V0KGliYiwgZmFsc2UpOw0KPiANCj4gLQlnZW4xMl9hdXhfcGd0YWJsZV9jbGVhbnVwKGli YiwgJmF1eF9wZ3RhYmxlX2luZm8pOw0KPiArCWlmICghSEFTX0ZMQVRDQ1MoaWJiLT5kZXZpZCkp DQo+ICsJCWdlbjEyX2F1eF9wZ3RhYmxlX2NsZWFudXAoaWJiLCAmYXV4X3BndGFibGVfaW5mbyk7 DQo+ICB9DQo+IC0tDQo+IDIuMzYuMA0KDQo=