From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 495FDA0C4A; Thu, 17 Jun 2021 18:55:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D790A4067A; Thu, 17 Jun 2021 18:55:08 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 91E5E40150 for ; Thu, 17 Jun 2021 18:55:07 +0200 (CEST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Date: Thu, 17 Jun 2021 18:55:02 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C61869@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH] parray: introduce internal API for dynamic arrays Thread-Index: Addjk6q4n3G82TsHRJK28O+bNXDWigABRiew References: <20210614105839.3379790-1-thomas@monjalon.net> <98CBD80474FA8B44BF855DF32C47DC35C6184E@smartserver.smartshare.dk> <2004320.XGyPsaEoyj@thomas> <98CBD80474FA8B44BF855DF32C47DC35C61868@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Ferruh Yigit" , "Ananyev, Konstantin" , "Thomas Monjalon" , "Richardson, Bruce" Cc: , , , , , Subject: Re: [dpdk-dev] [PATCH] parray: introduce internal API for dynamic arrays X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEZl cnJ1aCBZaWdpdA0KPiBTZW50OiBUaHVyc2RheSwgMTcgSnVuZSAyMDIxIDE4LjEzDQo+IA0KPiBP biA2LzE3LzIwMjEgNDoxNyBQTSwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+IEZyb206IEFu YW55ZXYsIEtvbnN0YW50aW4gW21haWx0bzprb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tXQ0K PiA+PiBTZW50OiBUaHVyc2RheSwgMTcgSnVuZSAyMDIxIDE2LjU5DQo+ID4+DQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4gMTQvMDYvMjAyMSAxNToxNSwgQnJ1Y2UgUmljaGFyZHNvbjoNCj4gPj4+Pj4+PiBP biBNb24sIEp1biAxNCwgMjAyMSBhdCAwMjoyMjo0MlBNICswMjAwLCBNb3J0ZW4gQnLDuHJ1cCB3 cm90ZToNCj4gPj4+Pj4+Pj4+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3Jn XSBPbiBCZWhhbGYgT2YgVGhvbWFzDQo+ID4+IE1vbmphbG9uDQo+ID4+Pj4+Pj4+PiBTZW50OiBN b25kYXksIDE0IEp1bmUgMjAyMSAxMi41OQ0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFBlcmZv cm1hbmNlIG9mIGFjY2VzcyBpbiBhIGZpeGVkLXNpemUgYXJyYXkgaXMgdmVyeSBnb29kDQo+ID4+ Pj4+Pj4+PiBiZWNhdXNlIG9mIGNhY2hlIGxvY2FsaXR5DQo+ID4+Pj4+Pj4+PiBhbmQgYmVjYXVz ZSB0aGVyZSBpcyBhIHNpbmdsZSBwb2ludGVyIHRvIGRlcmVmZXJlbmNlLg0KPiA+Pj4+Pj4+Pj4g VGhlIG9ubHkgZHJhd2JhY2sgaXMgdGhlIGxhY2sgb2YgZmxleGliaWxpdHk6DQo+ID4+Pj4+Pj4+ PiB0aGUgc2l6ZSBvZiBzdWNoIGFuIGFycmF5IGNhbm5vdCBiZSBpbmNyZWFzZSBhdCBydW50aW1l Lg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEFuIGFwcHJvYWNoIHRvIHRoaXMgcHJvYmxlbSBp cyB0byBhbGxvY2F0ZSB0aGUgYXJyYXkgYXQNCj4gPj4gcnVudGltZSwNCj4gPj4+Pj4+Pj4+IGJl aW5nIGFzIGVmZmljaWVudCBhcyBzdGF0aWMgYXJyYXlzLCBidXQgc3RpbGwgbGltaXRlZCB0byBh DQo+ID4+IG1heGltdW0uDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gVGhhdCdzIHdoeSB0aGUg QVBJIHJ0ZV9wYXJyYXkgaXMgaW50cm9kdWNlZCwNCj4gPj4+Pj4+Pj4+IGFsbG93aW5nIHRvIGRl Y2xhcmUgYW4gYXJyYXkgb2YgcG9pbnRlciB3aGljaCBjYW4gYmUgcmVzaXplZA0KPiA+Pj4+Pj4+ Pj4gZHluYW1pY2FsbHkNCj4gPj4+Pj4+Pj4+IGFuZCBhdXRvbWF0aWNhbGx5IGF0IHJ1bnRpbWUg d2hpbGUga2VlcGluZyBhIGdvb2QgcmVhZA0KPiA+PiBwZXJmb3JtYW5jZS4NCj4gPj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+PiBBZnRlciByZXNpemUsIHRoZSBwcmV2aW91cyBhcnJheSBpcyBrZXB0IHVu dGlsIHRoZSBuZXh0DQo+IHJlc2l6ZQ0KPiA+Pj4+Pj4+Pj4gdG8gYXZvaWQgY3Jhc2hzIGR1cmlu ZyBhIHJlYWQgd2l0aG91dCBhbnkgbG9jay4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBFYWNo IGVsZW1lbnQgaXMgYSBwb2ludGVyIHRvIGEgbWVtb3J5IGNodW5rIGR5bmFtaWNhbGx5DQo+ID4+ IGFsbG9jYXRlZC4NCj4gPj4+Pj4+Pj4+IFRoaXMgaXMgbm90IGdvb2QgZm9yIGNhY2hlIGxvY2Fs aXR5IGJ1dCBpdCBhbGxvd3MgdG8ga2VlcCB0aGUNCj4gPj4gc2FtZQ0KPiA+Pj4+Pj4+Pj4gbWVt b3J5IHBlciBlbGVtZW50LCBubyBtYXR0ZXIgaG93IHRoZSBhcnJheSBpcyByZXNpemVkLg0KPiA+ Pj4+Pj4+Pj4gQ2FjaGUgbG9jYWxpdHkgY291bGQgYmUgaW1wcm92ZWQgd2l0aCBtZW1wb29scy4N Cj4gPj4+Pj4+Pj4+IFRoZSBvdGhlciBkcmF3YmFjayBpcyBoYXZpbmcgdG8gZGVyZWZlcmVuY2Ug b25lIG1vcmUgcG9pbnRlcg0KPiA+Pj4+Pj4+Pj4gdG8gcmVhZCBhbiBlbGVtZW50Lg0KPiA+Pj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFRoZXJlIGlzIG5vdCBtdWNoIGxvY2tzLCBzbyB0aGUgQVBJIGlz IGZvciBpbnRlcm5hbCB1c2Ugb25seS4NCj4gPj4+Pj4+Pj4+IFRoaXMgQVBJIG1heSBiZSB1c2Vk IHRvIGNvbXBsZXRlbHkgcmVtb3ZlIHNvbWUgY29tcGlsYXRpb24tDQo+ID4+IHRpbWUNCj4gPj4+ Pj4+Pj4+IG1heGltdW1zLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJIGdldCB0aGUgcHVycG9z ZSBhbmQgb3ZlcmFsbCBpbnRlbnRpb24gb2YgdGhpcyBsaWJyYXJ5Lg0KPiA+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+PiBJIHByb2JhYmx5IGFscmVhZHkgbWVudGlvbmVkIHRoYXQgSSBwcmVmZXIgImVtYmVk ZGVkIHN0eWxlDQo+ID4+IHByb2dyYW1taW5nIiB3aXRoIGZpeGVkIHNpemUgYXJyYXlzLCByYXRo ZXIgdGhhbiBydW50aW1lDQo+ID4+IGNvbmZpZ3VyYWJpbGl0eS4NCj4gPj4+Pj4gSXQncw0KPiA+ Pj4+Pj4gbXkgcGVyc29uYWwgb3BpbmlvbiwgYW5kIHRoZSBEUERLIFRlY2ggQm9hcmQgY2xlYXJs eSBwcmVmZXJzDQo+ID4+IHJlZHVjaW5nIHRoZSBhbW91bnQgb2YgY29tcGlsZSB0aW1lIGNvbmZp Z3VyYWJpbGl0eSwgc28gdGhlcmUgaXMgbm8NCj4gd2F5DQo+ID4+PiBmb3INCj4gPj4+Pj4+IG1l IHRvIHN0b3AgdGhpcyBwcm9ncmVzcywgYW5kIEkgZG8gbm90IGludGVuZCB0byBvcHBvc2UgdG8g dGhpcw0KPiA+PiBsaWJyYXJ5LiA6LSkNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gVGhpcyBsaWJy YXJ5IGlzIGxpa2VseSB0byBiZWNvbWUgYSBjb3JlIGxpYnJhcnkgb2YgRFBESywgc28gSQ0KPiA+ PiB0aGluayBpdCBpcyBpbXBvcnRhbnQgZ2V0dGluZyBpdCByaWdodC4gQ291bGQgeW91IHBsZWFz ZSBtZW50aW9uIGENCj4gZmV3DQo+ID4+Pj4+IGV4YW1wbGVzDQo+ID4+Pj4+PiB3aGVyZSB5b3Ug dGhpbmsgdGhpcyBpbnRlcm5hbCBsaWJyYXJ5IHNob3VsZCBiZSB1c2VkLCBhbmQgd2hlcmUNCj4g Pj4gaXQgc2hvdWxkIG5vdCBiZSB1c2VkLiBUaGVuIGl0IGlzIGVhc2llciB0byBkaXNjdXNzIGlm IHRoZSBib3JkZXINCj4gbGluZQ0KPiA+Pj4gYmV0d2Vlbg0KPiA+Pj4+Pj4gY29udHJvbCBwYXRo IGFuZCBkYXRhIHBsYW5lIGlzIGNvcnJlY3QuIEUuZy4gdGhpcyBsaWJyYXJ5IGlzIG5vdA0KPiA+ PiBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkeW5hbWljYWxseSBzaXplZCBwYWNrZXQgcXVldWVz IHRoYXQgZ3Jvdw0KPiBhbmQNCj4gPj4+IHNocmluaw0KPiA+Pj4+PiBpbg0KPiA+Pj4+Pj4gdGhl IGZhc3QgcGF0aC4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gSWYgdGhlIGxpYnJhcnkgYmVjb21l cyBhIGNvcmUgRFBESyBsaWJyYXJ5LCBpdCBzaG91bGQgcHJvYmFibHkNCj4gPj4gYmUgcHVibGlj IGluc3RlYWQgb2YgaW50ZXJuYWwuIEUuZy4gaWYgdGhlIGxpYnJhcnkgaXMgdXNlZCB0byBtYWtl DQo+ID4+Pj4+PiBSVEVfTUFYX0VUSFBPUlRTIGR5bmFtaWMgaW5zdGVhZCBvZiBjb21waWxlIHRp bWUgZml4ZWQsIHRoZW4NCj4gc29tZQ0KPiA+PiBhcHBsaWNhdGlvbnMgbWlnaHQgYWxzbyBuZWVk IGR5bmFtaWNhbGx5IHNpemVkIGFycmF5cyBmb3IgdGhlaXINCj4gPj4+Pj4+IGFwcGxpY2F0aW9u IHNwZWNpZmljIHBlci1wb3J0IHJ1bnRpbWUgZGF0YSwgYW5kIHRoaXMgbGlicmFyeQ0KPiA+PiBj b3VsZCBzZXJ2ZSB0aGF0IHB1cnBvc2UgdG9vLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+ Pj4+Pj4gVGhhbmtzIFRob21hcyBmb3Igc3RhcnRpbmcgdGhpcyBkaXNjdXNzaW9uIGFuZCBNb3J0 ZW4gZm9yDQo+ID4+IGZvbGxvdy11cC4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IE15IHRoaW5raW5n IGlzIGFzIGZvbGxvd3MsIGFuZCBJJ20gcGFydGljdWxhcmx5IGtlZXBpbmcgaW4gbWluZA0KPiA+ PiB0aGUgY2FzZXMNCj4gPj4+Pj4+PiBvZiBlLmcuIFJURV9NQVhfRVRIUE9SVFMsIGFzIGEgbGVh ZGluZyBjYW5kaWRhdGUgaGVyZS4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFdoaWxlIEkgZGlzbGlr ZSB0aGUgaGFyZC1jb2RlZCBsaW1pdHMgaW4gRFBESywgSSdtIGFsc28gbm90DQo+ID4+IGNvbnZp bmNlZCB0aGF0DQo+ID4+Pj4+Pj4gd2Ugc2hvdWxkIHN3aXRjaCBhd2F5IGZyb20gdGhlIGZsYXQg YXJyYXlzIG9yIHRoYXQgd2UgbmVlZA0KPiBmdWxseQ0KPiA+PiBkeW5hbWljDQo+ID4+Pj4+Pj4g YXJyYXlzIHRoYXQgZ3Jvdy9zaHJpbmsgYXQgcnVudGltZSBmb3IgZXRoZGV2cy4gSSB3b3VsZCBz dWdnZXN0DQo+ID4+IGEgaGFsZi13YXkNCj4gPj4+Pj4+PiBob3VzZSBoZXJlLCB3aGVyZSB3ZSBr ZWVwIHRoZSBldGhkZXZzIGFzIGFuIGFycmF5LCBidXQgb25lDQo+ID4+IGFsbG9jYXRlZC9zaXpl ZA0KPiA+Pj4+Pj4+IGF0IHJ1bnRpbWUgcmF0aGVyIHRoYW4gc3RhdGljYWxseS4gVGhpcyB3b3Vs ZCBhbGxvdyB1cyB0byBoYXZlDQo+IGENCj4gPj4+Pj4+PiBjb21waWxlLXRpbWUgZGVmYXVsdCB2 YWx1ZSwgYnV0LCBmb3IgdXNlIGNhc2VzIHRoYXQgbmVlZCBpdCwNCj4gPj4gYWxsb3cgdXNlIG9m IGENCj4gPj4+Pj4+PiBmbGFnIGUuZy4gICJtYXgtZXRoZGV2cyIgdG8gY2hhbmdlIHRoZSBzaXpl IG9mIHRoZSBwYXJhbWV0ZXINCj4gPj4gZ2l2ZW4gdG8gdGhlDQo+ID4+Pj4+Pj4gbWFsbG9jIGNh bGwgZm9yIHRoZSBhcnJheS4gIFRoaXMgbWF4IGxpbWl0IGNvdWxkIHRoZW4gYmUNCj4gPj4gcHJv dmlkZWQgdG8gYXBwcw0KPiA+Pj4+Pj4+IHRvbyBpZiB0aGV5IHdhbnQgdG8gbWF0Y2ggYW55IGFy cmF5IHNpemVzLiBbQWx0ZXJuYXRpdmVseSB0aG9zZQ0KPiA+PiBhcHBzIGNvdWxkDQo+ID4+Pj4+ Pj4gY2hlY2sgdGhlIHByb3ZpZGVkIHNpemUgYW5kIGVycm9yIG91dCBpZiB0aGUgc2l6ZSBoYXMg YmVlbg0KPiA+PiBpbmNyZWFzZWQgYmV5b25kDQo+ID4+Pj4+Pj4gd2hhdCB0aGUgYXBwIGlzIGRl c2lnbmVkIHRvIHVzZT9dLiBUaGVyZSB3b3VsZCBiZSBubyBleHRyYQ0KPiA+PiBkZXJlZmVyZW5j ZXMgcGVyDQo+ID4+Pj4+Pj4gcngvdHggYnVyc3QgY2FsbCBpbiB0aGlzIHNjZW5hcmlvIHNvIHBl cmZvcm1hbmNlIHNob3VsZCBiZSB0aGUNCj4gPj4gc2FtZSBhcw0KPiA+Pj4+Pj4+IGJlZm9yZSAo cG90ZW50aWFsbHkgYmV0dGVyIGlmIGFycmF5IGlzIGluIGh1Z2VwYWdlIG1lbW9yeSwgSQ0KPiA+ PiBzdXBwb3NlKS4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBJIHRoaW5rIHdlIG5lZWQgc29tZSBiZW5j aG1hcmtzIHRvIGRlY2lkZSB3aGF0IGlzIHRoZSBiZXN0DQo+ID4+IHRyYWRlb2ZmLg0KPiA+Pj4+ Pj4gSSBzcGVudCB0aW1lIG9uIHRoaXMgaW1wbGVtZW50YXRpb24sIGJ1dCBzb3JyeSBJIHdvbid0 IGhhdmUgdGltZQ0KPiA+PiBmb3IgYmVuY2htYXJrcy4NCj4gPj4+Pj4+IFZvbHVudGVlcnM/DQo+ ID4+Pj4+DQo+ID4+Pj4+IEkgaGFkIG9ubHkgYSBxdWljayBsb29rIGF0IHlvdXIgYXBwcm9hY2gg c28gZmFyLg0KPiA+Pj4+PiBCdXQgZnJvbSB3aGF0IEkgY2FuIHJlYWQsIGluIE1UIGVudmlyb25t ZW50IHlvdXIgc3VnZ2VzdGlvbiB3aWxsDQo+ID4+IHJlcXVpcmUNCj4gPj4+Pj4gZXh0cmEgc3lu Y2hyb25pemF0aW9uIGZvciBlYWNoIHJlYWQtd3JpdGUgYWNjZXNzIHRvIHN1Y2ggcGFycmF5DQo+ ID4+IGVsZW1lbnQgKGxvY2ssIHJjdSwgLi4uKS4NCj4gPj4+Pj4gSSB0aGluayB3aGF0IEJydWNl IHN1Z2dlc3RzIHdpbGwgYmUgbXVjaCBsaWd0aGVyLCBlYXNpZXIgdG8NCj4gPj4gaW1wbGVtZW50 IGFuZCBsZXNzIGVycm9yIHByb25lLg0KPiA+Pj4+PiBBdCBsZWFzdCBmb3IgcnRlX2V0aGRldnNb XSBhbmQgZnJpZW5kcy4NCj4gPj4+Pj4gS29uc3RhbnRpbg0KPiA+Pj4+DQo+ID4+Pj4gT25lIG1v cmUgdGhvdWdodCBoZXJlIC0gaWYgd2UgYXJlIHRhbGtpbmcgYWJvdXQgcnRlX2V0aGRldltdIGlu DQo+ID4+IHBhcnRpY3VsYXIsIEkgdGhpbmsgIHdlIGNhbjoNCj4gPj4+PiAxLiBtb3ZlIHB1Ymxp YyBmdW5jdGlvbiBwb2ludGVycyAocnhfcGt0X2J1cnN0KCksIGV0Yy4pIGZyb20NCj4gPj4gcnRl X2V0aGRldiBpbnRvIGEgc2VwYXJhdGUgZmxhdCBhcnJheS4NCj4gPj4+PiBXZSBjYW4ga2VlcCBp dCBwdWJsaWMgdG8gc3RpbGwgdXNlIGlubGluZSBmdW5jdGlvbnMgZm9yICdmYXN0Jw0KPiA+PiBj YWxscyBydGVfZXRoX3J4X2J1cnN0KCksIGV0Yy4gdG8gYXZvaWQNCj4gPj4+PiBhbnkgcmVncmVz c2lvbnMuDQo+ID4+Pj4gVGhhdCBjb3VsZCBzdGlsbCBiZSBmbGF0IGFycmF5IHdpdGggbWF4X3Np emUgc3BlY2lmaWVkIGF0DQo+ID4+IGFwcGxpY2F0aW9uIHN0YXJ0dXAuDQo+ID4+Pj4gMi4gSGlk ZSByZXN0IG9mIHJ0ZV9ldGhkZXYgc3RydWN0IGluIC5jLg0KPiA+Pj4+IFRoYXQgd2lsbCBhbGxv dyB1cyB0byBjaGFuZ2UgdGhlIHN0cnVjdCBpdHNlbGYgYW5kIHRoZSB3aG9sZQ0KPiA+PiBydGVf ZXRoZGV2W10gdGFibGUgaW4gYSB3YXkgd2UgbGlrZQ0KPiA+Pj4+IChmbGF0IGFycmF5LCB2ZWN0 b3IsIGhhc2gsIGxpbmtlZCBsaXN0KSB3aXRob3V0IEFCSS9BUEkgYnJlYWthZ2VzLg0KPiA+Pj4+ DQo+ID4+Pj4gWWVzLCBpdCB3b3VsZCByZXF1aXJlIGFsbCBQTURzIHRvIGNoYW5nZSBwcm90b3R5 cGUgZm9yDQo+ID4+IHBrdF9yeF9idXJzdCgpIGZ1bmN0aW9uDQo+ID4+Pj4gKHRvIGFjY2VwdCBw b3J0X2lkLCBxdWV1ZV9pZCBpbnN0ZWFkIG9mIHF1ZXVlIHBvaW50ZXIpLCBidXQgdGhlDQo+ID4+ IGNoYW5nZSBpcyBtZWNoYW5pY2FsIG9uZS4NCj4gPj4+PiBQcm9iYWJseSBzb21lIG1hY3JvIGNh biBiZSBwcm92aWRlZCB0byBzaW1wbGlmeSBpdC4NCj4gPj4+Pg0KPiA+Pj4NCj4gPj4+IFdlIGFy ZSBhbHJlYWR5IHBsYW5uaW5nIHNvbWUgdGFza3MgZm9yIEFCSSBzdGFiaWxpdHkgZm9yIHYyMS4x MSwgSQ0KPiA+PiB0aGluaw0KPiA+Pj4gc3BsaXR0aW5nICdzdHJ1Y3QgcnRlX2V0aF9kZXYnIGNh biBiZSBwYXJ0IG9mIHRoYXQgdGFzaywgaXQgZW5hYmxlcw0KPiA+PiBoaWRpbmcgbW9yZQ0KPiA+ Pj4gaW50ZXJuYWwgZGF0YS4NCj4gPj4NCj4gPj4gT2ssIHNvdW5kcyBnb29kLg0KPiA+Pg0KPiA+ Pj4NCj4gPj4+PiBUaGUgb25seSBzaWduaWZpY2FudCBjb21wbGljYXRpb24gSSBjYW4gZm9yZXNl ZSB3aXRoIGltcGxlbWVudGluZw0KPiA+PiB0aGF0IGFwcHJvYWNoIC0NCj4gPj4+PiB3ZSdsbCBu ZWVkIGEgYW4gYXJyYXkgb2YgJ2Zhc3QnIGZ1bmN0aW9uIHBvaW50ZXJzIHBlciBxdWV1ZSwgbm90 DQo+ID4+IHBlciBkZXZpY2UgYXMgd2UgaGF2ZSBub3cNCj4gPj4+PiAodG8gYXZvaWQgZXh0cmEg aW5kaXJlY3Rpb24gZm9yIGNhbGxiYWNrIGltcGxlbWVudGF0aW9uKS4NCj4gPj4+PiBUaG91Z2gg YXMgYSBib251cyB3ZSdsbCBoYXZlIGFiaWxpdHkgdG8gdXNlIGRpZmZlcmVudCBSWC9UWA0KPiA+ PiBmdW5jaW9ucyBwZXIgcXVldWUuDQo+ID4+Pj4NCj4gPj4+DQo+ID4+PiBXaGF0IGRvIHlvdSB0 aGluayBzcGxpdCBSeC9UeCBjYWxsYmFjayBpbnRvIGl0cyBvd24gc3RydWN0IHRvbz8NCj4gPj4+ DQo+ID4+PiBPdmVyYWxsICdydGVfZXRoX2RldicgY2FuIGJlIHNwbGl0IGludG8gdGhyZWUgYXM6 DQo+ID4+PiAxLiBydGVfZXRoX2Rldg0KPiA+Pj4gMi4gcnRlX2V0aF9kZXZfYnVyc3QNCj4gPj4+ IDMuIHJ0ZV9ldGhfZGV2X2NiDQo+ID4+Pg0KPiA+Pj4gQW5kIHdlIGNhbiBoaWRlIDEgZnJvbSBh cHBsaWNhdGlvbnMgZXZlbiB3aXRoIHRoZSBpbmxpbmUgZnVuY3Rpb25zLg0KPiA+Pg0KPiA+PiBB cyBkaXNjdXNzZWQgb2ZmLWxpbmUsIEkgdGhpbms6DQo+ID4+IGl0IGlzIHBvc3NpYmxlLg0KPiA+ PiBNeSBhYnNvbHV0ZSBwcmVmZXJlbmNlIHdvdWxkIGJlIHRvIGhhdmUganVzdCAxLzIgKHdpdGgg Q0IgaGlkZGVuKS4NCj4gPj4gQnV0IGV2ZW4gd2l0aCAxLzIvMyBpbiBwbGFjZSBJIHRoaW5rIGl0 IHdvdWxkIGJlICBhIGdvb2Qgc3RlcA0KPiBmb3J3YXJkLg0KPiA+PiBQcm9iYWJseSB3b3J0aCB0 byBzdGFydCB3aXRoIDEvMi8zIGZpcnN0IGFuZCB0aGVuIHNlZSBob3cgZGlmZmljdWx0DQo+IGl0 DQo+ID4+IHdvdWxkIGJlIHRvIHN3aXRjaCB0byAxLzIuDQo+ID4+IERvIHlvdSBwbGFuIHRvIHN0 YXJ0IHdvcmtpbmcgb24gaXQ/DQo+ID4+DQo+ID4+IEtvbnN0YW50aW4NCj4gPg0KPiA+IElmIHlv dSBkbyBwcm9jZWVkIHdpdGggdGhpcywgYmUgdmVyeSBjYXJlZnVsLiBFLmcuIHRoZSBpbmxpbmVk IHJ4L3R4DQo+IGJ1cnN0IGZ1bmN0aW9ucyBzaG91bGQgbm90IHRvdWNoIG1vcmUgY2FjaGUgbGlu ZXMgdGhhbiB0aGV5IGRvIHRvZGF5IC0NCj4gZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgbWFueSBh Y3RpdmUgcG9ydHMuIFRoZSBpbmxpbmVkIHJ4L3R4IGJ1cnN0DQo+IGZ1bmN0aW9ucyBhcmUgdmVy eSBzaW1wbGUsIHNvIHRob3JvdWdoIGNvZGUgcmV2aWV3IChhbmQgcG9zc2libHkgYWxzbw0KPiBv ZiB0aGUgcmVzdWx0aW5nIGFzc2VtYmx5KSBpcyBhcHByb3ByaWF0ZS4gU2ltcGxlIHBlcmZvcm1h bmNlIHRlc3RpbmcNCj4gbWlnaHQgbm90IGRldGVjdCBpZiBtb3JlIGNhY2hlIGxpbmVzIGFyZSBh Y2Nlc3NlZCB0aGFuIGJlZm9yZSB0aGUNCj4gbW9kaWZpY2F0aW9ucy4NCj4gPg0KPiA+IERvbid0 IGdldCBtZSB3cm9uZy4uLiBJIGRvIGNvbnNpZGVyIHRoaXMgYW4gaW1wcm92ZW1lbnQgb2YgdGhl IGV0aGRldg0KPiBsaWJyYXJ5OyBJJ20gb25seSBhc2tpbmcgeW91IHRvIHRha2UgZXh0cmEgY2Fy ZSENCj4gPg0KPiANCj4gYWNrDQo+IA0KPiBJZiB3ZSBzcGxpdCBhcyBhYm92ZSwgSSB0aGluayBk ZXZpY2Ugc3BlY2lmaWMgZGF0YSAnc3RydWN0DQo+IHJ0ZV9ldGhfZGV2X2RhdGEnDQo+IHNob3Vs ZCBiZSBwYXJ0IG9mIDEgKHJ0ZV9ldGhfZGV2KS4gV2hpY2ggbWVhbnMgUngvVHggaW5saW5lIGZ1 bmN0aW9ucw0KPiBhY2Nlc3MNCj4gYWRkaXRpb25hbCBjYWNoZSBsaW5lLg0KPiANCj4gVG8gcHJl dmVudCB0aGlzLCB3aGF0IGFib3V0IGR1cGxpY2F0aW5nICdkYXRhJyBpbiAyDQo+IChydGVfZXRo X2Rldl9idXJzdCk/IFdlIGhhdmUNCj4gZW5vdWdoIHNwYWNlIGZvciBpdCB0byBmaXQgaW50byBz aW5nbGUgY2FjaGUgbGluZSwgY3VycmVudGx5IGl0IGlzOg0KPiBzdHJ1Y3QgcnRlX2V0aF9kZXYg ew0KPiAgICAgICAgIGV0aF9yeF9idXJzdF90ICAgICAgICAgICAgIHJ4X3BrdF9idXJzdDsgICAg ICAgICAvKiAgICAgMCAgICAgOA0KPiAqLw0KPiAgICAgICAgIGV0aF90eF9idXJzdF90ICAgICAg ICAgICAgIHR4X3BrdF9idXJzdDsgICAgICAgICAvKiAgICAgOCAgICAgOA0KPiAqLw0KPiAgICAg ICAgIGV0aF90eF9wcmVwX3QgICAgICAgICAgICAgIHR4X3BrdF9wcmVwYXJlOyAgICAgICAvKiAg ICAxNiAgICAgOA0KPiAqLw0KPiAgICAgICAgIGV0aF9yeF9xdWV1ZV9jb3VudF90ICAgICAgIHJ4 X3F1ZXVlX2NvdW50OyAgICAgICAvKiAgICAyNCAgICAgOA0KPiAqLw0KPiAgICAgICAgIGV0aF9y eF9kZXNjcmlwdG9yX2RvbmVfdCAgIHJ4X2Rlc2NyaXB0b3JfZG9uZTsgICAvKiAgICAzMiAgICAg OA0KPiAqLw0KPiAgICAgICAgIGV0aF9yeF9kZXNjcmlwdG9yX3N0YXR1c190IHJ4X2Rlc2NyaXB0 b3Jfc3RhdHVzOyAvKiAgICA0MCAgICAgOA0KPiAqLw0KPiAgICAgICAgIGV0aF90eF9kZXNjcmlw dG9yX3N0YXR1c190IHR4X2Rlc2NyaXB0b3Jfc3RhdHVzOyAvKiAgICA0OCAgICAgOA0KPiAqLw0K PiAgICAgICAgIHN0cnVjdCBydGVfZXRoX2Rldl9kYXRhICogIGRhdGE7ICAgICAgICAgICAgICAg ICAvKiAgICA1NiAgICAgOA0KPiAqLw0KPiAgICAgICAgIC8qIC0tLSBjYWNoZWxpbmUgMSBib3Vu ZGFyeSAoNjQgYnl0ZXMpIC0tLSAqLw0KPiANCj4gJ3J4X2Rlc2NyaXB0b3JfZG9uZScgaXMgZGVw cmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkOw0KDQpNYWtlcyBzZW5zZS4NCg0KQWxzbyBjb25z aWRlciBtb3ZpbmcgJ2RhdGEnIHRvIHRoZSB0b3Agb2YgdGhlIG5ldyBzdHJ1Y3QsIHNvIHRoZXJl IGlzIHJvb20gdG8gYWRkIGZ1dHVyZSBmdW5jdGlvbnMgYmVsb3cuIChXaXRob3V0IGdyb3dpbmcg dG8gbW9yZSB0aGFuIHRoZSBvbmUgY2FjaGUgbGluZSBzaXplLCBvbmUgbmV3IGZ1bmN0aW9uIGNh biBiZSBhZGRlZCB3aGVuICdyeF9kZXNjcmlwdG9yX2RvbmUnIGhhcyBiZWVuIHJlbW92ZWQuKQ0K DQo=