From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 797261FF16E for <inbox@lore.proxmox.com>; Mon, 17 Feb 2025 12:49:25 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 8AB841E2B5; Mon, 17 Feb 2025 12:49:23 +0100 (CET) Message-ID: <09867dfc-be1f-421f-be61-b286c3c913a7@proxmox.com> Date: Mon, 17 Feb 2025 12:49:17 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com>, =?UTF-8?Q?Lauren=C8=9Biu_Leahu-Vl=C4=83ducu?= <l.leahu-vladucu@proxmox.com> References: <20250206122833.171965-1-l.leahu-vladucu@proxmox.com> <20250206122833.171965-4-l.leahu-vladucu@proxmox.com> Content-Language: en-US From: Dominik Csapak <d.csapak@proxmox.com> In-Reply-To: <20250206122833.171965-4-l.leahu-vladucu@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.021 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup v2 2/2] Automatically select a drive (if part of a changer) when loading tapes X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> T25lIHRoaW5nIGkgc2VlbWluZ2x5IGRpZCBub3Qgbm90aWNlIGxhc3QgdGltZSBhcm91bmQ6Cgp0 aGlzICdhdXRvJyBjaG9vc2luZyBpcyBqdXN0IGJlc3QtZWZmb3J0LCBubz8KdGhlcmUgaXMgbm8g bWVjaGFuaXNtIGZyb20gcGFyYWxsZWwgcmVxdWVzdCB0byBibG9jayBlYWNoIG90aGVyPwoKZS5n LiAyIGxvYWRfbWVkaWEgc3RhcnQgc2ltdWx0YW5lb3VzbHkKCmJvdGggcnVuIHVudGlsIHRoZXkg Y2hvc2UgZHJpdmUxLCAtPiBvbmUgb2YgdGhlIG9wZXJhdGlvbnMgd2lsbCB1c2UgaXQKdGhlIG90 aGVyIHdpbGwgZWl0aGVyIGZhaWwgb3IgdGltZW91dAoKc2luY2UgdGhlIHVwZGF0ZSBvbmx5IGhh cHBlbnMgb24gdGhlIGFjdHVhbCAnbG9hZF9tZWRpYScKCndvdWxkIGl0IGJlIHBvc3NpYmxlIHRv IGhvbGQgYSBsb2NrIG92ZXIgJ2Nob29zZV9kcml2ZXMnCnRoYXQgY291bGQgYWxzbyB1cGRhdGUg dGhlIHVzYWdlIGhlcmUgPwoKdGhlbiB0aGUgY2hvb3NpbmcgbWlnaHQgdGFrZSBhIGJpdCBsb25n ZXIsIGJ1dCB3ZSBjb3VsZCBhdm9pZCB0aGUgc2l0dWF0aW9uIGFib3ZlCgpBbHNvIGEgZmV3IHNt YWxsZXIgY29tbWVudHMgaW5saW5lOgoKT24gMi82LzI1IDEzOjI4LCBMYXVyZW7Im2l1IExlYWh1 LVZsxINkdWN1IHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgcG9zc2liaWxpdHkgdG8gbG9h ZCB0YXBlcyBpbnRvIGRyaXZlcwo+IGF1dG9tYXRpY2FsbHkgYnkgc3BlY2lmeWluZyBhIGNoYW5n ZXIuIFRoaXMgaXMgdXNlZnVsIGZvciBsYXJnZXIgdGFwZQo+IGxpYnJhcmllcy4gQ2hvb3Npbmcg YSBkcml2ZSBpcyBkb25lIGJ5IHVzaW5nIHRoZSBkcml2ZSB0aGF0IGhhcyBub3QKPiBiZWVuIHVz ZWQgdGhlIGxvbmdlc3QuCj4gCj4gQXQgdGhlIG1vbWVudCwgdGhpcyBwYXRjaCBpbXBsZW1lbnRz IHRoZSBmdW5jdGlvbmFsaXR5IGZvciBhdXRvbWF0aWMKPiBsb2FkaW5nIGJvdGggb3ZlciB0aGUg QVBJIGFuZCB1c2luZyB0aGUgcHJveG1veC1iYWNrdXAgQ0xJIHRvb2wsIGFzCj4gd2VsbCBhcyBp biB0aGUgd2ViIFVJIHdoZW4gc2VsZWN0aW5nIGEgY2hhbmdlci4gQSBzZWNvbmQgcGF0Y2ggd2ls bAo+IGFkZCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IHdoZW4gY29uZmlndXJpbmcgYmFja3VwIGpv YnMuCj4gCj4gUGFydGlhbGx5IGZpeGVzICMzMzUxCj4gCj4gU2lnbmVkLW9mZi1ieTogTGF1cmVu yJtpdSBMZWFodS1WbMSDZHVjdSA8bC5sZWFodS12bGFkdWN1QHByb3htb3guY29tPgo+IC0tLQo+ ICAgc3JjL2FwaTIvdGFwZS9jaGFuZ2VyLnJzICAgICAgICB8IDEzMSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQo+ICAgc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycyB8ICAg MiArLQo+ICAgc3JjL2Jpbi9wcm94bW94LXRhcGUucnMgICAgICAgICB8ICA0OCArKysrKysrKysr LS0KPiAgIHNyYy90YXBlL2NoYW5nZXIvbW9kLnJzICAgICAgICAgfCAgMjMgKysrKystCj4gICBz cmMvdGFwZS9kcml2ZS92aXJ0dWFsX3RhcGUucnMgIHwgICA4ICstCj4gICBzcmMvdGFwZS9kcml2 ZV9pbmZvLnJzICAgICAgICAgIHwgIDU2ICsrKysrKysrKysrKysrCj4gICBzcmMvdGFwZS9tb2Qu cnMgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIHd3dy90YXBlL0NoYW5nZXJTdGF0dXMuanMg ICAgICAgfCAgMTUgKysrLQo+ICAgOCBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9ucygrKSwg MTggZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3RhcGUvZHJpdmVfaW5m by5ycwo+IAo+IGRpZmYgLS1naXQgYS9zcmMvYXBpMi90YXBlL2NoYW5nZXIucnMgYi9zcmMvYXBp Mi90YXBlL2NoYW5nZXIucnMKPiBpbmRleCA3ZWNmN2JmZi4uYWEwNjgwNGQgMTAwNjQ0Cj4gLS0t IGEvc3JjL2FwaTIvdGFwZS9jaGFuZ2VyLnJzCj4gKysrIGIvc3JjL2FwaTIvdGFwZS9jaGFuZ2Vy LnJzCj4gQEAgLTEsMTQgKzEsMTUgQEAKPiAgIHVzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoTWFw Owo+ICAgCj4gLXVzZSBhbnlob3c6OkVycm9yOwo+ICt1c2UgYW55aG93Ojp7YmFpbCwgRXJyb3J9 Owo+ICAgdXNlIHNlcmRlX2pzb246OlZhbHVlOwo+ICAgCj4gICB1c2UgcHJveG1veF9yb3V0ZXI6 OntsaXN0X3N1YmRpcnNfYXBpX21ldGhvZCwgUGVybWlzc2lvbiwgUm91dGVyLCBScGNFbnZpcm9u bWVudCwgU3ViZGlyTWFwfTsKPiAgIHVzZSBwcm94bW94X3NjaGVtYTo6YXBpOwo+ICAgCj4gICB1 c2UgcGJzX2FwaV90eXBlczo6ewo+IC0gICAgQXV0aGlkLCBDaGFuZ2VyTGlzdEVudHJ5LCBMdG9U YXBlRHJpdmUsIE10eEVudHJ5S2luZCwgTXR4U3RhdHVzRW50cnksIFNjc2lUYXBlQ2hhbmdlciwK PiAtICAgIENIQU5HRVJfTkFNRV9TQ0hFTUEsIFBSSVZfVEFQRV9BVURJVCwgUFJJVl9UQVBFX1JF QUQsCj4gKyAgICBBdXRoaWQsIENoYW5nZXJMaXN0RW50cnksIERldmljZUFjdGl2aXR5LCBEcml2 ZUxpc3RFbnRyeSwgTHRvVGFwZURyaXZlLCBNdHhFbnRyeUtpbmQsCj4gKyAgICBNdHhTdGF0dXNF bnRyeSwgU2NzaVRhcGVDaGFuZ2VyLCBDSEFOR0VSX05BTUVfU0NIRU1BLCBNRURJQV9MQUJFTF9T Q0hFTUEsIFBSSVZfVEFQRV9BVURJVCwKPiArICAgIFBSSVZfVEFQRV9SRUFELCBVUElEX1NDSEVN QSwKPiAgIH07Cj4gICB1c2UgcGJzX2NvbmZpZzo6Q2FjaGVkVXNlckluZm87Cj4gICB1c2UgcGJz X3RhcGU6OnsKPiBAQCAtMTk5LDcgKzIwMCwxMzEgQEAgcHViIGZuIGxpc3RfY2hhbmdlcnMoCj4g ICAgICAgT2sobGlzdCkKPiAgIH0KPiAgIAo+ICsjW2FwaSgKPiArICAgIGlucHV0OiB7Cj4gKyAg ICAgICAgcHJvcGVydGllczogewo+ICsgICAgICAgICAgICBuYW1lOiB7Cj4gKyAgICAgICAgICAg ICAgICBzY2hlbWE6IENIQU5HRVJfTkFNRV9TQ0hFTUEsCj4gKyAgICAgICAgICAgIH0sCj4gKyAg ICAgICAgICAgICJsYWJlbC10ZXh0Ijogewo+ICsgICAgICAgICAgICAgICAgc2NoZW1hOiBNRURJ QV9MQUJFTF9TQ0hFTUEsCj4gKyAgICAgICAgICAgIH0sCj4gKyAgICAgICAgfSwKPiArICAgIH0s Cj4gKyAgICByZXR1cm5zOiB7Cj4gKyAgICAgICAgc2NoZW1hOiBVUElEX1NDSEVNQSwKPiArICAg IH0sCj4gKyAgICBhY2Nlc3M6IHsKPiArICAgICAgICBwZXJtaXNzaW9uOiAmUGVybWlzc2lvbjo6 UHJpdmlsZWdlKCZbInRhcGUiLCAiZGV2aWNlIiwgIntuYW1lfSJdLCBQUklWX1RBUEVfUkVBRCwg ZmFsc2UpLAo+ICsgICAgfSwKPiArKV0KPiArLy8vIExvYWQgbWVkaWEgd2l0aCBzcGVjaWZpZWQg bGFiZWwKPiArLy8vCj4gKy8vLyBJc3N1ZSBhIG1lZGlhIGxvYWQgcmVxdWVzdCB0byB0aGUgYXNz b2NpYXRlZCBjaGFuZ2VyIGRldmljZS4KPiArcHViIGZuIGxvYWRfbWVkaWEoCj4gKyAgICBuYW1l OiBTdHJpbmcsCj4gKyAgICBsYWJlbF90ZXh0OiBTdHJpbmcsCj4gKyAgICBycGNlbnY6ICZtdXQg ZHluIFJwY0Vudmlyb25tZW50LAo+ICspIC0+IFJlc3VsdDxWYWx1ZSwgRXJyb3I+IHsKPiArICAg IGxldCBkcml2ZSA9IGNob29zZV9kcml2ZSgmbmFtZSwgcnBjZW52KTsKPiArICAgIHN1cGVyOjpk cml2ZTo6bG9hZF9tZWRpYShkcml2ZT8sIGxhYmVsX3RleHQsIHJwY2VudikKPiArfQo+ICsKPiAr I1thcGkoCj4gKyAgICBpbnB1dDogewo+ICsgICAgICAgIHByb3BlcnRpZXM6IHsKPiArICAgICAg ICAgICAgbmFtZTogewo+ICsgICAgICAgICAgICAgICAgc2NoZW1hOiBDSEFOR0VSX05BTUVfU0NI RU1BLAo+ICsgICAgICAgICAgICB9LAo+ICsgICAgICAgICAgICAic291cmNlLXNsb3QiOiB7Cj4g KyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIlNvdXJjZSBzbG90IG51bWJlci4iLAo+ICsg ICAgICAgICAgICAgICAgbWluaW11bTogMSwKPiArICAgICAgICAgICAgfSwKPiArICAgICAgICB9 LAo+ICsgICAgfSwKPiArICAgIGFjY2Vzczogewo+ICsgICAgICAgIHBlcm1pc3Npb246ICZQZXJt aXNzaW9uOjpQcml2aWxlZ2UoJlsidGFwZSIsICJkZXZpY2UiLCAie25hbWV9Il0sIFBSSVZfVEFQ RV9SRUFELCBmYWxzZSksCj4gKyAgICB9LAo+ICspXQo+ICsvLy8gTG9hZCBtZWRpYSBmcm9tIHRo ZSBzcGVjaWZpZWQgc2xvdAo+ICsvLy8KPiArLy8vIElzc3VlIGEgbWVkaWEgbG9hZCByZXF1ZXN0 IHRvIHRoZSBhc3NvY2lhdGVkIGNoYW5nZXIgZGV2aWNlLgo+ICtwdWIgYXN5bmMgZm4gbG9hZF9z bG90KAo+ICsgICAgbmFtZTogU3RyaW5nLAo+ICsgICAgc291cmNlX3Nsb3Q6IHU2NCwKPiArICAg IHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQsCj4gKykgLT4gUmVzdWx0PCgpLCBFcnJv cj4gewo+ICsgICAgbGV0IGRyaXZlID0gY2hvb3NlX2RyaXZlKCZuYW1lLCBycGNlbnYpOwo+ICsg ICAgc3VwZXI6OmRyaXZlOjpsb2FkX3Nsb3QoZHJpdmU/LCBzb3VyY2Vfc2xvdCkuYXdhaXQKPiAr fQo+ICsKPiArLy8vIFJldHVybnMgdGhlIGlkbGUgZHJpdmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUg c3BlY2lmaWVkIGNoYW5nZXIuCj4gK2ZuIGdldF9pZGxlX2RyaXZlcygKPiArICAgIGNoYW5nZXI6 ICZzdHIsCj4gKyAgICBycGNlbnY6ICZtdXQgZHluIFJwY0Vudmlyb25tZW50LAo+ICspIC0+IFJl c3VsdDxWZWM8RHJpdmVMaXN0RW50cnk+LCBFcnJvcj4gewo+ICsgICAgbGV0IGRyaXZlcyA9IHN1 cGVyOjpkcml2ZTo6bGlzdF9kcml2ZXMoU29tZShjaGFuZ2VyLnRvX3N0cmluZygpKSwgdHJ1ZSwg VmFsdWU6Ok51bGwsIHJwY2VudikKPiArICAgICAgICAubWFwX2Vycih8ZXJyfCBhbnlob3c6OmZv cm1hdF9lcnIhKCJjYW5ub3QgcXVlcnkgZHJpdmVzOiB7ZXJyfSIpKT87Cj4gKwo+ICsgICAgbGV0 IGZpbHRlciA9IGRyaXZlcwo+ICsgICAgICAgIC5pbnRvX2l0ZXIoKQo+ICsgICAgICAgIC5maWx0 ZXIofGVudHJ5fCBtYXRjaGVzIShlbnRyeS5hY3Rpdml0eSwgTm9uZSB8IFNvbWUoRGV2aWNlQWN0 aXZpdHk6Ok5vQWN0aXZpdHkpKSk7Cj4gKwo+ICsgICAgT2soZmlsdGVyLmNvbGxlY3QoKSkKPiAr fQo+ICsKPiArLy8vIFJldHVybnMgdGhlIGRyaXZlcyBzb3J0ZWQgYnkgdGhlIGxhc3QgdXNhZ2Uu Cj4gKy8vLyBUaGUgZmlyc3QgZHJpdmUgaW4gdGhlIHJldHVybmVkIHZlY3RvciBpcyB0aGUgb25l IHRoYXQgaGFzIG5vdCBiZWVuIHVzZWQgdGhlIGxvbmdlc3QsIG9yIG5ldmVyLgo+ICtmbiBnZXRf ZHJpdmVzX3NvcnRlZF9ieV9sYXN0X3VzYWdlKAoKd291bGQgaXQgbWF5YmUgbWFrZSBzZW5zZSB0 byBmaWx0ZXIgb3V0IHRoZSBub24taWRsZSBkcml2ZXMgaGVyZSBhbHJlYWR5PwpUaGF0IHdheSB0 aGUgY29kZSBpbiAnY2hvb3NlX2RyaXZlJyB3b3VsZCBiZWNvbWUgZXZlbiBtb3JlIHNpbXBsZQoo dGhvdWdoIG5vIGhhcmQgZmVlbGluZ3MgZm9yIHRoaXMgb24gbXkgc2lkZSkKCj4gKyAgICBjaGFu Z2VyOiAmc3RyLAo+ICsgICAgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCwKPiArKSAt PiBSZXN1bHQ8VmVjPERyaXZlTGlzdEVudHJ5PiwgRXJyb3I+IHsKPiArICAgIGxldCBkcml2ZXNf bGFzdF91c2FnZSA9IGNyYXRlOjp0YXBlOjpkcml2ZV9pbmZvOjpnZXRfZHJpdmVzX2xhc3RfdXNh Z2UoKT87Cj4gKyAgICBsZXQgbXV0IGRyaXZlcyA9IHN1cGVyOjpkcml2ZTo6bGlzdF9kcml2ZXMo U29tZShjaGFuZ2VyLmludG8oKSksIHRydWUsIFZhbHVlOjpOdWxsLCBycGNlbnYpPzsKPiArICAg IGRyaXZlcy5zb3J0X2J5KHxmaXJzdCwgc2Vjb25kfCB7Cj4gKyAgICAgICAgbGV0IGZpcnN0X3Vz YWdlID0gZHJpdmVzX2xhc3RfdXNhZ2UuZHJpdmVzLmdldCgmZmlyc3QuY29uZmlnLm5hbWUpOwo+ ICsgICAgICAgIGxldCBzZWNvbmRfdXNhZ2UgPSBkcml2ZXNfbGFzdF91c2FnZS5kcml2ZXMuZ2V0 KCZzZWNvbmQuY29uZmlnLm5hbWUpOwo+ICsKPiArICAgICAgICBtYXRjaCAoZmlyc3RfdXNhZ2Us IHNlY29uZF91c2FnZSkgewo+ICsgICAgICAgICAgICAoU29tZShmaXJzdF91c2FnZSksIFNvbWUo c2Vjb25kX3VzYWdlKSkgPT4gewo+ICsgICAgICAgICAgICAgICAgZmlyc3RfdXNhZ2UubGFzdF91 c2FnZS5jbXAoJnNlY29uZF91c2FnZS5sYXN0X3VzYWdlKQo+ICsgICAgICAgICAgICB9Cj4gKyAg ICAgICAgICAgIChTb21lKF8pLCBOb25lKSA9PiBzdGQ6OmNtcDo6T3JkZXJpbmc6OkdyZWF0ZXIs Cj4gKyAgICAgICAgICAgIChOb25lLCBTb21lKF8pKSA9PiBzdGQ6OmNtcDo6T3JkZXJpbmc6Okxl c3MsCj4gKyAgICAgICAgICAgIChOb25lLCBOb25lKSA9PiBzdGQ6OmNtcDo6T3JkZXJpbmc6OkVx dWFsLAo+ICsgICAgICAgIH0KPiArICAgIH0pOwo+ICsKPiArICAgIE9rKGRyaXZlcykKPiArfQo+ ICsKPiArZm4gY2hvb3NlX2RyaXZlKGNoYW5nZXI6ICZzdHIsIHJwY2VudjogJm11dCBkeW4gUnBj RW52aXJvbm1lbnQpIC0+IFJlc3VsdDxTdHJpbmcsIEVycm9yPiB7Cj4gKyAgICBsZXQgaWRsZV9k cml2ZXMgPSBnZXRfaWRsZV9kcml2ZXMoY2hhbmdlciwgcnBjZW52KT87Cj4gKyAgICBsZXQgZHJp dmVzX2luX29yZGVyID0gZ2V0X2RyaXZlc19zb3J0ZWRfYnlfbGFzdF91c2FnZShjaGFuZ2VyLCBy cGNlbnYpOwo+ICsKPiArICAgIC8vIElmIHRoZSBkcml2ZXMgaW5mbyBjb3VsZCBub3QgYmUgcmV0 cmlldmVkLCBzaW1wbHkgdHJ5IHRvIHVzZSB0aGUgZmlyc3Qgb25lIChpZiBwb3NzaWJsZSkuCj4g KyAgICBsZXQgT2soZHJpdmVzX2luX29yZGVyKSA9IGRyaXZlc19pbl9vcmRlciBlbHNlIHsKPiAr ICAgICAgICBtYXRjaCBpZGxlX2RyaXZlcy5maXJzdCgpIHsKPiArICAgICAgICAgICAgU29tZShp ZGxlX2RyaXZlKSA9PiByZXR1cm4gT2soaWRsZV9kcml2ZS5jb25maWcubmFtZS5jbG9uZSgpKSwK PiArICAgICAgICAgICAgTm9uZSA9PiBiYWlsISgidGhlcmUgYXJlIG5vIGlkbGUgZHJpdmVzIHRv IGNob29zZSBmb3IgYXV0b21hdGljIGRyaXZlIGFzc2lnbm1lbnQiKSwKPiArICAgICAgICB9Cj4g KyAgICB9OwoKQUZBSUsgd2UgZG9uJ3QgdXNlIHRoZSBsZXQgWCA9IGZvbyBlbHNlIHt9IHN5bnRh eCB5ZXQuIGFuZCBwZXJzb25hbGx5IEknbSBtb3JlIGluIGZhdm9yIG9mCgpsZXQgZHJpdmVzID0g bWF0Y2ggZHJpdmVzIHsKICAgICBPayhkcml2ZXMpID0+IGRyaXZlcywKICAgICBFcnIoZXJyKSA9 PiB7CiAgICAgICAgIC4uCiAgICAgfQp9OwoKaGVyZSBmb3IgdHdvIHJlYXNvbnM6CgoqIGl0J3Mg YSBiaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlcmUgYXJlIHR3byBjYXNlcyAoSSBoYWQgdG8gbG9v ayB0d2ljZSB0byBzZWUgdGhlICdlbHNlJywKICAgYnV0IHRoYXQgbWlnaHQganVzdCBtZSBub3Qg YmVpbmcgdXNlZCB0byB0aGlzIHN5bnRheCkKKiB3ZSBjYW4gZG8gc29tZXRoaW5nIHdpdGggZXJy IGhlcmUsIG5hbWVseSBpJ2QgbGlrZSB0byBsb2cgdGhhdCB3aXRoIGUuZy4gbG9nOjp3YXJuCiAg IChyZXRyaWV2aW5nIHRoZSBkcml2ZXMgKyB1c2FnZSBzaG91bGQgbm90IHJ1biBpbnRvIGFuIGVy cm9yLCBzbyBoYXZpbmcgdGhhdCBpbiB0aGUKICAgbG9nIGNhbiBvbmx5IGJlIGdvb2QgZm9yIGRl YnVnZ2luZykKCgo+ICsKPiArICAgIGxldCBjaG9zZW5fZHJpdmUgPSBkcml2ZXNfaW5fb3JkZXIu aXRlcigpLmZpbmQofGRyaXZlfCB7Cj4gKyAgICAgICAgaWRsZV9kcml2ZXMKPiArICAgICAgICAg ICAgLml0ZXIoKQo+ICsgICAgICAgICAgICAuYW55KHxpZGxlX2RyaXZlfCBkcml2ZS5jb25maWcu bmFtZSA9PSBpZGxlX2RyaXZlLmNvbmZpZy5uYW1lKQo+ICsgICAgfSk7Cj4gKwo+ICsgICAgbWF0 Y2ggY2hvc2VuX2RyaXZlIHsKPiArICAgICAgICBTb21lKGNob3Nlbl9kcml2ZSkgPT4gT2soY2hv c2VuX2RyaXZlLmNvbmZpZy5uYW1lLmNsb25lKCkpLAo+ICsgICAgICAgIE5vbmUgPT4gYmFpbCEo InRoZXJlIGFyZSBubyBpZGxlIGRyaXZlcyB0byBjaG9vc2UgZm9yIGF1dG9tYXRpYyBkcml2ZSBh c3NpZ25tZW50IiksCj4gKyAgICB9Cj4gK30KPiArCj4gICBjb25zdCBTVUJESVJTOiBTdWJkaXJN YXAgPSAmWwo+ICsgICAgKCJsb2FkLW1lZGlhIiwgJlJvdXRlcjo6bmV3KCkucG9zdCgmQVBJX01F VEhPRF9MT0FEX01FRElBKSksCj4gKyAgICAoImxvYWQtc2xvdCIsICZSb3V0ZXI6Om5ldygpLnBv c3QoJkFQSV9NRVRIT0RfTE9BRF9TTE9UKSksCj4gICAgICAgKCJzdGF0dXMiLCAmUm91dGVyOjpu ZXcoKS5nZXQoJkFQSV9NRVRIT0RfR0VUX1NUQVRVUykpLAo+ICAgICAgICgidHJhbnNmZXIiLCAm Um91dGVyOjpuZXcoKS5wb3N0KCZBUElfTUVUSE9EX1RSQU5TRkVSKSksCj4gICBdOwo+IGRpZmYg LS1naXQgYS9zcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzIGIvc3JjL2Jpbi9wcm94bW94 LWJhY2t1cC1wcm94eS5ycwo+IGluZGV4IGVkZDBhNGNjLi5hMTgzODRjYiAxMDA2NDQKPiAtLS0g YS9zcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzCj4gKysrIGIvc3JjL2Jpbi9wcm94bW94 LWJhY2t1cC1wcm94eS5ycwo+IEBAIC00MzIsNyArNDMyLDcgQEAgYXN5bmMgZm4gcnVuX3Rhc2tf c2NoZWR1bGVyKCkgewo+ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAg ICAgICAgICAgIHRyYWNpbmc6OmVycm9yISgidGFzayBzY2hlZHVsZXIgcGFuaWMgLSBjYW5ub3Qg c2hvdyBlcnJvciBtZXNzYWdlIGR1ZSB0byB1bmtub3duIGVycm9yIHR5cGUiKQo+ICAgICAgICAg ICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfSwKPiArICAgICAgICAgICAgfQo+ICAgICAgICAg ICAgICAgT2soRXJyKGVycikpID0+IHRyYWNpbmc6OmVycm9yISgidGFzayBzY2hlZHVsZXIgZmFp bGVkIC0ge2Vycjo/fSIpLAo+ICAgICAgICAgICAgICAgT2soT2soXykpID0+IHt9Cj4gICAgICAg ICAgIH0KCnRoaXMgaHVuayBpcwoqIG5vdCByZWxhdGVkCiogbm90IGFwcGx5YWJsZSBhbnltb3Jl IChzbyB5b3UgaGF2ZSB0byByZWJhc2UgYW55d2F5KQoKPiBkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w cm94bW94LXRhcGUucnMgYi9zcmMvYmluL3Byb3htb3gtdGFwZS5ycwo+IGluZGV4IDhlODU4NGIz Li43NTJhZTI1NSAxMDA2NDQKPiAtLS0gYS9zcmMvYmluL3Byb3htb3gtdGFwZS5ycwo+ICsrKyBi L3NyYy9iaW4vcHJveG1veC10YXBlLnJzCj4gQEAgLTEsNiArMSw3IEBACj4gICB1c2Ugc3RkOjpj b2xsZWN0aW9uczo6SGFzaE1hcDsKPiAgIAo+ICAgdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9l cnIsIEVycm9yfTsKPiArdXNlIHBic19jb25maWc6OmRyaXZlOjpjb21wbGV0ZV9jaGFuZ2VyX25h bWU7Cj4gICB1c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgIAo+ICAgdXNlIHByb3ht b3hfaHVtYW5fYnl0ZTo6SHVtYW5CeXRlOwo+IEBAIC0yMCw5ICsyMSwxMCBAQCB1c2UgcGJzX2Nv bmZpZzo6ZHJpdmU6OmNvbXBsZXRlX2RyaXZlX25hbWU7Cj4gICB1c2UgcGJzX2NvbmZpZzo6bWVk aWFfcG9vbDo6Y29tcGxldGVfcG9vbF9uYW1lOwo+ICAgCj4gICB1c2UgcGJzX2FwaV90eXBlczo6 ewo+IC0gICAgQXV0aGlkLCBCYWNrdXBOYW1lc3BhY2UsIEdyb3VwTGlzdEl0ZW0sIFVzZXJpZCwg REFUQVNUT1JFX01BUF9MSVNUX1NDSEVNQSwgREFUQVNUT1JFX1NDSEVNQSwKPiAtICAgIERSSVZF X05BTUVfU0NIRU1BLCBHUk9VUF9GSUxURVJfTElTVF9TQ0hFTUEsIE1FRElBX0xBQkVMX1NDSEVN QSwgTUVESUFfUE9PTF9OQU1FX1NDSEVNQSwKPiAtICAgIE5TX01BWF9ERVBUSF9TQ0hFTUEsIFRB UEVfUkVTVE9SRV9OQU1FU1BBQ0VfU0NIRU1BLCBUQVBFX1JFU1RPUkVfU05BUFNIT1RfU0NIRU1B LAo+ICsgICAgQXV0aGlkLCBCYWNrdXBOYW1lc3BhY2UsIEdyb3VwTGlzdEl0ZW0sIFVzZXJpZCwg Q0hBTkdFUl9OQU1FX1NDSEVNQV9BVVRPTUFUSUNfRFJJVkVfQVNTSUdOTUVOVCwKPiArICAgIERB VEFTVE9SRV9NQVBfTElTVF9TQ0hFTUEsIERBVEFTVE9SRV9TQ0hFTUEsIERSSVZFX05BTUVfU0NI RU1BLCBHUk9VUF9GSUxURVJfTElTVF9TQ0hFTUEsCj4gKyAgICBNRURJQV9MQUJFTF9TQ0hFTUEs IE1FRElBX1BPT0xfTkFNRV9TQ0hFTUEsIE5TX01BWF9ERVBUSF9TQ0hFTUEsIFRBUEVfUkVTVE9S RV9OQU1FU1BBQ0VfU0NIRU1BLAo+ICsgICAgVEFQRV9SRVNUT1JFX1NOQVBTSE9UX1NDSEVNQSwK PiAgIH07Cj4gICB1c2UgcGJzX3RhcGU6OntCbG9ja1JlYWRFcnJvciwgTWVkaWFDb250ZW50SGVh ZGVyLCBQUk9YTU9YX0JBQ0tVUF9DT05URU5UX0hFQURFUl9NQUdJQ18xXzB9Owo+ICAgCj4gQEAg LTIxNCw2ICsyMTYsMTAgQEAgYXN5bmMgZm4gZWplY3RfbWVkaWEobXV0IHBhcmFtOiBWYWx1ZSkg LT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICAgICAgICAgICAgICAgICAgIHNjaGVtYTogRFJJVkVf TkFNRV9TQ0hFTUEsCj4gICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4gICAgICAg ICAgICAgICB9LAo+ICsgICAgICAgICAgICBjaGFuZ2VyOiB7Cj4gKyAgICAgICAgICAgICAgICBz Y2hlbWE6IENIQU5HRVJfTkFNRV9TQ0hFTUFfQVVUT01BVElDX0RSSVZFX0FTU0lHTk1FTlQsCj4g KyAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPiArICAgICAgICAgICAgfSwKPiAgICAg ICAgICAgICAgICJsYWJlbC10ZXh0Ijogewo+ICAgICAgICAgICAgICAgICAgIHNjaGVtYTogTUVE SUFfTEFCRUxfU0NIRU1BLAo+ICAgICAgICAgICAgICAgfSwKPiBAQCAtMjMwLDExICsyMzYsMjEg QEAgYXN5bmMgZm4gbG9hZF9tZWRpYShtdXQgcGFyYW06IFZhbHVlKSAtPiBSZXN1bHQ8KCksIEVy cm9yPiB7Cj4gICAKPiAgICAgICBsZXQgKGNvbmZpZywgX2RpZ2VzdCkgPSBwYnNfY29uZmlnOjpk cml2ZTo6Y29uZmlnKCk/Owo+ICAgCj4gLSAgICBsZXQgZHJpdmUgPSBleHRyYWN0X2RyaXZlX25h bWUoJm11dCBwYXJhbSwgJmNvbmZpZyk/Owo+ICsgICAgbGV0IGRyaXZlID0gZXh0cmFjdF9kcml2 ZV9uYW1lKCZtdXQgcGFyYW0sICZjb25maWcpOwo+ICsgICAgbGV0IGNoYW5nZXIgPSBwYXJhbVsi Y2hhbmdlciJdLmFzX3N0cigpOwo+ICsKPiArICAgIGxldCBwYXRoID0gbWF0Y2ggKGNoYW5nZXIs IGRyaXZlKSB7Cj4gKyAgICAgICAgKFNvbWUoY2hhbmdlciksIEVycihfKSkgPT4gZm9ybWF0ISgi YXBpMi9qc29uL3RhcGUvY2hhbmdlci97Y2hhbmdlcn0vbG9hZC1tZWRpYSIpLAo+ICsgICAgICAg IChOb25lLCBPayhkcml2ZSkpID0+IGZvcm1hdCEoImFwaTIvanNvbi90YXBlL2RyaXZlL3tkcml2 ZX0vbG9hZC1tZWRpYSIpLAo+ICsgICAgICAgIF8gPT4gYmFpbCEoImVpdGhlciBhIGNoYW5nZXIg b3IgYSBkcml2ZSBoYXMgdG8gYmUgc3BlY2lmaWVkIHdoZW4gbG9hZGluZyBtZWRpYSIpLAo+ICsg ICAgfTsKPiArCj4gKyAgICBpZiBsZXQgU29tZShwYXJhbSkgPSBwYXJhbS5hc19vYmplY3RfbXV0 KCkgewo+ICsgICAgICAgIHBhcmFtLnJlbW92ZSgiY2hhbmdlciIpOwo+ICsgICAgfQoKbWF5YmUg d2UgY291bGQgbW92ZSB0aGF0IHJlbW92ZSB1cCB0byB3aGVyZSB3ZSBleHRyYWN0IHRoZSBwYXJh bWV0ZXIsIGJ1dCBubyBoYXJkIGZlZWxpbmdzCmZyb20gbXkgc2lkZQoKPiAgIAo+ICAgICAgIGxl dCBjbGllbnQgPSBjb25uZWN0X3RvX2xvY2FsaG9zdCgpPzsKPiAgIAo+IC0gICAgbGV0IHBhdGgg PSBmb3JtYXQhKCJhcGkyL2pzb24vdGFwZS9kcml2ZS97fS9sb2FkLW1lZGlhIiwgZHJpdmUpOwo+ ICAgICAgIGxldCByZXN1bHQgPSBjbGllbnQucG9zdCgmcGF0aCwgU29tZShwYXJhbSkpLmF3YWl0 PzsKPiAgIAo+ICAgICAgIHZpZXdfdGFza19yZXN1bHQoJmNsaWVudCwgcmVzdWx0LCAmb3V0cHV0 X2Zvcm1hdCkuYXdhaXQ/Owo+IEBAIC0yNzYsNiArMjkyLDEwIEBAIGFzeW5jIGZuIGV4cG9ydF9t ZWRpYShtdXQgcGFyYW06IFZhbHVlKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gICAgICAgICAg ICAgICAgICAgc2NoZW1hOiBEUklWRV9OQU1FX1NDSEVNQSwKPiAgICAgICAgICAgICAgICAgICBv cHRpb25hbDogdHJ1ZSwKPiAgICAgICAgICAgICAgIH0sCj4gKyAgICAgICAgICAgIGNoYW5nZXI6 IHsKPiArICAgICAgICAgICAgICAgIHNjaGVtYTogQ0hBTkdFUl9OQU1FX1NDSEVNQV9BVVRPTUFU SUNfRFJJVkVfQVNTSUdOTUVOVCwKPiArICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+ ICsgICAgICAgICAgICB9LAo+ICAgICAgICAgICAgICAgInNvdXJjZS1zbG90Ijogewo+ICAgICAg ICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiU291cmNlIHNsb3QgbnVtYmVyLiIsCj4gICAgICAg ICAgICAgICAgICAgdHlwZTogdTY0LAo+IEBAIC0yODgsMTEgKzMwOCwyMSBAQCBhc3luYyBmbiBl eHBvcnRfbWVkaWEobXV0IHBhcmFtOiBWYWx1ZSkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICAg YXN5bmMgZm4gbG9hZF9tZWRpYV9mcm9tX3Nsb3QobXV0IHBhcmFtOiBWYWx1ZSkgLT4gUmVzdWx0 PCgpLCBFcnJvcj4gewo+ICAgICAgIGxldCAoY29uZmlnLCBfZGlnZXN0KSA9IHBic19jb25maWc6 OmRyaXZlOjpjb25maWcoKT87Cj4gICAKPiAtICAgIGxldCBkcml2ZSA9IGV4dHJhY3RfZHJpdmVf bmFtZSgmbXV0IHBhcmFtLCAmY29uZmlnKT87Cj4gKyAgICBsZXQgZHJpdmUgPSBleHRyYWN0X2Ry aXZlX25hbWUoJm11dCBwYXJhbSwgJmNvbmZpZyk7Cj4gKyAgICBsZXQgY2hhbmdlciA9IHBhcmFt WyJjaGFuZ2VyIl0uYXNfc3RyKCk7Cj4gKwo+ICsgICAgbGV0IHBhdGggPSBtYXRjaCAoY2hhbmdl ciwgZHJpdmUpIHsKPiArICAgICAgICAoU29tZShjaGFuZ2VyKSwgRXJyKF8pKSA9PiBmb3JtYXQh KCJhcGkyL2pzb24vdGFwZS9jaGFuZ2VyL3tjaGFuZ2VyfS9sb2FkLXNsb3QiKSwKPiArICAgICAg ICAoTm9uZSwgT2soZHJpdmUpKSA9PiBmb3JtYXQhKCJhcGkyL2pzb24vdGFwZS9kcml2ZS97ZHJp dmV9L2xvYWQtc2xvdCIpLAo+ICsgICAgICAgIF8gPT4gYmFpbCEoImVpdGhlciBhIGNoYW5nZXIg b3IgYSBkcml2ZSBoYXMgdG8gYmUgc3BlY2lmaWVkIHdoZW4gbG9hZGluZyBtZWRpYSIpLAo+ICsg ICAgfTsKPiArCj4gKyAgICBpZiBsZXQgU29tZShwYXJhbSkgPSBwYXJhbS5hc19vYmplY3RfbXV0 KCkgewo+ICsgICAgICAgIHBhcmFtLnJlbW92ZSgiY2hhbmdlciIpOwo+ICsgICAgfQo+ICAgCgpo ZXJlIHRvbwoKPiAgICAgICBsZXQgY2xpZW50ID0gY29ubmVjdF90b19sb2NhbGhvc3QoKT87Cj4g ICAKPiAtICAgIGxldCBwYXRoID0gZm9ybWF0ISgiYXBpMi9qc29uL3RhcGUvZHJpdmUve30vbG9h ZC1zbG90IiwgZHJpdmUpOwo+ICAgICAgIGNsaWVudC5wb3N0KCZwYXRoLCBTb21lKHBhcmFtKSku YXdhaXQ/Owo+ICAgCj4gICAgICAgT2soKCkpCj4gQEAgLTEwOTEsMTMgKzExMjEsMTUgQEAgZm4g bWFpbigpIHsKPiAgICAgICAgICAgICAgIENsaUNvbW1hbmQ6Om5ldygmQVBJX01FVEhPRF9MT0FE X01FRElBKQo+ICAgICAgICAgICAgICAgICAgIC5hcmdfcGFyYW0oJlsibGFiZWwtdGV4dCJdKQo+ ICAgICAgICAgICAgICAgICAgIC5jb21wbGV0aW9uX2NiKCJkcml2ZSIsIGNvbXBsZXRlX2RyaXZl X25hbWUpCj4gKyAgICAgICAgICAgICAgICAuY29tcGxldGlvbl9jYigiY2hhbmdlciIsIGNvbXBs ZXRlX2NoYW5nZXJfbmFtZSkKPiAgICAgICAgICAgICAgICAgICAuY29tcGxldGlvbl9jYigibGFi ZWwtdGV4dCIsIGNvbXBsZXRlX21lZGlhX2xhYmVsX3RleHQpLAo+ICAgICAgICAgICApCj4gICAg ICAgICAgIC5pbnNlcnQoCj4gICAgICAgICAgICAgICAibG9hZC1tZWRpYS1mcm9tLXNsb3QiLAo+ ICAgICAgICAgICAgICAgQ2xpQ29tbWFuZDo6bmV3KCZBUElfTUVUSE9EX0xPQURfTUVESUFfRlJP TV9TTE9UKQo+ICAgICAgICAgICAgICAgICAgIC5hcmdfcGFyYW0oJlsic291cmNlLXNsb3QiXSkK PiAtICAgICAgICAgICAgICAgIC5jb21wbGV0aW9uX2NiKCJkcml2ZSIsIGNvbXBsZXRlX2RyaXZl X25hbWUpLAo+ICsgICAgICAgICAgICAgICAgLmNvbXBsZXRpb25fY2IoImRyaXZlIiwgY29tcGxl dGVfZHJpdmVfbmFtZSkKPiArICAgICAgICAgICAgICAgIC5jb21wbGV0aW9uX2NiKCJjaGFuZ2Vy IiwgY29tcGxldGVfY2hhbmdlcl9uYW1lKSwKPiAgICAgICAgICAgKQo+ICAgICAgICAgICAuaW5z ZXJ0KAo+ICAgICAgICAgICAgICAgInVubG9hZCIsCj4gZGlmZiAtLWdpdCBhL3NyYy90YXBlL2No YW5nZXIvbW9kLnJzIGIvc3JjL3RhcGUvY2hhbmdlci9tb2QucnMKPiBpbmRleCAxOGVhMGY0Ni4u MjJjNzgxODAgMTAwNjQ0Cj4gLS0tIGEvc3JjL3RhcGUvY2hhbmdlci9tb2QucnMKPiArKysgYi9z cmMvdGFwZS9jaGFuZ2VyL21vZC5ycwo+IEBAIC0yNzMsNiArMjczLDIxIEBAIHB1YiB0cmFpdCBN ZWRpYUNoYW5nZSB7Cj4gICAgICAgfQo+ICAgfQo+ICAgCj4gKy8vLyBVcGRhdGVzIHRoZSBkcml2 ZSdzIGxhc3QgdXNhZ2UgdGltZSB0byBub3cuCj4gK3B1YihzdXBlcikgZm4gdXBkYXRlX2RyaXZl X3VzYWdlKGRyaXZlOiAmc3RyKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gKyAgICBsZXQgX2xv Y2sgPSBjcmF0ZTo6dGFwZTo6ZHJpdmVfaW5mbzo6bG9jaygpPzsKPiArCj4gKyAgICBsZXQgbXV0 IGRyaXZlc19sYXN0X3VzYWdlID0gY3JhdGU6OnRhcGU6OmRyaXZlX2luZm86OmdldF9kcml2ZXNf bGFzdF91c2FnZSgpPzsKPiArCj4gKyAgICBsZXQgbm93ID0gcHJveG1veF90aW1lOjplcG9jaF9p NjQoKTsKPiArICAgIGRyaXZlc19sYXN0X3VzYWdlCj4gKyAgICAgICAgLmRyaXZlcwo+ICsgICAg ICAgIC5lbnRyeShkcml2ZS5pbnRvKCkpCj4gKyAgICAgICAgLm9yX2RlZmF1bHQoKQo+ICsgICAg ICAgIC5sYXN0X3VzYWdlID0gbm93Owo+ICsgICAgY3JhdGU6OnRhcGU6OmRyaXZlX2luZm86OnNh dmVfY29uZmlnKCZkcml2ZXNfbGFzdF91c2FnZSkKPiArfQo+ICsKPiAgIGNvbnN0IFVTRV9NVFg6 IGJvb2wgPSBmYWxzZTsKPiAgIAo+ICAgaW1wbCBTY3NpTWVkaWFDaGFuZ2UgZm9yIFNjc2lUYXBl Q2hhbmdlciB7Cj4gQEAgLTQyMyw3ICs0MzgsMTMgQEAgaW1wbCBNZWRpYUNoYW5nZSBmb3IgTXR4 TWVkaWFDaGFuZ2VyIHsKPiAgICAgICB9Cj4gICAKPiAgICAgICBmbiBsb2FkX21lZGlhX2Zyb21f c2xvdCgmbXV0IHNlbGYsIHNsb3Q6IHU2NCkgLT4gUmVzdWx0PE10eFN0YXR1cywgRXJyb3I+IHsK PiAtICAgICAgICBzZWxmLmNvbmZpZy5sb2FkX3Nsb3Qoc2xvdCwgc2VsZi5kcml2ZV9udW1iZXIo KSkKPiArICAgICAgICBsZXQgc3RhdHVzID0gc2VsZi5jb25maWcubG9hZF9zbG90KHNsb3QsIHNl bGYuZHJpdmVfbnVtYmVyKCkpPzsKPiArCj4gKyAgICAgICAgaWYgbGV0IEVycihlcnIpID0gdXBk YXRlX2RyaXZlX3VzYWdlKHNlbGYuZHJpdmVfbmFtZSgpKSB7Cj4gKyAgICAgICAgICAgIGxvZzo6 d2FybiEoImNvdWxkIG5vdCB1cGRhdGUgZHJpdmUgdXNhZ2U6IHtlcnJ9Iik7Cj4gKyAgICAgICAg fQo+ICsKPiArICAgICAgICBPayhzdGF0dXMpCj4gICAgICAgfQo+ICAgCj4gICAgICAgZm4gdW5s b2FkX21lZGlhKCZtdXQgc2VsZiwgdGFyZ2V0X3Nsb3Q6IE9wdGlvbjx1NjQ+KSAtPiBSZXN1bHQ8 TXR4U3RhdHVzLCBFcnJvcj4gewo+IGRpZmYgLS1naXQgYS9zcmMvdGFwZS9kcml2ZS92aXJ0dWFs X3RhcGUucnMgYi9zcmMvdGFwZS9kcml2ZS92aXJ0dWFsX3RhcGUucnMKPiBpbmRleCA4NjZlNGQz Mi4uMjEzZjE3ZmUgMTAwNjQ0Cj4gLS0tIGEvc3JjL3RhcGUvZHJpdmUvdmlydHVhbF90YXBlLnJz Cj4gKysrIGIvc3JjL3RhcGUvZHJpdmUvdmlydHVhbF90YXBlLnJzCj4gQEAgLTU2Nyw3ICs1Njcs MTMgQEAgaW1wbCBNZWRpYUNoYW5nZSBmb3IgVmlydHVhbFRhcGVIYW5kbGUgewo+ICAgICAgICAg ICB9Owo+ICAgICAgICAgICBzZWxmLnN0b3JlX3N0YXR1cygmc3RhdHVzKT87Cj4gICAKPiAtICAg ICAgICBzZWxmLnN0YXR1cygpCj4gKyAgICAgICAgbGV0IHN0YXR1cyA9IHNlbGYuc3RhdHVzKCk/ Owo+ICsKPiArICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBjcmF0ZTo6dGFwZTo6Y2hhbmdlcjo6 dXBkYXRlX2RyaXZlX3VzYWdlKHNlbGYuZHJpdmVfbmFtZSgpKSB7Cj4gKyAgICAgICAgICAgIGxv Zzo6d2FybiEoImNvdWxkIG5vdCB1cGRhdGUgZHJpdmUgdXNhZ2U6IHtlcnJ9Iik7Cj4gKyAgICAg ICAgfQo+ICsKPiArICAgICAgICBPayhzdGF0dXMpCj4gICAgICAgfQo+ICAgCj4gICAgICAgZm4g dW5sb2FkX21lZGlhKCZtdXQgc2VsZiwgX3RhcmdldF9zbG90OiBPcHRpb248dTY0PikgLT4gUmVz dWx0PE10eFN0YXR1cywgRXJyb3I+IHsKPiBkaWZmIC0tZ2l0IGEvc3JjL3RhcGUvZHJpdmVfaW5m by5ycyBiL3NyYy90YXBlL2RyaXZlX2luZm8ucnMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwLi41YmZhYWIwNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9zcmMvdGFwZS9k cml2ZV9pbmZvLnJzCj4gQEAgLTAsMCArMSw1NiBAQAo+ICsvLyEgU2VyaWFsaXplL2Rlc2VyaWFs aXplIHRwYWUgZHJpdmUgaW5mbyAoZS5nLiB1c2VmdWwgZm9yIHN0YXRpc3RpY3MpCj4gKy8vIQo+ ICsvLyEgVGhpcyBjYW4gYmUgdXNlZCB0byBzdG9yZSBhIHN0YXRlIG92ZXIgYSBsb25nZXIgcGVy aW9kIG9mIHRpbWUgKGUuZy4gbGFzdCB0YXBlIGRyaXZlIHVzYWdlKS4KPiArCj4gK3VzZSBhbnlo b3c6OkVycm9yOwo+ICt1c2UgcHJveG1veF9wcm9kdWN0X2NvbmZpZzo6QXBpTG9ja0d1YXJkOwo+ ICt1c2Ugc2VyZGU6OntEZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKPiArdXNlIHN0ZDo6Y29sbGVj dGlvbnM6Okhhc2hNYXA7Cj4gKwo+ICsvLy8gRHJpdmUgaW5mbyBmaWxlIG5hbWUKPiArLy8vIFRo aXMgaGFzIGEgZ2VuZXJpYyBuYW1lIHRvIGJlIGFibGUgdG8gZXh0ZW5kIHRoZSBpbmZvcm1hdGlv biBpbiB0aGUgZnV0dXJlLgo+ICtwdWIgY29uc3QgRFJJVkVfSU5GT19GSUxFTkFNRTogJnN0ciA9 IGNvbmNhdCEoCj4gKyAgICBwYnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX1NUQVRFX0RJUl9N ISgpLAo+ICsgICAgIi90YXBlX2RyaXZlX2luZm8uanNvbiIKPiArKTsKPiArLy8vIExvY2sgZmls ZSBuYW1lICh1c2VkIHRvIHByZXZlbnQgY29uY3VycmVudCBhY2Nlc3MpCj4gK3B1YiBjb25zdCBE UklWRV9JTkZPX0xPQ0tGSUxFOiAmc3RyID0gY29uY2F0ISgKPiArICAgIHBic19idWlsZGNmZzo6 UFJPWE1PWF9CQUNLVVBfU1RBVEVfRElSX00hKCksCj4gKyAgICAiLy50YXBlX2RyaXZlX2luZm8u anNvbi5sb2NrIgo+ICspOwo+ICsKPiArI1tkZXJpdmUoU2VyaWFsaXplLCBEZXNlcmlhbGl6ZSwg RGVmYXVsdCldCj4gK3B1YiBzdHJ1Y3QgU2luZ2xlRHJpdmVMYXN0VXNhZ2Ugewo+ICsgICAgI1tz ZXJkZSh3aXRoID0gInByb3htb3hfc2VyZGU6OmVwb2NoX2FzX3JmYzMzMzkiKV0KPiArICAgIHB1 YiBsYXN0X3VzYWdlOiBpNjQsCj4gK30KPiArCj4gKyNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJp YWxpemUsIERlZmF1bHQpXQo+ICtwdWIgc3RydWN0IERyaXZlc0xhc3RVc2FnZSB7Cj4gKyAgICBw dWIgZHJpdmVzOiBIYXNoTWFwPFN0cmluZywgU2luZ2xlRHJpdmVMYXN0VXNhZ2U+LAo+ICt9Cj4g Kwo+ICsvLy8gR2V0IGV4Y2x1c2l2ZSBsb2NrCj4gK3B1YiBmbiBsb2NrKCkgLT4gUmVzdWx0PEFw aUxvY2tHdWFyZCwgRXJyb3I+IHsKPiArICAgIHByb3htb3hfcHJvZHVjdF9jb25maWc6Om9wZW5f YXBpX2xvY2tmaWxlKERSSVZFX0lORk9fTE9DS0ZJTEUsIE9wdGlvbjo6Tm9uZSwgdHJ1ZSkKPiAr fQo+ICsKPiArLy8vIFJlYWQgYW5kIHBhcnNlIHRoZSBkcml2ZSBpbmZvIGZpbGUKPiArLy8vIEN1 cnJlbnRseSB1c2VkIHR1IGdldCB0aGUgZHJpdmUncyBsYXN0IHVzYWdlCj4gK3B1YiBmbiBnZXRf ZHJpdmVzX2xhc3RfdXNhZ2UoKSAtPiBSZXN1bHQ8RHJpdmVzTGFzdFVzYWdlLCBFcnJvcj4gewo+ ICsgICAgbGV0IGNvbnRlbnQgPSBwcm94bW94X3N5czo6ZnM6OmZpbGVfcmVhZF9vcHRpb25hbF9z dHJpbmcoRFJJVkVfSU5GT19GSUxFTkFNRSk/Owo+ICsKPiArICAgIG1hdGNoIGNvbnRlbnQgewo+ ICsgICAgICAgIFNvbWUoY29udGVudCkgPT4gewo+ICsgICAgICAgICAgICBsZXQgcmVzdWx0ID0g c2VyZGVfanNvbjo6ZnJvbV9zdHI6OjxEcml2ZXNMYXN0VXNhZ2U+KCZjb250ZW50KT87Cj4gKyAg ICAgICAgICAgIE9rKHJlc3VsdCkKPiArICAgICAgICB9Cj4gKyAgICAgICAgTm9uZSA9PiBPayhE cml2ZXNMYXN0VXNhZ2U6OmRlZmF1bHQoKSksCj4gKyAgICB9Cj4gK30KPiArCj4gKy8vLyBTYXZl IHRoZSBjb25maWd1cmF0aW9uIGZpbGUKPiArcHViIGZuIHNhdmVfY29uZmlnKGRhdGE6ICZEcml2 ZXNMYXN0VXNhZ2UpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPiArICAgIGxldCBqc29uID0gc2Vy ZGVfanNvbjo6dG9fc3RyaW5nKGRhdGEpPzsKPiArICAgIHByb3htb3hfcHJvZHVjdF9jb25maWc6 OnJlcGxhY2VfY29uZmlnKERSSVZFX0lORk9fRklMRU5BTUUsIGpzb24uYXNfYnl0ZXMoKSkKPiAr fQo+IGRpZmYgLS1naXQgYS9zcmMvdGFwZS9tb2QucnMgYi9zcmMvdGFwZS9tb2QucnMKPiBpbmRl eCBmMjc2Zjk0OC4uOGI4NzE1MmQgMTAwNjQ0Cj4gLS0tIGEvc3JjL3RhcGUvbW9kLnJzCj4gKysr IGIvc3JjL3RhcGUvbW9kLnJzCj4gQEAgLTIwLDYgKzIwLDcgQEAgcHViIHVzZSBpbnZlbnRvcnk6 Oio7Cj4gICAKPiAgIHB1YiBtb2QgY2hhbmdlcjsKPiAgIHB1YiBtb2QgZHJpdmU7Cj4gK3B1YiBt b2QgZHJpdmVfaW5mbzsKPiAgIHB1YiBtb2QgZW5jcnlwdGlvbl9rZXlzOwo+ICAgCj4gICBtb2Qg bWVkaWFfcG9vbDsKPiBkaWZmIC0tZ2l0IGEvd3d3L3RhcGUvQ2hhbmdlclN0YXR1cy5qcyBiL3d3 dy90YXBlL0NoYW5nZXJTdGF0dXMuanMKPiBpbmRleCBlMThhZjkwZS4uMWI4MWRiMzQgMTAwNjQ0 Cj4gLS0tIGEvd3d3L3RhcGUvQ2hhbmdlclN0YXR1cy5qcwo+ICsrKyBiL3d3dy90YXBlL0NoYW5n ZXJTdGF0dXMuanMKPiBAQCAtMjIyLDEyICsyMjIsMTYgQEAgRXh0LmRlZmluZSgnUEJTLlRhcGVN YW5hZ2VtZW50LkNoYW5nZXJTdGF0dXMnLCB7Cj4gICAJCSAgICBhdXRvU2hvdzogdHJ1ZSwKPiAg IAkJICAgIHN1Ym1pdFRleHQ6IGdldHRleHQoJ09LJyksCj4gICAJCSAgICB0aXRsZTogZ2V0dGV4 dCgnTG9hZCBNZWRpYSBpbnRvIERyaXZlJyksCj4gLQkJICAgIHVybDogYC9hcGkyL2V4dGpzL3Rh cGUvZHJpdmVgLAo+ICsJCSAgICB1cmw6IGAvYXBpMi9leHRqcy90YXBlYCwKPiAgIAkJICAgIG1l dGhvZDogJ1BPU1QnLAo+ICAgCQkgICAgc3VibWl0VXJsOiBmdW5jdGlvbih1cmwsIHZhbHVlcykg ewo+IC0JCQlsZXQgZHJpdmUgPSB2YWx1ZXMuZHJpdmU7Cj4gLQkJCWRlbGV0ZSB2YWx1ZXMuZHJp dmU7Cj4gLQkJCXJldHVybiBgJHt1cmx9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGRyaXZlKX0vJHth cGlDYWxsfWA7Cj4gKwkJCSAgICBsZXQgZHJpdmUgPSB2YWx1ZXMuZHJpdmU7Cj4gKwkJCSAgICBk ZWxldGUgdmFsdWVzLmRyaXZlOwo+ICsKPiArICAgICAgICAgIGxldCB0eXBlID0gZHJpdmUgPyAi ZHJpdmUiIDogImNoYW5nZXIiOwo+ICsgICAgICAgICAgbGV0IGl0ZW0gPSBkcml2ZSA/IGRyaXZl IDogY2hhbmdlcjsKPiArCj4gKyAgICAgICAgICByZXR1cm4gYCR7dXJsfS8ke3R5cGV9LyR7ZW5j b2RlVVJJQ29tcG9uZW50KGl0ZW0pfS8ke2FwaUNhbGx9YDsKCmhlcmUgdGhlIGluZGVudGF0aW9u IGlzIHdyb25nCgo+ICAgCQkgICAgfSwKPiAgIAkJICAgIGl0ZW1zOiBbCj4gICAJCQlsYWJlbCAh PT0gIiIgPyB7Cj4gQEAgLTI0OCw2ICsyNTIsOSBAQCBFeHQuZGVmaW5lKCdQQlMuVGFwZU1hbmFn ZW1lbnQuQ2hhbmdlclN0YXR1cycsIHsKPiAgIAkJCSAgICBmaWVsZExhYmVsOiBnZXR0ZXh0KCdE cml2ZScpLAo+ICAgCQkJICAgIGNoYW5nZXI6IGNoYW5nZXIsCj4gICAJCQkgICAgbmFtZTogJ2Ry aXZlJywKPiArCQkJICAgIGVtcHR5VGV4dDogZ2V0dGV4dCgnQ2hvb3NlIEF1dG9tYXRpY2FsbHkn KSwKPiArCQkJICAgIGFsbG93Qmxhbms6IHRydWUsCj4gKwkJCSAgICBhdXRvU2VsZWN0OiBmYWxz ZSwKPiAgIAkJCX0sCj4gICAJCSAgICBdLAo+ICAgCQkgICAgbGlzdGVuZXJzOiB7CgoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWls aW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1v eC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=