From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4B38C74A5B for ; Thu, 16 Mar 2023 14:01:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230435AbjCPOA7 (ORCPT ); Thu, 16 Mar 2023 10:00:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230434AbjCPOAz (ORCPT ); Thu, 16 Mar 2023 10:00:55 -0400 Received: from FRA01-MR2-obe.outbound.protection.outlook.com (mail-mr2fra01on2089.outbound.protection.outlook.com [40.107.9.89]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EBFA7BDD12; Thu, 16 Mar 2023 07:00:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gD8CkjoDDjabSiKP97KbkQHPG5moqeF5XNlGqrExd7kdvSgRm4qdL7vwQMre0ykTa+23XmjxONr3OFPNfoypeGPWelY5hddFI3Y2fnbD9FIvpHxdaaWX7s+QS3y2X6wu6A57LVLk33jYzDT2WD1cj0eB7nSCVuI+hPErjX2ojTVaycq311icHDYvc8tl5j4+4KxzinKVkNsJDBpig0sJ6Pj1HFagyOLndtkOkwrYtvliOF8bsMnlZHm3w7jBnTYAc7Sh7QZ2xQtQuCIXY1OMvs0JhmyKfwPySRI3hBYq0ZLjiIwo9/LvFonkLMyuW6gmeAOgNbgLpk9kICX3iXjs9g== 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=gFgiCypJQxYOygFE722UlHNxhwL/nu4fDf3PEqDjDCY=; b=n+kQWrVAHs6OpEkxiLoa2juGc0+satfnmy95NF1I3oyFgdLzyI0Y8ZcxC5C+tN+WWjtyXdPxekSPRs1UwNsvrIQQnKGudmVP7AGEnOvtY5BCpESKlMB+avf9GdttuH9nBfqNEbdPPnWZiCdKXVF2G7UAi72ctGHlv/QacQlJbzuySmdl2Yl8hqYy8TgtA5Aw1czRCYnQtR2kkN/PZpGxijdVyTARXSFOsiVf2Dih7w0fSupj65UAQ5hfICrbjftE++IG+mKSY6YBKSNsQuWl0KTKnvmwHS4Rqi3cvsDefQ0jqoVcWEfwFDS805SREiwbWwXcx/WQKMg4xns/fTHXZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csgroup.eu; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gFgiCypJQxYOygFE722UlHNxhwL/nu4fDf3PEqDjDCY=; b=rM9yC9C6yvSXUQg6GACSRaiV1yxTpLbfWIbuvz7jLtSxa8lC1/4E7lMPRLxDIYnkU+/kPwavCyoStc1Q+hKgchE5BnOM1JEnUOVThxU1kQXvGV4O4cxVXFxJumWhnS1bT3eRemy+8vhgOGIQj55b/8TLqgXn9pmZXP+JYw2M+80kuEcXS9HXgxGs9Cqin4cBV2yaiOQFhlxGflaGBB9LYK6Ua2apgbXK8rR5mtMBqLJWM+/58toOXtJGX0unHgahHVBUmO1E3SvszA9ItzX0OLG39VTeJ/AnkjYoRP/IQ1vGRdorcFKdJbyKTni7D6YePE4hFgu1alnZlyJ4aCkLxw== Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by PR0P264MB2967.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1d6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.26; Thu, 16 Mar 2023 14:00:42 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::3943:154a:eccc:fe3a]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::3943:154a:eccc:fe3a%9]) with mapi id 15.20.6178.031; Thu, 16 Mar 2023 14:00:42 +0000 From: Christophe Leroy To: Herve Codina , Rob Herring , Krzysztof Kozlowski , Liam Girdwood , Mark Brown , Derek Kiernan , Dragan Cvetic , Arnd Bergmann , Greg Kroah-Hartman , Jaroslav Kysela , Takashi Iwai CC: "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "alsa-devel@alsa-project.org" , Thomas Petazzoni Subject: Re: [PATCH v2 2/7] drivers: misc: Add support for the Lantiq PEF2256 framer Thread-Topic: [PATCH v2 2/7] drivers: misc: Add support for the Lantiq PEF2256 framer Thread-Index: AQHZWALAYGrTTFOaIEuAmLmGTf1flq79b12A Date: Thu, 16 Mar 2023 14:00:42 +0000 Message-ID: <43b7e386-5b85-3d51-5431-4a46b2779729@csgroup.eu> References: <20230316122741.577663-1-herve.codina@bootlin.com> <20230316122741.577663-3-herve.codina@bootlin.com> In-Reply-To: <20230316122741.577663-3-herve.codina@bootlin.com> Accept-Language: fr-FR, en-US Content-Language: fr-FR X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MRZP264MB2988:EE_|PR0P264MB2967:EE_ x-ms-office365-filtering-correlation-id: 73e2af85-1e85-404a-efad-08db2626d4a0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 81qvMJOxvxMMgp3Vd2ECSnd+6CQJBsXT7u0F+dR4KHWQbOUeSuqiCSpzMhWFfv158S1+/f9WbuMnoTObjDCOdEEyKxuMV6uRyUybgJ7P5OUPM4GWLMrvd32lzLENbCktXZXJW4GlF0s2hZtJsnoIXAo/IlAV1HQ93wgymDLxp0l7TpOB38DKQlAyEcj7fJri9G5vOMYcE5N12jQFy8PCTpovjiqwyVkcCfWGENHzYTLOudg2/bpEa1DTQvFHpYy84FNHrvqrQYpSpqIZAu1VyIvgUG4DPKN0AvIcegT2UxuLuZwoE6l30MdOZQoVXAiU8Dm7IUDeN/xVYACB+/L6dQ/O8K9zxtOV4CzKg3kEIvvszV4ph0KiZaavQiP+3CqIW7BGX9GUk8nJLL6DFcYjZ6Yg6LJhnm1Pxm+WKGiDDalC5BOBh5zoHTHIk+LQ3Kt3S2clqsh3dOMRu8RLefQydmNq4DG1rzZVKTXfKggGMWRg/Kbakm2rRdPPmEvBWwXpzuVeaaqErr2TmN/Hd22OQEvhFAlY+QASw0KfYa2d1ZQ4C5So/oSB0z9jKLnliHfL1LCLSMhIyNzdUx+BVObTCduiY1SxPtYTOtcjEVUOxzxS6VIYM0Zk9skBWqLqrir8hrLKTG+5wCaEPz530CnSEPqL1G3OJRWMcowNHbrxiEBN5YY3NL7AC6sIEMHyCXJS/VnR3S5zeYjDYqTBgGY0MxQEC6OyBKk3ZKc4odd6xjBLnFLE9JhUuahCTnj6DOXn93ZJlogX9pOa8nUCTW0aRuqLdVpbHE/avB0DdyrEEDY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230025)(4636009)(136003)(376002)(346002)(366004)(396003)(39850400004)(451199018)(31686004)(6486002)(2906002)(478600001)(8936002)(122000001)(4326008)(6506007)(54906003)(26005)(30864003)(36756003)(44832011)(7416002)(110136005)(186003)(6512007)(5660300002)(316002)(71200400001)(86362001)(91956017)(66556008)(41300700001)(31696002)(8676002)(76116006)(83380400001)(64756008)(66446008)(921005)(38100700002)(66574015)(66946007)(66476007)(38070700005)(2616005)(45980500001)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NklhbG9UR0hycC8xMTdJZzVXOFRhbWczREhreS9JWitnVCtqTU5tb1J2c0Vt?= =?utf-8?B?aEFTYTh2QnBLT1NFWjlISTRkTGFWQy8xZkR1VVBwc2dwNzNFVC9qd3FWODRQ?= =?utf-8?B?NkIwRWxxMWs4bnBOMnFWWlZqTGY1MDZBZm9tZ3MzbVp1bitTT0FBK280R2k2?= =?utf-8?B?MWtmcWFjN09nVHJsenhpb1RGenNBMERoTWo1TEQ3ZjZDc0ZMVFhVWHlROWVy?= =?utf-8?B?Z2tRZ3l3NzNZNjhCZEdndytIVXd1SDBuRmNQY081a2lsRDZSM1daQllOaUZV?= =?utf-8?B?b3ZkWHhibnMzTy9lN0JUcEErZkJVTTk0QTRVTDJ0MmZWeGFOcGtnWE8wam55?= =?utf-8?B?aEE4ZndzdGhUbDdlV3NnbGpweXZ3N0ppb0tNc1F5eE8wc3hkRjQ0d0lyZ2pS?= =?utf-8?B?YU9zZEl0Y2ppRXVVLzFUYno1Z0hiaDRxMU9zQ3hGL0ZDNEpvTEhjUFhwdnJ0?= =?utf-8?B?MjFCTXpBNnFHc2FwT1JaV05KTFV5MzlqYU1TSVpIM0hrWGVCMW5waE0xNUN2?= =?utf-8?B?UFNSbVVOWHpZeVRNWmZuQWxSb1c0Qk1KM1cwL1dSM0ZPbVpVQ3NOSStQdjVD?= =?utf-8?B?WUlPNGNzcUpRU2NGV2tYZFBhenZGRjJxSFpWWmEyaUpOL0RDUm44S1NjQUFl?= =?utf-8?B?TXF3Q0pRUXhISC95WWQrYnlnZUxmYndOWHpwa2JXZDUwYm5KaGhVUDBObmRi?= =?utf-8?B?bHdrMnNzcTJGOFd5MWZlZ1hEblF3UjBxMU9rWjlPcUJ4TzkzanJPM29NdVIv?= =?utf-8?B?ZmxqVUt4NXpmdUhaSnl0RlpJVGNtQkRaTjQ2c0h1NTFFSll4bk9ydXZzdEQ5?= =?utf-8?B?dFFyK1lCbXk0VDFCNnQvVWw2Nk1MY2xCdTNET1JhcHhERkU5alAxNkp2TjR3?= =?utf-8?B?M3BBNTlUZmdNYjFLOWFvMTZLR1JhZGlpL2ExQlZVVEQ2ZngyOUgvMmlsRERq?= =?utf-8?B?L2ZoeEVjalVzWWk5czFCNnVvT1VoQnlIR285NllPMkhldTEyZkhwNUhseUZJ?= =?utf-8?B?dFJEdG5xQ0xYQ3JoK0hUbWhyWXFOelIvOHl0NE0yR09YU0pRQXBMSUg5WU1z?= =?utf-8?B?NDB1SWlJY2tLdEIyQURDdUl6ZTlYeWRLeUx5VkJudnpsZzh1SnUySWFtOURa?= =?utf-8?B?TjFhSEhmMER0M1daelJoWk9sSzRGQWJzVUl2c3pUVkQ5aDlGL1BkMjk0UDQ4?= =?utf-8?B?NWlpVm5OblFVQklwVEplQm5hOFI3TFNTK3RIYmNoZDJOTTFlbnVMY0VoZUlu?= =?utf-8?B?TTczSWY5a1h3NGQ1MHZ5YUt6TFowSkVIWUJCQXViZW1hL0ozQ0pKVFl6cHh5?= =?utf-8?B?MVN5WFBENDJXd3BUcTlHcWVmTldhSnVqbjVVdm4zekJMblhHVTRkVVFITTBP?= =?utf-8?B?RG12QXpObkFRV0ttSXg3MkJGaTJReUdneXd6akpyaEFueUtZRU10ZUlYc2VT?= =?utf-8?B?OXRrT2JOUkk4UVdxZStJZWJTWnZ2Z29RcnE0bmlNYVAvSW5oRERWVE9Qejhq?= =?utf-8?B?Ly94MTNQS3h5L1dLT3V4OXNPMllDSkg1eGVlK1dZK1FURUlNbFNhRzVqdk8x?= =?utf-8?B?QzVlQVNzTlVOWjFOUkIwbXhQcTRBNUt0YkpHZGlpWWpJaytvTWpkQklIWkd4?= =?utf-8?B?dXFhLzh4VnNZRm92eDVOLzhrQ0Z6TS9rcU1BekpZWElvVHNGQXVMRisvNll6?= =?utf-8?B?dk84Z3VXQzZJYjFlY2M2VkVLTTNjVG5HemR4dlFRNVpqZnIyNHF5Ym01dWhM?= =?utf-8?B?V1g2SkRMeUxQL0k5OWlKQkxhaU5oVi9ydXNubUNyMXpUQ0hNWHNHVndwYWV1?= =?utf-8?B?cktPTldKbmJkc0RHVU12QU5aQVNSdzZ1bUZ3eTFBRFBPK2tscU1kKzg3OUlN?= =?utf-8?B?RGJHdHdWd0sxVWVRNy8zeXZLb2pwQUJycEhiSGFzT2hPeTJnN2lVRkEvcVUv?= =?utf-8?B?OXJLYTFHc0dIaU14cm9aWmxBWGZ0VzE2b0YzYXBMYVBORS9wZXlSVnFZRnJV?= =?utf-8?B?RU1kYUVrWEM4YVluenFKQzJUeXZ3c3NwV2IrYVM2SGw4SmZTQk9QdkNiTksx?= =?utf-8?B?SlJ2Ymg1K0l5TlZTeVN6WExUZUYvL2o1MFZEaWVldndVMGFvUlc5YVpVaTVW?= =?utf-8?B?NkdtdGRKblMrcFpOc20xOWxNTFpyQlFkM3F3aUFKWTJkTDhnY0NNbXdFRERU?= =?utf-8?B?bmc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <8159CC943BC91540B1CD1040385606C1@FRAP264.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 73e2af85-1e85-404a-efad-08db2626d4a0 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Mar 2023 14:00:42.0674 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kJNd/87iR81AA9rbOhpt4xRBDoGt9w/oD5dJLvcQuKmzA+0FRDHBS6nJZUTKzl1xAa/vHlfwaqnEpUm/2P/Et1S8NXnoqOrtAI2HV0wUm3I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR0P264MB2967 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCkxlIDE2LzAzLzIwMjMgw6AgMTM6MjcsIEhlcnZlIENvZGluYSBhIMOpY3JpdMKgOg0KPiBU aGUgTGFudGlxIFBFRjIyNTYgaXMgYSBmcmFtZXIgYW5kIGxpbmUgaW50ZXJmYWNlIGNvbXBvbmVu dCBkZXNpZ25lZCB0bw0KPiBmdWxmaWxsIGFsbCByZXF1aXJlZCBpbnRlcmZhY2luZyBiZXR3ZWVu IGFuIGFuYWxvZyBFMS9UMS9KMSBsaW5lIGFuZCB0aGUNCj4gZGlnaXRhbCBQQ00gc3lzdGVtIGhp Z2h3YXkvSC4xMDAgYnVzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSGVydmUgQ29kaW5hIDxoZXJ2 ZS5jb2RpbmFAYm9vdGxpbi5jb20+DQo+IC0tLQ0KPiAgIGRyaXZlcnMvbWlzYy9LY29uZmlnICAg IHwgICAxNyArDQo+ICAgZHJpdmVycy9taXNjL01ha2VmaWxlICAgfCAgICAxICsNCj4gICBkcml2 ZXJzL21pc2MvcGVmMjI1Ni5jICB8IDE0NDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+ICAgaW5jbHVkZS9saW51eC9wZWYyMjU2LmggfCAgIDM2ICsNCj4gICA0IGZp bGVzIGNoYW5nZWQsIDE0OTUgaW5zZXJ0aW9ucygrKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL21pc2MvcGVmMjI1Ni5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGlu dXgvcGVmMjI1Ni5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL0tjb25maWcgYi9k cml2ZXJzL21pc2MvS2NvbmZpZw0KPiBpbmRleCA0MzNhYTQxOTc3ODUuLmYwMzczOTE2M2M1MyAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9taXNjL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9taXNj L0tjb25maWcNCj4gQEAgLTM3Niw2ICszNzYsMjMgQEAgY29uZmlnIEhNQzYzNTINCj4gICAJICBU aGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgSG9uZXl3ZWxsIEhNQzYzNTIgY29t cGFzcywNCj4gICAJICBwcm92aWRpbmcgY29uZmlndXJhdGlvbiBhbmQgaGVhZGluZyBkYXRhIHZp YSBzeXNmcy4NCj4gICANCj4gK2NvbmZpZyBQRUYyMjU2DQo+ICsJdHJpc3RhdGUgIkxhbnRpcSBQ RUYyMjU2IChGQUxDNTYpIGZyYW1lciINCj4gKwlkZXBlbmRzIG9uIEhBU19JT01FTQ0KPiArCXNl bGVjdCBQSU5DVFJMDQo+ICsJc2VsZWN0IFBJTk1VWA0KPiArCXNlbGVjdCBHRU5FUklDX1BJTkNP TkYNCj4gKwloZWxwDQo+ICsJICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBM YW50aXEgUEVGMjI1NiBmcmFtZXIsIGFsc28ga25vd24NCj4gKwkgIGFzIEZBTEM1Ni4gVGhpcyBm cmFtZXIgYW5kIGl0cyBsaW5lIGludGVyZmFjZSBjb21wb25lbnQgaXMgZGVzaWduZWQNCj4gKwkg IHRvIGZ1bGZpbGwgYWxsIHJlcXVpcmVkIGludGVyZmFjaW5nIGJldHdlZW4gYW5hbG9nIEUxL1Qx L0oxIGxpbmVzIGFuZA0KPiArCSAgdGhlIGRpZ2l0YWwgUENNIHN5c3RlbSBoaWdod2F5Lg0KPiAr DQo+ICsJICBJZiB1bnN1cmUsIHNheSBOLg0KPiArDQo+ICsJICBUbyBjb21waWxlIHRoaXMgZHJp dmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUNCj4gKwkgIG1vZHVsZSB3aWxsIGJl IGNhbGxlZCBwZWYyMjU2Lg0KPiArDQo+ICAgY29uZmlnIERTMTY4Mg0KPiAgIAl0cmlzdGF0ZSAi RGFsbGFzIERTMTY4MiBUb3RhbCBFbGFwc2VkIFRpbWUgUmVjb3JkZXIgd2l0aCBBbGFybSINCj4g ICAJZGVwZW5kcyBvbiBJMkMNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9NYWtlZmlsZSBi L2RyaXZlcnMvbWlzYy9NYWtlZmlsZQ0KPiBpbmRleCA1NmRlNDM5NDNjZDUuLmEyNmYwNDRhYjlk ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9taXNjL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMv bWlzYy9NYWtlZmlsZQ0KPiBAQCAtMzUsNiArMzUsNyBAQCBvYmotJChDT05GSUdfU0VOU09SU19U U0wyNTUwKQkrPSB0c2wyNTUwLm8NCj4gICBvYmotJChDT05GSUdfRFMxNjgyKQkJKz0gZHMxNjgy Lm8NCj4gICBvYmotJChDT05GSUdfQzJQT1JUKQkJKz0gYzJwb3J0Lw0KPiAgIG9iai0kKENPTkZJ R19ITUM2MzUyKQkJKz0gaG1jNjM1Mi5vDQo+ICtvYmotJChDT05GSUdfUEVGMjI1NikJCSs9IHBl ZjIyNTYubw0KPiAgIG9iai15CQkJCSs9IGVlcHJvbS8NCj4gICBvYmoteQkJCQkrPSBjYjcxMC8N Cj4gICBvYmotJChDT05GSUdfVk1XQVJFX0JBTExPT04pCSs9IHZtd19iYWxsb29uLm8NCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9wZWYyMjU2LmMgYi9kcml2ZXJzL21pc2MvcGVmMjI1Ni5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjIxNTg2MDg0 NDA4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9taXNjL3BlZjIyNTYuYw0KPiBA QCAtMCwwICsxLDE0NDEgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w DQo+ICsvKg0KPiArICogUEVGMjI1NiBhbHNvIGtub3duIGFzIEZBTEM1NiBkcml2ZXINCj4gKyAq DQo+ICsgKiBDb3B5cmlnaHQgMjAyMyBDUyBHUk9VUCBGcmFuY2UNCj4gKyAqDQo+ICsgKiBBdXRo b3I6IEhlcnZlIENvZGluYSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPg0KPiArICovDQo+ICsN Cj4gKyNpbmNsdWRlIDxsaW51eC9wZWYyMjU2Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2ludGVycnVwdC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ICsjaW5jbHVkZSA8bGlu dXgvaW9wb2xsLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvbm90aWZpZXIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiArI2luY2x1ZGUg PGxpbnV4L29mX3BsYXRmb3JtLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9waW5jdHJs Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGluY3RybC9waW5jb25mLWdlbmVyaWMuaD4NCj4gKyNp bmNsdWRlIDxsaW51eC9waW5jdHJsL3Bpbm11eC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gKw0KPiArI2RlZmlu ZSBQRUYyMjU2X0NNRFIJCTB4MDIgLyogQ29tbWFuZCBSZWdpc3RlciAqLw0KPiArI2RlZmluZSAg IFBFRjIyNTZfQ01EUl9SUkVTCSAgQklUKDYpDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9DTURSX1hS RVMJICBCSVQoNCkNCj4gKyNkZWZpbmUgICBQRUYyMjU2X0NNRFJfU1JFUwkgIEJJVCgwKQ0KPiAr I2RlZmluZSBQRUYyMjU2X0lNUjAJICAgICAgICAweDE0IC8qIEludGVycnVwdCBNYXNrIFJlZ2lz dGVyIDAgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9JTVIxCSAgICAgICAgMHgxNSAvKiBJbnRlcnJ1 cHQgTWFzayBSZWdpc3RlciAxICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfSU1SMgkgICAgICAgIDB4 MTYgLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgMiAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0lN UjMJICAgICAgICAweDE3IC8qIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyIDMgKi8NCj4gKyNkZWZp bmUgUEVGMjI1Nl9JTVI0CSAgICAgICAgMHgxOCAvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciA0 ICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfSU1SNQkgICAgICAgIDB4MTkgLyogSW50ZXJydXB0IE1h c2sgUmVnaXN0ZXIgNSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0ZNUjAJICAgICAgICAweDFDIC8q IEZyYW1lciBNb2RlIFJlZ2lzdGVyIDAgKi8NCj4gKyNkZWZpbmUgICBQRUYyMjU2X0ZNUjBfWENf TUFTSwkgICgweDMgPDwgNikNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMF9YQ19OUloJICAg ICgweDAgPDwgNikNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMF9YQ19DTUkJICAgICgweDEg PDwgNikNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMF9YQ19BTUkJICAgICgweDIgPDwgNikN Cj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMF9YQ19IREIzICAgICgweDMgPDwgNikNCj4gKyNk ZWZpbmUgICBQRUYyMjU2X0ZNUjBfUkNfTUFTSwkgICgweDMgPDwgNCkNCj4gKyNkZWZpbmUgICAg IFBFRjIyNTZfRk1SMF9SQ19OUloJICAgICgweDAgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIy NTZfRk1SMF9SQ19DTUkJICAgICgweDEgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1S MF9SQ19BTUkJICAgICgweDIgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMF9SQ19I REIzICAgICgweDMgPDwgNCkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIxCSAgICAgICAgMHgxRCAv KiBGcmFtZXIgTW9kZSBSZWdpc3RlciAxICovDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9GTVIxX1hG UwkgIEJJVCgzKQ0KPiArI2RlZmluZSAgIFBFRjIyNTZfRk1SMV9FQ00JICBCSVQoMikNCj4gKy8q IFNTRCBpcyBkZWZpbmVkIG9uIDIgYml0cy4gVGhlIG90aGVyIGJpdCBpcyBvbiBTSUMxIHJlZ2lz dGVyICovDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9GTVIxX1NTRF9NQVNLICAgQklUKDEpDQo+ICsj ZGVmaW5lICAgICBQRUYyMjU2X0ZNUjFfU1NEXzIwNDggICAwDQo+ICsjZGVmaW5lICAgICBQRUYy MjU2X0ZNUjFfU1NEXzQwOTYgICBCSVQoMSkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMV9T U0RfODE5MiAgIDANCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMV9TU0RfMTYzODQgIEJJVCgx KQ0KPiArI2RlZmluZSBQRUYyMjU2X0ZNUjIJICAgICAgICAweDFFIC8qIEZyYW1lciBNb2RlIFJl Z2lzdGVyIDIgKi8NCj4gKyNkZWZpbmUgICBQRUYyMjU2X0ZNUjJfUkZTX01BU0sJICAoMHgzIDw8 IDYpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2X0ZNUjJfUkZTX0RPVUJMRUZSQU1FICAgICAgKDB4 MCA8PCA2KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl9GTVIyX1JGU19DUkM0X01VTFRJRlJBTUUg ICgweDIgPDwgNikNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfRk1SMl9SRlNfQVVUT19NVUxUSUZS QU1FICAoMHgzIDw8IDYpDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9GTVIyX0FYUkEJICBCSVQoMSkN Cj4gKyNkZWZpbmUgUEVGMjI1Nl9MT09QCSAgICAgICAgMHgxRiAvKiBDaGFubmVsIExvb3AtQmFj ayAqLw0KPiArI2RlZmluZSBQRUYyMjU2X1hTVwkgICAgICAgIDB4MjAgLyogVHJhbnNtaXQgU2Vy dmljZSBXb3JkICovDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9YU1dfWFNJUwkgIEJJVCg3KQ0KPiAr I2RlZmluZSAgIFBFRjIyNTZfWFNXX1hUTQkgIEJJVCg2KQ0KPiArI2RlZmluZSAgIFBFRjIyNTZf WFNXX1hZX01BU0sJICAoMHgxZiA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl9YU1dfWFko X3YpCSAgICAoKF92KSAmIDB4MWYpDQo+ICsjZGVmaW5lIFBFRjIyNTZfWFNQCSAgICAgICAgMHgy MSAvKiBUcmFuc21pdCBTcGFyZSBCaXRzICovDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9YU1BfWFNJ RgkgIEJJVCgyKQ0KPiArI2RlZmluZSBQRUYyMjU2X1hDMAkgICAgICAgIDB4MjIgLyogVHJhbnNt aXQgQ29udHJvbCAwICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfWEMxCSAgICAgICAgMHgyMyAvKiBU cmFuc21pdCBDb250cm9sIDEgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9SQzAJICAgICAgICAweDI0 IC8qIFJlY2VpdmUgQ29udHJvbCAwICovDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9SQzBfU1dECSAg QklUKDcpDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9SQzBfQVNZNAkgIEJJVCg2KQ0KPiArI2RlZmlu ZSBQRUYyMjU2X1JDMQkgICAgICAgIDB4MjUgLyogUmVjZWl2ZSBDb250cm9sIDEgKi8NCj4gKyNk ZWZpbmUgUEVGMjI1Nl9YUE0wCSAgICAgICAgMHgyNiAvKiBUcmFuc21pdCBQdWxzZSBNYXNrIDAg Ki8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9YUE0xCSAgICAgICAgMHgyNyAvKiBUcmFuc21pdCBQdWxz ZSBNYXNrIDEgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9YUE0yCSAgICAgICAgMHgyOCAvKiBUcmFu c21pdCBQdWxzZSBNYXNrIDIgKi8NCj4gKyNkZWZpbmUgICBQRUYyMjU2X1hQTTJfWExUCSAgQklU KDYpDQo+ICsjZGVmaW5lIFBFRjIyNTZfVFNXTQkgICAgICAgIDB4MjkgLyogVHJhbnNwYXJlbnQg U2VydmljZSBXb3JkIE1hc2sgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9MSU0wCSAgICAgICAgMHgz NiAvKiBMaW5lIEludGVyZmFjZSBNb2RlIDAgKi8NCj4gKyNkZWZpbmUgICBQRUYyMjU2XzJYX0xJ TTBfQklUMwkgIEJJVCgzKSAvKiB2Mi54LCBkZXNjcmliZWQgYXMgYSBmb3JjZWQgJzEnIGJpdCAq Lw0KPiArI2RlZmluZSAgIFBFRjIyNTZfTElNMF9NQVMJICBCSVQoMCkNCj4gKyNkZWZpbmUgUEVG MjI1Nl9MSU0xCSAgICAgICAgMHgzNyAvKiBMaW5lIEludGVyZmFjZSBNb2RlIDEgKi8NCj4gKyNk ZWZpbmUgICBQRUYyMjU2XzEyX0xJTTFfUklMX01BU0sgICAoMHg3IDw8IDQpDQo+ICsjZGVmaW5l ICAgICBQRUYyMjU2XzEyX0xJTTFfUklMXzkxMCAgICAoMHgwIDw8IDQpDQo+ICsjZGVmaW5lICAg ICBQRUYyMjU2XzEyX0xJTTFfUklMXzc0MCAgICAoMHgxIDw8IDQpDQo+ICsjZGVmaW5lICAgICBQ RUYyMjU2XzEyX0xJTTFfUklMXzU5MCAgICAoMHgyIDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYy MjU2XzEyX0xJTTFfUklMXzQyMCAgICAoMHgzIDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2 XzEyX0xJTTFfUklMXzMyMCAgICAoMHg0IDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzEy X0xJTTFfUklMXzIxMCAgICAoMHg1IDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzEyX0xJ TTFfUklMXzE2MCAgICAoMHg2IDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzEyX0xJTTFf UklMXzEwMCAgICAoMHg3IDw8IDQpDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF9N QVNLICAgKDB4NyA8PCA0KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF8yMjUw ICAgKDB4MCA8PCA0KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF8xMTAwICAg KDB4MSA8PCA0KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF82MDAgICAgKDB4 MiA8PCA0KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF8zNTAgICAgKDB4MyA8 PCA0KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF8yMTAgICAgKDB4NCA8PCA0 KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF8xNDAgICAgKDB4NSA8PCA0KQ0K PiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF8xMDAgICAgKDB4NiA8PCA0KQ0KPiAr I2RlZmluZSAgICAgUEVGMjI1Nl8yWF9MSU0xX1JJTF81MCAgICAgKDB4NyA8PCA0KQ0KPiArI2Rl ZmluZSBQRUYyMjU2X1BDRAkgICAgICAgIDB4MzggLyogUHVsc2UgQ291bnQgRGV0ZWN0aW9uICov DQo+ICsjZGVmaW5lIFBFRjIyNTZfUENSCSAgICAgICAgMHgzOSAvKiBQdWxzZSBDb3VudCBSZWNv dmVyeSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0xJTTIJICAgICAgICAweDNBIC8qIExpbmUgSW50 ZXJmYWNlIE1vZGUgMiAqLw0KPiArI2RlZmluZSAgIFBFRjIyNTZfTElNMl9TTFRfTUFTSwkgICgw eDMgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfTElNMl9TTFRfVEhSNTUgICgweDAgPDwg NCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfTElNMl9TTFRfVEhSNjcgICgweDEgPDwgNCkNCj4g KyNkZWZpbmUgICAgIFBFRjIyNTZfTElNMl9TTFRfVEhSNTAgICgweDIgPDwgNCkNCj4gKyNkZWZp bmUgICAgIFBFRjIyNTZfTElNMl9TTFRfVEhSNDUgICgweDMgPDwgNCkNCj4gKyNkZWZpbmUgICBQ RUYyMjU2X0xJTTJfRUxUCSAgQklUKDIpDQo+ICsjZGVmaW5lIFBFRjIyNTZfU0lDMQkgICAgICAg IDB4M0UgLyogU3lzdGVtIEludGVyZmFjZSBDb250cm9sIDEgKi8NCj4gKyNkZWZpbmUgICBQRUYy MjU2X1NJQzFfU1NDX01BU0sgICAoQklUKDcpIHwgIEJJVCgzKSkNCj4gKyNkZWZpbmUgICAgIFBF RjIyNTZfU0lDMV9TU0NfMjA0OCAgICgwKQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl9TSUMxX1NT Q180MDk2ICAgQklUKDMpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2X1NJQzFfU1NDXzgxOTIgICBC SVQoNykNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfU0lDMV9TU0NfMTYzODQgIChCSVQoNykgfCAg QklUKDMpKQ0KPiArLyogU1NEIGlzIGRlZmluZWQgb24gMiBiaXRzLiBUaGUgb3RoZXIgYml0IGlz IG9uIEZNUjEgcmVnaXN0ZXIgKi8NCj4gKyNkZWZpbmUgICBQRUYyMjU2X1NJQzFfU1NEX01BU0sg ICBCSVQoNikNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfU0lDMV9TU0RfMjA0OCAgIDANCj4gKyNk ZWZpbmUgICAgIFBFRjIyNTZfU0lDMV9TU0RfNDA5NiAgIDANCj4gKyNkZWZpbmUgICAgIFBFRjIy NTZfU0lDMV9TU0RfODE5MiAgIEJJVCg2KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl9TSUMxX1NT RF8xNjM4NCAgQklUKDYpDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9TSUMxX1JCU19NQVNLCSAgKDB4 MyA8PCA0KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl9TSUMxX1JCU18yRlJBTUVTICgweDAgPDwg NCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfU0lDMV9SQlNfMUZSQU1FICAoMHgxIDw8IDQpDQo+ ICsjZGVmaW5lICAgICBQRUYyMjU2X1NJQzFfUkJTXzk2QklUUyAgKDB4MiA8PCA0KQ0KPiArI2Rl ZmluZSAgICAgUEVGMjI1Nl9TSUMxX1JCU19CWVBBU1MgICgweDMgPDwgNCkNCj4gKyNkZWZpbmUg ICBQRUYyMjU2X1NJQzFfWEJTX01BU0sJICAoMHgzIDw8IDApDQo+ICsjZGVmaW5lICAgICBQRUYy MjU2X1NJQzFfWEJTX0JZUEFTUyAgKDB4MCA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl9T SUMxX1hCU18xRlJBTUUgICgweDEgPDwgMCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfU0lDMV9Y QlNfMkZSQU1FUyAoMHgyIDw8IDApDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2X1NJQzFfWEJTXzk2 QklUUyAgKDB4MyA8PCAwKQ0KPiArI2RlZmluZSBQRUYyMjU2X1NJQzIJICAgICAgICAweDNGIC8q IFN5c3RlbSBJbnRlcmZhY2UgQ29udHJvbCAyICovDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9TSUMy X1NJQ1NfTUFTSyAgICAgICAoMHg3IDw8IDEpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2X1NJQzJf U0lDUyhfdikgICAgICAgICgoX3YpIDw8IDEpDQo+ICsjZGVmaW5lIFBFRjIyNTZfU0lDMwkgICAg ICAgIDB4NDAgLyogU3lzdGVtIEludGVyZmFjZSBDb250cm9sIDMgKi8NCj4gKyNkZWZpbmUgICBQ RUYyMjU2X1NJQzNfUlRSSQkgIEJJVCg1KQ0KPiArI2RlZmluZSAgIFBFRjIyNTZfU0lDM19SRVNY CSAgQklUKDMpDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9TSUMzX1JFU1IJICBCSVQoMikNCj4gKyNk ZWZpbmUgUEVGMjI1Nl9DTVIxCSAgICAgICAgMHg0NCAvKiBDbG9jayBNb2RlIFJlZ2lzdGVyIDEg Ki8NCj4gKyNkZWZpbmUgICBQRUYyMjU2X0NNUjFfUlNfTUFTSwkgICgweDMgPDwgNCkNCj4gKyNk ZWZpbmUgICAgIFBFRjIyNTZfQ01SMV9SU19EUExMCSAgICgweDAgPDwgNCkNCj4gKyNkZWZpbmUg ICAgIFBFRjIyNTZfQ01SMV9SU19EUExMX0xPU19ISUdIICAoMHgxIDw8IDQpDQo+ICsjZGVmaW5l ICAgICBQRUYyMjU2X0NNUjFfUlNfRENPUl8yMDQ4CSAgICgweDIgPDwgNCkNCj4gKyNkZWZpbmUg ICAgIFBFRjIyNTZfQ01SMV9SU19EQ09SXzgxOTIJICAgKDB4MyA8PCA0KQ0KPiArI2RlZmluZSAg IFBFRjIyNTZfQ01SMV9EQ1MJICBCSVQoMykNCj4gKyNkZWZpbmUgUEVGMjI1Nl9DTVIyCSAgICAg ICAgMHg0NSAvKiBDbG9jayBNb2RlIFJlZ2lzdGVyIDIgKi8NCj4gKyNkZWZpbmUgICBQRUYyMjU2 X0NNUjJfRENPWEMJICBCSVQoNSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ1IJICAgICAgICAweDQ2 IC8qIEdsb2JhbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovDQo+ICsjZGVmaW5lICAgUEVGMjI1 Nl9HQ1JfU0NJCSAgQklUKDYpDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9HQ1JfRUNNQwkgIEJJVCg0 KQ0KPiArI2RlZmluZSBQRUYyMjU2X1BDMQkgICAgICAgIDB4ODAgLyogUG9ydCBDb25maWd1cmF0 aW9uIDEgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9QQzIJICAgICAgICAweDgxIC8qIFBvcnQgQ29u ZmlndXJhdGlvbiAyICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfUEMzCSAgICAgICAgMHg4MiAvKiBQ b3J0IENvbmZpZ3VyYXRpb24gMyAqLw0KPiArI2RlZmluZSBQRUYyMjU2X1BDNAkgICAgICAgIDB4 ODMgLyogUG9ydCBDb25maWd1cmF0aW9uIDQgKi8NCj4gKyNkZWZpbmUgICBQRUYyMjU2XzEyX1BD X1JQQ19NQVNLICAoMHg3IDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzEyX1BDX1JQQ19T WVBSCSgweDAgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMTJfUENfUlBDX1JGTQkoMHgx IDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzEyX1BDX1JQQ19SRk1CCSgweDIgPDwgNCkN Cj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMTJfUENfUlBDX1JTSUdNCSgweDMgPDwgNCkNCj4gKyNk ZWZpbmUgICAgIFBFRjIyNTZfMTJfUENfUlBDX1JTSUcJKDB4NCA8PCA0KQ0KPiArI2RlZmluZSAg ICAgUEVGMjI1Nl8xMl9QQ19SUENfRExSCSgweDUgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIy NTZfMTJfUENfUlBDX0ZSRUVaRQkoMHg2IDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzEy X1BDX1JQQ19SRlNQCSgweDcgPDwgNCkNCj4gKyNkZWZpbmUgICBQRUYyMjU2XzEyX1BDX1hQQ19N QVNLICAoMHhmIDw8IDApDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzEyX1BDX1hQQ19TWVBYCSgw eDAgPDwgMCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMTJfUENfWFBDX1hGTVMJKDB4MSA8PCAw KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8xMl9QQ19YUENfWFNJRwkoMHgyIDw8IDApDQo+ICsj ZGVmaW5lICAgICBQRUYyMjU2XzEyX1BDX1hQQ19UQ0xLCSgweDMgPDwgMCkNCj4gKyNkZWZpbmUg ICAgIFBFRjIyNTZfMTJfUENfWFBDX1hNRkIJKDB4NCA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVG MjI1Nl8xMl9QQ19YUENfWFNJR00JKDB4NSA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8x Ml9QQ19YUENfRExYCSgweDYgPDwgMCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMTJfUENfWFBD X1hDTEsJKDB4NyA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8xMl9QQ19YUENfWExUCSgw eDggPDwgMCkNCj4gKyNkZWZpbmUgICBQRUYyMjU2XzJYX1BDX1JQQ19NQVNLICAoMHhmIDw8IDQp DQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzJYX1BDX1JQQ19TWVBSCSgweDAgPDwgNCkNCj4gKyNk ZWZpbmUgICAgIFBFRjIyNTZfMlhfUENfUlBDX1JGTQkoMHgxIDw8IDQpDQo+ICsjZGVmaW5lICAg ICBQRUYyMjU2XzJYX1BDX1JQQ19SRk1CCSgweDIgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIy NTZfMlhfUENfUlBDX1JTSUdNCSgweDMgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMlhf UENfUlBDX1JTSUcJKDB4NCA8PCA0KQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9QQ19SUENf RExSCSgweDUgPDwgNCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMlhfUENfUlBDX0ZSRUVaRQko MHg2IDw8IDQpDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzJYX1BDX1JQQ19SRlNQCSgweDcgPDwg NCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMlhfUENfUlBDX0dQSQkoMHg5IDw8IDQpDQo+ICsj ZGVmaW5lICAgICBQRUYyMjU2XzJYX1BDX1JQQ19HUE9ICSgweGEgPDwgNCkNCj4gKyNkZWZpbmUg ICAgIFBFRjIyNTZfMlhfUENfUlBDX0dQT0wJKDB4YiA8PCA0KQ0KPiArI2RlZmluZSAgICAgUEVG MjI1Nl8yWF9QQ19SUENfTE9TCSgweGMgPDwgNCkNCj4gKyNkZWZpbmUgICBQRUYyMjU2XzJYX1BD X1hQQ19NQVNLICAoMHhmIDw8IDApDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzJYX1BDX1hQQ19T WVBYCSgweDAgPDwgMCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMlhfUENfWFBDX1hGTVMJKDB4 MSA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9QQ19YUENfWFNJRwkoMHgyIDw8IDAp DQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzJYX1BDX1hQQ19UQ0xLCSgweDMgPDwgMCkNCj4gKyNk ZWZpbmUgICAgIFBFRjIyNTZfMlhfUENfWFBDX1hNRkIJKDB4NCA8PCAwKQ0KPiArI2RlZmluZSAg ICAgUEVGMjI1Nl8yWF9QQ19YUENfWFNJR00JKDB4NSA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVG MjI1Nl8yWF9QQ19YUENfRExYCSgweDYgPDwgMCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMlhf UENfWFBDX1hDTEsJKDB4NyA8PCAwKQ0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9QQ19YUENf WExUCSgweDggPDwgMCkNCj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMlhfUENfWFBDX0dQSQkoMHg5 IDw8IDApDQo+ICsjZGVmaW5lICAgICBQRUYyMjU2XzJYX1BDX1hQQ19HUE9ICSgweGEgPDwgMCkN Cj4gKyNkZWZpbmUgICAgIFBFRjIyNTZfMlhfUENfWFBDX0dQT0wJKDB4YiA8PCAwKQ0KPiArI2Rl ZmluZSBQRUYyMjU2X1BDNQkgICAgICAgIDB4ODQgLyogUG9ydCBDb25maWd1cmF0aW9uIDUgKi8N Cj4gKyNkZWZpbmUgICBQRUYyMjU2X1BDNV9DUlAgICAgICAgICBCSVQoMCkNCj4gKyNkZWZpbmUg UEVGMjI1Nl9HUEMxCSAgICAgICAgMHg4NSAvKiBHbG9iYWwgUG9ydCBDb25maWd1cmF0aW9uIDEg Ki8NCj4gKyNkZWZpbmUgICBQRUYyMjU2X0dQQzFfQ1NGUF9NQVNLCSAgKDB4MyA8PCA1KQ0KPiAr I2RlZmluZSAgIFBFRjIyNTZfR1BDMV9DU0ZQX1NFQ19JTl9ISUdIICAgKDB4MCA8PCA1KQ0KPiAr I2RlZmluZSAgIFBFRjIyNTZfR1BDMV9DU0ZQX1NFQ19PVVRfSElHSCAgKDB4MSA8PCA1KQ0KPiAr I2RlZmluZSAgIFBFRjIyNTZfR1BDMV9DU0ZQX0ZTQ19PVVRfSElHSCAgKDB4MiA8PCA1KQ0KPiAr I2RlZmluZSAgIFBFRjIyNTZfR1BDMV9DU0ZQX0ZTQ19PVVRfTE9XICAgKDB4MyA8PCA1KQ0KPiAr I2RlZmluZSBQRUYyMjU2X1BDNgkgICAgICAgIDB4ODYgLyogUG9ydCBDb25maWd1cmF0aW9uIDYg Ki8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ00oX24pICAgICAgICAgKDB4OTIgKyBfbiAtIDEpIC8q IEdsb2JhbCBDb3VudGVyIE1vZGUgbj0xLi44ICovDQoNClNob3VsZCBiZSAoMHg5MiArIChfbikg LSAxKSB0byBhdm9pZCBhbnkgcmlzay4NCg0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTEJICAgICAg ICAweDkyIC8qIEdsb2JhbCBDb3VudGVyIE1vZGUgMSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0dD TTIJICAgICAgICAweDkzIC8qIEdsb2JhbCBDb3VudGVyIE1vZGUgMiAqLw0KPiArI2RlZmluZSBQ RUYyMjU2X0dDTTMJICAgICAgICAweDk0IC8qIEdsb2JhbCBDb3VudGVyIE1vZGUgMyAqLw0KPiAr I2RlZmluZSBQRUYyMjU2X0dDTTQJICAgICAgICAweDk1IC8qIEdsb2JhbCBDb3VudGVyIE1vZGUg NCAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTUJICAgICAgICAweDk2IC8qIEdsb2JhbCBDb3Vu dGVyIE1vZGUgNSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTYJICAgICAgICAweDk3IC8qIEds b2JhbCBDb3VudGVyIE1vZGUgNiAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTcJICAgICAgICAw eDk4IC8qIEdsb2JhbCBDb3VudGVyIE1vZGUgNyAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTgJ ICAgICAgICAweDk5IC8qIEdsb2JhbCBDb3VudGVyIE1vZGUgOCAqLw0KPiArDQo+ICsjZGVmaW5l IFBFRjIyNTZfVlNUUgkweDRBIC8qIFZlcnNpb24gU3RhdHVzIFJlZ2lzdGVyICovDQo+ICsjZGVm aW5lICAgUEVGMjI1Nl9WU1RSX1ZFUlNJT05fMTIgIDB4MDANCj4gKyNkZWZpbmUgICBQRUYyMjU2 X1ZTVFJfVkVSU0lPTl8yMSAgMHgxMA0KPiArI2RlZmluZSAgIFBFRjIyNTZfVlNUUl9WRVJTSU9O XzJ4ICAweDA1DQo+ICsjZGVmaW5lIFBFRjIyNTZfRlJTMAkweDRDIC8qIEZyYW1lciBSZWNlaXZl IFN0YXR1cyAwICovDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl9GUlMwX0xPUwlCSVQoNykNCj4gKyNk ZWZpbmUgICBQRUYyMjU2X0ZSUzBfQUlTCUJJVCg2KQ0KPiArI2RlZmluZSBQRUYyMjU2X0lTUihf bikgKDB4NjggKyBuKSAvKiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyIChuPTAuLjUpICovDQo+ ICsjZGVmaW5lIFBFRjIyNTZfSVNSMAkweDY4IC8qIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIg MCAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0lTUjEJMHg2OSAvKiBJbnRlcnJ1cHQgU3RhdHVzIFJl Z2lzdGVyIDEgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9JU1IyCTB4NkEgLyogSW50ZXJydXB0IFN0 YXR1cyBSZWdpc3RlciAyICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfSVNSMwkweDZCIC8qIEludGVy cnVwdCBTdGF0dXMgUmVnaXN0ZXIgMyAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0lTUjQJMHg2QyAv KiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyIDQgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9JU1I1 CTB4NkQgLyogSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciA1ICovDQo+ICsjZGVmaW5lIFBFRjIy NTZfR0lTCTB4NkUgLyogR2xvYmFsIEludGVycnVwdCBTdGF0dXMgKi8NCj4gKyNkZWZpbmUgICBQ RUYyMjU2X0dJU19JU1IoX24pCSgxPDwobikpDQoNCl9uIG9yIG4gPw0KDQo+ICsjZGVmaW5lIFBF RjIyNTZfV0lECTB4RUMgLyogV2FmZXIgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgKi8NCj4gKyNk ZWZpbmUgICBQRUYyMjU2XzEyX1dJRF9NQVNLICAgICAgICAweDAzDQo+ICsjZGVmaW5lICAgICBQ RUYyMjU2XzEyX1dJRF9WRVJTSU9OXzEyICAweDAzDQo+ICsjZGVmaW5lICAgUEVGMjI1Nl8yWF9X SURfTUFTSyAgICAgICAgMHhjMA0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9XSURfVkVSU0lP Tl8yMSAgMHgwMA0KPiArI2RlZmluZSAgICAgUEVGMjI1Nl8yWF9XSURfVkVSU0lPTl8yMiAgMHg0 MA0KPiArDQo+ICsvKiBJTVIyL0lTUjIgSW50ZXJydXB0cyAqLw0KPiArI2RlZmluZSBQRUYyMjU2 X0lOVDJfQUlTICBCSVQoMykNCj4gKyNkZWZpbmUgUEVGMjI1Nl9JTlQyX0xPUyAgQklUKDIpDQo+ ICsNCj4gK2VudW0gcGVmMjI1Nl92ZXJzaW9uIHsNCj4gKwlQRUYyMjU2X1ZFUlNJT05fVU5LTk9X TiwNCj4gKwlQRUYyMjU2X1ZFUlNJT05fMV8yLA0KPiArCVBFRjIyNTZfVkVSU0lPTl8yXzEsDQo+ ICsJUEVGMjI1Nl9WRVJTSU9OXzJfMiwNCj4gK307DQo+ICsNCj4gK2VudW0gcGVmMjI1Nl9mcmFt ZV90eXBlIHsNCj4gKwlQRUYyMjU2X0ZSQU1FX0UxX0RPVUJMRUZSQU1FLA0KPiArCVBFRjIyNTZf RlJBTUVfRTFfQ1JDNF9NVUxUSUZSQU1FLA0KPiArCVBFRjIyNTZfRlJBTUVfRTFfQVVUT19NVUxU SUZSQU1FLA0KPiArCVBFRjIyNTZfRlJBTUVfVDFKMV80RlJBTUUsDQo+ICsJUEVGMjI1Nl9GUkFN RV9UMUoxXzEyRlJBTUUsDQo+ICsJUEVGMjI1Nl9GUkFNRV9UMUoxXzI0RlJBTUUsDQo+ICsJUEVG MjI1Nl9GUkFNRV9UMUoxXzcyRlJBTUUsDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgcGVmMjI1Nl9w aW5yZWdfZGVzYyB7DQo+ICsJaW50IG9mZnNldDsNCj4gKwl1OCBtYXNrOw0KPiArfTsNCj4gKw0K PiArc3RydWN0IHBlZjIyNTZfZnVuY3Rpb25fZGVzYyB7DQo+ICsJY29uc3QgY2hhciAqbmFtZTsN Cj4gKwljb25zdCBjaGFyICogY29uc3QqZ3JvdXBzOw0KPiArCXVuc2lnbmVkIGludCBuZ3JvdXBz Ow0KPiArCXU4IGZ1bmNfdmFsOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHBlZjIyNTYgew0KPiAr CXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gKwl2b2lkICpfX2lvbWVtIHJlZ3M7DQo+ICsJZW51bSBw ZWYyMjU2X3ZlcnNpb24gdmVyc2lvbjsNCj4gKwlzcGlubG9ja190IGxvY2s7DQo+ICsJc3RydWN0 IGNsayAqbWNsazsNCj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOw0KPiArCXN0cnVj dCB7DQo+ICsJCXN0cnVjdCBwaW5jdHJsX2Rlc2MgcGN0cmxfZGVzYzsNCj4gKwkJY29uc3Qgc3Ry dWN0IHBlZjIyNTZfZnVuY3Rpb25fZGVzYyAqZnVuY3Rpb25zOw0KPiArCQl1bnNpZ25lZCBpbnQg bmZ1bmN0aW9uczsNCj4gKwl9IHBpbmN0cmw7DQo+ICsJYm9vbCBpc19lMTsNCj4gKwl1MzIgc3lz Y2xrX3JhdGU7DQo+ICsJdTMyIGRhdGFfcmF0ZTsNCj4gKwlib29sIGlzX3R4X2ZhbGxpbmdfZWRn ZTsNCj4gKwlib29sIGlzX3N1Ym9yZGluYXRlOw0KPiArCWVudW0gcGVmMjI1Nl9mcmFtZV90eXBl IGZyYW1lX3R5cGU7DQo+ICsJdTggY2hhbm5lbF9waGFzZTsNCj4gKwlib29sIGlzX2NhcnJpZXJf b247DQo+ICsJc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGV2ZW50X25vdGlmaWVyX2xpc3Q7 DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHU4IHBlZjIyNTZfcmVhZDgoc3RydWN0IHBl ZjIyNTYgKnBlZjIyNTYsIGludCBvZmZzZXQpDQo+ICt7DQo+ICsJcmV0dXJuIGlvcmVhZDgocGVm MjI1Ni0+cmVncyArIG9mZnNldCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBw ZWYyMjU2X3dyaXRlOChzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiwgaW50IG9mZnNldCwgdTggdmFs KQ0KPiArew0KPiArCWlvd3JpdGU4KHZhbCwgcGVmMjI1Ni0+cmVncyArIG9mZnNldCk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBwZWYyMjU2X2NscmJpdHM4KHN0cnVjdCBwZWYy MjU2ICpwZWYyMjU2LCBpbnQgb2Zmc2V0LCB1OCBjbHIpDQo+ICt7DQo+ICsJdTggdjsNCj4gKw0K PiArCXYgPSBwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIG9mZnNldCk7DQo+ICsJdiAmPSB+Y2xyOw0K PiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIG9mZnNldCwgdik7DQo+ICt9DQoNCk5vdCBzdXJl IGl0IGlzIHdvcnRoIHRoZSBudW1iZXIgb2YgbGluZXMuDQoNCldvdWxkIGxpZWtseSBiZSBhcyBn b29kIHdpdGgganVzdDoNCg0KCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIG9mZnNldCwgcGVmMjI1 Nl9yZWFkOChwZWYyMjU2LCBvZmZzZXQpICYgfmNscik7DQoNClNhbWUgZm9yIGFsbC4NCg0KDQpB bHNvLCBpdCBzaG91bGRuJ3QgbmVlZCB0byBiZSBmbGFnZ2VkICdpbmxpbmUnIGFzIGl0IGlzIGRl ZmluZWQgaW4gdGhlIEMgDQpmaWxlIGl0IGlzIHVzZWQuIEdDQyB3aWxsIGRlY2lkZSBieSBpdHNl bGYgaWYgaXQgaXMgd29ydGggaW5saW5pbmcuDQoNCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lk IHBlZjIyNTZfc2V0Yml0czgoc3RydWN0IHBlZjIyNTYgKnBlZjIyNTYsIGludCBvZmZzZXQsIHU4 IHNldCkNCj4gK3sNCj4gKwl1OCB2Ow0KPiArDQo+ICsJdiA9IHBlZjIyNTZfcmVhZDgocGVmMjI1 Niwgb2Zmc2V0KTsNCj4gKwl2IHw9IHNldDsNCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBv ZmZzZXQsIHYpOw0KPiArfQ0KPiArDQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBwZWYyMjU2 X2NscnNldGJpdHM4KHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2LCBpbnQgb2Zmc2V0LCB1OCBjbHIs IHU4IHNldCkNCj4gK3sNCj4gKwl1OCB2Ow0KPiArDQo+ICsJdiA9IHBlZjIyNTZfcmVhZDgocGVm MjI1Niwgb2Zmc2V0KTsNCj4gKwl2ICY9IH5jbHI7DQo+ICsJdiB8PSBzZXQ7DQo+ICsJcGVmMjI1 Nl93cml0ZTgocGVmMjI1Niwgb2Zmc2V0LCB2KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGVudW0g cGVmMjI1Nl92ZXJzaW9uIHBlZjIyNTZfZ2V0X3ZlcnNpb24oc3RydWN0IHBlZjIyNTYgKnBlZjIy NTYpDQo+ICt7DQo+ICsJZW51bSBwZWYyMjU2X3ZlcnNpb24gdmVyc2lvbjsNCj4gKwljb25zdCBj aGFyICp2ZXJzaW9uX3R4dDsNCj4gKwl1OCB2c3RyLCB3aWQ7DQo+ICsNCj4gKwl2c3RyID0gcGVm MjI1Nl9yZWFkOChwZWYyMjU2LCBQRUYyMjU2X1ZTVFIpOw0KPiArCXdpZCA9IHBlZjIyNTZfcmVh ZDgocGVmMjI1NiwgUEVGMjI1Nl9XSUQpOw0KPiArDQo+ICsJc3dpdGNoICh2c3RyKSB7DQo+ICsJ Y2FzZSBQRUYyMjU2X1ZTVFJfVkVSU0lPTl8xMjoNCj4gKwkJaWYgKCh3aWQgJiBQRUYyMjU2XzEy X1dJRF9NQVNLKSA9PSBQRUYyMjU2XzEyX1dJRF9WRVJTSU9OXzEyKSB7DQo+ICsJCQl2ZXJzaW9u X3R4dCA9ICIxLjIiOw0KPiArCQkJdmVyc2lvbiA9IFBFRjIyNTZfVkVSU0lPTl8xXzI7DQo+ICsJ CQlnb3RvIGVuZDsNCj4gKwkJfQ0KPiArCQlicmVhazsNCj4gKwljYXNlIFBFRjIyNTZfVlNUUl9W RVJTSU9OXzJ4Og0KPiArCQlzd2l0Y2ggKHdpZCAmIFBFRjIyNTZfMlhfV0lEX01BU0spIHsNCj4g KwkJY2FzZSBQRUYyMjU2XzJYX1dJRF9WRVJTSU9OXzIxOg0KPiArCQkJdmVyc2lvbl90eHQgPSAi Mi4xICgyLngpIjsNCj4gKwkJCXZlcnNpb24gPSBQRUYyMjU2X1ZFUlNJT05fMl8xOw0KPiArCQkJ Z290byBlbmQ7DQo+ICsJCWNhc2UgUEVGMjI1Nl8yWF9XSURfVkVSU0lPTl8yMjoNCj4gKwkJCXZl cnNpb25fdHh0ID0gIjIuMiAoMi54KSI7DQo+ICsJCQl2ZXJzaW9uID0gUEVGMjI1Nl9WRVJTSU9O XzJfMjsNCj4gKwkJCWdvdG8gZW5kOw0KPiArCQlkZWZhdWx0Og0KPiArCQkJYnJlYWs7DQo+ICsJ CX0NCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBQRUYyMjU2X1ZTVFJfVkVSU0lPTl8yMToNCj4gKwkJ dmVyc2lvbl90eHQgPSAiMi4xIjsNCj4gKwkJdmVyc2lvbiA9IFBFRjIyNTZfVkVSU0lPTl8yXzE7 DQo+ICsJCWdvdG8gZW5kOw0KPiArCWRlZmF1bHQ6DQo+ICsJCWJyZWFrOw0KDQpBIGRlZmF1bHQg ZG9pbmcgbm90aGluZyBpcyBub3QgbmVlZGVkIHVubGVzcyB0aGUgc3dpdGNoIGhhbmRsZXMgYSBl bnVtIA0KYW5kIHlvdSBoYXZlIG5vdCBjb3ZlcmVkIGFsbCBwb3NzaWJsZSB2YWx1ZXMuDQoNCk15 IHByZWZlcmVuY2Ugd291bGQgYmUgdGhhdCB5b3UgdXNlIHRoZSBkZWZhdWx0IHRvIHNldDoNCnZl cnNpb24gPSBQRUYyMjU2X1ZFUlNJT05fVU5LTk9XTjsNCg0KdGhlbiB1c2UgYW4gaWYgKHZlcnNp b24gPT0gUEVGMjI1Nl9WRVJTSU9OX1VOS05PV04pIC8gZWxzZSBiZWxvdyBmb3IgdGhlIA0KZGV2 X2Vyci9kZXZfaW5mby4NCg0KPiArCX0NCj4gKw0KPiArCWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAi VW5rbm93biB2ZXJzaW9uICgweCUwMngsIDB4JTAyeClcbiIsIHZzdHIsIHdpZCk7DQo+ICsJcmV0 dXJuIFBFRjIyNTZfVkVSU0lPTl9VTktOT1dOOw0KPiArDQo+ICtlbmQ6DQo+ICsJZGV2X2luZm8o cGVmMjI1Ni0+ZGV2LCAiVmVyc2lvbiAlcyBkZXRlY3RlZFxuIiwgdmVyc2lvbl90eHQpOw0KPiAr CXJldHVybiB2ZXJzaW9uOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHBlZjIyNTZfMTJfc2V0 dXBfZ2NtKHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2KQ0KPiArew0KPiArCXN0YXRpYyBjb25zdCB1 OCBnY21fMTU0NDAwMFs2XSA9IHsweEYwLCAweDUxLCAweDAwLCAweDgwLCAweDAwLCAweDE1fTsN Cj4gKwlzdGF0aWMgY29uc3QgdTggZ2NtXzIwNDgwMDBbNl0gPSB7MHgwMCwgMHg1OCwgMHhEMiwg MHhDMiwgMHgwMCwgMHgxMH07DQo+ICsJc3RhdGljIGNvbnN0IHU4IGdjbV84MTkyMDAwWzZdID0g ezB4MDAsIDB4NTgsIDB4RDIsIDB4QzIsIDB4MDMsIDB4MTB9Ow0KPiArCXN0YXRpYyBjb25zdCB1 OCBnY21fMTAwMDAwMDBbNl0gPSB7MHg5MCwgMHg1MSwgMHg4MSwgMHg4RiwgMHgwNCwgMHgxMH07 DQo+ICsJc3RhdGljIGNvbnN0IHU4IGdjbV8xMjM1MjAwMFs2XSA9IHsweEYwLCAweDUxLCAweDAw LCAweDgwLCAweDA3LCAweDE1fTsNCj4gKwlzdGF0aWMgY29uc3QgdTggZ2NtXzE2Mzg0MDAwWzZd ID0gezB4MDAsIDB4NTgsIDB4RDIsIDB4QzIsIDB4MDcsIDB4MTB9Ow0KPiArCXVuc2lnbmVkIGxv bmcgbWNsa19yYXRlOw0KPiArCWNvbnN0IHU4ICpnY207DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlt Y2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUocGVmMjI1Ni0+bWNsayk7DQo+ICsJc3dpdGNoIChtY2xr X3JhdGUpIHsNCj4gKwljYXNlIDE1NDQwMDA6DQo+ICsJCWdjbSA9IGdjbV8xNTQ0MDAwOw0KPiAr CQlicmVhazsNCj4gKwljYXNlIDIwNDgwMDA6DQo+ICsJCWdjbSA9IGdjbV8yMDQ4MDAwOw0KPiAr CQlicmVhazsNCj4gKwljYXNlIDgxOTIwMDA6DQo+ICsJCWdjbSA9IGdjbV84MTkyMDAwOw0KPiAr CQlicmVhazsNCj4gKwljYXNlIDEwMDAwMDAwOg0KPiArCQlnY20gPSBnY21fMTAwMDAwMDA7DQo+ ICsJCWJyZWFrOw0KPiArCWNhc2UgMTIzNTIwMDA6DQo+ICsJCWdjbSA9IGdjbV8xMjM1MjAwMDsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxNjM4NDAwMDoNCj4gKwkJZ2NtID0gZ2NtXzE2Mzg0MDAw Ow0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwg IlVuc3VwcG9ydGVkIHYxLjIgTUNMSyByYXRlICVsdVxuIiwgbWNsa19yYXRlKTsNCj4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspDQo+ICsJCXBl ZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfR0NNKGkrMSksIGdjbVtpXSk7DQo+ICsNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2XzJ4X3NldHVwX2dj bShzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NikNCj4gK3sNCj4gKwlzdGF0aWMgY29uc3QgdTggZ2Nt XzE1NDQwMDBbOF0gPSB7MHgwMCwgMHgxNSwgMHgwMCwgMHgwOCwgMHgwMCwgMHgzRiwgMHg5Qywg MHhERn07DQo+ICsJc3RhdGljIGNvbnN0IHU4IGdjbV8yMDQ4MDAwWzhdID0gezB4MDAsIDB4MTgs IDB4RkIsIDB4MEIsIDB4MDAsIDB4MkYsIDB4REIsIDB4REZ9Ow0KPiArCXN0YXRpYyBjb25zdCB1 OCBnY21fODE5MjAwMFs4XSA9IHsweDAwLCAweDE4LCAweEZCLCAweDBCLCAweDAwLCAweDBCLCAw eERCLCAweERGfTsNCj4gKwlzdGF0aWMgY29uc3QgdTggZ2NtXzEwMDAwMDAwWzhdID0gezB4NDAs IDB4MUIsIDB4M0QsIDB4MEEsIDB4MDAsIDB4MDcsIDB4QzksIDB4REN9Ow0KPiArCXN0YXRpYyBj b25zdCB1OCBnY21fMTIzNTIwMDBbOF0gPSB7MHgwMCwgMHgxOSwgMHgwMCwgMHgwOCwgMHgwMSwg MHgwQSwgMHg5OCwgMHhEQX07DQo+ICsJc3RhdGljIGNvbnN0IHU4IGdjbV8xNjM4NDAwMFs4XSA9 IHsweDAwLCAweDE4LCAweEZCLCAweDBCLCAweDAxLCAweDBCLCAweERCLCAweERGfTsNCj4gKwl1 bnNpZ25lZCBsb25nIG1jbGtfcmF0ZTsNCj4gKwljb25zdCB1OCAqZ2NtOw0KPiArCWludCBpOw0K PiArDQo+ICsJbWNsa19yYXRlID0gY2xrX2dldF9yYXRlKHBlZjIyNTYtPm1jbGspOw0KPiArCXN3 aXRjaCAobWNsa19yYXRlKSB7DQo+ICsJY2FzZSAxNTQ0MDAwOg0KPiArCQlnY20gPSBnY21fMTU0 NDAwMDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAyMDQ4MDAwOg0KPiArCQlnY20gPSBnY21fMjA0 ODAwMDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSA4MTkyMDAwOg0KPiArCQlnY20gPSBnY21fODE5 MjAwMDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxMDAwMDAwMDoNCj4gKwkJZ2NtID0gZ2NtXzEw MDAwMDAwOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDEyMzUyMDAwOg0KPiArCQlnY20gPSBnY21f MTIzNTIwMDA7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgMTYzODQwMDA6DQo+ICsJCWdjbSA9IGdj bV8xNjM4NDAwMDsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJZGV2X2VycihwZWYy MjU2LT5kZXYsICJVbnN1cHBvcnRlZCB2Mi54IE1DTEsgcmF0ZSAlbHVcbiIsIG1jbGtfcmF0ZSk7 DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsr KQ0KPiArCQlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0dDTShpKzEpLCBnY21baV0p Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQoNClRoaXMgZnVuY3Rpb24gYW5kIHRoZSBwcmV2 aW91cyBvbmUgbG9vayB2ZXJ5IHNpbWlsYXIsIGNhbiB3ZSBtZXJnZSB0aGVtID8NCg0KPiArDQo+ ICtzdGF0aWMgaW50IHBlZjIyNTZfc2V0dXBfZ2NtKHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2KQ0K PiArew0KPiArCXJldHVybiAocGVmMjI1Ni0+dmVyc2lvbiA9PSBQRUYyMjU2X1ZFUlNJT05fMV8y KSA/DQo+ICsJCXBlZjIyNTZfMTJfc2V0dXBfZ2NtKHBlZjIyNTYpIDogcGVmMjI1Nl8yeF9zZXR1 cF9nY20ocGVmMjI1Nik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1Nl9zZXR1cF9l MShzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NikNCj4gK3sNCj4gKwl1OCBmbXIxLCBmbXIyLCBzaWMx Ow0KPiArCWludCByZXQ7DQo+ICsNCj4gKwkvKiBCYXNpYyBzZXR1cCwgTWFzdGVyIGNsb2NraW5n IG1vZGUgKEdDTTguLjEpICovDQo+ICsJcmV0ID0gcGVmMjI1Nl9zZXR1cF9nY20ocGVmMjI1Nik7 DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIFJDTEsgb3V0cHV0 IDogRFBMTCBjbG9jaywgRENPLVggZW5hYmxlZCwgRENPLVggaW50ZXJuYWwgcmVmIGNsb2NrICov DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9DTVIxLCAweDAwKTsNCj4gKw0K PiArCS8qDQo+ICsJICogU0NMS1Igc2VsZWN0ZWQsIFNDTEtYIHNlbGVjdGVkLA0KPiArCSAqIHJl Y2VpdmUgc3luY2hybyBwdWxzZSBzb3VyY2VkIGJ5IFNZUFIsDQo+ICsJICogdHJhbnNtaXQgc3lu Y2hybyBwdWxzZSBzb3VyY2VkIGJ5IFNZUFgNCj4gKwkgKi8NCj4gKwlwZWYyMjU2X3dyaXRlOChw ZWYyMjU2LCBQRUYyMjU2X0NNUjIsIDB4MDApOw0KPiArDQo+ICsJLyogTlJaIGNvZGluZywgbm8g YWxhcm0gc2ltdWxhdGlvbiAqLw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZf Rk1SMCwgMHgwMCk7DQo+ICsNCj4gKwkvKg0KPiArCSAqIEUxLCBmcmFtZSBmb3JtYXQsIDIgTWJp dC9zIHN5c3RlbSBkYXRhIHJhdGUsIG5vIEFJUw0KPiArCSAqIHRyYW5zbWlzc2lvbiB0byByZW1v dGUgZW5kIG9yIHN5c3RlbSBpbnRlcmZhY2UsIHBheWxvYWQgbG9vcA0KPiArCSAqIG9mZiwgdHJh bnNtaXQgcmVtb3RlIGFsYXJtIG9uDQo+ICsJICovDQo+ICsJZm1yMSA9IDB4MDA7DQo+ICsJZm1y MiA9IFBFRjIyNTZfRk1SMl9BWFJBOw0KPiArCXN3aXRjaCAocGVmMjI1Ni0+ZnJhbWVfdHlwZSkg ew0KPiArCWNhc2UgUEVGMjI1Nl9GUkFNRV9FMV9ET1VCTEVGUkFNRToNCj4gKwkJZm1yMiB8PSBQ RUYyMjU2X0ZNUjJfUkZTX0RPVUJMRUZSQU1FOw0KPiArCQlicmVhazsNCj4gKwljYXNlIFBFRjIy NTZfRlJBTUVfRTFfQ1JDNF9NVUxUSUZSQU1FOg0KPiArCQlmbXIxIHw9IFBFRjIyNTZfRk1SMV9Y RlM7DQo+ICsJCWZtcjIgfD0gUEVGMjI1Nl9GTVIyX1JGU19DUkM0X01VTFRJRlJBTUU7DQo+ICsJ CWJyZWFrOw0KPiArCWNhc2UgUEVGMjI1Nl9GUkFNRV9FMV9BVVRPX01VTFRJRlJBTUU6DQo+ICsJ CWZtcjEgfD0gUEVGMjI1Nl9GTVIxX1hGUzsNCj4gKwkJZm1yMiB8PSBQRUYyMjU2X0ZNUjJfUkZT X0FVVE9fTVVMVElGUkFNRTsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJZGV2X2Vy cihwZWYyMjU2LT5kZXYsICJVbnN1cHBvcnRlZCBmcmFtZSB0eXBlICVkXG4iLCBwZWYyMjU2LT5m cmFtZV90eXBlKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArCXBlZjIyNTZfd3Jp dGU4KHBlZjIyNTYsIFBFRjIyNTZfRk1SMSwgZm1yMSk7DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVm MjI1NiwgUEVGMjI1Nl9GTVIyLCBmbXIyKTsNCj4gKw0KPiArCS8qIEUxIGRlZmF1bHQgZm9yIHRo ZSByZWNlaXZlIHNsaWNlciB0aHJlc2hvbGQgKi8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2 LCBQRUYyMjU2X0xJTTIsIFBFRjIyNTZfTElNMl9TTFRfVEhSNTApOw0KPiArCWlmICghcGVmMjI1 Ni0+aXNfc3Vib3JkaW5hdGUpIHsNCj4gKwkJLyogU0VDIGlucHV0LCBhY3RpdmUgaGlnaCAqLw0K PiArCQlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0dQQzEsIFBFRjIyNTZfR1BDMV9D U0ZQX1NFQ19JTl9ISUdIKTsNCj4gKwl9IGVsc2Ugew0KPiArCQkvKiBMb29wLXRpbWVkICovDQo+ ICsJCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9MSU0yLCBQRUYyMjU2X0xJTTJf RUxUKTsNCj4gKwkJLyogRlNDIG91dHB1dCwgYWN0aXZlIGhpZ2ggKi8NCj4gKwkJcGVmMjI1Nl93 cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9HUEMxLCBQRUYyMjU2X0dQQzFfQ1NGUF9GU0NfT1VUX0hJ R0gpOw0KPiArCX0NCj4gKw0KPiArCS8qIGludGVybmFsIHNlY29uZCB0aW1lciwgcG93ZXIgb24g Ki8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0dDUiwgMHgwMCk7DQo+ICsN Cj4gKwkvKg0KPiArCSAqIHNsYXZlIG1vZGUsIGxvY2FsIGxvb3Agb2ZmLCBtb2RlIHNob3J0LWhh dWwNCj4gKwkgKiBJbiB2Mi54LCBiaXQzIGlzIGEgZm9yY2VkIDEgYml0IGluIHRoZSBkYXRhc2hl ZXQgLT4gTmVlZCB0byBiZSBzZXQuDQo+ICsJICovDQo+ICsJaWYgKHBlZjIyNTYtPnZlcnNpb24g PT0gUEVGMjI1Nl9WRVJTSU9OXzFfMikNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVG MjI1Nl9MSU0wLCAweDAwKTsNCj4gKwllbHNlDQo+ICsJCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYs IFBFRjIyNTZfTElNMCwgUEVGMjI1Nl8yWF9MSU0wX0JJVDMpOw0KPiArDQo+ICsJLyogYW5hbG9n IGludGVyZmFjZSBzZWxlY3RlZCwgcmVtb3RlIGxvb3Agb2ZmICovDQo+ICsJcGVmMjI1Nl93cml0 ZTgocGVmMjI1NiwgUEVGMjI1Nl9MSU0xLCAweDAwKTsNCj4gKw0KPiArCS8qDQo+ICsJICogU0NM S1IsIFNDTEtYLCBSQ0xLIGNvbmZpZ3VyZWQgdG8gaW5wdXRzLA0KPiArCSAqIFhGTVMgYWN0aXZl IGxvdywgQ0xLMSBhbmQgQ0xLMiBwaW4gY29uZmlndXJhdGlvbg0KPiArCSAqLw0KPiArCXBlZjIy NTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfUEM1LCAweDAwKTsNCj4gKwlwZWYyMjU2X3dyaXRl OChwZWYyMjU2LCBQRUYyMjU2X1BDNiwgMHgwMCk7DQo+ICsNCj4gKwkvKg0KPiArCSAqIDIuMDQ4 IE1IeiBzeXN0ZW0gY2xvY2tpbmcgcmF0ZSwgcmVjZWl2ZSBidWZmZXIgMiBmcmFtZXMsIHRyYW5z bWl0DQo+ICsJICogYnVmZmVyIGJ5cGFzcywgZGF0YSBzYW1wbGVkIGFuZCB0cmFuc21pdHRlZCBv biB0aGUgZmFsbGluZyBlZGdlIG9mDQo+ICsJICogU0NMS1IvWCwgYXV0b21hdGljIGZyZWV6ZSBz aWduYWxpbmcsIGRhdGEgaXMgYWN0aXZlIGluIHRoZSBmaXJzdA0KPiArCSAqIGNoYW5uZWwgcGhh c2UNCj4gKwkgKi8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X1NJQzEsIDB4 MDApOw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfU0lDMiwgMHgwMCk7DQo+ ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9TSUMzLCAweDAwKTsNCj4gKw0KPiAr CS8qIGNoYW5uZWwgbG9vcC1iYWNrIGFuZCBzaW5nbGUgZnJhbWUgbW9kZSBhcmUgZGlzYWJsZWQg Ki8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0xPT1AsIDB4MDApOw0KPiAr DQo+ICsJLyogYWxsIGJpdHMgb2YgdGhlIHRyYW5zbWl0dGVkIHNlcnZpY2Ugd29yZCBhcmUgY2xl YXJlZCAqLw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfWFNXLCBQRUYyMjU2 X1hTV19YWSgweDFGKSk7DQo+ICsJLyogQ0FTIGRpc2FibGVkIGFuZCBjbGVhciBzcGFyZSBiaXQg dmFsdWVzICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9YU1AsIDB4MDAp Ow0KPiArDQo+ICsJLyogbm8gdHJhbnNwYXJlbnQgbW9kZSBhY3RpdmUgKi8NCj4gKwlwZWYyMjU2 X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X1RTV00sIDB4MDApOw0KPiArDQo+ICsJLyoNCj4gKwkg KiB0aGUgdHJhbnNtaXQgY2xvY2sgb2Zmc2V0IGlzIGNsZWFyZWQNCj4gKwkgKiB0aGUgdHJhbnNt aXQgdGltZSBzbG90IG9mZnNldCBpcyBjbGVhcmVkDQo+ICsJICovDQo+ICsJcGVmMjI1Nl93cml0 ZTgocGVmMjI1NiwgUEVGMjI1Nl9YQzAsIDB4MDApOw0KPiArDQo+ICsJLyogS2VlcCBkZWZhdWx0 IHZhbHVlIGZvciB0aGUgdHJhbnNtaXQgb2Zmc2V0ICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVm MjI1NiwgUEVGMjI1Nl9YQzEsIDB4OUMpOw0KPiArDQo+ICsJLyoNCj4gKwkgKiB0cmFuc21pdCBw dWxzZSBtYXNrLCBkZWZhdWx0IHZhbHVlIGZyb20gZGF0YXNoZWV0DQo+ICsJICogdHJhbnNtaXR0 ZXIgaW4gdHJpc3RhdGUgbW9kZQ0KPiArCSAqLw0KPiArCWlmIChwZWYyMjU2LT52ZXJzaW9uID09 IFBFRjIyNTZfVkVSU0lPTl8xXzIpIHsNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVG MjI1Nl9YUE0wLCAweDdCKTsNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9Y UE0xLCAweDAzKTsNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9YUE0yLCBQ RUYyMjU2X1hQTTJfWExUIHwgMHgwMCk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJcGVmMjI1Nl93cml0 ZTgocGVmMjI1NiwgUEVGMjI1Nl9YUE0wLCAweDlDKTsNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVm MjI1NiwgUEVGMjI1Nl9YUE0xLCAweDAzKTsNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1Niwg UEVGMjI1Nl9YUE0yLCBQRUYyMjU2X1hQTTJfWExUIHwgMHgwMCk7DQo+ICsJfQ0KDQpPbmx5IGZp cnN0IGxpbmUgc2VlbSBkaWZmZXJlbnQsIGNvdWxkIFhQTTEgYW5kIFhQTTIgYmUgb3V0c2lkZSB0 aGUgaWYvZWxzZSA/DQoNCj4gKw0KPiArCS8qICJtYXN0ZXIiIG1vZGUgKi8NCj4gKwlpZiAoIXBl ZjIyNTYtPmlzX3N1Ym9yZGluYXRlKQ0KPiArCQlwZWYyMjU2X3NldGJpdHM4KHBlZjIyNTYsIFBF RjIyNTZfTElNMCwgUEVGMjI1Nl9MSU0wX01BUyk7DQo+ICsNCj4gKwkvKiB0cmFuc21pdCBsaW5l IGluIG5vcm1hbCBvcGVyYXRpb24gKi8NCj4gKwlwZWYyMjU2X2NscmJpdHM4KHBlZjIyNTYsIFBF RjIyNTZfWFBNMiwgUEVGMjI1Nl9YUE0yX1hMVCk7DQo+ICsNCj4gKwlpZiAocGVmMjI1Ni0+dmVy c2lvbiA9PSBQRUYyMjU2X1ZFUlNJT05fMV8yKSB7DQo+ICsJCS8qIHJlY2VpdmUgaW5wdXQgdGhy ZXNob2xkID0gMCwyMVYgKi8NCj4gKwkJcGVmMjI1Nl9jbHJzZXRiaXRzOChwZWYyMjU2LCBQRUYy MjU2X0xJTTEsIFBFRjIyNTZfMTJfTElNMV9SSUxfTUFTSywNCj4gKwkJCQkgICAgUEVGMjI1Nl8x Ml9MSU0xX1JJTF8yMTApOw0KPiArCX0gZWxzZSB7DQo+ICsJCS8qIHJlY2VpdmUgaW5wdXQgdGhy ZXNob2xkID0gMCwyMVYgKi8NCg0KU2FtZSBjb21tZW50IHR3aWNlLCBjb3VsZCBiZSBiZWZvcmUg dGhlICdpZicgYW5kIHJlbW92ZSB0aGUgeyB9IHRoZW4gPw0KDQo+ICsJCXBlZjIyNTZfY2xyc2V0 Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9MSU0xLCBQRUYyMjU2XzJYX0xJTTFfUklMX01BU0ssDQo+ ICsJCQkJICAgIFBFRjIyNTZfMlhfTElNMV9SSUxfMjEwKTsNCj4gKwl9DQo+ICsJLyogdHJhbnNt aXQgbGluZSBjb2RpbmcgPSBIREIzICovDQo+ICsJcGVmMjI1Nl9jbHJzZXRiaXRzOChwZWYyMjU2 LCBQRUYyMjU2X0ZNUjAsIFBFRjIyNTZfRk1SMF9YQ19NQVNLLA0KPiArCQkJICAgIFBFRjIyNTZf Rk1SMF9YQ19IREIzKTsNCg0KV291bGRuJ3QgdGhhdCBmaXQgaW4gYSBzaW5nbGUgbGluZSB3aXRo IHRoZSBuZXcgcmVjb21tZW5kZWQgMTAwIGNoYXIgbWF4IA0KbGluZSBsZW5ndGggPyBJIHRoaW5n IGl0IHdvdWxkIGJlIG1vcmUgcmVhZGFibGUgYXMgYSBzaW5nbGUgbGluZS4NCg0KPiArDQo+ICsJ LyogcmVjZWl2ZSBsaW5lIGNvZGluZyA9IEhEQjMgKi8NCj4gKwlwZWYyMjU2X2NscnNldGJpdHM4 KHBlZjIyNTYsIFBFRjIyNTZfRk1SMCwgUEVGMjI1Nl9GTVIwX1JDX01BU0ssDQo+ICsJCQkgICAg UEVGMjI1Nl9GTVIwX1JDX0hEQjMpOw0KPiArDQo+ICsJLyogZGV0ZWN0aW9uIG9mIExPUyBhbGFy bSA9IDE3NiBwdWxzZXMgKGllICgxMCArIDEpICogMTYpICovDQo+ICsJcGVmMjI1Nl93cml0ZTgo cGVmMjI1NiwgUEVGMjI1Nl9QQ0QsIDEwKTsNCj4gKw0KPiArCS8qIHJlY292ZXJ5IG9mIExPUyBh bGFybSA9IDIyIHB1bHNlcyAoaWUgMjEgKyAxKSAqLw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIy NTYsIFBFRjIyNTZfUENSLCAyMSk7DQo+ICsNCj4gKwkvKiBEQ08tWCBjZW50ZXIgZnJlcXVlbmN5 IGVuYWJsZWQgKi8NCj4gKwlwZWYyMjU2X3NldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZfQ01SMiwg UEVGMjI1Nl9DTVIyX0RDT1hDKTsNCj4gKw0KPiArCWlmIChwZWYyMjU2LT5pc19zdWJvcmRpbmF0 ZSkgew0KPiArCQkvKiBzZWxlY3QgUkNMSyBzb3VyY2UgPSAyTSAqLw0KPiArCQlwZWYyMjU2X2Ns cnNldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZfQ01SMSwgUEVGMjI1Nl9DTVIxX1JTX01BU0ssDQo+ ICsJCQkJICAgIFBFRjIyNTZfQ01SMV9SU19EQ09SXzIwNDgpOw0KPiArCQkvKiBkaXNhYmxlIHN3 aXRjaGluZyBmcm9tIFJDTEsgdG8gU1lOQyAqLw0KPiArCQlwZWYyMjU2X3NldGJpdHM4KHBlZjIy NTYsIFBFRjIyNTZfQ01SMSwgUEVGMjI1Nl9DTVIxX0RDUyk7DQo+ICsJfQ0KDQpJJ2QgbW92ZSB0 aGUgY29tbWVudHMgaW50byBhIHNpbmdsZSBvbmUgYmVmb3JlIHRoZSAnaWYnLCB0aGUgdHdvIA0K Y29tbWVudHMgYXJlIHJlbGF0ZWQuDQoNCj4gKw0KPiArCWlmIChwZWYyMjU2LT52ZXJzaW9uICE9 IFBFRjIyNTZfVkVSU0lPTl8xXzIpIHsNCj4gKwkJLyogZHVyaW5nIGluYWN0aXZlIGNoYW5uZWwg cGhhc2Ugc3dpdGNoIFJETy9SU0lHIGludG8gdHJpLXN0YXRlICovDQo+ICsJCXBlZjIyNTZfc2V0 Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9TSUMzLCBQRUYyMjU2X1NJQzNfUlRSSSk7DQo+ICsJfQ0K DQpJJ2QgcHV0IHRoZSBjb21tZW50IGJlZm9yZSB0aGUgJ2lmJyBhbmQgcmVtb3ZlIHRoZSB7IH0N Cg0KPiArDQo+ICsJaWYgKCFwZWYyMjU2LT5pc190eF9mYWxsaW5nX2VkZ2UpIHsNCj4gKwkJLyog cmlzaW5nIGVkZ2Ugc3luYyBwdWxzZSB0cmFuc21pdCAqLw0KDQpUaGlzIGNvbW1lbnQgZG9lc24n dCBzZWVtIHRvIG1hdGNoIHRoZSBjb25kaXRpb24gKHJpc2luZyB2ZXJzdXMgZmFsbGluZykuDQoN Cj4gKwkJcGVmMjI1Nl9jbHJzZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X1NJQzMsDQo+ICsJCQkJ ICAgIFBFRjIyNTZfU0lDM19SRVNSLCBQRUYyMjU2X1NJQzNfUkVTWCk7DQo+ICsJfSBlbHNlIHsN Cj4gKwkJLyogcmlzaW5nIGVkZ2Ugc3luYyBwdWxzZSByZWNlaXZlICovDQoNClRoaXMgY29tbWVu dCBkb2Vzbid0IHNlZW0gdG8gbWF0Y2ggdGhlIGNvbmRpdGlvbiAocmVjZWl2ZSB2ZXJzdXMgdHgp Lg0KDQo+ICsJCXBlZjIyNTZfY2xyc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9TSUMzLA0KPiAr CQkJCSAgICBQRUYyMjU2X1NJQzNfUkVTWCwgUEVGMjI1Nl9TSUMzX1JFU1IpOw0KPiArCX0NCj4g Kw0KPiArCS8qIHRyYW5zbWl0IG9mZnNldCBjb3VudGVyIChYQ08xMC4uMCkgPSA0ICovDQo+ICsJ cGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9YQzAsIDApOw0KPiArCXBlZjIyNTZfd3Jp dGU4KHBlZjIyNTYsIFBFRjIyNTZfWEMxLCA0KTsNCj4gKwkvKiByZWNlaXZlIG9mZnNldCBjb3Vu dGVyIChSQ08xMC4uMCkgPSA0ICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1 Nl9SQzAsIDApOw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfUkMxLCA0KTsN Cj4gKw0KPiArCS8qIHN5c3RlbSBjbG9jayByYXRlICovDQo+ICsJc3dpdGNoIChwZWYyMjU2LT5z eXNjbGtfcmF0ZSkgew0KPiArCWNhc2UgMjA0ODAwMDoNCj4gKwkJc2ljMSA9IFBFRjIyNTZfU0lD MV9TU0NfMjA0ODsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSA0MDk2MDAwOg0KPiArCQlzaWMxID0g UEVGMjI1Nl9TSUMxX1NTQ180MDk2Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIDgxOTIwMDA6DQo+ ICsJCXNpYzEgPSBQRUYyMjU2X1NJQzFfU1NDXzgxOTI7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2Ug MTYzODQwMDA6DQo+ICsJCXNpYzEgPSBQRUYyMjU2X1NJQzFfU1NDXzE2Mzg0Ow0KPiArCQlicmVh azsNCj4gKwlkZWZhdWx0Og0KPiArCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgIlVuc3VwcG9ydGVk IHN5c2NsayByYXRlICV1XG4iLCBwZWYyMjU2LT5zeXNjbGtfcmF0ZSk7DQo+ICsJCXJldHVybiAt RUlOVkFMOw0KPiArCX0NCj4gKwlwZWYyMjU2X2NscnNldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZf U0lDMSwgUEVGMjI1Nl9TSUMxX1NTQ19NQVNLLCBzaWMxKTsNCj4gKw0KPiArCS8qIGRhdGEgY2xv Y2sgcmF0ZSAqLw0KPiArCXN3aXRjaCAocGVmMjI1Ni0+ZGF0YV9yYXRlKSB7DQo+ICsJY2FzZSAy MDQ4MDAwOg0KPiArCQlmbXIxID0gUEVGMjI1Nl9GTVIxX1NTRF8yMDQ4Ow0KPiArCQlzaWMxID0g UEVGMjI1Nl9TSUMxX1NTRF8yMDQ4Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIDQwOTYwMDA6DQo+ ICsJCWZtcjEgPSBQRUYyMjU2X0ZNUjFfU1NEXzQwOTY7DQo+ICsJCXNpYzEgPSBQRUYyMjU2X1NJ QzFfU1NEXzQwOTY7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgODE5MjAwMDoNCj4gKwkJZm1yMSA9 IFBFRjIyNTZfRk1SMV9TU0RfODE5MjsNCj4gKwkJc2ljMSA9IFBFRjIyNTZfU0lDMV9TU0RfODE5 MjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxNjM4NDAwMDoNCj4gKwkJZm1yMSA9IFBFRjIyNTZf Rk1SMV9TU0RfMTYzODQ7DQo+ICsJCXNpYzEgPSBQRUYyMjU2X1NJQzFfU1NEXzE2Mzg0Ow0KPiAr CQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgIlVuc3Vw cG9ydGVkIGRhdGEgcmF0ZSAldVxuIiwgcGVmMjI1Ni0+ZGF0YV9yYXRlKTsNCj4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ICsJfQ0KPiArCXBlZjIyNTZfY2xyc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1 Nl9GTVIxLCBQRUYyMjU2X0ZNUjFfU1NEX01BU0ssIGZtcjEpOw0KPiArCXBlZjIyNTZfY2xyc2V0 Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9TSUMxLCBQRUYyMjU2X1NJQzFfU1NEX01BU0ssIHNpYzEp Ow0KPiArDQo+ICsJLyogY2hhbm5lbCBwaGFzZSAqLw0KPiArCXBlZjIyNTZfY2xyc2V0Yml0czgo cGVmMjI1NiwgUEVGMjI1Nl9TSUMyLCBQRUYyMjU2X1NJQzJfU0lDU19NQVNLLA0KPiArCQkJICAg IFBFRjIyNTZfU0lDMl9TSUNTKHBlZjIyNTYtPmNoYW5uZWxfcGhhc2UpKTsNCj4gKw0KPiArCWlm IChwZWYyMjU2LT5pc19zdWJvcmRpbmF0ZSkgew0KPiArCQkvKiB0cmFuc21pdCBidWZmZXIgc2l6 ZSA9IDIgZnJhbWVzICovDQo+ICsJCXBlZjIyNTZfY2xyc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1 Nl9TSUMxLCBQRUYyMjU2X1NJQzFfWEJTX01BU0ssDQo+ICsJCQkJICAgIFBFRjIyNTZfU0lDMV9Y QlNfMkZSQU1FUyk7DQo+ICsJCS8qIHRyYW5zbWl0IHRyYW5zcGFyZW50IG1vZGUgKi8NCj4gKwkJ cGVmMjI1Nl9zZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X1hTVywgUEVGMjI1Nl9YU1dfWFRNKTsN Cj4gKwl9DQoNCkNvdWxkIHRoaXMgYmxvY2sgZ2V0IHJlZ3JvdXBlZCB3aXRoIHRoZSBSWCBibG9j ayBkZXBlbmRpbmcgb24gDQppc19zdWJvcmRpbmF0ZSA/DQoNCj4gKw0KPiArCS8qIGVycm9yIGNv dW50ZXIgbGF0Y2hlZCBldmVyeSAxcyAqLw0KPiArCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1Niwg UEVGMjI1Nl9GTVIxLCBQRUYyMjU2X0ZNUjFfRUNNKTsNCj4gKwkvKiBlcnJvciBjb3VudGVyIG1v ZGUgQ09GQSAqLw0KPiArCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9HQ1IsIFBF RjIyNTZfR0NSX0VDTUMpOw0KPiArCS8qIGVycm9ycyBpbiBzZXJ2aWNlIHdvcmRzIGhhdmUgbm8g aW5mbHVlbmNlICovDQo+ICsJcGVmMjI1Nl9zZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X1JDMCwg UEVGMjI1Nl9SQzBfU1dEKTsNCj4gKwkvKiA0IGNvbnNlY3V0aXZlIGluY29ycmVjdCBGQVMgY2F1 c2VzIGxvc3Mgb2Ygc3luYyAqLw0KPiArCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1 Nl9SQzAsIFBFRjIyNTZfUkMwX0FTWTQpOw0KPiArCS8qIFNpLUJpdCwgU3BhcmUgYml0IEZvciBJ bnRlcm5hdGlvbmFsLCBGQVMgd29yZCAqLw0KPiArCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1Niwg UEVGMjI1Nl9YU1csIFBFRjIyNTZfWFNXX1hTSVMpOw0KPiArCXBlZjIyNTZfc2V0Yml0czgocGVm MjI1NiwgUEVGMjI1Nl9YU1AsIFBFRjIyNTZfWFNQX1hTSUYpOw0KPiArDQo+ICsJLyogcG9ydCBS Q0xLIGlzIG91dHB1dCAqLw0KPiArCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9Q QzUsIFBFRjIyNTZfUEM1X0NSUCk7DQo+ICsJLyogc3RhdHVzIGNoYW5nZWQgaW50ZXJydXB0IGF0 IGJvdGggdXAgYW5kIGRvd24gKi8NCj4gKwlwZWYyMjU2X3NldGJpdHM4KHBlZjIyNTYsIFBFRjIy NTZfR0NSLCBQRUYyMjU2X0dDUl9TQ0kpOw0KPiArDQo+ICsJLyogQ2xlYXIgYW55IElTUjIgcGVu ZGluZyBpbnRlcnJ1cHRzIGFuZCB1bm1hc2sgbmVlZGVkIGludGVycnVwdHMgKi8NCj4gKwlwZWYy MjU2X3JlYWQ4KHBlZjIyNTYsIFBFRjIyNTZfSVNSMik7DQo+ICsJcGVmMjI1Nl9jbHJiaXRzOChw ZWYyMjU2LCBQRUYyMjU2X0lNUjIsIFBFRjIyNTZfSU5UMl9MT1MgfCBQRUYyMjU2X0lOVDJfQUlT KTsNCj4gKw0KPiArCS8qIHJlc2V0IGxpbmVzICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1 NiwgUEVGMjI1Nl9DTURSLCBQRUYyMjU2X0NNRFJfUlJFUyB8IFBFRjIyNTZfQ01EUl9YUkVTKTsN Cj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2X3NldHVwKHN0 cnVjdCBwZWYyMjU2ICpwZWYyMjU2KQ0KPiArew0KPiArCWlmICghcGVmMjI1Ni0+aXNfZTEpIHsN Cj4gKwkJZGV2X2VycihwZWYyMjU2LT5kZXYsICJPbmx5IEUxIGxpbmUgaXMgY3VycmVudGx5IHN1 cHBvcnRlZFxuIik7DQo+ICsJCXJldHVybiAtRU9QTk9UU1VQUDsNCj4gKwl9DQo+ICsNCj4gKwly ZXR1cm4gcGVmMjI1Nl9zZXR1cF9lMShwZWYyMjU2KTsNCg0KSW4gb3JkZXIgdG8gdXNlIGZ1dHVy ZSBhZGRpdGlvbiBvZiBvdGhlciBtb2RlcywgSSdkIGRvOg0KDQoJaWYgKCFwZWYyMjU2LT5pc19l MSkNCgkJcmV0dXJuIHBlZjIyNTZfc2V0dXBfZTEocGVmMjI1Nik7DQoNCglkZXZfZXJyKHBlZjIy NTYtPmRldiwgIk9ubHkgRTEgbGluZSBpcyBjdXJyZW50bHkgc3VwcG9ydGVkXG4iKTsNCglyZXR1 cm4gLUVPUE5PVFNVUFA7DQoNCj4gK30NCj4gKw0KPiArDQo+ICsNCj4gK3N0YXRpYyB2b2lkIHBl ZjIyNTZfaXNyX2RlZmF1bHRfaGFuZGxlcihzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiwgdTggbmJy LCB1OCBpc3IpDQo+ICt7DQo+ICsJZGV2X3dhcm4ocGVmMjI1Ni0+ZGV2LCAiSVNSJXU6IDB4JTAy eCBub3QgaGFuZGxlZFxuIiwgbmJyLCBpc3IpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgYm9vbCBw ZWYyMjU2X2lzX2NhcnJpZXJfb24oc3RydWN0IHBlZjIyNTYgKnBlZjIyNTYpDQo+ICt7DQo+ICsJ dTggZnJzMDsNCj4gKw0KPiArCWZyczAgPSBwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIFBFRjIyNTZf RlJTMCk7DQo+ICsJcmV0dXJuICEoZnJzMCAmIChQRUYyMjU2X0ZSUzBfTE9TIHwgUEVGMjI1Nl9G UlMwX0FJUykpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBwZWYyMjU2X2lzcjJfaGFuZGxl cihzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiwgdTggbmJyLCB1OCBpc3IpDQo+ICt7DQo+ICsJYm9v bCBpc19jaGFuZ2VkID0gZmFsc2U7DQo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gKwlib29s IGlzX2NhcnJpZXJfb247DQo+ICsNCj4gKwlpZiAoaXNyICYgKFBFRjIyNTZfSU5UMl9MT1MgfCBQ RUYyMjU2X0lOVDJfQUlTKSkgew0KPiArDQo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZwZWYyMjU2 LT5sb2NrLCBmbGFncyk7DQo+ICsJCWlzX2NhcnJpZXJfb24gPSBwZWYyMjU2X2lzX2NhcnJpZXJf b24ocGVmMjI1Nik7DQo+ICsJCWlmIChpc19jYXJyaWVyX29uICE9IHBlZjIyNTYtPmlzX2NhcnJp ZXJfb24pIHsNCj4gKwkJCXBlZjIyNTYtPmlzX2NhcnJpZXJfb24gPSBpc19jYXJyaWVyX29uOw0K PiArCQkJaXNfY2hhbmdlZCA9IHRydWU7DQo+ICsJCX0NCj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcGVmMjI1Ni0+bG9jaywgZmxhZ3MpOw0KDQpEbyB3ZSByZWFsbHkgbmVlZCBzcGluX2xv Y2tzIGZvciB0aGF0ID8NCklmIGF0b21pY2l0eSBpcyByZWFsbHkgYW4gaXNzdWUsIG1heSB3ZSB1 c2UgYXRvbWljIG9wZXJhdGlvbnMgaW5zdGVhZCA/DQoNCj4gKw0KPiArCQlpZiAoaXNfY2hhbmdl ZCkNCj4gKwkJCWF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluKCZwZWYyMjU2LT5ldmVudF9ub3Rp Zmllcl9saXN0LA0KPiArCQkJCQkJICAgUEVGMjI1Nl9FVkVOVF9DQVJSSUVSLCBOVUxMKTsNCj4g Kwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBwZWYyMjU2X2lycV9oYW5kbGVy KGludCBpcnEsIHZvaWQgKnByaXYpDQo+ICt7DQo+ICsJdm9pZCAoKnBlZjIyNTZfaXNyX2hhbmRs ZXJbXSkoc3RydWN0IHBlZjIyNTYgKiwgdTgsIHU4KSA9IHsNCj4gKwkJWzBdID0gcGVmMjI1Nl9p c3JfZGVmYXVsdF9oYW5kbGVyLA0KPiArCQlbMV0gPSBwZWYyMjU2X2lzcl9kZWZhdWx0X2hhbmRs ZXIsDQo+ICsJCVsyXSA9IHBlZjIyNTZfaXNyMl9oYW5kbGVyLA0KPiArCQlbM10gPSBwZWYyMjU2 X2lzcl9kZWZhdWx0X2hhbmRsZXIsDQo+ICsJCVs0XSA9IHBlZjIyNTZfaXNyX2RlZmF1bHRfaGFu ZGxlciwNCj4gKwkJWzVdID0gcGVmMjI1Nl9pc3JfZGVmYXVsdF9oYW5kbGVyDQo+ICsJfTsNCj4g KwlzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiA9IChzdHJ1Y3QgcGVmMjI1NiAqKXByaXY7DQo+ICsJ dTggZ2lzOw0KPiArCXU4IGlzcjsNCj4gKwl1OCBuOw0KPiArDQo+ICsJZ2lzID0gcGVmMjI1Nl9y ZWFkOChwZWYyMjU2LCBQRUYyMjU2X0dJUyk7DQo+ICsNCj4gKwlmb3IgKG4gPSAwOyBuIDwgQVJS QVlfU0laRShwZWYyMjU2X2lzcl9oYW5kbGVyKSA7IG4rKykgew0KPiArCQlpZiAoZ2lzICYgUEVG MjI1Nl9HSVNfSVNSKG4pKSB7DQo+ICsJCQlpc3IgPSBwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIFBF RjIyNTZfSVNSKG4pKTsNCj4gKwkJCXBlZjIyNTZfaXNyX2hhbmRsZXJbbl0ocGVmMjI1Niwgbiwg aXNyKTsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCXJldHVybiBJUlFfSEFORExFRDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2X2NoZWNrX3JhdGVzKHN0cnVjdCBwZWYyMjU2ICpw ZWYyMjU2LCB1bnNpZ25lZCBsb25nIHN5c2Nsa19yYXRlLA0KPiArCQkJICAgICAgIHVuc2lnbmVk IGxvbmcgZGF0YV9yYXRlKQ0KPiArew0KPiArCXVuc2lnbmVkIGxvbmcgcmF0ZTsNCj4gKw0KPiAr CXN3aXRjaCAoc3lzY2xrX3JhdGUpIHsNCj4gKwljYXNlIDIwNDgwMDA6DQo+ICsJY2FzZSA0MDk2 MDAwOg0KPiArCWNhc2UgODE5MjAwMDoNCj4gKwljYXNlIDE2Mzg0MDAwOg0KPiArCQlicmVhazsN Cj4gKwlkZWZhdWx0Og0KPiArCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgIlVuc3VwcG9ydGVkIHN5 c3RlbSBjbG9jayByYXRlICVsdVxuIiwgc3lzY2xrX3JhdGUpOw0KPiArCQlyZXR1cm4gLUVJTlZB TDsNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKHJhdGUgPSBkYXRhX3JhdGU7IHJhdGUgPD0gZGF0YV9y YXRlICogNDsgcmF0ZSAqPSAyKSB7DQo+ICsJCWlmIChyYXRlID09IHN5c2Nsa19yYXRlKQ0KPiAr CQkJcmV0dXJuIDA7DQo+ICsJfQ0KPiArCWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAiVW5zdXBwb3J0 ZWQgZGF0YSByYXRlICVsdSB3aXRoIHN5c3RlbSBjbG9jayByYXRlICVsdVxuIiwNCj4gKwkJZGF0 YV9yYXRlLCBzeXNjbGtfcmF0ZSk7DQo+ICsJcmV0dXJuIC1FSU5WQUw7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgcGVmMjU1Nl9vZl9wYXJzZShzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1Niwgc3Ry dWN0IGRldmljZV9ub2RlICpucCkNCj4gK3sNCj4gKwljb25zdCBjaGFyICpzdHI7DQo+ICsJaW50 IHJldDsNCj4gKw0KPiArCXN0ciA9ICJlMSI7DQo+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF9z dHJpbmcobnAsICJsYW50aXEsbGluZS1pbnRlcmZhY2UiLCAmc3RyKTsNCj4gKwlpZiAocmV0ICYm IHJldCAhPSAtRUlOVkFMKSB7DQo+ICsJCWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAiJXBPRjogZmFp bGVkIHRvIHJlYWQgbGFudGlxLGxpbmUtaW50ZXJmYWNlXG4iLA0KPiArCQkJbnApOw0KPiArCQly ZXR1cm4gcmV0Ow0KPiArCX0NCj4gKwlpZiAoIXN0cmNtcChzdHIsICJlMSIpKSB7DQo+ICsJCXBl ZjIyNTYtPmlzX2UxID0gdHJ1ZTsNCj4gKwl9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAidDFqMSIp KSB7DQo+ICsJCXBlZjIyNTYtPmlzX2UxID0gZmFsc2U7DQo+ICsJfSBlbHNlIHsNCj4gKwkJZGV2 X2VycihwZWYyMjU2LT5kZXYsICIlcE9GOiBJbnZhbGlkIGxhbnRpcSxsaW5lLWludGVyZmFjZSAo JXMpXG4iLA0KPiArCQkJbnAsIHN0cik7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4g KwlkZXZfZGJnKHBlZjIyNTYtPmRldiwgImNvbmZpZzogJXMgbGluZVxuIiwgcGVmMjI1Ni0+aXNf ZTEgPyAiRTEiIDogIlQxL0oxIik7DQo+ICsNCj4gKwlwZWYyMjU2LT5zeXNjbGtfcmF0ZSA9IDIw NDgwMDA7DQo+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJsYW50aXEsc3lzY2xr LXJhdGUtaHoiLCAmcGVmMjI1Ni0+c3lzY2xrX3JhdGUpOw0KPiArCWlmIChyZXQgJiYgcmV0ICE9 IC1FSU5WQUwpIHsNCj4gKwkJZGV2X2VycihwZWYyMjU2LT5kZXYsICIlcE9GOiBmYWlsZWQgdG8g cmVhZCBsYW50aXEsc3lzY2xrLXJhdGUtaHpcbiIsIG5wKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4g Kwl9DQo+ICsJZGV2X2RiZyhwZWYyMjU2LT5kZXYsICJjb25maWc6IHN5c2NsayAldSBIelxuIiwg cGVmMjI1Ni0+c3lzY2xrX3JhdGUpOw0KPiArDQo+ICsJcGVmMjI1Ni0+ZGF0YV9yYXRlID0gMjA0 ODAwMDsNCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImxhbnRpcSxkYXRhLXJh dGUtYnBzIiwgJnBlZjIyNTYtPmRhdGFfcmF0ZSk7DQo+ICsJaWYgKHJldCAmJiByZXQgIT0gLUVJ TlZBTCkgew0KPiArCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgIiVwT0Y6IGZhaWxlZCB0byByZWFk IGxhbnRpcSxkYXRhLXJhdGUtYnBzXG4iLCBucCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0K PiArCWRldl9kYmcocGVmMjI1Ni0+ZGV2LCAiY29uZmlnOiBkYXRhIHJhdGUgJXUgYnBzXG4iLCBw ZWYyMjU2LT5kYXRhX3JhdGUpOw0KPiArDQo+ICsJcmV0ID0gIHBlZjIyNTZfY2hlY2tfcmF0ZXMo cGVmMjI1NiwgcGVmMjI1Ni0+c3lzY2xrX3JhdGUsIHBlZjIyNTYtPmRhdGFfcmF0ZSk7DQo+ICsJ aWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXBlZjIyNTYtPmlzX3R4X2ZhbGxp bmdfZWRnZSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgImxhbnRpcSxjbG9jay1mYWxsaW5n LWVkZ2UiKTsNCj4gKwlkZXZfZGJnKHBlZjIyNTYtPmRldiwgImNvbmZpZzogdHggb24gJXMgZWRn ZVxuIiwNCj4gKwkJcGVmMjI1Ni0+aXNfdHhfZmFsbGluZ19lZGdlID8gImZhbGxpbmciIDogInJp c2luZyIpOw0KPiArDQo+ICsJcGVmMjI1Ni0+aXNfc3Vib3JkaW5hdGUgPSBvZl9wcm9wZXJ0eV9y ZWFkX2Jvb2wobnAsICJsYW50aXEsc3Vib3JkaW5hdGUiKTsNCj4gKwlkZXZfZGJnKHBlZjIyNTYt PmRldiwgImNvbmZpZzogc3Vib3JkaW5hdGUgJXNcbiIsDQo+ICsJCXBlZjIyNTYtPmlzX3N1Ym9y ZGluYXRlID8gIm9uIiA6ICJvZmYiKTsNCj4gKw0KPiArCXN0ciA9IHBlZjIyNTYtPmlzX2UxID8g ImRvdWJsZWZyYW1lIiA6ICIxMmZyYW1lIjsNCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0 cmluZyhucCwgImxhbnRpcSxmcmFtZS1mb3JtYXQiLCAmc3RyKTsNCj4gKwlpZiAocmV0ICYmIHJl dCAhPSAtRUlOVkFMKSB7DQo+ICsJCWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAiJXBPRjogZmFpbGVk IHRvIHJlYWQgbGFudGlxLGZyYW1lLWZvcm1hdFxuIiwNCj4gKwkJCW5wKTsNCj4gKwkJcmV0dXJu IHJldDsNCj4gKwl9DQo+ICsJaWYgKHBlZjIyNTYtPmlzX2UxKSB7DQo+ICsJCWlmICghc3RyY21w KHN0ciwgImRvdWJsZWZyYW1lIikpIHsNCj4gKwkJCXBlZjIyNTYtPmZyYW1lX3R5cGUgPSBQRUYy MjU2X0ZSQU1FX0UxX0RPVUJMRUZSQU1FOw0KPiArCQl9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAi Y3JjNC1tdWx0aWZyYW1lIikpIHsNCj4gKwkJCXBlZjIyNTYtPmZyYW1lX3R5cGUgPSBQRUYyMjU2 X0ZSQU1FX0UxX0NSQzRfTVVMVElGUkFNRTsNCj4gKwkJfSBlbHNlIGlmICghc3RyY21wKHN0ciwg ImF1dG8tbXVsdGlmcmFtZSIpKSB7DQo+ICsJCQlwZWYyMjU2LT5mcmFtZV90eXBlID0gUEVGMjI1 Nl9GUkFNRV9FMV9BVVRPX01VTFRJRlJBTUU7DQo+ICsJCX0gZWxzZSB7DQo+ICsJCQlkZXZfZXJy KHBlZjIyNTYtPmRldiwgIiVwT0Y6IEludmFsaWQgbGFudGlxLGZyYW1lLWZvcm1hdCAoJXMpXG4i LA0KPiArCQkJCW5wLCBzdHIpOw0KPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJCX0NCj4gKwl9 IGVsc2Ugew0KPiArCQlpZiAoIXN0cmNtcChzdHIsICI0ZnJhbWUiKSkgew0KPiArCQkJcGVmMjI1 Ni0+ZnJhbWVfdHlwZSA9IFBFRjIyNTZfRlJBTUVfVDFKMV80RlJBTUU7DQo+ICsJCX0gZWxzZSBp ZiAoIXN0cmNtcChzdHIsICIxMmZyYW1lIikpIHsNCj4gKwkJCXBlZjIyNTYtPmZyYW1lX3R5cGUg PSBQRUYyMjU2X0ZSQU1FX1QxSjFfMTJGUkFNRTsNCj4gKwkJfSBlbHNlIGlmICghc3RyY21wKHN0 ciwgIjI0ZnJhbWUiKSkgew0KPiArCQkJcGVmMjI1Ni0+ZnJhbWVfdHlwZSA9IFBFRjIyNTZfRlJB TUVfVDFKMV8yNEZSQU1FOw0KPiArCQl9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAiNzJmcmFtZSIp KSB7DQo+ICsJCQlwZWYyMjU2LT5mcmFtZV90eXBlID0gUEVGMjI1Nl9GUkFNRV9UMUoxXzcyRlJB TUU7DQo+ICsJCX0gZWxzZSB7DQo+ICsJCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgIiVwT0Y6IElu dmFsaWQgbGFudGlxLGZyYW1lLWZvcm1hdCAoJXMpXG4iLA0KPiArCQkJCW5wLCBzdHIpOw0KPiAr CQkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJCX0NCj4gKwl9DQo+ICsJZGV2X2RiZyhwZWYyMjU2LT5k ZXYsICJjb25maWc6IGZyYW1lIHR5cGUgJWRcbiIsIHBlZjIyNTYtPmZyYW1lX3R5cGUpOw0KPiAr DQo+ICsJcGVmMjI1Ni0+Y2hhbm5lbF9waGFzZSA9IDA7DQo+ICsJcmV0ID0gb2ZfcHJvcGVydHlf cmVhZF91OChucCwgImxhbnRpcSxjaGFubmVsLXBoYXNlIiwgJnBlZjIyNTYtPmNoYW5uZWxfcGhh c2UpOw0KPiArCWlmIChyZXQgJiYgcmV0ICE9IC1FSU5WQUwpIHsNCj4gKwkJZGV2X2VycihwZWYy MjU2LT5kZXYsICIlcE9GOiBmYWlsZWQgdG8gcmVhZCBsYW50aXEsY2hhbm5lbC1waGFzZVxuIiwN Cj4gKwkJCW5wKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsJaWYgKHBlZjIyNTYtPmNo YW5uZWxfcGhhc2UgPj0gcGVmMjI1Ni0+c3lzY2xrX3JhdGUgLyBwZWYyMjU2LT5kYXRhX3JhdGUp IHsNCj4gKwkJZGV2X2VycihwZWYyMjU2LT5kZXYsICIlcE9GOiBJbnZhbGlkIGxhbnRpcSxjaGFu bmVsLXBoYXNlICV1XG4iLA0KPiArCQkJbnAsIHBlZjIyNTYtPmNoYW5uZWxfcGhhc2UpOw0KPiAr CQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsJZGV2X2RiZyhwZWYyMjU2LT5kZXYsICJjb25m aWc6IGNoYW5uZWwgcGhhc2UgJXVcbiIsIHBlZjIyNTYtPmNoYW5uZWxfcGhhc2UpOw0KPiArDQo+ ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1Nl9nZXRfZ3JvdXBz X2NvdW50KHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgcGVm MjI1NiAqcGVmMjI1NiA9IHBpbmN0cmxfZGV2X2dldF9kcnZkYXRhKHBjdGxkZXYpOw0KPiArDQo+ ICsJLyogV2UgbWFwIDEgZ3JvdXAgPC0+IDEgcGluICovDQo+ICsJcmV0dXJuIHBlZjIyNTYtPnBp bmN0cmwucGN0cmxfZGVzYy5ucGluczsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IGNoYXIg KnBlZjIyNTZfZ2V0X2dyb3VwX25hbWUoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LA0KPiAr CQkJCQkgIHVuc2lnbmVkIGludCBzZWxlY3RvcikNCj4gK3sNCj4gKwlzdHJ1Y3QgcGVmMjI1NiAq cGVmMjI1NiA9IHBpbmN0cmxfZGV2X2dldF9kcnZkYXRhKHBjdGxkZXYpOw0KPiArDQo+ICsJLyog V2UgbWFwIDEgZ3JvdXAgPC0+IDEgcGluICovDQo+ICsJcmV0dXJuIHBlZjIyNTYtPnBpbmN0cmwu cGN0cmxfZGVzYy5waW5zW3NlbGVjdG9yXS5uYW1lOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 IHBlZjIyNTZfZ2V0X2dyb3VwX3BpbnMoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LCB1bnNp Z25lZCBpbnQgc2VsZWN0b3IsDQo+ICsJCQkgICAgIGNvbnN0IHVuc2lnbmVkIGludCAqKnBpbnMs DQo+ICsJCQkgICAgIHVuc2lnbmVkIGludCAqbnVtX3BpbnMpDQo+ICt7DQo+ICsJc3RydWN0IHBl ZjIyNTYgKnBlZjIyNTYgPSBwaW5jdHJsX2Rldl9nZXRfZHJ2ZGF0YShwY3RsZGV2KTsNCj4gKw0K PiArCS8qIFdlIG1hcCAxIGdyb3VwIDwtPiAxIHBpbiAqLw0KPiArCSpwaW5zID0gJnBlZjIyNTYt PnBpbmN0cmwucGN0cmxfZGVzYy5waW5zW3NlbGVjdG9yXS5udW1iZXI7DQo+ICsJKm51bV9waW5z ID0gMTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHBpbmN0cmxfb3BzIHBlZjIyNTZfcGN0bG9wcyA9IHsNCj4gKwkuZ2V0X2dyb3Vwc19jb3Vu dAk9IHBlZjIyNTZfZ2V0X2dyb3Vwc19jb3VudCwNCj4gKwkuZ2V0X2dyb3VwX25hbWUJCT0gcGVm MjI1Nl9nZXRfZ3JvdXBfbmFtZSwNCj4gKwkuZ2V0X2dyb3VwX3BpbnMJCT0gcGVmMjI1Nl9nZXRf Z3JvdXBfcGlucywNCj4gKwkuZHRfbm9kZV90b19tYXAJCT0gcGluY29uZl9nZW5lcmljX2R0X25v ZGVfdG9fbWFwX3BpbiwNCj4gKwkuZHRfZnJlZV9tYXAJCT0gcGluY29uZl9nZW5lcmljX2R0X2Zy ZWVfbWFwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2X2dldF9mdW5jdGlvbnNf Y291bnQoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2KQ0KPiArew0KPiArCXN0cnVjdCBwZWYy MjU2ICpwZWYyMjU2ID0gcGluY3RybF9kZXZfZ2V0X2RydmRhdGEocGN0bGRldik7DQo+ICsNCj4g KwlyZXR1cm4gcGVmMjI1Ni0+cGluY3RybC5uZnVuY3Rpb25zOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgY29uc3QgY2hhciAqcGVmMjI1Nl9nZXRfZnVuY3Rpb25fbmFtZShzdHJ1Y3QgcGluY3RybF9k ZXYgKnBjdGxkZXYsDQo+ICsJCQkJCSAgICAgdW5zaWduZWQgaW50IHNlbGVjdG9yKQ0KPiArew0K PiArCXN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2ID0gcGluY3RybF9kZXZfZ2V0X2RydmRhdGEocGN0 bGRldik7DQo+ICsNCj4gKwlyZXR1cm4gcGVmMjI1Ni0+cGluY3RybC5mdW5jdGlvbnNbc2VsZWN0 b3JdLm5hbWU7DQo+ICt9DQo+ICsNCj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2X2dldF9mdW5j dGlvbl9ncm91cHMoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LCB1bnNpZ25lZCBpbnQgc2Vs ZWN0b3IsDQo+ICsJCQkgY29uc3QgY2hhciAqIGNvbnN0ICoqZ3JvdXBzLA0KPiArCQkJIHVuc2ln bmVkICogY29uc3QgbnVtX2dyb3VwcykNCj4gK3sNCj4gKwlzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1 NiA9IHBpbmN0cmxfZGV2X2dldF9kcnZkYXRhKHBjdGxkZXYpOw0KPiArDQo+ICsJKmdyb3VwcyA9 IHBlZjIyNTYtPnBpbmN0cmwuZnVuY3Rpb25zW3NlbGVjdG9yXS5ncm91cHM7DQo+ICsJKm51bV9n cm91cHMgPSBwZWYyMjU2LT5waW5jdHJsLmZ1bmN0aW9uc1tzZWxlY3Rvcl0ubmdyb3VwczsNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2X3NldF9tdXgoc3Ry dWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LCB1bnNpZ25lZCBpbnQgZnVuY19zZWxlY3RvciwNCj4g KwkJCSAgIHVuc2lnbmVkIGludCBncm91cF9zZWxlY3RvcikNCj4gK3sNCj4gKwlzdHJ1Y3QgcGVm MjI1NiAqcGVmMjI1NiA9IHBpbmN0cmxfZGV2X2dldF9kcnZkYXRhKHBjdGxkZXYpOw0KPiArCWNv bnN0IHN0cnVjdCBwZWYyMjU2X3BpbnJlZ19kZXNjICpwaW5yZWdfZGVzYzsNCj4gKwl1OCBmdW5j X3ZhbDsNCj4gKw0KPiArCWRldl9kYmcocGVmMjI1Ni0+ZGV2LCAic2V0ICVzIHRvICVzIGZ1bmN0 aW9uXG4iLA0KPiArCQlwZWYyMjU2LT5waW5jdHJsLnBjdHJsX2Rlc2MucGluc1tncm91cF9zZWxl Y3Rvcl0ubmFtZSwNCj4gKwkJcGVmMjI1Ni0+cGluY3RybC5mdW5jdGlvbnNbZnVuY19zZWxlY3Rv cl0ubmFtZSk7DQo+ICsNCj4gKwkvKiBXZSBtYXAgMSBncm91cCA8LT4gMSBwaW4gKi8NCj4gKwlw aW5yZWdfZGVzYyA9IHBlZjIyNTYtPnBpbmN0cmwucGN0cmxfZGVzYy5waW5zW2dyb3VwX3NlbGVj dG9yXS5kcnZfZGF0YTsNCj4gKwlmdW5jX3ZhbCA9IHBlZjIyNTYtPnBpbmN0cmwuZnVuY3Rpb25z W2Z1bmNfc2VsZWN0b3JdLmZ1bmNfdmFsOw0KPiArDQo+ICsJcGVmMjI1Nl9jbHJzZXRiaXRzOChw ZWYyMjU2LCBwaW5yZWdfZGVzYy0+b2Zmc2V0LCBwaW5yZWdfZGVzYy0+bWFzaywNCj4gKwkJCSAg ICBmdW5jX3ZhbCAmIHBpbnJlZ19kZXNjLT5tYXNrKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBpbm11eF9vcHMgcGVmMjI1Nl9wbXhvcHMg PSB7DQo+ICsJLmdldF9mdW5jdGlvbnNfY291bnQJPSBwZWYyMjU2X2dldF9mdW5jdGlvbnNfY291 bnQsDQo+ICsJLmdldF9mdW5jdGlvbl9uYW1lCT0gcGVmMjI1Nl9nZXRfZnVuY3Rpb25fbmFtZSwN Cj4gKwkuZ2V0X2Z1bmN0aW9uX2dyb3Vwcwk9IHBlZjIyNTZfZ2V0X2Z1bmN0aW9uX2dyb3VwcywN Cj4gKwkuc2V0X211eAkJPSBwZWYyMjU2X3NldF9tdXgsDQo+ICt9Ow0KPiArDQo+ICsjZGVmaW5l IFBFRjIyNTZfUElOQ1RSTF9QSU4oX251bWJlciwgX25hbWUsIF9vZmZzZXQsIF9tYXNrKSB7IFwN Cj4gKwkubnVtYmVyID0gX251bWJlciwgXA0KPiArCS5uYW1lID0gX25hbWUsIFwNCj4gKwkuZHJ2 X2RhdGEgPSAmKHN0cnVjdCBwZWYyMjU2X3BpbnJlZ19kZXNjKSB7IFwNCj4gKwkJLm9mZnNldCA9 IF9vZmZzZXQsIFwNCj4gKwkJLm1hc2sgPSBfbWFzaywgXA0KPiArCX0sIFwNCj4gK30NCj4gKw0K PiArc3RhdGljIGNvbnN0IHN0cnVjdCBwaW5jdHJsX3Bpbl9kZXNjIHBlZjIyNTZfdjEyX3BpbnNb XSA9IHsNCj4gKwlQRUYyMjU2X1BJTkNUUkxfUElOKDAsICJSUEEiLCBQRUYyMjU2X1BDMSwgUEVG MjI1Nl8xMl9QQ19SUENfTUFTSyksDQo+ICsJUEVGMjI1Nl9QSU5DVFJMX1BJTigxLCAiUlBCIiwg UEVGMjI1Nl9QQzIsIFBFRjIyNTZfMTJfUENfUlBDX01BU0spLA0KPiArCVBFRjIyNTZfUElOQ1RS TF9QSU4oMiwgIlJQQyIsIFBFRjIyNTZfUEMzLCBQRUYyMjU2XzEyX1BDX1JQQ19NQVNLKSwNCj4g KwlQRUYyMjU2X1BJTkNUUkxfUElOKDMsICJSUEQiLCBQRUYyMjU2X1BDNCwgUEVGMjI1Nl8xMl9Q Q19SUENfTUFTSyksDQo+ICsJUEVGMjI1Nl9QSU5DVFJMX1BJTig0LCAiWFBBIiwgUEVGMjI1Nl9Q QzEsIFBFRjIyNTZfMTJfUENfWFBDX01BU0spLA0KPiArCVBFRjIyNTZfUElOQ1RSTF9QSU4oNSwg IlhQQiIsIFBFRjIyNTZfUEMyLCBQRUYyMjU2XzEyX1BDX1hQQ19NQVNLKSwNCj4gKwlQRUYyMjU2 X1BJTkNUUkxfUElOKDYsICJYUEMiLCBQRUYyMjU2X1BDMywgUEVGMjI1Nl8xMl9QQ19YUENfTUFT SyksDQo+ICsJUEVGMjI1Nl9QSU5DVFJMX1BJTig3LCAiWFBEIiwgUEVGMjI1Nl9QQzQsIFBFRjIy NTZfMTJfUENfWFBDX01BU0spLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBw aW5jdHJsX3Bpbl9kZXNjIHBlZjIyNTZfdjJ4X3BpbnNbXSA9IHsNCj4gKwlQRUYyMjU2X1BJTkNU UkxfUElOKDAsICJSUEEiLCBQRUYyMjU2X1BDMSwgUEVGMjI1Nl8yWF9QQ19SUENfTUFTSyksDQo+ ICsJUEVGMjI1Nl9QSU5DVFJMX1BJTigxLCAiUlBCIiwgUEVGMjI1Nl9QQzIsIFBFRjIyNTZfMlhf UENfUlBDX01BU0spLA0KPiArCVBFRjIyNTZfUElOQ1RSTF9QSU4oMiwgIlJQQyIsIFBFRjIyNTZf UEMzLCBQRUYyMjU2XzJYX1BDX1JQQ19NQVNLKSwNCj4gKwlQRUYyMjU2X1BJTkNUUkxfUElOKDMs ICJSUEQiLCBQRUYyMjU2X1BDNCwgUEVGMjI1Nl8yWF9QQ19SUENfTUFTSyksDQo+ICsJUEVGMjI1 Nl9QSU5DVFJMX1BJTig0LCAiWFBBIiwgUEVGMjI1Nl9QQzEsIFBFRjIyNTZfMlhfUENfWFBDX01B U0spLA0KPiArCVBFRjIyNTZfUElOQ1RSTF9QSU4oNSwgIlhQQiIsIFBFRjIyNTZfUEMyLCBQRUYy MjU2XzJYX1BDX1hQQ19NQVNLKSwNCj4gKwlQRUYyMjU2X1BJTkNUUkxfUElOKDYsICJYUEMiLCBQ RUYyMjU2X1BDMywgUEVGMjI1Nl8yWF9QQ19YUENfTUFTSyksDQo+ICsJUEVGMjI1Nl9QSU5DVFJM X1BJTig3LCAiWFBEIiwgUEVGMjI1Nl9QQzQsIFBFRjIyNTZfMlhfUENfWFBDX01BU0spLA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHBlZjIyNTZfcnBfZ3JvdXBzW10g PSB7ICJSUEEiLCAiUlBCIiwgIlJQQyIsICJSUEQiIH07DQo+ICtzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgcGVmMjI1Nl94cF9ncm91cHNbXSA9IHsgIlhQQSIsICJYUEIiLCAiWFBDIiwgIlhQRCIg fTsNCj4gK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBwZWYyMjU2X2FsbF9ncm91cHNbXSA9IHsg IlJQQSIsICJSUEIiLCAiUlBDIiwgIlJQRCIsDQo+ICsJCQkJCQkgICJYUEEiLCAiWFBCIiwgIlhQ QyIsICJYUEQiIH07DQo+ICsNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GVU5DVElPTihfbmFtZSwgX2Z1 bmNfdmFsLCBfZ3JvdXBzKSB7IFwNCj4gKwkubmFtZSA9IF9uYW1lLCBcDQo+ICsJLmdyb3VwcyA9 IF9ncm91cHMsIFwNCj4gKwkubmdyb3VwcyA9IEFSUkFZX1NJWkUoX2dyb3VwcyksIFwNCj4gKwku ZnVuY192YWwgPSBfZnVuY192YWwsIFwNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVj dCBwZWYyMjU2X2Z1bmN0aW9uX2Rlc2MgcGVmMjI1Nl92MnhfZnVuY3Rpb25zW10gPSB7DQo+ICsJ UEVGMjI1Nl9GVU5DVElPTigiU1lQUiIsICAgUEVGMjI1Nl8yWF9QQ19SUENfU1lQUiwgICBwZWYy MjU2X3JwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElPTigiUkZNIiwgICAgUEVGMjI1Nl8y WF9QQ19SUENfUkZNLCAgICBwZWYyMjU2X3JwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElP TigiUkZNQiIsICAgUEVGMjI1Nl8yWF9QQ19SUENfUkZNQiwgICBwZWYyMjU2X3JwX2dyb3Vwcyks DQo+ICsJUEVGMjI1Nl9GVU5DVElPTigiUlNJR00iLCAgUEVGMjI1Nl8yWF9QQ19SUENfUlNJR00s ICBwZWYyMjU2X3JwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElPTigiUlNJRyIsICAgUEVG MjI1Nl8yWF9QQ19SUENfUlNJRywgICBwZWYyMjU2X3JwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9G VU5DVElPTigiRExSIiwgICAgUEVGMjI1Nl8yWF9QQ19SUENfRExSLCAgICBwZWYyMjU2X3JwX2dy b3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElPTigiRlJFRVpFIiwgUEVGMjI1Nl8yWF9QQ19SUENf RlJFRVpFLCBwZWYyMjU2X3JwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElPTigiUkZTUCIs ICAgUEVGMjI1Nl8yWF9QQ19SUENfUkZTUCwgICBwZWYyMjU2X3JwX2dyb3VwcyksDQo+ICsJUEVG MjI1Nl9GVU5DVElPTigiTE9TIiwgICAgUEVGMjI1Nl8yWF9QQ19SUENfTE9TLCAgICBwZWYyMjU2 X3JwX2dyb3VwcyksDQo+ICsNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJTWVBYIiwgIFBFRjIyNTZf MlhfUENfWFBDX1NZUFgsICBwZWYyMjU2X3hwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElP TigiWEZNUyIsICBQRUYyMjU2XzJYX1BDX1hQQ19YRk1TLCAgcGVmMjI1Nl94cF9ncm91cHMpLA0K PiArCVBFRjIyNTZfRlVOQ1RJT04oIlhTSUciLCAgUEVGMjI1Nl8yWF9QQ19YUENfWFNJRywgIHBl ZjIyNTZfeHBfZ3JvdXBzKSwNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJUQ0xLIiwgIFBFRjIyNTZf MlhfUENfWFBDX1RDTEssICBwZWYyMjU2X3hwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElP TigiWE1GQiIsICBQRUYyMjU2XzJYX1BDX1hQQ19YTUZCLCAgcGVmMjI1Nl94cF9ncm91cHMpLA0K PiArCVBFRjIyNTZfRlVOQ1RJT04oIlhTSUdNIiwgUEVGMjI1Nl8yWF9QQ19YUENfWFNJR00sIHBl ZjIyNTZfeHBfZ3JvdXBzKSwNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJETFgiLCAgIFBFRjIyNTZf MlhfUENfWFBDX0RMWCwgICBwZWYyMjU2X3hwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElP TigiWENMSyIsICBQRUYyMjU2XzJYX1BDX1hQQ19YQ0xLLCAgcGVmMjI1Nl94cF9ncm91cHMpLA0K PiArCVBFRjIyNTZfRlVOQ1RJT04oIlhMVCIsICAgUEVGMjI1Nl8yWF9QQ19YUENfWExULCAgIHBl ZjIyNTZfeHBfZ3JvdXBzKSwNCj4gKw0KPiArCVBFRjIyNTZfRlVOQ1RJT04oIkdQSSIsICBQRUYy MjU2XzJYX1BDX1JQQ19HUEkgfCBQRUYyMjU2XzJYX1BDX1hQQ19HUEksDQo+ICsJCQkgcGVmMjI1 Nl9hbGxfZ3JvdXBzKSwNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJHUE9IIiwgUEVGMjI1Nl8yWF9Q Q19SUENfR1BPSCB8IFBFRjIyNTZfMlhfUENfWFBDX0dQT0gsDQo+ICsJCQkgcGVmMjI1Nl9hbGxf Z3JvdXBzKSwNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJHUE9MIiwgUEVGMjI1Nl8yWF9QQ19SUENf R1BPTCB8IFBFRjIyNTZfMlhfUENfWFBDX0dQT0wsDQo+ICsJCQkgcGVmMjI1Nl9hbGxfZ3JvdXBz KSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGVmMjI1Nl9mdW5jdGlvbl9k ZXNjIHBlZjIyNTZfdjEyX2Z1bmN0aW9uc1tdID0gew0KPiArCVBFRjIyNTZfRlVOQ1RJT04oIlNZ UFIiLCAgIFBFRjIyNTZfMTJfUENfUlBDX1NZUFIsICAgcGVmMjI1Nl9ycF9ncm91cHMpLA0KPiAr CVBFRjIyNTZfRlVOQ1RJT04oIlJGTSIsICAgIFBFRjIyNTZfMTJfUENfUlBDX1JGTSwgICAgcGVm MjI1Nl9ycF9ncm91cHMpLA0KPiArCVBFRjIyNTZfRlVOQ1RJT04oIlJGTUIiLCAgIFBFRjIyNTZf MTJfUENfUlBDX1JGTUIsICAgcGVmMjI1Nl9ycF9ncm91cHMpLA0KPiArCVBFRjIyNTZfRlVOQ1RJ T04oIlJTSUdNIiwgIFBFRjIyNTZfMTJfUENfUlBDX1JTSUdNLCAgcGVmMjI1Nl9ycF9ncm91cHMp LA0KPiArCVBFRjIyNTZfRlVOQ1RJT04oIlJTSUciLCAgIFBFRjIyNTZfMTJfUENfUlBDX1JTSUcs ICAgcGVmMjI1Nl9ycF9ncm91cHMpLA0KPiArCVBFRjIyNTZfRlVOQ1RJT04oIkRMUiIsICAgIFBF RjIyNTZfMTJfUENfUlBDX0RMUiwgICAgcGVmMjI1Nl9ycF9ncm91cHMpLA0KPiArCVBFRjIyNTZf RlVOQ1RJT04oIkZSRUVaRSIsIFBFRjIyNTZfMTJfUENfUlBDX0ZSRUVaRSwgcGVmMjI1Nl9ycF9n cm91cHMpLA0KPiArCVBFRjIyNTZfRlVOQ1RJT04oIlJGU1AiLCAgIFBFRjIyNTZfMTJfUENfUlBD X1JGU1AsICAgcGVmMjI1Nl9ycF9ncm91cHMpLA0KPiArDQo+ICsJUEVGMjI1Nl9GVU5DVElPTigi U1lQWCIsICBQRUYyMjU2XzEyX1BDX1hQQ19TWVBYLCAgcGVmMjI1Nl94cF9ncm91cHMpLA0KPiAr CVBFRjIyNTZfRlVOQ1RJT04oIlhGTVMiLCAgUEVGMjI1Nl8xMl9QQ19YUENfWEZNUywgIHBlZjIy NTZfeHBfZ3JvdXBzKSwNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJYU0lHIiwgIFBFRjIyNTZfMTJf UENfWFBDX1hTSUcsICBwZWYyMjU2X3hwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElPTigi VENMSyIsICBQRUYyMjU2XzEyX1BDX1hQQ19UQ0xLLCAgcGVmMjI1Nl94cF9ncm91cHMpLA0KPiAr CVBFRjIyNTZfRlVOQ1RJT04oIlhNRkIiLCAgUEVGMjI1Nl8xMl9QQ19YUENfWE1GQiwgIHBlZjIy NTZfeHBfZ3JvdXBzKSwNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJYU0lHTSIsIFBFRjIyNTZfMTJf UENfWFBDX1hTSUdNLCBwZWYyMjU2X3hwX2dyb3VwcyksDQo+ICsJUEVGMjI1Nl9GVU5DVElPTigi RExYIiwgICBQRUYyMjU2XzEyX1BDX1hQQ19ETFgsICAgcGVmMjI1Nl94cF9ncm91cHMpLA0KPiAr CVBFRjIyNTZfRlVOQ1RJT04oIlhDTEsiLCAgUEVGMjI1Nl8xMl9QQ19YUENfWENMSywgIHBlZjIy NTZfeHBfZ3JvdXBzKSwNCj4gKwlQRUYyMjU2X0ZVTkNUSU9OKCJYTFQiLCAgIFBFRjIyNTZfMTJf UENfWFBDX1hMVCwgICBwZWYyMjU2X3hwX2dyb3VwcyksDQo+ICt9Ow0KPiArDQo+ICsNCj4gK3N0 YXRpYyBpbnQgcGVmMjI1Nl9yZWdpc3Rlcl9waW5jdHJsKHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2 KQ0KPiArew0KPiArCXN0cnVjdCBwaW5jdHJsX2RldgkqcGN0cmw7DQo+ICsNCj4gKwlwZWYyMjU2 LT5waW5jdHJsLnBjdHJsX2Rlc2MubmFtZSAgICA9IGRldl9uYW1lKHBlZjIyNTYtPmRldik7DQo+ ICsJcGVmMjI1Ni0+cGluY3RybC5wY3RybF9kZXNjLm93bmVyICAgPSBUSElTX01PRFVMRTsNCj4g KwlwZWYyMjU2LT5waW5jdHJsLnBjdHJsX2Rlc2MucGN0bG9wcyA9ICZwZWYyMjU2X3BjdGxvcHM7 DQo+ICsJcGVmMjI1Ni0+cGluY3RybC5wY3RybF9kZXNjLnBteG9wcyAgPSAmcGVmMjI1Nl9wbXhv cHM7DQo+ICsJaWYgKHBlZjIyNTYtPnZlcnNpb24gPT0gUEVGMjI1Nl9WRVJTSU9OXzFfMikgew0K PiArCQlwZWYyMjU2LT5waW5jdHJsLnBjdHJsX2Rlc2MucGlucyAgPSBwZWYyMjU2X3YxMl9waW5z Ow0KPiArCQlwZWYyMjU2LT5waW5jdHJsLnBjdHJsX2Rlc2MubnBpbnMgPSBBUlJBWV9TSVpFKHBl ZjIyNTZfdjEyX3BpbnMpOw0KPiArCQlwZWYyMjU2LT5waW5jdHJsLmZ1bmN0aW9ucyAgPSBwZWYy MjU2X3YxMl9mdW5jdGlvbnM7DQo+ICsJCXBlZjIyNTYtPnBpbmN0cmwubmZ1bmN0aW9ucyA9IEFS UkFZX1NJWkUocGVmMjI1Nl92MTJfZnVuY3Rpb25zKTsNCj4gKwl9IGVsc2Ugew0KPiArCQlwZWYy MjU2LT5waW5jdHJsLnBjdHJsX2Rlc2MucGlucyAgPSBwZWYyMjU2X3YyeF9waW5zOw0KPiArCQlw ZWYyMjU2LT5waW5jdHJsLnBjdHJsX2Rlc2MubnBpbnMgPSBBUlJBWV9TSVpFKHBlZjIyNTZfdjJ4 X3BpbnMpOw0KPiArCQlwZWYyMjU2LT5waW5jdHJsLmZ1bmN0aW9ucyAgPSBwZWYyMjU2X3YyeF9m dW5jdGlvbnM7DQo+ICsJCXBlZjIyNTYtPnBpbmN0cmwubmZ1bmN0aW9ucyA9IEFSUkFZX1NJWkUo cGVmMjI1Nl92MnhfZnVuY3Rpb25zKTsNCj4gKwl9DQo+ICsNCj4gKw0KPiArCXBjdHJsID0gZGV2 bV9waW5jdHJsX3JlZ2lzdGVyKHBlZjIyNTYtPmRldiwgJnBlZjIyNTYtPnBpbmN0cmwucGN0cmxf ZGVzYywgcGVmMjI1Nik7DQo+ICsJaWYgKElTX0VSUihwY3RybCkpIHsNCj4gKwkJZGV2X2Vycihw ZWYyMjU2LT5kZXYsICJwaW5jdHJsIGRyaXZlciByZWdpc3RyYXRpb24gZmFpbGVkXG4iKTsNCj4g KwkJcmV0dXJuIFBUUl9FUlIocGN0cmwpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBwZWYyMjU2X3Jlc2V0X3Bpbm11eChzdHJ1Y3QgcGVmMjI1 NiAqcGVmMjI1NikNCj4gK3sNCj4gKwl1OCB2YWw7DQo+ICsJLyoNCj4gKwkgKiBSZXNldCB2YWx1 ZXMgY2Fubm90IGJlIHVzZWQuDQo+ICsJICogVGhleSBkZWZpbmUgdGhlIFNZUFIvU1lQWCBwaW4g bXV4IGZvciBhbGwgdGhlIFJQeCBhbmQgWFB4IHBpbnMgYW5kDQo+ICsJICogT25seSBvbmUgcGlu IGNhbiBiZSBtdXhlZCB0byBTWVBSIGFuZCBvbmUgcGluIGNhbiBiZSBtdXhlZCB0byBTWVBYLg0K PiArCSAqIENob29zZSBoZXJlIGFuIG90aGVyIHJlc2V0IHZhbHVlLg0KPiArCSAqLw0KPiArCWlm IChwZWYyMjU2LT52ZXJzaW9uID09IFBFRjIyNTZfVkVSU0lPTl8xXzIpDQo+ICsJCXZhbCA9IFBF RjIyNTZfMTJfUENfWFBDX1hDTEsgfCBQRUYyMjU2XzEyX1BDX1JQQ19SRlNQOw0KPiArCWVsc2UN Cj4gKwkJdmFsID0gUEVGMjI1Nl8yWF9QQ19YUENfR1BJIHwgUEVGMjI1Nl8yWF9QQ19SUENfR1BJ Ow0KPiArDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9QQzEsIHZhbCk7DQo+ ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9QQzIsIHZhbCk7DQo+ICsJcGVmMjI1 Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9QQzMsIHZhbCk7DQo+ICsJcGVmMjI1Nl93cml0ZTgo cGVmMjI1NiwgUEVGMjI1Nl9QQzQsIHZhbCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzc2l6ZV90 IHN1Ym9yZGluYXRlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwNCj4gKwkJCQljaGFyICpidWYpDQo+ICt7DQo+ICsJc3RydWN0IHBlZjIyNTYg KnBlZjIyNTYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCXJldHVybiBzeXNmc19l bWl0KGJ1ZiwgIiVkXG4iLCBwZWYyMjU2LT5pc19zdWJvcmRpbmF0ZSk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBzc2l6ZV90IHN1Ym9yZGluYXRlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ICsJCQkJIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6 ZV90IGNvdW50KQ0KPiArew0KPiArCXN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2ID0gZGV2X2dldF9k cnZkYXRhKGRldik7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlmIChzdHJ0b2Jvb2woYnVmLCAm cGVmMjI1Ni0+aXNfc3Vib3JkaW5hdGUpIDwgMCkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsN Cj4gKwlyZXQgPSBwZWYyMjU2X3NldHVwKHBlZjIyNTYpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJl dHVybiByZXQ7DQo+ICsNCj4gKwlyZXR1cm4gY291bnQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBE RVZJQ0VfQVRUUl9SVyhzdWJvcmRpbmF0ZSk7DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIHBlZjIyNTZfYXR0cmlidXRlX2dyb3VwID0gew0KPiArCS5hdHRycyA9 IChzdHJ1Y3QgYXR0cmlidXRlICpbXSkgew0KPiArCQkmZGV2X2F0dHJfc3Vib3JkaW5hdGUuYXR0 ciwNCj4gKwkJTlVMTCwNCj4gKwl9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2 X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGRl dmljZV9ub2RlICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiArCXN0cnVjdCBwZWYyMjU2ICpw ZWYyMjU2Ow0KPiArCWludCByZXQ7DQo+ICsJaW50IGlycTsNCj4gKw0KPiArCXBlZjIyNTYgPSBk ZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpwZWYyMjU2KSwgR0ZQX0tFUk5FTCk7DQo+ ICsJaWYgKCFwZWYyMjU2KQ0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCXBlZjIyNTYt PmRldiA9ICZwZGV2LT5kZXY7DQo+ICsJc3Bpbl9sb2NrX2luaXQoJnBlZjIyNTYtPmxvY2spOw0K PiArCUFUT01JQ19JTklUX05PVElGSUVSX0hFQUQoJnBlZjIyNTYtPmV2ZW50X25vdGlmaWVyX2xp c3QpOw0KPiArDQo+ICsJcGVmMjI1Ni0+cmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNv dXJjZShwZGV2LCAwKTsNCj4gKwlpZiAoSVNfRVJSKHBlZjIyNTYtPnJlZ3MpKQ0KPiArCQlyZXR1 cm4gUFRSX0VSUihwZWYyMjU2LT5yZWdzKTsNCj4gKw0KPiArCXBlZjIyNTYtPm1jbGsgPSBkZXZt X2Nsa19nZXRfZW5hYmxlZCgmcGRldi0+ZGV2LCAibWNsayIpOw0KPiArCWlmIChJU19FUlIocGVm MjI1Ni0+bWNsaykpDQo+ICsJCXJldHVybiBQVFJfRVJSKHBlZjIyNTYtPm1jbGspOw0KPiArCWRl dl9kYmcocGVmMjI1Ni0+ZGV2LCAibWNsayAlbHUgSHpcbiIsIGNsa19nZXRfcmF0ZShwZWYyMjU2 LT5tY2xrKSk7DQo+ICsNCj4gKwkvKiBSZXNldCB0aGUgY29tcG9uZW50LiBUaGUgTUNMSyBjbG9j ayBtdXN0IGJlIGFjdGl2ZSBkdXJpbmcgcmVzZXQgKi8NCj4gKwlwZWYyMjU2LT5yZXNldF9ncGlv ID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoJnBkZXYtPmRldiwgInJlc2V0IiwgR1BJT0RfT1VU X0xPVyk7DQo+ICsJaWYgKElTX0VSUihwZWYyMjU2LT5yZXNldF9ncGlvKSkNCj4gKwkJcmV0dXJu IFBUUl9FUlIocGVmMjI1Ni0+cmVzZXRfZ3Bpbyk7DQo+ICsJaWYgKHBlZjIyNTYtPnJlc2V0X2dw aW8pIHsNCj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHBlZjIyNTYtPnJlc2V0X2dwaW8s IDEpOw0KPiArCQl1ZGVsYXkoMTApOw0KPiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocGVm MjI1Ni0+cmVzZXRfZ3BpbywgMCk7DQo+ICsJCXVkZWxheSgxMCk7DQo+ICsJfQ0KPiArDQo+ICsJ cGVmMjI1Ni0+dmVyc2lvbiA9IHBlZjIyNTZfZ2V0X3ZlcnNpb24ocGVmMjI1Nik7DQo+ICsJaWYg KHBlZjIyNTYtPnZlcnNpb24gPT0gUEVGMjI1Nl9WRVJTSU9OX1VOS05PV04pDQo+ICsJCXJldHVy biAtRU5PREVWOw0KPiArDQo+ICsJcmV0ID0gcGVmMjU1Nl9vZl9wYXJzZShwZWYyMjU2LCBucCk7 DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIERpc2FibGUgaW50 ZXJydXB0cyAqLw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfSU1SMCwgMHhm Zik7DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9JTVIxLCAweGZmKTsNCj4g KwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0lNUjIsIDB4ZmYpOw0KPiArCXBlZjIy NTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfSU1SMywgMHhmZik7DQo+ICsJcGVmMjI1Nl93cml0 ZTgocGVmMjI1NiwgUEVGMjI1Nl9JTVI0LCAweGZmKTsNCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYy MjU2LCBQRUYyMjU2X0lNUjUsIDB4ZmYpOw0KPiArDQo+ICsJLyogQ2xlYXIgYW55IHBlbmRpbmcg aW50ZXJydXB0cyAqLw0KPiArCXBlZjIyNTZfcmVhZDgocGVmMjI1NiwgUEVGMjI1Nl9JU1IwKTsN Cj4gKwlwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIFBFRjIyNTZfSVNSMSk7DQo+ICsJcGVmMjI1Nl9y ZWFkOChwZWYyMjU2LCBQRUYyMjU2X0lTUjIpOw0KPiArCXBlZjIyNTZfcmVhZDgocGVmMjI1Niwg UEVGMjI1Nl9JU1IzKTsNCj4gKwlwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIFBFRjIyNTZfSVNSNCk7 DQo+ICsJcGVmMjI1Nl9yZWFkOChwZWYyMjU2LCBQRUYyMjU2X0lTUjUpOw0KPiArDQo+ICsJaXJx ID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gKwlpZiAoaXJxIDwgMCkNCj4gKwkJcmV0 dXJuIGlycTsNCj4gKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKHBlZjIyNTYtPmRldiwgaXJxLCBw ZWYyMjU2X2lycV9oYW5kbGVyLCAwLCAicGVmMjI1NiIsIHBlZjIyNTYpOw0KPiArCWlmIChyZXQg PCAwKQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJcGVmMjI1Nl9yZXNldF9waW5tdXgocGVm MjI1Nik7DQo+ICsJcmV0ID0gcGVmMjI1Nl9yZWdpc3Rlcl9waW5jdHJsKHBlZjIyNTYpOw0KPiAr CWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkvKg0KPiArCSAqIFdlIGFyZSBn b2luZyB0byByZXNldCB0aGUgRTEgbGluZXMgZHVyaW5nIHNldHVwKCkgY2FsbCBhbmQgdGhlIElT UjINCj4gKwkgKiBpbnRlcnJ1cHQgdXNlZCB0byBkZXRlY3QgdGhlIGNhcnJpZXIgc3RhdGUgY2hh bmdlZCBpcyBtYXNrZWQuDQo+ICsJICogSXQgaXMgdGltZSB0byBpbml0aWFsaXplIG91ciBpbnRl cm5hbCBjYXJyaWVyIHN0YXRlIGZsYWcuDQo+ICsJICovDQo+ICsJcGVmMjI1Ni0+aXNfY2Fycmll cl9vbiA9IGZhbHNlOw0KPiArDQo+ICsJcmV0ID0gcGVmMjI1Nl9zZXR1cChwZWYyMjU2KTsNCj4g KwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJcGxhdGZvcm1fc2V0X2RydmRh dGEocGRldiwgcGVmMjI1Nik7DQo+ICsNCj4gKwlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJnBl ZjIyNTYtPmRldi0+a29iaiwgJnBlZjIyNTZfYXR0cmlidXRlX2dyb3VwKTsNCj4gKwlpZiAocmV0 IDwgMCkgew0KPiArCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgInN5c2ZzIHJlZ2lzdHJhdGlvbiBm YWlsZWQgKCVkKVxuIiwgcmV0KTsNCj4gKwkJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVM TCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1Nl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiA9IHBsYXRmb3JtX2dldF9k cnZkYXRhKHBkZXYpOw0KPiArDQo+ICsJLyogRGlzYWJsZSBpbnRlcnJ1cHRzICovDQo+ICsJcGVm MjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9JTVIwLCAweGZmKTsNCj4gKwlwZWYyMjU2X3dy aXRlOChwZWYyMjU2LCBQRUYyMjU2X0lNUjEsIDB4ZmYpOw0KPiArCXBlZjIyNTZfd3JpdGU4KHBl ZjIyNTYsIFBFRjIyNTZfSU1SMiwgMHhmZik7DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1Niwg UEVGMjI1Nl9JTVIzLCAweGZmKTsNCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2 X0lNUjQsIDB4ZmYpOw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfSU1SNSwg MHhmZik7DQo+ICsNCj4gKwlzeXNmc19yZW1vdmVfZ3JvdXAoJnBlZjIyNTYtPmRldi0+a29iaiwg JnBlZjIyNTZfYXR0cmlidXRlX2dyb3VwKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBwZWYyMjU2X2lkX3RhYmxlW10g PSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJsYW50aXEscGVmMjI1NiIgfSwNCj4gKwl7fSAvKiBz ZW50aW5lbCAqLw0KPiArfTsNCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHBlZjIyNTZfaWRf dGFibGUpOw0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBwZWYyMjU2X2Ry aXZlciA9IHsNCj4gKwkuZHJpdmVyID0gew0KPiArCQkubmFtZSA9ICJsYW50aXEtcGVmMjI1NiIs DQo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihwZWYyMjU2X2lkX3RhYmxlKSwN Cj4gKwl9LA0KPiArCS5wcm9iZSA9IHBlZjIyNTZfcHJvYmUsDQo+ICsJLnJlbW92ZSA9IHBlZjIy NTZfcmVtb3ZlLA0KPiArfTsNCj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocGVmMjI1Nl9kcml2 ZXIpOw0KPiArDQo+ICtzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1Nl9nZXRfYnlwaGFuZGxlKHN0cnVj dCBkZXZpY2Vfbm9kZSAqbnAsIGNvbnN0IGNoYXIgKnBoYW5kbGVfbmFtZSkNCj4gK3sNCj4gKwlz dHJ1Y3QgZGV2aWNlX25vZGUgKnBlZjIyNTZfbnA7DQo+ICsJc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldjsNCj4gKwlzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NjsNCj4gKw0KPiArCXBlZjIyNTZf bnAgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCBwaGFuZGxlX25hbWUsIDApOw0KPiArCWlmICghcGVm MjI1Nl9ucCkNCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQo+ICsNCj4gKwlpZiAoIW9m X21hdGNoX25vZGUocGVmMjI1Nl9kcml2ZXIuZHJpdmVyLm9mX21hdGNoX3RhYmxlLCBwZWYyMjU2 X25wKSkgew0KPiArCQlvZl9ub2RlX3B1dChwZWYyMjU2X25wKTsNCj4gKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7DQo+ICsJfQ0KPiArDQo+ICsJcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25v ZGUocGVmMjI1Nl9ucCk7DQo+ICsJb2Zfbm9kZV9wdXQocGVmMjI1Nl9ucCk7DQo+ICsJaWYgKCFw ZGV2KQ0KPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsNCj4gKw0KPiArCXBlZjIyNTYgPSBw bGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gKwlpZiAoIXBlZjIyNTYpIHsNCj4gKwkJcGxh dGZvcm1fZGV2aWNlX3B1dChwZGV2KTsNCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZF Uik7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIHBlZjIyNTY7DQo+ICt9DQo+ICtFWFBPUlRfU1lN Qk9MKHBlZjIyNTZfZ2V0X2J5cGhhbmRsZSk7DQo+ICsNCj4gK3ZvaWQgcGVmMjI1Nl9wdXQoc3Ry dWN0IHBlZjIyNTYgKnBlZjIyNTYpDQo+ICt7DQo+ICsJcHV0X2RldmljZShwZWYyMjU2LT5kZXYp Ow0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTChwZWYyMjU2X3B1dCk7DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIGRldm1fcGVmMjI1Nl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKQ0K PiArew0KPiArCXN0cnVjdCBwZWYyMjU2ICoqcGVmMjI1NiA9IHJlczsNCj4gKw0KPiArCXBlZjIy NTZfcHV0KCpwZWYyMjU2KTsNCj4gK30NCj4gKw0KPiArc3RydWN0IHBlZjIyNTYgKmRldm1fcGVm MjI1Nl9nZXRfYnlwaGFuZGxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2Rl ICpucCwNCj4gKwkJCQkJICAgY29uc3QgY2hhciAqcGhhbmRsZV9uYW1lKQ0KPiArew0KPiArCXN0 cnVjdCBwZWYyMjU2ICpwZWYyMjU2Ow0KPiArCXN0cnVjdCBwZWYyMjU2ICoqZHI7DQo+ICsNCj4g KwlkciA9IGRldnJlc19hbGxvYyhkZXZtX3BlZjIyNTZfcmVsZWFzZSwgc2l6ZW9mKCpkciksIEdG UF9LRVJORUwpOw0KPiArCWlmICghZHIpDQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0K PiArDQo+ICsJcGVmMjI1NiA9IHBlZjIyNTZfZ2V0X2J5cGhhbmRsZShucCwgcGhhbmRsZV9uYW1l KTsNCj4gKwlpZiAoIUlTX0VSUihwZWYyMjU2KSkgew0KPiArCQkqZHIgPSBwZWYyMjU2Ow0KPiAr CQlkZXZyZXNfYWRkKGRldiwgZHIpOw0KPiArCX0gZWxzZSB7DQo+ICsJCWRldnJlc19mcmVlKGRy KTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gcGVmMjI1NjsNCj4gK30NCj4gK0VYUE9SVF9TWU1C T0woZGV2bV9wZWYyMjU2X2dldF9ieXBoYW5kbGUpOw0KPiArDQo+ICtpbnQgcGVmMjI1Nl9yZWdp c3Rlcl9ldmVudF9ub3RpZmllcihzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1Niwgc3RydWN0IG5vdGlm aWVyX2Jsb2NrICpuYikNCj4gK3sNCj4gKwlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3Jl Z2lzdGVyKCZwZWYyMjU2LT5ldmVudF9ub3RpZmllcl9saXN0LCBuYik7DQo+ICt9DQo+ICtFWFBP UlRfU1lNQk9MX0dQTChwZWYyMjU2X3JlZ2lzdGVyX2V2ZW50X25vdGlmaWVyKTsNCj4gKw0KPiAr aW50IHBlZjIyNTZfdW5yZWdpc3Rlcl9ldmVudF9ub3RpZmllcihzdHJ1Y3QgcGVmMjI1NiAqcGVm MjI1Niwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikNCj4gK3sNCj4gKwlyZXR1cm4gYXRvbWlj X25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJnBlZjIyNTYtPmV2ZW50X25vdGlmaWVyX2xpc3Qs IG5iKTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKHBlZjIyNTZfdW5yZWdpc3Rlcl9ldmVu dF9ub3RpZmllcik7DQo+ICsNCj4gK2Jvb2wgcGVmMjI1Nl9nZXRfY2FycmllcihzdHJ1Y3QgcGVm MjI1NiAqcGVmMjI1NikNCj4gK3sNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiArCWJvb2wg aXNfY2Fycmllcl9vbjsNCj4gKw0KPiArCXNwaW5fbG9ja19pcnFzYXZlKCZwZWYyMjU2LT5sb2Nr LCBmbGFncyk7DQo+ICsJaXNfY2Fycmllcl9vbiA9IHBlZjIyNTYtPmlzX2NhcnJpZXJfb247DQo+ ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGVmMjI1Ni0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ ICsJcmV0dXJuIGlzX2NhcnJpZXJfb247DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChwZWYy MjU2X2dldF9jYXJyaWVyKTsNCj4gKw0KPiArTU9EVUxFX0FVVEhPUigiSGVydmUgQ29kaW5hIDxo ZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20+Iik7DQo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlBFRjIy NTYgZHJpdmVyIik7DQo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7DQo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L3BlZjIyNTYuaCBiL2luY2x1ZGUvbGludXgvcGVmMjI1Ni5oDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNmM4ZDE3MzU5NWIxDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvaW5jbHVkZS9saW51eC9wZWYyMjU2LmgNCj4gQEAgLTAsMCAr MSwzNiBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIg Ki8NCj4gKy8qDQo+ICsgKiBQRUYyMjU2IG1hbmFnZW1lbnQNCj4gKyAqDQo+ICsgKiBDb3B5cmln aHQgMjAyMyBDUyBHUk9VUCBGcmFuY2UNCj4gKyAqDQo+ICsgKiBBdXRob3I6IEhlcnZlIENvZGlu YSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPg0KPiArICovDQo+ICsjaWZuZGVmIF9fUEVGMjI1 Nl9IX18NCj4gKyNkZWZpbmUgX19QRUYyMjU2X0hfXw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgv dHlwZXMuaD4NCj4gKw0KPiArc3RydWN0IHBlZjIyNTY7DQo+ICtzdHJ1Y3QgZGV2aWNlX25vZGU7 DQo+ICtzdHJ1Y3QgZGV2aWNlOw0KPiArc3RydWN0IG5vdGlmaWVyX2Jsb2NrOw0KPiArDQo+ICtz dHJ1Y3QgcGVmMjI1NiAqcGVmMjI1Nl9nZXRfYnlwaGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAq bnAsIGNvbnN0IGNoYXIgKnBoYW5kbGVfbmFtZSk7DQo+ICt2b2lkIHBlZjIyNTZfcHV0KHN0cnVj dCBwZWYyMjU2ICpwZWYyMjU2KTsNCj4gK3N0cnVjdCBwZWYyMjU2ICpkZXZtX3BlZjIyNTZfZ2V0 X2J5cGhhbmRsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsDQo+ ICsJCQkJCSAgIGNvbnN0IGNoYXIgKnBoYW5kbGVfbmFtZSk7DQo+ICsNCj4gKw0KPiArZW51bSBw ZWYyMjU2X2V2ZW50IHsNCj4gKwlQRUYyMjU2X0VWRU5UX0NBUlJJRVIsIC8qIENhcnJpZXIgc3Rh dGUgY2hhbmdlZCAqLw0KPiArfTsNCj4gKw0KPiArLyogVGhlIG5iLm5vdGlmaWVyX2NhbGwgZnVu Y3Rpb24gcmVnaXN0ZXJlZCBtdXN0IG5vdCBzbGVlcCAqLw0KPiAraW50IHBlZjIyNTZfcmVnaXN0 ZXJfZXZlbnRfbm90aWZpZXIoc3RydWN0IHBlZjIyNTYgKnBlZjIyNTYsIHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmIpOw0KPiAraW50IHBlZjIyNTZfdW5yZWdpc3Rlcl9ldmVudF9ub3RpZmllcihz dHJ1Y3QgcGVmMjI1NiAqcGVmMjI1Niwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7DQo+ICsN Cj4gKy8qIFJldHJpZXZlIGNhcnJpZXIgc3RhdGUuIHRydWU6IGNhcnJpZXIgb24sIGZhbHNlOiBj YXJyaWVyIG9mZiAqLw0KPiArYm9vbCBwZWYyMjU2X2dldF9jYXJyaWVyKHN0cnVjdCBwZWYyMjU2 ICpwZWYyMjU2KTsNCj4gKw0KPiArI2VuZGlmIC8qIF9fUEVGMjI1Nl9IX18gKi8NCg==