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 3BB2C1FF172
	for <inbox@lore.proxmox.com>; Tue,  1 Apr 2025 15:51:19 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 0271B33D24;
	Tue,  1 Apr 2025 15:51:09 +0200 (CEST)
Date: Tue, 1 Apr 2025 15:50:33 +0200 (CEST)
From: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Message-ID: <1503093360.3972.1743515433288@webmail.proxmox.com>
In-Reply-To: <mailman.953.1741688968.293.pve-devel@lists.proxmox.com>
References: <20250311102905.2680524-1-alexandre.derumier@groupe-cyllene.com>
 <mailman.953.1741688968.293.pve-devel@lists.proxmox.com>
MIME-Version: 1.0
X-Priority: 3
Importance: Normal
X-Mailer: Open-Xchange Mailer v7.10.6-Rev75
X-Originating-Client: open-xchange-appsuite
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.044 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
Subject: Re: [pve-devel] [PATCH v4 pve-storage 2/5] lvmplugin: add qcow2
 snapshot
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>

Cj4gQWxleGFuZHJlIERlcnVtaWVyIHZpYSBwdmUtZGV2ZWwgPHB2ZS1kZXZlbEBsaXN0cy5wcm94
bW94LmNvbT4gaGF0IGFtIDExLjAzLjIwMjUgMTE6MjggQ0VUIGdlc2NocmllYmVuOgoKc2FtZSBo
ZXJlIC0gcGxlYXNlIGFkZCBzb21lIGRlc2NyaXB0aW9uIGFib3V0IHdoeSB0aGluZ3MgYXJlIGlt
cGxlbWVudGVkIGhvdyB0aGV5IGFyZS4uIGVsc2Ugd2UgaGF2ZSB0byBkaXZlIHRocm91Z2ggbXVs
dGlwbGUgdGhyZWFkcyBvZiByZXZpZXcgZGlzY3Vzc2lvbnMgaW4gMiB5ZWFycyB3aGVuIHdlIHdh
bnQgdG8gZmluZCBvdXQgOykKCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIERlcnVtaWVyIDxh
bGV4YW5kcmUuZGVydW1pZXJAZ3JvdXBlLWN5bGxlbmUuY29tPgo+IC0tLQo+ICBzcmMvUFZFL1N0
b3JhZ2UvTFZNUGx1Z2luLnBtIHwgMjI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
LS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p
Cj4gCj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9MVk1QbHVnaW4ucG0gYi9zcmMvUFZF
L1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gaW5kZXggMzhmN2ZhMS4uMTlkYmQ3ZSAxMDA2NDQKPiAt
LS0gYS9zcmMvUFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gKysrIGIvc3JjL1BWRS9TdG9yYWdl
L0xWTVBsdWdpbi5wbQo+IEBAIC00LDYgKzQsNyBAQCB1c2Ugc3RyaWN0Owo+ICB1c2Ugd2Fybmlu
Z3M7Cj4gIAo+ICB1c2UgSU86OkZpbGU7Cj4gK3VzZSBQT1NJWCBxdy9jZWlsLzsKPiAgCj4gIHVz
ZSBQVkU6OlRvb2xzIHF3KHJ1bl9jb21tYW5kIHRyaW0pOwo+ICB1c2UgUFZFOjpTdG9yYWdlOjpQ
bHVnaW47Cj4gQEAgLTIxOCw2ICsyMTksNyBAQCBzdWIgdHlwZSB7Cj4gIHN1YiBwbHVnaW5kYXRh
IHsKPiAgICAgIHJldHVybiB7Cj4gIAljb250ZW50ID0+IFsge2ltYWdlcyA9PiAxLCByb290ZGly
ID0+IDF9LCB7IGltYWdlcyA9PiAxIH1dLAo+ICsJZm9ybWF0ID0+IFsgeyByYXcgPT4gMSwgcWNv
dzIgPT4gMSB9ICwgJ3JhdycgXSwKPiAgICAgIH07Cj4gIH0KPiAgCj4gQEAgLTI5Myw3ICsyOTUs
MTAgQEAgc3ViIHBhcnNlX3ZvbG5hbWUgewo+ICAgICAgUFZFOjpTdG9yYWdlOjpQbHVnaW46OnBh
cnNlX2x2bV9uYW1lKCR2b2xuYW1lKTsKPiAgCj4gICAgICBpZiAoJHZvbG5hbWUgPX4gbS9eKHZt
LShcZCspLVxTKykkLykgewo+IC0JcmV0dXJuICgnaW1hZ2VzJywgJDEsICQyLCB1bmRlZiwgdW5k
ZWYsIHVuZGVmLCAncmF3Jyk7Cj4gKwlteSAkbmFtZSA9ICQxOwo+ICsJbXkgJHZtaWQgPSAkMjsK
PiArCW15ICRmb3JtYXQgPSAkdm9sbmFtZSA9fiBtL1wucWNvdzIkLyA/ICdxY293MicgOiAncmF3
JzsKCnRoaXMgaXMgcmVhbGx5IHRyaWNreSBhbmQgSSBhbSBhZnJhaWQgdGhlcmUgYXJlIHN0aWxs
IHBpdGZhbGxzL2J1Z3MgaGVyZSB1bmxlc3Mgd2UgYWRkIGFkZGl0aW9uYWwgY2hlY2tzIGluIHBs
YWNlcyB0aGF0IGEgcmVxdWVzdGVkICRmb3JtYXQgYW5kIHRoZSBvbmUgaW4gdGhlIG5hbWUgbWF0
Y2guLgoKPiArCXJldHVybiAoJ2ltYWdlcycsICRuYW1lLCAkdm1pZCwgdW5kZWYsIHVuZGVmLCB1
bmRlZiwgJGZvcm1hdCk7Cj4gICAgICB9Cj4gIAo+ICAgICAgZGllICJ1bmFibGUgdG8gcGFyc2Ug
bHZtIHZvbHVtZSBuYW1lICckdm9sbmFtZSdcbiI7Cj4gQEAgLTMwMiwxMSArMzA3LDEzIEBAIHN1
YiBwYXJzZV92b2xuYW1lIHsKPiAgc3ViIGZpbGVzeXN0ZW1fcGF0aCB7Cj4gICAgICBteSAoJGNs
YXNzLCAkc2NmZywgJHZvbG5hbWUsICRzbmFwbmFtZSkgPSBAXzsKPiAgCj4gLSAgICBkaWUgImx2
bSBzbmFwc2hvdCBpcyBub3QgaW1wbGVtZW50ZWQiaWYgZGVmaW5lZCgkc25hcG5hbWUpOwo+ICsg
ICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAkYmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFz
ZSwgJGZvcm1hdCkgPQo+ICsJJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiAgCj4g
LSAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQpID0gJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2
b2xuYW1lKTsKPiArICAgIGRpZSAic25hcHNob3QgaXMgd29ya2luZyB3aXRoIHFjb3cyIGZvcm1h
dCBvbmx5IiBpZiBkZWZpbmVkKCRzbmFwbmFtZSkgJiYgJGZvcm1hdCBuZSAncWNvdzInOwo+ICAK
PiAgICAgIG15ICR2ZyA9ICRzY2ZnLT57dmduYW1lfTsKPiArICAgICRuYW1lID0gJGNsYXNzLT5n
ZXRfc25hcF92b2xuYW1lKCR2b2xuYW1lLCAkc25hcG5hbWUpIGlmICRzbmFwbmFtZTsKPiAgCj4g
ICAgICBteSAkcGF0aCA9ICIvZGV2LyR2Zy8kbmFtZSI7Cj4gIAo+IEBAIC0zMzQsNyArMzQxLDkg
QEAgc3ViIGZpbmRfZnJlZV9kaXNrbmFtZSB7Cj4gIAo+ICAgICAgbXkgJGRpc2tfbGlzdCA9IFsg
a2V5cyAleyRsdnMtPnskdmd9fSBdOwo+ICAKPiAtICAgIHJldHVybiBQVkU6OlN0b3JhZ2U6OlBs
dWdpbjo6Z2V0X25leHRfdm1fZGlza25hbWUoJGRpc2tfbGlzdCwgJHN0b3JlaWQsICR2bWlkLCB1
bmRlZiwgJHNjZmcpOwo+ICsgICAgJGFkZF9mbXRfc3VmZml4ID0gJGZtdCBlcSAncWNvdzInID8g
MSA6IHVuZGVmOwo+ICsKPiArICAgIHJldHVybiBQVkU6OlN0b3JhZ2U6OlBsdWdpbjo6Z2V0X25l
eHRfdm1fZGlza25hbWUoJGRpc2tfbGlzdCwgJHN0b3JlaWQsICR2bWlkLCAkZm10LCAkc2NmZywg
JGFkZF9mbXRfc3VmZml4KTsKPiAgfQo+ICAKPiAgc3ViIGx2Y3JlYXRlIHsKPiBAQCAtMzYzLDkg
KzM3Miw5IEBAIHN1YiBsdnJlbmFtZSB7Cj4gIH0KPiAgCj4gIHN1YiBhbGxvY19pbWFnZSB7Cj4g
LSAgICBteSAoJGNsYXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm10LCAkbmFtZSwgJHNp
emUpID0gQF87Cj4gKyAgICBteSAoJGNsYXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm10
LCAkbmFtZSwgJHNpemUsICRiYWNraW5nKSA9IEBfOwoKc2FtZSBhcyBmb3IgdGhlIGRpci1iYXNl
ZCBvbmUgLSAkYmFja2luZyBhcyBhcmJpdHJhcnkgcGF0aCBpcyBub3QgYSBnb29kIGlkZWEuLiB0
aGlzIHNob3VsZCBlaXRoZXIgYmUgYSBzbmFwc2hvdCAkdm9sbmFtZSwgb3IganVzdCB0aGUgJHNu
YXBuYW1lIGl0c2VsZj8KCj4gIAo+IC0gICAgZGllICJ1bnN1cHBvcnRlZCBmb3JtYXQgJyRmbXQn
IiBpZiAkZm10IG5lICdyYXcnOwo+ICsgICAgZGllICJ1bnN1cHBvcnRlZCBmb3JtYXQgJyRmbXQn
IiBpZiAkZm10ICF+IG0vKHJhd3xxY293MikvOwo+ICAKPiAgICAgIGRpZSAiaWxsZWdhbCBuYW1l
ICckbmFtZScgLSBzaG91bGQgYmUgJ3ZtLSR2bWlkLSonXG4iCj4gIAlpZiAgJG5hbWUgJiYgJG5h
bWUgIX4gbS9edm0tJHZtaWQtLzsKPiBAQCAtMzc4LDEyICszODcsMzYgQEAgc3ViIGFsbG9jX2lt
YWdlIHsKPiAgCj4gICAgICBteSAkZnJlZSA9IGludCgkdmdzLT57JHZnfS0+e2ZyZWV9KTsKPiAg
Cj4gKwo+ICsgICAgI2FkZCBleHRyYSBzcGFjZSBmb3IgcWNvdzIgbWV0YWRhdGFzCj4gKyAgICAj
d2l0aG91dCBzdWItYWxsb2NhdGVkIGNsdXN0ZXJzIDogRm9yIDFUQiBzdG9yYWdlIDogbDJfc2l6
ZSA9IGRpc2tfc2l6ZSDDlyA4IC8gY2x1c3Rlcl9zaXplCj4gKyAgICAjd2l0aCBzdWItYWxsb2Nh
dGVkIGNsdXN0ZXJzIDogRm9yIDFUQiBzdG9yYWdlIDogbDJfc2l6ZSA9IGRpc2tfc2l6ZSDDlyA4
IC8gY2x1c3Rlcl9zaXplIC8gMTYKCmFyZSB0aGVzZSBmb3JtdWxhcyB2YWxpZCBmb3IgYWxsIGRp
c2sgc2l6ZXMsIG9yIGp1c3QgZm9yIDFUQj8KCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIzRNQiBvdmVyaGVhZCBmb3IgMVRCIHdpdGggZXh0ZW50ZWQgbDIgY2x1c3RlcnNp
emU9MTI4awoKc28gdGhpcyBtZWFucyAxVEIgeCA4IC8gMTI4SyAvIDE2ID0gMUdCIC8gMjU2ID0g
NE1CCgppZiB0aGUgZm9ybXVsYSBpcyBnZW5lcmljLCB0aGF0IG1lYW5zIDEgR0Igb2Ygc3RvcmFn
ZSA9PSA0S0Igb2Ygb3ZlcmhlYWQsIG9yIDFNQiBvZiBzdG9yYWdlID09IDQgYnl0ZXMgb2Ygb3Zl
cmhlYWQ/Cgo+ICsKPiArICAgICNjYW4ndCB1c2UgcWVtdS1pbWcgbWVhc3VyZSwgYmVjYXVzZSBp
dCdzIG5vdCBwb3NzaWJsZSB0byBkZWZpbmUgb3B0aW9ucyBsaWtlIGNsdXN0ZXJzaXplICYmIGV4
dGVuZGVkX2wyCj4gKyAgICAjdmVyaWZpY2F0aW9uIGhhcyBiZWVuIGRvbmUgd2l0aCA6IHFlbXUt
aW1nIGNyZWF0ZSAtZiBxY293MiAtbyBleHRlbmRlZF9sMj1vbixjbHVzdGVyX3NpemU9MTI4ayB0
ZXN0LmltZyAxRwo+ICsKPiArICAgIG15ICRxY293Ml9vdmVyaGVhZCA9IGNlaWwoJHNpemUvMTAy
NC8xMDI0LzEwMjQpICogNDA5NjsKCmFib3ZlIHlvdSBzYXkgNE1CIGZvciAxVEIsIGJ1dCBoZXJl
IHlvdSBnbyBkb3duIHRvIEtCIGFuZCB0aGVuIG11bHRpcGx5IGJ5IDRLPyB3aHkgbm90IGdvIGRv
d24gdG8gTUIgYW5kIG11bHRpcGx5IGJ5IDQ/Cgo+ICsKPiArICAgIG15ICRsdm1zaXplID0gJHNp
emU7Cj4gKyAgICAkbHZtc2l6ZSArPSAkcWNvdzJfb3ZlcmhlYWQgaWYgJGZtdCBlcSAncWNvdzIn
Owo+ICsKPiAgICAgIGRpZSAibm90IGVub3VnaCBmcmVlIHNwYWNlICgkZnJlZSA8ICRzaXplKVxu
IiBpZiAkZnJlZSA8ICRzaXplOwo+ICAKPiAtICAgICRuYW1lID0gJGNsYXNzLT5maW5kX2ZyZWVf
ZGlza25hbWUoJHN0b3JlaWQsICRzY2ZnLCAkdm1pZCkKPiArICAgICRuYW1lID0gJGNsYXNzLT5m
aW5kX2ZyZWVfZGlza25hbWUoJHN0b3JlaWQsICRzY2ZnLCAkdm1pZCwgJGZtdCkKPiAgCWlmICEk
bmFtZTsKPiAgCj4gLSAgICBsdmNyZWF0ZSgkdmcsICRuYW1lLCAkc2l6ZSwgWyJwdmUtdm0tJHZt
aWQiXSk7Cj4gKyAgICBteSAkdGFncyA9IFsicHZlLXZtLSR2bWlkIl07Cj4gKyAgICAjdGFncyBh
bGwgc25hcHNob3RzIHZvbHVtZXMgd2l0aCB0aGUgbWFpbiB2b2x1bWUgdGFnIGZvciBlYXNpZXIg
YWN0aXZhdGlvbiBvZiB0aGUgd2hvbGUgZ3JvdXAKPiArICAgIHB1c2ggQCR0YWdzLCAiXEBwdmUt
JG5hbWUiIGlmICRmbXQgZXEgJ3Fjb3cyJzsKPiArICAgIGx2Y3JlYXRlKCR2ZywgJG5hbWUsICRs
dm1zaXplLCAkdGFncyk7Cj4gKwo+ICsgICAgaWYgKCRmbXQgZXEgJ3Fjb3cyJykgewo+ICsJI2Zv
cm1hdCB0aGUgbHZtIHZvbHVtZSB3aXRoIHFjb3cyIGZvcm1hdAo+ICsJJGNsYXNzLT5hY3RpdmF0
ZV92b2x1bWUoJHN0b3JlaWQsICRzY2ZnLCAkbmFtZSwgdW5kZWYsIHt9KTsKCnRoZSBsYXN0IHR3
byBwYXJhbWV0ZXJzIGFyZSBub3QgbmVlZGVkLi4KCj4gKwlteSAkcGF0aCA9ICRjbGFzcy0+cGF0
aCgkc2NmZywgJG5hbWUsICRzdG9yZWlkKTsKPiArCVBWRTo6U3RvcmFnZTo6UGx1Z2luOjpxZW11
X2ltZ19jcmVhdGUoJHNjZmcsICRmbXQsICRzaXplLCAkcGF0aCwgJGJhY2tpbmcpOwo+ICsgICAg
fQo+ICAKPiAgICAgIHJldHVybiAkbmFtZTsKPiAgfQo+IEBAIC01MzgsNiArNTcxLDEyIEBAIHN1
YiBhY3RpdmF0ZV92b2x1bWUgewo+ICAKPiAgICAgIG15ICRsdm1fYWN0aXZhdGVfbW9kZSA9ICdl
eSc7Cj4gIAo+ICsgICAgI2FjdGl2YXRlIHZvbHVtZSAmJiBhbGwgc25hcHNob3RzIHZvbHVtZXMg
YnkgdGFnCj4gKyAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2
bWlkLCAkaXNCYXNlLCAkZm9ybWF0KSA9Cj4gKwkkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZvbG5h
bWUpOwo+ICsKPiArICAgICRwYXRoID0gIlxAcHZlLSRuYW1lIiBpZiAkZm9ybWF0IGVxICdxY293
Mic7Cj4gKwo+ICAgICAgbXkgJGNtZCA9IFsnL3NiaW4vbHZjaGFuZ2UnLCAiLWEkbHZtX2FjdGl2
YXRlX21vZGUiLCAkcGF0aF07Cj4gICAgICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gImNh
bid0IGFjdGl2YXRlIExWICckcGF0aCciKTsKPiAgICAgICRjbWQgPSBbJy9zYmluL2x2Y2hhbmdl
JywgJy0tcmVmcmVzaCcsICRwYXRoXTsKPiBAQCAtNTUwLDYgKzU4OSwxMCBAQCBzdWIgZGVhY3Rp
dmF0ZV92b2x1bWUgewo+ICAgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNjZmcsICR2b2xu
YW1lLCAkc3RvcmVpZCwgJHNuYXBuYW1lKTsKPiAgICAgIHJldHVybiBpZiAhIC1iICRwYXRoOwo+
ICAKPiArICAgIG15ICgkdnR5cGUsICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQs
ICRpc0Jhc2UsICRmb3JtYXQpID0KPiArCSRjbGFzcy0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFtZSk7
Cj4gKyAgICAkcGF0aCA9ICJcQHB2ZS0kbmFtZSIgaWYgJGZvcm1hdCBlcSAncWNvdzInOwo+ICsK
PiAgICAgIG15ICRjbWQgPSBbJy9zYmluL2x2Y2hhbmdlJywgJy1hbG4nLCAkcGF0aF07Cj4gICAg
ICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gImNhbid0IGRlYWN0aXZhdGUgTFYgJyRwYXRo
JyIpOwo+ICB9Cj4gQEAgLTU1NywxNSArNjAwLDI3IEBAIHN1YiBkZWFjdGl2YXRlX3ZvbHVtZSB7
Cj4gIHN1YiB2b2x1bWVfcmVzaXplIHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVp
ZCwgJHZvbG5hbWUsICRzaXplLCAkcnVubmluZykgPSBAXzsKPiAgCj4gLSAgICAkc2l6ZSA9ICgk
c2l6ZS8xMDI0LzEwMjQpIC4gIk0iOwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAk
YmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICsJJGNsYXNzLT5wYXJz
ZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICBteSAkbHZtc2l6ZSA9ICRzaXplIC8gMTAy
NDsKCkkgZG9uJ3QgcmVhbGx5IGdldCB0aGlzLCBzZWUgY29tbWVudHMgYWJvdmUgZm9yIGFsbG9j
X2ltYWdlCgo+ICsgICAgbXkgJHFjb3cyX292ZXJoZWFkID0gY2VpbCgkc2l6ZS8xMDI0LzEwMjQv
MTAyNC8xMDI0KSAqIDQwOTY7Cj4gKyAgICAkbHZtc2l6ZSArPSAkcWNvdzJfb3ZlcmhlYWQgaWYg
JGZvcm1hdCBlcSAncWNvdzInOwoKd2UgZGVmaW5pdGVseSBkb24ndCB3YW50IHRvIGhhdmUgdGhp
cyB0d2ljZS4uCgo+ICsgICAgJGx2bXNpemUgPSAiJHtsdm1zaXplfWsiOwo+ICAKPiAgICAgIG15
ICRwYXRoID0gJGNsYXNzLT5wYXRoKCRzY2ZnLCAkdm9sbmFtZSk7Cj4gLSAgICBteSAkY21kID0g
Wycvc2Jpbi9sdmV4dGVuZCcsICctTCcsICRzaXplLCAkcGF0aF07Cj4gKyAgICBteSAkY21kID0g
Wycvc2Jpbi9sdmV4dGVuZCcsICctTCcsICRsdm1zaXplLCAkcGF0aF07Cj4gIAo+ICAgICAgJGNs
YXNzLT5jbHVzdGVyX2xvY2tfc3RvcmFnZSgkc3RvcmVpZCwgJHNjZmctPntzaGFyZWR9LCB1bmRl
Ziwgc3ViIHsKPiAgCXJ1bl9jb21tYW5kKCRjbWQsIGVycm1zZyA9PiAiZXJyb3IgcmVzaXppbmcg
dm9sdW1lICckcGF0aCciKTsKPiAgICAgIH0pOwo+ICAKPiArICAgIGlmKCEkcnVubmluZyAmJiAk
Zm9ybWF0IGVxICdxY293MicpIHsKPiArCW15ICRwcmVhbGxvY19vcHQgPSBQVkU6OlN0b3JhZ2U6
OlBsdWdpbjo6cHJlYWxsb2NhdGlvbl9jbWRfb3B0aW9uKCRzY2ZnLCAkZm9ybWF0KTsKPiArCW15
ICRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ3Jlc2l6ZScsICItLSRwcmVhbGxvY19vcHQi
LCAnLWYnLCAkZm9ybWF0LCAkcGF0aCAsICRzaXplXTsKPiArCXJ1bl9jb21tYW5kKCRjbWQsIHRp
bWVvdXQgPT4gMTApOwo+ICsgICAgfQo+ICsKPiAgICAgIHJldHVybiAxOwo+ICB9Cj4gIAo+IEBA
IC01ODcsMzAgKzY0MiwxNTkgQEAgc3ViIHZvbHVtZV9zaXplX2luZm8gewo+ICBzdWIgdm9sdW1l
X3NuYXBzaG90IHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUs
ICRzbmFwKSA9IEBfOwo+ICAKPiAtICAgIGRpZSAibHZtIHNuYXBzaG90IGlzIG5vdCBpbXBsZW1l
bnRlZCI7Cj4gKyAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2
bWlkLCAkaXNCYXNlLCAkZm9ybWF0KSA9Cj4gKyAgICAgICAgJGNsYXNzLT5wYXJzZV92b2xuYW1l
KCR2b2xuYW1lKTsKPiArCj4gKyAgICBkaWUgImNhbid0IHNuYXBzaG90IHRoaXMgaW1hZ2UgZm9y
bWF0XG4iIGlmICRmb3JtYXQgbmUgJ3Fjb3cyJzsKPiArCj4gKyAgICAkY2xhc3MtPmFjdGl2YXRl
X3ZvbHVtZSgkc3RvcmVpZCwgJHNjZmcsICR2b2xuYW1lLCB1bmRlZiwge30pOwoKbGFzdCB0d28g
bm90IG5lZWRlZAoKPiArCj4gKyAgICBteSAkc25hcF92b2xuYW1lID0gJGNsYXNzLT5nZXRfc25h
cF92b2xuYW1lKCR2b2xuYW1lLCAkc25hcCk7Cj4gKyAgICBteSAkc25hcF9wYXRoID0gJGNsYXNz
LT5wYXRoKCRzY2ZnLCAkdm9sbmFtZSwgJHN0b3JlaWQsICRzbmFwKTsKCnNlZSBhYm92ZS4uCgo+
ICsKPiArICAgIG15ICRzaXplID0gJGNsYXNzLT52b2x1bWVfc2l6ZV9pbmZvKCRzY2ZnLCAkc3Rv
cmVpZCwgJHZvbG5hbWUsIDUpOwo+ICsKPiArICAgICNyZW5hbWUgY3VycmVudCBsdm0gdm9sdW1l
IHRvIHNuYXAgdm9sdW1lCj4gKyAgICBteSAkdmcgPSAkc2NmZy0+e3ZnbmFtZX07Cj4gKyAgICBw
cmludCJyZW5hbWUgJHZvbG5hbWUgdG8gJHNuYXBfdm9sbmFtZVxuIjsKPiArICAgIGV2YWwgeyBs
dnJlbmFtZSgkdmcsICR2b2xuYW1lLCAkc25hcF92b2xuYW1lKTsgfTsKPiArICAgIGlmICgkQCkg
ewo+ICsJZGllICJjYW4ndCByZW5hbWUgbHZtIHZvbHVtZSBmcm9tICR2b2xuYW1lIHRvICRzbmFw
X3ZvbG5hbWU6ICRAIFxuIjsKPiArICAgIH0KPiArCj4gKyAgICBldmFsIHsgJGNsYXNzLT5hbGxv
Y19pbWFnZSgkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAncWNvdzInLCAkdm9sbmFtZSwgJHNpemUv
MTAyNCwgJHNuYXBfcGF0aCk7IH07Cj4gKyAgICBpZiAoJEApIHsKPiArICAgICAgICBldmFsIHsg
JGNsYXNzLT5mcmVlX2ltYWdlKCRzdG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsIDApIH07CgptaXNz
aW5nIGVycm9yIGhhbmRsaW5nLCB0aGlzIG5lZWRzIHRvIHJlbmFtZSBiYWNrPyBhbHNvLCB0aGlz
IG1pZ2h0IHJldHVybiBhIGNvZGUtcmVmZXJlbmNlIHRoYXQgbmVlZHMgdG8gYmUgZXhlY3V0ZWQu
LgoKPiArICAgICAgICB3YXJuICRAIGlmICRAOwo+ICsgICAgfQo+ICB9Cj4gIAo+ICtzdWIgdm9s
dW1lX3JvbGxiYWNrX2lzX3Bvc3NpYmxlIHsKPiArICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3Rv
cmVpZCwgJHZvbG5hbWUsICRzbmFwLCAkYmxvY2tlcnMpID0gQF87Cj4gKwo+ICsgICAgbXkgJHNu
YXBfcGF0aCA9ICRjbGFzcy0+cGF0aCgkc2NmZywgJHZvbG5hbWUsICRzdG9yZWlkLCAkc25hcCk7
Cj4gKwo+ICsgICAgJGNsYXNzLT5hY3RpdmF0ZV92b2x1bWUoJHN0b3JlaWQsICRzY2ZnLCAkdm9s
bmFtZSwgdW5kZWYsIHt9KTsKPiArICAgIG15ICRzbmFwc2hvdHMgPSAkY2xhc3MtPnZvbHVtZV9z
bmFwc2hvdF9pbmZvKCRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUpOwo+ICsgICAgbXkgJHBhcmVu
dF9zbmFwID0gJHNuYXBzaG90cy0+e2N1cnJlbnR9LT57cGFyZW50fTsKCndvdWxkbid0IGl0IGJl
IGVub3VnaCB0byBjaGVjayB0aGF0IHRoaXMgZXF1YWxzICRzbmFwPwoKPiArCj4gKyAgICByZXR1
cm4gMSBpZiAkc25hcHNob3RzLT57JHBhcmVudF9zbmFwfS0+e2ZpbGV9IGVxICRzbmFwX3BhdGg7
Cj4gKyAgICBkaWUgImNhbid0IHJvbGxiYWNrLCAnJHNuYXAnIGlzIG5vdCBtb3N0IHJlY2VudCBz
bmFwc2hvdCBvbiAnJHZvbG5hbWUnXG4iOwo+ICsKPiArICAgIHJldHVybiAxOwo+ICt9Cj4gKwo+
ICsKPiAgc3ViIHZvbHVtZV9zbmFwc2hvdF9yb2xsYmFjayB7Cj4gICAgICBteSAoJGNsYXNzLCAk
c2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAkc25hcCkgPSBAXzsKPiAgCj4gLSAgICBkaWUgImx2
bSBzbmFwc2hvdCByb2xsYmFjayBpcyBub3QgaW1wbGVtZW50ZWQiOwo+ICsgICAgZGllICJjYW4n
dCByb2xsYmFjayBzbmFwc2hvdCBmb3IgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJHZvbG5hbWUg
IX4gbS9cLihxY293MikkLzsKCnRoaXMgc2hvdWxkIGdvIGJlbG93IHBhcnNlX3ZvbG5hbWUgYW5k
IHVzZSB0aGUgZm9ybWF0IGl0IHJldHVybnMuLgoKPiArCj4gKyAgICBteSAoJHZ0eXBlLCAkbmFt
ZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2bWlkLCAkaXNCYXNlLCAkZm9ybWF0KSA9Cj4gKyAg
ICAgICAgJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICAkY2xhc3Mt
PmFjdGl2YXRlX3ZvbHVtZSgkc3RvcmVpZCwgJHNjZmcsICR2b2xuYW1lLCB1bmRlZiwge30pOwoK
dHdvIHVubmVlZGVkIHBhcmFtZXRlcnMKCj4gKyAgICBteSAkc2l6ZSA9ICRjbGFzcy0+dm9sdW1l
X3NpemVfaW5mbygkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCA1KTsKPiArICAgIG15ICRzbmFw
X3BhdGggPSAkY2xhc3MtPnBhdGgoJHNjZmcsICR2b2xuYW1lLCAkc3RvcmVpZCwgJHNuYXApOwo+
ICsKPiArICAgICNzaW1wbHkgZGVsZXRlIHRoZSBjdXJyZW50IHNuYXBzaG90IGFuZCByZWNyZWF0
ZSBpdAo+ICsgICAgZXZhbCB7ICRjbGFzcy0+ZnJlZV9pbWFnZSgkc3RvcmVpZCwgJHNjZmcsICR2
b2xuYW1lLCAwKSB9OwoKbWlnaHQgcmV0dXJuIGEgY29kZSByZWZlcmVuY2UgdGhhdCBuZWVkcyB0
byBiZSBleGVjdXRlZC4uCgo+ICsgICAgaWYgKCRAKSB7Cj4gKwlkaWUgImNhbid0IGRlbGV0ZSBv
bGQgdm9sdW1lICR2b2xuYW1lOiAkQFxuIjsKPiArICAgIH0KPiArCj4gKyAgICBldmFsIHsgJGNs
YXNzLT5hbGxvY19pbWFnZSgkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAncWNvdzInLCAkdm9sbmFt
ZSwgJHNpemUvMTAyNCwgJHNuYXBfcGF0aCkgfTsKPiArICAgIGlmICgkQCkgewo+ICsJZGllICJj
YW4ndCBhbGxvY2F0ZSBuZXcgdm9sdW1lICR2b2xuYW1lOiAkQFxuIjsKPiArICAgIH0KPiArCj4g
KyAgICByZXR1cm4gdW5kZWY7Cj4gIH0KPiAgCj4gIHN1YiB2b2x1bWVfc25hcHNob3RfZGVsZXRl
IHsKPiAtICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwKSA9
IEBfOwo+ICsgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAs
ICRydW5uaW5nKSA9IEBfOwo+ICsKPiArICAgZGllICJjYW4ndCBkZWxldGUgc25hcHNob3QgZm9y
IHRoaXMgaW1hZ2UgZm9ybWF0XG4iIGlmICR2b2xuYW1lICF+IG0vXC4ocWNvdzIpJC87Cgp0aGlz
IHNob3VsZCBwYXJzZSB0aGUgdm9sbmFtZSBhbmQgdXNlIHRoZSByZXR1cm5lZCBmb3JtYXQhCgo+
ICsKPiArICAgcmV0dXJuIDEgaWYgJHJ1bm5pbmc7Cj4gKwo+ICsgICBteSAkY21kID0gIiI7Cj4g
KyAgIG15ICRwYXRoID0gJGNsYXNzLT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsK
PiArCj4gKyAgIG15ICRzbmFwc2hvdHMgPSAkY2xhc3MtPnZvbHVtZV9zbmFwc2hvdF9pbmZvKCRz
Y2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUpOwo+ICsgICBteSAkc25hcF9wYXRoID0gJHNuYXBzaG90
cy0+eyRzbmFwfS0+e2ZpbGV9Owo+ICsgICBteSAkc25hcF92b2xuYW1lID0gJHNuYXBzaG90cy0+
eyRzbmFwfS0+e3ZvbG5hbWV9Owo+ICsgICBkaWUgInZvbHVtZSAkc25hcF9wYXRoIGlzIG1pc3Np
bmciIGlmICEtZSAkc25hcF9wYXRoOwo+ICAKPiAtICAgIGRpZSAibHZtIHNuYXBzaG90IGRlbGV0
ZSBpcyBub3QgaW1wbGVtZW50ZWQiOwo+ICsgICBteSAkcGFyZW50X3NuYXAgPSAkc25hcHNob3Rz
LT57JHNuYXB9LT57cGFyZW50fTsKPiArICAgbXkgJGNoaWxkX3NuYXAgPSAkc25hcHNob3RzLT57
JHNuYXB9LT57Y2hpbGR9Owo+ICsKPiArICAgbXkgJHBhcmVudF9wYXRoID0gJHNuYXBzaG90cy0+
eyRwYXJlbnRfc25hcH0tPntmaWxlfSBpZiAkcGFyZW50X3NuYXA7Cj4gKyAgIG15ICRjaGlsZF9w
YXRoID0gJHNuYXBzaG90cy0+eyRjaGlsZF9zbmFwfS0+e2ZpbGV9IGlmICRjaGlsZF9zbmFwOwo+
ICsgICBteSAkY2hpbGRfdm9sbmFtZSA9ICRzbmFwc2hvdHMtPnskY2hpbGRfc25hcH0tPnt2b2xu
YW1lfSBpZiAkY2hpbGRfc25hcDsKCnNhbWUgYXMgaW4gdGhlIFBsdWdpbi5wbSBwYXRjaCwgdGhp
cyBpcyBub3QgYWxsb3dlZCBjb2RlIHN0eWxlIQoKPiArCj4gKyAgICNpZiBmaXJzdCBzbmFwc2hv
dCxhcyBpdCBzaG91bGQgYmUgYmlnZ2VyLCAgd2UgbWVyZ2UgY2hpbGQsIGFuZCByZW5hbWUgdGhl
IHNuYXBzaG90IHRvIGNoaWxkCj4gKyAgIGlmKCEkcGFyZW50X3NuYXApIHsKPiArCXByaW50ImNv
bW1pdCAkY2hpbGRfcGF0aFxuIjsKPiArCSRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ2Nv
bW1pdCcsICRjaGlsZF9wYXRoXTsKCmNvdWxkIHVzZSBgLWRgLCBzaW5jZSB3ZSBkb24ndCB1c2Ug
JGNoaWxkX3BhdGggYWZ0ZXJ3YXJkcyBhbnl3YXkKCj4gKwlldmFsIHsJcnVuX2NvbW1hbmQoJGNt
ZCkgfTsKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiZXJyb3IgY29tbWl0aW5nICRjaGlsZF9w
YXRoIHRvICRwYXJlbnRfcGF0aDogJEBcbiI7Cj4gKwl9Cj4gKwlwcmludCJkZWxldGUgJGNoaWxk
X3ZvbG5hbWVcbiI7Cj4gKwlldmFsIHsgJGNsYXNzLT5mcmVlX2ltYWdlKCRzdG9yZWlkLCAkc2Nm
ZywgJGNoaWxkX3ZvbG5hbWUsIDApIH07CgptaWdodCByZXR1cm4gYSBjb2RlIHJlZmVyZW5jZSB0
aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkLi4KCj4gKwlpZiAoJEApIHsKPiArCSAgICBkaWUgImVy
cm9yIGRlbGV0ZSBvbGQgc25hcHNob3Qgdm9sdW1lICRjaGlsZF92b2xuYW1lOiAkQFxuIjsKPiAr
CX0KPiArCXByaW50InJlbmFtZSAkc25hcF92b2xuYW1lIHRvICRjaGlsZF92b2xuYW1lXG4iOwo+
ICsJbXkgJHZnID0gJHNjZmctPnt2Z25hbWV9Owo+ICsJZXZhbCB7IGx2cmVuYW1lKCR2ZywgJHNu
YXBfdm9sbmFtZSwgJGNoaWxkX3ZvbG5hbWUpIH07Cj4gKwlpZiAoJEApIHsKPiArCSAgICBkaWUg
ImVycm9yIHJlbmFtaW5nIHNuYXBzaG90OiAkQFxuIjsKPiArCX0KPiArICAgIH0gZWxzZSB7Cj4g
Kwkjd2UgcmViYXNlIHRoZSBjaGlsZCBpbWFnZSBvbiB0aGUgcGFyZW50IGFzIG5ldyBiYWNraW5n
IGltYWdlCj4gKwlkaWUgIm1pc3NpbmcgcGFyZW50c25hcCBzbmFwc2hvdCB0byByZWJhc2UgY2hp
bGQgJGNoaWxkX3BhdGhcbiIgaWYgISRwYXJlbnRfcGF0aDsKCmhvdyB3b3VsZCB0aGlzIGhhcHBl
bj8KCj4gKwlwcmludCAibGluayAkY2hpbGRfc25hcCB0byAkcGFyZW50X3NuYXBcbiI7Cj4gKwkk
Y21kID0gWycvdXNyL2Jpbi9xZW11LWltZycsICdyZWJhc2UnLCAnLWInLCAkcGFyZW50X3BhdGgs
ICctRicsICdxY293MicsICctZicsICdxY293MicsICRjaGlsZF9wYXRoXTsKPiArCWV2YWwgeyBy
dW5fY29tbWFuZCgkY21kKSB9Owo+ICsJaWYgKCRAKSB7Cj4gKwkgICAgZGllICJlcnJvciByZWJh
c2UgJGNoaWxkX3BhdGggd2l0aCAkcGFyZW50X3BhdGg7ICRAXG4iOwo+ICsJfQo+ICsJI2RlbGV0
ZSB0aGUgc25hcHNob3QKPiArCWV2YWwgeyAkY2xhc3MtPmZyZWVfaW1hZ2UoJHN0b3JlaWQsICRz
Y2ZnLCAkc25hcF92b2xuYW1lLCAwKTsgfTsKCm1pZ2h0IHJldHVybiBhIGNvZGUgcmVmZXJlbmNl
IHRoYXQgbmVlZHMgdG8gYmUgZXhlY3V0ZWQuLgoKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAi
ZXJyb3IgZGVsZXRlIG9sZCBzbmFwc2hvdCB2b2x1bWUgJHNuYXBfdm9sbmFtZTogJEBcbiI7Cj4g
Kwl9Cj4gKyAgICB9Cj4gIH0KPiAgCj4gIHN1YiB2b2x1bWVfaGFzX2ZlYXR1cmUgewo+ICAgICAg
bXkgKCRjbGFzcywgJHNjZmcsICRmZWF0dXJlLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwbmFt
ZSwgJHJ1bm5pbmcpID0gQF87Cj4gIAo+ICAgICAgbXkgJGZlYXR1cmVzID0gewo+IC0JY29weSA9
PiB7IGJhc2UgPT4gMSwgY3VycmVudCA9PiAxfSwKPiAtCXJlbmFtZSA9PiB7Y3VycmVudCA9PiAx
fSwKPiArICAgICAgICBjb3B5ID0+IHsKPiArICAgICAgICAgICAgYmFzZSA9PiB7IHFjb3cyID0+
IDEsIHJhdyA9PiAxfSwKPiArICAgICAgICAgICAgY3VycmVudCA9PiB7IHFjb3cyID0+IDEsIHJh
dyA9PiAxfSwKPiArICAgICAgICAgICAgc25hcCA9PiB7IHFjb3cyID0+IDEgfSwKCmRpZCB5b3Ug
YWN0dWFsbHkgdGVzdCB0aGlzPyBBRkFJQ1QgdGhpcyB3b3VsZCBzdGlsbCBmYWxsIGJhY2sgdG8g
aW50ZXJuYWwgcWNvdzIgc25hcHNob3RzPwoKPiArICAgICAgICB9LAo+ICsgICAgICAgICdyZW5h
bWUnID0+IHsKPiArICAgICAgICAgICAgY3VycmVudCA9PiB7IHFjb3cyID0+IDEsIHJhdyA9PiAx
fSwKCmhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBzbmFwc2hvdHM/Cgo+ICsgICAgICAgIH0s
Cj4gKyAgICAgICAgc25hcHNob3QgPT4gewo+ICsgICAgICAgICAgICBjdXJyZW50ID0+IHsgcWNv
dzIgPT4gMSB9LAo+ICsgICAgICAgICAgICBzbmFwID0+IHsgcWNvdzIgPT4gMSB9LAo+ICsgICAg
ICAgIH0sCj4gKyAgICAgICAgdGVtcGxhdGUgPT4gewo+ICsgICAgICAgICAgICBjdXJyZW50ID0+
IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDF9LAoKc2VlIGJlbG93Li4KCj4gKyAgICAgICAgfSwKPiAr
CWNsb25lID0+IHsKPiArCSAgICBiYXNlID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDEgfSwKCmhv
dyBjYW4gd2UgZG8gbGlua2VkIGNsb25lcyBvZiByYXcgdm9sdW1lcz8gaG93IGNhbiB3ZSBkbyBs
aW5rZWQgY2xvbmVzIG9mIHFjb3cyIHZvbHVtZXMgaWYgd2UgZG9uJ3QgYWxsb3cgY3JlYXRpbmcg
YmFzZSB2b2x1bWVzPwoKPiArCX0sCj4gICAgICB9Owo+ICAKPiAtICAgIG15ICgkdnR5cGUsICRu
YW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQsICRpc0Jhc2UpID0KPiArCj4gKyAgICBt
eSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2bWlkLCAkaXNCYXNlLCAk
Zm9ybWF0KSA9Cj4gIAkkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZvbG5hbWUpOwo+ICAKPiAgICAg
IG15ICRrZXkgPSB1bmRlZjsKPiBAQCAtNjE5LDcgKzgwMyw3IEBAIHN1YiB2b2x1bWVfaGFzX2Zl
YXR1cmUgewo+ICAgICAgfWVsc2V7Cj4gIAkka2V5ID0gICRpc0Jhc2UgPyAnYmFzZScgOiAnY3Vy
cmVudCc7Cj4gICAgICB9Cj4gLSAgICByZXR1cm4gMSBpZiAkZmVhdHVyZXMtPnskZmVhdHVyZX0t
Pnska2V5fTsKPiArICAgIHJldHVybiAxIGlmIGRlZmluZWQoJGZlYXR1cmVzLT57JGZlYXR1cmV9
LT57JGtleX0tPnskZm9ybWF0fSk7Cgp3aHkgdGhlIGRlZmluZWQ/Cgo+ICAKPiAgICAgIHJldHVy
biB1bmRlZjsKPiAgfQo+IEBAIC03NDAsNCArOTI0LDEyIEBAIHN1YiByZW5hbWVfdm9sdW1lIHsK
PiAgICAgIHJldHVybiAiJHtzdG9yZWlkfToke3RhcmdldF92b2xuYW1lfSI7Cj4gIH0KPiAgCj4g
K3N1YiBnZXRfc25hcF92b2xuYW1lIHsKPiArICAgIG15ICgkY2xhc3MsICR2b2xuYW1lLCAkc25h
cG5hbWUpID0gQF87Cj4gKwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAkYmFzZW5h
bWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPSAkY2xhc3MtPnBhcnNlX3ZvbG5hbWUo
JHZvbG5hbWUpOwo+ICsgICAgJG5hbWUgPSAhJHNuYXBuYW1lIHx8ICRzbmFwbmFtZSBlcSAnY3Vy
cmVudCcgPyAkdm9sbmFtZSA6ICJzbmFwLSRzbmFwbmFtZS0kbmFtZSI7CgpzZWUgYWJvdmUuLgoK
PiArICAgIHJldHVybiAkbmFtZTsKPiArfQo+ICsKPiAgMTsKPiAtLSAKPiAyLjM5LjUKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFp
bGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3ht
b3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK