From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.9 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 588A3C433E0 for ; Wed, 23 Dec 2020 11:40:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 03AC02079A for ; Wed, 23 Dec 2020 11:40:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 03AC02079A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 99D7F6E0D4; Wed, 23 Dec 2020 11:40:44 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id DE4E36E0D4 for ; Wed, 23 Dec 2020 11:40:42 +0000 (UTC) IronPort-SDR: QUb9WJW/bNmRxKcUyurnPkVlWCWH7omvUqwLmA4mnXHbjW/ZWlEEzbNFR9jQFYsS714ECuTeYC 0UB9R7IHy7rg== X-IronPort-AV: E=McAfee;i="6000,8403,9843"; a="194450929" X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="194450929" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Dec 2020 03:40:41 -0800 IronPort-SDR: w3r/9283cPad1frEqjHtmFXyp+vLAEOL+UBCnYhwUU72p9/pGY0Xa8/onH1D6od3+BVja31eIS wD5OLaxb+Ccw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="373947775" Received: from irsmsx603.ger.corp.intel.com ([163.33.146.9]) by orsmga008.jf.intel.com with ESMTP; 23 Dec 2020 03:40:40 -0800 Received: from bgsmsx604.gar.corp.intel.com (10.67.234.6) by irsmsx603.ger.corp.intel.com (163.33.146.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 23 Dec 2020 11:40:38 +0000 Received: from bgsmsx604.gar.corp.intel.com ([10.67.234.6]) by BGSMSX604.gar.corp.intel.com ([10.67.234.6]) with mapi id 15.01.1713.004; Wed, 23 Dec 2020 17:10:37 +0530 From: "Gupta, Anshuman" To: "Mun, Gwan-gyeong" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [PATCH v8 1/2] drm/i915/display: Support PSR Multiple Instances Thread-Index: AQHW2SAl55qLe3m/h0eO3tkKgAeMjqoEjjTw Date: Wed, 23 Dec 2020 11:40:36 +0000 Message-ID: <5cf5c2356e9a4ee2a3315602e47e5304@intel.com> References: <20201223113803.873717-1-gwan-gyeong.mun@intel.com> In-Reply-To: <20201223113803.873717-1-gwan-gyeong.mun@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.5.1.3 dlp-reaction: no-action x-originating-ip: [10.223.10.1] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v8 1/2] drm/i915/display: Support PSR Multiple Instances X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Nikula, Jani" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR3dhbi1neWVvbmcgTXVu IDxnd2FuLWd5ZW9uZy5tdW5AaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIERlY2VtYmVy IDIzLCAyMDIwIDU6MDggUE0NCj4gVG86IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcN Cj4gQ2M6IEd1cHRhLCBBbnNodW1hbiA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPjsgTmlrdWxh LCBKYW5pDQo+IDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCB2OCAx LzJdIGRybS9pOTE1L2Rpc3BsYXk6IFN1cHBvcnQgUFNSIE11bHRpcGxlIEluc3RhbmNlcw0KPiAN Cj4gSXQgaXMgYSBwcmVsaW1pbmFyeSB3b3JrIGZvciBzdXBwb3J0aW5nIG11bHRpcGxlIEVEUCBQ U1IgYW5kDQo+IERQIFBhbmVsUmVwbGF5LiBBbmQgaXQgcmVmYWN0b3JzIHNpbmdsZXRvbiBQU1Ig dG8gTXVsdGkgVHJhbnNjb2Rlcg0KPiBzdXBwb3J0YWJsZSBQU1IuDQo+IEFuZCB0aGlzIG1vdmVz IGFuZCByZW5hbWVzIHRoZSBpOTE1X3BzciBzdHJ1Y3R1cmUgb2YgZHJtX2k5MTVfcHJpdmF0ZSdz DQo+IHRvDQo+IGludGVsX2RwJ3MgaW50ZWxfcHNyIHN0cnVjdHVyZS4NCj4gSXQgYWxzbyBjYXVz ZXMgY2hhbmdlcyBpbiBQU1IgaW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmUgZm9yIHN1cHBvcnRp bmcNCj4gbXVsdGlwbGUgdHJhbnNjb2RlcnMuIEJ1dCBpdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNj ZW5hcmlvIGFuZCB0aW1pbmcgb2YNCj4gZW5hYmxpbmcgYW5kIGRpc2FibGluZyBQU1IuIEFuZCBp dCBub3Qgc3VwcG9ydCBtdWx0aXBsZSBwaXBlcyB3aXRoDQo+IGEgc2luZ2xlIHRyYW5zY29kZXIg UFNSIGNhc2UgeWV0Lg0KPiANCj4gdjI6IEZpeCBpbmRlbnRhdGlvbiBhbmQgYWRkIGNvbW1lbnRz DQo+IHYzOiBSZW1vdmUgQmxhbmsgbGluZQ0KPiB2NDogUmViYXNlZA0KPiB2NTogUmViYXNlZCBh bmQgQWRkcmVzc2VkIEFuc2h1bWFuJ3MgcmV2aWV3IGNvbW1lbnQuDQo+ICAgICAtIE1vdmUgY2Fs bGluZyBvZiBpbnRlbF9wc3JfaW5pdCgpIHRvIGludGVsX2RwX2luaXRfY29ubmVjdG9yKCkNCj4g djY6IEFkZHJlc3MgQW5zaHVtYW4ncyByZXZpZXcgY29tbWVudHMNCj4gICAgLSBSZW1vdmUgd3Jv bmcgY29tbWVudHMgYW5kIGFkZCBjb21tZW50cyBmb3IgYSBsaW1pdCBvZiBzdXBwb3J0aW5nIG9m DQo+ICAgICAgYSBzaW5nbGUgcGlwZSBQU1INCj4gdjc6IFVwZGF0ZSBpbnRlbF9wc3JfY29tcHV0 ZV9jb25maWcoKSBmb3Igc3VwcG9ydGluZyBtdWx0aXBsZSB0cmFuc2NvZGVyDQo+ICAgICBQU1Ig b24gQkRXKw0KPiB2ODogQWRkcmVzcyBBbnNodW1hbidzIHJldmlldyBjb21tZW50cw0KPiAgICAt IFJlcGxhY2UgRFJNX0RFQlVHX0tNUyB3aXRoIGRybV9kYmdfa21zKCkgLyBEUk1fV0FSTiB3aXRo DQo+IGRybV93YXJuKCkNCj4gdjk6IEZpeCBjb21taXQgbWVzc2FnZQ0KPiANCj4gU2lnbmVkLW9m Zi1ieTogR3dhbi1neWVvbmcgTXVuIDxnd2FuLWd5ZW9uZy5tdW5AaW50ZWwuY29tPg0KPiBDYzog Sm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+IENjOiBKdWhh LVBla2thIEhlaWtraWxhIDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPg0KPiBDYzogQW5z aHVtYW4gR3VwdGEgPGFuc2h1bWFuLmd1cHRhQGludGVsLmNvbT4NCkxvb2tzIGdvb2QgdG8gbWUN ClJldmlld2VkLWJ5OiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPg0K PiAtLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8 ICAgMyArDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAg fCAgIDQgLQ0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMg IHwgMTExICsrLS0NCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMu aCAgICB8ICAzOCArKw0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5j ICAgICAgIHwgIDIzICstDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5jICAgICAgfCA1NzYgKysrKysrKysrKy0tLS0tLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3Bzci5oICAgICAgfCAgMTQgKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgICB8ICAgNiArLQ0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDM4IC0tDQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgICAgfCAgNDkgKy0NCj4gIDEwIGZpbGVzIGNo YW5nZWQsIDQ4NSBpbnNlcnRpb25zKCspLCAzNzcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0KPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMNCj4gaW5kZXggNjg2MzIzNmRmMWQw Li40Yjg3ZjcyY2I5YzAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGRpLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kZGkuYw0KPiBAQCAtNDMyMCw3ICs0MzIwLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV91 cGRhdGVfcGlwZV9kcChzdHJ1Y3QNCj4gaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gDQo+ ICAJaW50ZWxfZGRpX3NldF9kcF9tc2EoY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7DQo+IA0KPiAr CS8vVE9ETzogbW92ZSBQU1IgcmVsYXRlZCBmdW5jdGlvbnMgaW50byBpbnRlbF9wc3JfdXBkYXRl KCkNCj4gKwlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoaW50ZWxfZHAsIGNy dGNfc3RhdGUpOw0KPiAgCWludGVsX3Bzcl91cGRhdGUoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNv bm5fc3RhdGUpOw0KPiArDQo+ICAJaW50ZWxfZHBfc2V0X2luZm9mcmFtZXMoZW5jb2RlciwgdHJ1 ZSwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7DQo+ICAJaW50ZWxfZWRwX2RycnNfdXBkYXRlKGlu dGVsX2RwLCBjcnRjX3N0YXRlKTsNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+IGluZGV4IDc4NDUyZGU1ZTEyZi4uYTc1MzY0N2IwYmNi IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXku Yw0KPiBAQCAtMTU4NjksOCArMTU4NjksNiBAQCBzdGF0aWMgdm9pZCBjb21taXRfcGlwZV9jb25m aWcoc3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+IA0KPiAgCQlpZiAobmV3 X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQ0KPiAgCQkJaW50ZWxfcGlwZV9mYXN0c2V0KG9sZF9j cnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7DQo+IC0NCj4gLQkJaW50ZWxfcHNyMl9wcm9ncmFt X3RyYW5zX21hbl90cmtfY3RsKG5ld19jcnRjX3N0YXRlKTsNCj4gIAl9DQo+IA0KPiAgCWlmIChk ZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFya3MpDQo+IEBAIC0xNzgyOSw4 ICsxNzgyNyw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldHVwX291dHB1dHMoc3RydWN0DQo+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgCQlpbnRlbF9kdm9faW5pdChkZXZfcHJpdik7 DQo+ICAJfQ0KPiANCj4gLQlpbnRlbF9wc3JfaW5pdChkZXZfcHJpdik7DQo+IC0NCj4gIAlmb3Jf ZWFjaF9pbnRlbF9lbmNvZGVyKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7DQo+ICAJCWVuY29k ZXItPmJhc2UucG9zc2libGVfY3J0Y3MgPQ0KPiAgCQkJaW50ZWxfZW5jb2Rlcl9wb3NzaWJsZV9j cnRjcyhlbmNvZGVyKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jDQo+IGluZGV4IGNkN2U1NTE5ZWU3ZC4uMDQxMDUz MTY3ZDdmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXlfZGVidWdmcy5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMNCj4gQEAgLTI0OSwxOCArMjQ5LDE3IEBAIHN0YXRpYyBp bnQgaTkxNV9wc3Jfc2lua19zdGF0dXNfc2hvdyhzdHJ1Y3QNCj4gc2VxX2ZpbGUgKm0sIHZvaWQg KmRhdGEpDQo+ICAJCSJzaW5rIGludGVybmFsIGVycm9yIiwNCj4gIAl9Ow0KPiAgCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBtLT5wcml2YXRlOw0KPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5kZXYpOw0KPiAgCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAgPQ0KPiAgCQlpbnRlbF9hdHRhY2hlZF9kcCh0b19pbnRlbF9j b25uZWN0b3IoY29ubmVjdG9yKSk7DQo+ICAJaW50IHJldDsNCj4gDQo+IC0JaWYgKCFDQU5fUFNS KGRldl9wcml2KSkgew0KPiAtCQlzZXFfcHV0cyhtLCAiUFNSIFVuc3VwcG9ydGVkXG4iKTsNCj4g KwlpZiAoY29ubmVjdG9yLT5zdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpDQo+ ICAJCXJldHVybiAtRU5PREVWOw0KPiAtCX0NCj4gDQo+IC0JaWYgKGNvbm5lY3Rvci0+c3RhdHVz ICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQ0KPiArCWlmICghQ0FOX1BTUihpbnRlbF9k cCkpIHsNCj4gKwkJc2VxX3B1dHMobSwgIlBTUiBVbnN1cHBvcnRlZFxuIik7DQo+ICAJCXJldHVy biAtRU5PREVWOw0KPiArCX0NCj4gDQo+ICAJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZGIoJmludGVs X2RwLT5hdXgsIERQX1BTUl9TVEFUVVMsICZ2YWwpOw0KPiANCj4gQEAgLTI4MCwxMiArMjc5LDEz IEBAIHN0YXRpYyBpbnQgaTkxNV9wc3Jfc2lua19zdGF0dXNfc2hvdyhzdHJ1Y3QNCj4gc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpDQo+ICBERUZJTkVfU0hPV19BVFRSSUJVVEUoaTkxNV9wc3Jfc2lu a19zdGF0dXMpOw0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IC1wc3Jfc291cmNlX3N0YXR1cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkNCj4gK3Bz cl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBzZXFfZmls ZSAqbSkNCj4gIHsNCj4gIAl1MzIgdmFsLCBzdGF0dXNfdmFsOw0KPiAgCWNvbnN0IGNoYXIgKnN0 YXR1cyA9ICJ1bmtub3duIjsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gDQo+IC0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9l bmFibGVkKSB7DQo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ICAJCXN0 YXRpYyBjb25zdCBjaGFyICogY29uc3QgbGl2ZV9zdGF0dXNbXSA9IHsNCj4gIAkJCSJJRExFIiwN Cj4gIAkJCSJDQVBUVVJFIiwNCj4gQEAgLTMwMCw3ICszMDAsNyBAQCBwc3Jfc291cmNlX3N0YXR1 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAq bSkNCj4gIAkJCSJUR19PTiINCj4gIAkJfTsNCj4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwNCj4gLQkJCQkgICAgRURQX1BTUjJfU1RBVFVTKGRldl9wcml2LQ0KPiA+cHNyLnRyYW5z Y29kZXIpKTsNCj4gKwkJCQkgICAgRURQX1BTUjJfU1RBVFVTKGludGVsX2RwLQ0KPiA+cHNyLnRy YW5zY29kZXIpKTsNCj4gIAkJc3RhdHVzX3ZhbCA9ICh2YWwgJiBFRFBfUFNSMl9TVEFUVVNfU1RB VEVfTUFTSykgPj4NCj4gIAkJCSAgICAgIEVEUF9QU1IyX1NUQVRVU19TVEFURV9TSElGVDsNCj4g IAkJaWYgKHN0YXR1c192YWwgPCBBUlJBWV9TSVpFKGxpdmVfc3RhdHVzKSkNCj4gQEAgLTMxNyw3 ICszMTcsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAq ZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkNCj4gIAkJCSJTUkRFTlRfT04iLA0KPiAgCQl9 Ow0KPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCSAgICBFRFBfUFNS X1NUQVRVUyhkZXZfcHJpdi0NCj4gPnBzci50cmFuc2NvZGVyKSk7DQo+ICsJCQkJICAgIEVEUF9Q U1JfU1RBVFVTKGludGVsX2RwLQ0KPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gIAkJc3RhdHVzX3Zh bCA9ICh2YWwgJiBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLKSA+Pg0KPiAgCQkJICAgICAgRURQ X1BTUl9TVEFUVVNfU1RBVEVfU0hJRlQ7DQo+ICAJCWlmIChzdGF0dXNfdmFsIDwgQVJSQVlfU0la RShsaXZlX3N0YXR1cykpDQo+IEBAIC0zMjcsMjEgKzMyNywxOCBAQCBwc3Jfc291cmNlX3N0YXR1 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAq bSkNCj4gIAlzZXFfcHJpbnRmKG0sICJTb3VyY2UgUFNSIHN0YXR1czogJXMgWzB4JTA4eF1cbiIs IHN0YXR1cywgdmFsKTsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0 dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiArc3RhdGljIGludCBpbnRlbF9w c3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkN Cj4gIHsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5 MTUobS0+cHJpdmF0ZSk7DQo+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBz cjsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGlu dGVsX2RwKTsNCj4gKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsNCj4g IAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsNCj4gIAljb25zdCBjaGFyICpzdGF0dXM7DQo+ICAJ Ym9vbCBlbmFibGVkOw0KPiAgCXUzMiB2YWw7DQo+IA0KPiAtCWlmICghSEFTX1BTUihkZXZfcHJp dikpDQo+IC0JCXJldHVybiAtRU5PREVWOw0KPiAtDQo+ICAJc2VxX3ByaW50ZihtLCAiU2luayBz dXBwb3J0OiAlcyIsIHllc25vKHBzci0+c2lua19zdXBwb3J0KSk7DQo+IC0JaWYgKHBzci0+ZHAp DQo+IC0JCXNlcV9wcmludGYobSwgIiBbMHglMDJ4XSIsIHBzci0+ZHAtPnBzcl9kcGNkWzBdKTsN Cj4gKwlpZiAocHNyLT5zaW5rX3N1cHBvcnQpDQo+ICsJCXNlcV9wcmludGYobSwgIiBbMHglMDJ4 XSIsIGludGVsX2RwLT5wc3JfZHBjZFswXSk7DQo+ICAJc2VxX3B1dHMobSwgIlxuIik7DQo+IA0K PiAgCWlmICghcHNyLT5zaW5rX3N1cHBvcnQpDQo+IEBAIC0zNjUsMTYgKzM2MiwxNiBAQCBzdGF0 aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlDQo+ICptLCB2b2lkICpk YXRhKQ0KPiANCj4gIAlpZiAocHNyLT5wc3IyX2VuYWJsZWQpIHsNCj4gIAkJdmFsID0gaW50ZWxf ZGVfcmVhZChkZXZfcHJpdiwNCj4gLQkJCQkgICAgRURQX1BTUjJfQ1RMKGRldl9wcml2LQ0KPiA+ cHNyLnRyYW5zY29kZXIpKTsNCj4gKwkJCQkgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3Iu dHJhbnNjb2RlcikpOw0KPiAgCQllbmFibGVkID0gdmFsICYgRURQX1BTUjJfRU5BQkxFOw0KPiAg CX0gZWxzZSB7DQo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+IC0JCQkJICAg IEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOw0KPiArCQkJCSAgICBFRFBf UFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsNCj4gIAkJZW5hYmxlZCA9IHZhbCAm IEVEUF9QU1JfRU5BQkxFOw0KPiAgCX0NCj4gIAlzZXFfcHJpbnRmKG0sICJTb3VyY2UgUFNSIGN0 bDogJXMgWzB4JTA4eF1cbiIsDQo+ICAJCSAgIGVuYWJsZWRkaXNhYmxlZChlbmFibGVkKSwgdmFs KTsNCj4gLQlwc3Jfc291cmNlX3N0YXR1cyhkZXZfcHJpdiwgbSk7DQo+ICsJcHNyX3NvdXJjZV9z dGF0dXMoaW50ZWxfZHAsIG0pOw0KPiAgCXNlcV9wcmludGYobSwgIkJ1c3kgZnJvbnRidWZmZXIg Yml0czogMHglMDh4XG4iLA0KPiAgCQkgICBwc3ItPmJ1c3lfZnJvbnRidWZmZXJfYml0cyk7DQo+ IA0KPiBAQCAtMzgzLDcgKzM4MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sDQo+IHZvaWQgKmRhdGEpDQo+ICAJICovDQo+ICAJaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsNCj4gIAkJdmFsID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gLQkJCQkgICAgRURQX1BTUl9QRVJGX0NOVChkZXZf cHJpdi0NCj4gPnBzci50cmFuc2NvZGVyKSk7DQo+ICsJCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQo aW50ZWxfZHAtDQo+ID5wc3IudHJhbnNjb2RlcikpOw0KPiAgCQl2YWwgJj0gRURQX1BTUl9QRVJG X0NOVF9NQVNLOw0KPiAgCQlzZXFfcHJpbnRmKG0sICJQZXJmb3JtYW5jZSBjb3VudGVyOiAldVxu IiwgdmFsKTsNCj4gIAl9DQo+IEBAIC00MDQsNyArNDAxLDcgQEAgc3RhdGljIGludCBpOTE1X2Vk cF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwNCj4gdm9pZCAqZGF0YSkNCj4gIAkJICov DQo+ICAJCWZvciAoZnJhbWUgPSAwOyBmcmFtZSA8IFBTUjJfU1VfU1RBVFVTX0ZSQU1FUzsgZnJh bWUNCj4gKz0gMykgew0KPiAgCQkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gLQkJ CQkJICAgIFBTUjJfU1VfU1RBVFVTKGRldl9wcml2LQ0KPiA+cHNyLnRyYW5zY29kZXIsIGZyYW1l KSk7DQo+ICsJCQkJCSAgICBQU1IyX1NVX1NUQVRVUyhpbnRlbF9kcC0NCj4gPnBzci50cmFuc2Nv ZGVyLCBmcmFtZSkpOw0KPiAgCQkJc3VfZnJhbWVzX3ZhbFtmcmFtZSAvIDNdID0gdmFsOw0KPiAg CQl9DQo+IA0KPiBAQCAtNDMwLDIzICs0MjcsNTcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jf c3RhdHVzKHN0cnVjdCBzZXFfZmlsZQ0KPiAqbSwgdm9pZCAqZGF0YSkNCj4gIAlyZXR1cm4gMDsN Cj4gIH0NCj4gDQo+ICtzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQ0KPiArew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsNCj4gKwlzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcjsNCj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gTlVMTDsNCj4g Kw0KPiArCWlmICghSEFTX1BTUihkZXZfcHJpdikpDQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiAr DQo+ICsJLyogRmluZCB0aGUgZmlyc3QgRURQICovDQo+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRl dl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxf T1VUUFVUX0VEUCkgew0KPiArCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7 DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlmICghaW50ZWxfZHApDQo+ ICsJCXJldHVybiAtRU5PREVWOw0KPiArDQo+ICsJcmV0dXJuIGludGVsX3Bzcl9zdGF0dXMobSwg aW50ZWxfZHApOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgaW50DQo+ICBpOTE1X2VkcF9wc3JfZGVi dWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpDQo+ICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGF0YTsNCj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsNCj4g LQlpbnQgcmV0Ow0KPiArCWludCByZXQgPSAtRU5PREVWOw0KPiArCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyOw0KPiANCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiAtCQlyZXR1 cm4gLUVOT0RFVjsNCj4gKwlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQ0KPiArCQlyZXR1cm4gcmV0 Ow0KPiANCj4gLQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlNldHRpbmcgUFNSIGRlYnVn IHRvICVsbHhcbiIsIHZhbCk7DQo+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0s IGVuY29kZXIpIHsNCj4gKwkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRl bF9kcChlbmNvZGVyKTsNCj4gDQo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZk ZXZfcHJpdi0+cnVudGltZV9wbSk7DQo+ICsJCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpDQo+ICsJ CQljb250aW51ZTsNCj4gDQo+IC0JcmV0ID0gaW50ZWxfcHNyX2RlYnVnX3NldChkZXZfcHJpdiwg dmFsKTsNCj4gKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgew0KPiAr CQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJTZXR0aW5nIFBTUiBkZWJ1Zw0KPiB0byAl bGx4XG4iLCB2YWwpOw0KPiANCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2X3ByaXYtPnJ1 bnRpbWVfcG0sIHdha2VyZWYpOw0KPiArCQkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0 KCZkZXZfcHJpdi0NCj4gPnJ1bnRpbWVfcG0pOw0KPiArDQo+ICsJCQkvLyBUT0RPOiBzcGxpdCB0 byBlYWNoIHRyYW5zY29kZXIncyBQU1IgZGVidWcgc3RhdGUNCj4gKwkJCXJldCA9IGludGVsX3Bz cl9kZWJ1Z19zZXQoaW50ZWxfZHAsIHZhbCk7DQo+ICsNCj4gKwkJCWludGVsX3J1bnRpbWVfcG1f cHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwNCj4gd2FrZXJlZik7DQo+ICsJCX0NCj4gKwl9DQo+ IA0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+IEBAIC00NTUsMTIgKzQ4NiwyNSBAQCBzdGF0aWMg aW50DQo+ICBpOTE1X2VkcF9wc3JfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKQ0KPiAg ew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7DQo+ICsJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+IA0KPiAtCWlmICghQ0FOX1BTUihkZXZfcHJp dikpDQo+ICsJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkNCj4gIAkJcmV0dXJuIC1FTk9ERVY7DQo+ IA0KPiAtCSp2YWwgPSBSRUFEX09OQ0UoZGV2X3ByaXYtPnBzci5kZWJ1Zyk7DQo+IC0JcmV0dXJu IDA7DQo+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4g KwkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsN Cj4gKw0KPiArCQlpZiAoIUNBTl9QU1IoaW50ZWxfZHApKQ0KPiArCQkJY29udGludWU7DQo+ICsN Cj4gKwkJLy8gVE9ETzogc3BsaXQgdG8gZWFjaCB0cmFuc2NvZGVyJ3MgUFNSIGRlYnVnIHN0YXRl DQo+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsNCj4gKwkJCSp2 YWwgPSBSRUFEX09OQ0UoaW50ZWxfZHAtPnBzci5kZWJ1Zyk7DQo+ICsJCQlyZXR1cm4gMDsNCj4g KwkJfQ0KPiArCX0NCj4gKw0KPiArCXJldHVybiAtRU5PREVWOw0KPiAgfQ0KPiANCj4gIERFRklO RV9TSU1QTEVfQVRUUklCVVRFKGk5MTVfZWRwX3Bzcl9kZWJ1Z19mb3BzLA0KPiBAQCAtMTIzNCw5 ICsxMjc4LDYgQEAgc3RhdGljIHZvaWQgZHJyc19zdGF0dXNfcGVyX2NydGMoc3RydWN0IHNlcV9m aWxlDQo+ICptLA0KPiAgCQkvKiBkaXNhYmxlX2RycnMoKSB3aWxsIG1ha2UgZHJycy0+ZHAgTlVM TCAqLw0KPiAgCQlpZiAoIWRycnMtPmRwKSB7DQo+ICAJCQlzZXFfcHV0cyhtLCAiSWRsZW5lc3Mg RFJSUzogRGlzYWJsZWRcbiIpOw0KPiAtCQkJaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCkNCj4g LQkJCQlzZXFfcHV0cyhtLA0KPiAtCQkJCSJcdEFzIFBTUiBpcyBlbmFibGVkLCBEUlJTIGlzIG5v dA0KPiBlbmFibGVkXG4iKTsNCj4gIAkJCW11dGV4X3VubG9jaygmZHJycy0+bXV0ZXgpOw0KPiAg CQkJcmV0dXJuOw0KPiAgCQl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+IGluZGV4IDViYzViZmJjNDU1MS4uOTg5OWZk ZGY0Yzk5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXlfdHlwZXMuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBAQCAtMTMzOSw2ICsxMzM5LDQyIEBAIHN0cnVjdCBpbnRl bF9kcF9jb21wbGlhbmNlIHsNCj4gIAl1OCB0ZXN0X2xhbmVfY291bnQ7DQo+ICB9Ow0KPiANCj4g K3N0cnVjdCBpbnRlbF9wc3Igew0KPiArCS8qIE11dGV4IGZvciBQU1Igc3RhdGUgb2YgdGhlIHRy YW5zY29kZXIgKi8NCj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gKw0KPiArI2RlZmluZSBJOTE1 X1BTUl9ERUJVR19NT0RFX01BU0sJMHgwZg0KPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19ERUZB VUxUCQkweDAwDQo+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJCTB4MDENCj4gKyNk ZWZpbmUgSTkxNV9QU1JfREVCVUdfRU5BQkxFCQkweDAyDQo+ICsjZGVmaW5lIEk5MTVfUFNSX0RF QlVHX0ZPUkNFX1BTUjEJMHgwMw0KPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19JUlEJCTB4MTAN Cj4gKw0KPiArCXUzMiBkZWJ1ZzsNCj4gKwlib29sIHNpbmtfc3VwcG9ydDsNCj4gKwlib29sIGVu YWJsZWQ7DQo+ICsJZW51bSBwaXBlIHBpcGU7DQo+ICsJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29k ZXI7DQo+ICsJYm9vbCBhY3RpdmU7DQo+ICsJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7DQo+ICsJ dW5zaWduZWQgaW50IGJ1c3lfZnJvbnRidWZmZXJfYml0czsNCj4gKwlib29sIHNpbmtfcHNyMl9z dXBwb3J0Ow0KPiArCWJvb2wgbGlua19zdGFuZGJ5Ow0KPiArCWJvb2wgY29sb3JpbWV0cnlfc3Vw cG9ydDsNCj4gKwlib29sIHBzcjJfZW5hYmxlZDsNCj4gKwlib29sIHBzcjJfc2VsX2ZldGNoX2Vu YWJsZWQ7DQo+ICsJdTggc2lua19zeW5jX2xhdGVuY3k7DQo+ICsJa3RpbWVfdCBsYXN0X2VudHJ5 X2F0dGVtcHQ7DQo+ICsJa3RpbWVfdCBsYXN0X2V4aXQ7DQo+ICsJYm9vbCBzaW5rX25vdF9yZWxp YWJsZTsNCj4gKwlib29sIGlycV9hdXhfZXJyb3I7DQo+ICsJdTE2IHN1X3hfZ3JhbnVsYXJpdHk7 DQo+ICsJYm9vbCBkYzNjb19lbmFibGVkOw0KPiArCXUzMiBkYzNjb19leGl0X2RlbGF5Ow0KPiAr CXN0cnVjdCBkZWxheWVkX3dvcmsgZGMzY29fd29yazsNCj4gKwlzdHJ1Y3QgZHJtX2RwX3ZzY19z ZHAgdnNjOw0KPiArfTsNCj4gKw0KPiAgc3RydWN0IGludGVsX2RwIHsNCj4gIAlpOTE1X3JlZ190 IG91dHB1dF9yZWc7DQo+ICAJdTMyIERQOw0KPiBAQCAtMTQ2MCw2ICsxNDk2LDggQEAgc3RydWN0 IGludGVsX2RwIHsNCj4gDQo+ICAJYm9vbCBob2JsX2ZhaWxlZDsNCj4gIAlib29sIGhvYmxfYWN0 aXZlOw0KPiArDQo+ICsJc3RydWN0IGludGVsX3BzciBwc3I7DQo+ICB9Ow0KPiANCj4gIGVudW0g bHNwY29uX3ZlbmRvciB7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rw LmMNCj4gaW5kZXggYjJiYzBjOGMzOWM3Li41NzMwY2FkN2I2YWMgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMNCj4gQEAgLTI3MDIsMTIgKzI3MDIsMTAgQEAg dm9pZCBpbnRlbF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKHN0cnVjdA0KPiBpbnRlbF9kcCAqaW50 ZWxfZHAsDQo+ICAJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZQ0KPiAqY29u bl9zdGF0ZSwNCj4gIAkJCQkgIHN0cnVjdCBkcm1fZHBfdnNjX3NkcCAqdnNjKQ0KPiAgew0KPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHAp Ow0KPiAtDQo+ICAJdnNjLT5zZHBfdHlwZSA9IERQX1NEUF9WU0M7DQo+IA0KPiAtCWlmIChkZXZf cHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5jb2xvcmlt ZXRyeV9zdXBwb3J0ICYmDQo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ ICsJCWlmIChpbnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgJiYNCj4gIAkJICAgIGlu dGVsX2RwX25lZWRzX3ZzY19zZHAoY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSkpIHsNCj4gIAkJCS8q IFtQU1IyLCArQ29sb3JpbWV0cnldICovDQo+ICAJCQlpbnRlbF9kcF9jb21wdXRlX3ZzY19jb2xv cmltZXRyeShjcnRjX3N0YXRlLA0KPiBjb25uX3N0YXRlLA0KPiBAQCAtMzg0NCw3ICszODQyLDcg QEAgYm9vbCBpbnRlbF9kcF9pbml0aWFsX2Zhc3RzZXRfY2hlY2soc3RydWN0DQo+IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsDQo+ICAJCXJldHVybiBmYWxzZTsNCj4gIAl9DQo+IA0KPiAtCWlmIChD QU5fUFNSKGk5MTUpICYmIGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsNCj4gKwlpZiAoQ0FO X1BTUihpbnRlbF9kcCkgJiYgaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgew0KPiAgCQlkcm1f ZGJnX2ttcygmaTkxNS0+ZHJtLCAiRm9yY2luZyBmdWxsIG1vZGVzZXQgdG8NCj4gY29tcHV0ZSBQ U1Igc3RhdGVcbiIpOw0KPiAgCQljcnRjX3N0YXRlLT51YXBpLm1vZGVfY2hhbmdlZCA9IHRydWU7 DQo+ICAJCXJldHVybiBmYWxzZTsNCj4gQEAgLTgwNzAsNiArODA2OCwxNyBAQCBzdGF0aWMgdm9p ZA0KPiBpbnRlbF9kcF9tb2Rlc2V0X3JldHJ5X3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQ0KPiAgCWRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoY29ubmVjdG9yLT5kZXYpOw0K PiAgfQ0KPiANCj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX3VwZGF0ZV9waXBlKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiArCQkJCSBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwNCj4gKwkJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs DQo+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlDQo+ICpjb25uX3N0YXRl KQ0KPiArew0KPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAo ZW5jb2Rlcik7DQo+ICsNCj4gKwlpbnRlbF9wYW5lbF91cGRhdGVfYmFja2xpZ2h0KHN0YXRlLCBl bmNvZGVyLCBjcnRjX3N0YXRlLA0KPiBjb25uX3N0YXRlKTsNCj4gKwlpbnRlbF9wc3IyX3Byb2dy YW1fdHJhbnNfbWFuX3Rya19jdGwoaW50ZWxfZHAsIGNydGNfc3RhdGUpOw0KPiArfQ0KPiArDQo+ ICBib29sDQo+ICBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCwNCj4gIAkJCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5l Y3RvcikNCj4gQEAgLTgxODQsNiArODE5Myw4IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQNCj4gKmRpZ19wb3J0LA0KPiAgCQkJICAgICAgICh0ZW1w ICYgfjB4ZikgfCAweGQpOw0KPiAgCX0NCj4gDQo+ICsJaW50ZWxfcHNyX2luaXQoaW50ZWxfZHAp Ow0KPiArDQo+ICAJcmV0dXJuIHRydWU7DQo+IA0KPiAgZmFpbDoNCj4gQEAgLTgyMjUsNyArODIz Niw3IEBAIGJvb2wgaW50ZWxfZHBfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2 X3ByaXYsDQo+ICAJaW50ZWxfZW5jb2Rlci0+Z2V0X2NvbmZpZyA9IGludGVsX2RwX2dldF9jb25m aWc7DQo+ICAJaW50ZWxfZW5jb2Rlci0+c3luY19zdGF0ZSA9IGludGVsX2RwX3N5bmNfc3RhdGU7 DQo+ICAJaW50ZWxfZW5jb2Rlci0+aW5pdGlhbF9mYXN0c2V0X2NoZWNrID0NCj4gaW50ZWxfZHBf aW5pdGlhbF9mYXN0c2V0X2NoZWNrOw0KPiAtCWludGVsX2VuY29kZXItPnVwZGF0ZV9waXBlID0g aW50ZWxfcGFuZWxfdXBkYXRlX2JhY2tsaWdodDsNCj4gKwlpbnRlbF9lbmNvZGVyLT51cGRhdGVf cGlwZSA9IGludGVsX2RwX3VwZGF0ZV9waXBlOw0KPiAgCWludGVsX2VuY29kZXItPnN1c3BlbmQg PSBpbnRlbF9kcF9lbmNvZGVyX3N1c3BlbmQ7DQo+ICAJaW50ZWxfZW5jb2Rlci0+c2h1dGRvd24g PSBpbnRlbF9kcF9lbmNvZGVyX3NodXRkb3duOw0KPiAgCWlmIChJU19DSEVSUllWSUVXKGRldl9w cml2KSkgew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9wc3IuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4g aW5kZXggZDlhMzk1YzQ4NmQzLi5iYWRkZjYzNTQ3ZTcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0KPiBAQCAtNzksMTEgKzc5LDEzIEBADQo+ICAgKiB1 c2UgcGFnZSBmbGlwcy4NCj4gICAqLw0KPiANCj4gLXN0YXRpYyBib29sIHBzcl9nbG9iYWxfZW5h YmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkNCj4gK3N0YXRpYyBib29sIHBzcl9n bG9iYWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAtCXN3aXRj aCAoaTkxNS0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB7DQo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ ICsNCj4gKwlzd2l0Y2ggKGludGVsX2RwLT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19NT0RF X01BU0spIHsNCj4gIAljYXNlIEk5MTVfUFNSX0RFQlVHX0RFRkFVTFQ6DQo+IC0JCXJldHVybiBp OTE1LT5wYXJhbXMuZW5hYmxlX3BzcjsNCj4gKwkJcmV0dXJuIGRldl9wcml2LT5wYXJhbXMuZW5h YmxlX3BzcjsNCj4gIAljYXNlIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEU6DQo+ICAJCXJldHVybiBm YWxzZTsNCj4gIAlkZWZhdWx0Og0KPiBAQCAtOTEsOSArOTMsOSBAQCBzdGF0aWMgYm9vbCBwc3Jf Z2xvYmFsX2VuYWJsZWQoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpDQo+ICAJfQ0K PiAgfQ0KPiANCj4gLXN0YXRpYyBib29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiArc3RhdGljIGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxl ZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAtCXN3aXRjaCAoZGV2X3ByaXYt PnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgew0KPiArCXN3aXRjaCAoaW50 ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgew0KPiAgCWNhc2Ug STkxNV9QU1JfREVCVUdfRElTQUJMRToNCj4gIAljYXNlIEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BT UjE6DQo+ICAJCXJldHVybiBmYWxzZTsNCj4gQEAgLTEwMiwxMSArMTA0LDEyIEBAIHN0YXRpYyBi b29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQ0KPiAgCX0NCj4gIH0NCj4gDQo+IC1zdGF0aWMgdm9pZCBwc3JfaXJxX2NvbnRyb2woc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiArc3RhdGljIHZvaWQgcHNyX2lycV9j b250cm9sKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICB7DQo+ICAJZW51bSB0cmFuc2Nv ZGVyIHRyYW5zX3NoaWZ0Ow0KPiAgCXUzMiBtYXNrLCB2YWw7DQo+ICAJaTkxNV9yZWdfdCBpbXJf cmVnOw0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUo aW50ZWxfZHApOw0KPiANCj4gIAkvKg0KPiAgCSAqIGdlbjEyKyBoYXMgcmVnaXN0ZXJzIHJlbGF0 aXZlIHRvIHRyYW5zY29kZXIgYW5kIG9uZSBwZXINCj4gdHJhbnNjb2Rlcg0KPiBAQCAtMTE1LDE0 ICsxMTgsMTQgQEAgc3RhdGljIHZvaWQgcHNyX2lycV9jb250cm9sKHN0cnVjdA0KPiBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikNCj4gIAkgKi8NCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMikgew0KPiAgCQl0cmFuc19zaGlmdCA9IDA7DQo+IC0JCWltcl9yZWcgPSBUUkFOU19Q U1JfSU1SKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+ICsJCWltcl9yZWcgPSBUUkFOU19Q U1JfSU1SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7DQo+ICAJfSBlbHNlIHsNCj4gLQkJdHJh bnNfc2hpZnQgPSBkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXI7DQo+ICsJCXRyYW5zX3NoaWZ0ID0g aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOw0KPiAgCQlpbXJfcmVnID0gRURQX1BTUl9JTVI7DQo+ ICAJfQ0KPiANCj4gIAltYXNrID0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7DQo+IC0JaWYg KGRldl9wcml2LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19JUlEpDQo+ICsJaWYgKGludGVs X2RwLT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19JUlEpDQo+ICAJCW1hc2sgfD0gRURQX1BT Ul9QT1NUX0VYSVQodHJhbnNfc2hpZnQpIHwNCj4gIAkJCUVEUF9QU1JfUFJFX0VOVFJZKHRyYW5z X3NoaWZ0KTsNCj4gDQo+IEBAIC0xNzEsMzAgKzE3NCwzMSBAQCBzdGF0aWMgdm9pZCBwc3JfZXZl bnRfcHJpbnQoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsDQo+ICAJCWRybV9kYmdf a21zKCZpOTE1LT5kcm0sICJcdFBTUiBkaXNhYmxlZFxuIik7DQo+ICB9DQo+IA0KPiAtdm9pZCBp bnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzINCj4gcHNyX2lpcikNCj4gK3ZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIHUzMiBwc3JfaWlyKQ0KPiAgew0KPiAtCWVudW0gdHJhbnNjb2RlciBj cHVfdHJhbnNjb2RlciA9IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsNCj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gKwllbnVt IHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7DQo+ ICAJZW51bSB0cmFuc2NvZGVyIHRyYW5zX3NoaWZ0Ow0KPiAgCWk5MTVfcmVnX3QgaW1yX3JlZzsN Cj4gIAlrdGltZV90IHRpbWVfbnMgPSAga3RpbWVfZ2V0KCk7DQo+IA0KPiAgCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEyKSB7DQo+ICAJCXRyYW5zX3NoaWZ0ID0gMDsNCj4gLQkJaW1yX3Jl ZyA9IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsNCj4gKwkJaW1yX3Jl ZyA9IFRSQU5TX1BTUl9JTVIoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsNCj4gIAl9IGVsc2Ug ew0KPiAtCQl0cmFuc19zaGlmdCA9IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsNCj4gKwkJdHJh bnNfc2hpZnQgPSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7DQo+ICAJCWltcl9yZWcgPSBFRFBf UFNSX0lNUjsNCj4gIAl9DQo+IA0KPiAgCWlmIChwc3JfaWlyICYgRURQX1BTUl9QUkVfRU5UUlko dHJhbnNfc2hpZnQpKSB7DQo+IC0JCWRldl9wcml2LT5wc3IubGFzdF9lbnRyeV9hdHRlbXB0ID0g dGltZV9uczsNCj4gKwkJaW50ZWxfZHAtPnBzci5sYXN0X2VudHJ5X2F0dGVtcHQgPSB0aW1lX25z Ow0KPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gIAkJCSAgICAiW3RyYW5zY29k ZXIgJXNdIFBTUiBlbnRyeSBhdHRlbXB0IGluIDINCj4gdmJsYW5rc1xuIiwNCj4gIAkJCSAgICB0 cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5zY29kZXIpKTsNCj4gIAl9DQo+IA0KPiAgCWlmIChwc3Jf aWlyICYgRURQX1BTUl9QT1NUX0VYSVQodHJhbnNfc2hpZnQpKSB7DQo+IC0JCWRldl9wcml2LT5w c3IubGFzdF9leGl0ID0gdGltZV9uczsNCj4gKwkJaW50ZWxfZHAtPnBzci5sYXN0X2V4aXQgPSB0 aW1lX25zOw0KPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gIAkJCSAgICAiW3Ry YW5zY29kZXIgJXNdIFBTUiBleGl0IGNvbXBsZXRlZFxuIiwNCj4gIAkJCSAgICB0cmFuc2NvZGVy X25hbWUoY3B1X3RyYW5zY29kZXIpKTsNCj4gQEAgLTIwMiw3ICsyMDYsNyBAQCB2b2lkIGludGVs X3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiBwc3JfaWlyKQ0KPiAgCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7DQo+ICAJCQl1 MzIgdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gDQo+IAlQU1JfRVZFTlQoY3B1X3Ry YW5zY29kZXIpKTsNCj4gLQkJCWJvb2wgcHNyMl9lbmFibGVkID0gZGV2X3ByaXYtPnBzci5wc3Iy X2VuYWJsZWQ7DQo+ICsJCQlib29sIHBzcjJfZW5hYmxlZCA9IGludGVsX2RwLT5wc3IucHNyMl9l bmFibGVkOw0KPiANCj4gIAkJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LA0KPiBQU1JfRVZFTlQo Y3B1X3RyYW5zY29kZXIpLA0KPiAgCQkJCSAgICAgICB2YWwpOw0KPiBAQCAtMjE2LDcgKzIyMCw3 IEBAIHZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpDQo+ICAJCWRybV93YXJuKCZkZXZfcHJpdi0+ZHJtLCAi W3RyYW5zY29kZXIgJXNdIFBTUiBhdXgNCj4gZXJyb3JcbiIsDQo+ICAJCQkgdHJhbnNjb2Rlcl9u YW1lKGNwdV90cmFuc2NvZGVyKSk7DQo+IA0KPiAtCQlkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJy b3IgPSB0cnVlOw0KPiArCQlpbnRlbF9kcC0+cHNyLmlycV9hdXhfZXJyb3IgPSB0cnVlOw0KPiAN Cj4gIAkJLyoNCj4gIAkJICogSWYgdGhpcyBpbnRlcnJ1cHRpb24gaXMgbm90IG1hc2tlZCBpdCB3 aWxsIGtlZXANCj4gQEAgLTIzMCw3ICsyMzQsNyBAQCB2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxl cihzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwc3JfaWlyKQ0KPiAg CQl2YWwgfD0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7DQo+ICAJCWludGVsX2RlX3dyaXRl KGRldl9wcml2LCBpbXJfcmVnLCB2YWwpOw0KPiANCj4gLQkJc2NoZWR1bGVfd29yaygmZGV2X3By aXYtPnBzci53b3JrKTsNCj4gKwkJc2NoZWR1bGVfd29yaygmaW50ZWxfZHAtPnBzci53b3JrKTsN Cj4gIAl9DQo+ICB9DQo+IA0KPiBAQCAtMjkxLDEyICsyOTUsNiBAQCB2b2lkIGludGVsX3Bzcl9p bml0X2RwY2Qoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCkNCj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiAgCQl0b19pOTE1KGRwX3RvX2RpZ19wb3J0KGludGVs X2RwKS0+YmFzZS5iYXNlLmRldik7DQo+IA0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLmRwKSB7DQo+ IC0JCWRybV93YXJuKCZkZXZfcHJpdi0+ZHJtLA0KPiAtCQkJICJNb3JlIHRoYW4gb25lIGVEUCBw YW5lbCBmb3VuZCwgUFNSIHN1cHBvcnQNCj4gc2hvdWxkIGJlIGV4dGVuZGVkXG4iKTsNCj4gLQkJ cmV0dXJuOw0KPiAtCX0NCj4gLQ0KPiAgCWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgs IERQX1BTUl9TVVBQT1JULCBpbnRlbF9kcC0NCj4gPnBzcl9kcGNkLA0KPiAgCQkJIHNpemVvZihp bnRlbF9kcC0+cHNyX2RwY2QpKTsNCj4gDQo+IEBAIC0zMTcsMTIgKzMxNSwxMCBAQCB2b2lkIGlu dGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCkNCj4gIAkJcmV0 dXJuOw0KPiAgCX0NCj4gDQo+IC0JZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQgPSB0cnVlOw0K PiAtCWRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQ0KPiArCWludGVsX2RwLT5wc3Iu c2lua19zdXBwb3J0ID0gdHJ1ZTsNCj4gKwlpbnRlbF9kcC0+cHNyLnNpbmtfc3luY19sYXRlbmN5 ID0NCj4gIAkJaW50ZWxfZHBfZ2V0X3Npbmtfc3luY19sYXRlbmN5KGludGVsX2RwKTsNCj4gDQo+ IC0JZGV2X3ByaXYtPnBzci5kcCA9IGludGVsX2RwOw0KPiAtDQo+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSAmJg0KPiAgCSAgICAoaW50ZWxfZHAtPnBzcl9kcGNkWzBdID09DQo+IERQ X1BTUjJfV0lUSF9ZX0NPT1JEX0lTX1NVUFBPUlRFRCkpIHsNCj4gIAkJYm9vbCB5X3JlcSA9IGlu dGVsX2RwLT5wc3JfZHBjZFsxXSAmDQo+IEBAIC0zNDAsMTQgKzMzNiwxNCBAQCB2b2lkIGludGVs X3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCkNCj4gIAkJICogWS1j b29yZGluYXRlIHJlcXVpcmVtZW50IHBhbmVscyB3ZSB3b3VsZCBuZWVkIHRvDQo+IGVuYWJsZQ0K PiAgCQkgKiBHVEMgZmlyc3QuDQo+ICAJCSAqLw0KPiAtCQlkZXZfcHJpdi0+cHNyLnNpbmtfcHNy Ml9zdXBwb3J0ID0geV9yZXEgJiYgYWxwbTsNCj4gKwkJaW50ZWxfZHAtPnBzci5zaW5rX3BzcjJf c3VwcG9ydCA9IHlfcmVxICYmIGFscG07DQo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJt LCAiUFNSMiAlc3N1cHBvcnRlZFxuIiwNCj4gLQkJCSAgICBkZXZfcHJpdi0+cHNyLnNpbmtfcHNy Ml9zdXBwb3J0ID8gIiIgOiAibm90ICIpOw0KPiArCQkJICAgIGludGVsX2RwLT5wc3Iuc2lua19w c3IyX3N1cHBvcnQgPyAiIiA6ICJub3QgIik7DQo+IA0KPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5z aW5rX3BzcjJfc3VwcG9ydCkgew0KPiAtCQkJZGV2X3ByaXYtPnBzci5jb2xvcmltZXRyeV9zdXBw b3J0ID0NCj4gKwkJaWYgKGludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsNCj4gKwkJ CWludGVsX2RwLT5wc3IuY29sb3JpbWV0cnlfc3VwcG9ydCA9DQo+ICAJCQkJaW50ZWxfZHBfZ2V0 X2NvbG9yaW1ldHJ5X3N0YXR1cyhpbnRlbF9kcCk7DQo+IC0JCQlkZXZfcHJpdi0+cHNyLnN1X3hf Z3JhbnVsYXJpdHkgPQ0KPiArCQkJaW50ZWxfZHAtPnBzci5zdV94X2dyYW51bGFyaXR5ID0NCj4g IAkJCQlpbnRlbF9kcF9nZXRfc3VfeF9ncmFudWxhcnRpeShpbnRlbF9kcCk7DQo+ICAJCX0NCj4g IAl9DQo+IEBAIC0zNzMsNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9zZXR1cF9hdXgo c3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCkNCj4gIAlCVUlMRF9CVUdfT04oc2l6ZW9mKGF1 eF9tc2cpID4gMjApOw0KPiAgCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoYXV4X21zZyk7IGkgKz0g NCkNCj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+IC0JCQkgICAgICAgRURQX1BTUl9B VVhfREFUQShkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIsDQo+IGkgPj4gMiksDQo+ICsJCQkgICAg ICAgRURQX1BTUl9BVVhfREFUQShpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIsIGkNCj4gPj4gMiks DQo+ICAJCQkgICAgICAgaW50ZWxfZHBfcGFja19hdXgoJmF1eF9tc2dbaV0sDQo+IHNpemVvZihh dXhfbXNnKSAtIGkpKTsNCj4gDQo+ICAJYXV4X2Nsb2NrX2RpdmlkZXIgPSBpbnRlbF9kcC0+Z2V0 X2F1eF9jbG9ja19kaXZpZGVyKGludGVsX2RwLCAwKTsNCj4gQEAgLTM4NCw3ICszODAsNyBAQCBz dGF0aWMgdm9pZCBoc3dfcHNyX3NldHVwX2F1eChzdHJ1Y3QgaW50ZWxfZHANCj4gKmludGVsX2Rw KQ0KPiANCj4gIAkvKiBTZWxlY3Qgb25seSB2YWxpZCBiaXRzIGZvciBTUkRfQVVYX0NUTCAqLw0K PiAgCWF1eF9jdGwgJj0gcHNyX2F1eF9tYXNrOw0KPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBFRFBfUFNSX0FVWF9DVEwoZGV2X3ByaXYtDQo+ID5wc3IudHJhbnNjb2RlciksDQo+ICsJaW50 ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1JfQVVYX0NUTChpbnRlbF9kcC0NCj4gPnBzci50 cmFuc2NvZGVyKSwNCj4gIAkJICAgICAgIGF1eF9jdGwpOw0KPiAgfQ0KPiANCj4gQEAgLTM5NCwx NCArMzkwLDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50 ZWxfZHANCj4gKmludGVsX2RwKQ0KPiAgCXU4IGRwY2RfdmFsID0gRFBfUFNSX0VOQUJMRTsNCj4g DQo+ICAJLyogRW5hYmxlIEFMUE0gYXQgc2luayBmb3IgcHNyMiAqLw0KPiAtCWlmIChkZXZfcHJp di0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxl ZCkgew0KPiAgCQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsDQo+IERQX1JFQ0VJ VkVSX0FMUE1fQ09ORklHLA0KPiAgCQkJCSAgIERQX0FMUE1fRU5BQkxFIHwNCj4gDQo+IERQX0FM UE1fTE9DS19FUlJPUl9JUlFfSFBEX0VOQUJMRSk7DQo+IA0KPiAgCQlkcGNkX3ZhbCB8PSBEUF9Q U1JfRU5BQkxFX1BTUjIgfA0KPiBEUF9QU1JfSVJRX0hQRF9XSVRIX0NSQ19FUlJPUlM7DQo+ICAJ fSBlbHNlIHsNCj4gLQkJaWYgKGRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5KQ0KPiArCQlpZiAo aW50ZWxfZHAtPnBzci5saW5rX3N0YW5kYnkpDQo+ICAJCQlkcGNkX3ZhbCB8PSBEUF9QU1JfTUFJ Tl9MSU5LX0FDVElWRTsNCj4gDQo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpDQo+ IEBAIC00NjQsNyArNDYwLDcgQEAgc3RhdGljIHU4IHBzcl9jb21wdXRlX2lkbGVfZnJhbWVzKHN0 cnVjdCBpbnRlbF9kcA0KPiAqaW50ZWxfZHApDQo+ICAJICogb2ZmLWJ5LW9uZSBpc3N1ZSB0aGF0 IEhXIGhhcyBpbiBzb21lIGNhc2VzLg0KPiAgCSAqLw0KPiAgCWlkbGVfZnJhbWVzID0gbWF4KDYs IGRldl9wcml2LT52YnQucHNyLmlkbGVfZnJhbWVzKTsNCj4gLQlpZGxlX2ZyYW1lcyA9IG1heChp ZGxlX2ZyYW1lcywgZGV2X3ByaXYtPnBzci5zaW5rX3N5bmNfbGF0ZW5jeSArDQo+IDEpOw0KPiAr CWlkbGVfZnJhbWVzID0gbWF4KGlkbGVfZnJhbWVzLCBpbnRlbF9kcC0+cHNyLnNpbmtfc3luY19s YXRlbmN5ICsNCj4gMSk7DQo+IA0KPiAgCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwg aWRsZV9mcmFtZXMgPiAweGYpKQ0KPiAgCQlpZGxlX2ZyYW1lcyA9IDB4ZjsNCj4gQEAgLTQ4NCw3 ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHAN Cj4gKmludGVsX2RwKQ0KPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkNCj4gIAkJdmFsIHw9 IEVEUF9QU1JfTUlOX0xJTktfRU5UUllfVElNRV84X0xJTkVTOw0KPiANCj4gLQlpZiAoZGV2X3By aXYtPnBzci5saW5rX3N0YW5kYnkpDQo+ICsJaWYgKGludGVsX2RwLT5wc3IubGlua19zdGFuZGJ5 KQ0KPiAgCQl2YWwgfD0gRURQX1BTUl9MSU5LX1NUQU5EQlk7DQo+IA0KPiAgCXZhbCB8PSBpbnRl bF9wc3IxX2dldF90cF90aW1lKGludGVsX2RwKTsNCj4gQEAgLTQ5Miw5ICs0ODgsOSBAQCBzdGF0 aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHANCj4gKmludGVsX2RwKQ0K PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpDQo+ICAJCXZhbCB8PSBFRFBfUFNSX0NS Q19FTkFCTEU7DQo+IA0KPiAtCXZhbCB8PSAoaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BT Ul9DVEwoZGV2X3ByaXYtDQo+ID5wc3IudHJhbnNjb2RlcikpICYNCj4gKwl2YWwgfD0gKGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGludGVsX2RwLQ0KPiA+cHNyLnRyYW5zY29k ZXIpKSAmDQo+ICAJCUVEUF9QU1JfUkVTVE9SRV9QU1JfQUNUSVZFX0NUWF9NQVNLKTsNCj4gLQlp bnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2Nv ZGVyKSwNCj4gdmFsKTsNCj4gKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwNCj4gdmFsKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMg dTMyIGludGVsX3BzcjJfZ2V0X3RwX3RpbWUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4g QEAgLTUyOSw3ICs1MjUsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3Qg aW50ZWxfZHANCj4gKmludGVsX2RwKQ0KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEw IHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQ0KPiAgCQl2YWwgfD0gRURQX1lfQ09PUkRJTkFU RV9FTkFCTEU7DQo+IA0KPiAtCXZhbCB8PSBFRFBfUFNSMl9GUkFNRV9CRUZPUkVfU1UoZGV2X3By aXYtDQo+ID5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsNCj4gKwl2YWwgfD0gRURQX1BTUjJf RlJBTUVfQkVGT1JFX1NVKGludGVsX2RwLQ0KPiA+cHNyLnNpbmtfc3luY19sYXRlbmN5ICsgMSk7 DQo+ICAJdmFsIHw9IGludGVsX3BzcjJfZ2V0X3RwX3RpbWUoaW50ZWxfZHApOw0KPiANCj4gIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgew0KPiBAQCAtNTQ4LDcgKzU0NCw3IEBAIHN0 YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcA0KPiAqaW50ZWxfZHAp DQo+ICAJCXZhbCB8PSBFRFBfUFNSMl9GQVNUX1dBS0UoNyk7DQo+ICAJfQ0KPiANCj4gLQlpZiAo ZGV2X3ByaXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkKSB7DQo+ICsJaWYgKGludGVsX2Rw LT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkgew0KPiAgCQkvKiBXQSAxNDA4MzMwODQ3ICov DQo+ICAJCWlmIChJU19UR0xfRElTUF9SRVZJRChkZXZfcHJpdiwgVEdMX1JFVklEX0EwLA0KPiBU R0xfUkVWSURfQTApIHx8DQo+ICAJCSAgICBJU19SS0xfUkVWSUQoZGV2X3ByaXYsIFJLTF9SRVZJ RF9BMCwgUktMX1JFVklEX0EwKSkNCj4gQEAgLTU1NywyMCArNTUzLDIwIEBAIHN0YXRpYyB2b2lk IGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcA0KPiAqaW50ZWxfZHApDQo+ICAJCQkJ ICAgICBESVNfUkFNX0JZUEFTU19QU1IyX01BTl9UUkFDSyk7DQo+IA0KPiAgCQlpbnRlbF9kZV93 cml0ZShkZXZfcHJpdiwNCj4gLQkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMKGRldl9wcml2LT5w c3IudHJhbnNjb2RlciksDQo+ICsJCQkgICAgICAgUFNSMl9NQU5fVFJLX0NUTChpbnRlbF9kcC0+ cHNyLnRyYW5zY29kZXIpLA0KPiAgCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVExfRU5BQkxFKTsN Cj4gIAl9IGVsc2UgaWYgKEhBU19QU1IyX1NFTF9GRVRDSChkZXZfcHJpdikpIHsNCj4gIAkJaW50 ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+IC0JCQkgICAgICAgUFNSMl9NQU5fVFJLX0NUTChkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXIpLA0KPiAwKTsNCj4gKwkJCSAgICAgICBQU1IyX01BTl9UUktf Q1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksDQo+IDApOw0KPiAgCX0NCj4gDQo+ICAJLyoN Cj4gIAkgKiBQU1IyIEhXIGlzIGluY29ycmVjdGx5IHVzaW5nIEVEUF9QU1JfVFAxX1RQM19TRUwg YW5kIEJTcGVjIGlzDQo+ICAJICogcmVjb21tZW5kaW5nIGtlZXAgdGhpcyBiaXQgdW5zZXQgd2hp bGUgUFNSMiBpcyBlbmFibGVkLg0KPiAgCSAqLw0KPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLA0KPiAwKTsNCj4gKwlpbnRl bF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVy KSwNCj4gMCk7DQo+IA0KPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSMl9DVEwo ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwNCj4gdmFsKTsNCj4gKwlpbnRlbF9kZV93cml0ZShk ZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksDQo+IHZhbCk7 DQo+ICB9DQo+IA0KPiAgc3RhdGljIGJvb2wNCj4gQEAgLTU5Myw1NSArNTg5LDU4IEBAIHN0YXRp YyB1MzIgaW50ZWxfZ2V0X2ZyYW1lX3RpbWVfdXMoY29uc3Qgc3RydWN0DQo+IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSkNCj4gIAkJCSAgICBkcm1fbW9kZV92cmVmcmVzaCgmY3N0YXRlLQ0KPiA+ aHcuYWRqdXN0ZWRfbW9kZSkpOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyB2b2lkIHBzcjJfcHJvZ3Jh bV9pZGxlX2ZyYW1lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICtzdGF0 aWMgdm9pZCBwc3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwNCj4gIAkJCQkgICAgIHUzMiBpZGxlX2ZyYW1lcykNCj4gIHsNCj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gIAl1MzIgdmFs Ow0KPiANCj4gIAlpZGxlX2ZyYW1lcyA8PD0gIEVEUF9QU1IyX0lETEVfRlJBTUVfU0hJRlQ7DQo+ IC0JdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGRldl9wcml2LQ0K PiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gKwl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBF RFBfUFNSMl9DVEwoaW50ZWxfZHAtDQo+ID5wc3IudHJhbnNjb2RlcikpOw0KPiAgCXZhbCAmPSB+ RURQX1BTUjJfSURMRV9GUkFNRV9NQVNLOw0KPiAgCXZhbCB8PSBpZGxlX2ZyYW1lczsNCj4gLQlp bnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNj b2RlciksDQo+IHZhbCk7DQo+ICsJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NU TChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLA0KPiB2YWwpOw0KPiAgfQ0KPiANCj4gLXN0YXRp YyB2b2lkIHRnbF9wc3IyX2VuYWJsZV9kYzNjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpDQo+ICtzdGF0aWMgdm9pZCB0Z2xfcHNyMl9lbmFibGVfZGMzY28oc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkNCj4gIHsNCj4gLQlwc3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoZGV2X3By aXYsIDApOw0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOw0KPiArDQo+ICsJcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKGludGVsX2Rw LCAwKTsNCj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90YXJnZXRfZGNfc3RhdGUoZGV2X3By aXYsDQo+IERDX1NUQVRFX0VOX0RDM0NPKTsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgdm9pZCB0Z2xf cHNyMl9kaXNhYmxlX2RjM2NvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4g K3N0YXRpYyB2b2lkIHRnbF9wc3IyX2Rpc2FibGVfZGMzY28oc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBz ci5kcDsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1 KGludGVsX2RwKTsNCj4gDQo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9zZXRfdGFyZ2V0X2RjX3N0 YXRlKGRldl9wcml2LA0KPiBEQ19TVEFURV9FTl9VUFRPX0RDNik7DQo+IC0JcHNyMl9wcm9ncmFt X2lkbGVfZnJhbWVzKGRldl9wcml2LA0KPiBwc3JfY29tcHV0ZV9pZGxlX2ZyYW1lcyhpbnRlbF9k cCkpOw0KPiArCXBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCwNCj4gcHNyX2NvbXB1 dGVfaWRsZV9mcmFtZXMoaW50ZWxfZHApKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCB0Z2xf ZGMzY29fZGlzYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gIHsNCj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiAtCQljb250YWluZXJfb2Yod29y aywgdHlwZW9mKCpkZXZfcHJpdiksDQo+IHBzci5kYzNjb193b3JrLndvcmspOw0KPiArCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAgPQ0KPiArCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpp bnRlbF9kcCksDQo+IHBzci5kYzNjb193b3JrLndvcmspOw0KPiANCj4gLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cHNyLmxvY2spOw0KPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7 DQo+ICAJLyogSWYgZGVsYXllZCB3b3JrIGlzIHBlbmRpbmcsIGl0IGlzIG5vdCBpZGxlICovDQo+ IC0JaWYgKGRlbGF5ZWRfd29ya19wZW5kaW5nKCZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmspKQ0K PiArCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmaW50ZWxfZHAtPnBzci5kYzNjb193b3JrKSkN Cj4gIAkJZ290byB1bmxvY2s7DQo+IA0KPiAtCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oZGV2X3By aXYpOw0KPiArCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oaW50ZWxfZHApOw0KPiAgdW5sb2NrOg0K PiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwltdXRleF91bmxvY2so JmludGVsX2RwLT5wc3IubG9jayk7DQo+ICB9DQo+IA0KPiAtc3RhdGljIHZvaWQgdGdsX2Rpc2Fs bG93X2RjM2NvX29uX3BzcjJfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3By aXYpDQo+ICtzdGF0aWMgdm9pZCB0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICB7DQo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmRjM2Nv X2VuYWJsZWQpDQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmRjM2NvX2VuYWJsZWQpDQo+ICAJCXJl dHVybjsNCj4gDQo+IC0JY2FuY2VsX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnBzci5kYzNjb193 b3JrKTsNCj4gKwljYW5jZWxfZGVsYXllZF93b3JrKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmsp Ow0KPiAgCS8qIEJlZm9yZSBQU1IyIGV4aXQgZGlzYWxsb3cgZGMzY28qLw0KPiAtCXRnbF9wc3Iy X2Rpc2FibGVfZGMzY28oZGV2X3ByaXYpOw0KPiArCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oaW50 ZWxfZHApOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IEBAIC03MTQsNyArNzEzLDcgQEAg c3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdfdmFsaWQoc3RydWN0IGludGVsX2RwDQo+ICpp bnRlbF9kcCwNCj4gIAlpbnQgY3J0Y192ZGlzcGxheSA9IGNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUuY3J0Y192ZGlzcGxheTsNCj4gIAlpbnQgcHNyX21heF9oID0gMCwgcHNyX21heF92ID0g MCwgbWF4X2JwcCA9IDA7DQo+IA0KPiAtCWlmICghZGV2X3ByaXYtPnBzci5zaW5rX3BzcjJfc3Vw cG9ydCkNCj4gKwlpZiAoIWludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpDQo+ICAJCXJl dHVybiBmYWxzZTsNCj4gDQo+ICAJaWYgKCF0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBj cnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcikpIHsNCj4gQEAgLTcyNCw3ICs3MjMsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxfZHANCj4gKmludGVs X2RwLA0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+ICAJfQ0KPiANCj4gLQlpZiAoIXBzcjJfZ2xvYmFs X2VuYWJsZWQoZGV2X3ByaXYpKSB7DQo+ICsJaWYgKCFwc3IyX2dsb2JhbF9lbmFibGVkKGludGVs X2RwKSkgew0KPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlBTUjIgZGlzYWJsZWQg YnkgZmxhZ1xuIik7DQo+ICAJCXJldHVybiBmYWxzZTsNCj4gIAl9DQo+IEBAIC03NzMsMTAgKzc3 MiwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QNCj4gaW50 ZWxfZHAgKmludGVsX2RwLA0KPiAgCSAqIG9ubHkgbmVlZCB0byB2YWxpZGF0ZSB0aGUgU1UgYmxv Y2sgd2lkdGggaXMgYSBtdWx0aXBsZSBvZg0KPiAgCSAqIHggZ3JhbnVsYXJpdHkuDQo+ICAJICov DQo+IC0JaWYgKGNydGNfaGRpc3BsYXkgJSBkZXZfcHJpdi0+cHNyLnN1X3hfZ3JhbnVsYXJpdHkp IHsNCj4gKwlpZiAoY3J0Y19oZGlzcGxheSAlIGludGVsX2RwLT5wc3Iuc3VfeF9ncmFudWxhcml0 eSkgew0KPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gIAkJCSAgICAiUFNSMiBu b3QgZW5hYmxlZCwgaGRpc3BsYXkoJWQpIG5vdCBtdWx0aXBsZSBvZg0KPiAlZFxuIiwNCj4gLQkJ CSAgICBjcnRjX2hkaXNwbGF5LCBkZXZfcHJpdi0+cHNyLnN1X3hfZ3JhbnVsYXJpdHkpOw0KPiAr CQkJICAgIGNydGNfaGRpc3BsYXksIGludGVsX2RwLT5wc3Iuc3VfeF9ncmFudWxhcml0eSk7DQo+ ICAJCXJldHVybiBmYWxzZTsNCj4gIAl9DQo+IA0KPiBAQCAtODExLDMwICs4MTAsMjUgQEAgdm9p ZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCwN Cj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7DQo+ICAJaW50IHBzcl9zZXR1cF90 aW1lOw0KPiANCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiArCWlmICghQ0FOX1BTUihp bnRlbF9kcCkpDQo+ICAJCXJldHVybjsNCj4gDQo+IC0JaWYgKGludGVsX2RwICE9IGRldl9wcml2 LT5wc3IuZHApDQo+IC0JCXJldHVybjsNCj4gLQ0KPiAtCWlmICghcHNyX2dsb2JhbF9lbmFibGVk KGRldl9wcml2KSkgew0KPiArCWlmICghcHNyX2dsb2JhbF9lbmFibGVkKGludGVsX2RwKSkgew0K PiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlBTUiBkaXNhYmxlZCBieSBmbGFnXG4i KTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0NCj4gDQo+ICAJLyoNCj4gIAkgKiBIU1cgc3BlYyBleHBs aWNpdGx5IHNheXMgUFNSIGlzIHRpZWQgdG8gcG9ydCBBLg0KPiAtCSAqIEJEVysgcGxhdGZvcm1z IGhhdmUgYSBpbnN0YW5jZSBvZiBQU1IgcmVnaXN0ZXJzIHBlciB0cmFuc2NvZGVyDQo+IGJ1dA0K PiAtCSAqIGZvciBub3cgaXQgb25seSBzdXBwb3J0cyBvbmUgaW5zdGFuY2Ugb2YgUFNSLCBzbyBs ZXRzIGtlZXAgaXQNCj4gLQkgKiBoYXJkY29kZWQgdG8gUE9SVF9BDQo+ICsJICogQkRXKyBwbGF0 Zm9ybXMgaGF2ZSBhIGluc3RhbmNlIG9mIFBTUiByZWdpc3RlcnMgcGVyIHRyYW5zY29kZXIuDQo+ ICAJICovDQo+IC0JaWYgKGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKSB7DQo+ICsJaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpICYmIGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKSB7 DQo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KPiAgCQkJICAgICJQU1IgY29uZGl0 aW9uIGZhaWxlZDogUG9ydCBub3Qgc3VwcG9ydGVkXG4iKTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0N Cj4gDQo+IC0JaWYgKGRldl9wcml2LT5wc3Iuc2lua19ub3RfcmVsaWFibGUpIHsNCj4gKwlpZiAo aW50ZWxfZHAtPnBzci5zaW5rX25vdF9yZWxpYWJsZSkgew0KPiAgCQlkcm1fZGJnX2ttcygmZGV2 X3ByaXYtPmRybSwNCj4gIAkJCSAgICAiUFNSIHNpbmsgaW1wbGVtZW50YXRpb24gaXMgbm90IHJl bGlhYmxlXG4iKTsNCj4gIAkJcmV0dXJuOw0KPiBAQCAtODcwLDIzICs4NjQsMjQgQEAgdm9pZCBp bnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCwNCj4g IHN0YXRpYyB2b2lkIGludGVsX3Bzcl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOw0KPiArCWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyID0gaW50ZWxfZHAt PnBzci50cmFuc2NvZGVyOw0KPiANCj4gLQlpZiAodHJhbnNjb2Rlcl9oYXNfcHNyMihkZXZfcHJp diwgZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSkNCj4gKwlpZiAodHJhbnNjb2Rlcl9oYXNfcHNy MihkZXZfcHJpdiwgdHJhbnNjb2RlcikpDQo+ICAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJt LA0KPiAtCQkJICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJp di0NCj4gPnBzci50cmFuc2NvZGVyKSkgJiBFRFBfUFNSMl9FTkFCTEUpOw0KPiArCQkJICAgIGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+IEVEUF9QU1IyX0NUTCh0cmFuc2NvZGVyKSkgJiBFRFBf UFNSMl9FTkFCTEUpOw0KPiANCj4gIAlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwNCj4gLQkJ ICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LQ0KPiA+cHNy LnRyYW5zY29kZXIpKSAmIEVEUF9QU1JfRU5BQkxFKTsNCj4gLQlkcm1fV0FSTl9PTigmZGV2X3By aXYtPmRybSwgZGV2X3ByaXYtPnBzci5hY3RpdmUpOw0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmRldl9wcml2LT5wc3IubG9jayk7DQo+ICsJCSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBF RFBfUFNSX0NUTCh0cmFuc2NvZGVyKSkgJg0KPiBFRFBfUFNSX0VOQUJMRSk7DQo+ICsJZHJtX1dB Uk5fT04oJmRldl9wcml2LT5kcm0sIGludGVsX2RwLT5wc3IuYWN0aXZlKTsNCj4gKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiANCj4gIAkvKiBwc3IxIGFuZCBw c3IyIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuKi8NCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3Iy X2VuYWJsZWQpDQo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKQ0KPiAgCQloc3df YWN0aXZhdGVfcHNyMihpbnRlbF9kcCk7DQo+ICAJZWxzZQ0KPiAgCQloc3dfYWN0aXZhdGVfcHNy MShpbnRlbF9kcCk7DQo+IA0KPiAtCWRldl9wcml2LT5wc3IuYWN0aXZlID0gdHJ1ZTsNCj4gKwlp bnRlbF9kcC0+cHNyLmFjdGl2ZSA9IHRydWU7DQo+ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQgaW50 ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gQEAgLTkw Miw3ICs4OTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3Qg aW50ZWxfZHANCj4gKmludGVsX2RwLA0KPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQ0KPiAgCQloc3dfcHNyX3NldHVwX2F1eChpbnRlbF9kcCk7 DQo+IA0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAmJiAoSVNfR0VOKGRldl9w cml2LCA5KSAmJg0KPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCAmJiAoSVNfR0VO KGRldl9wcml2LCA5KSAmJg0KPiAgCQkJCQkgICAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpKSB7 DQo+ICAJCWk5MTVfcmVnX3QgcmVnID0gQ0hJQ0tFTl9UUkFOUyhjcHVfdHJhbnNjb2Rlcik7DQo+ ICAJCXUzMiBjaGlja2VuID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsNCj4gQEAgLTky NiwxMCArOTIxLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVj dA0KPiBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAx MSkNCj4gIAkJbWFzayB8PSBFRFBfUFNSX0RFQlVHX01BU0tfRElTUF9SRUdfV1JJVEU7DQo+IA0K PiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0RFQlVHKGRldl9wcml2LQ0KPiA+ cHNyLnRyYW5zY29kZXIpLA0KPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0RF QlVHKGludGVsX2RwLQ0KPiA+cHNyLnRyYW5zY29kZXIpLA0KPiAgCQkgICAgICAgbWFzayk7DQo+ IA0KPiAtCXBzcl9pcnFfY29udHJvbChkZXZfcHJpdik7DQo+ICsJcHNyX2lycV9jb250cm9sKGlu dGVsX2RwKTsNCj4gDQo+ICAJaWYgKGNydGNfc3RhdGUtPmRjM2NvX2V4aXRsaW5lKSB7DQo+ICAJ CXUzMiB2YWw7DQo+IEBAIC05NDcsMzAgKzk0MiwzMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jf ZW5hYmxlX3NvdXJjZShzdHJ1Y3QNCj4gaW50ZWxfZHAgKmludGVsX2RwLA0KPiANCj4gIAlpZiAo SEFTX1BTUl9IV19UUkFDS0lORyhkZXZfcHJpdikgJiYNCj4gSEFTX1BTUjJfU0VMX0ZFVENIKGRl dl9wcml2KSkNCj4gIAkJaW50ZWxfZGVfcm13KGRldl9wcml2LCBDSElDS0VOX1BBUjFfMSwNCj4g SUdOT1JFX1BTUjJfSFdfVFJBQ0tJTkcsDQo+IC0JCQkgICAgIGRldl9wcml2LT5wc3IucHNyMl9z ZWxfZmV0Y2hfZW5hYmxlZCA/DQo+ICsJCQkgICAgIGludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0 Y2hfZW5hYmxlZCA/DQo+ICAJCQkgICAgIElHTk9SRV9QU1IyX0hXX1RSQUNLSU5HIDogMCk7DQo+ ICB9DQo+IA0KPiAtc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiArc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJs ZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gIAkJCQkgICAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ICAJCQkJICAgIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlDQo+ICpjb25uX3N0YXRlKQ0KPiAgew0KPiAtCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOw0KPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiAgCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOw0K PiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRpZ19wb3J0LT5iYXNlOw0KPiAg CXUzMiB2YWw7DQo+IA0KPiAtCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBkZXZfcHJpdi0+ cHNyLmVuYWJsZWQpOw0KPiArCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBpbnRlbF9kcC0+ cHNyLmVuYWJsZWQpOw0KPiANCj4gLQlkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA9IGNydGNf c3RhdGUtPmhhc19wc3IyOw0KPiAtCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRz ID0gMDsNCj4gLQlkZXZfcHJpdi0+cHNyLnBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PnVhcGkuY3J0YyktPnBpcGU7DQo+IC0JZGV2X3ByaXYtPnBzci5kYzNjb19lbmFibGVkID0gISFj cnRjX3N0YXRlLT5kYzNjb19leGl0bGluZTsNCj4gLQlkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIg PSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsNCj4gKwlpbnRlbF9kcC0+cHNyLnBzcjJfZW5h YmxlZCA9IGNydGNfc3RhdGUtPmhhc19wc3IyOw0KPiArCWludGVsX2RwLT5wc3IuYnVzeV9mcm9u dGJ1ZmZlcl9iaXRzID0gMDsNCj4gKwlpbnRlbF9kcC0+cHNyLnBpcGUgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7DQo+ICsJaW50ZWxfZHAtPnBzci5kYzNjb19l bmFibGVkID0gISFjcnRjX3N0YXRlLT5kYzNjb19leGl0bGluZTsNCj4gKwlpbnRlbF9kcC0+cHNy LnRyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsNCj4gIAkvKiBEQzUvREM2 IHJlcXVpcmVzIGF0IGxlYXN0IDYgaWRsZSBmcmFtZXMgKi8NCj4gIAl2YWwgPSB1c2Vjc190b19q aWZmaWVzKGludGVsX2dldF9mcmFtZV90aW1lX3VzKGNydGNfc3RhdGUpICogNik7DQo+IC0JZGV2 X3ByaXYtPnBzci5kYzNjb19leGl0X2RlbGF5ID0gdmFsOw0KPiAtCWRldl9wcml2LT5wc3IucHNy Ml9zZWxfZmV0Y2hfZW5hYmxlZCA9IGNydGNfc3RhdGUtDQo+ID5lbmFibGVfcHNyMl9zZWxfZmV0 Y2g7DQo+ICsJaW50ZWxfZHAtPnBzci5kYzNjb19leGl0X2RlbGF5ID0gdmFsOw0KPiArCWludGVs X2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCA9IGNydGNfc3RhdGUtDQo+ID5lbmFibGVf cHNyMl9zZWxfZmV0Y2g7DQo+IA0KPiAgCS8qDQo+ICAJICogSWYgYSBQU1IgZXJyb3IgaGFwcGVu ZWQgYW5kIHRoZSBkcml2ZXIgaXMgcmVsb2FkZWQsIHRoZQ0KPiBFRFBfUFNSX0lJUg0KPiBAQCAt OTgyLDI3ICs5NzcsMjcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3Ry dWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCSAqLw0KPiAgCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEyKSB7DQo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsDQo+IC0JCQkJICAgIFRSQU5TX1BTUl9JSVIoZGV2X3ByaXYtDQo+ID5wc3IudHJhbnNjb2Rl cikpOw0KPiArCQkJCSAgICBUUkFOU19QU1JfSUlSKGludGVsX2RwLQ0KPiA+cHNyLnRyYW5zY29k ZXIpKTsNCj4gIAkJdmFsICY9IEVEUF9QU1JfRVJST1IoMCk7DQo+ICAJfSBlbHNlIHsNCj4gIAkJ dmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUl9JSVIpOw0KPiAtCQl2YWwgJj0g RURQX1BTUl9FUlJPUihkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOw0KPiArCQl2YWwgJj0gRURQ X1BTUl9FUlJPUihpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOw0KPiAgCX0NCj4gIAlpZiAodmFs KSB7DQo+IC0JCWRldl9wcml2LT5wc3Iuc2lua19ub3RfcmVsaWFibGUgPSB0cnVlOw0KPiArCQlp bnRlbF9kcC0+cHNyLnNpbmtfbm90X3JlbGlhYmxlID0gdHJ1ZTsNCj4gIAkJZHJtX2RiZ19rbXMo JmRldl9wcml2LT5kcm0sDQo+ICAJCQkgICAgIlBTUiBpbnRlcnJ1cHRpb24gZXJyb3Igc2V0LCBu b3QgZW5hYmxpbmcgUFNSXG4iKTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0NCj4gDQo+ICAJZHJtX2Ri Z19rbXMoJmRldl9wcml2LT5kcm0sICJFbmFibGluZyBQU1Ilc1xuIiwNCj4gLQkJICAgIGRldl9w cml2LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsNCj4gKwkJICAgIGludGVsX2RwLT5w c3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsNCj4gIAlpbnRlbF9kcF9jb21wdXRlX3Bzcl92 c2Nfc2RwKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlLA0KPiAtCQkJCSAgICAgJmRl dl9wcml2LT5wc3IudnNjKTsNCj4gLQlpbnRlbF93cml0ZV9kcF92c2Nfc2RwKGVuY29kZXIsIGNy dGNfc3RhdGUsICZkZXZfcHJpdi0+cHNyLnZzYyk7DQo+ICsJCQkJICAgICAmaW50ZWxfZHAtPnBz ci52c2MpOw0KPiArCWludGVsX3dyaXRlX2RwX3ZzY19zZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwg JmludGVsX2RwLT5wc3IudnNjKTsNCj4gIAlpbnRlbF9wc3JfZW5hYmxlX3NpbmsoaW50ZWxfZHAp Ow0KPiAgCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsNCj4g LQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSB0cnVlOw0KPiArCWludGVsX2RwLT5wc3IuZW5hYmxl ZCA9IHRydWU7DQo+IA0KPiAgCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7DQo+ICB9DQo+ IEBAIC0xMDIxLDcgKzEwMTYsNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gDQo+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2 KSB8fCBkZXZfcHJpdi0+cHNyLmRwICE9IGludGVsX2RwKQ0KPiArCWlmICghQ0FOX1BTUihpbnRl bF9kcCkpDQo+ICAJCXJldHVybjsNCj4gDQo+ICAJaWYgKCFjcnRjX3N0YXRlLT5oYXNfcHNyKQ0K PiBAQCAtMTAyOSw0NiArMTAyNCw0NyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGlu dGVsX2RwDQo+ICppbnRlbF9kcCwNCj4gDQo+ICAJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0s IGRldl9wcml2LT5kcnJzLmRwKTsNCj4gDQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsNCj4gLQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSwg Y29ubl9zdGF0ZSk7DQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiAr CW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICsJaW50ZWxfcHNyX2VuYWJsZV9s b2NrZWQoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOw0KPiArCW11dGV4X3VubG9j aygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgdm9pZCBpbnRlbF9w c3JfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICtzdGF0aWMgdm9p ZCBpbnRlbF9wc3JfZXhpdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0K PiAgCXUzMiB2YWw7DQo+IA0KPiAtCWlmICghZGV2X3ByaXYtPnBzci5hY3RpdmUpIHsNCj4gLQkJ aWYgKHRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGRldl9wcml2LQ0KPiA+cHNyLnRyYW5z Y29kZXIpKSB7DQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSkgew0KPiArCQlpZiAodHJh bnNjb2Rlcl9oYXNfcHNyMihkZXZfcHJpdiwgaW50ZWxfZHAtDQo+ID5wc3IudHJhbnNjb2Rlcikp IHsNCj4gIAkJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+IC0JCQkJCSAgICBFRFBf UFNSMl9DVEwoZGV2X3ByaXYtDQo+ID5wc3IudHJhbnNjb2RlcikpOw0KPiArCQkJCQkgICAgRURQ X1BTUjJfQ1RMKGludGVsX2RwLQ0KPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gIAkJCWRybV9XQVJO X09OKCZkZXZfcHJpdi0+ZHJtLCB2YWwgJg0KPiBFRFBfUFNSMl9FTkFCTEUpOw0KPiAgCQl9DQo+ IA0KPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCSAgICBFRFBfUFNS X0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsNCj4gKwkJCQkgICAgRURQX1BTUl9DVEwo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7DQo+ICAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ ZHJtLCB2YWwgJiBFRFBfUFNSX0VOQUJMRSk7DQo+IA0KPiAgCQlyZXR1cm47DQo+ICAJfQ0KPiAN Cj4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gLQkJdGdsX2Rpc2FsbG93 X2RjM2NvX29uX3BzcjJfZXhpdChkZXZfcHJpdik7DQo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNy Ml9lbmFibGVkKSB7DQo+ICsJCXRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoaW50ZWxf ZHApOw0KPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCSAgICBFRFBf UFNSMl9DVEwoZGV2X3ByaXYtDQo+ID5wc3IudHJhbnNjb2RlcikpOw0KPiArCQkJCSAgICBFRFBf UFNSMl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7DQo+ICAJCWRybV9XQVJOX09OKCZk ZXZfcHJpdi0+ZHJtLCAhKHZhbCAmDQo+IEVEUF9QU1IyX0VOQUJMRSkpOw0KPiAgCQl2YWwgJj0g fkVEUF9QU1IyX0VOQUJMRTsNCj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+IC0JCQkg ICAgICAgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ICsJ CQkgICAgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ ICAJfSBlbHNlIHsNCj4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gLQkJCQkg ICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7DQo+ICsJCQkJICAgIEVE UF9QU1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOw0KPiAgCQlkcm1fV0FSTl9PTigm ZGV2X3ByaXYtPmRybSwgISh2YWwgJg0KPiBFRFBfUFNSX0VOQUJMRSkpOw0KPiAgCQl2YWwgJj0g fkVEUF9QU1JfRU5BQkxFOw0KPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwNCj4gLQkJCSAg ICAgICBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOw0KPiArCQkJ ICAgICAgIEVEUF9QU1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ICAJ fQ0KPiAtCWRldl9wcml2LT5wc3IuYWN0aXZlID0gZmFsc2U7DQo+ICsJaW50ZWxfZHAtPnBzci5h Y3RpdmUgPSBmYWxzZTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlzYWJs ZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gQEAgLTEwNzcsMjEgKzEwNzMs MjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdA0KPiBpbnRl bF9kcCAqaW50ZWxfZHApDQo+ICAJaTkxNV9yZWdfdCBwc3Jfc3RhdHVzOw0KPiAgCXUzMiBwc3Jf c3RhdHVzX21hc2s7DQo+IA0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wc3Iu bG9jayk7DQo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4g DQo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpDQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNy LmVuYWJsZWQpDQo+ICAJCXJldHVybjsNCj4gDQo+ICAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5k cm0sICJEaXNhYmxpbmcgUFNSJXNcbiIsDQo+IC0JCSAgICBkZXZfcHJpdi0+cHNyLnBzcjJfZW5h YmxlZCA/ICIyIiA6ICIxIik7DQo+ICsJCSAgICBpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA/ ICIyIiA6ICIxIik7DQo+IA0KPiAtCWludGVsX3Bzcl9leGl0KGRldl9wcml2KTsNCj4gKwlpbnRl bF9wc3JfZXhpdChpbnRlbF9kcCk7DQo+IA0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5h YmxlZCkgew0KPiAtCQlwc3Jfc3RhdHVzID0gRURQX1BTUjJfU1RBVFVTKGRldl9wcml2LT5wc3Iu dHJhbnNjb2Rlcik7DQo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ICsJ CXBzcl9zdGF0dXMgPSBFRFBfUFNSMl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsN Cj4gIAkJcHNyX3N0YXR1c19tYXNrID0gRURQX1BTUjJfU1RBVFVTX1NUQVRFX01BU0s7DQo+ICAJ fSBlbHNlIHsNCj4gLQkJcHNyX3N0YXR1cyA9IEVEUF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3Iu dHJhbnNjb2Rlcik7DQo+ICsJCXBzcl9zdGF0dXMgPSBFRFBfUFNSX1NUQVRVUyhpbnRlbF9kcC0+ cHNyLnRyYW5zY29kZXIpOw0KPiAgCQlwc3Jfc3RhdHVzX21hc2sgPSBFRFBfUFNSX1NUQVRVU19T VEFURV9NQVNLOw0KPiAgCX0NCj4gDQo+IEBAIC0xMTAxLDcgKzEwOTcsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0DQo+IGludGVsX2RwICppbnRlbF9kcCkN Cj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlRpbWVkIG91dCB3YWl0aW5nIFBTUiBpZGxl DQo+IHN0YXRlXG4iKTsNCj4gDQo+ICAJLyogV0EgMTQwODMzMDg0NyAqLw0KPiAtCWlmIChkZXZf cHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgJiYNCj4gKwlpZiAoaW50ZWxfZHAtPnBz ci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkICYmDQo+ICAJICAgIChJU19UR0xfRElTUF9SRVZJRChk ZXZfcHJpdiwgVEdMX1JFVklEX0EwLCBUR0xfUkVWSURfQTApIHx8DQo+ICAJICAgICBJU19SS0xf UkVWSUQoZGV2X3ByaXYsIFJLTF9SRVZJRF9BMCwgUktMX1JFVklEX0EwKSkpDQo+ICAJCWludGVs X2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIxXzEsDQo+IEBAIC0xMTEwLDEwICsxMTA2LDEw IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QNCj4gaW50ZWxf ZHAgKmludGVsX2RwKQ0KPiAgCS8qIERpc2FibGUgUFNSIG9uIFNpbmsgKi8NCj4gIAlkcm1fZHBf ZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1BTUl9FTl9DRkcsIDApOw0KPiANCj4gLQlp ZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpDQo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNy Ml9lbmFibGVkKQ0KPiAgCQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsDQo+IERQ X1JFQ0VJVkVSX0FMUE1fQ09ORklHLCAwKTsNCj4gDQo+IC0JZGV2X3ByaXYtPnBzci5lbmFibGVk ID0gZmFsc2U7DQo+ICsJaW50ZWxfZHAtPnBzci5lbmFibGVkID0gZmFsc2U7DQo+ICB9DQo+IA0K PiAgLyoqDQo+IEBAIC0xMTMxLDIwICsxMTI3LDIyIEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUo c3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCwNCj4gIAlpZiAoIW9sZF9jcnRjX3N0YXRlLT5o YXNfcHNyKQ0KPiAgCQlyZXR1cm47DQo+IA0KPiAtCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYt PmRybSwgIUNBTl9QU1IoZGV2X3ByaXYpKSkNCj4gKwlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2 LT5kcm0sICFDQU5fUFNSKGludGVsX2RwKSkpDQo+ICAJCXJldHVybjsNCj4gDQo+IC0JbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNy LmxvY2spOw0KPiANCj4gIAlpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoaW50ZWxfZHApOw0KPiAN Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0JY2FuY2VsX3dvcmtf c3luYygmZGV2X3ByaXYtPnBzci53b3JrKTsNCj4gLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMo JmRldl9wcml2LT5wc3IuZGMzY29fd29yayk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+ cHNyLmxvY2spOw0KPiArCWNhbmNlbF93b3JrX3N5bmMoJmludGVsX2RwLT5wc3Iud29yayk7DQo+ ICsJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmspOw0K PiAgfQ0KPiANCj4gLXN0YXRpYyB2b2lkIHBzcl9mb3JjZV9od190cmFja2luZ19leGl0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlDQo+ICpkZXZfcHJpdikNCj4gK3N0YXRpYyB2b2lkIHBzcl9mb3Jj ZV9od190cmFja2luZ19leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICB7DQo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7 DQo+ICsNCj4gIAlpZiAoSVNfVElHRVJMQUtFKGRldl9wcml2KSkNCj4gIAkJLyoNCj4gIAkJICog V3JpdGVzIHRvIENVUlNVUkZMSVZFIGluIFRHTCBhcmUgY2F1c2luZyBJT01NVSBlcnJvcnMNCj4g YW5kDQo+IEBAIC0xMTU4LDcgKzExNTYsNyBAQCBzdGF0aWMgdm9pZCBwc3JfZm9yY2VfaHdfdHJh Y2tpbmdfZXhpdChzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJCSAq IFNvIHVzaW5nIHRoaXMgd29ya2Fyb3VuZCB1bnRpbCB0aGlzIGlzc3VlIGlzIHJvb3QgY2F1c2Vk DQo+ICAJCSAqIGFuZCBhIGJldHRlciBmaXggaXMgZm91bmQuDQo+ICAJCSAqLw0KPiAtCQlpbnRl bF9wc3JfZXhpdChkZXZfcHJpdik7DQo+ICsJCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsNCj4g IAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpDQo+ICAJCS8qDQo+ICAJCSAqIERp c3BsYXkgV0EgIzA4ODQ6IHNrbCsNCj4gQEAgLTExNjksMTMgKzExNjcsMTMgQEAgc3RhdGljIHZv aWQgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQ0KPiAgCQkgKiBidXQgaXQgbWFrZXMgbW9yZSBzZW5zZSB3cml0ZSB0byB0aGUg Y3VycmVudCBhY3RpdmUNCj4gIAkJICogcGlwZS4NCj4gIAkJICovDQo+IC0JCWludGVsX2RlX3dy aXRlKGRldl9wcml2LCBDVVJTVVJGTElWRShkZXZfcHJpdi0+cHNyLnBpcGUpLA0KPiAwKTsNCj4g KwkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIENVUlNVUkZMSVZFKGludGVsX2RwLT5wc3IucGlw ZSksDQo+IDApOw0KPiAgCWVsc2UNCj4gIAkJLyoNCj4gIAkJICogQSB3cml0ZSB0byBDVVJTVVJG TElWRSBkbyBub3QgY2F1c2UgSFcgdHJhY2tpbmcgdG8gZXhpdA0KPiBQU1INCj4gIAkJICogb24g b2xkZXIgZ2VucyBzbyBkb2luZyB0aGUgbWFudWFsIGV4aXQgaW5zdGVhZC4NCj4gIAkJICovDQo+ IC0JCWludGVsX3Bzcl9leGl0KGRldl9wcml2KTsNCj4gKwkJaW50ZWxfcHNyX2V4aXQoaW50ZWxf ZHApOw0KPiAgfQ0KPiANCj4gIHZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3BsYW5lX3NlbF9mZXRj aChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLA0KPiBAQCAtMTIxNSwxMSArMTIxMywxMSBAQCB2 b2lkDQo+IGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwNCj4gIAlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgUExBTkVfU0VMX0ZF VENIX1NJWkUocGlwZSwgcGxhbmUtDQo+ID5pZCksIHZhbCk7DQo+ICB9DQo+IA0KPiAtdm9pZCBp bnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpDQo+ICt2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV90cmFu c19tYW5fdHJrX2N0bChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiArCQkJCQkgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpjcnRjX3N0YXRlKQ0KPiAgew0KPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMp Ow0KPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOw0KPiAtCXN0cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9k cCk7DQo+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7DQo+IA0KPiAg CWlmICghSEFTX1BTUjJfU0VMX0ZFVENIKGRldl9wcml2KSB8fA0KPiAgCSAgICAhY3J0Y19zdGF0 ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoKQ0KPiBAQCAtMTMzNiwxMyArMTMzNCwxMyBAQCB2b2lk IGludGVsX3Bzcl91cGRhdGUoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCwNCj4gIAkJICAg ICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpDQo+ICB7DQo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9k cCk7DQo+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsNCj4gKwlzdHJ1 Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsNCj4gIAlib29sIGVuYWJsZSwgcHNy Ml9lbmFibGU7DQo+IA0KPiAtCWlmICghQ0FOX1BTUihkZXZfcHJpdikgfHwgUkVBRF9PTkNFKHBz ci0+ZHApICE9IGludGVsX2RwKQ0KPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpDQo+ICAJCXJl dHVybjsNCj4gDQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwltdXRl eF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiANCj4gIAllbmFibGUgPSBjcnRjX3N0YXRl LT5oYXNfcHNyOw0KPiAgCXBzcjJfZW5hYmxlID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7DQo+IEBA IC0xMzUwLDE1ICsxMzQ4LDE1IEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxf ZHANCj4gKmludGVsX2RwLA0KPiAgCWlmIChlbmFibGUgPT0gcHNyLT5lbmFibGVkICYmIHBzcjJf ZW5hYmxlID09IHBzci0+cHNyMl9lbmFibGVkKSB7DQo+ICAJCS8qIEZvcmNlIGEgUFNSIGV4aXQg d2hlbiBlbmFibGluZyBDUkMgdG8gYXZvaWQgQ1JDDQo+IHRpbWVvdXRzICovDQo+ICAJCWlmIChj cnRjX3N0YXRlLT5jcmNfZW5hYmxlZCAmJiBwc3ItPmVuYWJsZWQpDQo+IC0JCQlwc3JfZm9yY2Vf aHdfdHJhY2tpbmdfZXhpdChkZXZfcHJpdik7DQo+ICsJCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdf ZXhpdChpbnRlbF9kcCk7DQo+ICAJCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5ICYm IHBzci0+ZW5hYmxlZCkgew0KPiAgCQkJLyoNCj4gIAkJCSAqIEFjdGl2YXRlIFBTUiBhZ2FpbiBh ZnRlciBhIGZvcmNlIGV4aXQgd2hlbiBlbmFibGluZw0KPiAgCQkJICogQ1JDIGluIG9sZGVyIGdl bnMNCj4gIAkJCSAqLw0KPiAtCQkJaWYgKCFkZXZfcHJpdi0+cHNyLmFjdGl2ZSAmJg0KPiAtCQkJ ICAgICFkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cykNCj4gLQkJCQlzY2hlZHVs ZV93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmspOw0KPiArCQkJaWYgKCFpbnRlbF9kcC0+cHNyLmFj dGl2ZSAmJg0KPiArCQkJICAgICFpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cykN Cj4gKwkJCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9kcC0+cHNyLndvcmspOw0KPiAgCQl9DQo+IA0K PiAgCQlnb3RvIHVubG9jazsNCj4gQEAgLTEzNjgsMzQgKzEzNjYsMjMgQEAgdm9pZCBpbnRlbF9w c3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcA0KPiAqaW50ZWxfZHAsDQo+ICAJCWludGVsX3Bzcl9k aXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7DQo+IA0KPiAgCWlmIChlbmFibGUpDQo+IC0JCWludGVs X3Bzcl9lbmFibGVfbG9ja2VkKGRldl9wcml2LCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsNCj4g KwkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3Rh dGUpOw0KPiANCj4gIHVubG9jazoNCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9j ayk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiAgfQ0KPiANCj4g IC8qKg0KPiAtICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3YWl0IGZvciBQU1IxIHRvIGlk bGUNCj4gLSAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3IENSVEMgc3RhdGUNCj4gKyAqIHBzcl93YWl0 X2Zvcl9pZGxlIC0gd2FpdCBmb3IgUFNSMSB0byBpZGxlDQo+ICsgKiBAaW50ZWxfZHA6IEludGVs IERQDQo+ICAgKiBAb3V0X3ZhbHVlOiBQU1Igc3RhdHVzIGluIGNhc2Ugb2YgZmFpbHVyZQ0KPiAg ICoNCj4gLSAqIFRoaXMgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZyb20gcGlw ZV91cGRhdGVfc3RhcnQoKSB3aGVyZSBpdA0KPiBpcw0KPiAtICogbm90IGV4cGVjdGVkIHRvIHJh Y2Ugd2l0aCBQU1IgZW5hYmxlIG9yIGRpc2FibGUuDQo+IC0gKg0KPiAgICogUmV0dXJuczogMCBv biBzdWNjZXNzIG9yIC1FVElNRU9VVCBpZiBQU1Igc3RhdHVzIGRvZXMgbm90IGlkbGUuDQo+ICsg Kg0KPiAgICovDQo+IC1pbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLA0KPiAtCQkJICAgIHUzMiAqb3V0X3ZhbHVl KQ0KPiArc3RhdGljIGludCBwc3Jfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCB1MzIgKm91dF92YWx1ZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMobmV3X2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+IC0N Cj4gLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCB8fCAhbmV3X2NydGNfc3RhdGUtPmhhc19w c3IpDQo+IC0JCXJldHVybiAwOw0KPiAtDQo+IC0JLyogRklYTUU6IFVwZGF0ZSB0aGlzIGZvciBQ U1IyIGlmIHdlIG5lZWQgdG8gd2FpdCBmb3IgaWRsZSAqLw0KPiAtCWlmIChSRUFEX09OQ0UoZGV2 X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpKQ0KPiAtCQlyZXR1cm4gMDsNCj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gDQo+ICAJ LyoNCj4gIAkgKiBGcm9tIGJzcGVjOiBQYW5lbCBTZWxmIFJlZnJlc2ggKEJEVyspDQo+IEBAIC0x NDAzLDMyICsxMzkwLDY0IEBAIGludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1 Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsDQo+ICAJICogZXhpdCB0cmFp bmluZyB0aW1lICsgMS41IG1zIG9mIGF1eCBjaGFubmVsIGhhbmRzaGFrZS4gNTAgbXMgaXMNCj4g IAkgKiBkZWZlbnNpdmUgZW5vdWdoIHRvIGNvdmVyIGV2ZXJ5dGhpbmcuDQo+ICAJICovDQo+IC0N Cj4gIAlyZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwN Cj4gLQkJCQkJIEVEUF9QU1JfU1RBVFVTKGRldl9wcml2LQ0KPiA+cHNyLnRyYW5zY29kZXIpLA0K PiArCQkJCQkgRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtDQo+ID5wc3IudHJhbnNjb2RlciksDQo+ ICAJCQkJCSBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLLA0KPiAgCQkJCQkgRURQX1BTUl9TVEFU VVNfU1RBVEVfSURMRSwgMiwNCj4gNTAsDQo+ICAJCQkJCSBvdXRfdmFsdWUpOw0KPiAgfQ0KPiAN Cj4gLXN0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlDQo+ICpkZXZfcHJpdikNCj4gKy8qKg0KPiArICogaW50ZWxfcHNyX3dhaXRfZm9y X2lkbGUgLSB3YWl0IGZvciBQU1IxIHRvIGlkbGUNCj4gKyAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3 IENSVEMgc3RhdGUNCj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJl IGNhbGxlZCBmcm9tIHBpcGVfdXBkYXRlX3N0YXJ0KCkgd2hlcmUgaXQNCj4gaXMNCj4gKyAqIG5v dCBleHBlY3RlZCB0byByYWNlIHdpdGggUFNSIGVuYWJsZSBvciBkaXNhYmxlLg0KPiArICovDQo+ ICt2b2lkIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlDQo+ICpuZXdfY3J0Y19zdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG5ld19jcnRjX3N0YXRlLQ0KPiA+dWFwaS5jcnRjLT5kZXYp Ow0KPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOw0KPiArCXUzMiBwc3Jfc3RhdHVz Ow0KPiArDQo+ICsJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+aGFzX3BzcikNCj4gKwkJcmV0dXJuOw0K PiArDQo+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4g KwkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsN Cj4gKw0KPiArCQlpZiAoZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQ0KPiArCQkJ Y29udGludWU7DQo+ICsNCj4gKwkJLyogd2hlbiB0aGUgUFNSMSBpcyBlbmFibGVkICovDQo+ICsJ CWlmIChpbnRlbF9kcC0+cHNyLmVuYWJsZWQgJiYgIWludGVsX2RwLT5wc3IucHNyMl9lbmFibGVk KSB7DQo+ICsJCQlpZiAocHNyX3dhaXRfZm9yX2lkbGUoaW50ZWxfZHAsICZwc3Jfc3RhdHVzKSkN Cj4gKwkJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLA0KPiArCQkJCQkiUFNSIGlkbGUgdGltZWQg b3V0IDB4JXgsIGF0b21pYw0KPiB1cGRhdGUgbWF5IGZhaWxcbiIsDQo+ICsJCQkJCXBzcl9zdGF0 dXMpOw0KPiArCQl9DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgYm9vbCBfX3Bzcl93YWl0 X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAgCWk5 MTVfcmVnX3QgcmVnOw0KPiAgCXUzMiBtYXNrOw0KPiAgCWludCBlcnI7DQo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+IA0KPiAt CWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQ0KPiArCWlmICghaW50ZWxfZHAtPnBzci5lbmFi bGVkKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+IA0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCkgew0KPiAtCQlyZWcgPSBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFu c2NvZGVyKTsNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gKwkJcmVn ID0gRURQX1BTUjJfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7DQo+ICAJCW1hc2sg PSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gIAl9IGVsc2Ugew0KPiAtCQlyZWcgPSBF RFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOw0KPiArCQlyZWcgPSBFRFBf UFNSX1NUQVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOw0KPiAgCQltYXNrID0gRURQX1BT Ul9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gIAl9DQo+IA0KPiAtCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnBzci5sb2NrKTsNCj4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ IA0KPiAgCWVyciA9IGludGVsX2RlX3dhaXRfZm9yX2NsZWFyKGRldl9wcml2LCByZWcsIG1hc2ss IDUwKTsNCj4gIAlpZiAoZXJyKQ0KPiBAQCAtMTQzNiw4ICsxNDU1LDggQEAgc3RhdGljIGJvb2wg X19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQ0KPiAgCQkJIlRpbWVkIG91dCB3YWl0aW5nIGZvciBQU1IgSWRsZSBmb3IgcmUtZW5h YmxlXG4iKTsNCj4gDQo+ICAJLyogQWZ0ZXIgdGhlIHVubG9ja2VkIHdhaXQsIHZlcmlmeSB0aGF0 IFBTUiBpcyBzdGlsbCB3YW50ZWQhICovDQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsNCj4gLQlyZXR1cm4gZXJyID09IDAgJiYgZGV2X3ByaXYtPnBzci5lbmFibGVkOw0KPiAr CW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICsJcmV0dXJuIGVyciA9PSAwICYm IGludGVsX2RwLT5wc3IuZW5hYmxlZDsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgaW50IGludGVsX3Bz cl9mYXN0c2V0X2ZvcmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gQEAg LTE1MDMsMTEgKzE1MjIsMTIgQEAgc3RhdGljIGludCBpbnRlbF9wc3JfZmFzdHNldF9mb3JjZShz dHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJcmV0dXJuIGVycjsNCj4g IH0NCj4gDQo+IC1pbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHU2NCB2YWwpDQo+ICtpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFsKQ0KPiAgew0KPiAgCWNvbnN0IHUzMiBtb2RlID0g dmFsICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOw0KPiAgCXUzMiBvbGRfbW9kZTsNCj4gIAlp bnQgcmV0Ow0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOw0KPiANCj4gIAlpZiAodmFsICYgfihJOTE1X1BTUl9ERUJVR19JUlEgfA0K PiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spIHx8DQo+ICAJICAgIG1vZGUgPiBJOTE1X1BTUl9E RUJVR19GT1JDRV9QU1IxKSB7DQo+IEBAIC0xNTE1LDIxICsxNTM1LDIxIEBAIGludCBpbnRlbF9w c3JfZGVidWdfc2V0KHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHZh bCkNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJfQ0KPiANCj4gLQlyZXQgPSBtdXRleF9sb2Nr X2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wc3IubG9jayk7DQo+ICsJcmV0ID0gbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiAgCWlmIChyZXQpDQo+ICAJ CXJldHVybiByZXQ7DQo+IA0KPiAtCW9sZF9tb2RlID0gZGV2X3ByaXYtPnBzci5kZWJ1ZyAmDQo+ IEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsNCj4gLQlkZXZfcHJpdi0+cHNyLmRlYnVnID0gdmFs Ow0KPiArCW9sZF9tb2RlID0gaW50ZWxfZHAtPnBzci5kZWJ1ZyAmDQo+IEk5MTVfUFNSX0RFQlVH X01PREVfTUFTSzsNCj4gKwlpbnRlbF9kcC0+cHNyLmRlYnVnID0gdmFsOw0KPiANCj4gIAkvKg0K PiAgCSAqIERvIGl0IHJpZ2h0IGF3YXkgaWYgaXQncyBhbHJlYWR5IGVuYWJsZWQsIG90aGVyd2lz ZSBpdCB3aWxsIGJlIGRvbmUNCj4gIAkgKiB3aGVuIGVuYWJsaW5nIHRoZSBzb3VyY2UuDQo+ICAJ ICovDQo+IC0JaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCkNCj4gLQkJcHNyX2lycV9jb250cm9s KGRldl9wcml2KTsNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5lbmFibGVkKQ0KPiArCQlwc3JfaXJx X2NvbnRyb2woaW50ZWxfZHApOw0KPiANCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiANCj4gIAlp ZiAob2xkX21vZGUgIT0gbW9kZSkNCj4gIAkJcmV0ID0gaW50ZWxfcHNyX2Zhc3RzZXRfZm9yY2Uo ZGV2X3ByaXYpOw0KPiBAQCAtMTUzNywyOCArMTU1NywyOCBAQCBpbnQgaW50ZWxfcHNyX2RlYnVn X3NldChzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpDQo+ICAJ cmV0dXJuIHJldDsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgdm9pZCBpbnRlbF9wc3JfaGFuZGxlX2ly cShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICtzdGF0aWMgdm9pZCBpbnRl bF9wc3JfaGFuZGxlX2lycShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAtCXN0 cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ICsJc3RydWN0IGludGVsX3Bz ciAqcHNyID0gJmludGVsX2RwLT5wc3I7DQo+IA0KPiAtCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tl ZChwc3ItPmRwKTsNCj4gKwlpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoaW50ZWxfZHApOw0KPiAg CXBzci0+c2lua19ub3RfcmVsaWFibGUgPSB0cnVlOw0KPiAgCS8qIGxldCdzIG1ha2Ugc3VyZSB0 aGF0IHNpbmsgaXMgYXdha2VuICovDQo+IC0JZHJtX2RwX2RwY2Rfd3JpdGViKCZwc3ItPmRwLT5h dXgsIERQX1NFVF9QT1dFUiwNCj4gRFBfU0VUX1BPV0VSX0QwKTsNCj4gKwlkcm1fZHBfZHBjZF93 cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1NFVF9QT1dFUiwNCj4gRFBfU0VUX1BPV0VSX0QwKTsN Cj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspDQo+ICB7DQo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0N Cj4gLQkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBwc3Iud29yayk7DQo+ ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9DQo+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCB0 eXBlb2YoKmludGVsX2RwKSwgcHNyLndvcmspOw0KPiANCj4gLQltdXRleF9sb2NrKCZkZXZfcHJp di0+cHNyLmxvY2spOw0KPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+IA0K PiAtCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQ0KPiArCWlmICghaW50ZWxfZHAtPnBzci5l bmFibGVkKQ0KPiAgCQlnb3RvIHVubG9jazsNCj4gDQo+IC0JaWYgKFJFQURfT05DRShkZXZfcHJp di0+cHNyLmlycV9hdXhfZXJyb3IpKQ0KPiAtCQlpbnRlbF9wc3JfaGFuZGxlX2lycShkZXZfcHJp dik7DQo+ICsJaWYgKFJFQURfT05DRShpbnRlbF9kcC0+cHNyLmlycV9hdXhfZXJyb3IpKQ0KPiAr CQlpbnRlbF9wc3JfaGFuZGxlX2lycShpbnRlbF9kcCk7DQo+IA0KPiAgCS8qDQo+ICAJICogV2Ug aGF2ZSB0byBtYWtlIHN1cmUgUFNSIGlzIHJlYWR5IGZvciByZS1lbmFibGUNCj4gQEAgLTE1NjYs NyArMTU4Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVj dA0KPiAqd29yaykNCj4gIAkgKiBQU1IgbWlnaHQgdGFrZSBzb21lIHRpbWUgdG8gZ2V0IGZ1bGx5 IGRpc2FibGVkDQo+ICAJICogYW5kIGJlIHJlYWR5IGZvciByZS1lbmFibGUuDQo+ICAJICovDQo+ IC0JaWYgKCFfX3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChkZXZfcHJpdikpDQo+ICsJaWYgKCFf X3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChpbnRlbF9kcCkpDQo+ICAJCWdvdG8gdW5sb2NrOw0K PiANCj4gIAkvKg0KPiBAQCAtMTU3NCwxMiArMTU5NCwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9w c3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QNCj4gKndvcmspDQo+ICAJICogcmVjaGVjay4gU2lu Y2UgcHNyX2ZsdXNoIGZpcnN0IGNsZWFycyB0aGlzIGFuZCB0aGVuIHJlc2NoZWR1bGVzIHdlDQo+ ICAJICogd29uJ3QgZXZlciBtaXNzIGEgZmx1c2ggd2hlbiBiYWlsaW5nIG91dCBoZXJlLg0KPiAg CSAqLw0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8fCBkZXZf cHJpdi0+cHNyLmFjdGl2ZSkNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVy X2JpdHMgfHwgaW50ZWxfZHAtPnBzci5hY3RpdmUpDQo+ICAJCWdvdG8gdW5sb2NrOw0KPiANCj4g LQlpbnRlbF9wc3JfYWN0aXZhdGUoZGV2X3ByaXYtPnBzci5kcCk7DQo+ICsJaW50ZWxfcHNyX2Fj dGl2YXRlKGludGVsX2RwKTsNCj4gIHVubG9jazoNCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2 LT5wc3IubG9jayk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiAg fQ0KPiANCj4gIC8qKg0KPiBAQCAtMTU5OCwyNyArMTYxOCwzNSBAQCBzdGF0aWMgdm9pZCBpbnRl bF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QNCj4gKndvcmspDQo+ICB2b2lkIGludGVsX3Bz cl9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gIAkJCSAg dW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywgZW51bSBmYl9vcF9vcmlnaW4NCj4gb3JpZ2luKQ0K PiAgew0KPiAtCWlmICghQ0FOX1BTUihkZXZfcHJpdikpDQo+IC0JCXJldHVybjsNCj4gKwlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsNCj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw Ow0KPiANCj4gLQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQ0KPiAtCQlyZXR1cm47DQo+ICsJ Zm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gDQo+IC0JbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gLQlpZiAoIWRldl9wcml2LT5wc3IuZW5h YmxlZCkgew0KPiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0JCXJl dHVybjsNCj4gLQl9DQo+ICsJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOw0K PiArCQlpZiAoZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQ0KPiArCQkJY29udGlu dWU7DQo+ICsJCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpDQo+ICsJCQljb250aW51ZTsNCj4gDQo+ IC0JZnJvbnRidWZmZXJfYml0cyAmPSBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJp di0NCj4gPnBzci5waXBlKTsNCj4gLQlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0 cyB8PSBmcm9udGJ1ZmZlcl9iaXRzOw0KPiArCQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQ0K PiArCQkJY29udGludWU7DQo+ICsNCj4gKwkJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2Nr KTsNCj4gKwkJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpIHsNCj4gKwkJCW11dGV4X3VubG9j aygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gKwkJCWNvbnRpbnVlOw0KPiArCQl9DQo+IA0KPiAt CWlmIChmcm9udGJ1ZmZlcl9iaXRzKQ0KPiAtCQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7DQo+ ICsJCWZyb250YnVmZmVyX2JpdHMgJj0NCj4gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0soaW50 ZWxfZHAtPnBzci5waXBlKTsNCj4gKwkJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2Jp dHMgfD0gZnJvbnRidWZmZXJfYml0czsNCj4gDQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOw0KPiAtfQ0KPiArCQlpZiAoZnJvbnRidWZmZXJfYml0cykNCj4gKwkJCWludGVs X3Bzcl9leGl0KGludGVsX2RwKTsNCj4gDQo+ICsJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBz ci5sb2NrKTsNCj4gKwl9DQo+ICt9DQo+ICAvKg0KPiAgICogV2hlbiB3ZSB3aWxsIGJlIGNvbXBs ZXRlbHkgcmVseSBvbiBQU1IyIFMvVyB0cmFja2luZyBpbiBmdXR1cmUsDQo+ICAgKiBpbnRlbF9w c3JfZmx1c2goKSB3aWxsIGludmFsaWRhdGUgYW5kIGZsdXNoIHRoZSBQU1IgZm9yIE9SSUdJTl9G TElQDQo+IEBAIC0xNjI2LDE1ICsxNjU0LDE1IEBAIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUo c3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgICogYWNjb3JkaW5nbHkg aW4gZnV0dXJlLg0KPiAgICovDQo+ICBzdGF0aWMgdm9pZA0KPiAtdGdsX2RjM2NvX2ZsdXNoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gLQkJdW5zaWduZWQgaW50IGZyb250 YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbikNCj4gK3RnbF9kYzNjb19mbHVz aChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0 cywNCj4gKwkJZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQ0KPiAgew0KPiAtCW11dGV4X2xvY2so JmRldl9wcml2LT5wc3IubG9jayk7DQo+ICsJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2Nr KTsNCj4gDQo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmRjM2NvX2VuYWJsZWQpDQo+ICsJaWYgKCFp bnRlbF9kcC0+cHNyLmRjM2NvX2VuYWJsZWQpDQo+ICAJCWdvdG8gdW5sb2NrOw0KPiANCj4gLQlp ZiAoIWRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkIHx8ICFkZXZfcHJpdi0+cHNyLmFjdGl2ZSkN Cj4gKwlpZiAoIWludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkIHx8ICFpbnRlbF9kcC0+cHNyLmFj dGl2ZSkNCj4gIAkJZ290byB1bmxvY2s7DQo+IA0KPiAgCS8qDQo+IEBAIC0xNjQyLDE1ICsxNjcw LDE1IEBAIHRnbF9kYzNjb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3By aXYsDQo+ICAJICogd2hlbiBkZWxheWVkIHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVhbnMgZGlzcGxh eSBoYXMgYmVlbiBpZGxlLg0KPiAgCSAqLw0KPiAgCWlmICghKGZyb250YnVmZmVyX2JpdHMgJg0K PiAtCSAgICBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpKSkN Cj4gKwkgICAgSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0soaW50ZWxfZHAtPnBzci5waXBlKSkp DQo+ICAJCWdvdG8gdW5sb2NrOw0KPiANCj4gLQl0Z2xfcHNyMl9lbmFibGVfZGMzY28oZGV2X3By aXYpOw0KPiAtCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmZGV2X3ByaXYtPnBzci5kYzNj b193b3JrLA0KPiAtCQkJIGRldl9wcml2LT5wc3IuZGMzY29fZXhpdF9kZWxheSk7DQo+ICsJdGds X3BzcjJfZW5hYmxlX2RjM2NvKGludGVsX2RwKTsNCj4gKwltb2RfZGVsYXllZF93b3JrKHN5c3Rl bV93cSwgJmludGVsX2RwLT5wc3IuZGMzY29fd29yaywNCj4gKwkJCSBpbnRlbF9kcC0+cHNyLmRj M2NvX2V4aXRfZGVsYXkpOw0KPiANCj4gIHVubG9jazoNCj4gLQltdXRleF91bmxvY2soJmRldl9w cml2LT5wc3IubG9jayk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0K PiAgfQ0KPiANCj4gIC8qKg0KPiBAQCAtMTY2OSw0NSArMTY5Nyw1NCBAQCB0Z2xfZGMzY29fZmx1 c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2LA0KPiAgdm9pZCBpbnRlbF9w c3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCQkgICAgIHVu c2lnbmVkIGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbikNCj4gIHsN Cj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiAtCQlyZXR1cm47DQo+IC0NCj4gLQlpZiAo b3JpZ2luID09IE9SSUdJTl9GTElQKSB7DQo+IC0JCXRnbF9kYzNjb19mbHVzaChkZXZfcHJpdiwg ZnJvbnRidWZmZXJfYml0cywgb3JpZ2luKTsNCj4gLQkJcmV0dXJuOw0KPiAtCX0NCj4gLQ0KPiAt CW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0JaWYgKCFkZXZfcHJpdi0+cHNy LmVuYWJsZWQpIHsNCj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiAt CQlyZXR1cm47DQo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ICsJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcDsNCj4gKw0KPiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJp di0+ZHJtLCBlbmNvZGVyKSB7DQo+ICsJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29k ZXIpOw0KPiArDQo+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFAgJiYN Cj4gQ0FOX1BTUihpbnRlbF9kcCkpIHsNCj4gKwkJCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVAp IHsNCj4gKwkJCQl0Z2xfZGMzY29fZmx1c2goaW50ZWxfZHAsIGZyb250YnVmZmVyX2JpdHMsDQo+ IG9yaWdpbik7DQo+ICsJCQkJY29udGludWU7DQo+ICsJCQl9DQo+ICsNCj4gKwkJCW11dGV4X2xv Y2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICsJCQlpZiAoIWludGVsX2RwLT5wc3IuZW5hYmxl ZCkgew0KPiArCQkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gKwkJCQlj b250aW51ZTsNCj4gKwkJCX0NCj4gKw0KPiArCQkJZnJvbnRidWZmZXJfYml0cyAmPQ0KPiBJTlRF TF9GUk9OVEJVRkZFUl9BTExfTUFTSyhpbnRlbF9kcC0+cHNyLnBpcGUpOw0KPiArCQkJaW50ZWxf ZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgJj0NCj4gfmZyb250YnVmZmVyX2JpdHM7DQo+ ICsNCj4gKwkJCS8qIEJ5IGRlZmluaXRpb24gZmx1c2ggPSBpbnZhbGlkYXRlICsgZmx1c2ggKi8N Cj4gKwkJCWlmIChmcm9udGJ1ZmZlcl9iaXRzKQ0KPiArCQkJCXBzcl9mb3JjZV9od190cmFja2lu Z19leGl0KGludGVsX2RwKTsNCj4gKw0KPiArCQkJaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSAm JiAhaW50ZWxfZHAtDQo+ID5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiArCQkJCXNjaGVk dWxlX3dvcmsoJmludGVsX2RwLT5wc3Iud29yayk7DQo+ICsJCQltdXRleF91bmxvY2soJmludGVs X2RwLT5wc3IubG9jayk7DQo+ICsJCX0NCj4gIAl9DQo+IC0NCj4gLQlmcm9udGJ1ZmZlcl9iaXRz ICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGRldl9wcml2LQ0KPiA+cHNyLnBpcGUpOw0K PiAtCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzICY9IH5mcm9udGJ1ZmZlcl9i aXRzOw0KPiAtDQo+IC0JLyogQnkgZGVmaW5pdGlvbiBmbHVzaCA9IGludmFsaWRhdGUgKyBmbHVz aCAqLw0KPiAtCWlmIChmcm9udGJ1ZmZlcl9iaXRzKQ0KPiAtCQlwc3JfZm9yY2VfaHdfdHJhY2tp bmdfZXhpdChkZXZfcHJpdik7DQo+IC0NCj4gLQlpZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlICYm ICFkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cykNCj4gLQkJc2NoZWR1bGVfd29y aygmZGV2X3ByaXYtPnBzci53b3JrKTsNCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7DQo+ICB9DQo+IA0KPiAgLyoqDQo+ICAgKiBpbnRlbF9wc3JfaW5pdCAtIEluaXQgYmFz aWMgUFNSIHdvcmsgYW5kIG11dGV4Lg0KPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBwcml2 YXRlDQo+ICsgKiBAaW50ZWxfZHA6IEludGVsIERQDQo+ICAgKg0KPiAtICogVGhpcyBmdW5jdGlv biBpcyAgY2FsbGVkIG9ubHkgb25jZSBhdCBkcml2ZXIgbG9hZCB0byBpbml0aWFsaXplIGJhc2lj DQo+IC0gKiBQU1Igc3R1ZmYuDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0 aGUgaW5pdGlhbGl6aW5nIGNvbm5lY3Rvci4NCj4gKyAqICh0aGUgaW5pdGlhbGl6aW5nIG9mIGNv bm5lY3RvciB0cmVhdHMgdGhlIGhhbmRsaW5nIG9mIGNvbm5lY3Rvcg0KPiBjYXBhYmlsaXRpZXMp DQo+ICsgKiBBbmQgaXQgaW5pdGlhbGl6ZXMgYmFzaWMgUFNSIHN0dWZmIGZvciBlYWNoIERQIEVu Y29kZXIuDQo+ICAgKi8NCj4gLXZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQ0KPiArdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQ0KPiAgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiArDQo+ICAJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkN Cj4gIAkJcmV0dXJuOw0KPiANCj4gLQlpZiAoIWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQ0K PiArCWlmICghaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpDQo+ICAJCXJldHVybjsNCj4gDQo+ ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQ0KPiBAQCAtMTcyNSwxNCArMTc2MiwxNCBAQCB2 b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICpkZXZfcHJpdikN Cj4gIAkvKiBTZXQgbGlua19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMgKi8NCj4gIAlpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkNCj4gIAkJLyog SFNXIGFuZCBCRFcgcmVxdWlyZSB3b3JrYXJvdW5kcyB0aGF0IHdlIGRvbid0DQo+IGltcGxlbWVu dC4gKi8NCj4gLQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBmYWxzZTsNCj4gKwkJaW50 ZWxfZHAtPnBzci5saW5rX3N0YW5kYnkgPSBmYWxzZTsNCj4gIAllbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgMTIpDQo+ICAJCS8qIEZvciBuZXcgcGxhdGZvcm1zIHVwIHRvIFRHTCBsZXQn cyByZXNwZWN0IFZCVCBiYWNrIGFnYWluDQo+ICovDQo+IC0JCWRldl9wcml2LT5wc3IubGlua19z dGFuZGJ5ID0gZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rOw0KPiArCQlpbnRlbF9kcC0+cHNy Lmxpbmtfc3RhbmRieSA9IGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluazsNCj4gDQo+IC0JSU5J VF9XT1JLKCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsNCj4gLQlJTklUX0RF TEFZRURfV09SSygmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrLA0KPiB0Z2xfZGMzY29fZGlzYWJs ZV93b3JrKTsNCj4gLQltdXRleF9pbml0KCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiArCUlOSVRf V09SSygmaW50ZWxfZHAtPnBzci53b3JrLCBpbnRlbF9wc3Jfd29yayk7DQo+ICsJSU5JVF9ERUxB WUVEX1dPUksoJmludGVsX2RwLT5wc3IuZGMzY29fd29yaywNCj4gdGdsX2RjM2NvX2Rpc2FibGVf d29yayk7DQo+ICsJbXV0ZXhfaW5pdCgmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gIH0NCj4gDQo+ ICBzdGF0aWMgaW50IHBzcl9nZXRfc3RhdHVzX2FuZF9lcnJvcl9zdGF0dXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwNCj4gQEAgLTE3NTgsNyArMTc5NSw3IEBAIHN0YXRpYyB2b2lkIHBzcl9h bHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcA0KPiAqaW50ZWxfZHApDQo+ICB7DQo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ICAJ c3RydWN0IGRybV9kcF9hdXggKmF1eCA9ICZpbnRlbF9kcC0+YXV4Ow0KPiAtCXN0cnVjdCBpOTE1 X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0g JmludGVsX2RwLT5wc3I7DQo+ICAJdTggdmFsOw0KPiAgCWludCByOw0KPiANCj4gQEAgLTE3ODUs NyArMTgyMiw3IEBAIHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcA0K PiAqaW50ZWxfZHApDQo+ICBzdGF0aWMgdm9pZCBwc3JfY2FwYWJpbGl0eV9jaGFuZ2VkX2NoZWNr KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+IC0Jc3RydWN0IGk5MTVf cHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsNCj4gKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAm aW50ZWxfZHAtPnBzcjsNCj4gIAl1OCB2YWw7DQo+ICAJaW50IHI7DQo+IA0KPiBAQCAtMTgwOSwx OCArMTg0NiwxOCBAQCBzdGF0aWMgdm9pZA0KPiBwc3JfY2FwYWJpbGl0eV9jaGFuZ2VkX2NoZWNr KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxz ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiAtCXN0cnVjdCBpOTE1 X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0g JmludGVsX2RwLT5wc3I7DQo+ICAJdTggc3RhdHVzLCBlcnJvcl9zdGF0dXM7DQo+ICAJY29uc3Qg dTggZXJyb3JzID0gRFBfUFNSX1JGQl9TVE9SQUdFX0VSUk9SIHwNCj4gIAkJCSAgRFBfUFNSX1ZT Q19TRFBfVU5DT1JSRUNUQUJMRV9FUlJPUiB8DQo+ICAJCQkgIERQX1BTUl9MSU5LX0NSQ19FUlJP UjsNCj4gDQo+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSB8fCAhaW50ZWxfZHBfaXNfZWRwKGlu dGVsX2RwKSkNCj4gKwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApIHx8ICFpbnRlbF9kcF9pc19lZHAo aW50ZWxfZHApKQ0KPiAgCQlyZXR1cm47DQo+IA0KPiAgCW11dGV4X2xvY2soJnBzci0+bG9jayk7 DQo+IA0KPiAtCWlmICghcHNyLT5lbmFibGVkIHx8IHBzci0+ZHAgIT0gaW50ZWxfZHApDQo+ICsJ aWYgKCFwc3ItPmVuYWJsZWQpDQo+ICAJCWdvdG8gZXhpdDsNCj4gDQo+ICAJaWYgKHBzcl9nZXRf c3RhdHVzX2FuZF9lcnJvcl9zdGF0dXMoaW50ZWxfZHAsICZzdGF0dXMsDQo+ICZlcnJvcl9zdGF0 dXMpKSB7DQo+IEBAIC0xODYzLDE1ICsxOTAwLDE0IEBAIHZvaWQgaW50ZWxfcHNyX3Nob3J0X3B1 bHNlKHN0cnVjdCBpbnRlbF9kcA0KPiAqaW50ZWxfZHApDQo+IA0KPiAgYm9vbCBpbnRlbF9wc3Jf ZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiAgCWJvb2wg cmV0Ow0KPiANCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8ICFpbnRlbF9kcF9pc19lZHAo aW50ZWxfZHApKQ0KPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkgfHwgIWludGVsX2RwX2lzX2Vk cChpbnRlbF9kcCkpDQo+ICAJCXJldHVybiBmYWxzZTsNCj4gDQo+IC0JbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsNCj4gLQlyZXQgPSAoZGV2X3ByaXYtPnBzci5kcCA9PSBpbnRlbF9k cCAmJiBkZXZfcHJpdi0+cHNyLmVuYWJsZWQpOw0KPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnBzci5sb2NrKTsNCj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiArCXJl dCA9IGludGVsX2RwLT5wc3IuZW5hYmxlZDsNCj4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5w c3IubG9jayk7DQo+IA0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oDQo+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaA0KPiBpbmRleCAwYTUxNzk3OGU4YWYuLjAzZWIxOTU0 N2QwOSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9w c3IuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oDQo+ IEBAIC0xOCw3ICsxOCw3IEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGU7DQo+ICBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGU7DQo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmU7DQo+IA0KPiAtI2RlZmlu ZSBDQU5fUFNSKGRldl9wcml2KSAoSEFTX1BTUihkZXZfcHJpdikgJiYgZGV2X3ByaXYtDQo+ID5w c3Iuc2lua19zdXBwb3J0KQ0KPiArI2RlZmluZSBDQU5fUFNSKGludGVsX2RwKSAoSEFTX1BTUihk cF90b19pOTE1KGludGVsX2RwKSkgJiYgaW50ZWxfZHAtDQo+ID5wc3Iuc2lua19zdXBwb3J0KQ0K PiAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOw0K PiAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJ CSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiBAQCAt MjgsMjQgKzI4LDI0IEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwNCj4gIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLA0KPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwNCj4gIAkJICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGUpOw0KPiAtaW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1NjQgdmFsdWUpOw0KPiAraW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwgdTY0IHZhbHVlKTsNCj4gIHZvaWQgaW50ZWxfcHNyX2ludmFs aWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCQkJICB1bnNpZ25l ZCBmcm9udGJ1ZmZlcl9iaXRzLA0KPiAgCQkJICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOw0K PiAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LA0KPiAgCQkgICAgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsDQo+ICAJCSAgICAgZW51bSBm Yl9vcF9vcmlnaW4gb3JpZ2luKTsNCj4gLXZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsNCj4gK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCk7DQo+ICB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiAgCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpOw0KPiAtdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzINCj4gcHNyX2lpcik7DQo+ICt2b2lkIGludGVs X3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1MzIgcHNyX2lpcik7 DQo+ICB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsNCj4gLWludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsDQo+IC0JCQkgICAgdTMyICpvdXRfdmFsdWUpOw0KPiAr dm9pZCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZQ0KPiAqbmV3X2NydGNfc3RhdGUpOw0KPiAgYm9vbCBpbnRlbF9wc3JfZW5hYmxlZChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKTsNCj4gIGludCBpbnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ICAJCQkJc3RydWN0IGludGVsX2Ny dGMgKmNydGMpOw0KPiAtdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpOw0KPiArdm9pZCBp bnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwNCj4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiAqY3J0Y19z dGF0ZSk7DQo+ICB2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSwNCj4gIAkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUNCj4gKmNydGNfc3RhdGUsDQo+ICAJCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZQ0KPiAqcGxhbmVfc3RhdGUsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Nwcml0ZS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9zcHJpdGUuYw0KPiBpbmRleCBiN2UyMDg4MTYwNzQuLjk0ODIzNGM2MDY0OCAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYw0KPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jDQo+IEBAIC04 NCw3ICs4NCw2IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0DQo+ IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQ0KPiAgCWJvb2wgbmVlZF92bHZfZHNp X3dhID0gKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8DQo+IElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKSAmJg0KPiAgCQlpbnRlbF9jcnRjX2hhc190eXBlKG5ld19jcnRjX3N0YXRlLCBJTlRFTF9P VVRQVVRfRFNJKTsNCj4gIAlERUZJTkVfV0FJVCh3YWl0KTsNCj4gLQl1MzIgcHNyX3N0YXR1czsN Cj4gDQo+ICAJaWYgKG5ld19jcnRjX3N0YXRlLT51YXBpLmFzeW5jX2ZsaXApDQo+ICAJCXJldHVy bjsNCj4gQEAgLTEwOSwxMCArMTA4LDcgQEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChj b25zdCBzdHJ1Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpDQo+ICAJICog VkJMIGludGVycnVwdHMgd2lsbCBzdGFydCB0aGUgUFNSIGV4aXQgYW5kIHByZXZlbnQgYSBQU1IN Cj4gIAkgKiByZS1lbnRyeSBhcyB3ZWxsLg0KPiAgCSAqLw0KPiAtCWlmIChpbnRlbF9wc3Jfd2Fp dF9mb3JfaWRsZShuZXdfY3J0Y19zdGF0ZSwgJnBzcl9zdGF0dXMpKQ0KPiAtCQlkcm1fZXJyKCZk ZXZfcHJpdi0+ZHJtLA0KPiAtCQkJIlBTUiBpZGxlIHRpbWVkIG91dCAweCV4LCBhdG9taWMgdXBk YXRlIG1heQ0KPiBmYWlsXG4iLA0KPiAtCQkJcHNyX3N0YXR1cyk7DQo+ICsJaW50ZWxfcHNyX3dh aXRfZm9yX2lkbGUobmV3X2NydGNfc3RhdGUpOw0KPiANCj4gIAlsb2NhbF9pcnFfZGlzYWJsZSgp Ow0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+IGluZGV4IDRhOGZmMmE4OTlhNS4u ZGM3YTI0MTAzNmU2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gQEAgLTQ3NSw0 MiArNDc1LDYgQEAgc3RydWN0IGk5MTVfZHJycyB7DQo+ICAJZW51bSBkcnJzX3N1cHBvcnRfdHlw ZSB0eXBlOw0KPiAgfTsNCj4gDQo+IC1zdHJ1Y3QgaTkxNV9wc3Igew0KPiAtCXN0cnVjdCBtdXRl eCBsb2NrOw0KPiAtDQo+IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSwkweDBmDQo+ IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RFRkFVTFQJCTB4MDANCj4gLSNkZWZpbmUgSTkxNV9Q U1JfREVCVUdfRElTQUJMRQkJMHgwMQ0KPiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19FTkFCTEUJ CTB4MDINCj4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMQkweDAzDQo+IC0jZGVm aW5lIEk5MTVfUFNSX0RFQlVHX0lSUQkJMHgxMA0KPiAtDQo+IC0JdTMyIGRlYnVnOw0KPiAtCWJv b2wgc2lua19zdXBwb3J0Ow0KPiAtCWJvb2wgZW5hYmxlZDsNCj4gLQlzdHJ1Y3QgaW50ZWxfZHAg KmRwOw0KPiAtCWVudW0gcGlwZSBwaXBlOw0KPiAtCWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVy Ow0KPiAtCWJvb2wgYWN0aXZlOw0KPiAtCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOw0KPiAtCXVu c2lnbmVkIGJ1c3lfZnJvbnRidWZmZXJfYml0czsNCj4gLQlib29sIHNpbmtfcHNyMl9zdXBwb3J0 Ow0KPiAtCWJvb2wgbGlua19zdGFuZGJ5Ow0KPiAtCWJvb2wgY29sb3JpbWV0cnlfc3VwcG9ydDsN Cj4gLQlib29sIHBzcjJfZW5hYmxlZDsNCj4gLQlib29sIHBzcjJfc2VsX2ZldGNoX2VuYWJsZWQ7 DQo+IC0JdTggc2lua19zeW5jX2xhdGVuY3k7DQo+IC0Ja3RpbWVfdCBsYXN0X2VudHJ5X2F0dGVt cHQ7DQo+IC0Ja3RpbWVfdCBsYXN0X2V4aXQ7DQo+IC0JYm9vbCBzaW5rX25vdF9yZWxpYWJsZTsN Cj4gLQlib29sIGlycV9hdXhfZXJyb3I7DQo+IC0JdTE2IHN1X3hfZ3JhbnVsYXJpdHk7DQo+IC0J Ym9vbCBkYzNjb19lbmFibGVkOw0KPiAtCXUzMiBkYzNjb19leGl0X2RlbGF5Ow0KPiAtCXN0cnVj dCBkZWxheWVkX3dvcmsgZGMzY29fd29yazsNCj4gLQlzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgdnNj Ow0KPiAtfTsNCj4gLQ0KPiAgI2RlZmluZSBRVUlSS19MVkRTX1NTQ19ESVNBQkxFICgxPDwxKQ0K PiAgI2RlZmluZSBRVUlSS19JTlZFUlRfQlJJR0hUTkVTUyAoMTw8MikNCj4gICNkZWZpbmUgUVVJ UktfQkFDS0xJR0hUX1BSRVNFTlQgKDE8PDMpDQo+IEBAIC0xMDQxLDggKzEwMDUsNiBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7DQo+IA0KPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMg cG93ZXJfZG9tYWluczsNCj4gDQo+IC0Jc3RydWN0IGk5MTVfcHNyIHBzcjsNCj4gLQ0KPiAgCXN0 cnVjdCBpOTE1X2dwdV9lcnJvciBncHVfZXJyb3I7DQo+IA0KPiAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICp2bHZfcGN0eDsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jDQo+IGluZGV4 IDQ5MWY4MjUwMGQ2OC4uODU0Njc4NjUyMWI1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMNCj4gQEAgLTIwNDQsMTAgKzIwNDQsMjIgQEAgc3RhdGljIHZvaWQgaXZiX2Rpc3BsYXlfaXJx X2hhbmRsZXIoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCQlpdmJf ZXJyX2ludF9oYW5kbGVyKGRldl9wcml2KTsNCj4gDQo+ICAJaWYgKGRlX2lpciAmIERFX0VEUF9Q U1JfSU5UX0hTVykgew0KPiAtCQl1MzIgcHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZf cHJpdi0+dW5jb3JlLA0KPiBFRFBfUFNSX0lJUik7DQo+ICsJCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyOw0KPiANCj4gLQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGRldl9wcml2LCBwc3Jf aWlyKTsNCj4gLQkJaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBFRFBfUFNS X0lJUiwNCj4gcHNyX2lpcik7DQo+ICsJCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJt LCBlbmNvZGVyKSB7DQo+ICsJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0NCj4gZW5jX3Rv X2ludGVsX2RwKGVuY29kZXIpOw0KPiArDQo+ICsJCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRF TF9PVVRQVVRfRURQICYmDQo+ICsJCQkgICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsNCj4gKwkJCQl1 MzIgcHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0NCj4gPnVuY29yZSwNCj4g Kw0KPiAJRURQX1BTUl9JSVIpOw0KPiArDQo+ICsJCQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGlu dGVsX2RwLCBwc3JfaWlyKTsNCj4gKwkJCQlpbnRlbF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51 bmNvcmUsDQo+ICsJCQkJCQkgICBFRFBfUFNSX0lJUiwgcHNyX2lpcik7DQo+ICsJCQkJYnJlYWs7 DQo+ICsJCQl9DQo+ICsJCX0NCj4gIAl9DQo+IA0KPiAgCWlmIChkZV9paXIgJiBERV9BVVhfQ0hB Tk5FTF9BX0lWQikNCj4gQEAgLTIyNTUsMjEgKzIyNjcsMzQgQEAgZ2VuOF9kZV9taXNjX2lycV9o YW5kbGVyKHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGlpcikNCj4g IAl9DQo+IA0KPiAgCWlmIChpaXIgJiBHRU44X0RFX0VEUF9QU1IpIHsNCj4gKwkJc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ICAJCXUzMiBwc3JfaWlyOw0KPiAgCQlpOTE1X3JlZ190 IGlpcl9yZWc7DQo+IA0KPiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikNCj4gLQkJ CWlpcl9yZWcgPSBUUkFOU19QU1JfSUlSKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+IC0J CWVsc2UNCj4gLQkJCWlpcl9yZWcgPSBFRFBfUFNSX0lJUjsNCj4gKwkJZm9yX2VhY2hfaW50ZWxf ZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gKwkJCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPQ0KPiBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7DQo+IA0KPiAtCQlwc3JfaWlyID0g aW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcpOw0KPiAtCQlpbnRl bF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcsIHBzcl9paXIpOw0KPiAr CQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgJiYNCj4gQ0FOX1BTUihpbnRlbF9kcCkp IHsNCj4gKwkJCQlpaXJfcmVnID0gVFJBTlNfUFNSX0lJUihpbnRlbF9kcC0NCj4gPnBzci50cmFu c2NvZGVyKTsNCj4gKwkJCX0gZWxzZSBpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRf RURQICYmDQo+ICsJCQkJICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsNCj4gKwkJCQlpaXJfcmVnID0g RURQX1BTUl9JSVI7DQo+ICsJCQl9IGVsc2Ugew0KPiArCQkJCWNvbnRpbnVlOw0KPiArCQkJfQ0K PiArDQo+ICsJCQlwc3JfaWlyID0gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUs DQo+IGlpcl9yZWcpOw0KPiArCQkJaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3Jl LCBpaXJfcmVnLA0KPiBwc3JfaWlyKTsNCj4gKw0KPiArCQkJaWYgKHBzcl9paXIpDQo+ICsJCQkJ Zm91bmQgPSB0cnVlOw0KPiANCj4gLQkJaWYgKHBzcl9paXIpDQo+IC0JCQlmb3VuZCA9IHRydWU7 DQo+ICsJCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9paXIpOw0KPiANCj4g LQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGRldl9wcml2LCBwc3JfaWlyKTsNCj4gKwkJCS8qIHBy aW9yIEdFTjEyIG9ubHkgaGF2ZSBvbmUgRURQIFBTUiAqLw0KPiArCQkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCAxMikNCj4gKwkJCQlicmVhazsNCj4gKwkJfQ0KPiAgCX0NCj4gDQo+ICAJaWYg KCFmb3VuZCkNCj4gLS0NCj4gMi4yNS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=