From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 37A201FF183 for ; Wed, 16 Jul 2025 14:12:59 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id CD964E44E; Wed, 16 Jul 2025 14:14:04 +0200 (CEST) Message-ID: <6ea168b4-0e11-4273-bfbb-cadb42fca218@proxmox.com> Date: Wed, 16 Jul 2025 14:14:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Christian Ebner , Proxmox Backup Server development discussion References: <20250604123054.87007-1-h.laimer@proxmox.com> <20250604123054.87007-4-h.laimer@proxmox.com> <0c0ec7a8-993c-46f7-9daa-6f02335dd26e@proxmox.com> Content-Language: en-US From: Hannes Laimer In-Reply-To: <0c0ec7a8-993c-46f7-9daa-6f02335dd26e@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.023 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_MSPIKE_H2 0.001 Average reputation (+2) 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: [pbs-devel] [PATCH proxmox-backup v3 3/7] api: admin: run configured sync jobs when a datastore is mounted 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" CgpPbiAwNC4wNy4yNSAxMzozMCwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+IGEgZmV3IGNvbW1l bnRzIGlubGluZS4KPiAKPiBPbiA2LzQvMjUgMTQ6MzAsIEhhbm5lcyBMYWltZXIgd3JvdGU6Cj4+ IFdoZW4gYSBkYXRhc3RvcmUgaXMgbW91bnRlZCwgc3Bhd24gYSBuZXcgdGFzayB0byBydW4gYWxs IHN5bmMgam9icwo+PiBtYXJrZWQgd2l0aCBgcnVuLW9uLW1vdW50YC4gVGhlc2Ugam9icyBydW4g c2VxdWVudGlhbGx5IGFuZCBpbmNsdWRlCj4+IGFueSBqb2IgZm9yIHdoaWNoIHRoZSBtb3VudGVk IGRhdGFzdG9yZSBpczoKPj4KPj4gLSBUaGUgc291cmNlIG9yIHRhcmdldCBpbiBhIGxvY2FsIHB1 c2gvcHVsbCBqb2IKPj4gLSBUaGUgc291cmNlIGluIGEgcHVzaCBqb2IgdG8gYSByZW1vdGUgZGF0 YXN0b3JlCj4+IC0gVGhlIHRhcmdldCBpbiBhIHB1bGwgam9iIGZyb20gYSByZW1vdGUgZGF0YXN0 b3JlCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEhhbm5lcyBMYWltZXIgPGgubGFpbWVyQHByb3htb3gu Y29tPgo+PiAtLS0KPj4gwqAgc3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzIHwgMTA2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgMTAw IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9zcmMvYXBp Mi9hZG1pbi9kYXRhc3RvcmUucnMgYi9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKPj4gaW5k ZXggMzkyNDk0NDguLjY4YmIyYTFmIDEwMDY0NAo+PiAtLS0gYS9zcmMvYXBpMi9hZG1pbi9kYXRh c3RvcmUucnMKPj4gKysrIGIvc3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzCj4+IEBAIC00Miw4 ICs0Miw4IEBAIHVzZSBwYnNfYXBpX3R5cGVzOjp7Cj4+IMKgwqDCoMKgwqAgRGF0YVN0b3JlQ29u ZmlnLCBEYXRhU3RvcmVMaXN0SXRlbSwgRGF0YVN0b3JlTW91bnRTdGF0dXMsIAo+PiBEYXRhU3Rv cmVTdGF0dXMsCj4+IMKgwqDCoMKgwqAgR2FyYmFnZUNvbGxlY3Rpb25Kb2JTdGF0dXMsIEdyb3Vw TGlzdEl0ZW0sIEpvYlNjaGVkdWxlU3RhdHVzLCAKPj4gS2VlcE9wdGlvbnMsIE1haW50ZW5hbmNl TW9kZSwKPj4gwqDCoMKgwqDCoCBNYWludGVuYW5jZVR5cGUsIE9wZXJhdGlvbiwgUHJ1bmVKb2JP cHRpb25zLCBTbmFwc2hvdExpc3RJdGVtLCAKPj4gU25hcHNob3RWZXJpZnlTdGF0ZSwKPj4gLcKg wqDCoCBCQUNLVVBfQVJDSElWRV9OQU1FX1NDSEVNQSwgQkFDS1VQX0lEX1NDSEVNQSwgCj4+IEJB Q0tVUF9OQU1FU1BBQ0VfU0NIRU1BLCBCQUNLVVBfVElNRV9TQ0hFTUEsCj4+IC3CoMKgwqAgQkFD S1VQX1RZUEVfU0NIRU1BLCBDQVRBTE9HX05BTUUsIENMSUVOVF9MT0dfQkxPQl9OQU1FLCAKPj4g REFUQVNUT1JFX1NDSEVNQSwKPj4gK8KgwqDCoCBTeW5jSm9iQ29uZmlnLCBCQUNLVVBfQVJDSElW RV9OQU1FX1NDSEVNQSwgQkFDS1VQX0lEX1NDSEVNQSwgCj4+IEJBQ0tVUF9OQU1FU1BBQ0VfU0NI RU1BLAo+PiArwqDCoMKgIEJBQ0tVUF9USU1FX1NDSEVNQSwgQkFDS1VQX1RZUEVfU0NIRU1BLCBD QVRBTE9HX05BTUUsIAo+PiBDTElFTlRfTE9HX0JMT0JfTkFNRSwgREFUQVNUT1JFX1NDSEVNQSwK Pj4gwqDCoMKgwqDCoCBJR05PUkVfVkVSSUZJRURfQkFDS1VQU19TQ0hFTUEsIE1BTklGRVNUX0JM T0JfTkFNRSwgCj4+IE1BWF9OQU1FU1BBQ0VfREVQVEgsIE5TX01BWF9ERVBUSF9TQ0hFTUEsCj4+ IMKgwqDCoMKgwqAgUFJJVl9EQVRBU1RPUkVfQVVESVQsIFBSSVZfREFUQVNUT1JFX0JBQ0tVUCwg Cj4+IFBSSVZfREFUQVNUT1JFX01PRElGWSwgUFJJVl9EQVRBU1RPUkVfUFJVTkUsCj4+IMKgwqDC oMKgwqAgUFJJVl9EQVRBU1RPUkVfUkVBRCwgUFJJVl9EQVRBU1RPUkVfVkVSSUZZLCBQUklWX1NZ U19NT0RJRlksIAo+PiBVUElELCBVUElEX1NDSEVNQSwKPj4gQEAgLTY2LDcgKzY2LDcgQEAgdXNl IHBic19kYXRhc3RvcmU6OnsKPj4gwqDCoMKgwqDCoCBEYXRhU3RvcmUsIExvY2FsQ2h1bmtSZWFk ZXIsIFN0b3JlUHJvZ3Jlc3MsCj4+IMKgIH07Cj4+IMKgIHVzZSBwYnNfdG9vbHM6Ompzb246OnJl cXVpcmVkX3N0cmluZ19wYXJhbTsKPj4gLXVzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjp7Zm9ybWF0 dGVyLCBXb3JrZXJUYXNrfTsKPj4gK3VzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjp7Zm9ybWF0dGVy LCB3b3JrZXJfaXNfYWN0aXZlLCBXb3JrZXJUYXNrfTsKPj4gwqAgdXNlIGNyYXRlOjphcGkyOjpi YWNrdXA6Om9wdGlvbmFsX25zX3BhcmFtOwo+PiDCoCB1c2UgY3JhdGU6OmFwaTI6Om5vZGU6OnJy ZDo6Y3JlYXRlX3ZhbHVlX2Zyb21fcnJkOwo+PiBAQCAtMjUxMCw2ICsyNTEwLDYzIEBAIHB1YiBm biBkb19tb3VudF9kZXZpY2UoZGF0YXN0b3JlOiAKPj4gRGF0YVN0b3JlQ29uZmlnKSAtPiBSZXN1 bHQ8KCksIEVycm9yPiB7Cj4+IMKgwqDCoMKgwqAgT2soKCkpCj4+IMKgIH0KPj4gK2FzeW5jIGZu IGRvX3N5bmNfam9icygKPj4gK8KgwqDCoCBqb2JzX3RvX3J1bjogVmVjPFN5bmNKb2JDb25maWc+ LAo+PiArwqDCoMKgIHdvcmtlcjogQXJjPFdvcmtlclRhc2s+LAo+PiArKSAtPiBSZXN1bHQ8KCks IEVycm9yPiB7Cj4+ICvCoMKgwqAgbGV0IGNvdW50ID0gam9ic190b19ydW4ubGVuKCk7Cj4+ICvC oMKgwqAgaW5mbyEoCj4+ICvCoMKgwqDCoMKgwqDCoCAid2lsbCBydW4ge30gc3luYyBqb2JzOiB7 fSIsCj4+ICvCoMKgwqDCoMKgwqDCoCBjb3VudCwKPiAKPiBuaXQsIGBjb3VudGAgY2FuIGJlIGlu LWxpbmVkCj4gCj4+ICvCoMKgwqDCoMKgwqDCoCBqb2JzX3RvX3J1bgo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAuaXRlcigpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5tYXAofGpvYnwg am9iLmlkLmFzX3N0cigpKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuY29sbGVjdDo6PFZl Yzwmc3RyPj4oKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuam9pbigiLCAiKQo+PiArwqDC oMKgICk7Cj4+ICsKPj4gK8KgwqDCoCBmb3IgKGksIGpvYl9jb25maWcpIGluIGpvYnNfdG9fcnVu LmludG9faXRlcigpLmVudW1lcmF0ZSgpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIHdvcmtlci5h Ym9ydF9yZXF1ZXN0ZWQoKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhaWwhKCJhYm9y dGVkIGR1ZSB0byB1c2VyIHJlcXVlc3QiKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDC oMKgwqDCoMKgIGxldCBqb2JfaWQgPSAmam9iX2NvbmZpZy5pZDsKPj4gK8KgwqDCoMKgwqDCoMKg IGxldCBjbGllbnQgPSBjcmF0ZTo6Y2xpZW50X2hlbHBlcnM6OmNvbm5lY3RfdG9fbG9jYWxob3N0 KCk/Owo+IAo+IG5pdDogQWRkaW5nIHNvbWUgZXJyb3IgY29udGV4dCBoZXJlIHdvdWxkIGJlIGdv b2Qgc28gaXQgaXMgY2xlYXIgdGhhdCBhbiAKPiBldmVudHVhbCBjb25uZWN0aW9uIGVycm9yIHN0 ZW1zIGZyb20gdGhlIGNsaWVudC4KPiAKPiBuaXQ6IEZ1cnRoZXIsIHRoZSB3aG9sZSBjbGllbnQg aW5zdGFudGlhdGlvbiBjYW4gYmUgbW92ZWQgb3V0c2lkZSBvZiB0aGUgCj4gc3luYyBqb2JzIGxv b3AsIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgcmVjb25zdHJ1Y3RlZCBmb3IgZWFjaCBsb29w Lgo+IAo+PiArwqDCoMKgwqDCoMKgwqAgbGV0IE9rKHJlc3VsdCkgPSBjbGllbnQKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLnBvc3QoZm9ybWF0ISgiYXBpMi9qc29uL2FkbWluL3N5bmMve2pv Yl9pZH0vIAo+PiBydW4iKS5hc19zdHIoKSwgTm9uZSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLmF3YWl0Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgd2FybiEoInVuYWJsZSB0byBzdGFydCBzeW5jIGpvYiB7am9iX2lkfSIpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+ICvC oMKgwqDCoMKgwqDCoCBpbmZvISgiW3t9L3tjb3VudH1dIHN0YXJ0aW5nICd7am9iX2lkfScuLi4i LCBpICsgMSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBsZXQgU29tZSh1cGlkX3N0cikgPSAmcmVzdWx0 WyJkYXRhIl0uYXNfc3RyKCkgZWxzZSB7Cj4gCj4gbml0OiB0aGVyZSBpcyBubyBuZWVkIGZvciB0 aGUgZGVyZWZlcmVuY2UsIGFzX3N0cigpIGFscmVhZHkgdGFrZXMgY2FyZSAKPiBvZiB0aGF0Cj4g Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdhcm4hKAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJjb3VsZCBub3QgcmVjaWV2ZSBVUElEIG9mIHN0YXJ0ZWQgam9iIChtYXkg YmUgCj4+IHJ1bm5pZywganVzdCBjYW4ndCB0cmFjayBpdCBoZXJlKSIKPiAKPiBuaXQ6IDIgdHlw b3M6IHNob3VsZCBiZSBgcmVjZWl2ZWAgYW5kIGBydW5uaW5nYAo+IAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8Kg wqDCoMKgwqDCoMKgIH07Cj4+ICvCoMKgwqDCoMKgwqDCoCBsZXQgdXBpZDogVVBJRCA9IHVwaWRf c3RyLnBhcnNlKCk/Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBsZXQgc2xlZXBfZHVyYXRpb24g PSBjb3JlOjp0aW1lOjpEdXJhdGlvbjo6bmV3KDEsIDApOwo+IAo+IG5pdDogdGhpcyBjb3VsZCB1 c2UgYER1cmF0aW9uOjpmcm9tX3NlY3MoMSlgIGluc3RlYWQsIHdoaWNoIGluaGVyZW50bHkgCj4g ZG9jdW1lbnRzIHRoZSBhcmd1bWVudHMgdGltZXVuaXQgc2NhbGUKPiAKPj4gK8KgwqDCoMKgwqDC oMKgIGxldCBtdXQgc3RhdHVzX3JldHJpZXMgPSAxOwo+PiArwqDCoMKgwqDCoMKgwqAgbG9vcCB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIHdvcmtlci5hYm9ydF9yZXF1ZXN0ZWQoKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmFpbCEoImFib3J0ZWQgZHVlIHRv IHVzZXIgcmVxdWVzdCwgYWxyZWFkeSBzdGFydGVkIAo+PiBqb2Igd2lsbCBmaW5pc2giKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXRj aCB3b3JrZXJfaXNfYWN0aXZlKCZ1cGlkKS5hd2FpdCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgT2sodHJ1ZSkgPT4gdG9raW86OnRpbWU6OnNsZWVwKHNsZWVwX2R1cmF0aW9u KS5hd2FpdCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBPayhmYWxzZSkgPT4g YnJlYWssCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRXJyKF8pIGlmIHN0YXR1 c19yZXRyaWVzID4gMyA9PiBicmVhaywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBFcnIoZXJyKSA9PiB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB3YXJuISgiY291bGQgbm90IGdldCBqb2Igc3RhdHVzOiB7ZXJyfSAoe30vMykiLCAKPj4gc3Rh dHVzX3JldHJpZXMpOwo+IAo+IG5pdDogdGhlIG1heCByZXRyeSBjb3VudCBjb3VsZCBiZSBkZWZp bmVkIGFzIGNvbnN0YW50IGFuZCB0aGUgc2FtZSAKPiBjb25zdGFudCB1c2VkIGFsc28gZm9yIHRo ZSB3YXJuaW5nIG91dHB1dCwgdG8gZ3VhcmFudGVlIGNvbnNpc3RlbmN5LiAKPiBGdXJ0aGVyLCBg c3RhdHVzX3JldHJpZXNgIGNhbiBiZSBpbi1saW5lZC4KPiAKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0YXR1c19yZXRyaWVzICs9IDE7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvC oMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIE9rKCgpKQo+PiArfQo+PiAr Cj4+IMKgICNbYXBpKAo+PiDCoMKgwqDCoMKgIHByb3RlY3RlZDogdHJ1ZSwKPj4gwqDCoMKgwqDC oCBpbnB1dDogewo+PiBAQCAtMjU0MSwxMiArMjU5OCw0OSBAQCBwdWIgZm4gbW91bnQoc3RvcmU6 IFN0cmluZywgcnBjZW52OiAmbXV0IGR5biAKPj4gUnBjRW52aXJvbm1lbnQpIC0+IFJlc3VsdDxW YWx1ZSwgRXIKPj4gwqDCoMKgwqDCoCBsZXQgYXV0aF9pZDogQXV0aGlkID0gcnBjZW52LmdldF9h dXRoX2lkKCkudW53cmFwKCkucGFyc2UoKT87Cj4+IMKgwqDCoMKgwqAgbGV0IHRvX3N0ZG91dCA9 IHJwY2Vudi5lbnZfdHlwZSgpID09IFJwY0Vudmlyb25tZW50VHlwZTo6Q0xJOwo+PiAtwqDCoMKg IGxldCB1cGlkID0gV29ya2VyVGFzazo6bmV3X3RocmVhZCgKPj4gK8KgwqDCoCBsZXQgdXBpZCA9 IFdvcmtlclRhc2s6OnNwYXduKAo+IAo+IHF1ZXN0aW9uOiBhbHJlYWR5IG1lbnRpb25lZCBsYXN0 IHRpbWUsIGJ1dCBzdGlsbCBub3Qgc3VyZSBpZiBJIAo+IHVuZGVyc3RhbmQgd2h5IHNwYXduKCkg aW5zdGVhZCBvZiBuZXdfdGhyZWFkKCkgaXMgb2theSBoZXJlLiBBZnRlciBhbGwgCj4gdGhpcyB3 b3VsZCBleGVjdXRlIHRoZSB3aG9sZSBtb3VudCBjb2RlIG9uIHRoZSBjdXJyZW50IHRocmVhZCwg YW5kIAo+IHBvdGVudGlhbGx5IGJsb2NrIHRoYXQ/IFNvIHNob3VsZG4ndCBkb19tb3VudF9kZXZp Y2UoKSBiZSBub24tYmxvY2tpbmcgCj4gZm9yIHRoaXMgY2hhbmdlIHRvIGJlIG9rYXk/Cj4gCgph Y3R1YWxseSB5b3UgYXJlIHJpZ2h0LiBCdXQgd2Ugc3RpbGwgbmVlZCB0aGUgdG9raW8gcnVudGlt ZSBjb250ZXh0LCBhbmQKd2UgZG9uJ3QgZ2V0IHRoYXQgd2l0aCBuZXdfdGhyZWFkKCksIEkgdGhp bmsganVzdCB3cmFwcGluZyB0aGUgY2FsbCB0bwp0aGUgbW91bnQgZnVuY3Rpb24gaW4gYSAuc3Bh d25fYmxvY2tpbmcofHwgLi4uKSBzaG91bGQgc29sdmUgdGhpcy4gV2lsbApmaXggdGhpcyBpbiB2 NAoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgICJtb3VudC1kZXZpY2UiLAo+PiAtwqDCoMKgwqDCoMKg wqAgU29tZShzdG9yZSksCj4+ICvCoMKgwqDCoMKgwqDCoCBTb21lKHN0b3JlLmNsb25lKCkpLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgYXV0aF9pZC50b19zdHJpbmcoKSwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIHRvX3N0ZG91dCwKPj4gLcKgwqDCoMKgwqDCoMKgIG1vdmUgfF93b3JrZXJ8IGRvX21v dW50X2RldmljZShkYXRhc3RvcmUpLAo+PiArwqDCoMKgwqDCoMKgwqAgbW92ZSB8X3dvcmtlcnwg YXN5bmMgbW92ZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRvX21vdW50X2RldmljZShk YXRhc3RvcmUuY2xvbmUoKSk/Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZXQgT2soKHN5 bmNfY29uZmlnLCBfZGlnZXN0KSkgPSAKPj4gcGJzX2NvbmZpZzo6c3luYzo6Y29uZmlnKCkgZWxz ZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2FybiEoInVuYWJsZSB0byBy ZWFkIHN5bmMgam9iIGNvbmZpZywgd29uJ3QgcnVuIGFueSAKPj4gc3luYyBqb2JzIik7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE9rKCgpKTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGV0IE9rKGxpc3Qp ID0gc3luY19jb25maWcuY29udmVydF90b190eXBlZF9hcnJheSgic3luYyIpIAo+PiBlbHNlIHsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3YXJuISgidW5hYmxlIHRvIHBhcnNl IHN5bmMgam9iIGNvbmZpZywgd29uJ3QgcnVuIGFueSAKPj4gc3luYyBqb2JzIik7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE9rKCgpKTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGV0IGpvYnNfdG9fcnVu OiBWZWM8U3luY0pvYkNvbmZpZz4gPSBsaXN0Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLmludG9faXRlcigpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmZp bHRlcih8am9iOiAmU3luY0pvYkNvbmZpZ3wgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLy8gYWRkIGpvYiBpZmYgKHJ1bm5pbmcgb24gbW91bnQgaXMgZW5hYmxl ZCBhbmQpIAo+PiBhbnkgb2YgdGhlc2UgYXBwbHkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8vwqDCoCAtIHRoZSBqb2JzIGlzIGxvY2FsIGFuZCB3ZSBhcmUgc291 cmNlIG9yIHRhcmdldAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ly/CoMKgIC0gd2UgYXJlIHRoZSBzb3VyY2Ugb2YgYSBwdXNoIHRvIGEgcmVtb3RlCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvL8KgwqAgLSB3ZSBhcmUgdGhlIHRh cmdldCBvZiBhIHB1bGwgZnJvbSBhIHJlbW90ZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLy8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC8vIGBqb2Iuc3RvcmUgPT0gZGF0YXN0b3JlLm5hbWVgIGlmZiB3ZSBhcmUgdGhlIAo+PiB0 YXJnZXQgZm9yIHB1bGwgZnJvbSByZW1vdGUgb3Igd2UKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8vIGFyZSB0aGUgc291cmNlIGZvciBwdXNoIHRvIHJlbW90ZSwg dGhlcmVmb3JlIAo+PiB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGZvciB0aGUKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIGRpcmVjdGlvbiBvZiB0aGUgam9iLgo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgam9iLnJ1bl9vbl9tb3Vu dC51bndyYXBfb3IoZmFsc2UpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICYmIChqb2IucmVtb3RlLmlzX25vbmUoKSAmJiBqb2IucmVtb3RlX3N0b3Jl IAo+PiA9PSBkYXRhc3RvcmUubmFtZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHx8IGpvYi5zdG9yZSA9PSBkYXRhc3RvcmUubmFtZSkK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9KQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC5jb2xsZWN0KCk7Cj4gCj4gbm90ZTogaXQgd291bGQgbWFrZSBzZW5z ZSB0byBzb3J0IHRoZSBsaXN0IG9mIHN5bmMgam9icyBieSB0aGVpciBzeW5jIGlkIAo+IGhlcmUs IHNvIHRoYXQgdGhlIGV4ZWN1dGlvbiBvcmRlcmluZyBjYW4gYmUgaW5mZXJyZWQuIFRoaXMgc2hv dWxkIGJlIAo+IGRvY3VtZW50ZWQgaW4gdGhlIHVzZXIgZG9jdW1lbnRhdGlvbiBhcyB3ZWxsLgo+ ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICFqb2JzX3RvX3J1bi5pc19lbXB0eSgpIHsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmZvISgic3RhcnRpbmcge30gc3lu YyBqb2JzIiwgam9ic190b19ydW4ubGVuKCkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGxldCBfID0gV29ya2VyVGFzazo6c3Bhd24oCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAibW91bnQtc3luYy1qb2JzIiwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvbWUoc3RvcmUpLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXV0aF9pZC50b19zdHJpbmcoKSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW92ZSB8d29ya2VyfCBhc3luYyBtb3ZlIAo+PiB7IGRv X3N5bmNfam9icyhqb2JzX3RvX3J1biwgd29ya2VyKS5hd2FpdCB9LAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgT2soKCkpCj4+ICvCoMKgwqDCoMKgwqDCoCB9LAo+PiDCoMKg wqDCoMKgICk/Owo+PiDCoMKgwqDCoMKgIE9rKGpzb24hKHVwaWQpKQo+IAoKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBs aXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29t L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK