From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 9369E1FF164 for <inbox@lore.proxmox.com>; Fri, 11 Apr 2025 17:57:18 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C8AFA1DF4D; Fri, 11 Apr 2025 17:57:10 +0200 (CEST) Message-ID: <99311daa-b736-4591-a134-094579132c1c@proxmox.com> Date: Fri, 11 Apr 2025 17:56:34 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>, =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> References: <20250325151254.193177-1-d.kral@proxmox.com> <20250325151254.193177-11-d.kral@proxmox.com> <1743681290.ng3l34qeu2.astroid@yuna.none> Content-Language: en-US From: Daniel Kral <d.kral@proxmox.com> In-Reply-To: <1743681290.ng3l34qeu2.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.387 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [manager.pm, proxmox.com] Subject: Re: [pve-devel] [PATCH ha-manager 09/15] manager: apply colocation rules when selecting service nodes X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> VGhhbmtzIGZvciB0aGUgdGFraW5nIHRoZSB0aW1lIGhlcmUgdG9vIQoKSSdtIHVuc3VyZSBpZiB0 aGUgZG9jdW1lbnRhdGlvbiB3YXNuJ3QgY2xlYXIgZW5vdWdoIG9yIEknbSBqdXN0IGJsaW5kZWQg CmhlcmUgaW4gc29tZSBkZXRhaWxzIGhvdyB0aGUgZGl2aXNpb24gYmV0d2VlbiBzdHJpY3Qvbm9u LXN0cmljdCBzaG91bGQgCmJlLCBidXQgSSBob3BlIEkgY291bGQgY2xhcmlmeSBzb21lIHBvaW50 cyBhYm91dCBteSB1bmRlcnN0YW5kaW5nIGhlcmUuIApQbGVhc2UgY29ycmVjdCBtZSBoZXJlIGlu IGFueSBjYXNlIHRoZXJlIGFyZSBzY2VuYXJpb3Mgd2hlcmUgdGhlIGN1cnJlbnQgCmltcGxlbWVu dGF0aW9uIHdpbGwgYnJlYWsgdXNlciBleHBlY3RhdGlvbnMsIHRoYXQncyBkZWZpbml0ZWx5IG5v dCAKc29tZXRoaW5nIHRoYXQgSSB3YW50IDspLgoKSSdsbCBkZWZpbml0ZWx5IHRha2Ugc29tZSB0 aW1lIHRvIGltcHJvdmUgdGhlIGNvbnRyb2wgZmxvdyBhbmQgbmFtZXMgb2YgCnZhcmlhYmxlcy9z dWJyb3V0aW5lcyBoZXJlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGFkZCAK ZXhhbXBsZXMgaG93IHRoZSBjb250ZW50IG9mICR0b2dldGhlciBhbmQgJHNlcGFyYXRlIGxvb2sg bGlrZSBhdCAKZGlmZmVyZW50IHN0YWdlcy4KClRoZSBhbGdvcml0aG0gaXMgb25saW5lIGFuZCBp cyBxdWl0ZSBkZXBlbmRlbnQgb24gbWFueSBvdGhlciB0aGluZ3MgbGlrZSAKdGhhdCAkYWxsb3dl ZF9ub2RlcyBoYXMgYWxyZWFkeSBub2RlcyByZW1vdmVkIHRoYXQgd2VyZSBhbHJlYWR5IHRyaWVk IAphbmQgZmFpbGVkIG9uLCBldGMuLCBzbyBpdCdzIHByZXR0eSBkeW5hbWljIGhlcmUuCgpPbiA0 LzMvMjUgMTQ6MTcsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4gT24gTWFyY2ggMjUsIDIw MjUgNDoxMiBwbSwgRGFuaWVsIEtyYWwgd3JvdGU6Cj4+IEFkZCBhIG1lY2hhbmlzbSB0byB0aGUg bm9kZSBzZWxlY3Rpb24gc3Vicm91dGluZSwgd2hpY2ggZW5mb3JjZXMgdGhlCj4+IGNvbG9jYXRp b24gcnVsZXMgZGVmaW5lZCBpbiB0aGUgcnVsZXMgY29uZmlnLgo+Pgo+PiBUaGUgYWxnb3JpdGht IG1hbmlwdWxhdGVzIHRoZSBzZXQgb2Ygbm9kZXMgZGlyZWN0bHksIHdoaWNoIHRoZSBzZXJ2aWNl Cj4+IGlzIGFsbG93ZWQgdG8gcnVuIG9uLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgYW5kIHN0cmlj dG5lc3Mgb2YgdGhlCj4+IGNvbG9jYXRpb24gcnVsZXMsIGlmIHRoZXJlIGFyZSBhbnkuCj4gCj4g c2hvdWxkbid0IHRoaXMgZmlyc3QgYXR0ZW1wdCB0byBzYXRpc2Z5IGFsbCBydWxlcywgYW5kIGlm IHRoYXQgZmFpbHMsCj4gcmV0cnkgd2l0aCBqdXN0IHRoZSBzdHJpY3Qgb25lcywgb3Igc29tZXRo aW5nIHNpbWlsYXI/IHNlZSBjb21tZW50cwo+IGJlbG93IChtYXliZSBJIGFtIG1pc3NpbmcvbWlz dW5kZXJzdGFuZGluZyBzb21ldGhpbmcpCgpIbSwgSSdtIG5vdCBzdXJlIGlmIEkgY2FuIGZvbGxv dyB3aGF0IHlvdSBtZWFuIGhlcmUuCgpJIHRyaWVkIHRvIGNvbWUgdXAgd2l0aCBzb21lIHNjZW5h cmlvcywgd2hlcmUgdGhlcmUgY291bGQgYmUgY29uZmxpY3RzIApiZWNhdXNlIG9mICJsb29zZSIg Y29sb2NhdGlvbiBydWxlcyBiZWluZyBvdmVyc2hhZG93ZWQgYnkgc3RyaWN0IApjb2xvY2F0aW9u IHJ1bGVzLCBidXQgSSdtIGN1cnJlbnRseSBub3Qgc2VlaW5nIHRoYXQuIEJ1dCBJJ3ZlIGFsc28g YmVlbiAKbW9zdGx5IGNvbmNlcm5lZCB3aXRoIHNtYWxsZXIgY2x1c3RlcnMgKDMgdG8gNSBub2Rl cykgZm9yIG5vdywgc28gSSdsbCAKdGFrZSBhIGNsb3NlciBsb29rIGZvciBsYXJnZXIgYXBwbGlj YXRpb25zL2Vudmlyb25tZW50cy4KCkluIGdlbmVyYWwsIHdoZW4gYXBwbHlpbmcgY29sb2NhdGlv biBydWxlcywgdGhlIGxvZ2ljIGlzIGxlc3MgY29uY2VybmVkIAphYm91dCB3aGljaCBydWxlcyBz cGVjaWZpY2FsbHkgZ2V0IGFwcGxpZWQsIGJ1dCB0byBtYWtlIHN1cmUgdGhhdCBub25lIAppcyB2 aW9sYXRlZCBpbiBnZW5lcmFsLgoKVGhpcyBpcyBhbHNvIHdoeSBhIHNpbmdsZSBzZXJ2aWNlIGNv bG9jYXRpb24gcnVsZXMgdHVybnMgb3V0IHRvIGJlIGEgCm5vb3AsIHNpbmNlIGl0IHdpbGwgbmV2 ZXIgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIHNlcnZpY2UgKHRoZSAKcnVsZSB3 aWxsIG5ldmVyIGFkZCBzb21ldGhpbmcgdG8gJHRvZ2V0aGVyLyRzZXBhcmF0ZSwgc2luY2UgdGhl cmUncyBvbmx5IAphbiBlbnRyeSB0aGVyZSBpZiBvdGhlciBzZXJ2aWNlcyBhbHJlYWR5IGhhdmUg YSBub2RlIHBpbm5lZCB0byB0aGVtKS4KCkkgaG9wZSB0aGUgY29tbWVudHMgYmVsb3cgY2xhcmlm eSB0aGlzIGEgbGl0dGxlIGJpdCBvciBtYWtlIGl0IGNsZWFyZXIgCndoZXJlIEknbSBtaXNzaW5n IHNvbWV0aGluZywgc28gdGhhdCB0aGUgY29kZS9iZWhhdmlvci9kb2N1bWVudGF0aW9uIGNhbiAK YmUgaW1wcm92ZWQgOykuCgo+IAo+Pgo+PiBUaGlzIG1ha2VzIGl0IGRlcGVuZCBvbiB0aGUgcHJp b3IgcmVtb3ZhbCBvZiBhbnkgbm9kZXMsIHdoaWNoIGFyZQo+PiB1bmF2YWlsYWJsZSAoaS5lLiBv ZmZsaW5lLCB1bnJlYWNoYWJsZSwgb3Igd2VyZW4ndCBhYmxlIHRvIHN0YXJ0IHRoZQo+PiBzZXJ2 aWNlIGluIHByZXZpb3VzIHRyaWVzKSBvciBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcnVuIG9uIG90 aGVyd2lzZQo+PiAoaS5lLiBIQSBncm91cCBub2RlIHJlc3RyaWN0aW9ucykgdG8gZnVuY3Rpb24g Y29ycmVjdGx5Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3ht b3guY29tPgo+PiAtLS0KPj4gICBzcmMvUFZFL0hBL01hbmFnZXIucG0gICAgICB8IDIwMyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ICAgc3JjL3Rlc3QvdGVzdF9mYWls b3ZlcjEucGwgfCAgIDQgKy0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9IQS9NYW5hZ2VyLnBt IGIvc3JjL1BWRS9IQS9NYW5hZ2VyLnBtCj4+IGluZGV4IDhmMmFiM2QuLjc5YjY1NTUgMTAwNjQ0 Cj4+IC0tLSBhL3NyYy9QVkUvSEEvTWFuYWdlci5wbQo+PiArKysgYi9zcmMvUFZFL0hBL01hbmFn ZXIucG0KPj4gQEAgLTE1Nyw4ICsxNTcsMjAxIEBAIHN1YiBnZXRfbm9kZV9wcmlvcml0eV9ncm91 cHMgewo+PiAgICAgICByZXR1cm4gKCRwcmlfZ3JvdXBzLCAkZ3JvdXBfbWVtYmVycyk7Cj4+ICAg fQo+PiAgIAo+PiArPWhlYWQzIGdldF9jb2xvY2F0ZWRfc2VydmljZXMoJHJ1bGVzLCAkc2lkLCAk b25saW5lX25vZGVfdXNhZ2UpCj4+ICsKPj4gK1JldHVybnMgYSBoYXNoIG1hcCBvZiBhbGwgc2Vy dmljZXMsIHdoaWNoIGFyZSBzcGVjaWZpZWQgYXMgYmVpbmcgaW4gYSBwb3NpdGl2ZQo+PiArb3Ig bmVnYXRpdmUgY29sb2NhdGlvbiBpbiBDPCRydWxlcz4gd2l0aCB0aGUgZ2l2ZW4gc2VydmljZSB3 aXRoIGlkIEM8JHNpZD4uCj4+ICsKPj4gK0VhY2ggc2VydmljZSBlbnRyeSBjb25zaXN0cyBvZiB0 aGUgdHlwZSBvZiBjb2xvY2F0aW9uLCBzdHJpY3RuZXNzIG9mIGNvbG9jYXRpb24KPj4gK2FuZCB0 aGUgbm9kZSB0aGUgc2VydmljZSBpcyBjdXJyZW50bHkgYXNzaWduZWQgdG8sIGlmIGFueSwgYWNj b3JkaW5nIHRvCj4+ICtDPCRvbmxpbmVfbm9kZV91c2FnZT4uCj4+ICsKPj4gK0ZvciBleGFtcGxl LCBhIHNlcnZpY2UgQzwndm06MTAxJz4gYmVpbmcgc3RyaWN0bHkgY29sb2NhdGVkIHRvZ2V0aGVy IChwb3NpdGl2ZSkKPj4gK3dpdGggdHdvIG90aGVyIHNlcnZpY2VzIEM8J3ZtOjEwMic+IGFuZCBD PCd2bToxMDMnPiBhbmQgbG9vc2VseSBjb2xvY2F0ZWQKPj4gK3NlcGFyYXRlIHdpdGggYW5vdGhl ciBzZXJ2aWNlIEM8J3ZtOjEwNCc+IHJlc3VsdHMgaW4gdGhlIGhhc2ggbWFwOgo+PiArCj4+ICsg ICAgewo+PiArCSd2bToxMDInID0+IHsKPj4gKwkgICAgYWZmaW5pdHkgPT4gJ3RvZ2V0aGVyJywK Pj4gKwkgICAgc3RyaWN0ID0+IDEsCj4+ICsJICAgIG5vZGUgPT4gJ25vZGUyJwo+PiArCX0sCj4+ ICsJJ3ZtOjEwMycgPT4gewo+PiArCSAgICBhZmZpbml0eSA9PiAndG9nZXRoZXInLAo+PiArCSAg ICBzdHJpY3QgPT4gMSwKPj4gKwkgICAgbm9kZSA9PiAnbm9kZTInCj4+ICsJfSwKPj4gKwkndm06 MTA0JyA9PiB7Cj4+ICsJICAgIGFmZmluaXR5ID0+ICdzZXBhcmF0ZScsCj4+ICsJICAgIHN0cmlj dCA9PiAwLAo+PiArCSAgICBub2RlID0+IHVuZGVmCj4+ICsJfQo+PiArICAgIH0KPj4gKwo+PiAr PWN1dAo+PiArCj4+ICtzdWIgZ2V0X2NvbG9jYXRlZF9zZXJ2aWNlcyB7Cj4+ICsgICAgbXkgKCRy dWxlcywgJHNpZCwgJG9ubGluZV9ub2RlX3VzYWdlKSA9IEBfOwo+PiArCj4+ICsgICAgbXkgJHNl cnZpY2VzID0ge307Cj4+ICsKPj4gKyAgICBQVkU6OkhBOjpSdWxlczo6Q29sb2NhdGlvbjo6Zm9y ZWFjaF9jb2xvY2F0aW9uX3J1bGUoJHJ1bGVzLCBzdWIgewo+PiArCW15ICgkcnVsZSkgPSBAXzsK Pj4gKwo+PiArCWZvciBteSAkY3NpZCAoc29ydCBrZXlzICV7JHJ1bGUtPntzZXJ2aWNlc319KSB7 Cj4+ICsJICAgIG5leHQgaWYgJGNzaWQgZXEgJHNpZDsKPj4gKwo+PiArCSAgICAkc2VydmljZXMt PnskY3NpZH0gPSB7Cj4+ICsJCW5vZGUgPT4gJG9ubGluZV9ub2RlX3VzYWdlLT5nZXRfc2Vydmlj ZV9ub2RlKCRjc2lkKSwKPj4gKwkJYWZmaW5pdHkgPT4gJHJ1bGUtPnthZmZpbml0eX0sCj4+ICsJ CXN0cmljdCA9PiAkcnVsZS0+e3N0cmljdH0sCj4+ICsJICAgIH07Cj4+ICsgICAgICAgIH0KPj4g KyAgICB9LCB7Cj4+ICsJc2lkID0+ICRzaWQsCj4+ICsgICAgfSk7Cj4+ICsKPj4gKyAgICByZXR1 cm4gJHNlcnZpY2VzOwo+PiArfQo+PiArCj4+ICs9aGVhZDMgZ2V0X2NvbG9jYXRpb25fcHJlZmVy ZW5jZSgkcnVsZXMsICRzaWQsICRvbmxpbmVfbm9kZV91c2FnZSkKPj4gKwo+PiArUmV0dXJucyBh IGxpc3Qgb2YgdHdvIGhhc2hlcywgd2hlcmUgZWFjaCBpcyBhIGhhc2ggbWFwIG9mIHRoZSBjb2xv Y2F0aW9uCj4+ICtwcmVmZXJlbmNlIG9mIEM8JHNpZD4sIGFjY29yZGluZyB0byB0aGUgY29sb2Nh dGlvbiBydWxlcyBpbiBDPCRydWxlcz4gYW5kIHRoZQo+PiArc2VydmljZSBsb2NhdGlvbnMgaW4g Qzwkb25saW5lX25vZGVfdXNhZ2U+Lgo+PiArCj4+ICtUaGUgZmlyc3QgaGFzaCBpcyB0aGUgcG9z aXRpdmUgY29sb2NhdGlvbiBwcmVmZXJlbmNlLCB3aGVyZSBlYWNoIGVsZW1lbnQKPj4gK3JlcHJl c2VudHMgcHJvcGVydGllcyBmb3IgaG93IG11Y2ggQzwkc2lkPiBwcmVmZXJzIHRvIGJlIG9uIHRo ZSBub2RlLgo+PiArQ3VycmVudGx5LCB0aGlzIGlzIGEgYmluYXJ5IEM8JHN0cmljdD4gZmllbGQs IHdoaWNoIG1lYW5zIGVpdGhlciBpdCBzaG91bGQgYmUKPj4gK3RoZXJlIChDPDA+KSBvciBtdXN0 IGJlIHRoZXJlIChDPDE+KS4KPj4gKwo+PiArVGhlIHNlY29uZCBoYXNoIGlzIHRoZSBuZWdhdGl2 ZSBjb2xvY2F0aW9uIHByZWZlcmVuY2UsIHdoZXJlIGVhY2ggZWxlbWVudAo+PiArcmVwcmVzZW50 cyBwcm9wZXJ0aWVzIGZvciBob3cgbXVjaCBDPCRzaWQ+IHByZWZlcnMgbm90IHRvIGJlIG9uIHRo ZSBub2RlLgo+PiArQ3VycmVudGx5LCB0aGlzIGlzIGEgYmluYXJ5IEM8JHN0cmljdD4gZmllbGQs IHdoaWNoIG1lYW5zIGVpdGhlciBpdCBzaG91bGQgbm90Cj4+ICtiZSB0aGVyZSAoQzwwPikgb3Ig bXVzdCBub3QgYmUgdGhlcmUgKEM8MT4pLgo+PiArCj4+ICs9Y3V0Cj4+ICsKPj4gK3N1YiBnZXRf Y29sb2NhdGlvbl9wcmVmZXJlbmNlIHsKPj4gKyAgICBteSAoJHJ1bGVzLCAkc2lkLCAkb25saW5l X25vZGVfdXNhZ2UpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkc2VydmljZXMgPSBnZXRfY29sb2Nh dGVkX3NlcnZpY2VzKCRydWxlcywgJHNpZCwgJG9ubGluZV9ub2RlX3VzYWdlKTsKPj4gKwo+PiAr ICAgIG15ICR0b2dldGhlciA9IHt9Owo+PiArICAgIG15ICRzZXBhcmF0ZSA9IHt9Owo+PiArCj4+ ICsgICAgZm9yIG15ICRzZXJ2aWNlICh2YWx1ZXMgJSRzZXJ2aWNlcykgewo+PiArCW15ICRub2Rl ID0gJHNlcnZpY2UtPntub2RlfTsKPj4gKwo+PiArCW5leHQgaWYgISRub2RlOwo+PiArCj4+ICsJ bXkgJG5vZGVfc2V0ID0gJHNlcnZpY2UtPnthZmZpbml0eX0gZXEgJ3RvZ2V0aGVyJyA/ICR0b2dl dGhlciA6ICRzZXBhcmF0ZTsKPj4gKwkkbm9kZV9zZXQtPnskbm9kZX0tPntzdHJpY3R9ID0gJG5v ZGVfc2V0LT57JG5vZGV9LT57c3RyaWN0fSB8fCAkc2VydmljZS0+e3N0cmljdH07Cj4+ICsgICAg fQo+PiArCj4+ICsgICAgcmV0dXJuICgkdG9nZXRoZXIsICRzZXBhcmF0ZSk7Cj4+ICt9Cj4+ICsK Pj4gKz1oZWFkMyBhcHBseV9wb3NpdGl2ZV9jb2xvY2F0aW9uX3J1bGVzKCR0b2dldGhlciwgJGFs bG93ZWRfbm9kZXMpCj4+ICsKPj4gK0FwcGxpZXMgdGhlIHBvc2l0aXZlIGNvbG9jYXRpb24gcHJl ZmVyZW5jZSBDPCR0b2dldGhlcj4gb24gdGhlIGFsbG93ZWQgbm9kZQo+PiAraGFzaCBzZXQgQzwk YWxsb3dlZF9ub2Rlcz4gZGlyZWN0bHkuCj4+ICsKPj4gK1Bvc2l0aXZlIGNvbG9jYXRpb24gbWVh bnMga2VlcGluZyBzZXJ2aWNlcyB0b2dldGhlciBvbiBhIHNpbmdsZSBub2RlLCBhbmQKPj4gK3Ro ZXJlZm9yZSBtaW5pbWl6aW5nIHRoZSBzZXBhcmF0aW9uIG9mIHNlcnZpY2VzLgo+PiArCj4+ICtU aGUgYWxsb3dlZCBub2RlIGhhc2ggc2V0IEM8JGFsbG93ZWRfbm9kZXM+IGlzIGV4cGVjdGVkIHRv IGNvbnRhaW4gYW55IG5vZGUsCj4+ICt3aGljaCBpcyBhdmFpbGFibGUgdG8gdGhlIHNlcnZpY2Us IGkuZS4gZWFjaCBub2RlIGlzIGN1cnJlbnRseSBvbmxpbmUsIGlzCj4+ICthdmFpbGFibGUgYWNj b3JkaW5nIHRvIG90aGVyIGxvY2F0aW9uIGNvbnN0cmFpbnRzLCBhbmQgdGhlIHNlcnZpY2UgaGFz IG5vdAo+PiArZmFpbGVkIHJ1bm5pbmcgdGhlcmUgeWV0Lgo+PiArCj4+ICs9Y3V0Cj4+ICsKPj4g K3N1YiBhcHBseV9wb3NpdGl2ZV9jb2xvY2F0aW9uX3J1bGVzIHsKPj4gKyAgICBteSAoJHRvZ2V0 aGVyLCAkYWxsb3dlZF9ub2RlcykgPSBAXzsKPj4gKwo+PiArICAgIHJldHVybiBpZiBzY2FsYXIo a2V5cyAlJHRvZ2V0aGVyKSA8IDE7Cj4+ICsKPj4gKyAgICBteSAkbWFuZGF0b3J5X25vZGVzID0g e307Cj4+ICsgICAgbXkgJHBvc3NpYmxlX25vZGVzID0gUFZFOjpIQTo6VG9vbHM6OmludGVyc2Vj dCgkYWxsb3dlZF9ub2RlcywgJHRvZ2V0aGVyKTsKPj4gKwo+PiArICAgIGZvciBteSAkbm9kZSAo c29ydCBrZXlzICUkdG9nZXRoZXIpIHsKPj4gKwkkbWFuZGF0b3J5X25vZGVzLT57JG5vZGV9ID0g MSBpZiAkdG9nZXRoZXItPnskbm9kZX0tPntzdHJpY3R9Owo+PiArICAgIH0KPj4gKwo+PiArICAg IGlmIChzY2FsYXIga2V5cyAlJG1hbmRhdG9yeV9ub2Rlcykgewo+PiArCSMgbGltaXQgdG8gb25s eSB0aGUgbm9kZXMgdGhlIHNlcnZpY2UgbXVzdCBiZSBvbi4KPj4gKwlmb3IgbXkgJG5vZGUgKGtl eXMgJSRhbGxvd2VkX25vZGVzKSB7Cj4+ICsJICAgIG5leHQgaWYgZXhpc3RzKCRtYW5kYXRvcnlf bm9kZXMtPnskbm9kZX0pOwo+PiArCj4+ICsJICAgIGRlbGV0ZSAkYWxsb3dlZF9ub2Rlcy0+eyRu b2RlfTsKPj4gKwl9Cj4+ICsgICAgfSBlbHNpZiAoc2NhbGFyIGtleXMgJSRwb3NzaWJsZV9ub2Rl cykgewo+IAo+IEkgYW0gbm90IHN1cmUgSSBmb2xsb3cgdGhpcyBsb2dpYyBoZXJlLi4gaWYgdGhl cmUgYXJlIGFueSBzdHJpY3QKPiByZXF1aXJlbWVudHMsIHdlIG9ubHkgaG9ub3IgdGhvc2UuLiBp ZiB0aGVyZSBhcmUgbm8gc3RyaWN0IHJlcXVpcmVtZW50cywKPiB3ZSBvbmx5IGhvbm9yIHRoZSBu b24tc3RyaWN0IG9uZXM/CgpQbGVhc2UgY29ycmVjdCBtZSBpZiBJJ20gd3JvbmcsIGJ1dCBhdCBs ZWFzdCBmb3IgbXkgdW5kZXJzdGFuZGluZyB0aGlzIApzZWVtcyByaWdodCwgYmVjYXVzZSB0aGUg bm9kZXMgaW4gJHRvZ2V0aGVyIGFyZSB0aGUgbm9kZXMsIHdoaWNoIG90aGVyIApjby1sb2NhdGVk IHNlcnZpY2VzIGFyZSBhbHJlYWR5IHJ1bm5pbmcgb24uCgpJZiB0aGVyZSBpcyBhIGNvLWxvY2F0 ZWQgc2VydmljZSBhbHJlYWR5IHJ1bm5pbmcgc29tZXdoZXJlIGFuZCB0aGUgCnNlcnZpY2VzIE1V U1QgYmUga2VwdCB0b2dldGhlciwgdGhlbiB0aGVyZSB3aWxsIGJlIGFuIGVudHJ5IGxpa2UgJ25v ZGUzJyAKPT4geyBzdHJpY3QgPT4gMSB9IGluICR0b2dldGhlci4gQUZBSUNTIHdlIGNhbiB0aGVu IGlnbm9yZSBhbnkgCm5vbi1zdHJpY3Qgbm9kZXMgaGVyZSwgYmVjYXVzZSB3ZSBhbHJlYWR5IGtu b3cgd2hlcmUgdGhlIHNlcnZpY2UgTVVTVCBydW4uCgpJZiB0aGVyZSBpcyBhIGNvLWxvY2F0ZWQg c2VydmljZSBhbHJlYWR5IHJ1bm5pbmcgc29tZXdoZXJlIGFuZCB0aGUgCnNlcnZpY2VzIFNIT1VM RCBiZSBrZXB0IHRvZ2V0aGVyLCB0aGVuIHRoZXJlIHdpbGwgYmUgb25lIG9yIG1vcmUgCmVudHJp ZXMsIGUuZy4gJHRvZ2V0aGVyID0geyAnbm9kZTEnID0+IHsgc3RyaWN0ID0+IDAgfSwgJ25vZGUy JyA9PiB7IApzdHJpY3QgPT4gMCB9IH07CgpJZiB0aGVyZSBpcyBubyBjby1sb2NhdGVkIHNlcnZp Y2UgYWxyZWFkeSBydW5uaW5nIHNvbWV3aGVyZSwgdGhlbiAKJHRvZ2V0aGVyID0ge307IGFuZCB0 aGlzIHN1YnJvdXRpbmUgd29uJ3QgZG8gYW55dGhpbmcgdG8gJGFsbG93ZWRfbm9kZXMuCgpJbiB0 aGVvcnksIHdlIGNvdWxkIGFzc3VtZSB0aGF0ICUkbWFuZGF0b3J5X25vZGVzIGhhcyBhbHdheXMg b25seSBvbmUgCm5vZGUsIGJlY2F1c2UgaXQgaXMgbWFuZGF0b3J5LiBCdXQgY3VycmVudGx5LCB3 ZSBkbyBub3QgaGluZGVyIHVzZXJzIAptYW51YWxseSBtaWdyYXRpbmcgYWdhaW5zdCBjb2xvY2F0 aW9uIHJ1bGVzIChtYXliZSB3ZSBzaG91bGQ/KSBvciB3aGF0IAppZiBydWxlcyBzdWRkZW5seSBj aGFuZ2UgZnJvbSBub24tc3RyaWN0IHRvIHN0cmljdC4gV2UgZG8gbm90IAphdXRvLW1pZ3JhdGUg aWYgcnVsZXMgY2hhbmdlIChtYXliZSB3ZSBzaG91bGQ/KS4KCi0tLS0tCgpPbiBhbm90aGVyIG5v dGUsIGludGVyc2VjdCgpIGhlcmUgaXMgdXNlZCB3aXRoICR0b2dldGhlciAoYW5kIApzZXRfZGlm ZmVyZW5jZSgpIHdpdGggJHNlcGFyYXRlIGJlbG93KSwgd2hpY2ggZ29lcyBhZ2FpbnN0IHdoYXQg SSBzYWlkIAppbiBwYXRjaCAjNSB0byBvbmx5IHVzZSBoYXNoIHNldHMsIGJ1dCBhcyBpdCB0cmll cyB0byBnZXQgb25seSB0aGUgdHJ1dGggCnZhbHVlIGFueXdheSwgaXQgd2FzIGZpbmUgaGVyZS4g SSdsbCBtYWtlIHRoYXQgbW9yZSByb2J1c3QgaW4gYSB2MS4KCj4gCj4+ICsJIyBsaW1pdCB0byB0 aGUgcG9zc2libGUgbm9kZXMgdGhlIHNlcnZpY2Ugc2hvdWxkIGJlIG9uLCBpZiB0aGVyZSBhcmUg YW55Lgo+PiArCWZvciBteSAkbm9kZSAoa2V5cyAlJGFsbG93ZWRfbm9kZXMpIHsKPj4gKwkgICAg bmV4dCBpZiBleGlzdHMoJHBvc3NpYmxlX25vZGVzLT57JG5vZGV9KTsKPj4gKwo+PiArCSAgICBk ZWxldGUgJGFsbG93ZWRfbm9kZXMtPnskbm9kZX07Cj4+ICsJfQo+IAo+IHRoaXMgaXMgdGhlIHNh bWUgY29kZSB0d2ljZSwganVzdCBvcGVyYXRpbmcgb24gZGlmZmVyZW50IGhhc2gKPiByZWZlcmVu Y2VzLCBzbyBjb3VsZCBwcm9iYWJseSBiZSBhIGxvdCBzaG9ydGVyLiB0aGUgbmV4dCBhbmQgZGVs ZXRlCj4gY291bGQgYWxzbyBiZSBjb21iaW5lZCAoYGRlbGV0ZSAuLiBpZiAhLi4uYCkuCgpZZXMs IEkgd2FudGVkIHRvIGJyZWFrIGl0IGRvd24gbW9yZSBhbmQgd2lsbCBpbXByb3ZlIGl0LCB0aGFu a3MgZm9yIHRoZSAKc3VnZ2VzdGlvbiB3aXRoIHRoZSBkZWxldGUgcG9zdC1pZiEKCkkgZ3Vlc3Mg d2UgY2FuIGFsc28gbW92ZSB0aGUgZGVmaW5pdGlvbiArIGFzc2lnbm1lbnQgb2YgJHBvc3NpYmxl X25vZGVzIApkb3duIGhlcmUgdG9vLCBhcyBpdCB3b24ndCBiZSBuZWVkZWQgZm9yIHRoZSAkbWFu ZGF0b3J5X25vZGVzIGNhc2UsIApkZXBlbmRpbmcgaWYgdGhlIGdlbmVyYWwgYmVoYXZpb3Igd29u J3QgYmUgY2hhbmdlZC4KCj4gCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICs9aGVhZDMgYXBwbHlf bmVnYXRpdmVfY29sb2NhdGlvbl9ydWxlcygkc2VwYXJhdGUsICRhbGxvd2VkX25vZGVzKQo+PiAr Cj4+ICtBcHBsaWVzIHRoZSBuZWdhdGl2ZSBjb2xvY2F0aW9uIHByZWZlcmVuY2UgQzwkc2VwYXJh dGU+IG9uIHRoZSBhbGxvd2VkIG5vZGUKPj4gK2hhc2ggc2V0IEM8JGFsbG93ZWRfbm9kZXM+IGRp cmVjdGx5Lgo+PiArCj4+ICtOZWdhdGl2ZSBjb2xvY2F0aW9uIG1lYW5zIGtlZXBpbmcgc2Vydmlj ZXMgc2VwYXJhdGUgb24gbXVsdGlwbGUgbm9kZXMsIGFuZAo+PiArdGhlcmVmb3JlIG1heGltaXpp bmcgdGhlIHNlcGFyYXRpb24gb2Ygc2VydmljZXMuCj4+ICsKPj4gK1RoZSBhbGxvd2VkIG5vZGUg aGFzaCBzZXQgQzwkYWxsb3dlZF9ub2Rlcz4gaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhbnkgbm9k ZSwKPj4gK3doaWNoIGlzIGF2YWlsYWJsZSB0byB0aGUgc2VydmljZSwgaS5lLiBlYWNoIG5vZGUg aXMgY3VycmVudGx5IG9ubGluZSwgaXMKPj4gK2F2YWlsYWJsZSBhY2NvcmRpbmcgdG8gb3RoZXIg bG9jYXRpb24gY29uc3RyYWludHMsIGFuZCB0aGUgc2VydmljZSBoYXMgbm90Cj4+ICtmYWlsZWQg cnVubmluZyB0aGVyZSB5ZXQuCj4+ICsKPj4gKz1jdXQKPj4gKwo+PiArc3ViIGFwcGx5X25lZ2F0 aXZlX2NvbG9jYXRpb25fcnVsZXMgewo+PiArICAgIG15ICgkc2VwYXJhdGUsICRhbGxvd2VkX25v ZGVzKSA9IEBfOwo+PiArCj4+ICsgICAgcmV0dXJuIGlmIHNjYWxhcihrZXlzICUkc2VwYXJhdGUp IDwgMTsKPj4gKwo+PiArICAgIG15ICRtYW5kYXRvcnlfbm9kZXMgPSB7fTsKPj4gKyAgICBteSAk cG9zc2libGVfbm9kZXMgPSBQVkU6OkhBOjpUb29sczo6c2V0X2RpZmZlcmVuY2UoJGFsbG93ZWRf bm9kZXMsICRzZXBhcmF0ZSk7Cj4gCj4gdGhpcyBpcyBjb25mdXNpbmcgb3IgSSBtaXN1bmRlcnN0 YW5kIHNvbWV0aGluZyBoZXJlLCBzZWUgYmVsb3cuLgo+IAo+PiArCj4+ICsgICAgZm9yIG15ICRu b2RlIChzb3J0IGtleXMgJSRzZXBhcmF0ZSkgewo+PiArCSRtYW5kYXRvcnlfbm9kZXMtPnskbm9k ZX0gPSAxIGlmICRzZXBhcmF0ZS0+eyRub2RlfS0+e3N0cmljdH07Cj4+ICsgICAgfQo+PiArCj4+ ICsgICAgaWYgKHNjYWxhciBrZXlzICUkbWFuZGF0b3J5X25vZGVzKSB7Cj4+ICsJIyBsaW1pdCB0 byB0aGUgbm9kZXMgdGhlIHNlcnZpY2UgbXVzdCBub3QgYmUgb24uCj4gCj4gdGhpcyBpcyBtaXNz aW5nIGEgbm90Pwo+IHdlIGFyZSBsaW1pdGluZyB0byB0aGUgbm9kZXMgdGhlIHNlcnZpY2UgbXVz dCBub3Qgbm90IGJlIG9uIDotUAo+IAo+IHNob3VsZCB3ZSByZW5hbWUgbWFuZGF0b3J5X25vZGVz IHRvIGZvcmJpZGRlbl9ub2Rlcz8KCkdvb2QgaWRlYSwgeWVzIHRoaXMgd291bGQgYmUgYSBtdWNo IGJldHRlciBmaXR0aW5nIG5hbWUuIFdoZW4gSSB3cm90ZSAKJG1hbmRhdG9yeV9ub2RlcyBhcyBh Ym92ZSwgSSB3YXMgYWx3YXlzIHRoaW5raW5nICdtYW5kYXRvcnkgdG8gbm90IGJlIAp0aGVyZScu Li4KCj4gCj4+ICsJZm9yIG15ICRub2RlIChrZXlzICUkYWxsb3dlZF9ub2Rlcykgewo+IAo+IHRo aXMgY291bGQganVzdCBsb29wIG92ZXIgdGhlIGZvcmJpZGRlbiBub2RlcyBhbmQgZGVsZXRlIHRo ZW0gZnJvbQo+IGFsbG93ZWQgbm9kZXM/CgpZZXMsIHRoaXMgc2hvdWxkIGFsc28gYmUgcG9zc2li bGUuIEkgdGhpbmsgSSBoYWQgYSBjb3VudGVyIGV4YW1wbGUgaW4gYW4gCmVhcmxpZXIgdmVyc2lv biwgd2hlcmUgdGhpcyBkaWRuJ3Qgd29yaywgYnV0IG5vdyBpdCBzaG91bGQgbWFrZSBzZW5zZS4K Cj4gCj4+ICsJICAgIG5leHQgaWYgIWV4aXN0cygkbWFuZGF0b3J5X25vZGVzLT57JG5vZGV9KTsK Pj4gKwo+PiArCSAgICBkZWxldGUgJGFsbG93ZWRfbm9kZXMtPnskbm9kZX07Cj4+ICsJfQo+PiAr ICAgIH0gZWxzaWYgKHNjYWxhciBrZXlzICUkcG9zc2libGVfbm9kZXMpIHsKPiAKPiBzaW1pbGFy IHRvIGFib3ZlIC0gaWYgd2UgaGF2ZSBzdHJpY3QgZXhjbHVzaW9ucywgd2UgaG9ub3IgdGhlbSwg YnV0IHdlCj4gaWdub3JlIHRoZSBub24tc3RyaWN0IGV4Y2x1c2lvbnMgdW5sZXNzIHRoZXJlIGFy ZSBubyBzdHJpY3Qgb25lcz8KClNhbWUgcHJpbmNpcGxlIGFib3ZlLCBidXQgbm93ICRzZXBhcmF0 ZSBob2xkcyBhbGwgbm9kZXMgd2hlcmUgdGhlIAphbnRpLWNvbG9jYXRlZCBzZXJ2aWNlcyBhcmUg YWxyZWFkeSBydW5uaW5nIG9uLCBzbyB3ZSdyZSB0cnlpbmcgdG8gbm90IApzZWxlY3QgYSBub2Rl IGZyb20gdGhlcmUuCgo+IAo+PiArCSMgbGltaXQgdG8gdGhlIG5vZGVzIHRoZSBzZXJ2aWNlIHNo b3VsZCBub3QgYmUgb24sIGlmIGFueS4KPj4gKwlmb3IgbXkgJG5vZGUgKGtleXMgJSRhbGxvd2Vk X25vZGVzKSB7Cj4+ICsJICAgIG5leHQgaWYgZXhpc3RzKCRwb3NzaWJsZV9ub2Rlcy0+eyRub2Rl fSk7Cj4+ICsKPj4gKwkgICAgZGVsZXRlICRhbGxvd2VkX25vZGVzLT57JG5vZGV9Owo+PiArCX0K Pj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK3N1YiBhcHBseV9jb2xvY2F0aW9uX3J1bGVzIHsKPj4g KyAgICBteSAoJHJ1bGVzLCAkc2lkLCAkYWxsb3dlZF9ub2RlcywgJG9ubGluZV9ub2RlX3VzYWdl KSA9IEBfOwo+PiArCj4+ICsgICAgbXkgKCR0b2dldGhlciwgJHNlcGFyYXRlKSA9IGdldF9jb2xv Y2F0aW9uX3ByZWZlcmVuY2UoJHJ1bGVzLCAkc2lkLCAkb25saW5lX25vZGVfdXNhZ2UpOwo+PiAr Cj4+ICsgICAgYXBwbHlfcG9zaXRpdmVfY29sb2NhdGlvbl9ydWxlcygkdG9nZXRoZXIsICRhbGxv d2VkX25vZGVzKTsKPj4gKyAgICBhcHBseV9uZWdhdGl2ZV9jb2xvY2F0aW9uX3J1bGVzKCRzZXBh cmF0ZSwgJGFsbG93ZWRfbm9kZXMpOwo+PiArfQo+PiArCj4+ICAgc3ViIHNlbGVjdF9zZXJ2aWNl X25vZGUgewo+PiAtICAgIG15ICgkZ3JvdXBzLCAkb25saW5lX25vZGVfdXNhZ2UsICRzaWQsICRz ZXJ2aWNlX2NvbmYsICRjdXJyZW50X25vZGUsICR0cnlfbmV4dCwgJHRyaWVkX25vZGVzLCAkbWFp bnRlbmFuY2VfZmFsbGJhY2ssICRiZXN0X3Njb3JlZCkgPSBAXzsKPj4gKyAgICAjIFRPRE8gQ2xl YW51cCB0aGlzIHNpZ25hdHVyZSBwb3N0LVJGQwo+PiArICAgIG15ICgkcnVsZXMsICRncm91cHMs ICRvbmxpbmVfbm9kZV91c2FnZSwgJHNpZCwgJHNlcnZpY2VfY29uZiwgJGN1cnJlbnRfbm9kZSwg JHRyeV9uZXh0LCAkdHJpZWRfbm9kZXMsICRtYWludGVuYW5jZV9mYWxsYmFjaywgJGJlc3Rfc2Nv cmVkKSA9IEBfOwo+PiAgIAo+PiAgICAgICBteSAkZ3JvdXAgPSBnZXRfc2VydmljZV9ncm91cCgk Z3JvdXBzLCAkb25saW5lX25vZGVfdXNhZ2UsICRzZXJ2aWNlX2NvbmYpOwo+PiAgIAo+PiBAQCAt MTg5LDYgKzM4Miw4IEBAIHN1YiBzZWxlY3Rfc2VydmljZV9ub2RlIHsKPj4gICAKPj4gICAgICAg cmV0dXJuICRjdXJyZW50X25vZGUgaWYgKCEkdHJ5X25leHQgJiYgISRiZXN0X3Njb3JlZCkgJiYg JHByaV9ub2Rlcy0+eyRjdXJyZW50X25vZGV9Owo+PiAgIAo+PiArICAgIGFwcGx5X2NvbG9jYXRp b25fcnVsZXMoJHJ1bGVzLCAkc2lkLCAkcHJpX25vZGVzLCAkb25saW5lX25vZGVfdXNhZ2UpOwo+ PiArCj4+ICAgICAgIG15ICRzY29yZXMgPSAkb25saW5lX25vZGVfdXNhZ2UtPnNjb3JlX25vZGVz X3RvX3N0YXJ0X3NlcnZpY2UoJHNpZCwgJGN1cnJlbnRfbm9kZSk7Cj4+ICAgICAgIG15IEBub2Rl cyA9IHNvcnQgewo+PiAgIAkkc2NvcmVzLT57JGF9IDw9PiAkc2NvcmVzLT57JGJ9IHx8ICRhIGNt cCAkYgo+PiBAQCAtNzU4LDYgKzk1Myw3IEBAIHN1YiBuZXh0X3N0YXRlX3JlcXVlc3Rfc3RhcnQg ewo+PiAgIAo+PiAgICAgICBpZiAoJHNlbGYtPntjcnN9LT57cmViYWxhbmNlX29uX3JlcXVlc3Rf c3RhcnR9KSB7Cj4+ICAgCW15ICRzZWxlY3RlZF9ub2RlID0gc2VsZWN0X3NlcnZpY2Vfbm9kZSgK Pj4gKwkgICAgJHNlbGYtPntydWxlc30sCj4+ICAgCSAgICAkc2VsZi0+e2dyb3Vwc30sCj4+ICAg CSAgICAkc2VsZi0+e29ubGluZV9ub2RlX3VzYWdlfSwKPj4gICAJICAgICRzaWQsCj4+IEBAIC03 NzEsNiArOTY3LDkgQEAgc3ViIG5leHRfc3RhdGVfcmVxdWVzdF9zdGFydCB7Cj4+ICAgCW15ICRz ZWxlY3RfdGV4dCA9ICRzZWxlY3RlZF9ub2RlIG5lICRjdXJyZW50X25vZGUgPyAnbmV3JyA6ICdj dXJyZW50JzsKPj4gICAJJGhhZW52LT5sb2coJ2luZm8nLCAic2VydmljZSAkc2lkOiByZS1iYWxh bmNlIHNlbGVjdGVkICRzZWxlY3RfdGV4dCBub2RlICRzZWxlY3RlZF9ub2RlIGZvciBzdGFydHVw Iik7Cj4+ICAgCj4+ICsJIyBUT0RPIEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIGluZm9ybWF0 aW9uIHdvdWxkIGJlIHJldHJpZXZlZCBmcm9tICRzcy8kc2QgcG9zdC1SRkMKPj4gKwkkc2VsZi0+ e29ubGluZV9ub2RlX3VzYWdlfS0+cGluX3NlcnZpY2Vfbm9kZSgkc2lkLCAkc2VsZWN0ZWRfbm9k ZSk7Cj4+ICsKPj4gICAJaWYgKCRzZWxlY3RlZF9ub2RlIG5lICRjdXJyZW50X25vZGUpIHsKPj4g ICAJICAgICRjaGFuZ2Vfc2VydmljZV9zdGF0ZS0+KCRzZWxmLCAkc2lkLCAncmVxdWVzdF9zdGFy dF9iYWxhbmNlJywgbm9kZSA9PiAkY3VycmVudF9ub2RlLCB0YXJnZXQgPT4gJHNlbGVjdGVkX25v ZGUpOwo+PiAgIAkgICAgcmV0dXJuOwo+PiBAQCAtODk4LDYgKzEwOTcsNyBAQCBzdWIgbmV4dF9z dGF0ZV9zdGFydGVkIHsKPj4gICAJICAgIH0KPj4gICAKPj4gICAJICAgIG15ICRub2RlID0gc2Vs ZWN0X3NlcnZpY2Vfbm9kZSgKPj4gKwkJJHNlbGYtPntydWxlc30sCj4+ICAgCSAgICAgICAgJHNl bGYtPntncm91cHN9LAo+PiAgIAkJJHNlbGYtPntvbmxpbmVfbm9kZV91c2FnZX0sCj4+ICAgCQkk c2lkLAo+PiBAQCAtMTAwNCw2ICsxMjA0LDcgQEAgc3ViIG5leHRfc3RhdGVfcmVjb3Zlcnkgewo+ PiAgICAgICAkc2VsZi0+cmVjb21wdXRlX29ubGluZV9ub2RlX3VzYWdlKCk7ICMgd2Ugd2FudCB0 aGUgbW9zdCBjdXJyZW50IG5vZGUgc3RhdGUKPj4gICAKPj4gICAgICAgbXkgJHJlY292ZXJ5X25v ZGUgPSBzZWxlY3Rfc2VydmljZV9ub2RlKAo+PiArCSRzZWxmLT57cnVsZXN9LAo+PiAgIAkkc2Vs Zi0+e2dyb3Vwc30sCj4+ICAgCSRzZWxmLT57b25saW5lX25vZGVfdXNhZ2V9LAo+PiAgIAkkc2lk LAo+PiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdF9mYWlsb3ZlcjEucGwgYi9zcmMvdGVzdC90 ZXN0X2ZhaWxvdmVyMS5wbAo+PiBpbmRleCAzMDhlYWIzLi40Yzg0ZmJkIDEwMDc1NQo+PiAtLS0g YS9zcmMvdGVzdC90ZXN0X2ZhaWxvdmVyMS5wbAo+PiArKysgYi9zcmMvdGVzdC90ZXN0X2ZhaWxv dmVyMS5wbAo+PiBAQCAtOCw2ICs4LDggQEAgdXNlIFBWRTo6SEE6Okdyb3VwczsKPj4gICB1c2Ug UFZFOjpIQTo6TWFuYWdlcjsKPj4gICB1c2UgUFZFOjpIQTo6VXNhZ2U6OkJhc2ljOwo+PiAgIAo+ PiArbXkgJHJ1bGVzID0ge307Cj4+ICsKPj4gICBteSAkZ3JvdXBzID0gUFZFOjpIQTo6R3JvdXBz LT5wYXJzZV9jb25maWcoImdyb3Vwcy50bXAiLCA8PEVPRCk7Cj4+ICAgZ3JvdXA6IHByZWZlcl9u b2RlMQo+PiAgIAlub2RlcyBub2RlMQo+PiBAQCAtMzEsNyArMzMsNyBAQCBzdWIgdGVzdCB7Cj4+ ICAgICAgIG15ICgkZXhwZWN0ZWRfbm9kZSwgJHRyeV9uZXh0KSA9IEBfOwo+PiAgICAgICAKPj4g ICAgICAgbXkgJG5vZGUgPSBQVkU6OkhBOjpNYW5hZ2VyOjpzZWxlY3Rfc2VydmljZV9ub2RlCj4+ IC0JKCRncm91cHMsICRvbmxpbmVfbm9kZV91c2FnZSwgInZtOjExMSIsICRzZXJ2aWNlX2NvbmYs ICRjdXJyZW50X25vZGUsICR0cnlfbmV4dCk7Cj4+ICsJKCRydWxlcywgJGdyb3VwcywgJG9ubGlu ZV9ub2RlX3VzYWdlLCAidm06MTExIiwgJHNlcnZpY2VfY29uZiwgJGN1cnJlbnRfbm9kZSwgJHRy eV9uZXh0KTsKPj4gICAKPj4gICAgICAgbXkgKHVuZGVmLCB1bmRlZiwgJGxpbmUpID0gY2FsbGVy KCk7Cj4+ICAgICAgIGRpZSAidW5leHBlY3RlZCByZXN1bHQ6ICRub2RlICE9ICR7ZXhwZWN0ZWRf bm9kZX0gYXQgbGluZSAkbGluZVxuIgo+PiAtLSAKPj4gMi4zOS41Cj4+Cj4+Cj4+Cj4+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IHB2ZS1kZXZlbCBt YWlsaW5nIGxpc3QKPj4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+IGh0dHBzOi8vbGlz dHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo+Pgo+Pgo+ Pgo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+ IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1k ZXZlbAo+IAo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpo dHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2 ZWwK