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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CB46EB8FD7 for ; Wed, 6 Sep 2023 13:57:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241295AbjIFN5J (ORCPT ); Wed, 6 Sep 2023 09:57:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229907AbjIFN5G (ORCPT ); Wed, 6 Sep 2023 09:57:06 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CFDA1B6; Wed, 6 Sep 2023 06:57:00 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 49F0B22432; Wed, 6 Sep 2023 13:56:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1694008619; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=PZhvCk67FzJHb7Q2oWyh0VIGuN2WNZt92c7JHpcSlHA=; b=SfzWPXm50X0wSnRmMmKOdrBrwgCgK4F/6KG0e4PDTR1X4qQ2D4uWhbST5UGdFFYd/7DivX kN1TdTWRfsvS6mE/GXU47XhekRvoEeexYEUB1hzFAvXtVn7evZ/CeIxPUWgFQA1bz6DEH9 ppb6BJuBHjSXnDmWDB2fDd4pq2U7i1Y= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1694008619; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=PZhvCk67FzJHb7Q2oWyh0VIGuN2WNZt92c7JHpcSlHA=; b=GMftgE5nCjgAsidF0lyZuk0Y6DJrEb5ZOAsiCfbhItXjCYTtZ4OByfsb+Dk/bMgQuDuqM0 ZCfqcliZwLl1g/Aw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id C70AE1333E; Wed, 6 Sep 2023 13:56:58 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id dHqfLyqF+GQsLQAAMHmgww (envelope-from ); Wed, 06 Sep 2023 13:56:58 +0000 Message-ID: <74969e00-cedb-cbfc-1455-b85ee53524b2@suse.de> Date: Wed, 6 Sep 2023 15:56:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [PATCH v1 v1 5/7] drm/vs: Register DRM device Content-Language: en-US To: Keith Zhao , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org Cc: Krzysztof Kozlowski , Sumit Semwal , Emil Renner Berthing , Shengyang Chen , Conor Dooley , Albert Ou , Maxime Ripard , Jagan Teki , Rob Herring , Chris Morgan , Paul Walmsley , Bjorn Andersson , Changhuang Liang , Jack Zhu , Palmer Dabbelt , Shawn Guo , christian.koenig@amd.com References: <20230801101030.2040-1-keith.zhao@starfivetech.com> <20230801101030.2040-6-keith.zhao@starfivetech.com> From: Thomas Zimmermann In-Reply-To: <20230801101030.2040-6-keith.zhao@starfivetech.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------l00otiy8C2dmthZBWYwOyGss" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------l00otiy8C2dmthZBWYwOyGss Content-Type: multipart/mixed; boundary="------------GxCSMTY72PP1Spr33lpmHC9P"; protected-headers="v1" From: Thomas Zimmermann To: Keith Zhao , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org Cc: Krzysztof Kozlowski , Sumit Semwal , Emil Renner Berthing , Shengyang Chen , Conor Dooley , Albert Ou , Maxime Ripard , Jagan Teki , Rob Herring , Chris Morgan , Paul Walmsley , Bjorn Andersson , Changhuang Liang , Jack Zhu , Palmer Dabbelt , Shawn Guo , christian.koenig@amd.com Message-ID: <74969e00-cedb-cbfc-1455-b85ee53524b2@suse.de> Subject: Re: [PATCH v1 v1 5/7] drm/vs: Register DRM device References: <20230801101030.2040-1-keith.zhao@starfivetech.com> <20230801101030.2040-6-keith.zhao@starfivetech.com> In-Reply-To: <20230801101030.2040-6-keith.zhao@starfivetech.com> --------------GxCSMTY72PP1Spr33lpmHC9P Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDEuMDguMjMgdW0gMTI6MTAgc2NocmllYiBLZWl0aCBaaGFvOg0KPiBJbXBs ZW1lbnQgZHJtIGRldmljZSByZWdpc3RyYXRpb24gaW50ZXJmYWNlDQo+IA0KPiBTaWduZWQt b2ZmLWJ5OiBLZWl0aCBaaGFvIDxrZWl0aC56aGFvQHN0YXJmaXZldGVjaC5jb20+DQo+IC0t LQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgICAgICAgfCAgIDIg Kw0KPiAgIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEg Kw0KPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi9LY29uZmlnICAgICAgfCAgMjUg KysNCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vTWFrZWZpbGUgICAgIHwgIDEz ICsNCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZHJ2LmMgICAgIHwgMjcz ICsrKysrKysrKysrKysrKysrKysrKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNv bi92c19kcnYuaCAgICAgfCAgNTQgKysrKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi92c19nZW0uYyAgICAgfCAyOTggKysrKysrKysrKysrKysrKysrKysrKysNCj4gICBk cml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZ2VtLmggICAgIHwgIDUwICsrKysNCj4g ICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfbW9kZXNldC5jIHwgIDkyICsrKysr KysNCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfbW9kZXNldC5oIHwgIDEz ICsNCj4gICBpbmNsdWRlL3VhcGkvZHJtL3ZzX2RybS5oICAgICAgICAgICAgICAgIHwgIDUw ICsrKysNCj4gICAxMSBmaWxlcyBjaGFuZ2VkLCA4NzEgaW5zZXJ0aW9ucygrKQ0KPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vS2NvbmZpZw0K PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vTWFr ZWZpbGUNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxp Y29uL3ZzX2Rydi5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92 ZXJpc2lsaWNvbi92c19kcnYuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vdmVyaXNpbGljb24vdnNfZ2VtLmMNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2dlbS5oDQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19tb2Rlc2V0LmMNCj4gICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX21vZGVzZXQu aA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvZHJtL3ZzX2RybS5oDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dw dS9kcm0vS2NvbmZpZw0KPiBpbmRleCBhZmIzYjJmNWYuLjllZGU4MGVmOSAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L0tjb25maWcNCj4gQEAgLTM2Myw2ICszNjMsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2Ry bS9zb2xvbW9uL0tjb25maWciDQo+ICAgDQo+ICAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0v c3ByZC9LY29uZmlnIg0KPiAgIA0KPiArc291cmNlICJkcml2ZXJzL2dwdS9kcm0vdmVyaXNp bGljb24vS2NvbmZpZyINCj4gKw0KPiAgIGNvbmZpZyBEUk1fSFlQRVJWDQo+ICAgCXRyaXN0 YXRlICJEUk0gU3VwcG9ydCBmb3IgSHlwZXItViBzeW50aGV0aWMgdmlkZW8gZGV2aWNlIg0K PiAgIAlkZXBlbmRzIG9uIERSTSAmJiBQQ0kgJiYgTU1VICYmIEhZUEVSVg0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlDQo+IGluZGV4IDdhMDlhODliNC4uNmRiM2JjMzk3IDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl DQo+IEBAIC0xOTQsMyArMTk0LDQgQEAgb2JqLXkJCQkrPSBndWQvDQo+ICAgb2JqLSQoQ09O RklHX0RSTV9IWVBFUlYpICs9IGh5cGVydi8NCj4gICBvYmoteQkJCSs9IHNvbG9tb24vDQo+ ICAgb2JqLSQoQ09ORklHX0RSTV9TUFJEKSArPSBzcHJkLw0KPiArb2JqLSQoQ09ORklHX0RS TV9WRVJJU0lMSUNPTikgKz0gdmVyaXNpbGljb24vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdmVyaXNpbGljb24vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi9LY29uZmlnDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MC4uZmNjMzlkZGVkDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3ZlcmlzaWxpY29uL0tjb25maWcNCj4gQEAgLTAsMCArMSwyNSBAQA0KPiArIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArY29uZmlnIERSTV9WRVJJU0lMSUNPTg0K PiArCXRyaXN0YXRlICJEUk0gU3VwcG9ydCBmb3IgVmVyaVNpbGljb24iDQo+ICsJZGVwZW5k cyBvbiBEUk0NCj4gKwlzZWxlY3QgRFJNX0tNU19IRUxQRVINCj4gKwlzZWxlY3QgRFJNX0dF TV9ETUFfSEVMUEVSDQo+ICsJc2VsZWN0IENNQQ0KPiArCXNlbGVjdCBETUFfQ01BDQo+ICsJ aGVscA0KPiArCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgVmVyaVNpbGlj b24gc29jIGNoaXBzZXQuDQo+ICsJICBUaGlzIGRyaXZlciBwcm92aWRlcyBWZXJpU2lsaWNv biBrZXJuZWwgbW9kZQ0KPiArCSAgc2V0dGluZyBhbmQgYnVmZmVyIG1hbmFnZW1lbnQuIEl0 IGRvZXMgbm90DQo+ICsJICBwcm92aWRlIDJEIG9yIDNEIGFjY2VsZXJhdGlvbi4NCj4gKw0K PiAraWYgRFJNX1ZFUklTSUxJQ09ODQoNCk1heWJlIGRyb3AgdGhpcyBpZiBhbmQgbWFrZSBT VEFSRklWRV9IRE1JIGRlcGVuZCBvbiBEUk1fVkVSSVNJTElDT04NCg0KPiArDQo+ICtjb25m aWcgU1RBUkZJVkVfSERNSQ0KDQpUaGF0IG5hbWUgaXMgYSBiaXQgZ2VuZXJpYy4gQmV0dGVy IGRvIHNvbWUgcHJlZml4aW5nLCBsaWtlIA0KRFJNX1ZFUklTSUxJQ09OX1NUQVJGSVZFX0hE TUkNCg0KPiArCWJvb2wgIlN0YXJmaXZlIHNwZWNpZmljIGV4dGVuc2lvbnMgSERNSSINCg0K TWF5YmUgc2F5ICJTdGFyZml2ZSBIRE1JIGV4dGVuc2lvbnMiDQoNCj4gKwloZWxwDQo+ICsJ ICAgVGhpcyBzZWxlY3RzIHN1cHBvcnQgZm9yIFN0YXJGaXZlIFNvQyBzcGVjaWZpYyBleHRl bnNpb25zDQo+ICsJICAgZm9yIHRoZSBJbm5vc2lsaWNvbiBIRE1JIGRyaXZlci4gSWYgeW91 IHdhbnQgdG8gZW5hYmxlDQo+ICsJICAgSERNSSBvbiBKSDcxMTAgYmFzZWQgU29DLCB5b3Ug c2hvdWxkIHNlbGVjdCB0aGlzIG9wdGlvbi4NCj4gKw0KPiArCSAgIFRvIGNvbXBpbGUgdGhp cyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuDQo+ICtlbmRpZg0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4IDAwMDAwMDAwMC4uMjZjYzdlMjFiDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlDQo+IEBAIC0wLDAgKzEs MTMgQEANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKw0KPiAr dnNfZHJtLW9ianMgOj0gdnNfZGNfaHcubyBcDQo+ICsJCXZzX2RjLm8gXA0KPiArCQl2c19j cnRjLm8gXA0KPiArCQl2c19kcnYubyBcDQo+ICsJCXZzX21vZGVzZXQubyBcDQo+ICsJCXZz X2dlbS5vIFwNCj4gKwkJdnNfcGxhbmUubw0KPiArDQo+ICt2c19kcm0tJChDT05GSUdfU1RB UkZJVkVfSERNSSkgKz0gc3RhcmZpdmVfaGRtaS5vDQo+ICtvYmotJChDT05GSUdfRFJNX1ZF UklTSUxJQ09OKSArPSB2c19kcm0ubw0KPiArDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdmVyaXNpbGljb24vdnNfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGlj b24vdnNfZHJ2LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw Li42OTU5MWU2NDANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfZHJ2LmMNCj4gQEAgLTAsMCArMSwyNzMgQEANCj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChD KSAyMDIzIFZlcmlTaWxpY29uIEhvbGRpbmdzIENvLiwgTHRkLg0KPiArICovDQo+ICsNCj4g KyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQu aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Rt YS1tYXBwaW5nLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9tbXUuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9vZl9ncmFwaC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX3Jlc2VydmVkX21l bS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9yZXNldC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCj4gKw0KPiAr I2luY2x1ZGUgPGRybS9kcm1fYXBlcnR1cmUuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0 b21pY19oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4NCj4gKyNpbmNs dWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kZWJ1 Z2ZzLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4NCj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2ZiX2hlbHBlci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJkZXZfZ2VuZXJpYy5o Pg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1f Zm91cmNjLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9pb2N0bC5oPg0KPiArI2luY2x1ZGUg PGRybS9kcm1fb2YuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW1lLmg+DQo+ICsjaW5j bHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3Zi bGFuay5oPg0KPiArDQo+ICsjaW5jbHVkZSAidnNfZHJ2LmgiDQo+ICsjaW5jbHVkZSAidnNf bW9kZXNldC5oIg0KPiArI2luY2x1ZGUgInZzX2dlbS5oIg0KPiArDQo+ICsjZGVmaW5lIERS Vl9OQU1FCSJzdGFyZml2ZSINCj4gKyNkZWZpbmUgRFJWX0RFU0MJIlN0YXJmaXZlIERSTSBk cml2ZXIiDQoNCkJldHRlciB1c2UgVmVyaXNpbGljb24gY29uc2lzdGVudGx5IHRocm91Z2hv dXQgeW91ciBkcml2ZXIuIFVzZSBTdGFyZml2ZSANCm9ubHkgZm9yIFN0YXJmaXZlLXNwZWNp ZmljIGNvZGUgKGxpa2UgdGhpcyBIRE1JIGV4dGVudGlvbikuDQoNCj4gKyNkZWZpbmUgRFJW X0RBVEUJIjIwMjMwNTE2MSINCj4gKyNkZWZpbmUgRFJWX01BSk9SCTENCj4gKyNkZWZpbmUg RFJWX01JTk9SCTANCj4gKw0KPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdnNf ZHJtX3BsYXRmb3JtX2RyaXZlcjsNCg0KQXBwYXJlbnRseSBub3QgbmVlZGVkLiBQbGVhc2Ug cmVtb3ZlLg0KDQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGZvcHMgPSB7DQo+ICsJLm93bmVyCQkJPSBUSElTX01PRFVMRSwNCj4gKwkub3BlbgkJCT0g ZHJtX29wZW4sDQo+ICsJLnJlbGVhc2UJCT0gZHJtX3JlbGVhc2UsDQo+ICsJLnVubG9ja2Vk X2lvY3RsCT0gZHJtX2lvY3RsLA0KPiArCS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lv Y3RsLA0KPiArCS5wb2xsCQkJPSBkcm1fcG9sbCwNCj4gKwkucmVhZAkJCT0gZHJtX3JlYWQs DQo+ICsJLm1tYXAJCQk9IGRybV9nZW1fbW1hcCwNCj4gK307DQoNClBsZWFzZSB1c2UgREVG SU5FX0RSTV9HRU1fRk9QUygpIHRvIGNyZWF0ZSB0aGlzIGluc3RhbmNlLg0KDQpodHRwczov L2VsaXhpci5ib290bGluLmNvbS9saW51eC92Ni41L3NvdXJjZS9pbmNsdWRlL2RybS9kcm1f Z2VtLmgjTDQzOA0KDQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciB2c19kcm1f ZHJpdmVyID0gew0KPiArCS5kcml2ZXJfZmVhdHVyZXMJPSBEUklWRVJfTU9ERVNFVCB8IERS SVZFUl9BVE9NSUMgfCBEUklWRVJfR0VNLA0KDQo+ICsJLmxhc3RjbG9zZQkJPSBkcm1fZmJf aGVscGVyX2xhc3RjbG9zZSwNCg0KVGhpcyBmdW5jdGlvbiBwb2ludGVyIGlzIHRvIGJlIHJl bW92ZWQgc29vbi4gUGxlYXNlIGRvbid0IHNldCBpdC4NCg0KDQo+ICsJLnByaW1lX2hhbmRs ZV90b19mZCA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLA0KPiArCS5wcmltZV9mZF90 b19oYW5kbGUgPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRsZSwNCg0KVGhlc2UgY2FsbCBh cmUgdGhlIGRlZmF1bHRzLiBQbGVhc2UgcmVtb3ZlIHRoZSBhc3NpZ25tZW50cyBhbmQgbGV0 IHRoZSANClBSSU1FIGNvZGUgaGFuZGxlIGl0IGJ5IGl0c2VsZi4gVGhlIGZ1bmN0aW9uIHBv aW50ZXIgYXJlIG9ubHkgaGVyZSBmb3IgDQp2bXdnZnguDQoNCg0KPiArCS5nZW1fcHJpbWVf aW1wb3J0X3NnX3RhYmxlID0gdnNfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwNCj4gKwku Z2VtX3ByaW1lX21tYXAJCT0gZHJtX2dlbV9wcmltZV9tbWFwLA0KPiArCS5kdW1iX2NyZWF0 ZQkJPSB2c19nZW1fZHVtYl9jcmVhdGUsDQo+ICsJLmZvcHMJCQk9ICZmb3BzLA0KDQpCZXR0 ZXIgY2FsbCBpdCB2c19kcm1fZm9wcw0KDQo+ICsJLm5hbWUJCQk9IERSVl9OQU1FLA0KPiAr CS5kZXNjCQkJPSBEUlZfREVTQywNCj4gKwkuZGF0ZQkJCT0gRFJWX0RBVEUsDQo+ICsJLm1h am9yCQkJPSBEUlZfTUFKT1IsDQo+ICsJLm1pbm9yCQkJPSBEUlZfTUlOT1IsDQo+ICt9Ow0K PiArDQo+ICt2b2lkIHZzX2RybV91cGRhdGVfcGl0Y2hfYWxpZ25tZW50KHN0cnVjdCBkcm1f ZGV2aWNlICpkcm1fZGV2LA0KPiArCQkJCSAgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQpDQo+ ICt7DQo+ICsJc3RydWN0IHZzX2RybV9wcml2YXRlICpwcml2ID0gdG9fdnNfZGV2KGRybV9k ZXYpOw0KPiArDQo+ICsJaWYgKGFsaWdubWVudCA+IHByaXYtPnBpdGNoX2FsaWdubWVudCkN Cj4gKwkJcHJpdi0+cGl0Y2hfYWxpZ25tZW50ID0gYWxpZ25tZW50Ow0KPiArfQ0KDQpQbGVh c2UgcmVtb3ZlLiBUaGVyZSdzIGFwcGFyYW50bHkgbm8gY2FsbGVyIGZvciB0aGlzIGhlbHBl ci4NCg0KPiArDQo+ICtzdGF0aWMgaW50IHZzX2RybV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRl dikNCj4gK3sNCj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZv cm1fZGV2aWNlKGRldik7DQo+ICsJc3RydWN0IHZzX2RybV9wcml2YXRlICpwcml2Ow0KPiAr CWludCByZXQ7DQo+ICsJc3RhdGljIHU2NCBkbWFfbWFzayA9IERNQV9CSVRfTUFTSyg0MCk7 DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXY7DQo+ICsNCg0KDQo+ICsJLyogUmVt b3ZlIGV4aXN0aW5nIGRyaXZlcnMgdGhhdCBtYXkgb3duIHRoZSBmcmFtZWJ1ZmZlciBtZW1v cnkuICovDQo+ICsJcmV0ID0gZHJtX2FwZXJ0dXJlX3JlbW92ZV9mcmFtZWJ1ZmZlcnMoJnZz X2RybV9kcml2ZXIpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2VycihkZXYsDQo+ICsJ CQkgICAgIkZhaWxlZCB0byByZW1vdmUgZXhpc3RpbmcgZnJhbWVidWZmZXJzIC0gJWQuXG4i LA0KPiArCQkJICAgIHJldCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJ cHJpdiA9IGRldm1fZHJtX2Rldl9hbGxvYyhkZXYsICZ2c19kcm1fZHJpdmVyLCBzdHJ1Y3Qg dnNfZHJtX3ByaXZhdGUsIGJhc2UpOw0KPiArCQlpZiAoSVNfRVJSKHByaXYpKQ0KPiArCQkJ cmV0dXJuIFBUUl9FUlIocHJpdik7DQoNCklzIGl0IG15IGVtYWlsIHByb2dyYW0gb3IgaXMg dGhlIGFsaWdubWVudCBvZmY/DQoNCj4gKw0KPiArCXByaXYtPnBpdGNoX2FsaWdubWVudCA9 IDY0Ow0KPiArCXByaXYtPmRtYV9kZXYgPSBwcml2LT5iYXNlLmRldjsNCj4gKwlwcml2LT5k bWFfZGV2LT5jb2hlcmVudF9kbWFfbWFzayA9IGRtYV9tYXNrOw0KPiArCWRybV9kZXYgPSAm cHJpdi0+YmFzZTsNCj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcm1fZGV2KTsN Cj4gKw0KPiArCXZzX21vZGVfY29uZmlnX2luaXQoZHJtX2Rldik7DQo+ICsNCj4gKwkvKiBO b3cgdHJ5IGFuZCBiaW5kIGFsbCBvdXIgc3ViLWNvbXBvbmVudHMgKi8NCj4gKwlyZXQgPSBj b21wb25lbnRfYmluZF9hbGwoZGV2LCBkcm1fZGV2KTsNCj4gKwlpZiAocmV0KQ0KPiArCQln b3RvIGVycl9tb2RlOw0KPiArDQo+ICsJcmV0ID0gZHJtX3ZibGFua19pbml0KGRybV9kZXYs IGRybV9kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjKTsNCj4gKwlpZiAocmV0KQ0KPiArCQln b3RvIGVycl9iaW5kOw0KPiArDQo+ICsJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybV9kZXYp Ow0KPiArDQo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRybV9kZXYpOw0KPiArDQo+ ICsJcmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm1fZGV2LCAwKTsNCj4gKwlpZiAocmV0KQ0K PiArCQlnb3RvIGVycl9oZWxwZXI7DQo+ICsNCj4gKwlkcm1fZmJkZXZfZ2VuZXJpY19zZXR1 cChkcm1fZGV2LCAzMik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gKw0KPiArZXJyX2hlbHBl cjoNCj4gKwlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZHJtX2Rldik7DQo+ICtlcnJfYmlu ZDoNCj4gKwljb21wb25lbnRfdW5iaW5kX2FsbChkcm1fZGV2LT5kZXYsIGRybV9kZXYpOw0K PiArZXJyX21vZGU6DQo+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtX2Rldik7DQo+ ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19kcm1f dW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArDQo+ICsJZHJtX2Rldl91 bnJlZ2lzdGVyKGRybV9kZXYpOw0KPiArDQo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9maW5p KGRybV9kZXYpOw0KPiArDQo+ICsJY29tcG9uZW50X3VuYmluZF9hbGwoZHJtX2Rldi0+ZGV2 LCBkcm1fZGV2KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25l bnRfbWFzdGVyX29wcyB2c19kcm1fb3BzID0gew0KPiArCS5iaW5kID0gdnNfZHJtX2JpbmQs DQo+ICsJLnVuYmluZCA9IHZzX2RybV91bmJpbmQsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJtX3N1Yl9kcml2ZXJzW10gPSB7DQo+ICsNCj4g Kw0KPiArCS8qIGNvbm5lY3RvciArIGVuY29kZXIqLw0KPiArI2lmZGVmIENPTkZJR19TVEFS RklWRV9IRE1JDQo+ICsJJnN0YXJmaXZlX2hkbWlfZHJpdmVyLA0KPiArI2VuZGlmDQo+ICsN Cj4gK307DQo+ICsNCj4gKyNkZWZpbmUgTlVNX0RSTV9EUklWRVJTIFwNCj4gKwkoc2l6ZW9m KGRybV9zdWJfZHJpdmVycykgLyBzaXplb2Yoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqKSkN Cg0KUmVwbGFjZSB0aGlzIGRlZmluZSB3aXRoIEFSUkFZX1NJWkUoKSBldmVyeXdoZXJlLg0K DQo+ICsNCj4gK3N0YXRpYyBpbnQgY29tcGFyZV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCB2 b2lkICpkYXRhKQ0KPiArew0KPiArCXJldHVybiBkZXYgPT0gKHN0cnVjdCBkZXZpY2UgKilk YXRhOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqdnNf ZHJtX21hdGNoX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGNv bXBvbmVudF9tYXRjaCAqbWF0Y2ggPSBOVUxMOw0KPiArCWludCBpOw0KPiArDQo+ICsJZm9y IChpID0gMDsgaSA8IE5VTV9EUk1fRFJJVkVSUzsgKytpKSB7DQo+ICsJCXN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgKmRydiA9IGRybV9zdWJfZHJpdmVyc1tpXTsNCj4gKwkJc3RydWN0IGRl dmljZSAqcCA9IE5VTEwsICpkOw0KPiArDQo+ICsJCXdoaWxlICgoZCA9IHBsYXRmb3JtX2Zp bmRfZGV2aWNlX2J5X2RyaXZlcihwLCAmZHJ2LT5kcml2ZXIpKSkgew0KPiArCQkJcHV0X2Rl dmljZShwKTsNCj4gKw0KPiArCQkJY29tcG9uZW50X21hdGNoX2FkZChkZXYsICZtYXRjaCwg Y29tcGFyZV9kZXYsIGQpOw0KPiArCQkJcCA9IGQ7DQo+ICsJCX0NCj4gKwkJcHV0X2Rldmlj ZShwKTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gbWF0Y2ggPzogRVJSX1BUUigtRU5PREVW KTsNCg0KSXMgdGhlcmUgc29tZXRpbmcgYmV0d2VlbiAnPycgYW5kICc6JyA/DQoNCg0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgaW50IHZzX2RybV9wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZw ZGV2LT5kZXY7DQo+ICsJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0Y2g7DQo+ICsNCj4g KwltYXRjaCA9IHZzX2RybV9tYXRjaF9hZGQoZGV2KTsNCj4gKwlpZiAoSVNfRVJSKG1hdGNo KSkNCj4gKwkJcmV0dXJuIFBUUl9FUlIobWF0Y2gpOw0KPiArDQo+ICsJcmV0dXJuIGNvbXBv bmVudF9tYXN0ZXJfYWRkX3dpdGhfbWF0Y2goZGV2LCAmdnNfZHJtX29wcywgbWF0Y2gpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHZzX2RybV9wbGF0Zm9ybV9yZW1vdmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKwljb21wb25lbnRfbWFzdGVyX2Rl bCgmcGRldi0+ZGV2LCAmdnNfZHJtX29wcyk7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gKyNpZmRlZiBDT05GSUdfUE1fU0xFRVANCj4gK3N0YXRpYyBpbnQgdnNfZHJtX3N1c3Bl bmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXJldHVybiBkcm1fbW9kZV9jb25m aWdfaGVscGVyX3N1c3BlbmQoZGV2X2dldF9kcnZkYXRhKGRldikpOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IHZzX2RybV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0K PiArCWRybV9tb2RlX2NvbmZpZ19oZWxwZXJfcmVzdW1lKGRldl9nZXRfZHJ2ZGF0YShkZXYp KTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArI2VuZGlmDQo+ICsNCj4gK3N0YXRp YyBTSU1QTEVfREVWX1BNX09QUyh2c19kcm1fcG1fb3BzLCB2c19kcm1fc3VzcGVuZCwgdnNf ZHJtX3Jlc3VtZSk7DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IHZzX2RybV9kdF9pZHNbXSA9IHsNCj4gKwl7IC5jb21wYXRpYmxlID0gInN0YXJmaXZlLGRp c3BsYXktc3Vic3lzdGVtIiwgfSwNCj4gKwl7IH0sDQo+ICt9Ow0KPiArDQo+ICtNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCB2c19kcm1fZHRfaWRzKTsNCj4gKw0KPiArc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgdnNfZHJtX3BsYXRmb3JtX2RyaXZlciA9IHsNCj4gKwkucHJv YmUgPSB2c19kcm1fcGxhdGZvcm1fcHJvYmUsDQo+ICsJLnJlbW92ZSA9IHZzX2RybV9wbGF0 Zm9ybV9yZW1vdmUsDQo+ICsNCj4gKwkuZHJpdmVyID0gew0KPiArCQkubmFtZSA9IERSVl9O QU1FLA0KPiArCQkub2ZfbWF0Y2hfdGFibGUgPSB2c19kcm1fZHRfaWRzLA0KPiArCQkucG0g PSAmdnNfZHJtX3BtX29wcywNCj4gKwl9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBf X2luaXQgdnNfZHJtX2luaXQodm9pZCkNCj4gK3sNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJ cmV0ID0gcGxhdGZvcm1fcmVnaXN0ZXJfZHJpdmVycyhkcm1fc3ViX2RyaXZlcnMsIE5VTV9E Uk1fRFJJVkVSUyk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiAr CXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmdnNfZHJtX3BsYXRmb3JtX2RyaXZl cik7DQoNClBsZWFzZSB1c2UgZHJtX3BsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigpIGhlcmUu DQoNCmh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y2LjUvc291cmNlL2luY2x1 ZGUvZHJtL2RybV9tb2R1bGUuaCNMMTAxDQoNCkJlc3QgcmVnYXJkcw0KVGhvbWFzDQoNCj4g KwlpZiAocmV0KQ0KPiArCQlwbGF0Zm9ybV91bnJlZ2lzdGVyX2RyaXZlcnMoZHJtX3N1Yl9k cml2ZXJzLCBOVU1fRFJNX0RSSVZFUlMpOw0KPiArDQo+ICsJcmV0dXJuIHJldDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQgX19leGl0IHZzX2RybV9maW5pKHZvaWQpDQo+ICt7DQo+ ICsJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnZzX2RybV9wbGF0Zm9ybV9kcml2ZXIp Ow0KPiArCXBsYXRmb3JtX3VucmVnaXN0ZXJfZHJpdmVycyhkcm1fc3ViX2RyaXZlcnMsIE5V TV9EUk1fRFJJVkVSUyk7DQo+ICt9DQo+ICsNCj4gK21vZHVsZV9pbml0KHZzX2RybV9pbml0 KTsNCj4gK21vZHVsZV9leGl0KHZzX2RybV9maW5pKTsNCj4gKw0KPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJWZXJpU2lsaWNvbiBEUk0gRHJpdmVyIik7DQo+ICtNT0RVTEVfTElDRU5TRSgi R1BMIik7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZHJ2LmgNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwLi42ZGRjOTlkY2YNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZHJ2LmgN Cj4gQEAgLTAsMCArMSw1NCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAgKi8NCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVmVyaVNpbGljb24g SG9sZGluZ3MgQ28uLCBMdGQuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX1ZTX0RSVl9I X18NCj4gKyNkZWZpbmUgX19WU19EUlZfSF9fDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gKyNp bmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4N Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fbWFu YWdlZC5oPg0KPiArDQo+ICsvKg0KPiArICoNCj4gKyAqIEBkbWFfZGV2OiBkZXZpY2UgZm9y IERNQSBBUEkuDQo+ICsgKgktIHVzZSB0aGUgZmlyc3QgYXR0YWNoZWQgZGV2aWNlIGlmIHN1 cHBvcnQgaW9tbXUNCj4gKwllbHNlIHVzZSBkcm0gZGV2aWNlIChvbmx5IGNvbnRpZ3VvdXMg YnVmZmVyIHN1cHBvcnQpDQo+ICsgKiBAZG9tYWluOiBpb21tdSBkb21haW4gZm9yIERSTS4N Cj4gKyAqCS0gYWxsIERDIElPTU1VIHNoYXJlIHNhbWUgZG9tYWluIHRvIHJlZHVjZSBtYXBw aW5nDQo+ICsgKiBAcGl0Y2hfYWxpZ25tZW50OiBidWZmZXIgcGl0Y2ggYWxpZ25tZW50IHJl cXVpcmVkIGJ5IHN1Yi1kZXZpY2VzLg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHZzX2Ry bV9wcml2YXRlIHsNCg0KSXQncyBiZXR0ZXIgY2FsbGVkIHN0cnVjdCB2c19kcm1fZGV2aWNl LCBiZWNhdXNlIGl0ICdpbmhlcml0cycgZm9tIA0KZHJtX2RldmljZS4NCg0KPiArCXN0cnVj dCBkcm1fZGV2aWNlIGJhc2U7DQo+ICsJc3RydWN0IGRldmljZSAqZG1hX2RldjsNCj4gKwlz dHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW47DQo+ICsJdW5zaWduZWQgaW50IHBpdGNoX2Fs aWdubWVudDsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHZzX2RybV9w cml2YXRlICoNCj4gK3RvX3ZzX2Rldihjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0K DQp0b192c19kcm1fcHJpdmF0ZSgpICAob3IgdG9fdnNfZHJtX2RldmljZSgpIGlmIHlvdSBy ZW5hbWUgdGhlIHN0cnVjdCkNCg0KPiArew0KPiArCXJldHVybiBjb250YWluZXJfb2YoZGV2 LCBzdHJ1Y3QgdnNfZHJtX3ByaXZhdGUsIGJhc2UpOw0KPiArfQ0KPiArDQo+ICt2b2lkIHZz X2RybV91cGRhdGVfcGl0Y2hfYWxpZ25tZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2 LA0KPiArCQkJCSAgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQpOw0KDQpQbGVhc2UgcmVtb3Zl Lg0KDQo+ICsNCj4gKw0KPiArc3RhdGljIGlubGluZSBib29sIGlzX2lvbW11X2VuYWJsZWQo c3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfZHJtX3ByaXZh dGUgKnByaXYgPSB0b192c19kZXYoZGV2KTsNCj4gKw0KPiArCXJldHVybiBwcml2LT5kb21h aW4gPyB0cnVlIDogZmFsc2U7DQo+ICt9DQo+ICsNCj4gKyNpZmRlZiBDT05GSUdfU1RBUkZJ VkVfSERNSQ0KPiArZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RhcmZpdmVfaGRt aV9kcml2ZXI7DQo+ICsjZW5kaWYNCj4gKw0KPiArI2VuZGlmIC8qIF9fVlNfRFJWX0hfXyAq Lw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2dlbS5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uYTdkNWE1YzdiDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2dlbS5jDQo+IEBA IC0wLDAgKzEsMjk4IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MA0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2lsaWNvbiBIb2xkaW5n cyBDby4sIEx0ZC4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX3Jlc2VydmVkX21lbS5oPg0KPiArI2luY2x1ZGUg PGRybS9kcm1fZ2VtX2RtYV9oZWxwZXIuaD4NCj4gKw0KPiArI2luY2x1ZGUgInZzX2Rydi5o Ig0KPiArI2luY2x1ZGUgInZzX2dlbS5oIg0KPiArDQo+ICtNT0RVTEVfSU1QT1JUX05TKERN QV9CVUYpOw0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1 bmNzIHZzX2dlbV9kZWZhdWx0X2Z1bmNzOw0KPiArDQo+ICtzdGF0aWMgaW50IHZzX2dlbV9h bGxvY19idWYoc3RydWN0IHZzX2dlbV9vYmplY3QgKnZzX29iaikNCj4gK3sNCj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gdnNfb2JqLT5iYXNlLmJhc2UuZGV2Ow0KPiArCXVuc2ln bmVkIGludCBucl9wYWdlczsNCj4gKwlzdHJ1Y3Qgc2dfdGFibGUgc2d0Ow0KPiArCWludCBy ZXQgPSAtRU5PTUVNOw0KPiArDQo+ICsJaWYgKHZzX29iai0+YmFzZS5kbWFfYWRkcikgew0K PiArCQlkcm1fZGJnX2ttcyhkZXYsICJhbHJlYWR5IGFsbG9jYXRlZC5cbiIpOw0KDQpOb3Qg ZHJtX2RiZ19rbXMoKS4gSW4geW91ciBkcml2ZXIsIHBsZWFzZSB1c2UgZHJtX2RiZygpLg0K DQo+ICsJCXJldHVybiAwOw0KPiArCX0NCj4gKw0KPiArCXZzX29iai0+YmFzZS5kbWFfYWRk ciA9IERNQV9BVFRSX1dSSVRFX0NPTUJJTkUgfCBETUFfQVRUUl9GT1JDRV9DT05USUdVT1VT DQo+ICsJCQkgICB8IERNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5HOw0KPiArDQo+ICsJbnJf cGFnZXMgPSB2c19vYmotPmJhc2UuYmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7DQo+ICsNCj4g Kwl2c19vYmotPnBhZ2VzID0ga3ZtYWxsb2NfYXJyYXkobnJfcGFnZXMsIHNpemVvZihzdHJ1 Y3QgcGFnZSAqKSwNCj4gKwkJCQkgICAgICAgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOw0K PiArCWlmICghdnNfb2JqLT5wYWdlcykNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4g Kwl2c19vYmotPmNvb2tpZSA9IGRtYV9hbGxvY19hdHRycyhkZXYtPmRldiwgdnNfb2JqLT5i YXNlLmJhc2Uuc2l6ZSwNCj4gKwkJCQkJICZ2c19vYmotPmJhc2UuZG1hX2FkZHIsIEdGUF9L RVJORUwsDQo+ICsJCQkJCSB2c19vYmotPmRtYV9hdHRycyk7DQo+ICsNCj4gKwlpZiAoIXZz X29iai0+Y29va2llKSB7DQo+ICsJCWRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gYWxs b2NhdGUgYnVmZmVyLlxuIik7DQoNClBsZWFzZSByZXBsYWNlIGFsbCBjYWxscyB0byBkZXZf ZXJyKCkgYnkgZHJtX2VycigpIGluIGFsbCBvZiB5b3VyIA0KcGF0Y2hlcy4gU2FtZSBmb3Ig ZGV2X2luZm8oKSwgZGV2X3dhcm4oKSwgZXRjLiAgVGhlIG9ubHkgZXhjZXB0aW9uIGlzIGlu IA0KY29kZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBEUk0gZHZpY2UsIHN1Y2ggYXMgdGhlIGRl dmljZS1wcm9iaW5nIGNvZGUuDQoNCj4gKwkJZ290byBlcnJfZnJlZTsNCj4gKwl9DQo+ICsN Cj4gKwl2c19vYmotPmlvdmEgPSB2c19vYmotPmJhc2UuZG1hX2FkZHI7DQo+ICsNCj4gKwly ZXQgPSBkbWFfZ2V0X3NndGFibGVfYXR0cnMoZGV2LT5kZXYsICZzZ3QsDQo+ICsJCQkJICAg IHZzX29iai0+Y29va2llLCB2c19vYmotPmJhc2UuZG1hX2FkZHIsDQo+ICsJCQkJICAgIHZz X29iai0+YmFzZS5iYXNlLnNpemUsIHZzX29iai0+ZG1hX2F0dHJzKTsNCj4gKwlpZiAocmV0 IDwgMCkgew0KPiArCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBzZ3RhYmxl LlxuIik7DQo+ICsJCWdvdG8gZXJyX21lbV9mcmVlOw0KPiArCX0NCj4gKw0KPiArCWlmIChk cm1fcHJpbWVfc2dfdG9fcGFnZV9hcnJheSgmc2d0LCB2c19vYmotPnBhZ2VzLCBucl9wYWdl cykpIHsNCj4gKwkJZGV2X2VycihkZXYtPmRldiwgImludmFsaWQgc2d0YWJsZS5cbiIpOw0K PiArCQlyZXQgPSAtRUlOVkFMOw0KPiArCQlnb3RvIGVycl9zZ3RfZnJlZTsNCj4gKwl9DQo+ ICsNCj4gKwlzZ19mcmVlX3RhYmxlKCZzZ3QpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICsN Cj4gK2Vycl9zZ3RfZnJlZToNCj4gKwlzZ19mcmVlX3RhYmxlKCZzZ3QpOw0KPiArZXJyX21l bV9mcmVlOg0KPiArCQlkbWFfZnJlZV9hdHRycyhkZXYtPmRldiwgdnNfb2JqLT5iYXNlLmJh c2Uuc2l6ZSwgdnNfb2JqLT5jb29raWUsDQo+ICsJCQkgICAgICAgdnNfb2JqLT5iYXNlLmRt YV9hZGRyLCB2c19vYmotPmRtYV9hdHRycyk7DQoNCkluZGVudGlvbg0KDQo+ICtlcnJfZnJl ZToNCj4gKwlrdmZyZWUodnNfb2JqLT5wYWdlcyk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19nZW1fZnJlZV9idWYoc3RydWN0IHZzX2dl bV9vYmplY3QgKnZzX29iaikNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g dnNfb2JqLT5iYXNlLmJhc2UuZGV2Ow0KPiArDQo+ICsJaWYgKCF2c19vYmotPmJhc2UuZG1h X2FkZHIpIHsNCj4gKwkJZHJtX2RiZ19rbXMoZGV2LCAiZG1hX2FkZHIgaXMgaW52YWxpZC5c biIpOw0KPiArCQlyZXR1cm47DQo+ICsJfQ0KPiArDQo+ICsJZG1hX2ZyZWVfYXR0cnMoZGV2 LT5kZXYsIHZzX29iai0+YmFzZS5iYXNlLnNpemUsIHZzX29iai0+Y29va2llLA0KPiArCQkg ICAgICAgKGRtYV9hZGRyX3QpdnNfb2JqLT5iYXNlLmRtYV9hZGRyLA0KPiArCQkgICAgICAg dnNfb2JqLT5kbWFfYXR0cnMpOw0KPiArDQo+ICsJa3ZmcmVlKHZzX29iai0+cGFnZXMpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2c19nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopDQo+ICt7DQo+ICsJc3RydWN0IHZzX2dlbV9vYmplY3QgKnZz X29iaiA9IHRvX3ZzX2dlbV9vYmplY3Qob2JqKTsNCj4gKw0KPiArCWlmIChvYmotPmltcG9y dF9hdHRhY2gpDQo+ICsJCWRybV9wcmltZV9nZW1fZGVzdHJveShvYmosIHZzX29iai0+YmFz ZS5zZ3QpOw0KPiArCWVsc2UNCj4gKwkJdnNfZ2VtX2ZyZWVfYnVmKHZzX29iaik7DQo+ICsN Cj4gKwlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKG9iaik7DQo+ICsNCj4gKwlrZnJlZSh2c19v YmopOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHZzX2dlbV9vYmplY3QgKnZzX2dl bV9hbGxvY19vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4gKwkJCQkJCSBzaXpl X3Qgc2l6ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgdnNfZ2VtX29iamVjdCAqdnNfb2JqOw0KPiAr CXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwl2 c19vYmogPSBremFsbG9jKHNpemVvZigqdnNfb2JqKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYg KCF2c19vYmopDQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPiArDQo+ICsJdnNf b2JqLT5iYXNlLmJhc2Uuc2l6ZSA9IHNpemU7DQo+ICsJb2JqID0gJnZzX29iai0+YmFzZS5i YXNlOw0KPiArDQo+ICsJcmV0ID0gZHJtX2dlbV9vYmplY3RfaW5pdChkZXYsIG9iaiwgc2l6 ZSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnJfZnJlZTsNCj4gKw0KPiArCXZzX29i ai0+YmFzZS5iYXNlLmZ1bmNzID0gJnZzX2dlbV9kZWZhdWx0X2Z1bmNzOw0KPiArDQo+ICsJ cmV0ID0gZHJtX2dlbV9jcmVhdGVfbW1hcF9vZmZzZXQob2JqKTsNCj4gKwlpZiAocmV0KSB7 DQo+ICsJCWRybV9nZW1fb2JqZWN0X3JlbGVhc2Uob2JqKTsNCj4gKwkJZ290byBlcnJfZnJl ZTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gdnNfb2JqOw0KPiArDQo+ICtlcnJfZnJlZToN Cj4gKwlrZnJlZSh2c19vYmopOw0KPiArCXJldHVybiBFUlJfUFRSKHJldCk7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgdnNfZ2VtX29iamVjdCAqdnNfZ2VtX2NyZWF0ZV9vYmpl Y3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4gKwkJCQkJCSAgc2l6ZV90IHNpemUpDQo+ ICt7DQo+ICsJc3RydWN0IHZzX2dlbV9vYmplY3QgKnZzX29iajsNCj4gKwlpbnQgcmV0Ow0K PiArDQo+ICsJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7DQo+ICsNCj4gKwl2c19vYmogPSB2 c19nZW1fYWxsb2Nfb2JqZWN0KGRldiwgc2l6ZSk7DQo+ICsJaWYgKElTX0VSUih2c19vYmop KQ0KPiArCQlyZXR1cm4gdnNfb2JqOw0KPiArDQo+ICsJcmV0ID0gdnNfZ2VtX2FsbG9jX2J1 Zih2c19vYmopOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZHJtX2dlbV9vYmplY3RfcmVsZWFz ZSgmdnNfb2JqLT5iYXNlLmJhc2UpOw0KPiArCQlrZnJlZSh2c19vYmopOw0KPiArCQlyZXR1 cm4gRVJSX1BUUihyZXQpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiB2c19vYmo7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgdnNfZ2VtX29iamVjdCAqdnNfZ2VtX2NyZWF0ZV93 aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiArCQkJCQkJICAgICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZSwNCj4gKwkJCQkJCSAgICAgICBzaXplX3Qgc2l6ZSwNCj4g KwkJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgKmhhbmRsZSkNCj4gK3sNCj4gKwlzdHJ1Y3Qg dnNfZ2VtX29iamVjdCAqdnNfb2JqOw0KPiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq Ow0KPiArCWludCByZXQ7DQo+ICsNCj4gKwl2c19vYmogPSB2c19nZW1fY3JlYXRlX29iamVj dChkZXYsIHNpemUpOw0KPiArCWlmIChJU19FUlIodnNfb2JqKSkNCj4gKwkJcmV0dXJuIHZz X29iajsNCj4gKw0KPiArCW9iaiA9ICZ2c19vYmotPmJhc2UuYmFzZTsNCj4gKw0KPiArCXJl dCA9IGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlLCBvYmosIGhhbmRsZSk7DQo+ICsNCj4g Kwlkcm1fZ2VtX29iamVjdF9wdXQob2JqKTsNCj4gKw0KPiArCWlmIChyZXQpDQo+ICsJCXJl dHVybiBFUlJfUFRSKHJldCk7DQo+ICsNCj4gKwlyZXR1cm4gdnNfb2JqOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgc3RydWN0IHNnX3RhYmxlICp2c19nZW1fcHJpbWVfZ2V0X3NnX3RhYmxl KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQ0KPiArew0KPiArCXN0cnVjdCB2c19nZW1f b2JqZWN0ICp2c19vYmogPSB0b192c19nZW1fb2JqZWN0KG9iaik7DQo+ICsNCj4gKwlyZXR1 cm4gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCB2c19vYmotPnBhZ2VzLA0KPiAr CQkJCQkgdnNfb2JqLT5iYXNlLmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUKTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGludCB2c19nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaiwgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiArew0KPiArCXN0cnVjdCB2c19n ZW1fb2JqZWN0ICp2c19vYmogPSB0b192c19nZW1fb2JqZWN0KG9iaik7DQo+ICsNCj4gKwl2 c19vYmotPmJhc2UudmFkZHIgPSB2c19vYmotPmRtYV9hdHRycyAmIERNQV9BVFRSX05PX0tF Uk5FTF9NQVBQSU5HID8NCj4gKwkJICAgICAgIHBhZ2VfYWRkcmVzcyh2c19vYmotPmNvb2tp ZSkgOiB2c19vYmotPmNvb2tpZTsNCj4gKw0KPiArCXJldHVybiBkcm1fZ2VtX2RtYV92bWFw KCZ2c19vYmotPmJhc2UsIG1hcCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgdnNfdm1fb3BzID0gew0KPiArCS5vcGVuICA9IGRy bV9nZW1fdm1fb3BlbiwNCj4gKwkuY2xvc2UgPSBkcm1fZ2VtX3ZtX2Nsb3NlLA0KPiArfTsN Cj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcyB2c19n ZW1fZGVmYXVsdF9mdW5jcyA9IHsNCj4gKwkuZnJlZSA9IHZzX2dlbV9mcmVlX29iamVjdCwN Cj4gKwkuZ2V0X3NnX3RhYmxlID0gdnNfZ2VtX3ByaW1lX2dldF9zZ190YWJsZSwNCj4gKwku dm1hcCA9IHZzX2dlbV9wcmltZV92bWFwLA0KPiArCS5tbWFwID0gZHJtX2dlbV9kbWFfb2Jq ZWN0X21tYXAsDQo+ICsJLnZtX29wcyA9ICZ2c192bV9vcHMsDQo+ICt9Ow0KPiArDQo+ICtp bnQgdnNfZ2VtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwNCj4gKwkJICAg ICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+ICsJCSAgICAgICBzdHJ1Y3QgZHJtX21v ZGVfY3JlYXRlX2R1bWIgKmFyZ3MpDQo+ICt7DQo+ICsJc3RydWN0IHZzX2RybV9wcml2YXRl ICpwcml2ID0gdG9fdnNfZGV2KGRldik7DQo+ICsJc3RydWN0IHZzX2dlbV9vYmplY3QgKnZz X29iajsNCj4gKwl1bnNpZ25lZCBpbnQgcGl0Y2ggPSBESVZfUk9VTkRfVVAoYXJncy0+d2lk dGggKiBhcmdzLT5icHAsIDgpOw0KPiArDQo+ICsJaWYgKGFyZ3MtPmJwcCAlIDEwKQ0KPiAr CQlhcmdzLT5waXRjaCA9IEFMSUdOKHBpdGNoLCBwcml2LT5waXRjaF9hbGlnbm1lbnQpOw0K PiArCWVsc2UNCj4gKwkJLyogZm9yIGNvc3R1bSAxMGJpdCBmb3JtYXQgd2l0aCBubyBiaXQg Z2FwcyAqLw0KPiArCQlhcmdzLT5waXRjaCA9IHBpdGNoOw0KPiArCWFyZ3MtPnNpemUgPSBQ QUdFX0FMSUdOKGFyZ3MtPnBpdGNoICogYXJncy0+aGVpZ2h0KTsNCj4gKwl2c19vYmogPSB2 c19nZW1fY3JlYXRlX3dpdGhfaGFuZGxlKGRldiwgZmlsZSwgYXJncy0+c2l6ZSwNCj4gKwkJ CQkJICAgJmFyZ3MtPmhhbmRsZSk7DQo+ICsJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyh2c19v YmopOw0KPiArfQ0KPiArDQo+ICtzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKg0KPiArdnNfZ2Vt X3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiArCQkJ ICAgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsDQo+ICsJCQkgICAgIHN0 cnVjdCBzZ190YWJsZSAqc2d0KQ0KPiArew0KPiArCXN0cnVjdCB2c19nZW1fb2JqZWN0ICp2 c19vYmo7DQo+ICsJaW50IG5wYWdlczsNCj4gKwlpbnQgcmV0Ow0KPiArCXN0cnVjdCBzY2F0 dGVybGlzdCAqczsNCj4gKwl1MzIgaTsNCj4gKwlkbWFfYWRkcl90IGV4cGVjdGVkOw0KPiAr CXNpemVfdCBzaXplID0gYXR0YWNoLT5kbWFidWYtPnNpemU7DQo+ICsNCj4gKwlzaXplID0g UEFHRV9BTElHTihzaXplKTsNCj4gKw0KPiArCXZzX29iaiA9IHZzX2dlbV9hbGxvY19vYmpl Y3QoZGV2LCBzaXplKTsNCj4gKwlpZiAoSVNfRVJSKHZzX29iaikpDQo+ICsJCXJldHVybiBF UlJfQ0FTVCh2c19vYmopOw0KPiArDQo+ICsJZXhwZWN0ZWQgPSBzZ19kbWFfYWRkcmVzcyhz Z3QtPnNnbCk7DQo+ICsJZm9yX2VhY2hfc2coc2d0LT5zZ2wsIHMsIHNndC0+bmVudHMsIGkp IHsNCj4gKwkJaWYgKHNnX2RtYV9hZGRyZXNzKHMpICE9IGV4cGVjdGVkKSB7DQo+ICsJCQlE Uk1fRVJST1IoInNnX3RhYmxlIGlzIG5vdCBjb250aWd1b3VzIik7DQo+ICsJCQlyZXQgPSAt RUlOVkFMOw0KPiArCQkJZ290byBlcnI7DQo+ICsJCX0NCj4gKwkJaWYgKHNnX2RtYV9sZW4o cykgJiAoUEFHRV9TSVpFIC0gMSkpIHsNCj4gKwkJCXJldCA9IC1FSU5WQUw7DQo+ICsJCQln b3RvIGVycjsNCj4gKwkJfQ0KPiArCQlpZiAoaSA9PSAwKQ0KPiArCQkJdnNfb2JqLT5pb3Zh ID0gc2dfZG1hX2FkZHJlc3Mocyk7DQo+ICsJCWV4cGVjdGVkID0gc2dfZG1hX2FkZHJlc3Mo cykgKyBzZ19kbWFfbGVuKHMpOw0KPiArCX0NCj4gKw0KPiArCXZzX29iai0+YmFzZS5kbWFf YWRkciA9IHNnX2RtYV9hZGRyZXNzKHNndC0+c2dsKTsNCj4gKw0KPiArCW5wYWdlcyA9IHZz X29iai0+YmFzZS5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsNCj4gKwl2c19vYmotPnBhZ2Vz ID0ga3ZtYWxsb2NfYXJyYXkobnBhZ2VzLCBzaXplb2Yoc3RydWN0IHBhZ2UgKiksDQo+ICsJ CQkJICAgICAgIEdGUF9LRVJORUwpOw0KPiArCWlmICghdnNfb2JqLT5wYWdlcykgew0KPiAr CQlyZXQgPSAtRU5PTUVNOw0KPiArCQlnb3RvIGVycjsNCj4gKwl9DQo+ICsNCj4gKwlyZXQg PSBkcm1fcHJpbWVfc2dfdG9fcGFnZV9hcnJheShzZ3QsIHZzX29iai0+cGFnZXMsIG5wYWdl cyk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnJfZnJlZV9wYWdlOw0KPiArDQo+ICsJ dnNfb2JqLT5iYXNlLnNndCA9IHNndDsNCj4gKw0KPiArCXJldHVybiAmdnNfb2JqLT5iYXNl LmJhc2U7DQo+ICsNCj4gK2Vycl9mcmVlX3BhZ2U6DQo+ICsJa3ZmcmVlKHZzX29iai0+cGFn ZXMpOw0KPiArZXJyOg0KPiArCXZzX2dlbV9mcmVlX29iamVjdCgmdnNfb2JqLT5iYXNlLmJh c2UpOw0KPiArDQo+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4gK30NCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19nZW0uaCBiL2RyaXZlcnMvZ3B1 L2RybS92ZXJpc2lsaWNvbi92c19nZW0uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAuLmQ5ZmY2ZDIzYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19nZW0uaA0KPiBAQCAtMCwwICsxLDUwIEBA DQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiArLyoNCj4g KyAqIENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2lsaWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4N Cj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9fVlNfR0VNX0hfXw0KPiArI2RlZmluZSBfX1ZT X0dFTV9IX18NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4NCj4gKw0KPiAr I2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZG1h X2hlbHBlci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbWUuaD4NCj4gKw0KPiArI2lu Y2x1ZGUgInZzX2Rydi5oIg0KPiArLyoNCj4gKyAqDQo+ICsgKiBAYmFzZTogZHJtX2dlbV9k bWFfb2JqZWN0Lg0KPiArICogQGNvb2tpZTogY29va2llIHJldHVybmVkIGJ5IGRtYV9hbGxv Y19hdHRycw0KPiArICoJLSBub3Qga2VybmVsIHZpcnR1YWwgYWRkcmVzcyB3aXRoIERNQV9B VFRSX05PX0tFUk5FTF9NQVBQSU5HDQo+ICsgKiBAZG1hX2F0dHJzOiBhdHRyaWJ1dGUgZm9y IERNQSBBUEkNCj4gKyAqIEBnZXRfcGFnZXM6IGZsYWcgZm9yIG1hbnVhbGx5IGFwcGx5aW5n IGZvciBub24tY29udGlndW91cyBtZW1vcnkuDQo+ICsgKiBAcGFnZXM6IEFycmF5IG9mIGJh Y2tpbmcgcGFnZXMuDQo+ICsgKg0KPiArICovDQo+ICtzdHJ1Y3QgdnNfZ2VtX29iamVjdCB7 DQo+ICsJc3RydWN0IGRybV9nZW1fZG1hX29iamVjdAliYXNlOw0KDQpZb3UgYXJlIHJlcGxh Y2luZyBhbG1vc3QgYWxsIG9mIHRoZSBHRU0gRE1BIG9iamVjdCdzIGhlbHBlciBjb2RlLg0K DQpFaXRoZXIgaW5oZXJpdCBkaXJlY3RseSBmcm9tIGRybV9nZW1fb2JqZWN0IGRyb3AgdGhl IGRlcGVuZGVuY3kgDQplbnRpcmVseSwgb3IgeW91IGNvdWxkIHRyeSB0byBmaXQgeW91ciBj b2RlIGludG8gR0VNIERNQSBhcyB3ZWxsLg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+ ICsJdm9pZAkJCSpjb29raWU7DQo+ICsJdTMyCQkJCWlvdmE7DQo+ICsJdW5zaWduZWQgbG9u ZwlkbWFfYXR0cnM7DQo+ICsJYm9vbAkJCWdldF9wYWdlczsNCj4gKwlzdHJ1Y3QgcGFnZQkJ KipwYWdlczsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHZzX2dlbV9v YmplY3QgKg0KPiArdG9fdnNfZ2VtX29iamVjdChjb25zdCBzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmJvKQ0KPiArew0KPiArCXJldHVybiBjb250YWluZXJfb2YodG9fZHJtX2dlbV9kbWFf b2JqKGJvKSwgc3RydWN0IHZzX2dlbV9vYmplY3QsIGJhc2UpOw0KPiArfQ0KPiArDQo+ICtp bnQgdnNfZ2VtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LA0KPiAr CQkgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSwNCj4gKwkJICAgICAgIHN0cnVjdCBk cm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7DQo+ICsNCj4gK3N0cnVjdCBkcm1fZ2VtX29i amVjdCAqDQo+ICt2c19nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsDQo+ICsJCQkgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFj aCwNCj4gKwkJCSAgICAgc3RydWN0IHNnX3RhYmxlICpzZ3QpOw0KPiArDQo+ICsjZW5kaWYg LyogX19WU19HRU1fSF9fICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vdnNfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3Zz X21vZGVzZXQuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAu LmNkMGJkZjUzMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92 ZXJpc2lsaWNvbi92c19tb2Rlc2V0LmMNCj4gQEAgLTAsMCArMSw5MiBAQA0KPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMjMgVmVyaVNpbGljb24gSG9sZGluZ3MgQ28uLCBMdGQuDQo+ICsgKi8NCj4gKw0K PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3ZlcnNp b24uaD4NCj4gKw0KPiArI2luY2x1ZGUgPGRybS9kcm1fZGFtYWdlX2hlbHBlci5oPg0KPiAr I2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9j cnRjLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPg0KPiArI2luY2x1 ZGUgPGRybS9kcm1fZm91cmNjLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mcmFtZWJ1ZmZl ci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1f ZG1hX2hlbHBlci5oPg0KPiArDQo+ICsjaW5jbHVkZSAidnNfbW9kZXNldC5oIg0KPiArI2lu Y2x1ZGUgInZzX2dlbS5oIg0KPiArDQo+ICsjZGVmaW5lIGZvdXJjY19tb2RfdnNfZ2V0X3R5 cGUodmFsKSBcDQo+ICsJKCgodmFsKSAmIERSTV9GT1JNQVRfTU9EX1ZTX1RZUEVfTUFTSykg Pj4gNTQpDQo+ICsNCj4gK3N0cnVjdCB2c19nZW1fb2JqZWN0ICp2c19mYl9nZXRfZ2VtX29i aihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwNCj4gKwkJCQkJdW5zaWduZWQgY2hhciBw bGFuZSkNCj4gK3sNCj4gKwlpZiAocGxhbmUgPiBEUk1fRk9STUFUX01BWF9QTEFORVMpDQo+ ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJcmV0dXJuIHRvX3ZzX2dlbV9vYmplY3QoZmIt Pm9ialtwbGFuZV0pOw0KDQpQbGVhc2UgdXNlDQoNCg0KCWRybV9nZW1fb2JqZWN0ICpnZW0g PSBkcm1fZ2VtX2ZiX2dldF9vYmooZmIscGxhbmUpDQoJaWYgKCFnZW0pDQoJCXJldHVybiBO VUxMDQoJcmV0dXJuIHRvX3ZzX2dlbV9vYmplY3QoZ2VtKTsNCg0KVGhpcyB3aWxsIGRvIHRo ZSByaWdodCB0aGluZywgcHJpbnQgdGhlIGFwcHJvcHJpYXRlIHdhcm5pbmdzIGFuZCBoaWRl IA0KdGhlIGRldGFpbHMgb2YgdGhlIGltcGxlbWVudGF0aW9uLg0KDQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIHZzX2Zvcm1hdHNbXSA9IHsN Cj4gKwl7LmZvcm1hdCA9IERSTV9GT1JNQVRfTlYxMiwgLmRlcHRoID0gMCwgLm51bV9wbGFu ZXMgPSAyLCAuY2hhcl9wZXJfYmxvY2sgPSB7IDIwLCA0MCwgMCB9LA0KPiArCSAuYmxvY2tf dyA9IHsgNCwgNCwgMCB9LCAuYmxvY2tfaCA9IHsgNCwgNCwgMCB9LCAuaHN1YiA9IDIsIC52 c3ViID0gMiwgLmlzX3l1diA9IHRydWV9LA0KPiArCXsuZm9ybWF0ID0gRFJNX0ZPUk1BVF9Z VVY0NDQsIC5kZXB0aCA9IDAsIC5udW1fcGxhbmVzID0gMywgLmNoYXJfcGVyX2Jsb2NrID0g eyAyMCwgMjAsIDIwIH0sDQo+ICsJIC5ibG9ja193ID0geyA0LCA0LCA0IH0sIC5ibG9ja19o ID0geyA0LCA0LCA0IH0sIC5oc3ViID0gMSwgLnZzdWIgPSAxLCAuaXNfeXV2ID0gdHJ1ZX0s DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAq DQo+ICt2c19sb29rdXBfZm9ybWF0X2luZm8oY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5m byBmb3JtYXRzW10sDQo+ICsJCSAgICAgIGludCBudW1fZm9ybWF0cywgdTMyIGZvcm1hdCkN Cj4gK3sNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBudW1fZm9ybWF0 czsgaSsrKSB7DQo+ICsJCWlmIChmb3JtYXRzW2ldLmZvcm1hdCA9PSBmb3JtYXQpDQo+ICsJ CQlyZXR1cm4gJmZvcm1hdHNbaV07DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIE5VTEw7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICoNCj4g K3ZzX2dldF9mb3JtYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21k KQ0KPiArew0KPiArCWlmIChmb3VyY2NfbW9kX3ZzX2dldF90eXBlKGNtZC0+bW9kaWZpZXJb MF0pID09DQo+ICsJCURSTV9GT1JNQVRfTU9EX1ZTX1RZUEVfQ1VTVE9NXzEwQklUKQ0KPiAr CQlyZXR1cm4gdnNfbG9va3VwX2Zvcm1hdF9pbmZvKHZzX2Zvcm1hdHMsIEFSUkFZX1NJWkUo dnNfZm9ybWF0cyksDQo+ICsJCQkJCQkJCQkgY21kLT5waXhlbF9mb3JtYXQpOw0KPiArCWVs c2UNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIHZzX21vZGVfY29uZmlnX2Z1bmNzID0gew0KPiAr CS5mYl9jcmVhdGUJCQkgPSBkcm1fZ2VtX2ZiX2NyZWF0ZSwNCj4gKwkuZ2V0X2Zvcm1hdF9p bmZvCSA9IHZzX2dldF9mb3JtYXRfaW5mbywNCg0KPiArCS5vdXRwdXRfcG9sbF9jaGFuZ2Vk ID0gZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkLA0KDQpBbm90aGVyIGRlcHJl Y2F0ZWQgY2FsbGJhY2suIERvbid0IGFzc2lnbiB0byBpdC4gUHJvYmUgaGVscGVycyB3aWxs IGRvIA0KdGhlIHJpZ2h0IHRoaW5nLg0KDQo+ICsJLmF0b21pY19jaGVjawkJID0gZHJtX2F0 b21pY19oZWxwZXJfY2hlY2ssDQo+ICsJLmF0b21pY19jb21taXQJCSA9IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdCwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX21vZGVf Y29uZmlnX2hlbHBlcl9mdW5jcyB2c19tb2RlX2NvbmZpZ19oZWxwZXJzID0gew0KPiArCS5h dG9taWNfY29tbWl0X3RhaWwgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfdGFpbF9ycG0s DQo+ICt9Ow0KPiArDQo+ICt2b2lkIHZzX21vZGVfY29uZmlnX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikNCj4gK3sNCj4gKwlkcm1fbW9kZV9jb25maWdfaW5pdChkZXYpOw0KPiAr CWRldi0+bW9kZV9jb25maWcuZmJfbW9kaWZpZXJzX25vdF9zdXBwb3J0ZWQgPSBmYWxzZTsN Cj4gKw0KPiArCWlmIChkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9PSAwIHx8DQo+ICsJ ICAgIGRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9PSAwKSB7DQo+ICsJCWRldi0+bW9k ZV9jb25maWcubWluX3dpZHRoICA9IDA7DQo+ICsJCWRldi0+bW9kZV9jb25maWcubWluX2hl aWdodCA9IDA7DQo+ICsJCWRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoICA9IDQwOTY7DQo+ ICsJCWRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDQwOTY7DQo+ICsJfQ0KPiArCWRl di0+bW9kZV9jb25maWcuZnVuY3MgPSAmdnNfbW9kZV9jb25maWdfZnVuY3M7DQo+ICsJZGV2 LT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZSA9ICZ2c19tb2RlX2NvbmZpZ19oZWxwZXJz Ow0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3Zz X21vZGVzZXQuaCBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19tb2Rlc2V0LmgN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwLi4yZTFmMDRhOGEN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24v dnNfbW9kZXNldC5oDQo+IEBAIC0wLDAgKzEsMTMgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDIw IFZlcmlTaWxpY29uIEhvbGRpbmdzIENvLiwgTHRkLg0KPiArICovDQo+ICsNCj4gKyNpZm5k ZWYgX19WU19GQl9IX18NCj4gKyNkZWZpbmUgX19WU19GQl9IX18NCj4gKw0KPiArc3RydWN0 IHZzX2dlbV9vYmplY3QgKnZzX2ZiX2dldF9nZW1fb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiLA0KPiArCQkJCQl1bnNpZ25lZCBjaGFyIHBsYW5lKTsNCj4gKw0KPiArdm9pZCB2 c19tb2RlX2NvbmZpZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOw0KPiArI2VuZGlm IC8qIF9fVlNfRkJfSF9fICovDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL3Zz X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS92c19kcm0uaA0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAuLjk2YjdmYzk1ZA0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vdnNfZHJtLmgNCj4gQEAgLTAsMCArMSw1MCBAQA0K PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lz Y2FsbC1ub3RlICovDQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDIwIFZlcmlTaWxp Y29uIEhvbGRpbmdzIENvLiwgTHRkLg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX19WU19E Uk1fSF9fDQo+ICsjZGVmaW5lIF9fVlNfRFJNX0hfXw0KPiArDQo+ICsjaW5jbHVkZSAiZHJt LmgiDQo+ICsNCj4gK2VudW0gZHJtX3ZzX2RlZ2FtbWFfbW9kZSB7DQo+ICsJVlNfREVHQU1N QV9ESVNBQkxFID0gMCwNCj4gKwlWU19ERUdBTU1BX0JUNzA5ID0gMSwNCj4gKwlWU19ERUdB TU1BX0JUMjAyMCA9IDIsDQo+ICt9Ow0KPiArDQo+ICtlbnVtIGRybV92c19zeW5jX2RjX21v ZGUgew0KPiArCVZTX1NJTkdMRV9EQyA9IDAsDQo+ICsJVlNfTVVMVElfRENfUFJJTUFSWSA9 IDEsDQo+ICsJVlNfTVVMVElfRENfU0VDT05EQVJZID0gMiwNCj4gK307DQo+ICsNCj4gK2Vu dW0gZHJtX3ZzX21tdV9wcmVmZXRjaF9tb2RlIHsNCj4gKwlWU19NTVVfUFJFRkVUQ0hfRElT QUJMRSA9IDAsDQo+ICsJVlNfTU1VX1BSRUZFVENIX0VOQUJMRSA9IDEsDQo+ICt9Ow0KPiAr DQo+ICtzdHJ1Y3QgZHJtX3ZzX3dhdGVybWFyayB7DQo+ICsJX191MzIgd2F0ZXJtYXJrOw0K PiArCV9fdTggcW9zX2xvdzsNCj4gKwlfX3U4IHFvc19oaWdoOw0KPiArfTsNCj4gKw0KPiAr c3RydWN0IGRybV92c19jb2xvcl9tZ210IHsNCj4gKwlfX3UzMiBjb2xvcmtleTsNCj4gKwlf X3UzMiBjb2xvcmtleV9oaWdoOw0KPiArCV9fdTMyIGNsZWFyX3ZhbHVlOw0KPiArCWJvb2wg IGNsZWFyX2VuYWJsZTsNCj4gKwlib29sICB0cmFuc3BhcmVuY3k7DQo+ICt9Ow0KPiArDQo+ ICtzdHJ1Y3QgZHJtX3ZzX3JvaSB7DQo+ICsJYm9vbCBlbmFibGU7DQo+ICsJX191MTYgcm9p X3g7DQo+ICsJX191MTYgcm9pX3k7DQo+ICsJX191MTYgcm9pX3c7DQo+ICsJX191MTYgcm9p X2g7DQo+ICt9Ow0KPiArDQo+ICsjZW5kaWYgLyogX19WU19EUk1fSF9fICovDQoNCi0tIA0K VGhvbWFzIFppbW1lcm1hbm4NCkdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINClNVU0UgU29m dHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSA0KRnJhbmtlbnN0cmFzc2UgMTQ2LCA5MDQ2 MSBOdWVybmJlcmcsIEdlcm1hbnkNCkdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5k cmV3IE1jRG9uYWxkLCBCb3VkaWVuIE1vZXJtYW4NCkhSQiAzNjgwOSAoQUcgTnVlcm5iZXJn KQ0K --------------GxCSMTY72PP1Spr33lpmHC9P-- --------------l00otiy8C2dmthZBWYwOyGss Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmT4hSkFAwAAAAAACgkQlh/E3EQov+Aj iQ/5AZA7rp8yp646MYv2KwKwLbgY1Xfiq+vIpR94I7RrDMoB2Uct6ppfeEPW+77aSlDTwFp7ykwB ESf9lcMRwxYfjCa3l+JxhS/bh8jkT3p4KBZ/evvZD0Cv1/svSqxzVc0idxWbinX5s36NEs1IYiIQ haA48pnfI97s6b6/OYMnhTITzta3l8YpDqwiMg4VNOskO7qxHqCD2Mc0u9bAVQ/1ynfJCWkdd806 ikGjU2uTnIT1jtBvW/jnD18cPIIBYP2PytU+QpOTlql6ZCdJeHFGA47C2kcU6nc7ZrFh4jtw51se PaUhD8vHvGOT+uhhXnIN41mzt4FJO26s+g90dW0BqqQO0YTidbSq9O1GzJ6uXyy0jyNFnjK0CDRG QkgkGZW7DYMcg+4fe8pFc1UrhH1bVu8f0r8JYG8MesnkqEWLV3MaZsUbdY9I834BL1Fwg0UzRYL1 1xjyO+HRn9n0lbzChQ+Bs/UzH7XHDWw+VD11gvDNMZweulMb4TsI3CpaoYs7l9WGRWbae+p2jm3g 4vSEdXQ1sSaigC/r50uH/B96BMzJxd48A6VwvPvjFGu7uYJHwikx1eUTKkHgIjktYqtWgxFTDF8w EXI0t2ToqtJ9daonN+ZhjU6dH2+HbQoKEh59zt2lMHqvyombGmlgtGn5Bqf/NTEVMgHmUoYuGgQY EqA= =MXuU -----END PGP SIGNATURE----- --------------l00otiy8C2dmthZBWYwOyGss--