From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id C22117EEF for ; Mon, 25 May 2015 10:01:52 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP; 25 May 2015 01:01:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,490,1427785200"; d="scan'208";a="497866067" Received: from kmsmsx151.gar.corp.intel.com ([172.21.73.86]) by FMSMGA003.fm.intel.com with ESMTP; 25 May 2015 01:01:50 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by KMSMSX151.gar.corp.intel.com (172.21.73.86) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 25 May 2015 16:01:49 +0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.120]) by shsmsx102.ccr.corp.intel.com ([169.254.2.109]) with mapi id 14.03.0224.002; Mon, 25 May 2015 16:01:47 +0800 From: "Xu, HuilongX" To: "Tang, HaifengX" , "dts@dpdk.org" Thread-Topic: [dts] [PATCH] add unit_test_cmdline ,unit_test_dump and unit_test_eal test suite and testplan Thread-Index: AQHQlsAwDzjn5XRvFk+2RNKBWV2Mi52MU5Ug Date: Mon, 25 May 2015 08:01:47 +0000 Message-ID: References: <1432540503-14108-1-git-send-email-haifengx.tang@intel.com> In-Reply-To: <1432540503-14108-1-git-send-email-haifengx.tang@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-cr-hashedpuzzle: AYZw CQnI C6Qg DCFT D4qq EsUS FB5N F5vK GlfJ G3Wj HOZe Hwbq ITRJ Itx5 KF9I KVEF; 1; ZAB0AHMAQABkAHAAZABrAC4AbwByAGcA; Sosha1_v1; 7; {47A2D0B5-3E28-4699-8CE1-1EE822D3E113}; aAB1AGkAbABvAG4AZwB4AC4AeAB1AEAAaQBuAHQAZQBsAC4AYwBvAG0A; Mon, 25 May 2015 08:01:45 GMT; UgBFADoAIABbAGQAdABzAF0AIABbAFAAQQBUAEMASABdACAAYQBkAGQAIAB1AG4AaQB0AF8AdABlAHMAdABfAGMAbQBkAGwAaQBuAGUAIAAsAHUAbgBpAHQAXwB0AGUAcwB0AF8AZAB1AG0AcAAgAGEAbgBkACAAdQBuAGkAdABfAHQAZQBzAHQAXwBlAGEAbAAgAHQAZQBzAHQAIABzAHUAaQB0AGUAIABhAG4AZAAgAHQAZQBzAHQAcABsAGEAbgA= x-cr-puzzleid: {47A2D0B5-3E28-4699-8CE1-1EE822D3E113} x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dts] [PATCH] add unit_test_cmdline , unit_test_dump and unit_test_eal test suite and testplan X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 08:01:54 -0000 SGkgaGFpZmVuZywNCldvdWxkIHlvdSBzZW5kIHBhdGNoIGFnYWluLCBhbmQgdXNlZCBhIHBhdGNo IGZpbGUgZm9yIGFkZCBhIG5ldyBjb2RlIGZpbGUgYW5kIHJzdCBmaWxlPw0KV2hlbiBJIHJlYWQg dGhlIGNvZGUgaXQgdG9vIHBhaW4uDQpUaGFua3MgIGEgbG90DQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogZHRzIFttYWlsdG86ZHRzLWJvdW5jZXNAZHBkay5vcmddIE9u IEJlaGFsZiBPZiBoYWlmZW5nDQo+IFNlbnQ6IE1vbmRheSwgTWF5IDI1LCAyMDE1IDM6NTUgUE0N Cj4gVG86IGR0c0BkcGRrLm9yZw0KPiBTdWJqZWN0OiBbZHRzXSBbUEFUQ0hdIGFkZCB1bml0X3Rl c3RfY21kbGluZSAsdW5pdF90ZXN0X2R1bXAgYW5kDQo+IHVuaXRfdGVzdF9lYWwgdGVzdCBzdWl0 ZSBhbmQgdGVzdHBsYW4NCj4gDQo+IEZyb206IFRhbmdIYWlmZW5nIDxoYWlmZW5neC50YW5nQGlu dGVsLmNvbT4NCj4gDQo+IC0tLQ0KPiAgdGVzdF9wbGFucy91bml0X3Rlc3RzX2NtZGxpbmVfdGVz dF9wbGFuLnJzdCB8ICAgMzggKysrDQo+ICB0ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZHVtcF90ZXN0 X3BsYW4ucnN0ICAgIHwgIDE2OSArKysrKysrKysrKw0KPiAgdGVzdF9wbGFucy91bml0X3Rlc3Rz X2VhbF90ZXN0X3BsYW4ucnN0ICAgICB8ICAzMTUgKysrKysrKysrKysrKysrKysrKysrDQo+ICB0 ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0c19jbWRsaW5lLnB5ICAgICAgIHwgICA2MCArKysrDQo+ ICB0ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0c19kdW1wLnB5ICAgICAgICAgIHwgIDE4MSArKysr KysrKysrKysNCj4gIHRlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2VhbC5weSAgICAgICAgICAg fCAgNDA5DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgNiBmaWxlcyBjaGFuZ2Vk LCAxMTcyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgdGVzdF9wbGFucy91bml0X3Rlc3RzX2NtZGxpbmVfdGVzdF9wbGFuLnJzdA0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IHRlc3RfcGxhbnMvdW5pdF90ZXN0c19kdW1wX3Rlc3RfcGxhbi5yc3QNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZWFsX3Rlc3RfcGxhbi5y c3QNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9UZXN0U3VpdGVfdW5pdF90ZXN0c19jbWRs aW5lLnB5DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNf ZHVtcC5weQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3Rz X2VhbC5weQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19jbWRsaW5l X3Rlc3RfcGxhbi5yc3QNCj4gYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfY21kbGluZV90ZXN0X3Bs YW4ucnN0DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjk1NzAyZTAN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfY21kbGluZV90 ZXN0X3BsYW4ucnN0DQo+IEBAIC0wLDAgKzEsMzggQEANCj4gKy4uIENvcHlyaWdodCAoYykgPDIw MTA+LCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiArICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKw0K PiArICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0DQo+ICsgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gKyAgIGFyZSBtZXQ6DQo+ICsNCj4g KyAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQNCj4gKyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArDQo+ICsgICAtIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbg0KPiArICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz IHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKw0KPiArICAgLSBO ZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRz DQo+ICsgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg cHJvZHVjdHMgZGVyaXZlZA0KPiArICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsNCj4gKyAgIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCj4g KyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQgTk9UDQo+ICsgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KPiArICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gKyAgIENPUFlSSUdI VCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwNCj4gKyAgIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTDQo+ICsgICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAgIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KPiArICAgSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULA0KPiArICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKQ0KPiArICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRA0KPiArICAgT0YgVEhFIFBPU1NJQklM SVRZIE9GIFNVQ0ggREFNQUdFLg0KPiArDQo+ICs9PT09PT09PT09PT09PT09PT0NCj4gK0NtZGxp bmUgIEF1dG90ZXN0cw0KPiArPT09PT09PT09PT09PT09PT09DQo+ICsNCj4gKw0KPiArVE9ETy4N Cj4gZGlmZiAtLWdpdCBhL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19kdW1wX3Rlc3RfcGxhbi5yc3QN Cj4gYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZHVtcF90ZXN0X3BsYW4ucnN0DQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjIzZGQ5OTMNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi90ZXN0X3BsYW5zL3VuaXRfdGVzdHNfZHVtcF90ZXN0X3BsYW4ucnN0DQo+IEBAIC0w LDAgKzEsMTY5IEBADQo+ICsuLiBDb3B5cmlnaHQgKGMpIDwyMDE0PiwgSW50ZWwgQ29ycG9yYXRp b24NCj4gKyAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsNCj4gKyAgIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiAr ICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zDQo+ICsgICBhcmUgbWV0Og0KPiArDQo+ICsgICAtIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4NCj4gKw0KPiArICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArICAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gKyAgICAgdGhl IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0K PiArICAgICBkaXN0cmlidXRpb24uDQo+ICsNCj4gKyAgIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBJ bnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArICAgICBjb250cmlidXRv cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4g KyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLg0KPiArDQo+ICsgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQo+ICsgICAiQVMgSVMiIEFORCBBTlkg RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KPiArICAg TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MNCj4gKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g SU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+ICsgICBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+ICsgICBJTkNJREVOVEFM LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0KPiArICAgKElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTIE9SDQo+ICsgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikNCj4gKyAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwNCj4gKyAgIFNUUklDVCBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCj4g KyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQNCj4gKyAgIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4N Cj4gKw0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiArRHVtcCBsb2cgaGlzdG9yeSBB dXRvdGVzdA0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtUaGlzIGlzIHRo ZSB0ZXN0IHBsYW4gZm9yIGR1bXAgaGlzdG9yeSBsb2cgb2YgSW50ZWzCriBEUERLIC4NCj4gKw0K PiArVGhpcyBzZWN0aW9uIGV4cGxhaW5zIGhvdyB0byBydW4gdGhlIHVuaXQgdGVzdHMgZm9yIGR1 bXAgaGlzdG9yeSBsb2cuIFRoZQ0KPiB0ZXN0DQo+ICtjYW4gYmUgbGF1bmNoZWQgaW5kZXBlbmRl bnRseSB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFjZS4NCj4gK1RoaXMgdGVzdCBpcyBp bXBsZW1lbnRlZCBhcyBhIGxpbnV4YXBwIGVudmlyb25tZW50IGFwcGxpY2F0aW9uLg0KPiArDQo+ ICtUaGUgY29tcGxldGUgdGVzdCBzdWl0ZSBpcyBsYXVuY2hlZCBhdXRvbWF0aWNhbGx5IHVzaW5n IGEgcHl0aG9uLWV4cGVjdA0KPiArc2NyaXB0IChsYXVuY2hlZCB1c2luZyBgYG1ha2UgdGVzdGBg KSB0aGF0IHNlbmRzIGNvbW1hbmRzIHRvDQo+ICt0aGUgYXBwbGljYXRpb24gYW5kIGNoZWNrcyB0 aGUgcmVzdWx0cy4gQSB0ZXN0IHJlcG9ydCBpcyBkaXNwbGF5ZWQgb24NCj4gK3N0ZG91dC4NCj4g Kw0KPiArVGhlIHN0ZXBzIHRvIHJ1biB0aGUgdW5pdCB0ZXN0IG1hbnVhbGx5IGFyZSBhcyBmb2xs b3c6Og0KPiArDQo+ICsgICMgbWFrZSAtQyAuL2FwcC90ZXN0Lw0KPiArICAjIC4vYXBwL3Rlc3Qv dGVzdCAtbiAxIC1jIGZmZmYNCj4gKyAgUlRFPj4gZHVtcF9sb2dfaGlzdG9yeQ0KPiArDQo+ICtU aGUgZmluYWwgb3V0cHV0IG9mIHRoZSB0ZXN0IHdpbGwgYmUgdGhlIGluaXRpYWwgbG9nIG9mIERQ REsuDQo+ICsNCj4gKz09PT09PT09PT09PT09PT09PQ0KPiArRHVtcCByaW5nIEF1dG90ZXN0DQo+ ICs9PT09PT09PT09PT09PT09PT0NCj4gKw0KPiArVGhpcyBpcyB0aGUgdGVzdCBwbGFuIGZvciBk dW1wIHRoZSBlbGVtZW50cyBvZiBJbnRlbMKuIERQREsgcmluZy4NCj4gKw0KPiArVGhpcyBzZWN0 aW9uIGV4cGxhaW5zIGhvdyB0byBydW4gdGhlIHVuaXQgdGVzdHMgZm9yIGR1bXAgZWxlbWVudHMg b2YgcmluZy4NCj4gK1RoZSB0ZXN0IGNhbiBiZSBsYXVuY2hlZCBpbmRlcGVuZGVudGx5IHVzaW5n IHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLg0KPiArVGhpcyB0ZXN0IGlzIGltcGxlbWVudGVk IGFzIGEgbGludXhhcHAgZW52aXJvbm1lbnQgYXBwbGljYXRpb24uDQo+ICsNCj4gK1RoZSBjb21w bGV0ZSB0ZXN0IHN1aXRlIGlzIGxhdW5jaGVkIGF1dG9tYXRpY2FsbHkgdXNpbmcgYSBweXRob24t ZXhwZWN0DQo+ICtzY3JpcHQgKGxhdW5jaGVkIHVzaW5nIGBgbWFrZSB0ZXN0YGApIHRoYXQgc2Vu ZHMgY29tbWFuZHMgdG8NCj4gK3RoZSBhcHBsaWNhdGlvbiBhbmQgY2hlY2tzIHRoZSByZXN1bHRz LiBBIHRlc3QgcmVwb3J0IGlzIGRpc3BsYXllZCBvbg0KPiArc3Rkb3V0Lg0KPiArDQo+ICtUaGUg c3RlcHMgdG8gcnVuIHRoZSB1bml0IHRlc3QgbWFudWFsbHkgYXJlIGFzIGZvbGxvdzo6DQo+ICsN Cj4gKyAgIyBtYWtlIC1DIC4vYXBwL3Rlc3QvDQo+ICsgICMgLi9hcHAvdGVzdC90ZXN0IC1uIDEg LWMgZmZmZg0KPiArICBSVEU+PiBkdW1wX3JpbmcNCj4gKw0KPiArVGhlIGZpbmFsIG91dHB1dCBv ZiB0aGUgdGVzdCB3aWxsIGJlIGRldGFpbCBlbGVtZW50cyBvZiBEUERLIHJpbmcuDQo+ICsNCj4g Kz09PT09PT09PT09PT09PT09PT09PQ0KPiArRHVtcCBtZW1wb29sIEF1dG90ZXN0DQo+ICs9PT09 PT09PT09PT09PT09PT09PT0NCj4gKw0KPiArVGhpcyBpcyB0aGUgdGVzdCBwbGFuIGZvciBkdW1w IHRoZSBlbGVtZW50cyBvZiBJbnRlbMKuIERQREsgbWVtcG9vbC4NCj4gKw0KPiArVGhpcyBzZWN0 aW9uIGV4cGxhaW5zIGhvdyB0byBydW4gdGhlIHVuaXQgdGVzdHMgZm9yIGR1bXAgZWxlbWVudHMg b2YNCj4gbWVtcG9vbC4NCj4gK1RoZSB0ZXN0IGNhbiBiZSBsYXVuY2hlZCBpbmRlcGVuZGVudGx5 IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLg0KPiArVGhpcyB0ZXN0IGlzIGltcGxl bWVudGVkIGFzIGEgbGludXhhcHAgZW52aXJvbm1lbnQgYXBwbGljYXRpb24uDQo+ICsNCj4gK1Ro ZSBjb21wbGV0ZSB0ZXN0IHN1aXRlIGlzIGxhdW5jaGVkIGF1dG9tYXRpY2FsbHkgdXNpbmcgYSBw eXRob24tZXhwZWN0DQo+ICtzY3JpcHQgKGxhdW5jaGVkIHVzaW5nIGBgbWFrZSB0ZXN0YGApIHRo YXQgc2VuZHMgY29tbWFuZHMgdG8NCj4gK3RoZSBhcHBsaWNhdGlvbiBhbmQgY2hlY2tzIHRoZSBy ZXN1bHRzLiBBIHRlc3QgcmVwb3J0IGlzIGRpc3BsYXllZCBvbg0KPiArc3Rkb3V0Lg0KPiArDQo+ ICtUaGUgc3RlcHMgdG8gcnVuIHRoZSB1bml0IHRlc3QgbWFudWFsbHkgYXJlIGFzIGZvbGxvdzo6 DQo+ICsNCj4gKyAgIyBtYWtlIC1DIC4vYXBwL3Rlc3QvDQo+ICsgICMgLi9hcHAvdGVzdC90ZXN0 IC1uIDEgLWMgZmZmZg0KPiArICBSVEU+PiBkdW1wX21lbXBvb2wNCj4gKw0KPiArVGhlIGZpbmFs IG91dHB1dCBvZiB0aGUgdGVzdCB3aWxsIGJlIGRldGFpbCBlbGVtZW50cyBvZiBEUERLIG1lbXBv b2wuDQo+ICsNCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ICtEdW1wIFBoeXNp Y2FsIG1lbW9yeSBBdXRvdGVzdA0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4g Kw0KPiArVGhpcyBpcyB0aGUgdGVzdCBwbGFuIGZvciBkdW1wIHRoZSBlbGVtZW50cyBvZiBJbnRl bMKuIERQREsgcGh5c2ljYWwNCj4gbWVtb3J5Lg0KPiArDQo+ICtUaGlzIHNlY3Rpb24gZXhwbGFp bnMgaG93IHRvIHJ1biB0aGUgdW5pdCB0ZXN0cyBmb3IgZHVtcCBlbGVtZW50cyBvZg0KPiBtZW1v cnkuDQo+ICtUaGUgdGVzdCBjYW4gYmUgbGF1bmNoZWQgaW5kZXBlbmRlbnRseSB1c2luZyB0aGUg Y29tbWFuZCBsaW5lIGludGVyZmFjZS4NCj4gK1RoaXMgdGVzdCBpcyBpbXBsZW1lbnRlZCBhcyBh IGxpbnV4YXBwIGVudmlyb25tZW50IGFwcGxpY2F0aW9uLg0KPiArDQo+ICtUaGUgY29tcGxldGUg dGVzdCBzdWl0ZSBpcyBsYXVuY2hlZCBhdXRvbWF0aWNhbGx5IHVzaW5nIGEgcHl0aG9uLWV4cGVj dA0KPiArc2NyaXB0IChsYXVuY2hlZCB1c2luZyBgYG1ha2UgdGVzdGBgKSB0aGF0IHNlbmRzIGNv bW1hbmRzIHRvDQo+ICt0aGUgYXBwbGljYXRpb24gYW5kIGNoZWNrcyB0aGUgcmVzdWx0cy4gQSB0 ZXN0IHJlcG9ydCBpcyBkaXNwbGF5ZWQgb24NCj4gK3N0ZG91dC4NCj4gKw0KPiArVGhlIHN0ZXBz IHRvIHJ1biB0aGUgdW5pdCB0ZXN0IG1hbnVhbGx5IGFyZSBhcyBmb2xsb3c6Og0KPiArDQo+ICsg ICMgbWFrZSAtQyAuL2FwcC90ZXN0Lw0KPiArICAjIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZm ZmYNCj4gKyAgUlRFPj4gZHVtcF9waHlzbWVtDQo+ICsNCj4gK1RoZSBmaW5hbCBvdXRwdXQgb2Yg dGhlIHRlc3Qgd2lsbCBiZSBkZXRhaWwgZWxlbWVudHMgb2YgRFBESyBwaHlzaWNhbA0KPiBtZW1v cnkuDQo+ICsNCj4gKz09PT09PT09PT09PT09PT09PT09PQ0KPiArRHVtcCBNZW16b25lIEF1dG90 ZXN0DQo+ICs9PT09PT09PT09PT09PT09PT09PT0NCj4gKw0KPiArVGhpcyBpcyB0aGUgdGVzdCBw bGFuIGZvciBkdW1wIHRoZSBlbGVtZW50cyBvZiBJbnRlbMKuIERQREsgbWVtem9uZS4NCj4gKw0K PiArVGhpcyBzZWN0aW9uIGV4cGxhaW5zIGhvdyB0byBydW4gdGhlIHVuaXQgdGVzdHMgZm9yIGR1 bXAgZWxlbWVudHMgb2YNCj4gbWVtem9uZS4NCj4gK1RoZSB0ZXN0IGNhbiBiZSBsYXVuY2hlZCBp bmRlcGVuZGVudGx5IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLg0KPiArVGhpcyB0 ZXN0IGlzIGltcGxlbWVudGVkIGFzIGEgbGludXhhcHAgZW52aXJvbm1lbnQgYXBwbGljYXRpb24u DQo+ICsNCj4gK1RoZSBjb21wbGV0ZSB0ZXN0IHN1aXRlIGlzIGxhdW5jaGVkIGF1dG9tYXRpY2Fs bHkgdXNpbmcgYSBweXRob24tZXhwZWN0DQo+ICtzY3JpcHQgKGxhdW5jaGVkIHVzaW5nIGBgbWFr ZSB0ZXN0YGApIHRoYXQgc2VuZHMgY29tbWFuZHMgdG8NCj4gK3RoZSBhcHBsaWNhdGlvbiBhbmQg Y2hlY2tzIHRoZSByZXN1bHRzLiBBIHRlc3QgcmVwb3J0IGlzIGRpc3BsYXllZCBvbg0KPiArc3Rk b3V0Lg0KPiArDQo+ICtUaGUgc3RlcHMgdG8gcnVuIHRoZSB1bml0IHRlc3QgbWFudWFsbHkgYXJl IGFzIGZvbGxvdzo6DQo+ICsNCj4gKyAgIyBtYWtlIC1DIC4vYXBwL3Rlc3QvDQo+ICsgICMgLi9h cHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZg0KPiArICBSVEU+PiBkdW1wX21lbXpvbmUNCj4gKw0K PiArVGhlIGZpbmFsIG91dHB1dCBvZiB0aGUgdGVzdCB3aWxsIGJlIGRldGFpbCBlbGVtZW50cyBv ZiBEUERLIG1lbXpvbmUuDQo+ICsNCj4gKz09PT09PT09PT09PT09PT0NCj4gK0R1bXAgU3RydWN0 IHNpemUNCj4gKz09PT09PT09PT09PT09PT0NCj4gKw0KPiArVGhpcyBpcyB0aGUgdGVzdCBwbGFu IGZvciBkdW1wIHRoZSBzaXplIG9mIEludGVswq4gRFBESyBzdHJ1Y3R1cmUuDQo+ICsNCj4gK1Ro aXMgc2VjdGlvbiBleHBsYWlucyBob3cgdG8gcnVuIHRoZSB1bml0IHRlc3RzIGZvciBkdW1wIHN0 cnVjdHVyZSBzaXplLg0KPiArVGhlIHRlc3QgY2FuIGJlIGxhdW5jaGVkIGluZGVwZW5kZW50bHkg dXNpbmcgdGhlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuDQo+ICtUaGlzIHRlc3QgaXMgaW1wbGVt ZW50ZWQgYXMgYSBsaW51eGFwcCBlbnZpcm9ubWVudCBhcHBsaWNhdGlvbi4NCj4gKw0KPiArVGhl IGNvbXBsZXRlIHRlc3Qgc3VpdGUgaXMgbGF1bmNoZWQgYXV0b21hdGljYWxseSB1c2luZyBhIHB5 dGhvbi1leHBlY3QNCj4gK3NjcmlwdCAobGF1bmNoZWQgdXNpbmcgYGBtYWtlIHRlc3RgYCkgdGhh dCBzZW5kcyBjb21tYW5kcyB0bw0KPiArdGhlIGFwcGxpY2F0aW9uIGFuZCBjaGVja3MgdGhlIHJl c3VsdHMuIEEgdGVzdCByZXBvcnQgaXMgZGlzcGxheWVkIG9uDQo+ICtzdGRvdXQuDQo+ICsNCj4g K1RoZSBzdGVwcyB0byBydW4gdGhlIHVuaXQgdGVzdCBtYW51YWxseSBhcmUgYXMgZm9sbG93OjoN Cj4gKw0KPiArICAjIG1ha2UgLUMgLi9hcHAvdGVzdC8NCj4gKyAgIyAuL2FwcC90ZXN0L3Rlc3Qg LW4gMSAtYyBmZmZmDQo+ICsgIFJURT4+IGR1bXBfc3RydWN0X3NpemVzDQo+ICsNCj4gK1RoZSBm aW5hbCBvdXRwdXQgb2YgdGhlIHRlc3Qgd2lsbCBiZSB0aGUgc2l6ZSBvZiBEUERLIHN0cnVjdHVy ZS4NCj4gZGlmZiAtLWdpdCBhL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19lYWxfdGVzdF9wbGFuLnJz dA0KPiBiL3Rlc3RfcGxhbnMvdW5pdF90ZXN0c19lYWxfdGVzdF9wbGFuLnJzdA0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5jMWY4OTUwDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvdGVzdF9wbGFucy91bml0X3Rlc3RzX2VhbF90ZXN0X3BsYW4ucnN0DQo+IEBAIC0w LDAgKzEsMzE1IEBADQo+ICsuLiBDb3B5cmlnaHQgKGMpIDwyMDEwPiwgSW50ZWwgQ29ycG9yYXRp b24NCj4gKyAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsNCj4gKyAgIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiAr ICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zDQo+ICsgICBhcmUgbWV0Og0KPiArDQo+ICsgICAtIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4NCj4gKw0KPiArICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArICAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gKyAgICAgdGhl IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0K PiArICAgICBkaXN0cmlidXRpb24uDQo+ICsNCj4gKyAgIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBJ bnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArICAgICBjb250cmlidXRv cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4g KyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLg0KPiArDQo+ICsgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQo+ICsgICAiQVMgSVMiIEFORCBBTlkg RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KPiArICAg TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MNCj4gKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g SU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+ICsgICBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+ICsgICBJTkNJREVOVEFM LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0KPiArICAgKElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTIE9SDQo+ICsgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikNCj4gKyAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwNCj4gKyAgIFNUUklDVCBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCj4g KyAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQNCj4gKyAgIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4N Cj4gKw0KPiArPT09PT09PT09PT09PQ0KPiArRUFMIEF1dG90ZXN0cw0KPiArPT09PT09PT09PT09 PQ0KPiArDQo+ICtUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSB0ZXN0cyB0aGF0IGFyZSBkb25l IHRvIHZhbGlkYXRlIHRoZSBFQUwuIEVhY2gNCj4gK3Rlc3QgY2FuIGJlIGxhdW5jaGVkIGluZGVw ZW5kZW50bHkgdXNpbmcgdGhlIGNvbW1hbmQgbGluZQ0KPiAraW50ZXJmYWNlLiBUaGVzZSB0ZXN0 cyBhcmUgaW1wbGVtZW50ZWQgYXMgYSBsaW51eGFwcCBlbnZpcm9ubWVudA0KPiArYXBwbGljYXRp b24uDQo+ICsNCj4gK1RoZSBjb21wbGV0ZSB0ZXN0IHN1aXRlIGlzIGxhdW5jaGVkIGF1dG9tYXRp Y2FsbHkgdXNpbmcgYSBweXRob24tZXhwZWN0DQo+ICtzY3JpcHQgKGxhdW5jaGVkIHVzaW5nIGBg bWFrZSB0ZXN0YGApIHRoYXQgc2VuZHMgY29tbWFuZHMgdG8NCj4gK3RoZSBhcHBsaWNhdGlvbiBh bmQgY2hlY2tzIHRoZSByZXN1bHRzLiBBIHRlc3QgcmVwb3J0IGlzIGRpc3BsYXllZCBvbg0KPiAr c3Rkb3V0Lg0KPiArDQo+ICtWZXJzaW9uDQo+ICs9PT09PT09DQo+ICsNCj4gK1RvIEJlIEZpbGxl ZA0KPiArDQo+ICsNCj4gK0NvbW1vbg0KPiArPT09PT09PQ0KPiArDQo+ICtUbyBCZSBGaWxsZWQN Cj4gKw0KPiArRWFsX2ZzDQo+ICs9PT09PT0NCj4gKw0KPiArVG8gQmUgRmlsbGVkDQo+ICsNCj4g K01lbW9yeQ0KPiArPT09PT09DQo+ICsNCj4gKy0gRHVtcCB0aGUgbWFwcGVkIG1lbW9yeS4gVGhl IHB5dGhvbi1leHBlY3Qgc2NyaXB0IGNoZWNrcyB0aGF0IGF0DQo+ICsgIGxlYXN0IG9uZSBsaW5l IGlzIGR1bXBlZC4NCj4gKw0KPiArLSBDaGVjayB0aGF0IG1lbW9yeSBzaXplIGlzIGRpZmZlcmVu dCB0aGFuIDAuDQo+ICsNCj4gKy0gVHJ5IHRvIHJlYWQgYWxsIG1lbW9yeTsgaXQgc2hvdWxkIG5v dCBzZWdmYXVsdC4NCj4gKw0KPiArUENJDQo+ICs9PT0NCj4gKw0KPiArLSBSZWdpc3RlciBhIGRy aXZlciB3aXRoIGEgYGBkZXZpbml0KClgYCBmdW5jdGlvbi4NCj4gKw0KPiArLSBEdW1wIGFsbCBQ Q0kgZGV2aWNlcy4NCj4gKw0KPiArLSBDaGVjayB0aGF0IHRoZSBgYGRldmluaXQoKWBgIGZ1bmN0 aW9uIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLg0KPiArDQo+ICtQZXItbGNvcmUgVmFyaWFibGVz IGFuZCBsY29yZSBMYXVuY2gNCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KPiArDQo+ICstIFVzZSBgYHJ0ZV9lYWxfbXBfcmVtb3RlX2xhdW5jaCgpYGAgdG8gY2FsbCBg YGFzc2lnbl92YXJzKClgYCBvbg0KPiArICBldmVyeSBhdmFpbGFibGUgbGNvcmUuIEluIHRoaXMg ZnVuY3Rpb24sIGEgcGVyLWxjb3JlIHZhcmlhYmxlIGlzDQo+ICsgIGFzc2lnbmVkIHRvIHRoZSBs Y29yZV9pZC4NCj4gKw0KPiArLSBVc2UgYGBydGVfZWFsX21wX3JlbW90ZV9sYXVuY2goKWBgIHRv IGNhbGwgYGBkaXNwbGF5X3ZhcnMoKWBgIG9uDQo+ICsgIGV2ZXJ5IGF2YWlsYWJsZSBsY29yZS4g VGhlIGZ1bmN0aW9uIGNoZWNrcyB0aGF0IHRoZSB2YXJpYWJsZSBpcw0KPiArICBjb3JyZWN0bHkg c2V0LCBvciByZXR1cm5zIC0xLg0KPiArDQo+ICstIElmIGF0IGxlYXN0IG9uZSBwZXItY29yZSB2 YXJpYWJsZSB3YXMgbm90IGNvcnJlY3QsIHRoZSB0ZXN0IGZ1bmN0aW9uDQo+ICsgIHJldHVybnMg LTEuDQo+ICsNCj4gK1NwaW5sb2NrDQo+ICs9PT09PT09PQ0KPiArDQo+ICstIFRoZXJlIGlzIGEg Z2xvYmFsIHNwaW5sb2NrIGFuZCBhIHRhYmxlIG9mIHNwaW5sb2NrcyAob25lIHBlciBsY29yZSku DQo+ICsNCj4gKy0gVGhlIHRlc3QgZnVuY3Rpb24gdGFrZXMgYWxsIG9mIHRoZXNlIGxvY2tzIGFu ZCBsYXVuY2hlcyB0aGUNCj4gKyAgYGB0ZXN0X3NwaW5sb2NrX3Blcl9jb3JlKClgYCBmdW5jdGlv biBvbiBlYWNoIGNvcmUgKGV4Y2VwdCB0aGUgbWFzdGVyKS4NCj4gKw0KPiArICAtIFRoZSBmdW5j dGlvbiB0YWtlcyB0aGUgZ2xvYmFsIGxvY2ssIGRpc3BsYXlzIHNvbWV0aGluZywgdGhlbiByZWxl YXNlcw0KPiArICAgIHRoZSBnbG9iYWwgbG9jay4NCj4gKyAgLSBUaGUgZnVuY3Rpb24gdGFrZXMg dGhlIHBlci1sY29yZSBsb2NrLCBkaXNwbGF5cyBzb21ldGhpbmcsIHRoZW4NCj4gcmVsZWFzZXMN Cj4gKyAgICB0aGUgcGVyLWNvcmUgbG9jay4NCj4gKw0KPiArLSBUaGUgbWFpbiBmdW5jdGlvbiB1 bmxvY2tzIHRoZSBwZXItbGNvcmUgbG9ja3Mgc2VxdWVudGlhbGx5IGFuZA0KPiArICB3YWl0cyBi ZXR3ZWVuIGVhY2ggbG9jay4gVGhpcyB0cmlnZ2VycyB0aGUgZGlzcGxheSBvZiBhIG1lc3NhZ2UN Cj4gKyAgZm9yIGVhY2ggY29yZSwgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIFRoZSBhdXRvdGVzdCBz Y3JpcHQgY2hlY2tzIHRoYXQNCj4gKyAgdGhpcyBvcmRlciBpcyBjb3JyZWN0Lg0KPiArDQo+ICtS d2xvY2sNCj4gKz09PT09PQ0KPiArDQo+ICstIFRoZXJlIGlzIGEgZ2xvYmFsIHJ3bG9jayBhbmQg YSB0YWJsZSBvZiByd2xvY2tzIChvbmUgcGVyIGxjb3JlKS4NCj4gKw0KPiArLSBUaGUgdGVzdCBm dW5jdGlvbiB0YWtlcyBhbGwgb2YgdGhlc2UgbG9ja3MgYW5kIGxhdW5jaGVzIHRoZQ0KPiArICBg YHRlc3Rfcndsb2NrX3Blcl9jb3JlKClgYCBmdW5jdGlvbiBvbiBlYWNoIGNvcmUgKGV4Y2VwdCB0 aGUgbWFzdGVyKS4NCj4gKw0KPiArICAtIFRoZSBmdW5jdGlvbiB0YWtlcyB0aGUgZ2xvYmFsIHdy aXRlIGxvY2ssIGRpc3BsYXkgc29tZXRoaW5nLA0KPiArICAgIHRoZW4gcmVsZWFzZXMgdGhlIGds b2JhbCBsb2NrLg0KPiArICAtIFRoZW4sIGl0IHRha2VzIHRoZSBwZXItbGNvcmUgd3JpdGUgbG9j aywgZGlzcGxheSBzb21ldGhpbmcsIGFuZA0KPiArICAgIHJlbGVhc2VzIHRoZSBwZXItY29yZSBs b2NrLg0KPiArICAtIEZpbmFsbHksIGEgcmVhZCBsb2NrIGlzIHRha2VuIGR1cmluZyAxMDAgbXMs IHRoZW4gcmVsZWFzZWQuDQo+ICsNCj4gKy0gVGhlIG1haW4gZnVuY3Rpb24gdW5sb2NrcyB0aGUg cGVyLWxjb3JlIGxvY2tzIHNlcXVlbnRpYWxseSBhbmQNCj4gKyAgd2FpdHMgYmV0d2VlbiBlYWNo IGxvY2suIFRoaXMgdHJpZ2dlcnMgdGhlIGRpc3BsYXkgb2YgYSBtZXNzYWdlDQo+ICsgIGZvciBl YWNoIGNvcmUsIGluIHRoZSBjb3JyZWN0IG9yZGVyLg0KPiArDQo+ICsgIFRoZW4sIGl0IHRyaWVz IHRvIHRha2UgdGhlIGdsb2JhbCB3cml0ZSBsb2NrIGFuZCBkaXNwbGF5IHRoZSBsYXN0DQo+ICsg IG1lc3NhZ2UuIFRoZSBhdXRvdGVzdCBzY3JpcHQgY2hlY2tzIHRoYXQgdGhlIG1lc3NhZ2Ugb3Jk ZXIgaXMgY29ycmVjdC4NCj4gKw0KPiArQXRvbWljIFZhcmlhYmxlcw0KPiArPT09PT09PT09PT09 PT09PQ0KPiArDQo+ICstIFRoZSBtYWluIHRlc3QgZnVuY3Rpb24gcGVyZm9ybXMgdGhyZWUgc3Vi dGVzdHMuIFRoZSBmaXJzdCB0ZXN0DQo+ICsgIGNoZWNrcyB0aGF0IHRoZSB1c3VhbCBpbmMvZGVj L2FkZC9zdWIgZnVuY3Rpb25zIGFyZSB3b3JraW5nDQo+ICsgIGNvcnJlY3RseToNCj4gKw0KPiAr ICAtIEluaXRpYWxpemUgMzItYml0IGFuZCA2NC1iaXQgYXRvbWljIHZhcmlhYmxlcyB0byBzcGVj aWZpYw0KPiArICAgIHZhbHVlcy4NCj4gKw0KPiArICAtIFRoZXNlIHZhcmlhYmxlcyBhcmUgaW5j cmVtZW50ZWQgYW5kIGRlY3JlbWVudGVkIG9uIGVhY2ggY29yZSBhdA0KPiArICAgIHRoZSBzYW1l IHRpbWUgaW4gYGB0ZXN0X2F0b21pY191c3VhbCgpYGAuDQo+ICsNCj4gKyAgLSBUaGUgZnVuY3Rp b24gY2hlY2tzIHRoYXQgb25jZSBhbGwgbGNvcmVzIGZpbmlzaCB0aGVpciBmdW5jdGlvbiwNCj4g KyAgICB0aGUgdmFsdWUgb2YgdGhlIGF0b21pYyB2YXJpYWJsZXMgYXJlIHN0aWxsIHRoZSBzYW1l Lg0KPiArDQo+ICstIFRoZSBzZWNvbmQgdGVzdCB2ZXJpZmllcyB0aGUgYmVoYXZpb3Igb2YgInRl c3QgYW5kIHNldCIgZnVuY3Rpb25zLg0KPiArDQo+ICsgIC0gSW5pdGlhbGl6ZSAzMi1iaXQgYW5k IDY0LWJpdCBhdG9taWMgdmFyaWFibGVzIHRvIHplcm8uDQo+ICsNCj4gKyAgLSBJbnZva2UgYGB0 ZXN0X2F0b21pY190YXMoKWBgIG9uIGVhY2ggbGNvcmUgYmVmb3JlIGRvaW5nIGFueXRoaW5nDQo+ ICsgICAgZWxzZS4gVGhlIGNvcmVzIGFyZSBhd2FpdGluZyBzeW5jaHJvbml6YXRpb2luIHVzaW5n IHRoZSBgYHdoaWxlDQo+ICsgICAgKHJ0ZV9hdG9taWMzMl9yZWFkKCZ2YWwpID09IDApYGAgc3Rh dGVtZW50IHdoaWNoIGlzIHRyaWdnZXJlZCBieSB0aGUNCj4gKyAgICBtYWluIHRlc3QgZnVuY3Rp b24uIFRoZW4gYWxsIGNvcmVzIGRvIGFuDQo+ICsgICAgYGBydGVfYXRvbWljWFhfdGVzdF9hbmRf c2V0KClgYCBhdCB0aGUgc2FtZSB0aW1lLiBJZiBpdCBpcyBzdWNjZXNzZnVsLA0KPiArICAgIGl0 IGluY3JlbWVudHMgYW5vdGhlciBhdG9taWMgY291bnRlci4NCj4gKw0KPiArICAtIFRoZSBtYWlu IGZ1bmN0aW9uIGNoZWNrcyB0aGF0IHRoZSBhdG9taWMgY291bnRlciB3YXMgaW5jcmVtZW50ZWQN Cj4gKyAgICB0d2ljZSBvbmx5IChvbmUgZm9yIDMyLWJpdCBhbmQgb25lIGZvciA2NC1iaXQgdmFs dWVzKS4NCj4gKw0KPiArLSBUZXN0ICJhZGQvc3ViIGFuZCByZXR1cm4iDQo+ICsNCj4gKyAgLSBJ bml0aWFsaXplIDMyLWJpdCBhbmQgNjQtYml0IGF0b21pYyB2YXJpYWJsZXMgdG8gemVyby4NCj4g Kw0KPiArICAtIEludm9rZSBgYHRlc3RfYXRvbWljX2FkZHN1Yl9yZXR1cm4oKWBgIG9uIGVhY2gg bGNvcmUuIEJlZm9yZSBkb2luZw0KPiArICAgIGFueXRoaW5nIGVsc2UsIHRoZSBjb3JlcyBhcmUg d2FpdGluZyBhIHN5bmNocm8uIEVhY2ggbGNvcmUgZG9lcw0KPiArICAgIHRoaXMgb3BlcmF0aW9u IHNldmVyYWwgdGltZXM6Og0KPiArDQo+ICsgICAgICB0bXAgPSBhdG9taWNfYWRkX3JldHVybigm YSwgMSk7DQo+ICsgICAgICBhdG9taWNfYWRkKCZjb3VudCwgdG1wKTsNCj4gKyAgICAgIHRtcCA9 IGF0b21pY19zdWJfcmV0dXJuKCZhLCAxKTsNCj4gKyAgICAgIGF0b21pY19zdWIoJmNvdW50LCB0 bXArMSk7DQo+ICsNCj4gKyAgLSBBdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LCB0aGUgKmNvdW50KiB2 YWx1ZSBtdXN0IGJlIDAuDQo+ICsNCj4gK1ByZWZldGNoDQo+ICs9PT09PT09PQ0KPiArDQo+ICtK dXN0IHRlc3QgdGhhdCB0aGUgbWFjcm8gY2FuIGJlIGNhbGxlZCBhbmQgdmFsaWRhdGUgdGhlIGNv bXBpbGF0aW9uLg0KPiArVGhlIHRlc3QgYWx3YXlzIHJldHVybiBzdWNjZXNzLg0KPiArDQo+ICtC eXRlb3JkZXIgZnVuY3Rpb25zDQo+ICs9PT09PT09PT09PT09PT09PT09DQo+ICsNCj4gK0NoZWNr IHRoZSByZXN1bHQgb2Ygb3B0aW1pemVkIGJ5dGUgc3dhcCBmdW5jdGlvbnMgZm9yIGVhY2ggc2l6 ZSAoMTYtLA0KPiArMzItIGFuZCA2NC1iaXQpLg0KPiArDQo+ICtDeWNsZXMgVGVzdA0KPiArPT09 PT09PT09PT0NCj4gKw0KPiArLSBMb29wIE4gdGltZXMgYW5kIGNoZWNrIHRoYXQgdGhlIHRpbWVy IGFsd2F5IGluY3JlbWVudHMgYW5kDQo+ICsgIG5ldmVyIGRlY3JlbWVudHMgZHVyaW5nIHRoaXMg bG9vcC4NCj4gKw0KPiArLSBXYWl0IG9uZSBzZWNvbmQgdXNpbmcgcnRlX3VzbGVlcCgpIGFuZCBj aGVjayB0aGF0IHRoZSBpbmNyZW1lbnQNCj4gKyAgb2YgY3ljbGVzIGlzIGNvcnJlY3Qgd2l0aCBy ZWdhcmQgdG8gdGhlIGZyZXF1ZW5jeSBvZiB0aGUgdGltZXIuDQo+ICsNCj4gK0xvZ3MNCj4gKz09 PT0NCj4gKw0KPiArLSBFbmFibGUgbG9nIHR5cGVzLg0KPiArLSBTZXQgbG9nIGxldmVsLg0KPiAr LSBFeGVjdXRlIGxvZ2dpbmcgZnVuY3Rpb25zIHdpdGggZGlmZmVyZW50IHR5cGVzIGFuZCBsZXZl bHM7IHNvbWUgc2hvdWxkDQo+ICsgIG5vdCBiZSBkaXNwbGF5ZWQuDQo+ICsNCj4gK01lbXpvbmUN Cj4gKz09PT09PT0NCj4gKw0KPiArLSBTZWFyY2ggZm9yIHRocmVlIHJlc2VydmVkIHpvbmVzIG9y IHJlc2VydmUgdGhlbSBpZiB0aGV5IGRvIG5vdCBleGlzdDoNCj4gKw0KPiArICAtIE9uZSBpcyBv biBhbnkgc29ja2V0IGlkLg0KPiArICAtIFRoZSBzZWNvbmQgaXMgb24gc29ja2V0IDAuDQo+ICsg IC0gVGhlIGxhc3Qgb25lIGlzIG9uIHNvY2tldCAxIChpZiBzb2NrZXQgMSBleGlzdHMpLg0KPiAr DQo+ICstIENoZWNrIHRoYXQgdGhlIHpvbmVzIGV4aXN0Lg0KPiArDQo+ICstIENoZWNrIHRoYXQg dGhlIHpvbmVzIGFyZSBjYWNoZS1hbGlnbmVkLg0KPiArDQo+ICstIENoZWNrIHRoYXQgem9uZXMg ZG8gbm90IG92ZXJsYXAuDQo+ICsNCj4gKy0gQ2hlY2sgdGhhdCB0aGUgem9uZXMgYXJlIG9uIHRo ZSBjb3JyZWN0IHNvY2tldCBpZC4NCj4gKw0KPiArLSBDaGVjayB0aGF0IGEgbG9va3VwIG9mIHRo ZSBmaXJzdCB6b25lIHJldHVybnMgdGhlIHNhbWUgcG9pbnRlci4NCj4gKw0KPiArLSBDaGVjayB0 aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgYW5vdGhlciB6b25lIHdpdGggdGhlDQo+ ICsgIHNhbWUgbmFtZSBhcyBhbiBleGlzdGluZyB6b25lLg0KPiArDQo+ICtNZW1jcHkNCj4gKz09 PT09PQ0KPiArDQo+ICtDcmVhdGUgdHdvIGJ1ZmZlcnMsIGFuZCBpbml0aWFsaXNlIG9uZSB3aXRo IHJhbmRvbSB2YWx1ZXMuIFRoZXNlIGFyZQ0KPiBjb3BpZWQNCj4gK3RvIHRoZSBzZWNvbmQgYnVm ZmVyIGFuZCB0aGVuIGNvbXBhcmVkIHRvIHNlZSBpZiB0aGUgY29weSB3YXMgc3VjY2Vzc2Z1bGwu DQo+ICtUaGUgYnl0ZXMgb3V0c2lkZSB0aGUgY29waWVkIGFyZWEgYXJlIGFsc28gY2hlY2tlZCB0 byBtYWtlIHN1cmUgdGhleSB3ZXJlDQo+IG5vdA0KPiArY2hhbmdlZC4NCj4gKw0KPiArVGhpcyBp cyByZXBlYXRlZCBmb3IgYSBudW1iZXIgb2YgZGlmZmVyZW50IHNpemVzIGFuZCBvZmZzZXRzLCB3 aXRoDQo+ICt0aGUgc2Vjb25kIGJ1ZmZlciBiZWluZyBjbGVhcmVkIGJlZm9yZSBlYWNoIHRlc3Qu DQo+ICsNCj4gK0RlYnVnIHRlc3QNCj4gKz09PT09PT09PT0NCj4gKw0KPiArLSBDYWxsIHJ0ZV9k dW1wX3N0YWNrKCkgYW5kIHJ0ZV9kdW1wX3JlZ2lzdGVycygpLg0KPiArDQo+ICtBbGFybQ0KPiAr PT09PT0NCj4gKw0KPiArLSBDaGVjayB0aGF0IHRoZSBjYWxsYmFjayBmb3IgdGhlIGFsYXJtIGNh biB0byBiZSBjYWxsZWQuDQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHNl dCBhbGFybSB3aXRoIGludmFsaWQgdGltZSB2YWx1ZS4NCj4gKy0gQ2hlY2sgdGhhdCBpdCBpcyBu b3QgcG9zc2libGUgdG8gc2V0IGFsYXJtIHdpdGhvdXQgYSBjYWxsYmFjay4NCj4gKy0gQ2hlY2sg dGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gY2FuY2VsIGFsYXJtIHdpdGhvdXQgYSBjYWxsYmFj aw0KPiBwb2ludGVyLg0KPiArLSBDaGVjayB0aGF0IG11bHRpcGxlIGNhbGxiYWNrcyBmb3IgdGhl IGFsYXJtIGNhbiBiZSBjYWxsZWQuDQo+ICstIENoZWNrIHRoYXQgdGhlIG51bWJlciBvZiByZW1v dmVkIGFuZCB1bnJlbW92ZWQgYWxhcm1zIGFyZSBjb3JyZWN0Lg0KPiArLSBDaGVjayB0aGF0IG5v IGNhbGxiYWNrIGlzIGNhbGxlZCBpZiBhbGwgYWxhcm0gcmVtb3ZlZC4NCj4gKy0gQ2hlY2sgdGhh dCBpdCBpcyBub3QgcG9zc2libGUgdG8gY2FuY2VsIGFuIGFsYXJtIHdpdGhpbiB0aGUgY2FsbGJh Y2sNCj4gaXRzZWxmLg0KPiArLSBDaGVjayB0aGF0IHRoZSBjYWxsYmFjayB3aGljaCBpcyB0aGUg aGVhZCBvZiBhbGwgaXMgYWJsZSB0byBiZSByZW1vdmVkLg0KPiArLSBDaGVjayB0aGF0IGFsbCBh bGFybXMgZm9yIHRoZSBzYW1lIGNhbGxiYWNrIGNhbiBiZSBjYW5jZWxsZWQuDQo+ICsNCj4gKw0K PiArQ1BVIGZsYWdzDQo+ICs9PT09PT09PT0NCj4gKw0KPiArLSBVc2luZyB0aGUgcnRlX2NwdV9n ZXRfZmxhZ19lbmFibGVkKCkgY2hlY2tzIGZvciBDUFUgZmVhdHVyZXMgZnJvbQ0KPiBkaWZmZXJl bnQgQ1BVSUQgdGFibGVzDQo+ICstIENoZWNrcyBpZiBydGVfY3B1X2dldF9mbGFnX2VuYWJsZWQo KSBwcm9wZXJseSBmYWlscyBvbiB0cnlpbmcgdG8gY2hlY2sNCj4gZm9yIGludmFsaWQgZmVhdHVy ZQ0KPiArDQo+ICsNCj4gK0Vycm5vDQo+ICs9PT09PQ0KPiArDQo+ICtQZXJmb3JtcyB2YWxpZGF0 aW9uIG9uIHRoZSBlcnJvciBtZXNzYWdlIHN0cmluZ3MgcHJvdmlkZWQgYnkgdGhlDQo+IHJ0ZV9z dHJlcnJvcigpIGNhbGwsIHRvIGVuc3VyZSB0aGF0IHN1aXRhYmxlIHN0cmluZ3MgYXJlIHJldHVy bmVkIGZvciB0aGUNCj4gcnRlLXNwZWNpZmljIGVycm9yIGNvZGVzLCBhcyB3ZWxsIGFzIGVuc3Vy aW5nIHRoYXQgZm9yIHN0YW5kYXJkIGVycm9yDQo+IGNvZGVzIHRoZSBjb3JyZWN0IGVycm9yIG1l c3NhZ2UgaXMgcmV0dXJuZWQuDQo+ICsNCj4gK0ludGVycnVwdHMNCj4gKz09PT09PT09PT0NCj4g Ky0gQ2hlY2sgdGhhdCB0aGUgY2FsbGJhY2sgZm9yIHRoZSBzcGVjaWZpYyBpbnRlcnJ1cHQgY2Fu IGJlIGNhbGxlZC4NCj4gKy0gQ2hlY2sgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVnaXN0 ZXIgYSBjYWxsYmFjayB0byBhbiBpbnZhbGlkDQo+IGludGVycnVwdCBoYW5kbGUuDQo+ICstIENo ZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlZ2lzdGVyIG5vIGNhbGxiYWNrIHRvIGFu IGludGVycnVwdA0KPiBoYW5kbGUuDQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxl IHRvIHVucmVnaXN0ZXIgYSBjYWxsYmFjayB0byBhbiBpbnZhbGlkDQo+IGludGVycnVwdCBoYW5k bGUuDQo+ICstIENoZWNrIHRoYXQgbXVsdGlwbGUgY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIHRv IHRoZSBzYW1lIGludGVycnVwdA0KPiBoYW5kbGUuDQo+ICstIENoZWNrIHRoYXQgaXQgaXMgbm90 IHBvc3NpYmxlIHRvIHVucmVnaXN0ZXIgYSBjYWxsYmFjayB3aXRoIGludmFsaWQNCj4gcGFyYW1l dGVyLg0KPiArLSBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBlbmFibGUgYW4gaW50 ZXJydXB0IHdpdGggaW52YWxpZA0KPiBoYW5kbGUgb3Igd3JvbmcgaGFuZGxlIHR5cGUuDQo+ICst IENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRpc2FibGUgYW4gaW50ZXJydXB0IHdp dGggaW52YWxpZA0KPiBoYW5kbGUgb3Igd3JvbmcgaGFuZGxlIHR5cGUuDQo+ICsNCj4gKw0KPiAr TXVsdGlwcm9jZXNzDQo+ICs9PT09PT09PT09PT0NCj4gKw0KPiArVmFsaWRhdGVzIHRoYXQgYSBz ZWNvbmRhcnkgSW50ZWwgRFBESyBpbnN0YW5jZSBjYW4gYmUgcnVuIGFsb25nc2lkZSBhDQo+IHBy aW1hcnkgd2hlbiB0aGUgYXBwcm9wcmlhdGUgRUFMIGNvbW1hbmQtbGluZSBmbGFncyBhcmUgcGFz c2VkLiBBbHNvDQo+IHZhbGlkYXRlcyB0aGF0IHNlY29uZGFyeSBwcm9jZXNzZXMgY2Fubm90IGlu dGVyZmVyZSB3aXRoIHByaW1hcnkgcHJvY2Vzc2VzDQo+IGJ5IGNyZWF0aW5nIG1lbW9yeSBvYmpl Y3RzLCBzdWNoIGFzIG1lbXBvb2xzIG9yIHJpbmdzLg0KPiArDQo+ICtTdHJpbmcNCj4gKz09PT09 PQ0KPiArDQo+ICtQZXJmb3JtcyB2YWxpZGF0aW9uIG9uIHRoZSBuZXcgc3RyaW5nIGZ1bmN0aW9u cyBwcm92aWRlZCBpbg0KPiBydGVfc3RyaW5nX2Zucy5oLCBlbnN1cmluZyB0aGF0IGFsbCB2YWx1 ZXMgcmV0dXJuZWQgYXJlIE5VTEwgdGVybWluYXRlZCwNCj4gYW5kIHRoYXQgc3VpdGFibGUgZXJy b3JzIGFyZSByZXR1cm5lZCB3aGVuIGNhbGxlZCB3aXRoIGludmFsaWQgcGFyYW1ldGVycy4NCj4g Kw0KPiArVGFpbHENCj4gKz09PT09DQo+ICsNCj4gK1ZhbGlkYXRlcyB0aGF0IHdlIGNhbiBjcmVh dGUgYW5kIHBlcmZvcm0gbG9va3VwcyBvbiBuYW1lZCB0YWlsIHF1ZXVlcw0KPiB3aXRoaW4gdGhl IEVBTCBmb3IgdmFyaW91cyBvYmplY3QgdHlwZXMuIEFsc28gZW5zdXJlcyBhcHByb3ByaWF0ZSBl cnJvcg0KPiBjb2RlcyBhcmUgcmV0dXJuZWQgZnJvbSB0aGUgZnVuY3Rpb25zIGlmIGludmFsaWQg cGFyYW1ldGVycyBhcmUgcGFzc2VkLg0KPiArDQo+ICtEZXZhcmdzDQo+ICs9PT09PT09DQo+ICtU byBCZSBGaWxsZWQNCj4gKw0KPiArS3ZhcmdzDQo+ICs9PT09PT0NCj4gK1RvIEJlIEZpbGxlZA0K PiArDQo+ICtBY2wNCj4gKz09PQ0KPiArVG8gQmUgRmlsbGVkDQo+ICsNCj4gK0xpbmtfYm9uZGlu Zw0KPiArPT09PT09PT09PT09DQo+ICtUbyBCZSBGaWxsZWQNCj4gZGlmZiAtLWdpdCBhL3Rlc3Rz L1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2NtZGxpbmUucHkNCj4gYi90ZXN0cy9UZXN0U3VpdGVfdW5p dF90ZXN0c19jbWRsaW5lLnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAuLjhhMTM3MDMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0cy9UZXN0U3VpdGVfdW5p dF90ZXN0c19jbWRsaW5lLnB5DQo+IEBAIC0wLDAgKzEsNjAgQEANCj4gKyMgPENPUFlSSUdIVF9U QUc+DQo+ICsNCj4gKyIiIg0KPiArRFBESyBUZXN0IHN1aXRlLg0KPiArDQo+ICtDbWRsaW5lIGF1 dG90ZXN0DQo+ICsNCj4gKyIiIg0KPiArDQo+ICtmcm9tIHRlc3RfY2FzZSBpbXBvcnQgVGVzdENh c2UNCj4gKw0KPiArIw0KPiArIw0KPiArIyBUZXN0IGNsYXNzLg0KPiArIw0KPiArDQo+ICsNCj4g K2NsYXNzIFRlc3RVbml0VGVzdHNDbWRsaW5lKFRlc3RDYXNlKToNCj4gKw0KPiArICAgICMNCj4g KyAgICAjDQo+ICsgICAgIw0KPiArICAgICMgVGVzdCBjYXNlcy4NCj4gKyAgICAjDQo+ICsNCj4g KyAgICBkZWYgc2V0X3VwX2FsbChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1 biBhdCB0aGUgc3RhcnQgb2YgZWFjaCB0ZXN0IHN1aXRlLg0KPiArICAgICAgICAiIiINCj4gKyAg ICAgICAgb3V0ID0gc2VsZi5kdXQuYnVpbGRfZHBka19hcHBzKCcuL2FwcC90ZXN0LycpDQo+ICsg ICAgICAgIHNlbGYudmVyaWZ5KCdtYWtlOiBMZWF2aW5nIGRpcmVjdG9yeScgaW4gb3V0LCAiQ29t cGlsYXRpb24NCj4gZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiBzZXRfdXAoc2VsZik6DQo+ICsg ICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYmVmb3JlIGVhY2ggdGVzdCBjYXNlLg0KPiArICAg ICAgICAiIiINCj4gKyAgICAgICAgcGFzcw0KPiArDQo+ICsgICAgZGVmIHRlc3RfY21kbGluZShz ZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBjbWRsaW5lIGF1dG90ZXN0cyBp biBSVEUgY29tYW5kIGxpbmUuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYu ZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQu KkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImNt ZGxpbmVfYXV0b3Rlc3QiLCAiUlRFPj4iLCAxMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9l eHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4g b3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArICAgICAgICByZXR1cm4gJ1NVQ0NFU1MnDQo+ICsNCj4g KyAgICBkZWYgdGVhcl9kb3duKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVu IGFmdGVyIGVhY2ggdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcGFzcw0K PiArDQo+ICsgICAgZGVmIHRlYXJfZG93bl9hbGwoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IHN1aXRlLg0KPiArICAgICAgICAiIiINCj4gKyAg ICAgICAgcGFzcw0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvVGVzdFN1aXRlX3VuaXRfdGVzdHNfZHVt cC5weQ0KPiBiL3Rlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2R1bXAucHkNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uZmZjYjE1OA0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL3Rlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2R1bXAucHkNCj4gQEAgLTAsMCArMSwx ODEgQEANCj4gKyMgPENPUFlSSUdIVF9UQUc+DQo+ICtpbXBvcnQgcmUNCj4gKw0KPiArIiIiDQo+ ICtEUERLIFRlc3Qgc3VpdGUuDQo+ICsNCj4gK1J1biBJbnRlci1WTSBzaGFyZSBtZW1vcnkgYXV0 b3Rlc3RzDQo+ICsiIiINCj4gKw0KPiArDQo+ICtmcm9tIHRlc3RfY2FzZSBpbXBvcnQgVGVzdENh c2UNCj4gKw0KPiArIw0KPiArIw0KPiArIyBUZXN0IGNsYXNzLg0KPiArIw0KPiArDQo+ICsNCj4g K2NsYXNzIFRlc3RVbml0VGVzdHNEdW1wKFRlc3RDYXNlKToNCj4gKw0KPiArICAgICMNCj4gKyAg ICAjDQo+ICsgICAgIw0KPiArICAgICMgVGVzdCBjYXNlcy4NCj4gKyAgICAjDQo+ICsNCj4gKyAg ICBkZWYgc2V0X3VwX2FsbChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBh dCB0aGUgc3RhcnQgb2YgZWFjaCB0ZXN0IHN1aXRlLg0KPiArICAgICAgICBOb3RoaW5nIHRvIGRv IGhlcmUuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICAjIEJhc2VkIG9uIGgvdyB0eXBlLCBj aG9vc2UgaG93IG1hbnkgcG9ydHMgdG8gdXNlDQo+ICsgICAgICAgIHNlbGYuZHV0X3BvcnRzID0g c2VsZi5kdXQuZ2V0X3BvcnRzKHNlbGYubmljKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeShsZW4o c2VsZi5kdXRfcG9ydHMpID49IDEsICJJbnN1ZmZpY2llbnQgcG9ydHMgZm9yDQo+IHRlc3Rpbmci KQ0KPiArDQo+ICsgICAgZGVmIHNldF91cChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAg ICAgIFJ1biBiZWZvcmUgZWFjaCB0ZXN0IGNhc2UuDQo+ICsgICAgICAgIE5vdGhpbmcgdG8gZG8g aGVyZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBhc3MNCj4gKw0KPiArICAgIGRlZiB0 ZXN0X2xvZ19kdW1wKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGhpc3Rv cnkgbG9nIGR1bXAgdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2VsZi5k dXQuc2VuZF9leHBlY3QoIi4vJXMvYXBwL3Rlc3QgLW4gMSAtYyBmZmZmIiAlIChzZWxmLnRhcmdl dCksDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNl bmRfZXhwZWN0KCJkdW1wX2xvZ19oaXN0b3J5IiwgIlJURT4+IiwgMTIwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJFQUwiIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X3Jpbmdf ZHVtcChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBoaXN0b3J5IGxvZyBk dW1wIHRlc3QgY2FzZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRf ZXhwZWN0KCIuLyVzL2FwcC90ZXN0IC1uIDEgLWMgZmZmZiIgJSAoc2VsZi50YXJnZXQpLA0KPiAi Ui4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVj dCgiZHVtcF9yaW5nIiwgIlJURT4+IiwgMTIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIGVsZW1lbnRzID0gWydyaW5nJywgJ2FkZHJl c3MnLCAnZmxhZ3MnLCAnc2l6ZScsICdjdCcsICdjaCcsICdwdCcsDQo+ICdwaCcsICd1c2VkJywg J2F2YWlsJywgJ3dhdGVybWFyayddDQo+ICsgICAgICAgIG1hdGNoX3JlZ2V4ID0gInJpbmcgPCgu Kj8pPkAweCguKilcclxuIg0KPiArICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50c1syOl06 DQo+ICsgICAgICAgICAgICBtYXRjaF9yZWdleCArPSAiICAlcz0oXGQqKVxyXG4iICUgZWxlbWVu dA0KPiArICAgICAgICBtID0gcmUuY29tcGlsZShyIiVzIiAlIG1hdGNoX3JlZ2V4LCByZS5TKQ0K PiArICAgICAgICByZXN1bHQgPSBtLnNlYXJjaChvdXQpDQo+ICsgICAgICAgIHJpbmdfaW5mbyA9 IGRpY3QoemlwKGVsZW1lbnRzLCByZXN1bHQuZ3JvdXBzKCkpKQ0KPiArDQo+ICsgICAgICAgIHNl bGYudmVyaWZ5KHJpbmdfaW5mb1sncmluZyddID09ICdNUF9sb2dfaGlzdG9yeScsICJUZXN0IGZh aWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9tZW1wb29sX2R1bXAoc2VsZik6DQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBSdW4gbWVtcG9vbCBkdW1wIHRlc3QgY2FzZS4NCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuLyVzL2FwcC90ZXN0IC1u IDEgLWMgZmZmZiIgJSAoc2VsZi50YXJnZXQpLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiAr ICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZHVtcF9tZW1wb29sIiwgIlJURT4+ IiwgMTIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ ICsgICAgICAgIGVsZW1lbnRzID0gWydtZW1wb29sJywgJ2FkZHJlc3MnLCAnZmxhZ3MnLCAncmlu ZycsICdwaHlzX2FkZHInLA0KPiAnc2l6ZScsICdoZWFkZXJfc2l6ZScsICdlbHRfc2l6ZScsDQo+ ICsgICAgICAgICAgICAgICAgICAgICd0cmFpbGVyX3NpemUnLCAndG90YWxfb2JqX3NpemUnLCAn cHJpdmF0ZV9kYXRhX3NpemUnLA0KPiAncGdfbnVtJywgJ3BnX3NoaWZ0JywgJ3BnX21hc2snLA0K PiArICAgICAgICAgICAgICAgICAgICAnZWx0X3ZhX3N0YXJ0JywgJ2VsdF92YV9lbmQnLCAnZWx0 X3BhXFswXF0nLCAnYXZnDQo+IGJ5dGVzL29iamVjdCcNCj4gKyAgICAgICAgICAgICAgICAgICAg XQ0KPiArICAgICAgICBtYXRjaF9yZWdleCA9ICJtZW1wb29sIDwoLio/KT5AMHgoLio/KVxyXG4i DQo+ICsgICAgICAgIGZvciBlbGVtZW50IGluIGVsZW1lbnRzWzI6XToNCj4gKyAgICAgICAgICAg IG1hdGNoX3JlZ2V4ICs9ICIgICVzPSguKj8pXHJcbiIgJSBlbGVtZW50DQo+ICsgICAgICAgIG0g PSByZS5jb21waWxlKHIiJXMiICUgbWF0Y2hfcmVnZXgsIHJlLlMpDQo+ICsgICAgICAgIHJlc3Vs dCA9IG0uc2VhcmNoKG91dCkNCj4gKyAgICAgICAgbWVtcG9vbF9pbmZvID0gZGljdCh6aXAoZWxl bWVudHMsIHJlc3VsdC5ncm91cHMoKSkpDQo+ICsNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkobWVt cG9vbF9pbmZvWydtZW1wb29sJ10gPT0gJ2xvZ19oaXN0b3J5JywgIlRlc3QNCj4gZmFpbGVkIikN Cj4gKw0KPiArICAgIGRlZiB0ZXN0X3BoeXNtZW1fZHVtcChzZWxmKToNCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIFJ1biBwaHlzaWNhbCBtZW1vcnkgZHVtcCB0ZXN0IGNhc2UuDQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi8lcy9hcHAvdGVzdCAt biAxIC1jIGZmZmYiICUgKHNlbGYudGFyZ2V0KSwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4g KyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImR1bXBfcGh5c21lbSIsICJSVEU+ PiIsIDEyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0K PiArICAgICAgICBlbGVtZW50cyA9IFsnU2VnbWVudCcsICdwaHlzJywgJ2xlbicsICd2aXJ0Jywg J3NvY2tldF9pZCcsDQo+ICdodWdlcGFnZV9zeicsICduY2hhbm5lbCcsICducmFuayddDQo+ICsg ICAgICAgIG1hdGNoX3JlZ2V4ID0gIlNlZ21lbnQgKFxkKSs6Ig0KPiArICAgICAgICBmb3IgZWxl bWVudCBpbiBlbGVtZW50c1sxOi0xXToNCj4gKyAgICAgICAgICAgIG1hdGNoX3JlZ2V4ICs9ICIg JXM6KC4qPyksIiAlIGVsZW1lbnQNCj4gKyAgICAgICAgbWF0Y2hfcmVnZXggKz0gIiAlczooLio/ KVxuIiAlIGVsZW1lbnRzWy0xXQ0KPiArICAgICAgICBtID0gcmUuY29tcGlsZShyIiVzIiAlIG1h dGNoX3JlZ2V4LCByZS5ET1RBTEwpDQo+ICsgICAgICAgIHJlc3VsdHMgPSBtLmZpbmRhbGwob3V0 KQ0KPiArICAgICAgICBwaHlfaW5mbyA9IFtdDQo+ICsgICAgICAgIGZvciByZXN1bHQgaW4gcmVz dWx0czoNCj4gKyAgICAgICAgICAgIHBoeV9pbmZvLmFwcGVuZChkaWN0KHppcChlbGVtZW50cywg cmVzdWx0KSkpDQo+ICsNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkobGVuKHBoeV9pbmZvKSA+IDAs ICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9tZW16b25lX2R1bXAoc2VsZik6 DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gbWVtem9uZSBkdW1wIHRlc3QgY2FzZS4N Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuLyVzL2Fw cC90ZXN0IC1uIDEgLWMgZmZmZiIgJSAoc2VsZi50YXJnZXQpLA0KPiAiUi4qVC4qRS4qPi4qPiIs IDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZHVtcF9tZW16b25l IiwgIlJURT4+IiwgMTIwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIs ICIjICIpDQo+ICsNCj4gKyAgICAgICAgZWxlbWVudHMgPSBbJ1pvbmUnLCAnbmFtZScsICdwaHlz JywgJ2xlbicsICd2aXJ0JywgJ3NvY2tldF9pZCcsDQo+ICdmbGFncyddDQo+ICsgICAgICAgIG1h dGNoX3JlZ2V4ID0gIlpvbmUgKFxkKToiDQo+ICsgICAgICAgIGZvciBlbGVtZW50IGluIGVsZW1l bnRzWzE6LTFdOg0KPiArICAgICAgICAgICAgbWF0Y2hfcmVnZXggKz0gIiAlczooLio/KSwiICUg ZWxlbWVudA0KPiArICAgICAgICBtYXRjaF9yZWdleCArPSAiICVzOiguKj8pXG4iICUgZWxlbWVu dHNbLTFdDQo+ICsgICAgICAgIG0gPSByZS5jb21waWxlKHIiJXMiICUgbWF0Y2hfcmVnZXgsIHJl LkRPVEFMTCkNCj4gKyAgICAgICAgcmVzdWx0cyA9IG0uZmluZGFsbChvdXQpDQo+ICsNCj4gKyAg ICAgICAgbWVtem9uZV9pbmZvID0gW10NCj4gKyAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRz Og0KPiArICAgICAgICAgICAgbWVtem9uZV9pbmZvLmFwcGVuZChkaWN0KHppcChlbGVtZW50cywg cmVzdWx0KSkpDQo+ICsNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkobGVuKG1lbXpvbmVfaW5mbykg PiAwLCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfZHVtcF9zdHJ1Y3Rfc2l6 ZShzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBzdHJ1Y3Qgc2l6ZSBkdW1w IHRlc3QgY2FzZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCIuLyVzL2FwcC90ZXN0IC1uIDEgLWMgZmZmZiIgJSAoc2VsZi50YXJnZXQpLA0KPiAiUi4q VC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi ZHVtcF9zdHJ1Y3Rfc2l6ZXMiLCAiUlRFPj4iLCAxMjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNl bmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKw0KPiArICAgICAgICBlbGVtZW50cyA9IFsnc3Ry dWN0IHJ0ZV9tYnVmJywgJ3N0cnVjdCBydGVfbWVtcG9vbCcsICdzdHJ1Y3QNCj4gcnRlX3Jpbmcn XQ0KPiArICAgICAgICBtYXRjaF9yZWdleCA9ICIiDQo+ICsgICAgICAgIGZvciBlbGVtZW50IGlu IGVsZW1lbnRzWzotMV06DQo+ICsgICAgICAgICAgICBtYXRjaF9yZWdleCArPSAic2l6ZW9mXCgl c1wpID0gKFxkKylcclxuIiAlIGVsZW1lbnQNCj4gKyAgICAgICAgbWF0Y2hfcmVnZXggKz0gInNp emVvZlwoJXNcKSA9IChcZCspIiAlIGVsZW1lbnRzWy0xXQ0KPiArICAgICAgICBtID0gcmUuY29t cGlsZShyIiVzIiAlIG1hdGNoX3JlZ2V4LCByZS5TKQ0KPiArICAgICAgICByZXN1bHQgPSBtLnNl YXJjaChvdXQpDQo+ICsgICAgICAgIHN0cnVjdF9pbmZvID0gZGljdCh6aXAoZWxlbWVudHMsIHJl c3VsdC5ncm91cHMoKSkpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9kdW1wX2RldmFyZ3Moc2VsZik6 DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gZGV2YXJncyBkdW1wIHRlc3QgY2FzZS4N Cj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHRlc3RfcG9ydCA9IHNlbGYuZHV0X3BvcnRzWzBd DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuLyVzL2FwcC90ZXN0IC1uIDEgLWMg ZmZmZiAtYiAwMDAwOiVzIg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxm LnRhcmdldCwNCj4gc2VsZi5kdXQucG9ydHNfaW5mb1t0ZXN0X3BvcnRdWydwY2knXSksICJSLipU LipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJk dW1wX2RldmFyZ3MiLCAiUlRFPj4iLCAxMjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgYmxhY2tfc3RyID0gIlBDSSBibGFja2xpc3Qg MDAwMDolcyIgJQ0KPiBzZWxmLmR1dC5wb3J0c19pbmZvW3Rlc3RfcG9ydF1bJ3BjaSddDQo+ICsg ICAgICAgIHNlbGYudmVyaWZ5KGJsYWNrX3N0ciBpbiBvdXQsICJEdW1wIGJsYWNrIGxpc3QgZmFp bGVkIikNCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi8lcy9hcHAvdGVz dCAtbiAxIC1jIGZmZmYgLXcgMDAwMDolcyINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJSAoc2VsZi50YXJnZXQsDQo+IHNlbGYuZHV0LnBvcnRzX2luZm9bdGVzdF9wb3J0XVsncGNp J10pLCAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5k X2V4cGVjdCgiZHVtcF9kZXZhcmdzIiwgIlJURT4+IiwgMTIwKQ0KPiArICAgICAgICBzZWxmLmR1 dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsNCj4gKyAgICAgICAgd2hpdGVfc3RyID0g IlBDSSB3aGl0ZWxpc3QgMDAwMDolcyIgJQ0KPiBzZWxmLmR1dC5wb3J0c19pbmZvW3Rlc3RfcG9y dF1bJ3BjaSddDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KHdoaXRlX3N0ciBpbiBvdXQsICJEdW1w IHdoaXRlIGxpc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZWFyX2Rvd24oc2VsZik6DQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IGNhc2UuDQo+ICsg ICAgICAgIFN0b3AgYXBwbGljYXRpb24gdGVzdCBhZnRlciBldmVyeSBjYXNlLg0KPiArICAgICAg ICAiIiINCj4gKyAgICAgICAgc2VsZi5kdXQua2lsbF9hbGwoKQ0KPiArICAgICAgICBwYXNzDQo+ ICsNCj4gKyAgICBkZWYgdGVhcl9kb3duX2FsbChzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgIFJ1biBhZnRlciBlYWNoIHRlc3Qgc3VpdGUuDQo+ICsgICAgICAgIE5vdGhpbmcgdG8g ZG8gaGVyZS4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHBhc3MNCj4gZGlmZiAtLWdpdCBh L3Rlc3RzL1Rlc3RTdWl0ZV91bml0X3Rlc3RzX2VhbC5weQ0KPiBiL3Rlc3RzL1Rlc3RTdWl0ZV91 bml0X3Rlc3RzX2VhbC5weQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw Li5lMzZhZGM1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVzdHMvVGVzdFN1aXRlX3VuaXRf dGVzdHNfZWFsLnB5DQo+IEBAIC0wLDAgKzEsNDA5IEBADQo+ICsjIDxDT1BZUklHSFRfVEFHPg0K PiArDQo+ICsiIiINCj4gK0RQREsgVGVzdCBzdWl0ZS4NCj4gKw0KPiArRUFMIGF1dG90ZXN0Lg0K PiArDQo+ICsiIiINCj4gKw0KPiAraW1wb3J0IGR0cw0KPiArDQo+ICsNCj4gK2Zyb20gdGVzdF9j YXNlIGltcG9ydCBUZXN0Q2FzZQ0KPiArDQo+ICsjDQo+ICsjDQo+ICsjIFRlc3QgY2xhc3MuDQo+ ICsjDQo+ICsNCj4gKw0KPiArY2xhc3MgVGVzdFVuaXRUZXN0c0VhbChUZXN0Q2FzZSk6DQo+ICsN Cj4gKyAgICAjDQo+ICsgICAgIw0KPiArICAgICMNCj4gKyAgICAjIFRlc3QgY2FzZXMuDQo+ICsg ICAgIw0KPiArDQo+ICsgICAgZGVmIHNldF91cF9hbGwoc2VsZik6DQo+ICsgICAgICAgICIiIg0K PiArICAgICAgICBSdW4gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdCBzdWl0ZS4NCj4gKyAgICAg ICAgIiIiDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LmJ1aWxkX2RwZGtfYXBwcygnLi9hcHAv dGVzdC8nKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgnbWFrZTogTGVhdmluZyBkaXJlY3Rvcnkn IGluIG91dCwgIkNvbXBpbGF0aW9uDQo+IGZhaWxlZCIpDQo+ICsgICAgICAgIFthcmNoLCBtYWNo aW5lLCBzZWxmLmVudiwgdG9vbGNoYWluXSA9IHNlbGYudGFyZ2V0LnNwbGl0KCctJykNCj4gKw0K PiArICAgIGRlZiBzZXRfdXAoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4g YmVmb3JlIGVhY2ggdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcGFzcw0K PiArDQo+ICsgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgIFJ1biB2ZXJzaW9uIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAg ICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiJXMgLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZm ZiIgJQ0KPiBzZWxmLmR1dC50YXNrc2V0KDEpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5k X2V4cGVjdCgidmVyc2lvbl9hdXRvdGVzdCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAgICBzZWxm LmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJU ZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9tZW1j b3B5KHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIG1lbWNvcHkgYXV0b3Rl c3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCIlcyAuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQo MSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSLipULipFLio+Lio+IiwgMTAp DQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJtZW1jcHlfYXV0b3Rlc3Qi LCAiUlRFPj4iLCAzMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAi IyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWls ZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfY29tbW9uKHNlbGYpOg0KPiArICAgICAgICAiIiIN Cj4gKyAgICAgICAgUnVuIGNvbW1vbiBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIiVzIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1j IGZmZmYiICUNCj4gc2VsZi5kdXQudGFza3NldCgxKSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQu c2VuZF9leHBlY3QoImNvbW1vbl9hdXRvdGVzdCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9l YWxfZnMoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gbWVtY29weSBhdXRv dGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBl Y3QoIiVzIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiICUNCj4gc2VsZi5kdXQudGFza3Nl dCgxKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlIuKlQuKkUuKj4uKj4iLCAx MCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImVhbF9mc19hdXRvdGVz dCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIs ICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZh aWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9tZW1jcHkoc2VsZik6DQo+ICsgICAgICAgICIi Ig0KPiArICAgICAgICBSdW4gbWVtY29weSBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsN Cj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIiVzIC4vYXBwL3Rlc3QvdGVzdCAtbiAx IC1jIGZmZmYiICUNCj4gc2VsZi5kdXQudGFza3NldCgxKSwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5k dXQuc2VuZF9leHBlY3QoIm1lbWNweV9hdXRvdGVzdCIsICJSVEU+PiIsIDMwKQ0KPiArICAgICAg ICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVy aWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVz dF9tZW1jcHlfcGVyZihzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBtZW1j b3B5IHBlcmZvcm1hbmNlIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgc2Vs Zi5kdXQuc2VuZF9leHBlY3QoIiVzIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiICUNCj4g c2VsZi5kdXQudGFza3NldCgxKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlIu KlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3Qo Im1lbWNweV9wZXJmX2F1dG90ZXN0IiwgIlJURT4+IiwgMjQwKQ0KPiArICAgICAgICBzZWxmLmR1 dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0 IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9oYXNoKHNl bGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGhhc2ggYXV0b3Rlc3QuDQo+ICsg ICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90 ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAg ICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImhhc2hfYXV0b3Rlc3QiLCAiUlRFPj4iLCAz MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAg ICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ ICsgICAgZGVmIHRlc3RfaGFzaF9wZXJmKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgUnVuIGhhcyBwZXJmb3JtYW5jZSBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIiVzIC4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1j IGZmZmUiICUNCj4gc2VsZi5kdXQudGFza3NldCgxKSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQu c2VuZF9leHBlY3QoImhhc2hfcGVyZl9hdXRvdGVzdCIsICJSVEU+PiIsIDYwMCkNCj4gKyAgICAg ICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZl cmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRl c3RfbWFsbG9jKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIG1hbGxvYyBh dXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9l eHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIs IDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgibWFsbG9jX2F1dG90 ZXN0IiwgIlJURT4+IiwgMzApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0 IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3Qg ZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2Z1bmNfcmVlbnRyYW5jeShzZWxmKToNCj4g KyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBmdW5jdGlvbiByZWVudHJhbmN5IGF1dG90ZXN0 Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBpZiBzZWxmLmR1dC5hcmNoaXRlY3R1 cmUgPT0gIng4Nl82NCI6DQo+ICsgICAgICAgICAgICBjbWRsaW5lID0gIi4vYXBwL3Rlc3QvdGVz dCAtbiAxIC1jIGZmZmYiDQo+ICsgICAgICAgIGVsc2U6DQo+ICsgICAgICAgICAgICAjIG1hc2sg Y29yZXMgb25seSBvbiBzb2NrZXQgMA0KPiArICAgICAgICAgICAgY21kbGluZSA9ICIlcyAuL2Fw cC90ZXN0L3Rlc3QgLW4gMSAtYyA1NTU1IiAlDQo+IHNlbGYuZHV0LnRhc2tzZXQoMSkNCj4gKyAg ICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoY21kbGluZSwgIlIuKlQuKkUuKj4uKj4iLCAxMCkN Cj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImZ1bmNfcmVlbnRyYW5jeV9h dXRvdGVzdCIsICJSVEU+PiIsDQo+IDMwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVj dCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQs ICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9wY2koc2VsZik6DQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBSdW4gcGNpIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4g Kw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEg LWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYu ZHV0LnNlbmRfZXhwZWN0KCJwY2lfYXV0b3Rlc3QiLCAiUlRFPj4iLCAzMCkNCj4gKyAgICAgICAg c2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlm eSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3Rf YXRvbWljKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGF0b21pYyBhdXRv dGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBl Y3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEw KQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiYXRvbWljX2F1dG90ZXN0 IiwgIlJURT4+IiwgMzApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0Iiwg IiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFp bGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X21lbW9yeShzZWxmKToNCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIFJ1biBtZW1vcnkgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBm ZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQu c2VuZF9leHBlY3QoJ21lbW9yeV9hdXRvdGVzdCcsICJSVEU+PiIsIDIwKQ0KPiArICAgICAgICBy ZWdleHAgPSAicGh5czoweFswLTlhLWZdKiwgbGVuOihbMC05YS1mXSopLCB2aXJ0OjB4WzAtOWEt Zl0qLA0KPiBzb2NrZXRfaWQ6WzAtOV0qIg0KPiArICAgICAgICBtYXRjaCA9IGR0cy5yZWdleHAo b3V0LCByZWdleHApDQo+ICsgICAgICAgIHNpemUgPSBpbnQobWF0Y2gsIDE2KQ0KPiArICAgICAg ICBzZWxmLnZlcmlmeShzaXplID4gMCwgImJhZCBzaXplIikNCj4gKyAgICAgICAgc2VsZi5kdXQu c2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfbGNvcmVfbGF1 bmNoKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGxjb3JlIGF1dG90ZXN0 Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi Li9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJwZXJfbGNvcmVfYXV0b3Rlc3Qi LCAiUlRFPj4iLCAyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAi IyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWls ZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3Rfc3BpbmxvY2soc2VsZik6DQo+ICsgICAgICAgICIi Ig0KPiArICAgICAgICBSdW4gc3BpbmxvY2sgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiAr DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAt YyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5k dXQuc2VuZF9leHBlY3QoInNwaW5sb2NrX2F1dG90ZXN0IiwgIlJURT4+IiwgMTIwKQ0KPiArICAg ICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYu dmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYg dGVzdF9yd2xvY2soc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gcndsb2Nr IGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5k X2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+ IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJyd2xvY2tfYXV0 b3Rlc3QiLCAiUlRFPj4iLCAyMCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1 aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVz dCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfcHJlZmV0Y2goc2VsZik6DQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBSdW4gcHJlZmV0Y2ggYXV0b3Rlc3QuDQo+ICsgICAgICAgICIi Ig0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3Qg LW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0g c2VsZi5kdXQuc2VuZF9leHBlY3QoInByZWZldGNoX2F1dG90ZXN0IiwgIlJURT4+IiwgMjApDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAg c2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAg IGRlZiB0ZXN0X2J5dGVvcmRlcihzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1 biBieXRlIG9yZGVyIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJS LipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0 KCJieXRlb3JkZXJfYXV0b3Rlc3QiLCAiUlRFPj4iLCAxMCkNCj4gKyAgICAgICAgc2VsZi5kdXQu c2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBP SyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfY3ljbGVzKHNl bGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGN5Y2xlcyBhdXRvdGVzdC4NCj4g KyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBw L3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAg ICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiY3ljbGVzX2F1dG90ZXN0IiwgIlJURT4+ IiwgMjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4g KyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4g Kw0KPiArICAgIGRlZiB0ZXN0X2xvZ3Moc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAg ICBSdW4gbG9ncyBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2Vs Zi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4q VC4qRS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi bG9nc19hdXRvdGVzdCIsICJSVEU+PiIsIDEwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBv dXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9tZW16b25lKHNlbGYpOg0K PiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIG1lbXpvbmUgYXV0b3Rlc3QuDQo+ICsgICAg ICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0 L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAg b3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoIm1lbXpvbmVfYXV0b3Rlc3QiLCAiUlRFPj4iLCAx MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAg ICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ ICsgICAgZGVmIHRlc3RfZGVidWcoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBS dW4gZGVidWcgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYu ZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQu KkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoImRl YnVnX2F1dG90ZXN0IiwgIlJURT4+IiwgMTApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhw ZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91 dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2ZsYWdzKHNlbGYpOg0KPiAr ICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGVhbCBmbGFncyBhdXRvdGVzdC4NCj4gKyAgICAg ICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3Qv dGVzdCAtbiAxIC1jIGZmZmYgLW0gNjQiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiArICAg ICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZWFsX2ZsYWdzX2F1dG90ZXN0IiwgIlJU RT4+IiwgNDApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikN Cj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikN Cj4gKw0KPiArICAgIGRlZiB0ZXN0X2FsYXJtKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAg ICAgICAgUnVuIGFsYXJtIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAg ICBzZWxmLnZlcmlmeShzZWxmLmVudiA9PSAibGludXhhcHAiLCAiQWxhcm0gb25seSBzdXBwb3J0 ZWQgaW4NCj4gbGludXggZW52IikNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4v YXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4qPiIsIDEwKQ0KPiAr ICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiYWxhcm1fYXV0b3Rlc3QiLCAiUlRF Pj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0K PiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0K PiArDQo+ICsgICAgZGVmIHRlc3RfY3B1ZmxhZ3Moc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiAr ICAgICAgICBSdW4gQ1BVIGZsYWdzIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiAr ICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZm ZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNl bmRfZXhwZWN0KCJjcHVmbGFnc19hdXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBz ZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5 KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9l cnJubyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBlcnJubyBhdXRvdGVz dC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3Qo Ii4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVEU+PnxSVC4qRT4+fFJURS4q Pj58UlRFPi4qPiIsIDIwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgi ZXJybm9fYXV0b3Rlc3QiLCAiUlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9l eHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4g b3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfaW50ZXJydXB0cyhzZWxm KToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBpbnRlcnJ1cHQgYXV0b3Rlc3QuDQo+ ICsgICAgICAgICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KHNlbGYuZW52ID09ICJs aW51eGFwcCIsICJJbnRlcnJ1cHQgb25seSBzdXBwb3J0ZWQgaW4NCj4gbGludXggZW52IikNCj4g KyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZm ZmYiLA0KPiAiUi4qVEU+PnxSVC4qRT4+fFJURS4qPj58UlRFPi4qPiIsIDIwKQ0KPiArICAgICAg ICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiaW50ZXJydXB0X2F1dG90ZXN0IiwgIlJURT4+ IiwgNjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4g KyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4g Kw0KPiArICAgIGRlZiB0ZXN0X211bHRpcHJvY2VzcyhzZWxmKToNCj4gKyAgICAgICAgIiIiDQo+ ICsgICAgICAgIFJ1biBtdWx0aXByb2Nlc3MgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0KPiAr DQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4gMSAt YyBmZmZmIC1tIDY0IiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0g c2VsZi5kdXQuc2VuZF9leHBlY3QoIm11bHRpcHJvY2Vzc19hdXRvdGVzdCIsICJSVEU+PiIsIDYw KQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAg ICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4g KyAgICBkZWYgdGVzdF9zdHJpbmcoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBS dW4gc3RyaW5nIGF1dG90ZXN0Lg0KPiArICAgICAgICAiIiINCj4gKw0KPiArICAgICAgICBzZWxm LmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipU LipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJz dHJpbmdfYXV0b3Rlc3QiLCAiUlRFPj4iLCA2MCkNCj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9l eHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAgICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4g b3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsgICAgZGVmIHRlc3RfdGFpbHEoc2VsZik6DQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4gdGFpbHEgYXV0b3Rlc3QuDQo+ICsgICAgICAg ICIiIg0KPiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rl c3QgLW4gMSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0 ID0gc2VsZi5kdXQuc2VuZF9leHBlY3QoInRhaWxxX2F1dG90ZXN0IiwgIlJURT4+IiwgNjApDQo+ ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0IiwgIiMgIikNCj4gKyAgICAgICAg c2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3QgZmFpbGVkIikNCj4gKw0KPiArICAg IGRlZiB0ZXN0X2RldmFyZ3Moc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4g ZGV2YXJncyBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5k dXQuc2VuZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4q RS4qPi4qPiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiZGV2 YXJnc19hdXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4 cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAgIHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBv dXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAgICBkZWYgdGVzdF9rdmFyZ3Moc2VsZik6DQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW4ga3ZhcmdzIGF1dG90ZXN0Lg0KPiArICAgICAg ICAiIiINCj4gKw0KPiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiLi9hcHAvdGVzdC90 ZXN0IC1uIDEgLWMgZmZmZiIsDQo+ICJSLipULipFLio+Lio+IiwgMTApDQo+ICsgICAgICAgIG91 dCA9IHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJrdmFyZ3NfYXV0b3Rlc3QiLCAiUlRFPj4iLCA2MCkN Cj4gKyAgICAgICAgc2VsZi5kdXQuc2VuZF9leHBlY3QoInF1aXQiLCAiIyAiKQ0KPiArICAgICAg ICBzZWxmLnZlcmlmeSgiVGVzdCBPSyIgaW4gb3V0LCAiVGVzdCBmYWlsZWQiKQ0KPiArDQo+ICsg ICAgZGVmIHRlc3RfYWNsKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFj bCBhdXRvdGVzdC4NCj4gKyAgICAgICAgIiIiDQo+ICsNCj4gKyAgICAgICAgc2VsZi5kdXQuc2Vu ZF9leHBlY3QoIi4vYXBwL3Rlc3QvdGVzdCAtbiAxIC1jIGZmZmYiLA0KPiAiUi4qVC4qRS4qPi4q PiIsIDEwKQ0KPiArICAgICAgICBvdXQgPSBzZWxmLmR1dC5zZW5kX2V4cGVjdCgiYWNsX2F1dG90 ZXN0IiwgIlJURT4+IiwgNjApDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCJxdWl0 IiwgIiMgIikNCj4gKyAgICAgICAgc2VsZi52ZXJpZnkoIlRlc3QgT0siIGluIG91dCwgIlRlc3Qg ZmFpbGVkIikNCj4gKw0KPiArICAgIGRlZiB0ZXN0X2xpbmtfYm9uZGluZyhzZWxmKToNCj4gKyAg ICAgICAgIiIiDQo+ICsgICAgICAgIFJ1biBhY2wgYXV0b3Rlc3QuDQo+ICsgICAgICAgICIiIg0K PiArDQo+ICsgICAgICAgIHNlbGYuZHV0LnNlbmRfZXhwZWN0KCIuL2FwcC90ZXN0L3Rlc3QgLW4g MSAtYyBmZmZmIiwNCj4gIlIuKlQuKkUuKj4uKj4iLCAxMCkNCj4gKyAgICAgICAgb3V0ID0gc2Vs Zi5kdXQuc2VuZF9leHBlY3QoImxpbmtfYm9uZGluZ19hdXRvdGVzdCIsICJSVEU+PiIsIDYwKQ0K PiArICAgICAgICBzZWxmLmR1dC5zZW5kX2V4cGVjdCgicXVpdCIsICIjICIpDQo+ICsgICAgICAg IHNlbGYudmVyaWZ5KCJUZXN0IE9LIiBpbiBvdXQsICJUZXN0IGZhaWxlZCIpDQo+ICsNCj4gKyAg ICBkZWYgdGVhcl9kb3duKHNlbGYpOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgUnVuIGFm dGVyIGVhY2ggdGVzdCBjYXNlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcGFzcw0KPiAr DQo+ICsgICAgZGVmIHRlYXJfZG93bl9hbGwoc2VsZik6DQo+ICsgICAgICAgICIiIg0KPiArICAg ICAgICBSdW4gYWZ0ZXIgZWFjaCB0ZXN0IHN1aXRlLg0KPiArICAgICAgICAiIiINCj4gKyAgICAg ICAgcGFzcw0KPiAtLQ0KPiAxLjcuNC40DQoNCg==