From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ananyev, Konstantin" Subject: Re: [PATCH v5 3/8] ethdev: reserve capability flags for PMD-specific API Date: Wed, 4 Jan 2017 17:44:18 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772583F100375@irsmsx105.ger.corp.intel.com> References: <1482939691-34855-1-git-send-email-tiwei.bie@intel.com> <1483514502-32841-1-git-send-email-tiwei.bie@intel.com> <1483514502-32841-4-git-send-email-tiwei.bie@intel.com> <2601191342CEEE43887BDE71AB9772583F0FEE0C@irsmsx105.ger.corp.intel.com> <20170104143923.GA57552@dpdk19> <2601191342CEEE43887BDE71AB9772583F0FEE6D@irsmsx105.ger.corp.intel.com> <20170104170011.GB56511@dpdk19> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev@dpdk.org" , "adrien.mazarguil@6wind.com" , "Lu, Wenzhuo" , "Mcnamara, John" , "olivier.matz@6wind.com" , "thomas.monjalon@6wind.com" , "Zhang, Helin" , "Dai, Wei" , "Wang, Xiao W" To: "Bie, Tiwei" Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id ABFD72946 for ; Wed, 4 Jan 2017 18:44:22 +0100 (CET) In-Reply-To: <20170104170011.GB56511@dpdk19> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQmllLCBUaXdlaQ0KPiBT ZW50OiBXZWRuZXNkYXksIEphbnVhcnkgNCwgMjAxNyA1OjAwIFBNDQo+IFRvOiBBbmFueWV2LCBL b25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsu b3JnOyBhZHJpZW4ubWF6YXJndWlsQDZ3aW5kLmNvbTsgTHUsIFdlbnpodW8gPHdlbnpodW8ubHVA aW50ZWwuY29tPjsgTWNuYW1hcmEsIEpvaG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsNCj4g b2xpdmllci5tYXR6QDZ3aW5kLmNvbTsgdGhvbWFzLm1vbmphbG9uQDZ3aW5kLmNvbTsgWmhhbmcs IEhlbGluIDxoZWxpbi56aGFuZ0BpbnRlbC5jb20+OyBEYWksIFdlaSA8d2VpLmRhaUBpbnRlbC5j b20+OyBXYW5nLA0KPiBYaWFvIFcgPHhpYW8udy53YW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDog UmU6IFtQQVRDSCB2NSAzLzhdIGV0aGRldjogcmVzZXJ2ZSBjYXBhYmlsaXR5IGZsYWdzIGZvciBQ TUQtc3BlY2lmaWMgQVBJDQo+IA0KPiBPbiBXZWQsIEphbiAwNCwgMjAxNyBhdCAxMToxNDoyNVBN ICswODAwLCBBbmFueWV2LCBLb25zdGFudGluIHdyb3RlOg0KPiA+DQo+ID4NCj4gPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBCaWUsIFRpd2VpDQo+ID4gPiBTZW50 OiBXZWRuZXNkYXksIEphbnVhcnkgNCwgMjAxNyAyOjM5IFBNDQo+ID4gPiBUbzogQW5hbnlldiwg S29uc3RhbnRpbiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4gPiA+IENjOiBkZXZA ZHBkay5vcmc7IGFkcmllbi5tYXphcmd1aWxANndpbmQuY29tOyBMdSwgV2Vuemh1byA8d2Vuemh1 by5sdUBpbnRlbC5jb20+OyBNY25hbWFyYSwgSm9obg0KPiA8am9obi5tY25hbWFyYUBpbnRlbC5j b20+Ow0KPiA+ID4gb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsgdGhvbWFzLm1vbmphbG9uQDZ3aW5k LmNvbTsgWmhhbmcsIEhlbGluIDxoZWxpbi56aGFuZ0BpbnRlbC5jb20+OyBEYWksIFdlaSA8d2Vp LmRhaUBpbnRlbC5jb20+Ow0KPiBXYW5nLA0KPiA+ID4gWGlhbyBXIDx4aWFvLncud2FuZ0BpbnRl bC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHY1IDMvOF0gZXRoZGV2OiByZXNlcnZl IGNhcGFiaWxpdHkgZmxhZ3MgZm9yIFBNRC1zcGVjaWZpYyBBUEkNCj4gPiA+DQo+ID4gPiBPbiBX ZWQsIEphbiAwNCwgMjAxNyBhdCAxMDoyMTowOFBNICswODAwLCBBbmFueWV2LCBLb25zdGFudGlu IHdyb3RlOg0KPiA+ID4gPiBIaSBUd2VpLA0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogQmllLCBUaXdlaQ0KPiA+ID4gPiA+IFNl bnQ6IFdlZG5lc2RheSwgSmFudWFyeSA0LCAyMDE3IDc6MjIgQU0NCj4gPiA+ID4gPiBUbzogZGV2 QGRwZGsub3JnDQo+ID4gPiA+ID4gQ2M6IGFkcmllbi5tYXphcmd1aWxANndpbmQuY29tOyBMdSwg V2Vuemh1byA8d2Vuemh1by5sdUBpbnRlbC5jb20+OyBNY25hbWFyYSwgSm9obiA8am9obi5tY25h bWFyYUBpbnRlbC5jb20+Ow0KPiA+ID4gPiA+IG9saXZpZXIubWF0ekA2d2luZC5jb207IHRob21h cy5tb25qYWxvbkA2d2luZC5jb207IEFuYW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50aW4uYW5h bnlldkBpbnRlbC5jb20+OyBaaGFuZywgSGVsaW4NCj4gPiA+ID4gPiA8aGVsaW4uemhhbmdAaW50 ZWwuY29tPjsgRGFpLCBXZWkgPHdlaS5kYWlAaW50ZWwuY29tPjsgV2FuZywgWGlhbyBXIDx4aWFv Lncud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gU3ViamVjdDogW1BBVENIIHY1IDMvOF0gZXRo ZGV2OiByZXNlcnZlIGNhcGFiaWxpdHkgZmxhZ3MgZm9yIFBNRC1zcGVjaWZpYyBBUEkNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IFJlc2VydmUgYSBUeCBjYXBhYmlsaXR5IGZsYWcgYW5kIGEgUnggY2Fw YWJpbGl0eSBmbGFnLCB0aGF0IGNhbiBiZQ0KPiA+ID4gPiA+IHVzZWQgYnkgUE1EIHRvIGRlZmlu ZSBpdHMgb3duIGNhcGFiaWxpdHkgZmxhZ3Mgd2hlbiBpbXBsZW1lbnRpbmcgdGhlDQo+ID4gPiA+ ID4gUE1ELXNwZWNpZmljIEFQSS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFN1Z2dlc3RlZC1ieTog QWRyaWVuIE1hemFyZ3VpbCA8YWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb20+DQo+ID4gPiA+ID4g U2lnbmVkLW9mZi1ieTogVGl3ZWkgQmllIDx0aXdlaS5iaWVAaW50ZWwuY29tPg0KPiA+ID4gPiA+ IEFja2VkLWJ5OiBXZW56aHVvIEx1IDx3ZW56aHVvLmx1QGludGVsLmNvbT4NCj4gPiA+ID4gPiAt LS0NCj4gPiA+ID4gPiAgbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2LmggfCAyICsrDQo+ID4g PiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2V0aGVyL3J0ZV9ldGhkZXYuaCBiL2xpYi9saWJy dGVfZXRoZXIvcnRlX2V0aGRldi5oDQo+ID4gPiA+ID4gaW5kZXggZDQ2NTgyNS4uODgwMGIzOSAx MDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9saWIvbGlicnRlX2V0aGVyL3J0ZV9ldGhkZXYuaA0KPiA+ ID4gPiA+ICsrKyBiL2xpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldi5oDQo+ID4gPiA+ID4gQEAg LTg1Nyw2ICs4NTcsNyBAQCBzdHJ1Y3QgcnRlX2V0aF9jb25mIHsNCj4gPiA+ID4gPiAgI2RlZmlu ZSBERVZfUlhfT0ZGTE9BRF9UQ1BfTFJPICAgICAweDAwMDAwMDEwDQo+ID4gPiA+ID4gICNkZWZp bmUgREVWX1JYX09GRkxPQURfUUlOUV9TVFJJUCAgMHgwMDAwMDAyMA0KPiA+ID4gPiA+ICAjZGVm aW5lIERFVl9SWF9PRkZMT0FEX09VVEVSX0lQVjRfQ0tTVU0gMHgwMDAwMDA0MA0KPiA+ID4gPiA+ ICsjZGVmaW5lIERFVl9SWF9PRkZMT0FEX1JFU0VSVkVEXzAgIDB4MDAwMDAwODAgLyoqPCBVc2Vk IGZvciBQTUQtc3BlY2lmaWMgQVBJLiAqLw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIC8qKg0KPiA+ ID4gPiA+ICAgKiBUWCBvZmZsb2FkIGNhcGFiaWxpdGllcyBvZiBhIGRldmljZS4NCj4gPiA+ID4g PiBAQCAtODc0LDYgKzg3NSw3IEBAIHN0cnVjdCBydGVfZXRoX2NvbmYgew0KPiA+ID4gPiA+ICAj ZGVmaW5lIERFVl9UWF9PRkZMT0FEX0dSRV9UTkxfVFNPICAgICAgMHgwMDAwMDQwMCAgICAvKio8 IFVzZWQgZm9yIHR1bm5lbGluZyBwYWNrZXQuICovDQo+ID4gPiA+ID4gICNkZWZpbmUgREVWX1RY X09GRkxPQURfSVBJUF9UTkxfVFNPICAgICAweDAwMDAwODAwICAgIC8qKjwgVXNlZCBmb3IgdHVu bmVsaW5nIHBhY2tldC4gKi8NCj4gPiA+ID4gPiAgI2RlZmluZSBERVZfVFhfT0ZGTE9BRF9HRU5F VkVfVE5MX1RTTyAgIDB4MDAwMDEwMDAgICAgLyoqPCBVc2VkIGZvciB0dW5uZWxpbmcgcGFja2V0 LiAqLw0KPiA+ID4gPiA+ICsjZGVmaW5lIERFVl9UWF9PRkZMT0FEX1JFU0VSVkVEXzAgIDB4MDAw MDIwMDAgLyoqPCBVc2VkIGZvciBQTUQtc3BlY2lmaWMgQVBJLiAqLw0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gIC8qKg0KPiA+ID4gPiA+ICAgKiBFdGhlcm5ldCBkZXZpY2UgaW5mb3JtYXRpb24NCj4g PiA+ID4gPiAtLQ0KPiA+ID4gPiA+IDIuNy40DQo+ID4gPiA+DQo+ID4gPiA+IEkgYW0gbm90IHN1 cmUgaG93IHRoYXQgc3VwcG9zZWQgdG8gd29yayBhbmQgaG93IHVzZXIgc2hvdWxkIGtub3cgdGhh dCBERVZfUlhfT0ZGTE9BRF9SRVNFUlZFRF8wDQo+ID4gPiA+IGlzIGFjdHVhbGx5IGEgTUFDU0VD IGZvciBpeGdiZT8NCj4gPiA+DQo+ID4gPiBVc2VycyBhcmUgbm90IHN1cHBvc2VkIHRvIHVzZSBE RVZfUlhfT0ZGTE9BRF9SRVNFUlZFRF8wLCBpbnN0ZWFkLCB0aGV5DQo+ID4gPiBzaG91bGQgdXNl IHRoZSBjYXBhYmlsaXRpZXMgYW5kIHRoZSBsaWtlcyBkZWZpbmVkIGluIHJ0ZV9wbWRfaXhnYmUu aA0KPiA+ID4gd2hlcmUgdGhlIFBNRC1zcGVjaWZpY3MgQVBJcyBhcmUgZGVjbGFyZWQ6DQo+ID4g Pg0KPiA+ID4gLyoqDQo+ID4gPiAgKiBJZiB0aGVzZSBmbGFncyBhcmUgYWR2ZXJ0aXNlZCBieSB0 aGUgUE1ELCB0aGUgTklDIHN1cHBvcnRzIHRoZSBNQUNzZWMNCj4gPiA+ICAqIG9mZmxvYWQuIFRo ZSBpbmNvbWluZyBNQUNzZWMgdHJhZmZpY3MgY2FuIGJlIG9mZmxvYWRlZCB0cmFuc3BhcmVudGx5 DQo+ID4gPiAgKiBhZnRlciB0aGUgTUFDc2VjIG9mZmxvYWQgaXMgY29uZmlndXJlZCBjb3JyZWN0 bHkgYnkgdGhlIGFwcGxpY2F0aW9uLg0KPiA+ID4gICogQW5kIHRoZSBhcHBsaWNhdGlvbiBjYW4g c2V0IHRoZSBQS1RfVFhfSVhHQkVfTUFDU0VDIGZsYWcgaW4gbWJ1ZnMgdG8NCj4gPiA+ICAqIGVu YWJsZSB0aGUgTUFDc2VjIG9mZmxvYWQgZm9yIHRoZSBwYWNrZXRzIHRvIGJlIHRyYW5zbWl0dGVk Lg0KPiA+ID4gICovDQo+ID4gPiAjZGVmaW5lIERFVl9SWF9PRkZMT0FEX0lYR0JFX01BQ1NFQ19T VFJJUAlERVZfUlhfT0ZGTE9BRF9SRVNFUlZFRF8wDQo+ID4gPiAjZGVmaW5lIERFVl9UWF9PRkZM T0FEX0lYR0JFX01BQ1NFQ19JTlNFUlQJREVWX1RYX09GRkxPQURfUkVTRVJWRURfMA0KPiA+ID4N Cj4gPiA+IC8qKg0KPiA+ID4gICogVGhpcyBldmVudCB3aWxsIG9jY3VyIHdoZW4gdGhlIFBOIGNv dW50ZXIgaW4gYSBNQUNzZWMgY29ubmVjdGlvbg0KPiA+ID4gICogcmVhY2ggdGhlIGV4aGF1c3Rp b24gdGhyZXNob2xkLg0KPiA+ID4gICovDQo+ID4gPiAjZGVmaW5lIFJURV9FVEhfRVZFTlRfSVhH QkVfTUFDU0VDCQlSVEVfRVRIX0VWRU5UX1JFU0VSVkVEXzANCj4gPiA+DQo+ID4gPiAvKioNCj4g PiA+ICAqIE9mZmxvYWQgdGhlIE1BQ3NlYy4gVGhpcyBmbGFnIG11c3QgYmUgc2V0IGJ5IHRoZSBh cHBsaWNhdGlvbiBpbiBtYnVmDQo+ID4gPiAgKiB0byBlbmFibGUgdGhpcyBvZmZsb2FkIGZlYXR1 cmUgZm9yIGEgcGFja2V0IHRvIGJlIHRyYW5zbWl0dGVkLg0KPiA+ID4gICovDQo+ID4gPiAjZGVm aW5lIFBLVF9UWF9JWEdCRV9NQUNTRUMJCQlQS1RfVFhfUkVTRVJWRURfMA0KPiA+ID4NCj4gPiA+ IFBNRC1zcGVjaWZpYyBBUElzIGNhbiBvbmx5IGJlIHVzZWQgb24gdGhlIGNvcnJlc3BvbmRpbmcg ZHJpdmVyL2RldmljZSwNCj4gPiA+IHNvIGRpZmZlcmVudCBQTUQgY2FuIHNoYXJlIHRoZSBzYW1l IHJlc2VydmVkIGJpdCB0byByZXByZXNlbnQgZGlmZmVyZW50DQo+ID4gPiB0aGluZ3Mgd2hlbiBp bXBsZW1lbnRpbmcgdGhlaXIgb3duIFBNRC1zcGVjaWZpYyBBUElzLg0KPiA+DQo+ID4gT2ssIGFu ZCB3aHkgZG8gd2UgbmVlZCBpdD8NCj4gPiBXaHkgd2UgY2FuJ3QganVzdCBoYXZlIFBLVF9UWF9N QUNTRUMgc3RyYWlnaHR3YXk/DQo+ID4gV2hhdCBhcmUgeW91IHRyeWluZyB0byBnYWluIGhlcmU/ DQo+ID4gSXMgaXQganVzdCBmb3IgZnV0dXJlIG9wcG9ydHVuaXR5IHRvIHNhdmUgYW4gZXh0cmEg Yml0IGluIG1idWYub2xfZmxhZ3M/DQo+ID4gSSBkb24ndCB0aGluayB3ZSBhcmUgc2hvcnQgb2Yg Yml0cyBoZXJlIHJpZ2h0IG5vdywgYW5kIHdlIGRvbid0IGNvbnN1bWUgdGhlbSBleHJhLWZhc3QN Cj4gPiB0byBzdGFydCB0byB3b3JyeSBhYm91dCBpdC4NCj4gPiBBZ2FpbiwgaWYgaXQgKnJlYWxs eSogd291bGQgYmUgZm9yIGl4Z2JlIG9ubHkgZm9yZXZlciwgYW5kIHkgZG9uJ3Qgd2FudCB0byB3 YXN0ZSBhIGJpdCBpbiB0eF9vbGZsYWdzLA0KPiA+IHdoeSBub3QgdG8gaW50cm9kdWNlIGRldmlj ZSBzcGVjaWZpYyBvbF9mbGFncyBpbiBtYnVmIHNlY29uZCBjYWNoZSBsaW5lPw0KPiA+IFByb2Jh Ymx5IHVpbnQxNl90IHdvdWxkIGJlIGVub3VnaCBmb3IgdGhhdC4NCj4gPg0KPiA+ID4NCj4gPiA+ ID4gQW5vdGhlciBxdWVzdGlvbiB3aGF0IHRvIGRvIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGNyZWF0 ZSBhIGJvbmRlZCBkZXZpY2Ugb3ZlciB0d28gZGV2aWNlcyB3aXRoIGRpZmZlcmVudCBOSUMgdHlw ZXM/DQo+ID4gPiA+IEFzIEkgdW5kZXJzdGFuZCB5b3UgY2FuIGVuZCB1cCBpbiBzaXR1YXRpb24g d2hlbiAgREVWX1JYX09GRkxPQURfUkVTRVJWRURfMCAgd291bGQgbWVhbiBkaWZmZXJlbnQgY2Fw YWJpbGl0aWVzLg0KPiA+ID4gPiBXaHkgbm90IHRvIGhhdmUgdGhpcyBNQUNTRUMgY2FwYWJpbGl0 eSBhbmQgb2xfZmxhZyB2YWx1ZSBhcyBnZW5lcmljIG9uZXMsIGFzIHlvdSBoYXZlIHRoZW0gaW4g cHJldmlvdXMgdmVyc2lvbnMgb2YgeW91ciBwYXRjaD8NCj4gPiA+DQo+ID4gPiBUaG9zZSBmbGFn cyBhcmUgb25seSB1c2VkIGluIFBNRC1zcGVjaWZpYyBBUElzLiBJIGRvbid0IHRoaW5rIHdlIGNv dWxkDQo+ID4gPiB1c2UgdGhlIFBNRC1zcGVjaWZpYyBBUElzIHByb3ZpZGVkIGJ5IGEgY2VydGFp biBQTUQgb24gYSBib25kZWQgZGV2aWNlLg0KPiA+DQo+ID4gSSB1bmRlcnN0YW5kIHRoYXQuDQo+ ID4gTXkgcXVlc3Rpb24gd2FzOiBzdXBwb3NlIHVzZXIgd291bGQgbGlrZSB0byBjcmVhdGUgYSBi b25kZWQgZGV2aWNlIG92ZXIgMiBOSUNzLg0KPiA+IE9uZSBvZiB0aGVtIGlzIGl4Z2JlLCB3aGls ZSBvdGhlciB3b3VsZCBiZSBzb21lIG90aGVyIHR5cGUuDQo+ID4gSW4gZnV0dXJlIGdldF9kZXZf aW5mbygpIGZvciBlYWNoIG9mIHRoZW0gbWlnaHQgcmV0dXJuIERFVl9SWF9PRkZMT0FEX1JFU0VS VkVEXzAgIGJpdCBhcyBzZXQuDQo+ID4gQnV0IGl0IHdvdWxkIG1lYW4gY29tcGxldGVseSBkaWZm ZXJlbnQgdGhpbmcuDQo+ID4gSG93IGJvbmRlZCBkZXZpY2Ugd291bGQga25vdyB0aGF0IHRvIGRl YWwgcHJvcGVybHk/DQo+ID4NCj4gPiBBbm90aGVyIGV4YW1wbGUgLSB1c2VyIGhhcyAyIE5JQ3Mg b2YgZGlmZmVyZW50IHR5cGUgYW5kIHdvdWxkIGxpa2UgdG8gc2VuZCB0aGUgc2FtZSBwYWNrZXQg b24gYm90aCBvZiB0aGVtIHNpbXVsdGFuZW91c2x5Lg0KPiA+IEFzIFBLVF9UWF9SRVNFUlZFRCBt aWdodCBtZWFuIGRpZmZlcmVudCB0aGluZ3MgZm9yIHRoZXNlIGRldmljZXMsIGFuZCB1c2VyIHdv dWxkIGxpa2UgdG8gdXNlIGxldCBzYXkNCj4gPiBQS1RfVFhfSVhHQkVfTUFDU0VDIG9uIG9uZSBv ZiB0aGVtLCBoZSB3b3VsZCBuZWVkIHRvIGRvIGEgY29weSBvZiB0aGVtLCBpbnN0ZWFkIGp1c3Qg aW5jcmVtZW50IGEgcmVmY250Lg0KPiA+DQo+ID4gU2ltaWxhciBpc3N1ZXMgbWlnaHQgYXJpc2Ug YXQgUlggaGFuZGxpbmc6IHVzZXIgZ290IGEgcGFja2V0IHdpdGggUEtUX1JYX1JFU0VSVkVEXzAg c2V0Lg0KPiA+IFdoYXQgZG9lcyBpdCByZWFsbHkgbWVhbiBpZiB0aGVyZSBhcmUgZGlmZmVyZW50 IE5JQyB0eXBlcyBpbiB0aGUgc3lzdGVtPw0KPiA+IFRoZSBvbmx5IHdheSB0byBhbnN3ZXIgdGhh dCBxdWVzdGlvbiwgYXMgSSBjYW4gc2VlLCAgaXMgdG8ga2VlcCB0cmFjayBmcm9tIHdoYXQgTklD IHRoYXQgcGFja2V0IHdhcyByZWNlaXZlZC4NCj4gPiBXaGljaCBJIHN1cHBvc2UsIGlzIG5vdCBh bHdheXMgY29udmVuaWVudC4NCj4gPg0KPiANCj4gVGhlIG1haW4gcHVycG9zZSBpcyB0byBwdXQg dGhlIFBNRC1zcGVjaWZpYyBBUElzIGluIGEgc2VwYXJhdGUNCj4gbmFtZXNwYWNlIGluc3RlYWQg b2YgbWl4aW5nIHRoZSBQTUQtc3BlY2lmaWMgQVBJcyBhbmQgZ2xvYmFsIEFQSXMNCj4gdXAsIGFu ZCBhbHNvIHNhdmUgdGhlIGJpdHMgaW4gbWJ1Zi5vbF9mbGFncy4NCj4gDQo+IFRoZXJlIGFyZSBv dGhlciB3YXlzIHRvIGFjaGlldmUgdGhpcyBnb2FsLCBzdWNoIGFzIGludHJvZHVjaW5nDQo+IHRo ZSBQTUQgc3BlY2lmaWMgb2xfZmxhZ3MgaW4gbWJ1ZiBzZWNvbmQgY2FjaGUgbGluZSBhcyB5b3Ug c2FpZC4NCj4gSSBqdXN0IHRob3VnaHQgZGVmaW5pbmcgc29tZSByZXNlcnZlZCBiaXRzIHNlZW1z IHRvIGJlIHRoZSBtb3N0DQo+IHNpbXBsZSB3YXkgd2hpY2ggd29uJ3QgaW50cm9kdWNlIG1hbnkg Y2hhbmdlcy4NCj4gDQo+IFdoYXQncyB5b3VyIHN1Z2dlc3Rpb25zPyBTaG91bGQgSSBqdXN0IHJl dmVydCB0aGUgY2hhbmdlcyBhbmQNCj4gZGVmaW5lIHRoZSBnZW5lcmljIGZsYWdzIGRpcmVjdGx5 Pw0KDQpZZXMsIHRoYXQgd291bGQgYmUgbXkgcHJlZmVyZW5jZS4NCkFzIEkgc2FpZCBhYm92ZSAt IHNwZW5kaW5nIGV4dHJhIGJpdCBpbiBvbF9mbGFncyAgZG9lc24ndCBsb29rIGxpa2UgYSBiaWcg cHJvYmxlbSB0byBtZS4NCkluIHJldHVybiB0aGVyZSB3b3VsZCBiZSBubyBuZWVkIHRvIGNvbnNp ZGVyIGhvdyB0byBoYW5kbGUgYWxsIHRoYXQgY29uZnVzaW5nIHNjZW5hcmlvcyBpbiBmdXR1cmUu DQpLb25zdGFudGluDQoNCg0KPiANCj4gVGhhbmtzICYgcmVnYXJkcywNCj4gVGl3ZWkgQmllDQo=