From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-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 2AEE41FF15C for <inbox@lore.proxmox.com>; Wed, 26 Mar 2025 16:24:26 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 96DCA3B84D; Wed, 26 Mar 2025 16:24:21 +0100 (CET) From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> To: pbs-devel@lists.proxmox.com Date: Wed, 26 Mar 2025 16:23:18 +0100 Message-Id: <20250326152327.332179-15-f.gruenbichler@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250326152327.332179-1-f.gruenbichler@proxmox.com> References: <20250326152327.332179-1-f.gruenbichler@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.044 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: [pbs-devel] [PATCH proxmox 14/17] proxmox-rest-server: update to hyper 1.0 X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> YW5kIHN3aXRjaCB0byBwcm94bW94LWh0dHAncyBCb2R5IGltcGxlbWVudGF0aW9uLgoKaHlwZXIg bm93IGhhcyBhIHNwZWNpYWwgKG9wYXF1ZSkgQm9keSBpbXBsZW1lbnRhdGlvbiBjYWxsZWQgSW5j b21pbmcKd2hpY2ggaXMgdXNlZCBmb3IgaW5jb21pbmcgcmVxdWVzdCBib2RpZXMgb24gdGhlIHNl cnZlciBzaWRlLCBhbmQKaW5jb21pbmcgcmVzcG9uc2UgYm9kaWVzIG9uIHRoZSBjbGllbnQgc2lk ZSwgc28gb3VyIEFQSSBoYW5kbGVyJ3Mgbm93CmNvbnN1bWUgYW4gaW5zdGFuY2Ugb2YgdGhpcyB0 eXBlLgoKdGhlIEFjY2VwdCB0cmFpdCBwcmV2aW91c2x5IG9mZmVyZWQgYnkgaHlwZXIgaXMgZ29u ZSBpbiAxLjAsIGFuZCBuZWVkcwp0byBiZSByZXBsYWNlZCB3aXRoIGFuIGFjY2VwdCBsb29wLiBv dXIgY29ycmVzcG9uZGluZyBBY2NlcHRvcgppbXBsZW1lbnRhdGlvbnMgaGF2ZSBiZWVuIGRyb3Bw ZWQgYXMgd2VsbC4KCmh5cGVyIG5vdyBoYXMgaXRzIG93biBTZXJ2aWNlIGFuZCBhc3luYyBSZWFk L1dyaXRlIHRyYWl0cywgYnV0IGhlbHBmdWxseQpwcm92aWRlcyB3cmFwcGVycyBmb3IgdG93ZXIn cyBTZXJ2aWNlIGFuZCB0b2tpbydzIEFzeW5jUmVhZC9Bc3luY1dyaXRlCnZhcmlhbnRzLgoKZ3Jh Y2VmdWwgc2h1dGRvd24gaGFuZGxpbmcgaXMgbm93IGV4cG9zZWQgZGlmZmVyZW50bHkgb24gdGhl IGh5cGVyIHNpZGUsCmFuZCB0byBhbGxvdyB1c2FnZSB3aXRoIHVwZ3JhZGFibGUgY29ubmVjdGlv bnMgdGhlIHZhcmlhbnQgZm9ybQpoeXBlci11dGlsIG5lZWRzIHRvIGJlIHVzZWQsIGFzIHRoZSBv bmUgc3RyYWlnaHQgZnJvbSBoeXBlciBkb2Vzbid0CnN1cHBvcnQgaXQgKHlldCkuCgpTaWduZWQt b2ZmLWJ5OiBGYWJpYW4gR3LDvG5iaWNobGVyIDxmLmdydWVuYmljaGxlckBwcm94bW94LmNvbT4K LS0tCiBwcm94bW94LXJlc3Qtc2VydmVyL0NhcmdvLnRvbWwgICAgICAgICAgICAgICAgfCAgIDcg Ky0KIC4uLi9leGFtcGxlcy9taW5pbWFsLXJlc3Qtc2VydmVyLnJzICAgICAgICAgICB8ICAgNSAr LQogcHJveG1veC1yZXN0LXNlcnZlci9zcmMvYXBpX2NvbmZpZy5ycyAgICAgICAgIHwgIDQ0ICsr LS0tCiBwcm94bW94LXJlc3Qtc2VydmVyL3NyYy9jb25uZWN0aW9uLnJzICAgICAgICAgfCAgMTQg Ky0KIHByb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2Zvcm1hdHRlci5ycyAgICAgICAgICB8ICAgOCAr LQogcHJveG1veC1yZXN0LXNlcnZlci9zcmMvaDJzZXJ2aWNlLnJzICAgICAgICAgIHwgIDE1ICst CiBwcm94bW94LXJlc3Qtc2VydmVyL3NyYy9saWIucnMgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHByb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL3Jlc3QucnMgICAgICAgICAgICAgICB8IDE2NCArKysr KysrKysrKy0tLS0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDExNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9wcm94bW94LXJlc3Qtc2VydmVyL0NhcmdvLnRvbWwg Yi9wcm94bW94LXJlc3Qtc2VydmVyL0NhcmdvLnRvbWwKaW5kZXggZmZiZDkyNWEuLmVlMjUzYjRm IDEwMDY0NAotLS0gYS9wcm94bW94LXJlc3Qtc2VydmVyL0NhcmdvLnRvbWwKKysrIGIvcHJveG1v eC1yZXN0LXNlcnZlci9DYXJnby50b21sCkBAIC0yMCw3ICsyMCw5IEBAIGFueWhvdy53b3Jrc3Bh Y2UgPSB0cnVlCiBmdXR1cmVzLndvcmtzcGFjZSA9IHRydWUKIGhhbmRsZWJhcnMgPSB7IHdvcmtz cGFjZSA9IHRydWUsIG9wdGlvbmFsID0gdHJ1ZSB9CiBodHRwLndvcmtzcGFjZSA9IHRydWUKK2h0 dHAtYm9keS11dGlsLndvcmtzcGFjZSA9IHRydWUKIGh5cGVyID0geyB3b3Jrc3BhY2UgPSB0cnVl LCBmZWF0dXJlcyA9IFsgImZ1bGwiIF0gfQoraHlwZXItdXRpbCA9IHsgd29ya3NwYWNlID0gdHJ1 ZSwgZmVhdHVyZXMgPSBbICJjbGllbnQiLCAiY2xpZW50LWxlZ2FjeSIsICJodHRwMSIsICJzZXJ2 ZXIiLCAic2VydmVyLWF1dG8iLCAic2VydmVyLWdyYWNlZnVsIiwgInNlcnZpY2UiLCAidG9raW8i IF19CiBsaWJjLndvcmtzcGFjZSA9IHRydWUKIGxvZy53b3Jrc3BhY2UgPSB0cnVlCiBuaXgud29y a3NwYWNlID0gdHJ1ZQpAQCAtMzksNyArNDEsNyBAQCB1cmwud29ya3NwYWNlID0gdHJ1ZQogcHJv eG1veC1hc3luYy53b3Jrc3BhY2UgPSB0cnVlCiBwcm94bW94LWNvbXByZXNzaW9uLndvcmtzcGFj ZSA9IHRydWUKIHByb3htb3gtZGFlbW9uLndvcmtzcGFjZSA9IHRydWUKLXByb3htb3gtaHR0cCA9 IHsgd29ya3NwYWNlID0gdHJ1ZSwgb3B0aW9uYWwgPSB0cnVlIH0KK3Byb3htb3gtaHR0cCA9IHsg d29ya3NwYWNlID0gdHJ1ZSwgZmVhdHVyZXMgPSBbImJvZHkiXSB9CiBwcm94bW94LWxhbmcud29y a3NwYWNlID0gdHJ1ZQogcHJveG1veC1sb2cud29ya3NwYWNlID0gdHJ1ZQogcHJveG1veC1yb3V0 ZXIud29ya3NwYWNlID0gdHJ1ZQpAQCAtNTIsNiArNTQsNSBAQCBwcm94bW94LXdvcmtlci10YXNr LndvcmtzcGFjZSA9IHRydWUKIGRlZmF1bHQgPSBbXQogdGVtcGxhdGVzID0gWyJkZXA6aGFuZGxl YmFycyJdCiByYXRlLWxpbWl0ZWQtc3RyZWFtID0gWwotICAgICJkZXA6cHJveG1veC1odHRwIiwK LSAgICAicHJveG1veC1odHRwPy9yYXRlLWxpbWl0ZWQtc3RyZWFtIiwKKyAgICAicHJveG1veC1o dHRwL3JhdGUtbGltaXRlZC1zdHJlYW0iLAogXQpkaWZmIC0tZ2l0IGEvcHJveG1veC1yZXN0LXNl cnZlci9leGFtcGxlcy9taW5pbWFsLXJlc3Qtc2VydmVyLnJzIGIvcHJveG1veC1yZXN0LXNlcnZl ci9leGFtcGxlcy9taW5pbWFsLXJlc3Qtc2VydmVyLnJzCmluZGV4IDIzYmU1ODZjLi40NTQ0MzBm YiAxMDA2NDQKLS0tIGEvcHJveG1veC1yZXN0LXNlcnZlci9leGFtcGxlcy9taW5pbWFsLXJlc3Qt c2VydmVyLnJzCisrKyBiL3Byb3htb3gtcmVzdC1zZXJ2ZXIvZXhhbXBsZXMvbWluaW1hbC1yZXN0 LXNlcnZlci5ycwpAQCAtNiw4ICs2LDkgQEAgdXNlIHN0ZDo6c3luYzo6e0xhenlMb2NrLCBNdXRl eH07CiB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9OwogdXNlIGh0dHA6OnJl cXVlc3Q6OlBhcnRzOwogdXNlIGh0dHA6OkhlYWRlck1hcDsKLXVzZSBoeXBlcjo6e0JvZHksIE1l dGhvZCwgUmVzcG9uc2V9OwordXNlIGh5cGVyOjp7TWV0aG9kLCBSZXNwb25zZX07CiAKK3VzZSBw cm94bW94X2h0dHA6OkJvZHk7CiB1c2UgcHJveG1veF9yb3V0ZXI6OnsKICAgICBsaXN0X3N1YmRp cnNfYXBpX21ldGhvZCwgUm91dGVyLCBScGNFbnZpcm9ubWVudFR5cGUsIFN1YmRpck1hcCwgVXNl ckluZm9ybWF0aW9uLAogfTsKQEAgLTU3LDcgKzU4LDcgQEAgZm4gZ2V0X2luZGV4KAogICAgIEJv eDo6cGluKGFzeW5jIG1vdmUgewogICAgICAgICAvLyBidWlsZCBhbiBpbmRleCBwYWdlCiAgICAg ICAgIGh0dHA6OlJlc3BvbnNlOjpidWlsZGVyKCkKLSAgICAgICAgICAgIC5ib2R5KCJoZWxsbyB3 b3JsZCIuaW50bygpKQorICAgICAgICAgICAgLmJvZHkoImhlbGxvIHdvcmxkIi50b19vd25lZCgp LmludG9fYnl0ZXMoKS5pbnRvKCkpCiAgICAgICAgICAgICAudW53cmFwKCkKICAgICB9KQogfQpk aWZmIC0tZ2l0IGEvcHJveG1veC1yZXN0LXNlcnZlci9zcmMvYXBpX2NvbmZpZy5ycyBiL3Byb3ht b3gtcmVzdC1zZXJ2ZXIvc3JjL2FwaV9jb25maWcucnMKaW5kZXggYjIwYjJkYTAuLjBiODQ3YTBj IDEwMDY0NAotLS0gYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9hcGlfY29uZmlnLnJzCisrKyBi L3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2FwaV9jb25maWcucnMKQEAgLTksMTAgKzksMTIgQEAg dXNlIHN0ZDo6dGFzazo6e0NvbnRleHQsIFBvbGx9OwogdXNlIGFueWhvdzo6e2Zvcm1hdF9lcnIs IEVycm9yfTsKIHVzZSBodHRwOjp7SGVhZGVyTWFwLCBNZXRob2QsIFVyaX07CiB1c2UgaHlwZXI6 Omh0dHA6OnJlcXVlc3Q6OlBhcnRzOwotdXNlIGh5cGVyOjp7Qm9keSwgUmVzcG9uc2V9OwordXNl IGh5cGVyOjpSZXNwb25zZTsKK3VzZSBoeXBlcl91dGlsOjpydDo6VG9raW9JbzsKIHVzZSB0b3dl cl9zZXJ2aWNlOjpTZXJ2aWNlOwogCiB1c2UgcHJveG1veF9kYWVtb246OmNvbW1hbmRfc29ja2V0 OjpDb21tYW5kU29ja2V0OwordXNlIHByb3htb3hfaHR0cDo6Qm9keTsKIHVzZSBwcm94bW94X2xv Zzo6e0ZpbGVMb2dPcHRpb25zLCBGaWxlTG9nZ2VyfTsKIHVzZSBwcm94bW94X3JvdXRlcjo6e1Jv dXRlciwgUnBjRW52aXJvbm1lbnRUeXBlLCBVc2VySW5mb3JtYXRpb259OwogdXNlIHByb3htb3hf c3lzOjpmczo6e2NyZWF0ZV9wYXRoLCBDcmVhdGVPcHRpb25zfTsKQEAgLTEwNyw3ICsxMDksNyBA QCBpbXBsIEFwaUNvbmZpZyB7CiAgICAgKSAtPiBSZXNwb25zZTxCb2R5PiB7CiAgICAgICAgIG1h dGNoIHNlbGYuaW5kZXhfaGFuZGxlci5hc19yZWYoKSB7CiAgICAgICAgICAgICBTb21lKGhhbmRs ZXIpID0+IChoYW5kbGVyLmZ1bmMpKHJlc3RfZW52LCBwYXJ0cykuYXdhaXQsCi0gICAgICAgICAg ICBOb25lID0+IFJlc3BvbnNlOjpidWlsZGVyKCkuc3RhdHVzKDQwNCkuYm9keSgiIi5pbnRvKCkp LnVud3JhcCgpLAorICAgICAgICAgICAgTm9uZSA9PiBSZXNwb25zZTo6YnVpbGRlcigpLnN0YXR1 cyg0MDQpLmJvZHkoQm9keTo6ZW1wdHkoKSkudW53cmFwKCksCiAgICAgICAgIH0KICAgICB9CiAK QEAgLTUxMSw3ICs1MTMsNyBAQCBpbXBsIEZyb208c3RkOjpvczo6dW5peDo6bmV0OjpTb2NrZXRB ZGRyPiBmb3IgUHJpdmlsZWdlZEFkZHIgewogfQogCiBpbXBsIFNlcnZpY2U8VXJpPiBmb3IgUHJp dmlsZWdlZEFkZHIgewotICAgIHR5cGUgUmVzcG9uc2UgPSBQcml2aWxlZ2VkU29ja2V0OworICAg IHR5cGUgUmVzcG9uc2UgPSBUb2tpb0lvPFByaXZpbGVnZWRTb2NrZXQ+OwogICAgIHR5cGUgRXJy b3IgPSBpbzo6RXJyb3I7CiAgICAgdHlwZSBGdXR1cmUgPSBQaW48Qm94PGR5biBGdXR1cmU8T3V0 cHV0ID0gUmVzdWx0PFNlbGY6OlJlc3BvbnNlLCBTZWxmOjpFcnJvcj4+ICsgU2VuZD4+OwogCkBA IC01MjcsNiArNTI5LDcgQEAgaW1wbCBTZXJ2aWNlPFVyaT4gZm9yIFByaXZpbGVnZWRBZGRyIHsK ICAgICAgICAgICAgICAgICAgICAgdG9raW86Om5ldDo6VGNwU3RyZWFtOjpjb25uZWN0KGFkZHIp CiAgICAgICAgICAgICAgICAgICAgICAgICAuYXdhaXQKICAgICAgICAgICAgICAgICAgICAgICAg IC5tYXAoUHJpdmlsZWdlZFNvY2tldDo6VGNwKQorICAgICAgICAgICAgICAgICAgICAgICAgLm1h cChUb2tpb0lvOjpuZXcpCiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgIH0KICAgICAg ICAgICAgIFByaXZpbGVnZWRBZGRyOjpVbml4KGFkZHIpID0+IHsKQEAgLTUzNyw2ICs1NDAsNyBA QCBpbXBsIFNlcnZpY2U8VXJpPiBmb3IgUHJpdmlsZWdlZEFkZHIgewogICAgICAgICAgICAgICAg ICAgICB9KT8pCiAgICAgICAgICAgICAgICAgICAgIC5hd2FpdAogICAgICAgICAgICAgICAgICAg ICAubWFwKFByaXZpbGVnZWRTb2NrZXQ6OlVuaXgpCisgICAgICAgICAgICAgICAgICAgIC5tYXAo VG9raW9Jbzo6bmV3KQogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICB9CiAgICAgICAg IH0KQEAgLTYwNywzOSArNjExLDExIEBAIGltcGwgdG9raW86OmlvOjpBc3luY1dyaXRlIGZvciBQ cml2aWxlZ2VkU29ja2V0IHsKICAgICB9CiB9CiAKLWltcGwgaHlwZXI6OmNsaWVudDo6Y29ubmVj dDo6Q29ubmVjdGlvbiBmb3IgUHJpdmlsZWdlZFNvY2tldCB7Ci0gICAgZm4gY29ubmVjdGVkKCZz ZWxmKSAtPiBoeXBlcjo6Y2xpZW50Ojpjb25uZWN0OjpDb25uZWN0ZWQgeworaW1wbCBoeXBlcl91 dGlsOjpjbGllbnQ6OmxlZ2FjeTo6Y29ubmVjdDo6Q29ubmVjdGlvbiBmb3IgUHJpdmlsZWdlZFNv Y2tldCB7CisgICAgZm4gY29ubmVjdGVkKCZzZWxmKSAtPiBoeXBlcl91dGlsOjpjbGllbnQ6Omxl Z2FjeTo6Y29ubmVjdDo6Q29ubmVjdGVkIHsKICAgICAgICAgbWF0Y2ggc2VsZiB7CiAgICAgICAg ICAgICBTZWxmOjpUY3AocykgPT4gcy5jb25uZWN0ZWQoKSwKLSAgICAgICAgICAgIFNlbGY6OlVu aXgoXykgPT4gaHlwZXI6OmNsaWVudDo6Y29ubmVjdDo6Q29ubmVjdGVkOjpuZXcoKSwKKyAgICAg ICAgICAgIFNlbGY6OlVuaXgoXykgPT4gaHlwZXJfdXRpbDo6Y2xpZW50OjpsZWdhY3k6OmNvbm5l Y3Q6OkNvbm5lY3RlZDo6bmV3KCksCiAgICAgICAgIH0KICAgICB9CiB9Ci0KLS8vLyBJbXBsZW1l bnRzIGh5cGVyJ3MgYEFjY2VwdGAgZm9yIGBVbml4TGlzdGVuZXJgcy4KLXB1YiBzdHJ1Y3QgVW5p eEFjY2VwdG9yIHsKLSAgICBsaXN0ZW5lcjogdG9raW86Om5ldDo6VW5peExpc3RlbmVyLAotfQot Ci1pbXBsIEZyb208dG9raW86Om5ldDo6VW5peExpc3RlbmVyPiBmb3IgVW5peEFjY2VwdG9yIHsK LSAgICBmbiBmcm9tKGxpc3RlbmVyOiB0b2tpbzo6bmV0OjpVbml4TGlzdGVuZXIpIC0+IFNlbGYg ewotICAgICAgICBTZWxmIHsgbGlzdGVuZXIgfQotICAgIH0KLX0KLQotaW1wbCBoeXBlcjo6c2Vy dmVyOjphY2NlcHQ6OkFjY2VwdCBmb3IgVW5peEFjY2VwdG9yIHsKLSAgICB0eXBlIENvbm4gPSB0 b2tpbzo6bmV0OjpVbml4U3RyZWFtOwotICAgIHR5cGUgRXJyb3IgPSBpbzo6RXJyb3I7Ci0KLSAg ICBmbiBwb2xsX2FjY2VwdCgKLSAgICAgICAgc2VsZjogUGluPCZtdXQgU2VsZj4sCi0gICAgICAg IGN4OiAmbXV0IENvbnRleHQ8J18+LAotICAgICkgLT4gUG9sbDxPcHRpb248aW86OlJlc3VsdDxT ZWxmOjpDb25uPj4+IHsKLSAgICAgICAgUGluOjpuZXcoJm11dCBzZWxmLmdldF9tdXQoKS5saXN0 ZW5lcikKLSAgICAgICAgICAgIC5wb2xsX2FjY2VwdChjeCkKLSAgICAgICAgICAgIC5tYXAofHJl c3wgbWF0Y2ggcmVzIHsKLSAgICAgICAgICAgICAgICBPaygoc3RyZWFtLCBfYWRkcikpID0+IFNv bWUoT2soc3RyZWFtKSksCi0gICAgICAgICAgICAgICAgRXJyKGVycikgPT4gU29tZShFcnIoZXJy KSksCi0gICAgICAgICAgICB9KQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3Byb3htb3gtcmVzdC1z ZXJ2ZXIvc3JjL2Nvbm5lY3Rpb24ucnMgYi9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9jb25uZWN0 aW9uLnJzCmluZGV4IDUyNjU1NWFlLi5hNjVlZjM5OCAxMDA2NDQKLS0tIGEvcHJveG1veC1yZXN0 LXNlcnZlci9zcmMvY29ubmVjdGlvbi5ycworKysgYi9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9j b25uZWN0aW9uLnJzCkBAIC0xNCw3ICsxNCw2IEBAIHVzZSBzdGQ6OnRpbWU6OkR1cmF0aW9uOwog CiB1c2UgYW55aG93Ojp7Zm9ybWF0X2VyciwgQ29udGV4dCwgRXJyb3J9OwogdXNlIGZ1dHVyZXM6 OkZ1dHVyZUV4dDsKLXVzZSBoeXBlcjo6c2VydmVyOjphY2NlcHQ7CiB1c2Ugb3BlbnNzbDo6ZWM6 OntFY0dyb3VwLCBFY0tleX07CiB1c2Ugb3BlbnNzbDo6bmlkOjpOaWQ7CiB1c2Ugb3BlbnNzbDo6 cGtleTo6e1BLZXksIFByaXZhdGV9OwpAQCAtMjI2LDEyICsyMjUsMTMgQEAgaW1wbCBBY2NlcHRC dWlsZGVyIHsKICAgICAgICAgc2VsZiwKICAgICAgICAgbGlzdGVuZXI6IFRjcExpc3RlbmVyLAog ICAgICAgICBhY2NlcHRvcjogQXJjPE11dGV4PFNzbEFjY2VwdG9yPj4sCi0gICAgKSAtPiBpbXBs IGFjY2VwdDo6QWNjZXB0PENvbm4gPSBDbGllbnRTdHJlYW1SZXN1bHQsIEVycm9yID0gRXJyb3I+ IHsKKyAgICAgICAgLy8gRklYTUU6IHJlcGxhY2UgcmV0dXJuIHZhbHVlIHdpdGggb3duIHRyYWl0 PyBzZWUgbm93IHJlbW92ZWQgVW5peEFjY2VwdG9yCisgICAgKSAtPiBSZWNlaXZlclN0cmVhbTxS ZXN1bHQ8Q2xpZW50U3RyZWFtUmVzdWx0LCBFcnJvcj4+IHsKICAgICAgICAgbGV0IChzZWN1cmVf c2VuZGVyLCBzZWN1cmVfcmVjZWl2ZXIpID0gbXBzYzo6Y2hhbm5lbChzZWxmLm1heF9wZW5kaW5n X2FjY2VwdHMpOwogCiAgICAgICAgIHRva2lvOjpzcGF3bihzZWxmLmFjY2VwdF9jb25uZWN0aW9u cyhsaXN0ZW5lciwgYWNjZXB0b3IsIHNlY3VyZV9zZW5kZXIuaW50bygpKSk7CiAKLSAgICAgICAg YWNjZXB0Ojpmcm9tX3N0cmVhbShSZWNlaXZlclN0cmVhbTo6bmV3KHNlY3VyZV9yZWNlaXZlcikp CisgICAgICAgIFJlY2VpdmVyU3RyZWFtOjpuZXcoc2VjdXJlX3JlY2VpdmVyKQogICAgIH0KIAog ICAgIHB1YiBmbiBhY2NlcHRfdGxzX29wdGlvbmFsKApAQCAtMjM5LDggKzIzOSw4IEBAIGltcGwg QWNjZXB0QnVpbGRlciB7CiAgICAgICAgIGxpc3RlbmVyOiBUY3BMaXN0ZW5lciwKICAgICAgICAg YWNjZXB0b3I6IEFyYzxNdXRleDxTc2xBY2NlcHRvcj4+LAogICAgICkgLT4gKAotICAgICAgICBp bXBsIGFjY2VwdDo6QWNjZXB0PENvbm4gPSBDbGllbnRTdHJlYW1SZXN1bHQsIEVycm9yID0gRXJy b3I+LAotICAgICAgICBpbXBsIGFjY2VwdDo6QWNjZXB0PENvbm4gPSBJbnNlY3VyZUNsaWVudFN0 cmVhbVJlc3VsdCwgRXJyb3IgPSBFcnJvcj4sCisgICAgICAgIFJlY2VpdmVyU3RyZWFtPFJlc3Vs dDxDbGllbnRTdHJlYW1SZXN1bHQsIEVycm9yPj4sCisgICAgICAgIFJlY2VpdmVyU3RyZWFtPFJl c3VsdDxJbnNlY3VyZUNsaWVudFN0cmVhbVJlc3VsdCwgRXJyb3I+PiwKICAgICApIHsKICAgICAg ICAgbGV0IChzZWN1cmVfc2VuZGVyLCBzZWN1cmVfcmVjZWl2ZXIpID0gbXBzYzo6Y2hhbm5lbChz ZWxmLm1heF9wZW5kaW5nX2FjY2VwdHMpOwogICAgICAgICBsZXQgKGluc2VjdXJlX3NlbmRlciwg aW5zZWN1cmVfcmVjZWl2ZXIpID0gbXBzYzo6Y2hhbm5lbChzZWxmLm1heF9wZW5kaW5nX2FjY2Vw dHMpOwpAQCAtMjUyLDggKzI1Miw4IEBAIGltcGwgQWNjZXB0QnVpbGRlciB7CiAgICAgICAgICkp OwogCiAgICAgICAgICgKLSAgICAgICAgICAgIGFjY2VwdDo6ZnJvbV9zdHJlYW0oUmVjZWl2ZXJT dHJlYW06Om5ldyhzZWN1cmVfcmVjZWl2ZXIpKSwKLSAgICAgICAgICAgIGFjY2VwdDo6ZnJvbV9z dHJlYW0oUmVjZWl2ZXJTdHJlYW06Om5ldyhpbnNlY3VyZV9yZWNlaXZlcikpLAorICAgICAgICAg ICAgUmVjZWl2ZXJTdHJlYW06Om5ldyhzZWN1cmVfcmVjZWl2ZXIpLAorICAgICAgICAgICAgUmVj ZWl2ZXJTdHJlYW06Om5ldyhpbnNlY3VyZV9yZWNlaXZlciksCiAgICAgICAgICkKICAgICB9CiB9 CmRpZmYgLS1naXQgYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9mb3JtYXR0ZXIucnMgYi9wcm94 bW94LXJlc3Qtc2VydmVyL3NyYy9mb3JtYXR0ZXIucnMKaW5kZXggMzJjYTk5MzYuLjljZTg3MjA1 IDEwMDY0NAotLS0gYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9mb3JtYXR0ZXIucnMKKysrIGIv cHJveG1veC1yZXN0LXNlcnZlci9zcmMvZm9ybWF0dGVyLnJzCkBAIC01LDEyICs1LDE0IEBAIHVz ZSBhbnlob3c6OkVycm9yOwogdXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07CiAKIHVzZSBo eXBlcjo6aGVhZGVyOwotdXNlIGh5cGVyOjp7Qm9keSwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9Owor dXNlIGh5cGVyOjp7UmVzcG9uc2UsIFN0YXR1c0NvZGV9OwogCit1c2UgcHJveG1veF9odHRwOjpC b2R5OwogdXNlIHByb3htb3hfcm91dGVyOjp7SHR0cEVycm9yLCBScGNFbnZpcm9ubWVudCwgU2Vy aWFsaXphYmxlUmV0dXJufTsKIHVzZSBwcm94bW94X3NjaGVtYTo6UGFyYW1ldGVyRXJyb3I7CiAK IC8vLyBFeHRlbnNpb24gdG8gc2V0IGVycm9yIG1lc3NhZ2UgZm9yIHNlcnZlciBzaWRlIGxvZ2dp bmcKKyNbZGVyaXZlKENsb25lKV0KIHB1YihjcmF0ZSkgc3RydWN0IEVycm9yTWVzc2FnZUV4dGVu c2lvbihwdWIgU3RyaW5nKTsKIAogLy8vIE1ldGhvZHMgdG8gZm9ybWF0IGRhdGEgYW5kIGVycm9y cwpAQCAtMTY4LDExICsxNzAsMTEgQEAgaW1wbCBPdXRwdXRGb3JtYXR0ZXIgZm9yIEpzb25Gb3Jt YXR0ZXIgewogCiBwdWIoY3JhdGUpIGZuIGVycm9yX3RvX3Jlc3BvbnNlKGVycjogRXJyb3IpIC0+ IFJlc3BvbnNlPEJvZHk+IHsKICAgICBsZXQgbXV0IHJlc3BvbnNlID0gaWYgbGV0IFNvbWUoYXBp ZXJyKSA9IGVyci5kb3duY2FzdF9yZWY6OjxIdHRwRXJyb3I+KCkgewotICAgICAgICBsZXQgbXV0 IHJlc3AgPSBSZXNwb25zZTo6bmV3KEJvZHk6OmZyb20oYXBpZXJyLm1lc3NhZ2UuY2xvbmUoKSkp OworICAgICAgICBsZXQgbXV0IHJlc3AgPSBSZXNwb25zZTo6bmV3KGFwaWVyci5tZXNzYWdlLmNs b25lKCkuaW50bygpKTsKICAgICAgICAgKnJlc3Auc3RhdHVzX211dCgpID0gYXBpZXJyLmNvZGU7 CiAgICAgICAgIHJlc3AKICAgICB9IGVsc2UgewotICAgICAgICBsZXQgbXV0IHJlc3AgPSBSZXNw b25zZTo6bmV3KEJvZHk6OmZyb20oZXJyLnRvX3N0cmluZygpKSk7CisgICAgICAgIGxldCBtdXQg cmVzcCA9IFJlc3BvbnNlOjpuZXcoZXJyLnRvX3N0cmluZygpLmludG8oKSk7CiAgICAgICAgICpy ZXNwLnN0YXR1c19tdXQoKSA9IFN0YXR1c0NvZGU6OkJBRF9SRVFVRVNUOwogICAgICAgICByZXNw CiAgICAgfTsKZGlmZiAtLWdpdCBhL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2gyc2VydmljZS5y cyBiL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2gyc2VydmljZS5ycwppbmRleCBkYjZlM2IwYS4u MTgyNThlMTQgMTAwNjQ0Ci0tLSBhL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2gyc2VydmljZS5y cworKysgYi9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9oMnNlcnZpY2UucnMKQEAgLTYsOCArNiwx MCBAQCB1c2Ugc3RkOjpzeW5jOjpBcmM7CiB1c2Ugc3RkOjp0YXNrOjp7Q29udGV4dCwgUG9sbH07 CiAKIHVzZSBmdXR1cmVzOjoqOwotdXNlIGh5cGVyOjp7Qm9keSwgUmVxdWVzdCwgUmVzcG9uc2Us IFN0YXR1c0NvZGV9OwordXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKK3VzZSBoeXBlcjo6e1Jl cXVlc3QsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKIAordXNlIHByb3htb3hfaHR0cDo6Qm9keTsK IHVzZSBwcm94bW94X3JvdXRlcjo6aHR0cF9lcnI7CiB1c2UgcHJveG1veF9yb3V0ZXI6OntBcGlS ZXNwb25zZUZ1dHVyZSwgSHR0cEVycm9yLCBSb3V0ZXIsIFJwY0Vudmlyb25tZW50fTsKIApAQCAt MTksNiArMjEsNyBAQCB1c2UgY3JhdGU6Ontub3JtYWxpemVfcGF0aF93aXRoX2NvbXBvbmVudHMs IFdvcmtlclRhc2t9OwogLy8vIFdlIHVzZSB0aGlzIGtpbmQgb2Ygc2VydmljZSB0byBoYW5kbGUg YmFja3VwIHByb3RvY29sCiAvLy8gY29ubmVjdGlvbnMuIFN0YXRlIGlzIHN0b3JlZCBpbnNpZGUg dGhlIGdlbmVyaWMgYGBycGNlbnZgYC4gTG9ncwogLy8vIGdvZXMgaW50byB0aGUgYGBXb3JrZXJU YXNrYGAgbG9nLgorI1tkZXJpdmUoQ2xvbmUpXQogcHViIHN0cnVjdCBIMlNlcnZpY2U8RT4gewog ICAgIHJvdXRlcjogJidzdGF0aWMgUm91dGVyLAogICAgIHJwY2VudjogRSwKQEAgLTQyLDcgKzQ1 LDcgQEAgaW1wbDxFOiBScGNFbnZpcm9ubWVudCArIENsb25lPiBIMlNlcnZpY2U8RT4gewogICAg ICAgICB9CiAgICAgfQogCi0gICAgZm4gaGFuZGxlX3JlcXVlc3QoJnNlbGYsIHJlcTogUmVxdWVz dDxCb2R5PikgLT4gQXBpUmVzcG9uc2VGdXR1cmUgeworICAgIGZuIGhhbmRsZV9yZXF1ZXN0KCZz ZWxmLCByZXE6IFJlcXVlc3Q8SW5jb21pbmc+KSAtPiBBcGlSZXNwb25zZUZ1dHVyZSB7CiAgICAg ICAgIGxldCAocGFydHMsIGJvZHkpID0gcmVxLmludG9fcGFydHMoKTsKIAogICAgICAgICBsZXQg bWV0aG9kID0gcGFydHMubWV0aG9kLmNsb25lKCk7CkBAIC0xMDMsNyArMTA2LDcgQEAgaW1wbDxF OiBScGNFbnZpcm9ubWVudCArIENsb25lPiBIMlNlcnZpY2U8RT4gewogICAgIH0KIH0KIAotaW1w bDxFOiBScGNFbnZpcm9ubWVudCArIENsb25lPiB0b3dlcl9zZXJ2aWNlOjpTZXJ2aWNlPFJlcXVl c3Q8Qm9keT4+IGZvciBIMlNlcnZpY2U8RT4geworaW1wbDxFOiBScGNFbnZpcm9ubWVudCArIENs b25lPiB0b3dlcl9zZXJ2aWNlOjpTZXJ2aWNlPFJlcXVlc3Q8SW5jb21pbmc+PiBmb3IgSDJTZXJ2 aWNlPEU+IHsKICAgICB0eXBlIFJlc3BvbnNlID0gUmVzcG9uc2U8Qm9keT47CiAgICAgdHlwZSBF cnJvciA9IEVycm9yOwogICAgICNbYWxsb3coY2xpcHB5Ojp0eXBlX2NvbXBsZXhpdHkpXQpAQCAt MTEzLDcgKzExNiw3IEBAIGltcGw8RTogUnBjRW52aXJvbm1lbnQgKyBDbG9uZT4gdG93ZXJfc2Vy dmljZTo6U2VydmljZTxSZXF1ZXN0PEJvZHk+PiBmb3IgSDJTZXJ2CiAgICAgICAgIFBvbGw6OlJl YWR5KE9rKCgpKSkKICAgICB9CiAKLSAgICBmbiBjYWxsKCZtdXQgc2VsZiwgcmVxOiBSZXF1ZXN0 PEJvZHk+KSAtPiBTZWxmOjpGdXR1cmUgeworICAgIGZuIGNhbGwoJm11dCBzZWxmLCByZXE6IFJl cXVlc3Q8SW5jb21pbmc+KSAtPiBTZWxmOjpGdXR1cmUgewogICAgICAgICBsZXQgcGF0aCA9IHJl cS51cmkoKS5wYXRoKCkudG9fb3duZWQoKTsKICAgICAgICAgbGV0IG1ldGhvZCA9IHJlcS5tZXRo b2QoKS5jbG9uZSgpOwogICAgICAgICBsZXQgd29ya2VyID0gc2VsZi53b3JrZXIuY2xvbmUoKTsK QEAgLTEyNiwxNCArMTI5LDE0IEBAIGltcGw8RTogUnBjRW52aXJvbm1lbnQgKyBDbG9uZT4gdG93 ZXJfc2VydmljZTo6U2VydmljZTxSZXF1ZXN0PEJvZHk+PiBmb3IgSDJTZXJ2CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgIEVycihlcnIpID0+IHsKICAgICAgICAgICAgICAgICAg ICAgaWYgbGV0IFNvbWUoYXBpZXJyKSA9IGVyci5kb3duY2FzdF9yZWY6OjxIdHRwRXJyb3I+KCkg ewotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCByZXNwID0gUmVzcG9uc2U6Om5ldyhC b2R5Ojpmcm9tKGFwaWVyci5tZXNzYWdlLmNsb25lKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGxldCBtdXQgcmVzcCA9IFJlc3BvbnNlOjpuZXcoYXBpZXJyLm1lc3NhZ2UuY2xvbmUoKS5p bnRvKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5leHRlbnNpb25zX211dCgpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluc2VydChFcnJvck1lc3NhZ2VFeHRlbnNpb24o YXBpZXJyLm1lc3NhZ2UuY2xvbmUoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgKnJlc3Au c3RhdHVzX211dCgpID0gYXBpZXJyLmNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBTZWxm Ojpsb2dfcmVzcG9uc2Uod29ya2VyLCBtZXRob2QsICZwYXRoLCAmcmVzcCk7CiAgICAgICAgICAg ICAgICAgICAgICAgICBPayhyZXNwKQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCByZXNwID0gUmVzcG9uc2U6Om5ldyhCb2R5Ojpm cm9tKGVyci50b19zdHJpbmcoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBy ZXNwID0gUmVzcG9uc2U6Om5ldyhlcnIudG9fc3RyaW5nKCkuaW50bygpKTsKICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc3AuZXh0ZW5zaW9uc19tdXQoKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC5pbnNlcnQoRXJyb3JNZXNzYWdlRXh0ZW5zaW9uKGVyci50b19zdHJpbmcoKSkpOwog ICAgICAgICAgICAgICAgICAgICAgICAgKnJlc3Auc3RhdHVzX211dCgpID0gU3RhdHVzQ29kZTo6 QkFEX1JFUVVFU1Q7CmRpZmYgLS1naXQgYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9saWIucnMg Yi9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9saWIucnMKaW5kZXggNDNkYWZhOTEuLjVkZGQzNjY3 IDEwMDY0NAotLS0gYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9saWIucnMKKysrIGIvcHJveG1v eC1yZXN0LXNlcnZlci9zcmMvbGliLnJzCkBAIC0zNCw3ICszNCw3IEBAIG1vZCBlbnZpcm9ubWVu dDsKIHB1YiB1c2UgZW52aXJvbm1lbnQ6Oio7CiAKIG1vZCBhcGlfY29uZmlnOwotcHViIHVzZSBh cGlfY29uZmlnOjp7QXBpQ29uZmlnLCBBdXRoRXJyb3IsIEF1dGhIYW5kbGVyLCBJbmRleEhhbmRs ZXIsIFVuaXhBY2NlcHRvcn07CitwdWIgdXNlIGFwaV9jb25maWc6OntBcGlDb25maWcsIEF1dGhF cnJvciwgQXV0aEhhbmRsZXIsIEluZGV4SGFuZGxlcn07CiAKIG1vZCByZXN0OwogcHViIHVzZSBy ZXN0Ojp7UmVkaXJlY3RvciwgUmVzdFNlcnZlcn07CmRpZmYgLS1naXQgYS9wcm94bW94LXJlc3Qt c2VydmVyL3NyYy9yZXN0LnJzIGIvcHJveG1veC1yZXN0LXNlcnZlci9zcmMvcmVzdC5ycwppbmRl eCBmNWE3MjA1Mi4uZjkwMjU5MmQgMTAwNjQ0Ci0tLSBhL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3Jj L3Jlc3QucnMKKysrIGIvcHJveG1veC1yZXN0LXNlcnZlci9zcmMvcmVzdC5ycwpAQCAtMTAsMTcg KzEwLDI1IEBAIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQb2xsfTsKIHVzZSBhbnlob3c6Onti YWlsLCBmb3JtYXRfZXJyLCBFcnJvcn07CiB1c2UgZnV0dXJlczo6ZnV0dXJlOjpGdXR1cmVFeHQ7 CiB1c2UgZnV0dXJlczo6c3RyZWFtOjpUcnlTdHJlYW1FeHQ7Ci11c2UgaHlwZXI6OmJvZHk6Okh0 dHBCb2R5OwordXNlIGh0dHBfYm9keV91dGlsOjp7Qm9keURhdGFTdHJlYW0sIEJvZHlTdHJlYW19 OwordXNlIGh5cGVyOjpib2R5Ojp7Qm9keSBhcyBIeXBlckJvZHksIEluY29taW5nfTsKIHVzZSBo eXBlcjo6aGVhZGVyOjp7c2VsZiwgSGVhZGVyTWFwfTsKIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVz dDo6UGFydHM7Ci11c2UgaHlwZXI6OntCb2R5LCBSZXF1ZXN0LCBSZXNwb25zZSwgU3RhdHVzQ29k ZX07Cit1c2UgaHlwZXI6OntSZXF1ZXN0LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cit1c2UgaHlw ZXJfdXRpbDo6cnQ6OntUb2tpb0V4ZWN1dG9yLCBUb2tpb0lvfTsKK3VzZSBoeXBlcl91dGlsOjpz ZXJ2ZXI6OmNvbm47Cit1c2UgaHlwZXJfdXRpbDo6c2VydmVyOjpncmFjZWZ1bDo6R3JhY2VmdWxT aHV0ZG93bjsKK3VzZSBoeXBlcl91dGlsOjpzZXJ2aWNlOjpUb3dlclRvSHlwZXJTZXJ2aWNlOwog dXNlIHJlZ2V4OjpSZWdleDsKIHVzZSBzZXJkZV9qc29uOjpWYWx1ZTsKIHVzZSB0b2tpbzo6ZnM6 OkZpbGU7Cit1c2UgdG9raW86OmlvOjp7QXN5bmNSZWFkLCBBc3luY1dyaXRlfTsKIHVzZSB0b2tp bzo6dGltZTo6SW5zdGFudDsKK3VzZSB0b2tpb19zdHJlYW06OndyYXBwZXJzOjpSZWNlaXZlclN0 cmVhbTsKIHVzZSB0b3dlcl9zZXJ2aWNlOjpTZXJ2aWNlOwogdXNlIHVybDo6Zm9ybV91cmxlbmNv ZGVkOwogCit1c2UgcHJveG1veF9odHRwOjpCb2R5OwogdXNlIHByb3htb3hfcm91dGVyOjp7CiAg ICAgY2hlY2tfYXBpX3Blcm1pc3Npb24sIEFwaUhhbmRsZXIsIEFwaU1ldGhvZCwgSHR0cEVycm9y LCBQZXJtaXNzaW9uLCBScGNFbnZpcm9ubWVudCwKICAgICBScGNFbnZpcm9ubWVudFR5cGUsIFVz ZXJJbmZvcm1hdGlvbiwKQEAgLTQwLDYgKzQ4LDcgQEAgdW5zYWZlIGV4dGVybiAiQyIgewogICAg IGZuIHR6c2V0KCk7CiB9CiAKKyNbZGVyaXZlKENsb25lKV0KIHN0cnVjdCBBdXRoU3RyaW5nRXh0 ZW5zaW9uKFN0cmluZyk7CiAKIHB1YihjcmF0ZSkgc3RydWN0IEVtcHR5VXNlckluZm9ybWF0aW9u IHt9CkBAIC03NCwyNCArODMsMTEgQEAgaW1wbCBSZXN0U2VydmVyIHsKICAgICAgICAgICAgIGFw aV9jb25maWc6IEFyYzo6bmV3KGFwaV9jb25maWcpLAogICAgICAgICB9CiAgICAgfQotfQogCi1p bXBsPFQ6IFBlZXJBZGRyZXNzPiBTZXJ2aWNlPCZUPiBmb3IgUmVzdFNlcnZlciB7Ci0gICAgdHlw ZSBSZXNwb25zZSA9IEFwaVNlcnZpY2U7Ci0gICAgdHlwZSBFcnJvciA9IEVycm9yOwotICAgIHR5 cGUgRnV0dXJlID0gc3RkOjpmdXR1cmU6OlJlYWR5PFJlc3VsdDxBcGlTZXJ2aWNlLCBFcnJvcj4+ OwotCi0gICAgZm4gcG9sbF9yZWFkeSgmbXV0IHNlbGYsIF9jeDogJm11dCBDb250ZXh0KSAtPiBQ b2xsPFJlc3VsdDwoKSwgU2VsZjo6RXJyb3I+PiB7Ci0gICAgICAgIFBvbGw6OlJlYWR5KE9rKCgp KSkKLSAgICB9Ci0KLSAgICBmbiBjYWxsKCZtdXQgc2VsZiwgY3R4OiAmVCkgLT4gU2VsZjo6RnV0 dXJlIHsKLSAgICAgICAgc3RkOjpmdXR1cmU6OnJlYWR5KG1hdGNoIGN0eC5wZWVyX2FkZHIoKSB7 Ci0gICAgICAgICAgICBFcnIoZXJyKSA9PiBFcnIoZm9ybWF0X2VyciEoInVuYWJsZSB0byBnZXQg cGVlciBhZGRyZXNzIC0ge30iLCBlcnIpKSwKLSAgICAgICAgICAgIE9rKHBlZXIpID0+IE9rKEFw aVNlcnZpY2UgewotICAgICAgICAgICAgICAgIHBlZXIsCi0gICAgICAgICAgICAgICAgYXBpX2Nv bmZpZzogQXJjOjpjbG9uZSgmc2VsZi5hcGlfY29uZmlnKSwKLSAgICAgICAgICAgIH0pLAorICAg IHB1YiBmbiBhcGlfc2VydmljZSgmc2VsZiwgcGVlcjogJmR5biBQZWVyQWRkcmVzcykgLT4gUmVz dWx0PEFwaVNlcnZpY2UsIEVycm9yPiB7CisgICAgICAgIE9rKEFwaVNlcnZpY2UgeworICAgICAg ICAgICAgcGVlcjogcGVlci5wZWVyX2FkZHIoKT8sCisgICAgICAgICAgICBhcGlfY29uZmlnOiBB cmM6OmNsb25lKCZzZWxmLmFwaV9jb25maWcpLAogICAgICAgICB9KQogICAgIH0KIH0KQEAgLTEw OCwyNSArMTA0LDQwIEBAIGltcGwgUmVkaXJlY3RvciB7CiAgICAgcHViIGZuIG5ldygpIC0+IFNl bGYgewogICAgICAgICBTZWxmIHt9CiAgICAgfQotfQogCi1pbXBsPFQ+IFNlcnZpY2U8JlQ+IGZv ciBSZWRpcmVjdG9yIHsKLSAgICB0eXBlIFJlc3BvbnNlID0gUmVkaXJlY3RTZXJ2aWNlOwotICAg IHR5cGUgRXJyb3IgPSBFcnJvcjsKLSAgICB0eXBlIEZ1dHVyZSA9IHN0ZDo6ZnV0dXJlOjpSZWFk eTxSZXN1bHQ8U2VsZjo6UmVzcG9uc2UsIFNlbGY6OkVycm9yPj47Ci0KLSAgICBmbiBwb2xsX3Jl YWR5KCZtdXQgc2VsZiwgX2N4OiAmbXV0IENvbnRleHQ8J18+KSAtPiBQb2xsPFJlc3VsdDwoKSwg U2VsZjo6RXJyb3I+PiB7Ci0gICAgICAgIFBvbGw6OlJlYWR5KE9rKCgpKSkKLSAgICB9Ci0KLSAg ICBmbiBjYWxsKCZtdXQgc2VsZiwgX2N0eDogJlQpIC0+IFNlbGY6OkZ1dHVyZSB7Ci0gICAgICAg IHN0ZDo6ZnV0dXJlOjpyZWFkeShPayhSZWRpcmVjdFNlcnZpY2Uge30pKQorICAgIHB1YiBmbiBy ZWRpcmVjdF9zZXJ2aWNlKCZzZWxmKSAtPiBSZWRpcmVjdFNlcnZpY2UgeworICAgICAgICBSZWRp cmVjdFNlcnZpY2Uge30KICAgICB9CiB9CiAKKyNbZGVyaXZlKENsb25lKV0KIHB1YiBzdHJ1Y3Qg UmVkaXJlY3RTZXJ2aWNlOwogCi1pbXBsIFNlcnZpY2U8UmVxdWVzdDxCb2R5Pj4gZm9yIFJlZGly ZWN0U2VydmljZSB7CitpbXBsIFJlZGlyZWN0U2VydmljZSB7CisgICAgcHViIGFzeW5jIGZuIHNl cnZlPFM+KAorICAgICAgICBzZWxmLAorICAgICAgICBjb25uOiBTLAorICAgICAgICBtdXQgZ3Jh Y2VmdWw6IE9wdGlvbjxBcmM8R3JhY2VmdWxTaHV0ZG93bj4+LAorICAgICkgLT4gUmVzdWx0PCgp LCBFcnJvcj4KKyAgICB3aGVyZQorICAgICAgICBTOiBBc3luY1JlYWQgKyBBc3luY1dyaXRlICsg VW5waW4gKyBTZW5kICsgJ3N0YXRpYywKKyAgICB7CisgICAgICAgIGxldCBhcGlfc2VydmljZSA9 IFRvd2VyVG9IeXBlclNlcnZpY2U6Om5ldyhzZWxmKTsKKyAgICAgICAgbGV0IGlvID0gVG9raW9J bzo6bmV3KGNvbm4pOworICAgICAgICBsZXQgYXBpX2Nvbm4gPSBjb25uOjphdXRvOjpCdWlsZGVy OjpuZXcoVG9raW9FeGVjdXRvcjo6bmV3KCkpOworICAgICAgICBsZXQgYXBpX2Nvbm4gPSBhcGlf Y29ubi5zZXJ2ZV9jb25uZWN0aW9uX3dpdGhfdXBncmFkZXMoaW8sIGFwaV9zZXJ2aWNlKTsKKyAg ICAgICAgaWYgbGV0IFNvbWUoZ3JhY2VmdWwpID0gZ3JhY2VmdWwudGFrZSgpIHsKKyAgICAgICAg ICAgIGxldCBhcGlfY29ubiA9IGdyYWNlZnVsLndhdGNoKGFwaV9jb25uKTsKKyAgICAgICAgICAg IGRyb3AoZ3JhY2VmdWwpOworICAgICAgICAgICAgYXBpX2Nvbm4uYXdhaXQKKyAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgIGFwaV9jb25uLmF3YWl0CisgICAgICAgIH0KKyAgICAgICAgLm1h cF9lcnIofGVycnwgZm9ybWF0X2VyciEoImVycm9yIHNlcnZpbmcgcmVkaXJlY3QgY29ubmVjdGlv bjoge2Vycn0iKSkKKyAgICB9Cit9CisKK2ltcGwgU2VydmljZTxSZXF1ZXN0PEluY29taW5nPj4g Zm9yIFJlZGlyZWN0U2VydmljZSB7CiAgICAgdHlwZSBSZXNwb25zZSA9IFJlc3BvbnNlPEJvZHk+ OwogICAgIHR5cGUgRXJyb3IgPSBhbnlob3c6OkVycm9yOwogICAgIHR5cGUgRnV0dXJlID0gUGlu PEJveDxkeW4gRnV0dXJlPE91dHB1dCA9IFJlc3VsdDxTZWxmOjpSZXNwb25zZSwgU2VsZjo6RXJy b3I+PiArIFNlbmQ+PjsKQEAgLTEzNSw3ICsxNDYsNyBAQCBpbXBsIFNlcnZpY2U8UmVxdWVzdDxC b2R5Pj4gZm9yIFJlZGlyZWN0U2VydmljZSB7CiAgICAgICAgIFBvbGw6OlJlYWR5KE9rKCgpKSkK ICAgICB9CiAKLSAgICBmbiBjYWxsKCZtdXQgc2VsZiwgcmVxOiBSZXF1ZXN0PEJvZHk+KSAtPiBT ZWxmOjpGdXR1cmUgeworICAgIGZuIGNhbGwoJm11dCBzZWxmLCByZXE6IFJlcXVlc3Q8SW5jb21p bmc+KSAtPiBTZWxmOjpGdXR1cmUgewogICAgICAgICBsZXQgZnV0dXJlID0gYXN5bmMgbW92ZSB7 CiAgICAgICAgICAgICBsZXQgaGVhZGVyX2hvc3RfdmFsdWUgPSByZXEKICAgICAgICAgICAgICAg ICAuaGVhZGVycygpCkBAIC0xOTQsMTIgKzIwNSw2IEBAIGltcGwgUGVlckFkZHJlc3MgZm9yIHRv a2lvOjpuZXQ6OlRjcFN0cmVhbSB7CiAgICAgfQogfQogCi1pbXBsIFBlZXJBZGRyZXNzIGZvciBo eXBlcjo6c2VydmVyOjpjb25uOjpBZGRyU3RyZWFtIHsKLSAgICBmbiBwZWVyX2FkZHIoJnNlbGYp IC0+IFJlc3VsdDxzdGQ6Om5ldDo6U29ja2V0QWRkciwgRXJyb3I+IHsKLSAgICAgICAgT2soc2Vs Zi5yZW1vdGVfYWRkcigpKQotICAgIH0KLX0KLQogaW1wbCBQZWVyQWRkcmVzcyBmb3IgdG9raW86 Om5ldDo6VW5peFN0cmVhbSB7CiAgICAgZm4gcGVlcl9hZGRyKCZzZWxmKSAtPiBSZXN1bHQ8c3Rk OjpuZXQ6OlNvY2tldEFkZHIsIEVycm9yPiB7CiAgICAgICAgIC8vIFRPRE86IEZpbmQgYSB3YXkg dG8gYWN0dWFsbHkgcmVwcmVzZW50IHRoZSB2c29jayBwZWVyIGluIHRoZSBBcGlTZXJ2aWNlIHN0 cnVjdCAtIGZvciBub3cKQEAgLTIyMywxMSArMjI4LDM2IEBAIGltcGw8VDogUGVlckFkZHJlc3M+ IFBlZXJBZGRyZXNzIGZvciBwcm94bW94X2h0dHA6OlJhdGVMaW1pdGVkU3RyZWFtPFQ+IHsKIC8v IFJ1c3Qgd2FudHMgdGhpcyB0eXBlICdwdWInIGhlcmUgKGVsc2Ugd2UgZ2V0ICdwcml2YXRlIHR5 cGUgYEFwaVNlcnZpY2VgCiAvLyBpbiBwdWJsaWMgaW50ZXJmYWNlJykuIFRoZSB0eXBlIGlzIHN0 aWxsIHByaXZhdGUgYmVjYXVzZSB0aGUgY3JhdGUgZG9lcwogLy8gbm90IGV4cG9ydCBpdC4KKyNb ZGVyaXZlKENsb25lKV0KIHB1YiBzdHJ1Y3QgQXBpU2VydmljZSB7CiAgICAgcHViIHBlZXI6IHN0 ZDo6bmV0OjpTb2NrZXRBZGRyLAogICAgIHB1YiBhcGlfY29uZmlnOiBBcmM8QXBpQ29uZmlnPiwK IH0KIAoraW1wbCBBcGlTZXJ2aWNlIHsKKyAgICBwdWIgYXN5bmMgZm4gc2VydmU8Uz4oCisgICAg ICAgIHNlbGYsCisgICAgICAgIGNvbm46IFMsCisgICAgICAgIG11dCBncmFjZWZ1bDogT3B0aW9u PEFyYzxHcmFjZWZ1bFNodXRkb3duPj4sCisgICAgKSAtPiBSZXN1bHQ8KCksIEVycm9yPgorICAg IHdoZXJlCisgICAgICAgIFM6IEFzeW5jUmVhZCArIEFzeW5jV3JpdGUgKyBVbnBpbiArIFNlbmQg KyAnc3RhdGljLAorICAgIHsKKyAgICAgICAgbGV0IGFwaV9zZXJ2aWNlID0gVG93ZXJUb0h5cGVy U2VydmljZTo6bmV3KHNlbGYpOworICAgICAgICBsZXQgaW8gPSBUb2tpb0lvOjpuZXcoY29ubik7 CisgICAgICAgIGxldCBhcGlfY29ubiA9IGNvbm46OmF1dG86OkJ1aWxkZXI6Om5ldyhUb2tpb0V4 ZWN1dG9yOjpuZXcoKSk7CisgICAgICAgIGxldCBhcGlfY29ubiA9IGFwaV9jb25uLnNlcnZlX2Nv bm5lY3Rpb25fd2l0aF91cGdyYWRlcyhpbywgYXBpX3NlcnZpY2UpOworICAgICAgICBpZiBsZXQg U29tZShncmFjZWZ1bCkgPSBncmFjZWZ1bC50YWtlKCkgeworICAgICAgICAgICAgbGV0IGFwaV9j b25uID0gZ3JhY2VmdWwud2F0Y2goYXBpX2Nvbm4pOworICAgICAgICAgICAgZHJvcChncmFjZWZ1 bCk7CisgICAgICAgICAgICBhcGlfY29ubi5hd2FpdAorICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgYXBpX2Nvbm4uYXdhaXQKKyAgICAgICAgfQorICAgICAgICAubWFwX2Vycih8ZXJyfCBm b3JtYXRfZXJyISgiZXJyb3Igc2VydmluZyBjb25uZWN0aW9uOiB7ZXJyfSIpKQorICAgIH0KK30K KwogZm4gbG9nX3Jlc3BvbnNlKAogICAgIGxvZ2ZpbGU6IE9wdGlvbjwmQXJjPE11dGV4PEZpbGVM b2dnZXI+Pj4sCiAgICAgcGVlcjogJnN0ZDo6bmV0OjpTb2NrZXRBZGRyLApAQCAtMzA3LDcgKzMz Nyw3IEBAIGZuIGdldF91c2VyX2FnZW50KGhlYWRlcnM6ICZIZWFkZXJNYXApIC0+IE9wdGlvbjxT dHJpbmc+IHsKICAgICAgICAgLm9rKCkKIH0KIAotaW1wbCBTZXJ2aWNlPFJlcXVlc3Q8Qm9keT4+ IGZvciBBcGlTZXJ2aWNlIHsKK2ltcGwgU2VydmljZTxSZXF1ZXN0PEluY29taW5nPj4gZm9yIEFw aVNlcnZpY2UgewogICAgIHR5cGUgUmVzcG9uc2UgPSBSZXNwb25zZTxCb2R5PjsKICAgICB0eXBl IEVycm9yID0gRXJyb3I7CiAgICAgI1thbGxvdyhjbGlwcHk6OnR5cGVfY29tcGxleGl0eSldCkBA IC0zMTcsNyArMzQ3LDcgQEAgaW1wbCBTZXJ2aWNlPFJlcXVlc3Q8Qm9keT4+IGZvciBBcGlTZXJ2 aWNlIHsKICAgICAgICAgUG9sbDo6UmVhZHkoT2soKCkpKQogICAgIH0KIAotICAgIGZuIGNhbGwo Jm11dCBzZWxmLCByZXE6IFJlcXVlc3Q8Qm9keT4pIC0+IFNlbGY6OkZ1dHVyZSB7CisgICAgZm4g Y2FsbCgmbXV0IHNlbGYsIHJlcTogUmVxdWVzdDxJbmNvbWluZz4pIC0+IFNlbGY6OkZ1dHVyZSB7 CiAgICAgICAgIGxldCBwYXRoID0gcmVxLnVyaSgpLnBhdGhfYW5kX3F1ZXJ5KCkudW53cmFwKCku YXNfc3RyKCkudG9fb3duZWQoKTsKICAgICAgICAgbGV0IG1ldGhvZCA9IHJlcS5tZXRob2QoKS5j bG9uZSgpOwogICAgICAgICBsZXQgdXNlcl9hZ2VudCA9IGdldF91c2VyX2FnZW50KHJlcS5oZWFk ZXJzKCkpOwpAQCAtMzg0LDcgKzQxNCw3IEBAIGZuIHBhcnNlX3F1ZXJ5X3BhcmFtZXRlcnM8Uzog J3N0YXRpYyArIEJ1aWxkSGFzaGVyICsgU2VuZD4oCiBhc3luYyBmbiBnZXRfcmVxdWVzdF9wYXJh bWV0ZXJzPFM6ICdzdGF0aWMgKyBCdWlsZEhhc2hlciArIFNlbmQ+KAogICAgIHBhcmFtX3NjaGVt YTogUGFyYW1ldGVyU2NoZW1hLAogICAgIHBhcnRzOiAmUGFydHMsCi0gICAgcmVxX2JvZHk6IEJv ZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHVyaV9wYXJhbTogSGFzaE1hcDxTdHJp bmcsIFN0cmluZywgUz4sCiApIC0+IFJlc3VsdDxWYWx1ZSwgRXJyb3I+IHsKICAgICBsZXQgbXV0 IGlzX2pzb24gPSBmYWxzZTsKQEAgLTQwMSwxMyArNDMxLDE3IEBAIGFzeW5jIGZuIGdldF9yZXF1 ZXN0X3BhcmFtZXRlcnM8UzogJ3N0YXRpYyArIEJ1aWxkSGFzaGVyICsgU2VuZD4oCiAgICAgICAg IH0KICAgICB9CiAKLSAgICBsZXQgYm9keSA9IFRyeVN0cmVhbUV4dDo6bWFwX2VycihyZXFfYm9k eSwgfGVycnwgeworICAgIGxldCBzdHJlYW1fYm9keSA9IEJvZHlTdHJlYW06Om5ldyhyZXFfYm9k eSk7CisgICAgbGV0IGJvZHkgPSBUcnlTdHJlYW1FeHQ6Om1hcF9lcnIoc3RyZWFtX2JvZHksIHxl cnJ8IHsKICAgICAgICAgaHR0cF9lcnIhKEJBRF9SRVFVRVNULCAiUHJvYmxlbXMgcmVhZGluZyBy ZXF1ZXN0IGJvZHk6IHt9IiwgZXJyKQogICAgIH0pCi0gICAgLnRyeV9mb2xkKFZlYzo6bmV3KCks IHxtdXQgYWNjLCBjaHVua3wgYXN5bmMgbW92ZSB7CisgICAgLnRyeV9mb2xkKFZlYzo6bmV3KCks IHxtdXQgYWNjLCBmcmFtZXwgYXN5bmMgbW92ZSB7CiAgICAgICAgIC8vIEZJWE1FOiBtYXggcmVx dWVzdCBib2R5IHNpemU/Ci0gICAgICAgIGlmIGFjYy5sZW4oKSArIGNodW5rLmxlbigpIDwgNjQg KiAxMDI0IHsKLSAgICAgICAgICAgIGFjYy5leHRlbmRfZnJvbV9zbGljZSgmY2h1bmspOworICAg ICAgICBsZXQgZnJhbWUgPSBmcmFtZQorICAgICAgICAgICAgLmludG9fZGF0YSgpCisgICAgICAg ICAgICAubWFwX2Vycih8ZXJyfCBmb3JtYXRfZXJyISgiRmFpbGVkIHRvIHJlYWQgcmVxdWVzdCBi b2R5IGZyYW1lIC0ge2Vycjo/fSIpKT87CisgICAgICAgIGlmIGFjYy5sZW4oKSArIGZyYW1lLmxl bigpIDwgNjQgKiAxMDI0IHsKKyAgICAgICAgICAgIGFjYy5leHRlbmRfZnJvbV9zbGljZSgmZnJh bWUpOwogICAgICAgICAgICAgT2soYWNjKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg RXJyKGh0dHBfZXJyIShCQURfUkVRVUVTVCwgIlJlcXVlc3QgYm9keSB0b28gbGFyZ2UiKSkKQEAg LTQzNywxMyArNDcxLDE0IEBAIGFzeW5jIGZuIGdldF9yZXF1ZXN0X3BhcmFtZXRlcnM8UzogJ3N0 YXRpYyArIEJ1aWxkSGFzaGVyICsgU2VuZD4oCiAgICAgfQogfQogCisjW2Rlcml2ZShDbG9uZSld CiBzdHJ1Y3QgTm9Mb2dFeHRlbnNpb24oKTsKIAogYXN5bmMgZm4gcHJveHlfcHJvdGVjdGVkX3Jl cXVlc3QoCiAgICAgY29uZmlnOiAmQXBpQ29uZmlnLAogICAgIGluZm86ICZBcGlNZXRob2QsCiAg ICAgbXV0IHBhcnRzOiBQYXJ0cywKLSAgICByZXFfYm9keTogQm9keSwKKyAgICByZXFfYm9keTog SW5jb21pbmcsCiAgICAgcGVlcjogJnN0ZDo6bmV0OjpTb2NrZXRBZGRyLAogKSAtPiBSZXN1bHQ8 UmVzcG9uc2U8Qm9keT4sIEVycm9yPiB7CiAgICAgbGV0IG11dCB1cmlfcGFydHMgPSBwYXJ0cy51 cmkuY2xvbmUoKS5pbnRvX3BhcnRzKCk7CkBAIC00NjMsOSArNDk4LDE0IEBAIGFzeW5jIGZuIHBy b3h5X3Byb3RlY3RlZF9yZXF1ZXN0KAogICAgIGxldCByZWxvYWRfdGltZXpvbmUgPSBpbmZvLnJl bG9hZF90aW1lem9uZTsKIAogICAgIGxldCBtdXQgcmVzcCA9IG1hdGNoIGNvbmZpZy5wcml2aWxl Z2VkX2FkZHIuY2xvbmUoKSB7Ci0gICAgICAgIE5vbmUgPT4gaHlwZXI6OmNsaWVudDo6Q2xpZW50 OjpuZXcoKS5yZXF1ZXN0KHJlcXVlc3QpLmF3YWl0PywKKyAgICAgICAgTm9uZSA9PiB7CisgICAg ICAgICAgICBoeXBlcl91dGlsOjpjbGllbnQ6OmxlZ2FjeTo6Q2xpZW50OjpidWlsZGVyKFRva2lv RXhlY3V0b3I6Om5ldygpKQorICAgICAgICAgICAgICAgIC5idWlsZF9odHRwKCkKKyAgICAgICAg ICAgICAgICAucmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIC5hd2FpdD8KKyAgICAg ICAgfQogICAgICAgICBTb21lKGFkZHIpID0+IHsKLSAgICAgICAgICAgIGh5cGVyOjpjbGllbnQ6 OkNsaWVudDo6YnVpbGRlcigpCisgICAgICAgICAgICBoeXBlcl91dGlsOjpjbGllbnQ6OmxlZ2Fj eTo6Q2xpZW50OjpidWlsZGVyKFRva2lvRXhlY3V0b3I6Om5ldygpKQogICAgICAgICAgICAgICAg IC5idWlsZChhZGRyKQogICAgICAgICAgICAgICAgIC5yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAg ICAgICAgICAgLmF3YWl0PwpAQCAtNDc5LDcgKzUxOSw3IEBAIGFzeW5jIGZuIHByb3h5X3Byb3Rl Y3RlZF9yZXF1ZXN0KAogICAgICAgICB9CiAgICAgfQogCi0gICAgT2socmVzcCkKKyAgICBPayhy ZXNwLm1hcCh8YnwgQm9keTo6d3JhcF9zdHJlYW0oQm9keURhdGFTdHJlYW06Om5ldyhiKSkpKQog fQogCiBmbiBkZWxheV91bmF1dGhfdGltZSgpIC0+IHN0ZDo6dGltZTo6SW5zdGFudCB7CkBAIC00 OTEsMjIgKzUzMSwyMyBAQCBmbiBhY2Nlc3NfZm9yYmlkZGVuX3RpbWUoKSAtPiBzdGQ6OnRpbWU6 Okluc3RhbnQgewogfQogCiBmbiBoYW5kbGVfc3RyZWFtX2FzX2pzb25fc2VxKHN0cmVhbTogcHJv eG1veF9yb3V0ZXI6OlN0cmVhbSkgLT4gUmVzdWx0PFJlc3BvbnNlPEJvZHk+LCBFcnJvcj4gewot ICAgIGxldCAobXV0IHNlbmQsIGJvZHkpID0gaHlwZXI6OkJvZHk6OmNoYW5uZWwoKTsKKyAgICBs ZXQgKHNlbmQsIGJvZHkpID0gdG9raW86OnN5bmM6Om1wc2M6OmNoYW5uZWw6OjxSZXN1bHQ8VmVj PHU4PiwgRXJyb3I+PigxKTsKICAgICB0b2tpbzo6c3Bhd24oYXN5bmMgbW92ZSB7CiAgICAgICAg IHVzZSBmdXR1cmVzOjpTdHJlYW1FeHQ7CiAKICAgICAgICAgbGV0IG11dCBzdHJlYW0gPSBzdHJl YW0uaW50b19pbm5lcigpOwogICAgICAgICB3aGlsZSBsZXQgU29tZShyZWNvcmQpID0gc3RyZWFt Lm5leHQoKS5hd2FpdCB7Ci0gICAgICAgICAgICBpZiBzZW5kLnNlbmRfZGF0YShyZWNvcmQudG9f Ynl0ZXMoKS5pbnRvKCkpLmF3YWl0LmlzX2VycigpIHsKKyAgICAgICAgICAgIGlmIHNlbmQuc2Vu ZChPayhyZWNvcmQudG9fYnl0ZXMoKSkpLmF3YWl0LmlzX2VycigpIHsKICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0pOwogCi0gICAgT2soUmVz cG9uc2U6OmJ1aWxkZXIoKQorICAgIFJlc3BvbnNlOjpidWlsZGVyKCkKICAgICAgICAgLnN0YXR1 cyhodHRwOjpTdGF0dXNDb2RlOjpPSykKICAgICAgICAgLmhlYWRlcihodHRwOjpoZWFkZXI6OkNP TlRFTlRfVFlQRSwgImFwcGxpY2F0aW9uL2pzb24tc2VxIikKLSAgICAgICAgLmJvZHkoYm9keSk/ KQorICAgICAgICAuYm9keShCb2R5Ojp3cmFwX3N0cmVhbShSZWNlaXZlclN0cmVhbTo6bmV3KGJv ZHkpKSkKKyAgICAgICAgLm1hcF9lcnIoRXJyb3I6OmZyb20pCiB9CiAKIGZuIGhhbmRsZV9zeW5j X3N0cmVhbV9hc19qc29uX3NlcSgKQEAgLTUyNyw3ICs1NjgsNyBAQCBwdWIoY3JhdGUpIGFzeW5j IGZuIGhhbmRsZV9hcGlfcmVxdWVzdDxFbnY6IFJwY0Vudmlyb25tZW50LCBTOiAnc3RhdGljICsg QnVpbGRIYQogICAgIGluZm86ICYnc3RhdGljIEFwaU1ldGhvZCwKICAgICBmb3JtYXR0ZXI6IE9w dGlvbjwmJ3N0YXRpYyBkeW4gT3V0cHV0Rm9ybWF0dGVyPiwKICAgICBwYXJ0czogUGFydHMsCi0g ICAgcmVxX2JvZHk6IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHVyaV9wYXJh bTogSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgUz4sCiApIC0+IFJlc3VsdDxSZXNwb25zZTxCb2R5 PiwgRXJyb3I+IHsKICAgICBsZXQgZm9ybWF0dGVyID0gZm9ybWF0dGVyLnVud3JhcF9vcihjcmF0 ZTo6Zm9ybWF0dGVyOjpESVJFQ1RfSlNPTl9GT1JNQVRURVIpOwpAQCAtNjMwLDkgKzY3MSwxMCBA QCBwdWIoY3JhdGUpIGFzeW5jIGZuIGhhbmRsZV9hcGlfcmVxdWVzdDxFbnY6IFJwY0Vudmlyb25t ZW50LCBTOiAnc3RhdGljICsgQnVpbGRIYQogICAgICAgICAgICAgKTsKICAgICAgICAgICAgIHJl c3AubWFwKHxib2R5fCB7CiAgICAgICAgICAgICAgICAgQm9keTo6d3JhcF9zdHJlYW0oCi0gICAg ICAgICAgICAgICAgICAgIERlZmxhdGVFbmNvZGVyOjpidWlsZGVyKFRyeVN0cmVhbUV4dDo6bWFw X2Vycihib2R5LCB8ZXJyfCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm94bW94X2xhbmc6 OmlvX2Zvcm1hdF9lcnIhKCJlcnJvciBkdXJpbmcgY29tcHJlc3Npb246IHt9IiwgZXJyKQotICAg ICAgICAgICAgICAgICAgICB9KSkKKyAgICAgICAgICAgICAgICAgICAgRGVmbGF0ZUVuY29kZXI6 OmJ1aWxkZXIoVHJ5U3RyZWFtRXh0OjptYXBfZXJyKAorICAgICAgICAgICAgICAgICAgICAgICAg Qm9keURhdGFTdHJlYW06Om5ldyhib2R5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHxlcnJ8 IHByb3htb3hfbGFuZzo6aW9fZm9ybWF0X2VyciEoImVycm9yIGR1cmluZyBjb21wcmVzc2lvbjog e30iLCBlcnIpLAorICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgICAgICAu emxpYih0cnVlKQogICAgICAgICAgICAgICAgICAgICAuZmx1c2hfd2luZG93KGlzX3N0cmVhbWlu Zy50aGVuX3NvbWUoNjQgKiAxMDI0KSkKICAgICAgICAgICAgICAgICAgICAgLmJ1aWxkKCksCkBA IC03OTYsNyArODM4LDcgQEAgZm4gZXh0cmFjdF9jb21wcmVzc2lvbl9tZXRob2QoaGVhZGVyczog Jmh0dHA6OkhlYWRlck1hcCkgLT4gT3B0aW9uPENvbXByZXNzaW9uTWUKIGltcGwgQXBpQ29uZmln IHsKICAgICBwdWIgYXN5bmMgZm4gaGFuZGxlX3JlcXVlc3QoCiAgICAgICAgIHNlbGY6IEFyYzxB cGlDb25maWc+LAotICAgICAgICByZXE6IFJlcXVlc3Q8Qm9keT4sCisgICAgICAgIHJlcTogUmVx dWVzdDxJbmNvbWluZz4sCiAgICAgICAgIHBlZXI6ICZzdGQ6Om5ldDo6U29ja2V0QWRkciwKICAg ICApIC0+IFJlc3VsdDxSZXNwb25zZTxCb2R5PiwgRXJyb3I+IHsKICAgICAgICAgbGV0IChwYXJ0 cywgYm9keSkgPSByZXEuaW50b19wYXJ0cygpOwpAQCAtODA4LDcgKzg1MCw3IEBAIGltcGwgQXBp Q29uZmlnIHsKICAgICAgICAgaWYgcGF0aC5sZW4oKSArIHF1ZXJ5LmxlbigpID4gTUFYX1VSSV9R VUVSWV9MRU5HVEggewogICAgICAgICAgICAgcmV0dXJuIE9rKFJlc3BvbnNlOjpidWlsZGVyKCkK ICAgICAgICAgICAgICAgICAuc3RhdHVzKFN0YXR1c0NvZGU6OlVSSV9UT09fTE9ORykKLSAgICAg ICAgICAgICAgICAuYm9keSgiIi5pbnRvKCkpCisgICAgICAgICAgICAgICAgLmJvZHkoQm9keTo6 ZW1wdHkoKSkKICAgICAgICAgICAgICAgICAudW53cmFwKCkpOwogICAgICAgICB9CiAKQEAgLTkw Nyw3ICs5NDksNyBAQCBpbXBsIEFjdGlvbiB7CiAKIHB1YiBzdHJ1Y3QgQXBpUmVxdWVzdERhdGE8 J2E+IHsKICAgICBwYXJ0czogUGFydHMsCi0gICAgYm9keTogQm9keSwKKyAgICBib2R5OiBJbmNv bWluZywKICAgICBwZWVyOiAmJ2Egc3RkOjpuZXQ6OlNvY2tldEFkZHIsCiAgICAgY29uZmlnOiAm J2EgQXBpQ29uZmlnLAogICAgIGZ1bGxfcGF0aDogJidhIHN0ciwKLS0gCjIuMzkuNQoKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFp bGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3ht b3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK