From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id EE5A9C6C4 for ; Thu, 30 Jul 2015 21:00:41 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP; 30 Jul 2015 12:00:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,578,1432623600"; d="scan'208";a="616262924" Received: from pgsmsx102.gar.corp.intel.com ([10.221.44.80]) by orsmga003.jf.intel.com with ESMTP; 30 Jul 2015 12:00:36 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by PGSMSX102.gar.corp.intel.com (10.221.44.80) with Microsoft SMTP Server (TLS) id 14.3.224.2; Fri, 31 Jul 2015 03:00:35 +0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.45]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.213]) with mapi id 14.03.0224.002; Fri, 31 Jul 2015 03:00:34 +0800 From: "Zhang, Helin" To: Vlad Zolotarov , "Ananyev, Konstantin" Thread-Topic: i40e xmit path HW limitation Thread-Index: AQHQytgX0NZLyLyoJE69mFI5StFakp30KEOw//+J6wCAAJDrwP//gyaAgACIBkA= Date: Thu, 30 Jul 2015 19:00:33 +0000 Message-ID: References: <55BA3B5D.4020402@cloudius-systems.com> <55BA5468.80109@cloudius-systems.com> <55BA653D.5060109@cloudius-systems.com> In-Reply-To: <55BA653D.5060109@cloudius-systems.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] i40e xmit path HW limitation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Jul 2015 19:00:43 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVmxhZCBab2xvdGFyb3Yg W21haWx0bzp2bGFkekBjbG91ZGl1cy1zeXN0ZW1zLmNvbV0NCj4gU2VudDogVGh1cnNkYXksIEp1 bHkgMzAsIDIwMTUgMTA6NTYgQU0NCj4gVG86IFpoYW5nLCBIZWxpbjsgQW5hbnlldiwgS29uc3Rh bnRpbg0KPiBDYzogZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBpNDBlIHhtaXQgcGF0aCBI VyBsaW1pdGF0aW9uDQo+IA0KPiANCj4gDQo+IE9uIDA3LzMwLzE1IDIwOjMzLCBaaGFuZywgSGVs aW4gd3JvdGU6DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJv bTogVmxhZCBab2xvdGFyb3YgW21haWx0bzp2bGFkekBjbG91ZGl1cy1zeXN0ZW1zLmNvbV0NCj4g Pj4gU2VudDogVGh1cnNkYXksIEp1bHkgMzAsIDIwMTUgOTo0NCBBTQ0KPiA+PiBUbzogWmhhbmcs IEhlbGluOyBBbmFueWV2LCBLb25zdGFudGluDQo+ID4+IENjOiBkZXZAZHBkay5vcmcNCj4gPj4g U3ViamVjdDogUmU6IGk0MGUgeG1pdCBwYXRoIEhXIGxpbWl0YXRpb24NCj4gPj4NCj4gPj4NCj4g Pj4NCj4gPj4gT24gMDcvMzAvMTUgMTk6MTAsIFpoYW5nLCBIZWxpbiB3cm90ZToNCj4gPj4+PiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IFZsYWQgWm9sb3Rhcm92IFtt YWlsdG86dmxhZHpAY2xvdWRpdXMtc3lzdGVtcy5jb21dDQo+ID4+Pj4gU2VudDogVGh1cnNkYXks IEp1bHkgMzAsIDIwMTUgNzo1OCBBTQ0KPiA+Pj4+IFRvOiBkZXZAZHBkay5vcmc7IEFuYW55ZXYs IEtvbnN0YW50aW47IFpoYW5nLCBIZWxpbg0KPiA+Pj4+IFN1YmplY3Q6IFJGQzogaTQwZSB4bWl0 IHBhdGggSFcgbGltaXRhdGlvbg0KPiA+Pj4+DQo+ID4+Pj4gSGksIEtvbnN0YW50aW4sIEhlbGlu LA0KPiA+Pj4+IHRoZXJlIGlzIGEgZG9jdW1lbnRlZCBsaW1pdGF0aW9uIG9mIHhsNzEwIGNvbnRy b2xsZXJzIChpNDBlIGRyaXZlcikNCj4gPj4+PiB3aGljaCBpcyBub3QgaGFuZGxlZCBpbiBhbnkg d2F5IGJ5IGEgRFBESyBkcml2ZXIuDQo+ID4+Pj4gICAgRnJvbSB0aGUgZGF0YXNoZWV0IGNoYXB0 ZXIgOC40LjE6DQo+ID4+Pj4NCj4gPj4+PiAi4oCiIEEgc2luZ2xlIHRyYW5zbWl0IHBhY2tldCBt YXkgc3BhbiB1cCB0byA4IGJ1ZmZlcnMgKHVwIHRvIDggZGF0YQ0KPiA+Pj4+IGRlc2NyaXB0b3Jz IHBlciBwYWNrZXQgaW5jbHVkaW5nIGJvdGggdGhlIGhlYWRlciBhbmQgcGF5bG9hZCBidWZmZXJz KS4NCj4gPj4+PiDigKIgVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIGRlc2NyaXB0b3JzIGZvciB0 aGUgd2hvbGUgVFNPIChleHBsYWluZWQNCj4gPj4+PiBsYXRlciBvbiBpbiB0aGlzIGNoYXB0ZXIp IGlzIHVubGltaXRlZCBhcyBsb25nIGFzIGVhY2ggc2VnbWVudA0KPiA+Pj4+IHdpdGhpbiB0aGUg VFNPIG9iZXlzIHRoZSBwcmV2aW91cyBydWxlICh1cCB0byA4IGRhdGEgZGVzY3JpcHRvcnMNCj4g Pj4+PiBwZXIgc2VnbWVudCBmb3IgYm90aCB0aGUgVFNPIGhlYWRlciBhbmQgdGhlIHNlZ21lbnQg cGF5bG9hZCBidWZmZXJzKS4iDQo+ID4+PiBZZXMsIEkgcmVtZW1iZXIgdGhlIFJYIHNpZGUganVz dCBzdXBwb3J0cyA1IHNlZ21lbnRzIHBlciBwYWNrZXQgcmVjZWl2aW5nLg0KPiA+Pj4gQnV0IHdo YXQncyB0aGUgcG9zc2libGUgaXNzdWUgeW91IHRob3VnaHQgYWJvdXQ/DQo+ID4+IE5vdGUgdGhh dCBpdCdzIGEgVHggc2l6ZSB3ZSBhcmUgdGFsa2luZyBhYm91dC4NCj4gPj4NCj4gPj4gU2VlIDMw NTIwODMxZjA1OGNkOWQ3NWMwZjZiMzYwYmM1YzVhZTQ5YjVmMjcgY29tbWl0IGluIGxpbnV4IG5l dC1uZXh0DQo+IHJlcG8uDQo+ID4+IElmIHN1Y2ggYSBjbHVzdGVyIGFycml2ZXMgYW5kIHlvdSBw b3N0IGl0IG9uIHRoZSBIVyByaW5nIC0gSFcgd2lsbA0KPiA+PiBzaHV0IHRoaXMgSFcgcmluZyBk b3duIHBlcm1hbmVudGx5LiBUaGUgYXBwbGljYXRpb24gd2lsbCBzZWUgdGhhdCBpdCdzIHJpbmcg aXMNCj4gc3R1Y2suDQo+ID4gVGhhdCBpc3N1ZSB3YXMgYmVjYXVzZSBvZiB1c2luZyBtb3JlIHRo YW4gOCBkZXNjcmlwdG9ycyBmb3IgYSBwYWNrZXQgZm9yIFRTTy4NCj4gDQo+IFRoZXJlIGlzIG5v IHByb2JsZW0gaW4gdHJhbnNtaXR0aW5nIHRoZSBUU08gcGFja2V0IHdpdGggbW9yZSB0aGFuIDgg ZnJhZ21lbnRzLg0KPiBPbiB0aGUgb3Bwb3NpdGUgLSBvbmUgY2FuJ3QgdHJhbnNtaXQgYSBub24t VFNPIHBhY2tldCB3aXRoIG1vcmUgdGhhbiA4DQo+IGZyYWdtZW50cy4NCj4gT25lIGFsc28gY2Fu J3QgdHJhbnNtaXQgdGhlIFRTTyBwYWNrZXQgdGhhdCB3b3VsZCBjb250YWluIG1vcmUgdGhhbiA4 IGZyYWdtZW50cw0KPiBpbiBhIHNpbmdsZSBUU08gc2VnbWVudCBpbmNsdWRpbmcgdGhlIFRTTyBo ZWFkZXJzLg0KPiANCj4gUGxzLiwgcmVhZCB0aGUgSFcgc3BlYyBhcyBJIHF1b3RlZCBhYm92ZSBm b3IgbW9yZSBkZXRhaWxzLg0KSSBtZWFudCBhIHBhY2tldCB0byBiZSB0cmFuc21pdHRlZCBieSB0 aGUgaGFyZHdhcmUsIGJ1dCBub3QgdGhlIFRTTyBwYWNrZXQgaW4gbWVtb3J5Lg0KSXQgY291bGQg YmUgYSBzZWdtZW50IGluIFRTTyBwYWNrZXQgaW4gbWVtb3J5Lg0KVGhlIGxpbmVhcml6ZSBjaGVj ayBpbiBrZXJuZWwgZHJpdmVyIGlzIG5vdCBmb3IgVFNPIG9ubHksIGl0IGlzIGZvciBib3RoIFRT TyBhbmQNCk5PTi1UU08gY2FzZXMuDQoNCj4gDQo+ID4NCj4gPj4+PiBUaGlzIG1lYW5zIHRoYXQs IGZvciBpbnN0YW5jZSwgbG9uZyBjbHVzdGVyIHdpdGggc21hbGwgZnJhZ21lbnRzDQo+ID4+Pj4g aGFzIHRvIGJlIGxpbmVhcml6ZWQgYmVmb3JlIGl0IG1heSBiZSBwbGFjZWQgb24gdGhlIEhXIHJp bmcuDQo+ID4+PiBXaGF0IHR5cGUgb2Ygc2l6ZSBvZiB0aGUgc21hbGwgZnJhZ21lbnRzPyBCYXNp Y2FsbHkgMktCIGlzIHRoZQ0KPiA+Pj4gZGVmYXVsdCBzaXplIG9mDQo+ID4+IG1idWYgb2YgbW9z dA0KPiA+Pj4gZXhhbXBsZSBhcHBsaWNhdGlvbnMuIDJLQiB4IDggaXMgYmlnZ2VyIHRoYW4gMS41 S0IuIFNvIGl0IGlzIGVub3VnaA0KPiA+Pj4gZm9yIHRoZQ0KPiA+PiBtYXhpbXVtDQo+ID4+PiBw YWNrZXQgc2l6ZSB3ZSBzdXBwb3J0ZWQuDQo+ID4+PiBJZiAxS0IgbWJ1ZiBpcyB1c2VkLCBkb24n dCBleHBlY3QgaXQgY2FuIHRyYW5zbWl0IG1vcmUgdGhhbiA4S0Igc2l6ZSBvZg0KPiBwYWNrZXQu DQo+ID4+IEkga2luZGEgbG9zdCB1IGhlcmUuIEFnYWluLCB3ZSB0YWxrIGFib3V0IHRoZSBUeCBz aWRlIGhlcmUgYW5kDQo+ID4+IGJ1ZmZlcnMgYXJlIG5vdCBvYmxpZ2F0b3J5IGNvbXBsZXRlbHkg ZmlsbGVkLiBOYW1lbHkgdGhlcmUgbWF5IGJlIGENCj4gPj4gY2x1c3RlciB3aXRoDQo+ID4+IDE1 IGZyYWdtZW50cyAxMDAgYnl0ZXMgZWFjaC4NCj4gPiBUaGUgcm9vdCBjYXVzZSBpcyB1c2luZyBt b3JlIHRoYW4gOCBkZXNjcmlwdG9ycyBmb3IgYSBwYWNrZXQuDQo+IA0KPiBUaGF0IHdvdWxkIGJl IGlmIHUgd291bGQgbGlrZSB0byBTVVBFUiBzaW1wbGlmeSB0aGUgSFcgbGltaXRhdGlvbiBhYm92 ZS4NCj4gSW4gdGhhdCBjYXNlIHUgd291bGQgc2lnbmlmaWNhbnRseSBsaW1pdCB0aGUgZGlmZmVy ZW50IHBhY2tldHMgdGhhdCBtYXkgYmUgc2VudA0KPiB3aXRob3V0IHRoZSBsaW5lYXJpemF0aW9u Lg0KPiANCj4gPiBMaW51eCBkcml2ZXIgY2FuIGhlbHANCj4gPiBvbiByZWR1Y2luZyBudW1iZXIg b2YgZGVzY3JpcHRvcnMgdG8gYmUgdXNlZCBieSBtZXJnaW5nIHNtYWxsIHNpemUgb2YNCj4gPiBw YXlsb2FkIHRvZ2V0aGVyLCByaWdodD8NCj4gPiBJdCBpcyBub3QgZm9yIFRTTywgaXQgaXMganVz dCBmb3IgcGFja2V0IHRyYW5zbWl0dGluZy4gMiBvcHRpb25zIGluIG15IG1pbmQ6DQo+ID4gMS4g VXNlIHNob3VsZCBlbnN1cmUgaXQgd2lsbCBub3QgdXNlIG1vcmUgdGhhbiA4IGRlc2NyaXB0b3Jz IHBlciBwYWNrZXQgZm9yDQo+IHRyYW5zbWl0dGluZy4NCj4gDQo+IFRoaXMgcmVxdWlyZW1lbnQg aXMgdG9vIHJlc3RyaWN0aW5nLiBQbHMuLCBzZWUgYWJvdmUuDQo+IA0KPiA+IDIuIERQREsgZHJp dmVyIHNob3VsZCB0cnkgdG8gbWVyZ2Ugc21hbGwgcGFja2V0IHRvZ2V0aGVyIGZvciBzdWNoIGNh c2UsIGxpa2UNCj4gTGludXgga2VybmVsIGRyaXZlci4NCj4gPiBJIHByZWZlciB0byB1c2Ugb3B0 aW9uIDEsIHVzZXJzIHNob3VsZCBlbnN1cmUgdGhhdCBpbiB0aGUgYXBwbGljYXRpb24NCj4gPiBv ciB1cCBsYXllciBzb2Z0d2FyZSwgYW5kIGtlZXAgdGhlIFBNRCBkcml2ZXIgYXMgc2ltcGxlIGFz IHBvc3NpYmxlLg0KPiANCj4gVGhlIGFib3ZlIHN0YXRlbWVudCBpcyBzdXBlciBjb25mdXNpbmc6 IG9uIHRoZSBvbmUgaGFuZCB1IHN1Z2dlc3QgdGhlIERQREsNCj4gZHJpdmVyIHRvIG1lcmdlIHRo ZSBzbWFsbCBwYWNrZXQgKGZyYWdtZW50cz8pIHRvZ2V0aGVyIChob3c/KSBhbmQgdGhlbiB1DQo+ IGltbWVkaWF0ZWx5IHByb3Bvc2UgdGhlIHVzZXIgYXBwbGljYXRpb24gdG8gZG8gdGhhdC4gQ291 bGQgdSwgcGxzLiwgY2xhcmlmeSB3aGF0DQo+IGV4YWN0bHkgdSBzdWdnZXN0IGhlcmU/DQo+IElm IHRoYXQncyB0byBsZWF2ZSBpdCB0byB0aGUgYXBwbGljYXRpb24gLSBub3RlIHRoYXQgaXQgd291 bGQgZGVtYW5kIHBhdGNoaW5nIGFsbA0KPiBleGlzdGluZyBEUERLIGFwcGxpY2F0aW9ucyB0aGF0 IHNlbmQgVENQIHBhY2tldHMuDQpUaG9zZSBhcmUgdHdvIG9mIG9idmlvdXMgb3B0aW9ucy4gT25l IGlzIHRvIGRvIHRoYXQgaW4gUE1ELCB0aGUgb3RoZXIgb25lIGlzIHRvIGRvDQp0aGF0IGluIHVw IGxheWVyLiBJIGRpZCBub3QgbWVhbiBpdCBuZWVkcyB0byBkbyBib3RoIQ0KDQoNCj4gDQo+ID4N Cj4gPiBCdXQgSSBoYXZlIGEgdGhvdWdodCB0aGF0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBSWC9U WCBkZXNjcmlwdG9yDQo+ID4gc2hvdWxkIGJlIGFibGUgdG8gYmUgcXVlcmllZCBzb21ld2hlcmUu DQo+IA0KPiBUaGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIG1heGltdW0gbnVtYmVyIG9mIFR4IGZy YWdtZW50cyBpbiBhIFRTTyBjYXNlLg0KPiBJdCdzIG9ubHkgbGltaXRlZCBieSB0aGUgVHggcmlu ZyBzaXplLg0KQWdhaW4sIGl0IGlzIG5vdCBmb3IgVFNPIGNhc2Ugb25seS4gWW91IGFyZSB0YWxr aW5nIGFib3V0IGhvdyB0byBpbXBsZW1lbnQgaXQ/DQpBbnl0aGluZyBtaXNzZWQgY2FuIGJlIGFk ZGVkLCBhcyBsb25nIGFzIGl0IGlzIHJlYXNvbmFibGUuDQoNClJlZ2FyZHMsDQpIZWxpbg0KDQo+ IA0KPiA+DQo+ID4gUmVnYXJkcywNCj4gPiBIZWxpbg0KPiA+Pj4+IEluIG1vcmUgc3RhbmRhcmQg ZW52aXJvbm1lbnRzIGxpa2UgTGludXggb3IgRnJlZUJTRCBkcml2ZXJzIHRoZQ0KPiA+Pj4+IHNv bHV0aW9uIGlzIHN0cmFpZ2h0IGZvcndhcmQgLSBjYWxsIHNrYl9saW5lYXJpemUoKS9tX2NvbGxh cHNlKCkNCj4gY29ycmVzcG9uZGluZy4NCj4gPj4+PiBJbiB0aGUgbm9uLWNvbmZvcm1pc3QgZW52 aXJvbm1lbnQgbGlrZSBEUERLIGxpZmUgaXMgbm90IHRoYXQgZWFzeSAtDQo+ID4+Pj4gdGhlcmUg aXMgbm8gZWFzeSB3YXkgdG8gY29sbGFwc2UgdGhlIGNsdXN0ZXIgaW50byBhIGxpbmVhciBidWZm ZXINCj4gPj4+PiBmcm9tIGluc2lkZSB0aGUgZGV2aWNlDQo+ID4+IGRyaXZlcg0KPiA+Pj4+IHNp bmNlIGRldmljZSBkcml2ZXIgZG9lc24ndCBhbGxvY2F0ZSBtZW1vcnkgaW4gYSBmYXN0IHBhdGgg YW5kDQo+ID4+Pj4gdXRpbGl6ZXMgdGhlIHVzZXIgYWxsb2NhdGVkIHBvb2xzIG9ubHkuDQo+ID4+ Pj4gSGVyZSBhcmUgdHdvIHByb3Bvc2FscyBmb3IgYSBzb2x1dGlvbjoNCj4gPj4+Pg0KPiA+Pj4+ ICAgIDEuIFdlIG1heSBwcm92aWRlIGEgY2FsbGJhY2sgdGhhdCB3b3VsZCByZXR1cm4gYSB1c2Vy IFRSVUUgaWYgYSBnaXZlDQo+ID4+Pj4gICAgICAgY2x1c3RlciBoYXMgdG8gYmUgbGluZWFyaXpl ZCBhbmQgaXQgc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgYmVmb3JlDQo+ID4+Pj4gICAgICAgcnRl X2V0aF90eF9idXJzdCgpLiBBbHRlcm5hdGl2ZWx5IGl0IG1heSBiZSBjYWxsZWQgZnJvbSBpbnNp ZGUgdGhlDQo+ID4+Pj4gICAgICAgcnRlX2V0aF90eF9idXJzdCgpIGFuZCBydGVfZXRoX3R4X2J1 cnN0KCkgaXMgY2hhbmdlZCB0byByZXR1cm4NCj4gc29tZQ0KPiA+Pj4+ICAgICAgIGVycm9yIGNv ZGUgZm9yIGEgY2FzZSB3aGVuIG9uZSBvZiB0aGUgY2x1c3RlcnMgaXQncyBnaXZlbiBoYXMgdG8g YmUNCj4gPj4+PiAgICAgICBsaW5lYXJpemVkLg0KPiA+Pj4+ICAgIDIuIEFub3RoZXIgb3B0aW9u IGlzIHRvIGFsbG9jYXRlIGEgbWVtcG9vbCBpbiB0aGUgZHJpdmVyIHdpdGggdGhlDQo+ID4+Pj4g ICAgICAgZWxlbWVudHMgY29uc3VtaW5nIGEgc2luZ2xlIHBhZ2UgZWFjaCAoc3RhbmRhcmQgMktC IGJ1ZmZlcnMNCj4gd291bGQNCj4gPj4+PiAgICAgICBkbykuIE51bWJlciBvZiBlbGVtZW50cyBp biB0aGUgcG9vbCBzaG91bGQgYmUgYXMgVHggcmluZyBsZW5ndGgNCj4gPj4+PiAgICAgICBtdWx0 aXBsaWVkIGJ5ICI2NEtCLyhsaW5lYXIgZGF0YSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB0aGUg cG9vbA0KPiA+Pj4+ICAgICAgIGFib3ZlKSIuIEhlcmUgSSB1c2UgNjRLQiBhcyBhIG1heGltdW0g cGFja2V0IGxlbmd0aCBhbmQgbm90DQo+IHRha2luZw0KPiA+Pj4+ICAgICAgIGludG8gYW4gYWNj b3VudCBlc290ZXJpYyB0aGluZ3MgbGlrZSAiR2lhbnQiIFRTTyBtZW50aW9uZWQgaW4gdGhlDQo+ ID4+Pj4gICAgICAgc3BlYyBhYm92ZS4gVGhlbiB3ZSBtYXkgYWN0dWFsbHkgZ28gYW5kIGxpbmVh cml6ZSB0aGUgY2x1c3RlciBpZg0KPiA+Pj4+ICAgICAgIG5lZWRlZCBvbiB0b3Agb2YgdGhlIGJ1 ZmZlcnMgZnJvbSB0aGUgcG9vbCBhYm92ZSwgcG9zdCB0aGUgYnVmZmVyDQo+ID4+Pj4gICAgICAg ZnJvbSB0aGUgbWVtcG9vbCBhYm92ZSBvbiB0aGUgSFcgcmluZywgbGluayB0aGUgb3JpZ2luYWwg Y2x1c3RlciB0bw0KPiA+Pj4+ICAgICAgIHRoYXQgbmV3IGNsdXN0ZXIgKHVzaW5nIHRoZSBwcml2 YXRlIGRhdGEpIGFuZCByZWxlYXNlIGl0IHdoZW4gdGhlDQo+ID4+Pj4gICAgICAgc2VuZCBpcyBk b25lLg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBUaGUgZmlyc3QgaXMgYSBjaGFuZ2UgaW4gdGhl IEFQSSBhbmQgd291bGQgcmVxdWlyZSBmcm9tIHRoZQ0KPiA+Pj4+IGFwcGxpY2F0aW9uIHNvbWUg YWRkaXRpb25hbCBoYW5kbGluZyAobGluZWFyaXphdGlvbikuIFRoZSBzZWNvbmQNCj4gPj4+PiB3 b3VsZCByZXF1aXJlIHNvbWUgYWRkaXRpb25hbCBtZW1vcnkgYnV0IHdvdWxkIGtlZXAgYWxsIGRp cnR5DQo+ID4+Pj4gZGV0YWlscyBpbnNpZGUgdGhlIGRyaXZlciBhbmQgd291bGQgbGVhdmUgdGhl IHJlc3Qgb2YgdGhlIGNvZGUgaW50YWN0Lg0KPiA+Pj4+DQo+ID4+Pj4gUGxzLiwgY29tbWVudC4N Cj4gPj4+Pg0KPiA+Pj4+IHRoYW5rcywNCj4gPj4+PiB2bGFkDQo+ID4+Pj4NCg0K