From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web12.10251.1603897065290684251 for ; Wed, 28 Oct 2020 07:57:45 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=waHtHgAg; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: bob.c.feng@intel.com) IronPort-SDR: 2OHB9ifWkRSqqaHVDV9SZ0gpOa01flQWYlK0oZVw/NsBF3hyPr3sgzJHRpM98kHif343EA0TpK rOHIC7Bz6veA== X-IronPort-AV: E=McAfee;i="6000,8403,9788"; a="148126707" X-IronPort-AV: E=Sophos;i="5.77,426,1596524400"; d="scan'208";a="148126707" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Oct 2020 07:57:44 -0700 IronPort-SDR: W100mgrV0siDfs9Om8PFd+FDnbfk8ZXN8ZrsVtpJeTNOpgajsSeJvAldAXSlPvN/gG8+pyL3F2 7l3Ydc5tczXg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,426,1596524400"; d="scan'208";a="536256897" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga005.jf.intel.com with ESMTP; 28 Oct 2020 07:57:44 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 28 Oct 2020 07:57:43 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 28 Oct 2020 07:57:43 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.106) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 28 Oct 2020 07:57:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bKnRM2DB1r/N4Z+U2nBRXJi3H/fqQMMz0ADYkH1jFZJMi1r2UYEIQHSNXQdTT6HSoSYuRYb+vISgzpCLG8xMfOcUxU5BI4BxKyF29kVv1mA6vEbwgiPkdVba/OeEmglH2iqxd+AyOPvOs76+eMl3lX68N0zUOhxmLLwL2A9Ic/gsCAWwU0Dzff66I6S+c6T4fJIaMTsWwEmoCOBbMiugvX0VLZLYw5C0QZyUszLAA4TpQ8uCq4VfYpOTezM5SbTu4Ku9UsnemhIPCibC16J9683fvqvSc3plbB9VKdll/1VO4baqNM1Qj2+M8QOkKHePOmHUaXyKlKaSGf2yWGneoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=27mTXPiFWy6XhvcipVqKv7vXsYCgEfyY8C8ikdBl2IQ=; b=RpNo/WWQjD8Fx6uPIYrGOYjU1HXRL3q1NUFq9WtzDJ8YaKhLKnSffFG6cqLHXXcCiomCml43rP25+3kApAyIDxeHh2lNIQTEGXpVAoHRMk5xHejMzsScAu8sTwYgZLJPOxKWm5yIubrdnpKW3GLe7HhRLda9dY5iUDSykHECoUemjuf3utfZtX56+zLVNTHECrHLNzF2gXM4TRX8AjxXCWbpqUwwKzyXfWvZjMEOxbcAUAxcNvPCNBKgcs3qAXHAR62yWbn54m2e26XgPSC3n/k/p1JxqPwSqNTCMtC3xZqAxkWZLwyd02M1e8LOME4gObMeKUGbXI8O1oVM8DjAlw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=27mTXPiFWy6XhvcipVqKv7vXsYCgEfyY8C8ikdBl2IQ=; b=waHtHgAgrDLGu3Qg8/oV449VoDKb8iibtZ1LcM0Cf0Hrf0aeuOdGs80SIxfzJdPzyr3uKcb5tDMhZcA45s8gDPWWvWymHhuJLphW7BLvw8owBRS4OU6nKqqIQ8OLrQwKgy0Wi46vLNkSpy/xfa1wmkR9EPjyM6Altq82Xua6SYk= Received: from DM6PR11MB4073.namprd11.prod.outlook.com (2603:10b6:5:19f::22) by DM5PR11MB1675.namprd11.prod.outlook.com (2603:10b6:4:d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.27; Wed, 28 Oct 2020 14:57:41 +0000 Received: from DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::cd42:ed68:e66a:1eaa]) by DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::cd42:ed68:e66a:1eaa%7]) with mapi id 15.20.3499.019; Wed, 28 Oct 2020 14:57:41 +0000 From: "Bob Feng" To: Laszlo Ersek , "devel@edk2.groups.io" , "Liang, MingyueX" CC: Liming Gao , "Chen, Christine" , "Ard Biesheuvel (ARM address)" Subject: Re: [edk2-devel] [PATCH] BaseTools: Limit command line length. Thread-Topic: [edk2-devel] [PATCH] BaseTools: Limit command line length. Thread-Index: AQHWqOjFanVMaM/mJkSQ5PS6kNR3pamrXvSAgAGUIKA= Date: Wed, 28 Oct 2020 14:57:40 +0000 Message-ID: References: <20201023030043.1047-1-mingyuex.liang@intel.com> <7466e3f1-6190-cf5c-3cf6-cec369dbb3a9@redhat.com> In-Reply-To: <7466e3f1-6190-cf5c-3cf6-cec369dbb3a9@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0427df17-58f1-43ba-88c9-08d87b51d185 x-ms-traffictypediagnostic: DM5PR11MB1675: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:586; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tGIYf8VYvDpEzMg4vCMFWTkpevIrPqByha9AS30RDGrBwNRDST0XEL7MIu6y4ZBu9dSkPlQ9a/4uF0hVIoChxxG3u1FJU6eV5RXNtgnl/IPvAfz/0VOE+GH9nH2T7qAPyPrkfGxO3ZzKLmSfQwk+9GQ1Sy0Z8qH6yZm9wy1jBBhXaNbijbtHxOAxUYtPwNjWv7xmOGofKpdvHRr8bT2i1krZL6DGAdTj7jK6vU49fPKMkjyOsO1sKLU6n2QZx9dbC3kNUixyv19YR0rFGJvmvZYJHwM+jlJS4O+tLh1s6ZEYSnH9EcVNKwNu9vTaTdjNxHyFkmpRc2R1uvNixgcIa6HapMmLr+ibIQrLvZ0Yx7qeu0+/ZC9D/jpVMGm0G1qs/f6ArxuzJIC8E0tISQUyuOjt53+/gv2sdsjZn2+lDXMLmsMG5fsQClcIUhUEbfy7K/GbpFlrqGDNLXZABwP5/w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4073.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(366004)(136003)(346002)(396003)(376002)(316002)(54906003)(110136005)(186003)(86362001)(83380400001)(26005)(966005)(2906002)(478600001)(9686003)(55016002)(6636002)(52536014)(64756008)(66556008)(66476007)(66946007)(66446008)(76116006)(33656002)(8676002)(8936002)(71200400001)(53546011)(6506007)(4326008)(7696005)(5660300002)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: PRf8kVGGNdWMoNCIxUc/Fg9ivIvX8EC/4jkowi9bYx4/FWWSrvJZ26cVwKId0FbayvE4vklwWkTIZ4/7KD1PHsKseQjqlz3AptSnQop4KhkccinKgS5WWNUJTkHRl2vlhDQIGf2GvQ7/Ygdt9r6YQ6wgiTFhXTXmTQwDQ3/UqOrs04p7Y/GtdZURpjkhSfwfO6Mv4WjR8ntJxL9TiqQsdLj/NcEndArO7yDYXHpoBkKWPHAocA8eZvoV4lYsxbQyR6W5Fv8ywMtBJ04S8+N+sAadW07otctA4oO9pqTkcL7XFCfg2XAIvIEHW3V3ALDBJwxtK5G1SJmnbCvqVznkQ8cx/0vXHYuNtFEBqnVhgo4LKIfDXS9xizQqPWdjXC4RuwiQ8lePtE/1HRPoGOHaHU/rHhUCuwBuOpk65tpjaIvl5ruJttK7x7vElHEMk6v8ch5gL7lHmNkXcmuKUSY5zEArtjgldCdsKukXt0TIJL4SBuXkgZ0XRHxiCoq1xjudcFmKSN2Dxy2wTINrWHkYy0JkC+h8qPfvboLj3OsnyPZXALzGfh9JexetKLiYMr2s7eo+OgLK/IPyEZ+4ooBFnfwTMiin1z55R3ebdfu8EGIAx2YRi+K0oyWTIckOhoy3K+AoFNFv3pts6ny+HZ5c5g== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4073.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0427df17-58f1-43ba-88c9-08d87b51d185 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2020 14:57:40.9112 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +WZCdHWbO4rIjprWosd3drjLVK8q1DNXyOc6HZJBYb4t274vwyzQqYoEaNgiCA0pthFz3r45zRYk9lohYOZGMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1675 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvLA0KDQoxKSBJIHRyeSB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24uDQpUaGlzIHBy b2JsZW0gaGFwcGVucyBiZWNhdXNlIG9mIHRoZSBjb21taXQgU0hBLTE6IDA1MjE3ZDIxMGU4ZGEz N2I0N2QwYmU1OGVjMzYzZjdhZjJmYTFjMTguIFRoaXMgY29tbWl0IGNoYW5nZXMgdGhlIGNvbXBp bGF0aW9uIGNvbW1hbmQgZnJvbSBvbmUgY29tbWFuZCBjb21waWxlcyBvbmUgYyBmaWxlIHRvIG9u ZSBjb21tYW5kIGNvbXBpbGUgbXVsdGlwbGUgYyBmaWxlcy4gVGhhdCBjaGFuZ2UgcmVkdWNlcyB0 aGUgY29tcGlsYXRpb24gdGltZSBmb3IgTVNWQyB0b29sY2hhaW4gYnV0IGl0IGluY3JlYXNlcyB0 aGUgbGVuZ3RoIG9mIG9uZSBjb21waWxhdGlvbiBjb21tYW5kIGxpbmUuIFNpbmNlIHRoZSBidWls ZCB0b29sIGNhbiBhdXRvc2F2ZSB0aGUgRkxBR1MgYW5kIElOQyB0byB0aGUgcmVzcG9uc2UgZmls ZSBpZiB0aGUgY29tbWFuZCBsaW5lIGxlbmd0aCBsYXJnZXIgdGhhbiAtLWNtZC1sZW4sIHRoZXJl IGlzIG5vIHByb2JsZW0gZm9yIG5vcm1hbCBidWlsZCB1c2FnZS4NCg0KQnV0IGZvciB0aGUgY2Fz ZSBpbiBCWjI1MjgsIHVzZXIgYXBwZW5kIGFkZGl0aW9uYWwgc3RyaW5nIHRvIHRoZSBjb21waWxh dGlvbiBjb21tYW5kLCB0aGF0IGlzIGFkZGluZyBhbm90aGVyIHRvb2wgdG8gbGF1bmNoIHRoZSBj b21waWxlci4NCjxwYXRoX3RvX290aGVyX3Rvb2w+L3Rvb2wucHkgICA8cGF0aF90b19tc3ZjPi9j bC5leGUgLi4uDQpTbyB0aGUgaXQncyBlYXN5IHRvIGV4Y2VlZCB0aGUgbWF4IGxlbmd0aCBvZiBj b21tYW5kIGxpbmUgYW5kIGNhdXNlIGJ1aWxkIGZhaWx1cmUuDQoNClRoaXMgcGF0Y2ggaXMgdG8g c2F2ZSB0aGUgYyBmaWxlcyBpbiBhbm90aGVyIHJlc3BvbnNlIGZpbGUgdG8gbWFrZSB0aGUgY29t cGlsYXRpb24gY29tbWFuZCBzaG9ydGVyLg0KDQoyKSAiLS1jbWQtbGVuIiBpcyBzdGlsbCBmdW5j dGlvbmFsLg0KDQpUaGFua3MsDQpCb2INCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZy b206IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+IA0KU2VudDogVHVlc2RheSwgT2N0 b2JlciAyNywgMjAyMCA3OjU4IFBNDQpUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IExpYW5nLCBN aW5neXVlWCA8bWluZ3l1ZXgubGlhbmdAaW50ZWwuY29tPg0KQ2M6IEZlbmcsIEJvYiBDIDxib2Iu Yy5mZW5nQGludGVsLmNvbT47IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47 IENoZW4sIENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+OyBBcmQgQmllc2hldXZlbCAo QVJNIGFkZHJlc3MpIDxhcmQuYmllc2hldXZlbEBhcm0uY29tPg0KU3ViamVjdDogUmU6IFtlZGsy LWRldmVsXSBbUEFUQ0hdIEJhc2VUb29sczogTGltaXQgY29tbWFuZCBsaW5lIGxlbmd0aC4NCg0K KCtBcmQpDQoNCk9uIDEwLzIzLzIwIDA1OjAwLCBtbGlhbmcyeCB3cm90ZToNCj4gUkVGOiBodHRw czovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTI1MjgNCj4gDQo+IEN1 cnJlbnRseSwgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyBiZWNhdXNlIHRoZSBDTCBjb21t YW5kIGlzIA0KPiBmb2xsb3dlZCBieSBtdWx0aXBsZSBDIGZpbGVzLg0KPiANCj4gVGhlcmVmb3Jl LCB0aGUgbnVtYmVyIG9mIEMgZmlsZXMNCj4gY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRo ZXIgdGhlIGNvbW1hbmQgbGluZSBuZWVkcyB0byBiZSB3cml0dGVuIA0KPiB0byB0aGUgZmlsZS4g SWYgdGhlIG51bWJlciBvZiBDIGZpbGVzIGlzIGdyZWF0ZXIgdGhhbiBvbmUsIHRoZSBjb21tYW5k IA0KPiBsaW5lIGlzIGRpcmVjdGx5IHdyaXR0ZW4gdG8gdGhlIGZpbGUuIE9uIHRoZSBjb250cmFy eSwgd2hldGhlciB0byANCj4gd3JpdGUgdG8gdGhlIGZpbGUgaXMgZGV0ZXJtaW5lZCBieSB3aGV0 aGVyIHRoZSBsZW5ndGggb2YgdGhlIGNvbW1hbmQgDQo+IGxpbmUgZXhjZWVkcyB0aGUgbGltaXRl ZCBsZW5ndGggRG9jdW1lbnRzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWluZ3l1ZSBMaWFuZyA8 bWluZ3l1ZXgubGlhbmdAaW50ZWwuY29tPg0KPiBDYzogQm9iIEZlbmcgPGJvYi5jLmZlbmdAaW50 ZWwuY29tPg0KPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiBD YzogWXV3ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5ICAgIHwgNDUgKysrKysrKysrKysrKysr LS0tLQ0KPiAgLi4uL1NvdXJjZS9QeXRob24vQXV0b0dlbi9JbmNsdWRlc0F1dG9HZW4ucHkgIHwg MTMgKysrKystDQo+ICAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDkgZGVsZXRp b25zKC0pDQoNCigxKSBJJ3ZlIHJlYWQgYm90aCBCWiMyNTI4ICh1cCB0byBjb21tZW50IDEzKSwg YW5kIHRoZSBhYm92ZSBjb21taXQgbWVzc2FnZSB0b28uDQoNCkkgc3RpbGwgZG9uJ3QgaGF2ZSB0 aGUgc2xpZ2h0ZXN0IGlkZWEgd2hhdCB0aGUgcHJvYmxlbSBpcy4gUGxlYXNlIGNsYXJpZnkuDQoN CigyKSBIb3cgZG8gdGhpcyBwYXRjaCAoYW5kIHRoaXMgaXNzdWUpIHJlbGF0ZSB0byB0aGUgIi0t Y21kLWxlbiIgb3B0aW9uPw0KDQoNClRoZSBidWd6aWxsYSB0aWNrZXQgc2F5cyB0aGUgaXNzdWUg aXMgcmVsYXRlZCB0byBNU1ZDLCBhbmQgdGhhdCBpdCB3YXMgZXhwb3NlZCBieSBmaXhpbmcgQloj MTY3MiAoIkVuYWJsZSBtdWx0aXBsZSB0aHJlYWQgZm9yIE1TVkMgY29tcGlsZXIiKS4NCkJ1dCwg YXQgbGVhc3Qgc3VwZXJmaWNpYWxseSwgdGhlIGRpZmZzdGF0IGFuZCB0aGUgcGF0Y2ggYm9keSBz ZWVtIHRvIGJlIG1vcmUgZ2VuZXJpYy4gV2hhdCBJIHJlYWxseSBjYXJlIGFib3V0IGlzIHRoYXQg dGhlIGdjYyBjb21tYW5kIGxpbmVzIHNob3VsZCBub3QgY2hhbmdlLiBJdCdzIGFubm95aW5nIHRv IGxvb2sgYXQgYSBidWlsZCBsb2cgYW5kIHNlZSByZWZlcmVuY2VzIHRvICJjY19yZXNwIiB0ZXh0 IGZpbGVzLCByYXRoZXIgdGhhbiB0aGUgYWN0dWFsIGNvbW1hbmQgbGluZXMuIE15IGJ1aWxkIHNj cmlwdHMgdXNlICItLWNtZC1sZW49NjU1MzYiIGZvciB0aGF0IHJlYXNvbiAtLSBpcyB0aGlzIHBh dGNoIGdvaW5nIHRvIGtlZXAgdGhhdCBmdW5jdGlvbmFsPw0KDQpUaGFua3MsDQpMYXN6bG8NCg0K PiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vR2VuTWFr ZS5weSANCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0dlbk1ha2UucHkNCj4g aW5kZXggMDMxNGQwZWEzNC4uMGNiOTdkYzE4ZCAxMDA3NTUNCj4gLS0tIGEvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0F1dG9HZW4vR2VuTWFrZS5weQ0KPiBAQCAtNTc2LDcgKzU3Niw4IEBAIGNsZWFubGli Og0KPiAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCJidWlsZCIsIEFVVE9HRU5fRVJST1Is ICJOb3RoaW5nIHRvIGJ1aWxkIiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRy YURhdGE9Ilslc10iICUgc3RyKE15QWdvKSkNCj4gIA0KPiAtICAgICAgICBzZWxmLlByb2Nlc3NC dWlsZFRhcmdldExpc3QoKQ0KPiArICAgICAgICBzZWxmLlByb2Nlc3NCdWlsZFRhcmdldExpc3Qo TXlBZ28uT3V0cHV0RGlyLFRvb2xzRGVmKQ0KPiArDQo+ICAgICAgICAgIHNlbGYuUGFyc2VyR2Vu ZXJhdGVGZnNDbWQoKQ0KPiAgDQo+ICAgICAgICAgICMgR2VuZXJhdGUgbWFjcm9zIHVzZWQgdG8g cmVwcmVzZW50IGlucHV0IGZpbGVzIEBAIC04NjYsNyANCj4gKzg2Nyw2IEBAIGNsZWFubGliOg0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVDb21tYW5kTGVuZ3RoICs9IGxlbihT dHIpDQo+IC0NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTaW5nbGVDb21tYW5k TGVuZ3RoID4gR2xvYmFsRGF0YS5nQ29tbWFuZE1heExlbmd0aDoNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRmxhZ0RpY3RbVG9vbF1bJ1ZhbHVlJ10gPSBUcnVlDQo+ICANCj4g QEAgLTg5MCwxOCArODkwLDE4IEBAIGNsZWFubGliOg0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl Og0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaw0KPiAtDQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9BdXRvR2VuT2JqZWN0LlRvb2xDaGFpbkZhbWls eSA9PSAnR0NDJzoNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwRGljdFtLZXld ID0gVmFsdWUucmVwbGFjZSgnXFwnLCAnLycpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBl bHNlOg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BEaWN0W0tleV0gPSBWYWx1 ZQ0KPiArDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgVGFyZ2V0IGluIEJ1aWxkVGFy Z2V0czoNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSwgU2luZ2xlQ29tbWFu ZCBpbiBlbnVtZXJhdGUoQnVpbGRUYXJnZXRzW1RhcmdldF0uQ29tbWFuZHMpOg0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBGbGFnRGljdFtGbGFnXVsnTWFjcm8nXSBpbiBT aW5nbGVDb21tYW5kOg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVp bGRUYXJnZXRzW1RhcmdldF0uQ29tbWFuZHNbaV0gPSBTaW5nbGVDb21tYW5kLnJlcGxhY2UoJyQo SU5DKScsICcnKS5yZXBsYWNlKEZsYWdEaWN0W0ZsYWddWydNYWNybyddLCBSZXNwTWFjcm8pDQo+ ICAgICAgICAgIHJldHVybiBSZXNwRGljdA0KPiAgDQo+IC0gICAgZGVmIFByb2Nlc3NCdWlsZFRh cmdldExpc3Qoc2VsZik6DQo+ICsgICAgZGVmIFByb2Nlc3NCdWlsZFRhcmdldExpc3Qoc2VsZiwg UmVzcEZpbGUsIFRvb2xzRGVmKToNCj4gICAgICAgICAgIw0KPiAgICAgICAgICAjIFNlYXJjaCBk ZXBlbmRlbmN5IGZpbGUgbGlzdCBmb3IgZWFjaCBzb3VyY2UgZmlsZQ0KPiAgICAgICAgICAjDQo+ IEBAIC0xMDAyLDYgKzEwMDIsNyBAQCBjbGVhbmxpYjoNCj4gICAgICAgICAgICAgICAgICAgICAg c2VsZi5PYmpUYXJnZXREaWN0W1QuVGFyZ2V0LlN1YkRpcl0gPSBzZXQoKQ0KPiAgICAgICAgICAg ICAgICAgIHNlbGYuT2JqVGFyZ2V0RGljdFtULlRhcmdldC5TdWJEaXJdLmFkZChOZXdGaWxlKQ0K PiAgICAgICAgICBmb3IgVHlwZSBpbiBzZWxmLl9BdXRvR2VuT2JqZWN0LlRhcmdldHM6DQo+ICsg ICAgICAgICAgICByZXNwX2ZpbGVfbnVtYmVyID0gMA0KPiAgICAgICAgICAgICAgZm9yIFQgaW4g c2VsZi5fQXV0b0dlbk9iamVjdC5UYXJnZXRzW1R5cGVdOg0KPiAgICAgICAgICAgICAgICAgICMg R2VuZXJhdGUgcmVsYXRlZCBtYWNyb3MgaWYgbmVlZGVkDQo+ICAgICAgICAgICAgICAgICAgaWYg VC5HZW5GaWxlTGlzdE1hY3JvIGFuZCBULkZpbGVMaXN0TWFjcm8gbm90IGluIHNlbGYuRmlsZUxp c3RNYWNyb3M6DQo+IEBAIC0xMDQzLDcgKzEwNDQsOCBAQCBjbGVhbmxpYjoNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgIERlcHMuYXBwZW5kKCIkKCVzKSIgJSBULkxpc3RGaWxlTWFjcm8pDQo+ ICANCj4gICAgICAgICAgICAgICAgICBpZiBzZWxmLl9BdXRvR2VuT2JqZWN0LkJ1aWxkUnVsZUZh bWlseSA9PSBUQUJfQ09NUElMRVJfTVNGVCBhbmQgVHlwZSA9PSBUQUJfQ19DT0RFX0ZJTEU6DQo+ IC0gICAgICAgICAgICAgICAgICAgIFQsIENtZFRhcmdldCwgQ21kVGFyZ2V0RGljdCwgQ21kQ3Bw RGljdCA9IHNlbGYuUGFyc2VyQ0NvZGVGaWxlKFQsIFR5cGUsIENtZFN1bURpY3QsIENtZFRhcmdl dERpY3QsIENtZENwcERpY3QsIERlcGVuZGVuY3lEaWN0KQ0KPiArICAgICAgICAgICAgICAgICAg ICBULCBDbWRUYXJnZXQsIENtZFRhcmdldERpY3QsIENtZENwcERpY3QgPSBzZWxmLlBhcnNlckND b2RlRmlsZShULCBUeXBlLCBDbWRTdW1EaWN0LCBDbWRUYXJnZXREaWN0LCBDbWRDcHBEaWN0LCBE ZXBlbmRlbmN5RGljdCwgUmVzcEZpbGUsIFRvb2xzRGVmLCByZXNwX2ZpbGVfbnVtYmVyKQ0KPiAr ICAgICAgICAgICAgICAgICAgICByZXNwX2ZpbGVfbnVtYmVyICs9IDENCj4gICAgICAgICAgICAg ICAgICAgICAgVGFyZ2V0RGljdCA9IHsidGFyZ2V0Ijogc2VsZi5QbGFjZU1hY3JvKFQuVGFyZ2V0 LlBhdGgsIHNlbGYuTWFjcm9zKSwgImNtZCI6ICJcblx0Ii5qb2luKFQuQ29tbWFuZHMpLCJkZXBz IjogQ0NvZGVEZXBzfQ0KPiAgICAgICAgICAgICAgICAgICAgICBDbWRMaW5lID0gc2VsZi5fQlVJ TERfVEFSR0VUX1RFTVBMQVRFLlJlcGxhY2UoVGFyZ2V0RGljdCkucnN0cmlwKCkucmVwbGFjZSgn XHQkKE9CSkxJU1QnLCAnJChPQkpMSVNUJykNCj4gICAgICAgICAgICAgICAgICAgICAgaWYgVC5D b21tYW5kczoNCj4gQEAgLTEwNjAsNyArMTA2Miw3IEBAIGNsZWFubGliOg0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgQW5uZXhlVGFyZ2V0RGljdCA9IHsidGFyZ2V0Ijogc2VsZi5QbGFjZU1h Y3JvKGkuUGF0aCwgc2VsZi5NYWNyb3MpLCAiY21kIjogIiIsICJkZXBzIjogc2VsZi5QbGFjZU1h Y3JvKFQuVGFyZ2V0LlBhdGgsIHNlbGYuTWFjcm9zKX0NCj4gICAgICAgICAgICAgICAgICAgICAg ICAgIA0KPiBzZWxmLkJ1aWxkVGFyZ2V0TGlzdC5hcHBlbmQoc2VsZi5fQlVJTERfVEFSR0VUX1RF TVBMQVRFLlJlcGxhY2UoQW5uZXhlDQo+IFRhcmdldERpY3QpKQ0KPiAgDQo+IC0gICAgZGVmIFBh cnNlckNDb2RlRmlsZShzZWxmLCBULCBUeXBlLCBDbWRTdW1EaWN0LCBDbWRUYXJnZXREaWN0LCBD bWRDcHBEaWN0LCBEZXBlbmRlbmN5RGljdCk6DQo+ICsgICAgZGVmIFBhcnNlckNDb2RlRmlsZShz ZWxmLCBULCBUeXBlLCBDbWRTdW1EaWN0LCBDbWRUYXJnZXREaWN0LCBDbWRDcHBEaWN0LCBEZXBl bmRlbmN5RGljdCwgUmVzcEZpbGUsIFRvb2xzRGVmLCByZXNwX2ZpbGVfbnVtYmVyKToNCj4gICAg ICAgICAgaWYgbm90IENtZFN1bURpY3Q6DQo+ICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzZWxm Ll9BdXRvR2VuT2JqZWN0LlRhcmdldHNbVHlwZV06DQo+ICAgICAgICAgICAgICAgICAgQ21kU3Vt RGljdFtpdGVtLlRhcmdldC5TdWJEaXJdID0gaXRlbS5UYXJnZXQuQmFzZU5hbWUgDQo+IEBAIC0x MDgwLDYgKzEwODIsNyBAQCBjbGVhbmxpYjoNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ21kQ3BwRGljdFtpdGVtLlRhcmdldC5TdWJEaXJdLmFwcGVuZChQYXRoKQ0KPiAgICAg ICAgICBpZiBULkNvbW1hbmRzOg0KPiAgICAgICAgICAgICAgQ29tbWFuZExpc3QgPSBULkNvbW1h bmRzWzpdDQo+ICsgICAgICAgICAgICBTYXZlRmlsZVBhdGggPSBvcy5wYXRoLmpvaW4oUmVzcEZp bGUsICJjY19yZXNwXyVzLnR4dCIgJSANCj4gKyByZXNwX2ZpbGVfbnVtYmVyKQ0KPiAgICAgICAg ICAgICAgZm9yIEl0ZW0gaW4gQ29tbWFuZExpc3RbOl06DQo+ICAgICAgICAgICAgICAgICAgU2lu Z2xlQ29tbWFuZExpc3QgPSBJdGVtLnNwbGl0KCkNCj4gICAgICAgICAgICAgICAgICBpZiBsZW4o U2luZ2xlQ29tbWFuZExpc3QpID4gMCBhbmQgc2VsZi5DaGVja0NDQ21kKFNpbmdsZUNvbW1hbmRM aXN0KToNCj4gQEAgLTEwODcsMTkgKzEwOTAsNDUgQEAgY2xlYW5saWI6DQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBUZW1wLnN0YXJ0c3dpdGgoJy9GbycpOg0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENtZFNpZ24gPSAnJXMlcycgJSAoVGVtcC5yc3BsaXQoVEFCX1NMQVNI LCAxKVswXSwgVEFCX1NMQVNIKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr DQo+IC0gICAgICAgICAgICAgICAgICAgIGVsc2U6IGNvbnRpbnVlDQo+ICsgICAgICAgICAgICAg ICAgICAgIGVsc2U6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KPiAgICAg ICAgICAgICAgICAgICAgICBpZiBDbWRTaWduIG5vdCBpbiBsaXN0KENtZFRhcmdldERpY3Qua2V5 cygpKToNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIENtZFRhcmdldERpY3RbQ21kU2lnbl0g PSBJdGVtLnJlcGxhY2UoVGVtcCwgQ21kU2lnbikNCj4gICAgICAgICAgICAgICAgICAgICAgZWxz ZToNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIENtZFRhcmdldERpY3RbQ21kU2lnbl0gPSAi JXMgJXMiICUgDQo+IChDbWRUYXJnZXREaWN0W0NtZFNpZ25dLCBTaW5nbGVDb21tYW5kTGlzdFst MV0pDQo+ICsNCj4gICAgICAgICAgICAgICAgICAgICAgSW5kZXggPSBDb21tYW5kTGlzdC5pbmRl eChJdGVtKQ0KPiAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTGlzdC5wb3AoSW5kZXgpDQo+ ICAgICAgICAgICAgICAgICAgICAgIGlmIFNpbmdsZUNvbW1hbmRMaXN0Wy0xXS5lbmRzd2l0aCgi JXMlcy5jIiAlIChUQUJfU0xBU0gsIENtZFN1bURpY3RbQ21kU2lnblszOl0ucnNwbGl0KFRBQl9T TEFTSCwgMSlbMF1dKSk6DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBDcHBsaXN0ID0gQ21k Q3BwRGljdFtULlRhcmdldC5TdWJEaXJdDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBDcHBs aXN0Lmluc2VydCgwLCAnJChPQkpMSVNUXyVkKTogJyAlIGxpc3Qoc2VsZi5PYmpUYXJnZXREaWN0 LmtleXMoKSkuaW5kZXgoVC5UYXJnZXQuU3ViRGlyKSkNCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgIFQuQ29tbWFuZHNbSW5kZXhdID0gJyVzXG5cdCVzJyAlICgnIFxcXG5cdCcuam9pbihDcHBs aXN0KSwgQ21kVGFyZ2V0RGljdFtDbWRTaWduXSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGNtZHRhcmdldGxpc3QgPSBDbWRUYXJnZXREaWN0W0NtZFNpZ25dLnNwbGl0KCIgIikNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IFNvdXJjZSBmaWxlcyBhbmQgU2F2ZSByZXNwIGZp bGUuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjX2ZpbGVzID0gW10NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGNtZHMgPSBbXQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYg Y21kdGFyZ2V0bGlzdDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBp biBjbWR0YXJnZXRsaXN0Og0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBp dGVtLnN0YXJ0c3dpdGgoJyQoJykgb3IgaXRlbS5zdGFydHN3aXRoKCcvRm8nKSBvciBpdGVtLnN0 YXJ0c3dpdGgoJyIkKCcpOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y21kcy5hcHBlbmQoaXRlbSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg aXRlbS5lbmRzd2l0aCgnLmMnKToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNfZmlsZXMuYXBwZW5kKGl0ZW0pDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y19maWxlcy5pbnNlcnQoMCwgIiAiKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IGxlbihjX2ZpbGVzKSA+IDI6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNh dmVGaWxlT25DaGFuZ2UoU2F2ZUZpbGVQYXRoLCIgIi5qb2luKGNfZmlsZXMpLCBGYWxzZSkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVC5Db21tYW5kc1tJbmRleF0gPSAnJXNc blx0JXMgJChjY19yZXNwXyVzKScgJSAoJyBcXFxuXHQnLmpvaW4oQ3BwbGlzdCksICIgIi5qb2lu KGNtZHMpLCByZXNwX2ZpbGVfbnVtYmVyKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUb29sc0RlZi5hcHBlbmQoImNjX3Jlc3BfJXMgPSBAJXMiICUgDQo+ICsgKHJlc3BfZmls ZV9udW1iZXIsIFNhdmVGaWxlUGF0aCkpDQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbGlmIGxlbihDbWRUYXJnZXREaWN0W0NtZFNpZ25dKSA+IEdsb2JhbERhdGEuZ0NvbW1h bmRNYXhMZW5ndGggYW5kIGxlbihjX2ZpbGVzKSA8PTI6DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNhdmVGaWxlT25DaGFuZ2UoU2F2ZUZpbGVQYXRoLCAiICIuam9pbihjX2Zp bGVzKSwgRmFsc2UpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQuQ29tbWFu ZHNbSW5kZXhdID0gJyVzXG5cdCVzICQoY2NfcmVzcF8lcyknICUgKCcgXFxcblx0Jy5qb2luKENw cGxpc3QpLCAiICIuam9pbihjbWRzKSwgcmVzcF9maWxlX251bWJlcikNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVG9vbHNEZWYuYXBwZW5kKCJjY19yZXNwXyVzID0gQCVzIiAl IA0KPiArIChyZXNwX2ZpbGVfbnVtYmVyLCBTYXZlRmlsZVBhdGgpKQ0KPiArDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVC5Db21tYW5kc1tJbmRleF0gPSAnJXNcblx0JXMnICUgKCcgDQo+ICsgXFxcblx0Jy5q b2luKENwcGxpc3QpLCBDbWRUYXJnZXREaWN0W0NtZFNpZ25dKQ0KPiArDQo+ICAgICAgICAgICAg ICAgICAgICAgIGVsc2U6DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBULkNvbW1hbmRzLnBv cChJbmRleCkNCj4gKw0KPiAgICAgICAgICByZXR1cm4gVCwgQ21kU3VtRGljdCwgQ21kVGFyZ2V0 RGljdCwgQ21kQ3BwRGljdA0KPiAgDQo+ICAgICAgZGVmIENoZWNrQ0NDbWQoc2VsZiwgQ29tbWFu ZExpc3QpOg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9J bmNsdWRlc0F1dG9HZW4ucHkgDQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9J bmNsdWRlc0F1dG9HZW4ucHkNCj4gaW5kZXggNzIwZDkzMzk1YS4uOWY2MWQ0OWIzYSAxMDA2NDQN Cj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9JbmNsdWRlc0F1dG9HZW4u cHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9JbmNsdWRlc0F1dG9H ZW4ucHkNCj4gQEAgLTIwMyw3ICsyMDMsMTggQEAgJHtFTkR9DQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2Nfb3B0aW9ucyA9IGxpbmVbbGVuKGNjX2NtZCkrMjpdLnNwbGl0KCkNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2Nfb3B0aW9ucyA9IGxpbmVbbGVuKGNjX2NtZCk6XS5zcGxpdCgpDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlQWJzUGF0aE1hcCA9IHtvcy5wYXRoLmJhc2VuYW1l KGl0ZW0pOml0ZW0gZm9yIGl0ZW0gaW4gY2Nfb3B0aW9ucyBpZiBub3QgaXRlbS5zdGFydHN3aXRo KCIvIikgYW5kIG9zLnBhdGguZXhpc3RzKGl0ZW0pfQ0KPiArDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBmb3IgaXRlbSBpbiBjY19vcHRpb25zOg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBpdGVtLnN0YXJ0c3dpdGgoIi8iKToNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBpZiBpdGVtLnN0YXJ0c3dpdGgoIkAiKToNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgiLnR4dCIpIGFuZCBpdGVtLnN0 YXJ0c3dpdGgoIkAiKToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp dGggb3BlbihpdGVtWzE6XSwgInIiKSBhcyBmaWxlOg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlcyA9IGZpbGUucmVhZGxpbmVzKClbMF0uc3Bs aXQoKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZp bGVBYnNQYXRoTWFwID0ge29zLnBhdGguYmFzZW5hbWUoZmlsZSk6ZmlsZSBmb3IgZmlsZSBpbiBz b3VyY2VfZmlsZXMgaWYgb3MucGF0aC5leGlzdHMoZmlsZSl9DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2U6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpdGVtKToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICANCj4gKyBTb3VyY2VGaWxlQWJzUGF0aE1hcC51cGRhdGUoe29zLnBh dGguYmFzZW5hbWUoaXRlbSk6IGl0ZW0uc3RyaXAoKX0pDQo+ICsNCj4gICAgICAgICAgICAgIGlm IGxpbmUgaW4gU291cmNlRmlsZUFic1BhdGhNYXA6DQo+ICAgICAgICAgICAgICAgICAgY3VycmVu dF9zb3VyY2UgPSBsaW5lDQo+ICAgICAgICAgICAgICAgICAgaWYgY3VycmVudF9zb3VyY2Ugbm90 IGluIE1vZHVsZURlcERpY3Q6DQo+IA0KDQo=