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 3F17AA00C2; Mon, 26 Sep 2022 12:18:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D93094069B; Mon, 26 Sep 2022 12:18:48 +0200 (CEST) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id B0A7C40695 for ; Mon, 26 Sep 2022 12:18:46 +0200 (CEST) Received: from dggpeml500024.china.huawei.com (unknown [172.30.72.56]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4MbdsM04d5z1P751; Mon, 26 Sep 2022 18:14:31 +0800 (CST) Received: from fraeml712-chm.china.huawei.com (10.206.15.61) by dggpeml500024.china.huawei.com (7.185.36.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 26 Sep 2022 18:18:43 +0800 Received: from fraeml712-chm.china.huawei.com ([10.206.15.61]) by fraeml712-chm.china.huawei.com ([10.206.15.61]) with mapi id 15.01.2375.031; Mon, 26 Sep 2022 12:18:41 +0200 From: Konstantin Ananyev To: Chas Williams <3chas3@gmail.com>, Fengchengwen , Ferruh Yigit , "thomas@monjalon.net" , "andrew.rybchenko@oktetlabs.ru" , "konstantin.ananyev@intel.com" CC: "dev@dpdk.org" , "chas3@att.com" , "humin (Q)" Subject: RE: [PATCH v2 1/3] net/bonding: support Tx prepare Thread-Topic: [PATCH v2 1/3] net/bonding: support Tx prepare Thread-Index: AQHYn91XTFD/1XOxS0240aXChFiYFa3dVFIAgADxJYCAARAAgIADxZ4AgAC5M4CAA0yLkIAAdb2AgApDxZA= Date: Mon, 26 Sep 2022 10:18:41 +0000 Message-ID: References: <1619171202-28486-2-git-send-email-tangchengchang@huawei.com> <20220725040842.35027-1-fengchengwen@huawei.com> <20220725040842.35027-2-fengchengwen@huawei.com> <495fb2f0-60c2-f1c9-2985-0d08bb463ad0@xilinx.com> <4b4af3e8-710a-ae75-8171-331ebfe4e4f7@huawei.com> <6c91f993-b11d-987c-6d20-38ee11f9f9db@gmail.com> <509a1984-841a-e42c-05c1-707b024ef7a8@huawei.com> <863016bd-a20b-8a9f-8edc-cfddc0593546@gmail.com> <4a978f38-4f38-4630-ca91-fb96a5789d6f@gmail.com> In-Reply-To: <4a978f38-4f38-4630-ca91-fb96a5789d6f@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.195.34.91] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected 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 DQpIaSBldmVyeW9uZSwNCg0KU29ycnkgZm9yIGxhdGUgcmVwbHkuDQoNCj4gPj4+Pj4gVGhlIG1h aW4gcHJvYmxlbSBpcyBoYXJkIHRvIGRlc2lnbiBhIHR4X3ByZXBhcmUgZm9yIGJvbmRpbmcgZGV2 aWNlOg0KPiA+Pj4+PiAxLiBhcyBDaGFzIFdpbGxpYW1zIHNhaWQsIHRoZXJlIG1heWJlIHR3aWNl IGhhc2ggY2FsYyB0byBnZXQgdGFyZ2V0IHNsYXZlDQo+ID4+Pj4+ICAgwqDCoMKgIGRldmljZXMu DQo+ID4+Pj4+IDIuIGFsc28gbW9yZSBpbXBvcnRhbnQsIGlmIHRoZSBzbGF2ZSBkZXZpY2VzIGhh dmUgY2hhbmdlcyhlLmcuIHNsYXZlIGRldmljZQ0KPiA+Pj4+PiAgIMKgwqDCoCBsaW5rIGRvd24g b3IgcmVtb3ZlKSwgYW5kIGlmIHRoZSBjaGFuZ2VzIGhhcHBlbnMgYmV0d2VlbiBib25kLXR4LXBy ZXBhcmUgYW5kDQo+ID4+Pj4+ICAgwqDCoMKgIGJvbmQtdHgtYnVyc3QsIHRoZSBvdXRwdXQgc2xh dmUgd2lsbCBjaGFuZ2VzLCBhbmQgdGhpcyBtYXkgbGVhZCB0byBjaGVja3N1bQ0KPiA+Pj4+PiAg IMKgwqDCoCBmYWlsZWQuIChOb3RlOiBhIGJvbmQgZGV2aWNlIHdpdGggc2xhdmUgZGV2aWNlcyBt YXkgZnJvbSBkaWZmZXJlbnQgdmVuZG9ycywNCj4gPj4+Pj4gICDCoMKgwqAgYW5kIHNsYXZlIGRl dmljZXMgbWF5IGhhdmUgZGlmZmVyZW50IHJlcXVpcmVtZW50cywgZS5nLiBzbGF2ZS1BIHN1cHBv cnQgY2FsYw0KPiA+Pj4+PiAgIMKgwqDCoCBJUHY0IHBzZXVkby1oZWFkIGF1dG9tYXRpYyAobm8g bmVlZCBkcml2ZXIgcHJlLWNhbGMpLCBidXQgc2xhdmUtQiBuZWVkIGRyaXZlcg0KPiA+Pj4+PiAg IMKgwqDCoCBwcmUtY2FsYykuDQo+ID4+Pj4+DQo+ID4+Pj4+IEN1cnJlbnQgZGVzaWduIGNvdmVy IHRoZSBhYm92ZSB0d28gc2NlbmFyaW9zIGJ5IHVzaW5nIGluLXBsYWNlIHR4LXByZXBhcmUuIGFu ZA0KPiA+Pj4+PiBpbiBhZGRpdGlvbiwgYm9uZCBkZXZpY2VzIGFyZSBub3QgdHJhbnNwYXJlbnQg dG8gYXBwbGljYXRpb25zLCBJIHRoaW5rIGl0J3MgYQ0KPiA+Pj4+PiBwcmFjdGljYWwgbWV0aG9k IHRvIHByb3ZpZGUgdHgtcHJlcGFyZSBzdXBwb3J0IGluIHRoaXMgd2F5Lg0KPiA+Pj4+Pg0KPiA+ Pj4+DQo+ID4+Pj4NCj4gPj4+PiBJIGRvbid0IHRoaW5rIHlvdSBuZWVkIHRvIGV4cG9ydCBhbiBl bmFibGUvZGlzYWJsZSByb3V0aW5lIGZvciB0aGUgdXNlIG9mDQo+ID4+Pj4gcnRlX2V0aF90eF9w cmVwYXJlLiBJdCdzIHNhZmUgdG8ganVzdCBjYWxsIHRoYXQgcm91dGluZSwgZXZlbiBpZiBpdCBp c24ndA0KPiA+Pj4+IGltcGxlbWVudGVkLiBZb3UgYXJlIGp1c3QgdHJhZGluZyBvbmUgYnJhbmNo IGluIERQREsgbGlicnRlX2V0aF9kZXYgZm9yIGENCj4gPj4+PiBicmFuY2ggaW4gZHJpdmVycy9u ZXQvYm9uZGluZy4NCj4gPj4+DQo+ID4+PiBPdXIgZmlyc3QgcGF0Y2ggd2FzIGp1c3QgbGlrZSB5 b3VycyAoanVzdCBhZGQgdHgtcHJlcGFyZSBkZWZhdWx0KSwgYnV0IGNvbW11bml0eQ0KPiA+Pj4g aXMgY29uY2VybmVkIGFib3V0IGltcGFjdGluZyBwZXJmb3JtYW5jZS4NCj4gPj4+DQo+ID4+PiBB cyBhIHRyYWRlLW9mZiwgSSB0aGluayB3ZSBjYW4gYWRkIHRoZSBlbmFibGUvZGlzYWJsZSBBUEku DQo+ID4+DQo+ID4+IElNSE8sIHRoYXQncyBhIGJhZCBpZGVhLiBJZiB0aGUgcnRlX2V0aF9kZXZf dHhfcHJlcGFyZSBBUEkgYWZmZWN0cw0KPiA+PiBwZXJmb3JtYW5jZSBhZHZlcnNseSwgdGhhdCBp cyBub3QgYSBib25kaW5nIHByb2JsZW0uIEFsbCBhcHBsaWNhdGlvbnMNCj4gPj4gc2hvdWxkIGJl IGNhbGxpbmcgcnRlX2V0aF9kZXZfdHhfcHJlcGFyZS4gVGhlcmUncyBubyBkZWZpbmVkIEFQSQ0K PiA+PiB0byBkZXRlcm1pbmUgaWYgcnRlX2V0aF9kZXZfdHhfcHJlcGFyZSBzaG91bGQgYmUgY2Fs bGVkLiBUaGVyZWZvcmUsDQo+ID4+IGFwcGxpY2F0aW9ucyBzaG91bGQgYWx3YXlzIGNhbGwgcnRl X2V0aF9kZXZfdHhfcHJlcGFyZS4gUmVnYXJkbGVzcywNCj4gPj4gYXMgSSBwcmV2aW91c2x5IG1l bnRpb25lZCwgeW91IGFyZSBqdXN0IHRyYWRpbmcgdGhlIGxvY2F0aW9uIG9mDQo+ID4+IHRoZSBi cmFuY2gsIGVzcGVjaWFsbHkgaW4gdGhlIGJvbmRpbmcgY2FzZS4NCj4gPj4NCj4gPj4gSWYgcnRl X2V0aF9kZXZfdHhfcHJlcGFyZSBpcyBjYXVzaW5nIGEgcGVyZm9ybWFuY2UgZHJvcCwgdGhlbiB0 aGF0IEFQSQ0KPiA+PiBzaG91bGQgYmUgaW1wcm92ZWQgb3IgcmV3cml0dGVuLiBUaGVyZSBhcmUg UE1EIHRoYXQgcmVxdWlyZSB5b3UgdG8gdXNlDQo+ID4+IHRoYXQgQVBJLiBMb2NhbGx5LCB3ZSBo YWQgbWFpbnRhaW5lZCBhIHBhdGNoIHRvIGVsaW1pbmF0ZSB0aGUgdXNlIG9mDQo+ID4+IHJ0ZV9l dGhfZGV2X3R4X3ByZXBhcmUuIEhvd2V2ZXIsIHRoYXQgaGFzIGJlZW4gZ2V0dGluZyBoYXJkZXIg YW5kIGhhcmRlcg0KPiA+PiB0byBtYWludGFpbi4gVGhlIHBlcmZvcm1hbmNlIGxvc3QgYnkganVz dCBjYWxsaW5nIHJ0ZV9ldGhfZGV2X3R4X3ByZXBhcmUNCj4gPj4gd2FzIG1hcmdpbmFsLg0KPiA+ Pg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEkgdGhpbmsgeW91IG1pc3NlZCBmaXhpbmcgdHhfbWFj aGluZSBpbiA4MDIuM2FkIHN1cHBvcnQuIFdlIGhhdmUgYmVlbiB1c2luZw0KPiA+Pj4+IHRoZSBm b2xsb3dpbmcgcGF0Y2ggbG9jYWxseSB3aGljaCBJIG5ldmVyIGdvdCBhcm91bmQgdG8gc3VibWl0 dGluZy4NCj4gPj4+DQo+ID4+PiBZb3UgYXJlIHJpZ2h0LCBJIHdpbGwgc2VuZCBWMyBmaXggaXQu DQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+PiAgIEZyb20gYTQ1ODY1NGQ2OGZmNTE0NDI2 NjgwN2VmMTM2YWMzZGQyYWRmY2Q5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCj4gPj4+PiBG cm9tOiAiQ2hhcmxlcyAoQ2hhcykgV2lsbGlhbXMiIDxjaHdpbGxpYUBjaWVuYS5jb20+DQo+ID4+ Pj4gRGF0ZTogVHVlLCAzIE1heSAyMDIyIDE2OjUyOjM3IC0wNDAwDQo+ID4+Pj4gU3ViamVjdDog W1BBVENIXSBuZXQvYm9uZGluZzogY2FsbCBydGVfZXRoX3R4X3ByZXBhcmUgYmVmb3JlIHJ0ZV9l dGhfdHhfYnVyc3QNCj4gPj4+Pg0KPiA+Pj4+IFNvbWUgUE1EcyBtaWdodCByZXF1aXJlIGEgY2Fs bCB0byBydGVfZXRoX3R4X3ByZXBhcmUgYmVmb3JlIHNlbmRpbmcgdGhlDQo+ID4+Pj4gcGFja2V0 cyBmb3IgdHJhbnNtaXNzaW9uLiBUeXBpY2FsbHksIHRoZSBwcmVwYXJlIHN0ZXAgaGFuZGxlcyB0 aGUgVkxBTg0KPiA+Pj4+IGhlYWRlcnMsIGJ1dCBpdCBtYXkgbmVlZCB0byBkbyBvdGhlciB0aGlu Z3MuDQo+ID4+Pj4NCj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBDaGFzIFdpbGxpYW1zIDxjaHdpbGxp YUBjaWVuYS5jb20+DQo+ID4+Pg0KPiA+Pj4gLi4uDQo+ID4+Pg0KPiA+Pj4+ICAgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiByaW5nIGlmIHRyYW5zbWlzc2lvbiBmYWlscyBzbyB0aGUgcGFj a2V0IGlzbid0IGxvc3QuDQo+ID4+Pj4gQEAgLTEzMjIsOCArMTM1MCwxMiBAQCBib25kX2V0aGRl dl90eF9idXJzdF9icm9hZGNhc3Qodm9pZCAqcXVldWUsIHN0cnVjdCBydGVfbWJ1ZiAqKmJ1ZnMs DQo+ID4+Pj4NCj4gPj4+PiAgIMKgwqDCoMKgIC8qIFRyYW5zbWl0IGJ1cnN0IG9uIGVhY2ggYWN0 aXZlIHNsYXZlICovDQo+ID4+Pj4gICDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgbnVtX29mX3Ns YXZlczsgaSsrKSB7DQo+ID4+Pj4gLcKgwqDCoMKgwqDCoMKgIHNsYXZlX3R4X3RvdGFsW2ldID0g cnRlX2V0aF90eF9idXJzdChzbGF2ZXNbaV0sIGJkX3R4X3EtPnF1ZXVlX2lkLA0KPiA+Pj4+ICvC oMKgwqDCoMKgwqDCoCB1aW50MTZfdCBuYl9wcmVwOw0KPiA+Pj4+ICsNCj4gPj4+PiArwqDCoMKg wqDCoMKgwqAgbmJfcHJlcCA9IHJ0ZV9ldGhfdHhfcHJlcGFyZShzbGF2ZXNbaV0sIGJkX3R4X3Et PnF1ZXVlX2lkLA0KPiA+Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBidWZzLCBuYl9wa3RzKTsNCj4gPj4+PiArwqDCoMKgwqDCoMKgwqAgc2xhdmVfdHhfdG90 YWxbaV0gPSBydGVfZXRoX3R4X2J1cnN0KHNsYXZlc1tpXSwgYmRfdHhfcS0+cXVldWVfaWQsDQo+ ID4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1ZnMsIG5iX3By ZXApOw0KPiA+Pj4NCj4gPj4+IFRoZSB0eC1wcmVwYXJlIG1heSBlZGl0IHBhY2tldCBkYXRhLCBh bmQgdGhlIGJyb2FkY2FzdCBtb2RlIHdpbGwgc2VuZCBhIHBhY2tldCB0byBhbGwgc2xhdmVzLA0K PiA+Pj4gdGhlIHBhY2tldCBkYXRhIGlzIHNlbnQgYW5kIGVkaXRlZCBhdCB0aGUgc2FtZSB0aW1l LiBJcyB0aGlzIGxpa2VseSB0byBjYXVzZSBwcm9ibGVtcyA/DQo+ID4+DQo+ID4+IFRoaXMgcm91 dGluZSBpcyBhbHJlYWR5IGJyb2tlbi4gWW91IGNhbid0IGp1c3QgaW5jcmVtZW50IHRoZSByZWZj b3VudA0KPiA+PiBhbmQgc2VuZCB0aGUgcGFja2V0IGludG8gYSBQTUQncyB0cmFuc21pdCByb3V0 aW5lLiBOb3RoaW5nIGd1YXJhbnRlZXMNCj4gPj4gdGhhdCBhIHRyYW5zbWl0IHJvdXRpbmUgd2ls bCBub3QgbW9kaWZ5IHRoZSBwYWNrZXQuIE1hbnkgUE1EcyBwZXJmb3JtIGFuDQo+ID4+IHJ0ZV92 bGFuX2luc2VydC4NCj4gPg0KPiA+IEhtbSBpbnRlcmVzdGluZy4uLi4NCj4gPiBNeSB1ZGVyc3Rh bmRpbmcgd2FzIHF1aXRlIG9wcG9zaXRlIC0gdHhfYnVyc3QoKSBjYW4ndCBtb2RpZnkgcGFja2V0 IGRhdGEgYW5kIG1ldGFkYXRhDQo+ID4gKGV4Y2VwdCB3aGVuIHJlZmNudD09MSBhbmQgdHhfYnVy c3QoKSBnb2luZyB0byBmcmVlIHRoZSBtYnVmIGFuZCBwdXQgaXQgYmFjayB0byB0aGUgbWVtcG9v bCkuDQo+ID4gV2hpbGUgdHhfcHJlcGFyZSgpIGNhbiAtIGFjdHVhbGx5IGFzIEkgcmVtZW1iZXIg dGhhdCB3YXMgb25lIG9mIHRoZSByZWFzb25zIHdoeSBhIHNlcGFyYXRlIHJvdXRpbmUNCj4gPiB3 YXMgaW50cm9kdWNlZC4NCj4gDQo+IElzIHRoYXQgZG9jdW1lbnRlZCBhbnl3aGVyZT8NCg0KSSBs b29rZWQgdGhyb3VnaCwgYnV0IGNvdWxkbid0IGZpbmQgdG9vIG11Y2ggZXhjZXB0IHdoYXQgd2Fz IGFscmVhZHkgbWVudGlvbmVkIGJ5IEZlbmdjaGVuZzoNCnJ0ZV9ldGhfdHhfcHJlcGFyZSgpIG5v dGVzOg0KICAgICogU2luY2UgdGhpcyBmdW5jdGlvbiBjYW4gbW9kaWZ5IHBhY2tldCBkYXRhLCBw cm92aWRlZCBtYnVmcyBtdXN0IGJlIHNhZmVseQ0KICAgICogd3JpdGFibGUgKGUuZy4gbW9kaWZp ZWQgZGF0YSBjYW5ub3QgYmUgaW4gc2hhcmVkIHNlZ21lbnQpLg0KUHJvYmFibHkgdGhhdCdzIG5v dCBleHBsaWNpdCBlbm91Z2gsIGFzIGl0IGRvZXNuJ3QgZm9yYmlkIG1vZGlmeWluZyBwYWNrZXRz IGluIHR4X2J1cnN0IGNsZWFybHkuDQoNCj4gSXQncyBiZWVuIG15IGV4cGVyaWVuY2UgdGhhdCB0 aGUgZGV2aWNlIFBNRA0KPiBjYW4gZG8gcHJhY3RpY2FsbHkgYW55dGhpbmcgYW5kIHlvdSBuZWVk IHRvIHByb3RlY3QgeW91cnNlbGYuICBDdXJyZW50bHksDQo+IHRoZSBhZl9wYWNrZXQsIGRwYWEy LCBhbmQgdmhvc3QgZHJpdmVyIGNhbGwgcnRlX3ZsYW5faW5zZXJ0LiBCZWZvcmUgMjAxOSwNCj4g dGhlIHZpcnRpbyBkcml2ZXIgYWxzbyB1c2VkIHRvIGNhbGwgcnRlX3ZsYW5faW5zZXJ0IGR1cmlu ZyBpdHMgdHJhbnNtaXQNCj4gcGF0aC4gT2YgY291cnNlLCBydGVfdmxhbl9pbnNlcnQgbW9kaWZp ZXMgdGhlIHBhY2tldCBkYXRhIGFuZCB0aGUgbWJ1Zg0KPiBoZWFkZXIuDQpJbnRlcmVzdGluZywg dXN1YWxseSBhcHBzIHRoYXQgdHJ5aW5nIHRvIHVzZSB6ZXJvLWNvcHkgbXVsdGktY2FzdCBUWCBo YXZlIHBhY2tldC1oZWFkZXIgcG9ydGlvbg0KaW4gYSBzZXBhcmF0ZSBzZWdtZW50LCBzbyBpdCBt aWdodCBldmVuIGtlZXAgd29ya2luZy4uIEJ1dCBkZWZpbmV0bHkgZG9lc24ndCBsb29rIHJpZ2h0 IHRvIG1lOg0KaWYgbWJ1Zi0+cmVmbmN0ID4gMSwgIEkgdGhpbmsgaXQgc2hvdWxkIGJlIHRyZWF0 ZWQgYXMgcmVhZC1vbmx5LiANCg0KIFJlZ2FyZGxlc3MsIGl0IGxvb2tzIGxpa2UgcnRlX2V0aF9k ZXZfdHhfcHJlcGFyZSBzaG91bGQgYWx3YXlzIGJlDQo+IGNhbGxlZC4NCg0KQWdhaW4sIGFzIEkg cmVtZW1iZXIsIGluaXRpYWwgYWdyZWVtZW50IHdhczogaWYgYW55IFRYIG9mZmxvYWQgaXMgZW5h YmxlZCwNCnR4X3ByZXBhcmUoKSBuZWVkcyB0byBiZSBjYWxsZWQgKG9yIHVzZXIgaGFzIGltcGxl bWVudCBzaW1pbGFyIHN0dWZmIG9uIGhpcyBvd24pLg0KSWYgbm8gVFggb2ZmbG9hZCBmbGFncyB3 ZXJlIHNwZWNpZmllZCBmb3IgdGhlIHBhY2tldCwgdHhfcHJlcGFyZSgpIGlzIG5vdCBuZWNlc3Nh cnkuDQoNCiA+IEhhbmRsaW5nIHRoYXQgY29ycmVjdGx5IGluIGJyb2FkY2FzdCBtb2RlIHByb2Jh Ymx5IG1lYW5zIGFsd2F5cw0KPiBtYWtlIGEgZGVlcCBjb3B5IG9mIHRoZSBwYWNrZXQsIG9yIGNo ZWNrIHRvIHNlZSBpZiBhbGwgdGhlIG1lbWJlcnMgYXJlDQo+IHRoZSBzYW1lIFBNRCB0eXBlLiBJ ZiBzbywgeW91IGNhbiBqdXN0IGNhbGwgcHJlcGFyZSBvbmNlLiBZb3UgY291bGQgdHJhY2sNCj4g dGhlIG1pc21hdGNoZWQgbmF0dXJlIGR1cmluZyBhZGRpdGlvbmFsL3JlbW92YWwgb2YgdGhlIG1l bWJlcnMuIE9yIGp1c3QNCj4gYXNzdW1lIHBlb3BsZSBhcmVuJ3QgZ29pbmcgdG8gbWlzbWF0Y2gg Ym9uZGluZyBtZW1iZXJzLg0KPiANCj4gDQo+ID4+IFlvdSBzaG91bGQgYXQgbGVhc3QgcGVyZm9y bSBhIGNsb25lIG9mIHRoZSBwYWNrZXQgc28NCj4gPj4gdGhhdCB0aGUgbWJ1ZiBoZWFkZXJzIGFy ZW4ndCBtYW5nbGVkIGJ5IGVhY2ggUE1ELiANCg0KVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBj bG9uZSB0aGUgd2hvbGUgcGFja2V0LiBJbiBtYW55IGNhc2VzIGl0IGlzIGVub3VnaCB0byBqdXN0 IGF0dGFjaA0KYXMgZmlyc3Qgc2VnbWVudCBsMi9sMy9sNCBoZWFkZXIgcG9ydGlvbiBvZiB0aGUg cGFja2V0Lg0KQXQgbGVhc3QgdGhhdCdzIGhvdyBpcF9tdWx0aWNhc3Qgc2FtcGxlIHdvcmtzLiAg DQoNCkp1c3QgdG8gYmUgc2FmZSB5b3UNCj4gPj4gc2hvdWxkIHBlcmZvcm0gYSBwYXJ0aWFsIGRl ZXAgY29weSBvZiB0aGUgcGFja2V0IGhlYWRlcnMgaW4gY2FzZSBzb21lDQo+ID4+IFBNRCBkb2Vz IGFuIHJ0ZV92bGFuX2luc2VydCBhbmQgdGhlIG90aGVyIFBNRHMgaW4gdGhlIGJvbmRpbmcgZ3Jv dXAgZG8NCj4gPj4gbm90IG5lZWQgYW4gcnRlX3ZsYW5faW5zZXJ0Lg0KPiA+Pg0KPiA+PiBTbyBk b2luZyBhIGJsaW5kIHJ0ZV9ldGhfZGV2X3R4X3ByZXByYXJlIGlzbid0IG1ha2luZyBhbnl0aGlu ZyBtdWNoDQo+ID4+IHdvcnNlLg0KPiA+Pg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+ICAgwqDCoMKg wqDCoMKgwqDCoCBpZiAodW5saWtlbHkoc2xhdmVfdHhfdG90YWxbaV0gPCBuYl9wa3RzKSkNCj4g Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0eF9mYWlsZWRfZmxhZyA9IDE7DQo=