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 379E31FF15C
	for <inbox@lore.proxmox.com>; Fri,  4 Apr 2025 18:11:46 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 8F7AB37115;
	Fri,  4 Apr 2025 18:10:53 +0200 (CEST)
From: Markus Frank <m.frank@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Fri,  4 Apr 2025 18:08:43 +0200
Message-Id: <20250404160847.489922-9-m.frank@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250404160847.489922-1-m.frank@proxmox.com>
References: <20250404160847.489922-1-m.frank@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -1.003 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
 KAM_MAILER                  2 Automated Mailer Tag Left in Email
 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 manager v16 08/12] api: add resource map api
 endpoints for directories
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-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

U2lnbmVkLW9mZi1ieTogTWFya3VzIEZyYW5rIDxtLmZyYW5rQHByb3htb3guY29tPgpSZXZpZXdl
ZC1ieTogRmlvbmEgRWJuZXIgPGYuZWJuZXJAcHJveG1veC5jb20+ClJldmlld2VkLWJ5OiBMYXVy
ZW7Im2l1IExlYWh1LVZsxINkdWN1IDxsLmxlYWh1LXZsYWR1Y3VAcHJveG1veC5jb20KUmV2aWV3
ZWQtYnk6IERhbmllbCBLcmFsIDxkLmtyYWxAcHJveG1veC5jb20+ClRlc3RlZC1ieTogTGF1cmVu
yJtpdSBMZWFodS1WbMSDZHVjdSA8bC5sZWFodS12bGFkdWN1QHByb3htb3guY29tPgpUZXN0ZWQt
Ynk6IERhbmllbCBLcmFsIDxkLmtyYWxAcHJveG1veC5jb20+ClRlc3RlZC1ieTogTHVrYXMgV2Fn
bmVyIDxsLndhZ25lckBwcm94bW94LmNvbT4KLS0tCm5vIGNoYW5nZXMgaW4gdjE2CgogUFZFL0FQ
STIvQ2x1c3Rlci9NYXBwaW5nLnBtICAgICAgIHwgICA3ICsKIFBWRS9BUEkyL0NsdXN0ZXIvTWFw
cGluZy9EaXIucG0gICB8IDMwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIFBWRS9B
UEkyL0NsdXN0ZXIvTWFwcGluZy9NYWtlZmlsZSB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDMx
NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgUFZFL0FQSTIvQ2x1c3Rlci9NYXBw
aW5nL0Rpci5wbQoKZGlmZiAtLWdpdCBhL1BWRS9BUEkyL0NsdXN0ZXIvTWFwcGluZy5wbSBiL1BW
RS9BUEkyL0NsdXN0ZXIvTWFwcGluZy5wbQppbmRleCA0MDM4NjU3OS4uOWYwZGNkMmIgMTAwNjQ0
Ci0tLSBhL1BWRS9BUEkyL0NsdXN0ZXIvTWFwcGluZy5wbQorKysgYi9QVkUvQVBJMi9DbHVzdGVy
L01hcHBpbmcucG0KQEAgLTMsMTEgKzMsMTcgQEAgcGFja2FnZSBQVkU6OkFQSTI6OkNsdXN0ZXI6
Ok1hcHBpbmc7CiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCit1c2UgUFZFOjpBUEkyOjpD
bHVzdGVyOjpNYXBwaW5nOjpEaXI7CiB1c2UgUFZFOjpBUEkyOjpDbHVzdGVyOjpNYXBwaW5nOjpQ
Q0k7CiB1c2UgUFZFOjpBUEkyOjpDbHVzdGVyOjpNYXBwaW5nOjpVU0I7CiAKIHVzZSBiYXNlIHF3
KFBWRTo6UkVTVEhhbmRsZXIpOwogCitfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kICh7Cisg
ICAgc3ViY2xhc3MgPT4gIlBWRTo6QVBJMjo6Q2x1c3Rlcjo6TWFwcGluZzo6RGlyIiwKKyAgICBw
YXRoID0+ICdkaXInLAorfSk7CisKIF9fUEFDS0FHRV9fLT5yZWdpc3Rlcl9tZXRob2QgKHsKICAg
ICBzdWJjbGFzcyA9PiAiUFZFOjpBUEkyOjpDbHVzdGVyOjpNYXBwaW5nOjpQQ0kiLAogICAgIHBh
dGggPT4gJ3BjaScsCkBAIC00MSw2ICs0Nyw3IEBAIF9fUEFDS0FHRV9fLT5yZWdpc3Rlcl9tZXRo
b2QgKHsKIAlteSAoJHBhcmFtKSA9IEBfOwogCiAJbXkgJHJlc3VsdCA9IFsKKwkgICAgeyBuYW1l
ID0+ICdkaXInIH0sCiAJICAgIHsgbmFtZSA9PiAncGNpJyB9LAogCSAgICB7IG5hbWUgPT4gJ3Vz
YicgfSwKIAldOwpkaWZmIC0tZ2l0IGEvUFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nL0Rpci5wbSBi
L1BWRS9BUEkyL0NsdXN0ZXIvTWFwcGluZy9EaXIucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAuLmY5MDVjZWYzCi0tLSAvZGV2L251bGwKKysrIGIvUFZFL0FQSTIvQ2x1c3Rl
ci9NYXBwaW5nL0Rpci5wbQpAQCAtMCwwICsxLDMwOCBAQAorcGFja2FnZSBQVkU6OkFQSTI6OkNs
dXN0ZXI6Ok1hcHBpbmc6OkRpcjsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNl
IFN0b3JhYmxlIHF3KGRjbG9uZSk7CisKK3VzZSBQVkU6OklOb3RpZnk7Cit1c2UgUFZFOjpKU09O
U2NoZW1hIHF3KGdldF9zdGFuZGFyZF9vcHRpb24pOwordXNlIFBWRTo6TWFwcGluZzo6RGlyICgp
OwordXNlIFBWRTo6UlBDRW52aXJvbm1lbnQ7Cit1c2UgUFZFOjpTZWN0aW9uQ29uZmlnOwordXNl
IFBWRTo6VG9vbHMgcXcoZXh0cmFjdF9wYXJhbSk7CisKK3VzZSBiYXNlIHF3KFBWRTo6UkVTVEhh
bmRsZXIpOworCitfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kICh7CisgICAgbmFtZSA9PiAn
aW5kZXgnLAorICAgIHBhdGggPT4gJycsCisgICAgbWV0aG9kID0+ICdHRVQnLAorICAgICMgb25s
eSBwcm94eSBpZiB3ZSBnaXZlIHRoZSAnY2hlY2stbm9kZScgcGFyYW1ldGVyCisgICAgcHJveHl0
b19jYWxsYmFjayA9PiBzdWIgeworCW15ICgkcnBjZW52LCAkcHJveHl0bywgJHBhcmFtKSA9IEBf
OworCXJldHVybiAkcGFyYW0tPnsnY2hlY2stbm9kZSd9IC8vICdsb2NhbGhvc3QnOworICAgIH0s
CisgICAgZGVzY3JpcHRpb24gPT4gIkxpc3QgZGlyZWN0b3J5IG1hcHBpbmciLAorICAgIHBlcm1p
c3Npb25zID0+IHsKKwlkZXNjcmlwdGlvbiA9PiAiT25seSBsaXN0cyBlbnRyaWVzIHdoZXJlIHlv
dSBoYXZlICdNYXBwaW5nLk1vZGlmeScsICdNYXBwaW5nLlVzZScgb3IiCisJICAgIC4iICdNYXBw
aW5nLkF1ZGl0JyBwZXJtaXNzaW9ucyBvbiAnL21hcHBpbmcvZGlyLzxpZD4nLiIsCisJdXNlciA9
PiAnYWxsJywKKyAgICB9LAorICAgIHBhcmFtZXRlcnMgPT4geworCWFkZGl0aW9uYWxQcm9wZXJ0
aWVzID0+IDAsCisJcHJvcGVydGllcyA9PiB7CisJICAgICdjaGVjay1ub2RlJyA9PiBnZXRfc3Rh
bmRhcmRfb3B0aW9uKCdwdmUtbm9kZScsIHsKKwkJZGVzY3JpcHRpb24gPT4gIklmIGdpdmVuLCBj
aGVja3MgdGhlIGNvbmZpZ3VyYXRpb25zIG9uIHRoZSBnaXZlbiBub2RlIGZvciIKKwkJICAgIC4i
IGNvcnJlY3RuZXNzLCBhbmQgYWRkcyByZWxldmFudCBkaWFnbm9zdGljcyBmb3IgdGhlIGRpcmVj
dG9yeSB0byB0aGUgcmVzcG9uc2UuIiwKKwkJb3B0aW9uYWwgPT4gMSwKKwkgICAgfSksCisJfSwK
KyAgICB9LAorICAgIHJldHVybnMgPT4geworCXR5cGUgPT4gJ2FycmF5JywKKwlpdGVtcyA9PiB7
CisJICAgIHR5cGUgPT4gIm9iamVjdCIsCisJICAgIHByb3BlcnRpZXMgPT4geworCQlpZCA9PiB7
CisJCSAgICB0eXBlID0+ICdzdHJpbmcnLAorCQkgICAgZGVzY3JpcHRpb24gPT4gIlRoZSBsb2dp
Y2FsIElEIG9mIHRoZSBtYXBwaW5nLiIKKwkJfSwKKwkJbWFwID0+IHsKKwkJICAgIHR5cGUgPT4g
J2FycmF5JywKKwkJICAgIGRlc2NyaXB0aW9uID0+ICJUaGUgZW50cmllcyBvZiB0aGUgbWFwcGlu
Zy4iLAorCQkgICAgaXRlbXMgPT4geworCQkJdHlwZSA9PiAnc3RyaW5nJywKKwkJCWRlc2NyaXB0
aW9uID0+ICJBIG1hcHBpbmcgZm9yIGEgbm9kZS4iLAorCQkgICAgfSwKKwkJfSwKKwkJZGVzY3Jp
cHRpb24gPT4geworCQkgICAgdHlwZSA9PiAnc3RyaW5nJywKKwkJICAgIGRlc2NyaXB0aW9uID0+
ICJBIGRlc2NyaXB0aW9uIG9mIHRoZSBsb2dpY2FsIG1hcHBpbmcuIiwKKwkJfSwKKwkJY2hlY2tz
ID0+IHsKKwkJICAgIHR5cGUgPT4gImFycmF5IiwKKwkJICAgIG9wdGlvbmFsID0+IDEsCisJCSAg
ICBkZXNjcmlwdGlvbiA9PiAiQSBsaXN0IG9mIGNoZWNrcywgb25seSBwcmVzZW50IGlmICdjaGVj
ay1ub2RlJyBpcyBzZXQuIiwKKwkJICAgIGl0ZW1zID0+IHsKKwkJCXR5cGUgPT4gJ29iamVjdCcs
CisJCQlwcm9wZXJ0aWVzID0+IHsKKwkJCSAgICBzZXZlcml0eSA9PiB7CisJCQkJdHlwZSA9PiAi
c3RyaW5nIiwKKwkJCQllbnVtID0+IFsnd2FybmluZycsICdlcnJvciddLAorCQkJCWRlc2NyaXB0
aW9uID0+ICJUaGUgc2V2ZXJpdHkgb2YgdGhlIGVycm9yIiwKKwkJCSAgICB9LAorCQkJICAgIG1l
c3NhZ2UgPT4geworCQkJCXR5cGUgPT4gInN0cmluZyIsCisJCQkJZGVzY3JpcHRpb24gPT4gIlRo
ZSBtZXNzYWdlIG9mIHRoZSBlcnJvciIsCisJCQkgICAgfSwKKwkJCX0sCisJCSAgICB9CisJCX0s
CisJICAgIH0sCisJfSwKKwlsaW5rcyA9PiBbIHsgcmVsID0+ICdjaGlsZCcsIGhyZWYgPT4gIntp
ZH0iIH0gXSwKKyAgICB9LAorICAgIGNvZGUgPT4gc3ViIHsKKwlteSAoJHBhcmFtKSA9IEBfOwor
CisJbXkgJHJwY2VudiA9IFBWRTo6UlBDRW52aXJvbm1lbnQ6OmdldCgpOworCW15ICRhdXRodXNl
ciA9ICRycGNlbnYtPmdldF91c2VyKCk7CisKKwlteSAkY2hlY2tfbm9kZSA9ICRwYXJhbS0+eydj
aGVjay1ub2RlJ307CisJbXkgJGxvY2FsX25vZGUgPSBQVkU6OklOb3RpZnk6Om5vZGVuYW1lKCk7
CisKKwlkaWUgIndyb25nIG5vZGUgdG8gY2hlY2sgLSAkY2hlY2tfbm9kZSAhPSAkbG9jYWxfbm9k
ZVxuIgorCSAgICBpZiBkZWZpbmVkKCRjaGVja19ub2RlKSAmJiAkY2hlY2tfbm9kZSBuZSAnbG9j
YWxob3N0JyAmJiAkY2hlY2tfbm9kZSBuZSAkbG9jYWxfbm9kZTsKKworCW15ICRjZmcgPSBQVkU6
Ok1hcHBpbmc6OkRpcjo6Y29uZmlnKCk7CisKKwlteSAkY2FuX3NlZV9tYXBwaW5nX3ByaXZzID0g
WydNYXBwaW5nLk1vZGlmeScsICdNYXBwaW5nLlVzZScsICdNYXBwaW5nLkF1ZGl0J107CisKKwlt
eSAkcmVzID0gW107CisJZm9yIG15ICRpZCAoa2V5cyAkY2ZnLT57aWRzfS0+JSopIHsKKwkgICAg
bmV4dCBpZiAhJHJwY2Vudi0+Y2hlY2tfYW55KCRhdXRodXNlciwgIi9tYXBwaW5nL2Rpci8kaWQi
LCAkY2FuX3NlZV9tYXBwaW5nX3ByaXZzLCAxKTsKKwkgICAgbmV4dCBpZiAhJGNmZy0+e2lkc30t
PnskaWR9OworCisJICAgIG15ICRlbnRyeSA9IGRjbG9uZSgkY2ZnLT57aWRzfS0+eyRpZH0pOwor
CSAgICAkZW50cnktPntpZH0gPSAkaWQ7CisJICAgICRlbnRyeS0+e2RpZ2VzdH0gPSAkY2ZnLT57
ZGlnZXN0fTsKKworCSAgICBpZiAoZGVmaW5lZCgkY2hlY2tfbm9kZSkpIHsKKwkJJGVudHJ5LT57
Y2hlY2tzfSA9IFtdOworCQlpZiAobXkgJG1hcHBpbmdzID0gUFZFOjpNYXBwaW5nOjpEaXI6Omdl
dF9ub2RlX21hcHBpbmcoJGNmZywgJGlkLCAkY2hlY2tfbm9kZSkpIHsKKwkJICAgIGlmICghc2Nh
bGFyKCRtYXBwaW5ncy0+QCopKSB7CisJCQlwdXNoICRlbnRyeS0+e2NoZWNrc30tPkAqLCB7CisJ
CQkgICAgc2V2ZXJpdHkgPT4gJ3dhcm5pbmcnLAorCQkJICAgIG1lc3NhZ2UgPT4gIk5vIG1hcHBp
bmcgZm9yIG5vZGUgJGNoZWNrX25vZGUuIiwKKwkJCX07CisJCSAgICB9CisJCSAgICBmb3IgbXkg
JG1hcHBpbmcgKCRtYXBwaW5ncy0+QCopIHsKKwkJCWV2YWwgeyBQVkU6Ok1hcHBpbmc6OkRpcjo6
YXNzZXJ0X3ZhbGlkKCRtYXBwaW5nKSB9OworCQkJaWYgKG15ICRlcnIgPSAkQCkgeworCQkJICAg
IHB1c2ggJGVudHJ5LT57Y2hlY2tzfS0+QCosIHsKKwkJCQlzZXZlcml0eSA9PiAnZXJyb3InLAor
CQkJCW1lc3NhZ2UgPT4gIkludmFsaWQgY29uZmlndXJhdGlvbjogJGVyciIsCisJCQkgICAgfTsK
KwkJCX0KKwkJICAgIH0KKwkJfQorCSAgICB9CisKKwkgICAgcHVzaCBAJHJlcywgJGVudHJ5Owor
CX0KKworCXJldHVybiAkcmVzOworICAgIH0sCit9KTsKKworX19QQUNLQUdFX18tPnJlZ2lzdGVy
X21ldGhvZCAoeworICAgIG5hbWUgPT4gJ2dldCcsCisgICAgcHJvdGVjdGVkID0+IDEsCisgICAg
cGF0aCA9PiAne2lkfScsCisgICAgbWV0aG9kID0+ICdHRVQnLAorICAgIGRlc2NyaXB0aW9uID0+
ICJHZXQgZGlyZWN0b3J5IG1hcHBpbmcuIiwKKyAgICBwZXJtaXNzaW9ucyA9PiB7CisJY2hlY2sg
PT5bJ29yJywKKwkgICAgWydwZXJtJywgJy9tYXBwaW5nL2Rpci97aWR9JywgWydNYXBwaW5nLlVz
ZSddXSwKKwkgICAgWydwZXJtJywgJy9tYXBwaW5nL2Rpci97aWR9JywgWydNYXBwaW5nLk1vZGlm
eSddXSwKKwkgICAgWydwZXJtJywgJy9tYXBwaW5nL2Rpci97aWR9JywgWydNYXBwaW5nLkF1ZGl0
J11dLAorCV0sCisgICAgfSwKKyAgICBwYXJhbWV0ZXJzID0+IHsKKwlhZGRpdGlvbmFsUHJvcGVy
dGllcyA9PiAwLAorCXByb3BlcnRpZXMgPT4geworCSAgICBpZCA9PiB7CisJCXR5cGUgPT4gJ3N0
cmluZycsCisJCWZvcm1hdCA9PiAncHZlLWNvbmZpZ2lkJywKKwkgICAgfSwKKwl9CisgICAgfSwK
KyAgICByZXR1cm5zID0+IHsgdHlwZSA9PiAnb2JqZWN0JyB9LAorICAgIGNvZGUgPT4gc3ViIHsK
KwlteSAoJHBhcmFtKSA9IEBfOworCisJbXkgJGNmZyA9IFBWRTo6TWFwcGluZzo6RGlyOjpjb25m
aWcoKTsKKwlteSAkaWQgPSAkcGFyYW0tPntpZH07CisKKwlteSAkZW50cnkgPSAkY2ZnLT57aWRz
fS0+eyRpZH07CisJZGllICJtYXBwaW5nICckcGFyYW0tPntpZH0nIG5vdCBmb3VuZFxuIiBpZiAh
ZGVmaW5lZCgkZW50cnkpOworCisJbXkgJGRhdGEgPSBkY2xvbmUoJGVudHJ5KTsKKworCSRkYXRh
LT57ZGlnZXN0fSA9ICRjZmctPntkaWdlc3R9OworCisJcmV0dXJuICRkYXRhOworICAgIH19KTsK
KworX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCAoeworICAgIG5hbWUgPT4gJ2NyZWF0ZScs
CisgICAgcHJvdGVjdGVkID0+IDEsCisgICAgcGF0aCA9PiAnJywKKyAgICBtZXRob2QgPT4gJ1BP
U1QnLAorICAgIGRlc2NyaXB0aW9uID0+ICJDcmVhdGUgYSBuZXcgZGlyZWN0b3J5IG1hcHBpbmcu
IiwKKyAgICBwZXJtaXNzaW9ucyA9PiB7CisJY2hlY2sgPT4gWydwZXJtJywgJy9tYXBwaW5nL2Rp
cicsIFsnTWFwcGluZy5Nb2RpZnknXV0sCisgICAgfSwKKyAgICBwYXJhbWV0ZXJzID0+IFBWRTo6
TWFwcGluZzo6RGlyLT5jcmVhdGVTY2hlbWEoMSksCisgICAgcmV0dXJucyA9PiB7CisJdHlwZSA9
PiAnbnVsbCcsCisgICAgfSwKKyAgICBjb2RlID0+IHN1YiB7CisJbXkgKCRwYXJhbSkgPSBAXzsK
KworCW15ICRpZCA9IGV4dHJhY3RfcGFyYW0oJHBhcmFtLCAnaWQnKTsKKworCW15ICRwbHVnaW4g
PSBQVkU6Ok1hcHBpbmc6OkRpci0+bG9va3VwKCdkaXInKTsKKwlteSAkb3B0cyA9ICRwbHVnaW4t
PmNoZWNrX2NvbmZpZygkaWQsICRwYXJhbSwgMSwgMSk7CisKKwlteSAkbWFwX2xpc3QgPSAkb3B0
cy0+e21hcH07CisJUFZFOjpNYXBwaW5nOjpEaXI6OmFzc2VydF92YWxpZF9tYXBfbGlzdCgkbWFw
X2xpc3QpOworCisJUFZFOjpNYXBwaW5nOjpEaXI6OmxvY2tfZGlyX2NvbmZpZyhzdWIgeworCSAg
ICBteSAkY2ZnID0gUFZFOjpNYXBwaW5nOjpEaXI6OmNvbmZpZygpOworCisJICAgIGRpZSAiZGly
IElEICckaWQnIGFscmVhZHkgZGVmaW5lZFxuIiBpZiBkZWZpbmVkKCRjZmctPntpZHN9LT57JGlk
fSk7CisKKwkgICAgJGNmZy0+e2lkc30tPnskaWR9ID0gJG9wdHM7CisKKwkgICAgUFZFOjpNYXBw
aW5nOjpEaXI6OndyaXRlX2Rpcl9jb25maWcoJGNmZyk7CisKKwl9LCAiY3JlYXRlIGRpcmVjdG9y
eSBtYXBwaW5nIGZhaWxlZCIpOworCisJcmV0dXJuOworICAgIH0sCit9KTsKKworX19QQUNLQUdF
X18tPnJlZ2lzdGVyX21ldGhvZCAoeworICAgIG5hbWUgPT4gJ3VwZGF0ZScsCisgICAgcHJvdGVj
dGVkID0+IDEsCisgICAgcGF0aCA9PiAne2lkfScsCisgICAgbWV0aG9kID0+ICdQVVQnLAorICAg
IGRlc2NyaXB0aW9uID0+ICJVcGRhdGUgYSBkaXJlY3RvcnkgbWFwcGluZy4iLAorICAgIHBlcm1p
c3Npb25zID0+IHsKKwljaGVjayA9PiBbJ3Blcm0nLCAnL21hcHBpbmcvZGlyL3tpZH0nLCBbJ01h
cHBpbmcuTW9kaWZ5J11dLAorICAgIH0sCisgICAgcGFyYW1ldGVycyA9PiBQVkU6Ok1hcHBpbmc6
OkRpci0+dXBkYXRlU2NoZW1hKCksCisgICAgcmV0dXJucyA9PiB7CisJdHlwZSA9PiAnbnVsbCcs
CisgICAgfSwKKyAgICBjb2RlID0+IHN1YiB7CisJbXkgKCRwYXJhbSkgPSBAXzsKKworCW15ICRk
aWdlc3QgPSBleHRyYWN0X3BhcmFtKCRwYXJhbSwgJ2RpZ2VzdCcpOworCW15ICRkZWxldGUgPSBl
eHRyYWN0X3BhcmFtKCRwYXJhbSwgJ2RlbGV0ZScpOworCW15ICRpZCA9IGV4dHJhY3RfcGFyYW0o
JHBhcmFtLCAnaWQnKTsKKworCWlmICgkZGVsZXRlKSB7CisJICAgICRkZWxldGUgPSBbIFBWRTo6
VG9vbHM6OnNwbGl0X2xpc3QoJGRlbGV0ZSkgXTsKKwl9CisKKwlQVkU6Ok1hcHBpbmc6OkRpcjo6
bG9ja19kaXJfY29uZmlnKHN1YiB7CisJICAgIG15ICRjZmcgPSBQVkU6Ok1hcHBpbmc6OkRpcjo6
Y29uZmlnKCk7CisKKwkgICAgUFZFOjpUb29sczo6YXNzZXJ0X2lmX21vZGlmaWVkKCRjZmctPntk
aWdlc3R9LCAkZGlnZXN0KSBpZiBkZWZpbmVkKCRkaWdlc3QpOworCisJICAgIGRpZSAiZGlyIElE
ICckaWQnIGRvZXMgbm90IGV4aXN0XG4iIGlmICFkZWZpbmVkKCRjZmctPntpZHN9LT57JGlkfSk7
CisKKwkgICAgbXkgJHBsdWdpbiA9IFBWRTo6TWFwcGluZzo6RGlyLT5sb29rdXAoJ2RpcicpOwor
CSAgICBteSAkb3B0cyA9ICRwbHVnaW4tPmNoZWNrX2NvbmZpZygkaWQsICRwYXJhbSwgMSwgMSk7
CisKKwkgICAgbXkgJG1hcF9saXN0ID0gJG9wdHMtPnttYXB9OworCSAgICBQVkU6Ok1hcHBpbmc6
OkRpcjo6YXNzZXJ0X3ZhbGlkX21hcF9saXN0KCRtYXBfbGlzdCk7CisKKwkgICAgbXkgJGRhdGEg
PSAkY2ZnLT57aWRzfS0+eyRpZH07CisKKwkgICAgbXkgJG9wdGlvbnMgPSAkcGx1Z2luLT5wcml2
YXRlKCktPntvcHRpb25zfS0+e2Rpcn07CisJICAgIFBWRTo6U2VjdGlvbkNvbmZpZzo6ZGVsZXRl
X2Zyb21fY29uZmlnKCRkYXRhLCAkb3B0aW9ucywgJG9wdHMsICRkZWxldGUpOworCisJICAgICRk
YXRhLT57JF99ID0gJG9wdHMtPnskX30gZm9yIGtleXMgJG9wdHMtPiUqOworCisJICAgIFBWRTo6
TWFwcGluZzo6RGlyOjp3cml0ZV9kaXJfY29uZmlnKCRjZmcpOworCisJfSwgInVwZGF0ZSBkaXJl
Y3RvcnkgbWFwcGluZyBmYWlsZWQiKTsKKworCXJldHVybjsKKyAgICB9LAorfSk7CisKK19fUEFD
S0FHRV9fLT5yZWdpc3Rlcl9tZXRob2QgKHsKKyAgICBuYW1lID0+ICdkZWxldGUnLAorICAgIHBy
b3RlY3RlZCA9PiAxLAorICAgIHBhdGggPT4gJ3tpZH0nLAorICAgIG1ldGhvZCA9PiAnREVMRVRF
JywKKyAgICBkZXNjcmlwdGlvbiA9PiAiUmVtb3ZlIGRpcmVjdG9yeSBtYXBwaW5nLiIsCisgICAg
cGVybWlzc2lvbnMgPT4geworCWNoZWNrID0+IFsgJ3Blcm0nLCAnL21hcHBpbmcvZGlyJywgWydN
YXBwaW5nLk1vZGlmeSddXSwKKyAgICB9LAorICAgIHBhcmFtZXRlcnMgPT4geworCWFkZGl0aW9u
YWxQcm9wZXJ0aWVzID0+IDAsCisJcHJvcGVydGllcyA9PiB7CisJICAgIGlkID0+IHsKKwkJdHlw
ZSA9PiAnc3RyaW5nJywKKwkJZm9ybWF0ID0+ICdwdmUtY29uZmlnaWQnLAorCSAgICB9LAorCX0K
KyAgICB9LAorICAgIHJldHVybnMgPT4geyB0eXBlID0+ICdudWxsJyB9LAorICAgIGNvZGUgPT4g
c3ViIHsKKwlteSAoJHBhcmFtKSA9IEBfOworCisJbXkgJGlkID0gJHBhcmFtLT57aWR9OworCisJ
UFZFOjpNYXBwaW5nOjpEaXI6OmxvY2tfZGlyX2NvbmZpZyhzdWIgeworCSAgICBteSAkY2ZnID0g
UFZFOjpNYXBwaW5nOjpEaXI6OmNvbmZpZygpOworCisJICAgIGlmICgkY2ZnLT57aWRzfS0+eyRp
ZH0pIHsKKwkJZGVsZXRlICRjZmctPntpZHN9LT57JGlkfTsKKwkgICAgfQorCisJICAgIFBWRTo6
TWFwcGluZzo6RGlyOjp3cml0ZV9kaXJfY29uZmlnKCRjZmcpOworCisJfSwgImRlbGV0ZSBkaXIg
bWFwcGluZyBmYWlsZWQiKTsKKworCXJldHVybjsKKyAgICB9Cit9KTsKKworMTsKZGlmZiAtLWdp
dCBhL1BWRS9BUEkyL0NsdXN0ZXIvTWFwcGluZy9NYWtlZmlsZSBiL1BWRS9BUEkyL0NsdXN0ZXIv
TWFwcGluZy9NYWtlZmlsZQppbmRleCBlNzM0NWFiNC4uNWRiYjNmNWMgMTAwNjQ0Ci0tLSBhL1BW
RS9BUEkyL0NsdXN0ZXIvTWFwcGluZy9NYWtlZmlsZQorKysgYi9QVkUvQVBJMi9DbHVzdGVyL01h
cHBpbmcvTWFrZWZpbGUKQEAgLTMsNiArMyw3IEBAIGluY2x1ZGUgLi4vLi4vLi4vLi4vZGVmaW5l
cy5tawogIyBmb3Igbm9kZSBpbmRlcGVuZGVudCwgY2x1c3Rlci13aWRlIGFwcGxpY2FibGUsIEFQ
SSBlbmRwb2ludHMKICMgZW5zdXJlIHdlIGRvIG5vdCBjb25mbGljdCB3aXRoIGZpbGVzIHNoaXBw
ZWQgYnkgcHZlLWNsdXN0ZXIhIQogUEVSTFNPVVJDRT0gCVwKKwlEaXIucG0gIFwKIAlQQ0kucG0J
XAogCVVTQi5wbQogCi0tIAoyLjM5LjUKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMu
cHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlz
dGluZm8vcHZlLWRldmVsCg==