From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 9DD1A1FF164 for <inbox@lore.proxmox.com>; Fri, 9 May 2025 12:29:52 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2E86E3A7FD; Fri, 9 May 2025 12:30:10 +0200 (CEST) Date: Fri, 9 May 2025 12:30:02 +0200 (CEST) From: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Message-ID: <723319696.12915.1746786602409@webmail.proxmox.com> In-Reply-To: <mailman.27.1745322744.394.pve-devel@lists.proxmox.com> References: <20250422115141.808427-1-alexandre.derumier@groupe-cyllene.com> <mailman.27.1745322744.394.pve-devel@lists.proxmox.com> MIME-Version: 1.0 X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v7.10.6-Rev75 X-Originating-Client: open-xchange-appsuite X-SPAM-LEVEL: Spam detection results: 0 AWL 0.046 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 pve-storage 3/5] lvmplugin: add qcow2 snapshot X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> Cj4gQWxleGFuZHJlIERlcnVtaWVyIHZpYSBwdmUtZGV2ZWwgPHB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbT4gaGF0IGFtIDIyLjA0LjIwMjUgMTM6NTEgQ0VTVCBnZXNjaHJpZWJlbjoKPiB3ZSBm b3JtYXQgbHZtIGxvZ2ljYWwgdm9sdW1lIHdpdGggcWNvdzIgdG8gaGFuZGxlIHNuYXBzaG90IGNo YWluLgo+IAo+IGxpa2UgZm9yIHFjb3cyIGZpbGUsIHdoZW4gYSBzbmFwc2hvdCBpcyB0YWtlbiwg dGhlIGN1cnJlbnQgbHZtIHZvbHVtZQo+IGlzIHJlbmFtZWQgdG8gc25hcCB2b2xuYW1lLCBhbmQg YSBuZXcgY3VycmVudCBsdm0gdm9sdW1lIGlzIGNyZWF0ZWQKPiB3aXRoIHRoZSBzbmFwIHZvbG5h bWUgYXMgYmFja2luZyBmaWxlCj4gCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIERlcnVtaWVy IDxhbGV4YW5kcmUuZGVydW1pZXJAZ3JvdXBlLWN5bGxlbmUuY29tPgo+IC0tLQo+ICBzcmMvUFZF L1N0b3JhZ2UvTFZNUGx1Z2luLnBtIHwgMzAxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyNzggaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9MVk1QbHVnaW4ucG0gYi9zcmMv UFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gaW5kZXggYzQ2NDhlYy4uOGVlMzM3YSAxMDA2NDQK PiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gKysrIGIvc3JjL1BWRS9TdG9y YWdlL0xWTVBsdWdpbi5wbQo+IEBAIC00LDYgKzQsNyBAQCB1c2Ugc3RyaWN0Owo+ICB1c2Ugd2Fy bmluZ3M7Cj4gIAo+ICB1c2UgSU86OkZpbGU7Cj4gK3VzZSBQT1NJWCBxdy9jZWlsLzsKPiAgCj4g IHVzZSBQVkU6OlRvb2xzIHF3KHJ1bl9jb21tYW5kIHRyaW0pOwo+ICB1c2UgUFZFOjpTdG9yYWdl OjpQbHVnaW47Cj4gQEAgLTIxOCw2ICsyMTksNyBAQCBzdWIgdHlwZSB7Cj4gIHN1YiBwbHVnaW5k YXRhIHsKPiAgICAgIHJldHVybiB7Cj4gIAljb250ZW50ID0+IFsge2ltYWdlcyA9PiAxLCByb290 ZGlyID0+IDF9LCB7IGltYWdlcyA9PiAxIH1dLAo+ICsJZm9ybWF0ID0+IFsgeyByYXcgPT4gMSwg cWNvdzIgPT4gMSB9ICwgJ3JhdycgXSwKPiAgCSdzZW5zaXRpdmUtcHJvcGVydGllcycgPT4ge30s Cj4gICAgICB9Owo+ICB9Cj4gQEAgLTI5NCw3ICsyOTYsMTAgQEAgc3ViIHBhcnNlX3ZvbG5hbWUg ewo+ICAgICAgUFZFOjpTdG9yYWdlOjpQbHVnaW46OnBhcnNlX2x2bV9uYW1lKCR2b2xuYW1lKTsK PiAgCj4gICAgICBpZiAoJHZvbG5hbWUgPX4gbS9eKHZtLShcZCspLVxTKykkLykgewo+IC0JcmV0 dXJuICgnaW1hZ2VzJywgJDEsICQyLCB1bmRlZiwgdW5kZWYsIHVuZGVmLCAncmF3Jyk7Cj4gKwlt eSAkbmFtZSA9ICQxOwo+ICsJbXkgJHZtaWQgPSAkMjsKPiArCW15ICRmb3JtYXQgPSAkdm9sbmFt ZSA9fiBtL1wucWNvdzIkLyA/ICdxY293MicgOiAncmF3JzsKPiArCXJldHVybiAoJ2ltYWdlcycs ICRuYW1lLCAkdm1pZCwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJGZvcm1hdCk7Cj4gICAgICB9Cj4g IAo+ICAgICAgZGllICJ1bmFibGUgdG8gcGFyc2UgbHZtIHZvbHVtZSBuYW1lICckdm9sbmFtZSdc biI7Cj4gQEAgLTMwMywxMSArMzA4LDEzIEBAIHN1YiBwYXJzZV92b2xuYW1lIHsKPiAgc3ViIGZp bGVzeXN0ZW1fcGF0aCB7Cj4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHZvbG5hbWUsICRzbmFw bmFtZSkgPSBAXzsKPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCBpcyBub3QgaW1wbGVtZW50 ZWQiaWYgZGVmaW5lZCgkc25hcG5hbWUpOwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlk LCAkYmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICsJJGNsYXNzLT5w YXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiAgCj4gLSAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZt aWQpID0gJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArICAgIGRpZSAic25hcHNo b3QgaXMgd29ya2luZyB3aXRoIHFjb3cyIGZvcm1hdCBvbmx5IiBpZiBkZWZpbmVkKCRzbmFwbmFt ZSkgJiYgJGZvcm1hdCBuZSAncWNvdzInOwo+ICAKPiAgICAgIG15ICR2ZyA9ICRzY2ZnLT57dmdu YW1lfTsKPiArICAgICRuYW1lID0gJGNsYXNzLT5nZXRfc25hcF9uYW1lKCR2b2xuYW1lLCAkc25h cG5hbWUpIGlmICRzbmFwbmFtZTsKPiAgCj4gICAgICBteSAkcGF0aCA9ICIvZGV2LyR2Zy8kbmFt ZSI7Cj4gIAo+IEBAIC0zMzUsNyArMzQyLDkgQEAgc3ViIGZpbmRfZnJlZV9kaXNrbmFtZSB7Cj4g IAo+ICAgICAgbXkgJGRpc2tfbGlzdCA9IFsga2V5cyAleyRsdnMtPnskdmd9fSBdOwo+ICAKPiAt ICAgIHJldHVybiBQVkU6OlN0b3JhZ2U6OlBsdWdpbjo6Z2V0X25leHRfdm1fZGlza25hbWUoJGRp c2tfbGlzdCwgJHN0b3JlaWQsICR2bWlkLCB1bmRlZiwgJHNjZmcpOwo+ICsgICAgJGFkZF9mbXRf c3VmZml4ID0gJGZtdCBlcSAncWNvdzInID8gMSA6IHVuZGVmOwo+ICsKPiArICAgIHJldHVybiBQ VkU6OlN0b3JhZ2U6OlBsdWdpbjo6Z2V0X25leHRfdm1fZGlza25hbWUoJGRpc2tfbGlzdCwgJHN0 b3JlaWQsICR2bWlkLCAkZm10LCAkc2NmZywgJGFkZF9mbXRfc3VmZml4KTsKPiAgfQo+ICAKPiAg c3ViIGx2Y3JlYXRlIHsKPiBAQCAtMzYzLDEzICszNzIsNDMgQEAgc3ViIGx2cmVuYW1lIHsKPiAg ICAgICk7Cj4gIH0KPiAgCj4gLXN1YiBhbGxvY19pbWFnZSB7Cj4gLSAgICBteSAoJGNsYXNzLCAk c3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm10LCAkbmFtZSwgJHNpemUpID0gQF87Cj4gK215IHN1 YiBsdm1fcWNvdzJfZm9ybWF0IHsKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywg JG5hbWUsICRmbXQsICRiYWNraW5nX3NuYXAsICRzaXplKSA9IEBfOwo+ICsKPiArICAgIHJldHVy biBpZiAkZm10IG5lICdxY293Mic7Cj4gKwo+ICsgICAgJGNsYXNzLT5hY3RpdmF0ZV92b2x1bWUo JHN0b3JlaWQsICRzY2ZnLCAkbmFtZSk7Cj4gKyAgICBteSAkcGF0aCA9ICRjbGFzcy0+cGF0aCgk c2NmZywgJG5hbWUsICRzdG9yZWlkKTsKPiArICAgIG15ICRiYWNraW5nX3BhdGggPSAkY2xhc3Mt PnBhdGgoJHNjZmcsICRuYW1lLCAkc3RvcmVpZCwgJGJhY2tpbmdfc25hcCkgaWYgJGJhY2tpbmdf c25hcDsKPiArICAgIFBWRTo6U3RvcmFnZTo6UGx1Z2luOjpxZW11X2ltZ19jcmVhdGUoJHNjZmcs ICdxY293MicsICRzaXplLCAkcGF0aCwgJGJhY2tpbmdfcGF0aCk7Cj4gIAo+IC0gICAgZGllICJ1 bnN1cHBvcnRlZCBmb3JtYXQgJyRmbXQnIiBpZiAkZm10IG5lICdyYXcnOwo+ICt9Cj4gKwo+ICtt eSBzdWIgbHZtX3NpemUgewoKdGhhdCdzIGEgYml0IG9mIGEgbWlzbm9tZXIgYXMgd2VsbCwgbWF5 YmUgJ2NhbGN1bGF0ZV9sdl9zaXplJyA/Cgo+ICsgICBteSAoJHNpemUsICRmbXQsICRiYWNraW5n X3NuYXApID0gQF87Cj4gKwo+ICsgICAjYWRkIGV4dHJhIHNwYWNlIGZvciBxY293MiBtZXRhZGF0 YXMgZm9yIGluaXRpYWwgaW1hZ2UKPiArICAgI2lmIGJhY2tpbmdfc25hcCBleGlzdCwgdGhlIHBh cmVudCBsdm0gdm9sdW1lIGFscmVhZHkgaGF2ZSB0aGUgb3ZlcmhlYWQKCmFyZSB5b3Ugc3VyZSBh Ym91dCB0aGF0PyB0aGUgJ2N1cnJlbnQnIHZvbHVtZSBhbHNvIGhhcyB0byBoYXZlIHRoZSBzYW1l IG92ZXJoZWFkIGlmIHlvdSB3cml0ZQp0aGUgZnVsbCBsb2dpY2FsIHNpemUgdG8gaXQsIG9yIGFt IEkgbWlzc2luZyBzb21ldGhpbmc/CgplLmcuLCB3aGlsZSBkb2luZyB0aGUgc2FtZSB3aXRoIGZp bGVzOgoKMS4gZGQgMUcgb2YgcmFuZG9tIGRhdGEgaW50byByYXcgZmlsZQoyLiBjcmVhdGUgMUcg cWNvdzIgZmlsZQozLiBxZW11LWltZyBkZCAxRyBvZiByYW5kb20gZGF0YSBpbnRvIHFjb3cyIGZp bGUKNC4gb2JzZXJ2ZSB0aGF0IHJhdyBmaWxlIGlzIDEwNzM3NDE4MjQgYnl0ZXMgYmlnLCBxY293 MiBmaWxlIGlzIDEwNzQyNjYxMTIgYnl0ZXMgYmlnICg1MTJLIGRpZmZlcmVuY2UpCjUuIGNyZWF0 ZSBzZWNvbmQgMUcgcWNvdzIgZmlsZSBiYWNrZWQgYnkgZmlyc3QKNi4gcWVtdS1pbWcgZGQgMUcg b2YgcmFuZG9tIGRhdGEgaW50byBzZWNvbmQgcWNvdzIgZmlsZQo3LiBvYnNlcnZlIHNlY29uZCBx Y293MiBmaWxlIGlzIGFsc28gYmlnZ2VyIHRoYW4gMUcgKGJ5IDM4NEspCgphbmQgdGhpcyBpcyB3 aXRob3V0IGV4dGVuZGVkIGwyIGFuZCBiaWcgY2x1c3RlcnMsIHdpdGggdGhvc2UgdGhlIHFjb3cy IGZpbGUgaXMgc2xpZ2h0bHkgYmlnZ2VyCgo+ICsgICByZXR1cm4gJHNpemUgaWYgJGZtdCBuZSAn cWNvdzInIHx8ICRiYWNraW5nX3NuYXA7Cj4gKwo+ICsgICAjd2l0aG91dCBzdWItYWxsb2NhdGVk IGNsdXN0ZXJzIDogbDJfc2l6ZSA9IGRpc2tfc2l6ZSDDlyA4IC8gY2x1c3Rlcl9zaXplCj4gKyAg ICN3aXRoIHN1Yi1hbGxvY2F0ZWQgY2x1c3RlcnMgOiAgICBsMl9zaXplID0gZGlza19zaXplIMOX IDggLyBjbHVzdGVyX3NpemUgLyAxNgo+ICsgICAjZXg6IDRNQiBvdmVyaGVhZCBmb3IgMVRCIHdp dGggZXh0ZW50ZWQgbDIgY2x1c3RlcnNpemU9MTI4awo+ICsgICAjY2FuJ3QgdXNlIHFlbXUtaW1n IG1lYXN1cmUsIGJlY2F1c2UgaXQncyBub3QgcG9zc2libGUgdG8gZGVmaW5lIG9wdGlvbnMgbGlr ZSBjbHVzdGVyc2l6ZSAmJiBleHRlbmRlZF9sMgo+ICsgICAjdmVyaWZpY2F0aW9uIGhhcyBiZWVu IGRvbmUgd2l0aCA6IHFlbXUtaW1nIGNyZWF0ZSAtZiBxY293MiAtbyBleHRlbmRlZF9sMj1vbixj bHVzdGVyX3NpemU9MTI4ayB0ZXN0LmltZyAxRwo+ICsKPiArICAgbXkgJHFjb3cyX292ZXJoZWFk ID0gY2VpbCgkc2l6ZS8xMDI0LzEwMjQvMTAyNCkgKiA0MDk2Owo+ICsgICAkc2l6ZSArPSAkcWNv dzJfb3ZlcmhlYWQ7Cj4gKyAgIHJldHVybiAkc2l6ZTsKPiArfQo+ICsKPiArbXkgc3ViIGFsbG9j X2x2bV9pbWFnZSB7CgpoZXJlIGFzIHdlbGwgLSB0aGlzIGNvdWxkIGJlIGZpcnN0IGV4dHJhY3Rl ZCB3aXRob3V0IHNlbWFudGljIGNoYW5nZXMsIGFuZAp0aGVuIGhhdmUgdGhlIHNlbWFudGljIGNo YW5nZXMgaW4gdGhpcyBjb21taXQuLgoKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2Nm ZywgJHZtaWQsICRmbXQsICRuYW1lLCAkc2l6ZSwgJGJhY2tpbmdfc25hcCkgPSBAXzsKPiArCj4g KyAgICBkaWUgInVuc3VwcG9ydGVkIGZvcm1hdCAnJGZtdCciIGlmICRmbXQgIX4gbS8ocmF3fHFj b3cyKS87Cj4gIAo+ICAgICAgZGllICJpbGxlZ2FsIG5hbWUgJyRuYW1lJyAtIHNob3VsZCBiZSAn dm0tJHZtaWQtKidcbiIKPiAtCWlmICAkbmFtZSAmJiAkbmFtZSAhfiBtL152bS0kdm1pZC0vOwo+ ICsJaWYgJG5hbWUgIX4gbS9edm0tJHZtaWQtLzsKPiAgCj4gICAgICBteSAkdmdzID0gbHZtX3Zn cygpOwo+ICAKPiBAQCAtMzc4LDE3ICs0MTcsNTEgQEAgc3ViIGFsbG9jX2ltYWdlIHsKPiAgICAg IGRpZSAibm8gc3VjaCB2b2x1bWUgZ3JvdXAgJyR2ZydcbiIgaWYgIWRlZmluZWQgKCR2Z3MtPnsk dmd9KTsKPiAgCj4gICAgICBteSAkZnJlZSA9IGludCgkdmdzLT57JHZnfS0+e2ZyZWV9KTsKPiAr ICAgIG15ICRsdm1zaXplID0gbHZtX3NpemUoJHNpemUsICRmbXQsICRiYWNraW5nX3NuYXApOwo+ ICAKPiAgICAgIGRpZSAibm90IGVub3VnaCBmcmVlIHNwYWNlICgkZnJlZSA8ICRzaXplKVxuIiBp ZiAkZnJlZSA8ICRzaXplOwo+ICAKPiAtICAgICRuYW1lID0gJGNsYXNzLT5maW5kX2ZyZWVfZGlz a25hbWUoJHN0b3JlaWQsICRzY2ZnLCAkdm1pZCkKPiArICAgIG15ICR0YWdzID0gWyJwdmUtdm0t JHZtaWQiXTsKPiArICAgICN0YWdzIGFsbCBzbmFwc2hvdHMgdm9sdW1lcyB3aXRoIHRoZSBtYWlu IHZvbHVtZSB0YWcgZm9yIGVhc2llciBhY3RpdmF0aW9uIG9mIHRoZSB3aG9sZSBncm91cAo+ICsg ICAgcHVzaCBAJHRhZ3MsICJcQHB2ZS0kbmFtZSIgaWYgJGZtdCBlcSAncWNvdzInOwo+ICsgICAg bHZjcmVhdGUoJHZnLCAkbmFtZSwgJGx2bXNpemUsICR0YWdzKTsKPiArCj4gKyAgICAjZm9ybWF0 IHRoZSBsdm0gdm9sdW1lIHdpdGggcWNvdzIgZm9ybWF0Cj4gKyAgICBldmFsIHsgbHZtX3Fjb3cy X2Zvcm1hdCgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJG5hbWUsICRmbXQsICRiYWNraW5nX3Nu YXAsICRzaXplKSB9Owo+ICsgICAgaWYgKCRAKSB7Cj4gKwlteSAkZXJyID0gJEA7Cj4gKwkjbm8g bmVlZCB0byBzYWZlIGNsZWFudXAgYXMgdGhlIHZvbHVtZSBpcyBzdGlsbCBlbXB0eQo+ICsJZXZh bCB7Cj4gKwkgICAgbXkgJGNtZCA9IFsnL3NiaW4vbHZyZW1vdmUnLCAnLWYnLCAiJHZnLyRuYW1l Il07Cj4gKwkgICAgcnVuX2NvbW1hbmQoJGNtZCwgZXJybXNnID0+ICJsdnJlbW92ZSAnJHZnLyRu YW1lJyBlcnJvciIpOwo+ICsJfTsKCnNob3VsZCBzdGlsbCBsb2cgYW55IGVycm9ycyBlbmNvdW50 ZXJlZCBieSB0aGUgY2xlYW51cC4uCgo+ICsJZGllICRlcnI7Cj4gKyAgICB9Cj4gKyAgICAKPiAr fQo+ICsKPiArc3ViIGFsbG9jX2ltYWdlIHsKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAk c2NmZywgJHZtaWQsICRmbXQsICRuYW1lLCAkc2l6ZSkgPSBAXzsKPiArCj4gKyAgICAkbmFtZSA9 ICRjbGFzcy0+ZmluZF9mcmVlX2Rpc2tuYW1lKCRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICRmbXQp Cj4gIAlpZiAhJG5hbWU7Cj4gIAo+IC0gICAgbHZjcmVhdGUoJHZnLCAkbmFtZSwgJHNpemUsIFsi cHZlLXZtLSR2bWlkIl0pOwo+ICsgICAgYWxsb2NfbHZtX2ltYWdlKCRjbGFzcywgJHN0b3JlaWQs ICRzY2ZnLCAkdm1pZCwgJGZtdCwgJG5hbWUsICRzaXplKTsKPiAgCj4gICAgICByZXR1cm4gJG5h bWU7Cj4gIH0KPiAgCj4gK3N1YiBhbGxvY19zbmFwX2ltYWdlIHsKCnNob3VsZCBiZSBwcml2YXRl Cgo+ICsgICAgbXkgKCRjbGFzcywgJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJGJhY2tpbmdf c25hcCkgPSBAXzsKPiArCj4gKyAgICBteSAkc2l6ZSA9ICRjbGFzcy0+dm9sdW1lX3NpemVfaW5m bygkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCA1LCAkYmFja2luZ19zbmFwKTsKPiArICAgICRz aXplID0gJHNpemUgLyAxMDI0OyAgI3dlIHVzZSBrYiBpbiBsdmNyZWF0ZQoKd2hhdCBpZiBzb21l dGhpbmcgcmVnYXJkaW5nIHRoZSBzaXplIGNhbGN1bGF0aW9uIGNoYW5nZWQgaW4gdGhlIG1lYW50 aW1lLApzaG91bGRuJ3QgdGhpcyBhbHdheXMgc3RhcnQgZnJvbSB0aGUgImxvZ2ljYWwiIHNpemUg b3IgZWxzZSB3ZSByaXNrCmFjY2lkZW50YWxseSBjcmVhdGluZyBhIHRvbyBzbWFsbCB2b2x1bWU/ Cgo+ICsKPiArICAgIG15ICgkdm1pZCwgJGZvcm1hdCkgPSAoJGNsYXNzLT5wYXJzZV92b2xuYW1l KCR2b2xuYW1lKSlbMiw2XTsKCndlJ3ZlIGFscmVhZHkgZG9uZSB0aGlzIGF0IGJvdGggY2FsbCBz aXRlcywgc28gd2UgY291bGQganVzdCBwYXNzIHRob3NlIGluCmFuZC9vciBpbmxpbmUgdGhpcyBo ZWxwZXI/Cgo+ICsKPiArICAgIGFsbG9jX2x2bV9pbWFnZSgkY2xhc3MsICRzdG9yZWlkLCAkc2Nm ZywgJHZtaWQsICRmb3JtYXQsICR2b2xuYW1lLCAkc2l6ZSwgJGJhY2tpbmdfc25hcCk7Cj4gK30K PiArCj4gIHN1YiBmcmVlX2ltYWdlIHsKPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2Nm ZywgJHZvbG5hbWUsICRpc0Jhc2UpID0gQF87Cj4gIAo+IEBAIC01MzksNiArNjEyLDEyIEBAIHN1 YiBhY3RpdmF0ZV92b2x1bWUgewo+ICAKPiAgICAgIG15ICRsdm1fYWN0aXZhdGVfbW9kZSA9ICdl eSc7Cj4gIAo+ICsgICAgI2FjdGl2YXRlIHZvbHVtZSAmJiBhbGwgc25hcHNob3RzIHZvbHVtZXMg YnkgdGFnCj4gKyAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2 bWlkLCAkaXNCYXNlLCAkZm9ybWF0KSA9Cj4gKwkkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZvbG5h bWUpOwo+ICsKPiArICAgICRwYXRoID0gIlxAcHZlLSRuYW1lIiBpZiAkZm9ybWF0IGVxICdxY293 Mic7Cj4gKwo+ICAgICAgbXkgJGNtZCA9IFsnL3NiaW4vbHZjaGFuZ2UnLCAiLWEkbHZtX2FjdGl2 YXRlX21vZGUiLCAkcGF0aF07Cj4gICAgICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gImNh bid0IGFjdGl2YXRlIExWICckcGF0aCciKTsKPiAgICAgICRjbWQgPSBbJy9zYmluL2x2Y2hhbmdl JywgJy0tcmVmcmVzaCcsICRwYXRoXTsKPiBAQCAtNTUxLDYgKzYzMCwxMCBAQCBzdWIgZGVhY3Rp dmF0ZV92b2x1bWUgewo+ICAgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNjZmcsICR2b2xu YW1lLCAkc3RvcmVpZCwgJHNuYXBuYW1lKTsKPiAgICAgIHJldHVybiBpZiAhIC1iICRwYXRoOwo+ ICAKPiArICAgIG15ICgkdnR5cGUsICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQs ICRpc0Jhc2UsICRmb3JtYXQpID0KPiArCSRjbGFzcy0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFtZSk7 Cj4gKyAgICAkcGF0aCA9ICJcQHB2ZS0kbmFtZSIgaWYgJGZvcm1hdCBlcSAncWNvdzInOwo+ICsK PiAgICAgIG15ICRjbWQgPSBbJy9zYmluL2x2Y2hhbmdlJywgJy1hbG4nLCAkcGF0aF07Cj4gICAg ICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gImNhbid0IGRlYWN0aXZhdGUgTFYgJyRwYXRo JyIpOwo+ICB9Cj4gQEAgLTU1OCwyMSArNjQxLDMxIEBAIHN1YiBkZWFjdGl2YXRlX3ZvbHVtZSB7 Cj4gIHN1YiB2b2x1bWVfcmVzaXplIHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVp ZCwgJHZvbG5hbWUsICRzaXplLCAkcnVubmluZykgPSBAXzsKPiAgCj4gLSAgICAkc2l6ZSA9ICgk c2l6ZS8xMDI0LzEwMjQpIC4gIk0iOwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAk YmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICsJJGNsYXNzLT5wYXJz ZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICBteSAkbHZtc2l6ZSA9IGx2bV9zaXplKCRz aXplLzEwMjQsICRmb3JtYXQpOwoKc2FtZSBxdWVzdGlvbiBoZXJlIC0gd2hhdCBpZiB0aGUgb3Zl cmhlYWQgY2FsY3VsYXRpb24gY2hhbmdlcyBhdCBzb21lIHBvaW50PwpzbWFsbGVyIHRvIGJpZ2dl ciBkb2Vzbid0IG1hdHRlciwgdGhhdCdzIG9rYXksIGJ1dCB3aGF0IGlmIHRoZSBleGlzdGluZwp2 b2x1bWUgaGFkIGEgaGlnaGVyIG92ZXJoZWFkIHRoYW4gd2Ugbm93IGNhbGN1bGF0ZT8gdGhlbiBy ZXNpemluZyB3b3VsZAphY3R1YWxseSBlbmQgdXAgd2l0aCBhIHRvbyBzbWFsbCB0YXJnZXQgTFYg c2l6ZT8KCmFyZSB3ZSBub3QgYWxsb3dlZCB0byBldmVyIGRvIHRoYXQ/IHRoZW4gd2UgbmVlZCBh IGJpZyB3YXJuaW5nIHVwIHRvcAphdCB0aGUgc2l6ZSBjYWxjdWxhdGlvbiBoZWxwZXIgc28gdGhh dCB3ZSBkb24ndCBmb3JnZXQgYWJvdXQgdGhpcyBpbnZhcmlhbnQuLgoKCj4gKyAgICAkbHZtc2l6 ZSA9ICIke2x2bXNpemV9ayI7Cj4gIAo+ICAgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNj ZmcsICR2b2xuYW1lKTsKPiAtICAgIG15ICRjbWQgPSBbJy9zYmluL2x2ZXh0ZW5kJywgJy1MJywg JHNpemUsICRwYXRoXTsKPiArICAgIG15ICRjbWQgPSBbJy9zYmluL2x2ZXh0ZW5kJywgJy1MJywg JGx2bXNpemUsICRwYXRoXTsKPiAgCj4gICAgICAkY2xhc3MtPmNsdXN0ZXJfbG9ja19zdG9yYWdl KCRzdG9yZWlkLCAkc2NmZy0+e3NoYXJlZH0sIHVuZGVmLCBzdWIgewo+ICAJcnVuX2NvbW1hbmQo JGNtZCwgZXJybXNnID0+ICJlcnJvciByZXNpemluZyB2b2x1bWUgJyRwYXRoJyIpOwo+ICAgICAg fSk7Cj4gIAo+ICsgICAgaWYoISRydW5uaW5nICYmICRmb3JtYXQgZXEgJ3Fjb3cyJykgewo+ICsJ bXkgJHByZWFsbG9jX29wdCA9IFBWRTo6U3RvcmFnZTo6UGx1Z2luOjpwcmVhbGxvY2F0aW9uX2Nt ZF9vcHRpb24oJHNjZmcsICRmb3JtYXQpOwo+ICsJbXkgJGNtZCA9IFsnL3Vzci9iaW4vcWVtdS1p bWcnLCAncmVzaXplJywgIi0tJHByZWFsbG9jX29wdCIsICctZicsICRmb3JtYXQsICRwYXRoICwg JHNpemVdOwoKdGhlIHJlZ3VsYXIgcWVtdS1pbWcgcmVzaXplIGluIFBsdWdpbi5wbSBkb2Vzbid0 IHBhc3MgdGhlIHByZWFsbG9jIG9wdGlvbnMuLgphbHNvLCBpZiB0aGVyZSBhcmUgbm9uZSBzZXQg dGhpcyB3b3VsZCBwYXNzIGAtLWAgPwoKPiArCXJ1bl9jb21tYW5kKCRjbWQsIHRpbWVvdXQgPT4g MTApOwo+ICsgICAgfQo+ICsKPiAgICAgIHJldHVybiAxOwo+ICB9Cj4gIAo+ICBzdWIgdm9sdW1l X3NpemVfaW5mbyB7Cj4gLSAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1l LCAkdGltZW91dCkgPSBAXzsKPiAtICAgIG15ICRwYXRoID0gJGNsYXNzLT5maWxlc3lzdGVtX3Bh dGgoJHNjZmcsICR2b2xuYW1lKTsKPiArICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwg JHZvbG5hbWUsICR0aW1lb3V0LCAkc25hcCkgPSBAXzsKPiArICAgIG15ICRwYXRoID0gJGNsYXNz LT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lLCAkc25hcCk7Cj4gIAo+ICAgICAgbXkg JGNtZCA9IFsnL3NiaW4vbHZzJywgJy0tc2VwYXJhdG9yJywgJzonLCAnLS1ub2hlYWRpbmdzJywg Jy0tdW5pdHMnLCAnYicsCj4gIAkgICAgICAgJy0tdW5idWZmZXJlZCcsICctLW5vc3VmZml4Jywg Jy0tb3B0aW9ucycsICdsdl9zaXplJywgJHBhdGhdOwo+IEBAIC01ODYsMzIgKzY3OSwxODAgQEAg c3ViIHZvbHVtZV9zaXplX2luZm8gewo+ICB9Cj4gIAo+ICBzdWIgdm9sdW1lX3NuYXBzaG90IHsK PiAtICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwKSA9IEBf Owo+ICsgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAsICRy dW5uaW5nKSA9IEBfOwo+ICsKPiArICAgIG15ICgkdm1pZCwgJGZvcm1hdCkgPSAoJGNsYXNzLT5w YXJzZV92b2xuYW1lKCR2b2xuYW1lKSlbMiw2XTsKPiArCj4gKyAgICBkaWUgImNhbid0IHNuYXBz aG90IHRoaXMgaW1hZ2UgZm9ybWF0XG4iIGlmICRmb3JtYXQgbmUgJ3Fjb3cyJzsKPiArCj4gKyAg ICBpZiAoJHJ1bm5pbmcpIHsKPiArICAgICAgICAjcmVuYW1lIHdpdGggYmxvY2tkZXYtcmVvcGVu IGlzIGRvbmUgYXQgcWVtdSBsZXZlbCB3aGVuIHJ1bm5pbmcKPiArICAgICAgICAkY2xhc3MtPmFs bG9jX3NuYXBfaW1hZ2UoJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJHNuYXApOwoKbWlzc2lu ZyBldmFsPwoKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiY2FuJ3QgYWxsb2NhdGUgbmV3IHZv bHVtZSAkdm9sbmFtZTogJEBcbiI7Cj4gKwl9Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ ICsKPiArICAgICNyZW5hbWUgY3VycmVudCB2b2x1bWUgdG8gc25hcCB2b2x1bWUKPiArICAgIGV2 YWwgeyAkY2xhc3MtPnJlbmFtZV92b2x1bWUoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHZt aWQsIHVuZGVmLCAnY3VycmVudCcsICRzbmFwKSB9Owo+ICsgICAgZGllICJlcnJvciByZW5hbWUg JHZvbG5hbWUgdG8gJHNuYXBcbiIgaWYgJEA7Cj4gKwo+ICsgICAgZXZhbCB7ICRjbGFzcy0+YWxs b2Nfc25hcF9pbWFnZSgkc3RvcmVpZCwgJHNjZmcsICR2b2xuYW1lLCAkc25hcCkgfTsKPiArICAg IGlmICgkQCkgewo+ICsJbXkgJGVyciA9ICRAOwo+ICsgICAgICAgIGV2YWwgeyAkY2xhc3MtPnJl bmFtZV92b2x1bWUoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHZtaWQsIHVuZGVmLCAkc25h cCwgJ2N1cnJlbnQnKSB9OwoKc2hvdWxkIGxvZyBpZiByZW5hbWluZyBiYWNrIGZhaWxlZC4uCgo+ ICsgICAgICAgIGRpZSAkZXJyOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICtzdWIgdm9sdW1lX3JvbGxi YWNrX2lzX3Bvc3NpYmxlIHsKPiArICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZv bG5hbWUsICRzbmFwLCAkYmxvY2tlcnMpID0gQF87Cj4gKwo+ICsgICAgbXkgJHNuYXBfcGF0aCA9 ICRjbGFzcy0+cGF0aCgkc2NmZywgJHZvbG5hbWUsICRzdG9yZWlkLCAkc25hcCk7Cj4gIAo+IC0g ICAgZGllICJsdm0gc25hcHNob3QgaXMgbm90IGltcGxlbWVudGVkIjsKPiArICAgICRjbGFzcy0+ YWN0aXZhdGVfdm9sdW1lKCRzdG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsIHVuZGVmLCB7fSk7Cj4g KyAgICBteSAkc25hcHNob3RzID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygkc2NmZywg JHN0b3JlaWQsICR2b2xuYW1lKTsKPiArICAgIG15ICRwYXJlbnRfc25hcCA9ICRzbmFwc2hvdHMt PntjdXJyZW50fS0+e3BhcmVudH07Cj4gKwo+ICsgICAgcmV0dXJuIDEgaWYgJHBhcmVudF9zbmFw IGVxICRzbmFwOwo+ICsgICAgZGllICJjYW4ndCByb2xsYmFjaywgJyRzbmFwJyBpcyBub3QgbW9z dCByZWNlbnQgc25hcHNob3Qgb24gJyR2b2xuYW1lJ1xuIjsKPiArCj4gKyAgICByZXR1cm4gMTsK CnRoaXMgcmV0dXJuIGlzIGRlYWQgY29kZS4uCgo+ICB9Cj4gIAo+ICsKPiAgc3ViIHZvbHVtZV9z bmFwc2hvdF9yb2xsYmFjayB7Cj4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2 b2xuYW1lLCAkc25hcCkgPSBAXzsKPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCByb2xsYmFj ayBpcyBub3QgaW1wbGVtZW50ZWQiOwo+ICsgICAgbXkgJGZvcm1hdCA9ICgkY2xhc3MtPnBhcnNl X3ZvbG5hbWUoJHZvbG5hbWUpKVs2XTsKPiArCj4gKyAgICBkaWUgImNhbid0IHJvbGxiYWNrIHNu YXBzaG90IGZvciB0aGlzIGltYWdlIGZvcm1hdFxuIiBpZiAkZm9ybWF0IG5lICdxY293Mic7Cj4g Kwo+ICsgICAgJGNsYXNzLT5hY3RpdmF0ZV92b2x1bWUoJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFt ZSwgdW5kZWYsIHt9KTsKPiArCj4gKyAgICAjIHdlIGNhbiBzaW1wbHkgcmVmb3JtYXQgdGhlIGN1 cnJlbnQgbHZtIHZvbHVtZSB0byBhdm9pZAo+ICsgICAgIyBhIGxvbmcgc2FmZSByZW1vdmUuKG5v dCBuZWVkZWQgaGVyZSwgYXMgdGhlIGFsbG9jYXRlZCBzcGFjZQo+ICsgICAgIyBpcyBzdGlsbCB0 aGUgc2FtZSBvd25lcikKPiArICAgIGV2YWwgeyBsdm1fcWNvdzJfZm9ybWF0KCRjbGFzcywgJHN0 b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJGZvcm1hdCwgJHNuYXApIH07CgpzaG91bGQgd2UgYWxz byBmb2xsb3cgdGhpcyBhcHByb2FjaCBmb3IgcWNvdzIgZmlsZXM/Cgo+ICsgICAgaWYoJEApIHsK PiArCWRpZSAiY2FuJ3Qgcm9sbGJhY2suIEVycm9yIHJlZm9ybWF0aW5nIGN1cnJlbnQgJHZvbG5h bWVcbiI7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gdW5kZWY7Cj4gIH0KPiAgCj4gIHN1YiB2b2x1 bWVfc25hcHNob3RfZGVsZXRlIHsKPiAtICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwg JHZvbG5hbWUsICRzbmFwKSA9IEBfOwo+ICsgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlk LCAkdm9sbmFtZSwgJHNuYXAsICRydW5uaW5nKSA9IEBfOwo+ICsKPiArICAgIG15ICgkdnR5cGUs ICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQsICRpc0Jhc2UsICRmb3JtYXQpID0g JGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICBkaWUgImNhbid0IGRl bGV0ZSBzbmFwc2hvdCBmb3IgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJGZvcm1hdCBuZSAncWNv dzInOwo+ICsKPiArICAgIGlmICgkcnVubmluZykgewo+ICsJJHZvbG5hbWUgPSAkY2xhc3MtPmdl dF9zbmFwX3ZvbG5hbWUoJHZvbG5hbWUsICRzbmFwKTsKPiArCW15ICRjbGVhbnVwX3dvcmtlciA9 IGV2YWwgeyAkY2xhc3MtPmZyZWVfaW1hZ2UoJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJGlz QmFzZSwgJGZvcm1hdCkgfTsKPiArCWRpZSAiZXJyb3IgZGVsZXRpbmcgc25hcHNob3QgJHNuYXBc biIgaWYgJEA7ICAgIAo+ICsKPiArCWlmICgkY2xlYW51cF93b3JrZXIpIHsKPiArCSAgICBteSAk cnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6Z2V0KCk7Cj4gKwkgICAgbXkgJGF1dGh1c2Vy ID0gJHJwY2Vudi0+Z2V0X3VzZXIoKTsKPiArCSAgICAkcnBjZW52LT5mb3JrX3dvcmtlcignaW1n ZGVsJywgdW5kZWYsICRhdXRodXNlciwgJGNsZWFudXBfd29ya2VyKTsKPiArCX0KPiArCXJldHVy bjsKPiArICAgIH0KPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCBkZWxldGUgaXMgbm90IGlt cGxlbWVudGVkIjsKPiArICAgIG15ICRjbWQgPSAiIjsKPiArICAgIG15ICRwYXRoID0gJGNsYXNz LT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsKPiArCj4gKyAgICBteSAkc25hcHNo b3RzID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygkc2NmZywgJHN0b3JlaWQsICR2b2xu YW1lKTsKPiArICAgIG15ICRzbmFwcGF0aCA9ICRzbmFwc2hvdHMtPnskc25hcH0tPntmaWxlfTsK PiArICAgIG15ICRzbmFwdm9sbmFtZSA9ICRzbmFwc2hvdHMtPnskc25hcH0tPnt2b2xuYW1lfTsK PiArICAgIGRpZSAidm9sdW1lICRzbmFwcGF0aCBpcyBtaXNzaW5nIiBpZiAhLWUgJHNuYXBwYXRo Owo+ICsKPiArICAgIG15ICRwYXJlbnRzbmFwID0gJHNuYXBzaG90cy0+eyRzbmFwfS0+e3BhcmVu dH07Cj4gKwo+ICsgICAgbXkgJGNoaWxkc25hcCA9ICRzbmFwc2hvdHMtPnskc25hcH0tPntjaGls ZH07Cj4gKyAgICBteSAkY2hpbGRwYXRoID0gJHNuYXBzaG90cy0+eyRjaGlsZHNuYXB9LT57Zmls ZX07Cj4gKyAgICBteSAkY2hpbGR2b2xuYW1lID0gJHNuYXBzaG90cy0+eyRjaGlsZHNuYXB9LT57 dm9sbmFtZX07Cj4gKwo+ICsgICAgbXkgJGNsZWFudXBfd29ya2VyID0gdW5kZWY7Cj4gKyAgICBt eSAkZXJyID0gdW5kZWY7Cj4gKyAgICAjaWYgZmlyc3Qgc25hcHNob3QsYXMgaXQgc2hvdWxkIGJl IGJpZ2dlciwgIHdlIG1lcmdlIGNoaWxkLCBhbmQgcmVuYW1lIHRoZSBzbmFwc2hvdCB0byBjaGls ZAo+ICsgICAgaWYoISRwYXJlbnRzbmFwKSB7Cj4gKwlwcmludCAiY29tbWl0OiBtZXJnZSBjb250 ZW50IG9mICRjaGlsZHBhdGggaW50byAkc25hcHBhdGhcbiI7Cj4gKwkjY2FuJ3QgdXNlIC1kIGhl cmUsIGFzIGl0J3MgYW4gbHZtIHZvbHVtZQo+ICsJJGNtZCA9IFsnL3Vzci9iaW4vcWVtdS1pbWcn LCAnY29tbWl0JywgJGNoaWxkcGF0aF07Cj4gKwlldmFsIHsJcnVuX2NvbW1hbmQoJGNtZCkgfTsK PiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiZXJyb3IgY29tbWl0aW5nICRjaGlsZHBhdGggdG8g JHNuYXBwYXRoOyAkQFxuIjsKPiArCX0KPiArCXByaW50ImRlbGV0ZSAkY2hpbGR2b2xuYW1lXG4i Owo+ICsKPiArCSRjbGVhbnVwX3dvcmtlciA9IGV2YWwgeyAkY2xhc3MtPmZyZWVfaW1hZ2UoJHN0 b3JlaWQsICRzY2ZnLCAkY2hpbGR2b2xuYW1lLCAwKSB9Owo+ICsJaWYgKCRAKSB7Cj4gKwkgICAg ZGllICJlcnJvciBkZWxldGUgb2xkIHNuYXBzaG90IHZvbHVtZSAkY2hpbGR2b2xuYW1lOiAkQFxu IjsKPiArCX0KPiArCj4gKwlwcmludCJyZW5hbWUgJHNuYXB2b2xuYW1lIHRvICRjaGlsZHZvbG5h bWVcbiI7Cj4gKwlteSAkdmcgPSAkc2NmZy0+e3ZnbmFtZX07Cj4gKwlldmFsIHsgbHZyZW5hbWUo JHZnLCAkc25hcHZvbG5hbWUsICRjaGlsZHZvbG5hbWUpIH07Cj4gKwlpZiAoJEApIHsKPiArCSAg ICB3YXJuICRAOwo+ICsJICAgICRlcnIgPSAiZXJyb3IgcmVuYW1pbmcgc25hcHNob3Q6ICRAXG4i Owo+ICsJfQo+ICsKPiArICAgIH0gZWxzZSB7Cj4gKwkjd2UgcmViYXNlIHRoZSBjaGlsZCBpbWFn ZSBvbiB0aGUgcGFyZW50IGFzIG5ldyBiYWNraW5nIGltYWdlCj4gKwlteSAkcGFyZW50cGF0aCA9 ICRzbmFwc2hvdHMtPnskcGFyZW50c25hcH0tPntmaWxlfTsKPiArCXByaW50ICJyZWJhc2U6IG1l cmdlIGRpZmYgY29udGVudCBiZXR3ZWVuICRwYXJlbnRwYXRoIGFuZCAkY2hpbGRwYXRoIGludG8g JGNoaWxkcGF0aFxuIjsKPiArCSRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ3JlYmFzZScs ICctYicsICRwYXJlbnRwYXRoLCAnLUYnLCAncWNvdzInLCAnLWYnLCAncWNvdzInLCAkY2hpbGRw YXRoXTsKPiArCWV2YWwgeyBydW5fY29tbWFuZCgkY21kKSB9Owo+ICsJaWYgKCRAKSB7Cj4gKwkg ICAgZGllICJlcnJvciByZWJhc2UgJGNoaWxkcGF0aCBmcm9tICRwYXJlbnRwYXRoOyAkQFxuIjsK PiArCX0KPiArCSNkZWxldGUgdGhlIHNuYXBzaG90Cj4gKwlldmFsIHsgJGNsZWFudXBfd29ya2Vy ID0gJGNsYXNzLT5mcmVlX2ltYWdlKCRzdG9yZWlkLCAkc2NmZywgJHNuYXB2b2xuYW1lLCAwKTsg fTsKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiZXJyb3IgZGVsZXRlIG9sZCBzbmFwc2hvdCB2 b2x1bWUgJHNuYXB2b2xuYW1lXG4iOwo+ICsJfQo+ICsgICAgfQo+ICsKPiArICAgIGlmICgkY2xl YW51cF93b3JrZXIpIHsKPiArCW15ICRycGNlbnYgPSBQVkU6OlJQQ0Vudmlyb25tZW50OjpnZXQo KTsKPiArCW15ICRhdXRodXNlciA9ICRycGNlbnYtPmdldF91c2VyKCk7Cj4gKwkkcnBjZW52LT5m b3JrX3dvcmtlcignaW1nZGVsJywgdW5kZWYsICRhdXRodXNlciwgJGNsZWFudXBfd29ya2VyKTsK PiArICAgIH0KPiArCj4gKyAgICBkaWUgJGVyciBpZiAkZXJyOwo+ICB9Cj4gIAo+ICBzdWIgdm9s dW1lX2hhc19mZWF0dXJlIHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkZmVhdHVyZSwgJHN0 b3JlaWQsICR2b2xuYW1lLCAkc25hcG5hbWUsICRydW5uaW5nKSA9IEBfOwo+ICAKPiAgICAgIG15 ICRmZWF0dXJlcyA9IHsKPiAtCWNvcHkgPT4geyBiYXNlID0+IDEsIGN1cnJlbnQgPT4gMX0sCj4g LQlyZW5hbWUgPT4ge2N1cnJlbnQgPT4gMX0sCj4gKyAgICAgICAgY29weSA9PiB7Cj4gKyAgICAg ICAgICAgIGJhc2UgPT4geyBxY293MiA9PiAxLCByYXcgPT4gMSB9LAo+ICsgICAgICAgICAgICBj dXJyZW50ID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDF9LAo+ICsgICAgICAgICAgICBzbmFwID0+ IHsgcWNvdzIgPT4gMSB9LAo+ICsgICAgICAgIH0sCj4gKyAgICAgICAgJ3JlbmFtZScgPT4gewo+ ICsgICAgICAgICAgICBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDF9LAo+ICsgICAg ICAgIH0sCj4gKyAgICAgICAgc25hcHNob3QgPT4gewo+ICsgICAgICAgICAgICBjdXJyZW50ID0+ IHsgcWNvdzIgPT4gMSB9LAo+ICsgICAgICAgICAgICBzbmFwID0+IHsgcWNvdzIgPT4gMSB9LAo+ ICsgICAgICAgIH0sCj4gKyMJZml4bWU6IGFkZCBsYXRlciA/ICh3ZSBuZWVkIHRvIGhhbmRsZSBi YXNlcGF0aCwgdm9sdW1lIGFjdGl2YXRpb24sLi4uKQo+ICsjCXRlbXBsYXRlID0+IHsKPiArIwkg ICAgY3VycmVudCA9PiB7IHJhdyA9PiAxLCBxY293MiA9PiAxfSwKPiArIwl9LAo+ICsjCWNsb25l ID0+IHsKPiArIwkgICAgYmFzZSA9PiB7IHFjb3cyID0+IDEgfSwKPiArIwl9LAo+ICAgICAgfTsK PiAgCj4gLSAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2bWlk LCAkaXNCYXNlKSA9Cj4gKwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAkYmFzZW5h bWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICAJJGNsYXNzLT5wYXJzZV92b2xu YW1lKCR2b2xuYW1lKTsKPiAgCj4gICAgICBteSAka2V5ID0gdW5kZWY7Cj4gQEAgLTYyMCw3ICs4 NjEsNyBAQCBzdWIgdm9sdW1lX2hhc19mZWF0dXJlIHsKPiAgICAgIH1lbHNlewo+ICAJJGtleSA9 ICAkaXNCYXNlID8gJ2Jhc2UnIDogJ2N1cnJlbnQnOwo+ICAgICAgfQo+IC0gICAgcmV0dXJuIDEg aWYgJGZlYXR1cmVzLT57JGZlYXR1cmV9LT57JGtleX07Cj4gKyAgICByZXR1cm4gMSBpZiBkZWZp bmVkKCRmZWF0dXJlcy0+eyRmZWF0dXJlfS0+eyRrZXl9LT57JGZvcm1hdH0pOwo+ICAKPiAgICAg IHJldHVybiB1bmRlZjsKPiAgfQo+IEBAIC03NDUsNCArOTg2LDE4IEBAIHN1YiByZW5hbWVfdm9s dW1lIHsKPiAgICAgIHJldHVybiAiJHtzdG9yZWlkfToke3RhcmdldF92b2xuYW1lfSI7Cj4gIH0K PiAgCj4gK3N1YiBnZXRfc25hcF9uYW1lIHsKPiArICAgIG15ICgkY2xhc3MsICR2b2xuYW1lLCAk c25hcG5hbWUpID0gQF87Cj4gKwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAkYmFz ZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPSAkY2xhc3MtPnBhcnNlX3ZvbG5h bWUoJHZvbG5hbWUpOwo+ICsgICAgJG5hbWUgPSAhJHNuYXBuYW1lIHx8ICRzbmFwbmFtZSBlcSAn Y3VycmVudCcgPyAkbmFtZSA6ICJzbmFwLSRzbmFwbmFtZS0kbmFtZSI7Cj4gKyAgICByZXR1cm4g JG5hbWU7Cj4gK30KPiArCj4gK3N1YiBnZXRfc25hcF92b2xuYW1lIHsKPiArICAgIG15ICgkY2xh c3MsICR2b2xuYW1lLCAkc25hcG5hbWUpID0gQF87Cj4gKwo+ICsgICAgcmV0dXJuICRjbGFzcy0+ Z2V0X3NuYXBfbmFtZSgkdm9sbmFtZSwgJHNuYXBuYW1lKTsKPiArfQo+ICsKPiAgMTsKPiAtLSAK PiAyLjM5LjUKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRw czovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK