From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 806E3A0544; Fri, 23 Sep 2022 09:22:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 16985400D7; Fri, 23 Sep 2022 09:22:32 +0200 (CEST) Received: from mailgw01.pantheon.sk (mailgw01.pantheon.sk [46.229.239.26]) by mails.dpdk.org (Postfix) with ESMTP id 17DFF4003C for ; Fri, 23 Sep 2022 09:22:30 +0200 (CEST) Received: from mailgw01.pantheon.sk (localhost.localdomain [127.0.0.1]) by mailgw01.pantheon.sk (Proxmox) with ESMTP id A3DE92024CF; Fri, 23 Sep 2022 09:22:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; h=cc:cc:content-transfer-encoding:content-type:content-type :date:from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=dkim; bh=TETAlkR8eA11vv9m/Nda jNlg+ZWjdn/w0IE/V05tN6M=; b=RivdHgb4jknEXhqWvsLozpmrVkBcadmwyNdd TsSrJndD15C24o/Lkf/zjsISz22jojnz8gsWjgqcNQ5tcZ15/CON8WQZpZ92nFTm l/syDAo/F6+x2JMMxqpgFt9LqlZTwzO8XGmZx811UjfBIb6wNRvRm7GpwEXkx18P /0P95D/722Jc0j3aJzwLWo8Fyh2OBgcIE096bUsk/JUpQ9e3ZkJEWNgmyCXryz+w AOCFYwpEOS3DWxn9RtsOlSUUvtMWOABvMFOsvELO0ivVcgZkVgMVG3D/0mCnts+U L/RKZxjF8kFPEiGNNHCq5MKJmckX0kLbhjp7paFYyTeAGFTsfA== From: =?utf-8?B?SnVyYWogTGlua2XFoQ==?= To: Stanislaw Kardach CC: "thomas@monjalon.net" , "david.marchand@redhat.com" , "ronan.randles@intel.com" , "Honnappa.Nagarahalli@arm.com" , "ohilyard@iol.unh.edu" , "lijuan.tu@intel.com" , "dev@dpdk.org" Subject: RE: [PATCH v4 4/9] dts: add ssh pexpect library Thread-Topic: [PATCH v4 4/9] dts: add ssh pexpect library Thread-Index: AQHYoznJckIj0tYmjEujEyO7igXj6K3e1JgAgAypPJCAADp2AIABNNTQ Date: Fri, 23 Sep 2022 07:22:26 +0000 Message-ID: <115446c94a7c4eda877c8a968adce100@pantheon.tech> References: <20220728100044.1318484-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-5-juraj.linkes@pantheon.tech> <20220914094222.vprahs3kfhnsklyh@toster> <7f360965ca2c47b29e2413e3207234db@pantheon.tech> <20220922143226.3d5e552cylcie665@toster> In-Reply-To: <20220922143226.3d5e552cylcie665@toster> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.101.4.10] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU3RhbmlzbGF3IEthcmRh Y2ggPGtkYUBzZW1paGFsZi5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjIsIDIw MjIgNDozMiBQTQ0KPiBUbzogSnVyYWogTGlua2XFoSA8anVyYWoubGlua2VzQHBhbnRoZW9uLnRl Y2g+DQo+IENjOiB0aG9tYXNAbW9uamFsb24ubmV0OyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29t Ow0KPiByb25hbi5yYW5kbGVzQGludGVsLmNvbTsgSG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNv bTsNCj4gb2hpbHlhcmRAaW9sLnVuaC5lZHU7IGxpanVhbi50dUBpbnRlbC5jb207IGRldkBkcGRr Lm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0IDQvOV0gZHRzOiBhZGQgc3NoIHBleHBlY3Qg bGlicmFyeQ0KPiANCj4gT24gVGh1LCBTZXAgMjIsIDIwMjIgYXQgMDk6NDE6NDBBTSArMDAwMCwg SnVyYWogTGlua2XFoSB3cm90ZToNCj4gPiBIaSBTdGFuaXNsYXcsDQo+IEZpcnN0IGEgcHJlZmFj ZS4gSSB1bmRlcnN0YW5kIHRoYXQgdGhlIERUUyByZXdvcmsgaXMgc3BvbnNvcmVkIGJ5IHNvbWVv bmUgYW5kDQo+IHRoZXJlIG1heSBiZSBwZW9wbGUgd2FpdGluZyB3aXRoIHRoZWlyIGxhYnMgZm9y IHRoaXMgam9iIHRvIGJlIGRvbmUuDQo+IEV2ZXJ5dGhpbmcgdGhhdCBJJ2xsIHdyaXRlIGJlbG93 IGlzIGZyb20gYSBwb2ludCBvZiB2aWV3IG9mIGEgZGV2ZWxvcGVyIHdobydkIGxpa2UNCj4gdG8g dXRpbGl6ZSBEVFMgYXMgYSB0ZXN0IHN1aXRlIGZvciBEUERLIHdoZW4gYWRkaW5nIHN1cHBvcnQg Zm9yIG5ldyBQTURzIG9yDQo+IGFyY2hpdGVjdHVyZXMvYm9hcmRzLiBUaGlzIG1pZ2h0IGJlIGlu IGNvbmZsaWN0IHdpdGggdGltZS10by1tYXJrZXQgbWV0cmljIGF0IHRoaXMNCj4gcG9pbnQgaW4g dGltZSBidXQgSSdtIG1vcmUgZm9jdXNlZCBvbiB0aGUgc3RhdGUgb2YgRFBESytEVFMgaW4gdGhl IGxvbmcgcnVuLg0KPiBTbyBmZWVsIGZyZWUgdG8gZGlzcmVnYXJkIG15IGNvbW1lbnRzIGlmIHRo ZXJlIGFyZSBoaWdoZXIgcHJpb3JpdGllcy4NCj4gPg0KPiA+IE5laXRoZXIgb2YgdGhlIGN1cnJl bnQgRFRTIG1haW50YWluZXIgbm9yIG1lIGFyZSB0aGUgYXV0aG9yIG9mIHRoZSBjb2RlLCBzbw0K PiB3ZSBjYW4gb25seSBzcGVjdWxhdGUgYXMgdG8gd2h5IGNlcnRhaW4gcGFydHMgd2VyZSBpbXBs ZW1lbnRlZCB0aGUgd2F5IHRoZXkNCj4gYXJlLg0KPiA+DQo+ID4gV2UndmUgdGhvdWdodCBhIGxv dCBhYm91dCByZXBsYWNpbmcgcGV4cGVjdCB3aXRoIHNvbWV0aGluZyBlbHNlLCBzdWNoIGFzDQo+ IEZhYnJpYy4gRmFicmljIGlzIHN1cHBvc2VkbHkgZmFzdGVyLCB3aGljaCBpcyB0aGUgYmlnZ2Vz dCBkcmF3IGFuZCBpbnN0ZWFkIG9mDQo+IGZpeGluZy9yZXdvcmtpbmcgcGV4cGVjdCBjb2RlLCBp dCBtYWtlcyBzZW5zZSB0byBzd2l0Y2ggb3VyIGZvY3VzIG9uIEZhYnJpYy4gRm9yDQo+IHRoaXMg UG9DIHZlcnNpb24gdGhvdWdoLCB3ZSdkIGxpa2UgdG8gc3RheSB3aXRoIHRoaXMgcGV4cGVjdCBj b2RlIGFuZCB3b3JrIG9uDQo+IG90aGVyIGFwcG9hY2hlcyBpbiB0aGUgbmV4dCByZWxlYXNlIGN5 Y2xlLiBUaGUgY29kZSBpcyB3ZWxsIHRlc3RlZCBzbyB0aGVyZSdzIG5vdA0KPiBtdWNoIHBvaW50 IGluIHBva2luZyBpbiBpdCBpZiBpdCdzIHRvIGJlIHJlcGxhY2VkLg0KPiBJIGhhdmUgYSBuYXN0 eSBleHBlcmllbmNlIG9mIGNvZGUgc3RheWluZyB3aXRob3V0IHJlLWZhY3RvcmluZyBmb3IgbG9u ZyAiYmVjYXVzZQ0KPiBpdCB3b3JrcyIuIFdoZW4gaXQgY29tZXMgdG8gRFRTIG15IGV4cGVyaWVu Y2UgaXMgdGhhdCBpdCB3b3JrcyBvbmx5IGlmIHVzZWQNCj4gZXhhY3RseSBvbiB0aGUgc2V0dXBz IGl0IHdhcyBtZWFudCBmb3IuIEFkYXB0aW5nIGl0IHRvIGEgbmV3IHNldHVwLCBuZXcgUE1EIG9y DQo+ICJldmVuIiBydW5uaW5nIGluIHRoZSBjbG91ZCBzaG93cyB0aGF0IHBhcnRzIG9mIGl0IGFy ZSBoZWxkIHRvZ2V0aGVyIHdpdGggYSBzdHJpbmcuDQo+IEknbSBub3QgYmxhbWluZyBEVFMgZGV2 cyBoZXJlLiBTdWNoIGFwcHJvYWNoIGlzIG9mdGVuIG5lZWRlZCBmb3IgdmFyaW91cw0KPiByZWFz b25zICh1c3VhbGx5IHRpbWUtdG8tbWFya2V0KSBhbmQgaXQncyBoYXJkIHRvIGJlIGZvcndhcmQt Y29tcGF0aWJsZS4NCj4gDQo+IFRoYXQgc2FpZCBJIHdvdWxkIHN1Z2dlc3QgdG8gdXNlIHRoaXMg b3Bwb3J0dW5pdHkgdG8gcmVmYWN0b3IgRFRTIHdoaWxlIGl0J3Mgc3RpbGwNCj4gbm90IG1lcmdl ZC4gT3RoZXJ3aXNlIHdlJ2xsIGJlIGxlZnQgd2l0aCBjb2RlIHRoYXQgd2UncmUgdW5jZXJ0YWlu IHdoeSBpdCB3b3Jrcy4NCj4gVGhhdCdzIG5vdCBhIHF1YWxpdHktZmlyc3QgYXBwcm9hY2ggYW5k IGl0J2xsIGJpdGUgdXMgaW4gdGhlIGJhY2tzaWRlIGluIHRoZSBmdXR1cmUuDQo+IA0KPiBMZXQn cyBkbyB0aGluZ3MgcmlnaHQsIG5vdCBmYXN0Lg0KDQpBYnNvbHV0ZWx5LCBidXQgZWZmZWN0aXZl IHRpbWUgdXNlIGlzIGFsc28gc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBPdXIgY3VycmVudCBwbGFu IGRvZXNuJ3Qgd29uJ3QgcmVhbGx5IGhhdmUgdG8gY29udGVuZCB3aXRoIHByb2JsZW1zIGluIHRo ZSBmdXR1cmUsIGFzIHdlIHdhbnQgdG8gYWRkIHRoZSBGYXJiaWMgaW1wbGVtZW50YXRpb24gaW4g dGhlIG5leHQgcmVsZWFzZSBjeWNsZS4gSSdtIGFsc28gd29ya2luZyBvbiByZWZhY3RvcmluZyB0 aGUgY29kZSBhIGJpdCAtIEknbSBhZGRpbmcgYW4gYWJzdHJhY3Rpb24gdGhhdCB3b3VsZCBhbGxv dyB1cyB0byBlYXNpbHkgcmVwbGFjZSB0aGUgcGV4cGVjdCBpbXBsZW1lbnRhdGlvbiB3aXRoIEZh YnJpYyAod2l0aCBubyBpbXBhY3Qgb24gRFRTIGJlaGF2aW9yIC0gdGhlIHNhbWUgQVBJcyB3aWxs IG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQpLiBBbHNvLCB3ZSdsbCByZW1vdmUgdGhlIHBleHBlY3Qg aW1wbGVtZW50YXRpb24gb25jZSBGYWJyaWMgaXMgaW4gcGxhY2UgKHVubGVzcyB3ZSBjYW4gdGhp bmsgb2YgYSByZWFzb24gZm9yIHBleHBlY3QgdG8gc3RheSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCBu ZWVkIHRvIHJlZmFjdG9yIGl0KS4gSSB0aGluayB0aGF0IGluc3RlYWQgb2YgZm9jdXNpbmcgb24g cGV4cGVjdCB3ZSBjb3VsZCBmb2N1cyBvbiBtYWtpbmcgc3VyZSB0aGUgcmVwbGFjZW1lbnQgd29u J3QgY2F1c2UgYW55IGlzc3Vlcy4gV2hhdCBkbyB5b3UgdGhpbms/DQoNCj4gPg0KPiA+IFdpdGgg dGhhdCBzYWlkLCBzb21lIG1vcmUgY29tbWVudHMgaW5saW5lLg0KPiA+DQo+ID4gPiA+ICtjbGFz cyBTU0hQZXhwZWN0Og0KPiA+ID4gPiArICAgIHVzZXJuYW1lOiBzdHINCj4gPiA+ID4gKyAgICBw YXNzd29yZDogc3RyDQo+ID4gPiA+ICsgICAgbm9kZTogc3RyDQo+ID4gPiA+ICsgICAgbG9nZ2Vy OiBEVFNMT0cNCj4gPiA+ID4gKyAgICBtYWdpY19wcm9tcHQ6IHN0cg0KPiA+ID4gPiArDQo+ID4g PiA+ICsgICAgZGVmIF9faW5pdF9fKA0KPiA+ID4gPiArICAgICAgICBzZWxmLA0KPiA+ID4gPiAr ICAgICAgICBub2RlOiBzdHIsDQo+ID4gPiA+ICsgICAgICAgIHVzZXJuYW1lOiBzdHIsDQo+ID4g PiA+ICsgICAgICAgIHBhc3N3b3JkOiBPcHRpb25hbFtzdHJdLA0KPiA+ID4gPiArICAgICAgICBs b2dnZXI6IERUU0xPRywNCj4gPiA+ID4gKyAgICApOg0KPiA+ID4gPiArICAgICAgICBzZWxmLm1h Z2ljX3Byb21wdCA9ICJNQUdJQyBQUk9NUFQiDQo+ID4gPiBXaHkgaXMgdGhpcyBuZWNlc3Nhcnk/ IHB4c3NoIGlzIGFscmVhZHkgc2V0dGluZyB0YXJnZXQgcHJvbXB0IHRvDQo+ID4gPiBweHNzaC5V TklRVUVfUFJPTVBUIGluIHRoZSBzZXNzaW9uIGNvbnN0cnVjdG9yLCB0byBiZSBzcGVjaWZpYzoN Cj4gPiA+DQo+ID4gPiAgIHNlbGYuVU5JUVVFX1BST01QVCA9IHIiXFtQRVhQRUNUXF1bXCRcI10g Ig0KPiA+ID4gICBzZWxmLlBST01QVCA9IHNlbGYuVU5JUVVFX1BST01QVA0KPiA+ID4NCj4gPiA+ IEFsc28gc2Vzc2lvbi5sb2dpbigpIHdpbGwgY2hhbmdlIHRhcmdldCBwcm9tcHQgdG8gdGhhdCwg ZXhhY3RseSBmb3INCj4gPiA+IHRoZSByZWFzb24gb2YgYWNoaWV2aW5nIGEgdW5pcXVlIHByb21w dCB0aGF0IGNhbiBiZSBlYXNpbHkgbWF0Y2hlZCBieQ0KPiBweHNzaC4NCj4gPiA+DQo+ID4gPiBT byBpZiAiTUFHSUMgUFJPTVBUIGlzIHRoZSBwcm9tcHQgdGhhdCB5b3UnZCBsaWtlIHRvIGhhdmUg b24gdGhlDQo+ID4gPiByZW1vdGUgaG9zdCwgdGhlbiB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBy dW4gYWZ0ZXIgb3BlbmluZyB0aGUgc2Vzc2lvbjoNCj4gPiA+DQo+ID4NCj4gPiBJIGJlbGlldmUg dGhpcyBpcyBoZXJlIHRvIGhhdmUgYSBwcm9tcHQgdGhhdCB3b24ndCBiZSBtYXRjaGVkIGFueXdo ZXJlLCB0bw0KPiBpbmR1Y2UgYSB0aW1lb3V0IGEgY29sbGVjdCBhbGwgZGF0YSB1cCB0byB0aGF0 IHBvaW50Lg0KPiBUaGUgb25seSByZWFzb24gSSBjYW4gdGhpbmsgb2YgZm9yIGRvaW5nIHRoaXMg aXMgdG8gZ2V0IHRoZSBpbnRlcm1lZGlhdGUgb3V0cHV0DQo+IHVwZGF0ZXMgd2hpbGUgdGhlIHRl c3QgaXMgcnVubmluZy4gQXJlIHRoZXJlIGFueSBvdGhlcnM/DQo+IA0KPiBJZiBJJ20gcmlnaHQs IGhvdyB3b3VsZCB0aGF0IGJlIGRpZmZlcmVudCBmcm9tIG1hdGNoaW5nIGFuIGFjdHVhbCBwcm9t cHQgd2l0aCBhDQo+IHRpbWVvdXQ/IHBleHBlY3QgaXMgYWxyZWFkeSBzZXR0aW5nIGFuIHVudXN1 YWwgcHJvbXB0IHRoYXQgd2lsbCBub3QgYmUgbWF0Y2hlZA0KPiBieSBhbnl0aGluZyBlbHNlICgi W1BFWFBFQ1RdICMiKS4NCj4gSnVzdCB1c2UgdGhhdCB3aXRoIGEgc21hbGwgdGltZW91dCBhbmQg eW91IGdldCB0aGUgc2FtZSBlZmZlY3QsIGluY2x1ZGluZw0KPiB0aW1lb3V0IHRyaWdnZXJpbmcg YW4gZXhjZXB0aW9uLg0KDQpTb21lIG9mIG15IGNvbW1lbnRzIHdlcmUgb25seSBzcGVjdWxhdGlv biBJIGNvdWxkIGNvbWUgdXAuIFRoYXQgZG9lc24ndCBqdXN0aWZ5IGFueXRoaW5nLCBidXQgaXQg Y291bGQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBtb3RpdmF0aW9uIGJlaGluZCB0aGUgaW1wbGVt ZW50YXRpb24uDQpZb3UncmUgcHJvYmFibHkgcmlnaHQgb24gdGhpcyBwb2ludC4gUGFydHMgb2Yg dGhlIERUUyBjb2RlIHNlZW0gc29tZXdoYXQgcG9pbnRsZXNzIHRvIG1lIGFzIHdlbGwuDQoNCj4g Pg0KPiA+ID4gICBzZWxmLnNlc3Npb24uUFJPTVBUID0gc2VsZi5tYWdpY19wcm9tcHQNCj4gPiA+ ICAgaWYgbm90IHNlbGYuc2Vzc2lvbi5zZXRfdW5pcXVlX3Byb21wdCgpOg0KPiA+ID4gICAgIGRv X3NvbWVfZXJyb3JfaGFuZGxpbmcoKQ0KPiA+ID4NCj4gPiA+IE90aGVyd2lzZSBpdCdzIHVubmVj ZXNzYXJ5Lg0KPiA+ID4gPiArICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcg0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgICAgICAgIHNlbGYubm9kZSA9IG5vZGUNCj4gPiA+ID4gKyAgICAgICAgc2Vs Zi51c2VybmFtZSA9IHVzZXJuYW1lDQo+ID4gPiA+ICsgICAgICAgIHNlbGYucGFzc3dvcmQgPSBw YXNzd29yZCBvciAiIg0KPiA+ID4gPiArICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKGYic3NoIHtz ZWxmLnVzZXJuYW1lfUB7c2VsZi5ub2RlfSIpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAg c2VsZi5fY29ubmVjdF9ob3N0KCkNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIGRlZiBfY29ubmVj dF9ob3N0KHNlbGYpIC0+IE5vbmU6DQo+ID4gPiA+ICsgICAgICAgICIiIg0KPiA+ID4gPiArICAg ICAgICBDcmVhdGUgY29ubmVjdGlvbiB0byBhc3NpZ25lZCBub2RlLg0KPiA+ID4gPiArICAgICAg ICAiIiINCj4gPiA+ID4gKyAgICAgICAgcmV0cnlfdGltZXMgPSAxMA0KPiA+ID4gPiArICAgICAg ICB0cnk6DQo+ID4gPiA+ICsgICAgICAgICAgICBpZiAiOiIgaW4gc2VsZi5ub2RlOg0KPiA+ID4g PiArICAgICAgICAgICAgICAgIHdoaWxlIHJldHJ5X3RpbWVzOg0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLmlwID0gc2VsZi5ub2RlLnNwbGl0KCI6IilbMF0NCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5wb3J0ID0gaW50KHNlbGYubm9kZS5zcGxpdCgiOiIpWzFd KQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnNlc3Npb24gPSBweHNzaC5weHNz aChlbmNvZGluZz0idXRmLTgiKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICB0cnk6DQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlc3Npb24ubG9naW4oDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcCwNCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lLA0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYucGFzc3dvcmQsDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb3JpZ2luYWxfcHJvbXB0PSJbJCM+XSIsDQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcG9ydD1zZWxmLnBvcnQsDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbG9naW5fdGltZW91dD0yMCwNCj4gPiA+ID4gKw0KPiA+ID4gPiAr IHBhc3N3b3JkX3JlZ2V4PXIiKD9pKSg/OnBhc3N3b3JkOil8KD86cGFzc3BocmFzZSBmb3INCj4g PiA+IGtleSl8KD9pKShwYXNzd29yZCBmb3IgLis6KSIsDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICApDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGUpDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpDQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICByZXRyeV90aW1lcyAtPSAxDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBwcmludCgicmV0cnkgJWQgdGltZXMgY29ubmVjdGluZy4uLiIgJSAoMTAg LSByZXRyeV90aW1lcykpDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhaw0KPiA+ID4gPiArICAgICAgICAgICAg ICAgIGVsc2U6DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigi Y29ubmVjdCB0byAlczolcyBmYWlsZWQiICUgKHNlbGYuaXAsIHNlbGYucG9ydCkpDQo+ID4gPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+ID4gPiArICAgICAgICAgICAgICAgIHNlbGYuc2Vzc2lv biA9IHB4c3NoLnB4c3NoKGVuY29kaW5nPSJ1dGYtOCIpDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zZXNzaW9uLmxvZ2luKA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm Lm5vZGUsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUsDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYucGFzc3dvcmQsDQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgIG9yaWdpbmFsX3Byb21wdD0iWyQjPl0iLA0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgcGFzc3dvcmRfcmVnZXg9ciIoP2kpKD86cGFzc3dvcmQ6KXwoPzpwYXNzcGhyYXNlIGZvcg0K PiA+ID4ga2V5KXwoP2kpKHBhc3N3b3JkIGZvciAuKzopIiwNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICApDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhmIkNvbm5l Y3Rpb24gdG8ge3NlbGYubm9kZX0gc3VjY2VlZGVkIikNCj4gPiA+ID4gKyAgICAgICAgICAgIHNl bGYuc2VuZF9leHBlY3QoInN0dHkgLWVjaG8iLCAiIyIpDQo+ID4gPiA+ICsgICAgICAgICAgICBz ZWxmLnNlbmRfZXhwZWN0KCJzdHR5IGNvbHVtbnMgMTAwMCIsICIjIikNCj4gPiA+IFRoaXMgd29y a3Mgb25seSBieSBjaGFuY2UgYW5kIG1ha2VzIGhhY2tzIGluIGdldF9vdXRwdXRfYmVmb3JlKCkN Cj4gbmVjZXNzYXJ5Lg0KPiA+ID4gQWZ0ZXIgc29tZSB0ZXN0aW5nIGl0IHNlZW1zIHRoYXQgcHhz c2ggaXMgbWF0Y2hpbmcgQU5EIGNob21waW5nIHRoZQ0KPiA+ID4gc2Vzc2lvbi5QUk9NUFQgd2hl biBzZXNzaW9uLnByb21wdCgpIGlzIGNhbGxlZC4gR2l2ZW4gdGhlDQo+ID4gPiBVTklRVUVfUFJP TVBULCB0aGUgcm9vdCB1c2VyIHByb21wdCB3aWxsIGJlICJbUEVYUEVDVF0jIiBzbyB0aGlzDQo+ ID4gPiBzZW5kX2V4cGVjdCgpIHdpbGwgY2hvbXAgIyBhbmQgbGVhdmUgIltQRVhQRUNUXSIgYXMg cGFydCBvZiB0aGUgb3V0cHV0Lg0KPiA+ID4NCj4gPiA+IEdpdmVuIHRoYXQgdGhlIHR3byBhYm92 ZSBsaW5lcyBkbyBub3QgcmVxdWlyZSBhbnkgc3BlY2lhbCBvdXRwdXQgSQ0KPiA+ID4gdGhpbmsN Cj4gPiA+IHNlbGYuc2VuZF9jb21tYW5kKCkgc2hvdWxkIGJlIHVzZWQgaGVyZS4NCj4gPg0KPiA+ IFNpbmNlIHdlIHdhbnQgdG8gbW92ZSBhd2F5IGZvcm0gdXNpbmcgcm9vdCwgd2UnZCBuZWVkIHRv IGFkZHJlc3MgdGhpcywgYnV0DQo+IHRoaXMgd291bGQgYmUgYmV0dGVyIGxlZnQgdG8gdGhlIEZh YnJpYyBpbXBsZW1lbnRhdGlvbiBhbmQgc3RheSB3aXRoIHRoZSByb290DQo+IHJlcXVpcmVtZW50 IGZvciBub3cuDQo+IEl0J3MgbW9yZSB0aGFuIHRoYXQuIFRoaXMgc2VsZi5zZW5kX2V4cGVjdCgi Li4uIiwgIiMiKSBwYXR0ZXJuIHdpbGwgY2F1c2UgdGhlIGhhY2tzDQo+IG9uIHJlbW92aW5nIHRo ZSBwZXhwZWN0J3MgcHJvbXB0IHRoYXQgYXJlIGRvbmUgYmVsb3cuDQo+IFRob3NlIGhhY2sgYXJl IG5vdCBuZWNlc3NhcnkgYXQgYWxsIGlmIHBleHBlY3QgaXMgdXNlZCBwcm9wZXJseS4gSWYgdGhp cyBpcyBub3QNCj4gdW5kZXJzdG9vZCwgdGhlbiB3aGVuIHN3aXRjaGluZyB0byBGYWJyaWMsIHNv bWVvbmUgbWlnaHQgcmVwZWF0IHRoZW0NCj4gdGhpbmtpbmcgdGhleSdyZSBvbiBwdXJwb3NlLg0K DQpUcnVlLiBCdXQgd2Uga25vdyB0aGUgY29kZSBpcyBub3QgZ3JlYXQgc28gdGhlIG5ldyBpbXBs ZW1lbnRhdGlvbiB3b24ndCByZWFsbHkgY29uc2lkZXIgdGhlIHBleHBlY3QgaW1wbGVtZW50YXRp b24uIEkgbWVudGlvbmVkIGFuIGFic3RyYWN0aW9uIGFib3ZlIC0gdGhhdCB3aWxsIGRlZmluZSB3 aGF0IG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGluIEZhYnJpYy4NCg0KPiA+DQo+ID4gPiA+ICsg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPiA+ID4gKyAgICAgICAgICAgIHByaW50 KFJFRChzdHIoZSkpKQ0KPiA+ID4gPiArICAgICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAicG9y dCIsIE5vbmUpOg0KPiA+ID4gPiArICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb24gPSAoDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICJcblN1Z2dlc3Npb246IENoZWNrIGlmIHRoZSBmaXJl d2FsbCBvbiBbICVzIF0gIiAlIHNlbGYuaXANCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg KyAiaXMgc3RvcHBlZFxuIg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICkNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICBwcmludChHUkVFTihzdWdnZXN0aW9uKSkNCj4gPiA+ID4gKw0KPiA+ID4g PiArICAgICAgICAgICAgcmFpc2UgU1NIQ29ubmVjdGlvbkV4Y2VwdGlvbihzZWxmLm5vZGUpDQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBkZWYgc2VuZF9leHBlY3RfYmFzZShzZWxmLCBjb21tYW5k OiBzdHIsIGV4cGVjdGVkOiBzdHIsDQo+ID4gPiA+ICsgdGltZW91dDogZmxvYXQpIC0+DQo+ID4g PiBzdHI6DQo+ID4gPiA+ICsgICAgICAgIHNlbGYuY2xlYW5fc2Vzc2lvbigpDQo+ID4gPiA+ICsg ICAgICAgIHNlbGYuc2Vzc2lvbi5QUk9NUFQgPSBleHBlY3RlZA0KPiA+ID4gPiArICAgICAgICBz ZWxmLl9fc2VuZGxpbmUoY29tbWFuZCkNCj4gPiA+ID4gKyAgICAgICAgc2VsZi5fX3Byb21wdChj b21tYW5kLCB0aW1lb3V0KQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgIGJlZm9yZSA9IHNl bGYuZ2V0X291dHB1dF9iZWZvcmUoKQ0KPiA+ID4gUHJvbXB0IHNob3VsZCBiZSByZXZlcnRlZCB0 byB3aGF0ZXZlciBpdCB3YXMgYmVmb3JlIGxlYXZpbmcgdGhpcyBmdW5jdGlvbi4NCj4gPg0KPiA+ IFNlZW1zIHJlYXNvbmFibGUuIEkgZ3Vlc3MgaXQgd2Fzbid0IG5lZWRlZCBiZWNhdXNlIG9mIHRo ZSByZXF1aXJlbWVudCB0byB1c2UNCj4gcm9vdC4gQWRkaW5nIHRoaXMgc2VlbXMgaW5ub2NlbnQg ZW5vdWdoLg0KPiA+DQo+ID4gPiA+ICsgICAgICAgIHJldHVybiBiZWZvcmUNCj4gPiA+ID4gKw0K PiA+ID4gPiArICAgIGRlZiBzZW5kX2V4cGVjdCgNCj4gPiA+ID4gKyAgICAgICAgc2VsZiwgY29t bWFuZDogc3RyLCBleHBlY3RlZDogc3RyLCB0aW1lb3V0OiBmbG9hdCA9IDE1LCB2ZXJpZnk6IGJv b2wgPQ0KPiBGYWxzZQ0KPiA+ID4gPiArICAgICkgLT4gc3RyIHwgaW50Og0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgICAgICAgIHRyeToNCj4gPiA+ID4gKyAgICAgICAgICAgIHJldCA9IHNlbGYuc2Vu ZF9leHBlY3RfYmFzZShjb21tYW5kLCBleHBlY3RlZCwgdGltZW91dCkNCj4gPiA+ID4gKyAgICAg ICAgICAgIGlmIHZlcmlmeToNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICByZXRfc3RhdHVzID0g c2VsZi5zZW5kX2V4cGVjdF9iYXNlKCJlY2hvICQ/IiwNCj4gPiA+ID4gKyBleHBlY3RlZCwgdGlt ZW91dCkNCj4gPiA+ICJlY2hvICQ/IiB3aWxsIG9ubHkgcHJpbnQgdGhlIHJldHVybiBjb2RlLiBI b3cgaXMgaXQgc3VwcG9zZWQgdG8NCj4gPiA+IG1hdGNoICJleHBlY3RlZCI/IElmICJleHBlY3Rl ZCIgaXMgYSByZXR1cm4gY29kZSB0aGVuIHRoZSBmaXJzdA0KPiA+ID4gY29tbWFuZCdzIG91dHB1 dCBwcm9iYWJseSB3b24ndCBtYXRjaC4NCj4gPiA+IEkgdGhpbmsgc2VuZF9jb21tYW5kKCkgc2hv dWxkIGJlIHVzZWQgaGVyZS4NCj4gPg0KPiA+IEV4cGVjdGVkIGlzIHRoZSBwcm9tcHQgdG8gZXhw ZWN0LCAiIyIgaW4gbW9zdCBjYXNlcy4NCj4gVGhlbiBpdCBzaG91bGQgbm90IGJlIGNhbGxlZCAi ZXhwZWN0ZWQiIGJ1dCAicHJvbXB0Iiwgb3RoZXJ3aXNlIHNvbWVvbmUgbWlnaHQNCj4gdXNlIHRo aXMgQVBJIHRvIGFjdHVhbGx5IG1hdGNoIHNvbWV0aGluZyBpbiB0aGUgc3NoIG91dHB1dCAod2hp Y2ggaXMgYSB0b3RhbGx5DQo+IHZhbGlkIHVzZS1jYXNlKS4gTG9vayBhdCB0aGUgZG9jc3RyaW5n IG9mDQo+IGR0cy5mcmFtZXdvcmsubm9kZS5Ob2RlLnNlbmRfZXhwZWN0KCk6DQo+IA0KPiAiIiIN Cj4gU2VuZCBjb21tYW5kcyB0byBub2RlIGFuZCByZXR1cm4gc3RyaW5nIGJlZm9yZSBleHBlY3Rl ZCBzdHJpbmcuDQo+ICIiIg0KPiANCj4gTm90IHRvIG1lbnRpb24gdGhhdCB0aGUgInZlcmlmeSIg cGFyYW1ldGVyIGlzIG5vdCBkb2N1bWVudGVkIGFuZCB3aWxsIE5PVA0KPiB3b3JrIGlmICJleHBl Y3RlZCIgaXMgYW55dGhpbmcgZWxzZSB0aGFuIGEgcHJvbXB0Lg0KPiANCg0KSSdsbCByZW5hbWUg aXQsIHRoYXQgd29uJ3QgcmVhbGx5IGltcGFjdCBhbnl0aGluZy4gQW5kIEkgY2FuIGFsc28gZG9j dW1lbnQgdGhlICJ2ZXJpZnkiIHBhcmFtZXRlci4NCg0KPiBJIHdvbmRlciBob3cgbWFueSBEVFMg dGVzdHMgaGF2ZSB0byB3b3JrIGFyb3VuZCBvciB1dGlsaXplIHRob3NlIGhhY2tzPw0KPiBUaGVy ZSBtYXkgYmUgc29tZSB0ZXN0IGNhc2VzIHdoaWNoIHdvcmsgb25seSBiZWNhdXNlIG9mIHRoZW0g d2hpY2ggaXMgYQ0KPiB3cm9uZyB3YXkgdG8gc29sdmUgYSBwcm9ibGVtIGJ1dCBhZ2FpbiAtIG1h eWJlIHRoZXJlIHdlcmUgb3RoZXIgcHJpb3JpdGllcy4NCg0KSSdkIGltYWdlIHRoaXMgYmVpbmcg dGhlIGNhc2UuDQoNCj4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgIGlmIG5vdCBpbnQocmV0 X3N0YXR1cyk6DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQNCj4gPiA+ IFRoZSBjb25kaXRpb24gYWJvdmUgc2VlbXMgbGlrZSBhIEMtaXNtIHVzZWQgaW4gcHl0aG9uIHdo aWNoIGFnYWluDQo+ID4gPiB3b3JrcyBieSBtaXN0YWtlLiBSZXR1cm4gY29kZSAwIHdpbGwgY29u dmVydCB0byBpbnRlZ2VyIDAgd2hpY2ggd2lsbA0KPiA+ID4gYmUgcHJvbW90ZWQgdG8gYSBib29s ZWFuIEZhbHNlLiBJdCB3b3VsZCBiZSBtb3JlIHJlYWRhYmxlIHRvIGNoYW5nZSB0aGlzDQo+IGJs b2NrIHRvOg0KPiA+ID4gICByaSA9IGludChyZXRfc3RhdHVzKQ0KPiA+ID4gICBpZiByaSAhPSAw Og0KPiA+ID4gICAgICMgZXJyb3IgcHJpbnRzDQo+ID4gPiAgIHJldHVybiByaQ0KPiA+DQo+ID4g VGhpcyBpcyBjb21tb24gaW4gUHl0aG9uLCBidXQgcmVhbGx5IG9ubHkgdXNhYmxlIGlmIHlvdSBr bm93IHRoZSBvYmplY3QgdHlwZS4gSW4NCj4gdGhpcyBjYXNlIGl0J3MgYWx3YXlzIGludGVnZXIg YW5kIGl0J3MgcGVyZmVjdGx5IGZpbmUgdG8gdXNlIGl0IHRoaXMgd2F5ICgwID0gRmFsc2UsDQo+ IGFueXRoaW5nIGVsc2UgPSAxKSwgYnV0IEkgYWdyZWUgdGhhdCB0aGUgZG91YmxlIG5lZ2F0aXZl IGRvZXNuJ3QgaGVscCB3aXRoDQo+IHJlYWRpYmlsaXR5LiBJbiBhbnkgY2FzZSwgdGhpcyBpcyBh IG1pbm9yIHRoaW5nIGEgSSB0aGVyZSdzIG5vdCBtdWNoIG9mIGEgcmVhc29uIHRvDQo+IGNoYW5n ZSBpdCBpZiB3ZSdyZSB0byByZXBsYWNlIGl0IHdpdGggRmFicmljLg0KPiBBZ3JlZWQsIHRoaXMg Y2FuIHdhaXQuDQo+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiQ29tbWFuZDogJXMgZmFpbHVy ZSEiICUgY29tbWFuZCkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIu ZXJyb3IocmV0KQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50KHJldF9z dGF0dXMpDQo+ID4gPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ID4gPiArICAgICAgICAgICAg ICAgIHJldHVybiByZXQNCj4gPiA+ID4gKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOg0K PiA+ID4gPiArICAgICAgICAgICAgcHJpbnQoDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgUkVE KA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAiRXhjZXB0aW9uIGhhcHBlbmVkIGluIFsl c10gYW5kIG91dHB1dCBpcyBbJXNdIg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAlIChj b21tYW5kLCBzZWxmLmdldF9vdXRwdXRfYmVmb3JlKCkpDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgKQ0KPiA+ID4gPiArICAgICAgICAgICAgKQ0KPiA+ID4gPiArICAgICAgICAgICAgcmFpc2Ug ZQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgZGVmIHNlbmRfY29tbWFuZChzZWxmLCBjb21tYW5k OiBzdHIsIHRpbWVvdXQ6IGZsb2F0ID0gMSkgLT4gc3RyOg0KPiA+ID4gPiArICAgICAgICB0cnk6 DQo+ID4gPiA+ICsgICAgICAgICAgICBzZWxmLmNsZWFuX3Nlc3Npb24oKQ0KPiA+ID4gPiArICAg ICAgICAgICAgc2VsZi5fX3NlbmRsaW5lKGNvbW1hbmQpDQo+ID4gPiA+ICsgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToNCj4gPiA+ID4gKyAgICAgICAgICAgIHJhaXNlIGUNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICAgICAgICBvdXRwdXQgPSBzZWxmLmdldF9zZXNzaW9uX2JlZm9yZSh0aW1l b3V0PXRpbWVvdXQpDQo+ID4gPiA+ICsgICAgICAgIHNlbGYuc2Vzc2lvbi5QUk9NUFQgPSBzZWxm LnNlc3Npb24uVU5JUVVFX1BST01QVA0KPiA+ID4gPiArICAgICAgICBzZWxmLnNlc3Npb24ucHJv bXB0KDAuMSkNCj4gPiA+IFRoaXMgaXMgd3Jvbmc6DQo+ID4gPiAxLiBzZWxmLmdldF9zZXNzaW9u X2JlZm9yZSgpIHdpbGwgcmV0dXJuIG91dHB1dCBvZiB0aGUgY29tbWFuZCBidXQgc2luY2UNCj4g PiA+ICAgIGl0IGNoYW5nZWQgdGhlIGV4cGVjdGVkIChub3QgcmVhbCEpIHByb21wdCB0byBzZWxm Lm1hZ2ljX3Byb21wdCwgdGhhdA0KPiA+ID4gICAgd29uJ3QgYmUgbWF0Y2hlZCBzbyB0aGUgb3V0 cHV0IHdpbGwgY29udGFpbiB0aGUgcHJvbXB0IHNldCBieSBweHNzaA0KPiA+ID4gICAgKFVOSVFV RV9QUk9NUFQpLg0KPiA+ID4gMi4gVGhlbiBwcm9tcHQgaXMgcmVzZXQgdG8gVU5JUVVFX1BST01Q VCBidXQgYW5kIHByb21wdCgpIGlzIGNhbGxlZCBidXQNCj4gPiA+ICAgIHRoYXQgd2lsbCBvbmx5 IGNsZWFuIHVwIHRoZSBweHNzaCBidWZmZXIuIElmIGdldF9zZXNzaW9uX2JlZm9yZSgpIHdhcw0K PiA+ID4gICAgbm90IGNoYW5naW5nIHRoZSBzZXNzaW9uLlBST01QVCBmcm9tIFVOSVFVRV9QUk9N UFQgdG8NCj4gbWFnaWNfcHJvbXB0LA0KPiA+ID4gICAgdGhlIHNlY29uZCBwcm9tcHQoKSBjYWxs IHdvdWxkIGJlIHVubmVjZXNzYXJ5Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgIHJldHVy biBvdXRwdXQNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIGRlZiBjbGVhbl9zZXNzaW9uKHNlbGYp IC0+IE5vbmU6DQo+ID4gPiA+ICsgICAgICAgIHNlbGYuZ2V0X3Nlc3Npb25fYmVmb3JlKHRpbWVv dXQ9MC4wMSkNCj4gPiA+IFdoYXQgaWYgcmVtb3RlIGhvc3QgaXMgc2xvdyBmb3IgYW55IHJlYXNv bj8gV2UnbGwgdGltZW91dCBoZXJlLiBJdA0KPiA+ID4gc2VlbXMgdGhhdCBzdWNoIGEgc21hbGwg dGltZW91dCB2YWx1ZSB3YXMgdXNlZCBiZWNhdXNlDQo+ID4gPiBjbGVhbl9zZXNzaW9uKCkgaXMg dXNlZCBpbiBldmVyeQ0KPiA+ID4gc2VuZF9jb21tYW5kKCkgY2FsbC4NCj4gPiA+IENvbWUgdG8g dGhpbmsgb2YgaXQsIHdoeSBpcyB0aGlzIGNhbGwgbmVjZXNzYXJ5IHdoZW4gd2UgaGF2ZSBzZWxm Ll9fZmx1c2goKT8NCj4gPg0KPiA+IEkgdGhpbmsgdGhlIHRpbWVvdXQgaXMgZGVsaWJlcmF0ZS4g TW9yZSBiZWxvdy4NCj4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgZGVmIGdldF9zZXNzaW9u X2JlZm9yZShzZWxmLCB0aW1lb3V0OiBmbG9hdCA9IDE1KSAtPiBzdHI6DQo+ID4gPiA+ICsgICAg ICAgICIiIg0KPiA+ID4gPiArICAgICAgICBHZXQgYWxsIG91dHB1dCBiZWZvcmUgdGltZW91dA0K PiA+ID4gPiArICAgICAgICAiIiINCj4gPiA+ID4gKyAgICAgICAgc2VsZi5zZXNzaW9uLlBST01Q VCA9IHNlbGYubWFnaWNfcHJvbXB0DQo+ID4gPiBUaGlzIGxpbmUgaGFzIG5vIGVmZmVjdC4gUmVt b3RlIHByb21wdCB3YXMgbmV2ZXIgc2V0IHRvIHNlbGYubWFnaWNfcHJvbXB0Lg0KPiA+DQo+ID4g SSB0aGluayB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHdlIGhpdCB0aGUgdGltZW91dC4NCj4gV2h5 IHdvdWxkIHdlIGludGVudGlvbmFsbHkgd2FudCB0byBoaXQgYSB0aW1lb3V0PyBVbmxlc3MgSSdt IG1pc3NpbmcNCj4gc29tZXRoaW5nLCBpdCdsbCBvbmx5IGNhdXNlIHVzIHRvIHdhaXQgZm9yICJ0 aW1lb3V0IiBldmVuIGlmIHRoZSBjb21tYW5kIGVuZGVkDQo+IGFscmVhZHkuIEFsc28gbm90ZSB0 aGUgZnVsbCBsb2dpYyBvZiB0aGUgImdldF9zZXNzaW9uX2JlZm9yZSgpIjoNCj4gMS4gVHJpZ2dl ciBzZWxmLnNlc3Npb24ucHJvbXB0KCkgdG8gZ2V0IHRoZSBzZXNzaW9uIGJ1ZmZlciB1cGRhdGVk IHdpdGgNCj4gICAgd2hhdGV2ZXIgb3V0cHV0IHdhcyBiZXR3ZWVuIG5vdyBhbmQgbm93K3RpbWVv dXQgc2Vjb25kcy4NCj4gMi4gR2V0IHRoZSBvdXRwdXQgYnV0IHNpbmNlIHdlIHdlcmUgbWF0Y2hp bmcgdGhlIHNlbGYubWFnaWNfcHJvbXB0LA0KPiAgICBzZWxmLmdldF9vdXRwdXRfYWxsKCkgaGFz IHRvIHJlbW92ZSB0aGUgcmVhbCBwcm9tcHQgKFtQRVhQRUNUXSkgaWYNCj4gICAgdGhlIGNvbW1h bmQgZW5kZWQuDQo+IDMuIEZsdXNoIHRoZSBwZXhwZWN0J3Mgc3NoIGJ1ZmZlciBzbyB0aGF0IG5l eHQgY2FsbCB3b24ndCByZWFkIHdoYXQgaGFzDQo+ICAgIGFscmVhZHkgYmVlbiByZXR1cm5lZCAo dGhhdCdzIHRoZSBqb2Igb2Ygc2VsZi5fX2ZsdXNoKCkpLg0KPiANCj4gU28gSSBkb24ndCB0aGlu ayB0aGVyZSBpcyBhbnkgcmVhc29uIHRvIHVzZSB0aGlzIGFsd2F5cy10aW1lb3V0IGxvZ2ljLg0K DQpZZXMuIEl0IHNlZW1zIHRvIG1lIHRoZXJlJ3MgYSBsb3Qgb2Ygc3VwZXJmbHVvdXMgc3R1ZmYg aW4gdGhlIHBleHBlY3QgaW1wbGVtZW50YXRpb24uIFdlIGJhc2ljYWxseSBvbmx5IG5lZWQgc2Vu ZF9jb21tYW5kIGFuZCBnZXRfb3V0cHV0IGFwYXJ0IGZyb20gdGhlIGluaXQvY2xlYW51cCBtZXRo b2RzLg0KDQo+ID4NCj4gPiA+ID4gKyAgICAgICAgdHJ5Og0KPiA+ID4gPiArICAgICAgICAgICAg c2VsZi5zZXNzaW9uLnByb21wdCh0aW1lb3V0KQ0KPiA+ID4gPiArICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6DQo+ID4gPiA+ICsgICAgICAgICAgICBwYXNzDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgICAgICAgYmVmb3JlID0gc2VsZi5nZXRfb3V0cHV0X2FsbCgpDQo+ID4gPiA+ICsgICAg ICAgIHNlbGYuX19mbHVzaCgpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAgcmV0dXJuIGJl Zm9yZQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgZGVmIF9fZmx1c2goc2VsZikgLT4gTm9uZToN Cj4gPiA+ID4gKyAgICAgICAgIiIiDQo+ID4gPiA+ICsgICAgICAgIENsZWFyIGFsbCBzZXNzaW9u IGJ1ZmZlcg0KPiA+ID4gPiArICAgICAgICAiIiINCj4gPiA+ID4gKyAgICAgICAgc2VsZi5zZXNz aW9uLmJ1ZmZlciA9ICIiDQo+ID4gPiA+ICsgICAgICAgIHNlbGYuc2Vzc2lvbi5iZWZvcmUgPSAi Ig0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgZGVmIF9fcHJvbXB0KHNlbGYsIGNvbW1hbmQ6IHN0 ciwgdGltZW91dDogZmxvYXQpIC0+IE5vbmU6DQo+ID4gPiA+ICsgICAgICAgIGlmIG5vdCBzZWxm LnNlc3Npb24ucHJvbXB0KHRpbWVvdXQpOg0KPiA+ID4gPiArICAgICAgICAgICAgcmFpc2UgVGlt ZW91dEV4Y2VwdGlvbihjb21tYW5kLA0KPiA+ID4gPiArIHNlbGYuZ2V0X291dHB1dF9hbGwoKSkg ZnJvbSBOb25lDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBkZWYgX19zZW5kbGluZShzZWxmLCBj b21tYW5kOiBzdHIpIC0+IE5vbmU6DQo+ID4gPiA+ICsgICAgICAgIGlmIG5vdCBzZWxmLmlzYWxp dmUoKToNCj4gPiA+ID4gKyAgICAgICAgICAgIHJhaXNlIFNTSFNlc3Npb25EZWFkRXhjZXB0aW9u KHNlbGYubm9kZSkNCj4gPiA+ID4gKyAgICAgICAgaWYgbGVuKGNvbW1hbmQpID09IDIgYW5kIGNv bW1hbmQuc3RhcnRzd2l0aCgiXiIpOg0KPiA+ID4gPiArICAgICAgICAgICAgc2VsZi5zZXNzaW9u LnNlbmRjb250cm9sKGNvbW1hbmRbMV0pDQo+ID4gPiA+ICsgICAgICAgIGVsc2U6DQo+ID4gPiA+ ICsgICAgICAgICAgICBzZWxmLnNlc3Npb24uc2VuZGxpbmUoY29tbWFuZCkNCj4gPiA+ID4gKw0K PiA+ID4gPiArICAgIGRlZiBnZXRfb3V0cHV0X2JlZm9yZShzZWxmKSAtPiBzdHI6DQo+ID4gPiBU aGUgbmFtZSBpcyBtaXNzbGVhZGluZy4gSW4gcHhzc2ggdGVybXMgImJlZm9yZSIgbWVhbnMgYWxs IHRoZSBsaW5lcw0KPiA+ID4gYmVmb3JlIHRoZSBtYXRjaGVkIGV4cGVjdCgpL3Byb21wdCgpLiBI ZXJlIGl0IHJldHVybnMgdGhlIGxhc3QgbGluZQ0KPiA+ID4gb2YgdGhlIG91dHB1dC4gUGVyaGFw cw0KPiA+ID4gZ2V0X2xhc3Rfb3V0cHV0X2xpbmUoKSBpcyBiZXR0ZXI/DQo+ID4NCj4gPiBJIHRo b3VnaHQgc28gdG9vLCBidXQgdGhpcyBhY3R1YWxseSByZXR1cm5zIGFsbCBsaW5lcyBleGNlcHQg dGhlIGxhc3Q6DQo+ID4gJ2EuYi5jLmQnLnJzcGxpdCgnLicsIDEpWzBdDQo+ID4gJ2EuYi5jJw0K PiA+DQo+IE9oLCBJJ3ZlIHRvdGFsbHkgbWlzc2VkIHRoYXQhDQo+IElmIHRoYXQncyB0aGUgY2Fz ZSB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgYSByZXN1bHQgb2YgdGhlIGFsd2F5cy10aW1lb3V0IGxv Z2ljLiBOb3RlDQo+IHRoYXQgZ2V0X291dHB1dF9iZWZvcmUoKSBpcyBvbmx5IGNhbGxlZCBmcm9t DQo+IHNlbmRfZXhwZWN0X2Jhc2UoKSAoYW5kIGluZGlyZWN0bHkgYnkgc2VuZF9leHBlY3QoKSkg dG8gZ2V0IHRoZSBvdXRwdXQgb2YgdGhlDQo+IGNvbW1hbmQgd2l0aG91dCB0aGUgcHJvbXB0Lg0K PiBTbyB0aGUgcmVhc29uIHdoeSBzZWxmLnNlbmRfZXhwZWN0KCJlY2hvICdmb28nIiwgIiMiKSBy ZXR1cm5zIGEgcHJvcGVyIG91dHB1dA0KPiAoJ2Zvb1xuJykgaXM6DQo+IDAuIE9uIGxvZ2luKCkg dGltZSBwZXhwZWN0IHNldHMgdGhlIHJlbW90ZSBwcm9tcHQgdG8gIltQRVhQRUNUXSMiLg0KPiAx LiBzZW5kX2V4cGVjdCgpIC0+IHNlbGYuc2VuZF9leHBlY3RfYmFzZSgpIHNldHMgdGhlIG1hdGNo IHByb21wdCB0byAjLg0KPiAgICBUaGlzIGNhdXNlcyBzZWxmLnNlc3Npb24ucHJvbXB0KCkgdG8g dXBkYXRlIHRoZSBzZWxmLnNlc3Npb24uYnVmZmVyLA0KPiAgICBtYXRjaCAjIGFuZCBjaG9tcCBp dCwgbGVhdmluZyB0aGUgc3NoIGJ1ZmZlciBhczoNCj4gICAgICBmb28NCj4gICAgICBbUEVYUEVD VF0NCj4gMi4gc2VuZF9leHBlY3RfYmFzZSgpIGNhbGxzIHNlbGYuZ2V0X291dHB1dF9iZWZvcmUo KSB3aGljaCBjdXRzIHRoZSBsYXN0DQo+ICAgIGxpbmUgb2YgdGhlIG91dHB1dC4gTm90ZSB0aGF0 IHRoZSAiaWYiIGF0IHRoZSBlbmQgaXMgbmVjZXNzYXJ5IGZvcg0KPiAgICBjb21tYW5kcyB0aGF0 IGRvIG5vdCByZXR1cm4gYW55IG91dHB1dC4gT3RoZXJ3aXNlIHRoZSBvdXRwdXQgd291bGQNCj4g ICAgYmUgIltQRVhQRUNUXSIuIEFsc28gbm90ZSB0aGF0IGlmIHRoZXJlIGFyZSBhbnkgY29udHJv bCBjaGFyYWN0ZXJzDQo+ICAgIHByaW50ZWQgYnkgdGhlIHJlbW90ZSBzaGVsbCwgdGhlbiB0aGlz IHdpbGwgYWxzbyBub3Qgd29yayBiZWNhdXNlDQo+ICAgIGEgc3RyYWlnaHQgc3RyaW5nIGNvbXBh cmlzb24gaXMgZG9uZSwgbm90IGEgcmVnZXggbWF0Y2guDQo+IA0KPiBDb250cmFyeSwgaWYgc2Vs Zi5tYWdpY19wcm9tcHQgd2FzIG5vdCB1c2VkIGFuZCBwZXhwZWN0J3Mgb3JpZ2luYWwgcHJvbXB0 IHdhcw0KPiBsZWZ0IHVuZGlzdHVyYmVkLCB0aGVuIGFsbCB0aGUgaGFja3MgYWJvdmUgd291bGQg bm90IGJlIG5lZWRlZCBhbmQgdGhlIGNvZGUNCj4gd291bGQgYmUgY2xlYW5lci4NCg0KWWVzLiBP biB0b3Agb2YgdGhhdCwgdGhlIHR3byBvdXRwdXQgZnVuY3Rpb25zIGFjdHVhbGx5IGRvIHRoZSBz YW1lIHRoaW5nLiBPciBtYXliZSBub3Qgc3RyaWN0bHksIGJ1dCBJIHRoaW5rIHRoZSBpbnRlbnRp b24gaW4gYm90aCB3YXMgdG8gcmVtb3ZlIHRoZSBsYXN0IGxpbmUgY29udGFpbmluZyAiW1BFWFBF Q1RdIi4NCg0KPiA+ID4gPiArICAgICAgICBpZiBub3Qgc2VsZi5pc2FsaXZlKCk6DQo+ID4gPiA+ ICsgICAgICAgICAgICByYWlzZSBTU0hTZXNzaW9uRGVhZEV4Y2VwdGlvbihzZWxmLm5vZGUpDQo+ ID4gPiA+ICsgICAgICAgIGJlZm9yZTogbGlzdFtzdHJdID0gc2VsZi5zZXNzaW9uLmJlZm9yZS5y c3BsaXQoIlxyXG4iLCAxKQ0KPiA+ID4gPiArICAgICAgICBpZiBiZWZvcmVbMF0gPT0gIltQRVhQ RUNUXSI6DQo+ID4gPiA+ICsgICAgICAgICAgICBiZWZvcmVbMF0gPSAiIg0KPiA+ID4gVW5uZWNl c3NhcnkgaWYgcHJvbXB0IHdhcyBoYW5kbGVkIGluIHByb3BlciB3YXkgYXMgbWVudGlvbmVkIGFi b3ZlLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgIHJldHVybiBiZWZvcmVbMF0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICAgIGRlZiBnZXRfb3V0cHV0X2FsbChzZWxmKSAtPiBzdHI6DQo+ID4g PiA+ICsgICAgICAgIG91dHB1dDogc3RyID0gc2VsZi5zZXNzaW9uLmJlZm9yZQ0KPiA+ID4gPiAr ICAgICAgICBvdXRwdXQucmVwbGFjZSgiW1BFWFBFQ1RdIiwgIiIpDQo+ID4gPiBEaXR0by4gSWYg c2Vzc2lvbi5QUk9NUFQgd2FzIHJlc3RvcmVkIHByb3Blcmx5LCB0aGlzIGZ1bmN0aW9uIHdvdWxk DQo+ID4gPiBub3QgYmUgbmVjZXNzYXJ5IGF0IGFsbC4NCj4gPiA+ID4gKyAgICAgICAgcmV0dXJu IG91dHB1dA0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgZGVmIGNsb3NlKHNlbGYsIGZvcmNlOiBi b29sID0gRmFsc2UpIC0+IE5vbmU6DQo+ID4gPiA+ICsgICAgICAgIGlmIGZvcmNlIGlzIFRydWU6 DQo+ID4gPiA+ICsgICAgICAgICAgICBzZWxmLnNlc3Npb24uY2xvc2UoKQ0KPiA+ID4gPiArICAg ICAgICBlbHNlOg0KPiA+ID4gPiArICAgICAgICAgICAgaWYgc2VsZi5pc2FsaXZlKCk6DQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zZXNzaW9uLmxvZ291dCgpDQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgICBkZWYgaXNhbGl2ZShzZWxmKSAtPiBib29sOg0KPiA+ID4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5zZXNzaW9uLmlzYWxpdmUoKQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHRzL2Zy YW1ld29yay91dGlscy5weSBiL2R0cy9mcmFtZXdvcmsvdXRpbHMucHkgbmV3DQo+ID4gPiA+IGZp bGUgbW9kZSAxMDA2NDQgaW5kZXggMDAwMDAwMDAwMC4uZGI4NzM0OTgyNw0KPiA+ID4gPiAtLS0g L2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL2R0cy9mcmFtZXdvcmsvdXRpbHMucHkNCj4gPiA+ID4g QEAgLTAsMCArMSwxMiBAQA0KPiA+ID4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTMtQ2xhdXNlICMgQ29weXJpZ2h0KGMpIDIwMTAtMjAxNA0KPiA+ID4gPiArSW50ZWwgQ29ycG9y YXRpb24gIyBDb3B5cmlnaHQoYykgMjAyMiBQQU5USEVPTi50ZWNoIHMuci5vLg0KPiA+ID4gPiAr IyBDb3B5cmlnaHQoYykgMjAyMiBVbml2ZXJzaXR5IG9mIE5ldyBIYW1wc2hpcmUgIw0KPiA+ID4g PiArDQo+ID4gPiA+ICtkZWYgUkVEKHRleHQ6IHN0cikgLT4gc3RyOg0KPiA+ID4gPiArICAgIHJl dHVybiBmIlx1MDAxQlszMTsxbXtzdHIodGV4dCl9XHUwMDFCWzBtIg0KPiA+ID4gPiArDQo+ID4g PiA+ICsNCj4gPiA+ID4gK2RlZiBHUkVFTih0ZXh0OiBzdHIpIC0+IHN0cjoNCj4gPiA+ID4gKyAg ICByZXR1cm4gZiJcdTAwMUJbMzI7MW17c3RyKHRleHQpfVx1MDAxQlswbSINCj4gPiA+ID4gLS0N Cj4gPiA+ID4gMi4zMC4yDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gLS0NCj4gPiA+IEJlc3QgUmVn YXJkcywNCj4gPiA+IFN0YW5pc2xhdyBLYXJkYWNoDQo+ID4NCj4gDQo+IC0tDQo+IEJlc3QgUmVn YXJkcywNCj4gU3RhbmlzbGF3IEthcmRhY2gNCg0K