From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5E9FCA04FF; Tue, 14 Jan 2020 16:16:10 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 87E691C123; Tue, 14 Jan 2020 16:16:09 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by dpdk.org (Postfix) with ESMTP id BE3DB1C11D for ; Tue, 14 Jan 2020 16:16:07 +0100 (CET) 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: Tue, 14 Jan 2020 16:16:06 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C60CE0@smartserver.smartshare.dk> In-Reply-To: <20200114142517.29522-1-aostruszka@marvell.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [RFC PATCH 0/3] introduce IF proxy library Thread-Index: AdXK5nlTKkQAIr6dRQ2DHiAg+XljIQABHAHQ References: <20200114142517.29522-1-aostruszka@marvell.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Andrzej Ostruszka" , Cc: "Jerin Jacob Kollanukkaran" , "Nithin Kumar Dabilpuram" , "Pavan Nikhilesh Bhagavatula" , "Kiran Kumar Kokkilagadda" , "Krzysztof Kanas" Subject: Re: [dpdk-dev] [RFC PATCH 0/3] introduce IF proxy library 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" QW5kcnplaiwNCg0KQmFzaWNhbGx5IHlvdSBhcmUgYWRkaW5nIGEgdmVyeSBzbWFsbCBzdWJzZXQg b2YgdGhlIExpbnV4IElQIHN0YWNrIHRvIGludGVyZmFjZSB3aXRoIERQREsgYXBwbGljYXRpb25z IHZpYSBjYWxsYmFja3MuIFRoZSBsaWJyYXJ5IGFsc28gc2VlbXMgdG8gc3VwcG9ydCBpbnRlcmZh Y2luZyB0byB0aGUgcm91dGUgdGFibGUsIHNvIGl0IGlzIG5vdCAiaW50ZXJmYWNlIHByb3h5Iiwg YnV0ICJJUCBzdGFjayBwcm94eSIuDQoNCllvdSBhbHJlYWR5IG1lbnRpb24gQVJQIHRhYmxlIGFz IGZ1dHVyZSB3b3JrLiBIb3cgYWJvdXQgbmFtZXNwYWNlcywgaXAgdGFibGVzLCBhbmQgb3RoZXIg YWR2YW5jZWQgZmVhdHVyZXMuLi4gSSBmb3Jlc2VlIHRoZSBEZXZpbCBpbiB0aGUgZGV0YWlscyBm b3IgYW55IHJlYWwgdXNlIGNhc2UuDQoNClVubGVzcyB0aGUgbGlicmFyeSBpcyBhbiBPL1Mgd3Jh cHBlciB0byBtYWtlIExpbnV4IE5FVExJTkstbGlrZSBtZXNzYWdlcyBhdmFpbGFibGUgZnJvbSBv dGhlciBvcGVyYXRpbmcgc3lzdGVtcywgSSBkb24ndCByZWFsbHkgc2VlIHRoZSB2YWx1ZSBpbiB0 aGlzIGxpYnJhcnkuLi4gaWYgaXQgaXMgTGludXggc3BlY2lmaWMsIHdoeSBub3QganVzdCB1c2Ug TkVUTElOSyBpbiB0aGUgRFBESyBhcHBsaWNhdGlvbidzIGNvbnRyb2wgcGxhbmU/DQoNCg0KTWVk IHZlbmxpZyBoaWxzZW4gLyBraW5kIHJlZ2FyZHMNCi0gTW9ydGVuIEJyw7hydXANCg0KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0Bk cGRrLm9yZ10gT24gQmVoYWxmIE9mIEFuZHJ6ZWogT3N0cnVzemthDQo+IFNlbnQ6IFR1ZXNkYXks IEphbnVhcnkgMTQsIDIwMjAgMzoyNSBQTQ0KPiBUbzogZGV2QGRwZGsub3JnDQo+IENjOiBKZXJp biBKYWNvYiBLb2xsYW51a2thcmFuOyBOaXRoaW4gS3VtYXIgRGFiaWxwdXJhbTsgUGF2YW4gTmlr aGlsZXNoDQo+IEJoYWdhdmF0dWxhOyBLaXJhbiBLdW1hciBLb2traWxhZ2FkZGE7IEtyenlzenRv ZiBLYW5hcw0KPiBTdWJqZWN0OiBbZHBkay1kZXZdIFtSRkMgUEFUQ0ggMC8zXSBpbnRyb2R1Y2Ug SUYgcHJveHkgbGlicmFyeQ0KPiANCj4gV2hhdCBpcyB0aGlzIHVzZWZ1bCBmb3INCj4gPT09PT09 PT09PT09PT09PT09PT09PT0NCj4gDQo+IFVzdWFsbHksIHdoZW4gYW4gZXRoZXJuZXQgcG9ydCBp cyBhc3NpZ25lZCB0byBEUERLIGl0IHZhbmlzaGVzIGZyb20gdGhlDQo+IHN5c3RlbSBhbmQgdXNl ciBsb29zZXMgYWJpbGl0eSB0byBjb250cm9sIGl0IHZpYSBub3JtYWwgY29uZmlndXJhdGlvbg0K PiB1dGlsaXRpZXMgKGUuZy4gdGhvc2UgZnJvbSBpcHJvdXRlMiBwYWNrYWdlKS4gIE1vcmVvdmVy IGJ5IGRlZmF1bHQgRFBESw0KPiBhcHBsaWNhdGlvbiBpcyBub3QgYXdhcmUgb2YgdGhlIG5ldHdv cmsgY29uZmlndXJhdGlvbiBvZiB0aGUgc3lzdGVtLg0KPiANCj4gVG8gYWRkcmVzcyBib3RoIG9m IHRoZXNlIGlzc3VlcyBhcHBsaWNhdGlvbiBuZWVkcyB0bzoNCj4gLSBhZGQgc29tZSBjb21tYW5k IGxpbmUgaW50ZXJmYWNlIChvciBvdGhlciBtZWNoYW5pc20pIGFsbG93aW5nIGZvcg0KPiAgIGNv bnRyb2wgb2YgdGhlIHBvcnQgYW5kIGl0cyBjb25maWd1cmF0aW9uDQo+IC0gcXVlcnkgdGhlIHN0 YXR1cyBvZiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYW5kIG1vbml0b3IgaXRzIGNoYW5nZXMNCj4g DQo+IFRoZSBwdXJwb3NlIG9mIHRoaXMgbGlicmFyeSBpcyB0byBoZWxwIHdpdGggYm90aCBvZiB0 aGVzZSB0YXNrcyAoYXMNCj4gbG9uZw0KPiBhcyB0aGV5IHJlbWFpbiBpbiBkb21haW4gb2YgY29u ZmlndXJhdGlvbiBhdmFpbGFibGUgdG8gdGhlIHN5c3RlbSkuICBJbg0KPiBvdGhlciB3b3Jkcywg aWYgRFBESyBhcHBsaWNhdGlvbiBoYXMgc29tZSBzcGVjaWFsIG5lZWRzLCB0aGF0IGNhbm5vdCBi ZQ0KPiBhZGRyZXNzZWQgYnkgdGhlIG5vcm1hbCBzeXN0ZW0gY29uZmlndXJhdGlvbiB1dGlsaXRp ZXMsIHRoZW4gdGhleSBuZWVkDQo+IHRvIGJlIHNvbHZlZCBieSB0aGUgYXBwbGljYXRpb24gaXRz ZWxmLg0KPiANCj4gVGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBEUERLIGFuZCBzeXN0ZW0gaXMgYmFz ZWQgb24gdGhlIGV4aXN0ZW5jZSBvZg0KPiBwb3J0cyB0aGF0IGFyZSB2aXNpYmxlIHRvIGJvdGgg RFBESyBhbmQgc3lzdGVtIChsaWtlIFRhcCwgS05JIGFuZA0KPiBwb3NzaWJseSBzb21lIG90aGVy IGRyaXZlcnMpLiAgVGhlc2UgcG9ydHMgc2VydmUgYXMgYW4gaW50ZXJmYWNlDQo+IHByb3hpZXMu DQo+IA0KPiBMZXQncyB2aXN1YWxpemUgdGhlIGFjdGlvbiBvZiB0aGUgbGlicmFyeSBieSB0aGUg Zm9sbG93aW5nIGV4YW1wbGU6DQo+IA0KPiAgICAgICAgICAgICAgIExpbnV4ICAgICAgICAgICAg IHwgICAgICAgICAgICBEUERLDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICArLS0tLS0tLSsg ICAgICAgKy0tLS0tLS0rDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwg UG9ydDEgfCAgICAgICB8IFBvcnQyIHwNCj4gImlwIGxpbmsgc2V0IGRldiB0YXAxIG10dSAxNjAw IiB8ICAgKy0tLS0tLS0rICAgICAgICstLS0tLS0tKw0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIHwgICAgICAgXiAgICAgICAgICAgICAgIF4NCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICArLS0tLS0tKyAgIHwgbXR1X2NoYW5nZSAgICB8DQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgYC0+fCBUYXAxIHwtLS0nIGNhbGxiYWNrICAgICAgfA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICstLS0tLS0rICAgICAgICAgICAgICAgICAgIHwNCj4gImlwIGFk ZHIgYWRkIDE5OC41MS4xMDAuMTQgXCAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICAg ICAgICAgICAgICAgICAgIGRldiB0YXAyIiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0rICAgICAgICAgICAgICAgICAg IHwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBgLT58IFRhcDIgfC0tLS0tLS0tLS0tLS0t LS0tLS0nDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLSsgICBhZGRyX2Fk ZCBjYWxsYmFjaw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gImlwIHJv dXRlIGFkZCAxOTguMC4yLjAvMjQgXCAgICB8DQo+ICAgICAgICAgICAgICAgICAgIGRldiBldGgw IiAgICAgfA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICByb3V0ZV9hZGQg Y2FsbGJhY2sNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBgLS0tLS0tLS0tLS0tLT4NCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+IA0KPiBTbyB3ZSBoYXZlIHR3byBw b3J0cyBQb3J0MSBhbmQgUG9ydDIgdGhhdCBhcmUgbm90IHZpc2libGUgdG8gdGhlDQo+IHN5c3Rl bS4NCj4gV2UgY3JlYXRlIHR3byBwcm94eSBpbnRlcmZhY2VzIChoZXJlIGJhc2VkIG9uIFRhcCBk cml2ZXIpIGFuZCBiaW5kIHRoZQ0KPiBwb3J0cyB0byB0aGVpciBwcm94aWVzLiAgV2hlbiB1c2Vy IGlzc3VlcyBhIGNvbW1hbmQgY2hhbmdpbmcgTVRVIGZvcg0KPiBUYXAxIGludGVyZmFjZSB0aGUg bGlicmFyeSBub3RlcyB0aGlzIGFuZCBjYWxscyAibXR1X2NoYW5nZSIgY2FsbGJhY2sNCj4gZm9y IHRoZSBQb3J0MS4gIFNpbWlsYXJseSB3aGVuIHVzZXIgYWRkcyBhbiBJUHY0IGFkZHJlc3MgdG8g dGhlIFRhcDINCj4gaW50ZXJmYWNlICJhZGRyX2FkZCIgY2FsbGJhY2sgaXMgY2FsbGVkIGZvciB0 aGUgUG9ydDIuICBOb3RlIGFsc28gdGhhdA0KPiB0aGF0IG5vdCBvbmx5IHBvcnQgcmVsYXRlZCBj YWxsYmFja3MgYXJlIGF2YWlsYWJsZSAtIGZvciBleGFtcGxlIHlvdQ0KPiBjYW4NCj4gYWxzbyBn ZXQgaW5mb3JtYXRpb24gYWJvdXQgcm91dGluZyB0YWJsZS4gIFNlZSBiZWxvdyBmb3IgYSBjb21w bGV0ZQ0KPiBsaXN0DQo+IG9mIGF2YWlsYWJsZSBjYWxsYmFja3MuDQo+IA0KPiBQbGVhc2Ugbm90 ZSB0aGF0IG5vdGhpbmcgaGFzIGJlZW4gbWVudGlvbmVkIGFib3V0IGZvcndhcmRpbmcgb2YgdGhl DQo+IHBhY2tldHMgYmV0d2VlbiBzeXN0ZW0gYW5kIERQREsuICBTaW5jZSB0aGUgcHJveGllcyBh cmUgbm9ybWFsIERQREsNCj4gcG9ydHMgeW91IGNhbiByZWNlaXZlL3NlbmQgdG8gdGhlbSB2aWEg dXN1YWwgUlgvVFggYnVyc3QgQVBJLiAgSG93ZXZlcg0KPiBzaW5jZSB0aGUgbGlicmFyeSBpcyBu b3QgYXdhcmUgb2YgdGhlIHN0cnVjdHVyZSBvZiBwYWNrZXQgcHJvY2Vzc2luZw0KPiB1c2VkIGJ5 IHRoZSBhcHBsaWNhdGlvbiBpdCBjYW5ub3QgYXV0b21hdGljYWxseSBmb3J3YXJkIHRoZSBwYWNr ZXRzIC0NCj4gaXQNCj4gaXMgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGlu Y2x1ZGUgcHJveHkgcG9ydHMgaW50byBpdHMNCj4gcGFja2V0IHByb2Nlc3NpbmcgZW5naW5lLg0K PiANCj4gQXMgbWVudGlvbmVkIGFib3ZlIHRoZSBpbnRlbnRpb24gb2YgdGhlIGxpYnJhcnkgaXMg dG86DQo+IC0gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24g dGhhdCB3b3VsZCBhbGxvdw0KPiAgIGFwcGxpY2F0aW9uIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdp dGggdGhlIHBhY2tldHMgcmVjZWl2ZWQgb24gRFBESw0KPiAgIHBvcnRzLA0KPiAtIGFsbG93IGZv ciBjb250cm9sIG9mIHRoZSBwb3J0cyB2aWEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiB1dGlsaXRp ZXMNCj4gDQo+IEFsdGhvdWdoIHRoZSBsaWJyYXJ5IG9ubHkgaGVscHMgeW91IHRvIGlkZW50aWZ5 IHByb3h5IGZvciBnaXZlbiBwb3J0DQo+IChhbmQgdmljZSB2ZXJzYSkgYW5kIGNhbGxzIGFwcHJv cHJpYXRlIGNhbGxiYWNrcyBpdCBkb2VzIG9wZW4gc29tZQ0KPiBpbnRlcmVzdGluZyBwb3NzaWJp bGl0aWVzLiAgRm9yIGV4YW1wbGUgeW91IGNhbiB1c2UgdGhlIHByb3h5IHBvcnRzIHRvDQo+IGZv cndhcmQgcGFja2V0cyBmb3IgcHJvdG9jb2xzIHRoYXQgeW91IGRvIG5vdCB3aXNoIHRvIGhhbmRs ZSBpbiBEUERLDQo+IGFwcGxpY2F0aW9uIHRvIHRoZSBzeXN0ZW0gcHJvdG9jb2wgc3RhY2sgYW5k IGp1c3QgbGlzdGVuIHRvIHRoZQ0KPiBjb25maWd1cmF0aW9uIGNoYW5nZXMgLSBzbyB0aGF0IHdh eSB5b3UgY2FuICJvZmZsb2FkIiBoYW5kbGluZyBvZiB0aG9zZQ0KPiBwcm90b2NvbHMgdG8gdGhl IHN5c3RlbS4NCj4gDQo+IA0KPiBXaHkgdGhpcyBSRkMNCj4gPT09PT09PT09PT09DQo+IA0KPiBX ZSB3b3VsZCBsaWtlIHRvIHNvbGljaXQgc29tZSBpbnB1dCBmcm9tIHRoZSBjb21tdW5pdHk6DQo+ IC0gcmVnYXJkaW5nIHVzZWZ1bG5lc3Mgb2YgdGhpcyBsaWJyYXJ5DQo+IC0gd2hhdCBpcyBtaXNz aW5nIG9yIHdoYXQgbmVlZHMgdG8gYmUgY2hhbmdlZA0KPiAtIGFib3V0IGN1cnJlbnRseSBwcm9w b3NlZCBBUEkNCj4gLSBhbnkgb3RoZXIgc3VnZ2VzdGlvbnMgYW5kL29yIGltcHJvdmVtZW50cyBh cmUgYWxzbyB3ZWxjb21lDQo+IA0KPiANCj4gSG93IHRvIHVzZSBpdA0KPiA9PT09PT09PT09PT09 DQo+IA0KPiBVc2FnZSBvZiB0aGlzIGxpYnJhcnkgaXMgcmF0aGVyIHNpbXBsZS4gIFlvdSBoYXZl IHRvOg0KPiAxLiBDcmVhdGUgcHJveHkgKGlmIHlvdSBkb24ndCBoYXZlIHBvcnQgc3VpdGFibGUg Zm9yIGJlaW5nIHByb3h5IG9yIHlvdQ0KPiAgIGhhdmUgb25lIGJ1dCBkbyBub3Qgd2lzaCB0byB1 c2UgaXQgYXMgYSBwcm94eSkuDQo+IDIuIEJpbmQgcG9ydCB0byBwcm94eS4NCj4gMy4gUmVnaXN0 ZXIgY2FsbGJhY2tzLg0KPiA0LiBTdGFydCBsaXN0ZW5pbmcgdG8gdGhlIG5ldHdvcmsgY29uZmln dXJhdGlvbi4NCj4gDQo+IFRoZSBvbmx5IG1hbmRhdG9yeSByZXF1aXJlbWVudCBmb3IgRFBESyBw b3J0IHRvIGJlIGFibGUgdG8gYWN0IGFzDQo+IGEgcHJveHkgaXMgdGhhdCBpdCBpcyB2aXNpYmxl IGluIHRoZSBzeXN0ZW0gLSB0aGlzIGlzIGNoZWNrZWQgZHVyaW5nDQo+IHBvcnQgdG8gcHJveHkg YmluZGluZyBieSBjYWxsaW5nIHJ0ZV9ldGhfZGV2X2luZm9fZ2V0KCkgb24gcHJveHkgcG9ydA0K PiBhbmQgaW5zcGVjdGluZyAnaWZfaW5kZXgnIGZpZWxkIChpdCBoYXMgdG8gYmUgbm9uLXplcm8p Lg0KPiBPbmUgY2FuIGNyZWF0ZSBzdWNoIHBvcnQgaW4gdGhlIGFwcGxpY2F0aW9uIGJ5IGNhbGxp bmc6DQo+IA0KPiAgIHByb3h5X2lkID0gcnRlX2lmcHhfY3JlYXRlKFJURV9JRlBYX0RFRkFVTFQp Ow0KPiANCj4gVXBvbiBzdWNjZXNzIHRoaXMgcmV0dXJucyBpZCBvZiBEUERLIHByb3h5IHBvcnQg Y3JlYXRlZA0KPiAoUlRFX01BWF9FVEhQT1JUUyBvbiBmYWlsdXJlKS4gIFRoZSBhcmd1bWVudCBz ZWxlY3RzIHR5cGUgb2YgcHJveHkgcG9ydA0KPiB0byBjcmVhdGUgKGN1cnJlbnRseSBUYXAvS05J IG9ubHkpLiAgVGhpcyBmdW5jdGlvbiBhY3R1YWxseSBpcyBqdXN0DQo+IGEgd3JhcHBlciBhcm91 bmQ6DQo+IA0KPiAgIHVpbnQxNl90IHJ0ZV9pZnB4X2NyZWF0ZV9ieV9kZXZhcmcoY29uc3QgY2hh ciAqZGV2YXJnKTsNCj4gDQo+IGNyZWF0aW5nIHZhbGlkICdkZXZhcmcnIHN0cmluZyBmb3IgdGhl IGNob3NlbiB0eXBlIG9mIHByb3h5LiAgSWYgeW91DQo+IGhhdmUNCj4gb3RoZXIgZHJpdmVyIGNh cGFibGUgb2YgYWN0aW5nIGFzIGEgcHJveHkgeW91IGNhbiBjYWxsDQo+IHJ0ZV9pZnB4X2NyZWF0 ZV9ieV9kZXZhcmcoKSBkaXJlY3RseSBwYXNzaW5nIGFwcHJvcHJpYXRlIGFyZ3VtZW50Lg0KPiAN Cj4gT25jZSB5b3UgaGF2ZSBpZCBvZiBib3RoIHBvcnQgYW5kIHByb3h5IHlvdSBjYW4gYmluZCB0 aGUgdHdvIHZpYToNCj4gDQo+ICAgcnRlX2lmcHhfcG9ydF9iaW5kKHBvcnRfaWQsIHByb3h5X2lk KTsNCj4gDQo+IFRoaXMgY3JlYXRlcyBsb2dpY2FsIGJpbmRpbmcgLSBhcyBtZW50aW9uZWQgYWJv dmUgdGhlcmUgaXMgbm8gYXV0b21hdGljDQo+IHBhY2tldCBmb3J3YXJkaW5nLiAgV2l0aCB0aGlz IGJpbmRpbmcgd2hlbmV2ZXIgdXNlciBjaGFuZ2VzIHRoZSBzdGF0ZQ0KPiBvZg0KPiBwcm94eSBp bnRlcmZhY2UgaW4gdGhlIHN5c3RlbSAobGluayB1cC9kb3duLCBjaGFuZ2UgbWFjL210dSwgYWRk L3JlbW92ZQ0KPiBJUHY0L0lQdjYpIHlvdSBnZXQgYXBwcm9wcmlhdGUgY2FsbGJhY2sgY2FsbGVk IGZvciB0aGUgYm91bmQgcG9ydC4NCj4gDQo+IFNvIGZhciB3ZSd2ZSBtZW50aW9uZWQgc2V2ZXJh bCB0aW1lcyB0aGF0IHRoZSBsaWJyYXJ5IGNhbGxzIGNhbGxiYWNrcy4NCj4gVGhleSBhcmUgZ3Jv dXBlZCBpbiAnc3RydWN0IHJ0ZV9pZnB4X2NhbGxiYWNrcycgYW5kIHVzZXIgcHJvdmlkZXMgdGhl bQ0KPiB0byB0aGUgbGlicmFyeSB2aWE6DQo+IA0KPiAgIHJ0ZV9pZnB4X2NhbGxiYWNrc19yZWdp c3RlcigmY2JzKTsNCj4gDQo+IEl0IGlzIHdvcnRoIG1lbnRpb25pbmcgdGhhdCB0aGUgY29udGV4 dCAobGNvcmUvdGhyZWFkKSBpbiB3aGljaCB0aGVzZQ0KPiBjYWxsYmFja3MgYXJlIGNhbGxlZCBp cyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLiAgSXQgbWlnaHQgZGlmZmVyDQo+IGJldHdlZW4NCj4g ZGlmZmVyZW50IHBsYXRmb3Jtcywgc28gdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGFzc3VtZSB0 aGF0IHNvbWUga2luZA0KPiBvZiBpbnRlciBsY29yZS90aHJlYWQgc3luY2hyb25pemF0aW9uL2Nv bW11bmljYXRpb24gaXMgcmVxdWlyZWQuDQo+IA0KPiBPbmNlIHdlIGhhdmUgYmluZGluZ3MgaW4g cGxhY2UgYW5kIGNhbGxiYWNrcyByZWdpc3RlcmVkLCB0aGUgb25seQ0KPiBlc3NlbnRpYWwgcGFy dCB0aGF0IHJlbWFpbnMgaXMgdG8gZ2V0IHRoZSBjdXJyZW50IG5ldHdvcmsgY29uZmlndXJhdGlv bg0KPiBhbmQgc3RhcnQgbGlzdGVuaW5nIHRvIGl0cyBjaGFuZ2VzLiAgVGhpcyBpcyBhY2NvbXBs aXNoZWQgdmlhIGEgY2FsbA0KPiB0bzoNCj4gDQo+ICAgcnRlX2lmcHhfbGlzdGVuKCk7DQo+IA0K PiBBbmQgYmFzaWNhbGx5IHRoaXMgaXMgYWxsIG9uZSBuZWVkcyB0byB1bmRlcnN0YW5kIGhvdyB0 byB1c2UgdGhpcw0KPiBsaWJyYXJ5LiAgT3RoZXIgbGVzcyBlc3NlbnRpYWwgcGFydHMgaW5jbHVk ZToNCj4gLSBhYmlsaXR5IHRvIHF1ZXJ5IHdoYXQgY2FsbGJhY2tzIGFyZSBhdmFpbGFibGUgZm9y IGdpdmVuIHBsYXRmb3JtDQo+IC0gZ2V0dGluZyBtYXBwaW5nIGJldHdlZW4gcHJveHkgYW5kIHBv cnQNCj4gLSB1bmJpbmRpbmcgdGhlIHBvcnRzIGZyb20gcHJveHkNCj4gLSBkZXN0cm95aW5nIHBy b3h5IHBvcnQNCj4gLSBjbG9zaW5nIHRoZSBsaXN0ZW5pbmcgc2VydmljZQ0KPiAtIGdldHRpbmcg YmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgcHJveHkNCj4gDQo+IA0KPiBDdXJyZW50bHkgYXZhaWxh YmxlIGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbg0KPiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiANCj4gVGhlIGxpYnJhcnkncyBBUEkgaXMgc3lz dGVtIGluZGVwZW5kZW50IGJ1dCBpdCBvYnZpb3VzbHkgbmVlZHMgc29tZQ0KPiBzeXN0ZW0gZGVw ZW5kZW50IHBhcnRzLiAgV2UgcHJvdmlkZSBleGVtcGxhcnkgTGludXggaW1wbGVtZW50YXRpb24N Cj4gKGJhc2VkDQo+IG9uIG5ldGxpbmsgc29ja2V0cykuICBWZXJ5IHNpbWlsYXIgaW1wbGVtZW50 YXRpb24gaXMgcG9zc2libGUgZm9yDQo+IEZyZWVCU0QgKHdpdGggdGhlIHVzYWdlIG9mIFBGX1JP VVRFIHNvY2tldHMpLiAgV2luZG93cyBpbXBsZW1lbnRhdGlvbg0KPiB3b3VsZCBuZWVkIHRvIGRp ZmZlciBtdWNoIChwcm9iYWJseSBJUCBIZWxwZXIgbGlicmFyeSB3b3VsZCBiZSBvZiBzb21lDQo+ IGhlbHApLg0KPiANCj4gSGVyZSBpcyB0aGUgbGlzdCBvZiBjdXJyZW50bHkgaW1wbGVtZW50ZWQg Y2FsbGJhY2tzOg0KPiANCj4gc3RydWN0IHJ0ZV9pZnB4X2NhbGxiYWNrcyB7DQo+ICAgdm9pZCAg KCptYWNfY2hhbmdlKSh1aW50MTZfdCBwb3J0X2lkLCBjb25zdCBzdHJ1Y3QgcnRlX2V0aGVyX2Fk ZHINCj4gKm1hYyk7DQo+ICAgdm9pZCAgKCptdHVfY2hhbmdlKSh1aW50MTZfdCBwb3J0X2lkLCB1 aW50MTZfdCBtdHUpOw0KPiAgIHZvaWQgKCpsaW5rX2NoYW5nZSkodWludDE2X3QgcG9ydF9pZCwg aW50IGlzX3VwKTsNCj4gICB2b2lkICAgICgqYWRkcl9hZGQpKHVpbnQxNl90IHBvcnRfaWQsIHVp bnQzMl90IGlwKTsNCj4gICB2b2lkICAgICgqYWRkcl9kZWwpKHVpbnQxNl90IHBvcnRfaWQsIHVp bnQzMl90IGlwKTsNCj4gICB2b2lkICAgKCphZGRyNl9hZGQpKHVpbnQxNl90IHBvcnRfaWQsIGNv bnN0IHVpbnQ4X3QgKmlwKTsNCj4gICB2b2lkICAgKCphZGRyNl9kZWwpKHVpbnQxNl90IHBvcnRf aWQsIGNvbnN0IHVpbnQ4X3QgKmlwKTsNCj4gICB2b2lkICAgKCpyb3V0ZV9hZGQpKHVpbnQzMl90 IGlwLCB1aW50OF90IGRlcHRoKTsNCj4gICB2b2lkICAgKCpyb3V0ZV9kZWwpKHVpbnQzMl90IGlw LCB1aW50OF90IGRlcHRoKTsNCj4gICB2b2lkICAoKnJvdXRlNl9hZGQpKGNvbnN0IHVpbnQ4X3Qg KmlwLCB1aW50OF90IGRlcHRoKTsNCj4gICB2b2lkICAoKnJvdXRlNl9kZWwpKGNvbnN0IHVpbnQ4 X3QgKmlwLCB1aW50OF90IGRlcHRoKTsNCj4gICB2b2lkICgqY2ZnX2ZpbmlzaGVkKSh2b2lkKTsN Cj4gfTsNCj4gDQo+IFRoZXkgYXJlIGFsbCByYXRoZXIgc2VsZi1kZXNjcmlwdGl2ZSB3aXRoIHRo ZSBleGNlcHRpb24gb2YgdGhlIGxhc3QNCj4gb25lLg0KPiBXaGVuIHRoZSB1c2VyIGNhbGxzIHJ0 ZV9pZnB4X2xpc3RlbigpIHRoZSBsaWJyYXJ5IGZpcnN0IHF1ZXJpZXMgdGhlDQo+IHN5c3RlbSBm b3IgaXRzIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFRoYXQgbWlnaHQgcmVxdWlyZSBzZXZlcmFs DQo+IHJlcXVlc3QvcmVwbHkgZXhjaGFuZ2VzIGJldHdlZW4gRFBESyBhbmQgc3lzdGVtIGFuZCBv bmNlIGl0IGlzIGZpbmlzaGVkDQo+IHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHRvIGxldCBhcHBs aWNhdGlvbiBrbm93IHRoYXQgYWxsIGluZm8gaGFzIGJlZW4NCj4gZ2F0aGVyZWQuDQo+IA0KPiBC VFcgYXQgdGhlIG1vbWVudCBhbGwgSVB2NCBhZGRyZXNzZXMgYXJlIHBhc3NlZCBpbiBob3N0IG9y ZGVyLg0KPiANCj4gSXQgaXMgd29ydGggdG8gbWVudGlvbiBhbHNvIHRoYXQgd2hpbGUgdHlwaWNh bCBjYXNlIHdvdWxkIGJlIGEgMS10by0xDQo+IG1hcHBpbmcgYmV0d2VlbiBwb3J0IGFuZCBwcm94 eSwgdGhlIDEtdG8tbWFueSBtYXBwaW5nIGlzIGFsc28NCj4gc3VwcG9ydGVkLg0KPiBJbiB0aGF0 IGNhc2UgcG9ydCByZWxhdGVkIGNhbGxiYWNrcyB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBwb3J0 IGJvdW5kDQo+IHRvIGdpdmVuIHByb3h5IGludGVyZmFjZSAtIGluIHRoYXQgY2FzZSBpdCBpcyBh cHBsaWNhdGlvbg0KPiByZXNwb25zaWJpbGl0eQ0KPiB0byBkZWZpbmUgc2VtYW50aWMgb2Ygc3Vj aCBtYXBwaW5nIChlLmcuIGFsbCBjaGFuZ2VzIGFwcGx5IHRvIGFsbA0KPiBwb3J0cywNCj4gb3Ig bGluayBjaGFuZ2VzIGFwcGx5IHRvIGFsbCBidXQgb3RoZXIgYXJlIGFjY2VwdGVkIGluICJyb3Vu ZCByb2JpbiINCj4gZmFzaGlvbiwgb3IgLi4uKS4NCj4gDQo+IEFzIG1lbnRpb25lZCBhYm92ZSBM aW51eCBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBuZXRsaW5rIHNvY2tldC4NCj4gVGhpcyBz b2NrZXQgaXMgcmVnaXN0ZXJlZCBhcyBmaWxlIGRlc2NyaXB0b3IgaW4gRUFMIGludGVycnVwdHMN Cj4gKHNpbWlsYXJseSB0byBob3cgRUFMIGFsYXJtcyBhcmUgaW1wbGVtZW50ZWQpLg0KPiANCj4g DQo+IFdoYXQgaXMgaW5zaWRlIHRoaXMgUkZDDQo+ID09PT09PT09PT09PT09PT09PT09PT09DQo+ IC0gMSBjb21taXQgZm9yIEFQSQ0KPiAtIDEgY29tbWl0IGZvciBpbXBsZW1lbnRhdGlvbiAtIHRo aXMgaXMganVzdCB0byBzaG93IFBvQywgYW5kIGFsbG93IGZvcg0KPiAgIGVhcmx5IHBsYXlpbmcg YXJvdW5kIHdpdGggdGhlIGlkZWEgKGUuZy4gcnVuIHRoZSB0ZXN0L2V4YW1wbGUgZnJvbQ0KPiB0 aGUNCj4gICBuZXh0IGNvbW1pdCkNCj4gLSAxIGNvbW1pdCBmb3IgdGVzdC9leGFtcGxlIC0ganVz dCB0byBzaG93IGhvdyB0aGlzIGNhbiBiZSB1c2VkDQo+IA0KPiANCj4gTmV4dCBzdGVwcw0KPiA9 PT09PT09PT09DQo+IA0KPiAtIGdhdGhlciBjb21tdW5pdHkgZmVlZGJhY2sNCj4gLSBwb2xpc2gg dGhlIGltcGxlbWVudGF0aW9uOg0KPiAgICogY2FsbCB0aGUgbm90aWZpY2F0aW9uIGNhbGxiYWNr cyB3aXRob3V0IGxvY2sgaGVsZCAoYXQgdGhlIG1vbWVudA0KPiAgICAgYXR0ZW1wdHMgdG8gbW9k aWZ5IGNhbGxiYWNrcyBmcm9tIHdpdGhpbiB0aGUgY2FsbGJhY2sgd291bGQNCj4gZGVhZGxvY2sp DQo+ICAgKiBzZXBhcmF0ZSB0aGUgc3lzdGVtIGRlcGVuZGVudCBwYXJ0cyBmcm9tIHRoZSByZXN0 IHNvIHRoYXQgaXQgaXMNCj4gZWFzeQ0KPiAgICAgdG8gZmlndXJlIG91dCB3aGF0IG5lZWRzIHRv IGJlIHJlaW1wbGVtZW50ZWQgb24gZGlmZmVyZW50IHBsYXRmb3Jtcw0KPiAgICogYXBwbHkgY29t bXVuaXR5IHN1Z2dlc3Rpb25zIC0gaWYgYW55DQo+IC0gYWRkIG5laWdoYm91ciBjYWxsYmFja3Mg KEFSUCB0YWJsZSkNCj4gDQo+IEJlc3QgcmVnYXJkcw0KPiBBbmRyemVqIE9zdHJ1c3prYQ0KPiAN Cj4gQW5kcnplaiBPc3RydXN6a2EgKDMpOg0KPiAgIGxpYjogaW50cm9kdWNlIElGIHByb3h5IGxp YnJhcnkgKEFQSSkNCj4gICBpZl9wcm94eTogYWRkIHByZWxpbWluYXJ5IExpbnV4IGltcGxlbWVu dGF0aW9uDQo+ICAgaWZfcHJveHk6IGFkZCBleGFtcGxlLCB0ZXN0IGFuZCBkb2N1bWVudGF0aW9u DQo+IA0KPiAgYXBwL3Rlc3QvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA1ICsNCj4gIGFwcC90ZXN0L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArDQo+ICBhcHAvdGVzdC90ZXN0X2lmX3Byb3h5LmMgICAgICAgICAgICAgICAgICAgICAg fCA0MzEgKysrKysrKysrKw0KPiAgY29uZmlnL2NvbW1vbl9iYXNlICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA1ICsNCj4gIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9pZl9wcm94eV9saWIu cnN0ICAgICAgICB8IDEwMyArKysNCj4gIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9pbmRleC5yc3Qg ICAgICAgICAgICAgICB8ICAgMSArDQo+ICBleGFtcGxlcy9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgZXhhbXBsZXMvaWZfcHJveHkvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgIHwgIDU4ICsrDQo+ICBleGFtcGxlcy9pZl9wcm94eS9tYWluLmMgICAg ICAgICAgICAgICAgICAgICAgfCAyMDMgKysrKysNCj4gIGV4YW1wbGVzL2lmX3Byb3h5L21lc29u LmJ1aWxkICAgICAgICAgICAgICAgICB8ICAxMiArDQo+ICBleGFtcGxlcy9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gIGxpYi9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ICAuLi4vY29tbW9uL2luY2x1ZGUv cnRlX2VhbF9pbnRlcnJ1cHRzLmggICAgICAgfCAgIDIgKw0KPiAgbGliL2xpYnJ0ZV9lYWwvbGlu dXgvZWFsL2VhbF9pbnRlcnJ1cHRzLmMgICAgIHwgIDE0ICstDQo+ICBsaWIvbGlicnRlX2lmX3By b3h5L01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgMjUgKw0KPiAgbGliL2xpYnJ0ZV9pZl9w cm94eS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgIHwgICA3ICsNCj4gIGxpYi9saWJydGVfaWZf cHJveHkvcnRlX2lmX3Byb3h5LmMgICAgICAgICAgICB8IDgwMyArKysrKysrKysrKysrKysrKysN Cj4gIGxpYi9saWJydGVfaWZfcHJveHkvcnRlX2lmX3Byb3h5LmggICAgICAgICAgICB8IDM2NCAr KysrKysrKw0KPiAgbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICstDQo+ICAxOSBmaWxlcyBjaGFuZ2VkLCAyMDM1IGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXBwL3Rlc3QvdGVzdF9pZl9wcm94eS5j DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2lmX3Byb3h5X2xp Yi5yc3QNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9pZl9wcm94eS9NYWtlZmlsZQ0K PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2lmX3Byb3h5L21haW4uYw0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2lmX3Byb3h5L21lc29uLmJ1aWxkDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliL2xpYnJ0ZV9pZl9wcm94eS9NYWtlZmlsZQ0KPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYi9saWJydGVfaWZfcHJveHkvbWVzb24uYnVpbGQNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWIvbGlicnRlX2lmX3Byb3h5L3J0ZV9pZl9wcm94eS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliL2xpYnJ0ZV9pZl9wcm94eS9ydGVfaWZfcHJveHkuaA0KPiANCj4gLS0NCj4gMi4xNy4x DQo+IA0KDQo=