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 34CCE1FF15C for <inbox@lore.proxmox.com>; Wed, 26 Mar 2025 16:24:02 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 52E303B6F0; Wed, 26 Mar 2025 16:23:57 +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:26 +0100 Message-Id: <20250326152327.332179-23-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.006 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 PROLO_LEO1 0.1 Meta Catches all Leo drug variations so far 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-backup 5/6] adapt to hyper/http 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> c2ltaWxhciB0byB0aGUgb3RoZXIgY2hhbmdlczoKLSBCb2R5IHRvIEluY29taW5nIG9yIHByb3ht b3gtaHR0cCdzIEJvZHkKLSB1c2UgYWRhcHRlcnMgYmV0d2VlbiBoeXBlcjwtPnRvd2VyIGFuZCBo eXBlcjwtPnRva2lvCi0gYWRhcHQgdG8gbmV3IHByb3htb3gtcmVzdC1zZXJ2ZXIgaW50ZXJmYWNl cwoKU2lnbmVkLW9mZi1ieTogRmFiaWFuIEdyw7xuYmljaGxlciA8Zi5ncnVlbmJpY2hsZXJAcHJv eG1veC5jb20+Ci0tLQogcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRvbWwgICAgICB8ICAx ICsKIHByb3htb3gtYmFja3VwLWNsaWVudC9zcmMvc25hcHNob3QucnMgfCAgMiArLQogc3JjL2Fj bWUvY2xpZW50LnJzICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLQogc3JjL2FjbWUvcGx1Z2lu LnJzICAgICAgICAgICAgICAgICAgICB8IDYyICsrKysrKysrKysrKysrKystLS0tLS0tLQogc3Jj L2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzICAgICAgICAgICB8IDIwICsrKy0tLS0tCiBzcmMvYXBp Mi9iYWNrdXAvZW52aXJvbm1lbnQucnMgICAgICAgIHwgIDMgKy0KIHNyYy9hcGkyL2JhY2t1cC9t b2QucnMgICAgICAgICAgICAgICAgfCAxMCArKy0tCiBzcmMvYXBpMi9iYWNrdXAvdXBsb2FkX2No dW5rLnJzICAgICAgIHwgNDcgKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYXBpMi9oZWxwZXJzLnJz ICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9hcGkyL25vZGUvbW9kLnJzICAgICAgICAg ICAgICAgICAgfCAgNyArLS0KIHNyYy9hcGkyL25vZGUvdGFza3MucnMgICAgICAgICAgICAgICAg fCAgNyArLS0KIHNyYy9hcGkyL3JlYWRlci9tb2QucnMgICAgICAgICAgICAgICAgfCAxNyArKysr LS0tCiBzcmMvYmluL3Byb3htb3gtYmFja3VwLWFwaS5ycyAgICAgICAgIHwgNDAgKysrKysrKysr Ky0tLS0tCiBzcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzICAgICAgIHwgNzAgKysrKysr KysrKysrKysrKysrKysrKy0tLS0tCiAxNCBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygr KSwgOTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcHJveG1veC1iYWNrdXAtY2xpZW50L0Nh cmdvLnRvbWwgYi9wcm94bW94LWJhY2t1cC1jbGllbnQvQ2FyZ28udG9tbAppbmRleCBhOTFhNDkw OGIuLjVmMDE0MGU3OCAxMDA2NDQKLS0tIGEvcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRv bWwKKysrIGIvcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRvbWwKQEAgLTI0LDYgKzI0LDcg QEAgcHhhci53b3Jrc3BhY2UgPSB0cnVlCiAKIHByb3htb3gtYXN5bmMud29ya3NwYWNlID0gdHJ1 ZQogcHJveG1veC1odW1hbi1ieXRlLndvcmtzcGFjZSA9IHRydWUKK3Byb3htb3gtaHR0cCA9IHsg d29ya3NwYWNlID0gdHJ1ZSwgZmVhdHVyZXMgPSBbICJib2R5IiBdIH0KIHByb3htb3gtbG9nLndv cmtzcGFjZSA9IHRydWUKIHByb3htb3gtaW8ud29ya3NwYWNlID0gdHJ1ZQogcHJveG1veC1yb3V0 ZXIgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0gWyAiY2xpIiBdIH0KZGlmZiAtLWdp dCBhL3Byb3htb3gtYmFja3VwLWNsaWVudC9zcmMvc25hcHNob3QucnMgYi9wcm94bW94LWJhY2t1 cC1jbGllbnQvc3JjL3NuYXBzaG90LnJzCmluZGV4IGYxOTVjMjNiNy4uZjE1NjlkYjJlIDEwMDY0 NAotLS0gYS9wcm94bW94LWJhY2t1cC1jbGllbnQvc3JjL3NuYXBzaG90LnJzCisrKyBiL3Byb3ht b3gtYmFja3VwLWNsaWVudC9zcmMvc25hcHNob3QucnMKQEAgLTI3MSw3ICsyNzEsNyBAQCBhc3lu YyBmbiB1cGxvYWRfbG9nKHBhcmFtOiBWYWx1ZSkgLT4gUmVzdWx0PFZhbHVlLCBFcnJvcj4gewog ICAgICk7CiAKICAgICBsZXQgYXJncyA9IHNuYXBzaG90X2FyZ3MoJmJhY2t1cF9ucywgJnNuYXBz aG90KT87Ci0gICAgbGV0IGJvZHkgPSBoeXBlcjo6Qm9keTo6ZnJvbShyYXdfZGF0YSk7CisgICAg bGV0IGJvZHkgPSBwcm94bW94X2h0dHA6OkJvZHk6OmZyb20ocmF3X2RhdGEpOwogCiAgICAgY2xp ZW50CiAgICAgICAgIC51cGxvYWQoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIGJvZHksICZw YXRoLCBTb21lKGFyZ3MpKQpkaWZmIC0tZ2l0IGEvc3JjL2FjbWUvY2xpZW50LnJzIGIvc3JjL2Fj bWUvY2xpZW50LnJzCmluZGV4IDk3ZjYyOGUzNy4uNGU1NTM5M2U0IDEwMDY0NAotLS0gYS9zcmMv YWNtZS9jbGllbnQucnMKKysrIGIvc3JjL2FjbWUvY2xpZW50LnJzCkBAIC02LDggKzYsMTAgQEAg dXNlIHN0ZDo6b3M6OnVuaXg6OmZzOjpPcGVuT3B0aW9uc0V4dDsKIAogdXNlIGFueWhvdzo6e2Jh aWwsIGZvcm1hdF9lcnJ9OwogdXNlIGJ5dGVzOjpCeXRlczsKLXVzZSBoeXBlcjo6e2JvZHk6Okh0 dHBCb2R5LCBCb2R5LCBSZXF1ZXN0fTsKK3VzZSBodHRwX2JvZHlfdXRpbDo6Qm9keUV4dDsKK3Vz ZSBoeXBlcjo6UmVxdWVzdDsKIHVzZSBuaXg6OnN5czo6c3RhdDo6TW9kZTsKK3VzZSBwcm94bW94 X2h0dHA6OkJvZHk7CiB1c2Ugc2VyZGU6OntEZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKIAogdXNl IHByb3htb3hfYWNtZTo6YWNjb3VudDo6QWNjb3VudENyZWF0b3I7CkBAIC02MTgsNyArNjIwLDcg QEAgaW1wbCBBY21lQ2xpZW50IHsKICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKT8sCiAgICAg ICAgICkpOwogCi0gICAgICAgIE9rKChkaXJlY3RvcnkuYXNfcmVmKCkudW53cmFwKCksIG5vbmNl LmFzX2RlcmVmKCkpKQorICAgICAgICBPaygoZGlyZWN0b3J5LmFzX211dCgpLnVud3JhcCgpLCBu b25jZS5hc19kZXJlZigpKSkKICAgICB9CiAKICAgICAvLy8gTGlrZSBgZ2V0X2RpcmVjdG9yeWAs IGJ1dCBpZiB0aGUgZGlyZWN0b3J5IHByb3ZpZGVzIG5vIG5vbmNlLCBhbHNvIHBlcmZvcm1zIGEg YEhFQURgCmRpZmYgLS1naXQgYS9zcmMvYWNtZS9wbHVnaW4ucnMgYi9zcmMvYWNtZS9wbHVnaW4u cnMKaW5kZXggYzMzY2ZlNDA1Li45MTQxNjcwZTcgMTAwNjQ0Ci0tLSBhL3NyYy9hY21lL3BsdWdp bi5ycworKysgYi9zcmMvYWNtZS9wbHVnaW4ucnMKQEAgLTEsMTIgKzEsMjEgQEAKIHVzZSBzdGQ6 OmZ1dHVyZTo6RnV0dXJlOwordXNlIHN0ZDo6bmV0Ojp7SXBBZGRyLCBTb2NrZXRBZGRyfTsKIHVz ZSBzdGQ6OnBpbjo6UGluOwogdXNlIHN0ZDo6cHJvY2Vzczo6U3RkaW87CiB1c2Ugc3RkOjpzeW5j OjpBcmM7CiB1c2Ugc3RkOjp0aW1lOjpEdXJhdGlvbjsKIAogdXNlIGFueWhvdzo6e2JhaWwsIGZv cm1hdF9lcnIsIEVycm9yfTsKLXVzZSBoeXBlcjo6e0JvZHksIFJlcXVlc3QsIFJlc3BvbnNlfTsK K3VzZSBieXRlczo6Qnl0ZXM7Cit1c2UgZnV0dXJlczo6VHJ5RnV0dXJlRXh0OwordXNlIGh0dHBf Ym9keV91dGlsOjpGdWxsOwordXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKK3VzZSBoeXBlcjo6 c2VydmVyOjpjb25uOjpodHRwMTsKK3VzZSBoeXBlcjo6c2VydmljZTo6c2VydmljZV9mbjsKK3Vz ZSBoeXBlcjo6e1JlcXVlc3QsIFJlc3BvbnNlfTsKK3VzZSBoeXBlcl91dGlsOjpydDo6VG9raW9J bzsKIHVzZSB0b2tpbzo6aW86OntBc3luY0J1ZlJlYWRFeHQsIEFzeW5jUmVhZCwgQXN5bmNXcml0 ZUV4dCwgQnVmUmVhZGVyfTsKK3VzZSB0b2tpbzo6bmV0OjpUY3BMaXN0ZW5lcjsKIHVzZSB0b2tp bzo6cHJvY2Vzczo6Q29tbWFuZDsKIAogdXNlIHByb3htb3hfYWNtZTo6e0F1dGhvcml6YXRpb24s IENoYWxsZW5nZX07CkBAIC0yMzUsMTAgKzI0NCwxMCBAQCBpbXBsIFN0YW5kYWxvbmVTZXJ2ZXIg ewogfQogCiBhc3luYyBmbiBzdGFuZGFsb25lX3Jlc3BvbmQoCi0gICAgcmVxOiBSZXF1ZXN0PEJv ZHk+LAorICAgIHJlcTogUmVxdWVzdDxJbmNvbWluZz4sCiAgICAgcGF0aDogQXJjPFN0cmluZz4s CiAgICAga2V5X2F1dGg6IEFyYzxTdHJpbmc+LAotKSAtPiBSZXN1bHQ8UmVzcG9uc2U8Qm9keT4s IGh5cGVyOjpFcnJvcj4geworKSAtPiBSZXN1bHQ8UmVzcG9uc2U8RnVsbDxCeXRlcz4+LCBoeXBl cjo6RXJyb3I+IHsKICAgICBpZiByZXEubWV0aG9kKCkgPT0gaHlwZXI6Ok1ldGhvZDo6R0VUICYm IHJlcS51cmkoKS5wYXRoKCkgPT0gcGF0aC5hc19zdHIoKSB7CiAgICAgICAgIE9rKFJlc3BvbnNl OjpidWlsZGVyKCkKICAgICAgICAgICAgIC5zdGF0dXMoaHlwZXI6Omh0dHA6OlN0YXR1c0NvZGU6 Ok9LKQpAQCAtMjYwLDkgKzI2OSw2IEBAIGltcGwgQWNtZVBsdWdpbiBmb3IgU3RhbmRhbG9uZVNl cnZlciB7CiAgICAgICAgIF9kb21haW46ICYnZCBBY21lRG9tYWluLAogICAgICAgICBfdGFzazog QXJjPFdvcmtlclRhc2s+LAogICAgICkgLT4gUGluPEJveDxkeW4gRnV0dXJlPE91dHB1dCA9IFJl c3VsdDwmJ2Mgc3RyLCBFcnJvcj4+ICsgU2VuZCArICdmdXQ+PiB7Ci0gICAgICAgIHVzZSBoeXBl cjo6c2VydmVyOjpjb25uOjpBZGRySW5jb21pbmc7Ci0gICAgICAgIHVzZSBoeXBlcjo6c2Vydmlj ZTo6e21ha2Vfc2VydmljZV9mbiwgc2VydmljZV9mbn07Ci0KICAgICAgICAgQm94OjpwaW4oYXN5 bmMgbW92ZSB7CiAgICAgICAgICAgICBzZWxmLnN0b3AoKTsKIApAQCAtMjczLDIyICsyNzksNDAg QEAgaW1wbCBBY21lUGx1Z2luIGZvciBTdGFuZGFsb25lU2VydmVyIHsKICAgICAgICAgICAgIGxl dCBrZXlfYXV0aCA9IEFyYzo6bmV3KGNsaWVudC5rZXlfYXV0aG9yaXphdGlvbih0b2tlbik/KTsK ICAgICAgICAgICAgIGxldCBwYXRoID0gQXJjOjpuZXcoZm9ybWF0ISgiLy53ZWxsLWtub3duL2Fj bWUtY2hhbGxlbmdlL3t9IiwgdG9rZW4pKTsKIAotICAgICAgICAgICAgbGV0IHNlcnZpY2UgPSBt YWtlX3NlcnZpY2VfZm4obW92ZSB8X3wgewotICAgICAgICAgICAgICAgIGxldCBwYXRoID0gQXJj OjpjbG9uZSgmcGF0aCk7Ci0gICAgICAgICAgICAgICAgbGV0IGtleV9hdXRoID0gQXJjOjpjbG9u ZSgma2V5X2F1dGgpOwotICAgICAgICAgICAgICAgIGFzeW5jIG1vdmUgewotICAgICAgICAgICAg ICAgICAgICBPazo6PF8sIGh5cGVyOjpFcnJvcj4oc2VydmljZV9mbihtb3ZlIHxyZXF1ZXN0fCB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lX3Jlc3BvbmQocmVxdWVzdCwgQXJj OjpjbG9uZSgmcGF0aCksIEFyYzo6Y2xvbmUoJmtleV9hdXRoKSkKLSAgICAgICAgICAgICAgICAg ICAgfSkpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0KICAgICAgICAgICAg IC8vIGBbOjpdOjgwYCBmaXJzdCwgdGhlbiBgKjo4MGAKLSAgICAgICAgICAgIGxldCBpbmNvbWlu ZyA9IEFkZHJJbmNvbWluZzo6YmluZCgmKChbMHUxNjsgOF0sIDgwKS5pbnRvKCkpKQotICAgICAg ICAgICAgICAgIC5vcl9lbHNlKHxffCBBZGRySW5jb21pbmc6OmJpbmQoJigoWzB1ODsgNF0sIDgw KS5pbnRvKCkpKSk/OworICAgICAgICAgICAgbGV0IGR1YWwgPSBTb2NrZXRBZGRyOjpuZXcoSXBB ZGRyOjpmcm9tKFswdTE2OyA4XSksIDgwKTsKKyAgICAgICAgICAgIGxldCBpcHY0ID0gU29ja2V0 QWRkcjo6bmV3KElwQWRkcjo6ZnJvbShbMHU4OyA0XSksIDgwKTsKKyAgICAgICAgICAgIGxldCBp bmNvbWluZyA9IFRjcExpc3RlbmVyOjpiaW5kKGR1YWwpCisgICAgICAgICAgICAgICAgLm9yX2Vs c2UofF98IFRjcExpc3RlbmVyOjpiaW5kKGlwdjQpKQorICAgICAgICAgICAgICAgIC5hd2FpdD87 CiAKLSAgICAgICAgICAgIGxldCBzZXJ2ZXIgPSBoeXBlcjo6U2VydmVyOjpidWlsZGVyKGluY29t aW5nKS5zZXJ2ZShzZXJ2aWNlKTsKKyAgICAgICAgICAgIGxldCBzZXJ2ZXIgPSBhc3luYyBtb3Zl IHsKKyAgICAgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGtleV9h dXRoID0gQXJjOjpjbG9uZSgma2V5X2F1dGgpOworICAgICAgICAgICAgICAgICAgICBsZXQgcGF0 aCA9IEFyYzo6Y2xvbmUoJnBhdGgpOworICAgICAgICAgICAgICAgICAgICBtYXRjaCBpbmNvbWlu Zy5hY2NlcHQoKS5hd2FpdCB7CisgICAgICAgICAgICAgICAgICAgICAgICBPaygodGNwLCBfKSkg PT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbyA9IFRva2lvSW86Om5ldyh0 Y3ApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlID0gc2VydmljZV9m bihtb3ZlIHxyZXF1ZXN0fCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5k YWxvbmVfcmVzcG9uZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmM6OmNsb25lKCZwYXRo KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyYzo6Y2xvbmUoJmtleV9h dXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0pOwogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnRh c2s6OnNwYXduKGFzeW5jIG1vdmUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBsZXQgRXJyKGVycikgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0 cDE6OkJ1aWxkZXI6Om5ldygpLnNlcnZlX2Nvbm5lY3Rpb24oaW8sIHNlcnZpY2UpLmF3YWl0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByaW50bG4hKCJFcnJvciBzZXJ2aW5nIGNvbm5lY3Rpb246IHtlcnI6P30i KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgRXJyKGVycikgPT4gcHJpbnRsbiEoIkVycm9yIGFjY2VwdGluZyBjb25uZWN0aW9u OiB7ZXJyOj99IiksCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9OwogICAgICAgICAgICAgbGV0IChmdXR1cmUsIGFib3J0KSA9IGZ1dHVyZXM6 OmZ1dHVyZTo6YWJvcnRhYmxlKHNlcnZlcik7CiAgICAgICAgICAgICBzZWxmLmFib3J0X2hhbmRs ZSA9IFNvbWUoYWJvcnQpOwogICAgICAgICAgICAgdG9raW86OnNwYXduKGZ1dHVyZSk7CmRpZmYg LS1naXQgYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgYi9zcmMvYXBpMi9hZG1pbi9kYXRh c3RvcmUucnMKaW5kZXggNDgzZTU5NWMxLi43YWJhNWQzMTMgMTAwNjQ0Ci0tLSBhL3NyYy9hcGky L2FkbWluL2RhdGFzdG9yZS5ycworKysgYi9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKQEAg LTksOCArOSwxMCBAQCB1c2Ugc3RkOjpzeW5jOjpBcmM7CiAKIHVzZSBhbnlob3c6OntiYWlsLCBm b3JtYXRfZXJyLCBFcnJvcn07CiB1c2UgZnV0dXJlczo6KjsKK3VzZSBodHRwX2JvZHlfdXRpbDo6 Qm9keUV4dDsKIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Ci11c2UgaHlwZXI6Onto ZWFkZXIsIEJvZHksIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKK3VzZSBoeXBlcjo6e2JvZHk6Oklu Y29taW5nLCBoZWFkZXIsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKK3VzZSBwcm94bW94X2h0dHA6 OkJvZHk7CiB1c2Ugc2VyZGU6OkRlc2VyaWFsaXplOwogdXNlIHNlcmRlX2pzb246Ontqc29uLCBW YWx1ZX07CiB1c2UgdG9raW9fc3RyZWFtOjp3cmFwcGVyczo6UmVjZWl2ZXJTdHJlYW07CkBAIC0x Mzg3LDcgKzEzODksNyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9ET1dOTE9BRF9GSUxFOiBBcGlN ZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKIAogcHViIGZuIGRvd25sb2FkX2ZpbGUoCiAgICAgX3Bh cnRzOiBQYXJ0cywKLSAgICBfcmVxX2JvZHk6IEJvZHksCisgICAgX3JlcV9ib2R5OiBJbmNvbWlu ZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52 OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKQEAgLTE0NzIsNyArMTQ3NCw3IEBAIHB1YiBjb25z dCBBUElfTUVUSE9EX0RPV05MT0FEX0ZJTEVfREVDT0RFRDogQXBpTWV0aG9kID0gQXBpTWV0aG9k OjpuZXcoCiAKIHB1YiBmbiBkb3dubG9hZF9maWxlX2RlY29kZWQoCiAgICAgX3BhcnRzOiBQYXJ0 cywKLSAgICBfcmVxX2JvZHk6IEJvZHksCisgICAgX3JlcV9ib2R5OiBJbmNvbWluZywKICAgICBw YXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHlu IFJwY0Vudmlyb25tZW50PiwKQEAgLTE1OTgsNyArMTYwMCw3IEBAIHB1YiBjb25zdCBBUElfTUVU SE9EX1VQTE9BRF9CQUNLVVBfTE9HOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKIAogcHVi IGZuIHVwbG9hZF9iYWNrdXBfbG9nKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6 IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA QCAtMTYzNiwxMyArMTYzOCw3IEBAIHB1YiBmbiB1cGxvYWRfYmFja3VwX2xvZygKICAgICAgICAg ICAgIGZpbGVfbmFtZSA9IGZpbGVfbmFtZS5kZXJlZigpLAogICAgICAgICApOwogCi0gICAgICAg IGxldCBkYXRhID0gcmVxX2JvZHkKLSAgICAgICAgICAgIC5tYXBfZXJyKEVycm9yOjpmcm9tKQot ICAgICAgICAgICAgLnRyeV9mb2xkKFZlYzo6bmV3KCksIHxtdXQgYWNjLCBjaHVua3wgewotICAg ICAgICAgICAgICAgIGFjYy5leHRlbmRfZnJvbV9zbGljZSgmY2h1bmspOwotICAgICAgICAgICAg ICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQotICAgICAgICAgICAgfSkKLSAgICAgICAg ICAgIC5hd2FpdD87CisgICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkuY29sbGVjdCgpLmF3YWl0 Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygpOwogCiAgICAgICAgIC8vIGFsd2F5cyB2 ZXJpZnkgYmxvYi9DUkMgYXQgc2VydmVyIHNpZGUKICAgICAgICAgbGV0IGJsb2IgPSBEYXRhQmxv Yjo6bG9hZF9mcm9tX3JlYWRlcigmbXV0ICZkYXRhWy4uXSk/OwpAQCAtMTgxNSw3ICsxODExLDcg QEAgZm4gZ2V0X2xvY2FsX3B4YXJfcmVhZGVyKAogCiBwdWIgZm4gcHhhcl9maWxlX2Rvd25sb2Fk KAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3JlcV9ib2R5OiBCb2R5LAorICAgIF9yZXFfYm9k eTogSW5jb21pbmcsCiAgICAgcGFyYW06IFZhbHVlLAogICAgIF9pbmZvOiAmQXBpTWV0aG9kLAog ICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9ubWVudD4sCmRpZmYgLS1naXQgYS9zcmMvYXBp Mi9iYWNrdXAvZW52aXJvbm1lbnQucnMgYi9zcmMvYXBpMi9iYWNrdXAvZW52aXJvbm1lbnQucnMK aW5kZXggOTlkODg1ZTJlLi44YTJlOWRkY2IgMTAwNjQ0Ci0tLSBhL3NyYy9hcGkyL2JhY2t1cC9l bnZpcm9ubWVudC5ycworKysgYi9zcmMvYXBpMi9iYWNrdXAvZW52aXJvbm1lbnQucnMKQEAgLTcs NiArNyw3IEBAIHVzZSB0cmFjaW5nOjppbmZvOwogdXNlIDo6c2VyZGU6OlNlcmlhbGl6ZTsKIHVz ZSBzZXJkZV9qc29uOjp7anNvbiwgVmFsdWV9OwogCit1c2UgcHJveG1veF9odHRwOjpCb2R5Owog dXNlIHByb3htb3hfcm91dGVyOjp7UnBjRW52aXJvbm1lbnQsIFJwY0Vudmlyb25tZW50VHlwZX07 CiB1c2UgcHJveG1veF9zeXM6OmZzOjp7bG9ja19kaXJfbm9ibG9ja19zaGFyZWQsIHJlcGxhY2Vf ZmlsZSwgQ3JlYXRlT3B0aW9uc307CiAKQEAgLTE5LDcgKzIwLDcgQEAgdXNlIHByb3htb3hfcmVz dF9zZXJ2ZXI6Ontmb3JtYXR0ZXI6OiosIFdvcmtlclRhc2t9OwogCiB1c2UgY3JhdGU6OmJhY2t1 cDo6dmVyaWZ5X2JhY2t1cF9kaXJfd2l0aF9sb2NrOwogCi11c2UgaHlwZXI6OntCb2R5LCBSZXNw b25zZX07Cit1c2UgaHlwZXI6OlJlc3BvbnNlOwogCiAjW2Rlcml2ZShDb3B5LCBDbG9uZSwgU2Vy aWFsaXplKV0KIHN0cnVjdCBVcGxvYWRTdGF0aXN0aWMgewpkaWZmIC0tZ2l0IGEvc3JjL2FwaTIv YmFja3VwL21vZC5ycyBiL3NyYy9hcGkyL2JhY2t1cC9tb2QucnMKaW5kZXggZWZjOTdhMWZiLi5m NDM3OGUxODUgMTAwNjQ0Ci0tLSBhL3NyYy9hcGkyL2JhY2t1cC9tb2QucnMKKysrIGIvc3JjL2Fw aTIvYmFja3VwL21vZC5ycwpAQCAtNSwxMSArNSwxMyBAQCB1c2UgZnV0dXJlczo6KjsKIHVzZSBo ZXg6OkZyb21IZXg7CiB1c2UgaHlwZXI6OmhlYWRlcjo6e0hlYWRlclZhbHVlLCBDT05ORUNUSU9O LCBVUEdSQURFfTsKIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Ci11c2UgaHlwZXI6 OntCb2R5LCBSZXF1ZXN0LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cit1c2UgaHlwZXI6Ontib2R5 OjpJbmNvbWluZywgUmVxdWVzdCwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9OwordXNlIGh5cGVyX3V0 aWw6OnNlcnZpY2U6OlRvd2VyVG9IeXBlclNlcnZpY2U7CiB1c2Ugc2VyZGU6OkRlc2VyaWFsaXpl OwogdXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07CiB1c2UgdHJhY2luZzo6d2FybjsKIAor dXNlIHByb3htb3hfaHR0cDo6Qm9keTsKIHVzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjp7SDJTZXJ2 aWNlLCBXb3JrZXJUYXNrfTsKIHVzZSBwcm94bW94X3JvdXRlcjo6e2h0dHBfZXJyLCBsaXN0X3N1 YmRpcnNfYXBpX21ldGhvZH07CiB1c2UgcHJveG1veF9yb3V0ZXI6OnsKQEAgLTcwLDcgKzcyLDcg QEAgcHViKGNyYXRlKSBmbiBvcHRpb25hbF9uc19wYXJhbShwYXJhbTogJlZhbHVlKSAtPiBSZXN1 bHQ8QmFja3VwTmFtZXNwYWNlLCBFcnJvcj4KIAogZm4gdXBncmFkZV90b19iYWNrdXBfcHJvdG9j b2woCiAgICAgcGFydHM6IFBhcnRzLAotICAgIHJlcV9ib2R5OiBCb2R5LAorICAgIHJlcV9ib2R5 OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAg ICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKQEAgLTI0Nyw3ICsyNDksNyBAQCBm biB1cGdyYWRlX3RvX2JhY2t1cF9wcm90b2NvbCgKICAgICAgICAgICAgICAgICAgICAgICAgIGh0 dHAubWF4X2ZyYW1lX3NpemUoNCAqIDEwMjQgKiAxMDI0KTsKIAogICAgICAgICAgICAgICAgICAg ICAgICAgbGV0IGVudjMgPSBlbnYyLmNsb25lKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBo dHRwLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwgc2VydmljZSkubWFwKG1vdmUgfHJlc3VsdHwgewor ICAgICAgICAgICAgICAgICAgICAgICAgaHR0cC5zZXJ2ZV9jb25uZWN0aW9uKGNvbm4sIFRvd2Vy VG9IeXBlclNlcnZpY2U6Om5ldyhzZXJ2aWNlKSkubWFwKG1vdmUgfHJlc3VsdHwgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHJlc3VsdCB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVycihlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIEF2b2lkICBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90IGNvbm5lY3RlZCAob3Mg ZXJyb3IgMTA3KQpAQCAtODI0LDcgKzgyNiw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX0RPV05M T0FEX1BSRVZJT1VTOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKIAogZm4gZG93bmxvYWRf cHJldmlvdXMoCiAgICAgX3BhcnRzOiBQYXJ0cywKLSAgICBfcmVxX2JvZHk6IEJvZHksCisgICAg X3JlcV9ib2R5OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlN ZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKZGlmZiAtLWdpdCBh L3NyYy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1bmsucnMgYi9zcmMvYXBpMi9iYWNrdXAvdXBsb2Fk X2NodW5rLnJzCmluZGV4IDIwMjU5NjYwYS4uMmM2NmMyODU1IDEwMDY0NAotLS0gYS9zcmMvYXBp Mi9iYWNrdXAvdXBsb2FkX2NodW5rLnJzCisrKyBiL3NyYy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1 bmsucnMKQEAgLTUsOCArNSw5IEBAIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQb2xsfTsKIHVz ZSBhbnlob3c6OntiYWlsLCBmb3JtYXRfZXJyLCBFcnJvcn07CiB1c2UgZnV0dXJlczo6KjsKIHVz ZSBoZXg6OkZyb21IZXg7Cit1c2UgaHR0cF9ib2R5X3V0aWw6OntCb2R5RGF0YVN0cmVhbSwgQm9k eUV4dH07Cit1c2UgaHlwZXI6OmJvZHk6OkluY29taW5nOwogdXNlIGh5cGVyOjpodHRwOjpyZXF1 ZXN0OjpQYXJ0czsKLXVzZSBoeXBlcjo6Qm9keTsKIHVzZSBzZXJkZV9qc29uOjp7anNvbiwgVmFs dWV9OwogCiB1c2UgcHJveG1veF9yb3V0ZXI6OntBcGlIYW5kbGVyLCBBcGlNZXRob2QsIEFwaVJl c3BvbnNlRnV0dXJlLCBScGNFbnZpcm9ubWVudH07CkBAIC0yMSw3ICsyMiw3IEBAIHVzZSBwYnNf dG9vbHM6Ompzb246OntyZXF1aXJlZF9pbnRlZ2VyX3BhcmFtLCByZXF1aXJlZF9zdHJpbmdfcGFy YW19OwogdXNlIHN1cGVyOjplbnZpcm9ubWVudDo6KjsKIAogcHViIHN0cnVjdCBVcGxvYWRDaHVu ayB7Ci0gICAgc3RyZWFtOiBCb2R5LAorICAgIHN0cmVhbTogQm9keURhdGFTdHJlYW08SW5jb21p bmc+LAogICAgIHN0b3JlOiBBcmM8RGF0YVN0b3JlPiwKICAgICBkaWdlc3Q6IFt1ODsgMzJdLAog ICAgIHNpemU6IHUzMiwKQEAgLTMxLDcgKzMyLDcgQEAgcHViIHN0cnVjdCBVcGxvYWRDaHVuayB7 CiAKIGltcGwgVXBsb2FkQ2h1bmsgewogICAgIHB1YiBmbiBuZXcoCi0gICAgICAgIHN0cmVhbTog Qm9keSwKKyAgICAgICAgc3RyZWFtOiBCb2R5RGF0YVN0cmVhbTxJbmNvbWluZz4sCiAgICAgICAg IHN0b3JlOiBBcmM8RGF0YVN0b3JlPiwKICAgICAgICAgZGlnZXN0OiBbdTg7IDMyXSwKICAgICAg ICAgc2l6ZTogdTMyLApAQCAtMTQ2LDcgKzE0Nyw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX1VQ TE9BRF9GSVhFRF9DSFVOSzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCiAKIGZuIHVwbG9h ZF9maXhlZF9jaHVuaygKICAgICBfcGFydHM6IFBhcnRzLAotICAgIHJlcV9ib2R5OiBCb2R5LAor ICAgIHJlcV9ib2R5OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZB cGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKQEAgLTE2MSw4 ICsxNjIsMTQgQEAgZm4gdXBsb2FkX2ZpeGVkX2NodW5rKAogCiAgICAgICAgIGxldCBlbnY6ICZC YWNrdXBFbnZpcm9ubWVudCA9IHJwY2Vudi5hc19yZWYoKTsKIAotICAgICAgICBsZXQgKGRpZ2Vz dCwgc2l6ZSwgY29tcHJlc3NlZF9zaXplLCBpc19kdXBsaWNhdGUpID0KLSAgICAgICAgICAgIFVw bG9hZENodW5rOjpuZXcocmVxX2JvZHksIGVudi5kYXRhc3RvcmUuY2xvbmUoKSwgZGlnZXN0LCBz aXplLCBlbmNvZGVkX3NpemUpLmF3YWl0PzsKKyAgICAgICAgbGV0IChkaWdlc3QsIHNpemUsIGNv bXByZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKSA9IFVwbG9hZENodW5rOjpuZXcoCisgICAgICAg ICAgICBCb2R5RGF0YVN0cmVhbTo6bmV3KHJlcV9ib2R5KSwKKyAgICAgICAgICAgIGVudi5kYXRh c3RvcmUuY2xvbmUoKSwKKyAgICAgICAgICAgIGRpZ2VzdCwKKyAgICAgICAgICAgIHNpemUsCisg ICAgICAgICAgICBlbmNvZGVkX3NpemUsCisgICAgICAgICkKKyAgICAgICAgLmF3YWl0PzsKIAog ICAgICAgICBlbnYucmVnaXN0ZXJfZml4ZWRfY2h1bmsod2lkLCBkaWdlc3QsIHNpemUsIGNvbXBy ZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKT87CiAgICAgICAgIGxldCBkaWdlc3Rfc3RyID0gaGV4 OjplbmNvZGUoZGlnZXN0KTsKQEAgLTIxNSw3ICsyMjIsNyBAQCBwdWIgY29uc3QgQVBJX01FVEhP RF9VUExPQURfRFlOQU1JQ19DSFVOSzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCiAKIGZu IHVwbG9hZF9keW5hbWljX2NodW5rKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6 IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA QCAtMjMwLDggKzIzNywxNCBAQCBmbiB1cGxvYWRfZHluYW1pY19jaHVuaygKIAogICAgICAgICBs ZXQgZW52OiAmQmFja3VwRW52aXJvbm1lbnQgPSBycGNlbnYuYXNfcmVmKCk7CiAKLSAgICAgICAg bGV0IChkaWdlc3QsIHNpemUsIGNvbXByZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKSA9Ci0gICAg ICAgICAgICBVcGxvYWRDaHVuazo6bmV3KHJlcV9ib2R5LCBlbnYuZGF0YXN0b3JlLmNsb25lKCks IGRpZ2VzdCwgc2l6ZSwgZW5jb2RlZF9zaXplKS5hd2FpdD87CisgICAgICAgIGxldCAoZGlnZXN0 LCBzaXplLCBjb21wcmVzc2VkX3NpemUsIGlzX2R1cGxpY2F0ZSkgPSBVcGxvYWRDaHVuazo6bmV3 KAorICAgICAgICAgICAgQm9keURhdGFTdHJlYW06Om5ldyhyZXFfYm9keSksCisgICAgICAgICAg ICBlbnYuZGF0YXN0b3JlLmNsb25lKCksCisgICAgICAgICAgICBkaWdlc3QsCisgICAgICAgICAg ICBzaXplLAorICAgICAgICAgICAgZW5jb2RlZF9zaXplLAorICAgICAgICApCisgICAgICAgIC5h d2FpdD87CiAKICAgICAgICAgZW52LnJlZ2lzdGVyX2R5bmFtaWNfY2h1bmsod2lkLCBkaWdlc3Qs IHNpemUsIGNvbXByZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKT87CiAgICAgICAgIGxldCBkaWdl c3Rfc3RyID0gaGV4OjplbmNvZGUoZGlnZXN0KTsKQEAgLTI1MCwxMyArMjYzLDEzIEBAIHB1YiBj b25zdCBBUElfTUVUSE9EX1VQTE9BRF9TUEVFRFRFU1Q6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6 bmV3KAogCiBmbiB1cGxvYWRfc3BlZWR0ZXN0KAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVx X2JvZHk6IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIF9wYXJhbTogVmFsdWUs CiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25t ZW50PiwKICkgLT4gQXBpUmVzcG9uc2VGdXR1cmUgewogICAgIGFzeW5jIG1vdmUgewotICAgICAg ICBsZXQgcmVzdWx0ID0gcmVxX2JvZHkKKyAgICAgICAgbGV0IHJlc3VsdCA9IEJvZHlEYXRhU3Ry ZWFtOjpuZXcocmVxX2JvZHkpCiAgICAgICAgICAgICAubWFwX2VycihFcnJvcjo6ZnJvbSkKICAg ICAgICAgICAgIC50cnlfZm9sZCgwLCB8c2l6ZTogdXNpemUsIGNodW5rfCB7CiAgICAgICAgICAg ICAgICAgbGV0IHN1bSA9IHNpemUgKyBjaHVuay5sZW4oKTsKQEAgLTMwMyw3ICszMTYsNyBAQCBw dWIgY29uc3QgQVBJX01FVEhPRF9VUExPQURfQkxPQjogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpu ZXcoCiAKIGZuIHVwbG9hZF9ibG9iKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6 IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA QCAtMzE4LDEzICszMzEsNyBAQCBmbiB1cGxvYWRfYmxvYigKICAgICAgICAgICAgIGJhaWwhKCJ3 cm9uZyBibG9iIGZpbGUgZXh0ZW5zaW9uOiAne30nIiwgZmlsZV9uYW1lKTsKICAgICAgICAgfQog Ci0gICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkKLSAgICAgICAgICAgIC5tYXBfZXJyKEVycm9y Ojpmcm9tKQotICAgICAgICAgICAgLnRyeV9mb2xkKFZlYzo6bmV3KCksIHxtdXQgYWNjLCBjaHVu a3wgewotICAgICAgICAgICAgICAgIGFjYy5leHRlbmRfZnJvbV9zbGljZSgmY2h1bmspOwotICAg ICAgICAgICAgICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQotICAgICAgICAgICAgfSkK LSAgICAgICAgICAgIC5hd2FpdD87CisgICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkuY29sbGVj dCgpLmF3YWl0Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygpOwogCiAgICAgICAgIGlm IGVuY29kZWRfc2l6ZSAhPSBkYXRhLmxlbigpIHsKICAgICAgICAgICAgIGJhaWwhKApAQCAtMzM0 LDcgKzM0MSw3IEBAIGZuIHVwbG9hZF9ibG9iKAogICAgICAgICAgICAgKTsKICAgICAgICAgfQog Ci0gICAgICAgIGVudi5hZGRfYmxvYigmZmlsZV9uYW1lLCBkYXRhKT87CisgICAgICAgIGVudi5h ZGRfYmxvYigmZmlsZV9uYW1lLCBkYXRhLnRvX3ZlYygpKT87CiAKICAgICAgICAgT2soZW52LmZv cm1hdF9yZXNwb25zZShPayhWYWx1ZTo6TnVsbCkpKQogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9h cGkyL2hlbHBlcnMucnMgYi9zcmMvYXBpMi9oZWxwZXJzLnJzCmluZGV4IDNkYzFiZWZjMS4uZjM0 NmIwY2NhIDEwMDY0NAotLS0gYS9zcmMvYXBpMi9oZWxwZXJzLnJzCisrKyBiL3NyYy9hcGkyL2hl bHBlcnMucnMKQEAgLTIsOCArMiw5IEBAIHVzZSBzdGQ6OnBhdGg6OlBhdGhCdWY7CiAKIHVzZSBh bnlob3c6OkVycm9yOwogdXNlIGZ1dHVyZXM6OnN0cmVhbTo6VHJ5U3RyZWFtRXh0OwotdXNlIGh5 cGVyOjp7aGVhZGVyLCBCb2R5LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cit1c2UgaHlwZXI6Onto ZWFkZXIsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKIAordXNlIHByb3htb3hfaHR0cDo6Qm9keTsK IHVzZSBwcm94bW94X3JvdXRlcjo6aHR0cF9iYWlsOwogCiBwdWIgYXN5bmMgZm4gY3JlYXRlX2Rv d25sb2FkX3Jlc3BvbnNlKHBhdGg6IFBhdGhCdWYpIC0+IFJlc3VsdDxSZXNwb25zZTxCb2R5Piwg RXJyb3I+IHsKZGlmZiAtLWdpdCBhL3NyYy9hcGkyL25vZGUvbW9kLnJzIGIvc3JjL2FwaTIvbm9k ZS9tb2QucnMKaW5kZXggNjJiNDQ3MDk2Li5lN2M2MjEzYzEgMTAwNjQ0Ci0tLSBhL3NyYy9hcGky L25vZGUvbW9kLnJzCisrKyBiL3NyYy9hcGkyL25vZGUvbW9kLnJzCkBAIC01LDEwICs1LDExIEBA IHVzZSBzdGQ6Om9zOjp1bml4Ojppbzo6QXNSYXdGZDsKIAogdXNlIGFueWhvdzo6e2JhaWwsIGZv cm1hdF9lcnIsIEVycm9yfTsKIHVzZSBmdXR1cmVzOjpmdXR1cmU6OntGdXR1cmVFeHQsIFRyeUZ1 dHVyZUV4dH07Ci11c2UgaHlwZXI6OmJvZHk6OkJvZHk7Cit1c2UgaHlwZXI6OmJvZHk6OkluY29t aW5nOwogdXNlIGh5cGVyOjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKIHVzZSBoeXBlcjo6dXBncmFk ZTo6VXBncmFkZWQ7CiB1c2UgaHlwZXI6OlJlcXVlc3Q7Cit1c2UgaHlwZXJfdXRpbDo6cnQ6OlRv a2lvSW87CiB1c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKIHVzZSB0b2tpbzo6aW86OntB c3luY0J1ZlJlYWRFeHQsIEJ1ZlJlYWRlcn07CiAKQEAgLTI2Nyw3ICsyNjgsNyBAQCBwdWIgY29u c3QgQVBJX01FVEhPRF9XRUJTT0NLRVQ6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAogCiBm biB1cGdyYWRlX3RvX3dlYnNvY2tldCgKICAgICBwYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6 IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA QCAtMzA2LDcgKzMwNyw3IEBAIGZuIHVwZ3JhZGVfdG9fd2Vic29ja2V0KAogICAgICAgICAgICAg fTsKIAogICAgICAgICAgICAgbGV0IGxvY2FsID0gdG9raW86Om5ldDo6VGNwU3RyZWFtOjpjb25u ZWN0KGZvcm1hdCEoImxvY2FsaG9zdDp7fSIsIHBvcnQpKS5hd2FpdD87Ci0gICAgICAgICAgICB3 cy5zZXJ2ZV9jb25uZWN0aW9uKGNvbm4sIGxvY2FsKS5hd2FpdAorICAgICAgICAgICAgd3Muc2Vy dmVfY29ubmVjdGlvbihUb2tpb0lvOjpuZXcoY29ubiksIGxvY2FsKS5hd2FpdAogICAgICAgICB9 KTsKIAogICAgICAgICBPayhyZXNwb25zZSkKZGlmZiAtLWdpdCBhL3NyYy9hcGkyL25vZGUvdGFz a3MucnMgYi9zcmMvYXBpMi9ub2RlL3Rhc2tzLnJzCmluZGV4IGNhZDc0MDU1OS4uYmQ2NzYzMDY5 IDEwMDY0NAotLS0gYS9zcmMvYXBpMi9ub2RlL3Rhc2tzLnJzCisrKyBiL3NyYy9hcGkyL25vZGUv dGFza3MucnMKQEAgLTMsOSArMywxMCBAQCB1c2Ugc3RkOjppbzo6e0J1ZlJlYWQsIEJ1ZlJlYWRl cn07CiAKIHVzZSBhbnlob3c6OntiYWlsLCBFcnJvcn07CiB1c2UgZnV0dXJlczo6RnV0dXJlRXh0 OwordXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6 UGFydHM7CiB1c2UgaHlwZXI6Omh0dHA6OntoZWFkZXIsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsK LXVzZSBoeXBlcjo6Qm9keTsKK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7CiB1c2Ugc2VyZGVfanNv bjo6e2pzb24sIFZhbHVlfTsKIAogdXNlIHByb3htb3hfYXN5bmM6OnN0cmVhbTo6QXN5bmNSZWFk ZXJTdHJlYW07CkBAIC0zMjEsNyArMzIyLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfUkVBRF9U QVNLX0xPRzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCiApOwogZm4gcmVhZF90YXNrX2xv ZygKICAgICBfcGFydHM6IFBhcnRzLAotICAgIF9yZXFfYm9keTogQm9keSwKKyAgICBfcmVxX2Jv ZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBfaW5mbzogJkFwaU1ldGhvZCwK ICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApAQCAtNDA0LDcgKzQwNSw3IEBA IGZuIHJlYWRfdGFza19sb2coCiAgICAgICAgIE9rKFJlc3BvbnNlOjpidWlsZGVyKCkKICAgICAg ICAgICAgIC5zdGF0dXMoU3RhdHVzQ29kZTo6T0spCiAgICAgICAgICAgICAuaGVhZGVyKGhlYWRl cjo6Q09OVEVOVF9UWVBFLCAiYXBwbGljYXRpb24vanNvbiIpCi0gICAgICAgICAgICAuYm9keShC b2R5Ojpmcm9tKGpzb24udG9fc3RyaW5nKCkpKQorICAgICAgICAgICAgLmJvZHkoanNvbi50b19z dHJpbmcoKS5pbnRvKCkpCiAgICAgICAgICAgICAudW53cmFwKCkpCiAgICAgfQogICAgIC5ib3hl ZCgpCmRpZmYgLS1naXQgYS9zcmMvYXBpMi9yZWFkZXIvbW9kLnJzIGIvc3JjL2FwaTIvcmVhZGVy L21vZC5ycwppbmRleCAxNzEzZjE4MmIuLmI2OTAwMDA4NyAxMDA2NDQKLS0tIGEvc3JjL2FwaTIv cmVhZGVyL21vZC5ycworKysgYi9zcmMvYXBpMi9yZWFkZXIvbW9kLnJzCkBAIC0zLDEyICszLDE1 IEBACiB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9OwogdXNlIGZ1dHVyZXM6 Oio7CiB1c2UgaGV4OjpGcm9tSGV4OwordXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKIHVzZSBo eXBlcjo6aGVhZGVyOjp7c2VsZiwgSGVhZGVyVmFsdWUsIENPTk5FQ1RJT04sIFVQR1JBREV9Owog dXNlIGh5cGVyOjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKLXVzZSBoeXBlcjo6e0JvZHksIFJlcXVl c3QsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKK3VzZSBoeXBlcjo6e1JlcXVlc3QsIFJlc3BvbnNl LCBTdGF0dXNDb2RlfTsKK3VzZSBoeXBlcl91dGlsOjpzZXJ2aWNlOjpUb3dlclRvSHlwZXJTZXJ2 aWNlOwogdXNlIHNlcmRlOjpEZXNlcmlhbGl6ZTsKIHVzZSBzZXJkZV9qc29uOjpWYWx1ZTsKIAor dXNlIHByb3htb3hfaHR0cDo6Qm9keTsKIHVzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjp7SDJTZXJ2 aWNlLCBXb3JrZXJUYXNrfTsKIHVzZSBwcm94bW94X3JvdXRlcjo6ewogICAgIGh0dHBfZXJyLCBs aXN0X3N1YmRpcnNfYXBpX21ldGhvZCwgQXBpSGFuZGxlciwgQXBpTWV0aG9kLCBBcGlSZXNwb25z ZUZ1dHVyZSwgUGVybWlzc2lvbiwKQEAgLTY4LDcgKzcxLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRI T0RfVVBHUkFERV9CQUNLVVA6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAogCiBmbiB1cGdy YWRlX3RvX2JhY2t1cF9yZWFkZXJfcHJvdG9jb2woCiAgICAgcGFydHM6IFBhcnRzLAotICAgIHJl cV9ib2R5OiBCb2R5LAorICAgIHJlcV9ib2R5OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUs CiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25t ZW50PiwKQEAgLTE5MCw3ICsxOTMsNyBAQCBmbiB1cGdyYWRlX3RvX2JhY2t1cF9yZWFkZXJfcHJv dG9jb2woCiAgICAgICAgICAgICAgICAgICAgIGh0dHAuaW5pdGlhbF9jb25uZWN0aW9uX3dpbmRv d19zaXplKHdpbmRvd19zaXplKTsKICAgICAgICAgICAgICAgICAgICAgaHR0cC5tYXhfZnJhbWVf c2l6ZSg0ICogMTAyNCAqIDEwMjQpOwogCi0gICAgICAgICAgICAgICAgICAgIGh0dHAuc2VydmVf Y29ubmVjdGlvbihjb25uLCBzZXJ2aWNlKQorICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZl X2Nvbm5lY3Rpb24oY29ubiwgVG93ZXJUb0h5cGVyU2VydmljZTo6bmV3KHNlcnZpY2UpKQogICAg ICAgICAgICAgICAgICAgICAgICAgLm1hcF9lcnIoRXJyb3I6OmZyb20pCiAgICAgICAgICAgICAg ICAgICAgICAgICAuYXdhaXQKICAgICAgICAgICAgICAgICB9OwpAQCAtMjQ0LDcgKzI0Nyw3IEBA IHB1YiBjb25zdCBBUElfTUVUSE9EX0RPV05MT0FEX0ZJTEU6IEFwaU1ldGhvZCA9IEFwaU1ldGhv ZDo6bmV3KAogCiBmbiBkb3dubG9hZF9maWxlKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3Jl cV9ib2R5OiBCb2R5LAorICAgIF9yZXFfYm9keTogSW5jb21pbmcsCiAgICAgcGFyYW06IFZhbHVl LAogICAgIF9pbmZvOiAmQXBpTWV0aG9kLAogICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9u bWVudD4sCkBAIC0zMDAsNyArMzAzLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfRE9XTkxPQURf Q0hVTks6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAogCiBmbiBkb3dubG9hZF9jaHVuaygK ICAgICBfcGFydHM6IFBhcnRzLAotICAgIF9yZXFfYm9keTogQm9keSwKKyAgICBfcmVxX2JvZHk6 IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBfaW5mbzogJkFwaU1ldGhvZCwKICAg ICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApAQCAtMzQ4LDcgKzM1MSw3IEBAIGZu IGRvd25sb2FkX2NodW5rKAogLyogdGhpcyBpcyB0b28gc2xvdwogZm4gZG93bmxvYWRfY2h1bmtf b2xkKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3JlcV9ib2R5OiBCb2R5LAorICAgIF9yZXFf Ym9keTogSW5jb21pbmcsCiAgICAgcGFyYW06IFZhbHVlLAogICAgIF9pbmZvOiAmQXBpTWV0aG9k LAogICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9ubWVudD4sCkBAIC0zOTMsNyArMzk2LDcg QEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfU1BFRURURVNUOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6 Om5ldygKIAogZm4gc3BlZWR0ZXN0KAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3JlcV9ib2R5 OiBCb2R5LAorICAgIF9yZXFfYm9keTogSW5jb21pbmcsCiAgICAgX3BhcmFtOiBWYWx1ZSwKICAg ICBfaW5mbzogJkFwaU1ldGhvZCwKICAgICBfcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50 PiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtYXBpLnJzIGIvc3JjL2Jpbi9w cm94bW94LWJhY2t1cC1hcGkucnMKaW5kZXggN2I0MTg3NTUwLi40MzhmZDlkN2UgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtYXBpLnJzCisrKyBiL3NyYy9iaW4vcHJveG1veC1i YWNrdXAtYXBpLnJzCkBAIC0xLDEyICsxLDE1IEBACiB1c2Ugc3RkOjpmdXR1cmU6OkZ1dHVyZTsK IHVzZSBzdGQ6OnBpbjo6e3BpbiwgUGlufTsKK3VzZSBzdGQ6OnN5bmM6OkFyYzsKIAogdXNlIGFu eWhvdzo6e2JhaWwsIEVycm9yfTsKLXVzZSBmdXR1cmVzOjoqOwogdXNlIGh5cGVyOjpodHRwOjpS ZXNwb25zZTsKLXVzZSBoeXBlcjo6e0JvZHksIFN0YXR1c0NvZGV9OwordXNlIGh5cGVyOjpTdGF0 dXNDb2RlOwordXNlIGh5cGVyX3V0aWw6OnNlcnZlcjo6Z3JhY2VmdWw6OkdyYWNlZnVsU2h1dGRv d247Cit1c2UgdG9raW86Om5ldDo6VGNwTGlzdGVuZXI7CiB1c2UgdHJhY2luZzo6bGV2ZWxfZmls dGVyczo6TGV2ZWxGaWx0ZXI7CiAKK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7CiB1c2UgcHJveG1v eF9sYW5nOjp0cnlfYmxvY2s7CiB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6e0FwaUNvbmZpZywg UmVzdFNlcnZlcn07CiB1c2UgcHJveG1veF9yb3V0ZXI6OlJwY0Vudmlyb25tZW50VHlwZTsKQEAg LTM0LDcgKzM3LDcgQEAgZm4gZ2V0X2luZGV4KCkgLT4gUGluPEJveDxkeW4gRnV0dXJlPE91dHB1 dCA9IFJlc3BvbnNlPEJvZHk+PiArIFNlbmQ+PiB7CiAgICAgICAgIFJlc3BvbnNlOjpidWlsZGVy KCkKICAgICAgICAgICAgIC5zdGF0dXMoU3RhdHVzQ29kZTo6T0spCiAgICAgICAgICAgICAuaGVh ZGVyKGh5cGVyOjpoZWFkZXI6OkNPTlRFTlRfVFlQRSwgInRleHQvaHRtbCIpCi0gICAgICAgICAg ICAuYm9keShpbmRleC5pbnRvKCkpCisgICAgICAgICAgICAuYm9keShpbmRleC50b19zdHJpbmco KS5pbnRvKCkpCiAgICAgICAgICAgICAudW53cmFwKCkKICAgICB9KQogfQpAQCAtMTA4LDE3ICsx MTEsMjggQEAgYXN5bmMgZm4gcnVuKCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewogICAgIC8vIGh0 dHAgc2VydmVyIGZ1dHVyZToKICAgICBsZXQgc2VydmVyID0gcHJveG1veF9kYWVtb246OnNlcnZl cjo6Y3JlYXRlX2RhZW1vbigKICAgICAgICAgKFsxMjcsIDAsIDAsIDFdLCA4MikuaW50bygpLAot ICAgICAgICBtb3ZlIHxsaXN0ZW5lcnwgewotICAgICAgICAgICAgbGV0IGluY29taW5nID0gaHlw ZXI6OnNlcnZlcjo6Y29ubjo6QWRkckluY29taW5nOjpmcm9tX2xpc3RlbmVyKGxpc3RlbmVyKT87 Ci0KLSAgICAgICAgICAgIE9rKGFzeW5jIHsKKyAgICAgICAgbW92ZSB8bGlzdGVuZXI6IFRjcExp c3RlbmVyfCB7CisgICAgICAgICAgICBPayhhc3luYyBtb3ZlIHsKICAgICAgICAgICAgICAgICBw cm94bW94X3N5c3RlbWQ6Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/Owot Ci0gICAgICAgICAgICAgICAgaHlwZXI6OlNlcnZlcjo6YnVpbGRlcihpbmNvbWluZykKLSAgICAg ICAgICAgICAgICAgICAgLnNlcnZlKHJlc3Rfc2VydmVyKQotICAgICAgICAgICAgICAgICAgICAu d2l0aF9ncmFjZWZ1bF9zaHV0ZG93bihwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkp Ci0gICAgICAgICAgICAgICAgICAgIC5tYXBfZXJyKEVycm9yOjpmcm9tKQotICAgICAgICAgICAg ICAgICAgICAuYXdhaXQKKyAgICAgICAgICAgICAgICBsZXQgZ3JhY2VmdWwgPSBBcmM6Om5ldyhH cmFjZWZ1bFNodXRkb3duOjpuZXcoKSk7CisgICAgICAgICAgICAgICAgbG9vcCB7CisgICAgICAg ICAgICAgICAgICAgIGxldCBncmFjZWZ1bDIgPSBBcmM6OmNsb25lKCZncmFjZWZ1bCk7CisgICAg ICAgICAgICAgICAgICAgIHRva2lvOjpzZWxlY3QhIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IGluY29taW5nID0gbGlzdGVuZXIuYWNjZXB0KCkgPT4geworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxldCAoY29ubiwgXykgPSBpbmNvbWluZz87CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGV0IGFwaV9zZXJ2aWNlID0gcmVzdF9zZXJ2ZXIuYXBpX3NlcnZpY2UoJmNvbm4pPzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tpbzo6c3Bhd24oYXN5bmMgbW92ZSB7IGFw aV9zZXJ2aWNlLnNlcnZlKGNvbm4sIFNvbWUoZ3JhY2VmdWwyKSkuYXdhaXQgfSk7CisgICAgICAg ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgX3NodXRkb3duID0g cHJveG1veF9kYWVtb246OnNodXRkb3duX2Z1dHVyZSgpID0+IHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgbGV0IFNv bWUoc2h1dGRvd24pID0gQXJjOjppbnRvX2lubmVyKGdyYWNlZnVsKSB7CisgICAgICAgICAgICAg ICAgICAgIGxvZzo6aW5mbyEoInNodXR0aW5nIGRvd24uLiIpOworICAgICAgICAgICAgICAgICAg ICBzaHV0ZG93bi5zaHV0ZG93bigpLmF3YWl0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIE9rKCgpKQogICAgICAgICAgICAgfSkKICAgICAgICAgfSwKICAgICAgICAgU29tZShw YnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX0FQSV9QSURfRk4pLApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycyBiL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtcHJv eHkucnMKaW5kZXggYzlhNjAzMmU2Li44ZWU1MzcyMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHJv eG1veC1iYWNrdXAtcHJveHkucnMKKysrIGIvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5y cwpAQCAtNyw3ICs3LDggQEAgdXNlIGZ1dHVyZXM6Oio7CiB1c2UgaHlwZXI6OmhlYWRlcjsKIHVz ZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7CiB1c2UgaHlwZXI6Omh0dHA6OlJlc3BvbnNl OwotdXNlIGh5cGVyOjp7Qm9keSwgU3RhdHVzQ29kZX07Cit1c2UgaHlwZXI6OlN0YXR1c0NvZGU7 Cit1c2UgaHlwZXJfdXRpbDo6c2VydmVyOjpncmFjZWZ1bDo6R3JhY2VmdWxTaHV0ZG93bjsKIHVz ZSB0cmFjaW5nOjpsZXZlbF9maWx0ZXJzOjpMZXZlbEZpbHRlcjsKIHVzZSB0cmFjaW5nOjp7aW5m bywgd2Fybn07CiB1c2UgdXJsOjpmb3JtX3VybGVuY29kZWQ7CkBAIC0xNSw2ICsxNiw3IEBAIHVz ZSB1cmw6OmZvcm1fdXJsZW5jb2RlZDsKIHVzZSBvcGVuc3NsOjpzc2w6OlNzbEFjY2VwdG9yOwog dXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07CiAKK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7 CiB1c2UgcHJveG1veF9sYW5nOjp0cnlfYmxvY2s7CiB1c2UgcHJveG1veF9yb3V0ZXI6OntScGNF bnZpcm9ubWVudCwgUnBjRW52aXJvbm1lbnRUeXBlfTsKIHVzZSBwcm94bW94X3N5czo6ZnM6OkNy ZWF0ZU9wdGlvbnM7CkBAIC0yODksMjcgKzI5MSw3MSBAQCBhc3luYyBmbiBydW4oKSAtPiBSZXN1 bHQ8KCksIEVycm9yPiB7CiAgICAgbGV0IHNlcnZlciA9IHByb3htb3hfZGFlbW9uOjpzZXJ2ZXI6 OmNyZWF0ZV9kYWVtb24oCiAgICAgICAgIChbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIDgwMDcp LmludG8oKSwKICAgICAgICAgbW92ZSB8bGlzdGVuZXJ8IHsKLSAgICAgICAgICAgIGxldCAoc2Vj dXJlX2Nvbm5lY3Rpb25zLCBpbnNlY3VyZV9jb25uZWN0aW9ucykgPQorICAgICAgICAgICAgbGV0 IChtdXQgc2VjdXJlX2Nvbm5lY3Rpb25zLCBtdXQgaW5zZWN1cmVfY29ubmVjdGlvbnMpID0KICAg ICAgICAgICAgICAgICBjb25uZWN0aW9ucy5hY2NlcHRfdGxzX29wdGlvbmFsKGxpc3RlbmVyLCBh Y2NlcHRvcik7CiAKICAgICAgICAgICAgIE9rKGFzeW5jIHsKICAgICAgICAgICAgICAgICBwcm94 bW94X3N5c3RlbWQ6Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/OwogCi0g ICAgICAgICAgICAgICAgbGV0IHNlY3VyZV9zZXJ2ZXIgPSBoeXBlcjo6U2VydmVyOjpidWlsZGVy KHNlY3VyZV9jb25uZWN0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgLnNlcnZlKHJlc3Rfc2Vy dmVyKQotICAgICAgICAgICAgICAgICAgICAud2l0aF9ncmFjZWZ1bF9zaHV0ZG93bihwcm94bW94 X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkpCi0gICAgICAgICAgICAgICAgICAgIC5tYXBfZXJy KEVycm9yOjpmcm9tKTsKKyAgICAgICAgICAgICAgICBsZXQgc2VjdXJlX3NlcnZlciA9IGFzeW5j IG1vdmUgeworICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhY2VmdWwgPSBBcmM6Om5ldyhHcmFj ZWZ1bFNodXRkb3duOjpuZXcoKSk7CisgICAgICAgICAgICAgICAgICAgIGxvb3AgeworICAgICAg ICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsMiA9IEFyYzo6Y2xvbmUoJmdyYWNlZnVsKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHRva2lvOjpzZWxlY3QhIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTb21lKGNvbm4pID0gc2VjdXJlX2Nvbm5lY3Rpb25zLm5leHQoKSA9PiB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbm4geworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT2soY29ubikgPT4geworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcGlfc2VydmljZSA9IHJlc3Rfc2VydmVyLmFw aV9zZXJ2aWNlKCZjb25uKT87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdG9raW86OnNwYXduKGFzeW5jIG1vdmUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcGlfc2VydmljZS5zZXJ2ZShjb25uLCBTb21lKGdyYWNlZnVsMikp LmF3YWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRXJyKGVycikgPT4geyBsb2c6Ondhcm4hKCJGYWlsZWQgdG8gYWNjZXB0 IGluc2VjdXJlIGNvbm5lY3Rpb246IHtlcnI6P30iKTsgfQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfc2h1dGRvd24gPSBwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0 dXJlKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoc2h1dGRv d24pID0gQXJjOjppbnRvX2lubmVyKGdyYWNlZnVsKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBzaHV0ZG93bi5zaHV0ZG93bigpLmF3YWl0CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgT2s6OjwoKSwgRXJyb3I+KCgpKQorICAgICAgICAgICAgICAgIH07CiAK LSAgICAgICAgICAgICAgICBsZXQgaW5zZWN1cmVfc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6YnVp bGRlcihpbnNlY3VyZV9jb25uZWN0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgLnNlcnZlKHJl ZGlyZWN0b3IpCi0gICAgICAgICAgICAgICAgICAgIC53aXRoX2dyYWNlZnVsX3NodXRkb3duKHBy b3htb3hfZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSkKLSAgICAgICAgICAgICAgICAgICAgLm1h cF9lcnIoRXJyb3I6OmZyb20pOworICAgICAgICAgICAgICAgIGxldCBpbnNlY3VyZV9zZXJ2ZXIg PSBhc3luYyBtb3ZlIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsID0gQXJjOjpu ZXcoR3JhY2VmdWxTaHV0ZG93bjo6bmV3KCkpOworICAgICAgICAgICAgICAgICAgICBsb29wIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bDIgPSBBcmM6OmNsb25lKCZncmFj ZWZ1bCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tpbzo6c2VsZWN0ISB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU29tZShjb25uKSA9IGluc2VjdXJlX2Nvbm5lY3Rpb25zLm5l eHQoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbm4gewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2soY29ubikgPT4geworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWRpcmVjdF9zZXJ2aWNlID0g cmVkaXJlY3Rvci5yZWRpcmVjdF9zZXJ2aWNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdG9raW86OnNwYXduKGFzeW5jIG1vdmUgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdF9zZXJ2aWNlLnNlcnZlKGNvbm4s IFNvbWUoZ3JhY2VmdWwyKSkuYXdhaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7IGxvZzo6d2FybiEo IkZhaWxlZCB0byBhY2NlcHQgaW5zZWN1cmUgY29ubmVjdGlvbjoge2Vycjo/fSIpOyB9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zaHV0ZG93biA9IHByb3htb3hfZGFl bW9uOjpzaHV0ZG93bl9mdXR1cmUoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp ZiBsZXQgU29tZShzaHV0ZG93bikgPSBBcmM6OmludG9faW5uZXIoZ3JhY2VmdWwpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHNodXRkb3duLnNodXRkb3duKCkuYXdhaXQKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBPazo6PCgpLCBFcnJvcj4oKCkpCisgICAg ICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgICAgIGxldCAoc2VjdXJlX3JlcywgaW5zZWN1 cmVfcmVzKSA9CiAgICAgICAgICAgICAgICAgICAgIHRyeV9qb2luISh0b2tpbzo6c3Bhd24oc2Vj dXJlX3NlcnZlciksIHRva2lvOjpzcGF3bihpbnNlY3VyZV9zZXJ2ZXIpKQogICAgICAgICAgICAg ICAgICAgICAgICAgLmNvbnRleHQoImZhaWxlZCB0byBjb21wbGV0ZSBSRVNUIHNlcnZlciB0YXNr Iik/OwogCi0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbc2VjdXJlX3JlcywgaW5zZWN1 cmVfcmVzXTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0czogW1Jlc3VsdDwoKSwgRXJyb3I+ OyAyXSA9IFtzZWN1cmVfcmVzLCBpbnNlY3VyZV9yZXNdOwogCiAgICAgICAgICAgICAgICAgaWYg cmVzdWx0cy5pdGVyKCkuYW55KFJlc3VsdDo6aXNfZXJyKSB7CiAgICAgICAgICAgICAgICAgICAg IGxldCBjYXRfZXJyb3JzID0gcmVzdWx0cwpAQCAtMzIxLDcgKzM2Nyw3IEBAIGFzeW5jIGZuIHJ1 bigpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKICAgICAgICAgICAgICAgICAgICAgYmFpbCEoY2F0 X2Vycm9ycyk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgT2soKCkpCisg ICAgICAgICAgICAgICAgT2s6OjwoKSwgRXJyb3I+KCgpKQogICAgICAgICAgICAgfSkKICAgICAg ICAgfSwKICAgICAgICAgU29tZShwYnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX1BST1hZX1BJ RF9GTiksCi0tIAoyLjM5LjUKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMucHJveG1v eC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v cGJzLWRldmVsCg==