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 [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 34E921FF164 for <inbox@lore.proxmox.com>; Fri, 28 Mar 2025 18:16:42 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id BC9FA8ED8; Fri, 28 Mar 2025 18:14:15 +0100 (CET) From: Gabriel Goller <g.goller@proxmox.com> To: pve-devel@lists.proxmox.com Date: Fri, 28 Mar 2025 18:13:05 +0100 Message-Id: <20250328171340.885413-18-g.goller@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250328171340.885413-1-g.goller@proxmox.com> References: <20250328171340.885413-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.025 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: [pve-devel] [PATCH proxmox-ve-rs 16/17] ve-config: add section-config to frr types conversion 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> QWRkIGEgRmFicmljQ29uZmlnIGJ1aWxkZXIgd2hpY2ggaXRlcmF0ZXMgdGhyb3VnaCBub2RlcyBh bmQgZ2VuZXJhdGVzCnRoZSBmcnIgY29uZmlnIGZvciB0aGUgc3BlY2lmaWVkIGN1cnJlbnRfbm9k ZS4gVGhpcyBwYXJ0IGFsc28KZGlzdHJpYnV0ZXMgdGhlIGZhYnJpYyBvcHRpb25zIG9uIGFsbCB0 aGUgaW50ZXJmYWNlcyDigJMgZS5nLiB0aGUKaGVsbG8taW50ZXJ2YWwgb3B0aW9uIG9uIHRoZSBm YWJyaWMgd2lsbCBiZSBhZGRlZCB0byBhbGwgaW50ZXJmYWNlcwpoZXJlLgoKV2UgbWFpbmx5IG5l ZWQgdG8gYWRkIHRoZXNlIG9iamVjdHMgdG8gRlJSOgoKKiBpbnRlcmZhY2VzCiAgICBXZSBzaW1w bHkgaXRlcmF0ZSB0aHJvdWdoIGFsbCBjb25maWd1cmVkIGludGVyZmFjZXMgYW5kIGFkZCB0aGVt IEZSUgogICAgd2l0aCBhIHNob3J0IGNvbmZpZyBsaW5lIHRlbGxpbmcgdGhlIGRhZW1vbiB0byBl bmFibGUKICAgIG9wZW5mYWJyaWMvb3NwZiBvbiB0aGlzIGludGVyZmFjZS4KCiogcm91dGVycwog ICAgVGhlIHRlbGwgdGhlIEZSUiBkYWVtb24gdG8gaW5pdGlhdGUgdGhlIG9wZW5mYWJyaWMvb3Nw ZiBkYWVtb24gb24KICAgIGV2ZXJ5IG5vZGUuCgoqIGFjY2Vzcy1saXN0cwogICAgV2UgdGhyb3cg YWxsIHRoZSByb3V0ZXItaXBzIG9mIGFsbCB0aGUgb3RoZXIgbm9kZXMgaW4gdGhlIHNhbWUKICAg IGZhYnJpYyBpbiBhY2Nlc3MtbGlzdC4gVGhpcyB3YXkgd2UgY2FuIHNpbXBseSB1c2UgYSByb3V0 ZS1tYXAgdG8KICAgIG1hdGNoIG9uIGl0LgoKKiByb3V0ZS1tYXBzCiAgICBXZSBhZGQgYSByb3V0 ZS1tYXAgdG8gZXZlcnkgZmFicmljIHNvIHRoYXQgd2UgcmV3cml0ZSB0aGUgc291cmNlCiAgICBh ZGRyZXNzIHRvIHRoZSBjdXJyZW50IHJvdXRlci1pcCB3aGljaCBpcyBvbiB0aGUgbG9jYWwKICAg IGR1bW15X2ludGVyZmFjZS4KCiogaXAtcHJvdG9jb2wgc3RhdGVtZW50cwogICAgVGhlc2UgYWRk IHRoZSByb3V0ZS1tYXAgdG8gdGhlIHByb3RvY29sIGFuZCBhbGwgdGhlIHJvdXRlcyBmcm9tIHRo ZQogICAgcHJvdG9jb2wgYXJlIGdvaW5nIHRocm91Z2ggdGhlIHJvdXRlLW1hcC4KClNpZ25lZC1v ZmYtYnk6IEdhYnJpZWwgR29sbGVyIDxnLmdvbGxlckBwcm94bW94LmNvbT4KLS0tCiBwcm94bW94 LXZlLWNvbmZpZy9DYXJnby50b21sICAgICAgICAgICAgfCAgIDcgKwogcHJveG1veC12ZS1jb25m aWcvZGViaWFuL2NvbnRyb2wgICAgICAgIHwgIDM3ICsrLQogcHJveG1veC12ZS1jb25maWcvc3Jj L3Nkbi9mYWJyaWMvbW9kLnJzIHwgNDE2ICsrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxl cyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9wcm94bW94LXZlLWNvbmZpZy9DYXJnby50b21sIGIvcHJveG1veC12ZS1jb25maWcvQ2FyZ28u dG9tbAppbmRleCAzZjc2MzllZmExNTMuLjIzMWUyMzdmYjgyZiAxMDA2NDQKLS0tIGEvcHJveG1v eC12ZS1jb25maWcvQ2FyZ28udG9tbAorKysgYi9wcm94bW94LXZlLWNvbmZpZy9DYXJnby50b21s CkBAIC0yNCwzICsyNCwxMCBAQCBwcm94bW94LXNlcmRlID0geyB2ZXJzaW9uID0gIjAuMS4yIiB9 CiBwcm94bW94LXN5cyA9ICIwLjYuNCIKIHByb3htb3gtc29ydGFibGUtbWFjcm8gPSAiMC4xLjMi CiBwcm94bW94LW5ldHdvcmstdHlwZXMgPSB7IHZlcnNpb24gPSAiMC4xIiwgcGF0aCA9ICIuLi9w cm94bW94LW5ldHdvcmstdHlwZXMvIiB9Citwcm94bW94LWZyciA9IHsgdmVyc2lvbiA9ICIwLjEi LCBwYXRoID0gIi4uL3Byb3htb3gtZnJyLyIsIG9wdGlvbmFsID0gdHJ1ZSB9CisKK1tmZWF0dXJl c10KK2ZyciA9IFsiZGVwOnByb3htb3gtZnJyIiBdCisKK1tkZXYtZGVwZW5kZW5jaWVzXQorc2lt aWxhci1hc3NlcnRzID0gIjEiCmRpZmYgLS1naXQgYS9wcm94bW94LXZlLWNvbmZpZy9kZWJpYW4v Y29udHJvbCBiL3Byb3htb3gtdmUtY29uZmlnL2RlYmlhbi9jb250cm9sCmluZGV4IDYwZWJjYmM0 MGUxYy4uNTU1NmJhNzQ3YjhhIDEwMDY0NAotLS0gYS9wcm94bW94LXZlLWNvbmZpZy9kZWJpYW4v Y29udHJvbAorKysgYi9wcm94bW94LXZlLWNvbmZpZy9kZWJpYW4vY29udHJvbApAQCAtMiwyMiAr MiwyNiBAQCBTb3VyY2U6IHJ1c3QtcHJveG1veC12ZS1jb25maWcKIFNlY3Rpb246IHJ1c3QKIFBy aW9yaXR5OiBvcHRpb25hbAogQnVpbGQtRGVwZW5kczogZGViaGVscGVyLWNvbXBhdCAoPSAxMyks Ci0gZGgtc2VxdWVuY2UtY2FyZ28sCi0gY2FyZ286bmF0aXZlIDwhbm9jaGVjaz4sCisgZGgtc2Vx dWVuY2UtY2FyZ28KK0J1aWxkLURlcGVuZHMtQXJjaDogY2FyZ286bmF0aXZlIDwhbm9jaGVjaz4s CiAgcnVzdGM6bmF0aXZlIDwhbm9jaGVjaz4sCiAgbGlic3RkLXJ1c3QtZGV2IDwhbm9jaGVjaz4s CiAgbGlicnVzdC1hbnlob3ctMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3QtbG9n LTAuNCtkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3Qtbml4LTAuMjYrZGVmYXVsdC1k ZXYgPCFub2NoZWNrPiwKKyBsaWJydXN0LXByb3htb3gtbmV0d29yay10eXBlcy0wLjErZGVmYXVs dC1kZXYgPCFub2NoZWNrPiwKICBsaWJydXN0LXByb3htb3gtc2NoZW1hLTQrZGVmYXVsdC1kZXYg PCFub2NoZWNrPiwKKyBsaWJydXN0LXByb3htb3gtc2VjdGlvbi1jb25maWctMitkZWZhdWx0LWRl diAoPj0gMi4xLjEtfn4pIDwhbm9jaGVjaz4sCisgbGlicnVzdC1wcm94bW94LXNlcmRlLTAuMStk ZWZhdWx0LWRldiAoPj0gMC4xLjItfn4pIDwhbm9jaGVjaz4sCiAgbGlicnVzdC1wcm94bW94LXNv cnRhYmxlLW1hY3JvLTAuMStkZWZhdWx0LWRldiAoPj0gMC4xLjMtfn4pIDwhbm9jaGVjaz4sCiAg bGlicnVzdC1wcm94bW94LXN5cy0wLjYrZGVmYXVsdC1kZXYgKD49IDAuNi40LX5+KSA8IW5vY2hl Y2s+LAogIGxpYnJ1c3Qtc2VyZGUtMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3Qt c2VyZGUtMStkZXJpdmUtZGV2IDwhbm9jaGVjaz4sCiAgbGlicnVzdC1zZXJkZS1qc29uLTErZGVm YXVsdC1kZXYgPCFub2NoZWNrPiwKICBsaWJydXN0LXNlcmRlLXBsYWluLTErZGVmYXVsdC1kZXYg PCFub2NoZWNrPiwKLSBsaWJydXN0LXNlcmRlLXdpdGgtMytkZWZhdWx0LWRldiA8IW5vY2hlY2s+ LAotIGxpYnJ1c3QtdGhpc2Vycm9yLTErZGVmYXVsdC1kZXYgKD49IDEuMC41OS1+fikgPCFub2No ZWNrPgorIGxpYnJ1c3Qtc2VyZGUtd2l0aC0zK2RlZmF1bHQtZGV2ICg+PSAzLjguMS1+fikgPCFu b2NoZWNrPiwKKyBsaWJydXN0LXRoaXNlcnJvci0yK2RlZmF1bHQtZGV2IDwhbm9jaGVjaz4sCisg bGlicnVzdC10cmFjaW5nLTAuMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+CiBNYWludGFpbmVyOiBQ cm94bW94IFN1cHBvcnQgVGVhbSA8c3VwcG9ydEBwcm94bW94LmNvbT4KIFN0YW5kYXJkcy1WZXJz aW9uOiA0LjcuMAogVmNzLUdpdDogZ2l0Oi8vZ2l0LnByb3htb3guY29tL2dpdC9wcm94bW94LXZl LXJzLmdpdApAQCAtMzMsMTUgKzM3LDIxIEBAIERlcGVuZHM6CiAgbGlicnVzdC1hbnlob3ctMStk ZWZhdWx0LWRldiwKICBsaWJydXN0LWxvZy0wLjQrZGVmYXVsdC1kZXYsCiAgbGlicnVzdC1uaXgt MC4yNitkZWZhdWx0LWRldiwKKyBsaWJydXN0LXByb3htb3gtbmV0d29yay10eXBlcy0wLjErZGVm YXVsdC1kZXYsCiAgbGlicnVzdC1wcm94bW94LXNjaGVtYS00K2RlZmF1bHQtZGV2LAorIGxpYnJ1 c3QtcHJveG1veC1zZWN0aW9uLWNvbmZpZy0yK2RlZmF1bHQtZGV2ICg+PSAyLjEuMS1+fiksCisg bGlicnVzdC1wcm94bW94LXNlcmRlLTAuMStkZWZhdWx0LWRldiAoPj0gMC4xLjItfn4pLAogIGxp YnJ1c3QtcHJveG1veC1zb3J0YWJsZS1tYWNyby0wLjErZGVmYXVsdC1kZXYgKD49IDAuMS4zLX5+ KSwKICBsaWJydXN0LXByb3htb3gtc3lzLTAuNitkZWZhdWx0LWRldiAoPj0gMC42LjQtfn4pLAog IGxpYnJ1c3Qtc2VyZGUtMStkZWZhdWx0LWRldiwKICBsaWJydXN0LXNlcmRlLTErZGVyaXZlLWRl diwKICBsaWJydXN0LXNlcmRlLWpzb24tMStkZWZhdWx0LWRldiwKICBsaWJydXN0LXNlcmRlLXBs YWluLTErZGVmYXVsdC1kZXYsCi0gbGlicnVzdC1zZXJkZS13aXRoLTMrZGVmYXVsdC1kZXYsCi0g bGlicnVzdC10aGlzZXJyb3ItMStkZWZhdWx0LWRldiAoPj0gMS4wLjU5LX5+KQorIGxpYnJ1c3Qt c2VyZGUtd2l0aC0zK2RlZmF1bHQtZGV2ICg+PSAzLjguMS1+fiksCisgbGlicnVzdC10aGlzZXJy b3ItMitkZWZhdWx0LWRldiwKKyBsaWJydXN0LXRyYWNpbmctMC4xK2RlZmF1bHQtZGV2CitTdWdn ZXN0czoKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnK2Zyci1kZXYgKD0gJHtiaW5hcnk6VmVy c2lvbn0pCiBQcm92aWRlczoKICBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnK2RlZmF1bHQtZGV2 ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKICBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLTAtZGV2 ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKQEAgLTUyLDMgKzYyLDE4IEBAIFByb3ZpZGVzOgogIGxp YnJ1c3QtcHJveG1veC12ZS1jb25maWctMC4yLjIrZGVmYXVsdC1kZXYgKD0gJHtiaW5hcnk6VmVy c2lvbn0pCiBEZXNjcmlwdGlvbjogUnVzdCBjcmF0ZSAicHJveG1veC12ZS1jb25maWciIC0gUnVz dCBzb3VyY2UgY29kZQogIFNvdXJjZSBjb2RlIGZvciBEZWJpYW5pemVkIFJ1c3QgY3JhdGUgInBy b3htb3gtdmUtY29uZmlnIgorCitQYWNrYWdlOiBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnK2Zy ci1kZXYKK0FyY2hpdGVjdHVyZTogYW55CitNdWx0aS1BcmNoOiBzYW1lCitEZXBlbmRzOgorICR7 bWlzYzpEZXBlbmRzfSwKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLWRldiAoPSAke2JpbmFy eTpWZXJzaW9ufSksCisgbGlicnVzdC1wcm94bW94LWZyci0wLjErZGVmYXVsdC1kZXYKK1Byb3Zp ZGVzOgorIGxpYnJ1c3QtcHJveG1veC12ZS1jb25maWctMCtmcnItZGV2ICg9ICR7YmluYXJ5OlZl cnNpb259KSwKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLTAuMitmcnItZGV2ICg9ICR7Ymlu YXJ5OlZlcnNpb259KSwKKyBsaWJydXN0LXByb3htb3gtdmUtY29uZmlnLTAuMi4yK2Zyci1kZXYg KD0gJHtiaW5hcnk6VmVyc2lvbn0pCitEZXNjcmlwdGlvbjogUnVzdCBjcmF0ZSAicHJveG1veC12 ZS1jb25maWciIC0gZmVhdHVyZSAiZnJyIgorIFRoaXMgbWV0YXBhY2thZ2UgZW5hYmxlcyBmZWF0 dXJlICJmcnIiIGZvciB0aGUgUnVzdCBwcm94bW94LXZlLWNvbmZpZyBjcmF0ZSwgYnkKKyBwdWxs aW5nIGluIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBuZWVkZWQgYnkgdGhhdCBmZWF0dXJl LgpkaWZmIC0tZ2l0IGEvcHJveG1veC12ZS1jb25maWcvc3JjL3Nkbi9mYWJyaWMvbW9kLnJzIGIv cHJveG1veC12ZS1jb25maWcvc3JjL3Nkbi9mYWJyaWMvbW9kLnJzCmluZGV4IDk0OTQ4NmE4NjM1 NS4uNWRkNDg2NmUzM2JiIDEwMDY0NAotLS0gYS9wcm94bW94LXZlLWNvbmZpZy9zcmMvc2RuL2Zh YnJpYy9tb2QucnMKKysrIGIvcHJveG1veC12ZS1jb25maWcvc3JjL3Nkbi9mYWJyaWMvbW9kLnJz CkBAIC0zLDEyICszLDMyIEBAIHB1YiBtb2Qgb3NwZjsKIAogdXNlIG9wZW5mYWJyaWM6Ok9wZW5G YWJyaWNTZWN0aW9uQ29uZmlnOwogdXNlIG9zcGY6Ok9zcGZTZWN0aW9uQ29uZmlnOwordXNlIHBy b3htb3hfbmV0d29ya190eXBlczo6bmV0OjpOZXQ7CiB1c2UgcHJveG1veF9zZWN0aW9uX2NvbmZp Zzo6dHlwZWQ6OkFwaVNlY3Rpb25EYXRhRW50cnk7CiB1c2UgcHJveG1veF9zZWN0aW9uX2NvbmZp Zzo6dHlwZWQ6OlNlY3Rpb25Db25maWdEYXRhOwogCit1c2Ugc3RkOjpuZXQ6OntJcEFkZHIsIElw djRBZGRyfTsKIHVzZSBzdGQ6Om9wczo6RGVyZWY7Cit1c2Ugc3RkOjpjb2xsZWN0aW9uczo6SGFz aE1hcDsKIAogdXNlIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVPd25lZDsKK3VzZSBzZXJkZTo6e0Rl c2VyaWFsaXplLCBTZXJpYWxpemV9OwordXNlIHRoaXNlcnJvcjo6RXJyb3I7CisKKyNbY2ZnKGZl YXR1cmUgPSAiZnJyIildCit1c2UgeworICAgIGFueWhvdzo6YW55aG93LAorICAgIHByb3htb3hf ZnJyOjp7CisgICAgICAgIG9zcGY6OkFyZWEsCisgICAgICAgIHJvdXRlX21hcDo6eworICAgICAg ICAgICAgQWNjZXNzQWN0aW9uLCBBY2Nlc3NMaXN0LCBBY2Nlc3NMaXN0TmFtZSwgQWNjZXNzTGlz dFJ1bGUsIFByb3RvY29sUm91dGVNYXAsCisgICAgICAgICAgICBSb3V0ZU1hcCwgUm91dGVNYXBO YW1lLCBSb3V0ZU1hcFNldCwgUm91dGVNYXBNYXRjaCwgUHJvdG9jb2xUeXBlCisgICAgICAgIH0s CisgICAgICAgIEZyckNvbmZpZywgRnJyV29yZCwgSW50ZXJmYWNlLCBJbnRlcmZhY2VOYW1lLCBS b3V0ZXIsIFJvdXRlck5hbWUsCisgICAgfSwKKyAgICBwcm94bW94X25ldHdvcmtfdHlwZXM6Omhv c3RuYW1lOjpIb3N0bmFtZSwKKyAgICBzdGQ6OmNvbGxlY3Rpb25zOjpCVHJlZU1hcCwKK307CiAK ICNbZGVyaXZlKERlYnVnLCBDbG9uZSldCiBwdWIgc3RydWN0IFZhbGlkPFQ+KFNlY3Rpb25Db25m aWdEYXRhPFQ+KTsKQEAgLTQyLDMgKzYyLDM5OSBAQCB3aGVyZQogICAgIH0KIH0KIAorI1tkZXJp dmUoU2VyaWFsaXplLCBEZXNlcmlhbGl6ZSwgRGVidWcsIENsb25lLCBQYXJ0aWFsRXEsIEVxLCBQ YXJ0aWFsT3JkLCBPcmQsIEhhc2gsIEVycm9yKV0KK3B1YiBlbnVtIENvbmZpZ0Vycm9yIHsKKyAg ICAjW2Vycm9yKCJub2RlIGlkIGhhcyBpbnZhbGlkIGZvcm1hdCIpXQorICAgIEludmFsaWROb2Rl SWQsCit9CisKKyNbZGVyaXZlKERlZmF1bHQsIENsb25lKV0KK3B1YiBzdHJ1Y3QgRmFicmljQ29u ZmlnIHsKKyAgICBvcGVuZmFicmljOiBPcHRpb248VmFsaWQ8T3BlbkZhYnJpY1NlY3Rpb25Db25m aWc+PiwKKyAgICBvc3BmOiBPcHRpb248VmFsaWQ8T3NwZlNlY3Rpb25Db25maWc+PiwKK30KKwor aW1wbCBGYWJyaWNDb25maWcgeworICAgIHB1YiBmbiBuZXcocmF3X29wZW5mYWJyaWM6ICZzdHIs IHJhd19vc3BmOiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgYW55aG93OjpFcnJvcj4geworICAgICAg ICBsZXQgb3BlbmZhYnJpYyA9IDxWYWxpZDxPcGVuRmFicmljU2VjdGlvbkNvbmZpZz4+OjpwYXJz ZV9zZWN0aW9uX2NvbmZpZygKKyAgICAgICAgICAgICJvcGVuZmFicmljLmNmZyIsCisgICAgICAg ICAgICByYXdfb3BlbmZhYnJpYywKKyAgICAgICAgKT87CisgICAgICAgIGxldCBvc3BmID0gPFZh bGlkPE9zcGZTZWN0aW9uQ29uZmlnPj46OnBhcnNlX3NlY3Rpb25fY29uZmlnKCJvc3BmLmNmZyIs IHJhd19vc3BmKT87CisKKyAgICAgICAgT2soU2VsZiB7CisgICAgICAgICAgICBvcGVuZmFicmlj OiBTb21lKG9wZW5mYWJyaWMpLAorICAgICAgICAgICAgb3NwZjogU29tZShvc3BmKSwKKyAgICAg ICAgfSkKKyAgICB9CisKKyAgICBwdWIgZm4gb3BlbmZhYnJpYygmc2VsZikgLT4gJk9wdGlvbjxW YWxpZDxPcGVuRmFicmljU2VjdGlvbkNvbmZpZz4+IHsKKyAgICAgICAgJnNlbGYub3BlbmZhYnJp YworICAgIH0KKyAgICBwdWIgZm4gb3NwZigmc2VsZikgLT4gJk9wdGlvbjxWYWxpZDxPc3BmU2Vj dGlvbkNvbmZpZz4+IHsKKyAgICAgICAgJnNlbGYub3NwZgorICAgIH0KKworICAgIHB1YiBmbiB3 aXRoX29wZW5mYWJyaWMoY29uZmlnOiBWYWxpZDxPcGVuRmFicmljU2VjdGlvbkNvbmZpZz4pIC0+ IEZhYnJpY0NvbmZpZyB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAgb3BlbmZhYnJpYzog U29tZShjb25maWcpLAorICAgICAgICAgICAgb3NwZjogTm9uZSwKKyAgICAgICAgfQorICAgIH0K KworICAgIHB1YiBmbiB3aXRoX29zcGYoY29uZmlnOiBWYWxpZDxPc3BmU2VjdGlvbkNvbmZpZz4p IC0+IEZhYnJpY0NvbmZpZyB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAgb3NwZjogU29t ZShjb25maWcpLAorICAgICAgICAgICAgb3BlbmZhYnJpYzogTm9uZSwKKyAgICAgICAgfQorICAg IH0KK30KKworcHViIHRyYWl0IEZyb21TZWN0aW9uQ29uZmlnCit3aGVyZQorICAgIFNlbGY6IFNp emVkICsgVHJ5RnJvbTxTZWN0aW9uQ29uZmlnRGF0YTxTZWxmOjpTZWN0aW9uPj4sCisgICAgPFNl bGYgYXMgVHJ5RnJvbTxTZWN0aW9uQ29uZmlnRGF0YTxTZWxmOjpTZWN0aW9uPj4+OjpFcnJvcjog c3RkOjpmbXQ6OkRlYnVnLAoreworICAgIHR5cGUgU2VjdGlvbjogQXBpU2VjdGlvbkRhdGFFbnRy eSArIERlc2VyaWFsaXplT3duZWQ7CisKKyAgICBmbiBmcm9tX3NlY3Rpb25fY29uZmlnKHJhdzog JnN0cikgLT4gUmVzdWx0PFNlbGYsIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IHNlY3Rp b25fY29uZmlnX2RhdGEgPSBTZWxmOjpTZWN0aW9uOjpzZWN0aW9uX2NvbmZpZygpCisgICAgICAg ICAgICAucGFyc2UoU2VsZjo6ZmlsZW5hbWUoKSwgcmF3KT8KKyAgICAgICAgICAgIC50cnlfaW50 bygpPzsKKworICAgICAgICBsZXQgb3V0cHV0ID0gU2VsZjo6dHJ5X2Zyb20oc2VjdGlvbl9jb25m aWdfZGF0YSkudW53cmFwKCk7CisgICAgICAgIE9rKG91dHB1dCkKKyAgICB9CisKKyAgICBmbiBm aWxlbmFtZSgpIC0+IFN0cmluZzsKK30KKworLy8vIEJ1aWxkZXIgdGhhdCBoZWxwcyBidWlsZGlu ZyB0aGUgRnJyQ29uZmlnLgorI1tkZXJpdmUoRGVmYXVsdCldCisjW2NmZyhmZWF0dXJlID0gImZy ciIpXQorcHViIHN0cnVjdCBGcnJDb25maWdCdWlsZGVyIHsKKyAgICBmYWJyaWNzOiBGYWJyaWND b25maWcsCit9CisKKyNbY2ZnKGZlYXR1cmUgPSAiZnJyIildCitpbXBsIEZyckNvbmZpZ0J1aWxk ZXIgeworICAgIC8vLyBBZGQgZmFicmljcyB0byB0aGUgYnVpbGRlcgorICAgIHB1YiBmbiBhZGRf ZmFicmljcyhtdXQgc2VsZiwgZmFicmljOiBGYWJyaWNDb25maWcpIC0+IEZyckNvbmZpZ0J1aWxk ZXIgeworICAgICAgICBzZWxmLmZhYnJpY3MgPSBmYWJyaWM7CisgICAgICAgIHNlbGYKKyAgICB9 CisKKyAgICAvLy8gQnVpbGQgdGhlIGNvbXBsZXRlIFtgRnJyQ29uZmlnYF0gZnJvbSB0aGlzIGJ1 aWxkZXIgY29uZmlndXJhdGlvbiBnaXZlbiB0aGUgaG9zdG5hbWUgb2YgdGhlCisgICAgLy8vIG5v ZGUgZm9yIHdoaWNoIHdlIHdhbnQgdG8gYnVpbGQgdGhlIGNvbmZpZy4gV2UgYWxzbyBpbmplY3Qg dGhlIGNvbW1vbiBmYWJyaWMtbGV2ZWwgb3B0aW9ucworICAgIC8vLyBpbnRvIHRoZSBpbnRlcmZh Y2VzIGhlcmUuIChlLmcuIHRoZSBmYWJyaWMtbGV2ZWwgImhlbGxvLWludGVydmFsIiBnZXRzIGFk ZGVkIHRvIGV2ZXJ5CisgICAgLy8vIGludGVyZmFjZSBpZiB0aGVyZSBpc24ndCBhIG1vcmUgc3Bl Y2lmaWMgb25lLikKKyAgICBwdWIgZm4gYnVpbGQoc2VsZiwgY3VycmVudF9ub2RlOiBIb3N0bmFt ZSkgLT4gUmVzdWx0PEZyckNvbmZpZywgYW55aG93OjpFcnJvcj4geworICAgICAgICBsZXQgbXV0 IHJvdXRlcjogQlRyZWVNYXA8Um91dGVyTmFtZSwgUm91dGVyPiA9IEJUcmVlTWFwOjpuZXcoKTsK KyAgICAgICAgbGV0IG11dCBpbnRlcmZhY2VzOiBCVHJlZU1hcDxJbnRlcmZhY2VOYW1lLCBJbnRl cmZhY2U+ID0gQlRyZWVNYXA6Om5ldygpOworICAgICAgICBsZXQgbXV0IGFjY2Vzc19saXN0czog QlRyZWVNYXA8QWNjZXNzTGlzdE5hbWUsIEFjY2Vzc0xpc3Q+ID0gQlRyZWVNYXA6Om5ldygpOwor ICAgICAgICBsZXQgbXV0IHJvdXRlbWFwczogVmVjPFJvdXRlTWFwPiA9IFZlYzo6bmV3KCk7Cisg ICAgICAgIGxldCBtdXQgcHJvdG9jb2xfcm91dGVtYXBzOiBWZWM8UHJvdG9jb2xSb3V0ZU1hcD4g PSBWZWM6Om5ldygpOworCisgICAgICAgIGlmIGxldCBTb21lKG9wZW5mYWJyaWMpID0gc2VsZi5m YWJyaWNzLm9wZW5mYWJyaWMgeworICAgICAgICAgICAgbGV0IG11dCBmYWJyaWNzID0gSGFzaE1h cDo6bmV3KCk7CisgICAgICAgICAgICBsZXQgbXV0IGxvY2FsX2NvbmZpZ3VyYXRpb24gPSBWZWM6 Om5ldygpOworCisgICAgICAgICAgICBmb3IgKF8sIHNlY3Rpb24pIGluIG9wZW5mYWJyaWMuaXRl cigpIHsKKyAgICAgICAgICAgICAgICBtYXRjaCBzZWN0aW9uIHsKKyAgICAgICAgICAgICAgICAg ICAgT3BlbkZhYnJpY1NlY3Rpb25Db25maWc6OkZhYnJpYyhmYWJyaWMpID0+IHsKKyAgICAgICAg ICAgICAgICAgICAgICAgIGZhYnJpY3MuaW5zZXJ0KGZhYnJpYy5mYWJyaWNfaWQuY2xvbmUoKSwg ZmFicmljKTsKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgT3Bl bkZhYnJpY1NlY3Rpb25Db25maWc6Ok5vZGUobm9kZSkgPT4geworICAgICAgICAgICAgICAgICAg ICAgICAgaWYgbm9kZS5ub2RlX2lkLm5vZGUgPT0gY3VycmVudF9ub2RlIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsb2NhbF9jb25maWd1cmF0aW9uLnB1c2gobm9kZSk7CisgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCBtdXQgcm91dGVtYXBfc2VxID0g MTAwOworCisgICAgICAgICAgICBmb3Igbm9kZSBpbiBsb2NhbF9jb25maWd1cmF0aW9uIHsKKyAg ICAgICAgICAgICAgICBsZXQgZmFicmljID0gZmFicmljcy5nZXQoJm5vZGUubm9kZV9pZC5mYWJy aWNfaWQpCisgICAgICAgICAgICAgICAgICAgIC5va19vcl9lbHNlKHx8IGFueWhvdyEoImNvdWxk IG5vdCBmaW5kIGZhYnJpYzoge30iLCBub2RlLm5vZGVfaWQuZmFicmljX2lkKSk/OworCisgICAg ICAgICAgICAgICAgbGV0IChyb3V0ZXJfbmFtZSwgcm91dGVyX2l0ZW0pID0gU2VsZjo6YnVpbGRf b3BlbmZhYnJpY19yb3V0ZXIoCisgICAgICAgICAgICAgICAgICAgICZub2RlLm5vZGVfaWQuZmFi cmljX2lkLAorICAgICAgICAgICAgICAgICAgICAmbm9kZS5yb3V0ZXJfaWQuaW50bygpLAorICAg ICAgICAgICAgICAgICk/OworICAgICAgICAgICAgICAgIHJvdXRlci5pbnNlcnQocm91dGVyX25h bWUsIHJvdXRlcl9pdGVtKTsKKworICAgICAgICAgICAgICAgIGxldCAoaW50ZXJmYWNlLCBpbnRl cmZhY2VfbmFtZSkgPSBTZWxmOjpidWlsZF9vcGVuZmFicmljX2R1bW15X2ludGVyZmFjZSgKKyAg ICAgICAgICAgICAgICAgICAgJm5vZGUubm9kZV9pZC5mYWJyaWNfaWQsCisgICAgICAgICAgICAg ICAgICAgIG5vZGUucm91dGVyX2lkLAorICAgICAgICAgICAgICAgICk/OworCisgICAgICAgICAg ICAgICAgaWYgaW50ZXJmYWNlcy5pbnNlcnQoaW50ZXJmYWNlX25hbWUsIGludGVyZmFjZSkuaXNf c29tZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2luZzo6ZXJyb3IhKAorICAgICAgICAg ICAgICAgICAgICAgICAgIkFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGR1 bW15IGludGVyZmFjZSBleGlzdHMiCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIGludGVyZmFjZSBpbiBub2RlLmludGVyZmFj ZS5pdGVyKCkgeworICAgICAgICAgICAgICAgICAgICBsZXQgKGludGVyZmFjZSwgaW50ZXJmYWNl X25hbWUpID0gU2VsZjo6YnVpbGRfb3BlbmZhYnJpY19pbnRlcmZhY2UoCisgICAgICAgICAgICAg ICAgICAgICAgICAmbm9kZS5ub2RlX2lkLmZhYnJpY19pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhYnJpYywKKyAgICAgICAg ICAgICAgICAgICAgICAgIG5vZGUucm91dGVyX2lkLAorICAgICAgICAgICAgICAgICAgICApPzsK KworICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcmZhY2VzLmluc2VydChpbnRlcmZhY2VfbmFt ZSwgaW50ZXJmYWNlKS5pc19zb21lKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2lu Zzo6d2FybiEoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFuIGludGVyZmFjZSBjYW5u b3QgYmUgaW4gbXVsdGlwbGUgb3BlbmZhYnJpYyBmYWJyaWNzIgorICAgICAgICAgICAgICAgICAg ICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgICAgIGxldCBhY2Nlc3NfbGlzdF9uYW1lID0gQWNjZXNzTGlzdE5hbWU6Om5ldyhm b3JtYXQhKAorICAgICAgICAgICAgICAgICAgICAib3BlbmZhYnJpY197fV9pcHMiLAorICAgICAg ICAgICAgICAgICAgICBub2RlLm5vZGVfaWQuZmFicmljX2lkCisgICAgICAgICAgICAgICAgKSk7 CisKKyAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IEFjY2Vzc0xpc3RSdWxlIHsKKyAgICAgICAg ICAgICAgICAgICAgYWN0aW9uOiBBY2Nlc3NBY3Rpb246OlBlcm1pdCwKKyAgICAgICAgICAgICAg ICAgICAgbmV0d29yazogZmFicmljLmxvb3BiYWNrX3ByZWZpeCwKKyAgICAgICAgICAgICAgICAg ICAgc2VxOiBOb25lLAorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhY2Nl c3NfbGlzdHMKKyAgICAgICAgICAgICAgICAgICAgLmVudHJ5KGFjY2Vzc19saXN0X25hbWUuY2xv bmUoKSkKKyAgICAgICAgICAgICAgICAgICAgLmFuZF9tb2RpZnkofGx8IGwucnVsZXMucHVzaChy dWxlLmNsb25lKCkpKQorICAgICAgICAgICAgICAgICAgICAub3JfaW5zZXJ0KEFjY2Vzc0xpc3Qg eworICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWNjZXNzX2xpc3RfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJ1bGVzOiB2ZWMhW3J1bGVdLAorICAgICAgICAgICAgICAgICAg ICB9KTsKKworICAgICAgICAgICAgICAgIGxldCByb3V0ZW1hcCA9IFNlbGY6OmJ1aWxkX29wZW5m YWJyaWNfZHVtbXlfcm91dGVtYXAoCisgICAgICAgICAgICAgICAgICAgICZub2RlLm5vZGVfaWQu ZmFicmljX2lkLAorICAgICAgICAgICAgICAgICAgICBub2RlLnJvdXRlcl9pZCwKKyAgICAgICAg ICAgICAgICAgICAgcm91dGVtYXBfc2VxCisgICAgICAgICAgICAgICAgKT87CisKKyAgICAgICAg ICAgICAgICByb3V0ZW1hcF9zZXEgKz0gMTA7CisKKyAgICAgICAgICAgICAgICByb3V0ZW1hcHMu cHVzaChyb3V0ZW1hcCk7CisKKyAgICAgICAgICAgICAgICBsZXQgcHJvdG9jb2xfcm91dGVtYXAg PSBQcm90b2NvbFJvdXRlTWFwIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w6IFByb3Rv Y29sVHlwZTo6T3BlbkZhYnJpYywKKyAgICAgICAgICAgICAgICAgICAgcm91dGVtYXBfbmFtZTog Um91dGVNYXBOYW1lOjpuZXcoIm9wZW5mYWJyaWMiLnRvX293bmVkKCkpLAorICAgICAgICAgICAg ICAgIH07CisKKyAgICAgICAgICAgICAgICBwcm90b2NvbF9yb3V0ZW1hcHMucHVzaChwcm90b2Nv bF9yb3V0ZW1hcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiBsZXQg U29tZShvc3BmKSA9IHNlbGYuZmFicmljcy5vc3BmIHsKKyAgICAgICAgICAgIGxldCBtdXQgZmFi cmljcyA9IEhhc2hNYXA6Om5ldygpOworICAgICAgICAgICAgbGV0IG11dCBsb2NhbF9jb25maWd1 cmF0aW9uID0gVmVjOjpuZXcoKTsKKworICAgICAgICAgICAgZm9yIChfLCBzZWN0aW9uKSBpbiBv c3BmLml0ZXIoKSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggc2VjdGlvbiB7CisgICAgICAgICAg ICAgICAgICAgIE9zcGZTZWN0aW9uQ29uZmlnOjpGYWJyaWMoZmFicmljKSA9PiB7CisgICAgICAg ICAgICAgICAgICAgICAgICBmYWJyaWNzLmluc2VydChmYWJyaWMuYXJlYS5jbG9uZSgpLCBmYWJy aWMpOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBPc3BmU2Vj dGlvbkNvbmZpZzo6Tm9kZShub2RlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBu b2RlLm5vZGVfaWQubm9kZSA9PSBjdXJyZW50X25vZGUgeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxvY2FsX2NvbmZpZ3VyYXRpb24ucHVzaChub2RlKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgZm9yIG5vZGUgaW4gbG9jYWxfY29uZmlndXJhdGlvbiB7 CisgICAgICAgICAgICAgICAgbGV0IGZhYnJpYyA9IGZhYnJpY3MuZ2V0KCZub2RlLm5vZGVfaWQu YXJlYSkKKyAgICAgICAgICAgICAgICAgICAgLm9rX29yX2Vsc2UofHwgYW55aG93ISgiY291bGQg bm90IGZpbmQgZmFicmljOiB7fSIsIG5vZGUubm9kZV9pZC5hcmVhKSk/OworCisgICAgICAgICAg ICAgICAgbGV0IChyb3V0ZXJfbmFtZSwgcm91dGVyX2l0ZW0pID0KKyAgICAgICAgICAgICAgICAg ICAgU2VsZjo6YnVpbGRfb3NwZl9yb3V0ZXIoJm5vZGUubm9kZV9pZC5hcmVhLCBub2RlKT87Cisg ICAgICAgICAgICAgICAgcm91dGVyLmluc2VydChyb3V0ZXJfbmFtZSwgcm91dGVyX2l0ZW0pOwor CisgICAgICAgICAgICAgICAgLy8gQWRkIGR1bW15IGludGVyZmFjZQorICAgICAgICAgICAgICAg IGxldCAoaW50ZXJmYWNlLCBpbnRlcmZhY2VfbmFtZSkgPQorICAgICAgICAgICAgICAgICAgICBT ZWxmOjpidWlsZF9vc3BmX2R1bW15X2ludGVyZmFjZSgmbm9kZS5ub2RlX2lkLmFyZWEpPzsKKwor ICAgICAgICAgICAgICAgIGlmIGludGVyZmFjZXMuaW5zZXJ0KGludGVyZmFjZV9uYW1lLCBpbnRl cmZhY2UpLmlzX3NvbWUoKSB7CisgICAgICAgICAgICAgICAgICAgIHRyYWNpbmc6OmVycm9yISgK KyAgICAgICAgICAgICAgICAgICAgICAgICJBbiBpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1l IGFzIHRoZSBkdW1teSBpbnRlcmZhY2UgZXhpc3RzIgorICAgICAgICAgICAgICAgICAgICApOwor ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciBpbnRlcmZhY2UgaW4gbm9k ZS5pbnRlcmZhY2UuaXRlcigpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IChpbnRlcmZhY2Us IGludGVyZmFjZV9uYW1lKSA9IFNlbGY6OmJ1aWxkX29zcGZfaW50ZXJmYWNlKAorICAgICAgICAg ICAgICAgICAgICAgICAgJm5vZGUubm9kZV9pZC5hcmVhLAorICAgICAgICAgICAgICAgICAgICAg ICAgaW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICApPzsKKworICAgICAgICAgICAgICAg ICAgICBpZiBpbnRlcmZhY2VzLmluc2VydChpbnRlcmZhY2VfbmFtZSwgaW50ZXJmYWNlKS5pc19z b21lKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2luZzo6d2FybiEoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkFuIGludGVyZmFjZSBjYW5ub3QgYmUgaW4gbXVsdGlwbGUg b3BlbmZhYnJpYyBmYWJyaWNzIgorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxldCBh Y2Nlc3NfbGlzdF9uYW1lID0gQWNjZXNzTGlzdE5hbWU6Om5ldyhmb3JtYXQhKAorICAgICAgICAg ICAgICAgICAgICAib3NwZl97fV9pcHMiLAorICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVf aWQuYXJlYQorICAgICAgICAgICAgICAgICkpOworCisgICAgICAgICAgICAgICAgbGV0IHJ1bGUg PSBBY2Nlc3NMaXN0UnVsZSB7CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogQWNjZXNzQWN0 aW9uOjpQZXJtaXQsCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcms6IGZhYnJpYy5sb29wYmFj a19wcmVmaXguaW50bygpLAorICAgICAgICAgICAgICAgICAgICBzZXE6IE5vbmUsCisgICAgICAg ICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGFjY2Vzc19saXN0cworICAgICAgICAgICAg ICAgICAgICAuZW50cnkoYWNjZXNzX2xpc3RfbmFtZS5jbG9uZSgpKQorICAgICAgICAgICAgICAg ICAgICAuYW5kX21vZGlmeSh8bHwgbC5ydWxlcy5wdXNoKHJ1bGUuY2xvbmUoKSkpCisgICAgICAg ICAgICAgICAgICAgIC5vcl9pbnNlcnQoQWNjZXNzTGlzdCB7CisgICAgICAgICAgICAgICAgICAg ICAgICBuYW1lOiBhY2Nlc3NfbGlzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgcnVs ZXM6IHZlYyFbcnVsZV0sCisgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAg ICAgbGV0IHJvdXRlbWFwID0gU2VsZjo6YnVpbGRfb3NwZl9kdW1teV9yb3V0ZW1hcCgKKyAgICAg ICAgICAgICAgICAgICAgJm5vZGUubm9kZV9pZC5hcmVhLAorICAgICAgICAgICAgICAgICAgICBu b2RlLnJvdXRlcl9pZCwKKyAgICAgICAgICAgICAgICApPzsKKyAgICAgICAgICAgICAgICByb3V0 ZW1hcHMucHVzaChyb3V0ZW1hcCk7CisKKyAgICAgICAgICAgICAgICBsZXQgcHJvdG9jb2xfcm91 dGVtYXAgPSBQcm90b2NvbFJvdXRlTWFwIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w6 IFByb3RvY29sVHlwZTo6T3NwZiwKKyAgICAgICAgICAgICAgICAgICAgcm91dGVtYXBfbmFtZTog Um91dGVNYXBOYW1lOjpuZXcoIm9zcGYiLnRvX293bmVkKCkpLAorICAgICAgICAgICAgICAgIH07 CisKKyAgICAgICAgICAgICAgICBwcm90b2NvbF9yb3V0ZW1hcHMucHVzaChwcm90b2NvbF9yb3V0 ZW1hcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBPayhGcnJDb25maWcg eworICAgICAgICAgICAgcm91dGVyLAorICAgICAgICAgICAgaW50ZXJmYWNlcywKKyAgICAgICAg ICAgIGFjY2Vzc19saXN0cywKKyAgICAgICAgICAgIHJvdXRlbWFwcywKKyAgICAgICAgICAgIHBy b3RvY29sX3JvdXRlbWFwcywKKyAgICAgICAgfSkKKyAgICB9CisKKyAgICBmbiBidWlsZF9vc3Bm X3JvdXRlcigKKyAgICAgICAgYXJlYTogJm9zcGY6OkFyZWEsCisgICAgICAgIG5vZGVfY29uZmln OiAmb3NwZjo6Tm9kZVNlY3Rpb24sCisgICAgKSAtPiBSZXN1bHQ8KFJvdXRlck5hbWUsIFJvdXRl ciksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IG9zcGZfcm91dGVyOiBwcm94bW94X2Zy cjo6b3NwZjo6T3NwZlJvdXRlciA9IG5vZGVfY29uZmlnLnRvX293bmVkKCkuaW50bygpOworICAg ICAgICBsZXQgcm91dGVyX2l0ZW0gPSBSb3V0ZXI6Ok9zcGYob3NwZl9yb3V0ZXIpOworICAgICAg ICBsZXQgZnJyX3dvcmRfaWQgPSBGcnJXb3JkOjpuZXcoYXJlYS50b19zdHJpbmcoKSk/OworICAg ICAgICBsZXQgcm91dGVyX25hbWUgPSBSb3V0ZXJOYW1lOjpPc3BmKHByb3htb3hfZnJyOjpvc3Bm OjpPc3BmUm91dGVyTmFtZTo6ZnJvbShBcmVhOjpuZXcoCisgICAgICAgICAgICBmcnJfd29yZF9p ZCwKKyAgICAgICAgKT8pKTsKKyAgICAgICAgT2soKHJvdXRlcl9uYW1lLCByb3V0ZXJfaXRlbSkp CisgICAgfQorCisgICAgZm4gYnVpbGRfb3BlbmZhYnJpY19yb3V0ZXIoCisgICAgICAgIGZhYnJp Y19pZDogJm9wZW5mYWJyaWM6OkZhYnJpY0lkLAorICAgICAgICBuZXQ6ICZOZXQsCisgICAgKSAt PiBSZXN1bHQ8KFJvdXRlck5hbWUsIFJvdXRlciksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAg bGV0IG9mciA9IHByb3htb3hfZnJyOjpvcGVuZmFicmljOjpPcGVuRmFicmljUm91dGVyIHsgbmV0 OiBuZXQuY2xvbmUoKSB9OworICAgICAgICBsZXQgcm91dGVyX2l0ZW0gPSBSb3V0ZXI6Ok9wZW5G YWJyaWMob2ZyKTsKKyAgICAgICAgbGV0IGZycl93b3JkX2lkID0gRnJyV29yZDo6bmV3KGZhYnJp Y19pZC50b19zdHJpbmcoKSk/OworICAgICAgICBsZXQgcm91dGVyX25hbWUgPSBSb3V0ZXJOYW1l OjpPcGVuRmFicmljKGZycl93b3JkX2lkLmludG8oKSk7CisgICAgICAgIE9rKChyb3V0ZXJfbmFt ZSwgcm91dGVyX2l0ZW0pKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29zcGZfaW50ZXJmYWNlKAor ICAgICAgICBhcmVhOiAmb3NwZjo6QXJlYSwKKyAgICAgICAgaW50ZXJmYWNlOiAmb3NwZjo6SW50 ZXJmYWNlUHJvcGVydGllcywKKyAgICApIC0+IFJlc3VsdDwoSW50ZXJmYWNlLCBJbnRlcmZhY2VO YW1lKSwgYW55aG93OjpFcnJvcj4geworICAgICAgICBsZXQgZnJyX2ludGVyZmFjZTogcHJveG1v eF9mcnI6Om9zcGY6Ok9zcGZJbnRlcmZhY2UgPSBpbnRlcmZhY2UudG9fZnJyX2ludGVyZmFjZShh cmVhKT87CisKKyAgICAgICAgbGV0IGludGVyZmFjZV9uYW1lID0gSW50ZXJmYWNlTmFtZTo6T3Nw ZihpbnRlcmZhY2UubmFtZS5wYXJzZSgpPyk7CisgICAgICAgIE9rKChmcnJfaW50ZXJmYWNlLmlu dG8oKSwgaW50ZXJmYWNlX25hbWUpKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29zcGZfZHVtbXlf aW50ZXJmYWNlKAorICAgICAgICBmYWJyaWNfaWQ6ICZvc3BmOjpBcmVhLAorICAgICkgLT4gUmVz dWx0PChJbnRlcmZhY2UsIEludGVyZmFjZU5hbWUpLCBhbnlob3c6OkVycm9yPiB7CisgICAgICAg IGxldCBmcnJfd29yZCA9IEZycldvcmQ6Om5ldyhmYWJyaWNfaWQudG9fc3RyaW5nKCkpPzsKKyAg ICAgICAgbGV0IGZycl9pbnRlcmZhY2UgPSBwcm94bW94X2Zycjo6b3NwZjo6T3NwZkludGVyZmFj ZSB7CisgICAgICAgICAgICBhcmVhOiBmcnJfd29yZC50cnlfaW50bygpPywKKyAgICAgICAgICAg IHBhc3NpdmU6IFNvbWUodHJ1ZSksCisgICAgICAgICAgICBuZXR3b3JrX3R5cGU6IE5vbmUsCisg ICAgICAgIH07CisgICAgICAgIGxldCBpbnRlcmZhY2VfbmFtZSA9IEludGVyZmFjZU5hbWU6Ok9w ZW5GYWJyaWMoZm9ybWF0ISgiZHVtbXlfe30iLCBmYWJyaWNfaWQpLnBhcnNlKCk/KTsKKyAgICAg ICAgT2soKGZycl9pbnRlcmZhY2UuaW50bygpLCBpbnRlcmZhY2VfbmFtZSkpCisgICAgfQorCisg ICAgZm4gYnVpbGRfb3BlbmZhYnJpY19pbnRlcmZhY2UoCisgICAgICAgIGZhYnJpY19pZDogJm9w ZW5mYWJyaWM6OkZhYnJpY0lkLAorICAgICAgICBpbnRlcmZhY2U6ICZvcGVuZmFicmljOjpJbnRl cmZhY2VQcm9wZXJ0aWVzLAorICAgICAgICBmYWJyaWNfY29uZmlnOiAmb3BlbmZhYnJpYzo6RmFi cmljU2VjdGlvbiwKKyAgICAgICAgcm91dGVyX2lkOiBJcEFkZHIsCisgICAgKSAtPiBSZXN1bHQ8 KEludGVyZmFjZSwgSW50ZXJmYWNlTmFtZSksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0 IG11dCBmcnJfaW50ZXJmYWNlOiBwcm94bW94X2Zycjo6b3BlbmZhYnJpYzo6T3BlbkZhYnJpY0lu dGVyZmFjZSA9CisgICAgICAgICAgICBpbnRlcmZhY2UudG9fZnJyX2ludGVyZmFjZShmYWJyaWNf aWQsIHJvdXRlcl9pZC5pc19pcHY2KCkpPzsKKyAgICAgICAgLy8gSWYgbm8gc3BlY2lmaWMgaGVs bG9faW50ZXJ2YWwgaXMgc2V0LCBnZXQgZGVmYXVsdCBvbmUgZnJvbSBmYWJyaWMKKyAgICAgICAg Ly8gY29uZmlnCisgICAgICAgIGlmIGZycl9pbnRlcmZhY2UuaGVsbG9faW50ZXJ2YWwoKS5pc19u b25lKCkgeworICAgICAgICAgICAgZnJyX2ludGVyZmFjZS5zZXRfaGVsbG9faW50ZXJ2YWwoZmFi cmljX2NvbmZpZy5oZWxsb19pbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0IGludGVy ZmFjZV9uYW1lID0gSW50ZXJmYWNlTmFtZTo6T3BlbkZhYnJpYyhpbnRlcmZhY2UubmFtZS5wYXJz ZSgpPyk7CisgICAgICAgIE9rKChmcnJfaW50ZXJmYWNlLmludG8oKSwgaW50ZXJmYWNlX25hbWUp KQorICAgIH0KKworICAgIGZuIGJ1aWxkX29wZW5mYWJyaWNfZHVtbXlfaW50ZXJmYWNlKAorICAg ICAgICBmYWJyaWNfaWQ6ICZvcGVuZmFicmljOjpGYWJyaWNJZCwKKyAgICAgICAgcm91dGVyX2lk OiBJcEFkZHIsCisgICAgKSAtPiBSZXN1bHQ8KEludGVyZmFjZSwgSW50ZXJmYWNlTmFtZSksIGFu eWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IGZycl93b3JkID0gRnJyV29yZDo6bmV3KGZhYnJp Y19pZC50b19zdHJpbmcoKSk/OworICAgICAgICBsZXQgZnJyX2ludGVyZmFjZSA9IHByb3htb3hf ZnJyOjpvcGVuZmFicmljOjpPcGVuRmFicmljSW50ZXJmYWNlIHsKKyAgICAgICAgICAgIGZhYnJp Y19pZDogZnJyX3dvcmQuaW50bygpLAorICAgICAgICAgICAgaGVsbG9faW50ZXJ2YWw6IE5vbmUs CisgICAgICAgICAgICBwYXNzaXZlOiBTb21lKHRydWUpLAorICAgICAgICAgICAgY3NucF9pbnRl cnZhbDogTm9uZSwKKyAgICAgICAgICAgIGhlbGxvX211bHRpcGxpZXI6IE5vbmUsCisgICAgICAg ICAgICBpc19pcHY2OiByb3V0ZXJfaWQuaXNfaXB2NigpLAorICAgICAgICB9OworICAgICAgICBs ZXQgaW50ZXJmYWNlX25hbWUgPSBJbnRlcmZhY2VOYW1lOjpPcGVuRmFicmljKGZvcm1hdCEoImR1 bW15X3t9IiwgZmFicmljX2lkKS5wYXJzZSgpPyk7CisgICAgICAgIE9rKChmcnJfaW50ZXJmYWNl LmludG8oKSwgaW50ZXJmYWNlX25hbWUpKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29wZW5mYWJy aWNfZHVtbXlfcm91dGVtYXAoCisgICAgICAgIGZhYnJpY19pZDogJm9wZW5mYWJyaWM6OkZhYnJp Y0lkLAorICAgICAgICByb3V0ZXJfaXA6IElwQWRkciwKKyAgICAgICAgc2VxOiB1MzIKKyAgICAp IC0+IFJlc3VsdDxSb3V0ZU1hcCwgYW55aG93OjpFcnJvcj4geworICAgICAgICBsZXQgcm91dGVt YXBfbmFtZSA9IFJvdXRlTWFwTmFtZTo6bmV3KCJvcGVuZmFicmljIi50b19vd25lZCgpKTsKKyAg ICAgICAgLy8gY3JlYXRlIHJvdXRlLW1hcAorICAgICAgICBsZXQgcm91dGVtYXAgPSBSb3V0ZU1h cCB7CisgICAgICAgICAgICBuYW1lOiByb3V0ZW1hcF9uYW1lLmNsb25lKCksCisgICAgICAgICAg ICBzZXEsCisgICAgICAgICAgICBhY3Rpb246IEFjY2Vzc0FjdGlvbjo6UGVybWl0LAorICAgICAg ICAgICAgbWF0Y2hlczogdmVjIVtSb3V0ZU1hcE1hdGNoOjpJcEFkZHJlc3MoQWNjZXNzTGlzdE5h bWU6Om5ldyhmb3JtYXQhKAorICAgICAgICAgICAgICAgICJvcGVuZmFicmljX3tmYWJyaWNfaWR9 X2lwcyIKKyAgICAgICAgICAgICkpKV0sCisgICAgICAgICAgICBzZXRzOiB2ZWMhW1JvdXRlTWFw U2V0OjpJcFNyYyhyb3V0ZXJfaXApXSwKKyAgICAgICAgfTsKKyAgICAgICAgT2socm91dGVtYXAp CisgICAgfQorCisgICAgZm4gYnVpbGRfb3NwZl9kdW1teV9yb3V0ZW1hcCgKKyAgICAgICAgYXJl YTogJm9zcGY6OkFyZWEsCisgICAgICAgIHJvdXRlcl9pcDogSXB2NEFkZHIsCisgICAgKSAtPiBS ZXN1bHQ8Um91dGVNYXAsIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IHJvdXRlbWFwX25h bWUgPSBSb3V0ZU1hcE5hbWU6Om5ldygib3NwZiIudG9fb3duZWQoKSk7CisgICAgICAgIC8vIGNy ZWF0ZSByb3V0ZS1tYXAKKyAgICAgICAgbGV0IHJvdXRlbWFwID0gUm91dGVNYXAgeworICAgICAg ICAgICAgbmFtZTogcm91dGVtYXBfbmFtZS5jbG9uZSgpLAorICAgICAgICAgICAgc2VxOiAxMCwK KyAgICAgICAgICAgIGFjdGlvbjogQWNjZXNzQWN0aW9uOjpQZXJtaXQsCisgICAgICAgICAgICBt YXRjaGVzOiB2ZWMhW1JvdXRlTWFwTWF0Y2g6OklwQWRkcmVzcyhBY2Nlc3NMaXN0TmFtZTo6bmV3 KGZvcm1hdCEoCisgICAgICAgICAgICAgICAgIm9zcGZfe2FyZWF9X2lwcyIKKyAgICAgICAgICAg ICkpKV0sCisgICAgICAgICAgICBzZXRzOiB2ZWMhW1JvdXRlTWFwU2V0OjpJcFNyYyhJcEFkZHI6 OmZyb20ocm91dGVyX2lwKSldLAorICAgICAgICB9OworCisgICAgICAgIE9rKHJvdXRlbWFwKQor ICAgIH0KK30KLS0gCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m by9wdmUtZGV2ZWwK