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 phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 68338C433EF for ; Sun, 3 Jul 2022 08:48:11 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 33DAA83E60; Sun, 3 Jul 2022 10:48:09 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=aspeedtech.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=aspeedtech.com header.i=@aspeedtech.com header.b="WBP0ekt/"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2F14983E38; Sun, 3 Jul 2022 10:48:07 +0200 (CEST) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2111.outbound.protection.outlook.com [40.107.255.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id BB18683E60 for ; Sun, 3 Jul 2022 10:47:56 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=aspeedtech.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=chin-ting_kuo@aspeedtech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZJC3BcCOLLeLGv5l9bZPzA/ZFrBZsvFv+BeLUCcOsYoimR5adGkjHdPp7O3qjyKRVWRxOztWL3caUR0+4B9J3a5WypX2VHY7Ooj/C4ATSOrz/lyaECBdtYKRhEyCG+hHRDqpIlx8Q9t7m6/cx/9GbY5KM63u8rNBxmHch20NreRR80JPtLMgalESQ4EWZgVTKIUV6DmBhBqFqwVAL7PGWZoTjfNvwWcnRNoKMwwH0p6vsbeo/O31HznvmflXcmhW/LENEZehwc6Qhb4ZexNWtuz4JTHavdcLMVocTmFLTz7GxMKJ7ZKXobN0xY/AZxRgzQyDuobZAhw+mXXJsZ+3wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bcm6q3pXTI5M68tLouJGjdMGTCCNUf2rvzXXcC0gWRE=; b=PxwD88WLERQNsBggtrKj0mPAW7XhkEcc6fF+el21wnKC0LurdR9O2ypUw7IvJJLFFD+yoIheHtbZ4+tKYoL2zYZRkjn312nelbQ4uItXfOqAgBI8+N4TY2WNRxOuYyoEINfxZPr3i0OIx4J9gCR1WWXzvgZ9YkwZ796VQPwbDWz8eXfp+vpF2ZMCdImloUdKY0UYTRjfBZKG7rZdoC8PI0ol5HWymQQTL5lfMVzGPVPdMh9GUyewvK21jn10kNxexPZJvYWfurRc9ApfcRJk0x/UBK9jziMA2QUHrJIgx5ewn9RMKNuNtiQ7G7fAmF5NXCrgx2ZY6BbznkDUY2jEHg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bcm6q3pXTI5M68tLouJGjdMGTCCNUf2rvzXXcC0gWRE=; b=WBP0ekt/cOjre1LisSN3F+KJg++AfZvDCD3kY5ny2zQMo2Ls6mLO44lYWos7p+Zvm/2bQu7vJKw9SqwZ5X2y2YnBOJL8E5i467/5+KyXiyHX8nUITMHr4lSqc2X25hfTqnGJpT18prUF3GHjXi12U9d7DMV+emfykWQGQb6dEhOyy2MhsBugw+yIl1epYzTJ4LBbgYF6KqgeNqdR9I8X5iV7iNNcxmEOyvijf4aTdaiWo/PwzS5DmyxnpSjYY1vPTA2hB1oRb4Md/nY7I5M2st2egG74h2kle32MN1T0HOPPz+iKyHJUH2GJvKPP/NJKAnqHQLYV9d4BxD1i9Q8YZg== Received: from HK0PR06MB2786.apcprd06.prod.outlook.com (2603:1096:203:5b::22) by SI2PR06MB3882.apcprd06.prod.outlook.com (2603:1096:4:ea::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sun, 3 Jul 2022 08:47:49 +0000 Received: from HK0PR06MB2786.apcprd06.prod.outlook.com ([fe80::214b:cb5f:d74a:9828]) by HK0PR06MB2786.apcprd06.prod.outlook.com ([fe80::214b:cb5f:d74a:9828%7]) with mapi id 15.20.5395.015; Sun, 3 Jul 2022 08:47:48 +0000 From: Chin-Ting Kuo To: =?utf-8?B?Q8OpZHJpYyBMZSBHb2F0ZXI=?= , ChiaWei Wang , "lukma@denx.de" , "seanga2@gmail.com" , Ryan Chen , BMC-SW , "jagan@amarulasolutions.com" , "vigneshr@ti.com" , "u-boot@lists.denx.de" , "p.yadav@ti.com" Subject: RE: [v4 03/12] spi: aspeed: Add ASPEED SPI controller driver Thread-Topic: [v4 03/12] spi: aspeed: Add ASPEED SPI controller driver Thread-Index: AQHYbzMdRF5AjlbrgkqU5IauBzvLh61pe2oAgAMTyuA= Date: Sun, 3 Jul 2022 08:47:48 +0000 Message-ID: References: <20220524055650.1115899-1-chin-ting_kuo@aspeedtech.com> <20220524055650.1115899-4-chin-ting_kuo@aspeedtech.com> <47e22a24-5bae-c151-2a31-36fe803c33f2@kaod.org> In-Reply-To: <47e22a24-5bae-c151-2a31-36fe803c33f2@kaod.org> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=aspeedtech.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6eb9021c-ea3b-46f8-44c8-08da5cd0b518 x-ms-traffictypediagnostic: SI2PR06MB3882:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JQSJa6yJvfFO9Bs1vkJ3zx0rhsfgiX9ojBj1ddYwz2H9Agb/OG/MXWQ1Vzbt7nnez3RtfGYRKpctoc8BdntBpDGi0gMMX0r4cU6gYUw9Oiz2xrPIz49TJGI/qV4R1DEk26ZpzN7d1QoUOzfsC3rOnmf7A/sHbYg9UNVagtFCBR0CZvp7Dosp37rdowHKC5KV4ws6KpLuT17y6ZvFFDdSRT5UvAD0JZCFeKAKcZW9Bc797zYZ3ZbJSju2DZ+j8NnLVUFFQI1wFzqK8y9j8MTSATgd6vCZrDYaO5mNrzB0qGm6RzHmFq2b1X7gJxYLcLboFRO33Jz3FhzML9peVTPqgI+pXg0gUsl8cYW5VDoofn+h3seNPpVnzJc6mnZmkn8ATY5PGvy3yo6gUw0CvJsURZ+gqnOT6hG/W4IQs2NT+fuIf4HvqGb7s3VX0uSGoiZ2/H6wH6ZVQOLuZcMYOs+K32BkOuOxL6os1MppFo13EVzmUv1s0lvXN8whnp9PHv0SyM6wBSUlo6Bu9oOuK1JrgBig1n1Bn95bTbwRo9rVrOKB2S6zvifVIs2pyvyDb8nOP+udxUfL8TOFHTl5EriWaUEAzqIU7LXljCpEkoDpO4hV2NsazKeSBAbA9nOYELRJNjQfeaiOvMNfRlMEM4qDRBRefZT5HESiOCnb4hVSaKTdYdxgNYllQCSHyza5UgT2lxDWTDyyHQXgfkT5m8BmO4lxeBZa3YfXSsE+0vQZdc7y0rvUyqESPreyssFVlBv8e6b1LZ1A5zb725QYPy38TjitzXc7LQ2RjFg4iDD1W9OZWBdf0dfBR+nmomcRlkvbBauVJQ1XTvEu+/NV79CWPQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:HK0PR06MB2786.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(39830400003)(346002)(376002)(136003)(396003)(366004)(86362001)(38100700002)(53546011)(64756008)(41300700001)(66446008)(66476007)(66556008)(8676002)(66946007)(76116006)(38070700005)(316002)(110136005)(66574015)(8936002)(2906002)(83380400001)(30864003)(5660300002)(26005)(186003)(52536014)(122000001)(7696005)(6506007)(55016003)(478600001)(9686003)(33656002)(71200400001)(921005)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z0MwSkQ0RDJiNXFtT3A5eGpIOG5uRnRndUZpTThyVWx6K2dscUhuSXdWOHNY?= =?utf-8?B?czYybWVzRWQ2VDgzdjhhOC9QZWhhNDhQUHhyUThYSk5DbGFKUks3cDhGYzlR?= =?utf-8?B?OUlkOXBLenN0bVRBQ0JWNFo5bkY4c1Q4aTN5M0ZWS1prZzBxYml5Z3loSjh0?= =?utf-8?B?SmR5RFJzZXNWMlJtU2w2dHJ4ZUhXR0ZTQTFXTlRBWFRjZit4b2NaUEl0SDNL?= =?utf-8?B?MkRvNGdENHNha3ZsS1pldlFGWURaYnA5L01aVE9sNHg3eEphTU1MVGw2U2dD?= =?utf-8?B?SmhuTVpDNkllNTF2MEkyUEdGNjRjcTRtbHRDd2lkSWI0S2dSa09td01XdCtw?= =?utf-8?B?Z2k2dE9LOC95L2JEd1c1dDFGck5lOEVCb1hEYWxlZVZsVXZ5clRISU00cC9h?= =?utf-8?B?My9wQWxibncxUm5ENDdMT2FVQXRPZkdXY2NFdSsvMWxHOWZsaG0vWUJsZnhD?= =?utf-8?B?Y3k4eGtvd1pwUmlSK1N0VHJkZGZLMFAyYjZtaEhVMkJQUFhCRmRXdHY0UENP?= =?utf-8?B?RER1Q0lWeVptSUpSRTJ2NTRKLzJRTS9VVTI0Nk4rTEtFNUFJdkJEdmV4cVFG?= =?utf-8?B?QjNmbWx3RWo0VkVEa3JTSHZZd2h0M3ZCczFDQmxSbGRmQXJBZzQwQUZNZHRx?= =?utf-8?B?eVUydmRPWlZvQ3BmTDNtaG1kY0U2eDBiYTRNZ09UM01HSGRpYkx6TTFuREFY?= =?utf-8?B?d0xYMkFOZnR1ZjFaMjdwbEpOM2pLbk1vWTgwOFE5T0pudEJ1UnpZcnBqRVJO?= =?utf-8?B?djZzdWJ2d1F5TlRFNHNrd1pyVkJOcjllbmhrbVducHpZZDVVazJnQmN5STg5?= =?utf-8?B?a0ZCSHJ4ZVpaQjY2cXVVbVNRcG4yQVlEaVpBSlUreXg5cFFiazIvODRmWVAy?= =?utf-8?B?bGZCa1QyMThrYnVic291bzcrd0RubFlmWmVvcGdZRHAzcVJTSm5nR2RVRmY0?= =?utf-8?B?a1JxRkdMYXNObU02bmdVZENxaW85c2YrekV6WjJIM2w2aGZpT1ZTVDZwREpt?= =?utf-8?B?NlFDQlF6SHdOWEt3MmFBRnFteG42SjdqRysrQ05Dd0UxOGFTdjZEM1VUeTlC?= =?utf-8?B?VWo4a3pnS0VRaTBJdFRyaDNaU0ZaZThmdXdIYWdUMExQeElKYWFGZ3RZb3hn?= =?utf-8?B?aUV3VnA4V1VsMWZHYzFMQ0ZRYVExVUUvdkE3aFczSFIydmszMzF1cUNXZkNx?= =?utf-8?B?dzI1ZFVRN2NsaU1TcHRBVWlPU1BMWEV1ZEJ1b29GU0hCYk5rclp1YUJ3YkN1?= =?utf-8?B?QUFVZGNLSlNhQkJOMnc2QTI5WkpiSDhLcnp3K3hyRkVpWDRJcWFIT1N6cWxq?= =?utf-8?B?M20rc3dxM2FSZ2lpVjk2T040UVRsbk0xVTFJYU5XZzN4UDBsbzZ6Vm84K2M1?= =?utf-8?B?dzZaaDBRNFhBMG5ZcXI4QlVSR3EwVEdoTyszY1R3R1ZhbDhwV2tqNElnMmc4?= =?utf-8?B?MmJ0ZmwvL0VlV2VEM1ZuRjVGL2JyL2ZPbWxDZlhCckxBTXRVL3AxQWl3V01Z?= =?utf-8?B?b2F2UXJJb3U1eEgzTlp1WXlaS0dMUE1COEpRdkZBcWtyaHEvWWFzZEw0ZW5t?= =?utf-8?B?UlU4TCt0NjAvNjZPUjZvLzdNSlBHR3ExYThKZDVnMVVTS2JvZnNzNU1MNkVK?= =?utf-8?B?dXk4RkZlcUhqeXVxY1pacG9JMm9JSW9DSGs1TUM1TkltcHJJWFg1dXpLdVZo?= =?utf-8?B?L2tadnphRkRlTGJhaFBqWk0vbzh0MjBKcEJWalVaKytsNUVQYmQ5NXNnYnFM?= =?utf-8?B?dVpjNy9RZUQrMmk4a24vTlFITGQ0aGtnTkphVnRvZit3MHFoNWh0UStuMy9x?= =?utf-8?B?REFOc3VNeTgzbEtrVGN2cDBobkY0WWdVOTNIcC84ZENTcmdYREVEMC9VNVQv?= =?utf-8?B?SjU3VVkzMFplbTN0MDhGSmhSNDVEWDNxUHhPa1J0Tkx1UDhwMEY1TjRMS3dx?= =?utf-8?B?RC9YcmJFN3RsMjZVM1pDYm9xNWoxK0xKRytISlFGc2RGa1ZVL1pGK3JZMlFX?= =?utf-8?B?c0xzdnNodlZEMlZZVUpTNmZPZUQzZWx2RU96SFBxR1BrbSt2ci9JS1hvSFQv?= =?utf-8?B?VURxMkZvOGljQ1oraHBHNkZaT3RtbUdUN1lkeVZOcHNuL0FXSi9RcGlPQW1N?= =?utf-8?B?ajBoaHRqWFlYSTdpcFBJM2o1WmNwalAwUVRwNDdES0RObVg1ZUh5SStDVDZy?= =?utf-8?B?M0E9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: HK0PR06MB2786.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6eb9021c-ea3b-46f8-44c8-08da5cd0b518 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jul 2022 08:47:48.6941 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UDWMtq/XAiK0gX+AckTDHeMzmapjPof62S9SKKdDC3B3vB19W4JWqhVmKsspixuvZ5x8R5NKOnXhe37Qite03KwUUSz+pw1Gh4lJdrA8aBQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR06MB3882 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean SGkgQ8OpZHJpYywNCg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3Lg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAa2FvZC5vcmc+DQo+ IFNlbnQ6IEZyaWRheSwgSnVseSAxLCAyMDIyIDU6MjggUE0NCj4gVG86IENoaW4tVGluZyBLdW8g PGNoaW4tdGluZ19rdW9AYXNwZWVkdGVjaC5jb20+OyBDaGlhV2VpIFdhbmcNCj4gPGNoaWF3ZWlf d2FuZ0Bhc3BlZWR0ZWNoLmNvbT47IGx1a21hQGRlbnguZGU7IHNlYW5nYTJAZ21haWwuY29tOw0K PiBSeWFuIENoZW4gPHJ5YW5fY2hlbkBhc3BlZWR0ZWNoLmNvbT47IEJNQy1TVw0KPiA8Qk1DLVNX QGFzcGVlZHRlY2guY29tPjsgamFnYW5AYW1hcnVsYXNvbHV0aW9ucy5jb207IHZpZ25lc2hyQHRp LmNvbTsNCj4gdS1ib290QGxpc3RzLmRlbnguZGU7IHAueWFkYXZAdGkuY29tDQo+IFN1YmplY3Q6 IFJlOiBbdjQgMDMvMTJdIHNwaTogYXNwZWVkOiBBZGQgQVNQRUVEIFNQSSBjb250cm9sbGVyIGRy aXZlcg0KPiANCj4gSGVsbG8gQ2hpbi1UaW5nLA0KPiANCj4gT24gNS8yNC8yMiAwNzo1NiwgQ2hp bi1UaW5nIEt1byB3cm90ZToNCj4gPiBBZGQgQVNQRUVEIEJNQyBGTUMvU1BJIG1lbW9yeSBjb250 cm9sbGVyIGRyaXZlciB3aXRoIHNwaS1tZW0gaW50ZXJmYWNlDQo+ID4gZm9yIEFTVDI1MDAgYW5k IEFTVDI2MDAgcGxhdGZvcm0uDQo+ID4NCj4gPiBUaGVyZSBhcmUgdGhyZWUgU1BJIG1lbW9yeSBj b250cm9sbGVycyBlbWJlZGRlZCBpbiBhbiBBU1BFRUQgU29DLg0KPiA+IC0gRk1DOiBOYW1lZCBh cyBGaXJtd2FyZSBNZW1vcnkgQ29udHJvbGxlci4gQWZ0ZXIgQUMgb24sIE1DVSBST00NCj4gPiAg ICAgICAgIGZldGNoZXMgaW5pdGlhbCBkZXZpY2UgYm9vdCBpbWFnZSBmcm9tIEZNQyBjaGlwIHNl bGVjdChDUykgMC4NCj4gPg0KPiA+IC0gU1BJMTogUGxheSB0aGUgcm9sZSBvZiBhIFNQSSBNYXN0 ZXIgY29udHJvbGxlci4gT3IsIHRoZXJlIGlzIGENCj4gPiAgICAgICAgICBkZWRpY2F0ZWQgcGF0 aCBmb3IgSE9TVChYODYpIHRvIGFjY2VzcyBpdHMgQklPUyBmbGFzaCBtb3VudGVkDQo+ID4gICAg ICAgICAgdW5kZXIgQk1DLiBzcGktYXNwZWVkLmMgaW1wbGVtZW50cyB0aGUgY29udHJvbCBzZXF1 ZW5jZSB3aGVuDQo+ID4gICAgICAgICAgU1BJMSBpcyBhIFNQSSBtYXN0ZXIuDQo+ID4NCj4gPiAt IFNQSTI6IEl0IGlzIGEgcHVyZSBTUEkgZmxhc2ggY29udHJvbGxlci4gRm9yIG1vc3Qgc2NlbmFy aW9zLCBmbGFzaGVzDQo+ID4gICAgICAgICAgbW91bnRlZCB1bmRlciBpdCBhcmUgZm9yIHB1cmUg c3RvcmFnZSBwdXJwb3NlLg0KPiA+DQo+ID4gQVNQRUVEIFNQSSBjb250cm9sbGVyIHN1cHBvcnRz IDEtMS0xLCAxLTEtMiBhbmQgMS0xLTQgU1BJIGZsYXNoIG1vZGUuDQo+ID4gVGhyZWUgdHlwZXMg b2YgY29tbWFuZCBtb2RlIGFyZSBzdXBwb3J0ZWQsIG5vcm1hbCBtb2RlLCBjb21tYW5kDQo+ID4g cmVhZC93cml0ZSBtb2RlIGFuZCB1c2VyIG1vZGUuDQo+ID4gLSBOb3JtYWwgbW9kZTogRGVmYXVs dCBtb2RlLiBBZnRlciBwb3dlciBvbiwgbm9ybWFsIHJlYWQgY29tbWFuZCAwM2gNCj4gb3INCj4g PiAgICAgICAgICAgICAgICAgMTNoIGlzIHVzZWQgdG8gZmV0Y2ggYm9vdCBpbWFnZSBmcm9tIFNQ SSBmbGFzaC4NCj4gPiAgICAgICAgICAgICAgICAgLSBBU1QyNTAwOiBPbmx5IDAzaCBjb21tYW5k IGNhbiBiZSB1c2VkIGFmdGVyIHBvd2VyDQo+IG9uDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3IgcmVzZXQuDQo+ID4gICAgICAgICAgICAgICAgIC0gQVNUMjYwMDogSWYgRk1DMDRb Njo0XSBpcyBzZXQsIDEzaCBjb21tYW5kIGlzIHVzZWQsDQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3RoZXJ3aXNlLCAwM2ggY29tbWFuZC4NCj4gPiAgICAgICAgICAgICAgICAgVGhl IGFkZHJlc3MgbGVuZ3RoIGlzIGRlY2lkZWQgYnkgRk1DMDRbMjowXS4NCj4gPg0KPiA+IC0gQ29t bWFuZCBtb2RlOiBTUEkgY29udHJvbGxlciBjYW4gc2VuZCBjb21tYW5kIGFuZCBhZGRyZXNzDQo+ ID4gICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHdoZW4gQ1BVIHJlYWQvd3JpdGUgdGhl IHJlbGF0ZWQNCj4gcmVtYXBwZWQNCj4gPiAgICAgICAgICAgICAgICAgIG9yIGRlY29kZWQgYWRk cmVzcyBhcmVhLiBUaGUgY29tbWFuZCB1c2VkIGJ5IHRoaXMNCj4gbW9kZQ0KPiA+ICAgICAgICAg ICAgICAgICAgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgRk1DMTAvMTQvMThbMjM6MTZdLiBBbHNvLCB0 aGUNCj4gPiAgICAgICAgICAgICAgICAgIGFkZHJlc3MgbGVuZ3RoIGlzIGRlY2lkZWQgYnkgRk1D MDRbMjowXS4gVGhpcyBtb2RlDQo+IHdpbGwNCj4gPiAgICAgICAgICAgICAgICAgIGJlIGltcGxl bWVudGVkIGluIHRoZSBmb2xsb3dpbmcgcGF0Y2ggc2VyaWVzLg0KPiA+DQo+ID4gLSBVc2VyIG1v ZGU6IEl0IGlzIGEgdHJhZGl0aW9uYWwgYW5kIHB1cmUgU1BJIG9wZXJhdGlvbiwgd2hlcmUNCj4g PiAgICAgICAgICAgICAgIFNQSSB0cmFuc21pc3Npb24gaXMgY29udHJvbGxlZCBieSBDUFUuIEl0 IGlzIHRoZSBtYWluDQo+ID4gICAgICAgICAgICAgICBtb2RlIGluIHRoaXMgcGF0Y2guDQo+ID4N Cj4gPiBFYWNoIFNQSSBjb250cm9sbGVyIGluIEFTUEVFRCBTb0MgaGFzIGl0cyBvd24gZGVjb2Rl ZCBhZGRyZXNzIG1hcHBpbmcuDQo+ID4gV2l0aGluIGVhY2ggU1BJIGNvbnRyb2xsZXIgZGVjb2Rl ZCBhZGRyZXNzLCBkcml2ZXIgY2FuIGFzc2lnbiBhDQo+ID4gc3BlY2lmaWMgYWRkcmVzcyByZWdp b24gZm9yIGVhY2ggQ1Mgb2YgYSBTUEkgY29udHJvbGxlci4gVGhlIGRlY29kZWQNCj4gPiBhZGRy ZXNzIGNhbm5vdCBvdmVybGFwIHRvIGVhY2ggb3RoZXIuIFdpdGggbm9ybWFsIG1vZGUgYW5kIGNv bW1hbmQNCj4gPiBtb2RlLCB0aGUgZGVjb2RlZCBhZGRyZXNzIGFjY2Vzc2VkIGJ5IHRoZSBDUFUg ZGV0ZXJtaW5lcyB3aGljaCBDUyBpcw0KPiBhY3RpdmUuDQo+ID4gV2hlbiB1c2VyIG1vZGUgaXMg YWRvcHRlZCwgdGhlIENTIGRlY29kZWQgYWRkcmVzcyBpcyBhIEZJRk8sIENQVSBjYW4NCj4gPiBz ZW5kL3JlY2VpdmUgYW55IFNQSSB0cmFuc21pc3Npb24gYnkgYWNjZXNzaW5nIHRoZSByZWxhdGVk IGRlY29kZWQNCj4gPiBhZGRyZXNzIGZvciB0aGUgdGFyZ2V0IENTLg0KPiA+DQo+ID4gU2lnbmVk LW9mZi1ieTogQ2hpbi1UaW5nIEt1byA8Y2hpbi10aW5nX2t1b0Bhc3BlZWR0ZWNoLmNvbT4NCj4g DQo+IEkgd291bGQgc3BsaXQgdGhlIHBhdGNoIGZ1cnRoZXJtb3JlIHRvIGVhc2UgcmVhZGluZy4N Cg0KT2theSwgdGhpcyB3aWxsIGJlIHVwZGF0ZSBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQo+ICAg MSAtIEFkZCBiYXNpYyBzdXBwb3J0DQo+IA0KPiAgICAgICB3aXRoIGRlZmF1bHQgZGVjb2Rpbmcg cmFuZ2VzIHNldCBmb3IgYWxsIHBvc3NpYmxlIENTLCBldmVuDQo+ICAgICAgIHdpdGhvdXQgYSBk ZXZpY2UuDQo+IA0KPiAgICAgICBXRSBvbmx5IGhhdmUgVVNFUiBtb2RlIGZvciBub3cuIFNvIGl0 J3Mgbm90IGltcG9ydGFudCB0bw0KPiAgICAgICBjb3JyZWN0bHkgc2V0IHRoZSByYW5nZXMgc2lu Y2Ugd2Ugd29uJ3QgdXNlIHRoZW0gYmVmb3JlDQo+ICAgICAgIGRpcmVjdCBtYXBwaW5nIGlzIGlu dHJvZHVjZWQuIFRoZXkgc2hvdWxkIG5vdCBvdmVybGFwLA0KPiAgICAgICB0aGF0J3MgYWxsLg0K PiANCj4gICAyIC0gZGVjb2RpbmcgcmFuZ2UgYWRqdXN0bWVudHMNCj4gDQo+ICAgICAgIE9uIHRo YXQgdG9waWMsIHdlIG1pZ2h0IHdhbnQgdG8gdGFrZSB0aGUgc2ltcGxlIERUIGFwcHJvYWNoDQo+ ICAgICAgIHdpdGggYSAicmFuZ2VzIiBwcm9wZXJ0eSBkZWZpbmluZyB0aGUgbWFwcGluZyB3aW5k b3dzIG9mIGVhY2gNCj4gICAgICAgQ0UuIEkgdGhpbmsgaXQgaXMgc2FmZXIgdGhhbiB0cnlpbmcg dG8gY29tcHV0ZSBwZXJmZWN0IHJhbmdlcw0KPiAgICAgICBsaWtlIG9uIExpbnV4Lg0KPiANCj4g ICAzIC0gY2xvY2sgc2V0dGluZ3MNCj4gDQo+ICAgICAgIFRoYXQgc2hvdWxkIHNpbXBseSBiZSB0 aGUgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgRFQNCj4gDQo+IA0KPiA+IC0tLQ0KPiA+IHYyOiBS ZW1vdmUgZGVmY29uZmlnIGZpbGVzIGZyb20gdGhpcyBwYXRjaC4NCj4gPg0KPiA+ICAgZHJpdmVy cy9zcGkvS2NvbmZpZyAgICAgIHwgICA4ICsNCj4gPiAgIGRyaXZlcnMvc3BpL01ha2VmaWxlICAg ICB8ICAgMSArDQo+ID4gICBkcml2ZXJzL3NwaS9zcGktYXNwZWVkLmMgfCA4MjINCj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gICAzIGZpbGVzIGNoYW5nZWQs IDgzMSBpbnNlcnRpb25zKCspDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zcGkv c3BpLWFzcGVlZC5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvS2NvbmZpZyBi L2RyaXZlcnMvc3BpL0tjb25maWcgaW5kZXgNCj4gPiBhMWU1MTVjYjJiLi5hNjE2Mjk0OTEwIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvc3BpL0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJzL3Nw aS9LY29uZmlnDQo+ID4gQEAgLTM4Nyw2ICszODcsMTQgQEAgY29uZmlnIFNBTkRCT1hfU1BJDQo+ ID4gICAJCX07DQo+ID4gICAJICB9Ow0KPiA+DQo+ID4gK2NvbmZpZyBTUElfQVNQRUVEDQo+ID4g Kwlib29sICJBU1BFRUQgU1BJIGNvbnRyb2xsZXIgZHJpdmVyIg0KPiA+ICsJZGVwZW5kcyBvbiBE TV9TUEkgJiYgU1BJX01FTQ0KPiA+ICsJZGVmYXVsdCBuDQo+ID4gKwloZWxwDQo+ID4gKwkgIEVu YWJsZSBBU1BFRUQgU1BJIGNvbnRyb2xsZXIgZHJpdmVyIGZvciBBU1QyNTAwDQo+ID4gKwkgIGFu ZCBBU1QyNjAwIFNvQ3MuDQo+ID4gKw0KPiA+ICAgY29uZmlnIFNQSV9TSUZJVkUNCj4gPiAgIAli b29sICJTaUZpdmUgU1BJIGRyaXZlciINCj4gPiAgIAloZWxwDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc3BpL01ha2VmaWxlIGIvZHJpdmVycy9zcGkvTWFrZWZpbGUgaW5kZXgNCj4gPiAwNmU4 MWI0NjViLi4zNmE0YmQ1ZGNlIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvc3BpL01ha2VmaWxl DQo+ID4gKysrIGIvZHJpdmVycy9zcGkvTWFrZWZpbGUNCj4gPiBAQCAtOSw2ICs5LDcgQEAgb2Jq LXkgKz0gc3BpLXVjbGFzcy5vDQo+ID4gICBvYmotJChDT05GSUdfQ0FERU5DRV9RU1BJKSArPSBj YWRlbmNlX3FzcGkubyBjYWRlbmNlX3FzcGlfYXBiLm8NCj4gPiAgIG9iai0kKENPTkZJR19TQU5E Qk9YKSArPSBzcGktZW11bC11Y2xhc3Mubw0KPiA+ICAgb2JqLSQoQ09ORklHX1NPRlRfU1BJKSAr PSBzb2Z0X3NwaS5vDQo+ID4gK29iai0kKENPTkZJR19TUElfQVNQRUVEKSArPSBzcGktYXNwZWVk Lm8NCj4gPiAgIG9iai0kKENPTkZJR19TUElfTUVNKSArPSBzcGktbWVtLm8NCj4gPiAgIG9iai0k KENPTkZJR19USV9RU1BJKSArPSB0aV9xc3BpLm8NCj4gPiAgIG9iai0kKENPTkZJR19GU0xfUVNQ SSkgKz0gZnNsX3FzcGkubyBkaWZmIC0tZ2l0DQo+ID4gYS9kcml2ZXJzL3NwaS9zcGktYXNwZWVk LmMgYi9kcml2ZXJzL3NwaS9zcGktYXNwZWVkLmMgbmV3IGZpbGUgbW9kZQ0KPiA+IDEwMDY0NCBp bmRleCAwMDAwMDAwMDAwLi45NTc0YWZmNzkzDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBi L2RyaXZlcnMvc3BpL3NwaS1hc3BlZWQuYw0KPiA+IEBAIC0wLDAgKzEsODIyIEBADQo+ID4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKw0KPiA+ICsvKg0KPiA+ICsgKiBBU1BF RUQgRk1DL1NQSSBDb250cm9sbGVyIGRyaXZlcg0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMjIgQVNQRUVEIENvcnBvcmF0aW9uLg0KPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjIg SUJNIENvcnBvcmF0aW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBBdXRob3I6DQo+ID4gKyAqICAgICBD aGluLVRpbmcgS3VvIDxjaGluLXRpbmdfa3VvQGFzcGVlZHRlY2guY29tPg0KPiA+ICsgKiAgICAg Q2VkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qub3JnPg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNp bmNsdWRlIDxhc20vaW8uaD4NCj4gPiArI2luY2x1ZGUgPGNsay5oPg0KPiA+ICsjaW5jbHVkZSA8 Y29tbW9uLmg+DQo+ID4gKyNpbmNsdWRlIDxkbS5oPg0KPiA+ICsjaW5jbHVkZSA8ZG0vZGV2aWNl X2NvbXBhdC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+DQo+ID4gKyNpbmNsdWRl IDxsaW51eC9idWcuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvaW9wb2xsLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L210ZC9zcGktbm9yLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zaXpl cy5oPg0KPiA+ICsjaW5jbHVkZSA8bWFsbG9jLmg+DQo+ID4gKyNpbmNsdWRlIDxzcGkuaD4NCj4g PiArI2luY2x1ZGUgPHNwaS1tZW0uaD4NCj4gPiArDQo+ID4gKy8qIEFTUEVFRCBGTUMvU1BJIG1l bW9yeSBjb250cm9sIHJlZ2lzdGVyIHJlbGF0ZWQgKi8NCj4gPiArI2RlZmluZSBSRUdfQ0VfVFlQ RV9TRVRUSU5HICAgICAgICAgIDB4MDANCj4gPiArI2RlZmluZSBSRUdfQ0VfQUREUl9NT0RFX0NU UkwgICAgICAgIDB4MDQNCj4gPiArI2RlZmluZSBSRUdfSU5UUl9DVFJMX1NUQVRVUyAgICAgICAg IDB4MDgNCj4gPiArI2RlZmluZSBSRUdfQ0UwX0NUUkxfUkVHICAgICAgICAgICAgIDB4MTANCj4g PiArI2RlZmluZSBSRUdfQ0UwX0RFQ09ERURfQUREUl9SRUcgICAgIDB4MzANCj4gPiArDQo+ID4g KyNkZWZpbmUgQVNQRUVEX1NQSV9NQVhfQ1MgICAgICAgMw0KPiA+ICsjZGVmaW5lIEZMQVNIX0NB TElCUkFUSU9OX0xFTiAgIDB4NDAwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENUUkxfSU9fU0lOR0xF X0RBVEEgICAgIDANCj4gPiArI2RlZmluZSBDVFJMX0lPX1FVQURfREFUQSAgICAgICBCSVQoMzAp DQo+ID4gKyNkZWZpbmUgQ1RSTF9JT19EVUFMX0RBVEEgICAgICAgQklUKDI5KQ0KPiA+ICsNCj4g PiArI2RlZmluZSBDVFJMX0lPX01PREVfVVNFUiAgICAgICBHRU5NQVNLKDEsIDApDQo+ID4gKyNk ZWZpbmUgQ1RSTF9JT19NT0RFX0NNRF9SRUFEICAgQklUKDApDQo+ID4gKyNkZWZpbmUgQ1RSTF9J T19NT0RFX0NNRF9XUklURSAgQklUKDEpDQo+ID4gKyNkZWZpbmUgQ1RSTF9TVE9QX0FDVElWRSAg ICAgICAgQklUKDIpDQo+ID4gKw0KPiA+ICtzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0IHsNCj4gPiAr CWZkdF9hZGRyX3QgY3RybF9iYXNlOw0KPiANCj4gYXJlIHRoZXNlIHRoZSByZWdpc3RlcnMgPw0K DQpObywgInN0cnVjdCBhc3BlZWRfc3BpX3BsYXQiIGlzIHVzZWQgdG8gcmVjb3JkIHNvbWUgYmFz aWMgaW5mb3JtYXRpb24gb2YgdGhpcyBwbGF0Zm9ybS4NCg0KPiA+ICsJdm9pZCBfX2lvbWVtICph aGJfYmFzZTsgLyogQUhCIGFkZHJlc3MgYmFzZSBmb3IgYWxsIGZsYXNoIGRldmljZXMuICovDQo+ ID4gKwlmZHRfc2l6ZV90IGFoYl9zejsgLyogT3ZlcmFsbCBBSEIgd2luZG93IHNpemUgZm9yIGFs bCBmbGFzaCBkZXZpY2UuICovDQo+ID4gKwl1MzIgaGNsa19yYXRlOyAvKiBBSEIgY2xvY2sgcmF0 ZSAqLw0KPiA+ICsJdTggbWF4X2NzOw0KPiANCj4gDQo+IEkgZG9uJ3QgdGhpbmsgd2UgbmVlZCBh ICJtYXhfY3MiIGluIHRoZSBjb250cm9sbGVyIHN0cnVjdCBhbmQgYSAibnVtLWNzIg0KPiBwcm9w ZXJ0eSBpbiB0aGUgRFQuIFdlIGNvdWxkIHNpbXBseSB1c2UgYSBIVyBtYXhtaW11bSBkZWZpbmVk IGluDQo+IGFzcGVlZF9zcGlfaW5mby4NCj4gDQoNCiJudW0tY3MiIGlzIHVzZWQgdG8gZGV0ZWN0 IHRoZSBudW1iZXIgb2YgYWN0aXZlIGZsYXNoIG5vZGUuDQpUaGlzIHByb3BlcnR5IGlzIG1haW5s eSB1c2VkIHRvIG1haW50YWluIHRoZSBhZGRyZXNzIGRlY29kZWQgcmFuZ2UuDQoNCiJtYXgtY3Mi IGlzIHVzZWQgZm9yIGNvbnRyb2xsaW5nIHJlZ2lzdGVyIGFjY2Vzcy4NCldlIG5lZWQgdG8ga25v dyB0aGUgbWF4aW11bSBDUyBudW1iZXIgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IGNvbnRyb2xs ZXIuDQoNCj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgYXNwZWVkX3NwaV9mbGFzaCB7 DQo+ID4gKwl1OCBjczsNCj4gPiArCXZvaWQgX19pb21lbSAqYWhiX2Jhc2U7DQo+ID4gKwl1MzIg YWhiX3dpbl9zejsNCj4gPiArCXUzMiBjZV9jdHJsX3VzZXI7DQo+ID4gKwl1MzIgY2VfY3RybF9y ZWFkOw0KPiA+ICsJdTMyIG1heF9mcmVxOw0KPiA+ICsJYm9vbCB0cmltbWVkX2RlY29kZWRfc3o7 DQo+IA0KPiBJIHdvbmRlciB3aGF0IHRoaXMgaXMgZm9yLiBXZSBuZWVkIHRvIHNwbGl0IHRoZSBw YXRjaGVzIDopDQoNCk9oLCBpdCBpcyB0aGUgcmVkdW5kYW50IG9uZSBhbmQgaXQgd2lsbCBiZSBy ZW1vdmVkIGluIHRoZSBuZXh0IHBhdGNoIHZlcnNpb24uDQoNCj4gDQo+ID4gK307DQo+ID4gKw0K PiA+ICtzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2IHsNCj4gPiArCXUzMiBudW1fY3M7DQo+IA0KPiBT ZWUgYWJvdmUuDQo+IA0KPiA+ICsJc3RydWN0IGFzcGVlZF9zcGlfaW5mbyAqaW5mbzsNCj4gPiAr CXN0cnVjdCBhc3BlZWRfc3BpX2ZsYXNoIGZsYXNoZXNbQVNQRUVEX1NQSV9NQVhfQ1NdOw0KPiA+ ICsJdTMyIGRlY29kZWRfc3pfYXJyW0FTUEVFRF9TUElfTUFYX0NTXTsNCj4gPiArfTsNCj4gDQo+ IA0KPiBDb3VsZG4ndCB3ZSBoYXZlIGEgJ3N0cnVjdCBhc3BlZWRfc3BpX3JlZ3MnIGRlZmluaW5n IHRoZSBsYXlvdXQgb2YgdGhlDQo+IHJlZ2lzdGVycyA/DQo+IA0KDQpXaHk/IFRoZSByZWdpc3Rl ciBvZmZzZXQgaGFzIGJlZW4gZGVmaW5lZCBieSBtYWNybyBwcmV2aW91c2x5Lg0KDQo+ID4gK3N0 cnVjdCBhc3BlZWRfc3BpX2luZm8gew0KPiA+ICsJdTMyIGNtZF9pb19jdHJsX21hc2s7DQo+ID4g Kwl1MzIgY2xrX2N0cmxfbWFzazsNCj4gPiArCXUzMiBtYXhfZGF0YV9idXNfd2lkdGg7DQo+ID4g Kwl1MzIgbWluX2RlY29kZWRfc3o7DQo+ID4gKwl2b2lkICgqc2V0XzRieXRlKShzdHJ1Y3QgdWRl dmljZSAqYnVzLCB1MzIgY3MpOw0KPiA+ICsJdTMyICgqc2VnbWVudF9zdGFydCkoc3RydWN0IHVk ZXZpY2UgKmJ1cywgdTMyIHJlZyk7DQo+ID4gKwl1MzIgKCpzZWdtZW50X2VuZCkoc3RydWN0IHVk ZXZpY2UgKmJ1cywgdTMyIHJlZyk7DQo+ID4gKwl1MzIgKCpzZWdtZW50X3JlZykodTMyIHN0YXJ0 LCB1MzIgZW5kKTsNCj4gPiArCWludCAoKmFkanVzdF9kZWNvZGVkX3N6KShzdHJ1Y3QgdWRldmlj ZSAqYnVzLCB1MzIgZGVjb2RlZF9zel9hcnJbXSk7DQo+ID4gKwl1MzIgKCpnZXRfY2xrX3NldHRp bmcpKHN0cnVjdCB1ZGV2aWNlICpkZXYsIHVpbnQgaHopOyB9Ow0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBhc3BlZWRfc3BpX3RyaW1fZGVjb2RlZF9zaXplKHN0cnVjdCB1ZGV2aWNlICpidXMsDQo+ ID4gKwkJCQkJdTMyIGRlY29kZWRfc3pfYXJyW10pOw0KPiA+ICsNCj4gPiArc3RhdGljIHUzMiBh c3BlZWRfc3BpX2dldF9pb19tb2RlKHUzMiBidXNfd2lkdGgpIHsNCj4gPiArCXN3aXRjaCAoYnVz X3dpZHRoKSB7DQo+ID4gKwljYXNlIDE6DQo+ID4gKwkJcmV0dXJuIENUUkxfSU9fU0lOR0xFX0RB VEE7DQo+ID4gKwljYXNlIDI6DQo+ID4gKwkJcmV0dXJuIENUUkxfSU9fRFVBTF9EQVRBOw0KPiA+ ICsJY2FzZSA0Og0KPiA+ICsJCXJldHVybiBDVFJMX0lPX1FVQURfREFUQTsNCj4gPiArCWRlZmF1 bHQ6DQo+ID4gKwkJcmV0dXJuIENUUkxfSU9fU0lOR0xFX0RBVEE7DQo+ID4gKwl9DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyB1MzIgYXN0MjUwMF9zcGlfc2VnbWVudF9zdGFydChzdHJ1Y3Qg dWRldmljZSAqYnVzLCB1MzIgcmVnKSB7DQo+ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0ICpw bGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ID4gKwl1MzIgc3RhcnRfb2Zmc2V0ID0gKChyZWcg Pj4gMTYpICYgMHhmZikgPDwgMjM7DQo+ID4gKw0KPiA+ICsJaWYgKHN0YXJ0X29mZnNldCA9PSAw KQ0KPiA+ICsJCXJldHVybiAodTMyKXBsYXQtPmFoYl9iYXNlOw0KPiA+ICsNCj4gPiArCXJldHVy biAodTMyKXBsYXQtPmFoYl9iYXNlICsgc3RhcnRfb2Zmc2V0OyB9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdTMyIGFzdDI1MDBfc3BpX3NlZ21lbnRfZW5kKHN0cnVjdCB1ZGV2aWNlICpidXMsIHUzMiBy ZWcpIHsNCj4gPiArCXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQgPSBkZXZfZ2V0X3BsYXQo YnVzKTsNCj4gPiArCXUzMiBlbmRfb2Zmc2V0ID0gKChyZWcgPj4gMjQpICYgMHhmZikgPDwgMjM7 DQo+ID4gKw0KPiA+ICsJLyogTWVhbmluZ2xlc3MgZW5kX29mZnNldCwgc2V0IHRvIHBoeXNpY2Fs IGFoYiBiYXNlLiAqLw0KPiA+ICsJaWYgKGVuZF9vZmZzZXQgPT0gMCkNCj4gPiArCQlyZXR1cm4g KHUzMilwbGF0LT5haGJfYmFzZTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gKHUzMilwbGF0LT5haGJf YmFzZSArIGVuZF9vZmZzZXQgKyAweDEwMDAwMDsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHUzMiBh c3QyNTAwX3NwaV9zZWdtZW50X3JlZyh1MzIgc3RhcnQsIHUzMiBlbmQpIHsNCj4gPiArCWlmIChz dGFydCA9PSBlbmQpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJcmV0dXJuICgoKChz dGFydCkgPj4gMjMpICYgMHhmZikgPDwgMTYpIHwgKCgoKGVuZCkgPj4gMjMpICYgMHhmZikgPDwN Cj4gPiArMjQpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBhc3QyNTAwX3NwaV9jaGlwX3Nl dF80Ynl0ZShzdHJ1Y3QgdWRldmljZSAqYnVzLCB1MzIgY3MpIHsNCj4gPiArCXN0cnVjdCBhc3Bl ZWRfc3BpX3BsYXQgKnBsYXQgPSBkZXZfZ2V0X3BsYXQoYnVzKTsNCj4gPiArCXUzMiByZWdfdmFs Ow0KPiA+ICsNCj4gPiArCXJlZ192YWwgPSByZWFkbChwbGF0LT5jdHJsX2Jhc2UgKyBSRUdfQ0Vf QUREUl9NT0RFX0NUUkwpOw0KPiA+ICsJcmVnX3ZhbCB8PSAweDEgPDwgY3M7DQo+ID4gKwl3cml0 ZWwocmVnX3ZhbCwgcGxhdC0+Y3RybF9iYXNlICsgUkVHX0NFX0FERFJfTU9ERV9DVFJMKTsgfQ0K PiA+ICsNCj4gPiArLyoNCj4gPiArICogRm9yIEFTVDI1MDAsIHRoZSBtaW5pbXVtIGFkZHJlc3Mg ZGVjb2RlZCBzaXplIGZvciBlYWNoIENTDQo+ID4gKyAqIGlzIDhNQiBpbnN0ZWFkIG9mIHplcm8u IFRoaXMgYWRkcmVzcyBkZWNvZGVkIHNpemUgaXMNCj4gPiArICogbWFuZGF0b3J5IGZvciBlYWNo IENTIG5vIG1hdHRlciB3aGV0aGVyIGl0IHdpbGwgYmUgdXNlZC4NCj4gPiArICogVGhpcyBpcyBh IEhXIGxpbWl0YXRpb24uDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IGFzdDI1MDBfYWRqdXN0 X2RlY29kZWRfc2l6ZShzdHJ1Y3QgdWRldmljZSAqYnVzLA0KPiA+ICsJCQkJICAgICAgIHUzMiBk ZWNvZGVkX3N6X2FycltdKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0ICpw bGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpw cml2ID0gZGV2X2dldF9wcml2KGJ1cyk7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsJaW50IGNzOw0K PiA+ICsNCj4gPiArCS8qIEFzc2lnbiBtaW5fZGVjb2RlZF9zeiB0byB1bnVzZWQgQ1MuICovDQo+ ID4gKwlmb3IgKGNzID0gcHJpdi0+bnVtX2NzOyBjcyA8IHBsYXQtPm1heF9jczsgY3MrKykgew0K PiA+ICsJCWlmIChkZWNvZGVkX3N6X2Fycltjc10gPCBwcml2LT5pbmZvLT5taW5fZGVjb2RlZF9z eikNCj4gPiArCQkJZGVjb2RlZF9zel9hcnJbY3NdID0gcHJpdi0+aW5mby0+bWluX2RlY29kZWRf c3o7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gYXNwZWVkX3NwaV90cmltX2RlY29kZWRf c2l6ZShidXMsIGRlY29kZWRfc3pfYXJyKTsNCj4gPiArCWlmIChyZXQgIT0gMCkNCj4gPiArCQly ZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KiBUcmFuc2ZlciBtYXhpbXVtIGNsb2NrIGZyZXF1ZW5jeSB0byByZWdpc3RlciBzZXR0aW5nICov IHN0YXRpYyB1MzINCj4gPiArYXN0MjUwMF9nZXRfY2xrX3NldHRpbmcoc3RydWN0IHVkZXZpY2Ug KmRldiwgdWludCBtYXhfaHopIHsNCj4gPiArCXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQg PSBkZXZfZ2V0X3BsYXQoZGV2LT5wYXJlbnQpOw0KPiA+ICsJc3RydWN0IGFzcGVlZF9zcGlfcHJp diAqcHJpdiA9IGRldl9nZXRfcHJpdihkZXYtPnBhcmVudCk7DQo+ID4gKwlzdHJ1Y3QgZG1fc3Bp X3NsYXZlX3BsYXQgKnNsYXZlX3BsYXQgPSBkZXZfZ2V0X3BhcmVudF9wbGF0KGRldik7DQo+ID4g Kwl1MzIgaGNsa19jbGsgPSBwbGF0LT5oY2xrX3JhdGU7DQo+ID4gKwl1MzIgaGNsa19kaXYgPSAw eDAwMDsgLyogZGVmYXVsdCB2YWx1ZSAqLw0KPiA+ICsJdTMyIGk7DQo+ID4gKwlib29sIGZvdW5k ID0gZmFsc2U7DQo+ID4gKwkvKiBIQ0xLLzEgLi4JSENMSy8xNiAqLw0KPiA+ICsJdTMyIGhjbGtf bWFza3NbXSA9IHsxNSwgNywgMTQsIDYsIDEzLCA1LCAxMiwgNCwNCj4gPiArCQkJCSAxMSwgMywg MTAsIDIsIDksICAxLCA4LCAgMH07DQo+ID4gKw0KPiA+ICsJLyogRk1DL1NQSVIxMFsxMTo4XSAq Lw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGNsa19tYXNrcyk7IGkrKykgew0K PiA+ICsJCWlmIChoY2xrX2NsayAvIChpICsgMSkgPD0gbWF4X2h6KSB7DQo+ID4gKwkJCWZvdW5k ID0gdHJ1ZTsNCj4gPiArCQkJcHJpdi0+Zmxhc2hlc1tzbGF2ZV9wbGF0LT5jc10ubWF4X2ZyZXEg PQ0KPiA+ICsJCQkJCQkJaGNsa19jbGsgLyAoaSArIDEpOw0KPiA+ICsJCQlicmVhazsNCj4gPiAr CQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGZvdW5kKSB7DQo+ID4gKwkJaGNsa19kaXYg PSBoY2xrX21hc2tzW2ldIDw8IDg7DQo+ID4gKwkJZ290byBlbmQ7DQo+ID4gKwl9DQo+ID4gKw0K PiA+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGNsa19tYXNrcyk7IGkrKykgew0KPiA+ ICsJCWlmIChoY2xrX2NsayAvICgoaSArIDEpICogNCkgPD0gbWF4X2h6KSB7DQo+ID4gKwkJCWZv dW5kID0gdHJ1ZTsNCj4gPiArCQkJcHJpdi0+Zmxhc2hlc1tzbGF2ZV9wbGF0LT5jc10ubWF4X2Zy ZXEgPQ0KPiA+ICsJCQkJCQloY2xrX2NsayAvICgoaSArIDEpICogNCk7DQo+ID4gKwkJCWJyZWFr Ow0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoZm91bmQpDQo+ID4gKwkJaGNs a19kaXYgPSBCSVQoMTMpIHwgKGhjbGtfbWFza3NbaV0gPDwgOCk7DQo+ID4gKw0KPiA+ICtlbmQ6 DQo+ID4gKwlkZXZfZGJnKGRldiwgImZvdW5kOiAlcywgaGNsazogJWQsIG1heF9jbGs6ICVkXG4i LCBmb3VuZCA/ICJ5ZXMiIDogIm5vIiwNCj4gPiArCQloY2xrX2NsaywgbWF4X2h6KTsNCj4gPiAr DQo+ID4gKwlpZiAoZm91bmQpIHsNCj4gPiArCQlkZXZfZGJnKGRldiwgImhfZGl2OiAlZCAobWFz ayAleCksIHNwZWVkOiAlZFxuIiwNCj4gPiArCQkJaSArIDEsIGhjbGtfbWFza3NbaV0sIHByaXYt PmZsYXNoZXNbc2xhdmVfcGxhdC0+Y3NdLm1heF9mcmVxKTsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlyZXR1cm4gaGNsa19kaXY7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1MzIgYXN0MjYw MF9zcGlfc2VnbWVudF9zdGFydChzdHJ1Y3QgdWRldmljZSAqYnVzLCB1MzIgcmVnKSB7DQo+ID4g KwlzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0ICpwbGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ID4g Kwl1MzIgc3RhcnRfb2Zmc2V0ID0gKHJlZyA8PCAxNikgJiAweDBmZjAwMDAwOw0KPiA+ICsNCj4g PiArCWlmIChzdGFydF9vZmZzZXQgPT0gMCkNCj4gPiArCQlyZXR1cm4gKHUzMilwbGF0LT5haGJf YmFzZTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gKHUzMilwbGF0LT5haGJfYmFzZSArIHN0YXJ0X29m ZnNldDsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHUzMiBhc3QyNjAwX3NwaV9zZWdtZW50X2VuZChz dHJ1Y3QgdWRldmljZSAqYnVzLCB1MzIgcmVnKSB7DQo+ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9w bGF0ICpwbGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ID4gKwl1MzIgZW5kX29mZnNldCA9IHJl ZyAmIDB4MGZmMDAwMDA7DQo+ID4gKw0KPiA+ICsJLyogTWVhbmluZ2xlc3MgZW5kX29mZnNldCwg c2V0IHRvIHBoeXNpY2FsIGFoYiBiYXNlLiAqLw0KPiA+ICsJaWYgKGVuZF9vZmZzZXQgPT0gMCkN Cj4gPiArCQlyZXR1cm4gKHUzMilwbGF0LT5haGJfYmFzZTsNCj4gPiArDQo+ID4gKwlyZXR1cm4g KHUzMilwbGF0LT5haGJfYmFzZSArIGVuZF9vZmZzZXQgKyAweDEwMDAwMDsgfQ0KPiA+ICsNCj4g PiArc3RhdGljIHUzMiBhc3QyNjAwX3NwaV9zZWdtZW50X3JlZyh1MzIgc3RhcnQsIHUzMiBlbmQp IHsNCj4gPiArCWlmIChzdGFydCA9PSBlbmQpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ ICsJcmV0dXJuICgoc3RhcnQgJiAweDBmZjAwMDAwKSA+PiAxNikgfCAoKGVuZCAtIDB4MTAwMDAw KSAmDQo+ID4gKzB4MGZmMDAwMDApOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBhc3QyNjAw X3NwaV9jaGlwX3NldF80Ynl0ZShzdHJ1Y3QgdWRldmljZSAqYnVzLCB1MzIgY3MpIHsNCj4gPiAr CXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQgPSBkZXZfZ2V0X3BsYXQoYnVzKTsNCj4gPiAr CXUzMiByZWdfdmFsOw0KPiA+ICsNCj4gPiArCXJlZ192YWwgPSByZWFkbChwbGF0LT5jdHJsX2Jh c2UgKyBSRUdfQ0VfQUREUl9NT0RFX0NUUkwpOw0KPiA+ICsJcmVnX3ZhbCB8PSAweDExIDw8IGNz Ow0KPiA+ICsJd3JpdGVsKHJlZ192YWwsIHBsYXQtPmN0cmxfYmFzZSArIFJFR19DRV9BRERSX01P REVfQ1RSTCk7IH0NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYXN0MjYwMF9hZGp1c3RfZGVjb2Rl ZF9zaXplKHN0cnVjdCB1ZGV2aWNlICpidXMsDQo+ID4gKwkJCQkgICAgICAgdTMyIGRlY29kZWRf c3pfYXJyW10pDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBhc3BlZWRfc3BpX3ByaXYgKnByaXYgPSBk ZXZfZ2V0X3ByaXYoYnVzKTsNCj4gPiArCWludCByZXQ7DQo+ID4gKwlpbnQgaTsNCj4gPiArCWlu dCBjczsNCj4gPiArCXUzMiBwcmVfc3o7DQo+ID4gKwl1MzIgbGFja19zejsNCj4gPiArDQo+ID4g KwkvKg0KPiA+ICsJICogSWYgY29tbW5hZCBtb2RlIG9yIG5vcm1hbCBtb2RlIGlzIHVzZWQsIHRo ZSBzdGFydCBhZGRyZXNzIG9mIGENCj4gPiArCSAqIGRlY29kZWQgcmFuZ2Ugc2hvdWxkIGJlIG11 bHRpcGxlIG9mIGl0cyByZWxhdGVkIGZsYXNoIHNpemUuDQo+ID4gKwkgKiBOYW1lbHksIHRoZSB0 b3RhbCBkZWNvZGVkIHNpemUgZnJvbSBmbGFzaCAwIHRvIGZsYXNoIE4gc2hvdWxkDQo+ID4gKwkg KiBiZSBtdWx0aXBsZSBvZiB0aGUgc2l6ZSBvZiBmbGFzaCAoTiArIDEpLg0KPiA+ICsJICovDQo+ ID4gKwlmb3IgKGNzID0gcHJpdi0+bnVtX2NzIC0gMTsgY3MgPj0gMDsgY3MtLSkgew0KPiA+ICsJ CXByZV9zeiA9IDA7DQo+ID4gKwkJZm9yIChpID0gMDsgaSA8IGNzOyBpKyspDQo+ID4gKwkJCXBy ZV9zeiArPSBkZWNvZGVkX3N6X2FycltpXTsNCj4gPiArDQo+ID4gKwkJaWYgKGRlY29kZWRfc3pf YXJyW2NzXSAhPSAwICYmIChwcmVfc3ogJSBkZWNvZGVkX3N6X2Fycltjc10pICE9IDApIHsNCj4g PiArCQkJbGFja19zeiA9IGRlY29kZWRfc3pfYXJyW2NzXSAtIChwcmVfc3ogJSBkZWNvZGVkX3N6 X2Fycltjc10pOw0KPiA+ICsJCQlkZWNvZGVkX3N6X2FyclswXSArPSBsYWNrX3N6Ow0KPiA+ICsJ CX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXQgPSBhc3BlZWRfc3BpX3RyaW1fZGVjb2RlZF9z aXplKGJ1cywgZGVjb2RlZF9zel9hcnIpOw0KPiA+ICsJaWYgKHJldCAhPSAwKQ0KPiA+ICsJCXJl dHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q IFRyYW5zZmVyIG1heGltdW0gY2xvY2sgZnJlcXVlbmN5IHRvIHJlZ2lzdGVyIHNldHRpbmcgKi8g c3RhdGljIHUzMg0KPiA+ICthc3QyNjAwX2dldF9jbGtfc2V0dGluZyhzdHJ1Y3QgdWRldmljZSAq ZGV2LCB1aW50IG1heF9oeikgew0KPiA+ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxhdCA9 IGRldl9nZXRfcGxhdChkZXYtPnBhcmVudCk7DQo+ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2 ICpwcml2ID0gZGV2X2dldF9wcml2KGRldi0+cGFyZW50KTsNCj4gPiArCXN0cnVjdCBkbV9zcGlf c2xhdmVfcGxhdCAqc2xhdmVfcGxhdCA9IGRldl9nZXRfcGFyZW50X3BsYXQoZGV2KTsNCj4gPiAr CXUzMiBoY2xrX2NsayA9IHBsYXQtPmhjbGtfcmF0ZTsNCj4gPiArCXUzMiBoY2xrX2RpdiA9IDB4 NDAwOyAvKiBkZWZhdWx0IHZhbHVlICovDQo+ID4gKwl1MzIgaSwgajsNCj4gPiArCWJvb2wgZm91 bmQgPSBmYWxzZTsNCj4gPiArCS8qIEhDTEsvMSAuLglIQ0xLLzE2ICovDQo+ID4gKwl1MzIgaGNs a19tYXNrc1tdID0gezE1LCA3LCAxNCwgNiwgMTMsIDUsIDEyLCA0LA0KPiA+ICsJCQkJIDExLCAz LCAxMCwgMiwgOSwgIDEsIDgsICAwfTsNCj4gPiArDQo+ID4gKwkvKiBGTUMvU1BJUjEwWzI3OjI0 XSAqLw0KPiA+ICsJZm9yIChqID0gMDsgaiA8IDB4ZjsgaisrKSB7DQo+ID4gKwkJLyogRk1DL1NQ SVIxMFsxMTo4XSAqLw0KPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhjbGtfbWFz a3MpOyBpKyspIHsNCj4gPiArCQkJaWYgKGkgPT0gMCAmJiBqID09IDApDQo+ID4gKwkJCQljb250 aW51ZTsNCj4gPiArDQo+ID4gKwkJCWlmIChoY2xrX2NsayAvIChpICsgMSArIChqICogMTYpKSA8 PSBtYXhfaHopIHsNCj4gPiArCQkJCWZvdW5kID0gdHJ1ZTsNCj4gPiArCQkJCWJyZWFrOw0KPiA+ ICsJCQl9DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAoZm91bmQpIHsNCj4gPiArCQkJaGNs a19kaXYgPSAoKGogPDwgMjQpIHwgaGNsa19tYXNrc1tpXSA8PCA4KTsNCj4gPiArCQkJcHJpdi0+ Zmxhc2hlc1tzbGF2ZV9wbGF0LT5jc10ubWF4X2ZyZXEgPQ0KPiA+ICsJCQkJCQloY2xrX2NsayAv IChpICsgMSArIGogKiAxNik7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4g PiArDQo+ID4gKwlkZXZfZGJnKGRldiwgImZvdW5kOiAlcywgaGNsazogJWQsIG1heF9jbGs6ICVk XG4iLCBmb3VuZCA/ICJ5ZXMiIDogIm5vIiwNCj4gPiArCQloY2xrX2NsaywgbWF4X2h6KTsNCj4g PiArDQo+ID4gKwlpZiAoZm91bmQpIHsNCj4gPiArCQlkZXZfZGJnKGRldiwgImJhc2VfY2xrOiAl ZCwgaF9kaXY6ICVkIChtYXNrICV4KSwgc3BlZWQ6ICVkXG4iLA0KPiA+ICsJCQlqLCBpICsgMSwg aGNsa19tYXNrc1tpXSwgcHJpdi0+Zmxhc2hlc1tzbGF2ZV9wbGF0LT5jc10ubWF4X2ZyZXEpOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBoY2xrX2RpdjsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoNCj4gPiArICogQXMgdGhlIGZsYXNoIHNpemUgZ3Jvd3MgdXAsIHdlIG5lZWQgdG8gdHJp bSBzb21lIGRlY29kZWQNCj4gPiArICogc2l6ZSBpZiBuZWVkZWQgZm9yIHRoZSBzYWtlIG9mIGNv bmZvcm1pbmcgdGhlIG1heGltdW0NCj4gPiArICogZGVjb2RlZCBzaXplLiBXZSB0cmltIHRoZSBk ZWNvZGVkIHNpemUgZnJvbSB0aGUgbGFyZ2VzdA0KPiA+ICsgKiBDUyBpbiBvcmRlciB0byBhdm9p ZCBhZmZlY3RpbmcgdGhlIGRlZmF1bHQgYm9vdCB1cCBzZXF1ZW5jZQ0KPiA+ICsgKiBmcm9tIENT MCB3aGVyZSBjb21tYW5kIG1vZGUgb3Igbm9ybWFsIG1vZGUgaXMgdXNlZC4NCj4gPiArICogTm90 aWNlLCBpZiBhIENTIGRlY29kZWQgc2l6ZSBpcyB0cmltbWVkLCBjb21tYW5kIG1vZGUgbWF5DQo+ ID4gKyAqIG5vdCB3b3JrIHBlcmZlY3RseSBvbiB0aGF0IENTLg0KPiA+ICsgKi8NCj4gPiArc3Rh dGljIGludCBhc3BlZWRfc3BpX3RyaW1fZGVjb2RlZF9zaXplKHN0cnVjdCB1ZGV2aWNlICpidXMs DQo+ID4gKwkJCQkJdTMyIGRlY29kZWRfc3pfYXJyW10pDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBh c3BlZWRfc3BpX3BsYXQgKnBsYXQgPSBkZXZfZ2V0X3BsYXQoYnVzKTsNCj4gPiArCXN0cnVjdCBh c3BlZWRfc3BpX3ByaXYgKnByaXYgPSBkZXZfZ2V0X3ByaXYoYnVzKTsNCj4gPiArCXUzMiB0b3Rh bF9zejsNCj4gPiArCWludCBjcyA9IHBsYXQtPm1heF9jcyAtIDE7DQo+ID4gKwl1MzIgaTsNCj4g PiArDQo+ID4gKwlkbyB7DQo+ID4gKwkJdG90YWxfc3ogPSAwOw0KPiA+ICsJCWZvciAoaSA9IDA7 IGkgPCBwbGF0LT5tYXhfY3M7IGkrKykNCj4gPiArCQkJdG90YWxfc3ogKz0gZGVjb2RlZF9zel9h cnJbaV07DQo+ID4gKw0KPiA+ICsJCWlmIChkZWNvZGVkX3N6X2Fycltjc10gPD0gcHJpdi0+aW5m by0+bWluX2RlY29kZWRfc3opDQo+ID4gKwkJCWNzLS07DQo+ID4gKw0KPiA+ICsJCWlmIChjcyA8 IDApDQo+ID4gKwkJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCQlpZiAodG90YWxfc3og PiBwbGF0LT5haGJfc3opIHsNCj4gPiArCQkJZGVjb2RlZF9zel9hcnJbY3NdIC09IHByaXYtPmlu Zm8tPm1pbl9kZWNvZGVkX3N6Ow0KPiA+ICsJCQl0b3RhbF9zeiAtPSBwcml2LT5pbmZvLT5taW5f ZGVjb2RlZF9zejsNCj4gPiArCQkJcHJpdi0+Zmxhc2hlc1tjc10udHJpbW1lZF9kZWNvZGVkX3N6 ID0gdHJ1ZTsNCj4gPiArCQl9DQo+ID4gKwl9IHdoaWxlICh0b3RhbF9zeiA+IHBsYXQtPmFoYl9z eik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgYXNwZWVkX3NwaV9yZWFkX2Zyb21fYWhiKHZvaWQgX19pb21lbSAqYWhiX2Jhc2UsIHZvaWQg KmJ1ZiwNCj4gPiArCQkJCSAgICBzaXplX3QgbGVuKQ0KPiA+ICt7DQo+ID4gKwlzaXplX3Qgb2Zm c2V0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAoSVNfQUxJR05FRCgodWludHB0cl90KWFoYl9iYXNl LCBzaXplb2YodWludHB0cl90KSkgJiYNCj4gPiArCSAgICBJU19BTElHTkVEKCh1aW50cHRyX3Qp YnVmLCBzaXplb2YodWludHB0cl90KSkpIHsNCj4gPiArCQlyZWFkc2woYWhiX2Jhc2UsIGJ1Ziwg bGVuID4+IDIpOw0KPiA+ICsJCW9mZnNldCA9IGxlbiAmIH4weDM7DQo+ID4gKwkJbGVuIC09IG9m ZnNldDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZWFkc2IoYWhiX2Jhc2UsICh1OCAqKWJ1ZiAr IG9mZnNldCwgbGVuKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIGludCBhc3BlZWRfc3BpX3dyaXRlX3RvX2FoYih2b2lkIF9faW9tZW0gKmFoYl9i YXNlLCBjb25zdCB2b2lkDQo+ICpidWYsDQo+ID4gKwkJCQkgICBzaXplX3QgbGVuKQ0KPiA+ICt7 DQo+ID4gKwlzaXplX3Qgb2Zmc2V0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAoSVNfQUxJR05FRCgo dWludHB0cl90KWFoYl9iYXNlLCBzaXplb2YodWludHB0cl90KSkgJiYNCj4gPiArCSAgICBJU19B TElHTkVEKCh1aW50cHRyX3QpYnVmLCBzaXplb2YodWludHB0cl90KSkpIHsNCj4gPiArCQl3cml0 ZXNsKGFoYl9iYXNlLCBidWYsIGxlbiA+PiAyKTsNCj4gPiArCQlvZmZzZXQgPSBsZW4gJiB+MHgz Ow0KPiA+ICsJCWxlbiAtPSBvZmZzZXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJd3JpdGVzYihh aGJfYmFzZSwgKHU4ICopYnVmICsgb2Zmc2V0LCBsZW4pOw0KPiA+ICsNCj4gPiArCXJldHVybiAw Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBDdXJyZW50bHksIG9ubHkgc3VwcG9y dCAxLTEtMSwgMS0xLTIgb3IgMS0xLTQNCj4gPiArICogU1BJIE5PUiBmbGFzaCBvcGVyYXRpb24g Zm9ybWF0Lg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGJvb2wgYXNwZWVkX3NwaV9zdXBwb3J0c19v cChzdHJ1Y3Qgc3BpX3NsYXZlICpzbGF2ZSwNCj4gPiArCQkJCSAgIGNvbnN0IHN0cnVjdCBzcGlf bWVtX29wICpvcCkNCj4gPiArew0KPiA+ICsJc3RydWN0IHVkZXZpY2UgKmJ1cyA9IHNsYXZlLT5k ZXYtPnBhcmVudDsNCj4gPiArCXN0cnVjdCBhc3BlZWRfc3BpX3ByaXYgKnByaXYgPSBkZXZfZ2V0 X3ByaXYoYnVzKTsNCj4gPiArDQo+ID4gKwlpZiAob3AtPmNtZC5idXN3aWR0aCA+IDEpDQo+ID4g KwkJcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCWlmIChvcC0+YWRkci5idXN3aWR0aCA+IDEg fHwgb3AtPmFkZHIubmJ5dGVzID4gNCkNCj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ ICsJaWYgKG9wLT5kdW1teS5idXN3aWR0aCA+IDEgfHwgb3AtPmR1bW15Lm5ieXRlcyA+IDcpDQo+ ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCWlmIChvcC0+ZGF0YS5idXN3aWR0aCA+ IHByaXYtPmluZm8tPm1heF9kYXRhX2J1c193aWR0aCkNCj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ ID4gKw0KPiA+ICsJaWYgKCFzcGlfbWVtX2RlZmF1bHRfc3VwcG9ydHNfb3Aoc2xhdmUsIG9wKSkN Cj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHRydWU7DQo+ID4gK30N Cj4gDQo+IFlvdSBjb3VsZCBjb3B5IHRoZSBMaW51eCBhc3BlZWRfc3BpX3N1cHBvcnRzX29wKCkN Cj4NCg0KT2theSwgdGhpcyBwYXRjaCBzZXJpZXMgbWF5IGJlIHRvbyBvbGQuDQoNCj4gPiArDQo+ ID4gK3N0YXRpYyBpbnQgYXNwZWVkX3NwaV9leGVjX29wX3VzZXJfbW9kZShzdHJ1Y3Qgc3BpX3Ns YXZlICpzbGF2ZSwNCj4gPiArCQkJCQljb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApDQo+ID4g K3sNCj4gPiArCXN0cnVjdCB1ZGV2aWNlICpkZXYgPSBzbGF2ZS0+ZGV2Ow0KPiA+ICsJc3RydWN0 IHVkZXZpY2UgKmJ1cyA9IGRldi0+cGFyZW50Ow0KPiA+ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxh dCAqcGxhdCA9IGRldl9nZXRfcGxhdChidXMpOw0KPiA+ICsJc3RydWN0IGFzcGVlZF9zcGlfcHJp diAqcHJpdiA9IGRldl9nZXRfcHJpdihidXMpOw0KPiA+ICsJc3RydWN0IGRtX3NwaV9zbGF2ZV9w bGF0ICpzbGF2ZV9wbGF0ID0gZGV2X2dldF9wYXJlbnRfcGxhdChzbGF2ZS0+ZGV2KTsNCj4gPiAr CXUzMiBjcyA9IHNsYXZlX3BsYXQtPmNzOw0KPiA+ICsJZmR0X2FkZHJfdCBjdHJsX3JlZyA9IHBs YXQtPmN0cmxfYmFzZSArIFJFR19DRTBfQ1RSTF9SRUcgKyBjcyAqIDQ7DQo+ID4gKwlzdHJ1Y3Qg YXNwZWVkX3NwaV9mbGFzaCAqZmxhc2ggPSAmcHJpdi0+Zmxhc2hlc1tjc107DQo+ID4gKwl1MzIg Y3RybF92YWw7DQo+ID4gKwl1OCBkdW1teV9kYXRhWzE2XSA9IHswfTsNCj4gPiArCXU4IGFkZHJb NF0gPSB7MH07DQo+ID4gKwlpbnQgaTsNCj4gPiArDQo+ID4gKwlkZXZfZGJnKGRldiwNCj4gImNt ZDoleCglZCksYWRkcjolbGx4KCVkKSxkdW1teTolZCglZCksZGF0YV9sZW46MHgleCglZClcbiIs DQo+ID4gKwkJb3AtPmNtZC5vcGNvZGUsIG9wLT5jbWQuYnVzd2lkdGgsIG9wLT5hZGRyLnZhbCwN Cj4gPiArCQlvcC0+YWRkci5idXN3aWR0aCwgb3AtPmR1bW15Lm5ieXRlcywgb3AtPmR1bW15LmJ1 c3dpZHRoLA0KPiA+ICsJCW9wLT5kYXRhLm5ieXRlcywgb3AtPmRhdGEuYnVzd2lkdGgpOw0KPiA+ ICsNCj4gPiArCS8qIFN0YXJ0IHVzZXIgbW9kZSAqLw0KPiA+ICsJY3RybF92YWwgPSBmbGFzaC0+ Y2VfY3RybF91c2VyOw0KPiA+ICsJd3JpdGVsKGN0cmxfdmFsLCBjdHJsX3JlZyk7DQo+ID4gKwlj dHJsX3ZhbCAmPSAofkNUUkxfU1RPUF9BQ1RJVkUpOw0KPiA+ICsJd3JpdGVsKGN0cmxfdmFsLCBj dHJsX3JlZyk7DQo+ID4gKw0KPiA+ICsJLyogU2VuZCBjb21tYW5kICovDQo+ID4gKwlhc3BlZWRf c3BpX3dyaXRlX3RvX2FoYihmbGFzaC0+YWhiX2Jhc2UsICZvcC0+Y21kLm9wY29kZSwgMSk7DQo+ ID4gKw0KPiA+ICsJLyogU2VuZCBhZGRyZXNzICovDQo+ID4gKwlmb3IgKGkgPSBvcC0+YWRkci5u Ynl0ZXM7IGkgPiAwOyBpLS0pIHsNCj4gPiArCQlhZGRyW29wLT5hZGRyLm5ieXRlcyAtIGldID0N Cj4gPiArCQkJKCh1MzIpb3AtPmFkZHIudmFsID4+ICgoaSAtIDEpICogOCkpICYgMHhmZjsNCj4g PiArCX0NCj4gPiArCWFzcGVlZF9zcGlfd3JpdGVfdG9fYWhiKGZsYXNoLT5haGJfYmFzZSwgYWRk ciwgb3AtPmFkZHIubmJ5dGVzKTsNCj4gDQo+IFRoaXMgY291bGQgYmUgd3JpdGluZyAzIGJ5dGVz LiBOb3Qgb3B0aW1hbC4NCg0KV2h5PyBEb2Vzbid0IGl0IGRlcGVuZCBvbiB0aGUgdmFsdWUgb2Yg Im9wLT5hZGRyLm5ieXRlcyI/IFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gdmVyaWZpZWQgd2l0aCBk aWZmZXJlbnQgZmxhc2ggcGFydHMuDQoNCj4gDQo+ID4gKw0KPiA+ICsJLyogU2VuZCBkdW1teSBj eWNsZSAqLw0KPiA+ICsJYXNwZWVkX3NwaV93cml0ZV90b19haGIoZmxhc2gtPmFoYl9iYXNlLCBk dW1teV9kYXRhLA0KPiA+ICtvcC0+ZHVtbXkubmJ5dGVzKTsNCj4gPiArDQo+ID4gKwkvKiBDaGFu Z2UgaW9fbW9kZSAqLw0KPiA+ICsJY3RybF92YWwgfD0gYXNwZWVkX3NwaV9nZXRfaW9fbW9kZShv cC0+ZGF0YS5idXN3aWR0aCk7DQo+ID4gKwl3cml0ZWwoY3RybF92YWwsIGN0cmxfcmVnKTsNCj4g PiArDQo+ID4gKwkvKiBTZW5kIGRhdGEgKi8NCj4gPiArCWlmIChvcC0+ZGF0YS5kaXIgPT0gU1BJ X01FTV9EQVRBX09VVCkgew0KPiA+ICsJCWFzcGVlZF9zcGlfd3JpdGVfdG9fYWhiKGZsYXNoLT5h aGJfYmFzZSwgb3AtPmRhdGEuYnVmLm91dCwNCj4gPiArCQkJCQlvcC0+ZGF0YS5uYnl0ZXMpOw0K PiA+ICsJfSBlbHNlIHsNCj4gPiArCQlhc3BlZWRfc3BpX3JlYWRfZnJvbV9haGIoZmxhc2gtPmFo Yl9iYXNlLCBvcC0+ZGF0YS5idWYuaW4sDQo+ID4gKwkJCQkJIG9wLT5kYXRhLm5ieXRlcyk7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJY3RybF92YWwgfD0gQ1RSTF9TVE9QX0FDVElWRTsNCj4gPiAr CXdyaXRlbChjdHJsX3ZhbCwgY3RybF9yZWcpOw0KPiA+ICsNCj4gPiArCS8qIFJlc3RvcmUgY29u dHJvbGxlciBzZXR0aW5nLiAqLw0KPiA+ICsJd3JpdGVsKGZsYXNoLT5jZV9jdHJsX3JlYWQsIGN0 cmxfcmVnKTsNCj4gPiArDQo+ID4gKwkvKiBTZXQgY29udHJvbGxlciB0byA0LWJ5dGUgbW9kZSB3 aGVuIGZsYXNoIGlzIGluIDQtYnl0ZSBtb2RlLiAqLw0KPiA+ICsJaWYgKG9wLT5jbWQub3Bjb2Rl ID09IFNQSU5PUl9PUF9FTjRCKQ0KPiA+ICsJCXByaXYtPmluZm8tPnNldF80Ynl0ZShidXMsIGNz KTsNCj4gDQo+IFdlIGRvbid0IG5lZWQgdG8gc2V0IDRCIGVhcmxpZXIgPyBJIHRydXN0IHlvdSB0 aGVyZS4NCg0KRG8geW91IG1lYW4gZWFybHkgaW4gdGhpcyBmdW5jdGlvbj8gSXQgbWF5IGJlIG9r YXkuDQoNCj4gDQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBzdHJ1Y3QgYXNwZWVkX3NwaV9mbGFzaCAqYXNwZWVkX3NwaV9nZXRfZmxhc2goc3RydWN0 IHVkZXZpY2UNCj4gPiArKmRldikgew0KPiA+ICsJc3RydWN0IHVkZXZpY2UgKmJ1cyA9IGRldi0+ cGFyZW50Ow0KPiA+ICsJc3RydWN0IGRtX3NwaV9zbGF2ZV9wbGF0ICpzbGF2ZV9wbGF0ID0gZGV2 X2dldF9wYXJlbnRfcGxhdChkZXYpOw0KPiA+ICsJc3RydWN0IGFzcGVlZF9zcGlfcGxhdCAqcGxh dCA9IGRldl9nZXRfcGxhdChidXMpOw0KPiA+ICsJc3RydWN0IGFzcGVlZF9zcGlfcHJpdiAqcHJp diA9IGRldl9nZXRfcHJpdihidXMpOw0KPiA+ICsJdTMyIGNzID0gc2xhdmVfcGxhdC0+Y3M7DQo+ ID4gKw0KPiA+ICsJaWYgKGNzID49IHBsYXQtPm1heF9jcykgew0KPiA+ICsJCWRldl9lcnIoZGV2 LCAiaW52YWxpZCBDUyAldVxuIiwgY3MpOw0KPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCXJldHVybiAmcHJpdi0+Zmxhc2hlc1tjc107DQo+ID4gK30NCj4gPiArDQo+ ID4gK3N0YXRpYyBpbnQgYXNwZWVkX3NwaV9kZWNvZGVkX3JhbmdlX2NvbmZpZyhzdHJ1Y3QgdWRl dmljZSAqYnVzLA0KPiA+ICsJCQkJCSAgIHUzMiBkZWNvZGVkX3N6X2FycltdKQ0KPiA+ICt7DQo+ ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0ICpwbGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dldF9wcml2KGJ1cyk7DQo+ ID4gKwlpbnQgcmV0Ow0KPiA+ICsJdTMyIGNzOw0KPiA+ICsJdTMyIGRlY29kZWRfcmVnX3ZhbDsN Cj4gPiArCXUzMiBzdGFydF9hZGRyOw0KPiA+ICsJdTMyIGVuZF9hZGRyID0gMDsNCj4gPiArDQo+ ID4gKwlyZXQgPSBwcml2LT5pbmZvLT5hZGp1c3RfZGVjb2RlZF9zeihidXMsIGRlY29kZWRfc3pf YXJyKTsNCj4gPiArCWlmIChyZXQgIT0gMCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4g PiArCS8qIENvbmZpZ3VyZSBlYWNoIENTIGRlY29kZWQgcmFuZ2UgKi8NCj4gPiArCWZvciAoY3Mg PSAwOyBjcyA8IHBsYXQtPm1heF9jczsgY3MrKykgew0KPiA+ICsJCWlmIChjcyA9PSAwKQ0KPiA+ ICsJCQlzdGFydF9hZGRyID0gKHUzMilwbGF0LT5haGJfYmFzZTsNCj4gPiArCQllbHNlDQo+ID4g KwkJCXN0YXJ0X2FkZHIgPSBlbmRfYWRkcjsNCj4gPiArCQlwcml2LT5mbGFzaGVzW2NzXS5haGJf YmFzZSA9ICh2b2lkIF9faW9tZW0gKilzdGFydF9hZGRyOw0KPiA+ICsJCXByaXYtPmZsYXNoZXNb Y3NdLmFoYl93aW5fc3ogPSBkZWNvZGVkX3N6X2Fycltjc107DQo+ID4gKw0KPiA+ICsJCWVuZF9h ZGRyID0gc3RhcnRfYWRkciArIGRlY29kZWRfc3pfYXJyW2NzXTsNCj4gPiArCQlkZWNvZGVkX3Jl Z192YWwgPSBwcml2LT5pbmZvLT5zZWdtZW50X3JlZyhzdGFydF9hZGRyLCBlbmRfYWRkcik7DQo+ ID4gKw0KPiA+ICsJCXdyaXRlbChkZWNvZGVkX3JlZ192YWwsDQo+ID4gKwkJICAgICAgIHBsYXQt PmN0cmxfYmFzZSArIFJFR19DRTBfREVDT0RFRF9BRERSX1JFRyArIGNzICogNCk7DQo+ID4gKw0K PiA+ICsJCWRldl9kYmcoYnVzLCAiY3M6ICVkLCBkZWNvZGVkX3JlZzogMHgleCwgc3RhcnQ6IDB4 JXgsIGVuZDogMHgleFxuIiwNCj4gPiArCQkJY3MsIGRlY29kZWRfcmVnX3ZhbCwgc3RhcnRfYWRk ciwgZW5kX2FkZHIpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBJbml0aWFsaXplIFNQSSBjb250cm9sbGVyIGZvciBlYWNo IGNoaXAgc2VsZWN0Lg0KPiA+ICsgKiBIZXJlLCBvbmx5IHRoZSBtaW5pbXVtIGRlY29kZSByYW5n ZSBpcyBjb25maWd1cmVkDQo+ID4gKyAqIGluIG9yZGVyIHRvIGdldCBkZXZpY2UgKFNQSSBOT1Ig Zmxhc2gpIGluZm9ybWF0aW9uDQo+ID4gKyAqIGF0IHRoZSBlYXJseSBzdGFnZS4NCj4gPiArICov DQo+ID4gK3N0YXRpYyBpbnQgYXNwZWVkX3NwaV9jdHJsX2luaXQoc3RydWN0IHVkZXZpY2UgKmJ1 cykgew0KPiA+ICsJaW50IHJldDsNCj4gPiArCXN0cnVjdCBhc3BlZWRfc3BpX3BsYXQgKnBsYXQg PSBkZXZfZ2V0X3BsYXQoYnVzKTsNCj4gPiArCXN0cnVjdCBhc3BlZWRfc3BpX3ByaXYgKnByaXYg PSBkZXZfZ2V0X3ByaXYoYnVzKTsNCj4gPiArCXUzMiBjczsNCj4gPiArCXUzMiByZWdfdmFsOw0K PiA+ICsJdTMyIGRlY29kZWRfc3o7DQo+ID4gKw0KPiA+ICsJLyogRW5hYmxlIHdyaXRlIGNhcGFi aWxpdHkgZm9yIGFsbCBDUy4gKi8NCj4gPiArCXJlZ192YWwgPSByZWFkbChwbGF0LT5jdHJsX2Jh c2UgKyBSRUdfQ0VfVFlQRV9TRVRUSU5HKTsNCj4gPiArCXdyaXRlbChyZWdfdmFsIHwgKEdFTk1B U0socGxhdC0+bWF4X2NzIC0gMSwgMCkgPDwgMTYpLA0KPiA+ICsJICAgICAgIHBsYXQtPmN0cmxf YmFzZSArIFJFR19DRV9UWVBFX1NFVFRJTkcpOw0KPiA+ICsNCj4gPiArCW1lbXNldChwcml2LT5m bGFzaGVzLCAweDAsDQo+ID4gKwkgICAgICAgc2l6ZW9mKHN0cnVjdCBhc3BlZWRfc3BpX2ZsYXNo KSAqIEFTUEVFRF9TUElfTUFYX0NTKTsNCj4gPiArDQo+ID4gKwkvKiBJbml0aWFsIGVhY2ggQ1Mg Y29udHJvbGxlciByZWdpc3RlciAqLw0KPiA+ICsJZm9yIChjcyA9IDA7IGNzIDwgcHJpdi0+bnVt X2NzOyBjcysrKSB7DQo+ID4gKwkJcHJpdi0+Zmxhc2hlc1tjc10uY2VfY3RybF91c2VyICY9DQo+ ID4gKwkJCQl+KHByaXYtPmluZm8tPmNtZF9pb19jdHJsX21hc2spOw0KPiA+ICsJCXByaXYtPmZs YXNoZXNbY3NdLmNlX2N0cmxfdXNlciB8PQ0KPiA+ICsJCQkJKENUUkxfU1RPUF9BQ1RJVkUgfCBD VFJMX0lPX01PREVfVVNFUik7DQo+ID4gKwkJd3JpdGVsKHByaXYtPmZsYXNoZXNbY3NdLmNlX2N0 cmxfdXNlciwNCj4gPiArCQkgICAgICAgcGxhdC0+Y3RybF9iYXNlICsgUkVHX0NFMF9DVFJMX1JF RyArIGNzICogNCk7DQo+ID4gKwl9DQo+ID4NCj4gDQo+IGFuZCB3ZSBzaG91bGQgc3RhcnQgYnkg c2V0dGluZyBzYW5lIGRlZmF1bHRzIGZvciB0aGUgcmFuZ2VzLg0KPiANCj4gSXQncyB0b28gZWFy bHkgdG8gYWRkIHRoZSBkZWNvZGluZyByYW5nZXMgY2FsY3VsYXRpb24uDQoNCk9rYXkuDQoNCj4g DQo+IFRoYW5rcywNCj4gDQo+IEMuDQo+IA0KPiA+ICsJbWVtc2V0KHByaXYtPmRlY29kZWRfc3pf YXJyLCAweDAsIHNpemVvZih1MzIpICogQVNQRUVEX1NQSV9NQVhfQ1MpOw0KPiA+ICsNCj4gPiAr CWZvciAoY3MgPSAwOyBjcyA8IHByaXYtPm51bV9jczsgY3MrKykgew0KPiA+ICsJCXJlZ192YWwg PSByZWFkbChwbGF0LT5jdHJsX2Jhc2UgKyBSRUdfQ0UwX0RFQ09ERURfQUREUl9SRUcgKw0KPiBj cyAqIDQpOw0KPiA+ICsJCWRlY29kZWRfc3ogPSBwcml2LT5pbmZvLT5zZWdtZW50X2VuZChidXMs IHJlZ192YWwpIC0NCj4gPiArCQkJICAgICBwcml2LT5pbmZvLT5zZWdtZW50X3N0YXJ0KGJ1cywg cmVnX3ZhbCk7DQo+ID4gKw0KPiA+ICsJCS8qDQo+ID4gKwkJICogRm9yIENTMCwgaWYgdGhlIGRl ZmF1bHQgYWRkcmVzcyBkZWNvZGVkIGFyZWEgZXhpc3RzLA0KPiA+ICsJCSAqIGtlZXAgaXRzIHZh bHVlIGluIG9yZGVyIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSB3aG9sZSBib290DQo+ID4gKwkJICog aW1hZ2UgY2FuIGJlIGFjY2Vzc2VkIHdpdGggbm9ybWFsIHJlYWQgbW9kZS4NCj4gPiArCQkgKi8N Cj4gPiArCQlpZiAoY3MgPT0gMCAmJiBkZWNvZGVkX3N6ICE9IDApDQo+ID4gKwkJCXByaXYtPmRl Y29kZWRfc3pfYXJyW2NzXSA9IGRlY29kZWRfc3o7DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQlwcml2 LT5kZWNvZGVkX3N6X2Fycltjc10gPSBwcml2LT5pbmZvLT5taW5fZGVjb2RlZF9zejsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwlyZXQgPSBhc3BlZWRfc3BpX2RlY29kZWRfcmFuZ2VfY29uZmlnKGJ1 cywgcHJpdi0+ZGVjb2RlZF9zel9hcnIpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9pbmZvIGFzdDI1 MDBfZm1jX2luZm8gPSB7DQo+ID4gKwkubWF4X2RhdGFfYnVzX3dpZHRoID0gMiwNCj4gPiArCS5j bWRfaW9fY3RybF9tYXNrID0gMHg3MGZmNDBjMywNCj4gPiArCS5jbGtfY3RybF9tYXNrID0gMHgw MDAwMmYwMCwNCj4gPiArCS5taW5fZGVjb2RlZF9zeiA9IDB4ODAwMDAwLA0KPiA+ICsJLnNldF80 Ynl0ZSA9IGFzdDI1MDBfc3BpX2NoaXBfc2V0XzRieXRlLA0KPiA+ICsJLnNlZ21lbnRfc3RhcnQg PSBhc3QyNTAwX3NwaV9zZWdtZW50X3N0YXJ0LA0KPiA+ICsJLnNlZ21lbnRfZW5kID0gYXN0MjUw MF9zcGlfc2VnbWVudF9lbmQsDQo+ID4gKwkuc2VnbWVudF9yZWcgPSBhc3QyNTAwX3NwaV9zZWdt ZW50X3JlZywNCj4gPiArCS5hZGp1c3RfZGVjb2RlZF9zeiA9IGFzdDI1MDBfYWRqdXN0X2RlY29k ZWRfc2l6ZSwNCj4gPiArCS5nZXRfY2xrX3NldHRpbmcgPSBhc3QyNTAwX2dldF9jbGtfc2V0dGlu ZywgfTsNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFRoZXJlIGFyZSBzb21lIGRpZmZlcmVudCBi ZXR3ZWVuIEZNQyBhbmQgU1BJIGNvbnRyb2xsZXJzLg0KPiA+ICsgKiBGb3IgZXhhbXBsZSwgRE1B IG9wZXJhdGlvbiwgYnV0IHRoaXMgaXNuJ3QgaW1wbGVtZW50ZWQgY3VycmVudGx5Lg0KPiA+ICsg Ki8NCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc3BpX2luZm8gYXN0MjUwMF9zcGlf aW5mbyA9IHsNCj4gPiArCS5tYXhfZGF0YV9idXNfd2lkdGggPSAyLA0KPiA+ICsJLmNtZF9pb19j dHJsX21hc2sgPSAweDcwZmY0MGMzLA0KPiA+ICsJLmNsa19jdHJsX21hc2sgPSAweDAwMDAyZjAw LA0KPiA+ICsJLm1pbl9kZWNvZGVkX3N6ID0gMHg4MDAwMDAsDQo+ID4gKwkuc2V0XzRieXRlID0g YXN0MjUwMF9zcGlfY2hpcF9zZXRfNGJ5dGUsDQo+ID4gKwkuc2VnbWVudF9zdGFydCA9IGFzdDI1 MDBfc3BpX3NlZ21lbnRfc3RhcnQsDQo+ID4gKwkuc2VnbWVudF9lbmQgPSBhc3QyNTAwX3NwaV9z ZWdtZW50X2VuZCwNCj4gPiArCS5zZWdtZW50X3JlZyA9IGFzdDI1MDBfc3BpX3NlZ21lbnRfcmVn LA0KPiA+ICsJLmFkanVzdF9kZWNvZGVkX3N6ID0gYXN0MjUwMF9hZGp1c3RfZGVjb2RlZF9zaXpl LA0KPiA+ICsJLmdldF9jbGtfc2V0dGluZyA9IGFzdDI1MDBfZ2V0X2Nsa19zZXR0aW5nLCB9Ow0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc3BpX2luZm8gYXN0MjYwMF9m bWNfaW5mbyA9IHsNCj4gPiArCS5tYXhfZGF0YV9idXNfd2lkdGggPSA0LA0KPiA+ICsJLmNtZF9p b19jdHJsX21hc2sgPSAweGYwZmY0MGMzLA0KPiA+ICsJLmNsa19jdHJsX21hc2sgPSAweDBmMDAw ZjAwLA0KPiA+ICsJLm1pbl9kZWNvZGVkX3N6ID0gMHgyMDAwMDAsDQo+ID4gKwkuc2V0XzRieXRl ID0gYXN0MjYwMF9zcGlfY2hpcF9zZXRfNGJ5dGUsDQo+ID4gKwkuc2VnbWVudF9zdGFydCA9IGFz dDI2MDBfc3BpX3NlZ21lbnRfc3RhcnQsDQo+ID4gKwkuc2VnbWVudF9lbmQgPSBhc3QyNjAwX3Nw aV9zZWdtZW50X2VuZCwNCj4gPiArCS5zZWdtZW50X3JlZyA9IGFzdDI2MDBfc3BpX3NlZ21lbnRf cmVnLA0KPiA+ICsJLmFkanVzdF9kZWNvZGVkX3N6ID0gYXN0MjYwMF9hZGp1c3RfZGVjb2RlZF9z aXplLA0KPiA+ICsJLmdldF9jbGtfc2V0dGluZyA9IGFzdDI2MDBfZ2V0X2Nsa19zZXR0aW5nLCB9 Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc3BpX2luZm8gYXN0MjYw MF9zcGlfaW5mbyA9IHsNCj4gPiArCS5tYXhfZGF0YV9idXNfd2lkdGggPSA0LA0KPiA+ICsJLmNt ZF9pb19jdHJsX21hc2sgPSAweGYwZmY0MGMzLA0KPiA+ICsJLmNsa19jdHJsX21hc2sgPSAweDBm MDAwZjAwLA0KPiA+ICsJLm1pbl9kZWNvZGVkX3N6ID0gMHgyMDAwMDAsDQo+ID4gKwkuc2V0XzRi eXRlID0gYXN0MjYwMF9zcGlfY2hpcF9zZXRfNGJ5dGUsDQo+ID4gKwkuc2VnbWVudF9zdGFydCA9 IGFzdDI2MDBfc3BpX3NlZ21lbnRfc3RhcnQsDQo+ID4gKwkuc2VnbWVudF9lbmQgPSBhc3QyNjAw X3NwaV9zZWdtZW50X2VuZCwNCj4gPiArCS5zZWdtZW50X3JlZyA9IGFzdDI2MDBfc3BpX3NlZ21l bnRfcmVnLA0KPiA+ICsJLmFkanVzdF9kZWNvZGVkX3N6ID0gYXN0MjYwMF9hZGp1c3RfZGVjb2Rl ZF9zaXplLA0KPiA+ICsJLmdldF9jbGtfc2V0dGluZyA9IGFzdDI2MDBfZ2V0X2Nsa19zZXR0aW5n LCB9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhc3BlZWRfc3BpX2NsYWltX2J1cyhzdHJ1Y3Qg dWRldmljZSAqZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgdWRldmljZSAqYnVzID0gZGV2LT5wYXJlbnQ7 DQo+ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dldF9wcml2KGRldi0+ cGFyZW50KTsNCj4gPiArCXN0cnVjdCBkbV9zcGlfc2xhdmVfcGxhdCAqc2xhdmVfcGxhdCA9IGRl dl9nZXRfcGFyZW50X3BsYXQoZGV2KTsNCj4gPiArCXN0cnVjdCBhc3BlZWRfc3BpX2ZsYXNoICpm bGFzaCA9ICZwcml2LT5mbGFzaGVzW3NsYXZlX3BsYXQtPmNzXTsNCj4gPiArCXUzMiBjbGtfc2V0 dGluZzsNCj4gPiArDQo+ID4gKwlkZXZfZGJnKGJ1cywgIiVzOiBjbGFpbSBidXMgQ1MldVxuIiwg YnVzLT5uYW1lLCBzbGF2ZV9wbGF0LT5jcyk7DQo+ID4gKw0KPiA+ICsJaWYgKGZsYXNoLT5tYXhf ZnJlcSA9PSAwKSB7DQo+ID4gKwkJY2xrX3NldHRpbmcgPSBwcml2LT5pbmZvLT5nZXRfY2xrX3Nl dHRpbmcoZGV2LCBzbGF2ZV9wbGF0LT5tYXhfaHopOw0KPiA+ICsJCWZsYXNoLT5jZV9jdHJsX3Vz ZXIgJj0gfihwcml2LT5pbmZvLT5jbGtfY3RybF9tYXNrKTsNCj4gPiArCQlmbGFzaC0+Y2VfY3Ry bF91c2VyIHw9IGNsa19zZXR0aW5nOw0KPiA+ICsJCWZsYXNoLT5jZV9jdHJsX3JlYWQgJj0gfihw cml2LT5pbmZvLT5jbGtfY3RybF9tYXNrKTsNCj4gPiArCQlmbGFzaC0+Y2VfY3RybF9yZWFkIHw9 IGNsa19zZXR0aW5nOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFzcGVlZF9zcGlfcmVsZWFzZV9idXMoc3RydWN0IHVkZXZp Y2UgKmRldikgew0KPiA+ICsJc3RydWN0IHVkZXZpY2UgKmJ1cyA9IGRldi0+cGFyZW50Ow0KPiA+ ICsJc3RydWN0IGRtX3NwaV9zbGF2ZV9wbGF0ICpzbGF2ZV9wbGF0ID0gZGV2X2dldF9wYXJlbnRf cGxhdChkZXYpOw0KPiA+ICsNCj4gPiArCWRldl9kYmcoYnVzLCAiJXM6IHJlbGVhc2UgYnVzIENT JXVcbiIsIGJ1cy0+bmFtZSwgc2xhdmVfcGxhdC0+Y3MpOw0KPiA+ICsNCj4gPiArCWlmICghYXNw ZWVkX3NwaV9nZXRfZmxhc2goZGV2KSkNCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gPiArDQo+ ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhc3BlZWRfc3Bp X3NldF9tb2RlKHN0cnVjdCB1ZGV2aWNlICpidXMsIHVpbnQgbW9kZSkgew0KPiA+ICsJZGV2X2Ri ZyhidXMsICIlczogc2V0dGluZyBtb2RlIHRvICV4XG4iLCBidXMtPm5hbWUsIG1vZGUpOw0KPiA+ ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFzcGVl ZF9zcGlfc2V0X3NwZWVkKHN0cnVjdCB1ZGV2aWNlICpidXMsIHVpbnQgaHopIHsNCj4gPiArCWRl dl9kYmcoYnVzLCAiJXM6IHNldHRpbmcgc3BlZWQgdG8gJXVcbiIsIGJ1cy0+bmFtZSwgaHopOw0K PiA+ICsJLyogQVNQRUVEIFNQSSBjb250cm9sbGVyIHN1cHBvcnRzIG11bHRpcGxlIENTIHdpdGgg ZGlmZmVyZW50DQo+ID4gKwkgKiBjbG9jayBmcmVxdWVuY3kuIFdlIGNhbm5vdCBkaXN0aW5ndWlz aCB3aGljaCBDUyBoZXJlLg0KPiA+ICsJICogVGh1cywgdGhlIHJlbGF0ZWQgaW1wbGVtZW50YXRp b24gaXMgcG9zdHBvbmVkIHRvIGNsYWltX2J1cy4NCj4gPiArCSAqLw0KPiA+ICsNCj4gPiArCXJl dHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFwc2VlZF9zcGlfb2ZfdG9f cGxhdChzdHJ1Y3QgdWRldmljZSAqYnVzKSB7DQo+ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wbGF0 ICpwbGF0ID0gZGV2X2dldF9wbGF0KGJ1cyk7DQo+ID4gKwlzdHJ1Y3QgY2xrIGhjbGs7DQo+ID4g KwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXBsYXQtPmN0cmxfYmFzZSA9IGRldmZkdF9nZXRfYWRk cl9pbmRleChidXMsIDApOw0KPiA+ICsJaWYgKCh1MzIpcGxhdC0+Y3RybF9iYXNlID09IEZEVF9B RERSX1RfTk9ORSkgew0KPiA+ICsJCWRldl9lcnIoYnVzLCAid3JvbmcgQUhCIGJhc2VcbiIpOw0K PiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXBsYXQtPmFoYl9i YXNlID0NCj4gPiArCQkodm9pZCBfX2lvbWVtICopZGV2ZmR0X2dldF9hZGRyX3NpemVfaW5kZXgo YnVzLCAxLCAmcGxhdC0+YWhiX3N6KTsNCj4gPiArCWlmICgodTMyKXBsYXQtPmFoYl9iYXNlID09 IEZEVF9BRERSX1RfTk9ORSkgew0KPiA+ICsJCWRldl9lcnIoYnVzLCAid3JvbmcgQUhCIGJhc2Vc biIpOw0KPiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldCA9 IGNsa19nZXRfYnlfaW5kZXgoYnVzLCAwLCAmaGNsayk7DQo+ID4gKwlpZiAocmV0IDwgMCkgew0K PiA+ICsJCWRldl9lcnIoYnVzLCAiJXMgY291bGQgbm90IGdldCBjbG9jazogJWRcbiIsIGJ1cy0+ bmFtZSwgcmV0KTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXBs YXQtPmhjbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZSgmaGNsayk7DQo+ID4gKwljbGtfZnJlZSgmaGNs ayk7DQo+ID4gKw0KPiA+ICsJcGxhdC0+bWF4X2NzID0gZGV2X3JlYWRfdTMyX2RlZmF1bHQoYnVz LCAibnVtLWNzIiwNCj4gQVNQRUVEX1NQSV9NQVhfQ1MpOw0KPiA+ICsJaWYgKHBsYXQtPm1heF9j cyA+IEFTUEVFRF9TUElfTUFYX0NTKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4g PiArCWRldl9kYmcoYnVzLCAiY3RybF9iYXNlID0gMHglbHgsIGFoYl9iYXNlID0gMHglcCwgc2l6 ZSA9IDB4JWx4XG4iLA0KPiA+ICsJCXBsYXQtPmN0cmxfYmFzZSwgcGxhdC0+YWhiX2Jhc2UsIHBs YXQtPmFoYl9zeik7DQo+ID4gKwlkZXZfZGJnKGJ1cywgImhjbGsgPSAlZE1IeiwgbWF4X2NzID0g JWRcbiIsDQo+ID4gKwkJcGxhdC0+aGNsa19yYXRlIC8gMTAwMDAwMCwgcGxhdC0+bWF4X2NzKTsN Cj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBh c3BlZWRfc3BpX3Byb2JlKHN0cnVjdCB1ZGV2aWNlICpidXMpIHsNCj4gPiArCWludCByZXQ7DQo+ ID4gKwlzdHJ1Y3QgYXNwZWVkX3NwaV9wcml2ICpwcml2ID0gZGV2X2dldF9wcml2KGJ1cyk7DQo+ ID4gKwlzdHJ1Y3QgdWRldmljZSAqZGV2Ow0KPiA+ICsNCj4gPiArCXByaXYtPmluZm8gPSAoc3Ry dWN0IGFzcGVlZF9zcGlfaW5mbyAqKWRldl9nZXRfZHJpdmVyX2RhdGEoYnVzKTsNCj4gPiArDQo+ ID4gKwlwcml2LT5udW1fY3MgPSAwOw0KPiA+ICsJZm9yIChkZXZpY2VfZmluZF9maXJzdF9jaGls ZChidXMsICZkZXYpOyBkZXY7DQo+ID4gKwkgICAgIGRldmljZV9maW5kX25leHRfY2hpbGQoJmRl dikpIHsNCj4gPiArCQlwcml2LT5udW1fY3MrKzsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAo cHJpdi0+bnVtX2NzID4gQVNQRUVEX1NQSV9NQVhfQ1MpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+ID4gKw0KPiA+ICsJcmV0ID0gYXNwZWVkX3NwaV9jdHJsX2luaXQoYnVzKTsNCj4gPiArDQo+ ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHNwaV9jb250cm9sbGVyX21lbV9vcHMgYXNwZWVkX3NwaV9tZW1fb3BzID0gew0KPiA+ICsJLnN1 cHBvcnRzX29wID0gYXNwZWVkX3NwaV9zdXBwb3J0c19vcCwNCj4gPiArCS5leGVjX29wID0gYXNw ZWVkX3NwaV9leGVjX29wX3VzZXJfbW9kZSwgfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZG1fc3BpX29wcyBhc3BlZWRfc3BpX29wcyA9IHsNCj4gPiArCS5jbGFpbV9idXMgPSBh c3BlZWRfc3BpX2NsYWltX2J1cywNCj4gPiArCS5yZWxlYXNlX2J1cyA9IGFzcGVlZF9zcGlfcmVs ZWFzZV9idXMsDQo+ID4gKwkuc2V0X3NwZWVkID0gYXNwZWVkX3NwaV9zZXRfc3BlZWQsDQo+ID4g Kwkuc2V0X21vZGUgPSBhc3BlZWRfc3BpX3NldF9tb2RlLA0KPiA+ICsJLm1lbV9vcHMgPSAmYXNw ZWVkX3NwaV9tZW1fb3BzLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCB1ZGV2aWNlX2lkIGFzcGVlZF9zcGlfaWRzW10gPSB7DQo+ID4gKwl7IC5jb21wYXRpYmxlID0g ImFzcGVlZCxhc3QyNTAwLWZtYyIsIC5kYXRhID0NCj4gKHVsb25nKSZhc3QyNTAwX2ZtY19pbmZv LCB9LA0KPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhc3BlZWQsYXN0MjUwMC1zcGkiLCAuZGF0YSA9 ICh1bG9uZykmYXN0MjUwMF9zcGlfaW5mbywgfSwNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAiYXNw ZWVkLGFzdDI2MDAtZm1jIiwgLmRhdGEgPQ0KPiAodWxvbmcpJmFzdDI2MDBfZm1jX2luZm8sIH0s DQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImFzcGVlZCxhc3QyNjAwLXNwaSIsIC5kYXRhID0gKHVs b25nKSZhc3QyNjAwX3NwaV9pbmZvLCB9LA0KPiA+ICsJeyB9DQo+ID4gK307DQo+ID4gKw0KPiA+ ICtVX0JPT1RfRFJJVkVSKGFzcGVlZF9zcGkpID0gew0KPiA+ICsJLm5hbWUgPSAiYXNwZWVkX3Nw aSIsDQo+ID4gKwkuaWQgPSBVQ0xBU1NfU1BJLA0KPiA+ICsJLm9mX21hdGNoID0gYXNwZWVkX3Nw aV9pZHMsDQo+ID4gKwkub3BzID0gJmFzcGVlZF9zcGlfb3BzLA0KPiA+ICsJLm9mX3RvX3BsYXQg PSBhcHNlZWRfc3BpX29mX3RvX3BsYXQsDQo+ID4gKwkucGxhdF9hdXRvID0gc2l6ZW9mKHN0cnVj dCBhc3BlZWRfc3BpX3BsYXQpLA0KPiA+ICsJLnByaXZfYXV0byA9IHNpemVvZihzdHJ1Y3QgYXNw ZWVkX3NwaV9wcml2KSwNCj4gPiArCS5wcm9iZSA9IGFzcGVlZF9zcGlfcHJvYmUsDQo+ID4gK307 DQoNCg==