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 0515A45B12; Fri, 11 Oct 2024 10:29:25 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E3A72402E0; Fri, 11 Oct 2024 10:29:24 +0200 (CEST) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 67F474028B for ; Fri, 11 Oct 2024 10:29:23 +0200 (CEST) Received: from mail.maildlp.com (unknown [172.18.186.216]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4XQ06h0g6mz6LDS5; Fri, 11 Oct 2024 16:25:00 +0800 (CST) Received: from frapeml100006.china.huawei.com (unknown [7.182.85.201]) by mail.maildlp.com (Postfix) with ESMTPS id 1555B1400D7; Fri, 11 Oct 2024 16:29:22 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100006.china.huawei.com (7.182.85.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Fri, 11 Oct 2024 10:29:21 +0200 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.039; Fri, 11 Oct 2024 10:29:21 +0200 From: Konstantin Ananyev To: Ferruh Yigit , Dariusz Sosnowski , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Andrew Rybchenko CC: "dev@dpdk.org" , Bruce Richardson Subject: RE: [RFC 0/4] ethdev: rework config restore Thread-Topic: [RFC 0/4] ethdev: rework config restore Thread-Index: AQHbCaxnvJzcot6EwEidqZ9OS9qkZLJvWnWAgAeTsoCABDL0EIAAwm0AgAFT2bCAAGMBgIAA/pwAgAB0wwCAANexAIAAC/eAgAA7NQCAAAyNgIAAgrRQ///w/ICAAK7xMA== Date: Fri, 11 Oct 2024 08:29:21 +0000 Message-ID: <92422481b7274413b8e0a33023963cb3@huawei.com> References: <20240918092201.33772-1-dsosnowski@nvidia.com> <13747524-f073-4749-adbd-be1c7681dbcd@amd.com> <3833d9270fba43af9d17765056911940@huawei.com> <8a6f760c-8bc7-46cd-92e0-a8af66114e2d@amd.com> <5ef19db7-f6fe-4a48-8497-e17b33a262b5@amd.com> <6e2487af-5bf5-4a07-bc9d-2e6f1a1def19@amd.com> <0d526176545845c49d67a30855202f2f@huawei.com> <24aa0035-79af-4f15-8dd8-fb8cd625e4e6@amd.com> In-Reply-To: <24aa0035-79af-4f15-8dd8-fb8cd625e4e6@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.138.42] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 PiA+Pj4+DQo+ID4+Pj4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mg b3IgYXR0YWNobWVudHMNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gT24gMTAvMTAvMjAyNCAxOjA4 IFBNLCBEYXJpdXN6IFNvc25vd3NraSB3cm90ZToNCj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4+Pj4+PiBGcm9tOiBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdpdEBhbWQu Y29tPg0KPiA+Pj4+Pj4gU2VudDogVGh1cnNkYXksIE9jdG9iZXIgMTAsIDIwMjQgMDE6MTcNCj4g Pj4+Pj4+IFRvOiBEYXJpdXN6IFNvc25vd3NraSA8ZHNvc25vd3NraUBudmlkaWEuY29tPjsgS29u c3RhbnRpbiBBbmFueWV2DQo+ID4+Pj4+PiA8a29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb20+ OyBOQlUtQ29udGFjdC1UaG9tYXMgTW9uamFsb24NCj4gPj4+Pj4+IChFWFRFUk5BTCkgPHRob21h c0Btb25qYWxvbi5uZXQ+OyBBbmRyZXcgUnliY2hlbmtvDQo+ID4+Pj4+PiA8YW5kcmV3LnJ5YmNo ZW5rb0Bva3RldGxhYnMucnU+DQo+ID4+Pj4+PiBDYzogZGV2QGRwZGsub3JnOyBCcnVjZSBSaWNo YXJkc29uIDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT4NCj4gPj4+Pj4+IFN1YmplY3Q6IFJl OiBbUkZDIDAvNF0gZXRoZGV2OiByZXdvcmsgY29uZmlnIHJlc3RvcmUNCj4gPj4+Pj4+DQo+ID4+ Pj4+PiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2ht ZW50cw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBPbiAxMC85LzIwMjQgNToxOCBQTSwg RGFyaXVzeiBTb3Nub3dza2kgd3JvdGU6DQo+ID4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4+Pj4+Pj4+IEZyb206IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGFtZC5j b20+DQo+ID4+Pj4+Pj4+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciA5LCAyMDI0IDAzOjA4DQo+ ID4+Pj4+Pj4+IFRvOiBLb25zdGFudGluIEFuYW55ZXYgPGtvbnN0YW50aW4uYW5hbnlldkBodWF3 ZWkuY29tPjsgRGFyaXVzeg0KPiA+Pj4+Pj4+PiBTb3Nub3dza2kgPGRzb3Nub3dza2lAbnZpZGlh LmNvbT47IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxvbg0KPiA+Pj4+Pj4+PiAoRVhURVJOQUwp IDx0aG9tYXNAbW9uamFsb24ubmV0PjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA+Pj4+Pj4+PiA8YW5k cmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+ID4+Pj4+Pj4+IENjOiBkZXZAZHBkay5vcmc7 IEJydWNlIFJpY2hhcmRzb24gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+Pj4+Pj4+ PiBTdWJqZWN0OiBSZTogW1JGQyAwLzRdIGV0aGRldjogcmV3b3JrIGNvbmZpZyByZXN0b3JlDQo+ ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5n IGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ IE9uIDEwLzgvMjAyNCA2OjIxIFBNLCBLb25zdGFudGluIEFuYW55ZXYgd3JvdGU6DQo+ID4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gV2UgaGF2ZSBiZWVuIHdvcmtpbmcg b24gb3B0aW1pemluZyB0aGUgbGF0ZW5jeSBvZiBjYWxscyB0bw0KPiA+Pj4+Pj4+Pj4+Pj4+PiBy dGVfZXRoX2Rldl9zdGFydCgpLCBvbiBwb3J0cyBzcGF3bmVkIGJ5IG1seDUgUE1ELiBNb3N0IG9m DQo+ID4+Pj4+Pj4+Pj4+Pj4+IHRoZSB3b3JrIHJlcXVpcmVzIGNoYW5nZXMgaW4gdGhlIGltcGxl bWVudGF0aW9uIG9mDQo+ID4+Pj4+Pj4+Pj4+Pj4+IC5kZXZfc3RhcnQoKSBQTUQgY2FsbGJhY2ss IGJ1dCBJIGFsc28gd2FudGVkIHRvIHN0YXJ0IGENCj4gPj4+Pj4+Pj4+Pj4+Pj4gZGlzY3Vzc2lv biByZWdhcmRpbmcgY29uZmlndXJhdGlvbiByZXN0b3JlLg0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4+Pj4+PiBydGVfZXRoX2Rldl9zdGFydCgpIGRvZXMgYSBmZXcgdGhpbmdzIG9uIHRv cCBvZiBjYWxsaW5nDQo+ID4+Pj4+Pj4+Pj4+Pj4+IC5kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4+PiBj YWxsYmFjazoNCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gLSBCZWZvcmUgY2Fs bGluZyBpdDoNCj4gPj4+Pj4+Pj4+Pj4+Pj4gICAgIC0gZXRoX2Rldl9tYWNfcmVzdG9yZSgpIC0g aWYgZGV2aWNlIHN1cHBvcnRzDQo+ID4+Pj4+Pj4+Pj4+Pj4+IFJURV9FVEhfREVWX05PTElWRV9N QUNfQUREUjsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gLSBBZnRlciBjYWxsaW5nIGl0Og0KPiA+Pj4+Pj4+ Pj4+Pj4+PiAgICAgLSBldGhfZGV2X21hY19yZXN0b3JlKCkgLSBpZiBkZXZpY2UgZG9lcyBub3Qg c3VwcG9ydA0KPiA+Pj4+Pj4+Pj4+Pj4+IFJURV9FVEhfREVWX05PTElWRV9NQUNfQUREUjsNCj4g Pj4+Pj4+Pj4+Pj4+Pj4gICAgIC0gcmVzdG9yZSBwcm9taXNjdW91cyBjb25maWcNCj4gPj4+Pj4+ Pj4+Pj4+Pj4gICAgIC0gcmVzdG9yZSBhbGwgbXVsdGljYXN0IGNvbmZpZw0KPiA+Pj4+Pj4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBldGhfZGV2X21hY19yZXN0b3JlKCkgaXRlcmF0ZXMgb3Zl ciBhbGwga25vd24gTUFDIGFkZHJlc3NlcyAtDQo+ID4+Pj4+Pj4+Pj4+Pj4+IHN0b3JlZCBpbiBy dGVfZXRoX2Rldl9kYXRhLm1hY19hZGRycyBhcnJheSAtIGFuZCBjYWxscw0KPiA+Pj4+Pj4+Pj4+ Pj4+PiAubWFjX2FkZHJfc2V0KCkgYW5kIC5tYWNfYWRkcl9hZGQoKSBjYWxsYmFja3MgdG8gYXBw bHkgdGhlc2UNCj4gPj4+Pj4+Pj4+Pj4+Pj4gTUFDDQo+ID4+Pj4+Pj4+IGFkZHJlc3Nlcy4NCj4g Pj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gUHJvbWlzY3VvdXMgY29uZmlnIHJlc3Rv cmUgY2hlY2tzIGlmIHByb21pc2N1b3VzIG1vZGUgaXMNCj4gPj4+Pj4+Pj4+Pj4+Pj4gZW5hYmxl ZCBvciBub3QsIGFuZCBjYWxscyAucHJvbWlzY3VvdXNfZW5hYmxlKCkgb3INCj4gPj4+Pj4+Pj4+ Pj4+Pj4gLnByb21pc2N1b3VzX2Rpc2FibGUoKQ0KPiA+Pj4+Pj4+PiBjYWxsYmFjay4NCj4gPj4+ Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gQWxsIG11bHRpY2FzdCBjb25maWcgcmVzdG9y ZSBjaGVja3MgaWYgYWxsIG11bHRpY2FzdCBtb2RlIGlzDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGVuYWJs ZWQgb3Igbm90LCBhbmQgY2FsbHMgLmFsbG11bHRpY2FzdF9lbmFibGUoKSBvcg0KPiA+Pj4+Pj4+ Pj4+Pj4+PiAuYWxsbXVsdGljYXN0X2Rpc2FibGUoKQ0KPiA+Pj4+Pj4+PiBjYWxsYmFjay4NCj4g Pj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gQ2FsbGJhY2tzIGFyZSBjYWxsZWQgZGly ZWN0bHkgaW4gYWxsIG9mIHRoZXNlIGNhc2VzLCB0bw0KPiA+Pj4+Pj4+Pj4+Pj4+PiBieXBhc3Mg dGhlIGNoZWNrcyBmb3IgYXBwbHlpbmcgdGhlIHNhbWUgY29uZmlndXJhdGlvbiwgd2hpY2gNCj4g Pj4+Pj4+Pj4+Pj4+Pj4gZXhpc3QgaW4gcmVsZXZhbnQNCj4gPj4+Pj4+Pj4gQVBJcy4NCj4gPj4+ Pj4+Pj4+Pj4+Pj4gQ2hlY2tzIGFyZSBieXBhc3NlZCB0byBmb3JjZSBkcml2ZXJzIHRvIHJlYXBw bHkgdGhlIGNvbmZpZ3VyYXRpb24uDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+ IExldCdzIGNvbnNpZGVyIHdoYXQgaGFwcGVucyBpbiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9m IEFQSSBjYWxscy4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gMS4gcnRlX2V0 aF9kZXZfY29uZmlndXJlKCkNCj4gPj4+Pj4+Pj4+Pj4+Pj4gMi4gcnRlX2V0aF90eF9xdWV1ZV9z ZXR1cCgpDQo+ID4+Pj4+Pj4+Pj4+Pj4+IDMuIHJ0ZV9ldGhfcnhfcXVldWVfc2V0dXAoKQ0KPiA+ Pj4+Pj4+Pj4+Pj4+PiA0LiBydGVfZXRoX3Byb21pc2N1b3VzX2VuYWJsZSgpDQo+ID4+Pj4+Pj4+ Pj4+Pj4+ICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5wcm9taXNjdW91c19lbmFibGUoKQ0KPiA+ Pj4+Pj4+Pj4+Pj4+PiAgICAgLSBTdG9yZXMgcHJvbWlzY3VvdXMgc3RhdGUgaW4gZGV2LT5kYXRh LT5wcm9taXNjdW91cyA1Lg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBydGVfZXRoX2FsbG11bHRpY2FzdF9l bmFibGUoKQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+YWxsbXVs dGljYXN0X2VuYWJsZSgpDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICAgICAtIFN0b3JlcyBhbGxtdWx0aWNh c3Qgc3RhdGUgaW4gZGV2LT5kYXRhLT5hbGxtdWx0aWNhc3QgNi4NCj4gPj4+Pj4+Pj4+Pj4+Pj4g cnRlX2V0aF9kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiAgICAgLSBDYWxsIGRldi0+ZGV2 X29wcy0+ZGV2X3N0YXJ0KCkNCj4gPj4+Pj4+Pj4+Pj4+Pj4gICAgIC0gQ2FsbCBkZXYtPmRldl9v cHMtPm1hY19hZGRyX3NldCgpIC0gYXBwbHkgZGVmYXVsdCBNQUMgYWRkcmVzcw0KPiA+Pj4+Pj4+ Pj4+Pj4+PiAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+cHJvbWlzY3VvdXNfZW5hYmxlKCkNCj4g Pj4+Pj4+Pj4+Pj4+Pj4gICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPmFsbG11bHRpY2FzdF9lbmFi bGUoKQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBFdmVuIHRob3VnaCBhbGwg Y29uZmlndXJhdGlvbiBpcyBhdmFpbGFibGUgaW4gZGV2LT5kYXRhIGFmdGVyDQo+ID4+Pj4+Pj4+ Pj4+Pj4+IHN0ZXAgNSwgbGlicmFyeSBmb3JjZXMgcmVhcHBseWluZyB0aGlzIGNvbmZpZ3VyYXRp b24gaW4gc3RlcCA2Lg0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBJbiBtbHg1 IFBNRCBjYXNlIGFsbCByZWxldmFudCBjYWxsYmFja3MgcmVxdWlyZSBjb21tdW5pY2F0aW9uDQo+ ID4+Pj4+Pj4+Pj4+Pj4+IHdpdGggdGhlIGtlcm5lbCBkcml2ZXIsIHRvIGNvbmZpZ3VyZSB0aGUg ZGV2aWNlIChtbHg1IFBNRA0KPiA+Pj4+Pj4+Pj4+Pj4+PiBtdXN0IGNyZWF0ZS9kZXN0cm95IG5l dyBrZXJuZWwgZmxvdyBydWxlcyBhbmQvb3IgY2hhbmdlIG5ldGRldg0KPiA+Pj4+IGNvbmZpZyku DQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IG1seDUgUE1EIGhhbmRsZXMgYXBw bHlpbmcgYWxsIGNvbmZpZ3VyYXRpb24gaW4gLmRldl9zdGFydCgpLA0KPiA+Pj4+Pj4+Pj4+Pj4+ PiBzbyB0aGUgZm9sbG93aW5nIGZvcmNlZCBjYWxsYmFja3MgZm9yY2UgYWRkaXRpb25hbA0KPiA+ Pj4+Pj4+Pj4+Pj4+PiBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGtlcm5lbC4gVGhlDQo+ID4+Pj4+ Pj4+Pj4+Pj4gc2FtZSBjb25maWd1cmF0aW9uIGlzIGFwcGxpZWQgbXVsdGlwbGUgdGltZXMuDQo+ ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IEFzIGFuIG9wdGltaXphdGlvbiwgbWx4 NSBQTUQgY291bGQgY2hlY2sgaWYgYSBnaXZlbg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBjb25maWd1cmF0 aW9uIHdhcyBhcHBsaWVkLCBidXQgdGhpcyB3b3VsZCBkdXBsaWNhdGUgdGhlDQo+ID4+Pj4+Pj4+ Pj4+Pj4+IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGxpYnJhcnkgKGZvciBleGFtcGxlDQo+ID4+Pj4+ Pj4+Pj4+Pj4+IHJ0ZV9ldGhfcHJvbWlzY3VvdXNfZW5hYmxlKCkgZG9lcyBub3QgY2FsbCB0aGUg ZHJpdmVyIGlmDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGRldi0+ZGF0YS0+cHJvbWlzY3VvdXMgaXMgc2V0 KS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gUXVlc3Rpb246IFNpbmNlIGFs bCBvZiB0aGUgY29uZmlndXJhdGlvbiBpcyBhdmFpbGFibGUgYmVmb3JlDQo+ID4+Pj4+Pj4+Pj4+ Pj4+IC5kZXZfc3RhcnQoKSBjYWxsYmFjayBpcyBjYWxsZWQsIHdoeSBldGhkZXYgbGlicmFyeSBk b2VzIG5vdA0KPiA+Pj4+Pj4+Pj4+Pj4+PiBleHBlY3QgLmRldl9zdGFydCgpIHRvDQo+ID4+Pj4+ Pj4+Pj4+Pj4gdGFrZSB0aGlzIGNvbmZpZ3VyYXRpb24gaW50byBhY2NvdW50Pw0KPiA+Pj4+Pj4+ Pj4+Pj4+PiBJbiBvdGhlciB3b3Jkcywgd2h5IGxpYnJhcnkgaGFzIHRvIHJlYXBwbHkgdGhlIGNv bmZpZ3VyYXRpb24/DQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IEkgY291bGQg bm90IGZpbmQgYW55IHBhcnRpY3VsYXIgcmVhc29uIHdoeSBjb25maWd1cmF0aW9uDQo+ID4+Pj4+ Pj4+Pj4+Pj4+IHJlc3RvcmUgZXhpc3RzIGFzIHBhcnQgb2YgdGhlIHByb2Nlc3MgKGl0IHdhcyBp biB0aGUgaW5pdGlhbCBEUERLDQo+ID4+Pj4gY29tbWl0KS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IE15IGFzc3VtcHRpb24gaXMgLmRldl9zdG9w KCkgY2F1c2UgdGhlc2UgdmFsdWVzIHJlc2V0IGluIHNvbWUNCj4gPj4+Pj4+Pj4+Pj4+PiBkZXZp Y2VzLCBzbw0KPiA+Pj4+Pj4+Pj4+Pj4+IC5kZXZfc3RhcnQoKSByZXN0b3JlcyB0aGVtIGJhY2su DQo+ID4+Pj4+Pj4+Pj4+Pj4gQEJydWNlIG9yIEBLb25zdGFudGluIG1heSByZW1lbWJlciB0aGUg aGlzdG9yeS4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gWWVwLCBhcyBJIHJlbWVtYmVy LCBhdCBsZWFzdCBzb21lIEludGVsIFBNRHMgY2FsbGluZyBod19yZXNldCgpDQo+ID4+Pj4+Pj4+ Pj4+IGFkDQo+ID4+Pj4+Pj4+Pj4+IGRlY19zdG9wKCkgYW5kIGV2ZW4gZGV2X3N0YXJ0KCkgdG8g bWFrZSBzdXJlIHRoYXQgSFcgaXMgaW4gYQ0KPiA+Pj4+Pj4+Pj4+PiBjbGVhbg0KPiA+Pj4+Pj4+ Pj4+PiAoa25vd24pDQo+ID4+Pj4+Pj4+IHN0YXRlLg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4gQnV0IEkgYWdyZWUgdGhpcyBpcyBkZXZpY2Ugc3BlY2lm aWMgYmVoYXZpb3IsIGFuZCBjYW4gYmUNCj4gPj4+Pj4+Pj4+Pj4+PiBtYW5hZ2VkIGJ5IHdoYXQg ZGV2aWNlIHJlcXVpcmVzLg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBQcm9iYWJseSB5 ZXMuDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gVGhl IHBhdGNoZXMgaW5jbHVkZWQgaW4gdGhpcyBSRkMsIHByb3Bvc2UgYSBtZWNoYW5pc20gd2hpY2gN Cj4gPj4+Pj4+Pj4+Pj4+Pj4gd291bGQgaGVscCB3aXRoIG1hbmFnaW5nIHdoaWNoIGRyaXZlcnMg cmVseSBvbiBmb3JjZWZ1bA0KPiA+Pj4+Pj4+Pj4+Pj4+PiBjb25maWd1cmF0aW9uDQo+ID4+Pj4+ PiByZXN0b3JlLg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBEcml2ZXJzIGNvdWxkIGFkdmVydGlzZSBpZiBm b3JjZWZ1bCBjb25maWd1cmF0aW9uIHJlc3RvcmUgaXMNCj4gPj4+Pj4+Pj4+Pj4+Pj4gbmVlZGVk IHRocm91Z2ggYFJURV9FVEhfREVWXypfRk9SQ0VfUkVTVE9SRWAgZGV2aWNlIGZsYWcuIElmDQo+ ID4+Pj4+Pj4+Pj4+Pj4+IHRoaXMgZmxhZyBpcyBzZXQsIHRoZW4gdGhlIGRyaXZlciBpbiBxdWVz dGlvbiByZXF1aXJlcyBldGhkZXYNCj4gPj4+Pj4+Pj4+Pj4+Pj4gdG8gZm9yY2VmdWxseSByZXN0 b3JlDQo+ID4+Pj4+Pj4+Pj4+Pj4gY29uZmlndXJhdGlvbi4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IE9LIHRvIHVzZSBmbGFnIGZvciBpdCwgYnV0 IG5vdCBzdXJlIGFib3V0IHVzaW5nICdkZXZfaW5mby0+ZGV2X2ZsYWdzJw0KPiA+Pj4+Pj4+Pj4+ Pj4+IChSVEVfRVRIX0RFVl8qKSBmb3IgdGhpcywgYXMgdGhpcyBmbGFnIGlzIHNoYXJlZCB3aXRo IHVzZXIgYW5kDQo+ID4+Pj4+Pj4+Pj4+Pj4gdGhpcyBpcyBhbGwgZHBkayBpbnRlcm5hbC4NCj4g Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IFdoYXQgYWJvdXQgdG8gaGF2ZSBhIGRlZGlj YXRlZCBmbGFnIGZvciBpdD8gV2UgY2FuIGhhdmUgYQ0KPiA+Pj4+Pj4+Pj4+Pj4+IGRlZGljYXRl ZCBzZXQgb2YgZmxhZyB2YWx1ZXMgZm9yIHJlc3RvcmUuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+Pj4gQWdyZWVkLiBXaGF0IGRvIHlvdSB0aGluayBhYm91dCB0aGUgZm9sbG93aW5nPw0K PiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBJbnN0ZWFkIG9mIGV4cG9zaW5nIHRoYXQsIGNh biB3ZSBwcm9iYWJseSBtYWtlIGl0IHRyYW5zcGFyZW50IHRvDQo+ID4+Pj4+Pj4+Pj4+IHRoZSB1 c2VyIGFuZCBwcm9iYWJseSBldGhkZXYgbGF5ZXIgdG9vPw0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gKzEgdG8gbWFrZSBpdCB0cmFuc3BhcmVudCB0byB1c2VyLCBi dXQgbm90IHN1cmUgaWYgd2UgY2FuIG1ha2UgaXQNCj4gPj4+Pj4+Pj4+PiB0cmFuc3BhcmVudCB0 byBldGhkZXYgbGF5ZXIuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gSnVzdCB0byBiZSBjbGVh cjoNCj4gPj4+Pj4+Pj4+IExldCBzYXksIHVzaW5nIGV4YW1wbGUgZnJvbSBhYm92ZToNCj4gPj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiAgcnRlX2V0aF9kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4+Pj4gICAg ICAtIENhbGwgZGV2LT5kZXZfb3BzLT5kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4+Pj4gICAgICAtIENh bGwgZGV2LT5kZXZfb3BzLT5tYWNfYWRkcl9zZXQoKSAtIGFwcGx5IGRlZmF1bHQgTUFDIGFkZHJl c3MNCj4gPj4+Pj4+Pj4+ICAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+cHJvbWlzY3VvdXNfZW5h YmxlKCkNCj4gPj4+Pj4+Pj4+ICAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+YWxsbXVsdGljYXN0 X2VuYWJsZSgpDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gV2UgcHJvYmFibHkgY2FuIGludHJv ZHVjZSBldGhkZXYgaW50ZXJuYWwgZnVuY3Rpb24gKHN0aWxsIHZpc2libGUNCj4gPj4+Pj4+Pj4+ IHRvDQo+ID4+Pj4+Pj4+PiBQTURzKSB0aGF0IHdvdWxkIGRvIGxhc3QgMyBzdGVwczoNCj4gPj4+ Pj4+Pj4+IGV0aGRldl9yZXBsYXlfdXNlcl9jb25mKC4uLikNCj4gPj4+Pj4+Pj4+ICAgICAgLSBD YWxsIGRldi0+ZGV2X29wcy0+bWFjX2FkZHJfc2V0KCkgLSBhcHBseSBkZWZhdWx0IE1BQyBhZGRy ZXNzDQo+ID4+Pj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPnByb21pc2N1b3VzX2Vu YWJsZSgpDQo+ID4+Pj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPmFsbG11bHRpY2Fz dF9lbmFibGUoKQ0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEFuZCBsZXQgUE1EIGl0c2VsZiB0 byBkZWNpZGUgZG9lcyBpdCBuZWVkcyB0byBjYWxsIGl0IGF0IGRldl9zdGFydCgpIG9yIG5vdC4N Cj4gPj4+Pj4+Pj4+IFNvIGl0IHdpbGwgYmVjb21lOg0KPiA+Pj4+Pj4+Pj4gcnRlX2V0aF9kZXZf c3RhcnQoKQ0KPiA+Pj4+Pj4+Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5kZXZfc3RhcnQo KQ0KPiA+Pj4+Pj4+Pj4gICAgICAgLUNhbGwgZXRoZGV2X3JlcGxheV91c2VyX2NvbmYoLikNCj4g Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+bWFjX2FkZHJfc2V0 KCkgLSBhcHBseSBkZWZhdWx0IE1BQyBhZGRyZXNzDQo+ID4+Pj4+Pj4+PiAgICAgICAgICAgICAg IC0gQ2FsbCBkZXYtPmRldl9vcHMtPnByb21pc2N1b3VzX2VuYWJsZSgpDQo+ID4+Pj4+Pj4+PiAg ICAgICAgICAgICAgIC1DYWxsIGRldi0+ZGV2X29wcy0+YWxsbXVsdGljYXN0X2VuYWJsZSgpDQo+ ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gRm9yIFBNRHMgdGhhdCBkbyBuZWVkIHRvIHJlc3RvcmUg dXNlciBwcm92aWRlZCBjb25maWcgQW5kDQo+ID4+Pj4+Pj4+PiBydGVfZXRoX2Rldl9zdGFydCgp DQo+ID4+Pj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPmRldl9zdGFydCgpDQo+ID4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gRm9yIHRob3NlIHdobyBkbyBub3QuDQo+ID4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBPSywgZ290IGl0IHdoYXQgeW91IG1lYW4uDQo+ID4+Pj4+ Pj4+IFB1c2hpbmcgcmVzdG9yZSBmdW5jdGlvbmFsaXR5IHRvIFBNRHMgd29ya3MsIGJ1dCB0aGlz IG1heSBiZSBkb2luZw0KPiA+Pj4+Pj4+PiByZWR1bmRhbnQgd29yayBvbiBlYWNoIFBNRC4NCj4g Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gSW5zdGVhZCBEYXJpdXN6IHN1Z2dlc3RzIFBNRCB0byBwcm92 aWRlIGEgZmxhZyB0byBlaHRkZXYgdG8gd2hhdCB0bw0KPiA+Pj4+Pj4+PiByZXN0b3JlIGFuZCBj b21tb24gY29kZSBpbiBldGhkZXYgZG9lcyB0aGUgd29yay4NCj4gPj4+Pj4+Pj4gTXkgYmVsb3cg ZGVkaWNhdGVkIGRhdGEgc3RydWN0IGNvbW1lbnQgaXMgdG8gaGF2ZSB0aGlzIGZsYWcgaW4gYQ0K PiA+Pj4+Pj4+PiBuZXcgc3RydWN0LCBvdmVyYWxsIGxpa2UgZm9sbG93aW5nOg0KPiA+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+PiBydGVfZXRoX2Rldl9zdGFydCgpDQo+ID4+Pj4+Pj4+ICAgIC0gQ2FsbCBk ZXYtPmRldl9vcHMtPmRldl9zdGFydCgpDQo+ID4+Pj4+Pj4+ICAgIC0gQ2FsbCBkZXYtPmRldl9v cHMtPmdldF9yZXN0b3JlX2ZsYWdzKGV0aGRldiwgUlRFX0VUSF9TVEFSVCwgJmZsYWdzKQ0KPiA+ Pj4+Pj4+PiAgICAtIGlmIChmbGFncyAmIE1BQykgZGV2LT5kZXZfb3BzLT5tYWNfYWRkcl9zZXQo KQ0KPiA+Pj4+Pj4+PiAgICAtIGlmIChmbGFncyAmIFBST01JU0MpIGRldi0+ZGV2X29wcy0+cHJv bWlzY3VvdXNfZW5hYmxlKCkNCj4gPj4+Pj4+Pj4gICAgLSAuLi4NCj4gPj4+Pj4+Pg0KPiA+Pj4+ Pj4+IENvdWxkIHlvdSBwbGVhc2UgZXhwbGFpbiB3aGF0IGlzIHRoZSBiZW5lZml0IG9mIGV4cG9z aW5nIGZsYWdzDQo+ID4+Pj4+Pj4gdGhyb3VnaCBkZXZfb3BzDQo+ID4+Pj4+PiBjYWxsYmFjayB2 cyBhIGRlZGljYXRlZCBmbGFncyBmaWVsZCBpbiBydGVfZXRoX2Rldl9kYXRhPw0KPiA+Pj4+Pj4+ IEluIGJvdGggc29sdXRpb25zOg0KPiA+Pj4+Pj4+IC0gY29uZmlnIHJlc3RvcmUgaXMgdHJhbnNw YXJlbnQgdG8gdGhlIHVzZXIsDQo+ID4+Pj4+Pj4gLSBkcml2ZXJzIGNhbiBvbWl0IGNvbmZpZyBy ZXN0b3JlIChlaXRoZXIgYnkgbm90IGltcGxlbWVudGluZyB0aGUNCj4gPj4+Pj4+PiBjYWxsYmFj ayBvciBub3QgcHJvdmlkaW5nIHRoZSBmbGFncyksDQo+ID4+Pj4+Pj4gLSBhbiBBQkkgY2hhbmdl IGlzIGludHJvZHVjZWQgKG5vdCBhIGh1Z2UgY29uY2VybiwgYXQgbGVhc3QgZm9yIDI0LjExKS4N Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEkgdW5kZXJzdGFuZCB0aGF0IG15IGluaXRpYWwgcHJvcG9z YWwgd2l0aCAiaW50ZXJuYWxfZmxhZ3MiIHdhcyB0b28NCj4gPj4+Pj4+PiB2YWd1ZSwgYnV0IHJl bmFtaW5nIGFuZCBzcGxpdHRpbmcgdGhpcyBmaWVsZCBpbnRvOg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+ Pj4gLSBkZXZfc3RhcnRfcmVzdG9yZV9mbGFncw0KPiA+Pj4+Pj4+IC0gZGV2X3Jlc2V0X3Jlc3Rv cmVfZmxhZ3MNCj4gPj4+Pj4+PiAtIGFuZCBzbyBvbi4uLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4g c2VlbXMgc3VmZmljaWVudCwgYXQgbGVhc3QgaW4gbXkgb3Bpbmlvbi4NCj4gPj4+Pj4+Pg0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+IEhpIERhcml1c3osDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gUHV0dGluZyBm bGFncyB0byBydGVfZXRoX2Rldl9kYXRhIHdvcmtzLCBhbmQgaXQgaXMgZWFzaWVyIHNpbmNlIHRo ZXJlDQo+ID4+Pj4+PiBpcyBkaXJlY3QgYWNjZXNzIGZyb20gcnRlX2V0aF9kZXYgdG8gcnRlX2V0 aF9kZXZfZGF0YSwgc28geW91IGRvbid0DQo+ID4+Pj4+PiBuZWVkIG5ldyBkZXZfb3BzLiBTbyB0 aGlzIGlzIGEgdmFsaWQgb3B0aW9uLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEJ1dCBiZW5lZml0IG9m IG5ldyBkZXZfb3BzIGlzIHRvIGtlZXAgInN0cnVjdCBydGVfZXRoX2Rldl9kYXRhIiBjbGVhbi4N Cj4gPj4+Pj4+DQo+ID4+Pj4+PiAic3RydWN0IHJ0ZV9ldGhfZGV2X2RhdGEiIGlzIGludGVncmFs IGRhdGEgc3RydWN0dXJlIGZvciBldGhkZXYgYW5kDQo+ID4+Pj4+PiBpdCBpcyB1c2VkIGluIG11 bHRpcGxlIGxvY2F0aW9ucywgbW9zdGx5IHJlbGF0ZWQgdG8gdGhlIGRhdGFwYXRoIGFuZA0KPiA+ Pj4+Pj4gYWxsIGRyaXZlcnMgbmVlZHMgdG8gZGVhbCB3aXRoIGZpZWxkcyBvZiB0aGlzIHN0cnVj dC4NCj4gPj4+Pj4+IExpa2UgW3J4XV9xdWV1ZXMsIGRldl9wcml2YXRlLCBkZXZfY29uZiBhbGwg aW1wb3J0YW50IGFuZCB1c2VkIGEgbG90Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEkgd2FudCB0byBw cm90ZWN0ICJzdHJ1Y3QgcnRlX2V0aF9kZXZfZGF0YSIgZnJvbSBub2lzZSBhcyBtdWNoIGFzDQo+ ID4+Pj4+PiBwb3NzaWJsZSwgdGhvdWdoIHdoYXQgaXMgbm9pc2UgaXMgbm90IGFsd2F5cyB0aGF0 IGNsZWFyLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFRoaXMgcmVzdG9yZSBmbGFnIGlzIG5vdCBjcml0 aWNhbCwgYW5kIEkgZXhwZWN0IG1vc3Qgb2YgdGhlIGRyaXZlcnMNCj4gPj4+Pj4+IHdvbid0IGNh cmUgYW5kIHBvcHVsYXRlIHRoaXMgcmVzdG9yZSBmbGFnIGF0IGFsbC4gVGhhdCBpcyB3aHkgdG8g bWUNCj4gPj4+Pj4+IGl0IGlzIGJldHRlciBoYXZlIGRlZGljYXRlZCBzdHJ1Y3QgZm9yIGl0IGFu ZCBvbmx5IGRyaXZlcnMgY2FyZSBhYm91dCByZXN0b3JlDQo+ID4+Pj4gZmVhdHVyZSBrbm93IGl0 Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIHNlZS4gVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgdGhlIGV4 cGxhbmF0aW9uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJbiB0aGlzIGNhc2UsIGl0IGxvb2tzIGxpa2Ug YWRkaW5nIHRoaXMgdG8gZGV2X29wcyBpcyB0aGUgd2F5IHRvIGdvLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBTbywgc3VtbWFyaXppbmcgaXQgYWxsOg0KPiA+Pj4+Pg0KPiA+Pj4+PiAxLiBkZXZfb3BzIHNo b3VsZCBiZSBleHRlbmRlZCB3aXRoIGEgY2FsbGJhY2sgd2l0aCB0aGUgZm9sbG93aW5nIHNpZ25h dHVyZSBhbmQNCj4gPj4+PiBlbnVtcy9mbGFnczoNCj4gPj4+Pj4NCj4gPj4+Pj4gZW51bSBydGVf ZXRoX2Rldl9vcGVyYXRpb24gb3Agew0KPiA+Pj4+PiAgICAgICBSVEVfRVRIX1NUQVJULA0KPiA+ Pj4+PiAgICAgICBSVEVfRVRIX1NUT1AsDQo+ID4+Pj4+ICAgICAgIFJURV9FVEhfUkVTRVQsDQo+ ID4+Pj4+IH07DQo+ID4+Pj4+DQo+ID4+Pj4+ICNkZWZpbmUgUlRFX0VUSF9SRVNUT1JFX01BQ19B RERSIFJURV9CSVQzMigwKSAjZGVmaW5lDQo+ID4+Pj4+IFJURV9FVEhfUkVTVE9SRV9QUk9NSVND IFJURV9CSVQzMigxKSAjZGVmaW5lDQo+ID4+Pj4gUlRFX0VUSF9SRVNUT1JFX0FMTE1VTFRJDQo+ ID4+Pj4+IFJURV9CSVQzMigyKQ0KPiA+Pj4+Pg0KPiA+Pj4+PiB2b2lkICgqZ2V0X3Jlc3RvcmVf ZmxhZ3MpKA0KPiA+Pj4+PiAgICAgICBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPj4+Pj4g ICAgICAgZW51bSBydGVfZXRoX2Rldl9vcGVyYXRpb24gb3AsDQo+ID4+Pj4+ICAgICAgIHVpbnQz Ml90ICpmbGFncyk7DQo+ID4+Pj4+DQo+ID4+Pj4+IDIuIHJ0ZV9ldGhfZGV2X3N0YXJ0KCkgd2ls bCB3b3JrIGFzIGZvbGxvd3M6DQo+ID4+Pj4+DQo+ID4+Pj4+IC0gQ2FsbCBkZXYtPmRldl9vcHMt PmRldl9zdGFydCgpDQo+ID4+Pj4+IC0gQ2FsbCBkZXYtPmRldl9vcHMtPmdldF9yZXN0b3JlX2Zs YWdzKGRldiwgUlRFX0VUSF9TVEFSVCwgJmZsYWdzKS4gSWYgY2FsbGJhY2sNCj4gPj4+PiBpcyBu b3QgcHJvdmlkZWQsIGFzc3VtZSBmbGFncyA9PSAwLg0KPiA+Pj4+PiAtIGlmIChmbGFncyAmIFJU RV9FVEhfUkVTVE9SRV9NQUNfQUREUikgLSByZXN0b3JlIE1BQyBhZGRyZXNzZXMNCj4gPj4+Pj4g LSBhbmQgc28gb24uLi4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEFsbCBhYm92ZSBsb29rcyBn b29kLg0KPiA+Pj4+DQo+ID4+Pj4+IEFsc28sIEkgd291bGQgbGlrZSB0byBhZGQgdGhlIGZvbGxv d2luZzoNCj4gPj4+Pj4NCj4gPj4+Pj4gMy4gUGF0Y2hzZXQgaW50cm9kdWNpbmcgdGhpcyBjaGFu Z2Ugc2hvdWxkIGFkZCBnZXRfcmVzdG9yZV9mbGFncygpDQo+ID4+Pj4gaW1wbGVtZW50YXRpb24g dG8gYWxsIGRyaXZlcnMsIHdoaWNoIGluZm9ybXMgdGhhdCBhbGwgY29uZmlnIHNob3VsZCBiZSBy ZXN0b3JlZC4NCj4gPj4+Pj4gVGhpcyB3b3VsZCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBiZWhhdmlv ci4NCj4gPj4+Pj4gTGF0ZXIsIHRoaXMgY291bGQgYmUgcmVmaW5lZCBkcml2ZXIgYnkgZHJpdmVy Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBXaGF0IGRvIHlvdSB0aGluaz8NCj4gPj4+Pj4NCj4gPj4+Pg0K PiA+Pj4+IFdoYXQgeW91IGFyZSBzYXlpbmcgaXMgY29ycmVjdCwgYnV0IEkgc3VzcGVjdCBtb3N0 IG9mIHRoZSBkcml2ZXJzIGRvbid0IHJlYWxseSBuZWVkDQo+ID4+Pj4gdGhpcyByZXN0b3JlLCBi dXQgdGhleSBoYXZlIGl0IHNpbmNlIGl0IHdhcyBpbiB0aGUgZXRoZGV2IGxheWVyLg0KPiA+Pj4+ DQo+ID4+Pj4gSWYgd2UgaW50cm9kdWNlIGJhY2sgcmVzdG9yZSB2aWEgZ2V0X3Jlc3RvcmVfZmxh Z3MoKSwgaXQgbWF5IHN0YXkgYXMgaXQgaXMgaW4gZHJpdmVycywgYXQNCj4gPj4+PiBsZWFzdCBm b3IgbW9zdCBvZiB0aGVtLg0KPiA+Pj4+DQo+ID4+Pj4gV2hhdCBkbyB5b3UgdGhpbmsgdG8gcmlz ayBicmVha2luZyBzdHVmZiBmb3IgdGhpcyBjYXNlLg0KPiA+Pj4+DQo+ID4+Pj4gU28gZG9uJ3Qg aW1wbGVtZW50IHRoaXMgaW4gdGhlIGRyaXZlcnMgYnkgZGVmYXVsdCwgc28gd2hvIG5lZWRzIGl0 IHdpbGwgcmVjb2duaXplDQo+ID4+Pj4gdGhlIGlzc3VlIGFuZCB3aWxsIGltcGxlbWVudCBpdC4g SWYgd2UgbWVyZ2UgdGhpcyBwYXRjaCBmb3IgLXJjMSwgaXQgZ2l2ZXMgZW5vdWdoDQo+ID4+Pj4g dGltZSBmb3IgZHJpdmVycyB0byBkZXRlY3QgdGhlIGlzc3VlIGFuZCBmaXggaXQuDQo+ID4+Pg0K PiA+Pj4gSXQgc2VlbXMgcmF0aGVyIHRvbyByaXNreSwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0 aGF0IGZvciBleGFtcGxlLCB0aGVyZSBhcmUgYSBmZXcgSW50ZWwgZHJpdmVycyB3aGljaCBkbyBu b3QgaGF2ZSBtYWludGFpbmVycyAobGlrZQ0KPiA+PiBpNDBlKS4NCj4gPj4+IFNvLCBJIGRvbid0 IGtub3cgd2hhdCB3aWxsIGhhcHBlbiB0byBzdWNoIGRyaXZlcnMuIFRoZXkgbWF5IGJlIGxlZnQg YnJva2VuIChpZiB0aGV5IGFyZSBhZmZlY3RlZCkgZm9yIDI0LjExIGFuZCBmdXR1cmUgcmVsZWFz ZXMuDQo+ID4+PiBCdXQgSSBhZ3JlZSB0aGF0IGlmIGRlZmF1bHQgYmVoYXZpb3IgaXMgcHJlc2Vy dmVkLCB0aGlzIGRlcGVuZGVuY2Ugb2YgZHJpdmVycyBvbiBjb25maWcgcmVzdG9yZSBtaWdodCBz dGF5IGFzIGlzLg0KPiA+Pj4gSSdtIG9uIHRoZSBmZW5jZSBhYm91dCBpdC4NCj4gPj4+DQo+ID4+ DQo+ID4+IFllYWgsIG5vdCBzdXJlLg0KPiA+Pg0KPiA+PiBEbyB5b3UgdGhpbmsgdGhlIGRldl9v cHMgZnVuY3Rpb24gY2FuIGJlIGltcGxlbWVudGVkIGluIHRoZQ0KPiA+PiAnZXRoZGV2X2RyaXZl ci5jJyBhbmQgYWxsIGRyaXZlcnMgdXNlIGV4YWN0IHNhbWUgZnVuY3Rpb24/DQo+ID4+IFNvIHRo aXMgcmVkdWNlcyBjaGFuZ2VzIGFuZCBkdXBsaWNhdGlvbiBpbiBkcml2ZXJzIHdoaWxlIHByZXNl cnZpbmcgdGhlDQo+ID4+IGJlaGF2aW9yLg0KPiA+DQo+ID4gV29uZGVyIHdoeSBpdCBjYW4ndCBi ZSBkb25lIHZpc2EtdmVyc2E/DQo+ID4gSWYgdGhpcyBuZXcgZnVuY3Rpb24gaXMgbm90IGltcGxl bWVudGVkIGJ5IFBNRCwgdGhlbiBzaW1wbHkgYXNzdW1lDQo+ID4gdGhhdCBldmVyeXRoaW5nIG5l ZWRzIHRvIGJlIHJlc3RvcmVkIChhcyBpdCBoYXBwZW5zIG5vdyk/DQo+ID4NCj4gDQo+IFRydWUs IHRoaXMgcHJlc2VydmUgdGhlIGJlaGF2aW9yIGFuZCBwcmV2ZW50cyB1cGRhdGluZyBhbGwgZHJp dmVycy4NCj4gDQo+IEkgdGhpbmsgY2FuIGJlIGRvbmUgaW4gdHdvIHdheXM6DQo+IDEuIGRldl9v cHMoKSB0ZWxscyB3aGF0IE5PVCB0byByZXN0b3JlLCBpZiBkZXZfb3BzKCkgbm90IGltcGxlbWVu dGVkIG9yDQo+IGl0IHJldHVybnMgemVybywgcmVzdG9yZSBldmVyeXRoaW5nLiBIZXJlIHdoYXQg bm90IG5pY2UgaXMgd2hhdCB0bw0KPiByZXN0b3JlIGluIHRoaXMgY2FzZSBpcyBub3QgdmVyeSB3 ZWxsIGRlZmluZWQuDQo+IA0KPiAyLiBkZXZfb3BzKCkgdGVsbHMgd2hhdCB0byByZXN0b3JlLCBi dXQgd2hlbiBub3QgaW1wbGVtZW50ZWQgZGVmYXVsdA0KPiBmbGFnIHZhbHVlIGlzIGFsbCByZXN0 b3JlLiBXaGljaCBpcyBjdXJyZW50IGJlaGF2aW9yLg0KPiANCj4gDQo+IEkgYW0gZm9yIG9wdGlv biAyLiBhbmQgSSBhc3N1bWUgdGhhdCBpcyB3aGF0IEtvbnN0YW50aW4gYWxzbyBzdWdnZXN0LA0K PiBidXQgSSB3YW50IHRvIGNsYXJpZnkgdG8gYmUgc3VyZS4NCg0KWWVwLCBJIGFtIGFsc28gaW4g ZmF2b3Igb2Ygb3B0aW9uIDIuDQoNCj4gDQo+ID4+Pj4NCj4gPj4+PiBPbmx5IHdlIG1heSBpbXBs ZW1lbnQgdGhpcyB0byB0aGUgZHJpdmVycyB0aGF0IGV4aXN0IHdoZW4gdGhpcyByZXN0b3JlIGNv ZGUgd2FzDQo+ID4+Pj4gaW50cm9kdWNlZC4NCj4gPj4+PiBJIG1lYW4gd2hhdGV2ZXIgZHJpdmVy IGV4aXN0IGluIHRoZSBpbml0aWFsIERQREsgY29tbWl0LCBpbXBsZW1lbnQgdGhpcyBsb2dpYyBv bmx5DQo+ID4+Pj4gdG8gdGhvc2UgZHJpdmVycy4NCj4gPj4+DQo+ID4+PiBTZWVtcyByZWFzb25h YmxlIHRvIG1lLiBJbiB0aGlzIGNhc2UsIGl0IHdvdWxkIGJlIGlnYiAoSUlVQywgbm93IGl0J3Mg bmFtZWQgZTEwMDApIGFuZCBpeGdiZS4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+Pj4gQWxzbywgdGhl cmUncyBhbiBvcGVuIHF1ZXN0aW9uIGFib3V0ICdzdG9wJyBhbmQgJ3Jlc2V0JyBvcGVyYXRpb25z Lg0KPiA+Pj4+PiBBdCB0aGUgbW9tZW50LCBldGhkZXYgbGF5ZXIgZG9lcyBub3QgZG8gYW55IGNv bmZpZyBtYW5pcHVsYXRpb24gZHVyaW5nIHRoZXNlDQo+ID4+Pj4gb3BlcmF0aW9ucy4NCj4gPj4+ Pj4gTWF5YmUgd2Ugc2hvdWxkIGxpbWl0IGdldF9yZXN0b3JlX2ZsYWdzKCkgdG8gJ3N0YXJ0JyBv bmx5Pw0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gQWNrLCBJIHdhcyBhYm91dCB0byBzdWdnZXN0 IHRoZSBzYW1lLCBmb3Igbm93IG9ubHkgaGF2ZSAnUlRFX0VUSF9TVEFSVCcNCj4gPj4+PiBhcyBh IHBsYWNlaG9sZGVyIGZvciBsYXRlciBwb3NzaWJsZSB1c2FnZXMuDQo+ID4+Pg0KPiA+Pj4gQWNr DQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+IFNvIFBNRHMgb25seSB3aWxsIHByb3ZpZGUgd2hhdCB0byByZXN0b3JlIHdp dGggYW4gaW50ZXJuYWwgQVBJIGFuZA0KPiA+Pj4+Pj4+PiBjb21tb24gZXRoZGV2IGxheWVyIHdp bGwgcmVzdG9yZSBpdC4NCj4gPj4+Pj4+Pj4gSWYgbm8gcmVzdG9yZSByZXF1aXJlZCBQTUQgbWF5 IG5vdCBpbXBsZW1lbnQgLmdldF9yZXN0b3JlX2ZsYWdzKCkgYXQgYWxsLg0KPiA+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+PiBBZGRpdGlvbmFsbHksIFJURV9FVEhfU1RBUlQsIFJURV9FVEhfUkVTRVQgZXRj IGZsYWcgY2FuIGJlIHByb3ZpZGVkDQo+ID4+Pj4+Pj4+IHRvIGludGVybmFsIEFQSSB0byBnZXQg d2hhdCB0byByZXN0b3JlIGluIGRpZmZlcmVudCBzdGF0ZXMuLi4NCj4gPj4+Pj4+Pj4NCj4gPj4+ Pj4+Pj4+PiBTdWdnZXN0ZWQgJ2ludGVybmFsX2ZsYWcnIGluICJzdHJ1Y3QgcnRlX2V0aF9kZXZf ZGF0YSIgY2FuIGJlDQo+ID4+Pj4+Pj4+Pj4gY29uZnVzaW5nIGFuZCBvcGVuIHRvIGludGVycHJl dGF0aW9uIHdoYXQgdG8gdXNlIGl0IGZvciBhbmQgYnkNCj4gPj4+Pj4+Pj4+PiB0aW1lIGJlY29t ZSBzb3VyY2Ugb2YgZGVmZWN0Lg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFllcywgc2FtZSB0 aG91Z2h0cy4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gSW5zdGVhZCB3aGF0IGRvIHlvdSB0 aGluayB0byBoYXZlIGEgc2VwYXJhdGUsIGRlZGljYXRlZCBkYXRhIHN0cnVjdCBmb3IgaXQ/DQo+ ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gSG1tLi4uIG5vdCBzdXJlIEkgdW5kZXJzdG9vZCB5b3Ug aGVyZS4uLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBNaWdodCBi ZSB3ZSBjYW4gbW92ZSB0aGlzIHJlc3RvcmF0aW9uIGNvZGUgaW50byB0aGUgbmV3IGV0aGRldg0K PiA+Pj4+Pj4+Pj4+PiBoZWxwZXIgZnVuY3Rpb24sKGV0aGRldmRfdXNlcl9jb25maWdfcmVzdG9y ZSgpICBvciBzbykgdGhhdCBQTUQNCj4gPj4+Pj4+Pj4+Pj4gY2FuIGludm9rZQ0KPiA+Pj4+Pj4+ PiBkdXJpbmcgaXRzIGRldl9zdGFydCgpIGlmIG5lZWRlZD8NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+ Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiAjZGVmaW5lIFJURV9FVEhfREVWX0lOVEVSTkFMX1BS T01JU0NfRk9SQ0VfUkVTVE9SRQ0KPiA+Pj4+Pj4gUlRFX0JJVDMyKDApDQo+ID4+Pj4+Pj4+Pj4+ PiAjZGVmaW5lIFJURV9FVEhfREVWX0lOVEVSTkFMX0FMTE1VTFRJX0ZPUkNFX1JFU1RPUkUNCj4g Pj4+Pj4+IFJURV9CSVQzMigxKQ0KPiA+Pj4+Pj4+Pj4+Pj4gI2RlZmluZSBSVEVfRVRIX0RFVl9J TlRFUk5BTF9NQUNfQUREUl9GT1JDRV9SRVNUT1JFDQo+ID4+Pj4+Pj4+IFJURV9CSVQzMigyKQ0K PiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IHN0cnVjdCBydGVfZXRoX2Rldl9kYXRhIHsN Cj4gPj4+Pj4+Pj4+Pj4+ICAgIC8qIHNuaXAgKi8NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ Pj4+PiAgICB1aW50MzJfdCBkZXZfZmxhZ3M7DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ Pj4gICAgLyoqDQo+ID4+Pj4+Pj4+Pj4+PiAgICAgKiBJbnRlcm5hbCBkZXZpY2UgY2FwYWJpbGl0 aWVzLCB1c2VkIG9ubHkgYnkgZXRoZGV2IGxpYnJhcnkuDQo+ID4+Pj4+Pj4+Pj4+PiAgICAgKiBD ZXJ0YWluIGZ1bmN0aW9uYWxpdGllcyBwcm92aWRlZCBieSB0aGUgbGlicmFyeSBtaWdodA0KPiA+ Pj4+Pj4gZW5hYmxlZC9kaXNhYmxlZCwNCj4gPj4+Pj4+Pj4+Pj4+ICAgICAqIGJhc2VkIG9uIGRy aXZlciBleHBvc2luZyBjZXJ0YWluIGNhcGFiaWxpdGllcy4NCj4gPj4+Pj4+Pj4+Pj4+ICAgICAq Lw0KPiA+Pj4+Pj4+Pj4+Pj4gICAgdWludDMyX3QgaW50ZXJuYWxfZmxhZ3M7DQo+ID4+Pj4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gICAgLyogc25pcCAqLw0KPiA+Pj4+Pj4+Pj4+Pj4gfTsNCj4g Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4gQWxzbyBwZXJoYXBzIHdlIGhhdmUgZ28gaW50 byBkZXRhaWxzIHdoYXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQNCj4gPj4+Pj4+Pj4+Pj4+PiBhZnRl ciAnc3RvcCcgYW5kIHdoYXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgYWZ0ZXIgJ3Jlc2V0JyBhbmQN Cj4gPj4+Pj4+Pj4+Pj4+PiB1c2Ugc2ltaWxhcg0KPiA+Pj4+Pj4+PiBtZWNoYW5pc20gZXRjLi4u DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gSSB0aGluayB3ZSBzaG91bGQgbG9vayBp bnRvIHRoYXQuDQo+ID4+Pj4+Pj4+Pj4+PiBBbnkgJ2NvZGlmaWNhdGlvbicgb2Ygc2VtYW50aWNz IGJldHdlZW4gZHJpdmVycyBhbmQgZXRoZGV2DQo+ID4+Pj4+Pj4+Pj4+PiBsaWJyYXJ5IGlzIGdv b2QgaW4NCj4gPj4+Pj4+Pj4gbXkgb3Bpbmlvbi4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ Pj4+PiBBdCBsZWFzdCByaWdodCBub3csIGV0aGRldiBkb2VzIG5vdCBjaGFuZ2UgYW55IGNvbmZp Z3VyYXRpb24gaW4NCj4gPj4+Pj4+Pj4+Pj4+ICdzdG9wJyBhbmQNCj4gPj4+Pj4+Pj4gJ3Jlc2V0 JyBmcm9tIHdoYXQgSSBzZWUuDQo+ID4+Pj4+Pj4+Pj4+PiBCdXQgdGhhdCdzIG9uIGxpYnJhcnkg c2lkZSBvbmx5Lg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gVGhpcyB3YXksIGlm IHdlIHdvdWxkIGNvbmNsdWRlIHRoYXQgaXQgbWFrZXMgc2Vuc2UgZm9yDQo+ID4+Pj4+Pj4+Pj4+ Pj4+IC5kZXZfc3RhcnQoKSB0byBoYW5kbGUgYWxsIHN0YXJ0aW5nIGNvbmZpZ3VyYXRpb24gYXNw ZWN0cywgd2UNCj4gPj4+Pj4+Pj4+Pj4+Pj4gY291bGQgdHJhY2sgd2hpY2ggZHJpdmVycyBzdGls bCByZWx5DQo+ID4+Pj4+Pj4+Pj4+Pj4gb24gY29uZmlndXJhdGlvbiByZXN0b3JlLg0KPiA+Pj4+ Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBEYXJpdXN6IFNvc25vd3NraSAoNCk6DQo+ID4+ Pj4+Pj4+Pj4+Pj4+ICAgZXRoZGV2OiByZXdvcmsgY29uZmlnIHJlc3RvcmUNCj4gPj4+Pj4+Pj4+ Pj4+Pj4gICBldGhkZXY6IG9taXQgcHJvbWlzY3VvdXMgY29uZmlnIHJlc3RvcmUgaWYgbm90IHJl cXVpcmVkDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICAgZXRoZGV2OiBvbWl0IGFsbCBtdWx0aWNhc3QgY29u ZmlnIHJlc3RvcmUgaWYgbm90IHJlcXVpcmVkDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICAgZXRoZGV2OiBv bWl0IE1BQyBhZGRyZXNzIHJlc3RvcmUgaWYgbm90IHJlcXVpcmVkDQo+ID4+Pj4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyB8IDM5DQo+ID4+Pj4+ Pj4+Pj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQ0KPiA+Pj4+ Pj4+Pj4+Pj4+PiAgbGliL2V0aGRldi9ydGVfZXRoZGV2LmggfCAxOCArKysrKysrKysrKysrKysr KysNCj4gPj4+Pj4+Pj4+Pj4+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkNCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gLS0NCj4g Pj4+Pj4+Pj4+Pj4+Pj4gMi4zOS41DQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pg0KPiA+DQoNCg==