From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-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 B5B301FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 17:20:21 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 544661E34F; Wed, 2 Apr 2025 17:20:09 +0200 (CEST) Message-ID: <bff7016a-f034-47a7-854e-6645b65d07ba@proxmox.com> Date: Wed, 2 Apr 2025 17:20:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>, =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> References: <20250304115803.194820-1-m.frank@proxmox.com> <20250304115803.194820-3-m.frank@proxmox.com> <1743597124.um0raw7cfp.astroid@yuna.none> From: Markus Frank <m.frank@proxmox.com> In-Reply-To: <1743597124.um0raw7cfp.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.406 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, usb.pm, dir.pm, tunnel.pm, pci.pm, storagetunnel.pm] Subject: Re: [pve-devel] [PATCH guest-common v14 2/12] add dir mapping section config X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> VGhhbmtzIGZvciB0aGUgZmVlZGJhY2suCgpPbiAgMjAyNS0wNC0wMiAxNToxNCwgRmFiaWFuIEdy w7xuYmljaGxlciB3cm90ZToKPiBPbiBNYXJjaCA0LCAyMDI1IDEyOjU3IHBtLCBNYXJrdXMgRnJh bmsgd3JvdGU6Cj4+IEFkZHMgYSBjb25maWcgZmlsZSBmb3IgZGlyZWN0b3JpZXMgYnkgdXNpbmcg YSAnbWFwJyBwcm9wZXJ0eSBzdHJpbmcgZm9yCj4+IGVhY2ggbm9kZSBtYXBwaW5nLgo+Pgo+PiBO ZXh0IHRvIG5vZGUgJiBwYXRoLCB0aGVyZSBpcyB0aGUgb3B0aW9uYWwgYW5ub3VuY2Utc3VibW91 bnRzIHBhcmFtZXRlcgo+PiB3aGljaCBmb3JjZXMgdmlydGlvZnNkIHRvIHJlcG9ydCBhIGRpZmZl cmVudCBkZXZpY2UgbnVtYmVyIGZvciBlYWNoCj4+IHN1Ym1vdW50IGl0IGVuY291bnRlcnMuIFdp dGhvdXQgaXQsIGR1cGxpY2F0ZXMgbWF5IGJlIGNyZWF0ZWQgYmVjYXVzZQo+PiBpbm9kZSBJRHMg YXJlIG9ubHkgdW5pcXVlIG9uIGEgc2luZ2xlIGZpbGVzeXN0ZW0uCj4gCj4gc29tZSB0aGluZ3Mg YWJvdXQgdGhlIGFubm91bmNlLXN1Ym1vdW50cyBvcHRpb24gdGhhdCBtaWdodCBiZSB3b3J0aHdo aWxlCj4gdG8gY29uc2lkZXI6Cj4gLSBkb2VzIGl0IGh1cnQgdG8gc2V0IGFubm91bmNlLXN1Ym1v dW50cyBpZiB0aGVyZSBhcmUgbm9uZT8KPiAtIGl0IHNvdW5kcyBsaWtlIG5vdCBzZXR0aW5nIGl0 IGlmIHRoZXJlIGFyZSBhbnkgaXMgZGFuZ2Vyb3VzCj4gCj4gd2h5IGRvbid0IHdlIGFsd2F5cyBz ZXQgaXQ/ICJhbm5vdW5jZS1zdWJtb3VudHMiIGlzIGFsc28gYSByZWFsbHkgd2VpcmQKPiBuYW1l IGlmIHdlIGV4dGVuZCB0aGlzIHRvIG1hbmFnZWQgYmluZC1tb3VudHMgZm9yIGNvbnRhaW5lcnMg KHdoaWNoIEknZAo+IHZlcnkgbXVjaCBsaWtlIHRvIGRvKSwgaWYgd2Uga2VlcCBpdCBpdCBzaG91 bGQgYmUgYSBmbGFnIGRlbm90aW5nIHRoYXQKPiB0aGlzIGRpcmVjdG9yeSBjb250YWlucyBmdXJ0 aGVyIG1vdW50cG9pbnRzICh3aGljaCBtZWFucyBpdAo+IHJlcXVpcmVzL3Nob3VsZCBkZWZhdWx0 IHRvIGFubm91bmNlLXN1Ym1vdW50cyBmb3IgdmlydGlvZnNkLCBhbmQKPiByZWN1cnNpdmUgYmlu ZCBtb3VudGluZyBmb3IgTFhDKT8KSSBhZ3JlZSwgSSB0aGluayBpdCBpcyBiZXN0IHRvIHJlbW92 ZSB0aGlzIG9wdGlvbiBhbHRvZ2V0aGVyIGFuZCBhbHdheXMgc2V0IGl0Lgo+IAo+Pgo+PiBleGFt cGxlIGNvbmZpZzoKPj4gYGBgCj4+IHNvbWUtZGlyLWlkCj4+IAltYXAgbm9kZT1ub2RlMSxwYXRo PS9tbnQvc2hhcmUvLGFubm91bmNlLXN1Ym1vdW50cz0xCj4+IAltYXAgbm9kZT1ub2RlMixwYXRo PS9tbnQvc2hhcmUvLAo+PiBgYGAKPj4KPj4gU2lnbmVkLW9mZi1ieTogTWFya3VzIEZyYW5rIDxt LmZyYW5rQHByb3htb3guY29tPgo+PiAtLS0KPj4gdjE0Ogo+PiAqIGRpc2FsbG93IGNvbW1hcyBh bmQgZXF1YWwgc2lnbnMgaW4gcGF0aCB1bnRpbCB0aGUgcGF0aCBjYW4gYmUgcXVvdGVkCj4+ICAg aW4gcHJvcGVydHkgc3RyaW5ncwo+PiAqIGFkZHJlc3NlZCBzdHlsZSBuaXRzIGFuZCBpbXByb3Zl ZCBmb3JtYXR0aW5nCj4+Cj4+ICAgc3JjL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCj4+ICAg c3JjL1BWRS9NYXBwaW5nL0Rpci5wbSB8IDE5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKykKPj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL1BWRS9NYXBwaW5nL0Rpci5wbQo+Pgo+PiBkaWZmIC0t Z2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCj4+IGluZGV4IGNiYzQwYzEuLjAzMGU3 ZjcgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9NYWtlZmlsZQo+PiArKysgYi9zcmMvTWFrZWZpbGUKPj4g QEAgLTE1LDYgKzE1LDcgQEAgaW5zdGFsbDogUFZFCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQVkUv U3RvcmFnZVR1bm5lbC5wbSAke1BFUkw1RElSfS9QVkUvCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQ VkUvVHVubmVsLnBtICR7UEVSTDVESVJ9L1BWRS8KPj4gICAJaW5zdGFsbCAtZCAke1BFUkw1RElS fS9QVkUvTWFwcGluZwo+PiArCWluc3RhbGwgLW0gMDY0NCBQVkUvTWFwcGluZy9EaXIucG0gJHtQ RVJMNURJUn0vUFZFL01hcHBpbmcvCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQVkUvTWFwcGluZy9Q Q0kucG0gJHtQRVJMNURJUn0vUFZFL01hcHBpbmcvCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQVkUv TWFwcGluZy9VU0IucG0gJHtQRVJMNURJUn0vUFZFL01hcHBpbmcvCj4+ICAgCWluc3RhbGwgLWQg JHtQRVJMNURJUn0vUFZFL1ZaRHVtcAo+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9NYXBwaW5nL0Rp ci5wbSBiL3NyYy9QVkUvTWFwcGluZy9EaXIucG0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4g aW5kZXggMDAwMDAwMC4uNTgxZWMzOQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3NyYy9QVkUv TWFwcGluZy9EaXIucG0KPj4gQEAgLTAsMCArMSwxOTYgQEAKPj4gK3BhY2thZ2UgUFZFOjpNYXBw aW5nOjpEaXI7Cj4+ICsKPj4gK3VzZSBzdHJpY3Q7Cj4+ICt1c2Ugd2FybmluZ3M7Cj4+ICsKPj4g K3VzZSBQVkU6OkNsdXN0ZXIgcXcoY2ZzX3JlZ2lzdGVyX2ZpbGUgY2ZzX3JlYWRfZmlsZSBjZnNf bG9ja19maWxlIGNmc193cml0ZV9maWxlKTsKPj4gK3VzZSBQVkU6OklOb3RpZnk7Cj4+ICt1c2Ug UFZFOjpKU09OU2NoZW1hIHF3KGdldF9zdGFuZGFyZF9vcHRpb24gcGFyc2VfcHJvcGVydHlfc3Ry aW5nKTsKPj4gK3VzZSBQVkU6OlNlY3Rpb25Db25maWc7Cj4+ICsKPj4gK3VzZSBiYXNlIHF3KFBW RTo6U2VjdGlvbkNvbmZpZyk7Cj4+ICsKPj4gK215ICRGSUxFTkFNRSA9ICdtYXBwaW5nL2Rpci5j ZmcnOwo+PiArCj4+ICtjZnNfcmVnaXN0ZXJfZmlsZSgkRklMRU5BTUUsCj4+ICsgICAgc3ViIHsg X19QQUNLQUdFX18tPnBhcnNlX2NvbmZpZyhAXyk7IH0sCj4+ICsgICAgc3ViIHsgX19QQUNLQUdF X18tPndyaXRlX2NvbmZpZyhAXyk7IH0pOwo+PiArCj4+ICsKPj4gKyMgc28gd2UgZG9uJ3QgaGF2 ZSB0byByZXBlYXQgdGhlIHR5cGUgZXZlcnkgdGltZQo+PiArc3ViIHBhcnNlX3NlY3Rpb25faGVh ZGVyIHsKPj4gKyAgICBteSAoJGNsYXNzLCAkbGluZSkgPSBAXzsKPj4gKwo+PiArICAgIGlmICgk bGluZSA9fiBtL14oXFMrKVxzKiQvKSB7Cj4+ICsJbXkgJGlkID0gJDE7Cj4+ICsJbXkgJGVycm1z ZyA9IHVuZGVmOyAjIHNldCBpZiB5b3Ugd2FudCB0byBza2lwIHdob2xlIHNlY3Rpb24KPj4gKwll dmFsIHsgUFZFOjpKU09OU2NoZW1hOjpwdmVfdmVyaWZ5X2NvbmZpZ2lkKCRpZCkgfTsKPj4gKwkk ZXJybXNnID0gJEAgaWYgJEA7Cj4+ICsJbXkgJGNvbmZpZyA9IHt9OyAjIHRvIHJldHVybiBhZGRp dGlvbmFsIGF0dHJpYnV0ZXMKPj4gKwlyZXR1cm4gKCdkaXInLCAkaWQsICRlcnJtc2csICRjb25m aWcpOwo+PiArICAgIH0KPj4gKyAgICByZXR1cm4gdW5kZWY7Cj4+ICt9Cj4+ICsKPj4gK3N1YiBm b3JtYXRfc2VjdGlvbl9oZWFkZXIgewo+PiArICAgIG15ICgkY2xhc3MsICR0eXBlLCAkc2VjdGlv bklkLCAkc2NmZywgJGRvbmVfaGFzaCkgPSBAXzsKPj4gKwo+PiArICAgIHJldHVybiAiJHNlY3Rp b25JZFxuIjsKPj4gK30KPj4gKwo+PiArc3ViIHR5cGUgewo+PiArICAgIHJldHVybiAnZGlyJzsK Pj4gK30KPj4gKwo+PiArIyB0ZW1wb3JhcnkgcGF0aCBmb3JtYXQgdGhhdCBhbHNvIGRpc2FsbG93 cyBjb21tYXMgYW5kIGVxdWFsIHNpZ25zCj4+ICsjIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gcHJv cGVydHlfc3RyaW5nIHN1cHBvcnRzIHF1b3RhdGlvbiBvZiBwcm9wZXJ0aWVzCj4+ICtQVkU6OkpT T05TY2hlbWE6OnJlZ2lzdGVyX2Zvcm1hdCgncHZlLXN0b3JhZ2UtcGF0aC1pbi1wcm9wZXJ0eS1z dHJpbmcnLCBcJnZlcmlmeV9wYXRoKTsKPj4gK3N1YiB2ZXJpZnlfcGF0aCB7Cj4+ICsgICAgbXkg KCRwYXRoLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBpZiAoJHBhdGggIX4gbXxeL1teOyw9 XChcKV0rfCkgewo+PiArCXJldHVybiB1bmRlZiBpZiAkbm9lcnI7Cj4+ICsJZGllICJWYWx1ZSBk b2VzIG5vdCBsb29rIGxpa2UgYSB2YWxpZCBhYnNvbHV0ZSBwYXRoLiIKPj4gKwkgICAgLiIgVGhl c2Ugc3ltYm9scyBhcmUgY3VycmVudGx5IG5vdCBhbGxvd2VkIGluIHBhdGg6IDssPSgpKVxuIjsK PiAKPiBzdHJheSAnKScgaW4gdGhlIGVycm9yIG1lc3NhZ2UKPiAKPj4gKyAgICB9Cj4+ICsgICAg cmV0dXJuICRwYXRoOwo+PiArfQo+PiArCj4+ICtteSAkbWFwX2ZtdCA9IHsKPj4gKyAgICBub2Rl ID0+IGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1ub2RlJyksCj4+ICsgICAgcGF0aCA9PiB7Cj4+ ICsJZGVzY3JpcHRpb24gPT4gIkFic29sdXRlIGRpcmVjdG9yeSBwYXRoIHRoYXQgc2hvdWxkIGJl IHNoYXJlZCB3aXRoIHRoZSBndWVzdC4iLAo+PiArCXR5cGUgPT4gJ3N0cmluZycsCj4+ICsJZm9y bWF0ID0+ICdwdmUtc3RvcmFnZS1wYXRoLWluLXByb3BlcnR5LXN0cmluZycsCj4+ICsgICAgfSwK Pj4gKyAgICAnYW5ub3VuY2Utc3VibW91bnRzJyA9PiB7Cj4+ICsJdHlwZSA9PiAnYm9vbGVhbics Cj4+ICsJZGVzY3JpcHRpb24gPT4gIkFubm91bmNlIHRoYXQgdGhlIGRpcmVjdG9yeSBjb250YWlu cyBvdGhlciBtb3VudGVkIGZpbGUgc3lzdGVtcy4iCj4+ICsJICAgIC4iIElmIHRoaXMgaXMgbm90 IHNldCBhbmQgbXVsdGlwbGUgZmlsZSBzeXN0ZW1zIGFyZSBtb3VudGVkLCB0aGUgZ3Vlc3QgbWF5 Igo+PiArCSAgICAuIiBlbmNvdW50ZXIgZHVwbGljYXRlcyBkdWUgdG8gZmlsZSBzeXN0ZW0gc3Bl Y2lmaWMgaW5vZGUgSURzLiIsCj4+ICsJb3B0aW9uYWwgPT4gMSwKPj4gKwlkZWZhdWx0ID0+IDEs Cj4+ICsgICAgfSwKPj4gK307Cj4+ICsKPj4gK215ICRkZWZhdWx0RGF0YSA9IHsKPj4gKyAgICBw cm9wZXJ0eUxpc3QgPT4gewo+PiArCWlkID0+IHsKPj4gKwkgICAgdHlwZSA9PiAnc3RyaW5nJywK Pj4gKwkgICAgZGVzY3JpcHRpb24gPT4gIlRoZSBJRCBvZiB0aGUgZGlyZWN0b3J5IG1hcHBpbmci LAo+PiArCSAgICBmb3JtYXQgPT4gJ3B2ZS1jb25maWdpZCcsCj4+ICsJfSwKPj4gKwlkZXNjcmlw dGlvbiA9PiB7Cj4+ICsJICAgIHR5cGUgPT4gJ3N0cmluZycsCj4+ICsJICAgIGRlc2NyaXB0aW9u ID0+ICJEZXNjcmlwdGlvbiBvZiB0aGUgZGlyZWN0b3J5IG1hcHBpbmciLAo+PiArCSAgICBvcHRp b25hbCA9PiAxLAo+PiArCSAgICBtYXhMZW5ndGggPT4gNDA5NiwKPj4gKwl9LAo+PiArCW1hcCA9 PiB7Cj4+ICsJICAgIHR5cGUgPT4gJ2FycmF5JywKPj4gKwkgICAgZGVzY3JpcHRpb24gPT4gJ0Eg bGlzdCBvZiBtYXBzIGZvciB0aGUgY2x1c3RlciBub2Rlcy4nLAo+PiArCSAgICBvcHRpb25hbCA9 PiAxLAo+PiArCSAgICBpdGVtcyA9PiB7Cj4+ICsJCXR5cGUgPT4gJ3N0cmluZycsCj4+ICsJCWZv cm1hdCA9PiAkbWFwX2ZtdCwKPj4gKwkgICAgfSwKPj4gKwl9LAo+PiArICAgIH0sCj4+ICt9Owo+ PiArCj4+ICtzdWIgcHJpdmF0ZSB7Cj4+ICsgICAgcmV0dXJuICRkZWZhdWx0RGF0YTsKPj4gK30K Pj4gKwo+PiArc3ViIG9wdGlvbnMgewo+PiArICAgIHJldHVybiB7Cj4+ICsJZGVzY3JpcHRpb24g PT4geyBvcHRpb25hbCA9PiAxIH0sCj4+ICsJbWFwID0+IHt9LAo+PiArICAgIH07Cj4+ICt9Cj4+ ICsKPj4gK3N1YiBhc3NlcnRfdmFsaWQgewo+IAo+IHRoaXMgaXMgY2FsbGVkIGJlbG93IGluIGFz c2VydF92YWxpZF9tYXBfbGlzdCB3aXRob3V0IGZpbHRlcmluZyBlbnRyaWVzCj4gc28gdGhhdCBq dXN0IHRob3NlIGZvciB0aGUgY3VycmVudCBub2RlIGFyZSBjb25zaWRlcmVkLi4KPiAKPj4gKyAg ICBteSAoJGRpcl9jZmcpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkcGF0aCA9ICRkaXJfY2ZnLT57 cGF0aH07Cj4+ICsKPj4gKyAgICB2ZXJpZnlfcGF0aCgkcGF0aCk7Cj4+ICsKPj4gKyAgICBpZiAo ISAtZSAkcGF0aCkgewo+PiArCWRpZSAiUGF0aCAkcGF0aCBkb2VzIG5vdCBleGlzdFxuIjsKPj4g KyAgICB9IGVsc2lmICghIC1kICRwYXRoKSB7Cj4+ICsJZGllICJQYXRoICRwYXRoIGV4aXN0cywg YnV0IGlzIG5vdCBhIGRpcmVjdG9yeVxuIjsKPj4gKyAgICB9Cj4gCj4gc28gdGhlc2UgY2hlY2tz IGRvbid0IG1ha2Ugc2Vuc2UuLiBpZiB0aGUgZGlyZWN0b3J5IGhhcyB0byBleGlzdCBvbiBhbGwK PiBub2RlcywgdGhlbiB0aGUgcGVyLW5vZGUgbWFwcGluZ3MgY291bGQganVzdCBiZSBkcm9wcGVk IGVudGlyZWx5IDspCj4gCj4+ICsKPj4gKyAgICByZXR1cm4gMTsKPj4gK307Cj4+ICsKPj4gK3N1 YiBhc3NlcnRfdmFsaWRfbWFwX2xpc3Qgewo+PiArICAgIG15ICgkbWFwX2xpc3QpID0gQF87Cj4+ ICsKPj4gKyAgICBteSAlY291bnQ7Cj4+ICsgICAgZm9yIG15ICRtYXAgKEAkbWFwX2xpc3QpIHsK Pj4gKwlteSAkZW50cnkgPSBwYXJzZV9wcm9wZXJ0eV9zdHJpbmcoJG1hcF9mbXQsICRtYXApOwo+ PiArCWFzc2VydF92YWxpZCgkZW50cnkpOwo+PiArCSRjb3VudHskZW50cnktPntub2RlfX0rKzsK Pj4gKyAgICB9Cj4+ICsgICAgZm9yIG15ICRub2RlIChrZXlzICVjb3VudCkgewo+PiArCWlmICgk Y291bnR7JG5vZGV9ID4gMSkgewo+PiArCSAgICBkaWUgIk5vZGUgJyRub2RlJyBpcyBzcGVjaWZp ZWQgJGNvdW50eyRub2RlfSB0aW1lcy5cbiI7Cj4+ICsJfQo+PiArICAgIH0KPj4gK30KPj4gKwo+ PiArc3ViIGNvbmZpZyB7Cj4+ICsgICAgcmV0dXJuIGNmc19yZWFkX2ZpbGUoJEZJTEVOQU1FKTsK Pj4gK30KPj4gKwo+PiArc3ViIGxvY2tfZGlyX2NvbmZpZyB7Cj4+ICsgICAgbXkgKCRjb2RlLCAk ZXJybXNnKSA9IEBfOwo+PiArCj4+ICsgICAgY2ZzX2xvY2tfZmlsZSgkRklMRU5BTUUsIHVuZGVm LCAkY29kZSk7Cj4+ICsgICAgaWYgKG15ICRlcnIgPSAkQCkgewo+PiArCSRlcnJtc2cgPyBkaWUg IiRlcnJtc2c6ICRlcnIiIDogZGllICRlcnI7Cj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICtzdWIg d3JpdGVfZGlyX2NvbmZpZyB7Cj4+ICsgICAgbXkgKCRjZmcpID0gQF87Cj4+ICsKPj4gKyAgICBj ZnNfd3JpdGVfZmlsZSgkRklMRU5BTUUsICRjZmcpOwo+PiArfQo+PiArCj4+ICtzdWIgZmluZF9v bl9jdXJyZW50X25vZGUgewo+PiArICAgIG15ICgkaWQpID0gQF87Cj4+ICsKPj4gKyAgICBteSAk Y2ZnID0gY29uZmlnKCk7Cj4+ICsgICAgbXkgJG5vZGUgPSBQVkU6OklOb3RpZnk6Om5vZGVuYW1l KCk7Cj4+ICsKPj4gKyAgICBteSAkbm9kZV9tYXBwaW5nID0gZ2V0X25vZGVfbWFwcGluZygkY2Zn LCAkaWQsICRub2RlKTsKPj4gKyAgICBpZiAoQHskbm9kZV9tYXBwaW5nfSA+IDEpIHsKPj4gKwlk aWUgIk1vcmUgdGhhbiB0aGFuIG9uZSBkaXJlY3RvcnkgbWFwcGluZyBmb3Igbm9kZSAkbm9kZS5c biI7Cj4+ICsgICAgfQo+PiArICAgIHJldHVybiAkbm9kZV9tYXBwaW5nLT5bMF07Cj4+ICt9Cj4+ ICsKPj4gK3N1YiBnZXRfbm9kZV9tYXBwaW5nIHsKPj4gKyAgICBteSAoJGNmZywgJGlkLCAkbm9k ZW5hbWUpID0gQF87Cj4+ICsKPj4gKyAgICByZXR1cm4gdW5kZWYgaWYgIWRlZmluZWQoJGNmZy0+ e2lkc30tPnskaWR9KTsKPj4gKwo+PiArICAgIG15ICRyZXMgPSBbXTsKPj4gKyAgICBteSAkbWFw cGluZ19saXN0ID0gJGNmZy0+e2lkc30tPnskaWR9LT57bWFwfTsKPj4gKyAgICBmb3IgbXkgJG1h cCAoQHskbWFwcGluZ19saXN0fSkgewo+PiArCW15ICRlbnRyeSA9IGV2YWwgeyBwYXJzZV9wcm9w ZXJ0eV9zdHJpbmcoJG1hcF9mbXQsICRtYXApIH07Cj4+ICsJd2FybiAkQCBpZiAkQDsKPj4gKwlp ZiAoJGVudHJ5ICYmICRlbnRyeS0+e25vZGV9IGVxICRub2RlbmFtZSkgewo+PiArCSAgICBwdXNo ICRyZXMtPkAqLCAkZW50cnk7Cj4+ICsJfQo+PiArICAgIH0KPj4gKyAgICByZXR1cm4gJHJlczsK Pj4gK30KPj4gKwo+PiArUFZFOjpNYXBwaW5nOjpEaXItPnJlZ2lzdGVyKCk7Cj4+ICtQVkU6Ok1h cHBpbmc6OkRpci0+aW5pdCgpOwo+PiArCj4+ICsxOwo+PiAtLSAKPj4gMi4zOS41Cj4+Cj4+Cj4+ Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IHB2 ZS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+IGh0 dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZl bAo+Pgo+Pgo+Pgo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3Rp bmZvL3B2ZS1kZXZlbAo+IAo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m by9wdmUtZGV2ZWwK