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 [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 053A11FF168
	for <inbox@lore.proxmox.com>; Tue,  4 Mar 2025 17:28:33 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id CB5EB5AAB;
	Tue,  4 Mar 2025 17:28:27 +0100 (CET)
Date: Tue, 4 Mar 2025 17:28:23 +0100
From: Gabriel Goller <g.goller@proxmox.com>
To: Stefan Hanreich <s.hanreich@proxmox.com>
Message-ID: <2d5zwigdxnxolimbgxiqtlbvsmu7wgt3fuenhci3qyz6jtjssg@qulezubkzxr5>
Mail-Followup-To: Stefan Hanreich <s.hanreich@proxmox.com>, 
 pve-devel@lists.proxmox.com
References: <20250214133951.344500-1-g.goller@proxmox.com>
 <20250214133951.344500-3-g.goller@proxmox.com>
 <2443e9a1-a494-452b-8840-51c301582aa8@proxmox.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <2443e9a1-a494-452b-8840-51c301582aa8@proxmox.com>
User-Agent: NeoMutt/20241002-35-39f9a6
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.031 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
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 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. [lib.rs]
Subject: Re: [pve-devel] [PATCH proxmox-ve-rs 02/11] add proxmox-frr crate
 with frr types
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>
Cc: 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>

T24gMDMuMDMuMjAyNSAxNzoyOSwgU3RlZmFuIEhhbnJlaWNoIHdyb3RlOgo+VGhpcyB1c2VzIHN0
dWZmIGZyb20gYSBsYXRlciBwYXRjaCwgZG9lc24ndCBpdD8gU2hvdWxkbid0IHRoZSBvcmRlciBv
Zgo+cGF0Y2hlcyAyIGFuZCAzIGJlIGZsaXBwZWQ/Cgpvb3BzLCB5ZWFoIG1iLgoKPj4gW3NuaXBd
Cj4+IGRpZmYgLS1naXQgYS9wcm94bW94LWZyci9zcmMvbGliLnJzIGIvcHJveG1veC1mcnIvc3Jj
L2xpYi5ycwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmNl
ZWY4Mjk5OTYxOQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3Byb3htb3gtZnJyL3NyYy9saWIu
cnMKPj4gQEAgLTAsMCArMSwyMjMgQEAKPj4gK3B1YiBtb2QgY29tbW9uOwo+PiArcHViIG1vZCBv
cGVuZmFicmljOwo+PiArcHViIG1vZCBvc3BmOwo+PiArCj4+ICt1c2Ugc3RkOjp7Y29sbGVjdGlv
bnM6OntoYXNoX21hcDo6RW50cnksIEhhc2hNYXB9LCBmbXQ6OkRpc3BsYXksIHN0cjo6RnJvbVN0
cn07Cj4+ICsKPj4gK3VzZSBjb21tb246OntGcnJXb3JkLCBGcnJXb3JkRXJyb3J9Owo+PiArdXNl
IHByb3htb3hfdmVfY29uZmlnOjpzZG46OmZhYnJpYzo6Y29tbW9uOjpIb3N0bmFtZTsKPgo+TWF5
YmUgbW92ZSBpdCB0byBuZXR3b3JrLXR5cGVzLCBpZiBpdCBpcyBhbHdheXMgbmVlZGVkPyBTZWVt
cyBsaWtlIGEKPmJldHRlciBmaXQuIEVzcGVjaWFsbHkgc2luY2UgdGhlIGRlcGVuZGVuY3kgaXMg
b3B0aW9uYWwuCgpBZ3JlZS4KCj4+IFtzbmlwXQo+PiArI1tkZXJpdmUoQ2xvbmUsIERlYnVnLCBQ
YXJ0aWFsRXEsIEVxLCBIYXNoLCBEZXNlcmlhbGl6ZUZyb21TdHIsIFNlcmlhbGl6ZURpc3BsYXkp
XQo+PiArcHViIGVudW0gUm91dGVyTmFtZSB7Cj4+ICsgICAgT3BlbkZhYnJpYyhvcGVuZmFicmlj
OjpPcGVuRmFicmljUm91dGVyTmFtZSksCj4+ICsgICAgT3NwZihvc3BmOjpPc3BmUm91dGVyTmFt
ZSksCj4+ICt9Cj4+ICsKPj4gK2ltcGwgRnJvbTxvcGVuZmFicmljOjpPcGVuRmFicmljUm91dGVy
TmFtZT4gZm9yIFJvdXRlck5hbWUgewo+PiArICAgIGZuIGZyb20odmFsdWU6IG9wZW5mYWJyaWM6
Ok9wZW5GYWJyaWNSb3V0ZXJOYW1lKSAtPiBTZWxmIHsKPj4gKyAgICAgICAgU2VsZjo6T3BlbkZh
YnJpYyh2YWx1ZSkKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK2ltcGwgRGlzcGxheSBmb3IgUm91
dGVyTmFtZSB7Cj4+ICsgICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0
ZXI8J18+KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKPj4gKyAgICAgICAgbWF0Y2ggc2VsZiB7Cj4+
ICsgICAgICAgICAgICBTZWxmOjpPcGVuRmFicmljKHIpID0+IHIuZm10KGYpLAo+PiArICAgICAg
ICAgICAgU2VsZjo6T3NwZihyKSA9PiByLmZtdChmKSwKPj4gKyAgICAgICAgfQo+PiArICAgIH0K
Pj4gK30KPj4gKwo+PiAraW1wbCBGcm9tU3RyIGZvciBSb3V0ZXJOYW1lIHsKPj4gKyAgICB0eXBl
IEVyciA9IFJvdXRlck5hbWVFcnJvcjsKPj4gKwo+PiArICAgIGZuIGZyb21fc3RyKHM6ICZzdHIp
IC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnI+IHsKPj4gKyAgICAgICAgaWYgbGV0IE9rKHJvdXRl
cikgPSBzLnBhcnNlKCkgewo+PiArICAgICAgICAgICAgcmV0dXJuIE9rKFNlbGY6Ok9wZW5GYWJy
aWMocm91dGVyKSk7Cj4+ICsgICAgICAgIH0KPgo+ZG9lcyB0aGlzIG1ha2Ugc2Vuc2UgaGVyZT8g
Y2FuIHdlIGFjdHVhbGx5IG1ha2UgYSBjbGVhciBkaXN0aW5jdGlvbiBvbgo+d2hldGhlciB0aGlz
IGlzIGEgT3BlbkZhYnJpYyAvIE9TUEYgcm91dGVyIG5hbWUgKGFuZCBmb3IgYWxsIG90aGVyCj5m
dXR1cmUgUm91dGVyTmFtZXMpIGZyb20gdGhlIHN0cmluZyBhbG9uZT8gSSB0aGluayBpdCBtaWdo
dCBiZSBiZXR0ZXIgdG8KPmV4cGxpY2l0bHkgY29uc3RydWN0IHRoZSBzcGVjaWZpYyB0eXBlIGFu
ZCB0aGVuIG1ha2UgYSBSb3V0ZXJOYW1lIG91dCBvZgo+aXQgYW5kIGRvIG5vdCBpbXBsZW1lbnQg
RnJvbVN0ciBhdCBhbGwuIE9yIGdldCByaWQgb2YgUm91dGVyTmFtZQo+YWx0b2dldGhlciAoc2Vl
IGJlbG93KS4KPgo+SXQncyBhbHNvIGNvbnN0cnVjdGluZyBhbiBPcGVuRmFicmljIFJvdXRlck5h
bWUgYnV0IG5ldmVyIGFuIE9TUEYgcm91dGVyCj5uYW1lLgoKbm9wZSwgdGhpcyBkb2Vzbid0IG1h
a2UgYW55IHNlbnNlIGF0IGFsbCwgbm8gaWRlYSBob3cgaXQgZ290IGluIGhlcmUuClJlbW92ZWQg
aXQgYW5kIHRoZSBEZXNlcmlhbGl6ZSBkZXJpdmUgZm9yIGFsbCB0aGUgcGFyZW50IHR5cGVzIGFz
IGl0Cmlzbid0IG5lZWRlZCBhbnl3YXkuCgo+PiArICAgICAgICBFcnIoUm91dGVyTmFtZUVycm9y
OjpJbnZhbGlkTmFtZSkKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gKy8vLyBUaGUgaW50ZXJmYWNl
IG5hbWUgaXMgdGhlIHNhbWUgb24gb3NwZiBhbmQgb3BlbmZhYnJpYywgYnV0IGl0IGlzIGFuIGVu
dW0gc28gd2UgY2FuIGhhdmUgdHdvCj4+ICsvLy8gZGlmZmVyZW50IGVudHJpZXMgaW4gdGhlIGhh
c2htYXAuIFRoaXMgYWxsb3dzIHVzIHRvIGhhdmUgYW4gaW50ZXJmYWNlIGluIGFuIG9zcGYgYW5k
IG9wZW5mYWJyaWMKPj4gKy8vLyBmYWJyaWMuCj4+ICsjW2Rlcml2ZShDbG9uZSwgRGVidWcsIFBh
cnRpYWxFcSwgRXEsIERlc2VyaWFsaXplLCBTZXJpYWxpemUsIEhhc2gpXQo+PiArcHViIGVudW0g
SW50ZXJmYWNlTmFtZSB7Cj4+ICsgICAgT3BlbkZhYnJpYyhGcnJXb3JkKSwKPj4gKyAgICBPc3Bm
KEZycldvcmQpLAo+PiArfQo+Cj5tYXliZSB0aGlzIHNob3VsZCBiZSBhIHN0cnVjdCByZXByZXNl
bnRpbmcgYSBsaW51eCBpbnRlcmZhY2UgbmFtZQo+KG51bC10ZXJtaW5hdGVkIDE2Ynl0ZSBzdHJp
bmcpIGluc3RlYWQgb2YgYW4gRnJyV29yZD8KCk1ha2VzIHNlbnNlLCBhZGRlZCBhIGRpZmZlcmVu
dCBJbnRlcmZhY2VOYW1lIHN0cnVjdCB0aGF0IHdyYXBzIGEgU3RyaW5nIGFuZApjaGVja3MgdGhl
IGxlbmd0aCB1cG9uIGNyZWF0aW9uLgoKPj4gW3NuaXBdCj4+ICsjW2Rlcml2ZShDbG9uZSwgRGVi
dWcsIFBhcnRpYWxFcSwgRXEsIERlZmF1bHQsIERlc2VyaWFsaXplLCBTZXJpYWxpemUpXQo+PiAr
cHViIHN0cnVjdCBGcnJDb25maWcgewo+PiArICAgIHJvdXRlcjogSGFzaE1hcDxSb3V0ZXJOYW1l
LCBSb3V0ZXI+LAo+PiArICAgIGludGVyZmFjZXM6IEhhc2hNYXA8SW50ZXJmYWNlTmFtZSwgSW50
ZXJmYWNlPiwKPgo+YXJlIHdlIGV2ZXIgcXVlcnlpbmcgdGhlIGZyciByb3V0ZXIvaW50ZXJmYWNl
IGJ5IG5hbWU/IGp1ZGdpbmcgZnJvbSB0aGUKPnB1YmxpYyBBUEkgd2UgZG9uJ3QgYW5kIG9ubHkg
aXRlcmF0ZSBvdmVyIGl0LiB3ZSBjb3VsZCBtb3ZlIHRoZSBuYW1lCj5pbnRvIHRoZSBSb3V0ZXIv
SW50ZXJmYWNlIHRoZW4sIHRoaXMgd291bGQgZW5zdXJlIHRoYXQgdGhlIG5hbWUgYWx3YXlzCj5m
aXRzIHRoZSBjb25jcmV0ZSByb3V0ZXIuIFdlIGNvdWxkIHByb2JhYmx5IGFsc28gbWFrZSBjb252
ZXJ0aW5nIGZyb20KPnRoZSBzZWN0aW9uIGNvbmZpZyBlYXNpZXIgdGhlbiBhbmQgcG9zc2libHkg
c2F2ZSB1cyB0aGUgd2hvbGUgUm91dGVyTmFtZQo+c3RydWN0Lgo+Cj5BcmUgZHVwbGljYXRlcyBw
b3NzaWJsZSB3aXRoIGhvdyB0aGUgSUQgaW4gdGhlIFNlY3Rpb25Db25maWcgd29ya3M/IElmCj53
ZSB3YW50IHRvIGF2b2lkIHRoYXQsIHdlIGNvdWxkIHByb2JhYmx5IHVzZSBvdGhlciB3YXlzLgoK
VGhlIHByb2JsZW0gaGVyZSBhcmUgZHVwbGljYXRlIGludGVyZmFjZXMgb3ZlciBkaWZmZXJlbnQg
ZmFicmljcwooYXJlYXMpLCB3aGljaCBhcmUgbm90IGFsbG93ZWQuCgpUaGVzZSBhcmUgbm90IGNo
ZWNrZWQgYnkgU2VjdGlvbkNvbmZpZyBiZWNhdXNlIHRoZSBrZXkgaXM6CiI8YXJlYT5fPGludGVy
ZmFjZS1uYW1lPiIuCgpXZSBjb3VsZCBzaW1wbHkgaW1wbGVtZW50IGNoZWNrcyB3aGVuIGluc2Vy
dGluZywgc3VyZSwgYnV0IHdoeSBub3QganVzdAp1c2UgSGFzaE1hcHMgYW5kIHNlYWwgdGhlIGRl
YWw/IDopCgo+PiArfQo+PiArCj4+ICtpbXBsIEZyckNvbmZpZyB7Cj4+ICsgICAgcHViIGZuIG5l
dygpIC0+IFNlbGYgewo+PiArICAgICAgICBTZWxmOjpkZWZhdWx0KCkKPj4gKyAgICB9Cj4+ICsK
Pj4gKyAgICAjW2NmZyhmZWF0dXJlID0gImNvbmZpZy1leHQiKV0KPj4gKyAgICBwdWIgZm4gYnVp
bGRlcigpIC0+IEZyckNvbmZpZ0J1aWxkZXIgewo+PiArICAgICAgICBGcnJDb25maWdCdWlsZGVy
OjpkZWZhdWx0KCkKPj4gKyAgICB9Cj4KPnNlZSBhYm92ZSBmb3IgaWYgd2UgcmVhbGx5IG5lZWQg
YSBidWlsZGVyIGhlcmUgb3IgaWYgaW1wbGVtZW50aW5nCj5jb252ZXJzaW9uIHRyYWl0cyBzdWZm
aWNlcy4KCk15IGlkZWEgaXMgdGhhdCB3ZSBjYW4gYWRkIHRoZSBiZ3Agc3R1ZmYgaGVyZSBhcyB3
ZWxsIChzb29uVE0pLgpJIHdhbnRlZCB0byBhdm9pZCBhIFRyeUZyb208KEZhYnJpY0NvbmZpZywg
QmdwQ29uZmlnLCAuLi4pPgppbXBsZW1lbnRhdGlvbiB0byBiZSBob25lc3QuCgo+PiArICAgIHB1
YiBmbiByb3V0ZXIoJnNlbGYpIC0+IGltcGwgSXRlcmF0b3I8SXRlbSA9ICgmUm91dGVyTmFtZSwg
JlJvdXRlcik+ICsgJ18gewo+PiArICAgICAgICBzZWxmLnJvdXRlci5pdGVyKCkKPj4gKyAgICB9
Cj4+ICsKPj4gKyAgICBwdWIgZm4gaW50ZXJmYWNlcygmc2VsZikgLT4gaW1wbCBJdGVyYXRvcjxJ
dGVtID0gKCZJbnRlcmZhY2VOYW1lLCAmSW50ZXJmYWNlKT4gKyAnXyB7Cj4+ICsgICAgICAgIHNl
bGYuaW50ZXJmYWNlcy5pdGVyKCkKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gKyNbZGVyaXZlKERl
ZmF1bHQpXQo+PiArI1tjZmcoZmVhdHVyZSA9ICJjb25maWctZXh0IildCj4+ICtwdWIgc3RydWN0
IEZyckNvbmZpZ0J1aWxkZXIgewo+PiArICAgIGZhYnJpY3M6IEZhYnJpY0NvbmZpZywKPj4gKyAg
ICAvL2JncDogT3B0aW9uPGludGVybmFsOjpCZ3BDb25maWc+Cj4+ICt9Cj4+ICsKPj4gKyNbY2Zn
KGZlYXR1cmUgPSAiY29uZmlnLWV4dCIpXQo+PiAraW1wbCBGcnJDb25maWdCdWlsZGVyIHsKPj4g
KyAgICBwdWIgZm4gYWRkX2ZhYnJpY3MobXV0IHNlbGYsIGZhYnJpYzogRmFicmljQ29uZmlnKSAt
PiBGcnJDb25maWdCdWlsZGVyIHsKPj4gKyAgICAgICAgc2VsZi5mYWJyaWNzID0gZmFicmljOwo+
PiArICAgICAgICBzZWxmCj4+ICsgICAgfQo+Cj5Gcm9tPEZhYnJpY0NvbmZpZz4gbWlnaHQgYmUg
YmV0dGVyIGlmIGl0IHJlcGxhY2VzIHNlbGYuZmFicmljcyAvCj5jb25zdW1lcyBGYWJyaWNDb25m
aWcgYW55d2F5PyBNYXliZSBldmVuIFRyeUZyb208RmFicmljQ29uZmlnPiBmb3IKPkZyckNvbmZp
ZyBpdHNlbGY/CgpzZWUgYWJvdmUuCgo+PiArCj4+ICsgICAgcHViIGZuIGJ1aWxkKHNlbGYsIGN1
cnJlbnRfbm9kZTogJnN0cikgLT4gUmVzdWx0PEZyckNvbmZpZywgYW55aG93OjpFcnJvcj4gewo+
PiArICAgICAgICBsZXQgbXV0IHJvdXRlcjogSGFzaE1hcDxSb3V0ZXJOYW1lLCBSb3V0ZXI+ID0g
SGFzaE1hcDo6bmV3KCk7Cj4+ICsgICAgICAgIGxldCBtdXQgaW50ZXJmYWNlczogSGFzaE1hcDxJ
bnRlcmZhY2VOYW1lLCBJbnRlcmZhY2U+ID0gSGFzaE1hcDo6bmV3KCk7Cj4+ICsKPj4gKyAgICAg
ICAgaWYgbGV0IFNvbWUob3BlbmZhYnJpYykgPSBzZWxmLmZhYnJpY3Mub3BlbmZhYnJpYygpIHsK
Pj4gKyAgICAgICAgICAgIC8vIG9wZW5mYWJyaWMKPj4gKyAgICAgICAgICAgIG9wZW5mYWJyaWMK
Pj4gKyAgICAgICAgICAgICAgICAuZmFicmljcygpCj4+ICsgICAgICAgICAgICAgICAgLml0ZXIo
KQo+PiArICAgICAgICAgICAgICAgIC50cnlfZm9yX2VhY2gofChmYWJyaWNfaWQsIGZhYnJpY19j
b25maWcpfCB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGxldCBub2RlX2NvbmZpZyA9IGZhYnJp
Y19jb25maWcubm9kZXMoKS5nZXQoJkhvc3RuYW1lOjpuZXcoY3VycmVudF9ub2RlKSk7Cj4+ICsg
ICAgICAgICAgICAgICAgICAgIGlmIGxldCBTb21lKG5vZGVfY29uZmlnKSA9IG5vZGVfY29uZmln
IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvZnIgPSBvcGVuZmFicmljOjpPcGVu
RmFicmljUm91dGVyOjpmcm9tKChmYWJyaWNfY29uZmlnLCBub2RlX2NvbmZpZykpOwo+PiArICAg
ICAgICAgICAgICAgICAgICAgICAgbGV0IHJvdXRlcl9pdGVtID0gUm91dGVyOjpPcGVuRmFicmlj
KG9mcik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcm91dGVyX25hbWUgPSBSb3V0
ZXJOYW1lOjpPcGVuRmFicmljKAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5m
YWJyaWM6Ok9wZW5GYWJyaWNSb3V0ZXJOYW1lOjp0cnlfZnJvbShmYWJyaWNfaWQpPywKPj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICByb3V0
ZXIuaW5zZXJ0KHJvdXRlcl9uYW1lLmNsb25lKCksIHJvdXRlcl9pdGVtKTsKPj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGVfY29uZmlnLmludGVyZmFjZXMoKS50cnlfZm9yX2VhY2gofGlu
dGVyZmFjZXwgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtdXQgb3BlbmZh
YnJpY19pbnRlcmZhY2U6IG9wZW5mYWJyaWM6Ok9wZW5GYWJyaWNJbnRlcmZhY2UgPQo+PiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFicmljX2lkLCBpbnRlcmZhY2UpLnRyeV9p
bnRvKCk/Owo+Cj5UaGUgb25seSBmYWxsaWJsZSB0aGluZyBoZXJlIGlzIGNvbnN0cnVjdGluZyB0
aGUgUm91dGVyTmFtZSwgc28gd2UgY291bGQKPmp1c3QgY2xvbmUgaXQgZnJvbSBhYm92ZSBhbmQg
bWFrZSBhCj5PcGVuRmFicmljSW50ZXJmYWNlOjpmcm9tX3NlY3Rpb25fY29uZmlnKCkgbWV0aG9k
IHRoYXQgYWNjZXB0cyB0aGUgbmFtZQo+KyBzZWN0aW9uY29uZmlnIHN0cnVjdHM/CgpmYWlyIOKA
kyBvciBqdXN0IGhhdmUgdGhlIApUcnlGcm9tPCgmaW50ZXJuYWw6OkZhYnJpY0lkLCZpbnRlcm5h
bDo6SW50ZXJmYWNlKT4gZm9yIE9wZW5GYWJyaWNJbnRlcmZhY2UKYmUgYSAKVHJ5RnJvbTwoJk9w
ZW5GYWJyaWNSb3V0ZXJOYW1lLCAmaW50ZXJuYWw6OkludGVyZmFjZSk+IGZvciBPcGVuRmFicmlj
SW50ZXJmYWNlCgppbW8gdGhhdCdzIGV2ZW4gYmV0dGVyLgoKPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBJZiBubyBzcGVjaWZpYyBoZWxsb19pbnRlcnZhbCBpcyBzZXQsIGdldCBk
ZWZhdWx0IG9uZSBmcm9tIGZhYnJpYwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNvbmZpZwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9wZW5mYWJyaWNfaW50
ZXJmYWNlLmhlbGxvX2ludGVydmFsKCkuaXNfbm9uZSgpIHsKPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3BlbmZhYnJpY19pbnRlcmZhY2UKPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5zZXRfaGVsbG9faW50ZXJ2YWwoZmFicmljX2NvbmZpZy5oZWxs
b19pbnRlcnZhbCgpLmNsb25lKCkpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW50ZXJmYWNlX25hbWUgPSBJbnRl
cmZhY2VOYW1lOjpPcGVuRmFicmljKEZycldvcmQ6OmZyb21fc3RyKGludGVyZmFjZS5uYW1lKCkp
Pyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlbmZhYnJpYyBkb2Vzbid0
IGFsbG93IGFuIGludGVyZmFjZSB0byBiZSBpbiBtdWx0aXBsZSBvcGVuZmFicmljCj4+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFicmljcy4gRnJyIHdpbGwganVzdCBpZ25vcmUg
aXQgYW5kIHRha2UgdGhlIGZpcnN0IG9uZS4KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBsZXQgRW50cnk6OlZhY2FudChlKSA9IGludGVyZmFjZXMuZW50cnkoaW50ZXJmYWNlX25h
bWUpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5pbnNlcnQob3BlbmZh
YnJpY19pbnRlcmZhY2UuaW50bygpKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjaW5nOjp3YXJu
ISgiQW4gaW50ZXJmYWNlIGNhbm5vdCBiZSBpbiBtdWx0aXBsZSBvcGVuZmFicmljIGZhYnJpY3Mi
KTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4KPmlmIGxldCBFcnIoXykgPSBp
bnRlcmZhY2VzLnRyeV9pbnNlcnQoLi4pIG1heWJlIChpZiB3ZSBrZWVwIHRoZSBIYXNoTWFwKT8K
CnRyeV9pbnNlcnQgaXMgdW5zdGFibGUgOigKCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT2s6OjwoKSwgYW55aG93OjpFcnJvcj4oKCkpCj4+ICsgICAgICAgICAgICAgICAgICAgICAg
ICB9KT87Cj4+ICsgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAg
ICAgICAgICAgICB0cmFjaW5nOjp3YXJuISgibm8gbm9kZSBjb25maWd1cmF0aW9uIGZvciBmYWJy
aWMgXCJ7ZmFicmljX2lkfVwiIOKAkyB0aGlzIGZhYnJpYyBpcyBub3QgY29uZmlndXJlZCBmb3Ig
dGhpcyBub2RlLiIpOwo+Cj5NYXliZSBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHNwbGl0IHRoaXMg
aW50byB0d28gZnVuY3Rpb25zLCB3aGVyZSB3ZQo+Y291bGQganVzdCByZXR1cm4gZWFybHkgaWYg
dGhlcmUgaXMgbm8gY29uZmlndXJhdGlvbiBmb3IgdGhpcyBub2RlPwoKZG8geW91IG1lYW4gb25l
IGZ1bmN0aW9uIGZvciBvc3BmIGFuZCBvbmUgZm9yIG9wZW5mYWJyaWM/CkknZCBhZ3JlZSB0byB0
aGF0LgoKPlRoZW4gaGVyZSBhbiBlYXJseSByZXR1cm4gd291bGQgc3VmZmljZSwgc2luY2Ugb3Ro
ZXJ3aXNlIHRoZSBsb2cgZ2V0cwo+c3BhbW1lZCBvbiBub2RlcyB0aGF0IGFyZSBzaW1wbHkgbm90
IHBhcnQgb2YgYSBmYWJyaWMgKHdoaWNoIGlzCj5wZXJmZWN0bHkgdmFsaWQpPwoKVHJ1ZSwgZGlk
IG5vdCBjb25zaWRlciB0aGF0LiBJIHRoaW5rIGl0J3Mgb2sgaWYgd2UganVzdCBtYWtlIHRoaXMg
YQpkZWJ1ZyBwcmludC4gTm8gbmVlZCB0byBhZGQgc29tZSBmYW5jeSBjaGVja3MgaW1vLgoKPj4g
W3NuaXBdCj4+ICsjW2Rlcml2ZShDbG9uZSwgRGVidWcsIFBhcnRpYWxFcSwgRXEsIEhhc2gsIERl
c2VyaWFsaXplLCBTZXJpYWxpemUpXQo+PiArcHViIHN0cnVjdCBPcGVuRmFicmljSW50ZXJmYWNl
IHsKPj4gKyAgICAvLyBOb3RlOiBhbiBpbnRlcmZhY2UgY2FuIG9ubHkgYmUgYSBwYXJ0IG9mIGEg
c2luZ2xlIGZhYnJpYyAoc28gbm8gdmVjIG5lZWRlZCBoZXJlKQo+PiArICAgIGZhYnJpY19pZDog
T3BlbkZhYnJpY1JvdXRlck5hbWUsCj4+ICsgICAgcGFzc2l2ZTogT3B0aW9uPGJvb2w+LAo+PiAr
ICAgIGhlbGxvX2ludGVydmFsOiBPcHRpb248b3BlbmZhYnJpYzo6SGVsbG9JbnRlcnZhbD4sCj4+
ICsgICAgY3NucF9pbnRlcnZhbDogT3B0aW9uPG9wZW5mYWJyaWM6OkNzbnBJbnRlcnZhbD4sCj4+
ICsgICAgaGVsbG9fbXVsdGlwbGllcjogT3B0aW9uPG9wZW5mYWJyaWM6OkhlbGxvTXVsdGlwbGll
cj4sCj4+ICt9Cj4+ICsKPj4gK2ltcGwgT3BlbkZhYnJpY0ludGVyZmFjZSB7Cj4+ICsgICAgcHVi
IGZuIGZhYnJpY19pZCgmc2VsZikgLT4gJk9wZW5GYWJyaWNSb3V0ZXJOYW1lIHsKPj4gKyAgICAg
ICAgJnNlbGYuZmFicmljX2lkCj4+ICsgICAgfQo+PiArICAgIHB1YiBmbiBwYXNzaXZlKCZzZWxm
KSAtPiAmT3B0aW9uPGJvb2w+IHsKPj4gKyAgICAgICAgJnNlbGYucGFzc2l2ZQo+PiArICAgIH0K
Pj4gKyAgICBwdWIgZm4gaGVsbG9faW50ZXJ2YWwoJnNlbGYpIC0+ICZPcHRpb248b3BlbmZhYnJp
Yzo6SGVsbG9JbnRlcnZhbD4gewo+PiArICAgICAgICAmc2VsZi5oZWxsb19pbnRlcnZhbAo+PiAr
ICAgIH0KPj4gKyAgICBwdWIgZm4gY3NucF9pbnRlcnZhbCgmc2VsZikgLT4gJk9wdGlvbjxvcGVu
ZmFicmljOjpDc25wSW50ZXJ2YWw+IHsKPj4gKyAgICAgICAgJnNlbGYuY3NucF9pbnRlcnZhbAo+
PiArICAgIH0KPj4gKyAgICBwdWIgZm4gaGVsbG9fbXVsdGlwbGllcigmc2VsZikgLT4gJk9wdGlv
bjxvcGVuZmFicmljOjpIZWxsb011bHRpcGxpZXI+IHsKPj4gKyAgICAgICAgJnNlbGYuaGVsbG9f
bXVsdGlwbGllcgo+PiArICAgIH0KPgo+SWYgd2UgaW1wbGVtZW50IENvcHkgZm9yIHRob3NlIHR5
cGVzIGl0J3MgdXN1YWxseSBqdXN0IGVhc2llciB0byByZXR1cm4KPnRoZW0gb3duZWQuCgp0cnVl
Cgo+PiArICAgIHB1YiBmbiBzZXRfaGVsbG9faW50ZXJ2YWwoJm11dCBzZWxmLCBpbnRlcnZhbDog
T3B0aW9uPG9wZW5mYWJyaWM6OkhlbGxvSW50ZXJ2YWw+KSB7Cj4KPm5pdDogSSB1c3VhbGx5IGxp
a2UgaW1wbCBJbnRvPE9wdGlvbjwuLj4+IGJlY2F1c2UgaXQgbWFrZXMgdGhlIEFQSSBuaWNlcgo+
KGRvbid0IGhhdmUgdG8gd3JpdGUgU29tZSguLikgYWxsIHRoZSB0aW1lIC4uLikKCnllcC4KCj4+
IFtzbmlwXQo+PiArI1tjZmcoZmVhdHVyZSA9ICJjb25maWctZXh0IildCj4+ICtpbXBsIFRyeUZy
b208KCZpbnRlcm5hbDo6RmFicmljSWQsICZpbnRlcm5hbDo6SW50ZXJmYWNlKT4gZm9yIE9wZW5G
YWJyaWNJbnRlcmZhY2Ugewo+PiArICAgIHR5cGUgRXJyb3IgPSBPcGVuRmFicmljSW50ZXJmYWNl
RXJyb3I7Cj4+ICsKPj4gKyAgICBmbiB0cnlfZnJvbSh2YWx1ZTogKCZpbnRlcm5hbDo6RmFicmlj
SWQsICZpbnRlcm5hbDo6SW50ZXJmYWNlKSkgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycm9yPiB7
Cj4+ICsgICAgICAgIE9rKFNlbGYgewo+PiArICAgICAgICAgICAgZmFicmljX2lkOiBPcGVuRmFi
cmljUm91dGVyTmFtZTo6dHJ5X2Zyb20odmFsdWUuMCk/LAo+PiArICAgICAgICAgICAgcGFzc2l2
ZTogdmFsdWUuMS5wYXNzaXZlKCksCj4+ICsgICAgICAgICAgICBoZWxsb19pbnRlcnZhbDogdmFs
dWUuMS5oZWxsb19pbnRlcnZhbCgpLmNsb25lKCksCj4+ICsgICAgICAgICAgICBjc25wX2ludGVy
dmFsOiB2YWx1ZS4xLmNzbnBfaW50ZXJ2YWwoKS5jbG9uZSgpLAo+PiArICAgICAgICAgICAgaGVs
bG9fbXVsdGlwbGllcjogdmFsdWUuMS5oZWxsb19tdWx0aXBsaWVyKCkuY2xvbmUoKSwKPgo+V2Ug
Y2FuIGVhc2lseSBpbXBsZW1lbnQgQ29weSBmb3IgdGhvc2UgdmFsdWVzLCBzaW5jZSB0aGV5J3Jl
IHUxNi4KCm5pY2UKCj4+ICsgICAgICAgIH0pCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICsjW2Nm
ZyhmZWF0dXJlID0gImNvbmZpZy1leHQiKV0KPj4gK2ltcGwgVHJ5RnJvbTwmaW50ZXJuYWw6OkZh
YnJpY0lkPiBmb3IgT3BlbkZhYnJpY1JvdXRlck5hbWUgewo+PiArICAgIHR5cGUgRXJyb3IgPSBS
b3V0ZXJOYW1lRXJyb3I7Cj4+ICsKPj4gKyAgICBmbiB0cnlfZnJvbSh2YWx1ZTogJmludGVybmFs
OjpGYWJyaWNJZCkgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycm9yPiB7Cj4+ICsgICAgICAgIE9r
KE9wZW5GYWJyaWNSb3V0ZXJOYW1lOjpuZXcoRnJyV29yZDo6bmV3KHZhbHVlLnRvX3N0cmluZygp
KT8pKQo+PiArICAgIH0KPj4gK30KPj4gKwo+PiArI1tjZmcoZmVhdHVyZSA9ICJjb25maWctZXh0
IildCj4+ICtpbXBsIEZyb208KCZpbnRlcm5hbDo6RmFicmljQ29uZmlnLCAmaW50ZXJuYWw6Ok5v
ZGVDb25maWcpPiBmb3IgT3BlbkZhYnJpY1JvdXRlciB7Cj4+ICsgICAgZm4gZnJvbSh2YWx1ZTog
KCZpbnRlcm5hbDo6RmFicmljQ29uZmlnLCAmaW50ZXJuYWw6Ok5vZGVDb25maWcpKSAtPiBTZWxm
IHsKPj4gKyAgICAgICAgU2VsZiB7Cj4+ICsgICAgICAgICAgICBuZXQ6IHZhbHVlLjEubmV0KCku
dG9fb3duZWQoKSwKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gK30KPgo+V2UgbmV2ZXIgdXNl
IHZhbHVlLjAgaGVyZSwgYnV0IHdlIG1pZ2h0IGlmIHdlIGhhdmUgc29tZSBnbG9iYWwgb3B0aW9u
cywKPnJpZ2h0PwoKRXhhY3RseS4gQWx0aG91Z2ggSSd2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHRo
YXQuIE1heWJlIHdlIHNob3VsZCBqdXN0CmFsbCBjaHVjayB0aGVtIGluIHRvIHRoZSBJbnRlcm1l
ZGlhdGUgUmVwcmVzZW50YXRpb24gKGFuZCBleHBhbmQgdGhlCnByb3BlcnRpZXMgdG8gZXZlcnkg
bm9kZSkgYW5kIGRvbid0IGJvdGhlciB3aXRoIHRoZW0gaW4gdGhlIEZyckNvbmZpZz8KCj4+IFtz
bmlwXQo+PiArLy8vIFRoZSBuYW1lIG9mIHRoZSBvc3BmIGZyciByb3V0ZXIuIFRoZXJlIGlzIG9u
bHkgb25lIG9zcGYgZmFicmljIHBvc3NpYmxlIGluIGZyciAoaWdub3JpbmcKPj4gKy8vLyBtdWx0
aXBsZSBpbnZvY2F0aW9ucyBvZiB0aGUgb3NwZmQgZGFlbW9uKSBhbmQgdGhlIHNlcGFyYXRpb24g
aXMgZG9uZSB3aXRoIGFyZWFzLiBTdGlsbCwKPj4gKy8vLyBkaWZmZXJlbnQgYXJlYXMgaGF2ZSB0
aGUgc2FtZSBmcnIgcm91dGVyLCBzbyB0aGUgbmFtZSBvZiB0aGUgcm91dGVyIGlzIGp1c3QgIm9z
cGYiIGluICJyb3V0ZXIKPj4gKy8vLyBvc3BmIi4gVGhpcyB0eXBlIHN0aWxsIGNvbnRhaW5zIHRo
ZSBBcmVhIHNvIHRoYXQgd2UgY2FuIGluc2VydCBpdCBpbiB0aGUgSGFzaG1hcC4KPj4gKyNbZGVy
aXZlKENsb25lLCBEZWJ1ZywgUGFydGlhbEVxLCBFcSwgSGFzaCwgRGVzZXJpYWxpemUsIFNlcmlh
bGl6ZSldCj4+ICtwdWIgc3RydWN0IE9zcGZSb3V0ZXJOYW1lKEFyZWEpOwo+PiArCj4+ICtpbXBs
IEZyb208QXJlYT4gZm9yIE9zcGZSb3V0ZXJOYW1lIHsKPj4gKyAgICBmbiBmcm9tKHZhbHVlOiBB
cmVhKSAtPiBTZWxmIHsKPj4gKyAgICAgICAgU2VsZih2YWx1ZSkKPj4gKyAgICB9Cj4+ICt9Cj4+
ICsKPj4gK2ltcGwgRGlzcGxheSBmb3IgT3NwZlJvdXRlck5hbWUgewo+PiArICAgIGZuIGZtdCgm
c2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikgLT4gc3RkOjpmbXQ6OlJlc3Vs
dCB7Cj4+ICsgICAgICAgIHdyaXRlIShmLCAib3NwZiIpCj4KPnRoaXMgaXMgbWlzc2luZyB0aGUg
YXJlYSwgb3I/CgpOb3BlLCB0aGlzIGlzIGZpbmUsIHlvdSBjYW4ndCBoYXZlIG1vcmUgdGhhbiBv
bmUgb3NwZiByb3V0ZXIgZXhjZXB0IGlmCnlvdXIgaGF2aW5nIG11bHRpcGxlIG9zcGZkIGRhZW1v
bnMuIE5vdGUgdGhhdCB0aGUgcm91dGVyLWlkIGFsc28KcGVyLWRhZW1vbiwgbm90IHBlci1hcmVh
LgoKPj4gW3NuaXBdCj4+ICsvLy8gVGhlIE9TUEYgQXJlYS4gTW9zdCBjb21tb25seSwgdGhpcyBp
cyBqdXN0IGEgbnVtYmVyLCBlLmcuIDUsIGJ1dCBzb21ldGltZXMgYWxzbyBhCj4+ICsvLy8gcHNl
dWRvLWlwYWRkcmVzcywgZS5nLiAwLjAuMC4wCj4+ICsjW2Rlcml2ZShDbG9uZSwgRGVidWcsIFBh
cnRpYWxFcSwgRXEsIEhhc2gsIERlc2VyaWFsaXplLCBTZXJpYWxpemUpXQo+PiArcHViIHN0cnVj
dCBBcmVhKEZycldvcmQpOwo+PiArCj4+ICtpbXBsIFRyeUZyb208RnJyV29yZD4gZm9yIEFyZWEg
ewo+PiArICAgIHR5cGUgRXJyb3IgPSBBcmVhUGFyc2luZ0Vycm9yOwo+PiArCj4+ICsgICAgZm4g
dHJ5X2Zyb20odmFsdWU6IEZycldvcmQpIC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnJvcj4gewo+
PiArICAgICAgICBBcmVhOjpuZXcodmFsdWUpCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICtpbXBs
IEFyZWEgewo+PiArICAgIHB1YiBmbiBuZXcobmFtZTogRnJyV29yZCkgLT4gUmVzdWx0PFNlbGYs
IEFyZWFQYXJzaW5nRXJyb3I+IHsKPj4gKyAgICAgICAgaWYgbmFtZS5hc19yZWYoKS5wYXJzZTo6
PGkzMj4oKS5pc19vaygpIHx8IG5hbWUuYXNfcmVmKCkucGFyc2U6OjxJcHY0QWRkcj4oKS5pc19v
aygpIHsKPgo+dXNlIHUzMiBoZXJlPyBvdGhlcndpc2UgYXJlYSBJRCBjYW4gYmUgbmVnYXRpdmUs
IHdoaWNoIGlzbid0IGFsbG93ZWQgYWZhaWN0PwoKdHJ1ZS4KClRoYW5rcyBmb3IgdGhlIHJldmll
dyEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUt
ZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xp
c3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK