From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6A856A0546; Wed, 26 May 2021 10:34:54 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 30A2940150; Wed, 26 May 2021 10:34:54 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id A2D644003F for ; Wed, 26 May 2021 10:34:51 +0200 (CEST) IronPort-SDR: 2FW9ZIYkhoUSoWODBE0HJ6ePY2w+MG7Mm7KpiZ6q65m+pFn3AfqT3+6HWyjsnQ+j+BZNIFhhTq bQDWeNv4FP9Q== X-IronPort-AV: E=McAfee;i="6200,9189,9995"; a="200513767" X-IronPort-AV: E=Sophos;i="5.82,331,1613462400"; d="scan'208";a="200513767" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2021 01:34:46 -0700 IronPort-SDR: 0kA63mowqDne4qUQOJwYrteccId1a0/RvFU7mRKCGzzM8C1H3D7jskblXRkE6uzvuIkjO75qEH HADNWUEQsO1g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,331,1613462400"; d="scan'208";a="614870119" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga005.jf.intel.com with ESMTP; 26 May 2021 01:34:45 -0700 Received: from shsmsx603.ccr.corp.intel.com (10.109.6.143) 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.2242.4; Wed, 26 May 2021 01:34:45 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX603.ccr.corp.intel.com (10.109.6.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 26 May 2021 16:34:43 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.2242.008; Wed, 26 May 2021 16:34:43 +0800 From: "Tu, Lijuan" To: "Sikora, ZbigniewX" , "dts@dpdk.org" , "Sikora, ZbigniewX" , "Pattan, Reshma" Thread-Topic: [dts] [ds] [PATCH] power_negative: Test Suite Thread-Index: AQHXOCsm4IkvMJQhIEuXxqUpY3Rvoar1o4Lw Date: Wed, 26 May 2021 08:34:43 +0000 Message-ID: References: <20210423102548.2992979-1-zbigniewx.sikora@intel.com> In-Reply-To: <20210423102548.2992979-1-zbigniewx.sikora@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dts] [ds] [PATCH] power_negative: Test Suite X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkdHMgPGR0cy1ib3VuY2VzQGRw ZGsub3JnPiBPbiBCZWhhbGYgT2YgWmJpZ25pZXcgU2lrb3JhDQo+IFNlbnQ6IDIwMjHlubQ05pyI MjPml6UgMTg6MjYNCj4gVG86IGR0c0BkcGRrLm9yZzsgU2lrb3JhLCBaYmlnbmlld1ggPHpiaWdu aWV3eC5zaWtvcmFAaW50ZWwuY29tPjsgUGF0dGFuLA0KPiBSZXNobWEgPHJlc2htYS5wYXR0YW5A aW50ZWwuY29tPg0KPiBTdWJqZWN0OiBbZHRzXSBbZHNdIFtQQVRDSF0gcG93ZXJfbmVnYXRpdmU6 IFRlc3QgU3VpdGUNCj4gDQo+IEludHJvZHVjaW5nIGEgbmV3IFBvd2VyIE5lZ2F0aXZlIFRlc3Qg UGxhbi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IFNpa29yYSA8emJpZ25pZXd4LnNp a29yYUBpbnRlbC5jb20+DQoNCkFwcGxpZWQNCg0KPiANCj4gZGlmZiAtLWdpdCBhL2NvbmYvcG93 ZXJfbmVnYXRpdmUuY2ZnIGIvY29uZi9wb3dlcl9uZWdhdGl2ZS5jZmcgbmV3IGZpbGUgbW9kZQ0K PiAxMDA2NDQgaW5kZXggMDAwMDAwMC4uODUxMmUxYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2NvbmYvcG93ZXJfbmVnYXRpdmUuY2ZnDQo+IEBAIC0wLDAgKzEsMzAgQEANCj4gKyMgbGlidmly dGQgb3B0aW9uczoNCj4gKyMgW1ZNIG5hbWVdIHNlY3Rpb24gdmFsdWUgaXMgdGhlIG5hbWUgZm9y IFZNDQo+ICsjIGNwdSAgICAgICAjIGhhcmQgY29kZSB0eXBlIHRvIGhvc3QtcGFzc3Rocm91Z2gN Cj4gKyMgICBudW1iZXI6IG51bWJlciBvZiB2Y3B1cw0KPiArIyAgIGNwdXBpbjogaG9zdCBjcHUg bGlzdA0KPiArIyBtZW0NCj4gKyMgICBzaXplOiA0MDk2DQo+ICsjIGRpc2sNCj4gKyMgICBmaWxl OiBhYnNvbHV0ZSBwYXRoIHRvIGRpc2sgaW1hZ2UNCj4gKyMgICB0eXBlOiBkaXNrIGltYWdlIGZv cm1hdA0KPiArIyBsb2dpbg0KPiArIyAgIHVzZXI6IHVzZXIgbmFtZSB0byBsb2dpbiBpbnRvIFZN DQo+ICsjICAgcGFzc3dvcmQ6IHBhc3N3b3JrIHRvIGxvZ2luIGludG8gVk0NCj4gKyMgZGV2aWNl DQo+ICsjICAgcGZfaWR4OiBwYXNzLXRocm91Z2ggZGV2aWNlIGluZGV4IG9mIERVVCBwb3J0cw0K PiArIyAgIGd1ZXN0cGNpOiBoYXJkY29kZSB2YWx1ZSBvZiBndWVzdCBwY2kgYWRkcmVzcw0KPiAr IyB2aXJ0aW9fc2VyaWFsX2NoYW5uZWwNCj4gKyMgICBwYXRoOiB2aXJ0aW8gdW5peCBzb2NrZXQg YWJzb2x1dGUgcGF0aA0KPiArIyAgIG5hbWU6IHZpcnRpbyBzZXJpYWwgbmFtZSBpbiBWTQ0KPiAr DQo+ICsjIHZtIGNvbmZpZ3VyYXRpb24gZm9yIHZtIHBvd2VyIG1hbmFnZW1lbnQgY2FzZSBbdm0w XSBjcHUgPQ0KPiArICAgIG51bWJlcj04LGNwdXBpbj00IDUgNiA3IDggOSAxMCAxMTsNCj4gK21l bSA9DQo+ICsgICAgc2l6ZT0xMjE5NjsNCj4gK2Rpc2sgPQ0KPiArICAgIGZpbGU9L3Jvb3QvZmVk b3JhMjctMS5pbWcsb3B0X2Zvcm1hdD1xY293MjsNCj4gK2xvZ2luID0NCj4gKyAgICB1c2VyPXJv b3QscGFzc3dvcmQ9dGVzdGVyOw0KPiBkaWZmIC0tZ2l0IGEvdGVzdF9wbGFucy9wb3dlcl9uZWdh dGl2ZV90ZXN0X3BsYW4ucnN0DQo+IGIvdGVzdF9wbGFucy9wb3dlcl9uZWdhdGl2ZV90ZXN0X3Bs YW4ucnN0DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmIxZGU0ZDQN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0X3BsYW5zL3Bvd2VyX25lZ2F0aXZlX3Rlc3Rf cGxhbi5yc3QNCj4gQEAgLTAsMCArMSwxNzUgQEANCj4gKy4uIENvcHlyaWdodCAoYykgPDIwMTAt MjAxOT4sIEludGVsIENvcnBvcmF0aW9uDQo+ICsgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAr DQo+ICsgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiArICAgYXJlIG1ldDoNCj4gKw0K PiArICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodA0KPiArICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsNCj4gKyAgIC0gUmVkaXN0cmlidXRpb25z IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyAg ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluDQo+ICsgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAgICAgZGlzdHJpYnV0aW9uLg0KPiArDQo+ICsgICAt IE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBp dHMNCj4gKyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90 ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ICsgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKw0KPiArICAgVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9S Uw0KPiArICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QNCj4gKyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTDQo+ICsgICBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiArICAgQ09Q WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsDQo+ IElORElSRUNULA0KPiArICAgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMNCj4gKyAgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUw0KPiBPUg0KPiArICAgU0VSVklDRVM7IExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQo+ ICsgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4NCj4gQ09OVFJBQ1QsDQo+ICsgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQo+ICsgICBBUklTSU5HIElOIEFOWSBXQVkg T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEDQo+ICsgICBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ICsNCj4gKz09PT09PT09PT09PT09 PT09PT09PT09PQ0KPiArUG93ZXIgTmVnYXRpdmUgVGVzdCBQbGFuDQo+ICs9PT09PT09PT09PT09 PT09PT09PT09PT0NCj4gKw0KPiArUHJlcGFyYXRpb24gd29yaw0KPiArPT09PT09PT09PT09PT09 PQ0KPiArMS4gVHVybiBvbiBTcGVlZHN0ZXAgb3B0aW9uIGluIEJJT1MNCj4gKzIuIFR1cm4gb24g Q1BVIEMzIGFuZCBDNg0KPiArMy4gVHVybiBvbiBUdXJibyBpbiBCSU9TDQo+ICs0LiBEaXNhYmxl IGludGVsX3BzdGF0ZSBpbiBMaW51eCBrZXJuZWwgY29tbWFuZDogaW50ZWxfcHN0YXRlPWRpc2Fi bGUNCj4gKzUuIG1vZHByb2JlIG1zciBtb2R1bGUgdG8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjYW4g Z2V0IHRoZSBDUFUgSFcgaW5mbw0KPiArNi4gTGV0IHVzZXIgc3BhY2UgY2FuIGNvbnRyb2wgdGhl IENQVSBmcmVxdWVuY3k6IGNwdXBvd2VyIGZyZXF1ZW5jeS1zZXQNCj4gKy1nIHVzZXJzcGFjZQ0K PiArDQo+ICsNCj4gK1Rlc3QgQ2FzZTE6IEluamVjdCBNYWxmb3JtZWQgSlNPTiBDb21tYW5kIGZp bGUgdG8gZmlmbyBjaGFubmVsDQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gK1N0ZXAgMS4gQ3JlYXRlIHBvd2VybW9u aXRvciBmb2xkIGZvciB2bV9wb3dlcl9tYW5hZ2VyIHNhbXBsZTo6DQo+ICsNCj4gKyAgICBta2Rp ciAvdG1wL3Bvd2VybW9uaXRvcg0KPiArICAgIGNobW9kIDc3NyAvdG1wL3Bvd2VybW9uaXRvcg0K PiArDQo+ICtTdGVwIDIuIEx1YW5jaCBWTSBwb3dlciBtYW5hZ2VyIHNhbXBsZTo6DQo+ICsNCj4g KyAgICAuL2V4YW1wbGVzL3ZtX3Bvd2VyX21hbmFnZXIvYnVpbGQvdm1fcG93ZXJfbWdyIC1sIDEt MyAtbiA0DQo+ICsgLS1maWxlLXByZWZpeD10ZXN0MSAtLW5vLXBjaQ0KPiArDQo+ICtTdGVwIDMu IFByZXBhcmUgcG9saWN5IGluIEpTT04gZm9ybWF0IHRoZW4gc2VuZCBpdCB0byB0aGUgZmlmbyBj aGFubmVsOg0KPiArICAgIFByZXBhcmUgZGlmZmVyZW50IGNvbW1hbmQgaW4gSlNPTiBmb3JtYXQg dGhlbiBzZW5kIGl0IHRvIHRoZSBmaWZvIGNoYW5uZWwNCj4gKyAgICBNb2RpZnkgIm5hbWUiLCAi cmVzb3VyY2VfaWQiLCAiY29tbWFuZCIgdG8gbGFyZ2UgY2hhcmFjdGVyIHN0cmluZyB0byBjaGVj aw0KPiBpZiB0aGUgdm1fcG93ZXJfbWdyIHNhbXBsZSB3aWxsIGNyYXNoDQo+ICsgICAgRm9yIGV4 YW1wbGU6Og0KPiArDQo+ICsgICAgICB7InBvbGljeSI6IHsNCj4gKyAgICAgICAgIm5hbWUiOg0K PiAiMDEyMzQ1Njc4OTAxMjM0NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMDEyMzQ1Njc4OTAi LA0KPiArICAgICAgICAiY29tbWFuZCI6ICJjcmVhdGUiLA0KPiArICAgICAgICAicG9saWN5X3R5 cGUiOiAiV09SS0xPQUQiLA0KPiArICAgICAgICAid29ya2xvYWQiOiAiTUVESVVNIiwNCj4gKyAg ICAgIH19DQo+ICsNCj4gK1N0ZXAgNC4gU2VuZCBKc29uIGZvcm1hdCBjb21tYW5kIHRvIHRoZSBm aWZvIGNoYW5uZWw6Og0KPiArDQo+ICsgIGNhdCBjb21tYW5kLmpzb24gPiAvdG1wL3Bvd2VybW9u aXRvci9maWZvMjINCj4gKw0KPiArQ2hlY2sgcG9pbnQ6IG5vIGNyYXNoIGF0IHRoZSB2bV9wb3dl cl9tZ3IgYXBwbGljYXRpb24gc2lkZS4NCj4gKw0KPiArUG90ZW50aWFsIGlzc3VlOiBubyB3YXJu aW5nIGZvciB0aGUgdXNlciBmb3IgdGhlIG5hbWUgdG9vIGxvbmcsIG5vdyBpcw0KPiArY2hhclsz Ml0sIGJ1dCBubyBjcmFzaCBhcyBzdHJsY3B5IGlzIHVlc2VkDQo+ICsNCj4gK1Rlc3QgQ2FzZTI6 IFNlbmQgaW52YWxpZCBjb21tYW5kIHRocm91Z2ggSlNPTiBjaGFubmVsDQo+ICs9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gK1N0ZXAgMS4g Q3JlYXRlIHBvd2VybW9uaXRvciBmb2xkIGZvciB2bV9wb3dlcl9tYW5hZ2VyIHNhbXBsZTo6DQo+ ICsNCj4gKyAgICBta2RpciAvdG1wL3Bvd2VybW9uaXRvcg0KPiArICAgIGNobW9kIDc3NyAvdG1w L3Bvd2VybW9uaXRvcg0KPiArDQo+ICtTdGVwIDIuIEx1YW5jaCBWTSBwb3dlciBtYW5hZ2VyIHNh bXBsZTo6DQo+ICsNCj4gKyAgICAuL2V4YW1wbGVzL3ZtX3Bvd2VyX21hbmFnZXIvYnVpbGQvdm1f cG93ZXJfbWdyIC1sIDEtMyAtbiA0DQo+ICsgLS1maWxlLXByZWZpeD10ZXN0MSAtLW5vLXBjaQ0K PiArDQo+ICtTdGVwIDMuIFByZXBhcmUgcG9saWN5IGluIEpTT04gZm9ybWF0IHRoZW4gc2VuZCBp dCB0byB0aGUgZmlmbyBjaGFubmVsOg0KPiArDQo+ICtQcmVwYXJlIGludmFsaWQgcG93ZXIgY29t bWFuZCwgZm9yIGV4YW1wbGUsIGNvcmUgbGlzdCBhYm92ZSB0aGUgbWF4IGNvcmUNCj4gbnVtYmVy LiBGb3IgZXhhbXBsZTo6DQo+ICsNCj4gKyAgICB7InBvbGljeSI6IHsNCj4gKyAgICAgICAgIm5h bWUiOiAiVWJ1dG51IiwNCj4gKyAgICAgICAgImNvbW1hbmQiOiAiY3JlYXRlIiwNCj4gKyAgICAg ICAgInBvbGljeV90eXBlIjogIldPUktMT0FEIiwNCj4gKyAgICAgICAgIndvcmtsb2FkIjogIk1F RElVTV8xMTEiLA0KPiArICAgIH19DQo+ICsNCj4gKyAgICB7InBvbGljeSI6IHsNCj4gKyAgICAg ICAgIm5hbWUiOiAiVWJ1dG51IiwNCj4gKyAgICAgICAgImNvbW1hbmQiOiAiY3JlYXRlIiwNCj4g KyAgICAgICAgInBvbGljeV90eXBlIjogIldPUktMT0FEXzExMSIsDQo+ICsgICAgICAgICJ3b3Jr bG9hZCI6ICJNRURJVU0iLA0KPiArICAgIH19DQo+ICsNCj4gK1N0ZXAgNC4gU2VuZCBKc29uIGZv cm1hdCBjb21tYW5kIHRvIHRoZSBmaWZvIGNoYW5uZWw6Og0KPiArDQo+ICsJY2F0IGNvbW1hbmQu anNvbiA+IC90bXAvcG93ZXJtb25pdG9yL2ZpZm8yMg0KPiArDQo+ICtUZXN0IENhc2UzOiBDaGVj ayBpZiBob3N0IHBvd2VyIEFQUCBoYXZlIGNoZWNrIHBvaW50IGZvciB0aGUgcG93ZXINCj4gK3Bv bGljeSBzZW50IGZyb20gdW50cnVzdGVkIFZNDQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT0gU3RlcCAxLiBMYXVuY2ggVk0gYnkgdXNpbmcgbGli dmlydCwgb25lDQo+ICtOSUMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYXMgUENJIHBhc3MtdGhyb3Vn aHB1dCB0byB0aGUgVk06Og0KPiArDQo+ICsgICAgdmlyc2ggc3RhcnQgW1ZNIG5hbWVdDQo+ICsN Cj4gK05vdGU6IEZvciB0aGUgVk0geG1sIGZpbGUgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciBjcmVh dGluZyB0aGUgVk0sIGl0DQo+ICtjYW4gcmUtdXNlIHRoZSB2bTAueG1sIGdlbmVyYXRlZCBpbiB0 aGUgYnJhbmNoIHJhdGlvIERUUyBzY3JpcHQNCj4gKw0KPiArU3RlcCAyLiBMdWFuY2ggVk0gcG93 ZXIgbWFuYWdlciBzYW1wbGUgb24gdGhlIGhvc3QgdG8gbW9uaXRvciB0aGUgY2hhbm5lbA0KPiBm cm9tIFZNOjoNCj4gKw0KPiArICAgIC4vZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWlsZC92 bV9wb3dlcl9tZ3IgLWwgMTItMTQgLW4gNCAtLW5vLXBjaQ0KPiArICAgICAgPuOAgGFkZF92bSBb dm0gbmFtZV0NCj4gKyAgICAgID7jgIBhZGRfY2hhbm5lbHMgW3ZtIG5hbWVdIGFsbA0KPiArICAg ICAgPuOAgHNldF9jaGFubmVsX3N0YXR1cyBbdm0gbmFtZV0gYWxsIGVuYWJsZWQNCj4gKyAgICAg ID7jgIBzaG93X3ZtIFt2bSBuYW1lXQ0KPiArDQo+ICsgICBDaGVjayB0aGUgaW52YWxpZCBpbnB1 dCBjb21tYW5kIGZvciB2bV9wb3dlcl9tZ3Igc2FtcGxlOjoNCj4gKw0KPiArICAgID4gYWRkX2No YW5uZWxzIHVidW50dSAxMjgNCj4gKyAgICA+IGFkZF9jaGFubmVsIHVidW50dSAxMDAwMDAwMDAw MDAwMDAwMA0KPiArDQo+ICtDaGVjayBwb2ludDrjgIBObyBjcmFzaCBzaG91bGQgYmUgb2NjdXIg YXQgdm1fcG93ZXJfbWdyIHNhbXBsZQ0KPiArDQo+ICtTdGVwIDMuIEluIHRoZSBWTSwgbGF1bmNo IGd1ZXN0X3ZtX3Bvd2VyX21nciB0byBzZXQgYW5kIHNlbmQgdGhlIHBvd2VyDQo+IG1hbmFnZXIg cG9saWN5IHRvIHRoZSBob3N0IHBvd2VyIHNhbXBsZTo6DQo+ICsNCj4gKyAgICAuL2V4YW1wbGVz L3ZtX3Bvd2VyX21hbmFnZXIvZ3Vlc3RfY2xpL2J1aWxkL2d1ZXN0X3ZtX3Bvd2VyX21nciAtYw0K PiAweGZmIC1uIDQgLW0gMTAyNCAtLW5vLXBjaSAtLWZpbGUtcHJlZml4PXlhb2xlaSBcDQo+ICsg ICAgICAtLSAtLXZtLW5hbWU9dWJ1bnR1IC0tdmNwdS1saXN0PTAtNw0KPiArICAgICAgPiBzZXRf Y3B1X2ZyZXEgMTI4IGRvd24NCj4gKyAgICAgID4gc2V0X2NwdV9mcmVxIDEwMDAwMDAwMDAwMDAg ZG93bg0KPiArICAgICAgPiBzZXRfY3B1X2ZyZXEgLTEgZG93bg0KPiArDQo+ICsgICBhbHNvIHRy eSBvdGhlciBjb21tYW5kczo6DQo+ICsNCj4gKyAgICAgIjx1cHxkb3dufG1pbnxtYXh8ZW5hYmxl X3R1cmJvfGRpc2FibGVfdHVyYm8+Ig0KPiArDQo+ICsNCj4gK1Rlc3QgQ2FzZTQ6IFRSQUZGSUMg UG9saWN5IFRlc3QgYmFzZWQgb24gSlNPTiBjb25maWd1cmUgZmlsZSB3aXRoIGxhcmdlDQo+ICtp bnRlZ2VyIG51bWJlcg0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09DQo+ICs9PT09PT09PT09PT09PT09 PSBTdGVwIDEuIEdlbmVyYXRlIDEgVkYgdW5kZXIgdmZpby1wY2kgZHJpdmVyLCBsYXVuY2gNCj4g K3ZtX3Bvd2VyX21nciBzYW1wbGUgd2l0aCBQRiwgZm9yIGV4YW1wbGU6Og0KPiArDQo+ICsgICAg ZWNobyAxID4gL3N5cy9idXMvcGNpL2RyaXZlcnMvdmZpby1wY2kvMDAwMFw6ODJcOjAwLjAvbWF4 X3Zmcw0KPiArICAgIC4vZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWlsZC92bV9wb3dlcl9t Z3IgLWwgMS00IC1uIDQNCj4gKyAtLXNvY2tldC1tZW09MTAyNCwxMDI0IC0tZmlsZS1wcmVmaXg9 dGVzdDEgLXcgODI6MDAuMCAtLSAtcCAweDAxDQo+ICsNCj4gK1N0ZXAgMi4gTGF1bmNoIHRlc3Rw bWQgd2l0aCBWRjo6DQo+ICsNCj4gKyAgICAgLi94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9h cHAvdGVzdHBtZCAtbCA1LTYgLW4gNCAtLXNvY2tldC0NCj4gbWVtPTEwMjQsMTAyNCAtLWZpbGUt cHJlZml4PXRlc3QyIC13IDAwMDA6ODI6MDIuMCAtLSAtaQ0KPiArICAgICAgID4gc2V0IGZ3ZCBt YWNzd2FwDQo+ICsgICAgICAgPiBzdGFydA0KPiArDQo+ICtTdGVwIDMuIFByZXBhcmUgdHJhZmZp YyBwb2xpY3kgaW4gSlNPTiBmb3JtYXQgdGhlbiBzZW5kIGl0IHRvIHRoZSBwb3dlciBkZW1vbg0K PiBzYW1wbGUsIHB1dCB0aGUgVkYgTUFDIGludG8gdGhlIG1hY19saXN0OjoNCj4gKw0KPiArICAg ICAgeyJwb2xpY3kiOiB7DQo+ICsgICAgICAgICAgIm5hbWUiOiAidWJ1bnR1IiwNCj4gKyAgICAg ICAgICAiY29tbWFuZCI6ICJjcmVhdGUiLA0KPiArICAgICAgICAgICJwb2xpY3lfdHlwZSI6ICJU UkFGRklDIiwNCj4gKyAgICAgICAgICAibWF4X3BhY2tldF90aHJlc2giOiA1MDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAsDQo+ICsgICAgICAgICAgImF2Z19wYWNrZXRfdGhyZXNoIjogMzAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLA0KPiArICAgICAgICAgICJtYWNfbGlzdCI6WyAi RTA6RTA6RTA6RTA6RjA6RjAiXQ0KPiArICAgICAgfX0NCj4gKw0KPiArU3RlcCA0LiBTZW5kIEpz b24gZm9ybWF0IGNvbW1hbmQgdG8gdGhlIGZpZm8gY2hhbm5lbDo6DQo+ICsNCj4gKyAgY2F0IHRy YWZmaWMuanNvbiA+IC90bXAvcG93ZXJtb25pdG9yL2ZpZm82DQo+ICsNCj4gK0NoZWNrIHBvaW50 OuOAgE5vIGNyYXNoIHNob3VsZCBiZSBvY2N1ciBhdCB2bV9wb3dlcl9tZ3Igc2FtcGxlDQo+IGRp ZmYgLS1naXQgYS90ZXN0cy9UZXN0U3VpdGVfcG93ZXJfbmVnYXRpdmUucHkNCj4gYi90ZXN0cy9U ZXN0U3VpdGVfcG93ZXJfbmVnYXRpdmUucHkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMC4uNDZjMmYzYw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3Rlc3RzL1Rlc3RT dWl0ZV9wb3dlcl9uZWdhdGl2ZS5weQ0KPiBAQCAtMCwwICsxLDYxOSBAQA0KPiArIyBCU0QgTElD RU5TRQ0KPiArIw0KPiArIyBDb3B5cmlnaHQoYykgMjAxMC0yMDIwIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0K PiArIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQgIw0KPiArbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zICMNCj4gK2FyZSBtZXQ6DQo+ICsjDQo+ICsj ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodA0KPiArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArIyAgICogUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyMgICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbg0KPiArIyAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZQ0KPiArIyAgICAgZGlzdHJpYnV0aW9uLg0KPiArIyAgICogTmVpdGhl ciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiAr IyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k dWN0cyBkZXJpdmVkDQo+ICsjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsjDQo+ICsjIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBDT05UUklCVVRPUlMgIw0K PiArIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgIw0KPiArTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MNCj4gRk9SICMNCj4gK0EgUEFSVElDVUxBUiBQVVJQ T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUICMN Cj4gK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS RUNULA0KPiBJTkNJREVOVEFMLCAjDQo+ICtTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQo+ICMNCj4gK0xJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YNCj4gVVNF LCAjDQo+ICtEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW RVIgQ0FVU0VEIEFORCBPTg0KPiBBTlkgIw0KPiArVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAjDQo+ICsoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0K PiBVU0UgIw0KPiArT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCj4gKw0KPiArIiIiDQo+ICtEUERLIFRlc3Qgc3VpdGUu DQo+ICtwb3dlciBuZWdhdGl2ZSB0ZXN0IHN1aXRlLg0KPiArIiIiDQo+ICsNCj4gK2ltcG9ydCBv cw0KPiAraW1wb3J0IHJlDQo+ICtpbXBvcnQgdGltZQ0KPiAraW1wb3J0IHRyYWNlYmFjaw0KPiAr DQo+ICtmcm9tIHV0aWxzIGltcG9ydCBjcmVhdGVfbWFzayBhcyBkdHNfY3JlYXRlX21hc2sgZnJv bSBxZW11X2xpYnZpcnQNCj4gK2ltcG9ydCBMaWJ2aXJ0S3ZtIGZyb20gZXhjZXB0aW9uIGltcG9y dCBWZXJpZnlGYWlsdXJlIGZyb20gdGVzdF9jYXNlDQo+ICtpbXBvcnQgVGVzdENhc2UNCj4gKw0K PiArDQo+ICtjbGFzcyBUZXN0UG93ZXJOZWdhdGl2ZShUZXN0Q2FzZSk6DQo+ICsNCj4gKyAgICBA cHJvcGVydHkNCj4gKyAgICBkZWYgdGFyZ2V0X2RpcihzZWxmKToNCj4gKyAgICAgICAgIyBnZXQg YWJzb2x1dGUgZGlyZWN0b3J5IG9mIHRhcmdldCBzb3VyY2UgY29kZQ0KPiArICAgICAgICB0YXJn ZXRfZGlyID0gJy9yb290JyArIHNlbGYuZHV0LmJhc2VfZGlyWzE6XSBcDQo+ICsgICAgICAgICAg ICAgICAgICAgICBpZiBzZWxmLmR1dC5iYXNlX2Rpci5zdGFydHN3aXRoKCd+JykgZWxzZSBcDQo+ ICsgICAgICAgICAgICAgICAgICAgICBzZWxmLmR1dC5iYXNlX2Rpcg0KPiArICAgICAgICByZXR1 cm4gdGFyZ2V0X2Rpcg0KPiArDQo+ICsgICAgZGVmIHByZXBhcmVfYmluYXJ5KHNlbGYsIG5hbWUs IGhvc3RfY3JiPU5vbmUpOg0KPiArICAgICAgICBfaG9zdF9jcmIgPSBob3N0X2NyYiBpZiBob3N0 X2NyYiBlbHNlIHNlbGYuZHV0DQo+ICsgICAgICAgIGV4YW1wbGVfZGlyID0gImV4YW1wbGVzLyIg KyBuYW1lDQo+ICsgICAgICAgIG91dCA9IF9ob3N0X2NyYi5idWlsZF9kcGRrX2FwcHMoJy4vJyAr IGV4YW1wbGVfZGlyKQ0KPiArICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYudGFyZ2V0 X2RpciwNCj4gKw0KPiArIF9ob3N0X2NyYi5hcHBzX25hbWVbb3MucGF0aC5iYXNlbmFtZShuYW1l KV0pDQo+ICsNCj4gKyAgICBkZWYgYWRkX2NvbnNvbGUoc2VsZiwgc2Vzc2lvbik6DQo+ICsgICAg ICAgIHNlbGYuZXh0X2NvbltzZXNzaW9uLm5hbWVdID0gWw0KPiArICAgICAgICAgICAgc2Vzc2lv bi5zZW5kX2V4cGVjdCwNCj4gKyAgICAgICAgICAgIHNlc3Npb24uc2Vzc2lvbi5nZXRfb3V0cHV0 X2FsbF0NCj4gKw0KPiArICAgIGRlZiBnZXRfY29uc29sZShzZWxmLCBuYW1lKToNCj4gKyAgICAg ICAgZGVmYXVsdF9jb25fdGFibGUgPSB7DQo+ICsgICAgICAgICAgICBzZWxmLmR1dC5zZXNzaW9u Lm5hbWU6IFsNCj4gKyAgICAgICAgICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCwNCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmR1dC5nZXRfc2Vzc2lvbl9vdXRwdXRdLA0KPiArICAgICAgICAg ICAgc2VsZi5kdXQuYWx0X3Nlc3Npb24ubmFtZTogWw0KPiArICAgICAgICAgICAgICAgIHNlbGYu ZHV0LmFsdF9zZXNzaW9uLnNlbmRfZXhwZWN0LA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZHV0 LmFsdF9zZXNzaW9uLnNlc3Npb24uZ2V0X291dHB1dF9hbGxdfQ0KPiArICAgICAgICBpZiBuYW1l IG5vdCBpbiBkZWZhdWx0X2Nvbl90YWJsZToNCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmV4 dF9jb24uZ2V0KG5hbWUpIG9yIFtOb25lLCBOb25lXQ0KPiArICAgICAgICBlbHNlOg0KPiArICAg ICAgICAgICAgcmV0dXJuIGRlZmF1bHRfY29uX3RhYmxlLmdldChuYW1lKQ0KPiArDQo+ICsgICAg ZGVmIGV4ZWN1dGVfY21kcyhzZWxmLCBjbWRzLCBuYW1lPSdkdXQnKToNCj4gKyAgICAgICAgY29u c29sZSwgbXNnX3BpcGUgPSBzZWxmLmdldF9jb25zb2xlKG5hbWUpDQo+ICsgICAgICAgIGlmIGxl bihjbWRzKSA9PSAwOg0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ICsgICAgICAgIGlmIGlzaW5z dGFuY2UoY21kcywgc3RyKToNCj4gKyAgICAgICAgICAgIGNtZHMgPSBbY21kcywgJyMgJywgNV0N Cj4gKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY21kc1swXSwgbGlzdCk6DQo+ICsgICAgICAg ICAgICBjbWRzID0gW2NtZHNdDQo+ICsgICAgICAgIG91dHB1dHMgPSBbXSBpZiBsZW4oY21kcykg PiAxIGVsc2UgJycNCj4gKyAgICAgICAgZm9yIGl0ZW0gaW4gY21kczoNCj4gKyAgICAgICAgICAg IGV4cGVjdGVkX2l0ZW1zID0gaXRlbVsxXQ0KPiArICAgICAgICAgICAgaWYgZXhwZWN0ZWRfaXRl bXMgYW5kIGlzaW5zdGFuY2UoZXhwZWN0ZWRfaXRlbXMsIChsaXN0LCB0dXBsZSkpOg0KPiArICAg ICAgICAgICAgICAgIGV4cGVjdGVkX3N0ciA9IGV4cGVjdGVkX2l0ZW1zWzBdIG9yICcjICcNCj4g KyAgICAgICAgICAgIGVsc2U6DQo+ICsgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RyID0gZXhw ZWN0ZWRfaXRlbXMgb3IgJyMgJw0KPiArDQo+ICsgICAgICAgICAgICB0cnk6DQo+ICsgICAgICAg ICAgICAgICAgaWYgbGVuKGl0ZW0pID09IDM6DQo+ICsgICAgICAgICAgICAgICAgICAgIHRpbWVv dXQgPSBpbnQoaXRlbVsyXSkNCj4gKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gY29uc29s ZShpdGVtWzBdLCBleHBlY3RlZF9zdHIsIHRpbWVvdXQpDQo+ICsgICAgICAgICAgICAgICAgICAg IG91dHB1dCA9IG1zZ19waXBlKCkgaWYgbm90IG91dHB1dCBlbHNlIG91dHB1dA0KPiArICAgICAg ICAgICAgICAgIGVsc2U6DQo+ICsgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IGNvbnNvbGUo aXRlbVswXSwgZXhwZWN0ZWRfc3RyKQ0KPiArICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBt c2dfcGlwZSgpIGlmIG5vdCBvdXRwdXQgZWxzZSBvdXRwdXQNCj4gKyAgICAgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToNCj4gKyAgICAgICAgICAgICAgICBtc2cgPSAiZXhlY3V0ZSAnezB9 JyB0aW1lb3V0Ii5mb3JtYXQoaXRlbVswXSkNCj4gKyAgICAgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24obXNnKQ0KPiArICAgICAgICAgICAgdGltZS5zbGVlcCgxKQ0KPiArICAgICAgICAgICAg aWYgbGVuKGNtZHMpID4gMToNCj4gKyAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChvdXRw dXQpDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiArICAgICAgICAgICAgICAgIG91dHB1dHMgPSBv dXRwdXQNCj4gKw0KPiArICAgICAgICByZXR1cm4gb3V0cHV0cw0KPiArDQo+ICsgICAgZGVmIGRf Y29uKHNlbGYsIGNtZHMpOg0KPiArICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRlX2NtZHMoY21k cywgbmFtZT1zZWxmLmR1dC5zZXNzaW9uLm5hbWUpDQo+ICsNCj4gKyAgICBkZWYgZF9hX2Nvbihz ZWxmLCBjbWRzKToNCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0ZV9jbWRzKGNtZHMsIG5h bWU9c2VsZi5kdXQuYWx0X3Nlc3Npb24ubmFtZSkNCj4gKw0KPiArICAgIGRlZiB2bV9jb24oc2Vs ZiwgY21kcyk6DQo+ICsgICAgICAgIHJldHVybiBzZWxmLmV4ZWN1dGVfY21kcyhjbWRzLCBuYW1l PXNlbGYudm1fZHV0LnNlc3Npb24ubmFtZSkNCj4gKw0KPiArICAgIGRlZiB2bV9nX2NvbihzZWxm LCBjbWRzKToNCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0ZV9jbWRzKGNtZHMsIG5hbWU9 c2VsZi5ndWVzdF9jb25fbmFtZSkNCj4gKw0KPiArICAgIGRlZiBnZXRfc3lzX3Bvd2VyX2RyaXZl cihzZWxmKToNCj4gKyAgICAgICAgZHJ2X2ZpbGUgPSAiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUv Y3B1MC9jcHVmcmVxL3NjYWxpbmdfZHJpdmVyIg0KPiArICAgICAgICBvdXRwdXQgPSBzZWxmLmRf YV9jb24oJ2NhdCAnICsgZHJ2X2ZpbGUpDQo+ICsgICAgICAgIGlmIG5vdCBvdXRwdXQ6DQo+ICsg ICAgICAgICAgICBtc2cgPSAndW5rbm93biBwb3dlciBkcml2ZXInDQo+ICsgICAgICAgICAgICBz ZWxmLnZlcmlmeShGYWxzZSwgbXNnKQ0KPiArICAgICAgICBkcnZfbmFtZSA9IG91dHB1dC5zcGxp dGxpbmVzKClbMF0uc3RyaXAoKQ0KPiArICAgICAgICByZXR1cm4gZHJ2X25hbWUNCj4gKw0KPiAr ICAgIEBwcm9wZXJ0eQ0KPiArICAgIGRlZiBpc19zdXBwb3J0X3BiZihzZWxmKToNCj4gKyAgICAg ICAgIyBjaGVjayBpZiBjcHUgc3VwcG9ydCBicGYgZmVhdHVyZQ0KPiArICAgICAgICBjcHVfYXR0 ciA9IHInL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL2Jhc2VfZnJlcXVlbmN5 Jw0KPiArICAgICAgICBjbWQgPSAibHMgezB9Ii5mb3JtYXQoY3B1X2F0dHIpDQo+ICsgICAgICAg IHNlbGYuZF9hX2NvbihjbWQpDQo+ICsgICAgICAgIGNtZCA9ICJlY2hvICQ/Ig0KPiArICAgICAg ICBvdXRwdXQgPSBzZWxmLmRfYV9jb24oY21kKQ0KPiArICAgICAgICByZXQgPSBUcnVlIGlmIG91 dHB1dCA9PSAiMCIgZWxzZSBGYWxzZQ0KPiArICAgICAgICByZXR1cm4gcmV0DQo+ICsNCj4gKyAg ICBkZWYgZ2V0X2FsbF9jcHVfYXR0cnMoc2VsZik6DQo+ICsgICAgICAgICcnJw0KPiArICAgICAg ICBnZXQgYWxsIGNwdXMnIGJhc2VfZnJlcXVlbmN5IHZhbHVlLCBpZiBub3Qgc3VwcG9ydCBwYmYs IHNldCBhbGwgdG8gMA0KPiArICAgICAgICAnJycNCj4gKyAgICAgICAgaWYgbm90IHNlbGYuaXNf c3VwcG9ydF9wYmY6DQo+ICsgICAgICAgICAgICBjcHVfdG9wb3MgPSBzZWxmLmR1dC5nZXRfYWxs X2NvcmVzKCkNCj4gKyAgICAgICAgICAgIF9iYXNlX2ZyZXFzX2luZm8gPSB7fQ0KPiArICAgICAg ICAgICAgZm9yIGluZGV4LCBfIGluIGVudW1lcmF0ZShjcHVfdG9wb3MpOg0KPiArICAgICAgICAg ICAgICAgIF9iYXNlX2ZyZXFzX2luZm9baW5kZXhdID0gMA0KPiArICAgICAgICAgICAgcmV0dXJu IF9iYXNlX2ZyZXFzX2luZm8NCj4gKyAgICAgICAgIyBpZiBjcHUgc3VwcG9ydCBoaWdoIHByaW9y aXR5IGNvcmUNCj4gKyAgICAgICAga2V5X3ZhbHVlcyA9IFsnYmFzZV9mcmVxdWVuY3knLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICdjcHVpbmZvX21heF9mcmVxJywNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAnY3B1aW5mb19taW5fZnJlcSddDQo+ICsgICAgICAgIGZyZXEgPSByJy9zeXMv ZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdXswfS9jcHVmcmVxL3sxfScuZm9ybWF0DQo+ICsgICAgICAg ICMgdXNlIGR1dCBhbHQgc2Vzc2lvbiB0byBnZXQgZHV0IHBsYXRmb3JtIGNwdSBiYXNlIGZyZXF1 ZW5jeSBhdHRyaWJ1dGUNCj4gKyAgICAgICAgY3B1X3RvcG9zID0gc2VsZi5kdXQuZ2V0X2FsbF9j b3JlcygpDQo+ICsgICAgICAgIGNwdV9pbmZvID0ge30NCj4gKyAgICAgICAgZm9yIGNwdV90b3Bv IGluIGNwdV90b3BvczoNCj4gKyAgICAgICAgICAgIGNwdV9pZCA9IGludChjcHVfdG9wb1sndGhy ZWFkJ10pDQo+ICsgICAgICAgICAgICBjcHVfaW5mb1tjcHVfaWRdID0ge30NCj4gKyAgICAgICAg ICAgIGNwdV9pbmZvW2NwdV9pZF1bJ3NvY2tldCddID0gY3B1X3RvcG9bJ3NvY2tldCddDQo+ICsg ICAgICAgICAgICBjcHVfaW5mb1tjcHVfaWRdWydjb3JlJ10gPSBjcHVfdG9wb1snY29yZSddDQo+ ICsNCj4gKyAgICAgICAgZm9yIGtleV92YWx1ZSBpbiBrZXlfdmFsdWVzOg0KPiArICAgICAgICAg ICAgY21kcyA9IFtdDQo+ICsgICAgICAgICAgICBmb3IgY3B1X2lkIGluIHNvcnRlZChjcHVfaW5m by5rZXlzKCkpOg0KPiArICAgICAgICAgICAgICAgIGNtZHMuYXBwZW5kKCdjYXQgezB9Jy5mb3Jt YXQoZnJlcShjcHVfaWQsIGtleV92YWx1ZSkpKQ0KPiArICAgICAgICAgICAgb3V0cHV0ID0gc2Vs Zi5kX2FfY29uKCc7Jy5qb2luKGNtZHMpKQ0KPiArICAgICAgICAgICAgZnJlcXMgPSBbaW50KGl0 ZW0pIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdGxpbmVzKCldDQo+ICsgICAgICAgICAgICBmb3Ig aW5kZXgsIGNwdV9pZCBpbiBlbnVtZXJhdGUoc29ydGVkKGNwdV9pbmZvLmtleXMoKSkpOg0KPiAr ICAgICAgICAgICAgICAgIGNwdV9pbmZvW2NwdV9pZF1ba2V5X3ZhbHVlXSA9IGZyZXFzW2luZGV4 XQ0KPiArDQo+ICsgICAgICAgICMgZ2V0IGhpZ2ggcHJpb3JpdHkgY29yZSBhbmQgbm9ybWFsIGNv cmUNCj4gKyAgICAgICAgYmFzZV9mcmVxc19pbmZvID0ge30NCj4gKyAgICAgICAgZm9yIGNvcmVf aW5kZXgsIHZhbHVlIGluIGNwdV9pbmZvLml0ZW1zKCk6DQo+ICsgICAgICAgICAgICBiYXNlX2Zy ZXF1ZW5jeSA9IHZhbHVlLmdldCgnYmFzZV9mcmVxdWVuY3knKQ0KPiArICAgICAgICAgICAgYmFz ZV9mcmVxc19pbmZvLnNldGRlZmF1bHQoYmFzZV9mcmVxdWVuY3ksIFtdKS5hcHBlbmQoY29yZV9p bmRleCkNCj4gKyAgICAgICAgYmFzZV9mcmVxcyA9IGxpc3QoYmFzZV9mcmVxc19pbmZvLmtleXMo KSkNCj4gKyAgICAgICAgIyBjcHUgc2hvdWxkIGhhdmUgaGlnaCBwcmlvcml0eSBjb3JlIGFuZCBu b3JtYWwgY29yZQ0KPiArICAgICAgICAjIGhpZ2ggcHJpb3JpdHkgY29yZSBmcmVxdWVuY3kgaXMg aGlnaGVyIHRoYW4gbm9ybWFsIGNvcmUgZnJlcXVlbmN5DQo+ICsgICAgICAgIGlmIGxlbihiYXNl X2ZyZXFzKSA8PSAxIG9yIFwNCj4gKyAgICAgICAgICAgbm90IGFsbChbbGVuKHZhbHVlKSBmb3Ig dmFsdWUgaW4gbGlzdChiYXNlX2ZyZXFzX2luZm8udmFsdWVzKCkpXSk6DQo+ICsgICAgICAgICAg ICBtc2cgPSAnY3VycmVudCBjcHUgaGFzIG5vIGhpZ2ggcHJpb3JpdHkgY29yZScNCj4gKyAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbihtc2cpDQo+ICsNCj4gKyAgICAgICAgaGlnaF9wcmlfZnJl cSA9IG1heChzZWxmLmJhc2VfZnJlcXNfaW5mby5rZXlzKCkpDQo+ICsgICAgICAgIGhpZ2hfcHJp X2NvcmVzID0gYmFzZV9mcmVxc19pbmZvW2hpZ2hfcHJpX2ZyZXFdDQo+ICsgICAgICAgIF9iYXNl X2ZyZXFzX2luZm8gPSB7fQ0KPiArICAgICAgICBmb3IgaW5kZXgsIF8gaW4gZW51bWVyYXRlKGNw dV90b3Bvcyk6DQo+ICsgICAgICAgICAgICBfYmFzZV9mcmVxc19pbmZvW2luZGV4XSA9IDEgaWYg aW5kZXggaW4gaGlnaF9wcmlfY29yZXMgZWxzZQ0KPiArIDANCj4gKw0KPiArICAgICAgICByZXR1 cm4gX2Jhc2VfZnJlcXNfaW5mbw0KPiArDQo+ICsgICAgZGVmIGluaXRfdm1zX3BhcmFtcyhzZWxm KToNCj4gKyAgICAgICAgc2VsZi52bSA9IHNlbGYudmNwdV9tYXAgPSBzZWxmLnZjcHVfbHN0ID0g c2VsZi52bV9kdXQgPSBcDQo+ICsgICAgICAgICAgICBzZWxmLmd1ZXN0X3Nlc3Npb24gPSBzZWxm LmlzX2d1ZXN0X29uID0gc2VsZi5pc192bV9vbiA9IE5vbmUNCj4gKyAgICAgICAgIyB2bSBjb25m aWcNCj4gKyAgICAgICAgc2VsZi52bV9uYW1lID0gJ3ZtMCcNCj4gKyAgICAgICAgc2VsZi52bV9t YXhfY2ggPSA4DQo+ICsgICAgICAgIHNlbGYudm1fbG9nX2RpciA9ICcvdG1wL3Bvd2VybW9uaXRv cicNCj4gKyAgICAgICAgc2VsZi5jcmVhdGVfcG93ZXJtb25pdG9yX2ZvbGRlcigpDQo+ICsNCj4g KyAgICBkZWYgY3JlYXRlX3Bvd2VybW9uaXRvcl9mb2xkZXIoc2VsZik6DQo+ICsgICAgICAgICMg Y3JlYXRlIHRlbXBvcmFyeSBmb2xkZXIgZm9yIHBvd2VyIG1vbml0b3INCj4gKyAgICAgICAgY21k ID0gJ21rZGlyIC1wIHswfTsgY2htb2QgNzc3IHswfScuZm9ybWF0KHNlbGYudm1fbG9nX2RpcikN Cj4gKyAgICAgICAgc2VsZi5kX2FfY29uKGNtZCkNCj4gKw0KPiArICAgIGRlZiBzdGFydF92bShz ZWxmKToNCj4gKyAgICAgICAgIyBzZXQgdm0gaW5pdGlhbGl6ZSBwYXJhbWV0ZXJzDQo+ICsgICAg ICAgIHNlbGYuaW5pdF92bXNfcGFyYW1zKCkNCj4gKyAgICAgICAgIyBzdGFydCB2bQ0KPiArICAg ICAgICBzZWxmLnZtID0gTGlidmlydEt2bShzZWxmLmR1dCwgc2VsZi52bV9uYW1lLCBzZWxmLnN1 aXRlX25hbWUpDQo+ICsgICAgICAgICMgcGFzcyBwZiB0byB2aXJ0dWFsIG1hY2hpbmUNCj4gKyAg ICAgICAgcGNpX2FkZHIgPSBzZWxmLmR1dC5nZXRfcG9ydF9wY2koc2VsZi5kdXRfcG9ydHNbMF0p DQo+ICsgICAgICAgICMgYWRkIGNoYW5uZWwNCj4gKyAgICAgICAgY2hfbmFtZSA9ICd2aXJ0aW8u c2VyaWFsLnBvcnQucG93ZXJhZ2VudC57MH0nDQo+ICsgICAgICAgIHZtX3BhdGggPSBvcy5wYXRo LmpvaW4oc2VsZi52bV9sb2dfZGlyLCAnezB9LnsxfScpDQo+ICsgICAgICAgIGZvciBjbnQgaW4g cmFuZ2Uoc2VsZi52bV9tYXhfY2gpOg0KPiArICAgICAgICAgICAgY2hhbm5lbCA9IHsNCj4gKyAg ICAgICAgICAgICAgICAncGF0aCc6IHZtX3BhdGguZm9ybWF0KHNlbGYudm1fbmFtZSwgY250KSwN Cj4gKyAgICAgICAgICAgICAgICAnbmFtZSc6IGNoX25hbWUuZm9ybWF0KGNudCl9DQo+ICsgICAg ICAgICAgICBzZWxmLnZtLmFkZF92bV92aXJ0aW9fc2VyaWFsX2NoYW5uZWwoKipjaGFubmVsKQ0K PiArICAgICAgICAjIGJvb3QgdXAgdm0NCj4gKyAgICAgICAgc2VsZi52bV9kdXQgPSBzZWxmLnZt LnN0YXJ0KCkNCj4gKyAgICAgICAgc2VsZi5pc192bV9vbiA9IFRydWUNCj4gKyAgICAgICAgc2Vs Zi52ZXJpZnkoc2VsZi52bV9kdXQsICJjcmVhdGUgdm1fZHV0IGZhaWwgISIpDQo+ICsgICAgICAg IHNlbGYuYWRkX2NvbnNvbGUoc2VsZi52bV9kdXQuc2Vzc2lvbikNCj4gKyAgICAgICAgIyBnZXQg dmlydHVhbCBtYWNoaW5lIGNwdSBjb3Jlcw0KPiArICAgICAgICBfdmNwdV9tYXAgPSBzZWxmLnZt LmdldF92bV9jcHUoKQ0KPiArICAgICAgICBzZWxmLnZjcHVfbWFwID0gW2ludChpdGVtKSBmb3Ig aXRlbSBpbiBfdmNwdV9tYXBdDQo+ICsgICAgICAgIHNlbGYudmNwdV9sc3QgPSBbaW50KGl0ZW1b J2NvcmUnXSkgZm9yIGl0ZW0gaW4NCj4gKyBzZWxmLnZtX2R1dC5jb3Jlc10NCj4gKw0KPiArICAg IGRlZiBjbG9zZV92bShzZWxmKToNCj4gKyAgICAgICAgIyBjbG9zZSB2bQ0KPiArICAgICAgICBp ZiBzZWxmLmlzX3ZtX29uOg0KPiArICAgICAgICAgICAgaWYgc2VsZi5ndWVzdF9zZXNzaW9uOg0K PiArICAgICAgICAgICAgICAgIHNlbGYudm1fZHV0LmNsb3NlX3Nlc3Npb24oc2VsZi5ndWVzdF9z ZXNzaW9uKQ0KPiArICAgICAgICAgICAgICAgIHNlbGYuZ3Vlc3Rfc2Vzc2lvbiA9IE5vbmUNCj4g KyAgICAgICAgICAgIHNlbGYudm0uc3RvcCgpDQo+ICsgICAgICAgICAgICBzZWxmLmlzX3ZtX29u ID0gRmFsc2UNCj4gKyAgICAgICAgICAgIHNlbGYudm0gPSBOb25lDQo+ICsgICAgICAgICAgICBz ZWxmLmR1dC52aXJ0X2V4aXQoKQ0KPiArICAgICAgICAgICAgY21kX2ZtdCA9ICd2aXJzaCB7MH0g ezF9ID4gL2Rldi9udWxsIDI+JjEnLmZvcm1hdA0KPiArICAgICAgICAgICAgY21kcyA9IFsNCj4g KyAgICAgICAgICAgICAgICBbY21kX2ZtdCgnc2h1dGRvd24nLCBzZWxmLnZtX25hbWUpLCAnIyAn XSwNCj4gKyAgICAgICAgICAgICAgICBbY21kX2ZtdCgndW5kZWZpbmUnLCBzZWxmLnZtX25hbWUp LCAnIyAnXSwgXQ0KPiArICAgICAgICAgICAgc2VsZi5kX2FfY29uKGNtZHMpDQo+ICsNCj4gKyAg ICBkZWYgaW5pdF90ZXN0cG1kKHNlbGYpOg0KPiArICAgICAgICBzZWxmLnRlc3RwbWQgPSAnL3Jv b3QvZHBkay94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvZHBkay0NCj4gdGVzdHBtZCcN Cj4gKw0KPiArICAgIGRlZiBjbG9zZV90ZXN0cG1kKHNlbGYpOg0KPiArICAgICAgICBpZiBub3Qg c2VsZi5pc190ZXN0cG1kX29uOg0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ICsgICAgICAgIHNl bGYubG9nZ2VyLmluZm8oJ2Nsb3NpbmcgdGVzdHBtZCAuLicpDQo+ICsgICAgICAgIHNlbGYuZF9j b24oWydxdWl0JywgJyMgJywgMTVdKQ0KPiArICAgICAgICBzZWxmLmlzX3Rlc3RwbWRfb24gPSBG YWxzZQ0KPiArDQo+ICsgICAgZGVmIGluaXRfdm1fcG93ZXJfbWdyKHNlbGYpOg0KPiArICAgICAg ICBzZWxmLnZtX3Bvd2VyX21nciA9IHNlbGYucHJlcGFyZV9iaW5hcnkoJ3ZtX3Bvd2VyX21hbmFn ZXInKQ0KPiArDQo+ICsgICAgZGVmIGNsb3NlX3ZtX3Bvd2VyX21ncihzZWxmKToNCj4gKyAgICAg ICAgaWYgbm90IHNlbGYuaXNfbWdyX29uOg0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ICsgICAg ICAgIHNlbGYubG9nZ2VyLmluZm8oJ2Nsb3Npbmcgdm1fcG93ZXJfbWdyIC4uJykNCj4gKyAgICAg ICAgc2VsZi5kX2NvbihbJ3F1aXQnLCAnIyAnLCAxNV0pDQo+ICsgICAgICAgIHNlbGYuaXNfbWdy X29uID0gRmFsc2UNCj4gKw0KPiArICAgIGRlZiBpbml0X2d1ZXN0X21ncihzZWxmKToNCj4gKyAg ICAgICAgbmFtZSA9ICd2bV9wb3dlcl9tYW5hZ2VyL2d1ZXN0X2NsaScNCj4gKyAgICAgICAgc2Vs Zi5ndWVzdF9jbGkgPSBzZWxmLnByZXBhcmVfYmluYXJ5KG5hbWUsIGhvc3RfY3JiPXNlbGYudm1f ZHV0KQ0KPiArICAgICAgICBzZWxmLmd1ZXN0X2Nvbl9uYW1lID0gXA0KPiArICAgICAgICAgICAg J18nLmpvaW4oW3NlbGYudm1fZHV0Lk5BTUUsIG5hbWUucmVwbGFjZSgnLycsICctJyldKQ0KPiAr ICAgICAgICBzZWxmLmd1ZXN0X3Nlc3Npb24gPSBzZWxmLnZtX2R1dC5jcmVhdGVfc2Vzc2lvbihz ZWxmLmd1ZXN0X2Nvbl9uYW1lKQ0KPiArICAgICAgICBzZWxmLmFkZF9jb25zb2xlKHNlbGYuZ3Vl c3Rfc2Vzc2lvbikNCj4gKw0KPiArICAgIGRlZiBjbG9zZV9ndWVzdF9tZ3Ioc2VsZik6DQo+ICsg ICAgICAgIGlmIG5vdCBzZWxmLmlzX2d1ZXN0X29uOg0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ ICsgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ2Nsb3NpbmcgZ3Vlc3RfbWdyIC4uJykNCj4gKyAg ICAgICAgc2VsZi52bV9nX2NvbigicXVpdCIpDQo+ICsgICAgICAgIHNlbGYuaXNfZ3Vlc3Rfb24g PSBGYWxzZQ0KPiArDQo+ICsgICAgZGVmIGNoZWNrX2NwdXBvd2VyX3Rvb2woc2VsZik6DQo+ICsg ICAgICAgIGNtZCA9ICJ3aGVyZWlzIGNwdXBvd2VyID4gL2Rldi9udWxsIDI+JjE7IGVjaG8gJD8i DQo+ICsgICAgICAgIG91dHB1dCA9IHNlbGYuZF9hX2NvbihjbWQpDQo+ICsgICAgICAgIHN0YXR1 cyA9IFRydWUgaWYgb3V0cHV0IGFuZCBvdXRwdXQuc3RyaXAoKSA9PSAiMCIgZWxzZSBGYWxzZQ0K PiArICAgICAgICBtc2cgPSAnY3B1cG93ZXIgdG9vbCBoYXZlIG5vdCBpbnN0YWxsZWQgb24gRFVU Jw0KPiArICAgICAgICBzZWxmLnZlcmlmeShzdGF0dXMsIG1zZykNCj4gKw0KPiArICAgIGRlZiB2 ZXJpZnlfcG93ZXJfZHJpdmVyKHNlbGYpOg0KPiArICAgICAgICBleHBlY3RlZF9kcnYgPSAnYWNw aS1jcHVmcmVxJw0KPiArICAgICAgICBwb3dlcl9kcnYgPSBzZWxmLmdldF9zeXNfcG93ZXJfZHJp dmVyKCkNCj4gKyAgICAgICAgbXNnID0gInswfSBzaG91bGQgd29yayB3aXRoIHsxfSBkcml2ZXIg b24gRFVUIi5mb3JtYXQoDQo+ICsgICAgICAgICAgICBzZWxmLnN1aXRlX25hbWUsIGV4cGVjdGVk X2RydikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkocG93ZXJfZHJ2ID09IGV4cGVjdGVkX2Rydiwg bXNnKQ0KPiArDQo+ICsgICAgZGVmIHByZXNldF90ZXN0X2Vudmlyb25tZW50KHNlbGYpOg0KPiAr ICAgICAgICBzZWxmLmlzX21ncl9vbiA9IE5vbmUNCj4gKyAgICAgICAgc2VsZi5leHRfY29uID0g e30NCj4gKyAgICAgICAgIyBtb2Rwcm9iZSBtc3IgbW9kdWxlIHRvIGxldCB0aGUgYXBwbGljYXRp b24gY2FuIGdldCB0aGUgQ1BVIEhXIGluZm8NCj4gKyAgICAgICAgc2VsZi5kX2FfY29uKCdtb2Rw cm9iZSBtc3InKQ0KPiArICAgICAgICBzZWxmLmRfYV9jb24oJ2NwdXBvd2VyIGZyZXF1ZW5jeS1z ZXQgLWcgdXNlcnNwYWNlJykNCj4gKyAgICAgICAgc2VsZi5kdXQuaW5pdF9jb3JlX2xpc3RfdW5j YWNoZWRfbGludXgoKQ0KPiArICAgICAgICAjIGNoZWNrIGlmIGNwdSBzdXBwb3J0IGJwZiBmZWF0 dXJlDQo+ICsgICAgICAgIHNlbGYuYmFzZV9mcmVxc19pbmZvID0gc2VsZi5nZXRfYWxsX2NwdV9h dHRycygpDQo+ICsgICAgICAgICMgYm9vdCB1cCB2bQ0KPiArICAgICAgICBzZWxmLnN0YXJ0X3Zt KCkNCj4gKyAgICAgICAgIyBpbml0IGJpbmFyeQ0KPiArICAgICAgICBzZWxmLmluaXRfdm1fcG93 ZXJfbWdyKCkNCj4gKyAgICAgICAgc2VsZi5pbml0X2d1ZXN0X21ncigpDQo+ICsgICAgICAgIHNl bGYuaW5pdF90ZXN0cG1kKCkNCj4gKw0KPiArDQo+ICsgICAgZGVmIHZlcmlmeV9pbmplY3RfbWFs Zm9ybWVkX2pzb25fdG9fZmlmb19jaGFubmVsKHNlbGYpOg0KPiArICAgICAgICAjIFRlc3QgQ2Fz ZTE6IEluamVjdCBNYWxmb3JtZWQgSlNPTiBDb21tYW5kIGZpbGUgdG8gZmlmbyBjaGFubmVsDQo+ ICsgICAgICAgICMgMS4gQ3JlYXRlIHBvd2VybW9uaXRvciBmb2xkIGZvciB2bV9wb3dlcl9tYW5h Z2VyIHNhbXBsZTo6DQo+ICsgICAgICAgICMgICAgIG1rZGlyIC90bXAvcG93ZXJtb25pdG9yDQo+ ICsgICAgICAgICMgICAgIGNobW9kIDc3NyAvdG1wL3Bvd2VybW9uaXRvcg0KPiArICAgICAgICAj IDIuIExhdW5jaCBWTSBwb3dlciBtYW5hZ2VyIHNhbXBsZTo6DQo+ICsgICAgICAgICMgICAgIC4v ZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWlsZC92bV9wb3dlcl9tZ3IgLWwgMS0zIC1uIDQg LS0NCj4gZmlsZS1wcmVmaXg9dGVzdDEgLS1uby1wY2kNCj4gKyAgICAgICAgIyAzLiBQcmVwYXJl IHBvbGljeSBpbiBKU09OIGZvcm1hdCB0aGVuIHNlbmQgaXQgdG8gdGhlIGZpZm8gY2hhbm5lbDoN Cj4gKyAgICAgICAgIyAgICAgUHJlcGFyZSBkaWZmZXJlbnQgY29tbWFuZCBpbiBKU09OIGZvcm1h dCB0aGVuIHNlbmQgaXQgdG8gdGhlIGZpZm8NCj4gY2hhbm5lbA0KPiArICAgICAgICAjICAgICBN b2RpZnkgIm5hbWUiLCAicmVzb3VyY2VfaWQiLCAiY29tbWFuZCIgdG8gbGFyZ2UgY2hhcmFjdGVy IHN0cmluZyB0bw0KPiBjaGVjayBpZiB0aGUgdm1fcG93ZXJfbWdyIHNhbXBsZSB3aWxsIGNyYXNo DQo+ICsgICAgICAgICMgICAgIEZvciBleGFtcGxlOjoNCj4gKyAgICAgICAgIyAgICAgICB7InBv bGljeSI6IHsNCj4gKyAgICAgICAgIyAgICAgICAgICJuYW1lIjoNCj4gIjAxMjM0NTY3ODkwMTIz NDQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDAxMjM0NTY3ODkwIiwNCj4gKyAgICAgICAgIyAg ICAgICAgICJjb21tYW5kIjogImNyZWF0ZSIsDQo+ICsgICAgICAgICMgICAgICAgICAicG9saWN5 X3R5cGUiOiAiV09SS0xPQUQiLA0KPiArICAgICAgICAjICAgICAgICAgIndvcmtsb2FkIjogIk1F RElVTSIsDQo+ICsgICAgICAgICMgICAgICAgICAiY29yZV9saXN0IjpbIDIyXQ0KPiArICAgICAg ICAjICAgICAgIH19DQo+ICsgICAgICAgICMgNC4gU2VuZCBKc29uIGZvcm1hdCBjb21tYW5kIHRv IHRoZSBmaWZvIGNoYW5uZWw6Og0KPiArICAgICAgICAjICAgICBjYXQgY29tbWFuZC5qc29uID4v dG1wL3Bvd2VybW9uaXRvci9maWZvMQ0KPiArDQo+ICsgICAgICAgICMgc3RhcnQgdm1fcG93ZXJf bWdyDQo+ICsgICAgICAgIG9wdGlvbiA9ICcgLXYgLWwgMS0zIC1uIDQgLS1maWxlLXByZWZpeD10 ZXN0MSAtLW5vLXBjaSAnDQo+ICsgICAgICAgIGNtZCA9IFsnICcuam9pbihbc2VsZi52bV9wb3dl cl9tZ3IsIG9wdGlvbl0pLCAndm1wb3dlcj4gJywgMzBdDQo+ICsgICAgICAgIHNlbGYuZF9jb24o Y21kKQ0KPiArICAgICAgICBzZWxmLmlzX21ncl9vbiA9IFRydWUNCj4gKw0KPiArICAgICAgICAj IHByZXBhcmUgYW4gc2VuZCB0aGUganNvbiBmaWxlIHRvIGZpZm8NCj4gKyAgICAgICAgZWNob19q c29uID0gKA0KPiArICAgICAgICAgICAgJ2VjaG8ge1xcInBvbGljeVxcIjogeycNCj4gKyAgICAg ICAgICAgICcgIFxcIm5hbWVcXCI6DQo+IFxcIjAxMjM0NTY3ODkwMTIzNDQ1Njc4OTAxMjM0NTY3 ODkwMTIzNDU2Nzg5MDAxMjM0NTY3ODkwXFwiLCcNCj4gKyAgICAgICAgICAgICcgIFxcImNvbW1h bmRcXCI6IFxcImNyZWF0ZVxcIiwnDQo+ICsgICAgICAgICAgICAnICBcXCJwb2xpY3lfdHlwZVxc IjogXFwiV09SS0xPQURcXCIsJw0KPiArICAgICAgICAgICAgJyAgXFwid29ya2xvYWRcXCI6IFxc Ik1FRElVTVxcIicNCj4gKyAgICAgICAgICAgICd9fSA+IC90bXAvY29tbWFuZC5qc29uOycpDQo+ ICsgICAgICAgIGNhdF9qc29uID0gJ2NhdCAvdG1wL2NvbW1hbmQuanNvbiA+IC90bXAvcG93ZXJt b25pdG9yL2ZpZm8xJw0KPiArICAgICAgICBzZWxmLmRfYV9jb24oWycgJy5qb2luKFtlY2hvX2pz b24sIGNhdF9qc29uXSksICcjICcsIDEwXSkNCj4gKw0KPiArICAgICAgICBvdXQgPSBzZWxmLmRf Y29uKFsnc2hvd19jcHVfZnJlcSAxJywgJ3ZtcG93ZXI+ICcsIDIwXSkNCj4gKyAgICAgICAgc2Vs Zi52ZXJpZnkoJ0NvcmUgMSBmcmVxdWVuY3k6JyBpbiBvdXQsICd2bV9wb3dlcl9tYW5hZ2VyIGRp ZA0KPiArIG5vdCB3b3JrIGFzIGV4cGVjdGVkJykNCj4gKw0KPiArDQo+ICsgICAgZGVmIHZlcmlm eV9zZW5kX2ludmFsaWRfY21kX3Rocm91Z2hfanNvbl9jaG4oc2VsZik6DQo+ICsgICAgICAgICMg VGVzdCBDYXNlMiA6IFNlbmQgaW52YWxpZCBjb21tYW5kIHRocm91Z2ggSlNPTiBjaGFubmVsDQo+ ICsgICAgICAgICMgMS4gQ3JlYXRlIHBvd2VybW9uaXRvciBmb2xkIGZvciB2bV9wb3dlcl9tYW5h Z2VyIHNhbXBsZTo6DQo+ICsgICAgICAgICMgICAgIG1rZGlyIC90bXAvcG93ZXJtb25pdG9yDQo+ ICsgICAgICAgICMgICAgIGNobW9kIDc3NyAvdG1wL3Bvd2VybW9uaXRvcg0KPiArICAgICAgICAj IDIuIExhdW5jaCBWTSBwb3dlciBtYW5hZ2VyIHNhbXBsZTo6DQo+ICsgICAgICAgICMgICAgIC4v ZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdlci9idWlsZC92bV9wb3dlcl9tZ3IgLWwgMS0zIC1uIDQg LS0NCj4gZmlsZS1wcmVmaXg9dGVzdDEgLS1uby1wY2kNCj4gKyAgICAgICAgIyAzLiBQcmVwYXJl IHBvbGljeSBpbiBKU09OIGZvcm1hdCB0aGVuIHNlbmQgaXQgdG8gdGhlIGZpZm8gY2hhbm5lbDoN Cj4gKyAgICAgICAgIyAgICAgUHJlcGFyZSBpbnZhbGlkIHBvd2VyIGNvbW1hbmQsIGZvciBleGFt cGxlLCBjb3JlIGxpc3QgYWJvdmUgdGhlIG1heA0KPiBjb3JlIG51bWJlci4NCj4gKyAgICAgICAg IyAgICAgRm9yIGV4YW1wbGU6Og0KPiArICAgICAgICAjICAgICAgIHsicG9saWN5Ijogew0KPiAr ICAgICAgICAjICAgICAgICAgIm5hbWUiOiAiVWJ1bnR1IiwNCj4gKyAgICAgICAgIyAgICAgICAg ICJjb21tYW5kIjogImNyZWF0ZSIsDQo+ICsgICAgICAgICMgICAgICAgICAicG9saWN5X3R5cGUi OiAiV09SS0xPQUQiLA0KPiArICAgICAgICAjICAgICAgICAgIndvcmtsb2FkIjogIk1FRElVTV8x MTEiDQo+ICsgICAgICAgICMgICAgICAgfX0NCj4gKyAgICAgICAgIyAgICAgICB7InBvbGljeSI6 IHsNCj4gKyAgICAgICAgIyAgICAgICAgICJuYW1lIjogIlVidW50dSIsDQo+ICsgICAgICAgICMg ICAgICAgICAiY29tbWFuZCI6ICJjcmVhdGUiLA0KPiArICAgICAgICAjICAgICAgICAgInBvbGlj eV90eXBlIjogIldPUktMT0FEXzExMSIsDQo+ICsgICAgICAgICMgICAgICAgICAid29ya2xvYWQi OiAiTUVESVVNIg0KPiArICAgICAgICAjICAgICAgIH19DQo+ICsgICAgICAgICMgNC4gU2VuZCBK c29uIGZvcm1hdCBjb21tYW5kIHRvIHRoZSBmaWZvIGNoYW5uZWw6Og0KPiArICAgICAgICAjIAlj YXQgY29tbWFuZC5qc29uID4vdG1wL3Bvd2VybW9uaXRvci9maWZvMQ0KPiArDQo+ICsgICAgICAg ICMgc3RhcnQgdm1fcG93ZXJfbWdyDQo+ICsgICAgICAgIG9wdGlvbiA9ICcgLXYgLWwgMS0zIC1u IDQgLS1maWxlLXByZWZpeD10ZXN0MSAtLW5vLXBjaSAnDQo+ICsgICAgICAgIGNtZCA9IFsnICcu am9pbihbc2VsZi52bV9wb3dlcl9tZ3IsIG9wdGlvbl0pLCAndm1wb3dlcj4nLCAzMF0NCj4gKyAg ICAgICAgc2VsZi5kX2NvbihjbWQpDQo+ICsgICAgICAgIHNlbGYuaXNfbWdyX29uID0gVHJ1ZQ0K PiArDQo+ICsgICAgICAgICMgcHJlcGFyZSBhbiBzZW4gdGhlIGpzb24gZmlsZSB0byBmaWZvDQo+ ICsgICAgICAgIGVjaG9fanNvbiA9ICgNCj4gKyAgICAgICAgICAgICdlY2hvIHtcXCJwb2xpY3lc XCI6IHsnDQo+ICsgICAgICAgICAgICAnICBcXCJuYW1lXFwiOiBcXCJVYnVudHVcXCIsJw0KPiAr ICAgICAgICAgICAgJyAgXFwiY29tbWFuZFxcIjogXFwiY3JlYXRlXFwiLCcNCj4gKyAgICAgICAg ICAgICcgIFxcInBvbGljeV90eXBlXFwiOiBcXCJXT1JLTE9BRFxcIiwnDQo+ICsgICAgICAgICAg ICAnICBcXCJ3b3JrbG9hZFxcIjogXFwiTUVESVVNXzExMVxcIicNCj4gKyAgICAgICAgICAgICd9 fSA+IC90bXAvY29tbWFuZC5qc29uOycpDQo+ICsgICAgICAgIGNhdF9qc29uID0gJ2NhdCAvdG1w L2NvbW1hbmQuanNvbiA+IC90bXAvcG93ZXJtb25pdG9yL2ZpZm8xJw0KPiArICAgICAgICBvdXQg PSBzZWxmLmRfY29uKFsnc2hvd19jcHVfZnJlcSAxJywgJ3ZtcG93ZXI+JywgMjBdKQ0KPiArICAg ICAgICBzZWxmLnZlcmlmeSgnQ29yZSAxIGZyZXF1ZW5jeTonIGluIG91dCwgJ3ZtX3Bvd2VyX21h bmFnZXIgZGlkDQo+ICsgbm90IHdvcmsgYXMgZXhwZWN0ZWQnKQ0KPiArDQo+ICsgICAgICAgIHNl bGYuZF9hX2NvbihbJyAnLmpvaW4oW2VjaG9fanNvbiwgY2F0X2pzb25dKSwgJyMnLCAxMF0pDQo+ ICsgICAgICAgIGVjaG9fanNvbiA9ICgNCj4gKyAgICAgICAgICAgICdlY2hvIHtcXCJwb2xpY3lc XCI6IHsnDQo+ICsgICAgICAgICAgICAnICBcXCJuYW1lXFwiOiBcXCJVYnVudHVcXCIsJw0KPiAr ICAgICAgICAgICAgJyAgXFwiY29tbWFuZFxcIjogXFwiY3JlYXRlXFwiLCcNCj4gKyAgICAgICAg ICAgICcgIFxcInBvbGljeV90eXBlXFwiOiBcXCJXT1JLTE9BRF8xMTFcXCIsJw0KPiArICAgICAg ICAgICAgJyAgXFwid29ya2xvYWRcXCI6IFxcIk1FRElVTVxcIicNCj4gKyAgICAgICAgICAgICd9 fSA+IC90bXAvY29tbWFuZC5qc29uOycpDQo+ICsgICAgICAgIGNhdF9qc29uID0gJ2NhdCAvdG1w L2NvbW1hbmQuanNvbiA+IC90bXAvcG93ZXJtb25pdG9yL2ZpZm8xJw0KPiArICAgICAgICBzZWxm LmRfYV9jb24oWycgJy5qb2luKFtlY2hvX2pzb24sIGNhdF9qc29uXSksICcjJywgMTBdKQ0KPiAr DQo+ICsgICAgICAgIG91dCA9IHNlbGYuZF9jb24oWydzaG93X2NwdV9mcmVxIDEnLCAndm1wb3dl cj4nLCAyMF0pDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCdDb3JlIDEgZnJlcXVlbmN5OicgaW4g b3V0LCAndm1fcG93ZXJfbWFuYWdlciBkaWQNCj4gKyBub3Qgd29yayBhcyBleHBlY3RlZCcpDQo+ ICsNCj4gKw0KPiArICAgIGRlZiB2ZXJpZnlfaG9zdF9wb3dlcl9jaGVja19wb2xpY3lfZnJvbV91 bnRydXN0ZWRfdm0oc2VsZik6DQo+ICsgICAgICAgICMgVGVzdCBDYXNlMyA6IFNlbmQgbWFsZm9y bWVkIGNvbW1hbmQgdG8gaG9zdCBwb3dlciBkYWVtb24gYXBwDQo+ICsgICAgICAgICMgMS4gTGF1 bmNoIFZNIGJ5IHVzaW5nIGxpYnZpcnQsIG9uZSBOSUMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYXMg UENJIHBhc3MtDQo+IHRocm91Z2hwdXQgdG8gdGhlIFZNOjoNCj4gKyAgICAgICAgIyB2aXJzaCBz dGFydCBbVk0gbmFtZV0NCj4gKyAgICAgICAgIyAyLiBMYXVuY2ggVk0gcG93ZXIgbWFuYWdlciBz YW1wbGUgb24gdGhlIGhvc3QgdG8gbW9uaXRvciB0aGUgY2hhbm5lbA0KPiBmcm9tIFZNOjoNCj4g KyAgICAgICAgIyAuL2V4YW1wbGVzL3ZtX3Bvd2VyX21hbmFnZXIvYnVpbGQvdm1fcG93ZXJfbWdy IC1sIDEyLTE0IC1uIDQgLS0NCj4gbm8tcGNpDQo+ICsgICAgICAgICMgPuOAgGFkZF92bSBbdm0g bmFtZV0NCj4gKyAgICAgICAgIyA+44CAYWRkX2NoYW5uZWxzIFt2bSBuYW1lXSBhbGwNCj4gKyAg ICAgICAgIyA+44CAc2V0X2NoYW5uZWxfc3RhdHVzIFt2bSBuYW1lXSBhbGwgZW5hYmxlZA0KPiAr ICAgICAgICAjID7jgIBzaG93X3ZtIFt2bSBuYW1lXQ0KPiArICAgICAgICAjIENoZWNrIHRoZSBp bnZhbGlkIGlucHV0IGNvbW1hbmQgZm9yIHZtX3Bvd2VyX21nciBzYW1wbGU6Og0KPiArICAgICAg ICAjID4gYWRkX2NoYW5uZWxzIHVidW50dSAxMjgNCj4gKyAgICAgICAgIyA+IGFkZF9jaGFubmVs IHVidW50dSAxMDAwMDAwMDAwMDAwMDAwMA0KPiArICAgICAgICAjIDMuIEluIHRoZSBWTSwgbGF1 bmNoIGd1ZXN0X3ZtX3Bvd2VyX21nciB0byBzZXQgYW5kIHNlbmQgdGhlIHBvd2VyDQo+IG1hbmFn ZXIgcG9saWN5IHRvIHRoZSBob3N0IHBvd2VyIHNhbXBsZTo6DQo+ICsgICAgICAgICMgLi9leGFt cGxlcy92bV9wb3dlcl9tYW5hZ2VyL2d1ZXN0X2NsaS9idWlsZC9ndWVzdF92bV9wb3dlcl9tZ3IN Cj4gLWMgMHhmZiAtbiA0IC1tIDEwMjQgLS1uby1wY2kgLS1maWxlLXByZWZpeD15YW9sZWkgXA0K PiArICAgICAgICAjIC0tIC0tdm0tbmFtZT11YnVudHUgLS12Y3B1LWxpc3Q9MC03DQo+ICsgICAg ICAgICMgPiBzZXRfY3B1X2ZyZXEgMTI4IGRvd24NCj4gKyAgICAgICAgIyA+IHNldF9jcHVfZnJl cSAxMDAwMDAwMDAwMDAwIGRvd24NCj4gKyAgICAgICAgIyA+IHNldF9jcHVfZnJlcSAtMSBkb3du DQo+ICsgICAgICAgICMgYWxzbyB0cnkgb3RoZXIgY29tbWFuZHM6Og0KPiArICAgICAgICAjICI8 dXB8ZG93bnxtaW58bWF4fGVuYWJsZV90dXJib3xkaXNhYmxlX3R1cmJvPiINCj4gKyAgICAgICAg IyBDaGVjayBwb2ludDrjgIBObyBjcmFzaCBzaG91bGQgYmUgb2NjdXIgYXQgdm1fcG93ZXJfbWdy IHNhbXBsZQ0KPiArDQo+ICsgICAgICAgICMgc3RhcnQgdm1fcG93ZXJfbWdyDQo+ICsgICAgICAg IG9wdGlvbiA9ICcgLXYgLWwgMS0zIC1uIDQgLS1maWxlLXByZWZpeD10ZXN0MSAtLW5vLXBjaSAn DQo+ICsgICAgICAgIGNtZCA9IFsnICcuam9pbihbc2VsZi52bV9wb3dlcl9tZ3IsIG9wdGlvbl0p LCAndm1wb3dlcj4nLCAzMF0NCj4gKyAgICAgICAgc2VsZi5kX2NvbihjbWQpDQo+ICsgICAgICAg IHNlbGYuaXNfbWdyX29uID0gVHJ1ZQ0KPiArDQo+ICsgICAgICAgIHNlbGYuZF9jb24oWydhZGRf dm0ge30nLmZvcm1hdChzZWxmLnZtX25hbWUpLCAndm1wb3dlcj4nLCA1XSkNCj4gKyAgICAgICAg c2VsZi5kX2NvbihbJ2FkZF9jaGFubmVscyB7fSBhbGwnLmZvcm1hdChzZWxmLnZtX25hbWUpLCAn dm1wb3dlcj4nLCA1XSkNCj4gKyAgICAgICAgc2VsZi5kX2NvbihbJ2FkZF9jaGFubmVsc19zdGF0 dXMge30gYWxsJy5mb3JtYXQoc2VsZi52bV9uYW1lKSwNCj4gJ3ZtcG93ZXI+JywgNV0pDQo+ICsg ICAgICAgIHZtX2luZm8gPSBzZWxmLmRfY29uKFsnc2hvd192bSB7fScuZm9ybWF0KHNlbGYudm1f bmFtZSksICd2bXBvd2VyPicsIDVdKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgnQ09OTkVDVEVE JyBpbiB2bV9pbmZvLCAndm1fcG93ZXJfbWFuYWdlciBkaWQgbm90DQo+ICsgd29yayBhcyBleHBl Y3RlZCcpDQo+ICsNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kX2NvbihbJ2FkZF9jaGFubmVscyB1 YnVudHUgMTI4JywgJ3ZtcG93ZXI+JywgNV0pDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJTZWdt ZW50YXRpb24gZmF1bHQiIG5vdCBpbiBvdXQgYW5kICdjb3JlIGR1bXAnIG5vdCBpbiBvdXQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICJTZWdtZW50YXRpb24gZmF1bHQgb3IgY29yZSBkdW1wZWQg aGFwcGVuZWQiKQ0KPiArDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZF9jb24oWydhZGRfY2hhbm5l bCB1YnVudHUgMTAwMDAwMDAwMDAwMDAwMDAnLCAndm1wb3dlcj4nLA0KPiA1XSkNCj4gKyAgICAg ICAgc2VsZi52ZXJpZnkoIlNlZ21lbnRhdGlvbiBmYXVsdCIgbm90IGluIG91dCBhbmQgJ2NvcmUg ZHVtcCcgbm90IGluIG91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIlNlZ21lbnRhdGlvbiBm YXVsdCBvciBjb3JlIGR1bXBlZCBoYXBwZW5lZCIpDQo+ICsNCj4gKyAgICAgICAgIyBzdGFydCB2 bV9wb3dlcl9tZ3INCj4gKyAgICAgICAgcHJvbXB0ID0gciJ2bXBvd2VyXChndWVzdFwpPiINCj4g KyAgICAgICAgdm1fcHdyX3F1ZXN0ID0gc2VsZi5ndWVzdF9jbGkgKyAnIC12IC1jIDB4ZmYgLW4g NCAtbSAxMDI0IC0tbm8tcGNpIC0tZmlsZS0NCj4gcHJlZml4PXlhb2xlaSAtLSAtLXZtLW5hbWU9 dWJ1bnR1IC0tdmNwdS1saXN0PTAtNyAnDQo+ICsgICAgICAgIHNlbGYudm1fZ19jb24oW3ZtX3B3 cl9xdWVzdCwgcHJvbXB0LCAxMjBdKQ0KPiArICAgICAgICBzZWxmLmlzX2d1ZXN0X29uID0gVHJ1 ZQ0KPiArDQo+ICsgICAgICAgIGNvbW1hbmRzID0gWyd1cCcsICdkb3duJywgJ21pbicsICdtYXgn LCAnZW5hYmxlX3R1cmJvJywgJ2Rpc2FibGVfdHVyYm8nXQ0KPiArICAgICAgICBudW1iZXJzID0g WycxMjgnLCAnMTAwMDAwMDAwMDAwMCcsICctMSddDQo+ICsgICAgICAgIGZvciBjb21tYW5kIGlu IGNvbW1hbmRzOg0KPiArICAgICAgICAgICAgZm9yIG51bWJlciBpbiBudW1iZXJzOg0KPiArICAg ICAgICAgICAgICAgIGNtZF9saW5lID0gJ3NldF9jcHVfZnJlcSB7fSB7fScuZm9ybWF0KG51bWJl ciwgY29tbWFuZCkNCj4gKyAgICAgICAgICAgICAgICBvdXQgPSBzZWxmLnZtX2dfY29uKFtjbWRf bGluZSwgcHJvbXB0LCAxMF0pDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygn dm1wb3dlcihndWVzdCk+IHt9IC0tPiBvdXQ6IHt9Jy5mb3JtYXQoY21kX2xpbmUsIG91dCkpDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkoIlNlZ21lbnRhdGlvbiBmYXVsdCIgbm90IGlu IG91dCBhbmQgJ2NvcmUgZHVtcCcgbm90IGluIG91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiU2VnbWVudGF0aW9uIGZhdWx0IG9yIGNvcmUgZHVtcGVkDQo+ICsgaGFwcGVuZWQi KQ0KPiArDQo+ICsNCj4gKyAgICBkZWYgdmVyaWZ5X3RyYWZmaWNfcG9saWN5X3Rlc3RfYmFzZWRf b25fanNvbihzZWxmKToNCj4gKyAgICAgICAgIyBUZXN0IENhc2U0IDogVFJBRkZJQyBQb2xpY3kg VGVzdCBiYXNlZCBvbiBKU09OIGNvbmZpZ3VyZSBmaWxlIHdpdGggbGFyZ2UNCj4gaW50ZWdlciBu dW1iZXINCj4gKyAgICAgICAgIw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09PT09PT09PT09PT09 PQ0KPiArICAgICAgICAjIFN0ZXAxLiBHZW5lcmF0ZSAxIFZGIHVuZGVyIGlnYl91aW8gZHJpdmVy LCBsYXVuY2ggdm1fcG93ZXJfbWdyDQo+IHNhbXBsZSB3aXRoIFBGLCBmb3IgZXhhbXBsZToNCj4g KyAgICAgICAgIyAJZWNobyAxID4gL3N5cy9idXMvcGNpL2RyaXZlcnMvaWdiX3Vpby8wMDAwXDo4 Mlw6MDAuMC9tYXhfdmZzDQo+ICsgICAgICAgICMgCS4vZXhhbXBsZXMvdm1fcG93ZXJfbWFuYWdl ci9idWlsZC92bV9wb3dlcl9tZ3IgLWwgMS00IC1uIDQgLS0NCj4gc29ja2V0LW1lbT0xMDI0LDEw MjQgLS1maWxlLXByZWZpeD10ZXN0MSAtdyA4MjowMC4wIC0tIC1wIDB4MDENCj4gKyAgICAgICAg IyBTdGVwIDIuIExhdW5jaCB0ZXN0cG1kIHdpdGggVkYNCj4gKyAgICAgICAgIyAJLi94ODZfNjQt bmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtbCA1LTYgLW4gNCAtLXNvY2tldC0NCj4g bWVtPTEwMjQsMTAyNCAtLWZpbGUtcHJlZml4PXRlc3QyIC13IDAwMDA6ODI6MDIuMCAtLSAtaQ0K PiArICAgICAgICAjIAk+c2V0IGZ3ZCBtYWNzd2FwDQo+ICsgICAgICAgICMgCT5zdGFydA0KPiAr ICAgICAgICAjIFN0ZXAgMy4gUHJlcGFyZSB0cmFmZmljIHBvbGljeSBpbiBKU09OIGZvcm1hdCB0 aGVuIHNlbmQgaXQgdG8gdGhlIHBvd2VyDQo+IGRlbW9uIHNhbXBsZSwgcHV0IHRoZSBWRiBNQUMg aW50byB0aGUgbWFjX2xpc3Q6DQo+ICsgICAgICAgICMgCXsicG9saWN5Ijogew0KPiArICAgICAg ICAjIAkgICJuYW1lIjogInVidW50dSIsDQo+ICsgICAgICAgICMgCSAgImNvbW1hbmQiOiAiY3Jl YXRlIiwNCj4gKyAgICAgICAgIyAJICAicG9saWN5X3R5cGUiOiAiVFJBRkZJQyIsDQo+ICsgICAg ICAgICMgICAgICJtYXhfcGFja2V0X3RocmVzaCI6IDUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMCwNCj4gKyAgICAgICAgIyAJICAiYXZnX3BhY2tldF90aHJlc2giOiAzMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAsDQo+ICsgICAgICAgICMgCSAgIm1hY19saXN0IjpbICJFMDpFMDpF MDpFMDpGMDpGMCJdDQo+ICsgICAgICAgICMgCX19DQo+ICsgICAgICAgICMgCWNhdCB0cmFmZmlj Lmpzb24gPi90bXAvcG93ZXJtb25pdG9yL2ZpZm8zDQo+ICsgICAgICAgICMgQ2hlY2sgcG9pbnQ6 44CATm8gY3Jhc2ggc2hvdWxkIGJlIG9jY3VyIGF0IHZtX3Bvd2VyX21nciBzYW1wbGUNCj4gKw0K PiArICAgICAgICAjIHNlbGYuZF9jb24oWydlY2hvIDEgPg0KPiAvc3lzL2J1cy9wY2kvZHJpdmVy cy9pZ2JfdWlvLzAwMDBcOjgyXDowMC4wL21heF92ZnMnLCAnIycsIDEwXSkNCj4gKyAgICAgICAg c2VsZi5kX2NvbihbZidlY2hvIDEgPg0KPiArICIvc3lzL2J1cy9wY2kvZHJpdmVycy92ZmlvLXBj aS97c2VsZi5wb3J0X3BjaX0vc3Jpb3ZfbnVtdmZzIicsICcjJywNCj4gKyAxMF0pDQo+ICsNCj4g KyAgICAgICAgIyBzdGFydCB2bV9wb3dlcl9tZ3INCj4gKyAgICAgICAgY21kID0gZid7c2VsZi52 bV9wb3dlcl9tZ3J9IC1sIDEtNCAtbiA0IC0tc29ja2V0LW1lbT0xMDI0LDEwMjQgLS1maWxlLQ0K PiBwcmVmaXg9dGVzdDEgLXcge3NlbGYucG9ydF9wY2l9IC0tIC1wIDB4MDEnDQo+ICsgICAgICAg IHNlbGYuZF9hX2NvbihbY21kLCAndm1wb3dlcj4nLCAzMF0pDQo+ICsgICAgICAgIHNlbGYuaXNf bWdyX29uID0gVHJ1ZQ0KPiArDQo+ICsgICAgICAgIHZtX2luZm8gPSBzZWxmLmRfYV9jb24oWydz aG93X2NwdV9mcmVxIDEnLCAndm1wb3dlcj4nLCA1XSkNCj4gKyAgICAgICAgc2VsZi5sb2dnZXIu aW5mbyh2bV9pbmZvKQ0KPiArDQo+ICsgICAgICAgICMgU3RlcCAyLiAgTGF1bmNoIHRlc3RwbWQg d2l0aCBWRg0KPiArICAgICAgICBjbWQgPSBmJ3tzZWxmLnRlc3RwbWR9IC1sIDUtNiAtbiA0IC0t c29ja2V0LW1lbT0xMDI0LDEwMjQgLS1maWxlLQ0KPiBwcmVmaXg9dGVzdDIgLXcge3NlbGYucG9y dF9wY2l9IC0tIC1pJw0KPiArICAgICAgICBzZWxmLmRfY29uKFtjbWQsICd0ZXN0cG1kPicsIDMw XSkNCj4gKyAgICAgICAgc2VsZi5pc190ZXN0cG1kX29uID0gVHJ1ZQ0KPiArDQo+ICsgICAgICAg IHNlbGYuZF9jb24oWydzZXQgZndkIG1hY3N3YXAnLCAndGVzdHBtZD4nLCA1XSkNCj4gKyAgICAg ICAgc2VsZi5kX2NvbihbJ3N0YXJ0JywgJ3Rlc3RwbWQ+JywgNV0pDQo+ICsgICAgICAgIHNlbGYu Y2xvc2VfdGVzdHBtZCgpDQo+ICsNCj4gKyAgICAgICAgIyBwcmVwYXJlIGFuIHNlbiB0aGUganNv biBmaWxlIHRvIGZpZm8NCj4gKyAgICAgICAgZWNob19qc29uID0gKA0KPiArICAgICAgICAgICAg J2VjaG8ge1xcInBvbGljeVxcIjogeycNCj4gKyAgICAgICAgICAgICcgIFxcIm5hbWVcXCI6IFxc InVidW50dVxcIiwnDQo+ICsgICAgICAgICAgICAnICBcXCJjb21tYW5kXFwiOiBcXCJjcmVhdGVc XCIsJw0KPiArICAgICAgICAgICAgJyAgXFwicG9saWN5X3R5cGVcXCI6IFxcIlRSQUZGSUNcXCIs Jw0KPiArICAgICAgICAgICAgJyAgXFwibWF4X3BhY2tldF90aHJlc2hcXCI6IDUwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMCwnDQo+ICsgICAgICAgICAgICAnICBcXCJhdmdfcGFja2V0X3Ro cmVzaFxcIjogMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLCcNCj4gKyAgICAgICAgICAg ICcgIFxcIm1hY19saXN0XFwiOlsgXFwiRTA6RTA6RTA6RTA6RjA6RjBcXCJdJw0KPiArICAgICAg ICAgICAgJ319ID4gL3RtcC90cmFmZmljLmpzb247JykNCj4gKyAgICAgICAgY2F0X2pzb24gPSAn Y2F0IC90bXAvdHJhZmZpYy5qc29uID4gL3RtcC9wb3dlcm1vbml0b3IvZmlmbzMnDQo+ICsgICAg ICAgIHNlbGYuZF9jb24oWycgJy5qb2luKFtlY2hvX2pzb24sIGNhdF9qc29uXSksICcjJywgMTBd KQ0KPiArDQo+ICsgICAgICAgICMgQ2hlY2sgcG9pbnQ644CATm8gY3Jhc2ggc2hvdWxkIGJlIG9j Y3VyIGF0IHZtX3Bvd2VyX21nciBzYW1wbGUNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kX2FfY29u KFsnc2hvd19jcHVfZnJlcSAxJywgJ3ZtcG93ZXI+JywgNV0pDQo+ICsgICAgICAgIHNlbGYuZF9h X2NvbihbJ3F1aXQnLCAnIyAnLCAxNV0pDQo+ICsgICAgICAgIHNlbGYuaXNfbWdyX29uID0gRmFs c2UNCj4gKw0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiU2VnbWVudGF0aW9uIGZhdWx0IiBub3Qg aW4gb3V0IGFuZCAnY29yZSBkdW1wJyBub3QgaW4gb3V0LA0KPiArICAgICAgICAgICAgIlNlZ21l bnRhdGlvbiBmYXVsdCBvciBjb3JlIGR1bXBlZCBoYXBwZW5lZCIpDQo+ICsNCj4gKw0KPiArICAg ICMjIyMjIyMjIyMjIyMjIyMjDQo+ICsgICAgIw0KPiArICAgICMgVGVzdCBjYXNlcy4NCj4gKyAg ICAjDQo+ICsgICAgIyMjIyMjIyMjIyMjIyMjIyMNCj4gKw0KPiArICAgIGRlZiBzZXRfdXBfYWxs KHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGF0IHRoZSBzdGFydCBvZiBl YWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLmR1dF9wb3J0 cyA9IHNlbGYuZHV0LmdldF9wb3J0cyhzZWxmLm5pYykNCj4gKyAgICAgICAgc2VsZi52ZXJpZnko bGVuKHNlbGYuZHV0X3BvcnRzKSA+PSAxLCAiTm90IGVub3VnaCBwb3J0cyIpDQo+ICsgICAgICAg IHNlbGYuY2hlY2tfY3B1cG93ZXJfdG9vbCgpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5X3Bvd2Vy X2RyaXZlcigpDQo+ICsgICAgICAgICMgcHJlcGFyZSB0ZXN0aW5nIGVudmlyb25tZW50DQo+ICsg ICAgICAgIHNlbGYucHJlc2V0X3Rlc3RfZW52aXJvbm1lbnQoKQ0KPiArICAgICAgICBzZWxmLnBv cnRfcGNpID0gc2VsZi5kdXQuZ2V0X3BvcnRfcGNpKHNlbGYuZHV0X3BvcnRzWzBdKQ0KPiArDQo+ ICsNCj4gKyAgICBkZWYgdGVhcl9kb3duX2FsbChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgIFJ1biBhZnRlciBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBzZWxmLmNsb3NlX3ZtKCkNCj4gKw0KPiArDQo+ICsgICAgZGVmIHNldF91cChzZWxmKToN Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBiZWZvcmUgZWFjaCB0ZXN0IGNhc2UuDQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICBwYXNzDQo+ICsNCj4gKw0KPiArICAgIGRlZiB0ZWFy X2Rvd24oc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0 ZXN0IGNhc2UuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLmNsb3NlX3ZtX3Bvd2Vy X21ncigpDQo+ICsgICAgICAgIHNlbGYuY2xvc2VfZ3Vlc3RfbWdyKCkNCj4gKyAgICAgICAgc2Vs Zi52bV9kdXQua2lsbF9hbGwoKQ0KPiArICAgICAgICBzZWxmLmR1dC5raWxsX2FsbCgpDQo+ICsN Cj4gKw0KPiArICAgIGRlZiB0ZXN0X2luamVjdF9tYWxmb3JtZWRfanNvbl90b19maWZvX2NoYW5u ZWwoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBJbmplY3QgTWFsZm9ybWVkIEpz b24gQ29tbWFuZCBmaWxlIHRvIGZpZm8gY2hhbm5lbA0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgc2VsZi52ZXJpZnlfaW5qZWN0X21hbGZvcm1lZF9qc29uX3RvX2ZpZm9fY2hhbm5lbCgpDQo+ ICsNCj4gKw0KPiArICAgIGRlZiB0ZXN0X3NlbmRfaW52YWxpZF9jbWRfdGhyb3VnaF9qc29uX2No bihzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFNlbmQgaW52YWxpZCBjb21tYW5k IHRocm91Z2ggSlNPTiBjaGFubmVsDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLnZl cmlmeV9zZW5kX2ludmFsaWRfY21kX3Rocm91Z2hfanNvbl9jaG4oKQ0KPiArDQo+ICsNCj4gKyAg ICBkZWYgdGVzdF9ob3N0X3Bvd2VyX2NoZWNrX3BvbGljeV9mcm9tX3VudHJ1c3RlZF92bShzZWxm KToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIENoZWNrIGlmIGhvc3QgcG93ZXIgQVBQIGhh dmUgY2hlY2sgcG9pbnQgZm9yIHRoZSBwb3dlciBwb2xpY3kNCj4gKyBzZW50IGZyb20gdW50cnVz dGVkIFZNDQo+ICsNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5X2hvc3Rf cG93ZXJfY2hlY2tfcG9saWN5X2Zyb21fdW50cnVzdGVkX3ZtKCkNCj4gKw0KPiArDQo+ICsgICAg ZGVmIHRlc3RfdHJhZmZpY19wb2xpY3lfdGVzdF9iYXNlZF9vbl9qc29uKHNlbGYpOg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgVFJBRkZJQyBQb2xpY3kgVGVzdCBiYXNlZCBvbiBKU09OIGNv bmZpZ3VyZSBmaWxlIHdpdGggbGFyZ2UNCj4gKyBpbnRlZ2VyIG51bWJlcg0KPiArDQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBzZWxmLnZlcmlmeV90cmFmZmljX3BvbGljeV90ZXN0X2Jhc2Vk X29uX2pzb24oKQ0KPiAtLQ0KPiAxLjguMy4xDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBJbnRlbCBSZXNlYXJj aCBhbmQgRGV2ZWxvcG1lbnQgSXJlbGFuZCBMaW1pdGVkIFJlZ2lzdGVyZWQgaW4gSXJlbGFuZCBS ZWdpc3RlcmVkDQo+IE9mZmljZTogQ29sbGluc3Rvd24gSW5kdXN0cmlhbCBQYXJrLCBMZWl4bGlw LCBDb3VudHkgS2lsZGFyZSBSZWdpc3RlcmVkIE51bWJlcjoNCj4gMzA4MjYzDQo+IA0KPiANCj4g VGhpcyBlLW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBtYXkgY29udGFpbiBjb25maWRlbnRpYWwg bWF0ZXJpYWwgZm9yIHRoZSBzb2xlDQo+IHVzZSBvZiB0aGUgaW50ZW5kZWQgcmVjaXBpZW50KHMp LiBBbnkgcmV2aWV3IG9yIGRpc3RyaWJ1dGlvbiBieSBvdGhlcnMgaXMgc3RyaWN0bHkNCj4gcHJv aGliaXRlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIGNv bnRhY3QgdGhlIHNlbmRlciBhbmQNCj4gZGVsZXRlIGFsbCBjb3BpZXMuDQo=