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 0A55E1FF15E for ; Fri, 20 Sep 2024 16:27:48 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 569DA375F9; Fri, 20 Sep 2024 16:27:58 +0200 (CEST) Message-ID: <97f23935-570e-4fb0-a01f-b26a02230acc@proxmox.com> Date: Fri, 20 Sep 2024 16:27:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Daniel Kral To: Proxmox VE development discussion , Filip Schauer References: <20240918144953.130780-1-f.schauer@proxmox.com> <20240918144953.130780-4-f.schauer@proxmox.com> Content-Language: en-US In-Reply-To: <20240918144953.130780-4-f.schauer@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.003 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH v4 storage 3/6] api: content: support moving backups between path based storages X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" T24gOS8xOC8yNCAxNjo0OSwgRmlsaXAgU2NoYXVlciB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBG aWxpcCBTY2hhdWVyIDxmLnNjaGF1ZXJAcHJveG1veC5jb20+CgpUaGUgY29tbWl0IG1lc3NhZ2Ug d291bGQgYmVuZWZpdCB0aGF0ICdiYWNrdXArc2l6ZScgYXMgYW4gaW1wb3J0L2V4cG9ydCAKZm9y bWF0IHdhcyBhZGRlZCBoZXJlIGFuZCB3aGVyZSB0aGUgZnVuY3Rpb25hbGl0eSB3YXMgYWRkZWQg dG8gKGkuZS4gCnB2ZXNtIG1vdmUsIHB2ZXNtIGltcG9ydCwgcHZlc20gZXhwb3J0KS4KCj4gLS0t Cj4gICBzcmMvUFZFL0FQSTIvU3RvcmFnZS9Db250ZW50LnBtIHwgNDEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0KPiAgIHNyYy9QVkUvU3RvcmFnZS5wbSAgICAgICAgICAgICAgfCAx MCArKysrKysrLQo+ICAgc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbSAgICAgICB8IDQyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNl cnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9zcmMvUFZFL0FQSTIv U3RvcmFnZS9Db250ZW50LnBtIGIvc3JjL1BWRS9BUEkyL1N0b3JhZ2UvQ29udGVudC5wbQo+IGlu ZGV4IDY4MTllY2EuLjRhOGZlMzMgMTAwNjQ0Cj4gLS0tIGEvc3JjL1BWRS9BUEkyL1N0b3JhZ2Uv Q29udGVudC5wbQo+ICsrKyBiL3NyYy9QVkUvQVBJMi9TdG9yYWdlL0NvbnRlbnQucG0KPiBAQCAt NTA2LDEwICs1MDYsMTcgQEAgc3ViIHZvbHVtZV9tb3ZlIHsKPiAgIAo+ICAgICAgIGRpZSAidXNl IHBjdCBtb3ZlLXZvbHVtZSBvciBxbSBkaXNrIG1vdmVcbiIgaWYgJHZ0eXBlIGVxICdpbWFnZXMn IHx8ICR2dHlwZSBlcSAncm9vdGRpcic7Cj4gICAgICAgZGllICJtb3Zpbmcgdm9sdW1lIG9mIHR5 cGUgJyR2dHlwZScgbm90IGltcGxlbWVudGVkXG4iCj4gLQlpZiAoJHZ0eXBlIG5lICdpc28nICYm ICR2dHlwZSBuZSAndnp0bXBsJyAmJiAkdnR5cGUgbmUgJ3NuaXBwZXRzJyk7Cj4gKwlpZiAoJHZ0 eXBlIG5lICdpc28nICYmICR2dHlwZSBuZSAndnp0bXBsJyAmJiAkdnR5cGUgbmUgJ3NuaXBwZXRz JyAmJiAkdnR5cGUgbmUgJ2JhY2t1cCcpOwo+ICAgCj4gICAgICAgUFZFOjpTdG9yYWdlOjphY3Rp dmF0ZV9zdG9yYWdlKCRjZmcsICRzb3VyY2Vfc3RvcmVpZCk7Cj4gICAKPiArICAgIGlmICgkdnR5 cGUgZXEgJ2JhY2t1cCcpIHsKPiArCW15ICRwcm90ZWN0ZWQgPSAkc291cmNlX3BsdWdpbi0+Z2V0 X3ZvbHVtZV9hdHRyaWJ1dGUoCj4gKwkgICAgJHNvdXJjZV9zY2ZnLCAkc291cmNlX3N0b3JlaWQs ICRzb3VyY2Vfdm9sbmFtZSwgJ3Byb3RlY3RlZCcpOwo+ICsKPiArCWRpZSAiY2Fubm90IGRlbGV0 ZSBwcm90ZWN0ZWQgYmFja3VwXG4iIGlmICRkZWxldGUgJiYgJHByb3RlY3RlZDsKPiArICAgIH0K PiArCj4gICAgICAgZGllICJleHBlY3RlZCBzdG9yYWdlICckc291cmNlX3N0b3JlaWQnIHRvIGJl IHBhdGggYmFzZWRcbiIgaWYgISRzb3VyY2Vfc2NmZy0+e3BhdGh9Owo+ICAgICAgIG15ICRzb3Vy Y2VfcGF0aCA9ICRzb3VyY2VfcGx1Z2luLT5wYXRoKCRzb3VyY2Vfc2NmZywgJHNvdXJjZV92b2xu YW1lLCAkc291cmNlX3N0b3JlaWQpOwo+ICAgICAgIGRpZSAiJHNvdXJjZV9wYXRoIGRvZXMgbm90 IGV4aXN0IiBpZiAoIS1lICRzb3VyY2VfcGF0aCk7Cj4gQEAgLTUyNSw2ICs1MzIsMzIgQEAgc3Vi IHZvbHVtZV9tb3ZlIHsKPiAgICAgICBteSBAY3JlYXRlZF9maWxlcyA9ICgpOwo+ICAgCj4gICAg ICAgZXZhbCB7Cj4gKwlpZiAoJHZ0eXBlIGVxICdiYWNrdXAnKSB7Cj4gKwkgICAgbXkgJHRhcmdl dF9kaXJuYW1lID0gZGlybmFtZSgkdGFyZ2V0X3BhdGgpOwo+ICsJICAgIG15ICRpbmZvID0gUFZF OjpTdG9yYWdlOjphcmNoaXZlX2luZm8oJHNvdXJjZV9wYXRoKTsKPiArCj4gKwkgICAgZm9yIG15 ICR0eXBlIChxdyhsb2cgbm90ZXMpKSB7Cj4gKwkJbXkgJGZpbGVuYW1lID0gJGluZm8tPnsiJHt0 eXBlfWZpbGVuYW1lIn0gb3IgbmV4dDsKPiArCQlteSAkYXV4aWxpYXJ5X3NvdXJjZV9wYXRoID0g IiRzb3VyY2VfZGlybmFtZS8kZmlsZW5hbWUiOwo+ICsJCW15ICRhdXhpbGlhcnlfdGFyZ2V0X3Bh dGggPSAiJHRhcmdldF9kaXJuYW1lLyRmaWxlbmFtZSI7Cj4gKwkJaWYgKC1lICRhdXhpbGlhcnlf c291cmNlX3BhdGgpIHsKPiArCQkgICAgY29weSgkYXV4aWxpYXJ5X3NvdXJjZV9wYXRoLCAkYXV4 aWxpYXJ5X3RhcmdldF9wYXRoKQo+ICsJCQlvciBkaWUgImNvcHlpbmcgYmFja3VwICR0eXBlIGZp bGUgZmFpbGVkOiAkISI7Cj4gKwkJICAgIHB1c2goQGNyZWF0ZWRfZmlsZXMsICRhdXhpbGlhcnlf dGFyZ2V0X3BhdGgpOwo+ICsJCX0KPiArCSAgICB9Cj4gKwo+ICsJICAgIG15ICRwcm90ZWN0ZWQg PSAkc291cmNlX3BsdWdpbi0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoCj4gKwkJJHNvdXJjZV9zY2Zn LCAkc291cmNlX3N0b3JlaWQsICRzb3VyY2Vfdm9sbmFtZSwgJ3Byb3RlY3RlZCcpOwo+ICsKPiAr CSAgICBpZiAoJHByb3RlY3RlZCkgewo+ICsJCW15ICRwcm90ZWN0aW9uX3RhcmdldF9wYXRoID0g UFZFOjpTdG9yYWdlOjpwcm90ZWN0aW9uX2ZpbGVfcGF0aCgkdGFyZ2V0X3BhdGgpOwo+ICsJCSR0 YXJnZXRfcGx1Z2luLT51cGRhdGVfdm9sdW1lX2F0dHJpYnV0ZSgKPiArCQkgICAgJHRhcmdldF9z Y2ZnLCAkdGFyZ2V0X3N0b3JlaWQsICRzb3VyY2Vfdm9sbmFtZSwgJ3Byb3RlY3RlZCcsIDEpOwo+ ICsJCXB1c2goQGNyZWF0ZWRfZmlsZXMsICRwcm90ZWN0aW9uX3RhcmdldF9wYXRoKTsKPiArCSAg ICB9Cj4gKwl9Cj4gKwo+ICAgCWlmICgkZGVsZXRlKSB7Cj4gICAJICAgIG1vdmUoJHNvdXJjZV9w YXRoLCAkdGFyZ2V0X3BhdGgpIG9yIGRpZSAiZmFpbGVkIHRvIG1vdmUgJHZ0eXBlOiAkISI7Cj4g ICAJfSBlbHNlIHsKPiBAQCAtNjAxLDcgKzYzNCw3IEBAIF9fUEFDS0FHRV9fLT5yZWdpc3Rlcl9t ZXRob2QgKHsKPiAgIAo+ICAgCW15ICRjZmcgPSBQVkU6OlN0b3JhZ2U6OmNvbmZpZygpOwo+ICAg Cj4gLQlteSAoJHZ0eXBlKSA9IFBWRTo6U3RvcmFnZTo6cGFyc2Vfdm9sbmFtZSgkY2ZnLCAkc3Jj X3ZvbGlkKTsKPiArCW15ICgkdnR5cGUsIHVuZGVmLCAkb3duZXJ2bSkgPSBQVkU6OlN0b3JhZ2U6 OnBhcnNlX3ZvbG5hbWUoJGNmZywgJHNyY192b2xpZCk7Cj4gICAJZGllICJ1c2UgcGN0IG1vdmUt dm9sdW1lIG9yIHFtIGRpc2sgbW92ZSIgaWYgJHZ0eXBlIGVxICdpbWFnZXMnIHx8ICR2dHlwZSBl cSAncm9vdGRpcic7Cj4gICAKPiAgIAlteSAkcnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6 Z2V0KCk7Cj4gQEAgLTYxNSw2ICs2NDgsMTAgQEAgX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhv ZCAoewo+ICAgCSAgICAkcnBjZW52LT5jaGVjaygkdXNlciwgIi9zdG9yYWdlLyRkc3Rfc3RvcmVp ZCIsIFsiRGF0YXN0b3JlLkFsbG9jYXRlU3BhY2UiXSk7Cj4gICAJfQo+ICAgCj4gKwlpZiAoJHZ0 eXBlIGVxICdiYWNrdXAnICYmICRvd25lcnZtKSB7Cj4gKwkgICAgJHJwY2Vudi0+Y2hlY2soJHVz ZXIsICIvdm1zLyRvd25lcnZtIiwgWydWTS5CYWNrdXAnXSk7Cj4gKwl9Cj4gKwo+ICAgCW15ICR3 b3JrZXIgPSBzdWIgIHsKPiAgIAkgICAgaWYgKCRzcmNfbm9kZSBlcSAkZHN0X25vZGUpIHsKPiAg IAkJdm9sdW1lX21vdmUoJGNmZywgJHNyY192b2xpZCwgJGRzdF9zdG9yZWlkLCAkZGVsZXRlKTsK PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9TdG9yYWdlLnBtIGIvc3JjL1BWRS9TdG9yYWdlLnBtCj4g aW5kZXggNTdiMjAzOC4uMTJmN2IzZiAxMDA3NTUKPiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UucG0K PiArKysgYi9zcmMvUFZFL1N0b3JhZ2UucG0KPiBAQCAtNDgsNyArNDgsMTUgQEAgdXNlIGNvbnN0 YW50IEFQSVZFUiA9PiAxMDsKPiAgICMgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUv bGlidG9vbC9tYW51YWwvaHRtbF9ub2RlL0xpYnRvb2wtdmVyc2lvbmluZy5odG1sCj4gICB1c2Ug Y29uc3RhbnQgQVBJQUdFID0+IDE7Cj4gICAKPiAtb3VyICRLTk9XTl9FWFBPUlRfRk9STUFUUyA9 IFsncmF3K3NpemUnLCAndGFyK3NpemUnLCAncWNvdzIrc2l6ZScsICd2bWRrK3NpemUnLCAnemZz JywgJ2J0cmZzJ107Cj4gK291ciAkS05PV05fRVhQT1JUX0ZPUk1BVFMgPSBbCj4gKyAgICAncmF3 K3NpemUnLAo+ICsgICAgJ3RhcitzaXplJywKPiArICAgICdxY293MitzaXplJywKPiArICAgICd2 bWRrK3NpemUnLAo+ICsgICAgJ3pmcycsCj4gKyAgICAnYnRyZnMnLAo+ICsgICAgJ2JhY2t1cCtz aXplJwo+ICtdOwoKbm90ZTogdGhpcyBpcyBhbHNvIHVzZWQgaW4gYFBWRTo6U3RvcmFnZTo6dm9s dW1lX2V4cG9ydF9zdGFydGAsIHdoaWNoIApzZWVtcyB0byBiZSBvbmx5IHVzZWQgaW4gYFBWRTo6 U3RvcmFnZVR1bm5lbDo6c3RvcmFnZV9taWdyYXRlYCwgYnV0IGFzIApmYXIgYXMgSSBjYW4gdGVs bCB0aGlzIHdvbid0IGFsbG93IGFueSB1bndhbnRlZCBiZWhhdmlvciwgYmVjYXVzZSB0aGUgCmV4 cG9ydCBmb3JtYXQgaXMgbm90IHVzZXItZGVmaW5lZC4KCj4gICAKPiAgICMgbG9hZCBzdGFuZGFy ZCBwbHVnaW5zCj4gICBQVkU6OlN0b3JhZ2U6OkRpclBsdWdpbi0+cmVnaXN0ZXIoKTsKPiBkaWZm IC0tZ2l0IGEvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbSBiL3NyYy9QVkUvU3RvcmFnZS9QbHVn aW4ucG0KPiBpbmRleCA1NzUzNmM2Li5mYzhmZTQwIDEwMDY0NAo+IC0tLSBhL3NyYy9QVkUvU3Rv cmFnZS9QbHVnaW4ucG0KPiArKysgYi9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtCj4gQEAgLTE1 NzksNiArMTU3OSw4IEBAIHN1YiBwcnVuZV9iYWNrdXBzIHsKPiAgICMgICAgIHVucHJpdmlsZWdl ZCBjb250YWluZXIuIEluIG90aGVyIHdvcmRzLCB0aGlzIGlzIGZyb20gdGhlIHJvb3QgdXNlcgo+ ICAgIyAgICAgbmFtZXNwYWNlJ3MgcG9pbnQgb2YgdmlldyB3aXRoIG5vIHVpZC1tYXBwaW5nIGlu IGVmZmVjdC4KPiAgICMgICAgIEFzIHByb2R1Y2VkIHZpYSBgdGFyIC1DIHZtLTEwMC1kaXNrLTEu c3Vidm9sIC1jcGYgVGhlT3V0cHV0RmlsZS5kYXQgLmAKPiArIyAgIGJhY2t1cCtzaXplOiAoYmFj a3VwcyBvbmx5KQo+ICsjICAgICBBIHJhdyBiaW5hcnkgZGF0YSBzdHJlYW0gcHJlZml4ZWQgd2l0 aCBhIHByb3RlY3Rpb24gZmxhZyBhbmQgbm90ZXMuCj4gICAKPiAgICMgUGx1Z2lucyBtYXkgcmV1 c2UgdGhlc2UgaGVscGVycy4gQ2hhbmdlcyB0byB0aGUgaGVhZGVyIGZvcm1hdCBzaG91bGQgYmUK PiAgICMgcmVmbGVjdGVkIGJ5IGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMuCj4g QEAgLTE2MjcsNiArMTYyOSwxNiBAQCBzdWIgdm9sdW1lX2V4cG9ydCB7Cj4gICAJICAgIHJ1bl9j b21tYW5kKFsndGFyJywgQENPTU1PTl9UQVJfRkxBR1MsICctY2YnLCAnLScsICctQycsICRmaWxl LCAnLiddLAo+ICAgCSAgICAgICAgICAgICAgICBvdXRwdXQgPT4gJz4mJy5maWxlbm8oJGZoKSk7 Cj4gICAJICAgIHJldHVybjsKPiArCX0gZWxzaWYgKCRmb3JtYXQgZXEgJ2JhY2t1cCtzaXplJykg ewo+ICsJICAgIHdyaXRlX2NvbW1vbl9oZWFkZXIoJGZoLCAkc2l6ZSk7Cj4gKwkgICAgbXkgJHBy b3RlY3RlZCA9ICRjbGFzcy0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoCj4gKwkJJHNjZmcsICRzdG9y ZWlkLCAkdm9sbmFtZSwgJ3Byb3RlY3RlZCcpID8gMSA6IDA7Cj4gKwkgICAgbXkgJG5vdGVzID0g JGNsYXNzLT5nZXRfdm9sdW1lX2F0dHJpYnV0ZSgkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAn bm90ZXMnKSAvLyAiIjsKPiArCSAgICBzeXN3cml0ZSgkZmgsIHBhY2soIkMiLCAkcHJvdGVjdGVk KSwgMSk7Cj4gKwkgICAgc3lzd3JpdGUoJGZoLCBwYWNrKCJRPCIsIGxlbmd0aCgkbm90ZXMpKSwg OCk7Cj4gKwkgICAgc3lzd3JpdGUoJGZoLCAkbm90ZXMsIGxlbmd0aCgkbm90ZXMpKTsKPiArCSAg ICBydW5fY29tbWFuZChbJ2RkJywgImlmPSRmaWxlIiwgImJzPTRrIiwgInN0YXR1cz1wcm9ncmVz cyJdLCBvdXRwdXQgPT4gJz4mJy5maWxlbm8oJGZoKSk7Cj4gKwkgICAgcmV0dXJuOwoKR3JlYXQg c29sdXRpb24gdG8gdHJhbnNmZXIgdGhhdCBpbmZvcm1hdGlvbiBvdmVyIHBpcGVzIQoKSSB0ZXN0 ZWQgbW92aW5nIG5vbi1wcm90ZWN0ZWQgYW5kIHByb3RlY3RlZCBiYWNrdXBzIGFzIHdlbGwgd2l0 aCB2YXJpb3VzIApub3RlcyBpbiB0aGVtIGFuZCB0aGV5IHdlcmUgbW92ZWQgY29ycmVjdGx5LgoK VGhlIG9ubHkgY2FzZSB0aGF0IGZhaWxlZCwgd2hpY2ggaXNuJ3Qgc3VwcG9ydGVkIGhlcmUgaXMg d2hlbiBJIHVzZSAKbXVsdGktYnl0ZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgYmFja3VwIG5vdGUg KEkgdXNlZCAiQd2UIiBmb3IgdGVzdGluZyksIAp3aGVyZSBJJ20gbm90IHN1cmUgaWYgdGhhdCBp cyBjaGVja2VkIGF0IG90aGVyIHBvaW50cy4gSWYgd2Ugd2FudCB0byAKc3VwcG9ydCB0aGF0LCB3 ZSBjb3VsZCBlbmNvZGUgdGhlbSBiZWZvcmVoYW5kLCBlLmcuOgoKYGBgCm15ICRub3RlcyA9IEVu Y29kZTo6ZW5jb2RlKCdVVEYtOCcsICRjbGFzcy0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoJHNjZmcs IAokc3RvcmVpZCwgJHZvbG5hbWUsICdub3RlcycpKSAvLyAiIjsKYGBgCgpPdGhlcndpc2UgdGhl IG1pZ3JhdGlvbiBiZXR3ZWVuIHR3byBub2RlcyBvciB0aGUgZXhwb3J0IG9mIHRoZSBiYWNrdXAg CnZvbHVtZSB3aWxsIGZhaWwgYXMgYHN5c3dyaXRlYCBkb2Vzbid0IGFsbG93IG5vbi1lbmNvZGVk IHN0cmluZ3MgYnkgCmRlZmF1bHQgWzBdLiBBbHNvIGBsZW5ndGhgIHdvdWxkIGFsc28gb25seSBv dXRwdXQgdGhlIGxvZ2ljYWwgbnVtYmVyIG9mIApjaGFyYWN0ZXJzLCBidXQgbm90IHRoZSBwaHlz aWNhbCBhbW91bnQgWzFdLgoKT3RoZXJ3aXNlLCBldmVyeXRoaW5nIGVsc2Ugd29ya2VkIGFzIGV4 cGVjdGVkIGFuZCBJIGNoZWNrZWQgdGhlIG5vdGVzIApmaWxlIHdpdGggYHh4ZGAgYW5kIGl0IHdh cyBleGFjdGx5IHRoZSBzYW1lLgoKPiAgIAl9Cj4gICAgICAgfQo+ICAgICAgIGRpZSAkZXJyX21z ZzsKPiBAQCAtMTYzOSw2ICsxNjUxLDEwIEBAIHN1YiB2b2x1bWVfZXhwb3J0X2Zvcm1hdHMgewo+ ICAgCSAgICBvciByZXR1cm47Cj4gICAJbXkgKCRzaXplLCAkZm9ybWF0KSA9IGZpbGVfc2l6ZV9p bmZvKCRmaWxlKTsKPiAgIAo+ICsJbXkgKCR2dHlwZSkgPSAkY2xhc3MtPnBhcnNlX3ZvbG5hbWUo JHZvbG5hbWUpOwo+ICsKPiArCXJldHVybiAoJ2JhY2t1cCtzaXplJykgaWYgJHZ0eXBlIGVxICdi YWNrdXAnOwo+ICsKPiAgIAlpZiAoJHdpdGhfc25hcHNob3RzKSB7Cj4gICAJICAgIHJldHVybiAo JGZvcm1hdC4nK3NpemUnKSBpZiAoJGZvcm1hdCBlcSAncWNvdzInIHx8ICRmb3JtYXQgZXEgJ3Zt ZGsnKTsKPiAgIAkgICAgcmV0dXJuICgpOwo+IEBAIC0xNjU0LDcgKzE2NzAsNyBAQCBzdWIgdm9s dW1lX2ltcG9ydCB7Cj4gICAgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkZmgsICR2 b2xuYW1lLCAkZm9ybWF0LCAkc25hcHNob3QsICRiYXNlX3NuYXBzaG90LCAkd2l0aF9zbmFwc2hv dHMsICRhbGxvd19yZW5hbWUpID0gQF87Cj4gICAKPiAgICAgICBkaWUgInZvbHVtZSBpbXBvcnQg Zm9ybWF0ICckZm9ybWF0JyBub3QgYXZhaWxhYmxlIGZvciAkY2xhc3NcbiIKPiAtCWlmICRmb3Jt YXQgIX4gL14ocmF3fHRhcnxxY293Mnx2bWRrKVwrc2l6ZSQvOwo+ICsJaWYgJGZvcm1hdCAhfiAv XihyYXd8dGFyfHFjb3cyfHZtZGt8YmFja3VwKVwrc2l6ZSQvOwo+ICAgICAgIG15ICRkYXRhX2Zv cm1hdCA9ICQxOwo+ICAgCj4gICAgICAgZGllICJmb3JtYXQgJGZvcm1hdCBjYW5ub3QgYmUgaW1w b3J0ZWQgd2l0aG91dCBzbmFwc2hvdHNcbiIKPiBAQCAtMTcxMSw3ICsxNzI3LDE4IEBAIHN1YiB2 b2x1bWVfaW1wb3J0IHsKPiAgIAkgICAgd2FybiAkQCBpZiAkQDsKPiAgIAkgICAgZGllICRlcnI7 Cj4gICAJfQo+IC0gICAgfSBlbHNpZiAoJHZ0eXBlIGVxICdpc28nIHx8ICR2dHlwZSBlcSAnc25p cHBldHMnIHx8ICR2dHlwZSBlcSAndnp0bXBsJykgewo+ICsgICAgfSBlbHNpZiAoJHZ0eXBlIGVx ICdpc28nIHx8ICR2dHlwZSBlcSAnc25pcHBldHMnIHx8ICR2dHlwZSBlcSAndnp0bXBsJyB8fCAk dnR5cGUgZXEgJ2JhY2t1cCcpIHsKPiArCW15ICRwcm90ZWN0ZWQ7Cj4gKwlteSAkbm90ZXM7Cj4g Kwo+ICsJaWYgKCR2dHlwZSBlcSAnYmFja3VwJykgewo+ICsJICAgIHN5c3JlYWQoJGZoLCAkcHJv dGVjdGVkLCAxKTsKPiArCSAgICAkcHJvdGVjdGVkID0gdW5wYWNrKCdDJywgJHByb3RlY3RlZCk7 Cj4gKwkgICAgc3lzcmVhZCgkZmgsIG15ICRub3Rlc19sZW4sIDgpOwo+ICsJICAgICRub3Rlc19s ZW4gPSB1bnBhY2soJ1E8JywgJG5vdGVzX2xlbik7Cj4gKwkgICAgc3lzcmVhZCgkZmgsICRub3Rl cywgJG5vdGVzX2xlbik7Cj4gKwl9Cj4gKwo+ICAgCWV2YWwgewo+ICAgCSAgICBydW5fY29tbWFu ZChbJ2RkJywgIm9mPSRmaWxlIiwgJ2JzPTY0ayddLCBpbnB1dCA9PiAnPCYnLmZpbGVubygkZmgp KTsKPiAgIAl9Owo+IEBAIC0xNzIyLDYgKzE3NDksMTEgQEAgc3ViIHZvbHVtZV9pbXBvcnQgewo+ ICAgCSAgICB9Cj4gICAJICAgIGRpZSAkZXJyOwo+ICAgCX0KPiArCj4gKwlpZiAoJHZ0eXBlIGVx ICdiYWNrdXAnKSB7Cj4gKwkgICAgJGNsYXNzLT51cGRhdGVfdm9sdW1lX2F0dHJpYnV0ZSgkc2Nm ZywgJHN0b3JlaWQsICR2b2xuYW1lLCAncHJvdGVjdGVkJywgJHByb3RlY3RlZCk7Cj4gKwkgICAg JGNsYXNzLT51cGRhdGVfdm9sdW1lX2F0dHJpYnV0ZSgkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1l LCAnbm90ZXMnLCAkbm90ZXMpOwo+ICsJfQo+ICAgICAgIH0gZWxzZSB7Cj4gICAJZGllICJpbXBv cnRpbmcgdm9sdW1lIG9mIHR5cGUgJyR2dHlwZScgbm90IGltcGxlbWVudGVkXG4iOwo+ICAgICAg IH0KPiBAQCAtMTczMiw3ICsxNzY0LDExIEBAIHN1YiB2b2x1bWVfaW1wb3J0IHsKPiAgIHN1YiB2 b2x1bWVfaW1wb3J0X2Zvcm1hdHMgewo+ICAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVp ZCwgJHZvbG5hbWUsICRzbmFwc2hvdCwgJGJhc2Vfc25hcHNob3QsICR3aXRoX3NuYXBzaG90cykg PSBAXzsKPiAgICAgICBpZiAoJHNjZmctPntwYXRofSAmJiAhZGVmaW5lZCgkYmFzZV9zbmFwc2hv dCkpIHsKPiAtCW15ICRmb3JtYXQgPSAoJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKSlb Nl07Cj4gKwlteSAoJHZ0eXBlLCAkZm9ybWF0KSA9ICgkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZv bG5hbWUpKVswLCA2XTsKPiArCj4gKwlyZXR1cm4gKCdiYWNrdXArc2l6ZScpIGlmICR2dHlwZSBl cSAnYmFja3VwJzsKPiArCXJldHVybiAoJ3JhdytzaXplJykgaWYgIWRlZmluZWQoJGZvcm1hdCk7 CgpUaGlzIGZpeGVkIHRoZSB1bmRlZmluZWQgJGZvcm1hdCB3YXJuaW5nIGZyb20gcGF0Y2ggIzIs IGlmIHBvc3NpYmxlIHdlIApjb3VsZCBhbHJlYWR5IGZpeCB0aGF0IHRoZXJlIHNvIHRoYXQgcG90 ZW50aWFsIGJpc2VjdHMgd29uJ3QgY2F1c2UgCmZhbHNlLXBvc2l0aXZlcwoKPiArCj4gICAJaWYg KCR3aXRoX3NuYXBzaG90cykgewo+ICAgCSAgICByZXR1cm4gKCRmb3JtYXQuJytzaXplJykgaWYg KCRmb3JtYXQgZXEgJ3Fjb3cyJyB8fCAkZm9ybWF0IGVxICd2bWRrJyk7Cj4gICAJICAgIHJldHVy biAoKTsKCk90aGVyd2lzZSwgbW92aW5nIGJhY2t1cHMgYmV0d2VlbiBkaWZmZXJlbnQgc3RvcmFn ZXMgb24gdGhlIHNhbWUgbm9kZSAKYW5kIGJldHdlZW4gZGlmZmVyZW50IG5vZGVzIGhhdmUgd29y a2VkIGZsYXdsZXNzbHkuIEdyZWF0IHdvcmshCgpbMF0gaHR0cHM6Ly9wZXJsZG9jLnBlcmwub3Jn L2Z1bmN0aW9ucy9zeXN3cml0ZQpbMV0gaHR0cHM6Ly9wZXJsZG9jLnBlcmwub3JnL2Z1bmN0aW9u cy9sZW5ndGgKClJldmlld2VkLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3htb3guY29tPgpU ZXN0ZWQtYnk6IERhbmllbCBLcmFsIDxkLmtyYWxAcHJveG1veC5jb20+CgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlz dApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9j Z2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==