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 089951FF16B
	for <inbox@lore.proxmox.com>; Thu, 20 Mar 2025 18:39:33 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 89D4188D6;
	Thu, 20 Mar 2025 18:39:32 +0100 (CET)
Message-ID: <9947a9f1-bd50-4ae5-90d9-203dff5b0cb7@proxmox.com>
Date: Thu, 20 Mar 2025 18:39:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird Beta
To: Proxmox Datacenter Manager development discussion
 <pdm-devel@lists.proxmox.com>, Lukas Wagner <l.wagner@proxmox.com>
References: <20250314141225.240768-1-l.wagner@proxmox.com>
 <20250314141225.240768-6-l.wagner@proxmox.com>
Content-Language: de-AT, en-US
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Autocrypt: addr=t.lamprecht@proxmox.com; keydata=
 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 DrEx
In-Reply-To: <20250314141225.240768-6-l.wagner@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.190 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. [qemu.rs, proxmox-datacenter-api.rs, mod.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>

QW0gMTQuMDMuMjUgdW0gMTU6MTIgc2NocmllYiBMdWthcyBXYWduZXI6Cj4gVGhpcyBjb21taXRz
IGNoYW5nZXMgdGhlIHJlbW90ZSB0YXNrIG1vZHVsZSBhcyBmb2xsb3dzOgo+IAo+IC0gQWRkIGEg
bmV3IGJhY2tncm91bmQgdGFzayBmb3IgcmVndWxhciBwb2xsaW5nIG9mIHRhc2sgZGF0YQo+IElu
c3RlYWQgb2YgdHJpZ2dlcmluZyBmZXRjaGluZyBvZiB0YXNrIGRhdGEgZnJvbSB0aGUgYGdldF90
YXNrc2AgZnVuY3Rpb24sCj4gd2hpY2ggaXMgdXN1YWxseSBjYWxsZWQgYnkgYW4gQVBJIGhhbmRs
ZXIsIHdlIG1vdmUgdGhlIGZldGNoaW5nIHRvIGEKPiBuZXcgYmFja2dyb3VuZCB0YXNrLiBUaGUg
dGFzayBmZXRjaGVzIHRoZSBsYXRlc3QgdGFza3MgZnJvbSBhbGwgcmVtb3Rlcwo+IGFuZCBzdG9y
ZXMgdGhlbSBpbiB0aGUgdGFzayBjYWNoZSBpbiByZWd1bGFyIGludGVydmFscyAoMTAgbWludXRl
cykuCj4gVGhlIGBnZXRfdGFza3NgIGZ1bmN0aW9uIGl0c2VsZiBvbmx5IHJlYWRzIGZyb20gdGhl
IGNhY2hlLgo+IFRoZSBtYWluIHJhdGlvbmFsZSBmb3IgdGhpcyBjaGFuZ2UgaXMgdGhhdCBmb3Ig
bGFyZ2Ugc2V0dXBzLCBmZXRjaGluZwo+IHRhc2tzIGZyb20gYWxsIHJlbW90ZXMgY2FuIHRha2Ug
YSAqbG9uZyogdGltZSAoZS5nLiBodW5kcmVkcyBvZiByZW1vdGVzLAo+IGVhY2ggd2l0aCBhID4x
MDBtcyBjb25uZWN0aW9uIC0gYWRkcyB1cCB0byBtaW51dGVzIHF1aWNrbHkpLgo+IElmIHdlIGRv
IHRoaXMgZnJvbSB3aXRoaW4gYGdldF90YXNrc2AsIHRoZSBBUEkgaGFuZGxlciBjYWxsaW5nIHRo
ZQo+IGZ1bmN0aW9uIGlzIGFsc28gYmxvY2tlZCBmb3IgdGhlIGVudGlyZSB0aW1lLgo+IFRoZSBg
Z2V0X3Rhc2tzYCBBUEkgaXMgY2FsbGVkIGV2ZXJ5IGNvdXBsZSBvZiBzZWNvbmRzIGJ5IHRoZSBV
SSB0aGUgZ2V0Cj4gYSBsaXN0IG9mIHJ1bm5pbmcgcmVtb3RlIHRhc2tzLCBzbyB0aGlzICptdXN0
KiBiZSBxdWljay4KPiAKPiAtIFRyYWNrZWQgdGFza3MgYXJlIGFsc28gcG9sbGVkIGluIHRoZSBz
YW1lIGJhY2tncm91bmQgdGFzaywgYnV0IHdpdGgKPiBhIHNob3J0IHBvbGxpbmcgZGVsYXkgKDEw
IHNlY29uZHMpLiBJbnN0ZWFkIG9mIHBvbGxpbmcgdGhlIHN0YXR1cyBzcGVjaWZpYwo+IHRyYWNr
ZWQgdGFzayBVUElELCB3ZSBzaW1wbHkgZmV0Y2ggKmFsbCogdGFza3Mgc2luY2UgdGhlIHRyYWNr
ZWQgdGFzayBzdGFydGVkLgo+IFdoaWxlIHRoaXMgaW5jcmVhc2VkIHRoZSBhbW91bnQgb2YgdHJh
bnNtaXR0ZWQgZGF0YSBhIGJpdCBmb3IgdHJhY2tlZCB0YXNrcwo+IHRoYXQgcnVuIGZvciBhIHZl
cnkgbG9uZyB0aW1lLCB0aGlzIG5ldyBhcHByb2FjaCBtYWtlIHRoZSB3aG9sZQo+IHRhc2sgdHJh
Y2tpbmcgZnVuY3Rpb25hbGl0eSBtdWNoIG1vcmUgZWxlZ2FudDsgaXQgaW50ZWdyYXRlcyBiZXR0
ZXIgd2l0aAo+IHRoZSAncmVndWxhcicgdGFzayBmZXRjaGluZyB3aGljaCBoYXBwZW5zIGluIGxv
bmcgaW50ZXJ2YWxzLgo+IAo+IC0gVGFza3MgYXJlIG5vdyBzdG9yZWQgaW4gdGhlIG5ldyBpbXBy
b3ZlZCB0YXNrIGNhY2hlIGltcGxlbWVudGF0aW9uLgo+IFRoaXMgc2hvdWxkIG1ha2UgcmV0cmll
dmluZyB0YXNrcyBtdWNoIHF1aWNrZXIgYW5kIGF2b2lkcwo+IHVubmVlZGVkIGRpc2sgSU8uCgpU
aGUgaGlnaGVyIGxldmVsIGRlc2NyaXB0aW9uIHJlYWRzIGdvb2QgdG8gbWUgYW5kIEkgcGxhbiB0
byB0YWtlIGEgY2xvc2VyCmxvb2ssIGJ1dCB3aGlsZSBhcHBseWluZyB0aGlzIOKAkyB3aXRoIGEg
dHJpdmlhbCBtZXJnZSBjb25mbGljdCBpbiB1c2UKc3RhdGVtZW50cyByZXNvbHZlZCBkdWUgdG8g
V29sZmdhbmcncyBjbGllbnQgc2VyaWVzIGJlaW5nIGFwcGxpZWQgZWFybGllciDigJMKc29tZSBz
bWFsbGVyIHRoaW5ncyBzdHVjayBhIGJpdCBvdXQgdG8gbWUgd2hlbiBza2ltbWluZyBnaXQgbG9n
LCBhIGZldwphcmUgcmF0aGVyIGluIHRoZSBiaWtlIHNoZWQgYXJlYSB0aG91Z2gsIHNlZSBiZWxv
dy4KCj4gCj4gU2lnbmVkLW9mZi1ieTogTHVrYXMgV2FnbmVyIDxsLndhZ25lckBwcm94bW94LmNv
bT4KPiBSZXZpZXdlZC1ieTogTWF4IENhcnJhcmEgPG0uY2FycmFyYUBwcm94bW94LmNvbT4KCldo
aWxlIEkgY2VydGFpbmx5IGVuY291cmFnZSB3b3JraW5nIHRvZ2V0aGVyIEknbSBub3QgYSByZWFs
bHkgaHVnZSBmYW4Kb2YgYmxpbmQgcmV2aWV3ICh0YWdzKSB3aGVyZSBvbmUgY2Fubm90IHNlZSBh
bnkgcmV2aWV3IGNvbW1lbnRzIGF0IGFsbCwKaXQncyBhIGxvc3MgaW4gaW5mb3JtYXRpb24gYW5k
IGNhbiBhbHNvIHJlc3VsdCBpbiBzb21lIGluY3JlYXNlZCBvdmVyaGVhZC4KCj4gLS0tCj4gIHNl
cnZlci9zcmMvYXBpL3B2ZS9seGMucnMgICAgICAgICAgICAgICAgfCAgMTAgKy0KPiAgc2VydmVy
L3NyYy9hcGkvcHZlL21vZC5ycyAgICAgICAgICAgICAgICB8ICAgNCArLQo+ICBzZXJ2ZXIvc3Jj
L2FwaS9wdmUvcWVtdS5ycyAgICAgICAgICAgICAgIHwgICA2ICstCj4gIHNlcnZlci9zcmMvYXBp
L3JlbW90ZV90YXNrcy5ycyAgICAgICAgICAgfCAgMTEgKy0KPiAgc2VydmVyL3NyYy9iaW4vcHJv
eG1veC1kYXRhY2VudGVyLWFwaS5ycyB8ICAgMyArLQo+ICBzZXJ2ZXIvc3JjL3JlbW90ZV90YXNr
cy9tb2QucnMgICAgICAgICAgIHwgNzg4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gIDYgZmls
ZXMgY2hhbmdlZCwgMzg4IGluc2VydGlvbnMoKyksIDQzNCBkZWxldGlvbnMoLSkKPiAKCj4gZGlm
ZiAtLWdpdCBhL3NlcnZlci9zcmMvcmVtb3RlX3Rhc2tzL21vZC5ycyBiL3NlcnZlci9zcmMvcmVt
b3RlX3Rhc2tzL21vZC5ycwo+IGluZGV4IDIwNjJmMmI3Li40OGQ1NDY5NCAxMDA2NDQKPiAtLS0g
YS9zZXJ2ZXIvc3JjL3JlbW90ZV90YXNrcy9tb2QucnMKPiArKysgYi9zZXJ2ZXIvc3JjL3JlbW90
ZV90YXNrcy9tb2QucnMKPiBAQCAtMSw2NSArMSwxMDYgQEAKPiAtdXNlIHN0ZDo6ewo+IC0gICAg
Y29sbGVjdGlvbnM6OntIYXNoTWFwLCBIYXNoU2V0fSwKPiAtICAgIGZzOjpGaWxlLAo+IC0gICAg
cGF0aDo6e1BhdGgsIFBhdGhCdWZ9LAo+IC0gICAgc3luYzo6e0xhenlMb2NrLCBSd0xvY2t9LAo+
IC0gICAgdGltZTo6RHVyYXRpb24sCj4gLX07Cj4gK3VzZSBzdGQ6Ontjb2xsZWN0aW9uczo6SGFz
aE1hcCwgcGF0aDo6UGF0aCwgc3luYzo6QXJjLCB0aW1lOjpEdXJhdGlvbn07Cj4gIAo+IC11c2Ug
YW55aG93OjpFcnJvcjsKPiArdXNlIGFueWhvdzo6e2Zvcm1hdF9lcnIsIEVycm9yfTsKPiArdXNl
IG5peDo6c3lzOjpzdGF0OjpNb2RlOwo+ICB1c2UgcGRtX2FwaV90eXBlczo6ewo+ICAgICAgcmVt
b3Rlczo6e1JlbW90ZSwgUmVtb3RlVHlwZX0sCj4gICAgICBSZW1vdGVVcGlkLCBUYXNrRmlsdGVy
cywgVGFza0xpc3RJdGVtLCBUYXNrU3RhdGVUeXBlLAo+ICB9Owo+ICB1c2UgcHJveG1veF9zeXM6
OmZzOjpDcmVhdGVPcHRpb25zOwo+ICB1c2UgcHZlX2FwaV90eXBlczo6e0xpc3RUYXNrcywgTGlz
dFRhc2tzUmVzcG9uc2UsIExpc3RUYXNrc1NvdXJjZSwgUHZlVXBpZH07Cj4gLXVzZSBzZXJkZTo6
e0Rlc2VyaWFsaXplLCBTZXJpYWxpemV9Owo+IC11c2UgdG9raW86OnRhc2s6OkpvaW5IYW5kbGU7
Cj4gK3VzZSB0YXNrX2NhY2hlOjp7QWRkVGFza3MsIEdldFRhc2tzLCBTdGF0ZSwgVGFza0NhY2hl
LCBUYXNrQ2FjaGVJdGVtfTsKPiArdXNlIHRva2lvOjp7c3luYzo6U2VtYXBob3JlLCB0YXNrOjpK
b2luU2V0fTsKPiAgCj4gIHVzZSBjcmF0ZTo6e2FwaTo6cHZlLCB0YXNrX3V0aWxzfTsKPiAgCj4g
IG1vZCB0YXNrX2NhY2hlOwo+ICAKPiArY29uc3QgUkVNT1RFX1RBU0tTX0RJUjogJnN0ciA9IGNv
bmNhdCEocGRtX2J1aWxkY2ZnOjpQRE1fQ0FDSEVfRElSX00hKCksICIvcmVtb3RlLXRhc2tzIik7
Cj4gKwo+ICtjb25zdCBTRUNPTkRTX1BFUl9NSU5VVEU6IHU2NCA9IDYwOwo+ICtjb25zdCBNSU5V
VEVTX1BFUl9IT1VSOiB1NjQgPSA2MDsKV2hpbGUgdGVjaG5pY2FsbHkgY29ycmVjdCB0aGlzIHJl
YWRzIGxpa2UgYSByYXRlIGFuZCBtYWtlcyBpdCBJTU8gYSBiaXQKaGFyZGVyIHRvIHRlbGwgd2hh
dCBpcyBtZWFudCBpbiBiZWxvdyBjYWxjdWxhdGlvbnMuCgpJJ2QgZWl0aGVyIHVzZSBEdXJhdGlv
biBmcm9tIHN0ZCwgbGlrZSBlLmcuIER1cmF0aW9uOjpmcm9tX21pbnMoMTApLmFzX3NlY3MoKQph
bmQgRHVyYXRpb246OmZyb21faG91cnMoMSkuYXNfc2VjcygpIHJlc3BlY3RpdmVseSBmb3IgUkVH
VUxBUl9SRUZSRVNIX1MgYW5kCkNIRUNLX1JPVEFURV9TIGJlbG93IG9yIGp1c3QgNjAgYW5kIDM2
MDAsIHRob3NlIHZhbHVlcyBhcmUgcHJldHR5IG11Y2ggZ2VuZXJhbAprbm93bGVkZ2UsIHdoaWNo
IG1pZ2h0IGJlIGEgcGFydCBvZiB0aGUgY29uZnVzaW9uIHBvdGVudGlhbCBJIHNlZSBpbiB5b3Vy
CnZhcmlhbnQsIGFzIEkgYmFzaWNhbGx5IGV4cGVjdCB0aGF0IHRoaXMgaGFzIHRvIGJlIHNvbWV0
aGluZyBtb3JlIGVsYWJvcmF0ZSBvcgp3aHkgIHdvdWxkIGl0IGdvIGZvciB0aGlzIHNlZW1pbmds
eSBjb21wbGV4IHZhcmlhbnQuClRoYXQgc2FpZCwgdXNpbmcgd2hhdCB0aGUgc3RkIGxpYiBhbHJl
YWR5IHByb3ZpZGVzIGlzIHRvdGFsbHkgZmluZSBoZXJlLgoKPiArCj4gKy8vLyBUaWNrIHJhdGUg
Zm9yIHRoZSByZW1vdGUgdGFzayBmZXRjaGluZyB0YXNrLgo+ICsvLy8gVGhpcyBpcyBhbHNvIHRo
ZSByYXRlIGF0IHdoaWNoIHdlIGNoZWNrIG9uIHRyYWNrZWQgdGFza3MuCj4gK2NvbnN0IFRJQ0tf
UkFURV9TOiB1NjQgPSAxMDsKPiArCj4gKy8vLyBJbnRlcnZhbCBpbiBzZWNvbmRzIGF0IHdoaWNo
IHRvIGZldGNoIHRoZSBuZXdlc3QgdGFza3MgZnJvbSByZW1vdGVzIChpZiB0aGVyZSBpcyBubyB0
cmFja2VkCj4gKy8vLyB0YXNrIGZvciB0aGlzIHJlbW90ZSkuCj4gK2NvbnN0IFJFR1VMQVJfUkVG
UkVTSF9TOiB1NjQgPSAxMCAqIFNFQ09ORFNfUEVSX01JTlVURTsKSU1PIGl0IGhhcyBzb21lIHRp
bnkgdmFsdWUgdG8gZW5jb2RlIGlmIGl0J3MgYSBwZXJpb2Qgb3IgYSByYXRlIGluIHRoZQpuYW1l
LCB3aGlsZSBJIGRvIG5vdCBzZWUgbXVjaCBiZW5lZml0IGluIGhhdmluZyAicmVndWxhciIgaW4g
dGhlcmUgKGFsYmVpdApJIGNhbiBzZWUgd2hlcmUgeW91IGNvbWUgZnJvbSB0byB1c2UgdGhhdCBp
biB0aGUgbmFtZSkuCgpjb25zdCBUQVNLX1JFRlJFU0hfUEVSSU9EX1M6IHU2NCA9IER1cmF0aW9u
Ojpmcm9tX21pbnMoMTApLmFzX3NlY3MoKTsKCm9yIAoKY29uc3QgVEFTS19SRUZSRVNIX1BFUklP
RF9TOiB1NjQgPSA2MDsKCm9yIGlmIEknbSBhbHJlYWR5IGJpa2Ugc2hlZGRpbmcgcy9SRUZSRVNI
L1BPTEwvIHRvIGJlIHNsaWdodGx5IHNob3J0ZXI6Cgpjb25zdCBUQVNLX1BPTExfUEVSSU9EX1M6
IHU2NCA9IDYwOwoKCj4gKy8vLyBOdW1iZXIgb2YgY3ljbGVzIHVudGlsIGEgcmVndWxhciByZWZy
ZXNoLgo+ICtjb25zdCBSRUdVTEFSX1JFRlJFU0hfQ1lDTEVTOiB1NjQgPSBSRUdVTEFSX1JFRlJF
U0hfUyAvIFRJQ0tfUkFURV9TOwo+ICsKPiArLy8vIENoZWNrIGlmIHdlIHdhbnQgdG8gcm90YXRl
IG9uY2UgZXZlcnkgaG91ci4KPiArY29uc3QgQ0hFQ0tfUk9UQVRFX1M6IHU2NCA9IFNFQ09ORFNf
UEVSX01JTlVURSAqIE1JTlVURVNfUEVSX0hPVVI7Cj4gKy8vLyBOdW1iZXIgb2YgY3ljbGVzIGJl
Zm9yZSB3ZSB3YW50IHRvIGNoZWNrIGlmIHdlIHNob3VsZCByb3RhdGUgdGhlIHRhc2sgYXJjaGl2
ZXMuCj4gK2NvbnN0IENIRUNLX1JPVEFURV9DWUNMRVM6IHU2NCA9IENIRUNLX1JPVEFURV9TIC8g
VElDS19SQVRFX1M7Cj4gKwo+ICsvLy8gUm90YXRlIG9uY2UgdGhlIG1vc3QgcmVjZW50IGFyY2hp
dmUgZmlsZSBpcyBhdCBsZWFzdCAyNCBob3VyIG9sZC4KPiArY29uc3QgUk9UQVRFX0FGVEVSX1M6
IHU2NCA9IDI0ICogTUlOVVRFU19QRVJfSE9VUiAqIFNFQ09ORFNfUEVSX01JTlVURTsKV2h5IG5v
IEhPVVJTX1BFUl9EQVk/IDtQCgo+ICsKPiArLy8vIEtlZXAgNyBkYXlzIHdvcnRoIG9mIHRhc2tz
Lgo+ICtjb25zdCBLRUVQX09MRF9GSUxFUzogdTY0ID0gNzsKPiArCj4gKy8vLyBNYXhpbXVtIG51
bWJlciBvZiBjb25jdXJyZW50IGNvbm5lY3Rpb25zIHBlciByZW1vdGUuCj4gK2NvbnN0IENPTk5F
Q1RJT05TX1BFUl9QVkVfUkVNT1RFOiB1c2l6ZSA9IDU7Cj4gKy8vLyBNYXhpbXVtIG51bWJlciBv
ZiB0b3RhbCBjb25jdXJyZW50IGNvbm5lY3Rpb25zLiBgQ09OTkVDVElPTlNfUEVSX1JFTU9URWAg
aXMgdGFrZW4gaW50bwo+ICsvLy8gY29uc2lkZXJhdGlvbiB3aGVuIGFjY291bnRpbmcgZm9yIHRo
ZSB0b3RhbCBudW1iZXIgb2YgY29ubmVjdGlvbnMuCj4gKy8vLyBGb3IgaW5zdGFuY2UsIGlmIGBN
QVhfQ09OTkVDVElPTlNgIGlzIDIwIGFuZCBgQ09OTkVDVElPTlNfUEVSX1JFTU9URWAgaXMgNSwg
d2UgY2FuIGNvbm5lY3QKPiArLy8vIHRvIDQgUFZFIHJlbW90ZXMgaW4gcGFyYWxsZWwuCj4gK2Nv
bnN0IE1BWF9DT05ORUNUSU9OUzogdXNpemUgPSAyMDsKPiArCj4gKy8vLyBNYXhpbXVtIG51bWJl
ciBvZiB0YXNrcyB0byBmZXRjaCBmcm9tIGEgc2luZ2xlIHJlbW90ZSBpbiBvbmUgQVBJIGNhbGwu
Cj4gK2NvbnN0IE1BWF9UQVNLU19UT19GRVRDSDogdTY0ID0gNTAwMDsKPiArCgo+ICsKPiArLy8v
IFRhc2sgd2hpY2ggaGFuZGxlcyBmZXRjaGluZyByZW1vdGUgdGFza3MgYW5kIHRhc2sgYXJjaGl2
ZSByb3RhdGlvbi4KPiArLy8vIFRoaXMgZnVuY3Rpb24gbmV2ZXIgcmV0dXJucy4KPiArYXN5bmMg
Zm4gcmVtb3RlX3Rhc2tfZmV0Y2hpbmdfdGFzaygpIC0+ICEgewo+ICsgICAgbGV0IG11dCBjeWNs
ZSA9IDB1NjQ7Cj4gKyAgICBsZXQgbXV0IGludGVydmFsID0gdG9raW86OnRpbWU6OmludGVydmFs
KER1cmF0aW9uOjpmcm9tX3NlY3MoVElDS19SQVRFX1MpKTsKPiArICAgIGludGVydmFsLnJlc2V0
X2F0KHRhc2tfdXRpbHM6Om5leHRfYWxpZ25lZF9pbnN0YW50KFRJQ0tfUkFURV9TKS5pbnRvKCkp
Owo+ICsKPiArICAgIC8vIFdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IGNhdGNoaW5nIHVwIHRv
IG1pc3NlZCB0aWNrLCB3ZSBqdXN0IHdhbnQKPiArICAgIC8vIGEgc3RlYWR5IHRpY2sgcmF0ZS4K
PiArICAgIGludGVydmFsLnNldF9taXNzZWRfdGlja19iZWhhdmlvcih0b2tpbzo6dGltZTo6TWlz
c2VkVGlja0JlaGF2aW9yOjpTa2lwKTsKPiArCj4gKyAgICBpZiBsZXQgRXJyKGVycikgPSBpbml0
X2NhY2hlKCkuYXdhaXQgewo+ICsgICAgICAgIGxvZzo6ZXJyb3IhKCJlcnJvciB3aGVuIGluaXRp
YWxpemVkIHRhc2sgY2FjaGU6IHtlcnJ9Iik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgbG9vcCB7Cj4g
KyAgICAgICAgaW50ZXJ2YWwudGljaygpLmF3YWl0Owo+ICsgICAgICAgIGlmIGxldCBFcnIoZXJy
KSA9IGRvX3RpY2soY3ljbGUpLmF3YWl0IHsKPiArICAgICAgICAgICAgbG9nOjplcnJvciEoImVy
cm9yIHdoZW4gZmV0Y2hpbmcgcmVtb3RlIHRhc2tzOiB7ZXJyfSIpOwo+ICsgICAgICAgIH0KPiAr
Cj4gKyAgICAgICAgLy8gQXQgYSByYXRlIG9mIG9uZSB0aWNrIGV2ZXJ5IDEwcyB3ZSB3cmFwIGFy
b3VuZCBpbiAqb25seSogNSB0cmlsbGlvbiB5ZWFycywKPiArICAgICAgICAvLyBiZXR0ZXIgYmUg
c2FmZSBhbmQgdXNlIC53cmFwcGluZ19hZGQoMSkgOikKPiArICAgICAgICBjeWNsZSA9IGN5Y2xl
LndyYXBwaW5nX2FkZCgxKTsKPiArICAgIH0KPiArfQo+ICsKPiArLy8vIEluaXRpYWxpemUgdGhl
IHJlbW90ZSB0YXNrIGNhY2hlIHdpdGggaW5pdGlhbCBhcmNoaXZlIGZpbGVzLCBpbiBjYXNlIHRo
ZXJlIGFyZSBub3QKPiArLy8vIGFueSBhcmNoaXZlIGZpbGVzIHlldC4KPiArLy8vCj4gKy8vLyBD
cmVhdGVzIGBLRUVQX09MRF9GSUxFU2AgYXJjaGl2ZSBmaWxlcywgd2l0aCBlYWNoIGFyY2hpdmUg
ZmlsZSdzIGN1dC1vZmYgdGltZQo+ICsvLy8gc3BhY2VkIGBST1RBVEVfQUZURVJfU2Agc2Vjb25k
cyBhcGFydC4KPiArLy8vIFRoaXMgYWxsb3dzIHVzIHRvIGltbWVkaWF0ZWx5IGJhY2tmaWxsIHJl
bW90ZSB0YXNrIGhpc3Rvcnkgd2hlbiBzZXR0aW5nIHVwIGEgbmV3IFBETSBpbnN0YW5jZQo+ICsv
Ly8gd2l0aG91dCBhbnkgcHJpb3IgdGFzayBhcmNoaXZlIHJvdGF0aW9uLgo+ICthc3luYyBmbiBp
bml0X2NhY2hlKCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICsgICAgdG9raW86OnRhc2s6OnNw
YXduX2Jsb2NraW5nKHx8IHsKPiArICAgICAgICBsZXQgY2FjaGUgPSBnZXRfY2FjaGUoKT87Cj4g
KyAgICAgICAgY2FjaGUuaW5pdChwcm94bW94X3RpbWU6OmVwb2NoX2k2NCgpLCBLRUVQX09MRF9G
SUxFUywgUk9UQVRFX0FGVEVSX1MpPzsKPiArICAgICAgICBPaygoKSkKPiArICAgIH0pCj4gKyAg
ICAuYXdhaXQ/Cj4gK30KPiArCj4gKy8vLyBIYW5kbGUgYSBzaW5nbGUgdGltZXIgdGljay4KPiAr
Ly8vIFdpbGwgaGFuZGxlIGFyY2hpdmUgZmlsZSByb3RhdGlvbiwgcG9sbGluZyBvZiB0cmFja2Vk
IHRhc2tzIGFuZCBmZXRjaGluZyBvciByZW1vdGUgdGFza3MuCj4gK2FzeW5jIGZuIGRvX3RpY2so
Y3ljbGU6IHU2NCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICsgICAgbGV0IGNhY2hlID0gZ2V0
X2NhY2hlKCk/Owo+ICsKPiArICAgIGlmIHNob3VsZF9jaGVja19mb3JfY2FjaGVfcm90YXRpb24o
Y3ljbGUpIHsKPiArICAgICAgICBsb2c6OmRlYnVnISgiY2hlY2tpbmcgaWYgcmVtb3RlIHRhc2sg
YXJjaGl2ZSBzaG91bGQgYmUgcm90YXRlZCIpOwo+ICsgICAgICAgIGlmIHJvdGF0ZV9jYWNoZShj
YWNoZS5jbG9uZSgpKS5hd2FpdD8gewo+ICsgICAgICAgICAgICBsb2c6OmluZm8hKCJyb3RhdGVk
IHJlbW90ZSB0YXNrIGFyY2hpdmUiKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAg
bGV0IHN0YXRlID0gY2FjaGUucmVhZF9zdGF0ZSgpOwo+ICsKPiArICAgIGxldCBtdXQgYWxsX3Rh
c2tzID0gSGFzaE1hcDo6bmV3KCk7Cj4gKwo+ICsgICAgbGV0IHNlbWFwaG9yZSA9IEFyYzo6bmV3
KFNlbWFwaG9yZTo6bmV3KE1BWF9DT05ORUNUSU9OUykpOwoKVGFsa2luZyBuYW1lcyB3b3VsZCBi
ZSBuaWNlLCB3ZSBnb3QgYSByYXRoZXIgZ2VuZXJpY2FsbHkgbmFtZWQgc2VtYXBob3JlCnZhcmlh
YmxlIHR3aWNlIGluIHRoaXMgbW9kdWxlLCBtYXliZSB1c2UgKHJlc3BlY3RpdmVseSk6Cgp0b3Rh
bF9jb25uZWN0aW9uX3NlbWFwaG9yZSBvciB0b3RhbF9jb25uZWN0aW9uX2xpbWl0CnBlcl9yZW1v
dGVfc2VtYXBob3JlIG9yIHBlcl9yZW1vdGVfbGltaXQKCj4gKyAgICBsZXQgbXV0IGpvaW5fc2V0
ID0gSm9pblNldDo6bmV3KCk7Cj4gKwo+ICsgICAgbGV0IHJlbW90ZXMgPSByZW1vdGVzX3RvX2No
ZWNrKGN5Y2xlLCAmc3RhdGUpLmF3YWl0PzsKPiArICAgIGZvciByZW1vdGUgaW4gcmVtb3RlcyB7
Cj4gKyAgICAgICAgbGV0IHNpbmNlID0gZ2V0X2N1dG9mZl90aW1lc3RhbXAoJnJlbW90ZSwgJnN0
YXRlKTsKPiArCj4gKyAgICAgICAgbGV0IHBlcm1pdCA9IGlmIHJlbW90ZS50eSA9PSBSZW1vdGVU
eXBlOjpQdmUgewo+ICsgICAgICAgICAgICAvLyBBY3F1aXJlIG11bHRpcGxlIHBlcm1pdHMsIGZv
ciBQVkUgcmVtb3RlcyB3ZSB3YW50Cj4gKyAgICAgICAgICAgIC8vIHRvIG11bHRpcGxlIG5vZGVz
IGluIHBhcmFsbGVsLgo+ICsgICAgICAgICAgICAvLwo+ICsgICAgICAgICAgICAvLyBgLnVud3Jh
cCgpYCBpcyBzYWZlLCB3ZSBuZXZlciBjbG9zZSB0aGUgc2VtYXBob3JlLgo+ICsgICAgICAgICAg
ICBBcmM6OmNsb25lKCZzZW1hcGhvcmUpCj4gKyAgICAgICAgICAgICAgICAuYWNxdWlyZV9tYW55
X293bmVkKENPTk5FQ1RJT05TX1BFUl9QVkVfUkVNT1RFIGFzIHUzMikKPiArICAgICAgICAgICAg
ICAgIC5hd2FpdAo+ICsgICAgICAgICAgICAgICAgLnVud3JhcCgpCj4gKyAgICAgICAgfSBlbHNl
IHsKPiArICAgICAgICAgICAgLy8gRm9yIFBCUyByZW1vdGVzIHdlIG9ubHkgaGF2ZSBhIHNpbmds
ZSBvdXRnb2luZyBjb25uZWN0aW9uCj4gKyAgICAgICAgICAgIC8vCj4gKyAgICAgICAgICAgIC8v
IGAudW53cmFwKClgIGlzIHNhZmUsIHdlIG5ldmVyIGNsb3NlIHRoZSBzZW1hcGhvcmUuCj4gKyAg
ICAgICAgICAgIEFyYzo6Y2xvbmUoJnNlbWFwaG9yZSkuYWNxdWlyZV9vd25lZCgpLmF3YWl0LnVu
d3JhcCgpCj4gKyAgICAgICAgfTsKPiArCj4gKyAgICAgICAgam9pbl9zZXQuc3Bhd24oYXN5bmMg
bW92ZSB7Cj4gKyAgICAgICAgICAgIGxvZzo6ZGVidWchKCJmZXRjaGluZyByZW1vdGUgdGFza3Mg
Zm9yICd7fScgc2luY2Uge3NpbmNlfSIsIHJlbW90ZS5pZCk7Cj4gKyAgICAgICAgICAgIGxldCB0
YXNrcyA9IGZldGNoX3Rhc2tzKCZyZW1vdGUsIHNpbmNlKS5hd2FpdC5tYXBfZXJyKHxlcnJ8IHsK
PiArICAgICAgICAgICAgICAgIGZvcm1hdF9lcnIhKCJjb3VsZCBub3QgZmV0Y2ggdGFza3MgZnJv
bSByZW1vdGUgJ3t9Jzoge2Vycn0iLCByZW1vdGUuaWQpCj4gKyAgICAgICAgICAgIH0pOwo+ICsK
PiArICAgICAgICAgICAgZHJvcChwZXJtaXQpOwo+ICsgICAgICAgICAgICB0YXNrcwo+ICsgICAg
ICAgIH0pOwo+ICsgICAgfQo+ICsKPiArICAgIHdoaWxlIGxldCBTb21lKHJlcykgPSBqb2luX3Nl
dC5qb2luX25leHQoKS5hd2FpdCB7Cj4gKyAgICAgICAgbWF0Y2ggcmVzIHsKPiArICAgICAgICAg
ICAgT2soT2soKHJlbW90ZSwgcmVxdWVzdCkpKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICBhbGxf
dGFza3MuaW5zZXJ0KHJlbW90ZSwgcmVxdWVzdCk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAg
ICAgICAgT2soRXJyKGVycikpID0+IGxvZzo6ZXJyb3IhKCJ7ZXJyfSIpLAo+ICsgICAgICAgICAg
ICBFcnIoZXJyKSA9PiBsb2c6OmVycm9yISgiY291bGQgbm90IGpvaW4gdGFzayBmZXRjaGluZyBm
dXR1cmU6IHtlcnJ9IiksCj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGlmICFhbGxf
dGFza3MuaXNfZW1wdHkoKSB7Cj4gKyAgICAgICAgc2F2ZV90YXNrcyhjYWNoZSwgYWxsX3Rhc2tz
KS5hd2FpdD87Cj4gKyAgICB9Cj4gKwo+ICsgICAgT2soKCkpCj4gK30KPiArCj4gKy8vLyBSZXR1
cm4gbGlzdCBvZiByZW1vdGVzIHRoYXQgYXJlIHRvIGJlIHBvbGxlZCBpbiB0aGlzIGN5Y2xlLgoK
c29tZSBoaWdoZXIgbGV2ZWwgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIG1lYW5zIGFuZCB3aGF0
IHRoZSByYXRpb25hbGUgaXMKd291bGQgYmUgbmljZSBoZXJlLgoKPiArYXN5bmMgZm4gcmVtb3Rl
c190b19jaGVjayhjeWNsZTogdTY0LCBzdGF0ZTogJlN0YXRlKSAtPiBSZXN1bHQ8VmVjPFJlbW90
ZT4sIEVycm9yPiB7Cj4gKyAgICBsZXQgKGNvbmZpZywgXykgPSB0b2tpbzo6dGFzazo6c3Bhd25f
YmxvY2tpbmcocGRtX2NvbmZpZzo6cmVtb3Rlczo6Y29uZmlnKS5hd2FpdD8/Owo+ICsKPiArICAg
IGxldCBhbGwgPSBjeWNsZSAlIFJFR1VMQVJfUkVGUkVTSF9DWUNMRVMgPT0gMDsKPiArCj4gKyAg
ICBpZiBhbGwgewo+ICsgICAgICAgIE9rKGNvbmZpZy5zZWN0aW9ucy5pbnRvX3ZhbHVlcygpLmNv
bGxlY3QoKSkKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgT2soY29uZmlnCj4gKyAgICAgICAg
ICAgIC5zZWN0aW9ucwo+ICsgICAgICAgICAgICAuaW50b19pdGVyKCkKPiArICAgICAgICAgICAg
LmZpbHRlcl9tYXAofChuYW1lLCByZW1vdGUpfCB7Cj4gKyAgICAgICAgICAgICAgICBpZiBsZXQg
U29tZSh0cmFja2VkKSA9IHN0YXRlLnRyYWNrZWRfdGFza3MuZ2V0KCZuYW1lKSB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgaWYgIXRyYWNrZWQuaXNfZW1wdHkoKSB7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgIFNvbWUocmVtb3RlKQo+ICsgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUKPiArICAgICAgICAgICAgICAgICAgICB9Cj4g
KyAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgIE5vbmUKPiAr
ICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgfSkKPiArICAgICAgICAgICAgLmNvbGxl
Y3QoKSkKPiArICAgIH0KPiArfQoKPiAgLy8vIEZldGNoIHRhc2tzIChhY3RpdmUgYW5kIGZpbmlz
aGVkKSBmcm9tIGEgcmVtb3RlCj4gLWFzeW5jIGZuIGZldGNoX3Rhc2tzKHJlbW90ZTogJlJlbW90
ZSkgLT4gUmVzdWx0PFZlYzxUYXNrTGlzdEl0ZW0+LCBFcnJvcj4gewo+ICsvLy8gYHNpbmNlYCBp
cyBhIFVOSVggdGltZXN0YW1wIChzZWNvbmRzKS4KPiArYXN5bmMgZm4gZmV0Y2hfdGFza3MocmVt
b3RlOiAmUmVtb3RlLCBzaW5jZTogaTY0KSAtPiBSZXN1bHQ8KFN0cmluZywgQWRkVGFza3MpLCBF
cnJvcj4gewo+ICAgICAgbGV0IG11dCB0YXNrcyA9IFZlYzo6bmV3KCk7Cj4gIAo+ICsgICAgbGV0
IG11dCBhbGxfc3VjY2Vzc2Z1bCA9IHRydWU7Cj4gKwo+ICAgICAgbWF0Y2ggcmVtb3RlLnR5IHsK
PiAgICAgICAgICBSZW1vdGVUeXBlOjpQdmUgPT4gewo+ICsgICAgICAgICAgICBsZXQgc2VtYXBo
b3JlID0gQXJjOjpuZXcoU2VtYXBob3JlOjpuZXcoQ09OTkVDVElPTlNfUEVSX1BWRV9SRU1PVEUp
KTsKPiArICAgICAgICAgICAgbGV0IG11dCBqb2luX3NldCA9IEpvaW5TZXQ6Om5ldygpOwo+ICsK
PiAgICAgICAgICAgICAgbGV0IGNsaWVudCA9IHB2ZTo6Y29ubmVjdChyZW1vdGUpPzsKPiAgCj4g
ICAgICAgICAgICAgIC8vIE4rMSByZXF1ZXN0cyAtIHdlIGNvdWxkIHVzZSAvY2x1c3Rlci90YXNr
cywgYnV0IHRoYXQgb25lCgpidHcuIGFzIEkgc2VlIGl0IGZyb20gdGhlIGNvbnRleHQsIHJlLWV2
YWx1YXRpbmcgdGhlIGxpbWl0IG9mIHRoZSBicm9hZGNhc3RlZAp0YXNrcyB3b3VsZCBiZSBkZWZp
bml0aXZlbHkgYW4gb3B0aW9uIHRvbywgb24gcmVtb3RlcyB3aXRoIG1vcmUgdGhhbiBhIGhhbmRm
dWwKb2Ygbm9kZXMgdGhhdCBtaWdodCBiZSBxdWl0ZSBhIGJpdCBjaGVhcGVyIGFuZCBoYXMgc29t
ZSBiZW5lZml0cyBvdXRzaWRlIG9mIHRoZQpQRE0gdXNlIGNhc2UuIEF0IGxlYXN0IHNvbWUgcXVp
Y2sgZXhwZXJpbWVudGF0aW9uIGFib3V0IGFjdHVhbCBpbXBhY3Qgb2YgYW4KaW5jcmVhc2UgdGhl
cmUgd291bGQgYmUgd2FycmFudGVkLCBhbGJlaXQgb3V0IG9mIHNjb3BlIG9mIHRoaXMgc2VyaWVz
IGFzIGNoZWNraW5nCnNlcGFyYXRlbHkgaXMgYWxyZWFkeSB0aGUgc3RhdHVzIHF1by4KCj4gQEAg
LTEzNCwxNiArMzc3LDUzIEBAIGFzeW5jIGZuIGZldGNoX3Rhc2tzKHJlbW90ZTogJlJlbW90ZSkg
LT4gUmVzdWx0PFZlYzxUYXNrTGlzdEl0ZW0+LCBFcnJvcj4gewo+ICAgICAgICAgICAgICAgICAg
bGV0IHBhcmFtcyA9IExpc3RUYXNrcyB7Cj4gICAgICAgICAgICAgICAgICAgICAgLy8gSW5jbHVk
ZSBydW5uaW5nIHRhc2tzCj4gICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBTb21lKExpc3RU
YXNrc1NvdXJjZTo6QWxsKSwKPiAtICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBIb3cgbXVj
aCB0YXNrIGhpc3RvcnkgZG8gd2Ugd2FudD8gUmlnaHQgbm93IHdlIGp1c3QgaGFyZC1jb2RlIGl0
Cj4gLSAgICAgICAgICAgICAgICAgICAgLy8gdG8gNyBkYXlzLgo+IC0gICAgICAgICAgICAgICAg
ICAgIHNpbmNlOiBTb21lKHByb3htb3hfdGltZTo6ZXBvY2hfaTY0KCkgLSA3ICogMjQgKiA2MCAq
IDYwKSwKPiArICAgICAgICAgICAgICAgICAgICBzaW5jZTogU29tZShzaW5jZSksCj4gKyAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgYGxpbWl0YCBpcyBub3QgcHJvdmlkZWQsIHdlIG9ubHkgcmVj
ZWl2ZSA1MCB0YXNrcwo+ICsgICAgICAgICAgICAgICAgICAgIGxpbWl0OiBTb21lKE1BWF9UQVNL
U19UT19GRVRDSCksCj4gICAgICAgICAgICAgICAgICAgICAgLi5EZWZhdWx0OjpkZWZhdWx0KCkK
PiAgICAgICAgICAgICAgICAgIH07Cj4gIAo+IC0gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBj
bGllbnQuZ2V0X3Rhc2tfbGlzdCgmbm9kZS5ub2RlLCBwYXJhbXMpLmF3YWl0PzsKPiAtICAgICAg
ICAgICAgICAgIGxldCBtYXBwZWQgPSBtYXBfdGFza3MobGlzdCwgJnJlbW90ZS5pZCk/Owo+ICsg
ICAgICAgICAgICAgICAgbGV0IHBlcm1pdCA9IEFyYzo6Y2xvbmUoJnNlbWFwaG9yZSkuYWNxdWly
ZV9vd25lZCgpLmF3YWl0LnVud3JhcCgpOwo+ICAKPiAtICAgICAgICAgICAgICAgIHRhc2tzLmV4
dGVuZChtYXBwZWQpOwo+ICsgICAgICAgICAgICAgICAgbGV0IHIgPSByZW1vdGUuY2xvbmUoKTsK
PiArCj4gKyAgICAgICAgICAgICAgICBqb2luX3NldC5zcGF3bihhc3luYyBtb3ZlIHsKPiArICAg
ICAgICAgICAgICAgICAgICBsZXQgY2xpZW50ID0gcHZlOjpjb25uZWN0KCZyKT87Cj4gKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHRhc2tfbGlzdCA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWVudAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldF90YXNrX2xpc3QoJm5v
ZGUubm9kZSwgcGFyYW1zKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF3YWl0Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCB7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2VyciEoInJlbW90ZSAne30nLCBub2RlICd7
fSc6IHtlcnJ9Iiwgci5pZCwgbm9kZS5ub2RlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSk/Owo+ICsKPiArICAgICAgICAgICAgICAgICAgICBkcm9wKHBlcm1pdCk7Cj4gKwo+ICsg
ICAgICAgICAgICAgICAgICAgIE9rOjo8VmVjPF8+LCBFcnJvcj4odGFza19saXN0KQo+ICsgICAg
ICAgICAgICAgICAgfSk7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIHdoaWxl
IGxldCBTb21lKHJlcykgPSBqb2luX3NldC5qb2luX25leHQoKS5hd2FpdCB7Cj4gKyAgICAgICAg
ICAgICAgICBtYXRjaCByZXMgewo+ICsgICAgICAgICAgICAgICAgICAgIE9rKE9rKGxpc3QpKSA9
PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXBwZWQgPSBsaXN0LmludG9faXRl
cigpLmZpbHRlcl9tYXAofHRhc2t8IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoIG1hcF9wdmVfdGFzayh0YXNrLCAmcmVtb3RlLmlkKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT2sodGFzaykgPT4gU29tZSh0YXNrKSwKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZzo6ZXJyb3IhKCJjb3VsZCBub3QgbWFwIHRhc2sgZGF0YSwgc2tpcHBp
bmc6IHtlcnJ9Iik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUK
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOwo+ICsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgdGFza3MuZXh0ZW5kKG1hcHBlZCk7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIE9rKEVycihlcnIpKSA9PiB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFsbF9zdWNjZXNzZnVsID0gZmFsc2U7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZzo6ZXJyb3IhKCJjb3VsZCBub3QgZmV0Y2ggdGFza3M6IHtlcnI6P30i
KTsKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgRXJyKGVy
cikgPT4gcmV0dXJuIEVycihlcnIuaW50bygpKSwKPiArICAgICAgICAgICAgICAgIH0KPiAgICAg
ICAgICAgICAgfQo+ICAgICAgICAgIH0KPiAgICAgICAgICBSZW1vdGVUeXBlOjpQYnMgPT4gewoK
PiArLy8vIENoZWNrIGlmIHdlIGFyZSBkdWUgZm9yIGNoZWNraW5nIGZvciBjYWNoZSByb3RhdGlv
bi4KPiArZm4gc2hvdWxkX2NoZWNrX2Zvcl9jYWNoZV9yb3RhdGlvbihjeWNsZTogdTY0KSAtPiBi
b29sIHsKPiArICAgIGN5Y2xlICUgQ0hFQ0tfUk9UQVRFX0NZQ0xFUyA9PSAwCgpUaGlzIGJhc2lj
YWxseSBkZXBlbmRzIG9uIHRoZSBmbiBnZXR0aW5nIGNhbGxlZCBpbml0aWFsbHkgd2l0aCBjeWNs
ZQpiZWluZyBzdGlsbCB6ZXJlbywgYXMgb3RoZXJld2lzZSB3ZSB3b3VsZCBuZXZlciByb3RhdGUg
aWYgYSBQRE0gZ2V0cwpyZXN0YXJ0ZWQvcmVib290ZWQgZGFpbHkgb3IgbW9yZSBvZnRlbiwgd2hp
Y2ggY2FuIGJlIGEgcG9zc2liaWxpdHkgZm9yCnVzZSBjYXNlcyB3aGVyZSBvbmUganVzdCBoYXMg
dGhlIFBETSBydW5uaW5nIGR1cmluZyB0aGVpciB3b3JrdGltZSwKd2hpY2ggaXMgc2VsZG9tbHkg
bG9uZ2VyIHRoYW4gYSBkYXkuCgpJLmUuLCBpdCB3b3JrcyBmaW5lIGFzIGlzLCBidXQgSSdkIGxp
a2UgdG8gc2VlIHRoYXQgaW52YXJpYW50IHN0YXRlCmEgYml0IGV4cGxpY2l0bHkgc29tZXdoZXJl
LgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBkbS1k
ZXZlbCBtYWlsaW5nIGxpc3QKcGRtLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlz
dHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3BkbS1kZXZlbAo=