From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0050.outbound.protection.outlook.com [104.47.36.50]) by dpdk.org (Postfix) with ESMTP id 3E7437CBA for ; Thu, 15 Feb 2018 06:33:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=G3j+SYZRSjpupzM7A2pF6ITHrS7RuFSBsBRYUy+BxVw=; b=jNHQ91OkRLbjPcMiJ2LzUtGdKWFMcw+uHkwQ9JqItkiUZ4iYjBieEDrzkSGVRFVV1isBufPv8T+BYhlq80JydvqQsRM1113r9f7IYPhBgcJqcn9IgIZlTmytAKa2w17MGH2wvd8IX3PwWpR2/A7HkGEEw/GjT9neVuzj7lI4L2M= Received: from CY4PR0701MB3634.namprd07.prod.outlook.com (52.132.101.164) by CY4PR0701MB3617.namprd07.prod.outlook.com (52.132.101.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.485.10; Thu, 15 Feb 2018 05:32:59 +0000 Received: from CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::a90e:9fcd:9ebd:8cad]) by CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::a90e:9fcd:9ebd:8cad%13]) with mapi id 15.20.0485.019; Thu, 15 Feb 2018 05:32:57 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Murthy, Nidadavolu" , "Sahu, Sunila" , "Gupta, Ashish" , "Doherty, Declan" , "Keating, Brian A" , "Griffin, John" CC: "De Lara Guarch, Pablo" Thread-Topic: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto Thread-Index: AQHTodGzuPus9zTdeEGX8ylmFTF93KOj+27w Date: Thu, 15 Feb 2018 05:32:57 +0000 Message-ID: References: <1516701263-13154-1-git-send-email-shally.verma@caviumnetworks.com> <1516701263-13154-2-git-send-email-shally.verma@caviumnetworks.com> <348A99DA5F5B7549AA880327E580B4358931B76C@IRSMSX101.ger.corp.intel.com> In-Reply-To: <348A99DA5F5B7549AA880327E580B4358931B76C@IRSMSX101.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; x-originating-ip: [117.98.159.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR0701MB3617; 7:RPGNytqY/AmnKjXahdKwgxqZKq/ujC5s+WzT5rUhfhydwOZ7lfvW44rAhJrP4PiJDjyMjcA+bN2v+8zEKUJBQBkrZyuLnDl5f8/d7FgpbKQCgLD52IMgjtstqPbYO3Ev2LV0oRSUMLh0oopE9Hp0AZv9oFLZ8RBUw/TRioHdvgMJfls9WaDjZaBz4BjjZw2oiLqQIrhNQ0/UsX2CMog+0i1Q8S3aMLrkK9PavCXpKosQDkA8pGf/4EPOEC6Pa4Z2 x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(396003)(376002)(39860400002)(39380400002)(346002)(366004)(13464003)(57704003)(189003)(199004)(4326008)(25786009)(3846002)(6116002)(8936002)(2501003)(5890100001)(110136005)(229853002)(106356001)(97736004)(14454004)(99286004)(76176011)(26005)(575784001)(86362001)(53546011)(102836004)(6506007)(5250100002)(81166006)(59450400001)(81156014)(186003)(53376002)(6246003)(16200700003)(53946003)(561944003)(53936002)(74316002)(7696005)(1720100001)(2900100001)(3280700002)(6436002)(9686003)(72206003)(6306002)(966005)(3660700001)(5660300001)(2906002)(55016002)(105586002)(68736007)(316002)(66066001)(478600001)(305945005)(7736002)(33656002)(2950100002)(921003)(21314002)(1121003)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3617; H:CY4PR0701MB3634.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: 2ddb7e4b-b69b-420a-a8ef-08d574359218 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020); SRVR:CY4PR0701MB3617; x-ms-traffictypediagnostic: CY4PR0701MB3617: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(20558992708506)(278428928389397)(788757137089)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231101)(944501161)(6041288)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011); SRVR:CY4PR0701MB3617; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3617; x-forefront-prvs: 058441C12A received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: TgsBeYUi3AiMj9Hz7BU7ctj2ybALJU8B6cGxF0A4vqYIvWVNAOosKHHUa8Sm6XbRRyy6tRXtVz4puQnTCmPmnQ== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2ddb7e4b-b69b-420a-a8ef-08d574359218 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Feb 2018 05:32:57.2534 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3617 Subject: Re: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Feb 2018 05:33:03 -0000 SEkgRmlvbmENCg0KVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrLiBSZXNwb25zZSBiZWxvdy4NCg0K Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogVHJhaGUsIEZpb25hIFttYWlsdG86 ZmlvbmEudHJhaGVAaW50ZWwuY29tXQ0KPlNlbnQ6IDA5IEZlYnJ1YXJ5IDIwMTggMjM6NDMNCj5U bzogZGV2QGRwZGsub3JnOyBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJhc2Fk LkF0aHJleWFAY2F2aXVtLmNvbT47IE11cnRoeSwgTmlkYWRhdm9sdQ0KPjxOaWRhZGF2b2x1Lk11 cnRoeUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsg R3VwdGEsIEFzaGlzaCA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBWZXJtYSwNCj5TaGFsbHkg PFNoYWxseS5WZXJtYUBjYXZpdW0uY29tPjsgRG9oZXJ0eSwgRGVjbGFuIDxkZWNsYW4uZG9oZXJ0 eUBpbnRlbC5jb20+OyBLZWF0aW5nLCBCcmlhbiBBIDxicmlhbi5hLmtlYXRpbmdAaW50ZWwuY29t PjsNCj5HcmlmZmluLCBKb2huIDxqb2huLmdyaWZmaW5AaW50ZWwuY29tPg0KPkNjOiBUcmFoZSwg RmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbyA8cGFi bG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJFOiBbZHBkay1kZXZdIFtS RkMgdjEgMS8xXSBsaWIvY3J5cHRvZGV2OiBhZGQgc3VwcG9ydCBvZiBhc3ltbWV0cmljIGNyeXB0 bw0KPg0KPkhpIFNoYWxseSwNCj5Db21tZW50cyBiZWxvdy4NCj4NCj4+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10g T24gQmVoYWxmIE9mIFNoYWxseSBWZXJtYQ0KPj4gU2VudDogVHVlc2RheSwgSmFudWFyeSAyMywg MjAxOCA5OjU0IEFNDQo+PiBUbzogRG9oZXJ0eSwgRGVjbGFuIDxkZWNsYW4uZG9oZXJ0eUBpbnRl bC5jb20+DQo+PiBDYzogZGV2QGRwZGsub3JnOyBwYXRocmV5YUBjYXZpdW1uZXR3b3Jrcy5jb207 IG5tdXJ0aHlAY2F2aXVtbmV0d29ya3MuY29tOw0KPj4gc3NhaHVAY2F2aXVtbmV0d29ya3MuY29t OyBhZ3VwdGFAY2F2aXVtbmV0d29ya3MuY29tOyBTaGFsbHkgVmVybWENCj4+IDxzdmVybWFAY2F2 aXVtbmV0d29ya3MuY29tPg0KPj4gU3ViamVjdDogW2RwZGstZGV2XSBbUkZDIHYxIDEvMV0gbGli L2NyeXB0b2RldjogYWRkIHN1cHBvcnQgb2YgYXN5bW1ldHJpYyBjcnlwdG8NCj4+DQo+PiBGcm9t OiBTaGFsbHkgVmVybWEgPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+Pg0KPj4gQWRkIHN1 cHBvcnQgZm9yIGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbnMgaW4gRFBESyBsaWIgY3J5cHRv ZGV2DQo+Pg0KPj4gS2V5IGZlYXR1cmUgaW5jbHVkZToNCj4+IC0gT25seSBzZXNzaW9uIGJhc2Vk IGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbnMNCj4+IC0gbmV3IGdldCBhbmQgc2V0IEFQSXMg Zm9yIHN5bW1ldHJpYyBhbmQgYXN5bW1ldHJpYyBzZXNzaW9uIHByaXZhdGUNCj4+ICAgZGF0YSBh bmQgb3RoZXIgaW5mb3JtYXRpb25zDQo+PiAtIEFQSXMgdG8gY3JlYXRlLCBjb25maWd1cmUgYW5k IGF0dGNoIHF1ZXVlIHBhaXIgdG8gYXN5bW1ldHJpYyBzZXNzaW9ucw0KPj4gLSBuZXcgY2FwYWJp bGl0aWVzIGluIHN0cnVjdCBkZXZpY2VfaW5mbyB0byBpbmRpY2F0ZQ0KPj4gICAtLSBudW1iZXIg b2YgZGVkaWNhdGVkIHF1ZXVlIHBhaXJzIGF2YWlsYWJsZSBmb3Igc3ltbWV0cmljIGFuZA0KPj4g ICAgICBhc3ltbWV0cmljIG9wZXJhdGlvbnMsIGlmIGFueQ0KPj4gICAtLSBudW1iZXIgb2YgYXN5 bW1ldHJpYyBzZXNzaW9ucyBwb3NzaWJsZSBwZXIgcXANCj4+DQo+W0Zpb25hXSBUaG91Z2ggaXQn cyBwcm9iYWJseSBwcmVtYXR1cmUgdG8gaW5jbHVkZSBvbiB0aGUgQVBJIGhhdmUgeW91IGNvbnNp ZGVyZWQNCj5wcm92aWRpbmcgZm9yIHByZS1sb2FkZWQga2V5cyBpbiBmdXR1cmUsIGkuZS4gdGhl IGFiaWxpdHkgdG8gd3JhcCBrZXlzIG9yIHJlZmVyIHRvIGtleXMNCj5hbHJlYWR5IHN0b3JlZCBz ZWN1cmVseSBvbiB0aGUgZGV2aWNlLCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBwYXNzaW5nIHRoZSBr ZXlzIG9uIHRoZSBBUEk/DQo+DQpbU2hhbGx5XSBDdXJyZW50IGludGVudGlvbiBvZiBEUERLIGFz eW0gc3BlYyBpcyB0byBleHBvc2UgSFcgY2FwYWJpbGl0aWVzIHRvIGFwcGxpY2F0aW9uIHRvIG9m ZmxvYWQgdGhlc2UgY29tcHV0ZSBpbnRlbnNpdmUgb3BzLiANClRob3VnaCB5b3VyIHVzZS1jYXNl IGlzIHZlcnkgbXVjaCBhIHByYWN0aWNhbCByZXF1aXJlbWVudCAsIGJ1dCB0byBhY2hpZXZlIHRo aXMgSSBiZWxpZXZlIHdlIG5lZWQgYSBsYXllciBhYm92ZSB0aGlzIHNwZWMgYW5kIG5lZWQgZGlm ZmVyZW50IGludGVyZmFjZXMuIFN1Y2ggYXMsIHNvbWUgcHVibGljL3NlY3VyZSBrZXkgbGlicmFy eSB3aGljaCBwcm92aWRlIGludGVyZmFjZXMgdG8gZ2VuZXJhdGUgLyBzdG9yZS8gcGVyZm9ybSBv cCB1c2luZyBhbiBvcGFxdWUga2V5IGhhbmRsZXMgd2hpY2ggaW50ZXJuYWxseSBjYW4gdXNlIERQ REsgdG8gZG8gcGFydCBvZiBpdC4gRm9yIHN1Y2ggY2FzZSwgSSBlbnZpc2lvbiBkcGRrIChvciBs aWJyYXJ5IGFib3ZlKSB3aWxsIGxpa2VseSBydW4gb24gc29tZSBzZWN1cmUgcHJvY2Vzc29yLiBU aHVzLCBjdXJyZW50bHkgSSBrZXB0IHN1Y2ggdXNlLWNhc2Ugb3V0IG9mIGN1cnJlbnQgc3BlYyBz Y29wZS4NCg0KPg0KPj4gUHJvcG9zZWQgYXN5bW1ldHJpYyBjcnlwdG9ncmFwaGljIG9wZXJhdGlv bnMgYXJlOg0KPj4gLSByc2ENCj4+IC0gZHNhDQo+PiAtIGRlZmZpZS1oZWxsbWFuIGtleSBwYWly IGdlbmVyYXRpb24gYW5kIHNoYXJlZCBrZXkgY29tcHV0YXRpb24NCj4+IC0gZWNkZWZmaWUtaGVs bG1hbg0KPj4gLSBmdW5kYW1lbnRhbCBlbGxpcHRpYyBjdXJ2ZSBvcGVyYXRpb25zDQo+PiAtIGVs bGlwdGljIGN1cnZlIERTQQ0KPj4gLSBtb2R1bGFyIGV4cG9uZW50aWF0aW9uIGFuZCBpbnZlcnNp b24NCj4+DQo+PiBUaGlzIHBhdGNoIHByaW1hcmlseSBkZWZpbmVzIFBNRCBvcGVyYXRpb25zIGFu ZCBkZXZpY2UgY2FwYWJpbGl0aWVzDQo+PiB0byBwZXJmb3JtIGFzeW1tZXRyaWMgY3J5cHRvIG9w cyBvbiBxdWV1ZSBwYWlycyBhbmQgaW50ZW5kIHRvDQo+PiBpbnZpdGUgZmVlZGJhY2tzIG9uIGN1 cnJlbnQgcHJvcG9zYWwgc28gYXMgdG8gZW5zdXJlIGl0IGVuY29tcGFzcw0KPj4gYWxsIGtpbmQg b2YgY3J5cHRvIGRldmljZXMgd2l0aCBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzIGFuZCBxdWV1ZQ0K Pj4gcGFpciBtYW5hZ2VtZW50Lg0KPj4NCj4+IExpc3Qgb2YgVEJEczoNCj4+IC0gQ3VycmVudGx5 LCBwYXRjaCBvbmx5IHVwZGF0ZWQgZm9yIFJTQSB4Zm9ybSBhbmQgYXNzb2NpYXRlZCBwYXJhbXMu DQo+PiAgIE90aGVyIGFsZ29yaXRtcyB0byBiZSBhZGRlZCBpbiBzdWJzZXF1ZW50IHZlcnNpb25z Lg0KPj4gLSBwZXItc2VydmljZSBzdGF0cyB1cGRhdGUNCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBT aGFsbHkgVmVybWEgPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+PiAtLS0NCj4+DQo+PiBJ dCBpcyBkZXJpdmF0aXZlIG9mIFJGQyB2MiBhc3ltbWV0cmljIGNyeXB0byBwYXRjaCBzZXJpZXMg aW5pdGlhdGVkIGJ5DQo+PiBVbWVzaCBLYXJ0aGEobWFpbHRvOnVtZXNoLmthcnRoYUBjYXZpdW1u ZXR3b3Jrcy5jb20pOg0KPj4NCj4+ICBodHRwOi8vZHBkay5vcmcvZGV2L3BhdGNod29yay9wYXRj aC8yNDI0NS8NCj4+ICBodHRwOi8vZHBkay5vcmcvZGV2L3BhdGNod29yay9wYXRjaC8yNDI0Ni8N Cj4+ICBodHRwOi8vZHBkay5vcmcvZGV2L3BhdGNod29yay9wYXRjaC8yNDI0Ny8NCj4+DQo+PiBB bmQgaW5jbHVzaXZlIG9mIGFsbCByZXZpZXcgY29tbWVudHMgZ2l2ZW4gb24gUkZDIHYyLg0KPj4g ICggU2VlIGNvbXBsZXRlIGRpc2N1c3Npb24gdGhyZWFkIGhlcmU6DQo+PiBodHRwOi8vZGV2LmRw ZGsubmFya2l2ZS5jb20veXFURkZMSHcvZHBkay1kZXYtcmZjLXNwZWNpZmljYXRpb25zLWZvci1h c3ltbWV0cmljLWNyeXB0by0NCj4+IGFsZ29yaXRobXMjcG9zdDEyKQ0KPj4NCj4+IFNvbWUgb2Yg dGhlIFJGQ3YyIFJldmlldyBjb21tZW50cyBwZW5kaW5nIGZvciBjbG9zdXJlOg0KPj4gPiAiIFtG aW9uYV0gVGhlIGNvdW50IGZuIGlzbid0IHVzZWQgYXQgYWxsIGZvciBzeW0gLSBwcm9iYWJseSBu byBuZWVkIHRvIGFkZCBmb3IgYXN5bQ0KPj4gICAgICBiZXR0ZXIgaW5zdGVhZCB0byByZW1vdmUg dGhlIHN5bSBmbi4iDQo+Pg0KPj4gICAgICBJdCBpcyBzdGlsbCBwcmVzZW50IGluIGRwZGstbmV4 dC1jcnlwdG8gZm9yIHN5bSwgc28gd2hhdCBoYXMgYmVlbiBkZWNpc2lvbg0KPj4gICAgICBvbiBp dD8NCj5bRmlvbmFdIE5vIGNoYW5nZS4gVGhlIHJ0ZV9jcnlwdG9kZXZfb3BzIGZuIGlzIHN0aWxs IG5vdCBjYWxsZWQgc28gdXNlbGVzcyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuDQo+cnRlX2NyeXB0 b2Rldl9xdWV1ZV9wYWlyX2NvdW50KCkgcmV0dXJucyB0aGUgbnVtX3FwcyBjb25maWd1cmVkIGlu DQo+cnRlX2NyeXB0b2Rldl9jb25maWd1cmUoKSwgYnV0IG5ldmVyIGNhbGxzIHRoZSBQTUQgZGV2 X29wcy5xdWV1ZV9wYWlyX2NvdW50KCkuDQo+U28gY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2Nv dW50X3Qgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuDQo+QW5kIG5vIHBvaW50IGluIGFkZGluZyBvbmUg Zm9yIGFzeW0uDQo+DQoNCltTaGFsbHldIE9rDQoNCj4+DQo+PiA+IltGaW9uYV0gaWYgZWFjaCBx cCBjYW4gaGFuZGxlIG9ubHkgYSBzcGVjaWZpYyBzZXJ2aWNlLCBpLmUuIGEgc3Vic2V0IG9mZiB0 aGUgY2FwYWJpbGl0aWVzDQo+PiAgICAgSW5kaWNhdGVkIGJ5IHRoZSBkZXZpY2UgY2FwYWJpbGl0 eSBsaXN0LCB0aGVyZSdzIGEgbmVlZCBmb3IgYSBuZXcgQVBJIHRvIHF1ZXJ5DQo+PiAgICAgdGhl IGNhcGFiaWxpdHkgb2YgYSBxcC4iDQo+Pg0KPj4gICAgIEN1cnJlbnQgcHJvcG9zYWwgZG9lc27i gJl0IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGV2aWNlIGNhcGFiaWxpdHkgYW5kIHFwIGNhcGFiaWxp dHkuDQo+PiAgICAgSXQgcmF0aGVyIGxlYXZlIHN1Y2ggZGlmZmVyZW5jZXMgaGFuZGxpbmcgaW50 ZXJuYWwgdG8gUE1Ecy4gVGh1cyBubyBjYXBhYmlsaXR5DQo+PiAgICAgb3IgQVBJIGFkZGVkIGZv ciBxcCBpbiBjdXJyZW50IHZlcnNpb24uIEl0IGlzIHN1YmplY3QgdG8gcmV2aXNpdCBiYXNlZCBv biByZXZpZXcNCj4+ICAgICBmZWVkYmFjayBvbiBjdXJyZW50IHByb3Bvc2FsLg0KPltGaW9uYV0g VGhpcyB3b3VsZCBub3Qgd29yayBmb3Igc29tZSBkZXZpY2VzLCBjb21tZW50cyBiZWxvdy4NCj4N Cj4+DQo+PiAtIFNlc3Npb25sZXNzIFN1cHBvcnQuDQo+PiAgICAgQ3VycmVudCBwcm9wb3NhbCBv bmx5IHN1cHBvcnQgU2Vzc2lvbi1iYXNlZCBiZWNhdXNlOg0KPj4gICAgICAxLiBBbGwgb25lLXRp bWUgc2V0dXAgaS5lLiAgYWxnb3MgYW5kIGFzc29jaWF0ZWQgcGFyYW1zLCBzdWNoIGFzLCBwdWJs aWMtcHJpdmF0ZSBrZXlzDQo+PiAgICAgICAgIG9yIG1vZHVsdXMgbGVuZ3RoIGNhbiBiZSBkb25l IGluIGNvbnRyb2wgcGF0aCB1c2luZyBzZXNzaW9uLWluaXQgQVBJDQo+PiAgICAgIDIuIGl04oCZ cyBhbiBlYXNpZXIgd2F5IHRvIGRlZGljYXRlIHFwIHRvIGRvIHNwZWNpZmljIHNlcnZpY2UgKHVz aW5nIHF1ZXVlX3BhaXJfYXR0YWNoKCkpDQo+PiAgICAgICAgIHdoaWNoIGNhbm5vdCBiZSBjYXNl IGluIHNlc3Npb25sZXNzDQo+PiAgICAgIDMuIENvdWxkbuKAmXQgZmluZCBhbnkgc2lnbmlmaWNh bnQgYWR2YW50YWdlIGdvaW5nIHNlc3Npb25sZXNzIHdheS4gQWxzbyBleGlzdGluZyBtb3N0IG9m IFBNRHMgYXJlDQo+PiBzZXNzaW9uLWJhc2VkLg0KPj4NCj4+ICAgICBJdCBjb3VsZCBiZSBhZGRl ZCBpbiBzdWJzZXF1ZW50IHZlcnNpb25zLCBpZiByZXF1aXJlbWVudCBpcyBpZGVudGlmaWVkLCBi YXNlZCBvbiByZXZpZXcgY29tbWVudA0KPj4gICAgIG9uIHRoaXMgUkZDLg0KPltGaW9uYV0gT3Vy IHByZWZlcmVuY2Ugd291bGQgYmUgZm9yIHNlc3Npb25sZXNzLCBhcyBpdCB3b3VsZCBuZWVkIGZl d2VyIEFQSSBjYWxscyAobm8gc2Vzc2lvbl9jcmVhdGUvc2Vzc2lvbl9jbGVhcikNCj5hbmQgZS5n LiBESCBhbmQgRUNESCBzZXNzaW9ucyBhcmUgbGlrZWx5IHRvIGJlIG9ubHkgdXNlZCBmb3IgYSBz aW5nbGUgb3AuIEhvd2V2ZXIgdGhpcyBpcyBub3QgYSBibG9ja2VyIGZvcg0KPnRoaXMgQVBJLCB3 ZSBjYW4gUE9DIGl0IGxhdGVyIGFuZCBwcm9wb3NlIGFuIGV4dGVuc2lvbiB0byB0aGUgQVBJIGlm IGl0IGdpdmVzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuDQo+DQoNCltTaGFsbHldIFlvdSBt ZWFuIHlvdSByZWNvbW1lbmQgdG8gaGF2ZSBzZXNzaW9uLWxlc3Mgc3VwcG9ydCBhbG9uZyB3aXRo IHNlc3Npb24tYmFzZWQ/IA0KDQo+Pg0KPj4gU3VtbWFyeQ0KPj4gLS0tLS0tLQ0KPj4NCj4+IFRo aXMgc2VjdGlvbiBwcm92aWRlcyBhbiBvdmVydmlldyBvZiBrZXkgZmVhdHVyZSBlbmFibGVkIGlu IGN1cnJlbnQgc3BlY2lmaWNhdGlvbi4NCj4+IEl0IGNvbXByaXNlIG9mIGtleSBkZXNpZ24gY2hh bGxlbmdlcyBhcyBoYXZlIGJlZW4gaWRlbnRpZmllZCBvbiBSRkN2MiBhbmQNCj4+IHN1bW1hcnkg ZGVzY3JpcHRpb24gb2YgbmV3IGludGVyZmFjZXMgYW5kIGRlZmluaXRpb25zIGFkZGVkIHRvIGhh bmRsZSBzYW1lLg0KPj4NCj4+IERlc2NyaXB0aW9uDQo+PiAtLS0tLS0tLS0tLQ0KPj4NCj4+IFRo aXMgQVBJIHNldCBhc3N1bWVzIHRoYXQgdGhlIG1heF9uYl9xdWV1ZV9wYWlycyBvbiBhDQo+PiBk ZXZpY2UgY2FuIGJlIGFsbG9jYXRlZCB0byBhbnkgbWl4IG9mIHN5bSBvciBhc3ltLiBTb21lIGRl dmljZXMNCj4+IG1heSBoYXZlIGEgZml4ZWQgbWF4IHBlciBzZXJ2aWNlLiBUaHVzLCBydGVfY3J5 cHRvZGV2X2luZm8NCj4+IGlzIHVwZGF0ZWQgd2l0aCBtYXhfc3ltX25iX3F1ZXVlcyBhbmQgbWF4 X2FzeW1fbmJfcXVldWVzIHdpdGggcnVsZToNCj4+DQo+PiBtYXhfbmJfcXVldWVfcGFpciA9IG1h eF9uYl9zeW1fcXAgKyBtYXhfbmJfYXN5bV9xcC4NCj4+DQo+PiBJZiBkZXZpY2UgaGFzIG5vIHJl c3RyaWN0aW9ucyBvbiBxcCB0byBiZSB1c2VkIHBlciBzZXJ2aWNlLCBzdWNoIFBNRHMgY2FuIGxl YXZlDQo+PiBtYXhfbmJfc3ltX3FwID0gbWF4X25iX2FzeW1fcXAgPSAwLiBJbiBzdWNoIGNhc2Us IGFwcGxpY2F0aW9uIGNhbiBzZXR1cCBhbnkgb2YNCj4+IHRoZSBzZXJ2aWNlIHVwdG8gbGltaXQg ZGVmaW5lZCBieSBtYXhfbmJfcXVldWVfcGFpci4NCj5bRmlvbmFdIFRoaXMgc2VlbXMgYXdrd2Fy ZCBpZiBhIGdlbnVpbmUgMCAgZS5nLiBBbiBhcHBsIHdhbnRzIHRvIHNldCB1cCBhIHN5bSBxcCwg YW5kDQo+c2VlcyB0aGF0IG1heF9uYl9xdWV1ZV9wYWlyPTQuIENhbid0IHRydXN0IHRoaXMgLSBu ZWVkcyB0byBsb29rIGRlZXBlci4gU2Vlcw0KPm1heF9uYl9zeW1fcXA9MC4gRG9lc24ndCBrbm93 IGlmIHRoYXQgbWVhbnMgaXQgY2FuIHNldCB1cCA0IHN5bSBxcHMgb3Igbm8gcXBzDQo+dW50aWwg aXQgYWxzbyBjaGVja3MgbWF4X25iX2FzeW1fcXAuIElmPTQgdGhlbiBpdCBjYW4ndCBzZXQgdXAg YW55IHN5bSBxcCwgaWY9MCBpdCBjYW4gc2V0IHVwIDQuDQo+V291bGQgaXQgYmUgYmV0dGVyIGlm DQo+CW1heF9uYl9xdWV1ZV9wYWlyID0gbWF4KG1heF9uYl9zeW1fcXAsIG1heF9uYl9hc3ltX3Fw KS4NCj4JbWF4X25iX3N5bV9xcCA9IDAuLm1heF9uYl9xdWV1ZV9wYWlyDQo+CW1heF9uYl9hc3lt X3FwID0gMC4ubWF4X25iX3F1ZXVlX3BhaXINCj4NCg0KW1NoYWxseV0gT2suIEkgY2FuIGNoYW5n ZSBkZWZpbml0aW9uIHRvIHJlcGxhY2UgMCBieSBtYXggbnVtIGZvciBuby1saW1pdCBjYXNlIHdp dGggc2xpZ2h0IG1vZGlmaWNhdGlvbiAgdG8gdGhlIGNvbmRpdGlvbiBpLmUuDQptYXhfbmJfcXVl dWVfcGFpciA+PSAgbWF4KG1heF9uYl9zeW1fcXAsIG1heF9uYl9hc3ltX3FwKSANCg0KYmVjYXVz ZSBkZXZpY2UgY2FuIGhhdmUgZGlzdHJpYnV0aW9uIG9mIChtYXhfbmJfcXVldWVfcGFpciwgbWF4 X25iX3N5bV9xcCwgbWF4X25iX2FzeW1fcXApIGFzICg0LDQsNCkgb3IgKDQsMywxKQ0Kd2hlcmUg dG90YWwgbnVtYmVyIG9mIHFwIHNldHVwIGJ5IGFwcGxpY2F0aW9uIGNhbm5vdCBleGNlZWQgbWF4 X25iX3F1ZXVlX3BhaXJzLg0KDQo+PiBIZXJlLCBtYXhfbmJfc3ltX3FwIGFuZCBtYXhfbmJfYXN5 bV9xcCwgaWYgbm9uLXplcm8sIGp1c3QgZGVmaW5lIGxpbWl0IG9uIHFwIHdoaWNoIGFyZQ0KPj4g YXZhaWxhYmxlIGZvciBlYWNoIHNlcnZpY2UgYW5kICphcmUgbm90KiBpZHMgdG8gYmUgdXNlZCBk dXJpbmcgcXAgc2V0dXAgYW5kIGVucXVldWUgaS5lLg0KPj4gaWYgZGV2aWNlIHN1cHBvcnRzIGJv dGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIHdpdGggbiBxcCwgdGhlbiBhbnkgb2YgdGhlbQ0K Pj4gY2FuIGJlIGNvbmZpZ3VyZWQgZm9yIHN5bW1ldHJpYyBvciBhc3ltbWV0cmljIHN1YmplY3Qg dG8gbGltaXQgZGVmaW5lZCBieQ0KPj4gbWF4X25iX3N5bV9xcCBhbmQgbWF4X25iX2FzeW1fcXAu IEZvciBleGFtcGxlLA0KPj4gaWYgZGV2aWNlIGhhcyA2IHF1ZXVlcyBhbmQgNSBmb3Igc3ltbWV0 cmljIGFuZCAxIGZvciBhc3ltbWV0cmljIHRoYXQgaW1wbHkNCj4+IGFwcGxpY2F0aW9uIGNhbiBz ZXR1cCBvbmx5IDEgb3V0IG9mIGFueSA2IHFwIGZvciBhc3ltbWV0cmljIGFuZCByZXN0IGZvcg0K Pj4gc3ltbWV0cmljLg0KPj4NCj4+IEFkZGl0aW9uYWxseSwgYXBwbGljYXRpb24gY2FuIGRlZGlj YXRlIHFwIHRvIHBlcmZvcm0gc3BlY2lmaWMgc2VydmljZSB2aWEgb3B0aW9uYWwNCj4+IHF1ZXVl X3BhaXJfYXR0YWNoX3N5bS9hc3ltX3Nlc3Npb24oKSBBUEkuDQo+W0Zpb25hXSBUaGlzIGlzIHRv byBsYXRlIC0gc29tZSBkZXZpY2VzIGhhdmUgcXBzIHdoaWNoIG5lZWQgdG8ga25vdyBhdCBzZXR1 cCB3aGljaA0KPnNlcnZpY2UgdGhleSdsbCBiZSB1c2VkIGZvciwgYXMgdGhleSByZXNlcnZlIHJl c291cmNlcyBiYXNlZCBvbiB0aGUgc2VydmljZS4NCj5lLmcuIGEgZGV2aWNlIHJlcG9ydHMgaW4g aW5mbyB0aGF0IGl0IGNhbiBzdXBwb3J0IHFwcyhtYXggNCwgbWF4X3N5bSAyLCBtYXggYXN5bSAy KQ0KPkFuIGFwcGxpY2F0aW9uIGp1c3Qgd2FudHMgdG8gdXNlIDEgc3ltIHFwIGFuZCAxIGFzeW0s IHNvIGNvbmZpZ3VyZXMgZGV2aWNlIHdpdGgNCj5xcHMobWF4IDIsIG1heF9zeW0gMSwgbWF4IGFz eW0gMSkNCj5Ob3cgYXBwbCBjYWxscyBxcF9zZXR1cCBmb3IgcXAgaW5kZXggMC4gV2FudHMgdG8g c3RhcnQgd2l0aCBydW5uaW5nIGFzeW1tZXRyaWMNCj5zZXJ2aWNlIGFuZCB3aWxsIHNldCB1cCB0 aGUgc3ltbWV0cmljIGxhdGVyLCBtYXliZSBpbiBhIHNlcGFyYXRlIHRocmVhZC4NCj5PdXIgZGV2 aWNlcyBuZWVkIHRvIGtub3cgYXQgc2V0dXAgdGltZSB3aGljaCBzZXJ2aWNlIHdpbGwgYmUgdXNl ZCBvbiB0aGUgcXAuDQo+U28gaGF2ZW4ndCBiZWVuIGdpdmVuIGVub3VnaCBpbmZvcm1hdGlvbiB0 byBzZXR1cCB0aGUgcXAuDQo+DQo+RXZlbiBpZiB0aGUgUE1EIGNvdWxkIHNldCB1cCBzZXJ2aWNl LWFnbm9zdGljIHFwcyBhbmQganVzdCBtYXAgbGF0ZXIsIHlvdQ0KPnN1Z2dlc3QgdGhlIHFwX2F0 dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgd291bGQgYmUgb3B0aW9uYWwuIEhvdyBjb3VsZCB0aGUg YXBwbA0KPm1ha2UgdGhlIGRlY2lzaW9uIHdoZXRoZXIgdG8gY2FsbCBpdCBvciBub3QgaW4gYWJv dmUgY2FzZT8gSXQgbmVlZHMgdG8ga25vdyB3aGV0aGVyDQo+dGhlIGNyZWF0ZWQgcXAgaXMgYWdu b3N0aWMgb3Igbm90LCBzbyBhIGNhcGFiaWxpdHkgbXVzdCBiZSByZXBvcnRlZCBieSB0aGUgUE1E Lg0KPk9SIHRoZSBBUEkgc2hvdWxkIG5vdCBiZSBvcHRpb25hbCwgbXVzdCBiZSBjYWxsZWQgZm9y IGV2ZXJ5IHNlc3Npb24uDQo+QnV0IHRoYXQncyBwZXJmIGltcGFjdGluZyBhbmQgbm90IGhlbHBm dWwgaWYgYSBkZXZpY2UgY291bGQgc3VwcG9ydCBzZXJ2aWNlLWFnbm9zdGljIHFwcy4NCj4NCj5J IGRvbid0IGhhdmUgYSBzb2x1dGlvbiBmb3Igc2VydmljZS1hZ25vc3RpYyBxcHMuIEZvciBvdXIg ZGV2aWNlcyB0aGF0J3Mgbm90IG5lY2Vzc2FyeS4NCj5JcyBpdCBsaWtlbHkgdGhhdCBhbnlvbmUg d2FudHMgdG8gc2V0IHVwIGEgcXAgdG8gcHJvY2VzcyBib3RoIHN5bSBhbmQgYXN5bSBvcHM/DQo+ SXMgaXQgc3VmZmljaWVudCB0byBhY2NvbW1vZGF0ZSBxcHMgd2hpY2ggY2FuIHN1cHBvcnQgZWl0 aGVyDQo+c2VydmljZSwgYnV0IG9uZSBtdXN0IGJlIHBpY2tlZCBhdCBzZXR1cCBhZnRlciB3aGlj aCB0aGUgcXAgc3VwcG9ydHMgb25seSB0aGF0IHNlcnZpY2U/DQo+SG93IGFib3V0IHRoZSBmb2xs b3dpbmcgLSA6DQo+IC0gZGV2aWNlIHJlcG9ydHMgaW4gaW5mbyBxcHMobWF4LCBtYXhfc3ltLCBt YXggYXN5bSkgd2hlcmUNCj4JbWF4ID0gbWF4KG1heF9zeW0sIG1heF9hc3ltKS4NCj4JbWF4X3N5 bSA9IDAuLm1heA0KPgltYXhfYXN5bSA9IDAuLm1heA0KPglTbyBpZiBhIGRldmljZSByZXBvcnRz IDQsMiwyLCBpdCBoYXMgNCB0b3RhbCwgMiBjYW4gYmUgc2V0dXAgZm9yIHN5bSwgMiBmb3IgYXN5 bQ0KPglPciBpZiBpdCByZXBvcnRzIDQsNCw0LCBhbGwgNCBvZiB0aGVtIGNhbiBiZSBzZXR1cCBh cyBzeW0gb3IgYWxsIDQgYXMNCj4JYXN5bSBvciBhIG1peCwgYnV0IHRvdGFsIHNldHVwIGNhbid0 IGJlIG1vcmUgdGhhbiA0Lg0KPiAtIGFwcGwgY29uZmlndXJlcyBxcHMobWF4LCBtYXhfc3ltLCBt YXhfYXN5bSkNCj4JSWYgaXQgc3BlY2lmaWVzIDQsMSwzIGl0IHdhbnRzIHRvIHVzZSA0IGluIHRv dGFsLCAxIGZvciBzeW0sIDMgZm9yIGFzeW0uDQo+CUlmIGl0IHNwZWNpZmllcyAxLDEsMCBpdCB3 YW50cyB0byB1c2UgMSBpbiB0b3RhbCwgMSBmb3Igc3ltLCAwIGZvciBhc3ltLg0KPglUaGUgbnVt YmVycyBpdCBjb25maWd1cmVzIG11c3QgYmUgPD0gdGhvc2UgcmVwb3J0ZWQgaW4gaW5mby4NCj4g LSBhcHBsIGNhbGxzIHFwX3NldHVwKGRldiwgcXAsIHNlcnZpY2UpIHdoZXJlIHNlcnZpY2UgPSBz eW0gb3IgYXN5bQ0KPglxcCBpbmRleCBtdXN0IGJlIGJldHdlZW4gMC4ubWF4LTENCj4JVGhlIFBN RCBtYXBzIHRoYXQgaW5kZXggdG8gYW4gaW50ZXJuYWwgcXAgd2hpY2ggY2FuIHN1cHBvcnQgdGhl IHJlcXVlc3RlZCBzZXJ2aWNlLg0KPglJZiBxcF9zZXR1cCBpcyBjYWxsZWQgb24gYW4gaW5kZXgg YW5kIHRoZSBtYXggY29uZmlndXJlZCBxcHMgaGF2ZSBhbHJlYWR5DQo+CWJlZW4gc2V0dXAgZm9y IHRoYXQgc2VydmljZSB0aGVuIHRoZSBzZXR1cCBmYWlscy4NCj5JbiBjYXNlIHRoZSBhcHBsIGZv cmdldHMgd2hpY2ggcXAgaXQgc2V0IHVwIGZvciB3aGljaCBzZXJ2aWNlLCBJIHRoaW5rIGl0IHdv dWxkIGJlIG5lY2Vzc2FyeSB0byBhZGQgYSBuZXcgQVBJDQo+CXJ0ZV9jcnlwdG9kZXZfcXBfaW5m bygpIHdoaWNoIHdvdWxkIHJldHVybiB3aGF0IHNlcnZpY2UgaXMgY29uZmlndXJlZCBvbiB0aGUg cXANCj4NCj5JZiBpdCdzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IHNlcnZpY2UtYWdub3N0aWMgcXBz LCB0aGVuIG9uZSB3YXkgd291bGQgYmUgdG8gc3BlY2lmeSBhIHRoaXJkIHNlcnZpY2UgYWJvdmUg YXMNCj4gLSBzeW0rYXN5bS4NCj5BbmQgaGF2ZSBkZXZpY2VzIHJlcG9ydCBtYXhfc3ltX2FzeW1f cXBzPw0KPg0KPkl0J3MgZGlmZmljdWx0IHRvIGZpbmQgYSBzb2x1dGlvbiBmb3IgdGhpcyB3aXRo b3V0IGJyZWFraW5nIHRoZSBjdXJyZW50IEFQSSAtIHNlZSBzaW1wbGVyDQo+YWx0ZXJuYXRpdmUg YmVsb3cuDQo+DQo+PiBFeGNlcHQgdGhlIG9uZXMgbWVudGlvbmVkIGFib3ZlLCBzcGVjaWZpY2F0 aW9uIGRvZXNuJ3QgZGVmaW5lIGFueSByZXN0cmljdGlvbnMgb24NCj4+IGVucXVldWUvZGVxdWV1 ZSBBUEkgZm9yIGRpZmZlcmVudCBjcnlwdG8gc2VydmljZXMuIEFwcGxpY2F0aW9uIGNhbiBlbnF1 ZXVlIGJvdGggc3ltbWV0cmljDQo+PiBhbmQgYXN5bW1ldHJpYyBvcGVyYXRpb25zIHRvIHNhbWUg ZGV2aWNlIGFuZCBxcCBpZiBkZXZpY2UgaW5mbyBpbmRpY2F0ZSBzdXBwb3J0IG9mIGJvdGgNCj4+ IHN5bW1ldHJpYyBhbmQgYXN5bW1ldHJpYyBhbmQgcXAgaXMgbm90IGRlZGljYXRlZCB0byBhbnku IEhvd2V2ZXIgaW4gcHJhY3RpY2UsIGl0IGNvdWxkDQo+PiByZXN1bHQgaW4gaGVhZC1vZi1saW5l IGJsb2NraW5nIGR1ZSB0byB0aGUgYXN5bSBvcHMgdGFraW5nIGxvbmdlciB0aGFuIHRoZSBzeW1t ZXRyaWMgb3BzLg0KPj4NCj4+IFNvbWUgSFcgYWNjZWxlcmF0b3JzIGF2b2lkIHRoaXMgaXNzdWUg Ynkgc3VwcG9ydGluZyBzeW0gYW5kIGFzeW0gb3BzDQo+PiBvbiBkaWZmZXJlbnQgcXBzIG9uIHRo ZSBzYW1lIGRldmljZS4gIFN1Y2ggZGV2aWNlcyBjYW4gc2V0IG1heF9uYl9zeW1fcXAgYW5kDQo+ PiBtYXhfbmJfYXN5bV9xcCB0byBudW1iZXIgb2YgcXVldWVzIGF2YWlsYWJsZSBmb3IgZWFjaCBy ZXNwZWN0aXZlIHNlcnZpY2UuDQo+Pg0KPj4gVGhpcyBtYXkgZ2l2ZSBwcm9ibGVtIGluIGluZGV4 aW5nIG9uIGVucXVldWUvZGVxdWV1ZSBpLmUuDQo+PiBpZiAyIGFzeW0gcXBzIGFuZCAyIHN5bSBx cHMgYXJlIGNyZWF0ZWQgb24gdGhlIHNhbWUgZGV2aWNlLA0KPj4gdGhlIHF1ZXVlX3BhaXJfaWRz IGFyZSBkdXBsaWNhdGVkLiBUbyBoYW5kbGUgc3VjaCBzY2VuYXJpbywNCj4+IDIgYWx0ZXJuYXRp dmVzIGFyZSBwcm9wb3NlZCBmb3IgUE1EIGRlc2lnbjoNCj4+DQo+PiAxLiBBbGxvdyBhbGwgcXAg dG8gaW5wdXQgYW55IG9wZXJhdGlvbiB0eXBlIHZpcnR1YWxseS4gU2F5LA0KPj4NCj4+ICAgICBD b25zaWRlciBkZXZpY2Ugd2l0aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMgY2FwYWJpbGl0eSBo YXZpbmcNCj4+ICAgICBtYXhfbmJfcXVldWVfcGFpciBhcyA2LCB0aGVuIGJ5IGRlc2lnbiwgYWxs IDYgYXJlIGNhcGFibGUgdG8gaW5wdXQNCj4+ICAgICBib3RoIG9wIHR5cGVzLg0KPj4NCj4+ICAg ICBJZiBQTUQgdXNlcyBmaXhlZCBzZXQgb2YgcXAsIHRoZW4gaW50ZXJuYWxseSwgY2FuIG1hcCBx cCBpZCB0bw0KPj4gICAgIGFjdHVhbCBwaHlzaWNhbCBxcCBpZCB0byBiZSB1c2VkIGFjY29yZGlu ZyB0byBzZXNzaW9uL29wIHR5cGUuDQo+PiAgICAgSWYgc3VjaCBtYXBwaW5nIGlzIGRvbmUgb24g ZGF0YSBwYXRoLCBtYXkgaW1wYWN0IHBlcmZvcm1hbmNlIG9mIFBNRHMuDQo+PiAgICAgVGh1cywg dG8gaGFuZGxlIHN1Y2ggbWFwcGluZyBvdXQgb2YgZGF0YSBwYXRoLCBsaWJyYXJ5IHByb3ZpZGVz IGFuIEFQSQ0KPj4gICAgIHF1ZXVlX3BhaXJfYXR0YWNoX3N5bS9hc3ltX3Nlc3Npb24oKSB3aGlj aCBmYWNpbGl0YXRlIGFwcGxpY2F0aW9uIHRvDQo+PiAgICAgZGVkaWNhdGUgcXAgaWQgdG8gcGVy Zm9ybSBzcGVjaWZpYyAoc3ltL2FzeW0pIHNlcnZpY2UgaW4gY29udHJvbCBwYXRoDQo+PiAgICAg YW5kIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIDFzdCBjYWxsIHRvIGVucXVldWVfYnVyc3QoKS4N Cj4+ICAgICBIZXJlIFBNRCBjYW4gYmluZCBhcHAgcHJvdmlkZWQgbG9naWNhbCBxcCBpZCB0byBh Y3R1YWwgcGh5c2ljYWwgcXAgaWQgdG8gdXNlDQo+PiAgICAgZGVwZW5kaW5nIG9uIHNlc3Npb24g dHlwZSAsIE9SIGFsdGVybmF0aXZlbHkNCj4+DQo+PiAyLiBQTURzIGNhbiBzcGxpdCBpdCBpbnRv IHR3byBQTURzLCBvbmUgd2l0aCBzeW1tZXRyaWMgT05MWSBjYXBhYmlsaXR5IGFuZCBvdGhlcg0K Pj4gICAgIHdpdGggYXN5bW1ldHJpYyBPTkxZIGNhcGFiaWxpdHkgKGFsc28gcHJvcG9zZWQgYnkg RmlvbmEgaW4gUkZDdjIpLg0KPj4gICAgIFRoaXMgbWF5IHJlcXVpcmUgc29tZSAgY2hhbmdlcyB0 byBFQUwgdG8gZmFjaWxpdGF0ZSBwY2kgZGV2aWNlIHNoYXJpbmcgYmV0d2Vlbg0KPj4gICAgIFBN RHMsIGVuYWJsaW5nIHNlcGFyYXRpb24gb2Ygc3ltIGFuZCAgYXN5bSBzZXJ2aWNlcyBvbnRvIGRp ZmZlcmVudCBQTURzLg0KPj4gICAgIEFzIHBlciBSRkN2MiBmZWVkYmFjaywgSW50ZWwgIHByb3Bv c2VkIHRvIHN1Ym1pdCBhIHBhdGNoIHRvICBlbmFibGUgdGhpcy4NCj5bRmlvbmFdIFRoZSBlYWwg Y2hhbmdlcyB3ZXJlIHByb2JsZW1hdGljLCBhbmQgZmVlZGJhY2sgZnJvbSB0aGUgRHVibGluIHVz ZXJzcGFjZQ0KPmV2ZW50IGxhc3QgU2VwdGVtYmVyIHdhcyB0aGF0IHNldmVyYWwgb3RoZXJzIGhh dmUgdHJpZWQgc2ltaWxhciBidXQgcmV2ZXJ0ZWQgdG8gcmVzb2x2aW5nDQo+dGhlIHByb2JsZW0g d2l0aGluIHRoZSBQTUQuIFRoaXMgaXMgd2hhdCB3ZSBhcmUgYWxzbyBpbiB0aGUgcHJvY2VzcyBv ZiBkb2luZy4NCj5XaXRoIHRoaXMgd2UgaW50ZW5kIHRvIGF2b2lkIGFsbCB0aGUgYWJvdmUgY29t cGxpY2F0aW9ucy4NCj5pLmUuIG9uZSBwY2kgZGV2aWNlLCBpbiBpdHMgcHJvYmUgZm4sIGNhbiBj cmVhdGUgbXVsdGlwbGUgQVBJIGRldmljZSBpbnN0YW5jZXMuDQo+T25lIGluc3RhbmNlIG9mIGNy eXB0b2RldiB3aWxsIHByb3ZpZGUgYSBzeW0gY3J5cHRvIHNlcnZpY2UsIG9uZSBpbnN0YW5jZSBv Zg0KPmNvbXByZXNzZGV2IHdpbGwgcHJvdmlkZSBhIGNvbXByZXNzaW9uIHNlcnZpY2UgYW5kIGEg c2Vjb25kIGNyeXB0b2RldiBpbnN0YW5jZSB3aWxsDQo+cHJvdmlkZSB0aGUgYXN5bW1ldHJpYyBz ZXJ2aWNlLiBBbGwgcXBzIG9uIGVhY2ggQVBJIGRldmljZSBpbnN0YW5jZSBjYW4gdGhlbiBzdXBw b3J0IGFsbA0KPm9mIHRoZSBjYXBhYmlsaXRpZXMgcmVwb3J0ZWQgYnkgdGhhdCBkZXZpY2UuDQo+ DQo+QSBzdWdnZXN0aW9uIGZvciBrZWVwaW5nIHRoZSBzaW1wbGljaXR5IG9uIHRoZSBBUEkgd291 bGQgYmUgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4uDQo+aS5lLiBkb24ndCBwcm92aWRlIGFu eSBzdXBwb3J0IGZvciBzcGVjaWZpY2F0aW9uIG9mIHN5bSBvciBhc3ltIHFwcy4gRXhwZWN0IGFs bA0KPnFwcyBvbiBlYWNoIGRldmljZSB0byBzdXBwb3J0IGFsbCBjYXBhYmlsaXRpZXMgcmVwb3J0 ZWQuDQo+DQo+DQoNCltTaGFsbHldIEluaXRpYWxseSBJIGhhZCB0aG91Z2h0IG9mIHNhbWUgcHJv cG9zYWwgdG8gYWRkIGFuIGlucHV0IGZpZWxkIGluIHFwX2NvbmYgc28gdGhhdCBQTUQgY2FuIGtu b3cgYXQgcXBfc2V0dXAgdGltZSB3aGljaCBzZXJ2aWNlIGl0IGdvaW5nIHRvIGJlIHVzZWQgZm9y Lg0KSG93ZXZlciBsb29raW5nIHRoYXQgc3BlYyBhbHJlYWR5IGhhZCBxcF9hdHRhY2hfc3ltL2Fz eW0gQVBJcyBhbmQgYWxzbyB0aGUgcG9zc2liaWxpdHkgdGhhdCBzb21lIGRldmljZSBjYW4gc3Vw cG9ydCBzZXJ2aWNlIC0gYWdub3N0aWMgcXAsIEkgaW5pdGlhdGVkIHdpdGggY3VycmVudCBwcm9w b3NhbC4NCkkgbWFya2VkIHRoZW0gb3B0aW9uYWwgd2l0aCBhIGRpc2NsYWltZXIgdGhhdCAsIGlm IG5vdCBhdHRhY2hlZCwgdGhlbiBQTUQgd2lsbCB0aGVuIG5lZWQgdG8gbWFwIGxvZ2ljYWwgcXBp ZCB0byBwaHlzaWNhbCBkdXJpbmcgZW5xdWV1ZV9idXJzdCgpIHdoaWNoIG1pZ2h0IHJlc3VsdCBp biBpbXBhY3RlZCBwZXJmb3JtYW5jZS4gDQpUaGlzIGlzIHBhcnRpY3VsYXJseSBhcHBsaWNhYmxl IHRvIGRldmljZXMgd2hpY2ggaW50ZXJuYWxseSBoYXZlIGZpeGVkIHFwcyBwZXIgZWFjaCBzZXJ2 aWNlIGFuZCBzZXQgbWF4X25iX3N5bS9hc3ltX3FwIHRvIGluZGljYXRlIHNhbWUuDQpBbmQgdGh1 cyBmb3Igc3VjaCBkZXZpY2VzLCBJIHByaW1hcmlseSByZWNvbW1lbmRlZCB0aGF0IHRoZXkgc2hv dWxkIGFwcGVhciBhcyB0d28gc2VwYXJhdGUgUE1EcyB3aGVyZSBvbmUgc3VwcG9ydCBzeW0gYW5k IG90aGVyIGFzeW0uIA0KSG93ZXZlciwgb25seSBwb2ludCB0byBpcyB0byBzZWUgaG93IHdlbGwg c3VpdGVkIGlzIHRoaXMgZm9yIGVhY2ggZGV2aWNlIGRyaXZlciBkZXNpZ24gYXMgaXQgbWlnaHQg cmF0aGVyIHR1cm4gdG8gYmUgc2ltcGxlciBmb3Igc29tZSBpbXBsZW1lbnRhdGlvbiB0byBqdXN0 IGhhdmUgc2luZ2xlIHdheSB0byBkZWRpY2F0ZSBhIHFwIHRvIGEgc2VydmljZSB2aWEgYXR0YWNo IG9yIHFwX3NldHVwIGNoYW5nZSB0aGFuIGhhdmluZyB0d28gc2VwYXJhdGUgaW5zdGFuY2VzLg0K DQpCdXQsIEkgY29uY3VyIGZyb20geW91ciB0aG91Z2h0cy4gV2UgY2FuIHN0YXJ0IHdpdGggc2lt cGxlIGRlZmluaXRpb24gYW5kIHJlbW92ZSBjb25jZXB0IG9mIG1heF9uYl9zeW1fcXAgYW5kIG1h eF9uYl9hc3ltX3FwIGluIGZpcnN0IHZlcnNpb24gYW5kIHNheSANCi1pZiBkZXZpY2Ugc3VwcG9y dCBzZXJ2aWNlIGFnbm9zdGljIHFwLCB0aGF0IG1lYW5zIGFsbCBvZiBpdHMgcXAgY2FuIGJlIHNl dCB1cCBmb3IgYW55IHNlcnZpY2UuIFBNRCBjYW4gc2hvdyBpbiBpdHMgZmVhdHVyZSBmbGFnIHN1 cHBvcnQgZm9yIHN5bW1ldHJpYyBhbmQgYXN5bW1ldHJpYyBjcnlwdG8uIEFwcGxpY2F0aW9uIGNh biBzZXQgdXAgcXAgdGhlIHdheSBpdCB3YW50LCBzcGVjIGRlZmluZSBubyByZWNvbW1lbmRlZCB3 YXkgb2YgdXNhZ2UgaGVyZSANCi1pZiBkZXZpY2UgaGFzIGZpeGVkIHNldCBvZiBxcCBwZXIgZWFj aCBzZXJ2aWNlLCB0aGVuIGl0IHNob3VsZCBzcGxpdCBpdHNlbGYgaW50byB0d28gOiBzeW1tZXRy aWMgb25seSBhbmQgYXN5bW1ldHJpYyBvbmx5LiANCg0KVGhpcyBpcyB3ZWxsIHN1aXRlZCBmb3Ig c2Vzc2lvbi1sZXNzIGFsc28uICBJTU8sIElmIGFueSBpc3N1ZXMgcmVwb3J0ZWQgd2l0aCB0aGVz ZSBydWxlcywgdGhlbiB3ZSBjYW4gYWRkIHRoaXMgc3VwcG9ydCBsYXRlciBiYXNlZCBvbiB0aGUg dGhlbiBpZGVudGlmaWVkIHJlcXVpcmVtZW50LiBIb3dldmVyLCBpZiB3ZSBlbmQgdXAgYWRkaW5n IHRoZSBzdXBwb3J0IGJhY2sgb2YgbWF4X25iX3N5bS9hc3ltX3FwIGluIHNwZWMgbGF0ZXIsIHRo ZW4gYXR0YWNoL2RldGFjaF9xcCBBUElzIHdpbGwgbm90IGJlIHN1ZmZpY2llbnQgYXMgdGhleSBh cmUgc2Vzc2lvbiBzcGVjaWZpYy4gR2l2ZW4gdGhhdCwgaGF2aW5nIGFuIGlucHV0IHBhcmFtIGR1 cmluZyBxcF9zZXR1cCgpIGlzIG1vcmUgZ2VuZXJpYyB3YXkgdGhhdCBzdWl0IGJvdGggc2Vzc2lv biBhbmQgc2Vzc2lvbmxlc3Mgd2F5LiBEb2VzIHRoaXMgYWxsIHNvdW5kcyByaWdodD8NCiANCkkg d2lsbCB3YWl0IHRvIGNsb3NlIG9uIHRoaXMgZGVzaWduIGRpc2N1c3Npb24gZmlyc3QgYmVmb3Jl IGdpdmluZyBmZWVkYmFjayB0byByZXN0IG9mIHRoZSBjb21tZW50IGZ1cnRoZXIgYmVsb3cuIEJ1 dCBjb25zaWRlciBhbGwgZmVlZGJhY2sgcmVnYXJkaW5nIHR5cG8gYW5kIGxpY2Vuc2luZyBhcyBh Y2tub3dsZWRnZWQuDQoNClRoYW5rcw0KU2hhbGx5DQoNCj4+IDMuIFNvbWUgb2YgdGhlIG90aGVy IGFsdGVybmF0aXZlcyB3ZXJlIGFsc28gc3VnZ2VzdGVkIG9uIFJGQ3YyIGFzIHN1bW1hcmlzZWQg aGVyZToNCj4+ICAgICAiW0Zpb25hXSBPbmUgYWx0ZXJuYXRpdmUgaXMgdG8gdXNlIGRpZmZlcmVu dCBxcF9pZHMgZm9yIHN5bSBhbmQgYXN5bS4NCj4+ICAgICAgIFJlbW92ZSB0aGUgcXVldWVfcGFp cl9pZCBmcm9tIHRoZSB4eHhfcXVldWVfcGFpcl9zZXR1cCBmbnMNCj4+ICAgICAgIGFuZCBpbnN0 ZWFkIHJldHVybiB0aGUgaWQuIFNvIGUuZy4gaWYgc3ltX3F1ZXVlX3BhaXJfc2V0dXAoKSBpcyBj YWxsZWQsIHRoZW4NCj4+ICAgICAgIGFzeW1fcXVldWVfcGFpcl9zZXR1cCgpLCB0aGVuIHN5bV9x dWV1ZV9wYWlyX3NldHVwKCkgcXBfaWQgMCBhbmQgMiB3b3VsZCBiZQ0KPj4gICAgICAgc3ltIHFw cyBhbmQgcXBfaWQgMSB3b3VsZCBiZSBhbiBhc3ltIHFwLiBJbnN0ZWFkIG9mIHNlcGFyYXRlDQo+ PiAgICAgICBkZXYtPmRhdGEtPmFzeW1fcXVldWVfcGFpcnMgYW5kIGRldi0+ZGF0YS0+c3ltX3F1 ZXVlX3BhaXJzIGFycmF5cyB0aGVyZQ0KPj4gICAgICAgd291bGQgYmUgb25lIGNvbW1vbiBhcnJh eS4gQW5vdGhlciBhbHRlcm5hdGl2ZSBpcyB0byB1c2Ugc2VwYXJhdGUgQVBJcyBpLmUuDQo+PiAg ICAgICBydGVfY3J5cHRvZGV2X3N5bV9lbnF1ZXVlX2J1cnN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9l bnF1ZXVlX2J1cnN0LiINCj4+DQo+PiAgICAgIFdlIGJlbGlldmUgZWl0aHIgb2YgYWJvdmUgcHJv cG9zZWQgMXN0IHR3byBzb2x1dGlvbnMoYWdhaW5zdCBwb2ludCAxIGFuZCAyKSBzdWZmaWNlIHRv IGFjaGlldmUgcHVycG9zZS4NCj4+ICAgICAgVGh1cywgd2UgZG9u4oCZdCByZWFsaXplIG5lZWQg dG8gY2hhbmdlIG5vdGlvbiBvZiBxcF9zZXR1cCgpIG9yIGFkZCBuZXcgZW5xdWV1ZV9idXJzdCgp IHZhcmlhbnQNCj4+ICAgICAgZm9yIGFzeW0gYXQgY3VycmVudCBzdGFnZS4gSG93ZXZlciBpdCBp cyBzdWJqZWN0IHRvIHJldmlzaXQsIGlmIGFueSByZXF1aXJlbWVudCBpcyBpZGVudGlmaWVkLg0K Pj4NCj4+IC0tLQ0KPj4gIGxpYi9saWJydGVfY3J5cHRvZGV2L01ha2VmaWxlICAgICAgICAgICAg ICAgICAgfCAgIDEgKw0KPj4gIGxpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG8uaCAgICAg ICAgICAgICAgfCAgMzkgKy0NCj4+ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvX2Fz eW0uaCAgICAgICAgIHwgOTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ICBsaWIvbGli cnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmMgICAgICAgICAgIHwgMjg3ICsrKysrKysrDQo+ PiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5oICAgICAgICAgICB8IDM1OCAr KysrKysrKystDQo+PiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQuYyAg ICAgICB8ICAxOSArLQ0KPj4gIGxpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1k LmggICAgICAgfCAxNTQgKysrLQ0KPj4gIGxpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9k ZXZfdmVyc2lvbi5tYXAgfCAgMjEgKw0KPj4gIDggZmlsZXMgY2hhbmdlZCwgMTgxMSBpbnNlcnRp b25zKCspLCAxNyBkZWxldGlvbnMoLSkNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9j cnlwdG9kZXYvTWFrZWZpbGUgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9NYWtlZmlsZQ0KPj4gaW5k ZXggYmJhOGRlZS4uZGVjMzI1YiAxMDA2NDQNCj4+IC0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2 L01ha2VmaWxlDQo+PiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9NYWtlZmlsZQ0KPj4gQEAg LTIxLDYgKzIxLDcgQEAgU1JDUy15ICs9IHJ0ZV9jcnlwdG9kZXYuYyBydGVfY3J5cHRvZGV2X3Bt ZC5jDQo+PiAgIyBleHBvcnQgaW5jbHVkZSBmaWxlcw0KPj4gIFNZTUxJTksteS1pbmNsdWRlICs9 IHJ0ZV9jcnlwdG8uaA0KPj4gIFNZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9jcnlwdG9fc3ltLmgN Cj4+ICtTWU1MSU5LLXktaW5jbHVkZSArPSBydGVfY3J5cHRvX2FzeW0uaA0KPj4gIFNZTUxJTkst eS1pbmNsdWRlICs9IHJ0ZV9jcnlwdG9kZXYuaA0KPj4gIFNZTUxJTksteS1pbmNsdWRlICs9IHJ0 ZV9jcnlwdG9kZXZfcG1kLmgNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9k ZXYvcnRlX2NyeXB0by5oIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0by5oDQo+PiBp bmRleCA5NWNmODYxLi5lOGMwYmFjIDEwMDY0NA0KPj4gLS0tIGEvbGliL2xpYnJ0ZV9jcnlwdG9k ZXYvcnRlX2NyeXB0by5oDQo+PiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRv LmgNCj4+IEBAIC0yMyw2ICsyMyw3IEBADQo+PiAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4+ DQo+PiAgI2luY2x1ZGUgInJ0ZV9jcnlwdG9fc3ltLmgiDQo+PiArI2luY2x1ZGUgInJ0ZV9jcnlw dG9fYXN5bS5oIg0KPj4NCj4+ICAvKiogQ3J5cHRvIG9wZXJhdGlvbiB0eXBlcyAqLw0KPj4gIGVu dW0gcnRlX2NyeXB0b19vcF90eXBlIHsNCj4+IEBAIC0zMCw2ICszMSw4IEBAIGVudW0gcnRlX2Ny eXB0b19vcF90eXBlIHsNCj4+ICAJLyoqPCBVbmRlZmluZWQgb3BlcmF0aW9uIHR5cGUgKi8NCj4+ ICAJUlRFX0NSWVBUT19PUF9UWVBFX1NZTU1FVFJJQywNCj4+ICAJLyoqPCBTeW1tZXRyaWMgb3Bl cmF0aW9uICovDQo+PiArCVJURV9DUllQVE9fT1BfVFlQRV9BU1lNTUVUUklDDQo+PiArCS8qKjwg QXN5bW1ldHJpYyBvcGVyYXRpb24gKi8NCj4+ICB9Ow0KPj4NCj4+ICAvKiogU3RhdHVzIG9mIGNy eXB0byBvcGVyYXRpb24gKi8NCj4+IEBAIC05Nyw2ICsxMDAsMTAgQEAgc3RydWN0IHJ0ZV9jcnlw dG9fb3Agew0KPj4gIAl1bmlvbiB7DQo+PiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b19zeW1fb3Agc3lt WzBdOw0KPj4gIAkJLyoqPCBTeW1tZXRyaWMgb3BlcmF0aW9uIHBhcmFtZXRlcnMgKi8NCj4+ICsN Cj4+ICsJCXN0cnVjdCBydGVfY3J5cHRvX2FzeW1fb3AgYXN5bVswXTsNCj4+ICsJCS8qKjwgQXN5 bW1ldHJpYyBvcGVyYXRpb24gcGFyYW1ldGVycyAqLw0KPj4gKw0KPj4gIAl9OyAvKio8IG9wZXJh dGlvbiBzcGVjaWZpYyBwYXJhbWV0ZXJzICovDQo+PiAgfTsNCj4+DQo+PiBAQCAtMTE3LDYgKzEy NCw5IEBAIHN0cnVjdCBydGVfY3J5cHRvX29wIHsNCj4+ICAJY2FzZSBSVEVfQ1JZUFRPX09QX1RZ UEVfU1lNTUVUUklDOg0KPj4gIAkJX19ydGVfY3J5cHRvX3N5bV9vcF9yZXNldChvcC0+c3ltKTsN Cj4+ICAJCWJyZWFrOw0KPj4gKwljYXNlIFJURV9DUllQVE9fT1BfVFlQRV9BU1lNTUVUUklDOg0K Pj4gKwkJX19ydGVfY3J5cHRvX2FzeW1fb3BfcmVzZXQob3AtPmFzeW0pOw0KPj4gKwkJYnJlYWs7 DQo+PiAgCWNhc2UgUlRFX0NSWVBUT19PUF9UWVBFX1VOREVGSU5FRDoNCj4+ICAJZGVmYXVsdDoN Cj4+ICAJCWJyZWFrOw0KPj4gQEAgLTEyNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgcnRlX2NyeXB0b19v cCB7DQo+PiAgfQ0KPj4NCj4+ICAvKioNCj4+IC0gKiBQcml2YXRlIGRhdGEgc3RydWN0dXJlIGJl bG9uZ2luZyB0byBhIGNyeXB0byBzeW1tZXRyaWMgb3BlcmF0aW9uIHBvb2wuDQo+PiArICogUHJp dmF0ZSBkYXRhIHN0cnVjdHVyZSBiZWxvbmdpbmcgdG8gYSBjcnlwdG8gb3BlcmF0aW9uIHBvb2wu DQo+PiAgICovDQo+PiAgc3RydWN0IHJ0ZV9jcnlwdG9fb3BfcG9vbF9wcml2YXRlIHsNCj4+ICAJ ZW51bSBydGVfY3J5cHRvX29wX3R5cGUgdHlwZTsNCj4+IEBAIC0yODMsOSArMjkzLDE0IEBAIHN0 cnVjdCBydGVfY3J5cHRvX29wX3Bvb2xfcHJpdmF0ZSB7DQo+PiAgCWlmIChsaWtlbHkob3AtPm1l bXBvb2wgIT0gTlVMTCkpIHsNCj4+ICAJCXByaXZfc2l6ZSA9IF9fcnRlX2NyeXB0b19vcF9nZXRf cHJpdl9kYXRhX3NpemUob3AtPm1lbXBvb2wpOw0KPj4NCj4+IC0JCWlmIChsaWtlbHkocHJpdl9z aXplID49IHNpemUpKQ0KPj4gLQkJCXJldHVybiAodm9pZCAqKSgodWludDhfdCAqKShvcCArIDEp ICsNCj4+ICsJCWlmIChsaWtlbHkocHJpdl9zaXplID49IHNpemUpKSB7DQo+PiArCQkJaWYgKG9w LT50eXBlID09IFJURV9DUllQVE9fT1BfVFlQRV9TWU1NRVRSSUMpDQo+PiArCQkJCXJldHVybiAo dm9pZCAqKSgodWludDhfdCAqKShvcCArIDEpICsNCj4+ICAJCQkJCXNpemVvZihzdHJ1Y3QgcnRl X2NyeXB0b19zeW1fb3ApKTsNCj4+ICsJCQlpZiAob3AtPnR5cGUgPT0gUlRFX0NSWVBUT19PUF9U WVBFX0FTWU1NRVRSSUMpDQo+PiArCQkJCXJldHVybiAodm9pZCAqKSgodWludDhfdCAqKShvcCsx KSArDQo+PiArCQkJCQlzaXplb2Yoc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCkpOw0KPj4gKwkJ fQ0KPj4gIAl9DQo+Pg0KPj4gIAlyZXR1cm4gTlVMTDsNCj4+IEBAIC0zODgsNiArNDAzLDI0IEBA IHN0cnVjdCBydGVfY3J5cHRvX29wX3Bvb2xfcHJpdmF0ZSB7DQo+PiAgCXJldHVybiBfX3J0ZV9j cnlwdG9fc3ltX29wX2F0dGFjaF9zeW1fc2Vzc2lvbihvcC0+c3ltLCBzZXNzKTsNCj4+ICB9DQo+ Pg0KPj4gKy8qKg0KPj4gKyAqIEF0dGFjaCBhIGFzeW1tZXRyaWMgc2Vzc2lvbiB0byBhIGNyeXB0 byBvcGVyYXRpb24NCj4+ICsgKg0KPj4gKyAqIEBwYXJhbQlvcAljcnlwdG8gb3BlcmF0aW9uLCBt dXN0IGJlIG9mIHR5cGUgYXN5bW1ldHJpYw0KPj4gKyAqIEBwYXJhbQlzZXNzCWNyeXB0b2RldiBz ZXNzaW9uDQo+PiArICovDQo+PiArc3RhdGljIGlubGluZSBpbnQNCj4+ICtydGVfY3J5cHRvX29w X2F0dGFjaF9hc3ltX3Nlc3Npb24oc3RydWN0IHJ0ZV9jcnlwdG9fb3AgKm9wLA0KPj4gKwkJc3Ry dWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzKQ0KPj4gK3sNCj4+ICsJaWYgKHVu bGlrZWx5KG9wLT50eXBlICE9IFJURV9DUllQVE9fT1BfVFlQRV9BU1lNTUVUUklDKSkNCj4+ICsJ CXJldHVybiAtMTsNCj4+ICsNCj4+ICsJb3AtPnNlc3NfdHlwZSA9IFJURV9DUllQVE9fT1BfV0lU SF9TRVNTSU9OOw0KPj4gKw0KPj4gKwlyZXR1cm4gX19ydGVfY3J5cHRvX29wX2F0dGFjaF9hc3lt X3Nlc3Npb24ob3AtPmFzeW0sIHNlc3MpOw0KPj4gK30NCj4+ICsNCj4+ICAjaWZkZWYgX19jcGx1 c3BsdXMNCj4+ICB9DQo+PiAgI2VuZGlmDQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlw dG9kZXYvcnRlX2NyeXB0b19hc3ltLmggYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRv X2FzeW0uaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAuLjI3Y2Fm NTUNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9j cnlwdG9fYXN5bS5oDQo+PiBAQCAtMCwwICsxLDk0OSBAQA0KPj4gKy8qDQo+PiArICogICBCU0Qg TElDRU5TRQ0KPj4gKyAqDQo+W0Zpb25hXSBVc2UgU1BEWCBsaWNlbnNlDQo+DQo+PiArICogICBD b3B5cmlnaHQgKEMpIENhdml1bSBuZXR3b3JrcyBMdGQuIDIwMTcuDQo+PiArICoNCj4+ICsgKiAg IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dA0KPj4gKyAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+PiArICogICBhcmUgbWV0Og0KPj4gKyAq DQo+PiArICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+PiArICogICAgICogUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQNCj4+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4+ICsgKiAgICAgICB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+PiArICogICAgICAg ZGlzdHJpYnV0aW9uLg0KPj4gKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2F2aXVtIE5l dHdvcmtzIG5vciB0aGUgbmFtZXMgb2YgaXRzDQo+PiArICogICAgICAgY29udHJpYnV0b3JzIG1h eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+PiArICog ICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLg0KPj4gKyAqDQo+PiArICogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQo+PiArICogICAiQVMgSVMi IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VA0KPj4gKyAqICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQo+PiArICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KPj4gKyAqICAg T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsDQo+PiArICogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQo+PiArICogICBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCj4+ ICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWQ0KPj4gKyAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KPj4gKyAqICAgKElOQ0xV RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU SEUgVVNFDQo+PiArICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpZm5kZWYg X1JURV9DUllQVE9fQVNZTV9IXw0KPj4gKyNkZWZpbmUgX1JURV9DUllQVE9fQVNZTV9IXw0KPj4g Kw0KPj4gKy8qKg0KPj4gKyAqIEBmaWxlIHJ0ZV9jcnlwdG9fYXN5bS5oDQo+PiArICoNCj4+ICsg KiBSVEUgRGVmaW5pdGlvbnMgZm9yIEFzeW1tZXRyaWMgQ3J5cHRvZ3JhcGh5DQo+PiArICoNCj4+ ICsgKiBEZWZpbmVzIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBhbmQgbW9kZXMsIGFzIHdlbGwgYXMg c3VwcG9ydGVkDQo+PiArICogYXN5bW1ldHJpYyBjcnlwdG8gb3BlcmF0aW9ucy4NCj4+ICsgKi8N Cj4+ICsNCj4+ICsjaWZkZWYgX19jcGx1c3BsdXMNCj4+ICtleHRlcm4gIkMiIHsNCj4+ICsjZW5k aWYNCj4+ICsNCj4+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+PiArI2luY2x1ZGUgPHN0ZGludC5o Pg0KPj4gKyNpbmNsdWRlIDxydGVfbWJ1Zi5oPg0KPj4gKyNpbmNsdWRlIDxydGVfbWVtb3J5Lmg+ DQo+PiArI2luY2x1ZGUgPHJ0ZV9tZW1wb29sLmg+DQo+PiArI2luY2x1ZGUgPHJ0ZV9jb21tb24u aD4NCj4+ICsNCj4+ICt0eXBlZGVmIHN0cnVjdCBydGVfY3J5cHRvX3hmb3JtX3BhcmFtX3Qgew0K Pj4gKwl1aW50OF90ICpkYXRhOw0KPj4gKwlwaHlzX2FkZHJfdCBwaHlzX2FkZHI7DQo+W0Zpb25h XSBVc2UgaW92YQ0KPg0KPj4gKwlzaXplX3QgbGVuZ3RoOw0KPj4gK30gcnRlX2NyeXB0b194Zm9y bV9wYXJhbTsNCj4+ICsNCj4+ICt0eXBlZGVmIHN0cnVjdCBydGVfY3J5cHRvX29wX3BhcmFtX3Qg ew0KPj4gKwl1aW50OF90ICpkYXRhOw0KPj4gKwlwaHlzX2FkZHJfdCBwaHlzX2FkZHI7DQo+PiAr CXNpemVfdCBsZW5ndGg7DQo+PiArfSBydGVfY3J5cHRvX29wX3BhcmFtOw0KPj4gKw0KPltGaW9u YV0gIHNwZWNpZnkgdGhhdCBhYm92ZSBsZW5ndGhzIGFyZSBieXRlcyAtIGFzeW0gdXNlcyBiaXQg bGVuZ3RocyBpbiBzb21lIGNvbnRleHRzLg0KPkFib3ZlIHN0cnVjdHMgYXJlIGlkZW50aWNhbCAt IHdoeSBub3QgdXNlIGEgc2luZ2xlIHN0cnVjdD8NCj5ydGVfY3J5cHRvX3BhcmFtX3QNCj4NCj5t ZW50aW9uDQo+PiArLyoqDQo+PiArICogQXN5bW1ldHJpYyBjcnlwdG8gdHJhbnNmb3JtYXRpb24g dHlwZXMuDQo+PiArICogRWFjaCB4Zm9ybSB0eXBlIG1hcHMgdG8gb25lIGFzeW1tZXRyaWMgYWxn b3JpdGhtDQo+PiArICogcGVyZm9ybWluZyBzcGVjaWZpYyBvcGVyYXRpb24NCj4+ICsgKg0KPj4g KyAqLw0KPj4gK2VudW0gcnRlX2NyeXB0b19hc3ltX3hmb3JtX3R5cGUgew0KPj4gKwlSVEVfQ1JZ UFRPX0FTWU1fWEZPUk1fTk9ORSA9IDAsDQo+PiArCS8qKjwgWGZvcm0gdHlwZSBOb25lLiBNYXkg YmUgc3VwcG9ydGVkIGJ5DQo+PiArCSAqIFBNRCB0byBzdXBwb3J0IHBhc3N0aHJvdWdoIG9wIGZv ciBkZWJ1Z2dpbmcNCj4+ICsJICogcHVycG9zZS4NCj4+ICsJICogaWYgeGZvcm1fdHlwZSBub25l ICwgb3BfdHlwZSBpcyBkaXNyZWdhcmRlZC4NCj4+ICsJICovDQo+PiArCVJURV9DUllQVE9fQVNZ TV9YRk9STV9SU0EsDQo+PiArCS8qKjwgUlNBLiBQZXJmb3JtcyBFbmNyeXB0LCBEZWNyeXB0LCBT aWduIGFuZCBWZXJpZnkNCj4+ICsJICogUmVmZXIgdG8gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUN Cj4+ICsJICovDQo+PiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9NT0RFWCwNCj4+ICsJLyoqPCBN b2R1bGFyIEV4cG9uZW50aWF0aW9uDQo+PiArCSAqIFJlZmVyIHRvIHJ0ZV9jcnlwdG9fYXN5bV9v cF90eXBlDQo+PiArCSAqLw0KPj4gKwlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fREgsDQo+PiArCS8q KjwgRGVmZmllLUhlbGxtYW4uIFBlcmZvcm0gS2V5IEdlbmVyYXRlLCBLZXkgQ29tcHV0ZQ0KPj4g KwkgKiBSZWZlciB0byBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZQ0KPj4gKwkgKi8NCj4+ICsJUlRF X0NSWVBUT19BU1lNX1hGT1JNX0VDREgsDQo+PiArCS8qKjwgRWxsaXB0aWMgQ3VydmUgRGVmZmll LUhlbGxtYW4uDQo+PiArCSAqIFBlcmZvcm0gS2V5IEdlbmVhcmF0ZSwgS2V5IENoZWNrIGFuZCBL ZXkgQ29tcHV0ZQ0KPltGaW9uYV0gdHlwbzogZ2VuZXJhdGUNCj4NCj4+ICsJICogUmVmZXIgdG8g cnRlX2NyeXB0b19hc3ltX29wX3R5cGUNCj4+ICsJICovDQo+PiArCVJURV9DUllQVE9fQVNZTV9Y Rk9STV9EU0EsDQo+PiArCS8qKjwgRGlnaXRhbCBTaWduYXR1cmUgQWxnb3JpdGhtDQo+PiArCSAq IFBlcmZvcm1zIFNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIEdlbmVyYXRpb24NCj4+ICsJICog UmVmZXIgdG8gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUNCj4+ICsJICovDQo+PiArCVJURV9DUllQ VE9fQVNZTV9YRk9STV9FQ0RTQSwNCj4+ICsJLyoqPCBFbGxpcHRpYyBDdXJ2ZSBEaWdpdGFsIFNp Z25hdHVyZSBBbGdvcml0aG0uDQo+PiArCSAqIFBlcmZvcm1zIFNpZ25hdHVyZSBHZW5lcmF0aW9u LCBhbmQgVmVyaWZpY2F0aW9uLg0KPj4gKwkgKiBSZWZlciB0byBydGVfY3J5cHRvX2FzeW1fb3Bf dHlwZQ0KPj4gKwkgKi8NCj5bRmlvbmFdIHR5cG8gaW4gYm90aCBhYm92ZTogU2lnbmF0dXJlIEdl bmVyYXRpb24gYW5kIFZlcmlmaWNhdGlvbg0KPg0KPj4gKwlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1f RkVDQywNCj4+ICsJLyoqPCBGdW5kYW1lbnRhbCBFbGxpcHRpYyBjdXJ2ZSBvcGVyYXRpb25zLg0K Pj4gKwkgKiBQZXJmb3JtIGVsbGlwdGljIGN1cnZlIG9wZXJhdGlvbjoNCj4+ICsJICogYWRkLCBk b3VibGUgcG9pbnQsIG11bHRpcGxpY2F0aW9uDQo+PiArCSAqIFJlZmVyIHRvIGVudW0gcnRlX2Ny eXB0b19mZWNjX29wdHlwZQ0KPj4gKwkgKi8NCj4+ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX01P RElOViwNCj4+ICsJLyoqPCBNb2R1bGFyIEludmVyc2UgKi8NCj5bRmlvbmFdIHdvdWxkIGJlIG5p Y2VyIHRvIGdyb3VwIG1vZGludiB3aXRoIG1vZGV4cA0KPg0KPj4gKwlSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fVFlQRV9MSVNUX0VORA0KPj4gKwkvKio8IEVuZCBvZiBsaXN0ICovDQo+PiArfTsNCj4+ ICsNCj4+ICsvKioNCj4+ICsgKiBBc3ltbWV0cmljIGNyeXB0b2dyIG9wZXJhdGlvbiB0eXBlIHZh cmlhbnRzDQo+W0Zpb25hXSB0eXBvOiBVc2UgY3J5cHRvIG9yIGNyeXB0b2dyYXBoaWMNCj4NCj4+ ICsgKi8NCj4+ICtlbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlIHsNCj4+ICsJUlRFX0NSWVBU T19BU1lNX09QX05PVF9TUEVDSUZJRUQgPSAxLA0KPltGaW9uYV0gV2h5IGRvZXMgdGhpcyBzdGFy dCBhdCAxPw0KPkFuZCBpcyBpdCBuZWNlc3Nhcnk/DQo+DQo+PiArCS8qKjwgT3BlcmF0aW9uIHVu c3BlY2lmaWVkICovDQo+PiArCVJURV9DUllQVE9fQVNZTV9PUF9FTkNSWVBULA0KPj4gKwkvKio8 IEFzeW1tZXRyaWMgZW5jcnlwdCBvcGVyYXRpb24gKi8NCj4+ICsJUlRFX0NSWVBUT19BU1lNX09Q X0RFQ1JZUFQsDQo+PiArCS8qKjwgQXN5bW1ldHJpYyBEZWNyeXB0IG9wZXJhdGlvbiAqLw0KPj4g KwlSVEVfQ1JZUFRPX0FTWU1fT1BfU0lHTiwNCj4+ICsJLyoqPCBTaWduYXR1cmUgZ2VuZXJhdGlv biBvcGVyYXRpb24gKi8NCj4+ICsJUlRFX0NSWVBUT19BU1lNX09QX1ZFUklGWSwNCj4+ICsJLyoq PCBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIG9wZXJhdGlvbiAqLw0KPj4gKwlSVEVfQ1JZUFRPX0FT WU1fT1BfS0VZX1BBSVJfR0VORVJBVElPTiwNCj4+ICsJLyoqPCBQdWJsaWMvUHJpdmF0ZSBrZXkg cGFpciBnZW5lcmF0aW9uIG9wZXJhdGlvbiAqLw0KPltGaW9uYV0gSW4gdGhlIGNvbW1lbnQsIGNs YXJpZnkgdGhhdCB0aGlzIGlzIGZvciBESCBhbmQgRUNESCwgYW5kIGZvciB0aGUNCj4gZ2VuZXJh dGlvbiBvZiB0aGUgcHVibGljIGtleSAoYW5kIG9wdGlvbmFsbHkgdGhlIHByaXZhdGUga2V5PykN Cj4NCj4+ICsJUlRFX0NSWVBUT19BU1lNX09QX1NIQVJFRF9LRVlfQ09NUFVUQVRJT04sDQo+PiAr CS8qKjwgREggcHJpdmF0ZSBrZXkgY29tcHV0YXRpb24gb3BlcmF0aW9uICovDQo+W0Zpb25hXSBJ biB0aGUgY29tbWVudCwgcmVwbGFjZSAicHJpdmF0ZSBrZXkiIHdpdGggInNoYXJlZCBzZWNyZXQg a2V5Ii4NCj5BbHNvIGNsYXJpZnkgdGhhdCB0aGlzIGlzIGZvciBib3RoIERIIGFuZCBFQ0RIDQo+ DQo+PiArCVJURV9DUllQVE9fQVNZTV9PUF9FQ0RIX09QX0tFWV9DSEVDSywNCj4+ICsJLyoqPCBF Q0RIIHB1YmxpYyBrZXkgdmFsaWRpdHkgY2hlY2sgb3BlcmF0aW9uICovDQo+PiArCVJURV9DUllQ VE9fQVNZTV9PUF9MSVNUX0VORA0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogUGFkZGlu ZyB0eXBlcyBmb3IgUlNBIHNpZ25hdHVyZS4NCj4+ICsgKi8NCj4+ICtlbnVtIHJ0ZV9jcnlwdG9f cnNhX3BhZGRpbmdfdHlwZSB7DQo+PiArCVJURV9DUllQVE9fUlNBX1BBRERJTkdfTk9UX1NQRUNJ RklFRCA9IDEsDQo+PiArCS8qKjwgUlNBIG5vIHBhZGRpbmcgc2NoZW1lICovDQo+PiArCVJURV9D UllQVE9fUlNBX1BBRERJTkdfQlQxLA0KPj4gKwkvKio8IFJTQSBQS0NTIzEgcGFkZGluZyBCVDEg c2NoZW1lICovDQo+PiArCVJURV9DUllQVE9fUlNBX1BBRERJTkdfQlQyLA0KPj4gKwkvKio8IFJT QSBQS0NTIzEgcGFkZGluZyBCVDIgc2NoZW1lICovDQo+W0Zpb25hXSBJbiB0aGUgbmFtZSwgSSB3 b3VsZCBhZGQgX1BLQ1MxX1YxLjVfLCB0byBtYWtlIHRoaXMgY2xlYXJlci4gQWxzbyBpbiB0aGUg Y29tbWVudCwgY2xhcmlmeSB0aGF0IEJUIGlzDQo+Zm9yICJibG9jayB0eXBlIi4gQWxzbyBjbGFy aWZ5IGhvdyB0aGVzZSBtYXAgdG8gdGhlIGJsb2NrIHR5cGUgaW4gUEtDUyMxIHYxLjUNCj4oaHR0 cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIzMTMpLCB3aGljaCBzcGVjaWZpZXMgdGhyZWUg dmFsdWVzIGZvciBibG9jayB0eXBlLg0KPg0KPj4gKwlSVEVfQ1JZUFRPX1JTQV9QQURESU5HX09B RVAsDQo+PiArCS8qKjwgUlNBIFBLQ1MjMSBPQUVQIHBhZGRpbmcgc2NoZW1lICovDQo+PiArCVJU RV9DUllQVE9fUlNBX1BBRERJTkdfUFNTLA0KPj4gKwkvKio8IFJTQSBQS0NTIzEgUFNTIHBhZGRp bmcgc2NoZW1lICovDQo+PiArCVJURV9DUllQVE9fUlNBX1BBRERJTkdfVFlQRV9MSVNUX0VORA0K Pj4gK307DQo+PiArDQo+PiArDQo+PiArLyoqDQo+PiArICogRnVuZGFtZW50YWwgRUNDIG9wZXJh dGlvbiB0eXBlIHZhcmlhbnRzLg0KPj4gKyAqLw0KPj4gK2VudW0gcnRlX2NyeXB0b19mZWNjX29w dHlwZSB7DQo+PiArCVJURV9DUllQVE9fRkVDQ19PUF9OT1RfU1BFQ0lGSUVEID0gMSwNCj4+ICsJ LyoqPCBGRUNDIG9wZXJhdGlvbiB0eXBlIHVuc3BlY2lmaWVkICovDQo+W0Zpb25hXSBhcyBhYm92 ZS4gV2h5IDE/IEFuZCBpcyBpdCBuZWVkZWQ/DQo+DQo+PiArCVJURV9DUllQVE9fRkVDQ19PUF9Q T0lOVF9BREQsDQo+PiArCS8qKjwgRnVuZGFtZW50YWwgRUNDIHBvaW50IGFkZGl0aW9uIG9wZXJh dGlvbiAqLw0KPj4gKwlSVEVfQ1JZUFRPX0ZFQ0NfT1BfUE9JTlRfREJMLA0KPj4gKwkvKio8IEZ1 bmRhbWVudGFsIEVDQyBwb2ludCBkb3VibGluZyBvcGVyYXRpb24gKi8NCj4+ICsJUlRFX0NSWVBU T19GRUNDX09QX1BPSU5UX01VTFRJUExZLA0KPj4gKwkvKio8IEZ1bmRhbWVudGFsIEVDQyBwb2lu dCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRpb24gKi8NCj4+ICsJUlRFX0NSWVBUT19GRUNDX09QX0xJ U1RfRU5EDQo+PiArfTsNCj4+ICsNCj4+ICsjZGVmaW5lIFJURV9DUllQVE9fRUNfQ1VSVkVfTk9U X1NQRUNJRklFRCAgLTENCj5bRmlvbmFdIFdvdWxkbid0IGl0IGJlIGJldHRlciB0byBwdXQgdGhp cyBiYWNrIGluIGFzIHRoZSBpbml0aWFsIHZhbHVlIGluIHRoZSBlbnVtIGFzIG9yaWdpbmFsbHkg ZG9uZT8NCj5FbHNlIHdpbGwgdGhlcmUgbm90IGJlIGEgY29tcGlsZXIgd2FybmluZyBpZiBhIHBh cmFtIG9mIHRoYXQgZW51bSB0eXBlIGlzDQo+aW5pdGlhbGlzZWQgdG8gYWJvdmUgI2RlZmluZT8N Cj5BbmQgYXJlIF9CSU5BUlkgYW5kIF9QUklNRSB2YWx1ZXMgbmVlZGVkIGluIHRoaXMgY2FzZT8N Cj4NCj4+ICsvKioNCj4+ICsgKiBFQ0MgbGlzdCBvZiBjdXJ2ZXMuDQo+PiArICovDQo+PiArZW51 bSBydGVfY3J5cHRvX2VjX3ByaW1lX2N1cnZlIHsNCj4+ICsJLyoqPCBVbnNwZWNpZmllZCBvciBl bXB0eSBjdXJ2ZSBpZCAqLw0KPltGaW9uYV0gUmVtb3ZlIHN0cmF5IGNvbW1lbnQNCj4+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9zZWNwMTEycjEsDQo+PiArCS8qKjwgU0VDRy9XVExTIGN1cnZlIG92 ZXIgYSAxMTIgYml0IHByaW1lIGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2Vj cDExMnIyLA0KPj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDExMiBiaXQgcHJpbWUgZmllbGQg Ki8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMTI4cjEsDQo+PiArCS8qKjwgU0VDRyBj dXJ2ZSBvdmVyIGEgMTI4IGJpdCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NV UlZFX3NlY3AxMjhyMiwNCj4+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxMjggYml0IHByaW1l IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDE2MGsxLA0KPj4gKwkvKio8 IFNFQ0cgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBU T19FQ19DVVJWRV9zZWNwMTYwcjEsDQo+PiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTYwIGJp dCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3AxNjByMiwNCj4+ ICsJLyoqPCBTRUNHL1dUTFMgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMTkyazEsDQo+PiArCS8qKjwgU0VDRyBjdXJ2ZSBv dmVyIGEgMTkyIGJpdCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3Nl Y3AyMjRrMSwNCj4+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAyMjQgYml0IHByaW1lIGZpZWxk ICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDIyNHIxLA0KPj4gKwkvKio8IE5JU1Qv U0VDRyBjdXJ2ZSBvdmVyIGEgMjI0IGJpdCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRP X0VDX0NVUlZFX3NlY3AyNTZrMSwNCj4+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAyNTYgYml0 IHByaW1lIGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDM4NHIxLA0KPj4g KwkvKio8IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVsZCAqLw0KPj4g KwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3A1MjFyMSwNCj4+ICsJLyoqPCBOSVNUL1NFQ0cgY3Vy dmUgb3ZlciBhIDUyMSBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9wcmltZTE5MnYxLA0KPj4gKwkvKio8IE5JU1QvWDkuNjIvU0VDRyBjdXJ2ZSBvdmVyIGEgMTky IGJpdCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3ByaW1lMTkydjIs DQo+PiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5MiBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmltZTE5MnYzLA0KPj4gKwkvKio8IFg5LjYyIGN1cnZl IG92ZXIgYSAxOTIgYml0IHByaW1lIGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVf cHJpbWUyMzl2MSwNCj4+ICsJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMjM5IGJpdCBwcmltZSBm aWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3ByaW1lMjM5djIsDQo+PiArCS8qKjwg WDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBU T19FQ19DVVJWRV9wcmltZTIzOXYzLA0KPj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAyMzkg Yml0IHByaW1lIGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfcHJpbWUyNTZ2MSwN Cj4+ICsJLyoqPCBYOS42Mi9TRUNHIGN1cnZlIG92ZXIgYSAyNTYgYml0IHByaW1lIGZpZWxkICov DQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxzNiwNCj4+ICsJ LyoqPCBTRUNHL1dUTFMgY3VydmUgb3ZlciBhIDExMiBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJ UlRFX0NSWVBUT19FQ19DVVJWRV93YXBfd3NnX2lkbV9lY2lkX3d0bHM3LA0KPj4gKwkvKio8IFNF Q0cvV1RMUyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZ UFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczgsDQo+PiArCS8qKjwgV1RMUyBjdXJ2 ZSBvdmVyIGEgMTEyIGJpdCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZF X3dhcF93c2dfaWRtX2VjaWRfd3RsczksDQo+PiArCS8qKjwgV1RMUyBjdXJ2ZSBvdmVyIGEgMTYw IGJpdCBwcmltZSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRt X2VjaWRfd3RsczEyLA0KPj4gKwkvKio8IFdUTFMgY3VydmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUg ZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMTYwcjEsDQo+PiAr CS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJ UlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMTYwdDEsDQo+PiArCS8qKjwgUkZDIDU2Mzkg Y3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19D VVJWRV9icmFpbnBvb2xQMTkycjEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDE5 MiBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQ MTkydDEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDE5MiBiaXQgcHJpbWUgZmll bGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMjI0cjEsDQo+PiArCS8q KjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMjI0dDEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3Vy dmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9icmFpbnBvb2xQMjU2cjEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDI1NiBi aXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMjU2 dDEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQg Ki8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMzIwcjEsDQo+PiArCS8qKjwg UkZDIDU2MzkgY3VydmUgb3ZlciBhIDMyMCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NS WVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMzIwdDEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUg b3ZlciBhIDMyMCBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9i cmFpbnBvb2xQMzg0cjEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDM4NCBiaXQg cHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQMzg0dDEs DQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDM4NCBiaXQgcHJpbWUgZmllbGQgKi8N Cj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQNTEycjEsDQo+PiArCS8qKjwgUkZD IDU2MzkgY3VydmUgb3ZlciBhIDUxMiBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBU T19FQ19DVVJWRV9icmFpbnBvb2xQNTEydDEsDQo+PiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3Zl ciBhIDUxMiBiaXQgcHJpbWUgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV94MjU1 MTksDQo+PiArCS8qKjwgQ3VydmUgMjU1MTkgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19QQ1VSVkVf TElTVF9FTkQNCj4+ICt9Ow0KPj4gKw0KPj4gK2VudW0gcnRlX2NyeXB0b19lY19iaW5hcnlfY3Vy dmUgew0KPj4gKwkvKio8IFVuc3BlY2lmaWVkIG9yIGVtcHR5IGN1cnZlIGlkICovDQo+W0Zpb25h XSByZW1vdmUgc3RyYXkgY29tbWVudA0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QxMTNy MSwNCj4+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxMTMgYml0IGJpbmFyeSBmaWVsZCAqLw0K Pj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QxMTNyMiwNCj4+ICsJLyoqPCBTRUNHIGN1cnZl IG92ZXIgYSAxMTMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZF X3NlY3QxMzFyMSwNCj4+ICsJLyoqPCBTRUNHL1dUTFMgY3VydmUgb3ZlciBhIDEzMSBiaXQgYmlu YXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDEzMXIyLA0KPj4gKwkv Kio8IFNFQ0cgY3VydmUgb3ZlciBhIDEzMSBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9D UllQVE9fRUNfQ1VSVkVfc2VjdDE2M2sxLA0KPj4gKwkvKio8IE5JU1QvU0VDRy9XVExTIGN1cnZl IG92ZXIgYSAxNjMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZF X3NlY3QxNjNyMSwNCj4+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxNjMgYml0IGJpbmFyeSBm aWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QxNjNyMiwNCj4+ICsJLyoqPCBO SVNUL1NFQ0cgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9D UllQVE9fRUNfQ1VSVkVfc2VjdDE5M3IxLA0KPj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDE5 MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDE5M3Iy LA0KPj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDE5MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDIzM2sxLA0KPj4gKwkvKio8IE5JU1QvU0VDRy9X VExTIGN1cnZlIG92ZXIgYSAyMzMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRP X0VDX0NVUlZFX3NlY3QyMzNyMSwNCj4+ICsJLyoqPCBOSVNUL1NFQ0cvV1RMUyBjdXJ2ZSBvdmVy IGEgMjMzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0 MjM5azEsDQo+PiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMjM5IGJpdCBiaW5hcnkgZmllbGQg Ki8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MjgzazEsDQo+PiArCS8qKjwgTklTVC9T RUNHIGN1cnZlIG92ZXIgYSAyODMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRP X0VDX0NVUlZFX3NlY3QyODNyMSwNCj4+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDI4 MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDQwOWsx LA0KPj4gKwkvKio8IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgNDA5IGJpdCBiaW5hcnkgZmllbGQg Ki8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0NDA5cjEsDQo+PiArCS8qKjwgTklTVC9T RUNHIGN1cnZlIG92ZXIgYSA0MDkgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRP X0VDX0NVUlZFX3NlY3Q1NzFrMSwNCj4+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDU3 MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDU3MXIx LA0KPj4gKwkvKio8IE5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgNTcxIGJpdCBiaW5hcnkgZmllbGQg Ki8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjE2M3YxLA0KPj4gKwkvKio8IFg5LjYy IGN1cnZlIG92ZXIgYSAxNjMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VD X0NVUlZFX2MycG5iMTYzdjIsDQo+PiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE2MyBiaXQg YmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYzJwbmIxNjN2MywNCj4+ ICsJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMTYzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4+ICsJ UlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjE3NnYxLA0KPj4gKwkvKio8IFg5LjYyIGN1cnZlIG92 ZXIgYSAxNzYgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2My dG5iMTkxdjEsDQo+PiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5MSBiaXQgYmluYXJ5IGZp ZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYzJ0bmIxOTF2MiwNCj4+ICsJLyoqPCBY OS42MiBjdXJ2ZSBvdmVyIGEgMTkxIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBU T19FQ19DVVJWRV9jMnRuYjE5MXYzLA0KPj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAxOTEg Yml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2MycG5iMjA4dzEs DQo+PiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIwOCBiaXQgYmluYXJ5IGZpZWxkICovDQo+ PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYzJ0bmIyMzl2MSwNCj4+ICsJLyoqPCBYOS42MiBjdXJ2 ZSBvdmVyIGEgMjM5IGJpdCBiaW5hcnkgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9jMnRuYjIzOXYyLA0KPj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAyMzkgYml0IGJpbmFy eSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2MydG5iMjM5djMsDQo+PiArCS8q KjwgWDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9D UllQVE9fRUNfQ1VSVkVfYzJwbmIyNzJ3MSwNCj4+ICsJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEg MjcyIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjMw NHcxLA0KPj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAzMDQgYml0IGJpbmFyeSBmaWVsZCAq Lw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2MydG5iMzU5djEsDQo+PiArCS8qKjwgWDkuNjIg Y3VydmUgb3ZlciBhIDM1OSBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNf Q1VSVkVfYzJwbmIzNjh3MSwNCj4+ICsJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMzY4IGJpdCBi aW5hcnkgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjQzMXIxLA0KPj4g KwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSA0MzEgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlS VEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczEsDQo+PiArCS8qKjwgV1RM UyBjdXJ2ZSBvdmVyIGEgMTEzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19F Q19DVVJWRV93YXBfd3NnX2lkbV9lY2lkX3d0bHMzLA0KPj4gKwkvKio8IE5JU1QvU0VDRy9XVExT IGN1cnZlIG92ZXIgYSAxNjMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VD X0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczQsDQo+PiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVy IGEgMTEzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV93YXBf d3NnX2lkbV9lY2lkX3d0bHM1LA0KPj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAxNjMgYml0 IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2Vj aWRfd3RsczEwLA0KPj4gKwkvKio8IE5JU1QvU0VDRy9XVExTIGN1cnZlIG92ZXIgYSAyMzMgYml0 IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2Vj aWRfd3RsczExLA0KPj4gKwkvKio8IE5JU1QvU0VDRy9XVExTIGN1cnZlIG92ZXIgYSAyMzMgYml0 IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0JDVVJWRV9MSVNUX0VORA0KPj4g K307DQo+W0Zpb25hXSBEbyB3ZSByZWFsbHkgd2FudCB0byBzcGVjaWZ5IGN1cnZlcyA8IDIyNCBi aXRzPyBFdmVuIDIyNCBpcyB3b2VmdWxseSBpbnNlY3VyZSB0aGVzZSBkYXlzLg0KPkFsc28gZG8g d2Ugd2FudCB0byBsaXN0IGFsbCAicHVibGlzaGVkIiBjdXJ2ZXMsIG9yIGFsbG93IGN1c3RvbWVy cyB0byBzcGVjaWZ5DQo+dGhlaXIgb3duIGN1cnZlIHBhcmFtZXRlcnMsIGF0IGxlYXN0IG9uIHRo ZSBGRUNDIEFQST8gQWRkaW5nIGFuIEFQSSB0byBzcGVjaWZ5IGEgY3VydmUgd2l0aA0KPml0cyBw YXJhbXMgd291bGQgYWxsb3cgbmV3IGN1cnZlcyB0byBiZSB1c2VkIHdpdGhvdXQgYWZmZWN0aW5n IHRoZSBBUEkgYW5kDQo+d291bGQgYXZvaWQgdGhlIG5lZWQgZm9yIHN1Y2ggYW4gZXh0ZW5zaXZl IGxpc3QuDQo+RG8gd2UgbmVlZCBhICJjYXBhYmlsaXRpZXMiIG1hc2sgdG8gc2F5IHdoaWNoIGN1 cnZlcyBhcmUgc3VwcG9ydGVkIGJ5IGEgZGV2aWNlPw0KPldoYXQgYWJvdXQgU00yPw0KPg0KPj4g Ky8qKg0KPj4gKyAqIEVsbGlwdGljIGN1cnZlIHBvaW50IGZvcm1hdA0KPj4gKyAqLw0KPj4gK3N0 cnVjdCBydGVfY3J5cHRvX2VjX3BvaW50IHsNCj4+ICsJc3RydWN0IHsNCj4+ICsJCWludCBsZW5n dGg7DQo+PiArCQl1aW50OF90ICpkYXRhOw0KPj4gKwkJcGh5c19hZGRyX3QgcGh5c19hZGRyOw0K Pj4gKwkJLyoqPCBwaHlzX2FkZHIgaXMgdXNlZCBvbmx5IGZvciBwb2ludHMgcGFzc2VkIGluIHRo ZQ0KPj4gKwkJICogYXN5bV9vcCBzdHJ1Y3R1cmUuDQo+PiArCQkgKi8NCj4+ICsJfSB4Ow0KPj4g KwkvKio8IFggY28tb3JkaW5hdGUgKi8NCj4+ICsNCj5bRmlvbmFdIElmIGdlbmVyaWMgcnRlX2Ny eXB0b19wYXJhbV90IGlzIGRlZmluZWQgdGhlbiBpdCBjb3VsZCBiZSB1c2VkIGhlcmUgdG9vLg0K Pg0KPj4gKwlzdHJ1Y3Qgew0KPj4gKwkJaW50IGxlbmd0aDsNCj4+ICsJCXVpbnQ4X3QgKmRhdGE7 DQo+PiArCQlwaHlzX2FkZHJfdCBwaHlzX2FkZHI7DQo+PiArCQkvKio8IHBoeXNfYWRkciBpcyB1 c2VkIG9ubHkgZm9yIHBvaW50cyBwYXNzZWQgaW4gdGhlDQo+PiArCQkgKiBvcGVyYXRpb24gc3Ry dWN0dXJlDQo+PiArCQkgKi8NCj4+ICsJfSB5Ow0KPj4gKwkvKio8IFkgY28tb3JkaW5hdGUgKi8N Cj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEVsbGlwdGljIGN1cnZlIHR5cGUNCj4+ICsg Ki8NCj4+ICtlbnVtIHJ0ZV9jcnlwdG9fZWNfY3VydmVfdHlwZSB7DQo+PiArCVJURV9DUllQVE9f RUNfQ1VSVkVfVFlQRV9VTkRFRklORUQsDQo+PiArCS8qKjwgQ3VydmUgdHlwZSB1bmRlZmluZWQg Ki8NCj4+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9UWVBFX1BSSU1FX0ZJRUxELA0KPj4gKwkvKio8 IEVDIGN1cnZlIGRlZmluZWQgb3ZlciBhIHByaW1lIGZpZWxkICovDQo+PiArCVJURV9DUllQVE9f RUNfQ1VSVkVfVFlQRV9CSU5BUllfRklFTEQsDQo+PiArCS8qKjwgRUMgY3VydmUgZGVmaW5lZCBv dmVyIGEgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfTElTVF9FTkQN Cj4+ICt9Ow0KPj4gKw0KPj4gKy8qKiBhc3ltIHhmb3JtIHR5cGUgbmFtZSBzdHJpbmdzICovDQo+ PiArZXh0ZXJuIGNvbnN0IGNoYXIgKg0KPj4gK3J0ZV9jcnlwdG9fYXN5bV94Zm9ybV9zdHJpbmdz W107DQo+PiArDQo+PiArLyoqIGFzeW0gb3BlcmF0aW9ucyB0eXBlIG5hbWUgc3RyaW5ncyAqLw0K Pj4gK2V4dGVybiBjb25zdCBjaGFyICoNCj4+ICtydGVfY3J5cHRvX2FzeW1fb3Bfc3RyaW5nc1td Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEVsbGlwdGljIGN1cnZlIGlkDQo+PiArICovDQo+PiAr c3RydWN0IHJ0ZV9jcnlwdG9fZWNfY3VydmVfaWQgew0KPj4gKwlSVEVfU1REX0MxMQ0KPj4gKwl1 bmlvbiB7DQo+PiArCQllbnVtIHJ0ZV9jcnlwdG9fZWNfcHJpbWVfY3VydmUgcGN1cnZlOw0KPj4g KwkJZW51bSBydGVfY3J5cHRvX2VjX2JpbmFyeV9jdXJ2ZSBiY3VydmU7DQo+PiArCX07DQo+PiAr fTsNCj5bRmlvbmFdIEJlY2F1c2UgdGhlIHZhbHVlcyBvZiB0aGVzZSB0d28gZW51bXMgb3Zlcmxh cCwgaWYgeW91IHNwZWNpZnkgdGhlIGN1cnZlIHR5cGUgaW5jb3JyZWN0bHksIHlvdSdsbCBzdGls bA0KPmhhdmUgYSBwb3RlbnRpYWxseSB2YWxpZCBjdXJ2ZSBlbnVtIHNwZWNpZmllZC4gSSBzdWdn ZXN0IGl0J3Mgc2FmZXIgdG8gaW5jbHVkZSB0aGUgdHlwZSBoZXJlIHdpdGggdGhlIHVuaW9uLA0K PnJhdGhlciB0aGFuIGluIHRoZSB3cmFwcGVyIHhmb3JtIHN0cnVjdCwgaS5lLg0KPnN0cnVjdCBy dGVfY3J5cHRvX2VjX2N1cnZlIHsNCj4JZW51bSBydGVfY3J5cHRvX2VjX2N1cnZlX3R5cGUgY3Vy dmVfdHlwZTsNCj4JLyoqPCBjdXJ2ZSB0eXBlOiBQcmltZSB2cyBCaW5hcnkgKi8NCj4JdW5pb24g ew0KPgllbnVtIHJ0ZV9jcnlwdG9fZWNfcHJpbWVfY3VydmUgcGN1cnZlX2lkOw0KPgllbnVtIHJ0 ZV9jcnlwdG9fZWNfYmluYXJ5X2N1cnZlIGJjdXJ2ZV9pZDsNCj4JfTsNCj59Ow0KPj4gKy8qKg0K Pj4gKyAqIEFzeW1tZXRyaWMgUlNBIHRyYW5zZm9ybSBkYXRhDQo+PiArICoNCj4+ICsgKiBUaGlz IHN0cnVjdHVyZSBjb250YWlucyBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gUlNBIGNyeXB0bw0K Pj4gKyAqIHRyYW5zZm9ybS4NCj4+ICsgKg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBydGVfY3J5cHRv X3JzYV94Zm9ybSB7DQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gbjsNCj4+ICsJ LyoqPCBuIC0gUHJpbWUgbW9kdWx1cw0KPj4gKwkgKiBQcmltZSBtb2R1bHVzIGRhdGEgb2YgUlNB IG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0d29yaw0KPj4gKwkgKiBieXRlIG9yZGVyIGZv cm1hdC4NCj4+ICsJICovDQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZTsNCj4+ ICsJLyoqPCBlIC0gUHVibGljIGtleSBleHBvbmVudA0KPj4gKwkgKiBQdWJsaWMga2V5IGV4cG9u ZW50IHVzZWQgZm9yIFJTQSBwdWJsaWMga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtDQo+PiArCSAq IHN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPj4gKwkgKi8NCj4+ICsNCj4+ICsJ cnRlX2NyeXB0b194Zm9ybV9wYXJhbSBkOw0KPj4gKwkvKio8IGQgLSBQcml2YXRlIGtleSBleHBv bmVudA0KPj4gKwkgKiBQcml2YXRlIGtleSBleHBvbmVudCB1c2VkIGZvciBSU0EgcHJpdmF0ZSBr ZXkgb3BlcmF0aW9ucyBpbg0KPj4gKwkgKiBPY3RldC1zdHJpbmcgIG5ldHdvcmsgYnl0ZSBvcmRl ciBmb3JtYXQuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHA7 DQo+PiArCS8qKjwgcCAtIFByaXZhdGUga2V5IGNvbXBvbmVudCBQDQo+PiArCSAqIFByaXZhdGUg a2V5IGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhvZA0K Pj4gKwkgKiBvZiBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmluZyBuZXR3b3Jr IGJ5dGUgb3JkZXINCj4+ICsJICogZm9ybWF0Lg0KPj4gKwkgKi8NCj4+ICsNCj4+ICsJcnRlX2Ny eXB0b194Zm9ybV9wYXJhbSBxOw0KPj4gKwkvKio8IHEgLSBQcml2YXRlIGtleSBjb21wb25lbnQg UQ0KPj4gKwkgKiBQcml2YXRlIGtleSBjb21wb25lbnQgb2YgUlNBIHBhcmFtZXRlciAgcmVxdWly ZWQgZm9yIENSVCBtZXRob2QNCj4+ICsJICogb2YgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBpbiBP Y3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+PiArCSAqIGZvcm1hdC4NCj4+ICsJICov DQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZFA7DQo+PiArCS8qKjwgZFAgLSBQ cml2YXRlIENSVCBjb21wb25lbnQNCj4+ICsJICogUHJpdmF0ZSBDUlQgY29tcG9uZW50IG9mIFJT QSBwYXJhbWV0ZXIgIHJlcXVpcmVkIGZvciBDUlQgbWV0aG9kDQo+PiArCSAqIFJTQSBwcml2YXRl IGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4+ICsJ ICogZm9ybWF0Lg0KPj4gKwkgKiBkUCA9IGQgbW9kICggcCAtIDEgKQ0KPj4gKwkgKi8NCj4+ICsN Cj4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBkUTsNCj4+ICsJLyoqPCBkUSAtIFByaXZhdGUg Q1JUIGNvbXBvbmVudA0KPj4gKwkgKiBQcml2YXRlIENSVCBjb21wb25lbnQgb2YgUlNBIHBhcmFt ZXRlciAgcmVxdWlyZWQgZm9yIENSVCBtZXRob2QNCj4+ICsJICogUlNBIHByaXZhdGUga2V5IG9w ZXJhdGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPj4gKwkgKiBmb3Jt YXQuDQo+PiArCSAqIGRRID0gZCBtb2QgKCBxIC0gMSApDQo+PiArCSAqLw0KPj4gKw0KPj4gKwly dGVfY3J5cHRvX3hmb3JtX3BhcmFtIHFJbnY7DQo+PiArCS8qKjwgcUludiAtIFByaXZhdGUgQ1JU IGNvbXBvbmVudA0KPj4gKwkgKiBQcml2YXRlIENSVCBjb21wb25lbnQgb2YgUlNBIHBhcmFtZXRl ciAgcmVxdWlyZWQgZm9yIENSVCBtZXRob2QNCj4+ICsJICogUlNBIHByaXZhdGUga2V5IG9wZXJh dGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPj4gKwkgKiBmb3JtYXQu DQo+PiArCSAqIHFJbnYgPSBpbnYgcSBtb2QgcA0KPj4gKwkgKi8NCj4+ICt9Ow0KPltGaW9uYV0g VGhpcyBhbGxvd3MgYm90aCByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHByaXZhdGUga2V5IHRvIGJl IHNwZWNpZmllZA0KPndpdGggdGhlIHBvc3NpYmlsaXR5IG9mIGNvbmZ1c2lvbiBpZiBib3RoIGFy ZSBzcGVjaWZpZWQuDQo+V291bGQgaXQgYmUgYmV0dGVyIHRvIGhhdmUgYSB1bmlvbiBvZiAyIGRp ZmZlcmVudCBzdHJ1Y3R1cmVzLCBvbmUgd2l0aCB7bixkfSBhbmQNCj50aGUgb3RoZXIgd2l0aCB7 cCxxLGRQLGRRLHFJbnZ9Pw0KPg0KPj4gKy8qKg0KPj4gKyAqIEFzeW1tZXRyaWMgTW9kdWxhciBl eHBvbmVudGlhdGlvbiB0cmFuc2Zvcm0gZGF0YQ0KPj4gKyAqDQo+PiArICogVGhpcyBzdHJ1Y3R1 cmUgY29udGFpbnMgZGF0YSByZXF1aXJlZCB0byBwZXJmb3JtIG1vZHVsYXIgZXhwb25lbnRhdGlv bg0KPj4gKyAqIGNyeXB0byB0cmFuc2Zvcm0uDQo+PiArICoNCj4+ICsgKi8NCj4+ICtzdHJ1Y3Qg cnRlX2NyeXB0b19tb2RleF94Zm9ybSB7DQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFy YW0gbW9kdWx1czsNCj4+ICsJLyoqPCBtb2R1bHVzDQo+PiArCSAqIFByaW1lIG1vZHVsdXMgb2Yg dGhlIG1vZGV4cCB0cmFuc2Zvcm0gb3BlcmF0aW9uIGluIE9jdGV0LXN0cmluZw0KPj4gKwkgKiBu ZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPj4gKwkgKi8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0 b194Zm9ybV9wYXJhbSBleHBvbmVudDsNCj4+ICsJLyoqPCBleHBvbmVudA0KPj4gKwkgKiBQcml2 YXRlIGV4cG9uZW50IG9mIHRoZSBtb2RleHAgdHJhbnNmb3JtIG9wZXJhdGlvbiBpbg0KPj4gKwkg KiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4+ICsJICovDQo+PiAr fTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBBc3ltbWV0cmljIERIIHRyYW5zZm9ybSBkYXRhDQo+ PiArICoNCj4+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBkYXRhIHVzZWQgdG8gcGVyZm9y bSBESCBrZXkNCj4+ICsgKiBvcGVyYXRpb25zLg0KPj4gKyAqDQo+PiArICovDQo+PiArc3RydWN0 IHJ0ZV9jcnlwdG9fZGhfeGZvcm0gew0KPj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHA7DQo+ PiArCS8qKjwgcCA6IFByaW1lIG1vZHVsdXMgZGF0YQ0KPj4gKwkgKiBESCBwcmltZSBtb2R1bG91 cyBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPj4gKwkg Ki8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBnOw0KPj4gKwkvKio8IGcgOiBH ZW5lcmF0b3INCj4+ICsJICogREggZ3JvdXAgZ2VuZXJhdG9yIGRhdGEgaW4gT2N0ZXQtc3RyaW5n IG5ldHdvcmsgYnl0ZSBvcmRlcg0KPj4gKwkgKiBmb3JtYXQuDQo+PiArCSAqLw0KPj4gK307DQo+ PiArDQo+PiArLyoqDQo+PiArICogQXN5bW1ldHJpYyBFQ0RIIHRyYW5zZm9ybSBkYXRhDQo+PiAr ICoNCj4+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBkYXRhIHJlcXVpcmVkIHRvIHBlcmZv cm0gRUNESCBjcnlwdG8NCj4+ICsgKiB0cmFuc2Zvcm0uDQo+PiArICoNCj4+ICsgKi8NCj4+ICtz dHJ1Y3QgcnRlX2NyeXB0b19lY2RoX3hmb3JtIHsNCj4+ICsNCj4+ICsJZW51bSBydGVfY3J5cHRv X2VjX2N1cnZlX3R5cGUgY3VydmVfdHlwZTsNCj4+ICsJLyoqPCBFQ0RIIGN1cnZlIHR5cGU6IFBy aW1lIHZzIEJpbmFyeSAqLw0KPj4gKw0KPj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19jdXJ2ZV9p ZCBjdXJ2ZV9pZDsNCj4+ICsNCj4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBwOw0KPj4gKwkv Kio8IHA6DQo+PiArCSAqIElmIHRoZSBjdXJ2ZV90eXBlIGlzIEByZWYgUlRFX0NSWVBUT19FQ19D VVJWRV9UWVBFX1BSSU1FX0ZJRUxEOg0KPj4gKwkgKiBwIGhvbGRzIHRoZSBwcmltZSBtb2R1bHVz IGRhdGEgaW4gT2N0ZXQgc3RyaW5nIGZvcm1hdC4NCj4+ICsJICoNCj4+ICsJICogSWYgdGhlIGN1 cnZlX3R5cGUgaXMgQHJlZiBSVEVfQ1JZUFRPX0VDX0NVUlZFX1RZUEVfQklOQVJZX0ZJRUxEOg0K Pj4gKwkgKiBwIGhvbGRzIHJlZHVjdGlvbiBwb2x5bm9taWFsIGNvLWVmZmljaWVudHMgYW5kIGRl Z3JlZS4NCj4+ICsJICovDQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gYTsNCj4+ ICsJLyoqPCBDdXJ2ZSBQYXJhbWV0ZXIgQ28tZWZmaWNpZW50ICdhJyBvZiBjdXJ2ZSBlcXVhdGlv biBkYXRhIGluDQo+PiArCSAqIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0 Lg0KPj4gKwkgKi8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBiOw0KPj4gKwkv Kio8IEN1cnZlIFBhcmFtZXRlciBDby1lZmZpY2llbnQgJ2InIG9mIGN1cnZlIGVxdWF0aW9uIGRh dGEgaW4NCj4+ICsJICogT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+ PiArCSAqLw0KPj4gKw0KPj4gKwlzdHJ1Y3QgIHJ0ZV9jcnlwdG9fZWNfcG9pbnQgRzsNCj4+ICsJ LyoqPCBHOiBFQyBjdXJ2ZSBnZW5lcmF0b3IgcG9pbnQNCj4+ICsJICogRUMgY3VydmUgZ2VuZXJh dG9yIHBvaW50IGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPj4gKwkg KiBmb3JtYXQuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIG47 DQo+PiArCS8qKjwgbiA6IG9yZGVyIG9mIEcNCj4+ICsJICogRUNESCBjdXJ2ZSBvcmRlciBkYXRh IGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPj4gKwkgKi8NCj4+ ICsNCj4+ICsJaW50IGg7DQo+PiArCS8qKjwgQ28tZmFjdG9yIG9mIHRoZSBjdXJ2ZSAqLw0KPj4g Kw0KPj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHBrZXk7DQo+PiArCS8qKjwgcGtleTogUHJp dmF0ZSBrZXkNCj4+ICsJICogUHJpdmF0ZSBrZXkgZGF0YSBmb3IgRUNESCBvcGVyYXRpb24gaW4g T2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZQ0KPj4gKwkgKiBvcmRlciBmb3JtYXQuDQo+PiArCSAq Lw0KPj4gKw0KPj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCBROw0KPj4gKwkvKio8IFE6 IFB1YmxpYyBrZXkgcG9pbnQNCj4+ICsJICogUHVibGljIGtleSBwb2ludCBkYXRhIG9mIEVDREgg b3BlcmF0aW9uIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrDQo+PiArCSAqIGJ5dGUgb3JkZXIgZm9y bWF0Lg0KPj4gKwkgKi8NCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEFzeW1tZXRyaWMg RGlnaXRhbCBTaWduYXR1cmUgdHJhbnNmb3JtIG9wZXJhdGlvbg0KPj4gKyAqDQo+PiArICogVGhp cyBzdHJ1Y3R1cmUgY29udGFpbiBzaWduZXIga2V5IGluZm9ybWF0aW9uIGZvciBEU0Egc2lnbmF0 dXJlDQo+PiArICogZ2VuZXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uLg0KPj4gKyAqIEFwcCB3aGlj aCBkb2VzIGJvdGggU2lnbmF0dXJlIEdlbmVyYXRpb24gYW5kIFZlcmlmaWNhdGlvbiBzaG91bGQN Cj4+ICsgKiBjcmVhdGUgdHdvIHNlcGFyYXRlIHNlc3Npb24gY2FycnlpbmcgaXRzIG93biBhbmQg cGVlciBrZXkgaW5mb3JtYXRpb24NCj4+ICsgKg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBydGVfY3J5 cHRvX2RzYV94Zm9ybSB7DQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcDsNCj4+ICsJLyoq PCBwIC0gUHJpbWUgbW9kdWx1cw0KPj4gKwkgKiBQcmltZSBtb2R1bHVzIGRhdGEgZm9yIERTQSBv cGVyYXRpb24gaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZQ0KPj4gKwkgKiBvcmRlciBmb3Jt YXQuDQo+PiArCSAqLw0KPj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHE7DQo+PiArCS8qKjwg cSA6IE9yZGVyIG9mIHRoZSBzdWJncm91cC4NCj4+ICsJICogT3JkZXIgb2YgdGhlIHN1Ymdyb3Vw IGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPj4gKwkgKiBmb3JtYXQu DQo+PiArCSAqIChwLTEpICUgcSA9IDANCj4+ICsJICovDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1f cGFyYW0gZzsNCj4+ICsJLyoqPCBnOiBHZW5lcmF0b3Igb2YgdGhlIHN1Ymdyb3VwDQo+PiArCSAq IEdlbmVyYXRvciAgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1h dC4NCj4+ICsJICovDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0geDsNCj4+ICsJLyoqPCB4 OiBQcml2YXRlIGtleSBvZiB0aGUgc2lnbmVyDQo+PiArCSAqIFByaXZhdGUga2V5IGRhdGEgaW4g T2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+PiArCSAqIFByaXZhdGUg a2V5IGlzIHZhbGlkIG9ubHkgZm9yIHNpZ25hdHVyZSBnZW5lcmF0aW9uIG9wZXJhdGlvbi4NCj4+ ICsJICovDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0geTsNCj4+ICsJLyoqPCB5IDogUHVi bGljIGtleSBvZiB0aGUgc2lnbmVyLg0KPj4gKwkgKiBQdWJsaWMga2V5IGRhdGEgb2YgdGhlIHNp Z25lciBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+PiArCSAqIGZvcm1hdC4N Cj4+ICsJICogeSA9IGdeeCBtb2QgcA0KPj4gKwkgKi8NCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0K Pj4gKyAqIEFzeW1tZXRyaWMgRUNEU0EgdHJhbnNmb3JtIGRhdGENCj4+ICsgKg0KPj4gKyAqIFRo aXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVxdWlyZWQgdG8gcGVyZm9ybSBFQ0RTQSBjcnlw dG8NCj4+ICsgKiB0cmFuc2Zvcm0uDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9jcnlwdG9fZWNk c2FfeGZvcm0gew0KPj4gKwkvKiogVEJEICovDQo+PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsg KiBBc3ltbWV0cmljIG1vZHVsYXIgaW52ZXJzZSB0cmFuc2Zvcm0gb3BlcmF0aW9uDQo+PiArICoN Cj4+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0N Cj4+ICsgKiBhc3ltbWV0cmljIG1vZHVsYXIgaW52ZXJzZSBjcnlwdG8gdHJhbnNmb3JtDQo+PiAr ICovDQo+PiArc3RydWN0IHJ0ZV9jcnlwdG9fbW9kaW52X3hmb3JtIHsNCj4+ICsJLyoqIFRCRCAq Lw0KPj4gK307DQo+PiArDQo+PiArLyoqIEFzeW1tZXRyaWMgRnVuZGFtZW50YWwgRUNDIHRyYW5z Zm9ybSBvcGVyYXRpb24NCj4+ICsgKg0KPj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRh dGEgcmVxdWlyZWQgdG8gcGVyZm9ybSBhc3ltbWV0cmljDQo+PiArICogZnVuZGFtZW50YWwgRUND IGNyeXB0byB0cmFuc2Zvcm0uDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9jcnlwdG9fZmVjY194 Zm9ybSB7DQo+PiArDQo+PiArCWVudW0gcnRlX2NyeXB0b19lY19jdXJ2ZV90eXBlIGN1cnZlX3R5 cGU7DQo+PiArCS8qKjwgRkVDQyBjdXJ2ZSB0eXBlOiBQcmltZSB2cyBCaW5hcnkgKi8NCj4+ICsN Cj4+ICsJc3RydWN0IHJ0ZV9jcnlwdG9fZWNfY3VydmVfaWQgY3VydmVfaWQ7DQo+PiArCS8qKjwg RUMgY3VydmUgSUQgKi8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBvcmRlcjsN Cj4+ICsJLyoqPCBvcmRlciA6IEVDQyBjdXJ2ZSBvcmRlcg0KPj4gKwkgKiBDdXJ2ZSBvcmRlciBk YXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPj4gKwkgKi8N Cj4+ICsNCj4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBwcmltZTsNCj4+ICsJLyoqPCBwcmlt ZSA6IEN1cnZlIHByaW1lIG1vZHVsdXMgZGF0YQ0KPj4gKwkgKiBQcmltZSBtb2R1bHVzIGRhdGEg aW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+PiArCSAqLw0KPj4g Kw0KPj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCBHOw0KPj4gKwkvKio8IEc6IGN1cnZl IGdlbmVyYXRvciBwb2ludA0KPj4gKwkgKiBDdXJ2ZSBnZW5lcmF0b3IgcG9pbnQgZGF0YSBpbiBP Y3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+PiArCSAqIGZvcm1hdC4NCj4+ICsJICov DQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gYTsNCj4+ICsJLyoqPCBDby1lZmZp Y2llbnQgJ2EnIG9mIGN1cnZlIGVxdWF0aW9uIGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsN Cj4+ICsJICogYnl0ZSBvcmRlciBmb3JtYXQuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwlydGVfY3J5 cHRvX3hmb3JtX3BhcmFtIGI7DQo+PiArCS8qKjwgQ28tZWZmaWNpZW50ICdhJyBvZiBjdXJ2ZSBl cXVhdGlvbiBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrDQo+PiArCSAqIGJ5dGUgb3JkZXIg Zm9ybWF0Lg0KPj4gKwkgKi8NCj4+ICsNCj4+ICsJaW50IGg7DQo+PiArCS8qKjwgQ28tZmFjdG9y IG9mIHRoZSBjdXJ2ZSAqLw0KPj4gKw0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogQXN5 bW1ldHJpYyBjcnlwdG8gdHJhbnNmb3JtIGRhdGENCj4+ICsgKg0KPj4gKyAqIFRoaXMgc3RydWN0 dXJlIGNvbnRhaW5zIHRoZSBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gdGhlDQo+PiArICogYXN5 bW1ldHJpYyBjcnlwdG8gdHJhbnNmb3JtYXRpb24gb3BlcmF0aW9uLiBUaGUgZmllbGQgb3ANCj4+ ICsgKiBkZXRlcm1pbmVzIHRoZSBhc3ltbWV0cmljIGFsZ29yaXRobSBmb3IgdHJhbnNmb3JtYXRp b24uDQo+W0Zpb25hXSBjbGFyaWZ5IGNvbW1lbnQuIFRoZSB4Zm9ybSBvbmx5IGNvbnRhaW5zIHNv bWUgb2YgdGhlIGRhdGEsIHRoZSByZXN0IHdpbGwgYmUgcHJvdmlkZWQgaW4gdGhlIG9wLg0KPkFu ZCB0aGVyZSdzIG5vIGZpZWxkIG9wIGhlcmUuDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9jcnlw dG9fYXN5bV94Zm9ybSB7DQo+PiArCXN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0gKm5leHQ7 DQo+W0Zpb25hXSBJcyB0aGVyZSBhbnkgcmVhc29uIGZvciBhIGNoYWluIG9mIHhmb3Jtcz8NCj5J J2Qgc3VnZ2VzdCByZW1vdmluZyB1bmxlc3MgbmVlZGVkLg0KPg0KPj4gKwllbnVtIHJ0ZV9jcnlw dG9fYXN5bV94Zm9ybV90eXBlIHhmb3JtX3R5cGU7DQo+PiArCS8qKjwgQXN5bW1ldHJpYyBhbGdv cml0aG0gZm9yIGNyeXB0byB0cmFuc2Zvcm0gKi8NCj4+ICsNCj4+ICsJUlRFX1NURF9DMTENCj4+ ICsJdW5pb24gew0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fcnNhX3hmb3JtIHJzYTsNCj4+ICsJ CS8qKjwgUlNBIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4+ICsNCj4+ICsJCXN0cnVjdCBydGVfY3J5 cHRvX2ZlY2NfeGZvcm0gZmVjYzsNCj4+ICsJCS8qKjwgRnVuZGFtZW50YWwgRWxsaXB0aWMgQ3Vy dmUgeGZvcm0gcGFyYW1ldGVycyAqLw0KPj4gKw0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fbW9k ZXhfeGZvcm0gbW9kZXg7DQo+PiArCQkvKio8IE1vZHVsYXIgRXhwb25lbnRpYXRpb24geGZvcm0g cGFyYW1ldGVycyAqLw0KPj4gKw0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fbW9kaW52X3hmb3Jt IG1vZGludjsNCj4+ICsJCS8qKjwgTW9kdWx1cyBJbnZlcnNlIHhmb3JtIHBhcmFtZXRlcnMgKi8N Cj4+ICsNCj4+ICsJCXN0cnVjdCBydGVfY3J5cHRvX2VjZHNhX3hmb3JtIGVjZHNhOw0KPj4gKwkJ LyoqPCBFQ0RTQSB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+PiArDQo+PiArCQlzdHJ1Y3QgcnRlX2Ny eXB0b19lY2RoX3hmb3JtIGVjZGg7DQo+PiArCQkvKio8IEVDREggeGZvcm0gcGFyYW1ldGVycyAq Lw0KPj4gKw0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fZHNhX3hmb3JtIGRzYTsNCj4+ICsJCS8q KjwgRFNBIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4+ICsJfTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0 cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbjsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBS U0Egb3BlcmF0aW9uIHBhcmFtcw0KPj4gKyAqDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9jcnlw dG9fcnNhX29wX3BhcmFtIHsNCj4+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZSBvcF90 eXBlOw0KPj4gKwkvKio8IFR5cGUgb2YgUlNBIG9wZXJhdGlvbiBmb3IgdHJhbnNmb3JtICovOw0K Pj4gKw0KPj4gKwlydGVfY3J5cHRvX29wX3BhcmFtIG1lc3NhZ2U7DQo+PiArCS8qKjwNCj4+ICsJ ICogUG9pbnRlciB0byBkYXRhDQo+PiArCSAqIC0gdG8gYmUgZW5jcnlwdGVkIGZvciBSU0EgcHVi bGljIGVuY3J5cHQuDQo+PiArCSAqIC0gdG8gYmUgZGVjcnlwdGVkIGZvciBSU0EgcHJpdmF0ZSBk ZWNyeXB0Lg0KPj4gKwkgKiAtIHRvIGJlIHNpZ25lZCBmb3IgUlNBIHNpZ24gZ2VuZXJhdGlvbi4N Cj4+ICsJICogLSB0byBiZSBhdXRoZW50aWNhdGVkIGZvciBSU0Egc2lnbiB2ZXJpZmljYXRpb24u DQo+PiArCSAqLw0KPj4gKw0KPj4gKwlydGVfY3J5cHRvX29wX3BhcmFtIHNpZ247DQo+PiArCS8q KjwNCj4+ICsJICogUG9pbnRlciB0byBSU0Egc2lnbmF0dXJlIGRhdGEuIElmIG9wZXJhdGlvbiBp cyBSU0ENCj4+ICsJICogc2lnbiBAcmVmIFJURV9DUllQVE9fUlNBX09QX1NJR04sIGJ1ZmZlciB3 aWxsIGJlDQo+PiArCSAqIG92ZXItd3JpdHRlbiB3aXRoIGdlbmVyYXRlZCBzaWduYXR1cmUuDQo+ PiArCSAqDQo+PiArCSAqIExlbmd0aCBvZiB0aGUgc2lnbmF0dXJlIGRhdGEgd2lsbCBiZSBlcXVh bCB0byB0aGUNCj4+ICsJICogUlNBIHByaW1lIG1vZHVsdXMgbGVuZ3RoLg0KPj4gKwkgKi8NCj4+ ICsNCj4+ICsJZW51bSBydGVfY3J5cHRvX3JzYV9wYWRkaW5nX3R5cGUgcGFkOw0KPj4gKwkvKio8 IFJTQSBwYWRkaW5nIHNjaGVtZSB0byBiZSB1c2VkIGZvciB0cmFuc2Zvcm0gKi8NCj4+ICsNCj4+ ICsJZW51bSBydGVfY3J5cHRvX2F1dGhfYWxnb3JpdGhtIG1kOw0KPj4gKwkvKio8IEhhc2ggYWxn b3JpdGhtIHRvIGJlIHVzZWQgZm9yIGRhdGEgaGFzaCBpZiBwYWRkaW5nDQo+PiArCSAqIHNjaGVt ZSBpcyBlaXRoZXIgT0FFUCBvciBQU1MuIFZhbGlkIGhhc2ggYWxnb3JpdGhtcw0KPj4gKwkgKiBh cmU6DQo+PiArCSAqIE1ENSwgU0hBMSwgU0hBMjI0LCBTSEEyNTYsIFNIQTM4NCwgU0hBNTEyDQo+ PiArCSAqLw0KPj4gKw0KPj4gKwllbnVtIHJ0ZV9jcnlwdG9fYXV0aF9hbGdvcml0aG0gbWdmMW1k Ow0KPj4gKwkvKio8DQo+PiArCSAqIEhhc2ggYWxnb3JpdGhtIHRvIGJlIHVzZWQgZm9yIG1hc2sg Z2VuZXJhdGlvbiBpZg0KPj4gKwkgKiBwYWRkaW5nIHNjaGVtZSBpcyBlaXRoZXIgT0FFUCBvciBQ U1MuIElmIHBhZGRpbmcNCj4+ICsJICogc2NoZW1lIGlzIHVuc3BlY2lmaWVkIGRhdGEgaGFzaCBh bGdvcml0aG0gaXMgdXNlZA0KPj4gKwkgKiBmb3IgbWFzayBnZW5lcmF0aW9uLiBWYWxpZCBoYXNo IGFsZ29yaXRobXMgYXJlOg0KPj4gKwkgKiBNRDUsIFNIQTEsIFNIQTIyNCwgU0hBMjU2LCBTSEEz ODQsIFNIQTUxMg0KPj4gKwkgKi8NCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIERlZmZp ZS1IZWxsbWFuIE9wZXJhdGlvbnMgcGFyYW1zDQo+PiArICoNCj4+ICsgKi8NCj4+ICtzdHJ1Y3Qg cnRlX2NyeXB0b19kaF9vcF9wYXJhbSB7DQo+PiArCWVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5 cGUgb3BfdHlwZTsNCj4+ICsJLyoqPCBBc3ltbWV0cmljIG9wIHR5cGU6IEtleSBHZW5lcmF0aW9u IC8gQ29tcHV0YXRpb24gKi8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0b19vcF9wYXJhbSBwdWJfa2V5 Ow0KPj4gKwkvKio8DQo+PiArCSAqIE91dHB1dCBuYXRpdmUgYXBwIHB1YmxpYyBrZXkgd2hlbiBE SCBvcGVyYXRpb24gdHlwZSBpcw0KPj4gKwkgKiBLRVlfR0VORVJBVElPTi4NCj4+ICsJICogSW5w dXQgcGVlciBwdWJsaWMga2V5IHdoZW4gREggb3BlcmF0aW9uIGlzIHNoYXJlZCBrZXkNCj4+ICsJ ICogS0VZX0NPTVBVVEFUSU9ODQo+PiArCSAqIEFuIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUg b3JkZXIgZm9ybWF0Lg0KPj4gKwkgKg0KPj4gKwkgKi8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0b19v cF9wYXJhbSBwcml2X2tleTsNCj4+ICsJLyoqPA0KPj4gKwkgKiBPdXRwdXQgbmF0aXZlIGFwcCBw cml2YXRlIGtleSBpZiBvcGVyYXRpb24gdHlwZQ0KPj4gKwkgKiBLRVlfR0VORVJBVElPTi4NCj4+ ICsJICogSW5wdXQgbmF0aXZlIGFwcCBwcml2YXRlIGtleSB3aGVuIG9wZXJhdGlvbiB0eXBlDQo+ PiArCSAqIGlzIEtFWV9DT01QVVRBVElPTi4gcHJpdl9rZXkgaXMgaW4NCj4+ICsJICogaW4gT2N0 ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+PiArCSAqLw0KPj4gKw0KPj4g KwlydGVfY3J5cHRvX29wX3BhcmFtIHNoYXJlZF9rZXk7DQo+PiArCS8qDQo+PiArCSAqIE91dHB1 dCB3aGVuIERIIG9wZXJhdGlvbiB0eXBlIGlzIEtFWV9DT01QVVRBVElPTjoNCj4+ICsJICogY29t cHV0ZWQuIHNoYXJlZF9rZXkgaXMgd3JpdHRlbiBhcw0KPj4gKwkgKiBPY3RldC1zdHJpbmcgbmV0 d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4+ICsJICogSWdub3JlZCBmb3IgS0VZX0dFTkVSQVRJ T04uDQo+PiArCSAqLw0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogRFNBIE9wZXJhdGlv bnMgcGFyYW1zDQo+PiArICoNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgcnRlX2NyeXB0b19kc2Ffb3Bf cGFyYW0gew0KPj4gKwkvKiogVEJEICovDQo+PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBN b2QgRXhwIE9wZXJhdGlvbnMgcGFyYW1zDQo+PiArICoNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgcnRl X2NyeXB0b19tb2RleF9vcF9wYXJhbSB7DQo+PiArCXJ0ZV9jcnlwdG9fb3BfcGFyYW0gYmFzZTsN Cj4+ICsJLyoqPA0KPj4gKwkgKiBQb2ludGVyIHRvIGJhc2Ugb2YgbW9kdWxhciBleHBvbmVudGlh dGlvbiBkYXRhIGluDQo+PiArCSAqIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9y bWF0Lg0KPj4gKwkgKi8NCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEVsbGlwdGljIGN1 cnZlIERlZmZpZS1IZWxsbWFuIE9wZXJhdGlvbnMgcGFyYW1zDQo+PiArICoNCj4+ICsgKi8NCj4+ ICtzdHJ1Y3QgcnRlX2NyeXB0b19lY2RoX29wX3BhcmFtIHsNCj4+ICsJZW51bSBydGVfY3J5cHRv X2FzeW1fb3BfdHlwZSBvcF90eXBlOw0KPj4gKwkvKio8IEFzeW1tZXRyaWMgb3BlcmF0aW9uOiBr ZXkgZ2VuZXJhdGlvbiwgY29tcHV0YXRpb24gKi8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0b19vcF9w YXJhbSBwcml2X2tleTsNCj4+ICsJLyoqPA0KPj4gKwkgKiBPdXRwdXQgaWYgb3BlcmF0aW9uIHR5 cGUgaXMgS0VZX1BBSVJfR0VORVJBVElPTiwNCj4+ICsJICogb3V0cHV0IG5hdGl2ZSBhcHAgcHJp dmF0ZSBrZXkuDQo+PiArCSAqIElucHV0IGFuZCBvdXRwdXQsIElmIEVDREggb3BlcmF0aW9uIHR5 cGUgaXMgU0hBUkVEX0tFWV9DT01QVVRBVElPTiwNCj4+ICsJICogcHJpdl9rZXkgd2lsbCBob2xk IHRoZSAnWCcgY28tb3JkaW5hdGUgb2YgdGhlIHNoYXJlZA0KPj4gKwkgKiBzZWNyZXQgRUMgcG9p bnQuIHByaXZfa2V5IGlzIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrDQo+PiArCSAqIGJ5dGUgb3Jk ZXIuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCBwdWJf a2V5Ow0KPj4gKwkvKio8DQo+PiArCSAqIE91dHB1dCBpZiBvcGVyYXRpb24gdHlwZSBpcyBLRVlf UEFJUl9HRU5FUkFUSU9OLA0KPj4gKwkgKiBzdG9yZSBuYXRpdmUgYXBwIHB1YmxpYyBrZXkuDQo+ PiArCSAqIElucHV0IGlmIG9wZXJhdGlvbiB0eXBlIGlzIFNIQVJFRF9LRVlfQ09NUFVUQVRJT04s DQo+PiArCSAqDQo+PiArCSAqIEtFWV9DT01QVVRBVElPTjoNCj4+ICsJICogIHB1Yl9rZXkgaXMg aW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlci4NCj4+ICsJICovDQo+PiArfTsNCj4+ ICsNCj4+ICsvKioNCj4+ICsgKiBFbGxpcHRpYyBDdXJ2ZSBEU0EgT3BlcmF0aW9ucyBwYXJhbXMN Cj4+ICsgKg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBydGVfY3J5cHRvX2VjZHNhX29wX3BhcmFtIHsN Cj4+ICsNCj4+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZSBlY2RzYV9vcDsNCj4+ICsJ LyoqPCBFQ0RTQSBjcnlwdG8geGZvcm0gb3BlcmF0aW9uIHR5cGU6IFNpZ25hdHVyZQ0KPj4gKwkg KiAgZ2VuZXJhdGlvbi9WZXJpZmljYXRpb24NCj4+ICsJICovDQo+PiArCS8qKiBUQkQgKi8NCj4+ ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEZ1bmRhbWVudGFsIEVsbGlwdGljIEN1cnZlIE9w ZXJhdGlvbnMgcGFyYW1zDQo+PiArICoNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgcnRlX2NyeXB0b19m ZWNjX29wX3BhcmFtIHsNCj4+ICsJZW51bSBydGVfY3J5cHRvX2ZlY2Nfb3B0eXBlIGZlY2Nfb3A7 DQo+PiArCS8qKjwgRkVDQyBjcnlwdG8geGZvcm0gb3BlcmF0aW9uIHR5cGUgKi8NCj4+ICsNCj4+ ICsJLyoqIFRCRCAqLw0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogTW9kIEludiBPcGVy YXRpb25zIHBhcmFtcw0KPj4gKyAqDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9jcnlwdG9fbW9k aW52X29wX3BhcmFtIHsNCj4+ICsJcnRlX2NyeXB0b19vcF9wYXJhbSBwcmltZTsNCj4+ICsJLyoq PA0KPj4gKwkgKiBQb2ludGVyIHRvIHRoZSBwcmltZSBtb2R1bHVzIGRhdGEgZm9yIG1vZHVsYXIN Cj4+ICsJICogaW52ZXJzZSBvcGVyYXRpb24gaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZQ0K Pj4gKwkgKiBvcmRlciBmb3JtYXQuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwlydGVfY3J5cHRvX29w X3BhcmFtIGJhc2U7DQo+PiArCS8qKjwNCj4+ICsJICogUG9pbnRlciB0byB0aGUgYmFzZSBmb3Ig dGhlIG1vZHVsYXIgaW52ZXJzZQ0KPj4gKwkgKiBvcGVyYXRpb24gaW4gT2N0ZXQtc3RyaW5nIG5l dHdvcmsgYnl0ZSBvcmRlcg0KPj4gKwkgKiBmb3JtYXQuDQo+PiArCSAqLw0KPj4gK307DQo+PiAr DQo+PiArLyoqDQo+PiArICogQXN5bW1ldHJpYyBDcnlwdG9ncmFwaGljIE9wZXJhdGlvbi4NCj4+ ICsgKg0KPj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVsYXRpbmcgdG8gcGVy Zm9ybWluZyBhc3ltbWV0cmljIGNyeXB0b2dyYXBoaWMNCj4+ICsgKiBvcGVyYXRpb24uDQo+PiAr ICoNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX29wIHsNCj4+ICsJZW51bSBy dGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB0eXBlOw0KPj4gKwkvKio8IFJTQSwgREgsIEVDREgs IERTQSBldGMgKi8NCj4+ICsNCj4+ICsJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9u ICpzZXNzaW9uOw0KPj4gKwkvKio8IEhhbmRsZSBmb3IgdGhlIGluaXRpYWxpc2VkIHNlc3Npb24g Y29udGV4dCAqLw0KPj4gKw0KPj4gKwlSVEVfU1REX0MxMQ0KPj4gKwl1bmlvbiB7DQo+PiArCQlz dHJ1Y3QgcnRlX2NyeXB0b19yc2Ffb3BfcGFyYW0gcnNhOw0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlw dG9fZGhfb3BfcGFyYW0gZGg7DQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19tb2RleF9vcF9wYXJh bSBtb2RleDsNCj4+ICsJCXN0cnVjdCBydGVfY3J5cHRvX2VjZGhfb3BfcGFyYW0gZWNkaDsNCj4+ ICsJCXN0cnVjdCBydGVfY3J5cHRvX2VjZHNhX29wX3BhcmFtIGVjZHNhOw0KPj4gKwkJc3RydWN0 IHJ0ZV9jcnlwdG9fZHNhX29wX3BhcmFtIGRzYTsNCj4+ICsJCXN0cnVjdCBydGVfY3J5cHRvX2Zl Y2Nfb3BfcGFyYW0gZmVjYzsNCj4+ICsJCXN0cnVjdCBydGVfY3J5cHRvX21vZGludl9vcF9wYXJh bSBtb2RpbnY7DQo+PiArCX07DQo+PiArfSBfX3J0ZV9jYWNoZV9hbGlnbmVkOw0KPj4gKw0KPj4g Ky8qKg0KPj4gKyAqIFJlc2V0IHRoZSBmaWVsZHMgb2YgYW4gYXN5bW1ldHJpYyBvcGVyYXRpb24g dG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuDQo+PiArICoNCj4+ICsgKiBAcGFyYW0Jb3AJVGhlIGNy eXB0byBvcGVyYXRpb24gdG8gYmUgcmVzZXQuDQo+PiArICovDQo+PiArc3RhdGljIGlubGluZSB2 b2lkDQo+PiArX19ydGVfY3J5cHRvX2FzeW1fb3BfcmVzZXQoc3RydWN0IHJ0ZV9jcnlwdG9fYXN5 bV9vcCAqb3ApDQo+PiArew0KPj4gKwltZW1zZXQob3AsIDAsIHNpemVvZigqb3ApKTsNCj4+ICt9 DQo+PiArDQo+PiArDQo+PiArLyoqDQo+PiArICogQXR0YWNoIGEgc2Vzc2lvbiB0byBhbiBhc3lt bWV0cmljIGNyeXB0byBvcGVyYXRpb24NCj4+ICsgKg0KPj4gKyAqIEBwYXJhbQlhc3ltX29wCWNy eXB0byBvcGVyYXRpb24NCj4+ICsgKiBAcGFyYW0Jc2VzcwljcnlwdG9kZXYgc2Vzc2lvbg0KPj4g KyAqLw0KPj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+PiArX19ydGVfY3J5cHRvX29wX2F0dGFjaF9h c3ltX3Nlc3Npb24oc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCAqYXN5bV9vcCwNCj4+ICsJCXN0 cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykNCj4+ICt7DQo+PiArCWFzeW1f b3AtPnNlc3Npb24gPSBzZXNzOw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArI2lm ZGVmIF9fY3BsdXNwbHVzDQo+PiArfQ0KPj4gKyNlbmRpZg0KPj4gKw0KPj4gKyNlbmRpZiAvKiBf UlRFX0NSWVBUT19BU1lNX0hfICovDQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9k ZXYvcnRlX2NyeXB0b2Rldi5jIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5j DQo+PiBpbmRleCA3NzI2ZDE1Li5iYWQxOGMzIDEwMDY0NA0KPj4gLS0tIGEvbGliL2xpYnJ0ZV9j cnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5jDQo+PiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9y dGVfY3J5cHRvZGV2LmMNCj4+IEBAIC0xNjYsNiArMTY2LDMzIEBAIHN0cnVjdCBydGVfY3J5cHRv ZGV2X2NhbGxiYWNrIHsNCj4+ICAJW1JURV9DUllQVE9fQUVBRF9PUF9ERUNSWVBUXQk9ICJkZWNy eXB0Ig0KPj4gIH07DQo+Pg0KPj4gKy8qKg0KPj4gKyAqIEFzeW1tZXRyaWMgY3J5cHRvIHRyYW5z Zm9ybSBvcGVyYXRpb24gc3RyaW5ncyBpZGVudGlmaWVycy4NCj4+ICsgKi8NCj4+ICtjb25zdCBj aGFyICpydGVfY3J5cHRvX2FzeW1feGZvcm1fc3RyaW5nc1tdID0gew0KPj4gKwlbUlRFX0NSWVBU T19BU1lNX1hGT1JNX1JTQV0JPSAicnNhIiwNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9YRk9STV9N T0RFWF0JPSAibW9kZXhwIiwNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9YRk9STV9ESF0JPSAiZGgi LA0KPj4gKwlbUlRFX0NSWVBUT19BU1lNX1hGT1JNX0VDREhdCT0gImVjZGgiLA0KPj4gKwlbUlRF X0NSWVBUT19BU1lNX1hGT1JNX0RTQV0JPSAiZHNhIiwNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9Y Rk9STV9FQ0RTQV0JPSAiZWNkc2EiLA0KPj4gKwlbUlRFX0NSWVBUT19BU1lNX1hGT1JNX01PRElO Vl0JPSAibW9kaW52IiwNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9YRk9STV9GRUNDXQk9ICJmZWNj Ig0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogQXN5bW1ldHJpYyBjcnlwdG8gb3BlcmF0 aW9uIHN0cmluZ3MgaWRlbnRpZmllcnMuDQo+PiArICovDQo+PiArY29uc3QgY2hhciAqcnRlX2Ny eXB0b19hc3ltX29wX3N0cmluZ3NbXSA9IHsNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9FTkNS WVBUXQk9ICJlbmNyeXB0IiwNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9ERUNSWVBUXQk9ICJk ZWNyeXB0IiwNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9TSUdOXQk9ICJzaWduIiwNCj4+ICsJ W1JURV9DUllQVE9fQVNZTV9PUF9WRVJJRlldCT0gInZlcmlmeSIsDQo+PiArCVtSVEVfQ1JZUFRP X0FTWU1fT1BfS0VZX1BBSVJfR0VORVJBVElPTl0JPSAia2V5cGFpcl9nZW5lcmF0ZSIsDQo+PiAr CVtSVEVfQ1JZUFRPX0FTWU1fT1BfU0hBUkVEX0tFWV9DT01QVVRBVElPTl0gPSAic2hhcmVka2V5 X2NvbXB1dGF0aW9uIiwNCj4+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9FQ0RIX09QX0tFWV9DSEVD S10JPSAiZWNkaF9rZXljaGVjayIsDQo+PiArfTsNCj4+ICsNCj4+ICBpbnQNCj4+ICBydGVfY3J5 cHRvZGV2X2dldF9jaXBoZXJfYWxnb19lbnVtKGVudW0gcnRlX2NyeXB0b19jaXBoZXJfYWxnb3Jp dGhtICphbGdvX2VudW0sDQo+PiAgCQljb25zdCBjaGFyICphbGdvX3N0cmluZykNCj4+IEBAIC0y MTcsNiArMjQ0LDI0IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhbGxiYWNrIHsNCj4+ICAJcmV0 dXJuIC0xOw0KPj4gIH0NCj4+DQo+PiAraW50DQo+PiArcnRlX2NyeXB0b2Rldl9nZXRfYXN5bV94 Zm9ybV9lbnVtKGVudW0gcnRlX2NyeXB0b19hc3ltX3hmb3JtX3R5cGUgKnhmb3JtX2VudW0sDQo+ PiArCQljb25zdCBjaGFyICp4Zm9ybV9zdHJpbmcpDQo+PiArew0KPj4gKwl1bnNpZ25lZCBpbnQg aTsNCj4+ICsNCj4+ICsJZm9yIChpID0gMTsgaSA8IFJURV9ESU0ocnRlX2NyeXB0b19hc3ltX3hm b3JtX3N0cmluZ3MpOyBpKyspIHsNCj4+ICsJCWlmIChzdHJjbXAoeGZvcm1fc3RyaW5nLA0KPj4g KwkJCSAgIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV9zdHJpbmdzW2ldKSA9PSAwKSB7DQo+PiArCQkJ Knhmb3JtX2VudW0gPSAoZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSkgaTsNCj4+ICsJ CQlyZXR1cm4gMDsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4gKw0KPj4gKwkvKiBJbnZhbGlkIHN0cmlu ZyAqLw0KPj4gKwlyZXR1cm4gLTE7DQo+PiArfQ0KPj4gKw0KPj4gIC8qKg0KPj4gICAqIFRoZSBj cnlwdG8gYXV0aCBvcGVyYXRpb24gc3RyaW5ncyBpZGVudGlmaWVycy4NCj4+ICAgKiBJdCBjb3Vs ZCBiZSB1c2VkIGluIGFwcGxpY2F0aW9uIGNvbW1hbmQgbGluZS4NCj4+IEBAIC0yNjIsNiArMzA3 LDI4IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhbGxiYWNrIHsNCj4+DQo+PiAgfQ0KPj4NCj4+ ICtjb25zdCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltbWV0cmljX2NhcGFiaWxpdHkgKg0KPj4g K3J0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5X2dldCh1aW50OF90IGRldl9pZCwNCj4+ICsJ CWNvbnN0IHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fY2FwYWJpbGl0eV9pZHggKmlkeCkNCj4+ ICt7DQo+PiArCWNvbnN0IHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhcGFiaWxpdGllcyAqY2FwYWJp bGl0eTsNCj4+ICsJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfaW5mbyBkZXZfaW5mbzsNCj4+ICsJdW5z aWduZWQgaW50IGkgPSAwOw0KPj4gKw0KPj4gKwltZW1zZXQoJmRldl9pbmZvLCAwLCBzaXplb2Yo cnRlX2NyeXB0b2Rldl9pbmZvKSk7DQo+PiArCXJ0ZV9jcnlwdG9kZXZfaW5mb19nZXQoZGV2X2lk LCAmZGV2X2luZm8pOw0KPj4gKw0KPj4gKwl3aGlsZSAoKGNhcGFiaWxpdHkgPSAmZGV2X2luZm8u Y2FwYWJpbGl0aWVzW2krK10pLT5vcCAhPQ0KPj4gKwkJCVJURV9DUllQVE9fT1BfVFlQRV9VTkRF RklORUQpIHsNCj4+ICsJCWlmIChjYXBhYmlsaXR5LT5vcCAhPSBSVEVfQ1JZUFRPX09QX1RZUEVf QVNZTU1FVFJJQykNCj4+ICsJCQljb250aW51ZTsNCj4+ICsNCj4+ICsJCWlmIChjYXBhYmlsaXR5 LT5hc3ltLnhmb3JtX3R5cGUgPT0gaWR4LT50eXBlKQ0KPj4gKwkJCXJldHVybiAmY2FwYWJpbGl0 eS0+YXN5bTsNCj4+ICsJfQ0KPj4gKwlyZXR1cm4gTlVMTDsNCj4+ICt9Ow0KPj4gKw0KPj4gICNk ZWZpbmUgcGFyYW1fcmFuZ2VfY2hlY2soeCwgeSkgXA0KPj4gIAkoKCh4IDwgeS5taW4pIHx8ICh4 ID4geS5tYXgpKSB8fCBcDQo+PiAgCSh5LmluY3JlbWVudCAhPSAwICYmICh4ICUgeS5pbmNyZW1l bnQpICE9IDApKQ0KPj4gQEAgLTYwMSw2ICs2NjgsMjQgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXYg Kg0KPj4gIAlyZXR1cm4gZGV2LT5kYXRhLT5uYl9xdWV1ZV9wYWlyczsNCj4+ICB9DQo+Pg0KPj4g K3VpbnQxNl90DQo+PiArcnRlX2NyeXB0b2Rldl9hc3ltX3F1ZXVlX3BhaXJfY291bnQodWludDhf dCBkZXZfaWQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0KPj4gKw0K Pj4gKwlkZXYgPSAmcnRlX2NyeXB0b19kZXZpY2VzW2Rldl9pZF07DQo+PiArCXJldHVybiBkZXYt PmRhdGEtPm5iX2FzeW1fcXA7DQo+PiArfQ0KPj4gKw0KPj4gK3VpbnQxNl90DQo+PiArcnRlX2Ny eXB0b2Rldl9zeW1fcXVldWVfcGFpcl9jb3VudCh1aW50OF90IGRldl9pZCkNCj4+ICt7DQo+PiAr CXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXY7DQo+PiArDQo+PiArCWRldiA9ICZydGVfY3J5cHRv X2RldmljZXNbZGV2X2lkXTsNCj4+ICsJcmV0dXJuIGRldi0+ZGF0YS0+bmJfc3ltX3FwOw0KPj4g K30NCj4+ICsNCj4+ICBzdGF0aWMgaW50DQo+PiAgcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyc19j b25maWcoc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwgdWludDE2X3QgbmJfcXBhaXJzLA0KPj4g IAkJaW50IHNvY2tldF9pZCkNCj4+IEBAIC0xMDg4LDYgKzExNzMsMzggQEAgc3RydWN0IHJ0ZV9j cnlwdG9kZXYgKg0KPj4gIAlyZXR1cm4gMDsNCj4+ICB9DQo+Pg0KPj4gK2ludA0KPj4gK3J0ZV9j cnlwdG9kZXZfYXN5bV9zZXNzaW9uX2luaXQodWludDhfdCBkZXZfaWQsDQo+PiArCQlzdHJ1Y3Qg cnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MsDQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0 b19hc3ltX3hmb3JtICp4Zm9ybXMsDQo+PiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKQ0KPj4g K3sNCj4+ICsJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldjsNCj4+ICsJdWludDhfdCBpbmRleDsN Cj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJZGV2ID0gcnRlX2NyeXB0b2Rldl9wbWRfZ2V0X2Rl dihkZXZfaWQpOw0KPj4gKw0KPj4gKwlpZiAoc2VzcyA9PSBOVUxMIHx8IHhmb3JtcyA9PSBOVUxM IHx8IGRldiA9PSBOVUxMKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArCWluZGV4 ID0gZGV2LT5kcml2ZXJfaWQ7DQo+PiArDQo+PiArCWlmIChzZXNzLT5zZXNzX3ByaXZhdGVfZGF0 YVtpbmRleF0gPT0gTlVMTCkgew0KPj4gKwkJcmV0ID0gZGV2LT5kZXZfb3BzLT5hc3ltX3Nlc3Np b25fY29uZmlndXJlKGRldiwNCj4+ICsJCQkJCQkJICAgeGZvcm1zLA0KPj4gKwkJCQkJCQkgICBz ZXNzLCBtcCk7DQo+PiArCQlpZiAocmV0IDwgMCkgew0KPj4gKwkJCUNERVZfTE9HX0VSUigNCj4+ ICsJCQkJImRldl9pZCAlZCBmYWlsZWQgdG8gY29uZmlndXJlIHNlc3Npb24gZGV0YWlscyIsDQo+ PiArCQkJCWRldl9pZCk7DQo+PiArCQkJcmV0dXJuIHJldDsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4g Kw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZf c3ltX3Nlc3Npb24gKg0KPj4gIHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25fY3JlYXRlKHN0cnVj dCBydGVfbWVtcG9vbCAqbXApDQo+PiAgew0KPj4gQEAgLTExMDUsNiArMTIyMiwyMyBAQCBzdHJ1 Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqDQo+PiAgCXJldHVybiBzZXNzOw0KPj4gIH0N Cj4+DQo+PiArc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICoNCj4+ICtydGVfY3J5 cHRvZGV2X2FzeW1fc2Vzc2lvbl9jcmVhdGUoc3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCj4+ICt7 DQo+PiArCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzczsNCj4+ICsNCj4+ ICsJLyogQWxsb2NhdGUgYSBzZXNzaW9uIHN0cnVjdHVyZSBmcm9tIHRoZSBzZXNzaW9uIHBvb2wg Ki8NCj4+ICsJaWYgKHJ0ZV9tZW1wb29sX2dldChtcCwgKHZvaWQgKikmc2VzcykpIHsNCj4+ICsJ CUNERVZfTE9HX0VSUigiY291bGRuJ3QgZ2V0IG9iamVjdCBmcm9tIHNlc3Npb24gbWVtcG9vbCIp Ow0KPj4gKwkJcmV0dXJuIE5VTEw7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyogQ2xlYXIgZGV2aWNl IHNlc3Npb24gcG9pbnRlciAqLw0KPj4gKwltZW1zZXQoc2VzcywgMCwgKHNpemVvZih2b2lkICop ICogbmJfZHJpdmVycykpOw0KPj4gKw0KPj4gKwlyZXR1cm4gc2VzczsNCj4+ICt9DQo+PiArDQo+ PiAgaW50DQo+PiAgcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2F0dGFjaF9zeW1fc2Vzc2lvbih1 aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQo+PiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9zeW1fc2Vzc2lvbiAqc2VzcykNCj4+IEBAIC0xMTYwLDYgKzEyOTQsNjAgQEAgc3RydWN0IHJ0 ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPj4gIH0NCj4+DQo+PiAgaW50DQo+PiArcnRlX2Ny eXB0b2Rldl9xdWV1ZV9wYWlyX2F0dGFjaF9hc3ltX3Nlc3Npb24odWludDhfdCBkZXZfaWQsIHVp bnQxNl90IHFwX2lkLA0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpz ZXNzKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldjsNCj4+ICsNCj4+ICsJ aWYgKCFydGVfY3J5cHRvZGV2X3BtZF9pc192YWxpZF9kZXYoZGV2X2lkKSkgew0KPj4gKwkJQ0RF Vl9MT0dfRVJSKCJJbnZhbGlkIGRldl9pZD0lZCIsIGRldl9pZCk7DQo+PiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlkZXYgPSAmcnRlX2NyeXB0b19kZXZpY2VzW2Rldl9p ZF07DQo+PiArDQo+PiArCS8qIFRoZSBBUEkgaXMgb3B0aW9uYWwsIG5vdCByZXR1cm5pbmcgZXJy b3IgaWYgZHJpdmVyIGRvIG5vdCBzdXVwb3J0ICovDQo+PiArCVJURV9GVU5DX1BUUl9PUl9FUlJf UkVUKCpkZXYtPmRldl9vcHMtPmFzeW1fcXBfYXR0YWNoX3Nlc3Npb24sIDApOw0KPj4gKw0KPj4g Kwl2b2lkICpzZXNzX3ByaXYgPSBnZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfZGF0YShzZXNzLCBk ZXYtPmRyaXZlcl9pZCk7DQo+PiArDQo+PiArCWlmIChkZXYtPmRldl9vcHMtPmFzeW1fcXBfYXR0 YWNoX3Nlc3Npb24oZGV2LCBxcF9pZCwgc2Vzc19wcml2KSkgew0KPj4gKwkJQ0RFVl9MT0dfRVJS KCJkZXZfaWQgJWQgZmFpbGVkIHRvIGF0dGFjaCBxcDogJWQgd2l0aCBzZXNzaW9uIiwNCj4+ICsJ CQkJZGV2X2lkLCBxcF9pZCk7DQo+PiArCQlyZXR1cm4gLUVQRVJNOw0KPj4gKwl9DQo+PiArDQo+ PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQNCj4+ICtydGVfY3J5cHRvZGV2X3F1 ZXVlX3BhaXJfZGV0YWNoX2FzeW1fc2Vzc2lvbih1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBf aWQsDQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MpDQo+PiAr ew0KPj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0KPj4gKw0KPj4gKwlpZiAoIXJ0ZV9j cnlwdG9kZXZfcG1kX2lzX3ZhbGlkX2RldihkZXZfaWQpKSB7DQo+PiArCQlDREVWX0xPR19FUlIo IkludmFsaWQgZGV2X2lkPSVkIiwgZGV2X2lkKTsNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4g Kwl9DQo+PiArDQo+PiArCWRldiA9ICZydGVfY3J5cHRvX2RldmljZXNbZGV2X2lkXTsNCj4+ICsN Cj4+ICsJLyogVGhlIEFQSSBpcyBvcHRpb25hbCwgbm90IHJldHVybmluZyBlcnJvciBpZiBkcml2 ZXIgZG8gbm90IHN1dXBvcnQgKi8NCj4+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ ZGV2X29wcy0+YXN5bV9xcF9kZXRhY2hfc2Vzc2lvbiwgMCk7DQo+PiArDQo+PiArCXZvaWQgKnNl c3NfcHJpdiA9IGdldF9hc3ltX3Nlc3Npb25fcHJpdmF0ZV9kYXRhKHNlc3MsIGRldi0+ZHJpdmVy X2lkKTsNCj4+ICsNCj4+ICsJaWYgKGRldi0+ZGV2X29wcy0+YXN5bV9xcF9kZXRhY2hfc2Vzc2lv bihkZXYsIHFwX2lkLCBzZXNzX3ByaXYpKSB7DQo+PiArCQlDREVWX0xPR19FUlIoImRldl9pZCAl ZCBmYWlsZWQgdG8gZGV0YWNoIHFwOiAlZCBmcm9tIHNlc3Npb24iLA0KPj4gKwkJCQlkZXZfaWQs IHFwX2lkKTsNCj4+ICsJCXJldHVybiAtRVBFUk07DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJu IDA7DQo+PiArfQ0KPj4gKw0KPj4gK2ludA0KPj4gIHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25f Y2xlYXIodWludDhfdCBkZXZfaWQsDQo+PiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vz c2lvbiAqc2VzcykNCj4+ICB7DQo+PiBAQCAtMTE3Niw2ICsxMzY0LDIyIEBAIHN0cnVjdCBydGVf Y3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4+ICB9DQo+Pg0KPj4gIGludA0KPj4gK3J0ZV9jcnlw dG9kZXZfYXN5bV9zZXNzaW9uX2NsZWFyKHVpbnQ4X3QgZGV2X2lkLA0KPj4gKwkJc3RydWN0IHJ0 ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHJ0ZV9j cnlwdG9kZXYgKmRldjsNCj4+ICsNCj4+ICsJZGV2ID0gcnRlX2NyeXB0b2Rldl9wbWRfZ2V0X2Rl dihkZXZfaWQpOw0KPj4gKw0KPj4gKwlpZiAoZGV2ID09IE5VTEwgfHwgc2VzcyA9PSBOVUxMKQ0K Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArCWRldi0+ZGV2X29wcy0+YXN5bV9zZXNz aW9uX2NsZWFyKGRldiwgc2Vzcyk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICtpbnQNCj4+ICBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uX2ZyZWUoc3RydWN0IHJ0ZV9j cnlwdG9kZXZfc3ltX3Nlc3Npb24gKnNlc3MpDQo+PiAgew0KPj4gIAl1aW50OF90IGk7DQo+PiBA QCAtMTE5OSw2ICsxNDAzLDMxIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoN Cj4+ICAJcmV0dXJuIDA7DQo+PiAgfQ0KPj4NCj4+ICtpbnQNCj4+ICtydGVfY3J5cHRvZGV2X2Fz eW1fc2Vzc2lvbl9mcmVlKHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykN Cj4+ICt7DQo+PiArCXVpbnQ4X3QgaTsNCj4+ICsJdm9pZCAqc2Vzc19wcml2Ow0KPj4gKwlzdHJ1 Y3QgcnRlX21lbXBvb2wgKnNlc3NfbXA7DQo+PiArDQo+PiArCWlmIChzZXNzID09IE5VTEwpDQo+ PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJLyogQ2hlY2sgdGhhdCBhbGwgZGV2aWNl IHByaXZhdGUgZGF0YSBoYXMgYmVlbiBmcmVlZCAqLw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgbmJf ZHJpdmVyczsgaSsrKSB7DQo+PiArCQlzZXNzX3ByaXYgPSBnZXRfYXN5bV9zZXNzaW9uX3ByaXZh dGVfZGF0YShzZXNzLCBpKTsNCj4+ICsJCWlmIChzZXNzX3ByaXYgIT0gTlVMTCkNCj4+ICsJCQly ZXR1cm4gLUVCVVNZOw0KPj4gKwl9DQo+PiArDQo+PiArCS8qIFJldHVybiBzZXNzaW9uIHRvIG1l bXBvb2wgKi8NCj4+ICsJc2Vzc19tcCA9IHJ0ZV9tZW1wb29sX2Zyb21fb2JqKHNlc3MpOw0KPj4g KwlydGVfbWVtcG9vbF9wdXQoc2Vzc19tcCwgc2Vzcyk7DQo+PiArDQo+PiArCXJldHVybiAwOw0K Pj4gK30NCj4+ICsNCj4+ICsNCj4+ICB1bnNpZ25lZCBpbnQNCj4+ICBydGVfY3J5cHRvZGV2X2dl dF9oZWFkZXJfc2Vzc2lvbl9zaXplKHZvaWQpDQo+PiAgew0KPj4gQEAgLTEyMzUsNiArMTQ2NCw1 NyBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqDQo+PiAgCQlyZXR1cm4gaGVh ZGVyX3NpemU7DQo+Pg0KPj4gIAlyZXR1cm4gcHJpdl9zZXNzX3NpemU7DQo+PiArfQ0KPj4gKw0K Pj4gK3Vuc2lnbmVkIGludA0KPj4gK3J0ZV9jcnlwdG9kZXZfZ2V0X3N5bV9zZXNzaW9uX3ByaXZh dGVfc2l6ZSh1aW50OF90IGRldl9pZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBydGVfY3J5cHRvZGV2 ICpkZXY7DQo+PiArCXVuc2lnbmVkIGludCBoZWFkZXJfc2l6ZSA9IHNpemVvZih2b2lkICopICog bmJfZHJpdmVyczsNCj4+ICsJdW5zaWduZWQgaW50IHByaXZfc2Vzc19zaXplOw0KPj4gKw0KPj4g KwlpZiAoIXJ0ZV9jcnlwdG9kZXZfcG1kX2lzX3ZhbGlkX2RldihkZXZfaWQpKQ0KPj4gKwkJcmV0 dXJuIDA7DQo+PiArDQo+PiArCWRldiA9IHJ0ZV9jcnlwdG9kZXZfcG1kX2dldF9kZXYoZGV2X2lk KTsNCj4+ICsNCj4+ICsJaWYgKCpkZXYtPmRldl9vcHMtPnN5bV9zZXNzaW9uX2dldF9zaXplID09 IE5VTEwpDQo+PiArCQlyZXR1cm4gMDsNCj4+ICsNCj4+ICsJcHJpdl9zZXNzX3NpemUgPSAoKmRl di0+ZGV2X29wcy0+c3ltX3Nlc3Npb25fZ2V0X3NpemUpKGRldik7DQo+PiArDQo+PiArCS8qDQo+ PiArCSAqIElmIHNpemUgaXMgbGVzcyB0aGFuIHNlc3Npb24gaGVhZGVyIHNpemUsDQo+PiArCSAq IHJldHVybiB0aGUgbGF0dGVyLCBhcyB0aGlzIGd1YXJhbnRlZXMgdGhhdA0KPj4gKwkgKiBzZXNz aW9ubGVzcyBvcGVyYXRpb25zIHdpbGwgd29yaw0KPj4gKwkgKi8NCj4+ICsJaWYgKHByaXZfc2Vz c19zaXplIDwgaGVhZGVyX3NpemUpDQo+PiArCQlyZXR1cm4gaGVhZGVyX3NpemU7DQo+PiArDQo+ PiArCXJldHVybiBwcml2X3Nlc3Nfc2l6ZTsNCj4+ICt9DQo+PiArDQo+PiArDQo+PiArdW5zaWdu ZWQgaW50DQo+PiArcnRlX2NyeXB0b2Rldl9nZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfc2l6ZSh1 aW50OF90IGRldl9pZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXY7DQo+ PiArCXVuc2lnbmVkIGludCBoZWFkZXJfc2l6ZSA9IHNpemVvZih2b2lkICopICogbmJfZHJpdmVy czsNCj4+ICsJdW5zaWduZWQgaW50IHByaXZfc2Vzc19zaXplOw0KPj4gKw0KPj4gKwlpZiAoIXJ0 ZV9jcnlwdG9kZXZfcG1kX2lzX3ZhbGlkX2RldihkZXZfaWQpKQ0KPj4gKwkJcmV0dXJuIDA7DQo+ PiArDQo+PiArCWRldiA9IHJ0ZV9jcnlwdG9kZXZfcG1kX2dldF9kZXYoZGV2X2lkKTsNCj4+ICsN Cj4+ICsJaWYgKCpkZXYtPmRldl9vcHMtPmFzeW1fc2Vzc2lvbl9nZXRfc2l6ZSA9PSBOVUxMKQ0K Pj4gKwkJcmV0dXJuIDA7DQo+PiArDQo+PiArCXByaXZfc2Vzc19zaXplID0gKCpkZXYtPmRldl9v cHMtPmFzeW1fc2Vzc2lvbl9nZXRfc2l6ZSkoZGV2KTsNCj4+ICsJaWYgKHByaXZfc2Vzc19zaXpl IDwgaGVhZGVyX3NpemUpDQo+PiArCQlyZXR1cm4gaGVhZGVyX3NpemU7DQo+PiArDQo+PiArCXJl dHVybiBwcml2X3Nlc3Nfc2l6ZTsNCj4+DQo+PiAgfQ0KPj4NCj4+IEBAIC0xMjY4LDYgKzE1NDgs MTMgQEAgc3RydWN0IHJ0ZV9tZW1wb29sICoNCj4+ICAJCQlzaXplb2Yoc3RydWN0IHJ0ZV9jcnlw dG9fc3ltX29wKSArDQo+PiAgCQkJcHJpdl9zaXplOw0KPj4NCj4+ICsJaWYgKHR5cGUgPT0gUlRF X0NSWVBUT19PUF9UWVBFX0FTWU1NRVRSSUMpIHsNCj4+ICsJCS8qIG92ZXJyaWRlIHNpemUgYnkg c2l6ZSBvZiBhc3ltIG9wICovDQo+PiArCQllbHRfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnRlX2Ny eXB0b19vcCkgKw0KPj4gKwkJCSAgIHNpemVvZihzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX29wKSAr DQo+PiArCQkJICAgcHJpdl9zaXplOw0KPj4gKwl9DQo+PiArDQo+PiAgCS8qIGxvb2t1cCBtZW1w b29sIGluIGNhc2UgYWxyZWFkeSBhbGxvY2F0ZWQgKi8NCj4+ICAJc3RydWN0IHJ0ZV9tZW1wb29s ICptcCA9IHJ0ZV9tZW1wb29sX2xvb2t1cChuYW1lKTsNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvbGli L2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5oIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYv cnRlX2NyeXB0b2Rldi5oDQo+PiBpbmRleCBjOGZhNjg5Li43Mjg0ODNjIDEwMDY0NA0KPj4gLS0t IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5oDQo+PiArKysgYi9saWIvbGli cnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmgNCj4+IEBAIC0xNzgsMTUgKzE3OCw0MSBAQCBz dHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1tZXRyaWNfY2FwYWJpbGl0eSB7DQo+PiAgCX07DQo+PiAg fTsNCj4+DQo+PiArLyoqDQo+PiArICogQXN5bW1ldHJpYyBDcnlwdG8gQ2FwYWJpbGl0eQ0KPj4g KyAqDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bW1ldHJpY19jYXBhYmls aXR5IHsNCj4+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB4Zm9ybV90eXBlOw0K Pj4gKwkvKio8IFRyYW5zZm9ybSB0eXBlOiBSU0EvTU9ERVhQL0RIL0VDREgvRFNBL0VDRFNBL0ZF Q0MvTU9ESU5WICovDQo+PiArDQo+W0Zpb25hXSBJcyB0aGVyZSBhIGZpeGVkIHNldCBvZiBydGVf Y3J5cHRvZGV2X2FzeW1fb3BfdHlwZSBmb3IgZWFjaCB4Zm9ybSB0eXBlPw0KPklmIGFueSB2YXJp YW50IHBvc3NpYmxlIHRoZW4gdGhlcmUgd291bGQgbmVlZCB0byBiZSBhIGNhcGFiaWxpdHkgZmll bGQgZm9yIHRoaXMuDQo+DQo+CVJURV9TVERfQzExDQo+PiArCXVuaW9uIHsNCj4+ICsJCXN0cnVj dCBydGVfY3J5cHRvX3BhcmFtX3JhbmdlIG1vZGxlbjsNCj4+ICsJCS8qKjwgUmFuZ2Ugb2YgbW9k dWx1cyBsZW5ndGggc3VwcG9ydGVkIGZvciBtb2R1bHVzIGJhc2VkDQo+PiArCQkgKiBhbGdvczoN Cj4+ICsJCSAqIFJTQQ0KPj4gKwkJICogTU9ERVhQDQo+PiArCQkgKiBNT0RJTlYNCj4+ICsJCSAq IERIDQo+PiArCQkgKg0KPj4gKwkJICogVmFsdWUgMCB0byBtaW4gYW5kL29yIG1heCBtZWFucyBu byBzcGVjaWZpYyBsaW1pdCBhbmQgbGltaXQNCj4+ICsJCSAqIGlzIGltcGxlbWVudGF0aW9uIGRl cGVuZGVudA0KPj4gKwkJICoNCj4+ICsJCSAqLw0KPj4gKwl9Ow0KPj4gK307DQo+PiArDQo+PiAg LyoqIFN0cnVjdHVyZSB1c2VkIHRvIGNhcHR1cmUgYSBjYXBhYmlsaXR5IG9mIGEgY3J5cHRvIGRl dmljZSAqLw0KPj4gIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhcGFiaWxpdGllcyB7DQo+PiAgCWVu dW0gcnRlX2NyeXB0b19vcF90eXBlIG9wOw0KPj4gLQkvKio8IE9wZXJhdGlvbiB0eXBlICovDQo+ PiArCS8qKjwgT3BlcmF0aW9uIHR5cGU6IHN5bW1ldHJpYy9hc3ltbWV0cmljICovDQo+Pg0KPj4g IAlSVEVfU1REX0MxMQ0KPj4gIAl1bmlvbiB7DQo+PiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9z eW1tZXRyaWNfY2FwYWJpbGl0eSBzeW07DQo+PiAgCQkvKio8IFN5bW1ldHJpYyBvcGVyYXRpb24g Y2FwYWJpbGl0eSBwYXJhbWV0ZXJzICovDQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3lt bWV0cmljX2NhcGFiaWxpdHkgYXN5bTsNCj4+ICsJCS8qKjwgQXN5bW1ldHJpYyBvcGVyYXRpb24g Y2FwYWJpbGl0eSBwYXJhbWV0ZXJzICovDQo+PiAgCX07DQo+PiAgfTsNCj4+DQo+PiBAQCAtMjAx LDcgKzIyNywxNyBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fY2FwYWJpbGl0eV9pZHggew0K Pj4gIH07DQo+Pg0KPj4gIC8qKg0KPj4gLSAqICBQcm92aWRlIGNhcGFiaWxpdGllcyBhdmFpbGFi bGUgZm9yIGRlZmluZWQgZGV2aWNlIGFuZCBhbGdvcml0aG0NCj4+ICsgKiBTdHJ1Y3R1cmUgdXNl ZCB0byBkZXNjcmliZSBhc3ltbWV0cmljIGNyeXB0byB4Zm9ybXMNCj4+ICsgKiBFYWNoIHhmb3Jt IG1hcHMgdG8gb25lIGFzeW0gYWxnb3JpdGhtLg0KPj4gKyAqDQo+PiArICovDQo+PiArc3RydWN0 IHJ0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5X2lkeCB7DQo+PiArCWVudW0gcnRlX2NyeXB0 b19hc3ltX3hmb3JtX3R5cGUgdHlwZTsNCj4+ICsJLyoqPCBBc3ltbWV0cmljIHhmb3JtIChhbGdv KSB0eXBlICovDQo+PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBQcm92aWRlIGNhcGFiaWxp dGllcyBhdmFpbGFibGUgZm9yIGRlZmluZWQgZGV2aWNlIGFuZCBhbGdvcml0aG0NCj4+ICAgKg0K Pj4gICAqIEBwYXJhbQlkZXZfaWQJCVRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+PiAg ICogQHBhcmFtCWlkeAkJRGVzY3JpcHRpb24gb2YgY3J5cHRvIGFsZ29yaXRobXMuDQo+PiBAQCAt MjE1LDYgKzI1MSwyMCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fY2FwYWJpbGl0eV9pZHgg ew0KPj4gIAkJY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX2NhcGFiaWxpdHlfaWR4ICpp ZHgpOw0KPj4NCj4+ICAvKioNCj4+ICsgKiAgUHJvdmlkZSBjYXBhYmlsaXRpZXMgYXZhaWxhYmxl IGZvciBkZWZpbmVkIGRldmljZSBhbmQgYWxnb3JpdGhtDQo+PiArICoNCj4+ICsgKiBAcGFyYW0J ZGV2X2lkCQlUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPj4gKyAqIEBwYXJhbQlhbGdv CQlEZXNjcmlwdGlvbiBvZiBjcnlwdG8gYWxnb3JpdGhtcy4NCj4+ICsgKg0KPj4gKyAqIEByZXR1 cm4NCj4+ICsgKiAgIC0gUmV0dXJuIGRlc2NyaXB0aW9uIG9mIHRoZSBhc3ltbWV0cmljIGNyeXB0 byBjYXBhYmlsaXR5IGlmIGV4aXN0Lg0KPj4gKyAqICAgLSBSZXR1cm4gTlVMTCBpZiB0aGUgY2Fw YWJpbGl0eSBub3QgZXhpc3QuDQo+PiArICovDQo+PiArY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfYXN5bW1ldHJpY19jYXBhYmlsaXR5ICoNCj4+ICtydGVfY3J5cHRvZGV2X2FzeW1fY2FwYWJp bGl0eV9nZXQodWludDhfdCBkZXZfaWQsDQo+PiArCQljb25zdCBzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9hc3ltX2NhcGFiaWxpdHlfaWR4ICppZHgpOw0KPj4gKw0KPj4gKy8qKg0KPj4gICAqIENoZWNr IGlmIGtleSBzaXplIGFuZCBpbml0aWFsIHZlY3RvciBhcmUgc3VwcG9ydGVkDQo+PiAgICogaW4g Y3J5cHRvIGNpcGhlciBjYXBhYmlsaXR5DQo+PiAgICoNCj4+IEBAIC0yNzAsNiArMzIwLDIxIEBA IHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9jYXBhYmlsaXR5X2lkeCB7DQo+PiAgCQl1aW50MTZf dCBpdl9zaXplKTsNCj4+DQo+PiAgLyoqDQo+PiArICogQ2hlY2sgaWYgbW9kdWx1cyBsZW5ndGgg aXMgaW4gc3VwcG9ydGVkIHJhbmdlDQo+PiArICoNCj4+ICsgKiBAcGFyYW0JY2FwYWJpbGl0eQlE ZXNjcmlwdGlvbiBvZiB0aGUgYXN5bW1ldHJpYyBjcnlwdG8gY2FwYWJpbGl0eS4NCj4+ICsgKiBA cGFyYW0JbW9kbGVuCQltb2R1bHVzIGxlbmd0aC4NCj4+ICsgKg0KPj4gKyAqIEByZXR1cm4NCj4+ ICsgKiAgIC0gUmV0dXJuIDAgaWYgdGhlIHBhcmFtZXRlcnMgYXJlIGluIHJhbmdlIG9mIHRoZSBj YXBhYmlsaXR5Lg0KPj4gKyAqICAgLSBSZXR1cm4gLTEgaWYgdGhlIHBhcmFtZXRlcnMgYXJlIG91 dCBvZiByYW5nZSBvZiB0aGUgY2FwYWJpbGl0eS4NCj4+ICsgKi8NCj4+ICtpbnQNCj4+ICtydGVf Y3J5cHRvZGV2X2FzeW1fY2FwYWJpbGl0eV9jaGVja19tb2RsZW4oDQo+PiArCQljb25zdCBzdHJ1 Y3QgcnRlX2NyeXB0b2Rldl9hc3ltbWV0cmljX2NhcGFiaWxpdHkgKmNhcGFiaWxpdHksDQo+PiAr CQl1aW50MTZfdCBtb2RsZW4pOw0KPj4gKw0KPj4gKy8qKg0KPj4gICAqIFByb3ZpZGUgdGhlIGNp cGhlciBhbGdvcml0aG0gZW51bSwgZ2l2ZW4gYW4gYWxnb3JpdGhtIHN0cmluZw0KPj4gICAqDQo+ PiAgICogQHBhcmFtCWFsZ29fZW51bQlBIHBvaW50ZXIgdG8gdGhlIGNpcGhlciBhbGdvcml0aG0N Cj4+IEBAIC0zMTQsNiArMzc5LDIyIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9jYXBhYmls aXR5X2lkeCB7DQo+PiAgcnRlX2NyeXB0b2Rldl9nZXRfYWVhZF9hbGdvX2VudW0oZW51bSBydGVf Y3J5cHRvX2FlYWRfYWxnb3JpdGhtICphbGdvX2VudW0sDQo+PiAgCQljb25zdCBjaGFyICphbGdv X3N0cmluZyk7DQo+Pg0KPj4gKy8qKg0KPj4gKyAqIFByb3ZpZGUgdGhlIEFzeW1tZXRyaWMgeGZv cm0gZW51bSwgZ2l2ZW4gYW4geGZvcm0gc3RyaW5nDQo+PiArICoNCj4+ICsgKiBAcGFyYW0JeGZv cm1fZW51bQlBIHBvaW50ZXIgdG8gdGhlIHhmb3JtIHR5cGUNCj4+ICsgKgkJCQllbnVtIHRvIGJl IGZpbGxlZA0KPj4gKyAqIEBwYXJhbQl4Zm9ybV9zdHJpbmcJeGZvcm0gc3RyaW5nDQo+PiArICoN Cj4+ICsgKiBAcmV0dXJuDQo+PiArICogLSBSZXR1cm4gLTEgaWYgc3RyaW5nIGlzIG5vdCB2YWxp ZA0KPj4gKyAqIC0gUmV0dXJuIDAgaXMgdGhlIHN0cmluZyBpcyB2YWxpZA0KPj4gKyAqLw0KPj4g K2ludA0KPj4gK3J0ZV9jcnlwdG9kZXZfZ2V0X2FzeW1feGZvcm1fZW51bShlbnVtIHJ0ZV9jcnlw dG9fYXN5bV94Zm9ybV90eXBlICp4Zm9ybV9lbnVtLA0KPj4gKwkJY29uc3QgY2hhciAqeGZvcm1f c3RyaW5nKTsNCj4+ICsNCj4+ICsNCj4+ICAvKiogTWFjcm8gdXNlZCBhdCBlbmQgb2YgY3J5cHRv IFBNRCBsaXN0ICovDQo+PiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX0VORF9PRl9DQVBBQklMSVRJ RVNfTElTVCgpIFwNCj4+ICAJeyBSVEVfQ1JZUFRPX09QX1RZUEVfVU5ERUZJTkVEIH0NCj4+IEBA IC0zNzksMTYgKzQ2MCw5OSBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9pbmZvIHsNCj4+ICAJLyoq PCBBcnJheSBvZiBkZXZpY2VzIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgKi8NCj4+DQo+PiAgCXVu c2lnbmVkIG1heF9uYl9xdWV1ZV9wYWlyczsNCj4+IC0JLyoqPCBNYXhpbXVtIG51bWJlciBvZiBx dWV1ZXMgcGFpcnMgc3VwcG9ydGVkIGJ5IGRldmljZS4gKi8NCj4+ICsJLyoqPCBNYXhpbXVtIG51 bWJlciBvZiBxdWV1ZXMgcGFpcnMgc3VwcG9ydGVkIGJ5IGRldmljZS4NCj4+ICsJICoNCj4+ICsJ ICogVGhpcyBpcyB0b3RhbCBudW1iZXIgb2YgcXVldWVzIHN1cHBvcnRlZCBieSBkZXZpY2UgYW5k IGluY2x1c2l2ZQ0KPj4gKwkgKiBvZiBudW1iZXJzIHVzZWQgZm9yIGJvdGggc3ltbWV0cmljIGFu ZCBhc3ltbWV0cmljIGZvciBQTUQgdGhhdA0KPj4gKwkgKiBzdXBwb3J0IHN5bW1ldHJpYyBhbmQg YXN5bW1ldHJpYyBvcCBpLmUuDQo+PiArCSAqDQo+PiArCSAqIG1heF9uYl9xdWV1ZV9wYWlycyA9 IG1heF9uYl9zeW1tX3FwICsgbWF4X25iX2FzeW1tX3FwDQo+PiArCSAqDQo+PiArCSAqIEZvbGxv d2luZyB0YWJsZSBkZW1vbnN0YXJ0ZSB3aGF0IHRoZSB2YWx1ZXMgc2hvdWxkIGJlIGZvciBkZXZp Y2UNCj4+ICsJICogd2l0aCBtYXggbnVtIG9mICduJyBxdWV1ZSBwYWlyICh4ID0gZG9uJ3QgY2Fy ZSk6DQo+PiArCSAqDQo+PiArCSAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiArCSAqIHxkZXZfY2FwYSAgICAg ICAgICAgICAgICB8IG1heF9uYl9hc3ltbV9xcHwgbWF4X25iX3N5bW1fcXAgfCBtYXhfcXB8DQo+ PiArCSAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+PiArCSAqIHwgU3ltbSBvbmx5ICAgICAgICAgICAgICB8ICAg IHggICAgICAgICAgIHwgMCAgICAgICAgICAgICAgfCBuICAgICB8DQo+PiArCSAqIHwgQXN5bW0g b25seSAgICAgICAgICAgICB8ICAgIDAgICAgICAgICAgIHwgeCAgICAgICAgICAgICAgfCBuICAg ICB8DQo+PiArCSAqIHwgc3ltbSthc3ltbSB3LyBmaXhlZCBxcCB8ICAgIHAgICAgICAgICAgIHwg bi1wICAgICAgICAgICAgfCBuICAgICB8DQo+PiArCSAqIHwgc3ltbSthc3ltbSB3LyBhbGwgcXAg ICB8ICAgIDAgICAgICAgICAgIHwgMCAgICAgICAgICAgICAgfCBuICAgICB8DQo+PiArCSAqICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+PiArCSAqDQo+PiArCSAqIC0gaWYgZGV2aWNlIHN1cHBvcnRzIG9ubHkgYXN5 bW1ldHJpYywgdGhlbiBtYXhfbmJfcXVldWVfcGFpcg0KPj4gKwkgKiAgIGluZGljYXRlcyBtYXgg cXAgYXZhaWxhYmxlIGZvciBhc3ltbWV0cmljIG9wZXJhdGlvbnMuDQo+PiArCSAqDQo+PiArCSAq IC0gaWYgZGV2aWNlIHN1cHBvcnQgb25seSBzeW1tZXRyaWMsIHRoZW4gbWF4X25iX3F1ZXVlX3Bh aXINCj4+ICsJICogICBpbmRpY2F0ZXMgbWF4IHFwIGF2YWlsYWJsZSBmb3Igc3ltbWV0cmljIG9w ZXJhdGlvbnMuDQo+PiArCSAqDQo+PiArCSAqIC0gaWYgZGV2aWNlIHN1cHBvcnQgYm90aCBzeW1t ZXRyaWMgYW5kIGFzeW1tZXRyaWMgY3J5cHRvIG9wLA0KPj4gKwkgKiAgIHRoZW4gbWF4X25iX3F1 ZXVlX3BhaXIgaW5kaWNhdGVzIHRvdGFsIG51bWJlciBvZiBhdmFpbGFibGUNCj4+ICsJICogICBx cCBmb3IgYm90aCBvcGVyYXRpb25zLg0KPj4gKwkgKg0KPj4gKwkgKiAqKlNwZWNpYWwgbm90ZSBv biBkZXZpY2VzIHN1cHBvcnRpbmcgc3ltbSBhbmQgYXN5bW06DQo+PiArCSAqDQo+PiArCSAqIFN1 Y2ggZHVhbCBmdW5jdGlvbiBkZXZpY2VzIG1heSBtYW5hZ2UgcXAgaW4gdmFyaW91cyBwb3NzaWJs ZSB3YXlzLg0KPj4gKwkgKiBUaGV5IGNhbiBlaXRoZXI6DQo+PiArCSAqDQo+PiArCSAqIDEuIFVz ZSBhbGwgbWF4X25iX3F1ZXVlX3BhaXIgZm9yIGFueSBvcGVyYXRpb24gdHlwZS4NCj4+ICsJICog ICAgSW4gc3VjaCBjYXNlLCBhcHAgY2FuIGNvbmZpZ3VyZSBhbnkgb2YgdGhlIGF2YWlsYWJsZSBx cA0KPj4gKwkgKiAgICBmb3IgYW55IG9wZXJhaXRvbi4gVGh1cywNCj4+ICsJICogICAgZGV2X2lu Zm8gc2hvdWxkIHJldHVybiBudW0gcXVldWUgcGFpciBkaXN0cmlidXRpb24gYXMgbWVudGlvbmVk DQo+PiArCSAqICAgIGluIHJvdyAnc3ltbSthc3ltbSB3LyBhbGwgcXAnIGluIHRhYmxlIGFib3Zl DQo+PiArCSAqDQo+PiArCSAqIDIuIE9yLCB1c2UgZGVkaWNhdGVkIHNldCBvZiBxcCBmb3IgZWFj aCBvcA0KPj4gKwkgKiAgICBTdWNoIGRldmljZSBQTURzLCBjYW4gdGFrZSAyIGFwcHJvYWNoZXM6 DQo+PiArCSAqICAgIDEuIEVpdGhlciwgaXQgY2FuIHNob3cgdXAgYXMgMiBzZXBhcmF0ZSBQTURz IHdoZXJlIG9uZSBhcw0KPj4gKwkgKgkgc3ltbWV0cmljIG9ubHkgYW5kIG90aGVyIGFzeW1tZXRy aWMgb25seS4gaW4gc3VjaCBjYXNlLA0KPj4gKwkgKgkgZGV2aWNlIGluZm8gd2lsbCByZXR1cm4g bnVtIHF1ZXVlIHBhaXIgZGlzdHJpYnV0aW9uIGFzDQo+PiArCSAqCSBtZW50aW9uZWQgaW4gcm93 ICdzeW1tZXRyaWMvYXN5bW1ldHJpYyBvbmx5JyBkZXZpY2UNCj4+ICsJICoNCj4+ICsJICogICAg Mi4gT3IsIGNhbiBhcHBlYXIgYXMgb25lIFBNRCB3aXRoIG51bWJlciBvZiBxdWV1ZSBwYWlyIGRl ZGljYXRlZA0KPj4gKwkgKgkgdG8gZWFjaCBvcGVyYXRpb24gaW4gbWF4X25iX3N5bW1fcXAgYW5k IG1heF9uYl9hc3ltbV9xcA0KPj4gKwkgKg0KPj4gKwkgKi8NCj4+DQo+PiAgCXN0cnVjdCB7DQo+ PiAgCQl1bnNpZ25lZCBtYXhfbmJfc2Vzc2lvbnM7DQo+PiAtCQkvKio8IE1heGltdW0gbnVtYmVy IG9mIHNlc3Npb25zIHN1cHBvcnRlZCBieSBkZXZpY2UuICovDQo+PiArCQkvKio8IE1heGltdW0g bnVtYmVyIG9mIHNlc3Npb25zIHN1cHBvcnRlZA0KPj4gKwkJICogZm9yIHN5bW1ldHJpYyBvcGVy YXRpb25zLg0KPj4gKwkJICovDQo+PiAgCQl1bnNpZ25lZCBpbnQgbWF4X25iX3Nlc3Npb25zX3Bl cl9xcDsNCj4+IC0JCS8qKjwgTWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMgcGVyIHF1ZXVlIHBh aXIuDQo+PiArCQkvKio8IE1heGltdW0gbnVtYmVyIG9mIHN5bW1ldHJpYyBzZXNzaW9ucw0KPj4g KwkJICogcGVyIHF1ZXVlIHBhaXIuDQo+PiAgCQkgKiBEZWZhdWx0IDAgZm9yIGluZmluaXRlIHNl c3Npb25zDQo+PiAgCQkgKi8NCj4+ICsJCSB1bnNpZ25lZCBpbnQgbWF4X25iX3N5bV9xcDsNCj4+ ICsJCS8qKjwgTWF4aW11bSBudW0gb2YgcXAgZGVkaWNhdGVkIHRvIHN5bW1ldHJpYyBvcC4NCj4+ ICsJCSAqIE5BIGZvciBkZXZpY2UgdGhhdCBzdXBwb3J0IHN5bW1ldHJpYyBvbmx5Lg0KPj4gKwkJ ICogMCBtZWFucyBkZXZpY2UgY2FuIHVzZSBhbGwgbWF4X25iX3F1ZXVlX3BhaXINCj4+ICsJCSAq IGZvciBzeW1tIG9wLg0KPj4gKwkJICogUGxlYXNlIG5vdGUsIHRoaXMgdmFyaWFibGUgb25seSB0 ZWxscyBudW1iZXIgb2YgcXVldWUgcGFpcnMNCj4+ICsJCSAqIHRoYXQgY2FuIGJlIGVucXVldWVk IHdpdGggc3ltbWV0cmljIG9wcyBhbmQgZG9lc24ndCByZXZlYWwNCj4+ICsJCSAqIHNwZWNpZmlj IElEcyB1c2VkIGJ5IFBNRHMgZm9yIHRoaXMgb3BlcmF0aW9uDQo+PiArCQkgKg0KPj4gKwkJICov DQo+PiAgCX0gc3ltOw0KPj4gKw0KPj4gKwlzdHJ1Y3Qgew0KPj4gKwkJdW5zaWduZWQgaW50IG1h eF9uYl9hc3ltX3Nlc3Npb25zOw0KPj4gKwkJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBhc3ltbWV0 cmljIHNlc3Npb25zIHN1cHBvcnRlZCBieSBkZXZpY2UuDQo+PiArCQkgKiAwIGluZmluaXRlIGFz IGxvbmcgYXMgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUNCj4+ICsJCSAqLw0KPj4gKwkJdW5zaWdu ZWQgaW50IG1heF9uYl9hc3ltX3Nlc3Npb25zX3Blcl9xcDsNCj4+ICsJCS8qKjwgTWF4aW11bSBu dW1iZXIgb2YgYXN5bW1ldHJpYyBzZXNzaW9ucyBwZXIgcXVldWUgcGFpci4NCj4+ICsJCSAqIDAg bWVhbnMgaW5maW5pdGUgYXMgbG9uZyBhcyByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZQ0KPj4gKwkJ ICovDQo+PiArCQl1bnNpZ25lZCBpbnQgbWF4X25iX2FzeW1fcXA7DQo+PiArCQkvKio8IE1heGlt dW0gbnVtYmVyIG9mIHFwIGRlZGljYXRlZCBmb3IgYXN5bW0gb3BlcmF0aW9uLg0KPj4gKwkJICog MCBtZWFucyBkZXZpY2UgY2FuIHVzZSBhbGwgbWF4X25iX3F1ZXVlX3BhaXIgZm9yIGFzeW1tIG9w Lg0KPj4gKwkJICogUGxlYXNlIG5vdGUsIHRoaXMgdmFyaWFibGUgb25seSB0ZWxscyBudW1iZXIg b2YgcXVldWUgcGFpcnMNCj4+ICsJCSAqIHRoYXQgY2FuIGJlIGVucXVldWVkIHdpdGggYXN5bW1l dHJpYyBvcHMgYW5kIGRvZXNuJ3QgcmV2ZWFsDQo+PiArCQkgKiBzcGVjaWZpYyBJRHMgdXNlZCBi eSBQTURzIGZvciB0aGlzIG9wZXJhdGlvbg0KPj4gKwkJICoNCj4+ICsJCSAqLw0KPj4gKwl9IGFz eW07DQo+PiAgfTsNCj4+DQo+PiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX0RFVEFDSEVEICAoMCkN Cj4+IEBAIC01MTMsNiArNjc3LDI0IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NvbmZpZyB7DQo+ PiAgCWludCBzb2NrZXRfaWQ7CQkJLyoqPCBTb2NrZXQgdG8gYWxsb2NhdGUgcmVzb3VyY2VzIG9u ICovDQo+PiAgCXVpbnQxNl90IG5iX3F1ZXVlX3BhaXJzOw0KPj4gIAkvKio8IE51bWJlciBvZiBx dWV1ZSBwYWlycyB0byBjb25maWd1cmUgb24gZGV2aWNlICovDQo+PiArDQo+PiArCXVpbnQxNl90 IG5iX3N5bW1fcXA7DQo+PiArCS8qKjwgTnVtYmVyIG9mIHF1ZXVlIHBhaXIgdG8gYmUgdXNlZCBm b3Igc3ltbWV0cmljIG9wZXJhdGlvbnMuDQo+PiArCSAqIE9wdGlvbmFsIGlucHV0Lg0KPj4gKwkg KiBWYWxpZCBmb3IgZGV2aWNlIHN1cHBvcnRpbmcgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRy aWMuDQo+PiArCSAqIFNob3VsZCBiZSBsZXNzIHRoYW4gZXF1YWwgdG8gcnRlX2NyeXB0b2Rldl9p bmZvOm1heF9uYl9zeW1tX3FwLg0KPj4gKwkgKiBwbGVhc2Ugbm90ZSB0aGlzIG51bWJlciBvbmx5 IHRlbGxzIGhvdyBtYW55IHF1ZXVlIHBhaXIgdG8gYmUgdXNlZA0KPj4gKwkgKiBmb3Igc3ltbWV0 cmljIG9wIGFuZCBkb2VzICpub3QqIHRlbGwgc3BlY2lmaWMgSURzIHRvIGJlIHVzZWQuDQo+PiAr CSAqLw0KPj4gKw0KPj4gKwl1aW50MTZfdCBuYl9hc3ltbV9xcDsNCj4+ICsJLyoqPCBOdW1iZXIg b2YgcXVldWUgcGFpciB0byBiZSB1c2VkIGZvciBhc3ltbWV0cmljIG9wZXJhdGlvbnMuDQo+PiAr CSAqIE9wdGlvbmFsIGlucHV0Lg0KPj4gKwkgKiBWYWxpZCBmb3IgZGV2aWNlIHN1cHBvcnRpbmcg Ym90aCBhc3ltbWV0cmljIGFuZCBzeW1tZXRyaWMuDQo+PiArCSAqIFNob3VsZCBiZSBsZXNzIHRo YW4gZXF1YWwgdG8gcnRlX2NyeXB0b2Rldl9pbmZvOm1heF9uYl9hc3ltbV9xcA0KPj4gKwkgKiBQ bGVhc2Ugbm90ZSB0aGlzIG51bWJlciBvbmx5IHRlbGxzIGhvdyBtYW55IHF1ZXVlIHBhaXIgdG8g YmUNCj4+ICsJICogdXNlZCBmb3IgYXN5bW1ldHJpYyBhbmQgZG9lcyAqbm90KiBzcGVjaWZpY2Fs bHkgdGVsbCBxcCBJRA0KPj4gKwkgKi8NCj4+ICB9Ow0KPj4NCj5bRmlvbmFdIFRoZSBwYXJhbXMg ZnJvbSBjb25maWcgc3RydWN0dXJlIGFib3ZlIHNob3VsZCBiZSB1c2VkIHRvIHNldCB0aGUgdmFs dWVzIGluIHRoZSBkYXRhIHN0cnVjdHVyZQ0KPlRoaXMgY29kZSBpcyBtaXNzaW5nLg0KPg0KPj4g IC8qKg0KPj4gQEAgLTU5NSw2ICs3NzcsOSBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9jb25maWcg ew0KPj4gICAqIEByZXR1cm4NCj4+ICAgKiAgIC0gMDogU3VjY2VzcywgcXVldWUgcGFpciBjb3Jy ZWN0bHkgc2V0IHVwLg0KPj4gICAqICAgLSA8MDogUXVldWUgcGFpciBjb25maWd1cmF0aW9uIGZh aWxlZA0KPj4gKyAqDQo+PiArICogQG5vdGU6IHF1ZXVlIHBhaXIgdG8gYmUgc2V0dXAgaW5kZXBl bmRlbnQgb2Ygb3BlcmF0aW9uIHR5cGUuDQo+PiArICoNCj4+ICAgKi8NCj4+ICBleHRlcm4gaW50 DQo+PiAgcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX3NldHVwKHVpbnQ4X3QgZGV2X2lkLCB1aW50 MTZfdCBxdWV1ZV9wYWlyX2lkLA0KPj4gQEAgLTY0NCw2ICs4MjksMjYgQEAgc3RydWN0IHJ0ZV9j cnlwdG9kZXZfY29uZmlnIHsNCj4+ICBleHRlcm4gdWludDE2X3QNCj4+ICBydGVfY3J5cHRvZGV2 X3F1ZXVlX3BhaXJfY291bnQodWludDhfdCBkZXZfaWQpOw0KPj4NCj4+ICsvKioNCj4+ICsgKiBH ZXQgdGhlIG51bWJlciBvZiBzeW1tZXRyaWMgcXVldWUgcGFpcnMgb24gdGhpcyBjcnlwdG8gZGV2 aWNlDQo+PiArICoNCj4+ICsgKiBAcGFyYW0JZGV2X2lkCQlDcnlwdG8gZGV2aWNlIGlkZW50aWZp ZXIuDQo+PiArICogQHJldHVybg0KPj4gKyAqICAgLSBUaGUgbnVtYmVyIG9mIGNvbmZpZ3VyZWQg c3ltbWV0cmljIHF1ZXVlIHBhaXJzLg0KPj4gKyAqLw0KPj4gK2V4dGVybiB1aW50MTZfdA0KPj4g K3J0ZV9jcnlwdG9kZXZfc3ltX3F1ZXVlX3BhaXJfY291bnQodWludDhfdCBkZXZfaWQpOw0KPj4g Kw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEdldCB0aGUgbnVtYmVyIG9mIGFzeW1tZXRyaWMgcXVl dWUgcGFpcnMgb24gdGhpcyBjcnlwdG8gZGV2aWNlDQo+PiArICoNCj4+ICsgKiBAcGFyYW0JZGV2 X2lkCQlDcnlwdG8gZGV2aWNlIGlkZW50aWZpZXIuDQo+PiArICogQHJldHVybg0KPj4gKyAqICAg LSBUaGUgbnVtYmVyIG9mIGNvbmZpZ3VyZWQgYXN5bW1ldHJpYyBxdWV1ZSBwYWlycy4NCj4+ICsg Ki8NCj4+ICtleHRlcm4gdWludDE2X3QNCj4+ICtydGVfY3J5cHRvZGV2X2FzeW1fcXVldWVfcGFp cl9jb3VudCh1aW50OF90IGRldl9pZCk7DQo+Pg0KPj4gIC8qKg0KPj4gICAqIFJldHJpZXZlIHRo ZSBnZW5lcmFsIEkvTyBzdGF0aXN0aWNzIG9mIGEgZGV2aWNlLg0KPj4gQEAgLTc5NSw2ICsxMDAw LDEwIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2RhdGEgew0KPj4gIAkvKio8IEFycmF5IG9mIHBv aW50ZXJzIHRvIHF1ZXVlIHBhaXJzLiAqLw0KPj4gIAl1aW50MTZfdCBuYl9xdWV1ZV9wYWlyczsN Cj4+ICAJLyoqPCBOdW1iZXIgb2YgZGV2aWNlIHF1ZXVlIHBhaXJzLiAqLw0KPj4gKwl1aW50MTZf dCBuYl9zeW1fcXA7DQo+PiArCS8qKjwgTnVtYmVyIG9mIHN5bW1ldHJpYyBxdWV1ZSBwYWlycy4g Ki8NCj4+ICsJdWludDE2X3QgbmJfYXN5bV9xcDsNCj4+ICsJLyoqPCBOdW1iZXIgb2YgYXN5bW1l dHJpYyBxdWV1ZSBwYWlycy4gKi8NCj4+DQo+PiAgCXZvaWQgKmRldl9wcml2YXRlOw0KPj4gIAkv Kio8IFBNRC1zcGVjaWZpYyBwcml2YXRlIGRhdGEgKi8NCj4+IEBAIC05MDAsNiArMTEwOSwxMSBA QCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiB7DQo+PiAgCS8qKjwgUHJpdmF0ZSBz ZXNzaW9uIG1hdGVyaWFsICovDQo+PiAgfTsNCj4+DQo+PiArLyoqIENyeXB0b2RldiBhc3ltbWV0 cmljIGNyeXB0byBzZXNzaW9uICovDQo+PiArc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNz aW9uIHsNCj4+ICsJX19leHRlbnNpb25fXyB2b2lkICpzZXNzX3ByaXZhdGVfZGF0YVswXTsNCj4+ ICsJLyoqPCBQcml2YXRlIGFzeW1tZXRyaWMgc2Vzc2lvbiBtYXRlcmlhbCAqLw0KPj4gK307DQo+ Pg0KPj4gIC8qKg0KPj4gICAqIENyZWF0ZSBzeW1tZXRyaWMgY3J5cHRvIHNlc3Npb24gaGVhZGVy IChnZW5lcmljIHdpdGggbm8gcHJpdmF0ZSBkYXRhKQ0KPj4gQEAgLTkxNCw2ICsxMTI4LDE4IEBA IHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4+ICBydGVfY3J5cHRvZGV2X3N5 bV9zZXNzaW9uX2NyZWF0ZShzdHJ1Y3QgcnRlX21lbXBvb2wgKm1lbXBvb2wpOw0KPj4NCj4+ICAv KioNCj4+ICsgKiBDcmVhdGUgYXN5bW1ldHJpYyBjcnlwdG8gc2Vzc2lvbiBoZWFkZXIgKGdlbmVy aWMgd2l0aCBubyBwcml2YXRlIGRhdGEpDQo+PiArICoNCj4+ICsgKiBAcGFyYW0gICBtZW1wb29s ICAgIG1lbXBvb2wgdG8gYWxsb2NhdGUgYXN5bW1ldHJpYyBzZXNzaW9uDQo+PiArICogICAgICAg ICAgICAgICAgICAgICBvYmplY3RzIGZyb20NCj4+ICsgKiBAcmV0dXJuDQo+PiArICogIC0gT24g c3VjY2VzcyByZXR1cm4gcG9pbnRlciB0byBhc3ltLXNlc3Npb24NCj4+ICsgKiAgLSBPbiBmYWls dXJlIHJldHVybnMgTlVMTA0KPj4gKyAqLw0KPj4gK3N0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1f c2Vzc2lvbiAqDQo+PiArcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBy dGVfbWVtcG9vbCAqbWVtcG9vbCk7DQo+PiArDQo+PiArLyoqDQo+PiAgICogRnJlZXMgc3ltbWV0 cmljIGNyeXB0byBzZXNzaW9uIGhlYWRlciwgYWZ0ZXIgY2hlY2tpbmcgdGhhdCBhbGwNCj4+ICAg KiB0aGUgZGV2aWNlIHByaXZhdGUgZGF0YSBoYXMgYmVlbiBmcmVlZCwgcmV0dXJuaW5nIGl0DQo+ PiAgICogdG8gaXRzIG9yaWdpbmFsIG1lbXBvb2wuDQo+PiBAQCAtOTI5LDYgKzExNTUsMjEgQEAg c3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPj4gIHJ0ZV9jcnlwdG9kZXZfc3lt X3Nlc3Npb25fZnJlZShzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqc2Vzcyk7DQo+ Pg0KPj4gIC8qKg0KPj4gKyAqIEZyZWVzIGFzeW1tZXRyaWMgY3J5cHRvIHNlc3Npb24gaGVhZGVy LCBhZnRlciBjaGVja2luZyB0aGF0IGFsbA0KPj4gKyAqIHRoZSBkZXZpY2UgcHJpdmF0ZSBkYXRh IGhhcyBiZWVuIGZyZWVkLCByZXR1cm5pbmcgaXQNCj4+ICsgKiB0byBpdHMgb3JpZ2luYWwgbWVt cG9vbC4NCj4+ICsgKg0KPj4gKyAqIEBwYXJhbSAgIHNlc3MgICAgIFNlc3Npb24gaGVhZGVyIHRv IGJlIGZyZWVkLg0KPj4gKyAqDQo+PiArICogQHJldHVybg0KPj4gKyAqICAtIDAgaWYgc3VjY2Vz c2Z1bC4NCj4+ICsgKiAgLSAtRUlOVkFMIGlmIHNlc3Npb24gaXMgTlVMTC4NCj4+ICsgKiAgLSAt RUJVU1kgaWYgbm90IGFsbCBkZXZpY2UgcHJpdmF0ZSBkYXRhIGhhcyBiZWVuIGZyZWVkLg0KPj4g KyAqLw0KPj4gK2ludA0KPj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2ZyZWUoc3RydWN0 IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzKTsNCj4+ICsNCj4+ICsvKioNCj4+ICAg KiBGaWxsIG91dCBwcml2YXRlIGRhdGEgZm9yIHRoZSBkZXZpY2UgaWQsIGJhc2VkIG9uIGl0cyBk ZXZpY2UgdHlwZS4NCj4+ICAgKg0KPj4gICAqIEBwYXJhbSAgIGRldl9pZCAgIElEIG9mIGRldmlj ZSB0aGF0IHdlIHdhbnQgdGhlIHNlc3Npb24gdG8gYmUgdXNlZCBvbg0KPj4gQEAgLTk1MCw2ICsx MTkxLDI3IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4+ICAJCQlzdHJ1 Y3QgcnRlX21lbXBvb2wgKm1lbXBvb2wpOw0KPj4NCj4+ICAvKioNCj4+ICsgKiBJbml0aWFsaXpl IGFzeW1tZXRyaWMgc2Vzc2lvbiBvbiBhIGRldmljZSB3aXRoIHNwZWNpZmljIGFzeW1tZXRyaWMg eGZvcm0NCj4+ICsgKg0KPj4gKyAqIEBwYXJhbSAgIGRldl9pZCAgIElEIG9mIGRldmljZSB0aGF0 IHdlIHdhbnQgdGhlIHNlc3Npb24gdG8gYmUgdXNlZCBvbg0KPj4gKyAqIEBwYXJhbSAgIHNlc3Mg ICAgIFNlc3Npb24gdG8gYmUgc2V0IHVwIG9uIGEgZGV2aWNlDQo+PiArICogQHBhcmFtICAgeGZv cm1zICAgQXN5bW1ldHJpYyBjcnlwdG8gdHJhbnNmb3JtIG9wZXJhdGlvbnMgdG8gYXBwbHkgb24g Zmxvdw0KPj4gKyAqICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB3aXRoIHRoaXMgc2Vzc2lv bg0KPj4gKyAqIEBwYXJhbSAgIG1lbXBvb2wgIE1lbXBvb2wgdG8gYmUgdXNlZCBmb3IgaW50ZXJu YWwgYWxsb2NhdGlvbi4NCj4+ICsgKg0KPj4gKyAqIEByZXR1cm4NCj4+ICsgKiAgLSBPbiBzdWNj ZXNzLCB6ZXJvLg0KPj4gKyAqICAtIC1FSU5WQUwgaWYgaW5wdXQgcGFyYW1ldGVycyBhcmUgaW52 YWxpZC4NCj4+ICsgKiAgLSAtRU5PVFNVUCBpZiBjcnlwdG8gZGV2aWNlIGRvZXMgbm90IHN1cHBv cnQgdGhlIGNyeXB0byB0cmFuc2Zvcm0uDQo+PiArICogIC0gLUVOT01FTSBpZiB0aGUgcHJpdmF0 ZSBzZXNzaW9uIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQuDQo+PiArICovDQo+PiAraW50DQo+PiAr cnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25faW5pdCh1aW50OF90IGRldl9pZCwNCj4+ICsJCQlz dHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MsDQo+PiArCQkJc3RydWN0IHJ0 ZV9jcnlwdG9fYXN5bV94Zm9ybSAqeGZvcm1zLA0KPj4gKwkJCXN0cnVjdCBydGVfbWVtcG9vbCAq bWVtcG9vbCk7DQo+PiArDQo+PiArLyoqDQo+PiAgICogRnJlZXMgcHJpdmF0ZSBkYXRhIGZvciB0 aGUgZGV2aWNlIGlkLCBiYXNlZCBvbiBpdHMgZGV2aWNlIHR5cGUsDQo+PiAgICogcmV0dXJuaW5n IGl0IHRvIGl0cyBtZW1wb29sLg0KPj4gICAqDQo+PiBAQCAtOTY1LDcgKzEyMjcsMjMgQEAgc3Ry dWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPj4gIAkJCXN0cnVjdCBydGVfY3J5cHRv ZGV2X3N5bV9zZXNzaW9uICpzZXNzKTsNCj4+DQo+PiAgLyoqDQo+PiArICogRnJlZXMgcmVzb3Vy Y2VzIGhlbGQgYnkgYXN5bW1ldHJpYyBzZXNzaW9uIGR1cmluZyBydGVfY3J5cHRvZGV2X3Nlc3Np b25faW5pdA0KPj4gKyAqDQo+PiArICogQHBhcmFtICAgZGV2X2lkICAgSUQgb2YgZGV2aWNlIHRo YXQgdXNlcyB0aGUgYXN5bW1ldHJpYyBzZXNzaW9uLg0KPj4gKyAqIEBwYXJhbSAgIHNlc3MgICAg IEFzeW1tZXRyaWMgc2Vzc2lvbiBzZXR1cCBvbiBkZXZpY2UgdXNpbmcNCj4+ICsgKgkJCQkJIHJ0 ZV9jcnlwdG9kZXZfc2Vzc2lvbl9pbml0DQo+PiArICogQHJldHVybg0KPj4gKyAqICAtIDAgaWYg c3VjY2Vzc2Z1bC4NCj4+ICsgKiAgLSAtRUlOVkFMIGlmIGRldmljZSBpcyBpbnZhbGlkIG9yIHNl c3Npb24gaXMgTlVMTC4NCj4+ICsgKi8NCj4+ICtpbnQNCj4+ICtydGVfY3J5cHRvZGV2X2FzeW1f c2Vzc2lvbl9jbGVhcih1aW50OF90IGRldl9pZCwNCj4+ICsJCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9hc3ltX3Nlc3Npb24gKnNlc3MpOw0KPj4gKw0KPj4gKy8qKg0KPj4gICAqIEdldCB0aGUgc2l6 ZSBvZiB0aGUgaGVhZGVyIHNlc3Npb24sIGZvciBhbGwgcmVnaXN0ZXJlZCBkcml2ZXJzLg0KPj4g KyAqIEZvciBkZXZpY2VzIHN1cHBvcnRpbmcgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMs IGl0IHNob3VsZA0KPj4gKyAqIHJldHVybiBoZWFkZXIgc2l6ZSBpbmNsdXNpdmUgb2YgYm90aA0K PltGaW9uYV0gPyBUaGlzIEFQSSBpcyBub3QgY2FsbGVkIG9uIGEgZGV2aWNlLg0KPkFzIHRoZSBo ZHIgc2l6ZSBpcyBqdXN0IGEgbGlzdCBvZiBwb2ludGVycywgaXQncyBpbmRlcGVuZGVudCBvZiBz eW0vYXN5bQ0KPg0KPj4gICAqDQo+PiAgICogQHJldHVybg0KPj4gICAqICAgU2l6ZSBvZiB0aGUg aGVhZGVyIHNlc3Npb24uDQo+PiBAQCAtOTc1LDYgKzEyNTMsOCBAQCBzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9zeW1fc2Vzc2lvbiAqDQo+Pg0KPj4gIC8qKg0KPj4gICAqIEdldCB0aGUgc2l6ZSBvZiB0 aGUgcHJpdmF0ZSBzZXNzaW9uIGRhdGEgZm9yIGEgZGV2aWNlLg0KPj4gKyAqIGlmIGRldmljZSBz dXBwb3J0IGJvdGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljLCBpdA0KPj4gKyAqIHJldHVybiBz aXplIGluY2x1c2l2ZSBvZiBib3RoDQo+W0Zpb25hXSBBcmUgeW91IHN1Z2dlc3RpbmcgdGhlIHNh bWUgc2Vzc2lvbiBwb29sIG1pZ2h0IGJlIHVzZWQNCj5mb3IgYm90aCBzeW0gYW5kIGFzeW0gc2Vz c2lvbnM/DQo+U2VlbXMgdW5saWtlbHksIGJ1dCBpZiBhbiBhcHBsaWNhdGlvbiBjaG9zZSB0bywg aXQgc2VlbXMgYmV0dGVyDQo+IHRoYXQgaXQgd291bGQgZG8gaXQgZXhwbGljaXRseSwNCj5lLmcu IGdldCBhc3ltIGFuZCBzeW0gcHJpdmF0ZSBzaXplcywgc2FtZSBhcyBpdCBnZXRzIHNpemUgZnJv bSB0aGUgb3RoZXINCj5kcml2ZXJzIGFuZCBzaXplcyBmb3IgdGhlIG1heGltdW0uDQo+SWYgbWVh bmluZyBpcyBjaGFuZ2VkIGFzIHlvdSBzdWdnZXN0IHRoZW4gc3ltIGFwcGxpY2F0aW9ucyBhbHJl YWR5DQo+aW1wbGVtZW50ZWQgd2lsbCBsaWtlbHkgZW5kIHVwIHdpdGggcG9vbHMgc2l6ZWQgZm9y IGEgc2Vzc2lvbiBzaXplIHRoZXkgZG9u4oCZdCBuZWVkLg0KPg0KPkFzIEkgdGhpbmsgdGhlIGNv bWJpbmVkIHBvb2wgY2FzZSB1bmxpa2VseSwgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byBtZSB0aGF0 IHRoaXMNCj5mbiBzaG91bGQgaGF2ZSBjb21tZW50IGNoYW5nZWQgdG8gc2F5IGl0IHJldHVybnMg b25seSBzeW0gc2Vzc2lvbiBzaXplDQo+Zm9yIGJhY2t3YXJkcyBjYXBhYmlsaXR5IHJlYXNvbnMs IGJ1dCB3aWxsIGJlIGRlcHJlY2F0ZWQNCj5hbmQgYXBwbHMgc2hvdWxkIHVzZSBnZXRfc3ltX3Nl c3Npb25fcHJpdmF0ZV9zaXplIGluc3RlYWQuDQo+DQo+PiAgICoNCj4+ICAgKiBAcGFyYW0JZGV2 X2lkCQlUaGUgZGV2aWNlIGlkZW50aWZpZXIuDQo+PiAgICoNCj4+IEBAIC05ODYsNiArMTI2Niwz MiBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqDQo+PiAgcnRlX2NyeXB0b2Rl dl9nZXRfcHJpdmF0ZV9zZXNzaW9uX3NpemUodWludDhfdCBkZXZfaWQpOw0KPj4NCj4+ICAvKioN Cj4+ICsgKiBHZXQgdGhlIHNpemUgb2YgdGhlIHByaXZhdGUgZGF0YSBmb3Igc3ltbWV0cmljIHNl c3Npb24NCj4+ICsgKiBvbiBkZXZpY2UNCj4+ICsgKg0KPj4gKyAqIEBwYXJhbQlkZXZfaWQJCVRo ZSBkZXZpY2UgaWRlbnRpZmllci4NCj4+ICsgKg0KPj4gKyAqIEByZXR1cm4NCj4+ICsgKiAgIC0g U2l6ZSBvZiB0aGUgc3ltbWV0cmljIHNlc3Npb24gcHJpdmF0ZSBkYXRhLCBpZiBzdWNjZXNzZnVs DQo+PiArICogICAtIDAgaWYgZGV2aWNlIGlzIGludmFsaWQgb3IgZG9lcyBub3QgaGF2ZSBwcml2 YXRlIHNlc3Npb24NCj4+ICsgKi8NCj4+ICt1bnNpZ25lZCBpbnQNCj4+ICtydGVfY3J5cHRvZGV2 X2dldF9zeW1fc2Vzc2lvbl9wcml2YXRlX3NpemUodWludDhfdCBkZXZfaWQpOw0KPj4gKw0KPj4g Ky8qKg0KPj4gKyAqIEdldCB0aGUgc2l6ZSBvZiB0aGUgcHJpdmF0ZSBkYXRhIGZvciBhc3ltbWV0 cmljIHNlc3Npb24NCj4+ICsgKiBvbiBkZXZpY2UNCj4+ICsgKg0KPj4gKyAqIEBwYXJhbQlkZXZf aWQJCVRoZSBkZXZpY2UgaWRlbnRpZmllci4NCj4+ICsgKg0KPj4gKyAqIEByZXR1cm4NCj4+ICsg KiAgIC0gU2l6ZSBvZiB0aGUgYXN5bW1ldHJpYyBwcml2YXRlIGRhdGEsIGlmIHN1Y2Nlc3NmdWwN Cj4+ICsgKiAgIC0gMCBpZiBkZXZpY2UgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBoYXZlIHByaXZh dGUgc2Vzc2lvbg0KPj4gKyAqLw0KPj4gK3Vuc2lnbmVkIGludA0KPj4gK3J0ZV9jcnlwdG9kZXZf Z2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX3NpemUodWludDhfdCBkZXZfaWQpOw0KPj4gKw0KPj4g Ky8qKg0KPj4gICAqIEF0dGFjaCBxdWV1ZSBwYWlyIHdpdGggc3ltIHNlc3Npb24uDQo+PiAgICoN Cj4+ICAgKiBAcGFyYW0JZGV2X2lkCQlEZXZpY2UgdG8gd2hpY2ggdGhlIHNlc3Npb24gd2lsbCBi ZSBhdHRhY2hlZC4NCj4+IEBAIC0xMDAyLDYgKzEzMDgsMzEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfc3ltX3Nlc3Npb24gKg0KPj4gIAkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24g KnNlc3Npb24pOw0KPj4NCj4+ICAvKioNCj4+ICsgKiBBdHRhY2ggcXVldWUgcGFpciB3aXRoIGFz eW0gc2Vzc2lvbi4NCj4+ICsgKg0KPj4gKyAqIEBwYXJhbQlkZXZfaWQJCURldmljZSB0byB3aGlj aCB0aGUgc2Vzc2lvbiBpcyBhdHRhY2hlZC4NCj4+ICsgKiBAcGFyYW0JcXBfaWQJCVF1ZXVlIHBh aXIgdG8gd2hpY2ggdGhlIHNlc3Npb24gd2lsbCBiZQ0KPj4gKyAqCQkJCWF0dGFjaGVkLg0KPj4g KyAqIEBwYXJhbQlzZXNzaW9uCQlBc3ltbWV0cmljIFNlc3Npb24gcG9pbnRlciBwcmV2aW91c2x5 DQo+PiArICoJCQkJYWxsb2NhdGVkIGJ5DQo+PiArICoJCQkJKnJ0ZV9jcnlwdG9kZXZfYXN5bV9z ZXNzaW9uX2NyZWF0ZSouDQo+PiArICoNCj4+ICsgKiBAcmV0dXJuDQo+PiArICogIC0gT24gc3Vj Y2VzcywgemVyby4NCj4+ICsgKiAgLSBPbiBmYWlsdXJlLCBhIG5lZ2F0aXZlIHZhbHVlLg0KPj4g KyAqDQo+PiArICogQG5vdGUgOiBhcHAgY2FuIGRlZGljYXRlIGEgcXBfaWQgdG8gc3BlY2lmaWMg b3BlcmF0aW9uIHR5cGU6c3ltbS9hc3ltbQ0KPj4gKyAqIGJ5IGNhbGxpbmcgcnRlX2NyeXB0b2Rl dl9xdWV1ZV9wYWlyX2F0dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgYmVmb3JlDQo+PiArICogZW5x dWV1ZV9idXJzdCgpIGNhbGwuIFBNRCB3aXRoIFNZTU1FVFJJQyAmIEFTWU1NRVRSSUMgZmVhdHVy ZSBmbGFnIHNldCwNCj4+ICsgKiBjYW4gaW50ZXJuYWxseSBiaW5kIHRoZSBsb2dpY2FsIHFwX2lk IHRvIGFjdHVhbCBwaHlzaWNhbCBxcF9pZCBoZXJlIGFuZA0KPj4gKyAqIGRlZGljYXRlIHNwZWNp ZmljIHFwX2lkIHRvIHBlcmZvcm0gc3BlY2lmaWMgb3BfdHlwZShzeW1tZXRyaWMgb3INCj4+ICsg KiBhc3ltbWV0cmljKS4NCj4+ICsgKi8NCj4+ICtpbnQNCj4+ICtydGVfY3J5cHRvZGV2X3F1ZXVl X3BhaXJfYXR0YWNoX2FzeW1fc2Vzc2lvbih1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQs DQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3Npb24pOw0KPj4g Kw0KPj4gKy8qKg0KPj4gICAqIERldGFjaCBxdWV1ZSBwYWlyIHdpdGggc3ltIHNlc3Npb24uDQo+ PiAgICoNCj4+ICAgKiBAcGFyYW0JZGV2X2lkCQlEZXZpY2UgdG8gd2hpY2ggdGhlIHNlc3Npb24g aXMgYXR0YWNoZWQuDQo+PiBAQCAtMTAxOCw2ICsxMzQ5LDIzIEBAIHN0cnVjdCBydGVfY3J5cHRv ZGV2X3N5bV9zZXNzaW9uICoNCj4+ICAJCXN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9u ICpzZXNzaW9uKTsNCj4+DQo+PiAgLyoqDQo+PiArICogRGV0YWNoIHF1ZXVlIHBhaXIgZnJvbSBh c3ltIHNlc3Npb24uDQo+PiArICoNCj4+ICsgKiBAcGFyYW0JZGV2X2lkCQlEZXZpY2UgdG8gd2hp Y2ggdGhlIHNlc3Npb24gaXMgYXR0YWNoZWQuDQo+PiArICogQHBhcmFtCXFwX2lkCQlRdWV1ZSBw YWlyIHRvIHdoaWNoIHRoZSBzZXNzaW9uIGlzIGF0dGFjaGVkLg0KPj4gKyAqIEBwYXJhbQlzZXNz aW9uCQlBc3ltbWV0cmljIFNlc3Npb24gcG9pbnRlciBwcmV2aW91c2x5IGF0dGFjaGVkDQo+PiAr ICoJCQkJYnkgY2FsbGluZw0KPj4gKyAqCQkJCSpydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJfYXR0 YWNoX2FzeW1fc2Vzc2lvbiouDQo+PiArICoNCj4+ICsgKiBAcmV0dXJuDQo+PiArICogIC0gT24g c3VjY2VzcywgemVyby4NCj4+ICsgKiAgLSBPbiBmYWlsdXJlLCBhIG5lZ2F0aXZlIHZhbHVlLg0K Pj4gKyAqLw0KPj4gK2ludA0KPj4gK3J0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9kZXRhY2hfYXN5 bV9zZXNzaW9uKHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZfdCBxcF9pZCwNCj4+ICsJCXN0cnVjdCBy dGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2Vzc2lvbik7DQo+PiArDQo+PiArLyoqDQo+PiAg ICogUHJvdmlkZSBkcml2ZXIgaWRlbnRpZmllci4NCj4+ICAgKg0KPj4gICAqIEBwYXJhbSBuYW1l DQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQu YyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1kLmMNCj4+IGluZGV4IGYy YWFjMjQuLjQ0MzlhOGUgMTAwNjQ0DQo+PiAtLS0gYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVf Y3J5cHRvZGV2X3BtZC5jDQo+PiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRv ZGV2X3BtZC5jDQo+PiBAQCAtNjYsNiArNjYsMjAgQEANCj4+ICAJCQlnb3RvIGZyZWVfa3ZsaXN0 Ow0KPj4NCj4+ICAJCXJldCA9IHJ0ZV9rdmFyZ3NfcHJvY2Vzcyhrdmxpc3QsDQo+PiArCQkJCVJU RV9DUllQVE9ERVZfUE1EX01BWF9OQl9BU1lNX1FQX0FSRywNCj4+ICsJCQkJJnJ0ZV9jcnlwdG9k ZXZfcG1kX3BhcnNlX3VpbnRfYXJnLA0KPj4gKwkJCQkmcGFyYW1zLT5tYXhfbmJfYXN5bV9xcCk7 DQo+PiArCQlpZiAocmV0IDwgMCkNCj4+ICsJCQlnb3RvIGZyZWVfa3ZsaXN0Ow0KPj4gKw0KPj4g KwkJcmV0ID0gcnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwNCj4+ICsJCQkJUlRFX0NSWVBUT0RF Vl9QTURfTUFYX05CX1NZTV9RUF9BUkcsDQo+PiArCQkJCSZydGVfY3J5cHRvZGV2X3BtZF9wYXJz ZV91aW50X2FyZywNCj4+ICsJCQkJJnBhcmFtcy0+bWF4X25iX3N5bV9xcCk7DQo+PiArCQlpZiAo cmV0IDwgMCkNCj4+ICsJCQlnb3RvIGZyZWVfa3ZsaXN0Ow0KPj4gKw0KPltGaW9uYV0gIm1heF9u Yl9xdWV1ZV9wYWlyIiBpcyBwYXNzZWQgaW4gdG8gYXJncyBhbmQgcGFyc2VkLiBTdG9yZWQgaW4g aW5pdF9wYXJhbXMsDQo+cGFzc2VkIHRvIGRldmljZSBjcmVhdGlvbi4gQW5kIHRoZW4gaWdub3Jl ZCwgbm90IHVzZWQgYXQgYWxsLiBTbyBubyBuZWVkIHRvIGFkZCBuZXcNCj5tYXhfbmJfYXN5bV9x cCBhbmQgbWF4X25iX3N5bV9xcCB0byBlaXRoZXIgYXJncyBvciBpbml0X3BhcmFtcy4gVGhleSdy ZSBub3QNCj51c2VkIGVpdGhlciBpbiB0aGlzIFJGQy4NCj5XZSBzaG91bGQgZGVwcmVjYXRlIHRo ZSBjdXJyZW50IHBhcmFtIGZyb20gYXJncyBhbmQgaW5pdF9wYXJhbXMuDQo+DQo+UE1EcyBoYXJk Y29kZSB0aGUgdmFsdWUgdGhleSByZXR1cm4gaW4gcnRlX2NyeXB0b2Rldl9pbmZvLg0KPj4gKwkJ cmV0ID0gcnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwNCj4+ICAJCQkJUlRFX0NSWVBUT0RFVl9Q TURfTUFYX05CX1NFU1NfQVJHLA0KPj4gIAkJCQkmcnRlX2NyeXB0b2Rldl9wbWRfcGFyc2VfdWlu dF9hcmcsDQo+PiAgCQkJCSZwYXJhbXMtPm1heF9uYl9zZXNzaW9ucyk7DQo+PiBAQCAtMTA5LDkg KzEyMywxMiBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqDQo+PiAgCQkJZGV2aWNlLT5kcml2ZXIt Pm5hbWUsIG5hbWUpOw0KPj4NCj4+ICAJQ0RFVl9MT0dfSU5GTygiWyVzXSAtIEluaXRpYWxpc2F0 aW9uIHBhcmFtZXRlcnMgLSBuYW1lOiAlcywiDQo+PiAtCQkJInNvY2tldCBpZDogJWQsIG1heCBx dWV1ZSBwYWlyczogJXUsIG1heCBzZXNzaW9uczogJXUiLA0KPj4gKwkJCSJzb2NrZXQgaWQ6ICVk LCBtYXggcXVldWUgcGFpcnM6ICV1LCAiDQo+PiArCQkJIm1heCBzeW0gcXVldWUgcGFpZDogJXUs IG1heCBhc3ltIHF1ZXVlIHBhaXIgJXUsICINCj4+ICsJCQkibWF4IHNlc3Npb25zOiAldSIsDQo+ PiAgCQkJZGV2aWNlLT5kcml2ZXItPm5hbWUsIG5hbWUsDQo+PiAgCQkJcGFyYW1zLT5zb2NrZXRf aWQsIHBhcmFtcy0+bWF4X25iX3F1ZXVlX3BhaXJzLA0KPj4gKwkJCXBhcmFtcy0+bWF4X25iX2Fz eW1fcXAsIHBhcmFtcy0+bWF4X25iX3N5bV9xcCwNCj4+ICAJCQlwYXJhbXMtPm1heF9uYl9zZXNz aW9ucyk7DQo+Pg0KPj4gIAkvKiBhbGxvY2F0ZSBkZXZpY2Ugc3RydWN0dXJlICovDQo+PiBkaWZm IC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQuaCBiL2xpYi9s aWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1kLmgNCj4+IGluZGV4IDA4OTg0OGUuLjI3 MmI0ODkgMTAwNjQ0DQo+PiAtLS0gYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2 X3BtZC5oDQo+PiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5o DQo+PiBAQCAtNjAsMTggKzYwLDI1IEBADQo+Pg0KPj4gICNkZWZpbmUgUlRFX0NSWVBUT0RFVl9Q TURfREVGQVVMVF9NQVhfTkJfUVVFVUVfUEFJUlMJOA0KPj4gICNkZWZpbmUgUlRFX0NSWVBUT0RF Vl9QTURfREVGQVVMVF9NQVhfTkJfU0VTU0lPTlMJMjA0OA0KPj4gKy8qIEFsbG93IGFsbCBxcCB0 byBiZSB1c2VkIGZvciBzeW0gKi8NCj4+ICsjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX0RFRkFV TFRfTUFYX05CX1NZTV9RUAkJMA0KPj4gKy8qIEFsbG93IGFsbCBxcCB0byBiZSB1c2VkIGZvciBh c3ltICovDQo+PiArI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9ERUZBVUxUX01BWF9OQl9BU1lN X1FQCTANCj4+DQo+PiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9OQU1FX0FSRwkJCSgibmFt ZSIpDQo+PiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfUVBfQVJHCQkJKCJtYXhf bmJfcXVldWVfcGFpcnMiKQ0KPj4gICNkZWZpbmUgUlRFX0NSWVBUT0RFVl9QTURfTUFYX05CX1NF U1NfQVJHCQkoIm1heF9uYl9zZXNzaW9ucyIpDQo+PiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BN RF9TT0NLRVRfSURfQVJHCQkJKCJzb2NrZXRfaWQiKQ0KPj4gLQ0KPj4gKyNkZWZpbmUgUlRFX0NS WVBUT0RFVl9QTURfTUFYX05CX0FTWU1fUVBfQVJHCQkoIm1heF9uYl9hc3ltX3FwIikNCj4+ICsj ZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TWU1fUVBfQVJHCQkoIm1heF9uYl9zeW1f cXAiKQ0KPj4NCj4+ICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNyeXB0b2Rldl9wbWRfdmFs aWRfcGFyYW1zW10gPSB7DQo+PiAgCVJURV9DUllQVE9ERVZfUE1EX05BTUVfQVJHLA0KPj4gIAlS VEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfUVBfQVJHLA0KPj4gIAlSVEVfQ1JZUFRPREVWX1BNRF9N QVhfTkJfU0VTU19BUkcsDQo+PiAtCVJURV9DUllQVE9ERVZfUE1EX1NPQ0tFVF9JRF9BUkcNCj4+ ICsJUlRFX0NSWVBUT0RFVl9QTURfU09DS0VUX0lEX0FSRywNCj4+ICsJUlRFX0NSWVBUT0RFVl9Q TURfTUFYX05CX0FTWU1fUVBfQVJHLA0KPj4gKwlSVEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfU1lN X1FQX0FSRw0KPj4gIH07DQo+Pg0KPj4gIC8qKg0KPj4gQEAgLTg0LDYgKzkxLDEwIEBAIHN0cnVj dCBydGVfY3J5cHRvZGV2X3BtZF9pbml0X3BhcmFtcyB7DQo+PiAgCWludCBzb2NrZXRfaWQ7DQo+ PiAgCXVuc2lnbmVkIGludCBtYXhfbmJfcXVldWVfcGFpcnM7DQo+PiAgCXVuc2lnbmVkIGludCBt YXhfbmJfc2Vzc2lvbnM7DQo+PiArCXVuc2lnbmVkIGludCBtYXhfbmJfYXN5bV9xcDsNCj4+ICsJ LyoqPCBtYXhpbXVtIG51bWJlciBvZiBxcCB0byBiZSB1c2VkIGZvciBhc3ltbWV0cmljIG9wcyAq Lw0KPj4gKwl1bnNpZ25lZCBpbnQgbWF4X25iX3N5bV9xcDsNCj4+ICsJLyoqPCBtYXhpbXVtIG51 bWJlciBvZiBxcCB0byBiZSB1c2VkIGZvciBzeW1tZXRyaWMgb3BzICovDQo+PiAgfTsNCj4+DQo+ PiAgLyoqIEdsb2JhbCBzdHJ1Y3R1cmUgdXNlZCBmb3IgbWFpbnRhaW5pbmcgc3RhdGUgb2YgYWxs b2NhdGVkIGNyeXB0byBkZXZpY2VzICovDQo+PiBAQCAtMjc1LDcgKzI4NiwyOSBAQCB0eXBlZGVm IGludCAoKmNyeXB0b2Rldl9xdWV1ZV9wYWlyX3JlbGVhc2VfdCkoc3RydWN0IHJ0ZV9jcnlwdG9k ZXYgKmRldiwNCj4+ICB0eXBlZGVmIHVpbnQzMl90ICgqY3J5cHRvZGV2X3F1ZXVlX3BhaXJfY291 bnRfdCkoc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldik7DQo+Pg0KPj4gIC8qKg0KPj4gLSAqIENy ZWF0ZSBhIHNlc3Npb24gbWVtcG9vbCB0byBhbGxvY2F0ZSBzZXNzaW9ucyBmcm9tDQo+PiArICog R2V0IG51bWJlciBvZiBhdmFpbGFibGUgc3ltbWV0cmljIHF1ZXVlIHBhaXJzIG9mIGEgZGV2aWNl Lg0KPj4gKyAqDQo+PiArICogQHBhcmFtCWRldglDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4+ICsg Kg0KPj4gKyAqIEByZXR1cm4NCj4+ICsgKiAtIFJldHVybnMgbnVtYmVyIG9mIHN5bW1ldHJpYyBx dWV1ZSBwYWlycw0KPj4gKyAqLw0KPj4gK3R5cGVkZWYgdWludDMyX3QgKCpjcnlwdG9kZXZfc3lt X3F1ZXVlX3BhaXJfY291bnRfdCkoDQo+PiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldik7 DQo+PiArDQo+PiArLyoqDQo+PiArICogR2V0IG51bWJlciBvZiBhdmFpbGFibGUgYXN5bW1ldHJp YyBxdWV1ZSBwYWlycyBvZiBhIGRldmljZS4NCj4+ICsgKg0KPj4gKyAqIEBwYXJhbQlkZXYJQ3J5 cHRvIGRldmljZSBwb2ludGVyDQo+PiArICoNCj4+ICsgKiBAcmV0dXJuDQo+PiArICogLSBSZXR1 cm5zIG51bWJlciBvZiBzeW1tZXRyaWMgcXVldWUgcGFpcnMNCj4+ICsgKi8NCj4+ICt0eXBlZGVm IHVpbnQzMl90ICgqY3J5cHRvZGV2X2FzeW1fcXVldWVfcGFpcl9jb3VudF90KSgNCj4+ICsJCQlz dHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2KTsNCj4+ICsNCj5bRmlvbmFdIElzIHNvbWV0aGluZyBj YWxsaW5nIGVpdGhlciBvZiBhYm92ZSBmbnM/IElmIG5vdCBiZXR0ZXIgdG8gcmVtb3ZlIHRoZSBh c3ltIG9uZS4NCj5UaGUgc3ltIG9uZSBzaG91bGQgYmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCBp biBhIHNlcGFyYXRlIHBhdGNoLg0KPg0KPj4gKy8qKg0KPj4gKyAqIENyZWF0ZSBhIHN5bW1ldHJp YyBzZXNzaW9uIG1lbXBvb2wgdG8gYWxsb2NhdGUgc2Vzc2lvbnMgZnJvbQ0KPj4gICAqDQo+PiAg ICogQHBhcmFtCWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVyDQo+PiAgICogQHBhcmFtCW5iX29i anMJCW51bWJlciBvZiBzZXNzaW9ucyBvYmplY3RzIGluIG1lbXBvb2wNCj4+IEBAIC0yOTAsNiAr MzIzLDIxIEBAIHR5cGVkZWYgaW50ICgqY3J5cHRvZGV2X3N5bV9jcmVhdGVfc2Vzc2lvbl9wb29s X3QpKA0KPj4gIAkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwgdW5zaWduZWQgbmJfb2JqcywN Cj4+ICAJCXVuc2lnbmVkIG9ial9jYWNoZV9zaXplLCBpbnQgc29ja2V0X2lkKTsNCj4+DQo+PiAr LyoqDQo+PiArICogQ3JlYXRlIGEgYXN5bW1ldHJpYyBzZXNzaW9uIG1lbXBvb2wgdG8gYWxsb2Nh dGUgc2Vzc2lvbnMgZnJvbQ0KPj4gKyAqDQo+PiArICogQHBhcmFtCWRldgkJQ3J5cHRvIGRldmlj ZSBwb2ludGVyDQo+PiArICogQHBhcmFtCW5iX29ianMJCU51bWJlciBvZiBhc3ltbWV0cmljIHNl c3Npb25zIG9iamVjdHMgaW4gbWVtcG9vbA0KPj4gKyAqIEBwYXJhbQlvYmpfY2FjaGUJbC1jb3Jl IG9iamVjdCBjYWNoZSBzaXplLCBzZWUgKnJ0ZV9yaW5nX2NyZWF0ZSoNCj4+ICsgKiBAcGFyYW0J c29ja2V0X2lkCVNvY2tldCBJZCB0byBhbGxvY2F0ZSAgbWVtcG9vbCBvbi4NCj4+ICsgKg0KPj4g KyAqIEByZXR1cm4NCj4+ICsgKiAtIE9uIHN1Y2Nlc3MgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBy dGVfbWVtcG9vbA0KPj4gKyAqIC0gT24gZmFpbHVyZSByZXR1cm5zIGEgTlVMTCBwb2ludGVyDQo+ PiArICovDQo+PiArdHlwZWRlZiBpbnQgKCpjcnlwdG9kZXZfYXN5bV9jcmVhdGVfc2Vzc2lvbl9w b29sX3QpKA0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwgdW5zaWduZWQgbmJfb2Jq cywNCj4+ICsJCXVuc2lnbmVkIG9ial9jYWNoZV9zaXplLCBpbnQgc29ja2V0X2lkKTsNCj4+DQo+ W0Zpb25hXSBzZXNzaW9uIHBvb2xzIGFyZSBub3QgY3JlYXRlZCBub3cgcGVyIGRldmljZSBzbyB0 aGlzIGlzIG5ldmVyIGNhbGxlZCBmb3Igc3ltIGFuZA0KPnNob3VsZCBiZSBkZXByZWNhdGVkLiBT byBubyBuZWVkIHRvIGFkZCBmb3IgYXN5bQ0KPg0KPj4gIC8qKg0KPj4gICAqIEdldCB0aGUgc2l6 ZSBvZiBhIGNyeXB0b2RldiBzZXNzaW9uDQo+PiBAQCAtMzAyLDYgKzM1MCwxNyBAQCB0eXBlZGVm IGludCAoKmNyeXB0b2Rldl9zeW1fY3JlYXRlX3Nlc3Npb25fcG9vbF90KSgNCj4+ICAgKi8NCj4+ ICB0eXBlZGVmIHVuc2lnbmVkICgqY3J5cHRvZGV2X3N5bV9nZXRfc2Vzc2lvbl9wcml2YXRlX3Np emVfdCkoDQo+PiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2KTsNCj4+ICsvKioNCj4+ICsg KiBHZXQgdGhlIHNpemUgb2YgYSBhc3ltbWV0cmljIGNyeXB0b2RldiBzZXNzaW9uDQo+PiArICoN Cj4+ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4+ICsgKg0KPj4gKyAq IEByZXR1cm4NCj4+ICsgKiAgLSBPbiBzdWNjZXNzIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIHNl c3Npb24gc3RydWN0dXJlIGZvciBkZXZpY2UNCj4+ICsgKiAgLSBPbiBmYWlsdXJlIHJldHVybnMg MA0KPj4gKyAqLw0KPj4gK3R5cGVkZWYgdW5zaWduZWQgKCpjcnlwdG9kZXZfYXN5bV9nZXRfc2Vz c2lvbl9wcml2YXRlX3NpemVfdCkoDQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2KTsN Cj4+DQo+PiAgLyoqDQo+PiAgICogQ29uZmlndXJlIGEgQ3J5cHRvIHNlc3Npb24gb24gYSBkZXZp Y2UuDQo+PiBAQCAtMzIxLDcgKzM4MCwyNCBAQCB0eXBlZGVmIGludCAoKmNyeXB0b2Rldl9zeW1f Y29uZmlndXJlX3Nlc3Npb25fdCkoc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwNCj4+ICAJCXN0 cnVjdCBydGVfY3J5cHRvX3N5bV94Zm9ybSAqeGZvcm0sDQo+PiAgCQlzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9zeW1fc2Vzc2lvbiAqc2Vzc2lvbiwNCj4+ICAJCXN0cnVjdCBydGVfbWVtcG9vbCAqbXAp Ow0KPj4gLQ0KPj4gKy8qKg0KPj4gKyAqIENvbmZpZ3VyZSBhIENyeXB0byBhc3ltbWV0cmljIHNl c3Npb24gb24gYSBkZXZpY2UuDQo+PiArICoNCj4+ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2 aWNlIHBvaW50ZXINCj4+ICsgKiBAcGFyYW0JeGZvcm0JCVNpbmdsZSBvciBjaGFpbiBvZiBjcnlw dG8geGZvcm1zDQo+PiArICogQHBhcmFtCXByaXZfc2VzcwlQb2ludGVyIHRvIGNyeXB0b2Rldidz IHByaXZhdGUgc2Vzc2lvbiBzdHJ1Y3R1cmUNCj4+ICsgKiBAcGFyYW0JbXAJCU1lbXBvb2wgd2hl cmUgdGhlIHByaXZhdGUgc2Vzc2lvbiBpcyBhbGxvY2F0ZWQNCj4+ICsgKg0KPj4gKyAqIEByZXR1 cm4NCj4+ICsgKiAgLSBSZXR1cm5zIDAgaWYgcHJpdmF0ZSBzZXNzaW9uIHN0cnVjdHVyZSBoYXZl IGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuDQo+PiArICogIC0gUmV0dXJucyAtRUlOVkFMIGlm IGlucHV0IHBhcmFtZXRlcnMgYXJlIGludmFsaWQuDQo+PiArICogIC0gUmV0dXJucyAtRU5PVFNV UCBpZiBjcnlwdG8gZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyeXB0byB0cmFuc2Zvcm0u DQo+PiArICogIC0gUmV0dXJucyAtRU5PTUVNIGlmIHRoZSBwcml2YXRlIHNlc3Npb24gY291bGQg bm90IGJlIGFsbG9jYXRlZC4NCj4+ICsgKi8NCj4+ICt0eXBlZGVmIGludCAoKmNyeXB0b2Rldl9h c3ltX2NvbmZpZ3VyZV9zZXNzaW9uX3QpKHN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYsDQo+PiAr CQlzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtICp4Zm9ybSwNCj4+ICsJCXN0cnVjdCBydGVf Y3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2Vzc2lvbiwNCj4+ICsJCXN0cnVjdCBydGVfbWVtcG9v bCAqbXApOw0KPj4gIC8qKg0KPj4gICAqIEZyZWUgZHJpdmVyIHByaXZhdGUgc2Vzc2lvbiBkYXRh Lg0KPj4gICAqDQo+PiBAQCAtMzMyLDYgKzQwOCwxNSBAQCB0eXBlZGVmIHZvaWQgKCpjcnlwdG9k ZXZfc3ltX2ZyZWVfc2Vzc2lvbl90KShzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KPj4gIAkJ c3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKnNlc3MpOw0KPj4NCj4+ICAvKioNCj4+ ICsgKiBGcmVlIGFzeW1tZXRyaWMgc2Vzc2lvbiBwcml2YXRlIGRhdGEuDQo+PiArICoNCj4+ICsg KiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4+ICsgKiBAcGFyYW0Jc2VzcwkJ Q3J5cHRvZGV2IHNlc3Npb24gc3RydWN0dXJlDQo+PiArICovDQo+PiArdHlwZWRlZiB2b2lkICgq Y3J5cHRvZGV2X2FzeW1fZnJlZV9zZXNzaW9uX3QpKHN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYs DQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MpOw0KPj4gKw0K Pj4gKy8qKg0KPj4gICAqIE9wdGlvbmFsIEFQSSBmb3IgZHJpdmVycyB0byBhdHRhY2ggc2Vzc2lv bnMgd2l0aCBxdWV1ZSBwYWlyLg0KPj4gICAqIEBwYXJhbQlkZXYJCUNyeXB0byBkZXZpY2UgcG9p bnRlcg0KPj4gICAqIEBwYXJhbQlxcF9pZAkJcXVldWUgcGFpciBpZCBmb3IgYXR0YWNoaW5nIHNl c3Npb24NCj4+IEBAIC0zNDMsNiArNDI4LDE4IEBAIHR5cGVkZWYgaW50ICgqY3J5cHRvZGV2X3N5 bV9xdWV1ZV9wYWlyX2F0dGFjaF9zZXNzaW9uX3QpKA0KPj4gIAkJICBzdHJ1Y3QgcnRlX2NyeXB0 b2RldiAqZGV2LA0KPj4gIAkJICB1aW50MTZfdCBxcF9pZCwNCj4+ICAJCSAgdm9pZCAqc2Vzc2lv bl9wcml2YXRlKTsNCj4+ICsvKioNCj4+ICsgKiBPcHRpb25hbCBBUEkgZm9yIGRyaXZlcnMgdG8g YXR0YWNoIGFzeW1tZXRyaWMgc2Vzc2lvbiB3aXRoIHF1ZXVlIHBhaXIuDQo+PiArICogQHBhcmFt CWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVyDQo+PiArICogQHBhcmFtCXFwX2lkCQlRdWV1ZSBw YWlyIGlkIGZvciBhdHRhY2hpbmcgc2Vzc2lvbg0KPj4gKyAqIEBwYXJhbQlwcml2X3Nlc3MgICAg ICAgUG9pbnRlciB0byBjcnlwdG9kZXYncyBwcml2YXRlIHNlc3Npb24gc3RydWN0dXJlDQo+PiAr ICogQHJldHVybg0KPj4gKyAqICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MNCj4+ICsgKi8NCj4+ICt0 eXBlZGVmIGludCAoKmNyeXB0b2Rldl9hc3ltX3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCko DQo+PiArCQkgIHN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYsDQo+PiArCQkgIHVpbnQxNl90IHFw X2lkLA0KPj4gKwkJICB2b2lkICpzZXNzaW9uX3ByaXZhdGUpOw0KPj4NCj4+ICAvKioNCj4+ICAg KiBPcHRpb25hbCBBUEkgZm9yIGRyaXZlcnMgdG8gZGV0YWNoIHNlc3Npb25zIGZyb20gcXVldWUg cGFpci4NCj4+IEBAIC0zNTcsNiArNDU0LDE5IEBAIHR5cGVkZWYgaW50ICgqY3J5cHRvZGV2X3N5 bV9xdWV1ZV9wYWlyX2RldGFjaF9zZXNzaW9uX3QpKA0KPj4gIAkJICB1aW50MTZfdCBxcF9pZCwN Cj4+ICAJCSAgdm9pZCAqc2Vzc2lvbl9wcml2YXRlKTsNCj4+DQo+PiArLyoqDQo+PiArICogT3B0 aW9uYWwgQVBJIGZvciBkcml2ZXJzIHRvIGRldGFjaCBhc3ltbWV0cmljIHNlc3Npb24gZnJvbSBx dWV1ZSBwYWlyLg0KPj4gKyAqIEBwYXJhbQlkZXYJCUNyeXB0byBkZXZpY2UgcG9pbnRlcg0KPj4g KyAqIEBwYXJhbQlxcF9pZAkJcXVldWUgcGFpciBpZCBmb3IgZGV0YWNoaW5nIHNlc3Npb24NCj4+ ICsgKiBAcGFyYW0JcHJpdl9zZXNzICAgICAgIFBvaW50ZXIgdG8gY3J5cHRvZGV2J3MgcHJpdmF0 ZSBzZXNzaW9uIHN0cnVjdHVyZQ0KPj4gKyAqIEByZXR1cm4NCj4+ICsgKiAgLSBSZXR1cm4gMCBv biBzdWNjZXNzDQo+PiArICovDQo+PiArdHlwZWRlZiBpbnQgKCpjcnlwdG9kZXZfYXN5bV9xdWV1 ZV9wYWlyX2RldGFjaF9zZXNzaW9uX3QpKA0KPj4gKwkJICBzdHJ1Y3QgcnRlX2NyeXB0b2RldiAq ZGV2LA0KPj4gKwkJICB1aW50MTZfdCBxcF9pZCwNCj4+ICsJCSAgdm9pZCAqc2Vzc2lvbl9wcml2 YXRlKTsNCj4+ICsNCj4+ICAvKiogQ3J5cHRvIGRldmljZSBvcGVyYXRpb25zIGZ1bmN0aW9uIHBv aW50ZXIgdGFibGUgKi8NCj4+ICBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9vcHMgew0KPj4gIAljcnlw dG9kZXZfY29uZmlndXJlX3QgZGV2X2NvbmZpZ3VyZTsJLyoqPCBDb25maWd1cmUgZGV2aWNlLiAq Lw0KPj4gQEAgLTM4MCwxNyArNDkwLDMyIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X29wcyB7DQo+ PiAgCWNyeXB0b2Rldl9xdWV1ZV9wYWlyX3N0b3BfdCBxdWV1ZV9wYWlyX3N0b3A7DQo+PiAgCS8q KjwgU3RvcCBhIHF1ZXVlIHBhaXIuICovDQo+PiAgCWNyeXB0b2Rldl9xdWV1ZV9wYWlyX2NvdW50 X3QgcXVldWVfcGFpcl9jb3VudDsNCj4+IC0JLyoqPCBHZXQgY291bnQgb2YgdGhlIHF1ZXVlIHBh aXJzLiAqLw0KPj4gLQ0KPj4gKwkvKio8IEdldCB0b3RhbCBjb3VudCBvZiB0aGUgcXVldWUgcGFp cnMoc3ltbWV0cmljK2FzeW1tZXRyaWMpLiAqLw0KPj4gKwljcnlwdG9kZXZfc3ltX3F1ZXVlX3Bh aXJfY291bnRfdCBzeW1fcXVldWVfcGFpcl9jb3VudDsNCj4+ICsJLyoqPCBHZXQgY291bnQgb2Yg dGhlIHN5bW1ldHJpYyBxdWV1ZSBwYWlycy4gKi8NCj4+ICsJY3J5cHRvZGV2X2FzeW1fcXVldWVf cGFpcl9jb3VudF90IGFzeW1fcXVldWVfcGFpcl9jb3VudDsNCj4+ICsJLyoqPCBHZXQgY291bnQg b2YgdGhlIGFzeW1tZXRyaWMgcXVldWUgcGFpcnMuICovDQo+PiAgCWNyeXB0b2Rldl9zeW1fZ2V0 X3Nlc3Npb25fcHJpdmF0ZV9zaXplX3Qgc2Vzc2lvbl9nZXRfc2l6ZTsNCj4+IC0JLyoqPCBSZXR1 cm4gcHJpdmF0ZSBzZXNzaW9uLiAqLw0KPj4gKwkvKio8IFJldHVybiBwcml2YXRlIHNpemUgZm9y IGEgc2Vzc2lvbiAqLw0KPj4gKwljcnlwdG9kZXZfc3ltX2dldF9zZXNzaW9uX3ByaXZhdGVfc2l6 ZV90IHN5bV9zZXNzaW9uX2dldF9zaXplOw0KPj4gKwkvKio8IFJldHVybiBwcml2YXRlIHNpemUg Zm9yIHN5bW1ldHJpYyBjcnlwdG8uICovDQo+PiArCWNyeXB0b2Rldl9zeW1fZ2V0X3Nlc3Npb25f cHJpdmF0ZV9zaXplX3QgYXN5bV9zZXNzaW9uX2dldF9zaXplOw0KPj4gKwkvKio8IFJldHVybiBw cml2YXRlIHNpemUgZm9yIGFzeW1tZXRyaWMgY3J5cHRvLiAqLw0KPj4gIAljcnlwdG9kZXZfc3lt X2NvbmZpZ3VyZV9zZXNzaW9uX3Qgc2Vzc2lvbl9jb25maWd1cmU7DQo+PiAgCS8qKjwgQ29uZmln dXJlIGEgQ3J5cHRvIHNlc3Npb24uICovDQo+W0Zpb25hXSBUaGlzIHNob3VsZCByZWFsbHkgYmUg cmVuYW1lZCBzeW1fc2Vzc2lvbl9jb25maWd1cmUsIHNhbWUgZm9yIHNlc3Npb25fY2xlYXIsDQo+ cXBfYXR0YWNoX3Nlc3Npb24gYW5kIHFwX2RldGFjaF9zZXNzaW9uDQo+DQo+PiArCWNyeXB0b2Rl dl9hc3ltX2NvbmZpZ3VyZV9zZXNzaW9uX3QgYXN5bV9zZXNzaW9uX2NvbmZpZ3VyZTsNCj4+ICsJ LyoqPCBDb25maWd1cmUgYXN5bW1ldHJpYyBDcnlwdG8gc2Vzc2lvbi4gKi8NCj4+ICAJY3J5cHRv ZGV2X3N5bV9mcmVlX3Nlc3Npb25fdCBzZXNzaW9uX2NsZWFyOw0KPj4gIAkvKio8IENsZWFyIGEg Q3J5cHRvIHNlc3Npb25zIHByaXZhdGUgZGF0YS4gKi8NCj4+ICsJY3J5cHRvZGV2X2FzeW1fZnJl ZV9zZXNzaW9uX3QgYXN5bV9zZXNzaW9uX2NsZWFyOw0KPj4gKwkvKio8IENsZWFyIGEgQ3J5cHRv IHNlc3Npb25zIHByaXZhdGUgZGF0YS4gKi8NCj4+ICAJY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWly X2F0dGFjaF9zZXNzaW9uX3QgcXBfYXR0YWNoX3Nlc3Npb247DQo+PiAgCS8qKjwgQXR0YWNoIHNl c3Npb24gdG8gcXVldWUgcGFpci4gKi8NCj4+IC0JY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2Rl dGFjaF9zZXNzaW9uX3QgcXBfZGV0YWNoX3Nlc3Npb247DQo+PiArCWNyeXB0b2Rldl9hc3ltX3F1 ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCBhc3ltX3FwX2F0dGFjaF9zZXNzaW9uOw0KPj4gKwkv Kio8IEF0dGFjaCBhc3ltbWV0cmljIHNlc3Npb24gdG8gcXVldWUgcGFpci4gKi8NCj4+ICsJY3J5 cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2F0dGFjaF9zZXNzaW9uX3QgcXBfZGV0YWNoX3Nlc3Npb247 DQo+PiArCS8qKjwgRGV0YWNoIHNlc3Npb24gZnJvbSBxdWV1ZSBwYWlyLiAqLw0KPltGaW9uYV0g dHlwbyAoYmFzZWQgb24gYSB0eXBvIEkgdGhpbmsgd2FzIGZpeGVkIGluIGEgcmVjZW50IHBhdGNo KQ0KPj4gKwljcnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2F0dGFjaF9zZXNzaW9uX3QgYXN5bV9x cF9kZXRhY2hfc2Vzc2lvbjsNCj4+ICAJLyoqPCBEZXRhY2ggc2Vzc2lvbiBmcm9tIHF1ZXVlIHBh aXIuICovDQo+PiAgfTsNCj4+DQo+PiBAQCAtNTM1LDYgKzY2MCwxOSBAQCB1aW50OF90IHJ0ZV9j cnlwdG9kZXZfYWxsb2NhdGVfZHJpdmVyKHN0cnVjdCBjcnlwdG9kZXZfZHJpdmVyICpjcnlwdG9f ZHJ2LA0KPj4gIAlzZXNzLT5zZXNzX3ByaXZhdGVfZGF0YVtkcml2ZXJfaWRdID0gcHJpdmF0ZV9k YXRhOw0KPj4gIH0NCj4+DQo+PiArc3RhdGljIGlubGluZSB2b2lkICoNCj4+ICtnZXRfYXN5bV9z ZXNzaW9uX3ByaXZhdGVfZGF0YShjb25zdCBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Np b24gKnNlc3MsDQo+PiArCQl1aW50OF90IGRyaXZlcl9pZCkgew0KPj4gKwlyZXR1cm4gc2Vzcy0+ c2Vzc19wcml2YXRlX2RhdGFbZHJpdmVyX2lkXTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu bGluZSB2b2lkDQo+PiArc2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoc3RydWN0IHJ0ZV9j cnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzLA0KPj4gKwkJdWludDhfdCBkcml2ZXJfaWQsIHZv aWQgKnByaXZhdGVfZGF0YSkNCj4+ICt7DQo+PiArCXNlc3MtPnNlc3NfcHJpdmF0ZV9kYXRhW2Ry aXZlcl9pZF0gPSBwcml2YXRlX2RhdGE7DQo+PiArfQ0KPj4gKw0KPj4gICNpZmRlZiBfX2NwbHVz cGx1cw0KPj4gIH0NCj4+ICAjZW5kaWYNCj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2NyeXB0 b2Rldi9ydGVfY3J5cHRvZGV2X3ZlcnNpb24ubWFwDQo+PiBiL2xpYi9saWJydGVfY3J5cHRvZGV2 L3J0ZV9jcnlwdG9kZXZfdmVyc2lvbi5tYXANCj4+IGluZGV4IGViNDczMDguLjMyMzI5NGEgMTAw NjQ0DQo+PiAtLS0gYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3ZlcnNpb24u bWFwDQo+PiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3ZlcnNpb24u bWFwDQo+PiBAQCAtODUsMyArODUsMjQgQEAgRFBES18xNy4xMSB7DQo+PiAgCXJ0ZV9jcnlwdG9k ZXZfcG1kX3BhcnNlX2lucHV0X2FyZ3M7DQo+Pg0KPj4gIH0gRFBES18xNy4wODsNCj4+ICsNCj4+ ICtFWFBFUklNRU5UQUwgew0KPj4gKwlnbG9iYWw6DQo+PiArDQo+W0Zpb25hXSB0aGUgaW1wbGVt ZW50YXRpb24gb2YgYWxsIHRoZXNlIEFQSXMgYWxzbyBuZWVkcyB0aGUgX2V4cGVyaW1lbnRhbCB0 YWcuDQo+DQo+PiArCXJ0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5X2dldDsNCj4+ICsJcnRl X2NyeXB0b2Rldl9hc3ltX2NhcGFiaWxpdHlfbW9kbGVuOw0KPj4gKwlydGVfY3J5cHRvZGV2X2Fz eW1fcXVldWVfcGFpcl9jb3VudDsNCj4+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fY3Jl YXRlOw0KPj4gKwlydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jbGVhcjsNCj4+ICsJcnRlX2Ny eXB0b2Rldl9hc3ltX3Nlc3Npb25fZnJlZTsNCj4+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Np b25faW5pdDsNCj4+ICsJcnRlX2NyeXB0b2Rldl9nZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfc2l6 ZTsNCj4+ICsJcnRlX2NyeXB0b2Rldl9nZXRfc3ltX3Nlc3Npb25fcHJpdmF0ZV9zaXplOw0KPj4g KwlydGVfY3J5cHRvZGV2X2dldF94Zm9ybV9hbGdvX2VudW07DQo+PiArCXJ0ZV9jcnlwdG9kZXZf cXVldWVfcGFpcl9hdHRhY2hfYXN5bV9zZXNzaW9uOw0KPj4gKwlydGVfY3J5cHRvZGV2X3F1ZXVl X3BhaXJfZGV0YWNoX2FzeW1fc2Vzc2lvbjsNCj4+ICsJcnRlX2NyeXB0b2Rldl9zeW1fcXVldWVf cGFpcl9jb3VudDsNCj4+ICsJcnRlX2NyeXB0b19hc3ltX3hmb3JtX3N0cmluZ3M7DQo+PiArCXJ0 ZV9jcnlwdG9fYXN5bV9vcGVyYXRpb25fc3RyaW5nczsNCj4+ICsNCj4+ICt9Ow0KPj4gLS0NCj4+ IDEuOS4xDQoNCg==