From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A6C13A054A; Wed, 7 Sep 2022 20:12:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 962FD40143; Wed, 7 Sep 2022 20:12:38 +0200 (CEST) Received: from na01-obe.outbound.protection.outlook.com (mail-centralusazon11021018.outbound.protection.outlook.com [52.101.62.18]) by mails.dpdk.org (Postfix) with ESMTP id 9CE85400D6 for ; Wed, 7 Sep 2022 20:12:37 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dv2mD08hVSb+3zScb/3/JsMf92U8rTWaDRLXdhq2WG55YBTiZ4cnPazL/9F5Jtv3sWiK2FjUc03yOQiXn+xxI8HPJgvGna5pbWgYFy9pRurU/MlOe+XHYWYu5V1pPVXsdmqIOVqdnXKz1in1ZsMeNUZ8ndxceO50b9ik3+LoslUwLUgyzNWZVwEMcZ/Jd0coHhydGFri+6bAaV5yLxD782Er82sGjdIHPB/EBFm+T9zbNWk0hfQfARQUU1cVpv3ARiiN0WmUy54SZXtod4gCL2HCbGVFx16cyMOoiR0NpcINWvxYaZ5Vrw1Fg7oB9H6VIciP5Dzev0yWaGrOBykfKg== 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=yFcR5/kXkH6+a9+SvnR5YTAE1FZGtMtnAw4rga7iJGk=; b=CwS9Oo1Itzc82LZzfySfKVQNLlyDtzEODYLcECCycJNAQKLsPGCiQHNxoIqZHMqqVBw3pps89jckZiGidd2qjEWKQ5KmJDp2fBsSlpy3KYNEh89XmTLE7APRztJ2KtzMOkCd4ENsXWwASGCGIoWaD5Sw7VfS6nU2bJ3uXbMGpEToLhEbaAxTfozUobYr+m4TX3XIbNPVNZbo4dvSXd9LHbDajTVCgvdr+mKAQB8YLJ+W0E4pdbq0NtLVtY5T3zH/X58Et+6KnIx82i9Hh7fX0iiyRIGSNTb6/f1NQTL7DWuNjY+P00pqwGz0nszLOR+shEmngoANB9/nS9YCyDMbyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yFcR5/kXkH6+a9+SvnR5YTAE1FZGtMtnAw4rga7iJGk=; b=XUvF5xgags67h0qeGxxJEB2YzP7Ce/bGTAL2dLPYKZcVlx1lozvY2U1KYNV9YUWbTFEkV+/ZPmKCGs1+XbQiHgLur5tc6vBia6N/uoYTNsVoGm7YFazGuuMeZJaSEBAZfqzWtpTLWhWCYb4Sk4ELRsjcR/glyvZSTf+1KTLgMpg= Received: from PH7PR21MB3263.namprd21.prod.outlook.com (2603:10b6:510:1db::16) by LV2PR21MB3135.namprd21.prod.outlook.com (2603:10b6:408:176::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.2; Wed, 7 Sep 2022 18:12:34 +0000 Received: from PH7PR21MB3263.namprd21.prod.outlook.com ([fe80::c42c:5004:23c1:bcac]) by PH7PR21MB3263.namprd21.prod.outlook.com ([fe80::c42c:5004:23c1:bcac%8]) with mapi id 15.20.5632.002; Wed, 7 Sep 2022 18:12:34 +0000 From: Long Li To: Ferruh Yigit , "lihuisong (C)" CC: "dev@dpdk.org" , Ajay Sharma , Stephen Hemminger , thomas , Andrew Rybchenko Subject: RE: [Patch v6 01/18] net/mana: add basic driver, build environment and doc Thread-Topic: [Patch v6 01/18] net/mana: add basic driver, build environment and doc Thread-Index: AQHYvMMcd2wwHX4AIUyVWI99rwIFwq3IOaSAgAETaGCAByfnAIACxD7AgAANAoCAAJVWgIAAc6bg Date: Wed, 7 Sep 2022 18:12:34 +0000 Message-ID: References: <1661899911-13086-1-git-send-email-longli@linuxonhyperv.com> <1661899911-13086-2-git-send-email-longli@linuxonhyperv.com> <020abf35-2bb0-795c-fc2f-c970f12c875c@huawei.com> <849ec1cc-3774-6aa0-65a9-7461a483169d@huawei.com> <6a33d5a2-7b5a-d143-2979-451a60e413ae@huawei.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR21MB3263:EE_|LV2PR21MB3135:EE_ x-ms-office365-filtering-correlation-id: d49c66d9-4a21-47c8-295d-08da90fc8993 x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: F+u3Fn+oS7rsLa93Tc5RSTIvZHuanX2FQAYN1kTFW3shqdG/TsPXqmTm1tY23f9R0ltZPs65zlE5gciUUyEORjvHbRpoRhUq5UkTv22qBMLHQUUXzS/34Jzi3RKesQBEfJjq2IrrzmlqVv9ruLxFaugmdZnOZVZeR7RfNiOZYlb20Ky3xrd71UYt5JkFOzc49Eg0ou3wS3Jikm0LLaFlb+7mf23jimKzvlrnBmlbMjUwEB4SzYecNH6HLVCakz1Ciz2NFJzCbLPCr7s/dicKUS1mVmmeM/RjvR64UGvhMJLESrjUA41zFNDGe6mjksINZDLoANjTYhUsl75bZTpUnOnmcxeDg8aBgj9Y54Z59wcwfiPBJBcjdvYo6m4FreGBV47XxitVTQJVFD2+b4gPDxHLk4haz08Lpa5UPCn/E7qnojXL4Ap0LTTNnMgq1UM/x2Yxab8mT9qlIURfewwFIJaL49ZKq6YJSffpQs68JgUnVx1g+uDyGu41lajjUZu0DV2/+pCGTr9z+dAg0tGfRtUxedRtu9gKpoSvDnFQNFHF8K9SH1knkivfahhRu8/MJe4vKdsH7+KK0jy/RyyZCdd4TTe+/RADbdzcBXGCWrBTeHihrX6bn3lCe4Na7XbHEhI1Gc9i3deoVr/0iR9QTmwqqnX1Gikw0/BIVcsxM6xUM2czvqXLkhamrLIAHPBq988J9JdGGEMx0VR+fO6TTZfeXEp2JvnK1U2WJHLlAyNCbfa3KvqC3M7i+Cp2bgWOiUM9akW71E7q2tUbkqmtv2bdcvkKiF03z03Ug/ElrrVufbiRpY4TIvbZk/m6zNJL x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR21MB3263.namprd21.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(366004)(39860400002)(451199009)(9686003)(10290500003)(478600001)(6506007)(7696005)(316002)(110136005)(83380400001)(26005)(53546011)(54906003)(38070700005)(8990500004)(55016003)(33656002)(2906002)(5660300002)(52536014)(8936002)(86362001)(30864003)(76116006)(82950400001)(82960400001)(66446008)(66476007)(8676002)(64756008)(66946007)(122000001)(4326008)(66556008)(41300700001)(71200400001)(186003)(38100700002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NitXK0ZpckkwRktra3FZa3BNZjlEanp6N2JJb25rZ2pHSEdFaER0c3psbmdi?= =?utf-8?B?NFFOeWRyZ1NnbnNvbEpMTWVLVFZ0UGdiZkozVDNDL0ZLeUgvdW1vUTNjTU56?= =?utf-8?B?LytsV3cxM2tUektXcWk0bWJ2N3lvR2ZObUsram9OUDBweW9SNDg2L01WUUFo?= =?utf-8?B?a01oU3RwblRkR2ozMzB3eE5iVzhkVzB0QkxkSmVwUEllaGxtaU1tYysyM3FS?= =?utf-8?B?WklITHpiYUZ3aGVPMEIrRHJENjh6SXNGV0Q0UHZsNlp5L0N0d1ZiVThXT3Bx?= =?utf-8?B?UXhUSVgrYlV0Qm13NzVJMWw4MHdZWlo4QXBKZmpxTXJHNHZ1dUh4S204WmVu?= =?utf-8?B?bG0venNWdEN3TXhsVEwvU1dDdWtXcEdRdHVlcjljdDAvaFlZWFozTDNOYTUr?= =?utf-8?B?VjRXcHBndUV5cEpOMXhXa3R3NzV3N0lmUEJBZ1VoTmxqaGU5L0l1Y1lWOXlU?= =?utf-8?B?WjNxMEREZHdvY2EwakVzODFTQWNzajF0bnI0bmVMVkNydDRLYVdGN0IrTi9p?= =?utf-8?B?RStScW1ucHROZkpFS2RnTXR4MHNtMnhGcFdSZTc1TEZneHBkbXM2VCtacnRH?= =?utf-8?B?bjJwN2pEOTFCQW50bDNFMU5iU3hmZ3BvSkhKMzRVNGRwOEpSVDVoYWtSR2Nj?= =?utf-8?B?d2Q3VXpIZmxleGZ4TUZrd09Cako0VGtzcTJyR21pRUlydDZYTnpDNWZxaVYy?= =?utf-8?B?L2Jwcm9NYWlDL3ZWYzR0OGQxSy9qWlQwOHh2YTdiUlhqODcwMTNzSzNaUkND?= =?utf-8?B?Zk10emY3Snl3bDJCQktYNWE0Z3Y5U0xaQWErSk9iSnR5QkxoZ2N6Zi9uTkpH?= =?utf-8?B?MEcza3NhUFpXakFhajl5eTFWK1pqV20wWndQeTB2VWRkRm40a1JwNnVGNjNy?= =?utf-8?B?bVgwcFBXQ1NyeEhlNW5NVzJYdHFjbVNBUmlrR3RHUGUxNmYrZGJoMURKU096?= =?utf-8?B?d3pDTUxPM2NOcTl3eSsyQmpKNVVGaDBGd0xzNDBYeXIxL24rUXhrMkRrWFBP?= =?utf-8?B?dHh0K2pkTnVGOStDdXBaNlVNU2pKVXA5a2F2VWR6a0hVaEgreVNKeDJrek9L?= =?utf-8?B?QWZ0UytOZXU0RFgxNzdHNXRqRXNidkNvNGYvcis3UUFzZFNYVmZiWGlJYzJU?= =?utf-8?B?T0lhWG9zbjd3SFBiUktuVTU4andhejZ0OW5xdjlNSlZMbEZhUzRieUYwVTNq?= =?utf-8?B?SUVEeTBWUzlZZU1GbUNnc1FILytocTFKRHdOUWwvNFlPVlRnVnhLT2swdTBL?= =?utf-8?B?Njc2RC80U1hGY2VhZUFQcDgrclZ4ejM0MXU2ZWJ0K2tOMEk3SkVwVGNLQzBp?= =?utf-8?B?NFhkcytqZTZESkJPVDMxOUdvQmJIT3ZaM0dRRVFucnc1UEZHMmxobExGTTkw?= =?utf-8?B?SFFEZHhqMFBTbWRIUGh2Y3dkNGU5UHFHWHJnbkl0d2QrcTErRmt1VFlZc3FX?= =?utf-8?B?bE5hUmp6OElweVBUd2FURFJvR25hczRldDNrTC9TTjkybGdFSm56NDZQNjEr?= =?utf-8?B?TUFSa2ROSUFqYnVtMk4rbTNiUnJHeTFrMUV0dWxHSkdkK0RJeFpjMW5IV2li?= =?utf-8?B?b2FRM05TenlMNmE1SUluZEQ0bTRWZmxQck9wRHUrK2g0eWhsOFl4UzBMMDNQ?= =?utf-8?B?R2ZpaTB2ZWJHNGNUYitzRkxhNlhrUUQ3YTF3R1Fvdk1SZ0lxSW5RUzVsZEdC?= =?utf-8?B?N2JIc2J0VUtMakRFSXYwMGljQ2grVkNjcys0ZGlXcXI1NUpoZ0swTURKSVVZ?= =?utf-8?B?TUNlcWRsdFBoT0g0QkF1QWM1dC80NG53TnkvS2FjRnY0b3hsZ3dKVlI0cFQr?= =?utf-8?B?Z3RwTk96VGt5Y3JzYktYM21rdXZDYy9QWUh6aTFYbkpkSVFvYjNYamRGdnVQ?= =?utf-8?B?emVhQmtaZnREbk9ZR1VrekNtUnRJZndRMm5mY09MMytmeWNJNVJpanRYZ28z?= =?utf-8?B?RitPZjZPQjc3MDBBR0NOeW10a3pLcWQzRjdmM2xVcW0ySGRHbW5XYnpUdnZv?= =?utf-8?B?STU4VVNKSWhSTi9lYTA0eUFwNlRtSkxUMTF3bWEzUVZIUUNXZ29ydGlmT09s?= =?utf-8?B?enk2NWErQys4U01iaDJVM1NsWWY2RjRhRGhiVEF6dERicUNOTWYxbTQ3N3Uw?= =?utf-8?Q?kWLy8TjZ+f6JYPw2iLePy3oe9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR21MB3135 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBTdWJqZWN0OiBSZTogW1BhdGNoIHY2IDAxLzE4XSBuZXQvbWFuYTogYWRkIGJhc2ljIGRyaXZl ciwgYnVpbGQgZW52aXJvbm1lbnQNCj4gYW5kIGRvYw0KPiANCj4gT24gOS83LzIwMjIgMzoxNiBB TSwgbGlodWlzb25nIChDKSB3cm90ZToNCj4gPiBDQVVUSU9OOiBUaGlzIG1lc3NhZ2UgaGFzIG9y aWdpbmF0ZWQgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2UuIFBsZWFzZQ0KPiA+IHVzZSBwcm9wZXIg anVkZ21lbnQgYW5kIGNhdXRpb24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZw0K PiA+IGxpbmtzLCBvciByZXNwb25kaW5nIHRvIHRoaXMgZW1haWwuDQo+ID4NCj4gPg0KPiA+IOWc qCAyMDIyLzkvNyA5OjM2LCBMb25nIExpIOWGmemBkzoNCj4gPj4+IFN1YmplY3Q6IFJlOiBbUGF0 Y2ggdjYgMDEvMThdIG5ldC9tYW5hOiBhZGQgYmFzaWMgZHJpdmVyLCBidWlsZA0KPiA+Pj4gZW52 aXJvbm1lbnQgYW5kIGRvYw0KPiA+Pj4NCj4gPj4+DQo+ID4+PiDlnKggMjAyMi85LzEgMjowNSwg TG9uZyBMaSDlhpnpgZM6DQo+ID4+Pj4+IFN1YmplY3Q6IFJlOiBbUGF0Y2ggdjYgMDEvMThdIG5l dC9tYW5hOiBhZGQgYmFzaWMgZHJpdmVyLCBidWlsZA0KPiA+Pj4+PiBlbnZpcm9ubWVudCBhbmQg ZG9jDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+IOWcqCAyMDIyLzgvMzEgNjo1MSwgbG9uZ2xp QGxpbnV4b25oeXBlcnYuY29tIOWGmemBkzoNCj4gPj4+Pj4+IEZyb206IExvbmcgTGkgPGxvbmds aUBtaWNyb3NvZnQuY29tPg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE1BTkEgaXMgYSBQQ0kgZGV2aWNl LiBJdCB1c2VzIElCIHZlcmJzIHRvIGFjY2VzcyBoYXJkd2FyZSB0aHJvdWdoDQo+ID4+Pj4+PiB0 aGUga2VybmVsIFJETUEgbGF5ZXIuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBidWlsZCBlbnZpcm9u bWVudCBhbmQNCj4gPj4+Pj4+IGJhc2ljIGRldmljZSBwcm9iZSBmdW5jdGlvbnMuDQo+ID4+Pj4+ Pg0KPiA+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTG9uZyBMaSA8bG9uZ2xpQG1pY3Jvc29mdC5jb20+ DQo+ID4+Pj4+PiAtLS0NCj4gPj4+Pj4+IENoYW5nZSBsb2c6DQo+ID4+Pj4+PiB2MjoNCj4gPj4+ Pj4+IEZpeCB0eXBvcy4NCj4gPj4+Pj4+IE1ha2UgdGhlIGRyaXZlciBidWlsZCBvbmx5IG9uIHg4 Ni02NCBhbmQgTGludXguDQo+ID4+Pj4+PiBSZW1vdmUgdW51c2VkIGhlYWRlciBmaWxlcy4NCj4g Pj4+Pj4+IENoYW5nZSBwb3J0IGRlZmluaXRpb24gdG8gdWludDE2X3Qgb3IgdWludDhfdCAoZm9y IElCKS4NCj4gPj4+Pj4+IFVzZSBnZXRsaW5lKCkgaW4gcGxhY2Ugb2YgZmdldHMoKSB0byByZWFk IGFuZCB0cnVuY2F0ZSBhIGxpbmUuDQo+ID4+Pj4+PiB2MzoNCj4gPj4+Pj4+IEFkZCBtZXNvbiBi dWlsZCBjaGVjayBmb3IgcmVxdWlyZWQgZnVuY3Rpb25zIGZyb20gUkRNQSBkaXJlY3QNCj4gdmVy Yg0KPiA+Pj4+Pj4gaGVhZGVyIGZpbGUNCj4gPj4+Pj4+IHY0Og0KPiA+Pj4+Pj4gUmVtb3ZlIGV4 dHJhICJcbiIgaW4gbG9nZ2luZyBjb2RlLg0KPiA+Pj4+Pj4gVXNlICJyIiBpbiBwbGFjZSBvZiAi cmIiIGluIGZvcGVuKCkgdG8gcmVhZCB0ZXh0IGZpbGVzLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFtz bmlwXQ0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK3N0YXRpYyBpbnQgbWFuYV9wY2lfcHJvYmVfbWFj KHN0cnVjdCBydGVfcGNpX2RyaXZlciAqcGNpX2Rydg0KPiA+Pj4+PiBfX3J0ZV91bnVzZWQsDQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2LA0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWFjX2Fk ZHIpIHsNCj4gPj4+Pj4+ICsgc3RydWN0IGlidl9kZXZpY2UgKippYnZfbGlzdDsNCj4gPj4+Pj4+ ICsgaW50IGlidl9pZHg7DQo+ID4+Pj4+PiArIHN0cnVjdCBpYnZfY29udGV4dCAqY3R4Ow0KPiA+ Pj4+Pj4gKyBzdHJ1Y3QgaWJ2X2RldmljZV9hdHRyX2V4IGRldl9hdHRyOw0KPiA+Pj4+Pj4gKyBp bnQgbnVtX2RldmljZXM7DQo+ID4+Pj4+PiArIGludCByZXQgPSAwOw0KPiA+Pj4+Pj4gKyB1aW50 OF90IHBvcnQ7DQo+ID4+Pj4+PiArIHN0cnVjdCBtYW5hX3ByaXYgKnByaXYgPSBOVUxMOw0KPiA+ Pj4+Pj4gKyBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYgPSBOVUxMOw0KPiA+Pj4+Pj4gKyBi b29sIGZvdW5kX3BvcnQ7DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiArIGlidl9saXN0ID0gaWJ2X2dl dF9kZXZpY2VfbGlzdCgmbnVtX2RldmljZXMpOw0KPiA+Pj4+Pj4gKyBmb3IgKGlidl9pZHggPSAw OyBpYnZfaWR4IDwgbnVtX2RldmljZXM7IGlidl9pZHgrKykgew0KPiA+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGlidl9kZXZpY2UgKmliZGV2ID0gaWJ2X2xpc3RbaWJ2X2lkeF07DQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcnRlX3BjaV9hZGRyIHBjaV9hZGRyOw0K PiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgRFJWX0xPRyhJTkZPLCAiUHJv YmUgZGV2aWNlIG5hbWUgJXMgZGV2X25hbWUgJXMNCj4gPj4+Pj4gaWJkZXZfcGF0aCAlcyIsDQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWJkZXYtPm5hbWUsIGli ZGV2LT5kZXZfbmFtZSwgaWJkZXYtDQo+ID4+Pj4+PiBpYmRldl9wYXRoKTsNCj4gPj4+Pj4+ICsN Cj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgIGlmIChtYW5hX2lidl9kZXZpY2VfdG9fcGNpX2Fk ZHIoaWJkZXYsICZwY2lfYWRkcikpDQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29udGludWU7DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oCAvKiBJZ25vcmUgaWYgdGhpcyBJQiBkZXZpY2UgaXMgbm90IHRoaXMgUENJIGRldmljZSAqLw0K PiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgaWYgKHBjaV9kZXYtPmFkZHIuZG9tYWluICE9IHBj aV9hZGRyLmRvbWFpbiB8fA0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwY2lf ZGV2LT5hZGRyLmJ1cyAhPSBwY2lfYWRkci5idXMgfHwNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcGNpX2Rldi0+YWRkci5kZXZpZCAhPSBwY2lfYWRkci5kZXZpZCB8fA0KPiA+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwY2lfZGV2LT5hZGRyLmZ1bmN0aW9uICE9 IHBjaV9hZGRyLmZ1bmN0aW9uKQ0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGNvbnRpbnVlOw0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAg Y3R4ID0gaWJ2X29wZW5fZGV2aWNlKGliZGV2KTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg IGlmICghY3R4KSB7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gb3BlbiBJQiBkZXZpY2UgJXMiLA0KPiA+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpYmRldi0+bmFt ZSk7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7 DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoCByZXQgPSBpYnZfcXVlcnlfZGV2aWNlX2V4KGN0eCwgTlVMTCwgJmRldl9h dHRyKTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgIERSVl9MT0coSU5GTywgImRldl9hdHRy Lm9yaWdfYXR0ci5waHlzX3BvcnRfY250ICV1IiwNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkZXZfYXR0ci5vcmlnX2F0dHIucGh5c19wb3J0X2NudCk7DQo+ID4+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCBmb3VuZF9wb3J0ID0gZmFsc2U7DQo+ID4+Pj4+PiArDQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCBmb3IgKHBvcnQgPSAxOyBwb3J0IDw9IGRldl9hdHRy Lm9yaWdfYXR0ci5waHlzX3BvcnRfY250Ow0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHBvcnQrKykgew0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBpYnZfcGFyZW50X2RvbWFpbl9pbml0X2F0dHIgYXR0ciA9IHt9Ow0KPiA+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBydGVfZXRoZXJfYWRk ciBhZGRyOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoYXIg YWRkcmVzc1s2NF07DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y2hhciBuYW1lW1JURV9FVEhfTkFNRV9NQVhfTEVOXTsNCj4gPj4+Pj4+ICsNCj4gPj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBnZXRfcG9ydF9tYWMoaWJkZXYs IHBvcnQsICZhZGRyKTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAocmV0KQ0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4gPj4+Pj4+ICsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobWFjX2FkZHIgJiYgIXJ0ZV9pc19zYW1lX2V0aGVy X2FkZHIoJmFkZHIsDQo+ID4+Pj4+IG1hY19hZGRyKSkNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+ID4+Pj4+PiAr DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnRlX2V0aGVyX2Zv cm1hdF9hZGRyKGFkZHJlc3MsIHNpemVvZihhZGRyZXNzKSwNCj4gPj4+Pj4gJmFkZHIpOw0KPiA+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSVl9MT0coSU5GTywgImRl dmljZSBsb2NhdGVkIHBvcnQgJXUgYWRkcmVzcw0KPiA+Pj4+PiAlcyIsDQo+ID4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnQsIGFkZHJl c3MpOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvdW5kX3Bv cnQgPSB0cnVlOw0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHByaXYgPSBydGVfem1hbGxvY19zb2NrZXQoTlVMTCwgc2l6ZW9mKCpwcml2KSwN Cj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUlRFX0NBQ0hFX0xJTkVfU0la RSwNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU09DS0VUX0lEX0FOWSk7 DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFwcml2KSB7 DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldCA9IC1FTk9NRU07DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbGVkOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gPj4+Pj4+ICsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICIlc19w b3J0JWQiLA0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHBjaV9kZXYtPmRldmljZS5uYW1lLCBwb3J0KTsNCj4gPj4+Pj4+ICsNCj4g Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocnRlX2VhbF9wcm9j ZXNzX3R5cGUoKSA9PQ0KPiA+Pj4+PiBSVEVfUFJPQ19TRUNPTkRBUlkpIHsNCj4gPj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGZkOw0K PiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBldGhfZGV2ID0NCj4gPj4+Pj4gcnRlX2V0aF9kZXZfYXR0YWNoX3NlY29u ZGFyeShuYW1lKTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKCFldGhfZGV2KSB7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUlZfTE9H KEVSUiwgIkNhbid0IGF0dGFjaCB0byBkZXYNCj4gPj4+Pj4gJXMiLA0KPiA+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG5hbWUpOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVOT01F TTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbGVkOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+PiArDQo+ID4+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV0 aF9kZXYtPmRldmljZSA9ICZwY2lfZGV2LT5kZXZpY2U7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV0aF9kZXYtPmRldl9vcHMgPSAm bWFuYV9kZXZfc2VjX29wczsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gbWFuYV9wcm9jX3ByaXZfaW5pdChldGhfZGV2KTsN Cj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKHJldCkNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbGVkOw0KPiA+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcml2LT5wcm9j ZXNzX3ByaXYgPSBldGhfZGV2LQ0KPiA+Pj4+Pj4gcHJvY2Vzc19wcml2YXRlOw0KPiA+Pj4+Pj4g Kw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvKiBHZXQgdGhlIElCIEZEIGZyb20gdGhlIHByaW1hcnkNCj4gPj4+Pj4+IHByb2Nlc3Mg Ki8NCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZmQgPQ0KPiA+Pj4+PiBtYW5hX21wX3JlcV92ZXJic19jbWRfZmQoZXRoX2Rldik7DQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChmZCA8IDApIHsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSVl9MT0coRVJSLCAiRmFpbGVkIHRv IGdldCBGRCAlZCIsDQo+ID4+Pj4+IGZkKTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9E RVY7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxlZDsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiA+Pj4+Pj4gKw0KPiA+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXQgPQ0KPiA+Pj4+PiBtYW5hX21hcF9kb29yYmVsbF9zZWNvbmRhcnkoZXRoX2RldiwgZmQpOw0K PiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAocmV0KSB7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUlZfTE9HKEVSUiwgIkZhaWxlZCBzZWNv bmRhcnkNCj4gPj4+Pj4gbWFwICVkIiwNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmZCk7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxlZDsNCj4gPj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiA+Pj4+Pj4gKw0K PiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAvKiBmZCBpcyBubyBub3QgdXNlZCBhZnRlciBtYXBwaW5nDQo+ID4+Pj4+PiBkb29yYmVsbCAq Lw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjbG9zZShmZCk7DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ0ZV9zcGlubG9ja19sb2NrKCZtYW5hX3No YXJlZF9kYXRhLQ0KPiA+Pj4+Pj4gbG9jayk7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hbmFfc2hhcmVkX2RhdGEtPnNlY29uZGFy eV9jbnQrKzsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbWFuYV9sb2NhbF9kYXRhLnNlY29uZGFyeV9jbnQrKzsNCj4gPj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnRlX3NwaW5s b2NrX3VubG9jaygmbWFuYV9zaGFyZWRfZGF0YS0NCj4gPj4+Pj4+IGxvY2spOw0KPiA+Pj4+Pj4g Kw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBydGVfZXRoX2NvcHlfcGNpX2luZm8oZXRoX2RldiwgcGNpX2Rldik7DQo+ID4+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ0ZV9ldGhf ZGV2X3Byb2JpbmdfZmluaXNoKGV0aF9kZXYpOw0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBJbXBvc3NpYmxl IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBwb3J0DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBtYXRjaGluZyBhIE1BQyBhZGRyZXNz DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKi8NCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29udGludWU7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfQ0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGV0aF9kZXYgPSBydGVfZXRoX2Rldl9hbGxvY2F0ZShuYW1lKTsNCj4gPj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIWV0aF9kZXYpIHsNCj4gPj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 ID0gLUVOT01FTTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBmYWlsZWQ7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQ0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGV0aF9kZXYtPmRhdGEtPm1hY19hZGRycyA9DQo+ID4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ0ZV9jYWxsb2Mo Im1hbmFfbWFjIiwgMSwNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihzdHJ1Y3QNCj4g Pj4+Pj4+IHJ0ZV9ldGhlcl9hZGRyKSwgMCk7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKCFldGhfZGV2LT5kYXRhLT5tYWNfYWRkcnMpIHsNCj4gPj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0g LUVOT01FTTsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ290byBmYWlsZWQ7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQ0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJmFkZHIsIGV0aF9kZXYtPmRhdGEtDQo+ ID4+Pj4+PiBtYWNfYWRkcnMpOw0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHByaXYtPmliX3BkID0gaWJ2X2FsbG9jX3BkKGN0eCk7DQo+ID4+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFwcml2LT5pYl9wZCkg ew0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBEUlZfTE9HKEVSUiwgImlidl9hbGxvY19wZCBmYWlsZWQgcG9ydCAlZCIsDQo+ID4+Pj4+ IHBvcnQpOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXQgPSAtRU5PTUVNOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxlZDsNCj4gPj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogQ3JlYXRlIGEgcGFyZW50IGRvbWFpbiB3 aXRoIHRoZSBwb3J0IG51bWJlciAqLw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGF0dHIucGQgPSBwcml2LT5pYl9wZDsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhdHRyLmNvbXBfbWFzayA9DQo+ID4+Pj4+IElCVl9QQVJFTlRf RE9NQUlOX0lOSVRfQVRUUl9QRF9DT05URVhUOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGF0dHIucGRfY29udGV4dCA9ICh2b2lkICopKHVpbnQ2NF90KXBvcnQ7 DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+aWJfcGFy ZW50X3BkID0gaWJ2X2FsbG9jX3BhcmVudF9kb21haW4oY3R4LA0KPiA+Pj4+PiAmYXR0cik7DQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFwcml2LT5pYl9w YXJlbnRfcGQpIHsNCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRFJWX0xPRyhFUlIsDQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiaWJ2X2FsbG9j X3BhcmVudF9kb21haW4gZmFpbGVkDQo+ID4+Pj4+PiBwb3J0DQo+ID4+Pj4+ICVkIiwNCj4gPj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHBvcnQpOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5PTUVNOw0KPiA+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxlZDsNCj4g Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+PiArDQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+aWJfY3R4ID0g Y3R4Ow0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaXYtPnBv cnRfaWQgPSBldGhfZGV2LT5kYXRhLT5wb3J0X2lkOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHByaXYtPmRldl9wb3J0ID0gcG9ydDsNCj4gPj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSA9 IHByaXY7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+ ZGV2X2RhdGEgPSBldGhfZGV2LT5kYXRhOw0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaXYtPm1heF9yeF9xdWV1ZXMgPSBkZXZfYXR0ci5v cmlnX2F0dHIubWF4X3FwOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHByaXYtPm1heF90eF9xdWV1ZXMgPSBkZXZfYXR0ci5vcmlnX2F0dHIubWF4X3FwOw0KPiA+ Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaXYt Pm1heF9yeF9kZXNjID0NCj4gPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgUlRFX01JTihkZXZfYXR0ci5vcmlnX2F0dHIubWF4X3FwX3dyLA0K PiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGV2X2F0dHIub3JpZ19hdHRyLm1heF9jcWUpOw0KPiA+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaXYtPm1heF90eF9kZXNjID0NCj4g Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg UlRFX01JTihkZXZfYXR0ci5vcmlnX2F0dHIubWF4X3FwX3dyLA0KPiA+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZGV2X2F0dHIub3JpZ19hdHRyLm1heF9jcWUpOw0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaXYtPm1heF9zZW5kX3NnZSA9IGRldl9hdHRy Lm9yaWdfYXR0ci5tYXhfc2dlOw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHByaXYtPm1heF9yZWN2X3NnZSA9IGRldl9hdHRyLm9yaWdfYXR0ci5tYXhfc2dlOw0K PiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBy aXYtPm1heF9tciA9IGRldl9hdHRyLm9yaWdfYXR0ci5tYXhfbXI7DQo+ID4+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+bWF4X21yX3NpemUgPQ0KPiA+Pj4+PiBk ZXZfYXR0ci5vcmlnX2F0dHIubWF4X21yX3NpemU7DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJWX0xPRyhJTkZPLCAiZGV2ICVzIG1heCBx dWV1ZXMgJWQgZGVzYyAlZA0KPiA+Pj4+PiBzZ2UgJWQiLA0KPiA+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuYW1lLCBwcml2LT5tYXhfcnhf cXVldWVzLCBwcml2LQ0KPiA+Pj4+Pj4gbWF4X3J4X2Rlc2MsDQo+ID4+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaXYtPm1heF9zZW5kX3Nn ZSk7DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcnRlX3NwaW5sb2NrX2xvY2soJm1hbmFfc2hhcmVkX2RhdGEtPmxvY2spOw0KPiA+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hbmFfc2hhcmVkX2RhdGEtPnByaW1h cnlfY250Kys7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnRl X3NwaW5sb2NrX3VubG9jaygmbWFuYV9zaGFyZWRfZGF0YS0+bG9jayk7DQo+ID4+Pj4+PiArDQo+ ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXRoX2Rldi0+ZGF0YS0+ ZGV2X2ZsYWdzIHw9DQo+ID4+Pj4+IFJURV9FVEhfREVWX0lOVFJfUk1WOw0KPiA+Pj4+Pj4gKw0K PiA+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV0aF9kZXYtPmRldmlj ZSA9ICZwY2lfZGV2LT5kZXZpY2U7DQo+ID4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZXRoX2Rldi0+ZGF0YS0+ZGV2X2ZsYWdzIHw9DQo+ID4+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJURV9FVEhfREVWX0FVVE9G SUxMX1FVRVVFX1hTVEFUUzsNCj4gPj4+Pj4+ICsNCj4gPj4+Pj4gUGxlYXNlIGRvIG5vdCB1c2Ug dGhlIHRlbXBvcmFyeSBtYWNyby4gUGxlYXNlIHJldmlldyB0aGlzIHBhdGNoOg0KPiA+Pj4+Pg0K PiA+Pj4+PiBmMzBlNjliNDFmOTQgKCJldGhkZXY6IGFkZCBkZXZpY2UgZmxhZyB0byBieXBhc3Mg YXV0by1maWxsZWQgcXVldWUNCj4gPj4+Pj4geHN0YXRzIikNCj4gPj4+Pj4NCj4gPj4+Pj4gVGhp cyBwYXRjaCByZXF1aXJlcyB0aGF0IHBlciBxdWV1ZSBzdGF0aXN0aWNzIGFyZSBmaWxsZWQgaW4N Cj4gPj4+Pj4gLnhzdGF0c19nZXQoKSBieSBQTUQuDQo+ID4+Pj4gVGhhbmtzIGZvciBwb2ludGlu ZyB0aGlzIG91dC4NCj4gPj4+Pg0KPiA+Pj4+IEl0IHNlZW1zIHNvbWUgUE1EcyBhcmUgc3RpbGwg ZGVwZW5kaW5nIG9uIHRoaXMgZmxhZyBmb3IgeHN0YXRzLg0KPiA+Pj4+DQo+ID4+Pj4gTUFOQSBk b2Vzbid0IGltcGxlbWVudCB4c3RhdHNfZ2V0KCkgY3VycmVudGx5LCB0aGlzIGZsYWcgaXMgdXNl ZnVsLg0KPiA+Pj4+IElzIGl0DQo+ID4+PiBva2F5IHRvIGtlZXAgdXNpbmcgdGhpcyBmbGFnIGJl Zm9yZSBpdCdzIGZpbmFsbHkgdGhlIHRpbWUgdG8gcmVtb3ZlDQo+ID4+PiBpdCBmcm9tIGFsbA0K PiA+Pj4gUE1Ecywgb3Igd2hlbiBNQU5BIGltcGxlbWVudHMgeHN0YXRzPw0KPiA+Pj4gWWVzLCB5 b3VyIHhzdGF0cyBkb2Vzbid0IGltcGxlbWVudCBub3cuIFBlciBxdWV1ZSBzdGF0cyBzaG91bGQg YmUNCj4gPj4+IGZpbGxlZCBpbg0KPiA+Pj4geHN0YXRzIEFQSSwgYW5kIHRoZSBzdGF0cyBBUEkg Y2Fubm90IHNlZSBwZXIgcXVldWUgc3RhdHMsIHNvIHN0YXRzDQo+ID4+PiBBUEkgaW4gZHJpdmVy DQo+ID4+PiBzaG91bGRuJ3QgZmlsbCBpdChzdWdnZXN0IHRoYXQgZGVsZXRlIGl0IGZyb20gcGF0 Y2ggMTcvMTgpLg0KPiA+Pj4NCj4gPj4+IEkgZ3Vlc3MgdGhpcyBmbGFnIGNhbiBiZSByZW1vdmVk IGlmIFBNRCBkb2VzIG5vdCBzdXBwb3J0IHhzdGF0cy4NCj4gPj4+Pg0KPiA+PiBJIGRvbid0IHVu ZGVyc3RhbmQgeW91ciBzdWdnZXN0aW9uLiBBbiBhcHBsaWNhdGlvbiBjYW4gY2FsbA0KPiA+PiBy dGVfZXRoX3N0YXRzX2dldCgpIHRvIGdldCBwb3J0IHN0YXRzLCBhbmQgdGhpcyB3aWxsIGNhbGwg aW50bw0KPiA+PiBzdGF0c19nZXQoKSBpbiB0aGUgZHJpdmVyLCBhcyBpbXBsZW1lbnRlZCBpbiBw YXRjaCAxNy8xOC4NCj4gPj4NCj4gPj4gV2hlbiBmbGFnIFJURV9FVEhfREVWX0FVVE9GSUxMX1FV RVVFX1hTVEFUU8KgIGlzIHNldCwgYW4gYXBwbGljYXRpb24NCj4gPj4gY2FuIGFsc28gdXNlIHJ0 ZV9ldGhfeHN0YXRzX2dldCgpIHRvIGdldCBwb3J0IHN0YXRzIGV2ZW4gdGhlIGRyaXZlcg0KPiA+ PiBkb2Vzbid0IGltcGxlbWVudCB4c3RhdHNfZ2V0KCkuDQo+ID4NCj4gPiBJIHRoaW5rIG5ldyBQ TUQgc2hvdWxkIGZvbGxvdyB0aGUgYW5ub3VuY2VkIHN3aXRjaCBGZXJydWggbWVudGlvbmVkLA0K PiA+IG90aGVyd2lzZSwgdGhlIHN3aXRjaCB3aWxsIG5ldmVyIGJlIGNvbXBsZXRlZC4NCj4gPg0K PiA+IFN1Z2dlc3QgdGhhdCBtYW5hIGRyaXZlciBjYW4gaW1wbGVtZW50IGEgc2ltcGxlIHhzdGF0 c19nZXQoKSB0byBmaWxsIHBlcg0KPiA+IHF1ZXVlIHN0YXRzIGlmIHlvdSB3YW50IHRvIHN1cHBv cnQgcGVyIHF1ZXVlIHN0YXRzLg0KPiA+DQo+ID4gQEZlcnJ1aCwgd2hhdCBkbyB5b3UgdGhpbms/ DQo+ID4NCj4gDQo+IEhpIEh1aXNvbmcsDQo+IA0KPiBUaGFua3MgZm9yIHJlbWluZGluZyBpdCwg eWVzIGl0IG1ha2VzIHNlbnNlIHRvIGltcGxlbWVudCBuZXcgbWV0aG9kIGluDQo+IG5ldyBkcml2 ZXJzLg0KPiANCj4gDQo+IExvbmcsDQo+IA0KPiBUaGVyZSBpcyBhIGxvbmcgdGVybSBwbGFuIHRv IG1vdmUgcXVldWUgc3RhdHMgZnJvbSBiYXNpYyBzdGF0cyBzdHJ1Y3R1cmUNCj4gdG8geHN0YXRz LiBUaGUgcmVhc29uIGJlaGluZCBpcyBpbmNyZWFzaW5nIG51bWJlciBvZiBxdWV1ZXMgbWFrZXMg YmFzaXMNCj4gc3RhdHMgc3RydWN0IHRvbyBiaWcsIG9uIHRoZSBvdGhlciBoYW5kIHhzdGF0cyBp cyBtb3JlIGZsZXhpYmxlIGFuZCBubw0KPiBmaXhlcyBzaXplIGFycmF5IGlzIHJlcXVpcmVkLg0K PiANCj4gWW91IGNhbiByZW1vdmUgdGhlICdSVEVfRVRIX0RFVl9BVVRPRklMTF9RVUVVRV9YU1RB VFMnIGZsYWcgYW5kDQo+IGRyaXZlcg0KPiB3b24ndCBzdXBwb3J0IHF1ZXVlIHN0YXRzIGluIHhz dGF0cyBieSBkZWZhdWx0LiBJbnN0ZWFkIHRvIGhhdmUgdGhhdA0KPiBzdXBwb3J0IHlvdSB3aWxs IG5lZWQgdG8gaW1wbGVtZW50IHhzdGF0cywgbGF0ZXIgb3IgaW4gdGhpcyBzZXQuDQo+IFdoZW4g cXVldWUgc3RhdHMgaW1wbGVtZW50ZWQgaW4geHN0YXRzLCBwbGVhc2UgcmVtZW1iZXIgdG8gcmVt b3ZlDQo+IHVwZGF0aW5nICdzdGF0cy0+cV8qJyBpbiBiYXNpYyBzdGF0cy4NCj4gDQo+IEFsc28g aW4gMTcvMTgsIHRoZSBmZWF0dXJlICdTdGF0cyBwZXIgcXVldWUnIHNlZW1zIGFkZGVkLCBidXQg dGhhdCBpcw0KPiBub3QgY29ycmVjdCwgZmVhdHVyZSBuYW1lIGlzIG1pc2xlYWRpbmcgaGVyZS4g QnV0IGl0IGlzIGFib3V0IHF1ZXVlDQo+IHN0YXRzIG1hcHBpbmcsIHBsZWFzZSBjaGVjayAnZG9j L2d1aWRlcy9uaWNzL2ZlYXR1cmVzLnJzdCcuDQo+IFNvIGNhbiB5b3UgcGxlYXNlIGRyb3AgdGhh dCBmZWF0dXJlLg0KDQpUaGFuayB5b3UgZm9yIGNsZWFyaW5nIHRoZSBjb25mdXNpb24uIEknbSBy ZW1vdmluZyAiU3RhdHMgcGVyIHF1ZXVlIiBpbiBkb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvbWFu YS5pbmkuIFRoZSBvdGhlciBwYXJ0cyBvZiBwYXRjaCAxNy8xOCBhcmUgc3RpbGwgcmVsZXZhbnQg c28gbm90IGNoYW5naW5nIHRoZW0uDQoNCkFsc28gcmVtb3ZpbmcgJ1JURV9FVEhfREVWX0FVVE9G SUxMX1FVRVVFX1hTVEFUUycgYXMgc3VnZ2VzdGVkLg0K