From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0048.outbound.protection.outlook.com [104.47.34.48]) by dpdk.org (Postfix) with ESMTP id 35CE31041 for ; Wed, 7 Mar 2018 13:16:17 +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=vqKftlvpIp8Ww05sG7IWTafniAx85XF/qepSRbc+bsE=; b=lylCB3w326M46EjeBD0JrWVa4znNyvafbjwPmP4vRlx3FjrgMuP+EaiO8i9f1ggttjLJFjzdkLK1vRLl1i2iX4rqejVc2cRi4xKkV1NB8AtCHOoglG8MQpwyv8vtowWsfU5DgT440PVo6zAbSc9aUPC53mXYJw3Nl1dzh9kmtN0= Received: from CY4PR0701MB3634.namprd07.prod.outlook.com (52.132.101.164) by CY4PR0701MB3828.namprd07.prod.outlook.com (52.132.102.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.567.14; Wed, 7 Mar 2018 12:16:15 +0000 Received: from CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::e842:2eb2:2ff5:5dd6]) by CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::e842:2eb2:2ff5:5dd6%13]) with mapi id 15.20.0548.016; Wed, 7 Mar 2018 12:16:14 +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: AQHTodGzuPus9zTdeEGX8ylmFTF93KPBdegA Date: Wed, 7 Mar 2018 12:16:14 +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: [115.113.156.2] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR0701MB3828; 7:uWnipErt4d8xHNoPc25t+9LhJ7VpoEA1NjMYiDXojMh4xS93pN4Wh+/byN4/oVzKhzomDQJVVoHR0Jeqltte79GJeNP5JqpxszEcXr0lXVRBLhCcIt7f8H3scrFYcLPMWuBhRXuAO3r28ulAEqrW9K3WKO0xZuiicd9ZWw1lIIK84ENGU3aKxUKZBGAvr8NSBthoJDG+3+iXtRHDdp8kwD4g5CTYutbwMCHoIR7jWDVWNDSVKEfgz8d1rwI00peV x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(39860400002)(346002)(376002)(39380400002)(366004)(396003)(13464003)(57704003)(478684002)(199004)(189003)(55016002)(6436002)(33656002)(561944003)(9686003)(53936002)(2950100002)(110136005)(316002)(305945005)(5890100001)(2501003)(105586002)(74316002)(7696005)(5250100002)(6246003)(76176011)(7736002)(4326008)(14454004)(81166006)(81156014)(53546011)(6506007)(59450400001)(478600001)(55236004)(86362001)(3280700002)(106356001)(5660300001)(102836004)(97736004)(66066001)(72206003)(2906002)(186003)(25786009)(26005)(2900100001)(229853002)(99286004)(53946003)(8936002)(68736007)(6116002)(3846002)(3660700001)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3828; H:CY4PR0701MB3634.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: 473c9dcb-73ba-41c4-f5ae-08d5842538d9 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3828; x-ms-traffictypediagnostic: CY4PR0701MB3828: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501244)(52105095)(3002001)(10201501046)(93006095)(93001095)(6041288)(20161123558120)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011); SRVR:CY4PR0701MB3828; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3828; x-forefront-prvs: 0604AFA86B received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: dmNiomgYxvCLhPfQOp2hkX8CVvKch89hoRk84//6mc9nLoEpNu+7MJC8lF4HGeior7RssZITbQojyxWIscF/41Ye/3K6zyQrGScIj0XqjqJTv/PVWUS55w570a+Q4617r7eyYMi6Shhlb9d+//WShMSfQYm4L1N1KYtBkskEiQR2A8NPChk3B8d4+gdHgDpyitLLngdKBzBSH7OnFLNmTHsBOwGUJOEElUdAMx+zoC/7yqdgHmzoeKrIjJFogWYzhYd1YwNwa5DFGRJSzptcdIGnZd/qIIbtIXOgjWEal3dn93M728P+bkjH1G7HyEE+ZYaAJtjgkNN11T1TGzQ8dg== 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: 473c9dcb-73ba-41c4-f5ae-08d5842538d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Mar 2018 12:16:14.4632 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3828 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: Wed, 07 Mar 2018 12:16:18 -0000 SGkgRmlvbmENCg0KDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBUcmFoZSwg RmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRlbC5jb21dDQo+U2VudDogMDkgRmVicnVhcnkg MjAxOCAyMzo0Mw0KPlRvOiBkZXZAZHBkay5vcmc7IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8 TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsgTXVydGh5LCBOaWRhZGF2b2x1DQo+ PE5pZGFkYXZvbHUuTXVydGh5QGNhdml1bS5jb20+OyBTYWh1LCBTdW5pbGEgPFN1bmlsYS5TYWh1 QGNhdml1bS5jb20+OyBHdXB0YSwgQXNoaXNoIDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47IFZl cm1hLA0KPlNoYWxseSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+OyBEb2hlcnR5LCBEZWNsYW4g PGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT47IEtlYXRpbmcsIEJyaWFuIEEgPGJyaWFuLmEua2Vh dGluZ0BpbnRlbC5jb20+Ow0KPkdyaWZmaW4sIEpvaG4gPGpvaG4uZ3JpZmZpbkBpbnRlbC5jb20+ DQo+Q2M6IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgRGUgTGFyYSBHdWFy Y2gsIFBhYmxvIDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+DQo+U3ViamVjdDogUkU6 IFtkcGRrLWRldl0gW1JGQyB2MSAxLzFdIGxpYi9jcnlwdG9kZXY6IGFkZCBzdXBwb3J0IG9mIGFz eW1tZXRyaWMgY3J5cHRvDQo+DQo+SGkgU2hhbGx5LA0KPkNvbW1lbnRzIGJlbG93Lg0KPg0KPj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3Vu Y2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgU2hhbGx5IFZlcm1hDQo+PiBTZW50OiBUdWVzZGF5 LCBKYW51YXJ5IDIzLCAyMDE4IDk6NTQgQU0NCj4+IFRvOiBEb2hlcnR5LCBEZWNsYW4gPGRlY2xh bi5kb2hlcnR5QGludGVsLmNvbT4NCj4+IENjOiBkZXZAZHBkay5vcmc7IHBhdGhyZXlhQGNhdml1 bW5ldHdvcmtzLmNvbTsgbm11cnRoeUBjYXZpdW1uZXR3b3Jrcy5jb207DQo+PiBzc2FodUBjYXZp dW1uZXR3b3Jrcy5jb207IGFndXB0YUBjYXZpdW1uZXR3b3Jrcy5jb207IFNoYWxseSBWZXJtYQ0K Pj4gPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+PiBTdWJqZWN0OiBbZHBkay1kZXZdIFtS RkMgdjEgMS8xXSBsaWIvY3J5cHRvZGV2OiBhZGQgc3VwcG9ydCBvZiBhc3ltbWV0cmljIGNyeXB0 bw0KPj4NCg0KLy9zbmlwDQoNCj4NCj4+ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0ZFQ0MsDQo+ PiArCS8qKjwgRnVuZGFtZW50YWwgRWxsaXB0aWMgY3VydmUgb3BlcmF0aW9ucy4NCj4+ICsJICog UGVyZm9ybSBlbGxpcHRpYyBjdXJ2ZSBvcGVyYXRpb246DQo+PiArCSAqIGFkZCwgZG91YmxlIHBv aW50LCBtdWx0aXBsaWNhdGlvbg0KPj4gKwkgKiBSZWZlciB0byBlbnVtIHJ0ZV9jcnlwdG9fZmVj Y19vcHR5cGUNCj4+ICsJICovDQo+PiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9NT0RJTlYsDQo+ PiArCS8qKjwgTW9kdWxhciBJbnZlcnNlICovDQo+W0Zpb25hXSB3b3VsZCBiZSBuaWNlciB0byBn cm91cCBtb2RpbnYgd2l0aCBtb2RleHANCg0KW1NoYWxseV0gSSB0aG91Z2h0IG9mIGl0IGJ1dCBo YXZpbmcgYSB4Zm9ybSBSVEVfQ1JZUFRPX1hGT1JNX01PRCB3aXRoIHR3byBvcHMgUlRFX0NSWVBU T19PUF9NT0RfRVhQIGFuZCBNT0RfSU5WIA0KZG9lc27igJl0IHNlZW0gdG8gcHJvdmlkZSBhbnkg YmVuZWZpdC4gT3IgZG8geW91IGhhdmUgc29tZXRoaW5nIGVsc2UgaW4gbWluZD8NCkluIGFkZGl0 aW9uLCBJIGFtIHRoaW5raW5nIHByb2JhYmx5IHdlIGRvbuKAmXQgbmVlZCBzZXNzaW9ucyBmb3Ig bW9kZXhwIG9yIG1vZGludiBvcHMuIEkgYW0gdGhpbmtpbmcgdG8gY2hhbmdlIHRoZWlyIHN1cHBv cnQgYXMgc2Vzc2lvbmxlc3Mgb25seS4NCkFwcCBjYW4gZGlyZWN0bHkgYXR0YWNoIHhmb3JtIHRv IGNvbXB1dGUgbW9kZXhwIG9yIGludmVyc2UgdG8gb3AuIFdoYXQgZG8geW91IHN1Z2dlc3Q/DQoN Cj4NCj4+ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX1RZUEVfTElTVF9FTkQNCj4+ICsJLyoqPCBF bmQgb2YgbGlzdCAqLw0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogQXN5bW1ldHJpYyBj cnlwdG9nciBvcGVyYXRpb24gdHlwZSB2YXJpYW50cw0KPltGaW9uYV0gdHlwbzogVXNlIGNyeXB0 byBvciBjcnlwdG9ncmFwaGljDQo+DQo+PiArICovDQo+PiArZW51bSBydGVfY3J5cHRvX2FzeW1f b3BfdHlwZSB7DQo+PiArCVJURV9DUllQVE9fQVNZTV9PUF9OT1RfU1BFQ0lGSUVEID0gMSwNCj5b RmlvbmFdIFdoeSBkb2VzIHRoaXMgc3RhcnQgYXQgMT8NCj5BbmQgaXMgaXQgbmVjZXNzYXJ5Pw0K Pg0KW1NoYWxseV0gIFdlIG5lZWQgdG8gaW5kaWNhdGUgbGlzdCBvZiBzdXBwb3J0ZWQgb3AgaW4g eGZvcm0gY2FwYWJpbGl0eSBzdHJ1Y3R1cmUuIEJlY2F1c2UgYW4gaW1wbGVtZW50YXRpb24gbWF5 IHN1cHBvcnQgUlNBIGVuY3J5cHQgYW5kIGRlY3J5cHQgYnV0IG5vdCBSU0EgU2lnbiBhbmQgdmVy aWZ5LiBPciwgQ2FuIHN1cHBvcnQgRFNBIFNpZ24gY29tcHV0ZSBidXQgbm90IHZlcmlmeS4NClNv LCBpdCB3YXMgYWRkZWQgdG8gaW5kaWNhdGUgZW5kLW9mLWFycmF5IG1hcmtlciAodGhvdWdoIGRv ZXNu4oCZdCBuZWVkIHRvIGJlIDEgZm9yIHRoYXQgcmVhc29uKS4gYnV0IG5vdyB3aGVuIEkgdGhp bmsgdG8gcmUtZGVzaWduIGl0cyBzdXBwb3J0LCB0aGVuIGl0IHdvbid0IGJlIG5lZWRlZC4gDQpT bywgSSB0aG91Z2h0IHJhdGhlciB0aGFuIGNhcnJ5aW5nIG9wX3R5cGUgYXJyYXksIEkgY2FuIGFk ZCBhbiBvcF90eXBlIGJpdG1hc2sgaW4geGZvcm0gY2FwYWJpbGl0eSB0byBzaG93IHN1cHBvcnRl ZCBvcHMuDQoNCkV4YW1wbGUgY2FwYWJpbGl0eSBjaGVjayBjb2RlIHRoZW4gd291bGQgbG9vayBs aWtlOg0KaW50IHJ0ZV9jcnlwdG9fYXN5bV9jaGVja19vcF90eXBlICggY29uc3QgcnRlX2NyeXB0 b19hc3ltX2NhcGFiaWx0aWVzICpjYXBhLCBpbnQgb3BfdHlwZSkgew0KCUlmKGNhcGEtPm9wX3R5 cGVzICYgKDEgPDwgb3BfdHlwZSkpDQoJCXJldHVybiAwOw0KCXJldHVybiAtMTsNCn0NCg0KUGxl YXNlIGxldCBtZSBrbm93IHlvdXIgZmVlZGJhY2ssIGlmIHlvdSBoYXZlIGFueSBwcmVmZXJlbmNl cyBoZXJlLg0KDQo+PiArCS8qKjwgT3BlcmF0aW9uIHVuc3BlY2lmaWVkICovDQo+PiArCVJURV9D UllQVE9fQVNZTV9PUF9FTkNSWVBULA0KPj4gKwkvKio8IEFzeW1tZXRyaWMgZW5jcnlwdCBvcGVy YXRpb24gKi8NCj4+ICsJUlRFX0NSWVBUT19BU1lNX09QX0RFQ1JZUFQsDQo+PiArCS8qKjwgQXN5 bW1ldHJpYyBEZWNyeXB0IG9wZXJhdGlvbiAqLw0KPj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfU0lH TiwNCj4+ICsJLyoqPCBTaWduYXR1cmUgZ2VuZXJhdGlvbiBvcGVyYXRpb24gKi8NCj4+ICsJUlRF X0NSWVBUT19BU1lNX09QX1ZFUklGWSwNCj4+ICsJLyoqPCBTaWduYXR1cmUgdmVyaWZpY2F0aW9u IG9wZXJhdGlvbiAqLw0KPj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfS0VZX1BBSVJfR0VORVJBVElP TiwNCj4+ICsJLyoqPCBQdWJsaWMvUHJpdmF0ZSBrZXkgcGFpciBnZW5lcmF0aW9uIG9wZXJhdGlv biAqLw0KPltGaW9uYV0gSW4gdGhlIGNvbW1lbnQsIGNsYXJpZnkgdGhhdCB0aGlzIGlzIGZvciBE SCBhbmQgRUNESCwgYW5kIGZvciB0aGUNCj4gZ2VuZXJhdGlvbiBvZiB0aGUgcHVibGljIGtleSAo YW5kIG9wdGlvbmFsbHkgdGhlIHByaXZhdGUga2V5PykNCj4NCg0KW1NoYWxseV0gc28gZmFyLCBJ IHdhcyBhc3N1bWluZyBpdCB3aWxsIGdlbmVyYXRlIGJvdGggYnV0IHdoZW4geW91IHNheSBwcml2 YXRlIGtleSBvcHRpb25hbCwgd2hlcmUgeW91IGV4cGVjdCBpdCB0byBiZSBjb21pbmcgZnJvbT8g LSBmcm9tIGFwcCBvciBnZW5lcmF0ZWQgaW50ZXJuYWxseT8gSXMgdGhlaXIgaHcgdmFyaWFudCB3 aGljaCBtYXkgbm90IGdlbmVyYXRlIHByaXZhdGUga2V5Pw0KDQovL3NuaXANCg0KPj4gKy8qKg0K Pj4gKyAqIEZ1bmRhbWVudGFsIEVDQyBvcGVyYXRpb24gdHlwZSB2YXJpYW50cy4NCj4+ICsgKi8N Cj4+ICtlbnVtIHJ0ZV9jcnlwdG9fZmVjY19vcHR5cGUgew0KPj4gKwlSVEVfQ1JZUFRPX0ZFQ0Nf T1BfTk9UX1NQRUNJRklFRCA9IDEsDQo+PiArCS8qKjwgRkVDQyBvcGVyYXRpb24gdHlwZSB1bnNw ZWNpZmllZCAqLw0KPltGaW9uYV0gYXMgYWJvdmUuIFdoeSAxPyBBbmQgaXMgaXQgbmVlZGVkPw0K DQpbU2hhbGx5XSBUaGlzIGlzIGZvciBzYW1lIHJlYXNvbiB0byBpbmRpY2F0ZSBpbiBmZWNjIHhm b3JtIGNhcGFiaWxpdHkgbGlzdCBvZiBzdXBwb3J0ZWQgb3AgdHlwZSBpbiBmdW5kYW1lbnRhbCBF QyBvcGVyYXRpb24uIEFuZCBpZiB3ZSBhZ3JlZSB0byB1c2UgcHJvcG9zYWwgYWJvdmUgdG8gdXNl IGJpdG1hc2ssIGl0IHdvbid0IGJlIG5lZWRlZC4NCj4NCj4+ICsJUlRFX0NSWVBUT19GRUNDX09Q X1BPSU5UX0FERCwNCj4+ICsJLyoqPCBGdW5kYW1lbnRhbCBFQ0MgcG9pbnQgYWRkaXRpb24gb3Bl cmF0aW9uICovDQo+PiArCVJURV9DUllQVE9fRkVDQ19PUF9QT0lOVF9EQkwsDQo+PiArCS8qKjwg RnVuZGFtZW50YWwgRUNDIHBvaW50IGRvdWJsaW5nIG9wZXJhdGlvbiAqLw0KPj4gKwlSVEVfQ1JZ UFRPX0ZFQ0NfT1BfUE9JTlRfTVVMVElQTFksDQo+PiArCS8qKjwgRnVuZGFtZW50YWwgRUNDIHBv aW50IG11bHRpcGxpY2F0aW9uIG9wZXJhdGlvbiAqLw0KPj4gKwlSVEVfQ1JZUFRPX0ZFQ0NfT1Bf TElTVF9FTkQNCj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgUlRFX0NSWVBUT19FQ19DVVJWRV9O T1RfU1BFQ0lGSUVEICAtMQ0KPltGaW9uYV0gV291bGRuJ3QgaXQgYmUgYmV0dGVyIHRvIHB1dCB0 aGlzIGJhY2sgaW4gYXMgdGhlIGluaXRpYWwgdmFsdWUgaW4gdGhlIGVudW0gYXMgb3JpZ2luYWxs eSBkb25lPw0KPkVsc2Ugd2lsbCB0aGVyZSBub3QgYmUgYSBjb21waWxlciB3YXJuaW5nIGlmIGEg cGFyYW0gb2YgdGhhdCBlbnVtIHR5cGUgaXMNCj5pbml0aWFsaXNlZCB0byBhYm92ZSAjZGVmaW5l Pw0KPkFuZCBhcmUgX0JJTkFSWSBhbmQgX1BSSU1FIHZhbHVlcyBuZWVkZWQgaW4gdGhpcyBjYXNl Pw0KDQpbU2hhbGx5XSBBZ3JlZWQuIFdlIHdvdWxkIG5lZWQgdG8gdXNlIHR5cGVjYXN0IHRvIGF2 b2lkIHdhcm5pbmcgc28gSSB3aWxsIHJldmVydCBhbmQgZGVmaW5lIF9QcmltYXJ5IGFuZCBCaW5h cnkgdmFyaWFudC4gQnV0IGJlZm9yZSB0aGF0IEkgaGF2ZSBvbmUgcXVlc3Rpb24gb24gcHVibGlz aGVkIGxpc3QuIFNlZSBiZWxvdy4NCg0KPg0KPj4gKy8qKg0KPj4gKyAqIEVDQyBsaXN0IG9mIGN1 cnZlcy4NCj4+ICsgKi8NCi8vc25pcA0KDQo+PiArCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUg b3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVf d2FwX3dzZ19pZG1fZWNpZF93dGxzNCwNCj4+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxMTMg Yml0IGJpbmFyeSBmaWVsZCAqLw0KPj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRt X2VjaWRfd3RsczUsDQo+PiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5 IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxz MTAsDQo+PiArCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDIzMyBiaXQgYmluYXJ5 IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxz MTEsDQo+PiArCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDIzMyBiaXQgYmluYXJ5 IGZpZWxkICovDQo+PiArCVJURV9DUllQVE9fRUNfQkNVUlZFX0xJU1RfRU5EDQo+PiArfTsNCj5b RmlvbmFdIERvIHdlIHJlYWxseSB3YW50IHRvIHNwZWNpZnkgY3VydmVzIDwgMjI0IGJpdHM/IEV2 ZW4gMjI0IGlzIHdvZWZ1bGx5IGluc2VjdXJlIHRoZXNlIGRheXMuDQo+QWxzbyBkbyB3ZSB3YW50 IHRvIGxpc3QgYWxsICJwdWJsaXNoZWQiIGN1cnZlcywgb3IgYWxsb3cgY3VzdG9tZXJzIHRvIHNw ZWNpZnkNCj50aGVpciBvd24gY3VydmUgcGFyYW1ldGVycywgYXQgbGVhc3Qgb24gdGhlIEZFQ0Mg QVBJPyBBZGRpbmcgYW4gQVBJIHRvIHNwZWNpZnkgYSBjdXJ2ZSB3aXRoDQo+aXRzIHBhcmFtcyB3 b3VsZCBhbGxvdyBuZXcgY3VydmVzIHRvIGJlIHVzZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIEFQ SSBhbmQNCj53b3VsZCBhdm9pZCB0aGUgbmVlZCBmb3Igc3VjaCBhbiBleHRlbnNpdmUgbGlzdC4N Cg0KW1NoYWxseV0gSSB3b3VsZCB0YWtlIHRoaXMgcXVlc3Rpb24gaW4tcGFydHM6DQoNCiIgQWxz byBkbyB3ZSB3YW50IHRvIGxpc3QgYWxsICJwdWJsaXNoZWQiIGN1cnZlcywgb3IgYWxsb3cgY3Vz dG9tZXJzIHRvIHNwZWNpZnkgdGhlaXIgb3duIGN1cnZlIHBhcmFtZXRlcnMsIg0KLSBDdXJyZW50 bHkgc3BlY2lmaWNhdGlvbiBhbGxvdyBhcHAgdG8gZG8gYm90aCBpLmUuIGl0IGNhbiBlaXRoZXIg c2V0dXAgdGhlc2UgcHVibGlzaGVkIGN1cnZlIGlkcyBvciBzcGVjaWZ5IGl0cyBvd24gZG9tYWlu IHBhcmFtcyB0byBhbGwgZWxsaXB0aWMgY3VydmUgYmFzZWQgeGZvcm1zIChlY2RoLCBlY2RzYSwg YW5kIGZlY2MpLg0KICBJZiBpbnB1dCBjdXJ2ZSBoYXMgY3VydmVfdHlwZSA9IFVOU1BFQ0lGSUVE LCBQTUQgdXNlcyBkb21haW4gcGFyYW1ldGVycyBlbHNlIGl0IHVzZXMgY3VydmVpZCBnaXZlbiBi eSBhcHAgZnJvbSB0aGlzIHB1Ymxpc2hlZCBsaXN0LiANCiAgU28sIGlzIHRoaXMgbWlzc2luZyBh bnkgcmVxdWlyZW1lbnQgdGhhdCBuZWVkIHRvIGJlIHN1cHBvcnRlZD8hDQoNCiIgQWRkaW5nIGFu IEFQSSB0byBzcGVjaWZ5IGEgY3VydmUgd2l0aCBpdHMgcGFyYW1zIHdvdWxkIGFsbG93IG5ldyBj dXJ2ZXMgdG8gYmUgdXNlZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgQVBJIGFuZCB3b3VsZCBhdm9p ZCB0aGUgbmVlZCBmb3Igc3VjaCBhbiBleHRlbnNpdmUgbGlzdC4iDQotIGhlbHAgbWUgdW5kZXJz dGFuZCBhIGJpdCBoZXJlLiBBcmUgeW91IHN1Z2dlc3RpbmcsIHdlIGNhbiByZW1vdmUgdGhpcyBw dWJsaXNoIGxpc3QgYW5kIGFkZCBhIG5ldyBBUEkgc3VjaCBhcyANCg0KaW50IHJ0ZV9jcnlwdG9f YXN5bV9uZXdfY3VydmUoaW50IGN1cnZlaWQsIHJ0ZV9jcnlwdG9fYXN5bV9lY19kb21haW5fcGFy YW1zIHBhcmFtcykgDQoNCndoaWNoIGFwcCBjYW4gY2FsbCB0byBjcmVhdGUgaXRzIGN1cnZlaWQg d2l0aCBpdHMgb3duIGRvbWFpbiBwYXJhbWV0ZXJzIGluIFBNRD8gDQoNCklmIHllcywgdGhlbiBo b3cgaXQgd291bGQgaGVscCByZW1vdmUgcHVibGlzaGVkIGxpc3Q/IERvZXMgdGhhdCBtZWFuIHRo YXQgd2UgYXNzdW1lIGFwcCB0byByZXRyaWV2ZSBkb21haW4gcGFyYW1zIGZyb20gdGhlc2Ugc3Rh bmRhcmQgYW5kIHJlLWNyZWF0ZSBhZ2FpbiBvbiBQTUQ/IA0KDQoiZG8gd2UgaGF2ZSB0byBwdWJs aXNoIGN1cnZlcyA8IDIyNCBiaXRzIg0KLSBXZSBqdXN0IGxpc3RlZCBhbGwgYmFzZWQgb24gcHJl dmlvdXMgZmVlZGJhY2sgdG8gaW5jbHVkZSBub24tbmlzdCBjdXJ2ZSBpZC4gQnV0IGFncmVlIGl0 IGNhbiBiZSBuYXJyb3dlZCBkb3duIHRvIGZldyAobWF5IGJlIHRvIG9uZSB1c2VkIGJ5IHNzbCkN Cg0KPkRvIHdlIG5lZWQgYSAiY2FwYWJpbGl0aWVzIiBtYXNrIHRvIHNheSB3aGljaCBjdXJ2ZXMg YXJlIHN1cHBvcnRlZCBieSBhIGRldmljZT8NCg0KW1NoYWxseV0gWWVzLCBpZiB3ZSBhcmUgc3Vw cG9ydGluZyBwdWJsaXNoZWQgaWQuDQoNCj5XaGF0IGFib3V0IFNNMj8NCltTaGFsbHldIGFwcCBj YW4gc2V0dXAgZWMgcGFyYW1zIGFzIG1lbnRpb25lZCBpbiBzbTIgc3BlYy4gZG9lcyBpdCBuZWVk IGFueSBleHBsaWNpdCBzdXBwb3J0IG9uIEFQST8NCg0KPg0KLy9zbmlwDQoNCj4+ICsNCj4+ICsv KioNCj4+ICsgKiBFbGxpcHRpYyBjdXJ2ZSBpZA0KPj4gKyAqLw0KPj4gK3N0cnVjdCBydGVfY3J5 cHRvX2VjX2N1cnZlX2lkIHsNCj4+ICsJUlRFX1NURF9DMTENCj4+ICsJdW5pb24gew0KPj4gKwkJ ZW51bSBydGVfY3J5cHRvX2VjX3ByaW1lX2N1cnZlIHBjdXJ2ZTsNCj4+ICsJCWVudW0gcnRlX2Ny eXB0b19lY19iaW5hcnlfY3VydmUgYmN1cnZlOw0KPj4gKwl9Ow0KPj4gK307DQo+W0Zpb25hXSBC ZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlc2UgdHdvIGVudW1zIG92ZXJsYXAsIGlmIHlvdSBzcGVj aWZ5IHRoZSBjdXJ2ZSB0eXBlIGluY29ycmVjdGx5LCB5b3UnbGwgc3RpbGwNCj5oYXZlIGEgcG90 ZW50aWFsbHkgdmFsaWQgY3VydmUgZW51bSBzcGVjaWZpZWQuIEkgc3VnZ2VzdCBpdCdzIHNhZmVy IHRvIGluY2x1ZGUgdGhlIHR5cGUgaGVyZSB3aXRoIHRoZSB1bmlvbiwNCj5yYXRoZXIgdGhhbiBp biB0aGUgd3JhcHBlciB4Zm9ybSBzdHJ1Y3QsIGkuZS4NCj5zdHJ1Y3QgcnRlX2NyeXB0b19lY19j dXJ2ZSB7DQo+CWVudW0gcnRlX2NyeXB0b19lY19jdXJ2ZV90eXBlIGN1cnZlX3R5cGU7DQo+CS8q KjwgY3VydmUgdHlwZTogUHJpbWUgdnMgQmluYXJ5ICovDQo+CXVuaW9uIHsNCj4JZW51bSBydGVf Y3J5cHRvX2VjX3ByaW1lX2N1cnZlIHBjdXJ2ZV9pZDsNCj4JZW51bSBydGVfY3J5cHRvX2VjX2Jp bmFyeV9jdXJ2ZSBiY3VydmVfaWQ7DQo+CX07DQo+fTsNCltTaGFsbHldIFdlIHdvdWxkIG5lZWQg Y3VydmUgdHlwZSBpZiB3ZSBuZWVkIHRvIGRlZmluZSBhIG5ldyBjdXJ2ZSBiYXNlZCBvbiBkb21h aW4gcGFyYW1zLiBMZXQncyBjb3ZlciBpdCBsYXRlciBvbmNlIHdlIGNsYXJpZnkgYWJvdmUgZmVl ZGJhY2suDQoNCj4+ICsvKioNCj4+ICsgKiBBc3ltbWV0cmljIFJTQSB0cmFuc2Zvcm0gZGF0YQ0K Pj4gKyAqDQo+PiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgZGF0YSByZXF1aXJlZCB0byBw ZXJmb3JtIFJTQSBjcnlwdG8NCj4+ICsgKiB0cmFuc2Zvcm0uDQo+PiArICoNCj4+ICsgKi8NCj4+ ICtzdHJ1Y3QgcnRlX2NyeXB0b19yc2FfeGZvcm0gew0KPj4gKw0KPj4gKwlydGVfY3J5cHRvX3hm b3JtX3BhcmFtIG47DQo+PiArCS8qKjwgbiAtIFByaW1lIG1vZHVsdXMNCj4+ICsJICogUHJpbWUg bW9kdWx1cyBkYXRhIG9mIFJTQSBvcGVyYXRpb24gaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsNCj4+ ICsJICogYnl0ZSBvcmRlciBmb3JtYXQuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwlydGVfY3J5cHRv X3hmb3JtX3BhcmFtIGU7DQo+PiArCS8qKjwgZSAtIFB1YmxpYyBrZXkgZXhwb25lbnQNCj4+ICsJ ICogUHVibGljIGtleSBleHBvbmVudCB1c2VkIGZvciBSU0EgcHVibGljIGtleSBvcGVyYXRpb25z IGluIE9jdGV0LQ0KPj4gKwkgKiBzdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4+ ICsJICovDQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZDsNCj4+ICsJLyoqPCBk IC0gUHJpdmF0ZSBrZXkgZXhwb25lbnQNCj4+ICsJICogUHJpdmF0ZSBrZXkgZXhwb25lbnQgdXNl ZCBmb3IgUlNBIHByaXZhdGUga2V5IG9wZXJhdGlvbnMgaW4NCj4+ICsJICogT2N0ZXQtc3RyaW5n ICBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPj4gKwkgKi8NCj4+ICsNCj4+ICsJcnRlX2Ny eXB0b194Zm9ybV9wYXJhbSBwOw0KPj4gKwkvKio8IHAgLSBQcml2YXRlIGtleSBjb21wb25lbnQg UA0KPj4gKwkgKiBQcml2YXRlIGtleSBjb21wb25lbnQgb2YgUlNBIHBhcmFtZXRlciAgcmVxdWly ZWQgZm9yIENSVCBtZXRob2QNCj4+ICsJICogb2YgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBpbiBP Y3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+PiArCSAqIGZvcm1hdC4NCj4+ICsJICov DQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcTsNCj4+ICsJLyoqPCBxIC0gUHJp dmF0ZSBrZXkgY29tcG9uZW50IFENCj4+ICsJICogUHJpdmF0ZSBrZXkgY29tcG9uZW50IG9mIFJT QSBwYXJhbWV0ZXIgIHJlcXVpcmVkIGZvciBDUlQgbWV0aG9kDQo+PiArCSAqIG9mIHByaXZhdGUg a2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPj4gKwkg KiBmb3JtYXQuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIGRQ Ow0KPj4gKwkvKio8IGRQIC0gUHJpdmF0ZSBDUlQgY29tcG9uZW50DQo+PiArCSAqIFByaXZhdGUg Q1JUIGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUIG1ldGhvZA0K Pj4gKwkgKiBSU0EgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBpbiBPY3RldC1zdHJpbmcgbmV0d29y ayBieXRlIG9yZGVyDQo+PiArCSAqIGZvcm1hdC4NCj4+ICsJICogZFAgPSBkIG1vZCAoIHAgLSAx ICkNCj4+ICsJICovDQo+PiArDQo+PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZFE7DQo+PiAr CS8qKjwgZFEgLSBQcml2YXRlIENSVCBjb21wb25lbnQNCj4+ICsJICogUHJpdmF0ZSBDUlQgY29t cG9uZW50IG9mIFJTQSBwYXJhbWV0ZXIgIHJlcXVpcmVkIGZvciBDUlQgbWV0aG9kDQo+PiArCSAq IFJTQSBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUg b3JkZXINCj4+ICsJICogZm9ybWF0Lg0KPj4gKwkgKiBkUSA9IGQgbW9kICggcSAtIDEgKQ0KPj4g KwkgKi8NCj4+ICsNCj4+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBxSW52Ow0KPj4gKwkvKio8 IHFJbnYgLSBQcml2YXRlIENSVCBjb21wb25lbnQNCj4+ICsJICogUHJpdmF0ZSBDUlQgY29tcG9u ZW50IG9mIFJTQSBwYXJhbWV0ZXIgIHJlcXVpcmVkIGZvciBDUlQgbWV0aG9kDQo+PiArCSAqIFJT QSBwcml2YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3Jk ZXINCj4+ICsJICogZm9ybWF0Lg0KPj4gKwkgKiBxSW52ID0gaW52IHEgbW9kIHANCj4+ICsJICov DQo+PiArfTsNCj5bRmlvbmFdIFRoaXMgYWxsb3dzIGJvdGggcmVwcmVzZW50YXRpb25zIG9mIHRo ZSBwcml2YXRlIGtleSB0byBiZSBzcGVjaWZpZWQNCj53aXRoIHRoZSBwb3NzaWJpbGl0eSBvZiBj b25mdXNpb24gaWYgYm90aCBhcmUgc3BlY2lmaWVkLg0KPldvdWxkIGl0IGJlIGJldHRlciB0byBo YXZlIGEgdW5pb24gb2YgMiBkaWZmZXJlbnQgc3RydWN0dXJlcywgb25lIHdpdGgge24sZH0gYW5k DQo+dGhlIG90aGVyIHdpdGgge3AscSxkUCxkUSxxSW52fT8NCj4NCg0KW1NoYWxseV0gT2suDQoN Ci8vc25pcA0KDQo+PiArDQo+PiArLyoqDQo+PiArICogQXN5bW1ldHJpYyBjcnlwdG8gdHJhbnNm b3JtIGRhdGENCj4+ICsgKg0KPj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBkYXRh IHJlcXVpcmVkIHRvIHBlcmZvcm0gdGhlDQo+PiArICogYXN5bW1ldHJpYyBjcnlwdG8gdHJhbnNm b3JtYXRpb24gb3BlcmF0aW9uLiBUaGUgZmllbGQgb3ANCj4+ICsgKiBkZXRlcm1pbmVzIHRoZSBh c3ltbWV0cmljIGFsZ29yaXRobSBmb3IgdHJhbnNmb3JtYXRpb24uDQo+W0Zpb25hXSBjbGFyaWZ5 IGNvbW1lbnQuIFRoZSB4Zm9ybSBvbmx5IGNvbnRhaW5zIHNvbWUgb2YgdGhlIGRhdGEsIHRoZSBy ZXN0IHdpbGwgYmUgcHJvdmlkZWQgaW4gdGhlIG9wLg0KPkFuZCB0aGVyZSdzIG5vIGZpZWxkIG9w IGhlcmUuDQoNCltTaGFsbHldIE9rDQoNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgcnRlX2NyeXB0b19h c3ltX3hmb3JtIHsNCj4+ICsJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybSAqbmV4dDsNCj5b RmlvbmFdIElzIHRoZXJlIGFueSByZWFzb24gZm9yIGEgY2hhaW4gb2YgeGZvcm1zPw0KPkknZCBz dWdnZXN0IHJlbW92aW5nIHVubGVzcyBuZWVkZWQuDQo+DQoNCltTaGFsbHldIFllcy4gT25lIHBv c3NpYmxlIGNoYWluIEVDREgga2V5IGdlbmVyYXRpb24gZm9sbG93ZWQgYnkgRUNEU0Egc2lnbiBj b21wdXRlLiBTaW1pbGFyIHdpdGggREgga2V5IGdlbmVyYXRpb24gKyBEU0Egc2lnbiBjb21wdXRl Lg0KQ3VycmVudGx5IHRoZXNlIGFyZSBvbmx5IHZhbGlkIGNoYWluIEkgZm9yZXNlZSB0aGF0IGNh biBiZSBzZXR1cCB0byBiZSBwZXJmb3JtZWQgb24gYW4gb3AgdXNpbmcgdGhhdCBzZXNzaW9uLiBD YW4gYWRkIG90aGVyIGlmIHdlIGlkZW50aWZ5IG1vcmUgc3VjaCBkZXBlbmRlbnQNCnNldCBvZiBv cGVyYXRpb24uDQoNCj4+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB4Zm9ybV90 eXBlOw0KPj4gKwkvKio8IEFzeW1tZXRyaWMgYWxnb3JpdGhtIGZvciBjcnlwdG8gdHJhbnNmb3Jt ICovDQo+PiArDQo+PiArCVJURV9TVERfQzExDQo+PiArCXVuaW9uIHsNCj4+ICsJCXN0cnVjdCBy dGVfY3J5cHRvX3JzYV94Zm9ybSByc2E7DQo+PiArCQkvKio8IFJTQSB4Zm9ybSBwYXJhbWV0ZXJz ICovDQo+PiArDQo+PiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19mZWNjX3hmb3JtIGZlY2M7DQo+PiAr CQkvKio8IEZ1bmRhbWVudGFsIEVsbGlwdGljIEN1cnZlIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4+ ICsNCj4+ICsJCXN0cnVjdCBydGVfY3J5cHRvX21vZGV4X3hmb3JtIG1vZGV4Ow0KPj4gKwkJLyoq PCBNb2R1bGFyIEV4cG9uZW50aWF0aW9uIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4+ICsNCj4+ICsJ CXN0cnVjdCBydGVfY3J5cHRvX21vZGludl94Zm9ybSBtb2RpbnY7DQo+PiArCQkvKio8IE1vZHVs dXMgSW52ZXJzZSB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+PiArDQo+PiArCQlzdHJ1Y3QgcnRlX2Ny eXB0b19lY2RzYV94Zm9ybSBlY2RzYTsNCj4+ICsJCS8qKjwgRUNEU0EgeGZvcm0gcGFyYW1ldGVy cyAqLw0KPj4gKw0KPj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fZWNkaF94Zm9ybSBlY2RoOw0KPj4g KwkJLyoqPCBFQ0RIIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4+ICsNCj4+ICsJCXN0cnVjdCBydGVf Y3J5cHRvX2RzYV94Zm9ybSBkc2E7DQo+PiArCQkvKio8IERTQSB4Zm9ybSBwYXJhbWV0ZXJzICov DQo+PiArCX07DQo+PiArfTsNCg0KLy9zbmlwIA0KDQo+PiAgI2RlZmluZSBSVEVfQ1JZUFRPREVW X0RFVEFDSEVEICAoMCkNCj4+IEBAIC01MTMsNiArNjc3LDI0IEBAIHN0cnVjdCBydGVfY3J5cHRv ZGV2X2NvbmZpZyB7DQo+PiAgCWludCBzb2NrZXRfaWQ7CQkJLyoqPCBTb2NrZXQgdG8gYWxsb2Nh dGUgcmVzb3VyY2VzIG9uICovDQo+PiAgCXVpbnQxNl90IG5iX3F1ZXVlX3BhaXJzOw0KPj4gIAkv Kio8IE51bWJlciBvZiBxdWV1ZSBwYWlycyB0byBjb25maWd1cmUgb24gZGV2aWNlICovDQo+PiAr DQo+PiArCXVpbnQxNl90IG5iX3N5bW1fcXA7DQo+PiArCS8qKjwgTnVtYmVyIG9mIHF1ZXVlIHBh aXIgdG8gYmUgdXNlZCBmb3Igc3ltbWV0cmljIG9wZXJhdGlvbnMuDQo+PiArCSAqIE9wdGlvbmFs IGlucHV0Lg0KPj4gKwkgKiBWYWxpZCBmb3IgZGV2aWNlIHN1cHBvcnRpbmcgYm90aCBzeW1tZXRy aWMgYW5kIGFzeW1tZXRyaWMuDQo+PiArCSAqIFNob3VsZCBiZSBsZXNzIHRoYW4gZXF1YWwgdG8g cnRlX2NyeXB0b2Rldl9pbmZvOm1heF9uYl9zeW1tX3FwLg0KPj4gKwkgKiBwbGVhc2Ugbm90ZSB0 aGlzIG51bWJlciBvbmx5IHRlbGxzIGhvdyBtYW55IHF1ZXVlIHBhaXIgdG8gYmUgdXNlZA0KPj4g KwkgKiBmb3Igc3ltbWV0cmljIG9wIGFuZCBkb2VzICpub3QqIHRlbGwgc3BlY2lmaWMgSURzIHRv IGJlIHVzZWQuDQo+PiArCSAqLw0KPj4gKw0KPj4gKwl1aW50MTZfdCBuYl9hc3ltbV9xcDsNCj4+ ICsJLyoqPCBOdW1iZXIgb2YgcXVldWUgcGFpciB0byBiZSB1c2VkIGZvciBhc3ltbWV0cmljIG9w ZXJhdGlvbnMuDQo+PiArCSAqIE9wdGlvbmFsIGlucHV0Lg0KPj4gKwkgKiBWYWxpZCBmb3IgZGV2 aWNlIHN1cHBvcnRpbmcgYm90aCBhc3ltbWV0cmljIGFuZCBzeW1tZXRyaWMuDQo+PiArCSAqIFNo b3VsZCBiZSBsZXNzIHRoYW4gZXF1YWwgdG8gcnRlX2NyeXB0b2Rldl9pbmZvOm1heF9uYl9hc3lt bV9xcA0KPj4gKwkgKiBQbGVhc2Ugbm90ZSB0aGlzIG51bWJlciBvbmx5IHRlbGxzIGhvdyBtYW55 IHF1ZXVlIHBhaXIgdG8gYmUNCj4+ICsJICogdXNlZCBmb3IgYXN5bW1ldHJpYyBhbmQgZG9lcyAq bm90KiBzcGVjaWZpY2FsbHkgdGVsbCBxcCBJRA0KPj4gKwkgKi8NCj4+ICB9Ow0KPj4NCj5bRmlv bmFdIFRoZSBwYXJhbXMgZnJvbSBjb25maWcgc3RydWN0dXJlIGFib3ZlIHNob3VsZCBiZSB1c2Vk IHRvIHNldCB0aGUgdmFsdWVzIGluIHRoZSBkYXRhIHN0cnVjdHVyZQ0KPlRoaXMgY29kZSBpcyBt aXNzaW5nLg0KDQpbU2hhbGx5XSBhcyBkaXNjdXNzZWQgLCBzdWNoIGNoYW5nZXMgYWJvdXQgc3lt L2FzeW0gcXAgd291bGQgYmUgcmVtb3ZlZA0KDQo+DQovL3NuaXAgDQoNCj4+IEBAIC05NzUsNiAr MTI1Myw4IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4+DQo+PiAgLyoq DQo+PiAgICogR2V0IHRoZSBzaXplIG9mIHRoZSBwcml2YXRlIHNlc3Npb24gZGF0YSBmb3IgYSBk ZXZpY2UuDQo+PiArICogaWYgZGV2aWNlIHN1cHBvcnQgYm90aCBzeW1tZXRyaWMgYW5kIGFzeW1t ZXRyaWMsIGl0DQo+PiArICogcmV0dXJuIHNpemUgaW5jbHVzaXZlIG9mIGJvdGgNCj5bRmlvbmFd IEFyZSB5b3Ugc3VnZ2VzdGluZyB0aGUgc2FtZSBzZXNzaW9uIHBvb2wgbWlnaHQgYmUgdXNlZA0K PmZvciBib3RoIHN5bSBhbmQgYXN5bSBzZXNzaW9ucz8NCj5TZWVtcyB1bmxpa2VseSwgYnV0IGlm IGFuIGFwcGxpY2F0aW9uIGNob3NlIHRvLCBpdCBzZWVtcyBiZXR0ZXINCj4gdGhhdCBpdCB3b3Vs ZCBkbyBpdCBleHBsaWNpdGx5LA0KPmUuZy4gZ2V0IGFzeW0gYW5kIHN5bSBwcml2YXRlIHNpemVz LCBzYW1lIGFzIGl0IGdldHMgc2l6ZSBmcm9tIHRoZSBvdGhlcg0KPmRyaXZlcnMgYW5kIHNpemVz IGZvciB0aGUgbWF4aW11bS4NCj5JZiBtZWFuaW5nIGlzIGNoYW5nZWQgYXMgeW91IHN1Z2dlc3Qg dGhlbiBzeW0gYXBwbGljYXRpb25zIGFscmVhZHkNCj5pbXBsZW1lbnRlZCB3aWxsIGxpa2VseSBl bmQgdXAgd2l0aCBwb29scyBzaXplZCBmb3IgYSBzZXNzaW9uIHNpemUgdGhleSBkb27igJl0IG5l ZWQuDQo+DQo+QXMgSSB0aGluayB0aGUgY29tYmluZWQgcG9vbCBjYXNlIHVubGlrZWx5LCBpdCBt YWtlcyBtb3JlIHNlbnNlIHRvIG1lIHRoYXQgdGhpcw0KPmZuIHNob3VsZCBoYXZlIGNvbW1lbnQg Y2hhbmdlZCB0byBzYXkgaXQgcmV0dXJucyBvbmx5IHN5bSBzZXNzaW9uIHNpemUNCj5mb3IgYmFj a3dhcmRzIGNhcGFiaWxpdHkgcmVhc29ucywgYnV0IHdpbGwgYmUgZGVwcmVjYXRlZA0KPmFuZCBh cHBscyBzaG91bGQgdXNlIGdldF9zeW1fc2Vzc2lvbl9wcml2YXRlX3NpemUgaW5zdGVhZC4NCg0K W1NoYWxseV0gT2sgYWdyZWUuIEkgd2lsbCByZXZlcnQgdG8gaXRzIG9yaWdpbmFsIGRlZmluaXRp b24uDQo+DQoNCi8vIHNuaXANCg0KLy9zbmlwDQoNCj4+ICsvKioNCj4+ICsgKiBDcmVhdGUgYSBh c3ltbWV0cmljIHNlc3Npb24gbWVtcG9vbCB0byBhbGxvY2F0ZSBzZXNzaW9ucyBmcm9tDQo+PiAr ICoNCj4+ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4+ICsgKiBAcGFy YW0JbmJfb2JqcwkJTnVtYmVyIG9mIGFzeW1tZXRyaWMgc2Vzc2lvbnMgb2JqZWN0cyBpbiBtZW1w b29sDQo+PiArICogQHBhcmFtCW9ial9jYWNoZQlsLWNvcmUgb2JqZWN0IGNhY2hlIHNpemUsIHNl ZSAqcnRlX3JpbmdfY3JlYXRlKg0KPj4gKyAqIEBwYXJhbQlzb2NrZXRfaWQJU29ja2V0IElkIHRv IGFsbG9jYXRlICBtZW1wb29sIG9uLg0KPj4gKyAqDQo+PiArICogQHJldHVybg0KPj4gKyAqIC0g T24gc3VjY2VzcyByZXR1cm5zIGEgcG9pbnRlciB0byBhIHJ0ZV9tZW1wb29sDQo+PiArICogLSBP biBmYWlsdXJlIHJldHVybnMgYSBOVUxMIHBvaW50ZXINCj4+ICsgKi8NCj4+ICt0eXBlZGVmIGlu dCAoKmNyeXB0b2Rldl9hc3ltX2NyZWF0ZV9zZXNzaW9uX3Bvb2xfdCkoDQo+PiArCQlzdHJ1Y3Qg cnRlX2NyeXB0b2RldiAqZGV2LCB1bnNpZ25lZCBuYl9vYmpzLA0KPj4gKwkJdW5zaWduZWQgb2Jq X2NhY2hlX3NpemUsIGludCBzb2NrZXRfaWQpOw0KPj4NCj5bRmlvbmFdIHNlc3Npb24gcG9vbHMg YXJlIG5vdCBjcmVhdGVkIG5vdyBwZXIgZGV2aWNlIHNvIHRoaXMgaXMgbmV2ZXIgY2FsbGVkIGZv ciBzeW0gYW5kDQo+c2hvdWxkIGJlIGRlcHJlY2F0ZWQuIFNvIG5vIG5lZWQgdG8gYWRkIGZvciBh c3ltDQoNCltTaGFsbHldIE9rDQoNCj4NCi8vc25pcA0KDQo+PiArCWNyeXB0b2Rldl9zeW1fZ2V0 X3Nlc3Npb25fcHJpdmF0ZV9zaXplX3Qgc3ltX3Nlc3Npb25fZ2V0X3NpemU7DQo+PiArCS8qKjwg UmV0dXJuIHByaXZhdGUgc2l6ZSBmb3Igc3ltbWV0cmljIGNyeXB0by4gKi8NCj4+ICsJY3J5cHRv ZGV2X3N5bV9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCBhc3ltX3Nlc3Npb25fZ2V0X3NpemU7 DQo+PiArCS8qKjwgUmV0dXJuIHByaXZhdGUgc2l6ZSBmb3IgYXN5bW1ldHJpYyBjcnlwdG8uICov DQo+PiAgCWNyeXB0b2Rldl9zeW1fY29uZmlndXJlX3Nlc3Npb25fdCBzZXNzaW9uX2NvbmZpZ3Vy ZTsNCj4+ICAJLyoqPCBDb25maWd1cmUgYSBDcnlwdG8gc2Vzc2lvbi4gKi8NCj5bRmlvbmFdIFRo aXMgc2hvdWxkIHJlYWxseSBiZSByZW5hbWVkIHN5bV9zZXNzaW9uX2NvbmZpZ3VyZSwgc2FtZSBm b3Igc2Vzc2lvbl9jbGVhciwNCj5xcF9hdHRhY2hfc2Vzc2lvbiBhbmQgcXBfZGV0YWNoX3Nlc3Np b24NCj4NCg0KW1NoYWxseV0gSSB0aG91Z2h0IHRvIGtlZXAgaXQgYmFja3dhcmQgY29tcGF0aWJs ZSBmb3Igbm93LiBJIHRoaW5rIHdlIGNhbiB0YWtlIHRoaXMgY2hhbmdlIGxhdGVyIGFzIGl0IG5l ZWQgYW5ub3VuY2VtZW50IGZpcnN0DQoNCj4+ICsJY3J5cHRvZGV2X2FzeW1fY29uZmlndXJlX3Nl c3Npb25fdCBhc3ltX3Nlc3Npb25fY29uZmlndXJlOw0KPj4gKwkvKio8IENvbmZpZ3VyZSBhc3lt bWV0cmljIENyeXB0byBzZXNzaW9uLiAqLw0KDQovL3NuaXAgDQoNCj4+ICsNCj4+ICtFWFBFUklN RU5UQUwgew0KPj4gKwlnbG9iYWw6DQo+PiArDQo+W0Zpb25hXSB0aGUgaW1wbGVtZW50YXRpb24g b2YgYWxsIHRoZXNlIEFQSXMgYWxzbyBuZWVkcyB0aGUgX2V4cGVyaW1lbnRhbCB0YWcuDQo+DQoN CltTaGFsbHldIEdvdCB0aGF0Lg0KDQo+PiArCXJ0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmlsaXR5 X2dldDsNCj4+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX2NhcGFiaWxpdHlfbW9kbGVuOw0KPj4gKwly dGVfY3J5cHRvZGV2X2FzeW1fcXVldWVfcGFpcl9jb3VudDsNCj4+ICsJcnRlX2NyeXB0b2Rldl9h c3ltX3Nlc3Npb25fY3JlYXRlOw0KPj4gKwlydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jbGVh cjsNCj4+ICsJcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25fZnJlZTsNCj4+ICsJcnRlX2NyeXB0 b2Rldl9hc3ltX3Nlc3Npb25faW5pdDsNCj4+ICsJcnRlX2NyeXB0b2Rldl9nZXRfYXN5bV9zZXNz aW9uX3ByaXZhdGVfc2l6ZTsNCj4+ICsJcnRlX2NyeXB0b2Rldl9nZXRfc3ltX3Nlc3Npb25fcHJp dmF0ZV9zaXplOw0KPj4gKwlydGVfY3J5cHRvZGV2X2dldF94Zm9ybV9hbGdvX2VudW07DQo+PiAr CXJ0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9hdHRhY2hfYXN5bV9zZXNzaW9uOw0KPj4gKwlydGVf Y3J5cHRvZGV2X3F1ZXVlX3BhaXJfZGV0YWNoX2FzeW1fc2Vzc2lvbjsNCj4+ICsJcnRlX2NyeXB0 b2Rldl9zeW1fcXVldWVfcGFpcl9jb3VudDsNCj4+ICsJcnRlX2NyeXB0b19hc3ltX3hmb3JtX3N0 cmluZ3M7DQo+PiArCXJ0ZV9jcnlwdG9fYXN5bV9vcGVyYXRpb25fc3RyaW5nczsNCj4+ICsNCj4+ ICt9Ow0KPj4gLS0NCj4+IDEuOS4xDQoNClRoYW5rcw0KU2hhbGx5DQoNCg==