From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E28BFA04B7; Tue, 13 Oct 2020 16:59:02 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C3A721DBC3; Tue, 13 Oct 2020 16:59:01 +0200 (CEST) Received: from mailgw01.pantheon.sk (mailgw01.pantheon.sk [46.229.239.26]) by dpdk.org (Postfix) with ESMTP id 2DCEE1DB0C for ; Tue, 13 Oct 2020 16:58:59 +0200 (CEST) Received: from mailgw01.pantheon.sk (localhost.localdomain [127.0.0.1]) by mailgw01.pantheon.sk (Proxmox) with ESMTP id D9EF1202494; Tue, 13 Oct 2020 16:58:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; h=cc:cc:content-transfer-encoding:content-type:content-type :date:from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=dkim; bh=dFz1qeVFmU4aXVm7zwnR xc+vseUhnX/kLHikysK/s6c=; b=ofR/73pXOuNT9OpBotCiZ8dbtyfyE+vVhCFz /PjkKXnftwQecpECDrxnB8CbkT9R/OnPtx3KGeTVsTip82TnxHAHaqBOZ9HcKKA+ zXzs5x063c6j4W7T6Fgvq32rvOowY2IIOEOhnDt1caZNULuCGlXNiuDmqoeCRM80 vSvmLKGCp1V6/BHxktxKbYNOwEB0b3CRYxK8I13MdwtFMK8YPSixE86jJsw6cnF9 33OVGePXd3tFN3YeBh3bvqR2zQFrmCW7eUHI2iacVTC5A7iLJHTf3m0Mkk3JJcW4 yQdjYyUYQjePUK4IDRz79SckCkdjIysGJmVjJcrGcizndzg7Mw== From: =?utf-8?B?SnVyYWogTGlua2XFoQ==?= To: Thomas Monjalon , Dharmik Thakkar CC: "dev@dpdk.org" , Stephen Hemminger , Jerin Jacob , nd Thread-Topic: [dpdk-dev] [PATCH 2/2] build: find max lcore programmatically Thread-Index: AQHWeyStgtQbhE4/zE2URFE2PF3gn6lJsEIAgAACOYCADMuM0IAA8/+AgABy0QCAFNFkQIABMGUAgCfcu4CAACiikA== Date: Tue, 13 Oct 2020 14:58:58 +0000 Message-ID: References: <20200825211317.8358-1-dharmik.thakkar@arm.com> <12050806.9cV25Y2rms@thomas> In-Reply-To: <12050806.9cV25Y2rms@thomas> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.101.4.10] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 2/2] build: find max lcore programmatically X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SSBiZWxpZXZlIHdlJ3JlIGdvaW5nIHRvIGRyb3AgdGhpcyBwYXRjaCBzZXJpZXMgaW4gZmF2b3Ig b2YgaHR0cDovL3BhdGNoZXMuZHBkay5vcmcvcHJvamVjdC9kcGRrL2xpc3QvP3Nlcmllcz0xMjky My4gDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVGhvbWFzIE1vbmph bG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDEzLCAy MDIwIDQ6MzIgUE0NCj4gVG86IERoYXJtaWsgVGhha2thciA8RGhhcm1pay5UaGFra2FyQGFybS5j b20+DQo+IENjOiBKdXJhaiBMaW5rZcWhIDxqdXJhai5saW5rZXNAcGFudGhlb24udGVjaD47IGRl dkBkcGRrLm9yZzsgU3RlcGhlbg0KPiBIZW1taW5nZXIgPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIu b3JnPjsgSmVyaW4gSmFjb2INCj4gPGplcmluamFjb2JrQGdtYWlsLmNvbT47IG5kIDxuZEBhcm0u Y29tPg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMi8yXSBidWlsZDogZmluZCBt YXggbGNvcmUgcHJvZ3JhbW1hdGljYWxseQ0KPiANCj4gUGxlYXNlLCB3aGF0IGlzIHRoZSBjb25j bHVzaW9uIGhlcmU/DQo+IA0KPiANCj4gMTgvMDkvMjAyMCAwNzo0NywgRGhhcm1payBUaGFra2Fy Og0KPiA+DQo+ID4gPiBPbiBTZXAgMTcsIDIwMjAsIGF0IDQ6NTYgQU0sIEp1cmFqIExpbmtlxaEg PGp1cmFqLmxpbmtlc0BwYW50aGVvbi50ZWNoPg0KPiB3cm90ZToNCj4gPiA+DQo+ID4gPg0KPiA+ ID4NCj4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4+IEZyb206IERoYXJt aWsgVGhha2thciA8RGhhcm1pay5UaGFra2FyQGFybS5jb20+DQo+ID4gPj4gU2VudDogRnJpZGF5 LCBTZXB0ZW1iZXIgNCwgMjAyMCA3OjQ0IEFNDQo+ID4gPj4gVG86IFN0ZXBoZW4gSGVtbWluZ2Vy IDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz4NCj4gPiA+PiBDYzogSnVyYWogTGlua2XFoSA8 anVyYWoubGlua2VzQHBhbnRoZW9uLnRlY2g+OyBKZXJpbiBKYWNvYg0KPiA+ID4+IDxqZXJpbmph Y29ia0BnbWFpbC5jb20+OyB0aG9tYXNAbW9uamFsb24ubmV0OyBkcGRrLWRldg0KPiA+ID4+IDxk ZXZAZHBkay5vcmc+OyBuZCA8bmRAYXJtLmNvbT4NCj4gPiA+PiBTdWJqZWN0OiBSZTogW2RwZGst ZGV2XSBbUEFUQ0ggMi8yXSBidWlsZDogZmluZCBtYXggbGNvcmUNCj4gPiA+PiBwcm9ncmFtbWF0 aWNhbGx5DQo+ID4gPj4NCj4gPiA+Pg0KPiA+ID4+DQo+ID4gPj4+IE9uIFNlcCAzLCAyMDIwLCBh dCA1OjUyIFBNLCBTdGVwaGVuIEhlbW1pbmdlcg0KPiA+ID4+IDxzdGVwaGVuQG5ldHdvcmtwbHVt YmVyLm9yZz4gd3JvdGU6DQo+ID4gPj4+DQo+ID4gPj4+IE9uIFRodSwgMyBTZXAgMjAyMCAwNjoy MDoxNyArMDAwMA0KPiA+ID4+PiBKdXJhaiBMaW5rZcWhIDxqdXJhai5saW5rZXNAcGFudGhlb24u dGVjaD4gd3JvdGU6DQo+ID4gPj4+DQo+ID4gPj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+Pj4+PiBGcm9tOiBkZXYgPGRldi1ib3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYg T2YgRGhhcm1payBUaGFra2FyDQo+ID4gPj4+Pj4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMjYs IDIwMjAgNjo1NiBBTQ0KPiA+ID4+Pj4+IFRvOiBKZXJpbiBKYWNvYiA8amVyaW5qYWNvYmtAZ21h aWwuY29tPg0KPiA+ID4+Pj4+IENjOiB0aG9tYXNAbW9uamFsb24ubmV0OyBkcGRrLWRldiA8ZGV2 QGRwZGsub3JnPjsgbmQNCj4gPiA+Pj4+PiA8bmRAYXJtLmNvbT4NCj4gPiA+Pj4+PiBTdWJqZWN0 OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMi8yXSBidWlsZDogZmluZCBtYXggbGNvcmUNCj4gPiA+ Pj4+PiBwcm9ncmFtbWF0aWNhbGx5DQo+ID4gPj4+Pj4NCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+DQo+ ID4gPj4+Pj4+IE9uIEF1ZyAyNSwgMjAyMCwgYXQgMTE6NDcgUE0sIEplcmluIEphY29iDQo+ID4g Pj4+Pj4+IDxqZXJpbmphY29ia0BnbWFpbC5jb20+DQo+ID4gPj4gd3JvdGU6DQo+ID4gPj4+Pj4+ DQo+ID4gPj4+Pj4+IE9uIFdlZCwgQXVnIDI2LCAyMDIwIGF0IDI6NDQgQU0gRGhhcm1payBUaGFr a2FyDQo+ID4gPj4+Pj4gPGRoYXJtaWsudGhha2thckBhcm0uY29tPiB3cm90ZToNCj4gPiA+Pj4+ Pj4+DQo+ID4gPj4+Pj4+PiBGb3IgQXJtLCBSVEVfTUFYX0xDT1JFIGlzIGhhcmQtY29kZWQgaW50 byB0aGUgY29uZmlnLiBJdCBsZWFkcw0KPiA+ID4+Pj4+Pj4gdG8gaW5jb3JyZWN0IFJURV9NQVhf TENPUkUgd2hlbiBtYWNoaW5lcyBoYXZlIHNhbWUNCj4gSW1wbGVtZW5lcg0KPiA+ID4+Pj4+Pj4g YW5kIHBhcnQgbnVtYmVyIGJ1dCBkaWZmZXJlbnQgbnVtYmVyIG9mIENQVXMuDQo+ID4gPj4+Pj4+ PiBGb3IgeDg2LCBSVEVfTUFYX0xDT1JFIGlzIGFsd2F5cyBzZXQgdG8gMTI4ICh1c2luZyB0aGUg dmFsdWUNCj4gPiA+Pj4+Pj4+IHNldCBpbg0KPiA+ID4+Pj4+Pj4gbWVzb25fb3B0aW9ucy50eHQp DQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4gVXNlIHB5dGhvbiBzY3JpcHQgdG8gZmluZCBtYXgg bGNvcmUgd2hlbiB1c2luZyBuYXRpdmUgYnVpbGQgdG8NCj4gPiA+Pj4+Pj4+IGNvcnJlY3RseSBz ZXQgUlRFX01BWF9MQ09SRS4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gV2UgbWF5IG5lZWQgdG8g YnVpbGQgb24gdGhlIG5hdGl2ZSBhcm02NCBtYWNoaW5lIGFuZCB1c2UgaXQgb24NCj4gPiA+Pj4+ Pj4gYW5vdGhlcg0KPiA+ID4+Pj4+PiBhcm02NCBtYWNoaW5lKEp1c3QgbGlrZSB4ODYpLg0KPiA+ ID4+Pj4+PiBTbyBJIHRoaW5rLCBhdCBsZWFzdCBmb3IgZGVmYXVsdCBjb25maWcod2hpY2ggd2ls bCBiZSB1c2VkIGJ5DQo+ID4gPj4+Pj4+IGRpc3RyaWJ1dGlvbikgdG8gc3VwcG9ydCBtYXgNCj4g PiA+Pj4+Pj4gbGNvcmVzIGFzIGZpeGVkLiBJIGFtIG5vdCBzdXJlIHRoaXMgcGF0Y2ggY2hhbmdl cyB0aG9zZSBhc3BlY3RzDQo+ID4gPj4+Pj4+IG9yIG5vdD8gUGxlYXNlIGNoZWNrLg0KPiA+ID4+ Pj4+DQo+ID4gPj4+Pj4gVGhpcyBwYXRjaCBkb2VzICpub3QqIGFmZmVjdCDigJhkZWZhdWx04oCZ IGJ1aWxkIHR5cGUgYW5kIGNyb3NzLWNvbXBpbGF0aW9uLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4+ DQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogRGhhcm1payBUaGFra2Fy IDxkaGFybWlrLnRoYWtrYXJAYXJtLmNvbT4NCj4gPiA+Pj4+Pj4+IFJldmlld2VkLWJ5OiBSdWlm ZW5nIFdhbmcgPHJ1aWZlbmcud2FuZ0Bhcm0uY29tPg0KPiA+ID4+Pj4+Pj4gLS0tDQo+ID4gPj4+ Pj4+PiBjb25maWcvZ2V0X21heF9sY29yZXMucHkgfCAxMyArKysrKysrKysrKysrDQo+ID4gPj4+ Pj4+PiBjb25maWcvbWVzb24uYnVpbGQgICAgICAgfCAxMyArKysrKysrKysrKystDQo+ID4gPj4+ Pj4+PiAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkgY3Jl YXRlIG1vZGUNCj4gPiA+Pj4+Pj4+IDEwMDc1NSBjb25maWcvZ2V0X21heF9sY29yZXMucHkNCj4g PiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvY29uZmlnL2dldF9tYXhfbGNvcmVz LnB5DQo+ID4gPj4+Pj4+PiBiL2NvbmZpZy9nZXRfbWF4X2xjb3Jlcy5weSBuZXcgZmlsZSBtb2Rl IDEwMDc1NSBpbmRleA0KPiA+ID4+Pj4+Pj4gMDAwMDAwMDAwMDAwLi5lYmYxYzdlZmRhZGQNCj4g PiA+Pj4+Pj4+IC0tLSAvZGV2L251bGwNCj4gPiA+Pj4+Pj4+ICsrKyBiL2NvbmZpZy9nZXRfbWF4 X2xjb3Jlcy5weQ0KPiA+ID4+Pj4+Pj4gQEAgLTAsMCArMSwxMyBAQA0KPiA+ID4+Pj4+Pj4gKyMh L3Vzci9iaW4vcHl0aG9uMw0KPiA+ID4+Pj4+Pj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0zLUNsYXVzZSAjIENvcHlyaWdodChjKSAyMDIwDQo+ID4gPj4+Pj4+PiArQXJtIExpbWl0 ZWQNCj4gPiA+Pj4+Pj4+ICsNCj4gPiA+Pj4+Pj4+ICtpbXBvcnQgb3MNCj4gPiA+Pj4+Pj4+ICsN Cj4gPiA+Pj4+Pj4+ICttYXhfbGNvcmVzID0gW10NCj4gPiA+Pj4+Pj4+ICsNCj4gPiA+Pj4+Pj4+ ICtuQ1BVID0gb3MuY3B1X2NvdW50KCkNCj4gPiA+Pj4+Pj4+ICsNCj4gPiA+Pj4+Pj4+ICttYXhf bGNvcmVzLmFwcGVuZChzdHIobkNQVSAmIDB4RkZGKSkgICAgICAgICAgICAgIyBOdW1iZXIgb2Yg Q1BVcw0KPiA+ID4+Pj4+Pj4gKw0KPiA+ID4+Pj4+Pj4gK3ByaW50KCcgJy5qb2luKG1heF9sY29y ZXMpKQ0KPiA+ID4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2NvbmZpZy9tZXNvbi5idWlsZCBiL2NvbmZp Zy9tZXNvbi5idWlsZCBpbmRleA0KPiA+ID4+Pj4+Pj4gNjk5NmU1Y2JlYWE1Li44MGMwNWJjMTVk MmYgMTAwNjQ0DQo+ID4gPj4+Pj4+PiAtLS0gYS9jb25maWcvbWVzb24uYnVpbGQNCj4gPiA+Pj4+ Pj4+ICsrKyBiL2NvbmZpZy9tZXNvbi5idWlsZA0KPiA+ID4+Pj4+Pj4gQEAgLTIzNywxMSArMjM3 LDIyIEBAIGVsc2UgIyBmb3IgMzItYml0IHdlIG5lZWQgc21hbGxlcg0KPiA+ID4+Pj4+Pj4gcmVz ZXJ2ZWQgbWVtb3J5DQo+ID4gPj4+Pj4gYXJlYXMNCj4gPiA+Pj4+Pj4+ICAgICAgZHBka19jb25m LnNldCgnUlRFX01BWF9NRU1fTUInLCAyMDQ4KSBlbmRpZg0KPiA+ID4+Pj4+Pj4NCj4gPiA+Pj4+ Pj4+IC0NCj4gPiA+Pj4+Pj4+IGNvbXBpbGVfdGltZV9jcHVmbGFncyA9IFtdDQo+ID4gPj4+Pj4+ PiBzdWJkaXIoYXJjaF9zdWJkaXIpDQo+ID4gPj4+Pj4+PiBkcGRrX2NvbmYuc2V0KCdSVEVfQ09N UElMRV9USU1FX0NQVUZMQUdTJywNCj4gPiA+Pj4+Pj4+ICcsJy5qb2luKGNvbXBpbGVfdGltZV9j cHVmbGFncykpDQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4gKyMgc2V0IG1heCBsY29yZXMNCj4g PiA+Pj4+Pj4+ICtpZiBtYWNoaW5lICE9ICdkZWZhdWx0JyBhbmQgbm90IG1lc29uLmlzX2Nyb3Nz X2J1aWxkKCkNCj4gPiA+Pj4+Pj4+ICsgICAgICAgIyBUaGUgc2NyaXB0IHJldHVybnMgbWF4IGxj b3Jlcw0KPiA+ID4+Pj4+Pj4gKyAgICAgICBwYXJhbXMgPSBmaWxlcygnZ2V0X21heF9sY29yZXMu cHknKQ0KPiA+ID4+Pj4+Pj4gKyAgICAgICBjbWRfb3V0ID0gcnVuX2NvbW1hbmQocGFyYW1zKQ0K PiA+ID4+Pj4NCj4gPiA+Pj4+IEhhdmUgeW91IGNvbnNpZGVyZWQgcnVubmluZyBqdXN0IGEgc2hl bGwgY29tbWFuZCwgc3VjaCBhcyAibnByb2MgLS1hbGwiPw0KPiA+ID4+Pg0KPiA+ID4+PiBJcyB0 aGlzIHJlYWxseSBhIGdvb2QgaWRlYT8NCj4gPiA+Pj4gRm9yIHJlYWwgZGlzdHJpYnV0aW9ucyBh bmQgTkZWIHByb2R1Y3RzLCB0aGUgYnVpbGQgYW5kIHJ1bnRpbWUNCj4gPiA+Pj4gZW52aXJvbm1l bnQgd2lsbCB1c3VhbGx5IGJlIGRpZmZlcmVudCBldmVuIGlmIG9uIHNhbWUgQ1BVIGFyY2hpdGVj dHVyZS4NCj4gPiA+Pj4NCj4gPiA+Pj4gSW4gbWFueSBjYXNlcyB0aGVyZSBtYXliZSBhIGh1Z2Ug YnVpbGQgbWFjaGluZSAoMTI4IENQVSkgb3IgaW4gYQ0KPiA+ID4+PiBjb250YWluZXIgKHJlcG9y dGVkIGFzIHNpbmdsZSBjcHUpIGV2ZW4gaWYgbm90IGRvaW5nIGNyb3NzIGJ1aWxkLg0KPiA+ID4+ DQo+ID4gPj4gVGhhdOKAmXMgYSBncmVhdCBwb2ludCwgU3RlcGhlbi4gSU1PLCB0aGlzIHBhdGNo IGlzIHVzZWZ1bCB3aGVuDQo+ID4gPj4gYnVpbGRpbmcgYW5kIHJ1bm5pbmcgbmF0aXZlbHkuDQo+ ID4gPj4gRm9yIGFsbCBvdGhlciBwdXJwb3NlcyAobGlrZSB0aGUgb25lcyB5b3UgbWVudGlvbmVk KSwgZG8geW91IHRoaW5rDQo+ID4gPj4gaXQgaXMgYSBnb29kIGlkZWEgdG8gc2V0IFJURV9NQVhf TENPUkUgdXNpbmcgLURtYXhfbGNvcmVzPw0KPiA+ID4NCj4gPiA+IFdlIHNob3VsZCBvbmx5IHVz ZSB0aGlzIG5hdGl2ZSBidWlsZHMsIGFzIHRoYXQgd291bGQgYmUgY29uc2lzdGVudCB3aXRoIHRo ZQ0KPiBjdXJyZW50IG1lc29uIGJ1aWxkIHBoaWxvc29waHkgb2YgIm1lc29uIGZpZ3VyaW5nIGFz IG11Y2ggYXMgcG9zc2libGUgb24gaXRzDQo+IG93biIuIEFueSBidWlsZCBvdGhlciB0aGFuIG5h dGl2ZSBpbXBsaWVzIHRoZSB1c2VyIHdhbnRzIHRvIGRldmlhdGUgZnJvbSB0aGUNCj4gYnVpbGQg bWFjaGluZS4NCj4gPiA+DQo+ID4NCj4gPiBUaGUgTUlEUiB2YWx1ZS1iYXNlZCBwcm9iaW5nIGRv ZXNu4oCZdCBxdWl0ZSB3b3JrIHdlbGwgZm9yIEFybSBJUCAoY3VycmVudGx5DQo+IGJlaW5nIGRp c2N1c3NlZCBvbiB0aGlzIHBhdGNoOiBodHRwczovL3BhdGNoZXMuZHBkay5vcmcvcGF0Y2gvNzY5 ODEvKS4NCj4gPg0KPiA+ID4gT25lIHdheSB0byBkbyB0aGlzIGF1dG9tYXRpYyBjb3JlIGNvdW50 IGlzIHdoZW4gbWF4X2xjb3Jlcz0wICgwIHdvdWxkDQo+IGhhdmUgdGhlIHNwZWNpYWwgbWVhbmlu ZyBvZiAiZmlndXJlIGNvcmUgY291bnQgYXV0b21hdGljYWxseSIpLiBXZSBjYW4gc2V0IHRoYXQN Cj4gYXMgZGVmYXVsdCBpbiBtZXNvbl9vcHRpb24udHh0IGFuZCB0aGVuIHVzZXJzIHdpbGwgaGF2 ZSB0aGUgYWJpbGl0eSB0byBzZXQgaXQgdG8NCj4gd2hhdGV2ZXIgdGhleSB3YW50LCBldmVuIGZv ciBuYXRpdmUgYnVpbGRzLiBXaGF0IGRvIHlvdSB0aGluaz8NCj4gPiA+DQo+ID4NCj4gPiBZZXMs IGFncmVlZC4NCj4gPg0KPiA+ID4gQ3VycmVudGx5IHRoZSAtRG1heF9sY29yZXMgb3B0aW9uIGRv ZXNuJ3Qgd29yayBmb3IgYXJtIGJ1aWxkcyAodGhlIHZhbHVlIG9mDQo+IFJURV9NQVhfTENPUkUg aXMgb3ZlcndyaXR0ZW4gaW4gY29uZmlnL2FybS9tZXNvbi5idWlsZCkuIEkgYmVsaWV2ZSB0aGUg cGF0Y2gNCj4gdHJpZXMgdG8gYWRkcmVzcyB0aGlzLCBidXQgc3RpbGwsIHdlIG5lZWQgdG8gYmUg bWluZGZ1bCBvZiB0aGF0Lg0KPiA+ID4NCj4gPiA+IEp1cmFqDQo+IA0KPiANCg0K