From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.31; helo=mga06.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C75662119A44D for ; Mon, 17 Dec 2018 17:47:57 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Dec 2018 17:47:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,367,1539673200"; d="scan'208";a="260294734" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga004.jf.intel.com with ESMTP; 17 Dec 2018 17:47:56 -0800 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 17 Dec 2018 17:47:56 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 17 Dec 2018 17:47:55 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.203]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.201]) with mapi id 14.03.0415.000; Tue, 18 Dec 2018 09:47:53 +0800 From: "Gao, Liming" To: =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , "Feng, Bob C" , "edk2-devel@lists.01.org" Thread-Topic: [Patch V2] BaseTools: Fix PcdArray issue Thread-Index: AQHUlfAXCrcNW2XzykSy8t/5tBd1jqWDu2aA Date: Tue, 18 Dec 2018 01:47:53 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E38DC6F@SHSMSX104.ccr.corp.intel.com> References: <20181214161521.23236-1-bob.c.feng@intel.com> <91b38ee2-7680-9276-6904-ac3a1e6ebfdc@redhat.com> In-Reply-To: <91b38ee2-7680-9276-6904-ac3a1e6ebfdc@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch V2] BaseTools: Fix PcdArray issue X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Dec 2018 01:47:58 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KDQo+LS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSBbbWFp bHRvOnBoaWxtZEByZWRoYXQuY29tXQ0KPlNlbnQ6IE1vbmRheSwgRGVjZW1iZXIgMTcsIDIwMTgg NjowNSBQTQ0KPlRvOiBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZw0KPkNjOiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+ OyBBcmQgQmllc2hldXZlbA0KPjxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPlN1YmplY3Q6 IFJlOiBbUGF0Y2ggVjJdIEJhc2VUb29sczogRml4IFBjZEFycmF5IGlzc3VlDQo+DQo+T24gMTIv MTQvMTggNToxNSBQTSwgQm9iQ0Ygd3JvdGU6DQo+PiBGcm9tOiAiRmVuZywgQm9iIEMiIDxib2Iu Yy5mZW5nQGludGVsLmNvbT4NCj4+DQo+PiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTEzOTANCj4+DQo+PiAxLiBzdXBwb3J0IGhleCBudW1iZXIgZm9yIGFy cmF5IGluZGV4DQo+PiAyLiBzdXBwb3J0IE5vbi1EeW5hbWljIFBjZCBmb3IgYXJyYXkgZGF0YSB0 eXBlDQo+PiAzLiBzdXBwb3J0IHt9IGFuZCB7Q09ERSgpfSBmb3IgYXJyYXkgZGF0YSB0eXBlDQo+ PiA0LiBDaGFuZ2UgR2V0U3RydWN0dXJlUGNkTWF4U2l6ZSB0byBiZSBhIHN0YXRpYyBmdW5jdGlv biBzaW5jZSBpdCBuZWVkIHRvDQo+PiBiZSBjYWxsZWQgaW4gYW5vdGhlciBzdGF0aWMgZnVuY3Rp b24uIEFuZCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGRlcGVuZCBvbg0KPj4gaXQncyBjbGFzcyBp bnN0YW5jZS4NCj4+IDUuIEFkZCB1bml0dGVzdCBmb3IgUmVtb3ZlQ0NvbW1lbnRzIGZ1bmN0aW9u IGFuZA0KPj4gQXJyYXlJbmRleCByZWd1bGFyIGV4cHJlc3Npb24uDQo+DQo+VGhhbmtzIGZvciB0 aGlzIEJvYiENCj4NCj4+DQo+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1 dGlvbiBBZ3JlZW1lbnQgMS4xDQo+PiBTaWduZWQtb2ZmLWJ5OiBCb2IgRmVuZyA8Ym9iLmMuZmVu Z0BpbnRlbC5jb20+DQo+PiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ PiBDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+PiBDYzog UGhpbGlwcGUgTWF0aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPg0KPg0KPlJldmlld2Vk LWJ5OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+DQo+DQo+PiAt LS0NCj4+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vTWlzYy5weSAgICAgICAgfCAg NiArKw0KPj4gIC4uLi9QeXRob24vV29ya3NwYWNlL0J1aWxkQ2xhc3NPYmplY3QucHkgICAgICB8 ICAzICstDQo+PiAgLi4uL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5weSAg IHwgNTkgKysrKysrKysrKysrLS0tLS0tLQ0KPj4gIEJhc2VUb29scy9UZXN0cy9UZXN0UmVndWxh ckV4cHJlc3Npb24ucHkgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrDQo+PiAgNCBmaWxlcyBj aGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkNCj4+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgQmFzZVRvb2xzL1Rlc3RzL1Rlc3RSZWd1bGFyRXhwcmVzc2lvbi5weQ0KPj4NCj4+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vTWlzYy5weQ0KPmIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL01pc2MucHkNCj4+IGluZGV4IGIwNjNmMDY0 ZmIuLmVhMDlmODVlNzAgMTAwNjQ0DQo+PiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9D b21tb24vTWlzYy5weQ0KPj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL01p c2MucHkNCj4+IEBAIC0yMTQ0LDEwICsyMTQ0LDE2IEBAIGRlZiBDb3B5RGljdChvcmlfZGljdCk6 DQo+PiAgICAgICAgICBpZiBpc2luc3RhbmNlKG9yaV9kaWN0W2tleV0sKGRpY3QsT3JkZXJlZERp Y3QpKToNCj4+ICAgICAgICAgICAgICBuZXdfZGljdFtrZXldID0gQ29weURpY3Qob3JpX2RpY3Rb a2V5XSkNCj4+ICAgICAgICAgIGVsc2U6DQo+PiAgICAgICAgICAgICAgbmV3X2RpY3Rba2V5XSA9 IG9yaV9kaWN0W2tleV0NCj4+ICAgICAgcmV0dXJuIG5ld19kaWN0DQo+PiArDQo+PiArIw0KPj4g KyMgUmVtb3ZlIHRoZSBjL2MrKyBjb21tZW50czogLy8gYW5kIC8qICovDQo+PiArIw0KPj4gK2Rl ZiBSZW1vdmVDQ29tbWVudHMoY3RleHQpOg0KPj4gKyAgICByZXR1cm4gcmUuc3ViKCcvLy4qP1xu fC9cKi4qP1wqLycsICdcbicsIGN0ZXh0LCBmbGFncz1yZS5TKQ0KPj4gICMjDQo+PiAgIw0KPj4g ICMgVGhpcyBhY3RzIGxpa2UgdGhlIG1haW4oKSBmdW5jdGlvbiBmb3IgdGhlIHNjcmlwdCwgdW5s ZXNzIGl0IGlzICdpbXBvcnQnZWQgaW50bw0KPmFub3RoZXINCj4+ICAjIHNjcmlwdC4NCj4+ICAj DQo+PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0J1aWxk Q2xhc3NPYmplY3QucHkNCj5iL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9CdWls ZENsYXNzT2JqZWN0LnB5DQo+PiBpbmRleCAwMDhlZWUxYTE2Li5lOWExMTk1ZmQyIDEwMDY0NA0K Pj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0J1aWxkQ2xhc3NPYmpl Y3QucHkNCj4+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9CdWlsZENs YXNzT2JqZWN0LnB5DQo+PiBAQCAtMTcsMTEgKzE3LDExIEBAIGltcG9ydCBjb2xsZWN0aW9ucw0K Pj4gIGltcG9ydCByZQ0KPj4gIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0DQo+ PiAgZnJvbSBDb21tb24uTWlzYyBpbXBvcnQgQ29weURpY3QNCj4+ICBpbXBvcnQgY29weQ0KPj4g IFN0cnVjdFBhdHRlcm4gPSByZS5jb21waWxlKHInW19hLXpBLVpdWzAtOUEtWmEtel9cW1xdXSok JykNCj4+IC1BcnJheUluZGV4ID0gcmUuY29tcGlsZSgiXFtccypcZHswLDF9XHMqXF0iKQ0KPj4g K0FycmF5SW5kZXggPSByZS5jb21waWxlKCJcW1xzKlswLTlhLWZBLUZ4WF0qXHMqXF0iKQ0KPj4g ICMjIFBjZENsYXNzT2JqZWN0DQo+PiAgIw0KPj4gICMgVGhpcyBDbGFzcyBpcyB1c2VkIGZvciBQ Y2RPYmplY3QNCj4+ICAjDQo+PiAgIyBAcGFyYW0gb2JqZWN0OiAgICAgICAgICAgICBJbmhlcml0 ZWQgZnJvbSBvYmplY3QgY2xhc3MNCj4+IEBAIC04MiwxMCArODIsMTEgQEAgY2xhc3MgUGNkQ2xh c3NPYmplY3Qob2JqZWN0KToNCj4+ICAgICAgICAgIGRpbWVuc2lvbiA9IEFycmF5SW5kZXguZmlu ZGFsbChzZWxmLl9EYXR1bVR5cGUpDQo+PiAgICAgICAgICBmb3IgaXRlbSBpbiBkaW1lbnNpb246 DQo+PiAgICAgICAgICAgICAgbWF4c2l6ZSA9IGl0ZW0ubHN0cmlwKCJbIikucnN0cmlwKCJdIiku c3RyaXAoKQ0KPj4gICAgICAgICAgICAgIGlmIG5vdCBtYXhzaXplOg0KPj4gICAgICAgICAgICAg ICAgICBtYXhzaXplID0gIi0xIg0KPj4gKyAgICAgICAgICAgIG1heHNpemUgPSBzdHIoaW50KG1h eHNpemUsMTYpKSBpZiBtYXhzaXplLnN0YXJ0c3dpdGgoKCIweCIsIjBYIikpIGVsc2UNCj5tYXhz aXplDQo+PiAgICAgICAgICAgICAgc2VsZi5fQ2FwYWNpdHkuYXBwZW5kKG1heHNpemUpDQo+PiAg ICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJTa3VPdmVycmlkZVZhbHVlcyIpOg0KPj4gICAgICAg ICAgICAgIGZvciBza3UgaW4gc2VsZi5Ta3VPdmVycmlkZVZhbHVlczoNCj4+ICAgICAgICAgICAg ICAgICAgZm9yIGRlZmF1bHRzdG9yZSBpbiBzZWxmLlNrdU92ZXJyaWRlVmFsdWVzW3NrdV06DQo+ PiAgICAgICAgICAgICAgICAgICAgICBmaWVsZHMgPSBzZWxmLlNrdU92ZXJyaWRlVmFsdWVzW3Nr dV1bZGVmYXVsdHN0b3JlXQ0KPj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkNCj5iL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dv cmtzcGFjZS9Ec2NCdWlsZERhdGEucHkNCj4+IGluZGV4IGI0ODVjNzVhODQuLjM3ZmI4ZDU2YjYg MTAwNjQ0DQo+PiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRHNjQnVp bGREYXRhLnB5DQo+PiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRHNj QnVpbGREYXRhLnB5DQo+PiBAQCAtMzEsMTEgKzMxLDExIEBAIGZyb20gLk1ldGFEYXRhVGFibGUg aW1wb3J0ICoNCj4+ICBmcm9tIC5NZXRhRmlsZVRhYmxlIGltcG9ydCAqDQo+PiAgZnJvbSAuTWV0 YUZpbGVQYXJzZXIgaW1wb3J0ICoNCj4+DQo+PiAgZnJvbSAuV29ya3NwYWNlQ29tbW9uIGltcG9y dCBHZXREZWNsYXJlZFBjZA0KPj4gIGZyb20gQ29tbW9uLk1pc2MgaW1wb3J0IEFuYWx5emVEc2NQ Y2QNCj4+IC1mcm9tIENvbW1vbi5NaXNjIGltcG9ydCBQcm9jZXNzRHVwbGljYXRlZEluZg0KPj4g K2Zyb20gQ29tbW9uLk1pc2MgaW1wb3J0IFByb2Nlc3NEdXBsaWNhdGVkSW5mLFJlbW92ZUNDb21t ZW50cw0KPj4gIGltcG9ydCByZQ0KPj4gIGZyb20gQ29tbW9uLlBhcnNpbmcgaW1wb3J0IElzVmFs aWRXb3JkDQo+PiAgZnJvbSBDb21tb24uVmFyaWFibGVBdHRyaWJ1dGVzIGltcG9ydCBWYXJpYWJs ZUF0dHJpYnV0ZXMNCj4+ICBpbXBvcnQgQ29tbW9uLkdsb2JhbERhdGEgYXMgR2xvYmFsRGF0YQ0K Pj4gIGltcG9ydCBzdWJwcm9jZXNzDQo+PiBAQCAtMTU3MywxMSArMTU3MywxMSBAQCBjbGFzcyBE c2NCdWlsZERhdGEoUGxhdGZvcm1CdWlsZENsYXNzT2JqZWN0KToNCj4+ICAgICAgICAgICAgICAg ICAgbWluZGVmYXVsdHN0b3JlbmFtZSA9DQo+RGVmYXVsdFN0b3JlT2JqLkdldE1pbihQY2REZWZh dWx0U3RvcmVTZXQpDQo+Pg0KPnN0cl9wY2Rfb2JqLlNrdUluZm9MaXN0W3NlbGYuU2t1SWRNZ3Iu U3lzdGVtU2t1SWRdLkhpaURlZmF1bHRWYWx1ZSA9DQo+c3RyX3BjZF9vYmouU2t1SW5mb0xpc3Rb c2VsZi5Ta3VJZE1nci5TeXN0ZW1Ta3VJZF0uRGVmYXVsdFN0b3JlRGljdFttaW5kZQ0KPmZhdWx0 c3RvcmVuYW1lXQ0KPj4NCj4+ICAgICAgICAgICAgICBmb3Igc3RyX3BjZF9vYmogaW4gU19wY2Rf c2V0LnZhbHVlcygpOg0KPj4NCj4+IC0gICAgICAgICAgICAgICAgc3RyX3BjZF9vYmouTWF4RGF0 dW1TaXplID0NCj5zZWxmLkdldFN0cnVjdHVyZVBjZE1heFNpemUoc3RyX3BjZF9vYmopDQo+PiAr ICAgICAgICAgICAgICAgIHN0cl9wY2Rfb2JqLk1heERhdHVtU2l6ZSA9DQo+RHNjQnVpbGREYXRh LkdldFN0cnVjdHVyZVBjZE1heFNpemUoc3RyX3BjZF9vYmopDQo+PiAgICAgICAgICAgICAgICAg IFBjZHNbc3RyX3BjZF9vYmouVG9rZW5DTmFtZSwNCj5zdHJfcGNkX29iai5Ub2tlblNwYWNlR3Vp ZENOYW1lXSA9IHN0cl9wY2Rfb2JqDQo+PiAgICAgICAgICAgICAgICAgIFBjZHNbc3RyX3BjZF9v YmouVG9rZW5DTmFtZSwNCj5zdHJfcGNkX29iai5Ub2tlblNwYWNlR3VpZENOYW1lXS5DdXN0b21B dHRyaWJ1dGVbJ0lzU3RydSddPVRydWUNCj4+DQo+PiAgICAgICAgICAgICAgZm9yIHBjZGtleSBp biBQY2RzOg0KPj4gICAgICAgICAgICAgICAgICBwY2QgPSBQY2RzW3BjZGtleV0NCj4+IEBAIC0x Njg3LDEzICsxNjg3LDE0IEBAIGNsYXNzIERzY0J1aWxkRGF0YShQbGF0Zm9ybUJ1aWxkQ2xhc3NP YmplY3QpOg0KPj4gICAgICAgICAgICAgICAgICBpZiBTa3VOYW1lIG5vdCBpbiBQY2RzW1BjZENO YW1lLCBUb2tlblNwYWNlR3VpZF0uRHNjUmF3VmFsdWU6DQo+PiAgICAgICAgICAgICAgICAgICAg ICBQY2RzW1BjZENOYW1lLCBUb2tlblNwYWNlR3VpZF0uRHNjUmF3VmFsdWVbU2t1TmFtZV0gPSB7 fQ0KPj4gICAgICAgICAgICAgICAgICBQY2RzW1BjZENOYW1lLA0KPlRva2VuU3BhY2VHdWlkXS5E c2NSYXdWYWx1ZVtTa3VOYW1lXVtUQUJfREVGQVVMVF9TVE9SRVNfREVGQVVMVF0NCj49IFNldHRp bmdzWzBdDQo+PiAgICAgICAgICByZXR1cm4gUGNkcw0KPj4NCj4+IC0gICAgZGVmIEdldFN0cnVj dHVyZVBjZE1heFNpemUoc2VsZiwgc3RyX3BjZCk6DQo+PiArICAgIEBzdGF0aWNtZXRob2QNCj4+ ICsgICAgZGVmIEdldFN0cnVjdHVyZVBjZE1heFNpemUoc3RyX3BjZCk6DQo+PiAgICAgICAgICBw Y2RfZGVmYXVsdF92YWx1ZSA9IHN0cl9wY2QuRGVmYXVsdFZhbHVlDQo+PiAtICAgICAgICBza3Vf dmFsdWVzID0gW3NrdW9iai5IaWlEZWZhdWx0VmFsdWUgaWYgc3RyX3BjZC5UeXBlIGluDQo+W3Nl bGYuX1BDRF9UWVBFX1NUUklOR19bTU9ERUxfUENEX0RZTkFNSUNfSElJXSwNCj5zZWxmLl9QQ0Rf VFlQRV9TVFJJTkdfW01PREVMX1BDRF9EWU5BTUlDX0VYX0hJSV1dIGVsc2UNCj5za3VvYmouRGVm YXVsdFZhbHVlIGZvciBza3VvYmogaW4gc3RyX3BjZC5Ta3VJbmZvTGlzdC52YWx1ZXMoKV0NCj4+ ICsgICAgICAgIHNrdV92YWx1ZXMgPSBbc2t1b2JqLkhpaURlZmF1bHRWYWx1ZSBpZiBzdHJfcGNk LlR5cGUgaW4NCj5bRHNjQnVpbGREYXRhLl9QQ0RfVFlQRV9TVFJJTkdfW01PREVMX1BDRF9EWU5B TUlDX0hJSV0sDQo+RHNjQnVpbGREYXRhLl9QQ0RfVFlQRV9TVFJJTkdfW01PREVMX1BDRF9EWU5B TUlDX0VYX0hJSV1dIGVsc2UNCj5za3VvYmouRGVmYXVsdFZhbHVlIGZvciBza3VvYmogaW4gc3Ry X3BjZC5Ta3VJbmZvTGlzdC52YWx1ZXMoKV0NCj4+ICAgICAgICAgIHNrdV92YWx1ZXMuYXBwZW5k KHBjZF9kZWZhdWx0X3ZhbHVlKQ0KPj4NCj4+ICAgICAgICAgIGRlZiBnZXRfbGVuZ3RoKHZhbHVl KToNCj4+ICAgICAgICAgICAgICBWYWx1ZSA9IHZhbHVlLnN0cmlwKCkNCj4+ICAgICAgICAgICAg ICBpZiBsZW4odmFsdWUpID4gMToNCj4+IEBAIC0xNzAxLDExICsxNzAyLDE0IEBAIGNsYXNzIERz Y0J1aWxkRGF0YShQbGF0Zm9ybUJ1aWxkQ2xhc3NPYmplY3QpOg0KPj4gICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIDE2DQo+PiAgICAgICAgICAgICAgICAgIGlmIFZhbHVlLnN0YXJ0c3dpdGgo J0wiJykgYW5kIFZhbHVlLmVuZHN3aXRoKCciJyk6DQo+PiAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gbGVuKFZhbHVlWzI6LTFdKQ0KPj4gICAgICAgICAgICAgICAgICBpZiBWYWx1ZVswXSA9 PSAnIicgYW5kIFZhbHVlWy0xXSA9PSAnIic6DQo+PiAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gbGVuKFZhbHVlKSAtIDINCj4+IC0gICAgICAgICAgICAgICAgaWYgVmFsdWVbMF0gPT0gJ3sn IGFuZCBWYWx1ZVstMV0gPT0gJ30nOg0KPj4gKyAgICAgICAgICAgICAgICBpZiBWYWx1ZS5zdHJp cCgpLnN0YXJ0c3dpdGgoIntDT0RFKCIpOg0KPj4gKyAgICAgICAgICAgICAgICAgICAgdG1wVmFs dWUgPSBSZW1vdmVDQ29tbWVudHMoVmFsdWUpDQo+PiArICAgICAgICAgICAgICAgICAgICByZXR1 cm4gbGVuKHRtcFZhbHVlLnNwbGl0KCIsIikpDQo+PiArICAgICAgICAgICAgICAgIGlmIChWYWx1 ZVswXSA9PSAneycgYW5kIFZhbHVlWy0xXSA9PSAnfScpOg0KPj4gICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGxlbihWYWx1ZS5zcGxpdCgiLCIpKQ0KPj4gICAgICAgICAgICAgICAgICBpZiBW YWx1ZS5zdGFydHN3aXRoKCJMJyIpIGFuZCBWYWx1ZS5lbmRzd2l0aCgiJyIpIGFuZA0KPmxlbihs aXN0KFZhbHVlWzI6LTFdKSkgPiAxOg0KPj4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICBs ZW4obGlzdChWYWx1ZVsyOi0xXSkpDQo+PiAgICAgICAgICAgICAgICAgIGlmIFZhbHVlWzBdID09 ICInIiBhbmQgVmFsdWVbLTFdID09ICInIiBhbmQgbGVuKGxpc3QoVmFsdWVbMTotMV0pKSA+IDE6 DQo+PiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVuKFZhbHVlKSAtIDINCj4+IEBAIC0x ODY0LDExICsxODY4LDEyIEBAIGNsYXNzIERzY0J1aWxkRGF0YShQbGF0Zm9ybUJ1aWxkQ2xhc3NP YmplY3QpOg0KPj4gICAgICAgICAgICAgIGZvciBkZW0gaW4gUGNkLkNhcGFjaXR5Og0KPj4gICAg ICAgICAgICAgICAgICBpZiBkZW0gPT0gJzAnOg0KPj4gICAgICAgICAgICAgICAgICAgICAgcl9k YXRhdHlwZS5hcHBlbmQoIlsxXSIpDQo+PiAgICAgICAgICAgICAgICAgIGVsc2U6DQo+PiAgICAg ICAgICAgICAgICAgICAgICByX2RhdGF0eXBlLmFwcGVuZCgiWyIgKyBkZW0gKyAiXSIpDQo+PiAt ICAgICAgICAgICAgQ0FwcCA9ICcgIFNpemUgPSBzaXplb2YoJXMpO1xuJyAlICgiIi5qb2luKHJf ZGF0YXR5cGUpKQ0KPj4gKyAgICAgICAgICAgIHNpemViYXNldmFsdWUgPSAiKCVzIC8gc2l6ZW9m KCVzKSArIDEpIiAlDQo+KChEc2NCdWlsZERhdGEuR2V0U3RydWN0dXJlUGNkTWF4U2l6ZShQY2Qp LCBQY2QuQmFzZURhdHVtVHlwZSkpDQo+PiArICAgICAgICAgICAgQ0FwcCA9ICcgIFNpemUgPSBz aXplb2YoJXMpID4gJXM/c2l6ZW9mKCVzKSA6ICVzIDtcbicgJQ0KPiggKCIiLmpvaW4ocl9kYXRh dHlwZSksIHNpemViYXNldmFsdWUsICIiLmpvaW4ocl9kYXRhdHlwZSksIHNpemViYXNldmFsdWUp ICApDQo+PiAgICAgICAgICBlbHNlOg0KPj4gICAgICAgICAgICAgIENBcHAgPSAnICBTaXplID0g c2l6ZW9mKCVzKTtcbicgJSAoUGNkLkRhdHVtVHlwZSkNCj4+ICAgICAgICAgIENBcHAgPSBDQXBw ICsgJyAgQ2FsXyVzXyVzX1NpemUoJlNpemUpO1xuJyAlDQo+KFBjZC5Ub2tlblNwYWNlR3VpZENO YW1lLCBQY2QuVG9rZW5DTmFtZSkNCj4+ICAgICAgICAgIHJldHVybiBDQXBwDQo+Pg0KPj4gQEAg LTIyNDYsMTEgKzIyNTEsMTEgQEAgY2xhc3MgRHNjQnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFz c09iamVjdCk6DQo+Pg0KPj4gICAgICAgICAgICAgIENBcHAgPSBDQXBwICsgJ1xuJw0KPj4NCj4+ ICAgICAgICAgICAgICBQY2REZWZhdWx0VmFsdWUgPSBTdHJpbmdUb0FycmF5KFBjZC5EZWZhdWx0 VmFsdWVGcm9tRGVjLnN0cmlwKCkpDQo+Pg0KPj4gLSAgICAgICAgICAgIEluaXRCeXRlVmFsdWUg Kz0gJyVzLiVzLiVzLiVzfCVzfCVzXG4nICUgKFNrdU5hbWUsDQo+RGVmYXVsdFN0b3JlTmFtZSwg UGNkLlRva2VuU3BhY2VHdWlkQ05hbWUsIFBjZC5Ub2tlbkNOYW1lLA0KPlBjZC5CYXNlRGF0dW1U eXBlLCBQY2REZWZhdWx0VmFsdWUpDQo+PiArICAgICAgICAgICAgSW5pdEJ5dGVWYWx1ZSArPSAn JXMuJXMuJXMuJXN8JXN8JXNcbicgJSAoU2t1TmFtZSwNCj5EZWZhdWx0U3RvcmVOYW1lLCBQY2Qu VG9rZW5TcGFjZUd1aWRDTmFtZSwgUGNkLlRva2VuQ05hbWUsDQo+UGNkLkRhdHVtVHlwZSwgUGNk RGVmYXVsdFZhbHVlKQ0KPj4NCj4+ICAgICAgICAgICAgICAjDQo+PiAgICAgICAgICAgICAgIyBH ZXQgY3VycmVudCBQQ0QgdmFsdWUgYW5kIHNpemUNCj4+ICAgICAgICAgICAgICAjDQo+PiAgICAg ICAgICAgICAgQ0FwcCA9IENBcHAgKyAnICBPcmlnaW5hbFBjZCA9IFBjZEdldFB0ciAoJXMsICVz LCAlcywgJXMsDQo+Jk9yaWdpbmFsU2l6ZSk7XG4nICUgKFNrdU5hbWUsIERlZmF1bHRTdG9yZU5h bWUsDQo+UGNkLlRva2VuU3BhY2VHdWlkQ05hbWUsIFBjZC5Ub2tlbkNOYW1lKQ0KPj4gQEAgLTIz MTYsMzMgKzIzMjEsNDMgQEAgY2xhc3MgRHNjQnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFzc09i amVjdCk6DQo+PiAgICAgICAgICAgICAgcmV0dXJuIENBcHANCj4+ICAgICAgICAgIGlmIG5vdCBQ Y2QuSXNBcnJheSgpOg0KPj4gICAgICAgICAgICAgIHJldHVybiBDQXBwDQo+PiAgICAgICAgICBE ZW1lc2lvbiA9ICIiDQo+PiAgICAgICAgICBmb3IgZCBpbiBQY2QuQ2FwYWNpdHk6DQo+PiAtICAg ICAgICAgICAgaWYgZCA9PSAiMCI6DQo+PiAtICAgICAgICAgICAgICAgIERlbWVzaW9uICs9ICJb XSINCj4+IC0gICAgICAgICAgICBlbHNlOg0KPj4gLSAgICAgICAgICAgICAgICBEZW1lc2lvbiAr PSAiWyIrZCsiXSINCj4+ICsgICAgICAgICAgICBEZW1lc2lvbiArPSAiW10iDQo+Pg0KPj4gICAg ICAgICAgVmFsdWUgPSBQY2QuRGVmYXVsdFZhbHVlRnJvbURlYw0KPj4gICAgICAgICAgaWYgIntD T0RFKCIgaW4gUGNkLkRlZmF1bHRWYWx1ZUZyb21EZWM6DQo+PiAgICAgICAgICAgICAgcmVhbHZh bHVlID0gUGNkLkRlZmF1bHRWYWx1ZUZyb21EZWMuc3RyaXAoKVs2Oi0yXSAjDQo+IntDT0RFKCIp LnJzdHJpcCgiKX0iDQo+PiAtICAgICAgICAgICAgQ0FwcCArPSAic3RhdGljICVzICVzXyVzX0lO SVRfVmFsdWUlcyA9ICVzO1xuIiAlDQo+KFBjZC5CYXNlRGF0dW1UeXBlLFBjZC5Ub2tlblNwYWNl R3VpZENOYW1lLFBjZC5Ub2tlbkNOYW1lLERlbWVzaQ0KPm9uLHJlYWx2YWx1ZSkNCj4+ICsgICAg ICAgIGVsc2U6DQo+PiArICAgICAgICAgICAgcmVhbHZhbHVlID0gUGNkLkRlZmF1bHRWYWx1ZUZy b21EZWMuc3RyaXAoKQ0KPj4gKyAgICAgICAgQ0FwcCArPSAic3RhdGljICVzICVzXyVzX0lOSVRf VmFsdWUlcyA9ICVzO1xuIiAlDQo+KFBjZC5CYXNlRGF0dW1UeXBlLFBjZC5Ub2tlblNwYWNlR3Vp ZENOYW1lLFBjZC5Ub2tlbkNOYW1lLERlbWVzaQ0KPm9uLHJlYWx2YWx1ZSkNCj4+DQo+PiAtICAg ICAgICBmb3Igc2t1bmFtZSBpbiBQY2QuU2t1SW5mb0xpc3Q6DQo+PiAtICAgICAgICAgICAgc2t1 aW5mbyA9IFBjZC5Ta3VJbmZvTGlzdFtza3VuYW1lXQ0KPj4gLSAgICAgICAgICAgIGlmIHNrdWlu Zm8uVmFyaWFibGVOYW1lOg0KPj4gLSAgICAgICAgICAgICAgICBmb3IgZGVmYXVsdHN0b3JlIGlu IHNrdWluZm8uRGVmYXVsdFN0b3JlRGljdDoNCj4+IC0gICAgICAgICAgICAgICAgICAgIFZhbHVl ID0gc2t1aW5mb1tkZWZhdWx0c3RvcmVdDQo+PiArICAgICAgICBpZiBQY2QuVHlwZSBpbiBQQ0Rf RFlOQU1JQ19UWVBFX1NFVCB8DQo+UENEX0RZTkFNSUNfRVhfVFlQRV9TRVQ6DQo+PiArICAgICAg ICAgICAgZm9yIHNrdW5hbWUgaW4gUGNkLlNrdUluZm9MaXN0Og0KPj4gKyAgICAgICAgICAgICAg ICBza3VpbmZvID0gUGNkLlNrdUluZm9MaXN0W3NrdW5hbWVdDQo+PiArICAgICAgICAgICAgICAg IGlmIHNrdWluZm8uVmFyaWFibGVOYW1lOg0KPj4gKyAgICAgICAgICAgICAgICAgICAgZm9yIGRl ZmF1bHRzdG9yZSBpbiBza3VpbmZvLkRlZmF1bHRTdG9yZURpY3Q6DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgVmFsdWUgPSBza3VpbmZvW2RlZmF1bHRzdG9yZV0NCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICBpZiAie0NPREUoIiBpbiBWYWx1ZToNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVhbHZhbHVlID0gVmFsdWUuc3RyaXAoKVs2Oi0yXSAjICJ7Q09ERSgiKS5y c3RyaXAoIil9Ig0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlYWx2YWx1ZSA9IFZhbHVlLnN0cmlwKCkNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICBDQXBwICs9ICJzdGF0aWMgJXMgJXNfJXNfJXNfJXNfVmFsdWUl cyA9ICVzO1xuIiAlDQo+KFBjZC5CYXNlRGF0dW1UeXBlLFBjZC5Ub2tlblNwYWNlR3VpZENOYW1l LFBjZC5Ub2tlbkNOYW1lLHNrdW5hbQ0KPmUsZGVmYXVsdHN0b3JlLERlbWVzaW9uLHJlYWx2YWx1 ZSkNCj4+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4+ICsgICAgICAgICAgICAgICAgICAgIFZh bHVlID0gc2t1aW5mby5EZWZhdWx0VmFsdWUNCj4+ICAgICAgICAgICAgICAgICAgICAgIGlmICJ7 Q09ERSgiIGluIFZhbHVlOg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWx2YWx1ZSA9 IFZhbHVlLnN0cmlwKClbNjotMl0gIyAie0NPREUoIikucnN0cmlwKCIpfSINCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICBDQXBwICs9ICJzdGF0aWMgJXMgJXNfJXNfJXNfJXNfVmFsdWUlcyA9 ICVzO1xuIiAlDQo+KFBjZC5CYXNlRGF0dW1UeXBlLFBjZC5Ub2tlblNwYWNlR3VpZENOYW1lLFBj ZC5Ub2tlbkNOYW1lLHNrdW5hbQ0KPmUsZGVmYXVsdHN0b3JlLERlbWVzaW9uLHJlYWx2YWx1ZSkN Cj4+IC0gICAgICAgICAgICBlbHNlOg0KPj4gLSAgICAgICAgICAgICAgICBWYWx1ZSA9IHNrdWlu Zm8uRGVmYXVsdFZhbHVlDQo+PiAtICAgICAgICAgICAgICAgIGlmICJ7Q09ERSgiIGluIFZhbHVl Og0KPj4gLSAgICAgICAgICAgICAgICAgICAgcmVhbHZhbHVlID0gVmFsdWUuc3RyaXAoKVs2Oi0y XSAjICJ7Q09ERSgiKS5yc3RyaXAoIil9Ig0KPj4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICByZWFsdmFsdWUgPSBWYWx1ZS5zdHJpcCgpDQo+ PiAgICAgICAgICAgICAgICAgICAgICBDQXBwICs9ICJzdGF0aWMgJXMgJXNfJXNfJXNfJXNfVmFs dWUlcyA9ICVzO1xuIiAlDQo+KFBjZC5CYXNlRGF0dW1UeXBlLFBjZC5Ub2tlblNwYWNlR3VpZENO YW1lLFBjZC5Ub2tlbkNOYW1lLHNrdW5hbQ0KPmUsVEFCX0RFRkFVTFRfU1RPUkVTX0RFRkFVTFQs RGVtZXNpb24scmVhbHZhbHVlKQ0KPj4gKyAgICAgICAgZWxzZToNCj4+ICsgICAgICAgICAgICBp ZiAie0NPREUoIiBpbiBQY2QuRGVmYXVsdFZhbHVlOg0KPj4gKyAgICAgICAgICAgICAgICByZWFs dmFsdWUgPSBQY2QuRGVmYXVsdFZhbHVlLnN0cmlwKClbNjotMl0gIyAie0NPREUoIikucnN0cmlw KCIpfSINCj4+ICsgICAgICAgICAgICBlbHNlOg0KPj4gKyAgICAgICAgICAgICAgICByZWFsdmFs dWUgPSBQY2QuRGVmYXVsdFZhbHVlLnN0cmlwKCkNCj4+ICsgICAgICAgICAgICBDQXBwICs9ICJz dGF0aWMgJXMgJXNfJXNfREVGQVVMVF9TVEFOREFSRF9WYWx1ZSVzID0gJXM7XG4iICUNCj4oUGNk LkJhc2VEYXR1bVR5cGUsUGNkLlRva2VuU3BhY2VHdWlkQ05hbWUsUGNkLlRva2VuQ05hbWUsRGVt ZXNpDQo+b24scmVhbHZhbHVlKQ0KPj4gICAgICAgICAgcmV0dXJuIENBcHANCj4+ICAgICAgZGVm IFNrdU92ZXJyaWRlVmFsdWVzRW1wdHkoc2VsZixPdmVycmlkZVZhbHVlcyk6DQo+PiAgICAgICAg ICBpZiBub3QgT3ZlcnJpZGVWYWx1ZXM6DQo+PiAgICAgICAgICAgICAgcmV0dXJuIFRydWUNCj4+ ICAgICAgICAgIGZvciBrZXkgaW4gT3ZlcnJpZGVWYWx1ZXM6DQo+PiBkaWZmIC0tZ2l0IGEvQmFz ZVRvb2xzL1Rlc3RzL1Rlc3RSZWd1bGFyRXhwcmVzc2lvbi5weQ0KPmIvQmFzZVRvb2xzL1Rlc3Rz L1Rlc3RSZWd1bGFyRXhwcmVzc2lvbi5weQ0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGlu ZGV4IDAwMDAwMDAwMDAuLjA3MTQzZDZhNzYNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL0Jh c2VUb29scy9UZXN0cy9UZXN0UmVndWxhckV4cHJlc3Npb24ucHkNCj4+IEBAIC0wLDAgKzEsNTQg QEANCj4+ICsjIyBAZmlsZQ0KPj4gKyMgUm91dGluZXMgZm9yIGdlbmVyYXRpbmcgUGNkIERhdGFi YXNlDQo+PiArIw0KPj4gKyMgQ29weXJpZ2h0IChjKSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+PiArIyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+PiArIyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj5CU0QgTGljZW5zZQ0KPj4g KyMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPmZvdW5kIGF0DQo+PiArIyBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+PiArIw0KPj4gKyMgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj5CQVNJUywN Cj4+ICsjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUg0KPkVYUFJFU1MgT1IgSU1QTElFRC4NCj4+ICsNCj4+ICtpbXBvcnQgdW5pdHRlc3QN Cj4+ICtmcm9tIENvbW1vbi5NaXNjIGltcG9ydCBSZW1vdmVDQ29tbWVudHMNCj4+ICtmcm9tIFdv cmtzcGFjZS5CdWlsZENsYXNzT2JqZWN0IGltcG9ydCBBcnJheUluZGV4DQo+PiArDQo+PiArY2xh c3MgVGVzdFJlKHVuaXR0ZXN0LlRlc3RDYXNlKToNCj4+ICsgICAgZGVmIHRlc3RfY2NvbW1lbnRz KHNlbGYpOg0KPj4gKyAgICAgICAgVGVzdFN0cjEgPSAiIiIgezB4MDEsMHgwMn0gIiIiDQo+PiAr ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0U3RyMSwgUmVtb3ZlQ0NvbW1lbnRzKFRlc3RT dHIxKSkNCj4+ICsNCj4+ICsgICAgICAgIFRlc3RTdHIyID0gIiIiIEwnVGVzdFN0cmluZycgIiIi DQo+PiArICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0U3RyMiwgUmVtb3ZlQ0NvbW1lbnRz KFRlc3RTdHIyKSkNCj4+ICsNCj4+ICsgICAgICAgIFRlc3RTdHIzID0gIiIiICdUZXN0U3RyaW5n JyAiIiINCj4+ICsgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RTdHIzLCBSZW1vdmVDQ29t bWVudHMoVGVzdFN0cjMpKQ0KPj4gKw0KPj4gKyAgICAgICAgVGVzdFN0cjQgPSAiIiINCj4+ICsg ICAgICAgICAgICB7Q09ERSh7DQo+PiArICAgICAgICAgICAgICB7MHgwMSwgezB4MDIsIDB4MDMs IDB4MDQgfX0sLy8gRGF0YSBjb21tZW50DQo+PiArICAgICAgICAgICAgICB7MHgwMSwgezB4MDIs IDB4MDMsIDB4MDQgfX0sLy8gRGF0YSBjb21tZW50DQo+PiArICAgICAgICAgICAgICB9KQ0KPj4g KyAgICAgICAgICAgIH0gIC8qDQo+PiArICAgICAgICAgICAgICAgVGhpcyBpcyBtdWx0aXBsZSBs aW5lIGNvbW1lbnRzDQo+PiArICAgICAgICAgICAgICAgVGhlIHNlY29uZGUgbGluZSBjb21tZW50 DQo+PiArICAgICAgICAgICAgICAgKi8NCj4+ICsgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY29t bWVudA0KPj4gKyAgICAgICAgIiIiDQo+PiArICAgICAgICBFeHBlY3RfVGVzdFN0cjQgPSAiIiJ7 Q09ERSh7DQo+PiArICAgICAgICAgICAgICB7MHgwMSwgezB4MDIsIDB4MDMsIDB4MDQgfX0sDQo+ PiArICAgICAgICAgICAgICB7MHgwMSwgezB4MDIsIDB4MDMsIDB4MDQgfX0sDQo+PiArICAgICAg ICAgICAgICB9KQ0KPj4gKyAgICAgICAgICAgIH0iIiINCj4+ICsgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKEV4cGVjdF9UZXN0U3RyNCwNCj5SZW1vdmVDQ29tbWVudHMoVGVzdFN0cjQpLnN0cmlw KCkpDQo+PiArDQo+PiArICAgIGRlZiBUZXN0X0FycmF5SW5kZXgoc2VsZik6DQo+PiArICAgICAg ICBUZXN0U3RyMSA9ICIiIlsxXSIiIg0KPj4gKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydb MV0nXSwgQXJyYXlJbmRleC5maW5kYWxsKFRlc3RTdHIxKSkNCj4+ICsNCj4+ICsgICAgICAgIFRl c3RTdHIyID0gIiIiWzFdWzJdWzB4MV1bMHgwMV1bXSIiIg0KPj4gKyAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMoWydbMV0nLCdbMl0nLCdbMHgxXScsJ1sweDAxXScsJ1tdJ10sDQo+QXJyYXlJbmRl eC5maW5kYWxsKFRlc3RTdHIyKSkNCj4+ICsNCj4+ICtpZiBfX25hbWVfXyA9PSAnX19tYWluX18n Og0KPj4gKyAgICB1bml0dGVzdC5tYWluKCkNCj4+DQo=