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 CD0CE1FF183 for ; Wed, 5 Nov 2025 15:13:39 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 90CE02644C; Wed, 5 Nov 2025 15:14:11 +0100 (CET) From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= To: pve-devel@lists.proxmox.com Date: Wed, 5 Nov 2025 15:13:12 +0100 Message-ID: <20251105141335.1230493-11-f.gruenbichler@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251105141335.1230493-1-f.gruenbichler@proxmox.com> References: <20251105141335.1230493-1-f.gruenbichler@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1762352008496 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.102 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 POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH proxmox-datacenter-manager 3/4] api: pve: add vncwebsocket endpoint 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" aW5zdGVhZCBvZiBkaXJlY3RseSBmb3J3YXJkaW5nIHRvIGEgcnVubmluZyB0ZXJtcHJveHkgaW5z dGFuY2UsIFBETSBuZWVkcyB0bwphdXRoZW50aWNhdGUgdGhlIGluY29taW5nIGNvbm5lY3Rpb24s IGNyZWF0ZSBhIG5ldyBWTkMgdGlja2V0IChhbmQgc3Bhd24gYQp0ZXJtcHJveHkgaW5zdGFuY2Up IG9uIHRoZSByZW1vdGUgc2lkZSwgYW5kIGZvcndhcmQgdGhlIGluY29taW5nIGNvbm5lY3Rpb24g dG8KdGhlIHJlbW90ZS4KClNpZ25lZC1vZmYtYnk6IEZhYmlhbiBHcsO8bmJpY2hsZXIgPGYuZ3J1 ZW5iaWNobGVyQHByb3htb3guY29tPgotLS0KCk5vdGVzOgogICAgc29tZSBvZiB0aGlzIGNvZGUg c2hvdWxkIGxpdmUgaW4gYSBsb3dlciBsZXZlbCBoZWxwZXIgZm9yIHJlLXVzZSBieSB0aGUgUEJT IHJlbW90ZS4uCgogc2VydmVyL3NyYy9hcGkvcHZlL25vZGUucnMgfCAxNzggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDE3NSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NlcnZlci9zcmMvYXBpL3B2ZS9ub2Rl LnJzIGIvc2VydmVyL3NyYy9hcGkvcHZlL25vZGUucnMKaW5kZXggYTFhNzg0ZS4uMTkzN2MyYSAx MDA2NDQKLS0tIGEvc2VydmVyL3NyYy9hcGkvcHZlL25vZGUucnMKKysrIGIvc2VydmVyL3NyYy9h cGkvcHZlL25vZGUucnMKQEAgLTEsMTIgKzEsMjUgQEAKIHVzZSBhbnlob3c6OntiYWlsLCBmb3Jt YXRfZXJyLCBFcnJvcn07Cit1c2UgZnV0dXJlczo6e0Z1dHVyZUV4dCwgVHJ5RnV0dXJlRXh0fTsK K3VzZSBodHRwOjp7CisgICAgaGVhZGVyOjp7U0VDX1dFQlNPQ0tFVF9LRVksIFNFQ19XRUJTT0NL RVRfVkVSU0lPTiwgVVBHUkFERX0sCisgICAgcmVxdWVzdDo6UGFydHMsCisgICAgTWV0aG9kLCBS ZXF1ZXN0LCBTdGF0dXNDb2RlLAorfTsKK3VzZSBoeXBlcjo6dXBncmFkZTo6VXBncmFkZWQ7Cit1 c2UgaHlwZXJfdXRpbDo6cnQ6OlRva2lvSW87CiB1c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVl fTsKIAogdXNlIHByb3htb3hfYXV0aF9hcGk6OnsKICAgICB0aWNrZXQ6OntFbXB0eSwgVGlja2V0 fSwKICAgICBLZXlyaW5nLAogfTsKLXVzZSBwcm94bW94X3JvdXRlcjo6e2xpc3Rfc3ViZGlyc19h cGlfbWV0aG9kLCBQZXJtaXNzaW9uLCBSb3V0ZXIsIFJwY0Vudmlyb25tZW50LCBTdWJkaXJNYXB9 OwotdXNlIHByb3htb3hfc2NoZW1hOjphcGk7Cit1c2UgcHJveG1veF9jbGllbnQ6OkFwaVBhdGhC dWlsZGVyOwordXNlIHByb3htb3hfaHR0cDo6e3dlYnNvY2tldDo6V2ViU29ja2V0LCBCb2R5fTsK K3VzZSBwcm94bW94X3JvdXRlcjo6eworICAgIGxpc3Rfc3ViZGlyc19hcGlfbWV0aG9kLCBBcGlI YW5kbGVyLCBBcGlNZXRob2QsIEFwaVJlc3BvbnNlRnV0dXJlLCBQZXJtaXNzaW9uLCBSb3V0ZXIs CisgICAgUnBjRW52aXJvbm1lbnQsIFN1YmRpck1hcCwKK307Cit1c2UgcHJveG1veF9zY2hlbWE6 OnthcGksIEludGVnZXJTY2hlbWEsIE9iamVjdFNjaGVtYSwgU3RyaW5nU2NoZW1hfTsKIHVzZSBw cm94bW94X3NvcnRhYmxlX21hY3JvOjpzb3J0YWJsZTsKIAogdXNlIHBkbV9hcGlfdHlwZXM6OnsK QEAgLTE0LDcgKzI3LDcgQEAgdXNlIHBkbV9hcGlfdHlwZXM6OnsKIH07CiB1c2UgcHZlX2FwaV90 eXBlczo6U3RvcmFnZUNvbnRlbnQ7CiAKLXVzZSBjcmF0ZTo6YXBpOjpwdmU6OnN0b3JhZ2U7Cit1 c2UgY3JhdGU6OmFwaTo6e25vZGVzOjp2bmN3ZWJzb2NrZXQ6OnJlcXVpcmVkX3N0cmluZ19wYXJh bSwgcHZlOjpzdG9yYWdlfTsKIAogcHViIGNvbnN0IFJPVVRFUjogUm91dGVyID0gUm91dGVyOjpu ZXcoKQogICAgIC5nZXQoJmxpc3Rfc3ViZGlyc19hcGlfbWV0aG9kIShTVUJESVJTKSkKQEAgLTI2 LDYgKzM5LDEwIEBAIGNvbnN0IFNVQkRJUlM6IFN1YmRpck1hcCA9ICZzb3J0ZWQhKFsKICAgICAo InJyZGRhdGEiLCAmc3VwZXI6OnJyZGRhdGE6Ok5PREVfUlJEX1JPVVRFUiksCiAgICAgKCJuZXR3 b3JrIiwgJlJvdXRlcjo6bmV3KCkuZ2V0KCZBUElfTUVUSE9EX0dFVF9ORVRXT1JLKSksCiAgICAg KCJ0ZXJtcHJveHkiLCAmUm91dGVyOjpuZXcoKS5wb3N0KCZBUElfTUVUSE9EX1NIRUxMX1RJQ0tF VCkpLAorICAgICgKKyAgICAgICAgInZuY3dlYnNvY2tldCIsCisgICAgICAgICZSb3V0ZXI6Om5l dygpLnVwZ3JhZGUoJkFQSV9NRVRIT0RfU0hFTExfV0VCU09DS0VUKQorICAgICksCiAgICAgKCJz dG9yYWdlIiwgJlNUT1JBR0VfUk9VVEVSKSwKICAgICAoInN0YXR1cyIsICZSb3V0ZXI6Om5ldygp LmdldCgmQVBJX01FVEhPRF9HRVRfU1RBVFVTKSksCiBdKTsKQEAgLTIwNiwzICsyMjMsMTU4IEBA IGFzeW5jIGZuIHNoZWxsX3RpY2tldCgKICAgICAgICAgInBvcnQiOiAwLAogICAgIH0pKQogfQor CisjW3NvcnRhYmxlXQorcHViIGNvbnN0IEFQSV9NRVRIT0RfU0hFTExfV0VCU09DS0VUOiBBcGlN ZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKKyAgICAmQXBpSGFuZGxlcjo6QXN5bmNIdHRwKCZ1cGdy YWRlX3RvX3dlYnNvY2tldCksCisgICAgJk9iamVjdFNjaGVtYTo6bmV3KAorICAgICAgICAiVXBn cmFkZWQgdG8gd2Vic29ja2V0IiwKKyAgICAgICAgJnNvcnRlZCEoWworICAgICAgICAgICAgKCJy ZW1vdGUiLCBmYWxzZSwgJlJFTU9URV9JRF9TQ0hFTUEpLAorICAgICAgICAgICAgKCJub2RlIiwg ZmFsc2UsICZOT0RFX1NDSEVNQSksCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgInZu Y3RpY2tldCIsCisgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgJlN0cmlu Z1NjaGVtYTo6bmV3KCJUZXJtaW5hbCB0aWNrZXQiKS5zY2hlbWEoKQorICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICgicG9ydCIsIGZhbHNlLCAmSW50ZWdlclNjaGVtYTo6bmV3KCJUZXJtaW5h bCBwb3J0Iikuc2NoZW1hKCkpLAorICAgICAgICBdKSwKKyAgICApLAorKQorLmFjY2VzcygKKyAg ICBTb21lKCJUaGUgdXNlciBuZWVkcyBTeXMuQ29uc29sZSBvbiAvcmVzb3VyY2Uve3JlbW90ZX0v bm9kZS97bm9kZX0uIiksCisgICAgJlBlcm1pc3Npb246OlByaXZpbGVnZSgKKyAgICAgICAgJlsi cmVzb3VyY2UiLCAie3JlbW90ZX0iLCAibm9kZSIsICJ7bm9kZX0iXSwKKyAgICAgICAgUFJJVl9T WVNfQ09OU09MRSwKKyAgICAgICAgZmFsc2UsCisgICAgKSwKKyk7CisKK2ZuIHVwZ3JhZGVfdG9f d2Vic29ja2V0KAorICAgIHBhcnRzOiBQYXJ0cywKKyAgICByZXFfYm9keTogaHlwZXI6OmJvZHk6 OkluY29taW5nLAorICAgIHBhcmFtOiBWYWx1ZSwKKyAgICBfaW5mbzogJkFwaU1ldGhvZCwKKyAg ICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAorKSAtPiBBcGlSZXNwb25zZUZ1dHVy ZSB7CisgICAgYXN5bmMgbW92ZSB7CisgICAgICAgIC8vIGludGVudGlvbmFsbHkgdXNlciBvbmx5 IGZvciBub3cKKyAgICAgICAgbGV0IGF1dGhfaWQ6IEF1dGhpZCA9IHJwY2VudgorICAgICAgICAg ICAgLmdldF9hdXRoX2lkKCkKKyAgICAgICAgICAgIC5va19vcl9lbHNlKHx8IGZvcm1hdF9lcnIh KCJubyBhdXRoaWQgYXZhaWxhYmxlIikpPworICAgICAgICAgICAgLnBhcnNlKCk/OworCisgICAg ICAgIGlmIGF1dGhfaWQuaXNfdG9rZW4oKSB7CisgICAgICAgICAgICBiYWlsISgiQVBJIHRva2Vu cyBjYW5ub3QgYWNjZXNzIHRoaXMgQVBJIGVuZHBvaW50Iik7CisgICAgICAgIH0KKworICAgICAg ICBsZXQgdXNlcmlkID0gYXV0aF9pZC51c2VyKCk7CisgICAgICAgIGxldCB0aWNrZXQgPSByZXF1 aXJlZF9zdHJpbmdfcGFyYW0oJnBhcmFtLCAidm5jdGlja2V0Iik/OworCisgICAgICAgIGxldCBw dWJsaWNfYXV0aF9rZXlyaW5nID0KKyAgICAgICAgICAgIEtleXJpbmc6OndpdGhfcHVibGljX2tl eShjcmF0ZTo6YXV0aDo6a2V5OjpwdWJsaWNfYXV0aF9rZXkoKS5jbG9uZSgpKTsKKworICAgICAg ICBsZXQgcmVtb3RlID0gcmVxdWlyZWRfc3RyaW5nX3BhcmFtKCZwYXJhbSwgInJlbW90ZSIpPy50 b19vd25lZCgpOworICAgICAgICBsZXQgbm9kZSA9IHJlcXVpcmVkX3N0cmluZ19wYXJhbSgmcGFy YW0sICJub2RlIik/LnRvX293bmVkKCk7CisgICAgICAgIGxldCB0aWNrZXRfcGF0aCA9IGVuY29k ZV90ZXJtX3RpY2tldF9wYXRoKCZyZW1vdGUsICZub2RlKTsKKworICAgICAgICBUaWNrZXQ6OjxF bXB0eT46OnBhcnNlKHRpY2tldCk/LnZlcmlmeSgKKyAgICAgICAgICAgICZwdWJsaWNfYXV0aF9r ZXlyaW5nLAorICAgICAgICAgICAgY3JhdGU6OmF1dGg6OlRFUk1fUFJFRklYLAorICAgICAgICAg ICAgU29tZSgmZm9ybWF0ISgie317fSIsIHVzZXJpZCwgdGlja2V0X3BhdGgpKSwKKyAgICAgICAg KT87CisKKyAgICAgICAgbGV0IChtdXQgd3MsIHJlc3BvbnNlKSA9IFdlYlNvY2tldDo6bmV3KHBh cnRzLmhlYWRlcnMuY2xvbmUoKSk/OworCisgICAgICAgIHByb3htb3hfcmVzdF9zZXJ2ZXI6OnNw YXduX2ludGVybmFsX3Rhc2soYXN5bmMgbW92ZSB7CisgICAgICAgICAgICBsZXQgaW5jb21pbmdf d3M6IFVwZ3JhZGVkID0KKyAgICAgICAgICAgICAgICBtYXRjaCBoeXBlcjo6dXBncmFkZTo6b24o UmVxdWVzdDo6ZnJvbV9wYXJ0cyhwYXJ0cywgcmVxX2JvZHkpKQorICAgICAgICAgICAgICAgICAg ICAubWFwX2VycihFcnJvcjo6ZnJvbSkKKyAgICAgICAgICAgICAgICAgICAgLmF3YWl0CisgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBPayh1cGdyYWRlZCkgPT4gdXBncmFk ZWQsCisgICAgICAgICAgICAgICAgICAgIF8gPT4gYmFpbCEoImVycm9yIiksCisgICAgICAgICAg ICAgICAgfTsKKworICAgICAgICAgICAgbGV0IChyZW1vdGVzLCBfKSA9IHBkbV9jb25maWc6OnJl bW90ZXM6OmNvbmZpZygpPzsKKyAgICAgICAgICAgIGxldCBwdmUgPSBzdXBlcjo6Y29ubmVjdF90 b19yZW1vdGUoJnJlbW90ZXMsICZyZW1vdGUpPzsKKyAgICAgICAgICAgIGxldCBwdmVfdGVybV90 aWNrZXQgPSBwdmUKKyAgICAgICAgICAgICAgICAubm9kZV9zaGVsbF90ZXJtcHJveHkoCisgICAg ICAgICAgICAgICAgICAgICZub2RlLAorICAgICAgICAgICAgICAgICAgICBwdmVfYXBpX3R5cGVz OjpOb2RlU2hlbGxUZXJtcHJveHkgeworICAgICAgICAgICAgICAgICAgICAgICAgY21kOiBOb25l LAorICAgICAgICAgICAgICAgICAgICAgICAgY21kX29wdHM6IE5vbmUsCisgICAgICAgICAgICAg ICAgICAgIH0sCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIC5hd2FpdD87CisK KyAgICAgICAgICAgIGxldCByZW1vdGUgPSBzdXBlcjo6Z2V0X3JlbW90ZSgmcmVtb3RlcywgJnJl bW90ZSk/OworICAgICAgICAgICAgbGV0IHJhd19jbGllbnQgPSBjcmF0ZTo6Y29ubmVjdGlvbjo6 bWFrZV9yYXdfY2xpZW50KHJlbW90ZSk/OworCisgICAgICAgICAgICBsZXQgd3Nfa2V5ID0gcHJv eG1veF9zeXM6OmxpbnV4OjpyYW5kb21fZGF0YSgxNik/OworICAgICAgICAgICAgbGV0IHdzX2tl eSA9IHByb3htb3hfYmFzZTY0OjplbmNvZGUoJndzX2tleSk7CisKKyAgICAgICAgICAgIGxldCBh cGlfdXJsID0gcmF3X2NsaWVudC5hcGlfdXJsKCkuY2xvbmUoKS5pbnRvX3BhcnRzKCk7CisKKyAg ICAgICAgICAgIGxldCBtdXQgYnVpbGRlciA9IGh0dHA6OnVyaTo6QnVpbGRlcjo6bmV3KCk7Cisg ICAgICAgICAgICBpZiBsZXQgU29tZShzY2hlbWUpID0gYXBpX3VybC5zY2hlbWUgeworICAgICAg ICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLnNjaGVtZShzY2hlbWUpOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYgbGV0IFNvbWUoYXV0aG9yaXR5KSA9IGFwaV91cmwuYXV0aG9yaXR5 IHsKKyAgICAgICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlci5hdXRob3JpdHkoYXV0aG9yaXR5 KQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0IGFwaV9wYXRoID0gQXBpUGF0aEJ1aWxk ZXI6Om5ldyhmb3JtYXQhKCIvYXBpMi9qc29uL25vZGVzL3tub2RlfS92bmN3ZWJzb2NrZXQiKSkK KyAgICAgICAgICAgICAgICAuYXJnKCJ2bmN0aWNrZXQiLCBwdmVfdGVybV90aWNrZXQudGlja2V0 LmNsb25lKCkpCisgICAgICAgICAgICAgICAgLmFyZygicG9ydCIsIHB2ZV90ZXJtX3RpY2tldC5w b3J0KQorICAgICAgICAgICAgICAgIC5idWlsZCgpOworICAgICAgICAgICAgbGV0IHVyaSA9IGJ1 aWxkZXIKKyAgICAgICAgICAgICAgICAucGF0aF9hbmRfcXVlcnkoYXBpX3BhdGgpCisgICAgICAg ICAgICAgICAgLmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCBmb3JtYXRf ZXJyISgiZmFpbGVkIHRvIGJ1aWxkIFVyaSAtIHtlcnJ9IikpPzsKKworICAgICAgICAgICAgbGV0 IGF1dGggPSByYXdfY2xpZW50LmxvZ2luX2F1dGgoKT87CisgICAgICAgICAgICBsZXQgcmVxID0g UmVxdWVzdDo6YnVpbGRlcigpCisgICAgICAgICAgICAgICAgLm1ldGhvZChNZXRob2Q6OkdFVCkK KyAgICAgICAgICAgICAgICAudXJpKHVyaSkKKyAgICAgICAgICAgICAgICAuaGVhZGVyKFVQR1JB REUsICJ3ZWJzb2NrZXQiKQorICAgICAgICAgICAgICAgIC5oZWFkZXIoU0VDX1dFQlNPQ0tFVF9W RVJTSU9OLCAiMTMiKQorICAgICAgICAgICAgICAgIC5oZWFkZXIoU0VDX1dFQlNPQ0tFVF9LRVks IHdzX2tleSk7CisKKyAgICAgICAgICAgIGxldCByZXEgPSBhdXRoLnNldF9hdXRoX2hlYWRlcnMo cmVxKS5ib2R5KEJvZHk6OmVtcHR5KCkpPzsKKworICAgICAgICAgICAgbGV0IHJlcyA9IHJhd19j bGllbnQuaHR0cF9jbGllbnQoKS5yZXF1ZXN0KHJlcSkuYXdhaXQ/OworICAgICAgICAgICAgaWYg cmVzLnN0YXR1cygpICE9IFN0YXR1c0NvZGU6OlNXSVRDSElOR19QUk9UT0NPTFMgeworICAgICAg ICAgICAgICAgIGJhaWwhKCJzZXJ2ZXIgZGlkbid0IHVwZ3JhZGU6IHt9IiwgcmVzLnN0YXR1cygp KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHB2ZV93cyA9IGh5cGVyOjp1cGdy YWRlOjpvbihyZXMpCisgICAgICAgICAgICAgICAgLmF3YWl0CisgICAgICAgICAgICAgICAgLm1h cF9lcnIofGVycnwgZm9ybWF0X2VyciEoImZhaWxlZCB0byB1cGdyYWRlIC0ge30iLCBlcnIpKT87 CisKKyAgICAgICAgICAgIGxldCB1c2VybmFtZSA9IGlmIGxldCBwcm94bW94X2NsaWVudDo6QXV0 aGVudGljYXRpb25LaW5kOjpUb2tlbihyZWYgdG9rZW4pID0gKmF1dGggeworICAgICAgICAgICAg ICAgIHRva2VuLnVzZXJpZC5jbG9uZSgpCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgIGJhaWwhKCJzaGVsbCBub3Qgc3VwcG9ydGVkIHdpdGggdGlja2V0LWJhc2VkIGF1dGhl bnRpY2F0aW9uIikKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGxldCBwcmVhbWJsZSA9 IGZvcm1hdCEoInt1c2VybmFtZX06e3RpY2tldH1cbiIsIHRpY2tldCA9IHB2ZV90ZXJtX3RpY2tl dC50aWNrZXQpOworICAgICAgICAgICAgd3MubWFzayA9IFNvbWUoWzAsIDAsIDAsIDBdKTsKKwor ICAgICAgICAgICAgaWYgbGV0IEVycihlcnIpID0gd3MKKyAgICAgICAgICAgICAgICAucHJveHlf Y29ubmVjdGlvbigKKyAgICAgICAgICAgICAgICAgICAgVG9raW9Jbzo6bmV3KGluY29taW5nX3dz KSwKKyAgICAgICAgICAgICAgICAgICAgVG9raW9Jbzo6bmV3KHB2ZV93cyksCisgICAgICAgICAg ICAgICAgICAgIHByZWFtYmxlLmFzX2J5dGVzKCksCisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgICAgIC5hd2FpdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxvZzo6d2Fy biEoImVycm9yIHdoaWxlIGNvcHlpbmcgYmV0d2VlbiB3ZWJzb2NrZXRzOiB7ZXJyOj99Iik7Cisg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE9rKCgpKQorICAgICAgICB9KTsKKworICAgICAg ICBPayhyZXNwb25zZSkKKyAgICB9CisgICAgLmJveGVkKCkKK30KLS0gCjIuNDcuMwoKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFp bGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3ht b3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK