From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Wiles, Keith" Subject: Re: Performance hit - NICs on different CPU sockets Date: Thu, 16 Jun 2016 20:16:19 +0000 Message-ID: <04F75F9D-425C-4D7C-955C-4A1456521341@intel.com> References: <1DB024A9-9185-41C8-9FA5-67C41891189A@intel.com> <2A957DA5-72A6-45B0-8B76-FE0DBDE758FD@intel.com> <9FD66398-C7F0-43AF-89F6-79BB95A16A37@intel.com> <914ABD39-039F-4142-8ADB-BE20465676C1@intel.com> <5A730B5F-BD52-4DDD-828C-62468439E1CF@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev@dpdk.org" To: Take Ceara Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id B9CECC66A for ; Thu, 16 Jun 2016 22:16:27 +0200 (CEST) In-Reply-To: Content-Language: en-US Content-ID: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQpPbiA2LzE2LzE2LCAzOjAwIFBNLCAiVGFrZSBDZWFyYSIgPGR1bWl0cnUuY2VhcmFAZ21haWwu Y29tPiB3cm90ZToNCg0KPk9uIFRodSwgSnVuIDE2LCAyMDE2IGF0IDk6MzMgUE0sIFdpbGVzLCBL ZWl0aCA8a2VpdGgud2lsZXNAaW50ZWwuY29tPiB3cm90ZToNCj4+IE9uIDYvMTYvMTYsIDE6MjAg UE0sICJUYWtlIENlYXJhIiA8ZHVtaXRydS5jZWFyYUBnbWFpbC5jb20+IHdyb3RlOg0KPj4NCj4+ Pk9uIFRodSwgSnVuIDE2LCAyMDE2IGF0IDY6NTkgUE0sIFdpbGVzLCBLZWl0aCA8a2VpdGgud2ls ZXNAaW50ZWwuY29tPiB3cm90ZToNCj4+Pj4NCj4+Pj4gT24gNi8xNi8xNiwgMTE6NTYgQU0sICJk ZXYgb24gYmVoYWxmIG9mIFdpbGVzLCBLZWl0aCIgPGRldi1ib3VuY2VzQGRwZGsub3JnIG9uIGJl aGFsZiBvZiBrZWl0aC53aWxlc0BpbnRlbC5jb20+IHdyb3RlOg0KPj4+Pg0KPj4+Pj4NCj4+Pj4+ T24gNi8xNi8xNiwgMTE6MjAgQU0sICJUYWtlIENlYXJhIiA8ZHVtaXRydS5jZWFyYUBnbWFpbC5j b20+IHdyb3RlOg0KPj4+Pj4NCj4+Pj4+Pk9uIFRodSwgSnVuIDE2LCAyMDE2IGF0IDU6MjkgUE0s IFdpbGVzLCBLZWl0aCA8a2VpdGgud2lsZXNAaW50ZWwuY29tPiB3cm90ZToNCj4+Pj4+Pg0KPj4+ Pj4+Pg0KPj4+Pj4+PiBSaWdodCBub3cgSSBkbyBub3Qga25vdyB3aGF0IHRoZSBpc3N1ZSBpcyB3 aXRoIHRoZSBzeXN0ZW0uIENvdWxkIGJlIHRvbyBtYW55IFJ4L1R4IHJpbmcgcGFpcnMgcGVyIHBv cnQgYW5kIGxpbWl0aW5nIHRoZSBtZW1vcnkgaW4gdGhlIE5JQ3MsIHdoaWNoIGlzIHdoeSB5b3Ug Z2V0IGJldHRlciBwZXJmb3JtYW5jZSB3aGVuIHlvdSBoYXZlIDggY29yZSBwZXIgcG9ydC4gSSBh bSBub3QgcmVhbGx5IHNlZWluZyB0aGUgd2hvbGUgcGljdHVyZSBhbmQgaG93IERQREsgaXMgY29u ZmlndXJlZCB0byBoZWxwIG1vcmUuIFNvcnJ5Lg0KPj4+Pj4+DQo+Pj4+Pj5JIGRvdWJ0IHRoYXQg dGhlcmUgaXMgYSBsaW1pdGF0aW9uIHdydCBydW5uaW5nIDE2IGNvcmVzIHBlciBwb3J0IHZzIDgN Cj4+Pj4+PmNvcmVzIHBlciBwb3J0IGFzIEkndmUgdHJpZWQgd2l0aCB0d28gZGlmZmVyZW50IG1h Y2hpbmVzIGNvbm5lY3RlZA0KPj4+Pj4+YmFjayB0byBiYWNrIGVhY2ggd2l0aCBvbmUgWDcxMCBw b3J0IGFuZCAxNiBjb3JlcyBvbiBlYWNoIG9mIHRoZW0NCj4+Pj4+PnJ1bm5pbmcgb24gdGhhdCBw b3J0LiBJbiB0aGF0IGNhc2Ugb3VyIHBlcmZvcm1hbmNlIGRvdWJsZWQgYXMNCj4+Pj4+PmV4cGVj dGVkLg0KPj4+Pj4+DQo+Pj4+Pj4+DQo+Pj4+Pj4+IE1heWJlIHNlZWluZyB0aGUgRFBESyBjb21t YW5kIGxpbmUgd291bGQgaGVscC4NCj4+Pj4+Pg0KPj4+Pj4+VGhlIGNvbW1hbmQgbGluZSBJIHVz ZSB3aXRoIHBvcnRzIDAxOjAwLjMgYW5kIDgxOjAwLjMgaXM6DQo+Pj4+Pj4uL3dhcnAxNyAtYyAw eEZGRkZGRkZGRjMgICAtbSAzMjc2OCAtdyAwMDAwOjgxOjAwLjMgLXcgMDAwMDowMTowMC4zIC0t DQo+Pj4+Pj4tLXFtYXAgMC4weDAwM0ZGMDAzRjAgLS1xbWFwIDEuMHgwRkMwMEZGQzAwDQo+Pj4+ Pj4NCj4+Pj4+Pk91ciBvd24gcW1hcCBhcmdzIGFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgZXhh Y3RseSBob3cgY29yZXMgYXJlDQo+Pj4+Pj5zcGxpdCBiZXR3ZWVuIHBvcnRzLiBJbiB0aGlzIGNh c2Ugd2UgZW5kIHVwIHdpdGg6DQo+Pj4+Pj4NCj4+Pj4+PndhcnAxNz4gc2hvdyBwb3J0IG1hcA0K Pj4+Pj4+UG9ydCAwW3NvY2tldDogMF06DQo+Pj4+Pj4gICBDb3JlIDRbc29ja2V0OjBdIChUeDog MCwgUng6IDApDQo+Pj4+Pj4gICBDb3JlIDVbc29ja2V0OjBdIChUeDogMSwgUng6IDEpDQo+Pj4+ Pj4gICBDb3JlIDZbc29ja2V0OjBdIChUeDogMiwgUng6IDIpDQo+Pj4+Pj4gICBDb3JlIDdbc29j a2V0OjBdIChUeDogMywgUng6IDMpDQo+Pj4+Pj4gICBDb3JlIDhbc29ja2V0OjBdIChUeDogNCwg Ung6IDQpDQo+Pj4+Pj4gICBDb3JlIDlbc29ja2V0OjBdIChUeDogNSwgUng6IDUpDQo+Pj4+Pj4g ICBDb3JlIDIwW3NvY2tldDowXSAoVHg6IDYsIFJ4OiA2KQ0KPj4+Pj4+ICAgQ29yZSAyMVtzb2Nr ZXQ6MF0gKFR4OiA3LCBSeDogNykNCj4+Pj4+PiAgIENvcmUgMjJbc29ja2V0OjBdIChUeDogOCwg Ung6IDgpDQo+Pj4+Pj4gICBDb3JlIDIzW3NvY2tldDowXSAoVHg6IDksIFJ4OiA5KQ0KPj4+Pj4+ ICAgQ29yZSAyNFtzb2NrZXQ6MF0gKFR4OiAxMCwgUng6IDEwKQ0KPj4+Pj4+ICAgQ29yZSAyNVtz b2NrZXQ6MF0gKFR4OiAxMSwgUng6IDExKQ0KPj4+Pj4+ICAgQ29yZSAyNltzb2NrZXQ6MF0gKFR4 OiAxMiwgUng6IDEyKQ0KPj4+Pj4+ICAgQ29yZSAyN1tzb2NrZXQ6MF0gKFR4OiAxMywgUng6IDEz KQ0KPj4+Pj4+ICAgQ29yZSAyOFtzb2NrZXQ6MF0gKFR4OiAxNCwgUng6IDE0KQ0KPj4+Pj4+ICAg Q29yZSAyOVtzb2NrZXQ6MF0gKFR4OiAxNSwgUng6IDE1KQ0KPj4+Pj4+DQo+Pj4+Pj5Qb3J0IDFb c29ja2V0OiAxXToNCj4+Pj4+PiAgIENvcmUgMTBbc29ja2V0OjFdIChUeDogMCwgUng6IDApDQo+ Pj4+Pj4gICBDb3JlIDExW3NvY2tldDoxXSAoVHg6IDEsIFJ4OiAxKQ0KPj4+Pj4+ICAgQ29yZSAx Mltzb2NrZXQ6MV0gKFR4OiAyLCBSeDogMikNCj4+Pj4+PiAgIENvcmUgMTNbc29ja2V0OjFdIChU eDogMywgUng6IDMpDQo+Pj4+Pj4gICBDb3JlIDE0W3NvY2tldDoxXSAoVHg6IDQsIFJ4OiA0KQ0K Pj4+Pj4+ICAgQ29yZSAxNVtzb2NrZXQ6MV0gKFR4OiA1LCBSeDogNSkNCj4+Pj4+PiAgIENvcmUg MTZbc29ja2V0OjFdIChUeDogNiwgUng6IDYpDQo+Pj4+Pj4gICBDb3JlIDE3W3NvY2tldDoxXSAo VHg6IDcsIFJ4OiA3KQ0KPj4+Pj4+ICAgQ29yZSAxOFtzb2NrZXQ6MV0gKFR4OiA4LCBSeDogOCkN Cj4+Pj4+PiAgIENvcmUgMTlbc29ja2V0OjFdIChUeDogOSwgUng6IDkpDQo+Pj4+Pj4gICBDb3Jl IDMwW3NvY2tldDoxXSAoVHg6IDEwLCBSeDogMTApDQo+Pj4+Pj4gICBDb3JlIDMxW3NvY2tldDox XSAoVHg6IDExLCBSeDogMTEpDQo+Pj4+Pj4gICBDb3JlIDMyW3NvY2tldDoxXSAoVHg6IDEyLCBS eDogMTIpDQo+Pj4+Pj4gICBDb3JlIDMzW3NvY2tldDoxXSAoVHg6IDEzLCBSeDogMTMpDQo+Pj4+ Pj4gICBDb3JlIDM0W3NvY2tldDoxXSAoVHg6IDE0LCBSeDogMTQpDQo+Pj4+Pj4gICBDb3JlIDM1 W3NvY2tldDoxXSAoVHg6IDE1LCBSeDogMTUpDQo+Pj4+Pg0KPj4+Pj5PbiBlYWNoIHNvY2tldCB5 b3UgaGF2ZSAxMCBwaHlzaWNhbCBjb3JlcyBvciAyMCBsY29yZXMgcGVyIHNvY2tldCBmb3IgNDAg bGNvcmVzIHRvdGFsLg0KPj4+Pj4NCj4+Pj4+VGhlIGFib3ZlIGlzIGxpc3RpbmcgdGhlIExDT1JF UyAob3IgaHlwZXItdGhyZWFkcykgYW5kIG5vdCBDT1JFcywgd2hpY2ggSSB1bmRlcnN0YW5kIHNv bWUgbGlrZSB0byB0aGluayB0aGV5IGFyZSBpbnRlcmNoYW5nZWFibGUuIFRoZSBwcm9ibGVtIGlz IHRoZSBoeXBlci10aHJlYWRzIGFyZSBsb2dpY2FsbHkgaW50ZXJjaGFuZ2VhYmxlLCBidXQgbm90 IHBlcmZvcm1hbmNlIHdpc2UuIElmIHlvdSBoYXZlIHR3byBydW4tdG8tY29tcGxldGlvbiB0aHJl YWRzIG9uIGEgc2luZ2xlIHBoeXNpY2FsIGNvcmUgZWFjaCBvbiBhIGRpZmZlcmVudCBoeXBlci10 aHJlYWQgb2YgdGhhdCBjb3JlIFswLDFdLCB0aGVuIHRoZSBzZWNvbmQgbGNvcmUgb3IgdGhyZWFk ICgxKSBvbiB0aGF0IHBoeXNpY2FsIGNvcmUgd2lsbCBvbmx5IGdldCBhdCBtb3N0IGFib3V0IDMw LTIwJSBvZiB0aGUgQ1BVIGN5Y2xlcy4gTm9ybWFsbHkgaXQgaXMgbXVjaCBsZXNzLCB1bmxlc3Mg eW91IHR1bmUgdGhlIGNvZGUgdG8gbWFrZSBzdXJlIGVhY2ggdGhyZWFkIGlzIG5vdCB0cnlpbmcg dG8gc2hhcmUgdGhlIGludGVybmFsIGV4ZWN1dGlvbiB1bml0cywgYnV0IHNvbWUgaW50ZXJuYWwg ZXhlY3V0aW9uIHVuaXRzIGFyZSBhbHdheXMgc2hhcmVkLg0KPj4+Pj4NCj4+Pj4+VG8gZ2V0IHRo ZSBiZXN0IHBlcmZvcm1hbmNlIHdoZW4gaHlwZXItdGhyZWFkaW5nIGlzIGVuYWJsZSBpcyB0byBu b3QgcnVuIGJvdGggdGhyZWFkcyBvbiBhIHNpbmdsZSBwaHlzaWNhbCBjb3JlLCBidXQgb25seSBy dW4gb25lIGh5cGVyLXRocmVhZC0wLg0KPj4+Pj4NCj4+Pj4+SW4gdGhlIHRhYmxlIGJlbG93IHRo ZSB0YWJsZSBsaXN0cyB0aGUgcGh5c2ljYWwgY29yZSBpZCBhbmQgZWFjaCBvZiB0aGUgbGNvcmUg aWRzIHBlciBzb2NrZXQuIFVzZSB0aGUgZmlyc3QgbGNvcmUgcGVyIHNvY2tldCBmb3IgdGhlIGJl c3QgcGVyZm9ybWFuY2U6DQo+Pj4+PkNvcmUgMSBbMSwgMjFdICAgIFsxMSwgMzFdDQo+Pj4+PlVz ZSBsY29yZSAxIG9yIDExIGRlcGVuZGluZyBvbiB0aGUgc29ja2V0IHlvdSBhcmUgb24uDQo+Pj4+ Pg0KPj4+Pj5UaGUgaW5mbyBiZWxvdyBpcyBtb3N0IGxpa2VseSB0aGUgYmVzdCBwZXJmb3JtYW5j ZSBhbmQgdXRpbGl6YXRpb24gb2YgeW91ciBzeXN0ZW0uIElmIEkgZ290IHRoZSB2YWx1ZXMgcmln aHQg4pi6DQo+Pj4+Pg0KPj4+Pj4uL3dhcnAxNyAtYyAweDAwMDAwRkZGZTAgICAtbSAzMjc2OCAt dyAwMDAwOjgxOjAwLjMgLXcgMDAwMDowMTowMC4zIC0tDQo+Pj4+Pi0tcW1hcCAwLjB4MDAwMDAw MDNGRSAtLXFtYXAgMS4weDAwMDAwRkZFMDANCj4+Pj4+DQo+Pj4+PlBvcnQgMFtzb2NrZXQ6IDBd Og0KPj4+Pj4gICBDb3JlIDJbc29ja2V0OjBdIChUeDogMCwgUng6IDApDQo+Pj4+PiAgIENvcmUg M1tzb2NrZXQ6MF0gKFR4OiAxLCBSeDogMSkNCj4+Pj4+ICAgQ29yZSA0W3NvY2tldDowXSAoVHg6 IDIsIFJ4OiAyKQ0KPj4+Pj4gICBDb3JlIDVbc29ja2V0OjBdIChUeDogMywgUng6IDMpDQo+Pj4+ PiAgIENvcmUgNltzb2NrZXQ6MF0gKFR4OiA0LCBSeDogNCkNCj4+Pj4+ICAgQ29yZSA3W3NvY2tl dDowXSAoVHg6IDUsIFJ4OiA1KQ0KPj4+Pj4gICBDb3JlIDhbc29ja2V0OjBdIChUeDogNiwgUng6 IDYpDQo+Pj4+PiAgIENvcmUgOVtzb2NrZXQ6MF0gKFR4OiA3LCBSeDogNykNCj4+Pj4+DQo+Pj4+ PjggY29yZXMgb24gZmlyc3Qgc29ja2V0IGxlYXZpbmcgMC0xIGxjb3JlcyBmb3IgTGludXguDQo+ Pj4+DQo+Pj4+IDkgY29yZXMgYW5kIGxlYXZpbmcgdGhlIGZpcnN0IGNvcmUgb3IgdHdvIGxjb3Jl cyBmb3IgTGludXgNCj4+Pj4+DQo+Pj4+PlBvcnQgMVtzb2NrZXQ6IDFdOg0KPj4+Pj4gICBDb3Jl IDEwW3NvY2tldDoxXSAoVHg6IDAsIFJ4OiAwKQ0KPj4+Pj4gICBDb3JlIDExW3NvY2tldDoxXSAo VHg6IDEsIFJ4OiAxKQ0KPj4+Pj4gICBDb3JlIDEyW3NvY2tldDoxXSAoVHg6IDIsIFJ4OiAyKQ0K Pj4+Pj4gICBDb3JlIDEzW3NvY2tldDoxXSAoVHg6IDMsIFJ4OiAzKQ0KPj4+Pj4gICBDb3JlIDE0 W3NvY2tldDoxXSAoVHg6IDQsIFJ4OiA0KQ0KPj4+Pj4gICBDb3JlIDE1W3NvY2tldDoxXSAoVHg6 IDUsIFJ4OiA1KQ0KPj4+Pj4gICBDb3JlIDE2W3NvY2tldDoxXSAoVHg6IDYsIFJ4OiA2KQ0KPj4+ Pj4gICBDb3JlIDE3W3NvY2tldDoxXSAoVHg6IDcsIFJ4OiA3KQ0KPj4+Pj4gICBDb3JlIDE4W3Nv Y2tldDoxXSAoVHg6IDgsIFJ4OiA4KQ0KPj4+Pj4gICBDb3JlIDE5W3NvY2tldDoxXSAoVHg6IDks IFJ4OiA5KQ0KPj4+Pj4NCj4+Pj4+QWxsIDEwIGNvcmVzIG9uIHRoZSBzZWNvbmQgc29ja2V0Lg0K Pj4+DQo+Pj5UaGUgdmFsdWVzIHdlcmUgYWxtb3N0IHJpZ2h0IDopIEJ1dCB0aGF0J3MgYmVjYXVz ZSB3ZSByZXNlcnZlIHRoZQ0KPj4+Zmlyc3QgdHdvIGxjb3JlcyB0aGF0IGFyZSBwYXNzZWQgdG8g ZHBkayBmb3Igb3VyIG93biBtYW5hZ2VtZW50IHBhcnQuDQo+Pj5JIHdhcyBhd2FyZSB0aGF0IGxj b3JlcyBhcmUgbm90IHBoeXNpY2FsIGNvcmVzIHNvIHdlIGRvbid0IGV4cGVjdA0KPj4+cGVyZm9y bWFuY2UgdG8gc2NhbGUgbGluZWFybHkgd2l0aCB0aGUgbnVtYmVyIG9mIGxjb3Jlcy4gSG93ZXZl ciwgaWYNCj4+PnRoZXJlJ3MgYSBjaGFuY2UgdGhhdCBhbm90aGVyIGh5cGVydGhyZWFkIGNhbiBy dW4gd2hpbGUgdGhlIHBhaXJlZCBvbmUNCj4+PmlzIHN0YWxsaW5nIHdlJ2QgbGlrZSB0byB0YWtl IGFkdmFudGFnZSBvZiB0aG9zZSBjeWNsZXMgaWYgcG9zc2libGUuDQo+Pj4NCj4+PkxlYXZpbmcg dGhhdCBhc2lkZSBJIGp1c3QgcmFuIHR3byBtb3JlIHRlc3RzIHdoaWxlIHVzaW5nIG9ubHkgb25l IG9mDQo+Pj50aGUgdHdvIGh3dGhyZWFkcyBpbiBhIGNvcmUuDQo+Pj4NCj4+PmEuIDIgcG9ydHMg b24gZGlmZmVyZW50IHNvY2tldHMgd2l0aCA4IGNvcmVzL3BvcnQ6DQo+Pj4uL2J1aWxkL3dhcnAx NyAtYyAweEZGM0ZGICAgLW0gMzI3NjggLXcgMDAwMDo4MTowMC4zIC13IDAwMDA6MDE6MDAuMw0K Pj4+LS0gLS1xbWFwIDAuMHgzRkMgLS1xbWFwIDEuMHhGRjAwMA0KPj4+d2FycDE3PiBzaG93IHBv cnQgbWFwDQo+Pj5Qb3J0IDBbc29ja2V0OiAwXToNCj4+PiAgIENvcmUgMltzb2NrZXQ6MF0gKFR4 OiAwLCBSeDogMCkNCj4+PiAgIENvcmUgM1tzb2NrZXQ6MF0gKFR4OiAxLCBSeDogMSkNCj4+PiAg IENvcmUgNFtzb2NrZXQ6MF0gKFR4OiAyLCBSeDogMikNCj4+PiAgIENvcmUgNVtzb2NrZXQ6MF0g KFR4OiAzLCBSeDogMykNCj4+PiAgIENvcmUgNltzb2NrZXQ6MF0gKFR4OiA0LCBSeDogNCkNCj4+ PiAgIENvcmUgN1tzb2NrZXQ6MF0gKFR4OiA1LCBSeDogNSkNCj4+PiAgIENvcmUgOFtzb2NrZXQ6 MF0gKFR4OiA2LCBSeDogNikNCj4+PiAgIENvcmUgOVtzb2NrZXQ6MF0gKFR4OiA3LCBSeDogNykN Cj4+Pg0KPj4+UG9ydCAxW3NvY2tldDogMV06DQo+Pj4gICBDb3JlIDEyW3NvY2tldDoxXSAoVHg6 IDAsIFJ4OiAwKQ0KPj4+ICAgQ29yZSAxM1tzb2NrZXQ6MV0gKFR4OiAxLCBSeDogMSkNCj4+PiAg IENvcmUgMTRbc29ja2V0OjFdIChUeDogMiwgUng6IDIpDQo+Pj4gICBDb3JlIDE1W3NvY2tldDox XSAoVHg6IDMsIFJ4OiAzKQ0KPj4+ICAgQ29yZSAxNltzb2NrZXQ6MV0gKFR4OiA0LCBSeDogNCkN Cj4+PiAgIENvcmUgMTdbc29ja2V0OjFdIChUeDogNSwgUng6IDUpDQo+Pj4gICBDb3JlIDE4W3Nv Y2tldDoxXSAoVHg6IDYsIFJ4OiA2KQ0KPj4+ICAgQ29yZSAxOVtzb2NrZXQ6MV0gKFR4OiA3LCBS eDogNykNCj4+Pg0KPj4+VGhpcyBnaXZlcyBhIHNlc3Npb24gc2V0dXAgcmF0ZSBvZiBvbmx5IDJN IHNlc3Npb25zL3MuDQo+Pj4NCj4+PmIuIDIgcG9ydHMgb24gc29ja2V0IDAgd2l0aCA0IGNvcmVz L3BvcnQ6DQo+Pj4uL2J1aWxkL3dhcnAxNyAtYyAweDNGRiAgIC1tIDMyNzY4IC13IDAwMDA6MDI6 MDAuMCAtdyAwMDAwOjAzOjAwLjAgLS0NCj4+Pi0tcW1hcCAwLjB4M0MwIC0tcW1hcCAxLjB4MDND DQo+Pg0KPj4gT25lIG1vcmUgdGhpbmcgdG8gdHJ5IGNoYW5nZSB0aGUg4oCTbSAzMjc2OCB0byDi gJNzb2NrZXQtbWVtIDE2Mzg0LDE2Mzg0IHRvIG1ha2Ugc3VyZSB0aGUgbWVtb3J5IGlzIHNwbGl0 IGJldHdlZW4gdGhlIHNvY2tldHMuIFlvdSBtYXkgbmVlZCB0byByZW1vdmUgdGhlIC9kZXYvaHVl cGFnZXMvKiBmaWxlcyBvciB3aGVyZXZlciB5b3UgcHV0IHRoZW0uDQo+Pg0KPj4gV2hhdCBpcyB0 aGUgZHBkayDigJNuIG9wdGlvbiBzZXQgdG8gb24geW91ciBzeXN0ZW0/IE1pbmUgaXMgc2V0IHRv IOKAmOKAk24gNOKAmQ0KPj4NCj4NCj5JIHRyaWVkIHdpdGgg4oCTc29ja2V0LW1lbSAxNjM4NCwx NjM4NCBidXQgaXQgZG9lc24ndCBtYWtlIGFueQ0KPmRpZmZlcmVuY2UuIFdlIGNhbGwgYW55d2F5 IHJ0ZV9tYWxsb2Nfc29ja2V0IGZvciBldmVyeXRoaW5nIHRoYXQgbWlnaHQNCj5iZSBhY2Nlc3Nl ZCBpbiBmYXN0IHBhdGggYW5kIHRoZSBtZW1wb29scyBhcmUgcGVyLWNvcmUgYW5kIGNyZWF0ZWQN Cj53aXRoIHRoZSBjb3JyZWN0IHNvY2tldC1pZC4gRXZlbiB3aGVuIHN0YXJ0aW5nIHdpdGggJy1t IDMyNzY4JyBJIHNlZQ0KPnRoYXQgMTYgaHVnZXBhZ2VzIGdldCBhbGxvY2F0ZWQgb24gZWFjaCBv ZiB0aGUgc29ja2V0cy4NCj4NCj5PbiB0aGUgdGVzdCBzZXJ2ZXIgSSBoYXZlIDQgbWVtb3J5IGNo YW5uZWxzIHNvICctbiA0Jy4NCj4NCj4+PndhcnAxNz4gc2hvdyBwb3J0IG1hcA0KPj4+UG9ydCAw W3NvY2tldDogMF06DQo+Pj4gICBDb3JlIDZbc29ja2V0OjBdIChUeDogMCwgUng6IDApDQo+Pj4g ICBDb3JlIDdbc29ja2V0OjBdIChUeDogMSwgUng6IDEpDQo+Pj4gICBDb3JlIDhbc29ja2V0OjBd IChUeDogMiwgUng6IDIpDQo+Pj4gICBDb3JlIDlbc29ja2V0OjBdIChUeDogMywgUng6IDMpDQo+ Pj4NCj4+PlBvcnQgMVtzb2NrZXQ6IDBdOg0KPj4+ICAgQ29yZSAyW3NvY2tldDowXSAoVHg6IDAs IFJ4OiAwKQ0KPj4+ICAgQ29yZSAzW3NvY2tldDowXSAoVHg6IDEsIFJ4OiAxKQ0KPj4+ICAgQ29y ZSA0W3NvY2tldDowXSAoVHg6IDIsIFJ4OiAyKQ0KPj4+ICAgQ29yZSA1W3NvY2tldDowXSAoVHg6 IDMsIFJ4OiAzKQ0KDQpJIGRvIG5vdCBrbm93IG5vdy4gSXQgc2VlbXMgbGlrZSBzb21ldGhpbmcg ZWxzZSBpcyBnb2luZyBvbiBoZXJlIHRoYXQgd2UgaGF2ZSBub3QgaWRlbnRpZmllZC4NCg0KPj4+ DQo+Pj5TdXJwcmlzaW5nbHkgdGhpcyBnaXZlcyBhIHNlc3Npb24gc2V0dXAgcmF0ZSBvZiAzTSBz ZXNzL3MhIQ0KPj4+DQo+Pj5UaGUgcGFja2V0IHByb2Nlc3NpbmcgY29yZXMgYXJlIHRvdGFsbHkg aW5kZXBlbmRlbnQgYW5kIG9ubHkgYWNjZXNzDQo+Pj5sb2NhbCBzb2NrZXQgbWVtb3J5L3BvcnRz Lg0KPj4+VGhlcmUgaXMgbm8gbG9ja2luZyBvciBhdG9taWMgdmFyaWFibGUgYWNjZXNzIGluIGZh c3QgcGF0aCBpbiBvdXIgY29kZS4NCj4+PlRoZSBtYnVmIHBvb2xzIGFyZSBub3Qgc2hhcmVkIGJl dHdlZW4gY29yZXMgaGFuZGxpbmcgdGhlIHNhbWUgcG9ydCBzbw0KPj4+dGhlcmUgc2hvdWxkIGJl IG5vIGNvbnRlbnRpb24gd2hlbiBhbGxvY2F0aW5nL2ZyZWVpbmcgbWJ1ZnMuDQo+Pj5JbiB0aGlz IHNwZWNpZmljIHRlc3Qgc2NlbmFyaW8gYWxsIHRoZSBjb3JlcyBoYW5kbGluZyBwb3J0IDAgYXJl DQo+Pj5lc3NlbnRpYWxseSBleGVjdXRpbmcgdGhlIHNhbWUgY29kZSAoVENQIGNsaWVudHMpIGFu ZCB0aGUgY29yZXMgb24NCj4+PnBvcnQgMSBhcyB3ZWxsIChUQ1Agc2VydmVycykuDQo+Pj4NCj4+ PkRvIHlvdSBoYXZlIGFueSB0aXBzIGFib3V0IHdoYXQgb3RoZXIgdGhpbmdzIHRvIGNoZWNrIGZv cj8NCj4+Pg0KPj4+VGhhbmtzLA0KPj4+RHVtaXRydQ0KPj4+DQo+Pj4NCj4+Pg0KPj4+Pj4NCj4+ Pj4+KytLZWl0aA0KPj4+Pj4NCj4+Pj4+Pg0KPj4+Pj4+SnVzdCBmb3IgcmVmZXJlbmNlLCB0aGUg Y3B1X2xheW91dCBzY3JpcHQgc2hvd3M6DQo+Pj4+Pj4kICRSVEVfU0RLL3Rvb2xzL2NwdV9sYXlv dXQucHkNCj4+Pj4+Pj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KPj4+Pj4+Q29yZSBhbmQgU29ja2V0IEluZm9ybWF0aW9uIChhcyBy ZXBvcnRlZCBieSAnL3Byb2MvY3B1aW5mbycpDQo+Pj4+Pj49PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4+Pj4+Pg0KPj4+Pj4+Y29y ZXMgPSAgWzAsIDEsIDIsIDMsIDQsIDgsIDksIDEwLCAxMSwgMTJdDQo+Pj4+Pj5zb2NrZXRzID0g IFswLCAxXQ0KPj4+Pj4+DQo+Pj4+Pj4gICAgICAgIFNvY2tldCAwICAgICAgICBTb2NrZXQgMQ0K Pj4+Pj4+ICAgICAgICAtLS0tLS0tLSAgICAgICAgLS0tLS0tLS0NCj4+Pj4+PkNvcmUgMCAgWzAs IDIwXSAgICAgICAgIFsxMCwgMzBdDQo+Pj4+Pj5Db3JlIDEgIFsxLCAyMV0gICAgICAgICBbMTEs IDMxXQ0KPj4+Pj4+Q29yZSAyICBbMiwgMjJdICAgICAgICAgWzEyLCAzMl0NCj4+Pj4+PkNvcmUg MyAgWzMsIDIzXSAgICAgICAgIFsxMywgMzNdDQo+Pj4+Pj5Db3JlIDQgIFs0LCAyNF0gICAgICAg ICBbMTQsIDM0XQ0KPj4+Pj4+Q29yZSA4ICBbNSwgMjVdICAgICAgICAgWzE1LCAzNV0NCj4+Pj4+ PkNvcmUgOSAgWzYsIDI2XSAgICAgICAgIFsxNiwgMzZdDQo+Pj4+Pj5Db3JlIDEwIFs3LCAyN10g ICAgICAgICBbMTcsIDM3XQ0KPj4+Pj4+Q29yZSAxMSBbOCwgMjhdICAgICAgICAgWzE4LCAzOF0N Cj4+Pj4+PkNvcmUgMTIgWzksIDI5XSAgICAgICAgIFsxOSwgMzldDQo+Pj4+Pj4NCj4+Pj4+Pkkg a25vdyBpdCBtaWdodCBiZSBjb21wbGljYXRlZCB0byBnaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCdz IGhhcHBlbmluZw0KPj4+Pj4+aW4gb3VyIHNldHVwIHdpdGggb3VyIG93biBjb2RlIHNvIHBsZWFz ZSBsZXQgbWUga25vdyBpZiB5b3UgbmVlZA0KPj4+Pj4+YWRkaXRpb25hbCBpbmZvcm1hdGlvbi4N Cj4+Pj4+Pg0KPj4+Pj4+SSBhcHByZWNpYXRlIHRoZSBoZWxwIQ0KPj4+Pj4+DQo+Pj4+Pj5UaGFu a3MsDQo+Pj4+Pj5EdW1pdHJ1DQo+Pj4+Pj4NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+DQo+ Pj4+DQo+Pj4+DQo+Pj4+DQo+Pj4NCj4+DQo+Pg0KPj4NCj4NCg0KDQoNCg==