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 057DB1FF16F
	for <inbox@lore.proxmox.com>; Thu, 13 Feb 2025 13:31:59 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id AF17434A3;
	Thu, 13 Feb 2025 13:31:55 +0100 (CET)
Message-ID: <f42d08f2-360e-417d-a634-44cab3315f9e@proxmox.com>
Date: Thu, 13 Feb 2025 13:31:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Wolfgang Bumiller <w.bumiller@proxmox.com>
References: <20250211120541.163621-1-l.wagner@proxmox.com>
 <20250211120541.163621-8-l.wagner@proxmox.com>
 <zoz5qzeqf7znlkgwldvkqwdqqey66mwnlnuwklmc4onjpayoll@wb5wcq3gesh4>
Content-Language: de-AT, en-US
From: Lukas Wagner <l.wagner@proxmox.com>
In-Reply-To: <zoz5qzeqf7znlkgwldvkqwdqqey66mwnlnuwklmc4onjpayoll@wb5wcq3gesh4>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.009 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: [pdm-devel] [PATCH proxmox-datacenter-manager 07/25] metric
 collection: rework metric poll task
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>
Cc: 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>

T24gIDIwMjUtMDItMTIgMTY6NTcsIFdvbGZnYW5nIEJ1bWlsbGVyIHdyb3RlOgo+IExvb2tzIGdv
b2QuCj4gT25lIGltcHJvdmVtZW50L2ZvbGxvdy11cCBzdWdnZXN0aW9uIChKb2luU2V0KSwgc29t
ZSBuaXRwaWNraW5nICYKPiBwb3RlbnRpYWwgcmVmYWN0b3JpbmcgcmVxdWVzdHMuLi4KPiAKClRo
YW5rcyBmb3IgdGhlIHJldmlldyA6KQoKSSdsbCBpbmNvcnBvcmF0ZSB5b3VyIHN1Z2dlc3Rpb25z
IGluIGEgdjIsIEkgYWxyZWFkeSBoYXZlIHNvbWUgb3RoZXIgbWlub3IgY2hhbmdlcwpxdWV1ZWQg
dXAgZm9yIGl0ICh0eXBvcywgcHVuY3R1YXRpb24sIG1pbm9yIGNvZGUgc3R5bGUgaW1wcm92ZW1l
bnRzIHRoYXQgTWF4aW1pbGlhbm8KcG9pbnRlZCBvdXQgdG8gbWUgaW5mb3JtYWxseSBhY3Jvc3Mg
dGhlIGRlc2sgOykgKQoKCj4+ICsKPj4gKyAgICAvLy8gUnVuIHRoZSBtZXRyaWMgY29sbGVjdGlv
biB0YXNrLgo+PiArICAgIC8vLwo+PiArICAgIC8vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbmV2ZXIg
cmV0dXJuLgo+PiArICAgICNbdHJhY2luZzo6aW5zdHJ1bWVudChza2lwX2FsbCwgbmFtZSA9ICJt
ZXRyaWNfY29sbGVjdGlvbl90YXNrIildCj4+ICsgICAgcHViKHN1cGVyKSBhc3luYyBmbiBydW4o
Jm11dCBzZWxmKSB7Cj4+ICsgICAgICAgIGxldCBtdXQgdGltZXIgPSBTZWxmOjpzZXR1cF90aW1l
cihzZWxmLnNldHRpbmdzLmNvbGxlY3Rpb25faW50ZXJ2YWxfb3JfZGVmYXVsdCgpKTsKPj4gKwo+
PiArICAgICAgICBsb2c6OmRlYnVnISgKPj4gKyAgICAgICAgICAgICJtZXRyaWMgY29sbGVjdGlv
biBzdGFydGluZyB1cC4gY29sbGVjdGlvbiBpbnRlcnZhbCBzZXQgdG8ge30gc2Vjb25kcyIsCj4g
Cj4gXiBuaXQ6IHVzaW5nIHB1bmN0dWF0aW9uIGluIHRoZSBtaWRkbGUgYnV0IGNvbnRpbnVpbmcg
aW4gbG93ZXIgY2FzZSBhbmQKPiBub3QgZW5kaW5nIHdpdGggcHVuY3R1YXRpb24g8J+kqgoKR29v
ZCBwb2ludCwgZml4ZWQgZm9yIHYyLgoKPiAKPj4gKyAgICAgICAgICAgIHNlbGYuc2V0dGluZ3Mu
Y29sbGVjdGlvbl9pbnRlcnZhbF9vcl9kZWZhdWx0KCkKPj4gKyAgICAgICAgKTsKPj4gKwo+PiAr
ICAgICAgICBsb29wIHsKPj4gKyAgICAgICAgICAgIGxldCBvbGRfc2V0dGluZ3MgPSBzZWxmLnNl
dHRpbmdzLmNsb25lKCk7Cj4+ICsgICAgICAgICAgICB0b2tpbzo6c2VsZWN0ISB7Cj4+ICsgICAg
ICAgICAgICAgICAgXyA9IHRpbWVyLnRpY2soKSA9PiB7Cj4+ICsgICAgICAgICAgICAgICAgICAg
IC8vIFJlbG9hZCBzZXR0aW5ncyBpbiBjYXNlIHRoZXkgaGF2ZSBjaGFuZ2VkIGluIHRoZSBtZWFu
d2hpbGUKPj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXR0aW5ncyA9IFNlbGY6OmdldF9z
ZXR0aW5nc19vcl9kZWZhdWx0KCk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgbG9nOjpk
ZWJ1ZyEoInN0YXJ0aW5nIG1ldHJpYyBjb2xsZWN0aW9uIGZyb20gYWxsIHJlbW90ZXMgLSB0cmln
Z2VyZWQgYnkgdGltZXIiKTsKPiAKPiBOb3Qgc3VyZSBpZiBpdCdzIHdvcnRoIG1vdmluZyB0aGlz
IGludG8gYSBgc2VsZi5vbl90aWNrKClgIGJ1dC4uLgo+IAoKeWVhaCwgSSB0aGluayBpdCBtYWtl
cyBzZW5zZSwgdGhhbmtzLgoKPj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zbGVlcF9mb3Jf
cmFuZG9tX2ludGVydmFsX29mZnNldCgpLmF3YWl0Owo+PiArCj4+ICsgICAgICAgICAgICAgICAg
ICAgIGlmIGxldCBTb21lKHJlbW90ZXMpID0gU2VsZjo6bG9hZF9yZW1vdGVfY29uZmlnKCkgewo+
PiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvX2ZldGNoID0gcmVtb3Rlcy5vcmRlci5h
c19zbGljZSgpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mZXRjaF9yZW1vdGVz
KCZyZW1vdGVzLCB0b19mZXRjaCkuYXdhaXQ7Cj4+ICsgICAgICAgICAgICAgICAgICAgIH0KPj4g
KyAgICAgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICB2YWwgPSBzZWxmLmNv
bnRyb2xfbWVzc2FnZV9yeC5yZWN2KCkgPT4gewo+PiArICAgICAgICAgICAgICAgICAgICAvLyBS
ZWxvYWQgc2V0dGluZ3MgaW4gY2FzZSB0aGV5IGhhdmUgY2hhbmdlZCBpbiB0aGUgbWVhbndoaWxl
Cj4+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0dGluZ3MgPSBTZWxmOjpnZXRfc2V0dGlu
Z3Nfb3JfZGVmYXVsdCgpOwo+PiArICAgICAgICAgICAgICAgICAgICBtYXRjaCB2YWwgewo+IAo+
IC4uLmJ1dCBJIHRoaW5rIHRoaXMgcGFydCBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gYQo+
IGBzZWxmLmhhbmRsZV9jb250cm9sX21lc3NhZ2UobXNnKS5hd2FpdGAKPiAKPiBJdCBnZXRzIGlu
ZGVudGVkIHF1aXRlIGRlZXBseSBhbmQgaXQganVzdCBtYWtlcyBzZW5zZSBJTU8gOikKClNhbWUg
OikKCj4gCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBTb21lKENvbnRyb2xNc2c6OkNvbGxl
Y3RTaW5nbGVSZW1vdGUocmVtb3RlKSkgPT4gewo+PiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIGxldCBTb21lKHJlbW90ZXMpID0gU2VsZjo6bG9hZF9yZW1vdGVfY29uZmlnKCkgewo+
IAo+IF4gQWxzbyB0aGlzLi4uCj4gCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZzo6ZGVidWchKCJzdGFydGluZyBtZXRyaWMgY29sbGVjdGlvbiBmb3IgcmVtb3RlICd7cmVt
b3RlfSctIHRyaWdnZXJlZCBieSBjb250cm9sIG1lc3NhZ2UiKTsKPj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5mZXRjaF9yZW1vdGVzKCZyZW1vdGVzLCAmW3JlbW90ZV0p
LmF3YWl0Owo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoQ29udHJvbE1z
Zzo6Q29sbGVjdEFsbFJlbW90ZXMpID0+IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBsZXQgU29tZShyZW1vdGVzKSA9IFNlbGY6OmxvYWRfcmVtb3RlX2NvbmZpZygpIHsKPiAK
PiAuLi4gaXMgdGhlIHNhbWUgYXMgdGhpcywgc28gaWYgdGhpcyBpcyBmYWN0b3JlZCBvdXQgaW50
byBhIHNlcGFyYXRlCj4gZnVuY3Rpb24sIGl0IGNvdWxkIGp1c3QgZWFybHktb3V0IHZpYSBhIGxl
dC1lbHNlIHRoZXJlLCBhcyB3ZSBkb24ndCBuZWVkCj4gdG8gY2FsbCBpdCB3aGVuIGB2YWxgIGlz
IGBOb25lYCwgYW5kIHRoZW4gaXQncyBxdWl0ZSBjb21wYWN0LgoKQWNrIC0gcmVmYWN0b3JlZCBp
dCBpbiBhIHNlcGFyYXRlIG5ldyBjb21taXQgYXQgdGhlIGVuZCBvZiB0aGUgdjIgc2VyaWVzLApu
b3Qgd29ydGggdGhlIGVmZm9ydCB0byBjbGVhbmx5IGZvbGQgdGhpcyBpbnRvIHRoaXMgY29tbWl0
LgoKPiAKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nOjpkZWJ1ZyEoInN0
YXJ0aW5nIG1ldHJpYyBjb2xsZWN0aW9uIGZyb20gYWxsIHJlbW90ZXMgLSB0cmlnZ2VyZWQgYnkg
Y29udHJvbCBtZXNzYWdlIik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZmV0Y2hfcmVtb3RlcygmcmVtb3RlcywgJnJlbW90ZXMub3JkZXIpLmF3YWl0Owo+PiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIF8gPT4ge30sCj4+ICsgICAgICAgICAgICAgICAg
ICAgIH0KPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICB9Cj4+ICsKPj4gKyAg
ICAgICAgICAgIGxldCBpbnRlcnZhbCA9IHNlbGYuc2V0dGluZ3MuY29sbGVjdGlvbl9pbnRlcnZh
bF9vcl9kZWZhdWx0KCk7Cj4+ICsKPj4gKyAgICAgICAgICAgIGlmIG9sZF9zZXR0aW5ncy5jb2xs
ZWN0aW9uX2ludGVydmFsX29yX2RlZmF1bHQoKSAhPSBpbnRlcnZhbCB7Cj4+ICsgICAgICAgICAg
ICAgICAgbG9nOjppbmZvISgKPj4gKyAgICAgICAgICAgICAgICAgICAgIm1ldHJpYyBjb2xsZWN0
aW9uIGludGVydmFsIGNoYW5nZWQgdG8ge30gc2Vjb25kcywgcmVsb2FkaW5nIHRpbWVyIiwKPj4g
KyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwKPj4gKyAgICAgICAgICAgICAgICApOwo+PiAr
ICAgICAgICAgICAgICAgIHRpbWVyID0gU2VsZjo6c2V0dXBfdGltZXIoaW50ZXJ2YWwpOwo+PiAr
ICAgICAgICAgICAgfQo+PiArICAgICAgICB9Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgYXN5bmMg
Zm4gc2xlZXBfZm9yX3JhbmRvbV9pbnRlcnZhbF9vZmZzZXQoJnNlbGYpIHsKPj4gKyAgICAgICAg
bGV0IG11dCBtaW4gPSBzZWxmLnNldHRpbmdzLm1pbl9pbnRlcnZhbF9vZmZzZXRfb3JfZGVmYXVs
dCgpOwo+PiArICAgICAgICBsZXQgbWF4ID0gc2VsZi5zZXR0aW5ncy5tYXhfaW50ZXJ2YWxfb2Zm
c2V0X29yX2RlZmF1bHQoKTsKPj4gKwo+PiArICAgICAgICBpZiBtaW4gPiBtYXggewo+PiArICAg
ICAgICAgICAgbG9nOjp3YXJuISgKPj4gKyAgICAgICAgICAgICAgICAibWluLWludGVydmFsLW9m
ZnNldCBpcyBsYXJnZXIgdGhhbiBtYXgtaW50ZXJ2YWwtb2Zmc2V0ICh7bWlufSA+IHttYXh9KSAt
IFwKPj4gKyAgICAgICAgICAgICAgICBjYXBwaW5nIGl0IHRvIG1heC1pbnRlcnZhbC1vZmZzZXQg
KHttYXh9KSIKPj4gKyAgICAgICAgICAgICk7Cj4+ICsgICAgICAgICAgICBtaW4gPSBtYXg7Cj4+
ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBsZXQgaml0dGVyID0gewo+PiArICAgICAgICAg
ICAgbGV0IG11dCBybmcgPSByYW5kOjp0aHJlYWRfcm5nKCk7Cj4+ICsgICAgICAgICAgICBybmcu
Z2VuX3JhbmdlKG1pbi4uPW1heCkKPj4gKyAgICAgICAgfTsKPj4gKyAgICAgICAgdG9raW86OnRp
bWU6OnNsZWVwKER1cmF0aW9uOjpmcm9tX3NlY3Moaml0dGVyKSkuYXdhaXQ7Cj4+ICsgICAgfQo+
PiArCj4gCj4g4oaRIGFuZCDihpMgYXJlIGNyeWluZyBvdXQgZm9yIGEgY29tbW9uIGZuIHdpdGgg
dGhlIHZhcmlhYmxlIG5hbWUsIG1pbiBhbmQKPiBtYXggYXMgcGFyYW1ldGVycyA7LSkKCkkgdGhp
bmsgdGhlIG1haW4gcmVhc29uIHRoYXQgZGV0ZXJyZWQgbWUgZnJvbSBkb2luZyB0aGF0IHdhcyB0
aGUgZmFjdCB0aGF0IHRoZSBvbmUgZnVuY3Rpb24Kc2xlZXBzIGZvciBtaWxsaXNlY29uZHMgYW5k
IHRoZSBvdGhlciBvbmUgZm9yIHNlY29uZHMuIEJ1dCB0aGlzIHdhcyBhbHNvIGJlZm9yZSBJIGFk
ZGVkCnRoZSAnbWluJyBjYXBwaW5nIGxvZ2ljIHdpdGggdGhlIGxvZyBtZXNzYWdlLCB3aGljaCB3
YXMgYWRkZWQgb25seSBicmllZmx5IGJlZm9yZSBzZW5kaW5nIHRoZSBwYXRjaGVzLApiZWZvcmUg
dGhhdCB0aGUgY29kZSBkZWR1cCB3YXNuJ3QgcmVhbGx5IHdvcnRoIGl0LiBJJ3ZlIGNoYW5nZWQg
aXQgaW4gdjIsIHRoZXJlIHdlIG5vdyBoYXZlIGEgCiAgICBhc3luYyBmbiBzbGVlcF9mb3JfcmFu
ZG9tX21pbGxpcyhwYXJhbV9iYXNlOiAmc3RyLCBtdXQgbWluOiB1NjQsIG1heDogdTY0KQpmdW5j
dGlvbiB3aXRoIHRoZSBjYWxsIHNpdGVzIGFkYXB0ZWQuCgpUaGFua3MhCgo+IAo+PiArICAgIGFz
eW5jIGZuIHNsZWVwX2Zvcl9yYW5kb21fY29ubmVjdGlvbl9kZWxheShzZXR0aW5nczogJkNvbGxl
Y3Rpb25TZXR0aW5ncykgewo+PiArICAgICAgICBsZXQgbXV0IG1pbiA9IHNldHRpbmdzLm1pbl9j
b25uZWN0aW9uX2RlbGF5X29yX2RlZmF1bHQoKTsKPj4gKyAgICAgICAgbGV0IG1heCA9IHNldHRp
bmdzLm1heF9jb25uZWN0aW9uX2RlbGF5X29yX2RlZmF1bHQoKTsKPj4gKwo+PiArICAgICAgICBp
ZiBtaW4gPiBtYXggewo+PiArICAgICAgICAgICAgbG9nOjp3YXJuISgKPj4gKyAgICAgICAgICAg
ICAgICAibWluLWNvbGxlY3Rpb24tZGVsYXkgaXMgbGFyZ2VyIHRoYW4gbWF4LWNvbGxlY3Rpb24t
ZGVsYXkgKHttaW59ID4ge21heH0pIC0gXAo+PiArICAgICAgICAgICAgICAgIGNhcHBpbmcgaXQg
dG8gbWF4LWNvbGxlY3Rpb24tZGVsYXkgKHttYXh9KSIKPj4gKyAgICAgICAgICAgICk7Cj4+ICsg
ICAgICAgICAgICBtaW4gPSBtYXg7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBsZXQg
aml0dGVyID0gewo+PiArICAgICAgICAgICAgbGV0IG11dCBybmcgPSByYW5kOjp0aHJlYWRfcm5n
KCk7Cj4+ICsgICAgICAgICAgICBybmcuZ2VuX3JhbmdlKG1pbi4uPW1heCkKPj4gKyAgICAgICAg
fTsKPj4gKwo+PiArICAgICAgICB0b2tpbzo6dGltZTo6c2xlZXAoRHVyYXRpb246OmZyb21fbWls
bGlzKGppdHRlcikpLmF3YWl0Owo+PiArICAgIH0KPj4gKwo+PiArICAgIGZuIGdldF9zZXR0aW5n
c19vcl9kZWZhdWx0KCkgLT4gQ29sbGVjdGlvblNldHRpbmdzIHsKPj4gKyAgICAgICAgLy8gVGhp
cyBmdW5jdGlvbiBpcyBhIGJpdCBvZGQsIGJ1dCBub3Qgc3VyZSBpZiB0aGVyZSBpcyBhIG11Y2gg
bmljZXIKPj4gKyAgICAgICAgLy8gd2F5IHRvIGRvIGl0LiBXZSB3YW50IHRvIGZhbGwgYmFjayB0
byBkZWZhdWx0cyBpZgo+PiArICAgICAgICAvLyAgIC0gdGhlIGNvbmZpZyBmaWxlIGRvZXMgbm90
IGV4aXN0IChubyBlcnJvcnMgbG9nZ2VkKQo+PiArICAgICAgICAvLyAgIC0gaWYgc2VjdGlvbiB0
eXBlIGlzIHdyb25nIG9yIHRoZSBjb25maWcgZmFpbGVkIHRvIHBhcnNlIChsb2cgZXJyb3JzKQo+
IAo+IEl0IGdldHMgYSBiaXQgc2hvcnRlciBhbmQgaWYgdGhlIGBfaW1wbGAgcmV0dXJucyBhIHJl
c3VsdCtvcHRpb24uCj4gVGhlIG1hdGNoIGJlbG93IGNhbiBqdXN0IGByZXR1cm4gc2V0dGluZ3Ng
IGluIHRoZSBmaXJzdCBjYXNlLCBhbmQgaGF2ZQo+IGFuIGBPayhOb25lKSA9PiAoKSxgLCB0aGUg
YEVycmAgb25seSBoYXMgdGhlIGxvZyBsaW5lIGFuZCB0aGUgZGVmYXVsdCBpcwo+IG1vdmVkIHRv
IGFmdGVyIHRoZSBtYXRjaC4KPiAKPiBBbHRlcm5hdGl2ZWx5IGEgYGRlZmF1bHQoKWAgaGVscGVy
IGNvdWxkIGFsc28gc2hvcnRlbiBpdAo+IChgT2soZGVmYXVsdCgpKWAgaW4gdGhlIGBfaW1wbGAg
YW5kCj4gYGdldF9zZXR0aW5nc19pbXBsKCkudW53cmFwX29yX2VsZXNlKHxlcnJ8IHsgbG9nKGVy
cik7IGRlZmF1bHQoKSB9KWAgaXMKPiBhbHNvIHNob3J0ZXIgOi0pCgpXZW50IGZvciBzb21ldGhp
bmcgbGlrZSB0aGlzIGZvciB2MjoKCiAgICAgICAgZ2V0X3NldHRpbmdzX2ltcGwoKS51bndyYXBf
b3JfZWxzZSh8ZXJyfCB7CiAgICAgICAgICAgIGxvZzo6ZXJyb3IhKCIuLi4ge2Vycn0gIik7CiAg
ICAgICAgICAgIENvbGxlY3Rpb25TZXR0aW5nczo6bmV3KCJkZWZhdWx0IikKICAgICAgICB9KQog
Cgo+PiArCj4+ICsgICAgLy8vIEZldGNoIG1ldHJpYyBkYXRhIGZyb20gYSBwcm92aWRlZCBsaXN0
IG9mIHJlbW90ZXMgY29uY3VycmVudGx5Lgo+PiArICAgIC8vLyBUaGUgbWF4aW11bSBudW1iZXIg
b2YgY29uY3VycmVudCBjb25uZWN0aW9ucyBpcyBkZXRlcm1pbmVkIGJ5Cj4+ICsgICAgLy8vIGBt
YXhfY29uY3VycmVudF9jb25uZWN0aW9uc2AgaW4gdGhlIFtgQ29sbGVjdGlvblNldHRpbmdzYF0K
Pj4gKyAgICAvLy8gaW5zdGFuY2UgaW4gYHNlbGZgLgo+PiArICAgIGFzeW5jIGZuIGZldGNoX3Jl
bW90ZXMoCj4+ICsgICAgICAgICZtdXQgc2VsZiwKPj4gKyAgICAgICAgY29uZmlnOiAmU2VjdGlv
bkNvbmZpZ0RhdGE8UmVtb3RlPiwKPj4gKyAgICAgICAgcmVtb3Rlc190b19mZXRjaDogJltTdHJp
bmddLAo+PiArICAgICkgewo+PiArICAgICAgICBsZXQgc2VtYXBob3JlID0gQXJjOjpuZXcoU2Vt
YXBob3JlOjpuZXcoCj4+ICsgICAgICAgICAgICBzZWxmLnNldHRpbmdzLm1heF9jb25jdXJyZW50
X2Nvbm5lY3Rpb25zX29yX2RlZmF1bHQoKSwKPj4gKyAgICAgICAgKSk7Cj4+ICsgICAgICAgIGxl
dCBtdXQgaGFuZGxlcyA9IFZlYzo6bmV3KCk7Cj4gCj4gTm90IHN1cmUgaG93ICJyb2J1c3QiIHRo
ZSBzcGF3bmluZyBpcyB3cnQuIG9yZGVyaW5nIC0gYW5kIHRoaXMgZG9lc24ndAo+IG5lZWQgdG8g
aGFwcGVuIGluIHRoaXMgcGF0Y2ggKHVubGVzcyBpdCdzIGVhc3kpLCBidXQgYSBmb2xsb3ctdXAg
Y291bGQKPiBwcm9iYWJseSBjaGFuZ2UgdGhpcyBpbnRvIGEgdG9raW8gYEpvaW5TZXRgLCB0aGF0
IHdheSB0aGUgYXdhaXQtbG9vcAo+IGJlbG93IGNhbiB1c2UgYC5qb2luX25leHQoKWAsIHNvIHRo
YXQgZm9yIGV4YW1wbGUgaWYgYW4gZWFybHkgdGFzawo+IGhhcHBlbnMgdG8gZW5kIHVwIGZpbmlz
aGluZyBsYXN0LCB0aGUgbG9vcCBzdGlsbCBjb2xsZWN0cyB0aGUgcmVtYWluaW5nCj4gbG9ncyBp
biBhIG1vcmUgInRlbXBvcmFsbHkgYWNjdXJhdGUiIHdheS4uLgoKR29vZCBwb2ludCwgZGlkbid0
IGtub3cgYWJvdXQgYEpvaW5TZXRgLgoKSSdsbCBkbyB0aGF0IGluIGEgZm9sbG93dXAgb3IgYXMg
YSBzZXBhcmF0ZSBjb21taXQgaW4gdjIuIApSZXF1aXJlcyBhIGNvdXBsZSBjaGFuZ2VzIGluIGhv
dyB3ZSBkbyBsb2dnaW5nL2Vycm9yIGhhbmRsaW5nLCBzaW5jZQp3ZSBjYW5ub3QgcmVtZW1iZXIg
dGhlIHJlbW90ZXMnIG5hbWUgaW4gdGhlIGhhbmRsZSBWZWMgYW55bW9yZSBpZiB3ZSBzd2l0Y2gg
dG8gYSBqb2luIHNldC4KCj4gCj4+ICsKPj4gKyAgICAgICAgZm9yIHJlbW90ZV9uYW1lIGluIHJl
bW90ZXNfdG9fZmV0Y2ggewo+PiArICAgICAgICAgICAgbGV0IHN0YXJ0X3RpbWUgPSAqc2VsZi5t
b3N0X3JlY2VudF90aW1lc3RhbXBzLmdldChyZW1vdGVfbmFtZSkudW53cmFwX29yKCYwKTsKPj4g
Kwo+PiArICAgICAgICAgICAgLy8gdW53cmFwIGlzIG9rYXkgaGVyZSwgYWNxdWlyZV8qIHdpbGwg
b25seSBmYWlsIGlmIGBjbG9zZWAgaGFzIGJlZW4KPj4gKyAgICAgICAgICAgIC8vIGNhbGxlZCBv
biB0aGUgc2VtYXBob3JlLgo+PiArICAgICAgICAgICAgbGV0IHBlcm1pdCA9IHNlbWFwaG9yZS5j
bG9uZSgpLmFjcXVpcmVfb3duZWQoKS5hd2FpdC51bndyYXAoKTsKPiAKPiBeIE5pdDogd2hlcmUg
cG9zc2libGUsIEkgcHJlZmVyIGBBcmM6OmNsb25lKCZwdHIpYCBqdXN0IGZvciB0aGUgc2FrZSBv
Zgo+IG5vdCBhY2NpZGVudGFsbHkgYC5jbG9uZSgpYGluZyBzb21ldGhpbmcgbGFyZ2UgYWZ0ZXIg
bGF0ZXIgYSByZWZhY3Rvcgo+IHdoZXJlIHRoZSBjbG9uZXMgYXJlbid0IGluIHRoZSBwYXRjaCBj
b250ZXh0IGxpbmVzLgoKVGh4LCBJIGFsc28gdXN1YWxseSBwcmVmZXIgQXJjOjpjbG9uZSwgbWlz
c2VkIGl0IHRoaXMgdGltZS4gRml4ZWQgZm9yIHYyLgoKCj4+ICAKPj4gICAgICB0b2tpbzo6c3Bh
d24oYXN5bmMgbW92ZSB7Cj4+IC0gICAgICAgIGxldCB0YXNrX3NjaGVkdWxlciA9IHBpbiEobWV0
cmljX2NvbGxlY3Rpb25fdGFzayh0eCkpOwo+PiArICAgICAgICBsZXQgbWV0cmljX2NvbGxlY3Rp
b25fdGFza19mdXR1cmUgPSBwaW4hKGFzeW5jIG1vdmUgewo+PiArICAgICAgICAgICAgbGV0IG11
dCB0YXNrID0KPj4gKyAgICAgICAgICAgICAgICBNZXRyaWNDb2xsZWN0aW9uVGFzazo6bmV3KG1l
dHJpY19kYXRhX3R4LCB0cmlnZ2VyX2NvbGxlY3Rpb25fcngpLnVud3JhcCgpOwo+PiArICAgICAg
ICAgICAgdGFzay5ydW4oKS5hd2FpdDsKPiAKPiBeIG5pdDogY291bGQgZHJvcCB0aGUgbGV0IGJp
bmRpbmcgKHRoZW4gaXQgSU1PIGxpbmV3cmFwcyBhIGJpdCBuaWNlciwKPiB0b28pCgpXaGVuIEkg
d2FzIGF0dGVtcHRpbmcgdG8gZml4IHRoaXMgSSBzcG90dGVkIHRoZSAudW53cmFwKCkgdGhhdCBJ
IGxlZnQgaW4gdGhlcmUgYW5kCmhlbmNlIGRlY2lkZWQgdG8gY2hhbmdlIGl0IGludG8KCiAgICAg
ICAgICAgIG1hdGNoIE1ldHJpY0NvbGxlY3Rpb25UYXNrOjpuZXcobWV0cmljX2RhdGFfdHgsIHRy
aWdnZXJfY29sbGVjdGlvbl9yeCkgewogICAgICAgICAgICAgICAgT2sobXV0IHRhc2spID0+IHRh
c2sucnVuKCkuYXdhaXQsCiAgICAgICAgICAgICAgICBFcnIoZXJyKSA9PiBsb2c6OmVycm9yISgi
Y291bGQgbm90IHN0YXJ0IG1ldHJpYyBjb2xsZWN0aW9uIHRhc2s6IHtlcnJ9IiksCiAgICAgICAg
ICAgIH0KCmluIHYyIHRvIGdldCByaWQgb2YgdGhlIHVud3JhcCwgYWRkaW5nIGEgYml0IG1vcmUg
Y29udGV4dCB0byBhbnkgcG90ZW50aWFsIGVycm9yLgoKCj4+ICsvLy8gU2NoZWR1bGUgbWV0cmlj
IGNvbGxlY3Rpb24gZm9yIGEgZ2l2ZW4gcmVtb3RlIGFzIHNvb24gYXMgcG9zc2libGUuCj4+ICsv
Ly8KPj4gKy8vLyBIYXMgbm8gZWZmZWN0IGlmIHRoZSB0eCBlbmQgb2YgdGhlIGNoYW5uZWwgaGFz
IG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4KPj4gKy8vLyBSZXR1cm5zIGFuIGVycm9yIGlmIHRo
ZSBtcHNjIGNoYW5uZWwgaGFzIGJlZW4gY2xvc2VkIGFscmVhZHkuCj4+ICtwdWIgYXN5bmMgZm4g
dHJpZ2dlcl9tZXRyaWNfY29sbGVjdGlvbl9mb3JfcmVtb3RlKHJlbW90ZTogJnN0cikgLT4gUmVz
dWx0PCgpLCBFcnJvcj4gewo+PiArICAgIGlmIGxldCBTb21lKHNlbmRlcikgPSBDT05UUk9MX01F
U1NBR0VfVFguZ2V0KCkgewo+IAo+IF4gbml0OiBUaGlzIGlzIHRoZSBub3JtYWwgY2FzZSAoZ2l2
ZW4gdGhhdCBgQ09OVFJPTF9NRVNTQUdFX1RYYCBnZXRzCj4gaW5pdGlhbGl6ZWQgaW4gYHN0YXJr
X3Rhc2soKWAgb24gc3RhcnR1cCwgc28gSU1PIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUKPiBjb3Vs
ZCBhbHJlYWR5IGJlIGBTdHJpbmdgIHRvIGFsbG93IHRoZSBjYWxsZXIgdG8gbW92ZSBpdCAob3Ig
YGltcGwKPiBJbnRvPFN0cmluZz5gIGZvciB0aGlzIHRvIGJlIGltcGxpY2l0KSAtIGJvdGggY2Fs
bGVycyBjb3VsZCBjdXJyZW50bHkKPiBtb3ZlIGl0IDstKQo+IAoKdGh4LCBmaXhlZCBmb3IgdjIg
OikKCgotLSAKLSBMdWthcwoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpwZG0tZGV2ZWwgbWFpbGluZyBsaXN0CnBkbS1kZXZlbEBsaXN0cy5wcm94bW94
LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9w
ZG0tZGV2ZWwK