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 1748AA04B5; Fri, 30 Oct 2020 12:04:51 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E96E7C820; Fri, 30 Oct 2020 12:04:49 +0100 (CET) Received: from mailgw02.pantheon.sk (mailgw01.pantheon.sk [46.229.239.26]) by dpdk.org (Postfix) with ESMTP id 55A18C824 for ; Fri, 30 Oct 2020 12:04:48 +0100 (CET) Received: from mailgw02.pantheon.sk (localhost.localdomain [127.0.0.1]) by mailgw02.pantheon.sk (Proxmox) with ESMTP id 1EC311836AF; Fri, 30 Oct 2020 12:04:47 +0100 (CET) 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=3SM8zpLL8zTEgd7t5m62 HYaoJY+K5/zwjOU5VdgWXvA=; b=SfLVjb5+zY4ZkVEPDkhClWeY0i8Rw+vx61eq U+GqQG0iQGN9ymR0sIbJy4BE/qZPw/fzAFPh4geVsUPAiqI/jHGiaWlL5vsxuSl4 ar1sZ+gsPjV2oq6zYlQ3my0SjpSjX5EYbiSM707pw7dMj7jHuqHjW0XfabTewZej oK6Dr7P/dgszFxAAC4RTx9lNTuuMmXMCPFAw0fQUQXBlfVv5TlZaPWK3qVAgCTJG 6WbyeBVvuicXwl5kgUFjZrvG8SsL6iShLF8lY3Hj7vVQoX7+ysYNe8JDLMBLN2j/ X2jxpFgGIbwFu4lwEOdFpn6bEJypaGx8jPnm/cc9O2soIwZQaQ== From: =?utf-8?B?SnVyYWogTGlua2XFoQ==?= To: Bruce Richardson CC: "Ruifeng.Wang@arm.com" , "Honnappa.Nagarahalli@arm.com" , "Phil.Yang@arm.com" , "vcchunga@amazon.com" , "Dharmik.Thakkar@arm.com" , "jerinjacobk@gmail.com" , "hemant.agrawal@nxp.com" , "dev@dpdk.org" Thread-Topic: [PATCH v5 08/11] build: optional NUMA and cpu counts detection Thread-Index: AQHWrTM79AlgBBbYmUaVDU9J0Z5+oamtDA8AgALuk7A= Date: Fri, 30 Oct 2020 11:04:46 +0000 Message-ID: <33e5a8cbc5264f2bb97345203a25a323@pantheon.tech> References: <1603464488-25493-1-git-send-email-juraj.linkes@pantheon.tech> <1603893845-5736-1-git-send-email-juraj.linkes@pantheon.tech> <1603893845-5736-9-git-send-email-juraj.linkes@pantheon.tech> <20201028150420.GB1634@bricha3-MOBL.ger.corp.intel.com> In-Reply-To: <20201028150420.GB1634@bricha3-MOBL.ger.corp.intel.com> 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 v5 08/11] build: optional NUMA and cpu counts detection 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQnJ1Y2UgUmljaGFyZHNv biA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2Jl ciAyOCwgMjAyMCA0OjA0IFBNDQo+IFRvOiBKdXJhaiBMaW5rZcWhIDxqdXJhai5saW5rZXNAcGFu dGhlb24udGVjaD4NCj4gQ2M6IFJ1aWZlbmcuV2FuZ0Bhcm0uY29tOyBIb25uYXBwYS5OYWdhcmFo YWxsaUBhcm0uY29tOw0KPiBQaGlsLllhbmdAYXJtLmNvbTsgdmNjaHVuZ2FAYW1hem9uLmNvbTsg RGhhcm1pay5UaGFra2FyQGFybS5jb207DQo+IGplcmluamFjb2JrQGdtYWlsLmNvbTsgaGVtYW50 LmFncmF3YWxAbnhwLmNvbTsgZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjUg MDgvMTFdIGJ1aWxkOiBvcHRpb25hbCBOVU1BIGFuZCBjcHUgY291bnRzIGRldGVjdGlvbg0KPiAN Cj4gT24gV2VkLCBPY3QgMjgsIDIwMjAgYXQgMDM6MDQ6MDJQTSArMDEwMCwgSnVyYWogTGlua2XF oSB3cm90ZToNCj4gPiBBZGQgYW4gb3B0aW9uIHRvIGF1dG9tYXRpY2FsbHkgZGlzY292ZXIgdGhl IGhvc3QncyBudW1hIGFuZCBjcHUgY291bnRzDQo+ID4gYW5kIHVzZSB0aG9zZSB2YWx1ZXMgZm9y IGEgbm9uIGNyb3NzLWJ1aWxkLg0KPiA+IEdpdmUgdXNlcnMgdGhlIG9wdGlvbiB0byBvdmVycmlk ZSB0aGUgcGVyLWFyY2ggZGVmYXVsdCB2YWx1ZXMgb3INCj4gPiB2YWx1ZXMgZnJvbSBjcm9zcyBm aWxlcyBieSBzcGVjaWZ5aW5nIHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZSB3aXRoDQo+ID4gLURt YXhfbGNvcmVzIGFuZCAtRG1heF9udW1hX25vZGVzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTog SnVyYWogTGlua2XFoSA8anVyYWoubGlua2VzQHBhbnRoZW9uLnRlY2g+DQo+ID4gLS0tDQo+ID4g IGJ1aWxkdG9vbHMvZ2V0X2NwdV9jb3VudC5weSAgfCAgNyArKysrKysNCj4gPiBidWlsZHRvb2xz L2dldF9udW1hX2NvdW50LnB5IHwgMjIgKysrKysrKysrKysrKysrKysNCj4gPiAgYnVpbGR0b29s cy9tZXNvbi5idWlsZCAgICAgICB8ICAyICsrDQo+ID4gIGNvbmZpZy9tZXNvbi5idWlsZCAgICAg ICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4gPiAgY29u ZmlnL3g4Ni9tZXNvbi5idWlsZCAgICAgICB8ICAyICsrDQo+ID4gIG1lc29uX29wdGlvbnMudHh0 ICAgICAgICAgICAgfCAgOCArKystLS0NCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRp b25zKCspLCA2IGRlbGV0aW9ucygtKSAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gYnVpbGR0b29s cy9nZXRfY3B1X2NvdW50LnB5ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBidWlsZHRvb2xzL2dl dF9udW1hX2NvdW50LnB5DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvYnVpbGR0b29scy9nZXRfY3B1 X2NvdW50LnB5IGIvYnVpbGR0b29scy9nZXRfY3B1X2NvdW50LnB5DQo+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQgaW5kZXggMDAwMDAwMDAwLi4zODZmODVmOGINCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvYnVpbGR0b29scy9nZXRfY3B1X2NvdW50LnB5DQo+ID4gQEAgLTAsMCArMSw3IEBA DQo+ID4gKyMhL3Vzci9iaW4vcHl0aG9uMw0KPiANCj4gSSB0aGluayBmb3IgRFBESyBweXRob24g c2NyaXB0cyB3ZSBzdGFuZGFyZGl6ZWQgb24gIi91c3IvYmluL2VudiBweXRob24zIg0KPiBbU29t ZW9uZSBwbGVhc2UgY29ycmVjdCBtZSBpZiBJJ20gd3JvbmcgaGVyZSFdDQo+IA0KDQpUaGUgb3Ro ZXIgc2NyaXB0cyBhcmUgdXNpbmcgaXQsIHNvIEknbGwgY2hhbmdlIGl0Lg0KDQo+ID4gKyMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAjIENvcHlyaWdodCAoYykgMjAyMA0K PiA+ICtQQU5USEVPTi50ZWNoIHMuci5vLg0KPiA+ICsNCj4gPiAraW1wb3J0IG9zDQo+ID4gKw0K PiA+ICtwcmludChvcy5jcHVfY291bnQoKSkNCj4gPiBkaWZmIC0tZ2l0IGEvYnVpbGR0b29scy9n ZXRfbnVtYV9jb3VudC5weQ0KPiA+IGIvYnVpbGR0b29scy9nZXRfbnVtYV9jb3VudC5weSBuZXcg ZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMC4uZTdmM2RlNmIwDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2J1aWxkdG9vbHMvZ2V0X251bWFfY291bnQucHkNCj4gPiBA QCAtMCwwICsxLDIyIEBADQo+ID4gKyMhL3Vzci9iaW4vcHl0aG9uMw0KPiA+ICsjIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgIyBDb3B5cmlnaHQgKGMpIDIwMjANCj4gPiAr UEFOVEhFT04udGVjaCBzLnIuby4NCj4gPiArDQo+ID4gK2ltcG9ydCBjdHlwZXMNCj4gPiAraW1w b3J0IGdsb2INCj4gPiAraW1wb3J0IG9zDQo+ID4gK2ltcG9ydCBzdWJwcm9jZXNzDQo+ID4gKw0K PiA+ICtpZiBvcy5uYW1lID09ICdwb3NpeCc6DQo+ID4gKyAgICBpZiBvcy5wYXRoLmlzZGlyKCcv c3lzL2RldmljZXMvc3lzdGVtL25vZGUnKToNCj4gPiArICAgICAgICBwcmludChsZW4oZ2xvYi5n bG9iKCcvc3lzL2RldmljZXMvc3lzdGVtL25vZGUvbm9kZSonKSkpDQo+ID4gKyAgICBlbHNlOg0K PiA+ICsgICAgICAgIHN1YnByb2Nlc3MucnVuKFsnc3lzY3RsJywgJ3ZtLm5kb21haW5zJ10pDQo+ ID4gKw0KPiANCj4gSSBqdXN0IHJlYWxpc2VkIHRoYXQgYnkgZGVmYXVsdCBzeXNjdGwgb3V0cHV0 cyB0aGUgbmFtZSBvZiB0aGUgZWxlbWVudCBhcyB3ZWxsIGFzDQo+IHRoZSB2YWx1ZSwgd2hpY2gg aXMgbm90IHdoYXQgd2Ugd2FudC4gVXNpbmcgIi1uIiBmbGFnIHN1cHByZXNzZXMgdGhlIG5hbWUs IHNvDQo+IHBsZWFzZSBhZGQgdGhhdCB0byB0aGUgY29tbWFuZC4gW1NvcnJ5IGZvciBub3Qgc3Bv dHRpbmcgdGhpcyBpbiBwcmV2aW91cw0KPiB2ZXJzaW9uc10uDQo+IA0KDQpPaywgSSdsbCBhZGQg dGhpcy4gSSB2ZXJpZmllZCBob3cgdGhlIG91dHB1dCBsb29rcyBhbmQgd2Ugc2hvdWxkbid0IG5l ZWQgdG8gY2hhbmdlIGFueXRoaW5nIGFmdGVyIHRoaXMuDQoNCj4gPiArZWxpZiBvcy5uYW1lID09 ICdudCc6DQo+ID4gKyAgICBsaWJrZXJuZWwzMiA9IGN0eXBlcy53aW5kbGwua2VybmVsMzINCj4g PiArDQo+ID4gKyAgICBjb3VudCA9IGN0eXBlcy5jX3Vsb25nKCkNCj4gPiArDQo+ID4gKyAgICBs aWJrZXJuZWwzMi5HZXROdW1hSGlnaGVzdE5vZGVOdW1iZXIoY3R5cGVzLnBvaW50ZXIoY291bnQp KQ0KPiA+ICsgICAgcHJpbnQoY291bnQudmFsdWUgKyAxKQ0KPiA+IGRpZmYgLS1naXQgYS9idWls ZHRvb2xzL21lc29uLmJ1aWxkIGIvYnVpbGR0b29scy9tZXNvbi5idWlsZCBpbmRleA0KPiA+IDA0 ODA4ZGFiYy4uOTI1ZTczM2IxIDEwMDY0NA0KPiA+IC0tLSBhL2J1aWxkdG9vbHMvbWVzb24uYnVp bGQNCj4gPiArKysgYi9idWlsZHRvb2xzL21lc29uLmJ1aWxkDQo+ID4gQEAgLTE3LDMgKzE3LDUg QEAgZWxzZQ0KPiA+ICBlbmRpZg0KPiA+ICBtYXBfdG9fd2luX2NtZCA9IHB5MyArIGZpbGVzKCdt YXBfdG9fd2luLnB5JykgIHNwaGlueF93cmFwcGVyID0gcHkzICsNCj4gPiBmaWxlcygnY2FsbC1z cGhpbngtYnVpbGQucHknKQ0KPiA+ICtnZXRfY3B1X2NvdW50X2NtZCA9IHB5MyArIGZpbGVzKCdn ZXRfY3B1X2NvdW50LnB5JykNCj4gPiArZ2V0X251bWFfY291bnRfY21kID0gcHkzICsgZmlsZXMo J2dldF9udW1hX2NvdW50LnB5JykNCj4gPiBkaWZmIC0tZ2l0IGEvY29uZmlnL21lc29uLmJ1aWxk IGIvY29uZmlnL21lc29uLmJ1aWxkIGluZGV4DQo+ID4gYzdmN2FhNmUyLi5hNTEwMDBhYjIgMTAw NjQ0DQo+ID4gLS0tIGEvY29uZmlnL21lc29uLmJ1aWxkDQo+ID4gKysrIGIvY29uZmlnL21lc29u LmJ1aWxkDQo+ID4gQEAgLTIzMSw4ICsyMzEsNiBAQCBmb3JlYWNoIGFyZzogd2FybmluZ19mbGFn cyAgZW5kZm9yZWFjaA0KPiA+DQo+ID4gICMgc2V0IG90aGVyIHZhbHVlcyBwdWxsZWQgZnJvbSB0 aGUgYnVpbGQgb3B0aW9ucw0KPiA+IC1kcGRrX2NvbmYuc2V0KCdSVEVfTUFYX0xDT1JFJywgZ2V0 X29wdGlvbignbWF4X2xjb3JlcycpKQ0KPiA+IC1kcGRrX2NvbmYuc2V0KCdSVEVfTUFYX05VTUFf Tk9ERVMnLCBnZXRfb3B0aW9uKCdtYXhfbnVtYV9ub2RlcycpKQ0KPiA+IGRwZGtfY29uZi5zZXQo J1JURV9NQVhfRVRIUE9SVFMnLCBnZXRfb3B0aW9uKCdtYXhfZXRocG9ydHMnKSkNCj4gPiBkcGRr X2NvbmYuc2V0KCdSVEVfTElCRUFMX1VTRV9IUEVUJywgZ2V0X29wdGlvbigndXNlX2hwZXQnKSkN Cj4gPiBkcGRrX2NvbmYuc2V0KCdSVEVfRU5BQkxFX1RSQUNFX0ZQJywgZ2V0X29wdGlvbignZW5h YmxlX3RyYWNlX2ZwJykpIEBADQo+ID4gLTI1MSw2ICsyNDksNTIgQEAgY29tcGlsZV90aW1lX2Nw dWZsYWdzID0gW10NCj4gPiAgc3ViZGlyKGFyY2hfc3ViZGlyKQ0KPiA+ICBkcGRrX2NvbmYuc2V0 KCdSVEVfQ09NUElMRV9USU1FX0NQVUZMQUdTJywNCj4gPiAnLCcuam9pbihjb21waWxlX3RpbWVf Y3B1ZmxhZ3MpKQ0KPiA+DQo+ID4gK21heF9sY29yZXMgPSBnZXRfb3B0aW9uKCdtYXhfbGNvcmVz JykgbWF4X251bWFfbm9kZXMgPQ0KPiA+ICtnZXRfb3B0aW9uKCdtYXhfbnVtYV9ub2RlcycpIGlm IG1heF9sY29yZXMgPiAwDQo+ID4gKwkjIE92ZXJ3cml0ZSB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9t IGFyY2hfc3ViZGlyIHdpdGggdXNlciBpbnB1dA0KPiA+ICsJZHBka19jb25mLnNldCgnUlRFX01B WF9MQ09SRScsIG1heF9sY29yZXMpIGVsaWYgbWF4X2xjb3JlcyA9PSAtMQ0KPiA+ICsJIyBPdmVy d3JpdGUgdGhlIGRlZmF1bHQgdmFsdWUgd2l0aCBkaXNjb3ZlcmVkIHZhbHVlcw0KPiA+ICsJaWYg bm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkNCj4gDQo+IEknZCBzdWdnZXN0IGNoYW5naW5nIHRo aXMgdG8gdGhlIGludmVyc2UgYW5kIGVycm9yaW5nIG91dCwgc2luY2UgSSBhc3N1bWUgdGhhdA0K PiBoYXZpbmcgLTEgZm9yIGNyb3NzLWNvbXBpbGF0aW9uIHNob3VsZCBiZSBhbiBlcnJvcj8NCj4g DQo+IAlpZiBtZXNvbi5pc19jcm9zc19idWlsZCgpDQo+IAkJZXJyb3IoJy4uLi4nKQ0KPiAJZW5k aWYNCj4gDQo+IFRoZXJlYWZ0ZXIgeW91IHNhdmUgYSBsZXZlbCBvZiBpbmRlbnRhdGlvbiBmb3Ig dGhlIHJlc3Qgb2YgdGhlIGJsb2NrLg0KPiANCg0KSSB0aG91Z2h0IG9mIHRoaXMgaW4gdGVybXMg b2YgY3Jvc3MtY29tcGlsYXRpb24gdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBkaXNjb3ZlcmVkIHZh bHVlcywgYnV0IGVycm9yaW5nIG91dCBtYWtlcyBzZW5zZS4NCg0KPiA+ICsJCSMgRGlzY292ZXJ5 IG1ha2VzIHNlbnNlIG9ubHkgZm9yIG5vbi1jcm9zcyBidWlsZHMNCj4gPiArCQltYXhfbGNvcmVz ID0NCj4gcnVuX2NvbW1hbmQoZ2V0X2NwdV9jb3VudF9jbWQpLnN0ZG91dCgpLnRvX2ludCgpDQo+ ID4gKwkJbWluX2xjb3JlcyA9IDINCj4gPiArCQkjIERQREsgbXVzdCBiZSBidWlsZCBmb3IgYXQg bGVhc3QgMiBjb3Jlcw0KPiANCj4gRXZlbiAyIHNlZW1zIHJhdGhlciBsb3cuIEknZCBwZXJzb25h bGx5IGxvb2sgdG8gc2V0IHRoZSBtaW5pbXVtIGF0IDQuDQo+IA0KDQpUaGlzIHdhcyBpbmZvcm1l ZCBieSBIb25uYXBwYSdzIHNlcmllczogaHR0cDovL3BhdGNoZXMuZHBkay5vcmcvcHJvamVjdC9k cGRrL2xpc3QvP3Nlcmllcz0xMzA0MS4NCkkgYmVsaWV2ZWQgaGUgZml4ZWQgdGhlIGJ1aWxkIHNv IGl0IHdvcmtzIGV2ZW4gd2l0aCAyIGNvcmVzLiBTZXR0aW5nIGl0IHRvIGxvd2VzdCB3b3JraW5n IG51bWJlciBzZWVtcyBsaWtlIHRoZSB3YXkgdG8gZ28gdG8gbWUuDQoNCj4gPiArCQlpZiBtYXhf bGNvcmVzIDwgbWluX2xjb3Jlcw0KPiA+ICsJCQltZXNzYWdlKCdGb3VuZCBsZXNzIHRoYW4gQDBA IGNvcmVzLCBidWlsZGluZyBmb3INCj4gQDBAIGNvcmVzJy5mb3JtYXQobWluX2xjb3JlcykpDQo+ ID4gKwkJCW1heF9sY29yZXMgPSBtaW5fbGNvcmVzDQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQltZXNz YWdlKCdGb3VuZCBAMEAgY29yZXMnLmZvcm1hdChtYXhfbGNvcmVzKSkNCj4gPiArCQllbmRpZg0K PiA+ICsJCWRwZGtfY29uZi5zZXQoJ1JURV9NQVhfTENPUkUnLCBtYXhfbGNvcmVzKQ0KPiA+ICsJ ZW5kaWYNCj4gPiArZW5kaWYNCj4gPiArDQo+ID4gK2lmIG1heF9udW1hX25vZGVzID4gMA0KPiA+ ICsJIyBPdmVyd3JpdGUgdGhlIGRlZmF1bHQgdmFsdWUgZnJvbSBhcmNoX3N1YmRpciB3aXRoIHVz ZXIgaW5wdXQNCj4gPiArCWRwZGtfY29uZi5zZXQoJ1JURV9NQVhfTlVNQV9OT0RFUycsIG1heF9u dW1hX25vZGVzKSBlbGlmDQo+ID4gK21heF9udW1hX25vZGVzID09IC0xDQo+ID4gKwkjIE92ZXJ3 cml0ZSB0aGUgZGVmYXVsdCB2YWx1ZSB3aXRoIGRpc2NvdmVyZWQgdmFsdWVzDQo+ID4gKwlpZiBu b3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQ0KPiA+ICsJCSMgRGlzY292ZXJ5IG1ha2VzIHNlbnNl IG9ubHkgZm9yIG5vbi1jcm9zcyBidWlsZHMNCj4gPiArCQltYXhfbnVtYV9ub2RlcyA9DQo+IHJ1 bl9jb21tYW5kKGdldF9udW1hX2NvdW50X2NtZCkuc3Rkb3V0KCkudG9faW50KCkNCj4gPiArCQlt ZXNzYWdlKCdGb3VuZCBAMEAgbnVtYSBub2RlcycuZm9ybWF0KG1heF9udW1hX25vZGVzKSkNCj4g PiArCQlkcGRrX2NvbmYuc2V0KCdSVEVfTUFYX05VTUFfTk9ERVMnLCBtYXhfbnVtYV9ub2RlcykN Cj4gPiArCWVuZGlmDQo+ID4gK2VuZGlmDQo+ID4gKw0KPiA+ICsjIGNoZWNrIHRoYXQgY3B1IGFu ZCBudW1hIGNvdW50IGlzIHNldCBpbiBjcm9zcyBidWlsZHMgIyBhbmQgZXJyb3INCj4gPiArb3V0 IGlmIGl0J3Mgbm90IHNldCBpZiBtZXNvbi5pc19jcm9zc19idWlsZCgpDQo+ID4gKwlpZiBub3Qg ZHBka19jb25mLmhhcygnUlRFX01BWF9MQ09SRScpDQo+ID4gKwkJZXJyb3IoJ051bWJlciBvZiBj b3JlcyBmb3IgY3Jvc3MgYnVpbGQgbm90IHNwZWNpZmllZCBpbiBAMEANCj4gc3ViZGlyIChlLmcu IGluIGEgY3Jvc3MtZmlsZSkgbm9yIG9uIHRoZSBjbWRsaW5lJy5mb3JtYXQoYXJjaF9zdWJkaXIp KQ0KPiA+ICsJZW5kaWYNCj4gPiArCWlmIG5vdCBkcGRrX2NvbmYuaGFzKCdSVEVfTUFYX05VTUFf Tk9ERVMnKQ0KPiA+ICsJCWVycm9yKCdOdW1iZXIgb2YgbnVtYSBub2RlcyBmb3IgY3Jvc3MgYnVp bGQgbm90IHNwZWNpZmllZCBpbg0KPiBAMEAgc3ViZGlyIChlLmcuIGluIGEgY3Jvc3MtZmlsZSkg bm9yIG9uIHRoZSBjbWRsaW5lJy5mb3JtYXQoYXJjaF9zdWJkaXIpKQ0KPiA+ICsJZW5kaWYNCj4g PiArZW5kaWYNCj4gPiArDQo+IA0KPiBOb3Qgc3VyZSB5b3UgbmVlZCB0aGUgaXNfY3Jvc3NfYnVp bGQgYml0LCBzaW5jZSBpZiB3ZSBkb24ndCBoYXZlDQo+IFJURV9NQVhfTENPUkVTIHNldCBhdCBh bGwsIHRoZW4gaXQncyBhbiBlcnJvciB0b28uIEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0IHRoZQ0K PiBjb2RlIHBhdGhzIHRvIHRoaXMgcG9pbnQgcHJldmVudCB0aGF0IGZyb20gZXZlciBoYXBwZW5p bmcuDQo+IA0KDQpPaywgbWFrZXMgc2Vuc2UgdG8gZG8gYSBnZW5lcmljIGNoZWNrIGhlcmUuDQoN Cj4gSXMgdGhlIGludGVudGlvbiBoZXJlIHRoYXQgdGhlIHN1YmRpciBtZXNvbi5idWlsZCBmaWxl cyB3aWxsIGp1c3QgbGl0ZXJhbGx5IHRha2UgdGhlDQo+IHZhbHVlIGZyb20gdGhlIGNyb3NzLWZp bGUsIG9yIGFyZSB5b3UgZG9pbmcgb3RoZXIgcHJvY2Vzc2luZyBpbiB0aGUgQVJNIGNhc2UsDQo+ IGUuZy4gdG8gY29tcHV0ZSBpdCBiYXNlZCBvbiBvdGhlciBpbmZvLiBJZiBpdCdzIGp1c3QgdGhl IGZvcm1lciB3aGVyZSBpdCdzIGFsd2F5cw0KPiByZWFkIGZyb20gdGhlIGNyb3NzLWZpbGVzLCBJ J2QgaGF2ZSB0aGUgcmVhZGluZyBkb25lIGluIHRoaXMgZmlsZSAoYWJvdmUgdGhlIG90aGVyDQo+ IGFzc2lnbm1lbnQgd29yayksIHNpbmNlIGl0IHdvdWxkIGJlIGFyY2hpdGVjdHVyZSBhZ25vc3Rp Yy4NCj4gDQoNCkdvb2QgcG9pbnQsIHdlJ3JlIG5vdCBkb2luZyBhbnl0aGluZyBzcGVjaWFsLCBz byBhbGwgY29uZmlndXJhdGlvbiBmcm9tIGNyb3NzIGZpbGVzIHNob3VsZCBiZSBwcm9jZXNzZWQg dGhpcyB3YXkuDQoNCj4gPiAgIyBzZXQgdGhlIGluc3RhbGwgcGF0aCBmb3IgdGhlIGRyaXZlcnMN Cj4gPiBkcGRrX2NvbmYuc2V0X3F1b3RlZCgnUlRFX0VBTF9QTURfUEFUSCcsIGVhbF9wbWRfcGF0 aCkNCj4gPg0KPiA8c25pcD4NCg0K