From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 9D5AF1FF15C for ; Fri, 14 Nov 2025 10:16:00 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 094B0B463; Fri, 14 Nov 2025 10:16:55 +0100 (CET) Message-ID: Date: Fri, 14 Nov 2025 10:16:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= , pve-devel@lists.proxmox.com References: <20250814112659.2584520-1-d.csapak@proxmox.com> <176310914957.64802.13109309341568645230@yuna.proxmox.com> Content-Language: en-US From: Dominik Csapak In-Reply-To: <176310914957.64802.13109309341568645230@yuna.proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763111753910 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.028 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. 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. [metricserver.pm] Subject: Re: [pve-devel] [PATCH manager v2] api: implement node-independent bulk actions X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" dGhhbmtzIGZvciB0aGUgcmV2aWV3IQoKanVzdCBhIGZldyBxdWVzdGlvbnMgaW5saW5lCgpPbiAx MS8xNC8yNSA5OjMyIEFNLCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+IFF1b3RpbmcgRG9t aW5payBDc2FwYWsgKDIwMjUtMDgtMTQgMTM6MjY6NTkpCltzbmlwXQo+PiArc3ViIGNyZWF0ZV9j bGllbnQgewo+PiArICAgIG15ICgkYXV0aHVzZXIsICRyZXF1ZXN0X3RpbWVvdXQpID0gQF87Cj4+ ICsgICAgbXkgKCR1c2VyLCB1bmRlZikgPSBQVkU6OkFjY2Vzc0NvbnRyb2w6OnNwbGl0X3Rva2Vu aWQoJGF1dGh1c2VyLCAxKTsKPj4gKwo+PiArICAgICMgVE9ETzogSG93IHRvIGhhbmRsZSBUb2tl bnM/Cj4gCj4gbm90IGxpa2UgYmVsb3cgZm9yIHN1cmUgOykgd2UnZCBuZWVkIHRvIG1ha2UgaXQg cXVlcmlhYmxlIHVzaW5nIHRoZQo+IFJQQ0Vudmlyb25tZW50IChhbmQgc3RvcmUgaXQgdGhlcmUp IEkgZ3Vlc3M/IG1heWJlIG9wdC1pbiBzbyB0aGUgc3RvcmluZyBvbmx5Cj4gaGFwcGVucyBmb3Ig Y2VydGFpbiBBUEkgaGFuZGxlcnMgKGUuZy4sIHRoZXNlIG9uZXMgaGVyZSBmb3IgYSBzdGFydCk/ Cj4gCj4gdGhpcyBiYXNpY2FsbHkgZXNjYWxhdGVzIGZyb20gdGhlIHRva2VuIHRvIGEgdGlja2V0 IG9mIHRoZSB1c2VyLCB3aGljaCBpcyBhCj4gbm9nbyBldmVuIGlmIHlvdSBkdXBsaWNhdGUgdGhl IGN1cnJlbnQgc2V0IG9mIHByaXZpbGVnZSBjaGVja3MgaGVyZSwgYXMgdGhhdCBpcwo+IGp1c3Qg d2FpdGluZyB0byBnZXQgb3V0IG9mIHN5bmMKCkp1c3QgdG8gY2xhcmlmeTogd2hhdCdzIHRoZSB3 b3JzdCB0aGF0IGNvdWxkIGhhcHBlbiB3aXRoIHRoaXM/Cgp0aGUgQVBJIGNhbGwgY2hlY2tzIGlm IHRoZSB0b2tlbiBoYXMgdGhlIGNvcnJlY3QgcGVybWlzc2lvbnMgZm9yIGFsbCAKcmVzb3VyY2Vz LCBhbmQgdGhlIHVzZXIgY2FuJ3QgaGF2ZSBsZXNzIHBlcm1pc3Npb25zIGF0IHRoYXQgcG9pbnQu ClNvICd1cGdyYWRpbmcnIHRoZSB0b2tlbiB0byBhIGZ1bGwgdXNlciB0aWNrZXQgZm9yIHRoZSBj b250ZXh0Cm9mIHRoZXNlIGNoYW5nZXMgZG9lcyBub3QgaW5oZXJlbnRseSBicmVhayBhbnl0aGlu Zz8KKEV4Y2VwdCBJJ20gbWlzc2luZyBzb21ldGhpbmc/KQoKVGhlcmUgaXMgYSBUT0NUT1UgaXNz dWUgb2YgY291cnNlLCBidXQgSU1ITyBpdCB3b3VsZCBub3QgdGhhdCBiaWcKb2YgYSBkZWFsIHNp bmNlIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHRoZSBwZXJtaXNzaW9ucyBjaGFuZ2UKZHVyaW5n IHRoZSBydW5uaW5nIHRhc2ssIGFuZCBvbmUgY291bGQgYXJndWUgdGhhdCB0aGUgdG9rZW4KaGFk IHBlcm1pc3Npb24gdG8gZG8gdGhlc2UgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRoZSBhcGkgY2Fs bCwKc28gaXQgc2hvdWxkIGJlIGFibGUgdG8gZmluaXNoIGl0LgoKSSBtb2RlbGVkIHRoaXMgYWZ0 ZXIgd2UgZG8gdGhlIG1ldHJpY3MgZXhwb3J0IGFwaSBjYWxsCmluIFBWRS9BUEkyL0NsdXN0ZXIv TWV0cmljU2VydmVyLnBtIHdoZXJlIHdlIGRvIHRoZSBzYW1lCihvciBzaW1pbGFyKSwgc28gd2Ug cHJvYmFibHkgc2hvdWxkIGNoYW5nZSBpdCB0aGVyZSBhcyB3ZWxsIHRoZW4/CgpBbnl3YXksIEkn bGwgc2VlIHRoYXQgd2UgZXh0ZW5kIHRoZSBycGNlbnYgdG8gYmUgYWJsZSB0byBkbyB0aGF0LApi dXQgaG93IHNob3VsZCB3ZSBtYXJrIHRoZSBhcGkgY2FsbD8gaW4gYSBzcGVjaWFsIHdheSBsaWtl IHdlIGRvCndpdGggJ3Byb3RlY3RlZCcgPyAoc28gZS5nLiAnInNhdmUtdG9rZW4taW5mbyIgPT4g MSwnIGluIHRoZSBhcGkKY2FsbCAod2l0aCBhIGJldHRlciBuYW1lIG9mYykpCgoKPiAKPj4gKyAg ICBteSAkdGlja2V0ID0gUFZFOjpBY2Nlc3NDb250cm9sOjphc3NlbWJsZV90aWNrZXQoJHVzZXIg fHwgJGF1dGh1c2VyKTsKPj4gKyAgICBteSAkY3NyZl90b2tlbiA9IFBWRTo6QWNjZXNzQ29udHJv bDo6YXNzZW1ibGVfY3NyZl9wcmV2ZW50aW9uX3Rva2VuKCR1c2VyIHx8ICRhdXRodXNlcik7Cj4+ ICsKPj4gKyAgICBteSAkbm9kZSA9IFBWRTo6SU5vdGlmeTo6bm9kZW5hbWUoKTsKPj4gKyAgICBt eSAkZmluZ2VycHJpbnQgPSBQVkU6OkNsdXN0ZXI6OmdldF9ub2RlX2ZpbmdlcnByaW50KCRub2Rl KTsKPj4gKwo+PiArICAgIG15ICRjb25uX2FyZ3MgPSB7Cj4+ICsgICAgICAgIHByb3RvY29sID0+ ICdodHRwcycsCj4+ICsgICAgICAgIGhvc3QgPT4gJ2xvY2FsaG9zdCcsICMgYWx3YXlzIGNhbGwg dGhlIGFwaSBsb2NhbGx5LCBsZXQgcHZlcHJveHkgaGFuZGxlIHRoZSBwcm94eWluZwo+PiArICAg ICAgICBwb3J0ID0+IDgwMDYsCj4+ICsgICAgICAgIHRpY2tldCA9PiAkdGlja2V0LAo+PiArICAg ICAgICB0aW1lb3V0ID0+ICRyZXF1ZXN0X3RpbWVvdXQgLy8gMjUsICMgZGVmYXVsdCBzbGlnaHRs eSBzaG9ydGVyIHRoYW4gdGhlIHByb3h5LT5kYWVtb24gdGltZW91dAo+PiArICAgICAgICBjYWNo ZWRfZmluZ2VycHJpbnRzID0+IHsKPj4gKyAgICAgICAgICAgICRmaW5nZXJwcmludCA9PiAxLAo+ PiArICAgICAgICB9LAo+PiArICAgIH07Cj4+ICsKPj4gKyAgICBteSAkYXBpX2NsaWVudCA9IFBW RTo6QVBJQ2xpZW50OjpMV1AtPm5ldygkY29ubl9hcmdzLT4lKik7Cj4+ICsgICAgaWYgKGRlZmlu ZWQoJGNzcmZfdG9rZW4pKSB7Cj4+ICsgICAgICAgICRhcGlfY2xpZW50LT51cGRhdGVfY3NyZnRv a2VuKCRjc3JmX3Rva2VuKTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByZXR1cm4gJGFwaV9jbGll bnQ7Cj4gCj4gdGhpcyBjbGllbnQgZG9lc24ndCBhdXRvbWF0aWNhbGx5IHJlZnJlc2ggdGhlIHRp Y2tldCBiZWZvcmUgaXQgZXhwaXJlcywgc28KPiBiaWdnZXIgc2V0cyBvZiBidWxrIGFjdGlvbnMg dGhhdCB0YWtlIG1vcmUgdGhhbiAyaCB3aWxsIGFsd2F5cyBmYWlsLi4KPiAKCnRydWUsIHNvIGkn ZCBhYnN0cmFjdCBhd2F5IGEgJ21ha2VfcmVxdWVzdCcgZnVuY3Rpb24gdGhhdCBjaGVja3MKaWYg d2Ugc2hvdWxkIHJlbmV3IHRoZSB0aWNrZXQgYW5kIGFsd2F5cyB1c2UgdGhhdD8KCj4+ICt9Cj4+ ICsKPj4gKyMgc3RhcnRzIGFuZCBhd2FpdHMgYSB0YXNrIGZvciBlYWNoIGd1ZXN0IGdpdmVuIHZp YSAkc3RhcnRsaXN0Lgo+PiArIwo+PiArIyB0YWtlcyBhIHZtIGxpc3QgaW4gdGhlIGZvcm0gb2YK Pj4gKyMgewo+PiArIyAgICAgMCA9PiB7Cj4+ICsjICAgICAgICAgMTAwID0+IHsgLi4gZ3Vlc3Qg aW5mbyAuLn0sCj4+ICsjICAgICAgICAgMTAxID0+IHsgLi4gZ3Vlc3QgaW5mbyAuLn0sCj4+ICsj ICAgICB9LAo+PiArIyAgICAgMSA9PiB7Cj4+ICsjICAgICAgICAgMTAyID0+IHsgLi4gZ3Vlc3Qg aW5mbyAuLn0sCj4+ICsjICAgICAgICAgMTAzID0+IHsgLi4gZ3Vlc3QgaW5mbyAuLn0sCj4+ICsj ICAgICB9LAo+PiArIyB9Cj4+ICsjCj4+ICsjIG1heF93b3JrZXJzOiBob3cgbWFueSBwYXJhbGxl bCB0YXNrcyBzaG91bGQgYmUgc3RhcnRlZC4KPj4gKyMgc3RhcnRfdGFzazogYSBzdWIgdGhhdCBy ZXR1cm5zIGVpdGVyIGEgdXBpZCBvciAxICh1bmRlZiBtZWFucyBmYWlsdXJlKQo+PiArIyBjaGVj a190YXNrOiBpZiBzdGFydF90YXNrIHJldHVybmVkIGEgdXBpZCwgd2lsbCB3YWl0IGZvciB0aGF0 IHRvIGZpbmlzaCBhbmQKPj4gKyMgICAgY2FsbCBjaGVja190YXNrIHdpdGggdGhlIHJlc3VsdGlu ZyB0YXNrIHN0YXR1cwo+PiArc3ViIGhhbmRsZV90YXNrX2ZvcmVhY2hfZ3Vlc3Qgewo+PiArICAg IG15ICgkc3RhcnRsaXN0LCAkbWF4X3dvcmtlcnMsICRzdGFydF90YXNrLCAkY2hlY2tfdGFzaykg PSBAXzsKPj4gKwo+PiArICAgIG15ICRycGNlbnYgPSBQVkU6OlJQQ0Vudmlyb25tZW50OjpnZXQo KTsKPj4gKyAgICBteSAkYXV0aHVzZXIgPSAkcnBjZW52LT5nZXRfdXNlcigpOwo+PiArICAgIG15 ICRhcGlfY2xpZW50ID0gY3JlYXRlX2NsaWVudCgkYXV0aHVzZXIpOwo+PiArCj4+ICsgICAgbXkg JGZhaWxlZCA9IFtdOwo+PiArICAgIGZvciBteSAkb3JkZXIgKHNvcnQgeyAkYSA8PT4gJGIgfSBr ZXlzICRzdGFydGxpc3QtPiUqKSB7Cj4+ICsgICAgICAgIG15ICR2bWxpc3QgPSAkc3RhcnRsaXN0 LT57JG9yZGVyfTsKPj4gKyAgICAgICAgbXkgJHdvcmtlcnMgPSB7fTsKPj4gKwo+PiArICAgICAg ICBmb3IgbXkgJHZtaWQgKHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICR2bWxpc3QtPiUqKSB7Cj4+ ICsKPj4gKyAgICAgICAgICAgICMgd2FpdCB1bnRpbCBhdCBsZWFzdCBvbmUgc2xvdCBpcyBmcmVl Cj4+ICsgICAgICAgICAgICB3aGlsZSAoc2NhbGFyKGtleXMoJHdvcmtlcnMtPiUqKSkgPj0gJG1h eF93b3JrZXJzKSB7Cj4+ICsgICAgICAgICAgICAgICAgZm9yIG15ICR1cGlkIChrZXlzKCR3b3Jr ZXJzLT4lKikpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgbXkgJHdvcmtlciA9ICR3b3JrZXJz LT57JHVwaWR9Owo+PiArICAgICAgICAgICAgICAgICAgICBteSAkbm9kZSA9ICR3b3JrZXItPntn dWVzdH0tPntub2RlfTsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICBteSAkdGFzayA9IGV2 YWwgeyAkYXBpX2NsaWVudC0+Z2V0KCIvbm9kZXMvJG5vZGUvdGFza3MvJHVwaWQvc3RhdHVzIikg fTsKPiAKPiB0aGlzIGNvdWxkIGVhc2lseSBmYWlsIGZvciByZWFzb25zIG90aGVyIHRoYW4gdGhl IHRhc2sgaGF2aW5nIGV4aXRlZD8gc2hvdWxkIHdlCj4gbWF5YmUgcmV0cnkgYSBmZXcgdGltZXMg dG8gYXZvaWQgYWNjaWRlbnRzLCBiZWZvcmUgZ2l2aW5nIHVwPwo+IAoKeWVwLCBpJ2QgaW5jbHVk ZSBzdWNoIGZ1bmN0aW9uYWxpdHkgKG9wdC1pbiBqdXN0IGZvciB0aGVzZSBjYWxscykgaW4gdGhl IAonbWFrZV9yZXF1ZXN0JyBhYnN0cmFjdGlvbj8KCj4+ICsgICAgICAgICAgICAgICAgICAgIGlm IChteSAkZXJyID0gJEApIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggJGZhaWxl ZC0+QCosICR3b3JrZXItPnt2bWlkfTsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgICAg JGNoZWNrX3Rhc2stPigkYXBpX2NsaWVudCwgJHdvcmtlci0+e3ZtaWR9LCAkd29ya2VyLT57Z3Vl c3R9LCAxLCB1bmRlZik7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAk d29ya2Vycy0+eyR1cGlkfTsKPj4gKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHRhc2st PntzdGF0dXN9IG5lICdydW5uaW5nJykgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgbXkg JGlzX2Vycm9yID0gUFZFOjpUb29sczo6dXBpZF9zdGF0dXNfaXNfZXJyb3IoJHRhc2stPntleGl0 c3RhdHVzfSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBwdXNoICRmYWlsZWQtPkAqLCAk d29ya2VyLT57dm1pZH0gaWYgJGlzX2Vycm9yOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAkY2hlY2tfdGFzay0+KAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcGlf Y2xpZW50LCAkd29ya2VyLT57dm1pZH0sICR3b3JrZXItPntndWVzdH0sICRpc19lcnJvciwgJHRh c2ssCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICApOwo+PiArCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICBkZWxldGUgJHdvcmtlcnMtPnskdXBpZH07Cj4+ICsgICAgICAgICAgICAgICAg ICAgIH0KPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgc2xlZXAoMSk7 ICMgSG93IG11Y2g/Cj4+ICsgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgIG15ICRn dWVzdCA9ICR2bWxpc3QtPnskdm1pZH07Cj4+ICsgICAgICAgICAgICBteSAkdXBpZCA9IGV2YWwg eyAkc3RhcnRfdGFzay0+KCRhcGlfY2xpZW50LCAkdm1pZCwgJGd1ZXN0KSB9Owo+PiArICAgICAg ICAgICAgd2FybiAkQCBpZiAkQDsKPiAKPiBBOiBoZXJlIHdlIHVzZSB3YXJuIChzZWUgZnVydGhl ciBzaW1pbGFyIG5pdHMgYmVsb3cpCgp0cnVlLCBpJ2xsIHVzZSBsb2dfd2FybiBmb3IgdGhvc2UK Cj4gCgpbc25pcF0KPj4gKyAgICBjb2RlID0+IHN1YiB7Cj4+ICsgICAgICAgIG15ICgkcGFyYW0p ID0gQF87Cj4+ICsKPj4gKyAgICAgICAgbXkgJHJwY2VudiA9IFBWRTo6UlBDRW52aXJvbm1lbnQ6 OmdldCgpOwo+PiArICAgICAgICBteSAkYXV0aHVzZXIgPSAkcnBjZW52LT5nZXRfdXNlcigpOwo+ PiArCj4+ICsgICAgICAgIG15ICgkdm1saXN0LCAkdm1saXN0X3N0cmluZykgPSBleHRyYWN0X3Zt bGlzdCgkcGFyYW0pOwo+PiArCj4+ICsgICAgICAgIGNoZWNrX2d1ZXN0X3Blcm1pc3Npb25zKCRy cGNlbnYsICRhdXRodXNlciwgJHZtbGlzdCwgWydWTS5Qb3dlck1nbXQnXSk7Cj4+ICsKPj4gKyAg ICAgICAgaWYgKCRwYXJhbS0+eyd0by1kaXNrJ30pIHsKPj4gKyAgICAgICAgICAgIGNoZWNrX2d1 ZXN0X3Blcm1pc3Npb25zKCRycGNlbnYsICRhdXRodXNlciwgJHZtbGlzdCwgWydWTS5Db25maWcu RGlzayddKTsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIGlmIChteSAkc3RhdGVzdG9y YWdlID0gJHBhcmFtLT57c3RhdGVzdG9yYWdlfSkgewo+PiArICAgICAgICAgICAgJHJwY2Vudi0+ Y2hlY2soJGF1dGh1c2VyLCAiL3N0b3JhZ2UvJHN0YXRlc3RvcmFnZSIsIFsnRGF0YXN0b3JlLkFs bG9jYXRlU3BhY2UnXSk7Cj4+ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAjIHN0 b3JhZ2UgYWNjZXNzIG11c3QgYmUgZG9uZSBpbiBzdGFydCB0YXNrCj4+ICsgICAgICAgIH0KPiAK PiB0aGlzIGlmIHNob3VsZCBiZSBuZXN0ZWQgaW4gdGhlIG90aGVyIGlmPwoKd2UgY291bGQsIGJ1 dCBzaW5jZSAnc3RhdGVzdG9yYWdlJyByZXF1aXJlcyAndG8tZGlzaycgaW4gdGhlIGFwaSBhbnl3 YXksCnNvIGNoYW5naW5nIHRoaXMgd291bGQganVzdCBpbmNyZWFzZSBpbmRlbnRhdGlvbj8KCmkg Y291bGQgcHV0IGl0IGludCBoZSBpZiwgYnV0IHRoZSBhcGkgYWxyZWFkeSBkb2VzIHRoYXQgZm9y IHVzCgo+IAo+PiArCj4+ICsgICAgICAgIG15ICRjb2RlID0gc3ViIHsKPj4gKyAgICAgICAgICAg IG15ICRzdGFydGxpc3QgPQo+PiArICAgICAgICAgICAgICAgIFBWRTo6QVBJMjo6Tm9kZXM6Ok5v ZGVpbmZvOjpnZXRfc3RhcnRfc3RvcF9saXN0KHVuZGVmLCB1bmRlZiwgJHZtbGlzdF9zdHJpbmcp Owo+PiArCj4+ICsgICAgICAgICAgICBwcmludF9zdGFydF9hY3Rpb24oJHZtbGlzdCwgIlN1c3Bl bmRpbmciKTsKPj4gKwo+PiArICAgICAgICAgICAgIyByZXZlcnNlIG9yZGVyIGZvciBzdXNwZW5k Cj4+ICsgICAgICAgICAgICBmb3IgbXkgJG9yZGVyIChrZXlzICRzdGFydGxpc3QtPiUqKSB7Cj4+ ICsgICAgICAgICAgICAgICAgbXkgJGxpc3QgPSBkZWxldGUgJHN0YXJ0bGlzdC0+eyRvcmRlcn07 Cj4+ICsgICAgICAgICAgICAgICAgJG9yZGVyID0gJG9yZGVyICogLTE7Cj4+ICsgICAgICAgICAg ICAgICAgJHN0YXJ0bGlzdC0+eyRvcmRlcn0gPSAkbGlzdDsKPj4gKyAgICAgICAgICAgIH0KPj4g Kwo+PiArICAgICAgICAgICAgbXkgJHN0YXJ0X3Rhc2sgPSBzdWIgewo+PiArICAgICAgICAgICAg ICAgIG15ICgkYXBpX2NsaWVudCwgJHZtaWQsICRndWVzdCkgPSBAXzsKPj4gKyAgICAgICAgICAg ICAgICBteSAkbm9kZSA9ICRndWVzdC0+e25vZGV9Owo+PiArCj4+ICsgICAgICAgICAgICAgICAg aWYgKCRndWVzdC0+e3R5cGV9IG5lICdxZW11Jykgewo+PiArICAgICAgICAgICAgICAgICAgICBs b2dfd2Fybigic2tpcHBpbmcgJHZtaWQsIG9ubHkgVk1zIGNhbiBiZSBzdXNwZW5kZWQiKTsKPj4g KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Cj4+ICsgICAgICAgICAgICAgICAgfQo+PiAr Cj4+ICsgICAgICAgICAgICAgICAgaWYgKCEkcGFyYW0tPntzdGF0ZXN0b3JhZ2V9KSB7Cj4gCj4g dGhpcyBzaG91bGQgYWdhaW4gYmUgbmVzdGVkIGluc2lkZSBhIGNoZWNrIGZvciB0by1kaXNrIGJl aW5nIHNldAoKYWdhaW4sIHNhbWUgYXJndW1lbnQgYXMgYWJvdmUKPiAKPj4gKyAgICAgICAgICAg ICAgICAgICAgbXkgJGNvbmYgPSBQVkU6OlFlbXVDb25maWctPmxvYWRfY29uZmlnKCR2bWlkLCAk bm9kZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgIG15ICRzdG9yZWNmZyA9IFBWRTo6U3RvcmFn ZTo6Y29uZmlnKCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgIG15ICRzdGF0ZXN0b3JhZ2UgPSBQ VkU6OlFlbXVTZXJ2ZXI6OmZpbmRfdm1zdGF0ZV9zdG9yYWdlKCRjb25mLCAkc3RvcmVjZmcpOwo+ IAo+IHRoaXMgZG9lcyBub3QgZXhpc3QsIGl0J3MgaW4gUWVtdUNvbmZpZwoKYWggeWVzLCB0aGlz IHdhcyBtb3ZlZCBiZXR3ZWVlbiBteSB2MSBhbmQgdjIgSUlSQyBhbmQgaSBmb3Jnb3QgdG8gY2hh bmdlIGl0Cgo+IAo+PiArICAgICAgICAgICAgICAgICAgICAkcnBjZW52LT5jaGVjaygKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICRhdXRodXNlciwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICIvc3RvcmFnZS8kc3RhdGVzdG9yYWdlIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg IFsnRGF0YXN0b3JlLkFsbG9jYXRlU3BhY2UnXSwKPj4gKyAgICAgICAgICAgICAgICAgICAgKTsK Pj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICBteSAkc3RhdHVz ID0KPj4gKyAgICAgICAgICAgICAgICAgICAgZXZhbCB7ICRhcGlfY2xpZW50LT5nZXQoIi9ub2Rl cy8kbm9kZS9xZW11LyR2bWlkL3N0YXR1cy9jdXJyZW50IikgfTsKPj4gKyAgICAgICAgICAgICAg ICBpZiAoZGVmaW5lZCgkc3RhdHVzKSAmJiAkc3RhdHVzLT57c3RhdHVzfSBuZSAncnVubmluZycp IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJTa2lwcGluZyBWTSAkdm1p ZCwgbm90IHJ1bm5pbmcuXG4iOwo+PiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKPj4g KyAgICAgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICBteSAkcGFyYW1zID0g e307Cj4+ICsgICAgICAgICAgICAgICAgJHBhcmFtcy0+eyd0b2Rpc2snfSA9ICRwYXJhbS0+eyd0 by1kaXNrJ30gLy8gMDsKPj4gKyAgICAgICAgICAgICAgICAkcGFyYW1zLT57c3RhdGVzdG9yYWdl fSA9ICRwYXJhbS0+e3N0YXRlc3RvcmFnZX0KPj4gKyAgICAgICAgICAgICAgICAgICAgaWYgZGVm aW5lZCgkcGFyYW0tPntzdGF0ZXN0b3JhZ2V9KTsKPiAKPiBzdGF0ZXN0b3JhZ2Ugb25seSBtYWtl cyBzZW5zZSBpZiB5b3Ugc2V0IHRvLWRpc2ssIHNvIGl0IHNob3VsZCBiZSBvcmRlcmVkIGxpa2UK PiB0aGF0IGhlcmUgYXMgd2VsbC4uCgphZ2FpbiBzYW1lIGFyZ3VtZW50IGFzIGFib3ZlCgppZiB5 b3UgaW5zaXN0LCBpJ2xsIGNoYW5nZSBpdCwgYnV0IElNSE8gaXQganVzdCBpbmNyZWFzZXMgdGhl IAppbmRlbnRhdGlvbiBsZXZlbCBmb3Igbm90IG11Y2ggZ2FpbgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZl LWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJp bi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=