From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pdm-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id B11641FF189
	for <inbox@lore.proxmox.com>; Fri, 21 Mar 2025 14:39:17 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id D94D71EAC9;
	Fri, 21 Mar 2025 14:39:16 +0100 (CET)
Mime-Version: 1.0
Date: Fri, 21 Mar 2025 14:39:11 +0100
Message-Id: <D8LZIBKALH9J.21W4E7ZF9LL4R@proxmox.com>
To: "Proxmox Datacenter Manager development discussion"
 <pdm-devel@lists.proxmox.com>, "Lukas Wagner" <l.wagner@proxmox.com>
From: "Max Carrara" <m.carrara@proxmox.com>
X-Mailer: aerc 0.18.2-0-ge037c095a049
References: <20250314141225.240768-1-l.wagner@proxmox.com>
 <20250314141225.240768-6-l.wagner@proxmox.com>
 <9947a9f1-bd50-4ae5-90d9-203dff5b0cb7@proxmox.com>
In-Reply-To: <9947a9f1-bd50-4ae5-90d9-203dff5b0cb7@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.077 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
 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. [proxmox.com, mod.rs, proxmox-datacenter-api.rs, qemu.rs, lxc.rs]
Subject: Re: [pdm-devel] [PATCH proxmox-datacenter-manager 5/8] remote
 tasks: add background task for task polling, use new task cache
X-BeenThere: pdm-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Datacenter Manager development discussion
 <pdm-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pdm-devel/>
List-Post: <mailto:pdm-devel@lists.proxmox.com>
List-Help: <mailto:pdm-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Datacenter Manager development discussion
 <pdm-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pdm-devel-bounces@lists.proxmox.com
Sender: "pdm-devel" <pdm-devel-bounces@lists.proxmox.com>

T24gVGh1IE1hciAyMCwgMjAyNSBhdCA2OjM5IFBNIENFVCwgVGhvbWFzIExhbXByZWNodCB3cm90
ZToKPiBBbSAxNC4wMy4yNSB1bSAxNToxMiBzY2hyaWViIEx1a2FzIFdhZ25lcjoKPiA+IFRoaXMg
Y29tbWl0cyBjaGFuZ2VzIHRoZSByZW1vdGUgdGFzayBtb2R1bGUgYXMgZm9sbG93czoKPiA+IAo+
ID4gLSBBZGQgYSBuZXcgYmFja2dyb3VuZCB0YXNrIGZvciByZWd1bGFyIHBvbGxpbmcgb2YgdGFz
ayBkYXRhCj4gPiBJbnN0ZWFkIG9mIHRyaWdnZXJpbmcgZmV0Y2hpbmcgb2YgdGFzayBkYXRhIGZy
b20gdGhlIGBnZXRfdGFza3NgIGZ1bmN0aW9uLAo+ID4gd2hpY2ggaXMgdXN1YWxseSBjYWxsZWQg
YnkgYW4gQVBJIGhhbmRsZXIsIHdlIG1vdmUgdGhlIGZldGNoaW5nIHRvIGEKPiA+IG5ldyBiYWNr
Z3JvdW5kIHRhc2suIFRoZSB0YXNrIGZldGNoZXMgdGhlIGxhdGVzdCB0YXNrcyBmcm9tIGFsbCBy
ZW1vdGVzCj4gPiBhbmQgc3RvcmVzIHRoZW0gaW4gdGhlIHRhc2sgY2FjaGUgaW4gcmVndWxhciBp
bnRlcnZhbHMgKDEwIG1pbnV0ZXMpLgo+ID4gVGhlIGBnZXRfdGFza3NgIGZ1bmN0aW9uIGl0c2Vs
ZiBvbmx5IHJlYWRzIGZyb20gdGhlIGNhY2hlLgo+ID4gVGhlIG1haW4gcmF0aW9uYWxlIGZvciB0
aGlzIGNoYW5nZSBpcyB0aGF0IGZvciBsYXJnZSBzZXR1cHMsIGZldGNoaW5nCj4gPiB0YXNrcyBm
cm9tIGFsbCByZW1vdGVzIGNhbiB0YWtlIGEgKmxvbmcqIHRpbWUgKGUuZy4gaHVuZHJlZHMgb2Yg
cmVtb3RlcywKPiA+IGVhY2ggd2l0aCBhID4xMDBtcyBjb25uZWN0aW9uIC0gYWRkcyB1cCB0byBt
aW51dGVzIHF1aWNrbHkpLgo+ID4gSWYgd2UgZG8gdGhpcyBmcm9tIHdpdGhpbiBgZ2V0X3Rhc2tz
YCwgdGhlIEFQSSBoYW5kbGVyIGNhbGxpbmcgdGhlCj4gPiBmdW5jdGlvbiBpcyBhbHNvIGJsb2Nr
ZWQgZm9yIHRoZSBlbnRpcmUgdGltZS4KPiA+IFRoZSBgZ2V0X3Rhc2tzYCBBUEkgaXMgY2FsbGVk
IGV2ZXJ5IGNvdXBsZSBvZiBzZWNvbmRzIGJ5IHRoZSBVSSB0aGUgZ2V0Cj4gPiBhIGxpc3Qgb2Yg
cnVubmluZyByZW1vdGUgdGFza3MsIHNvIHRoaXMgKm11c3QqIGJlIHF1aWNrLgo+ID4gCj4gPiAt
IFRyYWNrZWQgdGFza3MgYXJlIGFsc28gcG9sbGVkIGluIHRoZSBzYW1lIGJhY2tncm91bmQgdGFz
aywgYnV0IHdpdGgKPiA+IGEgc2hvcnQgcG9sbGluZyBkZWxheSAoMTAgc2Vjb25kcykuIEluc3Rl
YWQgb2YgcG9sbGluZyB0aGUgc3RhdHVzIHNwZWNpZmljCj4gPiB0cmFja2VkIHRhc2sgVVBJRCwg
d2Ugc2ltcGx5IGZldGNoICphbGwqIHRhc2tzIHNpbmNlIHRoZSB0cmFja2VkIHRhc2sgc3RhcnRl
ZC4KPiA+IFdoaWxlIHRoaXMgaW5jcmVhc2VkIHRoZSBhbW91bnQgb2YgdHJhbnNtaXR0ZWQgZGF0
YSBhIGJpdCBmb3IgdHJhY2tlZCB0YXNrcwo+ID4gdGhhdCBydW4gZm9yIGEgdmVyeSBsb25nIHRp
bWUsIHRoaXMgbmV3IGFwcHJvYWNoIG1ha2UgdGhlIHdob2xlCj4gPiB0YXNrIHRyYWNraW5nIGZ1
bmN0aW9uYWxpdHkgbXVjaCBtb3JlIGVsZWdhbnQ7IGl0IGludGVncmF0ZXMgYmV0dGVyIHdpdGgK
PiA+IHRoZSAncmVndWxhcicgdGFzayBmZXRjaGluZyB3aGljaCBoYXBwZW5zIGluIGxvbmcgaW50
ZXJ2YWxzLgo+ID4gCj4gPiAtIFRhc2tzIGFyZSBub3cgc3RvcmVkIGluIHRoZSBuZXcgaW1wcm92
ZWQgdGFzayBjYWNoZSBpbXBsZW1lbnRhdGlvbi4KPiA+IFRoaXMgc2hvdWxkIG1ha2UgcmV0cmll
dmluZyB0YXNrcyBtdWNoIHF1aWNrZXIgYW5kIGF2b2lkcwo+ID4gdW5uZWVkZWQgZGlzayBJTy4K
Pgo+IFRoZSBoaWdoZXIgbGV2ZWwgZGVzY3JpcHRpb24gcmVhZHMgZ29vZCB0byBtZSBhbmQgSSBw
bGFuIHRvIHRha2UgYSBjbG9zZXIKPiBsb29rLCBidXQgd2hpbGUgYXBwbHlpbmcgdGhpcyDigJMg
d2l0aCBhIHRyaXZpYWwgbWVyZ2UgY29uZmxpY3QgaW4gdXNlCj4gc3RhdGVtZW50cyByZXNvbHZl
ZCBkdWUgdG8gV29sZmdhbmcncyBjbGllbnQgc2VyaWVzIGJlaW5nIGFwcGxpZWQgZWFybGllciDi
gJMKPiBzb21lIHNtYWxsZXIgdGhpbmdzIHN0dWNrIGEgYml0IG91dCB0byBtZSB3aGVuIHNraW1t
aW5nIGdpdCBsb2csIGEgZmV3Cj4gYXJlIHJhdGhlciBpbiB0aGUgYmlrZSBzaGVkIGFyZWEgdGhv
dWdoLCBzZWUgYmVsb3cuCj4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTHVrYXMgV2FnbmVyIDxs
LndhZ25lckBwcm94bW94LmNvbT4KPiA+IFJldmlld2VkLWJ5OiBNYXggQ2FycmFyYSA8bS5jYXJy
YXJhQHByb3htb3guY29tPgo+Cj4gV2hpbGUgSSBjZXJ0YWlubHkgZW5jb3VyYWdlIHdvcmtpbmcg
dG9nZXRoZXIgSSdtIG5vdCBhIHJlYWxseSBodWdlIGZhbgo+IG9mIGJsaW5kIHJldmlldyAodGFn
cykgd2hlcmUgb25lIGNhbm5vdCBzZWUgYW55IHJldmlldyBjb21tZW50cyBhdCBhbGwsCj4gaXQn
cyBhIGxvc3MgaW4gaW5mb3JtYXRpb24gYW5kIGNhbiBhbHNvIHJlc3VsdCBpbiBzb21lIGluY3Jl
YXNlZCBvdmVyaGVhZC4KCkZhaXIgcG9pbnQhIEluIHRoYXQgY2FzZSwgbGV0IG1lIHByb3ZpZGUg
c29tZSBtb3JlIGNvbnRleHQgaGVyZTsgaXQncwpub3RoaW5nIHJlYWxseSB0aGF0IG1ham9yOgoK
SSBtb3N0bHkgcG9pbnRlZCBvdXQgY2FzZXMgd2hlcmUgYGNvbnN0YHMgd291bGQgYmUgYmVuZWZp
Y2lhbCBpbnN0ZWFkIG9mCmhhdmluZyBhIG1hZ2ljIG51bWJlciBmbG9hdGluZyBhcm91bmQgYW5k
IGFsc28gc3VnZ2VzdGVkIHRoZSB1c2Ugb2YgYQp0eXBlIGFsaWFzIGZvciB1bml4IHRpbWVzdGFt
cHM7IHRoZSBsYXR0ZXIgd2FzIG91dCBvZiBzY29wZSBmb3IgdGhpcwpzZXJpZXMgdGhvdWdoIChh
bmQgbW9zdGx5IGJpa2VzaGVkZGluZyBhbnl3YXlzKS4gQWxzbyBwb2ludGVkIG91dCBhIHR5cG8K
aGVyZSBhbmQgdGhlcmUgaW4gZG9jc3RyaW5ncyBhbmQgc3VnZ2VzdGVkIGJyZWFraW5nIHVwIHRo
ZSBvcmlnaW5hbApgVGFza0NhY2hlOjphZGRfdGFza3NgIG1ldGhvZCAoc2VlIHBhdGNoIDA0LCB0
aGUgb25lIHlvdSBzZWUgdGhlcmUgaXMKdGhlIHNsaW1tZWQtZG93biB2ZXJzaW9uKS4KClRoYXQn
cyBwcmV0dHkgbXVjaCBpdDsgZXZlcnl0aGluZyBlbHNlIHNlZW1lZCBxdWl0ZSBmaW5lIHRvIG1l
LgoKPgo+ID4gLS0tCj4gPiAgc2VydmVyL3NyYy9hcGkvcHZlL2x4Yy5ycyAgICAgICAgICAgICAg
ICB8ICAxMCArLQo+ID4gIHNlcnZlci9zcmMvYXBpL3B2ZS9tb2QucnMgICAgICAgICAgICAgICAg
fCAgIDQgKy0KPiA+ICBzZXJ2ZXIvc3JjL2FwaS9wdmUvcWVtdS5ycyAgICAgICAgICAgICAgIHwg
ICA2ICstCj4gPiAgc2VydmVyL3NyYy9hcGkvcmVtb3RlX3Rhc2tzLnJzICAgICAgICAgICB8ICAx
MSArLQo+ID4gIHNlcnZlci9zcmMvYmluL3Byb3htb3gtZGF0YWNlbnRlci1hcGkucnMgfCAgIDMg
Ky0KPiA+ICBzZXJ2ZXIvc3JjL3JlbW90ZV90YXNrcy9tb2QucnMgICAgICAgICAgIHwgNzg4ICsr
KysrKysrKysrLS0tLS0tLS0tLS0tCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAzODggaW5zZXJ0aW9u
cygrKSwgNDM0IGRlbGV0aW9ucygtKQo+ID4gCj4KPiA+IGRpZmYgLS1naXQgYS9zZXJ2ZXIvc3Jj
L3JlbW90ZV90YXNrcy9tb2QucnMgYi9zZXJ2ZXIvc3JjL3JlbW90ZV90YXNrcy9tb2QucnMKPiA+
IGluZGV4IDIwNjJmMmI3Li40OGQ1NDY5NCAxMDA2NDQKPiA+IC0tLSBhL3NlcnZlci9zcmMvcmVt
b3RlX3Rhc2tzL21vZC5ycwo+ID4gKysrIGIvc2VydmVyL3NyYy9yZW1vdGVfdGFza3MvbW9kLnJz
Cj4gPiBAQCAtMSw2NSArMSwxMDYgQEAKPiA+IC11c2Ugc3RkOjp7Cj4gPiAtICAgIGNvbGxlY3Rp
b25zOjp7SGFzaE1hcCwgSGFzaFNldH0sCj4gPiAtICAgIGZzOjpGaWxlLAo+ID4gLSAgICBwYXRo
Ojp7UGF0aCwgUGF0aEJ1Zn0sCj4gPiAtICAgIHN5bmM6OntMYXp5TG9jaywgUndMb2NrfSwKPiA+
IC0gICAgdGltZTo6RHVyYXRpb24sCj4gPiAtfTsKPiA+ICt1c2Ugc3RkOjp7Y29sbGVjdGlvbnM6
Okhhc2hNYXAsIHBhdGg6OlBhdGgsIHN5bmM6OkFyYywgdGltZTo6RHVyYXRpb259Owo+ID4gIAo+
ID4gLXVzZSBhbnlob3c6OkVycm9yOwo+ID4gK3VzZSBhbnlob3c6Ontmb3JtYXRfZXJyLCBFcnJv
cn07Cj4gPiArdXNlIG5peDo6c3lzOjpzdGF0OjpNb2RlOwo+ID4gIHVzZSBwZG1fYXBpX3R5cGVz
Ojp7Cj4gPiAgICAgIHJlbW90ZXM6OntSZW1vdGUsIFJlbW90ZVR5cGV9LAo+ID4gICAgICBSZW1v
dGVVcGlkLCBUYXNrRmlsdGVycywgVGFza0xpc3RJdGVtLCBUYXNrU3RhdGVUeXBlLAo+ID4gIH07
Cj4gPiAgdXNlIHByb3htb3hfc3lzOjpmczo6Q3JlYXRlT3B0aW9uczsKPiA+ICB1c2UgcHZlX2Fw
aV90eXBlczo6e0xpc3RUYXNrcywgTGlzdFRhc2tzUmVzcG9uc2UsIExpc3RUYXNrc1NvdXJjZSwg
UHZlVXBpZH07Cj4gPiAtdXNlIHNlcmRlOjp7RGVzZXJpYWxpemUsIFNlcmlhbGl6ZX07Cj4gPiAt
dXNlIHRva2lvOjp0YXNrOjpKb2luSGFuZGxlOwo+ID4gK3VzZSB0YXNrX2NhY2hlOjp7QWRkVGFz
a3MsIEdldFRhc2tzLCBTdGF0ZSwgVGFza0NhY2hlLCBUYXNrQ2FjaGVJdGVtfTsKPiA+ICt1c2Ug
dG9raW86OntzeW5jOjpTZW1hcGhvcmUsIHRhc2s6OkpvaW5TZXR9Owo+ID4gIAo+ID4gIHVzZSBj
cmF0ZTo6e2FwaTo6cHZlLCB0YXNrX3V0aWxzfTsKPiA+ICAKPiA+ICBtb2QgdGFza19jYWNoZTsK
PiA+ICAKPiA+ICtjb25zdCBSRU1PVEVfVEFTS1NfRElSOiAmc3RyID0gY29uY2F0IShwZG1fYnVp
bGRjZmc6OlBETV9DQUNIRV9ESVJfTSEoKSwgIi9yZW1vdGUtdGFza3MiKTsKPiA+ICsKPiA+ICtj
b25zdCBTRUNPTkRTX1BFUl9NSU5VVEU6IHU2NCA9IDYwOwo+ID4gK2NvbnN0IE1JTlVURVNfUEVS
X0hPVVI6IHU2NCA9IDYwOwo+IFdoaWxlIHRlY2huaWNhbGx5IGNvcnJlY3QgdGhpcyByZWFkcyBs
aWtlIGEgcmF0ZSBhbmQgbWFrZXMgaXQgSU1PIGEgYml0Cj4gaGFyZGVyIHRvIHRlbGwgd2hhdCBp
cyBtZWFudCBpbiBiZWxvdyBjYWxjdWxhdGlvbnMuCj4KPiBJJ2QgZWl0aGVyIHVzZSBEdXJhdGlv
biBmcm9tIHN0ZCwgbGlrZSBlLmcuIER1cmF0aW9uOjpmcm9tX21pbnMoMTApLmFzX3NlY3MoKQo+
IGFuZCBEdXJhdGlvbjo6ZnJvbV9ob3VycygxKS5hc19zZWNzKCkgcmVzcGVjdGl2ZWx5IGZvciBS
RUdVTEFSX1JFRlJFU0hfUyBhbmQKPiBDSEVDS19ST1RBVEVfUyBiZWxvdyBvciBqdXN0IDYwIGFu
ZCAzNjAwLCB0aG9zZSB2YWx1ZXMgYXJlIHByZXR0eSBtdWNoIGdlbmVyYWwKPiBrbm93bGVkZ2Us
IHdoaWNoIG1pZ2h0IGJlIGEgcGFydCBvZiB0aGUgY29uZnVzaW9uIHBvdGVudGlhbCBJIHNlZSBp
biB5b3VyCj4gdmFyaWFudCwgYXMgSSBiYXNpY2FsbHkgZXhwZWN0IHRoYXQgdGhpcyBoYXMgdG8g
YmUgc29tZXRoaW5nIG1vcmUgZWxhYm9yYXRlIG9yCj4gd2h5ICB3b3VsZCBpdCBnbyBmb3IgdGhp
cyBzZWVtaW5nbHkgY29tcGxleCB2YXJpYW50Lgo+IFRoYXQgc2FpZCwgdXNpbmcgd2hhdCB0aGUg
c3RkIGxpYiBhbHJlYWR5IHByb3ZpZGVzIGlzIHRvdGFsbHkgZmluZSBoZXJlLgo+Cj4gPiArCj4g
PiArLy8vIFRpY2sgcmF0ZSBmb3IgdGhlIHJlbW90ZSB0YXNrIGZldGNoaW5nIHRhc2suCj4gPiAr
Ly8vIFRoaXMgaXMgYWxzbyB0aGUgcmF0ZSBhdCB3aGljaCB3ZSBjaGVjayBvbiB0cmFja2VkIHRh
c2tzLgo+ID4gK2NvbnN0IFRJQ0tfUkFURV9TOiB1NjQgPSAxMDsKPiA+ICsKPiA+ICsvLy8gSW50
ZXJ2YWwgaW4gc2Vjb25kcyBhdCB3aGljaCB0byBmZXRjaCB0aGUgbmV3ZXN0IHRhc2tzIGZyb20g
cmVtb3RlcyAoaWYgdGhlcmUgaXMgbm8gdHJhY2tlZAo+ID4gKy8vLyB0YXNrIGZvciB0aGlzIHJl
bW90ZSkuCj4gPiArY29uc3QgUkVHVUxBUl9SRUZSRVNIX1M6IHU2NCA9IDEwICogU0VDT05EU19Q
RVJfTUlOVVRFOwo+IElNTyBpdCBoYXMgc29tZSB0aW55IHZhbHVlIHRvIGVuY29kZSBpZiBpdCdz
IGEgcGVyaW9kIG9yIGEgcmF0ZSBpbiB0aGUKPiBuYW1lLCB3aGlsZSBJIGRvIG5vdCBzZWUgbXVj
aCBiZW5lZml0IGluIGhhdmluZyAicmVndWxhciIgaW4gdGhlcmUgKGFsYmVpdAo+IEkgY2FuIHNl
ZSB3aGVyZSB5b3UgY29tZSBmcm9tIHRvIHVzZSB0aGF0IGluIHRoZSBuYW1lKS4KPgo+IGNvbnN0
IFRBU0tfUkVGUkVTSF9QRVJJT0RfUzogdTY0ID0gRHVyYXRpb246OmZyb21fbWlucygxMCkuYXNf
c2VjcygpOwo+Cj4gb3IgCj4KPiBjb25zdCBUQVNLX1JFRlJFU0hfUEVSSU9EX1M6IHU2NCA9IDYw
Owo+Cj4gb3IgaWYgSSdtIGFscmVhZHkgYmlrZSBzaGVkZGluZyBzL1JFRlJFU0gvUE9MTC8gdG8g
YmUgc2xpZ2h0bHkgc2hvcnRlcjoKPgo+IGNvbnN0IFRBU0tfUE9MTF9QRVJJT0RfUzogdTY0ID0g
NjA7Cj4KPgo+ID4gKy8vLyBOdW1iZXIgb2YgY3ljbGVzIHVudGlsIGEgcmVndWxhciByZWZyZXNo
Lgo+ID4gK2NvbnN0IFJFR1VMQVJfUkVGUkVTSF9DWUNMRVM6IHU2NCA9IFJFR1VMQVJfUkVGUkVT
SF9TIC8gVElDS19SQVRFX1M7Cj4gPiArCj4gPiArLy8vIENoZWNrIGlmIHdlIHdhbnQgdG8gcm90
YXRlIG9uY2UgZXZlcnkgaG91ci4KPiA+ICtjb25zdCBDSEVDS19ST1RBVEVfUzogdTY0ID0gU0VD
T05EU19QRVJfTUlOVVRFICogTUlOVVRFU19QRVJfSE9VUjsKPiA+ICsvLy8gTnVtYmVyIG9mIGN5
Y2xlcyBiZWZvcmUgd2Ugd2FudCB0byBjaGVjayBpZiB3ZSBzaG91bGQgcm90YXRlIHRoZSB0YXNr
IGFyY2hpdmVzLgo+ID4gK2NvbnN0IENIRUNLX1JPVEFURV9DWUNMRVM6IHU2NCA9IENIRUNLX1JP
VEFURV9TIC8gVElDS19SQVRFX1M7Cj4gPiArCj4gPiArLy8vIFJvdGF0ZSBvbmNlIHRoZSBtb3N0
IHJlY2VudCBhcmNoaXZlIGZpbGUgaXMgYXQgbGVhc3QgMjQgaG91ciBvbGQuCj4gPiArY29uc3Qg
Uk9UQVRFX0FGVEVSX1M6IHU2NCA9IDI0ICogTUlOVVRFU19QRVJfSE9VUiAqIFNFQ09ORFNfUEVS
X01JTlVURTsKPiBXaHkgbm8gSE9VUlNfUEVSX0RBWT8gO1AKPgo+ID4gKwo+ID4gKy8vLyBLZWVw
IDcgZGF5cyB3b3J0aCBvZiB0YXNrcy4KPiA+ICtjb25zdCBLRUVQX09MRF9GSUxFUzogdTY0ID0g
NzsKPiA+ICsKPiA+ICsvLy8gTWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCBjb25uZWN0aW9u
cyBwZXIgcmVtb3RlLgo+ID4gK2NvbnN0IENPTk5FQ1RJT05TX1BFUl9QVkVfUkVNT1RFOiB1c2l6
ZSA9IDU7Cj4gPiArLy8vIE1heGltdW0gbnVtYmVyIG9mIHRvdGFsIGNvbmN1cnJlbnQgY29ubmVj
dGlvbnMuIGBDT05ORUNUSU9OU19QRVJfUkVNT1RFYCBpcyB0YWtlbiBpbnRvCj4gPiArLy8vIGNv
bnNpZGVyYXRpb24gd2hlbiBhY2NvdW50aW5nIGZvciB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbm5l
Y3Rpb25zLgo+ID4gKy8vLyBGb3IgaW5zdGFuY2UsIGlmIGBNQVhfQ09OTkVDVElPTlNgIGlzIDIw
IGFuZCBgQ09OTkVDVElPTlNfUEVSX1JFTU9URWAgaXMgNSwgd2UgY2FuIGNvbm5lY3QKPiA+ICsv
Ly8gdG8gNCBQVkUgcmVtb3RlcyBpbiBwYXJhbGxlbC4KPiA+ICtjb25zdCBNQVhfQ09OTkVDVElP
TlM6IHVzaXplID0gMjA7Cj4gPiArCj4gPiArLy8vIE1heGltdW0gbnVtYmVyIG9mIHRhc2tzIHRv
IGZldGNoIGZyb20gYSBzaW5nbGUgcmVtb3RlIGluIG9uZSBBUEkgY2FsbC4KPiA+ICtjb25zdCBN
QVhfVEFTS1NfVE9fRkVUQ0g6IHU2NCA9IDUwMDA7Cj4gPiArCj4KPiA+ICsKPiA+ICsvLy8gVGFz
ayB3aGljaCBoYW5kbGVzIGZldGNoaW5nIHJlbW90ZSB0YXNrcyBhbmQgdGFzayBhcmNoaXZlIHJv
dGF0aW9uLgo+ID4gKy8vLyBUaGlzIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMuCj4gPiArYXN5bmMg
Zm4gcmVtb3RlX3Rhc2tfZmV0Y2hpbmdfdGFzaygpIC0+ICEgewo+ID4gKyAgICBsZXQgbXV0IGN5
Y2xlID0gMHU2NDsKPiA+ICsgICAgbGV0IG11dCBpbnRlcnZhbCA9IHRva2lvOjp0aW1lOjppbnRl
cnZhbChEdXJhdGlvbjo6ZnJvbV9zZWNzKFRJQ0tfUkFURV9TKSk7Cj4gPiArICAgIGludGVydmFs
LnJlc2V0X2F0KHRhc2tfdXRpbHM6Om5leHRfYWxpZ25lZF9pbnN0YW50KFRJQ0tfUkFURV9TKS5p
bnRvKCkpOwo+ID4gKwo+ID4gKyAgICAvLyBXZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCBjYXRj
aGluZyB1cCB0byBtaXNzZWQgdGljaywgd2UganVzdCB3YW50Cj4gPiArICAgIC8vIGEgc3RlYWR5
IHRpY2sgcmF0ZS4KPiA+ICsgICAgaW50ZXJ2YWwuc2V0X21pc3NlZF90aWNrX2JlaGF2aW9yKHRv
a2lvOjp0aW1lOjpNaXNzZWRUaWNrQmVoYXZpb3I6OlNraXApOwo+ID4gKwo+ID4gKyAgICBpZiBs
ZXQgRXJyKGVycikgPSBpbml0X2NhY2hlKCkuYXdhaXQgewo+ID4gKyAgICAgICAgbG9nOjplcnJv
ciEoImVycm9yIHdoZW4gaW5pdGlhbGl6ZWQgdGFzayBjYWNoZToge2Vycn0iKTsKPiA+ICsgICAg
fQo+ID4gKwo+ID4gKyAgICBsb29wIHsKPiA+ICsgICAgICAgIGludGVydmFsLnRpY2soKS5hd2Fp
dDsKPiA+ICsgICAgICAgIGlmIGxldCBFcnIoZXJyKSA9IGRvX3RpY2soY3ljbGUpLmF3YWl0IHsK
PiA+ICsgICAgICAgICAgICBsb2c6OmVycm9yISgiZXJyb3Igd2hlbiBmZXRjaGluZyByZW1vdGUg
dGFza3M6IHtlcnJ9Iik7Cj4gPiArICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAvLyBBdCBh
IHJhdGUgb2Ygb25lIHRpY2sgZXZlcnkgMTBzIHdlIHdyYXAgYXJvdW5kIGluICpvbmx5KiA1IHRy
aWxsaW9uIHllYXJzLAo+ID4gKyAgICAgICAgLy8gYmV0dGVyIGJlIHNhZmUgYW5kIHVzZSAud3Jh
cHBpbmdfYWRkKDEpIDopCj4gPiArICAgICAgICBjeWNsZSA9IGN5Y2xlLndyYXBwaW5nX2FkZCgx
KTsKPiA+ICsgICAgfQo+ID4gK30KPiA+ICsKPiA+ICsvLy8gSW5pdGlhbGl6ZSB0aGUgcmVtb3Rl
IHRhc2sgY2FjaGUgd2l0aCBpbml0aWFsIGFyY2hpdmUgZmlsZXMsIGluIGNhc2UgdGhlcmUgYXJl
IG5vdAo+ID4gKy8vLyBhbnkgYXJjaGl2ZSBmaWxlcyB5ZXQuCj4gPiArLy8vCj4gPiArLy8vIENy
ZWF0ZXMgYEtFRVBfT0xEX0ZJTEVTYCBhcmNoaXZlIGZpbGVzLCB3aXRoIGVhY2ggYXJjaGl2ZSBm
aWxlJ3MgY3V0LW9mZiB0aW1lCj4gPiArLy8vIHNwYWNlZCBgUk9UQVRFX0FGVEVSX1NgIHNlY29u
ZHMgYXBhcnQuCj4gPiArLy8vIFRoaXMgYWxsb3dzIHVzIHRvIGltbWVkaWF0ZWx5IGJhY2tmaWxs
IHJlbW90ZSB0YXNrIGhpc3Rvcnkgd2hlbiBzZXR0aW5nIHVwIGEgbmV3IFBETSBpbnN0YW5jZQo+
ID4gKy8vLyB3aXRob3V0IGFueSBwcmlvciB0YXNrIGFyY2hpdmUgcm90YXRpb24uCj4gPiArYXN5
bmMgZm4gaW5pdF9jYWNoZSgpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPiA+ICsgICAgdG9raW86
OnRhc2s6OnNwYXduX2Jsb2NraW5nKHx8IHsKPiA+ICsgICAgICAgIGxldCBjYWNoZSA9IGdldF9j
YWNoZSgpPzsKPiA+ICsgICAgICAgIGNhY2hlLmluaXQocHJveG1veF90aW1lOjplcG9jaF9pNjQo
KSwgS0VFUF9PTERfRklMRVMsIFJPVEFURV9BRlRFUl9TKT87Cj4gPiArICAgICAgICBPaygoKSkK
PiA+ICsgICAgfSkKPiA+ICsgICAgLmF3YWl0Pwo+ID4gK30KPiA+ICsKPiA+ICsvLy8gSGFuZGxl
IGEgc2luZ2xlIHRpbWVyIHRpY2suCj4gPiArLy8vIFdpbGwgaGFuZGxlIGFyY2hpdmUgZmlsZSBy
b3RhdGlvbiwgcG9sbGluZyBvZiB0cmFja2VkIHRhc2tzIGFuZCBmZXRjaGluZyBvciByZW1vdGUg
dGFza3MuCj4gPiArYXN5bmMgZm4gZG9fdGljayhjeWNsZTogdTY0KSAtPiBSZXN1bHQ8KCksIEVy
cm9yPiB7Cj4gPiArICAgIGxldCBjYWNoZSA9IGdldF9jYWNoZSgpPzsKPiA+ICsKPiA+ICsgICAg
aWYgc2hvdWxkX2NoZWNrX2Zvcl9jYWNoZV9yb3RhdGlvbihjeWNsZSkgewo+ID4gKyAgICAgICAg
bG9nOjpkZWJ1ZyEoImNoZWNraW5nIGlmIHJlbW90ZSB0YXNrIGFyY2hpdmUgc2hvdWxkIGJlIHJv
dGF0ZWQiKTsKPiA+ICsgICAgICAgIGlmIHJvdGF0ZV9jYWNoZShjYWNoZS5jbG9uZSgpKS5hd2Fp
dD8gewo+ID4gKyAgICAgICAgICAgIGxvZzo6aW5mbyEoInJvdGF0ZWQgcmVtb3RlIHRhc2sgYXJj
aGl2ZSIpOwo+ID4gKyAgICAgICAgfQo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGxldCBzdGF0
ZSA9IGNhY2hlLnJlYWRfc3RhdGUoKTsKPiA+ICsKPiA+ICsgICAgbGV0IG11dCBhbGxfdGFza3Mg
PSBIYXNoTWFwOjpuZXcoKTsKPiA+ICsKPiA+ICsgICAgbGV0IHNlbWFwaG9yZSA9IEFyYzo6bmV3
KFNlbWFwaG9yZTo6bmV3KE1BWF9DT05ORUNUSU9OUykpOwo+Cj4gVGFsa2luZyBuYW1lcyB3b3Vs
ZCBiZSBuaWNlLCB3ZSBnb3QgYSByYXRoZXIgZ2VuZXJpY2FsbHkgbmFtZWQgc2VtYXBob3JlCj4g
dmFyaWFibGUgdHdpY2UgaW4gdGhpcyBtb2R1bGUsIG1heWJlIHVzZSAocmVzcGVjdGl2ZWx5KToK
Pgo+IHRvdGFsX2Nvbm5lY3Rpb25fc2VtYXBob3JlIG9yIHRvdGFsX2Nvbm5lY3Rpb25fbGltaXQK
PiBwZXJfcmVtb3RlX3NlbWFwaG9yZSBvciBwZXJfcmVtb3RlX2xpbWl0Cj4KPiA+ICsgICAgbGV0
IG11dCBqb2luX3NldCA9IEpvaW5TZXQ6Om5ldygpOwo+ID4gKwo+ID4gKyAgICBsZXQgcmVtb3Rl
cyA9IHJlbW90ZXNfdG9fY2hlY2soY3ljbGUsICZzdGF0ZSkuYXdhaXQ/Owo+ID4gKyAgICBmb3Ig
cmVtb3RlIGluIHJlbW90ZXMgewo+ID4gKyAgICAgICAgbGV0IHNpbmNlID0gZ2V0X2N1dG9mZl90
aW1lc3RhbXAoJnJlbW90ZSwgJnN0YXRlKTsKPiA+ICsKPiA+ICsgICAgICAgIGxldCBwZXJtaXQg
PSBpZiByZW1vdGUudHkgPT0gUmVtb3RlVHlwZTo6UHZlIHsKPiA+ICsgICAgICAgICAgICAvLyBB
Y3F1aXJlIG11bHRpcGxlIHBlcm1pdHMsIGZvciBQVkUgcmVtb3RlcyB3ZSB3YW50Cj4gPiArICAg
ICAgICAgICAgLy8gdG8gbXVsdGlwbGUgbm9kZXMgaW4gcGFyYWxsZWwuCj4gPiArICAgICAgICAg
ICAgLy8KPiA+ICsgICAgICAgICAgICAvLyBgLnVud3JhcCgpYCBpcyBzYWZlLCB3ZSBuZXZlciBj
bG9zZSB0aGUgc2VtYXBob3JlLgo+ID4gKyAgICAgICAgICAgIEFyYzo6Y2xvbmUoJnNlbWFwaG9y
ZSkKPiA+ICsgICAgICAgICAgICAgICAgLmFjcXVpcmVfbWFueV9vd25lZChDT05ORUNUSU9OU19Q
RVJfUFZFX1JFTU9URSBhcyB1MzIpCj4gPiArICAgICAgICAgICAgICAgIC5hd2FpdAo+ID4gKyAg
ICAgICAgICAgICAgICAudW53cmFwKCkKPiA+ICsgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAg
ICAgICAgLy8gRm9yIFBCUyByZW1vdGVzIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBvdXRnb2luZyBj
b25uZWN0aW9uCj4gPiArICAgICAgICAgICAgLy8KPiA+ICsgICAgICAgICAgICAvLyBgLnVud3Jh
cCgpYCBpcyBzYWZlLCB3ZSBuZXZlciBjbG9zZSB0aGUgc2VtYXBob3JlLgo+ID4gKyAgICAgICAg
ICAgIEFyYzo6Y2xvbmUoJnNlbWFwaG9yZSkuYWNxdWlyZV9vd25lZCgpLmF3YWl0LnVud3JhcCgp
Cj4gPiArICAgICAgICB9Owo+ID4gKwo+ID4gKyAgICAgICAgam9pbl9zZXQuc3Bhd24oYXN5bmMg
bW92ZSB7Cj4gPiArICAgICAgICAgICAgbG9nOjpkZWJ1ZyEoImZldGNoaW5nIHJlbW90ZSB0YXNr
cyBmb3IgJ3t9JyBzaW5jZSB7c2luY2V9IiwgcmVtb3RlLmlkKTsKPiA+ICsgICAgICAgICAgICBs
ZXQgdGFza3MgPSBmZXRjaF90YXNrcygmcmVtb3RlLCBzaW5jZSkuYXdhaXQubWFwX2Vycih8ZXJy
fCB7Cj4gPiArICAgICAgICAgICAgICAgIGZvcm1hdF9lcnIhKCJjb3VsZCBub3QgZmV0Y2ggdGFz
a3MgZnJvbSByZW1vdGUgJ3t9Jzoge2Vycn0iLCByZW1vdGUuaWQpCj4gPiArICAgICAgICAgICAg
fSk7Cj4gPiArCj4gPiArICAgICAgICAgICAgZHJvcChwZXJtaXQpOwo+ID4gKyAgICAgICAgICAg
IHRhc2tzCj4gPiArICAgICAgICB9KTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICB3aGlsZSBs
ZXQgU29tZShyZXMpID0gam9pbl9zZXQuam9pbl9uZXh0KCkuYXdhaXQgewo+ID4gKyAgICAgICAg
bWF0Y2ggcmVzIHsKPiA+ICsgICAgICAgICAgICBPayhPaygocmVtb3RlLCByZXF1ZXN0KSkpID0+
IHsKPiA+ICsgICAgICAgICAgICAgICAgYWxsX3Rhc2tzLmluc2VydChyZW1vdGUsIHJlcXVlc3Qp
Owo+ID4gKyAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICBPayhFcnIoZXJyKSkgPT4gbG9n
OjplcnJvciEoIntlcnJ9IiksCj4gPiArICAgICAgICAgICAgRXJyKGVycikgPT4gbG9nOjplcnJv
ciEoImNvdWxkIG5vdCBqb2luIHRhc2sgZmV0Y2hpbmcgZnV0dXJlOiB7ZXJyfSIpLAo+ID4gKyAg
ICAgICAgfQo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGlmICFhbGxfdGFza3MuaXNfZW1wdHko
KSB7Cj4gPiArICAgICAgICBzYXZlX3Rhc2tzKGNhY2hlLCBhbGxfdGFza3MpLmF3YWl0PzsKPiA+
ICsgICAgfQo+ID4gKwo+ID4gKyAgICBPaygoKSkKPiA+ICt9Cj4gPiArCj4gPiArLy8vIFJldHVy
biBsaXN0IG9mIHJlbW90ZXMgdGhhdCBhcmUgdG8gYmUgcG9sbGVkIGluIHRoaXMgY3ljbGUuCj4K
PiBzb21lIGhpZ2hlciBsZXZlbCBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgbWVhbnMgYW5kIHdo
YXQgdGhlIHJhdGlvbmFsZSBpcwo+IHdvdWxkIGJlIG5pY2UgaGVyZS4KPgo+ID4gK2FzeW5jIGZu
IHJlbW90ZXNfdG9fY2hlY2soY3ljbGU6IHU2NCwgc3RhdGU6ICZTdGF0ZSkgLT4gUmVzdWx0PFZl
YzxSZW1vdGU+LCBFcnJvcj4gewo+ID4gKyAgICBsZXQgKGNvbmZpZywgXykgPSB0b2tpbzo6dGFz
azo6c3Bhd25fYmxvY2tpbmcocGRtX2NvbmZpZzo6cmVtb3Rlczo6Y29uZmlnKS5hd2FpdD8/Owo+
ID4gKwo+ID4gKyAgICBsZXQgYWxsID0gY3ljbGUgJSBSRUdVTEFSX1JFRlJFU0hfQ1lDTEVTID09
IDA7Cj4gPiArCj4gPiArICAgIGlmIGFsbCB7Cj4gPiArICAgICAgICBPayhjb25maWcuc2VjdGlv
bnMuaW50b192YWx1ZXMoKS5jb2xsZWN0KCkpCj4gPiArICAgIH0gZWxzZSB7Cj4gPiArICAgICAg
ICBPayhjb25maWcKPiA+ICsgICAgICAgICAgICAuc2VjdGlvbnMKPiA+ICsgICAgICAgICAgICAu
aW50b19pdGVyKCkKPiA+ICsgICAgICAgICAgICAuZmlsdGVyX21hcCh8KG5hbWUsIHJlbW90ZSl8
IHsKPiA+ICsgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUodHJhY2tlZCkgPSBzdGF0ZS50cmFj
a2VkX3Rhc2tzLmdldCgmbmFtZSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgIXRyYWNr
ZWQuaXNfZW1wdHkoKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgU29tZShyZW1vdGUp
Cj4gPiArICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUKPiA+ICsgICAgICAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgIE5vbmUKPiA+ICsgICAgICAgICAg
ICAgICAgfQo+ID4gKyAgICAgICAgICAgIH0pCj4gPiArICAgICAgICAgICAgLmNvbGxlY3QoKSkK
PiA+ICsgICAgfQo+ID4gK30KPgo+ID4gIC8vLyBGZXRjaCB0YXNrcyAoYWN0aXZlIGFuZCBmaW5p
c2hlZCkgZnJvbSBhIHJlbW90ZQo+ID4gLWFzeW5jIGZuIGZldGNoX3Rhc2tzKHJlbW90ZTogJlJl
bW90ZSkgLT4gUmVzdWx0PFZlYzxUYXNrTGlzdEl0ZW0+LCBFcnJvcj4gewo+ID4gKy8vLyBgc2lu
Y2VgIGlzIGEgVU5JWCB0aW1lc3RhbXAgKHNlY29uZHMpLgo+ID4gK2FzeW5jIGZuIGZldGNoX3Rh
c2tzKHJlbW90ZTogJlJlbW90ZSwgc2luY2U6IGk2NCkgLT4gUmVzdWx0PChTdHJpbmcsIEFkZFRh
c2tzKSwgRXJyb3I+IHsKPiA+ICAgICAgbGV0IG11dCB0YXNrcyA9IFZlYzo6bmV3KCk7Cj4gPiAg
Cj4gPiArICAgIGxldCBtdXQgYWxsX3N1Y2Nlc3NmdWwgPSB0cnVlOwo+ID4gKwo+ID4gICAgICBt
YXRjaCByZW1vdGUudHkgewo+ID4gICAgICAgICAgUmVtb3RlVHlwZTo6UHZlID0+IHsKPiA+ICsg
ICAgICAgICAgICBsZXQgc2VtYXBob3JlID0gQXJjOjpuZXcoU2VtYXBob3JlOjpuZXcoQ09OTkVD
VElPTlNfUEVSX1BWRV9SRU1PVEUpKTsKPiA+ICsgICAgICAgICAgICBsZXQgbXV0IGpvaW5fc2V0
ID0gSm9pblNldDo6bmV3KCk7Cj4gPiArCj4gPiAgICAgICAgICAgICAgbGV0IGNsaWVudCA9IHB2
ZTo6Y29ubmVjdChyZW1vdGUpPzsKPiA+ICAKPiA+ICAgICAgICAgICAgICAvLyBOKzEgcmVxdWVz
dHMgLSB3ZSBjb3VsZCB1c2UgL2NsdXN0ZXIvdGFza3MsIGJ1dCB0aGF0IG9uZQo+Cj4gYnR3LiBh
cyBJIHNlZSBpdCBmcm9tIHRoZSBjb250ZXh0LCByZS1ldmFsdWF0aW5nIHRoZSBsaW1pdCBvZiB0
aGUgYnJvYWRjYXN0ZWQKPiB0YXNrcyB3b3VsZCBiZSBkZWZpbml0aXZlbHkgYW4gb3B0aW9uIHRv
bywgb24gcmVtb3RlcyB3aXRoIG1vcmUgdGhhbiBhIGhhbmRmdWwKPiBvZiBub2RlcyB0aGF0IG1p
Z2h0IGJlIHF1aXRlIGEgYml0IGNoZWFwZXIgYW5kIGhhcyBzb21lIGJlbmVmaXRzIG91dHNpZGUg
b2YgdGhlCj4gUERNIHVzZSBjYXNlLiBBdCBsZWFzdCBzb21lIHF1aWNrIGV4cGVyaW1lbnRhdGlv
biBhYm91dCBhY3R1YWwgaW1wYWN0IG9mIGFuCj4gaW5jcmVhc2UgdGhlcmUgd291bGQgYmUgd2Fy
cmFudGVkLCBhbGJlaXQgb3V0IG9mIHNjb3BlIG9mIHRoaXMgc2VyaWVzIGFzIGNoZWNraW5nCj4g
c2VwYXJhdGVseSBpcyBhbHJlYWR5IHRoZSBzdGF0dXMgcXVvLgo+Cj4gPiBAQCAtMTM0LDE2ICsz
NzcsNTMgQEAgYXN5bmMgZm4gZmV0Y2hfdGFza3MocmVtb3RlOiAmUmVtb3RlKSAtPiBSZXN1bHQ8
VmVjPFRhc2tMaXN0SXRlbT4sIEVycm9yPiB7Cj4gPiAgICAgICAgICAgICAgICAgIGxldCBwYXJh
bXMgPSBMaXN0VGFza3Mgewo+ID4gICAgICAgICAgICAgICAgICAgICAgLy8gSW5jbHVkZSBydW5u
aW5nIHRhc2tzCj4gPiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFNvbWUoTGlzdFRhc2tz
U291cmNlOjpBbGwpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSG93IG11Y2gg
dGFzayBoaXN0b3J5IGRvIHdlIHdhbnQ/IFJpZ2h0IG5vdyB3ZSBqdXN0IGhhcmQtY29kZSBpdAo+
ID4gLSAgICAgICAgICAgICAgICAgICAgLy8gdG8gNyBkYXlzLgo+ID4gLSAgICAgICAgICAgICAg
ICAgICAgc2luY2U6IFNvbWUocHJveG1veF90aW1lOjplcG9jaF9pNjQoKSAtIDcgKiAyNCAqIDYw
ICogNjApLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2luY2U6IFNvbWUoc2luY2UpLAo+ID4g
KyAgICAgICAgICAgICAgICAgICAgLy8gSWYgYGxpbWl0YCBpcyBub3QgcHJvdmlkZWQsIHdlIG9u
bHkgcmVjZWl2ZSA1MCB0YXNrcwo+ID4gKyAgICAgICAgICAgICAgICAgICAgbGltaXQ6IFNvbWUo
TUFYX1RBU0tTX1RPX0ZFVENIKSwKPiA+ICAgICAgICAgICAgICAgICAgICAgIC4uRGVmYXVsdDo6
ZGVmYXVsdCgpCj4gPiAgICAgICAgICAgICAgICAgIH07Cj4gPiAgCj4gPiAtICAgICAgICAgICAg
ICAgIGxldCBsaXN0ID0gY2xpZW50LmdldF90YXNrX2xpc3QoJm5vZGUubm9kZSwgcGFyYW1zKS5h
d2FpdD87Cj4gPiAtICAgICAgICAgICAgICAgIGxldCBtYXBwZWQgPSBtYXBfdGFza3MobGlzdCwg
JnJlbW90ZS5pZCk/Owo+ID4gKyAgICAgICAgICAgICAgICBsZXQgcGVybWl0ID0gQXJjOjpjbG9u
ZSgmc2VtYXBob3JlKS5hY3F1aXJlX293bmVkKCkuYXdhaXQudW53cmFwKCk7Cj4gPiAgCj4gPiAt
ICAgICAgICAgICAgICAgIHRhc2tzLmV4dGVuZChtYXBwZWQpOwo+ID4gKyAgICAgICAgICAgICAg
ICBsZXQgciA9IHJlbW90ZS5jbG9uZSgpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICBqb2lu
X3NldC5zcGF3bihhc3luYyBtb3ZlIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgIGxldCBjbGll
bnQgPSBwdmU6OmNvbm5lY3QoJnIpPzsKPiA+ICsgICAgICAgICAgICAgICAgICAgIGxldCB0YXNr
X2xpc3QgPQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudAo+ID4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuZ2V0X3Rhc2tfbGlzdCgmbm9kZS5ub2RlLCBwYXJhbXMpCj4g
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hd2FpdAo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3JtYXRfZXJyISgicmVtb3RlICd7fScsIG5vZGUgJ3t9Jzoge2Vycn0iLCBy
LmlkLCBub2RlLm5vZGUpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pPzsKPiA+
ICsKPiA+ICsgICAgICAgICAgICAgICAgICAgIGRyb3AocGVybWl0KTsKPiA+ICsKPiA+ICsgICAg
ICAgICAgICAgICAgICAgIE9rOjo8VmVjPF8+LCBFcnJvcj4odGFza19saXN0KQo+ID4gKyAgICAg
ICAgICAgICAgICB9KTsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAg
d2hpbGUgbGV0IFNvbWUocmVzKSA9IGpvaW5fc2V0LmpvaW5fbmV4dCgpLmF3YWl0IHsKPiA+ICsg
ICAgICAgICAgICAgICAgbWF0Y2ggcmVzIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgIE9rKE9r
KGxpc3QpKSA9PiB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hcHBlZCA9IGxp
c3QuaW50b19pdGVyKCkuZmlsdGVyX21hcCh8dGFza3wgewo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCBtYXBfcHZlX3Rhc2sodGFzaywgJnJlbW90ZS5pZCkgewo+ID4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2sodGFzaykgPT4gU29tZSh0YXNrKSwKPiA+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycihlcnIpID0+IHsKPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2c6OmVycm9yISgiY291bGQgbm90IG1h
cCB0YXNrIGRhdGEsIHNraXBwaW5nOiB7ZXJyfSIpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5vbmUKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tzLmV4
dGVuZChtYXBwZWQpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgfQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgT2soRXJyKGVycikpID0+IHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBh
bGxfc3VjY2Vzc2Z1bCA9IGZhbHNlOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZzo6
ZXJyb3IhKCJjb3VsZCBub3QgZmV0Y2ggdGFza3M6IHtlcnI6P30iKTsKPiA+ICsgICAgICAgICAg
ICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVycihlcnIpID0+IHJldHVybiBF
cnIoZXJyLmludG8oKSksCj4gPiArICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICB9
Cj4gPiAgICAgICAgICB9Cj4gPiAgICAgICAgICBSZW1vdGVUeXBlOjpQYnMgPT4gewo+Cj4gPiAr
Ly8vIENoZWNrIGlmIHdlIGFyZSBkdWUgZm9yIGNoZWNraW5nIGZvciBjYWNoZSByb3RhdGlvbi4K
PiA+ICtmbiBzaG91bGRfY2hlY2tfZm9yX2NhY2hlX3JvdGF0aW9uKGN5Y2xlOiB1NjQpIC0+IGJv
b2wgewo+ID4gKyAgICBjeWNsZSAlIENIRUNLX1JPVEFURV9DWUNMRVMgPT0gMAo+Cj4gVGhpcyBi
YXNpY2FsbHkgZGVwZW5kcyBvbiB0aGUgZm4gZ2V0dGluZyBjYWxsZWQgaW5pdGlhbGx5IHdpdGgg
Y3ljbGUKPiBiZWluZyBzdGlsbCB6ZXJlbywgYXMgb3RoZXJld2lzZSB3ZSB3b3VsZCBuZXZlciBy
b3RhdGUgaWYgYSBQRE0gZ2V0cwo+IHJlc3RhcnRlZC9yZWJvb3RlZCBkYWlseSBvciBtb3JlIG9m
dGVuLCB3aGljaCBjYW4gYmUgYSBwb3NzaWJpbGl0eSBmb3IKPiB1c2UgY2FzZXMgd2hlcmUgb25l
IGp1c3QgaGFzIHRoZSBQRE0gcnVubmluZyBkdXJpbmcgdGhlaXIgd29ya3RpbWUsCj4gd2hpY2gg
aXMgc2VsZG9tbHkgbG9uZ2VyIHRoYW4gYSBkYXkuCj4KPiBJLmUuLCBpdCB3b3JrcyBmaW5lIGFz
IGlzLCBidXQgSSdkIGxpa2UgdG8gc2VlIHRoYXQgaW52YXJpYW50IHN0YXRlCj4gYSBiaXQgZXhw
bGljaXRseSBzb21ld2hlcmUuCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCj4gcGRtLWRldmVsIG1haWxpbmcgbGlzdAo+IHBkbS1kZXZlbEBsaXN0
cy5wcm94bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3BkbS1kZXZlbAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpwZG0tZGV2ZWwgbWFpbGluZyBsaXN0CnBkbS1kZXZlbEBsaXN0cy5wcm94
bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m
by9wZG0tZGV2ZWwK