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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 713A6C61DA4 for ; Wed, 22 Feb 2023 03:38:14 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PM21J4kL8z3bNj for ; Wed, 22 Feb 2023 14:38:12 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=aspeedtech.com header.i=@aspeedtech.com header.a=rsa-sha256 header.s=selector1 header.b=EH1E77dU; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=aspeedtech.com (client-ip=2a01:111:f403:704b::708; helo=apc01-tyz-obe.outbound.protection.outlook.com; envelope-from=ryan_chen@aspeedtech.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=aspeedtech.com header.i=@aspeedtech.com header.a=rsa-sha256 header.s=selector1 header.b=EH1E77dU; dkim-atps=neutral Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on20708.outbound.protection.outlook.com [IPv6:2a01:111:f403:704b::708]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PM20758dkz2yw0; Wed, 22 Feb 2023 14:37:10 +1100 (AEDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hfZa3FQUtE3iHysKVtOPbdPnunJz/hVS2k1pfzKRbFpECOVAXIAWs/Ffj7i91Zy0en9UxaWYvlICY5jjZLU61F/VjT8pC6o8fEIsFLq4IofTJH7wYgA7QfFo3h9oh7sILWGo20u2KZXYApIN1QUzdlMUhI4rd4DSwDjCCxZ94kcCSmbIR9xJNyM/ChaF1knZNFxMw97sA0dpTphDs0mSUMtlOWMjz/Xhxpmq1bB9jCUp0UaY4NVI4hi/YOF5eouGx92IxnbiyGeXhjIn+Ag+nlfu7d3+h3JvGXB1rpSd6SaY2qhvq0ANWE7klUAHyLeNWl9rM27a7QQJFBAjFIQGZQ== 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=4ggwhd3Ouv7gTVkjDUUDad1dd/hki017bDVS2KgAcJg=; b=Aq+VqC8pA4O0djiZGzPuYPcwgSKxVszu9EeqLupRkjYeA/bnHcizPMo60ChHAq6Si/k0t8mLUmHR4ZqfZMf2kLHCSLO2ptTLOyyNBWTCEkY/H7C3paLB1aJNjtNdiKl4OmqPj3kRBG/iYWJ3dRZZTzte/iKyLRC1LwX8g4RcxRhL5JxRyDjxktj9IVXklMG/cjJqAXsitVtugSshc4zkp0a4WYF4MRrzvX9YIZHaCRKdbXU5NDDdcSTpYFBpey1T0E5RqSo1gHmVbQb1cIZe7wXtk6GFPiNRcVJiSdPiHoL+c1lPCOVzWWXduX5hIYVp0i6+ahjY5GzfMs7zFDGfkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ggwhd3Ouv7gTVkjDUUDad1dd/hki017bDVS2KgAcJg=; b=EH1E77dUYyl09BR42W41sg8urJC0upEakSdlD4YKzqfAdX6x6iMA1hBLDE/xosAdIXA2XT9I/TliwFMYIYcJMC0ShIuNIFEuP0yM2PhVA8xf1ejswoa5gNsqAsNB4I2Trrsxgh9DA+YmfWf1xitC18gyMM4oXLXS5gKEGyZsbjTJoGiMh6ds3INYnt9gVmt1armRDcoGr8KHCaWw2askFsY2k9zGFt+zClVo/xMTuHTF7SqtbuAjifSvz4v5gKdtKAZvbB/rucn7C4iSMBFGEe5t9ztboXC+LDSj8pYwxORt5pJtcEB2QO4UYigKqhh/q4Smgq3DFcLdZEoM3bn5Bg== Received: from SEZPR06MB5269.apcprd06.prod.outlook.com (2603:1096:101:78::6) by PSAPR06MB4198.apcprd06.prod.outlook.com (2603:1096:301:3e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.19; Wed, 22 Feb 2023 03:36:50 +0000 Received: from SEZPR06MB5269.apcprd06.prod.outlook.com ([fe80::daf6:5ebb:a93f:1869]) by SEZPR06MB5269.apcprd06.prod.outlook.com ([fe80::daf6:5ebb:a93f:1869%9]) with mapi id 15.20.6111.010; Wed, 22 Feb 2023 03:36:49 +0000 From: Ryan Chen To: Krzysztof Kozlowski , Rob Herring , Krzysztof Kozlowski , Joel Stanley , Andrew Jeffery , Philipp Zabel , "openbmc@lists.ozlabs.org" , "linux-arm-kernel@lists.infradead.org" , "linux-aspeed@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v5 2/2] i2c: aspeed: support ast2600 i2cv2 new register mode driver Thread-Topic: [PATCH v5 2/2] i2c: aspeed: support ast2600 i2cv2 new register mode driver Thread-Index: AQHZRPMRywH1bqUtTEmyVqt5fP7yF67XhPmAgALHOPA= Date: Wed, 22 Feb 2023 03:36:49 +0000 Message-ID: References: <20230220061745.1973981-1-ryan_chen@aspeedtech.com> <20230220061745.1973981-3-ryan_chen@aspeedtech.com> <63986fb1-f8d4-f348-bae9-72e08369213b@linaro.org> In-Reply-To: <63986fb1-f8d4-f348-bae9-72e08369213b@linaro.org> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=aspeedtech.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SEZPR06MB5269:EE_|PSAPR06MB4198:EE_ x-ms-office365-filtering-correlation-id: e0101894-fd57-4172-e499-08db14860824 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iCihVSDZXEZHFN6BQjeMG+g8SFzbJRNGG/cUX8DzlCTDUkZgoE3rBAG0zNJi2Lv5iQZZAaLX5Y1K1Nt2XHnSOylGVOK8ZKKF9Ydf8vlWscjmCEiUaiVxSa8fV2tMCsVdeCQ2s1x05qfKlE7rD8kMAtoneQqmtrZoi0n5FEDQbGSuvllMz6+zCr/SGrAWRn1M5dvTwXz/gl+Nf08gMxVsA2wbYIlXt3u6L6LGXawRWs5Pq3X8fjCVsRYdhTNaH8VgZFdjq929fQWjzPWdDmwowqnYPg0heiVemgnPQKF9XZhGrXIYIZew8bHsL4FNHY0kTn9N0YTWekPAi98p2exM86SnZQllT0WA6qTGs8h2msZMaubpdWC7CKQXnASqd8lOay6Kksnmz7t2mshDdoQrUexEE/LszupLyzawIHQaIvCMS5N5YmDMEeq9aUS8OK09F5+9jKkWugoqUJCsph6xqx7xr2RIwkv7nxChgh7ikf7TuUZrpZpRi8Q7KU7qX5rRhhyX57vSa3OCyh3TU0LPtJsYrTmgvXp5Zah9XcZHhpqm5Bmh4vSZ6+0YT846Q26RbEuaZemowNuxpnnwFyLN2mZHCQtJHiglWv/bsidQs57t+bYTtRv1386mAoyt4adcerX27zqncoW3bmGJAUXnn2TY6zJL/lGg3lsV0uOBxicrYmb6zLNMu9p/5KN9n3ALj+OSHD7CCaAInnjUDUMPUNotLgnfKFkjPP5Yb93yqeY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB5269.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(346002)(366004)(136003)(376002)(39840400004)(396003)(451199018)(83380400001)(122000001)(921005)(26005)(76116006)(66946007)(66556008)(66446008)(316002)(478600001)(64756008)(71200400001)(8676002)(66476007)(186003)(9686003)(6506007)(38070700005)(38100700002)(55016003)(86362001)(33656002)(2906002)(41300700001)(30864003)(8936002)(7416002)(52536014)(5660300002)(110136005)(7696005)(53546011)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QWRUaDFZZ0lwWEdOL3NtNnVWak1ZZ092Z202OEhjVG9Sb3MrcmtTTkhIMHpD?= =?utf-8?B?cmhDcFZlaHlob2dqN1BXVWNzT3BuT3FYeXRuRjhIMUNkVXF2T0NlRlVlRThP?= =?utf-8?B?aGVhS1dJc2ZKKzhaT0VpK2lxQ3RyQnVtYVlzTDlhU0ZncUZnNVN6Q1J5OVhr?= =?utf-8?B?a1hZM29ZYkRLV0pzWFhQcFI1bU45MzdGQUV1cnF4NUJ5eW5pMW1MalhkZGdV?= =?utf-8?B?Zkc0NEo2RTAvbUFnbkxSWU84UkF5aHFUYUdOS0lsaC8zcmlKeXo2YzJUYUNo?= =?utf-8?B?aWpiYk1NZ212ZlB6MGVpU0drRW1TK0hOSVlBNk9mMW9KMnNCdHZVWlpOQ2V3?= =?utf-8?B?bStyTEpjRHRBdzNEM280cW1BaEpYY0h3U2dGMTJVK2hYL3hDd3pzditreHNK?= =?utf-8?B?eWpienhMWTFBb3dXTllCbGg4cktXbExGU1pRMlh5WUVpNXJ2RDl4a2JPY3VL?= =?utf-8?B?T1FzU1ZYeTZnV3BNSGIxU1cyaExuY2RPeS9CSUlNSlpXSmsvVTUwZGZ5WXdm?= =?utf-8?B?K3Q5K0pGOFNPdUIvTlNxT0xrTHQ4N2ZzMnNWUk9KSjVvNFE1bEhLVmhrandP?= =?utf-8?B?WjkyZXJSYjFSY1R1c3RTZGphQ1Jyc3N2QTZwUVZLbEdsQmpzaXhpYlRmTEVR?= =?utf-8?B?WWh5NDZPbWsyUlNNenVvUlArYlYwSkpqZy8wZWJDbW41Tm9ZR0ZMRXFBWDEx?= =?utf-8?B?SXQvZ1lOZDNHKzlhdFJVNDJUbmsvRXJobWpoY0VBQWJaM2I5dyttNTY2RVVO?= =?utf-8?B?OS92UUEvL1BPWXhjdjZwMkgxNkphNSt4cmRUakZESDVTNXhvUVVWWUxvYmJV?= =?utf-8?B?c01wYmw2RkgzTkFIY0h0L2lNV0h3Zmc0OTJhaDJqQ0hESE1KRytPblY3eHJZ?= =?utf-8?B?aG4yWE9CZGpyR0d6VEc2VnE1T0UxWXlXdWdlWkJxdzNVZmhLQy9VVk9PZm1Z?= =?utf-8?B?elFmWmpCMkIyUlZld25ZdXNxWlE4ZnFpVlYzZ2dmT3B0SEhqcVFwajVXOFlu?= =?utf-8?B?Rm9RdG02NnFJQ2oyRm5pUDltT2pCeXRjUEwzQjJ4ZVVHY3M5NjJTdXlXZ25W?= =?utf-8?B?S1lJR2hMOHI3VGNKWk5jd0FZaDdJc1A0T1ZvREpUVGdLTTdkNG13NDFvQ1Nx?= =?utf-8?B?WVBDdXEwQk1qbjFjS2pIZVRkbXBneGExSXN6QlpVRmVYVUllV1plK0tNKzd2?= =?utf-8?B?azE5RDY4YWdUU242eC9maG5VSmx5RUYybTBxU1JhamlaNWRhT2I0MXp3azNk?= =?utf-8?B?VTE4b1RTSVcxWlJSbHBZeUZnK3d0M1hxQWZOVDB6c3BYSEpBazh5Q0hhOHE2?= =?utf-8?B?YkVRNmVzaG5OQ3doYWRoRmlLV2doaUdSYW5RRGJxR0hnV0NUbmJEeXAyaEtt?= =?utf-8?B?MXZici8wdlQ3WU5pTUtRcDZzcGtLU3dTY2xEaE9iVlpBQXRMdVhrRkhKNjVH?= =?utf-8?B?Z2tBN0tUN090dVB1TzdqY0MyQzJyNWNLcGJEbWFWNmtUdUQwaWIzenBTSTJW?= =?utf-8?B?aGxBZ3lrOXA1Qk5HNFROY3BTY1VMdnEwMUk0NU9NTDl2eTIwcnRRcFpqOXZt?= =?utf-8?B?cmN6bDdVenhtY1piVm5yR3BEMTlUemFkYVNqcUJDSjYwQzZEOUdyaFpSWGxV?= =?utf-8?B?M0YwdnFRY2dWdXhTbmFycXB4MnFQc3lEWWdncWc3emNpSXlObHZsTHU2TWlq?= =?utf-8?B?dDd1V1IvTk9zcHJad245Z2Y4UVAybkJQUDdmbTZCR0ZqZlFqT3FFeWtvMW81?= =?utf-8?B?bWJmTWxjT2crTVRMV0NmSWRVNjQwUEhGRHFnR1EzNlJiU2o4VUJjQ3NZVUgy?= =?utf-8?B?bStoUFJOeFBXeVI3aVVCOSsxRCtkRmZiS09ZMTV6ZVVmTGFDVVVVbS8wWmV0?= =?utf-8?B?alJoMzYwRkFEamlrMVlBVFhQMmc3TjNOakV5b0loMmVPTWI4bXFURzJ1NXN6?= =?utf-8?B?NGxoNm1JU3RPZlRFOE9aR0UrWGkzc0ZlVEUzQUUyZ2xUd0Zld1crYXZJdmVU?= =?utf-8?B?N0VxS09nWmRNVlFTWU13SWpvdndiTWpOd0RMa0xja3l5ZXNPS2hFVzFsc1c0?= =?utf-8?B?M1hsOTEwK0ZuRUo3a1JjZmpUOXloMXlkS1ZCWGdxNDdWWEhZQlduTXpIREhB?= =?utf-8?Q?s5W3PTpvetcK0NsrBIBFFBHya?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB5269.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0101894-fd57-4172-e499-08db14860824 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2023 03:36:49.7241 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hmE15qAUSf4gntZ8TpvSnfXeEReqohnkywxkcgKvlUeyT1n/SL8bWZ8p22/uNv+y5M6YKYYeTKTtJXccy4HDOHIpfVF/nBuJzfT15C2IOMQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PSAPR06MB4198 X-BeenThere: openbmc@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development list for OpenBMC List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openbmc-bounces+openbmc=archiver.kernel.org@lists.ozlabs.org Sender: "openbmc" SGVsbG8gS3J6eXN6dG9mLA0KDQpSeWFuIENoZW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBLcnp5c3p0b2YgS296bG93c2tpIDxrcnp5c3p0b2Yua296bG93c2tpQGxp bmFyby5vcmc+DQo+IFNlbnQ6IE1vbmRheSwgRmVicnVhcnkgMjAsIDIwMjMgNDo0NCBQTQ0KPiBU bzogUnlhbiBDaGVuIDxyeWFuX2NoZW5AYXNwZWVkdGVjaC5jb20+OyBSb2IgSGVycmluZw0KPiA8 cm9iaCtkdEBrZXJuZWwub3JnPjsgS3J6eXN6dG9mIEtvemxvd3NraQ0KPiA8a3J6eXN6dG9mLmtv emxvd3NraStkdEBsaW5hcm8ub3JnPjsgSm9lbCBTdGFubGV5IDxqb2VsQGptcy5pZC5hdT47IEFu ZHJldw0KPiBKZWZmZXJ5IDxhbmRyZXdAYWouaWQuYXU+OyBQaGlsaXBwIFphYmVsIDxwLnphYmVs QHBlbmd1dHJvbml4LmRlPjsNCj4gb3BlbmJtY0BsaXN0cy5vemxhYnMub3JnOyBsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7DQo+IGxpbnV4LWFzcGVlZEBsaXN0cy5vemxhYnMu b3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg djUgMi8yXSBpMmM6IGFzcGVlZDogc3VwcG9ydCBhc3QyNjAwIGkyY3YyIG5ldyByZWdpc3Rlcg0K PiBtb2RlIGRyaXZlcg0KPiANCj4gT24gMjAvMDIvMjAyMyAwNzoxNywgUnlhbiBDaGVuIHdyb3Rl Og0KPiA+IEFkZCBpMmN2MiBuZXcgcmVnaXN0ZXIgbW9kZSBkcml2ZXIgdG8gc3VwcG9ydCBBU1Qy NjAwIGkyYyBuZXcgcmVnaXN0ZXINCj4gPiBtb2RlLiBBU1QyNjAwIGkyYyBjb250cm9sbGVyIGhh dmUgbGVnYWN5IGFuZCBuZXcgcmVnaXN0ZXIgbW9kZS4gVGhlDQo+ID4gbmV3IHJlZ2lzdGVyIG1v ZGUgaGF2ZSBnbG9iYWwgcmVnaXN0ZXIgc3VwcG9ydCA0IGJhc2UgY2xvY2sgZm9yIHNjbA0KPiA+ IGNsb2NrIHNlbGVjdGlvbiwgYW5kIG5ldyBjbG9jayBkaXZpZGVyIG1vZGUuIFRoZSBpMmMgbmV3 IHJlZ2lzdGVyIG1vZGUNCj4gPiBoYXZlIHNlcGFyYXRlIHJlZ2lzdGVyIHNldCB0byBjb250cm9s IGkyYyBtYXN0ZXIgYW5kIHNsYXZlLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUnlhbiBDaGVu IDxyeWFuX2NoZW5AYXNwZWVkdGVjaC5jb20+DQo+ID4gLS0tDQo+ID4gIE1BSU5UQUlORVJTICAg ICAgICAgICAgICAgICAgICAgIHwgICAgOSArDQo+ID4gIGRyaXZlcnMvaTJjL2J1c3Nlcy9LY29u ZmlnICAgICAgIHwgICAxMSArDQo+ID4gIGRyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZSAgICAg IHwgICAgMSArDQo+ID4gIGRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYXN0MjYwMC5jIHwgMTcwMw0K PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICA0IGZpbGVzIGNoYW5nZWQs IDE3MjQgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9pMmMv YnVzc2VzL2kyYy1hc3QyNjAwLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBi L01BSU5UQUlORVJTIGluZGV4DQo+ID4gNzQ5NzEwZTIyYjRkLi5jOTg0MTU2OGNiMjQgMTAwNjQ0 DQo+ID4gLS0tIGEvTUFJTlRBSU5FUlMNCj4gPiArKysgYi9NQUlOVEFJTkVSUw0KPiA+IEBAIC0x OTI0LDYgKzE5MjQsMTUgQEAgRjoNCj4gCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9pbnRlcnJ1cHQtY29udHJvbGxlci9hc3BlZWQsYXN0MjQwMC0NCj4gaTJjLWljLg0KPiA+ICBG Oglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFzcGVlZC5jDQo+ID4gIEY6CWRyaXZlcnMvaXJxY2hp cC9pcnEtYXNwZWVkLWkyYy1pYy5jDQo+ID4NCj4gPiArQVJNL0FTUEVFRCBJMkNWMiBEUklWRVIN Cj4gPiArTTogICAgICBSeWFuIENoZW4gPHJ5YW5fY2hlbkBhc3BlZWR0ZWNoLmNvbT4NCj4gPiAr UjogICAgICBBbmRyZXcgSmVmZmVyeSA8YW5kcmV3QGFqLmlkLmF1Pg0KPiA+ICtMOiAgICAgIGxp bnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiArTDogICAgICBvcGVuYm1jQGxpc3RzLm96bGFi cy5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQ0KPiA+ICtTOiAgICAgIE1haW50 YWluZWQNCj4gPiArRjogICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJj L2FzcGVlZCxpMmN2Mi55YW1sDQo+ID4gK0Y6ICAgICAgZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1h c3QyNjAwLmMNCj4gPiArDQo+ID4gIEFSTS9BU1BFRUQgTUFDSElORSBTVVBQT1JUDQo+ID4gIE06 CUpvZWwgU3RhbmxleSA8am9lbEBqbXMuaWQuYXU+DQo+ID4gIFI6CUFuZHJldyBKZWZmZXJ5IDxh bmRyZXdAYWouaWQuYXU+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9LY29u ZmlnIGIvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcNCj4gPiBpbmRleCA3Mjg0MjA2YjI3OGIu LmYzZjc1MDBjZTc2OCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZp Zw0KPiA+ICsrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnDQo+ID4gQEAgLTM4OSw2ICsz ODksMTcgQEAgY29uZmlnIEkyQ19BTFRFUkENCj4gPiAgCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28g YmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQ0KPiA+ICAJICB3aWxsIGJl IGNhbGxlZCBpMmMtYWx0ZXJhLg0KPiA+DQo+ID4gK2NvbmZpZyBJMkNfQVNUMjYwMA0KPiA+ICsJ dHJpc3RhdGUgIkFzcGVlZCBJMkMgdjIgQ29udHJvbGxlciINCj4gPiArCWRlcGVuZHMgb24gQVJD SF9BU1BFRUQgfHwgQ09NUElMRV9URVNUDQo+ID4gKwlzZWxlY3QgSTJDX1NNQlVTDQo+ID4gKwlo ZWxwDQo+ID4gKwkgIElmIHlvdSBzYXkgeWVzIHRvIHRoaXMgb3B0aW9uLCBzdXBwb3J0IHdpbGwg YmUgaW5jbHVkZWQgZm9yIHRoZQ0KPiA+ICsJICBBc3BlZWQgSTJDIGNvbnRyb2xsZXIgd2l0aCBu ZXcgcmVnaXN0ZXIgc2V0Lg0KPiA+ICsNCj4gPiArCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUg YnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQ0KPiA+ICsJICB3aWxsIGJlIGNh bGxlZCBpMmMtbmV3LWFzcGVlZC4NCj4gPiArDQo+ID4gIGNvbmZpZyBJMkNfQVNQRUVEDQo+ID4g IAl0cmlzdGF0ZSAiQXNwZWVkIEkyQyBDb250cm9sbGVyIg0KPiA+ICAJZGVwZW5kcyBvbiBBUkNI X0FTUEVFRCB8fCBDT01QSUxFX1RFU1QgZGlmZiAtLWdpdA0KPiA+IGEvZHJpdmVycy9pMmMvYnVz c2VzL01ha2VmaWxlIGIvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlIGluZGV4DQo+ID4gYzVj YWMxNWYwNzVjLi5kMGFiNGQ0NTc4MWMgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9pMmMvYnVz c2VzL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlDQo+ID4g QEAgLTM4LDYgKzM4LDcgQEAgb2JqLSQoQ09ORklHX0kyQ19QT1dFUk1BQykJKz0gaTJjLXBvd2Vy bWFjLm8NCj4gPiAgb2JqLSQoQ09ORklHX0kyQ19BTFRFUkEpCSs9IGkyYy1hbHRlcmEubw0KPiA+ ICBvYmotJChDT05GSUdfSTJDX0FNRF9NUDIpCSs9IGkyYy1hbWQtbXAyLXBjaS5vDQo+IGkyYy1h bWQtbXAyLXBsYXQubw0KPiA+ICBvYmotJChDT05GSUdfSTJDX0FTUEVFRCkJKz0gaTJjLWFzcGVl ZC5vDQo+ID4gK29iai0kKENPTkZJR19JMkNfQVNUMjYwMCkJKz0gaTJjLWFzdDI2MDAubw0KPiA+ ICBvYmotJChDT05GSUdfSTJDX0FUOTEpCQkrPSBpMmMtYXQ5MS5vDQo+ID4gIGkyYy1hdDkxLW9i anMJCQk6PSBpMmMtYXQ5MS1jb3JlLm8gaTJjLWF0OTEtbWFzdGVyLm8NCj4gPiAgaWZlcSAoJChD T05GSUdfSTJDX0FUOTFfU0xBVkVfRVhQRVJJTUVOVEFMKSx5KQ0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2kyYy9idXNzZXMvaTJjLWFzdDI2MDAuYw0KPiA+IGIvZHJpdmVycy9pMmMvYnVzc2Vz L2kyYy1hc3QyNjAwLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAwMDAwMC4uYjVmZTBhZjU3ZDExDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZl cnMvaTJjL2J1c3Nlcy9pMmMtYXN0MjYwMC5jDQo+ID4gQEAgLTAsMCArMSwxNzAzIEBADQo+ID4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArLyoNCj4gPiAr ICogQVNQRUVEIEFTVDI2MDAgbmV3IHJlZ2lzdGVyIHNldCBJMkMgY29udHJvbGxlciBkcml2ZXIN Cj4gPiArICoNCj4gPiArICogQ29weXJpZ2h0IChDKSBBU1BFRUQgVGVjaG5vbG9neSBJbmMuDQo+ ID4gKyAqLw0KPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9lcnIuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvaW8uaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2RlbGF5Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4g PiArI2luY2x1ZGUgPGxpbnV4L2NvbXBsZXRpb24uaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29m Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4 L21mZC9zeXNjb24uaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGlu Zy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaTJjLXNtYnVzLmg+DQo+ID4gKw0KPiA+ICsvKg0K PiA+ICsgKiBBUEIgY2xrIDogMTAwTWh6DQo+ID4gKyAqIGRpdgk6IHNjbAkJOiBiYXNlY2xrIFtB UEIvKChkaXYvMikgKyAxKV0gOiB0QnVmIFsxL2JjbGsgKiAxNl0NCj4gPiArICogSTJDRzEwWzMx OjI0XSBiYXNlIGNsazQgZm9yIGkyYyBhdXRvIHJlY292ZXJ5IHRpbWVvdXQgY291bnRlcg0KPiA+ ICsoMHhDNikNCj4gPiArICogSTJDRzEwWzIzOjE2XSBiYXNlIGNsazMgZm9yIFN0YW5kYXJkLW1v ZGUgKDEwMEtoeikgbWluIHRCdWYgNC43dXMNCj4gPiArICogMHgzYyA6IDEwMC44S2h6CTogMy4y MjVNaHoJCQkJCSAgOiA0Ljk2dXMNCj4gPiArICogMHgzZCA6IDk5LjJLaHoJOiAzLjE3NE1oegkJ CQkJICA6IDUuMDR1cw0KPiA+ICsgKiAweDNlIDogOTcuNjVLaHoJOiAzLjEyNU1oegkJCQkJICA6 IDUuMTJ1cw0KPiA+ICsgKiAweDQwIDogOTcuNzVLaHoJOiAzLjAzTWh6CQkJCQkgIDogNS4yOHVz DQo+ID4gKyAqIDB4NDEgOiA5OS41S2h6CTogMi45OE1oegkJCQkJICA6IDUuMzZ1cyAoZGVmYXVs dCkNCj4gPiArICogSTJDRzEwWzE1OjhdIGJhc2UgY2xrMiBmb3IgRmFzdC1tb2RlICg0MDBLaHop IG1pbiB0QnVmIDEuM3VzDQo+ID4gKyAqIDB4MTIgOiA0MDBLaHoJOiAxME1oegkJCQkJCSAgOiAx LjZ1cw0KPiA+ICsgKiBJMkNHMTBbNzowXSBiYXNlIGNsazEgZm9yIEZhc3QtbW9kZSBQbHVzICgx TWh6KSBtaW4gdEJ1ZiAwLjV1cw0KPiA+ICsgKiAweDA4IDogMU1oegkJOiAyME1oegkJCQkJCSAg OiAwLjh1cw0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ0dfSVNSCQkJMHgwMA0K PiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDR19TTEFWRV9JU1IJCTB4MDQNCj4gPiArI2RlZmluZSBB U1QyNjAwX0kyQ0dfT1dORVIJCTB4MDgNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ0dfQ1RSTAkJ MHgwQw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDR19DTEtfRElWX0NUUkwJMHgxMA0KPiA+ICsN Cj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ0dfU0xBVkVfUEtUX05BSwlCSVQoNCkNCj4gPiArI2Rl ZmluZSBBU1QyNjAwX0kyQ0dfTV9TX1NFUEFSQVRFX0lOVFIJQklUKDMpDQo+ID4gKyNkZWZpbmUg QVNUMjYwMF9JMkNHX0NUUkxfTkVXX1JFRwlCSVQoMikNCj4gPiArI2RlZmluZSBBU1QyNjAwX0ky Q0dfQ1RSTF9ORVdfQ0xLX0RJVglCSVQoMSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9H TE9CQUxfSU5JVAkJCQlcDQo+ID4gKwkJCShBU1QyNjAwX0kyQ0dfQ1RSTF9ORVdfUkVHIHwJXA0K PiA+ICsJCQlBU1QyNjAwX0kyQ0dfQ1RSTF9ORVdfQ0xLX0RJVikNCj4gPiArI2RlZmluZSBJMkND R19ESVZfQ1RSTCAweEM2NDExMjA4DQo+ID4gKw0KPiA+ICsvKiAweDAwIDogSTJDQyBNYXN0ZXIv U2xhdmUgRnVuY3Rpb24gQ29udHJvbCBSZWdpc3RlciAgKi8NCj4gPiArI2RlZmluZSBBU1QyNjAw X0kyQ0NfRlVOX0NUUkwJCTB4MDANCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ0NfU0xBVkVfQURE Ul9SWF9FTgkJQklUKDIwKQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19NQVNURVJfUkVUUllf TUFTSwkJR0VOTUFTSygxOSwgMTgpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX01BU1RFUl9S RVRSWSh4KQkJKCgoeCkgJiBHRU5NQVNLKDEsIDApKQ0KPiA8PCAxOCkNCj4gPiArI2RlZmluZSBB U1QyNjAwX0kyQ0NfQlVTX0FVVE9fUkVMRUFTRQkJQklUKDE3KQ0KPiA+ICsjZGVmaW5lIEFTVDI2 MDBfSTJDQ19NX1NEQV9MT0NLX0VOCQkJQklUKDE2KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJD Q19NVUxUSV9NQVNURVJfRElTCQlCSVQoMTUpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX01f U0NMX0RSSVZFX0VOCQkJQklUKDE0KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19NU0JfU1RT CQkJCUJJVCg5KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19TREFfRFJJVkVfMVRfRU4JCUJJ VCg4KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19NX1NEQV9EUklWRV8xVF9FTgkJQklUKDcp DQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX01fSElHSF9TUEVFRF9FTgkJQklUKDYpDQo+ID4g Ky8qIHJlc2VydmVyIDUgOiAyICovDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX1NMQVZFX0VO CQkJQklUKDEpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX01BU1RFUl9FTgkJCUJJVCgwKQ0K PiA+ICsNCj4gPiArLyogMHgwNCA6IEkyQ0MgTWFzdGVyL1NsYXZlIENsb2NrIGFuZCBBQyBUaW1p bmcgQ29udHJvbCBSZWdpc3RlciAjMSAqLw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19BQ19U SU1JTkcJCTB4MDQNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ0NfVFRJTUVPVVQoeCkJCQkoKCh4 KSAmIEdFTk1BU0soNCwgMCkpDQo+IDw8IDI0KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19U Q0tISUdITUlOKHgpCQkJKCgoeCkgJiBHRU5NQVNLKDMsIDApKQ0KPiA8PCAyMCkNCj4gPiArI2Rl ZmluZSBBU1QyNjAwX0kyQ0NfVENLSElHSCh4KQkJCSgoKHgpICYgR0VOTUFTSygzLCAwKSkgPDwN Cj4gMTYpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX1RDS0xPVyh4KQkJCSgoKHgpICYgR0VO TUFTSygzLCAwKSkgPDwNCj4gMTIpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX1RIRERBVCh4 KQkJCSgoKHgpICYgR0VOTUFTSygxLCAwKSkgPDwNCj4gMTApDQo+ID4gKyNkZWZpbmUgQVNUMjYw MF9JMkNDX1RPVVRCQVNFQ0xLKHgpCQkJKCgoeCkgJiBHRU5NQVNLKDEsIDApKQ0KPiA8PCA4KQ0K PiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19UQkFTRUNMSyh4KQkJCSgoeCkgJiBHRU5NQVNLKDMs IDApKQ0KPiA+ICsNCj4gPiArLyogMHgwOCA6IEkyQ0MgTWFzdGVyL1NsYXZlIFRyYW5zbWl0L1Jl Y2VpdmUgQnl0ZSBCdWZmZXIgUmVnaXN0ZXIgKi8NCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ0Nf U1RTX0FORF9CVUZGCQkweDA4DQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX1RYX0RJUl9NQVNL CQkJR0VOTUFTSygzMSwgMjkpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX1NEQV9PRQkJCQlC SVQoMjgpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX1NEQV9PCQkJCUJJVCgyNykNCj4gPiAr I2RlZmluZSBBU1QyNjAwX0kyQ0NfU0NMX09FCQkJCUJJVCgyNikNCj4gPiArI2RlZmluZSBBU1Qy NjAwX0kyQ0NfU0NMX08JCQkJQklUKDI1KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBBU1QyNjAwX0ky Q0NfU0NMX0xJTkVfU1RTCQkJQklUKDE4KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19TREFf TElORV9TVFMJCQlCSVQoMTcpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX0JVU19CVVNZX1NU UwkJCUJJVCgxNikNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX0dFVF9SWF9CVUZG KHgpCQkJKCgoeCkgPj4gOCkgJg0KPiBHRU5NQVNLKDcsIDApKQ0KPiA+ICsNCj4gPiArLyogMHgw QyA6IEkyQ0MgTWFzdGVyL1NsYXZlIFBvb2wgQnVmZmVyIENvbnRyb2wgUmVnaXN0ZXIgICovDQo+ ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNDX0JVRkZfQ1RSTAkJMHgwQw0KPiA+ICsjZGVmaW5lIEFT VDI2MDBfSTJDQ19HRVRfUlhfQlVGX0xFTih4KQkJKCgoeCkgPj4gMjQpICYNCj4gR0VOTUFTSyg1 LCAwKSkNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ0NfU0VUX1JYX0JVRl9MRU4oeCkJCSgoKCgo eCkgLSAxKSAmIEdFTk1BU0soNCwNCj4gMCkpIDw8IDE2KSB8IEJJVCgwKSkNCj4gPiArI2RlZmlu ZSBBU1QyNjAwX0kyQ0NfU0VUX1RYX0JVRl9MRU4oeCkJCSgoKCgoeCkgLSAxKSAmIEdFTk1BU0so NCwNCj4gMCkpIDw8IDgpIHwgQklUKDApKQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDQ19HRVRf VFhfQlVGX0xFTih4KQkJKCgoKHgpID4+IDgpICYNCj4gR0VOTUFTSyg0LCAwKSkgKyAxKQ0KPiA+ ICsNCj4gPiArLyogMHgxMCA6IEkyQ00gTWFzdGVyIEludGVycnVwdCBDb250cm9sIFJlZ2lzdGVy ICovDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX0lFUgkJCTB4MTANCj4gPiArLyogMHgxNCA6 IEkyQ00gTWFzdGVyIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgICA6IFdDICovDQo+ID4gKyNk ZWZpbmUgQVNUMjYwMF9JMkNNX0lTUgkJCTB4MTQNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVNUMjYw MF9JMkNNX1BLVF9USU1FT1VUCQkJQklUKDE4KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9Q S1RfRVJST1IJCQlCSVQoMTcpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX1BLVF9ET05FCQkJ QklUKDE2KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fQlVTX1JFQ09WRVJfRkFJ TAkJQklUKDE1KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9TREFfRExfVE8JCQlCSVQoMTQp DQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX0JVU19SRUNPVkVSCQkJQklUKDEzKQ0KPiA+ICsj ZGVmaW5lIEFTVDI2MDBfSTJDTV9TTUJVU19BTFQJCQlCSVQoMTIpDQo+ID4gKw0KPiA+ICsjZGVm aW5lIEFTVDI2MDBfSTJDTV9TQ0xfTE9XX1RPCQkJQklUKDYpDQo+ID4gKyNkZWZpbmUgQVNUMjYw MF9JMkNNX0FCTk9STUFMCQkJQklUKDUpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX05PUk1B TF9TVE9QCQkJQklUKDQpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX0FSQklUX0xPU1MJCQlC SVQoMykNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fUlhfRE9ORQkJCUJJVCgyKQ0KPiA+ICsj ZGVmaW5lIEFTVDI2MDBfSTJDTV9UWF9OQUsJCQkJQklUKDEpDQo+ID4gKyNkZWZpbmUgQVNUMjYw MF9JMkNNX1RYX0FDSwkJCQlCSVQoMCkNCj4gPiArDQo+ID4gKy8qIDB4MTggOiBJMkNNIE1hc3Rl ciBDb21tYW5kL1N0YXR1cyBSZWdpc3RlciAgICovDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNN X0NNRF9TVFMJCTB4MTgNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fUEtUX0FERFIoeCkJCQko KCh4KSAmIEdFTk1BU0soNiwgMCkpDQo+IDw8IDI0KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJD TV9QS1RfRU4JCQkJQklUKDE2KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9TREFfT0VfT1VU X0RJUgkJCUJJVCgxNSkNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fU0RBX09fT1VUX0RJUgkJ CUJJVCgxNCkNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fU0NMX09FX09VVF9ESVIJCQlCSVQo MTMpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX1NDTF9PX09VVF9ESVIJCQlCSVQoMTIpDQo+ ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX1JFQ09WRVJfQ01EX0VOCQkJQklUKDExKQ0KPiA+ICsN Cj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fUlhfRE1BX0VOCQkJQklUKDkpDQo+ID4gKyNkZWZp bmUgQVNUMjYwMF9JMkNNX1RYX0RNQV9FTgkJCUJJVCg4KQ0KPiA+ICsvKiBDb21tYW5kIEJpdCAq Lw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9SWF9CVUZGX0VOCQkJQklUKDcpDQo+ID4gKyNk ZWZpbmUgQVNUMjYwMF9JMkNNX1RYX0JVRkZfRU4JCQlCSVQoNikNCj4gPiArI2RlZmluZSBBU1Qy NjAwX0kyQ01fU1RPUF9DTUQJCQlCSVQoNSkNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fUlhf Q01EX0xBU1QJCQlCSVQoNCkNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fUlhfQ01ECQkJCUJJ VCgzKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fVFhfQ01ECQkJCUJJVCgxKQ0K PiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9TVEFSVF9DTUQJCQlCSVQoMCkNCj4gPiArDQo+ID4g Ky8qIDB4MUMgOiBJMkNNIE1hc3RlciBETUEgVHJhbnNmZXIgTGVuZ3RoIFJlZ2lzdGVyCSAqLw0K PiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9ETUFfTEVOCQkweDFDDQo+ID4gKy8qIFR4IFJ4IHN1 cHBvcnQgbGVuZ3RoIDEgfiA0MDk2ICovDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNNX1NFVF9S WF9ETUFfTEVOKHgpCSgoKCh4KSAmIEdFTk1BU0soMTEsIDApKQ0KPiA8PCAxNikgfCBCSVQoMzEp KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9TRVRfVFhfRE1BX0xFTih4KQkoKCh4KSAmIEdF Tk1BU0soMTEsIDApKSB8DQo+IEJJVCgxNSkpDQo+ID4gKw0KPiA+ICsvKiAweDIwIDogSTJDUyBT bGF2ZSBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAgICovDQo+ID4gKyNkZWZpbmUgQVNUMjYw MF9JMkNTX0lFUgkJCTB4MjANCj4gPiArLyogMHgyNCA6IEkyQ1MgU2xhdmUgSW50ZXJydXB0IFN0 YXR1cyBSZWdpc3RlcgkgKi8NCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ1NfSVNSCQkJMHgyNA0K PiA+ICsNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ1NfQUREUl9JTkRJQ0FURV9NQVNLCUdFTk1B U0soMzEsIDMwKQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19TTEFWRV9QRU5ESU5HCQkJQklU KDI5KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ1NfV0FJVF9UWF9ETUEJCQlCSVQo MjUpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX1dBSVRfUlhfRE1BCQkJQklUKDI0KQ0KPiA+ ICsNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ1NfQUREUjNfTkFLCQkJQklUKDIyKQ0KPiA+ICsj ZGVmaW5lIEFTVDI2MDBfSTJDU19BRERSMl9OQUsJCQlCSVQoMjEpDQo+ID4gKyNkZWZpbmUgQVNU MjYwMF9JMkNTX0FERFIxX05BSwkJCUJJVCgyMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVNUMjYw MF9JMkNTX0FERFJfTUFTSwkJCUdFTk1BU0soMTksIDE4KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBf STJDU19QS1RfRVJST1IJCQlCSVQoMTcpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX1BLVF9E T05FCQkJQklUKDE2KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19JTkFDVElWRV9UTwkJCUJJ VCgxNSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX1NMQVZFX01BVENICQkJQklU KDcpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX0FCTk9SX1NUT1AJCQlCSVQoNSkNCj4gPiAr I2RlZmluZSBBU1QyNjAwX0kyQ1NfU1RPUAkJCQlCSVQoNCkNCj4gPiArI2RlZmluZSBBU1QyNjAw X0kyQ1NfUlhfRE9ORV9OQUsJCQlCSVQoMykNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ1NfUlhf RE9ORQkJCUJJVCgyKQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19UWF9OQUsJCQkJQklUKDEp DQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX1RYX0FDSwkJCQlCSVQoMCkNCj4gPiArDQo+ID4g Ky8qIDB4MjggOiBJMkNTIFNsYXZlIENNRC9TdGF0dXMgUmVnaXN0ZXIgICAqLw0KPiA+ICsjZGVm aW5lIEFTVDI2MDBfSTJDU19DTURfU1RTCQkweDI4DQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNT X0FDVElWRV9BTEwJCQlHRU5NQVNLKDE4LCAxNykNCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ1Nf UEtUX01PREVfRU4JCQlCSVQoMTYpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX0FVVE9fTkFL X05PQUREUgkJQklUKDE1KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19BVVRPX05BS19FTgkJ CUJJVCgxNCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX0FMVF9FTgkJCQlCSVQo MTApDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX1JYX0RNQV9FTgkJCUJJVCg5KQ0KPiA+ICsj ZGVmaW5lIEFTVDI2MDBfSTJDU19UWF9ETUFfRU4JCQlCSVQoOCkNCj4gPiArI2RlZmluZSBBU1Qy NjAwX0kyQ1NfUlhfQlVGRl9FTgkJCUJJVCg3KQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19U WF9CVUZGX0VOCQkJQklUKDYpDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX1JYX0NNRF9MQVNU CQkJQklUKDQpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19UWF9DTUQJCQkJQklU KDIpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19ETUFfTEVOCQkweDJDDQo+ID4g KyNkZWZpbmUgQVNUMjYwMF9JMkNTX1NFVF9SWF9ETUFfTEVOKHgpCSgoKCgoeCkgLSAxKSAmIEdF Tk1BU0soMTEsIDApKQ0KPiA8PCAxNikgfCBCSVQoMzEpKQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBf STJDU19SWF9ETUFfTEVOX01BU0sJKEdFTk1BU0soMTEsIDApIDw8IDE2KQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBBU1QyNjAwX0kyQ1NfU0VUX1RYX0RNQV9MRU4oeCkJKCgoKHgpIC0gMSkgJiBHRU5N QVNLKDExLCAwKSkNCj4gfCBCSVQoMTUpKQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19UWF9E TUFfTEVOX01BU0sJR0VOTUFTSygxMSwgMCkNCj4gPiArDQo+ID4gKy8qIEkyQ00gTWFzdGVyIERN QSBUeCBCdWZmZXIgUmVnaXN0ZXIgICAqLw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDTV9UWF9E TUEJCQkweDMwDQo+ID4gKy8qIEkyQ00gTWFzdGVyIERNQSBSeCBCdWZmZXIgUmVnaXN0ZXIJKi8N Cj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fUlhfRE1BCQkJMHgzNA0KPiA+ICsvKiBJMkNTIFNs YXZlIERNQSBUeCBCdWZmZXIgUmVnaXN0ZXIgICAqLw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJD U19UWF9ETUEJCQkweDM4DQo+ID4gKy8qIEkyQ1MgU2xhdmUgRE1BIFJ4IEJ1ZmZlciBSZWdpc3Rl ciAgICovDQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX1JYX0RNQQkJCTB4M0MNCj4gPiArDQo+ ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX0FERFJfQ1RSTAkJMHg0MA0KPiA+ICsNCj4gPiArI2Rl ZmluZQlBU1QyNjAwX0kyQ1NfQUREUjNfTUFTSwkJR0VOTUFTSygyMiwgMTYpDQo+ID4gKyNkZWZp bmUJQVNUMjYwMF9JMkNTX0FERFIyX01BU0sJCUdFTk1BU0soMTQsIDgpDQo+ID4gKyNkZWZpbmUJ QVNUMjYwMF9JMkNTX0FERFIxX01BU0sJCUdFTk1BU0soNiwgMCkNCj4gDQo+IERyb3AgaW5kZW50 IGFmdGVyICNkZWZpbmUNCg0KV2lsbCB1cGRhdGUgaW4gbmV4dCBzZW5kLg0KDQo+IA0KPiA+ICsN Cj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ01fRE1BX0xFTl9TVFMJCTB4NDgNCj4gPiArI2RlZmlu ZSBBU1QyNjAwX0kyQ1NfRE1BX0xFTl9TVFMJCTB4NEMNCj4gPiArDQo+ID4gKyNkZWZpbmUgQVNU MjYwMF9JMkNfR0VUX1RYX0RNQV9MRU4oeCkJCSgoeCkgJiBHRU5NQVNLKDEyLCAwKSkNCj4gPiAr I2RlZmluZSBBU1QyNjAwX0kyQ19HRVRfUlhfRE1BX0xFTih4KQkJKCgoeCkgPj4gMTYpICYNCj4g R0VOTUFTSygxMiwgMCkpDQo+ID4gKw0KPiA+ICsvKiAweDQwIDogU2xhdmUgRGV2aWNlIEFkZHJl c3MgUmVnaXN0ZXIgKi8NCj4gPiArI2RlZmluZSBBU1QyNjAwX0kyQ1NfQUREUjNfRU5BQkxFCQkJ QklUKDIzKQ0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19BRERSMyh4KQkJCSgoeCkgPDwgMTYp DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDU19BRERSMl9FTkFCTEUJCQlCSVQoMTUp DQo+ID4gKyNkZWZpbmUgQVNUMjYwMF9JMkNTX0FERFIyKHgpCQkJKCh4KSA8PCA4KQ0KPiA+ICsj ZGVmaW5lIEFTVDI2MDBfSTJDU19BRERSMV9FTkFCTEUJCQlCSVQoNykNCj4gPiArI2RlZmluZSBB U1QyNjAwX0kyQ1NfQUREUjEoeCkJCQkoeCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgSTJDX1NMQVZF X01TR19CVUZfU0laRQkJMjU2DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFTVDI2MDBfSTJDX0RNQV9T SVpFCQk0MDk2DQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1BU1RFUl9UUklHR0VSX0xBU1RfU1RPUAko QVNUMjYwMF9JMkNNX1JYX0NNRF9MQVNUIHwNCj4gQVNUMjYwMF9JMkNNX1NUT1BfQ01EKQ0KPiA+ ICsjZGVmaW5lIFNMQVZFX1RSSUdHRVJfQ01ECShBU1QyNjAwX0kyQ1NfQUNUSVZFX0FMTCB8DQo+ IEFTVDI2MDBfSTJDU19QS1RfTU9ERV9FTikNCj4gPiArDQo+ID4gKy8qIGkyYyB0aW1lb3V0IGNv dW50ZXI6IHVzZSBiYXNlIGNsazQgMU1oeg0KPiA+ICsgKiAxLygxMDAwLzQwOTYpID0gNC4wOTZt cyAqIDggPSAzMi43NjhtcyAgKi8NCj4gPiArI2RlZmluZSBBU1RfSTJDX1RJTUVPVVRfQ0xLCQkw eDINCj4gPiArI2RlZmluZSBBU1RfSTJDX1RJTUVPVVRfQ09VTlQJMHg4DQo+ID4gKw0KPiA+ICtz dHJ1Y3QgYXN0MjYwMF9pMmNfdGltaW5nX3RhYmxlIHsNCj4gPiArCXUzMiBkaXZpc29yOw0KPiA+ ICsJdTMyIHRpbWluZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gK2VudW0geGZlcl9tb2RlIHsNCj4g PiArCUJZVEVfTU9ERSA9IDAsDQo+ID4gKwlCVUZGX01PREUsDQo+ID4gKwlETUFfTU9ERSwNCj4g PiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBhc3QyNjAwX2kyY19idXMgew0KPiA+ICsJc3RydWN0 IGkyY19hZGFwdGVyCQlhZGFwOw0KPiA+ICsJc3RydWN0IGRldmljZQkJCSpkZXY7DQo+ID4gKwl2 b2lkIF9faW9tZW0JCQkqcmVnX2Jhc2U7DQo+ID4gKwlzdHJ1Y3QgcmVnbWFwCQkJKmdyX3JlZ21h cDsNCj4gPiArCXN0cnVjdCByZXNldF9jb250cm9sCQkqcnN0Ow0KPiA+ICsJaW50CQkJCWlycTsN Cj4gPiArCWVudW0geGZlcl9tb2RlCQkJbW9kZTsNCj4gPiArCXN0cnVjdCBjbGsJCQkqY2xrOw0K PiA+ICsJdTMyCQkJCWFwYl9jbGs7DQo+ID4gKwl1MzIJCQkJYnVzX2ZyZXF1ZW5jeTsNCj4gPiAr CWludAkJCQlzbGF2ZV9vcGVyYXRlOw0KPiA+ICsJaW50CQkJCXRpbWVvdXRfZW5hYmxlOw0KPiA+ ICsJLyogc21idXMgYWxlcnQgKi8NCj4gPiArCWludAkJCQlhbGVydF9lbmFibGU7DQo+ID4gKwlz dHJ1Y3QgaTJjX3NtYnVzX2FsZXJ0X3NldHVwCWFsZXJ0X2RhdGE7DQo+ID4gKwlzdHJ1Y3QgaTJj X2NsaWVudAkJKmFyYTsNCj4gPiArCS8qIE11bHRpLW1hc3RlciAqLw0KPiA+ICsJYm9vbAkJCQlt dWx0aV9tYXN0ZXI7DQo+ID4gKwkvKiBtYXN0ZXIgc3RydWN0dXJlICovDQo+ID4gKwlpbnQJCQkJ Y21kX2VycjsNCj4gPiArCXN0cnVjdCBjb21wbGV0aW9uCQljbWRfY29tcGxldGU7DQo+ID4gKwlz dHJ1Y3QgaTJjX21zZwkJCSptc2dzOw0KPiA+ICsJc2l6ZV90CQkJCWJ1Zl9pbmRleDsNCj4gPiAr CS8qIGN1ciB4ZmVyIG1zZ3MgaW5kZXgqLw0KPiA+ICsJaW50CQkJCW1zZ3NfaW5kZXg7DQo+ID4g KwlpbnQJCQkJbXNnc19jb3VudDsNCj4gPiArCXU4CQkJCSptYXN0ZXJfc2FmZV9idWY7DQo+ID4g KwlkbWFfYWRkcl90CQkJbWFzdGVyX2RtYV9hZGRyOw0KPiA+ICsJLyp0b3RhbCB4ZmVyIGNvdW50 ICovDQo+ID4gKwlpbnQJCQkJbWFzdGVyX3hmZXJfY250Ow0KPiA+ICsJLyogQnVmZmVyIG1vZGUg Ki8NCj4gPiArCXZvaWQgX19pb21lbQkJCSpidWZfYmFzZTsNCj4gPiArCXNpemVfdAkJCQlidWZf c2l6ZTsNCj4gPiArCS8qIFNsYXZlIHN0cnVjdHVyZSAqLw0KPiA+ICsJaW50CQkJCXNsYXZlX3hm ZXJfbGVuOw0KPiA+ICsJaW50CQkJCXNsYXZlX3hmZXJfY250Ow0KPiA+ICsjaWZkZWYgQ09ORklH X0kyQ19TTEFWRQ0KPiA+ICsJdW5zaWduZWQgY2hhcgkJCSpzbGF2ZV9kbWFfYnVmOw0KPiA+ICsJ ZG1hX2FkZHJfdAkJCXNsYXZlX2RtYV9hZGRyOw0KPiA+ICsJc3RydWN0IGkyY19jbGllbnQJCSpz bGF2ZTsNCj4gPiArI2VuZGlmDQo+ID4gK307DQo+ID4gKw0KPiANCj4gKC4uLikNCj4gDQo+ID4g Kw0KPiA+ICsJLy9DaGVjayAweDE0J3MgU0RBIGFuZCBTQ0wgc3RhdHVzDQo+IA0KPiBVc2UgTGlu dXggY29kaW5nIHN0eWxlLiBTZWUgQ29kaW5nIHN0eWxlIGRvY3VtZW50Lg0KDQpXaWxsIHJldmll dyBhbGwgYW5kIGNsZWFuIHRoaXMuDQoNCj4gDQo+ID4gKwlzdGF0ZSA9IHJlYWRsKGkyY19idXMt PnJlZ19iYXNlICsgQVNUMjYwMF9JMkNDX1NUU19BTkRfQlVGRik7DQo+ID4gKwlpZiAoIShzdGF0 ZSAmIEFTVDI2MDBfSTJDQ19TREFfTElORV9TVFMpICYmIChzdGF0ZSAmDQo+IEFTVDI2MDBfSTJD Q19TQ0xfTElORV9TVFMpKSB7DQo+ID4gKwkJd3JpdGVsKEFTVDI2MDBfSTJDTV9SRUNPVkVSX0NN RF9FTiwgaTJjX2J1cy0+cmVnX2Jhc2UgKw0KPiBBU1QyNjAwX0kyQ01fQ01EX1NUUyk7DQo+ID4g KwkJciA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmaTJjX2J1cy0+Y21kX2NvbXBsZXRl LA0KPiBpMmNfYnVzLT5hZGFwLnRpbWVvdXQpOw0KPiA+ICsJCWlmIChyID09IDApIHsNCj4gPiAr CQkJZGV2X2RiZyhpMmNfYnVzLT5kZXYsICJyZWNvdmVyeSB0aW1lZCBvdXRcbiIpOw0KPiA+ICsJ CQlyZXQgPSAtRVRJTUVET1VUOw0KPiA+ICsJCX0gZWxzZSB7DQo+ID4gKwkJCWlmIChpMmNfYnVz LT5jbWRfZXJyKSB7DQo+ID4gKwkJCQlkZXZfZGJnKGkyY19idXMtPmRldiwgInJlY292ZXJ5IGVy cm9yXG4iKTsNCj4gPiArCQkJCXJldCA9IC1FUFJPVE87DQo+ID4gKwkJCX0NCj4gPiArCQl9DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJZGV2X2RiZyhpMmNfYnVzLT5kZXYsICJSZWNvdmVyeSBkb25l IFsleF1cbiIsDQo+ID4gKwkJcmVhZGwoaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1QyNjAwX0kyQ0Nf U1RTX0FORF9CVUZGKSk7DQo+ID4gKwlpZiAocmVhZGwoaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1Qy NjAwX0kyQ0NfU1RTX0FORF9CVUZGKSAmDQo+IEFTVDI2MDBfSTJDQ19CVVNfQlVTWV9TVFMpIHsN Cj4gPiArCQlkZXZfZGJnKGkyY19idXMtPmRldiwgIkNhbid0IHJlY292ZXJ5IGJ1cyBbJXhdXG4i LA0KPiA+ICsJCQlyZWFkbChpMmNfYnVzLT5yZWdfYmFzZSArIEFTVDI2MDBfSTJDQ19TVFNfQU5E X0JVRkYpKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwl3cml0ZWwoY3RybCwgaTJjX2J1cy0+cmVn X2Jhc2UgKyBBU1QyNjAwX0kyQ0NfRlVOX0NUUkwpOw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArI2lmZGVmIENPTkZJR19JMkNfU0xBVkUNCj4gPiArc3RhdGljIHZvaWQg YXN0MjYwMF9pMmNfc2xhdmVfcGFja2V0X2RtYV9pcnEoc3RydWN0IGFzdDI2MDBfaTJjX2J1cw0K PiA+ICsqaTJjX2J1cywgdTMyIHN0cykgew0KPiA+ICsJaW50IHNsYXZlX3J4X2xlbjsNCj4gPiAr CXUzMiBjbWQgPSAwOw0KPiA+ICsJdTggdmFsdWU7DQo+ID4gKwlpbnQgaSA9IDA7DQo+ID4gKw0K PiA+ICsJc3RzICY9IH4oQVNUMjYwMF9JMkNTX1NMQVZFX1BFTkRJTkcpOw0KPiA+ICsJLyogSGFu ZGxlIGkyYyBzbGF2ZSB0aW1lb3V0IGNvbmRpdGlvbiAqLw0KPiA+ICsJaWYgKEFTVDI2MDBfSTJD U19JTkFDVElWRV9UTyAmIHN0cykgew0KPiA+ICsJCWNtZCA9IFNMQVZFX1RSSUdHRVJfQ01EOw0K PiA+ICsJCWNtZCB8PSBBU1QyNjAwX0kyQ1NfUlhfRE1BX0VOOw0KPiA+ICsNCj4gCXdyaXRlbChB U1QyNjAwX0kyQ1NfU0VUX1JYX0RNQV9MRU4oSTJDX1NMQVZFX01TR19CVUZfU0laRSksDQo+ID4g KwkJICAgICAgIGkyY19idXMtPnJlZ19iYXNlICsgQVNUMjYwMF9JMkNTX0RNQV9MRU4pOw0KPiA+ ICsJCXdyaXRlbChjbWQsIGkyY19idXMtPnJlZ19iYXNlICsgQVNUMjYwMF9JMkNTX0NNRF9TVFMp Ow0KPiA+ICsJCWkyY19zbGF2ZV9ldmVudChpMmNfYnVzLT5zbGF2ZSwgSTJDX1NMQVZFX1NUT1As ICZ2YWx1ZSk7DQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXN0cyAmPSB+ KEFTVDI2MDBfSTJDU19QS1RfRE9ORSB8IEFTVDI2MDBfSTJDU19QS1RfRVJST1IpOw0KPiA+ICsN Cj4gPiArCXN3aXRjaCAoc3RzKSB7DQo+ID4gKwljYXNlIEFTVDI2MDBfSTJDU19TTEFWRV9NQVRD SCB8IEFTVDI2MDBfSTJDU19SWF9ET05FIHwNCj4gQVNUMjYwMF9JMkNTX1dBSVRfUlhfRE1BOg0K PiA+ICsJY2FzZSBBU1QyNjAwX0kyQ1NfU0xBVkVfTUFUQ0ggfCBBU1QyNjAwX0kyQ1NfV0FJVF9S WF9ETUE6DQo+ID4gKwkJaTJjX3NsYXZlX2V2ZW50KGkyY19idXMtPnNsYXZlLCBJMkNfU0xBVkVf V1JJVEVfUkVRVUVTVEVELA0KPiAmdmFsdWUpOw0KPiA+ICsJCXNsYXZlX3J4X2xlbiA9DQo+IEFT VDI2MDBfSTJDX0dFVF9SWF9ETUFfTEVOKHJlYWRsKGkyY19idXMtPnJlZ19iYXNlICsNCj4gPiAr CQkJCQkJICAgICAgQVNUMjYwMF9JMkNTX0RNQV9MRU5fU1RTKSk7DQo+ID4gKwkJZm9yIChpID0g MDsgaSA8IHNsYXZlX3J4X2xlbjsgaSsrKSB7DQo+ID4gKwkJCWkyY19zbGF2ZV9ldmVudChpMmNf YnVzLT5zbGF2ZSwgSTJDX1NMQVZFX1dSSVRFX1JFQ0VJVkVELA0KPiA+ICsJCQkJCSZpMmNfYnVz LT5zbGF2ZV9kbWFfYnVmW2ldKTsNCj4gPiArCQl9DQo+ID4gKw0KPiAJd3JpdGVsKEFTVDI2MDBf STJDU19TRVRfUlhfRE1BX0xFTihJMkNfU0xBVkVfTVNHX0JVRl9TSVpFKSwNCj4gPiArCQkJCWky Y19idXMtPnJlZ19iYXNlICsgQVNUMjYwMF9JMkNTX0RNQV9MRU4pOw0KPiA+ICsJCWNtZCA9IFNM QVZFX1RSSUdHRVJfQ01EIHwgQVNUMjYwMF9JMkNTX1JYX0RNQV9FTjsNCj4gPiArCQlicmVhazsN Cj4gPiArCWNhc2UgQVNUMjYwMF9JMkNTX1NMQVZFX01BVENIIHwgQVNUMjYwMF9JMkNTX1NUT1A6 DQo+ID4gKwkJaTJjX3NsYXZlX2V2ZW50KGkyY19idXMtPnNsYXZlLCBJMkNfU0xBVkVfU1RPUCwg JnZhbHVlKTsNCj4gPiArDQo+IAl3cml0ZWwoQVNUMjYwMF9JMkNTX1NFVF9SWF9ETUFfTEVOKEky Q19TTEFWRV9NU0dfQlVGX1NJWkUpLA0KPiA+ICsJCQkJaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1Qy NjAwX0kyQ1NfRE1BX0xFTik7DQo+ID4gKwkJY21kID0gU0xBVkVfVFJJR0dFUl9DTUQgfCBBU1Qy NjAwX0kyQ1NfUlhfRE1BX0VOOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBBU1QyNjAwX0ky Q1NfU0xBVkVfTUFUQ0ggfCBBU1QyNjAwX0kyQ1NfUlhfRE9ORV9OQUsgfA0KPiA+ICsJCQlBU1Qy NjAwX0kyQ1NfUlhfRE9ORSB8IEFTVDI2MDBfSTJDU19TVE9QOg0KPiA+ICsJY2FzZSBBU1QyNjAw X0kyQ1NfU0xBVkVfTUFUQ0ggfCBBU1QyNjAwX0kyQ1NfV0FJVF9SWF9ETUEgfA0KPiA+ICsJCQlB U1QyNjAwX0kyQ1NfUlhfRE9ORSB8IEFTVDI2MDBfSTJDU19TVE9QOg0KPiA+ICsJY2FzZSBBU1Qy NjAwX0kyQ1NfUlhfRE9ORV9OQUsgfCBBU1QyNjAwX0kyQ1NfUlhfRE9ORSB8DQo+IEFTVDI2MDBf STJDU19TVE9QOg0KPiA+ICsJY2FzZSBBU1QyNjAwX0kyQ1NfUlhfRE9ORSB8IEFTVDI2MDBfSTJD U19XQUlUX1JYX0RNQSB8DQo+IEFTVDI2MDBfSTJDU19TVE9QOg0KPiA+ICsJY2FzZSBBU1QyNjAw X0kyQ1NfUlhfRE9ORSB8IEFTVDI2MDBfSTJDU19TVE9QOg0KPiA+ICsJY2FzZSBBU1QyNjAwX0ky Q1NfUlhfRE9ORSB8IEFTVDI2MDBfSTJDU19XQUlUX1JYX0RNQToNCj4gPiArCWNhc2UgQVNUMjYw MF9JMkNTX1NMQVZFX01BVENIIHwgQVNUMjYwMF9JMkNTX1JYX0RPTkUgfA0KPiBBU1QyNjAwX0ky Q1NfU1RPUDoNCj4gPiArCQlpZiAoc3RzICYgQVNUMjYwMF9JMkNTX1NMQVZFX01BVENIKQ0KPiA+ ICsJCQlpMmNfc2xhdmVfZXZlbnQoaTJjX2J1cy0+c2xhdmUsDQo+IEkyQ19TTEFWRV9XUklURV9S RVFVRVNURUQsDQo+ID4gKyZ2YWx1ZSk7DQo+ID4gKw0KPiA+ICsJCXNsYXZlX3J4X2xlbiA9DQo+ IEFTVDI2MDBfSTJDX0dFVF9SWF9ETUFfTEVOKHJlYWRsKGkyY19idXMtPnJlZ19iYXNlICsNCj4g PiArCQkJCQkJICAgICAgQVNUMjYwMF9JMkNTX0RNQV9MRU5fU1RTKSk7DQo+ID4gKwkJZm9yIChp ID0gMDsgaSA8IHNsYXZlX3J4X2xlbjsgaSsrKSB7DQo+ID4gKwkJCWkyY19zbGF2ZV9ldmVudChp MmNfYnVzLT5zbGF2ZSwgSTJDX1NMQVZFX1dSSVRFX1JFQ0VJVkVELA0KPiA+ICsJCQkJCSZpMmNf YnVzLT5zbGF2ZV9kbWFfYnVmW2ldKTsNCj4gPiArCQl9DQo+ID4gKw0KPiAJd3JpdGVsKEFTVDI2 MDBfSTJDU19TRVRfUlhfRE1BX0xFTihJMkNfU0xBVkVfTVNHX0JVRl9TSVpFKSwNCj4gPiArCQkg ICAgICAgaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1QyNjAwX0kyQ1NfRE1BX0xFTik7DQo+ID4gKwkJ aWYgKHN0cyAmIEFTVDI2MDBfSTJDU19TVE9QKQ0KPiA+ICsJCQlpMmNfc2xhdmVfZXZlbnQoaTJj X2J1cy0+c2xhdmUsIEkyQ19TTEFWRV9TVE9QLCAmdmFsdWUpOw0KPiA+ICsJCWNtZCA9IFNMQVZF X1RSSUdHRVJfQ01EIHwgQVNUMjYwMF9JMkNTX1JYX0RNQV9FTjsNCj4gPiArCQlicmVhazsNCj4g PiArDQo+ID4gKwkvKiBpdCBpcyBNdyBkYXRhIE1yIGNvbWluZyAtPiBpdCBuZWVkIHNlbmQgdHgg Ki8NCj4gPiArCWNhc2UgQVNUMjYwMF9JMkNTX1JYX0RPTkUgfCBBU1QyNjAwX0kyQ1NfV0FJVF9U WF9ETUE6DQo+ID4gKwljYXNlIEFTVDI2MDBfSTJDU19TTEFWRV9NQVRDSCB8IEFTVDI2MDBfSTJD U19SWF9ET05FIHwNCj4gQVNUMjYwMF9JMkNTX1dBSVRfVFhfRE1BOg0KPiA+ICsJCS8qIGl0IHNo b3VsZCBiZSByZXBlYXQgc3RhcnQgcmVhZCAqLw0KPiA+ICsJCWlmIChzdHMgJiBBU1QyNjAwX0ky Q1NfU0xBVkVfTUFUQ0gpDQo+ID4gKwkJCWkyY19zbGF2ZV9ldmVudChpMmNfYnVzLT5zbGF2ZSwN Cj4gSTJDX1NMQVZFX1dSSVRFX1JFUVVFU1RFRCwNCj4gPiArJnZhbHVlKTsNCj4gPiArDQo+ID4g KwkJc2xhdmVfcnhfbGVuID0NCj4gQVNUMjYwMF9JMkNfR0VUX1JYX0RNQV9MRU4ocmVhZGwoaTJj X2J1cy0+cmVnX2Jhc2UgKw0KPiA+ICsJCQkJCQkgICAgICBBU1QyNjAwX0kyQ1NfRE1BX0xFTl9T VFMpKTsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgc2xhdmVfcnhfbGVuOyBpKyspIHsNCj4gPiAr CQkJaTJjX3NsYXZlX2V2ZW50KGkyY19idXMtPnNsYXZlLCBJMkNfU0xBVkVfV1JJVEVfUkVDRUlW RUQsDQo+ID4gKwkJCQkJJmkyY19idXMtPnNsYXZlX2RtYV9idWZbaV0pOw0KPiA+ICsJCX0NCj4g PiArCQlpMmNfc2xhdmVfZXZlbnQoaTJjX2J1cy0+c2xhdmUsIEkyQ19TTEFWRV9SRUFEX1JFUVVF U1RFRCwNCj4gPiArCQkJCSZpMmNfYnVzLT5zbGF2ZV9kbWFfYnVmWzBdKTsNCj4gPiArCQl3cml0 ZWwoMCwgaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1QyNjAwX0kyQ1NfRE1BX0xFTl9TVFMpOw0KPiA+ ICsJCXdyaXRlbChBU1QyNjAwX0kyQ1NfU0VUX1RYX0RNQV9MRU4oMSksDQo+ID4gKwkJCQlpMmNf YnVzLT5yZWdfYmFzZSArIEFTVDI2MDBfSTJDU19ETUFfTEVOKTsNCj4gPiArCQljbWQgPSBTTEFW RV9UUklHR0VSX0NNRCB8IEFTVDI2MDBfSTJDU19UWF9ETUFfRU47DQo+ID4gKwkJYnJlYWs7DQo+ ID4gKwljYXNlIEFTVDI2MDBfSTJDU19TTEFWRV9NQVRDSCB8IEFTVDI2MDBfSTJDU19XQUlUX1RY X0RNQToNCj4gPiArCQkvKiBGaXJzdCBTdGFydCByZWFkICovDQo+ID4gKwkJaTJjX3NsYXZlX2V2 ZW50KGkyY19idXMtPnNsYXZlLCBJMkNfU0xBVkVfUkVBRF9SRVFVRVNURUQsDQo+ID4gKwkJCQkm aTJjX2J1cy0+c2xhdmVfZG1hX2J1ZlswXSk7DQo+ID4gKwkJd3JpdGVsKEFTVDI2MDBfSTJDU19T RVRfVFhfRE1BX0xFTigxKSwNCj4gPiArCQkJCWkyY19idXMtPnJlZ19iYXNlICsgQVNUMjYwMF9J MkNTX0RNQV9MRU4pOw0KPiA+ICsJCWNtZCA9IFNMQVZFX1RSSUdHRVJfQ01EIHwgQVNUMjYwMF9J MkNTX1RYX0RNQV9FTjsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgQVNUMjYwMF9JMkNTX1dB SVRfVFhfRE1BOg0KPiA+ICsJCS8qIGl0IHNob3VsZCBiZSBuZXh0IHN0YXJ0IHJlYWQgKi8NCj4g PiArCQlpMmNfc2xhdmVfZXZlbnQoaTJjX2J1cy0+c2xhdmUsIEkyQ19TTEFWRV9SRUFEX1BST0NF U1NFRCwNCj4gPiArCQkJCSZpMmNfYnVzLT5zbGF2ZV9kbWFfYnVmWzBdKTsNCj4gPiArCQl3cml0 ZWwoMCwgaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1QyNjAwX0kyQ1NfRE1BX0xFTl9TVFMpOw0KPiA+ ICsJCXdyaXRlbChBU1QyNjAwX0kyQ1NfU0VUX1RYX0RNQV9MRU4oMSksDQo+ID4gKwkJCQlpMmNf YnVzLT5yZWdfYmFzZSArIEFTVDI2MDBfSTJDU19ETUFfTEVOKTsNCj4gPiArCQljbWQgPSBTTEFW RV9UUklHR0VSX0NNRCB8IEFTVDI2MDBfSTJDU19UWF9ETUFfRU47DQo+ID4gKwkJYnJlYWs7DQo+ ID4gKw0KPiA+ICsJY2FzZSBBU1QyNjAwX0kyQ1NfVFhfTkFLIHwgQVNUMjYwMF9JMkNTX1NUT1A6 DQo+ID4gKwkJLyogaXQganVzdCB0eCBjb21wbGV0ZSAqLw0KPiA+ICsJCWkyY19zbGF2ZV9ldmVu dChpMmNfYnVzLT5zbGF2ZSwgSTJDX1NMQVZFX1NUT1AsICZ2YWx1ZSk7DQo+ID4gKwkJd3JpdGVs KDAsIGkyY19idXMtPnJlZ19iYXNlICsgQVNUMjYwMF9JMkNTX0RNQV9MRU5fU1RTKTsNCj4gPiAr DQo+IAl3cml0ZWwoQVNUMjYwMF9JMkNTX1NFVF9SWF9ETUFfTEVOKEkyQ19TTEFWRV9NU0dfQlVG X1NJWkUpLA0KPiA+ICsJCSAgICAgICBpMmNfYnVzLT5yZWdfYmFzZSArIEFTVDI2MDBfSTJDU19E TUFfTEVOKTsNCj4gPiArCQljbWQgPSBTTEFWRV9UUklHR0VSX0NNRCB8IEFTVDI2MDBfSTJDU19S WF9ETUFfRU47DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIEFTVDI2MDBfSTJDU19TTEFWRV9N QVRDSCB8IEFTVDI2MDBfSTJDU19SWF9ET05FOg0KPiA+ICsJCWNtZCA9IDA7DQo+ID4gKwkJaTJj X3NsYXZlX2V2ZW50KGkyY19idXMtPnNsYXZlLCBJMkNfU0xBVkVfV1JJVEVfUkVRVUVTVEVELA0K PiAmdmFsdWUpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBBU1QyNjAwX0kyQ1NfU1RPUDoN Cj4gPiArCQljbWQgPSAwOw0KPiA+ICsJCWkyY19zbGF2ZV9ldmVudChpMmNfYnVzLT5zbGF2ZSwg STJDX1NMQVZFX1NUT1AsICZ2YWx1ZSk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0K PiA+ICsJCWRldl9kYmcoaTJjX2J1cy0+ZGV2LCAidG9kbyBzbGF2ZSBpc3IgY2FzZSAleCwgc3Rz ICV4XG4iLCBzdHMsDQo+ID4gKwkJCXJlYWRsKGkyY19idXMtPnJlZ19iYXNlICsgQVNUMjYwMF9J MkNDX1NUU19BTkRfQlVGRikpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CWlmIChjbWQpDQo+ID4gKwkJd3JpdGVsKGNtZCwgaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1QyNjAw X0kyQ1NfQ01EX1NUUyk7DQo+ID4gKwl3cml0ZWwoQVNUMjYwMF9JMkNTX1BLVF9ET05FLCBpMmNf YnVzLT5yZWdfYmFzZSArDQo+IEFTVDI2MDBfSTJDU19JU1IpOw0KPiA+ICsJcmVhZGwoaTJjX2J1 cy0+cmVnX2Jhc2UgKyBBU1QyNjAwX0kyQ1NfSVNSKTsNCj4gPiArCWRldl9kYmcoaTJjX2J1cy0+ ZGV2LCAiY21kICV4XG4iLCBjbWQpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBhc3QyNjAw X2kyY19zbGF2ZV9wYWNrZXRfYnVmZl9pcnEoc3RydWN0IGFzdDI2MDBfaTJjX2J1cw0KPiA+ICsq aTJjX2J1cywgdTMyIHN0cykgew0KPiA+ICsJaW50IHNsYXZlX3J4X2xlbiA9IDA7DQo+ID4gKwl1 MzIgY21kID0gMDsNCj4gPiArCXU4IHZhbHVlOw0KPiA+ICsJaW50IGkgPSAwOw0KPiA+ICsNCj4g PiArCS8vZHVlIHRvIG1hc3RlciBzbGF2ZSBpcyBjb21tb24gYnVmZmVyLCBzbyBuZWVkIGZvcmNl IHRoZSBtYXN0ZXINCj4gPiArc3RvcCBub3QgaXNzdWUNCj4gDQo+IERpdHRvLi4uIGFuZCBldmVy eXdoZXJlIGVsc2UuDQo+IA0KPiAoLi4uKQ0KPiANCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYXN0 MjYwMF9pMmNfbWFzdGVyX2lycShzdHJ1Y3QgYXN0MjYwMF9pMmNfYnVzICppMmNfYnVzKSB7DQo+ ID4gKwl1MzIgc3RzID0gcmVhZGwoaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1QyNjAwX0kyQ01fSVNS KTsNCj4gPiArCXUzMiBpZXIgPSByZWFkbChpMmNfYnVzLT5yZWdfYmFzZSArIEFTVDI2MDBfSTJD TV9JRVIpOw0KPiA+ICsJdTMyIGN0cmwgPSAwOw0KPiA+ICsNCj4gPiArCWRldl9kYmcoaTJjX2J1 cy0+ZGV2LCAiTSBzdHMgJXhcbiIsIHN0cyk7DQo+IA0KPiBOQUsuIERvbid0IGRyb3AgZGVidWdz IHRvIGludGVycnVwdCBoYW5kbGVycy4gVGhpcyBtaWdodCBmbG9vZCB0aGUgbG9nIGFuZCBpcw0K PiB1bnVzYWJsZS4NCj4gDQo+ID4gKwlpZiAoIWkyY19idXMtPmFsZXJ0X2VuYWJsZSkNCj4gPiAr CQlzdHMgJj0gfkFTVDI2MDBfSTJDTV9TTUJVU19BTFQ7DQo+ID4gKw0KPiA+ICsJaWYgKEFTVDI2 MDBfSTJDTV9CVVNfUkVDT1ZFUl9GQUlMICYgc3RzKSB7DQo+ID4gKwkJZGV2X2RiZyhpMmNfYnVz LT5kZXYsICJNIGNsZWFyIGlzcjoNCj4gQVNUMjYwMF9JMkNNX0JVU19SRUNPVkVSX0ZBSUw9DQo+ ID4gKyV4XG4iLCBzdHMpOw0KPiANCj4gTm8gZGVidWdzIGluIGhhbmRsZXJzLg0KDQpXaWxsIHJl dmlldyBhbGwsIHJlbW92ZSBkZWJ1ZyBpbiBoYW5kbGVycy4gDQoNCj4gPiArCQl3cml0ZWwoQVNU MjYwMF9JMkNNX0JVU19SRUNPVkVSX0ZBSUwsIGkyY19idXMtPnJlZ19iYXNlICsNCj4gQVNUMjYw MF9JMkNNX0lTUik7DQo+ID4gKwkJY3RybCA9IHJlYWRsKGkyY19idXMtPnJlZ19iYXNlICsgQVNU MjYwMF9JMkNDX0ZVTl9DVFJMKTsNCj4gPiArCQl3cml0ZWwoMCwgaTJjX2J1cy0+cmVnX2Jhc2Ug KyBBU1QyNjAwX0kyQ0NfRlVOX0NUUkwpOw0KPiA+ICsJCXdyaXRlbChjdHJsLCBpMmNfYnVzLT5y ZWdfYmFzZSArIEFTVDI2MDBfSTJDQ19GVU5fQ1RSTCk7DQo+ID4gKwkJaTJjX2J1cy0+Y21kX2Vy ciA9IC1FUFJPVE87DQo+ID4gKwkJY29tcGxldGUoJmkyY19idXMtPmNtZF9jb21wbGV0ZSk7DQo+ ID4gKwkJcmV0dXJuIDE7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKEFTVDI2MDBfSTJDTV9C VVNfUkVDT1ZFUiAmIHN0cykgew0KPiA+ICsJCWRldl9kYmcoaTJjX2J1cy0+ZGV2LCAiTSBjbGVh ciBpc3I6IEFTVDI2MDBfSTJDTV9CVVNfUkVDT1ZFUj0NCj4gPiArJXhcbiIsIHN0cyk7DQo+IA0K PiBEaXR0bw0KPiANCj4gPiArCQl3cml0ZWwoQVNUMjYwMF9JMkNNX0JVU19SRUNPVkVSLCBpMmNf YnVzLT5yZWdfYmFzZSArDQo+IEFTVDI2MDBfSTJDTV9JU1IpOw0KPiA+ICsJCWkyY19idXMtPmNt ZF9lcnIgPSAwOw0KPiA+ICsJCWNvbXBsZXRlKCZpMmNfYnVzLT5jbWRfY29tcGxldGUpOw0KPiA+ ICsJCXJldHVybiAxOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChBU1QyNjAwX0kyQ01fU01C VVNfQUxUICYgc3RzKSB7DQo+ID4gKwkJaWYgKGllciAmIEFTVDI2MDBfSTJDTV9TTUJVU19BTFQp IHsNCj4gPiArCQkJZGV2X2RiZyhpMmNfYnVzLT5kZXYsICJNIGNsZWFyIGlzcjoNCj4gQVNUMjYw MF9JMkNNX1NNQlVTX0FMVD0gJXhcbiIsDQo+ID4gK3N0cyk7DQo+IA0KPiBEaXR0bw0KPiANCj4g PiArCQkJLyogRGlzYWJsZSBBTFQgSU5UICovDQo+ID4gKwkJCXdyaXRlbChpZXIgJiB+QVNUMjYw MF9JMkNNX1NNQlVTX0FMVCwgaTJjX2J1cy0+cmVnX2Jhc2UgKw0KPiBBU1QyNjAwX0kyQ01fSUVS KTsNCj4gPiArCQkJaTJjX2hhbmRsZV9zbWJ1c19hbGVydChpMmNfYnVzLT5hcmEpOw0KPiA+ICsJ CQl3cml0ZWwoQVNUMjYwMF9JMkNNX1NNQlVTX0FMVCwgaTJjX2J1cy0+cmVnX2Jhc2UgKw0KPiBB U1QyNjAwX0kyQ01fSVNSKTsNCj4gPiArCQkJZGV2X2VycihpMmNfYnVzLT5kZXYsDQo+ID4gKwkJ CQkiYXN0MjYwMF9tYXN0ZXJfYWxlcnRfcmVjdiBidXMgaWQgJWQsIERpc2FibGUgQWx0LCBQbGVh c2UNCj4gSW1wbGVcbiIsDQo+ID4gKwkJCQlpMmNfYnVzLT5hZGFwLm5yKTsNCj4gDQo+IFJlYWxs eT8gVGhpcyBpcyB5b3VyIGludGVudGlvbj8gVG8gcHJpbnQgZXJyb3Igb24gZXZlcnkgZXJyb3Ig Y29uZGl0aW9uIG9uIGV2ZXJ5DQo+IGludGVycnVwdD8NCj4gDQo+ID4gKwkJCXJldHVybiAxOw0K PiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpMmNfYnVzLT5jbWRfZXJyID0gYXN0MjYw MF9pMmNfaXNfaXJxX2Vycm9yKHN0cyk7DQo+ID4gKwlpZiAoaTJjX2J1cy0+Y21kX2Vycikgew0K PiA+ICsJCWRldl9kYmcoaTJjX2J1cy0+ZGV2LCAicmVjZWl2ZWQgZXJyb3IgaW50ZXJydXB0OiAw eCUwMnhcbiIsIHN0cyk7DQo+IA0KPiBEcm9wDQo+IA0KPiA+ICsJCXdyaXRlbChBU1QyNjAwX0ky Q01fUEtUX0RPTkUsIGkyY19idXMtPnJlZ19iYXNlICsNCj4gQVNUMjYwMF9JMkNNX0lTUik7DQo+ ID4gKwkJY29tcGxldGUoJmkyY19idXMtPmNtZF9jb21wbGV0ZSk7DQo+ID4gKwkJcmV0dXJuIDE7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKEFTVDI2MDBfSTJDTV9QS1RfRE9ORSAmIHN0cykg ew0KPiA+ICsJCWFzdDI2MDBfaTJjX21hc3Rlcl9wYWNrYWdlX2lycShpMmNfYnVzLCBzdHMpOw0K PiA+ICsJCXJldHVybiAxOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgYXN0MjYwMF9pMmNfYnVzX2lycShpbnQg aXJxLCB2b2lkICpkZXZfaWQpIHsNCj4gPiArCXN0cnVjdCBhc3QyNjAwX2kyY19idXMgKmkyY19i dXMgPSBkZXZfaWQ7DQo+ID4gKw0KPiA+ICsjaWZkZWYgQ09ORklHX0kyQ19TTEFWRQ0KPiA+ICsJ aWYgKHJlYWRsKGkyY19idXMtPnJlZ19iYXNlICsgQVNUMjYwMF9JMkNDX0ZVTl9DVFJMKSAmDQo+ IEFTVDI2MDBfSTJDQ19TTEFWRV9FTikgew0KPiA+ICsJCWlmIChhc3QyNjAwX2kyY19zbGF2ZV9p cnEoaTJjX2J1cykpIHsNCj4gPiArLy8JCQlkZXZfZGJnKGkyY19idXMtPmRldiwgImJ1cy0lZC5z bGF2ZSBoYW5kbGVcbiIsDQo+IGkyY19idXMtPmFkYXAubnIpOw0KPiANCj4gRHJvcA0KPiANCj4g PiArCQkJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArI2VuZGlm DQo+ID4gKwlyZXR1cm4gYXN0MjYwMF9pMmNfbWFzdGVyX2lycShpMmNfYnVzKSA/IElSUV9IQU5E TEVEIDogSVJRX05PTkU7IH0NCj4gPiArDQo+IA0KPiAoLi4uKQ0KPiANCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgYXN0MjYwMF9pMmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikg ew0KPiA+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiA+ ICsJc3RydWN0IGFzdDI2MDBfaTJjX2J1cyAqaTJjX2J1czsNCj4gPiArCXN0cnVjdCByZXNvdXJj ZSAqcmVzOw0KPiA+ICsJdTMyIGdsb2JhbF9jdHJsOw0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4g Kw0KPiA+ICsJaTJjX2J1cyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKmkyY19i dXMpLCBHRlBfS0VSTkVMKTsNCj4gPiArCWlmICghaTJjX2J1cykNCj4gPiArCQlyZXR1cm4gLUVO T01FTTsNCj4gPiArDQo+ID4gKwlpMmNfYnVzLT5yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0 X3NoYXJlZCgmcGRldi0+ZGV2LCBOVUxMKTsNCj4gPiArCWlmIChJU19FUlIoaTJjX2J1cy0+cnN0 KSkgew0KPiA+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwNCj4gPiArCQkJIm1pc3Npbmcgb3IgaW52 YWxpZCByZXNldCBjb250cm9sbGVyIGRldmljZSB0cmVlIGVudHJ5XG4iKTsNCj4gPiArCQlnb3Rv IGZyZWVfbWVtOw0KPiA+ICsJfQ0KPiA+ICsJcmVzZXRfY29udHJvbF9kZWFzc2VydChpMmNfYnVz LT5yc3QpOw0KPiA+ICsNCj4gPiArCWkyY19idXMtPmdyX3JlZ21hcCA9IHN5c2Nvbl9yZWdtYXBf bG9va3VwX2J5X3BoYW5kbGUobnAsDQo+ID4gKyJhc3BlZWQsaTJjLWdsb2JhbCIpOw0KPiANCj4g TkFLLCB1bmRvY3VtZW50ZWQgcHJvcGVydHkuIFRoaXMgaXMgcmVhbGx5IHVudGVzdGVkIHBhdGNo c2V0LiBZb3VyIGNvZGUgZG9lcw0KPiBub3QgbWF0Y2ggYmluZGluZ3Mgd2hpY2ggZG8gbm90IG1h dGNoIERUUy4NCj4gDQo+IFNlbmQgZW50aXJlIHNldCAtIGJpbmRpbmdzLCBkcml2ZXIgYW5kIERU UyB3aGljaCBhbGwgd29yayB0b2dldGhlci4NCj4gDQo+IEZ1cnRoZXIgeW91IGhhdmUgc2V2ZXJh bCBvdGhlciB1bmRvY3VtZW50ZWQgcHJvcGVydGllcy4NCj4gDQo+ID4gKwlpZiAoSVNfRVJSKGky Y19idXMtPmdyX3JlZ21hcCkpIHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQg dG8gZmluZCBhc3QyNjAwIGkyYyBnbG9iYWwgcmVnbWFwXG4iKTsNCj4gPiArCQlyZXQgPSAtRU5P TUVNOw0KPiA+ICsJCWdvdG8gZnJlZV9tZW07DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmVnbWFw X3JlYWQoaTJjX2J1cy0+Z3JfcmVnbWFwLCBBU1QyNjAwX0kyQ0dfQ1RSTCwgJmdsb2JhbF9jdHJs KTsNCj4gPiArCWlmICgoZ2xvYmFsX2N0cmwgJiBBU1QyNjAwX0dMT0JBTF9JTklUKSAhPSBBU1Qy NjAwX0dMT0JBTF9JTklUKSB7DQo+ID4gKwkJcmVnbWFwX3dyaXRlKGkyY19idXMtPmdyX3JlZ21h cCwgQVNUMjYwMF9JMkNHX0NUUkwsDQo+IEFTVDI2MDBfR0xPQkFMX0lOSVQpOw0KPiA+ICsJCXJl Z21hcF93cml0ZShpMmNfYnVzLT5ncl9yZWdtYXAsIEFTVDI2MDBfSTJDR19DTEtfRElWX0NUUkws DQo+IEkyQ0NHX0RJVl9DVFJMKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpMmNfYnVzLT5tb2Rl ID0gRE1BX01PREU7DQo+ID4gKwlpMmNfYnVzLT5zbGF2ZV9vcGVyYXRlID0gMDsNCj4gPiArDQo+ ID4gKwlpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKHBkZXYtPmRldi5vZl9ub2RlLCAiYnl0ZS1t b2RlIikpDQo+IA0KPiBUaGlzIG11c3QgYmUgZ29uZSBmcm9tIERULCBhcyB5b3UgZG8gbm90IGRl c2NyaWJlIGhhcmR3YXJlIGJ1dCAiZm9yY2UgZHJpdmVyIi4NCj4gDQo+ID4gKwkJaTJjX2J1cy0+ bW9kZSA9IEJZVEVfTU9ERTs+ICsNCj4gPiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocGRl di0+ZGV2Lm9mX25vZGUsICJidWZmLW1vZGUiKSkgew0KPiANCj4gVGhpcyBmb3Igc3VyZSBpcyBu b3QgcHJvcGVydHkgb2YgRFQuDQo+IA0KPiA+ICsJCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMSk7DQo+ID4gKwkJaWYgKHJlcyAmJiByZXNvdXJjZV9z aXplKHJlcykgPj0gMikNCj4gPiArCQkJaTJjX2J1cy0+YnVmX2Jhc2UgPSBkZXZtX2lvcmVtYXBf cmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCj4gPiArDQo+ID4gKwkJaWYgKCFJU19FUlJfT1Jf TlVMTChpMmNfYnVzLT5idWZfYmFzZSkpDQo+ID4gKwkJCWkyY19idXMtPmJ1Zl9zaXplID0gcmVz b3VyY2Vfc2l6ZShyZXMpLzI7DQo+ID4gKw0KPiA+ICsJCWkyY19idXMtPm1vZGUgPSBCVUZGX01P REU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwZGV2 LT5kZXYub2Zfbm9kZSwgInRpbWVvdXQiKSkNCj4gDQo+IEFsc28gd2lsbCBiZSBnb25lLg0KPiAN Cj4gPiArCQlpMmNfYnVzLT50aW1lb3V0X2VuYWJsZSA9IDE7DQo+ID4gKw0KPiA+ICsJaTJjX2J1 cy0+ZGV2ID0gJnBkZXYtPmRldjsNCj4gPiArCWluaXRfY29tcGxldGlvbigmaTJjX2J1cy0+Y21k X2NvbXBsZXRlKTsNCj4gPiArDQo+ID4gKwlpMmNfYnVzLT5yZWdfYmFzZSA9IGRldm1fcGxhdGZv cm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsNCj4gPiArCWlmIChJU19FUlIoaTJjX2J1cy0+ cmVnX2Jhc2UpKSB7DQo+ID4gKwkJcmV0ID0gUFRSX0VSUihpMmNfYnVzLT5yZWdfYmFzZSk7DQo+ ID4gKwkJZ290byBmcmVlX21lbTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpMmNfYnVzLT5pcnEg PSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOw0KPiA+ICsJaWYgKGkyY19idXMtPmlycSA8IDAp IHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJubyBpcnEgc3BlY2lmaWVkXG4iKTsNCj4g PiArCQlyZXQgPSAtaTJjX2J1cy0+aXJxOw0KPiA+ICsJCWdvdG8gdW5tYXA7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaTJjX2J1cyk7DQo+ID4gKw0K PiA+ICsJaTJjX2J1cy0+Y2xrID0gZGV2bV9jbGtfZ2V0KGkyY19idXMtPmRldiwgTlVMTCk7DQo+ ID4gKwlpZiAoSVNfRVJSKGkyY19idXMtPmNsaykpIHsNCj4gPiArCQlkZXZfZXJyKGkyY19idXMt PmRldiwgIm5vIGNsb2NrIGRlZmluZWRcbiIpOw0KPiANCj4gdXNlIGRldl9lcnJfcHJvYmUoKS4N Cj4gDQo+ID4gKwkJcmV0ID0gLUVOT0RFVjsNCj4gPiArCQlnb3RvIHVubWFwOw0KPiA+ICsJfQ0K PiA+ICsJaTJjX2J1cy0+YXBiX2NsayA9IGNsa19nZXRfcmF0ZShpMmNfYnVzLT5jbGspOw0KPiA+ ICsJZGV2X2RiZyhpMmNfYnVzLT5kZXYsICJpMmNfYnVzLT5hcGJfY2xrICVkXG4iLCBpMmNfYnVz LT5hcGJfY2xrKTsNCj4gPiArDQo+IA0KPiBOQUssIGRyb3AgdXNlbGVzcyBkZWJ1Zy4NCg0KV2ls bCByZW1vdmUgaXQuDQoNCj4gPiArDQo+ID4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihw ZGV2LT5kZXYub2Zfbm9kZSwgImNsb2NrLWZyZXF1ZW5jeSIsDQo+ICZpMmNfYnVzLT5idXNfZnJl cXVlbmN5KTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJZGV2X3dhcm4oJnBkZXYtPmRl diwgIkNvdWxkIG5vdCByZWFkIGJ1cy1mcmVxdWVuY3kgcHJvcGVydHlcbiIpOw0KPiA+ICsJCWky Y19idXMtPmJ1c19mcmVxdWVuY3kgPSAxMDAwMDA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyog SW5pdGlhbGl6ZSB0aGUgSTJDIGFkYXB0ZXIgKi8NCj4gPiArCWkyY19idXMtPmFkYXAub3duZXIg PSBUSElTX01PRFVMRTsNCj4gPiArCWkyY19idXMtPmFkYXAuYWxnbyA9ICZpMmNfYXN0MjYwMF9h bGdvcml0aG07DQo+ID4gKwlpMmNfYnVzLT5hZGFwLnJldHJpZXMgPSAwOw0KPiA+ICsJaTJjX2J1 cy0+YWRhcC5kZXYucGFyZW50ID0gaTJjX2J1cy0+ZGV2Ow0KPiA+ICsJaTJjX2J1cy0+YWRhcC5k ZXYub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiA+ICsJaTJjX2J1cy0+YWRhcC5hbGdv X2RhdGEgPSBpMmNfYnVzOw0KPiA+ICsJc3Ryc2NweShpMmNfYnVzLT5hZGFwLm5hbWUsIHBkZXYt Pm5hbWUsIHNpemVvZihpMmNfYnVzLT5hZGFwLm5hbWUpKTsNCj4gPiArCWkyY19zZXRfYWRhcGRh dGEoJmkyY19idXMtPmFkYXAsIGkyY19idXMpOw0KPiA+ICsNCj4gPiArCWFzdDI2MDBfaTJjX2lu aXQoaTJjX2J1cyk7DQo+ID4gKw0KPiA+ICsJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmcGRldi0+ ZGV2LCBpMmNfYnVzLT5pcnEsIGFzdDI2MDBfaTJjX2J1c19pcnEsIDAsDQo+ID4gKwkJCSAgICAg ICBkZXZfbmFtZSgmcGRldi0+ZGV2KSwgaTJjX2J1cyk7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4g PiArCQlnb3RvIHVubWFwOw0KPiA+ICsNCj4gPiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wo cGRldi0+ZGV2Lm9mX25vZGUsICJzbWJ1cy1hbGVydCIpKSB7DQo+IA0KPiBUaGVyZSBpcyBubyBz dWNoIHByb3BlcnR5LiBEb24ndCBhZGQgdW5kb2N1bWVudGVkIHByb3BlcnRpZXMgdG8geW91ciBj b2RlLg0KPiANCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArDQo+ID4gK2ZyZWVfaXJxOg0K PiA+ICsJZGV2bV9mcmVlX2lycSgmcGRldi0+ZGV2LCBpMmNfYnVzLT5pcnEsIGkyY19idXMpOw0K PiANCj4gV2h5Pw0KPiANCj4gPiArdW5tYXA6DQo+ID4gKwlkZXZtX2lvdW5tYXAoJnBkZXYtPmRl diwgaTJjX2J1cy0+cmVnX2Jhc2UpOw0KPiANCj4gV2h5Pw0KPiANCj4gPiArZnJlZV9tZW06DQo+ ID4gKwlkZXZtX2tmcmVlKCZwZGV2LT5kZXYsIGkyY19idXMpOw0KPiANCj4gV2h5Pw0KPiANCg0K U29ycnksIHRob3NlIGFyZSBwcm9iZSBmb2xsb3dpbmcsIGlmIGFueSBlcnJvciwgd2lsbCBnb3Rv IHRoaXMgbGFiZWwuDQpUbyByZWxlYXNlIG1lbS91bm1hcC9mcmVlX2lycS4gSXMgdGhpcyB1bm5l Y2Vzc2FyeT8gDQpJIHNhdyBtYW55IGRyaXZlciBzdWJtaXQgaXMgcmVtb3ZlIGFsbCBwcm9iZSBm YWlsIGdvdG8gbGFiZWwsIGlzIGp1c3QgcmV0dXJuIEVSUi4NCkRvIHlvdSBtZWFuIEkgZGlyZWN0 IGdvIGZvciB0aGlzIHdheT8NCg0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgYXN0MjYwMF9pMmNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpIHsNCj4gPiArCXN0cnVjdCBhc3QyNjAwX2kyY19idXMgKmkyY19idXMgPSBw bGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiArDQo+ID4gKwkvKiBEaXNhYmxlIGV2ZXJ5 dGhpbmcuICovDQo+ID4gKwl3cml0ZWwoMCwgaTJjX2J1cy0+cmVnX2Jhc2UgKyBBU1QyNjAwX0ky Q0NfRlVOX0NUUkwpOw0KPiA+ICsJd3JpdGVsKDAsIGkyY19idXMtPnJlZ19iYXNlICsgQVNUMjYw MF9JMkNNX0lFUik7DQo+ID4gKw0KPiA+ICsJZGV2bV9mcmVlX2lycSgmcGRldi0+ZGV2LCBpMmNf YnVzLT5pcnEsIGkyY19idXMpOw0KPiA+ICsNCj4gPiArCWkyY19kZWxfYWRhcHRlcigmaTJjX2J1 cy0+YWRhcCk7DQo+IA0KPiBXcm9uZyBvcmRlciBvZiBjbGVhbnVwLiBJdCBzaG91bGQgYmUgcmV2 ZXJzZWQgdG8gdGhlIHByb2JlLCB1bmxlc3MgeW91IGhhdmUNCj4gc29tZSByZWFzb24sIGJ1dCB0 aGVuIHBsZWFzZSBleHBsYWluLg0KDQpTb3JyeSwgdGhpcyBpbiByZW1vdmUgZnVuY3Rpb24sIGl0 IHNob3VsZCBkbyBpMmNfZGVsX2FkYXB0ZXIoJmkyY19idXMtPmFkYXApIGluIHRoZSBlbmQuDQpX aHkgdGhpcyBzaG91bGQgcmV2ZXJlZCB0byBwcm9iZT8NCj4gDQo+ID4gKw0KPiA+ICsjaWZkZWYg Q09ORklHX0kyQ19TTEFWRQ0KPiA+ICsJLyogZm9yIG1lbW9yeSBidWZmZXIgaW5pdGlhbCAqLw0K PiA+ICsJaWYgKGkyY19idXMtPm1vZGUgPT0gRE1BX01PREUpDQo+ID4gKwkJZG1hX2ZyZWVfY29o ZXJlbnQoaTJjX2J1cy0+ZGV2LCBJMkNfU0xBVkVfTVNHX0JVRl9TSVpFLA0KPiA+ICsJCQkJaTJj X2J1cy0+c2xhdmVfZG1hX2J1ZiwgaTJjX2J1cy0+c2xhdmVfZG1hX2FkZHIpOw0KPiAjZW5kaWYN Cj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgYXN0MjYwMF9pMmNfYnVzX2RyaXZlciA9IHsNCj4gPiArCS5wcm9i ZSA9IGFzdDI2MDBfaTJjX3Byb2JlLA0KPiA+ICsJLnJlbW92ZSA9IGFzdDI2MDBfaTJjX3JlbW92 ZSwNCj4gPiArCS5kcml2ZXIgPSB7DQo+ID4gKwkJLm5hbWUgPSBLQlVJTERfTU9ETkFNRSwNCj4g PiArCQkub2ZfbWF0Y2hfdGFibGUgPSBhc3QyNjAwX2kyY19idXNfb2ZfdGFibGUsDQo+ID4gKwl9 LA0KPiA+ICt9Ow0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFzdDI2MDBfaTJjX2J1c19k cml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigiUnlhbiBDaGVuIDxyeWFuX2NoZW5A YXNwZWVkdGVjaC5jb20+Iik7DQo+ID4gK01PRFVMRV9ERVNDUklQVElPTigiQVNQRUVEIEFTVDI2 MDAgSTJDIENvbnRyb2xsZXIgRHJpdmVyIik7DQo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsN Cj4gDQo+IEJlc3QgcmVnYXJkcywNCj4gS3J6eXN6dG9mDQoNCg==