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=-3.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 2A42EC433DF for ; Sat, 23 May 2020 09:52:35 +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 EECA02071C for ; Sat, 23 May 2020 09:52:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EECA02071C 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 635666E145; Sat, 23 May 2020 09:52:34 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9B5716E145 for ; Sat, 23 May 2020 09:52:32 +0000 (UTC) IronPort-SDR: u+PttCxhGeVJjE6HF2qyMXryI9J4ZArNkHiSw3Qrekfi5bpBqmPg67DUDlXcS9FFiYHSx4pe6g fpSFDZ+xWIig== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 May 2020 02:52:31 -0700 IronPort-SDR: ugHlRFkBeE6botu6E9veYSjNzh7tEZXj/bQ+AK9vSQZx9w920c16KgqCPJbL12lSKCHtLKwxve C8PCg7PPqGXw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,425,1583222400"; d="scan'208";a="269249385" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga006.jf.intel.com with ESMTP; 23 May 2020 02:52:31 -0700 Received: from fmsmsx152.amr.corp.intel.com (10.18.125.5) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 23 May 2020 02:52:30 -0700 Received: from bgsmsx105.gar.corp.intel.com (10.223.43.197) by FMSMSX152.amr.corp.intel.com (10.18.125.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 23 May 2020 02:52:29 -0700 Received: from bgsmsx104.gar.corp.intel.com ([169.254.5.115]) by BGSMSX105.gar.corp.intel.com ([169.254.3.252]) with mapi id 14.03.0439.000; Sat, 23 May 2020 15:22:27 +0530 From: "Shankar, Uma" To: "Manna, Animesh" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH v11] drm/i915/dsb: Pre allocate and late cleanup of cmd buffer Thread-Index: AQHWLqmBbjBL9QlL9EukEVxhMr/xXqi1cjiQ Date: Sat, 23 May 2020 09:52:26 +0000 Message-ID: References: <20200520130737.11240-1-animesh.manna@intel.com> In-Reply-To: <20200520130737.11240-1-animesh.manna@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.2.0.6 dlp-reaction: no-action x-originating-ip: [10.223.10.10] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v11] drm/i915/dsb: Pre allocate and late cleanup of cmd buffer 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" , Daniel Vetter , "Lankhorst, Maarten" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSW50ZWwtZ2Z4IDxpbnRl bC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+IE9uIEJlaGFsZiBPZiBBbmltZXNo DQo+IE1hbm5hDQo+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDIwLCAyMDIwIDY6MzggUE0NCj4gVG86 IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gQ2M6IE5pa3VsYSwgSmFuaSA8amFu aS5uaWt1bGFAaW50ZWwuY29tPjsgRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5j aD47DQo+IExhbmtob3JzdCwgTWFhcnRlbiA8bWFhcnRlbi5sYW5raG9yc3RAaW50ZWwuY29tPg0K PiBTdWJqZWN0OiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggdjExXSBkcm0vaTkxNS9kc2I6IFByZSBhbGxv Y2F0ZSBhbmQgbGF0ZSBjbGVhbnVwIG9mDQo+IGNtZCBidWZmZXINCj4gDQo+IFByZS1hbGxvY2F0 ZSBjb21tYW5kIGJ1ZmZlciBpbiBhdG9taWNfY29tbWl0IHVzaW5nIGludGVsX2RzYl9wcmVwYXJl DQo+IGZ1bmN0aW9uIHdoaWNoIGFsc28gaW5jbHVkZXMgcGlubmluZyBhbmQgbWFwIGluIGNwdSBk b21haW4uDQo+IA0KPiBObyBmdW5jdGlvbmFsIGNoYW5nZSBpcyBkc2Igd3JpdGUvY29tbWl0IGZ1 bmN0aW9ucy4NCj4gDQo+IE5vdyBkc2IgZ2V0L3B1dCBmdW5jdGlvbiBpcyByZW1vdmVkIGFuZCBy ZWYtY291bnQgbWVjaGFuaXNtIGlzIG5vdCBuZWVkZWQuDQo+IEJlbG93IGRzYiBhcGkgYWRkZWQg dG8gZG8gcmVzcGVjdGl2ZSBqb2IgbWVudGlvbmVkIGJlbG93Lg0KPiANCj4gaW50ZWxfZHNiX3By ZXBhcmUgLSBBbGxvY2F0ZSwgcGluIGFuZCBtYXAgdGhlIGJ1ZmZlci4NCj4gaW50ZWxfZHNiX2Ns ZWFudXAgLSBVbnBpbiBhbmQgcmVsZWFzZSB0aGUgZ2VtIG9iamVjdC4NCj4gDQo+IFJGQzogSW5p dGlhbCBwYXRjaCBmb3IgZGVzaWduIHJldmlldy4NCj4gdjI6IGluY2x1ZGVkIF9pbml0KCkgcGFy dCBpbiBfcHJlcGFyZSgpLiBbRGFuaWVsLCBWaWxsZV0NCj4gdjM6IGRzYl9jbGVhbnVwIGNhbGxl ZCBhZnRlciBjbGVhbnVwX3BsYW5lcy4gW0RhbmllbF0NCj4gdjQ6IGRzYiBzdHJ1Y3R1cmUgaXMg bW92ZWQgdG8gaW50ZWxfY3J0Y19zdGF0ZSBmcm9tIGludGVsX2NydGMuIFtNYWFydGVuXQ0KPiB2 NTogZHNiIGdldC9wdXQvcmVmLWNvdW50IG1lY2hhbmlzbSByZW1vdmVkLiBbTWFhcnRlbl0NCj4g djY6IEJhc2VkIG9uIHJldmlldyBmZWVkYmFjayBmb2xsb3dpbmcgY2hhbmdlcyBhcmUgYWRkZWQs DQo+IC0gcmVwbGFjZWQgaW50ZWxfZHNiIHN0cnVjdHVyZSBieSBwb2ludGVyIGluIGludGVsX2Ny dGNfc3RhdGUuIFtNYWFydGVuXQ0KPiAtIHBhc3NpbmcgaW50ZWxfY3J0Y19zdGF0ZSB0byBkc3At YXBpIHRvIHNpbXBsaWZ5IHRoZSBjb2RlLiBbTWFhcnRlbl0NCj4gLSBmZXcgZHNiIGZ1bmN0aW9u cyBwcm90b3R5cGUgbW9kaWZpZWQgdG8gc2ltcGxpZnkgY29kZS4NCj4gdjc6IGFkZGVkIGZldyBj b3NtZXRpYyBjaGFuZ2VzIHN1Z2dlc3RlZCBieSBKYW5pIGFuZCBudWxsIGNoZWNrIGZvciBjcnRj X3N0YXRlIGluDQo+IGRzYl9jbGVhbnVwIHJlbW92ZWQgYXMgc3VnZ2VzdGVkIGJ5IE1hYXJ0ZW4u DQo+IHY4OiBjaGFuZ2VkIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgdG8gaW50ZWxfY3J0Y19zdGF0 ZSogb2YNCj4gaXZiX2xvYWRfbHV0X2V4dF9tYXgoKSBmcm9tIGludGVsX2NydGMuIFtNYWFydGVu XQ0KPiB2OTogZXJyb3IgaGFuZGxpbmcgaW1wcm92ZWQgaW4gX3dyaXRlKCkgYW5kIHByZXBhcmUo KS4gW01hYXJ0ZW5dDQo+IA0KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT4NCj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+DQo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwu Y29tPg0KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4NCj4gQWNr ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+DQo+IFJldmlld2Vk LWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAaW50ZWwuY29tPg0KPiBT aWduZWQtb2ZmLWJ5OiBBbmltZXNoIE1hbm5hIDxhbmltZXNoLm1hbm5hQGludGVsLmNvbT4NCg0K UHVzaGVkIHRoZSBwYXRjaCB0byBkaW5xLiBUaGFua3MgZm9yIHRoZSBwYXRjaCBhbmQgcmV2aWV3 cy4NCg0KUmVnYXJkcywNClVtYSBTaGFua2FyDQoNCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAgMyArDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2NvbG9yLmMgICAgfCAgNjYgKystLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8ICA1OCArKystDQo+ICAuLi4vZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggICAgfCAgIDYgKy0NCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmMgICAgICB8IDI1MCArKysrKysrKy0tLS0tLS0t LS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmggICAgICB8ICAx NyArLQ0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwgMTk0IGRlbGV0aW9u cygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21p Yy5jDQo+IGluZGV4IGQwNDMwNTdkMmZhMC4uM2NiODY2ZjIyZTc0IDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMNCj4gQEAgLTI1Miw2ICsyNTIs NyBAQCBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+ ICAJY3J0Y19zdGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IGZhbHNlOw0KPiAgCWNydGNf c3RhdGUtPmZiX2JpdHMgPSAwOw0KPiAgCWNydGNfc3RhdGUtPnVwZGF0ZV9wbGFuZXMgPSAwOw0K PiArCWNydGNfc3RhdGUtPmRzYiA9IE5VTEw7DQo+IA0KPiAgCXJldHVybiAmY3J0Y19zdGF0ZS0+ dWFwaTsNCj4gIH0NCj4gQEAgLTI5Miw2ICsyOTMsOCBAQCBpbnRlbF9jcnRjX2Rlc3Ryb3lfc3Rh dGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCAgew0KPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShzdGF0ZSk7DQo+IA0KPiArCWRybV9X QVJOX09OKGNydGMtPmRldiwgY3J0Y19zdGF0ZS0+ZHNiKTsNCj4gKw0KPiAgCV9fZHJtX2F0b21p Y19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZjcnRjX3N0YXRlLT51YXBpKTsNCj4gIAlpbnRl bF9jcnRjX2ZyZWVfaHdfc3RhdGUoY3J0Y19zdGF0ZSk7DQo+ICAJa2ZyZWUoY3J0Y19zdGF0ZSk7 DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9y LmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMNCj4gaW5k ZXggOThlY2U5Y2Q3Y2RkLi45NDViYjAzYmRkNGQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMNCj4gQEAgLTcxNCwxNiArNzE0LDE2IEBAIHN0YXRp YyB2b2lkIGJkd19sb2FkX2x1dF8xMChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywNCj4gIAlpbnRl bF9kZV93cml0ZShkZXZfcHJpdiwgUFJFQ19QQUxfSU5ERVgocGlwZSksIDApOyAgfQ0KPiANCj4g LXN0YXRpYyB2b2lkIGl2Yl9sb2FkX2x1dF9leHRfbWF4KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj KQ0KPiArc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0X2V4dF9tYXgoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUNCj4gKypjcnRjX3N0YXRlKQ0KPiAgew0KPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOw0KPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOw0K PiAtCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7DQo+ICAJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOw0KPiANCj4gIAkvKiBQcm9ncmFtIHRoZSBtYXggcmVn aXN0ZXIgdG8gY2xhbXAgdmFsdWVzID4gMS4wLiAqLw0KPiAtCWludGVsX2RzYl9yZWdfd3JpdGUo ZHNiLCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUsIDApLCAxIDw8IDE2KTsNCj4gLQlpbnRlbF9k c2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCAxKSwgMSA8PCAxNik7 DQo+IC0JaW50ZWxfZHNiX3JlZ193cml0ZShkc2IsIFBSRUNfUEFMX0VYVF9HQ19NQVgocGlwZSwg MiksIDEgPDwgMTYpOw0KPiArCWludGVsX2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19Q QUxfRVhUX0dDX01BWChwaXBlLCAwKSwgMSA8PA0KPiAxNik7DQo+ICsJaW50ZWxfZHNiX3JlZ193 cml0ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUsIDEpLCAxIDw8DQo+IDE2 KTsNCj4gKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0VYVF9HQ19N QVgocGlwZSwgMiksIDEgPDwNCj4gKzE2KTsNCj4gDQo+ICAJLyoNCj4gIAkgKiBQcm9ncmFtIHRo ZSBnYyBtYXggMiByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMgPiAxLjAuDQo+IEBAIC03MzEsMTUg KzczMSwxMyBAQCBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRfZXh0X21heChzdHJ1Y3QgaW50ZWxf Y3J0Yw0KPiAqY3J0YykNCj4gIAkgKiBmcm9tIDMuMCB0byA3LjANCj4gIAkgKi8NCj4gIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkgew0K PiAtCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwg MCksDQo+ICsJCWludGVsX2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfRVhUMl9H Q19NQVgocGlwZSwNCj4gMCksDQo+ICAJCQkJICAgIDEgPDwgMTYpOw0KPiAtCQlpbnRlbF9kc2Jf cmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMSksDQo+ICsJCWludGVs X2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwNCj4g MSksDQo+ICAJCQkJICAgIDEgPDwgMTYpOw0KPiAtCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwg UFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMiksDQo+ICsJCWludGVsX2RzYl9yZWdfd3JpdGUo Y3J0Y19zdGF0ZSwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwNCj4gMiksDQo+ICAJCQkJICAg IDEgPDwgMTYpOw0KPiAgCX0NCj4gLQ0KPiAtCWludGVsX2RzYl9wdXQoZHNiKTsNCj4gIH0NCj4g DQo+ICBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKSBAQCAtNzUzLDcNCj4gKzc1MSw3IEBAIHN0YXRpYyB2b2lkIGl2Yl9s b2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ICAJ fSBlbHNlIGlmIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV9TUExJ VCkgew0KPiAgCQlpdmJfbG9hZF9sdXRfMTAoY3J0YywgZGVnYW1tYV9sdXQsIFBBTF9QUkVDX1NQ TElUX01PREUgfA0KPiAgCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVFKDApKTsNCj4gLQkJaXZiX2xv YWRfbHV0X2V4dF9tYXgoY3J0Yyk7DQo+ICsJCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGNfc3Rh dGUpOw0KPiAgCQlpdmJfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19TUExJ VF9NT0RFIHwNCj4gIAkJCQlQQUxfUFJFQ19JTkRFWF9WQUxVRSg1MTIpKTsNCj4gIAl9IGVsc2Ug ew0KPiBAQCAtNzYxLDcgKzc1OSw3IEBAIHN0YXRpYyB2b2lkIGl2Yl9sb2FkX2x1dHMoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpDQo+IA0KPiAgCQlpdmJfbG9h ZF9sdXRfMTAoY3J0YywgYmxvYiwNCj4gIAkJCQlQQUxfUFJFQ19JTkRFWF9WQUxVRSgwKSk7DQo+ IC0JCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOw0KPiArCQlpdmJfbG9hZF9sdXRfZXh0X21h eChjcnRjX3N0YXRlKTsNCj4gIAl9DQo+ICB9DQo+IA0KPiBAQCAtNzc2LDcgKzc3NCw3IEBAIHN0 YXRpYyB2b2lkIGJkd19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4g KmNydGNfc3RhdGUpDQo+ICAJfSBlbHNlIGlmIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdB TU1BX01PREVfTU9ERV9TUExJVCkgew0KPiAgCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZGVnYW1t YV9sdXQsIFBBTF9QUkVDX1NQTElUX01PREUgfA0KPiAgCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVF KDApKTsNCj4gLQkJaXZiX2xvYWRfbHV0X2V4dF9tYXgoY3J0Yyk7DQo+ICsJCWl2Yl9sb2FkX2x1 dF9leHRfbWF4KGNydGNfc3RhdGUpOw0KPiAgCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFf bHV0LCBQQUxfUFJFQ19TUExJVF9NT0RFIHwNCj4gIAkJCQlQQUxfUFJFQ19JTkRFWF9WQUxVRSg1 MTIpKTsNCj4gIAl9IGVsc2Ugew0KPiBAQCAtNzg0LDcgKzc4Miw3IEBAIHN0YXRpYyB2b2lkIGJk d19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUp DQo+IA0KPiAgCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgYmxvYiwNCj4gIAkJCQlQQUxfUFJFQ19J TkRFWF9WQUxVRSgwKSk7DQo+IC0JCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOw0KPiArCQlp dmJfbG9hZF9sdXRfZXh0X21heChjcnRjX3N0YXRlKTsNCj4gIAl9DQo+ICB9DQo+IA0KPiBAQCAt ODc3LDcgKzg3NSw3IEBAIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpDQo+ICAJCWlsa19sb2FkX2x1dF84KGNydGMs IGdhbW1hX2x1dCk7DQo+ICAJfSBlbHNlIHsNCj4gIAkJYmR3X2xvYWRfbHV0XzEwKGNydGMsIGdh bW1hX2x1dCwgUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCkpOw0KPiAtCQlpdmJfbG9hZF9sdXRfZXh0 X21heChjcnRjKTsNCj4gKwkJaXZiX2xvYWRfbHV0X2V4dF9tYXgoY3J0Y19zdGF0ZSk7DQo+ICAJ fQ0KPiAgfQ0KPiANCj4gQEAgLTkwMCwxNCArODk4LDEyIEBAIGljbF9sb2FkX2djbWF4KGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpjcnRjX3N0YXRlLA0KPiAgCSAgICAgICBjb25z dCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpICB7DQo+ICAJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+IC0Jc3RydWN0 IGludGVsX2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsNCj4gIAllbnVtIHBpcGUgcGlw ZSA9IGNydGMtPnBpcGU7DQo+IA0KPiAgCS8qIEZJWE1FIExVVCBlbnRyaWVzIGFyZSAxNiBiaXQg b25seSwgc28gd2UgY2FuIHByb2cgMHhGRkZGIG1heCAqLw0KPiAtCWludGVsX2RzYl9yZWdfd3Jp dGUoZHNiLCBQUkVDX1BBTF9HQ19NQVgocGlwZSwgMCksIGNvbG9yLT5yZWQpOw0KPiAtCWludGVs X2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksIGNvbG9yLT5ncmVl bik7DQo+IC0JaW50ZWxfZHNiX3JlZ193cml0ZShkc2IsIFBSRUNfUEFMX0dDX01BWChwaXBlLCAy KSwgY29sb3ItPmJsdWUpOw0KPiAtCWludGVsX2RzYl9wdXQoZHNiKTsNCj4gKwlpbnRlbF9kc2Jf cmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwgY29sb3ItPnJl ZCk7DQo+ICsJaW50ZWxfZHNiX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9HQ19NQVgo cGlwZSwgMSksIGNvbG9yLQ0KPiA+Z3JlZW4pOw0KPiArCWludGVsX2RzYl9yZWdfd3JpdGUoY3J0 Y19zdGF0ZSwgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLA0KPiArY29sb3ItPmJsdWUpOw0KPiAg fQ0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IEBAIC05MTYsNyArOTEyLDYgQEAgaWNsX3Byb2dyYW1f Z2FtbWFfc3VwZXJmaW5lX3NlZ21lbnQoY29uc3Qgc3RydWN0DQo+IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpDQo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+ICAJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpibG9iID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0Ow0KPiAgCWNvbnN0IHN0cnVjdCBk cm1fY29sb3JfbHV0ICpsdXQgPSBibG9iLT5kYXRhOw0KPiAtCXN0cnVjdCBpbnRlbF9kc2IgKmRz YiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7DQo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl Ow0KPiAgCWludCBpOw0KPiANCj4gQEAgLTkyNywxOSArOTIyLDE3IEBAIGljbF9wcm9ncmFtX2dh bW1hX3N1cGVyZmluZV9zZWdtZW50KGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQ0KPiAgCSAqIDkgZW50cmllcywgY29ycmVzcG9uZGluZyB0byB2YWx1ZXMgMCwg MS8oOCAqIDEyOCAqIDI1NiksDQo+ICAJICogMi8oOCAqIDEyOCAqIDI1NikgLi4uIDgvKDggKiAx MjggKiAyNTYpLg0KPiAgCSAqLw0KPiAtCWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BB TF9NVUxUSV9TRUdfSU5ERVgocGlwZSksDQo+ICsJaW50ZWxfZHNiX3JlZ193cml0ZShjcnRjX3N0 YXRlLCBQUkVDX1BBTF9NVUxUSV9TRUdfSU5ERVgocGlwZSksDQo+ICAJCQkgICAgUEFMX1BSRUNf QVVUT19JTkNSRU1FTlQpOw0KPiANCj4gIAlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKSB7DQo+ICAJ CWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICplbnRyeSA9ICZsdXRbaV07DQo+IA0KPiAtCQlp bnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoZHNiLA0KPiBQUkVDX1BBTF9NVUxUSV9TRUdfREFU QShwaXBlKSwNCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3RhdGUsDQo+ ICtQUkVDX1BBTF9NVUxUSV9TRUdfREFUQShwaXBlKSwNCj4gIAkJCQkJICAgIGlsa19sdXRfMTJw NF9sZHcoZW50cnkpKTsNCj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwNCj4g UFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksDQo+ICsJCWludGVsX2RzYl9pbmRleGVkX3Jl Z193cml0ZShjcnRjX3N0YXRlLA0KPiArUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksDQo+ ICAJCQkJCSAgICBpbGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7DQo+ICAJfQ0KPiAtDQo+IC0JaW50 ZWxfZHNiX3B1dChkc2IpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IEBAIC05NDksNyAr OTQyLDYgQEAgaWNsX3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QNCj4g aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkNCj4gIAljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmJsb2IgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7DQo+ICAJY29uc3Qgc3Ry dWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGJsb2ItPmRhdGE7DQo+ICAJY29uc3Qgc3RydWN0IGRy bV9jb2xvcl9sdXQgKmVudHJ5Ow0KPiAtCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2Rz Yl9nZXQoY3J0Yyk7DQo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOw0KPiAgCWludCBp Ow0KPiANCj4gQEAgLTk2MywxMiArOTU1LDEzIEBAIGljbF9wcm9ncmFtX2dhbW1hX211bHRpX3Nl Z21lbnQoY29uc3Qgc3RydWN0DQo+IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ICAJ ICogUEFMX1BSRUNfSU5ERVhbMF0gYW5kIFBBTF9QUkVDX0lOREVYWzFdIG1hcCB0byBzZWcyWzFd LA0KPiAgCSAqIHNlZzJbMF0gYmVpbmcgdW51c2VkIGJ5IHRoZSBoYXJkd2FyZS4NCj4gIAkgKi8N Cj4gLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfSU5ERVgocGlwZSksDQo+IFBB TF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsNCj4gKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGNydGNfc3Rh dGUsIFBSRUNfUEFMX0lOREVYKHBpcGUpLA0KPiArCQkJICAgIFBBTF9QUkVDX0FVVE9fSU5DUkVN RU5UKTsNCj4gIAlmb3IgKGkgPSAxOyBpIDwgMjU3OyBpKyspIHsNCj4gIAkJZW50cnkgPSAmbHV0 W2kgKiA4XTsNCj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxf REFUQShwaXBlKSwNCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3RhdGUs IFBSRUNfUEFMX0RBVEEocGlwZSksDQo+ICAJCQkJCSAgICBpbGtfbHV0XzEycDRfbGR3KGVudHJ5 KSk7DQo+IC0JCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShkc2IsIFBSRUNfUEFMX0RBVEEo cGlwZSksDQo+ICsJCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVD X1BBTF9EQVRBKHBpcGUpLA0KPiAgCQkJCQkgICAgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOw0K PiAgCX0NCj4gDQo+IEBAIC05ODYsMjQgKzk3OSwyMiBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0 aV9zZWdtZW50KGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQ0K PiAgCSAqLw0KPiAgCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgew0KPiAgCQllbnRyeSA9ICZs dXRbaSAqIDggKiAxMjhdOw0KPiAtCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoZHNiLCBQ UkVDX1BBTF9EQVRBKHBpcGUpLA0KPiArCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoY3J0 Y19zdGF0ZSwgUFJFQ19QQUxfREFUQShwaXBlKSwNCj4gIAkJCQkJICAgIGlsa19sdXRfMTJwNF9s ZHcoZW50cnkpKTsNCj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19Q QUxfREFUQShwaXBlKSwNCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3Rh dGUsIFBSRUNfUEFMX0RBVEEocGlwZSksDQo+ICAJCQkJCSAgICBpbGtfbHV0XzEycDRfdWR3KGVu dHJ5KSk7DQo+ICAJfQ0KPiANCj4gIAkvKiBUaGUgbGFzdCBlbnRyeSBpbiB0aGUgTFVUIGlzIHRv IGJlIHByb2dyYW1tZWQgaW4gR0NNQVggKi8NCj4gIAllbnRyeSA9ICZsdXRbMjU2ICogOCAqIDEy OF07DQo+ICAJaWNsX2xvYWRfZ2NtYXgoY3J0Y19zdGF0ZSwgZW50cnkpOw0KPiAtCWl2Yl9sb2Fk X2x1dF9leHRfbWF4KGNydGMpOw0KPiAtCWludGVsX2RzYl9wdXQoZHNiKTsNCj4gKwlpdmJfbG9h ZF9sdXRfZXh0X21heChjcnRjX3N0YXRlKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBpY2xf bG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSAgew0K PiAgCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0 ZS0NCj4gPmh3LmdhbW1hX2x1dDsNCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsNCj4gLQlzdHJ1Y3QgaW50ZWxfZHNiICpk c2IgPSBpbnRlbF9kc2JfZ2V0KGNydGMpOw0KPiANCj4gIAlpZiAoY3J0Y19zdGF0ZS0+aHcuZGVn YW1tYV9sdXQpDQo+ICAJCWdsa19sb2FkX2RlZ2FtbWFfbHV0KGNydGNfc3RhdGUpOw0KPiBAQCAt MTAxOCwxMSArMTAwOSwxMCBAQCBzdGF0aWMgdm9pZCBpY2xfbG9hZF9sdXRzKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpjcnRjX3N0YXRlKQ0KPiAgCQlicmVhazsNCj4gIAlkZWZh dWx0Og0KPiAgCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19JTkRF WF9WQUxVRSgwKSk7DQo+IC0JCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOw0KPiArCQlpdmJf bG9hZF9sdXRfZXh0X21heChjcnRjX3N0YXRlKTsNCj4gIAl9DQo+IA0KPiAtCWludGVsX2RzYl9j b21taXQoZHNiKTsNCj4gLQlpbnRlbF9kc2JfcHV0KGRzYik7DQo+ICsJaW50ZWxfZHNiX2NvbW1p dChjcnRjX3N0YXRlKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdTMyIGNodl9jZ21fZGVnYW1tYV9s ZHcoY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKSBkaWZmIC0tZ2l0DQo+IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMNCj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiBpbmRleCA0MzJiNGVlYWY5ZjYu LjUxNDQ4M2ZmZDI0NyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmMNCj4gQEAgLTE0ODczLDggKzE0ODczLDI0IEBAIHN0YXRpYyBpbnQgaW50 ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlDQo+ICpkZXYsDQo+IA0KPiAgc3RhdGlj IGludCBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUpICB7DQo+IC0JcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVz KHN0YXRlLT5iYXNlLmRldiwNCj4gLQkJCQkJCSZzdGF0ZS0+YmFzZSk7DQo+ICsJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7DQo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7 DQo+ICsJaW50IGksIHJldDsNCj4gKw0KPiArCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBh cmVfcGxhbmVzKHN0YXRlLT5iYXNlLmRldiwgJnN0YXRlLQ0KPiA+YmFzZSk7DQo+ICsJaWYgKHJl dCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgew0KPiArCQlib29sIG1vZGVf Y2hhbmdlZCA9IG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSk7DQo+ICsNCj4gKwkJaWYgKG1vZGVf Y2hhbmdlZCB8fCBjcnRjX3N0YXRlLT51cGRhdGVfcGlwZSB8fA0KPiArCQkgICAgY3J0Y19zdGF0 ZS0+dWFwaS5jb2xvcl9tZ210X2NoYW5nZWQpIHsNCj4gKwkJCWludGVsX2RzYl9wcmVwYXJlKGNy dGNfc3RhdGUpOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICB9DQo+IA0K PiAgdTMyIGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKSBAQCAtMTUzMjcsMTUNCj4gKzE1MzQzLDI3IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21p Y19jb21taXRfZmVuY2Vfd2FpdChzdHJ1Y3QNCj4gaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9z dGF0DQo+ICAJCSAgICAmd2FpdF9yZXNldCk7DQo+ICB9DQo+IA0KPiArc3RhdGljIHZvaWQgaW50 ZWxfY2xlYW51cF9kc2JzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKSB7DQo+ICsJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7 DQo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlmb3Jf ZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3Rh dGUsDQo+ICsJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkNCj4gKwkJaW50ZWxfZHNiX2NsZWFu dXAob2xkX2NydGNfc3RhdGUpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9hdG9t aWNfY2xlYW51cF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykgIHsNCj4gLQlzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPQ0KPiAtCQljb250YWluZXJfb2Yod29yaywgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUsIGNvbW1pdF93b3JrKTsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUoc3RhdGUtPmRldik7DQo+ICsJc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUgPQ0KPiArCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSwNCj4gYmFzZS5jb21taXRfd29yayk7DQo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7DQo+IA0KPiAtCWRybV9hdG9t aWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKCZpOTE1LT5kcm0sIHN0YXRlKTsNCj4gLQlkcm1fYXRv bWljX2hlbHBlcl9jb21taXRfY2xlYW51cF9kb25lKHN0YXRlKTsNCj4gLQlkcm1fYXRvbWljX3N0 YXRlX3B1dChzdGF0ZSk7DQo+ICsJaW50ZWxfY2xlYW51cF9kc2JzKHN0YXRlKTsNCj4gKwlkcm1f YXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcygmaTkxNS0+ZHJtLCAmc3RhdGUtPmJhc2UpOw0K PiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVhbnVwX2RvbmUoJnN0YXRlLT5iYXNlKTsN Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dCgmc3RhdGUtPmJhc2UpOw0KPiANCj4gIAlpbnRlbF9h dG9taWNfaGVscGVyX2ZyZWVfc3RhdGUoaTkxNSk7DQo+ICB9DQo+IEBAIC0xNTQ2OSw2ICsxNTQ5 NywxMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0DQo+IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICAJCQltb2Rlc2V0X3B1dF9wb3dlcl9kb21haW5z KGRldl9wcml2LA0KPiBwdXRfZG9tYWluc1tpXSk7DQo+IA0KPiAgCQlpbnRlbF9tb2Rlc2V0X3Zl cmlmeV9jcnRjKGNydGMsIHN0YXRlLCBvbGRfY3J0Y19zdGF0ZSwNCj4gbmV3X2NydGNfc3RhdGUp Ow0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIERTQiBjbGVhbnVwIGlzIGRvbmUgaW4gY2xlYW51cF93 b3JrIGFsaWduaW5nIHdpdGggZnJhbWVidWZmZXINCj4gKwkJICogY2xlYW51cC4gU28gY29weSBh bmQgcmVzZXQgdGhlIGRzYiBzdHJ1Y3R1cmUgdG8gc3luYyB3aXRoDQo+ICsJCSAqIGNvbW1pdF9k b25lIGFuZCBsYXRlciBkbyBkc2IgY2xlYW51cCBpbiBjbGVhbnVwX3dvcmsuDQo+ICsJCSAqLw0K PiArCQlvbGRfY3J0Y19zdGF0ZS0+ZHNiID0gZmV0Y2hfYW5kX3plcm8oJm5ld19jcnRjX3N0YXRl LT5kc2IpOw0KPiAgCX0NCj4gDQo+ICAJLyogVW5kZXJydW5zIGRvbid0IGFsd2F5cyByYWlzZSBp bnRlcnJ1cHRzLCBzbyBjaGVjayBtYW51YWxseSAqLyBAQCAtDQo+IDE1NjE4LDggKzE1NjUzLDE1 IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LA0KPiAgCQlpbnRlbF9hdG9taWNfc3dhcF9nbG9iYWxfc3RhdGUoc3RhdGUpOw0KPiANCj4gIAlp ZiAocmV0KSB7DQo+ICsJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsN Cj4gKwkJc3RydWN0IGludGVsX2NydGMgKmNydGM7DQo+ICsJCWludCBpOw0KPiArDQo+ICAJCWk5 MTVfc3dfZmVuY2VfY29tbWl0KCZzdGF0ZS0+Y29tbWl0X3JlYWR5KTsNCj4gDQo+ICsJCWZvcl9l YWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwg aSkNCj4gKwkJCWludGVsX2RzYl9jbGVhbnVwKG5ld19jcnRjX3N0YXRlKTsNCj4gKw0KPiAgCQlk cm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsICZzdGF0ZS0+YmFzZSk7DQo+ICAJ CWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgc3RhdGUtPndha2Vy ZWYpOw0KPiAgCQlyZXR1cm4gcmV0Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBpbmRleCA4Nzg3NmZjZTkxYTUuLmNh NTc5MDA1ZDgxOCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gQEAgLTEwNzgsNiArMTA3OCw5IEBAIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlIHsNCj4gDQo+ICAJLyogT25seSB2YWxpZCBvbiBUR0wrICovDQo+ICAJ ZW51bSB0cmFuc2NvZGVyIG1zdF9tYXN0ZXJfdHJhbnNjb2RlcjsNCj4gKw0KPiArCS8qIEZvciBE U0IgcmVsYXRlZCBpbmZvICovDQo+ICsJc3RydWN0IGludGVsX2RzYiAqZHNiOw0KPiAgfTsNCj4g DQo+ICBlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSB7DQo+IEBAIC0xMTQ3LDkgKzExNTAsNiBA QCBzdHJ1Y3QgaW50ZWxfY3J0YyB7DQo+ICAJLyogc2NhbGVycyBhdmFpbGFibGUgb24gdGhpcyBj cnRjICovDQo+ICAJaW50IG51bV9zY2FsZXJzOw0KPiANCj4gLQkvKiBwZXIgcGlwZSBEU0IgcmVs YXRlZCBpbmZvICovDQo+IC0Jc3RydWN0IGludGVsX2RzYiBkc2I7DQo+IC0NCj4gICNpZmRlZiBD T05GSUdfREVCVUdfRlMNCj4gIAlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgcGlwZV9jcmM7DQo+ICAj ZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZHNiLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzYi5jDQo+IGlu ZGV4IDI5ZmVjNmE5MmQxNy4uNDc1MTA2ZTkxZmE3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzYi5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmMNCj4gQEAgLTM0LDE1MiArMzQsNTIgQEANCj4gICNkZWZp bmUgRFNCX0JZVEVfRU5fU0hJRlQJCTIwDQo+ICAjZGVmaW5lIERTQl9SRUdfVkFMVUVfTUFTSwkJ MHhmZmZmZg0KPiANCj4gLXN0YXRpYyBib29sIGlzX2RzYl9idXN5KHN0cnVjdCBpbnRlbF9kc2Ig KmRzYikNCj4gK3N0YXRpYyBib29sIGlzX2RzYl9idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LCBlbnVtIHBpcGUgcGlwZSwNCj4gKwkJCWVudW0gZHNiX2lkIGlkKQ0KPiAgew0KPiAt CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRj KSwgZHNiKTsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsNCj4gLQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7DQo+IC0N Cj4gLQlyZXR1cm4gRFNCX1NUQVRVUyAmIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIERTQl9DVFJM KHBpcGUsIGRzYi0+aWQpKTsNCj4gKwlyZXR1cm4gRFNCX1NUQVRVUyAmIGludGVsX2RlX3JlYWQo aTkxNSwgRFNCX0NUUkwocGlwZSwgaWQpKTsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgYm9vbCBpbnRl bF9kc2JfZW5hYmxlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpDQo+ICtzdGF0aWMgYm9v bCBpbnRlbF9kc2JfZW5hYmxlX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwN Cj4gKwkJCQkgICAgZW51bSBwaXBlIHBpcGUsIGVudW0gZHNiX2lkIGlkKQ0KPiAgew0KPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRjKSwg ZHNiKTsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsNCj4gLQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7DQo+ICAJdTMy IGRzYl9jdHJsOw0KPiANCj4gLQlkc2JfY3RybCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIERT Ql9DVFJMKHBpcGUsIGRzYi0+aWQpKTsNCj4gKwlkc2JfY3RybCA9IGludGVsX2RlX3JlYWQoaTkx NSwgRFNCX0NUUkwocGlwZSwgaWQpKTsNCj4gIAlpZiAoRFNCX1NUQVRVUyAmIGRzYl9jdHJsKSB7 DQo+IC0JCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRFNCIGVuZ2luZSBpcyBidXN5Llxu Iik7DQo+ICsJCWRybV9kYmdfa21zKCZpOTE1LT5kcm0sICJEU0IgZW5naW5lIGlzIGJ1c3kuXG4i KTsNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCX0NCj4gDQo+ICAJZHNiX2N0cmwgfD0gRFNCX0VO QUJMRTsNCj4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRFNCX0NUUkwocGlwZSwgZHNiLT5p ZCksIGRzYl9jdHJsKTsNCj4gKwlpbnRlbF9kZV93cml0ZShpOTE1LCBEU0JfQ1RSTChwaXBlLCBp ZCksIGRzYl9jdHJsKTsNCj4gDQo+IC0JaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBE U0JfQ1RSTChwaXBlLCBkc2ItPmlkKSk7DQo+ICsJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGk5MTUs IERTQl9DVFJMKHBpcGUsIGlkKSk7DQo+ICAJcmV0dXJuIHRydWU7DQo+ICB9DQo+IA0KPiAtc3Rh dGljIGJvb2wgaW50ZWxfZHNiX2Rpc2FibGVfZW5naW5lKHN0cnVjdCBpbnRlbF9kc2IgKmRzYikN Cj4gK3N0YXRpYyBib29sIGludGVsX2RzYl9kaXNhYmxlX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwNCj4gKwkJCQkgICAgIGVudW0gcGlwZSBwaXBlLCBlbnVtIGRzYl9pZCBp ZCkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGNvbnRhaW5lcl9vZihkc2Is IHR5cGVvZigqY3J0YyksIGRzYik7DQo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+IC0JZW51bSBwaXBlIHBpcGUgPSBjcnRj LT5waXBlOw0KPiAgCXUzMiBkc2JfY3RybDsNCj4gDQo+IC0JZHNiX2N0cmwgPSBpbnRlbF9kZV9y ZWFkKGRldl9wcml2LCBEU0JfQ1RSTChwaXBlLCBkc2ItPmlkKSk7DQo+ICsJZHNiX2N0cmwgPSBp bnRlbF9kZV9yZWFkKGk5MTUsIERTQl9DVFJMKHBpcGUsIGlkKSk7DQo+ICAJaWYgKERTQl9TVEFU VVMgJiBkc2JfY3RybCkgew0KPiAtCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkRTQiBl bmdpbmUgaXMgYnVzeS5cbiIpOw0KPiArCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiRFNCIGVu Z2luZSBpcyBidXN5LlxuIik7DQo+ICAJCXJldHVybiBmYWxzZTsNCj4gIAl9DQo+IA0KPiAgCWRz Yl9jdHJsICY9IH5EU0JfRU5BQkxFOw0KPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBEU0Jf Q1RSTChwaXBlLCBkc2ItPmlkKSwgZHNiX2N0cmwpOw0KPiArCWludGVsX2RlX3dyaXRlKGk5MTUs IERTQl9DVFJMKHBpcGUsIGlkKSwgZHNiX2N0cmwpOw0KPiANCj4gLQlpbnRlbF9kZV9wb3N0aW5n X3JlYWQoZGV2X3ByaXYsIERTQl9DVFJMKHBpcGUsIGRzYi0+aWQpKTsNCj4gKwlpbnRlbF9kZV9w b3N0aW5nX3JlYWQoaTkxNSwgRFNCX0NUUkwocGlwZSwgaWQpKTsNCj4gIAlyZXR1cm4gdHJ1ZTsN Cj4gIH0NCj4gDQo+IC0vKioNCj4gLSAqIGludGVsX2RzYl9nZXQoKSAtIEFsbG9jYXRlIERTQiBj b250ZXh0IGFuZCByZXR1cm4gYSBEU0IgaW5zdGFuY2UuDQo+IC0gKiBAY3J0YzogaW50ZWxfY3J0 YyBzdHJ1Y3R1cmUgdG8gZ2V0IHBpcGUgaW5mby4NCj4gLSAqDQo+IC0gKiBUaGlzIGZ1bmN0aW9u IHByb3ZpZGVzIGhhbmRsZSBvZiBhIERTQiBpbnN0YW5jZSwgZm9yIHRoZSBmdXJ0aGVyIERTQg0K PiAtICogb3BlcmF0aW9ucy4NCj4gLSAqDQo+IC0gKiBSZXR1cm5zOiBhZGRyZXNzIG9mIEludGVs X2RzYiBpbnN0YW5jZSByZXF1ZXN0ZWQgZm9yLg0KPiAtICogRmFpbHVyZTogUmV0dXJucyB0aGUg c2FtZSBEU0IgaW5zdGFuY2UsIGJ1dCB3aXRob3V0IGEgY29tbWFuZCBidWZmZXIuDQo+IC0gKi8N Cj4gLQ0KPiAtc3RydWN0IGludGVsX2RzYiAqDQo+IC1pbnRlbF9kc2JfZ2V0KHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQ0KPiAtew0KPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5i YXNlLmRldjsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2 KTsNCj4gLQlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSAmY3J0Yy0+ZHNiOw0KPiAtCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7DQo+IC0Jc3RydWN0IGk5MTVfdm1hICp2bWE7DQo+IC0J dTMyICpidWY7DQo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7DQo+IC0NCj4gLQlpZiAoIUhB U19EU0IoaTkxNSkpDQo+IC0JCXJldHVybiBkc2I7DQo+IC0NCj4gLQlpZiAoZHNiLT5yZWZjb3Vu dCsrICE9IDApDQo+IC0JCXJldHVybiBkc2I7DQo+IC0NCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOw0KPiAtDQo+IC0Jb2JqID0gaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBEU0JfQlVGX1NJWkUpOw0KPiAtCWlmIChJU19F UlIob2JqKSkgew0KPiAtCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJHZW0gb2JqZWN0IGNyZWF0aW9u IGZhaWxlZFxuIik7DQo+IC0JCWdvdG8gb3V0Ow0KPiAtCX0NCj4gLQ0KPiAtCXZtYSA9IGk5MTVf Z2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAsIDAsIDApOw0KPiAtCWlmIChJU19FUlIo dm1hKSkgew0KPiAtCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJWbWEgY3JlYXRpb24gZmFpbGVkXG4i KTsNCj4gLQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOw0KPiAtCQlnb3RvIG91dDsNCj4gLQl9 DQo+IC0NCj4gLQlidWYgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh2bWEtPm9iaiwgSTkxNV9N QVBfV0MpOw0KPiAtCWlmIChJU19FUlIoYnVmKSkgew0KPiAtCQlkcm1fZXJyKCZpOTE1LT5kcm0s ICJDb21tYW5kIGJ1ZmZlciBjcmVhdGlvbiBmYWlsZWRcbiIpOw0KPiAtCQlnb3RvIG91dDsNCj4g LQl9DQo+IC0NCj4gLQlkc2ItPmlkID0gRFNCMTsNCj4gLQlkc2ItPnZtYSA9IHZtYTsNCj4gLQlk c2ItPmNtZF9idWYgPSBidWY7DQo+IC0NCj4gLW91dDoNCj4gLQkvKg0KPiAtCSAqIE9uIGVycm9y IGRzYi0+Y21kX2J1ZiB3aWxsIGNvbnRpbnVlIHRvIGJlIE5VTEwsIG1ha2luZyB0aGUgd3JpdGVz DQo+IC0JICogcGFzcy10aHJvdWdoLiBMZWF2ZSB0aGUgZGFuZ2xpbmcgcmVmIHRvIGJlIHJlbW92 ZWQgbGF0ZXIgYnkgdGhlDQo+IC0JICogY29ycmVzcG9uZGluZyBpbnRlbF9kc2JfcHV0KCk6IHRo ZSBpbXBvcnRhbnQgZXJyb3IgbWVzc2FnZSB3aWxsDQo+IC0JICogYWxyZWFkeSBiZSBsb2dnZWQg YWJvdmUuDQo+IC0JICovDQo+IC0NCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVu dGltZV9wbSwgd2FrZXJlZik7DQo+IC0NCj4gLQlyZXR1cm4gZHNiOw0KPiAtfQ0KPiAtDQo+IC0v KioNCj4gLSAqIGludGVsX2RzYl9wdXQoKSAtIFRvIGRlc3Ryb3kgRFNCIGNvbnRleHQuDQo+IC0g KiBAZHNiOiBpbnRlbF9kc2Igc3RydWN0dXJlLg0KPiAtICoNCj4gLSAqIFRoaXMgZnVuY3Rpb24g ZGVzdHJveXMgdGhlIERTQiBjb250ZXh0IGFsbG9jYXRlZCBieSBhIGRzYl9nZXQoKSwgYnkNCj4g LSAqIHVucGlubmluZyBhbmQgcmVsZWFzaW5nIHRoZSBWTUEgb2JqZWN0IGFzc29jaWF0ZWQgd2l0 aCBpdC4NCj4gLSAqLw0KPiAtDQo+IC12b2lkIGludGVsX2RzYl9wdXQoc3RydWN0IGludGVsX2Rz YiAqZHNiKSAtew0KPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRz YiwgdHlwZW9mKCpjcnRjKSwgZHNiKTsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOw0KPiAtDQo+IC0JaWYgKCFIQVNfRFNCKGk5MTUp KQ0KPiAtCQlyZXR1cm47DQo+IC0NCj4gLQlpZiAoZHJtX1dBUk5fT04oJmk5MTUtPmRybSwgZHNi LT5yZWZjb3VudCA9PSAwKSkNCj4gLQkJcmV0dXJuOw0KPiAtDQo+IC0JaWYgKC0tZHNiLT5yZWZj b3VudCA9PSAwKSB7DQo+IC0JCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZkc2ItPnZtYSwN Cj4gSTkxNV9WTUFfUkVMRUFTRV9NQVApOw0KPiAtCQlkc2ItPmNtZF9idWYgPSBOVUxMOw0KPiAt CQlkc2ItPmZyZWVfcG9zID0gMDsNCj4gLQkJZHNiLT5pbnNfc3RhcnRfb2Zmc2V0ID0gMDsNCj4g LQl9DQo+IC19DQo+IC0NCj4gIC8qKg0KPiAgICogaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRl KCkgLVdyaXRlIHRvIHRoZSBEU0IgY29udGV4dCBmb3IgYXV0bw0KPiAgICogaW5jcmVtZW50IHJl Z2lzdGVyLg0KPiAtICogQGRzYjogaW50ZWxfZHNiIHN0cnVjdHVyZS4NCj4gKyAqIEBjcnRjX3N0 YXRlOiBpbnRlbF9jcnRjX3N0YXRlIHN0cnVjdHVyZQ0KPiAgICogQHJlZzogcmVnaXN0ZXIgYWRk cmVzcy4NCj4gICAqIEB2YWw6IHZhbHVlLg0KPiAgICoNCj4gQEAgLTE4OSwxOSArODksMjAgQEAg dm9pZCBpbnRlbF9kc2JfcHV0KHN0cnVjdCBpbnRlbF9kc2IgKmRzYikNCj4gICAqIGlzIGRvbmUg dGhyb3VnaCBtbWlvIHdyaXRlLg0KPiAgICovDQo+IA0KPiAtdm9pZCBpbnRlbF9kc2JfaW5kZXhl ZF9yZWdfd3JpdGUoc3RydWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywNCj4gLQkJ CQkgdTMyIHZhbCkNCj4gK3ZvaWQgaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiArCQkJCSBpOTE1X3JlZ190IHJl ZywgdTMyIHZhbCkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGNvbnRhaW5l cl9vZihkc2IsIHR5cGVvZigqY3J0YyksIGRzYik7DQo+ICsJc3RydWN0IGludGVsX2RzYiAqZHNi ID0gY3J0Y19zdGF0ZS0+ZHNiOw0KPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOw0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOw0KPiAtCXUzMiAqYnVmID0g ZHNiLT5jbWRfYnVmOw0KPiArCXUzMiAqYnVmOw0KPiAgCXUzMiByZWdfdmFsOw0KPiANCj4gLQlp ZiAoIWJ1Zikgew0KPiArCWlmICghZHNiKSB7DQo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCByZWcsIHZhbCk7DQo+ICAJCXJldHVybjsNCj4gIAl9DQo+IC0NCj4gKwlidWYgPSBkc2ItPmNt ZF9idWY7DQo+ICAJaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBkc2ItPmZyZWVfcG9z ID49IERTQl9CVUZfU0laRSkpIHsNCj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJE U0IgYnVmZmVyIG92ZXJmbG93XG4iKTsNCj4gIAkJcmV0dXJuOw0KPiBAQCAtMjU2LDcgKzE1Nyw3 IEBAIHZvaWQgaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9kc2IgKmRz YiwNCj4gaTkxNV9yZWdfdCByZWcsDQo+ICAvKioNCj4gICAqIGludGVsX2RzYl9yZWdfd3JpdGUo KSAtV3JpdGUgdG8gdGhlIERTQiBjb250ZXh0IGZvciBub3JtYWwNCj4gICAqIHJlZ2lzdGVyLg0K PiAtICogQGRzYjogaW50ZWxfZHNiIHN0cnVjdHVyZS4NCj4gKyAqIEBjcnRjX3N0YXRlOiBpbnRl bF9jcnRjX3N0YXRlIHN0cnVjdHVyZQ0KPiAgICogQHJlZzogcmVnaXN0ZXIgYWRkcmVzcy4NCj4g ICAqIEB2YWw6IHZhbHVlLg0KPiAgICoNCj4gQEAgLTI2NSwxNyArMTY2LDE5IEBAIHZvaWQgaW50 ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9kc2INCj4gKmRzYiwgaTkxNV9y ZWdfdCByZWcsDQo+ICAgKiBhbmQgcmVzdCBhbGwgZXJyb25lb3VzIGNvbmRpdGlvbiByZWdpc3Rl ciBwcm9ncmFtbWluZyBpcyBkb25lDQo+ICAgKiB0aHJvdWdoIG1taW8gd3JpdGUuDQo+ICAgKi8N Cj4gLXZvaWQgaW50ZWxfZHNiX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVf cmVnX3QgcmVnLCB1MzIgdmFsKQ0KPiArdm9pZCBpbnRlbF9kc2JfcmVnX3dyaXRlKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiArCQkJIGk5MTVfcmVnX3QgcmVn LCB1MzIgdmFsKQ0KPiAgew0KPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVy X29mKGRzYiwgdHlwZW9mKCpjcnRjKSwgZHNiKTsNCj4gKwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2Ig PSBjcnRjX3N0YXRlLT5kc2I7DQo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+ICAJdTMyICpidWYgPSBk c2ItPmNtZF9idWY7DQo+IA0KPiAtCWlmICghYnVmKSB7DQo+ICsJaWYgKCFkc2IpIHsNCj4gIAkJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdmFsKTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0N Cj4gLQ0KPiArCWJ1ZiA9IGRzYi0+Y21kX2J1ZjsNCj4gIAlpZiAoZHJtX1dBUk5fT04oJmRldl9w cml2LT5kcm0sIGRzYi0+ZnJlZV9wb3MgPj0gRFNCX0JVRl9TSVpFKSkgew0KPiAgCQlkcm1fZGJn X2ttcygmZGV2X3ByaXYtPmRybSwgIkRTQiBidWZmZXIgb3ZlcmZsb3dcbiIpOw0KPiAgCQlyZXR1 cm47DQo+IEBAIC0yOTAsMjYgKzE5MywyNyBAQCB2b2lkIGludGVsX2RzYl9yZWdfd3JpdGUoc3Ry dWN0IGludGVsX2RzYiAqZHNiLA0KPiBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkNCj4gDQo+ICAv KioNCj4gICAqIGludGVsX2RzYl9jb21taXQoKSAtIFRyaWdnZXIgd29ya2xvYWQgZXhlY3V0aW9u IG9mIERTQi4NCj4gLSAqIEBkc2I6IGludGVsX2RzYiBzdHJ1Y3R1cmUuDQo+ICsgKiBAY3J0Y19z dGF0ZTogaW50ZWxfY3J0Y19zdGF0ZSBzdHJ1Y3R1cmUNCj4gICAqDQo+ICAgKiBUaGlzIGZ1bmN0 aW9uIGlzIHVzZWQgdG8gZG8gYWN0dWFsIHdyaXRlIHRvIGhhcmR3YXJlIHVzaW5nIERTQi4NCj4g ICAqIE9uIGVycm9ycywgZmFsbCBiYWNrIHRvIE1NSU8uIEFsc28gdGhpcyBmdW5jdGlvbiBoZWxw IHRvIHJlc2V0IHRoZSBjb250ZXh0Lg0KPiAgICovDQo+IC12b2lkIGludGVsX2RzYl9jb21taXQo c3RydWN0IGludGVsX2RzYiAqZHNiKQ0KPiArdm9pZCBpbnRlbF9kc2JfY29tbWl0KGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQ0KPiAgew0KPiAtCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRjKSwgZHNiKTsNCj4g KwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBjcnRjX3N0YXRlLT5kc2I7DQo+ICsJc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+ ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Ow0KPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsNCj4gIAllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7DQo+ICAJdTMyIHRhaWw7DQo+IA0KPiAtCWlmICghZHNiLT5mcmVl X3BvcykNCj4gKwlpZiAoIShkc2IgJiYgZHNiLT5mcmVlX3BvcykpDQo+ICAJCXJldHVybjsNCj4g DQo+IC0JaWYgKCFpbnRlbF9kc2JfZW5hYmxlX2VuZ2luZShkc2IpKQ0KPiArCWlmICghaW50ZWxf ZHNiX2VuYWJsZV9lbmdpbmUoZGV2X3ByaXYsIHBpcGUsIGRzYi0+aWQpKQ0KPiAgCQlnb3RvIHJl c2V0Ow0KPiANCj4gLQlpZiAoaXNfZHNiX2J1c3koZHNiKSkgew0KPiArCWlmIChpc19kc2JfYnVz eShkZXZfcHJpdiwgcGlwZSwgZHNiLT5pZCkpIHsNCj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRy bSwNCj4gIAkJCSJIRUFEX1BUUiB3cml0ZSBmYWlsZWQgLSBkc2IgZW5naW5lIGlzIGJ1c3kuXG4i KTsNCj4gIAkJZ290byByZXNldDsNCj4gQEAgLTMyMiw3ICsyMjYsNyBAQCB2b2lkIGludGVsX2Rz Yl9jb21taXQoc3RydWN0IGludGVsX2RzYiAqZHNiKQ0KPiAgCQltZW1zZXQoJmRzYi0+Y21kX2J1 Zltkc2ItPmZyZWVfcG9zXSwgMCwNCj4gIAkJICAgICAgICh0YWlsIC0gZHNiLT5mcmVlX3BvcyAq IDQpKTsNCj4gDQo+IC0JaWYgKGlzX2RzYl9idXN5KGRzYikpIHsNCj4gKwlpZiAoaXNfZHNiX2J1 c3koZGV2X3ByaXYsIHBpcGUsIGRzYi0+aWQpKSB7DQo+ICAJCWRybV9lcnIoJmRldl9wcml2LT5k cm0sDQo+ICAJCQkiVEFJTF9QVFIgd3JpdGUgZmFpbGVkIC0gZHNiIGVuZ2luZSBpcyBidXN5Llxu Iik7DQo+ICAJCWdvdG8gcmVzZXQ7DQo+IEBAIC0zMzIsNyArMjM2LDcgQEAgdm9pZCBpbnRlbF9k c2JfY29tbWl0KHN0cnVjdCBpbnRlbF9kc2IgKmRzYikNCj4gIAkJICAgIGk5MTVfZ2d0dF9vZmZz ZXQoZHNiLT52bWEpLCB0YWlsKTsNCj4gIAlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRFNCX1RB SUwocGlwZSwgZHNiLT5pZCksDQo+ICAJCSAgICAgICBpOTE1X2dndHRfb2Zmc2V0KGRzYi0+dm1h KSArIHRhaWwpOw0KPiAtCWlmICh3YWl0X2ZvcighaXNfZHNiX2J1c3koZHNiKSwgMSkpIHsNCj4g KwlpZiAod2FpdF9mb3IoIWlzX2RzYl9idXN5KGRldl9wcml2LCBwaXBlLCBkc2ItPmlkKSwgMSkp IHsNCj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwNCj4gIAkJCSJUaW1lZCBvdXQgd2FpdGlu ZyBmb3IgRFNCIHdvcmtsb2FkIGNvbXBsZXRpb24uXG4iKTsNCj4gIAkJZ290byByZXNldDsNCj4g QEAgLTM0MSw1ICsyNDUsNzkgQEAgdm9pZCBpbnRlbF9kc2JfY29tbWl0KHN0cnVjdCBpbnRlbF9k c2IgKmRzYikNCj4gIHJlc2V0Og0KPiAgCWRzYi0+ZnJlZV9wb3MgPSAwOw0KPiAgCWRzYi0+aW5z X3N0YXJ0X29mZnNldCA9IDA7DQo+IC0JaW50ZWxfZHNiX2Rpc2FibGVfZW5naW5lKGRzYik7DQo+ ICsJaW50ZWxfZHNiX2Rpc2FibGVfZW5naW5lKGRldl9wcml2LCBwaXBlLCBkc2ItPmlkKTsgfQ0K PiArDQo+ICsvKioNCj4gKyAqIGludGVsX2RzYl9wcmVwYXJlKCkgLSBBbGxvY2F0ZSwgcGluIGFu ZCBtYXAgdGhlIERTQiBjb21tYW5kIGJ1ZmZlci4NCj4gKyAqIEBjcnRjX3N0YXRlOiBpbnRlbF9j cnRjX3N0YXRlIHN0cnVjdHVyZSB0byBwcmVwYXJlIGFzc29jaWF0ZWQgZHNiIGluc3RhbmNlLg0K PiArICoNCj4gKyAqIFRoaXMgZnVuY3Rpb24gcHJlcGFyZSB0aGUgY29tbWFuZCBidWZmZXIgd2hp Y2ggaXMgdXNlZCB0byBzdG9yZSBkc2INCj4gKyAqIGluc3RydWN0aW9ucyB3aXRoIGRhdGEuDQo+ ICsgKi8NCj4gK3ZvaWQgaW50ZWxfZHNiX3ByZXBhcmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpIHsNCj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOw0KPiArCXN0cnVjdCBpbnRlbF9kc2IgKmRz YjsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOw0KPiArCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOw0KPiArCXUzMiAqYnVmOw0KPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOw0K PiArDQo+ICsJaWYgKCFIQVNfRFNCKGk5MTUpKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlkc2Ig PSBrbWFsbG9jKHNpemVvZigqZHNiKSwgR0ZQX0tFUk5FTCk7DQo+ICsNCj4gKwl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOw0KPiArDQo+ICsJb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBEU0JfQlVGX1NJWkUpOw0KPiAr CWlmIChJU19FUlIob2JqKSkgew0KPiArCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJHZW0gb2JqZWN0 IGNyZWF0aW9uIGZhaWxlZFxuIik7DQo+ICsJCWtmcmVlKGRzYik7DQo+ICsJCWdvdG8gb3V0Ow0K PiArCX0NCj4gKw0KPiArCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEws IDAsIDAsIDApOw0KPiArCWlmIChJU19FUlIodm1hKSkgew0KPiArCQlkcm1fZXJyKCZpOTE1LT5k cm0sICJWbWEgY3JlYXRpb24gZmFpbGVkXG4iKTsNCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChv YmopOw0KPiArCQlrZnJlZShkc2IpOw0KPiArCQlnb3RvIG91dDsNCj4gKwl9DQo+ICsNCj4gKwli dWYgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh2bWEtPm9iaiwgSTkxNV9NQVBfV0MpOw0KPiAr CWlmIChJU19FUlIoYnVmKSkgew0KPiArCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJDb21tYW5kIGJ1 ZmZlciBjcmVhdGlvbiBmYWlsZWRcbiIpOw0KPiArCQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFz ZSgmdm1hLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7DQo+ICsJCWtmcmVlKGRzYik7DQo+ICsJCWdv dG8gb3V0Ow0KPiArCX0NCj4gKw0KPiArCWRzYi0+aWQgPSBEU0IxOw0KPiArCWRzYi0+dm1hID0g dm1hOw0KPiArCWRzYi0+Y21kX2J1ZiA9IGJ1ZjsNCj4gKwlkc2ItPmZyZWVfcG9zID0gMDsNCj4g Kwlkc2ItPmluc19zdGFydF9vZmZzZXQgPSAwOw0KPiArCWNydGNfc3RhdGUtPmRzYiA9IGRzYjsN Cj4gK291dDoNCj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2Fr ZXJlZik7IH0NCj4gKw0KPiArLyoqDQo+ICsgKiBpbnRlbF9kc2JfY2xlYW51cCgpIC0gVG8gY2xl YW51cCBEU0IgY29udGV4dC4NCj4gKyAqIEBjcnRjX3N0YXRlOiBpbnRlbF9jcnRjX3N0YXRlIHN0 cnVjdHVyZSB0byBjbGVhbnVwIGFzc29jaWF0ZWQgZHNiIGluc3RhbmNlLg0KPiArICoNCj4gKyAq IFRoaXMgZnVuY3Rpb24gY2xlYW51cCB0aGUgRFNCIGNvbnRleHQgYnkgdW5waW5uaW5nIGFuZCBy ZWxlYXNpbmcNCj4gKyAqIHRoZSBWTUEgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBpdC4NCj4gKyAq Lw0KPiArdm9pZCBpbnRlbF9kc2JfY2xlYW51cChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkgew0KPiArCWlmICghY3J0Y19zdGF0ZS0+ZHNiKQ0KPiArCQlyZXR1cm47DQo+ICsN Cj4gKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmY3J0Y19zdGF0ZS0+ZHNiLT52bWEsDQo+ IEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsNCj4gKwlrZnJlZShjcnRjX3N0YXRlLT5kc2IpOw0KPiAr CWNydGNfc3RhdGUtPmRzYiA9IE5VTEw7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzYi5oDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kc2IuaA0KPiBpbmRleCAzOTVlZjljZTU1OGUuLjY1NGExMWYyNGI4MCAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuaA0K PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzYi5oDQo+IEBAIC0x MCw3ICsxMCw3IEBADQo+IA0KPiAgI2luY2x1ZGUgImk5MTVfcmVnLmgiDQo+IA0KPiAtc3RydWN0 IGludGVsX2NydGM7DQo+ICtzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsNCj4gIHN0cnVjdCBpOTE1 X3ZtYTsNCj4gDQo+ICBlbnVtIGRzYl9pZCB7DQo+IEBAIC0yMiw3ICsyMiw2IEBAIGVudW0gZHNi X2lkIHsNCj4gIH07DQo+IA0KPiAgc3RydWN0IGludGVsX2RzYiB7DQo+IC0JbG9uZyByZWZjb3Vu dDsNCj4gIAllbnVtIGRzYl9pZCBpZDsNCj4gIAl1MzIgKmNtZF9idWY7DQo+ICAJc3RydWN0IGk5 MTVfdm1hICp2bWE7DQo+IEBAIC00MSwxMiArNDAsMTIgQEAgc3RydWN0IGludGVsX2RzYiB7DQo+ ICAJdTMyIGluc19zdGFydF9vZmZzZXQ7DQo+ICB9Ow0KPiANCj4gLXN0cnVjdCBpbnRlbF9kc2Ig Kg0KPiAtaW50ZWxfZHNiX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7IC12b2lkIGludGVs X2RzYl9wdXQoc3RydWN0IGludGVsX2RzYiAqZHNiKTsNCj4gLXZvaWQgaW50ZWxfZHNiX3JlZ193 cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVnX3QgcmVnLCB1MzIgdmFsKTsgLXZv aWQNCj4gaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9kc2IgKmRzYiwg aTkxNV9yZWdfdCByZWcsDQo+IC0JCQkJIHUzMiB2YWwpOw0KPiAtdm9pZCBpbnRlbF9kc2JfY29t bWl0KHN0cnVjdCBpbnRlbF9kc2IgKmRzYik7DQo+ICt2b2lkIGludGVsX2RzYl9wcmVwYXJlKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsgdm9pZA0KPiAraW50ZWxfZHNiX2Ns ZWFudXAoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOyB2b2lkDQo+ICtpbnRl bF9kc2JfcmVnX3dyaXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LA0KPiArCQkJIGk5MTVfcmVnX3QgcmVnLCB1MzIgdmFsKTsNCj4gK3ZvaWQgaW50ZWxfZHNiX2lu ZGV4ZWRfcmVnX3dyaXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LA0KPiArCQkJCSBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCk7DQo+ICt2b2lkIGludGVsX2RzYl9j b21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOw0KPiANCj4g ICNlbmRpZg0KPiAtLQ0KPiAyLjI2LjANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fDQo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QNCj4gSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA0KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==