From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web12.7732.1604457040403831407 for ; Tue, 03 Nov 2020 18:30:40 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=JHhZ3M03; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: bob.c.feng@intel.com) IronPort-SDR: TxO1APqofkYx4lPkyu6TJIUvh2euX5LG1mddXLuEPioli1jN8SII23qodgactD68eyp0LM6YQ9 a4zAAZb1GRKQ== X-IronPort-AV: E=McAfee;i="6000,8403,9794"; a="156145417" X-IronPort-AV: E=Sophos;i="5.77,449,1596524400"; d="scan'208";a="156145417" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2020 18:30:39 -0800 IronPort-SDR: kir59B1YMTFWt7dL7fH3aIk1Fnfrcoyy9wddAF9AXDFyY9k7Tv/GvdV0Za3mDddIJ4oefLjIqd k3d0fJAandFg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,449,1596524400"; d="scan'208";a="363825086" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga007.jf.intel.com with ESMTP; 03 Nov 2020 18:30:39 -0800 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 3 Nov 2020 18:30:38 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 3 Nov 2020 18:30:38 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.103) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 3 Nov 2020 18:30:38 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oSn3GHPw/yH2wXC2Ek4wBgIUuu4u6wBhijSEJVTfubpFOuq/6IGUrOdvD5U0bb1aKgscch0VPuqZ212K33SDQVLreYU5X+2kXgDD9eQBz5/PlkF5Upo9Ts9aAI8ngD27oAu7AW19OLP6LFqBvkEYKX44gpAakeWLNnEEebRZDAw1HNDanLR7/BJH3xvlu7K3qF+VnzpRbz/Vr0pC7AcfHtnYyjsQsg+2qcxAozbGGwzX658T9YNKdk/CnQnq/1OJNc1N3wSvtcAVmddmVwfTpj4ieGgL33BdujxvLFz4uWsm4zUG0ZMV3EOgVVPhLRy8/z1yds/eD2q9S6yISmdG6g== 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=GpdLb2UwuTW84FbENzjTx55aolZYR1LZtuSqIs9dn/w=; b=EsY0Q8UhQ8+4pSJVMOO602jj3ij89rCJG/YvRQvasNd8Db7iT4OLibblRafV8h6TpdK7skfXKZgkmX2ds+ZUzkXD/w6xd42x8H4xIznpx2AASYw0aCSvX0hkZRbrxQ6hjLYhFtSF2rd959mvK2zGu8UHtrtmoBJOJK2miLfa6x/4sajyw1OK8EycvnPWCQV69m0TjMyGnIpZcYIRHHZKxhCxri5umnC9IY+sRVmEI0ThmeySis4JyyhcQXm6IoyjMAqFcEWhB9MoYqlZgijf/RzOhvjm+16xQvfx8CT3W0dgmbepeh+iAiOV77J7e1FdTEDDcune50kEZ8x8/IVLiA== 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=GpdLb2UwuTW84FbENzjTx55aolZYR1LZtuSqIs9dn/w=; b=JHhZ3M03aKbyakplWyZP3HxZBnqASf3exLNopkcHMEd/MpeHPqg1eXmE/e/qFZXb4mp1vNQuHcX19xt5eenjuIaDkYgvwuxIDbXXy9cu2VvddpFNH7bR6l1CknpF0RVugRx2m8kYh7VRgRyoB9C5YTuwT5a51HAVMlLqGmauceM= Received: from DM6PR11MB4073.namprd11.prod.outlook.com (2603:10b6:5:19f::22) by DM6PR11MB3148.namprd11.prod.outlook.com (2603:10b6:5:6f::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.19; Wed, 4 Nov 2020 02:30:36 +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.032; Wed, 4 Nov 2020 02:30:36 +0000 From: "Bob Feng" To: Laszlo Ersek , "devel@edk2.groups.io" , "Liang, MingyueX" , "Liu, Shih HaoX" , "Vaish, Atul" 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/mJkSQ5PS6kNR3pamrXvSAgAGUIKCACA5zAIACSICg Date: Wed, 4 Nov 2020 02:30:36 +0000 Message-ID: References: <20201023030043.1047-1-mingyuex.liang@intel.com> <7466e3f1-6190-cf5c-3cf6-cec369dbb3a9@redhat.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0d25ac02-d28a-4bec-3b24-08d880699cd7 x-ms-traffictypediagnostic: DM6PR11MB3148: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 38ugvNqNMxdSquDcqpfcMawcspMXymHkJeSM8zKzE1yxOLNxh/QH1wLMhmJX3Kl9dkCC0RQz9iawQ4edj1ErxlsKRCBRdAvKrHeFjcAc5LgIWu9Uz7TRYcbyieyJN8Rd6OkSSp7SzeuUqUQ2WA/Lh68BH7jUwKg3TUq0adb82q8A8WEzHQPlR3woSARni/RtuCaaLUqpiscKM9XyG4ZqBhL81Nvphir5nctarbHrdaTEtmZ15rdjpM7rJboBOzCjChi6ZF7WlWEovBagmRgsnk9YSaKtZAi0qX+AfPHgF5DWvI1QceiSeubyVjjIO/5DxR0tOiFqznB+vqJqaCe8Eel0FuVAxNPdu3sD/l4xxXqLJ+b7Vtl0sMWpao4L7V4wRZ4ptu/X0mk2EefXhNtVk6sIYRv+BzLGuT6jlItz4Q3xdAOzimXWPuL8emHx17r+ZDy38hUN5L7h3D0+m3pruA== 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)(376002)(396003)(366004)(346002)(136003)(83380400001)(30864003)(86362001)(9686003)(54906003)(5660300002)(8936002)(55016002)(316002)(110136005)(6506007)(53546011)(966005)(8676002)(2906002)(7696005)(71200400001)(6636002)(76116006)(33656002)(66446008)(26005)(186003)(52536014)(4326008)(66946007)(66556008)(64756008)(66476007)(478600001)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: c02m6JItTsUG0YfBBLZNR6pb27ZiD5MmSyEXuH6hy4loN52Au1CeWusiml7apRetR3YaQg3Hc99nrWQO6L6rttfUza1iYOVBNyMvM8rpkisW2/7Cw6g81+7MiBMX8zuS5H+2CrkgdGHJ54p2rZA8xRPWPAEoftT/YSZR1LqQxcogBqAKn8qcuJ7FdDgdO2bAWelbPqrrR+6kgcGL44z3C/li+D1OYPru2M/r7A6vKm9+BclzESIdRMIolZ50cY+PXoZZ3uPqdpowCIaSMiWhKwyk9ZASW1I0Vqn0+bCINvO19ytxnyKkCE5fb0obmEPYEJpw2X9tbSTR9SjkAyEoAu76xKj0Vtj12fiFtdDisaX4UN4tU0UEhaNKGMKWDW+3ELmWjxayWV5inmMxz4P3I7gjwhxhJAWXN4lqfQB9O3/tYy1/FmF9s54oOY9m+PH1oCa6lHEAkima5ZeQZIa4yMNdcIjeop2p6yn4svOuUt/UIEnPZ7bbvW2MtXndxwLK7RDhkhVcAE1MCXipsTeCeEfNbuOKp3ZaHgNuBHRK87r8qL0ZtCjifHqCmupFHYti+ZGu0UVBbFChxtdhLL0yUyIjJEenRCuO+RN9bZ6RRv+x4fIVp7pXAcvfCTkOjp+9LNlHRCdcDh0FzB0ip9sT3w== 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: 0d25ac02-d28a-4bec-3b24-08d880699cd7 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2020 02:30:36.3058 (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: wY22ZQCMgKlD6/s5ldXuUaS6ewvEdZQAMVzQ5e97H39paMENMWd0lWlC206jbMPqHpbyCZ9OvjuvyxXkgOOL8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3148 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 TGFzemxvLA0KDQphKSBJIHRoaW5rIGl0IHdvdWxkIGJlIGEgYmV0dGVyIG9wdGlvbi4gU2hpaCBI YW8gYW5kIEF0dWwsIHdvdWxkIHlvdSB2ZXJpZnkgaWYgdGhpcyBtZXRob2Qgd29ya3M/IA0KDQpi KSBNaW5neXVlLCBwbGVhc2UgY2hlY2sgdGhpcyBxdWVzdGlvbiBhbmQgc2VlIGlmIHRoZSBwYXRj aCBuZWVkcyB0byB1cGRhdGUuIEFuZCBwbGVhc2UgdXBkYXRlIHRoZSBwYXRjaCBkZXNjcmlwdGlv biB0byBtYWtlIHRoZSBleHByZXNzaW9uIG1vcmUgY2xlYXIuDQoNClRoYW5rcywNCkJvYg0KDQot LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVk aGF0LmNvbT4gDQpTZW50OiBNb25kYXksIE5vdmVtYmVyIDIsIDIwMjAgMTE6MDYgUE0NClRvOiBG ZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg TGlhbmcsIE1pbmd5dWVYIDxtaW5neXVleC5saWFuZ0BpbnRlbC5jb20+DQpDYzogTGltaW5nIEdh byA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgQ2hlbiwgQ2hyaXN0aW5lIDx5dXdlaS5jaGVu QGludGVsLmNvbT47IEFyZCBCaWVzaGV1dmVsIChBUk0gYWRkcmVzcykgPGFyZC5iaWVzaGV1dmVs QGFybS5jb20+DQpTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSF0gQmFzZVRvb2xzOiBM aW1pdCBjb21tYW5kIGxpbmUgbGVuZ3RoLg0KDQpPbiAxMC8yOC8yMCAxNTo1NywgRmVuZywgQm9i IEMgd3JvdGU6DQo+IExhc3psbywNCj4gDQo+IDEpIEkgdHJ5IHRvIHByb3ZpZGUgbW9yZSBpbmZv cm1hdGlvbi4NCj4gVGhpcyBwcm9ibGVtIGhhcHBlbnMgYmVjYXVzZSBvZiB0aGUgY29tbWl0IFNI QS0xOiAwNTIxN2QyMTBlOGRhMzdiNDdkMGJlNThlYzM2M2Y3YWYyZmExYzE4LiBUaGlzIGNvbW1p dCBjaGFuZ2VzIHRoZSBjb21waWxhdGlvbiBjb21tYW5kIGZyb20gb25lIGNvbW1hbmQgY29tcGls ZXMgb25lIGMgZmlsZSB0byBvbmUgY29tbWFuZCBjb21waWxlIG11bHRpcGxlIGMgZmlsZXMuIFRo YXQgY2hhbmdlIHJlZHVjZXMgdGhlIGNvbXBpbGF0aW9uIHRpbWUgZm9yIE1TVkMgdG9vbGNoYWlu IGJ1dCBpdCBpbmNyZWFzZXMgdGhlIGxlbmd0aCBvZiBvbmUgY29tcGlsYXRpb24gY29tbWFuZCBs aW5lLiBTaW5jZSB0aGUgYnVpbGQgdG9vbCBjYW4gYXV0b3NhdmUgdGhlIEZMQUdTIGFuZCBJTkMg dG8gdGhlIHJlc3BvbnNlIGZpbGUgaWYgdGhlIGNvbW1hbmQgbGluZSBsZW5ndGggbGFyZ2VyIHRo YW4gLS1jbWQtbGVuLCB0aGVyZSBpcyBubyBwcm9ibGVtIGZvciBub3JtYWwgYnVpbGQgdXNhZ2Uu DQo+IA0KPiBCdXQgZm9yIHRoZSBjYXNlIGluIEJaMjUyOCwgdXNlciBhcHBlbmQgYWRkaXRpb25h bCBzdHJpbmcgdG8gdGhlIGNvbXBpbGF0aW9uIGNvbW1hbmQsIHRoYXQgaXMgYWRkaW5nIGFub3Ro ZXIgdG9vbCB0byBsYXVuY2ggdGhlIGNvbXBpbGVyLg0KPiA8cGF0aF90b19vdGhlcl90b29sPi90 b29sLnB5ICAgPHBhdGhfdG9fbXN2Yz4vY2wuZXhlIC4uLg0KPiBTbyB0aGUgaXQncyBlYXN5IHRv IGV4Y2VlZCB0aGUgbWF4IGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYW5kIGNhdXNlIGJ1aWxkIGZh aWx1cmUuDQoNClVuZGVyc3Rvb2QgLS0gdGhlIGJ1aWxkIHRvb2wgd291bGQgbm90IGNvbnNpZGVy IHRoZSB1c2VyLW9yaWdpbmF0ZWQgcHJlZml4LiBUaGUgYnVpbGQgdG9vbCB3b3VsZCBkZWNpZGUg dGhhdCB0aGUgY29tbWFuZCBpcyBzYWZlIHRvIHN0YXJ0IHdpdGhvdXQgdXNpbmcgYSByZXNwb25z ZSBmaWxlLCBidXQgdGhlIHByZWZpeCB3b3VsZCBicmVhayB0aGF0Lg0KDQo+IA0KPiBUaGlzIHBh dGNoIGlzIHRvIHNhdmUgdGhlIGMgZmlsZXMgaW4gYW5vdGhlciByZXNwb25zZSBmaWxlIHRvIG1h a2UgdGhlIGNvbXBpbGF0aW9uIGNvbW1hbmQgc2hvcnRlci4NCg0KSSBoYXZlIHR3byBxdWVzdGlv bnMgcmVnYXJkaW5nIHRoaXM6DQoNCg0KKGEpIHdvdWxkbid0IGl0IGJlIGJldHRlciB0byBjYWxj dWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgdXNlci1vcmlnaW5hdGVkIHByZWZpeCAoc3VjaCBhcyB0 aGUgbGVuZ3RoIG9mICI8cGF0aF90b19vdGhlcl90b29sPi90b29sLnB5IiksIGFuZCBzaW1wbHkg aW5jbHVkZSBpdCBpbiB0aGUgc3VtIHRoYXQgaXMgdGhlbiBjaGVja2VkIGFnYWluc3QgIi0tY21k LWxlbiI/DQoNCg0KKGIpIHJlZ2FyZGluZyB0aGUgcHJlc2VudCBwYXRjaCwgZG8gd2UgdXNlIHRo ZSBzZXBhcmF0ZSByZXNwb25zZSBmaWxlICh3aGljaCBzdG9yZXMgdGhlIEMgZmlsZSBuYW1lcykg Km9ubHkqIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBDIGZpbGVzIHBhc3NlZCB0byB0aGUgY29tcGls ZXI/IChUaGlzIHNlZW1zIHRvIGJlIGNvbmZpcm1lZCBieSB0aGUgY29tbWl0IG1lc3NhZ2UuKQ0K DQpJJ20gYXNraW5nIChiKSBiZWNhdXNlLCBhcyBJIHVuZGVyc3RhbmQsIHRoZSBtdWx0aS1DLWZp bGUgdHJpY2sgaXMgc3BlY2lmaWMgdG8gTVNWQyBpbiB0aGUgZmlyc3QgcGxhY2UsIHNvIHRoaXMg ZnVydGhlciB0d2VhayBzaG91bGQgKmFsc28qIGJlIHNwZWNpZmljIHRvIE1TVkMuIChXaXRoIEdD QywgdGhlcmUgaXMgbmV2ZXIgbW9yZSB0aGFuIDEgQyBmaWxlIG9uIGEgZ2NjIGNvbW1hbmQgbGlu ZSwgc28gdGhlIHNlcGFyYXRlIHJlc3BvbnNlIGZpbGUgc2hvdWxkIG5ldmVyIGJlIHVzZWQuKQ0K DQo+IA0KPiAyKSAiLS1jbWQtbGVuIiBpcyBzdGlsbCBmdW5jdGlvbmFsLg0KDQpUaGFua3MuDQoN Ck9uZSBtb3JlIGNvbW1lbnQgYmVsb3csIHJlZ2FyZGluZyB0aGUgY29tbWl0IG1lc3NhZ2U6DQoN Cg0KPiANCj4gVGhhbmtzLA0KPiBCb2INCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFR1ZXNk YXksIE9jdG9iZXIgMjcsIDIwMjAgNzo1OCBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87 IExpYW5nLCBNaW5neXVlWCA8bWluZ3l1ZXgubGlhbmdAaW50ZWwuY29tPg0KPiBDYzogRmVuZywg Qm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgTGltaW5nIEdhbyANCj4gPGdhb2xpbWluZ0Bi eW9zb2Z0LmNvbS5jbj47IENoZW4sIENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+OyAN Cj4gQXJkIEJpZXNoZXV2ZWwgKEFSTSBhZGRyZXNzKSA8YXJkLmJpZXNoZXV2ZWxAYXJtLmNvbT4N Cj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIEJhc2VUb29sczogTGltaXQgY29t bWFuZCBsaW5lIGxlbmd0aC4NCj4gDQo+ICgrQXJkKQ0KPiANCj4gT24gMTAvMjMvMjAgMDU6MDAs IG1saWFuZzJ4IHdyb3RlOg0KPj4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTI1MjgNCj4+DQo+PiBDdXJyZW50bHksIHRoZSBjb21tYW5kIGxpbmUg aXMgdG9vIGxvbmcgYmVjYXVzZSB0aGUgQ0wgY29tbWFuZCBpcyANCj4+IGZvbGxvd2VkIGJ5IG11 bHRpcGxlIEMgZmlsZXMuDQo+Pg0KPj4gVGhlcmVmb3JlLCB0aGUgbnVtYmVyIG9mIEMgZmlsZXMN Cj4+IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBjb21tYW5kIGxpbmUgbmVl ZHMgdG8gYmUgd3JpdHRlbiANCj4+IHRvIHRoZSBmaWxlLiBJZiB0aGUgbnVtYmVyIG9mIEMgZmls ZXMgaXMgZ3JlYXRlciB0aGFuIG9uZSwgdGhlIA0KPj4gY29tbWFuZCBsaW5lIGlzIGRpcmVjdGx5 IHdyaXR0ZW4gdG8gdGhlIGZpbGUuIE9uIHRoZSBjb250cmFyeSwgDQo+PiB3aGV0aGVyIHRvIHdy aXRlIHRvIHRoZSBmaWxlIGlzIGRldGVybWluZWQgYnkgd2hldGhlciB0aGUgbGVuZ3RoIG9mIA0K Pj4gdGhlIGNvbW1hbmQgbGluZSBleGNlZWRzIHRoZSBsaW1pdGVkIGxlbmd0aCBEb2N1bWVudHMu DQoNCkkgZG9uJ3QgdW5kZXJzdGFuZCB0d28gZXhwcmVzc2lvbnMgaGVyZToNCg0KKGEpICJPbiB0 aGUgY29udHJhcnkiLg0KDQpJcyB0aGlzIGFuIGF0dGVtcHQgdG8gZGVzY3JpYmUgdGhlIGN1cnJl bnQgKD0gaW5jb3JyZWN0KSBiZWhhdmlvcj8NCg0KKGIpICJsaW1pdGVkIGxlbmd0aCBEb2N1bWVu dHMiLg0KDQpJIGhhdmUgbm8gaWRlYSB3aGF0IHRoaXMgbWVhbnMuDQoNClRoYW5rcywNCkxhc3ps bw0KDQoNCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBNaW5neXVlIExpYW5nIDxtaW5neXVleC5saWFu Z0BpbnRlbC5jb20+DQo+PiBDYzogQm9iIEZlbmcgPGJvYi5jLmZlbmdAaW50ZWwuY29tPg0KPj4g Q2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4+IENjOiBZdXdlaSBD aGVuIDx5dXdlaS5jaGVuQGludGVsLmNvbT4NCj4+IC0tLQ0KPj4gIEJhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0F1dG9HZW4vR2VuTWFrZS5weSAgICB8IDQ1ICsrKysrKysrKysrKysrKy0tLS0NCj4+ ICAuLi4vU291cmNlL1B5dGhvbi9BdXRvR2VuL0luY2x1ZGVzQXV0b0dlbi5weSAgfCAxMyArKysr Ky0NCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0p DQo+IA0KPiAoMSkgSSd2ZSByZWFkIGJvdGggQlojMjUyOCAodXAgdG8gY29tbWVudCAxMyksIGFu ZCB0aGUgYWJvdmUgY29tbWl0IG1lc3NhZ2UgdG9vLg0KPiANCj4gSSBzdGlsbCBkb24ndCBoYXZl IHRoZSBzbGlnaHRlc3QgaWRlYSB3aGF0IHRoZSBwcm9ibGVtIGlzLiBQbGVhc2UgY2xhcmlmeS4N Cj4gDQo+ICgyKSBIb3cgZG8gdGhpcyBwYXRjaCAoYW5kIHRoaXMgaXNzdWUpIHJlbGF0ZSB0byB0 aGUgIi0tY21kLWxlbiIgb3B0aW9uPw0KPiANCj4gDQo+IFRoZSBidWd6aWxsYSB0aWNrZXQgc2F5 cyB0aGUgaXNzdWUgaXMgcmVsYXRlZCB0byBNU1ZDLCBhbmQgdGhhdCBpdCB3YXMgZXhwb3NlZCBi eSBmaXhpbmcgQlojMTY3MiAoIkVuYWJsZSBtdWx0aXBsZSB0aHJlYWQgZm9yIE1TVkMgY29tcGls ZXIiKS4NCj4gQnV0LCBhdCBsZWFzdCBzdXBlcmZpY2lhbGx5LCB0aGUgZGlmZnN0YXQgYW5kIHRo ZSBwYXRjaCBib2R5IHNlZW0gdG8gYmUgbW9yZSBnZW5lcmljLiBXaGF0IEkgcmVhbGx5IGNhcmUg YWJvdXQgaXMgdGhhdCB0aGUgZ2NjIGNvbW1hbmQgbGluZXMgc2hvdWxkIG5vdCBjaGFuZ2UuIEl0 J3MgYW5ub3lpbmcgdG8gbG9vayBhdCBhIGJ1aWxkIGxvZyBhbmQgc2VlIHJlZmVyZW5jZXMgdG8g ImNjX3Jlc3AiIHRleHQgZmlsZXMsIHJhdGhlciB0aGFuIHRoZSBhY3R1YWwgY29tbWFuZCBsaW5l cy4gTXkgYnVpbGQgc2NyaXB0cyB1c2UgIi0tY21kLWxlbj02NTUzNiIgZm9yIHRoYXQgcmVhc29u IC0tIGlzIHRoaXMgcGF0Y2ggZ29pbmcgdG8ga2VlcCB0aGF0IGZ1bmN0aW9uYWw/DQo+IA0KPiBU aGFua3MsDQo+IExhc3psbw0KPiANCj4+DQo+PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5DQo+PiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0F1dG9HZW4vR2VuTWFrZS5weQ0KPj4gaW5kZXggMDMxNGQwZWEzNC4uMGNiOTdkYzE4ZCAxMDA3 NTUNCj4+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vR2VuTWFrZS5weQ0K Pj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5DQo+PiBA QCAtNTc2LDcgKzU3Niw4IEBAIGNsZWFubGliOg0KPj4gICAgICAgICAgICAgIEVka0xvZ2dlci5l cnJvcigiYnVpbGQiLCBBVVRPR0VOX0VSUk9SLCAiTm90aGluZyB0byBidWlsZCIsDQo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhRGF0YT0iWyVzXSIgJSBzdHIoTXlBZ28pKQ0K Pj4gIA0KPj4gLSAgICAgICAgc2VsZi5Qcm9jZXNzQnVpbGRUYXJnZXRMaXN0KCkNCj4+ICsgICAg ICAgIHNlbGYuUHJvY2Vzc0J1aWxkVGFyZ2V0TGlzdChNeUFnby5PdXRwdXREaXIsVG9vbHNEZWYp DQo+PiArDQo+PiAgICAgICAgICBzZWxmLlBhcnNlckdlbmVyYXRlRmZzQ21kKCkNCj4+ICANCj4+ ICAgICAgICAgICMgR2VuZXJhdGUgbWFjcm9zIHVzZWQgdG8gcmVwcmVzZW50IGlucHV0IGZpbGVz IEBAIC04NjYsNw0KPj4gKzg2Nyw2IEBAIGNsZWFubGliOg0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTaW5nbGVDb21tYW5kTGVuZ3RoICs9IGxlbihTdHIpDQo+PiAtDQo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFNpbmdsZUNvbW1hbmRMZW5ndGggPiBHbG9iYWxE YXRhLmdDb21tYW5kTWF4TGVuZ3RoOg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRmxhZ0RpY3RbVG9vbF1bJ1ZhbHVlJ10gPSBUcnVlDQo+PiAgDQo+PiBAQCAtODkwLDE4ICs4 OTAsMTggQEAgY2xlYW5saWI6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQo+PiAtDQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgc2VsZi5fQXV0b0dlbk9iamVjdC5Ub29sQ2hhaW5GYW1pbHkgPT0gJ0dD Qyc6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BEaWN0W0tleV0gPSBWYWx1 ZS5yZXBsYWNlKCdcXCcsICcvJykNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0K Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwRGljdFtLZXldID0gVmFsdWUNCj4+ ICsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgVGFyZ2V0IGluIEJ1aWxkVGFyZ2V0 czoNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGksIFNpbmdsZUNvbW1hbmQg aW4gZW51bWVyYXRlKEJ1aWxkVGFyZ2V0c1tUYXJnZXRdLkNvbW1hbmRzKToNCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIEZsYWdEaWN0W0ZsYWddWydNYWNybyddIGluIFNp bmdsZUNvbW1hbmQ6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVp bGRUYXJnZXRzW1RhcmdldF0uQ29tbWFuZHNbaV0gPSBTaW5nbGVDb21tYW5kLnJlcGxhY2UoJyQo SU5DKScsICcnKS5yZXBsYWNlKEZsYWdEaWN0W0ZsYWddWydNYWNybyddLCBSZXNwTWFjcm8pDQo+ PiAgICAgICAgICByZXR1cm4gUmVzcERpY3QNCj4+ICANCj4+IC0gICAgZGVmIFByb2Nlc3NCdWls ZFRhcmdldExpc3Qoc2VsZik6DQo+PiArICAgIGRlZiBQcm9jZXNzQnVpbGRUYXJnZXRMaXN0KHNl bGYsIFJlc3BGaWxlLCBUb29sc0RlZik6DQo+PiAgICAgICAgICAjDQo+PiAgICAgICAgICAjIFNl YXJjaCBkZXBlbmRlbmN5IGZpbGUgbGlzdCBmb3IgZWFjaCBzb3VyY2UgZmlsZQ0KPj4gICAgICAg ICAgIw0KPj4gQEAgLTEwMDIsNiArMTAwMiw3IEBAIGNsZWFubGliOg0KPj4gICAgICAgICAgICAg ICAgICAgICAgc2VsZi5PYmpUYXJnZXREaWN0W1QuVGFyZ2V0LlN1YkRpcl0gPSBzZXQoKQ0KPj4g ICAgICAgICAgICAgICAgICBzZWxmLk9ialRhcmdldERpY3RbVC5UYXJnZXQuU3ViRGlyXS5hZGQo TmV3RmlsZSkNCj4+ICAgICAgICAgIGZvciBUeXBlIGluIHNlbGYuX0F1dG9HZW5PYmplY3QuVGFy Z2V0czoNCj4+ICsgICAgICAgICAgICByZXNwX2ZpbGVfbnVtYmVyID0gMA0KPj4gICAgICAgICAg ICAgIGZvciBUIGluIHNlbGYuX0F1dG9HZW5PYmplY3QuVGFyZ2V0c1tUeXBlXToNCj4+ICAgICAg ICAgICAgICAgICAgIyBHZW5lcmF0ZSByZWxhdGVkIG1hY3JvcyBpZiBuZWVkZWQNCj4+ICAgICAg ICAgICAgICAgICAgaWYgVC5HZW5GaWxlTGlzdE1hY3JvIGFuZCBULkZpbGVMaXN0TWFjcm8gbm90 IGluIHNlbGYuRmlsZUxpc3RNYWNyb3M6DQo+PiBAQCAtMTA0Myw3ICsxMDQ0LDggQEAgY2xlYW5s aWI6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcy5hcHBlbmQoIiQoJXMpIiAlIFQu TGlzdEZpbGVNYWNybykNCj4+ICANCj4+ICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fQXV0b0dl bk9iamVjdC5CdWlsZFJ1bGVGYW1pbHkgPT0gVEFCX0NPTVBJTEVSX01TRlQgYW5kIFR5cGUgPT0g VEFCX0NfQ09ERV9GSUxFOg0KPj4gLSAgICAgICAgICAgICAgICAgICAgVCwgQ21kVGFyZ2V0LCBD bWRUYXJnZXREaWN0LCBDbWRDcHBEaWN0ID0gc2VsZi5QYXJzZXJDQ29kZUZpbGUoVCwgVHlwZSwg Q21kU3VtRGljdCwgQ21kVGFyZ2V0RGljdCwgQ21kQ3BwRGljdCwgRGVwZW5kZW5jeURpY3QpDQo+ PiArICAgICAgICAgICAgICAgICAgICBULCBDbWRUYXJnZXQsIENtZFRhcmdldERpY3QsIENtZENw cERpY3QgPSBzZWxmLlBhcnNlckNDb2RlRmlsZShULCBUeXBlLCBDbWRTdW1EaWN0LCBDbWRUYXJn ZXREaWN0LCBDbWRDcHBEaWN0LCBEZXBlbmRlbmN5RGljdCwgUmVzcEZpbGUsIFRvb2xzRGVmLCBy ZXNwX2ZpbGVfbnVtYmVyKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgcmVzcF9maWxlX251bWJl ciArPSAxDQo+PiAgICAgICAgICAgICAgICAgICAgICBUYXJnZXREaWN0ID0geyJ0YXJnZXQiOiBz ZWxmLlBsYWNlTWFjcm8oVC5UYXJnZXQuUGF0aCwgc2VsZi5NYWNyb3MpLCAiY21kIjogIlxuXHQi LmpvaW4oVC5Db21tYW5kcyksImRlcHMiOiBDQ29kZURlcHN9DQo+PiAgICAgICAgICAgICAgICAg ICAgICBDbWRMaW5lID0gc2VsZi5fQlVJTERfVEFSR0VUX1RFTVBMQVRFLlJlcGxhY2UoVGFyZ2V0 RGljdCkucnN0cmlwKCkucmVwbGFjZSgnXHQkKE9CSkxJU1QnLCAnJChPQkpMSVNUJykNCj4+ICAg ICAgICAgICAgICAgICAgICAgIGlmIFQuQ29tbWFuZHM6DQo+PiBAQCAtMTA2MCw3ICsxMDYyLDcg QEAgY2xlYW5saWI6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgQW5uZXhlVGFyZ2V0RGlj dCA9IHsidGFyZ2V0IjogDQo+PiBzZWxmLlBsYWNlTWFjcm8oaS5QYXRoLCBzZWxmLk1hY3Jvcyks ICJjbWQiOiAiIiwgImRlcHMiOiANCj4+IHNlbGYuUGxhY2VNYWNybyhULlRhcmdldC5QYXRoLCBz ZWxmLk1hY3Jvcyl9DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+PiBzZWxmLkJ1aWxk VGFyZ2V0TGlzdC5hcHBlbmQoc2VsZi5fQlVJTERfVEFSR0VUX1RFTVBMQVRFLlJlcGxhY2UoQW5u ZXgNCj4+IGUNCj4+IFRhcmdldERpY3QpKQ0KPj4gIA0KPj4gLSAgICBkZWYgUGFyc2VyQ0NvZGVG aWxlKHNlbGYsIFQsIFR5cGUsIENtZFN1bURpY3QsIENtZFRhcmdldERpY3QsIENtZENwcERpY3Qs IERlcGVuZGVuY3lEaWN0KToNCj4+ICsgICAgZGVmIFBhcnNlckNDb2RlRmlsZShzZWxmLCBULCBU eXBlLCBDbWRTdW1EaWN0LCBDbWRUYXJnZXREaWN0LCBDbWRDcHBEaWN0LCBEZXBlbmRlbmN5RGlj dCwgUmVzcEZpbGUsIFRvb2xzRGVmLCByZXNwX2ZpbGVfbnVtYmVyKToNCj4+ICAgICAgICAgIGlm IG5vdCBDbWRTdW1EaWN0Og0KPj4gICAgICAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuX0F1dG9H ZW5PYmplY3QuVGFyZ2V0c1tUeXBlXToNCj4+ICAgICAgICAgICAgICAgICAgQ21kU3VtRGljdFtp dGVtLlRhcmdldC5TdWJEaXJdID0gDQo+PiBpdGVtLlRhcmdldC5CYXNlTmFtZSBAQCAtMTA4MCw2 ICsxMDgyLDcgQEAgY2xlYW5saWI6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDbWRDcHBEaWN0W2l0ZW0uVGFyZ2V0LlN1YkRpcl0uYXBwZW5kKFBhdGgpDQo+PiAgICAgICAg ICBpZiBULkNvbW1hbmRzOg0KPj4gICAgICAgICAgICAgIENvbW1hbmRMaXN0ID0gVC5Db21tYW5k c1s6XQ0KPj4gKyAgICAgICAgICAgIFNhdmVGaWxlUGF0aCA9IG9zLnBhdGguam9pbihSZXNwRmls ZSwgImNjX3Jlc3BfJXMudHh0IiAlDQo+PiArIHJlc3BfZmlsZV9udW1iZXIpDQo+PiAgICAgICAg ICAgICAgZm9yIEl0ZW0gaW4gQ29tbWFuZExpc3RbOl06DQo+PiAgICAgICAgICAgICAgICAgIFNp bmdsZUNvbW1hbmRMaXN0ID0gSXRlbS5zcGxpdCgpDQo+PiAgICAgICAgICAgICAgICAgIGlmIGxl bihTaW5nbGVDb21tYW5kTGlzdCkgPiAwIGFuZCBzZWxmLkNoZWNrQ0NDbWQoU2luZ2xlQ29tbWFu ZExpc3QpOg0KPj4gQEAgLTEwODcsMTkgKzEwOTAsNDUgQEAgY2xlYW5saWI6DQo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgVGVtcC5zdGFydHN3aXRoKCcvRm8nKToNCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ21kU2lnbiA9ICclcyVzJyAlIChUZW1wLnJzcGxpdChUQUJf U0xBU0gsIDEpWzBdLCBUQUJfU0xBU0gpDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrDQo+PiAtICAgICAgICAgICAgICAgICAgICBlbHNlOiBjb250aW51ZQ0KPj4gKyAgICAg ICAgICAgICAgICAgICAgZWxzZToNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZQ0KPj4gICAgICAgICAgICAgICAgICAgICAgaWYgQ21kU2lnbiBub3QgaW4gbGlzdChDbWRUYXJn ZXREaWN0LmtleXMoKSk6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgQ21kVGFyZ2V0RGlj dFtDbWRTaWduXSA9IEl0ZW0ucmVwbGFjZShUZW1wLCBDbWRTaWduKQ0KPj4gICAgICAgICAgICAg ICAgICAgICAgZWxzZToNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBDbWRUYXJnZXREaWN0 W0NtZFNpZ25dID0gIiVzICVzIiAlIA0KPj4gKENtZFRhcmdldERpY3RbQ21kU2lnbl0sIFNpbmds ZUNvbW1hbmRMaXN0Wy0xXSkNCj4+ICsNCj4+ICAgICAgICAgICAgICAgICAgICAgIEluZGV4ID0g Q29tbWFuZExpc3QuaW5kZXgoSXRlbSkNCj4+ICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRM aXN0LnBvcChJbmRleCkNCj4+ICAgICAgICAgICAgICAgICAgICAgIGlmIFNpbmdsZUNvbW1hbmRM aXN0Wy0xXS5lbmRzd2l0aCgiJXMlcy5jIiAlIChUQUJfU0xBU0gsIENtZFN1bURpY3RbQ21kU2ln blszOl0ucnNwbGl0KFRBQl9TTEFTSCwgMSlbMF1dKSk6DQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgQ3BwbGlzdCA9IENtZENwcERpY3RbVC5UYXJnZXQuU3ViRGlyXQ0KPj4gICAgICAgICAg ICAgICAgICAgICAgICAgIENwcGxpc3QuaW5zZXJ0KDAsICckKE9CSkxJU1RfJWQpOiAnICUgbGlz dChzZWxmLk9ialRhcmdldERpY3Qua2V5cygpKS5pbmRleChULlRhcmdldC5TdWJEaXIpKQ0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgIFQuQ29tbWFuZHNbSW5kZXhdID0gJyVzXG5cdCVzJyAl ICgnIFxcXG5cdCcuam9pbihDcHBsaXN0KSwgQ21kVGFyZ2V0RGljdFtDbWRTaWduXSkNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICBjbWR0YXJnZXRsaXN0ID0gQ21kVGFyZ2V0RGljdFtDbWRT aWduXS5zcGxpdCgiICIpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgU291cmNl IGZpbGVzIGFuZCBTYXZlIHJlc3AgZmlsZS4NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBj X2ZpbGVzID0gW10NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBjbWRzID0gW10NCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICBpZiBjbWR0YXJnZXRsaXN0Og0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBjbWR0YXJnZXRsaXN0Og0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCckKCcpIG9yIGl0ZW0u c3RhcnRzd2l0aCgnL0ZvJykgb3IgaXRlbS5zdGFydHN3aXRoKCciJCgnKToNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzLmFwcGVuZChpdGVtKQ0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnLmMnKToNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ZpbGVzLmFwcGVuZChpdGVtKQ0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ZpbGVzLmluc2VydCgwLCAiICIpDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihjX2ZpbGVzKSA+IDI6DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlRmlsZU9uQ2hhbmdlKFNhdmVGaWxl UGF0aCwiICIuam9pbihjX2ZpbGVzKSwgRmFsc2UpDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBULkNvbW1hbmRzW0luZGV4XSA9ICclc1xuXHQlcyAkKGNjX3Jlc3BfJXMpJyAl ICgnIFxcXG5cdCcuam9pbihDcHBsaXN0KSwgIiAiLmpvaW4oY21kcyksIHJlc3BfZmlsZV9udW1i ZXIpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29sc0RlZi5hcHBlbmQo ImNjX3Jlc3BfJXMgPSBAJXMiICUgDQo+PiArIChyZXNwX2ZpbGVfbnVtYmVyLCBTYXZlRmlsZVBh dGgpKQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGxlbihDbWRU YXJnZXREaWN0W0NtZFNpZ25dKSA+IEdsb2JhbERhdGEuZ0NvbW1hbmRNYXhMZW5ndGggYW5kIGxl bihjX2ZpbGVzKSA8PTI6DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZl RmlsZU9uQ2hhbmdlKFNhdmVGaWxlUGF0aCwgIiAiLmpvaW4oY19maWxlcyksIEZhbHNlKQ0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVC5Db21tYW5kc1tJbmRleF0gPSAnJXNc blx0JXMgJChjY19yZXNwXyVzKScgJSAoJyBcXFxuXHQnLmpvaW4oQ3BwbGlzdCksICIgIi5qb2lu KGNtZHMpLCByZXNwX2ZpbGVfbnVtYmVyKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVG9vbHNEZWYuYXBwZW5kKCJjY19yZXNwXyVzID0gQCVzIiAlIA0KPj4gKyAocmVzcF9m aWxlX251bWJlciwgU2F2ZUZpbGVQYXRoKSkNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZToNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQuQ29t bWFuZHNbSW5kZXhdID0gJyVzXG5cdCVzJyAlICgnIA0KPj4gKyBcXFxuXHQnLmpvaW4oQ3BwbGlz dCksIENtZFRhcmdldERpY3RbQ21kU2lnbl0pDQo+PiArDQo+PiAgICAgICAgICAgICAgICAgICAg ICBlbHNlOg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgIFQuQ29tbWFuZHMucG9wKEluZGV4 KQ0KPj4gKw0KPj4gICAgICAgICAgcmV0dXJuIFQsIENtZFN1bURpY3QsIENtZFRhcmdldERpY3Qs IENtZENwcERpY3QNCj4+ICANCj4+ICAgICAgZGVmIENoZWNrQ0NDbWQoc2VsZiwgQ29tbWFuZExp c3QpOg0KPj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vSW5j bHVkZXNBdXRvR2VuLnB5DQo+PiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vSW5j bHVkZXNBdXRvR2VuLnB5DQo+PiBpbmRleCA3MjBkOTMzOTVhLi45ZjYxZDQ5YjNhIDEwMDY0NA0K Pj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9JbmNsdWRlc0F1dG9HZW4u cHkNCj4+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vSW5jbHVkZXNBdXRv R2VuLnB5DQo+PiBAQCAtMjAzLDcgKzIwMywxOCBAQCAke0VORH0NCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2Nfb3B0aW9ucyA9IGxpbmVbbGVuKGNjX2NtZCkrMjpdLnNwbGl0KCkN Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjY19vcHRpb25zID0gbGluZVtsZW4oY2NfY21kKTpdLnNwbGl0KCkNCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlQWJzUGF0aE1hcCA9IHtvcy5wYXRoLmJh c2VuYW1lKGl0ZW0pOml0ZW0gZm9yIGl0ZW0gaW4gY2Nfb3B0aW9ucyBpZiBub3QgaXRlbS5zdGFy dHN3aXRoKCIvIikgYW5kIG9zLnBhdGguZXhpc3RzKGl0ZW0pfQ0KPj4gKw0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGNjX29wdGlvbnM6DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIG5vdCBpdGVtLnN0YXJ0c3dpdGgoIi8iKToNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgaXRlbS5zdGFydHN3aXRoKCJAIik6DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCIudHh0Iikg YW5kIGl0ZW0uc3RhcnRzd2l0aCgiQCIpOg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdpdGggb3BlbihpdGVtWzE6XSwgInIiKSBhcyBmaWxlOg0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZmlsZXMgPSBmaWxlLnJlYWRs aW5lcygpWzBdLnNwbGl0KCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU291cmNlRmlsZUFic1BhdGhNYXAgPSB7b3MucGF0aC5iYXNlbmFtZShmaWxlKTpmaWxl IGZvciBmaWxlIGluIHNvdXJjZV9maWxlcyBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlKX0NCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaXRlbSk6DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPj4gKyBTb3VyY2VGaWxlQWJzUGF0 aE1hcC51cGRhdGUoe29zLnBhdGguYmFzZW5hbWUoaXRlbSk6IGl0ZW0uc3RyaXAoKX0pDQo+PiAr DQo+PiAgICAgICAgICAgICAgaWYgbGluZSBpbiBTb3VyY2VGaWxlQWJzUGF0aE1hcDoNCj4+ICAg ICAgICAgICAgICAgICAgY3VycmVudF9zb3VyY2UgPSBsaW5lDQo+PiAgICAgICAgICAgICAgICAg IGlmIGN1cnJlbnRfc291cmNlIG5vdCBpbiBNb2R1bGVEZXBEaWN0Og0KPj4NCj4gDQoNCg==