From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id C96E51FF191 for ; Tue, 4 Nov 2025 10:01:36 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 780547830; Tue, 4 Nov 2025 10:02:15 +0100 (CET) Date: Tue, 04 Nov 2025 10:01:38 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Christian Ebner , Proxmox Backup Server development discussion References: <20251103113120.239455-1-c.ebner@proxmox.com> <20251103113120.239455-11-c.ebner@proxmox.com> <1762177869.199x08a4up.astroid@yuna.none> <876f89a6-a91a-4305-a848-42ec9d670842@proxmox.com> In-Reply-To: <876f89a6-a91a-4305-a848-42ec9d670842@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.17.0 (https://github.com/astroidmail/astroid) Message-Id: <1762246367.t0iadwmqfw.astroid@yuna.none> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1762246884404 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.352 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup 10/17] datastore: implement per-chunk file locking helper for s3 backend 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" T24gTm92ZW1iZXIgNCwgMjAyNSA5OjQ1IGFtLCBDaHJpc3RpYW4gRWJuZXIgd3JvdGU6Cj4gT24g MTEvMy8yNSAzOjUwIFBNLCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+PiBPbiBOb3ZlbWJl ciAzLCAyMDI1IDEyOjMxIHBtLCBDaHJpc3RpYW4gRWJuZXIgd3JvdGU6Cj4+PiBBZGRzIGEgZGF0 YXN0b3JlIGhlbHBlciBtZXRob2QgdG8gY3JlYXRlIHBlci1jaHVuayBmaWxlIGxvY2tzLiBUaGVz ZQo+Pj4gd2lsbCBiZSB1c2VkIHRvIGd1YXJkIGNodW5rIG9wZXJhdGlvbnMgb24gczMgYmFja2Vu ZHMgdG8gZ3VhcmFudGVlCj4+PiBleGNsdXNpdmUgYWNjZXNzIHdoZW4gcGVyZm9ybWluZyBjYWNo ZSBhbmQgYmFja2VuZCBvcGVyYXRpb25zLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlh biBFYm5lciA8Yy5lYm5lckBwcm94bW94LmNvbT4KPj4+IC0tLQo+Pj4gICBwYnMtZGF0YXN0b3Jl L3NyYy9iYWNrdXBfaW5mby5ycyB8ICAyICstCj4+PiAgIHBicy1kYXRhc3RvcmUvc3JjL2NodW5r X3N0b3JlLnJzIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAgcGJzLWRhdGFz dG9yZS9zcmMvZGF0YXN0b3JlLnJzICAgfCAxMiArKysrKysrKysrKysKPj4+ICAgMyBmaWxlcyBj aGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+Pgo+Pj4gZGlmZiAtLWdp dCBhL3Bicy1kYXRhc3RvcmUvc3JjL2JhY2t1cF9pbmZvLnJzIGIvcGJzLWRhdGFzdG9yZS9zcmMv YmFja3VwX2luZm8ucnMKPj4+IGluZGV4IDRiMTBiNjQzNS4uNzBjMGZiZThhIDEwMDY0NAo+Pj4g LS0tIGEvcGJzLWRhdGFzdG9yZS9zcmMvYmFja3VwX2luZm8ucnMKPj4+ICsrKyBiL3Bicy1kYXRh c3RvcmUvc3JjL2JhY2t1cF9pbmZvLnJzCj4+PiBAQCAtOTM2LDcgKzkzNiw3IEBAIGZuIGxvY2tf ZmlsZV9wYXRoX2hlbHBlcihuczogJkJhY2t1cE5hbWVzcGFjZSwgcGF0aDogUGF0aEJ1ZikgLT4g UGF0aEJ1ZiB7Cj4+PiAgIC8vLyBkZWxldGlvbi4KPj4+ICAgLy8vCj4+PiAgIC8vLyBJdCBhbHNv IGNyZWF0ZXMgdGhlIGJhc2UgZGlyZWN0b3J5IGZvciBsb2NrIGZpbGVzLgo+Pj4gLWZuIGxvY2tf aGVscGVyPEY+KAo+Pj4gK3B1YihjcmF0ZSkgZm4gbG9ja19oZWxwZXI8Rj4oCj4+PiAgICAgICBz dG9yZV9uYW1lOiAmc3RyLAo+Pj4gICAgICAgcGF0aDogJnN0ZDo6cGF0aDo6UGF0aCwKPj4+ICAg ICAgIGxvY2tfZm46IEYsCj4+PiBkaWZmIC0tZ2l0IGEvcGJzLWRhdGFzdG9yZS9zcmMvY2h1bmtf c3RvcmUucnMgYi9wYnMtZGF0YXN0b3JlL3NyYy9jaHVua19zdG9yZS5ycwo+Pj4gaW5kZXggYmE3 NjE4ZTQwLi40OTY4N2IyZmEgMTAwNjQ0Cj4+PiAtLS0gYS9wYnMtZGF0YXN0b3JlL3NyYy9jaHVu a19zdG9yZS5ycwo+Pj4gKysrIGIvcGJzLWRhdGFzdG9yZS9zcmMvY2h1bmtfc3RvcmUucnMKPj4+ IEBAIC04LDYgKzgsNyBAQCB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgQ29udGV4dCwg RXJyb3J9Owo+Pj4gICB1c2UgdHJhY2luZzo6e2luZm8sIHdhcm59Owo+Pj4gICAKPj4+ICAgdXNl IHBic19hcGlfdHlwZXM6OntEYXRhc3RvcmVGU3luY0xldmVsLCBHYXJiYWdlQ29sbGVjdGlvblN0 YXR1c307Cj4+PiArdXNlIHBic19jb25maWc6OkJhY2t1cExvY2tHdWFyZDsKPj4+ICAgdXNlIHBy b3htb3hfaW86OlJlYWRFeHQ7Cj4+PiAgIHVzZSBwcm94bW94X3MzX2NsaWVudDo6UzNDbGllbnQ7 Cj4+PiAgIHVzZSBwcm94bW94X3N5czo6ZnM6OntjcmVhdGVfZGlyLCBjcmVhdGVfcGF0aCwgZmls ZV90eXBlX2Zyb21fZmlsZV9zdGF0LCBDcmVhdGVPcHRpb25zfTsKPj4+IEBAIC0xNiw2ICsxNyw3 IEBAIHVzZSBwcm94bW94X3N5czo6cHJvY2Vzc19sb2NrZXI6OnsKPj4+ICAgfTsKPj4+ICAgdXNl IHByb3htb3hfd29ya2VyX3Rhc2s6OldvcmtlclRhc2tDb250ZXh0Owo+Pj4gICAKPj4+ICt1c2Ug Y3JhdGU6OmJhY2t1cF9pbmZvOjpEQVRBU1RPUkVfTE9DS1NfRElSOwo+Pj4gICB1c2UgY3JhdGU6 OmRhdGFfYmxvYjo6RGF0YUNodW5rQnVpbGRlcjsKPj4+ICAgdXNlIGNyYXRlOjpmaWxlX2Zvcm1h dHM6OnsKPj4+ICAgICAgIENPTVBSRVNTRURfQkxPQl9NQUdJQ18xXzAsIEVOQ1JZUFRFRF9CTE9C X01BR0lDXzFfMCwgVU5DT01QUkVTU0VEX0JMT0JfTUFHSUNfMV8wLAo+Pj4gQEAgLTc1OSw2ICs3 NjEsMzAgQEAgaW1wbCBDaHVua1N0b3JlIHsKPj4+ICAgICAgICAgICBDaHVua1N0b3JlOjpjaGVj a19wZXJtaXNzaW9ucyhsb2NrZmlsZV9wYXRoLCAwbzY0NCk/Owo+Pj4gICAgICAgICAgIE9rKCgp KQo+Pj4gICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAvLy8gR2VuZXJhdGVzIHRoZSBwYXRoIHRvIHRo ZSBjaHVua3MgbG9jayBmaWxlCj4+PiArICAgIHB1YihjcmF0ZSkgZm4gY2h1bmtfbG9ja19wYXRo KCZzZWxmLCBkaWdlc3Q6ICZbdThdKSAtPiBQYXRoQnVmIHsKPj4+ICsgICAgICAgIGxldCBtdXQg bG9ja19wYXRoID0gUGF0aDo6bmV3KERBVEFTVE9SRV9MT0NLU19ESVIpLmpvaW4oc2VsZi5uYW1l LmNsb25lKCkpOwo+Pj4gKyAgICAgICAgbGV0IGRpZ2VzdF9zdHIgPSBoZXg6OmVuY29kZShkaWdl c3QpOwo+Pj4gKyAgICAgICAgbG9ja19wYXRoLnB1c2goIi5jaHVua3MiKTsKPj4+ICsgICAgICAg IGxldCBwcmVmaXggPSBkaWdlc3RfdG9fcHJlZml4KGRpZ2VzdCk7Cj4+PiArICAgICAgICBsb2Nr X3BhdGgucHVzaCgmcHJlZml4KTsKPj4+ICsgICAgICAgIGxvY2tfcGF0aC5wdXNoKCZkaWdlc3Rf c3RyKTsKPj4+ICsgICAgICAgIGxvY2tfcGF0aAo+PiAKPj4gc2hvdWxkIHdlIGFkZCAiczMiIG9y IHNvbWUgc3VmZml4IGhlcmUsIHNvIHRoYXQgaWYgd2UgYWRkIGFub3RoZXIKPj4gYmFja2VuZCBp biB0aGUgZnV0dXJlIHdlIGFscmVhZHkgaGF2ZSBzcGVjaWZpYyBwYXRocz8KPiAKPiBCdXQgdGhl IGJhY2tlbmQgaXMgYSBwcm9wZXJ0eSBvZiBhIGRhdGFzdG9yZSwgYW5kIHRoZSBsb2NrIHBhdGhz IGFyZSAKPiBhbHJlYWR5IHByZWZpeGVkIGJ5IHRoZSBkYXRhc3RvcmUgbmFtZSBpbiBhbnkgY2Fz ZS4gU28gdGhpcyB3b3VsZCBqdXN0IAo+IGFkZCBhbiBhZGRpdGlvbmFsIGRpcmVjdG9yeSBsZXZl bCB3aXRob3V0IG11Y2ggZ2Fpbi4gU28gaW4gbXkgb3BpbmlvbiAKPiB0aGlzIHNob3VsZCBzdGF5 IGFzIGlzLgoKZmFpciBlbm91Z2ggLSB0aGVyZSBtaWdodCBiZSBvdGhlciByZWFzb25zIHRvIGxv Y2sgY2h1bmtzIGluIHRoZSBmdXR1cmUsCmJ1dCBJIGd1ZXNzIHRoYXQgaXMgbm90IHN1cGVyIGxp a2VseSBhbmQgY291bGQgc3RpbGwgYmUgaGFuZGxlZCB3aXRoIGEKcHJlZml4L3N1ZmZpeCBmb3Ig dGhhdCB1c2UgY2FzZSBhbnlob3cuLgoKPj4gCj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgLy8v IEdldCBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgY2h1bmtzIGxvY2sgZmlsZQo+Pj4gKyAgICBw dWIoY3JhdGUpIGZuIGxvY2tfY2h1bmsoCj4+PiArICAgICAgICAmc2VsZiwKPj4+ICsgICAgICAg IGRpZ2VzdDogJlt1OF0sCj4+PiArICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbiwKPj4+ICsgICAg KSAtPiBSZXN1bHQ8QmFja3VwTG9ja0d1YXJkLCBFcnJvcj4gewo+Pj4gKyAgICAgICAgbGV0IGxv Y2tfcGF0aCA9IHNlbGYuY2h1bmtfbG9ja19wYXRoKGRpZ2VzdCk7Cj4+PiArICAgICAgICBsZXQg Z3VhcmQgPSBjcmF0ZTo6YmFja3VwX2luZm86OmxvY2tfaGVscGVyKHNlbGYubmFtZSgpLCAmbG9j a19wYXRoLCB8cGF0aHwgewo+Pj4gKyAgICAgICAgICAgIHBic19jb25maWc6Om9wZW5fYmFja3Vw X2xvY2tmaWxlKHBhdGgsIFNvbWUodGltZW91dCksIHRydWUpCj4+PiArICAgICAgICB9KT87Cj4+ PiArICAgICAgICBPayhndWFyZCkKPj4+ICsgICAgfQo+Pj4gICB9Cj4+PiAgIAo+Pj4gICAjW3Rl c3RdCj4+PiBkaWZmIC0tZ2l0IGEvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzIGIvcGJz LWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+PiBpbmRleCAzOTdjMzdlNTYuLjMyZjM1NjJi MyAxMDA2NDQKPj4+IC0tLSBhL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwo+Pj4gKysr IGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+PiBAQCAtMjU2OCw2ICsyNTY4LDE4 IEBAIGltcGwgRGF0YVN0b3JlIHsKPj4+ICAgICAgICAgICBPaygoKSkKPj4+ICAgICAgIH0KPj4+ ICAgCj4+PiArICAgIC8vLyBMb2NrcyB0aGUgcGVyIGNodW5rIGxvY2sgZmlsZSBpZiB0aGUgYmFj a2VuZCByZXF1aXJlcyBpdAo+Pj4gKyAgICBmbiBsb2NrX2NodW5rX2Zvcl9iYWNrZW5kKCZzZWxm LCBkaWdlc3Q6ICZbdTg7IDMyXSkgLT4gUmVzdWx0PE9wdGlvbjxCYWNrdXBMb2NrR3VhcmQ+LCBF cnJvcj4gewo+Pj4gKyAgICAgICAgLy8gczMgcHV0IHJlcXVlc3QgdGltZXMgb3V0IGFmdGVyIHVw bG9hZF9zaXplIC8gMSBLaWIvcywgc28gYWJvdXQgMi4zIGhvdXJzIGZvciA4IE1pQgo+Pj4gKyAg ICAgICAgbGV0IHRpbWVvdXQgPSBEdXJhdGlvbjo6ZnJvbV9zZWNzKDMgKiA2MCAqIDYwKTsKPj4g Cj4+IGNvdWxkIG1vdmUgaW50byB0aGUgUzMgYnJhbmNoIGJlbG93Li4gb3IgYmUgbWFkZSBTMyBz cGVjaWZpYyBpbiB0aGUKPj4gZmlyc3QgcGxhY2UsIHNpbmNlIGl0IGlzIG9ubHkgY2FsbGVkL2Vm ZmVjdGl2ZSB0aGVyZT8gdGhlIHJlbmFtaW5nCj4+IGhlbHBlciBuZWVkcyBzb21lIHJld29yayB0 aGVuIEkgZ3Vlc3MuLgo+IAo+IEkgZGlkIGludHJvZHVjZSB0aGlzIGV4YWN0bHkgdG8gbm90IGhh dmUgdG8gbW92ZSBpdCB0byB0aGUgcmVuYW1lIAo+IGhlbHBlciwgYXMgdGhhdCBpcyBhbHJlYWR5 IGNvbnZvbHV0ZWQgZW5vdWdoIGluIG15IG9waW5pb24uIEJ1dCBjYW4gaGF2ZSAKPiBhIGxvb2sg aWYgaXQgbWFrZXMgc2Vuc2UgdG8gaW5saW5lIHRoaXMuIEFsc28sIHRoZSBEdXJhdGlvbiAKPiBp bnN0YW50aWF0aW9uIGRvZXMgbm90IG5lZWQgdG8gaGFwcGVuIGZvciBib3RoIGNhc2VzLCBzbyB3 aWxsIG1vdmUgdGhhdCAKPiB0byB0aGUgczMgc3BlY2lmaWMgcGFydC4KCkkgdGhpbmsgaXQgd291 bGQgbWFrZSBpdCBtb3JlIGV4cGxpY2l0IHRoYXQgbG9ja2luZyBpcyBvbmx5IGRvbmUgZm9yIFMz LAphcyBvcHBvc2VkIHRvIGFsd2F5cyAobGV0J3MgaG9wZSB0aGlzIHN0YXlzIHRoaXMgd2F5IDsp KS4KCj4+IGJ1dCBJIGFtIG5vdCBzdXJlIGlmIHRoaXMgbG9naWMgaGVyZSBpcyByZWFsbHkgc291 bmQgKGFueSBpbmRpdmlkdWFsCj4+IGNhbGxlciB3YWl0aW5nIGZvciBsb25nZXIgdGhhbiBhIHNp bmdsZSB1cGxvYWRzIG1heCB0aW1lb3V0IG1pZ2h0IGJlCj4+IHZhbGlkLCBzaW5jZSB0aGUgbG9j a2luZyBpcyBub3QgZmFpciBhbmQgbXVsdGlwbGUgbG9ja2luZyBhdHRlbXB0cyBtaWdodAo+PiBo YXZlIHF1ZXVlZCB1cCksIEkgZ3Vlc3MgdGhlIGluc3RhbmNlcyB3aGVyZSB3ZSBlbmQgdXAgdGFr aW5nIHRoaXMgbG9jawo+PiBhcmUgZmV3IGVub3VnaCB0aGF0IG5vIHByb2dyZXNzIG92ZXIgc3Vj aCBhIGxvbmcgdGltZSBtYWtlcyBhbnkgcHJvZ3Jlc3MKPj4gd2l0aGluIHJlYXNvbmFibGUgdGlt ZSB1bmxpa2VseS4uCj4+IAo+PiB3ZSBjdXJyZW50bHkgdGFrZSB0aGlzIGxvY2sgZm9yIHRoZSBk dXJhdGlvbiBvZiBhIGNodW5rCj4+IHVwbG9hZC9pbnNlcnRpb24sIGZvciB0aGUgZHVyYXRpb24g b2YgYSBjaHVuayByZW5hbWUgYWZ0ZXIgY29ycnVwdGlvbgo+PiBoYXMgYmVlbiBkZXRlY3RlZCwg YW5kIGZvciBhIGJhdGNoIG9mIEdDIGNodW5rIHJlbW92YWwuCj4gCj4gSG1tLCB3aGF0IHBvc3Np YmxlIGFsdGVybmF0aXZlcyBJIGhhdmUgaGVyZT8gQnlwYXNzaW5nIHRoZSBsb2NrIGhlbHBlciAK PiBhbmQgYWNxdWlyZSB0aGUgZmlsZSBsb2NrIHdpdGhvdXQgdGltZW91dD8gQWxzbyBub3QgaWRl YWwgSSBndWVzcy4KCkkgdGhpbmsgaXQncyBva2F5IGdpdmVuIHRoZSBjdXJyZW50IGNvbnN0cmFp bnRzLiBJIGp1c3Qgd2FudGVkIHRvIHBvaW50Cm91dCB0aGF0ICJ0aGlzIGlzIHRoZSBtYXhpbXVt IGR1cmF0aW9uIG9mIHRoaW5ncyBkb25lIHdoaWxlIGhvbGRpbmcgdGhlCmxvY2siIGlzIG5vdCBl cXVhbCB0byAidGhpcyBpcyBhIGdvb2QgbG93ZXIgYm91bmQgZm9yIHRoZSBsb2NrIHRpbWVvdXQi CmluIGdlbmVyYWwuCgp0aGUgYWx0ZXJuYXRpdmVzIGJlaW5nIHNob3J0ZXIgdGltZW91dHMgYW5k IHJldHJ5aW5nICh3aGljaCBnaXZlcyB5b3UKdGhlIG9wdGlvbiBvZiBmYXN0ZXIgZmFpbHVyZXMg aW4gY2FsbCBzaXRlcyB3aGVyZSBmb3IgZXhhbXBsZSBwcm9jZWVkaW5nCndpdGggdGhlIG5leHQg Y2h1bmsgbWFrZXMgc2Vuc2UpLCBvciByZWFsbHkgbG9uZyBvciBubyB0aW1lb3V0cyB3aGljaAph cmUgbW9zdCBvZnRlbiBub3Qgd2hhdCB5b3Ugd2FudCBlaXRoZXIuCgplLmcuIGZvciB2ZXJpZmlj YXRpb24sIHdlIGNvdWxkIHRyeSB3aXRoIGEgc2hvcnQgdGltZW91dCBvcgpub24tYmxvY2tpbmcs IGlmIHdlIGRvbid0IG9idGFpbiB0aGUgbG9jaywgcHV0IHRoYXQgY2h1bmsgaW50byBhIGxpc3Qs CmFuZCBhdCB0aGUgZW5kLCBnbyB0aHJvdWdoIHRoYXQgbGlzdCwgcmUtdmVyaWZ5IHRoZSBjaHVu a3MsIGFuZCBpZiBzdGlsbApjb3JydXB0LCBhdHRlbXB0IGFub3RoZXIgcmVuYW1lIHdpdGggbG9u Z2VyIHRpbWVvdXQuIGJlY2F1c2UgaGVyZSB0aGUKY29uZmxpY3QgYmV0d2VlbiB2ZXJpZmljYXRp b24gaXMgZWl0aGVyCi0gd2l0aCBHQywgd2hpY2ggc2hvdWxkbid0IGJlIHBvc3NpYmxlIChpZiB0 aGUgY2h1bmsgaXMgcmVmZXJlbmNlZCwgaXQKICBjYW4ndCBiZSBHQy4gaWYgaXQgaXMgbm90IHJl ZmVyZW5jZWQsIGl0IGNhbid0IGJlIHBhcnQgb2YgYQogIHZlcmlmaWNhdGlvbikKLSB3aXRoIGEg Y2h1bmsgdXBsb2FkLCBpbiB3aGljaCBjYXNlIGEgcGVuZGluZyB1cGxvYWQgbWVhbnMgdGhhdAog IHBhcnRpY3VsYXIgY2h1bmsgc2hvdWxkIGJlIGZpeGVkIGJ5IHRoZSB0aW1lIHdlIG9idGFpbiB0 aGUgbG9jawotIHdpdGggYW5vdGhlciB2ZXJpZmljYXRpb24sIGluIHdoaWNoIGNhc2Ugd2UgZG9u J3QgbmVlZCB0byB3YWl0IGZvcgogIHRoaXMgY2h1bmsgYXQgYWxsCgo+PiAKPj4+ICsgICAgICAg IG1hdGNoIHNlbGYuaW5uZXIuYmFja2VuZF9jb25maWcudHkudW53cmFwX29yX2RlZmF1bHQoKSB7 Cj4+PiArICAgICAgICAgICAgRGF0YXN0b3JlQmFja2VuZFR5cGU6OkZpbGVzeXN0ZW0gPT4gT2so Tm9uZSksCj4+PiArICAgICAgICAgICAgRGF0YXN0b3JlQmFja2VuZFR5cGU6OlMzID0+IHsKPj4+ ICsgICAgICAgICAgICAgICAgc2VsZi5pbm5lci5jaHVua19zdG9yZS5sb2NrX2NodW5rKGRpZ2Vz dCwgdGltZW91dCkubWFwKFNvbWUpCj4+PiArICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAgfQo+ Pj4gKyAgICB9Cj4+PiArCj4+PiAgICAgICAvLy8gUmVuYW1lcyBhIGNvcnJ1cHQgY2h1bmssIHJl dHVybmluZyB0aGUgbmV3IHBhdGggaWYgdGhlIGNodW5rIHdhcyByZW5hbWVkIHN1Y2Nlc3NmdWxs eS4KPj4+ICAgICAgIC8vLyBSZXR1cm5zIHdpdGggYE9rKE5vbmUpYCBpZiB0aGUgY2h1bmsgc291 cmNlIHdhcyBub3QgZm91bmQuCj4+PiAgICAgICBwdWIgZm4gcmVuYW1lX2NvcnJ1cHRfY2h1bmso JnNlbGYsIGRpZ2VzdDogJlt1ODsgMzJdKSAtPiBSZXN1bHQ8T3B0aW9uPFBhdGhCdWY+LCBFcnJv cj4gewo+Pj4gLS0gCj4+PiAyLjQ3LjMKPj4+Cj4+Pgo+Pj4KPj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBwYnMtZGV2ZWwgbWFpbGluZyBsaXN0 Cj4+PiBwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPj4+IGh0dHBzOi8vbGlzdHMucHJveG1v eC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+Pj4KPj4+Cj4+Pgo+PiAK Pj4gCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+ IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1k ZXZlbAo+PiAKPj4gCj4gCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMucHJveG1v eC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v cGJzLWRldmVsCg==