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 07B311FF189
	for <inbox@lore.proxmox.com>; Fri, 21 Mar 2025 14:36:39 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id C1F341E8EF;
	Fri, 21 Mar 2025 14:36:35 +0100 (CET)
Mime-Version: 1.0
Date: Fri, 21 Mar 2025 14:36:00 +0100
Message-Id: <D8LZFVSKYZR2.3ITT59170YKMA@proxmox.com>
From: "Alexander Zeidler" <a.zeidler@proxmox.com>
To: "Lukas Wagner" <l.wagner@proxmox.com>, "Proxmox VE development
 discussion" <pve-devel@lists.proxmox.com>
References: <20250313151734.258337-1-a.zeidler@proxmox.com>
 <3a9988eb-d50f-440f-816b-e8a8b7353e6c@proxmox.com>
In-Reply-To: <3a9988eb-d50f-440f-816b-e8a8b7353e6c@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.086 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
 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] [RFC proxmox] fix #6143: notify: allow overriding
 notification templates
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>

T24gTW9uIE1hciAxNywgMjAyNSBhdCAyOjQzIFBNIENFVCwgTHVrYXMgV2FnbmVyIHdyb3RlOgo+
IFRoYW5rcyBhIGxvdCBmb3IgdGhpcyBwYXRjaCwgbXVjaCBhcHByZWNpYXRlZCEKVGhhbmsgeW91
ISBBbGwgb2YgeW91ciBjb21tZW50cyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIG5ldyBwYXRjaDoK
aHR0cHM6Ly9sb3JlLnByb3htb3guY29tL3B2ZS1kZXZlbC8yMDI1MDMyMTEzMzM0MS4xNTEzNDAt
MS1hLnplaWRsZXJAcHJveG1veC5jb20vCgo+Cj4gT24gIDIwMjUtMDMtMTMgMTY6MTcsIEFsZXhh
bmRlciBaZWlkbGVyIHdyb3RlOgo+PiBQcmV2aW91c2x5LCBub3RpZmljYXRpb24gdGVtcGxhdGVz
IGNvdWxkIGJlIG1vZGlmaWVkIGJ5IHRoZSB1c2VyLCBidXQKPj4gdGhlc2Ugd2VyZSBvdmVyd3Jp
dHRlbiBhZ2FpbiB3aXRoIGluc3RhbGxpbmcgbmV3ZXIgcGFja2FnZSB2ZXJzaW9ucyBvZgo+PiBw
dmUtbWFuYWdlciBhbmQgcHJveG1veC1iYWNrdXAuCj4+IAo+PiBOb3cgb3ZlcnJpZGUgdGVtcGxh
dGVzIGNhbiBiZSBjcmVhdGVkIGNsdXN0ZXItd2lkZSBpbiB0aGUgcGF0aAo+PiDigJwvZXRjL3tw
dmUscHJveG1veC1iYWNrdXB9L25vdGlmaWNhdGlvbi10ZW1wbGF0ZXMve25hbWVzcGFjZX3igJ0s
IHdoaWNoCj4+IGFyZSB1c2VkIHdpdGggcHJpb3JpdHkuIFRoZSBmb2xkZXIgc3RydWN0dXJlIGhh
cyB0byBiZSBjcmVhdGVkIGFuZAo+PiBwb3B1bGF0ZWQgbWFudWFsbHkgKGUuZy4gL2V0Yy9wdmUv
bm90aWZpY2F0aW9uLXRlbXBsYXRlcy9kZWZhdWx0LykuCj4+IAo+PiBJZiBvdmVycmlkZSB0ZW1w
bGF0ZXMgYXJlIG5vdCBleGlzdGluZyBvciB0aGVpciByZW5kZXJpbmcgZmFpbHMsIHRoZQo+PiB2
ZW5kb3IgdGVtcGxhdGVzIGluCj4+ICIvdXNyL3NoYXJlL3twdmUtbWFuYWdlcixwcm94bW94LWJh
Y2t1cH0vdGVtcGxhdGVzL2RlZmF1bHQvIiBhcmUgdXNlZC4KPj4gCj4+IFNlcXVlbmNlOiBbb3Zl
cnJpZGUgaHRtbCAtPiB2ZW5kb3IgaHRtbCAtPl0gb3ZlcnJpZGUgdHh0IC0+IHZlbmRvciB0eHQK
Pj4gCj4+IEFuIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgaWYgbm9uZSBvZiB0aGUgdGVtcGxhdGUg
Y2FuZGlkYXRlcyBjb3VsZCBiZQo+PiB1c2VkLiBVc2luZyBhbiBvdmVycmlkZSB0ZW1wbGF0ZSBn
ZXRzIG5vdCBsb2dnZWQuCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgWmVpZGxlciA8
YS56ZWlkbGVyQHByb3htb3guY29tPgo+PiAtLS0KPj4gCj4+IFF1ZXN0aW9uczoKPj4gLSBJcyB0
aGVyZSBhbnl0aGluZyBhZ2FpbnN0IHRoZSBjaG9zZW4gb3ZlcnJpZGUgcGF0aD8KPgo+IElNTyB0
aGV5IGFyZSBmaW5lLCBidXQgc29tZWJvZHkgZWxzZSBzaG91bGQgZG91YmxlLWNoZWNrLgo+Cj4+
IAo+PiBVcGNvbWluZyAoZnJvbSBidWd6aWxsYSByZXBvcnQpOgo+PiAtIEx1a2FzIFdhZ25lcjog
RXhpc3RpbmcgdGVtcGxhdGVzL3ZhcmlhYmxlcy9oZWxwZXJzIGhhdmUgYmVlbgo+PiAgIHJldmll
d2VkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIE9LIHRvIGJlIHB1YmxpYyBBUEkKPgo+IEkn
bGwgcmV2aXNpdCB0aGUgZXhpc3RpbmcgdGVtcGxhdGVzIGluIHRoZSBuZXh0IGRheXMgYW5kIHNl
ZSBpZiB0aGVyZSBpcyBhbnl0aGluZwo+IHdlIHNob3VsZCBmaXggdXAgYmVmb3JlIGV4cG9zaW5n
IHRoaXMgdG8gdGhlIHVzZXIuIFRoaXMgcGF0Y2gKPiBzaG91bGQgbm90IGJlIG1lcmdlZCB1bnRp
bCB0aGUgZXhpc3RpbmcgdGVtcGxhdGVzIGhhdmUgYmVlbiBhdWRpdGVkLgo+Cj4+IC0gVGhlIHN0
ZXBzIG5lZWRlZCB0byBvdmVycmlkZSB0aGUgdGVtcGxhdGUgYXJlIGFkZGVkIHRvIHRoZQo+PiAg
IG5vdGlmaWNhdGlvbiBkb2NzCj4+IC0gVGVtcGxhdGUgdmFyaWFibGVzIGFuZCBoZWxwZXJzIGFy
ZSBkb2N1bWVudGVkCj4+IAo+PiAKPj4gIHByb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L21vZC5y
cyAgfCAgIDMgKy0KPj4gIHByb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L3Bicy5ycyAgfCAgIDkg
KystCj4+ICBwcm94bW94LW5vdGlmeS9zcmMvY29udGV4dC9wdmUucnMgIHwgIDEwICsrLQo+PiAg
cHJveG1veC1ub3RpZnkvc3JjL2NvbnRleHQvdGVzdC5ycyB8ICAgMSArCj4+ICBwcm94bW94LW5v
dGlmeS9zcmMvcmVuZGVyZXIvbW9kLnJzIHwgMTI0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tCj4+ICA1IGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygt
KQo+PiAKPj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L21vZC5ycyBi
L3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L21vZC5ycwo+PiBpbmRleCBjMGE1YTEzYi4uYzQ2
NDlkOTEgMTAwNjQ0Cj4+IC0tLSBhL3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L21vZC5ycwo+
PiArKysgYi9wcm94bW94LW5vdGlmeS9zcmMvY29udGV4dC9tb2QucnMKPj4gQEAgLTI0LDExICsy
NCwxMiBAQCBwdWIgdHJhaXQgQ29udGV4dDogU2VuZCArIFN5bmMgKyBEZWJ1ZyB7Cj4+ICAgICAg
Zm4gaHR0cF9wcm94eV9jb25maWcoJnNlbGYpIC0+IE9wdGlvbjxTdHJpbmc+Owo+PiAgICAgIC8v
LyBSZXR1cm4gZGVmYXVsdCBjb25maWcgZm9yIGJ1aWx0LWluIHRhcmdldHMvbWF0Y2hlcnMuCj4+
ICAgICAgZm4gZGVmYXVsdF9jb25maWcoJnNlbGYpIC0+ICYnc3RhdGljIHN0cjsKPj4gLSAgICAv
Ly8gTG9va3VwIGEgdGVtcGxhdGUgaW4gYSBjZXJ0YWluIChvcHRpb25hbCkgbmFtZXNwYWNlCj4+
ICsgICAgLy8vIExvb2t1cCBhIHRlbXBsYXRlIChvciBpdHMgb3ZlcnJpZGUpIGluIGEgY2VydGFp
biAob3B0aW9uYWwpIG5hbWVzcGFjZQo+PiAgICAgIGZuIGxvb2t1cF90ZW1wbGF0ZSgKPj4gICAg
ICAgICAgJnNlbGYsCj4+ICAgICAgICAgIGZpbGVuYW1lOiAmc3RyLAo+PiAgICAgICAgICBuYW1l
c3BhY2U6IE9wdGlvbjwmc3RyPiwKPj4gKyAgICAgICAgdXNlX292ZXJyaWRlOiBib29sLAo+PiAg
ICAgICkgLT4gUmVzdWx0PE9wdGlvbjxTdHJpbmc+LCBFcnJvcj47Cj4+ICB9Cj4+ICAKPj4gZGlm
ZiAtLWdpdCBhL3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L3Bicy5ycyBiL3Byb3htb3gtbm90
aWZ5L3NyYy9jb250ZXh0L3Bicy5ycwo+PiBpbmRleCBlODEwNmM1Ny4uZGE0ZDliYTAgMTAwNjQ0
Cj4+IC0tLSBhL3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L3Bicy5ycwo+PiArKysgYi9wcm94
bW94LW5vdGlmeS9zcmMvY29udGV4dC9wYnMucnMKPj4gQEAgLTEwOSw4ICsxMDksMTUgQEAgaW1w
bCBDb250ZXh0IGZvciBQQlNDb250ZXh0IHsKPj4gICAgICAgICAgJnNlbGYsCj4+ICAgICAgICAg
IGZpbGVuYW1lOiAmc3RyLAo+PiAgICAgICAgICBuYW1lc3BhY2U6IE9wdGlvbjwmc3RyPiwKPj4g
KyAgICAgICAgdXNlX292ZXJyaWRlOiBib29sLAo+Cj4gVGhlIGBUZW1wbGF0ZVNvdXJjZWAgdHlw
ZSBJIG1lbnRpb24gYmVsb3cgd291bGQgYWxzbyBiZSB1c2VkIGhlcmUKPiBpbnN0ZWFkIG9mIGEg
Ym9vbAo+Cj4+ICAgICAgKSAtPiBSZXN1bHQ8T3B0aW9uPFN0cmluZz4sIEVycm9yPiB7Cj4+IC0g
ICAgICAgIGxldCBwYXRoID0gUGF0aDo6bmV3KCIvdXNyL3NoYXJlL3Byb3htb3gtYmFja3VwL3Rl
bXBsYXRlcyIpCj4+ICsgICAgICAgIGxldCBwYXRoID0gaWYgdXNlX292ZXJyaWRlIHsKPj4gKyAg
ICAgICAgICAgICIvZXRjL3Byb3htb3gtYmFja3VwL25vdGlmaWNhdGlvbi10ZW1wbGF0ZXMiCj4+
ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAiL3Vzci9zaGFyZS9wcm94bW94LWJh
Y2t1cC90ZW1wbGF0ZXMiCj4+ICsgICAgICAgIH07Cj4+ICsKPj4gKyAgICAgICAgbGV0IHBhdGgg
PSBQYXRoOjpuZXcoJnBhdGgpCj4+ICAgICAgICAgICAgICAuam9pbihuYW1lc3BhY2UudW53cmFw
X29yKCJkZWZhdWx0IikpCj4+ICAgICAgICAgICAgICAuam9pbihmaWxlbmFtZSk7Cj4+ICAKPj4g
ZGlmZiAtLWdpdCBhL3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L3B2ZS5ycyBiL3Byb3htb3gt
bm90aWZ5L3NyYy9jb250ZXh0L3B2ZS5ycwo+PiBpbmRleCBkNDlhYjI3Yy4uMDViMWI1YjcgMTAw
NjQ0Cj4+IC0tLSBhL3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L3B2ZS5ycwo+PiArKysgYi9w
cm94bW94LW5vdGlmeS9zcmMvY29udGV4dC9wdmUucnMKPj4gQEAgLTU4LDEwICs1OCwxOCBAQCBp
bXBsIENvbnRleHQgZm9yIFBWRUNvbnRleHQgewo+PiAgICAgICAgICAmc2VsZiwKPj4gICAgICAg
ICAgZmlsZW5hbWU6ICZzdHIsCj4+ICAgICAgICAgIG5hbWVzcGFjZTogT3B0aW9uPCZzdHI+LAo+
PiArICAgICAgICB1c2Vfb3ZlcnJpZGU6IGJvb2wsCj4+ICAgICAgKSAtPiBSZXN1bHQ8T3B0aW9u
PFN0cmluZz4sIEVycm9yPiB7Cj4+IC0gICAgICAgIGxldCBwYXRoID0gUGF0aDo6bmV3KCIvdXNy
L3NoYXJlL3B2ZS1tYW5hZ2VyL3RlbXBsYXRlcyIpCj4+ICsgICAgICAgIGxldCBwYXRoID0gaWYg
dXNlX292ZXJyaWRlIHsKPj4gKyAgICAgICAgICAgICIvZXRjL3B2ZS9ub3RpZmljYXRpb24tdGVt
cGxhdGVzIgo+PiArICAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgIi91c3Ivc2hhcmUv
cHZlLW1hbmFnZXIvdGVtcGxhdGVzIgo+PiArICAgICAgICB9Owo+PiArCj4+ICsgICAgICAgIGxl
dCBwYXRoID0gUGF0aDo6bmV3KCZwYXRoKQo+PiAgICAgICAgICAgICAgLmpvaW4obmFtZXNwYWNl
LnVud3JhcF9vcigiZGVmYXVsdCIpKQo+PiAgICAgICAgICAgICAgLmpvaW4oZmlsZW5hbWUpOwo+
PiArCj4+ICAgICAgICAgIGxldCB0ZW1wbGF0ZV9zdHJpbmcgPSBwcm94bW94X3N5czo6ZnM6OmZp
bGVfcmVhZF9vcHRpb25hbF9zdHJpbmcocGF0aCkKPj4gICAgICAgICAgICAgIC5tYXBfZXJyKHxl
cnJ8IEVycm9yOjpHZW5lcmljKGZvcm1hdCEoImNvdWxkIG5vdCBsb2FkIHRlbXBsYXRlOiB7ZXJy
fSIpKSk/Owo+PiAgICAgICAgICBPayh0ZW1wbGF0ZV9zdHJpbmcpCj4+IGRpZmYgLS1naXQgYS9w
cm94bW94LW5vdGlmeS9zcmMvY29udGV4dC90ZXN0LnJzIGIvcHJveG1veC1ub3RpZnkvc3JjL2Nv
bnRleHQvdGVzdC5ycwo+PiBpbmRleCA1ZGYyNWQwNS4uNmVmZDg0YzUgMTAwNjQ0Cj4+IC0tLSBh
L3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L3Rlc3QucnMKPj4gKysrIGIvcHJveG1veC1ub3Rp
Znkvc3JjL2NvbnRleHQvdGVzdC5ycwo+PiBAQCAtMjksNiArMjksNyBAQCBpbXBsIENvbnRleHQg
Zm9yIFRlc3RDb250ZXh0IHsKPj4gICAgICAgICAgJnNlbGYsCj4+ICAgICAgICAgIF9maWxlbmFt
ZTogJnN0ciwKPj4gICAgICAgICAgX25hbWVzcGFjZTogT3B0aW9uPCZzdHI+LAo+PiArICAgICAg
ICBfdXNlX292ZXJyaWRlOiBib29sLAo+PiAgICAgICkgLT4gUmVzdWx0PE9wdGlvbjxTdHJpbmc+
LCBFcnJvcj4gewo+PiAgICAgICAgICBPayhTb21lKFN0cmluZzo6bmV3KCkpKQo+PiAgICAgIH0K
Pj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtbm90aWZ5L3NyYy9yZW5kZXJlci9tb2QucnMgYi9wcm94
bW94LW5vdGlmeS9zcmMvcmVuZGVyZXIvbW9kLnJzCj4+IGluZGV4IGUwNThlYTIyLi5hYzUxOWJl
ZSAxMDA2NDQKPj4gLS0tIGEvcHJveG1veC1ub3RpZnkvc3JjL3JlbmRlcmVyL21vZC5ycwo+PiAr
KysgYi9wcm94bW94LW5vdGlmeS9zcmMvcmVuZGVyZXIvbW9kLnJzCj4+IEBAIC0xOTEsNyArMTkx
LDcgQEAgaW1wbCBWYWx1ZVJlbmRlckZ1bmN0aW9uIHsKPj4gIH0KPj4gIAo+PiAgLy8vIEF2YWls
YWJsZSB0ZW1wbGF0ZSB0eXBlcwo+PiAtI1tkZXJpdmUoQ29weSwgQ2xvbmUpXQo+PiArI1tkZXJp
dmUoQ29weSwgQ2xvbmUsIFBhcnRpYWxFcSldCj4+ICBwdWIgZW51bSBUZW1wbGF0ZVR5cGUgewo+
PiAgICAgIC8vLyBIVE1MIGJvZHkgdGVtcGxhdGUKPj4gICAgICBIdG1sQm9keSwKPj4gQEAgLTI1
MCw3MCArMjUwLDEwNCBAQCBpbXBsIEJsb2NrUmVuZGVyRnVuY3Rpb25zIHsKPj4gIH0KPj4gIAo+
PiAgZm4gcmVuZGVyX3RlbXBsYXRlX2ltcGwoCj4+IC0gICAgdGVtcGxhdGU6ICZzdHIsCj4+ICAg
ICAgZGF0YTogJlZhbHVlLAo+PiAgICAgIHJlbmRlcmVyOiBUZW1wbGF0ZVR5cGUsCj4+IC0pIC0+
IFJlc3VsdDxTdHJpbmcsIEVycm9yPiB7Cj4+IC0gICAgbGV0IG11dCBoYW5kbGViYXJzID0gSGFu
ZGxlYmFyczo6bmV3KCk7Cj4+IC0gICAgaGFuZGxlYmFycy5yZWdpc3Rlcl9lc2NhcGVfZm4ocmVu
ZGVyZXIuZXNjYXBlX2ZuKCkpOwo+PiArICAgIGZpbGVuYW1lOiAmc3RyLAo+PiArICAgIHVzZV9v
dmVycmlkZTogYm9vbCwKPj4gKyAgICBodG1sX2ZhbGxiYWNrOiBib29sLAo+PiArKSAtPiBSZXN1
bHQ8T3B0aW9uPFN0cmluZz4sIEVycm9yPiB7Cj4+ICsgICAgbGV0IHRlbXBsYXRlX3N0cmluZyA9
IGNvbnRleHQ6OmNvbnRleHQoKS5sb29rdXBfdGVtcGxhdGUoJmZpbGVuYW1lLCBOb25lLCB1c2Vf
b3ZlcnJpZGUpPzsKPj4gKwo+PiArICAgIGlmIGxldCBTb21lKHRlbXBsYXRlX3N0cmluZykgPSB0
ZW1wbGF0ZV9zdHJpbmcgewo+PiArICAgICAgICBsZXQgbXV0IGhhbmRsZWJhcnMgPSBIYW5kbGVi
YXJzOjpuZXcoKTsKPj4gKyAgICAgICAgaGFuZGxlYmFycy5yZWdpc3Rlcl9lc2NhcGVfZm4ocmVu
ZGVyZXIuZXNjYXBlX2ZuKCkpOwo+PiArCj4+ICsgICAgICAgIGxldCBibG9ja19yZW5kZXJfZm5z
ID0gcmVuZGVyZXIuYmxvY2tfcmVuZGVyX2ZucygpOwo+PiArICAgICAgICBibG9ja19yZW5kZXJf
Zm5zLnJlZ2lzdGVyX2hlbHBlcnMoJm11dCBoYW5kbGViYXJzKTsKPj4gIAo+PiAtICAgIGxldCBi
bG9ja19yZW5kZXJfZm5zID0gcmVuZGVyZXIuYmxvY2tfcmVuZGVyX2ZucygpOwo+PiAtICAgIGJs
b2NrX3JlbmRlcl9mbnMucmVnaXN0ZXJfaGVscGVycygmbXV0IGhhbmRsZWJhcnMpOwo+PiArICAg
ICAgICBWYWx1ZVJlbmRlckZ1bmN0aW9uOjpyZWdpc3Rlcl9oZWxwZXJzKCZtdXQgaGFuZGxlYmFy
cyk7Cj4+ICsKPj4gKyAgICAgICAgaGFuZGxlYmFycy5yZWdpc3Rlcl9oZWxwZXIoCj4+ICsgICAg
ICAgICAgICAicmVsYXRpdmUtcGVyY2VudGFnZSIsCj4+ICsgICAgICAgICAgICBCb3g6Om5ldyho
YW5kbGViYXJzX3JlbGF0aXZlX3BlcmNlbnRhZ2VfaGVscGVyKSwKPj4gKyAgICAgICAgKTsKPj4g
IAo+PiAtICAgIFZhbHVlUmVuZGVyRnVuY3Rpb246OnJlZ2lzdGVyX2hlbHBlcnMoJm11dCBoYW5k
bGViYXJzKTsKPj4gKyAgICAgICAgbGV0IHJlbmRlcmVkX3RlbXBsYXRlID0gaGFuZGxlYmFycwo+
PiArICAgICAgICAgICAgLnJlbmRlcl90ZW1wbGF0ZSgmdGVtcGxhdGVfc3RyaW5nLCBkYXRhKQo+
PiArICAgICAgICAgICAgLm1hcF9lcnIofGVycnwgRXJyb3I6OlJlbmRlckVycm9yKGVyci5pbnRv
KCkpKT87Cj4+ICAKPj4gLSAgICBoYW5kbGViYXJzLnJlZ2lzdGVyX2hlbHBlcigKPj4gLSAgICAg
ICAgInJlbGF0aXZlLXBlcmNlbnRhZ2UiLAo+PiAtICAgICAgICBCb3g6Om5ldyhoYW5kbGViYXJz
X3JlbGF0aXZlX3BlcmNlbnRhZ2VfaGVscGVyKSwKPj4gLSAgICApOwo+PiArICAgICAgICBsZXQg
bXV0IHJlbmRlcmVkX3RlbXBsYXRlID0gcmVuZGVyZXIucG9zdHByb2Nlc3MocmVuZGVyZWRfdGVt
cGxhdGUpOwo+PiAgCj4+IC0gICAgbGV0IHJlbmRlcmVkX3RlbXBsYXRlID0gaGFuZGxlYmFycwo+
PiAtICAgICAgICAucmVuZGVyX3RlbXBsYXRlKHRlbXBsYXRlLCBkYXRhKQo+PiAtICAgICAgICAu
bWFwX2Vycih8ZXJyfCBFcnJvcjo6UmVuZGVyRXJyb3IoZXJyLmludG8oKSkpPzsKPj4gKyAgICAg
ICAgaWYgaHRtbF9mYWxsYmFjayB7Cj4+ICsgICAgICAgICAgICByZW5kZXJlZF90ZW1wbGF0ZSA9
IGZvcm1hdCEoCj4+ICsgICAgICAgICAgICAgICAgIjxodG1sPjxib2R5PjxwcmU+e308L3ByZT48
L2JvZHk+PC9odG1sPiIsCj4+ICsgICAgICAgICAgICAgICAgaGFuZGxlYmFyczo6aHRtbF9lc2Nh
cGUoJnJlbmRlcmVkX3RlbXBsYXRlKQo+PiArICAgICAgICAgICAgKTsKPj4gKyAgICAgICAgfQo+
PiAgCj4+IC0gICAgT2socmVuZGVyZWRfdGVtcGxhdGUpCj4+ICsgICAgICAgIE9rKFNvbWUocmVu
ZGVyZWRfdGVtcGxhdGUpKQo+PiArICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgIE9rKE5vbmUpCj4+
ICsgICAgfQo+PiAgfQo+PiAgCj4+ICAvLy8gUmVuZGVyIGEgdGVtcGxhdGUgc3RyaW5nLgo+PiAg
Ly8vCj4+IC0vLy8gVGhlIG91dHB1dCBmb3JtYXQgY2FuIGJlIGNob3NlbiB2aWEgdGhlIGByZW5k
ZXJlcmAgcGFyYW1ldGVyIChzZWUgW1RlbXBsYXRlVHlwZV0KPj4gLS8vLyBmb3IgYXZhaWxhYmxl
IG9wdGlvbnMpLgo+PiArLy8vIFRoZSBvdXRwdXQgZm9ybWF0IGNhbiBiZSBjaG9zZW4gdmlhIHRo
ZSBgdHlgIHBhcmFtZXRlciAoc2VlIFtUZW1wbGF0ZVR5cGVdCj4+ICsvLy8gZm9yIGF2YWlsYWJs
ZSBvcHRpb25zKS4gVXNlIGFuIG92ZXJyaWRlIHRlbXBsYXRlIGlmIGV4aXN0aW5nIGFuZCByZW5k
ZXJhYmxlLAo+Cj4gSSB0aGluayB0aGUgaW1wZXJhdGl2ZSBtb29kL3ZvaWNlIGlzIGEgYml0IGNv
bmZ1c2luZyB0byBkZXNjcmliZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhIGZ1bmN0aW9uLgo+IEl0
IHJlYWRzIGxpa2UgeW91IGFyZSBnaXZpbmcgYSBjb21tYW5kIHRvIHRoZSByZWFkZXIuCkltcGxl
bWVudGVkIGluIG5ldyBwYXRjaC4KCj4KPiBIb3cgYWJvdXQgc29tZXRoaW5nIGxpa2U6Cj4KPiAi
VGhlIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIHJlbmRlciBhbiBvdmVycmlkZSB0ZW1wbGF0ZSBpZiBp
dCBleGlzdCBhbmQgaXMgcmVuZGVyYWJsZSwgb3RoZXJ3aXNlCj4gaXQgdXNlcyB0aGUgb3JpZ2lu
YWwgdGVtcGxhdGUuIElmIHRoZSBbVGVtcGxhdGVUeXBlXSBpcyBgSHRtbEJvZHlgIGJ1dCBubyBI
VE1MIHRlbXBsYXRlIGNvdWxkIGJlCj4gZm91bmQgb3IgcmVuZGVyZWQsIGl0IGZhbGxzIGJhY2sg
dG8gdGhlIHBsYWludGV4dCB0ZW1wbGF0ZSwgZW5jYXBzdWxhdGluZyB0aGUgY29udGVudCBpbgo+
IGEgcHJlLWZvcm1hdHRlZCBIVE1MIGJsb2NrICg8cHJlPikuIgo+Cj4+ICsvLy8gb3RoZXJ3aXNl
IGZhbGwgYmFjayB0byBvcmlnaW5hbCB0ZW1wbGF0ZS4gSWYgW1RlbXBsYXRlVHlwZV0gaXMgYEh0
bWxCb2R5YCBidXQgbm8KPj4gKy8vLyBIVE1MIHRlbXBsYXRlIGNvdWxkIGJlIHVzZWQsIGZhbGwg
YmFjayB0byBwbGFpbnRleHQgdGVtcGxhdGVzIGFuZCBhZGQgdGhlIHRhZ3MKPj4gKy8vLyBgPGh0
bWw+PGJvZHk+PHByZT5gLgo+PiAgcHViIGZuIHJlbmRlcl90ZW1wbGF0ZSgKPj4gICAgICBtdXQg
dHk6IFRlbXBsYXRlVHlwZSwKPj4gICAgICB0ZW1wbGF0ZTogJnN0ciwKPj4gICAgICBkYXRhOiAm
VmFsdWUsCj4+ICApIC0+IFJlc3VsdDxTdHJpbmcsIEVycm9yPiB7Cj4+IC0gICAgbGV0IGZpbGVu
YW1lID0gZm9ybWF0ISgie3RlbXBsYXRlfS17c3VmZml4fSIsIHN1ZmZpeCA9IHR5LmZpbGVfc3Vm
Zml4KCkpOwo+PiAtCj4+IC0gICAgbGV0IHRlbXBsYXRlX3N0cmluZyA9IGNvbnRleHQ6OmNvbnRl
eHQoKS5sb29rdXBfdGVtcGxhdGUoJmZpbGVuYW1lLCBOb25lKT87Cj4+IC0KPj4gLSAgICBsZXQg
KHRlbXBsYXRlX3N0cmluZywgZmFsbGJhY2spID0gbWF0Y2ggKHRlbXBsYXRlX3N0cmluZywgdHkp
IHsKPj4gLSAgICAgICAgKE5vbmUsIFRlbXBsYXRlVHlwZTo6SHRtbEJvZHkpID0+IHsKPj4gLSAg
ICAgICAgICAgIHR5ID0gVGVtcGxhdGVUeXBlOjpQbGFpbnRleHRCb2R5Owo+PiAtICAgICAgICAg
ICAgbGV0IHBsYWludGV4dF9maWxlbmFtZSA9IGZvcm1hdCEoInt0ZW1wbGF0ZX0te3N1ZmZpeH0i
LCBzdWZmaXggPSB0eS5maWxlX3N1ZmZpeCgpKTsKPj4gLSAgICAgICAgICAgICgKPj4gLSAgICAg
ICAgICAgICAgICBjb250ZXh0Ojpjb250ZXh0KCkubG9va3VwX3RlbXBsYXRlKCZwbGFpbnRleHRf
ZmlsZW5hbWUsIE5vbmUpPywKPj4gLSAgICAgICAgICAgICAgICB0cnVlLAo+PiAtICAgICAgICAg
ICAgKQo+PiArICAgIGxldCBtdXQgdXNlX292ZXJyaWRlID0gdHJ1ZTsKPj4gKyAgICBsZXQgbXV0
IGh0bWxfZmFsbGJhY2sgPSBmYWxzZTsKPj4gKwo+PiArICAgIGxvb3Agewo+PiArICAgICAgICBs
ZXQgZmlsZW5hbWUgPSBmb3JtYXQhKCJ7dGVtcGxhdGV9LXtzdWZmaXh9Iiwgc3VmZml4ID0gdHku
ZmlsZV9zdWZmaXgoKSk7Cj4+ICsgICAgICAgIGxldCByZXN1bHQgPSByZW5kZXJfdGVtcGxhdGVf
aW1wbChkYXRhLCB0eSwgJmZpbGVuYW1lLCB1c2Vfb3ZlcnJpZGUsIGh0bWxfZmFsbGJhY2spOwo+
PiArCj4+ICsgICAgICAgIG1hdGNoIHJlc3VsdCB7Cj4+ICsgICAgICAgICAgICBPayhTb21lKHMp
KSA9PiB7Cj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIE9rKHMpOwo+PiArICAgICAgICAgICAg
fQo+PiArICAgICAgICAgICAgT2soTm9uZSkgPT4ge30KPj4gKyAgICAgICAgICAgIEVycihlcnIp
ID0+IHsKPj4gKyAgICAgICAgICAgICAgICBsZXQgc291cmNlID0gaWYgdXNlX292ZXJyaWRlIHsg
Im92ZXJyaWRlIiB9IGVsc2UgeyAidmVuZG9yIiB9Owo+PiArICAgICAgICAgICAgICAgIHRyYWNp
bmc6OmVycm9yISgiZmFpbGVkIHRvIHJlbmRlciB7c291cmNlfSB0ZW1wbGF0ZSAne2ZpbGVuYW1l
fSc6IHtlcnJ9Iik7Cj4+ICsgICAgICAgICAgICB9Cj4+ICAgICAgICAgIH0KPj4gLSAgICAgICAg
KHRlbXBsYXRlX3N0cmluZywgXykgPT4gKHRlbXBsYXRlX3N0cmluZywgZmFsc2UpLAo+PiAtICAg
IH07Cj4+IC0KPj4gLSAgICBsZXQgdGVtcGxhdGVfc3RyaW5nID0gdGVtcGxhdGVfc3RyaW5nLm9r
X29yKEVycm9yOjpHZW5lcmljKGZvcm1hdCEoCj4+IC0gICAgICAgICJjb3VsZCBub3QgbG9hZCB0
ZW1wbGF0ZSAne3RlbXBsYXRlfSciCj4+IC0gICAgKSkpPzsKPj4gIAo+PiAtICAgIGxldCBtdXQg
cmVuZGVyZWQgPSByZW5kZXJfdGVtcGxhdGVfaW1wbCgmdGVtcGxhdGVfc3RyaW5nLCBkYXRhLCB0
eSk/Owo+PiAtICAgIHJlbmRlcmVkID0gdHkucG9zdHByb2Nlc3MocmVuZGVyZWQpOwo+PiAtCj4+
IC0gICAgaWYgZmFsbGJhY2sgewo+PiAtICAgICAgICByZW5kZXJlZCA9IGZvcm1hdCEoCj4+IC0g
ICAgICAgICAgICAiPGh0bWw+PGJvZHk+PHByZT57fTwvcHJlPjwvYm9keT48L2h0bWw+IiwKPj4g
LSAgICAgICAgICAgIGhhbmRsZWJhcnM6Omh0bWxfZXNjYXBlKCZyZW5kZXJlZCkKPj4gLSAgICAg
ICAgKTsKPj4gKyAgICAgICAgbWF0Y2ggKHR5LCB1c2Vfb3ZlcnJpZGUpIHsKPj4gKyAgICAgICAg
ICAgIChUZW1wbGF0ZVR5cGU6Okh0bWxCb2R5LCB0cnVlKSA9PiB7Cj4+ICsgICAgICAgICAgICAg
ICAgdXNlX292ZXJyaWRlID0gZmFsc2U7Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAg
ICAoVGVtcGxhdGVUeXBlOjpIdG1sQm9keSwgZmFsc2UpID0+IHsKPj4gKyAgICAgICAgICAgICAg
ICB0eSA9IFRlbXBsYXRlVHlwZTo6UGxhaW50ZXh0Qm9keTsKPj4gKyAgICAgICAgICAgICAgICB1
c2Vfb3ZlcnJpZGUgPSB0cnVlOwo+PiArICAgICAgICAgICAgICAgIGh0bWxfZmFsbGJhY2sgPSB0
cnVlOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgKFRlbXBsYXRlVHlwZTo6UGxh
aW50ZXh0Qm9keSwgdHJ1ZSkgPT4gewo+PiArICAgICAgICAgICAgICAgIHVzZV9vdmVycmlkZSA9
IGZhbHNlOwo+PiArICAgICAgICAgICAgfQo+CgpJbXBsZW1lbnRlZCBpbiBuZXcgcGF0Y2g6Cj4g
QnR3LCB5b3UgY2FuIG1hdGNoIG9uIG11bHRpcGxlIHZhcmlhbnRzIGF0IHRoZSBzYW1lIHRpbWUg
dXNpbmcgdGhlIHwgb3BlcmF0b3IuCj4gICAgICAgICAgICAoVGVtcGxhdGVUeXBlOjpIdG1sQm9k
eSB8IFRlbXBsYXRlVHlwZTo6UGxhaW50ZXh0Qm9keSB8IFRlbXBsYXRlVHlwZTo6U3ViamVjdCwg
dHJ1ZSkgPT4gewo+ICAgICAgICAgICAgICAgIHVzZV9vdmVycmlkZSA9IGZhbHNlOwo+ICAgICAg
ICAgICAgfQo+Cj4gSSB0aGluayB0aGlzIHdvdWxkIGJlIG5pY2UgdG8gdXNlIGluIHRoaXMgY2Fz
ZSwgdGhlcmUgYXJlIGFjdHVhbGx5IG9ubHkKPiAzIGRpc3RpbmN0IGJvZGllcyBvZiB0aGUgbWF0
Y2ggYXJtczoKPiAgIC0gc2V0dGluZyBvdmVycmlkZSB0byBmYWxzZQo+ICAgLSBicmVha2luZyBm
cm9tIHRoZSBsb29wCj4gICAtIHNldHRpbmcgdHkgZm9yIEhUTUwtZnJvbS1wbGFpbiBmYWxsYmFj
aywgcmVzZXR0aW5nIG92ZXJyaWRlIHRvIHRydWUKPgo+PiArICAgICAgICAgICAgKFRlbXBsYXRl
VHlwZTo6UGxhaW50ZXh0Qm9keSwgZmFsc2UpID0+IHsKPj4gKyAgICAgICAgICAgICAgICAvLyBy
ZXR1cm4gZXJyb3IsIG5vIG90aGVyIG9wdGlvbnMKPj4gKyAgICAgICAgICAgICAgICBicmVhazsK
Pj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIChUZW1wbGF0ZVR5cGU6OlN1YmplY3Qs
IHRydWUpID0+IHsKPj4gKyAgICAgICAgICAgICAgICB1c2Vfb3ZlcnJpZGUgPSBmYWxzZTsKPj4g
KyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIChUZW1wbGF0ZVR5cGU6OlN1YmplY3QsIGZh
bHNlKSA9PiBicmVhaywKPj4gKyAgICAgICAgfQo+PiAgICAgIH0KPj4gIAo+PiAtICAgIE9rKHJl
bmRlcmVkKQo+PiArICAgIEVycihFcnJvcjo6R2VuZXJpYygKPj4gKyAgICAgICAgImZhaWxlZCB0
byByZW5kZXIgbm90aWZpY2F0aW9uIHRlbXBsYXRlLCBhbGwgdGVtcGxhdGUgY2FuZGlkYXRlcyBh
cmUgZXJyb25lb3VzIG9yIG1pc3NpbmciCj4+ICsgICAgICAgICAgICAuaW50bygpLAo+PiArICAg
ICkpCj4+ICB9Cj4+ICAKPj4gICNbY2ZnKHRlc3QpXQo+Cj4KCkltcGxlbWVudGVkIGluIG5ldyBw
YXRjaDoKPiBUaGUgb25seSB0aGluZyBJIGRvbid0IGxpa2UgdGhhdCBtdWNoIGlzIHRoZSB0d28g
Ym9vbGVhbiBwYXJhbWV0ZXJzIGZvcgo+IGByZW5kZXJfdGVtcGxhdGVfaW1wbGAuLi4gSW4gdGhp
cyBjYXNlIHdoZXJlIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQKPiBpbiBvbmx5IG9uZSBwbGFjZSAo
YW5kIGl0IHdpbGwgcHJvYmFibHkgc3RheSB0aGF0IHdheSkgaXQgaXMgbm90IHRoYXQKPiBiYWQs
IGJ1dCBib29sZWFuIHBhcmFtZXRlciBhbHdheXMgaGF2ZSB0aGUgcHJvYmxlbSB0aGF0IHRoZXkg
Y2FuIGJlIGEKPiBiaXQgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQgKHlvdSBoYXZlIHRvIGxvb2sg
YXQgdGhlIGRlZmluaXRpb24gb2YgdGhlCj4gZnVuY3Rpb24gdG8gZ2V0IHRoZSBtZWFuaW5nKSBh
bmQgY2FuIGJlIGVhc2lseSBtaXhlZCB1cCAoZS5nLiB5b3UgY291bGQgc3dpdGNoCj4gdGhlIG9y
ZGVyIG9mIGJvdGggcGFyYW1ldGVyczsgdGhpcyB3b3VsZCBiZSBoYXJkIHRvIHNwb3QgaW4gYSBy
ZXZpZXcgYW5kIHRoZQo+IGNvbXBpbGVyIGFsc28gZG9lcyBub3QgaGVscCBhdCBhbGwgaW4gdGhp
cyBjYXNlLgo+Cj4gSSB0aGluayB3aGF0IHdlIGNvdWxkIGRvIGhlcmUgaXMgdGhlIGZvbGxvd2lu
Zy4gSGF2ZSBhIAo+Cj4gcHViIGVudW0gVGVtcGxhdGVTb3VyY2Ugewo+ICAgICBWZW5kb3IsCj4g
ICAgIE92ZXJyaWRlCj4gfQo+Cj4gYW5kIGNoYW5nZSB0aGUgJ3VzZV9vdmVycmlkZScgcGFyYW1l
dGVyIHRvIGEgJ3NvdXJjZScgcGFyYW1ldGVyLgo+IFlvdSBtYXkgd2FudCB0byBkZXJpdmUgYERp
c3BsYXlgIGZvciB0aGUgYFRlbXBsYXRlU291cmNlYCBlbnVtCj4gc28gdGhhdCB5b3UgY2FuIHVz
ZSBpbiB0aGUgdGhlIGB0cmFjaW5nOjplcnJvciFgIHN0YXRlbWVudC4KPgoKSW1wbGVtZW50ZWQg
aW4gbmV3IHBhdGNoOgo+IEFsc28sIHdlIGNvdWxkIG1ha2UgdGhlIEhUTUwtZmFsbGluZy1iYWNr
LXRvLXBsYWludGV4dCBjYXNlIGEgc2VwYXJhdGUKPiB2YXJpYW50IGluIGBUZW1wbGF0ZVR5cGVg
IGUuZy4gVGVtcGxhdGVUeXBlOjpIdG1sRnJvbVBsYWludGV4dC4KPiBJbiB0aGUgbWF0Y2ggc3Rh
dGVtZW50IHlvdSBjYW4gdGhlbiBqdXN0IHNldCB0aGUgYHR5YCBhbmQgc2tpcAo+IHNldHRpbmcg
YGh0bWxfZmFsbGJhY2tgIGFsbHRvZ2V0aGVyLiBBZGRpbmcgdGhlIGA8aHRtbD48cHJlPmAKPiBz
dHVmZiBjYW4gYmUgbW92ZWQgdG8gdGhlIGBwb3N0cHJvY2Vzc2AgZnVuY3Rpb24sIHNpbWlsYXIK
PiB0byBob3cgYFN1YmplY3RgIGlzIGFscmVhZHkgcG9zdHByb2Nlc3NlZC4KCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcg
bGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNv
bS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==