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 486451FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 15:37:09 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 385161BA4C; Wed, 2 Apr 2025 15:36:58 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 02 Apr 2025 15:36:50 +0200 Message-Id: <D8W6Z2CTLGTA.9MRQMOW9SZK4@proxmox.com> To: "Proxmox Backup Server development discussion" <pbs-devel@lists.proxmox.com> From: "Max Carrara" <m.carrara@proxmox.com> X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20250326152327.332179-1-f.gruenbichler@proxmox.com> <20250326152327.332179-23-f.gruenbichler@proxmox.com> In-Reply-To: <20250326152327.332179-23-f.gruenbichler@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.027 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: Re: [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> T24gV2VkIE1hciAyNiwgMjAyNSBhdCA0OjIzIFBNIENFVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3 cm90ZToKPiBzaW1pbGFyIHRvIHRoZSBvdGhlciBjaGFuZ2VzOgo+IC0gQm9keSB0byBJbmNvbWlu ZyBvciBwcm94bW94LWh0dHAncyBCb2R5Cj4gLSB1c2UgYWRhcHRlcnMgYmV0d2VlbiBoeXBlcjwt PnRvd2VyIGFuZCBoeXBlcjwtPnRva2lvCj4gLSBhZGFwdCB0byBuZXcgcHJveG1veC1yZXN0LXNl cnZlciBpbnRlcmZhY2VzCj4KPiBTaWduZWQtb2ZmLWJ5OiBGYWJpYW4gR3LDvG5iaWNobGVyIDxm LmdydWVuYmljaGxlckBwcm94bW94LmNvbT4KPiAtLS0KPiAgcHJveG1veC1iYWNrdXAtY2xpZW50 L0NhcmdvLnRvbWwgICAgICB8ICAxICsKPiAgcHJveG1veC1iYWNrdXAtY2xpZW50L3NyYy9zbmFw c2hvdC5ycyB8ICAyICstCj4gIHNyYy9hY21lL2NsaWVudC5ycyAgICAgICAgICAgICAgICAgICAg fCAgNiArKy0KPiAgc3JjL2FjbWUvcGx1Z2luLnJzICAgICAgICAgICAgICAgICAgICB8IDYyICsr KysrKysrKysrKysrKystLS0tLS0tLQo+ICBzcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgICAg ICAgICAgIHwgMjAgKysrLS0tLS0KPiAgc3JjL2FwaTIvYmFja3VwL2Vudmlyb25tZW50LnJzICAg ICAgICB8ICAzICstCj4gIHNyYy9hcGkyL2JhY2t1cC9tb2QucnMgICAgICAgICAgICAgICAgfCAx MCArKy0tCj4gIHNyYy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1bmsucnMgICAgICAgfCA0NyArKysr KysrKysrLS0tLS0tLS0KPiAgc3JjL2FwaTIvaGVscGVycy5ycyAgICAgICAgICAgICAgICAgICB8 ICAzICstCj4gIHNyYy9hcGkyL25vZGUvbW9kLnJzICAgICAgICAgICAgICAgICAgfCAgNyArLS0K PiAgc3JjL2FwaTIvbm9kZS90YXNrcy5ycyAgICAgICAgICAgICAgICB8ICA3ICstLQo+ICBzcmMv YXBpMi9yZWFkZXIvbW9kLnJzICAgICAgICAgICAgICAgIHwgMTcgKysrKy0tLQo+ICBzcmMvYmlu L3Byb3htb3gtYmFja3VwLWFwaS5ycyAgICAgICAgIHwgNDAgKysrKysrKysrKy0tLS0tCj4gIHNy Yy9iaW4vcHJveG1veC1iYWNrdXAtcHJveHkucnMgICAgICAgfCA3MCArKysrKysrKysrKysrKysr KysrKysrLS0tLS0KPiAgMTQgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDk4IGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtYmFja3VwLWNsaWVudC9DYXJnby50 b21sIGIvcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRvbWwKPiBpbmRleCBhOTFhNDkwOGIu LjVmMDE0MGU3OCAxMDA2NDQKPiAtLS0gYS9wcm94bW94LWJhY2t1cC1jbGllbnQvQ2FyZ28udG9t bAo+ICsrKyBiL3Byb3htb3gtYmFja3VwLWNsaWVudC9DYXJnby50b21sCj4gQEAgLTI0LDYgKzI0 LDcgQEAgcHhhci53b3Jrc3BhY2UgPSB0cnVlCj4gIAo+ICBwcm94bW94LWFzeW5jLndvcmtzcGFj ZSA9IHRydWUKPiAgcHJveG1veC1odW1hbi1ieXRlLndvcmtzcGFjZSA9IHRydWUKPiArcHJveG1v eC1odHRwID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJlcyA9IFsgImJvZHkiIF0gfQo+ICBw cm94bW94LWxvZy53b3Jrc3BhY2UgPSB0cnVlCj4gIHByb3htb3gtaW8ud29ya3NwYWNlID0gdHJ1 ZQo+ICBwcm94bW94LXJvdXRlciA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgZmVhdHVyZXMgPSBbICJj bGkiIF0gfQo+IGRpZmYgLS1naXQgYS9wcm94bW94LWJhY2t1cC1jbGllbnQvc3JjL3NuYXBzaG90 LnJzIGIvcHJveG1veC1iYWNrdXAtY2xpZW50L3NyYy9zbmFwc2hvdC5ycwo+IGluZGV4IGYxOTVj MjNiNy4uZjE1NjlkYjJlIDEwMDY0NAo+IC0tLSBhL3Byb3htb3gtYmFja3VwLWNsaWVudC9zcmMv c25hcHNob3QucnMKPiArKysgYi9wcm94bW94LWJhY2t1cC1jbGllbnQvc3JjL3NuYXBzaG90LnJz Cj4gQEAgLTI3MSw3ICsyNzEsNyBAQCBhc3luYyBmbiB1cGxvYWRfbG9nKHBhcmFtOiBWYWx1ZSkg LT4gUmVzdWx0PFZhbHVlLCBFcnJvcj4gewo+ICAgICAgKTsKPiAgCj4gICAgICBsZXQgYXJncyA9 IHNuYXBzaG90X2FyZ3MoJmJhY2t1cF9ucywgJnNuYXBzaG90KT87Cj4gLSAgICBsZXQgYm9keSA9 IGh5cGVyOjpCb2R5Ojpmcm9tKHJhd19kYXRhKTsKPiArICAgIGxldCBib2R5ID0gcHJveG1veF9o dHRwOjpCb2R5Ojpmcm9tKHJhd19kYXRhKTsKPiAgCj4gICAgICBjbGllbnQKPiAgICAgICAgICAu dXBsb2FkKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCBib2R5LCAmcGF0aCwgU29tZShhcmdz KSkKPiBkaWZmIC0tZ2l0IGEvc3JjL2FjbWUvY2xpZW50LnJzIGIvc3JjL2FjbWUvY2xpZW50LnJz Cj4gaW5kZXggOTdmNjI4ZTM3Li40ZTU1MzkzZTQgMTAwNjQ0Cj4gLS0tIGEvc3JjL2FjbWUvY2xp ZW50LnJzCj4gKysrIGIvc3JjL2FjbWUvY2xpZW50LnJzCj4gQEAgLTYsOCArNiwxMCBAQCB1c2Ug c3RkOjpvczo6dW5peDo6ZnM6Ok9wZW5PcHRpb25zRXh0Owo+ICAKPiAgdXNlIGFueWhvdzo6e2Jh aWwsIGZvcm1hdF9lcnJ9Owo+ICB1c2UgYnl0ZXM6OkJ5dGVzOwo+IC11c2UgaHlwZXI6Ontib2R5 OjpIdHRwQm9keSwgQm9keSwgUmVxdWVzdH07Cj4gK3VzZSBodHRwX2JvZHlfdXRpbDo6Qm9keUV4 dDsKPiArdXNlIGh5cGVyOjpSZXF1ZXN0Owo+ICB1c2Ugbml4OjpzeXM6OnN0YXQ6Ok1vZGU7Cj4g K3VzZSBwcm94bW94X2h0dHA6OkJvZHk7Cj4gIHVzZSBzZXJkZTo6e0Rlc2VyaWFsaXplLCBTZXJp YWxpemV9Owo+ICAKPiAgdXNlIHByb3htb3hfYWNtZTo6YWNjb3VudDo6QWNjb3VudENyZWF0b3I7 Cj4gQEAgLTYxOCw3ICs2MjAsNyBAQCBpbXBsIEFjbWVDbGllbnQgewo+ICAgICAgICAgICAgICBy ZXNwb25zZS5qc29uKCk/LAo+ICAgICAgICAgICkpOwo+ICAKPiAtICAgICAgICBPaygoZGlyZWN0 b3J5LmFzX3JlZigpLnVud3JhcCgpLCBub25jZS5hc19kZXJlZigpKSkKPiArICAgICAgICBPaygo ZGlyZWN0b3J5LmFzX211dCgpLnVud3JhcCgpLCBub25jZS5hc19kZXJlZigpKSkKPiAgICAgIH0K PiAgCj4gICAgICAvLy8gTGlrZSBgZ2V0X2RpcmVjdG9yeWAsIGJ1dCBpZiB0aGUgZGlyZWN0b3J5 IHByb3ZpZGVzIG5vIG5vbmNlLCBhbHNvIHBlcmZvcm1zIGEgYEhFQURgCj4gZGlmZiAtLWdpdCBh L3NyYy9hY21lL3BsdWdpbi5ycyBiL3NyYy9hY21lL3BsdWdpbi5ycwo+IGluZGV4IGMzM2NmZTQw NS4uOTE0MTY3MGU3IDEwMDY0NAo+IC0tLSBhL3NyYy9hY21lL3BsdWdpbi5ycwo+ICsrKyBiL3Ny Yy9hY21lL3BsdWdpbi5ycwo+IEBAIC0xLDEyICsxLDIxIEBACj4gIHVzZSBzdGQ6OmZ1dHVyZTo6 RnV0dXJlOwo+ICt1c2Ugc3RkOjpuZXQ6OntJcEFkZHIsIFNvY2tldEFkZHJ9Owo+ICB1c2Ugc3Rk OjpwaW46OlBpbjsKPiAgdXNlIHN0ZDo6cHJvY2Vzczo6U3RkaW87Cj4gIHVzZSBzdGQ6OnN5bmM6 OkFyYzsKPiAgdXNlIHN0ZDo6dGltZTo6RHVyYXRpb247Cj4gIAo+ICB1c2UgYW55aG93Ojp7YmFp bCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+IC11c2UgaHlwZXI6OntCb2R5LCBSZXF1ZXN0LCBSZXNw b25zZX07Cj4gK3VzZSBieXRlczo6Qnl0ZXM7Cj4gK3VzZSBmdXR1cmVzOjpUcnlGdXR1cmVFeHQ7 Cj4gK3VzZSBodHRwX2JvZHlfdXRpbDo6RnVsbDsKPiArdXNlIGh5cGVyOjpib2R5OjpJbmNvbWlu ZzsKPiArdXNlIGh5cGVyOjpzZXJ2ZXI6OmNvbm46Omh0dHAxOwo+ICt1c2UgaHlwZXI6OnNlcnZp Y2U6OnNlcnZpY2VfZm47Cj4gK3VzZSBoeXBlcjo6e1JlcXVlc3QsIFJlc3BvbnNlfTsKPiArdXNl IGh5cGVyX3V0aWw6OnJ0OjpUb2tpb0lvOwo+ICB1c2UgdG9raW86OmlvOjp7QXN5bmNCdWZSZWFk RXh0LCBBc3luY1JlYWQsIEFzeW5jV3JpdGVFeHQsIEJ1ZlJlYWRlcn07Cj4gK3VzZSB0b2tpbzo6 bmV0OjpUY3BMaXN0ZW5lcjsKPiAgdXNlIHRva2lvOjpwcm9jZXNzOjpDb21tYW5kOwo+ICAKPiAg dXNlIHByb3htb3hfYWNtZTo6e0F1dGhvcml6YXRpb24sIENoYWxsZW5nZX07Cj4gQEAgLTIzNSwx MCArMjQ0LDEwIEBAIGltcGwgU3RhbmRhbG9uZVNlcnZlciB7Cj4gIH0KPiAgCj4gIGFzeW5jIGZu IHN0YW5kYWxvbmVfcmVzcG9uZCgKPiAtICAgIHJlcTogUmVxdWVzdDxCb2R5PiwKPiArICAgIHJl cTogUmVxdWVzdDxJbmNvbWluZz4sCj4gICAgICBwYXRoOiBBcmM8U3RyaW5nPiwKPiAgICAgIGtl eV9hdXRoOiBBcmM8U3RyaW5nPiwKPiAtKSAtPiBSZXN1bHQ8UmVzcG9uc2U8Qm9keT4sIGh5cGVy OjpFcnJvcj4gewo+ICspIC0+IFJlc3VsdDxSZXNwb25zZTxGdWxsPEJ5dGVzPj4sIGh5cGVyOjpF cnJvcj4gewo+ICAgICAgaWYgcmVxLm1ldGhvZCgpID09IGh5cGVyOjpNZXRob2Q6OkdFVCAmJiBy ZXEudXJpKCkucGF0aCgpID09IHBhdGguYXNfc3RyKCkgewo+ICAgICAgICAgIE9rKFJlc3BvbnNl OjpidWlsZGVyKCkKPiAgICAgICAgICAgICAgLnN0YXR1cyhoeXBlcjo6aHR0cDo6U3RhdHVzQ29k ZTo6T0spCj4gQEAgLTI2MCw5ICsyNjksNiBAQCBpbXBsIEFjbWVQbHVnaW4gZm9yIFN0YW5kYWxv bmVTZXJ2ZXIgewo+ICAgICAgICAgIF9kb21haW46ICYnZCBBY21lRG9tYWluLAo+ICAgICAgICAg IF90YXNrOiBBcmM8V29ya2VyVGFzaz4sCj4gICAgICApIC0+IFBpbjxCb3g8ZHluIEZ1dHVyZTxP dXRwdXQgPSBSZXN1bHQ8JidjIHN0ciwgRXJyb3I+PiArIFNlbmQgKyAnZnV0Pj4gewo+IC0gICAg ICAgIHVzZSBoeXBlcjo6c2VydmVyOjpjb25uOjpBZGRySW5jb21pbmc7Cj4gLSAgICAgICAgdXNl IGh5cGVyOjpzZXJ2aWNlOjp7bWFrZV9zZXJ2aWNlX2ZuLCBzZXJ2aWNlX2ZufTsKPiAtCj4gICAg ICAgICAgQm94OjpwaW4oYXN5bmMgbW92ZSB7Cj4gICAgICAgICAgICAgIHNlbGYuc3RvcCgpOwo+ ICAKPiBAQCAtMjczLDIyICsyNzksNDAgQEAgaW1wbCBBY21lUGx1Z2luIGZvciBTdGFuZGFsb25l U2VydmVyIHsKPiAgICAgICAgICAgICAgbGV0IGtleV9hdXRoID0gQXJjOjpuZXcoY2xpZW50Lmtl eV9hdXRob3JpemF0aW9uKHRva2VuKT8pOwo+ICAgICAgICAgICAgICBsZXQgcGF0aCA9IEFyYzo6 bmV3KGZvcm1hdCEoIi8ud2VsbC1rbm93bi9hY21lLWNoYWxsZW5nZS97fSIsIHRva2VuKSk7Cj4g IAo+IC0gICAgICAgICAgICBsZXQgc2VydmljZSA9IG1ha2Vfc2VydmljZV9mbihtb3ZlIHxffCB7 Cj4gLSAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IEFyYzo6Y2xvbmUoJnBhdGgpOwo+IC0gICAg ICAgICAgICAgICAgbGV0IGtleV9hdXRoID0gQXJjOjpjbG9uZSgma2V5X2F1dGgpOwo+IC0gICAg ICAgICAgICAgICAgYXN5bmMgbW92ZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgT2s6OjxfLCBo eXBlcjo6RXJyb3I+KHNlcnZpY2VfZm4obW92ZSB8cmVxdWVzdHwgewo+IC0gICAgICAgICAgICAg ICAgICAgICAgICBzdGFuZGFsb25lX3Jlc3BvbmQocmVxdWVzdCwgQXJjOjpjbG9uZSgmcGF0aCks IEFyYzo6Y2xvbmUoJmtleV9hdXRoKSkKPiAtICAgICAgICAgICAgICAgICAgICB9KSkKPiAtICAg ICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfSk7Cj4gLQo+ICAgICAgICAgICAgICAvLyBg Wzo6XTo4MGAgZmlyc3QsIHRoZW4gYCo6ODBgCj4gLSAgICAgICAgICAgIGxldCBpbmNvbWluZyA9 IEFkZHJJbmNvbWluZzo6YmluZCgmKChbMHUxNjsgOF0sIDgwKS5pbnRvKCkpKQo+IC0gICAgICAg ICAgICAgICAgLm9yX2Vsc2UofF98IEFkZHJJbmNvbWluZzo6YmluZCgmKChbMHU4OyA0XSwgODAp LmludG8oKSkpKT87Cj4gKyAgICAgICAgICAgIGxldCBkdWFsID0gU29ja2V0QWRkcjo6bmV3KElw QWRkcjo6ZnJvbShbMHUxNjsgOF0pLCA4MCk7Cj4gKyAgICAgICAgICAgIGxldCBpcHY0ID0gU29j a2V0QWRkcjo6bmV3KElwQWRkcjo6ZnJvbShbMHU4OyA0XSksIDgwKTsKPiArICAgICAgICAgICAg bGV0IGluY29taW5nID0gVGNwTGlzdGVuZXI6OmJpbmQoZHVhbCkKPiArICAgICAgICAgICAgICAg IC5vcl9lbHNlKHxffCBUY3BMaXN0ZW5lcjo6YmluZChpcHY0KSkKPiArICAgICAgICAgICAgICAg IC5hd2FpdD87Cj4gIAo+IC0gICAgICAgICAgICBsZXQgc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6 YnVpbGRlcihpbmNvbWluZykuc2VydmUoc2VydmljZSk7Cj4gKyAgICAgICAgICAgIGxldCBzZXJ2 ZXIgPSBhc3luYyBtb3ZlIHsKPiArICAgICAgICAgICAgICAgIGxvb3Agewo+ICsgICAgICAgICAg ICAgICAgICAgIGxldCBrZXlfYXV0aCA9IEFyYzo6Y2xvbmUoJmtleV9hdXRoKTsKPiArICAgICAg ICAgICAgICAgICAgICBsZXQgcGF0aCA9IEFyYzo6Y2xvbmUoJnBhdGgpOwo+ICsgICAgICAgICAg ICAgICAgICAgIG1hdGNoIGluY29taW5nLmFjY2VwdCgpLmF3YWl0IHsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgT2soKHRjcCwgXykpID0+IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxldCBpbyA9IFRva2lvSW86Om5ldyh0Y3ApOwo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGV0IHNlcnZpY2UgPSBzZXJ2aWNlX2ZuKG1vdmUgfHJlcXVlc3R8IHsKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lX3Jlc3BvbmQoCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFyYzo6Y2xvbmUoJnBhdGgpLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBBcmM6OmNsb25lKCZrZXlfYXV0aCksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7 Cj4gIAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnRhc2s6OnNwYXduKGFz eW5jIG1vdmUgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxldCBFcnIo ZXJyKSA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAxOjpCdWls ZGVyOjpuZXcoKS5zZXJ2ZV9jb25uZWN0aW9uKGlvLCBzZXJ2aWNlKS5hd2FpdAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJpbnRsbiEoIkVycm9yIHNlcnZpbmcgY29ubmVjdGlvbjoge2Vycjo/fSIpOwo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIEVycihlcnIpID0+IHByaW50bG4hKCJFcnJvciBhY2NlcHRpbmcgY29ubmVj dGlvbjoge2Vycjo/fSIpLAo+ICsgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg ICAgIH0KPiArICAgICAgICAgICAgfTsKPiAgICAgICAgICAgICAgbGV0IChmdXR1cmUsIGFib3J0 KSA9IGZ1dHVyZXM6OmZ1dHVyZTo6YWJvcnRhYmxlKHNlcnZlcik7Cj4gICAgICAgICAgICAgIHNl bGYuYWJvcnRfaGFuZGxlID0gU29tZShhYm9ydCk7Cj4gICAgICAgICAgICAgIHRva2lvOjpzcGF3 bihmdXR1cmUpOwo+IGRpZmYgLS1naXQgYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgYi9z cmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKPiBpbmRleCA0ODNlNTk1YzEuLjdhYmE1ZDMxMyAx MDA2NDQKPiAtLS0gYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKPiArKysgYi9zcmMvYXBp Mi9hZG1pbi9kYXRhc3RvcmUucnMKPiBAQCAtOSw4ICs5LDEwIEBAIHVzZSBzdGQ6OnN5bmM6OkFy YzsKPiAgCj4gIHVzZSBhbnlob3c6OntiYWlsLCBmb3JtYXRfZXJyLCBFcnJvcn07Cj4gIHVzZSBm dXR1cmVzOjoqOwo+ICt1c2UgaHR0cF9ib2R5X3V0aWw6OkJvZHlFeHQ7Cj4gIHVzZSBoeXBlcjo6 aHR0cDo6cmVxdWVzdDo6UGFydHM7Cj4gLXVzZSBoeXBlcjo6e2hlYWRlciwgQm9keSwgUmVzcG9u c2UsIFN0YXR1c0NvZGV9Owo+ICt1c2UgaHlwZXI6Ontib2R5OjpJbmNvbWluZywgaGVhZGVyLCBS ZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7Cj4gIHVzZSBz ZXJkZTo6RGVzZXJpYWxpemU7Cj4gIHVzZSBzZXJkZV9qc29uOjp7anNvbiwgVmFsdWV9Owo+ICB1 c2UgdG9raW9fc3RyZWFtOjp3cmFwcGVyczo6UmVjZWl2ZXJTdHJlYW07Cj4gQEAgLTEzODcsNyAr MTM4OSw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX0RPV05MT0FEX0ZJTEU6IEFwaU1ldGhvZCA9 IEFwaU1ldGhvZDo6bmV3KAo+ICAKPiAgcHViIGZuIGRvd25sb2FkX2ZpbGUoCj4gICAgICBfcGFy dHM6IFBhcnRzLAo+IC0gICAgX3JlcV9ib2R5OiBCb2R5LAo+ICsgICAgX3JlcV9ib2R5OiBJbmNv bWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAgICAgIF9pbmZvOiAmQXBpTWV0aG9kLAo+ICAg ICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKPiBAQCAtMTQ3Miw3ICsxNDc0LDcg QEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfRE9XTkxPQURfRklMRV9ERUNPREVEOiBBcGlNZXRob2Qg PSBBcGlNZXRob2Q6Om5ldygKPiAgCj4gIHB1YiBmbiBkb3dubG9hZF9maWxlX2RlY29kZWQoCj4g ICAgICBfcGFydHM6IFBhcnRzLAo+IC0gICAgX3JlcV9ib2R5OiBCb2R5LAo+ICsgICAgX3JlcV9i b2R5OiBJbmNvbWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAgICAgIF9pbmZvOiAmQXBpTWV0 aG9kLAo+ICAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKPiBAQCAtMTU5OCw3 ICsxNjAwLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfVVBMT0FEX0JBQ0tVUF9MT0c6IEFwaU1l dGhvZCA9IEFwaU1ldGhvZDo6bmV3KAo+ICAKPiAgcHViIGZuIHVwbG9hZF9iYWNrdXBfbG9nKAo+ ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVxX2Jv ZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRo b2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0xNjM2LDEz ICsxNjM4LDcgQEAgcHViIGZuIHVwbG9hZF9iYWNrdXBfbG9nKAo+ICAgICAgICAgICAgICBmaWxl X25hbWUgPSBmaWxlX25hbWUuZGVyZWYoKSwKPiAgICAgICAgICApOwo+ICAKPiAtICAgICAgICBs ZXQgZGF0YSA9IHJlcV9ib2R5Cj4gLSAgICAgICAgICAgIC5tYXBfZXJyKEVycm9yOjpmcm9tKQo+ IC0gICAgICAgICAgICAudHJ5X2ZvbGQoVmVjOjpuZXcoKSwgfG11dCBhY2MsIGNodW5rfCB7Cj4g LSAgICAgICAgICAgICAgICBhY2MuZXh0ZW5kX2Zyb21fc2xpY2UoJmNodW5rKTsKPiAtICAgICAg ICAgICAgICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQo+IC0gICAgICAgICAgICB9KQo+ IC0gICAgICAgICAgICAuYXdhaXQ/Owo+ICsgICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkuY29s bGVjdCgpLmF3YWl0Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygpOwo+ICAKPiAgICAg ICAgICAvLyBhbHdheXMgdmVyaWZ5IGJsb2IvQ1JDIGF0IHNlcnZlciBzaWRlCj4gICAgICAgICAg bGV0IGJsb2IgPSBEYXRhQmxvYjo6bG9hZF9mcm9tX3JlYWRlcigmbXV0ICZkYXRhWy4uXSk/Owo+ IEBAIC0xODE1LDcgKzE4MTEsNyBAQCBmbiBnZXRfbG9jYWxfcHhhcl9yZWFkZXIoCj4gIAo+ICBw dWIgZm4gcHhhcl9maWxlX2Rvd25sb2FkKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIF9y ZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5jb21pbmcsCj4gICAgICBwYXJhbTog VmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAgICAgIHJwY2VudjogQm94PGR5biBS cGNFbnZpcm9ubWVudD4sCj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVu dC5ycyBiL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVudC5ycwo+IGluZGV4IDk5ZDg4NWUyZS4u OGEyZTlkZGNiIDEwMDY0NAo+IC0tLSBhL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVudC5ycwo+ ICsrKyBiL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVudC5ycwo+IEBAIC03LDYgKzcsNyBAQCB1 c2UgdHJhY2luZzo6aW5mbzsKPiAgdXNlIDo6c2VyZGU6OlNlcmlhbGl6ZTsKPiAgdXNlIHNlcmRl X2pzb246Ontqc29uLCBWYWx1ZX07Cj4gIAo+ICt1c2UgcHJveG1veF9odHRwOjpCb2R5Owo+ICB1 c2UgcHJveG1veF9yb3V0ZXI6OntScGNFbnZpcm9ubWVudCwgUnBjRW52aXJvbm1lbnRUeXBlfTsK PiAgdXNlIHByb3htb3hfc3lzOjpmczo6e2xvY2tfZGlyX25vYmxvY2tfc2hhcmVkLCByZXBsYWNl X2ZpbGUsIENyZWF0ZU9wdGlvbnN9Owo+ICAKPiBAQCAtMTksNyArMjAsNyBAQCB1c2UgcHJveG1v eF9yZXN0X3NlcnZlcjo6e2Zvcm1hdHRlcjo6KiwgV29ya2VyVGFza307Cj4gIAo+ICB1c2UgY3Jh dGU6OmJhY2t1cDo6dmVyaWZ5X2JhY2t1cF9kaXJfd2l0aF9sb2NrOwo+ICAKPiAtdXNlIGh5cGVy Ojp7Qm9keSwgUmVzcG9uc2V9Owo+ICt1c2UgaHlwZXI6OlJlc3BvbnNlOwo+ICAKPiAgI1tkZXJp dmUoQ29weSwgQ2xvbmUsIFNlcmlhbGl6ZSldCj4gIHN0cnVjdCBVcGxvYWRTdGF0aXN0aWMgewo+ IGRpZmYgLS1naXQgYS9zcmMvYXBpMi9iYWNrdXAvbW9kLnJzIGIvc3JjL2FwaTIvYmFja3VwL21v ZC5ycwo+IGluZGV4IGVmYzk3YTFmYi4uZjQzNzhlMTg1IDEwMDY0NAo+IC0tLSBhL3NyYy9hcGky L2JhY2t1cC9tb2QucnMKPiArKysgYi9zcmMvYXBpMi9iYWNrdXAvbW9kLnJzCj4gQEAgLTUsMTEg KzUsMTMgQEAgdXNlIGZ1dHVyZXM6Oio7Cj4gIHVzZSBoZXg6OkZyb21IZXg7Cj4gIHVzZSBoeXBl cjo6aGVhZGVyOjp7SGVhZGVyVmFsdWUsIENPTk5FQ1RJT04sIFVQR1JBREV9Owo+ICB1c2UgaHlw ZXI6Omh0dHA6OnJlcXVlc3Q6OlBhcnRzOwo+IC11c2UgaHlwZXI6OntCb2R5LCBSZXF1ZXN0LCBS ZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcjo6e2JvZHk6OkluY29taW5nLCBSZXF1 ZXN0LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcl91dGlsOjpzZXJ2aWNlOjpU b3dlclRvSHlwZXJTZXJ2aWNlOwo+ICB1c2Ugc2VyZGU6OkRlc2VyaWFsaXplOwo+ICB1c2Ugc2Vy ZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgdXNlIHRyYWNpbmc6Ondhcm47Cj4gIAo+ICt1c2Ug cHJveG1veF9odHRwOjpCb2R5Owo+ICB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6e0gyU2Vydmlj ZSwgV29ya2VyVGFza307Cj4gIHVzZSBwcm94bW94X3JvdXRlcjo6e2h0dHBfZXJyLCBsaXN0X3N1 YmRpcnNfYXBpX21ldGhvZH07Cj4gIHVzZSBwcm94bW94X3JvdXRlcjo6ewo+IEBAIC03MCw3ICs3 Miw3IEBAIHB1YihjcmF0ZSkgZm4gb3B0aW9uYWxfbnNfcGFyYW0ocGFyYW06ICZWYWx1ZSkgLT4g UmVzdWx0PEJhY2t1cE5hbWVzcGFjZSwgRXJyb3I+Cj4gIAo+ICBmbiB1cGdyYWRlX3RvX2JhY2t1 cF9wcm90b2NvbCgKPiAgICAgIHBhcnRzOiBQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+ ICsgICAgcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2lu Zm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+ IEBAIC0yNDcsNyArMjQ5LDcgQEAgZm4gdXBncmFkZV90b19iYWNrdXBfcHJvdG9jb2woCj4gICAg ICAgICAgICAgICAgICAgICAgICAgIGh0dHAubWF4X2ZyYW1lX3NpemUoNCAqIDEwMjQgKiAxMDI0 KTsKPiAgCj4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbnYzID0gZW52Mi5jbG9uZSgp Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwg c2VydmljZSkubWFwKG1vdmUgfHJlc3VsdHwgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICBo dHRwLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwgVG93ZXJUb0h5cGVyU2VydmljZTo6bmV3KHNlcnZp Y2UpKS5tYXAobW92ZSB8cmVzdWx0fCB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt YXRjaCByZXN1bHQgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycihlcnIp ID0+IHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgIFRy YW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkIChvcyBlcnJvciAxMDcpCj4gQEAgLTgy NCw3ICs4MjYsNyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9ET1dOTE9BRF9QUkVWSU9VUzogQXBp TWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCj4gIAo+ICBmbiBkb3dubG9hZF9wcmV2aW91cygKPiAg ICAgIF9wYXJ0czogUGFydHMsCj4gLSAgICBfcmVxX2JvZHk6IEJvZHksCj4gKyAgICBfcmVxX2Jv ZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRo b2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+IGRpZmYgLS1naXQg YS9zcmMvYXBpMi9iYWNrdXAvdXBsb2FkX2NodW5rLnJzIGIvc3JjL2FwaTIvYmFja3VwL3VwbG9h ZF9jaHVuay5ycwo+IGluZGV4IDIwMjU5NjYwYS4uMmM2NmMyODU1IDEwMDY0NAo+IC0tLSBhL3Ny Yy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1bmsucnMKPiArKysgYi9zcmMvYXBpMi9iYWNrdXAvdXBs b2FkX2NodW5rLnJzCj4gQEAgLTUsOCArNSw5IEBAIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQ b2xsfTsKPiAgdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9lcnIsIEVycm9yfTsKPiAgdXNlIGZ1 dHVyZXM6Oio7Cj4gIHVzZSBoZXg6OkZyb21IZXg7Cj4gK3VzZSBodHRwX2JvZHlfdXRpbDo6e0Jv ZHlEYXRhU3RyZWFtLCBCb2R5RXh0fTsKPiArdXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKPiAg dXNlIGh5cGVyOjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKPiAtdXNlIGh5cGVyOjpCb2R5Owo+ICB1 c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgCj4gIHVzZSBwcm94bW94X3JvdXRlcjo6 e0FwaUhhbmRsZXIsIEFwaU1ldGhvZCwgQXBpUmVzcG9uc2VGdXR1cmUsIFJwY0Vudmlyb25tZW50 fTsKPiBAQCAtMjEsNyArMjIsNyBAQCB1c2UgcGJzX3Rvb2xzOjpqc29uOjp7cmVxdWlyZWRfaW50 ZWdlcl9wYXJhbSwgcmVxdWlyZWRfc3RyaW5nX3BhcmFtfTsKPiAgdXNlIHN1cGVyOjplbnZpcm9u bWVudDo6KjsKPiAgCj4gIHB1YiBzdHJ1Y3QgVXBsb2FkQ2h1bmsgewo+IC0gICAgc3RyZWFtOiBC b2R5LAo+ICsgICAgc3RyZWFtOiBCb2R5RGF0YVN0cmVhbTxJbmNvbWluZz4sCj4gICAgICBzdG9y ZTogQXJjPERhdGFTdG9yZT4sCj4gICAgICBkaWdlc3Q6IFt1ODsgMzJdLAo+ICAgICAgc2l6ZTog dTMyLAo+IEBAIC0zMSw3ICszMiw3IEBAIHB1YiBzdHJ1Y3QgVXBsb2FkQ2h1bmsgewo+ICAKPiAg aW1wbCBVcGxvYWRDaHVuayB7Cj4gICAgICBwdWIgZm4gbmV3KAo+IC0gICAgICAgIHN0cmVhbTog Qm9keSwKPiArICAgICAgICBzdHJlYW06IEJvZHlEYXRhU3RyZWFtPEluY29taW5nPiwKPiAgICAg ICAgICBzdG9yZTogQXJjPERhdGFTdG9yZT4sCj4gICAgICAgICAgZGlnZXN0OiBbdTg7IDMyXSwK PiAgICAgICAgICBzaXplOiB1MzIsCj4gQEAgLTE0Niw3ICsxNDcsNyBAQCBwdWIgY29uc3QgQVBJ X01FVEhPRF9VUExPQURfRklYRURfQ0hVTks6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAo+ ICAKPiAgZm4gdXBsb2FkX2ZpeGVkX2NodW5rKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAg IHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06 IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4g UnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0xNjEsOCArMTYyLDE0IEBAIGZuIHVwbG9hZF9maXhlZF9j aHVuaygKPiAgCj4gICAgICAgICAgbGV0IGVudjogJkJhY2t1cEVudmlyb25tZW50ID0gcnBjZW52 LmFzX3JlZigpOwo+ICAKPiAtICAgICAgICBsZXQgKGRpZ2VzdCwgc2l6ZSwgY29tcHJlc3NlZF9z aXplLCBpc19kdXBsaWNhdGUpID0KPiAtICAgICAgICAgICAgVXBsb2FkQ2h1bms6Om5ldyhyZXFf Ym9keSwgZW52LmRhdGFzdG9yZS5jbG9uZSgpLCBkaWdlc3QsIHNpemUsIGVuY29kZWRfc2l6ZSku YXdhaXQ/Owo+ICsgICAgICAgIGxldCAoZGlnZXN0LCBzaXplLCBjb21wcmVzc2VkX3NpemUsIGlz X2R1cGxpY2F0ZSkgPSBVcGxvYWRDaHVuazo6bmV3KAo+ICsgICAgICAgICAgICBCb2R5RGF0YVN0 cmVhbTo6bmV3KHJlcV9ib2R5KSwKPiArICAgICAgICAgICAgZW52LmRhdGFzdG9yZS5jbG9uZSgp LAo+ICsgICAgICAgICAgICBkaWdlc3QsCj4gKyAgICAgICAgICAgIHNpemUsCj4gKyAgICAgICAg ICAgIGVuY29kZWRfc2l6ZSwKPiArICAgICAgICApCj4gKyAgICAgICAgLmF3YWl0PzsKPiAgCj4g ICAgICAgICAgZW52LnJlZ2lzdGVyX2ZpeGVkX2NodW5rKHdpZCwgZGlnZXN0LCBzaXplLCBjb21w cmVzc2VkX3NpemUsIGlzX2R1cGxpY2F0ZSk/Owo+ICAgICAgICAgIGxldCBkaWdlc3Rfc3RyID0g aGV4OjplbmNvZGUoZGlnZXN0KTsKPiBAQCAtMjE1LDcgKzIyMiw3IEBAIHB1YiBjb25zdCBBUElf TUVUSE9EX1VQTE9BRF9EWU5BTUlDX0NIVU5LOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygK PiAgCj4gIGZuIHVwbG9hZF9keW5hbWljX2NodW5rKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAt ICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFy YW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxk eW4gUnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0yMzAsOCArMjM3LDE0IEBAIGZuIHVwbG9hZF9keW5h bWljX2NodW5rKAo+ICAKPiAgICAgICAgICBsZXQgZW52OiAmQmFja3VwRW52aXJvbm1lbnQgPSBy cGNlbnYuYXNfcmVmKCk7Cj4gIAo+IC0gICAgICAgIGxldCAoZGlnZXN0LCBzaXplLCBjb21wcmVz c2VkX3NpemUsIGlzX2R1cGxpY2F0ZSkgPQo+IC0gICAgICAgICAgICBVcGxvYWRDaHVuazo6bmV3 KHJlcV9ib2R5LCBlbnYuZGF0YXN0b3JlLmNsb25lKCksIGRpZ2VzdCwgc2l6ZSwgZW5jb2RlZF9z aXplKS5hd2FpdD87Cj4gKyAgICAgICAgbGV0IChkaWdlc3QsIHNpemUsIGNvbXByZXNzZWRfc2l6 ZSwgaXNfZHVwbGljYXRlKSA9IFVwbG9hZENodW5rOjpuZXcoCj4gKyAgICAgICAgICAgIEJvZHlE YXRhU3RyZWFtOjpuZXcocmVxX2JvZHkpLAo+ICsgICAgICAgICAgICBlbnYuZGF0YXN0b3JlLmNs b25lKCksCj4gKyAgICAgICAgICAgIGRpZ2VzdCwKPiArICAgICAgICAgICAgc2l6ZSwKPiArICAg ICAgICAgICAgZW5jb2RlZF9zaXplLAo+ICsgICAgICAgICkKPiArICAgICAgICAuYXdhaXQ/Owo+ ICAKPiAgICAgICAgICBlbnYucmVnaXN0ZXJfZHluYW1pY19jaHVuayh3aWQsIGRpZ2VzdCwgc2l6 ZSwgY29tcHJlc3NlZF9zaXplLCBpc19kdXBsaWNhdGUpPzsKPiAgICAgICAgICBsZXQgZGlnZXN0 X3N0ciA9IGhleDo6ZW5jb2RlKGRpZ2VzdCk7Cj4gQEAgLTI1MCwxMyArMjYzLDEzIEBAIHB1YiBj b25zdCBBUElfTUVUSE9EX1VQTE9BRF9TUEVFRFRFU1Q6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6 bmV3KAo+ICAKPiAgZm4gdXBsb2FkX3NwZWVkdGVzdCgKPiAgICAgIF9wYXJ0czogUGFydHMsCj4g LSAgICByZXFfYm9keTogQm9keSwKPiArICAgIHJlcV9ib2R5OiBJbmNvbWluZywKPiAgICAgIF9w YXJhbTogVmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAgICAgIHJwY2VudjogQm94 PGR5biBScGNFbnZpcm9ubWVudD4sCj4gICkgLT4gQXBpUmVzcG9uc2VGdXR1cmUgewo+ICAgICAg YXN5bmMgbW92ZSB7Cj4gLSAgICAgICAgbGV0IHJlc3VsdCA9IHJlcV9ib2R5Cj4gKyAgICAgICAg bGV0IHJlc3VsdCA9IEJvZHlEYXRhU3RyZWFtOjpuZXcocmVxX2JvZHkpCj4gICAgICAgICAgICAg IC5tYXBfZXJyKEVycm9yOjpmcm9tKQo+ICAgICAgICAgICAgICAudHJ5X2ZvbGQoMCwgfHNpemU6 IHVzaXplLCBjaHVua3wgewo+ICAgICAgICAgICAgICAgICAgbGV0IHN1bSA9IHNpemUgKyBjaHVu ay5sZW4oKTsKPiBAQCAtMzAzLDcgKzMxNiw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX1VQTE9B RF9CTE9COiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKPiAgCj4gIGZuIHVwbG9hZF9ibG9i KAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVx X2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlN ZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0zMTgs MTMgKzMzMSw3IEBAIGZuIHVwbG9hZF9ibG9iKAo+ICAgICAgICAgICAgICBiYWlsISgid3Jvbmcg YmxvYiBmaWxlIGV4dGVuc2lvbjogJ3t9JyIsIGZpbGVfbmFtZSk7Cj4gICAgICAgICAgfQo+ICAK PiAtICAgICAgICBsZXQgZGF0YSA9IHJlcV9ib2R5Cj4gLSAgICAgICAgICAgIC5tYXBfZXJyKEVy cm9yOjpmcm9tKQo+IC0gICAgICAgICAgICAudHJ5X2ZvbGQoVmVjOjpuZXcoKSwgfG11dCBhY2Ms IGNodW5rfCB7Cj4gLSAgICAgICAgICAgICAgICBhY2MuZXh0ZW5kX2Zyb21fc2xpY2UoJmNodW5r KTsKPiAtICAgICAgICAgICAgICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQo+IC0gICAg ICAgICAgICB9KQo+IC0gICAgICAgICAgICAuYXdhaXQ/Owo+ICsgICAgICAgIGxldCBkYXRhID0g cmVxX2JvZHkuY29sbGVjdCgpLmF3YWl0Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygp Owo+ICAKPiAgICAgICAgICBpZiBlbmNvZGVkX3NpemUgIT0gZGF0YS5sZW4oKSB7Cj4gICAgICAg ICAgICAgIGJhaWwhKAo+IEBAIC0zMzQsNyArMzQxLDcgQEAgZm4gdXBsb2FkX2Jsb2IoCj4gICAg ICAgICAgICAgICk7Cj4gICAgICAgICAgfQo+ICAKPiAtICAgICAgICBlbnYuYWRkX2Jsb2IoJmZp bGVfbmFtZSwgZGF0YSk/Owo+ICsgICAgICAgIGVudi5hZGRfYmxvYigmZmlsZV9uYW1lLCBkYXRh LnRvX3ZlYygpKT87Cj4gIAo+ICAgICAgICAgIE9rKGVudi5mb3JtYXRfcmVzcG9uc2UoT2soVmFs dWU6Ok51bGwpKSkKPiAgICAgIH0KPiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvaGVscGVycy5ycyBi L3NyYy9hcGkyL2hlbHBlcnMucnMKPiBpbmRleCAzZGMxYmVmYzEuLmYzNDZiMGNjYSAxMDA2NDQK PiAtLS0gYS9zcmMvYXBpMi9oZWxwZXJzLnJzCj4gKysrIGIvc3JjL2FwaTIvaGVscGVycy5ycwo+ IEBAIC0yLDggKzIsOSBAQCB1c2Ugc3RkOjpwYXRoOjpQYXRoQnVmOwo+ICAKPiAgdXNlIGFueWhv dzo6RXJyb3I7Cj4gIHVzZSBmdXR1cmVzOjpzdHJlYW06OlRyeVN0cmVhbUV4dDsKPiAtdXNlIGh5 cGVyOjp7aGVhZGVyLCBCb2R5LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcjo6 e2hlYWRlciwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9Owo+ICAKPiArdXNlIHByb3htb3hfaHR0cDo6 Qm9keTsKPiAgdXNlIHByb3htb3hfcm91dGVyOjpodHRwX2JhaWw7Cj4gIAo+ICBwdWIgYXN5bmMg Zm4gY3JlYXRlX2Rvd25sb2FkX3Jlc3BvbnNlKHBhdGg6IFBhdGhCdWYpIC0+IFJlc3VsdDxSZXNw b25zZTxCb2R5PiwgRXJyb3I+IHsKPiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvbm9kZS9tb2QucnMg Yi9zcmMvYXBpMi9ub2RlL21vZC5ycwo+IGluZGV4IDYyYjQ0NzA5Ni4uZTdjNjIxM2MxIDEwMDY0 NAo+IC0tLSBhL3NyYy9hcGkyL25vZGUvbW9kLnJzCj4gKysrIGIvc3JjL2FwaTIvbm9kZS9tb2Qu cnMKPiBAQCAtNSwxMCArNSwxMSBAQCB1c2Ugc3RkOjpvczo6dW5peDo6aW86OkFzUmF3RmQ7Cj4g IAo+ICB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+ICB1c2UgZnV0dXJl czo6ZnV0dXJlOjp7RnV0dXJlRXh0LCBUcnlGdXR1cmVFeHR9Owo+IC11c2UgaHlwZXI6OmJvZHk6 OkJvZHk7Cj4gK3VzZSBoeXBlcjo6Ym9keTo6SW5jb21pbmc7Cj4gIHVzZSBoeXBlcjo6aHR0cDo6 cmVxdWVzdDo6UGFydHM7Cj4gIHVzZSBoeXBlcjo6dXBncmFkZTo6VXBncmFkZWQ7Cj4gIHVzZSBo eXBlcjo6UmVxdWVzdDsKPiArdXNlIGh5cGVyX3V0aWw6OnJ0OjpUb2tpb0lvOwo+ICB1c2Ugc2Vy ZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgdXNlIHRva2lvOjppbzo6e0FzeW5jQnVmUmVhZEV4 dCwgQnVmUmVhZGVyfTsKPiAgCj4gQEAgLTI2Nyw3ICsyNjgsNyBAQCBwdWIgY29uc3QgQVBJX01F VEhPRF9XRUJTT0NLRVQ6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAo+ICAKPiAgZm4gdXBn cmFkZV90b193ZWJzb2NrZXQoCj4gICAgICBwYXJ0czogUGFydHMsCj4gLSAgICByZXFfYm9keTog Qm9keSwKPiArICAgIHJlcV9ib2R5OiBJbmNvbWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAg ICAgIF9pbmZvOiAmQXBpTWV0aG9kLAo+ICAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25t ZW50PiwKPiBAQCAtMzA2LDcgKzMwNyw3IEBAIGZuIHVwZ3JhZGVfdG9fd2Vic29ja2V0KAo+ICAg ICAgICAgICAgICB9Owo+ICAKPiAgICAgICAgICAgICAgbGV0IGxvY2FsID0gdG9raW86Om5ldDo6 VGNwU3RyZWFtOjpjb25uZWN0KGZvcm1hdCEoImxvY2FsaG9zdDp7fSIsIHBvcnQpKS5hd2FpdD87 Cj4gLSAgICAgICAgICAgIHdzLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwgbG9jYWwpLmF3YWl0Cj4g KyAgICAgICAgICAgIHdzLnNlcnZlX2Nvbm5lY3Rpb24oVG9raW9Jbzo6bmV3KGNvbm4pLCBsb2Nh bCkuYXdhaXQKPiAgICAgICAgICB9KTsKPiAgCj4gICAgICAgICAgT2socmVzcG9uc2UpCj4gZGlm ZiAtLWdpdCBhL3NyYy9hcGkyL25vZGUvdGFza3MucnMgYi9zcmMvYXBpMi9ub2RlL3Rhc2tzLnJz Cj4gaW5kZXggY2FkNzQwNTU5Li5iZDY3NjMwNjkgMTAwNjQ0Cj4gLS0tIGEvc3JjL2FwaTIvbm9k ZS90YXNrcy5ycwo+ICsrKyBiL3NyYy9hcGkyL25vZGUvdGFza3MucnMKPiBAQCAtMyw5ICszLDEw IEBAIHVzZSBzdGQ6OmlvOjp7QnVmUmVhZCwgQnVmUmVhZGVyfTsKPiAgCj4gIHVzZSBhbnlob3c6 OntiYWlsLCBFcnJvcn07Cj4gIHVzZSBmdXR1cmVzOjpGdXR1cmVFeHQ7Cj4gK3VzZSBoeXBlcjo6 Ym9keTo6SW5jb21pbmc7Cj4gIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Cj4gIHVz ZSBoeXBlcjo6aHR0cDo6e2hlYWRlciwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9Owo+IC11c2UgaHlw ZXI6OkJvZHk7Cj4gK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7Cj4gIHVzZSBzZXJkZV9qc29uOjp7 anNvbiwgVmFsdWV9Owo+ICAKPiAgdXNlIHByb3htb3hfYXN5bmM6OnN0cmVhbTo6QXN5bmNSZWFk ZXJTdHJlYW07Cj4gQEAgLTMyMSw3ICszMjIsNyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9SRUFE X1RBU0tfTE9HOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKPiAgKTsKPiAgZm4gcmVhZF90 YXNrX2xvZygKPiAgICAgIF9wYXJ0czogUGFydHMsCj4gLSAgICBfcmVxX2JvZHk6IEJvZHksCj4g KyAgICBfcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2lu Zm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+ IEBAIC00MDQsNyArNDA1LDcgQEAgZm4gcmVhZF90YXNrX2xvZygKPiAgICAgICAgICBPayhSZXNw b25zZTo6YnVpbGRlcigpCj4gICAgICAgICAgICAgIC5zdGF0dXMoU3RhdHVzQ29kZTo6T0spCj4g ICAgICAgICAgICAgIC5oZWFkZXIoaGVhZGVyOjpDT05URU5UX1RZUEUsICJhcHBsaWNhdGlvbi9q c29uIikKPiAtICAgICAgICAgICAgLmJvZHkoQm9keTo6ZnJvbShqc29uLnRvX3N0cmluZygpKSkK PiArICAgICAgICAgICAgLmJvZHkoanNvbi50b19zdHJpbmcoKS5pbnRvKCkpCj4gICAgICAgICAg ICAgIC51bndyYXAoKSkKPiAgICAgIH0KPiAgICAgIC5ib3hlZCgpCj4gZGlmZiAtLWdpdCBhL3Ny Yy9hcGkyL3JlYWRlci9tb2QucnMgYi9zcmMvYXBpMi9yZWFkZXIvbW9kLnJzCj4gaW5kZXggMTcx M2YxODJiLi5iNjkwMDAwODcgMTAwNjQ0Cj4gLS0tIGEvc3JjL2FwaTIvcmVhZGVyL21vZC5ycwo+ ICsrKyBiL3NyYy9hcGkyL3JlYWRlci9tb2QucnMKPiBAQCAtMywxMiArMywxNSBAQAo+ICB1c2Ug YW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+ICB1c2UgZnV0dXJlczo6KjsKPiAg dXNlIGhleDo6RnJvbUhleDsKPiArdXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKPiAgdXNlIGh5 cGVyOjpoZWFkZXI6OntzZWxmLCBIZWFkZXJWYWx1ZSwgQ09OTkVDVElPTiwgVVBHUkFERX07Cj4g IHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Cj4gLXVzZSBoeXBlcjo6e0JvZHksIFJl cXVlc3QsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKPiArdXNlIGh5cGVyOjp7UmVxdWVzdCwgUmVz cG9uc2UsIFN0YXR1c0NvZGV9Owo+ICt1c2UgaHlwZXJfdXRpbDo6c2VydmljZTo6VG93ZXJUb0h5 cGVyU2VydmljZTsKPiAgdXNlIHNlcmRlOjpEZXNlcmlhbGl6ZTsKPiAgdXNlIHNlcmRlX2pzb246 OlZhbHVlOwo+ICAKPiArdXNlIHByb3htb3hfaHR0cDo6Qm9keTsKPiAgdXNlIHByb3htb3hfcmVz dF9zZXJ2ZXI6OntIMlNlcnZpY2UsIFdvcmtlclRhc2t9Owo+ICB1c2UgcHJveG1veF9yb3V0ZXI6 OnsKPiAgICAgIGh0dHBfZXJyLCBsaXN0X3N1YmRpcnNfYXBpX21ldGhvZCwgQXBpSGFuZGxlciwg QXBpTWV0aG9kLCBBcGlSZXNwb25zZUZ1dHVyZSwgUGVybWlzc2lvbiwKPiBAQCAtNjgsNyArNzEs NyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9VUEdSQURFX0JBQ0tVUDogQXBpTWV0aG9kID0gQXBp TWV0aG9kOjpuZXcoCj4gIAo+ICBmbiB1cGdyYWRlX3RvX2JhY2t1cF9yZWFkZXJfcHJvdG9jb2wo Cj4gICAgICBwYXJ0czogUGFydHMsCj4gLSAgICByZXFfYm9keTogQm9keSwKPiArICAgIHJlcV9i b2R5OiBJbmNvbWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAgICAgIF9pbmZvOiAmQXBpTWV0 aG9kLAo+ICAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKPiBAQCAtMTkwLDcg KzE5Myw3IEBAIGZuIHVwZ3JhZGVfdG9fYmFja3VwX3JlYWRlcl9wcm90b2NvbCgKPiAgICAgICAg ICAgICAgICAgICAgICBodHRwLmluaXRpYWxfY29ubmVjdGlvbl93aW5kb3dfc2l6ZSh3aW5kb3df c2l6ZSk7Cj4gICAgICAgICAgICAgICAgICAgICAgaHR0cC5tYXhfZnJhbWVfc2l6ZSg0ICogMTAy NCAqIDEwMjQpOwo+ICAKPiAtICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZlX2Nvbm5lY3Rp b24oY29ubiwgc2VydmljZSkKPiArICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZlX2Nvbm5l Y3Rpb24oY29ubiwgVG93ZXJUb0h5cGVyU2VydmljZTo6bmV3KHNlcnZpY2UpKQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAubWFwX2VycihFcnJvcjo6ZnJvbSkKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgLmF3YWl0Cj4gICAgICAgICAgICAgICAgICB9Owo+IEBAIC0yNDQsNyArMjQ3LDcg QEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfRE9XTkxPQURfRklMRTogQXBpTWV0aG9kID0gQXBpTWV0 aG9kOjpuZXcoCj4gIAo+ICBmbiBkb3dubG9hZF9maWxlKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywK PiAtICAgIF9yZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5jb21pbmcsCj4gICAg ICBwYXJhbTogVmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAgICAgIHJwY2Vudjog Qm94PGR5biBScGNFbnZpcm9ubWVudD4sCj4gQEAgLTMwMCw3ICszMDMsNyBAQCBwdWIgY29uc3Qg QVBJX01FVEhPRF9ET1dOTE9BRF9DSFVOSzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCj4g IAo+ICBmbiBkb3dubG9hZF9jaHVuaygKPiAgICAgIF9wYXJ0czogUGFydHMsCj4gLSAgICBfcmVx X2JvZHk6IEJvZHksCj4gKyAgICBfcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZh bHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBj RW52aXJvbm1lbnQ+LAo+IEBAIC0zNDgsNyArMzUxLDcgQEAgZm4gZG93bmxvYWRfY2h1bmsoCj4g IC8qIHRoaXMgaXMgdG9vIHNsb3cKPiAgZm4gZG93bmxvYWRfY2h1bmtfb2xkKAo+ICAgICAgX3Bh cnRzOiBQYXJ0cywKPiAtICAgIF9yZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5j b21pbmcsCj4gICAgICBwYXJhbTogVmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAg ICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9ubWVudD4sCj4gQEAgLTM5Myw3ICszOTYsNyBA QCBwdWIgY29uc3QgQVBJX01FVEhPRF9TUEVFRFRFU1Q6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6 bmV3KAo+ICAKPiAgZm4gc3BlZWR0ZXN0KAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIF9y ZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5jb21pbmcsCj4gICAgICBfcGFyYW06 IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBfcnBjZW52OiBCb3g8ZHlu IFJwY0Vudmlyb25tZW50PiwKPiBkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1h cGkucnMgYi9zcmMvYmluL3Byb3htb3gtYmFja3VwLWFwaS5ycwo+IGluZGV4IDdiNDE4NzU1MC4u NDM4ZmQ5ZDdlIDEwMDY0NAo+IC0tLSBhL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtYXBpLnJzCj4g KysrIGIvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1hcGkucnMKPiBAQCAtMSwxMiArMSwxNSBAQAo+ ICB1c2Ugc3RkOjpmdXR1cmU6OkZ1dHVyZTsKPiAgdXNlIHN0ZDo6cGluOjp7cGluLCBQaW59Owo+ ICt1c2Ugc3RkOjpzeW5jOjpBcmM7Cj4gIAo+ICB1c2UgYW55aG93Ojp7YmFpbCwgRXJyb3J9Owo+ IC11c2UgZnV0dXJlczo6KjsKPiAgdXNlIGh5cGVyOjpodHRwOjpSZXNwb25zZTsKPiAtdXNlIGh5 cGVyOjp7Qm9keSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcjo6U3RhdHVzQ29kZTsKPiArdXNl IGh5cGVyX3V0aWw6OnNlcnZlcjo6Z3JhY2VmdWw6OkdyYWNlZnVsU2h1dGRvd247Cj4gK3VzZSB0 b2tpbzo6bmV0OjpUY3BMaXN0ZW5lcjsKPiAgdXNlIHRyYWNpbmc6OmxldmVsX2ZpbHRlcnM6Okxl dmVsRmlsdGVyOwo+ICAKPiArdXNlIHByb3htb3hfaHR0cDo6Qm9keTsKPiAgdXNlIHByb3htb3hf bGFuZzo6dHJ5X2Jsb2NrOwo+ICB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6e0FwaUNvbmZpZywg UmVzdFNlcnZlcn07Cj4gIHVzZSBwcm94bW94X3JvdXRlcjo6UnBjRW52aXJvbm1lbnRUeXBlOwo+ IEBAIC0zNCw3ICszNyw3IEBAIGZuIGdldF9pbmRleCgpIC0+IFBpbjxCb3g8ZHluIEZ1dHVyZTxP dXRwdXQgPSBSZXNwb25zZTxCb2R5Pj4gKyBTZW5kPj4gewo+ICAgICAgICAgIFJlc3BvbnNlOjpi dWlsZGVyKCkKPiAgICAgICAgICAgICAgLnN0YXR1cyhTdGF0dXNDb2RlOjpPSykKPiAgICAgICAg ICAgICAgLmhlYWRlcihoeXBlcjo6aGVhZGVyOjpDT05URU5UX1RZUEUsICJ0ZXh0L2h0bWwiKQo+ IC0gICAgICAgICAgICAuYm9keShpbmRleC5pbnRvKCkpCj4gKyAgICAgICAgICAgIC5ib2R5KGlu ZGV4LnRvX3N0cmluZygpLmludG8oKSkKPiAgICAgICAgICAgICAgLnVud3JhcCgpCj4gICAgICB9 KQo+ICB9Cj4gQEAgLTEwOCwxNyArMTExLDI4IEBAIGFzeW5jIGZuIHJ1bigpIC0+IFJlc3VsdDwo KSwgRXJyb3I+IHsKPiAgICAgIC8vIGh0dHAgc2VydmVyIGZ1dHVyZToKPiAgICAgIGxldCBzZXJ2 ZXIgPSBwcm94bW94X2RhZW1vbjo6c2VydmVyOjpjcmVhdGVfZGFlbW9uKAo+ICAgICAgICAgIChb MTI3LCAwLCAwLCAxXSwgODIpLmludG8oKSwKPiAtICAgICAgICBtb3ZlIHxsaXN0ZW5lcnwgewo+ IC0gICAgICAgICAgICBsZXQgaW5jb21pbmcgPSBoeXBlcjo6c2VydmVyOjpjb25uOjpBZGRySW5j b21pbmc6OmZyb21fbGlzdGVuZXIobGlzdGVuZXIpPzsKPiAtCj4gLSAgICAgICAgICAgIE9rKGFz eW5jIHsKPiArICAgICAgICBtb3ZlIHxsaXN0ZW5lcjogVGNwTGlzdGVuZXJ8IHsKPiArICAgICAg ICAgICAgT2soYXN5bmMgbW92ZSB7Cj4gICAgICAgICAgICAgICAgICBwcm94bW94X3N5c3RlbWQ6 Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/Owo+IC0KPiAtICAgICAgICAg ICAgICAgIGh5cGVyOjpTZXJ2ZXI6OmJ1aWxkZXIoaW5jb21pbmcpCj4gLSAgICAgICAgICAgICAg ICAgICAgLnNlcnZlKHJlc3Rfc2VydmVyKQo+IC0gICAgICAgICAgICAgICAgICAgIC53aXRoX2dy YWNlZnVsX3NodXRkb3duKHByb3htb3hfZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSkKPiAtICAg ICAgICAgICAgICAgICAgICAubWFwX2VycihFcnJvcjo6ZnJvbSkKPiAtICAgICAgICAgICAgICAg ICAgICAuYXdhaXQKPiArICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bCA9IEFyYzo6bmV3KEdy YWNlZnVsU2h1dGRvd246Om5ldygpKTsKPiArICAgICAgICAgICAgICAgIGxvb3Agewo+ICsgICAg ICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bDIgPSBBcmM6OmNsb25lKCZncmFjZWZ1bCk7Cj4g KyAgICAgICAgICAgICAgICAgICAgdG9raW86OnNlbGVjdCEgewo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBpbmNvbWluZyA9IGxpc3RlbmVyLmFjY2VwdCgpID0+IHsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxldCAoY29ubiwgXykgPSBpbmNvbWluZz87Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZXQgYXBpX3NlcnZpY2UgPSByZXN0X3NlcnZlci5hcGlfc2Vydmlj ZSgmY29ubik/Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNwYXduKGFz eW5jIG1vdmUgeyBhcGlfc2VydmljZS5zZXJ2ZShjb25uLCBTb21lKGdyYWNlZnVsMikpLmF3YWl0 IH0pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBfc2h1dGRvd24gPSBwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkgPT4gewo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIH0sCj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgfQo+ ICsgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoc2h1dGRvd24pID0gQXJjOjppbnRvX2lubmVy KGdyYWNlZnVsKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgbG9nOjppbmZvISgic2h1dHRpbmcg ZG93bi4uIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgc2h1dGRvd24uc2h1dGRvd24oKS5hd2Fp dAo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgT2soKCkpCj4gICAgICAg ICAgICAgIH0pCj4gICAgICAgICAgfSwKPiAgICAgICAgICBTb21lKHBic19idWlsZGNmZzo6UFJP WE1PWF9CQUNLVVBfQVBJX1BJRF9GTiksCj4gZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHJveG1veC1i YWNrdXAtcHJveHkucnMgYi9zcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzCj4gaW5kZXgg YzlhNjAzMmU2Li44ZWU1MzcyMDcgMTAwNjQ0Cj4gLS0tIGEvc3JjL2Jpbi9wcm94bW94LWJhY2t1 cC1wcm94eS5ycwo+ICsrKyBiL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtcHJveHkucnMKPiBAQCAt Nyw3ICs3LDggQEAgdXNlIGZ1dHVyZXM6Oio7Cj4gIHVzZSBoeXBlcjo6aGVhZGVyOwo+ICB1c2Ug aHlwZXI6Omh0dHA6OnJlcXVlc3Q6OlBhcnRzOwo+ICB1c2UgaHlwZXI6Omh0dHA6OlJlc3BvbnNl Owo+IC11c2UgaHlwZXI6OntCb2R5LCBTdGF0dXNDb2RlfTsKPiArdXNlIGh5cGVyOjpTdGF0dXND b2RlOwo+ICt1c2UgaHlwZXJfdXRpbDo6c2VydmVyOjpncmFjZWZ1bDo6R3JhY2VmdWxTaHV0ZG93 bjsKPiAgdXNlIHRyYWNpbmc6OmxldmVsX2ZpbHRlcnM6OkxldmVsRmlsdGVyOwo+ICB1c2UgdHJh Y2luZzo6e2luZm8sIHdhcm59Owo+ICB1c2UgdXJsOjpmb3JtX3VybGVuY29kZWQ7Cj4gQEAgLTE1 LDYgKzE2LDcgQEAgdXNlIHVybDo6Zm9ybV91cmxlbmNvZGVkOwo+ICB1c2Ugb3BlbnNzbDo6c3Ns OjpTc2xBY2NlcHRvcjsKPiAgdXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07Cj4gIAo+ICt1 c2UgcHJveG1veF9odHRwOjpCb2R5Owo+ICB1c2UgcHJveG1veF9sYW5nOjp0cnlfYmxvY2s7Cj4g IHVzZSBwcm94bW94X3JvdXRlcjo6e1JwY0Vudmlyb25tZW50LCBScGNFbnZpcm9ubWVudFR5cGV9 Owo+ICB1c2UgcHJveG1veF9zeXM6OmZzOjpDcmVhdGVPcHRpb25zOwo+IEBAIC0yODksMjcgKzI5 MSw3MSBAQCBhc3luYyBmbiBydW4oKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gICAgICBsZXQg c2VydmVyID0gcHJveG1veF9kYWVtb246OnNlcnZlcjo6Y3JlYXRlX2RhZW1vbigKPiAgICAgICAg ICAoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCA4MDA3KS5pbnRvKCksCj4gICAgICAgICAgbW92 ZSB8bGlzdGVuZXJ8IHsKPiAtICAgICAgICAgICAgbGV0IChzZWN1cmVfY29ubmVjdGlvbnMsIGlu c2VjdXJlX2Nvbm5lY3Rpb25zKSA9Cj4gKyAgICAgICAgICAgIGxldCAobXV0IHNlY3VyZV9jb25u ZWN0aW9ucywgbXV0IGluc2VjdXJlX2Nvbm5lY3Rpb25zKSA9Cj4gICAgICAgICAgICAgICAgICBj b25uZWN0aW9ucy5hY2NlcHRfdGxzX29wdGlvbmFsKGxpc3RlbmVyLCBhY2NlcHRvcik7Cj4gIAo+ ICAgICAgICAgICAgICBPayhhc3luYyB7Cj4gICAgICAgICAgICAgICAgICBwcm94bW94X3N5c3Rl bWQ6Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/Owo+ICAKPiAtICAgICAg ICAgICAgICAgIGxldCBzZWN1cmVfc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6YnVpbGRlcihzZWN1 cmVfY29ubmVjdGlvbnMpCj4gLSAgICAgICAgICAgICAgICAgICAgLnNlcnZlKHJlc3Rfc2VydmVy KQo+IC0gICAgICAgICAgICAgICAgICAgIC53aXRoX2dyYWNlZnVsX3NodXRkb3duKHByb3htb3hf ZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSkKPiAtICAgICAgICAgICAgICAgICAgICAubWFwX2Vy cihFcnJvcjo6ZnJvbSk7Cj4gKyAgICAgICAgICAgICAgICBsZXQgc2VjdXJlX3NlcnZlciA9IGFz eW5jIG1vdmUgewo+ICsgICAgICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bCA9IEFyYzo6bmV3 KEdyYWNlZnVsU2h1dGRvd246Om5ldygpKTsKPiArICAgICAgICAgICAgICAgICAgICBsb29wIHsK PiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsMiA9IEFyYzo6Y2xvbmUoJmdy YWNlZnVsKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNlbGVjdCEgewo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShjb25uKSA9IHNlY3VyZV9jb25uZWN0aW9u cy5uZXh0KCkgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNv bm4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPayhjb25uKSA9PiB7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBpX3NlcnZp Y2UgPSByZXN0X3NlcnZlci5hcGlfc2VydmljZSgmY29ubik/Owo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNwYXduKGFzeW5jIG1vdmUgewo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV9zZXJ2aWNlLnNlcnZl KGNvbm4sIFNvbWUoZ3JhY2VmdWwyKSkuYXdhaXQKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7 IGxvZzo6d2FybiEoIkZhaWxlZCB0byBhY2NlcHQgaW5zZWN1cmUgY29ubmVjdGlvbjoge2Vycjo/ fSIpOyB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zaHV0 ZG93biA9IHByb3htb3hfZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSA9PiB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAg ICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoc2h1dGRvd24pID0gQXJjOjpp bnRvX2lubmVyKGdyYWNlZnVsKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNodXRkb3du LnNodXRkb3duKCkuYXdhaXQKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg ICAgICAgICAgT2s6OjwoKSwgRXJyb3I+KCgpKQo+ICsgICAgICAgICAgICAgICAgfTsKPiAgCj4g LSAgICAgICAgICAgICAgICBsZXQgaW5zZWN1cmVfc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6YnVp bGRlcihpbnNlY3VyZV9jb25uZWN0aW9ucykKPiAtICAgICAgICAgICAgICAgICAgICAuc2VydmUo cmVkaXJlY3RvcikKPiAtICAgICAgICAgICAgICAgICAgICAud2l0aF9ncmFjZWZ1bF9zaHV0ZG93 bihwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkpCj4gLSAgICAgICAgICAgICAgICAg ICAgLm1hcF9lcnIoRXJyb3I6OmZyb20pOwo+ICsgICAgICAgICAgICAgICAgbGV0IGluc2VjdXJl X3NlcnZlciA9IGFzeW5jIG1vdmUgewo+ICsgICAgICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1 bCA9IEFyYzo6bmV3KEdyYWNlZnVsU2h1dGRvd246Om5ldygpKTsKPiArICAgICAgICAgICAgICAg ICAgICBsb29wIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsMiA9IEFy Yzo6Y2xvbmUoJmdyYWNlZnVsKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNl bGVjdCEgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShjb25uKSA9IGluc2Vj dXJlX2Nvbm5lY3Rpb25zLm5leHQoKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWF0Y2ggY29ubiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9rKGNvbm4pID0+IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxldCByZWRpcmVjdF9zZXJ2aWNlID0gcmVkaXJlY3Rvci5yZWRpcmVjdF9zZXJ2aWNlKCk7Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tpbzo6c3Bhd24oYXN5 bmMgbW92ZSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVkaXJlY3Rfc2VydmljZS5zZXJ2ZShjb25uLCBTb21lKGdyYWNlZnVsMikpLmF3YWl0Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRXJyKGVycikgPT4geyBsb2c6Ondhcm4hKCJGYWlsZWQgdG8gYWNjZXB0IGluc2Vj dXJlIGNvbm5lY3Rpb246IHtlcnI6P30iKTsgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfc2h1dGRvd24gPSBwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0 dXJlKCkgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9 Cj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIGxldCBT b21lKHNodXRkb3duKSA9IEFyYzo6aW50b19pbm5lcihncmFjZWZ1bCkgewo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzaHV0ZG93bi5zaHV0ZG93bigpLmF3YWl0Cj4gKyAgICAgICAgICAgICAg ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIE9rOjo8KCksIEVycm9yPigoKSkKPiArICAg ICAgICAgICAgICAgIH07CgpUaGUgbmV3IGBzZWN1cmVfc2VydmVyYCBhbmQgYGluc2VjdXJlX3Nl cnZlcmAgYWJvdmUgYXJlbid0IHJlYWxseSB0aGF0CnByZXR0eTsgcGVyaGFwcyB3ZSBjYW4gY2xl YW4gdGhlbSB1cCBvbmNlIHdlIGdvdCBhIHRyYWl0IGZvciB0aGUgcmV0dXJuCnR5cGVzIG9mIGBh Y2NlcHRfdGxzX29wdGlvbmFsKClgIGFuZCBzaW1pbGFyIDpzCgpJbiBnZW5lcmFsIEknZCBzdWdn ZXN0IGJyZWFraW5nIHVwIHRoZSByZXR1cm5lZCBjb3JvdXRpbmUgc2luY2UgaXQncwpnb3R0ZW4g cXVpdGUgbGFyZ2Ugbm93LCBwZXJoYXBzIGV4cGxpY2l0bHkgZGVmaW5pbmcgc2VwYXJhdGUgY29y b3V0aW5lcwpmb3IgYHNlY3VyZV9zZXJ2ZXJgIGFuZCBgaW5zZWN1cmVfc2VydmVyYCBlYWNoLCBp bnN0ZWFkIG9mIHVzaW5nIGBhc3luY2AKYmxvY2tzLCBvciBleHBsaWNpdGx5IGRlZmluaW5nIHRo ZSByZXR1cm5lZCBjb3JvdXRpbmUgYXMgYSB3aG9sZS4KTm8gaGFyZCBmZWVsaW5ncyBpZiB5b3Ug ZG9uJ3QsIHRob3VnaC4KCj4gIAo+ICAgICAgICAgICAgICAgICAgbGV0IChzZWN1cmVfcmVzLCBp bnNlY3VyZV9yZXMpID0KPiAgICAgICAgICAgICAgICAgICAgICB0cnlfam9pbiEodG9raW86OnNw YXduKHNlY3VyZV9zZXJ2ZXIpLCB0b2tpbzo6c3Bhd24oaW5zZWN1cmVfc2VydmVyKSkKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgLmNvbnRleHQoImZhaWxlZCB0byBjb21wbGV0ZSBSRVNUIHNl cnZlciB0YXNrIik/Owo+ICAKPiAtICAgICAgICAgICAgICAgIGxldCByZXN1bHRzID0gW3NlY3Vy ZV9yZXMsIGluc2VjdXJlX3Jlc107Cj4gKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0czogW1Jl c3VsdDwoKSwgRXJyb3I+OyAyXSA9IFtzZWN1cmVfcmVzLCBpbnNlY3VyZV9yZXNdOwo+ICAKPiAg ICAgICAgICAgICAgICAgIGlmIHJlc3VsdHMuaXRlcigpLmFueShSZXN1bHQ6OmlzX2Vycikgewo+ ICAgICAgICAgICAgICAgICAgICAgIGxldCBjYXRfZXJyb3JzID0gcmVzdWx0cwo+IEBAIC0zMjEs NyArMzY3LDcgQEAgYXN5bmMgZm4gcnVuKCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICAgICAg ICAgICAgICAgICAgICAgIGJhaWwhKGNhdF9lcnJvcnMpOwo+ICAgICAgICAgICAgICAgICAgfQo+ ICAKPiAtICAgICAgICAgICAgICAgIE9rKCgpKQo+ICsgICAgICAgICAgICAgICAgT2s6OjwoKSwg RXJyb3I+KCgpKQo+ICAgICAgICAgICAgICB9KQo+ICAgICAgICAgIH0sCj4gICAgICAgICAgU29t ZShwYnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX1BST1hZX1BJRF9GTiksCgoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5n IGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5j b20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=