From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (unknown [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id E08B61FF13F for ; Wed, 14 Jan 2026 10:19:32 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C0485CAD1; Wed, 14 Jan 2026 10:19:25 +0100 (CET) Date: Wed, 14 Jan 2026 10:18:48 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Christian Ebner , Proxmox Backup Server development discussion References: <20251211153835.180405-1-c.ebner@proxmox.com> <20251211153835.180405-2-c.ebner@proxmox.com> <1768296817.hlvzg291lq.astroid@yuna.none> <3a49e618-3f42-4d05-b08a-186a9bd5a648@proxmox.com> In-Reply-To: <3a49e618-3f42-4d05-b08a-186a9bd5a648@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.17.0 (https://github.com/astroidmail/astroid) Message-Id: <1768382256.8vlxk9jg54.astroid@yuna.none> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1768382286282 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.354 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [datastore.rs, proxmox.com] Subject: Re: [pbs-devel] [PATCH proxmox-backup v2 1/8] GC: Move S3 delete list state and logic to a dedicated struct X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gSmFudWFyeSAxNCwgMjAyNiA5OjIyIGFtLCBDaHJpc3RpYW4gRWJuZXIgd3JvdGU6Cj4gT24g MS8xMy8yNiAxMToyMiBBTSwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPj4gT24gRGVjZW1i ZXIgMTEsIDIwMjUgNDozOCBwbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+Pj4gVG8gYmV0dGVy IGtlZXAgdHJhY2sgb2YgdGhlIHN0YXRlIGFuZCBkZWNsdXR0ZXIgdGhlIGNvZGUgb24gdGhlCj4+ PiBjYWxsc2l0ZXMsIGJ1bmRsZSB0aGUgUzMgZGVsZXRlIGxpc3QgYW5kIGl0J3MgbG9naWMgYnkg YSBkZWRpY2F0ZWQKPj4+IHN0cnVjdC4gU2luY2UgdGhlIGNoZWNrIGZvciBlbXB0eSBsaXN0cyBp cyBub3cgcGVyZm9ybWVkIGFzIHBhcnQKPj4+IG9mIHRoZSBkZWxldGlvbiByZWxhdGVkIG1ldGhv ZHMsIHRoZSBjYWxsc2l0ZXMgY2FuIGdldCByaWQgb2YgdGhhdC4KPj4+Cj4+PiBGdXJ0aGVyLCBh dm9pZCB0aGUgcHJveG1veF90aW1lOjplcG9jaF9pNjQoKSBhbmQgdXNlIFN5c3RlbVRpbWUgYW5k Cj4+PiBEdXJhdGlvbiB3aXRoIHRoZWlyIG1ldGhvZHMgZGlyZWN0bHkuCj4+Pgo+Pj4gU3VnZ2Vz dGVkLWJ5OiBUaG9tYXMgTGFtcHJlY2h0IDx0LmxhbXByZWNodEBwcm94bW94LmNvbT4KPj4+IFNp Z25lZC1vZmYtYnk6IENocmlzdGlhbiBFYm5lciA8Yy5lYm5lckBwcm94bW94LmNvbT4KPj4+IC0t LQo+Pj4gICBwYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMgfCAxMzIgKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tCj4+PiAgIDEgZmlsZSBjaGFuZ2VkLCA3NSBpbnNlcnRpb25z KCspLCA1NyBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvcGJzLWRhdGFzdG9yZS9z cmMvZGF0YXN0b3JlLnJzIGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+PiBpbmRl eCA5YzU3YWFhYzEuLjU4ZmQwMzRmYyAxMDA2NDQKPj4+IC0tLSBhL3Bicy1kYXRhc3RvcmUvc3Jj L2RhdGFzdG9yZS5ycwo+Pj4gKysrIGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+ PiBAQCAtMjQsNyArMjQsNyBAQCB1c2UgcHJveG1veF9zeXM6OmVycm9yOjpTeXNFcnJvcjsKPj4+ ICAgdXNlIHByb3htb3hfc3lzOjpmczo6e2ZpbGVfcmVhZF9vcHRpb25hbF9zdHJpbmcsIHJlcGxh Y2VfZmlsZSwgQ3JlYXRlT3B0aW9uc307Cj4+PiAgIHVzZSBwcm94bW94X3N5czo6bGludXg6OnBy b2Nmczo6TW91bnRJbmZvOwo+Pj4gICB1c2UgcHJveG1veF9zeXM6OnByb2Nlc3NfbG9ja2VyOjp7 UHJvY2Vzc0xvY2tFeGNsdXNpdmVHdWFyZCwgUHJvY2Vzc0xvY2tTaGFyZWRHdWFyZH07Cj4+PiAt dXNlIHByb3htb3hfdGltZTo6e2Vwb2NoX2k2NCwgVGltZVNwYW59Owo+PiAKPj4gd2UgYWxyZWFk eSB1c2UgZXBvY2hfaTY0IGZvciBvdGhlciBjYWxjdWxhdGlvbnMgaW4gdGhpcyBtb2R1bGUsIHdo eSBub3QKPj4ga2VlcCBpdD8KPiAKPiBEbyB5b3UgbWVhbiB3aXRoIHJlc3BlY3QgdG8gdGhlIG1v ZHVsZSBsZXZlbCBpbXBvcnQgb3Igd2l0aCByZXNwZWN0IHRvIAo+IHVzaW5nIHRoZSBlcG9jaF9p NjQoKSBoZWxwZXI/IEFzIGZhciBhcyBJIHNlZSB0aGlzIGlzIG9ubHkgdXNlZCBvbmNlIHRvIAo+ IGdldCB0aGUgcGhhc2UgMSBzdGFydCB0aW1lIGFwYXJ0IGZyb20gdGhlIGRlbGV0ZSBsaXN0IGFn ZSBjYWxjdWxhdGlvbnMuCj4gCj4gTm90IHN1cmUgd2hhdCB3ZSB3b3VsZCBnYWluIGZyb20gbGF0 dGVyPyBBcyB0aGlzIGhlbHBlciB3cmFwcyBhcm91bmQgdGhlIAo+IFN5c3RlbVRpbWUgYW55d2F5 cyBbMF0sIHNvIEkgb3B0ZWQgdG8gdXNlIHRoYXQgZGlyZWN0bHkgaW5zdGVhZCBvZiAKPiBjb252 ZXJ0aW5nIGl0IHRvIHRoZSBVbml4IGVwb2NoIGFuZCBkb2luZyB0aGUgY2FsY3VsYXRpb25zIHRo ZXJlLgoKSSBtZWFudCB3aXRoIHJlc3BlY3QgdG8gdXNpbmcgaXQgOykgSU1ITyBpdCdzIGEgYml0 IGVhc2llciB0byBqdXN0CmhhbmRsZSBpNjQgdmFsdWVzIHRoYW4gU3lzdGVtVGltZS9EdXJhdGlv biwgYnV0IGVpdGhlciBpcyBmaW5lLgoKPiAKPiBbMF0gCj4gaHR0cHM6Ly9ydXN0ZG9jLmludHJh LnByb3htb3guY29tL3RyaXhpZS9wYWNrYWdlcy9wcm94bW94L3NyYy9wcm94bW94X3RpbWUvcG9z aXgucnMuaHRtbCM4MS05Mwo+IAo+PiAKPj4+ICt1c2UgcHJveG1veF90aW1lOjpUaW1lU3BhbjsK Pj4+ICAgdXNlIHByb3htb3hfd29ya2VyX3Rhc2s6OldvcmtlclRhc2tDb250ZXh0Owo+Pj4gICAK Pj4+ICAgdXNlIHBic19hcGlfdHlwZXM6OnsKPj4+IEBAIC02NCw3ICs2NCw3IEBAIGNvbnN0IENI VU5LX0xPQ0tfVElNRU9VVDogRHVyYXRpb24gPSBEdXJhdGlvbjo6ZnJvbV9zZWNzKDMgKiA2MCAq IDYwKTsKPj4+ICAgLy8gczMgZGVsZXRpb24gYmF0Y2ggc2l6ZSB0byBhdm9pZCAxMDI0IG9wZW4g ZmlsZXMgc29mdCBsaW1pdAo+Pj4gICBjb25zdCBTM19ERUxFVEVfQkFUQ0hfTElNSVQ6IHVzaXpl ID0gMTAwOwo+Pj4gICAvLyBtYXggZGVmZXIgdGltZSBmb3IgczMgYmF0Y2ggZGVsZXRpb25zCj4+ PiAtY29uc3QgUzNfREVMRVRFX0RFRkVSX0xJTUlUX1NFQ09ORFM6IGk2NCA9IDYwICogNTsKPj4+ ICtjb25zdCBTM19ERUxFVEVfREVGRVJfTElNSVRfU0VDT05EUzogRHVyYXRpb24gPSBEdXJhdGlv bjo6ZnJvbV9zZWNzKDYwICogNSk7Cj4+PiAgIAo+Pj4gICAvLy8gY2hlY2tzIGlmIGF1dGhfaWQg aXMgb3duZXIsIG9yLCBpZiBvd25lciBpcyBhIHRva2VuLCBpZgo+Pj4gICAvLy8gYXV0aF9pZCBp cyB0aGUgdXNlciBvZiB0aGUgdG9rZW4KPj4+IEBAIC0xNjg5LDQwICsxNjg5LDggQEAgaW1wbCBE YXRhU3RvcmUgewo+Pj4gICAgICAgICAgICAgICAgICAgcHJveG1veF9hc3luYzo6cnVudGltZTo6 YmxvY2tfb24oczNfY2xpZW50Lmxpc3Rfb2JqZWN0c192MigmcHJlZml4LCBOb25lKSkKPj4+ICAg ICAgICAgICAgICAgICAgICAgICAuY29udGV4dCgiZmFpbGVkIHRvIGxpc3QgY2h1bmsgaW4gczMg b2JqZWN0IHN0b3JlIik/Owo+Pj4gICAKPj4+IC0gICAgICAgICAgICBsZXQgbXV0IGRlbGV0ZV9s aXN0ID0gVmVjOjp3aXRoX2NhcGFjaXR5KFMzX0RFTEVURV9CQVRDSF9MSU1JVCk7Cj4+PiAtICAg ICAgICAgICAgbGV0IG11dCBkZWxldGVfbGlzdF9hZ2UgPSBlcG9jaF9pNjQoKTsKPj4+IC0KPj4+ IC0gICAgICAgICAgICBsZXQgczNfZGVsZXRlX2JhdGNoID0gfGRlbGV0ZV9saXN0OiAmbXV0IFZl YzwoUzNPYmplY3RLZXksIEJhY2t1cExvY2tHdWFyZCk+LAo+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgczNfY2xpZW50OiAmQXJjPFMzQ2xpZW50PnwKPj4+IC0gICAgICAg ICAgICAgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+Pj4gLSAgICAgICAgICAgICAgICBsZXQgZGVs ZXRlX29iamVjdHNfcmVzdWx0ID0gcHJveG1veF9hc3luYzo6cnVudGltZTo6YmxvY2tfb24oCj4+ PiAtICAgICAgICAgICAgICAgICAgICBzM19jbGllbnQuZGVsZXRlX29iamVjdHMoCj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgJmRlbGV0ZV9saXN0Cj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC5pdGVyKCkKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCh8 KGtleSwgXyl8IGtleS5jbG9uZSgpKQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAu Y29sbGVjdDo6PFZlYzxTM09iamVjdEtleT4+KCksCj4+PiAtICAgICAgICAgICAgICAgICAgICAp LAo+Pj4gLSAgICAgICAgICAgICAgICApPzsKPj4+IC0gICAgICAgICAgICAgICAgaWYgbGV0IFNv bWUoX2VycikgPSBkZWxldGVfb2JqZWN0c19yZXN1bHQuZXJyb3Igewo+Pj4gLSAgICAgICAgICAg ICAgICAgICAgYmFpbCEoImZhaWxlZCB0byBkZWxldGUgc29tZSBvYmplY3RzIik7Cj4+PiAtICAg ICAgICAgICAgICAgIH0KPj4+IC0gICAgICAgICAgICAgICAgLy8gZHJvcHMgYWxsIGNodW5rIGZs b2NrIGd1YXJkcwo+Pj4gLSAgICAgICAgICAgICAgICBkZWxldGVfbGlzdC5jbGVhcigpOwo+Pj4g LSAgICAgICAgICAgICAgICBPaygoKSkKPj4+IC0gICAgICAgICAgICB9Owo+Pj4gLQo+Pj4gLSAg ICAgICAgICAgIGxldCBhZGRfdG9fZGVsZXRlX2xpc3QgPQo+Pj4gLSAgICAgICAgICAgICAgICB8 ZGVsZXRlX2xpc3Q6ICZtdXQgVmVjPChTM09iamVjdEtleSwgQmFja3VwTG9ja0d1YXJkKT4sCj4+ PiAtICAgICAgICAgICAgICAgICBkZWxldGVfbGlzdF9hZ2U6ICZtdXQgaTY0LAo+Pj4gLSAgICAg ICAgICAgICAgICAga2V5OiBTM09iamVjdEtleSwKPj4+IC0gICAgICAgICAgICAgICAgIF9jaHVu a19ndWFyZDogQmFja3VwTG9ja0d1YXJkfCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAvLyBz ZXQgYWdlIGJhc2VkIG9uIGZpcnN0IGluc2VydGlvbgo+Pj4gLSAgICAgICAgICAgICAgICAgICAg aWYgZGVsZXRlX2xpc3QuaXNfZW1wdHkoKSB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAg KmRlbGV0ZV9saXN0X2FnZSA9IGVwb2NoX2k2NCgpOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAg fQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlX2xpc3QucHVzaCgoa2V5LCBfY2h1bmtf Z3VhcmQpKTsKPj4+IC0gICAgICAgICAgICAgICAgfTsKPj4+IC0KPj4+ICsgICAgICAgICAgICBs ZXQgbXV0IGRlbGV0ZV9saXN0ID0KPj4+ICsgICAgICAgICAgICAgICAgUzNEZWxldGVMaXN0Ojp3 aXRoX3RocmVzaG9sZHMoUzNfREVMRVRFX0JBVENIX0xJTUlULCBTM19ERUxFVEVfREVGRVJfTElN SVRfU0VDT05EUyk7Cj4+PiAgICAgICAgICAgICAgIGxvb3Agewo+Pj4gICAgICAgICAgICAgICAg ICAgZm9yIGNvbnRlbnQgaW4gbGlzdF9idWNrZXRfcmVzdWx0LmNvbnRlbnRzIHsKPj4+ICAgICAg ICAgICAgICAgICAgICAgICB3b3JrZXIuY2hlY2tfYWJvcnQoKT87Cj4+PiBAQCAtMTc3OSwxMiAr MTc0Nyw3IEBAIGltcGwgRGF0YVN0b3JlIHsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdGQ6OmZzOjpyZW1vdmVfZmlsZShjaHVua19wYXRoKT87Cj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhZGRfdG9fZGVsZXRlX2xpc3QoCj4+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZtdXQgZGVsZXRlX2xpc3QsCj4+PiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtdXQgZGVsZXRlX2xpc3RfYWdlLAo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LmtleSwKPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NodW5rX2d1YXJkLAo+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlX2xpc3QucHVzaChjb250ZW50LmtleSwg X2NodW5rX2d1YXJkKTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T2soKCkpCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKPj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICk/Owo+Pj4gQEAgLTE3OTIsMTIgKzE3NTUsNyBAQCBp bXBsIERhdGFTdG9yZSB7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2Nfc3RhdHVzLnJlbW92ZWRfY2h1bmtzICs9IDE7Cj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjX3N0YXR1cy5yZW1vdmVkX2J5dGVzICs9IGNv bnRlbnQuc2l6ZTsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICBhZGRfdG9fZGVsZXRlX2xp c3QoCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtdXQgZGVsZXRlX2xpc3QsCj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtdXQgZGVsZXRlX2xpc3RfYWdlLAo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LmtleSwKPj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgX2NodW5rX2d1YXJkLAo+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICk7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlX2xpc3QucHVzaChjb250 ZW50LmtleSwgX2NodW5rX2d1YXJkKTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICB9Cj4+PiAg IAo+Pj4gICAgICAgICAgICAgICAgICAgICAgIGNodW5rX2NvdW50ICs9IDE7Cj4+PiBAQCAtMTgw NiwxMiArMTc2NCw3IEBAIGltcGwgRGF0YVN0b3JlIHsKPj4+ICAgICAgICAgICAgICAgICAgICAg ICBkcm9wKF9ndWFyZCk7Cj4+PiAgIAo+Pj4gICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0 IHBlbmRpbmcgZGVsZXRlcyB0byBhdm9pZCBob2xkaW5nIHRvbyBtYW55IGNodW5rIGZsb2Nrcwo+ Pj4gLSAgICAgICAgICAgICAgICAgICAgaWYgZGVsZXRlX2xpc3QubGVuKCkgPj0gUzNfREVMRVRF X0JBVENIX0xJTUlUCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFkZWxldGVfbGlz dC5pc19lbXB0eSgpCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGVwb2NoX2k2 NCgpIC0gZGVsZXRlX2xpc3RfYWdlID4gUzNfREVMRVRFX0RFRkVSX0xJTUlUX1NFQ09ORFMpCj4+ PiAtICAgICAgICAgICAgICAgICAgICB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgczNf ZGVsZXRlX2JhdGNoKCZtdXQgZGVsZXRlX2xpc3QsIHMzX2NsaWVudCk/Owo+Pj4gLSAgICAgICAg ICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlX2xpc3QuY29uZGl0 aW9uYWxfZGVsZXRlX2FuZF9kcm9wX2xvY2tzKHMzX2NsaWVudCk/Owo+Pj4gICAgICAgICAgICAg ICAgICAgfQo+Pj4gICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyBuZXh0IGJhdGNoIG9mIGNo dW5rcyBpZiB0aGVyZSBpcyBtb3JlCj4+PiAgICAgICAgICAgICAgICAgICBpZiBsaXN0X2J1Y2tl dF9yZXN1bHQuaXNfdHJ1bmNhdGVkIHsKPj4+IEBAIC0xODI3LDkgKzE3ODAsNyBAQCBpbXBsIERh dGFTdG9yZSB7Cj4+PiAgICAgICAgICAgICAgIH0KPj4+ICAgCj4+PiAgICAgICAgICAgICAgIC8v IGRlbGV0ZSB0aGUgbGFzdCBiYXRjaCBvZiBvYmplY3RzLCBpZiB0aGVyZSBhcmUgYW55IHJlbWFp bmluZwo+Pj4gLSAgICAgICAgICAgIGlmICFkZWxldGVfbGlzdC5pc19lbXB0eSgpIHsKPj4+IC0g ICAgICAgICAgICAgICAgczNfZGVsZXRlX2JhdGNoKCZtdXQgZGVsZXRlX2xpc3QsIHMzX2NsaWVu dCk/Owo+Pj4gLSAgICAgICAgICAgIH0KPj4+ICsgICAgICAgICAgICBkZWxldGVfbGlzdC5kZWxl dGVfYW5kX2Ryb3BfbG9ja3MoczNfY2xpZW50KT87Cj4+PiAgIAo+Pj4gICAgICAgICAgICAgICBp bmZvISgicHJvY2Vzc2VkIHtjaHVua19jb3VudH0gdG90YWwgY2h1bmtzIik7Cj4+PiAgIAo+Pj4g QEAgLTI3NjgsMyArMjcxOSw3MCBAQCBpbXBsIERhdGFTdG9yZSB7Cj4+PiAgICAgICAgICAgcmVz dWx0Cj4+PiAgICAgICB9Cj4+PiAgIH0KPj4+ICsKPj4+ICsvLy8gVHJhY2sgUzMgb2JqZWN0IGtl eXMgdG8gYmUgZGVsZXRlZCBieSBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpbGUgaG9sZGluZyB0aGVp ciBmaWxlIGxvY2suCj4+PiArc3RydWN0IFMzRGVsZXRlTGlzdCB7Cj4+PiArICAgIGxpc3Q6IFZl YzwoUzNPYmplY3RLZXksIEJhY2t1cExvY2tHdWFyZCk+LAo+Pj4gKyAgICBmaXJzdF9lbnRyeV9h ZGRlZDogU3lzdGVtVGltZSwKPj4+ICsgICAgYWdlX3RocmVzaG9sZDogRHVyYXRpb24sCj4+PiAr ICAgIGNhcGFjaXR5X3RocmVzaG9sZDogdXNpemUsCj4+PiArfQo+Pj4gKwo+Pj4gK2ltcGwgUzNE ZWxldGVMaXN0IHsKPj4+ICsgICAgLy8vIENyZWF0ZSBhIG5ldyBsaXN0IGluc3RhbmNlIHdpdGgg Z2l2ZW4gY2FwYWNpdHkgYW5kIGFnZSB0aHJlc2hvbGRzLgo+Pj4gKyAgICBmbiB3aXRoX3RocmVz aG9sZHMoY2FwYWNpdHlfdGhyZXNob2xkOiB1c2l6ZSwgYWdlX3RocmVzaG9sZDogRHVyYXRpb24p IC0+IFNlbGYgewo+Pj4gKyAgICAgICAgU2VsZiB7Cj4+PiArICAgICAgICAgICAgZmlyc3RfZW50 cnlfYWRkZWQ6IFN5c3RlbVRpbWU6Om5vdygpLCAvLyBpbml0IG9ubHksIHVwZGF0ZWQgb25jZSBh ZGRlZAo+Pj4gKyAgICAgICAgICAgIGxpc3Q6IFZlYzo6d2l0aF9jYXBhY2l0eShjYXBhY2l0eV90 aHJlc2hvbGQpLAo+Pj4gKyAgICAgICAgICAgIGFnZV90aHJlc2hvbGQsCj4+PiArICAgICAgICAg ICAgY2FwYWNpdHlfdGhyZXNob2xkLAo+Pj4gKyAgICAgICAgfQo+Pj4gKyAgICB9Cj4+PiArCj4+ PiArICAgIC8vLyBQdXNoZXMgdGhlIGN1cnJlbnQga2V5IGFuZCBiYWNrdXAgbG9jayBndWFyZCB0 byB0aGUgbGlzdCwgdXBkYXRpbmcgdGhlIGRlbGV0ZSBsaXN0IGFnZSBpZgo+Pj4gKyAgICAvLy8g dGhlIGxpc3Qgd2FzIGVtcHR5IGJlZm9yZSB0aGUgaW5zZXJ0Lgo+Pj4gKyAgICBmbiBwdXNoKCZt dXQgc2VsZiwga2V5OiBTM09iamVjdEtleSwgZ3VhcmQ6IEJhY2t1cExvY2tHdWFyZCkgewo+Pj4g KyAgICAgICAgLy8gc2V0IGFnZSBiYXNlZCBvbiBmaXJzdCBpbnNlcnRpb24KPj4+ICsgICAgICAg IGlmIHNlbGYubGlzdC5pc19lbXB0eSgpIHsKPj4+ICsgICAgICAgICAgICBzZWxmLmZpcnN0X2Vu dHJ5X2FkZGVkID0gU3lzdGVtVGltZTo6bm93KCk7Cj4+PiArICAgICAgICB9Cj4+PiArICAgICAg ICBzZWxmLmxpc3QucHVzaCgoa2V5LCBndWFyZCkpOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAg IC8vLyBEZWxldGUgdGhlIG9iamVjdHMgaW4gdGhlIGxpc3QgdmlhIHRoZSBwcm92aWRlZCBTMyBj bGllbnQgaW5zdGFuY2UuCj4+PiArICAgIC8vLyBDbGVhcnMgdGhlIGxpc3QgY29udGVudHMgYW5k IGZyZWVzIHRoZSBwZXItY2h1bmsgZmlsZSBsb2Nrcy4KPj4+ICsgICAgZm4gZGVsZXRlX2FuZF9k cm9wX2xvY2tzKCZtdXQgc2VsZiwgczNfY2xpZW50OiAmQXJjPFMzQ2xpZW50PikgLT4gUmVzdWx0 PCgpLCBFcnJvcj4gewo+Pj4gKyAgICAgICAgaWYgc2VsZi5saXN0LmlzX2VtcHR5KCkgewo+Pj4g KyAgICAgICAgICAgIHJldHVybiBPaygoKSk7Cj4+PiArICAgICAgICB9Cj4+PiArICAgICAgICBs ZXQgZGVsZXRlX29iamVjdHNfcmVzdWx0ID0gcHJveG1veF9hc3luYzo6cnVudGltZTo6YmxvY2tf b24oCj4+PiArICAgICAgICAgICAgczNfY2xpZW50LmRlbGV0ZV9vYmplY3RzKAo+Pj4gKyAgICAg ICAgICAgICAgICAmc2VsZgo+Pj4gKyAgICAgICAgICAgICAgICAgICAgLmxpc3QKPj4+ICsgICAg ICAgICAgICAgICAgICAgIC5pdGVyKCkKPj4+ICsgICAgICAgICAgICAgICAgICAgIC5tYXAofChr ZXksIF8pfCBrZXkuY2xvbmUoKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgIC5jb2xsZWN0Ojo8 VmVjPFMzT2JqZWN0S2V5Pj4oKSwKPj4+ICsgICAgICAgICAgICApLAo+Pj4gKyAgICAgICAgKT87 Cj4+PiArICAgICAgICBpZiBkZWxldGVfb2JqZWN0c19yZXN1bHQuZXJyb3IuaXNfc29tZSgpIHsK Pj4+ICsgICAgICAgICAgICBiYWlsISgiZmFpbGVkIHRvIGRlbGV0ZSBzb21lIG9iamVjdHMiKTsK Pj4+ICsgICAgICAgIH0KPj4+ICsgICAgICAgIC8vIGRyb3BzIGFsbCBjaHVuayBmbG9jayBndWFy ZHMKPj4+ICsgICAgICAgIHNlbGYubGlzdC5jbGVhcigpOwo+Pj4gKyAgICAgICAgT2soKCkpCj4+ PiArICAgIH0KPj4+ICsKPj4+ICsgICAgLy8vIERlbGV0ZSB0aGUgb2JqZWN0IHN0b3JlZCBpbiB0 aGUgbGlzdCBpZiBlaXRoZXIgdGhlIGxpc3QgZXhjZWVkcyB0aGUgY2FwYWNpdHkgdGhyZXNob2xk IG9yCj4+PiArICAgIC8vLyB0aGUgZGVsZXRlIGxpc3QgYWdlIHRocmVzaG9sZC4KPj4+ICsgICAg Zm4gY29uZGl0aW9uYWxfZGVsZXRlX2FuZF9kcm9wX2xvY2tzKAo+Pj4gKyAgICAgICAgJm11dCBz ZWxmLAo+Pj4gKyAgICAgICAgczNfY2xpZW50OiAmQXJjPFMzQ2xpZW50PiwKPj4+ICsgICAgKSAt PiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+PiArICAgICAgICBpZiBzZWxmLmxpc3QubGVuKCkgPj0g c2VsZi5jYXBhY2l0eV90aHJlc2hvbGQKPj4+ICsgICAgICAgICAgICB8fCAoIXNlbGYubGlzdC5p c19lbXB0eSgpICYmIHNlbGYuZmlyc3RfZW50cnlfYWRkZWQuZWxhcHNlZCgpPyA+IHNlbGYuYWdl X3RocmVzaG9sZCkKPj4gCj4+IHRoaXMgYmFpbHMgaWYgdGhlIGNsb2NrIGp1bXBzIGJhY2t3YXJk cyAoZnVydGhlciB0aGFuIHRoZQo+PiBmaXJzdF9lbnRyeV9hZGRlZCB0aW1lc3RhbXApLiBtYXli ZSB3ZSBzaG91bGQgaW5zdGVhZCBhbHdheXMgZGVsZXRlPyBvcgo+PiBhdCBsZWFzdCBhZGQgYSBt ZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UvY29udGV4dC4uCj4gCj4gWWVzIGluZGVlZCEgRGVsZXRp bmcgdGhpcyBpbiBjYXNlIHRoZSBjbG9jayBqdW1wZWQgdG8gdGhlIHBhc3QgaXMgCj4gcHJvYmFi bHkgdGhlIGJlc3Qgb3B0aW9uIGhlcmUsIGFzIHRoZSBsb2NhbCBjaHVuayBtYXJrZXIgZmlsZSBp cyBubyAKPiBsb25nZXIgcHJlc2VudCBhbnl3YXlzIGF0IHRoaXMgcG9pbnQuCj4gCj4gV2lsbCBh ZGFwdCB0aGUgY29kZSBhY2NvcmRpbmdseS4KPiAKPj4gCj4+PiArICAgICAgICB7Cj4+PiArICAg ICAgICAgICAgc2VsZi5kZWxldGVfYW5kX2Ryb3BfbG9ja3MoczNfY2xpZW50KT87Cj4+PiArICAg ICAgICB9Cj4+PiArICAgICAgICBPaygoKSkKPj4+ICsgICAgfQo+Pj4gK30KPj4+IC0tIAo+Pj4g Mi40Ny4zCj4+Pgo+Pj4KPj4+Cj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+Pj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+Pj4gcGJzLWRldmVsQGxp c3RzLnByb3htb3guY29tCj4+PiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFp bG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPj4+Cj4+Pgo+Pj4KPj4gCj4+IAo+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBwYnMtZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4+IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+PiBodHRwczovL2xpc3RzLnBy b3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPj4gCj4+IAo+IAo+ IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1k ZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlz dHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=