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