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 9611C1FF17A for ; Fri, 4 Jul 2025 16:09:21 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C0BB639664; Fri, 4 Jul 2025 16:10:02 +0200 (CEST) Date: Fri, 4 Jul 2025 16:09:25 +0200 From: Wolfgang Bumiller To: Gabriel Goller Message-ID: References: <20250702145101.894299-1-g.goller@proxmox.com> <20250702145101.894299-10-g.goller@proxmox.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20250702145101.894299-10-g.goller@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.079 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 KAM_SHORT 0.001 Use of a URL Shortener for very short URL 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 proxmox-ve-rs v4 03/22] sdn-types: initial commit 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 Cc: 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" T24gV2VkLCBKdWwgMDIsIDIwMjUgYXQgMDQ6NDk6NTRQTSArMDIwMCwgR2FicmllbCBHb2xsZXIg d3JvdGU6Cj4gRnJvbTogU3RlZmFuIEhhbnJlaWNoIDxzLmhhbnJlaWNoQHByb3htb3guY29tPgo+ IAo+IFRoaXMgY3JhdGUgY29udGFpbnMgU0ROIHNwZWNpZmljIHR5cGVzLCBzbyB0aGV5IGNhbiBi ZSByZS11c2VkIGFjcm9zcwo+IG11bHRpcGxlIGNyYXRlcyAoVGhlIGluaXRpYWwgdXNlLWNhc2Ug YmVpbmcgc2hhcmVkIHR5cGVzIGJldHdlZW4KPiBwcm94bW94LWZyciBhbmQgcHJveG1veC12ZS1j b25maWcpLgo+IAo+IFRoaXMgaW5pdGlhbCBjb21taXQgY29udGFpbnMgdHlwZXMgZm9yIHRoZSBm b2xsb3dpbmcgZW50aXRpZXM6Cj4gKiBPcGVuRmFicmljIEhlbGxvIEludGVydmFsL011bHRpcGxp ZXIgYW5kIENTTlAgSW50ZXJ2YWwKPiAqIE5ldHdvcmsgRW50aXR5IFRpdGxlICh1c2VkIGFzIFJv dXRlciBJRHMgaW4gSVMtSVMgLyBPcGVuRmFicmljKQo+ICogT1NQRiBBcmVhCj4gCj4gQ28tYXV0 aG9yZWQtYnk6IEdhYnJpZWwgR29sbGVyIDxnLmdvbGxlckBwcm94bW94LmNvbT4KPiBTaWduZWQt b2ZmLWJ5OiBTdGVmYW4gSGFucmVpY2ggPHMuaGFucmVpY2hAcHJveG1veC5jb20+Cj4gLS0tCj4g IENhcmdvLnRvbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKPiAgcHJveG1v eC1zZG4tdHlwZXMvQ2FyZ28udG9tbCAgICAgICAgICAgfCAgMTkgKysKPiAgcHJveG1veC1zZG4t dHlwZXMvZGViaWFuL2NoYW5nZWxvZyAgICAgfCAgIDUgKwo+ICBwcm94bW94LXNkbi10eXBlcy9k ZWJpYW4vY29udHJvbCAgICAgICB8ICA1MyArKysrCj4gIHByb3htb3gtc2RuLXR5cGVzL2RlYmlh bi9jb3B5cmlnaHQgICAgIHwgIDE4ICsrCj4gIHByb3htb3gtc2RuLXR5cGVzL2RlYmlhbi9kZWJj YXJnby50b21sIHwgICA3ICsKPiAgcHJveG1veC1zZG4tdHlwZXMvc3JjL2FyZWEucnMgICAgICAg ICAgfCAgNjMgKysrKysKPiAgcHJveG1veC1zZG4tdHlwZXMvc3JjL2xpYi5ycyAgICAgICAgICAg fCAgIDMgKwo+ICBwcm94bW94LXNkbi10eXBlcy9zcmMvbmV0LnJzICAgICAgICAgICB8IDMyOSAr KysrKysrKysrKysrKysrKysrKysrKysrCj4gIHByb3htb3gtc2RuLXR5cGVzL3NyYy9vcGVuZmFi cmljLnJzICAgIHwgIDcyICsrKysrKwo+ICBwcm94bW94LXZlLWNvbmZpZy9DYXJnby50b21sICAg ICAgICAgICB8ICAgOCArLQo+ICAxMSBmaWxlcyBjaGFuZ2VkLCA1ODMgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2RuLXR5cGVzL0Nh cmdvLnRvbWwKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2RuLXR5cGVzL2RlYmlhbi9j aGFuZ2Vsb2cKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2RuLXR5cGVzL2RlYmlhbi9j b250cm9sCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LXNkbi10eXBlcy9kZWJpYW4vY29w eXJpZ2h0Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LXNkbi10eXBlcy9kZWJpYW4vZGVi Y2FyZ28udG9tbAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1zZG4tdHlwZXMvc3JjL2Fy ZWEucnMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2RuLXR5cGVzL3NyYy9saWIucnMK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2RuLXR5cGVzL3NyYy9uZXQucnMKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2RuLXR5cGVzL3NyYy9vcGVuZmFicmljLnJzCj4gCj4g ZGlmZiAtLWdpdCBhL0NhcmdvLnRvbWwgYi9DYXJnby50b21sCj4gaW5kZXggYjZlNmRmNzc5Njli Li4wN2RhOWVmNzBlNmQgMTAwNjQ0Cj4gLS0tIGEvQ2FyZ28udG9tbAo+ICsrKyBiL0NhcmdvLnRv bWwKPiBAQCAtMSw2ICsxLDcgQEAKPiAgW3dvcmtzcGFjZV0KPiAgbWVtYmVycyA9IFsKPiAgICAg ICJwcm94bW94LXZlLWNvbmZpZyIsCj4gKyAgICAicHJveG1veC1zZG4tdHlwZXMiLAo+ICBdCj4g IGV4Y2x1ZGUgPSBbCj4gICAgICAiYnVpbGQiLAo+IEBAIC0xNiw0ICsxNywxMyBAQCBleGNsdWRl ID0gWyAiZGViaWFuIiBdCj4gIHJ1c3QtdmVyc2lvbiA9ICIxLjgyIgo+ICAKPiAgW3dvcmtzcGFj ZS5kZXBlbmRlbmNpZXNdCj4gK2FueWhvdyA9ICIxIgo+ICtjb25zdF9mb3JtYXQgPSAiMC4yIgo+ ICtyZWdleCA9ICIxLjciCj4gK3NlcmRlID0geyB2ZXJzaW9uID0gIjEiIH0KPiArc2VyZGVfd2l0 aCA9ICIzIgo+ICt0aGlzZXJyb3IgPSAiMi4wLjAiCj4gKwo+ICBwcm94bW94LW5ldHdvcmstdHlw ZXMgPSB7IHZlcnNpb24gPSAiMC4xIiB9Cj4gK3Byb3htb3gtc2NoZW1hID0geyB2ZXJzaW9uID0g IjQiIH0KPiArcHJveG1veC1zZG4tdHlwZXMgPSB7IHZlcnNpb24gPSAiMC4xIiwgcGF0aCA9ICJw cm94bW94LXNkbi10eXBlcyIgfQo+IGRpZmYgLS1naXQgYS9wcm94bW94LXNkbi10eXBlcy9DYXJn by50b21sIGIvcHJveG1veC1zZG4tdHlwZXMvQ2FyZ28udG9tbAo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi45YTIwYjA3MWExMjYKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvcHJveG1veC1zZG4tdHlwZXMvQ2FyZ28udG9tbAo+IEBAIC0wLDAgKzEsMTkgQEAKPiAr W3BhY2thZ2VdCj4gK25hbWUgPSAicHJveG1veC1zZG4tdHlwZXMiCj4gK3ZlcnNpb24gPSAiMC4x LjAiCj4gK2F1dGhvcnMud29ya3NwYWNlID0gdHJ1ZQo+ICtlZGl0aW9uLndvcmtzcGFjZSA9IHRy dWUKPiArbGljZW5zZS53b3Jrc3BhY2UgPSB0cnVlCj4gK2hvbWVwYWdlLndvcmtzcGFjZSA9IHRy dWUKPiArZXhjbHVkZS53b3Jrc3BhY2UgPSB0cnVlCj4gK3J1c3QtdmVyc2lvbi53b3Jrc3BhY2Ug PSB0cnVlCj4gKwo+ICtbZGVwZW5kZW5jaWVzXQo+ICthbnlob3cgPSB7IHdvcmtzcGFjZSA9IHRy dWUgfQo+ICtjb25zdF9mb3JtYXQgPSB7IHdvcmtzcGFjZSA9IHRydWUgfQo+ICtyZWdleCA9IHsg d29ya3NwYWNlID0gdHJ1ZSB9Cj4gK3NlcmRlID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJl cyA9IFsgImRlcml2ZSIgXSB9Cj4gK3NlcmRlX3dpdGggPSB7IHdvcmtzcGFjZSA9IHRydWUgfQo+ ICsKPiArcHJveG1veC1zY2hlbWEgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0gWyAi YXBpLW1hY3JvIiwgImFwaS10eXBlcyIgXSB9Cj4gK3Byb3htb3gtc2VyZGUgPSB7IHZlcnNpb24g PSAiMS4wLjAiLCBmZWF0dXJlcyA9IFsgInBlcmwiIF0gfQo+IGRpZmYgLS1naXQgYS9wcm94bW94 LXNkbi10eXBlcy9kZWJpYW4vY2hhbmdlbG9nIGIvcHJveG1veC1zZG4tdHlwZXMvZGViaWFuL2No YW5nZWxvZwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi40MjI5 MjFjMmQxZjQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcHJveG1veC1zZG4tdHlwZXMvZGViaWFu L2NoYW5nZWxvZwo+IEBAIC0wLDAgKzEsNSBAQAo+ICtydXN0LXByb3htb3gtc2RuLXR5cGVzICgw LjEuMC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KPiArCj4gKyAgKiBJbml0aWFsIHJlbGVh c2UuCj4gKwo+ICsgLS0gUHJveG1veCBTdXBwb3J0IFRlYW0gPHN1cHBvcnRAcHJveG1veC5jb20+ ICBNb24sIDAzIEp1biAyMDI0IDEwOjUxOjExICswMjAwCj4gZGlmZiAtLWdpdCBhL3Byb3htb3gt c2RuLXR5cGVzL2RlYmlhbi9jb250cm9sIGIvcHJveG1veC1zZG4tdHlwZXMvZGViaWFuL2NvbnRy b2wKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYmZkYjQ3ZWIw YjU1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Byb3htb3gtc2RuLXR5cGVzL2RlYmlhbi9jb250 cm9sCj4gQEAgLTAsMCArMSw1MyBAQAo+ICtTb3VyY2U6IHJ1c3QtcHJveG1veC1zZG4tdHlwZXMK PiArU2VjdGlvbjogcnVzdAo+ICtQcmlvcml0eTogb3B0aW9uYWwKPiArQnVpbGQtRGVwZW5kczog ZGViaGVscGVyLWNvbXBhdCAoPSAxMyksCj4gKyBkaC1zZXF1ZW5jZS1jYXJnbwo+ICtCdWlsZC1E ZXBlbmRzLUFyY2g6IGNhcmdvOm5hdGl2ZSA8IW5vY2hlY2s+LAo+ICsgcnVzdGM6bmF0aXZlICg+ PSAxLjgyKSA8IW5vY2hlY2s+LAo+ICsgbGlic3RkLXJ1c3QtZGV2IDwhbm9jaGVjaz4sCj4gKyBs aWJydXN0LWFueWhvdy0xK2RlZmF1bHQtZGV2IDwhbm9jaGVjaz4sCj4gKyBsaWJydXN0LWNvbnN0 LWZvcm1hdC0wLjIrZGVmYXVsdC1kZXYgPCFub2NoZWNrPiwKPiArIGxpYnJ1c3QtcHJveG1veC1z Y2hlbWEtNCthcGktbWFjcm8tZGV2IDwhbm9jaGVjaz4sCj4gKyBsaWJydXN0LXByb3htb3gtc2No ZW1hLTQrYXBpLXR5cGVzLWRldiA8IW5vY2hlY2s+LAo+ICsgbGlicnVzdC1wcm94bW94LXNjaGVt YS00K2RlZmF1bHQtZGV2IDwhbm9jaGVjaz4sCj4gKyBsaWJydXN0LXByb3htb3gtc2VyZGUtMC4x K2RlZmF1bHQtZGV2ICg+PSAwLjEuMi1+fikgPCFub2NoZWNrPiwKPiArIGxpYnJ1c3QtcHJveG1v eC1zZXJkZS0wLjErcGVybC1kZXYgKD49IDAuMS4yLX5+KSA8IW5vY2hlY2s+LAo+ICsgbGlicnVz dC1yZWdleC0xK2RlZmF1bHQtZGV2ICg+PSAxLjctfn4pIDwhbm9jaGVjaz4sCj4gKyBsaWJydXN0 LXNlcmRlLTErZGVmYXVsdC1kZXYgPCFub2NoZWNrPiwKPiArIGxpYnJ1c3Qtc2VyZGUtMStkZXJp dmUtZGV2IDwhbm9jaGVjaz4sCj4gKyBsaWJydXN0LXNlcmRlLXdpdGgtMytkZWZhdWx0LWRldiA8 IW5vY2hlY2s+Cj4gK01haW50YWluZXI6IFByb3htb3ggU3VwcG9ydCBUZWFtIDxzdXBwb3J0QHBy b3htb3guY29tPgo+ICtTdGFuZGFyZHMtVmVyc2lvbjogNC43LjAKPiArVmNzLUdpdDogZ2l0Oi8v Z2l0LnByb3htb3guY29tL2dpdC9wcm94bW94LXZlLXJzLmdpdAo+ICtWY3MtQnJvd3NlcjogaHR0 cHM6Ly9naXQucHJveG1veC5jb20vP3A9cHJveG1veC12ZS1ycy5naXQKPiArSG9tZXBhZ2U6IGh0 dHBzOi8vcHJveG1veC5jb20KPiArWC1DYXJnby1DcmF0ZTogcHJveG1veC1zZG4tdHlwZXMKPiAr UnVsZXMtUmVxdWlyZXMtUm9vdDogbm8KPiArCj4gK1BhY2thZ2U6IGxpYnJ1c3QtcHJveG1veC1z ZG4tdHlwZXMtZGV2Cj4gK0FyY2hpdGVjdHVyZTogYW55Cj4gK011bHRpLUFyY2g6IHNhbWUKPiAr RGVwZW5kczoKPiArICR7bWlzYzpEZXBlbmRzfSwKPiArIGxpYnJ1c3QtYW55aG93LTErZGVmYXVs dC1kZXYsCj4gKyBsaWJydXN0LWNvbnN0LWZvcm1hdC0wLjIrZGVmYXVsdC1kZXYsCj4gKyBsaWJy dXN0LXByb3htb3gtc2NoZW1hLTQrYXBpLW1hY3JvLWRldiwKPiArIGxpYnJ1c3QtcHJveG1veC1z Y2hlbWEtNCthcGktdHlwZXMtZGV2LAo+ICsgbGlicnVzdC1wcm94bW94LXNjaGVtYS00K2RlZmF1 bHQtZGV2LAo+ICsgbGlicnVzdC1wcm94bW94LXNlcmRlLTAuMStkZWZhdWx0LWRldiAoPj0gMC4x LjItfn4pLAo+ICsgbGlicnVzdC1wcm94bW94LXNlcmRlLTAuMStwZXJsLWRldiAoPj0gMC4xLjIt fn4pLAo+ICsgbGlicnVzdC1yZWdleC0xK2RlZmF1bHQtZGV2ICg+PSAxLjctfn4pLAo+ICsgbGli cnVzdC1zZXJkZS0xK2RlZmF1bHQtZGV2LAo+ICsgbGlicnVzdC1zZXJkZS0xK2Rlcml2ZS1kZXYs Cj4gKyBsaWJydXN0LXNlcmRlLXdpdGgtMytkZWZhdWx0LWRldgo+ICtQcm92aWRlczoKPiArIGxp YnJ1c3QtcHJveG1veC1zZG4tdHlwZXMrZGVmYXVsdC1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0p LAo+ICsgbGlicnVzdC1wcm94bW94LXNkbi10eXBlcy0wLWRldiAoPSAke2JpbmFyeTpWZXJzaW9u fSksCj4gKyBsaWJydXN0LXByb3htb3gtc2RuLXR5cGVzLTArZGVmYXVsdC1kZXYgKD0gJHtiaW5h cnk6VmVyc2lvbn0pLAo+ICsgbGlicnVzdC1wcm94bW94LXNkbi10eXBlcy0wLjEtZGV2ICg9ICR7 YmluYXJ5OlZlcnNpb259KSwKPiArIGxpYnJ1c3QtcHJveG1veC1zZG4tdHlwZXMtMC4xK2RlZmF1 bHQtZGV2ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKPiArIGxpYnJ1c3QtcHJveG1veC1zZG4tdHlw ZXMtMC4xLjAtZGV2ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKPiArIGxpYnJ1c3QtcHJveG1veC1z ZG4tdHlwZXMtMC4xLjArZGVmYXVsdC1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0pCj4gK0Rlc2Ny aXB0aW9uOiBSdXN0IGNyYXRlICJwcm94bW94LXNkbi10eXBlcyIgLSBSdXN0IHNvdXJjZSBjb2Rl Cj4gKyBTb3VyY2UgY29kZSBmb3IgRGViaWFuaXplZCBSdXN0IGNyYXRlICJwcm94bW94LXNkbi10 eXBlcyIKPiBkaWZmIC0tZ2l0IGEvcHJveG1veC1zZG4tdHlwZXMvZGViaWFuL2NvcHlyaWdodCBi L3Byb3htb3gtc2RuLXR5cGVzL2RlYmlhbi9jb3B5cmlnaHQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWVhOGE1NmI0ZjU4Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL3Byb3htb3gtc2RuLXR5cGVzL2RlYmlhbi9jb3B5cmlnaHQKPiBAQCAtMCwwICsxLDE4IEBA Cj4gK0Zvcm1hdDogaHR0cHM6Ly93d3cuZGViaWFuLm9yZy9kb2MvcGFja2FnaW5nLW1hbnVhbHMv Y29weXJpZ2h0LWZvcm1hdC8xLjAvCj4gKwo+ICtGaWxlczoKPiArICoKPiArQ29weXJpZ2h0OiAy MDE5IC0gMjAyNSBQcm94bW94IFNlcnZlciBTb2x1dGlvbnMgR21iSCA8c3VwcG9ydEBwcm94bW94 LmNvbT4KPiArTGljZW5zZTogQUdQTC0zLjAtb3ItbGF0ZXIKPiArIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVu ZGVyCj4gKyB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKPiArIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55Cj4gKyBs YXRlciB2ZXJzaW9uLgo+ICsgLgo+ICsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCj4gKyBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUwo+ICsgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZl cm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQo+ICsgZGV0YWlscy4KPiArIC4KPiAr IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhbG9uZwo+ICsgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2Vl IDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gZGlmZiAtLWdpdCBhL3Byb3htb3gt c2RuLXR5cGVzL2RlYmlhbi9kZWJjYXJnby50b21sIGIvcHJveG1veC1zZG4tdHlwZXMvZGViaWFu L2RlYmNhcmdvLnRvbWwKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAw MC4uODdhNzg3ZTZkMDNlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Byb3htb3gtc2RuLXR5cGVz L2RlYmlhbi9kZWJjYXJnby50b21sCj4gQEAgLTAsMCArMSw3IEBACj4gK292ZXJsYXkgPSAiLiIK PiArY3JhdGVfc3JjX3BhdGggPSAiLi4iCj4gK21haW50YWluZXIgPSAiUHJveG1veCBTdXBwb3J0 IFRlYW0gPHN1cHBvcnRAcHJveG1veC5jb20+Igo+ICsKPiArW3NvdXJjZV0KPiArdmNzX2dpdCA9 ICJnaXQ6Ly9naXQucHJveG1veC5jb20vZ2l0L3Byb3htb3gtdmUtcnMuZ2l0Igo+ICt2Y3NfYnJv d3NlciA9ICJodHRwczovL2dpdC5wcm94bW94LmNvbS8/cD1wcm94bW94LXZlLXJzLmdpdCIKPiBk aWZmIC0tZ2l0IGEvcHJveG1veC1zZG4tdHlwZXMvc3JjL2FyZWEucnMgYi9wcm94bW94LXNkbi10 eXBlcy9zcmMvYXJlYS5ycwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MDAwLi43MWQyZDUzYmEwMmYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcHJveG1veC1zZG4tdHlw ZXMvc3JjL2FyZWEucnMKPiBAQCAtMCwwICsxLDYzIEBACj4gK3VzZSBzdGQ6OntmbXQ6OkRpc3Bs YXksIG5ldDo6SXB2NEFkZHJ9Owo+ICsKPiArdXNlIGFueWhvdzo6RXJyb3I7Cj4gK3VzZSBwcm94 bW94X3NjaGVtYTo6e0FwaVR5cGUsIFNjaGVtYSwgU3RyaW5nU2NoZW1hLCBVcGRhdGVyVHlwZX07 Cj4gK3VzZSBzZXJkZV93aXRoOjp7RGVzZXJpYWxpemVGcm9tU3RyLCBTZXJpYWxpemVEaXNwbGF5 fTsKPiArCj4gKy8vLyBBbiBPU1BGIEFyZWEuCj4gKy8vLwo+ICsvLy8gSW50ZXJuYWxseSB0aGUg YXJlYSBpcyBqdXN0IGEgMzIgYml0IG51bWJlciBhbmQgaXMgb2Z0ZW4gcmVwcmVzZW50ZWQgaW4g ZG90dGVkLWRlY2ltYWwKPiArLy8vIG5vdGF0aW9uLCBsaWtlIGFuIElQdjQuIEZSUiBhbHNvIGFs bG93cyB1cyB0byBzcGVjaWZ5IGl0IGFzIGEgbnVtYmVyIG9yIGFuIElQdjQtQWRkcmVzcy4KPiAr Ly8vIFRvIGtlZXAgYSBuaWNlIHVzZXIgZXhwZXJpZW5jZSB3ZSBrZWVwIHdoaWNoZXZlciBmb3Jt YXQgdGhlIHVzZXIgZW50ZXJlZC4KPiArI1tkZXJpdmUoCj4gKyAgICBEZWJ1ZywgRGVzZXJpYWxp emVGcm9tU3RyLCBTZXJpYWxpemVEaXNwbGF5LCBDbG9uZSwgSGFzaCwgUGFydGlhbEVxLCBFcSwg UGFydGlhbE9yZCwgT3JkLAo+ICspXQo+ICtwdWIgZW51bSBBcmVhIHsKPiArICAgIE51bWJlcih1 MzIpLAo+ICsgICAgSXBBZGRyZXNzKElwdjRBZGRyKSwKPiArfQo+ICsKPiAraW1wbCBBcGlUeXBl IGZvciBBcmVhIHsKPiArICAgIGNvbnN0IEFQSV9TQ0hFTUE6IFNjaGVtYSA9Cj4gKyAgICAgICAg U3RyaW5nU2NoZW1hOjpuZXcoIlRoZSBPU1BGIGFyZWEsIHdoaWNoIGNhbiBiZSBhIG51bWJlciBv ciBhIGlwLWFkZHJlc3MuIikuc2NoZW1hKCk7Cj4gK30KPiArCj4gK2ltcGwgVXBkYXRlclR5cGUg Zm9yIEFyZWEgewo+ICsgICAgdHlwZSBVcGRhdGVyID0gT3B0aW9uPEFyZWE+Owo+ICt9Cj4gKwo+ ICtpbXBsIHN0ZDo6c3RyOjpGcm9tU3RyIGZvciBBcmVhIHsKPiArICAgIHR5cGUgRXJyID0gRXJy b3I7Cj4gKwo+ICsgICAgZm4gZnJvbV9zdHIoczogJnN0cikgLT4gUmVzdWx0PFNlbGYsIFNlbGY6 OkVycj4gewo+ICsgICAgICAgIGlmIGxldCBPayhpcCkgPSBJcHY0QWRkcjo6ZnJvbV9zdHIocykg ewo+ICsgICAgICAgICAgICBPayhTZWxmOjpJcEFkZHJlc3MoaXApKQo+ICsgICAgICAgIH0gZWxz ZSBpZiBsZXQgT2sobnVtYmVyKSA9IHUzMjo6ZnJvbV9zdHIocykgewo+ICsgICAgICAgICAgICBP ayhTZWxmOjpOdW1iZXIobnVtYmVyKSkKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAg ICBhbnlob3c6OmJhaWwhKCJBcmVhIGlzIG5vdCBhIG51bWJlciwgbm9yIGFuIGlwIGFkZHJlc3Mi KTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4gK2ltcGwgRGlzcGxheSBmb3IgQXJl YSB7Cj4gKyAgICBmbiBmbXQoJnNlbGYsIGY6ICZtdXQgc3RkOjpmbXQ6OkZvcm1hdHRlcjwnXz4p IC0+IHN0ZDo6Zm10OjpSZXN1bHQgewo+ICsgICAgICAgIG1hdGNoIHNlbGYgewo+ICsgICAgICAg ICAgICBBcmVhOjpOdW1iZXIobikgPT4gd3JpdGUhKGYsICJ7bn0iKSwKPiArICAgICAgICAgICAg QXJlYTo6SXBBZGRyZXNzKGkpID0+IHdyaXRlIShmLCAie2l9IiksCj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICt9Cj4gKwo+ICtpbXBsIEFyZWEgewo+ICsgICAgLy8vIEdldCB0aGUgSVB2NCByZXBy ZXNlbnRhdGlvbiBvZiB0aGUgYXJlYS4KPiArICAgIC8vLwo+ICsgICAgLy8vIElmIGl0IGFscmVh ZHkgaXMgc3RvcmVkIGFzIGEgYW4gSVB2NCBhZGRyZXNzLCBpdCBpcyByZXR1cm5lZCBkaXJlY3Rs eS4KPiArICAgIC8vLyBPdGhlcndpc2UsIHRoZSBudW1iZXIgaXMgY29udmVydGVkIHRvIGFuIElQ djQgYWRkcmVzcy4KPiArICAgIHB1YiBmbiBnZXRfaXB2NF9yZXByZXNlbnRhdGlvbigmc2VsZikg LT4gSXB2NEFkZHIgewo+ICsgICAgICAgIG1hdGNoIHNlbGYgewo+ICsgICAgICAgICAgICBBcmVh OjpOdW1iZXIobikgPT4gSXB2NEFkZHI6OmZyb20oKm4pLAo+ICsgICAgICAgICAgICBBcmVhOjpJ cEFkZHJlc3MoaXApID0+ICppcCwKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiBkaWZmIC0t Z2l0IGEvcHJveG1veC1zZG4tdHlwZXMvc3JjL2xpYi5ycyBiL3Byb3htb3gtc2RuLXR5cGVzL3Ny Yy9saWIucnMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMTY1 NmYxZDQ0Yjk1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Byb3htb3gtc2RuLXR5cGVzL3NyYy9s aWIucnMKPiBAQCAtMCwwICsxLDMgQEAKPiArcHViIG1vZCBhcmVhOwo+ICtwdWIgbW9kIG5ldDsK PiArcHViIG1vZCBvcGVuZmFicmljOwo+IGRpZmYgLS1naXQgYS9wcm94bW94LXNkbi10eXBlcy9z cmMvbmV0LnJzIGIvcHJveG1veC1zZG4tdHlwZXMvc3JjL25ldC5ycwo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43OGE0Nzk4M2YwYzcKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvcHJveG1veC1zZG4tdHlwZXMvc3JjL25ldC5ycwo+IEBAIC0wLDAgKzEsMzI5IEBA Cj4gK3VzZSBzdGQ6OnsKPiArICAgIGZtdDo6RGlzcGxheSwKPiArICAgIG5ldDo6e0lwQWRkciwg SXB2NEFkZHIsIElwdjZBZGRyfSwKPiArfTsKPiArCj4gK3VzZSBhbnlob3c6OntiYWlsLCBFcnJv cn07Cj4gK3VzZSBjb25zdF9mb3JtYXQ6OmNvbmNhdGNwOwo+ICt1c2Ugc2VyZGU6OntEZXNlcmlh bGl6ZSwgU2VyaWFsaXplfTsKPiArCj4gK3VzZSBwcm94bW94X3NjaGVtYTo6e2FwaSwgYXBpX3N0 cmluZ190eXBlLCBjb25zdF9yZWdleCwgQXBpU3RyaW5nRm9ybWF0LCBVcGRhdGVyVHlwZX07Cj4g Kwo+ICtjb25zdCBORVRfQUZJX1JFR0VYX1NUUjogJnN0ciA9IHIiKD86W2EtZkEtRjAtOV17Mn0p IjsKCldvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8gcmVwcmVzZW50IHRoZSBgTmV0QUZJYCB0eXBlIGFz IGFuIGB1OGA/CkNvdWxkIHRoZW4gYmUgYENvcHlgIGFuZCB3b3VsZG4ndCBuZWVkIHRvIGFsbG9j YXRlIGEgc3RyaW5nLgoKPiArY29uc3QgTkVUX0FSRUFfUkVHRVhfU1RSOiAmc3RyID0gciIoPzpb YS1mQS1GMC05XXs0fSkiOwo+ICtjb25zdCBORVRfU1lTVEVNX0lEX1JFR0VYX1NUUjogJnN0ciA9 IHIiKD86W2EtZkEtRjAtOV17NH0pXC4oPzpbYS1mQS1GMC05XXs0fSlcLig/OlthLWZBLUYwLTld ezR9KSI7Cj4gK2NvbnN0IE5FVF9TRUxFQ1RPUl9SRUdFWF9TVFI6ICZzdHIgPSByIig/OlthLWZB LUYwLTldezJ9KSI7CgpeIFNhbWUgZm9yIHRoZSBzZWxlY3Rvci4KCj4gKwo+ICtjb25zdF9yZWdl eCEgewo+ICsgICAgTkVUX0FGSV9SRUdFWCA9IGNvbmNhdGNwIShyIl4iLCBORVRfQUZJX1JFR0VY X1NUUiwgciIkIik7Cj4gKyAgICBORVRfQVJFQV9SRUdFWCA9IGNvbmNhdGNwIShyIl4iLCBORVRf QVJFQV9SRUdFWF9TVFIsIHIiJCIpOwo+ICsgICAgTkVUX1NZU1RFTV9JRF9SRUdFWCA9IGNvbmNh dGNwIShyIl4iLCBORVRfU1lTVEVNX0lEX1JFR0VYX1NUUiwgciIkIik7Cj4gKyAgICBORVRfU0VM RUNUT1JfUkVHRVggPSBjb25jYXRjcCEociJeIiwgTkVUX1NFTEVDVE9SX1JFR0VYX1NUUiwgciIk Iik7CgpeIFdoeSBkb24ndCB3ZSBhbmNob3IgdGhlIGNvbnN0cyBhbHJlYWR5IGluc3RlYWQgb2Yg Y29uY2F0aW5nIHRoYXQgaGVyZT8KT3IgLSBpZiB0aGV5IGFyZSBvbmx5IHVzZWQgdGhpcyBvbmNl IHdlIGNvdWxkIGp1c3QgaW5saW5lIHRoZW0gaGVyZT8KCj4gK30KPiArCj4gK2NvbnN0IE5FVF9B RklfRk9STUFUOiBBcGlTdHJpbmdGb3JtYXQgPSBBcGlTdHJpbmdGb3JtYXQ6OlBhdHRlcm4oJk5F VF9BRklfUkVHRVgpOwo+ICtjb25zdCBORVRfQVJFQV9GT1JNQVQ6IEFwaVN0cmluZ0Zvcm1hdCA9 IEFwaVN0cmluZ0Zvcm1hdDo6UGF0dGVybigmTkVUX0FSRUFfUkVHRVgpOwo+ICtjb25zdCBORVRf U1lTVEVNX0lEX0ZPUk1BVDogQXBpU3RyaW5nRm9ybWF0ID0gQXBpU3RyaW5nRm9ybWF0OjpQYXR0 ZXJuKCZORVRfU1lTVEVNX0lEX1JFR0VYKTsKPiArY29uc3QgTkVUX1NFTEVDVE9SX0ZPUk1BVDog QXBpU3RyaW5nRm9ybWF0ID0gQXBpU3RyaW5nRm9ybWF0OjpQYXR0ZXJuKCZORVRfU0VMRUNUT1Jf UkVHRVgpOwo+ICsKPiArYXBpX3N0cmluZ190eXBlISB7Cj4gKyAgICAvLy8gQWRkcmVzcyBGYW1p bHkgYXV0aG9yaXR5IElkZW50aWZpZXIgLSA0OSBUaGUgQUZJIHZhbHVlIDQ5IGlzIHdoYXQgSVMt SVMgKGFuZCBvcGVuZmFicmljKSB1c2VzCj4gKyAgICAvLy8gZm9yIHByaXZhdGUgYWRkcmVzc2lu Zy4KPiArICAgICNbYXBpKGZvcm1hdDogJk5FVF9BRklfRk9STUFUKV0KPiArICAgICNbZGVyaXZl KERlYnVnLCBDbG9uZSwgSGFzaCwgUGFydGlhbEVxLCBFcSwgUGFydGlhbE9yZCwgT3JkLCBTZXJp YWxpemUsIERlc2VyaWFsaXplKV0KPiArICAgIHN0cnVjdCBOZXRBRkkoU3RyaW5nKTsKPiArfQo+ ICsKPiAraW1wbCBEZWZhdWx0IGZvciBOZXRBRkkgewo+ICsgICAgZm4gZGVmYXVsdCgpIC0+IFNl bGYgewo+ICsgICAgICAgIFNlbGYoIjQ5Ii50b19vd25lZCgpKQo+ICsgICAgfQo+ICt9Cj4gKwo+ ICtpbXBsIFVwZGF0ZXJUeXBlIGZvciBOZXRBRkkgewo+ICsgICAgdHlwZSBVcGRhdGVyID0gT3B0 aW9uPE5ldEFGST47Cj4gK30KPiArCj4gK2FwaV9zdHJpbmdfdHlwZSEgewo+ICsgICAgLy8vIEFy ZWEgaWRlbnRpZmllcjogMDAwMSBJUy1JUyBhcmVhIG51bWJlciAobnVtZXJpY2FsIGFyZWEgMSkK PiArICAgIC8vLyBUaGUgc2Vjb25kIHBhcnQgKHN5c3RlbSkgb2YgdGhlIGBuZXRgIGlkZW50aWZp ZXIuIEV2ZXJ5IG5vZGUgaGFzIHRvIGhhdmUgYSBkaWZmZXJlbnQgc3lzdGVtCj4gKyAgICAvLy8g bnVtYmVyLgo+ICsgICAgI1thcGkoZm9ybWF0OiAmTkVUX0FSRUFfRk9STUFUKV0KPiArICAgICNb ZGVyaXZlKERlYnVnLCBEZXNlcmlhbGl6ZSwgU2VyaWFsaXplLCBDbG9uZSwgSGFzaCwgUGFydGlh bEVxLCBFcSwgUGFydGlhbE9yZCwgT3JkKV0KPiArICAgIHN0cnVjdCBOZXRBcmVhKFN0cmluZyk7 Cj4gK30KPiArCj4gK2ltcGwgRGVmYXVsdCBmb3IgTmV0QXJlYSB7Cj4gKyAgICBmbiBkZWZhdWx0 KCkgLT4gU2VsZiB7Cj4gKyAgICAgICAgU2VsZigiMDAwMSIudG9fb3duZWQoKSkKPiArICAgIH0K PiArfQo+ICsKPiAraW1wbCBVcGRhdGVyVHlwZSBmb3IgTmV0QXJlYSB7Cj4gKyAgICB0eXBlIFVw ZGF0ZXIgPSBPcHRpb248TmV0QXJlYT47Cj4gK30KPiArCj4gK2FwaV9zdHJpbmdfdHlwZSEgewo+ ICsgICAgLy8vIFN5c3RlbSBpZGVudGlmaWVyOiAxOTIxLjY4MDAuMTAwMiAtIGZvciBzeXN0ZW0g aWRlbnRpZmllcnMgd2UgcmVjb21tZW5kIHRvIHVzZSBJUCBhZGRyZXNzIG9yCj4gKyAgICAvLy8g TUFDIGFkZHJlc3Mgb2YgdGhlIHJvdXRlciBpdHNlbGYuIFRoZSB3YXkgdG8gY29uc3RydWN0IHRo aXMgaXMgdG8ga2VlcCBhbGwgb2YgdGhlIHplcm9lcyBvZiB0aGUKPiArICAgIC8vLyByb3V0ZXIg SVAgYWRkcmVzcywgYW5kIHRoZW4gY2hhbmdlIHRoZSBwZXJpb2RzIGZyb20gYmVpbmcgZXZlcnkg dGhyZWUgbnVtYmVycyB0byBldmVyeSBmb3VyCj4gKyAgICAvLy8gbnVtYmVycy4gVGhlIGFkZHJl c3MgdGhhdCBpcyBsaXN0ZWQgaGVyZSBpcyAxOTIuMTY4LjEuMiwgd2hpY2ggaWYgZXhwYW5kZWQg d2lsbCB0dXJuIGludG8KPiArICAgIC8vLyAxOTIuMTY4LjAwMS4wMDIuIFRoZW4gYWxsIG9uZSBo YXMgdG8gZG8gaXMgbW92ZSB0aGUgZG90cyB0byBoYXZlIGZvdXIgbnVtYmVycyBpbnN0ZWFkIG9m IHRocmVlLgo+ICsgICAgLy8vIFRoaXMgZ2l2ZXMgdXMgMTkyMS42ODAwLjEwMDIuCj4gKyAgICAj W2FwaShmb3JtYXQ6ICZORVRfU1lTVEVNX0lEX0ZPUk1BVCldCj4gKyAgICAjW2Rlcml2ZShEZWJ1 ZywgRGVzZXJpYWxpemUsIFNlcmlhbGl6ZSwgQ2xvbmUsIEhhc2gsIFBhcnRpYWxFcSwgRXEsIFBh cnRpYWxPcmQsIE9yZCldCj4gKyAgICBzdHJ1Y3QgTmV0U3lzdGVtSWQoU3RyaW5nKTsKPiArfQo+ ICsKPiAraW1wbCBVcGRhdGVyVHlwZSBmb3IgTmV0U3lzdGVtSWQgewo+ICsgICAgdHlwZSBVcGRh dGVyID0gT3B0aW9uPE5ldFN5c3RlbUlkPjsKPiArfQo+ICsKPiArLy8vIENvbnZlcnQgSVAtQWRk cmVzcyB0byBhIE5FVCBhZGRyZXNzIHdpdGggdGhlIGRlZmF1bHQgYWZpLCBhcmVhIGFuZCBzZWxl Y3RvciB2YWx1ZXMuIE5vdGUgdGhhdCBhCj4gKy8vLyB2YWxpZCBJcHY0QWRkciBpcyBhbHdheXMg YSB2YWxpZCBTeXN0ZW1JZCBhcyB3ZWxsLgo+ICtpbXBsIEZyb208SXB2NEFkZHI+IGZvciBOZXRT eXN0ZW1JZCB7Cj4gKyAgICBmbiBmcm9tKHZhbHVlOiBJcHY0QWRkcikgLT4gU2VsZiB7Cj4gKyAg ICAgICAgbGV0IG9jdGV0cyA9IHZhbHVlLm9jdGV0cygpOwo+ICsKPiArICAgICAgICBsZXQgc3lz dGVtX2lkX3N0ciA9IGZvcm1hdCEoCj4gKyAgICAgICAgICAgICJ7OjAzfXs6MDF9Lns6MDJ9ezow Mn0uezowMX17OjAzfSIsCj4gKyAgICAgICAgICAgIG9jdGV0c1swXSwKPiArICAgICAgICAgICAg b2N0ZXRzWzFdIC8gMTAwLAo+ICsgICAgICAgICAgICBvY3RldHNbMV0gJSAxMDAsCj4gKyAgICAg ICAgICAgIG9jdGV0c1syXSAvIDEwLAo+ICsgICAgICAgICAgICBvY3RldHNbMl0gJSAxMCwKPiAr ICAgICAgICAgICAgb2N0ZXRzWzNdCj4gKyAgICAgICAgKTsKPiArCj4gKyAgICAgICAgU2VsZihz eXN0ZW1faWRfc3RyKQo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvLy8gQ29udmVydCBJUHY2LUFkZHJl c3MgdG8gYSBORVQgYWRkcmVzcyB3aXRoIHRoZSBkZWZhdWx0IGFmaSwgYXJlYSBhbmQgc2VsZWN0 b3IgdmFsdWVzLiBOb3RlIHRoYXQgYQo+ICsvLy8gdmFsaWQgSXB2NkFkZHIgaXMgYWx3YXlzIGEg dmFsaWQgU3lzdGVtSWQgYXMgd2VsbC4KPiAraW1wbCBGcm9tPElwdjZBZGRyPiBmb3IgTmV0U3lz dGVtSWQgewo+ICsgICAgZm4gZnJvbSh2YWx1ZTogSXB2NkFkZHIpIC0+IFNlbGYgewo+ICsgICAg ICAgIGxldCBzZWdtZW50cyA9IHZhbHVlLnNlZ21lbnRzKCk7Cj4gKwo+ICsgICAgICAgIC8vIFVz ZSB0aGUgbGFzdCAzIHNlZ21lbnRzIChvdXQgb2YgOCkgb2YgdGhlIElQdjYgYWRkcmVzcwo+ICsg ICAgICAgIGxldCBzeXN0ZW1faWRfc3RyID0gZm9ybWF0ISgKPiArICAgICAgICAgICAgIns6MDR4 fS57OjA0eH0uezowNHh9IiwKPiArICAgICAgICAgICAgc2VnbWVudHNbNV0sIHNlZ21lbnRzWzZd LCBzZWdtZW50c1s3XQo+ICsgICAgICAgICk7Cj4gKwo+ICsgICAgICAgIFNlbGYoc3lzdGVtX2lk X3N0cikKPiArICAgIH0KPiArfQo+ICsKPiArYXBpX3N0cmluZ190eXBlISB7Cj4gKyAgICAvLy8g TkVUIHNlbGVjdG9yOiAwMCBNdXN0IGFsd2F5cyBiZSAwMC4gVGhpcyBzZXR0aW5nIGluZGljYXRl cyDigJx0aGlzIHN5c3RlbeKAnSBvciDigJxsb2NhbCBzeXN0ZW0u4oCdCj4gKyAgICAjW2FwaShm b3JtYXQ6ICZORVRfU0VMRUNUT1JfRk9STUFUKV0KPiArICAgICNbZGVyaXZlKERlYnVnLCBEZXNl cmlhbGl6ZSwgU2VyaWFsaXplLCBDbG9uZSwgSGFzaCwgUGFydGlhbEVxLCBFcSwgUGFydGlhbE9y ZCwgT3JkKV0KPiArICAgIHN0cnVjdCBOZXRTZWxlY3RvcihTdHJpbmcpOwo+ICt9Cj4gKwo+ICtp bXBsIFVwZGF0ZXJUeXBlIGZvciBOZXRTZWxlY3RvciB7Cj4gKyAgICB0eXBlIFVwZGF0ZXIgPSBP cHRpb248TmV0U2VsZWN0b3I+Owo+ICt9Cj4gKwo+ICtpbXBsIERlZmF1bHQgZm9yIE5ldFNlbGVj dG9yIHsKPiArICAgIGZuIGRlZmF1bHQoKSAtPiBTZWxmIHsKPiArICAgICAgICBTZWxmKCIwMCIu dG9fb3duZWQoKSkKPiArICAgIH0KPiArfQo+ICsKPiArLy8vIFRoZSBOZXR3b3JrIEVudGl0eSBU aXRsZSAoTkVUKS4KPiArLy8vCj4gKy8vLyBFdmVyeSBPcGVuRmFicmljIG5vZGUgaXMgaWRlbnRp ZmllZCB0aHJvdWdoIHRoZSBORVQuIEl0IGhhcyBhIG5ldHdvcmsgYW5kIGEgaG9zdAo+ICsvLy8g cGFydC4KPiArLy8vIFRoZSBmaXJzdCBwYXJ0IGlzIHRoZSBuZXR3b3JrIHBhcnQgKGFsc28gY2Fs bGVkIGFyZWEpLiBUaGUgZW50aXJlIE9wZW5GYWJyaWMgZmFicmljIGhhcyB0byBoYXZlCj4gKy8v LyB0aGUgc2FtZSBuZXR3b3JrIHBhcnQgKGFmaSArIGFyZWEpLiBUaGUgZmlyc3QgbnVtYmVyIGlz IHRoZSBbYE5ldEFGSWBdIGFuZCB0aGUgc2Vjb25kIGlzIHRoZQo+ICsvLy8gW2BOZXRBcmVhYF0u Cj4gKy8vLyBlLmcuOiAiNDkuMDAwMSIKPiArLy8vIFRoZSBzZWNvbmQgcGFydCBpcyB0aGUgaG9z dCBwYXJ0LCB3aGljaCBoYXMgdG8gZGlmZmVyIG9uIGV2ZXJ5IG5vZGUgaW4gdGhlIGZhYnJpYywg YnV0ICpub3QqCj4gKy8vLyBiZXR3ZWVuIGZhYnJpY3Mgb24gdGhlIHNhbWUgbm9kZS4gSXQgY29u dGFpbnMgdGhlIFtgTmV0U3lzdGVtSWRgXSBhbmQgdGhlIFtgTmV0U2VsZWN0b3JgXS4KPiArLy8v IGUuZy46ICIxOTIxLjY4MDAuMTAwMi4wMCIKPiArI1thcGldCj4gKyNbZGVyaXZlKERlYnVnLCBE ZXNlcmlhbGl6ZSwgU2VyaWFsaXplLCBDbG9uZSwgSGFzaCwgUGFydGlhbEVxLCBFcSwgUGFydGlh bE9yZCwgT3JkKV0KPiArcHViIHN0cnVjdCBOZXQgewo+ICsgICAgYWZpOiBOZXRBRkksCj4gKyAg ICBhcmVhOiBOZXRBcmVhLAo+ICsgICAgc3lzdGVtOiBOZXRTeXN0ZW1JZCwKPiArICAgIHNlbGVj dG9yOiBOZXRTZWxlY3RvciwKPiArfQo+ICsKPiAraW1wbCBVcGRhdGVyVHlwZSBmb3IgTmV0IHsK PiArICAgIHR5cGUgVXBkYXRlciA9IE9wdGlvbjxOZXQ+Owo+ICt9Cj4gKwo+ICtpbXBsIHN0ZDo6 c3RyOjpGcm9tU3RyIGZvciBOZXQgewo+ICsgICAgdHlwZSBFcnIgPSBFcnJvcjsKPiArCj4gKyAg ICBmbiBmcm9tX3N0cihzOiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyPiB7Cj4gKyAg ICAgICAgbGV0IHBhcnRzOiBWZWM8JnN0cj4gPSBzLnNwbGl0KCIuIikuY29sbGVjdCgpOwo+ICsK PiArICAgICAgICBpZiBwYXJ0cy5sZW4oKSAhPSA2IHsKPiArICAgICAgICAgICAgYmFpbCEoImlu dmFsaWQgTkVUIGZvcm1hdDoge3N9IikKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGxldCBz eXN0ZW0gPSBmb3JtYXQhKCJ7fS57fS57fSIsIHBhcnRzWzJdLCBwYXJ0c1szXSwgcGFydHNbNF0s KTsKPiArCj4gKyAgICAgICAgT2soU2VsZiB7Cj4gKyAgICAgICAgICAgIGFmaTogTmV0QUZJOjpm cm9tX3N0cmluZyhwYXJ0c1swXS50b19zdHJpbmcoKSk/LAo+ICsgICAgICAgICAgICBhcmVhOiBO ZXRBcmVhOjpmcm9tX3N0cmluZyhwYXJ0c1sxXS50b19zdHJpbmcoKSk/LAo+ICsgICAgICAgICAg ICBzeXN0ZW06IE5ldFN5c3RlbUlkOjpmcm9tX3N0cmluZyhzeXN0ZW0udG9fc3RyaW5nKCkpPywK PiArICAgICAgICAgICAgc2VsZWN0b3I6IE5ldFNlbGVjdG9yOjpmcm9tX3N0cmluZyhwYXJ0c1s1 XS50b19zdHJpbmcoKSk/LAo+ICsgICAgICAgIH0pCj4gKyAgICB9Cj4gK30KPiArCj4gK2ltcGwg RGlzcGxheSBmb3IgTmV0IHsKPiArICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6 Rm9ybWF0dGVyPCdfPikgLT4gc3RkOjpmbXQ6OlJlc3VsdCB7Cj4gKyAgICAgICAgd3JpdGUhKAo+ ICsgICAgICAgICAgICBmLAo+ICsgICAgICAgICAgICAie30ue30ue30ue30iLAo+ICsgICAgICAg ICAgICBzZWxmLmFmaSwgc2VsZi5hcmVhLCBzZWxmLnN5c3RlbSwgc2VsZi5zZWxlY3Rvcgo+ICsg ICAgICAgICkKPiArICAgIH0KPiArfQo+ICsKPiArLy8vIERlZmF1bHQgTkVUIGFkZHJlc3MgZm9y IGEgZ2l2ZW4gSXB2NEFkZHIuIFRoaXMgYWRkcyB0aGUgZGVmYXVsdCBhZmksIGFyZWEgYW5kIHNl bGVjdG9yIHRvIHRoZQo+ICsvLy8gYWRkcmVzcy4KPiAraW1wbCBGcm9tPElwdjRBZGRyPiBmb3Ig TmV0IHsKPiArICAgIGZuIGZyb20odmFsdWU6IElwdjRBZGRyKSAtPiBTZWxmIHsKPiArICAgICAg ICBTZWxmIHsKPiArICAgICAgICAgICAgYWZpOiBOZXRBRkk6OmRlZmF1bHQoKSwKPiArICAgICAg ICAgICAgYXJlYTogTmV0QXJlYTo6ZGVmYXVsdCgpLAo+ICsgICAgICAgICAgICBzeXN0ZW06IHZh bHVlLmludG8oKSwKPiArICAgICAgICAgICAgc2VsZWN0b3I6IE5ldFNlbGVjdG9yOjpkZWZhdWx0 KCksCj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvLy8gRGVmYXVsdCBORVQgYWRk cmVzcyBmb3IgYSBnaXZlbiBJcHY2QWRkci4gVGhpcyBhZGRzIHRoZSBkZWZhdWx0IGFmaSwgYXJl YSBhbmQgc2VsZWN0b3IgdG8gdGhlCj4gKy8vLyBhZGRyZXNzLgo+ICtpbXBsIEZyb208SXB2NkFk ZHI+IGZvciBOZXQgewo+ICsgICAgZm4gZnJvbSh2YWx1ZTogSXB2NkFkZHIpIC0+IFNlbGYgewo+ ICsgICAgICAgIFNlbGYgewo+ICsgICAgICAgICAgICBhZmk6IE5ldEFGSTo6ZGVmYXVsdCgpLAo+ ICsgICAgICAgICAgICBhcmVhOiBOZXRBcmVhOjpkZWZhdWx0KCksCj4gKyAgICAgICAgICAgIHN5 c3RlbTogdmFsdWUuaW50bygpLAo+ICsgICAgICAgICAgICBzZWxlY3RvcjogTmV0U2VsZWN0b3I6 OmRlZmF1bHQoKSwKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4gKy8vLyBEZWZhdWx0 IE5FVCBhZGRyZXNzIGZvciBhIGdpdmVuIElwQWRkciAoY2FuIGJlIGVpdGhlciBJcHY0IG9yIElw djYpLiBUaGlzIGFkZHMgdGhlIGRlZmF1bHQgYWZpLAo+ICsvLy8gYXJlYSBhbmQgc2VsZWN0b3Ig dG8gdGhlIGFkZHJlc3MuCj4gK2ltcGwgRnJvbTxJcEFkZHI+IGZvciBOZXQgewo+ICsgICAgZm4g ZnJvbSh2YWx1ZTogSXBBZGRyKSAtPiBTZWxmIHsKPiArICAgICAgICBtYXRjaCB2YWx1ZSB7Cj4g KyAgICAgICAgICAgIElwQWRkcjo6VjQoaXB2NF9hZGRyKSA9PiBpcHY0X2FkZHIuaW50bygpLAo+ ICsgICAgICAgICAgICBJcEFkZHI6OlY2KGlwdjZfYWRkcikgPT4gaXB2Nl9hZGRyLmludG8oKSwK PiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4gKyNbY2ZnKHRlc3QpXQo+ICttb2QgdGVz dHMgewo+ICsgICAgdXNlIHN1cGVyOjoqOwo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIHRl c3RfbmV0X2Zyb21fc3RyKCkgewo+ICsgICAgICAgIGxldCBpbnB1dCA9ICI0OS4wMDAxLjE5MjEu NjgwMC4xMDAyLjAwIjsKPiArICAgICAgICBsZXQgbmV0ID0gaW5wdXQucGFyc2U6OjxOZXQ+KCku ZXhwZWN0KCJ0aGlzIG5ldCBzaG91bGQgcGFyc2UiKTsKPiArICAgICAgICBhc3NlcnRfZXEhKG5l dC5hZmksIE5ldEFGSSgiNDkiLnRvX293bmVkKCkpKTsKPiArICAgICAgICBhc3NlcnRfZXEhKG5l dC5hcmVhLCBOZXRBcmVhKCIwMDAxIi50b19vd25lZCgpKSk7Cj4gKyAgICAgICAgYXNzZXJ0X2Vx IShuZXQuc3lzdGVtLCBOZXRTeXN0ZW1JZCgiMTkyMS42ODAwLjEwMDIiLnRvX293bmVkKCkpKTsK PiArICAgICAgICBhc3NlcnRfZXEhKG5ldC5zZWxlY3RvciwgTmV0U2VsZWN0b3IoIjAwIi50b19v d25lZCgpKSk7Cj4gKwo+ICsgICAgICAgIGxldCBpbnB1dCA9ICI0NS4wMjAwLjAxMDAuMTAwMS5i YTFmLjAxIjsKPiArICAgICAgICBsZXQgbmV0ID0gaW5wdXQucGFyc2U6OjxOZXQ+KCkuZXhwZWN0 KCJ0aGlzIG5ldCBzaG91bGQgcGFyc2UiKTsKPiArICAgICAgICBhc3NlcnRfZXEhKG5ldC5hZmks IE5ldEFGSSgiNDUiLnRvX293bmVkKCkpKTsKPiArICAgICAgICBhc3NlcnRfZXEhKG5ldC5hcmVh LCBOZXRBcmVhKCIwMjAwIi50b19vd25lZCgpKSk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShuZXQu c3lzdGVtLCBOZXRTeXN0ZW1JZCgiMDEwMC4xMDAxLmJhMWYiLnRvX293bmVkKCkpKTsKPiArICAg ICAgICBhc3NlcnRfZXEhKG5ldC5zZWxlY3RvciwgTmV0U2VsZWN0b3IoIjAxIi50b19vd25lZCgp KSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gdGVzdF9uZXRfZnJvbV9z dHJfZmFpbGVkKCkgewo+ICsgICAgICAgIGxldCBpbnB1dCA9ICI0OS4wMDAxLjE5MjEuNjgwMC4x MDAyLjAwMCI7Cj4gKyAgICAgICAgaW5wdXQucGFyc2U6OjxOZXQ+KCkuZXhwZWN0X2VycigiaW52 YWxpZCBORVQgc2VsZWN0b3IiKTsKPiArCj4gKyAgICAgICAgbGV0IGlucHV0ID0gIjQ5LjAwMDEu MTkyMS42ODAwLjEwMDIuMDAuMDAiOwo+ICsgICAgICAgIGlucHV0Cj4gKyAgICAgICAgICAgIC5w YXJzZTo6PE5ldD4oKQo+ICsgICAgICAgICAgICAuZXhwZWN0X2VycigiaW52YWxpZCBhbW91bnQg b2YgZWxlbWVudHMiKTsKPiArCj4gKyAgICAgICAgbGV0IGlucHV0ID0gIjQ5LjAwMDEuMTkyMS42 ODAwLjEwMDAyLjAwIjsKPiArICAgICAgICBpbnB1dC5wYXJzZTo6PE5ldD4oKS5leHBlY3RfZXJy KCJpbnZhbGlkIHN5c3RlbSBpZCIpOwo+ICsKPiArICAgICAgICBsZXQgaW5wdXQgPSAiNDkuMDAw MS4xOTIxLjY4MDAuMXowMi4wMCI7Cj4gKyAgICAgICAgaW5wdXQucGFyc2U6OjxOZXQ+KCkuZXhw ZWN0X2VycigiaW52YWxpZCBzeXN0ZW0gaWQiKTsKPiArCj4gKyAgICAgICAgbGV0IGlucHV0ID0g IjQwOS4wMDAxLjE5MjEuNjgwMC4xMDAyLjAwIjsKPiArICAgICAgICBpbnB1dC5wYXJzZTo6PE5l dD4oKS5leHBlY3RfZXJyKCJpbnZhbGlkIEFGSSIpOwo+ICsKPiArICAgICAgICBsZXQgaW5wdXQg PSAiNDkuMDAwMDEuMTkyMS42ODAwLjEwMDIuMDAiOwo+ICsgICAgICAgIGlucHV0LnBhcnNlOjo8 TmV0PigpLmV4cGVjdF9lcnIoImludmFsaWQgYXJlYSIpOwo+ICsgICAgfQo+ICsKPiArICAgICNb dGVzdF0KPiArICAgIGZuIHRlc3RfbmV0X2Rpc3BsYXkoKSB7Cj4gKyAgICAgICAgbGV0IG5ldCA9 IE5ldCB7Cj4gKyAgICAgICAgICAgIGFmaTogTmV0QUZJKCI0OSIudG9fb3duZWQoKSksCj4gKyAg ICAgICAgICAgIGFyZWE6IE5ldEFyZWEoIjAwMDEiLnRvX293bmVkKCkpLAo+ICsgICAgICAgICAg ICBzeXN0ZW06IE5ldFN5c3RlbUlkKCIxOTIxLjY4MDAuMTAwMiIudG9fb3duZWQoKSksCj4gKyAg ICAgICAgICAgIHNlbGVjdG9yOiBOZXRTZWxlY3RvcigiMDAiLnRvX293bmVkKCkpLAo+ICsgICAg ICAgIH07Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShmb3JtYXQhKCJ7bmV0fSIpLCAiNDkuMDAwMS4x OTIxLjY4MDAuMTAwMi4wMCIpOwo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZu IHRlc3RfbmV0X2Zyb21faXB2NCgpIHsKPiArICAgICAgICBsZXQgaXA6IElwdjRBZGRyID0gIjE5 Mi4xNjguMS4xMDAiLnBhcnNlKCkudW53cmFwKCk7Cj4gKyAgICAgICAgbGV0IG5ldDogTmV0ID0g aXAuaW50bygpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoZm9ybWF0ISgie25ldH0iKSwgIjQ5LjAw MDEuMTkyMS42ODAwLjExMDAuMDAiKTsKPiArCj4gKyAgICAgICAgbGV0IGlwMTogSXB2NEFkZHIg PSAiMTAuMTAuMi4yNDUiLnBhcnNlKCkudW53cmFwKCk7Cj4gKyAgICAgICAgbGV0IG5ldDE6IE5l dCA9IGlwMS5pbnRvKCk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShmb3JtYXQhKCJ7bmV0MX0iKSwg IjQ5LjAwMDEuMDEwMC4xMDAwLjIyNDUuMDAiKTsKPiArCj4gKyAgICAgICAgbGV0IGlwMjogSXB2 NEFkZHIgPSAiMS4xLjEuMSIucGFyc2UoKS51bndyYXAoKTsKPiArICAgICAgICBsZXQgbmV0Mjog TmV0ID0gaXAyLmludG8oKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGZvcm1hdCEoIntuZXQyfSIp LCAiNDkuMDAwMS4wMDEwLjAxMDAuMTAwMS4wMCIpOwo+ICsgICAgfQo+ICsKPiArICAgICNbdGVz dF0KPiArICAgIGZuIHRlc3RfbmV0X2Zyb21faXB2NigpIHsKPiArICAgICAgICAvLyAyMDAxOmRi ODo6MSAtPiBbMjAwMSwgMGRiOCwgMCwgMCwgMCwgMCwgMCwgMV0KPiArICAgICAgICAvLyBsYXN0 IDMgc2VnbWVudHM6IFswLCAwLCAxXQo+ICsgICAgICAgIGxldCBpcDogSXB2NkFkZHIgPSAiMjAw MTpkYjg6OjEiLnBhcnNlKCkudW53cmFwKCk7Cj4gKyAgICAgICAgbGV0IG5ldDogTmV0ID0gaXAu aW50bygpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoZm9ybWF0ISgie25ldH0iKSwgIjQ5LjAwMDEu MDAwMC4wMDAwLjAwMDEuMDAiKTsKPiArCj4gKyAgICAgICAgLy8gZmU4MDo6MTIzNDo1Njc4OmFi Y2QgLT4gW2ZlODAsIDAsIDAsIDAsIDAsIDEyMzQsIDU2NzgsIGFiY2RdCj4gKyAgICAgICAgLy8g bGFzdCAzIHNlZ21lbnRzOiBbMTIzNCwgNTY3OCwgYWJjZF0KPiArICAgICAgICBsZXQgaXAxOiBJ cHY2QWRkciA9ICJmZTgwOjoxMjM0OjU2Nzg6YWJjZCIucGFyc2UoKS51bndyYXAoKTsKPiArICAg ICAgICBsZXQgbmV0MTogTmV0ID0gaXAxLmludG8oKTsKPiArICAgICAgICBhc3NlcnRfZXEhKGZv cm1hdCEoIntuZXQxfSIpLCAiNDkuMDAwMS4xMjM0LjU2NzguYWJjZC4wMCIpOwo+ICsKPiArICAg ICAgICAvLyAyMDAxOjBkYjg6ODVhMzo6OGEyZTozNzA6NzMzNCAtPiBbMjAwMSwgMGRiOCwgODVh MywgMCwgMCwgOGEyZSwgMDM3MCwgNzMzNF0KPiArICAgICAgICAvLyBsYXN0IDMgc2VnbWVudHM6 IFs4YTJlLCAwMzcwLCA3MzM0XQo+ICsgICAgICAgIGxldCBpcDI6IElwdjZBZGRyID0gIjIwMDE6 MGRiODo4NWEzOjo4YTJlOjM3MDo3MzM0Ii5wYXJzZSgpLnVud3JhcCgpOwo+ICsgICAgICAgIGxl dCBuZXQyOiBOZXQgPSBpcDIuaW50bygpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoZm9ybWF0ISgi e25ldDJ9IiksICI0OS4wMDAxLjhhMmUuMDM3MC43MzM0LjAwIik7Cj4gKwo+ICsgICAgICAgIC8v IDo6MSAtPiBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMV0KPiArICAgICAgICAvLyBsYXN0IDMgc2Vn bWVudHM6IFswLCAwLCAxXQo+ICsgICAgICAgIGxldCBpcDM6IElwdjZBZGRyID0gIjo6MSIucGFy c2UoKS51bndyYXAoKTsKPiArICAgICAgICBsZXQgbmV0MzogTmV0ID0gaXAzLmludG8oKTsKPiAr ICAgICAgICBhc3NlcnRfZXEhKGZvcm1hdCEoIntuZXQzfSIpLCAiNDkuMDAwMS4wMDAwLjAwMDAu MDAwMS4wMCIpOwo+ICsKPiArICAgICAgICAvLyBhOmI6OjAgLT4gW2EsIGIsIDAsIDAsIDAsIDAs IDAsIDBdCj4gKyAgICAgICAgLy8gbGFzdCAzIHNlZ21lbnRzOiBbMCwgMCwgMF0KPiArICAgICAg ICBsZXQgaXA0OiBJcHY2QWRkciA9ICJhOmI6OjAiLnBhcnNlKCkudW53cmFwKCk7Cj4gKyAgICAg ICAgbGV0IG5ldDQ6IE5ldCA9IGlwNC5pbnRvKCk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShmb3Jt YXQhKCJ7bmV0NH0iKSwgIjQ5LjAwMDEuMDAwMC4wMDAwLjAwMDAuMDAiKTsKPiArICAgIH0KPiAr fQo+IGRpZmYgLS1naXQgYS9wcm94bW94LXNkbi10eXBlcy9zcmMvb3BlbmZhYnJpYy5ycyBiL3By b3htb3gtc2RuLXR5cGVzL3NyYy9vcGVuZmFicmljLnJzCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAuLmM3OWUyZDlhMjkzNQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9wcm94bW94LXNkbi10eXBlcy9zcmMvb3BlbmZhYnJpYy5ycwo+IEBAIC0wLDAgKzEsNzIgQEAK PiArdXNlIHNlcmRlOjp7RGVzZXJpYWxpemUsIFNlcmlhbGl6ZX07Cj4gK3VzZSBzdGQ6OmZtdDo6 RGlzcGxheTsKPiArCj4gK3VzZSBwcm94bW94X3NjaGVtYTo6e2FwaSwgVXBkYXRlclR5cGV9Owo+ ICsKPiArLy8vIFRoZSBPcGVuRmFicmljIENTTlAgSW50ZXJ2YWwuCj4gKy8vLwo+ICsvLy8gVGhl IENvbXBsZXRlIFNlcXVlbmNlIE51bWJlciBQYWNrZXRzIChDU05QKSBpbnRlcnZhbCBpbiBzZWNv bmRzLiBUaGUgaW50ZXJ2YWwgcmFuZ2UgaXMgMSB0bwo+ICsvLy8gNjAwLgo+ICsjW2FwaSgKPiAr ICAgIHR5cGU6IEludGVnZXIsCj4gKyAgICBtaW5pbXVtOiAxLAo+ICsgICAgbWF4aW11bTogNjAw LAo+ICspXQo+ICsjW2Rlcml2ZShTZXJpYWxpemUsIERlc2VyaWFsaXplLCBIYXNoLCBEZWJ1Zywg Q2xvbmUsIENvcHksIFBhcnRpYWxFcSwgRXEsIFBhcnRpYWxPcmQsIE9yZCldCj4gKyNbc2VyZGUo dHJhbnNwYXJlbnQpXQo+ICtwdWIgc3RydWN0IENzbnBJbnRlcnZhbCgjW3NlcmRlKGRlc2VyaWFs aXplX3dpdGggPSAicHJveG1veF9zZXJkZTo6cGVybDo6ZGVzZXJpYWxpemVfdTE2IildIHUxNik7 Cj4gKwo+ICtpbXBsIFVwZGF0ZXJUeXBlIGZvciBDc25wSW50ZXJ2YWwgewo+ICsgICAgdHlwZSBV cGRhdGVyID0gT3B0aW9uPENzbnBJbnRlcnZhbD47Cj4gK30KPiArCj4gK2ltcGwgRGlzcGxheSBm b3IgQ3NucEludGVydmFsIHsKPiArICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6 Rm9ybWF0dGVyPCdfPikgLT4gc3RkOjpmbXQ6OlJlc3VsdCB7Cj4gKyAgICAgICAgc2VsZi4wLmZt dChmKQo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvLy8gVGhlIE9wZW5GYWJyaWMgSGVsbG8gSW50ZXJ2 YWwuCj4gKy8vLwo+ICsvLy8gVGhlIEhlbGxvIEludGVydmFsIGZvciBhIGdpdmVuIGludGVyZmFj ZSBpbiBzZWNvbmRzLiBUaGUgcmFuZ2UgaXMgMSB0byA2MDAuIEhlbGxvIHBhY2tldHMgYXJlCj4g Ky8vLyB1c2VkIHRvIGVzdGFibGlzaCBhbmQgbWFpbnRhaW4gYWRqYWNlbmN5IGJldHdlZW4gT3Bl bkZhYnJpYyBuZWlnaGJvcnMuCj4gKyNbYXBpKAo+ICsgICAgdHlwZTogSW50ZWdlciwKPiArICAg IG1pbmltdW06IDEsCj4gKyAgICBtYXhpbXVtOiA2MDAsCj4gKyldCj4gKyNbZGVyaXZlKFNlcmlh bGl6ZSwgRGVzZXJpYWxpemUsIEhhc2gsIERlYnVnLCBDbG9uZSwgQ29weSwgUGFydGlhbEVxLCBF cSwgUGFydGlhbE9yZCwgT3JkKV0KPiArI1tzZXJkZSh0cmFuc3BhcmVudCldCj4gK3B1YiBzdHJ1 Y3QgSGVsbG9JbnRlcnZhbCgjW3NlcmRlKGRlc2VyaWFsaXplX3dpdGggPSAicHJveG1veF9zZXJk ZTo6cGVybDo6ZGVzZXJpYWxpemVfdTE2IildIHUxNik7Cj4gKwo+ICtpbXBsIFVwZGF0ZXJUeXBl IGZvciBIZWxsb0ludGVydmFsIHsKPiArICAgIHR5cGUgVXBkYXRlciA9IE9wdGlvbjxIZWxsb0lu dGVydmFsPjsKPiArfQo+ICsKPiAraW1wbCBEaXNwbGF5IGZvciBIZWxsb0ludGVydmFsIHsKPiAr ICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikgLT4gc3Rk OjpmbXQ6OlJlc3VsdCB7Cj4gKyAgICAgICAgc2VsZi4wLmZtdChmKQo+ICsgICAgfQo+ICt9Cj4g Kwo+ICsvLy8gVGhlIE9wZW5GYWJyaWMgSGVsbG8gTXVsdGlwbGllci4KPiArLy8vCj4gKy8vLyBU aGlzIGlzIHRoZSBtdWx0aXBsaWVyIGZvciB0aGUgaGVsbG8gaG9sZGluZyB0aW1lIG9uIGEgZ2l2 ZW4gaW50ZXJmYWNlLiBUaGUgcmFuZ2UgaXMgMiB0byAxMDAuCj4gKyNbYXBpKAo+ICsgICAgdHlw ZTogSW50ZWdlciwKPiArICAgIG1pbmltdW06IDIsCj4gKyAgICBtYXhpbXVtOiAxMDAsCj4gKyld Cj4gKyNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxpemUsIEhhc2gsIERlYnVnLCBDbG9uZSwg Q29weSwgUGFydGlhbEVxLCBFcSwgUGFydGlhbE9yZCwgT3JkKV0KPiArI1tzZXJkZSh0cmFuc3Bh cmVudCldCj4gK3B1YiBzdHJ1Y3QgSGVsbG9NdWx0aXBsaWVyKCNbc2VyZGUoZGVzZXJpYWxpemVf d2l0aCA9ICJwcm94bW94X3NlcmRlOjpwZXJsOjpkZXNlcmlhbGl6ZV91MTYiKV0gdTE2KTsKPiAr Cj4gK2ltcGwgVXBkYXRlclR5cGUgZm9yIEhlbGxvTXVsdGlwbGllciB7Cj4gKyAgICB0eXBlIFVw ZGF0ZXIgPSBPcHRpb248SGVsbG9NdWx0aXBsaWVyPjsKPiArfQo+ICsKPiAraW1wbCBEaXNwbGF5 IGZvciBIZWxsb011bHRpcGxpZXIgewo+ICsgICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6 Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKPiArICAgICAgICBzZWxm LjAuZm10KGYpCj4gKyAgICB9Cj4gK30KPiBkaWZmIC0tZ2l0IGEvcHJveG1veC12ZS1jb25maWcv Q2FyZ28udG9tbCBiL3Byb3htb3gtdmUtY29uZmlnL0NhcmdvLnRvbWwKPiBpbmRleCA1ZmQ3MDBj NDBiNDguLjE5YmM3OTM5MjVlNiAxMDA2NDQKPiAtLS0gYS9wcm94bW94LXZlLWNvbmZpZy9DYXJn by50b21sCj4gKysrIGIvcHJveG1veC12ZS1jb25maWcvQ2FyZ28udG9tbAo+IEBAIC04LDE0ICs4 LDE0IEBAIGV4Y2x1ZGUud29ya3NwYWNlID0gdHJ1ZQo+ICAKPiAgW2RlcGVuZGVuY2llc10KPiAg bG9nID0gIjAuNCIKPiAtYW55aG93ID0gIjEiCj4gK2FueWhvdyA9IHsgd29ya3NwYWNlID0gdHJ1 ZSB9Cj4gIG5peCA9ICIwLjI5Igo+IC10aGlzZXJyb3IgPSAiMiIKPiArdGhpc2Vycm9yID0geyB3 b3Jrc3BhY2UgPSB0cnVlIH0KPiAgCj4gLXNlcmRlID0geyB2ZXJzaW9uID0gIjEiLCBmZWF0dXJl cyA9IFsgImRlcml2ZSIgXSB9Cj4gK3NlcmRlID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJl cyA9IFsgImRlcml2ZSIgXSB9Cj4gIHNlcmRlX2pzb24gPSAiMSIKPiAgc2VyZGVfcGxhaW4gPSAi MSIKPiAtc2VyZGVfd2l0aCA9ICIzIgo+ICtzZXJkZV93aXRoID0geyB3b3Jrc3BhY2UgPSB0cnVl IH0KPiAgcHJveG1veC1zZXJkZSA9IHsgdmVyc2lvbiA9ICIxLjAuMCIsIGZlYXR1cmVzID0gWyAi cGVybCIgXX0KPiAgCj4gIHByb3htb3gtbmV0d29yay10eXBlcyA9IHsgd29ya3NwYWNlID0gdHJ1 ZSB9Cj4gLS0gCj4gMi4zOS41CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1v eC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v cHZlLWRldmVsCg==