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=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 8BF77C433DB for ; Wed, 23 Dec 2020 03:50:05 +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 442C5223E4 for ; Wed, 23 Dec 2020 03:50:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 442C5223E4 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 C98D96E8C2; Wed, 23 Dec 2020 03:50:03 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id D28E06E8C2 for ; Wed, 23 Dec 2020 03:50:01 +0000 (UTC) IronPort-SDR: ToW5XUDVQYgSjFsAR8R9JNOqISiqCdauRXR1rQ/LoZtj8c+igSV324G9zIAWM7ZlcNPDQG0NeM VNUvXEU7/s9Q== X-IronPort-AV: E=McAfee;i="6000,8403,9843"; a="175182392" X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="175182392" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2020 19:49:59 -0800 IronPort-SDR: 3AYgTBH73JrWKsORej/rF0RfV1wb+1mvQnVoz4IZyHK9/2Q1UwRRDAktrHnPa+paJMZuOm9lFY U/thNnWdnd7w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="344799625" Received: from irsmsx605.ger.corp.intel.com ([163.33.146.138]) by fmsmga008.fm.intel.com with ESMTP; 22 Dec 2020 19:49:59 -0800 Received: from bgsmsx604.gar.corp.intel.com (10.67.234.6) by IRSMSX605.ger.corp.intel.com (163.33.146.138) 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 03:49:57 +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 09:19:55 +0530 From: "Gupta, Anshuman" To: "Mun, Gwan-gyeong" Thread-Topic: [PATCH v7 1/2] drm/i915/display: Support PSR Multiple Transcoders Thread-Index: AQHW06m4KfpSdJfiqECfdgyyt5JcO6n5tqkAgAdN3QCAAw92QA== Date: Wed, 23 Dec 2020 03:49:55 +0000 Message-ID: <1d69a085df2146ed9247d7b2658d45c9@intel.com> References: <20201216124743.431148-1-gwan-gyeong.mun@intel.com> <20201216132600.GL9309@intel.com> In-Reply-To: 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 v7 1/2] drm/i915/display: Support PSR Multiple Transcoders 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" , "intel-gfx@lists.freedesktop.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTXVuLCBHd2FuLWd5ZW9u ZyA8Z3dhbi1neWVvbmcubXVuQGludGVsLmNvbT4NCj4gU2VudDogTW9uZGF5LCBEZWNlbWJlciAy MSwgMjAyMCAzOjU5IFBNDQo+IFRvOiBHdXB0YSwgQW5zaHVtYW4gPGFuc2h1bWFuLmd1cHRhQGlu dGVsLmNvbT4NCj4gQ2M6IE5pa3VsYSwgSmFuaSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPjsgaW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY3IDEv Ml0gZHJtL2k5MTUvZGlzcGxheTogU3VwcG9ydCBQU1IgTXVsdGlwbGUNCj4gVHJhbnNjb2RlcnMN Cj4gDQo+IE9uIFdlZCwgMjAyMC0xMi0xNiBhdCAxODo1NiArMDUzMCwgQW5zaHVtYW4gR3VwdGEg d3JvdGU6DQo+ID4gT24gMjAyMC0xMi0xNiBhdCAxNDo0Nzo0MiArMDIwMCwgR3dhbi1neWVvbmcg TXVuIHdyb3RlOg0KPiA+ID4gSXQgaXMgYSBwcmVsaW1pbmFyeSB3b3JrIGZvciBzdXBwb3J0aW5n IG11bHRpcGxlIEVEUCBQU1IgYW5kDQo+ID4gPiBEUCBQYW5lbFJlcGxheS4gQW5kIGl0IHJlZmFj dG9ycyBzaW5nbGV0b24gUFNSIHRvIE11bHRpIFRyYW5zY29kZXINCj4gPiA+IHN1cHBvcnRhYmxl IFBTUi4NCj4gPiA+IEFuZCB0aGlzIG1vdmVzIGFuZCByZW5hbWVzIHRoZSBpOTE1X3BzciBzdHJ1 Y3R1cmUgb2YNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUncyB0bw0KPiA+ID4gaW50ZWxfZHAncyBp bnRlbF9wc3Igc3RydWN0dXJlLg0KPiA+ID4gSXQgYWxzbyBjYXVzZXMgY2hhbmdlcyBpbiBQU1Ig aW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmUgZm9yDQo+ID4gPiBzdXBwb3J0aW5nDQo+ID4gPiBt dWx0aXBsZSB0cmFuc2NvZGVycy4gQnV0IGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgc2NlbmFyaW8g YW5kDQo+ID4gPiB0aW1pbmcgb2YNCj4gPiA+IGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgUFNSLiBB bmQgaXQgbm90IHN1cHBvcnQgbXVsdGlwbGUgcGlwZXMgd2l0aA0KPiA+ID4gYSBzaW5nbGUgdHJh bnNjb2RlciBQU1IgY2FzZSB5ZXQuDQo+ID4gPg0KPiA+ID4gdjI6IEZpeCBpbmRlbnRhdGlvbiBh bmQgYWRkIGNvbW1lbnRzDQo+ID4gPiB2MzogUmVtb3ZlIEJsYW5rIGxpbmUNCj4gPiA+IHY0OiBS ZWJhc2VkDQo+ID4gPiB2NTogUmViYXNlZCBhbmQgQWRkcmVzc2VkIEFuc2h1bWFuJ3MgcmV2aWV3 IGNvbW1lbnQuDQo+ID4gPiAgICAgLSBNb3ZlIGNhbGxpbmcgb2YgaW50ZWxfcHNyX2luaXQoKSB0 byBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcigpDQo+ID4gPiB2NjogQWRkcmVzcyBBbnNodW1hbidz IHJldmlldyBjb21tZW50cw0KPiA+ID4gICAgLSBSZW1vdmUgd3JvbmcgY29tbWVudHMgYW5kIGFk ZCBjb21tZW50cyBmb3IgYSBsaW1pdCBvZg0KPiA+ID4gc3VwcG9ydGluZyBvZg0KPiA+ID4gICAg ICBhIHNpbmdsZSBwaXBlIFBTUg0KPiA+IFlvdSBtaXNzZWQgc29tZSBjb21tZW50IHRvIGFkZHJl c3MgcHJvdmlkZWQgb24gdjUuDQo+ID4gSXMgZGVidWdmcyBwcmludCBpbiBkcnJzX3N0YXR1c19w ZXJfY3J0YyBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSA/DQo+IEN1cnJlbnQgaW1wbGVtZW50YXRp b24gZG9lcyBub3QgZW5hYmxlIGRycnMgd2hlbiB0aGUgcGlwZSBoYXMgcHNyIGJ5DQo+IGludGVs X2RwX2RycnNfY29tcHV0ZV9jb25maWcoKS4NCj4gdGhlcmVmb3JlIHRoZSBsb2cgbWVzc2FnZSBp cyBub3QgbmVlZGVkLg0KPiA+IEFsc28gcGxlYXNlIHVzZSBkcm1fe2RiZyx3YXJufSBhdCBldmVy eSBwbGFjZSBpbiB0aGlzIHBhdGNoLg0KPiBJJ2xsIGZsb2F0IGEgbmV3IHBhdGNoIHdoaWNoIGFk ZHJlc3NlcyBpdC4NCj4gPiA+IHY3OiBVcGRhdGUgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKCkg Zm9yIHN1cHBvcnRpbmcgbXVsdGlwbGUNCj4gPiA+IHRyYW5zY29kZXINCj4gPiA+ICAgICBQU1Ig b24gQkRXKw0KPiA+IENvdWxkIHlvdSBwbGVhc2Ugc2VuZCB0aGlzIGluIGEgc2VwYXJhdGUgcGF0 Y2gsIHJlbW92ZSB0aGUgUE9SVF9BDQo+ID4gcmVzdHJpY3Rpb24gc28gdGhhdCB3ZSBjYW4gc3Vw cG9ydCBtdWx0aXBsZSBwc3IgaW5zdGFuY2VzLg0KPiA+DQo+IElNSE8sIGluIG9yZGVyIHRvIGVu YWJsZSBQU1JzIG9uIG11bHRpcGxlIHRyYW5zY29kZXJzLCB3ZSBoYXZlIHRvDQo+IGluY2x1ZGUg dGhpcyBmaXggaW4gdGhpcyBwYXRjaC4NCkFGQUlVIGtlZXBpbmcgYSBzZXBhcmF0ZSBwYXRjaCB3 b3VsZCBtYWtlIHNlbnNlLCBhcyBQU1Igd2FzIHN1cHBvcnRpbmcNCm11bHRpcGxlIHRyYW5zY29k ZXJzIGJlZm9yZSB0aGlzIHNlcmllcyB3aXRoIHNpbmdsZSBpbnN0YW5jZSBidXQgd2l0aCBQT1JU IHJlc3RyaWN0aW9uLA0KIGJlZm9yZSB0aGlzIHNlcmllcyBQU1Igd2FzIHVzZWQgb24gIGVEUCBQ YW5lbCB3aXRoIFBPUlRfQSBvbiBkaWZmZXJlbnQgY29tYmluYXRpb24gDQpvZiBwaXBlcyAodHJh bnNjb2RlcikuICBUaGlzIHNlcmllcyBzdXBwb3J0cyBQU1IgbXVsdGlwbGUgaW5zdGFuY2VzIHdp dGggbXVsdGlwbGUgdHJhbnNjb2RlcnMuDQpMZXQgbWUga25vdyB5b3VyIG9waW5pb24gb24gaXQu DQpUaGFua3MsDQpBbnNodW1hbiBHdXB0YS4NCj4gPiBUaGFua3MsDQo+ID4gQW5zaHVtYW4gR3Vw dGEuDQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBHd2FuLWd5ZW9uZyBNdW4gPGd3YW4tZ3llb25nLm11 bkBpbnRlbC5jb20+DQo+ID4gPiBDYzogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6 YUBpbnRlbC5jb20+DQo+ID4gPiBDYzogSnVoYS1QZWtrYSBIZWlra2lsYSA8anVoYXBla2thLmhl aWtraWxhQGdtYWlsLmNvbT4NCj4gPiA+IENjOiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3Vw dGFAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kZGkuYyAgICAgIHwgICAzICsNCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgIDQgLQ0KPiA+ID4gIC4uLi9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jICB8IDExMSArKy0tDQo+ID4gPiAgLi4uL2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgIDM4ICsrDQo+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jICAgICAgIHwgIDIzICstDQo+ ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYyAgICAgIHwgNTg4 ICsrKysrKysrKy0tLS0tDQo+ID4gPiAtLS0tDQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wc3IuaCAgICAgIHwgIDE0ICstDQo+ID4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyAgIHwgICA2ICstDQo+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDM4IC0tDQo+ID4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgICAgIHwgIDQ5ICstDQo+ID4g PiAgMTAgZmlsZXMgY2hhbmdlZCwgNDkwIGluc2VydGlvbnMoKyksIDM4NCBkZWxldGlvbnMoLSkN Cj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kZGkuYw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rk aS5jDQo+ID4gPiBpbmRleCA2ODYzMjM2ZGYxZDAuLjRiODdmNzJjYjljMCAxMDA2NDQNCj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMNCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMNCj4gPiA+IEBAIC00 MzIwLDcgKzQzMjAsMTAgQEAgc3RhdGljIHZvaWQNCj4gaW50ZWxfZGRpX3VwZGF0ZV9waXBlX2Rw KHN0cnVjdA0KPiA+ID4gaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gPiA+DQo+ID4gPiAg CWludGVsX2RkaV9zZXRfZHBfbXNhKGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOw0KPiA+ID4NCj4g PiA+ICsJLy9UT0RPOiBtb3ZlIFBTUiByZWxhdGVkIGZ1bmN0aW9ucyBpbnRvIGludGVsX3Bzcl91 cGRhdGUoKQ0KPiA+ID4gKwlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoaW50 ZWxfZHAsIGNydGNfc3RhdGUpOw0KPiA+ID4gIAlpbnRlbF9wc3JfdXBkYXRlKGludGVsX2RwLCBj cnRjX3N0YXRlLCBjb25uX3N0YXRlKTsNCj4gPiA+ICsNCj4gPiA+ICAJaW50ZWxfZHBfc2V0X2lu Zm9mcmFtZXMoZW5jb2RlciwgdHJ1ZSwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7DQo+ID4gPiAg CWludGVsX2VkcF9kcnJzX3VwZGF0ZShpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7DQo+ID4gPg0KPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5jDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j DQo+ID4gPiBpbmRleCA3ODQ1MmRlNWUxMmYuLmE3NTM2NDdiMGJjYiAxMDA2NDQNCj4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiA+ID4g QEAgLTE1ODY5LDggKzE1ODY5LDYgQEAgc3RhdGljIHZvaWQgY29tbWl0X3BpcGVfY29uZmlnKHN0 cnVjdA0KPiA+ID4gaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gPiA+DQo+ID4gPiAgCQlp ZiAobmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQ0KPiA+ID4gIAkJCWludGVsX3BpcGVfZmFz dHNldChvbGRfY3J0Y19zdGF0ZSwNCj4gPiA+IG5ld19jcnRjX3N0YXRlKTsNCj4gPiA+IC0NCj4g PiA+IC0JCWludGVsX3BzcjJfcHJvZ3JhbV90cmFuc19tYW5fdHJrX2N0bChuZXdfY3J0Y19zdGF0 ZSk7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdG9t aWNfdXBkYXRlX3dhdGVybWFya3MpDQo+ID4gPiBAQCAtMTc4MjksOCArMTc4MjcsNiBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpDQo+ID4gPiAgCQlpbnRlbF9kdm9faW5pdChkZXZfcHJpdik7DQo+ID4gPiAg CX0NCj4gPiA+DQo+ID4gPiAtCWludGVsX3Bzcl9pbml0KGRldl9wcml2KTsNCj4gPiA+IC0NCj4g PiA+ICAJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcigmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgew0K PiA+ID4gIAkJZW5jb2Rlci0+YmFzZS5wb3NzaWJsZV9jcnRjcyA9DQo+ID4gPiAgCQkJaW50ZWxf ZW5jb2Rlcl9wb3NzaWJsZV9jcnRjcyhlbmNvZGVyKTsNCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jDQo+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMNCj4g PiA+IGluZGV4IGNkN2U1NTE5ZWU3ZC4uMDQxMDUzMTY3ZDdmIDEwMDY0NA0KPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYw0KPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVn ZnMuYw0KPiA+ID4gQEAgLTI0OSwxOCArMjQ5LDE3IEBAIHN0YXRpYyBpbnQgaTkxNV9wc3Jfc2lu a19zdGF0dXNfc2hvdyhzdHJ1Y3QNCj4gPiA+IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiA+ ID4gIAkJInNpbmsgaW50ZXJuYWwgZXJyb3IiLA0KPiA+ID4gIAl9Ow0KPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gbS0+cHJpdmF0ZTsNCj4gPiA+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmRldik7DQo+ID4g PiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQ0KPiA+ID4gIAkJaW50ZWxfYXR0YWNoZWRf ZHAodG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3RvcikpOw0KPiA+ID4gIAlpbnQgcmV0Ow0KPiA+ ID4NCj4gPiA+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkgew0KPiA+ID4gLQkJc2VxX3B1dHMo bSwgIlBTUiBVbnN1cHBvcnRlZFxuIik7DQo+ID4gPiArCWlmIChjb25uZWN0b3ItPnN0YXR1cyAh PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkNCj4gPiA+ICAJCXJldHVybiAtRU5PREVWOw0K PiA+ID4gLQl9DQo+ID4gPg0KPiA+ID4gLQlpZiAoY29ubmVjdG9yLT5zdGF0dXMgIT0gY29ubmVj dG9yX3N0YXR1c19jb25uZWN0ZWQpDQo+ID4gPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpIHsN Cj4gPiA+ICsJCXNlcV9wdXRzKG0sICJQU1IgVW5zdXBwb3J0ZWRcbiIpOw0KPiA+ID4gIAkJcmV0 dXJuIC1FTk9ERVY7DQo+ID4gPiArCX0NCj4gPiA+DQo+ID4gPiAgCXJldCA9IGRybV9kcF9kcGNk X3JlYWRiKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfU1RBVFVTLCAmdmFsKTsNCj4gPiA+DQo+ID4g PiBAQCAtMjgwLDEyICsyNzksMTMgQEAgc3RhdGljIGludCBpOTE1X3Bzcl9zaW5rX3N0YXR1c19z aG93KHN0cnVjdA0KPiA+ID4gc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpDQo+ID4gPiAgREVGSU5F X1NIT1dfQVRUUklCVVRFKGk5MTVfcHNyX3Npbmtfc3RhdHVzKTsNCj4gPiA+DQo+ID4gPiAgc3Rh dGljIHZvaWQNCj4gPiA+IC1wc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHN0cnVjdA0KPiA+ID4gc2VxX2ZpbGUgKm0pDQo+ID4gPiArcHNyX3NvdXJj ZV9zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgc3RydWN0IHNlcV9maWxlICptKQ0K PiA+ID4gIHsNCj4gPiA+ICAJdTMyIHZhbCwgc3RhdHVzX3ZhbDsNCj4gPiA+ICAJY29uc3QgY2hh ciAqc3RhdHVzID0gInVua25vd24iOw0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiA+DQo+ID4gPiAtCWlmIChkZXZf cHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3Iy X2VuYWJsZWQpIHsNCj4gPiA+ICAJCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbGl2ZV9zdGF0 dXNbXSA9IHsNCj4gPiA+ICAJCQkiSURMRSIsDQo+ID4gPiAgCQkJIkNBUFRVUkUiLA0KPiA+ID4g QEAgLTMwMCw3ICszMDAsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQ0KPiA+ID4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pDQo+ID4gPiAgCQkJIlRH X09OIg0KPiA+ID4gIAkJfTsNCj4gPiA+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYs DQo+ID4gPiAtCQkJCSAgICBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtDQo+ID4gPiA+cHNyLnRy YW5zY29kZXIpKTsNCj4gPiA+ICsJCQkJICAgIEVEUF9QU1IyX1NUQVRVUyhpbnRlbF9kcC0NCj4g PiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ID4gIAkJc3RhdHVzX3ZhbCA9ICh2YWwgJiBFRFBf UFNSMl9TVEFUVVNfU1RBVEVfTUFTSykgPj4NCj4gPiA+ICAJCQkgICAgICBFRFBfUFNSMl9TVEFU VVNfU1RBVEVfU0hJRlQ7DQo+ID4gPiAgCQlpZiAoc3RhdHVzX3ZhbCA8IEFSUkFZX1NJWkUobGl2 ZV9zdGF0dXMpKQ0KPiA+ID4gQEAgLTMxNyw3ICszMTcsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUg Km0pDQo+ID4gPiAgCQkJIlNSREVOVF9PTiIsDQo+ID4gPiAgCQl9Ow0KPiA+ID4gIAkJdmFsID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gPiA+IC0JCQkJICAgIEVEUF9QU1JfU1RBVFVTKGRl dl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gPiArCQkJCSAgICBFRFBfUFNS X1NUQVRVUyhpbnRlbF9kcC0NCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ID4gIAkJc3Rh dHVzX3ZhbCA9ICh2YWwgJiBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLKSA+Pg0KPiA+ID4gIAkJ CSAgICAgIEVEUF9QU1JfU1RBVFVTX1NUQVRFX1NISUZUOw0KPiA+ID4gIAkJaWYgKHN0YXR1c192 YWwgPCBBUlJBWV9TSVpFKGxpdmVfc3RhdHVzKSkNCj4gPiA+IEBAIC0zMjcsMjEgKzMyNywxOCBA QCBwc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gKmRldl9w cml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pDQo+ID4gPiAgCXNlcV9wcmludGYobSwgIlNvdXJjZSBQ U1Igc3RhdHVzOiAlcyBbMHglMDh4XVxuIiwgc3RhdHVzLCB2YWwpOw0KPiA+ID4gIH0NCj4gPiA+ DQo+ID4gPiAtc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkNCj4gPiA+ICtzdGF0aWMgaW50IGludGVsX3Bzcl9zdGF0dXMoc3RydWN0 IHNlcV9maWxlICptLCBzdHJ1Y3QgaW50ZWxfZHANCj4gPiA+ICppbnRlbF9kcCkNCj4gPiA+ICB7 DQo+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkx NShtLT5wcml2YXRlKTsNCj4gPiA+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYt PnBzcjsNCj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9f aTkxNShpbnRlbF9kcCk7DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9k cC0+cHNyOw0KPiA+ID4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsNCj4gPiA+ICAJY29uc3Qg Y2hhciAqc3RhdHVzOw0KPiA+ID4gIAlib29sIGVuYWJsZWQ7DQo+ID4gPiAgCXUzMiB2YWw7DQo+ ID4gPg0KPiA+ID4gLQlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQ0KPiA+ID4gLQkJcmV0dXJuIC1F Tk9ERVY7DQo+ID4gPiAtDQo+ID4gPiAgCXNlcV9wcmludGYobSwgIlNpbmsgc3VwcG9ydDogJXMi LCB5ZXNubyhwc3ItPnNpbmtfc3VwcG9ydCkpOw0KPiA+ID4gLQlpZiAocHNyLT5kcCkNCj4gPiA+ IC0JCXNlcV9wcmludGYobSwgIiBbMHglMDJ4XSIsIHBzci0+ZHAtPnBzcl9kcGNkWzBdKTsNCj4g PiA+ICsJaWYgKHBzci0+c2lua19zdXBwb3J0KQ0KPiA+ID4gKwkJc2VxX3ByaW50ZihtLCAiIFsw eCUwMnhdIiwgaW50ZWxfZHAtPnBzcl9kcGNkWzBdKTsNCj4gPiA+ICAJc2VxX3B1dHMobSwgIlxu Iik7DQo+ID4gPg0KPiA+ID4gIAlpZiAoIXBzci0+c2lua19zdXBwb3J0KQ0KPiA+ID4gQEAgLTM2 NSwxNiArMzYyLDE2IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3QNCj4g PiA+IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiA+ID4NCj4gPiA+ICAJaWYgKHBzci0+cHNy Ml9lbmFibGVkKSB7DQo+ID4gPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiA+ ID4gLQkJCQkgICAgRURQX1BTUjJfQ1RMKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVy KSk7DQo+ID4gPiArCQkJCSAgICBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtDQo+ID4gPiA+cHNyLnRy YW5zY29kZXIpKTsNCj4gPiA+ICAJCWVuYWJsZWQgPSB2YWwgJiBFRFBfUFNSMl9FTkFCTEU7DQo+ ID4gPiAgCX0gZWxzZSB7DQo+ID4gPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0K PiA+ID4gLQkJCQkgICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtDQo+ID4gPiA+cHNyLnRyYW5zY29k ZXIpKTsNCj4gPiA+ICsJCQkJICAgIEVEUF9QU1JfQ1RMKGludGVsX2RwLQ0KPiA+ID4gPnBzci50 cmFuc2NvZGVyKSk7DQo+ID4gPiAgCQllbmFibGVkID0gdmFsICYgRURQX1BTUl9FTkFCTEU7DQo+ ID4gPiAgCX0NCj4gPiA+ICAJc2VxX3ByaW50ZihtLCAiU291cmNlIFBTUiBjdGw6ICVzIFsweCUw OHhdXG4iLA0KPiA+ID4gIAkJICAgZW5hYmxlZGRpc2FibGVkKGVuYWJsZWQpLCB2YWwpOw0KPiA+ ID4gLQlwc3Jfc291cmNlX3N0YXR1cyhkZXZfcHJpdiwgbSk7DQo+ID4gPiArCXBzcl9zb3VyY2Vf c3RhdHVzKGludGVsX2RwLCBtKTsNCj4gPiA+ICAJc2VxX3ByaW50ZihtLCAiQnVzeSBmcm9udGJ1 ZmZlciBiaXRzOiAweCUwOHhcbiIsDQo+ID4gPiAgCQkgICBwc3ItPmJ1c3lfZnJvbnRidWZmZXJf Yml0cyk7DQo+ID4gPg0KPiA+ID4gQEAgLTM4Myw3ICszODAsNyBAQCBzdGF0aWMgaW50IGk5MTVf ZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlDQo+ID4gPiAqbSwgdm9pZCAqZGF0YSkNCj4g PiA+ICAJICovDQo+ID4gPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKSB7DQo+ID4gPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0K PiA+ID4gLQkJCQkgICAgRURQX1BTUl9QRVJGX0NOVChkZXZfcHJpdi0NCj4gPiA+ID5wc3IudHJh bnNjb2RlcikpOw0KPiA+ID4gKwkJCQkgICAgRURQX1BTUl9QRVJGX0NOVChpbnRlbF9kcC0NCj4g PiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ID4gIAkJdmFsICY9IEVEUF9QU1JfUEVSRl9DTlRf TUFTSzsNCj4gPiA+ICAJCXNlcV9wcmludGYobSwgIlBlcmZvcm1hbmNlIGNvdW50ZXI6ICV1XG4i LCB2YWwpOw0KPiA+ID4gIAl9DQo+ID4gPiBAQCAtNDA0LDcgKzQwMSw3IEBAIHN0YXRpYyBpbnQg aTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUNCj4gPiA+ICptLCB2b2lkICpkYXRh KQ0KPiA+ID4gIAkJICovDQo+ID4gPiAgCQlmb3IgKGZyYW1lID0gMDsgZnJhbWUgPCBQU1IyX1NV X1NUQVRVU19GUkFNRVM7IGZyYW1lDQo+ICs9DQo+ID4gPiAzKSB7DQo+ID4gPiAgCQkJdmFsID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gPiA+IC0JCQkJCSAgICBQU1IyX1NVX1NUQVRVUyhk ZXZfcHJpdi0NCj4gPiA+ID5wc3IudHJhbnNjb2RlciwgZnJhbWUpKTsNCj4gPiA+ICsJCQkJCSAg ICBQU1IyX1NVX1NUQVRVUyhpbnRlbF9kcC0NCj4gPiA+ID5wc3IudHJhbnNjb2RlciwgZnJhbWUp KTsNCj4gPiA+ICAJCQlzdV9mcmFtZXNfdmFsW2ZyYW1lIC8gM10gPSB2YWw7DQo+ID4gPiAgCQl9 DQo+ID4gPg0KPiA+ID4gQEAgLTQzMCwyMyArNDI3LDU3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBf cHNyX3N0YXR1cyhzdHJ1Y3QNCj4gPiA+IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiA+ID4g IAlyZXR1cm4gMDsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gK3N0YXRpYyBpbnQgaTkxNV9lZHBf cHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpDQo+ID4gPiArew0KPiA+ ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+ cHJpdmF0ZSk7DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOw0KPiA+ID4g KwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gTlVMTDsNCj4gPiA+ICsNCj4gPiA+ICsJaWYg KCFIQVNfUFNSKGRldl9wcml2KSkNCj4gPiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ID4gKw0K PiA+ID4gKwkvKiBGaW5kIHRoZSBmaXJzdCBFRFAgKi8NCj4gPiA+ICsJZm9yX2VhY2hfaW50ZWxf ZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gPiA+ICsJCWlmIChlbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9FRFApIHsNCj4gPiA+ICsJCQlpbnRlbF9kcCA9IGVuY190b19pbnRl bF9kcChlbmNvZGVyKTsNCj4gPiA+ICsJCQlicmVhazsNCj4gPiA+ICsJCX0NCj4gPiA+ICsJfQ0K PiA+ID4gKw0KPiA+ID4gKwlpZiAoIWludGVsX2RwKQ0KPiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7 DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBpbnRlbF9wc3Jfc3RhdHVzKG0sIGludGVsX2RwKTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAgc3RhdGljIGludA0KPiA+ID4gIGk5MTVfZWRwX3Bz cl9kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkNCj4gPiA+ICB7DQo+ID4gPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7DQo+ID4gPiAgCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOw0KPiA+ID4gLQlpbnQgcmV0Ow0KPiA+ID4gKwlpbnQgcmV0ID0gLUVOT0RF VjsNCj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gPg0KPiA+ID4g LQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiA+ID4gLQkJcmV0dXJuIC1FTk9ERVY7DQo+ID4g PiArCWlmICghSEFTX1BTUihkZXZfcHJpdikpDQo+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4N Cj4gPiA+IC0JZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJTZXR0aW5nIFBTUiBkZWJ1ZyB0 byAlbGx4XG4iLA0KPiA+ID4gdmFsKTsNCj4gPiA+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9w cml2LT5kcm0sIGVuY29kZXIpIHsNCj4gPiA+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAg PSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7DQo+ID4gPg0KPiA+ID4gLQl3YWtlcmVmID0gaW50 ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsNCj4gPiA+ICsJCWlmICgh Q0FOX1BTUihpbnRlbF9kcCkpDQo+ID4gPiArCQkJY29udGludWU7DQo+ID4gPg0KPiA+ID4gLQly ZXQgPSBpbnRlbF9wc3JfZGVidWdfc2V0KGRldl9wcml2LCB2YWwpOw0KPiA+ID4gKwkJaWYgKGVu Y29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgew0KPiA+ID4gKwkJCWRybV9kYmdfa21z KCZkZXZfcHJpdi0+ZHJtLCAiU2V0dGluZyBQU1IgZGVidWcNCj4gPiA+IHRvICVsbHhcbiIsIHZh bCk7DQo+ID4gPg0KPiA+ID4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2X3ByaXYtPnJ1bnRp bWVfcG0sIHdha2VyZWYpOw0KPiA+ID4gKwkJCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dCgmZGV2X3ByaXYtDQo+ID4gPiA+cnVudGltZV9wbSk7DQo+ID4gPiArDQo+ID4gPiArCQkJLy8g VE9ETzogc3BsaXQgdG8gZWFjaCB0cmFuc2NvZGVyJ3MgUFNSIGRlYnVnDQo+ID4gPiBzdGF0ZQ0K PiA+ID4gKwkJCXJldCA9IGludGVsX3Bzcl9kZWJ1Z19zZXQoaW50ZWxfZHAsIHZhbCk7DQo+ID4g PiArDQo+ID4gPiArCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoJmRldl9wcml2LT5ydW50aW1lX3Bt LA0KPiA+ID4gd2FrZXJlZik7DQo+ID4gPiArCQl9DQo+ID4gPiArCX0NCj4gPiA+DQo+ID4gPiAg CXJldHVybiByZXQ7DQo+ID4gPiAgfQ0KPiA+ID4gQEAgLTQ1NSwxMiArNDg2LDI1IEBAIHN0YXRp YyBpbnQNCj4gPiA+ICBpOTE1X2VkcF9wc3JfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFs KQ0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGF0YTsNCj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gPg0KPiA+ ID4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiA+ID4gKwlpZiAoIUhBU19QU1IoZGV2X3By aXYpKQ0KPiA+ID4gIAkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gPg0KPiA+ID4gLQkqdmFsID0gUkVB RF9PTkNFKGRldl9wcml2LT5wc3IuZGVidWcpOw0KPiA+ID4gLQlyZXR1cm4gMDsNCj4gPiA+ICsJ Zm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gPiA+ICsJCXN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7DQo+ID4g PiArDQo+ID4gPiArCQlpZiAoIUNBTl9QU1IoaW50ZWxfZHApKQ0KPiA+ID4gKwkJCWNvbnRpbnVl Ow0KPiA+ID4gKw0KPiA+ID4gKwkJLy8gVE9ETzogc3BsaXQgdG8gZWFjaCB0cmFuc2NvZGVyJ3Mg UFNSIGRlYnVnIHN0YXRlDQo+ID4gPiArCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQ VVRfRURQKSB7DQo+ID4gPiArCQkJKnZhbCA9IFJFQURfT05DRShpbnRlbF9kcC0+cHNyLmRlYnVn KTsNCj4gPiA+ICsJCQlyZXR1cm4gMDsNCj4gPiA+ICsJCX0NCj4gPiA+ICsJfQ0KPiA+ID4gKw0K PiA+ID4gKwlyZXR1cm4gLUVOT0RFVjsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIERFRklORV9T SU1QTEVfQVRUUklCVVRFKGk5MTVfZWRwX3Bzcl9kZWJ1Z19mb3BzLA0KPiA+ID4gQEAgLTEyMzQs OSArMTI3OCw2IEBAIHN0YXRpYyB2b2lkIGRycnNfc3RhdHVzX3Blcl9jcnRjKHN0cnVjdA0KPiA+ ID4gc2VxX2ZpbGUgKm0sDQo+ID4gPiAgCQkvKiBkaXNhYmxlX2RycnMoKSB3aWxsIG1ha2UgZHJy cy0+ZHAgTlVMTCAqLw0KPiA+ID4gIAkJaWYgKCFkcnJzLT5kcCkgew0KPiA+ID4gIAkJCXNlcV9w dXRzKG0sICJJZGxlbmVzcyBEUlJTOiBEaXNhYmxlZFxuIik7DQo+ID4gPiAtCQkJaWYgKGRldl9w cml2LT5wc3IuZW5hYmxlZCkNCj4gPiA+IC0JCQkJc2VxX3B1dHMobSwNCj4gPiA+IC0JCQkJIlx0 QXMgUFNSIGlzIGVuYWJsZWQsIERSUlMgaXMgbm90DQo+ID4gPiBlbmFibGVkXG4iKTsNCj4gPiA+ ICAJCQltdXRleF91bmxvY2soJmRycnMtPm11dGV4KTsNCj4gPiA+ICAJCQlyZXR1cm47DQo+ID4g PiAgCQl9DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gPiA+IGluZGV4IDViYzViZmJjNDU1MS4uOTg5OWZk ZGY0Yzk5IDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+ID4gPiBAQCAtMTMzOSw2ICsxMzM5LDQyIEBA IHN0cnVjdCBpbnRlbF9kcF9jb21wbGlhbmNlIHsNCj4gPiA+ICAJdTggdGVzdF9sYW5lX2NvdW50 Ow0KPiA+ID4gIH07DQo+ID4gPg0KPiA+ID4gK3N0cnVjdCBpbnRlbF9wc3Igew0KPiA+ID4gKwkv KiBNdXRleCBmb3IgUFNSIHN0YXRlIG9mIHRoZSB0cmFuc2NvZGVyICovDQo+ID4gPiArCXN0cnVj dCBtdXRleCBsb2NrOw0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfTU9E RV9NQVNLCTB4MGYNCj4gPiA+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RFRkFVTFQJCTB4MDAN Cj4gPiA+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJCTB4MDENCj4gPiA+ICsjZGVm aW5lIEk5MTVfUFNSX0RFQlVHX0VOQUJMRQkJMHgwMg0KPiA+ID4gKyNkZWZpbmUgSTkxNV9QU1Jf REVCVUdfRk9SQ0VfUFNSMQkweDAzDQo+ID4gPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19JUlEJ CTB4MTANCj4gPiA+ICsNCj4gPiA+ICsJdTMyIGRlYnVnOw0KPiA+ID4gKwlib29sIHNpbmtfc3Vw cG9ydDsNCj4gPiA+ICsJYm9vbCBlbmFibGVkOw0KPiA+ID4gKwllbnVtIHBpcGUgcGlwZTsNCj4g PiA+ICsJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7DQo+ID4gPiArCWJvb2wgYWN0aXZlOw0K PiA+ID4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsNCj4gPiA+ICsJdW5zaWduZWQgaW50IGJ1 c3lfZnJvbnRidWZmZXJfYml0czsNCj4gPiA+ICsJYm9vbCBzaW5rX3BzcjJfc3VwcG9ydDsNCj4g PiA+ICsJYm9vbCBsaW5rX3N0YW5kYnk7DQo+ID4gPiArCWJvb2wgY29sb3JpbWV0cnlfc3VwcG9y dDsNCj4gPiA+ICsJYm9vbCBwc3IyX2VuYWJsZWQ7DQo+ID4gPiArCWJvb2wgcHNyMl9zZWxfZmV0 Y2hfZW5hYmxlZDsNCj4gPiA+ICsJdTggc2lua19zeW5jX2xhdGVuY3k7DQo+ID4gPiArCWt0aW1l X3QgbGFzdF9lbnRyeV9hdHRlbXB0Ow0KPiA+ID4gKwlrdGltZV90IGxhc3RfZXhpdDsNCj4gPiA+ ICsJYm9vbCBzaW5rX25vdF9yZWxpYWJsZTsNCj4gPiA+ICsJYm9vbCBpcnFfYXV4X2Vycm9yOw0K PiA+ID4gKwl1MTYgc3VfeF9ncmFudWxhcml0eTsNCj4gPiA+ICsJYm9vbCBkYzNjb19lbmFibGVk Ow0KPiA+ID4gKwl1MzIgZGMzY29fZXhpdF9kZWxheTsNCj4gPiA+ICsJc3RydWN0IGRlbGF5ZWRf d29yayBkYzNjb193b3JrOw0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgdnNjOw0KPiA+ ID4gK307DQo+ID4gPiArDQo+ID4gPiAgc3RydWN0IGludGVsX2RwIHsNCj4gPiA+ICAJaTkxNV9y ZWdfdCBvdXRwdXRfcmVnOw0KPiA+ID4gIAl1MzIgRFA7DQo+ID4gPiBAQCAtMTQ2MCw2ICsxNDk2 LDggQEAgc3RydWN0IGludGVsX2RwIHsNCj4gPiA+DQo+ID4gPiAgCWJvb2wgaG9ibF9mYWlsZWQ7 DQo+ID4gPiAgCWJvb2wgaG9ibF9hY3RpdmU7DQo+ID4gPiArDQo+ID4gPiArCXN0cnVjdCBpbnRl bF9wc3IgcHNyOw0KPiA+ID4gIH07DQo+ID4gPg0KPiA+ID4gIGVudW0gbHNwY29uX3ZlbmRvciB7 DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k cC5jDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0KPiA+ ID4gaW5kZXggYjJiYzBjOGMzOWM3Li41NzMwY2FkN2I2YWMgMTAwNjQ0DQo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMNCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0KPiA+ID4gQEAgLTI3MDIsMTIgKzI3 MDIsMTAgQEAgdm9pZA0KPiBpbnRlbF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKHN0cnVjdA0KPiA+ ID4gaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4gIAkJCQkgIGNvbnN0IHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlDQo+ID4gPiAqY29ubl9zdGF0ZSwNCj4gPiA+ICAJCQkJICBzdHJ1Y3QgZHJt X2RwX3ZzY19zZHAgKnZzYykNCj4gPiA+ICB7DQo+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ID4gLQ0KPiA+ID4gIAl2 c2MtPnNkcF90eXBlID0gRFBfU0RQX1ZTQzsNCj4gPiA+DQo+ID4gPiAtCWlmIChkZXZfcHJpdi0+ cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ID4gLQkJaWYgKGRldl9wcml2LT5wc3IuY29sb3JpbWV0 cnlfc3VwcG9ydCAmJg0KPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsN Cj4gPiA+ICsJCWlmIChpbnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgJiYNCj4gPiA+ ICAJCSAgICBpbnRlbF9kcF9uZWVkc192c2Nfc2RwKGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpKSB7 DQo+ID4gPiAgCQkJLyogW1BTUjIsICtDb2xvcmltZXRyeV0gKi8NCj4gPiA+ICAJCQlpbnRlbF9k cF9jb21wdXRlX3ZzY19jb2xvcmltZXRyeShjcnRjX3N0YXRlLA0KPiA+ID4gY29ubl9zdGF0ZSwN Cj4gPiA+IEBAIC0zODQ0LDcgKzM4NDIsNyBAQCBib29sIGludGVsX2RwX2luaXRpYWxfZmFzdHNl dF9jaGVjayhzdHJ1Y3QNCj4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ID4gPiAgCQly ZXR1cm4gZmFsc2U7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAtCWlmIChDQU5fUFNSKGk5MTUp ICYmIGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsNCj4gPiA+ICsJaWYgKENBTl9QU1IoaW50 ZWxfZHApICYmIGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsNCj4gPiA+ICAJCWRybV9kYmdf a21zKCZpOTE1LT5kcm0sICJGb3JjaW5nIGZ1bGwgbW9kZXNldCB0bw0KPiA+ID4gY29tcHV0ZSBQ U1Igc3RhdGVcbiIpOw0KPiA+ID4gIAkJY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2NoYW5nZWQgPSB0 cnVlOw0KPiA+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gQEAgLTgwNzAsNiArODA2OCwxNyBA QCBzdGF0aWMgdm9pZA0KPiA+ID4gaW50ZWxfZHBfbW9kZXNldF9yZXRyeV93b3JrX2ZuKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiA+ICAJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVu dChjb25uZWN0b3ItPmRldik7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICtzdGF0aWMgdm9pZCBp bnRlbF9kcF91cGRhdGVfcGlwZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4g PiA+ICsJCQkJIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiA+ID4gKwkJCQkgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gPiA+ICpjcnRjX3N0YXRlLA0KPiA+ID4gKwkJ CQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUNCj4gPiA+ICpjb25uX3N0YXRlKQ0K PiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRl bF9kcChlbmNvZGVyKTsNCj4gPiA+ICsNCj4gPiA+ICsJaW50ZWxfcGFuZWxfdXBkYXRlX2JhY2ts aWdodChzdGF0ZSwgZW5jb2RlciwgY3J0Y19zdGF0ZSwNCj4gPiA+IGNvbm5fc3RhdGUpOw0KPiA+ ID4gKwlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoaW50ZWxfZHAsIGNydGNf c3RhdGUpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICBib29sDQo+ID4gPiAgaW50ZWxfZHBf aW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsDQo+ID4g PiAgCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQ0KPiA+ID4gQEAg LTgxODQsNiArODE5Myw4IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdA0KPiA+ID4g aW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwNCj4gPiA+ICAJCQkgICAgICAgKHRlbXAgJiB+ MHhmKSB8IDB4ZCk7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiArCWludGVsX3Bzcl9pbml0KGlu dGVsX2RwKTsNCj4gPiA+ICsNCj4gPiA+ICAJcmV0dXJuIHRydWU7DQo+ID4gPg0KPiA+ID4gIGZh aWw6DQo+ID4gPiBAQCAtODIyNSw3ICs4MjM2LDcgQEAgYm9vbCBpbnRlbF9kcF9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiAqZGV2X3ByaXYsDQo+ID4gPiAgCWludGVsX2VuY29k ZXItPmdldF9jb25maWcgPSBpbnRlbF9kcF9nZXRfY29uZmlnOw0KPiA+ID4gIAlpbnRlbF9lbmNv ZGVyLT5zeW5jX3N0YXRlID0gaW50ZWxfZHBfc3luY19zdGF0ZTsNCj4gPiA+ICAJaW50ZWxfZW5j b2Rlci0+aW5pdGlhbF9mYXN0c2V0X2NoZWNrID0NCj4gPiA+IGludGVsX2RwX2luaXRpYWxfZmFz dHNldF9jaGVjazsNCj4gPiA+IC0JaW50ZWxfZW5jb2Rlci0+dXBkYXRlX3BpcGUgPSBpbnRlbF9w YW5lbF91cGRhdGVfYmFja2xpZ2h0Ow0KPiA+ID4gKwlpbnRlbF9lbmNvZGVyLT51cGRhdGVfcGlw ZSA9IGludGVsX2RwX3VwZGF0ZV9waXBlOw0KPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5zdXNwZW5k ID0gaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kOw0KPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5zaHV0 ZG93biA9IGludGVsX2RwX2VuY29kZXJfc2h1dGRvd247DQo+ID4gPiAgCWlmIChJU19DSEVSUllW SUVXKGRldl9wcml2KSkgew0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9wc3IuYw0KPiA+ID4gaW5kZXggZDlhMzk1YzQ4NmQzLi5lZWQ3NzU0YzJmNzQgMTAw NjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5j DQo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ ID4gPiBAQCAtNzksMTEgKzc5LDEzIEBADQo+ID4gPiAgICogdXNlIHBhZ2UgZmxpcHMuDQo+ID4g PiAgICovDQo+ID4gPg0KPiA+ID4gLXN0YXRpYyBib29sIHBzcl9nbG9iYWxfZW5hYmxlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkNCj4gPiA+ICtzdGF0aWMgYm9vbCBwc3JfZ2xvYmFs X2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+ICB7DQo+ID4gPiAtCXN3 aXRjaCAoaTkxNS0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB7DQo+ID4g PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxf ZHApOw0KPiA+ID4gKw0KPiA+ID4gKwlzd2l0Y2ggKGludGVsX2RwLT5wc3IuZGVidWcgJiBJOTE1 X1BTUl9ERUJVR19NT0RFX01BU0spIHsNCj4gPiA+ICAJY2FzZSBJOTE1X1BTUl9ERUJVR19ERUZB VUxUOg0KPiA+ID4gLQkJcmV0dXJuIGk5MTUtPnBhcmFtcy5lbmFibGVfcHNyOw0KPiA+ID4gKwkJ cmV0dXJuIGRldl9wcml2LT5wYXJhbXMuZW5hYmxlX3BzcjsNCj4gPiA+ICAJY2FzZSBJOTE1X1BT Ul9ERUJVR19ESVNBQkxFOg0KPiA+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gIAlkZWZhdWx0 Og0KPiA+ID4gQEAgLTkxLDkgKzkzLDkgQEAgc3RhdGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVk KHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkNCj4gPiA+ICAJfQ0KPiA+ID4g IH0NCj4gPiA+DQo+ID4gPiAtc3RhdGljIGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiArc3RhdGljIGJvb2wgcHNyMl9nbG9i YWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+ID4gIHsNCj4gPiA+IC0J c3dpdGNoIChkZXZfcHJpdi0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB7 DQo+ID4gPiArCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01P REVfTUFTSykgew0KPiA+ID4gIAljYXNlIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEU6DQo+ID4gPiAg CWNhc2UgSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMToNCj4gPiA+ICAJCXJldHVybiBmYWxzZTsN Cj4gPiA+IEBAIC0xMDIsMTEgKzEwNCwxMiBAQCBzdGF0aWMgYm9vbCBwc3IyX2dsb2JhbF9lbmFi bGVkKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiAgCX0N Cj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLXN0YXRpYyB2b2lkIHBzcl9pcnFfY29udHJvbChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiArc3RhdGljIHZvaWQgcHNyX2ly cV9jb250cm9sKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gPiAgew0KPiA+ID4gIAll bnVtIHRyYW5zY29kZXIgdHJhbnNfc2hpZnQ7DQo+ID4gPiAgCXUzMiBtYXNrLCB2YWw7DQo+ID4g PiAgCWk5MTVfcmVnX3QgaW1yX3JlZzsNCj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gPg0KPiA+ID4gIAkvKg0KPiA+ ID4gIAkgKiBnZW4xMisgaGFzIHJlZ2lzdGVycyByZWxhdGl2ZSB0byB0cmFuc2NvZGVyIGFuZCBv bmUgcGVyDQo+ID4gPiB0cmFuc2NvZGVyDQo+ID4gPiBAQCAtMTE1LDE0ICsxMTgsMTQgQEAgc3Rh dGljIHZvaWQgcHNyX2lycV9jb250cm9sKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpDQo+ID4gPiAgCSAqLw0KPiA+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMikgew0KPiA+ID4gIAkJdHJhbnNfc2hpZnQgPSAwOw0KPiA+ID4gLQkJaW1yX3JlZyA9IFRS QU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsNCj4gPiA+ICsJCWltcl9yZWcg PSBUUkFOU19QU1JfSU1SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gPiAgCX0gZWxz ZSB7DQo+ID4gPiAtCQl0cmFuc19zaGlmdCA9IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsNCj4g PiA+ICsJCXRyYW5zX3NoaWZ0ID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOw0KPiA+ID4gIAkJ aW1yX3JlZyA9IEVEUF9QU1JfSU1SOw0KPiA+ID4gIAl9DQo+ID4gPg0KPiA+ID4gIAltYXNrID0g RURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7DQo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLmRl YnVnICYgSTkxNV9QU1JfREVCVUdfSVJRKQ0KPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5kZWJ1 ZyAmIEk5MTVfUFNSX0RFQlVHX0lSUSkNCj4gPiA+ICAJCW1hc2sgfD0gRURQX1BTUl9QT1NUX0VY SVQodHJhbnNfc2hpZnQpIHwNCj4gPiA+ICAJCQlFRFBfUFNSX1BSRV9FTlRSWSh0cmFuc19zaGlm dCk7DQo+ID4gPg0KPiA+ID4gQEAgLTE3MSwzOCArMTc0LDM3IEBAIHN0YXRpYyB2b2lkIHBzcl9l dmVudF9wcmludChzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsDQo+ID4gPiAg CQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiXHRQU1IgZGlzYWJsZWRcbiIpOw0KPiA+ID4gIH0N Cj4gPiA+DQo+ID4gPiAtdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzINCj4gPiA+IHBzcl9paXIpDQo+ID4gPiArdm9pZCBpbnRl bF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTMyIHBzcl9paXIp DQo+ID4gPiAgew0KPiA+ID4gLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXI7DQo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ID4gKwllbnVtIHRyYW5zY29kZXIg Y3B1X3RyYW5zY29kZXIgPSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7DQo+ID4gPiAgCWVudW0g dHJhbnNjb2RlciB0cmFuc19zaGlmdDsNCj4gPiA+ICAJaTkxNV9yZWdfdCBpbXJfcmVnOw0KPiA+ ID4gIAlrdGltZV90IHRpbWVfbnMgPSAga3RpbWVfZ2V0KCk7DQo+ID4gPg0KPiA+ID4gIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgew0KPiA+ID4gIAkJdHJhbnNfc2hpZnQgPSAwOw0K PiA+ID4gLQkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVy KTsNCj4gPiA+ICsJCWltcl9yZWcgPSBUUkFOU19QU1JfSU1SKGludGVsX2RwLT5wc3IudHJhbnNj b2Rlcik7DQo+ID4gPiAgCX0gZWxzZSB7DQo+ID4gPiAtCQl0cmFuc19zaGlmdCA9IGRldl9wcml2 LT5wc3IudHJhbnNjb2RlcjsNCj4gPiA+ICsJCXRyYW5zX3NoaWZ0ID0gaW50ZWxfZHAtPnBzci50 cmFuc2NvZGVyOw0KPiA+ID4gIAkJaW1yX3JlZyA9IEVEUF9QU1JfSU1SOw0KPiA+ID4gIAl9DQo+ ID4gPg0KPiA+ID4gIAlpZiAocHNyX2lpciAmIEVEUF9QU1JfUFJFX0VOVFJZKHRyYW5zX3NoaWZ0 KSkgew0KPiA+ID4gLQkJZGV2X3ByaXYtPnBzci5sYXN0X2VudHJ5X2F0dGVtcHQgPSB0aW1lX25z Ow0KPiA+ID4gLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sDQo+ID4gPiAtCQkJICAgICJb dHJhbnNjb2RlciAlc10gUFNSIGVudHJ5IGF0dGVtcHQgaW4gMg0KPiA+ID4gdmJsYW5rc1xuIiwN Cj4gPiA+IC0JCQkgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7DQo+ID4gPiAr CQlpbnRlbF9kcC0+cHNyLmxhc3RfZW50cnlfYXR0ZW1wdCA9IHRpbWVfbnM7DQo+ID4gPiArCQlE Uk1fREVCVUdfS01TKCJbdHJhbnNjb2RlciAlc10gUFNSIGVudHJ5IGF0dGVtcHQgaW4gMg0KPiA+ ID4gdmJsYW5rc1xuIiwNCj4gPiA+ICsJCQkgICAgICB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5z Y29kZXIpKTsNCj4gPiA+ICAJfQ0KPiA+ID4NCj4gPiA+ICAJaWYgKHBzcl9paXIgJiBFRFBfUFNS X1BPU1RfRVhJVCh0cmFuc19zaGlmdCkpIHsNCj4gPiA+IC0JCWRldl9wcml2LT5wc3IubGFzdF9l eGl0ID0gdGltZV9uczsNCj4gPiA+IC0JCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KPiA+ ID4gLQkJCSAgICAiW3RyYW5zY29kZXIgJXNdIFBTUiBleGl0IGNvbXBsZXRlZFxuIiwNCj4gPiA+ IC0JCQkgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7DQo+ID4gPiArCQlpbnRl bF9kcC0+cHNyLmxhc3RfZXhpdCA9IHRpbWVfbnM7DQo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJb dHJhbnNjb2RlciAlc10gUFNSIGV4aXQgY29tcGxldGVkXG4iLA0KPiA+ID4gKwkJCSAgICAgIHRy YW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOw0KPiA+ID4NCj4gPiA+ICAJCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpIHsNCj4gPiA+ICAJCQl1MzIgdmFsID0gaW50ZWxfZGVfcmVh ZChkZXZfcHJpdiwNCj4gPiA+ICAJCQkJCQlQU1JfRVZFTlQoY3B1X3RyYW5zY29kZQ0KPiA+ID4g cikpOw0KPiA+ID4gLQkJCWJvb2wgcHNyMl9lbmFibGVkID0gZGV2X3ByaXYtPnBzci5wc3IyX2Vu YWJsZWQ7DQo+ID4gPiArCQkJYm9vbCBwc3IyX2VuYWJsZWQgPSBpbnRlbF9kcC0+cHNyLnBzcjJf ZW5hYmxlZDsNCj4gPiA+DQo+ID4gPiAgCQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+ID4g PiBQU1JfRVZFTlQoY3B1X3RyYW5zY29kZXIpLA0KPiA+ID4gIAkJCQkgICAgICAgdmFsKTsNCj4g PiA+IEBAIC0yMTMsMTAgKzIxNSwxMCBAQCB2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1 Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcHNyX2lpcikNCj4gPiA+ ICAJaWYgKHBzcl9paXIgJiBFRFBfUFNSX0VSUk9SKHRyYW5zX3NoaWZ0KSkgew0KPiA+ID4gIAkJ dTMyIHZhbDsNCj4gPiA+DQo+ID4gPiAtCQlkcm1fd2FybigmZGV2X3ByaXYtPmRybSwgIlt0cmFu c2NvZGVyICVzXSBQU1IgYXV4DQo+ID4gPiBlcnJvclxuIiwNCj4gPiA+ICsJCURSTV9XQVJOKCJb dHJhbnNjb2RlciAlc10gUFNSIGF1eCBlcnJvclxuIiwNCj4gPiA+ICAJCQkgdHJhbnNjb2Rlcl9u YW1lKGNwdV90cmFuc2NvZGVyKSk7DQo+ID4gPg0KPiA+ID4gLQkJZGV2X3ByaXYtPnBzci5pcnFf YXV4X2Vycm9yID0gdHJ1ZTsNCj4gPiA+ICsJCWludGVsX2RwLT5wc3IuaXJxX2F1eF9lcnJvciA9 IHRydWU7DQo+ID4gPg0KPiA+ID4gIAkJLyoNCj4gPiA+ICAJCSAqIElmIHRoaXMgaW50ZXJydXB0 aW9uIGlzIG5vdCBtYXNrZWQgaXQgd2lsbCBrZWVwDQo+ID4gPiBAQCAtMjMwLDcgKzIzMiw3IEBA IHZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHUzMiBwc3JfaWlyKQ0KPiA+ID4gIAkJdmFsIHw9IEVEUF9QU1JfRVJST1Io dHJhbnNfc2hpZnQpOw0KPiA+ID4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIGltcl9yZWcs IHZhbCk7DQo+ID4gPg0KPiA+ID4gLQkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPnBzci53b3Jr KTsNCj4gPiA+ICsJCXNjaGVkdWxlX3dvcmsoJmludGVsX2RwLT5wc3Iud29yayk7DQo+ID4gPiAg CX0NCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gQEAgLTI5MSwxMiArMjkzLDYgQEAgdm9pZCBpbnRl bF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gKmludGVsX2RwKQ0KPiA+ID4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiA+ID4gIAkJdG9faTkxNShk cF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UuYmFzZS5kZXYpOw0KPiA+ID4NCj4gPiA+IC0J aWYgKGRldl9wcml2LT5wc3IuZHApIHsNCj4gPiA+IC0JCWRybV93YXJuKCZkZXZfcHJpdi0+ZHJt LA0KPiA+ID4gLQkJCSAiTW9yZSB0aGFuIG9uZSBlRFAgcGFuZWwgZm91bmQsIFBTUiBzdXBwb3J0 DQo+ID4gPiBzaG91bGQgYmUgZXh0ZW5kZWRcbiIpOw0KPiA+ID4gLQkJcmV0dXJuOw0KPiA+ID4g LQl9DQo+ID4gPiAtDQo+ID4gPiAgCWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsIERQ X1BTUl9TVVBQT1JULCBpbnRlbF9kcC0NCj4gPiA+ID5wc3JfZHBjZCwNCj4gPiA+ICAJCQkgc2l6 ZW9mKGludGVsX2RwLT5wc3JfZHBjZCkpOw0KPiA+ID4NCj4gPiA+IEBAIC0zMTcsMTIgKzMxMywx MCBAQCB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwDQo+ID4gPiAqaW50 ZWxfZHApDQo+ID4gPiAgCQlyZXR1cm47DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAtCWRldl9w cml2LT5wc3Iuc2lua19zdXBwb3J0ID0gdHJ1ZTsNCj4gPiA+IC0JZGV2X3ByaXYtPnBzci5zaW5r X3N5bmNfbGF0ZW5jeSA9DQo+ID4gPiArCWludGVsX2RwLT5wc3Iuc2lua19zdXBwb3J0ID0gdHJ1 ZTsNCj4gPiA+ICsJaW50ZWxfZHAtPnBzci5zaW5rX3N5bmNfbGF0ZW5jeSA9DQo+ID4gPiAgCQlp bnRlbF9kcF9nZXRfc2lua19zeW5jX2xhdGVuY3koaW50ZWxfZHApOw0KPiA+ID4NCj4gPiA+IC0J ZGV2X3ByaXYtPnBzci5kcCA9IGludGVsX2RwOw0KPiA+ID4gLQ0KPiA+ID4gIAlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5ICYmDQo+ID4gPiAgCSAgICAoaW50ZWxfZHAtPnBzcl9kcGNkWzBd ID09DQo+ID4gPiBEUF9QU1IyX1dJVEhfWV9DT09SRF9JU19TVVBQT1JURUQpKSB7DQo+ID4gPiAg CQlib29sIHlfcmVxID0gaW50ZWxfZHAtPnBzcl9kcGNkWzFdICYNCj4gPiA+IEBAIC0zNDAsMTQg KzMzNCwxNCBAQCB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwDQo+ID4g PiAqaW50ZWxfZHApDQo+ID4gPiAgCQkgKiBZLWNvb3JkaW5hdGUgcmVxdWlyZW1lbnQgcGFuZWxz IHdlIHdvdWxkIG5lZWQgdG8NCj4gPiA+IGVuYWJsZQ0KPiA+ID4gIAkJICogR1RDIGZpcnN0Lg0K PiA+ID4gIAkJICovDQo+ID4gPiAtCQlkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0ID0g eV9yZXEgJiYgYWxwbTsNCj4gPiA+ICsJCWludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQg PSB5X3JlcSAmJiBhbHBtOw0KPiA+ID4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJQ U1IyICVzc3VwcG9ydGVkXG4iLA0KPiA+ID4gLQkJCSAgICBkZXZfcHJpdi0+cHNyLnNpbmtfcHNy Ml9zdXBwb3J0ID8gIiIgOiAibm90DQo+ID4gPiAiKTsNCj4gPiA+ICsJCQkgICAgaW50ZWxfZHAt PnBzci5zaW5rX3BzcjJfc3VwcG9ydCA/ICIiIDogIm5vdA0KPiA+ID4gIik7DQo+ID4gPg0KPiA+ ID4gLQkJaWYgKGRldl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsNCj4gPiA+IC0JCQlk ZXZfcHJpdi0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgPQ0KPiA+ID4gKwkJaWYgKGludGVsX2Rw LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsNCj4gPiA+ICsJCQlpbnRlbF9kcC0+cHNyLmNvbG9y aW1ldHJ5X3N1cHBvcnQgPQ0KPiA+ID4gIAkJCQlpbnRlbF9kcF9nZXRfY29sb3JpbWV0cnlfc3Rh dHVzKGludGVsX2QNCj4gPiA+IHApOw0KPiA+ID4gLQkJCWRldl9wcml2LT5wc3Iuc3VfeF9ncmFu dWxhcml0eSA9DQo+ID4gPiArCQkJaW50ZWxfZHAtPnBzci5zdV94X2dyYW51bGFyaXR5ID0NCj4g PiA+ICAJCQkJaW50ZWxfZHBfZ2V0X3N1X3hfZ3JhbnVsYXJ0aXkoaW50ZWxfZHApDQo+ID4gPiA7 DQo+ID4gPiAgCQl9DQo+ID4gPiAgCX0NCj4gPiA+IEBAIC0zNzMsNyArMzY3LDcgQEAgc3RhdGlj IHZvaWQgaHN3X3Bzcl9zZXR1cF9hdXgoc3RydWN0IGludGVsX2RwDQo+ID4gPiAqaW50ZWxfZHAp DQo+ID4gPiAgCUJVSUxEX0JVR19PTihzaXplb2YoYXV4X21zZykgPiAyMCk7DQo+ID4gPiAgCWZv ciAoaSA9IDA7IGkgPCBzaXplb2YoYXV4X21zZyk7IGkgKz0gNCkNCj4gPiA+ICAJCWludGVsX2Rl X3dyaXRlKGRldl9wcml2LA0KPiA+ID4gLQkJCSAgICAgICBFRFBfUFNSX0FVWF9EQVRBKGRldl9w cml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyLCBpID4+IDIpLA0KPiA+ID4gKwkJCSAgICAgICBF RFBfUFNSX0FVWF9EQVRBKGludGVsX2RwLQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyLCBpID4+IDIp LA0KPiA+ID4gIAkJCSAgICAgICBpbnRlbF9kcF9wYWNrX2F1eCgmYXV4X21zZ1tpXSwNCj4gPiA+ IHNpemVvZihhdXhfbXNnKSAtIGkpKTsNCj4gPiA+DQo+ID4gPiAgCWF1eF9jbG9ja19kaXZpZGVy ID0gaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlcihpbnRlbF9kcCwNCj4gPiA+IDApOw0K PiA+ID4gQEAgLTM4NCw3ICszNzgsNyBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX3NldHVwX2F1eChz dHJ1Y3QgaW50ZWxfZHANCj4gPiA+ICppbnRlbF9kcCkNCj4gPiA+DQo+ID4gPiAgCS8qIFNlbGVj dCBvbmx5IHZhbGlkIGJpdHMgZm9yIFNSRF9BVVhfQ1RMICovDQo+ID4gPiAgCWF1eF9jdGwgJj0g cHNyX2F1eF9tYXNrOw0KPiA+ID4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9B VVhfQ1RMKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSwNCj4gPiA+ICsJaW50ZWxf ZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1JfQVVYX0NUTChpbnRlbF9kcC0NCj4gPiA+ID5wc3Iu dHJhbnNjb2RlciksDQo+ID4gPiAgCQkgICAgICAgYXV4X2N0bCk7DQo+ID4gPiAgfQ0KPiA+ID4N Cj4gPiA+IEBAIC0zOTQsMTQgKzM4OCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxl X3Npbmsoc3RydWN0DQo+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gPiAgCXU4IGRwY2Rf dmFsID0gRFBfUFNSX0VOQUJMRTsNCj4gPiA+DQo+ID4gPiAgCS8qIEVuYWJsZSBBTFBNIGF0IHNp bmsgZm9yIHBzcjIgKi8NCj4gPiA+IC0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7 DQo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ID4gIAkJZHJt X2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LA0KPiA+ID4gRFBfUkVDRUlWRVJfQUxQTV9D T05GSUcsDQo+ID4gPiAgCQkJCSAgIERQX0FMUE1fRU5BQkxFIHwNCj4gPiA+DQo+IERQX0FMUE1f TE9DS19FUlJPUl9JUlFfSFBEX0VOQUJMRSk7DQo+ID4gPg0KPiA+ID4gIAkJZHBjZF92YWwgfD0g RFBfUFNSX0VOQUJMRV9QU1IyIHwNCj4gPiA+IERQX1BTUl9JUlFfSFBEX1dJVEhfQ1JDX0VSUk9S UzsNCj4gPiA+ICAJfSBlbHNlIHsNCj4gPiA+IC0JCWlmIChkZXZfcHJpdi0+cHNyLmxpbmtfc3Rh bmRieSkNCj4gPiA+ICsJCWlmIChpbnRlbF9kcC0+cHNyLmxpbmtfc3RhbmRieSkNCj4gPiA+ICAJ CQlkcGNkX3ZhbCB8PSBEUF9QU1JfTUFJTl9MSU5LX0FDVElWRTsNCj4gPiA+DQo+ID4gPiAgCQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQ0KPiA+ID4gQEAgLTQ2NCw3ICs0NTgsNyBAQCBz dGF0aWMgdTggcHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoc3RydWN0DQo+ID4gPiBpbnRlbF9kcCAq aW50ZWxfZHApDQo+ID4gPiAgCSAqIG9mZi1ieS1vbmUgaXNzdWUgdGhhdCBIVyBoYXMgaW4gc29t ZSBjYXNlcy4NCj4gPiA+ICAJICovDQo+ID4gPiAgCWlkbGVfZnJhbWVzID0gbWF4KDYsIGRldl9w cml2LT52YnQucHNyLmlkbGVfZnJhbWVzKTsNCj4gPiA+IC0JaWRsZV9mcmFtZXMgPSBtYXgoaWRs ZV9mcmFtZXMsIGRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kNCj4gPiA+ICsgMSk7DQo+ ID4gPiArCWlkbGVfZnJhbWVzID0gbWF4KGlkbGVfZnJhbWVzLCBpbnRlbF9kcC0+cHNyLnNpbmtf c3luY19sYXRlbmN5DQo+ID4gPiArIDEpOw0KPiA+ID4NCj4gPiA+ICAJaWYgKGRybV9XQVJOX09O KCZkZXZfcHJpdi0+ZHJtLCBpZGxlX2ZyYW1lcyA+IDB4ZikpDQo+ID4gPiAgCQlpZGxlX2ZyYW1l cyA9IDB4ZjsNCj4gPiA+IEBAIC00ODQsNyArNDc4LDcgQEAgc3RhdGljIHZvaWQgaHN3X2FjdGl2 YXRlX3BzcjEoc3RydWN0IGludGVsX2RwDQo+ID4gPiAqaW50ZWxfZHApDQo+ID4gPiAgCWlmIChJ U19IQVNXRUxMKGRldl9wcml2KSkNCj4gPiA+ICAJCXZhbCB8PSBFRFBfUFNSX01JTl9MSU5LX0VO VFJZX1RJTUVfOF9MSU5FUzsNCj4gPiA+DQo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLmxpbmtf c3RhbmRieSkNCj4gPiA+ICsJaWYgKGludGVsX2RwLT5wc3IubGlua19zdGFuZGJ5KQ0KPiA+ID4g IAkJdmFsIHw9IEVEUF9QU1JfTElOS19TVEFOREJZOw0KPiA+ID4NCj4gPiA+ICAJdmFsIHw9IGlu dGVsX3BzcjFfZ2V0X3RwX3RpbWUoaW50ZWxfZHApOw0KPiA+ID4gQEAgLTQ5Miw5ICs0ODYsOSBA QCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHANCj4gPiA+ICpp bnRlbF9kcCkNCj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkNCj4gPiA+ICAJ CXZhbCB8PSBFRFBfUFNSX0NSQ19FTkFCTEU7DQo+ID4gPg0KPiA+ID4gLQl2YWwgfD0gKGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFu c2NvZGVyKSkgJg0KPiA+ID4gKwl2YWwgfD0gKGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9Q U1JfQ1RMKGludGVsX2RwLQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSkgJg0KPiA+ID4gIAkJRURQ X1BTUl9SRVNUT1JFX1BTUl9BQ1RJVkVfQ1RYX01BU0spOw0KPiA+ID4gLQlpbnRlbF9kZV93cml0 ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwNCj4gPiA+ IHZhbCk7DQo+ID4gPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChpbnRl bF9kcC0+cHNyLnRyYW5zY29kZXIpLA0KPiA+ID4gdmFsKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ ID4gIHN0YXRpYyB1MzIgaW50ZWxfcHNyMl9nZXRfdHBfdGltZShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQ0KPiA+ID4gQEAgLTUyOSw3ICs1MjMsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZh dGVfcHNyMihzdHJ1Y3QgaW50ZWxfZHANCj4gPiA+ICppbnRlbF9kcCkNCj4gPiA+ICAJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpDQo+ID4g PiAgCQl2YWwgfD0gRURQX1lfQ09PUkRJTkFURV9FTkFCTEU7DQo+ID4gPg0KPiA+ID4gLQl2YWwg fD0gRURQX1BTUjJfRlJBTUVfQkVGT1JFX1NVKGRldl9wcml2LQ0KPiA+cHNyLnNpbmtfc3luY19s YXRlbmN5DQo+ID4gPiArIDEpOw0KPiA+ID4gKwl2YWwgfD0gRURQX1BTUjJfRlJBTUVfQkVGT1JF X1NVKGludGVsX2RwLQ0KPiA+cHNyLnNpbmtfc3luY19sYXRlbmN5DQo+ID4gPiArIDEpOw0KPiA+ ID4gIAl2YWwgfD0gaW50ZWxfcHNyMl9nZXRfdHBfdGltZShpbnRlbF9kcCk7DQo+ID4gPg0KPiA+ ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgew0KPiA+ID4gQEAgLTU0OCw3ICs1 NDIsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3QgaW50ZWxfZHANCj4g PiA+ICppbnRlbF9kcCkNCj4gPiA+ICAJCXZhbCB8PSBFRFBfUFNSMl9GQVNUX1dBS0UoNyk7DQo+ ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNo X2VuYWJsZWQpIHsNCj4gPiA+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5h YmxlZCkgew0KPiA+ID4gIAkJLyogV0EgMTQwODMzMDg0NyAqLw0KPiA+ID4gIAkJaWYgKElTX1RH TF9ESVNQX1JFVklEKGRldl9wcml2LCBUR0xfUkVWSURfQTAsDQo+ID4gPiBUR0xfUkVWSURfQTAp IHx8DQo+ID4gPiAgCQkgICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVWSURfQTAsIFJL TF9SRVZJRF9BMCkpDQo+ID4gPiBAQCAtNTU3LDIwICs1NTEsMjAgQEAgc3RhdGljIHZvaWQgaHN3 X2FjdGl2YXRlX3BzcjIoc3RydWN0DQo+IGludGVsX2RwDQo+ID4gPiAqaW50ZWxfZHApDQo+ID4g PiAgCQkJCSAgICAgRElTX1JBTV9CWVBBU1NfUFNSMl9NQU5fVFJBQ0spOw0KPiA+ID4NCj4gPiA+ ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LA0KPiA+ID4gLQkJCSAgICAgICBQU1IyX01BTl9U UktfQ1RMKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSwNCj4gPiA+ICsJCQkgICAg ICAgUFNSMl9NQU5fVFJLX0NUTChpbnRlbF9kcC0NCj4gPiA+ID5wc3IudHJhbnNjb2RlciksDQo+ ID4gPiAgCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVExfRU5BQkxFKTsNCj4gPiA+ICAJfSBlbHNl IGlmIChIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKSB7DQo+ID4gPiAgCQlpbnRlbF9kZV93 cml0ZShkZXZfcHJpdiwNCj4gPiA+IC0JCQkgICAgICAgUFNSMl9NQU5fVFJLX0NUTChkZXZfcHJp di0NCj4gPiA+ID5wc3IudHJhbnNjb2RlciksIDApOw0KPiA+ID4gKwkJCSAgICAgICBQU1IyX01B Tl9UUktfQ1RMKGludGVsX2RwLQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSwgMCk7DQo+ID4gPiAg CX0NCj4gPiA+DQo+ID4gPiAgCS8qDQo+ID4gPiAgCSAqIFBTUjIgSFcgaXMgaW5jb3JyZWN0bHkg dXNpbmcgRURQX1BTUl9UUDFfVFAzX1NFTCBhbmQgQlNwZWMNCj4gPiA+IGlzDQo+ID4gPiAgCSAq IHJlY29tbWVuZGluZyBrZWVwIHRoaXMgYml0IHVuc2V0IHdoaWxlIFBTUjIgaXMgZW5hYmxlZC4N Cj4gPiA+ICAJICovDQo+ID4gPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NU TChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLA0KPiA+ID4gMCk7DQo+ID4gPiArCWludGVsX2Rl X3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLA0K PiA+ID4gMCk7DQo+ID4gPg0KPiA+ID4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BT UjJfQ1RMKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gPiA+ICsJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0NCj4gPiA+ID5w c3IudHJhbnNjb2RlciksIHZhbCk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICBzdGF0aWMgYm9v bA0KPiA+ID4gQEAgLTU5Myw1NSArNTg3LDU4IEBAIHN0YXRpYyB1MzIgaW50ZWxfZ2V0X2ZyYW1l X3RpbWVfdXMoY29uc3QNCj4gPiA+IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpDQo+ ID4gPiAgCQkJICAgIGRybV9tb2RlX3ZyZWZyZXNoKCZjc3RhdGUtDQo+ID4gPiA+aHcuYWRqdXN0 ZWRfbW9kZSkpOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtc3RhdGljIHZvaWQgcHNyMl9wcm9n cmFtX2lkbGVfZnJhbWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiAqZGV2X3ByaXYs DQo+ID4gPiArc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsDQo+ID4gPiAgCQkJCSAgICAgdTMyIGlkbGVfZnJhbWVzKQ0KPiA+ID4g IHsNCj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkx NShpbnRlbF9kcCk7DQo+ID4gPiAgCXUzMiB2YWw7DQo+ID4gPg0KPiA+ID4gIAlpZGxlX2ZyYW1l cyA8PD0gIEVEUF9QU1IyX0lETEVfRlJBTUVfU0hJRlQ7DQo+ID4gPiAtCXZhbCA9IGludGVsX2Rl X3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0NCj4gPiA+ID5wc3IudHJhbnNj b2RlcikpOw0KPiA+ID4gKwl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSMl9D VEwoaW50ZWxfZHAtDQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiA+ICAJdmFsICY9IH5F RFBfUFNSMl9JRExFX0ZSQU1FX01BU0s7DQo+ID4gPiAgCXZhbCB8PSBpZGxlX2ZyYW1lczsNCj4g PiA+IC0JaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0NCj4g PiA+ID5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ID4gPiArCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtDQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpLCB2YWwp Ow0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtc3RhdGljIHZvaWQgdGdsX3BzcjJfZW5hYmxlX2Rj M2NvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiAqZGV2X3ByaXYpDQo+ID4gPiArc3Rh dGljIHZvaWQgdGdsX3BzcjJfZW5hYmxlX2RjM2NvKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp DQo+ID4gPiAgew0KPiA+ID4gLQlwc3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoZGV2X3ByaXYsIDAp Ow0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1 KGludGVsX2RwKTsNCj4gPiA+ICsNCj4gPiA+ICsJcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKGlu dGVsX2RwLCAwKTsNCj4gPiA+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9zZXRfdGFyZ2V0X2RjX3N0 YXRlKGRldl9wcml2LA0KPiA+ID4gRENfU1RBVEVfRU5fREMzQ08pOw0KPiA+ID4gIH0NCj4gPiA+ DQo+ID4gPiAtc3RhdGljIHZvaWQgdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQ0KPiA+ID4gKmRldl9wcml2KQ0KPiA+ID4gK3N0YXRpYyB2b2lkIHRnbF9wc3Iy X2Rpc2FibGVfZGMzY28oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+ICB7DQo+ID4g PiAtCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOw0KPiA+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2Rw KTsNCj4gPiA+DQo+ID4gPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfc2V0X3RhcmdldF9kY19zdGF0 ZShkZXZfcHJpdiwNCj4gPiA+IERDX1NUQVRFX0VOX1VQVE9fREM2KTsNCj4gPiA+IC0JcHNyMl9w cm9ncmFtX2lkbGVfZnJhbWVzKGRldl9wcml2LA0KPiA+ID4gcHNyX2NvbXB1dGVfaWRsZV9mcmFt ZXMoaW50ZWxfZHApKTsNCj4gPiA+ICsJcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKGludGVsX2Rw LA0KPiA+ID4gcHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoaW50ZWxfZHApKTsNCj4gPiA+ICB9DQo+ ID4gPg0KPiA+ID4gIHN0YXRpYyB2b2lkIHRnbF9kYzNjb19kaXNhYmxlX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQ0KPiA+ID4gIHsNCj4gPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0NCj4gPiA+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmRldl9w cml2KSwNCj4gPiA+IHBzci5kYzNjb193b3JrLndvcmspOw0KPiA+ID4gKwlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwID0NCj4gPiA+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVs X2RwKSwNCj4gPiA+IHBzci5kYzNjb193b3JrLndvcmspOw0KPiA+ID4NCj4gPiA+IC0JbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICsJbXV0ZXhfbG9jaygmaW50ZWxfZHAt PnBzci5sb2NrKTsNCj4gPiA+ICAJLyogSWYgZGVsYXllZCB3b3JrIGlzIHBlbmRpbmcsIGl0IGlz IG5vdCBpZGxlICovDQo+ID4gPiAtCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmZGV2X3ByaXYt PnBzci5kYzNjb193b3JrKSkNCj4gPiA+ICsJaWYgKGRlbGF5ZWRfd29ya19wZW5kaW5nKCZpbnRl bF9kcC0+cHNyLmRjM2NvX3dvcmspKQ0KPiA+ID4gIAkJZ290byB1bmxvY2s7DQo+ID4gPg0KPiA+ ID4gLQl0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGRldl9wcml2KTsNCj4gPiA+ICsJdGdsX3BzcjJf ZGlzYWJsZV9kYzNjbyhpbnRlbF9kcCk7DQo+ID4gPiAgdW5sb2NrOg0KPiA+ID4gLQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gPiArCW11dGV4X3VubG9jaygmaW50ZWxf ZHAtPnBzci5sb2NrKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLXN0YXRpYyB2b2lkIHRnbF9k aXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoc3RydWN0DQo+ID4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikNCj4gPiA+ICtzdGF0aWMgdm9pZCB0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNy Ml9leGl0KHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gKmludGVsX2RwKQ0KPiA+ID4gIHsNCj4gPiA+ IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmRjM2NvX2VuYWJsZWQpDQo+ID4gPiArCWlmICghaW50ZWxf ZHAtPnBzci5kYzNjb19lbmFibGVkKQ0KPiA+ID4gIAkJcmV0dXJuOw0KPiA+ID4NCj4gPiA+IC0J Y2FuY2VsX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrKTsNCj4gPiA+ICsJ Y2FuY2VsX2RlbGF5ZWRfd29yaygmaW50ZWxfZHAtPnBzci5kYzNjb193b3JrKTsNCj4gPiA+ICAJ LyogQmVmb3JlIFBTUjIgZXhpdCBkaXNhbGxvdyBkYzNjbyovDQo+ID4gPiAtCXRnbF9wc3IyX2Rp c2FibGVfZGMzY28oZGV2X3ByaXYpOw0KPiA+ID4gKwl0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGlu dGVsX2RwKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIHN0YXRpYyB2b2lkDQo+ID4gPiBAQCAt NzE0LDcgKzcxMSw3IEBAIHN0YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVj dA0KPiA+ID4gaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4gIAlpbnQgY3J0Y192ZGlzcGxheSA9 IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsNCj4gPiA+ICAJaW50 IHBzcl9tYXhfaCA9IDAsIHBzcl9tYXhfdiA9IDAsIG1heF9icHAgPSAwOw0KPiA+ID4NCj4gPiA+ IC0JaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KQ0KPiA+ID4gKwlpZiAoIWlu dGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpDQo+ID4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ ID4gPg0KPiA+ID4gIAlpZiAoIXRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGNydGNfc3Rh dGUtPmNwdV90cmFuc2NvZGVyKSkNCj4gPiA+IHsNCj4gPiA+IEBAIC03MjQsNyArNzIxLDcgQEAg c3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdfdmFsaWQoc3RydWN0DQo+ID4gPiBpbnRlbF9k cCAqaW50ZWxfZHAsDQo+ID4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ ID4gPiAtCWlmICghcHNyMl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdikpIHsNCj4gPiA+ICsJaWYg KCFwc3IyX2dsb2JhbF9lbmFibGVkKGludGVsX2RwKSkgew0KPiA+ID4gIAkJZHJtX2RiZ19rbXMo JmRldl9wcml2LT5kcm0sICJQU1IyIGRpc2FibGVkIGJ5IGZsYWdcbiIpOw0KPiA+ID4gIAkJcmV0 dXJuIGZhbHNlOw0KPiA+ID4gIAl9DQo+ID4gPiBAQCAtNzczLDEwICs3NzAsMTAgQEAgc3RhdGlj IGJvb2wgaW50ZWxfcHNyMl9jb25maWdfdmFsaWQoc3RydWN0DQo+ID4gPiBpbnRlbF9kcCAqaW50 ZWxfZHAsDQo+ID4gPiAgCSAqIG9ubHkgbmVlZCB0byB2YWxpZGF0ZSB0aGUgU1UgYmxvY2sgd2lk dGggaXMgYSBtdWx0aXBsZSBvZg0KPiA+ID4gIAkgKiB4IGdyYW51bGFyaXR5Lg0KPiA+ID4gIAkg Ki8NCj4gPiA+IC0JaWYgKGNydGNfaGRpc3BsYXkgJSBkZXZfcHJpdi0+cHNyLnN1X3hfZ3JhbnVs YXJpdHkpIHsNCj4gPiA+ICsJaWYgKGNydGNfaGRpc3BsYXkgJSBpbnRlbF9kcC0+cHNyLnN1X3hf Z3JhbnVsYXJpdHkpIHsNCj4gPiA+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KPiA+ ID4gIAkJCSAgICAiUFNSMiBub3QgZW5hYmxlZCwgaGRpc3BsYXkoJWQpIG5vdA0KPiA+ID4gbXVs dGlwbGUgb2YgJWRcbiIsDQo+ID4gPiAtCQkJICAgIGNydGNfaGRpc3BsYXksIGRldl9wcml2LQ0K PiA+ID4gPnBzci5zdV94X2dyYW51bGFyaXR5KTsNCj4gPiA+ICsJCQkgICAgY3J0Y19oZGlzcGxh eSwgaW50ZWxfZHAtDQo+ID4gPiA+cHNyLnN1X3hfZ3JhbnVsYXJpdHkpOw0KPiA+ID4gIAkJcmV0 dXJuIGZhbHNlOw0KPiA+ID4gIAl9DQo+ID4gPg0KPiA+ID4gQEAgLTgxMSwzMCArODA4LDI1IEBA IHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdA0KPiBpbnRlbF9kcA0KPiA+ID4g KmludGVsX2RwLA0KPiA+ID4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7DQo+ID4g PiAgCWludCBwc3Jfc2V0dXBfdGltZTsNCj4gPiA+DQo+ID4gPiAtCWlmICghQ0FOX1BTUihkZXZf cHJpdikpDQo+ID4gPiAtCQlyZXR1cm47DQo+ID4gPiAtDQo+ID4gPiAtCWlmIChpbnRlbF9kcCAh PSBkZXZfcHJpdi0+cHNyLmRwKQ0KPiA+ID4gKwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApKQ0KPiA+ ID4gIAkJcmV0dXJuOw0KPiA+ID4NCj4gPiA+IC0JaWYgKCFwc3JfZ2xvYmFsX2VuYWJsZWQoZGV2 X3ByaXYpKSB7DQo+ID4gPiArCWlmICghcHNyX2dsb2JhbF9lbmFibGVkKGludGVsX2RwKSkgew0K PiA+ID4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJQU1IgZGlzYWJsZWQgYnkgZmxh Z1xuIik7DQo+ID4gPiAgCQlyZXR1cm47DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAgCS8qDQo+ ID4gPiAgCSAqIEhTVyBzcGVjIGV4cGxpY2l0bHkgc2F5cyBQU1IgaXMgdGllZCB0byBwb3J0IEEu DQo+ID4gPiAtCSAqIEJEVysgcGxhdGZvcm1zIGhhdmUgYSBpbnN0YW5jZSBvZiBQU1IgcmVnaXN0 ZXJzIHBlcg0KPiA+ID4gdHJhbnNjb2RlciBidXQNCj4gPiA+IC0JICogZm9yIG5vdyBpdCBvbmx5 IHN1cHBvcnRzIG9uZSBpbnN0YW5jZSBvZiBQU1IsIHNvIGxldHMga2VlcA0KPiA+ID4gaXQNCj4g PiA+IC0JICogaGFyZGNvZGVkIHRvIFBPUlRfQQ0KPiA+ID4gKwkgKiBCRFcrIHBsYXRmb3JtcyBo YXZlIGEgaW5zdGFuY2Ugb2YgUFNSIHJlZ2lzdGVycyBwZXINCj4gPiA+IHRyYW5zY29kZXIuDQo+ ID4gPiAgCSAqLw0KPiA+ID4gLQlpZiAoZGlnX3BvcnQtPmJhc2UucG9ydCAhPSBQT1JUX0EpIHsN Cj4gPiA+ICsJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmIGRpZ19wb3J0LT5iYXNlLnBvcnQg IT0gUE9SVF9BKSB7DQo+ID4gPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gPiA+ ICAJCQkgICAgIlBTUiBjb25kaXRpb24gZmFpbGVkOiBQb3J0IG5vdA0KPiA+ID4gc3VwcG9ydGVk XG4iKTsNCj4gPiA+ICAJCXJldHVybjsNCj4gPiA+ICAJfQ0KPiA+ID4NCj4gPiA+IC0JaWYgKGRl dl9wcml2LT5wc3Iuc2lua19ub3RfcmVsaWFibGUpIHsNCj4gPiA+ICsJaWYgKGludGVsX2RwLT5w c3Iuc2lua19ub3RfcmVsaWFibGUpIHsNCj4gPiA+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ ZHJtLA0KPiA+ID4gIAkJCSAgICAiUFNSIHNpbmsgaW1wbGVtZW50YXRpb24gaXMgbm90DQo+ID4g PiByZWxpYWJsZVxuIik7DQo+ID4gPiAgCQlyZXR1cm47DQo+ID4gPiBAQCAtODcwLDIzICs4NjIs MjQgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0DQo+IGludGVsX2RwDQo+ ID4gPiAqaW50ZWxfZHAsDQo+ID4gPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gPiAgew0KPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiA+ICsJZW51 bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7DQo+ID4g Pg0KPiA+ID4gLQlpZiAodHJhbnNjb2Rlcl9oYXNfcHNyMihkZXZfcHJpdiwgZGV2X3ByaXYtPnBz ci50cmFuc2NvZGVyKSkNCj4gPiA+ICsJaWYgKHRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYs IHRyYW5zY29kZXIpKQ0KPiA+ID4gIAkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sDQo+ID4g PiAtCQkJICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ID4gPiBFRFBfUFNSMl9DVEwoZGV2 X3ByaXYtPnBzci50cmFuc2NvZGVyKSkgJiBFRFBfUFNSMl9FTkFCTEUpOw0KPiA+ID4gKwkJCSAg ICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiA+ID4gRURQX1BTUjJfQ1RMKHRyYW5zY29kZXIp KSAmIEVEUF9QU1IyX0VOQUJMRSk7DQo+ID4gPg0KPiA+ID4gIAlkcm1fV0FSTl9PTigmZGV2X3By aXYtPmRybSwNCj4gPiA+IC0JCSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NU TChkZXZfcHJpdi0NCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpICYgRURQX1BTUl9FTkFCTEUpOw0K PiA+ID4gLQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYtPnBzci5hY3RpdmUp Ow0KPiA+ID4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ ID4gKwkJICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKHRyYW5zY29kZXIp KSAmDQo+ID4gPiBFRFBfUFNSX0VOQUJMRSk7DQo+ID4gPiArCWRybV9XQVJOX09OKCZkZXZfcHJp di0+ZHJtLCBpbnRlbF9kcC0+cHNyLmFjdGl2ZSk7DQo+ID4gPiArCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPg0KPiA+ID4gIAkvKiBwc3IxIGFuZCBwc3Iy IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuKi8NCj4gPiA+IC0JaWYgKGRldl9wcml2LT5wc3IucHNy Ml9lbmFibGVkKQ0KPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpDQo+ID4g PiAgCQloc3dfYWN0aXZhdGVfcHNyMihpbnRlbF9kcCk7DQo+ID4gPiAgCWVsc2UNCj4gPiA+ICAJ CWhzd19hY3RpdmF0ZV9wc3IxKGludGVsX2RwKTsNCj4gPiA+DQo+ID4gPiAtCWRldl9wcml2LT5w c3IuYWN0aXZlID0gdHJ1ZTsNCj4gPiA+ICsJaW50ZWxfZHAtPnBzci5hY3RpdmUgPSB0cnVlOw0K PiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3Vy Y2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiA+IEBAIC05MDIsNyArODk1LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0DQo+ID4gPiBpbnRlbF9k cCAqaW50ZWxfZHAsDQo+ID4gPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9B RFdFTEwoZGV2X3ByaXYpKQ0KPiA+ID4gIAkJaHN3X3Bzcl9zZXR1cF9hdXgoaW50ZWxfZHApOw0K PiA+ID4NCj4gPiA+IC0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkICYmIChJU19HRU4o ZGV2X3ByaXYsIDkpICYmDQo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCAm JiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJg0KPiA+ID4gIAkJCQkJICAgIUlTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKSkgew0KPiA+ID4gIAkJaTkxNV9yZWdfdCByZWcgPSBDSElDS0VOX1RSQU5TKGNw dV90cmFuc2NvZGVyKTsNCj4gPiA+ICAJCXUzMiBjaGlja2VuID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgcmVnKTsNCj4gPiA+IEBAIC05MjYsMTAgKzkxOSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QNCj4gPiA+IGludGVsX2RwICppbnRlbF9kcCwNCj4g PiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkNCj4gPiA+ICAJCW1hc2sgfD0gRURQ X1BTUl9ERUJVR19NQVNLX0RJU1BfUkVHX1dSSVRFOw0KPiA+ID4NCj4gPiA+IC0JaW50ZWxfZGVf d3JpdGUoZGV2X3ByaXYsIEVEUF9QU1JfREVCVUcoZGV2X3ByaXYtDQo+ID4gPiA+cHNyLnRyYW5z Y29kZXIpLA0KPiA+ID4gKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9ERUJVRyhp bnRlbF9kcC0NCj4gPiA+ID5wc3IudHJhbnNjb2RlciksDQo+ID4gPiAgCQkgICAgICAgbWFzayk7 DQo+ID4gPg0KPiA+ID4gLQlwc3JfaXJxX2NvbnRyb2woZGV2X3ByaXYpOw0KPiA+ID4gKwlwc3Jf aXJxX2NvbnRyb2woaW50ZWxfZHApOw0KPiA+ID4NCj4gPiA+ICAJaWYgKGNydGNfc3RhdGUtPmRj M2NvX2V4aXRsaW5lKSB7DQo+ID4gPiAgCQl1MzIgdmFsOw0KPiA+ID4gQEAgLTk0NywzMCArOTQw LDMwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdA0KPiA+ID4g aW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4NCj4gPiA+ICAJaWYgKEhBU19QU1JfSFdfVFJBQ0tJ TkcoZGV2X3ByaXYpICYmDQo+ID4gPiBIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKQ0KPiA+ ID4gIAkJaW50ZWxfZGVfcm13KGRldl9wcml2LCBDSElDS0VOX1BBUjFfMSwNCj4gPiA+IElHTk9S RV9QU1IyX0hXX1RSQUNLSU5HLA0KPiA+ID4gLQkJCSAgICAgZGV2X3ByaXYtPnBzci5wc3IyX3Nl bF9mZXRjaF9lbmFibGVkID8NCj4gPiA+ICsJCQkgICAgIGludGVsX2RwLT5wc3IucHNyMl9zZWxf ZmV0Y2hfZW5hYmxlZCA/DQo+ID4gPiAgCQkJICAgICBJR05PUkVfUFNSMl9IV19UUkFDS0lORyA6 IDApOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJs ZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ICpkZXZfcHJpdiwNCj4gPiA+ ICtzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLA0KPiA+ID4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4g PiA+ICpjcnRjX3N0YXRlLA0KPiA+ID4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUNCj4gPiA+ICpjb25uX3N0YXRlKQ0KPiA+ID4gIHsNCj4gPiA+IC0Jc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZHA7DQo+ID4gPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ID4gIAlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVs X2RwKTsNCj4gPiA+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmZGlnX3BvcnQt PmJhc2U7DQo+ID4gPiAgCXUzMiB2YWw7DQo+ID4gPg0KPiA+ID4gLQlkcm1fV0FSTl9PTigmZGV2 X3ByaXYtPmRybSwgZGV2X3ByaXYtPnBzci5lbmFibGVkKTsNCj4gPiA+ICsJZHJtX1dBUk5fT04o JmRldl9wcml2LT5kcm0sIGludGVsX2RwLT5wc3IuZW5hYmxlZCk7DQo+ID4gPg0KPiA+ID4gLQlk ZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmhhc19wc3IyOw0KPiA+ID4g LQlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyA9IDA7DQo+ID4gPiAtCWRldl9w cml2LT5wc3IucGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKS0NCj4g PiA+ID5waXBlOw0KPiA+ID4gLQlkZXZfcHJpdi0+cHNyLmRjM2NvX2VuYWJsZWQgPSAhIWNydGNf c3RhdGUtPmRjM2NvX2V4aXRsaW5lOw0KPiA+ID4gLQlkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIg PSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsNCj4gPiA+ICsJaW50ZWxfZHAtPnBzci5wc3Iy X2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsNCj4gPiA+ICsJaW50ZWxfZHAtPnBzci5i dXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOw0KPiA+ID4gKwlpbnRlbF9kcC0+cHNyLnBpcGUgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktDQo+ID4gPiA+cGlwZTsNCj4gPiA+ ICsJaW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkID0gISFjcnRjX3N0YXRlLT5kYzNjb19leGl0 bGluZTsNCj4gPiA+ICsJaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1 X3RyYW5zY29kZXI7DQo+ID4gPiAgCS8qIERDNS9EQzYgcmVxdWlyZXMgYXQgbGVhc3QgNiBpZGxl IGZyYW1lcyAqLw0KPiA+ID4gIAl2YWwgPSB1c2Vjc190b19qaWZmaWVzKGludGVsX2dldF9mcmFt ZV90aW1lX3VzKGNydGNfc3RhdGUpICoNCj4gPiA+IDYpOw0KPiA+ID4gLQlkZXZfcHJpdi0+cHNy LmRjM2NvX2V4aXRfZGVsYXkgPSB2YWw7DQo+ID4gPiAtCWRldl9wcml2LT5wc3IucHNyMl9zZWxf ZmV0Y2hfZW5hYmxlZCA9IGNydGNfc3RhdGUtDQo+ID4gPiA+ZW5hYmxlX3BzcjJfc2VsX2ZldGNo Ow0KPiA+ID4gKwlpbnRlbF9kcC0+cHNyLmRjM2NvX2V4aXRfZGVsYXkgPSB2YWw7DQo+ID4gPiAr CWludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCA9IGNydGNfc3RhdGUtDQo+ID4g PiA+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoOw0KPiA+ID4NCj4gPiA+ICAJLyoNCj4gPiA+ICAJICog SWYgYSBQU1IgZXJyb3IgaGFwcGVuZWQgYW5kIHRoZSBkcml2ZXIgaXMgcmVsb2FkZWQsIHRoZQ0K PiA+ID4gRURQX1BTUl9JSVINCj4gPiA+IEBAIC05ODIsMjcgKzk3NSwyNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LA0KPiA+ID4gIAkgKi8NCj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTIpIHsNCj4gPiA+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ID4gPiAt CQkJCSAgICBUUkFOU19QU1JfSUlSKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7 DQo+ID4gPiArCQkJCSAgICBUUkFOU19QU1JfSUlSKGludGVsX2RwLQ0KPiA+ID4gPnBzci50cmFu c2NvZGVyKSk7DQo+ID4gPiAgCQl2YWwgJj0gRURQX1BTUl9FUlJPUigwKTsNCj4gPiA+ICAJfSBl bHNlIHsNCj4gPiA+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfSUlS KTsNCj4gPiA+IC0JCXZhbCAmPSBFRFBfUFNSX0VSUk9SKGRldl9wcml2LT5wc3IudHJhbnNjb2Rl cik7DQo+ID4gPiArCQl2YWwgJj0gRURQX1BTUl9FUlJPUihpbnRlbF9kcC0+cHNyLnRyYW5zY29k ZXIpOw0KPiA+ID4gIAl9DQo+ID4gPiAgCWlmICh2YWwpIHsNCj4gPiA+IC0JCWRldl9wcml2LT5w c3Iuc2lua19ub3RfcmVsaWFibGUgPSB0cnVlOw0KPiA+ID4gKwkJaW50ZWxfZHAtPnBzci5zaW5r X25vdF9yZWxpYWJsZSA9IHRydWU7DQo+ID4gPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRy bSwNCj4gPiA+ICAJCQkgICAgIlBTUiBpbnRlcnJ1cHRpb24gZXJyb3Igc2V0LCBub3QgZW5hYmxp bmcNCj4gPiA+IFBTUlxuIik7DQo+ID4gPiAgCQlyZXR1cm47DQo+ID4gPiAgCX0NCj4gPiA+DQo+ ID4gPiAgCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRW5hYmxpbmcgUFNSJXNcbiIsDQo+ ID4gPiAtCQkgICAgZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgPyAiMiIgOiAiMSIpOw0KPiA+ ID4gKwkJICAgIGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsNCj4gPiA+ ICAJaW50ZWxfZHBfY29tcHV0ZV9wc3JfdnNjX3NkcChpbnRlbF9kcCwgY3J0Y19zdGF0ZSwgY29u bl9zdGF0ZSwNCj4gPiA+IC0JCQkJICAgICAmZGV2X3ByaXYtPnBzci52c2MpOw0KPiA+ID4gLQlp bnRlbF93cml0ZV9kcF92c2Nfc2RwKGVuY29kZXIsIGNydGNfc3RhdGUsICZkZXZfcHJpdi0NCj4g PiA+ID5wc3IudnNjKTsNCj4gPiA+ICsJCQkJICAgICAmaW50ZWxfZHAtPnBzci52c2MpOw0KPiA+ ID4gKwlpbnRlbF93cml0ZV9kcF92c2Nfc2RwKGVuY29kZXIsIGNydGNfc3RhdGUsICZpbnRlbF9k cC0NCj4gPiA+ID5wc3IudnNjKTsNCj4gPiA+ICAJaW50ZWxfcHNyX2VuYWJsZV9zaW5rKGludGVs X2RwKTsNCj4gPiA+ICAJaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2UoaW50ZWxfZHAsIGNydGNfc3Rh dGUpOw0KPiA+ID4gLQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSB0cnVlOw0KPiA+ID4gKwlpbnRl bF9kcC0+cHNyLmVuYWJsZWQgPSB0cnVlOw0KPiA+ID4NCj4gPiA+ICAJaW50ZWxfcHNyX2FjdGl2 YXRlKGludGVsX2RwKTsNCj4gPiA+ICB9DQo+ID4gPiBAQCAtMTAyMSw3ICsxMDE0LDcgQEAgdm9p ZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gKmludGVsX2RwLA0KPiA+ ID4gIHsNCj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9f aTkxNShpbnRlbF9kcCk7DQo+ID4gPg0KPiA+ID4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8 IGRldl9wcml2LT5wc3IuZHAgIT0gaW50ZWxfZHApDQo+ID4gPiArCWlmICghQ0FOX1BTUihpbnRl bF9kcCkpDQo+ID4gPiAgCQlyZXR1cm47DQo+ID4gPg0KPiA+ID4gIAlpZiAoIWNydGNfc3RhdGUt Pmhhc19wc3IpDQo+ID4gPiBAQCAtMTAyOSw0NiArMTAyMiw0NyBAQCB2b2lkIGludGVsX3Bzcl9l bmFibGUoc3RydWN0IGludGVsX2RwDQo+ID4gPiAqaW50ZWxfZHAsDQo+ID4gPg0KPiA+ID4gIAlk cm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYtPmRycnMuZHApOw0KPiA+ID4NCj4g PiA+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+IC0JaW50ZWxfcHNy X2VuYWJsZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOw0KPiA+ID4g LQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gPiArCW11dGV4X2xvY2so JmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPiArCWludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGlu dGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsNCj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZp bnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtc3RhdGljIHZvaWQg aW50ZWxfcHNyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ID4g K3N0YXRpYyB2b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ ID4gPiAgew0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsNCj4gPiA+ICAJdTMyIHZhbDsNCj4gPiA+DQo+ID4gPiAtCWlmICgh ZGV2X3ByaXYtPnBzci5hY3RpdmUpIHsNCj4gPiA+IC0JCWlmICh0cmFuc2NvZGVyX2hhc19wc3Iy KGRldl9wcml2LCBkZXZfcHJpdi0NCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpIHsNCj4gPiA+ICsJ aWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSkgew0KPiA+ID4gKwkJaWYgKHRyYW5zY29kZXJfaGFz X3BzcjIoZGV2X3ByaXYsIGludGVsX2RwLQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSkgew0KPiA+ ID4gIAkJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ID4gPiAtCQkJCQkgICAgRURQ X1BTUjJfQ1RMKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gPiArCQkJ CQkgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ ID4gPiAgCQkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIHZhbCAmDQo+ID4gPiBFRFBfUFNS Ml9FTkFCTEUpOw0KPiA+ID4gIAkJfQ0KPiA+ID4NCj4gPiA+ICAJCXZhbCA9IGludGVsX2RlX3Jl YWQoZGV2X3ByaXYsDQo+ID4gPiAtCQkJCSAgICBFRFBfUFNSX0NUTChkZXZfcHJpdi0NCj4gPiA+ ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ID4gKwkJCQkgICAgRURQX1BTUl9DVEwoaW50ZWxfZHAt DQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiA+ICAJCWRybV9XQVJOX09OKCZkZXZfcHJp di0+ZHJtLCB2YWwgJiBFRFBfUFNSX0VOQUJMRSk7DQo+ID4gPg0KPiA+ID4gIAkJcmV0dXJuOw0K PiA+ID4gIAl9DQo+ID4gPg0KPiA+ID4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQp IHsNCj4gPiA+IC0JCXRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoZGV2X3ByaXYpOw0K PiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gPiA+ICsJCXRnbF9k aXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoaW50ZWxfZHApOw0KPiA+ID4gIAkJdmFsID0gaW50 ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gPiA+IC0JCQkJICAgIEVEUF9QU1IyX0NUTChkZXZfcHJp di0NCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ID4gKwkJCQkgICAgRURQX1BTUjJfQ1RM KGludGVsX2RwLQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gPiAgCQlkcm1fV0FSTl9P TigmZGV2X3ByaXYtPmRybSwgISh2YWwgJg0KPiBFRFBfUFNSMl9FTkFCTEUpKTsNCj4gPiA+ICAJ CXZhbCAmPSB+RURQX1BTUjJfRU5BQkxFOw0KPiA+ID4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsDQo+ID4gPiAtCQkJICAgICAgIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29k ZXIpLA0KPiA+ID4gdmFsKTsNCj4gPiA+ICsJCQkgICAgICAgRURQX1BTUjJfQ1RMKGludGVsX2Rw LT5wc3IudHJhbnNjb2RlciksDQo+ID4gPiB2YWwpOw0KPiA+ID4gIAl9IGVsc2Ugew0KPiA+ID4g IAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gPiA+IC0JCQkJICAgIEVEUF9QU1Jf Q1RMKGRldl9wcml2LQ0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gPiArCQkJCSAgICBF RFBfUFNSX0NUTChpbnRlbF9kcC0NCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ID4gIAkJ ZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICEodmFsICYNCj4gRURQX1BTUl9FTkFCTEUpKTsN Cj4gPiA+ICAJCXZhbCAmPSB+RURQX1BTUl9FTkFCTEU7DQo+ID4gPiAgCQlpbnRlbF9kZV93cml0 ZShkZXZfcHJpdiwNCj4gPiA+IC0JCQkgICAgICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKSwNCj4gPiA+IHZhbCk7DQo+ID4gPiArCQkJICAgICAgIEVEUF9QU1JfQ1RMKGlu dGVsX2RwLT5wc3IudHJhbnNjb2RlciksDQo+ID4gPiB2YWwpOw0KPiA+ID4gIAl9DQo+ID4gPiAt CWRldl9wcml2LT5wc3IuYWN0aXZlID0gZmFsc2U7DQo+ID4gPiArCWludGVsX2RwLT5wc3IuYWN0 aXZlID0gZmFsc2U7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9w c3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+IEBAIC0x MDc3LDIxICsxMDcxLDIxIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChz dHJ1Y3QNCj4gPiA+IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+ICAJaTkxNV9yZWdfdCBwc3Jf c3RhdHVzOw0KPiA+ID4gIAl1MzIgcHNyX3N0YXR1c19tYXNrOw0KPiA+ID4NCj4gPiA+IC0JbG9j a2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICsJbG9ja2RlcF9h c3NlcnRfaGVsZCgmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiA+DQo+ID4gPiAtCWlmICghZGV2 X3ByaXYtPnBzci5lbmFibGVkKQ0KPiA+ID4gKwlpZiAoIWludGVsX2RwLT5wc3IuZW5hYmxlZCkN Cj4gPiA+ICAJCXJldHVybjsNCj4gPiA+DQo+ID4gPiAgCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ ZHJtLCAiRGlzYWJsaW5nIFBTUiVzXG4iLA0KPiA+ID4gLQkJICAgIGRldl9wcml2LT5wc3IucHNy Ml9lbmFibGVkID8gIjIiIDogIjEiKTsNCj4gPiA+ICsJCSAgICBpbnRlbF9kcC0+cHNyLnBzcjJf ZW5hYmxlZCA/ICIyIiA6ICIxIik7DQo+ID4gPg0KPiA+ID4gLQlpbnRlbF9wc3JfZXhpdChkZXZf cHJpdik7DQo+ID4gPiArCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsNCj4gPiA+DQo+ID4gPiAt CWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ID4gLQkJcHNyX3N0YXR1cyA9 IEVEUF9QU1IyX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOw0KPiA+ID4gKwlpZiAo aW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gPiA+ICsJCXBzcl9zdGF0dXMgPSBFRFBf UFNSMl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsNCj4gPiA+ICAJCXBzcl9zdGF0 dXNfbWFzayA9IEVEUF9QU1IyX1NUQVRVU19TVEFURV9NQVNLOw0KPiA+ID4gIAl9IGVsc2Ugew0K PiA+ID4gLQkJcHNyX3N0YXR1cyA9IEVEUF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNj b2Rlcik7DQo+ID4gPiArCQlwc3Jfc3RhdHVzID0gRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKTsNCj4gPiA+ICAJCXBzcl9zdGF0dXNfbWFzayA9IEVEUF9QU1JfU1RBVFVT X1NUQVRFX01BU0s7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiBAQCAtMTEwMSw3ICsxMDk1LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdA0KPiA+ID4gaW50 ZWxfZHAgKmludGVsX2RwKQ0KPiA+ID4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlRpbWVk IG91dCB3YWl0aW5nIFBTUiBpZGxlDQo+ID4gPiBzdGF0ZVxuIik7DQo+ID4gPg0KPiA+ID4gIAkv KiBXQSAxNDA4MzMwODQ3ICovDQo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2Zl dGNoX2VuYWJsZWQgJiYNCj4gPiA+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hf ZW5hYmxlZCAmJg0KPiA+ID4gIAkgICAgKElTX1RHTF9ESVNQX1JFVklEKGRldl9wcml2LCBUR0xf UkVWSURfQTAsIFRHTF9SRVZJRF9BMCkgfHwNCj4gPiA+ICAJICAgICBJU19SS0xfUkVWSUQoZGV2 X3ByaXYsIFJLTF9SRVZJRF9BMCwgUktMX1JFVklEX0EwKSkpDQo+ID4gPiAgCQlpbnRlbF9kZV9y bXcoZGV2X3ByaXYsIENISUNLRU5fUEFSMV8xLA0KPiA+ID4gQEAgLTExMTAsMTAgKzExMDQsMTAg QEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdA0KPiA+ID4gaW50 ZWxfZHAgKmludGVsX2RwKQ0KPiA+ID4gIAkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovDQo+ID4g PiAgCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywgMCk7 DQo+ID4gPg0KPiA+ID4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpDQo+ID4gPiAr CWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkNCj4gPiA+ICAJCWRybV9kcF9kcGNkX3dy aXRlYigmaW50ZWxfZHAtPmF1eCwNCj4gPiA+IERQX1JFQ0VJVkVSX0FMUE1fQ09ORklHLCAwKTsN Cj4gPiA+DQo+ID4gPiAtCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGZhbHNlOw0KPiA+ID4gKwlp bnRlbF9kcC0+cHNyLmVuYWJsZWQgPSBmYWxzZTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIC8q Kg0KPiA+ID4gQEAgLTExMzEsMjAgKzExMjUsMjIgQEAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShz dHJ1Y3QgaW50ZWxfZHANCj4gPiA+ICppbnRlbF9kcCwNCj4gPiA+ICAJaWYgKCFvbGRfY3J0Y19z dGF0ZS0+aGFzX3BzcikNCj4gPiA+ICAJCXJldHVybjsNCj4gPiA+DQo+ID4gPiAtCWlmIChkcm1f V0FSTl9PTigmZGV2X3ByaXYtPmRybSwgIUNBTl9QU1IoZGV2X3ByaXYpKSkNCj4gPiA+ICsJaWYg KGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhQ0FOX1BTUihpbnRlbF9kcCkpKQ0KPiA+ID4g IAkJcmV0dXJuOw0KPiA+ID4NCj4gPiA+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2Nr KTsNCj4gPiA+ICsJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiA+DQo+ID4g PiAgCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7DQo+ID4gPg0KPiA+ID4gLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gPiAtCWNhbmNlbF93b3JrX3N5 bmMoJmRldl9wcml2LT5wc3Iud29yayk7DQo+ID4gPiAtCWNhbmNlbF9kZWxheWVkX3dvcmtfc3lu YygmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrKTsNCj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZpbnRl bF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gKwljYW5jZWxfd29ya19zeW5jKCZpbnRlbF9kcC0+cHNy LndvcmspOw0KPiA+ID4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmludGVsX2RwLT5wc3Iu ZGMzY29fd29yayk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC1zdGF0aWMgdm9pZCBwc3JfZm9y Y2VfaHdfdHJhY2tpbmdfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gKmRldl9w cml2KQ0KPiA+ID4gK3N0YXRpYyB2b2lkIHBzcl9mb3JjZV9od190cmFja2luZ19leGl0KHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gPiAgew0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiA+ICsNCj4gPiA+ ICAJaWYgKElTX1RJR0VSTEFLRShkZXZfcHJpdikpDQo+ID4gPiAgCQkvKg0KPiA+ID4gIAkJICog V3JpdGVzIHRvIENVUlNVUkZMSVZFIGluIFRHTCBhcmUgY2F1c2luZyBJT01NVQ0KPiA+ID4gZXJy b3JzIGFuZA0KPiA+ID4gQEAgLTExNTgsNyArMTE1NCw3IEBAIHN0YXRpYyB2b2lkDQo+IHBzcl9m b3JjZV9od190cmFja2luZ19leGl0KHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpDQo+ID4gPiAgCQkgKiBTbyB1c2luZyB0aGlzIHdvcmthcm91bmQgdW50aWwgdGhpcyBp c3N1ZSBpcyByb290DQo+ID4gPiBjYXVzZWQNCj4gPiA+ICAJCSAqIGFuZCBhIGJldHRlciBmaXgg aXMgZm91bmQuDQo+ID4gPiAgCQkgKi8NCj4gPiA+IC0JCWludGVsX3Bzcl9leGl0KGRldl9wcml2 KTsNCj4gPiA+ICsJCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsNCj4gPiA+ICAJZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQ0KPiA+ID4gIAkJLyoNCj4gPiA+ICAJCSAqIERpc3Bs YXkgV0EgIzA4ODQ6IHNrbCsNCj4gPiA+IEBAIC0xMTY5LDEzICsxMTY1LDEzIEBAIHN0YXRpYyB2 b2lkDQo+ID4gPiBwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiAgCQkgKiBidXQgaXQgbWFrZXMgbW9yZSBzZW5zZSB3cml0 ZSB0byB0aGUgY3VycmVudCBhY3RpdmUNCj4gPiA+ICAJCSAqIHBpcGUuDQo+ID4gPiAgCQkgKi8N Cj4gPiA+IC0JCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBDVVJTVVJGTElWRShkZXZfcHJpdi0N Cj4gPiA+ID5wc3IucGlwZSksIDApOw0KPiA+ID4gKwkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYs IENVUlNVUkZMSVZFKGludGVsX2RwLQ0KPiA+ID4gPnBzci5waXBlKSwgMCk7DQo+ID4gPiAgCWVs c2UNCj4gPiA+ICAJCS8qDQo+ID4gPiAgCQkgKiBBIHdyaXRlIHRvIENVUlNVUkZMSVZFIGRvIG5v dCBjYXVzZSBIVyB0cmFja2luZyB0bw0KPiA+ID4gZXhpdCBQU1INCj4gPiA+ICAJCSAqIG9uIG9s ZGVyIGdlbnMgc28gZG9pbmcgdGhlIG1hbnVhbCBleGl0IGluc3RlYWQuDQo+ID4gPiAgCQkgKi8N Cj4gPiA+IC0JCWludGVsX3Bzcl9leGl0KGRldl9wcml2KTsNCj4gPiA+ICsJCWludGVsX3Bzcl9l eGl0KGludGVsX2RwKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIHZvaWQgaW50ZWxfcHNyMl9w cm9ncmFtX3BsYW5lX3NlbF9mZXRjaChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLA0KPiA+ID4g QEAgLTEyMTUsMTEgKzEyMTEsMTEgQEAgdm9pZA0KPiA+ID4gaW50ZWxfcHNyMl9wcm9ncmFtX3Bs YW5lX3NlbF9mZXRjaChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLA0KPiA+ID4gIAlpbnRlbF9k ZV93cml0ZV9mdyhkZXZfcHJpdiwgUExBTkVfU0VMX0ZFVENIX1NJWkUocGlwZSwgcGxhbmUtDQo+ ID4gPiA+aWQpLCB2YWwpOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtdm9pZCBpbnRlbF9wc3Iy X3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoY29uc3Qgc3RydWN0DQo+ID4gPiBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQ0KPiA+ID4gK3ZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5z X21hbl90cmtfY3RsKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gKmludGVsX2RwLA0KPiA+ID4gKwkJ CQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiA+ID4gKmNydGNfc3RhdGUpDQo+ ID4gPiAgew0KPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsNCj4gPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+ID4gPiAtCXN0cnVjdCBpOTE1 X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ID4gKwlzdHJ1Y3QgaW50 ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsNCj4gPiA+DQo+ID4gPiAgCWlmICghSEFTX1BT UjJfU0VMX0ZFVENIKGRldl9wcml2KSB8fA0KPiA+ID4gIAkgICAgIWNydGNfc3RhdGUtPmVuYWJs ZV9wc3IyX3NlbF9mZXRjaCkNCj4gPiA+IEBAIC0xMzM2LDEzICsxMzMyLDEzIEBAIHZvaWQgaW50 ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHANCj4gPiA+ICppbnRlbF9kcCwNCj4gPiA+ICAJ CSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQ0KPiA+ ID4gIHsNCj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9f aTkxNShpbnRlbF9kcCk7DQo+ID4gPiAtCXN0cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2 LT5wc3I7DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOw0K PiA+ID4gIAlib29sIGVuYWJsZSwgcHNyMl9lbmFibGU7DQo+ID4gPg0KPiA+ID4gLQlpZiAoIUNB Tl9QU1IoZGV2X3ByaXYpIHx8IFJFQURfT05DRShwc3ItPmRwKSAhPSBpbnRlbF9kcCkNCj4gPiA+ ICsJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkNCj4gPiA+ICAJCXJldHVybjsNCj4gPiA+DQo+ID4g PiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gPiArCW11dGV4X2xvY2so JmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPg0KPiA+ID4gIAllbmFibGUgPSBjcnRjX3N0YXRl LT5oYXNfcHNyOw0KPiA+ID4gIAlwc3IyX2VuYWJsZSA9IGNydGNfc3RhdGUtPmhhc19wc3IyOw0K PiA+ID4gQEAgLTEzNTAsMTUgKzEzNDYsMTUgQEAgdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVj dCBpbnRlbF9kcA0KPiA+ID4gKmludGVsX2RwLA0KPiA+ID4gIAlpZiAoZW5hYmxlID09IHBzci0+ ZW5hYmxlZCAmJiBwc3IyX2VuYWJsZSA9PSBwc3ItPnBzcjJfZW5hYmxlZCkNCj4gPiA+IHsNCj4g PiA+ICAJCS8qIEZvcmNlIGEgUFNSIGV4aXQgd2hlbiBlbmFibGluZyBDUkMgdG8gYXZvaWQgQ1JD DQo+ID4gPiB0aW1lb3V0cyAqLw0KPiA+ID4gIAkJaWYgKGNydGNfc3RhdGUtPmNyY19lbmFibGVk ICYmIHBzci0+ZW5hYmxlZCkNCj4gPiA+IC0JCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChk ZXZfcHJpdik7DQo+ID4gPiArCQkJcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoaW50ZWxfZHAp Ow0KPiA+ID4gIAkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYgcHNyLT5lbmFi bGVkKSB7DQo+ID4gPiAgCQkJLyoNCj4gPiA+ICAJCQkgKiBBY3RpdmF0ZSBQU1IgYWdhaW4gYWZ0 ZXIgYSBmb3JjZSBleGl0IHdoZW4NCj4gPiA+IGVuYWJsaW5nDQo+ID4gPiAgCQkJICogQ1JDIGlu IG9sZGVyIGdlbnMNCj4gPiA+ICAJCQkgKi8NCj4gPiA+IC0JCQlpZiAoIWRldl9wcml2LT5wc3Iu YWN0aXZlICYmDQo+ID4gPiAtCQkJICAgICFkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJf Yml0cykNCj4gPiA+IC0JCQkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPnBzci53b3JrKTsNCj4g PiA+ICsJCQlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYmDQo+ID4gPiArCQkJICAgICFpbnRl bF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cykNCj4gPiA+ICsJCQkJc2NoZWR1bGVfd29y aygmaW50ZWxfZHAtPnBzci53b3JrKTsNCj4gPiA+ICAJCX0NCj4gPiA+DQo+ID4gPiAgCQlnb3Rv IHVubG9jazsNCj4gPiA+IEBAIC0xMzY4LDM0ICsxMzY0LDIzIEBAIHZvaWQgaW50ZWxfcHNyX3Vw ZGF0ZShzdHJ1Y3QgaW50ZWxfZHANCj4gPiA+ICppbnRlbF9kcCwNCj4gPiA+ICAJCWludGVsX3Bz cl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7DQo+ID4gPg0KPiA+ID4gIAlpZiAoZW5hYmxlKQ0K PiA+ID4gLQkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUsDQo+ ID4gPiBjb25uX3N0YXRlKTsNCj4gPiA+ICsJCWludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGludGVs X2RwLCBjcnRjX3N0YXRlLA0KPiA+ID4gY29ubl9zdGF0ZSk7DQo+ID4gPg0KPiA+ID4gIHVubG9j azoNCj4gPiA+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ID4gKwlt dXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ ICAvKioNCj4gPiA+IC0gKiBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZSAtIHdhaXQgZm9yIFBTUjEg dG8gaWRsZQ0KPiA+ID4gLSAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3IENSVEMgc3RhdGUNCj4gPiA+ ICsgKiBwc3Jfd2FpdF9mb3JfaWRsZSAtIHdhaXQgZm9yIFBTUjEgdG8gaWRsZQ0KPiA+ID4gKyAq IEBpbnRlbF9kcDogSW50ZWwgRFANCj4gPiA+ICAgKiBAb3V0X3ZhbHVlOiBQU1Igc3RhdHVzIGlu IGNhc2Ugb2YgZmFpbHVyZQ0KPiA+ID4gICAqDQo+ID4gPiAtICogVGhpcyBmdW5jdGlvbiBpcyBl eHBlY3RlZCB0byBiZSBjYWxsZWQgZnJvbSBwaXBlX3VwZGF0ZV9zdGFydCgpDQo+ID4gPiB3aGVy ZSBpdCBpcw0KPiA+ID4gLSAqIG5vdCBleHBlY3RlZCB0byByYWNlIHdpdGggUFNSIGVuYWJsZSBv ciBkaXNhYmxlLg0KPiA+ID4gLSAqDQo+ID4gPiAgICogUmV0dXJuczogMCBvbiBzdWNjZXNzIG9y IC1FVElNRU9VVCBpZiBQU1Igc3RhdHVzIGRvZXMgbm90IGlkbGUuDQo+ID4gPiArICoNCj4gPiA+ ICAgKi8NCj4gPiA+IC1pbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUNCj4gPiA+ICpuZXdfY3J0Y19zdGF0ZSwNCj4gPiA+IC0JCQkgICAgdTMy ICpvdXRfdmFsdWUpDQo+ID4gPiArc3RhdGljIGludCBwc3Jfd2FpdF9mb3JfaWRsZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCB1MzINCj4gPiA+ICpvdXRfdmFsdWUpDQo+ID4gPiAgew0KPiA+ ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGNfc3Rh dGUtDQo+ID4gPiA+dWFwaS5jcnRjKTsNCj4gPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+ID4gPiAtDQo+ID4gPiAtCWlm ICghZGV2X3ByaXYtPnBzci5lbmFibGVkIHx8ICFuZXdfY3J0Y19zdGF0ZS0+aGFzX3BzcikNCj4g PiA+IC0JCXJldHVybiAwOw0KPiA+ID4gLQ0KPiA+ID4gLQkvKiBGSVhNRTogVXBkYXRlIHRoaXMg Zm9yIFBTUjIgaWYgd2UgbmVlZCB0byB3YWl0IGZvciBpZGxlICovDQo+ID4gPiAtCWlmIChSRUFE X09OQ0UoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpKQ0KPiA+ID4gLQkJcmV0dXJuIDA7DQo+ ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50 ZWxfZHApOw0KPiA+ID4NCj4gPiA+ICAJLyoNCj4gPiA+ICAJICogRnJvbSBic3BlYzogUGFuZWwg U2VsZiBSZWZyZXNoIChCRFcrKQ0KPiA+ID4gQEAgLTE0MDMsMzIgKzEzODgsNjQgQEAgaW50IGlu dGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdA0KPiA+ID4gaW50ZWxfY3J0Y19zdGF0 ZSAqbmV3X2NydGNfc3RhdGUsDQo+ID4gPiAgCSAqIGV4aXQgdHJhaW5pbmcgdGltZSArIDEuNSBt cyBvZiBhdXggY2hhbm5lbCBoYW5kc2hha2UuIDUwIG1zDQo+ID4gPiBpcw0KPiA+ID4gIAkgKiBk ZWZlbnNpdmUgZW5vdWdoIHRvIGNvdmVyIGV2ZXJ5dGhpbmcuDQo+ID4gPiAgCSAqLw0KPiA+ID4g LQ0KPiA+ID4gIAlyZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVu Y29yZSwNCj4gPiA+IC0JCQkJCSBFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0NCj4gPiA+ID5wc3Iu dHJhbnNjb2RlciksDQo+ID4gPiArCQkJCQkgRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtDQo+ID4g PiA+cHNyLnRyYW5zY29kZXIpLA0KPiA+ID4gIAkJCQkJIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01B U0ssDQo+ID4gPiAgCQkJCQkgRURQX1BTUl9TVEFUVVNfU1RBVEVfSURMRSwgMiwNCj4gPiA+IDUw LA0KPiA+ID4gIAkJCQkJIG91dF92YWx1ZSk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC1zdGF0 aWMgYm9vbCBfX3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZQ0KPiA+ID4gKmRldl9wcml2KQ0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIGludGVsX3Bzcl93YWl0 X2Zvcl9pZGxlIC0gd2FpdCBmb3IgUFNSMSB0byBpZGxlDQo+ID4gPiArICogQG5ld19jcnRjX3N0 YXRlOiBuZXcgQ1JUQyBzdGF0ZQ0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhpcyBmdW5jdGlvbiBp cyBleHBlY3RlZCB0byBiZSBjYWxsZWQgZnJvbSBwaXBlX3VwZGF0ZV9zdGFydCgpDQo+ID4gPiB3 aGVyZSBpdCBpcw0KPiA+ID4gKyAqIG5vdCBleHBlY3RlZCB0byByYWNlIHdpdGggUFNSIGVuYWJs ZSBvciBkaXNhYmxlLg0KPiA+ID4gKyAqLw0KPiA+ID4gK3ZvaWQgaW50ZWxfcHNyX3dhaXRfZm9y X2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gPiA+ICpuZXdfY3J0Y19zdGF0 ZSkNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUobmV3X2NydGNfc3RhdGUtDQo+ID4gPiA+dWFwaS5jcnRjLT5kZXYpOw0KPiA+ID4g KwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsNCj4gPiA+ICsJdTMyIHBzcl9zdGF0dXM7 DQo+ID4gPiArDQo+ID4gPiArCWlmICghbmV3X2NydGNfc3RhdGUtPmhhc19wc3IpDQo+ID4gPiAr CQlyZXR1cm47DQo+ID4gPiArDQo+ID4gPiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ ZHJtLCBlbmNvZGVyKSB7DQo+ID4gPiArCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKGVuY29kZXIpOw0KPiA+ID4gKw0KPiA+ID4gKwkJaWYgKGVuY29kZXItPnR5 cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkNCj4gPiA+ICsJCQljb250aW51ZTsNCj4gPiA+ICsNCj4g PiA+ICsJCS8qIHdoZW4gdGhlIFBTUjEgaXMgZW5hYmxlZCAqLw0KPiA+ID4gKwkJaWYgKGludGVs X2RwLT5wc3IuZW5hYmxlZCAmJiAhaW50ZWxfZHAtDQo+ID4gPiA+cHNyLnBzcjJfZW5hYmxlZCkg ew0KPiA+ID4gKwkJCWlmIChwc3Jfd2FpdF9mb3JfaWRsZShpbnRlbF9kcCwgJnBzcl9zdGF0dXMp KQ0KPiA+ID4gKwkJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLA0KPiA+ID4gKwkJCQkJIlBTUiBp ZGxlIHRpbWVkIG91dCAweCV4LA0KPiA+ID4gYXRvbWljIHVwZGF0ZSBtYXkgZmFpbFxuIiwNCj4g PiA+ICsJCQkJCXBzcl9zdGF0dXMpOw0KPiA+ID4gKwkJfQ0KPiA+ID4gKwl9DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gPiAgew0KPiA+ID4gIAlpOTE1X3JlZ190IHJl ZzsNCj4gPiA+ICAJdTMyIG1hc2s7DQo+ID4gPiAgCWludCBlcnI7DQo+ID4gPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ID4N Cj4gPiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpDQo+ID4gPiArCWlmICghaW50ZWxf ZHAtPnBzci5lbmFibGVkKQ0KPiA+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ID4NCj4gPiA+IC0J aWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ID4gPiAtCQlyZWcgPSBFRFBfUFNS Ml9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsNCj4gPiA+ICsJaWYgKGludGVsX2Rw LT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ID4gPiArCQlyZWcgPSBFRFBfUFNSMl9TVEFUVVMoaW50 ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsNCj4gPiA+ICAJCW1hc2sgPSBFRFBfUFNSMl9TVEFUVVNf U1RBVEVfTUFTSzsNCj4gPiA+ICAJfSBlbHNlIHsNCj4gPiA+IC0JCXJlZyA9IEVEUF9QU1JfU1RB VFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gPiArCQlyZWcgPSBFRFBfUFNSX1NU QVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOw0KPiA+ID4gIAkJbWFzayA9IEVEUF9QU1Jf U1RBVFVTX1NUQVRFX01BU0s7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAtCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+ cHNyLmxvY2spOw0KPiA+ID4NCj4gPiA+ICAJZXJyID0gaW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIo ZGV2X3ByaXYsIHJlZywgbWFzaywgNTApOw0KPiA+ID4gIAlpZiAoZXJyKQ0KPiA+ID4gQEAgLTE0 MzYsOCArMTQ1Myw4IEBAIHN0YXRpYyBib29sDQo+IF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2Vk KHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiAgCQkJIlRp bWVkIG91dCB3YWl0aW5nIGZvciBQU1IgSWRsZSBmb3IgcmUtDQo+ID4gPiBlbmFibGVcbiIpOw0K PiA+ID4NCj4gPiA+ICAJLyogQWZ0ZXIgdGhlIHVubG9ja2VkIHdhaXQsIHZlcmlmeSB0aGF0IFBT UiBpcyBzdGlsbCB3YW50ZWQhICovDQo+ID4gPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7DQo+ID4gPiAtCXJldHVybiBlcnIgPT0gMCAmJiBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7 DQo+ID4gPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPiArCXJldHVy biBlcnIgPT0gMCAmJiBpbnRlbF9kcC0+cHNyLmVuYWJsZWQ7DQo+ID4gPiAgfQ0KPiA+ID4NCj4g PiA+ICBzdGF0aWMgaW50IGludGVsX3Bzcl9mYXN0c2V0X2ZvcmNlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlDQo+ID4gPiAqZGV2X3ByaXYpDQo+ID4gPiBAQCAtMTUwMywxMSArMTUyMCwxMiBAQCBz dGF0aWMgaW50IGludGVsX3Bzcl9mYXN0c2V0X2ZvcmNlKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiAgCXJldHVybiBlcnI7DQo+ID4gPiAgfQ0KPiA+ID4N Cj4gPiA+IC1pbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHU2NA0KPiA+ID4gdmFsKQ0KPiA+ID4gK2ludCBpbnRlbF9wc3JfZGVidWdfc2V0 KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU2NCB2YWwpDQo+ID4gPiAgew0KPiA+ID4gIAlj b25zdCB1MzIgbW9kZSA9IHZhbCAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsNCj4gPiA+ICAJ dTMyIG9sZF9tb2RlOw0KPiA+ID4gIAlpbnQgcmV0Ow0KPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiA+DQo+ID4gPiAg CWlmICh2YWwgJiB+KEk5MTVfUFNSX0RFQlVHX0lSUSB8DQo+IEk5MTVfUFNSX0RFQlVHX01PREVf TUFTSykgfHwNCj4gPiA+ICAJICAgIG1vZGUgPiBJOTE1X1BTUl9ERUJVR19GT1JDRV9QU1IxKSB7 DQo+ID4gPiBAQCAtMTUxNSwyMSArMTUzMywyMSBAQCBpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChz dHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgdmFsKQ0KPiA+ID4g IAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAtCXJldCA9IG11dGV4 X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICsJcmV0ID0g bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gIAlp ZiAocmV0KQ0KPiA+ID4gIAkJcmV0dXJuIHJldDsNCj4gPiA+DQo+ID4gPiAtCW9sZF9tb2RlID0g ZGV2X3ByaXYtPnBzci5kZWJ1ZyAmDQo+IEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsNCj4gPiA+ IC0JZGV2X3ByaXYtPnBzci5kZWJ1ZyA9IHZhbDsNCj4gPiA+ICsJb2xkX21vZGUgPSBpbnRlbF9k cC0+cHNyLmRlYnVnICYNCj4gSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOw0KPiA+ID4gKwlpbnRl bF9kcC0+cHNyLmRlYnVnID0gdmFsOw0KPiA+ID4NCj4gPiA+ICAJLyoNCj4gPiA+ICAJICogRG8g aXQgcmlnaHQgYXdheSBpZiBpdCdzIGFscmVhZHkgZW5hYmxlZCwgb3RoZXJ3aXNlIGl0IHdpbGwN Cj4gPiA+IGJlIGRvbmUNCj4gPiA+ICAJICogd2hlbiBlbmFibGluZyB0aGUgc291cmNlLg0KPiA+ ID4gIAkgKi8NCj4gPiA+IC0JaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCkNCj4gPiA+IC0JCXBz cl9pcnFfY29udHJvbChkZXZfcHJpdik7DQo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLmVuYWJs ZWQpDQo+ID4gPiArCQlwc3JfaXJxX2NvbnRyb2woaW50ZWxfZHApOw0KPiA+ID4NCj4gPiA+IC0J bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ID4gKwltdXRleF91bmxvY2so JmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPg0KPiA+ID4gIAlpZiAob2xkX21vZGUgIT0gbW9k ZSkNCj4gPiA+ICAJCXJldCA9IGludGVsX3Bzcl9mYXN0c2V0X2ZvcmNlKGRldl9wcml2KTsNCj4g PiA+IEBAIC0xNTM3LDI4ICsxNTU1LDI4IEBAIGludCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVj dA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpDQo+ID4gPiAgCXJl dHVybiByZXQ7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9wc3Jf aGFuZGxlX2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gKmRldl9wcml2KQ0KPiA+ ID4gK3N0YXRpYyB2b2lkIGludGVsX3Bzcl9oYW5kbGVfaXJxKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApDQo+ID4gPiAgew0KPiA+ID4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJp di0+cHNyOw0KPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsN Cj4gPiA+DQo+ID4gPiAtCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChwc3ItPmRwKTsNCj4gPiA+ ICsJaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGludGVsX2RwKTsNCj4gPiA+ICAJcHNyLT5zaW5r X25vdF9yZWxpYWJsZSA9IHRydWU7DQo+ID4gPiAgCS8qIGxldCdzIG1ha2Ugc3VyZSB0aGF0IHNp bmsgaXMgYXdha2VuICovDQo+ID4gPiAtCWRybV9kcF9kcGNkX3dyaXRlYigmcHNyLT5kcC0+YXV4 LCBEUF9TRVRfUE9XRVIsDQo+ID4gPiBEUF9TRVRfUE9XRVJfRDApOw0KPiA+ID4gKwlkcm1fZHBf ZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1NFVF9QT1dFUiwNCj4gPiA+IERQX1NFVF9Q T1dFUl9EMCk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gPiAgew0KPiA+ID4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiA+ID4gLQkJY29udGFpbmVyX29mKHdvcmss IHR5cGVvZigqZGV2X3ByaXYpLCBwc3Iud29yayk7DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPQ0KPiA+ID4gKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxfZHAp LCBwc3Iud29yayk7DQo+ID4gPg0KPiA+ID4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOw0KPiA+ID4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ID4NCj4g PiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpDQo+ID4gPiArCWlmICghaW50ZWxfZHAt PnBzci5lbmFibGVkKQ0KPiA+ID4gIAkJZ290byB1bmxvY2s7DQo+ID4gPg0KPiA+ID4gLQlpZiAo UkVBRF9PTkNFKGRldl9wcml2LT5wc3IuaXJxX2F1eF9lcnJvcikpDQo+ID4gPiAtCQlpbnRlbF9w c3JfaGFuZGxlX2lycShkZXZfcHJpdik7DQo+ID4gPiArCWlmIChSRUFEX09OQ0UoaW50ZWxfZHAt PnBzci5pcnFfYXV4X2Vycm9yKSkNCj4gPiA+ICsJCWludGVsX3Bzcl9oYW5kbGVfaXJxKGludGVs X2RwKTsNCj4gPiA+DQo+ID4gPiAgCS8qDQo+ID4gPiAgCSAqIFdlIGhhdmUgdG8gbWFrZSBzdXJl IFBTUiBpcyByZWFkeSBmb3IgcmUtZW5hYmxlDQo+ID4gPiBAQCAtMTU2Niw3ICsxNTg0LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0DQo+IHdvcmtfc3RydWN0DQo+ID4gPiAq d29yaykNCj4gPiA+ICAJICogUFNSIG1pZ2h0IHRha2Ugc29tZSB0aW1lIHRvIGdldCBmdWxseSBk aXNhYmxlZA0KPiA+ID4gIAkgKiBhbmQgYmUgcmVhZHkgZm9yIHJlLWVuYWJsZS4NCj4gPiA+ICAJ ICovDQo+ID4gPiAtCWlmICghX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoZGV2X3ByaXYpKQ0K PiA+ID4gKwlpZiAoIV9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKGludGVsX2RwKSkNCj4gPiA+ ICAJCWdvdG8gdW5sb2NrOw0KPiA+ID4NCj4gPiA+ICAJLyoNCj4gPiA+IEBAIC0xNTc0LDEyICsx NTkyLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdA0KPiA+ID4gd29ya19z dHJ1Y3QgKndvcmspDQo+ID4gPiAgCSAqIHJlY2hlY2suIFNpbmNlIHBzcl9mbHVzaCBmaXJzdCBj bGVhcnMgdGhpcyBhbmQgdGhlbg0KPiA+ID4gcmVzY2hlZHVsZXMgd2UNCj4gPiA+ICAJICogd29u J3QgZXZlciBtaXNzIGEgZmx1c2ggd2hlbiBiYWlsaW5nIG91dCBoZXJlLg0KPiA+ID4gIAkgKi8N Cj4gPiA+IC0JaWYgKGRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGRldl9w cml2LQ0KPiA+ID4gPnBzci5hY3RpdmUpDQo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLmJ1c3lf ZnJvbnRidWZmZXJfYml0cyB8fCBpbnRlbF9kcC0NCj4gPiA+ID5wc3IuYWN0aXZlKQ0KPiA+ID4g IAkJZ290byB1bmxvY2s7DQo+ID4gPg0KPiA+ID4gLQlpbnRlbF9wc3JfYWN0aXZhdGUoZGV2X3By aXYtPnBzci5kcCk7DQo+ID4gPiArCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7DQo+ID4g PiAgdW5sb2NrOg0KPiA+ID4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ ID4gPiArCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiA+ICB9DQo+ID4g Pg0KPiA+ID4gIC8qKg0KPiA+ID4gQEAgLTE1OTgsMjcgKzE2MTYsMzUgQEAgc3RhdGljIHZvaWQg aW50ZWxfcHNyX3dvcmsoc3RydWN0DQo+ID4gPiB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiA+ICB2 b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwNCj4gPiA+ICAJCQkgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3Jp Z2luDQo+ID4gPiBvcmlnaW4pDQo+ID4gPiAgew0KPiA+ID4gLQlpZiAoIUNBTl9QU1IoZGV2X3By aXYpKQ0KPiA+ID4gLQkJcmV0dXJuOw0KPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcjsNCj4gPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsNCj4gPiA+DQo+ID4gPiAt CWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVApDQo+ID4gPiAtCQlyZXR1cm47DQo+ID4gPiArCWZv cl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7DQo+ID4gPg0KPiA+ID4g LQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ID4gLQlpZiAoIWRldl9wcml2 LT5wc3IuZW5hYmxlZCkgew0KPiA+ID4gLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOw0KPiA+ID4gLQkJcmV0dXJuOw0KPiA+ID4gLQl9DQo+ID4gPiArCQlpbnRlbF9kcCA9IGVu Y190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gPiA+ICsJCWlmIChlbmNvZGVyLT50eXBlICE9IElO VEVMX09VVFBVVF9FRFApDQo+ID4gPiArCQkJY29udGludWU7DQo+ID4gPiArCQlpZiAoIUNBTl9Q U1IoaW50ZWxfZHApKQ0KPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4NCj4gPiA+IC0JZnJvbnRi dWZmZXJfYml0cyAmPSBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0NCj4gPiA+ ID5wc3IucGlwZSk7DQo+ID4gPiAtCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRz IHw9IGZyb250YnVmZmVyX2JpdHM7DQo+ID4gPiArCQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQ KQ0KPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4gKw0KPiA+ID4gKwkJbXV0ZXhfbG9jaygmaW50 ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiA+ICsJCWlmICghaW50ZWxfZHAtPnBzci5lbmFibGVkKSB7 DQo+ID4gPiArCQkJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gKwkJ CWNvbnRpbnVlOw0KPiA+ID4gKwkJfQ0KPiA+ID4NCj4gPiA+IC0JaWYgKGZyb250YnVmZmVyX2Jp dHMpDQo+ID4gPiAtCQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7DQo+ID4gPiArCQlmcm9udGJ1 ZmZlcl9iaXRzICY9DQo+ID4gPiBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhpbnRlbF9kcC0+ cHNyLnBpcGUpOw0KPiA+ID4gKwkJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMg fD0NCj4gPiA+IGZyb250YnVmZmVyX2JpdHM7DQo+ID4gPg0KPiA+ID4gLQltdXRleF91bmxvY2so JmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gPiAtfQ0KPiA+ID4gKwkJaWYgKGZyb250YnVmZmVy X2JpdHMpDQo+ID4gPiArCQkJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOw0KPiA+ID4NCj4gPiA+ ICsJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiA+ICsJfQ0KPiA+ID4g K30NCj4gPiA+ICAvKg0KPiA+ID4gICAqIFdoZW4gd2Ugd2lsbCBiZSBjb21wbGV0ZWx5IHJlbHkg b24gUFNSMiBTL1cgdHJhY2tpbmcgaW4gZnV0dXJlLA0KPiA+ID4gICAqIGludGVsX3Bzcl9mbHVz aCgpIHdpbGwgaW52YWxpZGF0ZSBhbmQgZmx1c2ggdGhlIFBTUiBmb3INCj4gPiA+IE9SSUdJTl9G TElQDQo+ID4gPiBAQCAtMTYyNiwxNSArMTY1MiwxNSBAQCB2b2lkIGludGVsX3Bzcl9pbnZhbGlk YXRlKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ID4gPiAgICog YWNjb3JkaW5nbHkgaW4gZnV0dXJlLg0KPiA+ID4gICAqLw0KPiA+ID4gIHN0YXRpYyB2b2lkDQo+ ID4gPiAtdGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwN Cj4gPiA+IC0JCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRzLCBlbnVtIGZiX29wX29yaWdp bg0KPiA+ID4gb3JpZ2luKQ0KPiA+ID4gK3RnbF9kYzNjb19mbHVzaChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCB1bnNpZ25lZCBpbnQNCj4gPiA+IGZyb250YnVmZmVyX2JpdHMsDQo+ID4gPiAr CQllbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pDQo+ID4gPiAgew0KPiA+ID4gLQltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ID4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNy LmxvY2spOw0KPiA+ID4NCj4gPiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmRjM2NvX2VuYWJsZWQp DQo+ID4gPiArCWlmICghaW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkKQ0KPiA+ID4gIAkJZ290 byB1bmxvY2s7DQo+ID4gPg0KPiA+ID4gLQlpZiAoIWRldl9wcml2LT5wc3IucHNyMl9lbmFibGVk IHx8ICFkZXZfcHJpdi0+cHNyLmFjdGl2ZSkNCj4gPiA+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLnBz cjJfZW5hYmxlZCB8fCAhaW50ZWxfZHAtPnBzci5hY3RpdmUpDQo+ID4gPiAgCQlnb3RvIHVubG9j azsNCj4gPiA+DQo+ID4gPiAgCS8qDQo+ID4gPiBAQCAtMTY0MiwxNSArMTY2OCwxNSBAQCB0Z2xf ZGMzY29fZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ICpkZXZfcHJpdiwNCj4g PiA+ICAJICogd2hlbiBkZWxheWVkIHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVhbnMgZGlzcGxheSBo YXMgYmVlbg0KPiA+ID4gaWRsZS4NCj4gPiA+ICAJICovDQo+ID4gPiAgCWlmICghKGZyb250YnVm ZmVyX2JpdHMgJg0KPiA+ID4gLQkgICAgSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0soZGV2X3By aXYtPnBzci5waXBlKSkpDQo+ID4gPiArCSAgICBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhp bnRlbF9kcC0+cHNyLnBpcGUpKSkNCj4gPiA+ICAJCWdvdG8gdW5sb2NrOw0KPiA+ID4NCj4gPiA+ IC0JdGdsX3BzcjJfZW5hYmxlX2RjM2NvKGRldl9wcml2KTsNCj4gPiA+IC0JbW9kX2RlbGF5ZWRf d29yayhzeXN0ZW1fd3EsICZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmssDQo+ID4gPiAtCQkJIGRl dl9wcml2LT5wc3IuZGMzY29fZXhpdF9kZWxheSk7DQo+ID4gPiArCXRnbF9wc3IyX2VuYWJsZV9k YzNjbyhpbnRlbF9kcCk7DQo+ID4gPiArCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmaW50 ZWxfZHAtPnBzci5kYzNjb193b3JrLA0KPiA+ID4gKwkJCSBpbnRlbF9kcC0+cHNyLmRjM2NvX2V4 aXRfZGVsYXkpOw0KPiA+ID4NCj4gPiA+ICB1bmxvY2s6DQo+ID4gPiAtCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNy LmxvY2spOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAgLyoqDQo+ID4gPiBAQCAtMTY2OSw0NSAr MTY5NSw1NCBAQCB0Z2xfZGMzY29fZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ ICpkZXZfcHJpdiwNCj4gPiA+ICB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsDQo+ID4gPiAgCQkgICAgIHVuc2lnbmVkIGZyb250YnVmZmVyX2Jp dHMsIGVudW0gZmJfb3Bfb3JpZ2luDQo+ID4gPiBvcmlnaW4pDQo+ID4gPiAgew0KPiA+ID4gLQlp ZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiA+ID4gLQkJcmV0dXJuOw0KPiA+ID4gLQ0KPiA+ID4g LQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKSB7DQo+ID4gPiAtCQl0Z2xfZGMzY29fZmx1c2go ZGV2X3ByaXYsIGZyb250YnVmZmVyX2JpdHMsIG9yaWdpbik7DQo+ID4gPiAtCQlyZXR1cm47DQo+ ID4gPiAtCX0NCj4gPiA+IC0NCj4gPiA+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2Nr KTsNCj4gPiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsNCj4gPiA+IC0JCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+IC0JCXJldHVybjsNCj4gPiA+ICsJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHA7DQo+ID4gPiArDQo+ID4gPiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ ZHJtLCBlbmNvZGVyKSB7DQo+ID4gPiArCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNv ZGVyKTsNCj4gPiA+ICsNCj4gPiA+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9FRFAgJiYNCj4gPiA+IENBTl9QU1IoaW50ZWxfZHApKSB7DQo+ID4gPiArCQkJaWYgKG9yaWdp biA9PSBPUklHSU5fRkxJUCkgew0KPiA+ID4gKwkJCQl0Z2xfZGMzY29fZmx1c2goaW50ZWxfZHAs DQo+ID4gPiBmcm9udGJ1ZmZlcl9iaXRzLCBvcmlnaW4pOw0KPiA+ID4gKwkJCQljb250aW51ZTsN Cj4gPiA+ICsJCQl9DQo+ID4gPiArDQo+ID4gPiArCQkJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBz ci5sb2NrKTsNCj4gPiA+ICsJCQlpZiAoIWludGVsX2RwLT5wc3IuZW5hYmxlZCkgew0KPiA+ID4g KwkJCQltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPiArCQkJCWNvbnRp bnVlOw0KPiA+ID4gKwkJCX0NCj4gPiA+ICsNCj4gPiA+ICsJCQlmcm9udGJ1ZmZlcl9iaXRzICY9 DQo+ID4gPiBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhpbnRlbF9kcC0+cHNyLnBpcGUpOw0K PiA+ID4gKwkJCWludGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzICY9DQo+ID4gPiB+ ZnJvbnRidWZmZXJfYml0czsNCj4gPiA+ICsNCj4gPiA+ICsJCQkvKiBCeSBkZWZpbml0aW9uIGZs dXNoID0gaW52YWxpZGF0ZSArIGZsdXNoICovDQo+ID4gPiArCQkJaWYgKGZyb250YnVmZmVyX2Jp dHMpDQo+ID4gPiArCQkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0KGludGVsX2RwKTsNCj4g PiA+ICsNCj4gPiA+ICsJCQlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYmICFpbnRlbF9kcC0N Cj4gPiA+ID5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiA+ID4gKwkJCQlzY2hlZHVsZV93 b3JrKCZpbnRlbF9kcC0+cHNyLndvcmspOw0KPiA+ID4gKwkJCW11dGV4X3VubG9jaygmaW50ZWxf ZHAtPnBzci5sb2NrKTsNCj4gPiA+ICsJCX0NCj4gPiA+ICAJfQ0KPiA+ID4gLQ0KPiA+ID4gLQlm cm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGRldl9wcml2LQ0K PiA+ID4gPnBzci5waXBlKTsNCj4gPiA+IC0JZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVy X2JpdHMgJj0gfmZyb250YnVmZmVyX2JpdHM7DQo+ID4gPiAtDQo+ID4gPiAtCS8qIEJ5IGRlZmlu aXRpb24gZmx1c2ggPSBpbnZhbGlkYXRlICsgZmx1c2ggKi8NCj4gPiA+IC0JaWYgKGZyb250YnVm ZmVyX2JpdHMpDQo+ID4gPiAtCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChkZXZfcHJpdik7 DQo+ID4gPiAtDQo+ID4gPiAtCWlmICghZGV2X3ByaXYtPnBzci5hY3RpdmUgJiYgIWRldl9wcml2 LQ0KPiA+ID4gPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMpDQo+ID4gPiAtCQlzY2hlZHVsZV93 b3JrKCZkZXZfcHJpdi0+cHNyLndvcmspOw0KPiA+ID4gLQltdXRleF91bmxvY2soJmRldl9wcml2 LT5wc3IubG9jayk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+ICAgKiBpbnRl bF9wc3JfaW5pdCAtIEluaXQgYmFzaWMgUFNSIHdvcmsgYW5kIG11dGV4Lg0KPiA+ID4gLSAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0ZQ0KPiA+ID4gKyAqIEBpbnRlbF9kcDogSW50ZWwg RFANCj4gPiA+ICAgKg0KPiA+ID4gLSAqIFRoaXMgZnVuY3Rpb24gaXMgIGNhbGxlZCBvbmx5IG9u Y2UgYXQgZHJpdmVyIGxvYWQgdG8gaW5pdGlhbGl6ZQ0KPiA+ID4gYmFzaWMNCj4gPiA+IC0gKiBQ U1Igc3R1ZmYuDQo+ID4gPiArICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGlu aXRpYWxpemluZyBjb25uZWN0b3IuDQo+ID4gPiArICogKHRoZSBpbml0aWFsaXppbmcgb2YgY29u bmVjdG9yIHRyZWF0cyB0aGUgaGFuZGxpbmcgb2YgY29ubmVjdG9yDQo+ID4gPiBjYXBhYmlsaXRp ZXMpDQo+ID4gPiArICogQW5kIGl0IGluaXRpYWxpemVzIGJhc2ljIFBTUiBzdHVmZiBmb3IgZWFj aCBEUCBFbmNvZGVyLg0KPiA+ID4gICAqLw0KPiA+ID4gLXZvaWQgaW50ZWxfcHNyX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ID4gK3ZvaWQgaW50ZWxfcHNyX2lu aXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+ICB7DQo+ID4gPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ID4g Kw0KPiA+ID4gIAlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQ0KPiA+ID4gIAkJcmV0dXJuOw0KPiA+ ID4NCj4gPiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkNCj4gPiA+ICsJaWYg KCFpbnRlbF9kcC0+cHNyLnNpbmtfc3VwcG9ydCkNCj4gPiA+ICAJCXJldHVybjsNCj4gPiA+DQo+ ID4gPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkNCj4gPiA+IEBAIC0xNzI1LDE0ICsxNzYw LDE0IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUNCj4g PiA+ICpkZXZfcHJpdikNCj4gPiA+ICAJLyogU2V0IGxpbmtfc3RhbmRieSB4IGxpbmtfb2ZmIGRl ZmF1bHRzICovDQo+ID4gPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKQ0KPiA+ID4gIAkJLyogSFNXIGFuZCBCRFcgcmVxdWlyZSB3b3JrYXJvdW5k cyB0aGF0IHdlIGRvbid0DQo+ID4gPiBpbXBsZW1lbnQuICovDQo+ID4gPiAtCQlkZXZfcHJpdi0+ cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOw0KPiA+ID4gKwkJaW50ZWxfZHAtPnBzci5saW5rX3N0 YW5kYnkgPSBmYWxzZTsNCj4gPiA+ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDEy KQ0KPiA+ID4gIAkJLyogRm9yIG5ldyBwbGF0Zm9ybXMgdXAgdG8gVEdMIGxldCdzIHJlc3BlY3Qg VkJUIGJhY2sNCj4gPiA+IGFnYWluICovDQo+ID4gPiAtCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3Rh bmRieSA9IGRldl9wcml2LQ0KPiA+ID4gPnZidC5wc3IuZnVsbF9saW5rOw0KPiA+ID4gKwkJaW50 ZWxfZHAtPnBzci5saW5rX3N0YW5kYnkgPSBkZXZfcHJpdi0NCj4gPiA+ID52YnQucHNyLmZ1bGxf bGluazsNCj4gPiA+DQo+ID4gPiAtCUlOSVRfV09SSygmZGV2X3ByaXYtPnBzci53b3JrLCBpbnRl bF9wc3Jfd29yayk7DQo+ID4gPiAtCUlOSVRfREVMQVlFRF9XT1JLKCZkZXZfcHJpdi0+cHNyLmRj M2NvX3dvcmssDQo+ID4gPiB0Z2xfZGMzY29fZGlzYWJsZV93b3JrKTsNCj4gPiA+IC0JbXV0ZXhf aW5pdCgmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+ICsJSU5JVF9XT1JLKCZpbnRlbF9kcC0+ cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsNCj4gPiA+ICsJSU5JVF9ERUxBWUVEX1dPUksoJmlu dGVsX2RwLT5wc3IuZGMzY29fd29yaywNCj4gPiA+IHRnbF9kYzNjb19kaXNhYmxlX3dvcmspOw0K PiA+ID4gKwltdXRleF9pbml0KCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gIH0NCj4gPiA+ DQo+ID4gPiAgc3RhdGljIGludCBwc3JfZ2V0X3N0YXR1c19hbmRfZXJyb3Jfc3RhdHVzKHN0cnVj dCBpbnRlbF9kcA0KPiA+ID4gKmludGVsX2RwLA0KPiA+ID4gQEAgLTE3NTgsNyArMTc5Myw3IEBA IHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gKmludGVs X2RwKQ0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gPiAgCXN0cnVjdCBkcm1fZHBfYXV4ICphdXgg PSAmaW50ZWxfZHAtPmF1eDsNCj4gPiA+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3By aXYtPnBzcjsNCj4gPiA+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7 DQo+ID4gPiAgCXU4IHZhbDsNCj4gPiA+ICAJaW50IHI7DQo+ID4gPg0KPiA+ID4gQEAgLTE3ODUs NyArMTgyMCw3IEBAIHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcA0K PiA+ID4gKmludGVsX2RwKQ0KPiA+ID4gIHN0YXRpYyB2b2lkIHBzcl9jYXBhYmlsaXR5X2NoYW5n ZWRfY2hlY2soc3RydWN0IGludGVsX2RwDQo+ID4gPiAqaW50ZWxfZHApDQo+ID4gPiAgew0KPiA+ ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVs X2RwKTsNCj4gPiA+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsNCj4g PiA+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7DQo+ID4gPiAgCXU4 IHZhbDsNCj4gPiA+ICAJaW50IHI7DQo+ID4gPg0KPiA+ID4gQEAgLTE4MDksMTggKzE4NDQsMTgg QEAgc3RhdGljIHZvaWQNCj4gPiA+IHBzcl9jYXBhYmlsaXR5X2NoYW5nZWRfY2hlY2soc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+ICB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gPiAtCXN0 cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ID4gPiArCXN0cnVjdCBpbnRl bF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOw0KPiA+ID4gIAl1OCBzdGF0dXMsIGVycm9yX3N0 YXR1czsNCj4gPiA+ICAJY29uc3QgdTggZXJyb3JzID0gRFBfUFNSX1JGQl9TVE9SQUdFX0VSUk9S IHwNCj4gPiA+ICAJCQkgIERQX1BTUl9WU0NfU0RQX1VOQ09SUkVDVEFCTEVfRVJST1IgfA0KPiA+ ID4gIAkJCSAgRFBfUFNSX0xJTktfQ1JDX0VSUk9SOw0KPiA+ID4NCj4gPiA+IC0JaWYgKCFDQU5f UFNSKGRldl9wcml2KSB8fCAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkNCj4gPiA+ICsJaWYg KCFDQU5fUFNSKGludGVsX2RwKSB8fCAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkNCj4gPiA+ ICAJCXJldHVybjsNCj4gPiA+DQo+ID4gPiAgCW11dGV4X2xvY2soJnBzci0+bG9jayk7DQo+ID4g Pg0KPiA+ID4gLQlpZiAoIXBzci0+ZW5hYmxlZCB8fCBwc3ItPmRwICE9IGludGVsX2RwKQ0KPiA+ ID4gKwlpZiAoIXBzci0+ZW5hYmxlZCkNCj4gPiA+ICAJCWdvdG8gZXhpdDsNCj4gPiA+DQo+ID4g PiAgCWlmIChwc3JfZ2V0X3N0YXR1c19hbmRfZXJyb3Jfc3RhdHVzKGludGVsX2RwLCAmc3RhdHVz LA0KPiA+ID4gJmVycm9yX3N0YXR1cykpIHsNCj4gPiA+IEBAIC0xODYzLDE1ICsxODk4LDE0IEBA IHZvaWQgaW50ZWxfcHNyX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gKmludGVs X2RwKQ0KPiA+ID4NCj4gPiA+ICBib29sIGludGVsX3Bzcl9lbmFibGVkKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApDQo+ID4gPiAgew0KPiA+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiA+ICAJYm9vbCByZXQ7DQo+ID4g Pg0KPiA+ID4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8ICFpbnRlbF9kcF9pc19lZHAoaW50 ZWxfZHApKQ0KPiA+ID4gKwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApIHx8ICFpbnRlbF9kcF9pc19l ZHAoaW50ZWxfZHApKQ0KPiA+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ID4NCj4gPiA+IC0JbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiA+IC0JcmV0ID0gKGRldl9wcml2LT5w c3IuZHAgPT0gaW50ZWxfZHAgJiYgZGV2X3ByaXYtPnBzci5lbmFibGVkKTsNCj4gPiA+IC0JbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ID4gKwltdXRleF9sb2NrKCZpbnRl bF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gKwlyZXQgPSBpbnRlbF9kcC0+cHNyLmVuYWJsZWQ7DQo+ ID4gPiArCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiA+DQo+ID4gPiAg CXJldHVybiByZXQ7DQo+ID4gPiAgfQ0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wc3IuaA0KPiA+ID4gaW5kZXggMGE1MTc5NzhlOGFmLi4wM2ViMTk1NDdk MDkgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3Bzci5oDQo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5oDQo+ID4gPiBAQCAtMTgsNyArMTgsNyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlOw0K PiA+ID4gIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZTsNCj4gPiA+ICBzdHJ1Y3QgaW50ZWxfcGxh bmU7DQo+ID4gPg0KPiA+ID4gLSNkZWZpbmUgQ0FOX1BTUihkZXZfcHJpdikgKEhBU19QU1IoZGV2 X3ByaXYpICYmIGRldl9wcml2LQ0KPiA+ID4gPnBzci5zaW5rX3N1cHBvcnQpDQo+ID4gPiArI2Rl ZmluZSBDQU5fUFNSKGludGVsX2RwKSAoSEFTX1BTUihkcF90b19pOTE1KGludGVsX2RwKSkgJiYN Cj4gPiA+IGludGVsX2RwLT5wc3Iuc2lua19zdXBwb3J0KQ0KPiA+ID4gIHZvaWQgaW50ZWxfcHNy X2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsNCj4gPiA+ICB2b2lkIGludGVs X3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiA+ICAJCSAgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiA+ID4gQEAgLTI4LDI0 ICsyOCwyNCBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4g KmludGVsX2RwLA0KPiA+ID4gIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLA0KPiA+ID4gIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsDQo+ID4gPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSk7DQo+ID4gPiAtaW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQNCj4gPiA+IHZhbHVlKTsNCj4gPiA+ICtp bnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFs dWUpOw0KPiA+ID4gIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LA0KPiA+ID4gIAkJCSAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywN Cj4gPiA+ICAJCQkgIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbik7DQo+ID4gPiAgdm9pZCBpbnRl bF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4gIAkJ ICAgICB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzLA0KPiA+ID4gIAkJICAgICBlbnVtIGZiX29w X29yaWdpbiBvcmlnaW4pOw0KPiA+ID4gLXZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsNCj4gPiA+ICt2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApOw0KPiA+ID4gIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gPiAgCQkJICAgICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOw0KPiA+ID4gLXZvaWQgaW50ZWxfcHNyX2lycV9o YW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyDQo+ID4gPiBwc3Jf aWlyKTsNCj4gPiA+ICt2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCB1MzINCj4gPiA+IHBzcl9paXIpOw0KPiA+ID4gIHZvaWQgaW50ZWxfcHNyX3No b3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOw0KPiA+ID4gLWludCBpbnRlbF9w c3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiA+ID4gKm5l d19jcnRjX3N0YXRlLA0KPiA+ID4gLQkJCSAgICB1MzIgKm91dF92YWx1ZSk7DQo+ID4gPiArdm9p ZCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0K PiA+ID4gKm5ld19jcnRjX3N0YXRlKTsNCj4gPiA+ICBib29sIGludGVsX3Bzcl9lbmFibGVkKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOw0KPiA+ID4gIGludCBpbnRlbF9wc3IyX3NlbF9mZXRj aF91cGRhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gPiAgCQkJCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsNCj4gPiA+IC12b2lkIGludGVsX3BzcjJfcHJvZ3JhbV90 cmFuc19tYW5fdHJrX2N0bChjb25zdCBzdHJ1Y3QNCj4gPiA+IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpOw0KPiA+ID4gK3ZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21hbl90cmtf Y3RsKHN0cnVjdCBpbnRlbF9kcA0KPiA+ID4gKmludGVsX2RwLA0KPiA+ID4gKwkJCQkJICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiA+ID4gKmNydGNfc3RhdGUpOw0KPiA+ID4gIHZv aWQgaW50ZWxfcHNyMl9wcm9ncmFtX3BsYW5lX3NlbF9mZXRjaChzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLA0KPiA+ID4gIAkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gPiA+ ICpjcnRjX3N0YXRlLA0KPiA+ID4gIAkJCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl DQo+ID4gPiAqcGxhbmVfc3RhdGUsDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jDQo+ID4gPiBpbmRleCBiN2UyMDg4MTYwNzQuLjk0ODIz NGM2MDY0OCAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfc3ByaXRlLmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfc3ByaXRlLmMNCj4gPiA+IEBAIC04NCw3ICs4NCw2IEBAIHZvaWQgaW50ZWxfcGlwZV91 cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0DQo+ID4gPiBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0 Y19zdGF0ZSkNCj4gPiA+ICAJYm9vbCBuZWVkX3Zsdl9kc2lfd2EgPSAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwNCj4gPiA+IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSAmJg0KPiA+ID4gIAkJ aW50ZWxfY3J0Y19oYXNfdHlwZShuZXdfY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0RTSSk7DQo+ ID4gPiAgCURFRklORV9XQUlUKHdhaXQpOw0KPiA+ID4gLQl1MzIgcHNyX3N0YXR1czsNCj4gPiA+ DQo+ID4gPiAgCWlmIChuZXdfY3J0Y19zdGF0ZS0+dWFwaS5hc3luY19mbGlwKQ0KPiA+ID4gIAkJ cmV0dXJuOw0KPiA+ID4gQEAgLTEwOSwxMCArMTA4LDcgQEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0 ZV9zdGFydChjb25zdCBzdHJ1Y3QNCj4gPiA+IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0 YXRlKQ0KPiA+ID4gIAkgKiBWQkwgaW50ZXJydXB0cyB3aWxsIHN0YXJ0IHRoZSBQU1IgZXhpdCBh bmQgcHJldmVudCBhIFBTUg0KPiA+ID4gIAkgKiByZS1lbnRyeSBhcyB3ZWxsLg0KPiA+ID4gIAkg Ki8NCj4gPiA+IC0JaWYgKGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKG5ld19jcnRjX3N0YXRlLCAm cHNyX3N0YXR1cykpDQo+ID4gPiAtCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLA0KPiA+ID4gLQkJ CSJQU1IgaWRsZSB0aW1lZCBvdXQgMHgleCwgYXRvbWljIHVwZGF0ZSBtYXkNCj4gPiA+IGZhaWxc biIsDQo+ID4gPiAtCQkJcHNyX3N0YXR1cyk7DQo+ID4gPiArCWludGVsX3Bzcl93YWl0X2Zvcl9p ZGxlKG5ld19jcnRjX3N0YXRlKTsNCj4gPiA+DQo+ID4gPiAgCWxvY2FsX2lycV9kaXNhYmxlKCk7 DQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+ID4gaW5kZXgg NWQwNGIyODJjMDYwLi5hMmUzOWU4YWRjYmUgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oDQo+ID4gPiBAQCAtNDc1LDQyICs0NzUsNiBAQCBzdHJ1Y3QgaTkxNV9kcnJzIHsN Cj4gPiA+ICAJZW51bSBkcnJzX3N1cHBvcnRfdHlwZSB0eXBlOw0KPiA+ID4gIH07DQo+ID4gPg0K PiA+ID4gLXN0cnVjdCBpOTE1X3BzciB7DQo+ID4gPiAtCXN0cnVjdCBtdXRleCBsb2NrOw0KPiA+ ID4gLQ0KPiA+ID4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLCTB4MGYNCj4gPiA+ IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RFRkFVTFQJCTB4MDANCj4gPiA+IC0jZGVmaW5lIEk5 MTVfUFNSX0RFQlVHX0RJU0FCTEUJCTB4MDENCj4gPiA+IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVH X0VOQUJMRQkJMHgwMg0KPiA+ID4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMQkw eDAzDQo+ID4gPiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19JUlEJCTB4MTANCj4gPiA+IC0NCj4g PiA+IC0JdTMyIGRlYnVnOw0KPiA+ID4gLQlib29sIHNpbmtfc3VwcG9ydDsNCj4gPiA+IC0JYm9v bCBlbmFibGVkOw0KPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmRwOw0KPiA+ID4gLQllbnVtIHBp cGUgcGlwZTsNCj4gPiA+IC0JZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7DQo+ID4gPiAtCWJv b2wgYWN0aXZlOw0KPiA+ID4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsNCj4gPiA+IC0JdW5z aWduZWQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOw0KPiA+ID4gLQlib29sIHNpbmtfcHNyMl9zdXBw b3J0Ow0KPiA+ID4gLQlib29sIGxpbmtfc3RhbmRieTsNCj4gPiA+IC0JYm9vbCBjb2xvcmltZXRy eV9zdXBwb3J0Ow0KPiA+ID4gLQlib29sIHBzcjJfZW5hYmxlZDsNCj4gPiA+IC0JYm9vbCBwc3Iy X3NlbF9mZXRjaF9lbmFibGVkOw0KPiA+ID4gLQl1OCBzaW5rX3N5bmNfbGF0ZW5jeTsNCj4gPiA+ IC0Ja3RpbWVfdCBsYXN0X2VudHJ5X2F0dGVtcHQ7DQo+ID4gPiAtCWt0aW1lX3QgbGFzdF9leGl0 Ow0KPiA+ID4gLQlib29sIHNpbmtfbm90X3JlbGlhYmxlOw0KPiA+ID4gLQlib29sIGlycV9hdXhf ZXJyb3I7DQo+ID4gPiAtCXUxNiBzdV94X2dyYW51bGFyaXR5Ow0KPiA+ID4gLQlib29sIGRjM2Nv X2VuYWJsZWQ7DQo+ID4gPiAtCXUzMiBkYzNjb19leGl0X2RlbGF5Ow0KPiA+ID4gLQlzdHJ1Y3Qg ZGVsYXllZF93b3JrIGRjM2NvX3dvcms7DQo+ID4gPiAtCXN0cnVjdCBkcm1fZHBfdnNjX3NkcCB2 c2M7DQo+ID4gPiAtfTsNCj4gPiA+IC0NCj4gPiA+ICAjZGVmaW5lIFFVSVJLX0xWRFNfU1NDX0RJ U0FCTEUgKDE8PDEpDQo+ID4gPiAgI2RlZmluZSBRVUlSS19JTlZFUlRfQlJJR0hUTkVTUyAoMTw8 MikNCj4gPiA+ICAjZGVmaW5lIFFVSVJLX0JBQ0tMSUdIVF9QUkVTRU5UICgxPDwzKQ0KPiA+ID4g QEAgLTEwNDEsOCArMTAwNSw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsNCj4gPiA+DQo+ ID4gPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgcG93ZXJfZG9tYWluczsNCj4gPiA+DQo+ ID4gPiAtCXN0cnVjdCBpOTE1X3BzciBwc3I7DQo+ID4gPiAtDQo+ID4gPiAgCXN0cnVjdCBpOTE1 X2dwdV9lcnJvciBncHVfZXJyb3I7DQo+ID4gPg0KPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqdmx2X3BjdHg7DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYw0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jDQo+ ID4gPiBpbmRleCA0OTFmODI1MDBkNjguLjg1NDY3ODY1MjFiNSAxMDA2NDQNCj4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMNCj4gPiA+IEBAIC0yMDQ0LDEwICsyMDQ0LDIyIEBAIHN0YXRp YyB2b2lkIGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsDQo+ID4gPiAgCQlpdmJfZXJyX2ludF9oYW5kbGVyKGRldl9wcml2KTsN Cj4gPiA+DQo+ID4gPiAgCWlmIChkZV9paXIgJiBERV9FRFBfUFNSX0lOVF9IU1cpIHsNCj4gPiA+ IC0JCXUzMiBwc3JfaWlyID0gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsDQo+ ID4gPiBFRFBfUFNSX0lJUik7DQo+ID4gPiArCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cjsNCj4gPiA+DQo+ID4gPiAtCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBzcl9p aXIpOw0KPiA+ID4gLQkJaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBFRFBf UFNSX0lJUiwNCj4gPiA+IHBzcl9paXIpOw0KPiA+ID4gKwkJZm9yX2VhY2hfaW50ZWxfZHAoJmRl dl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gPiA+ICsJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwID0NCj4gPiA+IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gPiA+ICsNCj4gPiA+ICsJ CQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQICYmDQo+ID4gPiArCQkJICAg IENBTl9QU1IoaW50ZWxfZHApKSB7DQo+ID4gPiArCQkJCXUzMiBwc3JfaWlyID0NCj4gPiA+IGlu dGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLA0KPiA+ID4gKwkJCQkJCQkJRURQX1BT Ug0KPiA+ID4gX0lJUik7DQo+ID4gPiArDQo+ID4gPiArCQkJCWludGVsX3Bzcl9pcnFfaGFuZGxl cihpbnRlbF9kcCwNCj4gPiA+IHBzcl9paXIpOw0KPiA+ID4gKwkJCQlpbnRlbF91bmNvcmVfd3Jp dGUoJmRldl9wcml2LT51bmNvcmUsDQo+ID4gPiArCQkJCQkJICAgRURQX1BTUl9JSVIsDQo+ID4g PiBwc3JfaWlyKTsNCj4gPiA+ICsJCQkJYnJlYWs7DQo+ID4gPiArCQkJfQ0KPiA+ID4gKwkJfQ0K PiA+ID4gIAl9DQo+ID4gPg0KPiA+ID4gIAlpZiAoZGVfaWlyICYgREVfQVVYX0NIQU5ORUxfQV9J VkIpDQo+ID4gPiBAQCAtMjI1NSwyMSArMjI2NywzNCBAQCBnZW44X2RlX21pc2NfaXJxX2hhbmRs ZXIoc3RydWN0DQo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGlpcikNCj4g PiA+ICAJfQ0KPiA+ID4NCj4gPiA+ICAJaWYgKGlpciAmIEdFTjhfREVfRURQX1BTUikgew0KPiA+ ID4gKwkJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gPiAgCQl1MzIgcHNyX2lp cjsNCj4gPiA+ICAJCWk5MTVfcmVnX3QgaWlyX3JlZzsNCj4gPiA+DQo+ID4gPiAtCQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMikNCj4gPiA+IC0JCQlpaXJfcmVnID0gVFJBTlNfUFNSX0lJ UihkZXZfcHJpdi0NCj4gPiA+ID5wc3IudHJhbnNjb2Rlcik7DQo+ID4gPiAtCQllbHNlDQo+ID4g PiAtCQkJaWlyX3JlZyA9IEVEUF9QU1JfSUlSOw0KPiA+ID4gKwkJZm9yX2VhY2hfaW50ZWxfZHAo JmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gPiA+ICsJCQlzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwID0NCj4gPiA+IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gPiA+DQo+ID4gPiAt CQlwc3JfaWlyID0gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsDQo+ID4gPiBp aXJfcmVnKTsNCj4gPiA+IC0JCWludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29yZSwg aWlyX3JlZywNCj4gPiA+IHBzcl9paXIpOw0KPiA+ID4gKwkJCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDEyICYmDQo+ID4gPiBDQU5fUFNSKGludGVsX2RwKSkgew0KPiA+ID4gKwkJCQlpaXJf cmVnID0gVFJBTlNfUFNSX0lJUihpbnRlbF9kcC0NCj4gPiA+ID5wc3IudHJhbnNjb2Rlcik7DQo+ ID4gPiArCQkJfSBlbHNlIGlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFAgJiYN Cj4gPiA+ICsJCQkJICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsNCj4gPiA+ICsJCQkJaWlyX3JlZyA9 IEVEUF9QU1JfSUlSOw0KPiA+ID4gKwkJCX0gZWxzZSB7DQo+ID4gPiArCQkJCWNvbnRpbnVlOw0K PiA+ID4gKwkJCX0NCj4gPiA+ICsNCj4gPiA+ICsJCQlwc3JfaWlyID0gaW50ZWxfdW5jb3JlX3Jl YWQoJmRldl9wcml2LT51bmNvcmUsDQo+ID4gPiBpaXJfcmVnKTsNCj4gPiA+ICsJCQlpbnRlbF91 bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcsDQo+ID4gPiBwc3JfaWlyKTsN Cj4gPiA+ICsNCj4gPiA+ICsJCQlpZiAocHNyX2lpcikNCj4gPiA+ICsJCQkJZm91bmQgPSB0cnVl Ow0KPiA+ID4NCj4gPiA+IC0JCWlmIChwc3JfaWlyKQ0KPiA+ID4gLQkJCWZvdW5kID0gdHJ1ZTsN Cj4gPiA+ICsJCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9paXIpOw0KPiA+ ID4NCj4gPiA+IC0JCWludGVsX3Bzcl9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcHNyX2lpcik7DQo+ ID4gPiArCQkJLyogcHJpb3IgR0VOMTIgb25seSBoYXZlIG9uZSBFRFAgUFNSICovDQo+ID4gPiAr CQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMikNCj4gPiA+ICsJCQkJYnJlYWs7DQo+ID4g PiArCQl9DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiAgCWlmICghZm91bmQpDQo+ID4gPiAtLQ0K PiA+ID4gMi4yNS4wDQo+ID4gPg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==