From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 9E57F7EEF for ; Mon, 18 May 2015 09:28:12 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP; 18 May 2015 00:28:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,451,1427785200"; d="scan'208";a="494938866" Received: from pgsmsx101.gar.corp.intel.com ([10.221.44.78]) by FMSMGA003.fm.intel.com with ESMTP; 18 May 2015 00:28:10 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by PGSMSX101.gar.corp.intel.com (10.221.44.78) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 18 May 2015 15:26:28 +0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.23]) by SHSMSX101.ccr.corp.intel.com ([10.239.4.153]) with mapi id 14.03.0224.002; Mon, 18 May 2015 15:26:27 +0800 From: "Liu, Yong" To: "Jiajia, SunX" , "dts@dpdk.org" Thread-Topic: =?utf-8?B?W2R0c10gW+KAmGR0cy12MeKAmSAzLzldIEFkZCBzb21lIHBhcmFtcyBhbmQg?= =?utf-8?Q?functions_related_to_the_virtual_test?= Thread-Index: AQHQkSigixadV2+3HEqmhaf6XvDQ3J2BUSOQ Date: Mon, 18 May 2015 07:26:26 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E10DE47F8@SHSMSX103.ccr.corp.intel.com> References: <1431925646-1314-1-git-send-email-sunx.jiajia@intel.com> <1431925646-1314-4-git-send-email-sunx.jiajia@intel.com> In-Reply-To: <1431925646-1314-4-git-send-email-sunx.jiajia@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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] =?utf-8?b?W+KAmGR0cy12MeKAmSAzLzldIEFkZCBzb21lIHBhcmFtcyBh?= =?utf-8?q?nd_functions_related_to_the_virtual_test?= 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, 18 May 2015 07:28:14 -0000 SmlhamlhLCBwbGVhc2Ugc2VlIG15IGNvbW1lbnRzIGJlbG93Lg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IGR0cyBbbWFpbHRvOmR0cy1ib3VuY2VzQGRwZGsub3JnXSBP biBCZWhhbGYgT2Ygc2ppYWppYXgNCj4gU2VudDogTW9uZGF5LCBNYXkgMTgsIDIwMTUgMTowNyBQ TQ0KPiBUbzogZHRzQGRwZGsub3JnDQo+IFN1YmplY3Q6IFtkdHNdIFvigJhkdHMtdjHigJkgMy85 XSBBZGQgc29tZSBwYXJhbXMgYW5kIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZQ0KPiB2aXJ0dWFs IHRlc3QNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IHNqaWFqaWF4IDxzdW54LmppYWppYUBpbnRlbC5j b20+DQo+IC0tLQ0KPiAgZnJhbWV3b3JrL2R0cy5weSAgICAgICAgICB8IDkyICsrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLQ0KPiAgZnJhbWV3b3JrL2V4 Y2VwdGlvbi5weSAgICB8IDI3ICsrKysrKysrKysrKysrDQo+ICBmcmFtZXdvcmsvbG9nZ2VyLnB5 ICAgICAgIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0NCj4gIGZyYW1l d29yay9tYWluLnB5ICAgICAgICAgfCAgNyArKystDQo+ICBmcmFtZXdvcmsvcHJvamVjdF9kcGRr LnB5IHwgNjIgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gIDUgZmlsZXMgY2hh bmdlZCwgMTU3IGluc2VydGlvbnMoKyksIDEwMCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1n aXQgYS9mcmFtZXdvcmsvZHRzLnB5IGIvZnJhbWV3b3JrL2R0cy5weQ0KPiBpbmRleCBjOWVjY2Ni Li5jMGRmNGU5IDEwMDY0NA0KPiAtLS0gYS9mcmFtZXdvcmsvZHRzLnB5DQo+ICsrKyBiL2ZyYW1l d29yay9kdHMucHkNCj4gQEAgLTQ5LDYgKzQ5LDcgQEAgZnJvbSB0ZXN0X2Nhc2UgaW1wb3J0IFRl c3RDYXNlDQo+ICBmcm9tIHRlc3RfcmVzdWx0IGltcG9ydCBSZXN1bHQNCj4gIGZyb20gc3RhdHNf cmVwb3J0ZXIgaW1wb3J0IFN0YXRzUmVwb3J0ZXINCj4gIGZyb20gZXhjZWxfcmVwb3J0ZXIgaW1w b3J0IEV4Y2VsUmVwb3J0ZXINCj4gK2Zyb20gdXRpbHMgaW1wb3J0ICoNCj4gIGZyb20gZXhjZXB0 aW9uIGltcG9ydCBUaW1lb3V0RXhjZXB0aW9uDQo+ICBmcm9tIGxvZ2dlciBpbXBvcnQgZ2V0TG9n Z2VyDQo+ICBpbXBvcnQgbG9nZ2VyDQo+IEBAIC01Nyw2ICs1OCw3IEBAIGltcG9ydCBzeXMNCj4g IHJlbG9hZChzeXMpDQo+ICBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKCdVVEY4JykNCj4gDQo+ICtQ Uk9KRUNUX01PRFVMRV9QUkVGSVggPSAncHJvamVjdF8nDQo+IA0KPiAgZGVidWdfbW9kZSA9IEZh bHNlDQo+ICBjb25maWcgPSBOb25lDQo+IEBAIC03Myw0NCArNzUsMTIgQEAgcmVzdWx0ID0gTm9u ZQ0KPiAgZXhjZWxfcmVwb3J0ID0gTm9uZQ0KPiAgc3RhdHMgPSBOb25lDQo+ICBsb2dfaGFuZGxl ciA9IE5vbmUNCj4gK1BhY2thZ2UgPSAnJw0KPiArUGF0Y2hlcyA9IFtdDQo+ICBkcml2ZXJuYW1l ID0gIiINCj4gIGludGVycnVwdHR5cHIgPSAiIg0KPiANCj4gDQo+IC1kZWYgUkVEKHRleHQpOg0K PiAtICAgIHJldHVybiAiXHgxQlsiICsgIjMxOzFtIiArIHRleHQgKyAiXHgxQlsiICsgIjBtIg0K PiAtDQo+IC0NCj4gLWRlZiBCTFVFKHRleHQpOg0KPiAtICAgIHJldHVybiAiXHgxQlsiICsgIjM2 OzFtIiArIHRleHQgKyAiXHgxQlsiICsgIjBtIg0KPiAtDQo+IC0NCj4gLWRlZiBHUkVFTih0ZXh0 KToNCj4gLSAgICByZXR1cm4gIlx4MUJbIiArICIzMjsxbSIgKyB0ZXh0ICsgIlx4MUJbIiArICIw bSINCj4gLQ0KPiAtDQo+IC1kZWYgcmVnZXhwKHMsIHRvX21hdGNoLCBhbGxTdHJpbmc9RmFsc2Up Og0KPiAtICAgICIiIg0KPiAtICAgIEVuc3VyZSB0aGF0IHRoZSByZSBgdG9fbWF0Y2gnIG9ubHkg aGFzIG9uZSBncm91cCBpbiBpdC4NCj4gLSAgICAiIiINCj4gLQ0KPiAtICAgIHNjYW5uZXIgPSBy ZS5jb21waWxlKHRvX21hdGNoLCByZS5ET1RBTEwpDQo+IC0gICAgaWYgYWxsU3RyaW5nOg0KPiAt ICAgICAgICByZXR1cm4gc2Nhbm5lci5maW5kYWxsKHMpDQo+IC0gICAgbSA9IHNjYW5uZXIuc2Vh cmNoKHMpDQo+IC0gICAgaWYgbSBpcyBOb25lOg0KPiAtICAgICAgICBsb2dfaGFuZGxlci53YXJu aW5nKCJGYWlsZWQgdG8gbWF0Y2ggIiArIHRvX21hdGNoICsgIiBpbiB0aGUNCj4gc3RyaW5nICIg KyBzKQ0KPiAtICAgICAgICByZXR1cm4gTm9uZQ0KPiAtICAgIHJldHVybiBtLmdyb3VwKDEpDQo+ IC0NCj4gLQ0KPiAtZGVmIHBwcmludChzb21lX2RpY3QpOg0KPiAtICAgICIiIg0KPiAtICAgIFBy aW50IEpTT04gZm9ybWF0IGRpY3Rpb25hcnkgb2JqZWN0Lg0KPiAtICAgICIiIg0KPiAtICAgIHJl dHVybiBqc29uLmR1bXBzKHNvbWVfZGljdCwgc29ydF9rZXlzPVRydWUsIGluZGVudD00KQ0KPiAt DQo+IC0NCj4gIGRlZiByZXBvcnQodGV4dCwgZnJhbWU9RmFsc2UsIGFubmV4PUZhbHNlKToNCj4g ICAgICAiIiINCj4gICAgICBTYXZlIHJlcG9ydCB0ZXh0IGludG8gcnN0IGZpbGUuDQo+IEBAIC0x MzIsMzYgKzEwMiw2IEBAIGRlZiBjbG9zZV9jcmJfc2Vzc2lvbnMoKToNCj4gICAgICBsb2dfaGFu ZGxlci5pbmZvKCJEVFMgZW5kZWQiKQ0KPiANCj4gDQo+IC1kZWYgZ2V0X25pY19kcml2ZXIocGNp X2lkKToNCj4gLSAgICAiIiINCj4gLSAgICBSZXR1cm4gbGludXggZHJpdmVyIGZvciBzcGVjaWZp ZWQgcGNpIGRldmljZQ0KPiAtICAgICIiIg0KPiAtICAgIGRyaXZlcmxpc3QgPSBkaWN0KHppcChO SUNTLnZhbHVlcygpLCBEUklWRVJTLmtleXMoKSkpDQo+IC0gICAgdHJ5Og0KPiAtICAgICAgICBk cml2ZXIgPSBEUklWRVJTW2RyaXZlcmxpc3RbcGNpX2lkXV0NCj4gLSAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6DQo+IC0gICAgICAgIGRyaXZlciA9IE5vbmUNCj4gLSAgICByZXR1cm4gZHJpdmVy DQo+IC0NCj4gLQ0KPiAtZGVmIGFjY2VwdGVkX25pYyhwY2lfaWQpOg0KPiAtICAgICIiIg0KPiAt ICAgIFJldHVybiBUcnVlIGlmIHRoZSBwY2lfaWQgaXMgYSBrbm93biBOSUMgY2FyZCBpbiB0aGUg c2V0dGluZ3MgZmlsZQ0KPiBhbmQgaWYNCj4gLSAgICBpdCBpcyBzZWxlY3RlZCBpbiB0aGUgZXhl Y3V0aW9uIGZpbGUsIG90aGVyd2lzZSBpdCByZXR1cm5zIEZhbHNlLg0KPiAtICAgICIiIg0KPiAt ICAgIGlmIHBjaV9pZCBub3QgaW4gTklDUy52YWx1ZXMoKToNCj4gLSAgICAgICAgcmV0dXJuIEZh bHNlDQo+IC0NCj4gLSAgICBpZiBuaWMgaXMgJ2FueSc6DQo+IC0gICAgICAgIHJldHVybiBUcnVl DQo+IC0NCj4gLSAgICBlbHNlOg0KPiAtICAgICAgICBpZiBwY2lfaWQgPT0gTklDU1tuaWNdOg0K PiAtICAgICAgICAgICAgcmV0dXJuIFRydWUNCj4gLQ0KPiAtICAgIHJldHVybiBGYWxzZQ0KPiAt DQo+IC0NCj4gIGRlZiBnZXRfY3JiX29zKGNyYik6DQo+ICAgICAgaWYgJ09TJyBpbiBjcmI6DQo+ ICAgICAgICAgIHJldHVybiBjcmJbJ09TJ10NCj4gQEAgLTIyMCw5ICsxNjAsMTAgQEAgZGVmIGdl dF9wcm9qZWN0X29iaihwcm9qZWN0X25hbWUsIHN1cGVyX2NsYXNzLA0KPiBjcmJJbnN0LCBzZXJp YWxpemVyKToNCj4gICAgICAiIiINCj4gICAgICBMb2FkIHByb2plY3QgbW9kdWxlIGFuZCByZXR1 cm4gY3JiIGluc3RhbmNlLg0KPiAgICAgICIiIg0KPiArICAgIGdsb2JhbCBQUk9KRUNUX01PRFVM RV9QUkVGSVgNCj4gICAgICBwcm9qZWN0X29iaiA9IE5vbmUNCj4gICAgICB0cnk6DQo+IC0gICAg ICAgIHByb2plY3RfbW9kdWxlID0gX19pbXBvcnRfXygicHJvamVjdF8iICsgcHJvamVjdF9uYW1l KQ0KPiArICAgICAgICBwcm9qZWN0X21vZHVsZSA9IF9faW1wb3J0X18oUFJPSkVDVF9NT0RVTEVf UFJFRklYICsgcHJvamVjdF9uYW1lKQ0KPiANCj4gICAgICAgICAgZm9yIHByb2plY3Rfc3ViY2xh c3NuYW1lLCBwcm9qZWN0X3N1YmNsYXNzIGluDQo+IGdldF9zdWJjbGFzc2VzKHByb2plY3RfbW9k dWxlLCBzdXBlcl9jbGFzcyk6DQo+ICAgICAgICAgICAgICBwcm9qZWN0X29iaiA9IHByb2plY3Rf c3ViY2xhc3MoY3JiSW5zdCwgc2VyaWFsaXplcikNCj4gQEAgLTI2NywxOSArMjA4LDIwIEBAIGRl ZiBkdHNfbG9nX2V4ZWN1dGlvbihsb2dfaGFuZGxlcik6DQo+ICAgICAgICAgIHBhc3MNCj4gDQo+ IA0KPiAtZGVmIGR0c19jcmJzX2luaXQoY3JiSW5zdCwgc2tpcF9zZXR1cCwgcmVhZF9jYWNoZSwg cHJvamVjdCwgYmFzZV9kaXIsDQo+IG5pYyk6DQo+ICtkZWYgZHRzX2NyYnNfaW5pdChjcmJJbnN0 LCBza2lwX3NldHVwLCByZWFkX2NhY2hlLCBwcm9qZWN0LCBiYXNlX2RpciwgbmljLA0KPiB2aXJ0 dHlwZSk6DQo+ICAgICAgIiIiDQo+ICAgICAgQ3JlYXRlIGR0cyBkdXQvdGVzdGVyIGluc3RhbmNl IGFuZCBpbml0aWFsaXplIHRoZW0uDQo+ICAgICAgIiIiDQo+ICAgICAgZ2xvYmFsIGR1dA0KPiAg ICAgIGdsb2JhbCB0ZXN0ZXINCj4gLSAgICBzZXJpYWxpemVyLnNldF9zZXJpYWxpemVkX2ZpbGVu YW1lKCcuLi8uJXMuY2FjaGUnICUgY3JiSW5zdFsnSVAnXSkNCj4gKyAgICBzZXJpYWxpemVyLnNl dF9zZXJpYWxpemVkX2ZpbGVuYW1lKCcuJXMuY2FjaGUnICUgY3JiSW5zdFsnSVAnXSkNCj4gICAg ICBzZXJpYWxpemVyLmxvYWRfZnJvbV9maWxlKCkNCj4gDQo+ICAgICAgZHV0ID0gZ2V0X3Byb2pl Y3Rfb2JqKHByb2plY3QsIER1dCwgY3JiSW5zdCwgc2VyaWFsaXplcikNCj4gICAgICB0ZXN0ZXIg PSBnZXRfcHJvamVjdF9vYmoocHJvamVjdCwgVGVzdGVyLCBjcmJJbnN0LCBzZXJpYWxpemVyKQ0K PiAgICAgIGR1dC50ZXN0ZXIgPSB0ZXN0ZXINCj4gICAgICB0ZXN0ZXIuZHV0ID0gZHV0DQo+ICsg ICAgZHV0LnNldF92aXJ0dHlwZSh2aXJ0dHlwZSkNCj4gICAgICBkdXQuc2V0X3NwZWVkdXBfb3B0 aW9ucyhyZWFkX2NhY2hlLCBza2lwX3NldHVwKQ0KPiAgICAgIGR1dC5zZXRfZGlyZWN0b3J5KGJh c2VfZGlyKQ0KPiAgICAgIGR1dC5zZXRfbmljX3R5cGUobmljKQ0KPiBAQCAtMzM3LDcgKzI3OSw2 IEBAIGRlZiBkdHNfcnVuX3RhcmdldChjcmJJbnN0LCB0YXJnZXRzLCB0ZXN0X3N1aXRlcywgbmlj KToNCj4gICAgICAgICAgaWYgJ25pY190eXBlJyBub3QgaW4gcGFyYW1EaWN0Og0KPiAgICAgICAg ICAgICAgcGFyYW1EaWN0WyduaWNfdHlwZSddID0gJ2FueScNCj4gICAgICAgICAgICAgIG5pYyA9 ICdhbnknDQo+IC0gICAgICAgIHJlc3VsdC5uaWMgPSBuaWMNCj4gDQo+ICAgICAgICAgIGR0c19y dW5fc3VpdGUoY3JiSW5zdCwgdGVzdF9zdWl0ZXMsIHRhcmdldCwgbmljKQ0KPiANCj4gQEAgLTM1 OSw3ICszMDAsOSBAQCBkZWYgZHRzX3J1bl9zdWl0ZShjcmJJbnN0LCB0ZXN0X3N1aXRlcywgdGFy Z2V0LCBuaWMpOg0KPiAgICAgICAgICAgICAgdGVzdF9tb2R1bGUgPSBfX2ltcG9ydF9fKCdUZXN0 U3VpdGVfJyArIHRlc3Rfc3VpdGUpDQo+ICAgICAgICAgICAgICBmb3IgdGVzdF9jbGFzc25hbWUs IHRlc3RfY2xhc3MgaW4gZ2V0X3N1YmNsYXNzZXModGVzdF9tb2R1bGUsDQo+IFRlc3RDYXNlKToN Cj4gDQo+IC0gICAgICAgICAgICAgICAgdGVzdF9zdWl0ZSA9IHRlc3RfY2xhc3MoZHV0LCB0ZXN0 ZXIsIHRhcmdldCkNCj4gKyAgICAgICAgICAgICAgICB0ZXN0X3N1aXRlID0gdGVzdF9jbGFzcyhk dXQsIHRlc3RlciwgdGFyZ2V0LCB0ZXN0X3N1aXRlKQ0KPiArICAgICAgICAgICAgICAgIHJlc3Vs dC5uaWMgPSB0ZXN0X3N1aXRlLm5pYw0KPiArDQo+ICAgICAgICAgICAgICAgICAgZHRzX2xvZ190 ZXN0c3VpdGUodGVzdF9zdWl0ZSwgbG9nX2hhbmRsZXIsIHRlc3RfY2xhc3NuYW1lKQ0KPiANCj4g ICAgICAgICAgICAgICAgICBsb2dfaGFuZGxlci5pbmZvKCJcblRFU1QgU1VJVEUgOiAiICsgdGVz dF9jbGFzc25hbWUpDQo+IEBAIC0zODYsNyArMzI5LDcgQEAgZGVmIGR0c19ydW5fc3VpdGUoY3Ji SW5zdCwgdGVzdF9zdWl0ZXMsIHRhcmdldCwgbmljKToNCj4gDQo+ICBkZWYgcnVuX2FsbChjb25m aWdfZmlsZSwgcGtnTmFtZSwgZ2l0LCBwYXRjaCwgc2tpcF9zZXR1cCwNCj4gICAgICAgICAgICAg IHJlYWRfY2FjaGUsIHByb2plY3QsIHN1aXRlX2RpciwgdGVzdF9jYXNlcywNCj4gLSAgICAgICAg ICAgIGJhc2VfZGlyLCBvdXRwdXRfZGlyLCB2ZXJib3NlLCBkZWJ1Zyk6DQo+ICsgICAgICAgICAg ICBiYXNlX2Rpciwgb3V0cHV0X2RpciwgdmVyYm9zZSwgdmlydHR5cGUsIGRlYnVnKToNCj4gICAg ICAiIiINCj4gICAgICBNYWluIHByb2Nlc3Mgb2YgRFRTLCBpdCB3aWxsIHJ1biBhbGwgdGVzdCBz dWl0ZXMgaW4gdGhlIGNvbmZpZyBmaWxlLg0KPiAgICAgICIiIg0KPiBAQCAtNDAwLDYgKzM0Mywx MiBAQCBkZWYgcnVuX2FsbChjb25maWdfZmlsZSwgcGtnTmFtZSwgZ2l0LCBwYXRjaCwNCj4gc2tp cF9zZXR1cCwNCj4gICAgICBnbG9iYWwgc3RhdHMNCj4gICAgICBnbG9iYWwgbG9nX2hhbmRsZXIN Cj4gICAgICBnbG9iYWwgZGVidWdfbW9kZQ0KPiArICAgIGdsb2JhbCBQYWNrYWdlDQo+ICsgICAg Z2xvYmFsIFBhdGNoZXMNCj4gKw0KPiArICAgICMgc2F2ZSBnbG9iYWwgdmFyaWFibGUNCj4gKyAg ICBQYWNrYWdlID0gcGtnTmFtZQ0KPiArICAgIFBhdGNoZXMgPSBwYXRjaA0KPiANCj4gICAgICAj IHByZXBhcmUgdGhlIG91dHB1dCBmb2xkZXINCj4gICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo b3V0cHV0X2Rpcik6DQo+IEBAIC00NjYsNyArNDE1LDggQEAgZGVmIHJ1bl9hbGwoY29uZmlnX2Zp bGUsIHBrZ05hbWUsIGdpdCwgcGF0Y2gsDQo+IHNraXBfc2V0dXAsDQo+ICAgICAgICAgIHJlc3Vs dC5kdXQgPSBkdXRJUA0KPiANCj4gICAgICAgICAgIyBpbml0IGR1dCwgdGVzdGVyIGNyYg0KPiAt ICAgICAgICBkdHNfY3Jic19pbml0KGNyYkluc3QsIHNraXBfc2V0dXAsIHJlYWRfY2FjaGUsIHBy b2plY3QsIGJhc2VfZGlyLA0KPiBuaWNzKQ0KPiArICAgICAgICBkdHNfY3Jic19pbml0KA0KPiAr ICAgICAgICAgICAgY3JiSW5zdCwgc2tpcF9zZXR1cCwgcmVhZF9jYWNoZSwgcHJvamVjdCwgYmFz ZV9kaXIsIG5pY3MsDQo+IHZpcnR0eXBlKQ0KPiANCj4gICAgICAgICAgIyBSdW4gRFVUIHByZXJl cXVpc2l0ZXMNCj4gICAgICAgICAgaWYgZHRzX3J1bl9wcmVyZXF1aXN0aWVzKHBrZ05hbWUsIHBh dGNoKSBpcyBGYWxzZToNCj4gZGlmZiAtLWdpdCBhL2ZyYW1ld29yay9leGNlcHRpb24ucHkgYi9m cmFtZXdvcmsvZXhjZXB0aW9uLnB5DQo+IGluZGV4IGJlMzhjMTYuLjk4ZGVkZjQgMTAwNjQ0DQo+ IC0tLSBhL2ZyYW1ld29yay9leGNlcHRpb24ucHkNCj4gKysrIGIvZnJhbWV3b3JrL2V4Y2VwdGlv bi5weQ0KPiBAQCAtNDYsMyArNDYsMzAgQEAgY2xhc3MgU1NIQ29ubmVjdGlvbkV4Y2VwdGlvbihF eGNlcHRpb24pOg0KPiANCj4gICAgICBkZWYgX19zdHJfXyhzZWxmKToNCj4gICAgICAgICAgcmV0 dXJuICdFcnJvciB0cnlpbmcgdG8gY29ubmVjdCB3aXRoICVzJyAlIHNlbGYuaG9zdA0KPiArDQo+ ICsNCj4gK2NsYXNzIFNTSFNlc3Npb25EZWFkRXhjZXB0aW9uKEV4Y2VwdGlvbik6DQo+ICsNCj4g KyAgICAiIiINCj4gKyAgICBTU0ggc2Vzc2lvbiBpcyBub3QgYWxpdmUuDQo+ICsgICAgSXQgY2Fu IG5vIGxvbmdlciBiZSB1c2VkLg0KPiArICAgICIiIg0KPiArDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsIGhvc3QpOg0KPiArICAgICAgICBzZWxmLmhvc3QgPSBob3N0DQo+ICsNCj4gKyAgICBk ZWYgX19zdHJfXyhzZWxmKToNCj4gKyAgICAgICAgcmV0dXJuICdTU0ggc2Vzc2lvbiB3aXRoICVz IGhhcyBiZWVuIGRlYWQnICUgc2VsZi5ob3N0DQo+ICsNCj4gKw0KPiArY2xhc3MgU3RhcnRWTUZh aWxlZEV4Y2VwdGlvbihFeGNlcHRpb24pOg0KPiArDQo+ICsgICAgIiIiDQo+ICsgICAgU3RhcnQg Vk0gZmFpbGVkLg0KPiArICAgICIiIg0KPiArDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVy cm9yKToNCj4gKyAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yDQo+ICsNCj4gKyAgICBkZWYgX19z dHJfXyhzZWxmKToNCj4gKyAgICAgICAgcmV0dXJuIHJlcHIoc2VsZi5lcnJvcikNCj4gZGlmZiAt LWdpdCBhL2ZyYW1ld29yay9sb2dnZXIucHkgYi9mcmFtZXdvcmsvbG9nZ2VyLnB5DQo+IGluZGV4 IDE4MjllMTguLjU1OTdlMzMgMTAwNjQ0DQo+IC0tLSBhL2ZyYW1ld29yay9sb2dnZXIucHkNCj4g KysrIGIvZnJhbWV3b3JrL2xvZ2dlci5weQ0KPiBAQCAtMzUsNiArMzUsOSBAQCBpbXBvcnQgc3lz DQo+ICBpbXBvcnQgaW5zcGVjdA0KPiAgaW1wb3J0IHJlDQo+IA0KPiArZnJvbSBzZXR0aW5ncyBp bXBvcnQgTE9HX05BTUVfU0VQDQo+ICtmcm9tIHV0aWxzIGltcG9ydCBSRUQNCj4gKw0KPiAgIiIi DQo+ICBEVFMgbG9nZ2VyIG1vZHVsZSB3aXRoIHNldmVyYWwgbG9nIGxldmVsLiBEVFMgZnJhbXdv cmsgYW5kIFRlc3RTdWl0ZSBsb2cNCj4gIHdpbGwgc2F2ZWQgaW50byBkaWZmZXJlbnQgbG9nIGZp bGVzLg0KPiBAQCAtNTgsNiArNjEsOSBAQCBsb2dnaW5nLlNVSVRFX1RFU1RFUl9PVVRQVVQgPSBs b2dnaW5nLkRFQlVHICsgNA0KPiAgbG9nZ2luZy5EVFNfSVhJQV9DTUQgPSBsb2dnaW5nLklORk8g KyA1DQo+ICBsb2dnaW5nLkRUU19JWElBX09VVFBVVCA9IGxvZ2dpbmcuREVCVUcgKyA1DQo+IA0K PiArbG9nZ2luZy5EVFNfVklSVERVVF9DTUQgPSBsb2dnaW5nLklORk8gKyA2DQo+ICtsb2dnaW5n LkRUU19WSVJURFVUX09VVFBVVCA9IGxvZ2dpbmcuREVCVUcgKyA2DQo+ICsNCj4gIGxvZ2dpbmcu YWRkTGV2ZWxOYW1lKGxvZ2dpbmcuRFRTX0RVVF9DTUQsICdEVFNfRFVUX0NNRCcpDQo+ICBsb2dn aW5nLmFkZExldmVsTmFtZShsb2dnaW5nLkRUU19EVVRfT1VUUFVULCAnRFRTX0RVVF9PVVRQVVQn KQ0KPiAgbG9nZ2luZy5hZGRMZXZlbE5hbWUobG9nZ2luZy5EVFNfRFVUX1JFU1VMVCwgJ0RUU19E VVRfUkVTVVRMJykNCj4gQEAgLTY2LDYgKzcyLDEyIEBAIGxvZ2dpbmcuYWRkTGV2ZWxOYW1lKGxv Z2dpbmcuRFRTX1RFU1RFUl9DTUQsDQo+ICdEVFNfVEVTVEVSX0NNRCcpDQo+ICBsb2dnaW5nLmFk ZExldmVsTmFtZShsb2dnaW5nLkRUU19URVNURVJfT1VUUFVULCAnRFRTX1RFU1RFUl9PVVRQVVQn KQ0KPiAgbG9nZ2luZy5hZGRMZXZlbE5hbWUobG9nZ2luZy5EVFNfVEVTVEVSX1JFU1VMVCwgJ0RU U19URVNURVJfUkVTVUxUJykNCj4gDQo+ICtsb2dnaW5nLmFkZExldmVsTmFtZShsb2dnaW5nLkRU U19JWElBX0NNRCwgJ0RUU19JWElBX0NNRCcpDQo+ICtsb2dnaW5nLmFkZExldmVsTmFtZShsb2dn aW5nLkRUU19JWElBX09VVFBVVCwgJ0RUU19JWElBX09VVFBVVCcpDQo+ICsNCj4gK2xvZ2dpbmcu YWRkTGV2ZWxOYW1lKGxvZ2dpbmcuRFRTX1ZJUlREVVRfQ01ELCAnVklSVERVVF9DTUQnKQ0KPiAr bG9nZ2luZy5hZGRMZXZlbE5hbWUobG9nZ2luZy5EVFNfVklSVERVVF9PVVRQVVQsICdWSVJURFVU X09VVFBVVCcpDQo+ICsNCj4gIGxvZ2dpbmcuYWRkTGV2ZWxOYW1lKGxvZ2dpbmcuU1VJVEVfRFVU X0NNRCwgJ1NVSVRFX0RVVF9DTUQnKQ0KPiAgbG9nZ2luZy5hZGRMZXZlbE5hbWUobG9nZ2luZy5T VUlURV9EVVRfT1VUUFVULCAnU1VJVEVfRFVUX09VVFBVVCcpDQo+IA0KPiBAQCAtODIsMTUgKzk0 LDE4IEBAIHN0cmVhbV9mbXQgPSAnJShjb2xvcilzJShsZXZlbG5hbWUpMjBzOiAlKG1lc3NhZ2Up cycgKw0KPiBSRVNFVF9DT0xPUg0KPiAgbG9nX2RpciA9IE5vbmUNCj4gDQo+IA0KPiAtZGVmIFJF RCh0ZXh0KToNCj4gLSAgICByZXR1cm4gIlx4MUJbIiArICIzMTsxbSIgKyB0ZXh0ICsgIlx4MUJb IiArICIwbSINCj4gLQ0KPiAtDQo+ICBkZWYgc2V0X3ZlcmJvc2UoKToNCj4gICAgICBnbG9iYWwg dmVyYm9zZQ0KPiAgICAgIHZlcmJvc2UgPSBUcnVlDQo+IA0KPiANCj4gK2RlZiBhZGRfc2FsdChz YWx0LCBtc2cpOg0KPiArICAgIGlmIG5vdCBzYWx0Og0KPiArICAgICAgICByZXR1cm4gbXNnDQo+ ICsgICAgZWxzZToNCj4gKyAgICAgICAgcmV0dXJuICdbJXNdICcgJSBzYWx0ICsgc3RyKG1zZykN Cj4gKw0KPiArDQo+ICBjbGFzcyBCYXNlTG9nZ2VyQWRhcHRlcihsb2dnaW5nLkxvZ2dlckFkYXB0 ZXIpOg0KPiAgICAgICIiIg0KPiAgICAgIFVwcGVyIGxheWVyIG9mIG9yaWdpbmFsIGxvZ2dpbmcg bW9kdWxlLg0KPiBAQCAtMTMyLDYgKzE0NywxMiBAQCBjbGFzcyBCYXNlTG9nZ2VyQWRhcHRlcihs b2dnaW5nLkxvZ2dlckFkYXB0ZXIpOg0KPiAgICAgIGRlZiBkdHNfaXhpYV9vdXRwdXQoc2VsZiwg bXNnLCAqYXJncywgKiprd2FyZ3MpOg0KPiAgICAgICAgICBzZWxmLmxvZyhsb2dnaW5nLkRUU19J WElBX09VVFBVVCwgbXNnLCAqYXJncywgKiprd2FyZ3MpDQo+IA0KPiArICAgIGRlZiBkdHNfdmly dGR1dF9jbWQoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOg0KPiArICAgICAgICBzZWxmLmxv Zyhsb2dnaW5nLkRUU19WSVJURFVUX0NNRCwgbXNnLCAqYXJncywgKiprd2FyZ3MpDQo+ICsNCj4g KyAgICBkZWYgZHRzX3ZpcnRkdXRfb3V0cHV0KHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToN Cj4gKyAgICAgICAgc2VsZi5sb2cobG9nZ2luZy5EVFNfVklSVERVVF9PVVRQVVQsIG1zZywgKmFy Z3MsICoqa3dhcmdzKQ0KPiArDQo+IA0KPiAgY2xhc3MgQ29sb3JIYW5kbGVyKGxvZ2dpbmcuU3Ry ZWFtSGFuZGxlcik6DQo+ICAgICAgIiIiDQo+IEBAIC0xNTAsNiArMTcxLDggQEAgY2xhc3MgQ29s b3JIYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6DQo+ICAgICAgICAgIGxvZ2dpbmcuU1VJ VEVfVEVTVEVSX0NNRDogJycsICAjIFNZU1RFTQ0KPiAgICAgICAgICBsb2dnaW5nLkRUU19JWElB X0NNRDogJycsICAjIFNZU1RFTQ0KPiAgICAgICAgICBsb2dnaW5nLkRUU19JWElBX09VVFBVVDog JycsICAjIFNZU1RFTQ0KPiArICAgICAgICBsb2dnaW5nLkRUU19WSVJURFVUX0NNRDogJycsICAj IFNZU1RFTQ0KPiArICAgICAgICBsb2dnaW5nLkRUU19WSVJURFVUX09VVFBVVDogJycsICAjIFNZ U1RFTQ0KPiAgICAgICAgICBsb2dnaW5nLldBUk46ICdcMDMzWzAxOzMzbScsICAjIEJPTEQgWUVM TE9XDQo+ICAgICAgICAgIGxvZ2dpbmcuRFRTX0RVVF9SRVNVTFQ6ICdcMDMzWzAxOzM0bScsICAj IEJPTEQgQkxVRQ0KPiAgICAgICAgICBsb2dnaW5nLkRUU19URVNURVJfUkVTVUxUOiAnXDAzM1sw MTszNG0nLCAgIyBCT0xEIEJMVUUNCj4gQEAgLTE4OSw2ICsyMTIsOCBAQCBjbGFzcyBEVFNMT0co QmFzZUxvZ2dlckFkYXB0ZXIpOg0KPiAgICAgICAgICBzZWxmLmNyYiA9IGNyYg0KPiAgICAgICAg ICBzdXBlcihEVFNMT0csIHNlbGYpLl9faW5pdF9fKHNlbGYubG9nZ2VyLCBkaWN0KGNyYj1zZWxm LmNyYikpDQo+IA0KPiArICAgICAgICBzZWxmLnNhbHQgPSAnJw0KPiArDQo+ICAgICAgICAgIHNl bGYuZmggPSBOb25lDQo+ICAgICAgICAgIHNlbGYuY2ggPSBOb25lDQo+IA0KPiBAQCAtMjIxLDI0 ICsyNDYsMjggQEAgY2xhc3MgRFRTTE9HKEJhc2VMb2dnZXJBZGFwdGVyKToNCj4gICAgICAgICAg IiIiDQo+ICAgICAgICAgIERUUyB3YXJubmluZyBsZXZlbCBsb2cgZnVuY3Rpb24uDQo+ICAgICAg ICAgICIiIg0KPiArICAgICAgICBtZXNzYWdlID0gYWRkX3NhbHQoc2VsZi5zYWx0LCBtZXNzYWdl KQ0KPiAgICAgICAgICBzZWxmLmxvZ2dlci5sb2coc2VsZi53YXJuX2x2bCwgbWVzc2FnZSkNCj4g DQo+ICAgICAgZGVmIGluZm8oc2VsZiwgbWVzc2FnZSk6DQo+ICAgICAgICAgICIiIg0KPiAgICAg ICAgICBEVFMgaW5mb3JtYXRpb24gbGV2ZWwgbG9nIGZ1bmN0aW9uLg0KPiAgICAgICAgICAiIiIN Cj4gKyAgICAgICAgbWVzc2FnZSA9IGFkZF9zYWx0KHNlbGYuc2FsdCwgbWVzc2FnZSkNCj4gICAg ICAgICAgc2VsZi5sb2dnZXIubG9nKHNlbGYuaW5mb19sdmwsIG1lc3NhZ2UpDQo+IA0KPiAgICAg IGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToNCj4gICAgICAgICAgIiIiDQo+ICAgICAgICAgIERU UyBlcnJvciBsZXZlbCBsb2cgZnVuY3Rpb24uDQo+ICAgICAgICAgICIiIg0KPiArICAgICAgICBt ZXNzYWdlID0gYWRkX3NhbHQoc2VsZi5zYWx0LCBtZXNzYWdlKQ0KPiAgICAgICAgICBzZWxmLmxv Z2dlci5sb2coc2VsZi5lcnJvcl9sdmwsIG1lc3NhZ2UpDQo+IA0KPiAgICAgIGRlZiBkZWJ1Zyhz ZWxmLCBtZXNzYWdlKToNCj4gICAgICAgICAgIiIiDQo+ICAgICAgICAgIERUUyBkZWJ1ZyBsZXZl bCBsb2cgZnVuY3Rpb24uDQo+ICAgICAgICAgICIiIg0KPiArICAgICAgICBtZXNzYWdlID0gYWRk X3NhbHQoc2VsZi5zYWx0LCBtZXNzYWdlKQ0KPiAgICAgICAgICBzZWxmLmxvZ2dlci5sb2coc2Vs Zi5kZWJ1Z19sdmwsIG1lc3NhZ2UpDQo+IA0KPiAgICAgIGRlZiBzZXRfbG9nZmlsZV9wYXRoKHNl bGYsIHBhdGgpOg0KPiBAQCAtMjcwLDE3ICsyOTksMzQgQEAgY2xhc3MgRFRTTE9HKEJhc2VMb2dn ZXJBZGFwdGVyKToNCj4gICAgICAgICAgY2ggPSBDb2xvckhhbmRsZXIoKQ0KPiAgICAgICAgICBz ZWxmLl9fbG9nX2hhbmRlcihmaCwgY2gpDQo+IA0KPiAtICAgICAgICBpZiBjcmIgPT0gImR1dCI6 DQo+ICsgICAgICAgIGRlZiBzZXRfc2FsdChjcmIsIHN0YXJ0X2ZsYWcpOg0KPiArICAgICAgICAg ICAgaWYgTE9HX05BTUVfU0VQIGluIGNyYjoNCj4gKyAgICAgICAgICAgICAgICBvbGQgPSAnJXMl cycgJSAoc3RhcnRfZmxhZywgTE9HX05BTUVfU0VQKQ0KPiArICAgICAgICAgICAgICAgIGlmIG5v dCBzZWxmLnNhbHQ6DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc2FsdCA9IGNyYi5yZXBs YWNlKG9sZCwgJycsIDEpDQo+ICsNCj4gKyAgICAgICAgaWYgY3JiLnN0YXJ0c3dpdGgoJ2R1dCcp Og0KPiAgICAgICAgICAgICAgc2VsZi5pbmZvX2x2bCA9IGxvZ2dpbmcuRFRTX0RVVF9DTUQNCj4g ICAgICAgICAgICAgIHNlbGYuZGVidWdfbHZsID0gbG9nZ2luZy5EVFNfRFVUX09VVFBVVA0KPiAg ICAgICAgICAgICAgc2VsZi53YXJuX2x2bCA9IGxvZ2dpbmcuRFRTX0RVVF9SRVNVTFQNCj4gLSAg ICAgICAgZWxpZiBjcmIgPT0gInRlc3RlciI6DQo+ICsNCj4gKyAgICAgICAgICAgIHNldF9zYWx0 KGNyYiwgJ2R1dCcpDQo+ICsgICAgICAgIGVsaWYgY3JiLnN0YXJ0c3dpdGgoJ3Rlc3RlcicpOg0K PiAgICAgICAgICAgICAgc2VsZi5pbmZvX2x2bCA9IGxvZ2dpbmcuRFRTX1RFU1RFUl9DTUQNCj4g ICAgICAgICAgICAgIHNlbGYuZGVidWdfbHZsID0gbG9nZ2luZy5EVFNfVEVTVEVSX09VVFBVVA0K PiAgICAgICAgICAgICAgc2VsZi53YXJuX2x2bCA9IGxvZ2dpbmcuRFRTX1RFU1RFUl9SRVNVTFQN Cj4gLSAgICAgICAgZWxpZiBjcmIgPT0gIml4aWEiOg0KPiArDQo+ICsgICAgICAgICAgICBzZXRf c2FsdChjcmIsICd0ZXN0ZXInKQ0KPiArICAgICAgICBlbGlmIGNyYi5zdGFydHN3aXRoKCdpeGlh Jyk6DQo+ICAgICAgICAgICAgICBzZWxmLmluZm9fbHZsID0gbG9nZ2luZy5EVFNfSVhJQV9DTUQN Cj4gICAgICAgICAgICAgIHNlbGYuZGVidWdfbHZsID0gbG9nZ2luZy5EVFNfSVhJQV9PVVRQVVQN Cj4gKw0KPiArICAgICAgICAgICAgc2V0X3NhbHQoY3JiLCAnaXhpYScpDQo+ICsgICAgICAgIGVs aWYgY3JiLnN0YXJ0c3dpdGgoJ3ZpcnRkdXQnKToNCj4gKyAgICAgICAgICAgIHNlbGYuaW5mb19s dmwgPSBsb2dnaW5nLkRUU19WSVJURFVUX0NNRA0KPiArICAgICAgICAgICAgc2VsZi5kZWJ1Z19s dmwgPSBsb2dnaW5nLkRUU19WSVJURFVUX09VVFBVVA0KPiArDQo+ICsgICAgICAgICAgICBzZXRf c2FsdChjcmIsICd2aXJ0ZHV0JykNCj4gICAgICAgICAgZWxzZToNCj4gICAgICAgICAgICAgIHNl bGYuZXJyb3JfbHZsID0gbG9nZ2luZy5FUlJPUg0KPiAgICAgICAgICAgICAgc2VsZi53YXJuX2x2 bCA9IGxvZ2dpbmcuV0FSTklORw0KPiBAQCAtMjk2LDE1ICszNDIsMTggQEAgY2xhc3MgRFRTTE9H KEJhc2VMb2dnZXJBZGFwdGVyKToNCj4gICAgICAgICAgY2ggPSBDb2xvckhhbmRsZXIoKQ0KPiAg ICAgICAgICBzZWxmLl9fbG9nX2hhbmRlcihmaCwgY2gpDQo+IA0KPiAtICAgICAgICBpZiBjcmIg PT0gImR1dCI6DQo+ICsgICAgICAgIGlmIGNyYiA9PSAnZHV0JzoNCj4gICAgICAgICAgICAgIHNl bGYuaW5mb19sdmwgPSBsb2dnaW5nLlNVSVRFX0RVVF9DTUQNCj4gICAgICAgICAgICAgIHNlbGYu ZGVidWdfbHZsID0gbG9nZ2luZy5TVUlURV9EVVRfT1VUUFVUDQo+IC0gICAgICAgIGVsaWYgY3Ji ID09ICJ0ZXN0ZXIiOg0KPiArICAgICAgICBlbGlmIGNyYiA9PSAndGVzdGVyJzoNCj4gICAgICAg ICAgICAgIHNlbGYuaW5mb19sdmwgPSBsb2dnaW5nLlNVSVRFX1RFU1RFUl9DTUQNCj4gICAgICAg ICAgICAgIHNlbGYuZGVidWdfbHZsID0gbG9nZ2luZy5TVUlURV9URVNURVJfT1VUUFVUDQo+IC0g ICAgICAgIGVsaWYgY3JiID09ICJpeGlhIjoNCj4gKyAgICAgICAgZWxpZiBjcmIgPT0gJ2l4aWEn Og0KPiAgICAgICAgICAgICAgc2VsZi5pbmZvX2x2bCA9IGxvZ2dpbmcuRFRTX0lYSUFfQ01EDQo+ ICAgICAgICAgICAgICBzZWxmLmRlYnVnX2x2bCA9IGxvZ2dpbmcuRFRTX0lYSUFfT1VUUFVUDQo+ ICsgICAgICAgIGVsaWYgY3JiID09ICd2aXJ0ZHV0JzoNCj4gKyAgICAgICAgICAgIHNlbGYuaW5m b19sdmwgPSBsb2dnaW5nLkRUU19WSVJURFVUX0NNRA0KPiArICAgICAgICAgICAgc2VsZi5kZWJ1 Z19sdmwgPSBsb2dnaW5nLkRUU19WSVJURFVUX09VVFBVVA0KPiANCj4gICAgICBkZWYgbG9nZ2Vy X2V4aXQoc2VsZik6DQo+ICAgICAgICAgICIiIg0KPiBkaWZmIC0tZ2l0IGEvZnJhbWV3b3JrL21h aW4ucHkgYi9mcmFtZXdvcmsvbWFpbi5weQ0KPiBpbmRleCAzZTQ2N2QwLi4wNDk2YjIwIDEwMDc1 NQ0KPiAtLS0gYS9mcmFtZXdvcmsvbWFpbi5weQ0KPiArKysgYi9mcmFtZXdvcmsvbWFpbi5weQ0K PiBAQCAtMTE3LDYgKzExNywxMCBAQCBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJv c2UnLA0KPiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLA0KPiAgICAg ICAgICAgICAgICAgICAgICBoZWxwPSdlbmFibGUgdmVyYm9zZSBvdXRwdXQsIGFsbCBtZXNzYWdl IG91dHB1dCBvbg0KPiBzY3JlZW4nKQ0KPiANCj4gK3BhcnNlci5hZGRfYXJndW1lbnQoJy0tdmly dHR5cGUnLA0KPiArICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdrdm0nLA0KPiArICAgICAg ICAgICAgICAgICAgICBoZWxwPSdzZXQgdmlydCB0eXBlLHN1cHBvcnQgbGlidmlydCx4ZW4sa3Zt JykNCj4gKw0KPiAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZWJ1ZycsDQo+ICAgICAgICAgICAg ICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsDQo+ICAgICAgICAgICAgICAgICAgICAgIGhl bHA9J2VuYWJsZSBkZWJ1ZyBtb2RlLCB1c2VyIGNhbiBlbnRlciBkZWJ1ZyBtb2RlIGluDQo+IHBy b2Nlc3MnKQ0KPiBAQCAtMTM2LDQgKzE0MCw1IEBAIGlmIGFyZ3MuZ2l0IGlzIG5vdCBOb25lOg0K PiAgZHRzLnJ1bl9hbGwoYXJncy5jb25maWdfZmlsZSwgYXJncy5zbmFwc2hvdCwgYXJncy5naXQs DQo+ICAgICAgICAgICAgICBhcmdzLnBhdGNoLCBhcmdzLnNraXBfc2V0dXAsIGFyZ3MucmVhZF9j YWNoZSwNCj4gICAgICAgICAgICAgIGFyZ3MucHJvamVjdCwgYXJncy5zdWl0ZV9kaXIsIGFyZ3Mu dGVzdF9jYXNlcywNCj4gLSAgICAgICAgICAgIGFyZ3MuZGlyLCBhcmdzLm91dHB1dCwgYXJncy52 ZXJib3NlLCBhcmdzLmRlYnVnKQ0KPiArICAgICAgICAgICAgYXJncy5kaXIsIGFyZ3Mub3V0cHV0 LCBhcmdzLnZlcmJvc2UsYXJncy52aXJ0dHlwZSwNCj4gKyAgICAgICAgICAgIGFyZ3MuZGVidWcp DQo+IGRpZmYgLS1naXQgYS9mcmFtZXdvcmsvcHJvamVjdF9kcGRrLnB5IGIvZnJhbWV3b3JrL3By b2plY3RfZHBkay5weQ0KPiBpbmRleCA4OTYzOTI0Li42N2JkNDkyIDEwMDY0NA0KPiAtLS0gYS9m cmFtZXdvcmsvcHJvamVjdF9kcGRrLnB5DQo+ICsrKyBiL2ZyYW1ld29yay9wcm9qZWN0X2RwZGsu cHkNCj4gQEAgLTM5LDcgKzM5LDcgQEAgZnJvbSBjcmIgaW1wb3J0IENyYg0KPiAgZnJvbSBkdXQg aW1wb3J0IER1dA0KPiAgZnJvbSB0ZXN0ZXIgaW1wb3J0IFRlc3Rlcg0KPiAgZnJvbSBsb2dnZXIg aW1wb3J0IGdldExvZ2dlcg0KPiAtZnJvbSBzZXR0aW5ncyBpbXBvcnQgSVhJQQ0KPiArZnJvbSBz ZXR0aW5ncyBpbXBvcnQgSVhJQSwgYWNjZXB0ZWRfbmljDQo+IA0KPiANCj4gIGNsYXNzIERQREtk dXQoRHV0KToNCj4gQEAgLTUwLDggKzUwLDkgQEAgY2xhc3MgRFBES2R1dChEdXQpOg0KPiAgICAg ICIiIg0KPiANCj4gICAgICBkZWYgX19pbml0X18oc2VsZiwgY3JiLCBzZXJpYWxpemVyKToNCj4g LSAgICAgICAgc2VsZi5OQU1FID0gJ2R1dCcNCj4gKw0KPiAgICAgICAgICBzdXBlcihEUERLZHV0 LCBzZWxmKS5fX2luaXRfXyhjcmIsIHNlcmlhbGl6ZXIpDQo+ICsgICAgICAgIHNlbGYudGVzdHBt ZCA9IE5vbmUNCj4gDQo+ICAgICAgZGVmIHNldF90YXJnZXQoc2VsZiwgdGFyZ2V0KToNCj4gICAg ICAgICAgIiIiDQo+IEBAIC02MCw2ICs2MSw3IEBAIGNsYXNzIERQREtkdXQoRHV0KToNCj4gICAg ICAgICAgU2V0IGh1Z2VwYWdlIG9uIERVVCBhbmQgaW5zdGFsbCBtb2R1bGVzIHJlcXVpcmVkIGJ5 IERQREsuDQo+ICAgICAgICAgIENvbmZpZ3VyZSBkZWZhdWx0IGl4Z2JlIFBNRCBmdW5jdGlvbi4N Cj4gICAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0DQo+ICAgICAg ICAgIHNlbGYuc2V0X3Rvb2xjaGFpbih0YXJnZXQpDQo+IA0KPiAgICAgICAgICAjIHNldCBlbnYg dmFyaWFibGUNCj4gQEAgLTk5LDcgKzEwMSwxNiBAQCBjbGFzcyBEUERLZHV0KER1dCk6DQo+ICAg ICAgICAgICAgICBvdXQgPSBzZWxmLnNlbmRfZXhwZWN0KCJsc21vZCB8IGdyZXAgaWdiX3VpbyIs ICIjIikNCj4gICAgICAgICAgICAgIGlmICJpZ2JfdWlvIiBpbiBvdXQ6DQo+ICAgICAgICAgICAg ICAgICAgc2VsZi5zZW5kX2V4cGVjdCgicm1tb2QgLWYgaWdiX3VpbyIsICIjIiwgNzApDQo+IC0g ICAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJpbnNtb2QgLi8iICsgdGFyZ2V0ICsgIi9rbW9k L2lnYl91aW8ua28iLA0KPiAiIyIsIDYwKQ0KPiArICAgICAgICAgICAgaWYgInJ0ZV9kb20wX21t IiBpbiBzZWxmLnNlbmRfZXhwZWN0KCJsc21vZCB8Z3JlcA0KPiBydGVfZG9tMF9tbSIsICIjIik6 DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2V4cGVjdCgicm1tb2QgLWYgcnRlX2RtbzBf bW0iLCAiIyIsIDcwKQ0KPiArICAgICAgICAgICAgc2VsZi5zZW5kX2V4cGVjdCgNCj4gKyAgICAg ICAgICAgICAgICAiaW5zbW9kIC4vIiArIHRhcmdldCArICIva21vZC9pZ2JfdWlvLmtvIiwgIiMi LCA2MCkNCg0KInJ0ZV9kb20wX21tIiBtb2R1bGUgb25seSBjYW4gYmUgYnVpbHQgb3V0IHdoZW4g RE9NMCBlbmFibGVkIGluIERQREsgY29uZmlndXJhdGlvbiBmaWxlLg0KV2Ugc2hvdWxkIG5vdCBl eHBlY3RlZCBpdCBleGlzdGVkIGluIGhvc3QuIE1ha2Ugc3VyZSBET00wIGNvbmZpZ3VyYXRpb24g ZW5hYmxlZCBhbmQgYnVpbGQgdGFyZ2V0IHdpdGggbW9kaWZpZWQgY29uZmlndXJhdGlvbi4NCg0K DQo+ICsgICAgICAgICAgICBpZiBzZWxmLnZpcnR0eXBlID09ICd4ZW4nOg0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc2VuZF9leHBlY3QoDQo+ICsgICAgICAgICAgICAgICAgICAgICJpbnNtb2Qg Li8iICsgdGFyZ2V0ICsgIi9rbW9kL3J0ZV9kb20wX21tLmtvIiwgIiMiLA0KPiA2MCkNCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KA0KPiArICAgICAgICAgICAgICAgICAgICBy J2VjaG8gMTAyNCA+IC9zeXMva2VybmVsL21tL2RvbTAtbW0vbWVtc2l6ZS0NCj4gbUIvbWVtc2l6 ZScsICIjIiwgNzApDQo+ICsNCkJldHRlciB0byB1c2UgbWFjcm8gcmVwbGFjZSBvZiAxMDI0LCB0 aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgZGVmaW5lZCBpbiBzZXR0aW5ncy5weS4NCg0KPiAgICAg ICAgICAgICAgb3V0ID0gc2VsZi5zZW5kX2V4cGVjdCgibHNtb2QgfCBncmVwIGlnYl91aW8iLCAi IyIpDQo+ICAgICAgICAgICAgICBhc3NlcnQgKCJpZ2JfdWlvIiBpbiBvdXQpLCAiRmFpbGVkIHRv IGluc21vZCBpZ2JfdWlvIg0KPiANCj4gQEAgLTExMCw3ICsxMjEsNyBAQCBjbGFzcyBEUERLZHV0 KER1dCk6DQo+ICAgICAgICAgIGJpbmRpbmdfbGlzdCA9ICcnDQo+IA0KPiAgICAgICAgICBmb3Ig KHBjaV9idXMsIHBjaV9pZCkgaW4gc2VsZi5wY2lfZGV2aWNlc19pbmZvOg0KPiAtICAgICAgICAg ICAgaWYgZHRzLmFjY2VwdGVkX25pYyhwY2lfaWQpOg0KPiArICAgICAgICAgICAgaWYgYWNjZXB0 ZWRfbmljKHBjaV9pZCk6DQo+ICAgICAgICAgICAgICAgICAgYmluZGluZ19saXN0ICs9ICclcywn ICUgKHBjaV9idXMpDQo+IA0KPiAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJrbGR1bmxvYWQg aWZfaXhnYmUua28iLCAiIyIpDQo+IEBAIC0xNTgsNiArMTY5LDkgQEAgY2xhc3MgRFBES2R1dChE dXQpOg0KPiAgICAgICAgICAiIiINCj4gICAgICAgICAgIyBjbGVhbiBhbGwNCj4gICAgICAgICAg c2VsZi5zZW5kX2V4cGVjdCgicm0gLXJmICIgKyB0YXJnZXQsICIjIikNCj4gKyAgICAgICAgaWYg c2VsZi52aXJ0dHlwZSA9PSAneGVuJzoNCj4gKyAgICAgICAgICAgIHNlbGYuc2VuZF9leHBlY3Qo InNlZCAtaSAtZQ0KPiAncy9DT05GSUdfUlRFX0xJQlJURV9YRU5fRE9NMD0uKiQvIg0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArICJDT05GSUdfUlRFX0xJQlJURV9YRU5fRE9NMD15 LycNCj4gY29uZmlnL2NvbW1vbl9saW51eGFwcCIsICIjICIsIDMwKQ0KPiANCj4gICAgICAgICAg IyBjb21waWxlDQo+ICAgICAgICAgIG91dCA9IHNlbGYuc2VuZF9leHBlY3QoIm1ha2UgLWogaW5z dGFsbCBUPSVzICVzIiAlICh0YXJnZXQsDQo+IGV4dHJhX29wdGlvbnMpLCAiIyAiLCAxMjApDQo+ IEBAIC0xNzgsOSArMTkyLDkgQEAgY2xhc3MgRFBES2R1dChEdXQpOg0KPiAgICAgICAgICBzZWxm LnNlbmRfZXhwZWN0KCJybSAtcmYgIiArIHRhcmdldCwgIiMiKQ0KPiANCj4gICAgICAgICAgIyBj b21waWxlDQo+IC0gICAgICAgIG91dCA9IHNlbGYuc2VuZF9leHBlY3QoIm1ha2UgLWogJWQgaW5z dGFsbCBUPSVzIENDPWdjYzQ4IiAlDQo+IChzZWxmLm51bWJlcl9vZl9jb3JlcywNCj4gLQ0KPiB0 YXJnZXQpLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjIiwgMTIwKQ0KPiAr ICAgICAgICBvdXQgPSBzZWxmLnNlbmRfZXhwZWN0KA0KPiArICAgICAgICAgICAgIm1ha2UgLWog JWQgaW5zdGFsbCBUPSVzIENDPWdjYzQ4IiAlDQo+ICsgICAgICAgICAgICAoc2VsZi5udW1iZXJf b2ZfY29yZXMsIHRhcmdldCksICIjIiwgMTIwKQ0KPiANCj4gICAgICAgICAgaWYoIkVycm9yIiBp biBvdXQgb3IgIk5vIHJ1bGUgdG8gbWFrZSIgaW4gb3V0KToNCj4gICAgICAgICAgICAgIHNlbGYu bG9nZ2VyLmVycm9yKCJFUlJPUiAtIHRyeSB3aXRob3V0ICctaiciKQ0KPiBAQCAtMTkxLDEwICsy MDUsNyBAQCBjbGFzcyBEUERLZHV0KER1dCk6DQo+ICAgICAgICAgIGFzc2VydCAoIkVycm9yIiBu b3QgaW4gb3V0KSwgIkNvbXBpbGF0aW9uIGVycm9yLi4uIg0KPiAgICAgICAgICBhc3NlcnQgKCJO byBydWxlIHRvIG1ha2UiIG5vdCBpbiBvdXQpLCAiTm8gcnVsZSB0byBtYWtlIGVycm9yLi4uIg0K PiANCj4gLSAgICBkZWYgcHJlcmVxdWlzaXRlcyhzZWxmLCBwa2dOYW1lLCBwYXRjaCk6DQo+IC0g ICAgICAgICIiIg0KPiAtICAgICAgICBDb3B5IERQREsgcGFja2FnZSB0byBEVVQgYW5kIGFwcGx5 IHBhdGNoIGZpbGVzLg0KPiAtICAgICAgICAiIiINCj4gKyAgICBkZWYgcHJlcGFyZV9wYWNrYWdl KHNlbGYsIHBrZ05hbWUsIHBhdGNoKToNCj4gICAgICAgICAgaWYgbm90IHNlbGYuc2tpcF9zZXR1 cDoNCj4gICAgICAgICAgICAgIGFzc2VydCAob3MucGF0aC5pc2ZpbGUocGtnTmFtZSkgaXMgVHJ1 ZSksICJJbnZhbGlkIHBhY2thZ2UiDQo+IA0KPiBAQCAtMjAyLDcgKzIxMyw3IEBAIGNsYXNzIERQ REtkdXQoRHV0KToNCj4gICAgICAgICAgICAgICMgVG9EbzogbWFrZSB0aGlzIGNvbmZpZ3VyYWJs ZQ0KPiAgICAgICAgICAgICAgZHN0X2RpciA9ICIvdG1wLyINCj4gDQo+IC0gICAgICAgICAgICBv dXQgPSBzZWxmLnNlbmRfZXhwZWN0KCJscyAlcyAmJiBjZCAlcyIgJSAoZHN0X2RpciwgcF9kaXIp LA0KPiArICAgICAgICAgICAgb3V0ID0gc2VsZi5zZW5kX2V4cGVjdCgibGwgJXMgJiYgY2QgJXMi ICUgKGRzdF9kaXIsIHBfZGlyKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiMiLCB2ZXJpZnk9VHJ1ZSkNCkNvbW1hbmQgImxsIiBtYXkgbm90IGV4aXN0ZWQgb24gZXZl cnkgT1MsIHBsZWFzZSBqdXN0IHVzZSBiYXNpYyAibHMiIGNvbW1hbmQuIA0KDQo+ICAgICAgICAg ICAgICBpZiBvdXQgPT0gLTE6DQo+ICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi RGlyZWN0aXJ5ICVzIG9yICVzIGRvZXMgbm90IGV4aXN0LCINCj4gQEAgLTI0OSw2ICsyNjAsMTcg QEAgY2xhc3MgRFBES2R1dChEdXQpOg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzZWxmLmJhc2VfZGlyLCBkc3RfZGlyICsgcCksDQo+ICIjICIpDQo+ICAg ICAgICAgICAgICAgICAgICAgIGFzc2VydCAiKioqKiIgbm90IGluIG91dA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc2Vzc2lvbi5jb3B5X2ZpbGVfdG8oImRlcC9hY2xydWxlLnRneiIsIGRzdF9k aXIpDQo+ICsgICAgICAgICAgICAjIHVucGFjayBhY2wgcnVsZQ0KPiArICAgICAgICAgICAgb3V0 ID0gc2VsZi5zZW5kX2V4cGVjdCgidGFyIHp4ZiAlc2FjbHJ1bGUudGd6IC1DICVzIiAlDQo+IChk c3RfZGlyLCBwX2RpciksICIjICIsIDIwLCB2ZXJpZnk9VHJ1ZSkNCj4gKyAgICAgICAgICAgIGlm IG91dCA9PSAtMToNCj4gKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhY2wgcnVs ZSBleHRyYWN0IGZhaWx1cmUhISEiKQ0KPiArDQoNClRoZXNlIGZpbGVzIHJlbGF0ZWQgd2l0aCBs M2Z3ZCBhY2wgc3VpdGUsIHdlIHNob3VsZCBtZXJnZWQgdGhlc2UgZmlsZXMgaW4gZm9sbG93aW5n IHdpdGggYWNsIHN1aXRlLg0KUGxlYXNlIHJlbW92ZSB0aGVzZSBjb2RlcyBmcm9tIHlvdXIgcGF0 Y2ggc2V0Lg0KDQo+ICsgICAgZGVmIHByZXJlcXVpc2l0ZXMoc2VsZiwgcGtnTmFtZSwgcGF0Y2gp Og0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgQ29weSBEUERLIHBhY2thZ2UgdG8gRFVUIGFu ZCBhcHBseSBwYXRjaCBmaWxlcy4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYucHJl cGFyZV9wYWNrYWdlKHBrZ05hbWUsIHBhdGNoKQ0KPiAgICAgICAgICBzZWxmLmR1dF9wcmVyZXF1 aXNpdGVzKCkNCj4gDQo+ICAgICAgZGVmIGJpbmRfaW50ZXJmYWNlc19saW51eChzZWxmLCBkcml2 ZXI9J2lnYl91aW8nLCBuaWNzX3RvX2JpbmQ9Tm9uZSk6DQo+IEBAIC0zNTQsMTYgKzM3NiwyMCBA QCBjbGFzcyBEUERLdGVzdGVyKFRlc3Rlcik6DQo+ICAgICAgICAgICAgICB0b3RhbF9odWdlX3Bh Z2VzID0gc2VsZi5nZXRfdG90YWxfaHVnZV9wYWdlcygpDQo+ICAgICAgICAgICAgICBpZiB0b3Rh bF9odWdlX3BhZ2VzID09IDA6DQo+ICAgICAgICAgICAgICAgICAgc2VsZi5tb3VudF9odWdlX3Bh Z2VzKCkNCj4gLSAgICAgICAgICAgICAgICBzZWxmLnNldF9odWdlX3BhZ2VzKDQwOTYpDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zZXRfaHVnZV9wYWdlcygxMDI0KQ0KPiANCj4gICAgICAgICAg ICAgIHNlbGYuc2Vzc2lvbi5jb3B5X2ZpbGVfdG8oImRlcC90Z2VuLnRneiIpDQo+ICAgICAgICAg ICAgICBzZWxmLnNlc3Npb24uY29weV9maWxlX3RvKCJkZXAvdGNsY2xpZW50LnRneiIpDQo+ICsg ICAgICAgICAgICBzZWxmLnNlc3Npb24uY29weV9maWxlX3RvKCJkZXAvYWNscGNhcC50Z3oiKQ0K PiAgICAgICAgICAgICAgIyB1bnBhY2sgdGdlbg0KPiAgICAgICAgICAgICAgb3V0ID0gc2VsZi5z ZW5kX2V4cGVjdCgidGFyIHp4ZiB0Z2VuLnRneiIsICIjICIpDQo+ICAgICAgICAgICAgICBhc3Nl cnQgIkVycm9yIiBub3QgaW4gb3V0DQo+ICAgICAgICAgICAgICAjIHVucGFjayB0Y2xjbGllbnQN Cj4gICAgICAgICAgICAgIG91dCA9IHNlbGYuc2VuZF9leHBlY3QoInRhciB6eGYgdGNsY2xpZW50 LnRneiIsICIjICIpDQo+ICAgICAgICAgICAgICBhc3NlcnQgIkVycm9yIiBub3QgaW4gb3V0DQoN Cg0KVGhlc2UgZmlsZXMgcmVsYXRlZCB3aXRoIGwzZndkIGFjbCBzdWl0ZSwgd2Ugc2hvdWxkIG1l cmdlZCB0aGVzZSBmaWxlcyBpbiBmb2xsb3dpbmcgd2l0aCBhY2wgc3VpdGUuDQpQbGVhc2UgcmVt b3ZlIHRoZXNlIGNvZGVzIGZyb20geW91ciBwYXRjaCBzZXQuDQoNCj4gKyAgICAgICAgICAgICMg dW5wYWNsIEFDTCBwY2FwIGZpbGVzDQo+ICsgICAgICAgICAgICBvdXQgPSBzZWxmLnNlbmRfZXhw ZWN0KCJ0YXIgenhmIGFjbHBjYXAudGd6IiwgIiMgIikNCj4gKyAgICAgICAgICAgIGFzc2VydCAi RXJyb3IiIG5vdCBpbiBvdXQNCj4gDQo+ICAgICAgICAgIHNlbGYuc2VuZF9leHBlY3QoIm1vZHBy b2JlIHVpbyIsICIjICIpDQo+IA0KPiBAQCAtMzg2LDEwICs0MTIsMTAgQEAgY2xhc3MgRFBES3Rl c3RlcihUZXN0ZXIpOg0KPiAgICAgICAgICAiIiINCj4gICAgICAgICAgaHVnZXBhZ2VzX3NpemUg PSBzZWxmLnNlbmRfZXhwZWN0KCJhd2sgJy9IdWdlcGFnZXNpemUvIHtwcmludA0KPiAkMn0nIC9w cm9jL21lbWluZm8iLCAiIyAiKQ0KPiANCj4gLSAgICAgICAgaWYgaW50KGh1Z2VwYWdlc19zaXpl KSA8ICgxMDI0ICogMTAyNCk6DQo+IC0gICAgICAgICAgICBhcmNoX2h1Z2VfcGFnZXMgPSBodWdl cGFnZXMgaWYgaHVnZXBhZ2VzID4gMCBlbHNlIDQwOTYNCj4gKyAgICAgICAgaWYgaW50KGh1Z2Vw YWdlc19zaXplKSA8ICgyMDQ4ICogMjA0OCk6DQo+ICsgICAgICAgICAgICBhcmNoX2h1Z2VfcGFn ZXMgPSBodWdlcGFnZXMgaWYgaHVnZXBhZ2VzID4gMCBlbHNlIDIwNDgNCg0KQmV0dGVyIHRvIHVz ZSBtYWNybyByZXBsYWNlIG9mIDIwNDgsIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBkZWZpbmVk IGluIHNldHRpbmdzLnB5Lg0KDQo+ICAgICAgICAgICAgICB0b3RhbF9odWdlX3BhZ2VzID0gc2Vs Zi5nZXRfdG90YWxfaHVnZV9wYWdlcygpDQo+IA0KPiAtICAgICAgICAgICAgc2VsZi5tb3VudF9o dWdlX3BhZ2VzKCkNCj4gLSAgICAgICAgICAgIGlmIHRvdGFsX2h1Z2VfcGFnZXMgIT0gYXJjaF9o dWdlX3BhZ2VzOg0KPiAtICAgICAgICAgICAgICAgIHNlbGYuc2V0X2h1Z2VfcGFnZXMoYXJjaF9o dWdlX3BhZ2VzKQ0KPiArICAgICAgICBzZWxmLm1vdW50X2h1Z2VfcGFnZXMoKQ0KPiArICAgICAg ICBpZiB0b3RhbF9odWdlX3BhZ2VzICE9IGFyY2hfaHVnZV9wYWdlczoNCj4gKyAgICAgICAgICAg IHNlbGYuc2V0X2h1Z2VfcGFnZXMoYXJjaF9odWdlX3BhZ2VzKQ0KPiAtLQ0KPiAxLjkuMA0KDQo=