From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 9824F1B2F2 for ; Thu, 15 Feb 2018 12:46:31 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Feb 2018 03:46:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,517,1511856000"; d="scan'208";a="204443948" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by fmsmga006.fm.intel.com with ESMTP; 15 Feb 2018 03:46:28 -0800 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.188]) by IRSMSX153.ger.corp.intel.com ([169.254.9.213]) with mapi id 14.03.0319.002; Thu, 15 Feb 2018 11:46:26 +0000 From: "Trahe, Fiona" To: "Verma, Shally" , "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Murthy, Nidadavolu" , "Sahu, Sunila" , "Gupta, Ashish" , "Doherty, Declan" , "Keating, Brian A" , "Griffin, John" CC: "De Lara Guarch, Pablo" , "Trahe, Fiona" Thread-Topic: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto Thread-Index: AQHTlDBfXZBgpUvRIEKp4vWzYT7c5qOaq6DggApo3YCAAGCMgA== Date: Thu, 15 Feb 2018 11:46:25 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B4358931F083@IRSMSX101.ger.corp.intel.com> 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: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMTU4MDFiYzAtZDcxNy00Y2UzLWI4MTktMGU5OTVmOTQxYmQ2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6InpjTW9nV2lHK00ybXBOUFF4a2JUZnFHZkFhZUZVUm5URENOYW5hbHNPREU9In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 11:46:32 -0000 SGkgU2hhbGx5LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFZlcm1h LCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gU2VudDogVGh1cnNk YXksIEZlYnJ1YXJ5IDE1LCAyMDE4IDU6MzMgQU0NCj4gVG86IFRyYWhlLCBGaW9uYSA8ZmlvbmEu dHJhaGVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQN Cj4gPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IE11cnRoeSwgTmlkYWRhdm9s dSA8TmlkYWRhdm9sdS5NdXJ0aHlAY2F2aXVtLmNvbT47DQo+IFNhaHUsIFN1bmlsYSA8U3VuaWxh LlNhaHVAY2F2aXVtLmNvbT47IEd1cHRhLCBBc2hpc2ggPEFzaGlzaC5HdXB0YUBjYXZpdW0uY29t PjsgRG9oZXJ0eSwgRGVjbGFuDQo+IDxkZWNsYW4uZG9oZXJ0eUBpbnRlbC5jb20+OyBLZWF0aW5n LCBCcmlhbiBBIDxicmlhbi5hLmtlYXRpbmdAaW50ZWwuY29tPjsgR3JpZmZpbiwgSm9obg0KPiA8 am9obi5ncmlmZmluQGludGVsLmNvbT4NCj4gQ2M6IERlIExhcmEgR3VhcmNoLCBQYWJsbyA8cGFi bG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBb UkZDIHYxIDEvMV0gbGliL2NyeXB0b2RldjogYWRkIHN1cHBvcnQgb2YgYXN5bW1ldHJpYyBjcnlw dG8NCj4gDQo+IEhJIEZpb25hDQo+IA0KPiBUaGFua3MgZm9yIHlvdXIgZmVlZGJhY2suIFJlc3Bv bnNlIGJlbG93Lg0KPiANCj4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID5Gcm9tOiBU cmFoZSwgRmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRlbC5jb21dDQo+ID5TZW50OiAwOSBG ZWJydWFyeSAyMDE4IDIzOjQzDQo+ID5UbzogZGV2QGRwZGsub3JnOyBBdGhyZXlhLCBOYXJheWFu YSBQcmFzYWQgPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IE11cnRoeSwNCj4g TmlkYWRhdm9sdQ0KPiA+PE5pZGFkYXZvbHUuTXVydGh5QGNhdml1bS5jb20+OyBTYWh1LCBTdW5p bGEgPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+OyBHdXB0YSwgQXNoaXNoDQo+IDxBc2hpc2guR3Vw dGFAY2F2aXVtLmNvbT47IFZlcm1hLA0KPiA+U2hhbGx5IDxTaGFsbHkuVmVybWFAY2F2aXVtLmNv bT47IERvaGVydHksIERlY2xhbiA8ZGVjbGFuLmRvaGVydHlAaW50ZWwuY29tPjsgS2VhdGluZywg QnJpYW4gQQ0KPiA8YnJpYW4uYS5rZWF0aW5nQGludGVsLmNvbT47DQo+ID5HcmlmZmluLCBKb2hu IDxqb2huLmdyaWZmaW5AaW50ZWwuY29tPg0KPiA+Q2M6IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJh aGVAaW50ZWwuY29tPjsgRGUgTGFyYSBHdWFyY2gsIFBhYmxvIDxwYWJsby5kZS5sYXJhLmd1YXJj aEBpbnRlbC5jb20+DQo+ID5TdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUkZDIHYxIDEvMV0gbGli L2NyeXB0b2RldjogYWRkIHN1cHBvcnQgb2YgYXN5bW1ldHJpYyBjcnlwdG8NCj4gPg0KPiA+SGkg U2hhbGx5LA0KPiA+Q29tbWVudHMgYmVsb3cuDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4gRnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9u IEJlaGFsZiBPZiBTaGFsbHkgVmVybWENCj4gPj4gU2VudDogVHVlc2RheSwgSmFudWFyeSAyMywg MjAxOCA5OjU0IEFNDQo+ID4+IFRvOiBEb2hlcnR5LCBEZWNsYW4gPGRlY2xhbi5kb2hlcnR5QGlu dGVsLmNvbT4NCj4gPj4gQ2M6IGRldkBkcGRrLm9yZzsgcGF0aHJleWFAY2F2aXVtbmV0d29ya3Mu Y29tOyBubXVydGh5QGNhdml1bW5ldHdvcmtzLmNvbTsNCj4gPj4gc3NhaHVAY2F2aXVtbmV0d29y a3MuY29tOyBhZ3VwdGFAY2F2aXVtbmV0d29ya3MuY29tOyBTaGFsbHkgVmVybWENCj4gPj4gPHN2 ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+ID4+IFN1YmplY3Q6IFtkcGRrLWRldl0gW1JGQyB2 MSAxLzFdIGxpYi9jcnlwdG9kZXY6IGFkZCBzdXBwb3J0IG9mIGFzeW1tZXRyaWMgY3J5cHRvDQo+ ID4+DQo+ID4+IEZyb206IFNoYWxseSBWZXJtYSA8c3Zlcm1hQGNhdml1bW5ldHdvcmtzLmNvbT4N Cj4gPj4NCj4gPj4gQWRkIHN1cHBvcnQgZm9yIGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbnMg aW4gRFBESyBsaWIgY3J5cHRvZGV2DQo+ID4+DQo+ID4+IEtleSBmZWF0dXJlIGluY2x1ZGU6DQo+ ID4+IC0gT25seSBzZXNzaW9uIGJhc2VkIGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbnMNCj4g Pj4gLSBuZXcgZ2V0IGFuZCBzZXQgQVBJcyBmb3Igc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIHNl c3Npb24gcHJpdmF0ZQ0KPiA+PiAgIGRhdGEgYW5kIG90aGVyIGluZm9ybWF0aW9ucw0KPiA+PiAt IEFQSXMgdG8gY3JlYXRlLCBjb25maWd1cmUgYW5kIGF0dGNoIHF1ZXVlIHBhaXIgdG8gYXN5bW1l dHJpYyBzZXNzaW9ucw0KPiA+PiAtIG5ldyBjYXBhYmlsaXRpZXMgaW4gc3RydWN0IGRldmljZV9p bmZvIHRvIGluZGljYXRlDQo+ID4+ICAgLS0gbnVtYmVyIG9mIGRlZGljYXRlZCBxdWV1ZSBwYWly cyBhdmFpbGFibGUgZm9yIHN5bW1ldHJpYyBhbmQNCj4gPj4gICAgICBhc3ltbWV0cmljIG9wZXJh dGlvbnMsIGlmIGFueQ0KPiA+PiAgIC0tIG51bWJlciBvZiBhc3ltbWV0cmljIHNlc3Npb25zIHBv c3NpYmxlIHBlciBxcA0KPiA+Pg0KPiA+W0Zpb25hXSBUaG91Z2ggaXQncyBwcm9iYWJseSBwcmVt YXR1cmUgdG8gaW5jbHVkZSBvbiB0aGUgQVBJIGhhdmUgeW91IGNvbnNpZGVyZWQNCj4gPnByb3Zp ZGluZyBmb3IgcHJlLWxvYWRlZCBrZXlzIGluIGZ1dHVyZSwgaS5lLiB0aGUgYWJpbGl0eSB0byB3 cmFwIGtleXMgb3IgcmVmZXIgdG8ga2V5cw0KPiA+YWxyZWFkeSBzdG9yZWQgc2VjdXJlbHkgb24g dGhlIGRldmljZSwgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gcGFzc2luZyB0aGUga2V5cyBvbiB0aGUg QVBJPw0KPiA+DQo+IFtTaGFsbHldIEN1cnJlbnQgaW50ZW50aW9uIG9mIERQREsgYXN5bSBzcGVj IGlzIHRvIGV4cG9zZSBIVyBjYXBhYmlsaXRpZXMgdG8gYXBwbGljYXRpb24gdG8gb2ZmbG9hZCB0 aGVzZQ0KPiBjb21wdXRlIGludGVuc2l2ZSBvcHMuDQo+IFRob3VnaCB5b3VyIHVzZS1jYXNlIGlz IHZlcnkgbXVjaCBhIHByYWN0aWNhbCByZXF1aXJlbWVudCAsIGJ1dCB0byBhY2hpZXZlIHRoaXMg SSBiZWxpZXZlIHdlIG5lZWQgYSBsYXllcg0KPiBhYm92ZSB0aGlzIHNwZWMgYW5kIG5lZWQgZGlm ZmVyZW50IGludGVyZmFjZXMuIFN1Y2ggYXMsIHNvbWUgcHVibGljL3NlY3VyZSBrZXkgbGlicmFy eSB3aGljaCBwcm92aWRlDQo+IGludGVyZmFjZXMgdG8gZ2VuZXJhdGUgLyBzdG9yZS8gcGVyZm9y bSBvcCB1c2luZyBhbiBvcGFxdWUga2V5IGhhbmRsZXMgd2hpY2ggaW50ZXJuYWxseSBjYW4gdXNl IERQREsNCj4gdG8gZG8gcGFydCBvZiBpdC4gRm9yIHN1Y2ggY2FzZSwgSSBlbnZpc2lvbiBkcGRr IChvciBsaWJyYXJ5IGFib3ZlKSB3aWxsIGxpa2VseSBydW4gb24gc29tZSBzZWN1cmUgcHJvY2Vz c29yLg0KPiBUaHVzLCBjdXJyZW50bHkgSSBrZXB0IHN1Y2ggdXNlLWNhc2Ugb3V0IG9mIGN1cnJl bnQgc3BlYyBzY29wZS4NCltGaW9uYV0gb2sNCg0KPiA+DQo+ID4+IFByb3Bvc2VkIGFzeW1tZXRy aWMgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGFyZToNCj4gPj4gLSByc2ENCj4gPj4gLSBkc2EN Cj4gPj4gLSBkZWZmaWUtaGVsbG1hbiBrZXkgcGFpciBnZW5lcmF0aW9uIGFuZCBzaGFyZWQga2V5 IGNvbXB1dGF0aW9uDQo+ID4+IC0gZWNkZWZmaWUtaGVsbG1hbg0KPiA+PiAtIGZ1bmRhbWVudGFs IGVsbGlwdGljIGN1cnZlIG9wZXJhdGlvbnMNCj4gPj4gLSBlbGxpcHRpYyBjdXJ2ZSBEU0ENCj4g Pj4gLSBtb2R1bGFyIGV4cG9uZW50aWF0aW9uIGFuZCBpbnZlcnNpb24NCj4gPj4NCj4gPj4gVGhp cyBwYXRjaCBwcmltYXJpbHkgZGVmaW5lcyBQTUQgb3BlcmF0aW9ucyBhbmQgZGV2aWNlIGNhcGFi aWxpdGllcw0KPiA+PiB0byBwZXJmb3JtIGFzeW1tZXRyaWMgY3J5cHRvIG9wcyBvbiBxdWV1ZSBw YWlycyBhbmQgaW50ZW5kIHRvDQo+ID4+IGludml0ZSBmZWVkYmFja3Mgb24gY3VycmVudCBwcm9w b3NhbCBzbyBhcyB0byBlbnN1cmUgaXQgZW5jb21wYXNzDQo+ID4+IGFsbCBraW5kIG9mIGNyeXB0 byBkZXZpY2VzIHdpdGggZGlmZmVyZW50IGNhcGFiaWxpdGllcyBhbmQgcXVldWUNCj4gPj4gcGFp ciBtYW5hZ2VtZW50Lg0KPiA+Pg0KPiA+PiBMaXN0IG9mIFRCRHM6DQo+ID4+IC0gQ3VycmVudGx5 LCBwYXRjaCBvbmx5IHVwZGF0ZWQgZm9yIFJTQSB4Zm9ybSBhbmQgYXNzb2NpYXRlZCBwYXJhbXMu DQo+ID4+ICAgT3RoZXIgYWxnb3JpdG1zIHRvIGJlIGFkZGVkIGluIHN1YnNlcXVlbnQgdmVyc2lv bnMuDQo+ID4+IC0gcGVyLXNlcnZpY2Ugc3RhdHMgdXBkYXRlDQo+ID4+DQo+ID4+IFNpZ25lZC1v ZmYtYnk6IFNoYWxseSBWZXJtYSA8c3Zlcm1hQGNhdml1bW5ldHdvcmtzLmNvbT4NCj4gPj4gLS0t DQo+ID4+DQo+ID4+IEl0IGlzIGRlcml2YXRpdmUgb2YgUkZDIHYyIGFzeW1tZXRyaWMgY3J5cHRv IHBhdGNoIHNlcmllcyBpbml0aWF0ZWQgYnkNCj4gPj4gVW1lc2ggS2FydGhhKG1haWx0bzp1bWVz aC5rYXJ0aGFAY2F2aXVtbmV0d29ya3MuY29tKToNCj4gPj4NCj4gPj4gIGh0dHA6Ly9kcGRrLm9y Zy9kZXYvcGF0Y2h3b3JrL3BhdGNoLzI0MjQ1Lw0KPiA+PiAgaHR0cDovL2RwZGsub3JnL2Rldi9w YXRjaHdvcmsvcGF0Y2gvMjQyNDYvDQo+ID4+ICBodHRwOi8vZHBkay5vcmcvZGV2L3BhdGNod29y ay9wYXRjaC8yNDI0Ny8NCj4gPj4NCj4gPj4gQW5kIGluY2x1c2l2ZSBvZiBhbGwgcmV2aWV3IGNv bW1lbnRzIGdpdmVuIG9uIFJGQyB2Mi4NCj4gPj4gICggU2VlIGNvbXBsZXRlIGRpc2N1c3Npb24g dGhyZWFkIGhlcmU6DQo+ID4+IGh0dHA6Ly9kZXYuZHBkay5uYXJraXZlLmNvbS95cVRGRkxIdy9k cGRrLWRldi1yZmMtc3BlY2lmaWNhdGlvbnMtZm9yLWFzeW1tZXRyaWMtY3J5cHRvLQ0KPiA+PiBh bGdvcml0aG1zI3Bvc3QxMikNCj4gPj4NCj4gPj4gU29tZSBvZiB0aGUgUkZDdjIgUmV2aWV3IGNv bW1lbnRzIHBlbmRpbmcgZm9yIGNsb3N1cmU6DQo+ID4+ID4gIiBbRmlvbmFdIFRoZSBjb3VudCBm biBpc24ndCB1c2VkIGF0IGFsbCBmb3Igc3ltIC0gcHJvYmFibHkgbm8gbmVlZCB0byBhZGQgZm9y IGFzeW0NCj4gPj4gICAgICBiZXR0ZXIgaW5zdGVhZCB0byByZW1vdmUgdGhlIHN5bSBmbi4iDQo+ ID4+DQo+ID4+ICAgICAgSXQgaXMgc3RpbGwgcHJlc2VudCBpbiBkcGRrLW5leHQtY3J5cHRvIGZv ciBzeW0sIHNvIHdoYXQgaGFzIGJlZW4gZGVjaXNpb24NCj4gPj4gICAgICBvbiBpdD8NCj4gPltG aW9uYV0gTm8gY2hhbmdlLiBUaGUgcnRlX2NyeXB0b2Rldl9vcHMgZm4gaXMgc3RpbGwgbm90IGNh bGxlZCBzbyB1c2VsZXNzIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4NCj4gPnJ0ZV9jcnlwdG9kZXZf cXVldWVfcGFpcl9jb3VudCgpIHJldHVybnMgdGhlIG51bV9xcHMgY29uZmlndXJlZCBpbg0KPiA+ cnRlX2NyeXB0b2Rldl9jb25maWd1cmUoKSwgYnV0IG5ldmVyIGNhbGxzIHRoZSBQTUQgZGV2X29w cy5xdWV1ZV9wYWlyX2NvdW50KCkuDQo+ID5TbyBjcnlwdG9kZXZfc3ltX3F1ZXVlX3BhaXJfY291 bnRfdCBzaG91bGQgYmUgZGVwcmVjYXRlZC4NCj4gPkFuZCBubyBwb2ludCBpbiBhZGRpbmcgb25l IGZvciBhc3ltLg0KPiA+DQo+IA0KPiBbU2hhbGx5XSBPaw0KPiANCj4gPj4NCj4gPj4gPiJbRmlv bmFdIGlmIGVhY2ggcXAgY2FuIGhhbmRsZSBvbmx5IGEgc3BlY2lmaWMgc2VydmljZSwgaS5lLiBh IHN1YnNldCBvZmYgdGhlIGNhcGFiaWxpdGllcw0KPiA+PiAgICAgSW5kaWNhdGVkIGJ5IHRoZSBk ZXZpY2UgY2FwYWJpbGl0eSBsaXN0LCB0aGVyZSdzIGEgbmVlZCBmb3IgYSBuZXcgQVBJIHRvIHF1 ZXJ5DQo+ID4+ICAgICB0aGUgY2FwYWJpbGl0eSBvZiBhIHFwLiINCj4gPj4NCj4gPj4gICAgIEN1 cnJlbnQgcHJvcG9zYWwgZG9lc27igJl0IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGV2aWNlIGNhcGFi aWxpdHkgYW5kIHFwIGNhcGFiaWxpdHkuDQo+ID4+ICAgICBJdCByYXRoZXIgbGVhdmUgc3VjaCBk aWZmZXJlbmNlcyBoYW5kbGluZyBpbnRlcm5hbCB0byBQTURzLiBUaHVzIG5vIGNhcGFiaWxpdHkN Cj4gPj4gICAgIG9yIEFQSSBhZGRlZCBmb3IgcXAgaW4gY3VycmVudCB2ZXJzaW9uLiBJdCBpcyBz dWJqZWN0IHRvIHJldmlzaXQgYmFzZWQgb24gcmV2aWV3DQo+ID4+ICAgICBmZWVkYmFjayBvbiBj dXJyZW50IHByb3Bvc2FsLg0KPiA+W0Zpb25hXSBUaGlzIHdvdWxkIG5vdCB3b3JrIGZvciBzb21l IGRldmljZXMsIGNvbW1lbnRzIGJlbG93Lg0KPiA+DQo+ID4+DQo+ID4+IC0gU2Vzc2lvbmxlc3Mg U3VwcG9ydC4NCj4gPj4gICAgIEN1cnJlbnQgcHJvcG9zYWwgb25seSBzdXBwb3J0IFNlc3Npb24t YmFzZWQgYmVjYXVzZToNCj4gPj4gICAgICAxLiBBbGwgb25lLXRpbWUgc2V0dXAgaS5lLiAgYWxn b3MgYW5kIGFzc29jaWF0ZWQgcGFyYW1zLCBzdWNoIGFzLCBwdWJsaWMtcHJpdmF0ZSBrZXlzDQo+ ID4+ICAgICAgICAgb3IgbW9kdWx1cyBsZW5ndGggY2FuIGJlIGRvbmUgaW4gY29udHJvbCBwYXRo IHVzaW5nIHNlc3Npb24taW5pdCBBUEkNCj4gPj4gICAgICAyLiBpdOKAmXMgYW4gZWFzaWVyIHdh eSB0byBkZWRpY2F0ZSBxcCB0byBkbyBzcGVjaWZpYyBzZXJ2aWNlICh1c2luZyBxdWV1ZV9wYWly X2F0dGFjaCgpKQ0KPiA+PiAgICAgICAgIHdoaWNoIGNhbm5vdCBiZSBjYXNlIGluIHNlc3Npb25s ZXNzDQo+ID4+ICAgICAgMy4gQ291bGRu4oCZdCBmaW5kIGFueSBzaWduaWZpY2FudCBhZHZhbnRh Z2UgZ29pbmcgc2Vzc2lvbmxlc3Mgd2F5LiBBbHNvIGV4aXN0aW5nIG1vc3Qgb2YgUE1EcyBhcmUN Cj4gPj4gc2Vzc2lvbi1iYXNlZC4NCj4gPj4NCj4gPj4gICAgIEl0IGNvdWxkIGJlIGFkZGVkIGlu IHN1YnNlcXVlbnQgdmVyc2lvbnMsIGlmIHJlcXVpcmVtZW50IGlzIGlkZW50aWZpZWQsIGJhc2Vk IG9uIHJldmlldyBjb21tZW50DQo+ID4+ICAgICBvbiB0aGlzIFJGQy4NCj4gPltGaW9uYV0gT3Vy IHByZWZlcmVuY2Ugd291bGQgYmUgZm9yIHNlc3Npb25sZXNzLCBhcyBpdCB3b3VsZCBuZWVkIGZl d2VyIEFQSSBjYWxscyAobm8NCj4gc2Vzc2lvbl9jcmVhdGUvc2Vzc2lvbl9jbGVhcikNCj4gPmFu ZCBlLmcuIERIIGFuZCBFQ0RIIHNlc3Npb25zIGFyZSBsaWtlbHkgdG8gYmUgb25seSB1c2VkIGZv ciBhIHNpbmdsZSBvcC4gSG93ZXZlciB0aGlzIGlzIG5vdCBhIGJsb2NrZXINCj4gZm9yDQo+ID50 aGlzIEFQSSwgd2UgY2FuIFBPQyBpdCBsYXRlciBhbmQgcHJvcG9zZSBhbiBleHRlbnNpb24gdG8g dGhlIEFQSSBpZiBpdCBnaXZlcyBhIHBlcmZvcm1hbmNlDQo+IGltcHJvdmVtZW50Lg0KPiA+DQo+ IFtTaGFsbHldIFlvdSBtZWFuIHlvdSByZWNvbW1lbmQgdG8gaGF2ZSBzZXNzaW9uLWxlc3Mgc3Vw cG9ydCBhbG9uZyB3aXRoIHNlc3Npb24tYmFzZWQ/DQpbRmlvbmFdIFllcy4gQnV0IGFzIHN0YXRl ZCwgaXQncyBvayB0byBzdGFydCB3aXRob3V0IGl0IGFuZCBhZGQgbGF0ZXIuDQoNCg0KPiA+Pg0K PiA+PiBTdW1tYXJ5DQo+ID4+IC0tLS0tLS0NCj4gPj4NCj4gPj4gVGhpcyBzZWN0aW9uIHByb3Zp ZGVzIGFuIG92ZXJ2aWV3IG9mIGtleSBmZWF0dXJlIGVuYWJsZWQgaW4gY3VycmVudCBzcGVjaWZp Y2F0aW9uLg0KPiA+PiBJdCBjb21wcmlzZSBvZiBrZXkgZGVzaWduIGNoYWxsZW5nZXMgYXMgaGF2 ZSBiZWVuIGlkZW50aWZpZWQgb24gUkZDdjIgYW5kDQo+ID4+IHN1bW1hcnkgZGVzY3JpcHRpb24g b2YgbmV3IGludGVyZmFjZXMgYW5kIGRlZmluaXRpb25zIGFkZGVkIHRvIGhhbmRsZSBzYW1lLg0K PiA+Pg0KPiA+PiBEZXNjcmlwdGlvbg0KPiA+PiAtLS0tLS0tLS0tLQ0KPiA+Pg0KPiA+PiBUaGlz IEFQSSBzZXQgYXNzdW1lcyB0aGF0IHRoZSBtYXhfbmJfcXVldWVfcGFpcnMgb24gYQ0KPiA+PiBk ZXZpY2UgY2FuIGJlIGFsbG9jYXRlZCB0byBhbnkgbWl4IG9mIHN5bSBvciBhc3ltLiBTb21lIGRl dmljZXMNCj4gPj4gbWF5IGhhdmUgYSBmaXhlZCBtYXggcGVyIHNlcnZpY2UuIFRodXMsIHJ0ZV9j cnlwdG9kZXZfaW5mbw0KPiA+PiBpcyB1cGRhdGVkIHdpdGggbWF4X3N5bV9uYl9xdWV1ZXMgYW5k IG1heF9hc3ltX25iX3F1ZXVlcyB3aXRoIHJ1bGU6DQo+ID4+DQo+ID4+IG1heF9uYl9xdWV1ZV9w YWlyID0gbWF4X25iX3N5bV9xcCArIG1heF9uYl9hc3ltX3FwLg0KPiA+Pg0KPiA+PiBJZiBkZXZp Y2UgaGFzIG5vIHJlc3RyaWN0aW9ucyBvbiBxcCB0byBiZSB1c2VkIHBlciBzZXJ2aWNlLCBzdWNo IFBNRHMgY2FuIGxlYXZlDQo+ID4+IG1heF9uYl9zeW1fcXAgPSBtYXhfbmJfYXN5bV9xcCA9IDAu IEluIHN1Y2ggY2FzZSwgYXBwbGljYXRpb24gY2FuIHNldHVwIGFueSBvZg0KPiA+PiB0aGUgc2Vy dmljZSB1cHRvIGxpbWl0IGRlZmluZWQgYnkgbWF4X25iX3F1ZXVlX3BhaXIuDQo+ID5bRmlvbmFd IFRoaXMgc2VlbXMgYXdrd2FyZCBpZiBhIGdlbnVpbmUgMCAgZS5nLiBBbiBhcHBsIHdhbnRzIHRv IHNldCB1cCBhIHN5bSBxcCwgYW5kDQo+ID5zZWVzIHRoYXQgbWF4X25iX3F1ZXVlX3BhaXI9NC4g Q2FuJ3QgdHJ1c3QgdGhpcyAtIG5lZWRzIHRvIGxvb2sgZGVlcGVyLiBTZWVzDQo+ID5tYXhfbmJf c3ltX3FwPTAuIERvZXNuJ3Qga25vdyBpZiB0aGF0IG1lYW5zIGl0IGNhbiBzZXQgdXAgNCBzeW0g cXBzIG9yIG5vIHFwcw0KPiA+dW50aWwgaXQgYWxzbyBjaGVja3MgbWF4X25iX2FzeW1fcXAuIElm PTQgdGhlbiBpdCBjYW4ndCBzZXQgdXAgYW55IHN5bSBxcCwgaWY9MCBpdCBjYW4gc2V0IHVwIDQu DQo+ID5Xb3VsZCBpdCBiZSBiZXR0ZXIgaWYNCj4gPgltYXhfbmJfcXVldWVfcGFpciA9IG1heCht YXhfbmJfc3ltX3FwLCBtYXhfbmJfYXN5bV9xcCkuDQo+ID4JbWF4X25iX3N5bV9xcCA9IDAuLm1h eF9uYl9xdWV1ZV9wYWlyDQo+ID4JbWF4X25iX2FzeW1fcXAgPSAwLi5tYXhfbmJfcXVldWVfcGFp cg0KPiA+DQo+IA0KPiBbU2hhbGx5XSBPay4gSSBjYW4gY2hhbmdlIGRlZmluaXRpb24gdG8gcmVw bGFjZSAwIGJ5IG1heCBudW0gZm9yIG5vLWxpbWl0IGNhc2Ugd2l0aCBzbGlnaHQgbW9kaWZpY2F0 aW9uICB0bw0KPiB0aGUgY29uZGl0aW9uIGkuZS4NCj4gbWF4X25iX3F1ZXVlX3BhaXIgPj0gIG1h eChtYXhfbmJfc3ltX3FwLCBtYXhfbmJfYXN5bV9xcCkNCj4gDQo+IGJlY2F1c2UgZGV2aWNlIGNh biBoYXZlIGRpc3RyaWJ1dGlvbiBvZiAobWF4X25iX3F1ZXVlX3BhaXIsIG1heF9uYl9zeW1fcXAs IG1heF9uYl9hc3ltX3FwKSBhcw0KPiAoNCw0LDQpIG9yICg0LDMsMSkNCj4gd2hlcmUgdG90YWwg bnVtYmVyIG9mIHFwIHNldHVwIGJ5IGFwcGxpY2F0aW9uIGNhbm5vdCBleGNlZWQgbWF4X25iX3F1 ZXVlX3BhaXJzLg0KPiANCj4gPj4gSGVyZSwgbWF4X25iX3N5bV9xcCBhbmQgbWF4X25iX2FzeW1f cXAsIGlmIG5vbi16ZXJvLCBqdXN0IGRlZmluZSBsaW1pdCBvbiBxcCB3aGljaCBhcmUNCj4gPj4g YXZhaWxhYmxlIGZvciBlYWNoIHNlcnZpY2UgYW5kICphcmUgbm90KiBpZHMgdG8gYmUgdXNlZCBk dXJpbmcgcXAgc2V0dXAgYW5kIGVucXVldWUgaS5lLg0KPiA+PiBpZiBkZXZpY2Ugc3VwcG9ydHMg Ym90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMgd2l0aCBuIHFwLCB0aGVuIGFueSBvZiB0aGVt DQo+ID4+IGNhbiBiZSBjb25maWd1cmVkIGZvciBzeW1tZXRyaWMgb3IgYXN5bW1ldHJpYyBzdWJq ZWN0IHRvIGxpbWl0IGRlZmluZWQgYnkNCj4gPj4gbWF4X25iX3N5bV9xcCBhbmQgbWF4X25iX2Fz eW1fcXAuIEZvciBleGFtcGxlLA0KPiA+PiBpZiBkZXZpY2UgaGFzIDYgcXVldWVzIGFuZCA1IGZv ciBzeW1tZXRyaWMgYW5kIDEgZm9yIGFzeW1tZXRyaWMgdGhhdCBpbXBseQ0KPiA+PiBhcHBsaWNh dGlvbiBjYW4gc2V0dXAgb25seSAxIG91dCBvZiBhbnkgNiBxcCBmb3IgYXN5bW1ldHJpYyBhbmQg cmVzdCBmb3INCj4gPj4gc3ltbWV0cmljLg0KPiA+Pg0KPiA+PiBBZGRpdGlvbmFsbHksIGFwcGxp Y2F0aW9uIGNhbiBkZWRpY2F0ZSBxcCB0byBwZXJmb3JtIHNwZWNpZmljIHNlcnZpY2UgdmlhIG9w dGlvbmFsDQo+ID4+IHF1ZXVlX3BhaXJfYXR0YWNoX3N5bS9hc3ltX3Nlc3Npb24oKSBBUEkuDQo+ ID5bRmlvbmFdIFRoaXMgaXMgdG9vIGxhdGUgLSBzb21lIGRldmljZXMgaGF2ZSBxcHMgd2hpY2gg bmVlZCB0byBrbm93IGF0IHNldHVwIHdoaWNoDQo+ID5zZXJ2aWNlIHRoZXknbGwgYmUgdXNlZCBm b3IsIGFzIHRoZXkgcmVzZXJ2ZSByZXNvdXJjZXMgYmFzZWQgb24gdGhlIHNlcnZpY2UuDQo+ID5l LmcuIGEgZGV2aWNlIHJlcG9ydHMgaW4gaW5mbyB0aGF0IGl0IGNhbiBzdXBwb3J0IHFwcyhtYXgg NCwgbWF4X3N5bSAyLCBtYXggYXN5bSAyKQ0KPiA+QW4gYXBwbGljYXRpb24ganVzdCB3YW50cyB0 byB1c2UgMSBzeW0gcXAgYW5kIDEgYXN5bSwgc28gY29uZmlndXJlcyBkZXZpY2Ugd2l0aA0KPiA+ cXBzKG1heCAyLCBtYXhfc3ltIDEsIG1heCBhc3ltIDEpDQo+ID5Ob3cgYXBwbCBjYWxscyBxcF9z ZXR1cCBmb3IgcXAgaW5kZXggMC4gV2FudHMgdG8gc3RhcnQgd2l0aCBydW5uaW5nIGFzeW1tZXRy aWMNCj4gPnNlcnZpY2UgYW5kIHdpbGwgc2V0IHVwIHRoZSBzeW1tZXRyaWMgbGF0ZXIsIG1heWJl IGluIGEgc2VwYXJhdGUgdGhyZWFkLg0KPiA+T3VyIGRldmljZXMgbmVlZCB0byBrbm93IGF0IHNl dHVwIHRpbWUgd2hpY2ggc2VydmljZSB3aWxsIGJlIHVzZWQgb24gdGhlIHFwLg0KPiA+U28gaGF2 ZW4ndCBiZWVuIGdpdmVuIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzZXR1cCB0aGUgcXAuDQo+ID4N Cj4gPkV2ZW4gaWYgdGhlIFBNRCBjb3VsZCBzZXQgdXAgc2VydmljZS1hZ25vc3RpYyBxcHMgYW5k IGp1c3QgbWFwIGxhdGVyLCB5b3UNCj4gPnN1Z2dlc3QgdGhlIHFwX2F0dGFjaF9zeW0vYXN5bV9z ZXNzaW9uKCkgd291bGQgYmUgb3B0aW9uYWwuIEhvdyBjb3VsZCB0aGUgYXBwbA0KPiA+bWFrZSB0 aGUgZGVjaXNpb24gd2hldGhlciB0byBjYWxsIGl0IG9yIG5vdCBpbiBhYm92ZSBjYXNlPyBJdCBu ZWVkcyB0byBrbm93IHdoZXRoZXINCj4gPnRoZSBjcmVhdGVkIHFwIGlzIGFnbm9zdGljIG9yIG5v dCwgc28gYSBjYXBhYmlsaXR5IG11c3QgYmUgcmVwb3J0ZWQgYnkgdGhlIFBNRC4NCj4gPk9SIHRo ZSBBUEkgc2hvdWxkIG5vdCBiZSBvcHRpb25hbCwgbXVzdCBiZSBjYWxsZWQgZm9yIGV2ZXJ5IHNl c3Npb24uDQo+ID5CdXQgdGhhdCdzIHBlcmYgaW1wYWN0aW5nIGFuZCBub3QgaGVscGZ1bCBpZiBh IGRldmljZSBjb3VsZCBzdXBwb3J0IHNlcnZpY2UtYWdub3N0aWMgcXBzLg0KPiA+DQo+ID5JIGRv bid0IGhhdmUgYSBzb2x1dGlvbiBmb3Igc2VydmljZS1hZ25vc3RpYyBxcHMuIEZvciBvdXIgZGV2 aWNlcyB0aGF0J3Mgbm90IG5lY2Vzc2FyeS4NCj4gPklzIGl0IGxpa2VseSB0aGF0IGFueW9uZSB3 YW50cyB0byBzZXQgdXAgYSBxcCB0byBwcm9jZXNzIGJvdGggc3ltIGFuZCBhc3ltIG9wcz8NCj4g PklzIGl0IHN1ZmZpY2llbnQgdG8gYWNjb21tb2RhdGUgcXBzIHdoaWNoIGNhbiBzdXBwb3J0IGVp dGhlcg0KPiA+c2VydmljZSwgYnV0IG9uZSBtdXN0IGJlIHBpY2tlZCBhdCBzZXR1cCBhZnRlciB3 aGljaCB0aGUgcXAgc3VwcG9ydHMgb25seSB0aGF0IHNlcnZpY2U/DQo+ID5Ib3cgYWJvdXQgdGhl IGZvbGxvd2luZyAtIDoNCj4gPiAtIGRldmljZSByZXBvcnRzIGluIGluZm8gcXBzKG1heCwgbWF4 X3N5bSwgbWF4IGFzeW0pIHdoZXJlDQo+ID4JbWF4ID0gbWF4KG1heF9zeW0sIG1heF9hc3ltKS4N Cj4gPgltYXhfc3ltID0gMC4ubWF4DQo+ID4JbWF4X2FzeW0gPSAwLi5tYXgNCj4gPglTbyBpZiBh IGRldmljZSByZXBvcnRzIDQsMiwyLCBpdCBoYXMgNCB0b3RhbCwgMiBjYW4gYmUgc2V0dXAgZm9y IHN5bSwgMiBmb3IgYXN5bQ0KPiA+CU9yIGlmIGl0IHJlcG9ydHMgNCw0LDQsIGFsbCA0IG9mIHRo ZW0gY2FuIGJlIHNldHVwIGFzIHN5bSBvciBhbGwgNCBhcw0KPiA+CWFzeW0gb3IgYSBtaXgsIGJ1 dCB0b3RhbCBzZXR1cCBjYW4ndCBiZSBtb3JlIHRoYW4gNC4NCj4gPiAtIGFwcGwgY29uZmlndXJl cyBxcHMobWF4LCBtYXhfc3ltLCBtYXhfYXN5bSkNCj4gPglJZiBpdCBzcGVjaWZpZXMgNCwxLDMg aXQgd2FudHMgdG8gdXNlIDQgaW4gdG90YWwsIDEgZm9yIHN5bSwgMyBmb3IgYXN5bS4NCj4gPglJ ZiBpdCBzcGVjaWZpZXMgMSwxLDAgaXQgd2FudHMgdG8gdXNlIDEgaW4gdG90YWwsIDEgZm9yIHN5 bSwgMCBmb3IgYXN5bS4NCj4gPglUaGUgbnVtYmVycyBpdCBjb25maWd1cmVzIG11c3QgYmUgPD0g dGhvc2UgcmVwb3J0ZWQgaW4gaW5mby4NCj4gPiAtIGFwcGwgY2FsbHMgcXBfc2V0dXAoZGV2LCBx cCwgc2VydmljZSkgd2hlcmUgc2VydmljZSA9IHN5bSBvciBhc3ltDQo+ID4JcXAgaW5kZXggbXVz dCBiZSBiZXR3ZWVuIDAuLm1heC0xDQo+ID4JVGhlIFBNRCBtYXBzIHRoYXQgaW5kZXggdG8gYW4g aW50ZXJuYWwgcXAgd2hpY2ggY2FuIHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBzZXJ2aWNlLg0KPiA+ CUlmIHFwX3NldHVwIGlzIGNhbGxlZCBvbiBhbiBpbmRleCBhbmQgdGhlIG1heCBjb25maWd1cmVk IHFwcyBoYXZlIGFscmVhZHkNCj4gPgliZWVuIHNldHVwIGZvciB0aGF0IHNlcnZpY2UgdGhlbiB0 aGUgc2V0dXAgZmFpbHMuDQo+ID5JbiBjYXNlIHRoZSBhcHBsIGZvcmdldHMgd2hpY2ggcXAgaXQg c2V0IHVwIGZvciB3aGljaCBzZXJ2aWNlLCBJIHRoaW5rIGl0IHdvdWxkIGJlIG5lY2Vzc2FyeSB0 byBhZGQgYSBuZXcNCj4gQVBJDQo+ID4JcnRlX2NyeXB0b2Rldl9xcF9pbmZvKCkgd2hpY2ggd291 bGQgcmV0dXJuIHdoYXQgc2VydmljZSBpcyBjb25maWd1cmVkIG9uIHRoZSBxcA0KPiA+DQo+ID5J ZiBpdCdzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IHNlcnZpY2UtYWdub3N0aWMgcXBzLCB0aGVuIG9u ZSB3YXkgd291bGQgYmUgdG8gc3BlY2lmeSBhIHRoaXJkIHNlcnZpY2UgYWJvdmUNCj4gYXMNCj4g PiAtIHN5bSthc3ltLg0KPiA+QW5kIGhhdmUgZGV2aWNlcyByZXBvcnQgbWF4X3N5bV9hc3ltX3Fw cz8NCj4gPg0KPiA+SXQncyBkaWZmaWN1bHQgdG8gZmluZCBhIHNvbHV0aW9uIGZvciB0aGlzIHdp dGhvdXQgYnJlYWtpbmcgdGhlIGN1cnJlbnQgQVBJIC0gc2VlIHNpbXBsZXINCj4gPmFsdGVybmF0 aXZlIGJlbG93Lg0KPiA+DQo+ID4+IEV4Y2VwdCB0aGUgb25lcyBtZW50aW9uZWQgYWJvdmUsIHNw ZWNpZmljYXRpb24gZG9lc24ndCBkZWZpbmUgYW55IHJlc3RyaWN0aW9ucyBvbg0KPiA+PiBlbnF1 ZXVlL2RlcXVldWUgQVBJIGZvciBkaWZmZXJlbnQgY3J5cHRvIHNlcnZpY2VzLiBBcHBsaWNhdGlv biBjYW4gZW5xdWV1ZSBib3RoIHN5bW1ldHJpYw0KPiA+PiBhbmQgYXN5bW1ldHJpYyBvcGVyYXRp b25zIHRvIHNhbWUgZGV2aWNlIGFuZCBxcCBpZiBkZXZpY2UgaW5mbyBpbmRpY2F0ZSBzdXBwb3J0 IG9mIGJvdGgNCj4gPj4gc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIGFuZCBxcCBpcyBub3QgZGVk aWNhdGVkIHRvIGFueS4gSG93ZXZlciBpbiBwcmFjdGljZSwgaXQgY291bGQNCj4gPj4gcmVzdWx0 IGluIGhlYWQtb2YtbGluZSBibG9ja2luZyBkdWUgdG8gdGhlIGFzeW0gb3BzIHRha2luZyBsb25n ZXIgdGhhbiB0aGUgc3ltbWV0cmljIG9wcy4NCj4gPj4NCj4gPj4gU29tZSBIVyBhY2NlbGVyYXRv cnMgYXZvaWQgdGhpcyBpc3N1ZSBieSBzdXBwb3J0aW5nIHN5bSBhbmQgYXN5bSBvcHMNCj4gPj4g b24gZGlmZmVyZW50IHFwcyBvbiB0aGUgc2FtZSBkZXZpY2UuICBTdWNoIGRldmljZXMgY2FuIHNl dCBtYXhfbmJfc3ltX3FwIGFuZA0KPiA+PiBtYXhfbmJfYXN5bV9xcCB0byBudW1iZXIgb2YgcXVl dWVzIGF2YWlsYWJsZSBmb3IgZWFjaCByZXNwZWN0aXZlIHNlcnZpY2UuDQo+ID4+DQo+ID4+IFRo aXMgbWF5IGdpdmUgcHJvYmxlbSBpbiBpbmRleGluZyBvbiBlbnF1ZXVlL2RlcXVldWUgaS5lLg0K PiA+PiBpZiAyIGFzeW0gcXBzIGFuZCAyIHN5bSBxcHMgYXJlIGNyZWF0ZWQgb24gdGhlIHNhbWUg ZGV2aWNlLA0KPiA+PiB0aGUgcXVldWVfcGFpcl9pZHMgYXJlIGR1cGxpY2F0ZWQuIFRvIGhhbmRs ZSBzdWNoIHNjZW5hcmlvLA0KPiA+PiAyIGFsdGVybmF0aXZlcyBhcmUgcHJvcG9zZWQgZm9yIFBN RCBkZXNpZ246DQo+ID4+DQo+ID4+IDEuIEFsbG93IGFsbCBxcCB0byBpbnB1dCBhbnkgb3BlcmF0 aW9uIHR5cGUgdmlydHVhbGx5LiBTYXksDQo+ID4+DQo+ID4+ICAgICBDb25zaWRlciBkZXZpY2Ug d2l0aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMgY2FwYWJpbGl0eSBoYXZpbmcNCj4gPj4gICAg IG1heF9uYl9xdWV1ZV9wYWlyIGFzIDYsIHRoZW4gYnkgZGVzaWduLCBhbGwgNiBhcmUgY2FwYWJs ZSB0byBpbnB1dA0KPiA+PiAgICAgYm90aCBvcCB0eXBlcy4NCj4gPj4NCj4gPj4gICAgIElmIFBN RCB1c2VzIGZpeGVkIHNldCBvZiBxcCwgdGhlbiBpbnRlcm5hbGx5LCBjYW4gbWFwIHFwIGlkIHRv DQo+ID4+ICAgICBhY3R1YWwgcGh5c2ljYWwgcXAgaWQgdG8gYmUgdXNlZCBhY2NvcmRpbmcgdG8g c2Vzc2lvbi9vcCB0eXBlLg0KPiA+PiAgICAgSWYgc3VjaCBtYXBwaW5nIGlzIGRvbmUgb24gZGF0 YSBwYXRoLCBtYXkgaW1wYWN0IHBlcmZvcm1hbmNlIG9mIFBNRHMuDQo+ID4+ICAgICBUaHVzLCB0 byBoYW5kbGUgc3VjaCBtYXBwaW5nIG91dCBvZiBkYXRhIHBhdGgsIGxpYnJhcnkgcHJvdmlkZXMg YW4gQVBJDQo+ID4+ICAgICBxdWV1ZV9wYWlyX2F0dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgd2hp Y2ggZmFjaWxpdGF0ZSBhcHBsaWNhdGlvbiB0bw0KPiA+PiAgICAgZGVkaWNhdGUgcXAgaWQgdG8g cGVyZm9ybSBzcGVjaWZpYyAoc3ltL2FzeW0pIHNlcnZpY2UgaW4gY29udHJvbCBwYXRoDQo+ID4+ ICAgICBhbmQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgMXN0IGNhbGwgdG8gZW5xdWV1ZV9idXJz dCgpLg0KPiA+PiAgICAgSGVyZSBQTUQgY2FuIGJpbmQgYXBwIHByb3ZpZGVkIGxvZ2ljYWwgcXAg aWQgdG8gYWN0dWFsIHBoeXNpY2FsIHFwIGlkIHRvIHVzZQ0KPiA+PiAgICAgZGVwZW5kaW5nIG9u IHNlc3Npb24gdHlwZSAsIE9SIGFsdGVybmF0aXZlbHkNCj4gPj4NCj4gPj4gMi4gUE1EcyBjYW4g c3BsaXQgaXQgaW50byB0d28gUE1Ecywgb25lIHdpdGggc3ltbWV0cmljIE9OTFkgY2FwYWJpbGl0 eSBhbmQgb3RoZXINCj4gPj4gICAgIHdpdGggYXN5bW1ldHJpYyBPTkxZIGNhcGFiaWxpdHkgKGFs c28gcHJvcG9zZWQgYnkgRmlvbmEgaW4gUkZDdjIpLg0KPiA+PiAgICAgVGhpcyBtYXkgcmVxdWly ZSBzb21lICBjaGFuZ2VzIHRvIEVBTCB0byBmYWNpbGl0YXRlIHBjaSBkZXZpY2Ugc2hhcmluZyBi ZXR3ZWVuDQo+ID4+ICAgICBQTURzLCBlbmFibGluZyBzZXBhcmF0aW9uIG9mIHN5bSBhbmQgIGFz eW0gc2VydmljZXMgb250byBkaWZmZXJlbnQgUE1Ecy4NCj4gPj4gICAgIEFzIHBlciBSRkN2MiBm ZWVkYmFjaywgSW50ZWwgIHByb3Bvc2VkIHRvIHN1Ym1pdCBhIHBhdGNoIHRvICBlbmFibGUgdGhp cy4NCj4gPltGaW9uYV0gVGhlIGVhbCBjaGFuZ2VzIHdlcmUgcHJvYmxlbWF0aWMsIGFuZCBmZWVk YmFjayBmcm9tIHRoZSBEdWJsaW4gdXNlcnNwYWNlDQo+ID5ldmVudCBsYXN0IFNlcHRlbWJlciB3 YXMgdGhhdCBzZXZlcmFsIG90aGVycyBoYXZlIHRyaWVkIHNpbWlsYXIgYnV0IHJldmVydGVkIHRv IHJlc29sdmluZw0KPiA+dGhlIHByb2JsZW0gd2l0aGluIHRoZSBQTUQuIFRoaXMgaXMgd2hhdCB3 ZSBhcmUgYWxzbyBpbiB0aGUgcHJvY2VzcyBvZiBkb2luZy4NCj4gPldpdGggdGhpcyB3ZSBpbnRl bmQgdG8gYXZvaWQgYWxsIHRoZSBhYm92ZSBjb21wbGljYXRpb25zLg0KPiA+aS5lLiBvbmUgcGNp IGRldmljZSwgaW4gaXRzIHByb2JlIGZuLCBjYW4gY3JlYXRlIG11bHRpcGxlIEFQSSBkZXZpY2Ug aW5zdGFuY2VzLg0KPiA+T25lIGluc3RhbmNlIG9mIGNyeXB0b2RldiB3aWxsIHByb3ZpZGUgYSBz eW0gY3J5cHRvIHNlcnZpY2UsIG9uZSBpbnN0YW5jZSBvZg0KPiA+Y29tcHJlc3NkZXYgd2lsbCBw cm92aWRlIGEgY29tcHJlc3Npb24gc2VydmljZSBhbmQgYSBzZWNvbmQgY3J5cHRvZGV2IGluc3Rh bmNlIHdpbGwNCj4gPnByb3ZpZGUgdGhlIGFzeW1tZXRyaWMgc2VydmljZS4gQWxsIHFwcyBvbiBl YWNoIEFQSSBkZXZpY2UgaW5zdGFuY2UgY2FuIHRoZW4gc3VwcG9ydCBhbGwNCj4gPm9mIHRoZSBj YXBhYmlsaXRpZXMgcmVwb3J0ZWQgYnkgdGhhdCBkZXZpY2UuDQo+ID4NCj4gPkEgc3VnZ2VzdGlv biBmb3Iga2VlcGluZyB0aGUgc2ltcGxpY2l0eSBvbiB0aGUgQVBJIHdvdWxkIGJlIHRvIGZvbGxv dyB0aGUgc2FtZSBwYXR0ZXJuLg0KPiA+aS5lLiBkb24ndCBwcm92aWRlIGFueSBzdXBwb3J0IGZv ciBzcGVjaWZpY2F0aW9uIG9mIHN5bSBvciBhc3ltIHFwcy4gRXhwZWN0IGFsbA0KPiA+cXBzIG9u IGVhY2ggZGV2aWNlIHRvIHN1cHBvcnQgYWxsIGNhcGFiaWxpdGllcyByZXBvcnRlZC4NCj4gPg0K PiA+DQo+IA0KPiBbU2hhbGx5XSBJbml0aWFsbHkgSSBoYWQgdGhvdWdodCBvZiBzYW1lIHByb3Bv c2FsIHRvIGFkZCBhbiBpbnB1dCBmaWVsZCBpbiBxcF9jb25mIHNvIHRoYXQgUE1EIGNhbiBrbm93 DQo+IGF0IHFwX3NldHVwIHRpbWUgd2hpY2ggc2VydmljZSBpdCBnb2luZyB0byBiZSB1c2VkIGZv ci4NCj4gSG93ZXZlciBsb29raW5nIHRoYXQgc3BlYyBhbHJlYWR5IGhhZCBxcF9hdHRhY2hfc3lt L2FzeW0gQVBJcyBhbmQgYWxzbyB0aGUgcG9zc2liaWxpdHkgdGhhdCBzb21lDQo+IGRldmljZSBj YW4gc3VwcG9ydCBzZXJ2aWNlIC0gYWdub3N0aWMgcXAsIEkgaW5pdGlhdGVkIHdpdGggY3VycmVu dCBwcm9wb3NhbC4NCj4gSSBtYXJrZWQgdGhlbSBvcHRpb25hbCB3aXRoIGEgZGlzY2xhaW1lciB0 aGF0ICwgaWYgbm90IGF0dGFjaGVkLCB0aGVuIFBNRCB3aWxsIHRoZW4gbmVlZCB0byBtYXAgbG9n aWNhbA0KPiBxcGlkIHRvIHBoeXNpY2FsIGR1cmluZyBlbnF1ZXVlX2J1cnN0KCkgd2hpY2ggbWln aHQgcmVzdWx0IGluIGltcGFjdGVkIHBlcmZvcm1hbmNlLg0KPiBUaGlzIGlzIHBhcnRpY3VsYXJs eSBhcHBsaWNhYmxlIHRvIGRldmljZXMgd2hpY2ggaW50ZXJuYWxseSBoYXZlIGZpeGVkIHFwcyBw ZXIgZWFjaCBzZXJ2aWNlIGFuZCBzZXQNCj4gbWF4X25iX3N5bS9hc3ltX3FwIHRvIGluZGljYXRl IHNhbWUuDQo+IEFuZCB0aHVzIGZvciBzdWNoIGRldmljZXMsIEkgcHJpbWFyaWx5IHJlY29tbWVu ZGVkIHRoYXQgdGhleSBzaG91bGQgYXBwZWFyIGFzIHR3byBzZXBhcmF0ZSBQTURzDQo+IHdoZXJl IG9uZSBzdXBwb3J0IHN5bSBhbmQgb3RoZXIgYXN5bS4NCj4gSG93ZXZlciwgb25seSBwb2ludCB0 byBpcyB0byBzZWUgaG93IHdlbGwgc3VpdGVkIGlzIHRoaXMgZm9yIGVhY2ggZGV2aWNlIGRyaXZl ciBkZXNpZ24gYXMgaXQgbWlnaHQgcmF0aGVyDQo+IHR1cm4gdG8gYmUgc2ltcGxlciBmb3Igc29t ZSBpbXBsZW1lbnRhdGlvbiB0byBqdXN0IGhhdmUgc2luZ2xlIHdheSB0byBkZWRpY2F0ZSBhIHFw IHRvIGEgc2VydmljZSB2aWENCj4gYXR0YWNoIG9yIHFwX3NldHVwIGNoYW5nZSB0aGFuIGhhdmlu ZyB0d28gc2VwYXJhdGUgaW5zdGFuY2VzLg0KPiANCj4gQnV0LCBJIGNvbmN1ciBmcm9tIHlvdXIg dGhvdWdodHMuIFdlIGNhbiBzdGFydCB3aXRoIHNpbXBsZSBkZWZpbml0aW9uIGFuZCByZW1vdmUg Y29uY2VwdCBvZg0KPiBtYXhfbmJfc3ltX3FwIGFuZCBtYXhfbmJfYXN5bV9xcCBpbiBmaXJzdCB2 ZXJzaW9uIGFuZCBzYXkNCj4gLWlmIGRldmljZSBzdXBwb3J0IHNlcnZpY2UgYWdub3N0aWMgcXAs IHRoYXQgbWVhbnMgYWxsIG9mIGl0cyBxcCBjYW4gYmUgc2V0IHVwIGZvciBhbnkgc2VydmljZS4g UE1EIGNhbg0KPiBzaG93IGluIGl0cyBmZWF0dXJlIGZsYWcgc3VwcG9ydCBmb3Igc3ltbWV0cmlj IGFuZCBhc3ltbWV0cmljIGNyeXB0by4gQXBwbGljYXRpb24gY2FuIHNldCB1cCBxcCB0aGUgd2F5 DQo+IGl0IHdhbnQsIHNwZWMgZGVmaW5lIG5vIHJlY29tbWVuZGVkIHdheSBvZiB1c2FnZSBoZXJl Lg0KW0Zpb25hXSBJIHdvdWxkIHdvcmQgdGhpcyBkaWZmZXJlbnRseSwgYXMgbm8gbWVjaGFuaXNt IGlzIHByb3ZpZGVkIGZvciBhbiBhcHBsIHRvIHNldHVwIGEgcXAgZm9yIGEgc3BlY2lmaWMgc2Vy dmljZS4NCklmIFBNRCBzaG93cyBpbiBpdHMgZmVhdHVyZSBmbGFnIHRoYXQgaXQgc3VwcG9ydHMg Ym90aCBzeW0gYW5kIGFzeW0gdGhlbiBpdCBtdXN0IHN1cHBvcnQgdGhvc2Ugb24gYWxsIGl0cyBx cHMuDQpBcHBsaWNhdGlvbiBtYXkgY2hvb3NlIHRvIGRpcmVjdCBhbGwgYXN5bSBvcHMgdG8gb25l IHFwIGFuZCBhbGwgYXN5bSB0byBhIGRpZmZlcmVudCBxcCB0byBhdm9pZA0KaGVhZC1vZi1saW5l IGJsb2NraW5nLCBidXQgdGhlcmUgaXMgbm90aGluZyBpbiB0aGUgcXAgc2V0dXAgb3IgY2FwYWJp bGl0aWVzIHRvIHByZXZlbnQgdGhlIGFwcGxpY2F0aW9uDQpmcm9tIHNlbmRpbmcgYW4gZW5xdWV1 ZV9idXJzdCgpIHdpdGggYSBtaXggb2YgYXN5bSBhbmQgc3ltIG9wcyBhbGwgdG8gdGhlIHNhbWUg cXAgYW5kIGl0IHNob3VsZCB3b3JrLg0KDQo+IC1pZiBkZXZpY2UgaGFzIGZpeGVkIHNldCBvZiBx cCBwZXIgZWFjaCBzZXJ2aWNlLCB0aGVuIGl0IHNob3VsZCBzcGxpdCBpdHNlbGYgaW50byB0d28g OiBzeW1tZXRyaWMgb25seSBhbmQNCj4gYXN5bW1ldHJpYyBvbmx5Lg0KW0Zpb25hXSBGb3IgdXMg dGhpcyBpcyBvaywgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdG8gZ2V0IGZlZWRiYWNrIGZyb20gb3Ro ZXIgcHJvdmlkZXJzIG9mIGh3IGFjY2VsZXJhdGlvbg0KYXMgaXQgaXMgcXVpdGUgYSBjb25zdHJh aW50Lg0KDQo+IFRoaXMgaXMgd2VsbCBzdWl0ZWQgZm9yIHNlc3Npb24tbGVzcyBhbHNvLiAgSU1P LCBJZiBhbnkgaXNzdWVzIHJlcG9ydGVkIHdpdGggdGhlc2UgcnVsZXMsIHRoZW4gd2UgY2FuIGFk ZA0KPiB0aGlzIHN1cHBvcnQgbGF0ZXIgYmFzZWQgb24gdGhlIHRoZW4gaWRlbnRpZmllZCByZXF1 aXJlbWVudC4gSG93ZXZlciwgaWYgd2UgZW5kIHVwIGFkZGluZyB0aGUgc3VwcG9ydA0KPiBiYWNr IG9mIG1heF9uYl9zeW0vYXN5bV9xcCBpbiBzcGVjIGxhdGVyLCB0aGVuIGF0dGFjaC9kZXRhY2hf cXAgQVBJcyB3aWxsIG5vdCBiZSBzdWZmaWNpZW50IGFzIHRoZXkNCj4gYXJlIHNlc3Npb24gc3Bl Y2lmaWMuIEdpdmVuIHRoYXQsIGhhdmluZyBhbiBpbnB1dCBwYXJhbSBkdXJpbmcgcXBfc2V0dXAo KSBpcyBtb3JlIGdlbmVyaWMgd2F5IHRoYXQgc3VpdA0KPiBib3RoIHNlc3Npb24gYW5kIHNlc3Np b25sZXNzIHdheS4gRG9lcyB0aGlzIGFsbCBzb3VuZHMgcmlnaHQ/DQpbRmlvbmFdIGFncmVlZC4N Cg0KPiANCj4gSSB3aWxsIHdhaXQgdG8gY2xvc2Ugb24gdGhpcyBkZXNpZ24gZGlzY3Vzc2lvbiBm aXJzdCBiZWZvcmUgZ2l2aW5nIGZlZWRiYWNrIHRvIHJlc3Qgb2YgdGhlIGNvbW1lbnQgZnVydGhl cg0KPiBiZWxvdy4gQnV0IGNvbnNpZGVyIGFsbCBmZWVkYmFjayByZWdhcmRpbmcgdHlwbyBhbmQg bGljZW5zaW5nIGFzIGFja25vd2xlZGdlZC4NCj4gDQo+IFRoYW5rcw0KPiBTaGFsbHkNCj4gDQoN Cg==