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 4E8121FF38F for ; Tue, 4 Jun 2024 15:58:52 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D5FDA13641; Tue, 4 Jun 2024 15:59:21 +0200 (CEST) Message-ID: Date: Tue, 4 Jun 2024 15:58:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox Backup Server development discussion , =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= References: <20240528094303.309806-1-c.ebner@proxmox.com> <20240528094303.309806-49-c.ebner@proxmox.com> <1717493343.bps2geb0tc.astroid@yuna.none> Content-Language: en-US, de-DE From: Christian Ebner In-Reply-To: <1717493343.bps2geb0tc.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.372 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 T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [create.rs, mod.rs, proxmox.com] Subject: Re: [pbs-devel] [PATCH v8 proxmox-backup 48/69] pxar: caching: add look-ahead cache 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" T24gNi80LzI0IDExOjM1LCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+IE9uIE1heSAyOCwg MjAyNCAxMTo0MiBhbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+PiBBZGQgYSBsb29rYWhlYWQg Y2FjaGUgYW5kIHRoZSBuZWNjZXNzYXJ5IHR5cGVzIHRvIHN0b3JlIHRoZSByZXF1aXJlZAo+PiBk YXRhIGFuZCBrZWVwIHRyYWNrIG9mIGRpcmVjdG9yeSBib3VuZGFyaWVzIHdoaWxlIHRyYXZlcnNp bmcgdGhlCj4+IGZpbGVzeXN0ZW0gdHJlZSwgaW4gb3JkZXIgdG8gcG9zdHBvbmUgYSBkZWNpc2lv biBpZiB0byByZXVzZSBvcgo+PiByZWVuY29kZSBhIGdpdmVuIHJlZ3VsYXIgZmlsZSB3aXRoIHVu Y2hhbmdlZCBtZXRhZGF0YS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEVibmVyIDxj LmVibmVyQHByb3htb3guY29tPgo+PiAtLS0KPj4gY2hhbmdlcyBzaW5jZSB2ZXJzaW9uIDc6Cj4+ IC0gbm8gY2hhbmdlcwo+Pgo+PiBjaGFuZ2VzIHNpbmNlIHZlcnNpb24gNjoKPj4gLSBhZGQgUHhh ckxvb2thaGVhZENhY2hlIGFuZCByZWZhY3RvciBzb21lIG9mIHRoZSBsb2dpYyB0byBiZSBjb250 YWluZWQKPj4gICAgd2l0aGluIHRoaXMgcGF0Y2gKPj4KPj4gICBwYnMtY2xpZW50L3NyYy9weGFy L2NyZWF0ZS5ycyAgICAgICAgICAgfCAgIDIgKy0KPj4gICBwYnMtY2xpZW50L3NyYy9weGFyL2xv b2tfYWhlYWRfY2FjaGUucnMgfCAxNjUgKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgcGJz LWNsaWVudC9zcmMvcHhhci9tb2QucnMgICAgICAgICAgICAgIHwgICAxICsKPj4gICAzIGZpbGVz IGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHBicy1jbGllbnQvc3JjL3B4YXIvbG9va19haGVhZF9jYWNoZS5ycwo+Pgo+PiBk aWZmIC0tZ2l0IGEvcGJzLWNsaWVudC9zcmMvcHhhci9jcmVhdGUucnMgYi9wYnMtY2xpZW50L3Ny Yy9weGFyL2NyZWF0ZS5ycwo+PiBpbmRleCBhYzg4MjdiYjIuLjYxMjdhYTg4ZiAxMDA2NDQKPj4g LS0tIGEvcGJzLWNsaWVudC9zcmMvcHhhci9jcmVhdGUucnMKPj4gKysrIGIvcGJzLWNsaWVudC9z cmMvcHhhci9jcmVhdGUucnMKPj4gQEAgLTEzMSw3ICsxMzEsNyBAQCBpbXBsIGZtdDo6RGlzcGxh eSBmb3IgQXJjaGl2ZUVycm9yIHsKPj4gICB9Cj4+ICAgCj4+ICAgI1tkZXJpdmUoRXEsIFBhcnRp YWxFcSwgSGFzaCldCj4+IC1zdHJ1Y3QgSGFyZExpbmtJbmZvIHsKPj4gK3B1YihjcmF0ZSkgc3Ry dWN0IEhhcmRMaW5rSW5mbyB7Cj4+ICAgICAgIHN0X2RldjogdTY0LAo+PiAgICAgICBzdF9pbm86 IHU2NCwKPj4gICB9Cj4+IGRpZmYgLS1naXQgYS9wYnMtY2xpZW50L3NyYy9weGFyL2xvb2tfYWhl YWRfY2FjaGUucnMgYi9wYnMtY2xpZW50L3NyYy9weGFyL2xvb2tfYWhlYWRfY2FjaGUucnMKPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwLi41Mzk1ODYyNzEKPj4gLS0t IC9kZXYvbnVsbAo+PiArKysgYi9wYnMtY2xpZW50L3NyYy9weGFyL2xvb2tfYWhlYWRfY2FjaGUu cnMKPj4gQEAgLTAsMCArMSwxNjUgQEAKPj4gK3VzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoU2V0 Owo+PiArdXNlIHN0ZDo6ZmZpOjpDU3RyaW5nOwo+PiArdXNlIHN0ZDo6b3BzOjpSYW5nZTsKPj4g K3VzZSBzdGQ6Om9zOjp1bml4Ojppbzo6T3duZWRGZDsKPj4gK3VzZSBzdGQ6OnBhdGg6OlBhdGhC dWY7Cj4+ICsKPj4gK3VzZSBuaXg6OnN5czo6c3RhdDo6RmlsZVN0YXQ7Cj4+ICsKPj4gK3VzZSBw eGFyOjplbmNvZGVyOjpQYXlsb2FkT2Zmc2V0Owo+PiArdXNlIHB4YXI6Ok1ldGFkYXRhOwo+PiAr Cj4+ICt1c2Ugc3VwZXI6OmNyZWF0ZTo6KjsKPj4gKwo+PiArY29uc3QgREVGQVVMVF9DQUNIRV9T SVpFOiB1c2l6ZSA9IDUxMjsKPj4gKwo+PiArcHViKGNyYXRlKSBzdHJ1Y3QgQ2FjaGVFbnRyeURh dGEgewo+PiArICAgIHB1YihjcmF0ZSkgZmQ6IE93bmVkRmQsCj4+ICsgICAgcHViKGNyYXRlKSBj X2ZpbGVfbmFtZTogQ1N0cmluZywKPj4gKyAgICBwdWIoY3JhdGUpIHN0YXQ6IEZpbGVTdGF0LAo+ PiArICAgIHB1YihjcmF0ZSkgbWV0YWRhdGE6IE1ldGFkYXRhLAo+PiArICAgIHB1YihjcmF0ZSkg cGF5bG9hZF9vZmZzZXQ6IFBheWxvYWRPZmZzZXQsCj4+ICt9Cj4+ICsKPj4gK3B1YihjcmF0ZSkg ZW51bSBDYWNoZUVudHJ5IHsKPj4gKyAgICBSZWdFbnRyeShDYWNoZUVudHJ5RGF0YSksCj4+ICsg ICAgRGlyRW50cnkoQ2FjaGVFbnRyeURhdGEpLAo+PiArICAgIERpckVuZCwKPj4gK30KPj4gKwo+ PiArcHViKGNyYXRlKSBzdHJ1Y3QgUHhhckxvb2thaGVhZENhY2hlIHsKPj4gKyAgICAvLyBDdXJy ZW50IHN0YXRlIG9mIHRoZSBjYWNoZQo+PiArICAgIGVuYWJsZWQ6IGJvb2wsCj4+ICsgICAgLy8g Q2FjaGVkIGVudHJpZXMKPj4gKyAgICBlbnRyaWVzOiBWZWM8Q2FjaGVFbnRyeT4sCj4+ICsgICAg Ly8gRW50cmllcyBlbmNvdW50ZXJlZCBoYXZpbmcgbW9yZSB0aGFuIG9uZSBsaW5rIGdpdmVuIGJ5 IHN0YXQKPj4gKyAgICBoYXJkbGlua3M6IEhhc2hTZXQ8SGFyZExpbmtJbmZvPiwKPj4gKyAgICAv LyBQYXlsb2FkIHJhbmdlIGNvdmVyZWQgYnkgdGhlIGN1cnJlbnRseSBjYWNoZWQgZW50cmllcwo+ PiArICAgIHJhbmdlOiBSYW5nZTx1NjQ+LAo+PiArICAgIC8vIFBvc3NpYmxlIGhlbGQgYmFjayBs YXN0IGNodW5rIGZyb20gbGFzdCBmbHVzaCwgdXNlZCBmb3IgcG9zc2libGUgY2h1bmsgY29udGlu dWF0aW9uCj4+ICsgICAgbGFzdF9jaHVuazogT3B0aW9uPFJldXNhYmxlRHluYW1pY0VudHJ5PiwK Pj4gKyAgICAvLyBQYXRoIHdoZW4gc3RhcnRlZCBjYWNoaW5nCj4+ICsgICAgc3RhcnRfcGF0aDog UGF0aEJ1ZiwKPj4gKyAgICAvLyBOdW1iZXIgb2YgZW50cmllcyB3aXRoIGZpbGUgZGVzY3JpcHRv cnMKPj4gKyAgICBmZF9lbnRyaWVzOiB1c2l6ZSwKPj4gKyAgICAvLyBNYXggbnVtYmVyIG9mIGVu dHJpZXMgd2l0aCBmaWxlIGRlc2NyaXB0b3JzCj4+ICsgICAgY2FjaGVfc2l6ZTogdXNpemUsCj4+ ICt9Cj4+ICsKPj4gK2ltcGwgUHhhckxvb2thaGVhZENhY2hlIHsKPj4gKyAgICBwdWIoY3JhdGUp IGZuIG5ldyhzaXplOiBPcHRpb248dXNpemU+KSAtPiBTZWxmIHsKPj4gKyAgICAgICAgU2VsZiB7 Cj4+ICsgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSwKPj4gKyAgICAgICAgICAgIGVudHJpZXM6 IFZlYzo6bmV3KCksCj4+ICsgICAgICAgICAgICBoYXJkbGlua3M6IEhhc2hTZXQ6Om5ldygpLAo+ PiArICAgICAgICAgICAgcmFuZ2U6IDAuLjAsCj4+ICsgICAgICAgICAgICBsYXN0X2NodW5rOiBO b25lLAo+PiArICAgICAgICAgICAgc3RhcnRfcGF0aDogUGF0aEJ1Zjo6bmV3KCksCj4+ICsgICAg ICAgICAgICBmZF9lbnRyaWVzOiAwLAo+PiArICAgICAgICAgICAgY2FjaGVfc2l6ZTogc2l6ZS51 bndyYXBfb3IoREVGQVVMVF9DQUNIRV9TSVpFKSwKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4g Kwo+PiArICAgIHB1YihjcmF0ZSkgZm4gaXNfZnVsbCgmc2VsZikgLT4gYm9vbCB7Cj4+ICsgICAg ICAgIHNlbGYuZmRfZW50cmllcyA+PSBzZWxmLmNhY2hlX3NpemUKPj4gKyAgICB9Cj4+ICsKPj4g KyAgICBwdWIoY3JhdGUpIGZuIGNhY2hpbmdfZW5hYmxlZCgmc2VsZikgLT4gYm9vbCB7Cj4+ICsg ICAgICAgIHNlbGYuZW5hYmxlZAo+PiArICAgIH0KPj4gKwo+PiArICAgIHB1YihjcmF0ZSkgZm4g aW5zZXJ0KAo+IAo+IDIgb3V0IG9mIDMgY2FsbHMgdG8gdGhpcyBhcmUgcHJlY2VkZWQgYnkgdGhl IHNhbWUgY2FsbCB0bwo+IHVwZGF0ZV9zdGFydF9wYXRoLi4gd2UgY291bGQganVzdCBhZGQgdGhl IHBhdGggYXMgcGFyYW1ldGVyIGhlcmUsIGFuZAo+IGlubGluZSB0aGF0IGNhbGwgYW5kIGRyb3Ag dXBkYXRlX3N0YXJ0X3BhdGggYWx0b2dldGhlciBBRkFJQ1Q/CgpPa2F5LCBJIGFkZGVkIHRoaXMg YXMgcGFyYW1ldGVyIGFuZCBtb3ZlZCB0aGUgd2hvbGUgc2V0IGlmIG5vdCBlbmFibGVkLCAKdG9n ZXRoZXIgd2l0aCB0aGUgcmVxdWlyZWQgcG9wIGlmIG5vdCBhIGRpcmVjdG9yeSB0byBiZSBpbnNp ZGUgdGhpcyAKZnVuY3Rpb24uCgo+IAo+PiArICAgICAgICAmbXV0IHNlbGYsCj4+ICsgICAgICAg IGZkOiBPd25lZEZkLAo+PiArICAgICAgICBjX2ZpbGVfbmFtZTogQ1N0cmluZywKPj4gKyAgICAg ICAgc3RhdDogRmlsZVN0YXQsCj4+ICsgICAgICAgIG1ldGFkYXRhOiBNZXRhZGF0YSwKPj4gKyAg ICAgICAgcGF5bG9hZF9vZmZzZXQ6IFBheWxvYWRPZmZzZXQsCj4+ICsgICAgKSB7Cj4+ICsgICAg ICAgIHNlbGYuZW5hYmxlZCA9IHRydWU7Cj4+ICsgICAgICAgIHNlbGYuZmRfZW50cmllcyArPSAx Owo+PiArICAgICAgICBpZiBtZXRhZGF0YS5pc19kaXIoKSB7Cj4+ICsgICAgICAgICAgICBzZWxm LmVudHJpZXMucHVzaChDYWNoZUVudHJ5OjpEaXJFbnRyeShDYWNoZUVudHJ5RGF0YSB7Cj4+ICsg ICAgICAgICAgICAgICAgZmQsCj4+ICsgICAgICAgICAgICAgICAgY19maWxlX25hbWUsCj4+ICsg ICAgICAgICAgICAgICAgc3RhdCwKPj4gKyAgICAgICAgICAgICAgICBtZXRhZGF0YSwKPj4gKyAg ICAgICAgICAgICAgICBwYXlsb2FkX29mZnNldCwKPj4gKyAgICAgICAgICAgIH0pKQo+PiArICAg ICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgc2VsZi5lbnRyaWVzLnB1c2goQ2FjaGVFbnRy eTo6UmVnRW50cnkoQ2FjaGVFbnRyeURhdGEgewo+PiArICAgICAgICAgICAgICAgIGZkLAo+PiAr ICAgICAgICAgICAgICAgIGNfZmlsZV9uYW1lLAo+PiArICAgICAgICAgICAgICAgIHN0YXQsCj4+ ICsgICAgICAgICAgICAgICAgbWV0YWRhdGEsCj4+ICsgICAgICAgICAgICAgICAgcGF5bG9hZF9v ZmZzZXQsCj4+ICsgICAgICAgICAgICB9KSkKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKwo+ PiArICAgIHB1YihjcmF0ZSkgZm4gaW5zZXJ0X2Rpcl9lbmQoJm11dCBzZWxmKSB7Cj4+ICsgICAg ICAgIHNlbGYuZW50cmllcy5wdXNoKENhY2hlRW50cnk6OkRpckVuZCk7Cj4+ICsgICAgfQo+PiAr Cj4+ICsgICAgcHViKGNyYXRlKSBmbiB0YWtlX2FuZF9yZXNldCgmbXV0IHNlbGYpIC0+IFZlYzxD YWNoZUVudHJ5PiB7Cj4+ICsgICAgICAgIHNlbGYuZmRfZW50cmllcyA9IDA7Cj4+ICsgICAgICAg IHNlbGYuZW5hYmxlZCA9IGZhbHNlOwo+PiArICAgICAgICBzZWxmLnN0YXJ0X3BhdGguY2xlYXIo KTsKPiAKPiBzdGFydF9wYXRoIGlzIGNsZWFyZWQgaGVyZSwgYW5kIHRha2VfYW5kX3Jlc2V0IGlz IGNhbGxlZAo+IAo+PiArICAgICAgICBzZWxmLmNsZWFyX3JhbmdlKCk7Cj4+ICsgICAgICAgIHN0 ZDo6bWVtOjp0YWtlKCZtdXQgc2VsZi5lbnRyaWVzKQo+PiArICAgIH0KPj4gKwo+PiArICAgIHB1 YihjcmF0ZSkgZm4gdXBkYXRlX3N0YXJ0X3BhdGgoJm11dCBzZWxmLCBwYXRoOiBQYXRoQnVmKSB7 Cj4+ICsgICAgICAgIHNlbGYuc3RhcnRfcGF0aCA9IHBhdGg7Cj4+ICsgICAgfQo+PiArCj4+ICsg ICAgcHViKGNyYXRlKSBmbiBzdGFydF9wYXRoKCZzZWxmKSAtPiAmUGF0aEJ1ZiB7Cj4+ICsgICAg ICAgICZzZWxmLnN0YXJ0X3BhdGgKPiAKPiByaWdodCBhZnRlciB0aGUgb25seSBjYWxsIHRvIHRo aXMuLgo+IAo+IHNvIHRha2VfYW5kX3Jlc2V0IGNvdWxkIGp1c3QgdGFrZSB0aGUgcGF0aCBhcyB3 ZWxsIGFuZCByZXR1cm4gaXQsIGFuZCB3ZQo+IGNhbiBkcm9wIHRoaXMgb25lIGhlcmU/CgphZ3Jl ZWQsIHJlbW92ZWQgdGhpcyBhbmQgcmV0dXJuIGl0IHZpYSB0YWtlX2FuZF9yZXNldCBpbnN0ZWFk Cgo+IAo+PiArICAgIH0KPj4gKwo+PiArICAgIHB1YihjcmF0ZSkgZm4gY29udGFpbnNfaGFyZGxp bmsoJnNlbGYsIGluZm86ICZIYXJkTGlua0luZm8pIC0+IGJvb2wgewo+PiArICAgICAgICBzZWxm LmhhcmRsaW5rcy5jb250YWlucyhpbmZvKQo+PiArICAgIH0KPj4gKwo+PiArICAgIHB1YihjcmF0 ZSkgZm4gaW5zZXJ0X2hhcmRsaW5rKCZtdXQgc2VsZiwgaW5mbzogSGFyZExpbmtJbmZvKSAtPiBi b29sIHsKPj4gKyAgICAgICAgc2VsZi5oYXJkbGlua3MuaW5zZXJ0KGluZm8pCj4+ICsgICAgfQo+ PiArCj4+ICsgICAgcHViKGNyYXRlKSBmbiByYW5nZSgmc2VsZikgLT4gJlJhbmdlPHU2ND4gewo+ PiArICAgICAgICAmc2VsZi5yYW5nZQo+PiArICAgIH0KPj4gKwo+PiArICAgIHB1YihjcmF0ZSkg Zm4gdXBkYXRlX3JhbmdlKCZtdXQgc2VsZiwgcmFuZ2U6IFJhbmdlPHU2ND4pIHsKPj4gKyAgICAg ICAgc2VsZi5yYW5nZSA9IHJhbmdlOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHB1YihjcmF0ZSkg Zm4gY2xlYXJfcmFuZ2UoJm11dCBzZWxmKSB7Cj4+ICsgICAgICAgIC8vIGtlZXAgZW5kIGZvciBw b3NzaWJsZSBjb250aW51YXRpb24gaWYgY2FjaGUgaGFzIGJlZW4gY2xlYXJlZCBiZWNhdXNlCj4+ ICsgICAgICAgIC8vIGl0IHdhcyBmdWxsLCBidXQgZnVydGhlciBjYWNoaW5nIHdvdWxkIGJlIGZp bmUKPj4gKyAgICAgICAgc2VsZi5yYW5nZSA9IHNlbGYucmFuZ2UuZW5kLi5zZWxmLnJhbmdlLmVu ZAo+PiArICAgIH0KPiAKPiBkYW5nZXJvdXMgbmFtZS4uIGNsZWFyIHRvIG1lIGFsd2F5cyBpbXBs aWVzIHJlbW92aW5nIGV2ZXJ5dGhpbmcuLgo+IGVzcGVjaWFsbHkgc2luY2UgdGhlcmUgaXMgbm8g ZG9jIGNvbW1lbnQgb24gaXQgdGhhdCBnaXZlcyBtZSBzdWNoCj4gaW1wb3J0YW50IGluZm9ybWF0 aW9uIGF0IHRoZSBjYWxsIHNpdGUuCj4gCj4gYnV1dXV0LCB0aGFua2Z1bGx5IHRoaXMgaXMgb25s eSBjYWxsZWQgb25jZSwgYW5kIHRoYXQgY2FsbCBpcyBhIGZldwo+IGxpbmVzIGFib3ZlIGluIHRh a2VfYW5kX3Jlc2V0LCBzbyBtYXliZSB3ZSBjYW4ganVzdCBpbmxpbmUgaXQgZm9yIG5vdwo+IGFu ZCBub3QgZXhwb3NlIHRoaXMgdG8gYWNjaWRlbnRzPwoKUmVtb3ZlZCB0aGlzIGFzIHdlbGwgYnkg aW5saW5pbmcgYXMgc3VnZ2VzdGVkLgoKPiAKPj4gKwo+PiArICAgIHB1YihjcmF0ZSkgZm4gdHJ5 X2V4dGVuZF9yYW5nZSgmbXV0IHNlbGYsIHJhbmdlOiBSYW5nZTx1NjQ+KSAtPiBib29sIHsKPj4g KyAgICAgICAgaWYgc2VsZi5yYW5nZS5lbmQgPT0gMCB7Cj4+ICsgICAgICAgICAgICAvLyBpbml0 aWFsaXplIGZpcnN0IHJhbmdlIHRvIHN0YXJ0IGFuZCBlbmQgd2l0aCBzdGFydCBvZiBuZXcgcmFu Z2UKPj4gKyAgICAgICAgICAgIHNlbGYucmFuZ2Uuc3RhcnQgPSByYW5nZS5zdGFydDsKPj4gKyAg ICAgICAgICAgIHNlbGYucmFuZ2UuZW5kID0gcmFuZ2Uuc3RhcnQ7Cj4+ICsgICAgICAgIH0KPj4g Kwo+PiArICAgICAgICAvLyByYW5nZSBjb250aW51ZWQsIHVwZGF0ZSBlbmQKPj4gKyAgICAgICAg aWYgc2VsZi5yYW5nZS5lbmQgPT0gcmFuZ2Uuc3RhcnQgewo+PiArICAgICAgICAgICAgc2VsZi5y YW5nZS5lbmQgPSByYW5nZS5lbmQ7Cj4+ICsgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4gKyAg ICAgICAgfQo+PiArCj4+ICsgICAgICAgIGZhbHNlCj4+ICsgICAgfQo+PiArCj4+ICsgICAgcHVi KGNyYXRlKSBmbiB0YWtlX2xhc3RfY2h1bmsoJm11dCBzZWxmKSAtPiBPcHRpb248UmV1c2FibGVE eW5hbWljRW50cnk+IHsKPj4gKyAgICAgICAgc2VsZi5sYXN0X2NodW5rLnRha2UoKQo+PiArICAg IH0KPj4gKwo+PiArICAgIHB1YihjcmF0ZSkgZm4gdXBkYXRlX2xhc3RfY2h1bmsoJm11dCBzZWxm LCBjaHVuazogT3B0aW9uPFJldXNhYmxlRHluYW1pY0VudHJ5Pikgewo+PiArICAgICAgICBzZWxm Lmxhc3RfY2h1bmsgPSBjaHVuazsKPj4gKyAgICB9Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9wYnMt Y2xpZW50L3NyYy9weGFyL21vZC5ycyBiL3Bicy1jbGllbnQvc3JjL3B4YXIvbW9kLnJzCj4+IGlu ZGV4IDUyNDhhMTk1Ni4uMzM0NzU5ZGY2IDEwMDY0NAo+PiAtLS0gYS9wYnMtY2xpZW50L3NyYy9w eGFyL21vZC5ycwo+PiArKysgYi9wYnMtY2xpZW50L3NyYy9weGFyL21vZC5ycwo+PiBAQCAtNTAs NiArNTAsNyBAQAo+PiAgIHB1YihjcmF0ZSkgbW9kIGNyZWF0ZTsKPj4gICBwdWIoY3JhdGUpIG1v ZCBkaXJfc3RhY2s7Cj4+ICAgcHViKGNyYXRlKSBtb2QgZXh0cmFjdDsKPj4gK3B1YihjcmF0ZSkg bW9kIGxvb2tfYWhlYWRfY2FjaGU7Cj4+ICAgcHViKGNyYXRlKSBtb2QgbWV0YWRhdGE7Cj4+ICAg cHViKGNyYXRlKSBtb2QgdG9vbHM7Cj4+ICAgCj4+IC0tIAo+PiAyLjM5LjIKPj4KPj4KPj4KPj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gcGJzLWRl dmVsIG1haWxpbmcgbGlzdAo+PiBwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPj4gaHR0cHM6 Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCj4+ Cj4+Cj4+Cj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiBwYnMtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3gu Y29tCj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v cGJzLWRldmVsCj4gCj4gCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3gu Y29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bi cy1kZXZlbAo=