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 55E3543C07 for ; Tue, 27 Feb 2024 11:41:11 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4517C4027D; Tue, 27 Feb 2024 11:41:11 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 84F4F40150; Tue, 27 Feb 2024 11:41:09 +0100 (CET) Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TkYpD1W5pz6K8FH; Tue, 27 Feb 2024 18:37:24 +0800 (CST) Received: from frapeml100008.china.huawei.com (unknown [7.182.85.131]) by mail.maildlp.com (Postfix) with ESMTPS id B6378140D26; Tue, 27 Feb 2024 18:41:08 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100008.china.huawei.com (7.182.85.131) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 27 Feb 2024 11:41:08 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.035; Tue, 27 Feb 2024 11:41:08 +0100 From: Konstantin Ananyev To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Andrew Rybchenko" , Ferruh Yigit , Kaiwen Deng , "dev@dpdk.org" CC: "stable@dpdk.org" , "qiming.yang@intel.com" , "yidingx.zhou@intel.com" , Aman Singh , Yuying Zhang , David Marchand , "Thomas Monjalon" , Jerin Jacob Subject: RE: [PATCH v2] app/testpmd: use Tx preparation in txonly engine Thread-Topic: [PATCH v2] app/testpmd: use Tx preparation in txonly engine Thread-Index: AQHaRFRkjdCCtAptyE+no5avCHrrtrD/rEgAgADB6ZCAAA2bsIAE2D1ggALj3kCADqCK0IAA9QsAgAUX7nCAAAGOIIABYEfA Date: Tue, 27 Feb 2024 10:41:08 +0000 Message-ID: References: <20240103012912.4334-1-kaiwenx.deng@intel.com> <20240111052555.35930-1-kaiwenx.deng@intel.com> <38baef9c-103a-4be4-8546-e9ea35abc46f@amd.com> <98CBD80474FA8B44BF855DF32C47DC35E9F1FE@smartserver.smartshare.dk> <918593c56c5745a285facc47b6cdc76b@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35E9F20C@smartserver.smartshare.dk> <670ee735254244878e4b1247a8850be5@huawei.com> <545e4c08-f4cf-4246-9ed3-22882c754640@oktetlabs.ru> <2b264320ddd5499b8e3899708a44cab6@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35E9F268@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35E9F268@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.138.42] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org DQoNCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2Ml0gYXBwL3Rlc3RwbWQ6IHVzZSBUeCBwcmVwYXJh dGlvbiBpbiB0eG9ubHkgZW5naW5lDQo+IA0KPiA+ID4gPj4+Pj4+PiBUU08gYnJlYWtzIHdoZW4g TVNTIHNwYW5zIG1vcmUgdGhhbiA4IGRhdGEgZnJhZ21lbnRzLiBUaG9zZQ0KPiA+ID4gPj4+Pj4+ PiBwYWNrZXRzIHdpbGwgYmUgZHJvcHBlZCBieSBUeCBwcmVwYXJhdGlvbiBBUEksIGJ1dCBpdCB3 aWxsDQo+ID4gPiA+Pj4gY2F1c2UNCj4gPiA+ID4+Pj4+Pj4gTUREIGV2ZW50IGlmIHR4b25seSBm b3J3YXJkaW5nIGVuZ2luZSBkb2VzIG5vdCBjYWxsIHRoZSBUeA0KPiA+ID4gPj4+Pj4gcHJlcGFy YXRpb24NCj4gPiA+ID4+Pj4+Pj4gQVBJIGJlZm9yZSB0cmFuc21pdHRpbmcgcGFja2V0cy4NCj4g PiA+ID4+Pj4+Pj4NCj4gPiA+ID4+Pj4+Pg0KPiA+ID4gPj4+Pj4+IHR4b25seSBpcyB1c2VkIGNv bW1vbmx5LCBhZGRpbmcgVHggcHJlcGFyZSBmb3IgYSBzcGVjaWZpYyBjYXNlDQo+ID4gPiA+Pj4g bWF5DQo+ID4gPiA+Pj4+Pj4gaW1wYWN0IHBlcmZvcm1hbmNlIGZvciB1c2Vycy4NCj4gPiA+ID4+ Pj4+Pg0KPiA+ID4gPj4+Pj4+IFdoYXQgaGFwcGVucyB3aGVuIGRyaXZlciB0aHJvd3MgTUREIChN YWxpY2lvdXMgRHJpdmVyDQo+ID4gRGV0ZWN0aW9uKQ0KPiA+ID4gPj4+Pj4gZXZlbnQsDQo+ID4g PiA+Pj4+Pj4gY2FuJ3QgaXQgYmUgaWdub3JlZD8gQXMgeW91IGFyZSBhbHJlYWR5IE9LIHRvIGRy b3AgdGhlIHBhY2tldCwNCj4gPiA+ID4+PiBjYW4NCj4gPiA+ID4+Pj4+PiBkZXZpY2UgYmUgY29u ZmlndXJlZCB0byBkcm9wIHRoZXNlIHBhY2thZ2VzPw0KPiA+ID4gPj4+Pj4+DQo+ID4gPiA+Pj4+ Pj4NCj4gPiA+ID4+Pj4+PiBPciBhcyBKZXJpbiBzdWdnZXN0ZWQgYWRkaW5nIGEgbmV3IGZvcndh cmRpbmcgZW5naW5lIGlzIGENCj4gPiA+ID4+PiBzb2x1dGlvbiwNCj4gPiA+ID4+Pj4+IGJ1dA0K PiA+ID4gPj4+Pj4+IHRoYXQgd2lsbCBjcmVhdGUgY29kZSBkdXBsaWNhdGlvbiwgSSBwcmVmZXIg dG8gbm90IGhhdmUgaXQgaWYNCj4gPiA+ID4+PiB0aGlzDQo+ID4gPiA+Pj4+PiBjYW4NCj4gPiA+ ID4+Pj4+PiBiZSBoYW5kbGVkIGluIGRldmljZSBsZXZlbC4NCj4gPiA+ID4+Pj4+DQo+ID4gPiA+ Pj4+PiBBY3R1YWxseSBJIGFtIGFncmVlIHdpdGggdGhlIGF1dGhvciBvZiB0aGUgcGF0Y2ggLSB3 aGVuIFRYDQo+ID4gb2ZmbG9hZHMNCj4gPiA+ID4+Pj4+IGFuZC9vciBtdWx0aXNlZ3MgYXJlIGVu YWJsZWQsDQo+ID4gPiA+Pj4+PiB1c2VyIHN1cHBvc2VkIHRvIGludm9rZSBldGhfdHhfcHJlcGFy ZSgpLg0KPiA+ID4gPj4+Pj4gTm90IGRvaW5nIHRoYXQgc2VlbXMgbGlrZSBhIGJ1ZyB0byBtZS4N Cj4gPiA+ID4+Pj4NCj4gPiA+ID4+Pj4gSSBzdHJvbmdseSBkaXNhZ3JlZSB3aXRoIHRoYXQgc3Rh dGVtZW50LCBLb25zdGFudGluIQ0KPiA+ID4gPj4+PiBJdCBpcyBub3QgZG9jdW1lbnRlZCBhbnl3 aGVyZSB0aGF0IHVzaW5nIFRYIG9mZmxvYWRzIGFuZC9vcg0KPiA+IG11bHRpc2Vncw0KPiA+ID4g Pj4+IHJlcXVpcmVzIGNhbGxpbmcgcnRlX2V0aF90eF9wcmVwYXJlKCkgYmVmb3JlDQo+ID4gPiA+ Pj4+IHJ0ZV9ldGhfdHhfYnVyc3QoKS4gQW5kIG5vbmUgb2YgdGhlIGV4YW1wbGVzIGRvIGl0Lg0K PiA+ID4gPj4+DQo+ID4gPiA+Pj4gSW4gZmFjdCwgd2UgZG8gdXNlIGl0IGZvciB0ZXN0LXBtZC9j c3Vtb25seS5jLg0KPiA+ID4gPj4+IEFib3V0IG90aGVyIHNhbXBsZSBhcHBzOg0KPiA+ID4gPj4+ IEFGQUlLLCBub3QgbWFueSBvZiBvdGhlciBEUERLIGFwcHMgZG8gdXNlIEw0IG9mZmxvYWRzLg0K PiA+ID4gPj4+IFJpZ2h0IG5vdyBzcGVjaWFsIHRyZWF0bWVudCAocHNldWRvLWhlYWRlciBja3N1 bSBjYWxjdWxhdGlvbikgaXMNCj4gPiBuZWVkZWQNCj4gPiA+ID4+PiBvbmx5IGZvciBMNCBvZmZs b2FkcyAoQ0tTVU0sIFNFRykuDQo+ID4gPiA+Pj4gU28sIG1ham9yaXR5IG9mIG91ciBhcHBzIHdo byByZWx5IG9uIG90aGVyIFRYIG9mZmxvYWRzIChtdWx0aS1zZWcsDQo+ID4gaXB2NA0KPiA+ID4g Pj4+IGNrc3VtLCB2bGFuIGluc2VydGlvbikgaGFwcGlseSBydW4gd2l0aG91dA0KPiA+ID4gPj4+ IGNhbGxpbmcgdHhfcHJlcGFyZSgpLCBldmVuIHRob3VnaCBpdCBpcyBub3QgdGhlIHNhZmVzdCB3 YXkuDQo+ID4gPiA+Pj4NCj4gPiA+ID4+Pj4NCj4gPiA+ID4+Pj4gSW4gbXkgb3BpbmlvbjoNCj4g PiA+ID4+Pj4gSWYgc29tZSBkcml2ZXIgaGFzIGxpbWl0YXRpb25zIGZvciBhIGZlYXR1cmUsIGUu Zy4gbWF4IDgNCj4gPiBmcmFnbWVudHMsDQo+ID4gPiA+Pj4gaXQgc2hvdWxkIGJlIGRvY3VtZW50 ZWQgZm9yIHRoYXQgZHJpdmVyLCBzbyB0aGUgYXBwbGljYXRpb24NCj4gPiA+ID4+Pj4gZGV2ZWxv cGVyIGNhbiBtYWtlIHRoZSBhcHByb3ByaWF0ZSBkZWNpc2lvbnMgd2hlbiBkZXNpZ25pbmcgdGhl DQo+ID4gPiA+Pj4gYXBwbGljYXRpb24uDQo+ID4gPiA+Pj4+IEZ1cnRoZXJtb3JlLCB3ZSBoYXZl IEFQSXMgZm9yIHRoZSBkcml2ZXJzIHRvIGV4cG9zZSB0byB0aGUNCj4gPiA+ID4+PiBhcHBsaWNh dGlvbnMgd2hhdCB0aGUgZHJpdmVyIHN1cHBvcnRzLCBzbyB0aGUgYXBwbGljYXRpb24gY2FuDQo+ ID4gY29uZmlndXJlDQo+ID4gPiA+Pj4+IGl0c2VsZiBvcHRpbWFsbHkgYXQgc3RhcnR1cC4gUGVy aGFwcyB0aG9zZSBBUElzIG5lZWQgdG8gYmUNCj4gPiBleHBhbmRlZC4NCj4gPiA+ID4+Pj4gQW5k IGlmIGEgZmVhdHVyZSBsaW1pdGF0aW9uIGlzIGNvbW1vbiBhY3Jvc3MgdGhlIG1ham9yaXR5IG9m DQo+ID4gZHJpdmVycywNCj4gPiA+ID4+PiB0aGF0IGxpbWl0YXRpb24gc2hvdWxkIGJlIG1lbnRp b25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUNCj4gPiA+ID4+Pj4gZmVhdHVyZSBpdHNl bGYuDQo+ID4gPiA+Pj4NCj4gPiA+ID4+PiBNYW55IG9mIHN1Y2ggbGltaXRhdGlvbnMgKmFyZSog ZG9jdW1lbnRlZCBhbmQgaW4gZmFjdCB3ZSBkbyBoYXZlDQo+ID4gYW4gQVBJDQo+ID4gPiA+Pj4g dG8gY2hlY2sgbWF4IHNlZ21lbnRzIHRoYXQgZWFjaCBkcml2ZXIgc3VwcG9ydCwNCj4gPiA+ID4+ PiBzZWUgc3RydWN0IHJ0ZV9ldGhfZGVzY19saW0uDQo+ID4gPiA+Pg0KPiA+ID4gPj4gWWVzLCB0 aGlzIGlzIHRoZSBraW5kIG9mIEFQSSB3ZSBzaG91bGQgcHJvdmlkZSwgc28gdGhlIGFwcGxpY2F0 aW9uDQo+ID4gY2FuIGNvbmZpZ3VyZSBpdHNlbGYgYXBwcm9wcmlhdGVseS4NCj4gPiA+ID4+DQo+ ID4gPiA+Pj4gVGhlIHByb2JsZW0gaXM6DQo+ID4gPiA+Pj4gLSBub25lIG9mIG91ciBzYW1wbGUg YXBwIGRvZXMgcHJvcGVyIGNoZWNrIG9uIHRoZXNlIHZhbHVlcywgc28NCj4gPiB1c2Vycw0KPiA+ ID4gPj4+IGRvbid0IGhhdmUgYSBnb29kIGV4YW1wbGUgaG93IHRvIGRvIGl0Lg0KPiA+ID4gPj4N Cj4gPiA+ID4+IEFncmVlZC4NCj4gPiA+ID4+IEFkZGluZyBhbiBleGFtcGxlIHNob3dpbmcgaG93 IHRvIGRvIGl0IHByb3Blcmx5IHdvdWxkIGJlIHRoZSBiZXN0DQo+ID4gc29sdXRpb24uDQo+ID4g PiA+PiBDYWxsaW5nIHR4X3ByZXBhcmUoKSBpbiB0aGUgZXhhbXBsZXMgaXMgY2VydGFpbmx5IG5v dCB0aGUgc29sdXRpb24uDQo+ID4gPiA+Pg0KPiA+ID4gPj4+IC0gd2l0aCBjdXJyZW50IERQREsg QVBJIG5vdCBhbGwgb2YgSFcvUE1EIHJlcXVpcmVtZW50cyBjb3VsZCBiZQ0KPiA+ID4gPj4+IGV4 dHJhY3RlZCBwcm9ncmFtbWF0aWNhbGx5Og0KPiA+ID4gPj4+ICAgIGxldCBzYXkgbWFqb3JpdHkg b2YgSW50ZWwgUE1EcyBmb3IgVENQIG9mZmxvYWRzIGV4cGVjdCBwc2V1ZG8tDQo+ID4gaGVhZGVy DQo+ID4gPiA+Pj4gY2tzdW0gdG8gYmUgcHJlLWNhbGN1bGF0ZWQgYnkgdGhlIFNXLg0KPiA+ID4g Pj4NCj4gPiA+ID4+IEkgaG9wZSB0aGlzIHJlcXVpcmVtZW50IGlzIGRvY3VtZW50ZWQgc29tZXdo ZXJlLg0KPiA+ID4gPj4NCj4gPiA+ID4+PiAgICBhbm90aGVyIGV4YW1wbGUsIHNvbWUgSFcgZXhw ZWN0cyBwa3RfbGVuIHRvIGJlIGJpZ2dlciB0aGVuIHNvbWUNCj4gPiA+ID4+PiB0aHJlc2hvbGQg dmFsdWUsIG90aGVyd2lzZSBIVyBoYW5nIG1heSBhcHBlYXIuDQo+ID4gPiA+Pg0KPiA+ID4gPj4g SSBob3BlIHRoaXMgcmVxdWlyZW1lbnQgaXMgYWxzbyBkb2N1bWVudGVkIHNvbWV3aGVyZS4NCj4g PiA+ID4NCj4gPiA+ID4gTm8gaWRlYSwgSSBmb3VuZCBpdCBvbmx5IGluIHRoZSBjb2RlLg0KPiA+ ID4NCj4gPiA+IElNSE8gVHggYnVyc3QgbXVzdCBjaGVjayBzdWNoIGxpbWl0YXRpb25zLiBJZiB5 b3UgbWFkZSB5b3VyIEhXIHNpbXBsZXINCj4gPiA+IChvciBqdXN0IGxvc3QgaXQgb24gaW5pdGlh bCB0ZXN0aW5nKSwgcGF5IGluIHlvdXIgZHJpdmVycyAob3IgeW91cg0KPiA+ID4gSFcrZHJpdmVy IHdpbGwgYmUgdW51c2FibGUgYmVjYXVzZSBvZiBzdWNoIHByb2JsZW1zKS4NCj4gPiA+DQo+ID4g PiA+PiBHZW5lcmFsbHksIGlmIHRoZSByZXF1aXJlbWVudHMgY2Fubm90IGJlIGV4dHJhY3RlZA0K PiA+IHByb2dyYW1tYXRpY2FsbHksIHRoZXkgbXVzdCBiZSBwcm9taW5lbnRseSBkb2N1bWVudGVk LCBsaWtlIHRoaXMgbm90ZSB0bw0KPiA+ID4gPj4gcnRlX2V0aF9yeF9idXJzdCgpOg0KPiA+ID4g Pg0KPiA+ID4gPiBPYnZpb3VzbHksIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBpcyBhbHdh eXMgZ29vZCwgYnV0Li4uDQo+ID4gPiA+IFJpZ2h0IG5vdyB3ZSBoYXZlIDUwKyBkaWZmZXJlbnQg UE1EcyBmcm9tIGRpZmZlcmVudCB2ZW5kb3JzLg0KPiA+ID4gPiBFdmVuIGlmIGVhY2ggYW5kIGV2 ZXJ5IG9mIHRoZW0gd2lsbCBjYXJlZnVsbHkgZG9jdW1lbnQgYWxsIHBvc3NpYmxlDQo+ID4gbGlt aXRhdGlvbnMgYW5kIG5lY2Vzc2FyeSBwcmVwYXJhdGlvbiBzdGVwcywNCj4gPiA+ID4gaG93IERQ REsgYXBwIGRldmVsb3BlciBzdXBwb3NlZCB0byAgZGVhbCB3aXRoIGFsbCB0aGF0Pw0KPiA+ID4g PiBEbyB5b3UgZXhwZWN0IGV2ZXJ5b25lLCB0byByZWFkIGNhcmVmdWxseSB0aHJvdWdoIGFsbCBv ZiB0aGVtLCBhbmQNCj4gPiBoYW5kbGUgYWxsIG9mIHRoZW0gcHJvcGVybHkgb2ggaGlzIG93bg0K PiA+ID4gPiBpbiBlYWNoIGFuZCBldmVyeSBEUERLIGFwcCBoZSBpcyBnb2luZyB0byB3cml0ZT8N Cj4gPiA+ID4gVGhhdCBzZWVtcyB1bnJlYWxpc3RpYy4NCj4gPiA+ID4gQWdhaW4gd2hhdCB0byBk byB3aXRoIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6IHdoZW4gbmV3IGRyaXZlciAod2l0aA0KPiA+ IG5ldyBsaW1pdGF0aW9ucykgd2lsbCBhcmlzZQ0KPiA+ID4gPiAqYWZ0ZXIqIHlvdXIgYXBwIGlz IGFscmVhZHkgd3JpdHRlbiBhbmQgdGVzdGVkPw0KPiA+ID4NCj4gPiA+ICsxDQo+ID4gPg0KPiA+ ID4gPj4NCj4gPiA+ID4+ICAgKiBAbm90ZQ0KPiA+ID4gPj4gICAqICAgU29tZSBkcml2ZXJzIHVz aW5nIHZlY3RvciBpbnN0cnVjdGlvbnMgcmVxdWlyZSB0aGF0ICpuYl9wa3RzKg0KPiA+IGlzDQo+ ID4gPiA+PiAgICogICBkaXZpc2libGUgYnkgNCBvciA4LCBkZXBlbmRpbmcgb24gdGhlIGRyaXZl ciBpbXBsZW1lbnRhdGlvbi4NCj4gPiA+DQo+ID4gPiBJJ20gd29uZGVyaW5nIHdoYXQgYXBwbGlj YXRpb24gc2hvdWxkIGRvIGlmIGl0IG5lZWRzIHRvIHNlbmQganVzdCBvbmUNCj4gPiA+IHBhY2tl dCBhbmQgZG8gaXQgbm93LiBJTUhPLCBzdWNoIGxpbWl0YXRpb25zIGFyZSBub3QgYWNjZXB0YWJs ZS4NCj4gDQo+IFRoaXMgY29tbW9uIGxpbWl0YXRpb24gZm9yIHZlY3RvciBkcml2ZXJzIGlzIGZv ciBSWCBidXJzdCwgbm90IFRYIGJ1cnN0Lg0KPiBJIGFncmVlIHN1Y2ggYSBsaW1pdGF0aW9uIHdv dWxkIGJlIHVuYWNjZXB0YWJsZSBmb3IgVFguDQo+IA0KPiA+ID4NCj4gPiA+ID4+DQo+ID4gPiA+ Pj4gLSBBcyBuZXcgSFcgYW5kIFBNRCBrZWVwIGFwcGVhcmluZyBpdCBpcyBoYXJkIHRvIHByZWRp Y3Qgd2hhdA0KPiA+IGV4dHJhDQo+ID4gPiA+Pj4gbGltaXRhdGlvbnMvcmVxdWlyZW1lbnRzIHdp bGwgYXJpc2UsDQo+ID4gPiA+Pj4gICAgdGhhdCdzIHdoeSB0eF9wcmVwYXJlKCkgd2FzIGludHJv ZHVjZWQgYXMgcyBkcml2ZXIgb3AuDQo+ID4gPiA+Pj4NCj4gPiA+ID4+Pj4NCj4gPiA+ID4+Pj4g V2UgZG9uJ3Qgd2FudCB0byBjaGVjayBpbiB0aGUgZmFzdCBwYXRoIHdoYXQgY2FuIGJlIGNoZWNr ZWQgYXQNCj4gPiA+ID4+PiBzdGFydHVwIG9yIGJ1aWxkIHRpbWUhDQo+ID4gPiA+Pj4NCj4gPiA+ ID4+PiBJZiB5b3VyIGFwcCBzdXBwb3NlZCB0byB3b3JrIHdpdGgganVzdCBhIGZldywga25vd24g aW4gYWR2YW5jZSwNCj4gPiBOSUMNCj4gPiA+ID4+PiBtb2RlbHMsIHRoZW4gc3VyZSwgeW91IGNh biBkbyB0aGF0Lg0KPiA+ID4gPj4+IEZvciBhcHBzIHRoYXQgc3VwcG9zZWQgdG8gd29yayAnaW4g Z2VuZXJhbCcgIHdpdGggYW55IHBvc3NpYmxlDQo+ID4gUE1Ecw0KPiA+ID4gPj4+IHRoYXQgRFBE SyBzdXBwb3J0cyAtIHRoYXQgbWlnaHQgYmUgYSBwcm9ibGVtLg0KPiA+ID4gPj4+IFRoYXQncyB3 aHkgdHhfcHJlcGFyZSgpIHdhcyBpbnRyb2R1Y2VkIGFuZCBpdCBpcyBzdHJvbmdseQ0KPiA+IHJl Y29tbWVuZGVkDQo+ID4gPiA+Pj4gdG8gdXNlIGl0IGJ5IHRoZSBhcHBzIHRoYXQgZG8gdXNlIFRY IG9mZmxvYWRzLg0KPiA+ID4gPj4+IFByb2JhYmx5IHR4X3ByZXBhcmUoKSBpcyBub3QgdGhlIGJl c3QgcG9zc2libGUgYXBwcm9hY2gsIGJ1dCByaWdodA0KPiA+IG5vdw0KPiA+ID4gPj4+IHRoZXJl IGFyZSBub3QgbWFueSBhbHRlcm5hdGl2ZXMgd2l0aGluIERQREsuDQo+ID4gPiA+Pg0KPiA+ID4g Pj4gV2hhdCBleGFjdGx5IGlzIGFuIGFwcGxpY2F0aW9uIHN1cHBvc2VkIHRvIGRvIGlmIHR4X3By ZXBhcmUoKQ0KPiA+IGRvZXNuJ3QgYWNjZXB0IHRoZSBmdWxsIGJ1cnN0PyBJdCBkb2Vzbid0IHJl dHVybiBpbmZvcm1hdGlvbiBhYm91dA0KPiA+ID4gd2hhdCBpcw0KPiA+ID4gPj4gd3JvbmcuDQo+ ID4gPiA+DQo+ID4gPiA+IEl0IHByb3ZpZGVzIHNvbWUgaW5mb3JtYXRpb24sIGJ1dCBpdCBpcyAq dmVyeSogbGltaXRlZDoganVzdCBpbmRleA0KPiA+IG9mICdiYWQnIHBhY2tldCBhbmQgZXJyb3Ig Y29kZS4NCj4gPiA+ID4gSW4gdGhlb3J5IGFwcCBjYW4gdHJ5IHRvIGhhbmRsZSBpdCBpbiBhICdz bWFydCcgd2F5OiBsZXQgc2F5IGlmDQo+ID4gRU5PVFNVUCBpcyByZXR1cm5lZCwgdGhlbiB0cnkg dG8gZGlzYWJsZSBhbGwgSFcgb2ZmbG9hZHMNCj4gPiA+ID4gYW5kIGRvIGFsbCBpbiBTVy4gQnV0 IGFnYWluLCBpdCBpcyBtdWNoIGJldHRlciB0byBkbyBzbyAqYmVmb3JlKg0KPiA+IHN1Ym1pdHRp bmcgcGFja2V0cyBmb3IgVFgsIHNvIGluIHByYWN0aWNlIGV2ZXJ5b25lDQo+ID4gPiA+IGp1c3Qg ZHJvcCBzdWNoICdiYWQnIHBhY2tldHMuDQo+ID4gPiA+DQo+ID4gPiA+ICAgRHJvcHBpbmcgdGhl IHBhY2tldHMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbiwgZS5nLiBmb3IgYXBwbGljYXRpb25zDQo+ ID4gdXNlZCBpbiBsaWZlIHN1cHBvcnQgb3IgdGVsZS1tZWRpY2luZS4NCj4gPiA+DQo+ID4gPiBD cml0aWNhbCBhcHBsaWNhdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gZG8gYWxsIFR4IG9mZmxvYWRz IGluIFNXIGFuZA0KPiA+ID4gcmV0cnkuIE9mIGNvdXJzZSwgdmFyaW91cyBzdGF0aXN0aWNzIGFu ZCBsb2dzIHNob3VsZCBoZWxwIHRvIGltcHJvdmUNCj4gPiB0aGUNCj4gPiA+IGFwcGxpY2F0aW9u Lg0KPiA+ID4NCj4gPiA+ID4gSWYgdGhlIHBhY2tldCBpcyAnYmFkJywgdGhlbiBpdCBpcyBtdWNo IGJldHRlciB0byBkcm9wIGl0LCB0aGVuIFRYDQo+ID4gY29ycnVwdGVkIHBhY2tldCBvciBldmVu IGhhbmcgTklDIEhXIGNvbXBsZXRlbHkuDQo+ID4gPg0KPiA+ID4gSU1ITyBUeCBidXJzdCBtdXN0 IGRyb3AgcGFja2V0IHdoaWNoIGNvdWxkIGhhbmcgTklDIEhXIGNvbXBsZXRlbHkuIEkNCj4gPiA+ IHJlYWxpemUgdGhhdCBpdCBpcyBhbiBleHRyYSBjaGVja3MgYW5kIHBlcmZvcm1hbmNlIGRyb3As IGJ1dCB2ZW5kb3INCj4gPiA+IHNob3VsZCBwYXkgaW4gcGVyZm9ybWFuY2UgaWYgSFcgaXMgbm90 IGdvb2QgZW5vdWdoLg0KPiA+ID4NCj4gPiA+ID4gVGhvdWdoIG9mZi1jb3Vyc2UgaXQgaXMgbXVj aCBiZXR0ZXIgdG8gaGF2ZSBhbiBhcHAgdGhhdCB3b3VsZCBjaGVjaw0KPiA+IGZvciBsaW1pdGF0 aW9ucyB0aGF0IGNhbiBiZSBjaGVja2VkIGJ5IEFQSSBwcm92aWRlZA0KPiA+ID4gPiBhbmQgZW5h YmxlIG9ubHkgc3VwcG9ydGVkIG9mZmxvYWRzLg0KPiA+ID4NCj4gPiA+IFllcywgdGhhdCdzIHdo eSBBUEkgdG8gZ2V0IGxpbWl0YXRpb24gaXMgbXVjaCBiZXR0ZXIgdGhhbg0KPiA+IGRvY3VtZW50 YXRpb24uDQo+ID4gPg0KPiA+ID4gPj4gSWYgbGltaXRhdGlvbnMgYXJlIGRvY3VtZW50ZWQsIGFu IGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlIGxvd2VzdA0KPiA+IGNvbW1vbiBkZW5vbWluYXRvciBv ZiB0aGUgTklDcyBpdCBzdXBwb3J0cy4gQW5kIGlmIHRoZQ0KPiA+ID4gYXBwbGljYXRpb24gaXMN Cj4gPiA+ID4+IHN1cHBvc2VkIHRvIHdvcmsgaW4gZ2VuZXJhbCwgdGhhdCBiZWNvbWVzIHRoZSBs b3dlc3QgY29tbW9uDQo+ID4gZGVub21pbmF0b3Igb2YgYWxsIE5JQ3MuDQo+ID4gPiA+DQo+ID4g PiA+IEkgYWdyZWU6IGZvciBsaW1pdGF0aW9ucyB0aGF0IGNhbiBiZSBleHRyYWN0ZWQgd2l0aCBn ZW5lcmljIEFQSSwNCj4gPiBsaWtlOg0KPiA+ID4gPiBudW1iZXIgb2Ygc2VnbWVudHMgcGVyIHBh Y2tldCwgc3VwcG9ydGVkIFRYIG9mZmxvYWRzLCBtYnVmIGZpbGVkcw0KPiA+IHRoYXQgbXVzdCBi ZSBwcm92aWRlZCBmb3IgZWFjaCBUWCBvZmZsb2FkLCAgZXRjLiAtDQo+ID4gPiA+IGl0IGlzIHJl c3BvbnNpYmlsaXR5IG9mIHdlbGwtd3JpdHRlbiBhcHBsaWNhdGlvbiB0byBvYmV5IGFsbCBvZg0K PiA+IHRoZW0uDQo+ID4gPiA+IFllcywgbWFueSB0eF9wcmVwYXJlKCkgaW1wbGVtZW50YXRpb25z IGRvICBzdWNoIGNoZWNrcyBhbnl3YXksIGJ1dA0KPiA+IGZyb20gbXkgcGVyc3BlY3RpdmUgaXQg aXMgc29ydCBvZiBsYXN0LWxpbmUgb2YgZGVmZW5zZS4NCj4gPiA+ID4gRm9yIHdlbGwgd3JpdHRl biBhcHBsaWNhdGlvbiB0aGF0IHNob3VsZCBqdXN0IG5ldmVyIGhhcHBlbi4NCj4gPiA+ID4gQnV0 IHRoZXJlIGlzIG9uZSBtb3JlIGltcG9ydGFudCByZXNwb25zaWJpbGl0eSBvZiB0eF9wcmVwYXJl KCkgLSAgaXQNCj4gPiBwZXJmb3JtcyBQTUQgc3BlY2lmaWMgcGFja2V0IG1vZGlmaWNhdGlvbnMg Zm9yIHJlcXVlc3RlZA0KPiA+ID4gb2ZmbG9hZHMuDQo+ID4gPiA+IEFzIEkgYWxyZWFkeSBtZW50 aW9uZWQgZm9yIEludGVsIE5JQ3MgLSBpdCBkb2VzIHBzZXVkby1oZWFkZXIgY2tzdW0NCj4gPiBj YWxjdWNhdGlvbiwgZm9yIHBhY2tldHMgd2l0aCBzaXplIGxlc3MgdGhlbiBtaW5pbWFsLCBpdCBj YW4NCj4gPiA+ID4gcHJvYmFibHkgZG8gcGFkZGluZyAoZXZlbiBpZiBkb2Vzbid0IGRvIGl0IHJp Z2h0IG5vdyksIGZvciBzb21lDQo+ID4gb3RoZXIgUE1EcyAtIG1pZ2h0IGJlIHNvbWV0aGluZyBl bHNlLCBJIGRpZG4ndCBjaGVjay4NCj4gPiA+ID4gT2J2aW91c2x5IGl0IHNhdmVzIGFwcCBkZXZl bG9wZXIgZnJvbSBhIGJ1cmRlbiB0byBkbyBhbGwgdGhlc2UNCj4gPiB0aGluZ3Mgb24gaGlzIG93 bi4NCj4gPiA+ID4NCj4gPiA+ID4+IEl0IGxvb2tzIGxpa2UgdHhfcHJlcGFyZSgpIGhhcyBiZWNv bWUgYSBob3JyaWJsZSB3b3JrYXJvdW5kIGZvcg0KPiA+IHVuZG9jdW1lbnRlZCBsaW1pdGF0aW9u cy4NCj4gPiA+DQo+ID4gPiBJIHN0cm9uZ2x5IGRpc2FncmVlLiBEb2N1bWVudGF0aW9uIGlzIG5l dmVyIGEgc29sdXRpb24gZm9yIGEgZ2VuZXJpYw0KPiA+ID4gYXBwbGljYXRpb24gd2hpY2ggaXMg aW50ZW5kZWQgdG8gd29yayBvbiBhbnkgSFcgYW5kIElNSE8gaXQgaXMgdGhlDQo+ID4gPiBnb2Fs IHRvIGhhdmUgbW9yZSBhbmQgbW9yZSBhcHBsaWNhdGlvbnMgd2hpY2ggd29yayBvbiBhbnkgSFcu DQo+ID4gPg0KPiA+ID4gPj4gTGltaXRhdGlvbnMgZHVlIHRvIGhhcmR3YXJlIGFuZC9vciBzb2Z0 d2FyZSB0cmFkZW9mZnMgYXJlDQo+ID4gdW5hdm9pZGFibGUsIHNvIHdlIGhhdmUgdG8gbGl2ZSB3 aXRoIHRoZW07IGJ1dCB3ZSBzaG91bGQgbm90IGFjY2VwdA0KPiA+ID4gPj4gUE1EcyB3aXRoIHVu ZG9jdW1lbnRlZCBsaW1pdGF0aW9ucy4NCj4gPiA+ID4NCj4gPiA+ID4gQXMgSSBhbHJlYWR5IHNh aWQsIG1vcmUgZG9jdW1lbnRhdGlvbiBuZXZlciBodXJ0cywgYnV0IGZvciB0aGF0DQo+ID4gY2Fz ZSwgSSB0aGluayBpdCBpcyBub3QgZW5vdWdoLg0KPiA+ID4gPiBJIGV4cGVjdCBQTUQgdG8gcHJv dmlkZSBhIHR4X3ByZXBhcmUoKSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvdWxkDQo+ID4gZGVhbCB3 aXRoIHN1Y2ggc3BlY2lmaWMgdGhpbmdzLg0KPiA+ID4NCj4gPiA+ICsxDQo+ID4gPiA+IEFueXdh eSwgYmFjayB0byB0aGUgb3JpZ2luYWwgcGF0Y2ggLSBJIGxvb2tlZCBhdCBpdCBvbmNlIGFnYWlu LCBhbmQNCj4gPiByZWFsaXplZCB0aGF0IHRoZSBwcm9ibGVtDQo+ID4gPiA+IGlzIGp1c3QgaW4g dGhlIHVuc3VwcG9ydGVkIG51bWJlciBvZiBzZWdtZW50cy4NCj4gPiA+ID4gQXMgd2UgZGlzY3Vz c2VkIGFib3ZlIC0gc3VjaCBsaW1pdGF0aW9ucyBzaG91bGQgYmUgaGFuZGxlZCBieSB3ZWxsDQo+ ID4gd3JpdHRlbiBhcHAsDQo+ID4gPiA+IGJ1dCBub25lIG9mIERQREsgYXBwcyBkb2VzIGl0IHJp Z2h0IG5vdy4NCj4gPiA+ID4gU28gcHJvYmFibHkgaXQgaXMgZ29vZCBvcHBvcnR1bml0eSB0byBk byB0aGluZ3MgaW4gYSBwcm9wZXIgd2F5IGFuZA0KPiA+IGludHJvZHVjZSBzdWNoIGNoZWNrcw0K PiA+ID4gPiBpbiB0ZXN0cG1kIDspDQo+ID4gPg0KPiA+ID4gKzEgc2luY2Ugd2UgYWxyZWFkeSBo YXZlIGZpZWxkcyBpbiBkZXZpY2UgaW5mb3JtYXRpb24gdG8gcmVwb3J0IHN1Y2gNCj4gPiA+IGxp bWl0YXRpb25zLCBidXQgaXQgZG9lcyBub3Qgc2F5IHRoYXQgVHggcHJlcGFyZSBzaG91bGQgYmUg ZHJvcHBlZC4NCj4gPiA+IERyaXZlcnMgd2hpY2ggZG9uJ3QgbmVlZCBUeCBwcmVwYXJlIGtlZXAg aXQgTlVMTCBhbmQgaXQgcmV0dXJucw0KPiA+ID4gaW1tZWRpYXRlbHkgZnJvbSBldGhkZXYuIFNp bmNlIGl0IGlzIGRvbmUgcGVyLWJ1cnN0LCBpdCBzaG91bGQgbm90DQo+ID4gPiBhZmZlY3QgcGVy Zm9ybWFuY2UgYSBsb3QuDQo+ID4gPg0KPiA+DQo+ID4gMTAwJSBhZ3JlZS4gSSB0aGluayB0eF9w cmVwYXJlIG5lZWRzIHRvIHN0YXksIGFuZCBpbiBnZW5lcmFsIGhhcyB0byBiZQ0KPiA+IHN0cm9u Z2x5IHJlY29tbWVuZGVkDQo+ID4gZm9yIGFwcHMgdGhhdCBkbyB1c2UgVFggb2ZmbG9hZHMvbXVs dGktc2Vncy4NCj4gDQo+IDxpcm9ueT4NCj4gVGhlbiB0eF9wcmVwYXJlIHNob3VsZCByYW5kb21s eSByZWplY3QgcGFja2V0cyBhbmQgc2VnbWVudHMsIHRvIGVuc3VyZSB0aGUgYXBwbGljYXRpb24g aGFzIHN1ZmZpY2llbnQgU1cgZmFsbGJhY2sgaW1wbGVtZW50ZWQuDQo+IDwvaXJvbnk+DQo+IA0K PiBObywgc2VyaW91c2x5LCBjb25zaWRlcmluZyB0aGUgYWJvdmUgYXJndW1lbnRzLCBJIHRoaW5r IFBNRCBjb25mb3JtYW5jZSByZXF1aXJlbWVudHMgd291bGQgYmUgYSBiZXR0ZXIgc29sdXRpb24u DQo+IElmIGEgUE1EIGNsYWltcyBzdXBwb3J0IGZvciBzb21lIGZlYXR1cmUsIGl0IG11c3QgY29u Zm9ybSB0byBzb21lIG1pbmltdW0gcmVxdWlyZW1lbnRzIGZvciB0aGF0IGZlYXR1cmUuDQo+IA0K PiBFLmcuIHN1cHBvcnQgZm9yIG11bHRpLXNlZyBUWCBtdXN0IGJlIGFibGUgdG8gaGFuZGxlIG1p bi4gOCBzZWdtZW50cyAob3Igc29tZSBvdGhlciByZWFzb25hYmxlIG51bWJlcikuDQoNCkhtbS4u LiB3aHkgaXMgdGhhdD8NCkkgdGhvdWdodCB3ZSBoYWQgYSBjb25zZW5zdXMgaGVyZSB0aGF0IGdv b2QgYmVoYXZpbmcgYXBwIHNob3VsZCB1c2UgZXhpc3RpbmcgQVBJIChydGVfZXRoX2Rlc2NfbGlt KSB0byBkZWR1Y2UgbWluIGNvbW1vbiBkZW5vbWluYXRvciwNCmFuZCB0aGF0IHdlIG5lZWQgc29t ZSBjb2RlIGV4YW1wbGUsIG9yIGV2ZW4gYmV0dGVyIGEgbGliIGZ1bmN0aW9uIHRoYXQgd291bGQg ZG8gc3VjaCB0aGluZy4gDQoNCj4gDQo+IENvbW1vbiBsaW1pdGF0aW9ucyBhbmQgcHJlY29uZGl0 aW9ucywgc3VjaCBhcyBtaW5pbXVtIFJYIGJ1cnN0IHNpemUgZm9yIHZlY3RvciBkcml2ZXJzIGFu ZCBwc2V1ZG8taGVhZGVyIGNoZWNrc3VtIHByZWNhbGN1bGF0aW9uDQo+IGZvciBUQ1Agb2ZmbG9h ZCwgc2hvdWxkIGJlIGFjY2VwdGVkIGFuZCBwcm9taW5lbnRseSBkb2N1bWVudGVkLg0KDQpJIHN0 aWxsIGRvbid0IHVuZGVyc3RhbmQgd2h5IHRoZXNlIHByZWNvbmRpdGlvbnMgY2FuJ3QgYmUgZG9u ZSBieSB0eF9wcmVwYXJlKCkuDQoNCj4gVW51c3VhbCBIVyBsaW1pdGF0aW9ucywgc3VjaCBhcyBp bmFiaWxpdHkgdG8gcGFkIHNob3J0IEV0aGVybmV0IGZyYW1lcywgc2hvdWxkIGJlIGhhbmRsZWQg YnkgdGhlIGRyaXZlcidzIFRYIGZ1bmN0aW9uIGFzIHdvcmthcm91bmRzDQo+IGZvciB1bmFjY2Vw dGFibGUgbGltaXRhdGlvbnMgKGluIERQREsgQVBJIGNvbnRleHQpIGluIHRoZSBIVy4NCg0KV2l0 aCBjdXJyZW50IGRlc2lnbiwgcnRlX2V0aF90eF9idXJzdCgpIGlzIG5vdCBhbGxvd2VkIHRvIG1v ZGlmeSBtYnVmcyB3aG9zZSByZWZjbnQgPiAxLg0KVGhhdCdzIG9uZSBvZiB0aGUgcmVhc29uIHdo eSB0eF9wcmVwYXJlKCkgd2FzIGludHJvZHVjZWQuDQoNCg==