From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.5 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_RHS_DOB autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A09FC33CA1 for ; Mon, 20 Jan 2020 04:23:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3FF792070C for ; Mon, 20 Jan 2020 04:23:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=NETORG5796793.onmicrosoft.com header.i=@NETORG5796793.onmicrosoft.com header.b="CmFONoy8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729108AbgATEXU (ORCPT ); Sun, 19 Jan 2020 23:23:20 -0500 Received: from mail-co1nam11on2067.outbound.protection.outlook.com ([40.107.220.67]:20281 "EHLO NAM11-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729049AbgATEXT (ORCPT ); Sun, 19 Jan 2020 23:23:19 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CpmSZ++1tf3r4IH3fDXVYC8eiyqSEHMu1ICQcjJU+YqLs/5GUK5tSw+d1STenxqggyKvq1IcbdYZmkBvXrKyWGIffCKBkGIJ7XcXU5aGOEyhLAhmTEVM3AVlEmxm7D4BaW0zOURIDD3FYtgUOcubGWt4CIxC2fAYcuhOeASPjHWask2uGtF162uMT8wQmRaxV6MLrSVs99k/yMZEwbOshj+TIlV1lr7jMqnhjLE2u0FlKzzYtOq/50624iCHsASVEtTotM88ee57e1qAiVC+e0dKvICLhW7Z1TdNb7v16a2mP61Nb8Kg3n72vhJrKE/WZl5W1BvlMkWix7fPOJJqEw== 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-SenderADCheck; bh=+5FX1GxY2hCsdlC7hoZEheSodXJ+zl1keEbJcu9nWow=; b=PjcbZRALpwI7VXzFO4tUgU7INezvxDkHBjtMXCqV8gtakPl1kkwwoufJaJVV/6RYL1mCATvSRJC53o9eXm5DXJkIVC1i/u40BMfiO5A3GTfR6HMco/VAMzZisB10RCVu5hzeASCX/cWK+uiwwb1pOvPfnvDTr1javnZcg8qlJZTfucRyJ9tq6ia4U7hyyG2TPtgpsVnWUxmqRksIlNJNse8J+UQ7VuuwmueHyYL/4wJiu1B7JF+f87q7zpznL/77UxAdysFUXIEV382shOXVTBNYAW9ohxw2x4pr4q9YqnRn636l13DJE9xZpKMmaPaLsEHWPK2RWpbBaWDPAx4z+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=labundy.com; dmarc=pass action=none header.from=labundy.com; dkim=pass header.d=labundy.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NETORG5796793.onmicrosoft.com; s=selector1-NETORG5796793-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+5FX1GxY2hCsdlC7hoZEheSodXJ+zl1keEbJcu9nWow=; b=CmFONoy84ixB30nn+kw939zqtH9hFVa4zkcPXc/W7DYiAw1ZvawbYUpcWgDAJ5EQMI7ppr9Fr37wynGoa+RlT4Bz/iqHxARP+0j8GnEcPGPNpdYWULenrTa5+Zjmc/VUL/T6q4vEqlgXPrWLZQXcxLd2Qgo48cckM4xtgo9d5Io= Received: from SN6PR08MB5053.namprd08.prod.outlook.com (52.135.107.153) by SN6PR08MB5279.namprd08.prod.outlook.com (52.135.116.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.19; Mon, 20 Jan 2020 04:23:07 +0000 Received: from SN6PR08MB5053.namprd08.prod.outlook.com ([fe80::7c80:2b62:5d9a:2139]) by SN6PR08MB5053.namprd08.prod.outlook.com ([fe80::7c80:2b62:5d9a:2139%4]) with mapi id 15.20.2644.024; Mon, 20 Jan 2020 04:23:07 +0000 Received: from labundy.com (136.49.227.119) by SN4PR0501CA0124.namprd05.prod.outlook.com (2603:10b6:803:42::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.12 via Frontend Transport; Mon, 20 Jan 2020 04:23:05 +0000 From: Jeff LaBundy To: Lee Jones CC: "dmitry.torokhov@gmail.com" , "thierry.reding@gmail.com" , "jic23@kernel.org" , "devicetree@vger.kernel.org" , "linux-input@vger.kernel.org" , "u.kleine-koenig@pengutronix.de" , "linux-pwm@vger.kernel.org" , "knaack.h@gmx.de" , "lars@metafoo.de" , "pmeerw@pmeerw.net" , "linux-iio@vger.kernel.org" , "robh+dt@kernel.org" , "mark.rutland@arm.com" Subject: Re: [PATCH v4 2/7] mfd: Add support for Azoteq IQS620A/621/622/624/625 Thread-Topic: [PATCH v4 2/7] mfd: Add support for Azoteq IQS620A/621/622/624/625 Thread-Index: AQHVzN7LS9UVe3hXOEa6+dol5orE9afu2GCAgAQgfoA= Date: Mon, 20 Jan 2020 04:23:06 +0000 Message-ID: <20200120042303.GC28865@labundy.com> References: <1579228475-6681-1-git-send-email-jeff@labundy.com> <1579228475-6681-3-git-send-email-jeff@labundy.com> <20200117132143.GK15507@dell> In-Reply-To: <20200117132143.GK15507@dell> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SN4PR0501CA0124.namprd05.prod.outlook.com (2603:10b6:803:42::41) To SN6PR08MB5053.namprd08.prod.outlook.com (2603:10b6:805:78::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=jeff@labundy.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [136.49.227.119] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e0025ee4-0506-40b6-85fa-08d79d60728a x-ms-traffictypediagnostic: SN6PR08MB5279: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0288CD37D9 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(136003)(39830400003)(396003)(346002)(376002)(199004)(189003)(5660300002)(86362001)(30864003)(52116002)(4326008)(8886007)(26005)(55016002)(7696005)(966005)(33656002)(508600001)(2906002)(71200400001)(956004)(186003)(2616005)(1076003)(54906003)(316002)(16526019)(7416002)(66476007)(66446008)(66556008)(64756008)(81166006)(8676002)(66946007)(36756003)(6916009)(81156014)(8936002)(461764006)(559001)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR08MB5279;H:SN6PR08MB5053.namprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: labundy.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6RkxNjQPBsHgoTguaNpI4qewLnUNpnPrae91SGBZxf8m12Pa8OGuLSgkX94WoEaHPFI6tnkiSLcgJuEw5vKuqbdLNpg3x6ouyITEEUGLVE6itfsZxm8tQQcG2pToDGz9kOciZmuDaAHQ1kO7DcZphfrj0+lWSNB2wJCHLV1BnpsBG9djKIzbPjoKbl+B44/hTA0XJXIM5+kn1dTGMI4/G+zNxebd7G1qdLcwGjxtCPfd3ejn6ZuKfHNyiA4JVTTBHn9jCkb0c98v/sSUPL1Ug8HtiRwbInd08F/ldl4V9OQsCnrS3sSEQIkXPxDQZtYqShk4Df1dQzyq+LiYqit30GReivHm/M6Rli2l+Nv1OLy76Bh0piBOJIzJopMJJuam2TRnhNF9RsABJc2KLE152184msoh9FLDrhzKeU9seqwqZN5nLM9GZ7m0limTlU1vUtcmPqT5/lf/VWnBnb13sMztBieVfy56rlSlikUJ5xtA0j1wU4DGn+VR1lIGLHCPWogs8/VnfW5ZmDBNRNvJpjSDMkZsMkJDEy6++dPwPXti3erhMIn3kUZC3ZYqdVe4Rqk50Ji6tO6XABk4MLZANg== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: labundy.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0025ee4-0506-40b6-85fa-08d79d60728a X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jan 2020 04:23:06.8272 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 00b69d09-acab-4585-aca7-8fb7c6323e6f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YjcKGJGfFajOzQGR6i7SRIGwbBn0IbL6Kr56lReS0mVM+eKgXqVzm/Bg/7sHoqUrg0/4sQzn9fMU9e39+3XAIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR08MB5279 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org SGkgTGVlLA0KDQpUaGFuayB5b3UgZm9yIHlvdXIgY29udGludWVkIHN1cHBvcnQgYW5kIHRob3Jv dWdoIHJldmlldy4NCg0KT24gRnJpLCBKYW4gMTcsIDIwMjAgYXQgMDE6MjE6NDNQTSArMDAwMCwg TGVlIEpvbmVzIHdyb3RlOg0KPiBPbiBGcmksIDE3IEphbiAyMDIwLCBKZWZmIExhQnVuZHkgd3Jv dGU6DQo+IA0KPiA+IFRoaXMgcGF0Y2ggYWRkcyBjb3JlIHN1cHBvcnQgZm9yIHRoZSBBem90ZXEg SVFTNjIwQSwgSVFTNjIxLCBJUVM2MjIsDQo+ID4gSVFTNjI0IGFuZCBJUVM2MjUgbXVsdGktZnVu Y3Rpb24gc2Vuc29ycy4NCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBKZWZmIExhQnVuZHkgPGpl ZmZAbGFidW5keS5jb20+DQo+ID4gLS0tDQo+ID4gQ2hhbmdlcyBpbiB2NDoNCj4gPiAgIC0gTm9u ZQ0KPiA+IA0KPiA+IENoYW5nZXMgaW4gdjM6DQo+ID4gICAtIE5vbmUNCj4gPiANCj4gPiBDaGFu Z2VzIGluIHYyOg0KPiA+ICAgLSBNZXJnZWQgJ0NvcHlyaWdodCcgYW5kICdBdXRob3InIGxpbmVz IGludG8gb25lIGluIGludHJvZHVjdG9yeSBjb21tZW50cw0KPiA+ICAgLSBSZXBsYWNlZCAnZXJy b3InIHdpdGggJ3JldCcgdGhyb3VnaG91dA0KPiA+ICAgLSBVcGRhdGVkIGlxczYyeF9kZXZfaW5p dCB0byBhY2NvdW50IGZvciA0LzgvMTYtTUh6IGNsb2NrIGRpdmlkZXIgaW4gc3RhcnQtdXANCj4g PiAgICAgZGVsYXlzIGFuZCByZXBsYWNlZCBBVEkgdGltZW91dCByb3V0aW5lIHdpdGggcmVnbWFw X3JlYWRfcG9sbF90aW1lb3V0DQo+ID4gICAtIEFkZGVkIGFuIGVycm9yIG1lc3NhZ2UgdG8gaXFz NjJ4X2lycSBpbiBjYXNlIGRldmljZSBzdGF0dXMgZmFpbHMgdG8gYmUgcmVhZA0KPiA+ICAgLSBS ZXBsYWNlZCBzd19udW0gbWVtYmVyIG9mIGlxczYyeF9jb3JlIHdpdGggYSBsb2NhbCB2YXJpYWJs ZSBpbiBpcXM2MnhfcHJvYmUNCj4gPiAgICAgYXMgdGhlIGZvcm1lciB3YXMgdW51c2VkIGFueXdo ZXJlIGVsc2UNCj4gPiAgIC0gQWRkZWQgY29tbWVudHMgdGhyb3VnaG91dCBpcXM2MnhfcHJvYmUg dG8gY2xhcmlmeSBob3cgZGV2aWNlcyBhcmUgbWF0Y2hlZA0KPiA+ICAgICBiYXNlZCBvbiB0aGUg cHJlc2VuY2Ugb2YgY2FsaWJyYXRpb24gZGF0YQ0KPiA+ICAgLSBJbnZlcnRlZCB0aGUgcHJvZHVj dCBhbmQgc29mdHdhcmUgbnVtYmVyIGNvbXBhcmlzb24gbG9naWMgaW4gaXFzNjJ4X3Byb2JlDQo+ ID4gICAgIHRvIGF2b2lkIGFuIGVsc2UuLi5jb250aW51ZSBicmFuY2gNCj4gPiAgIC0gQ2hhbmdl ZCBpcXM2MnhfcHJvYmUgZnJvbSAucHJvYmUgY2FsbGJhY2sgdG8gLnByb2JlX25ldyBjYWxsYmFj aywgdGhlcmVieQ0KPiA+ICAgICBlbGltaW5hdGluZyB0aGUgb3RoZXJ3aXNlIHVudXNlZCBpcXM2 MnhfaWQgYXJyYXkNCj4gPiAgIC0gTW92ZWQgaXFzNjJ4X3N1c3BlbmQgYW5kIGlxczYyeF9yZXN1 bWUgYmVsb3cgaXFzNjJ4X3JlbW92ZQ0KPiA+ICAgLSBFbGltaW5hdGVkIHRhYmJlZCBhbGlnbm1l bnQgb2YgcmVnbWFwX2NvbmZpZyBhbmQgaTJjX2RyaXZlciBzdHJ1Y3QgbWVtYmVycw0KPiA+ICAg LSBBZGRlZCByZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgcmVnaXN0ZXIgYWRkcmVzc2VzIHVzZWQg aW4gaXFzNjIxX2NhbF9yZWdzLA0KPiA+ICAgICBpcXM2MjBhdF9jYWxfcmVncyBhbmQgaXFzNjJ4 X2RldnMgYXJyYXlzDQo+ID4gICAtIFJlbW92ZWQgb2ZfY29tcGF0aWJsZSBzdHJpbmcgZnJvbSBJ UVM2MjIgbWZkX2NlbGwgc3RydWN0IGFzIGl0cyBwcm94aW1pdHkNCj4gPiAgICAgKG5vdyBhbWJp ZW50IGxpZ2h0KSBzZW5zaW5nIGZ1bmN0aW9uYWxpdHkgbmVlZCBub3QgYmUgcmVwcmVzZW50ZWQg dXNpbmcgYQ0KPiA+ICAgICBjaGlsZCBub2RlDQo+ID4gICAtIERpc3NvbHZlZCB1bmlvbiBpbiBp cXM2MnhfZXZlbnRfZGF0YSB0byBhbGxvdyBzaW11bHRhbmVvdXMgdXNlIG9mIGlyX2ZsYWdzDQo+ ID4gICAgIGFuZCBhbHNfZmxhZ3MNCj4gPiAgIC0gUmVtb3ZlZCB0ZW1wX2ZsYWdzIG1lbWJlciBv ZiBpcXM2MnhfZXZlbnRfZGF0YSwgSVFTNjJYX0VWRU5UX1RFTVAgcmVnaXN0ZXINCj4gPiAgICAg ZW51bWVyYXRpb24gYW5kIElRUzYyWF9FVkVOVF9VSV9ISS9MTyBmcm9tIGlxczYyMGFfZXZlbnRf cmVncyAodGhlcmVieSByZS0NCj4gPiAgICAgZHVjaW5nIElRUzYyWF9FVkVOVF9TSVpFIHRvIDEw KSBhcyB0aGV5IHdlcmUgdW51c2VkDQo+ID4gDQo+ID4gIGRyaXZlcnMvbWZkL0tjb25maWcgICAg ICAgICB8ICAxMyArDQo+ID4gIGRyaXZlcnMvbWZkL01ha2VmaWxlICAgICAgICB8ICAgMyArDQo+ ID4gIGRyaXZlcnMvbWZkL2lxczYyeC1jb3JlLmMgICB8IDYzOSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL21mZC9pcXM2MngtdGFibGVz LmMgfCA0MzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGluY2x1ZGUvbGlu dXgvbWZkL2lxczYyeC5oICB8IDE0NiArKysrKysrKysrDQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwg MTIzOSBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9p cXM2MngtY29yZS5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9pcXM2Mngt dGFibGVzLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWZkL2lxczYy eC5oDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL0tjb25maWcgYi9kcml2ZXJz L21mZC9LY29uZmlnDQo+ID4gaW5kZXggNDIwOTAwOC4uMTUxOTg0YyAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL21mZC9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9tZmQvS2NvbmZpZw0KPiA+ IEBAIC02NDIsNiArNjQyLDE5IEBAIGNvbmZpZyBNRkRfSVBBUV9NSUNSTw0KPiA+ICAJICBBVDkw TFM4NTM1IG1pY3JvY29udHJvbGxlciBmbGFzaGVkIHdpdGggYSBzcGVjaWFsIGlQQVENCj4gPiAg CSAgZmlybXdhcmUgdXNpbmcgdGhlIGN1c3RvbSBwcm90b2NvbCBpbXBsZW1lbnRlZCBpbiB0aGlz IGRyaXZlci4NCj4gPiANCj4gPiArY29uZmlnIE1GRF9JUVM2MlgNCj4gPiArCXRyaXN0YXRlICJB em90ZXEgSVFTNjIwQS82MjEvNjIyLzYyNC82MjUgY29yZSBzdXBwb3J0Ig0KPiA+ICsJZGVwZW5k cyBvbiBJMkMNCj4gPiArCXNlbGVjdCBNRkRfQ09SRQ0KPiA+ICsJc2VsZWN0IFJFR01BUF9JMkMN Cj4gPiArCWhlbHANCj4gPiArCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCBjb3Jl IHN1cHBvcnQgZm9yIHRoZSBBem90ZXEgSVFTNjIwQSwNCj4gPiArCSAgSVFTNjIxLCBJUVM2MjIs IElRUzYyNCBhbmQgSVFTNjI1IG11bHRpLWZ1bmN0aW9uIHNlbnNvcnMuIEFkZGl0aW9uYWwNCj4g PiArCSAgb3B0aW9ucyBtdXN0IGJlIHNlbGVjdGVkIHRvIGVuYWJsZSBkZXZpY2Utc3BlY2lmaWMg ZnVuY3Rpb25zLg0KPiA+ICsNCj4gPiArCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1v ZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsDQo+ID4gKwkgIGJlIGNhbGxlZCBp cXM2MnguDQo+ID4gKw0KPiA+ICBjb25maWcgTUZEX0pBTlpfQ01PRElPDQo+ID4gIAl0cmlzdGF0 ZSAiSmFueiBDTU9ELUlPIFBDSSBNT0RVTGJ1cyBDYXJyaWVyIEJvYXJkIg0KPiA+ICAJc2VsZWN0 IE1GRF9DT1JFDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL01ha2VmaWxlIGIvZHJpdmVy cy9tZmQvTWFrZWZpbGUNCj4gPiBpbmRleCBhZWQ5OWYwLi5jNGZjMjZiIDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvbWZkL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9tZmQvTWFrZWZpbGUN Cj4gPiBAQCAtMjMyLDYgKzIzMiw5IEBAIG9iai0kKENPTkZJR19NRkRfRExOMikJCSs9IGRsbjIu bw0KPiA+ICBvYmotJChDT05GSUdfTUZEX1JUNTAzMykJKz0gcnQ1MDMzLm8NCj4gPiAgb2JqLSQo Q09ORklHX01GRF9TS1k4MTQ1MikJKz0gc2t5ODE0NTIubw0KPiA+IA0KPiA+ICtpcXM2Mngtb2Jq cwkJCTo9IGlxczYyeC1jb3JlLm8gaXFzNjJ4LXRhYmxlcy5vDQo+ID4gK29iai0kKENPTkZJR19N RkRfSVFTNjJYKQkrPSBpcXM2Mngubw0KPiA+ICsNCj4gPiAgaW50ZWwtc29jLXBtaWMtb2JqcwkJ Oj0gaW50ZWxfc29jX3BtaWNfY29yZS5vIGludGVsX3NvY19wbWljX2NyYy5vDQo+ID4gIG9iai0k KENPTkZJR19JTlRFTF9TT0NfUE1JQykJKz0gaW50ZWwtc29jLXBtaWMubw0KPiA+ICBvYmotJChD T05GSUdfSU5URUxfU09DX1BNSUNfQlhUV0MpCSs9IGludGVsX3NvY19wbWljX2J4dHdjLm8NCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvaXFzNjJ4LWNvcmUuYyBiL2RyaXZlcnMvbWZkL2lx czYyeC1jb3JlLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAu Ljc2N2Y5ZDgNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9tZmQvaXFzNjJ4 LWNvcmUuYw0KPiA+IEBAIC0wLDAgKzEsNjM5IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wKw0KPiA+ICsvKg0KPiA+ICsgKiBBem90ZXEgSVFTNjIwQS82MjEvNjIy LzYyNC82MjUgTXVsdGktRnVuY3Rpb24gU2Vuc29ycw0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmln aHQgKEMpIDIwMTkgSmVmZiBMYUJ1bmR5IDxqZWZmQGxhYnVuZHkuY29tPg0KPiA+ICsgKg0KPiA+ ICsgKiBUaGVzZSBkZXZpY2VzIHJlbHkgb24gYXBwbGljYXRpb24tc3BlY2lmaWMgcmVnaXN0ZXIg c2V0dGluZ3MgYW5kIGNhbGlicmF0aW9uDQo+ID4gKyAqIGRhdGEgZGV2ZWxvcGVkIGluIGFuZCBl eHBvcnRlZCBmcm9tIGEgc3VpdGUgb2YgR1VJcyBvZmZlcmVkIGJ5IHRoZSB2ZW5kb3IuIEENCj4g PiArICogc2VwYXJhdGUgdG9vbCBjb252ZXJ0cyB0aGUgR1VJcycgQVNDSUktYmFzZWQgb3V0cHV0 IGludG8gYSBzdGFuZGFyZCBmaXJtd2FyZQ0KPiA+ICsgKiBmaWxlIHBhcnNlZCBieSB0aGUgZHJp dmVyLg0KPiA+ICsgKg0KPiA+ICsgKiBMaW5rIHRvIGRhdGEgc2hlZXRzIGFuZCBHVUlzOiBodHRw czovL3d3dy5hem90ZXEuY29tLw0KPiA+ICsgKg0KPiA+ICsgKiBMaW5rIHRvIGNvbnZlcnNpb24g dG9vbDogaHR0cHM6Ly9naXRodWIuY29tL2psYWJ1bmR5L2lxczYyeC1oMmJpbi5naXQNCj4gPiAr ICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvY29tcGxldGlvbi5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiA+ ICsjaW5jbHVkZSA8bGludXgvZXJyLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5o Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbnRl cnJ1cHQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5jbHVkZSA8 bGludXgvbGlzdC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbWZkL2NvcmUuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbm90aWZpZXIuaD4N Cj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv cHJvcGVydHkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvc2xhYi5oPg0KPiA+ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPg0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPGxpbnV4L21mZC9pcXM2MnguaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUg SVFTNjJYX1BST0RfTlVNCQkJCTB4MDANCj4gPiArDQo+ID4gKyNkZWZpbmUgSVFTNjJYX1NZU19G TEFHUwkJCTB4MTANCj4gPiArI2RlZmluZSBJUVM2MlhfU1lTX0ZMQUdTX0lOX0FUSQkJCUJJVCgy KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBJUVM2MjJfUFJPWF9TRVRUSU5HU180CQkJMHg0OA0KPiA+ ICsjZGVmaW5lIElRUzYyMF9QUk9YX1NFVFRJTkdTXzQJCQkweDUwDQo+ID4gKyNkZWZpbmUgSVFT NjIwX1BST1hfU0VUVElOR1NfNF9TQVJfRU4JCUJJVCg3KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBJ UVM2MlhfU1lTX1NFVFRJTkdTCQkJMHhEMA0KPiA+ICsjZGVmaW5lIElRUzYyWF9TWVNfU0VUVElO R1NfU09GVF9SRVNFVAkJQklUKDcpDQo+ID4gKyNkZWZpbmUgSVFTNjJYX1NZU19TRVRUSU5HU19B Q0tfUkVTRVQJCUJJVCg2KQ0KPiA+ICsjZGVmaW5lIElRUzYyWF9TWVNfU0VUVElOR1NfRVZFTlRf TU9ERQkJQklUKDUpDQo+ID4gKyNkZWZpbmUgSVFTNjJYX1NZU19TRVRUSU5HU19DTEtfRElWCQlC SVQoNCkNCj4gPiArI2RlZmluZSBJUVM2MlhfU1lTX1NFVFRJTkdTX1JFRE9fQVRJCQlCSVQoMSkN Cj4gPiArDQo+ID4gKyNkZWZpbmUgSVFTNjJYX1BXUl9TRVRUSU5HUwkJCTB4RDINCj4gPiArI2Rl ZmluZSBJUVM2MlhfUFdSX1NFVFRJTkdTX0RJU19BVVRPCQlCSVQoNSkNCj4gPiArI2RlZmluZSBJ UVM2MlhfUFdSX1NFVFRJTkdTX1BXUl9NT0RFX01BU0sJKEJJVCg0KSB8IEJJVCgzKSkNCj4gPiAr I2RlZmluZSBJUVM2MlhfUFdSX1NFVFRJTkdTX1BXUl9NT0RFX0hBTFQJKEJJVCg0KSB8IEJJVCgz KSkNCj4gPiArI2RlZmluZSBJUVM2MlhfUFdSX1NFVFRJTkdTX1BXUl9NT0RFX05PUk0JMA0KPiA+ ICsNCj4gPiArI2RlZmluZSBJUVM2MlhfT1RQX0NNRAkJCQkweEYwDQo+ID4gKyNkZWZpbmUgSVFT NjJYX09UUF9DTURfRkczCQkJMHgxMw0KPiA+ICsjZGVmaW5lIElRUzYyWF9PVFBfREFUQQkJCQkw eEYxDQo+ID4gKyNkZWZpbmUgSVFTNjJYX01BWF9SRUcJCQkJMHhGRg0KPiA+ICsNCj4gPiArI2Rl ZmluZSBJUVM2MlhfSEFMTF9DQUxfTUFTSwkJCUdFTk1BU0soMywgMCkNCj4gPiArDQo+ID4gKyNk ZWZpbmUgSVFTNjJYX0ZXX1JFQ19UWVBFX0lORk8JCQkwDQo+ID4gKyNkZWZpbmUgSVFTNjJYX0ZX X1JFQ19UWVBFX1BST0QJCQkxDQo+ID4gKyNkZWZpbmUgSVFTNjJYX0ZXX1JFQ19UWVBFX0hBTEwJ CQkyDQo+ID4gKyNkZWZpbmUgSVFTNjJYX0ZXX1JFQ19UWVBFX01BU0sJCQkzDQo+ID4gKyNkZWZp bmUgSVFTNjJYX0ZXX1JFQ19UWVBFX0RBVEEJCQk0DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaXFzNjJ4 X2Z3X3JlYyB7DQo+ID4gKwl1OCB0eXBlOw0KPiA+ICsJdTggYWRkcjsNCj4gPiArCXU4IGxlbjsN Cj4gPiArCXU4IGRhdGE7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaXFz NjJ4X2Z3X2JsayB7DQo+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7DQo+ID4gKwl1OCBhZGRy Ow0KPiA+ICsJdTggbWFzazsNCj4gPiArCXU4IGxlbjsNCj4gPiArCXU4IGRhdGFbXTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0cnVjdCBpcXM2MnhfaW5mbyB7DQo+ID4gKwl1OCBwcm9kX251bTsN Cj4gPiArCXU4IHN3X251bTsNCj4gPiArCXU4IGh3X251bTsNCj4gPiArfSBfX3BhY2tlZDsNCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgaXFzNjJ4X2Rldl9pbml0KHN0cnVjdCBpcXM2MnhfY29yZSAq aXFzNjJ4KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaXFzNjJ4X2Z3X2JsayAqZndfYmxrOw0KPiA+ ICsJdW5zaWduZWQgaW50IHZhbDsNCj4gPiArCWludCByZXQ7DQo+ID4gKwl1OCBjbGtfZGl2ID0g MTsNCj4gPiArDQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGZ3X2JsaywgJmlxczYyeC0+Zndf YmxrX2hlYWQsIGxpc3QpIHsNCj4gPiArCQlpZiAoZndfYmxrLT5tYXNrKQ0KPiA+ICsJCQlyZXQg PSByZWdtYXBfdXBkYXRlX2JpdHMoaXFzNjJ4LT5tYXAsIGZ3X2Jsay0+YWRkciwNCj4gPiArCQkJ CQkJIGZ3X2Jsay0+bWFzaywgKmZ3X2Jsay0+ZGF0YSk7DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQly ZXQgPSByZWdtYXBfcmF3X3dyaXRlKGlxczYyeC0+bWFwLCBmd19ibGstPmFkZHIsDQo+ID4gKwkJ CQkJICAgICAgIGZ3X2Jsay0+ZGF0YSwgZndfYmxrLT5sZW4pOw0KPiA+ICsJCWlmIChyZXQpDQo+ ID4gKwkJCXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChpcXM2Mngt PmRldl9kZXNjLT5wcm9kX251bSkgew0KPiA+ICsJY2FzZSBJUVM2MjBfUFJPRF9OVU06DQo+ID4g KwljYXNlIElRUzYyMl9QUk9EX05VTToNCj4gPiArCQlyZXQgPSByZWdtYXBfcmVhZChpcXM2Mngt Pm1hcCwgaXFzNjJ4LT5kZXZfZGVzYy0+cHJvZF9udW0gPT0NCj4gPiArCQkJCSAgSVFTNjIwX1BS T0RfTlVNID8gSVFTNjIwX1BST1hfU0VUVElOR1NfNCA6DQo+ID4gKwkJCQkJCSAgICBJUVM2MjJf UFJPWF9TRVRUSU5HU180LA0KPiANCj4gTm90IG92ZXJseSB0YWtlbiBieSB0aGlzLiAgQ2FuIHlv dSBwdWxsIGl0IG91dCBwbGVhc2U/DQoNClN1cmUgdGhpbmcsIHdpbGwgZG8uDQoNCj4gDQo+ID4g KwkJCQkgICZ2YWwpOw0KPiA+ICsJCWlmIChyZXQpDQo+ID4gKwkJCXJldHVybiByZXQ7DQo+ID4g Kw0KPiA+ICsJCWlmICh2YWwgJiBJUVM2MjBfUFJPWF9TRVRUSU5HU180X1NBUl9FTikNCj4gPiAr CQkJaXFzNjJ4LT51aV9zZWwgPSBJUVM2MlhfVUlfU0FSMTsNCj4gPiArCQkvKiBmYWxsIHRocm91 Z2ggKi8NCj4gPiArDQo+IA0KPiBQcmVmZXIgdGhlICdcbicgYWJvdmUgdGhlIGNvbW1lbnQuDQoN ClN1cmUgdGhpbmcsIHdpbGwgZG8uDQoNCj4gDQo+ID4gKwljYXNlIElRUzYyMV9QUk9EX05VTToN Cj4gPiArCQlyZXQgPSByZWdtYXBfd3JpdGUoaXFzNjJ4LT5tYXAsIElRUzYyMF9HTEJMX0VWRU5U X01BU0ssDQo+ID4gKwkJCQkgICBJUVM2MjBfR0xCTF9FVkVOVF9NQVNLX1BNVSB8DQo+ID4gKwkJ CQkgICBpcXM2MngtPmRldl9kZXNjLT5wcm94X21hc2sgfA0KPiA+ICsJCQkJICAgaXFzNjJ4LT5k ZXZfZGVzYy0+c2FyX21hc2sgfA0KPiA+ICsJCQkJICAgaXFzNjJ4LT5kZXZfZGVzYy0+aGFsbF9t YXNrIHwNCj4gPiArCQkJCSAgIGlxczYyeC0+ZGV2X2Rlc2MtPmh5c3RfbWFzayB8DQo+ID4gKwkJ CQkgICBpcXM2MngtPmRldl9kZXNjLT50ZW1wX21hc2sgfA0KPiA+ICsJCQkJICAgaXFzNjJ4LT5k ZXZfZGVzYy0+YWxzX21hc2sgfA0KPiA+ICsJCQkJICAgaXFzNjJ4LT5kZXZfZGVzYy0+aXJfbWFz ayk7DQo+ID4gKwkJaWYgKHJldCkNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiArCQlicmVhazsN Cj4gPiArDQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldCA9IHJlZ21hcF93cml0ZShpcXM2Mngt Pm1hcCwgSVFTNjI0X0hBTExfVUksDQo+ID4gKwkJCQkgICBJUVM2MjRfSEFMTF9VSV9XSExfRVZF TlQgfA0KPiA+ICsJCQkJICAgSVFTNjI0X0hBTExfVUlfSU5UX0VWRU5UIHwNCj4gPiArCQkJCSAg IElRUzYyNF9IQUxMX1VJX0FVVE9fQ0FMKTsNCj4gPiArCQlpZiAocmV0KQ0KPiA+ICsJCQlyZXR1 cm4gcmV0Ow0KPiA+ICsNCj4gPiArCQlyZXQgPSByZWdtYXBfcmVhZChpcXM2MngtPm1hcCwgSVFT NjI0X0lOVEVSVkFMX0RJViwgJnZhbCk7DQo+ID4gKwkJaWYgKHJldCkNCj4gPiArCQkJcmV0dXJu IHJldDsNCj4gPiArDQo+ID4gKwkJaWYgKHZhbCA+PSBpcXM2MngtPmRldl9kZXNjLT5pbnRlcnZh bF9kaXYpDQo+ID4gKwkJCWJyZWFrOw0KPiANCj4gSSB0aGluayB0aGlzIHdvdWxkIGJlbmVmaXQg ZnJvbSBhIGNvbW1lbnQuDQoNClN1cmUgdGhpbmcsIHdpbGwgZG8uDQoNCj4gDQo+ID4gKwkJcmV0 ID0gcmVnbWFwX3dyaXRlKGlxczYyeC0+bWFwLCBJUVM2MjRfSU5URVJWQUxfRElWLA0KPiA+ICsJ CQkJICAgaXFzNjJ4LT5kZXZfZGVzYy0+aW50ZXJ2YWxfZGl2KTsNCj4gPiArCQlpZiAocmV0KQ0K PiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldCA9IHJlZ21hcF9y ZWFkKGlxczYyeC0+bWFwLCBJUVM2MlhfU1lTX1NFVFRJTkdTLCAmdmFsKTsNCj4gPiArCWlmIChy ZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwlpZiAodmFsICYgSVFTNjJYX1NZ U19TRVRUSU5HU19DTEtfRElWKQ0KPiA+ICsJCWNsa19kaXYgPSBpcXM2MngtPmRldl9kZXNjLT5j bGtfZGl2Ow0KPiA+ICsNCj4gPiArCXJldCA9IHJlZ21hcF93cml0ZShpcXM2MngtPm1hcCwgSVFT NjJYX1NZU19TRVRUSU5HUywgdmFsIHwNCj4gPiArCQkJICAgSVFTNjJYX1NZU19TRVRUSU5HU19B Q0tfUkVTRVQgfA0KPiA+ICsJCQkgICBJUVM2MlhfU1lTX1NFVFRJTkdTX0VWRU5UX01PREUgfA0K PiA+ICsJCQkgICBJUVM2MlhfU1lTX1NFVFRJTkdTX1JFRE9fQVRJKTsNCj4gPiArCWlmIChyZXQp DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwlyZXQgPSByZWdtYXBfcmVhZF9wb2xs X3RpbWVvdXQoaXFzNjJ4LT5tYXAsIElRUzYyWF9TWVNfRkxBR1MsIHZhbCwNCj4gPiArCQkJCSAg ICAgICAhKHZhbCAmIElRUzYyWF9TWVNfRkxBR1NfSU5fQVRJKSwNCj4gPiArCQkJCSAgICAgICAx MDAwMCwgY2xrX2RpdiAqIDUwMDAwMCk7DQo+IA0KPiBXb3VsZCBwcmVmZXIgaWYgeW91IGRlZmlu ZSB0aGUgbWFnaWMgbnVtYmVycy4NCg0KU3VyZSB0aGluZywgd2lsbCBkby4NCg0KPiANCj4gPiAr CWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICog VGhlIGZvbGxvd2luZyBkZWxheSBhY2NvbW1vZGF0ZXMgdGhlIHBvc3QtQVRJIHN0YWJpbGl6YXRp b24gdGltZQ0KPiA+ICsJICogc3BlY2lmaWVkIGluIHRoZSBkYXRhIHNoZWV0ICh3aXRoIGFkZGl0 aW9uYWwgbWFyZ2luKS4NCj4gDQo+IE5pdDogImRhdGFzaGVldCINCg0KU3VyZSB0aGluZywgd2ls bCBkby4NCg0KPiANCj4gPiArCSAqLw0KPiA+ICsJbXNsZWVwKGNsa19kaXYgKiAxNTApOw0KPiA+ ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGlxczYy eF9md19wcnMoc3RydWN0IGlxczYyeF9jb3JlICppcXM2MngsIGNvbnN0IHN0cnVjdCBmaXJtd2Fy ZSAqZncpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBpcXM2Mngt PmNsaWVudDsNCj4gPiArCXN0cnVjdCBpcXM2MnhfZndfcmVjICpmd19yZWM7DQo+ID4gKwlzdHJ1 Y3QgaXFzNjJ4X2Z3X2JsayAqZndfYmxrOw0KPiA+ICsJdW5zaWduZWQgaW50IHZhbDsNCj4gPiAr CXNpemVfdCBwb3MgPSAwOw0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gKwl1OCBtYXNrLCBsZW4s ICpkYXRhOw0KPiA+ICsJdTggaGFsbF9jYWxfaW5kZXggPSAwOw0KPiA+ICsNCj4gPiArCXdoaWxl IChwb3MgPCBmdy0+c2l6ZSkgew0KPiA+ICsJCWlmIChwb3MgKyBzaXplb2YoKmZ3X3JlYykgPiBm dy0+c2l6ZSkgew0KPiA+ICsJCQlyZXQgPSAtRUlOVkFMOw0KPiA+ICsJCQlicmVhazsNCj4gPiAr CQl9DQo+ID4gKwkJZndfcmVjID0gKHN0cnVjdCBpcXM2MnhfZndfcmVjICopKGZ3LT5kYXRhICsg cG9zKTsNCj4gPiArCQlwb3MgKz0gc2l6ZW9mKCpmd19yZWMpOw0KPiA+ICsNCj4gPiArCQlpZiAo cG9zICsgZndfcmVjLT5sZW4gLSAxID4gZnctPnNpemUpIHsNCj4gPiArCQkJcmV0ID0gLUVJTlZB TDsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsJCXBvcyArPSBmd19yZWMtPmxlbiAt IDE7DQo+ID4gKw0KPiA+ICsJCXN3aXRjaCAoZndfcmVjLT50eXBlKSB7DQo+ID4gKwkJY2FzZSBJ UVM2MlhfRldfUkVDX1RZUEVfSU5GTzoNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJ CWNhc2UgSVFTNjJYX0ZXX1JFQ19UWVBFX1BST0Q6DQo+ID4gKwkJCWlmIChmd19yZWMtPmRhdGEg PT0gaXFzNjJ4LT5kZXZfZGVzYy0+cHJvZF9udW0pDQo+ID4gKwkJCQljb250aW51ZTsNCj4gPiAr DQo+ID4gKwkJCWRldl9lcnIoJmNsaWVudC0+ZGV2LA0KPiA+ICsJCQkJIkluY29tcGF0aWJsZSBw cm9kdWN0IG51bWJlcjogMHglMDJYXG4iLA0KPiA+ICsJCQkJZndfcmVjLT5kYXRhKTsNCj4gPiAr CQkJcmV0ID0gLUVJTlZBTDsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJCWNhc2UgSVFT NjJYX0ZXX1JFQ19UWVBFX0hBTEw6DQo+ID4gKwkJCWlmICghaGFsbF9jYWxfaW5kZXgpIHsNCj4g PiArCQkJCXJldCA9IHJlZ21hcF93cml0ZShpcXM2MngtPm1hcCwgSVFTNjJYX09UUF9DTUQsDQo+ ID4gKwkJCQkJCSAgIElRUzYyWF9PVFBfQ01EX0ZHMyk7DQo+ID4gKwkJCQlpZiAocmV0KQ0KPiA+ ICsJCQkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQkJCXJldCA9IHJlZ21hcF9yZWFkKGlxczYyeC0+ bWFwLCBJUVM2MlhfT1RQX0RBVEEsDQo+ID4gKwkJCQkJCSAgJnZhbCk7DQo+ID4gKwkJCQlpZiAo cmV0KQ0KPiA+ICsJCQkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQkJCWhhbGxfY2FsX2luZGV4ID0g dmFsICYgSVFTNjJYX0hBTExfQ0FMX01BU0s7DQo+ID4gKwkJCQlpZiAoIWhhbGxfY2FsX2luZGV4 KSB7DQo+ID4gKwkJCQkJZGV2X2VycigmY2xpZW50LT5kZXYsDQo+ID4gKwkJCQkJCSJVbmNhbGli cmF0ZWQgZGV2aWNlXG4iKTsNCj4gPiArCQkJCQlyZXQgPSAtRU5PREFUQTsNCj4gPiArCQkJCQli cmVhazsNCj4gPiArCQkJCX0NCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJaWYgKGhhbGxfY2Fs X2luZGV4ID4gZndfcmVjLT5sZW4pIHsNCj4gPiArCQkJCXJldCA9IC1FSU5WQUw7DQo+ID4gKwkJ CQlicmVhazsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJbWFzayA9IDA7DQo+ID4gKwkJCWRh dGEgPSAmZndfcmVjLT5kYXRhICsgaGFsbF9jYWxfaW5kZXggLSAxOw0KPiA+ICsJCQlsZW4gPSBz aXplb2YoKmRhdGEpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJY2FzZSBJUVM2Mlhf RldfUkVDX1RZUEVfTUFTSzoNCj4gPiArCQkJaWYgKGZ3X3JlYy0+bGVuIDwgKHNpemVvZihtYXNr KSArIHNpemVvZigqZGF0YSkpKSB7DQo+ID4gKwkJCQlyZXQgPSAtRUlOVkFMOw0KPiA+ICsJCQkJ YnJlYWs7DQo+ID4gKwkJCX0NCj4gPiArDQo+ID4gKwkJCW1hc2sgPSBmd19yZWMtPmRhdGE7DQo+ ID4gKwkJCWRhdGEgPSAmZndfcmVjLT5kYXRhICsgc2l6ZW9mKG1hc2spOw0KPiA+ICsJCQlsZW4g PSBzaXplb2YoKmRhdGEpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJY2FzZSBJUVM2 MlhfRldfUkVDX1RZUEVfREFUQToNCj4gPiArCQkJbWFzayA9IDA7DQo+ID4gKwkJCWRhdGEgPSAm ZndfcmVjLT5kYXRhOw0KPiA+ICsJCQlsZW4gPSBmd19yZWMtPmxlbjsNCj4gPiArCQkJYnJlYWs7 DQo+ID4gKw0KPiA+ICsJCWRlZmF1bHQ6DQo+ID4gKwkJCWRldl9lcnIoJmNsaWVudC0+ZGV2LA0K PiA+ICsJCQkJIlVucmVjb2duaXplZCByZWNvcmQgdHlwZTogMHglMDJYXG4iLA0KPiA+ICsJCQkJ ZndfcmVjLT50eXBlKTsNCj4gPiArCQkJcmV0ID0gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKw0K PiA+ICsJCWlmIChyZXQpDQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQlmd19ibGsgPSBk ZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2LA0KPiA+ICsJCQkJICAgICAgc3RydWN0X3NpemUoZndf YmxrLCBkYXRhLCBsZW4pLA0KPiA+ICsJCQkJICAgICAgR0ZQX0tFUk5FTCk7DQo+ID4gKwkJaWYg KCFmd19ibGspIHsNCj4gPiArCQkJcmV0ID0gLUVOT01FTTsNCj4gPiArCQkJYnJlYWs7DQo+ID4g KwkJfQ0KPiA+ICsNCj4gPiArCQlmd19ibGstPmFkZHIgPSBmd19yZWMtPmFkZHI7DQo+ID4gKwkJ ZndfYmxrLT5tYXNrID0gbWFzazsNCj4gPiArCQlmd19ibGstPmxlbiA9IGxlbjsNCj4gPiArCQlt ZW1jcHkoZndfYmxrLT5kYXRhLCBkYXRhLCBsZW4pOw0KPiA+ICsNCj4gPiArCQlsaXN0X2FkZCgm ZndfYmxrLT5saXN0LCAmaXFzNjJ4LT5md19ibGtfaGVhZCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJcmVsZWFzZV9maXJtd2FyZShmdyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiANCj4gTm90IHN1cmUgSSdtIHRoZSBiZXN0IHBlcnNvbiB0byBiZSByZXZpZXdpbmcgdGhp cy4NCj4gDQo+IE1heWJlIHNvbWVvbmUgZnJvbSBkcml2ZXJzL2Zpcm13YXJlIGNhbiBoZWxwIG91 dD8NCg0KSSBwZXJ1c2VkIE1BSU5UQUlORVJTIGZvciBhIGNhdGNoLWFsbCByZXZpZXdlciBvZiBz b3J0cywgYnV0IG5vYm9keSBzdG9vZCBvdXQNCmJlY2F1c2UgbW9zdCBvZiBkcml2ZXJzL2Zpcm13 YXJlIHNlZW1zIHRvIGJlIHZlbmRvci9hcHBsaWNhdGlvbi1zcGVjaWZpYy4gSWYNCnlvdSBoYXZl IHNvbWVvbmUgaW4gbWluZCwgSSB3b3VsZCBiZSBoYXBweSB0byBhZGQgdGhlbSB0byB0aGUgdjUg cmV2aWV3Lg0KDQpJbiBubyB3YXkgZG8gSSBvcHBvc2UgaGF2aW5nIG1vcmUgZXllcyBvbiB0aGlz LCBidXQgaW4gbXkgaHVtYmxlIG9waW5pb24gdGhpcw0KZHJpdmVyIGlzIG5vIGRpZmZlcmVudCB0 aGFuIGFueSBvdGhlcnMgdGhhdCBjYWxsIHZhcmlhbnRzIG9mIHJlcXVlc3RfZmlybXdhcmUNCnRv IGdhdGhlciByZWdpc3RlciBvdmVybGF5cyBhbmQgY2FsaWJyYXRpb24gdmFsdWVzLiBJIHNpbXBs eSBkZWZpbmVkIHRoZSBmaWxlDQpmb3JtYXQgaW4gdGhpcyBjYXNlIGluc3RlYWQgb2YgaXQgYWxy ZWFkeSBiZWluZyBkZWZpbmVkIGVsc2V3aGVyZS4NCg0KUmVnYXJkbGVzcyBvZiB3aGVyZSB0aGUg ZGVmaW5pdGlvbiBvcmlnaW5hdGVkLCB0aGUgZm9jdXMgc2hvdWxkIGJlIHdoZXRoZXINCmlxczYy eF9md19wYXJzZSBmYWl0aGZ1bGx5IGFkaGVyZXMgdG8gdGhhdCBkZWZpbml0aW9uIGFuZCBJIHRo aW5rIHlvdSdyZSBpbg0KanVzdCBhcyBnb29kIG9mIGEgcG9zaXRpb24gdG8gZGVjaWRlIChlc3Bl Y2lhbGx5IHNpbmNlIHlvdSd2ZSBoZWxwZWQgcmV2aWV3DQpwYXN0IGl0ZXJhdGlvbnMgYW5kIGhh dmUgY29udGV4dCkuDQoNCihJIGRvbid0IHByZXRlbmQgdG8gYmUgYW4gZXhwZXJ0IGluIGRlZmlu aW5nIHNwZWNpZmljYXRpb25zLCBidXQgbXkgYXJndW1lbnRzDQphcmUgdGhhdCBJJ3ZlIG1vZGVs ZWQgdGhpcyBvbmUgYWZ0ZXIgZXhpc3RpbmcgaW4tdHJlZSBleGFtcGxlcywgSSd2ZSBtYWRlIHRo ZQ0KZG9jdW1lbnRhdGlvbiBhY2Nlc3NpYmxlLCBhbmQgaXQncyByZWxhdGl2ZWx5IHNpbXBsZSBh bmQgbG93LXJpc2sgaW4gdGVybXMgb2YNCm1haW50ZW5hbmNlKS4NCg0KPiANCj4gPiArc3RhdGlj IGlycXJldHVybl90IGlxczYyeF9pcnEoaW50IGlycSwgdm9pZCAqY29udGV4dCkNCj4gPiArew0K PiA+ICsJc3RydWN0IGlxczYyeF9jb3JlICppcXM2MnggPSBjb250ZXh0Ow0KPiA+ICsJc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCA9IGlxczYyeC0+Y2xpZW50Ow0KPiA+ICsJc3RydWN0IGlxczYy eF9ldmVudF9kYXRhIGV2ZW50X2RhdGE7DQo+ID4gKwlzdHJ1Y3QgaXFzNjJ4X2V2ZW50X2Rlc2Mg ZXZlbnRfZGVzYzsNCj4gPiArCWVudW0gaXFzNjJ4X2V2ZW50X3JlZyBldmVudF9yZWc7DQo+ID4g Kwl1bnNpZ25lZCBsb25nIGV2ZW50X2ZsYWdzID0gMDsNCj4gPiArCWludCByZXQsIGksIGo7DQo+ ID4gKwl1OCBldmVudF9tYXBbSVFTNjJYX0VWRU5UX1NJWkVdOw0KPiA+ICsNCj4gPiArCS8qDQo+ ID4gKwkgKiBUaGUgZGV2aWNlIGFzc2VydHMgdGhlIFJEWSBvdXRwdXQgdG8gc2lnbmFsIHRoZSBi ZWdpbm5pbmcgb2YgYQ0KPiA+ICsJICogY29tbXVuaWNhdGlvbiB3aW5kb3csIHdoaWNoIGlzIGNs b3NlZCBieSBhbiBJMkMgc3RvcCBjb25kaXRpb24uDQo+ID4gKwkgKiBBcyBzdWNoLCBhbGwgaW50 ZXJydXB0IHN0YXR1cyBpcyBjYXB0dXJlZCBpbiBhIHNpbmdsZSByZWFkIGFuZA0KPiA+ICsJICog YnJvYWRjYXN0IHRvIGFueSBpbnRlcmVzdGVkIHN1Yi1kZXZpY2UgZHJpdmVycy4NCj4gPiArCSAq Lw0KPiA+ICsJcmV0ID0gcmVnbWFwX3Jhd19yZWFkKGlxczYyeC0+bWFwLCBJUVM2MlhfU1lTX0ZM QUdTLCBldmVudF9tYXAsDQo+ID4gKwkJCSAgICAgIHNpemVvZihldmVudF9tYXApKTsNCj4gPiAr CWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byByZWFk IGRldmljZSBzdGF0dXM6ICVkXG4iLA0KPiA+ICsJCQlyZXQpOw0KPiA+ICsJCXJldHVybiBJUlFf Tk9ORTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGV2ZW50 X21hcCk7IGkrKykgew0KPiA+ICsJCWV2ZW50X3JlZyA9IGlxczYyeC0+ZGV2X2Rlc2MtPmV2ZW50 X3JlZ3NbaXFzNjJ4LT51aV9zZWxdW2ldOw0KPiA+ICsNCj4gPiArCQlzd2l0Y2ggKGV2ZW50X3Jl Zykgew0KPiA+ICsJCWNhc2UgSVFTNjJYX0VWRU5UX1VJX0xPOg0KPiA+ICsJCQlldmVudF9kYXRh LnVpX2RhdGEgPSBnZXRfdW5hbGlnbmVkX2xlMTYoJmV2ZW50X21hcFtpXSk7DQo+ID4gKwkJCS8q IGZhbGwgdGhyb3VnaCAqLw0KPiA+ICsJCWNhc2UgSVFTNjJYX0VWRU5UX1VJX0hJOg0KPiA+ICsJ CWNhc2UgSVFTNjJYX0VWRU5UX05PTkU6DQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsNCj4gPiAr CQljYXNlIElRUzYyWF9FVkVOVF9BTFM6DQo+ID4gKwkJCWV2ZW50X2RhdGEuYWxzX2ZsYWdzID0g ZXZlbnRfbWFwW2ldOw0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJY2FzZSBJUVM2 MlhfRVZFTlRfSVI6DQo+ID4gKwkJCWV2ZW50X2RhdGEuaXJfZmxhZ3MgPSBldmVudF9tYXBbaV07 DQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsNCj4gPiArCQljYXNlIElRUzYyWF9FVkVOVF9JTlRF UjoNCj4gPiArCQkJZXZlbnRfZGF0YS5pbnRlcnZhbCA9IGV2ZW50X21hcFtpXTsNCj4gPiArCQkJ Y29udGludWU7DQo+ID4gKw0KPiA+ICsJCWNhc2UgSVFTNjJYX0VWRU5UX0hZU1Q6DQo+ID4gKwkJ CWV2ZW50X21hcFtpXSA8PD0gaXFzNjJ4LT5kZXZfZGVzYy0+aHlzdF9zaGlmdDsNCj4gPiArCQkJ LyogZmFsbCB0aHJvdWdoICovDQo+ID4gKwkJY2FzZSBJUVM2MlhfRVZFTlRfV0hFRUw6DQo+ID4g KwkJY2FzZSBJUVM2MlhfRVZFTlRfSEFMTDoNCj4gPiArCQljYXNlIElRUzYyWF9FVkVOVF9QUk9Y Og0KPiA+ICsJCWNhc2UgSVFTNjJYX0VWRU5UX1NZUzoNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJ fQ0KPiA+ICsNCj4gPiArCQlmb3IgKGogPSAwOyBqIDwgSVFTNjJYX05VTV9FVkVOVFM7IGorKykg ew0KPiA+ICsJCQlldmVudF9kZXNjID0gaXFzNjJ4X2V2ZW50c1tqXTsNCj4gPiArDQo+ID4gKwkJ CWlmIChldmVudF9kZXNjLnJlZyAhPSBldmVudF9yZWcpDQo+ID4gKwkJCQljb250aW51ZTsNCj4g PiArDQo+ID4gKwkJCWlmICgoZXZlbnRfbWFwW2ldICYgZXZlbnRfZGVzYy5tYXNrKSA9PSBldmVu dF9kZXNjLnZhbCkNCj4gPiArCQkJCWV2ZW50X2ZsYWdzIHw9IEJJVChqKTsNCj4gPiArCQl9DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyoNCj4gPiArCSAqIFRoZSBkZXZpY2UgcmVzZXRzIGl0c2Vs ZiBpbiByZXNwb25zZSB0byB0aGUgSTJDIG1hc3RlciBzdGFsbGluZw0KPiA+ICsJICogY29tbXVu aWNhdGlvbiBwYXN0IGEgZml4ZWQgdGltZW91dC4gSW4gdGhpcyBjYXNlLCBhbGwgcmVnaXN0ZXJz DQo+ID4gKwkgKiBhcmUgcmVzdG9yZWQgYW5kIGFueSBpbnRlcmVzdGVkIHN1Yi1kZXZpY2UgZHJp dmVycyBhcmUgbm90aWZpZWQuDQo+ID4gKwkgKi8NCj4gPiArCWlmIChldmVudF9mbGFncyAmIEJJ VChJUVM2MlhfRVZFTlRfU1lTX1JFU0VUKSkgew0KPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2 LCAiVW5leHBlY3RlZCBkZXZpY2UgcmVzZXRcbiIpOw0KPiA+ICsNCj4gPiArCQlyZXQgPSBpcXM2 MnhfZGV2X2luaXQoaXFzNjJ4KTsNCj4gPiArCQlpZiAocmV0KSB7DQo+ID4gKwkJCWRldl9lcnIo JmNsaWVudC0+ZGV2LA0KPiA+ICsJCQkJIkZhaWxlZCB0byByZS1pbml0aWFsaXplIGRldmljZTog JWRcbiIsIHJldCk7DQo+ID4gKwkJCXJldHVybiBJUlFfTk9ORTsNCj4gPiArCQl9DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJcmV0ID0gYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbigmaXFzNjJ4 LT5uaCwgZXZlbnRfZmxhZ3MsDQo+ID4gKwkJCQkJICAgJmV2ZW50X2RhdGEpOw0KPiA+ICsJaWYg KHJldCAmIE5PVElGWV9TVE9QX01BU0spDQo+ID4gKwkJcmV0dXJuIElSUV9OT05FOw0KPiA+ICsN Cj4gPiArCS8qDQo+ID4gKwkgKiBPbmNlIHRoZSBjb21tdW5pY2F0aW9uIHdpbmRvdyBpcyBjbG9z ZWQsIGEgc21hbGwgZGVsYXkgaXMgYWRkZWQgdG8NCj4gPiArCSAqIGVuc3VyZSB0aGUgZGV2aWNl J3MgUkRZIG91dHB1dCBoYXMgYmVlbiBkZWFzc2VydGVkIGJ5IHRoZSB0aW1lIHRoZQ0KPiA+ICsJ ICogaW50ZXJydXB0IGhhbmRsZXIgcmV0dXJucy4NCj4gPiArCSAqLw0KPiA+ICsJdXNsZWVwX3Jh bmdlKDUwLCAxMDApOw0KPiA+ICsNCj4gPiArCXJldHVybiBJUlFfSEFORExFRDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaXFzNjJ4X2Z3X2NiKGNvbnN0IHN0cnVjdCBmaXJtd2Fy ZSAqZncsIHZvaWQgKmNvbnRleHQpDQo+IA0KPiBOb3Qga2VlbiBvbiB0aGVzZSBvdmVybHkgYWJi cmV2aWF0ZWQgZnVuY3Rpb24gbmFtZXMuDQo+IA0KPiBXaGF0J3MgJ2NiJz8NCg0KJ2NiJyBzdGFu ZHMgZm9yIGNhbGxiYWNrOyBJIHBpY2tlZCAnZndfY2InIGFmdGVyIGhhdmluZyBzZWVuIGl0IGlu IGEgZmV3IG90aGVyDQpkcml2ZXJzLiBJIGFncmVlIHRoYXQgaXQncyBhbWJpZ3VvdXMgYW5kIEkn bGwgcGljayBzb21ldGhpbmcgYmV0dGVyLg0KDQo+IA0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaXFz NjJ4X2NvcmUgKmlxczYyeCA9IGNvbnRleHQ7DQo+ID4gKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50ID0gaXFzNjJ4LT5jbGllbnQ7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCWlmIChm dykgew0KPiA+ICsJCXJldCA9IGlxczYyeF9md19wcnMoaXFzNjJ4LCBmdyk7DQo+IA0KPiBJJ20g Z3Vlc3NpbmcgJ3BycycgaXMgcGFyc2UsIGJ1dCBvbmx5IGJ5IHRoZSBjb21tZW50Lg0KPiANCj4g UGxlYXNlIGV4cGFuZCBpdCB0byBzb21ldGhpbmcgbW9yZSBtZWFuaW5nZnVsLg0KDQpTdXJlIHRo aW5nLCB3aWxsIGRvLg0KDQo+IA0KPiA+ICsJCWlmIChyZXQpIHsNCj4gPiArCQkJZGV2X2Vycigm Y2xpZW50LT5kZXYsICJGYWlsZWQgdG8gcGFyc2UgZmlybXdhcmU6ICVkXG4iLA0KPiA+ICsJCQkJ cmV0KTsNCj4gPiArCQkJZ290byBlcnJfb3V0Ow0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ ID4gKwlyZXQgPSBpcXM2MnhfZGV2X2luaXQoaXFzNjJ4KTsNCj4gPiArCWlmIChyZXQpIHsNCj4g PiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIGRldmljZTog JWRcbiIsIHJldCk7DQo+ID4gKwkJZ290byBlcnJfb3V0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CXJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJmNsaWVudC0+ZGV2LCBjbGllbnQtPmly cSwNCj4gPiArCQkJCQlOVUxMLCBpcXM2MnhfaXJxLCBJUlFGX09ORVNIT1QsDQo+ID4gKwkJCQkJ Y2xpZW50LT5uYW1lLCBpcXM2MngpOw0KPiA+ICsJaWYgKHJldCkgew0KPiA+ICsJCWRldl9lcnIo JmNsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3QgSVJROiAlZFxuIiwgcmV0KTsNCj4gPiAr CQlnb3RvIGVycl9vdXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gZGV2bV9tZmRfYWRk X2RldmljZXMoJmNsaWVudC0+ZGV2LCAtMSwNCj4gDQo+IFBsZWFzZSB1c2UgdGhlIGRlZmluZXMu DQoNClN1cmUgdGhpbmcsIHdpbGwgZG8uDQoNCj4gDQo+ID4gKwkJCQkgICBpcXM2MngtPmRldl9k ZXNjLT5zdWJfZGV2cywNCj4gPiArCQkJCSAgIGlxczYyeC0+ZGV2X2Rlc2MtPm51bV9zdWJfZGV2 cywNCj4gPiArCQkJCSAgIE5VTEwsIDAsIE5VTEwpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlk ZXZfZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byBhZGQgZGV2aWNlczogJWRcbiIsIHJldCk7 DQo+IA0KPiAiRmFpbGVkIHRvIGFkZCBjaGlsZCAob3Igc3ViLSkgZGV2aWNlcy4NCg0KU3VyZSB0 aGluZywgd2lsbCBkby4NCg0KPiANCj4gPiArZXJyX291dDoNCj4gPiArCWNvbXBsZXRlX2FsbCgm aXFzNjJ4LT5md19kb25lKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCByZWdtYXBfY29uZmlnIGlxczYyeF9tYXBfY29uZmlnID0gew0KPiA+ICsJLnJlZ19iaXRzID0g OCwNCj4gPiArCS52YWxfYml0cyA9IDgsDQo+ID4gKwkubWF4X3JlZ2lzdGVyID0gSVFTNjJYX01B WF9SRUcsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGlxczYyeF9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaXFzNjJ4X2NvcmUg KmlxczYyeDsNCj4gPiArCXN0cnVjdCBpcXM2MnhfaW5mbyBpbmZvOw0KPiA+ICsJdW5zaWduZWQg aW50IHZhbDsNCj4gPiArCWludCByZXQsIGksIGo7DQo+ID4gKwl1OCBzd19udW0gPSAwOw0KPiA+ ICsJY29uc3QgY2hhciAqZndfbmFtZSA9IE5VTEw7DQo+ID4gKw0KPiA+ICsJaXFzNjJ4ID0gZGV2 bV9remFsbG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKCppcXM2MngpLCBHRlBfS0VSTkVMKTsNCj4g PiArCWlmICghaXFzNjJ4KQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCWky Y19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGlxczYyeCk7DQo+ID4gKwlpcXM2MngtPmNsaWVudCA9 IGNsaWVudDsNCj4gPiArDQo+ID4gKwlCTE9DS0lOR19JTklUX05PVElGSUVSX0hFQUQoJmlxczYy eC0+bmgpOw0KPiA+ICsJSU5JVF9MSVNUX0hFQUQoJmlxczYyeC0+ZndfYmxrX2hlYWQpOw0KPiA+ ICsJaW5pdF9jb21wbGV0aW9uKCZpcXM2MngtPmZ3X2RvbmUpOw0KPiA+ICsNCj4gPiArCWlxczYy eC0+bWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmaXFzNjJ4X21hcF9jb25maWcp Ow0KPiA+ICsJaWYgKElTX0VSUihpcXM2MngtPm1hcCkpIHsNCj4gPiArCQlyZXQgPSBQVFJfRVJS KGlxczYyeC0+bWFwKTsNCj4gPiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byBp bml0aWFsaXplIHJlZ2lzdGVyIG1hcDogJWRcbiIsDQo+ID4gKwkJCXJldCk7DQo+ID4gKwkJcmV0 dXJuIHJldDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXQgPSByZWdtYXBfcmF3X3JlYWQoaXFz NjJ4LT5tYXAsIElRUzYyWF9QUk9EX05VTSwgJmluZm8sDQo+ID4gKwkJCSAgICAgIHNpemVvZihp bmZvKSk7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJ LyoNCj4gPiArCSAqIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgdmFsaWRhdGVzIHRoZSBkZXZpY2Un cyBwcm9kdWN0IGFuZCBzb2Z0d2FyZQ0KPiA+ICsJICogbnVtYmVycy4gSXQgdGhlbiBkZXRlcm1p bmVzIGlmIHRoZSBkZXZpY2UgaXMgZmFjdG9yeS1jYWxpYnJhdGVkIGJ5DQo+ID4gKwkgKiBjaGVj a2luZyBmb3Igbm9uemVybyB2YWx1ZXMgaW4gdGhlIGRldmljZSdzIGRlc2lnbmF0ZWQgY2FsaWJy YXRpb24NCj4gPiArCSAqIHJlZ2lzdGVycyAoaWYgYXBwbGljYWJsZSkuIERlcGVuZGluZyBvbiB0 aGUgZGV2aWNlLCB0aGUgYWJzZW5jZSBvZg0KPiA+ICsJICogY2FsaWJyYXRpb24gZGF0YSBpbmRp Y2F0ZXMgYSByZWR1Y2VkIGZlYXR1cmUgc2V0IG9yIGludmFsaWQgZGV2aWNlLg0KPiA+ICsJICoN Cj4gPiArCSAqIEZvciBkZXZpY2VzIGdpdmVuIGluIGJvdGggY2FsaWJyYXRlZCBhbmQgdW5jYWxp YnJhdGVkIHZlcnNpb25zLCB0aGUNCj4gPiArCSAqIGNhbGlicmF0ZWQgdmVyc2lvbiAoZS5nLiBJ UVM2MjBBVCkgYXBwZWFycyBmaXJzdCBpbiB0aGUgaXFzNjJ4X2RldnMNCj4gPiArCSAqIGFycmF5 LiBUaGUgdW5jYWxpYnJhdGVkIHZlcnNpb24gKGUuZy4gSVFTNjIwQSkgYXBwZWFycyBuZXh0IGFu ZCBoYXMNCj4gPiArCSAqIHRoZSBzYW1lIHByb2R1Y3QgYW5kIHNvZnR3YXJlIG51bWJlcnMsIGJ1 dCBubyBjYWxpYnJhdGlvbiByZWdpc3RlcnMNCj4gPiArCSAqIGFyZSBzcGVjaWZpZWQuDQo+ID4g KwkgKi8NCj4gDQo+IEhvdyBsb25nIGRpZCBpdCB0YWtlIHlvdSB0byBzdXBwbGVtZW50IHdvcmRz IG91dCBzdWNoIHRoYXQgdGhlIGxpbmVzDQo+IHdlcmUgYWxsIG1hdGNoZWQgdXAgYXQgdGhlIGVu ZHM/IDspDQoNCkkgd2FzIHdvbmRlcmluZyBob3cgbG9uZyBpdCB3b3VsZCB0YWtlIHRvIGdldCBj YXVnaHQgOikNCg0KPiANCj4gPiArCWZvciAoaSA9IDA7IGkgPCBJUVM2MlhfTlVNX0RFVjsgaSsr KSB7DQo+ID4gKwkJaWYgKGluZm8ucHJvZF9udW0gIT0gaXFzNjJ4X2RldnNbaV0ucHJvZF9udW0p DQo+ID4gKwkJCWNvbnRpbnVlOw0KPiANCj4gJ1xuJw0KDQpTdXJlIHRoaW5nLCB3aWxsIGRvLg0K DQo+IA0KPiA+ICsJCWlxczYyeC0+ZGV2X2Rlc2MgPSAmaXFzNjJ4X2RldnNbaV07DQo+ID4gKw0K PiA+ICsJCWlmIChpbmZvLnN3X251bSA8IGlxczYyeC0+ZGV2X2Rlc2MtPnN3X251bSkNCj4gPiAr CQkJY29udGludWU7DQo+IA0KPiAnXG4nDQoNClN1cmUgdGhpbmcsIHdpbGwgZG8uDQoNCj4gDQo+ ID4gKwkJc3dfbnVtID0gaW5mby5zd19udW07DQo+ID4gKw0KPiA+ICsJCS8qDQo+ID4gKwkJICog UmVhZCBlYWNoIG9mIHRoZSBkZXZpY2UncyBkZXNpZ25hdGVkIGNhbGlicmF0aW9uIHJlZ2lzdGVy cywNCj4gPiArCQkgKiBpZiBhbnksIGFuZCBleGl0IGZyb20gdGhlIGlubmVyIGxvb3AgZWFybHkg aWYgYW55IGFyZSBlcXVhbA0KPiA+ICsJCSAqIHRvIHplcm8uDQo+IA0KPiBZb3Ugc2hvdWxkIG1l bnRpb24gd2h5IHplcm9lZCBjYWxpYnJhdGlvbiB2YWx1ZXMgYXJlIGEgcHJvYmxlbS4NCg0KU3Vy ZSB0aGluZywgd2lsbCBkby4NCg0KPiANCj4gPiArCQkgKi8NCj4gPiArCQlmb3IgKGogPSAwOyBq IDwgaXFzNjJ4LT5kZXZfZGVzYy0+bnVtX2NhbF9yZWdzOyBqKyspIHsNCj4gPiArCQkJcmV0ID0g cmVnbWFwX3JlYWQoaXFzNjJ4LT5tYXAsDQo+ID4gKwkJCQkJICBpcXM2MngtPmRldl9kZXNjLT5j YWxfcmVnc1tqXSwgJnZhbCk7DQo+ID4gKwkJCWlmIChyZXQpDQo+ID4gKwkJCQlyZXR1cm4gcmV0 Ow0KPiA+ICsNCj4gPiArCQkJaWYgKCF2YWwpDQo+ID4gKwkJCQlicmVhazsNCj4gPiArCQl9DQo+ ID4gKw0KPiA+ICsJCS8qDQo+ID4gKwkJICogSWYgdGhlIG51bWJlciBvZiBub256ZXJvIHZhbHVl cyByZWFkIGZyb20gdGhlIGRldmljZSBlcXVhbHMNCj4gPiArCQkgKiB0aGUgbnVtYmVyIG9mIGRl c2lnbmF0ZWQgY2FsaWJyYXRpb24gcmVnaXN0ZXJzICh3aGljaCBjb3VsZA0KPiA+ICsJCSAqIGJl IHplcm8pLCBleGl0IGZyb20gdGhlIG91dGVyIGxvb3AgZWFybHkgdG8gc2lnbmFsIGEgZGV2aWNl DQo+ID4gKwkJICogaGFzIGJlZW4gbWF0Y2hlZC4NCj4gDQo+IFRoaXMgaXMgKndoYXQqIHlvdSBh cmUgZG9pbmcsIGJ1dCAqd2h5KiBhcmUgeW91IGRvaW5nIGl0Pw0KDQpTdXJlIHRoaW5nLCBJJ2xs IGNsYXJpZnkgdGhpcyBjb21tZW50Lg0KDQo+IA0KPiA+ICsJCSAqLw0KPiA+ICsJCWlmIChqID09 IGlxczYyeC0+ZGV2X2Rlc2MtPm51bV9jYWxfcmVncykNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJaWYgKCFpcXM2MngtPmRldl9kZXNjKSB7DQo+ID4gKwkJZGV2X2Vycigm Y2xpZW50LT5kZXYsICJVbnJlY29nbml6ZWQgcHJvZHVjdCBudW1iZXI6IDB4JTAyWFxuIiwNCj4g PiArCQkJaW5mby5wcm9kX251bSk7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJaWYgKCFzd19udW0pIHsNCj4gPiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwg IlVucmVjb2duaXplZCBzb2Z0d2FyZSBudW1iZXI6IDB4JTAyWFxuIiwNCj4gPiArCQkJaW5mby5z d19udW0pOw0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlm IChpID09IElRUzYyWF9OVU1fREVWKSB7DQo+ID4gKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJV bmNhbGlicmF0ZWQgZGV2aWNlXG4iKTsNCj4gPiArCQlyZXR1cm4gLUVOT0RBVEE7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKGlxczYyeC0+bWFwLCBJUVM2MlhfU1lT X1NFVFRJTkdTLA0KPiA+ICsJCQkgICBJUVM2MlhfU1lTX1NFVFRJTkdTX1NPRlRfUkVTRVQpOw0K PiA+ICsJaWYgKHJldCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiANCj4gJ1xuJw0KDQpTdXJlIHRo aW5nLCB3aWxsIGRvICh0aGlzIHN0ZXAgbWF5IGJlIHJlbW92ZWQgcGVuZGluZyBkaXNjdXNzaW9u IGluIHBhdGNoIFs0LzddKS4NCg0KPiANCj4gPiArCXVzbGVlcF9yYW5nZSgxMDAwMCwgMTAxMDAp Ow0KPiA+ICsNCj4gPiArCWRldmljZV9wcm9wZXJ0eV9yZWFkX3N0cmluZygmY2xpZW50LT5kZXYs ICJmaXJtd2FyZS1uYW1lIiwgJmZ3X25hbWUpOw0KPiA+ICsNCj4gPiArCXJldCA9IHJlcXVlc3Rf ZmlybXdhcmVfbm93YWl0KFRISVNfTU9EVUxFLCBGV19BQ1RJT05fSE9UUExVRywNCj4gPiArCQkJ CSAgICAgIGZ3X25hbWUgPyA6IGlxczYyeC0+ZGV2X2Rlc2MtPmZ3X25hbWUsDQo+ID4gKwkJCQkg ICAgICAmY2xpZW50LT5kZXYsIEdGUF9LRVJORUwsIGlxczYyeCwNCj4gPiArCQkJCSAgICAgIGlx czYyeF9md19jYik7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2 LCAiRmFpbGVkIHRvIHJlcXVlc3QgZmlybXdhcmU6ICVkXG4iLCByZXQpOw0KPiA+ICsNCj4gPiAr CXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaXFzNjJ4X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaXFzNjJ4 X2NvcmUgKmlxczYyeCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOw0KPiA+ICsNCj4gPiAr CXdhaXRfZm9yX2NvbXBsZXRpb24oJmlxczYyeC0+ZndfZG9uZSk7DQo+ID4gKw0KPiA+ICsJcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgaXFz NjJ4X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaXFz NjJ4X2NvcmUgKmlxczYyeCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsJaW50IHJldDsN Cj4gPiArDQo+ID4gKwl3YWl0X2Zvcl9jb21wbGV0aW9uKCZpcXM2MngtPmZ3X2RvbmUpOw0KPiA+ ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBBcyBwZXIgdGhlIGRhdGEgc2hlZXQsIGF1dG9tYXRpYyBt b2RlIHN3aXRjaGluZyBtdXN0IGJlIGRpc2FibGVkDQo+IA0KPiAiZGF0YXNoZWV0Ig0KDQpTdXJl IHRoaW5nLCB3aWxsIGRvLg0KDQo+IA0KPiA+ICsJICogYmVmb3JlIHRoZSBkZXZpY2UgaXMgcGxh Y2VkIGluIG9yIHRha2VuIG91dCBvZiBoYWx0IG1vZGUuDQo+ID4gKwkgKi8NCj4gPiArCXJldCA9 IHJlZ21hcF91cGRhdGVfYml0cyhpcXM2MngtPm1hcCwgSVFTNjJYX1BXUl9TRVRUSU5HUywNCj4g PiArCQkJCSBJUVM2MlhfUFdSX1NFVFRJTkdTX0RJU19BVVRPLA0KPiA+ICsJCQkJIElRUzYyWF9Q V1JfU0VUVElOR1NfRElTX0FVVE8pOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlyZXR1cm4gcmV0 Ow0KPiA+ICsNCj4gPiArCXJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMoaXFzNjJ4LT5tYXAsIElR UzYyWF9QV1JfU0VUVElOR1MsDQo+ID4gKwkJCQkgIElRUzYyWF9QV1JfU0VUVElOR1NfUFdSX01P REVfTUFTSywNCj4gPiArCQkJCSAgSVFTNjJYX1BXUl9TRVRUSU5HU19QV1JfTU9ERV9IQUxUKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBfX21heWJlX3VudXNlZCBpcXM2MnhfcmVz dW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiArew0KPiA+ICsJc3RydWN0IGlxczYyeF9jb3Jl ICppcXM2MnggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0K PiA+ICsJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKGlxczYyeC0+bWFwLCBJUVM2MlhfUFdSX1NF VFRJTkdTLA0KPiA+ICsJCQkJIElRUzYyWF9QV1JfU0VUVElOR1NfUFdSX01PREVfTUFTSywNCj4g PiArCQkJCSBJUVM2MlhfUFdSX1NFVFRJTkdTX1BXUl9NT0RFX05PUk0pOw0KPiA+ICsJaWYgKHJl dCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJldHVybiByZWdtYXBfdXBkYXRl X2JpdHMoaXFzNjJ4LT5tYXAsIElRUzYyWF9QV1JfU0VUVElOR1MsDQo+ID4gKwkJCQkgIElRUzYy WF9QV1JfU0VUVElOR1NfRElTX0FVVE8sIDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg U0lNUExFX0RFVl9QTV9PUFMoaXFzNjJ4X3BtLCBpcXM2Mnhfc3VzcGVuZCwgaXFzNjJ4X3Jlc3Vt ZSk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpcXM2Mnhf b2ZfbWF0Y2hbXSA9IHsNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAiYXpvdGVxLGlxczYyMGEiIH0s DQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImF6b3RlcSxpcXM2MjEiIH0sDQo+ID4gKwl7IC5jb21w YXRpYmxlID0gImF6b3RlcSxpcXM2MjIiIH0sDQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImF6b3Rl cSxpcXM2MjQiIH0sDQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImF6b3RlcSxpcXM2MjUiIH0sDQo+ ID4gKwl7IH0NCj4gPiArfTsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaXFzNjJ4X29m X21hdGNoKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBpcXM2MnhfaTJj X2RyaXZlciA9IHsNCj4gPiArCS5kcml2ZXIgPSB7DQo+ID4gKwkJLm5hbWUgPSAiaXFzNjJ4IiwN Cj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBpcXM2Mnhfb2ZfbWF0Y2gsDQo+ID4gKwkJLnBtID0g JmlxczYyeF9wbSwNCj4gPiArCX0sDQo+ID4gKwkucHJvYmVfbmV3ID0gaXFzNjJ4X3Byb2JlLA0K PiA+ICsJLnJlbW92ZSA9IGlxczYyeF9yZW1vdmUsDQo+ID4gK307DQo+ID4gK21vZHVsZV9pMmNf ZHJpdmVyKGlxczYyeF9pMmNfZHJpdmVyKTsNCj4gPiArDQo+ID4gK01PRFVMRV9BVVRIT1IoIkpl ZmYgTGFCdW5keSA8amVmZkBsYWJ1bmR5LmNvbT4iKTsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9O KCJBem90ZXEgSVFTNjIwQS82MjEvNjIyLzYyNC82MjUgTXVsdGktRnVuY3Rpb24gU2Vuc29ycyIp Ow0KPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWZkL2lxczYyeC10YWJsZXMuYyBiL2RyaXZlcnMvbWZkL2lxczYyeC10YWJsZXMuYw0KPiANCj4g V2h5IGhhdmUgeW91IHNlcGFyYXRlZCB0aGlzIG91dD8NCj4gDQo+IFByZWZlciB0byBzZWUgaXQg YXMgcGFydCBvZiB0aGUgbWFpbiBzb3VyY2UgZmlsZS4NCg0KSSB3YXMgbW9kZWxpbmcgc29tZSBv ZiB0aGUgb3RoZXIgTUZEcyB0aGF0IHNlZW0gdG8gYnJlYWsgbGFyZ2Ugc3RhdGljIHN0cnVjdHMN CmFuZC9vciByZWdpc3Rlci1yZWxhdGVkIGl0ZW1zIGludG8gYSBzZXBhcmF0ZSAqdGFibGVzLmMs IHdpdGggKmNvcmUuYyBob3VzaW5nDQp0aGUgbWVhdCBvZiB0aGUgZHJpdmVyLg0KDQpIb3dldmVy LCB0aG9zZSBleGFtcGxlcyBvZnRlbiBoYXZlIHdlbGwgb3ZlciBhIHRob3VzYW5kIGxpbmVzIHdo aWNoIGlzbid0IHRoZQ0KY2FzZSBoZXJlLiBJIGRvIHRoaW5rIGhhdmluZyBvbmUgc291cmNlIGZp bGUgd291bGQgbWFrZSB0aGUgZHJpdmVyIGVhc2llciB0bw0KZm9sbG93LCBzbyBJJ2xsIG1vdmUg ZXZlcnl0aGluZyBmcm9tICp0YWJsZXMuYyBpbnRvICpjb3JlLmMgYXMgeW91IHN1Z2dlc3QuDQoN Cj4gDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi41ODBmNmFj DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbWZkL2lxczYyeC10YWJsZXMu Yw0KPiA+IEBAIC0wLDAgKzEsNDM4IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wKw0KPiA+ICsvKg0KPiA+ICsgKiBBem90ZXEgSVFTNjIwQS82MjEvNjIyLzYyNC82 MjUgTXVsdGktRnVuY3Rpb24gU2Vuc29ycw0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMp IDIwMTkgSmVmZiBMYUJ1bmR5IDxqZWZmQGxhYnVuZHkuY29tPg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21mZC9j b3JlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tZmQvaXFzNjJ4Lmg+DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIElRUzYyMF9IQUxMX0ZMQUdTCQkJMHgxNg0KPiA+ICsjZGVmaW5lIElRUzYyMF9URU1Q X0NBTF9NVUxUCQkJMHhDMg0KPiA+ICsjZGVmaW5lIElRUzYyMF9URU1QX0NBTF9ESVYJCQkweEMz DQo+ID4gKyNkZWZpbmUgSVFTNjIwX1RFTVBfQ0FMX09GRlMJCQkweEM0DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIElRUzYyMV9IQUxMX0ZMQUdTCQkJMHgxOQ0KPiA+ICsjZGVmaW5lIElRUzYyMV9BTFNf Q0FMX0RJVl9MVVgJCQkweDgyDQo+ID4gKyNkZWZpbmUgSVFTNjIxX0FMU19DQUxfRElWX0lSCQkJ MHg4Mw0KPiA+ICsNCj4gPiArI2RlZmluZSBJUVM2MjJfSEFMTF9GTEFHUwkJCUlRUzYyMV9IQUxM X0ZMQUdTDQo+ID4gKw0KPiA+ICsjZGVmaW5lIElRUzYyNF9JTlRFUlZBTF9OVU0JCQkweDE4DQo+ ID4gKyNkZWZpbmUgSVFTNjI1X0lOVEVSVkFMX05VTQkJCTB4MTINCj4gPiArDQo+ID4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbWZkX2NlbGwgaXFzNjIwYXRfc3ViX2RldnNbXSA9IHsNCj4gPiArCXsN Cj4gPiArCQkubmFtZSA9IElRUzYyWF9EUlZfTkFNRV9LRVlTLA0KPiANCj4gUmVhbGx5IG5vdCBr ZWVuIG9uIG5hbWVzIGJlaW5nIGRlZmluZWQuDQo+IA0KPiBDYW4geW91IHVzZSB0aGUgcHJvcGVy IG5hbWVzIHBsZWFzZT8NCg0KU3VyZSB0aGluZywgd2lsbCBkby4NCg0KPiANCj4gPiArCQkub2Zf Y29tcGF0aWJsZSA9ICJhem90ZXEsaXFzNjIwYS1rZXlzIiwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ ID4gKwkJLm5hbWUgPSBJUVM2MjBfRFJWX05BTUVfUFdNLA0KPiA+ICsJCS5vZl9jb21wYXRpYmxl ID0gImF6b3RlcSxpcXM2MjBhLXB3bSIsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS5uYW1l ID0gSVFTNjIwX0RSVl9OQU1FX1RFTVAsDQo+ID4gKwl9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBtZmRfY2VsbCBpcXM2MjBhX3N1Yl9kZXZzW10gPSB7DQo+ID4g Kwl7DQo+ID4gKwkJLm5hbWUgPSBJUVM2MlhfRFJWX05BTUVfS0VZUywNCj4gPiArCQkub2ZfY29t cGF0aWJsZSA9ICJhem90ZXEsaXFzNjIwYS1rZXlzIiwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4g KwkJLm5hbWUgPSBJUVM2MjBfRFJWX05BTUVfUFdNLA0KPiA+ICsJCS5vZl9jb21wYXRpYmxlID0g ImF6b3RlcSxpcXM2MjBhLXB3bSIsDQo+ID4gKwl9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBtZmRfY2VsbCBpcXM2MjFfc3ViX2RldnNbXSA9IHsNCj4gPiArCXsN Cj4gPiArCQkubmFtZSA9IElRUzYyWF9EUlZfTkFNRV9LRVlTLA0KPiA+ICsJCS5vZl9jb21wYXRp YmxlID0gImF6b3RlcSxpcXM2MjEta2V5cyIsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS5u YW1lID0gSVFTNjIxX0RSVl9OQU1FX0FMUywNCj4gPiArCX0sDQo+IA0KPiBPbmUgbGluZSBwbGVh c2U6DQo+IA0KPiAJeyAubmFtZSA9IElRUzYyMV9EUlZfTkFNRV9BTFMsIH0sDQoNClN1cmUgdGhp bmcsIHdpbGwgZG8uDQoNCj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG1mZF9jZWxsIGlxczYyMl9zdWJfZGV2c1tdID0gew0KPiA+ICsJew0KPiA+ICsJCS5uYW1l ID0gSVFTNjJYX0RSVl9OQU1FX0tFWVMsDQo+ID4gKwkJLm9mX2NvbXBhdGlibGUgPSAiYXpvdGVx LGlxczYyMi1rZXlzIiwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJLm5hbWUgPSBJUVM2MjFf RFJWX05BTUVfQUxTLA0KPiA+ICsJfSwNCj4gDQo+IEFzIGFib3ZlLg0KDQpTdXJlIHRoaW5nLCB3 aWxsIGRvLg0KDQo+IA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBt ZmRfY2VsbCBpcXM2MjRfc3ViX2RldnNbXSA9IHsNCj4gPiArCXsNCj4gPiArCQkubmFtZSA9IElR UzYyWF9EUlZfTkFNRV9LRVlTLA0KPiA+ICsJCS5vZl9jb21wYXRpYmxlID0gImF6b3RlcSxpcXM2 MjQta2V5cyIsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS5uYW1lID0gSVFTNjI0X0RSVl9O QU1FX1BPUywNCj4gPiArCX0sDQo+ID4gK307DQo+IA0KPiBBcyBhYm92ZS4NCg0KU3VyZSB0aGlu Zywgd2lsbCBkby4NCg0KPiANCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWZkX2Nl bGwgaXFzNjI1X3N1Yl9kZXZzW10gPSB7DQo+ID4gKwl7DQo+ID4gKwkJLm5hbWUgPSBJUVM2Mlhf RFJWX05BTUVfS0VZUywNCj4gPiArCQkub2ZfY29tcGF0aWJsZSA9ICJhem90ZXEsaXFzNjI1LWtl eXMiLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQkubmFtZSA9IElRUzYyNF9EUlZfTkFNRV9Q T1MsDQo+ID4gKwl9LA0KPiANCj4gQXMgYWJvdmUuDQoNClN1cmUgdGhpbmcsIHdpbGwgZG8uDQoN Cj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgdTggaXFzNjIwYXRfY2FsX3Jl Z3NbXSA9IHsNCj4gPiArCUlRUzYyMF9URU1QX0NBTF9NVUxULA0KPiA+ICsJSVFTNjIwX1RFTVBf Q0FMX0RJViwNCj4gPiArCUlRUzYyMF9URU1QX0NBTF9PRkZTLA0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RhdGljIGNvbnN0IHU4IGlxczYyMV9jYWxfcmVnc1tdID0gew0KPiA+ICsJSVFTNjIxX0FM U19DQUxfRElWX0xVWCwNCj4gPiArCUlRUzYyMV9BTFNfQ0FMX0RJVl9JUiwNCj4gPiArfTsNCj4g PiArDQo+ID4gK3N0YXRpYyBjb25zdCBlbnVtIGlxczYyeF9ldmVudF9yZWcgaXFzNjIwYV9ldmVu dF9yZWdzW11bSVFTNjJYX0VWRU5UX1NJWkVdID0gew0KPiA+ICsJW0lRUzYyWF9VSV9QUk9YXSA9 IHsNCj4gPiArCQlJUVM2MlhfRVZFTlRfU1lTLAkvKiAweDEwICovDQo+ID4gKwkJSVFTNjJYX0VW RU5UX05PTkUsDQo+ID4gKwkJSVFTNjJYX0VWRU5UX1BST1gsCS8qIDB4MTIgKi8NCj4gPiArCQlJ UVM2MlhfRVZFTlRfSFlTVCwJLyogMHgxMyAqLw0KPiA+ICsJCUlRUzYyWF9FVkVOVF9OT05FLA0K PiA+ICsJCUlRUzYyWF9FVkVOVF9OT05FLA0KPiA+ICsJCUlRUzYyWF9FVkVOVF9IQUxMLAkvKiAw eDE2ICovDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05P TkUsDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYyWF9V SV9TQVIxXSA9IHsNCj4gPiArCQlJUVM2MlhfRVZFTlRfU1lTLAkvKiAweDEwICovDQo+ID4gKwkJ SVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFT NjJYX0VWRU5UX0hZU1QsCS8qIDB4MTMgKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4g PiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiArCQlJUVM2MlhfRVZFTlRfSEFMTCwJLyogMHgx NiAqLw0KPiA+ICsJCUlRUzYyWF9FVkVOVF9OT05FLA0KPiA+ICsJCUlRUzYyWF9FVkVOVF9OT05F LA0KPiA+ICsJCUlRUzYyWF9FVkVOVF9OT05FLA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiArDQo+ ID4gK3N0YXRpYyBjb25zdCBlbnVtIGlxczYyeF9ldmVudF9yZWcgaXFzNjIxX2V2ZW50X3JlZ3Nb XVtJUVM2MlhfRVZFTlRfU0laRV0gPSB7DQo+ID4gKwlbSVFTNjJYX1VJX1BST1hdID0gew0KPiA+ ICsJCUlRUzYyWF9FVkVOVF9TWVMsCS8qIDB4MTAgKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9O RSwNCj4gPiArCQlJUVM2MlhfRVZFTlRfUFJPWCwJLyogMHgxMiAqLw0KPiA+ICsJCUlRUzYyWF9F VkVOVF9IWVNULAkvKiAweDEzICovDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJ SVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJYX0VWRU5UX0FMUywJLyogMHgxNiAqLw0K PiA+ICsJCUlRUzYyWF9FVkVOVF9VSV9MTywJLyogMHgxNyAqLw0KPiA+ICsJCUlRUzYyWF9FVkVO VF9VSV9ISSwJLyogMHgxOCAqLw0KPiA+ICsJCUlRUzYyWF9FVkVOVF9IQUxMLAkvKiAweDE5ICov DQo+ID4gKwl9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IGVudW0gaXFzNjJ4 X2V2ZW50X3JlZyBpcXM2MjJfZXZlbnRfcmVnc1tdW0lRUzYyWF9FVkVOVF9TSVpFXSA9IHsNCj4g PiArCVtJUVM2MlhfVUlfUFJPWF0gPSB7DQo+ID4gKwkJSVFTNjJYX0VWRU5UX1NZUywJLyogMHgx MCAqLw0KPiA+ICsJCUlRUzYyWF9FVkVOVF9OT05FLA0KPiA+ICsJCUlRUzYyWF9FVkVOVF9QUk9Y LAkvKiAweDEyICovDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJYX0VW RU5UX0FMUywJLyogMHgxNCAqLw0KPiA+ICsJCUlRUzYyWF9FVkVOVF9OT05FLA0KPiA+ICsJCUlR UzYyWF9FVkVOVF9JUiwJLyogMHgxNiAqLw0KPiA+ICsJCUlRUzYyWF9FVkVOVF9VSV9MTywJLyog MHgxNyAqLw0KPiA+ICsJCUlRUzYyWF9FVkVOVF9VSV9ISSwJLyogMHgxOCAqLw0KPiA+ICsJCUlR UzYyWF9FVkVOVF9IQUxMLAkvKiAweDE5ICovDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYyWF9VSV9T QVIxXSA9IHsNCj4gPiArCQlJUVM2MlhfRVZFTlRfU1lTLAkvKiAweDEwICovDQo+ID4gKwkJSVFT NjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJY X0VWRU5UX0hZU1QsCS8qIDB4MTMgKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfQUxTLAkvKiAweDE0 ICovDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJYX0VWRU5UX0lSLAkv KiAweDE2ICovDQo+ID4gKwkJSVFTNjJYX0VWRU5UX1VJX0xPLAkvKiAweDE3ICovDQo+ID4gKwkJ SVFTNjJYX0VWRU5UX1VJX0hJLAkvKiAweDE4ICovDQo+ID4gKwkJSVFTNjJYX0VWRU5UX0hBTEws CS8qIDB4MTkgKi8NCj4gPiArCX0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qg ZW51bSBpcXM2MnhfZXZlbnRfcmVnIGlxczYyNF9ldmVudF9yZWdzW11bSVFTNjJYX0VWRU5UX1NJ WkVdID0gew0KPiA+ICsJW0lRUzYyWF9VSV9QUk9YXSA9IHsNCj4gPiArCQlJUVM2MlhfRVZFTlRf U1lTLAkvKiAweDEwICovDQo+ID4gKwkJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwkJSVFTNjJY X0VWRU5UX1BST1gsCS8qIDB4MTIgKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiAr CQlJUVM2MlhfRVZFTlRfV0hFRUwsCS8qIDB4MTQgKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9O RSwNCj4gPiArCQlJUVM2MlhfRVZFTlRfVUlfTE8sCS8qIDB4MTYgKi8NCj4gPiArCQlJUVM2Mlhf RVZFTlRfVUlfSEksCS8qIDB4MTcgKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfSU5URVIsCS8qIDB4 MTggKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiArCX0sDQo+ID4gK307DQo+ID4g Kw0KPiA+ICtzdGF0aWMgY29uc3QgZW51bSBpcXM2MnhfZXZlbnRfcmVnIGlxczYyNV9ldmVudF9y ZWdzW11bSVFTNjJYX0VWRU5UX1NJWkVdID0gew0KPiA+ICsJW0lRUzYyWF9VSV9QUk9YXSA9IHsN Cj4gPiArCQlJUVM2MlhfRVZFTlRfU1lTLAkvKiAweDEwICovDQo+ID4gKwkJSVFTNjJYX0VWRU5U X1BST1gsCS8qIDB4MTEgKi8NCj4gPiArCQlJUVM2MlhfRVZFTlRfSU5URVIsCS8qIDB4MTIgKi8N Cj4gPiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4g PiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiAr CQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiArCQlJUVM2MlhfRVZFTlRfTk9ORSwNCj4gPiArCQlJ UVM2MlhfRVZFTlRfTk9ORSwNCj4gPiArCX0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIHsN Cj4gPiArCUlRUzYyMEFUX0RFViwNCj4gPiArCUlRUzYyMEFfREVWLA0KPiA+ICsJSVFTNjIxX0RF ViwNCj4gPiArCUlRUzYyMl9ERVYsDQo+ID4gKwlJUVM2MjRfREVWLA0KPiA+ICsJSVFTNjI1X0RF ViwNCj4gPiArfTsNCj4gPiArDQo+ID4gK2NvbnN0IHN0cnVjdCBpcXM2MnhfZGV2X2Rlc2MgaXFz NjJ4X2RldnNbSVFTNjJYX05VTV9ERVZdID0gew0KPiA+ICsJW0lRUzYyMEFUX0RFVl0gPSB7DQo+ ID4gKwkJLmRldl9uYW1lCT0gImlxczYyMGF0IiwNCj4gPiArCQkuc3ViX2RldnMJPSBpcXM2MjBh dF9zdWJfZGV2cywNCj4gPiArCQkubnVtX3N1Yl9kZXZzCT0gQVJSQVlfU0laRShpcXM2MjBhdF9z dWJfZGV2cyksDQo+ID4gKw0KPiA+ICsJCS5wcm9kX251bQk9IElRUzYyMF9QUk9EX05VTSwNCj4g PiArCQkuc3dfbnVtCQk9IDB4MDgsDQo+ID4gKwkJLmNhbF9yZWdzCT0gaXFzNjIwYXRfY2FsX3Jl Z3MsDQo+ID4gKwkJLm51bV9jYWxfcmVncwk9IEFSUkFZX1NJWkUoaXFzNjIwYXRfY2FsX3JlZ3Mp LA0KPiA+ICsNCj4gPiArCQkucHJveF9tYXNrCT0gQklUKDApLA0KPiA+ICsJCS5zYXJfbWFzawk9 IEJJVCgxKSB8IEJJVCg3KSwNCj4gPiArCQkuaGFsbF9tYXNrCT0gQklUKDIpLA0KPiA+ICsJCS5o eXN0X21hc2sJPSBCSVQoMyksDQo+ID4gKwkJLnRlbXBfbWFzawk9IEJJVCg0KSwNCj4gPiArDQo+ ID4gKwkJLmhhbGxfZmxhZ3MJPSBJUVM2MjBfSEFMTF9GTEFHUywNCj4gPiArDQo+ID4gKwkJLmNs a19kaXYJPSA0LA0KPiA+ICsJCS5md19uYW1lCT0gImlxczYyMGEuYmluIiwNCj4gPiArCQkuZXZl bnRfcmVncwk9ICZpcXM2MjBhX2V2ZW50X3JlZ3NbSVFTNjJYX1VJX1BST1hdLA0KPiA+ICsJfSwN Cj4gPiArCVtJUVM2MjBBX0RFVl0gPSB7DQo+ID4gKwkJLmRldl9uYW1lCT0gImlxczYyMGEiLA0K PiA+ICsJCS5zdWJfZGV2cwk9IGlxczYyMGFfc3ViX2RldnMsDQo+ID4gKwkJLm51bV9zdWJfZGV2 cwk9IEFSUkFZX1NJWkUoaXFzNjIwYV9zdWJfZGV2cyksDQo+ID4gKw0KPiA+ICsJCS5wcm9kX251 bQk9IElRUzYyMF9QUk9EX05VTSwNCj4gPiArCQkuc3dfbnVtCQk9IDB4MDgsDQo+ID4gKw0KPiA+ ICsJCS5wcm94X21hc2sJPSBCSVQoMCksDQo+ID4gKwkJLnNhcl9tYXNrCT0gQklUKDEpIHwgQklU KDcpLA0KPiA+ICsJCS5oYWxsX21hc2sJPSBCSVQoMiksDQo+ID4gKwkJLmh5c3RfbWFzawk9IEJJ VCgzKSwNCj4gPiArCQkudGVtcF9tYXNrCT0gQklUKDQpLA0KPiA+ICsNCj4gPiArCQkuaGFsbF9m bGFncwk9IElRUzYyMF9IQUxMX0ZMQUdTLA0KPiA+ICsNCj4gPiArCQkuY2xrX2Rpdgk9IDQsDQo+ ID4gKwkJLmZ3X25hbWUJPSAiaXFzNjIwYS5iaW4iLA0KPiA+ICsJCS5ldmVudF9yZWdzCT0gJmlx czYyMGFfZXZlbnRfcmVnc1tJUVM2MlhfVUlfUFJPWF0sDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYy MV9ERVZdID0gew0KPiA+ICsJCS5kZXZfbmFtZQk9ICJpcXM2MjEiLA0KPiA+ICsJCS5zdWJfZGV2 cwk9IGlxczYyMV9zdWJfZGV2cywNCj4gPiArCQkubnVtX3N1Yl9kZXZzCT0gQVJSQVlfU0laRShp cXM2MjFfc3ViX2RldnMpLA0KPiA+ICsNCj4gPiArCQkucHJvZF9udW0JPSBJUVM2MjFfUFJPRF9O VU0sDQo+ID4gKwkJLnN3X251bQkJPSAweDA5LA0KPiA+ICsJCS5jYWxfcmVncwk9IGlxczYyMV9j YWxfcmVncywNCj4gPiArCQkubnVtX2NhbF9yZWdzCT0gQVJSQVlfU0laRShpcXM2MjFfY2FsX3Jl Z3MpLA0KPiA+ICsNCj4gPiArCQkucHJveF9tYXNrCT0gQklUKDApLA0KPiA+ICsJCS5oYWxsX21h c2sJPSBCSVQoMSksDQo+ID4gKwkJLmFsc19tYXNrCT0gQklUKDIpLA0KPiA+ICsJCS5oeXN0X21h c2sJPSBCSVQoMyksDQo+ID4gKwkJLnRlbXBfbWFzawk9IEJJVCg0KSwNCj4gPiArDQo+ID4gKwkJ LmFsc19mbGFncwk9IElRUzYyMV9BTFNfRkxBR1MsDQo+ID4gKwkJLmhhbGxfZmxhZ3MJPSBJUVM2 MjFfSEFMTF9GTEFHUywNCj4gPiArCQkuaHlzdF9zaGlmdAk9IDUsDQo+ID4gKw0KPiA+ICsJCS5j bGtfZGl2CT0gMiwNCj4gPiArCQkuZndfbmFtZQk9ICJpcXM2MjEuYmluIiwNCj4gPiArCQkuZXZl bnRfcmVncwk9ICZpcXM2MjFfZXZlbnRfcmVnc1tJUVM2MlhfVUlfUFJPWF0sDQo+ID4gKwl9LA0K PiA+ICsJW0lRUzYyMl9ERVZdID0gew0KPiA+ICsJCS5kZXZfbmFtZQk9ICJpcXM2MjIiLA0KPiA+ ICsJCS5zdWJfZGV2cwk9IGlxczYyMl9zdWJfZGV2cywNCj4gPiArCQkubnVtX3N1Yl9kZXZzCT0g QVJSQVlfU0laRShpcXM2MjJfc3ViX2RldnMpLA0KPiA+ICsNCj4gPiArCQkucHJvZF9udW0JPSBJ UVM2MjJfUFJPRF9OVU0sDQo+ID4gKwkJLnN3X251bQkJPSAweDA2LA0KPiA+ICsNCj4gPiArCQku cHJveF9tYXNrCT0gQklUKDApLA0KPiA+ICsJCS5zYXJfbWFzawk9IEJJVCgxKSwNCj4gPiArCQku aGFsbF9tYXNrCT0gQklUKDIpLA0KPiA+ICsJCS5hbHNfbWFzawk9IEJJVCgzKSwNCj4gPiArCQku aXJfbWFzawk9IEJJVCg0KSwNCj4gPiArDQo+ID4gKwkJLmFsc19mbGFncwk9IElRUzYyMl9BTFNf RkxBR1MsDQo+ID4gKwkJLmhhbGxfZmxhZ3MJPSBJUVM2MjJfSEFMTF9GTEFHUywNCj4gPiArDQo+ ID4gKwkJLmNsa19kaXYJPSAyLA0KPiA+ICsJCS5md19uYW1lCT0gImlxczYyMi5iaW4iLA0KPiA+ ICsJCS5ldmVudF9yZWdzCT0gJmlxczYyMl9ldmVudF9yZWdzW0lRUzYyWF9VSV9QUk9YXSwNCj4g PiArCX0sDQo+ID4gKwlbSVFTNjI0X0RFVl0gPSB7DQo+ID4gKwkJLmRldl9uYW1lCT0gImlxczYy NCIsDQo+ID4gKwkJLnN1Yl9kZXZzCT0gaXFzNjI0X3N1Yl9kZXZzLA0KPiA+ICsJCS5udW1fc3Vi X2RldnMJPSBBUlJBWV9TSVpFKGlxczYyNF9zdWJfZGV2cyksDQo+ID4gKw0KPiA+ICsJCS5wcm9k X251bQk9IElRUzYyNF9QUk9EX05VTSwNCj4gPiArCQkuc3dfbnVtCQk9IDB4MEIsDQo+ID4gKw0K PiA+ICsJCS5pbnRlcnZhbAk9IElRUzYyNF9JTlRFUlZBTF9OVU0sDQo+ID4gKwkJLmludGVydmFs X2Rpdgk9IDMsDQo+ID4gKw0KPiA+ICsJCS5jbGtfZGl2CT0gMiwNCj4gPiArCQkuZndfbmFtZQk9 ICJpcXM2MjQuYmluIiwNCj4gPiArCQkuZXZlbnRfcmVncwk9ICZpcXM2MjRfZXZlbnRfcmVnc1tJ UVM2MlhfVUlfUFJPWF0sDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYyNV9ERVZdID0gew0KPiA+ICsJ CS5kZXZfbmFtZQk9ICJpcXM2MjUiLA0KPiA+ICsJCS5zdWJfZGV2cwk9IGlxczYyNV9zdWJfZGV2 cywNCj4gPiArCQkubnVtX3N1Yl9kZXZzCT0gQVJSQVlfU0laRShpcXM2MjVfc3ViX2RldnMpLA0K PiA+ICsNCj4gPiArCQkucHJvZF9udW0JPSBJUVM2MjVfUFJPRF9OVU0sDQo+ID4gKwkJLnN3X251 bQkJPSAweDBCLA0KPiA+ICsNCj4gPiArCQkuaW50ZXJ2YWwJPSBJUVM2MjVfSU5URVJWQUxfTlVN LA0KPiA+ICsJCS5pbnRlcnZhbF9kaXYJPSAxMCwNCj4gPiArDQo+ID4gKwkJLmNsa19kaXYJPSAy LA0KPiA+ICsJCS5md19uYW1lCT0gImlxczYyNS5iaW4iLA0KPiA+ICsJCS5ldmVudF9yZWdzCT0g JmlxczYyNV9ldmVudF9yZWdzW0lRUzYyWF9VSV9QUk9YXSwNCj4gPiArCX0sDQo+ID4gK307DQo+ ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGlxczYyeF9kZXZzKTsNCj4gPiArDQo+ID4gK2NvbnN0IHN0 cnVjdCBpcXM2MnhfZXZlbnRfZGVzYyBpcXM2MnhfZXZlbnRzW0lRUzYyWF9OVU1fRVZFTlRTXSA9 IHsNCj4gPiArCVtJUVM2MlhfRVZFTlRfUFJPWF9DSDBfVF0gPSB7DQo+ID4gKwkJLnJlZwk9IElR UzYyWF9FVkVOVF9QUk9YLA0KPiA+ICsJCS5tYXNrCT0gQklUKDQpLA0KPiA+ICsJCS52YWwJPSBC SVQoNCksDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYyWF9FVkVOVF9QUk9YX0NIMF9QXSA9IHsNCj4g PiArCQkucmVnCT0gSVFTNjJYX0VWRU5UX1BST1gsDQo+ID4gKwkJLm1hc2sJPSBCSVQoMCksDQo+ ID4gKwkJLnZhbAk9IEJJVCgwKSwNCj4gPiArCX0sDQo+ID4gKwlbSVFTNjJYX0VWRU5UX1BST1hf Q0gxX1RdID0gew0KPiA+ICsJCS5yZWcJPSBJUVM2MlhfRVZFTlRfUFJPWCwNCj4gPiArCQkubWFz awk9IEJJVCg1KSwNCj4gPiArCQkudmFsCT0gQklUKDUpLA0KPiA+ICsJfSwNCj4gPiArCVtJUVM2 MlhfRVZFTlRfUFJPWF9DSDFfUF0gPSB7DQo+ID4gKwkJLnJlZwk9IElRUzYyWF9FVkVOVF9QUk9Y LA0KPiA+ICsJCS5tYXNrCT0gQklUKDEpLA0KPiA+ICsJCS52YWwJPSBCSVQoMSksDQo+ID4gKwl9 LA0KPiA+ICsJW0lRUzYyWF9FVkVOVF9QUk9YX0NIMl9UXSA9IHsNCj4gPiArCQkucmVnCT0gSVFT NjJYX0VWRU5UX1BST1gsDQo+ID4gKwkJLm1hc2sJPSBCSVQoNiksDQo+ID4gKwkJLnZhbAk9IEJJ VCg2KSwNCj4gPiArCX0sDQo+ID4gKwlbSVFTNjJYX0VWRU5UX1BST1hfQ0gyX1BdID0gew0KPiA+ ICsJCS5yZWcJPSBJUVM2MlhfRVZFTlRfUFJPWCwNCj4gPiArCQkubWFzawk9IEJJVCgyKSwNCj4g PiArCQkudmFsCT0gQklUKDIpLA0KPiA+ICsJfSwNCj4gPiArCVtJUVM2MlhfRVZFTlRfSFlTVF9Q T1NfVF0gPSB7DQo+ID4gKwkJLnJlZwk9IElRUzYyWF9FVkVOVF9IWVNULA0KPiA+ICsJCS5tYXNr CT0gQklUKDYpIHwgQklUKDcpLA0KPiA+ICsJCS52YWwJPSBCSVQoNiksDQo+ID4gKwl9LA0KPiA+ ICsJW0lRUzYyWF9FVkVOVF9IWVNUX1BPU19QXSA9IHsNCj4gPiArCQkucmVnCT0gSVFTNjJYX0VW RU5UX0hZU1QsDQo+ID4gKwkJLm1hc2sJPSBCSVQoNSkgfCBCSVQoNyksDQo+ID4gKwkJLnZhbAk9 IEJJVCg1KSwNCj4gPiArCX0sDQo+ID4gKwlbSVFTNjJYX0VWRU5UX0hZU1RfTkVHX1RdID0gew0K PiA+ICsJCS5yZWcJPSBJUVM2MlhfRVZFTlRfSFlTVCwNCj4gPiArCQkubWFzawk9IEJJVCg2KSB8 IEJJVCg3KSwNCj4gPiArCQkudmFsCT0gQklUKDYpIHwgQklUKDcpLA0KPiA+ICsJfSwNCj4gPiAr CVtJUVM2MlhfRVZFTlRfSFlTVF9ORUdfUF0gPSB7DQo+ID4gKwkJLnJlZwk9IElRUzYyWF9FVkVO VF9IWVNULA0KPiA+ICsJCS5tYXNrCT0gQklUKDUpIHwgQklUKDcpLA0KPiA+ICsJCS52YWwJPSBC SVQoNSkgfCBCSVQoNyksDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYyWF9FVkVOVF9TQVIxX0FDVF0g PSB7DQo+ID4gKwkJLnJlZwk9IElRUzYyWF9FVkVOVF9IWVNULA0KPiA+ICsJCS5tYXNrCT0gQklU KDQpLA0KPiA+ICsJCS52YWwJPSBCSVQoNCksDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYyWF9FVkVO VF9TQVIxX1FSRF0gPSB7DQo+ID4gKwkJLnJlZwk9IElRUzYyWF9FVkVOVF9IWVNULA0KPiA+ICsJ CS5tYXNrCT0gQklUKDIpLA0KPiA+ICsJCS52YWwJPSBCSVQoMiksDQo+ID4gKwl9LA0KPiA+ICsJ W0lRUzYyWF9FVkVOVF9TQVIxX01PVkVdID0gew0KPiA+ICsJCS5yZWcJPSBJUVM2MlhfRVZFTlRf SFlTVCwNCj4gPiArCQkubWFzawk9IEJJVCgxKSwNCj4gPiArCQkudmFsCT0gQklUKDEpLA0KPiA+ ICsJfSwNCj4gPiArCVtJUVM2MlhfRVZFTlRfU0FSMV9IQUxUXSA9IHsNCj4gPiArCQkucmVnCT0g SVFTNjJYX0VWRU5UX0hZU1QsDQo+ID4gKwkJLm1hc2sJPSBCSVQoMCksDQo+ID4gKwkJLnZhbAk9 IEJJVCgwKSwNCj4gPiArCX0sDQo+ID4gKwlbSVFTNjJYX0VWRU5UX1dIRUVMX1VQXSA9IHsNCj4g PiArCQkucmVnCT0gSVFTNjJYX0VWRU5UX1dIRUVMLA0KPiA+ICsJCS5tYXNrCT0gQklUKDcpIHwg QklUKDYpLA0KPiA+ICsJCS52YWwJPSBCSVQoNyksDQo+ID4gKwl9LA0KPiA+ICsJW0lRUzYyWF9F VkVOVF9XSEVFTF9ETl0gPSB7DQo+ID4gKwkJLnJlZwk9IElRUzYyWF9FVkVOVF9XSEVFTCwNCj4g PiArCQkubWFzawk9IEJJVCg3KSB8IEJJVCg2KSwNCj4gPiArCQkudmFsCT0gQklUKDcpIHwgQklU KDYpLA0KPiA+ICsJfSwNCj4gPiArCVtJUVM2MlhfRVZFTlRfSEFMTF9OX1RdID0gew0KPiA+ICsJ CS5yZWcJPSBJUVM2MlhfRVZFTlRfSEFMTCwNCj4gPiArCQkubWFzawk9IEJJVCgyKSB8IEJJVCgw KSwNCj4gPiArCQkudmFsCT0gQklUKDIpLA0KPiA+ICsJfSwNCj4gPiArCVtJUVM2MlhfRVZFTlRf SEFMTF9OX1BdID0gew0KPiA+ICsJCS5yZWcJPSBJUVM2MlhfRVZFTlRfSEFMTCwNCj4gPiArCQku bWFzawk9IEJJVCgxKSB8IEJJVCgwKSwNCj4gPiArCQkudmFsCT0gQklUKDEpLA0KPiA+ICsJfSwN Cj4gPiArCVtJUVM2MlhfRVZFTlRfSEFMTF9TX1RdID0gew0KPiA+ICsJCS5yZWcJPSBJUVM2Mlhf RVZFTlRfSEFMTCwNCj4gPiArCQkubWFzawk9IEJJVCgyKSB8IEJJVCgwKSwNCj4gPiArCQkudmFs CT0gQklUKDIpIHwgQklUKDApLA0KPiA+ICsJfSwNCj4gPiArCVtJUVM2MlhfRVZFTlRfSEFMTF9T X1BdID0gew0KPiA+ICsJCS5yZWcJPSBJUVM2MlhfRVZFTlRfSEFMTCwNCj4gPiArCQkubWFzawk9 IEJJVCgxKSB8IEJJVCgwKSwNCj4gPiArCQkudmFsCT0gQklUKDEpIHwgQklUKDApLA0KPiA+ICsJ fSwNCj4gPiArCVtJUVM2MlhfRVZFTlRfU1lTX1JFU0VUXSA9IHsNCj4gPiArCQkucmVnCT0gSVFT NjJYX0VWRU5UX1NZUywNCj4gPiArCQkubWFzawk9IEJJVCg3KSwNCj4gPiArCQkudmFsCT0gQklU KDcpLA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiArRVhQT1JUX1NZTUJPTF9HUEwoaXFzNjJ4X2V2 ZW50cyk7DQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZkL2lxczYyeC5oIGIvaW5j bHVkZS9saW51eC9tZmQvaXFzNjJ4LmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAuLjBkYzU5OTcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvaW5jbHVk ZS9saW51eC9tZmQvaXFzNjJ4LmgNCj4gPiBAQCAtMCwwICsxLDE0NiBAQA0KPiA+ICsvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8NCj4gPiArLyoNCj4gPiArICogQXpvdGVx IElRUzYyMEEvNjIxLzYyMi82MjQvNjI1IE11bHRpLUZ1bmN0aW9uIFNlbnNvcnMNCj4gPiArICoN Cj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE5IEplZmYgTGFCdW5keSA8amVmZkBsYWJ1bmR5LmNv bT4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fTElOVVhfTUZEX0lRUzYyWF9IDQo+ ID4gKyNkZWZpbmUgX19MSU5VWF9NRkRfSVFTNjJYX0gNCj4gPiArDQo+ID4gKyNkZWZpbmUgSVFT NjIwX1BST0RfTlVNCQkJCTB4NDENCj4gPiArI2RlZmluZSBJUVM2MjFfUFJPRF9OVU0JCQkJMHg0 Ng0KPiA+ICsjZGVmaW5lIElRUzYyMl9QUk9EX05VTQkJCQkweDQyDQo+ID4gKyNkZWZpbmUgSVFT NjI0X1BST0RfTlVNCQkJCTB4NDMNCj4gPiArI2RlZmluZSBJUVM2MjVfUFJPRF9OVU0JCQkJMHg0 RQ0KPiA+ICsNCj4gPiArI2RlZmluZSBJUVM2MjFfQUxTX0ZMQUdTCQkJMHgxNg0KPiA+ICsjZGVm aW5lIElRUzYyMl9BTFNfRkxBR1MJCQkweDE0DQo+ID4gKw0KPiA+ICsjZGVmaW5lIElRUzYyNF9I QUxMX1VJCQkJCTB4NzANCj4gPiArI2RlZmluZSBJUVM2MjRfSEFMTF9VSV9XSExfRVZFTlQJCUJJ VCg0KQ0KPiA+ICsjZGVmaW5lIElRUzYyNF9IQUxMX1VJX0lOVF9FVkVOVAkJQklUKDMpDQo+ID4g KyNkZWZpbmUgSVFTNjI0X0hBTExfVUlfQVVUT19DQUwJCQlCSVQoMikNCj4gPiArDQo+ID4gKyNk ZWZpbmUgSVFTNjI0X0lOVEVSVkFMX0RJVgkJCTB4N0QNCj4gPiArDQo+ID4gKyNkZWZpbmUgSVFT NjIwX0dMQkxfRVZFTlRfTUFTSwkJCTB4RDcNCj4gPiArI2RlZmluZSBJUVM2MjBfR0xCTF9FVkVO VF9NQVNLX1BNVQkJQklUKDYpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIElRUzYyWF9OVU1fREVWCQkJ CTYNCj4gPiArI2RlZmluZSBJUVM2MlhfTlVNX0tFWVMJCQkJMTYNCj4gPiArI2RlZmluZSBJUVM2 MlhfTlVNX0VWRU5UUwkJCShJUVM2MlhfTlVNX0tFWVMgKyA1KQ0KPiA+ICsNCj4gPiArI2RlZmlu ZSBJUVM2MlhfRVZFTlRfU0laRQkJCTEwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIElRUzYyWF9EUlZf TkFNRV9LRVlTCQkJImlxczYyeC1rZXlzIg0KPiA+ICsjZGVmaW5lIElRUzYyMF9EUlZfTkFNRV9U RU1QCQkJImlxczYyMGF0LXRlbXAiDQo+ID4gKyNkZWZpbmUgSVFTNjIwX0RSVl9OQU1FX1BXTQkJ CSJpcXM2MjBhLXB3bSINCj4gPiArI2RlZmluZSBJUVM2MjFfRFJWX05BTUVfQUxTCQkJImlxczYy MS1hbHMiDQo+ID4gKyNkZWZpbmUgSVFTNjI0X0RSVl9OQU1FX1BPUwkJCSJpcXM2MjQtcG9zIg0K PiA+ICsNCj4gPiArZW51bSBpcXM2MnhfdWlfc2VsIHsNCj4gPiArCUlRUzYyWF9VSV9QUk9YLA0K PiA+ICsJSVFTNjJYX1VJX1NBUjEsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIGlxczYyeF9l dmVudF9yZWcgew0KPiA+ICsJSVFTNjJYX0VWRU5UX05PTkUsDQo+ID4gKwlJUVM2MlhfRVZFTlRf U1lTLA0KPiA+ICsJSVFTNjJYX0VWRU5UX1BST1gsDQo+ID4gKwlJUVM2MlhfRVZFTlRfSFlTVCwN Cj4gPiArCUlRUzYyWF9FVkVOVF9IQUxMLA0KPiA+ICsJSVFTNjJYX0VWRU5UX0FMUywNCj4gPiAr CUlRUzYyWF9FVkVOVF9JUiwNCj4gPiArCUlRUzYyWF9FVkVOVF9XSEVFTCwNCj4gPiArCUlRUzYy WF9FVkVOVF9JTlRFUiwNCj4gPiArCUlRUzYyWF9FVkVOVF9VSV9MTywNCj4gPiArCUlRUzYyWF9F VkVOVF9VSV9ISSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK2VudW0gaXFzNjJ4X2V2ZW50X2ZsYWcg ew0KPiA+ICsJLyoga2V5cyAqLw0KPiA+ICsJSVFTNjJYX0VWRU5UX1BST1hfQ0gwX1QsDQo+ID4g KwlJUVM2MlhfRVZFTlRfUFJPWF9DSDBfUCwNCj4gPiArCUlRUzYyWF9FVkVOVF9QUk9YX0NIMV9U LA0KPiA+ICsJSVFTNjJYX0VWRU5UX1BST1hfQ0gxX1AsDQo+ID4gKwlJUVM2MlhfRVZFTlRfUFJP WF9DSDJfVCwNCj4gPiArCUlRUzYyWF9FVkVOVF9QUk9YX0NIMl9QLA0KPiA+ICsJSVFTNjJYX0VW RU5UX0hZU1RfUE9TX1QsDQo+ID4gKwlJUVM2MlhfRVZFTlRfSFlTVF9QT1NfUCwNCj4gPiArCUlR UzYyWF9FVkVOVF9IWVNUX05FR19ULA0KPiA+ICsJSVFTNjJYX0VWRU5UX0hZU1RfTkVHX1AsDQo+ ID4gKwlJUVM2MlhfRVZFTlRfU0FSMV9BQ1QsDQo+ID4gKwlJUVM2MlhfRVZFTlRfU0FSMV9RUkQs DQo+ID4gKwlJUVM2MlhfRVZFTlRfU0FSMV9NT1ZFLA0KPiA+ICsJSVFTNjJYX0VWRU5UX1NBUjFf SEFMVCwNCj4gPiArCUlRUzYyWF9FVkVOVF9XSEVFTF9VUCwNCj4gPiArCUlRUzYyWF9FVkVOVF9X SEVFTF9ETiwNCj4gPiArDQo+ID4gKwkvKiBzd2l0Y2hlcyAqLw0KPiA+ICsJSVFTNjJYX0VWRU5U X0hBTExfTl9ULA0KPiA+ICsJSVFTNjJYX0VWRU5UX0hBTExfTl9QLA0KPiA+ICsJSVFTNjJYX0VW RU5UX0hBTExfU19ULA0KPiA+ICsJSVFTNjJYX0VWRU5UX0hBTExfU19QLA0KPiA+ICsNCj4gPiAr CS8qIGV2ZXJ5dGhpbmcgZWxzZSAqLw0KPiA+ICsJSVFTNjJYX0VWRU5UX1NZU19SRVNFVCwNCj4g PiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBpcXM2MnhfZXZlbnRfZGF0YSB7DQo+ID4gKwl1MTYg dWlfZGF0YTsNCj4gPiArCXU4IGFsc19mbGFnczsNCj4gPiArCXU4IGlyX2ZsYWdzOw0KPiA+ICsJ dTggaW50ZXJ2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaXFzNjJ4X2V2ZW50X2Rl c2Mgew0KPiA+ICsJZW51bSBpcXM2MnhfZXZlbnRfcmVnIHJlZzsNCj4gPiArCXU4IG1hc2s7DQo+ ID4gKwl1OCB2YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaXFzNjJ4X2Rldl9kZXNj IHsNCj4gPiArCWNvbnN0IGNoYXIgKmRldl9uYW1lOw0KPiA+ICsJY29uc3Qgc3RydWN0IG1mZF9j ZWxsICpzdWJfZGV2czsNCj4gPiArCWludCBudW1fc3ViX2RldnM7DQo+ID4gKw0KPiA+ICsJdTgg cHJvZF9udW07DQo+ID4gKwl1OCBzd19udW07DQo+ID4gKwljb25zdCB1OCAqY2FsX3JlZ3M7DQo+ ID4gKwlpbnQgbnVtX2NhbF9yZWdzOw0KPiA+ICsNCj4gPiArCXU4IHByb3hfbWFzazsNCj4gPiAr CXU4IHNhcl9tYXNrOw0KPiA+ICsJdTggaGFsbF9tYXNrOw0KPiA+ICsJdTggaHlzdF9tYXNrOw0K PiA+ICsJdTggdGVtcF9tYXNrOw0KPiA+ICsJdTggYWxzX21hc2s7DQo+ID4gKwl1OCBpcl9tYXNr Ow0KPiA+ICsNCj4gPiArCXU4IGFsc19mbGFnczsNCj4gPiArCXU4IGhhbGxfZmxhZ3M7DQo+ID4g Kwl1OCBoeXN0X3NoaWZ0Ow0KPiA+ICsNCj4gPiArCXU4IGludGVydmFsOw0KPiA+ICsJdTggaW50 ZXJ2YWxfZGl2Ow0KPiA+ICsNCj4gPiArCXU4IGNsa19kaXY7DQo+ID4gKwljb25zdCBjaGFyICpm d19uYW1lOw0KPiA+ICsJY29uc3QgZW51bSBpcXM2MnhfZXZlbnRfcmVnICgqZXZlbnRfcmVncylb SVFTNjJYX0VWRU5UX1NJWkVdOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGlxczYyeF9j b3JlIHsNCj4gPiArCWNvbnN0IHN0cnVjdCBpcXM2MnhfZGV2X2Rlc2MgKmRldl9kZXNjOw0KPiA+ ICsJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsNCj4gPiArCXN0cnVjdCByZWdtYXAgKm1hcDsN Cj4gDQo+IFByZWZlciAncmVnbWFwJywgaXQncyBsZXNzIGFtYmlndW91cy4NCg0KU3VyZSB0aGlu Zywgd2lsbCBkby4NCg0KPiANCj4gPiArCXN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkIG5o Ow0KPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBmd19ibGtfaGVhZDsNCj4gPiArCXN0cnVjdCBjb21w bGV0aW9uIGZ3X2RvbmU7DQo+ID4gKwllbnVtIGlxczYyeF91aV9zZWwgdWlfc2VsOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCBpcXM2MnhfZGV2X2Rlc2MgaXFzNjJ4 X2RldnNbSVFTNjJYX05VTV9ERVZdOw0KPiA+ICtleHRlcm4gY29uc3Qgc3RydWN0IGlxczYyeF9l dmVudF9kZXNjIGlxczYyeF9ldmVudHNbSVFTNjJYX05VTV9FVkVOVFNdOw0KPiA+ICsNCj4gPiAr I2VuZGlmIC8qIF9fTElOVVhfTUZEX0lRUzYyWF9IICovDQo+IA0KPiAtLSANCj4gTGVlIEpvbmVz IFvmnY7nkLzmlq9dDQo+IExpbmFybyBTZXJ2aWNlcyBUZWNobmljYWwgTGVhZA0KPiBMaW5hcm8u b3JnIOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3IgQVJNIFNvQ3MNCj4gRm9sbG93IExpbmFy bzogRmFjZWJvb2sgfCBUd2l0dGVyIHwgQmxvZw0KDQpLaW5kIHJlZ2FyZHMsDQpKZWZmIExhQnVu ZHkNCg==