From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 857E81FF179 for ; Wed, 12 Nov 2025 17:39:04 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C58589CE3; Wed, 12 Nov 2025 17:39:51 +0100 (CET) Message-ID: <0786d417-db35-4c7e-96e2-66620ad26e9c@proxmox.com> Date: Wed, 12 Nov 2025 17:39:46 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Wolfgang Bumiller References: <20251112092225.17890-1-s.hanreich@proxmox.com> <20251112092225.17890-2-s.hanreich@proxmox.com> Content-Language: en-US From: Stefan Hanreich In-Reply-To: X-SPAM-LEVEL: Spam detection results: 0 AWL 0.598 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 KAM_LOTSOFHASH 0.25 Emails with lots of hash-like gibberish SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pdm-devel] [PATCH proxmox 1/3] pve-api-types: add FixedString type X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Cc: pdm-devel@lists.proxmox.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" dGhhbmtzIGZvciB0aGUgcmV2aWV3ISBJbmNvcnBvcmF0ZWQgYWxsIHlvdXIgc3VnZ2VzdGlvbnMs IHdhaXRpbmcgd2l0aAp0aGUgdjIgdGlsIHRvbW9ycm93LCBpbiBjYXNlIHNvbWV0aGluZyBlbHNl IGNvbWVzIHVwLgoKT24gMTEvMTIvMjUgMTE6NDkgQU0sIFdvbGZnYW5nIEJ1bWlsbGVyIHdyb3Rl Ogo+IE9uIFdlZCwgTm92IDEyLCAyMDI1IGF0IDEwOjIyOjA1QU0gKzAxMDAsIFN0ZWZhbiBIYW5y ZWljaCB3cm90ZToKPj4gQSBjdXN0b20sIGltbXV0YWJsZSwgc3RyaW5nIHR5cGUsIHRoYXQgaXMg Y29waWFibGUsIHdoaWNoIGNhbiBob2xkIHVwCj4+IHRvIDIzIGNoYXJhY3RlcnMuIEl0IHdpbGwg YmUgdXNlZCBsYXRlciBmb3Igc3RvcmluZyB0aGUgbmFtZSBvZgo+PiB1bmtub3duIGVudW0gdmFy aWFudHMgd2hlbiBwYXJzaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgZW51bQo+PiBwcm9wZXJ0aWVz LiBUaGUgbWFpbiByZWFzb24gZm9yIGludHJvZHVjaW5nIHRoaXMgdHlwZSBpcyB0aGF0IGl0cyBj b3B5Cj4+IGFzIG9wcG9zZWQgdG8gU3RyaW5nLCB3aGljaCBsZXRzIHVzIGtlZXAgdGhlIENvcHkg aW1wbGVtZW50YXRpb24gZm9yCj4+IHRoZSBleGlzdGluZyBlbnVtcy4KPj4KPj4gTWFpbiByZWFz b24gZm9yIGNob29zaW5nIDIzIGNoYXJhY3RlcnMgaXMgdGhlIGZhY3QgdGhhdCBTdHJpbmcgaXMg MjQKPj4gYnl0ZXMgbGFyZ2UgYXMgd2VsbCAocHRyLCBsZW4sIGNhcGFjaXR5KS4KPj4KPj4gU2ln bmVkLW9mZi1ieTogU3RlZmFuIEhhbnJlaWNoIDxzLmhhbnJlaWNoQHByb3htb3guY29tPgo+PiAt LS0KPj4gIHB2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL2ZpeGVkX3N0cmluZy5ycyB8IDMzMSArKysr KysrKysrKysrKysrKysrKysrKysKPj4gIHB2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL21vZC5ycyAg ICAgICAgICB8ICAgMyArCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDMzNCBpbnNlcnRpb25zKCspCj4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgcHZlLWFwaS10eXBlcy9zcmMvdHlwZXMvZml4ZWRfc3RyaW5n LnJzCj4+Cj4+IGRpZmYgLS1naXQgYS9wdmUtYXBpLXR5cGVzL3NyYy90eXBlcy9maXhlZF9zdHJp bmcucnMgYi9wdmUtYXBpLXR5cGVzL3NyYy90eXBlcy9maXhlZF9zdHJpbmcucnMKPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAuLmYxNjkyMjI3Cj4+IC0tLSAvZGV2L251 bGwKPj4gKysrIGIvcHZlLWFwaS10eXBlcy9zcmMvdHlwZXMvZml4ZWRfc3RyaW5nLnJzCj4+IEBA IC0wLDAgKzEsMzMxIEBACj4+ICt1c2Ugc3RkOjpjbXA6Ok9yZGVyaW5nOwo+PiArdXNlIHN0ZDo6 ZXJyb3I6OkVycm9yOwo+PiArdXNlIHN0ZDo6Zm10Ojp7RGVidWcsIERpc3BsYXksIEZvcm1hdHRl cn07Cj4+ICt1c2Ugc3RkOjpvcHM6OkRlcmVmOwo+PiArdXNlIHN0ZDo6c3RyOjpGcm9tU3RyOwo+ PiArCj4+ICt1c2Ugc2VyZGU6OntEZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKPj4gKwo+PiArLy8v IEVycm9yIHR5cGUgdXNlZCBieSBjb25zdHJ1Y3RvcnMgb2YgW2BGaXhlZFN0cmluZ2BdCj4+ICsj W2Rlcml2ZShDbG9uZSwgQ29weSwgRGVidWcpXQo+PiArcHViIGVudW0gRml4ZWRTdHJpbmdFcnJv ciB7Cj4+ICsgICAgVG9vTG9uZywKPj4gK30KPiAKPiBJTU8gdGhpcyBkb2VzIG5vdCBuZWVkIHRv IGJlIGFuIGVudW0uIGBwdWIgc3RydWN0IFRvb0xvbmdFcnJvcmAgc2hvdWxkCj4gYmUgZW5vdWdo LgoKYWxzbyB0aG91Z2h0IGFib3V0IGl0LCB3YW50ZWQgaXQgdG8gYmUgcG90ZW50aWFsbHkgZXh0 ZW5kYWJsZSB3aXRob3V0CnRvbyBtdWNoIGhhc3NsZSAtIGJ1dCB3b3JrcyBmb3IgbWUgYXMgd2Vs bC4gQWRkaXRpb25hbCBlcnJvciB2YXJpYW50cwphcmUgdW5saWtlbHkgYW55d2F5Li4KCj4+ICsK Pj4gK2ltcGwgRXJyb3IgZm9yIEZpeGVkU3RyaW5nRXJyb3Ige30KPj4gKwo+PiAraW1wbCBEaXNw bGF5IGZvciBGaXhlZFN0cmluZ0Vycm9yIHsKPj4gKyAgICBmbiBmbXQoJnNlbGYsIGY6ICZtdXQg c3RkOjpmbXQ6OkZvcm1hdHRlcjwnXz4pIC0+IFJlc3VsdDwoKSwgc3RkOjpmbXQ6OkVycm9yPiB7 Cj4gCj4gXiB5b3UncmUgaW1wb3J0aW5nIGBGb3JtYXR0ZXJgLgo+IEFuZCBvbiB0aGF0IG5vdGU6 IHBlcnNvbmFsbHkgSSBwcmVmZXIgdG8gaW1wb3J0IGBzdGQ6OmZtdGAgYW5kIHByZWZpeAo+IGl0 cyBpdGVtcyB3aXRoIGBmbXQ6OipgLgo+IAo+PiArICAgICAgICBmLndyaXRlX3N0cihtYXRjaCBz ZWxmIHsKPj4gKyAgICAgICAgICAgIFNlbGY6OlRvb0xvbmcgPT4gInN0cmluZyBpcyBsb25nZXIg dGhhbiAyMyBjaGFyYWN0ZXJzIiwKPj4gKyAgICAgICAgfSkKPj4gKyAgICB9Cj4+ICt9Cj4+ICsK Pj4gKy8vLyBBbiBpbW11dGFibGUgc3RyaW5nIHR5cGUgd2l0aCBhIG1heGltdW0gc2l6ZSBvZiAy MyBieXRlcy4KPj4gKy8vLwo+PiArLy8vIEFmdGVyIGNvbnN0cnVjdGlvbiBpdCBpcyBndWFyYW50 ZWVkIHRoYXQgaXRzIGNvbnRlbnRzIGFyZToKPj4gKy8vLyAqIHZhbGlkIHV0Zi04Cj4+ICsvLy8g KiBub3QgbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycwo+PiArLy8vCj4+ICsvLy8gRml4ZWRTdHJp bmcgaXMgaW1tdXRhYmxlLCB0aGVyZWZvcmUgaXQgaXMgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0 aGUgaW52YXJpYW50cyBvbmx5IGF0Cj4+ICsvLy8gY29uc3RydWN0aW9uIHRpbWUgdG8gZ3VhcmFu dGVlIHRoYXQgdGhleSB3aWxsIGFsd2F5cyBob2xkIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIHRo ZQo+PiArLy8vIHN0cnVjdC4KPj4gKyNbZGVyaXZlKENsb25lLCBDb3B5KV0KPj4gK3B1YiBzdHJ1 Y3QgRml4ZWRTdHJpbmcgewo+PiArICAgIGJ1ZjogW3U4OyAyM10sCj4+ICsgICAgbGVuOiB1OCwK Pj4gK30KPj4gKwo+PiAraW1wbCBGaXhlZFN0cmluZyB7Cj4+ICsgICAgLy8vIENyZWF0ZXMgYSBu ZXcgRml4ZWRTdHJpbmcgaW5zdGFuY2UgZnJvbSBhIHN0ciByZWZlcmVuY2UuCj4+ICsgICAgLy8v Cj4+ICsgICAgLy8vICMgRXJyb3JzCj4+ICsgICAgLy8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gYW4gZXJyb3IgaWY6Cj4+ICsgICAgLy8vICogVGhlIHBhc3NlZCBzdHJpbmcgaXMgbG9uZ2Vy IHRoYW4gMjMgYnl0ZXMKPj4gKyAgICBwdWIgZm4gbmV3KHZhbHVlOiAmc3RyKSAtPiBSZXN1bHQ8 U2VsZiwgRml4ZWRTdHJpbmdFcnJvcj4gewo+PiArICAgICAgICBpZiB2YWx1ZS5sZW4oKSA+IDIz IHsKPj4gKyAgICAgICAgICAgIHJldHVybiBFcnIoRml4ZWRTdHJpbmdFcnJvcjo6VG9vTG9uZyk7 Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBsZXQgbXV0IGJ1ZiA9IFswOyAyM107Cj4+ ICsgICAgICAgIGJ1ZlsuLnZhbHVlLmxlbigpXS5jb3B5X2Zyb21fc2xpY2UodmFsdWUuYXNfYnl0 ZXMoKSk7Cj4+ICsKPj4gKyAgICAgICAgT2soU2VsZiB7Cj4+ICsgICAgICAgICAgICBidWYsCj4+ ICsgICAgICAgICAgICAvLyBTQUZFVFk6IHNlbGYubGVuIGlzIGF0IGxlYXN0IDAgYW5kIGF0IG1v c3QgMjMsIHdoaWNoIGZpdHMgaW50byB1OAo+PiArICAgICAgICAgICAgbGVuOiB2YWx1ZS5sZW4o KSBhcyB1OCwKPj4gKyAgICAgICAgfSkKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICAvLy8gQ3JlYXRl cyBhIG5ldyBGaXhlZFN0cmluZyBpbnN0YW5jZSBmcm9tIGEgc3RyIHJlZmVyZW5jZSwgdHJ1bmNh dGluZyBpZiByZXF1aXJlZAo+PiArICAgIC8vLwo+PiArICAgIC8vLyBJdCB3b3JrcyBieSBjb3B5 aW5nIHRoZSBieXRlcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZSBpbnRvIGl0cyBvd24gbG9jYWwg YnVmZmVyLiBJZiB0aGUKPj4gKyAgICAvLy8gc3RyaW5nIGlzIGxvbmdlciB0aGFuIDIzIGJ5dGVz LCB0aGVuIHRoaXMgbWV0aG9kcyB3aWxsIHRydW5jYXRlIHRoZSBzdHJpbmcgYXQgdGhlIG5lYXJl c3QKPj4gKyAgICAvLy8gdXRmLTggYm91bmRhcnksIHNvIGV2ZW4gaWYgYSBzdHJpbmcgbG9uZ2Vy IHRoYW4gMjMgY2hhcmFjdGVycyBpcyBwYXNzZWQgaW4sIGl0IGlzIHBvc3NpYmxlCj4+ICsgICAg Ly8vIHRoYXQgaXQgZ2V0cyB0cnVuY2F0ZWQgdG8gYSBsZW5ndGggbGVzcyB0aGFuIDIzIGlmIHRo ZSB1dGYtOCBib3VuZGFyeSBkb2Vzbid0IHBlcmZlY3RseQo+PiArICAgIC8vLyBhbGlnbiB3aXRo IHRoZSAyMyBieXRlcyBsaW1pdC4KPj4gKyAgICBwdWIgZm4gbmV3X3RydW5jYXRlZCh2YWx1ZTog JnN0cikgLT4gU2VsZiB7Cj4gCj4gSSBkb24ndCB0aGluayB3ZSBzaG91bGQga2VlcCB0aGlzIHVu bGVzcyB3ZSBhbHNvIGhhdmUgYSB3YXkgb2YgY2hlY2tpbmcKPiBmb3IgdGhpcy4KPiBJbiBjYXNl IHdlIGRvIHdhbnQgdG8gdXNlIHRoaXM6IHNpbmNlIHZhbHVlcyB1cCB0byAzMSAoYSBwb3RlbnRp YWwKPiBzdGlsbC1jaGVhcC1lbm91Z2ggZXh0ZW5zaW9uIHRvIHRoaXMgYEZpeGVkU3RyaW5nYCdz IGxlbmd0aCAoc2luY2UgaXQKPiB3b3VsZCB0aGVuIGp1c3QgYmUgNCBwb2ludGVycyBpbiBzaXpl KSkgb25seSByZXF1aXJlIDUgYml0cywgd2UgaGF2ZSAzCj4gYml0cyByZW1haW5pbmcgaW4gdGhl IGxlbmd0aCBieXRlIHdoaWNoIGNvdWxkIGJlIHVzZWQgdG8gc2lnbmFsIHRoYXQKPiB0aGlzIHdh cyBhIHRydW5jYXRlZCBzdHJpbmcsIHdoaWNoIGNvdWxkIGJlIHJldHVybmVkIHZpYSBhCj4gYC5p c190cnVuY2F0ZWQoKWAgbWV0aG9kLCBhbmQgd2UgY291bGQgcmVmdXNlIHRvIHNlcmlhbGl6ZSBz dWNoIGEgc3RyaW5nCj4gd2l0aG91dCBjYWxsaW5nIHNvbWUgZXh0cmEgbWV0aG9kIGZpcnN0IChh bmQgaW5jbHVkZSBzb21lIG1hcmtlciBpbiB0aGUKPiBEZWJ1ZyBpbXBsKT8KPiAKPiBCdXQgSU1P OiBmb3Igbm93LCB3ZSBqdXN0IGRvbid0IG5lZWQgaXQuCj4gCgpkcm9wcGVkIGl0IG5vdyB0aGVu Cgo+PiArICAgICAgICAvLyBUT0RPOiByZXBsYWNlLCBvbmNlIFtgc3RyOjpmbG9vcl9jaGFyX2Jv dW5kYXJ5YF0gaGFzIGJlZW4gc3RhYmlsaXplZAo+PiArICAgICAgICBsZXQgbGVuID0gaWYgdmFs dWUubGVuKCkgPiAyMyB7Cj4+ICsgICAgICAgICAgICBsZXQgbXV0IGluZGV4ID0gMjM7Cj4+ICsK Pj4gKyAgICAgICAgICAgIHdoaWxlIGluZGV4ID4gMCAmJiAhdmFsdWUuaXNfY2hhcl9ib3VuZGFy eShpbmRleCkgewo+PiArICAgICAgICAgICAgICAgIGluZGV4ID0gaW5kZXggLSAxOwo+IAo+IGlu ZGV4IC09IDE7IDstKQo+IAo+IG9yOgo+ICAgICBwYW5pYyEoIldobyBsZXQgRG9taW5payBhZGQg ZW1vamlzIHRvIGVudW1zPyIpCj4gCj4+ICsgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAg ICAgIGluZGV4Cj4+ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICB2YWx1ZS5sZW4o KQo+PiArICAgICAgICB9Owo+IAo+IF4gQWN0dWFsbHkgdGhlIGFib3ZlIGNvdWxkIGp1c3QgYmUg c2hvcnRlbmVkIHRvCj4gCj4gbGV0IG11dCBsZW4gPSB2YWx1ZS5sZW4oKTsKPiBpZiBsZW4gPiAy MyB7Cj4gICAgIGxlbiA9IDIzOwo+ICAgICB3aGlsZSAuLi4geyBsZW4gLT0gMSB9Cj4gfQo+IAo+ PiArCj4+ICsgICAgICAgIGxldCBtdXQgYnVmID0gWzA7IDIzXTsKPj4gKyAgICAgICAgYnVmWy4u bGVuXS5jb3B5X2Zyb21fc2xpY2UoJnZhbHVlLmFzX2J5dGVzKClbLi5sZW5dKTsKPj4gKwo+PiAr ICAgICAgICBTZWxmIHsKPj4gKyAgICAgICAgICAgIGJ1ZiwKPj4gKyAgICAgICAgICAgIC8vIFNB RkVUWTogc2VsZi5sZW4gaXMgYXQgbGVhc3QgMCBhbmQgYXQgbW9zdCAyMywgd2hpY2ggZml0cyBp bnRvIHU4Cj4+ICsgICAgICAgICAgICBsZW46IGxlbiBhcyB1OCwKPj4gKyAgICAgICAgfQo+PiAr ICAgIH0KPj4gKwo+PiArICAgIC8vLyBSZXR1cm5zIGEgc3RyIHJlZmVyZW5jZSB0byB0aGUgc3Rv cmVkIGRhdGEKPj4gKyAgICAjW2lubGluZV0KPj4gKyAgICBwdWIgZm4gYXNfc3RyKCZzZWxmKSAt PiAmc3RyIHsKPj4gKyAgICAgICAgLy8gU0FGRVRZOiBzZWxmLmJ1ZiBtdXN0IGJlIGEgdmFsaWQg dXRmLTggc3RyaW5nIGJ5IGNvbnN0cnVjdGlvbgo+PiArICAgICAgICB1bnNhZmUgeyBzdHI6OmZy b21fdXRmOF91bmNoZWNrZWQoc2VsZi5hc19ieXRlcygpKSB9Cj4+ICsgICAgfQo+PiArCj4+ICsg ICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHNldCBieXRlcyBpbiB0aGUgc3RvcmVk IGJ1ZmZlcgo+PiArICAgICNbaW5saW5lXQo+PiArICAgIHB1YiBmbiBhc19ieXRlcygmc2VsZikg LT4gJlt1OF0gewo+PiArICAgICAgICAvLyBTQUZFVFk6IHNlbGYubGVuID49IDAgYW5kIHNlbGYu bGVuIDw9IDIzIGJ5IGNvbnN0cnVjdGlvbgo+PiArICAgICAgICB1bnNhZmUgeyBzZWxmLmJ1Zi5n ZXRfdW5jaGVja2VkKC4uc2VsZi5sZW4gYXMgdXNpemUpIH0KPj4gKyAgICB9Cj4+ICt9Cj4+ICsK Pj4gK2ltcGwgUGFydGlhbEVxIGZvciBGaXhlZFN0cmluZyB7Cj4gCj4gSU1PIC0gcmVnYXJkaW5n IG9yZGVyaW5nIHdoZXJlIGl0IG1hdHRlcnMgLSBpdCB3b3VsZCBiZSBlYXNpZXIgdG8gcmVhZAo+ IHN1Y2ggaW1wbHMgd2hlbiB0aGV5J3JlIHB1cmVseSBmb3J3YXJkZWQsIGVnLjoKPiAKPiAgICAg UGFydGlhbEVxOjplcShzZWxmLmFzX3N0cigpLCBvdGhlcikKPiAKPiBzaW5jZSB0aGVuIGFsbCBp bXBsZW1lbnRhdGlvbnMgbG9vayB0aGUgc2FtZSAobm8gbmVlZCBmb3IgYFNvbWUoKWAKPiB3cmFw cGluZyBpbiB0aGUgYFBhcnRpYWxPcmRgIGltcGwsIGZvciBpbnN0YW5jZS4KCnllYWgsIHRoYXQn cyBmYWlyIC0gaWRrIHdoeSBJIGRpZG4ndCBkbyBpdCBpbiB0aGUgZmlyc3QgcGxhY2UuLi4KCj4g QWxzbywgaXQgY291bGQgYmUgZ2VuZXJhdGVkIHdpdGggYSBzaW1wbGUgZm9yd2FyZGluZyBtYWNy byB3aGljaCB3b3VsZAo+IElNTyBhbHNvIG1ha2UgcmV2aWV3IGVhc2llciB0aGFuIGhhdmluZyB0 byBnbyB0aHJvdWdoIGVhY2ggb2YgdGhlbQo+IGluZGl2aWR1YWxseToKPiAKPiAgICAgbWFjcm9f cnVsZXMhIGZvcndhcmRfaW1wbF90b19ieXRlcyB7Cj4gICAgICAgICAoJCgkdHJhaXQ6aWRlbnQg eyRmbjppZGVudCAtPiAkb3V0OnR5IH0pKykgPT4gewo+ICAgICAgICAgICAgICQoCj4gICAgICAg ICAgICAgICAgIGltcGwgJHRyYWl0IGZvciBGaXhlZFN0cmluZyB7Cj4gICAgICAgICAgICAgICAg ICAgICBmbiAkZm4oJnNlbGYsIG90aGVyOiAmU2VsZikgLT4gJG91dCB7Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgPFt1OF0gYXMgJHRyYWl0Pjo6JGZuKHNlbGYuYXNfYnl0ZXMoKSwgb3RoZXIu YXNfYnl0ZXMoKSkKPiAgICAgICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgICAgfQo+ ICAgICAgICAgICAgICkrCj4gICAgICAgICB9Owo+ICAgICB9Cj4gCj4gICAgIGZvcndhcmRfaW1w bF90b19ieXRlcyEgewo+ICAgICAgICAgUGFydGlhbEVxIHsgZXEgLT4gYm9vbCB9Cj4gICAgICAg ICBQYXJ0aWFsT3JkIHsgcGFydGlhbF9jbXAgLT4gT3B0aW9uPE9yZGVyaW5nPiB9Cj4gICAgICAg ICBPcmQgeyBjbXAgLT4gT3JkZXJpbmcgfQo+ICAgICB9Cj4gCj4gCj4gQW5kIGZvciB0aGUgb25l cyBiZWxvdzoKPiAKPiAgICAgbWFjcm9fcnVsZXMhIGZvcndhcmRfaW1wbF90b19zdHJfYmlkaXIg ewo+ICAgICAgICAgKCQoJHRyYWl0OmlkZW50IHskZm46aWRlbnQgLT4gJG91dDp0eSB9KSspID0+ IHsKPiAgICAgICAgICAgICAkKAo+ICAgICAgICAgICAgICAgICBpbXBsICR0cmFpdDxzdHI+IGZv ciBGaXhlZFN0cmluZyB7Cj4gICAgICAgICAgICAgICAgICAgICBmbiAkZm4oJnNlbGYsIG90aGVy OiAmc3RyKSAtPiAkb3V0IHsKPiAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyIGFzICR0cmFp dD46OiRmbihzZWxmLmFzX3N0cigpLCBvdGhlcikKPiAgICAgICAgICAgICAgICAgICAgIH0KPiAg ICAgICAgICAgICAgICAgfQo+IAo+ICAgICAgICAgICAgICAgICBpbXBsICR0cmFpdDxGaXhlZFN0 cmluZz4gZm9yICZzdHIgewo+ICAgICAgICAgICAgICAgICAgICAgZm4gJGZuKCZzZWxmLCBvdGhl cjogJkZpeGVkU3RyaW5nKSAtPiAkb3V0IHsKPiAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ry IGFzICR0cmFpdD46OiRmbihzZWxmLCBvdGhlci5hc19zdHIoKSkKPiAgICAgICAgICAgICAgICAg ICAgIH0KPiAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICkrCj4gICAgICAgICB9Owo+ ICAgICB9Cj4gCj4gICAgIGZvcndhcmRfaW1wbF90b19zdHJfYmlkaXIhIHsKPiAgICAgICAgIFBh cnRpYWxFcSB7IGVxIC0+IGJvb2wgfQo+ICAgICAgICAgUGFydGlhbE9yZCB7IHBhcnRpYWxfY21w IC0+IE9wdGlvbjxPcmRlcmluZz4gfQo+ICAgICB9Cj4gCj4gWWVzIEkgcmVhbGl6ZSB0aGF0IGZv ciAyIHRyYWl0cyB0aGlzIGRvZXNuJ3Qgc2F2ZSBtdWNoLCBidXQgaXQgd291bGQKPiBtYWtlIHRo ZSBpbnRlbnRpb24gY2xlYXJlciBhbmQgSU1PIGlzIHN0aWxsIGVhc2llciB0byByZXZpZXcuCgpz dGlsbCwgdGhpcyBtYWtlcyBhZGRpbmcgYWRkaXRpb25hbCB0cmFpdHMgYSBicmVlemUgYW5kIEkn bSBzdXJlIHdlCm1pZ2h0IG5lZWQgdG8gZG8gdGhhdCBhdCBzb21lIHBvaW50LiBJIGtlcHQgdGhl IGlubGluZSBmb3IgYm90aCBjYXNlcwp0aG91Z2ggLSB3aGF0IGRvIHlvdSB0aGluaz8gbWFrZXMg c2Vuc2UgaW1vLgoKPj4gKyAgICAjW2lubGluZV0KPj4gKyAgICBmbiBlcSgmc2VsZiwgb3RoZXI6 ICZGaXhlZFN0cmluZykgLT4gYm9vbCB7Cj4+ICsgICAgICAgIHNlbGYuYXNfYnl0ZXMoKSA9PSBv dGhlci5hc19ieXRlcygpCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICtpbXBsIEVxIGZvciBGaXhl ZFN0cmluZyB7fQo+PiArCj4+ICtpbXBsIFBhcnRpYWxPcmQgZm9yIEZpeGVkU3RyaW5nIHsKPj4g KyAgICBmbiBwYXJ0aWFsX2NtcCgmc2VsZiwgb3RoZXI6ICZGaXhlZFN0cmluZykgLT4gT3B0aW9u PE9yZGVyaW5nPiB7Cj4+ICsgICAgICAgIFNvbWUoc2VsZi5jbXAob3RoZXIpKQo+PiArICAgIH0K Pj4gK30KPj4gKwo+PiAraW1wbCBPcmQgZm9yIEZpeGVkU3RyaW5nIHsKPj4gKyAgICAjW2lubGlu ZV0KPj4gKyAgICBmbiBjbXAoJnNlbGYsIG90aGVyOiAmRml4ZWRTdHJpbmcpIC0+IE9yZGVyaW5n IHsKPj4gKyAgICAgICAgc2VsZi5hc19ieXRlcygpLmNtcChvdGhlci5hc19ieXRlcygpKQo+PiAr ICAgIH0KPj4gK30KPj4gKwo+PiAraW1wbCBEaXNwbGF5IGZvciBGaXhlZFN0cmluZyB7Cj4+ICsg ICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBSZXN1 bHQ8KCksIHN0ZDo6Zm10OjpFcnJvcj4gewo+PiArICAgICAgICBmLndyaXRlX3N0cihzZWxmLmFz X3N0cigpKQo+IAo+IENvbnNpZGVyIGZvcndhcmRpbmcgdG8gJnN0cidzIGZtdCBpbnN0ZWFkIHNv IHRoYXQgdGhpbmdzIHN1Y2ggYXMKPiBhbGlnbm1lbnQgZXRjLiB3b3JrOgo+IAo+ICAgICBEaXNw bGF5OjpmbXQoc2VsZi5hc19zdHIoKSwgZikKPiAKPiBzbyB0aGF0IGBwcmludGxuISgie3RoZV9l bnVtOj44fSIpYCB3aWxsIHByaW50ICIgICAgIGZvbyIgaW5zdGVhZCBvZgo+IGp1c3QgImZvbyIs IGFuZCBge3g6MF44fWAgcHJvZHVjZXMgIjAwZm9vMDAwIiA7LSkKPiAKCmRvbmUKCj4+ICsgICAg fQo+PiArfQo+PiArCj4+ICtpbXBsIERlYnVnIGZvciBGaXhlZFN0cmluZyB7Cj4+ICsgICAgZm4g Zm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBSZXN1bHQ8KCks IHN0ZDo6Zm10OjpFcnJvcj4gewo+PiArICAgICAgICBmLndyaXRlX3N0cihzZWxmLmFzX3N0cigp KQo+IAo+IFNhbWUgaGVyZSB3aXRoIGBEZWJ1Zzo6Zm10KHNlbGYuYXNfc3RyKCksIGYpYC4KPiAK CmRvbmUKCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICtpbXBsIERlcmVmIGZvciBGaXhlZFN0cmlu ZyB7Cj4+ICsgICAgdHlwZSBUYXJnZXQgPSBzdHI7Cj4+ICsKPj4gKyAgICBmbiBkZXJlZigmc2Vs ZikgLT4gJnN0ciB7Cj4+ICsgICAgICAgIHNlbGYuYXNfc3RyKCkKPj4gKyAgICB9Cj4+ICt9Cj4+ ICsKPj4gK2ltcGwgQXNSZWY8c3RyPiBmb3IgRml4ZWRTdHJpbmcgewo+PiArICAgIGZuIGFzX3Jl Zigmc2VsZikgLT4gJnN0ciB7Cj4+ICsgICAgICAgIHNlbGYuYXNfc3RyKCkKPj4gKyAgICB9Cj4+ ICt9Cj4gCj4gSSdkIGFsc28gYWRkIGBBc1JlZjxbdThdPmAsIGFuZCBgQm9ycm93PHN0cj5gLiAo VGhlIGxhdHRlciB3b3VsZCBiZQo+IHJlcXVpcmVkIHRvIGFsbG93IGEgYEhhc2hNYXA8Rml4ZWRT dHJpbmcsIFQ+YCB0byB1c2UgYC5nZXQoImtleSIpYCB3aXRoCj4gYCZzdHJgIGZvciBhIGtleSAt IG5vdCB0aGF0IHRoYXQncyBzb21ldGhpbmcgd2UnZCBleHBlY3QgdG8gc2VlLi4uCj4gCgpkb25l Cgo+PiArCj4+ICtpbXBsIFRyeUZyb208U3RyaW5nPiBmb3IgRml4ZWRTdHJpbmcgewo+PiArICAg IHR5cGUgRXJyb3IgPSBGaXhlZFN0cmluZ0Vycm9yOwo+PiArCj4+ICsgICAgZm4gdHJ5X2Zyb20o dmFsdWU6IFN0cmluZykgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycm9yPiB7Cj4+ICsgICAgICAg IEZpeGVkU3RyaW5nOjpuZXcodmFsdWUuYXNfc3RyKCkpCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ ICtpbXBsIEZyb21TdHIgZm9yIEZpeGVkU3RyaW5nIHsKPj4gKyAgICB0eXBlIEVyciA9IEZpeGVk U3RyaW5nRXJyb3I7Cj4+ICsKPj4gKyAgICBmbiBmcm9tX3N0cih2YWx1ZTogJnN0cikgLT4gUmVz dWx0PFNlbGYsIFNlbGY6OkVycj4gewo+PiArICAgICAgICBGaXhlZFN0cmluZzo6bmV3KHZhbHVl KQo+PiArICAgIH0KPj4gK30KPj4gKwo+PiAraW1wbCBUcnlGcm9tPCZzdHI+IGZvciBGaXhlZFN0 cmluZyB7Cj4+ICsgICAgdHlwZSBFcnJvciA9IEZpeGVkU3RyaW5nRXJyb3I7Cj4+ICsKPj4gKyAg ICBmbiB0cnlfZnJvbSh2YWx1ZTogJnN0cikgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycm9yPiB7 Cj4+ICsgICAgICAgIEZpeGVkU3RyaW5nOjpuZXcodmFsdWUpCj4+ICsgICAgfQo+PiArfQo+PiAr Cj4+ICtpbXBsIFBhcnRpYWxFcTxzdHI+IGZvciBGaXhlZFN0cmluZyB7Cj4+ICsgICAgZm4gZXEo JnNlbGYsIG90aGVyOiAmc3RyKSAtPiBib29sIHsKPj4gKyAgICAgICAgc2VsZi5hc19zdHIoKS5l cShvdGhlcikKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK2ltcGwgUGFydGlhbEVxPEZpeGVkU3Ry aW5nPiBmb3IgJnN0ciB7Cj4+ICsgICAgZm4gZXEoJnNlbGYsIG90aGVyOiAmRml4ZWRTdHJpbmcp IC0+IGJvb2wgewo+PiArICAgICAgICBzZWxmLmVxKCZvdGhlci5hc19zdHIoKSkKPj4gKyAgICB9 Cj4+ICt9Cj4+ICsKPj4gK2ltcGwgUGFydGlhbE9yZDxzdHI+IGZvciBGaXhlZFN0cmluZyB7Cj4+ ICsgICAgZm4gcGFydGlhbF9jbXAoJnNlbGYsIG90aGVyOiAmc3RyKSAtPiBPcHRpb248T3JkZXJp bmc+IHsKPj4gKyAgICAgICAgU29tZShzZWxmLmFzX3N0cigpLmNtcCgmb3RoZXIpKQo+PiArICAg IH0KPj4gK30KPj4gKwo+PiAraW1wbCBQYXJ0aWFsT3JkPEZpeGVkU3RyaW5nPiBmb3IgJnN0ciB7 Cj4+ICsgICAgZm4gcGFydGlhbF9jbXAoJnNlbGYsIG90aGVyOiAmRml4ZWRTdHJpbmcpIC0+IE9w dGlvbjxPcmRlcmluZz4gewo+PiArICAgICAgICBTb21lKHNlbGYuY21wKCZvdGhlci5hc19zdHIo KSkpCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICtpbXBsIFNlcmlhbGl6ZSBmb3IgRml4ZWRTdHJp bmcgewo+PiArICAgIGZuIHNlcmlhbGl6ZTxTPigmc2VsZiwgc2VyaWFsaXplcjogUykgLT4gUmVz dWx0PFM6Ok9rLCBTOjpFcnJvcj4KPj4gKyAgICB3aGVyZQo+PiArICAgICAgICBTOiBzZXJkZTo6 U2VyaWFsaXplciwKPj4gKyAgICB7Cj4+ICsgICAgICAgIHNlcmlhbGl6ZXIuc2VyaWFsaXplX3N0 cihzZWxmLmFzX3N0cigpKQo+PiArICAgIH0KPj4gK30KPj4gKwo+PiAraW1wbDwnZGU+IERlc2Vy aWFsaXplPCdkZT4gZm9yIEZpeGVkU3RyaW5nIHsKPj4gKyAgICBmbiBkZXNlcmlhbGl6ZTxEPihk ZXNlcmlhbGl6ZXI6IEQpIC0+IFJlc3VsdDxTZWxmLCBEOjpFcnJvcj4KPj4gKyAgICB3aGVyZQo+ PiArICAgICAgICBEOiBzZXJkZTo6RGVzZXJpYWxpemVyPCdkZT4sCj4+ICsgICAgewo+PiArICAg ICAgICBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemVfc3RyKEZpeGVkU3RyaW5nVmlzaXRvcikKPj4g KyAgICB9Cj4+ICt9Cj4+ICsKPj4gK3N0cnVjdCBGaXhlZFN0cmluZ1Zpc2l0b3I7Cj4gCj4gXiBJ J2QgcHJlZmVyIHRvIG1vdmUgdGhlIHR5cGUgYW5kIFZpc2l0b3IgaW1wbCBpbnRvIHRoZSBgZm4g ZGVzZXJpYWxpemVgLgo+IAoKZG9uZQoKPj4gKwo+PiAraW1wbDwnZGU+IHNlcmRlOjpkZTo6Vmlz aXRvcjwnZGU+IGZvciBGaXhlZFN0cmluZ1Zpc2l0b3Igewo+PiArICAgIHR5cGUgVmFsdWUgPSBG aXhlZFN0cmluZzsKPj4gKwo+PiArICAgIGZuIGV4cGVjdGluZygmc2VsZiwgZjogJm11dCBGb3Jt YXR0ZXIpIC0+IHN0ZDo6Zm10OjpSZXN1bHQgewo+PiArICAgICAgICBmLndyaXRlX3N0cigiYSBz dHJpbmcgdGhhdCBpcyBhdCBtb3N0IDIzIGJ5dGVzIGxvbmciKQo+PiArICAgIH0KPj4gKwo+PiAr ICAgIGZuIHZpc2l0X3N0cjxFPihzZWxmLCB2OiAmc3RyKSAtPiBSZXN1bHQ8U2VsZjo6VmFsdWUs IEU+Cj4+ICsgICAgd2hlcmUKPj4gKyAgICAgICAgRTogc2VyZGU6OmRlOjpFcnJvciwKPj4gKyAg ICB7Cj4+ICsgICAgICAgIHYudHJ5X2ludG8oKS5tYXBfZXJyKEU6OmN1c3RvbSkKPj4gKyAgICB9 Cj4+ICsKPj4gKyAgICBmbiB2aXNpdF9zdHJpbmc8RT4oc2VsZiwgdjogU3RyaW5nKSAtPiBSZXN1 bHQ8U2VsZjo6VmFsdWUsIEU+Cj4+ICsgICAgd2hlcmUKPj4gKyAgICAgICAgRTogc2VyZGU6OmRl OjpFcnJvciwKPj4gKyAgICB7Cj4gCj4gXiBZb3UgY2FuIGRyb3AgdGhpcy4gYHZpc2l0X3N0cmlu Z2AgYW5kIGB2aXNpdF9ib3Jyb3dlZF9zdHJgIGJ5IGRlZmF1bHQKPiBmb3J3YXJkIHRvIGB2aXNp dF9zdHJgLgo+IAoKZG9uZQoKPj4gKyAgICAgICAgdi50cnlfaW50bygpLm1hcF9lcnIoRTo6Y3Vz dG9tKQo+PiArICAgIH0KPj4gK30KPj4gKwo+PiArI1tjZmcodGVzdCldCj4+ICttb2QgdGVzdHMg ewo+PiArICAgIHVzZSBzdXBlcjo6KjsKPj4gKwo+PiArICAgIHVzZSBzZXJkZV9wbGFpbjsKPj4g Kwo+PiArICAgICNbdGVzdF0KPj4gKyAgICBmbiB0ZXN0X2NvbnN0cnVjdCgpIHsKPj4gKyAgICAg ICAgbGV0IGZpeGVkX3N0cmluZyA9IEZpeGVkU3RyaW5nOjpuZXcoIiIpLmV4cGVjdCgiZW1wdHkg c3RyaW5nIGlzIHZhbGlkIik7Cj4+ICsgICAgICAgIGFzc2VydF9lcSEoIiIsIGZpeGVkX3N0cmlu Zyk7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGZpeGVkX3N0cmluZyA9IEZpeGVkU3RyaW5nOjpuZXco ImEiKS5leHBlY3QoInZhbGlkIHN0cmluZyIpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKCJhIiwg Zml4ZWRfc3RyaW5nKTsKPj4gKwo+PiArICAgICAgICBsZXQgZml4ZWRfc3RyaW5nID0gRml4ZWRT dHJpbmc6Om5ldygi8J+Mj/CfjI/wn4yP8J+Mj/CfjI8iKS5leHBlY3QoInZhbGlkIHN0cmluZyIp Owo+PiArICAgICAgICBhc3NlcnRfZXEhKCLwn4yP8J+Mj/CfjI/wn4yP8J+MjyIsIGZpeGVkX3N0 cmluZyk7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGZpeGVkX3N0cmluZyA9Cj4+ICsgICAgICAgICAg ICBGaXhlZFN0cmluZzo6bmV3KCJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIpLmV4cGVjdCgiMjMg Y2hhcmFjdGVycyBhcmUgYWxsb3dlZCIpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKCJhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYSIsIGZpeGVkX3N0cmluZyk7Cj4+ICsKPj4gKyAgICAgICAgRml4ZWRT dHJpbmc6Om5ldygi8J+Mj/CfjI/wn4yP8J+Mj/CfjI/wn4yPIikuZXhwZWN0X2Vycigic3RyaW5n IHRvbyBsb25nIik7Cj4+ICsgICAgICAgIEZpeGVkU3RyaW5nOjpuZXcoImFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYSIpLmV4cGVjdF9lcnIoInN0cmluZyB0b28gbG9uZyIpOwo+PiArICAgIH0KPj4g Kwo+PiArICAgICNbdGVzdF0KPj4gKyAgICBmbiB0ZXN0X3NlcmlhbGl6ZV9kZXNlcmlhbGl6ZSgp IHsKPj4gKyAgICAgICAgbGV0IHZhbGlkX3N0cmluZyA9ICJhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YSI7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGZpeGVkX3N0cmluZzogRml4ZWRTdHJpbmcgPQo+PiAr ICAgICAgICAgICAgc2VyZGVfcGxhaW46OmZyb21fc3RyKCJhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YSIpLmV4cGVjdCgiZGVzZXJpYWxpemF0aW9uIHdvcmtzIik7Cj4+ICsgICAgICAgIGFzc2VydF9l cSEodmFsaWRfc3RyaW5nLCBmaXhlZF9zdHJpbmcpOwo+PiArCj4+ICsgICAgICAgIGxldCBzZXJp YWxpemVkX3N0cmluZyA9Cj4+ICsgICAgICAgICAgICBzZXJkZV9wbGFpbjo6dG9fc3RyaW5nKCZm aXhlZF9zdHJpbmcpLmV4cGVjdCgiY2FuIGJlIHNlcmlhbGl6ZWQgaW50byBhIHN0cmluZyIpOwo+ PiArICAgICAgICBhc3NlcnRfZXEhKHZhbGlkX3N0cmluZywgc2VyaWFsaXplZF9zdHJpbmcpOwo+ PiArCj4+ICsgICAgICAgIHNlcmRlX3BsYWluOjpmcm9tX3N0cjo6PEZpeGVkU3RyaW5nPigiYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhIikKPj4gKyAgICAgICAgICAgIC5leHBlY3RfZXJyKCJjYW5u b3QgZGVzZXJpYWxpemUgc3RyaW5nIHRoYXQgaXMgdG9vIGxvbmciKTsKPj4gKyAgICB9Cj4+ICsK Pj4gKyAgICAjW3Rlc3RdCj4+ICsgICAgZm4gdGVzdF9vcmQoKSB7Cj4+ICsgICAgICAgIGxldCBm aXhlZF9zdHJpbmcgPSBGaXhlZFN0cmluZzo6bmV3KCJhYmMiKS5leHBlY3QoInZhbGlkIHN0cmlu ZyIpOwo+PiArCj4+ICsgICAgICAgIGFzc2VydCEoZml4ZWRfc3RyaW5nID09IGZpeGVkX3N0cmlu Zyk7Cj4+ICsgICAgICAgIGFzc2VydCEoZml4ZWRfc3RyaW5nID49IGZpeGVkX3N0cmluZyk7Cj4+ ICsgICAgICAgIGFzc2VydCEoZml4ZWRfc3RyaW5nIDw9IGZpeGVkX3N0cmluZyk7Cj4+ICsKPj4g KyAgICAgICAgYXNzZXJ0ISgiYWIiIDwgZml4ZWRfc3RyaW5nKTsKPj4gKyAgICAgICAgYXNzZXJ0 ISgiYWJjIiA9PSBmaXhlZF9zdHJpbmcpOwo+PiArICAgICAgICBhc3NlcnQhKCJhYmNkIiA+IGZp eGVkX3N0cmluZyk7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGxhcmdlcl9maXhlZF9zdHJpbmcgPSBG aXhlZFN0cmluZzo6bmV3KCJhYmNkZSIpLmV4cGVjdCgidmFsaWQgc3RyaW5nIik7Cj4+ICsKPj4g KyAgICAgICAgYXNzZXJ0IShsYXJnZXJfZml4ZWRfc3RyaW5nID4gZml4ZWRfc3RyaW5nKTsKPj4g KyAgICAgICAgYXNzZXJ0IShmaXhlZF9zdHJpbmcgPCBsYXJnZXJfZml4ZWRfc3RyaW5nKTsKPj4g KyAgICB9Cj4+ICsKPj4gKyAgICAjW3Rlc3RdCj4+ICsgICAgZm4gdGVzdF90cnVuY2F0ZSgpIHsK Pj4gKyAgICAgICAgbGV0IGZpeGVkX3N0cmluZyA9IEZpeGVkU3RyaW5nOjpuZXdfdHJ1bmNhdGVk KCJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIik7Cj4+ICsgICAgICAgIGFzc2VydF9lcSEo ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwgZml4ZWRfc3RyaW5nKTsKPj4gKwo+PiArICAgICAg ICBsZXQgZml4ZWRfc3RyaW5nID0gRml4ZWRTdHJpbmc6Om5ld190cnVuY2F0ZWQoImFhYWFhYWFh YWFhYWFhYWFhYfCfkq8iKTsKPj4gKyAgICAgICAgYXNzZXJ0X2VxISgiYWFhYWFhYWFhYWFhYWFh YWFh8J+SryIsIGZpeGVkX3N0cmluZyk7Cj4+ICsKPj4gKyAgICAgICAgLy8gJ/Cfkq8nIGlzIDQg Ynl0ZXMgbG9uZwo+PiArICAgICAgICAvLyBmaXJzdCBieXRlIG9mICfwn5KvJyBpcyBpbnNpZGUg dGhlIDIzIGJ5dGUgbGltaXQsIGJ1dCBpdCdzIG5vdCBhIHZhbGlkIHV0Zi04IGJvdW5kYXJ5IHNv Cj4+ICsgICAgICAgIC8vIGl0IHNob3VsZCBnZXQgdHJ1bmNhdGVkCj4+ICsgICAgICAgIGxldCBm aXhlZF9zdHJpbmcgPSBGaXhlZFN0cmluZzo6bmV3X3RydW5jYXRlZCgiYWFhYWFhYWFhYWFhYWFh YWFhYWFh8J+SryIpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKCJhYWFhYWFhYWFhYWFhYWFhYWFh YWEiLCBmaXhlZF9zdHJpbmcpOwo+PiArCj4+ICsgICAgICAgIGxldCBmaXhlZF9zdHJpbmcgPSBG aXhlZFN0cmluZzo6bmV3X3RydW5jYXRlZCgiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYfCfkq8iKTsK Pj4gKyAgICAgICAgYXNzZXJ0X2VxISgiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIsIGZpeGVkX3N0 cmluZyk7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGZpeGVkX3N0cmluZyA9IEZpeGVkU3RyaW5nOjpu ZXdfdHJ1bmNhdGVkKCJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYfCfkq8iKTsKPj4gKyAgICAgICAg YXNzZXJ0X2VxISgiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCBmaXhlZF9zdHJpbmcpOwo+PiAr Cj4+ICsgICAgICAgIC8vICfwn4yPJyBpcyA0IGJ5dGVzIGxvbmcKPj4gKyAgICAgICAgbGV0IGZp eGVkX3N0cmluZyA9IEZpeGVkU3RyaW5nOjpuZXdfdHJ1bmNhdGVkKCLwn4yP8J+Mj/CfjI/wn4yP 8J+MjyIpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKCLwn4yP8J+Mj/CfjI/wn4yP8J+MjyIsIGZp eGVkX3N0cmluZyk7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGZpeGVkX3N0cmluZyA9IEZpeGVkU3Ry aW5nOjpuZXdfdHJ1bmNhdGVkKCLwn4yP8J+Mj/CfjI/wn4yP8J+Mj/CfjI8iKTsKPj4gKyAgICAg ICAgYXNzZXJ0X2VxISgi8J+Mj/CfjI/wn4yP8J+Mj/CfjI8iLCBmaXhlZF9zdHJpbmcpOwo+PiAr ICAgIH0KPj4gK30KPj4gZGlmZiAtLWdpdCBhL3B2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL21vZC5y cyBiL3B2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL21vZC5ycwo+PiBpbmRleCBmZTUyYTE2OS4uOTY1 M2RkNDYgMTAwNjQ0Cj4+IC0tLSBhL3B2ZS1hcGktdHlwZXMvc3JjL3R5cGVzL21vZC5ycwo+PiAr KysgYi9wdmUtYXBpLXR5cGVzL3NyYy90eXBlcy9tb2QucnMKPj4gQEAgLTE3LDYgKzE3LDkgQEAg cHViIG1vZCBhcnJheTsKPj4gIHB1YiBtb2Qgc3RyaW5nbGlzdDsKPj4gIHB1YiBtb2QgdmVyaWZp ZXJzOwo+PiAgCj4+ICttb2QgZml4ZWRfc3RyaW5nOwo+PiArcHViIHVzZSBmaXhlZF9zdHJpbmc6 OntGaXhlZFN0cmluZywgRml4ZWRTdHJpbmdFcnJvcn07Cj4+ICsKPj4gIGluY2x1ZGUhKCIuLi9n ZW5lcmF0ZWQvdHlwZXMucnMiKTsKPj4gIAo+PiAgLy8vIEEgUFZFIFVwaWQsIGNvbnRyYXJ5IHRv IGEgUEJTIFVwaWQsIGNvbnRhaW5zIG5vICd0YXNrLWlkJyBudW1iZXIuCj4+IC0tIAo+PiAyLjQ3 LjMKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGRt LWRldmVsIG1haWxpbmcgbGlzdApwZG0tZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9s aXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGRtLWRldmVsCg==