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 0996A1FF141 for ; Fri, 16 Jan 2026 13:43:08 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2973018B56; Fri, 16 Jan 2026 13:43:12 +0100 (CET) Message-ID: <845335b1-78b7-4710-805a-d2ff464ceba0@proxmox.com> Date: Fri, 16 Jan 2026 13:42:36 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Robert Obkircher To: pbs-devel@lists.proxmox.com References: <20260109173548.301653-1-r.obkircher@proxmox.com> <20260109173548.301653-2-r.obkircher@proxmox.com> <1768390129.t2gtpb8x7e.astroid@yuna.none> Content-Language: en-US, de-AT In-Reply-To: <1768390129.t2gtpb8x7e.astroid@yuna.none> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1768567307665 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.356 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 v3 proxmox-backup 1/5] fix #3847: datastore: support writing fidx files of unknown size 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Ck9uIDEvMTQvMjYgMTQ6MTMsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4gT24gSmFudWFy eSA5LCAyMDI2IDY6MzUgcG0sIFJvYmVydCBPYmtpcmNoZXIgd3JvdGU6Cj4+IFVzZSBtcmVtYXAg YW5kIGZ0cnVuY2F0ZSB0byBzdXBwb3J0IGdyb3dhYmxlIEZpeGVkSW5kZXhXcml0ZXJzLiBHcm93 Cj4+IGV4cG9uZW50aWFsbHkgZnJvbSBhIHNtYWxsIGluaXRpYWwgaW5kZXggc2l6ZSBmb3IgZWZm aWNpZW5jeS4gVHJ1bmNhdGUKPj4gZXhjZXNzaXZlIGNhcGFjaXR5IGFmdGVyIGVuY291bnRlcmlu ZyBhIG5vbi1mdWxsIGJsb2NrIG9yIG9uIGNsb3NlLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBSb2Jl cnQgT2JraXJjaGVyPHIub2JraXJjaGVyQHByb3htb3guY29tPgo+PiAtLS0KPj4gICBwYnMtZGF0 YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMgICB8ICAgMiArLQo+PiAgIHBicy1kYXRhc3RvcmUvc3Jj L2ZpeGVkX2luZGV4LnJzIHwgMTIwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPj4g ICAyIGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Pgo+ PiBkaWZmIC0tZ2l0IGEvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzIGIvcGJzLWRhdGFz dG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+IGluZGV4IDljNTdhYWFjLi5hZjcxMjcyNiAxMDA2NDQK Pj4gLS0tIGEvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzCj4+ICsrKyBiL3Bicy1kYXRh c3RvcmUvc3JjL2RhdGFzdG9yZS5ycwo+PiBAQCAtNTkxLDcgKzU5MSw3IEBAIGltcGwgRGF0YVN0 b3JlIHsKPj4gICAgICAgcHViIGZuIGNyZWF0ZV9maXhlZF93cml0ZXI8UDogQXNSZWY8UGF0aD4+ KAo+PiAgICAgICAgICAgJnNlbGYsCj4+ICAgICAgICAgICBmaWxlbmFtZTogUCwKPj4gLSAgICAg ICAgc2l6ZTogdXNpemUsCj4+ICsgICAgICAgIHNpemU6IE9wdGlvbjx1c2l6ZT4sCj4+ICAgICAg ICAgICBjaHVua19zaXplOiB1c2l6ZSwKPj4gICAgICAgKSAtPiBSZXN1bHQ8Rml4ZWRJbmRleFdy aXRlciwgRXJyb3I+IHsKPj4gICAgICAgICAgIGxldCBpbmRleCA9IEZpeGVkSW5kZXhXcml0ZXI6 OmNyZWF0ZSgKPj4gZGlmZiAtLWdpdCBhL3Bicy1kYXRhc3RvcmUvc3JjL2ZpeGVkX2luZGV4LnJz IGIvcGJzLWRhdGFzdG9yZS9zcmMvZml4ZWRfaW5kZXgucnMKPj4gaW5kZXggNmMzYmUyZDQuLjgw MzZhNTE5IDEwMDY0NAo+PiAtLS0gYS9wYnMtZGF0YXN0b3JlL3NyYy9maXhlZF9pbmRleC5ycwo+ PiArKysgYi9wYnMtZGF0YXN0b3JlL3NyYy9maXhlZF9pbmRleC5ycwo+PiBAQCAtMjE5LDkgKzIx OSwxMiBAQCBwdWIgc3RydWN0IEZpeGVkSW5kZXhXcml0ZXIgewo+PiAgICAgICBjaHVua19zaXpl OiB1c2l6ZSwKPj4gICAgICAgc2l6ZTogdXNpemUsCj4+ICAgICAgIGluZGV4X2xlbmd0aDogdXNp emUsCj4+ICsgICAgaW5kZXhfY2FwYWNpdHk6IHVzaXplLAo+IGNodW5rX3NpemUgYW5kIHNpemUg ZWZmZWN0aXZlbHkgYWxyZWFkeSBnaXZlIHlvdSBpbmRleF9sZW5ndGggKGFzIGluLAo+IGhvdyBt YW55ICJzbG90cyIgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCksIHNvIGluZGV4IGxlbmd0aCBhbmQg aW5kZXgKPiBjYXBhY2l0eSBjYW4gYmUgYSBzaW5nbGUgZmllbGQuIGlmIHlvdSB3YW50IHRvIHJl bmFtZSBpdCB0byBzaWduaWZ5IHRoYXQKPiBpdCBtaWdodCBub3cgYmUgYmlnZ2VyIHRoYW4gY2Vp bChzaXplL2NodW5rX3NpemUpLCB0aGF0J3MgZmluZSwgYnV0IEkKPiBkb24ndCB0aGluayB3ZSBu ZWVkIHRvIGR1cGxpY2F0ZSBpdCBhbmQgY29tcGxpY2F0ZSB0aGUgY29kZSBiZWxvdy4uCkJ5IHRo YXQgbG9naWMgKGNodW5rX3NpemUsIHNpemUsIGdyb3dhYmxlX3NpemUpIGFsc28gZ2l2ZSBtZSB0 aGUgY2FwYWNpdHksCnNvIGJvdGggZmllbGRzIGNvdWxkIGJlIHJlbW92ZWQuCgpJIGtlcHQgdGhl bSBhcyBzZXBhcmF0ZSBmaWVsZHMgYmVjYXVzZSB0aGF0IGlzIHdoYXQgdGhlIG9yaWdpbmFsIGNv ZGUgYW5kCnRoZSBSZWFkZXIgZG8sIHN1cHBvc2VkbHkgdG8gYXZvaWQgdGhlIGRpdmlzaW9uIGZv ciB0aGUgYm91bmRzIGNoZWNrLgoKVGhpcyBhbHNvIG1ha2VzIGl0IG11Y2ggbW9yZSBleHBsaWNp dCB3aGF0IGlzIGdvaW5nIG9uIGFuZCBzaW5jZSB0aGUKaW5kZXhfbGVuZ3RoIGhhcyB0byBiZSBj b21wdXRlZCBhbnl3YXkgd2hpbGUgcmVzaXppbmcsIEkgZG9uJ3Qgc2VlIGhvdwpzdG9yaW5nIHRo YXQgdmFsdWUgZm9yIGxhdGVyIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiByZWNvbXB1dGluZyBp dC4KCj4+ICAgICAgIGluZGV4OiAqbXV0IHU4LAo+PiAgICAgICBwdWIgdXVpZDogW3U4OyAxNl0s Cj4+ICAgICAgIHB1YiBjdGltZTogaTY0LAo+PiArICAgIGdyb3dhYmxlX3NpemU6IGJvb2wsCj4+ ICsgICAgd3JpdGVfc2l6ZV9vbl9jbG9zZTogYm9vbCwKPj4gICB9Cj4+ICAgCj4+ICAgLy8gYGlu ZGV4YCBpcyBtbWFwKCllZCB3aGljaCBjYW5ub3QgYmUgdGhyZWFkLWxvY2FsIHNvIHNob3VsZCBi ZSBzZW5kYWJsZQo+PiBAQCAtMjM3LDEyICsyNDAsMTggQEAgaW1wbCBEcm9wIGZvciBGaXhlZElu ZGV4V3JpdGVyIHsKPj4gICB9Cj4+ICAgCj4+ICAgaW1wbCBGaXhlZEluZGV4V3JpdGVyIHsKPj4g KyAgICAvLy8gVGhlIGluaXRpYWwgY2FwYWNpdHksIGlmIHRoZSB0b3RhbCBzaXplIGlzIHVua25v d24uCj4+ICsgICAgLy8vCj4+ICsgICAgLy8vIFRoaXMgY2FwYWNpdHkgdGFrZXMgdXAgdGhlIHNh bWUgYW1vdW50IG9mIHNwYWNlIGFzIHRoZSBoZWFkZXIKPj4gKyAgICAvLy8gYW5kIGNhbiByZWZl ciB0byAxMjggQmxvY2tzICogNCBNaUIvQmxvY2sgPSA1MTIgTWlCIG9mIGNvbnRlbnQuCj4+ICsg ICAgY29uc3QgSU5JVElBTF9DQVBBQ0lUWTogdXNpemUgPSA0MDk2IC8gMzI7Cj4gbWlnaHQgbWFr ZSBzZW5zZSB0byBtYWtlIHRoaXMgbW9yZSBleHBsaWNpdCAtIHdlIGNhbiBvbmx5IG1hcCB1c2lu ZyBwYWdlCj4gZ3JhbnVsYXJpdHksIHRoZSBoZWFkZXIgaXMgb25lIHBhZ2UsIHNvIHRoZSBmaXJz dCBwYXJ0IG5lZWRzIHRvIGJlIGEKPiBwYWdlIGFzIHdlbGwsIGFuZCBpZiB0aGVuIGFsd2F5cyBk b3VibGUgaXQgd2hlbiByZXNpemluZyB3ZSBzdGF5IGFsaWduZWQKPiB0byBwYWdlIGJvdW5kYXJp ZXMuCgpUaGVyZSBpcyBhY3R1YWxseSBubyBzdHJpY3QgcmVxdWlyZW1lbnQgZm9yIHRoZSBtYXBw ZWQgbGVuZ3RoIHRvIGJlCmEgbXVsdGlwbGUgb2YgdGhlIHBhZ2Ugc2l6ZSwgc28gSSBkaWRuJ3Qg d2FudCB0byBndWFyYW50ZWUgdG9vIG11Y2guCkhvd2V2ZXIsIHRoZSBvZmZzZXQgaW50byB0aGUg ZmlsZSBtdXN0IGJlIGFsaWduZWQsIHNvIGEgcGFnZSBzaXplCmxhcmdlciB0aGFuIHRoZSBoZWFk ZXIgd291bGQgYnJlYWsgYW55d2F5LgoKSSB0aGluayBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1 c3QgbWFwIHRoZSBmaWxlIGZyb20gdGhlIHN0YXJ0LCBiZWNhdXNlCnRoYXQgd291bGQgc2ltcGxp ZnkgbXkgb3RoZXIgZml4IFsxXSBhbmQgdGhlIHNpemUvY2hlY2tzdW0gdXBkYXRlIGluCmNsb3Nl KCkuCgpbMV0gCmh0dHBzOi8vbG9yZS5wcm94bW94LmNvbS9wYnMtZGV2ZWwvMjAyNjAxMDkxNzU5 NDUuMzA5OTEzLTMtci5vYmtpcmNoZXJAcHJveG1veC5jb20vCgo+PiArCj4+ICAgICAgICNbYWxs b3coY2xpcHB5OjpjYXN0X3B0cl9hbGlnbm1lbnQpXQo+PiAgICAgICAvLyBSZXF1aXJlcyBvYnRh aW5pbmcgYSBzaGFyZWQgY2h1bmsgc3RvcmUgbG9jayBiZWZvcmVoYW5kCj4+ICAgICAgIHB1YiBm biBjcmVhdGUoCj4+ICAgICAgICAgICBzdG9yZTogQXJjPENodW5rU3RvcmU+LAo+PiAgICAgICAg ICAgcGF0aDogJlBhdGgsCj4+IC0gICAgICAgIHNpemU6IHVzaXplLAo+PiArICAgICAgICBrbm93 bl9zaXplOiBPcHRpb248dXNpemU+LAo+PiAgICAgICAgICAgY2h1bmtfc2l6ZTogdXNpemUsCj4+ ICAgICAgICkgLT4gUmVzdWx0PFNlbGYsIEVycm9yPiB7Cj4+ICAgICAgICAgICBsZXQgZnVsbF9w YXRoID0gc3RvcmUucmVsYXRpdmVfcGF0aChwYXRoKTsKPj4gQEAgLTI2NCw2ICsyNzMsNyBAQCBp bXBsIEZpeGVkSW5kZXhXcml0ZXIgewo+PiAgICAgICAgICAgfQo+PiAgIAo+PiAgICAgICAgICAg bGV0IGN0aW1lID0gcHJveG1veF90aW1lOjplcG9jaF9pNjQoKTsKPj4gKyAgICAgICAgbGV0IHNp emUgPSBrbm93bl9zaXplLnVud3JhcF9vcigwKTsKPj4gICAKPj4gICAgICAgICAgIGxldCB1dWlk ID0gVXVpZDo6Z2VuZXJhdGUoKTsKPj4gICAKPj4gQEAgLTI4MCw4ICsyOTAsMTIgQEAgaW1wbCBG aXhlZEluZGV4V3JpdGVyIHsKPj4gICAKPj4gICAgICAgICAgIGZpbGUud3JpdGVfYWxsKCZidWZm ZXIpPzsKPj4gICAKPj4gLSAgICAgICAgbGV0IGluZGV4X2xlbmd0aCA9IHNpemUuZGl2X2NlaWwo Y2h1bmtfc2l6ZSk7Cj4+IC0gICAgICAgIGxldCBpbmRleF9zaXplID0gaW5kZXhfbGVuZ3RoICog MzI7Cj4+ICsgICAgICAgIGxldCAoaW5kZXhfbGVuZ3RoLCBpbmRleF9jYXBhY2l0eSkgPSBrbm93 bl9zaXplCj4+ICsgICAgICAgICAgICAubWFwKHxzfCBzLmRpdl9jZWlsKGNodW5rX3NpemUpKQo+ PiArICAgICAgICAgICAgLm1hcCh8bGVufCAobGVuLCBsZW4pKQo+PiArICAgICAgICAgICAgLnVu d3JhcF9vcigoMCwgU2VsZjo6SU5JVElBTF9DQVBBQ0lUWSkpOwo+PiArCj4+ICsgICAgICAgIGxl dCBpbmRleF9zaXplID0gaW5kZXhfY2FwYWNpdHkgKiAzMjsKPj4gICAgICAgICAgIG5peDo6dW5p c3RkOjpmdHJ1bmNhdGUoJmZpbGUsIChoZWFkZXJfc2l6ZSArIGluZGV4X3NpemUpIGFzIGk2NCk/ Owo+PiAgIAo+PiAgICAgICAgICAgbGV0IGRhdGEgPSB1bnNhZmUgewo+PiBAQCAtMzA1LDEyICsz MTksODcgQEAgaW1wbCBGaXhlZEluZGV4V3JpdGVyIHsKPj4gICAgICAgICAgICAgICBjaHVua19z aXplLAo+PiAgICAgICAgICAgICAgIHNpemUsCj4+ICAgICAgICAgICAgICAgaW5kZXhfbGVuZ3Ro LAo+PiArICAgICAgICAgICAgaW5kZXhfY2FwYWNpdHksCj4+ICAgICAgICAgICAgICAgaW5kZXg6 IGRhdGEsCj4+ICAgICAgICAgICAgICAgY3RpbWUsCj4+ICAgICAgICAgICAgICAgdXVpZDogKnV1 aWQuYXNfYnl0ZXMoKSwKPj4gKyAgICAgICAgICAgIGdyb3dhYmxlX3NpemU6IGtub3duX3NpemUu aXNfbm9uZSgpLAo+PiArICAgICAgICAgICAgd3JpdGVfc2l6ZV9vbl9jbG9zZToga25vd25fc2l6 ZS5pc19ub25lKCksCj4+ICsgICAgICAgIH0pCj4+ICsgICAgfQo+PiArCj4+ICsgICAgLy8vIElm IHRoaXMgcmV0dXJucyBhbiBlcnJvciwgdGhlIHNpemVzIG1heSBiZSBvdXQgb2Ygc3luYywKPj4g KyAgICAvLy8gd2hpY2ggaXMgZXNwZWNpYWxseSBiYWQgaWYgdGhlIGNhcGFjaXR5IHdhcyByZWR1 Y2VkLgo+PiArICAgIGZuIHNldF9pbmRleF9jYXBhY2l0eSgmbXV0IHNlbGYsIG5ld19jYXBhY2l0 eTogdXNpemUpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4gKyAgICAgICAgaWYgbmV3X2NhcGFj aXR5ID09IHNlbGYuaW5kZXhfY2FwYWNpdHkgewo+PiArICAgICAgICAgICAgcmV0dXJuIE9rKCgp KTsKPj4gKyAgICAgICAgfQo+PiArICAgICAgICBsZXQgb2xkX2luZGV4X3NpemUgPSBzZWxmLmlu ZGV4X2NhcGFjaXR5ICogMzI7Cj4+ICsgICAgICAgIGxldCBuZXdfaW5kZXhfc2l6ZSA9IG5ld19j YXBhY2l0eSAqIDMyOwo+PiArICAgICAgICBsZXQgbmV3X2ZpbGVfc2l6ZSA9IChzaXplX29mOjo8 Rml4ZWRJbmRleEhlYWRlcj4oKSArIG5ld19pbmRleF9zaXplKSBhcyBpNjQ7Cj4+ICsKPj4gKyAg ICAgICAgbGV0IGluZGV4X2FkZHIgPSBOb25OdWxsOjpuZXcoc2VsZi5pbmRleCBhcyAqbXV0IHN0 ZDo6ZmZpOjpjX3ZvaWQpLm9rX29yX2Vsc2UofHwgewo+PiArICAgICAgICAgICAgZm9ybWF0X2Vy ciEoIkNhbid0IHJlc2l6ZSBGaXhlZEluZGV4V3JpdGVyIGluZGV4IGJlY2F1c2UgdGhlIGluZGV4 IHBvaW50ZXIgaXMgbnVsbC4iKQo+PiArICAgICAgICB9KT87Cj4+ICsKPj4gKyAgICAgICAgbml4 Ojp1bmlzdGQ6OmZ0cnVuY2F0ZSgmc2VsZi5maWxlLCBuZXdfZmlsZV9zaXplKT87Cj4+ICsKPj4g KyAgICAgICAgbGV0IG5ld19pbmRleCA9IHVuc2FmZSB7Cj4+ICsgICAgICAgICAgICBuaXg6OnN5 czo6bW1hbjo6bXJlbWFwKAo+PiArICAgICAgICAgICAgICAgIGluZGV4X2FkZHIsCj4+ICsgICAg ICAgICAgICAgICAgb2xkX2luZGV4X3NpemUsCj4+ICsgICAgICAgICAgICAgICAgbmV3X2luZGV4 X3NpemUsCj4+ICsgICAgICAgICAgICAgICAgbml4OjpzeXM6Om1tYW46Ok1SZW1hcEZsYWdzOjpN UkVNQVBfTUFZTU9WRSwKPj4gKyAgICAgICAgICAgICAgICBOb25lLAo+PiArICAgICAgICAgICAg KQo+PiArICAgICAgICB9PzsKPj4gKwo+PiArICAgICAgICBzZWxmLmluZGV4ID0gbmV3X2luZGV4 LmFzX3B0cigpLmNhc3Q6Ojx1OD4oKTsKPj4gKyAgICAgICAgc2VsZi5pbmRleF9jYXBhY2l0eSA9 IG5ld19jYXBhY2l0eTsKPj4gKyAgICAgICAgT2soKCkpCj4+ICsgICAgfQo+PiArCj4+ICsgICAg Ly8vIFVubWFwcGluZyBlbnN1cmVzIGZ1dHVyZSBhZGQgYW5kIGNsb3NlIG9wZXJhdGlvbnMgZmFp bC4KPj4gKyAgICBmbiBzZXRfaW5kZXhfY2FwYWNpdHlfb3JfdW5tYXAoJm11dCBzZWxmLCBuZXdf Y2FwYWNpdHk6IHVzaXplKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+ICsgICAgICAgIHNlbGYu c2V0X2luZGV4X2NhcGFjaXR5KG5ld19jYXBhY2l0eSkubWFwX2Vycih8ZXwgewo+PiArICAgICAg ICAgICAgbGV0IHVubWFwX3Jlc3VsdCA9IHNlbGYudW5tYXAoKTsKPj4gKyAgICAgICAgICAgIGxl dCBtZXNzYWdlID0gZm9ybWF0ISgKPj4gKyAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIHJlc2l6 ZSBpbmRleCBjYXBhY2l0eSBmcm9tIHt9IHRvIHtuZXdfY2FwYWNpdHl9IHdpdGggYmFja2luZyBm aWxlOiB7Oj99IiwKPj4gKyAgICAgICAgICAgICAgICBzZWxmLmluZGV4X2NhcGFjaXR5LCBzZWxm LnRtcF9maWxlbmFtZQo+PiArICAgICAgICAgICAgKTsKPj4gKyAgICAgICAgICAgIGFzc2VydCEo c2VsZi5pbmRleC5pc19udWxsKCksICJ7bWVzc2FnZX0ge3VubWFwX3Jlc3VsdDo/fSIpOwo+PiAr ICAgICAgICAgICAgZS5jb250ZXh0KG1lc3NhZ2UpCj4+ICAgICAgICAgICB9KQo+PiAgICAgICB9 Cj4+ICAgCj4+ICsgICAgLy8vIEluY3JlYXNlIHRoZSBjb250ZW50IHNpemUgdG8gYmUgYXQgbGVh c3QgYHJlcXVlc3RlZF9zaXplYCBhbmQKPj4gKyAgICAvLy8gZW5zdXJlIHRoZXJlIGlzIGVub3Vn aCBjYXBhY2l0eS4KPj4gKyAgICAvLy8KPj4gKyAgICAvLy8gT25seSB3cml0ZXJzIHRoYXQgd2Vy ZSBjcmVhdGVkIHdpdGhvdXQgYSBrbm93biBzaXplIGNhbiBncm93Lgo+PiArICAgIC8vLyBUaGUg c2l6ZSBhbHNvIGJlY29tZXMgZml4ZWQgYXMgc29vbiBhcyBpdCBpcyBubyBsb25nZXIgZGl2aXNp YmxlCj4+ICsgICAgLy8vIGJ5IHRoZSBibG9jayBzaXplLCB0byBlbnN1cmUgdGhhdCBvbmx5IHRo ZSBsYXN0IGJsb2NrIGNhbiBiZQo+PiArICAgIC8vLyBzbWFsbGVyLgo+PiArICAgIHB1YiBmbiBn cm93X3RvX3NpemUoJm11dCBzZWxmLCByZXF1ZXN0ZWRfc2l6ZTogdXNpemUpIC0+IFJlc3VsdDwo KSwgRXJyb3I+IHsKPj4gKyAgICAgICAgaWYgc2VsZi5zaXplIDwgcmVxdWVzdGVkX3NpemUgewo+ PiArICAgICAgICAgICAgaWYgIXNlbGYuZ3Jvd2FibGVfc2l6ZSB7Cj4+ICsgICAgICAgICAgICAg ICAgYmFpbCEoInJlZnVzaW5nIHRvIHJlc2l6ZSBmcm9tIHt9IHRvIHtyZXF1ZXN0ZWRfc2l6ZX0i LCBzZWxmLnNpemUpOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgbGV0IG5ld19s ZW4gPSByZXF1ZXN0ZWRfc2l6ZS5kaXZfY2VpbChzZWxmLmNodW5rX3NpemUpOwo+PiArICAgICAg ICAgICAgaWYgbmV3X2xlbiAqIHNlbGYuY2h1bmtfc2l6ZSAhPSByZXF1ZXN0ZWRfc2l6ZSB7Cj4+ ICsgICAgICAgICAgICAgICAgLy8gbm90IGEgZnVsbCBjaHVuaywgc28gdGhpcyBtdXN0IGJlIHRo ZSBsYXN0IG9uZQo+PiArICAgICAgICAgICAgICAgIHNlbGYuZ3Jvd2FibGVfc2l6ZSA9IGZhbHNl Owo+PiArICAgICAgICAgICAgICAgIHNlbGYuc2V0X2luZGV4X2NhcGFjaXR5X29yX3VubWFwKG5l d19sZW4pPzsKPj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiBuZXdfbGVuID4gc2VsZi5pbmRleF9j YXBhY2l0eSB7Cj4+ICsgICAgICAgICAgICAgICAgc2VsZi5zZXRfaW5kZXhfY2FwYWNpdHlfb3Jf dW5tYXAobmV3X2xlbi5uZXh0X3Bvd2VyX29mX3R3bygpKT87Cj4+ICsgICAgICAgICAgICB9Owo+ PiArICAgICAgICAgICAgYXNzZXJ0IShuZXdfbGVuIDw9IHNlbGYuaW5kZXhfY2FwYWNpdHkpOwo+ PiArICAgICAgICAgICAgc2VsZi5pbmRleF9sZW5ndGggPSBuZXdfbGVuOwo+PiArICAgICAgICAg ICAgc2VsZi5zaXplID0gcmVxdWVzdGVkX3NpemU7Cj4+ICsgICAgICAgIH0KPiBzaG91bGQgd2Ug aGFuZGxlIHRoZSBlbHNlIHBhcnQgaGVyZT8gaS5lLiwgZXJyb3Igb3V0IGlmIHNocmlua2luZyBp cwo+IHJlcXVlc3RlZD8KClRoZSBlbHNlIHBhcnQgaXMgZXhwZWN0ZWQgdG8gc3VjY2VlZC4gSSBj b25zaWRlcmVkIHJlbmFtaW5nIHRoZSBtZXRob2QgdG8Kc29tZXRoaW5nIGxpa2UgZ3Jvd19pZl9z bWFsbGVyIG9yIGVuc3VyZV9jYXBhY2l0eSB0byBtYWtlIHRoaXMgY2xlYXIsIGJ1dApJJ20gbm90 IHF1aXRlIGhhcHB5IHdpdGggdGhvc2UgbmFtZXMgZWl0aGVyLgoKPj4gKyAgICAgICAgT2soKCkp Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgLy8vIFRoZSBjdXJyZW50IGxlbmd0aCBvZiB0aGUgaW5k ZXguIFRoaXMgbWF5IGJlIGluY3JlYXNlZCB3aXRoIFtgZ3Jvd190b19zaXplYF0uCj4+ICAgICAg IHB1YiBmbiBpbmRleF9sZW5ndGgoJnNlbGYpIC0+IHVzaXplIHsKPj4gICAgICAgICAgIHNlbGYu aW5kZXhfbGVuZ3RoCj4+ICAgICAgIH0KPj4gQEAgLTMyMCw3ICs0MDksNyBAQCBpbXBsIEZpeGVk SW5kZXhXcml0ZXIgewo+PiAgICAgICAgICAgICAgIHJldHVybiBPaygoKSk7Cj4+ICAgICAgICAg ICB9Owo+PiAgIAo+PiAtICAgICAgICBsZXQgaW5kZXhfc2l6ZSA9IHNlbGYuaW5kZXhfbGVuZ3Ro ICogMzI7Cj4+ICsgICAgICAgIGxldCBpbmRleF9zaXplID0gc2VsZi5pbmRleF9jYXBhY2l0eSAq IDMyOwo+PiAgIAo+PiAgICAgICAgICAgaWYgbGV0IEVycihlcnIpID0gdW5zYWZlIHsgbml4Ojpz eXM6Om1tYW46Om11bm1hcChpbmRleCwgaW5kZXhfc2l6ZSkgfSB7Cj4+ICAgICAgICAgICAgICAg YmFpbCEoInVubWFwIGZpbGUgezo/fSBmYWlsZWQgLSB7fSIsIHNlbGYudG1wX2ZpbGVuYW1lLCBl cnIpOwo+PiBAQCAtMzQyLDkgKzQzMSwyNCBAQCBpbXBsIEZpeGVkSW5kZXhXcml0ZXIgewo+PiAg IAo+PiAgICAgICAgICAgc2VsZi51bm1hcCgpPzsKPj4gICAKPj4gKyAgICAgICAgaWYgc2VsZi5p bmRleF9sZW5ndGggPT0gMCB7Cj4+ICsgICAgICAgICAgICBiYWlsISgicmVmdXNpbmcgdG8gY2xv c2UgZW1wdHkgZmlkeCBmaWxlIHs6P30iLCBzZWxmLnRtcF9maWxlbmFtZSk7Cj4+ICsgICAgICAg IH0gZWxzZSBpZiBzZWxmLmluZGV4X2xlbmd0aCA8IHNlbGYuaW5kZXhfY2FwYWNpdHkgewo+PiAr ICAgICAgICAgICAgbGV0IGZpbGVfc2l6ZSA9IHNpemVfb2Y6OjxGaXhlZEluZGV4SGVhZGVyPigp ICsgaW5kZXhfc2l6ZTsKPj4gKyAgICAgICAgICAgIG5peDo6dW5pc3RkOjpmdHJ1bmNhdGUoJnNl bGYuZmlsZSwgZmlsZV9zaXplIGFzIGk2NCk/Owo+PiArICAgICAgICAgICAgc2VsZi5pbmRleF9j YXBhY2l0eSA9IHNlbGYuaW5kZXhfbGVuZ3RoOwo+PiArICAgICAgICB9Cj4+ICsKPj4gICAgICAg ICAgIGxldCBjc3VtX29mZnNldCA9IHN0ZDo6bWVtOjpvZmZzZXRfb2YhKEZpeGVkSW5kZXhIZWFk ZXIsIGluZGV4X2NzdW0pOwo+PiAgICAgICAgICAgc2VsZi5maWxlLnNlZWsoU2Vla0Zyb206OlN0 YXJ0KGNzdW1fb2Zmc2V0IGFzIHU2NCkpPzsKPj4gICAgICAgICAgIHNlbGYuZmlsZS53cml0ZV9h bGwoJmluZGV4X2NzdW0pPzsKPj4gKwo+PiArICAgICAgICBpZiBzZWxmLndyaXRlX3NpemVfb25f Y2xvc2Ugewo+PiArICAgICAgICAgICAgbGV0IHNpemVfb2Zmc2V0ID0gc3RkOjptZW06Om9mZnNl dF9vZiEoRml4ZWRJbmRleEhlYWRlciwgc2l6ZSk7Cj4+ICsgICAgICAgICAgICBzZWxmLmZpbGUu c2VlayhTZWVrRnJvbTo6U3RhcnQoc2l6ZV9vZmZzZXQgYXMgdTY0KSk/Owo+PiArICAgICAgICAg ICAgc2VsZi5maWxlLndyaXRlX2FsbCgmKHNlbGYuc2l6ZSBhcyB1NjQpLnRvX2xlX2J5dGVzKCkp PzsKPj4gKyAgICAgICAgfQo+PiArCj4+ICAgICAgICAgICBzZWxmLmZpbGUuZmx1c2goKT87Cj4+ ICAgCj4+ICAgICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBzdGQ6OmZzOjpyZW5hbWUoJnNlbGYu dG1wX2ZpbGVuYW1lLCAmc2VsZi5maWxlbmFtZSkgewo+PiBAQCAtNDA3LDYgKzUxMSwxNCBAQCBp bXBsIEZpeGVkSW5kZXhXcml0ZXIgewo+PiAgICAgICB9Cj4+ICAgCj4+ICAgICAgIHB1YiBmbiBj bG9uZV9kYXRhX2Zyb20oJm11dCBzZWxmLCByZWFkZXI6ICZGaXhlZEluZGV4UmVhZGVyKSAtPiBS ZXN1bHQ8KCksIEVycm9yPiB7Cj4+ICsgICAgICAgIGlmIHNlbGYuZ3Jvd2FibGVfc2l6ZSB7Cj4+ ICsgICAgICAgICAgICBiYWlsISgicmV1c2luZyB0aGUgaW5kZXggaXMgb25seSBzdXBwb3J0ZWQg d2l0aCBrbm93biBpbnB1dCBzaXplIik7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBp ZiBzZWxmLmNodW5rX3NpemUgIT0gcmVhZGVyLmNodW5rX3NpemUgewo+PiArICAgICAgICAgICAg YmFpbCEoImNhbid0IHJldXNlIGZpbGUgd2l0aCBkaWZmZXJlbnQgY2h1bmsgc2l6ZSIpOwo+PiAr ICAgICAgICB9Cj4+ICsKPj4gICAgICAgICAgIGlmIHNlbGYuaW5kZXhfbGVuZ3RoICE9IHJlYWRl ci5pbmRleF9jb3VudCgpIHsKPj4gICAgICAgICAgICAgICBiYWlsISgiY2xvbmVfZGF0YV9mcm9t IGZhaWxlZCAtIGluZGV4IHNpemVzIG5vdCBlcXVhbCIpOwo+PiAgICAgICAgICAgfQo+PiAtLSAK Pj4gMi40Ny4zCj4+Cj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcGJzLWRldmVsQGxpc3Rz LnByb3htb3guY29tCj4+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFu L2xpc3RpbmZvL3Bicy1kZXZlbAo+Pgo+Pgo+Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+IHBicy1kZXZl bEBsaXN0cy5wcm94bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9t YWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+Cj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBs aXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h bi9saXN0aW5mby9wYnMtZGV2ZWwK