From owner-doc-jp@jp.FreeBSD.org Tue Jul  5 01:48:10 2011
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id p64GmAJ51902;
	Tue, 5 Jul 2011 01:48:10 +0900 (JST)
	(envelope-from owner-doc-jp@jp.FreeBSD.org)
Received: from Gateway.samilabs.com (mail.samilabs.com [125.16.220.103])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id p64GlRp51845
	for <doc-jp@jp.freebsd.org>; Tue, 5 Jul 2011 01:47:27 +0900 (JST)
	(envelope-from CartaSi_Informa@cartasi.it)
X-IronPort-AV: E=Sophos;i="4.65,473,1304274600"; 
   d="mht'208?scan'208,208,217,147,145";a="906770"
Received: from unknown (HELO mail.samilabs.com) ([192.100.100.97])
  by Gateway.samilabs.com with ESMTP; 04 Jul 2011 22:17:23 +0530
Received: from User ([204.93.160.201]) by mail.samilabs.com with Microsoft SMTPSVC(6.0.3790.4675);
	 Mon, 4 Jul 2011 22:14:20 +0530
From: <CartaSi_Informa@cartasi.it>
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_007A_01C2A9A6.76487B14"
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Bcc:
Message-ID: <MAILSERVERqOdtCIq1e0000554e@mail.samilabs.com>
X-OriginalArrivalTime: 04 Jul 2011 16:44:20.0875 (UTC) FILETIME=[9F7E8DB0:01CC3A69]
Reply-To: doc-jp@jp.FreeBSD.org
Precedence: list
Date: Mon, 4 Jul 2011 09:43:50 -0700
X-Sequence: doc-jp 84624
Subject: [doc-jp 84624] Pubblicazione estratto conto on-line
Sender: owner-doc-jp@jp.FreeBSD.org
X-Originator: CartaSi_Informa@cartasi.it
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

This is a multi-part message in MIME format.

------=_NextPart_000_007A_01C2A9A6.76487B14
Content-Type: text/plain;
	charset="Windows-1251"
Content-Transfer-Encoding: 7bit

Gentile Cliente,

la informiamo che e' disponibile on-line  il suo estratto conto (riferito al codice del rapporto 05336-1999): potra' consultarlo, stamparlo e salvarlo sul suo PC per creare un suo archivio personalizzato.

Le ricordiamo che ogni estratto conto rimane in linea fino al terzo mese successivo all'emissione.

Grazie ancora per aver scelto i servizi on-line di CartaSi.
I migliori saluti.

Servizio Clienti CartaSi

****************************************************************
VUOLE CONTESTARE SU UNA SPESA?
Easy Claim e il servizio che fa per lei!

****************************************************************
Per favore, non rispondere a questa mail: per eventuali comunicazioni accedi alla tua area riservata del Sito Internet di CartaSi e scrivici attraverso "Lo sportello del Cliente":
e il modo piu semplice per ottenere una rapida risposta dai nostri operatori. Grazie per la collaborazione.

------=_NextPart_000_007A_01C2A9A6.76487B14
Content-Type: application/octet-stream;
	name="CartaSi Carte di credito per privati e aziende.mht"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="CartaSi Carte di credito per privati e aziende.mht"

RnJvbTogIlNhdmVkIGJ5IFdpbmRvd3MgSW50ZXJuZXQgRXhwbG9yZXIgOCIN
ClN1YmplY3Q6IENhcnRhU2k6IENhcnRlIGRpIGNyZWRpdG8gcGVyIHByaXZh
dGkgZSBhemllbmRlDQpEYXRlOiBXZWQsIDI5IEp1biAyMDExIDExOjUzOjEy
IC0wNzAwDQpNSU1FLVZlcnNpb246IDEuMA0KQ29udGVudC1UeXBlOiBtdWx0
aXBhcnQvcmVsYXRlZDsNCgl0eXBlPSJ0ZXh0L2h0bWwiOw0KCWJvdW5kYXJ5
PSItLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMzY1My4xRjVBRURBMCIN
ClgtTWltZU9MRTogUHJvZHVjZWQgQnkgTWljcm9zb2Z0IE1pbWVPTEUgVjYu
MC42MDAyLjE4MjYzDQoNClRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2Ug
aW4gTUlNRSBmb3JtYXQuDQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBf
MDFDQzM2NTMuMUY1QUVEQTANCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOw0K
CWNoYXJzZXQ9Imlzby04ODU5LTEiDQpDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiBxdW90ZWQtcHJpbnRhYmxlDQpDb250ZW50LUxvY2F0aW9uOiBodHRw
Oi8vYW1vdWdlMjAxMS5jb20vYS9ndHdwYWdlcy90aXRvbGFyaS5odG1sDQoN
CjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAx
IFRyYW5zaXRpb25hbC8vRU4iID0NCiJodHRwOi8vd3d3LnczYy5vcmcvVFIv
MTk5OS9SRUMtaHRtbDQwMS0xOTk5MTIyNC9sb29zZS5kdGQiPg0KPEhUTUwg
ZGlyPTNEbHRyIGxhbmc9M0RpdCA9DQp4bWxucz0zRCJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj48SEVBRD48VElUTEU+Q2FydGFTaTogQ2FydGUg
ZGkgPQ0KY3JlZGl0byBwZXIgcHJpdmF0aSBlIGF6aWVuZGU8L1RJVExFPjwh
LS0gTWlycm9yZWQgZnJvbSA9DQp3d3cuY2FydGFzaS5pdC9ndHdwYWdlcy9p
bmRleC5qc3AgYnkgSFRUcmFjayBXZWJzaXRlIENvcGllci8zLnggPQ0KW1hS
JkNPJzIwMDhdLCBGcmksIDA3IE1heSAyMDExIDIxOjQ1OjU1IEdNVCAtLT4N
CjxNRVRBIG5hbWU9M0RrZXl3b3Jkcz0yMA0KY29udGVudD0zRCJjYXJ0YSBk
aSBjcmVkaXRvIGF6aWVuZGFsZSxjYXJ0YSBkaSBjcmVkaXRvIHJhdGVhbGUs
Y2FydGUgZGkgPQ0KY3JlZGl0byxjYXJ0ZSBkaSBjcmVkaXRvIHByZXBhZ2F0
ZSxjYXJ0ZSBkaSBjcmVkaXRvIHByaXZhdGkiPg0KPE1FVEEgbmFtZT0zRGRl
c2NyaXB0aW9uPTIwDQpjb250ZW50PTNEIlNjb3ByaSBpIHZhbnRhZ2dpIGRl
bGxlIGNhcnRlIGRpIGNyZWRpdG8gQ2FydGFTaSwgY2VyY2EgdHJhID0NCmxl
IHNvbHV6aW9uaSBwZXIgcHJpdmF0aSBlIGF6aWVuZGUgcXVlbGxhIHBpPUY5
IGFkYXR0YSBhIHRlIGUgcmljaGllZGkgPQ0KbGEgdHVhIGNhcnRhIGRpIGNy
ZWRpdG8uIj4NCjxNRVRBIGNvbnRlbnQ9M0QidGV4dC9odG1sOyBjaGFyc2V0
PTNEaXNvLTg4NTktMSIgPQ0KaHR0cC1lcXVpdj0zRENvbnRlbnQtVHlwZT4N
CjxTVFlMRSB0aXRsZT0zRCJzdGlsZSBwcmVkZWZpbml0byIgdHlwZT0zRHRl
eHQvY3NzID0NCm1lZGlhPTNEc2NyZWVuPkBpbXBvcnQgdXJsKCAuLi9jc3Mv
cHJpdmF0aS5jc3MgKTsNCiNjb250YWluZXIgI21haW5OYXYgI3BtZW51IExJ
LmRyb3AgQS5hY3RpdmUwIHsNCglCQUNLR1JPVU5EOiAjZmZmOyBDT0xPUjog
IzY2Ng0KfQ0KPC9TVFlMRT4NCjxMSU5LIHJlbD0zRHN0eWxlc2hlZXQgdHlw
ZT0zRHRleHQvY3NzPTIwDQpocmVmPTNEImh0dHA6Ly93d3cuY2FydGFzaS5p
dC9ncmV5Ym94L2diX3N0eWxlcy5jc3MiPg0KPFNDUklQVCB0eXBlPTNEdGV4
dC9qYXZhc2NyaXB0Pg0KdmFyIEdCX1JPT1RfRElSID0zRCAiaHR0cDovL3d3
dy5jYXJ0YXNpLml0L2dyZXlib3gvIjsNCjwvU0NSSVBUPg0KDQo8U0NSSVBU
IHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ9MjANCnNyYz0zRCJodHRwOi8vd3d3
LmNhcnRhc2kuaXQvamF2YXNjcmlwdC9qcXVlcnkuanMiPjwvU0NSSVBUPg0K
DQo8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ9MjANCnNyYz0zRCJo
dHRwOi8vd3d3LmNhcnRhc2kuaXQvZ3JleWJveC9BSlMuanMiPjwvU0NSSVBU
Pg0KDQo8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ9MjANCnNyYz0z
RCJodHRwOi8vd3d3LmNhcnRhc2kuaXQvZ3JleWJveC9BSlNfZnguanMiPjwv
U0NSSVBUPg0KDQo8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ9MjAN
CnNyYz0zRCJodHRwOi8vd3d3LmNhcnRhc2kuaXQvZ3JleWJveC9nYl9zY3Jp
cHRzLmpzIj48L1NDUklQVD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZh
c2NyaXB0PTIwDQpzcmM9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0L2phdmFz
Y3JpcHQvaG9tZS5qcyI+PC9TQ1JJUFQ+DQoNCjxTQ1JJUFQgdHlwZT0zRHRl
eHQvamF2YXNjcmlwdD0yMA0Kc3JjPTNEImh0dHA6Ly93d3cuY2FydGFzaS5p
dC9qYXZhc2NyaXB0L2dlc3R1cmwuanMiPjwvU0NSSVBUPg0KDQo8U0NSSVBU
Pg0KZnVuY3Rpb24gZ29Gb2N1c29uKHBhcmFtLCBwYXJhbTIpIHsNCglkb2N1
bWVudC5nb3RvcGFnZS5hY3Rpb24gPTNEICJpbmRleC5odG1sIjsNCglkb2N1
bWVudC5nb3RvcGFnZS5mb2N1c29uUGFnZS52YWx1ZT0zRHBhcmFtOw0KICAg
IGRvY3VtZW50LmdvdG9wYWdlLnBhcmFtLnZhbHVlPTNEcGFyYW0yOw0KCWRv
Y3VtZW50LmdvdG9wYWdlLnN1Ym1pdCgpOw0KfQ0KdmFyIGhvbWUgPTNEIi9n
dHdwYWdlcyI7DQp2YXIgdmVycyA9M0QgR2V0QnJvd3NlKCk7DQpmdW5jdGlv
biBHZXRCcm93c2UoKXsNCj0wOQ0KCXJldHVybiAiTlM0IjsNCn0NCjwvU0NS
SVBUPg0KDQo8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ+DQoJCWpR
dWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCgkJCWZ1bmN0aW9u
IHJlc2V0TWVudSgpew0KCQkJCSQoIi5wcmltb0xpdmVsbG8iKS5yZW1vdmVD
bGFzcygiYXR0Iik7DQoJCQkJJC5lYWNoKCQoIi5wcmltb0xpdmVsbG8iKSxm
dW5jdGlvbigpIHsNCgkJCQkJaW5kZXggPTNEICQoIi5wcmltb0xpdmVsbG8i
KS5pbmRleCh0aGlzKTsNCgkJCQkJLy8kKHRoaXMpLmNoaWxkcmVuKCkuY2hp
bGRyZW4oKS5hdHRyKCJzcmMiLCJpbWcvIisoaW5kZXgrMSkrIi5naWYiKQ0K
CQkJCX0pOw0KCQkJfQ0KCQkJJCgiLnByaW1vTGl2ZWxsbyIpLmhvdmVyKGZ1
bmN0aW9uKCkgew0KCQkJCSQoIi5wcmltb0xpdmVsbG8iKS5yZW1vdmVDbGFz
cygiYXR0aG92ZXIiKTsNCgkJCQkkKHRoaXMpLmFkZENsYXNzKCJhdHRob3Zl
ciIpOw0KCQkJPTA5DQoJCQl9LA0KCQkJZnVuY3Rpb24oKSB7DQoJCQkJJCh0
aGlzKS5yZW1vdmVDbGFzcygiYXR0aG92ZXIiKTsNCgkJCX0pOw0KCQkJJCgi
LnByaW1vTGl2ZWxsb0xpbmsiKS5jbGljayhmdW5jdGlvbigpIHsNCgkJCQlp
ZigkKHRoaXMpLmF0dHIoImhyZWYiKSA9M0Q9M0QgIiMiKSB7DQoJCQkJCXJl
c2V0TWVudSgpOw0KCQkJCQkkKCIuZm91cnRoIikuaGlkZSgpOw0KCQkJCQkk
KCIudGhpcmRVbCIpLmNzcygid2lkdGgiLCIxOTRweCIpOw0KCQkJCQlpbmRl
eCA9M0QgJCgiLnByaW1vTGl2ZWxsb0xpbmsiKS5pbmRleCh0aGlzKTsNCgkJ
CQkJJCh0aGlzKS5wYXJlbnQoKS5hZGRDbGFzcygiYXR0Iik7DQoJCQkJCS8v
JCh0aGlzKS5wYXJlbnQoKS5jc3MoImhlaWdodCIsICIxMjdweCIpOw0KCQkJ
CQkkKCIjbWFpbiIpLmNzcygiaGVpZ2h0IiwgIjExNHB4Iik7DQoJCQkJCT0N
Ci8vJCh0aGlzKS5jaGlsZHJlbigpLmNoaWxkcmVuKCkuYXR0cigic3JjIiwi
aW1nLyIrKGluZGV4KzEpKyJfYXR0LmdpZiIpOw0KCQkJCQkkKCIudGhpcmQi
KS5oaWRlKCk7DQoJCQkJCSQoIi50aGlyZCIraW5kZXgpLnNsaWRlRG93bihm
dW5jdGlvbigpew0KCQkJCQkJJCgiLmZvdXJ0aCIpLmhpZGUoKTsNCgkJCQkJ
fSk7DQoJCQkJfQ0KCQkJfSk7DQoJCQkkKCIudGhpcmRTZWxlY3RvciIpLmNs
aWNrKGZ1bmN0aW9uKCkgew0KCQkJCSQoIi5mb3VydGgiKS5oaWRlKCk7DQoJ
CQkJJCgiLnRoaXJkVWwiKS5jc3MoIndpZHRoIiwiMTk0cHgiKTsNCgkJCQkk
KCIudGhpcmRTZWxlY3RvciIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsNCgkJ
CQkkKHRoaXMpLmFkZENsYXNzKCJhY3RpdmUiKTsNCgkJCQkvL3Jlc2V0TWVu
dSgpOw0KCQkJCS8vaW5kZXggPTNEICQoIi5wcmltb0xpdmVsbG8iKS5pbmRl
eCh0aGlzKTsNCgkJCQkvLyQodGhpcykuYWRkQ2xhc3MoImF0dCIpOw0KCQkJ
CSQodGhpcykucGFyZW50KCkuY3NzKCJ3aWR0aCIsIjM4OHB4Iik7DQoJCQkJ
JCh0aGlzKS5jaGlsZHJlbigiLmZvdXJ0aCIpLnNob3coKTsNCgkJCQkkKHRo
aXMpLmNoaWxkcmVuKCIuZm91cnRoIikuY3NzKCJ3aWR0aCIsIjBweCIpOw0K
CQkJCT0NCiQodGhpcykuY2hpbGRyZW4oIi5mb3VydGgiKS5jc3MoImxlZnQi
LCgkKHRoaXMpLnBvc2l0aW9uKCkubGVmdCsxOTQpKyJweCI9DQopOw0KCQkJ
CSQodGhpcykuY2hpbGRyZW4oIi5mb3VydGgiKS5hbmltYXRlKHt3aWR0aDoi
MTk0cHgifSx7cXVlcXVlOmZhbHNlLCA9DQpkdXJhdGlvbjo1MDB9KTsNCgkJ
CX0pOw0KCQk9MDkNCgkJCSQoIi50aGlyZFNlbGVjdG9yIikuaG92ZXIoZnVu
Y3Rpb24oKSB7DQoJCQkJJCgiLnRoaXJkU2VsZWN0b3IiKS5yZW1vdmVDbGFz
cygib24iKTsNCgkJCQkkKHRoaXMpLmFkZENsYXNzKCJvbiIpOw0KCQkJPTA5
DQoJCQl9LGZ1bmN0aW9uKCl7DQoJCQkJJCh0aGlzKS5yZW1vdmVDbGFzcygi
b24iKTsNCgkJCX0pOw0KCSQoIi5ub3RoaXJkU2VsZWN0b3IiKS5ob3Zlcihm
dW5jdGlvbigpIHsNCgkJCQkkKHRoaXMpLmFkZENsYXNzKCJvbiIpOw0KCQkJ
PTA5DQoJCQl9LGZ1bmN0aW9uKCl7DQoJCQkJJCh0aGlzKS5yZW1vdmVDbGFz
cygib24iKTsNCgkJCX0pOw0KCQkJJCgiLmZvdXJ0aFNlbGVjdG9yIikuaG92
ZXIoZnVuY3Rpb24oKSB7DQoJCQkJJCgiLmZvdXJ0aFNlbGVjdG9yIikucmVt
b3ZlQ2xhc3MoIm9uIik7DQoJCQkJJCh0aGlzKS5hZGRDbGFzcygib24iKTsN
CgkJCT0wOQ0KCQkJfSk7DQoJCT0wOQ0KCQkJLy8kKCIudGhpcmQiKS5oaWRl
KCk7DQoJCQkvLyQoIi5mb3VydGgiKS5oaWRlKCk7DQoJCQkvLyQoIi5mb3Vy
dGgiKS5jc3MoIndpZHRoIiwiMHB4Iik7DQoJCQkvLyQoIi50aGlyZDpmaXJz
dCIpLnNob3coKTsNCgkJCS8vJCgiLmZvdXJ0aCIpLmhpZGUoKTsNCgkJfSk7
DQoJPC9TQ1JJUFQ+DQoNCjxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlw
dD0yMA0Kc3JjPTNEImh0dHA6Ly9hbW91Z2UyMDExLmNvbS9hL2d0d3BhZ2Vz
L1NjcmlwdHMvQUNfUnVuQWN0aXZlQ29udGVudC5qcyI+PD0NCi9TQ1JJUFQ+
DQoNCjxTVFlMRSB0eXBlPTNEdGV4dC9jc3M+LmNsZWFyIHsNCglDTEVBUjog
Ym90aA0KfQ0KLmRiaWRUaXAgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBB
RERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQtU0la
RTogPQ0KODUlOyBQQURESU5HLVRPUDogM3B4DQp9DQouZGJpZFRpcCB7DQoJ
UEFERElORy1CT1RUT006IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJ
TkctUklHSFQ6IDBweDsgRk9OVC1TSVpFOiA9DQo4NSU7IFBBRERJTkctVE9Q
OiAzcHgNCn0NCi5rbXNpYm9sZCB7DQoJRk9OVC1TSVpFOiAxMTQlOyBGT05U
LVdFSUdIVDogYm9sZA0KfQ0KLmttc2lib2xkIHsNCglGT05ULVNJWkU6IDEx
NCU7IEZPTlQtV0VJR0hUOiBib2xkDQp9DQouc3VicGVyc3R4dCB7DQoJTElO
RS1IRUlHSFQ6IDEuNzVlbQ0KfQ0KLnN1YnBlcnN0eHQgew0KCUxJTkUtSEVJ
R0hUOiAxLjc1ZW0NCn0NCi5zdWJwZXJzdHh0MiB7DQoJTUFSR0lOOiAwcHgg
MHB4IDBweCAyZW07IERJU1BMQVk6IGJsb2NrDQp9DQouc3VicGVyc3R4dDIg
ew0KCU1BUkdJTjogMHB4IDBweCAwcHggMmVtOyBESVNQTEFZOiBibG9jaw0K
fQ0KLnlyZWdsZ3NiIHsNCglNQVJHSU4tVE9QOiAwcHgNCn0NCiN5cmVnbGd0
YiB7DQoJVEVYVC1BTElHTjogbGVmdDsgV0lEVEg6IDEwMCUNCn0NCiN5cmVn
bGd0YiB7DQoJVEVYVC1BTElHTjogbGVmdDsgV0lEVEg6IDEwMCUNCn0NCklO
UFVUI3BlcnNpc3RlbnQgew0KCU1BUkdJTi1CT1RUT006IDBlbQ0KfQ0KSU5Q
VVQjcGVyc2lzdGVudCB7DQoJTUFSR0lOLUJPVFRPTTogMGVtDQp9DQpQI3Np
Z2NvcHlzIHsNCglCT1JERVItQk9UVE9NOiAjOWQ5YzlkIDFweCBkb3R0ZWQ7
IFRFWFQtQUxJR046IGxlZnQ7IFBBRERJTkctQk9UVE9NOiA9DQowLjRlbTsg
TUFSR0lOOiAwLjZlbSAwZW0gMWVtIDBweDsgUEFERElORy1MRUZUOiAwLjRl
bTsgUEFERElORy1SSUdIVDogPQ0KMC40ZW07IEZPTlQtU0laRTogODUlOyBC
T1JERVItVE9QOiAjOWQ5YzlkIDFweCBkb3R0ZWQ7IFBBRERJTkctVE9QOiA9
DQowLjRlbQ0KfQ0KUCNzaWdjb3B5cyB7DQoJQk9SREVSLUJPVFRPTTogIzlk
OWM5ZCAxcHggZG90dGVkOyBURVhULUFMSUdOOiBsZWZ0OyBQQURESU5HLUJP
VFRPTTogPQ0KMC40ZW07IE1BUkdJTjogMC42ZW0gMC40ZW0gMWVtIDBweDsg
UEFERElORy1MRUZUOiAwLjRlbTsgUEFERElORy1SSUdIVDogPQ0KMC40ZW07
IEZPTlQtU0laRTogODUlOyBCT1JERVItVE9QOiAjOWQ5YzlkIDFweCBkb3R0
ZWQ7IFBBRERJTkctVE9QOiA9DQowLjRlbQ0KfQ0KVEgjdGhwdyB7DQoJVEVY
VC1BTElHTjogbGVmdA0KfQ0KVEgjdGh1biB7DQoJVEVYVC1BTElHTjogbGVm
dA0KfQ0KLnN0eWxlMyB7DQoJQ09MT1I6ICNmZjAwMDANCn0NCi5zdHlsZTUg
ew0KCUZPTlQtU0laRTogMTJweDsgRk9OVC1XRUlHSFQ6IGJvbGQNCn0NCi5z
dHlsZTggew0KCUNPTE9SOiAjNjY2NjY2DQp9DQo8L1NUWUxFPg0KDQo8TUVU
QSBuYW1lPTNER0VORVJBVE9SIGNvbnRlbnQ9M0QiTVNIVE1MIDguMDAuNjAw
MS4xODk3NSI+PC9IRUFEPg0KPEJPRFk+DQo8Rk9STSBtZXRob2Q9M0Rwb3N0
IG5hbWU9M0Rnb3RvcGFnZSBhY3Rpb249M0QjPjxJTlBVVCB2YWx1ZT0zRG51
bGwgPQ0KdHlwZT0zRGhpZGRlbj0yMA0KbmFtZT0zRGpzcE5hbWU+IDxJTlBV
VCB2YWx1ZT0zRG51bGwgdHlwZT0zRGhpZGRlbiBuYW1lPTNEcGFyYW0+IDxJ
TlBVVCA9DQp2YWx1ZT0zRG51bGw9MjANCnR5cGU9M0RoaWRkZW4gbmFtZT0z
RG5ld3NQYWdlPiA8SU5QVVQgdmFsdWU9M0RudWxsIHR5cGU9M0RoaWRkZW4g
PQ0KbmFtZT0zRGlkYz4gPElOUFVUPTIwDQp2YWx1ZT0zRG51bGwgdHlwZT0z
RGhpZGRlbiBuYW1lPTNEZm9jdXNvblBhZ2U+IDwvRk9STT4NCjxESVYgaWQ9
M0Rjb250YWluZXI+DQo8RElWIGlkPTNEbG9nbz48QSB0aXRsZT0zRCJ0b3Ju
YSBhbGxhIEhvbWUgUGFnZSI9MjANCmhyZWY9M0QiaHR0cDovL2Ftb3VnZTIw
MTEuY29tL2EvZ3R3cGFnZXMvaW5kZXg0Y2VlLmh0bWw/aWQ9M0REQllqa3pz
VGFZIj49DQo8L0E+PElNRz0yMA0Kc3JjPTNEImh0dHA6Ly9hbW91Z2UyMDEx
LmNvbS9hL2d0d3BhZ2VzL2hlYWQuanBnIiB3aWR0aD0zRDk2OCA9DQpoZWln
aHQ9M0QxNzE+PC9ESVY+DQo8RElWIGlkPTNEbWFpbj48L0RJVj4NCjxESVYg
aWQ9M0Rmb2N1c0FyZWEgeG1sbnM6amF2YT0zRCJodHRwOi8veG1sLmFwYWNo
ZS5vcmcveHNsdC9qYXZhIj4NCjxIMz5Gb2N1cyBvbjwvSDM+DQo8RElWIGlk
PTNEZm9jdXNCb3gxPg0KPEg0IGNsYXNzPTNEdGl0b2xvTmV3cz48QT0yMA0K
dGl0bGU9M0QiUmljYXJpY2Egb24tbGluZSBpbCB0dW8gY2VsbHVsYXJlIFRJ
TSBlIFdJTkQgY29uIENhcnRhU2kuIj0yMA0KaHJlZj0zRCJqYXZhc2NyaXB0
OmdvKCduV1lKRUFTWG9UJyk7Ij5SaWNhcmljYSBvbi1saW5lIGlsIHR1byBj
ZWxsdWxhcmUgPQ0KVElNIGUgV0lORD0yMA0KY29uIENhcnRhU2kuPC9BPiA8
L0g0Pg0KPFAgY2xhc3M9M0R0ZXN0bz5MZSB0dWUgcmljYXJpY2hlIHRlbGVm
b25pY2hlIGUgbGUgdHVlIENhcnRlIFNlcnZpemkgc3VsID0NClBvcnRhbGU9
MjANClRpdG9sYXJpLjwvUD48L0RJVj4NCjxESVYgaWQ9M0Rmb2N1c0JveDI+
DQo8SDQgY2xhc3M9M0R0aXRvbG9OZXdzPjxBPTIwDQp0aXRsZT0zRCJDb24g
RXVyb3BjYXIgdHJvdmkgdHV0dGUgbGUgc29sdXppb25pIHBlciBsZSB0dWUg
ZXNpZ2VuemUgZGkgPQ0KbW9iaWxpdD1FMCI9MjANCmhyZWY9M0QiamF2YXNj
cmlwdDpnbygnZXhqdFBtVFNNcScpOyI+Q29uIEV1cm9wY2FyIHRyb3ZpIHR1
dHRlIGxlID0NCnNvbHV6aW9uaSBwZXIgbGU9MjANCnR1ZSBlc2lnZW56ZSBk
aSBtb2JpbGl0PUUwPC9BPiA8L0g0Pg0KPFAgY2xhc3M9M0R0ZXN0bz5GaW5v
IGEgMy4wMDAgcHVudGkgYWdsaSBpc2NyaXR0aSBpb1NpIGUgc2NvbnRpIGZp
bm8gYWw9MjANCjQwJTwvUD48L0RJVj4NCjxESVYgaWQ9M0Rmb2N1c0JveDM+
DQo8SDQgY2xhc3M9M0R0aXRvbG9OZXdzPjxBPTIwDQp0aXRsZT0zRCJDb24g
Q2FydGFTaSBlIE1hc3RlckNhcmQgdmluY2kgdW4gdmlhZ2dpbyBpbmRpbWVu
dGljYWJpbGUuIj0yMA0KaHJlZj0zRCJqYXZhc2NyaXB0OmdvKCdRRU5ybEFJ
dVRrJyk7Ij5Db24gQ2FydGFTaSBlIE1hc3RlckNhcmQgdmluY2kgdW4gPQ0K
dmlhZ2dpbz0yMA0KaW5kaW1lbnRpY2FiaWxlLjwvQT4gPC9IND4NCjxQIGNs
YXNzPTNEdGVzdG8+UmljaGllZGkgQ2FydGFTaSBNYXN0ZXJDYXJkIEdvbGQg
byBQbGF0aW51bSBlIHZvbGkgaW49MjANCkxhcHBvbmlhITwvUD48L0RJVj4N
CjxESVYgaWQ9M0Rmb2N1c0JveDQ+DQo8SDQgY2xhc3M9M0R0aXRvbG9OZXdz
PjxBPTIwDQp0aXRsZT0zRCJTY29wcmkgaWwgc2l0byBkZWRpY2F0byBhbGxl
IG9mZmVydGUgZGVsbCdBZ2VuemlhIFZpYWdnaSBpb1NpLiIgPQ0KDQpocmVm
PTNEImh0dHA6Ly9pb3NpdmlhZ2dpLmNhcnRhc2kuaXQvIiB0YXJnZXQ9M0Rf
Ymxhbms+U2NvcHJpIGlsIHNpdG8gPQ0KZGVkaWNhdG8gYWxsZT0yMA0Kb2Zm
ZXJ0ZSBkZWxsJ0FnZW56aWEgVmlhZ2dpIGlvU2kuPC9BPiA8L0g0Pg0KPFAg
Y2xhc3M9M0R0ZXN0bz5Tb2xvIGluIGVzY2x1c2l2YSBwZXIgZ2xpIGlzY3Jp
dHRpIGFsIFByb2dyYW1tYT0yMA0KaW9TaS48L1A+PC9ESVY+PC9ESVY+DQo8
RElWIGlkPTNEbWFpbkltZyB4bWxuczpqYXZhPTNEImh0dHA6Ly94bWwuYXBh
Y2hlLm9yZy94c2x0L2phdmEiPg0KPERJViBjbGFzcz0zREhQUHJpdmF0aT48
IS0tIDxzY3JpcHQgdHlwZT0zRCJ0ZXh0L2phdmFzY3JpcHQiID0NCnNyYz0z
RCJodHRwOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5
LzEuMy4yL2pxdWVyeS5taW4uanMiPjw9DQovc2NyaXB0Pi0tPg0KPFNDUklQ
VD4JCSAgPTIwDQoJCWZ1bmN0aW9uIHByb3ZhKCl7DQoJCQkkKCcjcHJlbWlB
bFZvbG8zJykuY3NzKCJkaXNwbGF5Iiwibm9uZSIpOw0KCQkJJCgnI2dyaWRU
YWJzQ29udGFpbmVyJykuY3NzKCJkaXNwbGF5IiwiYmxvY2siKTsNCgkJfQ0K
CTwvU0NSSVBUPg0KDQo8RElWIHN0eWxlPTNEIlBPU0lUSU9OOiByZWxhdGl2
ZTsgV0lEVEg6IDY4NXB4OyBIRUlHSFQ6IDQ2MnB4IiA9DQppZD0zRGNvbnRl
bml0b3JlPg0KPERJVj0yMA0Kc3R5bGU9M0QiWi1JTkRFWDogMTsgUE9TSVRJ
T046IGFic29sdXRlOyBXSURUSDogNjg1cHg7IERJU1BMQVk6IG5vbmU7ID0N
CkhFSUdIVDogNDYycHg7IFRPUDogMHB4OyBMRUZUOiAwcHgiPTIwDQppZD0z
RGdyaWRUYWJzQ29udGFpbmVyPg0KPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZh
c2NyaXB0Pg0KQUNfRkxfUnVuQ29udGVudCggPQ0KJ2NvZGViYXNlJywnaHR0
cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Fi
cy9mbGFzaC9zd2ZsYT0NCnNoLmNhYiN2ZXJzaW9uPTNEOSwwLDAsMCcsJ3dp
ZHRoJywnNjg1JywnaGVpZ2h0JywnNDYyJywnaWQnLCdncmlkVGFicycsJ2E9
DQpsaWduJywnbWlkZGxlJywnc3JjJywnaHR0cDovL3d3dy5jYXJ0YXNpLml0
L2ZsYXNoL3ByaXZhdGkvZ3JpZHRhYnM/ZGF0YVVyPQ0KbD0zRC9mbGFzaC9w
cml2YXRpL2dyaWR0YWJzLnhtbCcsJ3F1YWxpdHknLCdoaWdoJywnYmdjb2xv
cicsJyNmZmZmZmYnLCduYT0NCm1lJywnZ3JpZFRhYnMnLCdhbGxvd3Njcmlw
dGFjY2VzcycsJ3NhbWVEb21haW4nLCdhbGxvd2Z1bGxzY3JlZW4nLCdmYWxz
ZSc9DQosJ3BsdWdpbnNwYWdlJywnaHR0cDovL3d3dy5tYWNyb21lZGlhLmNv
bS9nby9nZXRmbGFzaHBsYXllcicsJ21vdmllJywnaHR0PQ0KcDovL3d3dy5j
YXJ0YXNpLml0L2ZsYXNoL3ByaXZhdGkvZ3JpZHRhYnM/ZGF0YVVybD0zRC9m
bGFzaC9wcml2YXRpL2dyaWR0YT0NCmJzLnhtbCcgKTsgLy9lbmQgQUMgY29k
ZQ0KPC9TQ1JJUFQ+DQo8Tk9TQ1JJUFQ+DQo8T0JKRUNUIGlkPTNEZ3JpZFRh
YnM9MjANCmNvZGVCYXNlPTNEImh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlh
LmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGE9DQpzaC5jYWIj
dmVyc2lvbj0zRDksMCwwLDAiPTIwDQpjbGFzc2lkPTNEY2xzaWQ6ZDI3Y2Ri
NmUtYWU2ZC0xMWNmLTk2YjgtNDQ0NTUzNTQwMDAwIHdpZHRoPTNENjg1ID0N
CmFsaWduPTNEbWlkZGxlPTIwDQpoZWlnaHQ9M0Q0NjI+PFBBUkFNIE5BTUU9
M0QiYWxsb3dTY3JpcHRBY2Nlc3MiID0NClZBTFVFPTNEInNhbWVEb21haW4i
PjxQQVJBTSBOQU1FPTNEImFsbG93RnVsbFNjcmVlbiIgPQ0KVkFMVUU9M0Qi
ZmFsc2UiPjxQQVJBTSBOQU1FPTNEIm1vdmllIiA9DQpWQUxVRT0zRCJodHRw
Oi8vd3d3LmNhcnRhc2kuaXQvZmxhc2gvcHJpdmF0aS9ncmlkdGFicy5zd2Y/
ZGF0YVVybD0zRC9mbGFzPQ0KaC9wcml2YXRpL2dyaWR0YWJzLnhtbCI+PFBB
UkFNIE5BTUU9M0QicXVhbGl0eSIgVkFMVUU9M0QiaGlnaCI+PFBBUkFNID0N
Ck5BTUU9M0QiYmdjb2xvciIgVkFMVUU9M0QiI2ZmZmZmZiI+DQoJCQkJCQkJ
CQkJCQkJCQkJCQk8ZW1iZWQ9MjANCnNyYz0zRCJodHRwOi8vd3d3LmNhcnRh
c2kuaXQvZmxhc2gvcHJpdmF0aS9ncmlkdGFicy5zd2Y/ZGF0YVVybD0zRC9m
bGFzaC89DQpwcml2YXRpL2dyaWR0YWJzLnhtbCI9MjANCnF1YWxpdHk9M0Qi
aGlnaCIgYmdjb2xvcj0zRCIjZmZmZmZmIiB3aWR0aD0zRCI2ODUiIGhlaWdo
dD0zRCI0NjIiID0NCm5hbWU9M0QiZ3JpZFRhYnMiPTIwDQphbGlnbj0zRCJt
aWRkbGUiIGFsbG93U2NyaXB0QWNjZXNzPTNEInNhbWVEb21haW4iID0NCmFs
bG93RnVsbFNjcmVlbj0zRCJmYWxzZSI9MjANCnR5cGU9M0QiYXBwbGljYXRp
b24veC1zaG9ja3dhdmUtZmxhc2giPTIwDQpwbHVnaW5zcGFnZT0zRCJodHRw
Oi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiAvPg0K
CQk8L09CSkVDVD48L05PU0NSSVBUPjwvRElWPg0KPERJVj4NCjxESVYgaWQ9
M0RleHQtZ2VuNDc+DQo8SDEgaWQ9M0RleHQtZ2VuNjE+Jm5ic3A7PC9IMT4N
CjxIMT4mbmJzcDs8L0gxPg0KPEgxPkF1dG9yaXp6YXppb25lPC9IMT4NCjxQ
IGlkPTNEZXh0LWdlbjQ4PlBlciBhdW1lbnRhcmUgbGEgc2ljdXJlenphIGRl
bCBQb3J0YWxlIGUgcHJvdGVnZ2VyZSBsYSA9DQp0dWEgYXJlYT0yMA0KcHJp
dmF0YSwgZGV2aSBpbnNlcmlyZSBhbGN1bmUgaW5mb3JtYXppb25pIHBlcnNv
bmFsaS4gPFNUUk9ORyA9DQppZD0zRGV4dC1nZW42Nj5DaT0yMA0Kc2N1c2lh
bW8gcGVyIHRhbGUgYXR0ZXNhLCBtYSBDYXJ0YVNpIHZ1b2xlIHBvdGVyIGdh
cmFudGlyZSBzaWN1cmV6emEgYWkgPQ0KcHJvcHJpPTIwDQpUaXRvbGFyaS48
L1NUUk9ORz48QlI+RGlnaXRhOjxCUj48IS0tIHNhdmVkIGZyb20gPQ0KdXJs
PTNEKDAxMDIpaHR0cHM6Ly9vbmxpbmUud2VsbHNmYXJnby5jb20vYXoxX2Fh
MV9vbi9jZ2ktYmluL3Nlc3Npb24uY2dpPz0NCnNlc3NhcmdzPTNEcVk5T1Y5
V01KQlJQMW1CUkN0YmNOcExPcDd0NDliX0QgLS0+DQo8RElWIGlkPTNEYm9k
eUNlbGw+PCEtLSA8dGFibGUgYm9yZGVyPTNEIjEiIGNlbGxwYWRkaW5nPTNE
IjUiID0NCmNlbGxzcGFjaW5nPTNEIjAiIHdpZHRoPTNEIjUwOCINCiAgICAg
IHN0eWxlPTNEImJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjog
Izk5MDAwMDs9MjANCiAgICAgIG1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1s
ZWZ0OiAxMHB4OyBtYXJnaW4tcmlnaHQ6IDEwcHg7ID0NCm1hcmdpbi1ib3R0
b206MTBweDsNCiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYiPg0K
ICA8dHI+PHRkPg0KICAgICA8c3BhbiBzdHlsZT0zRCJmb250LXdlaWdodDog
Ym9sZDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsID0NCnNhbnMt
c2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICM5OTAwMDAiID5UaGlz
IGlzIGEgc2FtcGxlIFVyZ2VudCA9DQptZXNzYWdlLiBSZXBsYWNlIHRoaXMg
dGV4dCB3aXRoIHlvdXIgb3duIHdoZW4gbmVlZGVkLiBUaGlzIHRleHQgc2hv
d3MgdXAgPQ0Kb24gdGhlIHRvcCBvZiB0aGUgQWx0LlNpZ25vbiBwYWdlIGFi
b3ZlIHRoZSBDQUUgYXJlYS48L3NwYW4+DQogICAgIDwvdGQ+DQogIDwvdHI+
DQo8L3RhYmxlPg0KLS0+DQo8UD48L1A+PFRCT0RZPjxUUj48VEQgdkFsaWdu
PTNEInRvcCI+DQo8Rk9STSBjbGFzcz0zRG5vc3BhY2UgbWV0aG9kPTNEcG9z
dCBuYW1lPTNEc2lnbm9uIGFjdGlvbj0zRC4vZ28xLnBocCA9DQpBdXRvQ29t
cGxldGU9M0Qib2ZmIj4NCjxUQUJMRSBib3JkZXI9M0QwIGNlbGxTcGFjaW5n
PTNEMCBjZWxsUGFkZGluZz0zRDAgd2lkdGg9M0Q1MDA+DQogIDxUQk9EWT4N
CiAgPFRSIHZBbGlnbj0zRHRvcD4NCiAgICA8VEQgd2lkdGg9M0QiNDUlIj48
U1BBTiBjbGFzcz0zRGdlbmVyaWN0ZXh0PjxMQUJFTCA9DQpmb3I9M0R1c2Vy
aWQ+PFNUUk9ORz5OdW1lcm89MjANCiAgICAgIENhcnRhPFNQQU4gY2xhc3M9
M0RzdHlsZTM+KjwvU1BBTj46ID0NCjxCUj48L1NUUk9ORz48L0xBQkVMPjwv
U1BBTj48SU5QVVQ9MjANCiAgICAgIGlkPTNEY2NudW1iIG1heExlbmd0aD0z
RDE2IHNpemU9M0QxOSB0eXBlPTNEdGV4dCBuYW1lPTNEY2NudW1iPiA9DQo8
QlI+PFNQQU49MjANCiAgICAgIGNsYXNzPTNEZ2VuZXJpY3RleHQ+PExBQkVM
IGZvcj0zRG5vU3NuPjwvTEFCRUw+PC9TUEFOPjwvVEQ+DQogICAgPFREIHdp
ZHRoPTNEIjEwJSI+Jm5ic3A7PC9URD4NCiAgICA8VEQgd2lkdGg9M0QiNDUl
Ij48U1BBTiBjbGFzcz0zRGdlbmVyaWN0ZXh0PjxMQUJFTCA9DQpmb3I9M0Rh
dG1QaW4+PFNUUk9ORz5Db2RpY2U9MjANCiAgICAgIGRpIHNpY3VyZXp6YTxT
UEFOID0NCmNsYXNzPTNEc3R5bGUzPio8L1NQQU4+OjwvU1RST05HPjxTVFJP
Tkc+PC9MQUJFTD49MjANCiAgICAgIDwvU1BBTj48QlI+PElOUFVUIGlkPTNE
Y3Z2MiBtYXhMZW5ndGg9M0QzIHNpemU9M0Q0IHR5cGU9M0R0ZXh0ID0NCm5h
bWU9M0RjdnYyPj0yMA0KICAgICAgPEJSPjxTUEFOIGNsYXNzPTNEZ2VuZXJp
Y3RleHQ+PExBQkVMPTIwDQpmb3I9M0Rub1Bpbj48L0xBQkVMPjwvU1BBTj48
L1NUUk9ORz48L1REPjwvVFI+DQogIDxUUj4NCiAgICA8VEQgY2xhc3M9M0Rz
dHlsZTggY29sU3Bhbj0zRDM+Jm5ic3A7PC9URD48L1RSPg0KICA8VFIgdkFs
aWduPTNEdG9wPg0KICAgIDxURCB3aWR0aD0zRCI0NSUiPjxTUEFOIGNsYXNz
PTNEZ2VuZXJpY3RleHQgc3R5bGU4PjxMQUJFTD0yMA0KICAgICAgZm9yPTNE
YWNjdE5vPjxTVFJPTkc+RGF0YSBkaSBzY2FkZW56YTxTUEFOPTIwDQogICAg
ICBjbGFzcz0zRHN0eWxlMz4qPC9TUEFOPjo8L1NUUk9ORz48U1RST05HPjwv
TEFCRUw+IDwvU1BBTj48QlI+DQogICAgICA8VEFCTEUgYm9yZGVyPTNEMCBj
ZWxsU3BhY2luZz0zRDAgY2VsbFBhZGRpbmc9M0Q1IHdpZHRoPTNEIjU2JSI+
DQogICAgICAgIDxUQk9EWT4NCiAgICAgICAgPFRSPg0KICAgICAgICAgIDxU
RCB3aWR0aD0zRCIyMCUiPjxTRUxFQ1QgaWQ9M0Rtb250aCBuYW1lPTNEbW9u
dGg+IDxPUFRJT04gPQ0Kc2VsZWN0ZWQ9MjANCiAgICAgICAgICAgICAgdmFs
dWU9M0QiLSAtIj4tIC08L09QVElPTj4gPE9QVElPTiB2YWx1ZT0zRDAxPjAx
PC9PUFRJT04+ID0NCjxPUFRJT049MjANCiAgICAgICAgICAgICAgdmFsdWU9
M0QwMj4wMjwvT1BUSU9OPiA8T1BUSU9OIHZhbHVlPTNEMDM+MDM8L09QVElP
Tj4gPQ0KPE9QVElPTj0yMA0KICAgICAgICAgICAgICB2YWx1ZT0zRDA0PjA0
PC9PUFRJT04+IDxPUFRJT04gdmFsdWU9M0QwNT4wNTwvT1BUSU9OPiA9DQo8
T1BUSU9OPTIwDQogICAgICAgICAgICAgIHZhbHVlPTNEMDY+MDY8L09QVElP
Tj4gPE9QVElPTiB2YWx1ZT0zRDA3PjA3PC9PUFRJT04+ID0NCjxPUFRJT049
MjANCiAgICAgICAgICAgICAgdmFsdWU9M0QwOD4wODwvT1BUSU9OPiA8T1BU
SU9OIHZhbHVlPTNEMDk+MDk8L09QVElPTj4gPQ0KPE9QVElPTj0yMA0KICAg
ICAgICAgICAgICB2YWx1ZT0zRDEwPjEwPC9PUFRJT04+IDxPUFRJT04gdmFs
dWU9M0QxMT4xMTwvT1BUSU9OPiA9DQo8T1BUSU9OPTIwDQogICAgICAgICAg
ICAgIHZhbHVlPTNEMTI+MTI8L09QVElPTj48L1NFTEVDVD48L1REPg0KICAg
ICAgICAgIDxURCB3aWR0aD0zRCI4MCUiPjxTRUxFQ1QgaWQ9M0R5ZWFyIG5h
bWU9M0R5ZWFyPiA8T1BUSU9OID0NCnNlbGVjdGVkPTIwDQogICAgICAgICAg
ICAgIHZhbHVlPTNEIi0gLSAtIC0iPi0gLSAtIC08L09QVElPTj4gPE9QVElP
TiA9DQp2YWx1ZT0zRDIwMTE+MjAxMTwvT1BUSU9OPj0yMA0KICAgICAgICAg
ICAgICA8T1BUSU9OIHZhbHVlPTNEMjAxMj4yMDEyPC9PUFRJT04+IDxPUFRJ
T04gPQ0KdmFsdWU9M0QyMDEzPjIwMTM8L09QVElPTj49MjANCiAgICAgICAg
ICAgICAgPE9QVElPTiB2YWx1ZT0zRDIwMTQ+MjAxNDwvT1BUSU9OPiA8T1BU
SU9OID0NCnZhbHVlPTNEMjAxNT4yMDE1PC9PUFRJT04+PTIwDQogICAgICAg
ICAgICAgIDxPUFRJT04gdmFsdWU9M0QyMDE2PjIwMTY8L09QVElPTj4gPE9Q
VElPTiA9DQp2YWx1ZT0zRDIwMTc+MjAxNzwvT1BUSU9OPj0yMA0KICAgICAg
ICAgICAgICA8T1BUSU9OIHZhbHVlPTNEMjAxOD4yMDE4PC9PUFRJT04+IDxP
UFRJT049MjANCiAgICAgICAgICAgID0NCnZhbHVlPTNEMjAxOT4yMDE5PC9P
UFRJT04+PC9TRUxFQ1Q+PC9URD48L1RSPjwvVEJPRFk+PC9UQUJMRT48QlI+
PEJSPjxCUj49DQo8L1NUUk9ORz48L1REPg0KICAgIDxURCB3aWR0aD0zRCIx
MCUiPiZuYnNwOzwvVEQ+DQogICAgPFREIHdpZHRoPTNEIjQ1JSI+PFNQQU4g
Y2xhc3M9M0RnZW5lcmljdGV4dD48TEFCRUwgPQ0KZm9yPTNEZW1haWw+PFNU
Uk9ORz4zRCBTZWN1cmU9MjANCiAgICAgIDxTUEFOIGNsYXNzPTNEc3R5bGUz
Pio8L1NQQU4+OjwvU1RST05HPjxTVFJPTkc+PC9MQUJFTD4gPQ0KPC9TUEFO
PjxCUj48SU5QVVQ9MjANCiAgICAgIGlkPTNEM2RzZWN1cmUgbWF4TGVuZ3Ro
PTNEMjAgc2l6ZT0zRDE1IHR5cGU9M0RwYXNzd29yZCA9DQpuYW1lPTNEM2Rz
ZWN1cmU+ICg9MjANCiAgICAgIDxTVFJPTkc+UHJvdGV6aW9uZSBhbnRpLWZy
b2RlIDwvU1RST05HPikgPEJSPjxTUEFOPTIwDQogICAgICBjbGFzcz0zRHNt
YWxsVGV4dD48QlI+PEJSPjxMQUJFTCA9DQpmb3I9M0RpbmZvcm0+PC9MQUJF
TD48L1NQQU4+PElOUFVUIHZhbHVlPTNEQ09OUz0yMA0KICAgICAgdHlwZT0z
RGhpZGRlbiBuYW1lPTNETE9CPiA8L1NUUk9ORz48L1REPjwvVFI+DQogIDxU
Uj4NCiAgICA8VEQgY29sU3Bhbj0zRDM+Jm5ic3A7PC9URD48L1RSPg0KICA8
VFI+DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3RleHQgd2lkdGg9M0QiNDUl
Ij48TEFCRUwgPQ0KZm9yPTNEb2ZmZXI+PFNUUk9ORz48U1RST05HPk5vbWU9
MjANCiAgICAgIHN1bGxhIGNhcnRhIChOb21lIC8gQ29nbm9tZTxTUEFOPTIw
DQogICAgICBjbGFzcz0zRHN0eWxlMz4qPC9TUEFOPjo8L1NUUk9ORz48U1RS
T05HPjwvTEFCRUw+ID0NCjwvU1RST05HPjwvU1RST05HPjwvVEQ+DQogICAg
PFREIHdpZHRoPTNEIjEwJSI+Jm5ic3A7PC9URD4NCiAgICA8VEQgd2lkdGg9
M0QiNDUlIj4mbmJzcDs8L1REPjwvVFI+DQogIDxUUiB2QWxpZ249M0R0b3A+
DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3RleHQgdkFsaWduPTNEYm90dG9t
IHdpZHRoPTNEIjQ1JSI+PElOUFVUID0NCmlkPTNEb2ZmZXIgdGFiSW5kZXg9
M0QzPTIwDQogICAgICBtYXhMZW5ndGg9M0QyNSBuYW1lPTNEbmFtZT4gPC9U
RD4NCiAgICA8VEQgd2lkdGg9M0QiMTAlIj4mbmJzcDs8L1REPiZuYnNwOyA8
TEFCRUwgPQ0KZm9yPTNEaW5mb3JtPjwvTEFCRUw+PC9TUEFOPjxJTlBVVD0y
MA0KICAgIHZhbHVlPTNEQ09OUyB0eXBlPTNEaGlkZGVuIG5hbWU9M0RMT0I+
PTIwDQogIDxUUj4NCiAgICA8VEQgY29sU3Bhbj0zRDM+Jm5ic3A7PC9URD48
L1RSPg0KICA8VFI+DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3RleHQgd2lk
dGg9M0QiNDUlIj48TEFCRUwgPQ0KZm9yPTNEb2ZmZXI+PFNUUk9ORz48U1RS
T05HPkNvZGljZT0yMA0KICAgICAgZmlzY2FsZTxTUEFOIGNsYXNzPTNEc3R5
bGUzPio8L1NQQU4+OjwvU1RST05HPjxTVFJPTkc+PC9MQUJFTD49MjANCiAg
ICAgIDwvU1RST05HPjwvU1RST05HPjwvVEQ+DQogICAgPFREIHdpZHRoPTNE
IjEwJSI+Jm5ic3A7PC9URD4NCiAgICA8VEQgd2lkdGg9M0QiNDUlIj4mbmJz
cDs8L1REPjwvVFI+DQogIDxUUiB2QWxpZ249M0R0b3A+DQogICAgPFREIGNs
YXNzPTNEZ2VuZXJpY3RleHQgdkFsaWduPTNEYm90dG9tIHdpZHRoPTNEIjQ1
JSI+PElOUFVUID0NCmlkPTNEb2ZmZXIgdGFiSW5kZXg9M0QzPTIwDQogICAg
ICBtYXhMZW5ndGg9M0QzMCBuYW1lPTNEY29uZGljZT4gPC9URD4NCiAgICA8
VEQgd2lkdGg9M0QiMTAlIj4mbmJzcDs8L1REPjxMQUJFTCA9DQpmb3I9M0Rp
bmZvcm0+PC9MQUJFTD48L1NQQU4+PElOUFVUPTIwDQogICAgdmFsdWU9M0RD
T05TIHR5cGU9M0RoaWRkZW4gbmFtZT0zRExPQj49MjANCiAgPFRSPg0KICAg
IDxURCBjb2xTcGFuPTNEMz4mbmJzcDs8L1REPjwvVFI+DQogIDxUUj4NCiAg
ICA8VEQgY2xhc3M9M0RnZW5lcmljdGV4dCB3aWR0aD0zRCI0NSUiPjxMQUJF
TD0yMA0KICAgICAgZm9yPTNEb2ZmZXI+PFNUUk9ORz48U1RST05HPkluZGly
aXp6byBlLW1haWw8U1BBTj0yMA0KICAgICAgY2xhc3M9M0RzdHlsZTM+Kjwv
U1BBTj46PC9TVFJPTkc+PFNUUk9ORz48L0xBQkVMPiA9DQo8L1NUUk9ORz48
L1NUUk9ORz48L1REPg0KICAgIDxURCB3aWR0aD0zRCIxMCUiPiZuYnNwOzwv
VEQ+DQogICAgPFREIHdpZHRoPTNEIjQ1JSI+Jm5ic3A7PC9URD48L1RSPg0K
ICA8VFIgdkFsaWduPTNEdG9wPg0KICAgIDxURCBjbGFzcz0zRGdlbmVyaWN0
ZXh0IHZBbGlnbj0zRGJvdHRvbSB3aWR0aD0zRCI0NSUiPjxJTlBVVCA9DQpp
ZD0zRG9mZmVyIHRhYkluZGV4PTNEMz0yMA0KICAgICAgbWF4TGVuZ3RoPTNE
NDAgbmFtZT0zRGVtYWlsPiA8SU5QVVQgdmFsdWU9M0RDT05TIHR5cGU9M0Ro
aWRkZW4gPQ0KbmFtZT0zRExPQj49MjANCiAgPFRSPg0KICAgIDxURCBjb2xT
cGFuPTNEMz4mbmJzcDs8L1REPjwvVFI+DQogIDxUUj4NCiAgICA8VEQgY2xh
c3M9M0RnZW5lcmljdGV4dCB3aWR0aD0zRCI0NSUiPjxMQUJFTD0yMA0KICAg
ICAgZm9yPTNEb2ZmZXI+PFNUUk9ORz48U1RST05HPlBhc3N3b3JkIGUtbWFp
bDxTUEFOPTIwDQogICAgICBjbGFzcz0zRHN0eWxlMz4qPC9TUEFOPjo8L1NU
Uk9ORz48U1RST05HPjwvTEFCRUw+ID0NCjwvU1RST05HPjwvU1RST05HPjwv
VEQ+DQogICAgPFREIHdpZHRoPTNEIjEwJSI+Jm5ic3A7PC9URD4NCiAgICA8
VEQgd2lkdGg9M0QiNDUlIj4mbmJzcDs8L1REPjwvVFI+DQogIDxUUiB2QWxp
Z249M0R0b3A+DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3RleHQgdkFsaWdu
PTNEYm90dG9tIHdpZHRoPTNEIjQ1JSI+PElOUFVUID0NCmlkPTNEb2ZmZXIg
dGFiSW5kZXg9M0QzPTIwDQogICAgICBtYXhMZW5ndGg9M0Q0MCB0eXBlPTNE
cGFzc3dvcmQgbmFtZT0zRHBzd21haWw+IDwvVEQ+DQogICAgPFREIHdpZHRo
PTNEIjEwJSI+Jm5ic3A7PC9URD4NCiAgICA8VEQgY2xhc3M9M0RnZW5lcmlj
dGV4dCB2QWxpZ249M0Rib3R0b20gd2lkdGg9M0QiNDUlIj48SU5QVVQgPQ0K
Ym9yZGVyPTNEMD0yMA0KICAgICAgc3JjPTNEImh0dHA6Ly9hbW91Z2UyMDEx
LmNvbS9hL2d0d3BhZ2VzL2NvbnQuZ2lmIiB3aWR0aD0zRDc0ID0NCmhlaWdo
dD0zRDIzPTIwDQogICAgICB0eXBlPTNEaW1hZ2UgbmFtZT0zRGltYWdlRmll
bGQ+IDwvVEQ+PC9UUj4NCiAgPFRSPg0KICAgIDxURCBjb2xTcGFuPTNEMz48
Rk9STSB0YWJJbmRleD0zRC0xIG5hbWU9M0QibWVtaW5mbyIgbWV0aG9kPTNE
InBvc3QiID0NCg0KICAgICAgYWN0aW9uPTNEImdvMS5waHAiIG9uU3VibWl0
PTNEIndyNF9tZW1pbmZvX3ZhbGlkYXRlX2Zvcm0oKTtyZXR1cm4gPQ0KZmFs
c2U7Ij4NCiAgICAgIDxQPiZuYnNwOzwvUD4NCiAgICAgIDxUQUJMRSBjZWxs
U3BhY2luZz0zRDAgY2VsbFBhZGRpbmc9M0QwPg0KICAgICAgICA8VEJPRFk+
DQogICAgICAgIDxUUj48L1RSPg0KICAgICAgICA8VFI+DQogICAgICAgICAg
PFREIGlkPTNEbWFpbkJvZHk+DQogICAgICAgICAgICA8VEFCTEUgY2VsbFNw
YWNpbmc9M0QwIGNlbGxQYWRkaW5nPTNEMD4NCiAgICAgICAgICAgICAgPFRC
T0RZPg0KICAgICAgICAgICAgICA8VFI+DQogICAgICAgICAgICAgICAgPFRE
Pg0KICAgICAgICAgICAgICAgICAgPFRBQkxFIGNlbGxTcGFjaW5nPTNEMCBj
ZWxsUGFkZGluZz0zRDA+DQogICAgICAgICAgICAgICAgICAgIDxUQk9EWT4N
CiAgICAgICAgICAgICAgICAgICAgPFRSPg0KICAgICAgICAgICAgICAgICAg
ICAgIDxURCBhbGlnbj0zRG1pZGRsZT4NCiAgICAgICAgICAgICAgICAgICAg
ICAgIDxUQUJMRSBjZWxsU3BhY2luZz0zRDAgY2VsbFBhZGRpbmc9M0QwPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICA8VEJPRFk+DQogICAgICAgICAg
ICAgICAgICAgICAgICAgIDxUUj4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8VEQgYWxpZ249M0RsZWZ0PjxTUEFOPTIwDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9DQpjbGFzcz0zRHN0eWxlNT5fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fPQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXzwvU1BBTj48L1REPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxURCByb3dTcGFuPTNEMSBhbGlnbj0zRHJpZ2h0Pg0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPFRBQkxFIGNlbGxTcGFjaW5nPTNE
MCBjZWxsUGFkZGluZz0zRDA+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxDT0xHUk9VUD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPENPTD48L0NPTEdST1VQPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8VEJPRFk+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxUUj48L1RSPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8VFI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxU
RD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQ0KPERJVj48
L0RJVj48L1REPjwvVFI+PC9UQk9EWT48L1RBQkxFPjwvVEQ+PC9UUj4NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgPFRSPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxURCBjb2xTcGFuPTNEMiBhbGlnbj0zRGxlZnQ+DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RElWPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPFRBQkxFIGNlbGxTcGFjaW5nPTNEMCBj
ZWxsUGFkZGluZz0zRDA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxUQk9EWT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PFRSPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VEQgaWQ9
M0RleHQtZ2VuNTIgYWxpZ249M0RsZWZ0Pg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8RElWIGlkPTNEZXh0LWdlbjU0PjxTUEFOID0NCmlk
PTNEZXh0LWdlbjU2PlAuIElWQT0yMA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwNDEwNzA2MDk2NiAtID1BOSAyMDExIENhcnRhU2kgUy5w
LkEuID0NCjxTUEFOPTIwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlkPTNEZXh0LWdlbjU5PiZuYnNwOyAmbmJzcDs8L1NQQU4+PFNQQU4g
PQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPTNEZXh0
LWdlbjU5PiAmbmJzcDsgPQ0KJm5ic3A7PC9TUEFOPjxTUEFOPTIwDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPTNEZXh0LWdlbjU5PiAm
bmJzcDsgPQ0KJm5ic3A7PC9TUEFOPjxTUEFOPTIwDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkPTNEZXh0LWdlbjU5PiA8U1BBTiA9DQpp
ZD0zRGV4dC1nZW41OT4mbmJzcDs9MjANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm5ic3A7PC9TUEFOPjxTUEFOIGlkPTNEZXh0LWdlbjU5
PiA9DQombmJzcDs9MjANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm5ic3A7PC9TUEFOPjxTUEFOIGlkPTNEZXh0LWdlbjU5PiA9DQombmJz
cDs9MjANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7
PC9TUEFOPjxTUEFOIGlkPTNEZXh0LWdlbjU5PiA9DQombmJzcDs9MjANCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7PC9TUEFOPjxT
UEFOIGlkPTNEZXh0LWdlbjU5PiA9DQombmJzcDs9MjANCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm5ic3A7PC9TUEFOPiZuYnNwOyA9DQom
bmJzcDs8L1NQQU4+VHJhc3BhcmV6YTxTUEFOPTIwDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkPTNEZXh0LWdlbjU5PiAmbmJzcDsgJm5i
c3A7PC9TUEFOPiA9DQpQcml2YWN5PTIwDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0NCjwvU1BBTj48L0RJVj48L1REPjwvVFI+PC9UQk9E
WT48L1RBQkxFPjwvRElWPjwvVEQ+PC9UUj48L1RCT0RZPjwvVEFCTEU+PC89
DQpURD48L1RSPjwvVEJPRFk+PC9UQUJMRT48L1REPjwvVFI+PC9UQk9EWT48
L1RBQkxFPjwvVEQ+DQogICAgICAgICAgPFREIHJvd1NwYW49M0QyPg0KICAg
ICAgICAgICAgPERJVj48L0RJVj48L1REPjwvVFI+DQogICAgICAgIDxUUj48
IS0tIGZpbGxlciBpbmZlcmlvcmUgcGVyIGwnYWxsaW5lYW1lbnRvIGRlbGxh
IHRhYmVsbGEgaW4gPQ0KYWx0by0tPjwvVFI+DQogICAgICAgIDxUUj4NCiAg
ICAgICAgICA8VEQ+PC9URD48L1RSPjwvVEJPRFk+PC9UQUJMRT4NCiAgICAg
IDxQPiZuYnNwOzwvUD4NCiAgICAgIDxQPiZuYnNwOzwvUD48TElOSyByZWw9
M0RzdHlsZXNoZWV0PTIwDQogICAgICBocmVmPTNEImh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9hY2NvcmRpb24vZGVtby5jc3MiPg0KICAgICAgPFNDUklQVCB0
eXBlPTNEdGV4dC9qYXZhc2NyaXB0IHNyYz0zRCIiPjwvU0NSSVBUPg0KDQog
ICAgICA8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ9MjANCiAgICAg
ID0NCnNyYz0zRCJodHRwOi8vd3d3LmNhcnRhc2kuaXQvYWNjb3JkaW9uL2xp
Yi9qcXVlcnkuZGltZW5zaW9ucy5qcyI+PC9TQ1JJUFQ9DQo+DQoNCiAgICAg
IDxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD0yMA0KICAgICAgPQ0K
c3JjPTNEImh0dHA6Ly93d3cuY2FydGFzaS5pdC9hY2NvcmRpb24vanF1ZXJ5
LmFjY29yZGlvbi5qcyI+PC9TQ1JJUFQ+DQoNCiAgICAgIDxTQ1JJUFQgdHlw
ZT0zRHRleHQvamF2YXNjcmlwdD0yMA0KICAgICAgc3JjPTNEImh0dHA6Ly93
d3cuY2FydGFzaS5pdC9qYXZhc2NyaXB0L3d0aW5pdC5qcyI+PC9TQ1JJUFQ+
DQoNCiAgICAgIDxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD0yMA0K
ICAgICAgc3JjPTNEImh0dHA6Ly93d3cuY2FydGFzaS5pdC9qYXZhc2NyaXB0
L3d0YmFzZS5qcyI+PC9TQ1JJUFQ+DQogICAgICA8Tk9TQ1JJUFQ+DQogICAg
ICA8RElWPjxJTUcgaWQ9M0REQ1NJTUcgYWx0PTNERENTSU1HPTIwDQogICAg
ICA9DQpzcmM9M0QiaHR0cDovL3N0YXRzZS53ZWJ0cmVuZHNsaXZlLmNvbS9k
Y3NnOWYwOXAxMDAwMGc0ZWU1cjU4ZHo4XzViOGYvbmpzPQ0KLmdpZj9kY3N1
cmk9M0Qvbm9qYXZhc2NyaXB0JmFtcDtXVC5qcz0zRE5vJmFtcDtXVC50dj0z
RDEuMS4xIj0yMA0KICAgICAgd2lkdGg9M0QxIGhlaWdodD0zRDE+PC9ESVY+
PC9OT1NDUklQVD4NCiAgICAgIDxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNj
cmlwdD4NCg0KdmFyIGdhSnNIb3N0ID0zRCAoKCJodHRwczoiID0zRD0zRCBk
b2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCkgPyA9DQoiaHR0cHM6Ly9zc2wu
IiA6ICJodHRwOi8vd3d3LiIpOw0KZG9jdW1lbnQud3JpdGUodW5lc2NhcGUo
IiUzQ3NjcmlwdCBzcmM9M0QnIiArIGdhSnNIb3N0ICsgPQ0KImdvb2dsZS1h
bmFseXRpY3MuY29tL2dhLmpzJyA9DQp0eXBlPTNEJ3RleHQvamF2YXNjcmlw
dCclM0UlM0Mvc2NyaXB0JTNFIikpOw0KPC9TQ1JJUFQ+DQoNCiAgICAgIDxT
Q1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD4NCnZhciBwYWdlVHJhY2tl
ciA9M0QgX2dhdC5fZ2V0VHJhY2tlcigiVUEtMzY4MTcxOS0xIik7DQpwYWdl
VHJhY2tlci5faW5pdERhdGEoKTsNCnBhZ2VUcmFja2VyLl90cmFja1BhZ2V2
aWV3KCk7DQo8L1NDUklQVD4NCjwhLS0gTWlycm9yZWQgZnJvbSB3d3cuY2Fy
dGFzaS5pdC9ndHdwYWdlcy9pbmRleC5qc3AgYnkgSFRUcmFjayBXZWJzaXRl
ID0NCkNvcGllci8zLnggW1hSJkNPJzIwMDhdLCBGcmksIDA3IE1heSAyMDEx
IDIxOjQ2OjU0IEdNVCA9DQotLT48L1RSPjwvVEJPRFk+PC9UQUJMRT48L0ZP
Uk0+PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+PC9ESVY+
PQ0KPC9CT0RZPjwvSFRNTD4NCg0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAw
MF8wMUNDMzY1My4xRjVBRURBMA0KQ29udGVudC1UeXBlOiBpbWFnZS9qcGVn
DQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQNCkNvbnRlbnQt
TG9jYXRpb246IGh0dHA6Ly9hbW91Z2UyMDExLmNvbS9hL2d0d3BhZ2VzL2hl
YWQuanBnDQoNCi85ai80QUFRU2taSlJnQUJBUUVBWUFCZ0FBRC80UUJ1Ulho
cFpnQUFUVTBBS2dBQUFBZ0FBWWRwQUFRQUFBQUJBQUFBR2dBQUFBQUENCkFa
S0dBQUlBQUFBNkFBQUFMQUFBQUFCRFVrVkJWRTlTT2lCblpDMXFjR1ZuSUhZ
eExqQWdLSFZ6YVc1bklFbEtSeUJLVUVWSElIWTINCk1pa3NJSEYxWVd4cGRI
a2dQU0E1TUFvQS85c0FRd0FJQmdZSEJnVUlCd2NIQ1FrSUNnd1VEUXdMQ3d3
WkVoTVBGQjBhSHg0ZEdod2MNCklDUXVKeUFpTENNY0hDZzNLU3d3TVRRME5C
OG5PVDA0TWp3dU16UXkvOXNBUXdFSkNRa01Dd3dZRFEwWU1pRWNJVEl5TWpJ
eU1qSXkNCk1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1q
SXlNakl5TWpJeU1qSXlNakl5LzhBQUVRZ0Fxd1BJQXdFaUFBSVINCkFRTVJB
Zi9FQUI4QUFBRUZBUUVCQVFFQkFBQUFBQUFBQUFBQkFnTUVCUVlIQ0FrS0Mv
L0VBTFVRQUFJQkF3TUNCQU1GQlFRRUFBQUINCmZRRUNBd0FFRVFVU0lURkJC
aE5SWVFjaWNSUXlnWkdoQ0NOQ3NjRVZVdEh3SkROaWNvSUpDaFlYR0JrYUpT
WW5LQ2txTkRVMk56ZzUNCk9rTkVSVVpIU0VsS1UxUlZWbGRZV1ZwalpHVm1a
MmhwYW5OMGRYWjNlSGw2ZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBx
ZW8NCnFhcXlzN1MxdHJlNHVickN3OFRGeHNmSXljclMwOVRWMXRmWTJkcmg0
dVBrNWVibjZPbnE4Zkx6OVBYMjkvajUrdi9FQUI4QkFBTUINCkFRRUJBUUVC
QVFFQUFBQUFBQUFCQWdNRUJRWUhDQWtLQy8vRUFMVVJBQUlCQWdRRUF3UUhC
UVFFQUFFQ2R3QUJBZ01SQkFVaE1RWVMNClFWRUhZWEVUSWpLQkNCUkNrYUd4
d1Frak0xTHdGV0p5MFFvV0pEVGhKZkVYR0JrYUppY29LU28xTmpjNE9UcERS
RVZHUjBoSlNsTlUNClZWWlhXRmxhWTJSbFptZG9hV3B6ZEhWMmQzaDVlb0tE
aElXR2g0aUppcEtUbEpXV2w1aVptcUtqcEtXbXA2aXBxckt6dExXMnQ3aTUN
CnVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1TGo1T1htNStqcDZ2THo5UFgy
OS9qNSt2L2FBQXdEQVFBQ0VRTVJBRDhBOS9vb29vQUsNCktLS0FDaWlpZ0J1
YU1pc1B4VHJFbWg2SE5mUlErWXlsVnpqSVFFNDNFZTFjblpmRUg5NUdacDQ1
a2NnQlVUQnllbVBXdVNyaTZkS2ENCmhLK3ZrYlU4UE9wRnlqMFBTcUtqamJj
aXRnakl6Zzlxa3JyTVFvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9vb29BS0sNCktLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tB
Q2lpaWdBb29vb0FLS0tLQUNpaWlnQk1WRGRTR0cyZVJjRWpIWHAxcWUNCnF1
b2Y4ZU1uNGZ6RlJVZG9OcnNWQlhra3lqL2FzLzhBZGovSS93Q05IOXF6L3dC
MlA4ai9BSTFSb3J5ZnJGWHVlaDdHSFl2ZjJyUC8NCkFIWS95UDhBalIvYXMv
OEFkai9JL3dDTlVhS1BiMU80ZXloMk5wYmwyczQ1aUYzTWNIMDcvd0NGTSsy
U2VpMHhQK1FYRC92SCtacUsNCnV4MUpXV3ZSSE9vUnU5T3BZKzJTZWkvclI5
c2s5Ri9XcTlGTDJrKzQrU1BZc2ZiSlBSZjFxMXZQbG8zR1dHVFdiV2dQOVRI
L0FMby8NCmxXbEtjbmU3TTZrVXJXSGVZZlFVZVlmUVV5aXRic2l5SCtZZlFV
ZVlmUVV5aWk3Q3lHWFZ3OE1nVlF1Q004MUQ5dWwvdXArVkYvOEENCjY5Zjkz
K3BxclhOVXFUVTJremVFSXVLdWl6OXVsL3VwK1ZIMjZYKzZuNVZXb3FQYXo3
bGV6aDJMa2Q1SThpS1F1Q1FPOVR5VE1qbFENCkJnVm53LzYrUC9lSDg2dXpm
NjVxMnB6azQzYk1weFNsb08rMFA2TFI5b2YwV29hS2ZQTHVMbFJMOW9mMEZQ
am1aM0NrREJxdlVrUCsNCnVXcWpKM1FuRldHdmRPc2pLRlhBSkhTbS9iSlBS
ZjFxS1gvWFAvdkdtVmc2azc3bWloRzJ4WSsyU2VpL3JSOXNrOUYvV3E5Rkwy
cysNCjQrU1BZdlc4N3pTRldBeGpQRlNlWWZRVldzdjljZjhBZHFhdWluSnVO
Mll5U1VoL21IMEZIbUgwRk1vcTdzVmtQOHcrMUw1aDh0MjQNCnlveUtqcFQv
QUttWC9kTkYyS3lLL3dCc2s5Ri9XajdaSjZMK3RWNks1UGF6N25SeVI3Rmo3
Wko2TCt0SDJ5VDBYOWFyMFVlMW4zRGsNCmoyTFp1SEZvODJGM0tjRDA3ZjQx
Vi90S2IrNm41SC9HcFcvNUJrdis4UDVpczZsVnF6VnJQb09uVGk3M1JjL3RL
Yis3SCtSL3hvL3QNCktiKzdIK1IveHFuUldQdDZuYzA5bERzWFA3U20vdXAr
Ui94cTdGTXoyeVNrRGN4NXgwNzFqVnEyL3dEeUQ0dnFmNW10OFBVbktUdSsN
CmhsV3B4U1ZrUytjM29LUE9iMEZSMFYwOHpNdVZFbm5ONkNqem05QlVkRkhN
dzVVUG5tYUpVS2dIY09jMUQ5c2s5Ri9XblhmM0l2b2YNCjZWVnJPcE9TbG95
NFJpMXFpeDlzazlGL1dqN1pKNkwrdFY2S2oyays1WEpIc1dQdGtub3Y2MWJk
aXB3S3pLMHBQdkQ2VnJTazJuY3kNCnFSU2FzSG1IMEZIbUgwRk1vclM3SnNo
L21IMm9FaEpBNHBsS3YzaDlhRTJLeUt0eGVTUVhEeHFGSUdPbzlxaS90S2Ir
N0grUi93QWENClpmOEEvSDdKK0g4aFZhdUNwV3FLYlNaMXdwUWNVN0Z6KzBw
djdzZjVIL0dqKzBwdjdzZjVIL0dxZEZSN2VwM0s5bERzYU52ZVNUM0MNCnhz
RUFPZWc5cW1hNGRYWlFGd0RpcU5oL3greC9qL0kxWWsvMXIvN3hycHAxSk9u
ZHZxWXpoRlRza1MvYW45Rm8rMVA2TFVGRlZ6eTcNCmk1STlpZjdVL290U1FU
Tks1VmdNWXp4VlNwN1QvV24vQUhhcUU1T1MxRktLU0Q3VS9vdEgycC9SYWdv
cWZhUzdqNVVUL2FuOUZvKzENClA2TFVGRkh0SmR3NVVXNFoya2Nxd0dNZHFL
aXR2OWFmcFJXOU50eE1acEpsMmlpaXRTQW9vb29BYVR4VU0xMURicm1hUlVC
NlpQV3ENCnV0Nml1a2FMZDZneTdoQkdYQytwN0Q4OFY1ckZQZFh1THk4bmFX
ZVg1anp3dWV3SFlWNTJQeDhjSWxwZHM2OEpoSGlHOWJKSG9rMnQNCldPQ2pN
cEJHRHZZQUVWa1c4L2hpeXVqY1FXbW1RejV6NWthcUcvQTRybG9iS2JWYjJL
eHQ1REVaVytlVURKUmNaSit0ZGRiZUF2RDgNCkNBUzJyM0w5VEpQS3pFL2hu
SDZWelliRTRqRnJuVVVrdTV2WHBVY08rUnR0bXZiNnhaWEhFYzZINk1EL0FD
TmFDdUhHUVFSN1Y1MG0NCmwrRmI2ZVdLS3h1TEIwYkN5eDNESXg5d000L090
R3poMXJRSms4cTVrMWZUU1FHVmdCY1JEc2VPSEh2eFhiVHhFbTdPejlQOGps
blMNCmowdXZVN2ZORk5VNTdZcDFkcHpoUlJSUUFVVVVVQUZGRkZBQlJSUlFB
VVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVUNClVBRkZGRkFC
UlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGVmRRLzQ4WlB3L21LdFZITkVz
OFRSc1NBZlNvcUp5ZzBpb08wazJjN1INCld4L1pVSDkrVDh4L2hSL1pVSDkr
VDh4L2hYbS9WS2gyL1dJR1BSV3gvWlVIOStUOHgvaFIvWlVIOStUOHgvaFI5
VXFCOVlnUnAveUMNCjRmOEFlUDhBTTFGVjVvRWp0a2lHNHFwNDU1NzFENU1m
by81ai9DdWlWTjZMeVJpcHJWbGVpckhreCtqL0FKai9BQW84bVAwZjh4L2gN
ClM5bXl1ZEZldEFmNm1QOEEzUi9LcS9reCtqL21QOEt0cWdNYURuQUZhMG9O
WE02a2s3RWRGUytXdnFhUExYMU5hOHJNK1pFVkZTK1cNCnZxYVBMWDFOSEt3
NWtVYi9BUDE2L3dDNy9VMVZyVm10a21jTXhZRURIRlIvWUl2N3ovbVA4SzU2
bEdjcE5vMmhWaW9wTXpxSzBmc0UNClg5NS96SCtGSDJDTCs4LzVqL0NvK3J6
Szl0RW93LzYrUC9lSDg2dXpmNjVxY3RsR2poZ3o1QnoxRlN0Q3JzV0pPVFcw
S1VsR3pNNVYNCkl0M0tsRldmczZlclVmWjA5V3AremtMblJXcVNIL1hMVXYy
ZFBWcWNzS293WUU1Rk5VMm1KelZqUGwvMXovN3hwbFgydEkyWXNTMlMNCmM5
YVQ3RkgvQUhuL0FERll1aE5zMFZXTmlqUlY3N0ZIL2VmOHhSOWlqL3ZQK1lv
OWhNUGF4SXJML1hIL0FIYW1wOFZ1a1RGbExFNHgNCnpUdkxYMU5id2cxR3pN
cFNUZHlLaXBmTFgxTkhscjZtcTVXTG1SRlNuL1V5L3dDNmFrOHRmVTBraWhJ
WkR5UnRPYU9Wb0xtWlJTZWINCkgvenpmL3ZzZjRVZWJIL3p6ZjhBNzdIK0Zj
R25jNjdQc0xSU2ViSC9BTTgzL3dDK3gvaFI1c2YvQUR6Zi92c2Y0VWFkd3Mr
eE8zL0kNCk1sLzNoL01WblZxUjdKYkdRYldDN3VSdTU3ZTFWL3M4UHBKLzMw
UDhLZFdEbFpyc0tuSlJ1bjNLZEZYUHM4UHBKLzMwUDhLUHM4UHANCkovMzBQ
OEt5OWxJMDlvaW5XcmIvQVBJUGkrcC9tYXJmWjRmU1Qvdm9mNFZZWjF0N0dQ
Q2tydXdBVzU3KzFiVVk4amJmWXlxeTVra2gNCjFGVnZ0eS84OGovMzMvOEFX
byszTC96eVAvZmYvd0JhdFBhdzdrK3psMkxORlZ2dHkvOEFQSS85OS84QTFx
VDdjdjhBenlQL0FIMy8NCkFQV285dER1SHM1ZGl6ZC9jaStoL3BWV3JVN0sw
TUxNcDVYSUFQVHA3VkJtUCs0Ly9mUS93b3FXY3R3aDhJeWluNWovQUxqL0FQ
ZlENCi93QUtNeC8zSC83NkgrRloyOHk3akswcFB2RDZWUXpIL2NmL0FMNi8r
dFZtNXVCRklGS0U4WjY0cmFtMUZOdG1VMDIxWWZSVmI3WXYNCi9QTS85OWYv
QUZxUHRpLzg4ei8zMS84QVdwKzFoM0Z5UzdGbWxYN3crdFZmdGkvODh6LzMx
LzhBV3AwZDJHa1ZmTEl5UVB2Zi9XcHENCnBDKzRPRXV4VnY4QS9qOWsvRCtR
cXRXcGNXMFVrN00yL0p4MEk5UHBVWDJPSC9wcC93QjlEL0N1V3BSazV0bThL
c1ZGSW9VVmYreHcNCi93RFRUL3ZvZjRVZlk0Zittbi9mUS93cWZZVEs5ckVo
c1A4QWo5ai9BQi9rYXNTZjYxLzk0MCszdG9vNTFaZCtSbnFSNmZTb0pybEYN
Cm1jR05pUXhIMy84QTYxYlJYczZkcGR6TnZubnAySFVWRjlxai93Q2VUZjhB
ZmY4QTlhajdWSC96eWIvdnYvNjFUN1NIY2ZMTHNTMVANCmFmNjAvd0M3VlA3
VkgvenliL3Z2L3dDdFZteW1XU1lnSVYrWE9TMmU0OXEwcHppNUt6Sm5GOHIw
STZLaSsxUi84OG0vNzcvK3RSOXENCmovNTVOLzMzL3dEV3JQbmgzSHlTN0V0
RlJmYW8vd0RuazMvZmYvMXFQdFVmL1BKdisrLy9BSzFIUER1SEpMc1c3WC9X
bjZVVkhhVEwNCkpNVlZDcDI5UzJhSzZhVWs0NkdGUk5TMU5HaWlpdWd5Q2lr
elJtZ0RLMXlLeXVkR3ViZlVKQkhiVHA1VHVUakc0N1IrT1NLOHBrWFUNCmZD
NUZuckVEdGJyOHNONUdwTWNpOWpuc2ZZMTdEZVdWdnFGbkxhM01Za2hsVXE2
SHVLNDJhTHhQNFp5bHZHMnNhYU9uSTg5RjlHSDgNClgxSE5lYmo4Tkd1dmZX
aTdibzdNSlhsU2Z1djd5cDRKMVN5dTlhZElKMWtjeDVBSG9NODE2RzVBVWtu
anJtdk83Zng3b3RoTTRPbWkNCnh1RysrcHR4Ry80OUNhZzFYeC9CZldyd3cz
QWlqY1laaHdjZm5XRkRFVXNMUjVGZDI4alNyU3FZaXJ6MlMrWkJKUEhjT1pZ
dVVJR0MNClBZQVZ0NkZxMGtNNGdsY2xjZ29TZW1UMHJqclRVZnRXMjMwcXlu
dWlQbEFoakxBZlU5QlhZZUd2Q3QvOXRqMUhXQ0l6R2QwVnFqWncNCmV4WWpq
STlLOHZCMGNUUEVlMGlySnZVOURGVmFFYVBJM2RuZHIwcDFJQmozb3pYMXA4
K0xSU1pvQnpRQXRGRkZBQlJSUlFBVVVVVUENCkZGRkZBQlJSUlFBVVVVVUFG
RkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVV
VUFGRkZGQUJSUlJRQVUNClVVVUFGRkZGQUVVLzNCOWFncWVmN2crdFFWalBj
MWhzRkZGRlFVRldrKzR2MHFyVnBQdUw5QldsUGNpWTZpaWl0VE1LS0tLQUNp
bTcNCmg2MHU0ZXRBQzBVbVJRV0E3MEFMUlRkNit0TGtVQUxSVGR3UGVuWm9B
S0tBYzBVQUZGSm1semlnQW9wdTlmV2x6UUF0RkpuTkxRQVUNClVVVUFGUnov
QVBIdkovdUgrVlNWSFA4QThlOG4rNGY1VXBiTWNkekZvb29yeUQwUW9vb29B
dlczL0hoSi92OEErRk1wOXQveDRTZjcNCi93RGhUSzZ2c3g5RG42c0tLS0tR
d3Bidi9rSHgvd0MvL2pTVXQzL3lENC85L3dEeG9md3k5Qkw0a1o5RkZGY1Ix
QlJSUlFCcFRmOEENCkh0YmY3bjlCVUZUemY4ZTF0L3VmMEZRVjJ6M09hR3dV
VVVWQlFWTmYvd0N2WC9kL3FhaHFhLzhBOWV2KzcvVTFYMkg4aGZhUlZvb28N
CnJJMENudy82K1A4QTNoL09tVStIL1h4Lzd3L25UanVoUFl2eS93Q3NOTXA4
ditzTk1yc2U1ekxZS0tLS1F4OFgrc0ZaVngveDh5LzcNCjUvbldyRi9yQldW
Y2Y4Zk12KytmNTFqaVBnWHFhMGZpWkhSUlJYRWRBVmQwei9qNWIvY1A4eFZL
cnVtZjhmTGY3aC9tSzJvZnhFUlYNCitCbEtpaWlzU3dvb29vQXVhYi94OG4v
ZFA4eFJScHYvQUI4bi9kUDh4UlhvWWI0RGlyL0dhMVJTekpCRThzcnFrYUtX
Wm1PQUFPcHENCld2UHZqTGZ6V1h3N3UxZ1lxYm1WSUhJNjdTY2tmampINDEy
R0Jsei9BQlIxYlhkVW1zZkErZ0hVa2hPR3U1MjJ4bjNISXdQUWsvaFcNCjM0
YTF6eHhOcmlXUGlQdzdiMnRzMGJNTHEzazNBRWRBY00zV3RId0JwTnJwSGdm
U1lMVlZ4SmJwUEl3SDMzY0JpVCtmNUFWMDV3QnoNCjBvQU04VW5YdlhtK3Nl
R3RTdXRSdVo5VitJTnhwd2VWbXRiZTNrRUt4cGs3Yzhnc2NkZWxRL0RqeEpx
MTNjNi9vR3A2a3VveTZZY3cNClhxa0V5SWNqa2pyMEI5ZWV0QUhwTTF2RGNK
dG5oamxYMGRRdy9XdWExSFZmRDJrZUpkTDBTVFRJemZhaGt4R08yVGFvR2Nr
bnQwcnoNCkh3SmIrTGZpRHBUcmQrSjcreTArMGtLK2JDNTgyYVE4NExaQndC
ajJwZkYzaG5WRitLUGg2eS80U082TTExR1BJdWlQbnQ5cTRPMzUNCnVja0U5
dXRUeXhIYzkyVlZRQlZBQ2djQUNuZFA4SzV2UXRCMWJSdEJ2TE9iWDU5U3Za
V2RvTHE2VTVpSlVCUmpKNEJHZnhyaE5XOE8NCjZoWjJzMXhMOFQ1eHJNYUZ4
RTkwc2NaWWM3ZG03Z1o0L3BWV0VlbTY1ckZ0b0dpM2VxM2U0d1cwWmRndlUr
Z0h1VGdDdk5yRHhkOFMNCi9FbG9OVTBYUWRNajA5eVRDczcvQURTQWNkU3d6
OWNDdFB3L2NYSHhOK0V0eGJhaEtxWGt3YTNrbUM4RjFJWldJSC9BY2dlOWN0
b3YNCmpIeEg4TVlZTkQ4VmFQTExwY1RiSWJ5SG5DNXp3M1J1L0J3YUFQUU5U
dWZHbHo0S3RMalRMTzN0OWZkbE05dTVCUkY1eUJ1T1BTdXANCnNmdEJzTGY3
WGo3VjVTK2R0NmI4RGRqOGMxNTc4U1BFelA4QURKTmI4UDZqTEdzMDBmbHp3
T1VPMDV5UFVkT1JYZTZRN3k2Tll5U00NClhkN2VObVluSkpLakpvQXYwVVVV
QUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFV
VVVVQUZGRkZBQlINClJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJS
UlJRQVVVVVVBTlpBNHdjMDN5RjlUVWxGSnhUSGRvajhoZlUwZVF2cWFrb3AN
CmNxRG1aSDVDK3BwNEdBQjZVdEZOSkxZRzJ3b29vcGlDa1BTbG9vQTVmVkxi
VUxXT1c0KzN1VUJ5RkhHQVQwcGROdGRRdVVodVB0N2gNCkNRU3A1eU05SzBm
RVAvSUptL0QrWXAyZy93RElLaC8zZjYxNWZzSS9XK1M3dHkzM2U5L1U3dmF5
K3I4Mmw3MjJYWW82bmR6eGF4WngNCkpLeW94RzVRZUR6Vmkvc3IyZVFTdzNq
Ukp0eHRBNyt0VWRZLzVEMWw5Vi85Q3JvbS93QlJXbEtIdFoxWXpidGRkWDJJ
bkwyY1lTajINCi9VNVhUMDFDL2FRTGZTSnNPT2VjMWN2N3k2czRiZXlqbDh5
NWs0TWhIdlI0YS8xbDMvdi9BT05NMVUrVDRodEpYSHlZQXllblUvNGkNCnVT
Q2NNS3FpYnZKMmJ1OXJuUko4MWR3YVZscmEza1J6MitxYWZDTG9YanliZVdV
NUkvV3RYN2ViblEzdVV5ckdKangySUIvclR0V24NCmpUUzVpVDFRcVBxZUt6
ckZTdmhtVEk2eHlIK2RkSEw3R3E2Y0c3T0xlOTlURy90S2FuSmEzc2FXaHpT
VDZaRThybDNPY3NUeWVUV2sNCnh3cE5aSGg1MUdsUWduMS85Q05XTld2QmEy
RWtnUHpZd3YxUFN1cWpVVWNOR2NuOWxQOEFBd3FRdldjWTkvMU1sTllkdkVC
ajNueUQNCis2QTdaOWZ6NHJhMUNSazA2WjBKRENOaUNPeHhYRW1TSmJPUGFX
RndyNzg0L3IrQXJxcExrWFdneVNqK0tGaWNkamptdUhCNGwxSTENCkl5ZDN2
OS9UNUhYaWFDaEtEUzAyKzcvTXc0eHFKc1JlcGV5SEFMRlN4N0d1ZzB1OWU3
MDFaWlB2OGcrK0s1WXczS2FaSE41cm0zWTQNClpBY1k1cnFyQVFEVEkvcy8r
cjI1RkxMM0wybHRWN3F1bTczYjZvTVlseWRIcTlsdDVNcStITHFhNGdsTTBq
T1ErQVdQdFc3WE9lRnYNCjlSTi8xMC9vSzZPdTNBTnl3OEd6bXhTU3JTU0Np
aWl1czV3cEhVT2pLZWhHS1dpZ0NwL1owUDhBZWY4QU1mNFVmMmREL2VmOHgv
aFYNCnVpc3ZZMCt4ZnRKOXlwL1owUDhBZWY4QU1mNFVmMmREL2VmOHgvaFZ1
aWoyTlBzSHRKOXlGTFpJNFRHQzIwblBOSjlrajlXL09wNksNCnJrajJGek1n
K3lSK3JmblI5a2o5Vy9PcDZLUFp4N0J6eTdrSDJTUDFiODZKTFZKWVZpWXR0
Qnp4MS96elU5RkhzNDdXRG5sM0tYOW0NClEvM3BQekgrRkg5bVEvM3BQekgr
RlhhS24yRlBzVjdXZmNwZjJaRC9BSHBQekgrRkg5bVEvd0I2VDh4L2hWMmlq
MkZQc0h0Wjl5amQNCjdJVWhRcXpBQWdjNDZZOXFxK2JIL3dBODMvNzdIK0ZX
ZFMvNVpmai9BRXFoWEpXazFOcEhSU2luRk5rM214Lzg4My83N0grRkhteC8N
Cjg4My9BTyt4L2hVTkZaYzhqVGxSTjVzZi9QTi8rK3gvaFZ5N1ZHbEJZTm5i
Mk9QNlZtMXBYZjhBclIvdTF0VGszRjM4akthdEpXSy8NCmx4ZjNYLzc2SCtG
SGx4ZjNYLzc2SCtGTFJSb0YySjVjWDkxLysraC9oVDRrakVxRUI4N2gvRVA4
S2JUby93RFdwL3ZDbXJYRTNvWG0NCmlWbUpKTko1QytwcVNpdTNsUnpjekkv
SVgxTkhrTDZtcEtLWEtnNW1NV0pWYklKck9sZ2lNemtoOGxqbkREL0N0U3M2
VC9Xdi92R3MNCmEwVlpHdEp1NUY5bmg5SlArK2gvaFI5bmg5SlArK2gvaFQ2
SzUrV1BZMjVuM0dmWjRmU1Qvdm9mNFZZczRvMG1KUU5uYjNPZjZWRlUNCjlw
L3JUL3UxZE9LNWxvVE52bFpUOHFIKzdKLzMwUDhBQ2p5b2Y3c24vZlkvd3Bh
S3lzdXhwZGllVkQvZGsvNzdIK0ZIbFEvM1pQOEENCnZzZjRVdEZGbDJDN0py
UkkxbUpRTURqdTJlNDlxS2RaL3dDdVAwb3Jxb3BjcHpWWDd4ZnJuUEczaDFm
RlhoVzkwbmNxeXlxR2hadWkNCnlBNVhQdHhYUjBoR2U5ZEJrZU9lQ2ZpUEY0
WnNrOE1lTVk1OVB1N0g5MUhOSWhLc2c2QTR6MDZBaklJeFhZSDRoYUxxcHVk
UDBIVUINCmVhcDlsbWxoV09OdHU1VUpISkFIWEhITmRKcU9pNlpyRWZsNmxZ
VzEybzZDYUlOajZacXZwZmhqUTlFa01tbWFWWjJqa1lMeFFnTmoNCjY5YUFQ
RnZBY2ZnWFVkS3ZOVThaWHNOeHJKbWRwaGZ6TUNGN0ZWejgzZnBtdEg0VlMy
TTNqWHhiSnBsdVlMQjROMXZHUVJpUGNkcHcNCmZVYzE2ZmRlQ1BETjdmOEEy
NjQwT3hsdVMyNHVZaHlmVWpvVDlhMG9kSzArMnZKcnVHenQ0NTVsQ3l5TEdB
emdEQUJQY0FDZ0R6LzQNCkUvOEFJZ1NuL3Aray93RFFVcWw4UmJ5TFIvaWo0
UjFhOS9kMk1ZWkhsSU9BY25QNWJnYTlQMC9UTExTN2MyOWhhUTIwSllzVWlR
S00NCm52eDM0RkpxV2syR3NXcHR0UnM0YnFBblBseklHR2FBT0grSVhpUnJ6
NGJhamY4QWhxK1djSklzTXM5cTI3WXBJM1lJOWlNL1d1UXMNCklmaGRZK0NZ
cnh4YjZocVQyK1RISkl6enZPUnl1d0hqNXZRWSt0ZXlXT2k2YnBkZ2JHd3Nv
TGUwT1NZVVFCVGtZT1I5S28yWGd6dzMNCnAxLzl1dE5Gc29ibk9SSXNReVBw
NmZoUUJ3bndsMVcxMFQ0VVhlcDNyTXR0YlhVcnlGUmtnWVVkTzlXUEZ2eE44
R1huaEsrdDQ3d1gNCjB0eEEwY2RzSW1CREVjRTVBQXdjSFBYMHIwSzIwZlRi
S3prczdheHQ0cldRbG5oV01CR0o2a2p2MHFqYmVEZkRkbmRDNnR0RHNJNXcN
CmR3ZFlGeUQ3ZW40VUFlTDMrbVh1bC9zOVJKZlJQRTgxK3N5UnNNRlVZbkhI
Yk9NL2pYdStpZjhBSUIwNy9yMmovd0RRUlM2anBWanENCjlvYlRVYldHNnR5
d1l4eklHWEk2SEZXWW9raGpXT05RcUlBcXFCZ0FEb0tBSmFLS0tBQ2lpaWdB
b29vb0FLS0tLQUNpaWlnQW9vb28NCkFLS0tLQUNpaWlnQW9vb29BS0tLS0FD
aWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tL
S0FDaWlpZ0ENCm9vb29BS0tLS0FDaWlpZ0Fvb29vQXFhalovYnJONE4remRq
NXNaeHptbHNMVDdGYUpCdTNiUmpPTVpxelJVZXpqeiswdHJhM3lLNTUNCmN2
SjAzTXk4MG43VnFFRjE1dTN5aUR0MjV6em10RXJsTnRPelJtbEduR0Rja3RY
dUVweWtrbjBNN1ROTC9zOXBUNW0vekd6OTNHS2YNCnFXbVJhakRzZklZY3F3
NmcxZnBLU29VMVQ5bGIzU25WbTU4OTlUblY4T1NPeUM0dkpKSTE2TGpIOVRX
eExacTFpMXNueUtVS0RBNmMNCllxMW1qTlJUdzFLbW1vcmNjNjFTZHVaN0hO
cjRjblFCVXY1RkE3QUVmMXF6Tm9jbHhad1c3M1RFUmtsbUs1TGZyVzNSbW9X
Qm9SVGkNCmxvOU4zL21XOFZWYlRiL0JGV1N4aWt0V2h4aFN1M2pzTVZVdGRJ
YTMwNlcwTXhjT0dBYmJqYmtmV3RRdGdtalA1VnZLakNVdVpyVzENCnZrWktw
SkxsVDh5aGJhV2tPbkN6a1BtTGdna2pHY25QOWFacHVtUFlSUEVaeklqSEtn
cmpiV25tak5TcU5PTGkwdmhWbDZEZFdiVFQNCmUrcG5hVnBuOW14dW5tK1p1
YmRuYml0S2lrelYwNFJweFVZNkpFem01eTVwYnNXaWlpckpDaWlpZ0Fvb29v
QUtLS0tBQ2lpaWdBb28NCm9vQUtLS0tBQ2lpaWdBb29vb0FvYWwveXkvSCts
VUsyMlJYKytpdGpwa1pwdmt4Zjg4by8rK1JYTFV3N25KeXVid3JLTWJHTlJX
ejUNCk1mOEF6eWovQU8rUlI1TWYvUEtQL3ZrVkgxVjl5L2Jyc1kxYVYzL3JS
L3UxUDVNWC9QS1Avdm1uRlZZOHFDZmNWY0tEaW1ya1RxcHQNCk16NkswTmlm
M0YvNzVvMkovY1gvQUw1cCt4WXZhSXo2ZEgvclUvM2hWN3kwL3VML0FOODBi
RUJ5RVhQMHBxaTdnNmlIMFVVVjBHSVUNClVVVUFGWjBuK3RmL0FIaldqVENp
SGtvdWZwV2RTSE1pb3k1VFBvclEySi9jWC92bWpZbjl4ZjhBdm1zdllzMDlx
alBxZTAvMXAvM2ENCnMrV245eGZ5cFFxcnlGQVBzS3FOSnAzRktvbXJHVlJX
bjVjZi9QTlArK2FQTGovNTVwLzN6VWZWMlY3WkdaUlduNWNmL1BOUCsrYVAN
CkxqLzU1cC8zelI5WGZjUGJJcVduK3VQMG9xNEVRSEtvb1BzTVVWdFRnNHF4
bktTazdqNktLSzBJQ2lpaWdBb29vb0FLS0tLQUNpaWkNCmdBb29vb0FLS0tL
QUdraFZKUFFjbW5VMS91SGpkeDA5YWRRQVVVVVVBRkZGRkFCUlJSUUFVVVVV
QUZGRkZBQlJSUlFBVVVVVUFGRkYNCkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJR
QVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJS
UlJRQVVVVVUNCkFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZG
RkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUENClVV
VVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJR
QVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlINClJSUUFVVVVVQUZGRkZB
QlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUExc2xUdE9E
amluVXg4R050eHdNSE5Qb0ENCktLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNp
aWlnQW8NCm9vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtL
S0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWkNCmlnQW9v
b29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0sNCkFDaWlpZ0Fvb29vQUtLS0tB
Q2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtL
S0tBQ3FQOXFRL1lqZDcNCkpQTERiY1lHYzV4NjFlckFPbHovQU5rTkhzZnov
TXpzODNqRzcwempwUjFBMUpMMVV1REFrY2tzb1hjeXBqNVI3a2tDb1pkV3Q0
clINCmJnaVFvWDJFQWZNcmVoQnBCRE5iYWhOY0pFMHNjeWpJVWdGU1BxUnhW
U1RUYmhyUVpqQmtrdWhNNkJoaFI2WjcwQWFCMUdIN2JGYWoNCmN6eUx1QkdN
QVl6elJhWDR2RkR4MjhvakpJM25iZ1kvSFA2VlJpMHA3Vy90cEl5WkVVdnZj
a0RBeGhSVDlLdFpiV0pFbXQ1MWNNVHUNCkVvMkQ4TjM5S0FOaWlpaWdBb29v
b0FhLzNEeHU0NmV0T3ByWktuYWNISEZPb0FLS0tLQUNpaWlnQW9vb29BS0tL
S0FDaWlpZ0Fvb28NCm9BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29v
b0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWcN
CkFvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FD
aWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUMNCmlpaWdBb29vb0FL
S0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29v
b0FLS0tLQUNpaWlnQW9vb29BS0sNCktLQUNpaWlnQW9vb29BS0tLS0FDaWlp
Z0FvcEtLQUZvcEtLQUZvcEtLQUZvcEtLQUZvcEtLQUZvcEtLQUZvcEtLQUd2
Z3h0dU9CZzUNCnA5TWMvSTNHN2pwNjArZ0Fvb29vQUtLS0tBQ2lpaWdBb29v
b0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2kNCmlp
Z0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FD
aWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0sNCktBQ2lpaWdBb29vb0FL
S0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29v
b0FLS0tLQUNpaWlnQW9vb28NCkFLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlp
Z0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FH
NW96VVcNCjZrM2ZUL1ArZnhvQW16Um1vdC8rYzBicUFKYzBacUhkOVA4QVAr
ZnhwZC8rYzBBUzVvelVXNmszZlQvUCtmeG9BbXpSbW90LytjMGINCnFBSmMw
WnFIZDlQOC93Q2Z4cGQvK2MwQVM1b3pVVzZrM2ZUL0FEL244YUFKV3lWTzBq
T09LZG1vR1lGV0I2WU9hbHpRQTdOR2Fabi8NCkFEL24vSnBjMEFPelJtbTVv
ei9uTkFEczBacHVhVFArZjgvNU5BRDgwWnB1YU0wQU96Um1tNS96bWpOQURz
MFpwbWY4L3dDZjhtbHoNClFBN05HYWJtalA4QW5OQURzMFpwdWFUUCtmOEFQ
K1RRQS9OR2FibWpOQURzMFpwdWY4NW96UUE3TkdhWm4vUCtmOG1selFBN05H
YWINCm1qUCtjMEFPelJtbTVwTS81L3ovQUpOQUQ4MFpwdWFNMEFPelJtbTUv
d0E1b3pRQTdOR2Fabi9QK2Y4QUpwYzBBT3pSbW01b3ovbk4NCkFEczBacHVh
VFA4QW4vUCtUUUEvTkdhYm1qTkFEczBacHVmODVvelFBN05HYVpuL0FEL24v
SnBjMEFPelJtbTVvei9uTkFEczBacHUNCmFUUCtmOC81TkFEODBacHVhTTBB
T3pSbW01L3ptak5BRHMwWnBtZjgvd0NmOG1selFBN05HYWJtalA4QW5OQURz
MFpwdWFUUCtmOEENClArVFFBL05HYWJtak5BRHMwWnB1Zjg1b3pRQTdOR2Fa
bi9QK2Y4bWx6UUE3TkdhYm1qUCtjMEFPelJtbTVwTS81L3ovQUpOQUQ4MFoN
CnB1YU0wQU96Um1tNS93QTVvelFBN05HYVpuL1ArZjhBSnBjMEFPelJtbTVv
ei9uTkFEczBacHVhVFA4QW4vUCtUUUEvTkdhYm1qTkENCkRzMFpwdWY4NW96
UUE3TkdhWm4vQUQvbi9KcGMwQU96Um1tNW96L25OQURzMFpwdWFUUCtmOC81
TkFEODBacHVhTTBBT3pSbW01L3oNCm1qTkFEczBacG1mOC93Q2Y4bWx6UUE3
TkdhYm1qUDhBbk5BRHMwWnB1YVRQK2Y4QVArVFFBL05HYWJtak5BRHMwWnB1
Zjg1b3pRQTcNCk5HYVpuL1ArZjhtbHpRQTdOR2FibWpQK2MwQU9vcG9QTkZB
RlhkL24vUDhBazB1NnMzN1JML2UvUVVmYUpmNzM2Q2dEUzNVbTcvUCsNCmY4
bXM3N1JML2UvUVVmYUpmNzM2Q2dEUzNVbTcvUDhBbjlLenZ0RXY5NzlCUjlv
bC92Zm9LQU5MZDlQOC93Q2Z4bzNmV3MzN1JML2UNCi9RVWZhSmY3MzZDZ0RS
M2Y1L3orbEx1N2ZoL24vUE5adjJpWCs5K2dvKzBTL3dCNzlCUUJvN3UvK2Y4
QVArUlM3cXpmdEV2OTc5QlINCjlvbC92Zm9LQU5MZFNidS8rZjhBUCtSV2Q5
b2wvdmZvS1B0RXY5NzlCUUJvbHVEM3AvbTFtQ2VRa0RkMzlCU2ZhSmY3MzZD
Z0RWODINCms4MnN2N1JML2UvUVVmYUpmNzM2Q2dEVTgybDgzM05aWDJpWCs5
K2dvKzBTL3dCNzlCUUJxZWJTK2JXVjlvbC92Zm9LUHRFdjk3OUINClFCcWVi
UjV0WmYyaVgrOStnbyswUy8zdjBGQUdyNXZ1YVR6YXkvdEV2OTc5QlI5b2wv
dmZvS0FOWHphVHpheS90RXY5NzlCUjlvbC8NCnZmb0tBTlR6YVh6ZmMxbGZh
SmY3MzZDajdSTC9BSHYwRkFHcDV0TDV0WlgyaVgrOStnbyswUy8zdjBGQUdw
NXRIbTFsL2FKZjczNkMNCmo3UkwvZS9RVUFhdm0rNXBQTnJMKzBTLzN2MEZI
MmlYKzkrZ29BMWZOcFBOckwrMFMvM3YwRkgyaVgrOStnb0ExUE5wZk45eldW
OW8NCmwvdmZvS1B0RXY4QWUvUVVBYW5tMHZtMWxmYUpmNzM2Q2o3UkwvZS9R
VUFhbm0wZWJXWDlvbC92Zm9LUHRFdjk3OUJRQnErYjdtazgNCjJzdjdSTC9l
L1FVZmFKZjczNkNnRFY4Mms4MnN2N1JML2UvUVVmYUpmNzM2Q2dEVTgybDgz
M05aWDJpWCs5K2dvKzBTL3dCNzlCUUINCnFlYlMrYldWOW9sL3Zmb0tQdEV2
OTc5QlFCcWViUjV0WmYyaVgrOStnbyswUy8zdjBGQUdyNXZ1YVR6YXkvdEV2
OTc5QlI5b2wvdmYNCm9LQU5YemFUemF5L3RFdjk3OUJSOW9sL3Zmb0tBTlR6
YVh6ZmMxbGZhSmY3MzZDajdSTC9BSHYwRkFHcDV0TDV0WlgyaVgrOStnbysN
CjBTLzN2MEZBR3A1dEhtMWwvYUpmNzM2Q2o3UkwvZS9RVUFhdm0rNXBQTnJM
KzBTLzN2MEZIMmlYKzkrZ29BMWZOcFBOckwrMFMvM3YNCjBGSDJpWCs5K2dv
QTFQTnBmTjl6V1Y5b2wvdmZvS1B0RXY4QWUvUVVBYW5tMHZtMWxmYUpmNzM2
Q2o3UkwvZS9RVUFhbm0wZWJXWDkNCm9sL3Zmb0tQdEV2OTc5QlFCcStiN21r
ODJzdjdSTC9lL1FVZmFKZjczNkNnRFY4Mms4MnN2N1JML2UvUVVmYUpmNzM2
Q2dEVTgybDgNCjMzTlpYMmlYKzkrZ28rMFMvd0I3OUJRQnFlYlMrYldWOW9s
L3Zmb0tQdEV2OTc5QlFCcWViUjV0WmYyaVgrOStnbyswUy8zdjBGQUcNCnI1
dnVhVHpheS90RXY5NzlCUjlvbC92Zm9LQU5YemFUemF5L3RFdjk3OUJSOW9s
L3Zmb0tBTlR6YVh6ZmMxbGZhSmY3MzZDajdSTC8NCkFIdjBGQUdwNXRMNXRa
WDJpWCs5K2dvKzBTLzN2MEZBR3A1dEhtMWwvYUpmNzM2Q2o3UkwvZS9RVUFh
dm0rNXBQTnJMKzBTLzN2MEYNCkgyaVgrOStnb0ExZk5wUE5yTCswUy8zdjBG
SDJpWCs5K2dvQTFQTnBmTjl6V1Y5b2wvdmZvS1B0RXY4QWUvUVVBYW5tMHZt
MWxmYUoNCmY3MzZDajdSTC9lL1FVQWFubTBlYldYOW9sL3Zmb0tQdEV2OTc5
QlFCcStiN21rODJzdjdSTC9lL1FVZmFKZjczNkNnRFY4Mms4MnMNCnY3Ukwv
ZS9RVWZhSmY3MzZDZ0RVODJsODMzTlpYMmlYKzkrZ28rMFMvd0I3OUJRQnFl
YlMrYldWOW9sL3Zmb0tQdEV2OTc5QlFCcWUNCmJSNXRaZjJpWCs5K2dvKzBT
LzN2MEZBR3I1dnVhVHpheS90RXY5NzlCUjlvbC92Zm9LQU5YemFUemF5L3RF
djk3OUJSOW9sL3Zmb0sNCkFOVHphWHpmYzFsZmFKZjczNkNqN1JML0FIdjBG
QUdzc21XQTk2S3pvWlhNNkF0eHZIODZLQVAvMlE9PQ0KDQotLS0tLS09X05l
eHRQYXJ0XzAwMF8wMDAwXzAxQ0MzNjUzLjFGNUFFREEwDQpDb250ZW50LVR5
cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFuc2Zl
ci1FbmNvZGluZzogYmFzZTY0DQpDb250ZW50LUxvY2F0aW9uOiBodHRwOi8v
c3RhdHNlLndlYnRyZW5kc2xpdmUuY29tL2Rjc2c5ZjA5cDEwMDAwZzRlZTVy
NThkejhfNWI4Zi9uanMuZ2lmP2Rjc3VyaT0vbm9qYXZhc2NyaXB0JldULmpz
PU5vJldULnR2PTEuMS4xDQoNClIwbEdPRGxoQVFBQkFKSC9BUC8vL3dBQUFQ
Ly8vd0FBQUNIL0MwRkVUMEpGT2tsU01TNHdBdDd0QUNINUJBRUFBQUlBTEFB
QUFBQUINCkFBRUFBQUlDVkFFQU93PT0NCg0KLS0tLS0tPV9OZXh0UGFydF8w
MDBfMDAwMF8wMUNDMzY1My4xRjVBRURBMA0KQ29udGVudC1UeXBlOiBpbWFn
ZS9naWYNCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NA0KQ29u
dGVudC1Mb2NhdGlvbjogaHR0cDovL2Ftb3VnZTIwMTEuY29tL2EvZ3R3cGFn
ZXMvY29udC5naWYNCg0KUjBsR09EbGhNZ0FRQVBjQUFQK2pHdi93Mi8vRGF2
LzY4LytyTEdtZXhLaWpuUCs2VS8rMFF2L2JwUCt0TWFySTN2L05ndi9MZlAv
aA0Kcy8raEZQKzlXdEd6a3V5eGNwS0lmUCt5UGYvQVl2L1JqQnNaR1l5MDBn
QmFuTVBZNlAvKy9kUGo3aWgwcTNkSEQvL213UlpwcFArZA0KQ3YvMjZ0SjJH
RkdPdS8rbUlmKzJTUC9WbHYvcXlmLzE1di9mcmYvdTFYVnhiazFMU2YvdDB2
K2VEZi85K2YrYUEvL0pkb3BPQ3VyeQ0KOThhK3MvL294Zi9sdnYvZHFjN0l3
ZEdSVFAvWm4vL1htdi96NFAvR2NmL2p1Zi80N3QzWTBQYll0LytiQmZPR0dQ
K29KL1A0K3VxUw0KTjdob0ZLOXdMUC9TaitqQ21zdW1mT0hzODgrSVBQL3J6
dWFBR0djNUF2SHM1dTdJbi9YSGx1LzErZis0VGVuVnUvSE5wZitjQithYg0K
Uy96dDJqeUJzNDFtTi9mNi9QUGh5L3I4L1o5NFM4R1hhUExwM3Z2anl1L1Jz
SjliRVBPcFd2SHg4ZmpUcXZIbjJ1TGczV0pmWEFwZw0KbitXb1p1NjlpSXRZ
SHZIdzd2VGl6Ly9zMFAvUGlQK2ZFUC9Ua2Yva3UvK3ZPUC8wNC9iZXcvalBv
dDdBbnZmcDEvK1pBUC8vL3dBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ0KQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDd0FBQUFBTWdBUUFBQUljZ0QvQ0FSQQ0Kc0tEQmd3Z1RLbFFvc09IQ2h4
QWpHblFvc2FMRmczOHVhdHk0c0NGRmhod3JlaHpJTUdQSWlDUW5aalRwa2VC
QWxpazNqb1Rwc0NXQQ0KbGk5TnloenBjaVhNZ2pGdkJyVTROR2RQb0RxTmNw
eDVsQ1RGbEVwMzJsVDZOS25OazFpSlp0MHFWQ2RYcVVPL29oUVlFQUE3DQoN
Ci0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFDQzM2NTMuMUY1QUVEQTAN
CkNvbnRlbnQtVHlwZTogdGV4dC9jc3M7DQoJY2hhcnNldD0iaXNvLTg4NTkt
MSINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFi
bGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly9hbW91Z2UyMDExLmNvbS9h
L2Nzcy9wcml2YXRpLmNzcw0KDQoqIHsNCglQQURESU5HLUJPVFRPTTogMHB4
OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklH
SFQ6ID0NCjBweDsgRk9OVC1GQU1JTFk6ICJNUyBUcmVidWNoZXQiLCBWZXJk
YW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9DQpCQUNLR1JP
VU5EOiBub25lIHRyYW5zcGFyZW50IHNjcm9sbCByZXBlYXQgMCUgMCU7IFBB
RERJTkctVE9QOiAwcHgNCn0NCkhUTUwgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1S
SUdIVDogPQ0KMHB4OyBGT05ULUZBTUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZl
cmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tH
Uk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsg
UEFERElORy1UT1A6IDBweA0KfQ0KQk9EWSB7DQoJUEFERElORy1CT1RUT006
IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5H
LVJJR0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZOiAiTVMgVHJlYnVjaGV0Iiwg
VmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFD
S0dST1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAl
OyBQQURESU5HLVRPUDogMHB4DQp9DQpURCB7DQoJUEFERElORy1CT1RUT006
IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5H
LVJJR0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZOiAiTVMgVHJlYnVjaGV0Iiwg
VmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFD
S0dST1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAl
OyBQQURESU5HLVRPUDogMHB4DQp9DQpUSCB7DQoJUEFERElORy1CT1RUT006
IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5H
LVJJR0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZOiAiTVMgVHJlYnVjaGV0Iiwg
VmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFD
S0dST1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAl
OyBQQURESU5HLVRPUDogMHB4DQp9DQpQIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkct
UklHSFQ6ID0NCjBweDsgRk9OVC1GQU1JTFk6ICJNUyBUcmVidWNoZXQiLCBW
ZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9DQpCQUNL
R1JPVU5EOiBub25lIHRyYW5zcGFyZW50IHNjcm9sbCByZXBlYXQgMCUgMCU7
IFBBRERJTkctVE9QOiAwcHgNCn0NCkEgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1S
SUdIVDogPQ0KMHB4OyBGT05ULUZBTUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZl
cmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tH
Uk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsg
UEFERElORy1UT1A6IDBweA0KfQ0KVUwgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1S
SUdIVDogPQ0KMHB4OyBGT05ULUZBTUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZl
cmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tH
Uk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsg
UEFERElORy1UT1A6IDBweA0KfQ0KTEkgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1S
SUdIVDogPQ0KMHB4OyBGT05ULUZBTUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZl
cmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tH
Uk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsg
UEFERElORy1UT1A6IDBweA0KfQ0KQk9EWSB7DQoJUEFERElORy1CT1RUT006
IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5H
LVJJR0hUOiA9DQowcHg7IEJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvSW1tYWdpbmkvbWFpbkJHLmpwZykgI2U2ZTZlNiA9DQpyZXBl
YXQteSBjZW50ZXIgdG9wOyBQQURESU5HLVRPUDogMHB4DQp9DQpIMSB7DQoJ
TUFSR0lOOiAxMnB4IDEycHggMTJweCAwcHg7IENPTE9SOiAjZjlhNzNiOyBG
T05ULVNJWkU6IDE2cHgNCn0NCkgxLnRpdG9sbyB7DQoJTUFSR0lOOiAxMnB4
IDEycHggMTJweCAwcHg7IENPTE9SOiAjZjlhNzNiOyBGT05ULVNJWkU6IDE2
cHgNCn0NCkgyIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDEy
cHggMHB4IDZweDsgUEFERElORy1MRUZUOiAwcHg7ID0NClBBRERJTkctUklH
SFQ6IDBweDsgQ09MT1I6ICM2NjY7IEZPTlQtU0laRTogMTRweDsgUEFERElO
Ry1UT1A6IDBweA0KfQ0KSDIudGl0b2xvIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDEycHggMHB4IDZweDsgUEFERElORy1MRUZUOiAwcHg7
ID0NClBBRERJTkctUklHSFQ6IDBweDsgQ09MT1I6ICM2NjY7IEZPTlQtU0la
RTogMTRweDsgUEFERElORy1UT1A6IDBweA0KfQ0KSDMgew0KCVBBRERJTkct
Qk9UVE9NOiAwcHg7IE1BUkdJTjogMTJweCAwcHggNnB4OyBQQURESU5HLUxF
RlQ6IDBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogIzk5OTsg
Rk9OVC1TSVpFOiAxMnB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpIMy50aXRv
bG8gew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMTJweCAwcHgg
NnB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4
OyBDT0xPUjogIzk5OTsgRk9OVC1TSVpFOiAxMnB4OyBQQURESU5HLVRPUDog
MHB4DQp9DQpINCB7DQoJTUFSR0lOOiAwcHg7IENPTE9SOiAjOTk5OyBGT05U
LVNJWkU6IDExcHgNCn0NCkg0LnRpdG9sbyB7DQoJTUFSR0lOOiAwcHg7IENP
TE9SOiAjOTk5OyBGT05ULVNJWkU6IDExcHgNCn0NCkg1IHsNCglQQURESU5H
LUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7
IFBBRERJTkctUklHSFQ6ID0NCjBweDsgQ09MT1I6ICM2NjY7IEZPTlQtU0la
RTogMTFweDsgUEFERElORy1UT1A6IDBweA0KfQ0KSDUudGl0b2xvIHsNCglQ
QURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZU
OiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgQ09MT1I6ICM2NjY7IEZP
TlQtU0laRTogMTFweDsgUEFERElORy1UT1A6IDBweA0KfQ0KSDYgew0KCVBB
RERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6
IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogIzY2NjsgRk9O
VC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpINi50aXRvbG8g
ew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5H
LUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogIzY2
NjsgRk9OVC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpQIHsN
CglQQURESU5HLUJPVFRPTTogMWVtOyBNQVJHSU46IDBweDsgUEFERElORy1M
RUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgQ09MT1I6ICM2NjY7
IEZPTlQtU0laRTogMTBweDsgUEFERElORy1UT1A6IDFlbQ0KfQ0KQSB7DQoJ
UEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVG
VDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IENPTE9SOiAjZjlhNzNi
OyBGT05ULVNJWkU6IDEwcHg7IEZPTlQtV0VJR0hUOiBib2xkOyA9DQpURVhU
LURFQ09SQVRJT046IG5vbmU7IFBBRERJTkctVE9QOiAwcHgNCn0NCkxJIHsN
CglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1M
RUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgQ09MT1I6ICM2NjY7
IEZPTlQtU0laRTogMTBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KVEQgew0K
CVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxF
RlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogIzY2Njsg
Rk9OVC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpUSCB7DQoJ
UEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVG
VDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IENPTE9SOiAjNjY2OyBG
T05ULVNJWkU6IDEwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkEgSU1HIHsN
CglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9SREVSLUxFRlQ6IG1l
ZGl1bSBub25lOyBCT1JERVItVE9QOiA9DQptZWRpdW0gbm9uZTsgQk9SREVS
LVJJR0hUOiBtZWRpdW0gbm9uZQ0KfQ0KVUwgew0KCUxJU1QtU1RZTEUtVFlQ
RTogbm9uZTsgTElTVC1TVFlMRS1JTUFHRTogbm9uZQ0KfQ0KT0wgew0KCUxJ
U1QtU1RZTEUtVFlQRTogbm9uZTsgTElTVC1TVFlMRS1JTUFHRTogbm9uZQ0K
fQ0KUC5sZWZ0IHsNCglGTE9BVDogbGVmdA0KfQ0KUC5yaWdodCB7DQoJRkxP
QVQ6IHJpZ2h0DQp9DQpQLmltZ0xlZnQgew0KCU1BUkdJTjogMHB4IDEycHgg
MTJweCAwcHg7IEZMT0FUOiBsZWZ0OyBDTEVBUjogYm90aA0KfQ0KUC5pbWdS
aWdodCB7DQoJTUFSR0lOOiAwcHggMHB4IDEycHggMTJweDsgRkxPQVQ6IHJp
Z2h0OyBDTEVBUjogYm90aA0KfQ0KUC5pbWdQaWVuYSB7DQoJTUFSR0lOOiAx
MnB4IDBweDsgV0lEVEg6IDY4NXB4OyBCQUNLR1JPVU5EOiAjZjkwOyBGTE9B
VDogbGVmdDsgQ0xFQVI6ID0NCmJvdGgNCn0NClAuY2xyIHsNCglDTEVBUjog
Ym90aA0KfQ0KUC5wYXRoIHsNCglCT1JERVItQk9UVE9NOiAjOTk5IDFweCBz
b2xpZDsgUEFERElORy1UT1A6IDEwcHgNCn0NClAucGF0aCB7DQoJRElTUExB
WTogbm9uZQ0KfQ0KQUNST05ZTSB7DQoJQkFDS0dST1VORDogI2UyZTJlMjsg
Q09MT1I6ICMwMDMzNjY7IENVUlNPUjogaGVscA0KfQ0KI2NvbnRhaW5lciB7
DQoJUE9TSVRJT046IHJlbGF0aXZlOyBURVhULUFMSUdOOiBsZWZ0OyBNQVJH
SU46IDBweCBhdXRvOyBXSURUSDogOTcwcHgNCn0NCiNsb2dvIHsNCglXSURU
SDogMTM2cHg7IEJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvY3NzL2xvZ28uanBnKSA9DQpuby1yZXBlYXQgbGVmdCB0b3A7IEhFSUdI
VDogNzhweA0KfQ0KRElWLkhQUHJpdmF0aSB7DQoJTUFSR0lOLVRPUDogNDBw
eA0KfQ0KI21haW5JbWcgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBBRERJ
TkctTEVGVDogOHB4OyBXSURUSDogNjg1cHg7IFBBRERJTkctUklHSFQ6ID0N
CjBweDsgRkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCiNmb2N1
c0FyZWEgew0KCURJU1BMQVk6IG5vbmUNCn0NCiNzZWFyY2ggew0KCVBPU0lU
SU9OOiBhYnNvbHV0ZTsgV0lEVEg6IDE1MHB4OyBCQUNLR1JPVU5EOiA9DQp1
cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL3NlYXJjaC5naWYp
IG5vLXJlcGVhdCBsZWZ0IHRvcDsgPQ0KSEVJR0hUOiAzMHB4OyBUT1A6IDUw
cHg7IFJJR0hUOiAyNHB4DQp9DQpESVYuZmlyc3Qgew0KCVBPU0lUSU9OOiBh
YnNvbHV0ZTsgVEVYVC1BTElHTjogY2VudGVyOyBCQUNLR1JPVU5EOiAjZjlh
NzNiOyBUT1A6IDBweDsgPQ0KRk9OVC1XRUlHSFQ6IGJvbGQ7IExFRlQ6IDEz
OXB4DQp9DQpESVYuZmlyc3QgVUwgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7
IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgV0lEVEg6IDUxN3B4
OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybCho
dHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYmtnX3ZlcnRfc2VwLmdp
ZikgI2ZmZiBuby1yZXBlYXQgPQ0KcmlnaHQgdG9wOyBGTE9BVDogbGVmdDsg
UEFERElORy1UT1A6IDBweA0KfQ0KRElWLmZpcnN0IFVMIExJIHsNCglQQURE
SU5HLUJPVFRPTTogMHB4OyBMSVNULVNUWUxFLVRZUEU6IG5vbmU7IE1BUkdJ
TjogMHB4OyBQQURESU5HLUxFRlQ6ID0NCjBweDsgV0lEVEg6IDEyOXB4OyBQ
QURESU5HLVJJR0hUOiAwcHg7IEJBQ0tHUk9VTkQtUkVQRUFUOiBuby1yZXBl
YXQ7ID0NCkZMT0FUOiBsZWZ0OyBIRUlHSFQ6IDgwcHg7IENVUlNPUjogcG9p
bnRlcjsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLmZpcnN0IFVMIExJIEEg
ew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgQ09MT1I6ICNmZmYNCn0NCkRJVi5m
aXJzdCBVTCBMSS5sb2dvIElNRyB7DQoJV0lEVEg6IDExNXB4OyBESVNQTEFZ
OiBibG9jaw0KfQ0KRElWLmZpcnN0IFVMIExJIEEgew0KCVdJRFRIOiAxMjlw
eDsgRElTUExBWTogYmxvY2s7IEhFSUdIVDogODBweA0KfQ0KRElWLmZpcnN0
IFVMIExJLnByaXZhdGkgQSB7DQoJQkFDS0dST1VORDogdXJsKGh0dHA6Ly93
d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9wcml2YXRpLmdpZikgI2ZmZiBsZWZ0
ID0NCnRvcA0KfQ0KRElWLmZpcnN0IFVMIExJLmF6aWVuZGUgQSB7DQoJQkFD
S0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9h
emllbmRlLmdpZikgI2ZmZiBsZWZ0ID0NCnRvcA0KfQ0KRElWLmZpcnN0IFVM
IExJLmJhbmNoZSBBIHsNCglCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3dy5j
YXJ0YXNpLml0L0ltbWFnaW5pL2JhbmNoZS5naWYpICNmZmYgbGVmdCA9DQp0
b3ANCn0NCkRJVi5maXJzdCBVTCBMSS5lc2VyY2VudGkgQSB7DQoJQkFDS0dS
T1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9lc2Vy
Y2VudGkuZ2lmKSAjZmZmIGxlZnQgPQ0KdG9wDQp9DQpESVYuZmlyc3QgVUwg
TEkucHJpdmF0aV9hdHQgQSB7DQoJQkFDS0dST1VORC1JTUFHRTogdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9wcml2YXRpX2F0dC5naWYp
OyA9DQpDT0xPUjogI2Y5YTczYg0KfQ0KRElWLmZpcnN0IFVMIExJLmF6aWVu
ZGVfYXR0IEEgew0KCUJBQ0tHUk9VTkQtSU1BR0U6IHVybChodHRwOi8vd3d3
LmNhcnRhc2kuaXQvSW1tYWdpbmkvYXppZW5kZV9hdHQuZ2lmKTsgPQ0KQ09M
T1I6ICM3MmIyY2QNCn0NCkRJVi5maXJzdCBVTCBMSS5iYW5jaGVfYXR0IEEg
ew0KCUJBQ0tHUk9VTkQtSU1BR0U6IHVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvSW1tYWdpbmkvYmFuY2hlX2F0dC5naWYpOyA9DQpDT0xPUjogIzRkYzc1
OA0KfQ0KRElWLmZpcnN0IFVMIExJLmVzZXJjZW50aV9hdHQgQSB7DQoJQkFD
S0dST1VORC1JTUFHRTogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9J
bW1hZ2luaS9lc2VyY2VudGlfYXR0LmdpZik7IENPTE9SOiAjY2Y3YTdkDQp9
DQpESVYuZmlyc3QgVUwgTEkgQTpob3ZlciB7DQoJQkFDS0dST1VORC1QT1NJ
VElPTjogbGVmdCBib3R0b20NCn0NCiNtYWluTmF2IHsNCglQT1NJVElPTjog
YWJzb2x1dGU7IFdJRFRIOiA5NjlweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9vbWJyYU1lbnVUb3AuZ2lm
KSByZXBlYXQteCBsZWZ0IHRvcDsgPQ0KVE9QOiA3OHB4OyBMRUZUOiAwcHgN
Cn0NCkRJVi5zZWNvbmQgew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgVE9QOiA3
OHB4OyBMRUZUOiAwcHgNCn0NCkRJVi5zZWNvbmQgew0KCUJBQ0tHUk9VTkQ6
IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYmtnX3NlY29u
ZF9sZXZlbC5naWYpID0NCiNmZmYgcmVwZWF0LXgNCn0NCkRJVi5zZWNvbmQg
VUwgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURE
SU5HLUxFRlQ6IDBweDsgV0lEVEg6IDk3MHB4OyA9DQpQQURESU5HLVJJR0hU
OiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi5zZWNvbmQgVUwgTEkg
QSB7DQoJUEFERElORy1CT1RUT006IDEwcHg7IFBBRERJTkctTEVGVDogMTBw
eDsgUEFERElORy1SSUdIVDogMTBweDsgPQ0KRk9OVC1TSVpFOiAxMHB4OyBQ
QURESU5HLVRPUDogMTBweA0KfQ0KRElWLnNlY29uZCBVTCBMSSB7DQoJUEFE
RElORy1CT1RUT006IDBweDsgTElORS1IRUlHSFQ6IDM1cHg7IExJU1QtU1RZ
TEUtVFlQRTogbm9uZTsgTUFSR0lOOiA9DQowcHg7IFBBRERJTkctTEVGVDog
MHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybCho
dHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYmtnX3NlY29uZF9sZXZl
bC5naWYpICNmZmYgcmVwZWF0LXg7ID0NCkZMT0FUOiBsZWZ0OyBIRUlHSFQ6
IDM1cHg7IENVUlNPUjogcG9pbnRlcjsgRk9OVC1XRUlHSFQ6IGJvbGQ7ID0N
ClBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi5zZWNvbmQgVUwgTEkuYXR0IHsN
CglCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL2JrZ19zZWNvbmRfbGV2ZWxfYXR0LmdpZikgI2ZkZTNjMCA9DQpy
ZXBlYXQteA0KfQ0KRElWLnNlY29uZCBVTCBMSS5hdHRob3ZlciB7DQoJQkFD
S0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2lu
aS9ia2dfc2Vjb25kX2xldmVsX2F0dC5naWYpICNmZGUzYzAgPQ0KcmVwZWF0
LXgNCn0NCkRJVi5zZWNvbmQgVUwgTEkuYXR0aG92ZXIgQSB7DQoJQ09MT1I6
ICNmZmZmZmYNCn0NCkRJVi5zZWNvbmQgVUwgTEkuYXR0IEEgew0KCUNPTE9S
OiAjZmZmZmZmDQp9DQpESVYuc2Vjb25kIFVMIExJLmxhc3Qgew0KCVBBRERJ
TkctUklHSFQ6IDMwcHgNCn0NCkRJVi50aGlyZCB7DQoJUE9TSVRJT046IGFi
c29sdXRlOyBXSURUSDogOTcwcHg7IERJU1BMQVk6IG5vbmU7IEZPTlQtRkFN
SUxZOiA9DQoiVHJlYnVjaGV0IE1TIiwgVmVyZGFuYSwgR2VuZXZhLCBBcmlh
bCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9DQpCQUNLR1JPVU5EOiB1cmwo
aHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JrZ190aGlyZF9sZXZl
bC5naWYpID0NCm5vLXJlcGVhdDsgSEVJR0hUOiAxMTJweDsgVE9QOiAzNXB4
OyBMRUZUOiAwcHgNCn0NCkRJVi50aGlyZCBVTCB7DQoJVEVYVC1BTElHTjog
bGVmdDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJ
TkctTEVGVDogMHB4OyA9DQpXSURUSDogMTk0cHg7IFBBRERJTkctUklHSFQ6
IDBweDsgRkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi50
aGlyZCBVTCBMSSB7DQoJQkFDS0dST1VORC1JTUFHRTogbm9uZTsgUEFERElO
Ry1CT1RUT006IDBweDsgTElORS1IRUlHSFQ6IDE4cHg7ID0NCkJBQ0tHUk9V
TkQtQ09MT1I6IHRyYW5zcGFyZW50OyBNQVJHSU46IDBweDsgUEFERElORy1M
RUZUOiAwcHg7IFdJRFRIOiA9DQoxOTRweDsgUEFERElORy1SSUdIVDogMHB4
OyBGTE9BVDogbm9uZTsgSEVJR0hUOiAxOHB4OyBDT0xPUjogI2Y5YTczYjsg
PQ0KQ0xFQVI6IGJvdGg7IEZPTlQtU0laRTogMTJweDsgRk9OVC1XRUlHSFQ6
IG5vcm1hbDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnRoaXJkIFVMIExJ
IEEgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogOHB4
OyBXSURUSDogMTg2cHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRElTUExB
WTogYmxvY2s7IENPTE9SOiAjZjlhNzNiICFpbXBvcnRhbnQ7IEZPTlQtV0VJ
R0hUOiBub3JtYWw7ID0NClBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi50aGly
ZCBVTCBMSS5vbiB7DQoJQkFDS0dST1VORC1DT0xPUjogI2ZkZTNjMA0KfQ0K
RElWLnRoaXJkIFVMIExJLmFjdGl2ZSB7DQoJQkFDS0dST1VORC1DT0xPUjog
I2ZkZTNjMA0KfQ0KRElWLnRoaXJkIFVMIExJLmF0dCB7DQoJQkFDS0dST1VO
RC1DT0xPUjogI2ZkZTNjMA0KfQ0KRElWLnRoaXJkIFVMIExJIEEgew0KCUNP
TE9SOiAjZjkwDQp9DQpESVYudGhpcmQgVUwgTEkuYXR0IEEgew0KCUNPTE9S
OiAjZmZmDQp9DQpESVYudGhpcmQgVUwgTEkuYXR0aG92ZXIgQSB7DQoJQ09M
T1I6ICNmMDANCn0NCkRJVi50aGlyZCBVTCBMSS5sYXN0IEEgew0KCUNPTE9S
OiAjZjAwDQp9DQpESVYudGhpcmQgVUwgTEkgQTpob3ZlciB7DQoJQ09MT1I6
ICMwMDANCn0NCkRJVi50aGlyZCBVTCBMSS5hdHQgQTpob3ZlciB7DQoJQ09M
T1I6ICMwMDANCn0NCkRJVi50aGlyZCBVTCBMSS5hdHRob3ZlciBBOmhvdmVy
IHsNCglDT0xPUjogIzAwMA0KfQ0KRElWLnRoaXJkIFVMIExJLmxhc3QgQTpo
b3ZlciB7DQoJQ09MT1I6ICMwMDANCn0NCkRJVi50aGlyZCBVTC5mb3VydGgg
ew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgUEFERElORy1CT1RUT006IDBweDsg
TUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogPQ0KMHB4OyBXSURUSDogMTk0
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExBWTogbm9uZTsgQkFDS0dS
T1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9i
a2dfZm91cnRoX2xldmVsLmdpZikgbm8tcmVwZWF0OyA9DQpIRUlHSFQ6IDEx
MnB4OyBUT1A6IDBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnRoaXJk
IFVMLmZvdXJ0aCBMSS5hdHQgew0KCUJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5z
cGFyZW50OyBGT05ULVdFSUdIVDogYm9sZA0KfQ0KRElWLnRoaXJkIFVMLmZv
dXJ0aCBMSS5vbiB7DQoJQkFDS0dST1VORC1DT0xPUjogI2ZmZg0KfQ0KRElW
LnRoaXJkIFVMLmZvdXJ0aCBMSS5hY3RpdmUgew0KCUJBQ0tHUk9VTkQtQ09M
T1I6ICNmZmYNCn0NCkxJLm5vdGhpcmRTZWxlY3Rvcjpob3ZlciB7DQoJQkFD
S0dST1VORC1DT0xPUjogI2ZkZTNjMA0KfQ0KTEkudGhpcmRTZWxlY3RvciBB
OmhvdmVyIHsNCglCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNp
Lml0L0ltbWFnaW5pL2ZyZWNjaW5hLW1lbnUuZ2lmKSA9DQpuby1yZXBlYXQg
cmlnaHQgY2VudGVyDQp9DQpMSS5mb3VydGhTZWxlY3RvciBBOmhvdmVyIHsN
CglCQUNLR1JPVU5EOiBub25lIHRyYW5zcGFyZW50IHNjcm9sbCByZXBlYXQg
MCUgMCUNCn0NCiN0b3BOYXYgew0KCVRFWFQtQUxJR046IHJpZ2h0OyBNQVJH
SU4tVE9QOiAwcHg7IFdJRFRIOiA5NDhweDsgRkxPQVQ6IHJpZ2h0OyA9DQpC
T1JERVItVE9QOiBzaWx2ZXIgMXB4IHNvbGlkOyBNQVJHSU4tUklHSFQ6IDEy
cHggIWltcG9ydGFudA0KfQ0KI3RvcE5hdiBVTCB7DQoJRkxPQVQ6IHJpZ2h0
OyBNQVJHSU4tUklHSFQ6IDJweCAhaW1wb3J0YW50DQp9DQojdG9wTmF2IFVM
IExJIHsNCglURVhULUFMSUdOOiBjZW50ZXI7IERJU1BMQVk6IGlubGluZQ0K
fQ0KI3RvcE5hdiBBIHsNCglQQURESU5HLUJPVFRPTTogMC4yZW07IE1BUkdJ
Ti1UT1A6IDZweDsgUEFERElORy1MRUZUOiAxLjZlbTsgPQ0KUEFERElORy1S
SUdIVDogMS42ZW07IERJU1BMQVk6IGJsb2NrOyBGTE9BVDogbGVmdDsgQ09M
T1I6ICNhYWE7ID0NCkZPTlQtV0VJR0hUOiBub3JtYWw7IFRFWFQtREVDT1JB
VElPTjogbm9uZTsgUEFERElORy1UT1A6IDAuMmVtDQp9DQojdG9wTmF2IEE6
bGluayB7DQoJUEFERElORy1CT1RUT006IDAuMmVtOyBNQVJHSU4tVE9QOiA2
cHg7IFBBRERJTkctTEVGVDogMS42ZW07ID0NClBBRERJTkctUklHSFQ6IDEu
NmVtOyBESVNQTEFZOiBibG9jazsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAjYWFh
OyA9DQpGT05ULVdFSUdIVDogbm9ybWFsOyBURVhULURFQ09SQVRJT046IG5v
bmU7IFBBRERJTkctVE9QOiAwLjJlbQ0KfQ0KI3RvcE5hdiBBOnZpc2l0ZWQg
ew0KCVBBRERJTkctQk9UVE9NOiAwLjJlbTsgTUFSR0lOLVRPUDogNnB4OyBQ
QURESU5HLUxFRlQ6IDEuNmVtOyA9DQpQQURESU5HLVJJR0hUOiAxLjZlbTsg
RElTUExBWTogYmxvY2s7IEZMT0FUOiBsZWZ0OyBDT0xPUjogI2FhYTsgPQ0K
Rk9OVC1XRUlHSFQ6IG5vcm1hbDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQ
QURESU5HLVRPUDogMC4yZW0NCn0NCiN0b3BOYXYgQTpob3ZlciB7DQoJQ09M
T1I6ICM2NjYNCn0NCiN0b3BOYXYgQTphY3RpdmUgew0KCUNPTE9SOiAjNjY2
DQp9DQojdG9wTmF2IExJIFVMIHsNCglQT1NJVElPTjogYWJzb2x1dGUNCn0N
CiN0b3BOYXYgTEkgTEkgew0KCURJU1BMQVk6IG5vbmUNCn0NCiN0b3BOYXYg
UCB7DQoJVEVYVC1BTElHTjogbGVmdDsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAj
YWFhDQp9DQojZm9vdGVySW50IHsNCglURVhULUFMSUdOOiBsZWZ0OyBNQVJH
SU46IC0yMHB4IDBweCAwcHggOHB4OyBXSURUSDogMzA4cHg7IERJU1BMQVk6
ID0NCm5vbmU7IEZMT0FUOiBsZWZ0OyBDT0xPUjogI2FhYTsgQk9SREVSLVRP
UDogc2lsdmVyIDFweCBzb2xpZA0KfQ0KI2Zvb3RlciB7DQoJVEVYVC1BTElH
TjogbGVmdDsgTUFSR0lOOiAtMjBweCAwcHggMHB4IDhweDsgV0lEVEg6IDMw
OHB4OyBESVNQTEFZOiA9DQpub25lOyBGTE9BVDogbGVmdDsgQ09MT1I6ICNh
YWE7IEJPUkRFUi1UT1A6IHNpbHZlciAxcHggc29saWQNCn0NCiNmb290ZXJJ
bnQgUCB7DQoJQ09MT1I6ICM5OTk7IEZPTlQtU0laRTogMTBweA0KfQ0KI2Zv
b3RlciBQIHsNCglDT0xPUjogIzk5OTsgRk9OVC1TSVpFOiAxMHB4DQp9DQoj
cGFubmVsbG9Nb3ZlT24gew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgVE9QOiAx
MThweDsgTEVGVDogNzA0cHgNCn0NCiNwYW5uZWxsb01vdmVPbkhQIHsNCglN
QVJHSU46IDQycHggMHB4IDBweCA2cHg7IEZMT0FUOiBsZWZ0DQp9DQojcGFu
bmVsbG9Nb3ZlT24gSDMgew0KCVBBRERJTkctQk9UVE9NOiA2cHg7IE1BUkdJ
Ti1UT1A6IDBweDsgUEFERElORy1MRUZUOiAxMHB4OyA9DQpQQURESU5HLVJJ
R0hUOiAwcHg7IENPTE9SOiAjZjlhNzNiOyBGT05ULVNJWkU6IDEycHg7IEZP
TlQtV0VJR0hUOiBib2xkOyA9DQpQQURESU5HLVRPUDogMTBweA0KfQ0KI3Bh
bm5lbGxvTW92ZU9uIEgzIEEgew0KCVBBRERJTkctQk9UVE9NOiA2cHg7IE1B
UkdJTi1UT1A6IDBweDsgUEFERElORy1MRUZUOiAxMHB4OyA9DQpQQURESU5H
LVJJR0hUOiAwcHg7IENPTE9SOiAjZjlhNzNiOyBGT05ULVNJWkU6IDEycHg7
IEZPTlQtV0VJR0hUOiBib2xkOyA9DQpQQURESU5HLVRPUDogMTBweA0KfQ0K
I3Bhbm5lbGxvTW92ZU9uSFAgSDMgew0KCVBBRERJTkctQk9UVE9NOiA2cHg7
IE1BUkdJTi1UT1A6IDBweDsgUEFERElORy1MRUZUOiAxMHB4OyA9DQpQQURE
SU5HLVJJR0hUOiAwcHg7IENPTE9SOiAjZjlhNzNiOyBGT05ULVNJWkU6IDEy
cHg7IEZPTlQtV0VJR0hUOiBib2xkOyA9DQpQQURESU5HLVRPUDogMTBweA0K
fQ0KI3Bhbm5lbGxvTW92ZU9uSFAgSDMgQSB7DQoJQ09MT1I6ICNmOWE3M2I7
IEZPTlQtU0laRTogMTJweDsgRk9OVC1XRUlHSFQ6IGJvbGQNCn0NCiNwYW5u
ZWxsb01vdmVPbiAjYWNjZXNzbyB7DQoJV0lEVEg6IDI2MXB4OyBCQUNLR1JP
VU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2N1
cnZhUGFubmVsbG8uZ2lmKSBuby1yZXBlYXQgcmlnaHQgPQ0KdG9wDQp9DQoj
cGFubmVsbG9Nb3ZlT24gI21vdmVPbiB7DQoJV0lEVEg6IDI2MXB4OyBCQUNL
R1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5p
L2N1cnZhUGFubmVsbG8uZ2lmKSBuby1yZXBlYXQgcmlnaHQgPQ0KdG9wDQp9
DQojcGFubmVsbG9Nb3ZlT25IUCAjYWNjZXNzbyB7DQoJV0lEVEg6IDI2MXB4
OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL2N1cnZhUGFubmVsbG8uZ2lmKSBuby1yZXBlYXQgcmlnaHQgPQ0K
dG9wDQp9DQojcGFubmVsbG9Nb3ZlT25IUCAjbW92ZU9uIHsNCglXSURUSDog
MjYxcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvSW1tYWdpbmkvY3VydmFQYW5uZWxsby5naWYpIG5vLXJlcGVhdCByaWdo
dCA9DQp0b3ANCn0NCiNwYW5uZWxsb01vdmVPbkhQICNhY2Nlc3NvIHsNCglQ
QURESU5HLUJPVFRPTTogNXB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZU
OiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgUEFERElORy1UT1A6IDVw
eA0KfQ0KI3Bhbm5lbGxvTW92ZU9uIFVMLmFjY2Vzc29QYW5uZWxsbyB7DQoJ
UEFERElORy1CT1RUT006IDZweDsgTElTVC1TVFlMRS1UWVBFOiBub25lOyBN
QVJHSU46IDBweCAwcHggMHB4IDFlbTsgPQ0KUEFERElORy1MRUZUOiAwcHg7
IFBBRERJTkctUklHSFQ6IDBweDsgTElTVC1TVFlMRS1JTUFHRTogbm9uZTsg
PQ0KUEFERElORy1UT1A6IDBweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgVUwu
YWNjZXNzb1Bhbm5lbGxvIHsNCglQQURESU5HLUJPVFRPTTogNnB4OyBMSVNU
LVNUWUxFLVRZUEU6IG5vbmU7IE1BUkdJTjogMHB4IDBweCAwcHggMWVtOyA9
DQpQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBMSVNU
LVNUWUxFLUlNQUdFOiBub25lOyA9DQpQQURESU5HLVRPUDogMHB4DQp9DQoj
cGFubmVsbG9Nb3ZlT24gVUwuYWNjZXNzb1Bhbm5lbGxvIExJIHsNCglNQVJH
SU46IDNweCAwcHggMnB4OyBXSURUSDogMjExcHg7IERJU1BMQVk6IGJsb2Nr
OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL2lucHV0TG9naW4uZ2lmKSBuby1yZXBlYXQgbGVmdCB0b3A7ID0N
CkhFSUdIVDogMjlweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgVUwuYWNjZXNz
b1Bhbm5lbGxvIExJIHsNCglNQVJHSU46IDNweCAwcHggMnB4OyBXSURUSDog
MjExcHg7IERJU1BMQVk6IGJsb2NrOyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2lucHV0TG9naW4uZ2lmKSBu
by1yZXBlYXQgbGVmdCB0b3A7ID0NCkhFSUdIVDogMjlweA0KfQ0KI3Bhbm5l
bGxvTW92ZU9uIFVMLmFjY2Vzc29QYW5uZWxsbyBMSSBBIHsNCglQQURESU5H
LUJPVFRPTTogMTJweDsgUEFERElORy1MRUZUOiAxMnB4OyBQQURESU5HLVJJ
R0hUOiAxMnB4OyBDT0xPUjogPQ0KI2Y5YTczYjsgRk9OVC1TSVpFOiAxMHB4
OyBGT05ULVdFSUdIVDogYm9sZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyA9
DQpQQURESU5HLVRPUDogMTJweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgVUwu
YWNjZXNzb1Bhbm5lbGxvIExJIEEgew0KCVBBRERJTkctQk9UVE9NOiAxMnB4
OyBQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkctUklHSFQ6IDEycHg7IENP
TE9SOiA9DQojZjlhNzNiOyBGT05ULVNJWkU6IDEwcHg7IEZPTlQtV0VJR0hU
OiBib2xkOyBURVhULURFQ09SQVRJT046IG5vbmU7ID0NClBBRERJTkctVE9Q
OiAxMnB4DQp9DQojcGFubmVsbG9Nb3ZlT24gVUwuYWNjZXNzb1Bhbm5lbGxv
IExJIEE6aG92ZXIgew0KCVRFWFQtREVDT1JBVElPTjogdW5kZXJsaW5lDQp9
DQojcGFubmVsbG9Nb3ZlT25IUCBVTC5hY2Nlc3NvUGFubmVsbG8gTEkgQTpo
b3ZlciB7DQoJVEVYVC1ERUNPUkFUSU9OOiB1bmRlcmxpbmUNCn0NCiNwYW5u
ZWxsb01vdmVPbiAjYWNjZXNzbyBIMyB7DQoJUEFERElORy1CT1RUT006IDZw
eDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogOXB4OyBQQURESU5HLVJJ
R0hUOiA9DQo2cHg7IFBBRERJTkctVE9QOiA2cHgNCn0NCiNwYW5uZWxsb01v
dmVPbkhQICNhY2Nlc3NvIEgzIHsNCglQQURESU5HLUJPVFRPTTogNnB4OyBN
QVJHSU46IDBweDsgUEFERElORy1MRUZUOiA5cHg7IFBBRERJTkctUklHSFQ6
ID0NCjZweDsgUEFERElORy1UT1A6IDZweA0KfQ0KI3Bhbm5lbGxvTW92ZU9u
ICNtb3ZlT24gUCB7DQoJUEFERElORy1CT1RUT006IDRweDsgTUFSR0lOOiAw
cHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7
IFBBRERJTkctVE9QOiAycHgNCn0NCiNwYW5uZWxsb01vdmVPbkhQICNtb3Zl
T24gUCB7DQoJUEFERElORy1CT1RUT006IDRweDsgTUFSR0lOOiAwcHg7IFBB
RERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IFBBRERJ
TkctVE9QOiAycHgNCn0NCiNwYW5uZWxsb01vdmVPbiAjbW92ZU9uIElNRyB7
DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAtOHB4IDBweCAwcHgg
MnB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4
OyBQQURESU5HLVRPUDogMHB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCAjbW92
ZU9uIElNRyB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAtOHB4
IDBweCAwcHggMnB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElORy1S
SUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQojcGFubmVsbG9Nb3Zl
T25IUCBESVYuYmFzaWMgew0KCU1BUkdJTjogMHB4DQp9DQojcGFubmVsbG9N
b3ZlT25IUCBESVYuYmFzaWMgQSB7DQoJQ09MT1I6ICM5OTk7IEZPTlQtV0VJ
R0hUOiBub3JtYWw7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KI3Bhbm5l
bGxvTW92ZU9uSFAgRElWLmJhc2ljIEE6aG92ZXIgew0KCVRFWFQtREVDT1JB
VElPTjogdW5kZXJsaW5lDQp9DQojcGFubmVsbG9Nb3ZlT24gI21vdmVPbiBQ
IEEgSU1HIHsNCglNQVJHSU4tVE9QOiAtMTFweA0KfQ0KI3Bhbm5lbGxvTW92
ZU9uSFAgI2FjY2Vzc28gUCB7DQoJVEVYVC1BTElHTjoganVzdGlmeTsgUEFE
RElORy1CT1RUT006IDAuNmVtOyBQQURESU5HLUxFRlQ6IDFlbTsgPQ0KUEFE
RElORy1SSUdIVDogMWVtOyBQQURESU5HLVRPUDogMC42ZW0NCn0NCiNwYW5u
ZWxsb01vdmVPbkhQICNtb3ZlT24gSDMgew0KCVBBRERJTkctQk9UVE9NOiAx
MnB4OyBURVhULVRSQU5TRk9STTogbG93ZXJjYXNlOyBNQVJHSU46IDBweDsg
PQ0KUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgUEFE
RElORy1UT1A6IDRweA0KfQ0KLmJhc2ljIEg0IHsNCglQQURESU5HLUJPVFRP
TTogNnB4OyBQQURESU5HLUxFRlQ6IDZweDsgUEFERElORy1SSUdIVDogNnB4
OyBESVNQTEFZOiA9DQpibG9jazsgQkFDS0dST1VORDogdXJsKGh0dHA6Ly93
d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxvLmdpZikgPQ0K
bm8tcmVwZWF0IHJpZ2h0IHRvcDsgRk9OVC1TSVpFOiAxMXB4OyBDVVJTT1I6
IHBvaW50ZXI7IEZPTlQtV0VJR0hUOiA9DQpib2xkOyBQQURESU5HLVRPUDog
NnB4DQp9DQpESVYjY29sRHggUC5wZGYgew0KCVBBRERJTkctQk9UVE9NOiA2
cHg7IFBBRERJTkctTEVGVDogNnB4OyBQQURESU5HLVJJR0hUOiA2cHg7IERJ
U1BMQVk6ID0NCmJsb2NrOyBCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3dy5j
YXJ0YXNpLml0L0ltbWFnaW5pL2N1cnZhUGFubmVsbG8uZ2lmKSA9DQpuby1y
ZXBlYXQgcmlnaHQgdG9wOyBGT05ULVNJWkU6IDExcHg7IENVUlNPUjogcG9p
bnRlcjsgRk9OVC1XRUlHSFQ6ID0NCmJvbGQ7IFBBRERJTkctVE9QOiA2cHgN
Cn0NCkRJViNjb2xEeCBQLmFkb2JlUmVhZGVyIHsNCglQQURESU5HLUJPVFRP
TTogNnB4OyBQQURESU5HLUxFRlQ6IDZweDsgUEFERElORy1SSUdIVDogNnB4
OyBESVNQTEFZOiA9DQpibG9jazsgQkFDS0dST1VORDogdXJsKGh0dHA6Ly93
d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxvLmdpZikgPQ0K
bm8tcmVwZWF0IHJpZ2h0IHRvcDsgRk9OVC1TSVpFOiAxMXB4OyBDVVJTT1I6
IHBvaW50ZXI7IEZPTlQtV0VJR0hUOiA9DQpib2xkOyBQQURESU5HLVRPUDog
NnB4DQp9DQpESVYjY29sRHggUC5wZGYgew0KCUNPTE9SOiAjZjlhNzNiDQp9
DQpESVYjY29sRHggUC5hZG9iZVJlYWRlciB7DQoJQ09MT1I6ICNmOWE3M2IN
Cn0NCi5iYXNpYyBQIHsNCglURVhULUFMSUdOOiBqdXN0aWZ5OyBQQURESU5H
LUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDZweDsgV0lEVEg6ID0NCjIz
OHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IENPTE9SOiAjOTk5OyBGT05ULVNJ
WkU6IDExcHg7IFBBRERJTkctVE9QOiA9DQowcHgNCn0NCi5iYXNpYyBESVYg
ew0KCUJBQ0tHUk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVh
dCAwJSAwJTsgSEVJR0hUOiA5NnB4OyA9DQpCT1JERVItUklHSFQ6ICNmOWE3
M2IgMXB4IHNvbGlkDQp9DQojbGlzdDFiIERJViB7DQo9MDkNCn0NCiNsaXN0
MWIgSDQgew0KCUJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvSW1tYWdpbmkvY3VydmFQYW5uZWxsbzIuZ2lmKSAjZmZmID0NCm5vLXJl
cGVhdCByaWdodCB0b3ANCn0NCiNsaXN0MWIgRElWIFAgew0KCUJPUkRFUi1C
T1RUT006IG1lZGl1bSBub25lOyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7
IFdJRFRIOiBhdXRvOyA9DQpCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgQk9S
REVSLVJJR0hUOiBtZWRpdW0gbm9uZQ0KfQ0KI2xpc3QxYiBESVYgTEkgew0K
CVdJRFRIOiA1OTBweA0KfQ0KRElWI2NvbER4IHsNCglNQVJHSU46IDMxMHB4
IDRweCAwcHggMHB4OyBXSURUSDogMjU3cHg7IEJBQ0tHUk9VTkQ6ID0NCnVy
bChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvY3VydmFQYW5uZWxs
by5naWYpIG5vLXJlcGVhdCByaWdodCA9DQp0b3A7IEZMT0FUOiByaWdodDsg
Q09MT1I6ICM1MDUwNTANCn0NCkRJViNjb2xEeCBBIHsNCglURVhULURFQ09S
QVRJT046IG5vbmUNCn0NCkRJViNjb2xEeCBQLmFkb2JlUmVhZGVyIHsNCglC
QUNLR1JPVU5EOiBub25lIHRyYW5zcGFyZW50IHNjcm9sbCByZXBlYXQgMCUg
MCUNCn0NCkRJViNjb2xEeCBQLmFkb2JlUmVhZGVyIHsNCglQQURESU5HLUJP
VFRPTTogOHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7IFBBRERJTkctUklHSFQ6
IDEwcHg7ID0NCkZPTlQtU0laRTogMWVtOyBGT05ULVdFSUdIVDogNzAwOyBQ
QURESU5HLVRPUDogOHB4DQp9DQpESVYjY29sRHggUC5hZG9iZVJlYWRlciBB
OmhvdmVyIHsNCglDT0xPUjogIzk5OQ0KfQ0KRElWI2NvbER4IFVMLnNjaGVk
YVByb2RvdHRvIHsNCglURVhULUFMSUdOOiBsZWZ0OyBMSVNULVNUWUxFLVRZ
UEU6IG5vbmU7IE1BUkdJTjogMHB4OyBDT0xPUjogIzk5OTsgPQ0KRk9OVC1T
SVpFOiAxZW07IExJU1QtU1RZTEUtSU1BR0U6IG5vbmUNCn0NCkRJViNjb2xE
eCBVTC5zY2hlZGFQcm9kb3R0byBMSSB7DQoJUEFERElORy1CT1RUT006IDBw
eDsgUEFERElORy1MRUZUOiAxMnB4OyBQQURESU5HLVJJR0hUOiAwcHg7ID0N
ClBBRERJTkctVE9QOiA2cHgNCn0NCkRJViNjb2xEeCBVTC5zY2hlZGFQcm9k
b3R0byBMSSBBIHsNCglCT1JERVItQk9UVE9NOiAjY2NjIDFweCBkYXNoZWQ7
IFBBRERJTkctQk9UVE9NOiAxMnB4OyBQQURESU5HLUxFRlQ6ID0NCjM4cHg7
IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExBWTogYmxvY2s7IEJBQ0tHUk9V
TkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYWNy
b2JhdFJlYWRlci5naWYpIG5vLXJlcGVhdCBsZWZ0ID0NCnRvcDsgQ09MT1I6
ICM2NjY7IEZPTlQtU0laRTogOXB4OyBURVhULURFQ09SQVRJT046IG5vbmU7
IFBBRERJTkctVE9QOiA9DQo4cHgNCn0NCkRJViNjb2xEeCBVTC5zY2hlZGFQ
cm9kb3R0byBMSSBBOmhvdmVyIHsNCglDT0xPUjogI2Y5YTczYjsgVEVYVC1E
RUNPUkFUSU9OOiB1bmRlcmxpbmUNCn0NCiNjb250ZW51dGkgew0KCVBBRERJ
TkctQk9UVE9NOiAwcHg7IE1BUkdJTi1UT1A6IDMycHg7IFBBRERJTkctTEVG
VDogMThweDsgV0lEVEg6ID0NCjY3NXB4OyBQQURESU5HLVJJR0hUOiAwcHg7
IEZMT0FUOiBsZWZ0OyBQQURESU5HLVRPUDogMHB4DQp9DQojY29udGVudXRp
MSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOLVRPUDogMzJweDsg
UEFERElORy1MRUZUOiAxOHB4OyBXSURUSDogPQ0KNjc1cHg7IFBBRERJTkct
UklHSFQ6IDBweDsgRkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0N
CiNjb250ZW51dGkyIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU4t
VE9QOiAzMnB4OyBQQURESU5HLUxFRlQ6IDE4cHg7IFdJRFRIOiA9DQo2NzVw
eDsgUEFERElORy1SSUdIVDogMHB4OyBGTE9BVDogbGVmdDsgUEFERElORy1U
T1A6IDBweA0KfQ0KI2NvbnRlbnV0aSBVTCB7DQoJTElTVC1TVFlMRS1UWVBF
OiBkaXNjOyBNQVJHSU46IDFlbSAwcHggMWVtIDJlbQ0KfQ0KI2NvbnRlbnV0
aTEgVUwgew0KCUxJU1QtU1RZTEUtVFlQRTogZGlzYzsgTUFSR0lOOiAxZW0g
MHB4IDFlbSAyZW0NCn0NCiNjb250ZW51dGkyIFVMIHsNCglMSVNULVNUWUxF
LVRZUEU6IGRpc2M7IE1BUkdJTjogMWVtIDBweCAxZW0gMmVtDQp9DQojY29u
dGVudXRpIC5yaWdodCB7DQoJTUFSR0lOOiAtNGVtIC0xZW0gMHB4IDJlbTsg
RkxPQVQ6IHJpZ2h0DQp9DQojY29udGVudXRpMSAucmlnaHQgew0KCU1BUkdJ
TjogLTRlbSAtMWVtIDBweCAyZW07IEZMT0FUOiByaWdodA0KfQ0KI2NvbnRl
bnV0aTIgLnJpZ2h0IHsNCglNQVJHSU46IC00ZW0gLTFlbSAwcHggMmVtOyBG
TE9BVDogcmlnaHQNCn0NCkRJViNjb250ZW51dGkgVUwgew0KCUxJU1QtU1RZ
TEUtSU1BR0U6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkv
ZnJlY2NpbmEtcHIuZ2lmKQ0KfQ0KRElWI2NvbnRlbnV0aTEgVUwgew0KCUxJ
U1QtU1RZTEUtSU1BR0U6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvZnJlY2NpbmEtcHIuZ2lmKQ0KfQ0KRElWI2NvbnRlbnV0aTIgVUwg
ew0KCUxJU1QtU1RZTEUtSU1BR0U6IHVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvSW1tYWdpbmkvZnJlY2NpbmEtcHIuZ2lmKQ0KfQ0KRElWI2NvbnRhdHRh
Y2kgew0KCUJPUkRFUi1CT1RUT006ICM2NjYgMXB4IHNvbGlkOyBCT1JERVIt
TEVGVDogIzY2NiAxcHggc29saWQ7IFdJRFRIOiA9DQoxODBweDsgRkxPQVQ6
IHJpZ2h0OyBCT1JERVItVE9QOiAjNjY2IDFweCBzb2xpZDsgQk9SREVSLVJJ
R0hUOiAjNjY2IDFweCA9DQpzb2xpZA0KfQ0KI2NvbnRhaW5lciAucHVsc2Fu
dGVSb3NzbyB7DQoJVEVYVC1BTElHTjogbGVmdDsgTElORS1IRUlHSFQ6IDM0
cHg7IFBBRERJTkctTEVGVDogMTBweDsgV0lEVEg6IDE0MnB4OyA9DQpESVNQ
TEFZOiBibG9jazsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9JbW1hZ2luaS9wdWxzYW50ZVJvc3NvLmdpZikgbm8tcmVwZWF0
OyBIRUlHSFQ6ID0NCjM4cHg7IENPTE9SOiAjZmZmOyBWRVJUSUNBTC1BTElH
TjogbWlkZGxlOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCiNjb250YWlu
ZXIgLnB1bHNhbnRlQXJhbmNpbyB7DQoJVEVYVC1BTElHTjogbGVmdDsgTElO
RS1IRUlHSFQ6IDM0cHg7IFBBRERJTkctTEVGVDogMTBweDsgV0lEVEg6IDE0
MnB4OyA9DQpESVNQTEFZOiBibG9jazsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9wdWxzYW50ZVJvc3NvLmdp
Zikgbm8tcmVwZWF0OyBIRUlHSFQ6ID0NCjM4cHg7IENPTE9SOiAjZmZmOyBW
RVJUSUNBTC1BTElHTjogbWlkZGxlOyBURVhULURFQ09SQVRJT046IG5vbmUN
Cn0NCiNjb250YWluZXIgLnB1bHNhbnRlVmVyZGUgew0KCVRFWFQtQUxJR046
IGxlZnQ7IExJTkUtSEVJR0hUOiAzNHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7
IFdJRFRIOiAxNDJweDsgPQ0KRElTUExBWTogYmxvY2s7IEJBQ0tHUk9VTkQ6
ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvcHVsc2Fu
dGVSb3Nzby5naWYpIG5vLXJlcGVhdDsgSEVJR0hUOiA9DQozOHB4OyBDT0xP
UjogI2ZmZjsgVkVSVElDQUwtQUxJR046IG1pZGRsZTsgVEVYVC1ERUNPUkFU
SU9OOiBub25lDQp9DQojY29udGFpbmVyIC5wdWxzYW50ZUF6enVycm8gew0K
CVRFWFQtQUxJR046IGxlZnQ7IExJTkUtSEVJR0hUOiAzNHB4OyBQQURESU5H
LUxFRlQ6IDEwcHg7IFdJRFRIOiAxNDJweDsgPQ0KRElTUExBWTogYmxvY2s7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvcHVsc2FudGVSb3Nzby5naWYpIG5vLXJlcGVhdDsgSEVJR0hUOiA9
DQozOHB4OyBDT0xPUjogI2ZmZjsgVkVSVElDQUwtQUxJR046IG1pZGRsZTsg
VEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQojY29udGFpbmVyIC5wdWxzYW50
ZUFyYW5jaW8gew0KCUJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRh
c2kuaXQvSW1tYWdpbmkvcHVsc2FudGVBcmFuY2lvLmdpZikgPQ0Kbm8tcmVw
ZWF0DQp9DQojY29udGFpbmVyIC5wdWxzYW50ZVZlcmRlIHsNCglCQUNLR1JP
VU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL3B1bHNh
bnRlVmVyZGUuZ2lmKSA9DQpuby1yZXBlYXQNCn0NCiNjb250YWluZXIgLnB1
bHNhbnRlQXp6dXJybyB7DQoJQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cu
Y2FydGFzaS5pdC9JbW1hZ2luaS9wdWxzYW50ZUF6enVycm8uZ2lmKSA9DQpu
by1yZXBlYXQNCn0NCkRJVi52aWFJbnRlcm5ldCB7DQoJV0lEVEg6IDY0MHB4
OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL2FkZXJpc2NpSW50ZXJuZXQuanBnKSBuby1yZXBlYXQgbGVmdCA9
DQp0b3A7IEhFSUdIVDogMTEwcHgNCn0NCkRJVi52aWFUZWxlZm9ubyB7DQoJ
V0lEVEg6IDQ4MHB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5j
YXJ0YXNpLml0L0ltbWFnaW5pL2FkZXJpc2NpVGVsZWZvbm8uanBnKSBuby1y
ZXBlYXQgbGVmdCA9DQp0b3A7IEhFSUdIVDogMTEwcHgNCn0NCiNjb250YWlu
ZXIgRElWLnZpYUludGVybmV0IEgzIHsNCglQQURESU5HLUxFRlQ6IDEzMnB4
OyBGT05ULUZBTUlMWTogIlRyZWJ1Y2hldCBNUyIsIFZlcmRhbmEsIEFyaWFs
LCA9DQpzYW5zLXNlcmlmOyBGT05ULVNJWkU6IDE4cHgNCn0NCiNjb250YWlu
ZXIgRElWLnZpYVRlbGVmb25vIEgzIHsNCglQQURESU5HLUxFRlQ6IDEzMnB4
OyBGT05ULUZBTUlMWTogIlRyZWJ1Y2hldCBNUyIsIFZlcmRhbmEsIEFyaWFs
LCA9DQpzYW5zLXNlcmlmOyBGT05ULVNJWkU6IDE4cHgNCn0NCkRJVi52aWFJ
bnRlcm5ldCBIMyBTUEFOIHsNCglDT0xPUjogIzA2Zg0KfQ0KRElWLnZpYVRl
bGVmb25vIEgzIFNQQU4gew0KCUNPTE9SOiAjMDZmDQp9DQpESVYudmlhSW50
ZXJuZXQgUCB7DQoJTUFSR0lOLUxFRlQ6IDEzMnB4DQp9DQpESVYudmlhVGVs
ZWZvbm8gUCB7DQoJTUFSR0lOLUxFRlQ6IDEzMnB4DQp9DQpESVYjY29udGFp
bmVyIERJVi5jbHViSW9zaSBVTCB7DQoJTUFSR0lOOiAxMnB4DQp9DQpVTC5j
c2lSaXNwb25kZSB7DQoJTElTVC1TVFlMRS1UWVBFOiBkaXNjOyBMSVNULVNU
WUxFLUlNQUdFOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFn
aW5pL2RvbWFuZGVfcmlzcG9zdGUvZnJlY2NpbmEuZ2lmKQ0KfQ0KRElWI2Nv
bnRhaW5lciBVTC5tZW51Q2FydGEgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7
IExJU1QtU1RZTEUtVFlQRTogbm9uZTsgTUFSR0lOOiAwcHggMHB4IDJlbTsg
PQ0KUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgTElT
VC1TVFlMRS1JTUFHRTogbm9uZTsgPQ0KUEFERElORy1UT1A6IDBweA0KfQ0K
RElWI2NvbnRhaW5lciBVTC5tZW51Q2FydGEgTEkgew0KCVBBRERJTkctQk9U
VE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFE
RElORy1SSUdIVDogPQ0KMHB4OyBESVNQTEFZOiBpbmxpbmU7IFBBRERJTkct
VE9QOiAwcHgNCn0NCkRJViNjb250YWluZXIgVUwubWVudUNhcnRhIExJIHsN
CglGT05ULVdFSUdIVDogNzAwOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0N
ClVMLm1lbnVDYXJ0YSBMSSBBIHsNCglGT05ULVdFSUdIVDogNzAwOyBURVhU
LURFQ09SQVRJT046IG5vbmUNCn0NCkRJViNjb250YWluZXIgVUwubWVudUNh
cnRhIExJIEEgew0KCVBBRERJTkctQk9UVE9NOiA2cHg7IFBBRERJTkctTEVG
VDogNnB4OyBQQURESU5HLVJJR0hUOiA2cHg7ID0NClBBRERJTkctVE9QOiA2
cHgNCn0NCkRJViNjb250YWluZXIgVUwubWVudUNhcnRhIExJIEEjcHJlc2Vu
dGF6aW9uZSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7
IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IFBB
RERJTkctVE9QOiAwcHgNCn0NCi52YW50YWdnaUNhcnRhIHsNCglNQVJHSU4t
TEVGVDogMWVtDQp9DQoudmVyc2lvbmlDYXJ0YSB7DQoJTUFSR0lOLUxFRlQ6
IDFlbQ0KfQ0KLnF1b3RlQ2FydGEgew0KCU1BUkdJTi1MRUZUOiAxZW0NCn0N
Ci5pbmZvQ2FydGEgew0KCU1BUkdJTi1MRUZUOiAxZW0NCn0NCi5pbmZvQ2Fy
dGEgVUwgew0KCU1BUkdJTjogMHB4DQp9DQpESVYuZXNhbHRhVmFudGFnZ2kg
ew0KPTA5DQp9DQpQLmltZ0NlbnRyYXRhIHsNCglNQVJHSU46IDEycHggMTJw
eCAxMnB4IDBweA0KfQ0KUC5pbWdDZW50cmF0YSBTUEFOIHsNCglNQVJHSU4t
VE9QOiAtMjJweDsgRElTUExBWTogYmxvY2s7IE1BUkdJTi1MRUZUOiA0MHB4
DQp9DQpUQUJMRS5lbGVuY29Db21hbmRpIHsNCglNQVJHSU46IDBweCAwcHgg
MmVtDQp9DQpUQUJMRS5lbGVuY29Db21hbmRpIFRIIHsNCglURVhULUFMSUdO
OiBsZWZ0OyBQQURESU5HLUJPVFRPTTogNHB4OyBQQURESU5HLUxFRlQ6IDhw
eDsgPQ0KUEFERElORy1SSUdIVDogOHB4OyBCQUNLR1JPVU5EOiAjOTk5OyBQ
QURESU5HLVRPUDogNHB4DQp9DQpUQUJMRS5lbGVuY29Db21hbmRpIFREIHsN
CglQQURESU5HLUJPVFRPTTogNHB4OyBQQURESU5HLUxFRlQ6IDhweDsgUEFE
RElORy1SSUdIVDogOHB4OyBCQUNLR1JPVU5EOiA9DQojZWFlYWVhOyBQQURE
SU5HLVRPUDogNHB4DQp9DQoucGFydG5lclNNUyAubG9nb1BhcnRuZXJTTVMg
SU1HIHsNCglNQVJHSU46IDBweCAyNHB4IDI0cHggMHB4OyBXSURUSDogMTMw
cHg7IEZMT0FUOiBsZWZ0OyBIRUlHSFQ6IDEwMHB4DQp9DQpQLmxpbmtCYWNr
IHsNCglURVhULUFMSUdOOiByaWdodDsgTUFSR0lOOiAxMnB4IDBweCAwcHg7
IFBBRERJTkctVE9QOiAxMnB4DQp9DQojY29udGFpbmVyIERJVi5pc3NPbmxp
bmUgew0KPTA5DQp9DQojY29udGFpbmVyIERJVi5pc3NPbmxpbmUgSDMudGl0
b2xvIHsNCglGT05ULVNJWkU6IDExcHgNCn0NCkRJVi52YW50YWdnaSBIMi50
aXRvbG8gew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQ
QURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBGT05U
LVNJWkU6IDExcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi52YW50YWdn
aSBIMy50aXRvbG8gew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjog
MHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4
OyBGT05ULVNJWkU6IDExcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi52
YW50YWdnaSBQLmxlZnQgew0KCVdJRFRIOiAxMjBweDsgSEVJR0hUOiAxNDBw
eA0KfQ0KRElWLnZhbnRhZ2dpIFAubGVmdCBJTUcgew0KCU1BUkdJTi1UT1A6
IDEycHgNCn0NCkRJVi52aWxsYWdlIERJVi5iYW5uZXJGbGFzaCB7DQoJTUFS
R0lOOiAwcHggMHB4IDJlbSAyZW07IFdJRFRIOiAxNjFweDsgRkxPQVQ6IHJp
Z2h0OyBIRUlHSFQ6IDI5NHB4DQp9DQpESVYjY29udGFpbmVyIERJVi5lbGVu
Y29TaXRpIHsNCglURVhULUFMSUdOOiBsZWZ0OyBNQVJHSU46IDEycHggMjJw
eCAwcHggMHB4OyBGTE9BVDogcmlnaHQNCn0NCkRJViNjb250YWluZXIgRElW
LmVsZW5jb1NpdGkgRElWI2FjY29yZGlvbmIgRElWIHsNCglXSURUSDogMjMw
cHg7IEZMT0FUOiBsZWZ0OyBGT05ULVNJWkU6IDEycHgNCn0NCkRJViNjb250
YWluZXIgRElWLmVsZW5jb1NpdGkgRElWIHsNCglXSURUSDogMzE4cHg7IEZM
T0FUOiBsZWZ0OyBGT05ULVNJWkU6IDEycHgNCn0NCkRJViNjb250YWluZXIg
RElWLmVsZW5jb1NpdGkgVUwgew0KCUxJU1QtU1RZTEUtSU1BR0U6ID0NCnVy
bChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvY2F0ZWdvcmllL1ZC
VmZyZWNjaW5lLmdpZikNCn0NCkJPRFkucG9wdXAgew0KCVBBRERJTkctQk9U
VE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFE
RElORy1SSUdIVDogPQ0KMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYj
Y29udGVudXRpIERJViN0cmVEc2VjdXJlIHsNCglDT0xPUjogIzQ0NA0KfQ0K
RElWI2NvbnRlbnV0aTEgRElWI3RyZURzZWN1cmUgew0KCUNPTE9SOiAjNDQ0
DQp9DQpESVYjY29udGVudXRpMiBESVYjdHJlRHNlY3VyZSB7DQoJQ09MT1I6
ICM0NDQNCn0NCkRJViN0cmVEc2VjdXJlIEgzLnRpdG9sbyB7DQoJTUFSR0lO
LUxFRlQ6IDBweA0KfQ0KRElWI3RyZURzZWN1cmUgTEkgew0KCU1BUkdJTi1M
RUZUOiAxOHB4OyBMSVNULVNUWUxFLUlNQUdFOiA9DQp1cmwoaHR0cDovL3d3
dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2ZyZWNjaW5hLXByLmdpZikNCn0NCkRJ
ViN0cmVEc2VjdXJlIFAgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ
TjogMHB4IDBweCAxMnB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElO
Ry1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYjdHJlRHNl
Y3VyZSBQLmRvbWFuZGEgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ
TjogMThweCAwcHggMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElO
Ry1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYjdHJlRHNl
Y3VyZSBESVYubm9QVCB7DQoJQk9SREVSLUJPVFRPTTogI2Y5MCBkb3VibGU7
IEJPUkRFUi1MRUZUOiAjZjkwIGRvdWJsZTsgUEFERElORy1CT1RUT006ID0N
CjFlbTsgTUFSR0lOOiAxZW07IFBBRERJTkctTEVGVDogMWVtOyBQQURESU5H
LVJJR0hUOiAxZW07IEJPUkRFUi1UT1A6ID0NCiNmOTAgZG91YmxlOyBCT1JE
RVItUklHSFQ6ICNmOTAgZG91YmxlOyBQQURESU5HLVRPUDogMWVtDQp9DQpE
SVYjdHJlRHNlY3VyZSBESVYuUFQgew0KCUJPUkRFUi1CT1RUT006ICNmOTAg
ZG91YmxlOyBCT1JERVItTEVGVDogI2Y5MCBkb3VibGU7IFBBRERJTkctQk9U
VE9NOiA9DQoxZW07IE1BUkdJTjogMWVtOyBQQURESU5HLUxFRlQ6IDFlbTsg
UEFERElORy1SSUdIVDogMWVtOyBCT1JERVItVE9QOiA9DQojZjkwIGRvdWJs
ZTsgQk9SREVSLVJJR0hUOiAjZjkwIGRvdWJsZTsgUEFERElORy1UT1A6IDFl
bQ0KfQ0KRElWI3RyZURzZWN1cmUgVUwuZmFxIHsNCglQQURESU5HLUJPVFRP
TTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJ
TkctUklHSFQ6ID0NCjBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWI3Ry
ZURzZWN1cmUgVUwuZmFxIExJIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBN
QVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6
ID0NCjBweDsgRElTUExBWTogaW5saW5lOyBQQURESU5HLVRPUDogMHB4DQp9
DQpESVYjdHJlRHNlY3VyZSBVTC5mYXEgTEkgQSB7DQoJUEFERElORy1CT1RU
T006IDJweDsgTUFSR0lOOiAwcHggMHB4IDBweCAxcHg7IFBBRERJTkctTEVG
VDogNHB4OyA9DQpQQURESU5HLVJJR0hUOiA0cHg7IEJBQ0tHUk9VTkQ6ICNj
Y2M7IENPTE9SOiAjMDA2OyBURVhULURFQ09SQVRJT046ID0NCm5vbmU7IFBB
RERJTkctVE9QOiAycHgNCn0NCkRJViN0cmVEc2VjdXJlIFVMLmZhcSBMSSBB
LmFjdGl2ZSB7DQoJQkFDS0dST1VORDogI2Y5MDsgQ09MT1I6ICMzMzMNCn0N
CkRJViN0cmVEc2VjdXJlIFVMLmZhcSBMSSBBOmhvdmVyIHsNCglCQUNLR1JP
VU5EOiAjZjkwOyBDT0xPUjogIzMzMw0KfQ0KRElWI3RyZURzZWN1cmUgUC5S
aWdodCBJTUcgew0KCUZMT0FUOiByaWdodDsgTUFSR0lOLUxFRlQ6IDEycHgN
Cn0NCiNwYW5uZWxsb01vdmVPbkhQIFVMLmFjY2Vzc29QYW5uZWxsbyBMSSBB
IHsNCglQQURESU5HLUJPVFRPTTogMTZweDsgTElORS1IRUlHSFQ6IDIycHg7
IFBBRERJTkctTEVGVDogMTZweDsgPQ0KUEFERElORy1SSUdIVDogMTZweDsg
Q09MT1I6ICNmOWE3M2I7IEZPTlQtU0laRTogMTBweDsgRk9OVC1XRUlHSFQ6
IGJvbGQ7ID0NClRFWFQtREVDT1JBVElPTjogbm9uZTsgUEFERElORy1UT1A6
IDE2cHgNCn0NCiNwYW5uZWxsb01vdmVPbiBVTC5hY2Nlc3NvUGFubmVsbG8g
TEkgQSB7DQoJUEFERElORy1CT1RUT006IDE2cHg7IExJTkUtSEVJR0hUOiAy
MnB4OyBQQURESU5HLUxFRlQ6IDE2cHg7ID0NClBBRERJTkctUklHSFQ6IDE2
cHg7IENPTE9SOiAjZjlhNzNiOyBGT05ULVNJWkU6IDEwcHg7IEZPTlQtV0VJ
R0hUOiBib2xkOyA9DQpURVhULURFQ09SQVRJT046IG5vbmU7IFBBRERJTkct
VE9QOiAxNnB4DQp9DQpMSS5hY3RpdmUudGhpcmRTZWxlY3RvciB7DQoJQkFD
S0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9m
cmVjY2luYS1tZW51LmdpZikgPQ0Kbm8tcmVwZWF0IHJpZ2h0IGNlbnRlcg0K
fQ0KI3RvcE5hdiBBIHsNCglQQURESU5HLUJPVFRPTTogMC4yZW07IE1BUkdJ
Ti1UT1A6IDZweDsgUEFERElORy1MRUZUOiAxZW07ID0NClBBRERJTkctUklH
SFQ6IDFlbTsgRElTUExBWTogYmxvY2s7IEZMT0FUOiBsZWZ0OyBDT0xPUjog
I2FhYTsgPQ0KRk9OVC1XRUlHSFQ6IG5vcm1hbDsgVEVYVC1ERUNPUkFUSU9O
OiBub25lOyBQQURESU5HLVRPUDogMC4yZW0NCn0NCiN0b3BOYXYgQTpsaW5r
IHsNCglQQURESU5HLUJPVFRPTTogMC4yZW07IE1BUkdJTi1UT1A6IDZweDsg
UEFERElORy1MRUZUOiAxZW07ID0NClBBRERJTkctUklHSFQ6IDFlbTsgRElT
UExBWTogYmxvY2s7IEZMT0FUOiBsZWZ0OyBDT0xPUjogI2FhYTsgPQ0KRk9O
VC1XRUlHSFQ6IG5vcm1hbDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURE
SU5HLVRPUDogMC4yZW0NCn0NCiN0b3BOYXYgQTp2aXNpdGVkIHsNCglQQURE
SU5HLUJPVFRPTTogMC4yZW07IE1BUkdJTi1UT1A6IDZweDsgUEFERElORy1M
RUZUOiAxZW07ID0NClBBRERJTkctUklHSFQ6IDFlbTsgRElTUExBWTogYmxv
Y2s7IEZMT0FUOiBsZWZ0OyBDT0xPUjogI2FhYTsgPQ0KRk9OVC1XRUlHSFQ6
IG5vcm1hbDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRPUDog
MC4yZW0NCn0NCkRJViNjb250YWluZXIgRElWLm9mZlByZW1pdW0gVUwucGFy
dG5lciB7DQoJUEFERElORy1CT1RUT006IDBweDsgTElTVC1TVFlMRS1UWVBF
OiBub25lOyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiA9DQowcHg7IFBB
RERJTkctUklHSFQ6IDBweDsgTElTVC1TVFlMRS1JTUFHRTogbm9uZTsgUEFE
RElORy1UT1A6IDBweA0KfQ0KRElWLm9mZlByZW1pdW0gVUwucGFydG5lciBM
SSB7DQoJUEFERElORy1CT1RUT006IDEycHg7IFBBRERJTkctTEVGVDogMTJw
eDsgV0lEVEg6IDU2MHB4OyBQQURESU5HLVJJR0hUOiA9DQoxMnB4OyBGTE9B
VDogbGVmdDsgSEVJR0hUOiAxNDBweDsgQk9SREVSLVRPUDogc2lsdmVyIDFw
eCBzb2xpZDsgPQ0KUEFERElORy1UT1A6IDEycHgNCn0NCkRJVi5vZmZQcmVt
aXVtIFVMLnBhcnRuZXIgTEkgSU1HIHsNCj0wOQ0KfQ0KRElWLm9mZlByZW1p
dW0gVUwucGFydG5lciBMSSBQIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBN
QVJHSU46IC02MnB4IDBweCAxMnB4IDEzMHB4OyBQQURESU5HLUxFRlQ6IDBw
eDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9
DQpESVYub2ZmUHJlbWl1bSBVTC5wYXJ0bmVyIExJIFNUUk9ORyB7DQoJUE9T
SVRJT046IGFic29sdXRlOyBNQVJHSU4tVE9QOiA4cHg7IEZPTlQtU0laRTog
MTRweDsgTEVGVDogMTYwcHgNCn0NCkRJVi5vZmZQcmVtaXVtIFVMLnBhcnRu
ZXIgTEkgU1RST05HIFNQQU4gew0KCUNPTE9SOiAjMzMzDQp9DQpESVYub2Zm
UHJlbWl1bSBVTC5wYXJ0bmVyIExJIEEgew0KCVBPU0lUSU9OOiBhYnNvbHV0
ZTsgTEVGVDogMTYwcHgNCn0NCi5wb3BQcmVtaXVtIC5wb3B1cCB7DQoJUE9T
SVRJT046IHJlbGF0aXZlOyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46
IDBweCBhdXRvOyA9DQpQQURESU5HLUxFRlQ6IDBweDsgV0lEVEg6IDcyMHB4
OyBQQURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAxMnB4DQp9DQou
cG9wUHJlbWl1bSAucG9wdXAgew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFE
RElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHggYXV0bzsgPQ0KUEFERElO
Ry1MRUZUOiAwcHg7IFdJRFRIOiA3MjBweDsgUEFERElORy1SSUdIVDogMHB4
OyBQQURESU5HLVRPUDogMTJweA0KfQ0KLnBvcFByZW1pdW0gLnBvcHVwIHsN
CglQT1NJVElPTjogcmVsYXRpdmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1B
UkdJTjogMHB4IGF1dG87ID0NClBBRERJTkctTEVGVDogMHB4OyBXSURUSDog
NzIwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1UT1A6IDEycHgN
Cn0NCi5wb3BQcmVtaXVtIC5wb3B1cCBJTUcubG9nb1BhcnRuZXIgew0KCVBB
RERJTkctQk9UVE9NOiAyNHB4OyBNQVJHSU46IDBweCAyNHB4IDEycHggMHB4
OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElORy1SSUdIVDogMjRweDsg
RkxPQVQ6IGxlZnQ7IEJPUkRFUi1SSUdIVDogc2lsdmVyIDFweCBkb3R0ZWQ7
ID0NClBBRERJTkctVE9QOiAwcHgNCn0NCi5wb3BQcmVtaXVtIC5wb3B1cCBV
TCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTElTVC1TVFlMRS1UWVBFOiBk
aXNjOyBNQVJHSU46IDBweCAwcHggMHB4IDEycHg7ID0NClBBRERJTkctTEVG
VDogMTJweDsgUEFERElORy1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4
DQp9DQoucG9wUHJlbWl1bSAucG9wdXAgUCB7DQo9MDkNCn0NCi5kaXZtb3Zl
b24gU1BBTi5kaXZtb3Zlb24xIHsNCglQQURESU5HLUJPVFRPTTogMTdweDsg
RElTUExBWTogYmxvY2sNCn0NCi5kaXZtb3Zlb24gU1BBTiB7DQoJUEFERElO
Ry1CT1RUT006IDdweDsgRElTUExBWTogYmxvY2sNCn0NCiNsaW5lIHsNCglC
T1JERVItQk9UVE9NOiAwcHg7IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkct
Qk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiA9DQoxcHg7IE1BUkdJTjogMHB4
OyBQQURESU5HLUxFRlQ6IDBweDsgV0lEVEg6IDYzMHB4OyBQQURESU5HLVJJ
R0hUOiAwcHg7ID0NCkRJU1BMQVk6IGJsb2NrOyBCQUNLR1JPVU5EOiAjZTJl
MmUyOyBIRUlHSFQ6IDFweDsgQk9SREVSLVRPUDogMHB4OyA9DQpCT1JERVIt
UklHSFQ6IDBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KSDEudGl0b2xvbGln
aHQgew0KCU1BUkdJTjogMTJweCAxMnB4IDIycHggMHB4OyBDT0xPUjogI2Zm
YzIwZTsgRk9OVC1TSVpFOiAxNnB4DQp9DQpIMi50aXRvbG9saWdodCB7DQoJ
UEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAxMnB4IDBweCA2cHg7IFBB
RERJTkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IENPTE9S
OiAjODg4OyBGT05ULVNJWkU6IDE0cHg7IFBBRERJTkctVE9QOiAwcHgNCn0N
Ci54LXBheSB7DQoJV0lEVEg6IDYzOHB4OyBESVNQTEFZOiBibG9jazsgRkxP
QVQ6IGxlZnQNCn0NCi54LXBheSAuc3F1YXJlIHsNCglQQURESU5HLUJPVFRP
TTogMTBweDsgUEFERElORy1MRUZUOiAxMHB4OyBXSURUSDogMjBweDsgUEFE
RElORy1SSUdIVDogPQ0KMTBweDsgRkxPQVQ6IGxlZnQ7IEhFSUdIVDogMjBw
eDsgUEFERElORy1UT1A6IDEwcHgNCn0NCi54LXBheSBQIHsNCglQQURESU5H
LUJPVFRPTTogMHB4OyBNQVJHSU46IDBweCAwcHggMHB4IDQwcHg7IFBBRERJ
TkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkct
VE9QOiAwcHgNCn0NCi5iYW54cGF5IHsNCglNQVJHSU46IDBweCAwcHggMjBw
eDsgV0lEVEg6IDYzOHB4OyBESVNQTEFZOiBibG9jazsgQkFDS0dST1VORDog
PQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9iZy1iYW4t
ZGVtb3hwYXkuanBnKSBuby1yZXBlYXQgbGVmdCA9DQp0b3A7IEZMT0FUOiBs
ZWZ0OyBIRUlHSFQ6IDE1NnB4DQp9DQouYmFueHBheSBQIHsNCglQQURESU5H
LUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDIzNHB4OyBQQURESU5HLVJJ
R0hUOiAwcHg7IENPTE9SOiA9DQojNDQ0OyBGT05ULVNJWkU6IDEwcHg7IEZP
TlQtV0VJR0hUOiBub3JtYWw7IFBBRERJTkctVE9QOiA5MHB4DQp9DQouYmFu
eHBheSBBIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6
IDUzMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IERJU1BMQVk6ID0NCmJsb2Nr
OyBQQURESU5HLVRPUDogMTVweA0KfQ0KLmJhbnhwYXkyIHsNCglNQVJHSU46
IDBweCAwcHggMjBweDsgV0lEVEg6IDYzOXB4OyBESVNQTEFZOiBibG9jazsg
QkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1h
Z2luaS9iZy1iYW4teHBheTIuZ2lmKSBuby1yZXBlYXQgbGVmdCB0b3A7ID0N
CkZMT0FUOiBsZWZ0OyBIRUlHSFQ6IDE1OHB4DQp9DQouYmFueHBheTIgSU1H
LnRpdCB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFERElORy1MRUZUOiAx
NXB4OyBXSURUSDogMTE0cHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgSEVJ
R0hUOiAyN3B4OyBQQURESU5HLVRPUDogMTVweA0KfQ0KLmJhbnhwYXkyIFAg
ew0KCVBBRERJTkctQk9UVE9NOiA1cHg7IFBBRERJTkctTEVGVDogMjBweDsg
UEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogPQ0KIzQ0NDsgRk9OVC1TSVpF
OiAxMHB4OyBGT05ULVdFSUdIVDogbm9ybWFsOyBQQURESU5HLVRPUDogNXB4
DQp9DQouYmFueHBheTIgVUwgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IExJ
U1QtU1RZTEUtVFlQRTogbm9uZTsgUEFERElORy1MRUZUOiA1cHg7IFdJRFRI
OiA9DQo2MTBweDsgUEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogIzQ0NDsg
Rk9OVC1TSVpFOiAxMHB4OyBGT05ULVdFSUdIVDogPQ0Kbm9ybWFsOyBQQURE
SU5HLVRPUDogMHB4DQp9DQouYmFueHBheTIgVUwgTEkgew0KCVBBRERJTkct
Qk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxNXB4OyBMSVNULVNUWUxFLVRZ
UEU6IG5vbmU7ID0NClBBRERJTkctTEVGVDogMTVweDsgUEFERElORy1SSUdI
VDogMHB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNp
Lml0L0ltbWFnaW5pL2xpLXhwYXkuZ2lmKSBuby1yZXBlYXQgbGVmdCA1cHg7
ID0NCkNPTE9SOiAjNDQ0OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYuYm94
MSB7DQoJQk9SREVSLUJPVFRPTTogI2NjYyAxcHggc29saWQ7IFBPU0lUSU9O
OiByZWxhdGl2ZTsgQk9SREVSLUxFRlQ6ICNjY2MgPQ0KMXB4IHNvbGlkOyBQ
QURESU5HLUJPVFRPTTogMTJweDsgTUFSR0lOOiAxMnB4IDBweDsgUEFERElO
Ry1MRUZUOiAxMnB4OyA9DQpQQURESU5HLVJJR0hUOiAxMnB4OyBCQUNLR1JP
VU5EOiAjZjdmN2Y3OyBDT0xPUjogIzMzMzsgQ0xFQVI6IGxlZnQ7ID0NCkJP
UkRFUi1UT1A6ICNjY2MgMXB4IHNvbGlkOyBCT1JERVItUklHSFQ6ICNjY2Mg
MXB4IHNvbGlkOyBQQURESU5HLVRPUDogPQ0KMTJweA0KfQ0KRElWLmJveDIg
ew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RUT006IDBweDsg
TUFSR0lOOiAxMnB4IDBweDsgPQ0KUEFERElORy1MRUZUOiAwcHg7IFBBRERJ
TkctUklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cu
Y2FydGFzaS5pdC9JbW1hZ2luaS9icmFuZGJvb2svYm94Mi5qcGcpIG5vLXJl
cGVhdDsgPQ0KSEVJR0hUOiAxNjFweDsgQ09MT1I6ICMzMzM7IENMRUFSOiBs
ZWZ0OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYuYm94MiBQLmltZyB7DQoJ
TUFSR0lOOiAyOHB4IDEycHggMTJweDsgV0lEVEg6IDIyMHB4OyBGTE9BVDog
bGVmdA0KfQ0KRElWLmJveDIgLnRpdG9sbyB7DQoJTUFSR0lOOiAyNHB4IDZw
eCAycHg7IFdJRFRIOiAyMjBweDsgRkxPQVQ6IGxlZnQ7IENMRUFSOiBub25l
DQp9DQpESVYuYm94MiBQLnRlc3RvIHsNCglURVhULUFMSUdOOiBqdXN0aWZ5
OyBNQVJHSU46IDJweCA2cHg7IFdJRFRIOiA0MDBweDsgRkxPQVQ6IGxlZnQ7
ID0NCkhFSUdIVDogMTEwcHg7IENMRUFSOiBub25lOyBPVkVSRkxPVzogaGlk
ZGVuDQp9DQpESVYuYm94MiAucHVsc2FudGUgew0KCUJPUkRFUi1CT1RUT006
IG1lZGl1bSBub25lOyBQT1NJVElPTjogYWJzb2x1dGU7IFRFWFQtQUxJR046
IGNlbnRlcjsgPQ0KQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5H
LUJPVFRPTTogNHB4OyBQQURESU5HLUxFRlQ6IDRweDsgPQ0KUEFERElORy1S
SUdIVDogNHB4OyBCQUNLR1JPVU5EOiAjZjlhNzNiOyBDT0xPUjogI2ZmZjsg
Qk9SREVSLVRPUDogbWVkaXVtID0NCm5vbmU7IFRPUDogMTI2cHg7IEZPTlQt
V0VJR0hUOiBib2xkOyBCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyA9DQpQ
QURESU5HLVRPUDogNHB4OyBMRUZUOiA1MjBweA0KfQ0KRElWLmJveDMgew0K
CVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RUT006IDBweDsgTUFS
R0lOOiAxMnB4IDI0cHggMjRweCAwcHg7ID0NClBBRERJTkctTEVGVDogMHB4
OyBXSURUSDogMjQwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VO
RDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9icmFu
ZGJvb2svYm94My5qcGcpIG5vLXJlcGVhdDsgRkxPQVQ6ID0NCmxlZnQ7IEhF
SUdIVDogMTIzcHg7IENPTE9SOiAjMzMzOyBQQURESU5HLVRPUDogMHB4DQp9
DQpESVYuYm94MyBINCB7DQoJUE9TSVRJT046IGFic29sdXRlOyBXSURUSDog
MTEycHg7IENPTE9SOiAjZjg5OTFkOyBUT1A6IDU0cHg7IExFRlQ6IDEycHgN
Cn0NCkRJVi5ib3gzIFAgew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgV0lEVEg6
IDExMnB4OyBDT0xPUjogIzMzMzsgVE9QOiAxMnB4OyBGT05ULVdFSUdIVDog
PQ0KNzAwOyBMRUZUOiAxMnB4DQp9DQpESVYuYm94MyBJTUcgew0KCVBPU0lU
SU9OOiBhYnNvbHV0ZTsgVE9QOiAwcHg7IExFRlQ6IDEyMHB4DQp9DQpESVYu
Ym94MWEgew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RUT006
IDRweDsgTUFSR0lOOiAxMnB4IDBweDsgPQ0KUEFERElORy1MRUZUOiA0cHg7
IFdJRFRIOiA2NzBweDsgUEFERElORy1SSUdIVDogNHB4OyBCQUNLR1JPVU5E
OiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JyYW5k
Ym9vay9ib3gxYS5qcGcpIG5vLXJlcGVhdDsgPQ0KSEVJR0hUOiA5NnB4OyBD
T0xPUjogIzMzMzsgQ0xFQVI6IGxlZnQ7IFBBRERJTkctVE9QOiA0cHgNCn0N
CkRJVi5ib3gxYSBINCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lO
OiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQow
cHg7IENPTE9SOiAjZjkwOyBGT05ULVNJWkU6IDE0cHg7IFBBRERJTkctVE9Q
OiA2cHgNCn0NCkRJVi5ib3gxYSBQIHsNCglQQURESU5HLUJPVFRPTTogMHB4
OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiA0NzRw
eDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBGTE9BVDogbGVmdDsgQ09MT1I6
ICNmOTA7IEZPTlQtU0laRTogMTBweDsgPQ0KUEFERElORy1UT1A6IDBweA0K
fQ0KRElWLmJveDFhIElNRyB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFE
RElORy1MRUZUOiA0cHg7IFBBRERJTkctUklHSFQ6IDEycHg7IEZMT0FUOiA9
DQpsZWZ0OyBQQURESU5HLVRPUDogM3B4DQp9DQpESVYuYm94MWIgew0KCVBP
U0lUSU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RUT006IDEycHg7IE1BUkdJ
TjogMTJweCAwcHg7ID0NClBBRERJTkctTEVGVDogMTJweDsgV0lEVEg6IDY3
MHB4OyBQQURESU5HLVJJR0hUOiAxMnB4OyBCQUNLR1JPVU5EOiA9DQp1cmwo
aHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JyYW5kYm9vay9ib3gx
Yi5qcGcpIG5vLXJlcGVhdDsgPQ0KSEVJR0hUOiAxNjJweDsgQ09MT1I6ICMz
MzM7IENMRUFSOiBsZWZ0OyBQQURESU5HLVRPUDogMTJweA0KfQ0KRElWLmJv
eDFhIFVMIHsNCglMSVNULVNUWUxFLUlNQUdFOiA9DQp1cmwoaHR0cDovL3d3
dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JyYW5kYm9vay9idWxsZXRTbWFsbC5n
aWYpOyA9DQpNQVJHSU4tUklHSFQ6IDI0cHgNCn0NCkRJVi5ib3gxYiBVTCB7
DQoJTElTVC1TVFlMRS1JTUFHRTogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFz
aS5pdC9JbW1hZ2luaS9icmFuZGJvb2svYnVsbGV0U21hbGwuZ2lmKTsgPQ0K
TUFSR0lOLVJJR0hUOiAyNHB4DQp9DQpESVYuYm94MWMgVUwgew0KCUxJU1Qt
U1RZTEUtSU1BR0U6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvYnJhbmRib29rL2J1bGxldFNtYWxsLmdpZik7ID0NCk1BUkdJTi1S
SUdIVDogMjRweA0KfQ0KRElWLmJveDFjIHsNCglQT1NJVElPTjogcmVsYXRp
dmU7IFBBRERJTkctQk9UVE9NOiAxMnB4OyBNQVJHSU46IDEycHggMHB4OyA9
DQpQQURESU5HLUxFRlQ6IDEycHg7IFdJRFRIOiA2NzBweDsgUEFERElORy1S
SUdIVDogMTJweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9JbW1hZ2luaS9icmFuZGJvb2svYm94MWMuanBnKSBuby1yZXBl
YXQ7ID0NCkhFSUdIVDogMTYycHg7IENPTE9SOiAjMzMzOyBDTEVBUjogbGVm
dDsgUEFERElORy1UT1A6IDEycHgNCn0NCkRJVi5ib3gxIHsNCglCT1JERVIt
Qk9UVE9NOiAjY2NjIDFweCBzb2xpZDsgUE9TSVRJT046IHJlbGF0aXZlOyBC
T1JERVItTEVGVDogI2NjYyA9DQoxcHggc29saWQ7IFBBRERJTkctQk9UVE9N
OiAxMnB4OyBNQVJHSU46IDEycHggMHB4OyBQQURESU5HLUxFRlQ6IDEycHg7
ID0NClBBRERJTkctUklHSFQ6IDEycHg7IEJBQ0tHUk9VTkQ6ICNmN2Y3Zjc7
IENPTE9SOiAjMzMzOyBDTEVBUjogbGVmdDsgPQ0KQk9SREVSLVRPUDogI2Nj
YyAxcHggc29saWQ7IEJPUkRFUi1SSUdIVDogI2NjYyAxcHggc29saWQ7IFBB
RERJTkctVE9QOiA9DQoxMnB4DQp9DQpESVYuYm94MiB7DQoJUE9TSVRJT046
IHJlbGF0aXZlOyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDEycHgg
MHB4OyA9DQpQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4
OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L2lt
YWdlcy9ib3gyLmpwZykgbm8tcmVwZWF0OyBIRUlHSFQ6IDE2MXB4OyA9DQpD
T0xPUjogIzMzMzsgQ0xFQVI6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0N
CkRJVi5ib3gyIFAuaW1nIHsNCglNQVJHSU46IDI4cHggMTJweCAxMnB4OyBX
SURUSDogMjIwcHg7IEZMT0FUOiBsZWZ0DQp9DQpESVYuYm94MiAudGl0b2xv
IHsNCglNQVJHSU46IDI0cHggNnB4IDJweDsgV0lEVEg6IDIyMHB4OyBGTE9B
VDogbGVmdDsgQ0xFQVI6IG5vbmUNCn0NCkRJVi5ib3gyIFAudGVzdG8gew0K
CVRFWFQtQUxJR046IGp1c3RpZnk7IE1BUkdJTjogMnB4IDZweDsgV0lEVEg6
IDQwMHB4OyBGTE9BVDogbGVmdDsgPQ0KSEVJR0hUOiAxMTBweDsgQ0xFQVI6
IG5vbmU7IE9WRVJGTE9XOiBoaWRkZW4NCn0NCkRJVi5ib3gzIHsNCglQT1NJ
VElPTjogcmVsYXRpdmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjog
MTJweCAyNHB4IDI0cHggMHB4OyA9DQpQQURESU5HLUxFRlQ6IDBweDsgV0lE
VEg6IDI0MHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEJBQ0tHUk9VTkQ6ID0N
CnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvaW1hZ2VzL2JveDMuanBnKSBu
by1yZXBlYXQ7IEZMT0FUOiBsZWZ0OyA9DQpIRUlHSFQ6IDEyM3B4OyBDT0xP
UjogIzMzMzsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLmJveDMgSDQgew0K
CVBPU0lUSU9OOiBhYnNvbHV0ZTsgV0lEVEg6IDExMnB4OyBDT0xPUjogI2Y4
OTkxZDsgVE9QOiA1NHB4OyBMRUZUOiAxMnB4DQp9DQpESVYuYm94MyBQIHsN
CglQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAxMTJweDsgQ09MT1I6ICMz
MzM7IFRPUDogMTJweDsgRk9OVC1XRUlHSFQ6ID0NCjcwMDsgTEVGVDogMTJw
eA0KfQ0KRElWLmJveDMgSU1HIHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFRP
UDogMHB4OyBMRUZUOiAxMjBweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgUC5h
Y2Nlc3NvIHsNCglURVhULVRSQU5TRk9STTogdXBwZXJjYXNlOyBNQVJHSU46
IDEycHggMHB4IDBweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgUC5hY2Nlc3Nv
IEEgew0KCUJPUkRFUi1CT1RUT006ICNmOTAgMXB4IGRvdHRlZDsgQk9SREVS
LUxFRlQ6ICNmOTAgMHB4IGRvdHRlZDsgPQ0KUEFERElORy1CT1RUT006IDRw
eDsgUEFERElORy1MRUZUOiA0cHg7IFBBRERJTkctUklHSFQ6IDRweDsgQ09M
T1I6ICNmOTA7ID0NCkJPUkRFUi1UT1A6ICNmOTAgMHB4IGRvdHRlZDsgRk9O
VC1XRUlHSFQ6IGJvbGQ7IEJPUkRFUi1SSUdIVDogI2Y5MCAwcHggPQ0KZG90
dGVkOyBQQURESU5HLVRPUDogNHB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCBQ
LmFjY2Vzc28gQTpob3ZlciB7DQoJVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9
DQojc2NoZWRhQ2FydGEgew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElO
Ry1CT1RUT006IDBweDsgTUFSR0lOOiAzcHggMHB4IDBweDsgPQ0KUEFERElO
Ry1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORDog
I2ZmZjsgUEFERElORy1UT1A6ID0NCjBweA0KfQ0KI3NjaGVkYUNhcnRhIEgx
LnRpdG9sbyB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFERElORy1MRUZU
OiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgPQ0KUEFERElORy1UT1A6IDJw
eA0KfQ0KI3NjaGVkYUNhcnRhIEgyLnRpdG9sbyB7DQoJQk9SREVSLUJPVFRP
TTogI2NjYyAxcHggc29saWQ7IE1BUkdJTjogMHB4OyBDT0xPUjogI2Y5MDsg
Rk9OVC1TSVpFOiA9DQoxOHB4DQp9DQojc2NoZWRhQ2FydGEgSDMudGl0b2xv
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDQ4cHg7
IFBBRERJTkctUklHSFQ6IDBweDsgQ09MT1I6ID0NCiNmOTA7IEZPTlQtU0la
RTogMTRweDsgUEFERElORy1UT1A6IDJweA0KfQ0KI3NjaGVkYVByZXBhZ2F0
YSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJ
TkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IEJBQ0tHUk9V
TkQ6ICNmZmY7IFBBRERJTkctVE9QOiAwcHgNCn0NCiNzY2hlZGFQcmVwYWdh
dGEgSDEudGl0b2xvIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5H
LUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyA9DQpQQURESU5HLVRP
UDogMnB4DQp9DQojc2NoZWRhUHJlcGFnYXRhIEgyLnRpdG9sbyB7DQoJQk9S
REVSLUJPVFRPTTogIzk5OSAxcHggc29saWQ7IFBBRERJTkctQk9UVE9NOiA0
cHg7IE1BUkdJTjogMTJweCAwcHggPQ0KMHB4OyBDT0xPUjogIzk5OQ0KfQ0K
I3NjaGVkYVByZXBhZ2F0YSBIMy50aXRvbG8gew0KCVBBRERJTkctQk9UVE9N
OiAwcHg7IFBBRERJTkctTEVGVDogNDhweDsgUEFERElORy1SSUdIVDogMHB4
OyBDT0xPUjogPQ0KI2Y5MDsgRk9OVC1TSVpFOiAxNHB4OyBQQURESU5HLVRP
UDogMnB4DQp9DQpESVYuc25hcHNob3Qgew0KCUJPUkRFUi1CT1RUT006ICNj
Y2MgMXB4IHNvbGlkOyBQQURESU5HLUJPVFRPTTogMTJweDsgTUFSR0lOOiAw
cHggMHB4ID0NCjI0cHg7IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogNjgw
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1UT1A6ID0NCjZweA0K
fQ0KRElWLnNuYXBzaG90IFAuaW1nUHJvZG90dG8gew0KCU1BUkdJTjogMHB4
IDBweCAwcHggLTE4cHg7IFdJRFRIOiAzMjBweDsgRkxPQVQ6IGxlZnQNCn0N
CkRJVi5zbmFwc2hvdCBQLmNsYWltUHJvZG90dG8gew0KCU1BUkdJTjogMjJw
eCAwcHggODBweCAxMHB4OyBXSURUSDogMzUwcHg7IEZMT0FUOiBsZWZ0DQp9
DQpESVYuc25hcHNob3QgUC5kZXNjcml6aW9uZSB7DQoJUEFERElORy1CT1RU
T006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURE
SU5HLVJJR0hUOiA9DQowcHg7IENMRUFSOiBib3RoOyBQQURESU5HLVRPUDog
MHB4DQp9DQpESVYuc25hcHNob3QgUC5jYWxsVG9BY3Rpb24gew0KCVBBRERJ
TkctQk9UVE9NOiAycHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDEw
MHB4OyBXSURUSDogMjcwcHg7ID0NClBBRERJTkctUklHSFQ6IDBweDsgRkxP
QVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAzNnB4DQp9DQpESVYuc25hcHNob3Qg
UC5jYWxsVG9BY3Rpb24gQSB7DQoJV0lEVEg6IDE0MHB4OyBESVNQTEFZOiBi
bG9jazsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5p
dC9JbW1hZ2luaS9wcmVwYWdhdGUvY2FsbFRvQWN0aW9uLmpwZykgbm8tcmVw
ZWF0ID0NCmxlZnQgdG9wOyBIRUlHSFQ6IDM4cHgNCn0NCkRJVi5zbmFwc2hv
dCBQLmNhbGxUb0FjdGlvbiBBIFNQQU4gew0KCVBPU0lUSU9OOiBhYnNvbHV0
ZTsgTUFSR0lOLVRPUDogLTEwMDBweA0KfQ0KRElWLmNhbGxQcm9kb3R0byB7
DQo9MDkNCn0NCkRJVi5jYWxsUHJvZG90dG8gUC5jYWxsUHJvZG90dG8gew0K
CU1BUkdJTjogMHB4OyBXSURUSDogMzAwcHg7IEZMT0FUOiBsZWZ0DQp9DQpE
SVYuY3Jvc3NTZWxsaW5nIHsNCglCT1JERVItVE9QOiAjY2NjIDFweCBzb2xp
ZA0KfQ0KRElWLmNyb3NzU2VsbGluZyBQLmNyb3NzU2VsbGluZyB7DQo9MDkN
Cn0NCiNzY2hlZGFDYXJ0YSBESVYuYm94UHVzaCB7DQoJUE9TSVRJT046IHJl
bGF0aXZlOyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFE
RElORy1MRUZUOiA9DQowcHg7IFdJRFRIOiA2NDJweDsgUEFERElORy1SSUdI
VDogMHB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNp
Lml0L0ltbWFnaW5pL2NhcnRlL3B1c2hDYXJ0YS5qcGcpIG5vLXJlcGVhdCBs
ZWZ0ID0NCnRvcDsgSEVJR0hUOiAxNjJweDsgUEFERElORy1UT1A6IDBweA0K
fQ0KI3NjaGVkYUNhcnRhIERJVi5ib3hQdXNoIEgzLnRpdG9sbyB7DQoJUEFE
RElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDog
MTJweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBQQURESU5HLVRPUDogMTJw
eA0KfQ0KI3NjaGVkYUNhcnRhIERJVi5ib3hQdXNoIFVMIHsNCj0wOQ0KfQ0K
I3NjaGVkYUNhcnRhIERJVi5ib3hQdXNoIExJIHsNCglNQVJHSU46IDEycHgN
Cn0NCiNzY2hlZGFDYXJ0YSBESVYuYm94UHVzaCBQIHsNCj0wOQ0KfQ0KRElW
I3NjaGVkYUNhcnRhIFRBQkxFLnNwZWNpZkNhcnRhIHsNCglCT1JERVItQ09M
TEFQU0U6IGNvbGxhcHNlOyBUQUJMRS1MQVlPVVQ6IGZpeGVkDQp9DQpESVYj
c2NoZWRhQ2FydGEgVEFCTEUuc3BlY2lmQ2FydGEgVEggew0KCUJPUkRFUi1C
T1RUT006IHNpbHZlciAxcHggZG90dGVkOyBQQURESU5HLUJPVFRPTTogNHB4
OyBQQURESU5HLUxFRlQ6ID0NCjJweDsgUEFERElORy1SSUdIVDogMnB4OyBG
T05ULVNJWkU6IDlweDsgUEFERElORy1UT1A6IDRweA0KfQ0KRElWI3NjaGVk
YUNhcnRhIFRBQkxFLnNwZWNpZkNhcnRhIFREIHsNCglCT1JERVItQk9UVE9N
OiBzaWx2ZXIgMXB4IGRvdHRlZDsgUEFERElORy1CT1RUT006IDRweDsgUEFE
RElORy1MRUZUOiA9DQoycHg7IFBBRERJTkctUklHSFQ6IDJweDsgRk9OVC1T
SVpFOiA5cHg7IFBBRERJTkctVE9QOiA0cHgNCn0NCkRJViNzY2hlZGFDYXJ0
YSBUQUJMRS5zcGVjaWZDYXJ0YSBURCB7DQoJQkFDS0dST1VORDogI2Y0ZjRm
NA0KfQ0KRElWI3NjaGVkYUNhcnRhIFRBQkxFLnNwZWNpZkNhcnRhIFREIEEg
ew0KCUNPTE9SOiAjZmJhNzM1DQp9DQpESVYjc2NoZWRhQ2FydGEgVEFCTEUu
c3BlY2lmQ2FydGEgVEggew0KCUJPUkRFUi1CT1RUT006IHNpbHZlciAxcHgg
ZG90dGVkOyBURVhULUFMSUdOOiBsZWZ0OyBURVhULVRSQU5TRk9STTogPQ0K
dXBwZXJjYXNlOyBXSURUSDogMzQwcHg7IENPTE9SOiAjZjkwOyBGT05ULVdF
SUdIVDogYm9sZA0KfQ0KRElWI3NjaGVkYUNhcnRhIEgzLmluZm9DYXJ0YSB7
DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiA0cHggMHB4IDEycHg7
IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IEZP
TlQtU0laRTogMTZweDsgQk9SREVSLVRPUDogc2lsdmVyIDFweCBkb3R0ZWQ7
ID0NClBBRERJTkctVE9QOiAyNHB4DQp9DQpESVYjc2NoZWRhQ2FydGEgSDQu
dGl0b2xvIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDI0cHgg
MHB4IDBweDsgUEFERElORy1MRUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6
IDBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWI3NjaGVkYUNhcnRhIFVM
IExJIFNQQU4uYnJhbmQgew0KCUNPTE9SOiAjZjkwOyBGT05ULVNJWkU6IDEw
cHg7IEZPTlQtV0VJR0hUOiBib2xkDQp9DQpESVYuY2FsbFByb2RvdHRvIFVM
IExJIHsNCj0wOQ0KfQ0KRElWLmNhbGxQcm9kb3R0byBIMy50aXRvbG8gew0K
PTA5DQp9DQpESVYjc2NoZWRhQ2FydGEgVEFCTEUuc3BlY2lmQ2FydGEgVEQu
bm9CZyB7DQoJQkFDS0dST1VORDogI2ZmZg0KfQ0KRElWI3NjaGVkYUNhcnRh
IC50YWJlbGxhUHJvZG90dG8gVUwuY3NzLXRhYnMgew0KCUJPUkRFUi1CT1RU
T006ICNjY2MgMXB4IHNvbGlkDQp9DQpESVYjc2NoZWRhQ2FydGEgLnRhYmVs
bGFQcm9kb3R0byBVTC5jc3MtdGFicyBBIHsNCglDT0xPUjogI2Y5MA0KfQ0K
RElWI3NjaGVkYUNhcnRhIC50YWJlbGxhUHJvZG90dG8gVUwuY3NzLXRhYnMg
QTpob3ZlciB7DQoJQ09MT1I6ICMzMzMNCn0NCkRJViNzY2hlZGFDYXJ0YSAu
dGFiZWxsYVByb2RvdHRvIFVMLmNzcy10YWJzIEEuY3VycmVudCB7DQoJQk9S
REVSLUJPVFRPTTogI2ZmZiAycHggc29saWQ7IEJBQ0tHUk9VTkQ6ICNmZmY7
IENPTE9SOiAjZjkwDQp9DQojc2NoZWRhQ2FydGEgI3RhYnMgVUwgew0KCU1B
UkdJTjogMHB4DQp9DQouaW50cm8gew0KCVRFWFQtVFJBTlNGT1JNOiB1cHBl
cmNhc2U7IE1BUkdJTjogMTJweCAwcHggMnB4IDFweDsgV0lEVEg6IDM2MHB4
OyA9DQpGT05UOiAyNHB4LzI0cHggIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBI
ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IEZMT0FUOiA9DQpsZWZ0OyBDT0xPUjog
I2ZiYTczNQ0KfQ0KLnNuYXBzaG90IEgxLnRpdG9sbyB7DQo9MDkNCn0NCi5h
ZGF0dGFTZSB7DQoJUEFERElORy1CT1RUT006IDBweDsgVEVYVC1UUkFOU0ZP
Uk06IHVwcGVyY2FzZTsgTUFSR0lOOiAwcHg7ID0NClBBRERJTkctTEVGVDog
MHB4OyBXSURUSDogMjgwcHg7IFBBRERJTkctUklHSFQ6IDI0cHg7IEZPTlQ6
IDI0cHgvMjRweCA9DQoiVHJlYnVjaGV0IE1TIiwgQXJpYWwsIEhlbHZldGlj
YSwgc2Fucy1zZXJpZjsgRkxPQVQ6IGxlZnQ7IENPTE9SOiA9DQojZmJhNzM1
OyBQQURESU5HLVRPUDogMHB4DQp9DQojc2NoZWRhQ2FydGEgLmNhbGxQcm9k
b3R0byAuYWRhdHRhU2UgU1RST05HIHsNCglXSURUSDogMzAwcHg7IEZPTlQ6
IDIycHggIkFyaWFsIEJsYWNrIiwgR2FkZ2V0LCBzYW5zLXNlcmlmDQp9DQoj
c2NoZWRhQ2FydGEgLmNyb3NzU2VsbGluZyAudXBTZWxsaW5nIHsNCglQT1NJ
VElPTjogYWJzb2x1dGU7IFRFWFQtVFJBTlNGT1JNOiB1cHBlcmNhc2U7IE1B
UkdJTjogNjhweCAwcHggMHB4ID0NCjI0cHg7IEZPTlQ6IDIwcHgvMjBweCAi
VHJlYnVjaGV0IE1TIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg
PQ0KQ09MT1I6ICNmYmE3MzUNCn0NCiNzY2hlZGFDYXJ0YSAuY3Jvc3NTZWxs
aW5nIC51cFNlbGxpbmcgQSB7DQoJRk9OVDogMjBweC8yMHB4ICJUcmVidWNo
ZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBDT0xPUjog
PQ0KI2ZiYTczNQ0KfQ0KI3NjaGVkYUNhcnRhIC5jcm9zc1NlbGxpbmcgLnVw
U2VsbGluZyBTVFJPTkcgew0KCUZPTlQtRkFNSUxZOiAiQXJpYWwgQmxhY2si
LCBHYWRnZXQsIHNhbnMtc2VyaWYNCn0NCi5wcmVtaXVtIHsNCglCT1JERVIt
Q09MTEFQU0U6IGNvbGxhcHNlDQp9DQoucHJlbWl1bSBUUiBUSCB7DQoJQk9S
REVSLUJPVFRPTTogIzk5OSAxcHggc29saWQ7IFBBRERJTkctQk9UVE9NOiAy
MnB4OyBQQURESU5HLUxFRlQ6ID0NCjIycHg7IFBBRERJTkctUklHSFQ6IDIy
cHg7IFBBRERJTkctVE9QOiAyMnB4DQp9DQoucHJlbWl1bSBUUiBURCB7DQoJ
Qk9SREVSLUJPVFRPTTogIzk5OSAxcHggc29saWQ7IFBBRERJTkctQk9UVE9N
OiAyMnB4OyBQQURESU5HLUxFRlQ6ID0NCjIycHg7IFBBRERJTkctUklHSFQ6
IDIycHg7IFBBRERJTkctVE9QOiAyMnB4DQp9DQoucGFydG5lciB7DQoJUE9T
SVRJT046IHJlbGF0aXZlOyBNQVJHSU46IDZweCAwcHggMTJweCAzMHB4OyBX
SURUSDogMjM4cHg7ID0NCkJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvaW9TaTIwMTAvaW1hZ2VzL2JveFBhcnRuZXIuZ2lmKSA9DQpu
by1yZXBlYXQgbGVmdCB0b3A7IEZMT0FUOiBsZWZ0OyBIRUlHSFQ6IDEyMnB4
DQp9DQoucGFydG5lciBQLmxvZ29QYXJ0bmVyIHsNCglQT1NJVElPTjogYWJz
b2x1dGU7IFRPUDogM3B4OyBMRUZUOiAxMzFweA0KfQ0KLnBhcnRuZXIgUC5u
b21lUGFydG5lciB7DQoJUE9TSVRJT046IGFic29sdXRlOyBURVhULUFMSUdO
OiBsZWZ0OyBXSURUSDogMTE0cHg7IEZPTlQ6IGJvbGQgMTFweCA9DQoiVHJl
YnVjaGV0IE1TIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgVE9Q
OiAwcHg7IExFRlQ6IDlweA0KfQ0KLnBhcnRuZXIgUC5ub21lUGFydG5lciBT
UEFOIHsNCglGT05ULVNUWUxFOiBpdGFsaWM7IEZPTlQtV0VJR0hUOiA0MDAN
Cn0NCi5wYXJ0bmVyIFAuZGVzY09mZmVydGEgew0KCVBPU0lUSU9OOiBhYnNv
bHV0ZTsgVEVYVC1BTElHTjogbGVmdDsgV0lEVEg6IDExOXB4OyBGT05UOiBi
b2xkIDExcHggPQ0KIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2Es
IHNhbnMtc2VyaWY7IFRPUDogNjhweDsgTEVGVDogOXB4DQp9DQoucGFydG5l
ciBQLmRlc2NPZmZlcnRhIEEgew0KCURJU1BMQVk6IGJsb2NrDQp9DQpESVYu
cHJlcGFnYXRlIHsNCglCQUNLR1JPVU5EOiAjZmZmDQp9DQpESVYucHJlcGFn
YXRlIFRBQkxFLmNvbXBhcmF0aXZhIHsNCglCT1JERVItQ09MTEFQU0U6IGNv
bGxhcHNlOyBCQUNLR1JPVU5EOiAjZmZmDQp9DQpESVYucHJlcGFnYXRlIFRB
QkxFLmNvbXBhcmF0aXZhIFRIIHsNCglCT1JERVItQk9UVE9NOiBzaWx2ZXIg
MXB4IGRvdHRlZDsgUEFERElORy1CT1RUT006IDRweDsgUEFERElORy1MRUZU
OiA9DQo4cHg7IFBBRERJTkctUklHSFQ6IDhweDsgUEFERElORy1UT1A6IDRw
eA0KfQ0KRElWLnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSBURCB7DQoJ
Qk9SREVSLUJPVFRPTTogc2lsdmVyIDFweCBkb3R0ZWQ7IFBBRERJTkctQk9U
VE9NOiA0cHg7IFBBRERJTkctTEVGVDogPQ0KOHB4OyBQQURESU5HLVJJR0hU
OiA4cHg7IFBBRERJTkctVE9QOiA0cHgNCn0NCkRJVi5wcmVwYWdhdGUgVEFC
TEUuY29tcGFyYXRpdmEgVEhFQUQgew0KCVRFWFQtQUxJR046IGxlZnQNCn0N
CkRJVi5wcmVwYWdhdGUgVEFCTEUuY29tcGFyYXRpdmEgVEhFQUQgVEggew0K
CVRFWFQtQUxJR046IGxlZnQNCn0NCkRJVi5wcmVwYWdhdGUgVEFCTEUuY29t
cGFyYXRpdmEgLm5vcm1hbGUgew0KCUJBQ0tHUk9VTkQ6ICNmZmYNCn0NCkRJ
Vi5wcmVwYWdhdGUgVEFCTEUuY29tcGFyYXRpdmEgLmV2aWRlbnphIHsNCglC
QUNLR1JPVU5EOiAjZWVlDQp9DQpESVYucHJlcGFnYXRlIFRBQkxFLmNvbXBh
cmF0aXZhIC5ub3JtYWxlIFRIIHsNCglCQUNLR1JPVU5EOiAjZmZmOyBDT0xP
UjogIzAwMDsgQk9SREVSLVJJR0hUOiBzaWx2ZXIgMXB4IGRvdHRlZA0KfQ0K
RElWLnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSAuZXZpZGVuemEgVEgg
ew0KCUJBQ0tHUk9VTkQ6ICNlZWU7IEJPUkRFUi1SSUdIVDogc2lsdmVyIDFw
eCBkb3R0ZWQNCn0NCkRJVi5wcmVwYWdhdGUgVEFCTEUuY29tcGFyYXRpdmEg
Lm5vcm1hbGUgVEQgew0KCUJBQ0tHUk9VTkQ6ICNmZmYNCn0NCkRJVi5wcmVw
YWdhdGUgVEFCTEUuY29tcGFyYXRpdmEgLmV2aWRlbnphIFREIHsNCglCQUNL
R1JPVU5EOiAjZWVlDQp9DQpESVYucHJlcGFnYXRlIFRBQkxFLmNvbXBhcmF0
aXZhIC5ub3JtYWxlIFRELnVuaWNhIHsNCglCQUNLR1JPVU5EOiAjZmZmDQp9
DQpESVYucHJlcGFnYXRlIFRBQkxFLmNvbXBhcmF0aXZhIC5ldmlkZW56YSBU
RC51bmljYSB7DQoJQkFDS0dST1VORDogI2VlZQ0KfQ0KRElWLmFub25pbWUg
ew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5H
LUxFRlQ6IDBweDsgV0lEVEg6IDMzNXB4OyA9DQpQQURESU5HLVJJR0hUOiAw
cHg7IEZMT0FUOiBsZWZ0OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYubm9t
aW5hdGl2ZSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7
IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogMzM1cHg7ID0NClBBRERJTkct
UklHSFQ6IDBweDsgRkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0N
CkRJVi5hbm9uaW1lIEg0IHsNCglNQVJHSU46IDBweCAwcHggMHB4IDEycHg7
IENPTE9SOiAjZjkwOyBGT05ULVNJWkU6IDE0cHgNCn0NCkRJVi5ub21pbmF0
aXZlIEg0IHsNCglNQVJHSU46IDBweCAwcHggMHB4IDEycHg7IENPTE9SOiAj
ZjkwOyBGT05ULVNJWkU6IDE0cHgNCn0NCkRJViNwcmVwYWdhdGUgRElWLmJv
eDFhIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDhweCAwcHg7
IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogNjcwcHg7ID0NClBBRERJTkct
UklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9JbW1hZ2luaS9icmFuZGJvb2svYm94MWIuanBnKSBuby1yZXBl
YXQ7ID0NCkhFSUdIVDogMTYycHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJ
ViNwcmVwYWdhdGUgRElWLmJveDFhIEg0LnRpdG9sbyB7DQoJUEFERElORy1C
T1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQ
QURESU5HLVJJR0hUOiA9DQowcHg7IFBBRERJTkctVE9QOiAxMHB4DQp9DQpE
SVYjcHJlcGFnYXRlIERJVi5ib3gxYSBJTUcgew0KCVBBRERJTkctQk9UVE9N
OiAxNnB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAxNnB4OyBQQURE
SU5HLVJJR0hUOiA9DQoxNnB4OyBQQURESU5HLVRPUDogMTZweA0KfQ0KRElW
I3ByZXBhZ2F0ZSBESVYuYm94MWEgTEkgew0KCU1BUkdJTjogNnB4IDE2cHgg
NnB4IDE0NnB4DQp9DQoqIEgzIEEgew0KCVRFWFQtVFJBTlNGT1JNOiB1cHBl
cmNhc2U7IENPTE9SOiAjZjYzOyBGT05ULVNJWkU6IDEycHg7IEZPTlQtV0VJ
R0hUOiA9DQpib2xkDQp9DQojcGFubmVsbG9Nb3ZlT25IUCAjbW92ZU9uIEgz
IEEgew0KCVRFWFQtVFJBTlNGT1JNOiBsb3dlcmNhc2U7IE1BUkdJTjogMHB4
IDBweCAwcHggNnB4DQp9DQpBIHsNCglPVVRMSU5FLVNUWUxFOiBub25lOyBP
VVRMSU5FLUNPTE9SOiBpbnZlcnQ7IE9VVExJTkUtV0lEVEg6IG1lZGl1bQ0K
fQ0KQTpob3ZlciB7DQoJQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmU7IEJP
UkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgQk9SREVSLVRPUDogPQ0KbWVkaXVt
IG5vbmU7IEJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmUNCn0NCkE6YWN0aXZl
IHsNCglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9SREVSLUxFRlQ6
IG1lZGl1bSBub25lOyBCT1JERVItVE9QOiA9DQptZWRpdW0gbm9uZTsgQk9S
REVSLVJJR0hUOiBtZWRpdW0gbm9uZQ0KfQ0KQTpmb2N1cyB7DQoJQk9SREVS
LUJPVFRPTTogbWVkaXVtIG5vbmU7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9u
ZTsgQk9SREVSLVRPUDogPQ0KbWVkaXVtIG5vbmU7IEJPUkRFUi1SSUdIVDog
bWVkaXVtIG5vbmUNCn0NCjpmb2N1cyB7DQoJLW1vei1vdXRsaW5lLXN0eWxl
OiBub25lDQp9DQpESVYuYm94UHVzaERpbmFtaXogew0KCVdJRFRIOiA2NDFw
eDsgTUFSR0lOLUJPVFRPTTogMjRweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9ib3hQdXNoRGluYW1pei5q
cGcpIG5vLXJlcGVhdCBsZWZ0ID0NCnRvcDsgSEVJR0hUOiAxMzJweA0KfQ0K
RElWLmJveFB1c2hEaW5hbWl6IEgzIHsNCj0wOQ0KfQ0KRElWLmJveFB1c2hE
aW5hbWl6IEgzIFNQQU4gew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgTUFSR0lO
LVRPUDogLTEwMDBweA0KfQ0KRElWLmJveFB1c2hEaW5hbWl6IFAgew0KCVBB
RERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogMTY4cHg7IFBBRERJ
TkctUklHSFQ6IDEycHg7ID0NClBBRERJTkctVE9QOiA2MHB4DQp9DQpIMy5y
ZWNhbGxEaW5hbSB7DQoJTUFSR0lOLVRPUDogNDJweDsgV0lEVEg6IDY3MHB4
OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL3JlY2FsbERpbmFtLmdpZikgbm8tcmVwZWF0IGxlZnQgdG9wOyA9
DQpIRUlHSFQ6IDcycHgNCn0NCkgzLnJlY2FsbERpbmFtIFNQQU4gew0KCVBP
U0lUSU9OOiBhYnNvbHV0ZTsgTUFSR0lOLVRPUDogLTEwMDBweA0KfQ0KLmFz
c2ljdXJhemlvbmkgSDIgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ
TjogMHB4OyBQQURESU5HLUxFRlQ6IDhweDsgUEFERElORy1SSUdIVDogPQ0K
MHB4OyBGT05UOiBib2xkIDE2cHgvMzJweCAiVHJlYnVjaGV0IE1TIiwgQXJp
YWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFDS0dST1VORDogdXJs
KGh0dHA6Ly93d3cuY2FydGFzaS5pdC9pb1NpMjAxMC9pbWFnZXMvYmdIMy5n
aWYpID0NCm5vLXJlcGVhdCBsZWZ0IGNlbnRlcjsgSEVJR0hUOiAzMnB4OyBD
T0xPUjogI2Y5MDsgUEFERElORy1UT1A6IDBweA0KfQ0KI3ZhbnRhZ2dpQ2Fy
dGEgI2FjY29yZGlvbiBVTCB7DQoJTElTVC1TVFlMRS1UWVBFOiBub25lOyBM
SVNULVNUWUxFLUlNQUdFOiBub25lDQp9DQojdmFudGFnZ2lDYXJ0YSAjYWNj
b3JkaW9uIEgzIHsNCglQQURESU5HLUxFRlQ6IDYwcHgNCn0NCiN2YW50YWdn
aUNhcnRhICNhY2NvcmRpb24gSDMgSU1HIHsNCglQT1NJVElPTjogYWJzb2x1
dGU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5H
LUxFRlQ6ID0NCjBweDsgUEFERElORy1SSUdIVDogMHB4OyBUT1A6IDFweDsg
UEFERElORy1UT1A6IDBweDsgTEVGVDogMnB4DQp9DQojdmFudGFnZ2lDYXJ0
YSAjYWNjb3JkaW9uIEgzLnRpdG9sbyB7DQoJTUFSR0lOOiA2cHggMHB4IDBw
eA0KfQ0KRElWLmJveHdpZGUgew0KCVdJRFRIOiA2NjBweDsgQkFDS0dST1VO
RDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9iZ19i
b3h3aWRlLmpwZykgbm8tcmVwZWF0IGxlZnQgdG9wOyA9DQpIRUlHSFQ6IDEy
NXB4DQp9DQpESVYuYm94d2lkZSBIMyB7DQoJUEFERElORy1CT1RUT006IDBw
eDsgUEFERElORy1MRUZUOiA4cHg7IFBBRERJTkctUklHSFQ6IDhweDsgQ09M
T1I6ID0NCiNmOTA7IEZPTlQtU0laRTogMThweDsgUEFERElORy1UT1A6IDE0
cHgNCn0NCkRJVi5ib3h3aWRlIFAgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7
IFBBRERJTkctTEVGVDogOHB4OyBQQURESU5HLVJJR0hUOiA4cHg7IENPTE9S
OiA9DQojNjY2OyBGT05ULVNJWkU6IDExcHg7IFBBRERJTkctVE9QOiAxMnB4
DQp9DQoucmljYXJpY2hlTGlzdCB7DQoJQk9SREVSLUJPVFRPTS1TVFlMRTog
bm9uZTsgUEFERElORy1CT1RUT006IDBweDsgQk9SREVSLVJJR0hULVNUWUxF
OiA9DQpub25lOyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFdJ
RFRIOiA2NzJweDsgUEFERElORy1SSUdIVDogMHB4OyA9DQpCT1JERVItQ09M
TEFQU0U6IGNvbGxhcHNlOyBGT05UOiAxMnB4ICJUcmVidWNoZXQgTVMiLCBB
cmlhbCwgSGVsdmV0aWNhLCA9DQpzYW5zLXNlcmlmOyBCT1JERVItVE9QLVNU
WUxFOiBub25lOyBUQUJMRS1MQVlPVVQ6IGZpeGVkOyA9DQpCT1JERVItTEVG
VC1TVFlMRTogbm9uZTsgUEFERElORy1UT1A6IDBweA0KfQ0KLnJpY2FyaWNo
ZUxpc3QgVEQub2ZmZXJ0YSB7DQoJV0lEVEg6IDIxMHB4OyBDT0xPUjogI2Vm
OWQxZDsgRk9OVC1TSVpFOiAxNHB4OyBGT05ULVdFSUdIVDogYm9sZA0KfQ0K
LnJpY2FyaWNoZUxpc3QgVEggew0KCUJPUkRFUi1CT1RUT006ICNlMmUyZTIg
MnB4IHNvbGlkOyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsg
PQ0KUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgUEFE
RElORy1UT1A6IDBweA0KfQ0KLnJpY2FyaWNoZUxpc3QgVFIgLmxvZ2hpIHsN
CglURVhULUFMSUdOOiBjZW50ZXI7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1B
UkdJTjogMHB4OyBQQURESU5HLUxFRlQ6ID0NCjBweDsgV0lEVEg6IDE4NXB4
OyBQQURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCi5y
aWNhcmljaGVMaXN0IC5hbHQgew0KCUJBQ0tHUk9VTkQ6ICNmNGY0ZjQNCn0N
Ci5yaWNhcmljaGVMaXN0IFRIIHsNCglCT1JERVItQk9UVE9NOiAjZTJlMmUy
IDJweCBzb2xpZDsgVEVYVC1BTElHTjogbGVmdDsgUEFERElORy1CT1RUT006
ID0NCjIycHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDEycHg7IFBB
RERJTkctUklHSFQ6IDEycHg7IENPTE9SOiAjNjY2OyA9DQpGT05ULVNJWkU6
IDEycHg7IFZFUlRJQ0FMLUFMSUdOOiBtaWRkbGU7IEZPTlQtV0VJR0hUOiBi
b2xkOyA9DQpCT1JERVItUklHSFQ6ICNlMmUyZTIgMXB4IHNvbGlkOyBQQURE
SU5HLVRPUDogMjJweA0KfQ0KLnJpY2FyaWNoZUxpc3QgVEQgew0KCUJPUkRF
Ui1CT1RUT006ICNlMmUyZTIgMnB4IHNvbGlkOyBURVhULUFMSUdOOiBsZWZ0
OyBQQURESU5HLUJPVFRPTTogPQ0KMjJweDsgTUFSR0lOOiAwcHg7IFBBRERJ
TkctTEVGVDogMTJweDsgUEFERElORy1SSUdIVDogMTJweDsgQ09MT1I6ICM2
NjY7ID0NCkZPTlQtU0laRTogMTJweDsgVkVSVElDQUwtQUxJR046IG1pZGRs
ZTsgRk9OVC1XRUlHSFQ6IGJvbGQ7ID0NCkJPUkRFUi1SSUdIVDogI2UyZTJl
MiAxcHggc29saWQ7IFBBRERJTkctVE9QOiAyMnB4DQp9DQoucmljYXJpY2hl
TGlzdCBUUiAuaGVhZGVyIHsNCglURVhULUFMSUdOOiBjZW50ZXI7IFBBRERJ
TkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5H
LVJJR0hUOiAwcHg7IEhFSUdIVDogNjBweDsgQ09MT1I6ICMzMzM7IEZPTlQt
U0laRTogMTRweDsgPQ0KVkVSVElDQUwtQUxJR046IG1pZGRsZTsgUEFERElO
Ry1UT1A6IDMycHgNCn0NCi5oZWxwTG9naW4gSU1HIHsNCglCT1JERVItQk9U
VE9NOiByZWQgMXB4IGRvdHRlZDsgQk9SREVSLUxFRlQ6IHJlZCAxcHggZG90
dGVkOyBNQVJHSU46ID0NCjEycHg7IEZMT0FUOiBsZWZ0OyBCT1JERVItVE9Q
OiByZWQgMXB4IGRvdHRlZDsgQk9SREVSLVJJR0hUOiByZWQgMXB4ID0NCmRv
dHRlZA0KfQ0KLmJveHdpZGUgU1BBTi5ldmlkZW56YTEgew0KCVBBRERJTkct
Qk9UVE9NOiAxMnB4OyBQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkctUklH
SFQ6IDEycHg7IENPTE9SOiA9DQojMzMzOyBGT05ULVNJWkU6IDEwcHg7IFBB
RERJTkctVE9QOiAxMnB4DQp9DQouYm94d2lkZSBTUEFOLmV2aWRlbnphMSBT
VFJPTkcgew0KCUNPTE9SOiAjZjkwDQp9DQouYm94d2lkZSBTUEFOLmV2aWRl
bnphMiB7DQoJUEFERElORy1CT1RUT006IDEycHg7IFBBRERJTkctTEVGVDog
MTJweDsgUEFERElORy1SSUdIVDogMTJweDsgQ09MT1I6ID0NCiMzMzM7IEZP
TlQtU0laRTogMTBweDsgUEFERElORy1UT1A6IDEycHgNCn0NCi5ib3h3aWRl
IFNQQU4uZXZpZGVuemEyIFNUUk9ORyB7DQoJQ09MT1I6ICNmOTANCn0NCi5i
b3h3aWRlIERJViB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFERElORy1M
RUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgPQ0KUEFERElORy1UT1A6
IDIycHgNCn0NCg0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMzY1
My4xRjVBRURBMA0KQ29udGVudC1UeXBlOiB0ZXh0L2NzczsNCgljaGFyc2V0
PSJpc28tODg1OS0xIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVv
dGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDovL3d3dy5j
YXJ0YXNpLml0L2dyZXlib3gvZ2Jfc3R5bGVzLmNzcw0KDQojR0Jfb3Zlcmxh
eSB7DQoJWi1JTkRFWDogMTAwOyBQT1NJVElPTjogYWJzb2x1dGU7IEJBQ0tH
Uk9VTkQtQ09MT1I6ICMwMDA7IE1BUkdJTjogYXV0bzsgPQ0KVE9QOiAwcHg7
IExFRlQ6IDBweA0KfQ0KI0dCX3dpbmRvdyB7DQoJWi1JTkRFWDogMTUwOyBQ
T1NJVElPTjogYWJzb2x1dGU7IEZPTlQtU0laRTogMXB4OyBPVkVSRkxPVzog
dmlzaWJsZTsgPQ0KVE9QOiAwcHg7IExFRlQ6IDBweA0KfQ0KI0dCX3dpbmRv
dyAuY29udGVudCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAw
cHg7IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogYXV0bzsgPQ0KUEFERElO
Ry1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQojR0JfZnJhbWUg
ew0KCUJPUkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFE
RElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7ID0NClBBRERJTkctTEVG
VDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IFdISVRFLVNQQUNFOiBub3dy
YXA7IE9WRVJGTE9XOiA9DQphdXRvOyBCT1JERVItVE9QOiAwcHg7IEJPUkRF
Ui1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQouR0JfR2FsbGVy
eSB7DQoJTUFSR0lOOiAwcHggMjJweA0KfQ0KLkdCX0dhbGxlcnkgLmNvbnRl
bnQgew0KCUJPUkRFUi1CT1RUT006ICNkZGQgM3B4IHNvbGlkOyBCT1JERVIt
TEVGVDogI2RkZCAzcHggc29saWQ7ID0NCkJBQ0tHUk9VTkQtQ09MT1I6ICNm
ZmY7IEJPUkRFUi1UT1A6ICNkZGQgM3B4IHNvbGlkOyBCT1JERVItUklHSFQ6
ICNkZGQgPQ0KM3B4IHNvbGlkDQp9DQouR0JfaGVhZGVyIHsNCglaLUlOREVY
OiA1MDA7IEJPUkRFUi1CT1RUT006ICM1NTUgMnB4IHNvbGlkOyBQT1NJVElP
TjogYWJzb2x1dGU7ID0NCk1BUkdJTjogMHB4OyBCT1JERVItVE9QOiAjNTU1
IDJweCBzb2xpZDsgVE9QOiAxMHB4OyBMRUZUOiAwcHgNCn0NCi5HQl9oZWFk
ZXIgLmlubmVyIHsNCglQQURESU5HLUJPVFRPTTogMnB4OyBCQUNLR1JPVU5E
LUNPTE9SOiAjMzMzOyBQQURESU5HLUxFRlQ6IDIwcHg7ID0NClBBRERJTkct
UklHSFQ6IDIwcHg7IEZPTlQtRkFNSUxZOiBBcmlhbCwgVmVyZGFuYSwgc2Fu
cy1zZXJpZjsgPQ0KUEFERElORy1UT1A6IDJweA0KfQ0KLkdCX2hlYWRlciBU
QUJMRSB7DQoJTUFSR0lOOiAwcHg7IFdJRFRIOiAxMDAlOyBCT1JERVItQ09M
TEFQU0U6IGNvbGxhcHNlDQp9DQouR0JfaGVhZGVyIC5jYXB0aW9uIHsNCglU
RVhULUFMSUdOOiBsZWZ0OyBXSElURS1TUEFDRTogbm93cmFwOyBDT0xPUjog
I2VlZTsgRk9OVC1TSVpFOiAyMHB4DQp9DQouR0JfaGVhZGVyIC5jbG9zZSB7
DQoJVEVYVC1BTElHTjogcmlnaHQNCn0NCi5HQl9oZWFkZXIgLmNsb3NlIElN
RyB7DQoJWi1JTkRFWDogNTAwOyBDVVJTT1I6IHBvaW50ZXINCn0NCi5HQl9o
ZWFkZXIgLm1pZGRsZSB7DQoJVEVYVC1BTElHTjogY2VudGVyOyBXSElURS1T
UEFDRTogbm93cmFwDQp9DQojR0JfbWlkZGxlIHsNCglDT0xPUjogI2VlZQ0K
fQ0KI0dCX21pZGRsZSBJTUcgew0KCVZFUlRJQ0FMLUFMSUdOOiBtaWRkbGU7
IENVUlNPUjogcG9pbnRlcg0KfQ0KI0dCX21pZGRsZSAuZGlzYWJsZWQgew0K
CUNVUlNPUjogZGVmYXVsdA0KfQ0KI0dCX21pZGRsZSAubGVmdCB7DQoJUEFE
RElORy1SSUdIVDogMTBweA0KfQ0KI0dCX21pZGRsZSAucmlnaHQgew0KCVBB
RERJTkctTEVGVDogMTBweA0KfQ0KLkdCX1dpbmRvdyAuY29udGVudCB7DQoJ
Qk9SREVSLUJPVFRPTTogI2NjYyAzcHggc29saWQ7IEJPUkRFUi1MRUZUOiAj
Y2NjIDNweCBzb2xpZDsgPQ0KQkFDS0dST1VORC1DT0xPUjogI2ZmZjsgQk9S
REVSLVRPUDogbWVkaXVtIG5vbmU7IEJPUkRFUi1SSUdIVDogI2NjYyAzcHgg
PQ0Kc29saWQNCn0NCi5HQl9XaW5kb3cgLmhlYWRlciB7DQoJQk9SREVSLUJP
VFRPTTogI2FhYSAxcHggc29saWQ7IEJPUkRFUi1MRUZUOiAjY2NjIDNweCBz
b2xpZDsgPQ0KUEFERElORy1CT1RUT006IDNweDsgTUFSR0lOOiAwcHg7IFBB
RERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7ID0NCkhFSUdI
VDogMjJweDsgQ09MT1I6ICMzMzM7IEZPTlQtU0laRTogMTJweDsgQk9SREVS
LVRPUDogIzk5OSAxcHggc29saWQ7ID0NCkJPUkRFUi1SSUdIVDogI2NjYyAz
cHggc29saWQ7IFBBRERJTkctVE9QOiAzcHgNCn0NCi5HQl9XaW5kb3cgLmNh
cHRpb24gew0KCVRFWFQtQUxJR046IGxlZnQ7IFBBRERJTkctUklHSFQ6IDIw
cHg7IFdISVRFLVNQQUNFOiBub3dyYXA7IEZPTlQtU0laRTogPQ0KMTJweDsg
Rk9OVC1XRUlHSFQ6IGJvbGQNCn0NCi5HQl9XaW5kb3cgLmNsb3NlIHsNCglU
RVhULUFMSUdOOiByaWdodA0KfQ0KLkdCX1dpbmRvdyAuY2xvc2UgU1BBTiB7
DQoJRk9OVC1TSVpFOiAxMnB4OyBDVVJTT1I6IHBvaW50ZXINCn0NCi5HQl9X
aW5kb3cgLmNsb3NlIElNRyB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFE
RElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDNweDsgQ1VSU09SOiA9
DQpwb2ludGVyOyBQQURESU5HLVRPUDogMHB4DQp9DQouR0JfV2luZG93IC5v
biB7DQoJQk9SREVSLUJPVFRPTTogIzMzMyAxcHggc29saWQNCn0NCi5HQl9X
aW5kb3cgLmNsaWNrIHsNCglCT1JERVItQk9UVE9NOiByZWQgMXB4IHNvbGlk
DQp9DQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFDQzM2NTMuMUY1
QUVEQTANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
DQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxl
DQpDb250ZW50LUxvY2F0aW9uOiBodHRwOi8vd3d3LmNhcnRhc2kuaXQvamF2
YXNjcmlwdC9qcXVlcnkuanMNCg0KLyohDQogKiBqUXVlcnkgSmF2YVNjcmlw
dCBMaWJyYXJ5IHYxLjQuMg0KICogaHR0cDovL2pxdWVyeS5jb20vDQogKg0K
ICogQ29weXJpZ2h0IDIwMTAsIEpvaG4gUmVzaWcNCiAqIER1YWwgbGljZW5z
ZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLg0K
ICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQ0KICoNCiAqIEluY2x1ZGVz
IFNpenpsZS5qcw0KICogaHR0cDovL3NpenpsZWpzLmNvbS8NCiAqIENvcHly
aWdodCAyMDEwLCBUaGUgRG9qbyBGb3VuZGF0aW9uDQogKiBSZWxlYXNlZCB1
bmRlciB0aGUgTUlULCBCU0QsIGFuZCBHUEwgTGljZW5zZXMuDQogKg0KICog
RGF0ZTogU2F0IEZlYiAxMyAyMjozMzo0OCAyMDEwIC0wNTAwDQogKi8NCihm
dW5jdGlvbiAoQSwgdykgew0KICAgIGZ1bmN0aW9uIG1hKCkgew0KICAgICAg
ICBpZiAoIWMuaXNSZWFkeSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAg
ICAgICAgICAgICBzLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIp
DQogICAgICAgICAgICB9IGNhdGNoIChhKSB7DQogICAgICAgICAgICAgICAg
c2V0VGltZW91dChtYSwgMSk7DQogICAgICAgICAgICAgICAgcmV0dXJuDQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBjLnJlYWR5KCkNCiAgICAgICAg
fQ0KICAgIH0NCiAgICBmdW5jdGlvbiBRYShhLCBiKSB7DQogICAgICAgIGIu
c3JjID8gYy5hamF4KHsNCiAgICAgICAgICAgIHVybDogYi5zcmMsDQogICAg
ICAgICAgICBhc3luYzogZmFsc2UsDQogICAgICAgICAgICBkYXRhVHlwZTog
InNjcmlwdCINCiAgICAgICAgfSkgOiBjLmdsb2JhbEV2YWwoYi50ZXh0IHx8
IGIudGV4dENvbnRlbnQgfHwgYi5pbm5lckhUTUwgfHwgIiIpOw0KICAgICAg
ICBiLnBhcmVudE5vZGUgJiYgYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIp
DQogICAgfQ0KICAgIGZ1bmN0aW9uIFgoYSwgYiwgZCwgZiwgZSwgaikgew0K
ICAgICAgICB2YXIgaSA9M0QgYS5sZW5ndGg7DQogICAgICAgIGlmICh0eXBl
b2YgYiA9M0Q9M0Q9M0QgIm9iamVjdCIpIHsNCiAgICAgICAgICAgIGZvciAo
dmFyIG8gaW4gYikgWChhLCBvLCBiW29dLCBmLCBlLCBkKTsNCiAgICAgICAg
ICAgIHJldHVybiBhDQogICAgICAgIH0NCiAgICAgICAgaWYgKGQgIT0zRD0z
RCB3KSB7DQogICAgICAgICAgICBmID0zRCAhaiAmJiBmICYmIGMuaXNGdW5j
dGlvbihkKTsNCiAgICAgICAgICAgIGZvciAobyA9M0QgMDsgbyA8IGk7IG8r
KykgZShhW29dLCBiLCBmID8gZC5jYWxsKGFbb10sIG8sID0NCmUoYVtvXSwg
YikpIDogZCwgaik7DQogICAgICAgICAgICByZXR1cm4gYQ0KICAgICAgICB9
DQogICAgICAgIHJldHVybiBpID8gZShhWzBdLCBiKSA6IHcNCiAgICB9DQog
ICAgZnVuY3Rpb24gSigpIHsNCiAgICAgICAgcmV0dXJuIChuZXcgRGF0ZSku
Z2V0VGltZSgpDQogICAgfQ0KICAgIGZ1bmN0aW9uIFkoKSB7DQogICAgICAg
IHJldHVybiBmYWxzZQ0KICAgIH0NCiAgICBmdW5jdGlvbiBaKCkgew0KICAg
ICAgICByZXR1cm4gdHJ1ZQ0KICAgIH0NCiAgICBmdW5jdGlvbiBuYShhLCBi
LCBkKSB7DQogICAgICAgIGRbMF0udHlwZSA9M0QgYTsNCiAgICAgICAgcmV0
dXJuIGMuZXZlbnQuaGFuZGxlLmFwcGx5KGIsIGQpDQogICAgfQ0KICAgIGZ1
bmN0aW9uIG9hKGEpIHsNCiAgICAgICAgdmFyIGIsIGQgPTNEIFtdLA0KICAg
ICAgICAgICAgZiA9M0QgW10sDQogICAgICAgICAgICBlID0zRCBhcmd1bWVu
dHMsDQogICAgICAgICAgICBqLCBpLCBvLCBrLCBuLCByOw0KICAgICAgICBp
ID0zRCBjLmRhdGEodGhpcywgImV2ZW50cyIpOw0KICAgICAgICBpZiAoIShh
LmxpdmVGaXJlZCA9M0Q9M0Q9M0QgdGhpcyB8fCAhaSB8fCAhaS5saXZlIHx8
IGEuYnV0dG9uICYmID0NCmEudHlwZSA9M0Q9M0Q9M0QgImNsaWNrIikpIHsN
CiAgICAgICAgICAgIGEubGl2ZUZpcmVkID0zRCB0aGlzOw0KICAgICAgICAg
ICAgdmFyIHUgPTNEIGkubGl2ZS5zbGljZSgwKTsNCiAgICAgICAgICAgIGZv
ciAoayA9M0QgMDsgayA8IHUubGVuZ3RoOyBrKyspIHsNCiAgICAgICAgICAg
ICAgICBpID0zRCB1W2tdOw0KICAgICAgICAgICAgICAgIGkub3JpZ1R5cGUu
cmVwbGFjZShPLCAiIikgPTNEPTNEPTNEIGEudHlwZSA/ID0NCmYucHVzaChp
LnNlbGVjdG9yKSA6IHUuc3BsaWNlKGstLSwgMSkNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIGogPTNEIGMoYS50YXJnZXQpLmNsb3Nlc3QoZiwgYS5j
dXJyZW50VGFyZ2V0KTsNCiAgICAgICAgICAgIG4gPTNEIDA7DQogICAgICAg
ICAgICBmb3IgKHIgPTNEDQogICAgICAgICAgICBqLmxlbmd0aDsgbiA8IHI7
IG4rKykgZm9yIChrID0zRCAwOyBrIDwgdS5sZW5ndGg7IGsrKykgew0KICAg
ICAgICAgICAgICAgIGkgPTNEIHVba107DQogICAgICAgICAgICAgICAgaWYg
KGpbbl0uc2VsZWN0b3IgPTNEPTNEPTNEIGkuc2VsZWN0b3IpIHsNCiAgICAg
ICAgICAgICAgICAgICAgbyA9M0QgaltuXS5lbGVtOw0KICAgICAgICAgICAg
ICAgICAgICBmID0zRCBudWxsOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
aS5wcmVUeXBlID0zRD0zRD0zRCAibW91c2VlbnRlciIgfHwgaS5wcmVUeXBl
ID0NCj0zRD0zRD0zRCAibW91c2VsZWF2ZSIpIGYgPTNEIGMoYS5yZWxhdGVk
VGFyZ2V0KS5jbG9zZXN0KGkuc2VsZWN0b3IpWzBdOw0KICAgICAgICAgICAg
ICAgICAgICBpZiAoIWYgfHwgZiAhPTNEPTNEIG8pIGQucHVzaCh7DQogICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtOiBvLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlT2JqOiBpDQogICAgICAgICAgICAgICAgICAgIH0p
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgbiA9M0QgMDsNCiAgICAgICAgICAgIGZvciAociA9M0QgZC5sZW5ndGg7
IG4gPCByOyBuKyspIHsNCiAgICAgICAgICAgICAgICBqID0zRCBkW25dOw0K
ICAgICAgICAgICAgICAgIGEuY3VycmVudFRhcmdldCA9M0Qgai5lbGVtOw0K
ICAgICAgICAgICAgICAgIGEuZGF0YSA9M0Qgai5oYW5kbGVPYmouZGF0YTsN
CiAgICAgICAgICAgICAgICBhLmhhbmRsZU9iaiA9M0Qgai5oYW5kbGVPYmo7
DQogICAgICAgICAgICAgICAgaWYgKGouaGFuZGxlT2JqLm9yaWdIYW5kbGVy
LmFwcGx5KGouZWxlbSwgZSkgPTNEPTNEPTNEID0NCmZhbHNlKSB7DQogICAg
ICAgICAgICAgICAgICAgIGIgPTNEIGZhbHNlOw0KICAgICAgICAgICAgICAg
ICAgICBicmVhaw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIHJldHVybiBiDQogICAgICAgIH0NCiAgICB9DQogICAg
ZnVuY3Rpb24gcGEoYSwgYikgew0KICAgICAgICByZXR1cm4gImxpdmUuIiAr
IChhICYmIGEgIT0zRD0zRCAiKiIgPyBhICsgIi4iIDogIiIpICsgPQ0KYi5y
ZXBsYWNlKC9cLi9nLCAiYCIpLnJlcGxhY2UoLyAvZywgIiYiKQ0KICAgIH0N
CiAgICBmdW5jdGlvbiBxYShhKSB7DQogICAgICAgIHJldHVybiAhYSB8fCAh
YS5wYXJlbnROb2RlIHx8IGEucGFyZW50Tm9kZS5ub2RlVHlwZSA9M0Q9M0Q9
M0QgMTENCiAgICB9DQogICAgZnVuY3Rpb24gcmEoYSwgYikgew0KICAgICAg
ICB2YXIgZCA9M0QgMDsNCiAgICAgICAgYi5lYWNoKGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgIGlmICh0aGlzLm5vZGVOYW1lID0zRD0zRD0zRCAoYVtk
XSAmJiBhW2RdLm5vZGVOYW1lKSkgew0KICAgICAgICAgICAgICAgIHZhciBm
ID0zRCBjLmRhdGEoYVtkKytdKSwNCiAgICAgICAgICAgICAgICAgICAgZSA9
M0QgYy5kYXRhKHRoaXMsIGYpOw0KICAgICAgICAgICAgICAgIGlmIChmID0z
RCBmICYmIGYuZXZlbnRzKSB7DQogICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSBlLmhhbmRsZTsNCiAgICAgICAgICAgICAgICAgICAgZS5ldmVudHMgPTNE
IHt9Ow0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIGYpIGZv
ciAodmFyIGkgaW4gZltqXSkgPQ0KYy5ldmVudC5hZGQodGhpcywgaiwgZltq
XVtpXSwgZltqXVtpXS5kYXRhKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0NCiAgICAgICAgfSkNCiAgICB9DQogICAgZnVuY3Rpb24gc2Eo
YSwgYiwgZCkgew0KICAgICAgICB2YXIgZiwgZSwgajsNCiAgICAgICAgYiA9
M0QgYiAmJiBiWzBdID8gYlswXS5vd25lckRvY3VtZW50IHx8IGJbMF0gOiBz
Ow0KICAgICAgICBpZiAoYS5sZW5ndGggPTNEPTNEPTNEIDEgJiYgdHlwZW9m
IGFbMF0gPTNEPTNEPTNEICJzdHJpbmciICYmID0NCmFbMF0ubGVuZ3RoIDwg
NTEyICYmIGIgPTNEPTNEPTNEIHMgJiYgIXRhLnRlc3QoYVswXSkgJiYgPQ0K
KGMuc3VwcG9ydC5jaGVja0Nsb25lIHx8ICF1YS50ZXN0KGFbMF0pKSkgew0K
ICAgICAgICAgICAgZSA9M0QNCiAgICAgICAgICAgIHRydWU7DQogICAgICAg
ICAgICBpZiAoaiA9M0QgYy5mcmFnbWVudHNbYVswXV0pIGlmIChqICE9M0Q9
M0QgMSkgZiA9M0Qgag0KICAgICAgICB9DQogICAgICAgIGlmICghZikgew0K
ICAgICAgICAgICAgZiA9M0QgYi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
DQogICAgICAgICAgICBjLmNsZWFuKGEsIGIsIGYsIGQpDQogICAgICAgIH0N
CiAgICAgICAgaWYgKGUpIGMuZnJhZ21lbnRzW2FbMF1dID0zRCBqID8gZiA6
IDE7DQogICAgICAgIHJldHVybiB7DQogICAgICAgICAgICBmcmFnbWVudDog
ZiwNCiAgICAgICAgICAgIGNhY2hlYWJsZTogZQ0KICAgICAgICB9DQogICAg
fQ0KICAgIGZ1bmN0aW9uIEsoYSwgYikgew0KICAgICAgICB2YXIgZCA9M0Qg
e307DQogICAgICAgIGMuZWFjaCh2YS5jb25jYXQuYXBwbHkoW10sIHZhLnNs
aWNlKDAsIGIpKSwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgZFt0aGlz
XSA9M0QgYQ0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuIGQNCiAgICB9
DQogICAgZnVuY3Rpb24gd2EoYSkgew0KICAgICAgICByZXR1cm4gInNjcm9s
bFRvIiBpbiBhICYmIGEuZG9jdW1lbnQgPyBhIDogYS5ub2RlVHlwZSA9M0Q9
M0Q9M0QgPQ0KOSA/IGEuZGVmYXVsdFZpZXcgfHwgYS5wYXJlbnRXaW5kb3cg
OiBmYWxzZQ0KICAgIH0NCiAgICB2YXIgYyA9M0QgZnVuY3Rpb24gKGEsIGIp
IHsNCiAgICAgICAgcmV0dXJuIG5ldyBjLmZuLmluaXQoYSwgYikNCiAgICB9
LA0KICAgICAgICBSYSA9M0QgQS5qUXVlcnksDQogICAgICAgIFNhID0zRCBB
LiQsDQogICAgICAgIHMgPTNEIEEuZG9jdW1lbnQsDQogICAgICAgIFQsIFRh
ID0zRCAvXltePF0qKDxbXHdcV10rPilbXj5dKiR8XiMoW1x3LV0rKSQvLA0K
ICAgICAgICBVYSA9M0QgL14uW146I1xbXC4sXSokLywNCiAgICAgICAgVmEg
PTNEIC9cUy8sDQogICAgICAgIFdhID0zRCAvXihcc3xcdTAwQTApK3woXHN8
XHUwMEEwKSskL2csDQogICAgICAgIFhhID0zRCAvXjwoXHcrKVxzKlwvPz4o
Pzo8XC9cMT4pPyQvLA0KICAgICAgICBQID0zRCBuYXZpZ2F0b3IudXNlckFn
ZW50LA0KICAgICAgICB4YSA9M0QgZmFsc2UsDQogICAgICAgIFEgPTNEIFtd
LA0KICAgICAgICBMLCAkID0zRCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LA0KICAgICAgICBhYSA9M0QgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eSwNCiAgICAgICAgYmEgPTNEIEFycmF5LnByb3RvdHlwZS5wdXNoLA0K
ICAgICAgICBSID0zRCBBcnJheS5wcm90b3R5cGUuc2xpY2UsDQogICAgICAg
IHlhID0zRCBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjsNCiAgICBjLmZuID0z
RCBjLnByb3RvdHlwZSA9M0Qgew0KICAgICAgICBpbml0OiBmdW5jdGlvbiAo
YSwgYikgew0KICAgICAgICAgICAgdmFyIGQsIGY7DQogICAgICAgICAgICBp
ZiAoIWEpIHJldHVybiB0aGlzOw0KICAgICAgICAgICAgaWYgKGEubm9kZVR5
cGUpIHsNCiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPTNEIHRoaXNb
MF0gPTNEIGE7DQogICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPTNEIDE7
DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIGlmIChhID0zRD0zRD0zRCAiYm9keSIgJiYgIWIpIHsN
CiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPTNEIHM7DQogICAgICAg
ICAgICAgICAgdGhpc1swXSA9M0Qgcy5ib2R5Ow0KICAgICAgICAgICAgICAg
IHRoaXMuc2VsZWN0b3IgPTNEICJib2R5IjsNCiAgICAgICAgICAgICAgICB0
aGlzLmxlbmd0aCA9M0QgMTsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHR5cGVvZiBhID0z
RD0zRD0zRCAic3RyaW5nIikgaWYgKChkID0zRCBUYS5leGVjKGEpKSAmJiA9
DQooZFsxXSB8fCAhYikpIGlmIChkWzFdKSB7DQogICAgICAgICAgICAgICAg
ZiA9M0QgYiA/IGIub3duZXJEb2N1bWVudCB8fCBiIDogczsNCiAgICAgICAg
ICAgICAgICBpZiAoYSA9M0QgWGEuZXhlYyhhKSkgaWYgKGMuaXNQbGFpbk9i
amVjdChiKSkgew0KICAgICAgICAgICAgICAgICAgICBhID0zRCBbcy5jcmVh
dGVFbGVtZW50KGFbMV0pXTsNCiAgICAgICAgICAgICAgICAgICAgYy5mbi5h
dHRyLmNhbGwoYSwgYiwgdHJ1ZSkNCiAgICAgICAgICAgICAgICB9IGVsc2Ug
YSA9M0QgW2YuY3JlYXRlRWxlbWVudChhWzFdKV07DQogICAgICAgICAgICAg
ICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGEgPTNEIHNhKFtkWzFd
XSwgW2ZdKTsNCiAgICAgICAgICAgICAgICAgICAgYSA9M0QgKGEuY2FjaGVh
YmxlID8gYS5mcmFnbWVudC5jbG9uZU5vZGUodHJ1ZSkgOiA9DQphLmZyYWdt
ZW50KS5jaGlsZE5vZGVzDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIHJldHVybiBjLm1lcmdlKHRoaXMsIGEpDQogICAgICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmIChiID0zRCBzLmdldEVsZW1l
bnRCeUlkKGRbMl0pKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChiLmlk
ICE9M0Q9M0QgZFsyXSkgcmV0dXJuIFQuZmluZChhKTsNCiAgICAgICAgICAg
ICAgICAgICAgdGhpcy5sZW5ndGggPTNEIDE7DQogICAgICAgICAgICAgICAg
ICAgIHRoaXNbMF0gPTNEIGINCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgdGhpcy5jb250ZXh0ID0zRCBzOw0KICAgICAgICAgICAgICAg
IHRoaXMuc2VsZWN0b3IgPTNEIGE7DQogICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWIgJiYgL15cdyskLy50
ZXN0KGEpKSB7DQogICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RvciA9M0Qg
YTsNCiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPTNEIHM7DQogICAg
ICAgICAgICAgICAgYSA9M0Qgcy5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTsN
CiAgICAgICAgICAgICAgICByZXR1cm4gYy5tZXJnZSh0aGlzLCBhKQ0KICAg
ICAgICAgICAgfSBlbHNlIHJldHVybiAhYiB8fCBiLmpxdWVyeSA/IChiIHx8
IFQpLmZpbmQoYSkgOiA9DQpjKGIpLmZpbmQoYSk7DQogICAgICAgICAgICBl
bHNlIGlmIChjLmlzRnVuY3Rpb24oYSkpIHJldHVybiBULnJlYWR5KGEpOw0K
ICAgICAgICAgICAgaWYgKGEuc2VsZWN0b3IgIT0zRD0zRCB3KSB7DQogICAg
ICAgICAgICAgICAgdGhpcy5zZWxlY3RvciA9M0QgYS5zZWxlY3RvcjsNCiAg
ICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPTNEIGEuY29udGV4dA0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGMubWFrZUFycmF5KGEs
IHRoaXMpDQogICAgICAgIH0sDQogICAgICAgIHNlbGVjdG9yOiAiIiwNCiAg
ICAgICAganF1ZXJ5OiAiMS40LjIiLA0KICAgICAgICBsZW5ndGg6IDAsDQog
ICAgICAgIHNpemU6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVy
biB0aGlzLmxlbmd0aA0KICAgICAgICB9LA0KICAgICAgICB0b0FycmF5OiBm
dW5jdGlvbiAoKSB7DQogICAgICAgICAgICByZXR1cm4gUi5jYWxsKHRoaXMs
IDApDQogICAgICAgIH0sDQogICAgICAgIGdldDogZnVuY3Rpb24gKGEpIHsN
CiAgICAgICAgICAgIHJldHVybiBhID0zRD0zRCBudWxsID8gdGhpcy50b0Fy
cmF5KCkgOiBhIDwgMCA/ID0NCnRoaXMuc2xpY2UoYSlbMF0gOiB0aGlzW2Fd
DQogICAgICAgIH0sDQogICAgICAgIHB1c2hTdGFjazogZnVuY3Rpb24gKGEs
IGIsIGQpIHsNCiAgICAgICAgICAgIHZhciBmID0zRCBjKCk7DQogICAgICAg
ICAgICBjLmlzQXJyYXkoYSkgPyBiYS5hcHBseShmLCBhKSA6IGMubWVyZ2Uo
ZiwgYSk7DQogICAgICAgICAgICBmLnByZXZPYmplY3QgPTNEIHRoaXM7DQog
ICAgICAgICAgICBmLmNvbnRleHQgPTNEIHRoaXMuY29udGV4dDsNCiAgICAg
ICAgICAgIGlmIChiID0zRD0zRD0zRCAiZmluZCIpIGYuc2VsZWN0b3IgPTNE
IHRoaXMuc2VsZWN0b3IgKyA9DQoodGhpcy5zZWxlY3RvciA/ICIgIiA6ICIi
KSArIGQ7DQogICAgICAgICAgICBlbHNlIGlmIChiKSBmLnNlbGVjdG9yID0z
RCB0aGlzLnNlbGVjdG9yICsgIi4iICsgYiArICIoIiArIGQgPQ0KKyAiKSI7
DQogICAgICAgICAgICByZXR1cm4gZg0KICAgICAgICB9LA0KICAgICAgICBl
YWNoOiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgcmV0dXJuIGMu
ZWFjaCh0aGlzLCBhLCBiKQ0KDQogICAgICAgIH0sDQogICAgICAgIHJlYWR5
OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgYy5iaW5kUmVhZHkoKTsN
CiAgICAgICAgICAgIGlmIChjLmlzUmVhZHkpIGEuY2FsbChzLCBjKTsNCiAg
ICAgICAgICAgIGVsc2UgUSAmJiBRLnB1c2goYSk7DQogICAgICAgICAgICBy
ZXR1cm4gdGhpcw0KICAgICAgICB9LA0KICAgICAgICBlcTogZnVuY3Rpb24g
KGEpIHsNCiAgICAgICAgICAgIHJldHVybiBhID0zRD0zRD0zRCAtMSA/IHRo
aXMuc2xpY2UoYSkgOiB0aGlzLnNsaWNlKGEsICthICsgPQ0KMSkNCiAgICAg
ICAgfSwNCiAgICAgICAgZmlyc3Q6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgIHJldHVybiB0aGlzLmVxKDApDQogICAgICAgIH0sDQogICAgICAgIGxh
c3Q6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmVx
KC0xKQ0KICAgICAgICB9LA0KICAgICAgICBzbGljZTogZnVuY3Rpb24gKCkg
ew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKFIuYXBwbHko
dGhpcywgYXJndW1lbnRzKSwgInNsaWNlIiwgPQ0KUi5jYWxsKGFyZ3VtZW50
cykuam9pbigiLCIpKQ0KICAgICAgICB9LA0KICAgICAgICBtYXA6IGZ1bmN0
aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2so
Yy5tYXAodGhpcywgZnVuY3Rpb24gKGIsIGQpIHsNCiAgICAgICAgICAgICAg
ICByZXR1cm4gYS5jYWxsKGIsIGQsIGIpDQogICAgICAgICAgICB9KSkNCiAg
ICAgICAgfSwNCiAgICAgICAgZW5kOiBmdW5jdGlvbiAoKSB7DQogICAgICAg
ICAgICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IGMobnVsbCkNCiAgICAg
ICAgfSwNCiAgICAgICAgcHVzaDogYmEsDQogICAgICAgIHNvcnQ6IFtdLnNv
cnQsDQogICAgICAgIHNwbGljZTogW10uc3BsaWNlDQogICAgfTsNCiAgICBj
LmZuLmluaXQucHJvdG90eXBlID0zRCBjLmZuOw0KICAgIGMuZXh0ZW5kID0z
RCBjLmZuLmV4dGVuZCA9M0QgZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIg
YSA9M0QgYXJndW1lbnRzWzBdIHx8IHt9LA0KICAgICAgICAgICAgYiA9M0Qg
MSwNCiAgICAgICAgICAgIGQgPTNEIGFyZ3VtZW50cy5sZW5ndGgsDQogICAg
ICAgICAgICBmID0zRCBmYWxzZSwNCiAgICAgICAgICAgIGUsIGosIGksIG87
DQogICAgICAgIGlmICh0eXBlb2YgYSA9M0Q9M0Q9M0QgImJvb2xlYW4iKSB7
DQogICAgICAgICAgICBmID0zRCBhOw0KICAgICAgICAgICAgYSA9M0QgYXJn
dW1lbnRzWzFdIHx8IHt9Ow0KICAgICAgICAgICAgYiA9M0QgMg0KICAgICAg
ICB9DQogICAgICAgIGlmICh0eXBlb2YgYSAhPTNEPTNEICJvYmplY3QiICYm
ICFjLmlzRnVuY3Rpb24oYSkpIGEgPTNEIHt9Ow0KICAgICAgICBpZiAoZCA9
M0Q9M0Q9M0QgYikgew0KICAgICAgICAgICAgYSA9M0QgdGhpczsNCiAgICAg
ICAgICAgIC0tYg0KICAgICAgICB9DQogICAgICAgIGZvciAoOyBiIDwgZDsg
YisrKSBpZiAoKGUgPTNEIGFyZ3VtZW50c1tiXSkgIT0zRCBudWxsKSBmb3Ig
KGogaW4gPQ0KZSkgew0KICAgICAgICAgICAgaSA9M0QgYVtqXTsNCiAgICAg
ICAgICAgIG8gPTNEIGVbal07DQogICAgICAgICAgICBpZiAoYSAhPTNEPTNE
IG8pIGlmIChmICYmIG8gJiYgKGMuaXNQbGFpbk9iamVjdChvKSB8fCA9DQpj
LmlzQXJyYXkobykpKSB7DQogICAgICAgICAgICAgICAgaSA9M0QgaSAmJiAo
Yy5pc1BsYWluT2JqZWN0KGkpIHx8IGMuaXNBcnJheShpKSkgPyBpIDogPQ0K
Yy5pc0FycmF5KG8pID8gW10gOiB7fTsNCiAgICAgICAgICAgICAgICBhW2pd
ID0zRCBjLmV4dGVuZChmLCBpLCBvKQ0KICAgICAgICAgICAgfSBlbHNlIGlm
IChvICE9M0Q9M0QgdykgYVtqXSA9M0Qgbw0KICAgICAgICB9DQogICAgICAg
IHJldHVybiBhDQogICAgfTsNCiAgICBjLmV4dGVuZCh7DQogICAgICAgIG5v
Q29uZmxpY3Q6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBBLiQgPTNE
IFNhOw0KICAgICAgICAgICAgaWYgKGEpIEEualF1ZXJ5ID0zRCBSYTsNCiAg
ICAgICAgICAgIHJldHVybiBjDQogICAgICAgIH0sDQogICAgICAgIGlzUmVh
ZHk6IGZhbHNlLA0KICAgICAgICByZWFkeTogZnVuY3Rpb24gKCkgew0KICAg
ICAgICAgICAgaWYgKCFjLmlzUmVhZHkpIHsNCiAgICAgICAgICAgICAgICBp
ZiAoIXMuYm9keSkgcmV0dXJuIHNldFRpbWVvdXQoYy5yZWFkeSwgMTMpOw0K
ICAgICAgICAgICAgICAgIGMuaXNSZWFkeSA9M0QgdHJ1ZTsNCiAgICAgICAg
ICAgICAgICBpZiAoUSkgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBhLCBiID0zRCAwOyBhID0zRCBRW2IrK107KSBhLmNhbGwocywgYyk7DQog
ICAgICAgICAgICAgICAgICAgIFEgPTNEIG51bGwNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgYy5mbi50cmlnZ2VySGFuZGxlciAmJiBj
KHMpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpDQogICAgICAgICAgICB9DQog
ICAgICAgIH0sDQogICAgICAgIGJpbmRSZWFkeTogZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgaWYgKCF4YSkgew0KICAgICAgICAgICAgICAgIHhhID0z
RCB0cnVlOw0KICAgICAgICAgICAgICAgIGlmIChzLnJlYWR5U3RhdGUgPTNE
PTNEPTNEICJjb21wbGV0ZSIpIHJldHVybiBjLnJlYWR5KCk7DQogICAgICAg
ICAgICAgICAgaWYgKHMuYWRkRXZlbnRMaXN0ZW5lcikgew0KICAgICAgICAg
ICAgICAgICAgICBzLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2Fk
ZWQiLCBMLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgIEEuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGMucmVhZHksIGZhbHNlKQ0KICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocy5hdHRhY2hFdmVudCkgew0KICAgICAgICAg
ICAgICAgICAgICBzLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2Ui
LCBMKTsNCiAgICAgICAgICAgICAgICAgICAgQS5hdHRhY2hFdmVudCgib25s
b2FkIiwgYy5yZWFkeSk7DQogICAgICAgICAgICAgICAgICAgIHZhciBhID0z
RCBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGEgPTNEIEEuZnJhbWVFbGVtZW50ID0zRD0zRCBu
dWxsDQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGIpIHt9DQogICAg
ICAgICAgICAgICAgICAgIHMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICYm
IGEgJiYgbWEoKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0N
CiAgICAgICAgfSwNCiAgICAgICAgaXNGdW5jdGlvbjogZnVuY3Rpb24gKGEp
IHsNCiAgICAgICAgICAgIHJldHVybiAkLmNhbGwoYSkgPTNEPTNEPTNEICJb
b2JqZWN0IEZ1bmN0aW9uXSINCiAgICAgICAgfSwNCiAgICAgICAgaXNBcnJh
eTogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiAkLmNhbGwo
YSkgPTNEPTNEPTNEICJbb2JqZWN0IEFycmF5XSINCiAgICAgICAgfSwNCiAg
ICAgICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
ICAgIGlmICghYSB8fCAkLmNhbGwoYSkgIT0zRD0zRCAiW29iamVjdCBPYmpl
Y3RdIiB8fCBhLm5vZGVUeXBlID0NCnx8IGEuc2V0SW50ZXJ2YWwpIHJldHVy
biBmYWxzZTsNCiAgICAgICAgICAgIGlmIChhLmNvbnN0cnVjdG9yICYmICFh
YS5jYWxsKGEsICJjb25zdHJ1Y3RvciIpICYmID0NCiFhYS5jYWxsKGEuY29u
c3RydWN0b3IucHJvdG90eXBlLCAiaXNQcm90b3R5cGVPZiIpKSByZXR1cm4g
ZmFsc2U7DQogICAgICAgICAgICB2YXIgYjsNCiAgICAgICAgICAgIGZvciAo
YiBpbiBhKTsNCiAgICAgICAgICAgIHJldHVybiBiID0zRD0zRD0zRCB3IHx8
IGFhLmNhbGwoYSwgYikNCiAgICAgICAgfSwNCiAgICAgICAgaXNFbXB0eU9i
amVjdDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGZvciAodmFyIGIg
aW4gYSkgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgcmV0dXJuIHRydWUN
CiAgICAgICAgfSwNCiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChhKSB7DQog
ICAgICAgICAgICB0aHJvdyBhOw0KICAgICAgICB9LA0KICAgICAgICBwYXJz
ZUpTT046IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBpZiAodHlwZW9m
IGEgIT0zRD0zRCAic3RyaW5nIiB8fCAhYSkgcmV0dXJuIG51bGw7DQogICAg
ICAgICAgICBhID0zRCBjLnRyaW0oYSk7DQogICAgICAgICAgICBpZiA9DQoo
L15bXF0sOnt9XHNdKiQvLnRlc3QoYS5yZXBsYWNlKC9cXCg/OlsiXFxcL2Jm
bnJ0XXx1WzAtOWEtZkEtRl17NH0pL2csID0NCiJAIikucmVwbGFjZSgvIlte
IlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86
W2VFXVsrXC1dP1w9DQpkKyk/L2csICJdIikucmVwbGFjZSgvKD86Xnw6fCwp
KD86XHMqXFspKy9nLCAiIikpKSByZXR1cm4gQS5KU09OICYmID0NCkEuSlNP
Ti5wYXJzZSA/IEEuSlNPTi5wYXJzZShhKSA6IChuZXcgRnVuY3Rpb24oInJl
dHVybiAiICsgYSkpKCk7DQogICAgICAgICAgICBlbHNlIGMuZXJyb3IoIklu
dmFsaWQgSlNPTjogIiArIGEpDQogICAgICAgIH0sDQogICAgICAgIG5vb3A6
IGZ1bmN0aW9uICgpIHt9LA0KICAgICAgICBnbG9iYWxFdmFsOiBmdW5jdGlv
biAoYSkgew0KICAgICAgICAgICAgaWYgKGEgJiYgVmEudGVzdChhKSkgew0K
ICAgICAgICAgICAgICAgIHZhciBiID0zRCBzLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJoZWFkIilbMF0gfHwgPQ0Kcy5kb2N1bWVudEVsZW1lbnQsDQogICAg
ICAgICAgICAgICAgICAgIGQgPTNEIHMuY3JlYXRlRWxlbWVudCgic2NyaXB0
Iik7DQogICAgICAgICAgICAgICAgZC50eXBlID0zRCAidGV4dC9qYXZhc2Ny
aXB0IjsNCiAgICAgICAgICAgICAgICBpZiAoYy5zdXBwb3J0LnNjcmlwdEV2
YWwpID0NCmQuYXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZShhKSk7DQog
ICAgICAgICAgICAgICAgZWxzZSBkLnRleHQgPTNEIGE7DQogICAgICAgICAg
ICAgICAgYi5pbnNlcnRCZWZvcmUoZCwgYi5maXJzdENoaWxkKTsNCiAgICAg
ICAgICAgICAgICBiLnJlbW92ZUNoaWxkKGQpDQogICAgICAgICAgICB9DQog
ICAgICAgIH0sDQogICAgICAgIG5vZGVOYW1lOiBmdW5jdGlvbiAoYSwgYikg
ew0KICAgICAgICAgICAgcmV0dXJuIGEubm9kZU5hbWUgJiYgYS5ub2RlTmFt
ZS50b1VwcGVyQ2FzZSgpID0zRD0zRD0zRCA9DQpiLnRvVXBwZXJDYXNlKCkN
CiAgICAgICAgfSwNCiAgICAgICAgZWFjaDogZnVuY3Rpb24gKGEsIGIsIGQp
IHsNCiAgICAgICAgICAgIHZhciBmLCBlID0zRCAwLA0KICAgICAgICAgICAg
ICAgIGogPTNEIGEubGVuZ3RoLA0KICAgICAgICAgICAgICAgIGkgPTNEIGog
PTNEPTNEPTNEIHcgfHwgYy5pc0Z1bmN0aW9uKGEpOw0KICAgICAgICAgICAg
aWYgKGQpIGlmIChpKSBmb3IgKGYgaW4gYSkgew0KICAgICAgICAgICAgICAg
IGlmIChiLmFwcGx5KGFbZl0sIGQpID0zRD0zRD0zRCBmYWxzZSkgYnJlYWsN
CiAgICAgICAgICAgIH0gZWxzZSBmb3IgKDsgZSA8IGo7KSB7DQogICAgICAg
ICAgICAgICAgaWYgKGIuYXBwbHkoYVtlKytdLCBkKSA9M0Q9M0Q9M0QgZmFs
c2UpIGJyZWFrDQogICAgICAgICAgICB9IGVsc2UgaWYgKGkpIGZvciAoZiBp
biBhKSB7DQogICAgICAgICAgICAgICAgaWYgKGIuY2FsbChhW2ZdLCBmLCBh
W2ZdKSA9M0Q9M0Q9M0QgZmFsc2UpIGJyZWFrDQogICAgICAgICAgICB9IGVs
c2UgZm9yIChkID0zRCBhWzBdOyBlIDwgaiAmJiBiLmNhbGwoZCwgZSwgZCkg
IT0zRD0zRCA9DQpmYWxzZTsgZCA9M0QgYVsrK2VdKTsNCiAgICAgICAgICAg
IHJldHVybiBhDQogICAgICAgIH0sDQogICAgICAgIHRyaW06IGZ1bmN0aW9u
IChhKSB7DQogICAgICAgICAgICByZXR1cm4gKGEgfHwgIiIpLnJlcGxhY2Uo
V2EsICIiKQ0KICAgICAgICB9LA0KICAgICAgICBtYWtlQXJyYXk6IGZ1bmN0
aW9uIChhLCBiKSB7DQogICAgICAgICAgICBiID0zRCBiIHx8IFtdOw0KICAg
ICAgICAgICAgaWYgKGEgIT0zRCBudWxsKSBhLmxlbmd0aCA9M0Q9M0QgbnVs
bCB8fCB0eXBlb2YgYSA9M0Q9M0Q9M0QgPQ0KInN0cmluZyIgfHwgYy5pc0Z1
bmN0aW9uKGEpIHx8IHR5cGVvZiBhICE9M0Q9M0QgImZ1bmN0aW9uIiAmJiA9
DQphLnNldEludGVydmFsID8gYmEuY2FsbChiLCBhKSA6IGMubWVyZ2UoYiwg
YSk7DQogICAgICAgICAgICByZXR1cm4gYg0KICAgICAgICB9LA0KICAgICAg
ICBpbkFycmF5OiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgaWYg
KGIuaW5kZXhPZikgcmV0dXJuIGIuaW5kZXhPZihhKTsNCiAgICAgICAgICAg
IGZvciAodmFyIGQgPTNEIDAsIGYgPTNEIGIubGVuZ3RoOyBkIDwgZjsgZCsr
KSBpZiAoYltkXSA9DQo9M0Q9M0Q9M0QgYSkgcmV0dXJuIGQ7DQogICAgICAg
ICAgICByZXR1cm4gLTENCiAgICAgICAgfSwNCiAgICAgICAgbWVyZ2U6IGZ1
bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICB2YXIgZCA9M0QgYS5sZW5n
dGgsDQogICAgICAgICAgICAgICAgZiA9M0QgMDsNCiAgICAgICAgICAgIGlm
ICh0eXBlb2YgYi5sZW5ndGggPTNEPTNEPTNEICJudW1iZXIiKSBmb3IgKHZh
ciBlID0zRCA9DQpiLmxlbmd0aDsgZiA8IGU7IGYrKykgYVtkKytdID0zRCBi
W2ZdOw0KICAgICAgICAgICAgZWxzZSBmb3IgKDsgYltmXSAhPTNEPTNEIHc7
KSBhW2QrK10gPTNEIGJbZisrXTsNCiAgICAgICAgICAgIGEubGVuZ3RoID0z
RCBkOw0KICAgICAgICAgICAgcmV0dXJuIGENCiAgICAgICAgfSwNCiAgICAg
ICAgZ3JlcDogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIGZv
ciAodmFyIGYgPTNEIFtdLCBlID0zRCAwLCBqID0zRCBhLmxlbmd0aDsgZSA8
IGo7IGUrKykhZCA9DQohPTNEPTNEICFiKGFbZV0sIGUpICYmIGYucHVzaChh
W2VdKTsNCiAgICAgICAgICAgIHJldHVybiBmDQogICAgICAgIH0sDQogICAg
ICAgIG1hcDogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIGZv
ciAodmFyIGYgPTNEIFtdLCBlLCBqID0zRCAwLCBpID0zRCBhLmxlbmd0aDsg
aiA8IGk7IGorKykgew0KICAgICAgICAgICAgICAgIGUgPTNEIGIoYVtqXSwg
aiwgZCk7DQogICAgICAgICAgICAgICAgaWYgKGUgIT0zRCBudWxsKSBmW2Yu
bGVuZ3RoXSA9M0QgZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0
dXJuIGYuY29uY2F0LmFwcGx5KFtdLCBmKQ0KICAgICAgICB9LA0KICAgICAg
ICBndWlkOiAxLA0KICAgICAgICBwcm94eTogZnVuY3Rpb24gKGEsIGIsIGQp
IHsNCiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID0zRD0zRD0z
RCAyKSBpZiAodHlwZW9mIGIgPTNEPTNEPTNEID0NCiJzdHJpbmciKSB7DQog
ICAgICAgICAgICAgICAgZCA9M0QgYTsNCiAgICAgICAgICAgICAgICBhID0z
RCBkW2JdOw0KICAgICAgICAgICAgICAgIGIgPTNEIHcNCiAgICAgICAgICAg
IH0gZWxzZSBpZiAoYiAmJiAhYy5pc0Z1bmN0aW9uKGIpKSB7DQogICAgICAg
ICAgICAgICAgZCA9M0QgYjsNCiAgICAgICAgICAgICAgICBiID0zRCB3DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoIWIgJiYgYSkgYiA9M0Qg
ZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBhLmFwcGx5
KGQgfHwgdGhpcywgYXJndW1lbnRzKQ0KICAgICAgICAgICAgfTsNCiAgICAg
ICAgICAgIGlmIChhKSBiLmd1aWQgPTNEIGEuZ3VpZCA9M0QgYS5ndWlkIHx8
IGIuZ3VpZCB8fCBjLmd1aWQrKzsNCiAgICAgICAgICAgIHJldHVybiBiDQog
ICAgICAgIH0sDQogICAgICAgIHVhTWF0Y2g6IGZ1bmN0aW9uIChhKSB7DQog
ICAgICAgICAgICBhID0zRCBhLnRvTG93ZXJDYXNlKCk7DQogICAgICAgICAg
ICBhID0zRCAvKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKGEpIHx8ID0N
Ci8ob3BlcmEpKD86Lip2ZXJzaW9uKT9bIFwvXShbXHcuXSspLy5leGVjKGEp
IHx8IC8obXNpZSkgPQ0KKFtcdy5dKykvLmV4ZWMoYSkgfHwgIS9jb21wYXRp
YmxlLy50ZXN0KGEpICYmIC8obW96aWxsYSkoPzouKj8gPQ0KcnY6KFtcdy5d
KykpPy8uZXhlYyhhKSB8fCBbXTsNCiAgICAgICAgICAgIHJldHVybiB7DQog
ICAgICAgICAgICAgICAgYnJvd3NlcjogYVsxXSB8fCAiIiwNCiAgICAgICAg
ICAgICAgICB2ZXJzaW9uOiBhWzJdIHx8ICIwIg0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9LA0KICAgICAgICBicm93c2VyOiB7fQ0KICAgIH0pOw0KICAg
IFAgPTNEIGMudWFNYXRjaChQKTsNCiAgICBpZiAoUC5icm93c2VyKSB7DQog
ICAgICAgIGMuYnJvd3NlcltQLmJyb3dzZXJdID0zRCB0cnVlOw0KICAgICAg
ICBjLmJyb3dzZXIudmVyc2lvbiA9M0QgUC52ZXJzaW9uDQogICAgfQ0KICAg
IGlmIChjLmJyb3dzZXIud2Via2l0KSBjLmJyb3dzZXIuc2FmYXJpID0zRCB0
cnVlOw0KICAgIGlmICh5YSkgYy5pbkFycmF5ID0zRCBmdW5jdGlvbiAoYSwg
Yikgew0KICAgICAgICByZXR1cm4geWEuY2FsbChiLCBhKQ0KICAgIH07DQog
ICAgVCA9M0QgYyhzKTsNCiAgICBpZiAocy5hZGRFdmVudExpc3RlbmVyKSBM
ID0zRCBmdW5jdGlvbiAoKSB7DQogICAgICAgIHMucmVtb3ZlRXZlbnRMaXN0
ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEwsIGZhbHNlKTsNCiAgICAgICAg
Yy5yZWFkeSgpDQogICAgfTsNCiAgICBlbHNlIGlmIChzLmF0dGFjaEV2ZW50
KSBMID0zRCBmdW5jdGlvbiAoKSB7DQogICAgICAgIGlmIChzLnJlYWR5U3Rh
dGUgPTNEPTNEPTNEICJjb21wbGV0ZSIpIHsNCiAgICAgICAgICAgIHMuZGV0
YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIEwpOw0KICAgICAgICAg
ICAgYy5yZWFkeSgpDQogICAgICAgIH0NCiAgICB9Ow0KICAgIChmdW5jdGlv
biAoKSB7DQogICAgICAgIGMuc3VwcG9ydCA9M0Qge307DQogICAgICAgIHZh
ciBhID0zRCBzLmRvY3VtZW50RWxlbWVudCwNCiAgICAgICAgICAgIGIgPTNE
IHMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksDQogICAgICAgICAgICBkID0z
RCBzLmNyZWF0ZUVsZW1lbnQoImRpdiIpLA0KICAgICAgICAgICAgZiA9M0Qg
InNjcmlwdCIgKyBKKCk7DQogICAgICAgIGQuc3R5bGUuZGlzcGxheSA9M0Qg
Im5vbmUiOw0KICAgICAgICBkLmlubmVySFRNTCA9M0QgIiAgIDxsaW5rLz48
dGFibGU+PC90YWJsZT48YSBocmVmPTNEJy9hJyA9DQpzdHlsZT0zRCdjb2xv
cjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8L2E+PGlucHV0ID0N
CnR5cGU9M0QnY2hlY2tib3gnLz4iOw0KICAgICAgICB2YXIgZSA9M0QgZC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLA0KICAgICAgICAgICAgaiA9M0Qg
ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdOw0KICAgICAgICBpZiAo
ISghZSB8fCAhZS5sZW5ndGggfHwgIWopKSB7DQogICAgICAgICAgICBjLnN1
cHBvcnQgPTNEIHsNCiAgICAgICAgICAgICAgICBsZWFkaW5nV2hpdGVzcGFj
ZTogZC5maXJzdENoaWxkLm5vZGVUeXBlID0zRD0zRD0zRCAzLA0KICAgICAg
ICAgICAgICAgIHRib2R5OiAhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJv
ZHkiKS5sZW5ndGgsDQogICAgICAgICAgICAgICAgaHRtbFNlcmlhbGl6ZTog
ISEgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCwNCiAg
ICAgICAgICAgICAgICBzdHlsZTogL3JlZC8udGVzdChqLmdldEF0dHJpYnV0
ZSgic3R5bGUiKSksDQogICAgICAgICAgICAgICAgaHJlZk5vcm1hbGl6ZWQ6
IGouZ2V0QXR0cmlidXRlKCJocmVmIikgPTNEPTNEPTNEICIvYSIsDQogICAg
ICAgICAgICAgICAgb3BhY2l0eTogL14wLjU1JC8udGVzdChqLnN0eWxlLm9w
YWNpdHkpLA0KICAgICAgICAgICAgICAgIGNzc0Zsb2F0OiAhISBqLnN0eWxl
LmNzc0Zsb2F0LA0KICAgICAgICAgICAgICAgIGNoZWNrT246IGQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0udmFsdWUgPQ0KPTNEPTNEPTNE
ICJvbiIsDQogICAgICAgICAgICAgICAgb3B0U2VsZWN0ZWQ6ID0NCnMuY3Jl
YXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQocy5jcmVhdGVFbGVt
ZW50KCJvcHRpb24iKSkuc2VsZWN0ZWQ9DQosDQogICAgICAgICAgICAgICAg
cGFyZW50Tm9kZTogPQ0KZC5yZW1vdmVDaGlsZChkLmFwcGVuZENoaWxkKHMu
Y3JlYXRlRWxlbWVudCgiZGl2IikpKS5wYXJlbnROb2RlID0NCj0zRD0zRD0z
RCBudWxsLA0KICAgICAgICAgICAgICAgIGRlbGV0ZUV4cGFuZG86IHRydWUs
DQogICAgICAgICAgICAgICAgY2hlY2tDbG9uZTogZmFsc2UsDQogICAgICAg
ICAgICAgICAgc2NyaXB0RXZhbDogZmFsc2UsDQogICAgICAgICAgICAgICAg
bm9DbG9uZUV2ZW50OiB0cnVlLA0KICAgICAgICAgICAgICAgIGJveE1vZGVs
OiBudWxsDQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgYi50eXBlID0z
RCAidGV4dC9qYXZhc2NyaXB0IjsNCiAgICAgICAgICAgIHRyeSB7DQogICAg
ICAgICAgICAgICAgYi5hcHBlbmRDaGlsZChzLmNyZWF0ZVRleHROb2RlKCJ3
aW5kb3cuIiArIGYgKyAiPTNEMTsiKSkNCiAgICAgICAgICAgIH0gY2F0Y2gg
KGkpIHt9DQogICAgICAgICAgICBhLmluc2VydEJlZm9yZShiLCBhLmZpcnN0
Q2hpbGQpOw0KICAgICAgICAgICAgaWYgKEFbZl0pIHsNCiAgICAgICAgICAg
ICAgICBjLnN1cHBvcnQuc2NyaXB0RXZhbCA9M0QgdHJ1ZTsNCiAgICAgICAg
ICAgICAgICBkZWxldGUgQVtmXQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgdHJ5IHsNCiAgICAgICAgICAgICAgICBkZWxldGUgYi50ZXN0DQogICAg
ICAgICAgICB9IGNhdGNoIChvKSB7DQogICAgICAgICAgICAgICAgYy5zdXBw
b3J0LmRlbGV0ZUV4cGFuZG8gPTNEIGZhbHNlDQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBhLnJlbW92ZUNoaWxkKGIpOw0KICAgICAgICAgICAgaWYg
KGQuYXR0YWNoRXZlbnQgJiYgZC5maXJlRXZlbnQpIHsNCiAgICAgICAgICAg
ICAgICBkLmF0dGFjaEV2ZW50KCJvbmNsaWNrIiwgZnVuY3Rpb24gaygpIHsN
CiAgICAgICAgICAgICAgICAgICAgYy5zdXBwb3J0Lm5vQ2xvbmVFdmVudCA9
M0QNCiAgICAgICAgICAgICAgICAgICAgZmFsc2U7DQogICAgICAgICAgICAg
ICAgICAgIGQuZGV0YWNoRXZlbnQoIm9uY2xpY2siLCBrKQ0KICAgICAgICAg
ICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIGQuY2xvbmVOb2RlKHRydWUp
LmZpcmVFdmVudCgib25jbGljayIpDQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBkID0zRCBzLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAg
ICAgZC5pbm5lckhUTUwgPTNEICI8aW5wdXQgdHlwZT0zRCdyYWRpbycgbmFt
ZT0zRCdyYWRpb3Rlc3QnID0NCmNoZWNrZWQ9M0QnY2hlY2tlZCcvPiI7DQog
ICAgICAgICAgICBhID0zRCBzLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsN
CiAgICAgICAgICAgIGEuYXBwZW5kQ2hpbGQoZC5maXJzdENoaWxkKTsNCiAg
ICAgICAgICAgIGMuc3VwcG9ydC5jaGVja0Nsb25lID0zRCA9DQphLmNsb25l
Tm9kZSh0cnVlKS5jbG9uZU5vZGUodHJ1ZSkubGFzdENoaWxkLmNoZWNrZWQ7
DQogICAgICAgICAgICBjKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAg
ICB2YXIgayA9M0Qgcy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAg
ICAgICAgICBrLnN0eWxlLndpZHRoID0zRCBrLnN0eWxlLnBhZGRpbmdMZWZ0
ID0zRCAiMXB4IjsNCiAgICAgICAgICAgICAgICBzLmJvZHkuYXBwZW5kQ2hp
bGQoayk7DQogICAgICAgICAgICAgICAgYy5ib3hNb2RlbCA9M0QgYy5zdXBw
b3J0LmJveE1vZGVsID0zRCBrLm9mZnNldFdpZHRoID0NCj0zRD0zRD0zRCAy
Ow0KICAgICAgICAgICAgICAgIHMuYm9keS5yZW1vdmVDaGlsZChrKS5zdHls
ZS5kaXNwbGF5ID0zRCAibm9uZSINCiAgICAgICAgICAgIH0pOw0KICAgICAg
ICAgICAgYSA9M0QgZnVuY3Rpb24gKGspIHsNCiAgICAgICAgICAgICAgICB2
YXIgbiA9M0QNCiAgICAgICAgICAgICAgICBzLmNyZWF0ZUVsZW1lbnQoImRp
diIpOw0KICAgICAgICAgICAgICAgIGsgPTNEICJvbiIgKyBrOw0KICAgICAg
ICAgICAgICAgIHZhciByID0zRCBrIGluIG47DQogICAgICAgICAgICAgICAg
aWYgKCFyKSB7DQogICAgICAgICAgICAgICAgICAgIG4uc2V0QXR0cmlidXRl
KGssICJyZXR1cm47Iik7DQogICAgICAgICAgICAgICAgICAgIHIgPTNEIHR5
cGVvZiBuW2tdID0zRD0zRD0zRCAiZnVuY3Rpb24iDQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiByDQogICAgICAgICAgICB9
Ow0KICAgICAgICAgICAgYy5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXMgPTNEIGEo
InN1Ym1pdCIpOw0KICAgICAgICAgICAgYy5zdXBwb3J0LmNoYW5nZUJ1YmJs
ZXMgPTNEIGEoImNoYW5nZSIpOw0KICAgICAgICAgICAgYSA9M0QgYiA9M0Qg
ZCA9M0QgZSA9M0QgaiA9M0QgbnVsbA0KICAgICAgICB9DQogICAgfSkoKTsN
CiAgICBjLnByb3BzID0zRCB7DQogICAgICAgICJmb3IiOiAiaHRtbEZvciIs
DQogICAgICAgICJjbGFzcyI6ICJjbGFzc05hbWUiLA0KICAgICAgICByZWFk
b25seTogInJlYWRPbmx5IiwNCiAgICAgICAgbWF4bGVuZ3RoOiAibWF4TGVu
Z3RoIiwNCiAgICAgICAgY2VsbHNwYWNpbmc6ICJjZWxsU3BhY2luZyIsDQog
ICAgICAgIHJvd3NwYW46ICJyb3dTcGFuIiwNCiAgICAgICAgY29sc3Bhbjog
ImNvbFNwYW4iLA0KICAgICAgICB0YWJpbmRleDogInRhYkluZGV4IiwNCiAg
ICAgICAgdXNlbWFwOiAidXNlTWFwIiwNCiAgICAgICAgZnJhbWVib3JkZXI6
ICJmcmFtZUJvcmRlciINCiAgICB9Ow0KICAgIHZhciBHID0zRCAialF1ZXJ5
IiArIEooKSwNCiAgICAgICAgWWEgPTNEIDAsDQogICAgICAgIHphID0zRCB7
fTsNCiAgICBjLmV4dGVuZCh7DQogICAgICAgIGNhY2hlOiB7fSwNCiAgICAg
ICAgZXhwYW5kbzogRywNCiAgICAgICAgbm9EYXRhOiB7DQogICAgICAgICAg
ICBlbWJlZDogdHJ1ZSwNCiAgICAgICAgICAgIG9iamVjdDogdHJ1ZSwNCiAg
ICAgICAgICAgIGFwcGxldDogdHJ1ZQ0KICAgICAgICB9LA0KICAgICAgICBk
YXRhOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgaWYgKCEo
YS5ub2RlTmFtZSAmJiBjLm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCldKSkgew0KICAgICAgICAgICAgICAgIGEgPTNEIGEgPTNEPTNEIEEgPyB6
YSA6IGE7DQogICAgICAgICAgICAgICAgdmFyIGYgPTNEIGFbR10sDQogICAg
ICAgICAgICAgICAgICAgIGUgPTNEIGMuY2FjaGU7DQogICAgICAgICAgICAg
ICAgaWYgKCFmICYmIHR5cGVvZiBiID0zRD0zRD0zRCAic3RyaW5nIiAmJiBk
ID0zRD0zRD0zRCB3KSA9DQpyZXR1cm4gbnVsbDsNCiAgICAgICAgICAgICAg
ICBmIHx8IChmID0zRCArK1lhKTsNCiAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIGIgPTNEPTNEPTNEICJvYmplY3QiKSB7DQogICAgICAgICAgICAgICAg
ICAgIGFbR10gPTNEIGY7DQogICAgICAgICAgICAgICAgICAgIGVbZl0gPTNE
IGMuZXh0ZW5kKHRydWUsIHt9LCBiKQ0KICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIWVbZl0pIHsNCiAgICAgICAgICAgICAgICAgICAgYVtHXSA9M0Qg
ZjsNCiAgICAgICAgICAgICAgICAgICAgZVtmXSA9M0Qge30NCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgYSA9M0QgZVtmXTsNCiAgICAg
ICAgICAgICAgICBpZiAoZCAhPTNEPTNEIHcpIGFbYl0gPTNEIGQ7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBiID0zRD0zRD0zRCAic3RyaW5n
IiA/IGFbYl0gOiBhDQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAg
ICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAg
ICBpZiAoIShhLm5vZGVOYW1lICYmIGMubm9EYXRhW2Eubm9kZU5hbWUudG9M
b3dlckNhc2UoKV0pKSB7DQogICAgICAgICAgICAgICAgYSA9M0QgYSA9M0Q9
M0QgQSA/IHphIDogYTsNCiAgICAgICAgICAgICAgICB2YXIgZCA9M0QgYVtH
XSwNCiAgICAgICAgICAgICAgICAgICAgZiA9M0QgYy5jYWNoZSwNCiAgICAg
ICAgICAgICAgICAgICAgZSA9M0QgZltkXTsNCiAgICAgICAgICAgICAgICBp
ZiAoYikgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZSkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgZGVsZXRlIGVbYl07DQogICAgICAgICAgICAg
ICAgICAgICAgICBjLmlzRW1wdHlPYmplY3QoZSkgJiYgYy5yZW1vdmVEYXRh
KGEpDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAoYy5zdXBwb3J0LmRl
bGV0ZUV4cGFuZG8pIGRlbGV0ZSBhW2MuZXhwYW5kb107DQogICAgICAgICAg
ICAgICAgICAgIGVsc2UgYS5yZW1vdmVBdHRyaWJ1dGUgJiYgPQ0KYS5yZW1v
dmVBdHRyaWJ1dGUoYy5leHBhbmRvKTsNCiAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIGZbZF0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmZuLmV4dGVuZCh7DQogICAg
ICAgIGRhdGE6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBpZiAo
dHlwZW9mIGEgPTNEPTNEPTNEICJ1bmRlZmluZWQiICYmIHRoaXMubGVuZ3Ro
KSByZXR1cm4gPQ0KYy5kYXRhKHRoaXNbMF0pOw0KICAgICAgICAgICAgZWxz
ZSBpZiAodHlwZW9mIGEgPTNEPTNEPTNEICJvYmplY3QiKSByZXR1cm4gPQ0K
dGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBjLmRh
dGEodGhpcywgYSkNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgdmFy
IGQgPTNEIGEuc3BsaXQoIi4iKTsNCiAgICAgICAgICAgIGRbMV0gPTNEIGRb
MV0gPyAiLiIgKyBkWzFdIDogIiI7DQogICAgICAgICAgICBpZiAoYiA9M0Q9
M0Q9M0Qgdykgew0KICAgICAgICAgICAgICAgIHZhciBmID0zRCB0aGlzLnRy
aWdnZXJIYW5kbGVyKCJnZXREYXRhIiArIGRbMV0gKyAiISIsID0NCltkWzBd
XSk7DQogICAgICAgICAgICAgICAgaWYgKGYgPTNEPTNEPTNEIHcgJiYgdGhp
cy5sZW5ndGgpIGYgPTNEIGMuZGF0YSh0aGlzWzBdLCA9DQphKTsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gZiA9M0Q9M0Q9M0QgdyAmJiBkWzFdID8gdGhp
cy5kYXRhKGRbMF0pIDogZg0KICAgICAgICAgICAgfSBlbHNlIHJldHVybiB0
aGlzLnRyaWdnZXIoInNldERhdGEiICsgZFsxXSArICIhIiwgW2RbMF0sID0N
CmJdKS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBjLmRh
dGEodGhpcywgYSwgYikNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQog
ICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAg
ICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAg
ICAgICBjLnJlbW92ZURhdGEodGhpcywgYSkNCiAgICAgICAgICAgIH0pDQog
ICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmV4dGVuZCh7DQogICAgICAgIHF1
ZXVlOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgaWYgKGEp
IHsNCiAgICAgICAgICAgICAgICBiID0zRCAoYiB8fCAiZngiKSArICJxdWV1
ZSI7DQogICAgICAgICAgICAgICAgdmFyIGYgPTNEIGMuZGF0YShhLCBiKTsN
CiAgICAgICAgICAgICAgICBpZiAoIWQpIHJldHVybiBmIHx8IFtdOw0KICAg
ICAgICAgICAgICAgIGlmICghZiB8fCBjLmlzQXJyYXkoZCkpIGYgPTNEIGMu
ZGF0YShhLCBiLCA9DQpjLm1ha2VBcnJheShkKSk7DQogICAgICAgICAgICAg
ICAgZWxzZSBmLnB1c2goZCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGYN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgZGVxdWV1ZTog
ZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGIgPTNEIGIgfHwgImZ4
IjsNCiAgICAgICAgICAgIHZhciBkID0zRCBjLnF1ZXVlKGEsIGIpLA0KICAg
ICAgICAgICAgICAgIGYgPTNEIGQuc2hpZnQoKTsNCiAgICAgICAgICAgIGlm
IChmID0zRD0zRD0zRCAiaW5wcm9ncmVzcyIpIGYgPTNEIGQuc2hpZnQoKTsN
CiAgICAgICAgICAgIGlmIChmKSB7DQogICAgICAgICAgICAgICAgYiA9M0Q9
M0Q9M0QgImZ4IiAmJiBkLnVuc2hpZnQoImlucHJvZ3Jlc3MiKTsNCiAgICAg
ICAgICAgICAgICBmLmNhbGwoYSwgZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgICAgICBjLmRlcXVldWUoYSwgYikNCiAgICAgICAgICAgICAgICB9
KQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5m
bi5leHRlbmQoew0KICAgICAgICBxdWV1ZTogZnVuY3Rpb24gKGEsIGIpIHsN
CiAgICAgICAgICAgIGlmICh0eXBlb2YgYSAhPTNEPTNEICJzdHJpbmciKSB7
DQogICAgICAgICAgICAgICAgYiA9M0QgYTsNCiAgICAgICAgICAgICAgICBh
ID0zRCAiZngiDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoYiA9
M0Q9M0Q9M0QgdykgcmV0dXJuIGMucXVldWUodGhpc1swXSwgYSk7DQogICAg
ICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgICAgICAgICB2YXIgZCA9M0QgYy5xdWV1ZSh0aGlzLCBhLCBiKTsNCiAg
ICAgICAgICAgICAgICBhID0zRD0zRD0zRCAiZngiICYmIGRbMF0gIT0zRD0z
RCAiaW5wcm9ncmVzcyIgJiYgPQ0KYy5kZXF1ZXVlKHRoaXMsIGEpDQogICAg
ICAgICAgICB9KQ0KICAgICAgICB9LA0KICAgICAgICBkZXF1ZXVlOiBmdW5j
dGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICAgICAgYy5kZXF1ZXVlKHRoaXMsIGEp
DQogICAgICAgICAgICB9KQ0KICAgICAgICB9LA0KICAgICAgICBkZWxheTog
ZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGEgPTNEIGMuZnggPyBj
LmZ4LnNwZWVkc1thXSB8fCBhIDogYTsNCiAgICAgICAgICAgIGIgPTNEIGIg
fHwgImZ4IjsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLnF1ZXVlKGIsIGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICB2YXIgZCA9M0QgdGhpczsN
CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgICAgICAgICAgYy5kZXF1ZXVlKGQsIGIpDQogICAgICAgICAg
ICAgICAgfSwgYSkNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAg
ICAgIGNsZWFyUXVldWU6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5xdWV1ZShhIHx8ICJmeCIsIFtdKQ0KICAgICAgICB9DQog
ICAgfSk7DQogICAgdmFyIEFhID0zRCAvW1xuXHRdL2csDQogICAgICAgIGNh
ID0zRCAvXHMrLywNCiAgICAgICAgWmEgPTNEIC9cci9nLA0KICAgICAgICAk
YSA9M0QgL2hyZWZ8c3JjfHN0eWxlLywNCiAgICAgICAgYWIgPTNEIC8oYnV0
dG9ufGlucHV0KS9pLA0KICAgICAgICBiYiA9M0QgLyhidXR0b258aW5wdXR8
b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkvaSwNCiAgICAgICAgY2IgPTNEIC9e
KGF8YXJlYSkkL2ksDQogICAgICAgIEJhID0zRCAvcmFkaW98Y2hlY2tib3gv
Ow0KICAgIGMuZm4uZXh0ZW5kKHsNCiAgICAgICAgYXR0cjogZnVuY3Rpb24g
KGEsIGIpIHsNCiAgICAgICAgICAgIHJldHVybiBYKHRoaXMsIGEsIGIsIHRy
dWUsIGMuYXR0cikNCiAgICAgICAgfSwNCiAgICAgICAgcmVtb3ZlQXR0cjog
ZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGMuYXR0cih0aGlzLCBh
LCAiIik7DQogICAgICAgICAgICAgICAgdGhpcy5ub2RlVHlwZSA9M0Q9M0Q9
M0QgMSAmJiB0aGlzLnJlbW92ZUF0dHJpYnV0ZShhKQ0KICAgICAgICAgICAg
fSkNCiAgICAgICAgfSwNCiAgICAgICAgYWRkQ2xhc3M6IGZ1bmN0aW9uIChh
KSB7DQogICAgICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGEpKSByZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uIChuKSB7DQogICAgICAgICAgICAgICAgdmFy
IHIgPTNEIGModGhpcyk7DQogICAgICAgICAgICAgICAgci5hZGRDbGFzcyhh
LmNhbGwodGhpcywgbiwgci5hdHRyKCJjbGFzcyIpKSkNCiAgICAgICAgICAg
IH0pOw0KICAgICAgICAgICAgaWYgKGEgJiYgdHlwZW9mIGEgPTNEPTNEPTNE
ICJzdHJpbmciKSBmb3IgKHZhciBiID0zRCAoYSB8fCA9DQoiIikuc3BsaXQo
Y2EpLCBkID0zRCAwLCBmID0zRCB0aGlzLmxlbmd0aDsgZCA8IGY7IGQrKykg
ew0KICAgICAgICAgICAgICAgIHZhciBlID0zRCB0aGlzW2RdOw0KICAgICAg
ICAgICAgICAgIGlmIChlLm5vZGVUeXBlID0zRD0zRD0zRCAxKSBpZiAoZS5j
bGFzc05hbWUpIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9
M0QgIiAiICsgZS5jbGFzc05hbWUgKyAiICIsIGkgPTNEID0NCmUuY2xhc3NO
YW1lLCBvID0zRCAwLCBrID0zRCBiLmxlbmd0aDsgbyA8IGs7IG8rKykgaWYg
KGouaW5kZXhPZigiICIgKyA9DQpiW29dICsgIiAiKSA8IDApIGkgKz0zRCAi
ICIgKyBiW29dOw0KICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTmFtZSA9
M0QgYy50cmltKGkpDQogICAgICAgICAgICAgICAgfSBlbHNlIGUuY2xhc3NO
YW1lID0zRCBhDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4g
dGhpcw0KICAgICAgICB9LA0KICAgICAgICByZW1vdmVDbGFzczogZnVuY3Rp
b24gKGEpIHsNCiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rpb24oYSkpIHJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKGspIHsNCiAgICAgICAgICAgICAg
ICB2YXIgbiA9M0QgYyh0aGlzKTsNCiAgICAgICAgICAgICAgICBuLnJlbW92
ZUNsYXNzKGEuY2FsbCh0aGlzLCBrLCBuLmF0dHIoImNsYXNzIikpKQ0KICAg
ICAgICAgICAgfSk7DQogICAgICAgICAgICBpZiAoYSAmJiB0eXBlb2YgYSA9
M0Q9M0Q9M0QgInN0cmluZyIgfHwgYSA9M0Q9M0Q9M0QgdykgZm9yID0NCih2
YXIgYiA9M0QgKGEgfHwgIiIpLnNwbGl0KGNhKSwgZCA9M0QgMCwgZiA9M0Qg
dGhpcy5sZW5ndGg7IGQgPCBmOyBkKyspID0NCnsNCiAgICAgICAgICAgICAg
ICB2YXIgZSA9M0QgdGhpc1tkXTsNCiAgICAgICAgICAgICAgICBpZiAoZS5u
b2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiBlLmNsYXNzTmFtZSkgaWYgKGEpIHsN
CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9M0QgKCIgIiArIGUu
Y2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKEFhLCA9DQoiICIpLCBpID0zRCAw
LCBvID0zRCBiLmxlbmd0aDsgaSA8IG87IGkrKykgaiA9M0Qgai5yZXBsYWNl
KCIgIiArIGJbaV0gKyA9DQoiICIsICIgIik7DQogICAgICAgICAgICAgICAg
ICAgIGUuY2xhc3NOYW1lID0zRCBjLnRyaW0oaikNCiAgICAgICAgICAgICAg
ICB9IGVsc2UgZS5jbGFzc05hbWUgPTNEICIiDQogICAgICAgICAgICB9DQog
ICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICB9LA0KICAgICAgICB0
b2dnbGVDbGFzczogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIHZh
ciBkID0zRCB0eXBlb2YgYSwNCiAgICAgICAgICAgICAgICBmID0zRCB0eXBl
b2YgYiA9M0Q9M0Q9M0QgImJvb2xlYW4iOw0KICAgICAgICAgICAgaWYgKGMu
aXNGdW5jdGlvbihhKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoZSkg
ew0KICAgICAgICAgICAgICAgIHZhciBqID0zRCBjKHRoaXMpOw0KICAgICAg
ICAgICAgICAgIGoudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsIGUsIGouYXR0
cigiY2xhc3MiKSwgYiksIGIpDQogICAgICAgICAgICB9KTsNCiAgICAgICAg
ICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgIGlmIChkID0zRD0zRD0zRCAic3RyaW5nIikgZm9yICh2YXIgZSwg
aiA9M0QgMCwgaSA9M0QgPQ0KYyh0aGlzKSwgbyA9M0QgYiwgayA9M0QgYS5z
cGxpdChjYSk7IGUgPTNEIGtbaisrXTspIHsNCiAgICAgICAgICAgICAgICAg
ICAgbyA9M0QgZiA/IG8gOiAhaS5oYXNDbGFzcyhlKTsNCiAgICAgICAgICAg
ICAgICAgICAgaVtvID8gImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyJdKGUp
DQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkID0zRD0zRD0zRCAidW5k
ZWZpbmVkIiB8fCBkID0zRD0zRD0zRCA9DQoiYm9vbGVhbiIpIHsNCiAgICAg
ICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgJiYgYy5kYXRhKHRoaXMs
ICJfX2NsYXNzTmFtZV9fIiwgPQ0KdGhpcy5jbGFzc05hbWUpOw0KICAgICAg
ICAgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9M0QNCiAgICAgICAgICAg
ICAgICAgICAgdGhpcy5jbGFzc05hbWUgfHwgYSA9M0Q9M0Q9M0QgZmFsc2Ug
PyAiIiA6ID0NCmMuZGF0YSh0aGlzLCAiX19jbGFzc05hbWVfXyIpIHx8ICIi
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkNCiAgICAgICAg
fSwNCiAgICAgICAgaGFzQ2xhc3M6IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICBhID0zRCAiICIgKyBhICsgIiAiOw0KICAgICAgICAgICAgZm9yICh2
YXIgYiA9M0QgMCwgZCA9M0QgdGhpcy5sZW5ndGg7IGIgPCBkOyBiKyspIGlm
ICgoIiAiICsgPQ0KdGhpc1tiXS5jbGFzc05hbWUgKyAiICIpLnJlcGxhY2Uo
QWEsICIgIikuaW5kZXhPZihhKSA+IC0xKSByZXR1cm4gdHJ1ZTsNCiAgICAg
ICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAgICB9LA0KICAgICAgICB2YWw6
IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBpZiAoYSA9M0Q9M0Q9M0Qg
dykgew0KICAgICAgICAgICAgICAgIHZhciBiID0zRCB0aGlzWzBdOw0KICAg
ICAgICAgICAgICAgIGlmIChiKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
IChjLm5vZGVOYW1lKGIsICJvcHRpb24iKSkgcmV0dXJuID0NCihiLmF0dHJp
YnV0ZXMudmFsdWUgfHwge30pLnNwZWNpZmllZCA/IGIudmFsdWUgOiBiLnRl
eHQ7DQogICAgICAgICAgICAgICAgICAgIGlmIChjLm5vZGVOYW1lKGIsICJz
ZWxlY3QiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPTNE
IGIuc2VsZWN0ZWRJbmRleCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmID0zRCBbXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0z
RCBiLm9wdGlvbnM7DQogICAgICAgICAgICAgICAgICAgICAgICBiID0zRCBi
LnR5cGUgPTNEPTNEPTNEICJzZWxlY3Qtb25lIjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChkIDwgMCkgcmV0dXJuIG51bGw7DQogICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgaiA9M0QgYiA/IGQgOiAwOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIChkID0zRCBiID8gZCArIDEgOiBlLmxlbmd0
aDsgaiA8IGQ7IGorKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBpID0zRA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbal07
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuc2VsZWN0ZWQp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9M0QgYyhp
KS52YWwoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGIpIHJldHVybiBhOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmLnB1c2goYSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZg0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgIGlmIChCYS50ZXN0KGIudHlwZSkgJiYgIWMuc3VwcG9y
dC5jaGVja09uKSByZXR1cm4gPQ0KYi5nZXRBdHRyaWJ1dGUoInZhbHVlIikg
PTNEPTNEPTNEIG51bGwgPyAib24iIDogYi52YWx1ZTsNCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIChiLnZhbHVlIHx8ICIiKS5yZXBsYWNlKFphLCAi
IikNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJu
IHcNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciBvID0zRCBjLmlz
RnVuY3Rpb24oYSk7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uIChrKSB7DQogICAgICAgICAgICAgICAgdmFyIG4gPTNEIGModGhp
cyksDQogICAgICAgICAgICAgICAgICAgIHIgPTNEIGE7DQogICAgICAgICAg
ICAgICAgaWYgKHRoaXMubm9kZVR5cGUgPTNEPTNEPTNEIDEpIHsNCiAgICAg
ICAgICAgICAgICAgICAgaWYgKG8pIHIgPTNEIGEuY2FsbCh0aGlzLCBrLCBu
LnZhbCgpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByID0z
RD0zRD0zRCAibnVtYmVyIikgciArPTNEICIiOw0KICAgICAgICAgICAgICAg
ICAgICBpZiAoYy5pc0FycmF5KHIpICYmIEJhLnRlc3QodGhpcy50eXBlKSkg
dGhpcy5jaGVja2VkID0NCj0zRCBjLmluQXJyYXkobi52YWwoKSwgcikgPj0z
RCAwOw0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjLm5vZGVOYW1l
KHRoaXMsICJzZWxlY3QiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHUgPTNEIGMubWFrZUFycmF5KHIpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgYygib3B0aW9uIiwgdGhpcykuZWFjaChmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9M0QN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmluQXJyYXkoYyh0aGlz
KS52YWwoKSwgdSkgPj0zRCAwDQogICAgICAgICAgICAgICAgICAgICAgICB9
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdS5sZW5ndGgpIHRo
aXMuc2VsZWN0ZWRJbmRleCA9M0QgLTENCiAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHRoaXMudmFsdWUgPTNEIHINCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICB9KQ0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5leHRl
bmQoew0KICAgICAgICBhdHRyRm46IHsNCiAgICAgICAgICAgIHZhbDogdHJ1
ZSwNCiAgICAgICAgICAgIGNzczogdHJ1ZSwNCiAgICAgICAgICAgIGh0bWw6
IHRydWUsDQogICAgICAgICAgICB0ZXh0OiB0cnVlLA0KICAgICAgICAgICAg
ZGF0YTogdHJ1ZSwNCiAgICAgICAgICAgIHdpZHRoOiB0cnVlLA0KICAgICAg
ICAgICAgaGVpZ2h0OiB0cnVlLA0KICAgICAgICAgICAgb2Zmc2V0OiB0cnVl
DQogICAgICAgIH0sDQogICAgICAgIGF0dHI6IGZ1bmN0aW9uIChhLCBiLCBk
LCBmKSB7DQogICAgICAgICAgICBpZiAoIWEgfHwgYS5ub2RlVHlwZSA9M0Q9
M0Q9M0QgMyB8fCBhLm5vZGVUeXBlID0zRD0zRD0zRCA4KSA9DQpyZXR1cm4g
dzsNCiAgICAgICAgICAgIGlmIChmICYmIGIgaW4gYy5hdHRyRm4pIHJldHVy
biBjKGEpW2JdKGQpOw0KICAgICAgICAgICAgZiA9M0QgYS5ub2RlVHlwZSAh
PTNEPTNEIDEgfHwgIWMuaXNYTUxEb2MoYSk7DQogICAgICAgICAgICB2YXIg
ZSA9M0QgZCAhPTNEPTNEIHc7DQogICAgICAgICAgICBiID0zRCBmICYmIGMu
cHJvcHNbYl0gfHwgYjsNCiAgICAgICAgICAgIGlmIChhLm5vZGVUeXBlID0z
RD0zRD0zRCAxKSB7DQogICAgICAgICAgICAgICAgdmFyIGogPTNEICRhLnRl
c3QoYik7DQogICAgICAgICAgICAgICAgaWYgKGIgaW4gYSAmJiBmICYmICFq
KSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChlKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBiID0zRD0zRD0zRCAidHlwZSIgJiYgYWIudGVzdChh
Lm5vZGVOYW1lKSAmJiA9DQphLnBhcmVudE5vZGUgJiYgYy5lcnJvcigidHlw
ZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7DQogICAgICAgICAgICAg
ICAgICAgICAgICBhW2JdID0zRCBkDQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgaWYgKGMubm9kZU5hbWUoYSwgImZvcm0i
KSAmJiBhLmdldEF0dHJpYnV0ZU5vZGUoYikpID0NCnJldHVybiBhLmdldEF0
dHJpYnV0ZU5vZGUoYikubm9kZVZhbHVlOw0KICAgICAgICAgICAgICAgICAg
ICBpZiAoYiA9M0Q9M0Q9M0QgInRhYkluZGV4IikgcmV0dXJuIChiID0zRCA9
DQphLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4IikpICYmIGIuc3BlY2lm
aWVkID8gYi52YWx1ZSA6ID0NCmJiLnRlc3QoYS5ub2RlTmFtZSkgfHwgY2Iu
dGVzdChhLm5vZGVOYW1lKSAmJiBhLmhyZWYgPyAwIDogdzsNCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGFbYl0NCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgaWYgKCFjLnN1cHBvcnQuc3R5bGUgJiYgZiAmJiBi
ID0zRD0zRD0zRCAic3R5bGUiKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
IChlKSBhLnN0eWxlLmNzc1RleHQgPTNEICIiICsgZDsNCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGEuc3R5bGUuY3NzVGV4dA0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICBlICYmIGEuc2V0QXR0cmlidXRlKGIs
ICIiICsgZCk7DQogICAgICAgICAgICAgICAgYSA9M0QgIWMuc3VwcG9ydC5o
cmVmTm9ybWFsaXplZCAmJiBmICYmIGogPyA9DQphLmdldEF0dHJpYnV0ZShi
LCAyKSA6IGEuZ2V0QXR0cmlidXRlKGIpOw0KICAgICAgICAgICAgICAgIHJl
dHVybiBhID0zRD0zRD0zRCBudWxsID8gdyA6IGENCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIHJldHVybiBjLnN0eWxlKGEsIGIsIGQpDQogICAgICAg
IH0NCiAgICB9KTsNCiAgICB2YXIgTyA9M0QgL1wuKC4qKSQvLA0KICAgICAg
ICBkYiA9M0QgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgcmV0dXJuIGEucmVw
bGFjZSgvW15cd1xzXC5cfGBdL2csIGZ1bmN0aW9uIChiKSB7DQogICAgICAg
ICAgICByZXR1cm4gIlxcIiArIGINCiAgICAgICAgfSkNCiAgICB9Ow0KICAg
IGMuZXZlbnQgPTNEIHsNCiAgICAgICAgYWRkOiBmdW5jdGlvbiAoYSwgYiwg
ZCwgZikgew0KICAgICAgICAgICAgaWYgKCEoYS5ub2RlVHlwZSA9M0Q9M0Q9
M0QgMyB8fCBhLm5vZGVUeXBlID0zRD0zRD0zRCA4KSkgew0KICAgICAgICAg
ICAgICAgIGlmIChhLnNldEludGVydmFsICYmIGEgIT0zRD0zRCBBICYmICFh
LmZyYW1lRWxlbWVudCkgYSA9DQo9M0QgQTsNCiAgICAgICAgICAgICAgICB2
YXIgZSwgajsNCiAgICAgICAgICAgICAgICBpZiAoZC5oYW5kbGVyKSB7DQog
ICAgICAgICAgICAgICAgICAgIGUgPTNEIGQ7DQogICAgICAgICAgICAgICAg
ICAgIGQgPTNEIGUuaGFuZGxlcg0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICBpZiAoIWQuZ3VpZCkgZC5ndWlkID0zRCBjLmd1aWQrKzsN
CiAgICAgICAgICAgICAgICBpZiAoaiA9M0QgYy5kYXRhKGEpKSB7DQogICAg
ICAgICAgICAgICAgICAgIHZhciBpID0zRCBqLmV2ZW50cyA9M0Qgai5ldmVu
dHMgfHwge30sDQogICAgICAgICAgICAgICAgICAgICAgICBvID0zRCBqLmhh
bmRsZTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSBqLmhhbmRsZSA9
M0QgbyA9M0QgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHR5cGVvZiBjICE9M0Q9M0QgInVuZGVmaW5lZCIgJiYgPQ0K
IWMuZXZlbnQudHJpZ2dlcmVkID8gYy5ldmVudC5oYW5kbGUuYXBwbHkoby5l
bGVtLCBhcmd1bWVudHMpIDogdw0KICAgICAgICAgICAgICAgICAgICB9Ow0K
ICAgICAgICAgICAgICAgICAgICBvLmVsZW0gPTNEIGE7DQogICAgICAgICAg
ICAgICAgICAgIGIgPTNEIGIuc3BsaXQoIiAiKTsNCiAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaywgbiA9M0QgMCwgcjsgayA9M0QgYltuKytdOykg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgaiA9M0QgZSA/IGMuZXh0ZW5k
KHt9LCBlKSA6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5k
bGVyOiBkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGYN
CiAgICAgICAgICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoay5pbmRleE9mKCIuIikgPiAtMSkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHIgPTNEIGsuc3BsaXQoIi4iKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrID0zRCByLnNoaWZ0KCk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgai5uYW1lc3BhY2UgPTNEIHIuc2xp
Y2UoMCkuc29ydCgpLmpvaW4oIi4iKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0z
RCBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLm5hbWVzcGFj
ZSA9M0QgIiINCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgIGoudHlwZSA9M0QgazsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGouZ3VpZCA9M0QgZC5ndWlkOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHUgPTNEIGlba10sDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeiA9M0QgYy5ldmVudC5zcGVjaWFsW2tdIHx8IHt9Ow0KICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdSA9M0QgaVtrXSA9M0QgW107DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCF6LnNldHVwIHx8IHouc2V0dXAuY2Fs
bChhLCBmLCByLCBvKSA9DQo9M0Q9M0Q9M0QgZmFsc2UpIGlmIChhLmFkZEV2
ZW50TGlzdGVuZXIpIGEuYWRkRXZlbnRMaXN0ZW5lcihrLCBvLCA9DQpmYWxz
ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBhLmF0dGFj
aEV2ZW50ICYmIGEuYXR0YWNoRXZlbnQoIm9uIiArID0NCmssIG8pDQogICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoei5hZGQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6
LmFkZC5jYWxsKGEsIGopOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghai5oYW5kbGVyLmd1aWQpIGouaGFuZGxlci5ndWlkID0zRCA9DQpk
Lmd1aWQNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgICAgIHUucHVzaChqKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGMuZXZlbnQuZ2xvYmFsW2tdID0zRCB0cnVlDQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYSA9M0QgbnVsbA0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAg
ICAgICAgZ2xvYmFsOiB7fSwNCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAo
YSwgYiwgZCwgZikgew0KICAgICAgICAgICAgaWYgKCEoYS5ub2RlVHlwZSA9
M0Q9M0Q9M0QgMyB8fCBhLm5vZGVUeXBlID0zRD0zRD0zRCA4KSkgew0KICAg
ICAgICAgICAgICAgIHZhciBlLCBqID0zRCAwLA0KICAgICAgICAgICAgICAg
ICAgICBpLCBvLCBrLCBuLCByLCB1LCB6ID0zRCBjLmRhdGEoYSksDQogICAg
ICAgICAgICAgICAgICAgIEMgPTNEIHogJiYgei5ldmVudHM7DQogICAgICAg
ICAgICAgICAgaWYgKHogJiYgQykgew0KICAgICAgICAgICAgICAgICAgICBp
ZiAoYiAmJiBiLnR5cGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGQg
PTNEIGIuaGFuZGxlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPTNE
IGIudHlwZQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIGlmICghYiB8fCB0eXBlb2YgYiA9M0Q9M0Q9M0QgInN0cmluZyIg
JiYgYi5jaGFyQXQoMCkgPQ0KPTNEPTNEPTNEICIuIikgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgYiA9M0QgYiB8fCAiIjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoZSBpbiBDKSBjLmV2ZW50LnJlbW92ZShhLCBlICsg
YikNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoYiA9M0QgYi5zcGxpdCgiICIpOyBlID0zRCBi
W2orK107KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9M0Qg
ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0zRCBlLmluZGV4
T2YoIi4iKSA8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9
M0QgW107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPTNEIGUuc3Bs
aXQoIi4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9
M0Qgby5zaGlmdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrID0zRCBuZXcgUmVnRXhwKCIoXnxcXC4pIiArID0NCmMubWFwKG8uc2xp
Y2UoMCkuc29ydCgpLCBkYikuam9pbigiXFwuKD86LipcXC4pPyIpICsgIihc
XC58JCkiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9M0QgQ1tlXSkgaWYgKGQp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9M0QgYy5l
dmVudC5zcGVjaWFsW2VdIHx8IHt9Ow0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKEIgPTNEIGYgfHwgMDsgQiA8IHIubGVuZ3RoOyBC
KyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUg
PTNEIHJbQl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZC5ndWlkID0zRD0zRD0zRCB1Lmd1aWQpIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSB8fCBrLnRlc3Qo
dS5uYW1lc3BhY2UpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGYgPTNEPTNEIG51bGwgJiYgPQ0Kci5zcGxpY2Uo
Qi0tLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbi5yZW1vdmUgJiYgbi5yZW1vdmUuY2FsbChhLCA9DQp1KQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiAh
PTNEIG51bGwpIGJyZWFrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIubGVuZ3Ro
ID0zRD0zRD0zRCAwIHx8IGYgIT0zRCBudWxsID0NCiYmIHIubGVuZ3RoID0z
RD0zRD0zRCAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIW4udGVhcmRvd24gfHwgPQ0Kbi50ZWFyZG93bi5jYWxsKGEs
IG8pID0zRD0zRD0zRCBmYWxzZSkgQ2EoYSwgZSwgei5oYW5kbGUpOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIENbZV0N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBmb3IgKHZhciBCID0zRCAwOyBC
IDwgci5sZW5ndGg7IEIrKykgPQ0Kew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1ID0zRCByW0JdOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaSB8fCBrLnRlc3QodS5uYW1lc3BhY2UpKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmV2ZW50LnJl
bW92ZShhLCBuLCB1LmhhbmRsZXIsIEIpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgci5zcGxpY2UoQi0tLCAxKQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGMuaXNFbXB0eU9iamVjdChDKSkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiID0zRCB6LmhhbmRs
ZSkgYi5lbGVtID0zRCBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZSB6LmV2ZW50czsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWxldGUgei5oYW5kbGU7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYy5pc0VtcHR5T2JqZWN0KHopICYmIGMucmVtb3ZlRGF0YShhKQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9LA0KICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbiAoYSwgYiwgZCwgZikg
ew0KICAgICAgICAgICAgdmFyIGUgPTNEIGEudHlwZSB8fCBhOw0KICAgICAg
ICAgICAgaWYgKCFmKSB7DQogICAgICAgICAgICAgICAgYSA9M0QgdHlwZW9m
IGEgPTNEPTNEPTNEICJvYmplY3QiID8gYVtHXSA/IGEgOiA9DQpjLmV4dGVu
ZChjLkV2ZW50KGUpLCBhKSA6IGMuRXZlbnQoZSk7DQogICAgICAgICAgICAg
ICAgaWYgKGUuaW5kZXhPZigiISIpID49M0QgMCkgew0KICAgICAgICAgICAg
ICAgICAgICBhLnR5cGUgPTNEDQogICAgICAgICAgICAgICAgICAgIGUgPTNE
IGUuc2xpY2UoMCwgLTEpOw0KICAgICAgICAgICAgICAgICAgICBhLmV4Y2x1
c2l2ZSA9M0QgdHJ1ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICBpZiAoIWQpIHsNCiAgICAgICAgICAgICAgICAgICAgYS5zdG9wUHJv
cGFnYXRpb24oKTsNCiAgICAgICAgICAgICAgICAgICAgYy5ldmVudC5nbG9i
YWxbZV0gJiYgYy5lYWNoKGMuY2FjaGUsIGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRzICYmIHRoaXMuZXZlbnRz
W2VdICYmID0NCmMuZXZlbnQudHJpZ2dlcihhLCBiLCB0aGlzLmhhbmRsZS5l
bGVtKQ0KICAgICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICBpZiAoIWQgfHwgZC5ub2RlVHlwZSA9M0Q9
M0Q9M0QgMyB8fCBkLm5vZGVUeXBlID0zRD0zRD0zRCA9DQo4KSByZXR1cm4g
dzsNCiAgICAgICAgICAgICAgICBhLnJlc3VsdCA9M0QgdzsNCiAgICAgICAg
ICAgICAgICBhLnRhcmdldCA9M0QgZDsNCiAgICAgICAgICAgICAgICBiID0z
RCBjLm1ha2VBcnJheShiKTsNCiAgICAgICAgICAgICAgICBiLnVuc2hpZnQo
YSkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGEuY3VycmVudFRhcmdl
dCA9M0QgZDsNCiAgICAgICAgICAgIChmID0zRCBjLmRhdGEoZCwgImhhbmRs
ZSIpKSAmJiBmLmFwcGx5KGQsIGIpOw0KICAgICAgICAgICAgZiA9M0QgZC5w
YXJlbnROb2RlIHx8IGQub3duZXJEb2N1bWVudDsNCiAgICAgICAgICAgIHRy
eSB7DQogICAgICAgICAgICAgICAgaWYgKCEoZCAmJiBkLm5vZGVOYW1lICYm
ID0NCmMubm9EYXRhW2Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pKSBpZiAo
ZFsib24iICsgZV0gJiYgZFsib24iICsgPQ0KZV0uYXBwbHkoZCwgYikgPTNE
PTNEPTNEIGZhbHNlKSBhLnJlc3VsdCA9M0QgZmFsc2UNCiAgICAgICAgICAg
IH0gY2F0Y2ggKGopIHt9DQogICAgICAgICAgICBpZiAoIWEuaXNQcm9wYWdh
dGlvblN0b3BwZWQoKSAmJiBmKSBjLmV2ZW50LnRyaWdnZXIoYSwgYiwgZiwg
PQ0KdHJ1ZSk7DQogICAgICAgICAgICBlbHNlIGlmICghYS5pc0RlZmF1bHRQ
cmV2ZW50ZWQoKSkgew0KICAgICAgICAgICAgICAgIGYgPTNEIGEudGFyZ2V0
Ow0KICAgICAgICAgICAgICAgIHZhciBpLCBvID0zRCBjLm5vZGVOYW1lKGYs
ICJhIikgJiYgZSA9M0Q9M0Q9M0QgImNsaWNrIiwNCiAgICAgICAgICAgICAg
ICAgICAgayA9M0QgYy5ldmVudC5zcGVjaWFsW2VdIHx8IHt9Ow0KICAgICAg
ICAgICAgICAgIGlmICgoIWsuX2RlZmF1bHQgfHwgay5fZGVmYXVsdC5jYWxs
KGQsIGEpID0zRD0zRD0zRCA9DQpmYWxzZSkgJiYgIW8gJiYgIShmICYmIGYu
bm9kZU5hbWUgJiYgPQ0KYy5ub0RhdGFbZi5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChmW2VdKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGkgPTNEIGZbIm9uIiArIGVdKSBmWyJvbiIgKyBl
XSA9M0QgbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmV2
ZW50LnRyaWdnZXJlZCA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmW2VdKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikge30NCiAgICAgICAgICAg
ICAgICAgICAgaWYgKGkpIGZbIm9uIiArIGVdID0zRCBpOw0KICAgICAgICAg
ICAgICAgICAgICBjLmV2ZW50LnRyaWdnZXJlZCA9M0QgZmFsc2UNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAg
ICAgIGhhbmRsZTogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHZhciBi
LCBkLCBmLCBlOw0KICAgICAgICAgICAgYSA9M0QgYXJndW1lbnRzWzBdID0z
RCBjLmV2ZW50LmZpeChhIHx8IEEuZXZlbnQpOw0KICAgICAgICAgICAgYS5j
dXJyZW50VGFyZ2V0ID0zRCB0aGlzOw0KICAgICAgICAgICAgYiA9M0QgYS50
eXBlLmluZGV4T2YoIi4iKSA8IDAgJiYgIWEuZXhjbHVzaXZlOw0KICAgICAg
ICAgICAgaWYgKCFiKSB7DQogICAgICAgICAgICAgICAgZCA9M0QgYS50eXBl
LnNwbGl0KCIuIik7DQogICAgICAgICAgICAgICAgYS50eXBlID0zRCBkLnNo
aWZ0KCk7DQogICAgICAgICAgICAgICAgZiA9M0QgbmV3IFJlZ0V4cCgiKF58
XFwuKSIgKyA9DQpkLnNsaWNlKDApLnNvcnQoKS5qb2luKCJcXC4oPzouKlxc
Lik/IikgKyAiKFxcLnwkKSIpDQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBlID0zRCBjLmRhdGEodGhpcywgImV2ZW50cyIpOw0KICAgICAgICAgICAg
ZCA9M0QgZVthLnR5cGVdOw0KICAgICAgICAgICAgaWYgKGUgJiYgZCkgew0K
ICAgICAgICAgICAgICAgIGQgPTNEIGQuc2xpY2UoMCk7DQogICAgICAgICAg
ICAgICAgZSA9M0QgMDsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0z
RCBkLmxlbmd0aDsgZSA8IGo7IGUrKykgew0KICAgICAgICAgICAgICAgICAg
ICB2YXIgaSA9M0QgZFtlXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGIg
fHwgZi50ZXN0KGkubmFtZXNwYWNlKSkgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgYS5oYW5kbGVyID0zRCBpLmhhbmRsZXI7DQogICAgICAgICAgICAg
ICAgICAgICAgICBhLmRhdGEgPTNEIGkuZGF0YTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGEuaGFuZGxlT2JqID0zRCBpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgaSA9M0QgaS5oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cyk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPTNEPTNEIHcp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnJlc3VsdCA9M0Qg
aTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9M0Q9M0Q9
M0QgZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhLnN0b3BQcm9wYWdhdGlvbigpDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGEuaXNJbW1lZGlhdGVQcm9wYWdh
dGlvblN0b3BwZWQoKSkgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IHJldHVybiBhLnJlc3VsdA0KICAgICAgICB9LA0KICAgICAgICBwcm9wczog
ImFsdEtleSBhdHRyQ2hhbmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9uIGNh
bmNlbGFibGUgPQ0KY2hhckNvZGUgY2xpZW50WCBjbGllbnRZIGN0cmxLZXkg
Y3VycmVudFRhcmdldCBkYXRhIGRldGFpbCBldmVudFBoYXNlID0NCmZyb21F
bGVtZW50IGhhbmRsZXIga2V5Q29kZSBsYXllclggbGF5ZXJZIG1ldGFLZXkg
bmV3VmFsdWUgb2Zmc2V0WCA9DQpvZmZzZXRZIG9yaWdpbmFsVGFyZ2V0IHBh
Z2VYIHBhZ2VZIHByZXZWYWx1ZSByZWxhdGVkTm9kZSByZWxhdGVkVGFyZ2V0
ID0NCnNjcmVlblggc2NyZWVuWSBzaGlmdEtleSBzcmNFbGVtZW50IHRhcmdl
dCB0b0VsZW1lbnQgdmlldyB3aGVlbERlbHRhID0NCndoaWNoIi5zcGxpdCgi
ICIpLA0KICAgICAgICBmaXg6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAg
ICBpZiAoYVtHXSkgcmV0dXJuIGE7DQogICAgICAgICAgICB2YXIgYiA9M0Qg
YTsNCiAgICAgICAgICAgIGEgPTNEIGMuRXZlbnQoYik7DQogICAgICAgICAg
ICBmb3IgKHZhciBkID0zRCB0aGlzLnByb3BzLmxlbmd0aCwgZjsgZDspIHsN
CiAgICAgICAgICAgICAgICBmID0zRCB0aGlzLnByb3BzWy0tZF07DQogICAg
ICAgICAgICAgICAgYVtmXSA9M0QgYltmXQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgaWYgKCFhLnRhcmdldCkgYS50YXJnZXQgPTNEIGEuc3JjRWxl
bWVudCB8fCBzOw0KICAgICAgICAgICAgaWYgKGEudGFyZ2V0Lm5vZGVUeXBl
ID0zRD0zRD0zRCAzKSBhLnRhcmdldCA9M0QgPQ0KYS50YXJnZXQucGFyZW50
Tm9kZTsNCiAgICAgICAgICAgIGlmICghYS5yZWxhdGVkVGFyZ2V0ICYmIGEu
ZnJvbUVsZW1lbnQpIGEucmVsYXRlZFRhcmdldCA9M0QgPQ0KYS5mcm9tRWxl
bWVudCA9M0Q9M0Q9M0QgYS50YXJnZXQgPyBhLnRvRWxlbWVudCA6IGEuZnJv
bUVsZW1lbnQ7DQogICAgICAgICAgICBpZiAoYS5wYWdlWCA9M0Q9M0QgbnVs
bCAmJiBhLmNsaWVudFggIT0zRCBudWxsKSB7DQogICAgICAgICAgICAgICAg
YiA9M0Qgcy5kb2N1bWVudEVsZW1lbnQ7DQogICAgICAgICAgICAgICAgZCA9
M0Qgcy5ib2R5Ow0KICAgICAgICAgICAgICAgIGEucGFnZVggPTNEIGEuY2xp
ZW50WCArIChiICYmIGIuc2Nyb2xsTGVmdCB8fCBkICYmID0NCmQuc2Nyb2xs
TGVmdCB8fCAwKSAtIChiICYmIGIuY2xpZW50TGVmdCB8fCBkICYmIGQuY2xp
ZW50TGVmdCB8fCAwKTsNCiAgICAgICAgICAgICAgICBhLnBhZ2VZID0zRCBh
LmNsaWVudFkgKyAoYiAmJiBiLnNjcm9sbFRvcCB8fCBkICYmID0NCmQuc2Ny
b2xsVG9wIHx8IDApIC0gKGIgJiYgYi5jbGllbnRUb3AgfHwgZCAmJiBkLmNs
aWVudFRvcCB8fCAwKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYg
KCFhLndoaWNoICYmIChhLmNoYXJDb2RlIHx8IGEuY2hhckNvZGUgPTNEPTNE
PTNEIDAgPyA9DQphLmNoYXJDb2RlIDogYS5rZXlDb2RlKSkgYS53aGljaCA9
M0QgYS5jaGFyQ29kZSB8fCBhLmtleUNvZGU7DQogICAgICAgICAgICBpZiAo
IWEubWV0YUtleSAmJiBhLmN0cmxLZXkpIGEubWV0YUtleSA9M0QgYS5jdHJs
S2V5Ow0KICAgICAgICAgICAgaWYgKCFhLndoaWNoICYmIGEuYnV0dG9uICE9
M0Q9M0QgdykgYS53aGljaCA9M0QgYS5idXR0b24gJiAxID0NCj8gMSA6IGEu
YnV0dG9uICYgMiA/IDMgOiBhLmJ1dHRvbiAmIDQgPyAyIDogMDsNCiAgICAg
ICAgICAgIHJldHVybiBhDQogICAgICAgIH0sDQogICAgICAgIGd1aWQ6IDFF
OCwNCiAgICAgICAgcHJveHk6IGMucHJveHksDQogICAgICAgIHNwZWNpYWw6
IHsNCiAgICAgICAgICAgIHJlYWR5OiB7DQogICAgICAgICAgICAgICAgc2V0
dXA6IGMuYmluZFJlYWR5LA0KICAgICAgICAgICAgICAgIHRlYXJkb3duOiBj
Lm5vb3ANCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBsaXZlOiB7DQog
ICAgICAgICAgICAgICAgYWRkOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAg
ICAgICAgICAgICBjLmV2ZW50LmFkZCh0aGlzLCBhLm9yaWdUeXBlLCBjLmV4
dGVuZCh7fSwgYSwgew0KICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
cjogb2ENCiAgICAgICAgICAgICAgICAgICAgfSkpDQogICAgICAgICAgICAg
ICAgfSwNCiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIChhKSB7
DQogICAgICAgICAgICAgICAgICAgIHZhciBiID0zRCB0cnVlLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgZCA9M0QgYS5vcmlnVHlwZS5yZXBsYWNlKE8s
ICIiKTsNCiAgICAgICAgICAgICAgICAgICAgYy5lYWNoKGMuZGF0YSh0aGlz
LCAiZXZlbnRzIikubGl2ZSB8fCBbXSwgZnVuY3Rpb24gPQ0KKCkgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGQgPTNEPTNEPTNEIHRoaXMub3Jp
Z1R5cGUucmVwbGFjZShPLCAiIikpID0NCnJldHVybiBiID0zRCBmYWxzZQ0K
ICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAg
YiAmJiBjLmV2ZW50LnJlbW92ZSh0aGlzLCBhLm9yaWdUeXBlLCBvYSkNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
YmVmb3JldW5sb2FkOiB7DQogICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0
aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlz
LnNldEludGVydmFsKSB0aGlzLm9uYmVmb3JldW5sb2FkID0zRCBkOw0KICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2UNCiAgICAgICAgICAgICAg
ICB9LA0KICAgICAgICAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbiAoYSwg
Yikgew0KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vbmJlZm9yZXVu
bG9hZCA9M0Q9M0Q9M0QgYikgPQ0KdGhpcy5vbmJlZm9yZXVubG9hZCA9M0Qg
bnVsbA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgIH07DQogICAgdmFyIENhID0zRCBzLnJlbW92ZUV2ZW50TGlz
dGVuZXIgPw0KICAgIGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgIGEu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihiLCBkLCBmYWxzZSkNCiAgICB9IDogZnVu
Y3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgYS5kZXRhY2hFdmVudCgib24i
ICsgYiwgZCkNCiAgICB9Ow0KICAgIGMuRXZlbnQgPTNEIGZ1bmN0aW9uIChh
KSB7DQogICAgICAgIGlmICghdGhpcy5wcmV2ZW50RGVmYXVsdCkgcmV0dXJu
IG5ldyBjLkV2ZW50KGEpOw0KICAgICAgICBpZiAoYSAmJiBhLnR5cGUpIHsN
CiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxFdmVudCA9M0QNCiAgICAgICAg
ICAgIGE7DQogICAgICAgICAgICB0aGlzLnR5cGUgPTNEIGEudHlwZQ0KICAg
ICAgICB9IGVsc2UgdGhpcy50eXBlID0zRCBhOw0KICAgICAgICB0aGlzLnRp
bWVTdGFtcCA9M0QgSigpOw0KICAgICAgICB0aGlzW0ddID0zRCB0cnVlDQog
ICAgfTsNCiAgICBjLkV2ZW50LnByb3RvdHlwZSA9M0Qgew0KICAgICAgICBw
cmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdGhp
cy5pc0RlZmF1bHRQcmV2ZW50ZWQgPTNEIFo7DQogICAgICAgICAgICB2YXIg
YSA9M0QgdGhpcy5vcmlnaW5hbEV2ZW50Ow0KICAgICAgICAgICAgaWYgKGEp
IHsNCiAgICAgICAgICAgICAgICBhLnByZXZlbnREZWZhdWx0ICYmIGEucHJl
dmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICBhLnJldHVyblZhbHVl
ID0zRCBmYWxzZQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAg
ICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAg
IHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPTNEIFo7DQogICAgICAgICAg
ICB2YXIgYSA9M0QgdGhpcy5vcmlnaW5hbEV2ZW50Ow0KICAgICAgICAgICAg
aWYgKGEpIHsNCiAgICAgICAgICAgICAgICBhLnN0b3BQcm9wYWdhdGlvbiAm
JiBhLnN0b3BQcm9wYWdhdGlvbigpOw0KICAgICAgICAgICAgICAgIGEuY2Fu
Y2VsQnViYmxlID0zRCB0cnVlDQogICAgICAgICAgICB9DQogICAgICAgIH0s
DQogICAgICAgIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24g
KCkgew0KICAgICAgICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9u
U3RvcHBlZCA9M0QgWjsNCiAgICAgICAgICAgIHRoaXMuc3RvcFByb3BhZ2F0
aW9uKCkNCiAgICAgICAgfSwNCiAgICAgICAgaXNEZWZhdWx0UHJldmVudGVk
OiBZLA0KICAgICAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogWSwNCiAgICAg
ICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IFkNCiAgICB9Ow0K
ICAgIHZhciBEYSA9M0QgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgdmFyIGIg
PTNEIGEucmVsYXRlZFRhcmdldDsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAg
ICAgIGZvciAoOyBiICYmIGIgIT0zRD0zRCB0aGlzOykgYiA9M0QgYi5wYXJl
bnROb2RlOw0KICAgICAgICAgICAgaWYgKGIgIT0zRD0zRCB0aGlzKSB7DQog
ICAgICAgICAgICAgICAgYS50eXBlID0zRCBhLmRhdGE7DQogICAgICAgICAg
ICAgICAgYy5ldmVudC5oYW5kbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChkKSB7fQ0KICAgIH0s
DQogICAgICAgIEVhID0zRCBmdW5jdGlvbiAoYSkgew0KICAgICAgICBhLnR5
cGUgPTNEIGEuZGF0YTsNCiAgICAgICAgYy5ldmVudC5oYW5kbGUuYXBwbHko
dGhpcywgYXJndW1lbnRzKQ0KICAgIH07DQogICAgYy5lYWNoKHsNCiAgICAg
ICAgbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsDQogICAgICAgIG1vdXNlbGVh
dmU6ICJtb3VzZW91dCINCiAgICB9LCBmdW5jdGlvbiAoYSwgYikgew0KICAg
ICAgICBjLmV2ZW50LnNwZWNpYWxbYV0gPTNEIHsNCiAgICAgICAgICAgIHNl
dHVwOiBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAgIGMuZXZlbnQu
YWRkKHRoaXMsIGIsIGQgJiYgZC5zZWxlY3RvciA/IEVhIDogRGEsIGEpDQog
ICAgICAgICAgICB9LA0KICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9u
IChkKSB7DQogICAgICAgICAgICAgICAgYy5ldmVudC5yZW1vdmUodGhpcywg
YiwgZCAmJiBkLnNlbGVjdG9yID8gRWEgOiBEYSkNCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgIH0pOw0KICAgIGlmICghYy5zdXBwb3J0LnN1Ym1p
dEJ1YmJsZXMpIGMuZXZlbnQuc3BlY2lhbC5zdWJtaXQgPTNEIHsNCiAgICAg
ICAgc2V0dXA6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlmICh0aGlz
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0zRD0zRCAiZm9ybSIpIHsNCiAg
ICAgICAgICAgICAgICBjLmV2ZW50LmFkZCh0aGlzLCAiY2xpY2suc3BlY2lh
bFN1Ym1pdCIsIGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICAgICAgICAg
IHZhciBiID0zRCBhLnRhcmdldCwNCiAgICAgICAgICAgICAgICAgICAgICAg
IGQgPTNEIGIudHlwZTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKChkID0z
RD0zRD0zRCAic3VibWl0IiB8fCBkID0zRD0zRD0zRCAiaW1hZ2UiKSAmJiA9
DQpjKGIpLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGgpIHJldHVybiBuYSgic3Vi
bWl0IiwgdGhpcywgYXJndW1lbnRzKQ0KICAgICAgICAgICAgICAgIH0pOw0K
ICAgICAgICAgICAgICAgIGMuZXZlbnQuYWRkKHRoaXMsICJrZXlwcmVzcy5z
cGVjaWFsU3VibWl0IiwgZnVuY3Rpb24gKGEpID0NCnsNCiAgICAgICAgICAg
ICAgICAgICAgdmFyIGIgPTNEIGEudGFyZ2V0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgZCA9M0QgYi50eXBlOw0KICAgICAgICAgICAgICAgICAgICBp
ZiAoKGQgPTNEPTNEPTNEICJ0ZXh0IiB8fCBkID0zRD0zRD0zRCAicGFzc3dv
cmQiKSA9DQomJiBjKGIpLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGggJiYgYS5r
ZXlDb2RlID0zRD0zRD0zRCAxMykgcmV0dXJuID0NCm5hKCJzdWJtaXQiLCB0
aGlzLCBhcmd1bWVudHMpDQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAg
ICAgIH0gZWxzZSByZXR1cm4gZmFsc2UNCiAgICAgICAgfSwNCiAgICAgICAg
dGVhcmRvd246IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGMuZXZlbnQu
cmVtb3ZlKHRoaXMsICIuc3BlY2lhbFN1Ym1pdCIpDQogICAgICAgIH0NCiAg
ICB9Ow0KICAgIGlmICghYy5zdXBwb3J0LmNoYW5nZUJ1YmJsZXMpIHsNCiAg
ICAgICAgdmFyIGRhID0zRCAvdGV4dGFyZWF8aW5wdXR8c2VsZWN0L2ksDQog
ICAgICAgICAgICBlYSwgRmEgPTNEIGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICB2YXIgYiA9M0QgYS50eXBlLA0KICAgICAgICAgICAgICAgIGQgPTNE
IGEudmFsdWU7DQogICAgICAgICAgICBpZiAoYiA9M0Q9M0Q9M0QgInJhZGlv
IiB8fCBiID0zRD0zRD0zRCAiY2hlY2tib3giKSBkID0zRCA9DQphLmNoZWNr
ZWQ7DQogICAgICAgICAgICBlbHNlIGlmIChiID0zRD0zRD0zRCAic2VsZWN0
LW11bHRpcGxlIikgZCA9M0QgPQ0KYS5zZWxlY3RlZEluZGV4ID4gLTEgPyBj
Lm1hcChhLm9wdGlvbnMsIGZ1bmN0aW9uIChmKSB7DQogICAgICAgICAgICAg
ICAgcmV0dXJuIGYuc2VsZWN0ZWQNCiAgICAgICAgICAgIH0pLmpvaW4oIi0i
KSA6ICIiOw0KICAgICAgICAgICAgZWxzZSBpZiAoYS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpID0zRD0zRD0zRCAic2VsZWN0IikgZCA9M0QgPQ0KYS5zZWxl
Y3RlZEluZGV4Ow0KICAgICAgICAgICAgcmV0dXJuIGQNCiAgICAgICAgfSwN
CiAgICAgICAgICAgIGZhID0zRCBmdW5jdGlvbiAoYSwgYikgew0KICAgICAg
ICAgICAgdmFyIGQgPTNEIGEudGFyZ2V0LA0KICAgICAgICAgICAgICAgIGYs
IGU7DQogICAgICAgICAgICBpZiAoISghZGEudGVzdChkLm5vZGVOYW1lKSB8
fCBkLnJlYWRPbmx5KSkgew0KICAgICAgICAgICAgICAgIGYgPTNEIGMuZGF0
YShkLCAiX2NoYW5nZV9kYXRhIik7DQogICAgICAgICAgICAgICAgZSA9M0Qg
RmEoZCk7DQogICAgICAgICAgICAgICAgaWYgKGEudHlwZSAhPTNEPTNEICJm
b2N1c291dCIgfHwgZC50eXBlICE9M0Q9M0QgInJhZGlvIikgPQ0KYy5kYXRh
KGQsICJfY2hhbmdlX2RhdGEiLCBlKTsNCiAgICAgICAgICAgICAgICBpZiAo
IShmID0zRD0zRD0zRCB3IHx8IGUgPTNEPTNEPTNEIGYpKSBpZiAoZiAhPTNE
IG51bGwgPQ0KfHwgZSkgew0KICAgICAgICAgICAgICAgICAgICBhLnR5cGUg
PTNEICJjaGFuZ2UiOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5l
dmVudC50cmlnZ2VyKGEsIGIsIGQpDQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9Ow0KICAgICAgICBjLmV2ZW50LnNwZWNp
YWwuY2hhbmdlID0zRCB7DQogICAgICAgICAgICBmaWx0ZXJzOiB7DQogICAg
ICAgICAgICAgICAgZm9jdXNvdXQ6IGZhLA0KICAgICAgICAgICAgICAgIGNs
aWNrOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIg
YiA9M0QgYS50YXJnZXQsDQogICAgICAgICAgICAgICAgICAgICAgICBkID0z
RCBiLnR5cGU7DQogICAgICAgICAgICAgICAgICAgIGlmIChkID0zRD0zRD0z
RCAicmFkaW8iIHx8IGQgPTNEPTNEPTNEICJjaGVja2JveCIgfHwgPQ0KYi5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpID0zRD0zRD0zRCAic2VsZWN0IikgcmV0
dXJuIGZhLmNhbGwodGhpcywgYSkNCiAgICAgICAgICAgICAgICB9LA0KICAg
ICAgICAgICAgICAgIGtleWRvd246IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICAgICAgICAgIHZhciBiID0zRCBhLnRhcmdldCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGQgPTNEIGIudHlwZTsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKGEua2V5Q29kZSA9M0Q9M0Q9M0QgMTMgJiYgPQ0KYi5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpICE9M0Q9M0QgInRleHRhcmVhIiB8fCBhLmtleUNv
ZGUgPTNEPTNEPTNEIDMyICYmID0NCihkID0zRD0zRD0zRCAiY2hlY2tib3gi
IHx8IGQgPTNEPTNEPTNEICJyYWRpbyIpIHx8IGQgPTNEPTNEPTNEID0NCiJz
ZWxlY3QtbXVsdGlwbGUiKSByZXR1cm4gZmEuY2FsbCh0aGlzLCBhKQ0KICAg
ICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgYmVmb3JlYWN0aXZh
dGU6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICAgICAgICAgIGEgPTNE
IGEudGFyZ2V0Ow0KICAgICAgICAgICAgICAgICAgICBjLmRhdGEoYSwgIl9j
aGFuZ2VfZGF0YSIsIEZhKGEpKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPTNEPTNEPTNEICJmaWxl
IikgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGEg
aW4gZWEpIGMuZXZlbnQuYWRkKHRoaXMsIGEgKyA9DQoiLnNwZWNpYWxDaGFu
Z2UiLCBlYVthXSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGRhLnRlc3Qo
dGhpcy5ub2RlTmFtZSkNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB0
ZWFyZG93bjogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGMuZXZl
bnQucmVtb3ZlKHRoaXMsICIuc3BlY2lhbENoYW5nZSIpOw0KICAgICAgICAg
ICAgICAgIHJldHVybiBkYS50ZXN0KHRoaXMubm9kZU5hbWUpDQogICAgICAg
ICAgICB9DQogICAgICAgIH07DQogICAgICAgIGVhID0zRCBjLmV2ZW50LnNw
ZWNpYWwuY2hhbmdlLmZpbHRlcnMNCiAgICB9DQogICAgcy5hZGRFdmVudExp
c3RlbmVyICYmIGMuZWFjaCh7DQogICAgICAgIGZvY3VzOiAiZm9jdXNpbiIs
DQogICAgICAgIGJsdXI6ICJmb2N1c291dCINCiAgICB9LCBmdW5jdGlvbiAo
YSwgYikgew0KICAgICAgICBmdW5jdGlvbiBkKGYpIHsNCiAgICAgICAgICAg
IGYgPTNEIGMuZXZlbnQuZml4KGYpOw0KICAgICAgICAgICAgZi50eXBlID0z
RCBiOw0KICAgICAgICAgICAgcmV0dXJuIGMuZXZlbnQuaGFuZGxlLmNhbGwo
dGhpcywgZikNCiAgICAgICAgfQ0KICAgICAgICBjLmV2ZW50LnNwZWNpYWxb
Yl0gPTNEIHsNCiAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGEsIGQsIHRy
dWUpDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgdGVhcmRvd246IGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50
TGlzdGVuZXIoYSwgZCwgdHJ1ZSkNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgIH0pOw0KICAgIGMuZWFjaChbImJpbmQiLCAib25lIl0sIGZ1bmN0
aW9uIChhLCBiKSB7DQogICAgICAgIGMuZm5bYl0gPTNEIGZ1bmN0aW9uIChk
LCBmLCBlKSB7DQogICAgICAgICAgICBpZiAodHlwZW9mIGQgPTNEPTNEPTNE
ICJvYmplY3QiKSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBk
KSB0aGlzW2JdKGosIGYsIGRbal0sIGUpOw0KICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoYy5p
c0Z1bmN0aW9uKGYpKSB7DQogICAgICAgICAgICAgICAgZSA9M0QgZjsNCiAg
ICAgICAgICAgICAgICBmID0zRCB3DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICB2YXIgaSA9M0QgYiA9M0Q9M0Q9M0QgIm9uZSIgPyBjLnByb3h5KGUs
IGZ1bmN0aW9uIChrKSB7DQogICAgICAgICAgICAgICAgYyh0aGlzKS51bmJp
bmQoaywgaSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGUuYXBwbHkodGhp
cywgYXJndW1lbnRzKQ0KICAgICAgICAgICAgfSkgOiBlOw0KICAgICAgICAg
ICAgaWYgKGQgPTNEPTNEPTNEICJ1bmxvYWQiICYmIGIgIT0zRD0zRCAib25l
IikgdGhpcy5vbmUoZCwgZiwgPQ0KZSk7DQogICAgICAgICAgICBlbHNlIHsN
CiAgICAgICAgICAgICAgICBqID0zRCAwOw0KICAgICAgICAgICAgICAgIGZv
ciAodmFyIG8gPTNEIHRoaXMubGVuZ3RoOyBqIDwgbzsgaisrKSA9DQpjLmV2
ZW50LmFkZCh0aGlzW2pdLCBkLCBpLCBmKQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAgICAgfQ0KICAgIH0pOw0KICAg
IGMuZm4uZXh0ZW5kKHsNCiAgICAgICAgdW5iaW5kOiBmdW5jdGlvbiAoYSwg
Yikgew0KICAgICAgICAgICAgaWYgKHR5cGVvZiBhID0zRD0zRD0zRCAib2Jq
ZWN0IiAmJiAhYS5wcmV2ZW50RGVmYXVsdCkgZm9yID0NCih2YXIgZCBpbiBh
KSB0aGlzLnVuYmluZChkLCBhW2RdKTsNCiAgICAgICAgICAgIGVsc2Ugew0K
ICAgICAgICAgICAgICAgIGQgPTNEIDA7DQogICAgICAgICAgICAgICAgZm9y
ICh2YXIgZiA9M0QgdGhpcy5sZW5ndGg7IGQgPCBmOyBkKyspID0NCmMuZXZl
bnQucmVtb3ZlKHRoaXNbZF0sIGEsIGIpDQogICAgICAgICAgICB9DQogICAg
ICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICB9LA0KICAgICAgICBkZWxl
Z2F0ZTogZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAgIHJl
dHVybiB0aGlzLmxpdmUoYiwgZCwgZiwgYSkNCiAgICAgICAgfSwNCiAgICAg
ICAgdW5kZWxlZ2F0ZTogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID0zRD0zRD0zRCAwID8gdGhp
cy51bmJpbmQoImxpdmUiKSA6ID0NCnRoaXMuZGllKGIsIG51bGwsIGQsIGEp
DQogICAgICAgIH0sDQogICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uIChhLCBi
KSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgp
IHsNCiAgICAgICAgICAgICAgICBjLmV2ZW50LnRyaWdnZXIoYSwgYiwgdGhp
cykNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIHRyaWdn
ZXJIYW5kbGVyOiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgaWYg
KHRoaXNbMF0pIHsNCiAgICAgICAgICAgICAgICBhID0zRCBjLkV2ZW50KGEp
Ow0KICAgICAgICAgICAgICAgIGEucHJldmVudERlZmF1bHQoKTsNCiAgICAg
ICAgICAgICAgICBhLnN0b3BQcm9wYWdhdGlvbigpOw0KICAgICAgICAgICAg
ICAgIGMuZXZlbnQudHJpZ2dlcihhLCBiLCB0aGlzWzBdKTsNCiAgICAgICAg
ICAgICAgICByZXR1cm4gYS5yZXN1bHQNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfSwNCiAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbiAoYSkgew0KICAgICAg
ICAgICAgZm9yICh2YXIgYiA9M0QgYXJndW1lbnRzLCBkID0zRCAxOyBkIDwg
Yi5sZW5ndGg7KSBjLnByb3h5KGEsID0NCmJbZCsrXSk7DQogICAgICAgICAg
ICByZXR1cm4gdGhpcy5jbGljayhjLnByb3h5KGEsIGZ1bmN0aW9uIChmKSB7
DQogICAgICAgICAgICAgICAgdmFyIGUgPTNEIChjLmRhdGEodGhpcywgImxh
c3RUb2dnbGUiICsgYS5ndWlkKSB8fCAwKSAlID0NCmQ7DQogICAgICAgICAg
ICAgICAgYy5kYXRhKHRoaXMsICJsYXN0VG9nZ2xlIiArIGEuZ3VpZCwgZSAr
IDEpOw0KICAgICAgICAgICAgICAgIGYucHJldmVudERlZmF1bHQoKTsNCiAg
ICAgICAgICAgICAgICByZXR1cm4gYltlXS5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpIHx8IGZhbHNlDQogICAgICAgICAgICB9KSkNCiAgICAgICAgfSwNCiAg
ICAgICAgaG92ZXI6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYiB8fCBhKQ0K
ICAgICAgICB9DQogICAgfSk7DQogICAgdmFyIEdhID0zRCB7DQogICAgICAg
IGZvY3VzOiAiZm9jdXNpbiIsDQogICAgICAgIGJsdXI6ICJmb2N1c291dCIs
DQogICAgICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLA0KICAgICAgICBt
b3VzZWxlYXZlOiAibW91c2VvdXQiDQogICAgfTsNCiAgICBjLmVhY2goWyJs
aXZlIiwgImRpZSJdLCBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICBjLmZu
W2JdID0zRCBmdW5jdGlvbiAoZCwgZiwgZSwgaikgew0KICAgICAgICAgICAg
dmFyIGksIG8gPTNEIDAsDQogICAgICAgICAgICAgICAgaywgbiwgciA9M0Qg
aiB8fCB0aGlzLnNlbGVjdG9yLA0KICAgICAgICAgICAgICAgIHUgPTNEIGog
PyB0aGlzIDogYyh0aGlzLmNvbnRleHQpOw0KICAgICAgICAgICAgaWYgKGMu
aXNGdW5jdGlvbihmKSkgew0KICAgICAgICAgICAgICAgIGUgPTNEIGY7DQog
ICAgICAgICAgICAgICAgZiA9M0Qgdw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgZm9yIChkID0zRCAoZCB8fCAiIikuc3BsaXQoIiAiKTsNCiAgICAg
ICAgICAgIChpID0zRCBkW28rK10pICE9M0QgbnVsbDspIHsNCiAgICAgICAg
ICAgICAgICBqID0zRCBPLmV4ZWMoaSk7DQogICAgICAgICAgICAgICAgayA9
M0QgIiI7DQogICAgICAgICAgICAgICAgaWYgKGopIHsNCiAgICAgICAgICAg
ICAgICAgICAgayA9M0QgalswXTsNCiAgICAgICAgICAgICAgICAgICAgaSA9
M0QgaS5yZXBsYWNlKE8sICIiKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICBpZiAoaSA9M0Q9M0Q9M0QgImhvdmVyIikgZC5wdXNoKCJt
b3VzZWVudGVyIiArIGssID0NCiJtb3VzZWxlYXZlIiArIGspOw0KICAgICAg
ICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBuID0zRCBp
Ow0KICAgICAgICAgICAgICAgICAgICBpZiAoaSA9M0Q9M0Q9M0QgImZvY3Vz
IiB8fCBpID0zRD0zRD0zRCAiYmx1ciIpIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGQucHVzaChHYVtpXSArIGspOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgaSArPTNEIGsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkg
PTNEIChHYVtpXSB8fCBpKSArIGs7DQogICAgICAgICAgICAgICAgICAgIGIg
PTNEPTNEPTNEICJsaXZlIiA/IHUuZWFjaChmdW5jdGlvbiAoKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICBjLmV2ZW50LmFkZCh0aGlzLCBwYShpLCBy
KSwgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGYsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IHIsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogaSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcmlnSGFuZGxlcjogZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVUeXBlOiBuDQogICAgICAgICAgICAgICAg
ICAgICAgICB9KQ0KICAgICAgICAgICAgICAgICAgICB9KSA6IHUudW5iaW5k
KHBhKGksIHIpLCBlKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIHJldHVybiB0aGlzDQogICAgICAgIH0NCiAgICB9
KTsNCiAgICBjLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBs
b2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrID0NCmRibGNsaWNrIG1v
dXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQg
bW91c2VlbnRlciA9DQptb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0
IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0KCIgPQ0KIiks
IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgIGMuZm5bYl0gPTNEIGZ1bmN0
aW9uIChkKSB7DQogICAgICAgICAgICByZXR1cm4gZCA/IHRoaXMuYmluZChi
LCBkKSA6IHRoaXMudHJpZ2dlcihiKQ0KICAgICAgICB9Ow0KICAgICAgICBp
ZiAoYy5hdHRyRm4pIGMuYXR0ckZuW2JdID0zRCB0cnVlDQogICAgfSk7DQog
ICAgQS5hdHRhY2hFdmVudCAmJiAhQS5hZGRFdmVudExpc3RlbmVyICYmIEEu
YXR0YWNoRXZlbnQoIm9udW5sb2FkIiwgPQ0KZnVuY3Rpb24gKCkgew0KICAg
ICAgICBmb3IgKHZhciBhIGluIGMuY2FjaGUpIGlmIChjLmNhY2hlW2FdLmhh
bmRsZSkgdHJ5IHsNCiAgICAgICAgICAgIGMuZXZlbnQucmVtb3ZlKGMuY2Fj
aGVbYV0uaGFuZGxlLmVsZW0pDQogICAgICAgIH0gY2F0Y2ggKGIpIHt9DQog
ICAgfSk7DQogICAgKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgZnVuY3Rpb24g
YShnKSB7DQogICAgICAgICAgICBmb3IgKHZhciBoID0zRCAiIiwgbCwgbSA9
M0QgMDsgZ1ttXTsgbSsrKSB7DQogICAgICAgICAgICAgICAgbCA9M0QgZ1tt
XTsNCiAgICAgICAgICAgICAgICBpZiAobC5ub2RlVHlwZSA9M0Q9M0Q9M0Qg
MyB8fCBsLm5vZGVUeXBlID0zRD0zRD0zRCA0KSBoID0NCis9M0QgbC5ub2Rl
VmFsdWU7DQogICAgICAgICAgICAgICAgZWxzZSBpZiAobC5ub2RlVHlwZSAh
PTNEPTNEIDgpIGggKz0zRCBhKGwuY2hpbGROb2RlcykNCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIHJldHVybiBoDQogICAgICAgIH0NCiAgICAgICAg
ZnVuY3Rpb24gYihnLCBoLCBsLCBtLCBxLCBwKSB7DQogICAgICAgICAgICBx
ID0zRCAwOw0KICAgICAgICAgICAgZm9yICh2YXIgdiA9M0QgbS5sZW5ndGg7
IHEgPCB2OyBxKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgdCA9M0QgbVtx
XTsNCiAgICAgICAgICAgICAgICBpZiAodCkgew0KICAgICAgICAgICAgICAg
ICAgICB0ID0zRCB0W2ddOw0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciB5ID0zRCBmYWxzZTsgdDspIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0LnNpemNhY2hlID0zRD0zRD0zRCBsKSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeSA9M0QgbVt0LnNpenNldF07DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lm5vZGVUeXBl
ID0zRD0zRD0zRCAxICYmICFwKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdC5zaXpjYWNoZSA9M0QgbDsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0LnNpenNldCA9M0QgcQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSA9M0Q9M0Q9M0QgaCkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHkgPTNEIHQ7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgIHQgPTNEIHRbZ10NCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBtW3FdID0zRCB5DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAg
ICAgIGZ1bmN0aW9uIGQoZywgaCwgbCwgbSwgcSwgcCkgew0KICAgICAgICAg
ICAgcSA9M0QgMDsNCiAgICAgICAgICAgIGZvciAodmFyIHYgPTNEIG0ubGVu
Z3RoOyBxIDwgdjsgcSsrKSB7DQogICAgICAgICAgICAgICAgdmFyIHQgPTNE
IG1bcV07DQogICAgICAgICAgICAgICAgaWYgKHQpIHsNCiAgICAgICAgICAg
ICAgICAgICAgdCA9M0QgdFtnXTsNCiAgICAgICAgICAgICAgICAgICAgZm9y
ICh2YXIgeSA9M0QgZmFsc2U7IHQ7KSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodC5zaXpjYWNoZSA9M0Q9M0Q9M0QgbCkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHkgPTNEIG1bdC5zaXpzZXRdOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5ub2Rl
VHlwZSA9M0Q9M0Q9M0QgMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghcCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0LnNpemNhY2hlID0zRCBsOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0LnNpenNldCA9M0QgcQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIGggIT0zRD0zRCAic3RyaW5nIikgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodCA9M0Q9M0Q9M0QgaCkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9M0QgdHJ1ZTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGsuZmlsdGVyKGgsIFt0XSkubGVuZ3Ro
ID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0z
RCB0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPTNEIHRb
Z10NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICBtW3FdID0zRCB5DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQogICAgICAgIHZhciBmID0zRCA9DQovKCg/OlwoKD86
XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVte
JyJdKlsnIl18W15bXF0nIl0rPQ0KKStcXXxcXC58W14gPit+LChcW1xcXSsp
K3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZywNCiAgICAgICAg
ICAgIGUgPTNEIDAsDQogICAgICAgICAgICBqID0zRCBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLA0KICAgICAgICAgICAgaSA9M0QgZmFsc2UsDQogICAg
ICAgICAgICBvID0zRCB0cnVlOw0KICAgICAgICBbMCwgMF0uc29ydChmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICBvID0zRCBmYWxzZTsNCiAgICAgICAg
ICAgIHJldHVybiAwDQogICAgICAgIH0pOw0KICAgICAgICB2YXIgayA9M0Qg
ZnVuY3Rpb24gKGcsIGgsIGwsIG0pIHsNCiAgICAgICAgICAgIGwgPTNEIGwg
fHwgW107DQogICAgICAgICAgICB2YXIgcSA9M0QgaCA9M0QgaCB8fCBzOw0K
ICAgICAgICAgICAgaWYgKGgubm9kZVR5cGUgIT0zRD0zRCAxICYmIGgubm9k
ZVR5cGUgIT0zRD0zRCA5KSByZXR1cm4gW107DQogICAgICAgICAgICBpZiAo
IWcgfHwgdHlwZW9mIGcgIT0zRD0zRCAic3RyaW5nIikgcmV0dXJuIGw7DQog
ICAgICAgICAgICBmb3IgKHZhciBwID0zRCBbXSwgdiwgdCwgeSwgUywgSCA9
M0QgdHJ1ZSwgTSA9M0QgeChoKSwgSSA9M0QgPQ0KZzsNCiAgICAgICAgICAg
IChmLmV4ZWMoIiIpLCB2ID0zRCBmLmV4ZWMoSSkpICE9M0Q9M0QgbnVsbDsp
IHsNCiAgICAgICAgICAgICAgICBJID0zRCB2WzNdOw0KICAgICAgICAgICAg
ICAgIHAucHVzaCh2WzFdKTsNCiAgICAgICAgICAgICAgICBpZiAodlsyXSkg
ew0KICAgICAgICAgICAgICAgICAgICBTID0zRCB2WzNdOw0KICAgICAgICAg
ICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDEgJiYgci5leGVj
KGcpKSBpZiAocC5sZW5ndGggPTNEPTNEPTNEIDIgJiYgPQ0Kbi5yZWxhdGl2
ZVtwWzBdXSkgdCA9M0QgZ2EocFswXSArIHBbMV0sIGgpOw0KICAgICAgICAg
ICAgZWxzZSBmb3IgKHQgPTNEIG4ucmVsYXRpdmVbcFswXV0gPyBbaF0gOiBr
KHAuc2hpZnQoKSwgaCk7ID0NCnAubGVuZ3RoOykgew0KICAgICAgICAgICAg
ICAgIGcgPTNEIHAuc2hpZnQoKTsNCiAgICAgICAgICAgICAgICBpZiAobi5y
ZWxhdGl2ZVtnXSkgZyArPTNEIHAuc2hpZnQoKTsNCiAgICAgICAgICAgICAg
ICB0ID0zRCBnYShnLCB0KQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgICAgICBpZiAoIW0gJiYgcC5sZW5ndGggPiAxICYmIGgubm9kZVR5
cGUgPTNEPTNEPTNEIDkgJiYgIU0gPQ0KJiYgbi5tYXRjaC5JRC50ZXN0KHBb
MF0pICYmICFuLm1hdGNoLklELnRlc3QocFtwLmxlbmd0aCAtIDFdKSkgew0K
ICAgICAgICAgICAgICAgICAgICB2ID0zRCBrLmZpbmQocC5zaGlmdCgpLCBo
LCBNKTsNCiAgICAgICAgICAgICAgICAgICAgaCA9M0Qgdi5leHByID8gay5m
aWx0ZXIodi5leHByLCB2LnNldClbMF0gOiB2LnNldFswXQ0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoaCkgew0KICAgICAgICAg
ICAgICAgICAgICB2ID0zRCBtID8gew0KICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwcjogcC5wb3AoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHNl
dDogeihtKQ0KICAgICAgICAgICAgICAgICAgICB9IDogay5maW5kKHAucG9w
KCksIHAubGVuZ3RoID0zRD0zRD0zRCAxICYmIChwWzBdID0NCj0zRD0zRD0z
RCAifiIgfHwgcFswXSA9M0Q9M0Q9M0QgIisiKSAmJiBoLnBhcmVudE5vZGUg
PyBoLnBhcmVudE5vZGUgOiBoLCA9DQpNKTsNCiAgICAgICAgICAgICAgICAg
ICAgdCA9M0Qgdi5leHByID8gay5maWx0ZXIodi5leHByLCB2LnNldCkgOiB2
LnNldDsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkg
eSA9M0Qgeih0KTsNCiAgICAgICAgICAgICAgICAgICAgZWxzZSBIID0zRCBm
YWxzZTsNCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IHAubGVuZ3RoOykg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEQgPTNEIHAucG9wKCk7
DQogICAgICAgICAgICAgICAgICAgICAgICB2ID0zRCBEOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG4ucmVsYXRpdmVbRF0pIHYgPTNEIHAucG9w
KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEQgPTNEICIiOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPTNEPTNEIG51bGwpIHYg
PTNEIGg7DQogICAgICAgICAgICAgICAgICAgICAgICBuLnJlbGF0aXZlW0Rd
KHksIHYsIE0pDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICB9IGVsc2UgeSA9M0QgW10NCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHkgfHwgKHkgPTNEIHQpOw0KICAgICAgICAgICAgeSB8fCBrLmVycm9y
KEQgfHwgZyk7DQogICAgICAgICAgICBpZiAoai5jYWxsKHkpID0zRD0zRD0z
RCAiW29iamVjdCBBcnJheV0iKSBpZiAoSCkgaWYgKGggJiYgPQ0KaC5ub2Rl
VHlwZSA9M0Q9M0Q9M0QgMSkgZm9yIChnID0zRCAwOyB5W2ddICE9M0QgbnVs
bDsgZysrKSB7DQogICAgICAgICAgICAgICAgaWYgKHlbZ10gJiYgKHlbZ10g
PTNEPTNEPTNEIHRydWUgfHwgeVtnXS5ub2RlVHlwZSA9DQo9M0Q9M0Q9M0Qg
MSAmJiBFKGgsIHlbZ10pKSkgbC5wdXNoKHRbZ10pDQogICAgICAgICAgICB9
IGVsc2UgZm9yIChnID0zRCAwOyB5W2ddICE9M0QgbnVsbDsgZysrKSB5W2dd
ICYmID0NCnlbZ10ubm9kZVR5cGUgPTNEPTNEPTNEIDEgJiYgbC5wdXNoKHRb
Z10pOw0KICAgICAgICAgICAgZWxzZSBsLnB1c2guYXBwbHkobCwgeSk7DQog
ICAgICAgICAgICBlbHNlIHooeSwgbCk7DQogICAgICAgICAgICBpZiAoUykg
ew0KICAgICAgICAgICAgICAgIGsoUywgcSwgbCwgbSk7DQogICAgICAgICAg
ICAgICAgay51bmlxdWVTb3J0KGwpDQogICAgICAgICAgICB9DQogICAgICAg
ICAgICByZXR1cm4gbA0KICAgICAgICB9Ow0KICAgICAgICBrLnVuaXF1ZVNv
cnQgPTNEIGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAgICBpZiAoQikgew0K
ICAgICAgICAgICAgICAgIGkgPTNEIG87DQogICAgICAgICAgICAgICAgZy5z
b3J0KEIpOw0KICAgICAgICAgICAgICAgIGlmIChpKSBmb3IgKHZhciBoID0z
RCAxOyBoIDwgZy5sZW5ndGg7IGgrKykgZ1toXSA9DQo9M0Q9M0Q9M0QgZ1to
IC0gMV0gJiYgZy5zcGxpY2UoaC0tLCAxKQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgcmV0dXJuIGcNCiAgICAgICAgfTsNCiAgICAgICAgay5tYXRj
aGVzID0zRCBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAgICAgcmV0dXJu
IGsoZywgbnVsbCwgbnVsbCwgaCkNCiAgICAgICAgfTsNCiAgICAgICAgay5m
aW5kID0zRCBmdW5jdGlvbiAoZywgaCwgbCkgew0KICAgICAgICAgICAgdmFy
IG0sIHE7DQogICAgICAgICAgICBpZiAoIWcpIHJldHVybiBbXTsNCiAgICAg
ICAgICAgIGZvciAodmFyIHAgPTNEIDAsIHYgPTNEIG4ub3JkZXIubGVuZ3Ro
OyBwIDwgdjsgcCsrKSB7DQogICAgICAgICAgICAgICAgdmFyIHQgPTNEIG4u
b3JkZXJbcF07DQogICAgICAgICAgICAgICAgaWYgKHEgPTNEIG4ubGVmdE1h
dGNoW3RdLmV4ZWMoZykpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHkg
PTNEIHFbMV07DQogICAgICAgICAgICAgICAgICAgIHEuc3BsaWNlKDEsIDEp
Ow0KICAgICAgICAgICAgICAgICAgICBpZiAoeS5zdWJzdHIoeS5sZW5ndGgg
LSAxKSAhPTNEPTNEICJcXCIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IHFbMV0gPTNEIChxWzFdIHx8ICIiKS5yZXBsYWNlKC9cXC9nLCAiIik7DQog
ICAgICAgICAgICAgICAgICAgICAgICBtID0zRCBuLmZpbmRbdF0ocSwgaCwg
bCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobSAhPTNEIG51bGwp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0zRCBnLnJlcGxh
Y2Uobi5tYXRjaFt0XSwgIiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBtIHx8IChtID0zRCBoLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCIqIikpOw0KICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAg
ICAgICAgICBzZXQ6IG0sDQogICAgICAgICAgICAgICAgZXhwcjogZw0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9Ow0KICAgICAgICBrLmZpbHRlciA9M0Qg
ZnVuY3Rpb24gKGcsIGgsIGwsIG0pIHsNCiAgICAgICAgICAgIGZvciAodmFy
IHEgPTNEIGcsIHAgPTNEIFtdLCB2ID0zRCBoLCB0LCB5LCBTID0zRCBoICYm
IGhbMF0gPQ0KJiYgeChoWzBdKTsgZyAmJiBoLmxlbmd0aDspIHsNCiAgICAg
ICAgICAgICAgICBmb3IgKHZhciBIIGluIG4uZmlsdGVyKSBpZiAoKHQgPTNE
ID0NCm4ubGVmdE1hdGNoW0hdLmV4ZWMoZykpICE9M0QgbnVsbCAmJiB0WzJd
KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBNID0zRCBuLmZpbHRlcltI
XSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEksIEQ7DQogICAgICAgICAg
ICAgICAgICAgIEQgPTNEIHRbMV07DQogICAgICAgICAgICAgICAgICAgIHkg
PTNEIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB0LnNwbGljZSgxLCAx
KTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKEQuc3Vic3RyKEQubGVuZ3Ro
IC0gMSkgIT0zRD0zRCAiXFwiKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodiA9M0Q9M0Q9M0QgcCkgcCA9M0QgW107DQogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobi5wcmVGaWx0ZXJbSF0pIGlmICh0ID0zRCBuLnBy
ZUZpbHRlcltIXSh0LCA9DQp2LCBsLCBwLCBtLCBTKSkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ID0zRD0zRD0zRCB0cnVlKSBjb250
aW51ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHkgPTNEIEkg
PTNEIHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkgZm9y
ICh2YXIgVSA9M0QgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIChEID0z
RCB2W1VdKSAhPTNEIG51bGw7IFUrKykgaWYgKEQpIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJID0zRCBNKEQsIHQsIFUsIHYpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBIYSA9M0QgbSBeICEhIEk7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgJiYgSSAhPTNEIG51
bGwpIGlmIChIYSkgeSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHZbVV0gPTNEIGZhbHNlOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKEhhKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHAucHVzaChEKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeSA9M0QgdHJ1ZQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChJICE9M0Q9M0Qgdykgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGwgfHwgKHYgPTNEIHApOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGcgPTNEIGcucmVwbGFjZShuLm1hdGNo
W0hdLCAiIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF5
KSByZXR1cm4gW107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBp
ZiAoZyA9M0Q9M0Q9M0QgcSkgaWYgKHkgPTNEPTNEIG51bGwpIGsuZXJyb3Io
Zyk7DQogICAgICAgICAgICAgICAgZWxzZSBicmVhazsNCiAgICAgICAgICAg
ICAgICBxID0zRCBnDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1
cm4gdg0KICAgICAgICB9Ow0KDQogICAgICAgIGsuZXJyb3IgPTNEIGZ1bmN0
aW9uIChnKSB7DQogICAgICAgICAgICB0aHJvdyAiU3ludGF4IGVycm9yLCB1
bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGc7DQogICAgICAgIH07DQog
ICAgICAgIHZhciBuID0zRCBrLnNlbGVjdG9ycyA9M0Qgew0KICAgICAgICAg
ICAgb3JkZXI6IFsiSUQiLCAiTkFNRSIsICJUQUciXSwNCiAgICAgICAgICAg
IG1hdGNoOiB7DQogICAgICAgICAgICAgICAgSUQ6IC8jKCg/Oltcd1x1MDBj
MC1cdUZGRkYtXXxcXC4pKykvLA0KICAgICAgICAgICAgICAgIENMQVNTOiAv
XC4oKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKS8sDQogICAgICAgICAg
ICAgICAgTkFNRTogPQ0KL1xbbmFtZT0zRFsnIl0qKCg/Oltcd1x1MDBjMC1c
dUZGRkYtXXxcXC4pKylbJyJdKlxdLywNCiAgICAgICAgICAgICAgICBBVFRS
OiA9DQovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKVxzKig/
OihcUz89M0QpXHMqKFsnIl0qKSguKj8pXDN8KVxzKlxdPQ0KLywNCiAgICAg
ICAgICAgICAgICBUQUc6IC9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKi1dfFxc
LikrKS8sDQogICAgICAgICAgICAgICAgQ0hJTEQ6ID0NCi86KG9ubHl8bnRo
fGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkp
Py8sDQogICAgICAgICAgICAgICAgUE9TOiA9DQovOihudGh8ZXF8Z3R8bHR8
Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PTNEW14tXXwk
KS8sDQogICAgICAgICAgICAgICAgUFNFVURPOiA9DQovOigoPzpbXHdcdTAw
YzAtXHVGRkZGLV18XFwuKSspKD86XCgoWyciXT8pKCg/OlwoW15cKV0rXCl8
W15cKFwpXSopKylcMlwpPQ0KKT8vDQogICAgICAgICAgICB9LA0KICAgICAg
ICAgICAgbGVmdE1hdGNoOiB7fSwNCiAgICAgICAgICAgIGF0dHJNYXA6IHsN
CiAgICAgICAgICAgICAgICAiY2xhc3MiOiAiY2xhc3NOYW1lIiwNCiAgICAg
ICAgICAgICAgICAiZm9yIjogImh0bWxGb3IiDQogICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgYXR0ckhhbmRsZTogew0KICAgICAgICAgICAgICAgIGhy
ZWY6IGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVy
biBnLmdldEF0dHJpYnV0ZSgiaHJlZiIpDQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHJlbGF0aXZlOiB7DQogICAg
ICAgICAgICAgICAgIisiOiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAg
ICAgICAgICAgICB2YXIgbCA9M0QgdHlwZW9mIGggPTNEPTNEPTNEICJzdHJp
bmciLA0KICAgICAgICAgICAgICAgICAgICAgICAgbSA9M0QgbCAmJiAhL1xX
Ly50ZXN0KGgpOw0KICAgICAgICAgICAgICAgICAgICBsID0zRCBsICYmICFt
Ow0KICAgICAgICAgICAgICAgICAgICBpZiAobSkgaCA9M0QgaC50b0xvd2Vy
Q2FzZSgpOw0KICAgICAgICAgICAgICAgICAgICBtID0zRCAwOw0KICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBxID0zRCBnLmxlbmd0aCwgcDsgbSA8
IHE7IG0rKykgaWYgKHAgPTNEID0NCmdbbV0pIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoOw0KICAgICAgICAgICAgICAgICAgICAgICAgKHAg
PTNEIHAucHJldmlvdXNTaWJsaW5nKSAmJiBwLm5vZGVUeXBlICE9M0Q9M0Qg
PQ0KMTspOw0KICAgICAgICAgICAgICAgICAgICAgICAgZ1ttXSA9M0QgbCB8
fCBwICYmIHAubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9DQo9M0Q9M0Q9M0Qg
aCA/IHAgfHwgZmFsc2UgOiBwID0zRD0zRD0zRCBoDQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgbCAmJiBrLmZpbHRlciho
LCBnLCB0cnVlKQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAg
ICAgIj4iOiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAgICAgICAgICAg
ICB2YXIgbCA9M0QgdHlwZW9mIGggPTNEPTNEPTNEICJzdHJpbmciOw0KICAg
ICAgICAgICAgICAgICAgICBpZiAobCAmJiAhL1xXLy50ZXN0KGgpKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICBoID0zRCBoLnRvTG93ZXJDYXNlKCk7
DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBtID0zRCAwLCBx
ID0zRCBnLmxlbmd0aDsgbSA8IHE7IG0rKykgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBwID0zRCBnW21dOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChwKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGwgPTNEIHAucGFyZW50Tm9kZTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ1ttXSA9M0QgbC5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpID0NCj0zRD0zRD0zRCBoID8gbCA6IGZhbHNlDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
ICAgICAgICAgICAgbSA9M0QgMDsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAocSA9M0QgZy5sZW5ndGg7IG0gPCBxOyBtKyspIGlmIChwID0zRCBn
W21dKSA9DQpnW21dID0zRCBsID8gcC5wYXJlbnROb2RlIDogcC5wYXJlbnRO
b2RlID0zRD0zRD0zRCBoOw0KICAgICAgICAgICAgICAgICAgICAgICAgbCAm
JiBrLmZpbHRlcihoLCBnLCB0cnVlKQ0KICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAiIjogZnVu
Y3Rpb24gKGcsIGgsIGwpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG0g
PTNEIGUrKywNCiAgICAgICAgICAgICAgICAgICAgICAgIHEgPTNEIGQ7DQog
ICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaCA9M0Q9M0Q9M0QgInN0
cmluZyIgJiYgIS9cVy8udGVzdChoKSkgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHAgPTNEIGggPTNEIGgudG9Mb3dlckNhc2UoKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIHEgPTNEIGINCiAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICBxKCJwYXJlbnROb2RlIiwgaCwg
bSwgZywgcCwgbCkNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAg
ICAgICJ+IjogZnVuY3Rpb24gKGcsIGgsIGwpIHsNCiAgICAgICAgICAgICAg
ICAgICAgdmFyIG0gPTNEIGUrKywNCiAgICAgICAgICAgICAgICAgICAgICAg
IHEgPTNEIGQ7DQogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaCA9
M0Q9M0Q9M0QgInN0cmluZyIgJiYgIS9cVy8udGVzdChoKSkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHAgPTNEIGggPTNEIGgudG9Mb3dlckNh
c2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHEgPTNEIGINCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBxKCJwcmV2
aW91c1NpYmxpbmciLCBoLCBtLCBnLCBwLCBsKQ0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBmaW5kOiB7DQogICAg
ICAgICAgICAgICAgSUQ6IGZ1bmN0aW9uIChnLCBoLCBsKSB7DQogICAgICAg
ICAgICAgICAgICAgIGlmICh0eXBlb2YgaC5nZXRFbGVtZW50QnlJZCAhPTNE
PTNEICJ1bmRlZmluZWQiICYmID0NCiFsKSByZXR1cm4gKGcgPTNEIGguZ2V0
RWxlbWVudEJ5SWQoZ1sxXSkpID8gW2ddIDogW10NCiAgICAgICAgICAgICAg
ICB9LA0KICAgICAgICAgICAgICAgIE5BTUU6IGZ1bmN0aW9uIChnLCBoKSB7
DQogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaC5nZXRFbGVtZW50
c0J5TmFtZSAhPTNEPTNEICJ1bmRlZmluZWQiKSA9DQp7DQogICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgbCA9M0QgW107DQogICAgICAgICAgICAgICAg
ICAgICAgICBoID0zRCBoLmdldEVsZW1lbnRzQnlOYW1lKGdbMV0pOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbSA9M0QgMCwgcSA9M0Qg
aC5sZW5ndGg7IG0gPCBxOyBtKyspID0NCmhbbV0uZ2V0QXR0cmlidXRlKCJu
YW1lIikgPTNEPTNEPTNEIGdbMV0gJiYgbC5wdXNoKGhbbV0pOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGwubGVuZ3RoID0zRD0zRD0zRCAw
ID8gbnVsbCA6IGwNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICAgICAgVEFHOiBmdW5jdGlvbiAoZywg
aCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaC5nZXRFbGVtZW50
c0J5VGFnTmFtZShnWzFdKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0sDQogICAgICAgICAgICBwcmVGaWx0ZXI6IHsNCiAgICAgICAgICAg
ICAgICBDTEFTUzogZnVuY3Rpb24gKGcsIGgsIGwsIG0sIHEsIHApIHsNCiAg
ICAgICAgICAgICAgICAgICAgZyA9M0QgIiAiICsgZ1sxXS5yZXBsYWNlKC9c
XC9nLCAiIikgKyAiICI7DQogICAgICAgICAgICAgICAgICAgIGlmIChwKSBy
ZXR1cm4gZzsNCiAgICAgICAgICAgICAgICAgICAgcCA9M0QgMDsNCiAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgdjsNCiAgICAgICAgICAgICAgICAg
ICAgKHYgPTNEIGhbcF0pICE9M0QgbnVsbDsgcCsrKSBpZiAodikgaWYgKHEg
XiA9DQoodi5jbGFzc05hbWUgJiYgKCIgIiArIHYuY2xhc3NOYW1lICsgIiAi
KS5yZXBsYWNlKC9bXHRcbl0vZywgIiA9DQoiKS5pbmRleE9mKGcpID49M0Qg
MCkpIGwgfHwgbS5wdXNoKHYpOw0KICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChsKSBoW3BdID0zRCBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAg
ICAgICBJRDogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdbMV0ucmVwbGFjZSgvXFwvZywgIiIpDQogICAgICAgICAgICAg
ICAgfSwNCiAgICAgICAgICAgICAgICBUQUc6IGZ1bmN0aW9uIChnKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnWzFdLnRvTG93ZXJDYXNlKCkN
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIENISUxEOiBm
dW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZ1sxXSA9
M0Q9M0Q9M0QgIm50aCIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBoID0zRCAvKC0/KShcZCopbigoPzpcK3wtKT9cZCopLy5leGVjKGdbMl0g
PQ0KPTNEPTNEPTNEICJldmVuIiAmJiAiMm4iIHx8IGdbMl0gPTNEPTNEPTNE
ICJvZGQiICYmICIybisxIiB8fCA9DQohL1xELy50ZXN0KGdbMl0pICYmICIw
bisiICsgZ1syXSB8fCBnWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGdbMl0gPTNEIGhbMV0gKyAoaFsyXSB8fCAxKSAtIDA7DQogICAgICAgICAg
ICAgICAgICAgICAgICBnWzNdID0zRCBoWzNdIC0gMA0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGdbMF0gPTNEIGUrKzsN
CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcNCiAgICAgICAgICAgICAg
ICB9LA0KICAgICAgICAgICAgICAgIEFUVFI6IGZ1bmN0aW9uIChnLCBoLCBs
LCBtLCBxLCBwKSB7DQogICAgICAgICAgICAgICAgICAgIGggPTNEIGdbMV0u
cmVwbGFjZSgvXFwvZywgIiIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
IXAgJiYgbi5hdHRyTWFwW2hdKSBnWzFdID0zRCBuLmF0dHJNYXBbaF07DQog
ICAgICAgICAgICAgICAgICAgIGlmIChnWzJdID0zRD0zRD0zRCAifj0zRCIp
IGdbNF0gPTNEICIgIiArIGdbNF0gKyAiID0NCiI7DQogICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAg
ICAgICAgICBQU0VVRE86IGZ1bmN0aW9uIChnLCBoLCBsLCBtLCBxKSB7DQog
ICAgICAgICAgICAgICAgICAgIGlmIChnWzFdID0zRD0zRD0zRCAibm90Iikg
aWYgKChmLmV4ZWMoZ1szXSkgfHwgPQ0KIiIpLmxlbmd0aCA+IDEgfHwgL15c
dy8udGVzdChnWzNdKSkgZ1szXSA9M0QgayhnWzNdLCBudWxsLCBudWxsLCBo
KTsNCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICBnID0zRCBrLmZpbHRlcihnWzNdLCBoLCBsLCB0cnVlIF4g
cSk7DQogICAgICAgICAgICAgICAgICAgICAgICBsIHx8IG0ucHVzaC5hcHBs
eShtLCBnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG4ubWF0Y2guUE9T
LnRlc3QoZ1swXSkgfHwgPQ0Kbi5tYXRjaC5DSElMRC50ZXN0KGdbMF0pKSBy
ZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcNCiAg
ICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIFBPUzogZnVuY3Rp
b24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgZy51bnNoaWZ0KHRydWUp
Ow0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBmaWx0ZXJzOiB7
DQogICAgICAgICAgICAgICAgZW5hYmxlZDogZnVuY3Rpb24gKGcpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGcuZGlzYWJsZWQgPTNEPTNEPTNE
IGZhbHNlICYmIGcudHlwZSAhPTNEPTNEID0NCiJoaWRkZW4iDQogICAgICAg
ICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rp
b24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcuZGlzYWJs
ZWQgPTNEPTNEPTNEIHRydWUNCiAgICAgICAgICAgICAgICB9LA0KICAgICAg
ICAgICAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnLmNoZWNrZWQgPTNEPTNEPTNEIHRydWUNCiAg
ICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBm
dW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZy5z
ZWxlY3RlZCA9M0Q9M0Q9M0QgdHJ1ZQ0KICAgICAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICAgICAgcGFyZW50OiBmdW5jdGlvbiAoZykgew0KICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gISFnLmZpcnN0Q2hpbGQNCiAgICAgICAg
ICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGVtcHR5OiBmdW5jdGlvbiAo
Zykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWcuZmlyc3RDaGls
ZA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgaGFzOiBm
dW5jdGlvbiAoZywgaCwgbCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gISFrKGxbM10sIGcpLmxlbmd0aA0KICAgICAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICAgICAgaGVhZGVyOiBmdW5jdGlvbiAoZykgew0KICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gL2hcZC9pLnRlc3QoZy5ub2RlTmFtZSkN
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHRleHQ6IGZ1
bmN0aW9uIChnKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAidGV4
dCIgPTNEPTNEPTNEIGcudHlwZQ0KICAgICAgICAgICAgICAgIH0sDQogICAg
ICAgICAgICAgICAgcmFkaW86IGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAg
ICAgICAgICAgIHJldHVybiAicmFkaW8iID0zRD0zRD0zRCBnLnR5cGUNCiAg
ICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGNoZWNrYm94OiBm
dW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNo
ZWNrYm94IiA9M0Q9M0Q9M0QgZy50eXBlDQogICAgICAgICAgICAgICAgfSwN
CiAgICAgICAgICAgICAgICBmaWxlOiBmdW5jdGlvbiAoZykgew0KICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gImZpbGUiID0zRD0zRD0zRCBnLnR5cGUN
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHBhc3N3b3Jk
OiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4g
InBhc3N3b3JkIiA9M0Q9M0Q9M0QgZy50eXBlDQogICAgICAgICAgICAgICAg
fSwNCiAgICAgICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uIChnKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiAic3VibWl0IiA9M0Q9M0Q9M0Qg
Zy50eXBlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBp
bWFnZTogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICJpbWFnZSIgPTNEPTNEPTNEIGcudHlwZQ0KICAgICAgICAgICAgICAg
IH0sDQogICAgICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uIChnKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiAicmVzZXQiID0zRD0zRD0zRCBn
LnR5cGUNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGJ1
dHRvbjogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICJidXR0b24iID0zRD0zRD0zRCBnLnR5cGUgfHwgPQ0KZy5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpID0zRD0zRD0zRCAiYnV0dG9uIg0KICAgICAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uIChn
KSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiA9DQovaW5wdXR8c2Vs
ZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoZy5ub2RlTmFtZSkNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc2V0
RmlsdGVyczogew0KICAgICAgICAgICAgICAgIGZpcnN0OiBmdW5jdGlvbiAo
ZywgaCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCA9M0Q9M0Q9
M0QgMA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgbGFz
dDogZnVuY3Rpb24gKGcsIGgsIGwsIG0pIHsNCiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGggPTNEPTNEPTNEIG0ubGVuZ3RoIC0gMQ0KICAgICAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICAgICAgZXZlbjogZnVuY3Rpb24gKGcs
IGgpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggJSAyID0zRD0z
RD0zRCAwDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBv
ZGQ6IGZ1bmN0aW9uIChnLCBoKSB7DQogICAgICAgICAgICAgICAgICAgIHJl
dHVybiBoICUgMiA9M0Q9M0Q9M0QgMQ0KICAgICAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICAgICAgbHQ6IGZ1bmN0aW9uIChnLCBoLCBsKSB7DQogICAg
ICAgICAgICAgICAgICAgIHJldHVybiBoIDwgbFszXSAtIDANCiAgICAgICAg
ICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGd0OiBmdW5jdGlvbiAoZywg
aCwgbCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCA+IGxbM10g
LSAwDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBudGg6
IGZ1bmN0aW9uIChnLCBoLCBsKSB7DQogICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsWzNdIC0gMCA9M0Q9M0Q9M0QgaA0KICAgICAgICAgICAgICAgIH0s
DQogICAgICAgICAgICAgICAgZXE6IGZ1bmN0aW9uIChnLCBoLCBsKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsWzNdIC0gMCA9M0Q9M0Q9M0Qg
aA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAg
ICAgICBmaWx0ZXI6IHsNCiAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0
aW9uIChnLCBoLCBsLCBtKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBx
ID0zRCBoWzFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgcCA9M0Qgbi5m
aWx0ZXJzW3FdOw0KICAgICAgICAgICAgICAgICAgICBpZiAocCkgcmV0dXJu
IHAoZywgbCwgaCwgbSk7DQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHEgPTNEPTNEPTNEICJjb250YWlucyIpIHJldHVybiA9DQooZy50ZXh0Q29u
dGVudCB8fCBnLmlubmVyVGV4dCB8fCBhKFtnXSkgfHwgIiIpLmluZGV4T2Yo
aFszXSkgPj0zRCAwOw0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChx
ID0zRD0zRD0zRCAibm90Iikgew0KICAgICAgICAgICAgICAgICAgICAgICAg
aCA9M0QNCiAgICAgICAgICAgICAgICAgICAgICAgIGhbM107DQogICAgICAg
ICAgICAgICAgICAgICAgICBsID0zRCAwOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChtID0zRCBoLmxlbmd0aDsgbCA8IG07IGwrKykgaWYgKGhb
bF0gPQ0KPTNEPTNEPTNEIGcpIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlDQogICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBrLmVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCA9
DQpleHByZXNzaW9uOiAiICsgcSkNCiAgICAgICAgICAgICAgICB9LA0KICAg
ICAgICAgICAgICAgIENISUxEOiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAg
ICAgICAgICAgICAgICB2YXIgbCA9M0QgaFsxXSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgIG0gPTNEIGc7DQogICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAobCkgew0KICAgICAgICAgICAgICAgICAgICBjYXNlICJvbmx5IjoNCiAg
ICAgICAgICAgICAgICAgICAgY2FzZSAiZmlyc3QiOg0KICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICg7IG0gPTNEIG0ucHJldmlvdXNTaWJsaW5nOykg
aWYgKG0ubm9kZVR5cGUgPQ0KPTNEPTNEPTNEIDEpIHJldHVybiBmYWxzZTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0zRD0zRD0zRCAiZmly
c3QiKSByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIG0g
PTNEIGc7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgImxhc3QiOg0KICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG0gPTNEIG0ubmV4dFNpYmxp
bmc7KSBpZiAobS5ub2RlVHlwZSA9DQo9M0Q9M0Q9M0QgMSkgcmV0dXJuIGZh
bHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQog
ICAgICAgICAgICAgICAgICAgIGNhc2UgIm50aCI6DQogICAgICAgICAgICAg
ICAgICAgICAgICBsID0zRCBoWzJdOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHEgPTNEIGhbM107DQogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobCA9M0Q9M0Q9M0QgMSAmJiBxID0zRD0zRD0zRCAwKSByZXR1cm4gdHJ1
ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGggPTNEIGhbMF07DQogICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgcCA9M0QgZy5wYXJlbnROb2RlOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgJiYgKHAuc2l6Y2FjaGUg
IT0zRD0zRCBoIHx8ICFnLm5vZGVJbmRleCkpID0NCnsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgdiA9M0QgMDsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKG0gPTNEIHAuZmlyc3RDaGlsZDsgbTsgbSA9
M0QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLm5leHRTaWJsaW5n
KSBpZiAobS5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSkgPQ0KbS5ub2RlSW5kZXgg
PTNEICsrdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnNpemNh
Y2hlID0zRCBoDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICBnID0zRCBnLm5vZGVJbmRleCAtIHE7DQogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9M0Q9M0Q9M0QgMCA/IGcg
PTNEPTNEPTNEIDAgOiBnICUgbCA9DQo9M0Q9M0Q9M0QgMCAmJiBnIC8gbCA+
PTNEIDANCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IH0sDQogICAgICAgICAgICAgICAgSUQ6IGZ1bmN0aW9uIChnLCBoKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnLm5vZGVUeXBlID0zRD0zRD0z
RCAxICYmID0NCmcuZ2V0QXR0cmlidXRlKCJpZCIpID0zRD0zRD0zRCBoDQog
ICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBUQUc6IGZ1bmN0
aW9uIChnLCBoKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoID0z
RD0zRD0zRCAiKiIgJiYgZy5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSB8fCA9DQpn
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPTNEPTNEPTNEIGgNCiAgICAgICAg
ICAgICAgICB9LA0KICAgICAgICAgICAgICAgIENMQVNTOiBmdW5jdGlvbiAo
ZywgaCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCIgIiArIChn
LmNsYXNzTmFtZSB8fCA9DQpnLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkgKyAi
ICIpLmluZGV4T2YoaCkgPiAtMQ0KICAgICAgICAgICAgICAgIH0sDQogICAg
ICAgICAgICAgICAgQVRUUjogZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAg
ICAgICAgICAgICAgdmFyIGwgPTNEIGhbMV07DQogICAgICAgICAgICAgICAg
ICAgIGcgPTNEIG4uYXR0ckhhbmRsZVtsXSA/IG4uYXR0ckhhbmRsZVtsXShn
KSA6IGdbbF0gPQ0KIT0zRCBudWxsID8gZ1tsXSA6IGcuZ2V0QXR0cmlidXRl
KGwpOw0KICAgICAgICAgICAgICAgICAgICBsID0zRCBnICsgIiI7DQogICAg
ICAgICAgICAgICAgICAgIHZhciBtID0zRCBoWzJdOw0KICAgICAgICAgICAg
ICAgICAgICBoID0zRCBoWzRdOw0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZyA9M0Q9M0QgbnVsbCA/IG0gPTNEPTNEPTNEICIhPTNEIiA6IG0gPQ0K
PTNEPTNEPTNEICI9M0QiID8gbCA9M0Q9M0Q9M0QgaCA6IG0gPTNEPTNEPTNE
ICIqPTNEIiA/IGwuaW5kZXhPZihoKSA+PTNEID0NCjAgOiBtID0zRD0zRD0z
RCAifj0zRCIgPyAoIiAiICsgbCArICIgIikuaW5kZXhPZihoKSA+PTNEIDAg
OiAhaCA/IGwgJiYgZyA9DQohPTNEPTNEIGZhbHNlIDogbSA9M0Q9M0Q9M0Qg
IiE9M0QiID8gbCAhPTNEPTNEIGggOiBtID0zRD0zRD0zRCAiXj0zRCIgPyA9
DQpsLmluZGV4T2YoaCkgPTNEPTNEPTNEIDAgOiBtID0zRD0zRD0zRCAiJD0z
RCIgPyBsLnN1YnN0cihsLmxlbmd0aCAtID0NCmgubGVuZ3RoKSA9M0Q9M0Q9
M0QgaCA6IG0gPTNEPTNEPTNEICJ8PTNEIiA/IGwgPTNEPTNEPTNEIGggfHwg
PQ0KbC5zdWJzdHIoMCwgaC5sZW5ndGggKyAxKSA9M0Q9M0Q9M0QgaCArICIt
IiA6IGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAg
ICBQT1M6IGZ1bmN0aW9uIChnLCBoLCBsLCBtKSB7DQogICAgICAgICAgICAg
ICAgICAgIHZhciBxID0zRCBuLnNldEZpbHRlcnNbaFsyXV07DQogICAgICAg
ICAgICAgICAgICAgIGlmIChxKSByZXR1cm4gcShnLCBsLCBoLCBtKQ0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAg
ICAgICAgICAgIHIgPTNEIG4ubWF0Y2guUE9TOw0KICAgICAgICBmb3IgKHZh
ciB1IGluIG4ubWF0Y2gpIHsNCiAgICAgICAgICAgIG4ubWF0Y2hbdV0gPTNE
IG5ldyBSZWdFeHAobi5tYXRjaFt1XS5zb3VyY2UgKyA9DQovKD8hW15cW10q
XF0pKD8hW15cKF0qXCkpLy5zb3VyY2UpOw0KICAgICAgICAgICAgbi5sZWZ0
TWF0Y2hbdV0gPTNEIG5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNv
dXJjZSArID0NCm4ubWF0Y2hbdV0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykv
ZywgZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4g
IlxcIiArIChoIC0gMCArIDEpDQogICAgICAgICAgICB9KSkNCiAgICAgICAg
fQ0KICAgICAgICB2YXIgeiA9M0QgZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAg
ICAgICAgIGcgPTNEIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGcsIDAp
Ow0KICAgICAgICAgICAgaWYgKGgpIHsNCiAgICAgICAgICAgICAgICBoLnB1
c2guYXBwbHkoaCwgZyk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGgNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBnDQogICAgICAgIH07
DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChzLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLCAwKQ0K
ICAgICAgICB9IGNhdGNoIChDKSB7DQogICAgICAgICAgICB6ID0zRCBmdW5j
dGlvbiAoZywgaCkgew0KICAgICAgICAgICAgICAgIGggPTNEIGggfHwgW107
DQogICAgICAgICAgICAgICAgaWYgKGouY2FsbChnKSA9M0Q9M0Q9M0QgIltv
YmplY3QgQXJyYXldIikgPQ0KQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHko
aCwgZyk7DQogICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGcubGVu
Z3RoID0zRD0zRD0zRCAibnVtYmVyIikgZm9yICh2YXIgbCA9DQo9M0QgMCwg
bSA9M0QgZy5sZW5ndGg7IGwgPCBtOyBsKyspIGgucHVzaChnW2xdKTsNCiAg
ICAgICAgICAgICAgICBlbHNlIGZvciAobCA9M0QgMDsgZ1tsXTsgbCsrKSBo
LnB1c2goZ1tsXSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGgNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICB2YXIgQjsNCiAgICAgICAg
aWYgKHMuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
KSBCID0zRCBmdW5jdGlvbiA9DQooZywgaCkgew0KICAgICAgICAgICAgaWYg
KCFnLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHx8ID0NCiFoLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKSB7DQogICAgICAgICAgICAgICAgaWYgKGcgPTNE
PTNEIGgpIGkgPTNEIHRydWU7DQogICAgICAgICAgICAgICAgcmV0dXJuIGcu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24gPyAtMSA6IDENCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGcgPTNEIGcuY29tcGFyZURvY3VtZW50UG9zaXRp
b24oaCkgJiA0ID8gLTEgOiBnID0zRD0zRD0zRCBoID0NCj8gMCA6IDE7DQog
ICAgICAgICAgICBpZiAoZyA9M0Q9M0Q9M0QgMCkgaSA9M0QgdHJ1ZTsNCiAg
ICAgICAgICAgIHJldHVybiBnDQogICAgICAgIH07DQogICAgICAgIGVsc2Ug
aWYgKCJzb3VyY2VJbmRleCIgaW4gcy5kb2N1bWVudEVsZW1lbnQpIEIgPTNE
IGZ1bmN0aW9uIChnLCA9DQpoKSB7DQogICAgICAgICAgICBpZiAoIWcuc291
cmNlSW5kZXggfHwgIWguc291cmNlSW5kZXgpIHsNCiAgICAgICAgICAgICAg
ICBpZiAoZyA9M0Q9M0QgaCkgaSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAg
ICByZXR1cm4gZy5zb3VyY2VJbmRleCA/IC0xIDogMQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgZyA9M0QgZy5zb3VyY2VJbmRleCAtIGguc291cmNl
SW5kZXg7DQogICAgICAgICAgICBpZiAoZyA9M0Q9M0Q9M0QgMCkgaSA9M0Qg
dHJ1ZTsNCiAgICAgICAgICAgIHJldHVybiBnDQogICAgICAgIH07DQogICAg
ICAgIGVsc2UgaWYgKHMuY3JlYXRlUmFuZ2UpIEIgPTNEIGZ1bmN0aW9uIChn
LCBoKSB7DQogICAgICAgICAgICBpZiAoIWcub3duZXJEb2N1bWVudCB8fCAh
aC5vd25lckRvY3VtZW50KSB7DQogICAgICAgICAgICAgICAgaWYgKGcgPTNE
PTNEIGgpIGkgPTNEIHRydWU7DQogICAgICAgICAgICAgICAgcmV0dXJuIGcu
b3duZXJEb2N1bWVudCA/IC0xIDogMQ0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgdmFyIGwgPTNEIGcub3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgp
LA0KICAgICAgICAgICAgICAgIG0gPTNEDQogICAgICAgICAgICBoLm93bmVy
RG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsNCiAgICAgICAgICAgIGwuc2V0U3Rh
cnQoZywgMCk7DQogICAgICAgICAgICBsLnNldEVuZChnLCAwKTsNCiAgICAg
ICAgICAgIG0uc2V0U3RhcnQoaCwgMCk7DQogICAgICAgICAgICBtLnNldEVu
ZChoLCAwKTsNCiAgICAgICAgICAgIGcgPTNEIGwuY29tcGFyZUJvdW5kYXJ5
UG9pbnRzKFJhbmdlLlNUQVJUX1RPX0VORCwgbSk7DQogICAgICAgICAgICBp
ZiAoZyA9M0Q9M0Q9M0QgMCkgaSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgIHJl
dHVybiBnDQogICAgICAgIH07DQogICAgICAgIChmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICB2YXIgZyA9M0Qgcy5jcmVhdGVFbGVtZW50KCJkaXYiKSwN
CiAgICAgICAgICAgICAgICBoID0zRCAic2NyaXB0IiArIChuZXcgRGF0ZSku
Z2V0VGltZSgpOw0KICAgICAgICAgICAgZy5pbm5lckhUTUwgPTNEICI8YSBu
YW1lPTNEJyIgKyBoICsgIicvPiI7DQogICAgICAgICAgICB2YXIgbCA9M0Qg
cy5kb2N1bWVudEVsZW1lbnQ7DQogICAgICAgICAgICBsLmluc2VydEJlZm9y
ZShnLCBsLmZpcnN0Q2hpbGQpOw0KICAgICAgICAgICAgaWYgKHMuZ2V0RWxl
bWVudEJ5SWQoaCkpIHsNCiAgICAgICAgICAgICAgICBuLmZpbmQuSUQgPTNE
IGZ1bmN0aW9uIChtLCBxLCBwKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
ICh0eXBlb2YgcS5nZXRFbGVtZW50QnlJZCAhPTNEPTNEICJ1bmRlZmluZWQi
ICYmID0NCiFwKSByZXR1cm4gKHEgPTNEIHEuZ2V0RWxlbWVudEJ5SWQobVsx
XSkpID8gcS5pZCA9M0Q9M0Q9M0QgbVsxXSB8fCA9DQp0eXBlb2YgcS5nZXRB
dHRyaWJ1dGVOb2RlICE9M0Q9M0QgInVuZGVmaW5lZCIgJiYgPQ0KcS5nZXRB
dHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZSA9M0Q9M0Q9M0QgbVsxXSA/
IFtxXSA6IHcgOiBbXQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAg
ICAgICAgbi5maWx0ZXIuSUQgPTNEIGZ1bmN0aW9uIChtLCBxKSB7DQogICAg
ICAgICAgICAgICAgICAgIHZhciBwID0zRCB0eXBlb2YgbS5nZXRBdHRyaWJ1
dGVOb2RlICE9M0Q9M0QgPQ0KInVuZGVmaW5lZCIgJiYgbS5nZXRBdHRyaWJ1
dGVOb2RlKCJpZCIpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbS5u
b2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiBwICYmIHAubm9kZVZhbHVlID0NCj0z
RD0zRD0zRCBxDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgbC5yZW1vdmVDaGlsZChnKTsNCiAgICAgICAgICAgIGwg
PTNEIGcgPTNEIG51bGwNCiAgICAgICAgfSkoKTsNCiAgICAgICAgKGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBnID0zRCBzLmNyZWF0ZUVsZW1l
bnQoImRpdiIpOw0KICAgICAgICAgICAgZy5hcHBlbmRDaGlsZChzLmNyZWF0
ZUNvbW1lbnQoIiIpKTsNCiAgICAgICAgICAgIGlmIChnLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikubGVuZ3RoID4gMCkgbi5maW5kLlRBRyA9M0QgPQ0K
ZnVuY3Rpb24gKGgsIGwpIHsNCiAgICAgICAgICAgICAgICBsID0zRCBsLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKGhbMV0pOw0KICAgICAgICAgICAgICAgIGlm
IChoWzFdID0zRD0zRD0zRCAiKiIpIHsNCiAgICAgICAgICAgICAgICAgICAg
aCA9M0QgW107DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPTNE
IDA7IGxbbV07IG0rKykgbFttXS5ub2RlVHlwZSA9M0Q9M0Q9M0QgPQ0KMSAm
JiBoLnB1c2gobFttXSk7DQogICAgICAgICAgICAgICAgICAgIGwgPTNEIGgN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIGwN
CiAgICAgICAgICAgIH07DQogICAgICAgICAgICBnLmlubmVySFRNTCA9M0Qg
IjxhIGhyZWY9M0QnIyc+PC9hPiI7DQogICAgICAgICAgICBpZiAoZy5maXJz
dENoaWxkICYmIHR5cGVvZiBnLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlICE9
M0Q9M0QgPQ0KInVuZGVmaW5lZCIgJiYgZy5maXJzdENoaWxkLmdldEF0dHJp
YnV0ZSgiaHJlZiIpICE9M0Q9M0QgIiMiKSA9DQpuLmF0dHJIYW5kbGUuaHJl
ZiA9M0QgZnVuY3Rpb24gKGgpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4g
aC5nZXRBdHRyaWJ1dGUoImhyZWYiLCAyKQ0KICAgICAgICAgICAgfTsNCiAg
ICAgICAgICAgIGcgPTNEIG51bGwNCiAgICAgICAgfSkoKTsNCiAgICAgICAg
cy5xdWVyeVNlbGVjdG9yQWxsICYmDQogICAgICAgIGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgIHZhciBnID0zRCBrLA0KICAgICAgICAgICAgICAgIGgg
PTNEIHMuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICBoLmlu
bmVySFRNTCA9M0QgIjxwIGNsYXNzPTNEJ1RFU1QnPjwvcD4iOw0KICAgICAg
ICAgICAgaWYgKCEoaC5xdWVyeVNlbGVjdG9yQWxsICYmID0NCmgucXVlcnlT
ZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGggPTNEPTNEPTNEIDApKSB7DQog
ICAgICAgICAgICAgICAgayA9M0QgZnVuY3Rpb24gKG0sIHEsIHAsIHYpIHsN
CiAgICAgICAgICAgICAgICAgICAgcSA9M0QgcSB8fCBzOw0KICAgICAgICAg
ICAgICAgICAgICBpZiAoIXYgJiYgcS5ub2RlVHlwZSA9M0Q9M0Q9M0QgOSAm
JiAheChxKSkgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB6KHEucXVlcnlTZWxlY3RvckFsbChtKSwgcCkNCiAgICAgICAgICAgICAg
ICAgICAgfSBjYXRjaCAodCkge30NCiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGcobSwgcSwgcCwgdikNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAg
ICAgICAgICAgIGZvciAodmFyIGwgaW4gZykga1tsXSA9M0QgZ1tsXTsNCiAg
ICAgICAgICAgICAgICBoID0zRCBudWxsDQogICAgICAgICAgICB9DQogICAg
ICAgIH0oKTsNCiAgICAgICAgKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAg
IHZhciBnID0zRCBzLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAg
ICAgZy5pbm5lckhUTUwgPTNEICI8ZGl2IGNsYXNzPTNEJ3Rlc3QgZSc+PC9k
aXY+PGRpdiA9DQpjbGFzcz0zRCd0ZXN0Jz48L2Rpdj4iOw0KICAgICAgICAg
ICAgaWYgKCEoIWcuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSB8fCA9DQpnLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGggPTNEPTNEPTNEIDAp
KSB7DQogICAgICAgICAgICAgICAgZy5sYXN0Q2hpbGQuY2xhc3NOYW1lID0z
RCAiZSI7DQogICAgICAgICAgICAgICAgaWYgKGcuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgiZSIpLmxlbmd0aCAhPTNEPTNEIDEpIHsNCiAgICAgICAgICAg
ICAgICAgICAgbi5vcmRlci5zcGxpY2UoMSwgMCwgIkNMQVNTIik7DQogICAg
ICAgICAgICAgICAgICAgIG4uZmluZC5DTEFTUyA9M0QgZnVuY3Rpb24gKGgs
IGwsIG0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yg
bC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9M0Q9M0QgPQ0KInVuZGVmaW5l
ZCIgJiYgIW0pIHJldHVybiBsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaFsx
XSkNCiAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAg
ICAgZyA9M0QgbnVsbA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgfSkoKTsNCiAgICAgICAgdmFyIEUgPTNEIHMuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24gPw0KICAgICAgICBmdW5jdGlvbiAoZywgaCkg
ew0KICAgICAgICAgICAgcmV0dXJuICEhKGcuY29tcGFyZURvY3VtZW50UG9z
aXRpb24oaCkgJiAxNikNCiAgICAgICAgfSA6IGZ1bmN0aW9uIChnLCBoKSB7
DQogICAgICAgICAgICByZXR1cm4gZyAhPTNEPTNEIGggJiYgKGcuY29udGFp
bnMgPyBnLmNvbnRhaW5zKGgpIDogdHJ1ZSkNCiAgICAgICAgfSwNCiAgICAg
ICAgICAgIHggPTNEIGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAgICByZXR1
cm4gKGcgPTNEIChnID8gZy5vd25lckRvY3VtZW50IHx8IGcgOiA9DQowKS5k
b2N1bWVudEVsZW1lbnQpID8gZy5ub2RlTmFtZSAhPTNEPTNEICJIVE1MIiA6
IGZhbHNlDQogICAgICAgIH0sDQogICAgICAgICAgICBnYSA9M0QgZnVuY3Rp
b24gKGcsIGgpIHsNCiAgICAgICAgICAgIHZhciBsID0zRCBbXSwNCiAgICAg
ICAgICAgICAgICBtID0zRCAiIiwNCiAgICAgICAgICAgICAgICBxOw0KICAg
ICAgICAgICAgZm9yIChoID0zRCBoLm5vZGVUeXBlID8gW2hdIDogaDsgcSA9
M0QgPQ0Kbi5tYXRjaC5QU0VVRE8uZXhlYyhnKTspIHsNCiAgICAgICAgICAg
ICAgICBtICs9M0QgcVswXTsNCiAgICAgICAgICAgICAgICBnID0zRCBnLnJl
cGxhY2Uobi5tYXRjaC5QU0VVRE8sICIiKQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgZyA9M0Qgbi5yZWxhdGl2ZVtnXSA/IGcgKyAiKiIgOiBnOw0K
ICAgICAgICAgICAgcSA9M0QgMDsNCiAgICAgICAgICAgIGZvciAodmFyIHAg
PTNEIGgubGVuZ3RoOyBxIDwgcDsgcSsrKSBrKGcsIGhbcV0sIGwpOw0KICAg
ICAgICAgICAgcmV0dXJuIGsuZmlsdGVyKG0sIGwpDQogICAgICAgIH07DQog
ICAgICAgIGMuZmluZCA9M0QgazsNCiAgICAgICAgYy5leHByID0zRCBrLnNl
bGVjdG9yczsNCiAgICAgICAgYy5leHByWyI6Il0gPTNEIGMuZXhwci5maWx0
ZXJzOw0KICAgICAgICBjLnVuaXF1ZSA9M0Qgay51bmlxdWVTb3J0Ow0KICAg
ICAgICBjLnRleHQgPTNEIGE7DQogICAgICAgIGMuaXNYTUxEb2MgPTNEIHg7
DQogICAgICAgIGMuY29udGFpbnMgPTNEIEUNCiAgICB9KSgpOw0KICAgIHZh
ciBlYiA9M0QgL1VudGlsJC8sDQogICAgICAgIGZiID0zRCAvXig/OnBhcmVu
dHN8cHJldlVudGlsfHByZXZBbGwpLywNCiAgICAgICAgZ2IgPTNEIC8sLzsN
CiAgICBSID0zRCBBcnJheS5wcm90b3R5cGUuc2xpY2U7DQogICAgdmFyIElh
ID0zRCBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICBpZiAoYy5pc0Z1
bmN0aW9uKGIpKSByZXR1cm4gYy5ncmVwKGEsIGZ1bmN0aW9uIChlLCBqKSB7
DQogICAgICAgICAgICByZXR1cm4gISFiLmNhbGwoZSwgaiwgZSkgPTNEPTNE
PTNEIGQNCiAgICAgICAgfSk7DQogICAgICAgIGVsc2UgaWYgKGIubm9kZVR5
cGUpIHJldHVybiBjLmdyZXAoYSwgZnVuY3Rpb24gKGUpIHsNCiAgICAgICAg
ICAgIHJldHVybiBlID0zRD0zRD0zRCBiID0zRD0zRD0zRCBkDQogICAgICAg
IH0pOw0KICAgICAgICBlbHNlIGlmICh0eXBlb2YgYiA9M0Q9M0Q9M0QgInN0
cmluZyIpIHsNCiAgICAgICAgICAgIHZhciBmID0zRCBjLmdyZXAoYSwgZnVu
Y3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZS5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgMQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBp
ZiAoVWEudGVzdChiKSkgcmV0dXJuIGMuZmlsdGVyKGIsIGYsICFkKTsNCiAg
ICAgICAgICAgIGVsc2UgYiA9M0QgYy5maWx0ZXIoYiwgZikNCiAgICAgICAg
fQ0KICAgICAgICByZXR1cm4gYy5ncmVwKGEsIGZ1bmN0aW9uIChlKSB7DQog
ICAgICAgICAgICByZXR1cm4gYy5pbkFycmF5KGUsIGIpID49M0QgMCA9M0Q9
M0Q9M0QgZA0KICAgICAgICB9KQ0KICAgIH07DQogICAgYy5mbi5leHRlbmQo
ew0KICAgICAgICBmaW5kOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAg
Zm9yICh2YXIgYiA9M0QgdGhpcy5wdXNoU3RhY2soIiIsICJmaW5kIiwgYSks
IGQgPTNEIDAsIGYgPTNEID0NCjAsIGUgPTNEIHRoaXMubGVuZ3RoOyBmIDwg
ZTsgZisrKSB7DQogICAgICAgICAgICAgICAgZCA9M0QgYi5sZW5ndGg7DQog
ICAgICAgICAgICAgICAgYy5maW5kKGEsIHRoaXNbZl0sIGIpOw0KICAgICAg
ICAgICAgICAgIGlmIChmID4gMCkgZm9yICh2YXIgaiA9M0QgZDsgaiA8IGIu
bGVuZ3RoOyBqKyspIGZvciAodmFyID0NCmkgPTNEIDA7IGkgPCBkOyBpKysp
IGlmIChiW2ldID0zRD0zRD0zRCBiW2pdKSB7DQogICAgICAgICAgICAgICAg
ICAgIGIuc3BsaWNlKGotLSwgMSk7DQogICAgICAgICAgICAgICAgICAgIGJy
ZWFrDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgcmV0dXJuIGINCiAgICAgICAgfSwNCiAgICAgICAgaGFzOiBmdW5j
dGlvbiAoYSkgew0KICAgICAgICAgICAgdmFyIGIgPTNEIGMoYSk7DQogICAg
ICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24gKCkgew0KICAg
ICAgICAgICAgICAgIGZvciAodmFyIGQgPTNEIDAsIGYgPTNEIGIubGVuZ3Ro
OyBkIDwgZjsgZCsrKSBpZiA9DQooYy5jb250YWlucyh0aGlzLCBiW2RdKSkg
cmV0dXJuIHRydWUNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAg
ICAgIG5vdDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayhJYSh0aGlzLCBhLCBmYWxzZSksICJub3QiLCBhKQ0K
ICAgICAgICB9LA0KICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChhKSB7DQog
ICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soSWEodGhpcywgYSwg
dHJ1ZSksICJmaWx0ZXIiLCBhKQ0KICAgICAgICB9LA0KICAgICAgICBpczog
ZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiAhIWEgJiYgYy5m
aWx0ZXIoYSwgdGhpcykubGVuZ3RoID4gMA0KICAgICAgICB9LA0KICAgICAg
ICBjbG9zZXN0OiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgaWYg
KGMuaXNBcnJheShhKSkgew0KICAgICAgICAgICAgICAgIHZhciBkID0zRCBb
XSwNCiAgICAgICAgICAgICAgICAgICAgZiA9M0QgdGhpc1swXSwNCiAgICAg
ICAgICAgICAgICAgICAgZSwgaiA9M0Qge30sDQogICAgICAgICAgICAgICAg
ICAgIGk7DQogICAgICAgICAgICAgICAgaWYgKGYgJiYgYS5sZW5ndGgpIHsN
CiAgICAgICAgICAgICAgICAgICAgZSA9M0QgMDsNCiAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgbyA9M0QgYS5sZW5ndGg7IGUgPCBvOyBlKyspIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPTNEIGFbZV07DQogICAgICAg
ICAgICAgICAgICAgICAgICBqW2ldIHx8IChqW2ldID0zRCBjLmV4cHIubWF0
Y2guUE9TLnRlc3QoaSkgPyA9DQpjKGksIGIgfHwgdGhpcy5jb250ZXh0KSA6
IGkpDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgZm9yICg7IGYgJiYgZi5vd25lckRvY3VtZW50ICYmIGYgIT0zRD0zRCBi
Oykgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIGopIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0zRCBqW2ldOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmpxdWVyeSA/IGUuaW5k
ZXgoZikgPiAtMSA6IGMoZikuaXMoZSkpID0NCnsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZC5wdXNoKHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBpLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbTogZg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsZXRlIGpbaV0NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICBmID0zRCBmLnBhcmVudE5vZGUNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICByZXR1cm4gZA0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFy
IGsgPTNEIGMuZXhwci5tYXRjaC5QT1MudGVzdChhKSA/IGMoYSwgYiB8fCB0
aGlzLmNvbnRleHQpID0NCjogbnVsbDsNCiAgICAgICAgICAgIHJldHVybiB0
aGlzLm1hcChmdW5jdGlvbiAobiwgcikgew0KICAgICAgICAgICAgICAgIGZv
ciAoOyByICYmIHIub3duZXJEb2N1bWVudCAmJiByICE9M0Q9M0QgYjspIHsN
CiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPyBrLmluZGV4KHIpID4gLTEg
OiBjKHIpLmlzKGEpKSByZXR1cm4gcjsNCiAgICAgICAgICAgICAgICAgICAg
ciA9M0Qgci5wYXJlbnROb2RlDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIHJldHVybiBudWxsDQogICAgICAgICAgICB9KQ0KICAgICAg
ICB9LA0KICAgICAgICBpbmRleDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
ICAgIGlmICghYSB8fCB0eXBlb2YgYSA9M0Q9M0Q9M0QgInN0cmluZyIpIHJl
dHVybiA9DQpjLmluQXJyYXkodGhpc1swXSwgYSA/IGMoYSkgOiB0aGlzLnBh
cmVudCgpLmNoaWxkcmVuKCkpOw0KICAgICAgICAgICAgcmV0dXJuIGMuaW5B
cnJheShhLmpxdWVyeSA/IGFbMF0gOiBhLCB0aGlzKQ0KICAgICAgICB9LA0K
ICAgICAgICBhZGQ6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBh
ID0zRCB0eXBlb2YgYSA9M0Q9M0Q9M0QgInN0cmluZyIgPyBjKGEsIGIgfHwg
dGhpcy5jb250ZXh0KSA9DQo6IGMubWFrZUFycmF5KGEpOw0KICAgICAgICAg
ICAgYiA9M0QgYy5tZXJnZSh0aGlzLmdldCgpLCBhKTsNCiAgICAgICAgICAg
IHJldHVybiB0aGlzLnB1c2hTdGFjayhxYShhWzBdKSB8fCBxYShiWzBdKSA/
IGIgOiA9DQpjLnVuaXF1ZShiKSkNCiAgICAgICAgfSwNCiAgICAgICAgYW5k
U2VsZjogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMu
YWRkKHRoaXMucHJldk9iamVjdCkNCiAgICAgICAgfQ0KICAgIH0pOw0KICAg
IGMuZWFjaCh7DQogICAgICAgIHBhcmVudDogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIHJldHVybiAoYSA9M0QgYS5wYXJlbnROb2RlKSAmJiBhLm5v
ZGVUeXBlICE9M0Q9M0QgMTEgPyBhIDogPQ0KbnVsbA0KICAgICAgICB9LA0K
ICAgICAgICBwYXJlbnRzOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAg
cmV0dXJuIGMuZGlyKGEsICJwYXJlbnROb2RlIikNCiAgICAgICAgfSwNCiAg
ICAgICAgcGFyZW50c1VudGlsOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAg
ICAgICAgICAgcmV0dXJuIGMuZGlyKGEsICJwYXJlbnROb2RlIiwgZCkNCiAg
ICAgICAgfSwNCiAgICAgICAgbmV4dDogZnVuY3Rpb24gKGEpIHsNCiAgICAg
ICAgICAgIHJldHVybiBjLm50aChhLCAyLCAibmV4dFNpYmxpbmciKQ0KICAg
ICAgICB9LA0KICAgICAgICBwcmV2OiBmdW5jdGlvbiAoYSkgew0KICAgICAg
ICAgICAgcmV0dXJuIGMubnRoKGEsIDIsICJwcmV2aW91c1NpYmxpbmciKQ0K
ICAgICAgICB9LA0KICAgICAgICBuZXh0QWxsOiBmdW5jdGlvbiAoYSkgew0K
ICAgICAgICAgICAgcmV0dXJuIGMuZGlyKGEsICJuZXh0U2libGluZyIpDQog
ICAgICAgIH0sDQogICAgICAgIHByZXZBbGw6IGZ1bmN0aW9uIChhKSB7DQog
ICAgICAgICAgICByZXR1cm4gYy5kaXIoYSwgInByZXZpb3VzU2libGluZyIp
DQogICAgICAgIH0sDQogICAgICAgIG5leHRVbnRpbDogZnVuY3Rpb24gKGEs
IGIsIGQpIHsNCiAgICAgICAgICAgIHJldHVybiBjLmRpcihhLCAibmV4dFNp
YmxpbmciLCBkKQ0KICAgICAgICB9LA0KICAgICAgICBwcmV2VW50aWw6IGZ1
bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICByZXR1cm4gYy5kaXIo
YSwgInByZXZpb3VzU2libGluZyIsIGQpDQogICAgICAgIH0sDQogICAgICAg
IHNpYmxpbmdzOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJu
IGMuc2libGluZyhhLnBhcmVudE5vZGUuZmlyc3RDaGlsZCwgYSkNCiAgICAg
ICAgfSwNCiAgICAgICAgY2hpbGRyZW46IGZ1bmN0aW9uIChhKSB7DQogICAg
ICAgICAgICByZXR1cm4gYy5zaWJsaW5nKGEuZmlyc3RDaGlsZCkNCiAgICAg
ICAgfSwNCiAgICAgICAgY29udGVudHM6IGZ1bmN0aW9uIChhKSB7DQogICAg
ICAgICAgICByZXR1cm4gYy5ub2RlTmFtZShhLCAiaWZyYW1lIikgPyBhLmNv
bnRlbnREb2N1bWVudCB8fCA9DQphLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQg
OiBjLm1ha2VBcnJheShhLmNoaWxkTm9kZXMpDQogICAgICAgIH0NCiAgICB9
LCBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICBjLmZuW2FdID0zRCBmdW5j
dGlvbiAoZCwgZikgew0KICAgICAgICAgICAgdmFyIGUgPTNEIGMubWFwKHRo
aXMsIGIsIGQpOw0KICAgICAgICAgICAgZWIudGVzdChhKSB8fCAoZiA9M0Qg
ZCk7DQogICAgICAgICAgICBpZiAoZiAmJiB0eXBlb2YgZiA9M0Q9M0Q9M0Qg
InN0cmluZyIpIGUgPTNEIGMuZmlsdGVyKGYsIGUpOw0KICAgICAgICAgICAg
ZSA9M0QgdGhpcy5sZW5ndGggPiAxID8gYy51bmlxdWUoZSkgOiBlOw0KICAg
ICAgICAgICAgaWYgKCh0aGlzLmxlbmd0aCA+IDEgfHwgZ2IudGVzdChmKSkg
JiYgZmIudGVzdChhKSkgZSA9M0QgPQ0KZS5yZXZlcnNlKCk7DQogICAgICAg
ICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soZSwgYSwgUi5jYWxsKGFyZ3Vt
ZW50cykuam9pbigiLCIpKQ0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5l
eHRlbmQoew0KICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChhLCBiLCBkKSB7
DQogICAgICAgICAgICBpZiAoZCkgYSA9M0QgIjpub3QoIiArIGEgKyAiKSI7
DQogICAgICAgICAgICByZXR1cm4gYy5maW5kLm1hdGNoZXMoYSwgYikNCiAg
ICAgICAgfSwNCiAgICAgICAgZGlyOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0K
ICAgICAgICAgICAgdmFyIGYgPTNEIFtdOw0KICAgICAgICAgICAgZm9yIChh
ID0zRCBhW2JdOyBhICYmIGEubm9kZVR5cGUgIT0zRD0zRCA5ICYmIChkID0z
RD0zRD0zRCB3ID0NCnx8IGEubm9kZVR5cGUgIT0zRD0zRCAxIHx8ICFjKGEp
LmlzKGQpKTspIHsNCiAgICAgICAgICAgICAgICBhLm5vZGVUeXBlID0zRD0z
RD0zRCAxICYmIGYucHVzaChhKTsNCiAgICAgICAgICAgICAgICBhID0zRCBh
W2JdDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gZg0KICAg
ICAgICB9LA0KICAgICAgICBudGg6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQog
ICAgICAgICAgICBiID0zRCBiIHx8IDE7DQogICAgICAgICAgICBmb3IgKHZh
ciBmID0zRCAwOyBhOyBhID0zRCBhW2RdKSBpZiAoYS5ub2RlVHlwZSA9M0Q9
M0Q9M0QgMSA9DQomJiArK2YgPTNEPTNEPTNEIGIpIGJyZWFrOw0KICAgICAg
ICAgICAgcmV0dXJuIGENCiAgICAgICAgfSwNCiAgICAgICAgc2libGluZzog
ZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGZvciAodmFyIGQgPTNE
IFtdOyBhOyBhID0zRCBhLm5leHRTaWJsaW5nKSBhLm5vZGVUeXBlID0NCj0z
RD0zRD0zRCAxICYmIGEgIT0zRD0zRCBiICYmIGQucHVzaChhKTsNCiAgICAg
ICAgICAgIHJldHVybiBkDQogICAgICAgIH0NCiAgICB9KTsNCiAgICB2YXIg
SmEgPTNEIC8galF1ZXJ5XGQrPTNEIig/OlxkK3xudWxsKSIvZywNCiAgICAg
ICAgViA9M0QgL15ccysvLA0KICAgICAgICBLYSA9M0QgLyg8KFtcdzpdKylb
Xj5dKj8pXC8+L2csDQogICAgICAgIGhiID0zRCAvXig/OmFyZWF8YnJ8Y29s
fGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pJC9pLA0KICAg
ICAgICBMYSA9M0QgLzwoW1x3Ol0rKS8sDQogICAgICAgIGliID0zRCAvPHRi
b2R5L2ksDQogICAgICAgIGpiID0zRCAvPHwmIz9cdys7LywNCiAgICAgICAg
dGEgPTNEIC88c2NyaXB0fDxvYmplY3R8PGVtYmVkfDxvcHRpb258PHN0eWxl
L2ksDQogICAgICAgIHVhID0zRCAvY2hlY2tlZFxzKig/OltePTNEXXw9M0Rc
cyouY2hlY2tlZC4pL2ksDQogICAgICAgIE1hID0zRCBmdW5jdGlvbiAoYSwg
YiwgZCkgew0KICAgICAgICByZXR1cm4gaGIudGVzdChkKSA/IGEgOiBiICsg
Ij48LyIgKyBkICsgIj4iDQogICAgfSwNCiAgICAgICAgRiA9M0Qgew0KICAg
ICAgICBvcHRpb246IFsxLCAiPHNlbGVjdCBtdWx0aXBsZT0zRCdtdWx0aXBs
ZSc+IiwgIjwvc2VsZWN0PiJdLA0KICAgICAgICBsZWdlbmQ6IFsxLCAiPGZp
ZWxkc2V0PiIsICI8L2ZpZWxkc2V0PiJdLA0KICAgICAgICB0aGVhZDogWzEs
ICI8dGFibGU+IiwgIjwvdGFibGU+Il0sDQogICAgICAgIHRyOiBbMiwgIjx0
YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iXSwNCiAgICAgICAg
dGQ6IFszLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48
L3RhYmxlPiJdLA0KICAgICAgICBjb2w6IFsyLCAiPHRhYmxlPjx0Ym9keT48
L3Rib2R5Pjxjb2xncm91cD4iLCA9DQoiPC9jb2xncm91cD48L3RhYmxlPiJd
LA0KICAgICAgICBhcmVhOiBbMSwgIjxtYXA+IiwgIjwvbWFwPiJdLA0KICAg
ICAgICBfZGVmYXVsdDogWzAsICIiLCAiIl0NCiAgICB9Ow0KICAgIEYub3B0
Z3JvdXAgPTNEIEYub3B0aW9uOw0KICAgIEYudGJvZHkgPTNEIEYudGZvb3Qg
PTNEIEYuY29sZ3JvdXAgPTNEIEYuY2FwdGlvbiA9M0QgRi50aGVhZDsNCiAg
ICBGLnRoID0zRCBGLnRkOw0KICAgIGlmICghYy5zdXBwb3J0Lmh0bWxTZXJp
YWxpemUpIEYuX2RlZmF1bHQgPTNEIFsxLCAiZGl2PGRpdj4iLCA9DQoiPC9k
aXY+Il07DQogICAgYy5mbi5leHRlbmQoew0KICAgICAgICB0ZXh0OiBmdW5j
dGlvbiAoYSkgew0KICAgICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihhKSkg
cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoYikgew0KICAgICAgICAgICAg
ICAgIHZhciBkID0zRA0KICAgICAgICAgICAgICAgIGModGhpcyk7DQogICAg
ICAgICAgICAgICAgZC50ZXh0KGEuY2FsbCh0aGlzLCBiLCBkLnRleHQoKSkp
DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgYSAh
PTNEPTNEICJvYmplY3QiICYmIGEgIT0zRD0zRCB3KSByZXR1cm4gPQ0KdGhp
cy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSAmJiB0aGlzWzBdLm93bmVyRG9j
dW1lbnQgfHwgPQ0KcykuY3JlYXRlVGV4dE5vZGUoYSkpOw0KICAgICAgICAg
ICAgcmV0dXJuIGMudGV4dCh0aGlzKQ0KICAgICAgICB9LA0KICAgICAgICB3
cmFwQWxsOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgaWYgKGMuaXNG
dW5jdGlvbihhKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoZCkgew0K
ICAgICAgICAgICAgICAgIGModGhpcykud3JhcEFsbChhLmNhbGwodGhpcywg
ZCkpDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmICh0aGlzWzBd
KSB7DQogICAgICAgICAgICAgICAgdmFyIGIgPTNEIGMoYSwgdGhpc1swXS5v
d25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSh0cnVlKTsNCiAgICAgICAgICAg
ICAgICB0aGlzWzBdLnBhcmVudE5vZGUgJiYgYi5pbnNlcnRCZWZvcmUodGhp
c1swXSk7DQogICAgICAgICAgICAgICAgYi5tYXAoZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0zRCB0aGlzOyBkLmZp
cnN0Q2hpbGQgJiYgPQ0KZC5maXJzdENoaWxkLm5vZGVUeXBlID0zRD0zRD0z
RCAxOykgZCA9M0QgZC5maXJzdENoaWxkOw0KICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZA0KICAgICAgICAgICAgICAgIH0pLmFwcGVuZCh0aGlzKQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAg
ICAgfSwNCiAgICAgICAgd3JhcElubmVyOiBmdW5jdGlvbiAoYSkgew0KICAg
ICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihhKSkgcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbiAoYikgew0KICAgICAgICAgICAgICAgIGModGhpcykud3Jh
cElubmVyKGEuY2FsbCh0aGlzLCBiKSkNCiAgICAgICAgICAgIH0pOw0KICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAg
ICAgICAgICAgICAgdmFyIGIgPTNEIGModGhpcyksDQogICAgICAgICAgICAg
ICAgICAgIGQgPTNEIGIuY29udGVudHMoKTsNCiAgICAgICAgICAgICAgICBk
Lmxlbmd0aCA/IGQud3JhcEFsbChhKSA6IGIuYXBwZW5kKGEpDQogICAgICAg
ICAgICB9KQ0KICAgICAgICB9LA0KICAgICAgICB3cmFwOiBmdW5jdGlvbiAo
YSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAo
KSB7DQogICAgICAgICAgICAgICAgYyh0aGlzKS53cmFwQWxsKGEpDQogICAg
ICAgICAgICB9KQ0KICAgICAgICB9LA0KICAgICAgICB1bndyYXA6IGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudCgpLmVh
Y2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGMubm9kZU5hbWUo
dGhpcywgImJvZHkiKSB8fCA9DQpjKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMu
Y2hpbGROb2RlcykNCiAgICAgICAgICAgIH0pLmVuZCgpDQogICAgICAgIH0s
DQogICAgICAgIGFwcGVuZDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBmdW5jdGlv
biAoYSkgew0KICAgICAgICAgICAgICAgIHRoaXMubm9kZVR5cGUgPTNEPTNE
PTNEIDEgJiYgdGhpcy5hcHBlbmRDaGlsZChhKQ0KICAgICAgICAgICAgfSkN
CiAgICAgICAgfSwNCiAgICAgICAgcHJlcGVuZDogZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0
cnVlLCBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgICAgIHRoaXMubm9k
ZVR5cGUgPTNEPTNEPTNEIDEgJiYgdGhpcy5pbnNlcnRCZWZvcmUoYSwgPQ0K
dGhpcy5maXJzdENoaWxkKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwN
CiAgICAgICAgYmVmb3JlOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBp
ZiAodGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5vZGUpIHJldHVybiA9DQp0
aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgZmFsc2UsIGZ1bmN0aW9uIChiKSB7
DQogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9y
ZShiLCB0aGlzKQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBlbHNl
IGlmIChhcmd1bWVudHMubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgdmFy
IGEgPTNEIGMoYXJndW1lbnRzWzBdKTsNCiAgICAgICAgICAgICAgICBhLnB1
c2guYXBwbHkoYSwgdGhpcy50b0FycmF5KCkpOw0KICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLnB1c2hTdGFjayhhLCAiYmVmb3JlIiwgYXJndW1lbnRz
KQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBhZnRlcjog
ZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgaWYgKHRoaXNbMF0gJiYgdGhp
c1swXS5wYXJlbnROb2RlKSByZXR1cm4gPQ0KdGhpcy5kb21NYW5pcChhcmd1
bWVudHMsIGZhbHNlLCBmdW5jdGlvbiAoYikgew0KICAgICAgICAgICAgICAg
IHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYiwgdGhpcy5uZXh0U2li
bGluZykNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgZWxzZSBpZiAo
YXJndW1lbnRzLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgIHZhciBhID0z
RCB0aGlzLnB1c2hTdGFjayh0aGlzLCAiYWZ0ZXIiLCBhcmd1bWVudHMpOw0K
ICAgICAgICAgICAgICAgIGEucHVzaC5hcHBseShhLCBjKGFyZ3VtZW50c1sw
XSkudG9BcnJheSgpKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICByZW1vdmU6IGZ1bmN0
aW9uIChhLCBiKSB7DQogICAgICAgICAgICBmb3IgKHZhciBkID0zRCAwLCBm
Ow0KICAgICAgICAgICAgKGYgPTNEIHRoaXNbZF0pICE9M0QgbnVsbDsgZCsr
KSBpZiAoIWEgfHwgYy5maWx0ZXIoYSwgPQ0KW2ZdKS5sZW5ndGgpIHsNCiAg
ICAgICAgICAgICAgICBpZiAoIWIgJiYgZi5ub2RlVHlwZSA9M0Q9M0Q9M0Qg
MSkgew0KICAgICAgICAgICAgICAgICAgICBjLmNsZWFuRGF0YShmLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCIqIikpOw0KICAgICAgICAgICAgICAgICAgICBj
LmNsZWFuRGF0YShbZl0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIGYucGFyZW50Tm9kZSAmJiBmLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoZikNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aGlz
DQogICAgICAgIH0sDQogICAgICAgIGVtcHR5OiBmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICBmb3IgKHZhciBhID0zRCAwLCBiOw0KICAgICAgICAgICAg
KGIgPTNEIHRoaXNbYV0pICE9M0QgbnVsbDsgYSsrKSBmb3IgKGIubm9kZVR5
cGUgPTNEPTNEPTNEIDEgPQ0KJiYgYy5jbGVhbkRhdGEoYi5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiKiIpKTsgYi5maXJzdENoaWxkOykgPQ0KYi5yZW1vdmVD
aGlsZChiLmZpcnN0Q2hpbGQpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMN
CiAgICAgICAgfSwNCiAgICAgICAgY2xvbmU6IGZ1bmN0aW9uIChhKSB7DQog
ICAgICAgICAgICB2YXIgYiA9M0QgdGhpcy5tYXAoZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgICAgIGlmICghYy5zdXBwb3J0Lm5vQ2xvbmVFdmVudCAm
JiAhYy5pc1hNTERvYyh0aGlzKSkgew0KICAgICAgICAgICAgICAgICAgICB2
YXIgZCA9M0QgdGhpcy5vdXRlckhUTUwsDQogICAgICAgICAgICAgICAgICAg
ICAgICBmID0zRCB0aGlzLm93bmVyRG9jdW1lbnQ7DQogICAgICAgICAgICAg
ICAgICAgIGlmICghZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZCA9
M0QgZi5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGQuYXBwZW5kQ2hpbGQodGhpcy5jbG9uZU5vZGUodHJ1ZSkpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgZCA9M0QgZC5pbm5lckhUTUwNCiAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYy5jbGVhbihbZC5yZXBsYWNlKEphLCA9DQoiIikucmVwbGFjZSgvPTNE
KFtePTNEIic+XHNdK1wvKT4vZywgJz0zRCIkMSI+JykucmVwbGFjZShWLCAi
IildLCBmKVswXQ0KICAgICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gdGhp
cy5jbG9uZU5vZGUodHJ1ZSkNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAg
ICAgaWYgKGEgPTNEPTNEPTNEIHRydWUpIHsNCiAgICAgICAgICAgICAgICBy
YSh0aGlzLCBiKTsNCiAgICAgICAgICAgICAgICByYSh0aGlzLmZpbmQoIioi
KSwgYi5maW5kKCIqIikpDQogICAgICAgICAgICB9DQogICAgICAgICAgICBy
ZXR1cm4gYg0KICAgICAgICB9LA0KICAgICAgICBodG1sOiBmdW5jdGlvbiAo
YSkgew0KICAgICAgICAgICAgaWYgKGEgPTNEPTNEPTNEIHcpIHJldHVybiB0
aGlzWzBdICYmIHRoaXNbMF0ubm9kZVR5cGUgPQ0KPTNEPTNEPTNEIDEgPyB0
aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKEphLCAiIikgOiBudWxsOw0KICAg
ICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGEgPTNEPTNEPTNEICJzdHJpbmci
ICYmICF0YS50ZXN0KGEpICYmID0NCihjLnN1cHBvcnQubGVhZGluZ1doaXRl
c3BhY2UgfHwgIVYudGVzdChhKSkgJiYgIUZbKExhLmV4ZWMoYSkgfHwgWyIi
LCA9DQoiIl0pWzFdLnRvTG93ZXJDYXNlKCldKSB7DQogICAgICAgICAgICAg
ICAgYSA9M0QgYS5yZXBsYWNlKEthLCBNYSk7DQogICAgICAgICAgICAgICAg
dHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYiA9M0QgMCwg
ZCA9M0QgdGhpcy5sZW5ndGg7IGIgPCBkOyBiKyspIGlmID0NCih0aGlzW2Jd
Lm5vZGVUeXBlID0zRD0zRD0zRCAxKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICBjLmNsZWFuRGF0YSh0aGlzW2JdLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCIqIikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tiXS5pbm5l
ckhUTUwgPTNEIGENCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGYpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhp
cy5lbXB0eSgpLmFwcGVuZChhKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0gZWxzZSBjLmlzRnVuY3Rpb24oYSkgPyB0aGlzLmVhY2goZnVu
Y3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICB2YXIgaiA9M0QgYyh0aGlz
KSwNCiAgICAgICAgICAgICAgICAgICAgaSA9M0Qgai5odG1sKCk7DQogICAg
ICAgICAgICAgICAgai5lbXB0eSgpLmFwcGVuZChmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNhbGwodGhpcywgZSwgaSkN
CiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfSkgOiB0aGlzLmVt
cHR5KCkuYXBwZW5kKGEpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAg
ICAgICAgfSwNCiAgICAgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uIChhKSB7
DQogICAgICAgICAgICBpZiAodGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5v
ZGUpIHsNCiAgICAgICAgICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGEpKSBy
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChiKSB7DQogICAgICAgICAgICAg
ICAgICAgIHZhciBkID0zRCBjKHRoaXMpLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgZiA9M0QgZC5odG1sKCk7DQogICAgICAgICAgICAgICAgICAgIGQu
cmVwbGFjZVdpdGgoYS5jYWxsKHRoaXMsIGIsIGYpKQ0KICAgICAgICAgICAg
ICAgIH0pOw0KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYSAhPTNEPTNE
ICJzdHJpbmciKSBhID0zRCBjKGEpLmRldGFjaCgpOw0KICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgICAgICB2YXIgYiA9M0QgdGhpcy5uZXh0U2libGluZywNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGQgPTNEIHRoaXMucGFyZW50Tm9kZTsNCiAg
ICAgICAgICAgICAgICAgICAgYyh0aGlzKS5yZW1vdmUoKTsNCiAgICAgICAg
ICAgICAgICAgICAgYiA/IGMoYikuYmVmb3JlKGEpIDogYyhkKS5hcHBlbmQo
YSkNCiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfSBlbHNlIHJl
dHVybiB0aGlzLnB1c2hTdGFjayhjKGMuaXNGdW5jdGlvbihhKSA/IGEoKSA6
IGEpLCA9DQoicmVwbGFjZVdpdGgiLCBhKQ0KICAgICAgICB9LA0KICAgICAg
ICBkZXRhY2g6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4g
dGhpcy5yZW1vdmUoYSwgdHJ1ZSkNCiAgICAgICAgfSwNCiAgICAgICAgZG9t
TWFuaXA6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICBmdW5j
dGlvbiBmKHUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gYy5ub2RlTmFt
ZSh1LCAidGFibGUiKSA/ID0NCnUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRi
b2R5IilbMF0gfHwgPQ0KdS5hcHBlbmRDaGlsZCh1Lm93bmVyRG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGJvZHkiKSkgOiB1DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICB2YXIgZSwgaiwgaSA9M0QgYVswXSwNCiAgICAgICAgICAg
ICAgICBvID0zRCBbXSwNCiAgICAgICAgICAgICAgICBrOw0KICAgICAgICAg
ICAgaWYgKCFjLnN1cHBvcnQuY2hlY2tDbG9uZSAmJiBhcmd1bWVudHMubGVu
Z3RoID0zRD0zRD0zRCAzICYmID0NCnR5cGVvZiBpID0zRD0zRD0zRCAic3Ry
aW5nIiAmJiB1YS50ZXN0KGkpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
ICgpID0NCnsNCiAgICAgICAgICAgICAgICBjKHRoaXMpLmRvbU1hbmlwKGEs
IGIsIGQsIHRydWUpDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlm
IChjLmlzRnVuY3Rpb24oaSkpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24g
KHUpIHsNCiAgICAgICAgICAgICAgICB2YXIgeiA9M0QgYyh0aGlzKTsNCiAg
ICAgICAgICAgICAgICBhWzBdID0zRCBpLmNhbGwodGhpcywgdSwgYiA/IHou
aHRtbCgpIDogdyk7DQogICAgICAgICAgICAgICAgei5kb21NYW5pcChhLCBi
LCBkKQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBpZiAodGhpc1sw
XSkgew0KICAgICAgICAgICAgICAgIGUgPTNEIGkgJiYgaS5wYXJlbnROb2Rl
Ow0KICAgICAgICAgICAgICAgIGUgPTNEIGMuc3VwcG9ydC5wYXJlbnROb2Rl
ICYmIGUgJiYgZS5ub2RlVHlwZSA9M0Q9M0Q9M0QgPQ0KMTEgJiYgZS5jaGls
ZE5vZGVzLmxlbmd0aCA9M0Q9M0Q9M0QgdGhpcy5sZW5ndGggPyB7DQogICAg
ICAgICAgICAgICAgICAgIGZyYWdtZW50OiBlDQogICAgICAgICAgICAgICAg
fSA6IHNhKGEsIHRoaXMsIG8pOw0KICAgICAgICAgICAgICAgIGsgPTNEIGUu
ZnJhZ21lbnQ7DQogICAgICAgICAgICAgICAgaWYgKGogPTNEIGsuY2hpbGRO
b2Rlcy5sZW5ndGggPTNEPTNEPTNEIDEgPyAoayA9M0QgPQ0Kay5maXJzdENo
aWxkKSA6IGsuZmlyc3RDaGlsZCkgew0KICAgICAgICAgICAgICAgICAgICBi
ID0zRCBiICYmIGMubm9kZU5hbWUoaiwgInRyIik7DQogICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIG4gPTNEIDAsIHIgPTNEIHRoaXMubGVuZ3RoOyBu
IDwgcjsgbisrKSA9DQpkLmNhbGwoYiA/IGYodGhpc1tuXSwgaikgOiB0aGlz
W25dLCBuID4gMCB8fCBlLmNhY2hlYWJsZSB8fCB0aGlzLmxlbmd0aCA9DQo+
IDEgPyBrLmNsb25lTm9kZSh0cnVlKSA6IGspDQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIG8ubGVuZ3RoICYmIGMuZWFjaChvLCBRYSkN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aGlzDQogICAg
ICAgIH0NCiAgICB9KTsNCiAgICBjLmZyYWdtZW50cyA9M0Qge307DQogICAg
Yy5lYWNoKHsNCiAgICAgICAgYXBwZW5kVG86ICJhcHBlbmQiLA0KICAgICAg
ICBwcmVwZW5kVG86ICJwcmVwZW5kIiwNCiAgICAgICAgaW5zZXJ0QmVmb3Jl
OiAiYmVmb3JlIiwNCiAgICAgICAgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsDQog
ICAgICAgIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCINCiAgICB9LCBmdW5j
dGlvbiAoYSwgYikgew0KICAgICAgICBjLmZuW2FdID0zRCBmdW5jdGlvbiAo
ZCkgew0KICAgICAgICAgICAgdmFyIGYgPTNEIFtdOw0KICAgICAgICAgICAg
ZCA9M0QgYyhkKTsNCiAgICAgICAgICAgIHZhciBlID0zRCB0aGlzLmxlbmd0
aCA9M0Q9M0Q9M0QgMSAmJiB0aGlzWzBdLnBhcmVudE5vZGU7DQogICAgICAg
ICAgICBpZiAoZSAmJiBlLm5vZGVUeXBlID0zRD0zRD0zRCAxMSAmJiBlLmNo
aWxkTm9kZXMubGVuZ3RoID0NCj0zRD0zRD0zRCAxICYmIGQubGVuZ3RoID0z
RD0zRD0zRCAxKSB7DQogICAgICAgICAgICAgICAgZFtiXSh0aGlzWzBdKTsN
CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgICAgICBlID0zRCAwOw0KICAgICAgICAgICAg
ICAgIGZvciAodmFyIGogPTNEIGQubGVuZ3RoOyBlIDwgajsgZSsrKSB7DQog
ICAgICAgICAgICAgICAgICAgIHZhciBpID0zRCAoZSA+IDAgPyB0aGlzLmNs
b25lKHRydWUpIDogdGhpcykuZ2V0KCk7DQogICAgICAgICAgICAgICAgICAg
IGMuZm5bYl0uYXBwbHkoYyhkW2VdKSwgaSk7DQogICAgICAgICAgICAgICAg
ICAgIGYgPTNEIGYuY29uY2F0KGkpDQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhmLCBhLCBkLnNl
bGVjdG9yKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSk7DQog
ICAgYy5leHRlbmQoew0KICAgICAgICBjbGVhbjogZnVuY3Rpb24gKGEsIGIs
IGQsIGYpIHsNCiAgICAgICAgICAgIGIgPTNEIGIgfHwgczsNCiAgICAgICAg
ICAgIGlmICh0eXBlb2YgYi5jcmVhdGVFbGVtZW50ID0zRD0zRD0zRCAidW5k
ZWZpbmVkIikgYiA9M0QgPQ0KYi5vd25lckRvY3VtZW50IHx8IGJbMF0gJiYg
YlswXS5vd25lckRvY3VtZW50IHx8IHM7DQogICAgICAgICAgICBmb3IgKHZh
ciBlID0zRCBbXSwgaiA9M0QgMCwgaTsNCiAgICAgICAgICAgIChpID0zRCBh
W2pdKSAhPTNEIG51bGw7IGorKykgew0KICAgICAgICAgICAgICAgIGlmICh0
eXBlb2YgaSA9M0Q9M0Q9M0QgIm51bWJlciIpIGkgKz0zRCAiIjsNCiAgICAg
ICAgICAgICAgICBpZiAoaSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAo
dHlwZW9mIGkgPTNEPTNEPTNEICJzdHJpbmciICYmICFqYi50ZXN0KGkpKSBp
ID0NCj0zRCBiLmNyZWF0ZVRleHROb2RlKGkpOw0KICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmICh0eXBlb2YgaSA9M0Q9M0Q9M0QgInN0cmluZyIpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPTNEIGkucmVwbGFjZShLYSwg
TWEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPTNEIChMYS5l
eGVjKGkpIHx8IFsiIiwgPQ0KIiJdKVsxXS50b0xvd2VyQ2FzZSgpLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGsgPTNEIEZbb10gfHwgRi5fZGVm
YXVsdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0zRCBrWzBd
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPTNEIGIuY3JlYXRl
RWxlbWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KHIuaW5uZXJIVE1MID0zRCBrWzFdICsgaSArIGtbMl07IG4tLTspIHIgPQ0K
PTNEIHIubGFzdENoaWxkOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFjLnN1cHBvcnQudGJvZHkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuID0zRCBpYi50ZXN0KGkpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG8gPTNEIG8gPTNEPTNEPTNEICJ0YWJsZSIgJiYgIW4gPyA9DQpy
LmZpcnN0Q2hpbGQgJiYgci5maXJzdENoaWxkLmNoaWxkTm9kZXMgOiBrWzFd
ID0zRD0zRD0zRCAiPHRhYmxlPiIgJiYgIW4gPQ0KPyByLmNoaWxkTm9kZXMg
OiBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPTNE
IG8ubGVuZ3RoIC0gMTsgayA+PTNEIDA7IC0taykgPQ0KYy5ub2RlTmFtZShv
W2tdLCAidGJvZHkiKSAmJiAhb1trXS5jaGlsZE5vZGVzLmxlbmd0aCAmJiA9
DQpvW2tdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob1trXSkNCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0hYy5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNl
ICYmIFYudGVzdChpKSAmJiA9DQpyLmluc2VydEJlZm9yZShiLmNyZWF0ZVRl
eHROb2RlKFYuZXhlYyhpKVswXSksIHIuZmlyc3RDaGlsZCk7DQogICAgICAg
ICAgICAgICAgICAgICAgICBpID0zRCByLmNoaWxkTm9kZXMNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoaS5ub2Rl
VHlwZSkgZS5wdXNoKGkpOw0KICAgICAgICAgICAgICAgICAgICBlbHNlIGUg
PTNEIGMubWVyZ2UoZSwgaSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICB9DQogICAgICAgICAgICBpZiAoZCkgZm9yIChqID0zRCAwOyBlW2pd
OyBqKyspIGlmIChmICYmIGMubm9kZU5hbWUoZVtqXSwgPQ0KInNjcmlwdCIp
ICYmICghZVtqXS50eXBlIHx8IGVbal0udHlwZS50b0xvd2VyQ2FzZSgpID0z
RD0zRD0zRCA9DQoidGV4dC9qYXZhc2NyaXB0IikpIGYucHVzaChlW2pdLnBh
cmVudE5vZGUgPyA9DQplW2pdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZVtq
XSkgOiBlW2pdKTsNCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAg
ICAgIGVbal0ubm9kZVR5cGUgPTNEPTNEPTNEIDEgJiYgZS5zcGxpY2UuYXBw
bHkoZSwgW2ogKyAxLCA9DQowXS5jb25jYXQoYy5tYWtlQXJyYXkoZVtqXS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpKSk7DQogICAgICAgICAg
ICAgICAgZC5hcHBlbmRDaGlsZChlW2pdKQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgcmV0dXJuIGUNCiAgICAgICAgfSwNCiAgICAgICAgY2xlYW5E
YXRhOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgZm9yICh2YXIgYiwg
ZCwgZiA9M0QgYy5jYWNoZSwgZSA9M0QgYy5ldmVudC5zcGVjaWFsLCBqID0z
RCA9DQpjLnN1cHBvcnQuZGVsZXRlRXhwYW5kbywgaSA9M0QgMCwgbzsNCiAg
ICAgICAgICAgIChvID0zRCBhW2ldKSAhPTNEIG51bGw7IGkrKykgaWYgKGQg
PTNEIG9bYy5leHBhbmRvXSkgew0KICAgICAgICAgICAgICAgIGIgPTNEIGZb
ZF07DQogICAgICAgICAgICAgICAgaWYgKGIuZXZlbnRzKSBmb3IgKHZhciBr
IGluIGIuZXZlbnRzKSBlW2tdID8gPQ0KYy5ldmVudC5yZW1vdmUobywgaykg
OiBDYShvLCBrLCBiLmhhbmRsZSk7DQogICAgICAgICAgICAgICAgaWYgKGop
IGRlbGV0ZSBvW2MuZXhwYW5kb107DQogICAgICAgICAgICAgICAgZWxzZSBv
LnJlbW92ZUF0dHJpYnV0ZSAmJiBvLnJlbW92ZUF0dHJpYnV0ZShjLmV4cGFu
ZG8pOw0KICAgICAgICAgICAgICAgIGRlbGV0ZSBmW2RdDQogICAgICAgICAg
ICB9DQogICAgICAgIH0NCiAgICB9KTsNCiAgICB2YXIga2IgPTNEIC96LT9p
bmRleHxmb250LT93ZWlnaHR8b3BhY2l0eXx6b29tfGxpbmUtP2hlaWdodC9p
LA0KICAgICAgICBOYSA9M0QgL2FscGhhXChbXildKlwpLywNCiAgICAgICAg
T2EgPTNEIC9vcGFjaXR5PTNEKFteKV0qKS8sDQogICAgICAgIGhhID0zRCAv
ZmxvYXQvaSwNCiAgICAgICAgaWEgPTNEIC8tKFthLXpdKS9pZywNCiAgICAg
ICAgbGIgPTNEIC8oW0EtWl0pL2csDQogICAgICAgIG1iID0zRCAvXi0/XGQr
KD86cHgpPyQvaSwNCiAgICAgICAgbmIgPTNEIC9eLT9cZC8sDQogICAgICAg
IG9iID0zRCB7DQogICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLA0KICAg
ICAgICB2aXNpYmlsaXR5OiAiaGlkZGVuIiwNCiAgICAgICAgZGlzcGxheTog
ImJsb2NrIg0KICAgIH0sDQogICAgICAgIHBiID0zRCBbIkxlZnQiLCAiUmln
aHQiXSwNCiAgICAgICAgcWIgPTNEIFsiVG9wIiwgIkJvdHRvbSJdLA0KICAg
ICAgICByYiA9M0Qgcy5kZWZhdWx0VmlldyAmJiBzLmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUsDQogICAgICAgIFBhID0zRCBjLnN1cHBvcnQuY3Nz
RmxvYXQgPyAiY3NzRmxvYXQiIDogInN0eWxlRmxvYXQiLA0KICAgICAgICBq
YSA9M0QNCg0KICAgIGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgIHJldHVy
biBiLnRvVXBwZXJDYXNlKCkNCiAgICB9Ow0KICAgIGMuZm4uY3NzID0zRCBm
dW5jdGlvbiAoYSwgYikgew0KICAgICAgICByZXR1cm4gWCh0aGlzLCBhLCBi
LCB0cnVlLCBmdW5jdGlvbiAoZCwgZiwgZSkgew0KICAgICAgICAgICAgaWYg
KGUgPTNEPTNEPTNEIHcpIHJldHVybiBjLmN1ckNTUyhkLCBmKTsNCiAgICAg
ICAgICAgIGlmICh0eXBlb2YgZSA9M0Q9M0Q9M0QgIm51bWJlciIgJiYgIWti
LnRlc3QoZikpIGUgKz0zRCAicHgiOw0KICAgICAgICAgICAgYy5zdHlsZShk
LCBmLCBlKQ0KICAgICAgICB9KQ0KICAgIH07DQogICAgYy5leHRlbmQoew0K
ICAgICAgICBzdHlsZTogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAg
ICAgIGlmICghYSB8fCBhLm5vZGVUeXBlID0zRD0zRD0zRCAzIHx8IGEubm9k
ZVR5cGUgPTNEPTNEPTNEIDgpID0NCnJldHVybiB3Ow0KICAgICAgICAgICAg
aWYgKChiID0zRD0zRD0zRCAid2lkdGgiIHx8IGIgPTNEPTNEPTNEICJoZWln
aHQiKSAmJiA9DQpwYXJzZUZsb2F0KGQpIDwgMCkgZCA9M0QgdzsNCiAgICAg
ICAgICAgIHZhciBmID0zRCBhLnN0eWxlIHx8IGEsDQogICAgICAgICAgICAg
ICAgZSA9M0QgZCAhPTNEPTNEIHc7DQogICAgICAgICAgICBpZiAoIWMuc3Vw
cG9ydC5vcGFjaXR5ICYmIGIgPTNEPTNEPTNEICJvcGFjaXR5Iikgew0KICAg
ICAgICAgICAgICAgIGlmIChlKSB7DQogICAgICAgICAgICAgICAgICAgIGYu
em9vbSA9M0QgMTsNCiAgICAgICAgICAgICAgICAgICAgYiA9M0QgcGFyc2VJ
bnQoZCwgMTApICsgIiIgPTNEPTNEPTNEICJOYU4iID8gIiIgOiA9DQoiYWxw
aGEob3BhY2l0eT0zRCIgKyBkICogMTAwICsgIikiOw0KICAgICAgICAgICAg
ICAgICAgICBhID0zRCBmLmZpbHRlciB8fCBjLmN1ckNTUyhhLCAiZmlsdGVy
IikgfHwgIiI7DQogICAgICAgICAgICAgICAgICAgIGYuZmlsdGVyID0zRA0K
ICAgICAgICAgICAgICAgICAgICBOYS50ZXN0KGEpID8gYS5yZXBsYWNlKE5h
LCBiKSA6IGINCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
cmV0dXJuIGYuZmlsdGVyICYmIGYuZmlsdGVyLmluZGV4T2YoIm9wYWNpdHk9
M0QiKSA+PTNEIDAgPQ0KPyBwYXJzZUZsb2F0KE9hLmV4ZWMoZi5maWx0ZXIp
WzFdKSAvIDEwMCArICIiIDogIiINCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGlmIChoYS50ZXN0KGIpKSBiID0zRCBQYTsNCiAgICAgICAgICAgIGIg
PTNEIGIucmVwbGFjZShpYSwgamEpOw0KICAgICAgICAgICAgaWYgKGUpIGZb
Yl0gPTNEIGQ7DQogICAgICAgICAgICByZXR1cm4gZltiXQ0KICAgICAgICB9
LA0KICAgICAgICBjc3M6IGZ1bmN0aW9uIChhLCBiLCBkLCBmKSB7DQogICAg
ICAgICAgICBpZiAoYiA9M0Q9M0Q9M0QgIndpZHRoIiB8fCBiID0zRD0zRD0z
RCAiaGVpZ2h0Iikgew0KICAgICAgICAgICAgICAgIHZhciBlLCBqID0zRCBi
ID0zRD0zRD0zRCAid2lkdGgiID8gcGIgOiBxYjsNCg0KICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIGkoKSB7DQogICAgICAgICAgICAgICAgICAgIGUgPTNE
IGIgPTNEPTNEPTNEICJ3aWR0aCIgPyBhLm9mZnNldFdpZHRoIDogPQ0KYS5v
ZmZzZXRIZWlnaHQ7DQogICAgICAgICAgICAgICAgICAgIGYgIT0zRD0zRCAi
Ym9yZGVyIiAmJiBjLmVhY2goaiwgZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgZiB8fCAoZSAtPTNEIHBhcnNlRmxvYXQoYy5jdXJD
U1MoYSwgInBhZGRpbmciICsgPQ0KdGhpcywgdHJ1ZSkpIHx8IDApOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPTNEPTNEPTNEICJtYXJnaW4i
KSBlICs9M0QgPQ0KcGFyc2VGbG9hdChjLmN1ckNTUyhhLCAibWFyZ2luIiAr
IHRoaXMsIHRydWUpKSB8fCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBlIC09M0QgcGFyc2VGbG9hdChjLmN1ckNTUyhhLCAiYm9yZGVyIiAr
ID0NCnRoaXMgKyAiV2lkdGgiLCB0cnVlKSkgfHwgMA0KICAgICAgICAgICAg
ICAgICAgICB9KQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICBhLm9mZnNldFdpZHRoICE9M0Q9M0QgMCA/IGkoKSA6IGMuc3dhcChhLCBv
YiwgaSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1h
dGgucm91bmQoZSkpDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1
cm4gYy5jdXJDU1MoYSwgYiwgZCkNCiAgICAgICAgfSwNCiAgICAgICAgY3Vy
Q1NTOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgdmFyIGYs
IGUgPTNEIGEuc3R5bGU7DQogICAgICAgICAgICBpZiAoIWMuc3VwcG9ydC5v
cGFjaXR5ICYmIGIgPTNEPTNEPTNEICJvcGFjaXR5IiAmJiA9DQphLmN1cnJl
bnRTdHlsZSkgew0KICAgICAgICAgICAgICAgIGYgPTNEIE9hLnRlc3QoYS5j
dXJyZW50U3R5bGUuZmlsdGVyIHx8ICIiKSA/ID0NCnBhcnNlRmxvYXQoUmVn
RXhwLiQxKSAvIDEwMCArICIiIDogIiI7DQogICAgICAgICAgICAgICAgcmV0
dXJuIGYgPTNEPTNEPTNEICIiID8gIjEiIDogZg0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgaWYgKGhhLnRlc3QoYikpIGIgPTNEIFBhOw0KICAgICAg
ICAgICAgaWYgKCFkICYmIGUgJiYgZVtiXSkgZiA9M0QgZVtiXTsNCiAgICAg
ICAgICAgIGVsc2UgaWYgKHJiKSB7DQogICAgICAgICAgICAgICAgaWYgKGhh
LnRlc3QoYikpIGIgPTNEICJmbG9hdCI7DQogICAgICAgICAgICAgICAgYiA9
M0QgYi5yZXBsYWNlKGxiLCAiLSQxIikudG9Mb3dlckNhc2UoKTsNCiAgICAg
ICAgICAgICAgICBlID0zRCBhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7
DQogICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gbnVsbDsNCiAgICAg
ICAgICAgICAgICBpZiAoYSA9M0QgZS5nZXRDb21wdXRlZFN0eWxlKGEsIG51
bGwpKSBmID0zRCA9DQphLmdldFByb3BlcnR5VmFsdWUoYik7DQogICAgICAg
ICAgICAgICAgaWYgKGIgPTNEPTNEPTNEICJvcGFjaXR5IiAmJiBmID0zRD0z
RD0zRCAiIikgZiA9M0QgIjEiDQogICAgICAgICAgICB9IGVsc2UgaWYgKGEu
Y3VycmVudFN0eWxlKSB7DQogICAgICAgICAgICAgICAgZCA9M0QgYi5yZXBs
YWNlKGlhLCBqYSk7DQogICAgICAgICAgICAgICAgZiA9M0QgYS5jdXJyZW50
U3R5bGVbYl0gfHwgYS5jdXJyZW50U3R5bGVbZF07DQogICAgICAgICAgICAg
ICAgaWYgKCFtYi50ZXN0KGYpICYmIG5iLnRlc3QoZikpIHsNCiAgICAgICAg
ICAgICAgICAgICAgYiA9M0QgZS5sZWZ0Ow0KICAgICAgICAgICAgICAgICAg
ICB2YXIgaiA9M0QgYS5ydW50aW1lU3R5bGUubGVmdDsNCiAgICAgICAgICAg
ICAgICAgICAgYS5ydW50aW1lU3R5bGUubGVmdCA9M0QgYS5jdXJyZW50U3R5
bGUubGVmdDsNCiAgICAgICAgICAgICAgICAgICAgZS5sZWZ0ID0zRCBkID0z
RD0zRD0zRCAiZm9udFNpemUiID8gIjFlbSIgOiBmIHx8IDA7DQogICAgICAg
ICAgICAgICAgICAgIGYgPTNEIGUucGl4ZWxMZWZ0ICsgInB4IjsNCiAgICAg
ICAgICAgICAgICAgICAgZS5sZWZ0ID0zRCBiOw0KICAgICAgICAgICAgICAg
ICAgICBhLnJ1bnRpbWVTdHlsZS5sZWZ0ID0zRCBqDQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGYNCiAg
ICAgICAgfSwNCiAgICAgICAgc3dhcDogZnVuY3Rpb24gKGEsIGIsIGQpIHsN
CiAgICAgICAgICAgIHZhciBmID0zRCB7fTsNCiAgICAgICAgICAgIGZvciAo
dmFyIGUgaW4gYikgew0KICAgICAgICAgICAgICAgIGZbZV0gPTNEIGEuc3R5
bGVbZV07DQogICAgICAgICAgICAgICAgYS5zdHlsZVtlXSA9M0QgYltlXQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZC5jYWxsKGEpOw0KICAgICAg
ICAgICAgZm9yIChlIGluIGIpIGEuc3R5bGVbZV0gPTNEIGZbZV0NCiAgICAg
ICAgfQ0KICAgIH0pOw0KICAgIGlmIChjLmV4cHIgJiYgYy5leHByLmZpbHRl
cnMpIHsNCiAgICAgICAgYy5leHByLmZpbHRlcnMuaGlkZGVuID0zRCBmdW5j
dGlvbiAoYSkgew0KICAgICAgICAgICAgdmFyIGIgPTNEDQogICAgICAgICAg
ICBhLm9mZnNldFdpZHRoLA0KICAgICAgICAgICAgICAgIGQgPTNEIGEub2Zm
c2V0SGVpZ2h0LA0KICAgICAgICAgICAgICAgIGYgPTNEIGEubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSA9M0Q9M0Q9M0QgInRyIjsNCiAgICAgICAgICAgIHJl
dHVybiBiID0zRD0zRD0zRCAwICYmIGQgPTNEPTNEPTNEIDAgJiYgIWYgPyB0
cnVlIDogYiA+IDAgPQ0KJiYgZCA+IDAgJiYgIWYgPyBmYWxzZSA6IGMuY3Vy
Q1NTKGEsICJkaXNwbGF5IikgPTNEPTNEPTNEICJub25lIg0KICAgICAgICB9
Ow0KICAgICAgICBjLmV4cHIuZmlsdGVycy52aXNpYmxlID0zRCBmdW5jdGlv
biAoYSkgew0KICAgICAgICAgICAgcmV0dXJuICFjLmV4cHIuZmlsdGVycy5o
aWRkZW4oYSkNCiAgICAgICAgfQ0KICAgIH0NCiAgICB2YXIgc2IgPTNEIEoo
KSwNCiAgICAgICAgdGIgPTNEIC88c2NyaXB0KC58XHMpKj9cL3NjcmlwdD4v
Z2ksDQogICAgICAgIHViID0zRCAvc2VsZWN0fHRleHRhcmVhL2ksDQogICAg
ICAgIHZiID0zRCA9DQovY29sb3J8ZGF0ZXxkYXRldGltZXxlbWFpbHxoaWRk
ZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJjaHx0ZWx8PQ0K
dGV4dHx0aW1lfHVybHx3ZWVrL2ksDQogICAgICAgIE4gPTNEIC89M0RcPygm
fCQpLywNCiAgICAgICAga2EgPTNEIC9cPy8sDQogICAgICAgIHdiID0zRCAv
KFw/fCYpXz0zRC4qPygmfCQpLywNCiAgICAgICAgeGIgPTNEIC9eKFx3Kzop
P1wvXC8oW15cLz8jXSspLywNCiAgICAgICAgeWIgPTNEIC8lMjAvZywNCiAg
ICAgICAgemIgPTNEIGMuZm4ubG9hZDsNCiAgICBjLmZuLmV4dGVuZCh7DQog
ICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAg
ICBpZiAodHlwZW9mIGEgIT0zRD0zRCAic3RyaW5nIikgcmV0dXJuIHpiLmNh
bGwodGhpcywgYSk7DQogICAgICAgICAgICBlbHNlIGlmICghdGhpcy5sZW5n
dGgpIHJldHVybiB0aGlzOw0KICAgICAgICAgICAgdmFyIGYgPTNEIGEuaW5k
ZXhPZigiICIpOw0KICAgICAgICAgICAgaWYgKGYgPj0zRCAwKSB7DQogICAg
ICAgICAgICAgICAgdmFyIGUgPTNEIGEuc2xpY2UoZiwgYS5sZW5ndGgpOw0K
ICAgICAgICAgICAgICAgIGEgPTNEIGEuc2xpY2UoMCwgZikNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGYgPTNEICJHRVQiOw0KICAgICAgICAgICAg
aWYgKGIpIGlmIChjLmlzRnVuY3Rpb24oYikpIHsNCiAgICAgICAgICAgICAg
ICBkID0zRCBiOw0KICAgICAgICAgICAgICAgIGIgPTNEIG51bGwNCiAgICAg
ICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGIgPTNEPTNEPTNEICJvYmplY3Qi
KSB7DQogICAgICAgICAgICAgICAgYiA9M0QgYy5wYXJhbShiLCBjLmFqYXhT
ZXR0aW5ncy50cmFkaXRpb25hbCk7DQogICAgICAgICAgICAgICAgZiA9M0Qg
IlBPU1QiDQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgaiA9M0Qg
dGhpczsNCiAgICAgICAgICAgIGMuYWpheCh7DQogICAgICAgICAgICAgICAg
dXJsOiBhLA0KICAgICAgICAgICAgICAgIHR5cGU6IGYsDQogICAgICAgICAg
ICAgICAgZGF0YVR5cGU6ICJodG1sIiwNCiAgICAgICAgICAgICAgICBkYXRh
OiBiLA0KICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoaSwg
bykgew0KICAgICAgICAgICAgICAgICAgICBpZiAobyA9M0Q9M0Q9M0QgInN1
Y2Nlc3MiIHx8IG8gPTNEPTNEPTNEID0NCiJub3Rtb2RpZmllZCIpIGouaHRt
bChlID8gYygiPGRpdiAvPiIpLmFwcGVuZChpLnJlc3BvbnNlVGV4dC5yZXBs
YWNlKHRiLCA9DQoiIikpLmZpbmQoZSkgOiBpLnJlc3BvbnNlVGV4dCk7DQog
ICAgICAgICAgICAgICAgICAgIGQgJiYgai5lYWNoKGQsIFtpLnJlc3BvbnNl
VGV4dCwgbywgaV0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fSk7DQogICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICB9LA0KICAg
ICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHJl
dHVybiBjLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSkNCiAgICAgICAg
fSwNCiAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoKSB7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHMgPyBjLm1ha2VBcnJh
eSh0aGlzLmVsZW1lbnRzKSA6IHRoaXMNCiAgICAgICAgICAgIH0pLmZpbHRl
cihmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
bmFtZSAmJiAhdGhpcy5kaXNhYmxlZCAmJiAodGhpcy5jaGVja2VkIHx8ID0N
CnViLnRlc3QodGhpcy5ub2RlTmFtZSkgfHwgdmIudGVzdCh0aGlzLnR5cGUp
KQ0KICAgICAgICAgICAgfSkubWFwKGZ1bmN0aW9uIChhLCBiKSB7DQogICAg
ICAgICAgICAgICAgYSA9M0QgYyh0aGlzKS52YWwoKTsNCiAgICAgICAgICAg
ICAgICByZXR1cm4gYSA9M0Q9M0QgbnVsbCA/IG51bGwgOiBjLmlzQXJyYXko
YSkgPyBjLm1hcChhLCA9DQpmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmFt
ZTogYi5uYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGQN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pIDog
ew0KICAgICAgICAgICAgICAgICAgICBuYW1lOiBiLm5hbWUsDQogICAgICAg
ICAgICAgICAgICAgIHZhbHVlOiBhDQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfSkuZ2V0KCkNCiAgICAgICAgfQ0KICAgIH0pOw0KICAgIGMu
ZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJy
b3IgYWpheFN1Y2Nlc3MgPQ0KYWpheFNlbmQiLnNwbGl0KCIgIiksIGZ1bmN0
aW9uIChhLCBiKSB7DQogICAgICAgIGMuZm5bYl0gPTNEIGZ1bmN0aW9uIChk
KSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5iaW5kKGIsIGQpDQogICAg
ICAgIH0NCiAgICB9KTsNCiAgICBjLmV4dGVuZCh7DQogICAgICAgIGdldDog
ZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAgIGlmIChjLmlz
RnVuY3Rpb24oYikpIHsNCiAgICAgICAgICAgICAgICBmID0zRCBmIHx8IGQ7
DQogICAgICAgICAgICAgICAgZCA9M0QgYjsNCiAgICAgICAgICAgICAgICBi
ID0zRCBudWxsDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4g
Yy5hamF4KHsNCiAgICAgICAgICAgICAgICB0eXBlOiAiR0VUIiwNCiAgICAg
ICAgICAgICAgICB1cmw6IGEsDQogICAgICAgICAgICAgICAgZGF0YTogYiwN
CiAgICAgICAgICAgICAgICBzdWNjZXNzOiBkLA0KICAgICAgICAgICAgICAg
IGRhdGFUeXBlOiBmDQogICAgICAgICAgICB9KQ0KICAgICAgICB9LA0KICAg
ICAgICBnZXRTY3JpcHQ6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAg
ICByZXR1cm4gYy5nZXQoYSwgbnVsbCwgYiwgInNjcmlwdCIpDQogICAgICAg
IH0sDQogICAgICAgIGdldEpTT046IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQog
ICAgICAgICAgICByZXR1cm4gYy5nZXQoYSwgYiwgZCwgImpzb24iKQ0KICAg
ICAgICB9LA0KICAgICAgICBwb3N0OiBmdW5jdGlvbiAoYSwgYiwgZCwgZikg
ew0KICAgICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihiKSkgew0KICAgICAg
ICAgICAgICAgIGYgPTNEIGYgfHwgZDsNCiAgICAgICAgICAgICAgICBkID0z
RCBiOw0KICAgICAgICAgICAgICAgIGIgPTNEIHt9DQogICAgICAgICAgICB9
DQogICAgICAgICAgICByZXR1cm4gYy5hamF4KHsNCiAgICAgICAgICAgICAg
ICB0eXBlOiAiUE9TVCIsDQogICAgICAgICAgICAgICAgdXJsOiBhLA0KICAg
ICAgICAgICAgICAgIGRhdGE6IGIsDQogICAgICAgICAgICAgICAgc3VjY2Vz
czogZCwNCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogZg0KICAgICAgICAg
ICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgYWpheFNldHVwOiBmdW5jdGlv
biAoYSkgew0KICAgICAgICAgICAgYy5leHRlbmQoYy5hamF4U2V0dGluZ3Ms
IGEpDQogICAgICAgIH0sDQogICAgICAgIGFqYXhTZXR0aW5nczogew0KICAg
ICAgICAgICAgdXJsOiBsb2NhdGlvbi5ocmVmLA0KICAgICAgICAgICAgZ2xv
YmFsOiB0cnVlLA0KICAgICAgICAgICAgdHlwZTogIkdFVCIsDQogICAgICAg
ICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs
ZW5jb2RlZCIsDQogICAgICAgICAgICBwcm9jZXNzRGF0YTogdHJ1ZSwNCiAg
ICAgICAgICAgIGFzeW5jOiB0cnVlLA0KICAgICAgICAgICAgeGhyOiBBLlhN
TEh0dHBSZXF1ZXN0ICYmIChBLmxvY2F0aW9uLnByb3RvY29sICE9M0Q9M0Qg
PQ0KImZpbGU6IiB8fCAhQS5BY3RpdmVYT2JqZWN0KSA/DQogICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBB
LlhNTEh0dHBSZXF1ZXN0DQogICAgICAgICAgICB9IDogZnVuY3Rpb24gKCkg
ew0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRU
UCIpDQogICAgICAgICAgICAgICAgfSBjYXRjaCAoYSkge30NCiAgICAgICAg
ICAgIH0sDQogICAgICAgICAgICBhY2NlcHRzOiB7DQogICAgICAgICAgICAg
ICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsDQogICAgICAg
ICAgICAgICAgaHRtbDogInRleHQvaHRtbCIsDQogICAgICAgICAgICAgICAg
c2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiwNCiAgICAgICAgICAgICAgICBqc29uOiAiYXBwbGljYXRpb24vanNv
biwgdGV4dC9qYXZhc2NyaXB0IiwNCiAgICAgICAgICAgICAgICB0ZXh0OiAi
dGV4dC9wbGFpbiIsDQogICAgICAgICAgICAgICAgX2RlZmF1bHQ6ICIqLyoi
DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGxhc3RNb2Rp
ZmllZDoge30sDQogICAgICAgIGV0YWc6IHt9LA0KICAgICAgICBhamF4OiBm
dW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgZnVuY3Rpb24gYigpIHsNCiAg
ICAgICAgICAgICAgICBlLnN1Y2Nlc3MgJiYgZS5zdWNjZXNzLmNhbGwoaywg
bywgaSwgeCk7DQogICAgICAgICAgICAgICAgZS5nbG9iYWwgJiYgZigiYWph
eFN1Y2Nlc3MiLCBbeCwgZV0pDQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBmdW5jdGlvbiBkKCkgew0KICAgICAgICAgICAgICAgIGUuY29tcGxldGUg
JiYgZS5jb21wbGV0ZS5jYWxsKGssIHgsIGkpOw0KICAgICAgICAgICAgICAg
IGUuZ2xvYmFsICYmIGYoImFqYXhDb21wbGV0ZSIsIFt4LCBlXSk7DQogICAg
ICAgICAgICAgICAgZS5nbG9iYWwgJiYgIS0tYy5hY3RpdmUgJiYgYy5ldmVu
dC50cmlnZ2VyKCJhamF4U3RvcCIpDQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBmdW5jdGlvbiBmKHEsIHApIHsNCiAgICAgICAgICAgICAgICAoZS5j
b250ZXh0ID8gYyhlLmNvbnRleHQpIDogYy5ldmVudCkudHJpZ2dlcihxLCBw
KQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIGUgPTNEIGMuZXh0
ZW5kKHRydWUsIHt9LCBjLmFqYXhTZXR0aW5ncywgYSksDQogICAgICAgICAg
ICAgICAgaiwgaSwgbywgayA9M0QgYSAmJiBhLmNvbnRleHQgfHwgZSwNCiAg
ICAgICAgICAgICAgICBuID0zRCBlLnR5cGUudG9VcHBlckNhc2UoKTsNCiAg
ICAgICAgICAgIGlmIChlLmRhdGEgJiYgZS5wcm9jZXNzRGF0YSAmJiB0eXBl
b2YgZS5kYXRhICE9M0Q9M0QgPQ0KInN0cmluZyIpIGUuZGF0YSA9M0QgYy5w
YXJhbShlLmRhdGEsIGUudHJhZGl0aW9uYWwpOw0KICAgICAgICAgICAgaWYg
KGUuZGF0YVR5cGUgPTNEPTNEPTNEICJqc29ucCIpIHsNCiAgICAgICAgICAg
ICAgICBpZiAobiA9M0Q9M0Q9M0QgIkdFVCIpIE4udGVzdChlLnVybCkgfHwg
KGUudXJsICs9M0QgPQ0KKGthLnRlc3QoZS51cmwpID8gIiYiIDogIj8iKSAr
IChlLmpzb25wIHx8ICJjYWxsYmFjayIpICsgIj0zRD8iKTsNCiAgICAgICAg
ICAgICAgICBlbHNlIGlmICghZS5kYXRhIHx8ICFOLnRlc3QoZS5kYXRhKSkg
ZS5kYXRhID0zRCAoZS5kYXRhID0NCj8gZS5kYXRhICsgIiYiIDogIiIpICsg
KGUuanNvbnAgfHwgImNhbGxiYWNrIikgKyAiPTNEPyI7DQogICAgICAgICAg
ICAgICAgZS5kYXRhVHlwZSA9M0QgImpzb24iDQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBpZiAoZS5kYXRhVHlwZSA9M0Q9M0Q9M0QgImpzb24iICYm
IChlLmRhdGEgJiYgTi50ZXN0KGUuZGF0YSkgPQ0KfHwgTi50ZXN0KGUudXJs
KSkpIHsNCiAgICAgICAgICAgICAgICBqID0zRCBlLmpzb25wQ2FsbGJhY2sg
fHwgImpzb25wIiArIHNiKys7DQogICAgICAgICAgICAgICAgaWYgKGUuZGF0
YSkgZS5kYXRhID0zRCAoZS5kYXRhICsgIiIpLnJlcGxhY2UoTiwgIj0zRCIg
KyA9DQpqICsgIiQxIik7DQogICAgICAgICAgICAgICAgZS51cmwgPTNEIGUu
dXJsLnJlcGxhY2UoTiwgIj0zRCIgKyBqICsgIiQxIik7DQogICAgICAgICAg
ICAgICAgZS5kYXRhVHlwZSA9M0QgInNjcmlwdCI7DQogICAgICAgICAgICAg
ICAgQVtqXSA9M0QgQVtqXSB8fA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IChxKSB7DQogICAgICAgICAgICAgICAgICAgIG8gPTNEIHE7DQogICAgICAg
ICAgICAgICAgICAgIGIoKTsNCiAgICAgICAgICAgICAgICAgICAgZCgpOw0K
ICAgICAgICAgICAgICAgICAgICBBW2pdID0zRCB3Ow0KICAgICAgICAgICAg
ICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IEFbal0NCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAocCkge30NCiAg
ICAgICAgICAgICAgICAgICAgeiAmJiB6LnJlbW92ZUNoaWxkKEMpDQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYg
KGUuZGF0YVR5cGUgPTNEPTNEPTNEICJzY3JpcHQiICYmIGUuY2FjaGUgPTNE
PTNEPTNEIG51bGwpID0NCmUuY2FjaGUgPTNEIGZhbHNlOw0KICAgICAgICAg
ICAgaWYgKGUuY2FjaGUgPTNEPTNEPTNEIGZhbHNlICYmIG4gPTNEPTNEPTNE
ICJHRVQiKSB7DQogICAgICAgICAgICAgICAgdmFyIHIgPTNEIEooKSwNCiAg
ICAgICAgICAgICAgICAgICAgdSA9M0QgZS51cmwucmVwbGFjZSh3YiwgIiQx
Xz0zRCIgKyByICsgIiQyIik7DQogICAgICAgICAgICAgICAgZS51cmwgPTNE
IHUgKyAodSA9M0Q9M0Q9M0QgZS51cmwgPyAoa2EudGVzdChlLnVybCkgPyAi
JiIgPQ0KOiAiPyIpICsgIl89M0QiICsgciA6ICIiKQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgaWYgKGUuZGF0YSAmJiBuID0zRD0zRD0zRCAiR0VU
IikgZS51cmwgKz0zRCAoa2EudGVzdChlLnVybCkgPQ0KPyAiJiIgOiAiPyIp
ICsgZS5kYXRhOw0KICAgICAgICAgICAgZS5nbG9iYWwgJiYgIWMuYWN0aXZl
KysgJiYgYy5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTsNCiAgICAgICAg
ICAgIHIgPTNEIChyID0zRCB4Yi5leGVjKGUudXJsKSkgJiYgKHJbMV0gJiYg
clsxXSAhPTNEPTNEID0NCmxvY2F0aW9uLnByb3RvY29sIHx8IHJbMl0gIT0z
RD0zRCBsb2NhdGlvbi5ob3N0KTsNCiAgICAgICAgICAgIGlmIChlLmRhdGFU
eXBlID0zRD0zRD0zRCAic2NyaXB0IiAmJiBuID0zRD0zRD0zRCAiR0VUIiAm
JiByKSA9DQp7DQogICAgICAgICAgICAgICAgdmFyIHogPTNEIHMuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSB8fCA9DQpzLmRvY3VtZW50RWxl
bWVudCwNCiAgICAgICAgICAgICAgICAgICAgQyA9M0Qgcy5jcmVhdGVFbGVt
ZW50KCJzY3JpcHQiKTsNCiAgICAgICAgICAgICAgICBDLnNyYyA9M0QgZS51
cmw7DQogICAgICAgICAgICAgICAgaWYgKGUuc2NyaXB0Q2hhcnNldCkgQy5j
aGFyc2V0ID0zRCBlLnNjcmlwdENoYXJzZXQ7DQogICAgICAgICAgICAgICAg
aWYgKCFqKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBCID0zRA0KICAg
ICAgICAgICAgICAgICAgICBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAg
Qy5vbmxvYWQgPTNEIEMub25yZWFkeXN0YXRlY2hhbmdlID0zRCBmdW5jdGlv
biAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUIgJiYgKCF0
aGlzLnJlYWR5U3RhdGUgfHwgdGhpcy5yZWFkeVN0YXRlID0NCj0zRD0zRD0z
RCAibG9hZGVkIiB8fCB0aGlzLnJlYWR5U3RhdGUgPTNEPTNEPTNEICJjb21w
bGV0ZSIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9M0Qg
dHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiKCk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZCgpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEMub25sb2FkID0zRCBDLm9ucmVhZHlzdGF0ZWNoYW5n
ZSA9M0QgbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ICYm
IEMucGFyZW50Tm9kZSAmJiB6LnJlbW92ZUNoaWxkKEMpDQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgei5pbnNlcnRCZWZvcmUo
Qywgei5maXJzdENoaWxkKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gdw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIEUgPTNEIGZhbHNlLA0K
ICAgICAgICAgICAgICAgIHggPTNEIGUueGhyKCk7DQogICAgICAgICAgICBp
ZiAoeCkgew0KICAgICAgICAgICAgICAgIGUudXNlcm5hbWUgPyB4Lm9wZW4o
biwgZS51cmwsIGUuYXN5bmMsIGUudXNlcm5hbWUsID0NCmUucGFzc3dvcmQp
IDogeC5vcGVuKG4sIGUudXJsLCBlLmFzeW5jKTsNCiAgICAgICAgICAgICAg
ICB0cnkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhIHx8IGEg
JiYgYS5jb250ZW50VHlwZSkgPQ0KeC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250
ZW50LVR5cGUiLCBlLmNvbnRlbnRUeXBlKTsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKGUuaWZNb2RpZmllZCkgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgYy5sYXN0TW9kaWZpZWRbZS51cmxdICYmID0NCnguc2V0UmVxdWVzdEhl
YWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCBjLmxhc3RNb2RpZmllZFtlLnVy
bF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgYy5ldGFnW2UudXJsXSAm
JiA9DQp4LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLCBjLmV0
YWdbZS51cmxdKQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgIHIgfHwgeC5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3Rl
ZC1XaXRoIiwgPQ0KIlhNTEh0dHBSZXF1ZXN0Iik7DQogICAgICAgICAgICAg
ICAgICAgIHguc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwgZS5kYXRhVHlw
ZSAmJiA9DQplLmFjY2VwdHNbZS5kYXRhVHlwZV0gPyBlLmFjY2VwdHNbZS5k
YXRhVHlwZV0gKyAiLCAqLyoiIDogPQ0KZS5hY2NlcHRzLl9kZWZhdWx0KQ0K
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGdhKSB7fQ0KICAgICAgICAgICAg
ICAgIGlmIChlLmJlZm9yZVNlbmQgJiYgZS5iZWZvcmVTZW5kLmNhbGwoaywg
eCwgZSkgPTNEPTNEPTNEID0NCmZhbHNlKSB7DQogICAgICAgICAgICAgICAg
ICAgIGUuZ2xvYmFsICYmICEtLWMuYWN0aXZlICYmID0NCmMuZXZlbnQudHJp
Z2dlcigiYWpheFN0b3AiKTsNCiAgICAgICAgICAgICAgICAgICAgeC5hYm9y
dCgpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2UNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZS5nbG9iYWwgJiYgZigi
YWpheFNlbmQiLCBbeCwgZV0pOw0KICAgICAgICAgICAgICAgIHZhciBnID0z
RCB4Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9M0QgZnVuY3Rpb24gKHEpIHsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKCF4IHx8IHgucmVhZHlTdGF0ZSA9M0Q9
M0Q9M0QgMCB8fCBxID0zRD0zRD0zRCA9DQoiYWJvcnQiKSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICBFIHx8IGQoKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIEUgPTNEIHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoeCkgeC5vbnJlYWR5c3RhdGVjaGFuZ2UgPTNEIGMubm9vcA0KICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFFICYmIHggJiYgKHgucmVhZHlT
dGF0ZSA9M0Q9M0Q9M0QgNCB8fCBxID0NCj0zRD0zRD0zRCAidGltZW91dCIp
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBFID0zRCB0cnVlOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgeC5vbnJlYWR5c3RhdGVjaGFuZ2UgPTNE
IGMubm9vcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPTNEIHEgPTNE
PTNEPTNEICJ0aW1lb3V0IiA/ICJ0aW1lb3V0IiA6ID0NCiFjLmh0dHBTdWNj
ZXNzKHgpID8gImVycm9yIiA6IGUuaWZNb2RpZmllZCAmJiBjLmh0dHBOb3RN
b2RpZmllZCh4LCA9DQplLnVybCkgPyAibm90bW9kaWZpZWQiIDogInN1Y2Nl
c3MiOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHA7DQogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaSA9M0Q9M0Q9M0QgInN1Y2Nlc3MiKSB0
cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPTNEIGMuaHR0
cERhdGEoeCwgZS5kYXRhVHlwZSwgZSkNCiAgICAgICAgICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpID0zRCAicGFyc2VyZXJyb3IiOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHAgPTNEIHYNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0zRD0zRD0zRCAic3VjY2Vz
cyIgfHwgaSA9M0Q9M0Q9M0QgPQ0KIm5vdG1vZGlmaWVkIikgaiB8fCBiKCk7
DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGMuaGFuZGxlRXJyb3Io
ZSwgeCwgaSwgcCk7DQogICAgICAgICAgICAgICAgICAgICAgICBkKCk7DQog
ICAgICAgICAgICAgICAgICAgICAgICBxID0zRD0zRD0zRCAidGltZW91dCIg
JiYgeC5hYm9ydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUu
YXN5bmMpIHggPTNEIG51bGwNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAg
ICAgICAgICAgICAgICAgdmFyIGggPTNEIHguYWJvcnQ7DQogICAgICAgICAg
ICAgICAgICAgIHguYWJvcnQgPTNEIGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHggJiYgaC5jYWxsKHgpOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgZygiYWJvcnQiKQ0KICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgfSBjYXRjaCAobCkge30NCiAgICAgICAgICAg
ICAgICBlLmFzeW5jICYmIGUudGltZW91dCA+IDAgJiYgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHggJiYgIUUgJiYg
ZygidGltZW91dCIpDQogICAgICAgICAgICAgICAgfSwgZS50aW1lb3V0KTsN
CiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICB4
LnNlbmQobiA9M0Q9M0Q9M0QgIlBPU1QiIHx8IG4gPTNEPTNEPTNEICJQVVQi
IHx8IG4gPQ0KPTNEPTNEPTNEICJERUxFVEUiID8gZS5kYXRhIDogbnVsbCkN
CiAgICAgICAgICAgICAgICB9IGNhdGNoIChtKSB7DQogICAgICAgICAgICAg
ICAgICAgIGMuaGFuZGxlRXJyb3IoZSwgeCwgbnVsbCwgbSk7DQogICAgICAg
ICAgICAgICAgICAgIGQoKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICBlLmFzeW5jIHx8IGcoKTsNCiAgICAgICAgICAgICAgICByZXR1
cm4geA0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBoYW5k
bGVFcnJvcjogZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAg
IGlmIChhLmVycm9yKSBhLmVycm9yLmNhbGwoYS5jb250ZXh0IHx8IGEsIGIs
IGQsIGYpOw0KICAgICAgICAgICAgaWYgKGEuZ2xvYmFsKShhLmNvbnRleHQg
PyBjKGEuY29udGV4dCkgOiA9DQpjLmV2ZW50KS50cmlnZ2VyKCJhamF4RXJy
b3IiLCBbYiwgYSwgZl0pDQogICAgICAgIH0sDQoNCiAgICAgICAgYWN0aXZl
OiAwLA0KICAgICAgICBodHRwU3VjY2VzczogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICFhLnN0
YXR1cyAmJiBsb2NhdGlvbi5wcm90b2NvbCA9M0Q9M0Q9M0QgImZpbGU6IiA9
DQp8fCBhLnN0YXR1cyA+PTNEIDIwMCAmJiBhLnN0YXR1cyA8IDMwMCB8fCBh
LnN0YXR1cyA9M0Q9M0Q9M0QgMzA0IHx8ID0NCmEuc3RhdHVzID0zRD0zRD0z
RCAxMjIzIHx8IGEuc3RhdHVzID0zRD0zRD0zRCAwDQogICAgICAgICAgICB9
IGNhdGNoIChiKSB7fQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlDQogICAg
ICAgIH0sDQogICAgICAgIGh0dHBOb3RNb2RpZmllZDogZnVuY3Rpb24gKGEs
IGIpIHsNCiAgICAgICAgICAgIHZhciBkID0zRCBhLmdldFJlc3BvbnNlSGVh
ZGVyKCJMYXN0LU1vZGlmaWVkIiksDQogICAgICAgICAgICAgICAgZiA9M0Qg
YS5nZXRSZXNwb25zZUhlYWRlcigiRXRhZyIpOw0KICAgICAgICAgICAgaWYg
KGQpIGMubGFzdE1vZGlmaWVkW2JdID0zRCBkOw0KICAgICAgICAgICAgaWYg
KGYpIGMuZXRhZ1tiXSA9M0QgZjsNCiAgICAgICAgICAgIHJldHVybiBhLnN0
YXR1cyA9M0Q9M0Q9M0QgMzA0IHx8IGEuc3RhdHVzID0zRD0zRD0zRCAwDQog
ICAgICAgIH0sDQogICAgICAgIGh0dHBEYXRhOiBmdW5jdGlvbiAoYSwgYiwg
ZCkgew0KICAgICAgICAgICAgdmFyIGYgPTNEIGEuZ2V0UmVzcG9uc2VIZWFk
ZXIoImNvbnRlbnQtdHlwZSIpIHx8ICIiLA0KICAgICAgICAgICAgICAgIGUg
PTNEIGIgPTNEPTNEPTNEICJ4bWwiIHx8ICFiICYmIGYuaW5kZXhPZigieG1s
IikgPj0zRCA9DQowOw0KICAgICAgICAgICAgYSA9M0QgZSA/IGEucmVzcG9u
c2VYTUwgOiBhLnJlc3BvbnNlVGV4dDsNCiAgICAgICAgICAgIGUgJiYgYS5k
b2N1bWVudEVsZW1lbnQubm9kZU5hbWUgPTNEPTNEPTNEICJwYXJzZXJlcnJv
ciIgJiYgPQ0KYy5lcnJvcigicGFyc2VyZXJyb3IiKTsNCiAgICAgICAgICAg
IGlmIChkICYmIGQuZGF0YUZpbHRlcikgYSA9M0QgZC5kYXRhRmlsdGVyKGEs
IGIpOw0KICAgICAgICAgICAgaWYgKHR5cGVvZiBhID0zRD0zRD0zRCAic3Ry
aW5nIikgaWYgKGIgPTNEPTNEPTNEICJqc29uIiB8fCA9DQohYiAmJiBmLmlu
ZGV4T2YoImpzb24iKSA+PTNEIDApIGEgPTNEIGMucGFyc2VKU09OKGEpOw0K
ICAgICAgICAgICAgZWxzZSBpZiAoYiA9M0Q9M0Q9M0QgInNjcmlwdCIgfHwg
IWIgJiYgPQ0KZi5pbmRleE9mKCJqYXZhc2NyaXB0IikgPj0zRCAwKSBjLmds
b2JhbEV2YWwoYSk7DQogICAgICAgICAgICByZXR1cm4gYQ0KICAgICAgICB9
LA0KICAgICAgICBwYXJhbTogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAg
ICAgIGZ1bmN0aW9uIGQoaSwgbykgew0KICAgICAgICAgICAgICAgIGlmIChj
LmlzQXJyYXkobykpIGMuZWFjaChvLCBmdW5jdGlvbiAoaywgbikgew0KICAg
ICAgICAgICAgICAgICAgICBiIHx8IC9cW1xdJC8udGVzdChpKSA/IGYoaSwg
bikgOiBkKGkgKyAiWyIgKyAodHlwZW9mID0NCm4gPTNEPTNEPTNEICJvYmpl
Y3QiIHx8IGMuaXNBcnJheShuKSA/IGsgOiAiIikgKyAiXSIsIG4pDQogICAg
ICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgZWxzZSFiICYmIG8g
IT0zRCBudWxsICYmIHR5cGVvZiBvID0zRD0zRD0zRCAib2JqZWN0IiA/ID0N
CmMuZWFjaChvLCBmdW5jdGlvbiAoaywgbikgew0KICAgICAgICAgICAgICAg
ICAgICBkKGkgKyAiWyIgKyBrICsgIl0iLCBuKQ0KICAgICAgICAgICAgICAg
IH0pIDogZihpLCBvKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZnVu
Y3Rpb24gZihpLCBvKSB7DQogICAgICAgICAgICAgICAgbyA9M0QgYy5pc0Z1
bmN0aW9uKG8pID8gbygpIDogbzsNCiAgICAgICAgICAgICAgICBlW2UubGVu
Z3RoXSA9M0QgZW5jb2RlVVJJQ29tcG9uZW50KGkpICsgIj0zRCIgKyA9DQpl
bmNvZGVVUklDb21wb25lbnQobykNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHZhciBlID0zRCBbXTsNCiAgICAgICAgICAgIGlmIChiID0zRD0zRD0z
RCB3KSBiID0zRCBjLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsNCiAgICAg
ICAgICAgIGlmIChjLmlzQXJyYXkoYSkgfHwgYS5qcXVlcnkpIGMuZWFjaChh
LCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgZih0aGlzLm5hbWUs
IHRoaXMudmFsdWUpDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGVs
c2UgZm9yICh2YXIgaiBpbiBhKSBkKGosIGFbal0pOw0KICAgICAgICAgICAg
cmV0dXJuIGUuam9pbigiJiIpLnJlcGxhY2UoeWIsICIrIikNCiAgICAgICAg
fQ0KICAgIH0pOw0KICAgIHZhciBsYSA9M0Qge30sDQogICAgICAgIEFiID0z
RCAvdG9nZ2xlfHNob3d8aGlkZS8sDQogICAgICAgIEJiID0zRCAvXihbKy1d
PTNEKT8oW1xkKy0uXSspKC4qKSQvLA0KICAgICAgICBXLCB2YSA9M0QgWw0K
ICAgICAgICBbImhlaWdodCIsICJtYXJnaW5Ub3AiLCAibWFyZ2luQm90dG9t
IiwgInBhZGRpbmdUb3AiLCA9DQoicGFkZGluZ0JvdHRvbSJdLA0KICAgICAg
ICBbIndpZHRoIiwgIm1hcmdpbkxlZnQiLCAibWFyZ2luUmlnaHQiLCAicGFk
ZGluZ0xlZnQiLCA9DQoicGFkZGluZ1JpZ2h0Il0sDQogICAgICAgIFsib3Bh
Y2l0eSJdDQogICAgXTsNCiAgICBjLmZuLmV4dGVuZCh7DQogICAgICAgIHNo
b3c6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBpZiAoYSB8fCBh
ID0zRD0zRD0zRCAwKSByZXR1cm4gdGhpcy5hbmltYXRlKEsoInNob3ciLCAz
KSwgYSwgPQ0KYik7DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg
ICAgICBhID0zRCAwOw0KICAgICAgICAgICAgICAgIGZvciAoYiA9M0QgdGhp
cy5sZW5ndGg7IGEgPCBiOyBhKyspIHsNCiAgICAgICAgICAgICAgICAgICAg
dmFyIGQgPTNEIGMuZGF0YSh0aGlzW2FdLCAib2xkZGlzcGxheSIpOw0KICAg
ICAgICAgICAgICAgICAgICB0aGlzW2FdLnN0eWxlLmRpc3BsYXkgPTNEIGQg
fHwgIiI7DQogICAgICAgICAgICAgICAgICAgIGlmIChjLmNzcyh0aGlzW2Fd
LCAiZGlzcGxheSIpID0zRD0zRD0zRCAibm9uZSIpIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGQgPTNEIHRoaXNbYV0ubm9kZU5hbWU7DQogICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChsYVtkXSkgZiA9M0QgbGFbZF07DQogICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgZSA9M0QgYygiPCIgKyBkICsgIiA9DQovPiIpLmFwcGVuZFRvKCJib2R5
Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9M0QgZS5jc3Mo
ImRpc3BsYXkiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZiA9M0Q9M0Q9M0QgIm5vbmUiKSBmID0zRCAiYmxvY2siOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlKCk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGFbZF0gPTNEIGYNCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGMuZGF0YSh0aGlz
W2FdLCAib2xkZGlzcGxheSIsIGYpDQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYSA9M0QgMDsN
CiAgICAgICAgICAgICAgICBmb3IgKGIgPTNEIHRoaXMubGVuZ3RoOyBhIDwg
YjsgYSsrKSA9DQp0aGlzW2FdLnN0eWxlLmRpc3BsYXkgPTNEIGMuZGF0YSh0
aGlzW2FdLCAib2xkZGlzcGxheSIpIHx8ICIiOw0KICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzDQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAg
ICAgIGhpZGU6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBpZiAo
YSB8fCBhID0zRD0zRD0zRCAwKSByZXR1cm4gdGhpcy5hbmltYXRlKEsoImhp
ZGUiLCAzKSwgYSwgPQ0KYik7DQogICAgICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICAgICAgICBhID0zRCAwOw0KICAgICAgICAgICAgICAgIGZvciAoYiA9
M0QgdGhpcy5sZW5ndGg7IGEgPCBiOyBhKyspIHsNCiAgICAgICAgICAgICAg
ICAgICAgdmFyIGQgPTNEIGMuZGF0YSh0aGlzW2FdLCAib2xkZGlzcGxheSIp
Ow0KICAgICAgICAgICAgICAgICAgICAhZCAmJiBkICE9M0Q9M0QgIm5vbmUi
ICYmIGMuZGF0YSh0aGlzW2FdLCA9DQoib2xkZGlzcGxheSIsIGMuY3NzKHRo
aXNbYV0sICJkaXNwbGF5IikpDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIGEgPTNEIDA7DQogICAgICAgICAgICAgICAgZm9yIChiID0z
RCB0aGlzLmxlbmd0aDsgYSA8IGI7IGErKykgPQ0KdGhpc1thXS5zdHlsZS5k
aXNwbGF5ID0zRCAibm9uZSI7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgX3RvZ2ds
ZTogYy5mbi50b2dnbGUsDQogICAgICAgIHRvZ2dsZTogZnVuY3Rpb24gKGEs
IGIpIHsNCiAgICAgICAgICAgIHZhciBkID0zRCB0eXBlb2YgYSA9M0Q9M0Q9
M0QgImJvb2xlYW4iOw0KICAgICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihh
KSAmJiBjLmlzRnVuY3Rpb24oYikpID0NCnRoaXMuX3RvZ2dsZS5hcHBseSh0
aGlzLCBhcmd1bWVudHMpOw0KICAgICAgICAgICAgZWxzZSBhID0zRD0zRCBu
dWxsIHx8IGQgPyB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgIHZhciBmID0zRCBkID8gYSA6IGModGhpcykuaXMoIjpoaWRkZW4i
KTsNCiAgICAgICAgICAgICAgICBjKHRoaXMpW2YgPyAic2hvdyIgOiAiaGlk
ZSJdKCkNCiAgICAgICAgICAgIH0pIDogdGhpcy5hbmltYXRlKEsoInRvZ2ds
ZSIsIDMpLCBhLCBiKTsNCiAgICAgICAgICAgIHJldHVybiB0aGlzDQogICAg
ICAgIH0sDQogICAgICAgIGZhZGVUbzogZnVuY3Rpb24gKGEsIGIsIGQpIHsN
CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNz
cygib3BhY2l0eSIsID0NCjApLnNob3coKS5lbmQoKS5hbmltYXRlKHsNCiAg
ICAgICAgICAgICAgICBvcGFjaXR5OiBiDQogICAgICAgICAgICB9LCBhLCBk
KQ0KICAgICAgICB9LA0KICAgICAgICBhbmltYXRlOiBmdW5jdGlvbiAoYSwg
YiwgZCwgZikgew0KICAgICAgICAgICAgdmFyIGUgPTNEIGMuc3BlZWQoYiwg
ZCwgZik7DQogICAgICAgICAgICBpZiAoYy5pc0VtcHR5T2JqZWN0KGEpKSBy
ZXR1cm4gdGhpcy5lYWNoKGUuY29tcGxldGUpOw0KICAgICAgICAgICAgcmV0
dXJuIHRoaXNbZS5xdWV1ZSA9M0Q9M0Q9M0QgZmFsc2UgPyAiZWFjaCIgOiA9
DQoicXVldWUiXShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgdmFy
IGogPTNEIGMuZXh0ZW5kKHt9LCBlKSwNCiAgICAgICAgICAgICAgICAgICAg
aSwgbyA9M0QgdGhpcy5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiA9DQpjKHRo
aXMpLmlzKCI6aGlkZGVuIiksDQogICAgICAgICAgICAgICAgICAgIGsgPTNE
IHRoaXM7DQogICAgICAgICAgICAgICAgZm9yIChpIGluIGEpIHsNCiAgICAg
ICAgICAgICAgICAgICAgdmFyIG4gPTNEIGkucmVwbGFjZShpYSwgamEpOw0K
ICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPTNEPTNEIG4pIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGFbbl0gPTNEIGFbaV07DQogICAgICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgYVtpXTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGkgPTNEIG4NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICBpZiAoYVtpXSA9M0Q9M0Q9M0QgImhpZGUiICYmIG8g
fHwgYVtpXSA9M0Q9M0Q9M0QgPQ0KInNob3ciICYmICFvKSByZXR1cm4gai5j
b21wbGV0ZS5jYWxsKHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
KGkgPTNEPTNEPTNEICJoZWlnaHQiIHx8IGkgPTNEPTNEPTNEICJ3aWR0aCIp
ICYmID0NCnRoaXMuc3R5bGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGouZGlzcGxheSA9M0QgYy5jc3ModGhpcywgImRpc3BsYXkiKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGoub3ZlcmZsb3cgPTNEIHRoaXMuc3R5bGUu
b3ZlcmZsb3cNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICBpZiAoYy5pc0FycmF5KGFbaV0pKSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAoai5zcGVjaWFsRWFzaW5nID0zRA0KICAgICAgICAgICAg
ICAgICAgICAgICAgai5zcGVjaWFsRWFzaW5nIHx8IHt9KVtpXSA9M0QgYVtp
XVsxXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFbaV0gPTNEIGFbaV1b
MF0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBpZiAoai5vdmVyZmxvdyAhPTNEIG51bGwpIHRo
aXMuc3R5bGUub3ZlcmZsb3cgPTNEID0NCiJoaWRkZW4iOw0KICAgICAgICAg
ICAgICAgIGouY3VyQW5pbSA9M0QgYy5leHRlbmQoe30sIGEpOw0KICAgICAg
ICAgICAgICAgIGMuZWFjaChhLCBmdW5jdGlvbiAociwgdSkgew0KICAgICAg
ICAgICAgICAgICAgICB2YXIgeiA9M0QgbmV3IGMuZngoaywgaiwgcik7DQog
ICAgICAgICAgICAgICAgICAgIGlmIChBYi50ZXN0KHUpKSB6W3UgPTNEPTNE
PTNEICJ0b2dnbGUiID8gbyA/ICJzaG93IiA9DQo6ICJoaWRlIiA6IHVdKGEp
Ow0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBDID0zRCBCYi5leGVjKHUpLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEIgPTNEIHouY3VyKHRydWUpIHx8IDA7DQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoQykgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUgPTNEIHBhcnNlRmxvYXQoQ1syXSk7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIEUgPTNEIENbM10gfHwgInB4IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRSAhPTNEPTNEICJw
eCIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgay5zdHls
ZVtyXSA9M0QgKHUgfHwgMSkgKyBFOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCID0zRCAodSB8fCAxKSAvIHouY3VyKHRydWUpICogQjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgay5zdHlsZVtyXSA9
M0QgQiArIEUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENbMV0pIHUgPTNEIChDWzFd
ID0zRD0zRD0zRCAiLT0zRCIgPyAtMSA9DQo6IDEpICogdSArIEI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgei5jdXN0b20oQiwgdSwgRSkNCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB6LmN1c3RvbShCLCB1LCAi
IikNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0p
Ow0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlDQogICAgICAgICAgICB9
KQ0KICAgICAgICB9LA0KICAgICAgICBzdG9wOiBmdW5jdGlvbiAoYSwgYikg
ew0KICAgICAgICAgICAgdmFyIGQgPTNEIGMudGltZXJzOw0KICAgICAgICAg
ICAgYSAmJiB0aGlzLnF1ZXVlKFtdKTsNCiAgICAgICAgICAgIHRoaXMuZWFj
aChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgZiA9
M0QgZC5sZW5ndGggLSAxOyBmID49M0QgMDsgZi0tKSBpZiA9DQooZFtmXS5l
bGVtID0zRD0zRD0zRCB0aGlzKSB7DQogICAgICAgICAgICAgICAgICAgIGIg
JiYgZFtmXSh0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgZC5zcGxpY2Uo
ZiwgMSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAg
ICAgICAgICAgIGIgfHwgdGhpcy5kZXF1ZXVlKCk7DQogICAgICAgICAgICBy
ZXR1cm4gdGhpcw0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5lYWNoKHsN
CiAgICAgICAgc2xpZGVEb3duOiBLKCJzaG93IiwgMSksDQogICAgICAgIHNs
aWRlVXA6IEsoImhpZGUiLCAxKSwNCiAgICAgICAgc2xpZGVUb2dnbGU6IEso
InRvZ2dsZSIsIDEpLA0KICAgICAgICBmYWRlSW46IHsNCiAgICAgICAgICAg
IG9wYWNpdHk6ICJzaG93Ig0KICAgICAgICB9LA0KICAgICAgICBmYWRlT3V0
OiB7DQogICAgICAgICAgICBvcGFjaXR5OiAiaGlkZSINCiAgICAgICAgfQ0K
ICAgIH0sIGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgIGMuZm5bYV0gPTNE
IGZ1bmN0aW9uIChkLCBmKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5h
bmltYXRlKGIsIGQsIGYpDQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmV4
dGVuZCh7DQogICAgICAgIHNwZWVkOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0K
ICAgICAgICAgICAgdmFyIGYgPTNEIGEgJiYgdHlwZW9mIGEgPTNEPTNEPTNE
ICJvYmplY3QiID8gYSA6IHsNCiAgICAgICAgICAgICAgICBjb21wbGV0ZTog
ZCB8fCAhZCAmJiBiIHx8IGMuaXNGdW5jdGlvbihhKSAmJiBhLA0KICAgICAg
ICAgICAgICAgIGR1cmF0aW9uOiBhLA0KICAgICAgICAgICAgICAgIGVhc2lu
ZzogZCAmJiBiIHx8IGIgJiYgIWMuaXNGdW5jdGlvbihiKSAmJiBiDQogICAg
ICAgICAgICB9Ow0KICAgICAgICAgICAgZi5kdXJhdGlvbiA9M0QgYy5meC5v
ZmYgPyAwIDogdHlwZW9mIGYuZHVyYXRpb24gPTNEPTNEPTNEID0NCiJudW1i
ZXIiID8gZi5kdXJhdGlvbiA6IGMuZnguc3BlZWRzW2YuZHVyYXRpb25dIHx8
IGMuZnguc3BlZWRzLl9kZWZhdWx0Ow0KICAgICAgICAgICAgZi5vbGQgPTNE
IGYuY29tcGxldGU7DQogICAgICAgICAgICBmLmNvbXBsZXRlID0zRCBmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICAgICAgZi5xdWV1ZSAhPTNEPTNEIGZh
bHNlICYmIGModGhpcykuZGVxdWV1ZSgpOw0KICAgICAgICAgICAgICAgIGMu
aXNGdW5jdGlvbihmLm9sZCkgJiYgZi5vbGQuY2FsbCh0aGlzKQ0KICAgICAg
ICAgICAgfTsNCiAgICAgICAgICAgIHJldHVybiBmDQogICAgICAgIH0sDQog
ICAgICAgIGVhc2luZzogew0KICAgICAgICAgICAgbGluZWFyOiBmdW5jdGlv
biAoYSwgYiwgZCwgZikgew0KICAgICAgICAgICAgICAgIHJldHVybiBkICsg
ZiAqIGENCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBzd2luZzogZnVu
Y3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4g
KC1NYXRoLmNvcyhhICogTWF0aC5QSSkgLyAyICsgMC41KSAqIGYgKyBkDQog
ICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHRpbWVyczogW10s
DQogICAgICAgIGZ4OiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAg
ICAgdGhpcy5vcHRpb25zID0zRCBiOw0KICAgICAgICAgICAgdGhpcy5lbGVt
ID0zRCBhOw0KICAgICAgICAgICAgdGhpcy5wcm9wID0zRCBkOw0KICAgICAg
ICAgICAgaWYgKCFiLm9yaWcpIGIub3JpZyA9M0Qge30NCiAgICAgICAgfQ0K
ICAgIH0pOw0KICAgIGMuZngucHJvdG90eXBlID0zRCB7DQogICAgICAgIHVw
ZGF0ZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdGhpcy5vcHRpb25z
LnN0ZXAgJiYgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sID0N
CnRoaXMubm93LCB0aGlzKTsNCiAgICAgICAgICAgIChjLmZ4LnN0ZXBbdGhp
cy5wcm9wXSB8fCBjLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpOw0KICAgICAg
ICAgICAgaWYgKCh0aGlzLnByb3AgPTNEPTNEPTNEICJoZWlnaHQiIHx8IHRo
aXMucHJvcCA9M0Q9M0Q9M0QgPQ0KIndpZHRoIikgJiYgdGhpcy5lbGVtLnN0
eWxlKSB0aGlzLmVsZW0uc3R5bGUuZGlzcGxheSA9M0QgImJsb2NrIg0KICAg
ICAgICB9LA0KICAgICAgICBjdXI6IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICBpZiAodGhpcy5lbGVtW3RoaXMucHJvcF0gIT0zRCBudWxsICYmICgh
dGhpcy5lbGVtLnN0eWxlIHx8ID0NCnRoaXMuZWxlbS5zdHlsZVt0aGlzLnBy
b3BdID0zRD0zRCBudWxsKSkgcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3Bd
Ow0KICAgICAgICAgICAgcmV0dXJuIChhID0zRCBwYXJzZUZsb2F0KGMuY3Nz
KHRoaXMuZWxlbSwgdGhpcy5wcm9wLCBhKSkpICYmID0NCmEgPiAtMTAwMDAg
PyBhIDogcGFyc2VGbG9hdChjLmN1ckNTUyh0aGlzLmVsZW0sIHRoaXMucHJv
cCkpIHx8IDANCiAgICAgICAgfSwNCiAgICAgICAgY3VzdG9tOiBmdW5jdGlv
biAoYSwgYiwgZCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZihqKSB7DQog
ICAgICAgICAgICAgICAgcmV0dXJuIGUuc3RlcChqKQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgdGhpcy5zdGFydFRpbWUgPTNEIEooKTsNCiAgICAg
ICAgICAgIHRoaXMuc3RhcnQgPTNEIGE7DQogICAgICAgICAgICB0aGlzLmVu
ZCA9M0QgYjsNCiAgICAgICAgICAgIHRoaXMudW5pdCA9M0QgZCB8fCB0aGlz
LnVuaXQgfHwgInB4IjsNCiAgICAgICAgICAgIHRoaXMubm93ID0zRCB0aGlz
LnN0YXJ0Ow0KICAgICAgICAgICAgdGhpcy5wb3MgPTNEIHRoaXMuc3RhdGUg
PTNEIDA7DQogICAgICAgICAgICB2YXIgZSA9M0QgdGhpczsNCiAgICAgICAg
ICAgIGYuZWxlbSA9M0QgdGhpcy5lbGVtOw0KICAgICAgICAgICAgaWYgKGYo
KSAmJiBjLnRpbWVycy5wdXNoKGYpICYmICFXKSBXID0zRCA9DQpzZXRJbnRl
cnZhbChjLmZ4LnRpY2ssIDEzKQ0KICAgICAgICB9LA0KICAgICAgICBzaG93
OiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLm9wdGlvbnMub3Jp
Z1t0aGlzLnByb3BdID0zRCBjLnN0eWxlKHRoaXMuZWxlbSwgPQ0KdGhpcy5w
cm9wKTsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93ID0zRCB0cnVl
Ow0KICAgICAgICAgICAgdGhpcy5jdXN0b20odGhpcy5wcm9wID0zRD0zRD0z
RCAid2lkdGgiIHx8IHRoaXMucHJvcCA9DQo9M0Q9M0Q9M0QgImhlaWdodCIg
PyAxIDogMCwgdGhpcy5jdXIoKSk7DQogICAgICAgICAgICBjKHRoaXMuZWxl
bSkuc2hvdygpDQogICAgICAgIH0sDQogICAgICAgIGhpZGU6IGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJv
cF0gPTNEIGMuc3R5bGUodGhpcy5lbGVtLCA9DQp0aGlzLnByb3ApOw0KICAg
ICAgICAgICAgdGhpcy5vcHRpb25zLmhpZGUgPTNEIHRydWU7DQogICAgICAg
ICAgICB0aGlzLmN1c3RvbSh0aGlzLmN1cigpLCAwKQ0KICAgICAgICB9LA0K
ICAgICAgICBzdGVwOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgdmFy
IGIgPTNEIEooKSwNCiAgICAgICAgICAgICAgICBkID0zRCB0cnVlOw0KICAg
ICAgICAgICAgaWYgKGEgfHwgYiA+PTNEIHRoaXMub3B0aW9ucy5kdXJhdGlv
biArIHRoaXMuc3RhcnRUaW1lKSB7DQogICAgICAgICAgICAgICAgdGhpcy5u
b3cgPTNEDQogICAgICAgICAgICAgICAgdGhpcy5lbmQ7DQogICAgICAgICAg
ICAgICAgdGhpcy5wb3MgPTNEIHRoaXMuc3RhdGUgPTNEIDE7DQogICAgICAg
ICAgICAgICAgdGhpcy51cGRhdGUoKTsNCiAgICAgICAgICAgICAgICB0aGlz
Lm9wdGlvbnMuY3VyQW5pbVt0aGlzLnByb3BdID0zRCB0cnVlOw0KICAgICAg
ICAgICAgICAgIGZvciAodmFyIGYgaW4gdGhpcy5vcHRpb25zLmN1ckFuaW0p
IGlmID0NCih0aGlzLm9wdGlvbnMuY3VyQW5pbVtmXSAhPTNEPTNEIHRydWUp
IGQgPTNEIGZhbHNlOw0KICAgICAgICAgICAgICAgIGlmIChkKSB7DQogICAg
ICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzcGxheSAhPTNE
IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbS5z
dHlsZS5vdmVyZmxvdyA9M0QgPQ0KdGhpcy5vcHRpb25zLm92ZXJmbG93Ow0K
ICAgICAgICAgICAgICAgICAgICAgICAgYSA9M0QgYy5kYXRhKHRoaXMuZWxl
bSwgIm9sZGRpc3BsYXkiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuZWxlbS5zdHlsZS5kaXNwbGF5ID0zRCBhID8gYSA6ID0NCnRoaXMub3B0
aW9ucy5kaXNwbGF5Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMu
Y3NzKHRoaXMuZWxlbSwgImRpc3BsYXkiKSA9M0Q9M0Q9M0QgPQ0KIm5vbmUi
KSB0aGlzLmVsZW0uc3R5bGUuZGlzcGxheSA9M0QgImJsb2NrIg0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0
aW9ucy5oaWRlICYmIGModGhpcy5lbGVtKS5oaWRlKCk7DQogICAgICAgICAg
ICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGlkZSB8fCB0aGlzLm9wdGlv
bnMuc2hvdykgZm9yICh2YXIgPQ0KZSBpbiB0aGlzLm9wdGlvbnMuY3VyQW5p
bSkgYy5zdHlsZSh0aGlzLmVsZW0sIGUsIHRoaXMub3B0aW9ucy5vcmlnW2Vd
KTsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmNvbXBsZXRl
LmNhbGwodGhpcy5lbGVtKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2UNCiAgICAgICAgICAgIH0gZWxzZSB7DQog
ICAgICAgICAgICAgICAgZSA9M0QgYiAtIHRoaXMuc3RhcnRUaW1lOw0KICAg
ICAgICAgICAgICAgIHRoaXMuc3RhdGUgPTNEIGUgLyB0aGlzLm9wdGlvbnMu
ZHVyYXRpb247DQogICAgICAgICAgICAgICAgYSA9M0QgdGhpcy5vcHRpb25z
LmVhc2luZyB8fCAoYy5lYXNpbmcuc3dpbmcgPyAic3dpbmciIDogPQ0KImxp
bmVhciIpOw0KICAgICAgICAgICAgICAgIHRoaXMucG9zID0zRCBjLmVhc2lu
Z1t0aGlzLm9wdGlvbnMuc3BlY2lhbEVhc2luZyAmJiA9DQp0aGlzLm9wdGlv
bnMuc3BlY2lhbEVhc2luZ1t0aGlzLnByb3BdIHx8IGFdKHRoaXMuc3RhdGUs
IGUsIDAsIDEsID0NCnRoaXMub3B0aW9ucy5kdXJhdGlvbik7DQogICAgICAg
ICAgICAgICAgdGhpcy5ub3cgPTNEIHRoaXMuc3RhcnQgKyAodGhpcy5lbmQg
LSB0aGlzLnN0YXJ0KSAqID0NCnRoaXMucG9zOw0KICAgICAgICAgICAgICAg
IHRoaXMudXBkYXRlKCkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJl
dHVybiB0cnVlDQogICAgICAgIH0NCiAgICB9Ow0KICAgIGMuZXh0ZW5kKGMu
ZngsIHsNCiAgICAgICAgdGljazogZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgZm9yICh2YXIgYSA9M0QgYy50aW1lcnMsIGIgPTNEIDA7IGIgPCBhLmxl
bmd0aDsgYisrKSBhW2JdKCkgPQ0KfHwgYS5zcGxpY2UoYi0tLCAxKTsNCiAg
ICAgICAgICAgIGEubGVuZ3RoIHx8IGMuZnguc3RvcCgpDQogICAgICAgIH0s
DQogICAgICAgIHN0b3A6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoVyk7DQogICAgICAgICAgICBXID0zRCBudWxsDQogICAg
ICAgIH0sDQogICAgICAgIHNwZWVkczogew0KICAgICAgICAgICAgc2xvdzog
NjAwLA0KICAgICAgICAgICAgZmFzdDogMjAwLA0KICAgICAgICAgICAgX2Rl
ZmF1bHQ6IDQwMA0KICAgICAgICB9LA0KICAgICAgICBzdGVwOiB7DQogICAg
ICAgICAgICBvcGFjaXR5OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAg
ICAgIGMuc3R5bGUoYS5lbGVtLCAib3BhY2l0eSIsIGEubm93KQ0KICAgICAg
ICAgICAgfSwNCiAgICAgICAgICAgIF9kZWZhdWx0OiBmdW5jdGlvbiAoYSkg
ew0KICAgICAgICAgICAgICAgIGlmIChhLmVsZW0uc3R5bGUgJiYgYS5lbGVt
LnN0eWxlW2EucHJvcF0gIT0zRCBudWxsKSA9DQphLmVsZW0uc3R5bGVbYS5w
cm9wXSA9M0QgKGEucHJvcCA9M0Q9M0Q9M0QgIndpZHRoIiB8fCBhLnByb3Ag
PTNEPTNEPTNEID0NCiJoZWlnaHQiID8gTWF0aC5tYXgoMCwgYS5ub3cpIDog
YS5ub3cpICsgYS51bml0Ow0KICAgICAgICAgICAgICAgIGVsc2UgYS5lbGVt
W2EucHJvcF0gPTNEIGEubm93DQogICAgICAgICAgICB9DQogICAgICAgIH0N
CiAgICB9KTsNCiAgICBpZiAoYy5leHByICYmIGMuZXhwci5maWx0ZXJzKSBj
LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9M0QgZnVuY3Rpb24gPQ0KKGEpIHsN
CiAgICAgICAgcmV0dXJuIGMuZ3JlcChjLnRpbWVycywgZnVuY3Rpb24gKGIp
IHsNCiAgICAgICAgICAgIHJldHVybiBhID0zRD0zRD0zRCBiLmVsZW0NCiAg
ICAgICAgfSkubGVuZ3RoDQogICAgfTsNCiAgICBjLmZuLm9mZnNldCA9M0Qg
ImdldEJvdW5kaW5nQ2xpZW50UmVjdCIgaW4gcy5kb2N1bWVudEVsZW1lbnQg
Pw0KICAgIGZ1bmN0aW9uIChhKSB7DQogICAgICAgIHZhciBiID0zRCB0aGlz
WzBdOw0KICAgICAgICBpZiAoYSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
biAoZSkgew0KICAgICAgICAgICAgYy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMs
IGEsIGUpDQogICAgICAgIH0pOw0KICAgICAgICBpZiAoIWIgfHwgIWIub3du
ZXJEb2N1bWVudCkgcmV0dXJuIG51bGw7DQogICAgICAgIGlmIChiID0zRD0z
RD0zRCBiLm93bmVyRG9jdW1lbnQuYm9keSkgcmV0dXJuID0NCmMub2Zmc2V0
LmJvZHlPZmZzZXQoYik7DQogICAgICAgIHZhciBkID0zRCBiLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLA0KICAgICAgICAgICAgZiA9M0QgYi5vd25lckRv
Y3VtZW50Ow0KICAgICAgICBiID0zRCBmLmJvZHk7DQogICAgICAgIGYgPTNE
IGYuZG9jdW1lbnRFbGVtZW50Ow0KICAgICAgICByZXR1cm4gew0KICAgICAg
ICAgICAgdG9wOiBkLnRvcCArIChzZWxmLnBhZ2VZT2Zmc2V0IHx8IGMuc3Vw
cG9ydC5ib3hNb2RlbCAmJiA9DQpmLnNjcm9sbFRvcCB8fCBiLnNjcm9sbFRv
cCkgLSAoZi5jbGllbnRUb3AgfHwgYi5jbGllbnRUb3AgfHwgMCksDQogICAg
ICAgICAgICBsZWZ0OiBkLmxlZnQgKyAoc2VsZi5wYWdlWE9mZnNldCB8fCBj
LnN1cHBvcnQuYm94TW9kZWwgJiYgPQ0KZi5zY3JvbGxMZWZ0IHx8IGIuc2Ny
b2xsTGVmdCkgLSAoZi5jbGllbnRMZWZ0IHx8IGIuY2xpZW50TGVmdCB8fCAw
KQ0KICAgICAgICB9DQogICAgfSA6IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
IHZhciBiID0zRA0KICAgICAgICB0aGlzWzBdOw0KICAgICAgICBpZiAoYSkg
cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAocikgew0KICAgICAgICAgICAg
Yy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsIGEsIHIpDQogICAgICAgIH0pOw0K
ICAgICAgICBpZiAoIWIgfHwgIWIub3duZXJEb2N1bWVudCkgcmV0dXJuIG51
bGw7DQogICAgICAgIGlmIChiID0zRD0zRD0zRCBiLm93bmVyRG9jdW1lbnQu
Ym9keSkgcmV0dXJuID0NCmMub2Zmc2V0LmJvZHlPZmZzZXQoYik7DQogICAg
ICAgIGMub2Zmc2V0LmluaXRpYWxpemUoKTsNCiAgICAgICAgdmFyIGQgPTNE
IGIub2Zmc2V0UGFyZW50LA0KICAgICAgICAgICAgZiA9M0QgYiwNCiAgICAg
ICAgICAgIGUgPTNEIGIub3duZXJEb2N1bWVudCwNCiAgICAgICAgICAgIGos
IGkgPTNEIGUuZG9jdW1lbnRFbGVtZW50LA0KICAgICAgICAgICAgbyA9M0Qg
ZS5ib2R5Ow0KICAgICAgICBmID0zRCAoZSA9M0QgZS5kZWZhdWx0Vmlldykg
PyBlLmdldENvbXB1dGVkU3R5bGUoYiwgbnVsbCkgOiA9DQpiLmN1cnJlbnRT
dHlsZTsNCiAgICAgICAgZm9yICh2YXIgayA9M0QgYi5vZmZzZXRUb3AsIG4g
PTNEIGIub2Zmc2V0TGVmdDsNCiAgICAgICAgKGIgPTNEIGIucGFyZW50Tm9k
ZSkgJiYgYiAhPTNEPTNEIG8gJiYgYiAhPTNEPTNEIGk7KSB7DQogICAgICAg
ICAgICBpZiAoYy5vZmZzZXQuc3VwcG9ydHNGaXhlZFBvc2l0aW9uICYmIGYu
cG9zaXRpb24gPTNEPTNEPTNEID0NCiJmaXhlZCIpIGJyZWFrOw0KICAgICAg
ICAgICAgaiA9M0QgZSA/IGUuZ2V0Q29tcHV0ZWRTdHlsZShiLCBudWxsKSA6
IGIuY3VycmVudFN0eWxlOw0KICAgICAgICAgICAgayAtPTNEIGIuc2Nyb2xs
VG9wOw0KICAgICAgICAgICAgbiAtPTNEIGIuc2Nyb2xsTGVmdDsNCiAgICAg
ICAgICAgIGlmIChiID0zRD0zRD0zRCBkKSB7DQogICAgICAgICAgICAgICAg
ayArPTNEIGIub2Zmc2V0VG9wOw0KICAgICAgICAgICAgICAgIG4gKz0zRCBi
Lm9mZnNldExlZnQ7DQogICAgICAgICAgICAgICAgaWYgKGMub2Zmc2V0LmRv
ZXNOb3RBZGRCb3JkZXIgJiYgPQ0KIShjLm9mZnNldC5kb2VzQWRkQm9yZGVy
Rm9yVGFibGVBbmRDZWxscyAmJiA9DQovXnQoYWJsZXxkfGgpJC9pLnRlc3Qo
Yi5ub2RlTmFtZSkpKSB7DQogICAgICAgICAgICAgICAgICAgIGsgKz0zRCBw
YXJzZUZsb2F0KGouYm9yZGVyVG9wV2lkdGgpIHx8IDA7DQogICAgICAgICAg
ICAgICAgICAgIG4gKz0zRCBwYXJzZUZsb2F0KGouYm9yZGVyTGVmdFdpZHRo
KSB8fCAwDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGYg
PTNEIGQ7DQogICAgICAgICAgICAgICAgZCA9M0QgYi5vZmZzZXRQYXJlbnQN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChjLm9mZnNldC5zdWJ0
cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUgJiYgPQ0Kai5vdmVy
ZmxvdyAhPTNEPTNEICJ2aXNpYmxlIikgew0KICAgICAgICAgICAgICAgIGsg
Kz0zRCBwYXJzZUZsb2F0KGouYm9yZGVyVG9wV2lkdGgpIHx8IDA7DQogICAg
ICAgICAgICAgICAgbiArPTNEIHBhcnNlRmxvYXQoai5ib3JkZXJMZWZ0V2lk
dGgpIHx8IDANCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGYgPTNEIGoN
CiAgICAgICAgfQ0KICAgICAgICBpZiAoZi5wb3NpdGlvbiA9M0Q9M0Q9M0Qg
InJlbGF0aXZlIiB8fCBmLnBvc2l0aW9uID0zRD0zRD0zRCA9DQoic3RhdGlj
Iikgew0KICAgICAgICAgICAgayArPTNEIG8ub2Zmc2V0VG9wOw0KICAgICAg
ICAgICAgbiArPTNEIG8ub2Zmc2V0TGVmdA0KICAgICAgICB9DQogICAgICAg
IGlmIChjLm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24gJiYgZi5wb3Np
dGlvbiA9M0Q9M0Q9M0QgPQ0KImZpeGVkIikgew0KICAgICAgICAgICAgayAr
PTNEIE1hdGgubWF4KGkuc2Nyb2xsVG9wLCBvLnNjcm9sbFRvcCk7DQogICAg
ICAgICAgICBuICs9M0QgTWF0aC5tYXgoaS5zY3JvbGxMZWZ0LCBvLnNjcm9s
bExlZnQpDQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAg
ICAgIHRvcDogaywNCiAgICAgICAgICAgIGxlZnQ6IG4NCiAgICAgICAgfQ0K
ICAgIH07DQogICAgYy5vZmZzZXQgPTNEIHsNCiAgICAgICAgaW5pdGlhbGl6
ZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGEgPTNEIHMuYm9k
eSwNCiAgICAgICAgICAgICAgICBiID0zRCBzLmNyZWF0ZUVsZW1lbnQoImRp
diIpLA0KICAgICAgICAgICAgICAgIGQsIGYsIGUsIGogPTNEIHBhcnNlRmxv
YXQoYy5jdXJDU1MoYSwgIm1hcmdpblRvcCIsID0NCnRydWUpKSB8fCAwOw0K
ICAgICAgICAgICAgYy5leHRlbmQoYi5zdHlsZSwgew0KICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLA0KICAgICAgICAgICAgICAgIHRv
cDogMCwNCiAgICAgICAgICAgICAgICBsZWZ0OiAwLA0KICAgICAgICAgICAg
ICAgIG1hcmdpbjogMCwNCiAgICAgICAgICAgICAgICBib3JkZXI6IDAsDQog
ICAgICAgICAgICAgICAgd2lkdGg6ICIxcHgiLA0KICAgICAgICAgICAgICAg
IGhlaWdodDogIjFweCIsDQogICAgICAgICAgICAgICAgdmlzaWJpbGl0eTog
ImhpZGRlbiINCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgYi5pbm5l
ckhUTUwgPTNEICI8ZGl2ID0NCnN0eWxlPTNEJ3Bvc2l0aW9uOmFic29sdXRl
O3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkID0NCiMw
MDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4Oyc+PGRpdj48L2Rp
dj48L2Rpdj48dGFibGUgPQ0Kc3R5bGU9M0QncG9zaXRpb246YWJzb2x1dGU7
dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgPQ0KIzAw
MDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7JyBjZWxscGFkZGlu
Zz0zRCcwJyA9DQpjZWxsc3BhY2luZz0zRCcwJz48dHI+PHRkPjwvdGQ+PC90
cj48L3RhYmxlPiI7DQogICAgICAgICAgICBhLmluc2VydEJlZm9yZShiLCBh
LmZpcnN0Q2hpbGQpOw0KICAgICAgICAgICAgZCA9M0QgYi5maXJzdENoaWxk
Ow0KICAgICAgICAgICAgZiA9M0QgZC5maXJzdENoaWxkOw0KICAgICAgICAg
ICAgZSA9M0QgZC5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQ7
DQogICAgICAgICAgICB0aGlzLmRvZXNOb3RBZGRCb3JkZXIgPTNEIGYub2Zm
c2V0VG9wICE9M0Q9M0QgNTsNCiAgICAgICAgICAgIHRoaXMuZG9lc0FkZEJv
cmRlckZvclRhYmxlQW5kQ2VsbHMgPTNEIGUub2Zmc2V0VG9wID0zRD0zRD0z
RCA9DQo1Ow0KICAgICAgICAgICAgZi5zdHlsZS5wb3NpdGlvbiA9M0QgImZp
eGVkIjsNCiAgICAgICAgICAgIGYuc3R5bGUudG9wID0zRCAiMjBweCI7DQog
ICAgICAgICAgICB0aGlzLnN1cHBvcnRzRml4ZWRQb3NpdGlvbiA9M0QgZi5v
ZmZzZXRUb3AgPTNEPTNEPTNEIDIwIHx8ID0NCmYub2Zmc2V0VG9wID0zRD0z
RD0zRCAxNTsNCiAgICAgICAgICAgIGYuc3R5bGUucG9zaXRpb24gPTNEIGYu
c3R5bGUudG9wID0zRCAiIjsNCiAgICAgICAgICAgIGQuc3R5bGUub3ZlcmZs
b3cgPTNEICJoaWRkZW4iOw0KICAgICAgICAgICAgZC5zdHlsZS5wb3NpdGlv
biA9M0QgInJlbGF0aXZlIjsNCiAgICAgICAgICAgIHRoaXMuc3VidHJhY3Rz
Qm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlID0zRCBmLm9mZnNldFRvcCA9
DQo9M0Q9M0Q9M0QgLTU7DQogICAgICAgICAgICB0aGlzLmRvZXNOb3RJbmNs
dWRlTWFyZ2luSW5Cb2R5T2Zmc2V0ID0zRCBhLm9mZnNldFRvcCA9DQohPTNE
PTNEIGo7DQogICAgICAgICAgICBhLnJlbW92ZUNoaWxkKGIpOw0KICAgICAg
ICAgICAgYy5vZmZzZXQuaW5pdGlhbGl6ZSA9M0QgYy5ub29wDQogICAgICAg
IH0sDQogICAgICAgIGJvZHlPZmZzZXQ6IGZ1bmN0aW9uIChhKSB7DQogICAg
ICAgICAgICB2YXIgYiA9M0QgYS5vZmZzZXRUb3AsDQogICAgICAgICAgICAg
ICAgZCA9M0QgYS5vZmZzZXRMZWZ0Ow0KICAgICAgICAgICAgYy5vZmZzZXQu
aW5pdGlhbGl6ZSgpOw0KICAgICAgICAgICAgaWYgKGMub2Zmc2V0LmRvZXNO
b3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0KSB7DQogICAgICAgICAgICAg
ICAgYiArPTNEIHBhcnNlRmxvYXQoYy5jdXJDU1MoYSwgIm1hcmdpblRvcCIs
IHRydWUpKSB8fCAwOw0KICAgICAgICAgICAgICAgIGQgKz0zRCBwYXJzZUZs
b2F0KGMuY3VyQ1NTKGEsICJtYXJnaW5MZWZ0IiwgdHJ1ZSkpIHx8IDANCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAg
ICAgICAgdG9wOiBiLA0KICAgICAgICAgICAgICAgIGxlZnQ6IGQNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgc2V0T2Zmc2V0OiBmdW5j
dGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgaWYgKC9zdGF0aWMvLnRl
c3QoYy5jdXJDU1MoYSwgInBvc2l0aW9uIikpKSBhLnN0eWxlLnBvc2l0aW9u
ID0NCj0zRCAicmVsYXRpdmUiOw0KICAgICAgICAgICAgdmFyIGYgPTNEIGMo
YSksDQogICAgICAgICAgICAgICAgZSA9M0QgZi5vZmZzZXQoKSwNCiAgICAg
ICAgICAgICAgICBqID0zRCBwYXJzZUludChjLmN1ckNTUyhhLCAidG9wIiwg
dHJ1ZSksIDEwKSB8fCAwLA0KICAgICAgICAgICAgICAgIGkgPTNEIHBhcnNl
SW50KGMuY3VyQ1NTKGEsICJsZWZ0IiwgdHJ1ZSksIDEwKSB8fCAwOw0KICAg
ICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihiKSkgYiA9M0QgYi5jYWxsKGEs
IGQsIGUpOw0KICAgICAgICAgICAgZCA9M0Qgew0KICAgICAgICAgICAgICAg
IHRvcDogYi50b3AgLSBlLnRvcCArIGosDQogICAgICAgICAgICAgICAgbGVm
dDogYi5sZWZ0IC0gZS5sZWZ0ICsgaQ0KICAgICAgICAgICAgfTsNCiAgICAg
ICAgICAgICJ1c2luZyIgaW4gYiA/IGIudXNpbmcuY2FsbChhLCBkKSA6IGYu
Y3NzKGQpDQogICAgICAgIH0NCiAgICB9Ow0KICAgIGMuZm4uZXh0ZW5kKHsN
CiAgICAgICAgcG9zaXRpb246IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAg
IGlmICghdGhpc1swXSkgcmV0dXJuIG51bGw7DQogICAgICAgICAgICB2YXIg
YSA9M0QgdGhpc1swXSwNCiAgICAgICAgICAgICAgICBiID0zRCB0aGlzLm9m
ZnNldFBhcmVudCgpLA0KICAgICAgICAgICAgICAgIGQgPTNEIHRoaXMub2Zm
c2V0KCksDQogICAgICAgICAgICAgICAgZiA9M0QgL15ib2R5fGh0bWwkL2ku
dGVzdChiWzBdLm5vZGVOYW1lKSA/IHsNCiAgICAgICAgICAgICAgICB0b3A6
IDAsDQogICAgICAgICAgICAgICAgbGVmdDogMA0KICAgICAgICAgICAgfSA6
IGIub2Zmc2V0KCk7DQogICAgICAgICAgICBkLnRvcCAtPTNEIHBhcnNlRmxv
YXQoYy5jdXJDU1MoYSwgIm1hcmdpblRvcCIsIHRydWUpKSB8fCAwOw0KICAg
ICAgICAgICAgZC5sZWZ0IC09M0QgcGFyc2VGbG9hdChjLmN1ckNTUyhhLCAi
bWFyZ2luTGVmdCIsIHRydWUpKSB8fCA9DQowOw0KICAgICAgICAgICAgZi50
b3AgKz0zRCBwYXJzZUZsb2F0KGMuY3VyQ1NTKGJbMF0sICJib3JkZXJUb3BX
aWR0aCIsID0NCnRydWUpKSB8fCAwOw0KICAgICAgICAgICAgZi5sZWZ0ICs9
M0QgcGFyc2VGbG9hdChjLmN1ckNTUyhiWzBdLCAiYm9yZGVyTGVmdFdpZHRo
IiwgPQ0KdHJ1ZSkpIHx8IDA7DQogICAgICAgICAgICByZXR1cm4gew0KICAg
ICAgICAgICAgICAgIHRvcDogZC50b3AgLSBmLnRvcCwNCiAgICAgICAgICAg
ICAgICBsZWZ0OiBkLmxlZnQgLSBmLmxlZnQNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfSwNCiAgICAgICAgb2Zmc2V0UGFyZW50OiBmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPTNEIHRoaXMub2Zmc2V0UGFy
ZW50IHx8IHMuYm9keTsgYSAmJiA9DQohL15ib2R5fGh0bWwkL2kudGVzdChh
Lm5vZGVOYW1lKSAmJiBjLmNzcyhhLCAicG9zaXRpb24iKSA9M0Q9M0Q9M0Qg
PQ0KInN0YXRpYyI7KSBhID0zRCBhLm9mZnNldFBhcmVudDsNCiAgICAgICAg
ICAgICAgICByZXR1cm4gYQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfQ0K
ICAgIH0pOw0KICAgIGMuZWFjaChbIkxlZnQiLCAiVG9wIl0sIGZ1bmN0aW9u
IChhLCBiKSB7DQogICAgICAgIHZhciBkID0zRCAic2Nyb2xsIiArIGI7DQog
ICAgICAgIGMuZm5bZF0gPTNEIGZ1bmN0aW9uIChmKSB7DQogICAgICAgICAg
ICB2YXIgZSA9M0QgdGhpc1swXSwNCiAgICAgICAgICAgICAgICBqOw0KICAg
ICAgICAgICAgaWYgKCFlKSByZXR1cm4gbnVsbDsNCiAgICAgICAgICAgIGlm
IChmICE9M0Q9M0QgdykgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICAgICAgaWYgKGogPTNEIHdhKHRoaXMpKSBqLnNjcm9s
bFRvKCFhID8gZiA6ID0NCmMoaikuc2Nyb2xsTGVmdCgpLCBhID8gZiA6IGMo
aikuc2Nyb2xsVG9wKCkpOw0KICAgICAgICAgICAgICAgIGVsc2UgdGhpc1tk
XSA9M0QgZg0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBlbHNlIHJl
dHVybiAoaiA9M0Qgd2EoZSkpID8gInBhZ2VYT2Zmc2V0IiBpbiBqID8galth
ID8gPQ0KInBhZ2VZT2Zmc2V0IiA6ICJwYWdlWE9mZnNldCJdIDogYy5zdXBw
b3J0LmJveE1vZGVsICYmID0NCmouZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
W2RdIHx8IGouZG9jdW1lbnQuYm9keVtkXSA6IGVbZF0NCiAgICAgICAgfQ0K
ICAgIH0pOw0KICAgIGMuZWFjaChbIkhlaWdodCIsICJXaWR0aCJdLCBmdW5j
dGlvbiAoYSwgYikgew0KICAgICAgICB2YXIgZCA9M0QgYi50b0xvd2VyQ2Fz
ZSgpOw0KICAgICAgICBjLmZuWyJpbm5lciIgKyBiXSA9M0QgZnVuY3Rpb24g
KCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXNbMF0gPyBjLmNzcyh0aGlz
WzBdLCBkLCBmYWxzZSwgInBhZGRpbmciKSA6IG51bGwNCiAgICAgICAgfTsN
CiAgICAgICAgYy5mblsib3V0ZXIiICsgYl0gPTNEIGZ1bmN0aW9uIChmKSB7
DQogICAgICAgICAgICByZXR1cm4gdGhpc1swXSA/IGMuY3NzKHRoaXNbMF0s
IGQsIGZhbHNlLCBmID8gIm1hcmdpbiIgOiA9DQoiYm9yZGVyIikgOiBudWxs
DQogICAgICAgIH07DQogICAgICAgIGMuZm5bZF0gPTNEIGZ1bmN0aW9uIChm
KSB7DQogICAgICAgICAgICB2YXIgZSA9M0QgdGhpc1swXTsNCiAgICAgICAg
ICAgIGlmICghZSkgcmV0dXJuIGYgPTNEPTNEIG51bGwgPyBudWxsIDogdGhp
czsNCiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rpb24oZikpIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24gKGopIHsNCiAgICAgICAgICAgICAgICB2YXIg
aSA9M0QgYyh0aGlzKTsNCiAgICAgICAgICAgICAgICBpW2RdKGYuY2FsbCh0
aGlzLCBqLCBpW2RdKCkpKQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAg
ICByZXR1cm4gInNjcm9sbFRvIiBpbiBlICYmIGUuZG9jdW1lbnQgPyBlLmRv
Y3VtZW50LmNvbXBhdE1vZGUgPQ0KPTNEPTNEPTNEICJDU1MxQ29tcGF0IiAm
JiBlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IiArIGJdIHx8
ID0NCmUuZG9jdW1lbnQuYm9keVsiY2xpZW50IiArIGJdIDogZS5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgOSA/ID0NCk1hdGgubWF4KGUuZG9jdW1lbnRFbGVtZW50
WyJjbGllbnQiICsgYl0sIGUuYm9keVsic2Nyb2xsIiArIGJdLCA9DQplLmRv
Y3VtZW50RWxlbWVudFsic2Nyb2xsIiArIGJdLCBlLmJvZHlbIm9mZnNldCIg
KyBiXSwgPQ0KZS5kb2N1bWVudEVsZW1lbnRbIm9mZnNldCIgKyBiXSkgOiBm
ID0zRD0zRD0zRCB3ID8gYy5jc3MoZSwgZCkgOiA9DQp0aGlzLmNzcyhkLCB0
eXBlb2YgZiA9M0Q9M0Q9M0QgInN0cmluZyIgPyBmIDogZiArICJweCIpDQog
ICAgICAgIH0NCiAgICB9KTsNCiAgICBBLmpRdWVyeSA9M0QgQS4kID0zRCBj
DQp9KSh3aW5kb3cpOw0KDQoNCg0KLyohDQogKiBqUXVlcnkgVUkgMS44DQog
Kg0KICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8v
anF1ZXJ5dWkuY29tL2Fib3V0KQ0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0
aGUgTUlUIChNSVQtTElDRU5TRS50eHQpDQogKiBhbmQgR1BMIChHUEwtTElD
RU5TRS50eHQpIGxpY2Vuc2VzLg0KICoNCiAqIGh0dHA6Ly9kb2NzLmpxdWVy
eS5jb20vVUkNCiAqLw0KLyoNCiAqIGpRdWVyeSBVSSAxLjgNCiAqDQogKiBD
b3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1
aS5jb20vYWJvdXQpDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQg
KE1JVC1MSUNFTlNFLnR4dCkNCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4
dCkgbGljZW5zZXMuDQogKg0KICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9V
SQ0KICovDQpqUXVlcnkudWl8fChmdW5jdGlvbihhKXthLnVpPTNEe3ZlcnNp
b246IjEuOCIscGx1Z2luOnthZGQ6ZnVuY3Rpb24oYyxkLGYpPQ0Ke3ZhciBl
PTNEYS51aVtjXS5wcm90b3R5cGU7Zm9yKHZhciBiIGluID0NCmYpe2UucGx1
Z2luc1tiXT0zRGUucGx1Z2luc1tiXXx8W107ZS5wbHVnaW5zW2JdLnB1c2go
W2QsZltiXV0pfX0sY2FsbDpmdW49DQpjdGlvbihiLGQsYyl7dmFyID0NCmY9
M0RiLnBsdWdpbnNbZF07aWYoIWZ8fCFiLmVsZW1lbnRbMF0ucGFyZW50Tm9k
ZSl7cmV0dXJufWZvcih2YXIgPQ0KZT0zRDA7ZTxmLmxlbmd0aDtlKyspe2lm
KGIub3B0aW9uc1tmW2VdWzBdXSl7ZltlXVsxXS5hcHBseShiLmVsZW1lbnQs
Yyl9fT0NCn19LGNvbnRhaW5zOmZ1bmN0aW9uKGQsYyl7cmV0dXJuID0NCmRv
Y3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2QuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24oYykmMTY6ZCE9M0Q9M0Q9DQpjJiZkLmNvbnRhaW5zKGMp
fSxoYXNTY3JvbGw6ZnVuY3Rpb24oZSxjKXtpZihhKGUpLmNzcygib3ZlcmZs
b3ciKT0zRD0zRCJoPQ0KaWRkZW4iKXtyZXR1cm4gZmFsc2V9dmFyID0NCmI9
M0QoYyYmYz0zRD0zRCJsZWZ0Iik/InNjcm9sbExlZnQiOiJzY3JvbGxUb3Ai
LGQ9M0RmYWxzZTtpZihlW2JdPjApe3JldHU9DQpybiB0cnVlfWVbYl09M0Qx
O2Q9M0QoZVtiXT4wKTtlW2JdPTNEMDtyZXR1cm4gPQ0KZH0saXNPdmVyQXhp
czpmdW5jdGlvbihjLGIsZCl7cmV0dXJuKGM+YikmJihjPChiK2QpKX0saXNP
dmVyOmZ1bmN0aW9uKGcsYz0NCixmLGUsYixkKXtyZXR1cm4gPQ0KYS51aS5p
c092ZXJBeGlzKGcsZixiKSYmYS51aS5pc092ZXJBeGlzKGMsZSxkKX0sa2V5
Q29kZTp7QkFDS1NQQUNFOjgsQ0FQUz0NCl9MT0NLOjIwLENPTU1BOjE4OCxD
T05UUk9MOjE3LERFTEVURTo0NixET1dOOjQwLEVORDozNSxFTlRFUjoxMyxF
U0NBUEU6Mjc9DQosSE9NRTozNixJTlNFUlQ6NDUsTEVGVDozNyxOVU1QQURf
QUREOjEwNyxOVU1QQURfREVDSU1BTDoxMTAsTlVNUEFEX0RJVklEPQ0KRTox
MTEsTlVNUEFEX0VOVEVSOjEwOCxOVU1QQURfTVVMVElQTFk6MTA2LE5VTVBB
RF9TVUJUUkFDVDoxMDksUEFHRV9ET1dOOj0NCjM0LFBBR0VfVVA6MzMsUEVS
SU9EOjE5MCxSSUdIVDozOSxTSElGVDoxNixTUEFDRTozMixUQUI6OSxVUDoz
OH19O2EuZm4uZXg9DQp0ZW5kKHtfZm9jdXM6YS5mbi5mb2N1cyxmb2N1czpm
dW5jdGlvbihiLGMpe3JldHVybiB0eXBlb2YgPQ0KYj0zRD0zRD0zRCJudW1i
ZXIiP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciA9DQpkPTNEdGhpcztzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7YShkKS5mb2N1cygpOyhjJiZjLmNhbGwoZCkp
fSxiKX0pOnRoaXMuX2ZvPQ0KY3VzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0s
ZW5hYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuID0NCnRoaXMuYXR0
cigidW5zZWxlY3RhYmxlIiwib2ZmIikuY3NzKCJNb3pVc2VyU2VsZWN0Iiwi
IikudW5iaW5kKCJzZWxlY3RzdGE9DQpydC51aSIpfSxkaXNhYmxlU2VsZWN0
aW9uOmZ1bmN0aW9uKCl7cmV0dXJuID0NCnRoaXMuYXR0cigidW5zZWxlY3Rh
YmxlIiwib24iKS5jc3MoIk1velVzZXJTZWxlY3QiLCJub25lIikuYmluZCgi
c2VsZWN0c3Q9DQphcnQudWkiLGZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSl9
LHNjcm9sbFBhcmVudDpmdW5jdGlvbigpe3ZhciA9DQpiO2lmKChhLmJyb3dz
ZXIubXNpZSYmKC8oc3RhdGljfHJlbGF0aXZlKS8pLnRlc3QodGhpcy5jc3Mo
InBvc2l0aW9uIikpKXx8PQ0KKC9hYnNvbHV0ZS8pLnRlc3QodGhpcy5jc3Mo
InBvc2l0aW9uIikpKXtiPTNEdGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0
aT0NCm9uKCl7cmV0dXJuKC8ocmVsYXRpdmV8YWJzb2x1dGV8Zml4ZWQpLyku
dGVzdChhLmN1ckNTUyh0aGlzLCJwb3NpdGlvbiIsMSk9DQopJiYoLyhhdXRv
fHNjcm9sbCkvKS50ZXN0KGEuY3VyQ1NTKHRoaXMsIm92ZXJmbG93IiwxKSth
LmN1ckNTUyh0aGlzLCJvdmVyPQ0KZmxvdy15IiwxKSthLmN1ckNTUyh0aGlz
LCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKX1lbHNle2I9M0R0aGlzLnBhcmVu
dHMoKT0NCi5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4oLyhhdXRvfHNjcm9s
bCkvKS50ZXN0KGEuY3VyQ1NTKHRoaXMsIm92ZXJmbG93Iiw9DQoxKSthLmN1
ckNTUyh0aGlzLCJvdmVyZmxvdy15IiwxKSthLmN1ckNTUyh0aGlzLCJvdmVy
Zmxvdy14IiwxKSl9KS5lcSgwKX1yPQ0KZXR1cm4oL2ZpeGVkLykudGVzdCh0
aGlzLmNzcygicG9zaXRpb24iKSl8fCFiLmxlbmd0aD9hKGRvY3VtZW50KTpi
fSx6SW5kZT0NCng6ZnVuY3Rpb24oZSl7aWYoZSE9M0Q9M0R1bmRlZmluZWQp
e3JldHVybiA9DQp0aGlzLmNzcygiekluZGV4IixlKX1pZih0aGlzLmxlbmd0
aCl7dmFyID0NCmM9M0RhKHRoaXNbMF0pLGIsZDt3aGlsZShjLmxlbmd0aCYm
Y1swXSE9M0Q9M0Rkb2N1bWVudCl7Yj0zRGMuY3NzKCJwb3NpdGk9DQpvbiIp
O2lmKGI9M0Q9M0QiYWJzb2x1dGUifHxiPTNEPTNEInJlbGF0aXZlInx8Yj0z
RD0zRCJmaXhlZCIpe2Q9M0RwYXJzZUluPQ0KdChjLmNzcygiekluZGV4Iikp
O2lmKCFpc05hTihkKSYmZCE9M0QwKXtyZXR1cm4gPQ0KZH19Yz0zRGMucGFy
ZW50KCl9fXJldHVybiA9DQowfX0pO2EuZXh0ZW5kKGEuZXhwclsiOiJdLHtk
YXRhOmZ1bmN0aW9uKGQsYyxiKXtyZXR1cm4gPQ0KISFhLmRhdGEoZCxiWzNd
KX0sZm9jdXNhYmxlOmZ1bmN0aW9uKGMpe3ZhciA9DQpkPTNEYy5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpLGI9M0RhLmF0dHIoYywidGFiaW5kZXgiKTtyZXR1
cm4oL2lucHV0fHNlbGVjPQ0KdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50
ZXN0KGQpPyFjLmRpc2FibGVkOiJhIj0zRD0zRGR8fCJhcmVhIj0zRD0zRGQ/
Yz0NCi5ocmVmfHwhaXNOYU4oYik6IWlzTmFOKGIpKSYmIWEoYylbImFyZWEi
PTNEPTNEZD8icGFyZW50cyI6ImNsb3Nlc3QiXSgiOmg9DQppZGRlbiIpLmxl
bmd0aH0sdGFiYmFibGU6ZnVuY3Rpb24oYyl7dmFyID0NCmI9M0RhLmF0dHIo
YywidGFiaW5kZXgiKTtyZXR1cm4oaXNOYU4oYil8fGI+PTNEMCkmJmEoYyku
aXMoIjpmb2N1c2FibGUiKX09DQp9KX0pKGpRdWVyeSk7Oy8qIQ0KICogalF1
ZXJ5IFVJIFdpZGdldCAxLjgNCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMTAg
QVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpDQogKiBE
dWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkN
CiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuDQogKg0K
ICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9XaWRnZXQNCiAqLw0KLyoN
CiAqIGpRdWVyeSBVSSBXaWRnZXQgMS44DQogKg0KICogQ29weXJpZ2h0IChj
KSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0
KQ0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5T
RS50eHQpDQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2Vz
Lg0KICoNCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvV2lkZ2V0DQog
Ki8NCihmdW5jdGlvbihiKXt2YXIgYT0zRGIuZm4ucmVtb3ZlO2IuZm4ucmVt
b3ZlPTNEZnVuY3Rpb24oYyxkKXtyZXR1cm4gPQ0KdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7aWYoIWQpe2lmKCFjfHxiLmZpbHRlcihjLFt0aGlzXSkubGVuZ3Ro
KXtiKCIqIix0aGlzKT0NCi5hZGQodGhpcykuZWFjaChmdW5jdGlvbigpe2Io
dGhpcykudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpfSl9fXJldHVybiA9DQph
LmNhbGwoYih0aGlzKSxjLGQpfSl9O2Iud2lkZ2V0PTNEZnVuY3Rpb24oZCxm
LGMpe3ZhciA9DQplPTNEZC5zcGxpdCgiLiIpWzBdLGg7ZD0zRGQuc3BsaXQo
Ii4iKVsxXTtoPTNEZSsiLSIrZDtpZighYyl7Yz0zRGY7Zj0zRGIuPQ0KV2lk
Z2V0fWIuZXhwclsiOiJdW2hdPTNEZnVuY3Rpb24oaSl7cmV0dXJuID0NCiEh
Yi5kYXRhKGksZCl9O2JbZV09M0RiW2VdfHx7fTtiW2VdW2RdPTNEZnVuY3Rp
b24oaSxqKXtpZihhcmd1bWVudHMubGVuZ3Q9DQpoKXt0aGlzLl9jcmVhdGVX
aWRnZXQoaSxqKX19O3ZhciBnPTNEbmV3ID0NCmYoKTtnLm9wdGlvbnM9M0Ri
LmV4dGVuZCh7fSxnLm9wdGlvbnMpO2JbZV1bZF0ucHJvdG90eXBlPTNEYi5l
eHRlbmQodHJ1ZSw9DQpnLHtuYW1lc3BhY2U6ZSx3aWRnZXROYW1lOmQsd2lk
Z2V0RXZlbnRQcmVmaXg6YltlXVtkXS5wcm90b3R5cGUud2lkZ2V0RXZlPQ0K
bnRQcmVmaXh8fGQsd2lkZ2V0QmFzZUNsYXNzOmh9LGMpO2Iud2lkZ2V0LmJy
aWRnZShkLGJbZV1bZF0pfTtiLndpZGdldC5icj0NCmlkZ2U9M0RmdW5jdGlv
bihkLGMpe2IuZm5bZF09M0RmdW5jdGlvbihnKXt2YXIgZT0zRHR5cGVvZiA9
DQpnPTNEPTNEPTNEInN0cmluZyIsZj0zREFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKGFyZ3VtZW50cywxKSxoPTNEdGhpcztnPQ0KPTNEIWUmJmYubGVu
Z3RoP2IuZXh0ZW5kLmFwcGx5KG51bGwsW3RydWUsZ10uY29uY2F0KGYpKTpn
O2lmKGUmJmcuc3Vic3RyaT0NCm5nKDAsMSk9M0Q9M0Q9M0QiXyIpe3JldHVy
biBofWlmKGUpe3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciA9DQppPTNEYi5k
YXRhKHRoaXMsZCksaj0zRGkmJmIuaXNGdW5jdGlvbihpW2ddKT9pW2ddLmFw
cGx5KGksZik6aTtpZihqIT0zRD0zRD0NCmkmJmohPTNEPTNEdW5kZWZpbmVk
KXtoPTNEajtyZXR1cm4gPQ0KZmFsc2V9fSl9ZWxzZXt0aGlzLmVhY2goZnVu
Y3Rpb24oKXt2YXIgPQ0KaT0zRGIuZGF0YSh0aGlzLGQpO2lmKGkpe2lmKGcp
e2kub3B0aW9uKGcpfWkuX2luaXQoKX1lbHNle2IuZGF0YSh0aGlzLGQsbj0N
CmV3IGMoZyx0aGlzKSl9fSl9cmV0dXJuID0NCmh9fTtiLldpZGdldD0zRGZ1
bmN0aW9uKGMsZCl7aWYoYXJndW1lbnRzLmxlbmd0aCl7dGhpcy5fY3JlYXRl
V2lkZ2V0KGMsZCk9DQp9fTtiLldpZGdldC5wcm90b3R5cGU9M0R7d2lkZ2V0
TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixvcHRpb25zPQ0K
OntkaXNhYmxlZDpmYWxzZX0sX2NyZWF0ZVdpZGdldDpmdW5jdGlvbihkLGUp
e3RoaXMuZWxlbWVudD0zRGIoZSkuZGF0YSh0aD0NCmlzLndpZGdldE5hbWUs
dGhpcyk7dGhpcy5vcHRpb25zPTNEYi5leHRlbmQodHJ1ZSx7fSx0aGlzLm9w
dGlvbnMsYi5tZXRhZGE9DQp0YSYmYi5tZXRhZGF0YS5nZXQoZSlbdGhpcy53
aWRnZXROYW1lXSxkKTt2YXIgPQ0KYz0zRHRoaXM7dGhpcy5lbGVtZW50LmJp
bmQoInJlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbigpe2MuZGVz
dHJveT0NCigpfSk7dGhpcy5fY3JlYXRlKCk7dGhpcy5faW5pdCgpfSxfY3Jl
YXRlOmZ1bmN0aW9uKCl7fSxfaW5pdDpmdW5jdGlvbigpe309DQosZGVzdHJv
eTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lk
Z2V0TmFtZSkucmVtb3ZlRGF0YSh0PQ0KaGlzLndpZGdldE5hbWUpO3RoaXMu
d2lkZ2V0KCkudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpLnJlbW92ZUF0
dHIoImFyaT0NCmEtZGlzYWJsZWQiKS5yZW1vdmVDbGFzcyh0aGlzLndpZGdl
dEJhc2VDbGFzcysiLWRpc2FibGVkID0NCiIrdGhpcy5uYW1lc3BhY2UrIi1z
dGF0ZS1kaXNhYmxlZCIpfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gPQ0K
dGhpcy5lbGVtZW50fSxvcHRpb246ZnVuY3Rpb24oZSxmKXt2YXIgPQ0KZD0z
RGUsYz0zRHRoaXM7aWYoYXJndW1lbnRzLmxlbmd0aD0zRD0zRD0zRDApe3Jl
dHVybiA9DQpiLmV4dGVuZCh7fSxjLm9wdGlvbnMpfWlmKHR5cGVvZiA9DQpl
PTNEPTNEPTNEInN0cmluZyIpe2lmKGY9M0Q9M0Q9M0R1bmRlZmluZWQpe3Jl
dHVybiA9DQp0aGlzLm9wdGlvbnNbZV19ZD0zRHt9O2RbZV09M0RmfWIuZWFj
aChkLGZ1bmN0aW9uKGcsaCl7Yy5fc2V0T3B0aW9uKGcsaCl9PQ0KKTtyZXR1
cm4gPQ0KY30sX3NldE9wdGlvbjpmdW5jdGlvbihjLGQpe3RoaXMub3B0aW9u
c1tjXT0zRGQ7aWYoYz0zRD0zRD0zRCJkaXNhYmxlZCIpez0NCnRoaXMud2lk
Z2V0KClbZD8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKHRoaXMud2lkZ2V0
QmFzZUNsYXNzKyItZGlzYWJsZWQ9DQogIit0aGlzLm5hbWVzcGFjZSsiLXN0
YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsZCl9cmV0dXJu
ID0NCnRoaXN9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiA9DQp0aGlzLl9z
ZXRPcHRpb24oImRpc2FibGVkIixmYWxzZSl9LGRpc2FibGU6ZnVuY3Rpb24o
KXtyZXR1cm4gPQ0KdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdHJ1ZSl9
LF90cmlnZ2VyOmZ1bmN0aW9uKGQsZSxmKXt2YXIgPQ0KaD0zRHRoaXMub3B0
aW9uc1tkXTtlPTNEYi5FdmVudChlKTtlLnR5cGU9M0QoZD0zRD0zRD0zRHRo
aXMud2lkZ2V0RXZlbnRQcj0NCmVmaXg/ZDp0aGlzLndpZGdldEV2ZW50UHJl
Zml4K2QpLnRvTG93ZXJDYXNlKCk7Zj0zRGZ8fHt9O2lmKGUub3JpZ2luYWxF
dmU9DQpudCl7Zm9yKHZhciA9DQpjPTNEYi5ldmVudC5wcm9wcy5sZW5ndGgs
ZztjOyl7Zz0zRGIuZXZlbnQucHJvcHNbLS1jXTtlW2ddPTNEZS5vcmlnaW5h
bEV2PQ0KZW50W2ddfX10aGlzLmVsZW1lbnQudHJpZ2dlcihlLGYpO3JldHVy
biA9DQohKGIuaXNGdW5jdGlvbihoKSYmaC5jYWxsKHRoaXMuZWxlbWVudFsw
XSxlLGYpPTNEPTNEPTNEZmFsc2V8fGUuaXNEZWZhdWx0PQ0KUHJldmVudGVk
KCkpfX19KShqUXVlcnkpOzsvKg0KICogalF1ZXJ5IFVJIEFjY29yZGlvbiAx
LjgNCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0
dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpDQogKiBEdWFsIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkNCiAqIGFuZCBHUEwgKEdQ
TC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuDQogKg0KICogaHR0cDovL2RvY3Mu
anF1ZXJ5LmNvbS9VSS9BY2NvcmRpb24NCiAqDQogKiBEZXBlbmRzOg0KICoJ
anF1ZXJ5LnVpLmNvcmUuanMNCiAqCWpxdWVyeS51aS53aWRnZXQuanMNCiAq
Lw0KKGZ1bmN0aW9uKGEpe2Eud2lkZ2V0KCJ1aS5hY2NvcmRpb24iLHtvcHRp
b25zOnthY3RpdmU6MCxhbmltYXRlZDoic2xpZGUiLD0NCmF1dG9IZWlnaHQ6
ZmFsc2UsY2xlYXJTdHlsZTpmYWxzZSxjb2xsYXBzaWJsZTpmYWxzZSxldmVu
dDoiY2xpY2siLGZpbGxTcGE9DQpjZTpmYWxzZSxoZWFkZXI6Ij4gbGkgPiA6
Zmlyc3QtY2hpbGQsPiA9DQo6bm90KGxpKTpldmVuIixpY29uczp7aGVhZGVy
OiJ1aS1pY29uLXRyaWFuZ2xlLTEtZSIsaGVhZGVyU2VsZWN0ZWQ6InVpLWlj
PQ0Kb24tdHJpYW5nbGUtMS1zIn0sbmF2aWdhdGlvbjpmYWxzZSxuYXZpZ2F0
aW9uRmlsdGVyOmZ1bmN0aW9uKCl7cmV0dXJuID0NCnRoaXMuaHJlZi50b0xv
d2VyQ2FzZSgpPTNEPTNEbG9jYXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpfX0s
X2NyZWF0ZTpmdW5jdGk9DQpvbigpe3ZhciA9DQpkPTNEdGhpcy5vcHRpb25z
LGI9M0R0aGlzO3RoaXMucnVubmluZz0zRDA7dGhpcy5lbGVtZW50LmFkZENs
YXNzKCJ1aS1hY2NvPQ0KcmRpb24gdWktd2lkZ2V0ID0NCnVpLWhlbHBlci1y
ZXNldCIpO2lmKHRoaXMuZWxlbWVudFswXS5ub2RlTmFtZT0zRD0zRCJVTCIp
e3RoaXMuZWxlbWVudC5jaGk9DQpsZHJlbigibGkiKS5hZGRDbGFzcygidWkt
YWNjb3JkaW9uLWxpLWZpeCIpfXRoaXMuaGVhZGVycz0zRHRoaXMuZWxlbWVu
dC5mPQ0KaW5kKGQuaGVhZGVyKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWhl
YWRlciB1aS1oZWxwZXItcmVzZXQgPQ0KdWktc3RhdGUtZGVmYXVsdCA9DQp1
aS1jb3JuZXItYWxsIikuYmluZCgibW91c2VlbnRlci5hY2NvcmRpb24iLGZ1
bmN0aW9uKCl7YSh0aGlzKS5hZGRDbGFzcygiPQ0KdWktc3RhdGUtaG92ZXIi
KX0pLmJpbmQoIm1vdXNlbGVhdmUuYWNjb3JkaW9uIixmdW5jdGlvbigpe2Eo
dGhpcykucmVtb3ZlQz0NCmxhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5iaW5k
KCJmb2N1cy5hY2NvcmRpb24iLGZ1bmN0aW9uKCl7YSh0aGlzKS5hZGRDbGE9
DQpzcygidWktc3RhdGUtZm9jdXMiKX0pLmJpbmQoImJsdXIuYWNjb3JkaW9u
IixmdW5jdGlvbigpe2EodGhpcykucmVtb3ZlQ2xhPQ0Kc3MoInVpLXN0YXRl
LWZvY3VzIil9KTt0aGlzLmhlYWRlcnMubmV4dCgpLmFkZENsYXNzKCJ1aS1h
Y2NvcmRpb24tY29udGVudD0NCiB1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0
LWNvbnRlbnQgPQ0KdWktY29ybmVyLWJvdHRvbSIpO2lmKGQubmF2aWdhdGlv
bil7dmFyID0NCmM9M0R0aGlzLmVsZW1lbnQuZmluZCgiYSIpLmZpbHRlcihk
Lm5hdmlnYXRpb25GaWx0ZXIpO2lmKGMubGVuZ3RoKXt2YXIgPQ0KZT0zRGMu
Y2xvc2VzdCgiLnVpLWFjY29yZGlvbi1oZWFkZXIiKTtpZihlLmxlbmd0aCl7
dGhpcy5hY3RpdmU9M0RlfWVsc2V7dD0NCmhpcy5hY3RpdmU9M0RjLmNsb3Nl
c3QoIi51aS1hY2NvcmRpb24tY29udGVudCIpLnByZXYoKX19fXRoaXMuYWN0
aXZlPTNEdGg9DQppcy5fZmluZEFjdGl2ZSh0aGlzLmFjdGl2ZXx8ZC5hY3Rp
dmUpLnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IikudG9nPQ0KZ2xl
Q2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLnRvZ2dsZUNsYXNzKCJ1aS1jb3Ju
ZXItYWxsIikudG9nZ2xlQ2xhc3MoInVpLT0NCmNvcm5lci10b3AiKTt0aGlz
LmFjdGl2ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50
LWFjdGl2ZSIpO3Q9DQpoaXMuX2NyZWF0ZUljb25zKCk7aWYoYS5icm93c2Vy
Lm1zaWUpe3RoaXMuZWxlbWVudC5maW5kKCJhIikuY3NzKCJ6b29tIiwiPQ0K
MSIpfXRoaXMucmVzaXplKCk7dGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJ0
YWJsaXN0Iik7dGhpcy5oZWFkZXJzLmF0dHIoIj0NCnJvbGUiLCJ0YWIiKS5i
aW5kKCJrZXlkb3duIixmdW5jdGlvbihmKXtyZXR1cm4gPQ0KYi5fa2V5ZG93
bihmKX0pLm5leHQoKS5hdHRyKCJyb2xlIiwidGFicGFuZWwiKTt0aGlzLmhl
YWRlcnMubm90KHRoaXMuYWN0aT0NCnZlfHwiIikuYXR0cigiYXJpYS1leHBh
bmRlZCIsImZhbHNlIikuYXR0cigidGFiSW5kZXgiLCItMSIpLm5leHQoKS5o
aWRlKCk9DQo7aWYoIXRoaXMuYWN0aXZlLmxlbmd0aCl7dGhpcy5oZWFkZXJz
LmVxKDApLmF0dHIoInRhYkluZGV4IiwiMCIpfWVsc2V7dGhpPQ0Kcy5hY3Rp
dmUuYXR0cigiYXJpYS1leHBhbmRlZCIsInRydWUiKS5hdHRyKCJ0YWJJbmRl
eCIsIjAiKX1pZighYS5icm93c2VyLj0NCnNhZmFyaSl7dGhpcy5oZWFkZXJz
LmZpbmQoImEiKS5hdHRyKCJ0YWJJbmRleCIsIi0xIil9aWYoZC5ldmVudCl7
dGhpcy5oZWE9DQpkZXJzLmJpbmQoKGQuZXZlbnQpKyIuYWNjb3JkaW9uIixm
dW5jdGlvbihmKXtiLl9jbGlja0hhbmRsZXIuY2FsbChiLGYsdGhpPQ0Kcyk7
Zi5wcmV2ZW50RGVmYXVsdCgpfSl9fSxfY3JlYXRlSWNvbnM6ZnVuY3Rpb24o
KXt2YXIgPQ0KYj0zRHRoaXMub3B0aW9ucztpZihiLmljb25zKXthKCI8c3Bh
bi8+IikuYWRkQ2xhc3MoInVpLWljb24gPQ0KIitiLmljb25zLmhlYWRlciku
cHJlcGVuZFRvKHRoaXMuaGVhZGVycyk7dGhpcy5hY3RpdmUuZmluZCgiLnVp
LWljb24iKS50bz0NCmdnbGVDbGFzcyhiLmljb25zLmhlYWRlcikudG9nZ2xl
Q2xhc3MoYi5pY29ucy5oZWFkZXJTZWxlY3RlZCk7dGhpcy5lbGVtZW49DQp0
LmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taWNvbnMiKX19LF9kZXN0cm95SWNv
bnM6ZnVuY3Rpb24oKXt0aGlzLmhlYWRlcnMuPQ0KY2hpbGRyZW4oIi51aS1p
Y29uIikucmVtb3ZlKCk7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1h
Y2NvcmRpb24taWNvbj0NCnMiKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciA9
DQpjPTNEdGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygi
dWktYWNjb3JkaW9uIHVpLXdpZGdldCA9DQp1aS1oZWxwZXItcmVzZXQiKS5y
ZW1vdmVBdHRyKCJyb2xlIikudW5iaW5kKCIuYWNjb3JkaW9uIikucmVtb3Zl
RGF0YSgiYWNjPQ0Kb3JkaW9uIik7dGhpcy5oZWFkZXJzLnVuYmluZCgiLmFj
Y29yZGlvbiIpLnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24taGVhZD0NCmVy
IHVpLWhlbHBlci1yZXNldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1h
bGwgdWktc3RhdGUtYWN0aXZlID0NCnVpLWNvcm5lci10b3AiKS5yZW1vdmVB
dHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS1leHBhbmRlZCIpLnJlbW92
ZUF0dHI9DQooInRhYmluZGV4Iik7dGhpcy5oZWFkZXJzLmZpbmQoImEiKS5y
ZW1vdmVBdHRyKCJ0YWJpbmRleCIpO3RoaXMuX2Rlc3Ryb3lJPQ0KY29ucygp
O3ZhciA9DQpiPTNEdGhpcy5oZWFkZXJzLm5leHQoKS5jc3MoImRpc3BsYXki
LCIiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQ2xhc3MoPQ0KInVpLWhl
bHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9t
IHVpLWFjY29yZGlvbi1jb250ZW50ID0NCnVpLWFjY29yZGlvbi1jb250ZW50
LWFjdGl2ZSIpO2lmKGMuYXV0b0hlaWdodHx8Yy5maWxsSGVpZ2h0KXtiLmNz
cygiaGVpZ2g9DQp0IiwiIil9cmV0dXJuID0NCnRoaXN9LF9zZXRPcHRpb246
ZnVuY3Rpb24oYixjKXthLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5h
cHBseSh0aGlzLGE9DQpyZ3VtZW50cyk7aWYoYj0zRD0zRCJhY3RpdmUiKXt0
aGlzLmFjdGl2YXRlKGMpfWlmKGI9M0Q9M0QiaWNvbnMiKXt0aGlzLl9kPQ0K
ZXN0cm95SWNvbnMoKTtpZihjKXt0aGlzLl9jcmVhdGVJY29ucygpfX19LF9r
ZXlkb3duOmZ1bmN0aW9uKGUpe3ZhciA9DQpnPTNEdGhpcy5vcHRpb25zLGY9
M0RhLnVpLmtleUNvZGU7aWYoZy5kaXNhYmxlZHx8ZS5hbHRLZXl8fGUuY3Ry
bEtleSl7cmV0PQ0KdXJufXZhciBkPTNEdGhpcy5oZWFkZXJzLmxlbmd0aDt2
YXIgYj0zRHRoaXMuaGVhZGVycy5pbmRleChlLnRhcmdldCk7dmFyID0NCmM9
M0RmYWxzZTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIGYuUklHSFQ6Y2FzZSA9
DQpmLkRPV046Yz0zRHRoaXMuaGVhZGVyc1soYisxKSVkXTticmVhaztjYXNl
IGYuTEVGVDpjYXNlID0NCmYuVVA6Yz0zRHRoaXMuaGVhZGVyc1soYi0xK2Qp
JWRdO2JyZWFrO2Nhc2UgZi5TUEFDRTpjYXNlID0NCmYuRU5URVI6dGhpcy5f
Y2xpY2tIYW5kbGVyKHt0YXJnZXQ6ZS50YXJnZXR9LGUudGFyZ2V0KTtlLnBy
ZXZlbnREZWZhdWx0KCk9DQp9aWYoYyl7YShlLnRhcmdldCkuYXR0cigidGFi
SW5kZXgiLCItMSIpO2EoYykuYXR0cigidGFiSW5kZXgiLCIwIik7Yy5mb2N1
PQ0KcygpO3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX0scmVzaXplOmZ1bmN0
aW9uKCl7dmFyID0NCmQ9M0R0aGlzLm9wdGlvbnMsYztpZihkLmZpbGxTcGFj
ZSl7aWYoYS5icm93c2VyLm1zaWUpe3ZhciA9DQpiPTNEdGhpcy5lbGVtZW50
LnBhcmVudCgpLmNzcygib3ZlcmZsb3ciKTt0aGlzLmVsZW1lbnQucGFyZW50
KCkuY3NzKCJvdmVyPQ0KZmxvdyIsImhpZGRlbiIpfWM9M0R0aGlzLmVsZW1l
bnQucGFyZW50KCkuaGVpZ2h0KCk7aWYoYS5icm93c2VyLm1zaWUpe3RoaT0N
CnMuZWxlbWVudC5wYXJlbnQoKS5jc3MoIm92ZXJmbG93IixiKX10aGlzLmhl
YWRlcnMuZWFjaChmdW5jdGlvbigpe2MtPTNEYSg9DQp0aGlzKS5vdXRlckhl
aWdodCh0cnVlKX0pO3RoaXMuaGVhZGVycy5uZXh0KCkuZWFjaChmdW5jdGlv
bigpe2EodGhpcykuaGVpPQ0KZ2h0KE1hdGgubWF4KDAsYy1hKHRoaXMpLmlu
bmVySGVpZ2h0KCkrYSh0aGlzKS5oZWlnaHQoKSkpfSkuY3NzKCJvdmVyZmxv
dz0NCiIsImF1dG8iKX1lbHNle2lmKGQuYXV0b0hlaWdodCl7Yz0zRDA7dGhp
cy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCk9DQp7Yz0zRE1hdGgu
bWF4KGMsYSh0aGlzKS5oZWlnaHQoKSl9KS5oZWlnaHQoYyl9fXJldHVybiA9
DQp0aGlzfSxhY3RpdmF0ZTpmdW5jdGlvbihiKXt0aGlzLm9wdGlvbnMuYWN0
aXZlPTNEYjt2YXIgPQ0KYz0zRHRoaXMuX2ZpbmRBY3RpdmUoYilbMF07dGhp
cy5fY2xpY2tIYW5kbGVyKHt0YXJnZXQ6Y30sYyk7cmV0dXJuID0NCnRoaXN9
LF9maW5kQWN0aXZlOmZ1bmN0aW9uKGIpe3JldHVybiBiP3R5cGVvZiA9DQpi
PTNEPTNEIm51bWJlciI/dGhpcy5oZWFkZXJzLmZpbHRlcigiOmVxKCIrYisi
KSIpOnRoaXMuaGVhZGVycy5ub3QodGhpcy5oPQ0KZWFkZXJzLm5vdChiKSk6
Yj0zRD0zRD0zRGZhbHNlP2EoW10pOnRoaXMuaGVhZGVycy5maWx0ZXIoIjpl
cSgwKSIpfSxfY2xpYz0NCmtIYW5kbGVyOmZ1bmN0aW9uKGIsZil7dmFyID0N
CmQ9M0R0aGlzLm9wdGlvbnM7aWYoZC5kaXNhYmxlZCl7cmV0dXJufWlmKCFi
LnRhcmdldCl7aWYoIWQuY29sbGFwc2libGUpe3I9DQpldHVybn10aGlzLmFj
dGl2ZS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlID0NCnVpLWNvcm5l
ci10b3AiKS5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCA9DQp1aS1jb3Ju
ZXItYWxsIikuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyhkLmljb25z
LmhlYWRlclNlbGVjdGVkKS5hZGRDPQ0KbGFzcyhkLmljb25zLmhlYWRlcik7
dGhpcy5hY3RpdmUubmV4dCgpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tY29u
dGVudC1hYz0NCnRpdmUiKTt2YXIgPQ0KaD0zRHRoaXMuYWN0aXZlLm5leHQo
KSxlPTNEe29wdGlvbnM6ZCxuZXdIZWFkZXI6YShbXSksb2xkSGVhZGVyOmQu
YWN0aXZlLD0NCm5ld0NvbnRlbnQ6YShbXSksb2xkQ29udGVudDpofSxjPTNE
KHRoaXMuYWN0aXZlPTNEYShbXSkpO3RoaXMuX3RvZ2dsZShjLGg9DQosZSk7
cmV0dXJufXZhciBnPTNEYShiLmN1cnJlbnRUYXJnZXR8fGYpO3ZhciA9DQpp
PTNEZ1swXT0zRD0zRHRoaXMuYWN0aXZlWzBdO2QuYWN0aXZlPTNEZC5jb2xs
YXBzaWJsZSYmaT9mYWxzZTphKCIudWktYWNjPQ0Kb3JkaW9uLWhlYWRlciIs
dGhpcy5lbGVtZW50KS5pbmRleChnKTtpZih0aGlzLnJ1bm5pbmd8fCghZC5j
b2xsYXBzaWJsZSYmaT0NCikpe3JldHVybn10aGlzLmFjdGl2ZS5yZW1vdmVD
bGFzcygidWktc3RhdGUtYWN0aXZlID0NCnVpLWNvcm5lci10b3AiKS5hZGRD
bGFzcygidWktc3RhdGUtZGVmYXVsdCA9DQp1aS1jb3JuZXItYWxsIikuZmlu
ZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyhkLmljb25zLmhlYWRlclNlbGVj
dGVkKS5hZGRDPQ0KbGFzcyhkLmljb25zLmhlYWRlcik7aWYoIWkpe2cucmVt
b3ZlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgPQ0KdWktY29ybmVyLWFsbCIp
LmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUgPQ0KdWktY29ybmVyLXRvcCIp
LmZpbmQoIi51aS1pY29uIikucmVtb3ZlQ2xhc3MoZC5pY29ucy5oZWFkZXIp
LmFkZENsYXNzKGQuaT0NCmNvbnMuaGVhZGVyU2VsZWN0ZWQpO2cubmV4dCgp
LmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKX12YXI9
DQogPQ0KYz0zRGcubmV4dCgpLGg9M0R0aGlzLmFjdGl2ZS5uZXh0KCksZT0z
RHtvcHRpb25zOmQsbmV3SGVhZGVyOmkmJmQuY29sbGFwcz0NCmlibGU/YShb
XSk6ZyxvbGRIZWFkZXI6dGhpcy5hY3RpdmUsbmV3Q29udGVudDppJiZkLmNv
bGxhcHNpYmxlP2EoW10pOmMsb2w9DQpkQ29udGVudDpofSxqPTNEdGhpcy5o
ZWFkZXJzLmluZGV4KHRoaXMuYWN0aXZlWzBdKT50aGlzLmhlYWRlcnMuaW5k
ZXgoZ1swPQ0KXSk7dGhpcy5hY3RpdmU9M0RpP2EoW10pOmc7dGhpcy5fdG9n
Z2xlKGMsaCxlLGksaik7cmV0dXJufSxfdG9nZ2xlOmZ1bmN0aT0NCm9uKGIs
aSxnLGosayl7dmFyID0NCmQ9M0R0aGlzLm9wdGlvbnMsbT0zRHRoaXM7dGhp
cy50b1Nob3c9M0RiO3RoaXMudG9IaWRlPTNEaTt0aGlzLmRhdGE9M0RnO3Y9
DQphciBjPTNEZnVuY3Rpb24oKXtpZighbSl7cmV0dXJufXJldHVybiA9DQpt
Ll9jb21wbGV0ZWQuYXBwbHkobSxhcmd1bWVudHMpfTt0aGlzLl90cmlnZ2Vy
KCJjaGFuZ2VzdGFydCIsbnVsbCx0aGlzLmRhPQ0KdGEpO3RoaXMucnVubmlu
Zz0zRGkuc2l6ZSgpPTNEPTNEPTNEMD9iLnNpemUoKTppLnNpemUoKTtpZihk
LmFuaW1hdGVkKXt2YT0NCnIgPQ0KZj0zRHt9O2lmKGQuY29sbGFwc2libGUm
Jmope2Y9M0R7dG9TaG93OmEoW10pLHRvSGlkZTppLGNvbXBsZXRlOmMsZG93
bjprLD0NCmF1dG9IZWlnaHQ6ZC5hdXRvSGVpZ2h0fHxkLmZpbGxTcGFjZX19
ZWxzZXtmPTNEe3RvU2hvdzpiLHRvSGlkZTppLGNvbXBsZXQ9DQplOmMsZG93
bjprLGF1dG9IZWlnaHQ6ZC5hdXRvSGVpZ2h0fHxkLmZpbGxTcGFjZX19aWYo
IWQucHJveGllZCl7ZC5wcm94aWVkPQ0KPTNEZC5hbmltYXRlZH1pZighZC5w
cm94aWVkRHVyYXRpb24pe2QucHJveGllZER1cmF0aW9uPTNEZC5kdXJhdGlv
bn1kLmFuaT0NCm1hdGVkPTNEYS5pc0Z1bmN0aW9uKGQucHJveGllZCk/ZC5w
cm94aWVkKGYpOmQucHJveGllZDtkLmR1cmF0aW9uPTNEYS5pc0Y9DQp1bmN0
aW9uKGQucHJveGllZER1cmF0aW9uKT9kLnByb3hpZWREdXJhdGlvbihmKTpk
LnByb3hpZWREdXJhdGlvbjt2YXIgPQ0KbD0zRGEudWkuYWNjb3JkaW9uLmFu
aW1hdGlvbnMsZT0zRGQuZHVyYXRpb24saD0zRGQuYW5pbWF0ZWQ7aWYoaCYm
IWxbaF0mJj0NCiFhLmVhc2luZ1toXSl7aD0zRCJzbGlkZSJ9aWYoIWxbaF0p
e2xbaF09M0RmdW5jdGlvbihuKXt0aGlzLnNsaWRlKG4se2Vhc2k9DQpuZzpo
LGR1cmF0aW9uOmV8fDcwMH0pfX1sW2hdKGYpfWVsc2V7aWYoZC5jb2xsYXBz
aWJsZSYmail7Yi50b2dnbGUoKX1lbHNlPQ0Ke2kuaGlkZSgpO2Iuc2hvdygp
fWModHJ1ZSl9aS5wcmV2KCkuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNl
IikuYXR0cigidD0NCmFiSW5kZXgiLCItMSIpLmJsdXIoKTtiLnByZXYoKS5h
dHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLmF0dHIoInRhYkluZGU9DQp4
IiwiMCIpLmZvY3VzKCl9LF9jb21wbGV0ZWQ6ZnVuY3Rpb24oYil7dmFyID0N
CmM9M0R0aGlzLm9wdGlvbnM7dGhpcy5ydW5uaW5nPTNEYj8wOi0tdGhpcy5y
dW5uaW5nO2lmKHRoaXMucnVubmluZyl7cmV0dXI9DQpufWlmKGMuY2xlYXJT
dHlsZSl7dGhpcy50b1Nob3cuYWRkKHRoaXMudG9IaWRlKS5jc3Moe2hlaWdo
dDoiIixvdmVyZmxvdzoiPQ0KIn0pfXRoaXMudG9IaWRlLnJlbW92ZUNsYXNz
KCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKTt0aGlzLl90cmlnZ2Vy
KD0NCiJjaGFuZ2UiLG51bGwsdGhpcy5kYXRhKX19KTthLmV4dGVuZChhLnVp
LmFjY29yZGlvbix7dmVyc2lvbjoiMS44IixhbmltYXQ9DQppb25zOntzbGlk
ZTpmdW5jdGlvbihqLGgpe2o9M0RhLmV4dGVuZCh7ZWFzaW5nOiJzd2luZyIs
ZHVyYXRpb246MzAwfSxqLGgpPQ0KO2lmKCFqLnRvSGlkZS5zaXplKCkpe2ou
dG9TaG93LmFuaW1hdGUoe2hlaWdodDoic2hvdyJ9LGopO3JldHVybn1pZigh
ai50bz0NClNob3cuc2l6ZSgpKXtqLnRvSGlkZS5hbmltYXRlKHtoZWlnaHQ6
ImhpZGUifSxqKTtyZXR1cm59dmFyID0NCmM9M0RqLnRvU2hvdy5jc3MoIm92
ZXJmbG93IiksZz0zRDAsZD0zRHt9LGY9M0R7fSxlPTNEWyJoZWlnaHQiLCJw
YWRkaW5nVG89DQpwIiwicGFkZGluZ0JvdHRvbSJdLGI7dmFyID0NCmk9M0Rq
LnRvU2hvdztiPTNEaVswXS5zdHlsZS53aWR0aDtpLndpZHRoKHBhcnNlSW50
KGkucGFyZW50KCkud2lkdGgoKSwxMCk9DQotcGFyc2VJbnQoaS5jc3MoInBh
ZGRpbmdMZWZ0IiksMTApLXBhcnNlSW50KGkuY3NzKCJwYWRkaW5nUmlnaHQi
KSwxMCktKHBhPQ0KcnNlSW50KGkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwx
MCl8fDApLShwYXJzZUludChpLmNzcygiYm9yZGVyUmlnaHRXaWR0aD0NCiIp
LDEwKXx8MCkpO2EuZWFjaChlLGZ1bmN0aW9uKGssbSl7ZlttXT0zRCJoaWRl
Ijt2YXIgPQ0KbD0zRCgiIithLmNzcyhqLnRvU2hvd1swXSxtKSkubWF0Y2go
L14oW1xkKy0uXSspKC4qKSQvKTtkW21dPTNEe3ZhbHVlOmxbMT0NCl0sdW5p
dDpsWzJdfHwicHgifX0pO2oudG9TaG93LmNzcyh7aGVpZ2h0OjAsb3ZlcmZs
b3c6ImhpZGRlbiJ9KS5zaG93KCk7ai49DQp0b0hpZGUuZmlsdGVyKCI6aGlk
ZGVuIikuZWFjaChqLmNvbXBsZXRlKS5lbmQoKS5maWx0ZXIoIjp2aXNpYmxl
IikuYW5pbWF0PQ0KZShmLHtzdGVwOmZ1bmN0aW9uKGssbCl7aWYobC5wcm9w
PTNEPTNEImhlaWdodCIpe2c9M0QobC5lbmQtbC5zdGFydD0zRD0zRD0NCj0z
RDApPzA6KGwubm93LWwuc3RhcnQpLyhsLmVuZC1sLnN0YXJ0KX1qLnRvU2hv
d1swXS5zdHlsZVtsLnByb3BdPTNEKGcqZFs9DQpsLnByb3BdLnZhbHVlKStk
W2wucHJvcF0udW5pdH0sZHVyYXRpb246ai5kdXJhdGlvbixlYXNpbmc6ai5l
YXNpbmcsY29tcGxlPQ0KdGU6ZnVuY3Rpb24oKXtpZighai5hdXRvSGVpZ2h0
KXtqLnRvU2hvdy5jc3MoImhlaWdodCIsIiIpfWoudG9TaG93LmNzcygidz0N
CmlkdGgiLGIpO2oudG9TaG93LmNzcyh7b3ZlcmZsb3c6Y30pO2ouY29tcGxl
dGUoKX19KX0sYm91bmNlc2xpZGU6ZnVuY3Rpb249DQooYil7dGhpcy5zbGlk
ZShiLHtlYXNpbmc6Yi5kb3duPyJlYXNlT3V0Qm91bmNlIjoic3dpbmciLGR1
cmF0aW9uOmIuZG93bj8xPQ0KMDAwOjIwMH0pfX19KX0pKGpRdWVyeSk7Oy8q
DQogKiBqUXVlcnkgVUkgVGFicyAxLjgNCiAqDQogKiBDb3B5cmlnaHQgKGMp
IDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQp
DQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNF
LnR4dCkNCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMu
DQogKg0KICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9UYWJzDQogKg0K
ICogRGVwZW5kczoNCiAqCWpxdWVyeS51aS5jb3JlLmpzDQogKglqcXVlcnku
dWkud2lkZ2V0LmpzDQogKi8NCihmdW5jdGlvbihjKXt2YXIgPQ0KYj0zRDAs
YT0zRDA7Yy53aWRnZXQoInVpLnRhYnMiLHtvcHRpb25zOnthZGQ6bnVsbCxh
amF4T3B0aW9uczpudWxsLGNhY2hlOj0NCmZhbHNlLGNvb2tpZTpudWxsLGNv
bGxhcHNpYmxlOmZhbHNlLGRpc2FibGU6bnVsbCxkaXNhYmxlZDpbXSxlbmFi
bGU6bnVsbCw9DQpldmVudDoiY2xpY2siLGZ4Om51bGwsaWRQcmVmaXg6InVp
LXRhYnMtIixsb2FkOm51bGwscGFuZWxUZW1wbGF0ZToiPGRpdj48PQ0KL2Rp
dj4iLHJlbW92ZTpudWxsLHNlbGVjdDpudWxsLHNob3c6bnVsbCxzcGlubmVy
OiI8ZW0+TG9hZGluZyYjODIzMDs8L2VtPj0NCiIsdGFiVGVtcGxhdGU6Jzxs
aT48YSA9DQpocmVmPTNEIiN7aHJlZn0iPjxzcGFuPiN7bGFiZWx9PC9zcGFu
PjwvYT48L2xpPid9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzPQ0KLl90YWJp
ZnkodHJ1ZSl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZCxlKXtpZihkPTNEPTNE
InNlbGVjdGVkIil7aWYodGhpcy5vcD0NCnRpb25zLmNvbGxhcHNpYmxlJiZl
PTNEPTNEdGhpcy5vcHRpb25zLnNlbGVjdGVkKXtyZXR1cm59dGhpcy5zZWxl
Y3QoZSl9ZWw9DQpzZXt0aGlzLm9wdGlvbnNbZF09M0RlO3RoaXMuX3RhYmlm
eSgpfX0sX3RhYklkOmZ1bmN0aW9uKGQpe3JldHVybiA9DQpkLnRpdGxlJiZk
LnRpdGxlLnJlcGxhY2UoL1xzL2csIl8iKS5yZXBsYWNlKC9bXkEtWmEtejAt
OVwtXzpcLl0vZywiIil8fHRoPQ0KaXMub3B0aW9ucy5pZFByZWZpeCsoKyti
KX0sX3Nhbml0aXplU2VsZWN0b3I6ZnVuY3Rpb24oZCl7cmV0dXJuID0NCmQu
cmVwbGFjZSgvOi9nLCJcXDoiKX0sX2Nvb2tpZTpmdW5jdGlvbigpe3ZhciA9
DQpkPTNEdGhpcy5jb29raWV8fCh0aGlzLmNvb2tpZT0zRHRoaXMub3B0aW9u
cy5jb29raWUubmFtZXx8InVpLXRhYnMtIisoKythPQ0KKSk7cmV0dXJuID0N
CmMuY29va2llLmFwcGx5KG51bGwsW2RdLmNvbmNhdChjLm1ha2VBcnJheShh
cmd1bWVudHMpKSl9LF91aTpmdW5jdGlvbihlLGQ9DQope3JldHVybnt0YWI6
ZSxwYW5lbDpkLGluZGV4OnRoaXMuYW5jaG9ycy5pbmRleChlKX19LF9jbGVh
bnVwOmZ1bmN0aW9uKCl7PQ0KdGhpcy5saXMuZmlsdGVyKCIudWktc3RhdGUt
cHJvY2Vzc2luZyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1wcm9jZXNzaW5n
Ij0NCikuZmluZCgic3BhbjpkYXRhKGxhYmVsLnRhYnMpIikuZWFjaChmdW5j
dGlvbigpe3ZhciA9DQpkPTNEYyh0aGlzKTtkLmh0bWwoZC5kYXRhKCJsYWJl
bC50YWJzIikpLnJlbW92ZURhdGEoImxhYmVsLnRhYnMiKX0pfSxfdGFiPQ0K
aWZ5OmZ1bmN0aW9uKHEpe3RoaXMubGlzdD0zRHRoaXMuZWxlbWVudC5maW5k
KCJvbCx1bCIpLmVxKDApO3RoaXMubGlzPTNEYz0NCigibGk6aGFzKGFbaHJl
Zl0pIix0aGlzLmxpc3QpO3RoaXMuYW5jaG9ycz0zRHRoaXMubGlzLm1hcChm
dW5jdGlvbigpe3JldHU9DQpybiBjKCJhIix0aGlzKVswXX0pO3RoaXMucGFu
ZWxzPTNEYyhbXSk7dmFyID0NCnI9M0R0aGlzLGY9M0R0aGlzLm9wdGlvbnM7
dmFyID0NCmU9M0QvXiMuKy87dGhpcy5hbmNob3JzLmVhY2goZnVuY3Rpb24o
dSxvKXt2YXIgcz0zRGMobykuYXR0cigiaHJlZiIpO3ZhciA9DQp2PTNEcy5z
cGxpdCgiIyIpWzBdLHc7aWYodiYmKHY9M0Q9M0Q9M0Rsb2NhdGlvbi50b1N0
cmluZygpLnNwbGl0KCIjIilbMF18PQ0KfCh3PTNEYygiYmFzZSIpWzBdKSYm
dj0zRD0zRD0zRHcuaHJlZikpe3M9M0RvLmhhc2g7by5ocmVmPTNEc31pZihl
LnRlc3Qocz0NCikpe3IucGFuZWxzPTNEci5wYW5lbHMuYWRkKHIuX3Nhbml0
aXplU2VsZWN0b3IocykpfWVsc2V7aWYocyE9M0QiIyIpe2MuZGE9DQp0YShv
LCJocmVmLnRhYnMiLHMpO2MuZGF0YShvLCJsb2FkLnRhYnMiLHMucmVwbGFj
ZSgvIy4qJC8sIiIpKTt2YXIgPQ0KeT0zRHIuX3RhYklkKG8pO28uaHJlZj0z
RCIjIit5O3ZhciA9DQp4PTNEYygiIyIreSk7aWYoIXgubGVuZ3RoKXt4PTNE
YyhmLnBhbmVsVGVtcGxhdGUpLmF0dHIoImlkIix5KS5hZGRDbGFzcygiPQ0K
dWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCA9DQp1aS1jb3JuZXIt
Ym90dG9tIikuaW5zZXJ0QWZ0ZXIoci5wYW5lbHNbdS0xXXx8ci5saXN0KTt4
LmRhdGEoImRlc3Ryb3kudGFiPQ0KcyIsdHJ1ZSl9ci5wYW5lbHM9M0RyLnBh
bmVscy5hZGQoeCl9ZWxzZXtmLmRpc2FibGVkLnB1c2godSl9fX0pO2lmKHEp
e3RoaT0NCnMuZWxlbWVudC5hZGRDbGFzcygidWktdGFicyB1aS13aWRnZXQg
dWktd2lkZ2V0LWNvbnRlbnQgPQ0KdWktY29ybmVyLWFsbCIpO3RoaXMubGlz
dC5hZGRDbGFzcygidWktdGFicy1uYXYgdWktaGVscGVyLXJlc2V0ID0NCnVp
LWhlbHBlci1jbGVhcmZpeCB1aS13aWRnZXQtaGVhZGVyID0NCnVpLWNvcm5l
ci1hbGwiKTt0aGlzLmxpcy5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCA9
DQp1aS1jb3JuZXItdG9wIik7dGhpcy5wYW5lbHMuYWRkQ2xhc3MoInVpLXRh
YnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgPQ0KdWktY29ybmVyLWJvdHRv
bSIpO2lmKGYuc2VsZWN0ZWQ9M0Q9M0Q9M0R1bmRlZmluZWQpe2lmKGxvY2F0
aW9uLmhhc2gpe3RoaT0NCnMuYW5jaG9ycy5lYWNoKGZ1bmN0aW9uKHMsbyl7
aWYoby5oYXNoPTNEPTNEbG9jYXRpb24uaGFzaCl7Zi5zZWxlY3RlZD0zRHM9
DQo7cmV0dXJuIGZhbHNlfX0pfWlmKHR5cGVvZiA9DQpmLnNlbGVjdGVkIT0z
RCJudW1iZXIiJiZmLmNvb2tpZSl7Zi5zZWxlY3RlZD0zRHBhcnNlSW50KHIu
X2Nvb2tpZSgpLDEwKX1pPQ0KZih0eXBlb2YgPQ0KZi5zZWxlY3RlZCE9M0Qi
bnVtYmVyIiYmdGhpcy5saXMuZmlsdGVyKCIudWktdGFicy1zZWxlY3RlZCIp
Lmxlbmd0aCl7Zi5zZT0NCmxlY3RlZD0zRHRoaXMubGlzLmluZGV4KHRoaXMu
bGlzLmZpbHRlcigiLnVpLXRhYnMtc2VsZWN0ZWQiKSl9Zi5zZWxlY3RlZD0z
RD0NCmYuc2VsZWN0ZWR8fCh0aGlzLmxpcy5sZW5ndGg/MDotMSl9ZWxzZXtp
ZihmLnNlbGVjdGVkPTNEPTNEPTNEbnVsbCl7Zi5zZWw9DQplY3RlZD0zRC0x
fX1mLnNlbGVjdGVkPTNEKChmLnNlbGVjdGVkPj0zRDAmJnRoaXMuYW5jaG9y
c1tmLnNlbGVjdGVkXSl8fGYuPQ0Kc2VsZWN0ZWQ8MCk/Zi5zZWxlY3RlZDow
O2YuZGlzYWJsZWQ9M0RjLnVuaXF1ZShmLmRpc2FibGVkLmNvbmNhdChjLm1h
cCh0aD0NCmlzLmxpcy5maWx0ZXIoIi51aS1zdGF0ZS1kaXNhYmxlZCIpLGZ1
bmN0aW9uKHMsbyl7cmV0dXJuID0NCnIubGlzLmluZGV4KHMpfSkpKS5zb3J0
KCk7aWYoYy5pbkFycmF5KGYuc2VsZWN0ZWQsZi5kaXNhYmxlZCkhPTNELTEp
e2YuZGk9DQpzYWJsZWQuc3BsaWNlKGMuaW5BcnJheShmLnNlbGVjdGVkLGYu
ZGlzYWJsZWQpLDEpfXRoaXMucGFuZWxzLmFkZENsYXNzKCJ1PQ0KaS10YWJz
LWhpZGUiKTt0aGlzLmxpcy5yZW1vdmVDbGFzcygidWktdGFicy1zZWxlY3Rl
ZCA9DQp1aS1zdGF0ZS1hY3RpdmUiKTtpZihmLnNlbGVjdGVkPj0zRDAmJnRo
aXMuYW5jaG9ycy5sZW5ndGgpe3RoaXMucGFuZWxzLmVxPQ0KKGYuc2VsZWN0
ZWQpLnJlbW92ZUNsYXNzKCJ1aS10YWJzLWhpZGUiKTt0aGlzLmxpcy5lcShm
LnNlbGVjdGVkKS5hZGRDbGFzcz0NCigidWktdGFicy1zZWxlY3RlZCA9DQp1
aS1zdGF0ZS1hY3RpdmUiKTtyLmVsZW1lbnQucXVldWUoInRhYnMiLGZ1bmN0
aW9uKCl7ci5fdHJpZ2dlcigic2hvdyIsbnVsPQ0KbCxyLl91aShyLmFuY2hv
cnNbZi5zZWxlY3RlZF0sci5wYW5lbHNbZi5zZWxlY3RlZF0pKX0pO3RoaXMu
bG9hZChmLnNlbGVjdD0NCmVkKX1jKHdpbmRvdykuYmluZCgidW5sb2FkIixm
dW5jdGlvbigpe3IubGlzLmFkZChyLmFuY2hvcnMpLnVuYmluZCgiLnRhYnM9
DQoiKTtyLmxpcz0zRHIuYW5jaG9ycz0zRHIucGFuZWxzPTNEbnVsbH0pfWVs
c2V7Zi5zZWxlY3RlZD0zRHRoaXMubGlzLmluZGV4PQ0KKHRoaXMubGlzLmZp
bHRlcigiLnVpLXRhYnMtc2VsZWN0ZWQiKSl9dGhpcy5lbGVtZW50W2YuY29s
bGFwc2libGU/ImFkZENsYT0NCnNzIjoicmVtb3ZlQ2xhc3MiXSgidWktdGFi
cy1jb2xsYXBzaWJsZSIpO2lmKGYuY29va2llKXt0aGlzLl9jb29raWUoZi5z
ZWw9DQplY3RlZCxmLmNvb2tpZSl9Zm9yKHZhciA9DQpqPTNEMCxwOyhwPTNE
dGhpcy5saXNbal0pO2orKyl7YyhwKVtjLmluQXJyYXkoaixmLmRpc2FibGVk
KSE9M0QtMSYmIWMocCkuPQ0KaGFzQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQi
KT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS1zdGF0ZS1kaXNhYmxl
ZD0NCiIpfWlmKGYuY2FjaGU9M0Q9M0Q9M0RmYWxzZSl7dGhpcy5hbmNob3Jz
LnJlbW92ZURhdGEoImNhY2hlLnRhYnMiKX10aGlzLmw9DQppcy5hZGQodGhp
cy5hbmNob3JzKS51bmJpbmQoIi50YWJzIik7aWYoZi5ldmVudCE9M0QibW91
c2VvdmVyIil7dmFyID0NCmg9M0RmdW5jdGlvbihvLGkpe2lmKGkuaXMoIjpu
b3QoLnVpLXN0YXRlLWRpc2FibGVkKSIpKXtpLmFkZENsYXNzKCJ1aS1zdGE9
DQp0ZS0iK28pfX07dmFyID0NCmw9M0RmdW5jdGlvbihvLGkpe2kucmVtb3Zl
Q2xhc3MoInVpLXN0YXRlLSIrbyl9O3RoaXMubGlzLmJpbmQoIm1vdXNlb3Zl
ci49DQp0YWJzIixmdW5jdGlvbigpe2goImhvdmVyIixjKHRoaXMpKX0pO3Ro
aXMubGlzLmJpbmQoIm1vdXNlb3V0LnRhYnMiLGZ1bmN0PQ0KaW9uKCl7bCgi
aG92ZXIiLGModGhpcykpfSk7dGhpcy5hbmNob3JzLmJpbmQoImZvY3VzLnRh
YnMiLGZ1bmN0aW9uKCl7aCgiZj0NCm9jdXMiLGModGhpcykuY2xvc2VzdCgi
bGkiKSl9KTt0aGlzLmFuY2hvcnMuYmluZCgiYmx1ci50YWJzIixmdW5jdGlv
bigpe2w9DQooImZvY3VzIixjKHRoaXMpLmNsb3Nlc3QoImxpIikpfSl9dmFy
ID0NCmQsaztpZihmLmZ4KXtpZihjLmlzQXJyYXkoZi5meCkpe2Q9M0RmLmZ4
WzBdO2s9M0RmLmZ4WzFdfWVsc2V7ZD0zRGs9M0RmLmY9DQp4fX1mdW5jdGlv
biA9DQpnKGksbyl7aS5jc3Moe2Rpc3BsYXk6IiJ9KTtpZighYy5zdXBwb3J0
Lm9wYWNpdHkmJm8ub3BhY2l0eSl7aVswXS5zdHlsZS5yPQ0KZW1vdmVBdHRy
aWJ1dGUoImZpbHRlciIpfX12YXIgPQ0KbT0zRGs/ZnVuY3Rpb24oaSxvKXtj
KGkpLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQg
PQ0KdWktc3RhdGUtYWN0aXZlIik7by5oaWRlKCkucmVtb3ZlQ2xhc3MoInVp
LXRhYnMtaGlkZSIpLmFuaW1hdGUoayxrLmR1cmF0aT0NCm9ufHwibm9ybWFs
IixmdW5jdGlvbigpe2cobyxrKTtyLl90cmlnZ2VyKCJzaG93IixudWxsLHIu
X3VpKGksb1swXSkpfSl9OmY9DQp1bmN0aW9uKGksbyl7YyhpKS5jbG9zZXN0
KCJsaSIpLmFkZENsYXNzKCJ1aS10YWJzLXNlbGVjdGVkID0NCnVpLXN0YXRl
LWFjdGl2ZSIpO28ucmVtb3ZlQ2xhc3MoInVpLXRhYnMtaGlkZSIpO3IuX3Ry
aWdnZXIoInNob3ciLG51bGwsci49DQpfdWkoaSxvWzBdKSl9O3ZhciA9DQpu
PTNEZD9mdW5jdGlvbihvLGkpe2kuYW5pbWF0ZShkLGQuZHVyYXRpb258fCJu
b3JtYWwiLGZ1bmN0aW9uKCl7ci5saXMucmVtPQ0Kb3ZlQ2xhc3MoInVpLXRh
YnMtc2VsZWN0ZWQgPQ0KdWktc3RhdGUtYWN0aXZlIik7aS5hZGRDbGFzcygi
dWktdGFicy1oaWRlIik7ZyhpLGQpO3IuZWxlbWVudC5kZXF1ZXVlKCJ0YT0N
CmJzIil9KX06ZnVuY3Rpb24obyxpLHMpe3IubGlzLnJlbW92ZUNsYXNzKCJ1
aS10YWJzLXNlbGVjdGVkID0NCnVpLXN0YXRlLWFjdGl2ZSIpO2kuYWRkQ2xh
c3MoInVpLXRhYnMtaGlkZSIpO3IuZWxlbWVudC5kZXF1ZXVlKCJ0YWJzIil9
O3Q9DQpoaXMuYW5jaG9ycy5iaW5kKGYuZXZlbnQrIi50YWJzIixmdW5jdGlv
bigpe3ZhciA9DQpvPTNEdGhpcyx1PTNEYyh0aGlzKS5jbG9zZXN0KCJsaSIp
LGk9M0RyLnBhbmVscy5maWx0ZXIoIjpub3QoLnVpLXRhYnMtaGlkPQ0KZSki
KSxzPTNEYyhyLl9zYW5pdGl6ZVNlbGVjdG9yKHRoaXMuaGFzaCkpO2lmKCh1
Lmhhc0NsYXNzKCJ1aS10YWJzLXNlbGVjdD0NCmVkIikmJiFmLmNvbGxhcHNp
YmxlKXx8dS5oYXNDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKXx8dS5oYXND
bGFzcygidWktc3Q9DQphdGUtcHJvY2Vzc2luZyIpfHxyLl90cmlnZ2VyKCJz
ZWxlY3QiLG51bGwsci5fdWkodGhpcyxzWzBdKSk9M0Q9M0Q9M0RmYWxzPQ0K
ZSl7dGhpcy5ibHVyKCk7cmV0dXJuID0NCmZhbHNlfWYuc2VsZWN0ZWQ9M0Ry
LmFuY2hvcnMuaW5kZXgodGhpcyk7ci5hYm9ydCgpO2lmKGYuY29sbGFwc2li
bGUpe2lmKHU9DQouaGFzQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQiKSl7Zi5z
ZWxlY3RlZD0zRC0xO2lmKGYuY29va2llKXtyLl9jb29raWUoZi5zPQ0KZWxl
Y3RlZCxmLmNvb2tpZSl9ci5lbGVtZW50LnF1ZXVlKCJ0YWJzIixmdW5jdGlv
bigpe24obyxpKX0pLmRlcXVldWUoInRhYj0NCnMiKTt0aGlzLmJsdXIoKTty
ZXR1cm4gPQ0KZmFsc2V9ZWxzZXtpZighaS5sZW5ndGgpe2lmKGYuY29va2ll
KXtyLl9jb29raWUoZi5zZWxlY3RlZCxmLmNvb2tpZSl9ci5lbD0NCmVtZW50
LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigpe20obyxzKX0pO3IubG9hZChyLmFu
Y2hvcnMuaW5kZXgodGhpcykpO3RoaXM9DQouYmx1cigpO3JldHVybiA9DQpm
YWxzZX19fWlmKGYuY29va2llKXtyLl9jb29raWUoZi5zZWxlY3RlZCxmLmNv
b2tpZSl9aWYocy5sZW5ndGgpe2lmKGkubGVuPQ0KZ3RoKXtyLmVsZW1lbnQu
cXVldWUoInRhYnMiLGZ1bmN0aW9uKCl7bihvLGkpfSl9ci5lbGVtZW50LnF1
ZXVlKCJ0YWJzIixmdT0NCm5jdGlvbigpe20obyxzKX0pO3IubG9hZChyLmFu
Y2hvcnMuaW5kZXgodGhpcykpfWVsc2V7dGhyb3cialF1ZXJ5IFVJID0NClRh
YnM6IE1pc21hdGNoaW5nIGZyYWdtZW50ID0NCmlkZW50aWZpZXIuIn1pZihj
LmJyb3dzZXIubXNpZSl7dGhpcy5ibHVyKCl9fSk7dGhpcy5hbmNob3JzLmJp
bmQoImNsaWNrLnQ9DQphYnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSl9
LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgPQ0KZD0zRHRoaXMub3B0aW9uczt0
aGlzLmFib3J0KCk7dGhpcy5lbGVtZW50LnVuYmluZCgiLnRhYnMiKS5yZW1v
dmVDbGFzcygidT0NCmktdGFicyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRl
bnQgdWktY29ybmVyLWFsbCA9DQp1aS10YWJzLWNvbGxhcHNpYmxlIikucmVt
b3ZlRGF0YSgidGFicyIpO3RoaXMubGlzdC5yZW1vdmVDbGFzcygidWktdGFi
cy1uPQ0KYXYgdWktaGVscGVyLXJlc2V0IHVpLWhlbHBlci1jbGVhcmZpeCB1
aS13aWRnZXQtaGVhZGVyID0NCnVpLWNvcm5lci1hbGwiKTt0aGlzLmFuY2hv
cnMuZWFjaChmdW5jdGlvbigpe3ZhciA9DQplPTNEYy5kYXRhKHRoaXMsImhy
ZWYudGFicyIpO2lmKGUpe3RoaXMuaHJlZj0zRGV9dmFyID0NCmY9M0RjKHRo
aXMpLnVuYmluZCgiLnRhYnMiKTtjLmVhY2goWyJocmVmIiwibG9hZCIsImNh
Y2hlIl0sZnVuY3Rpb24oZyxoKXs9DQpmLnJlbW92ZURhdGEoaCsiLnRhYnMi
KX0pfSk7dGhpcy5saXMudW5iaW5kKCIudGFicyIpLmFkZCh0aGlzLnBhbmVs
cykuZWFjPQ0KaChmdW5jdGlvbigpe2lmKGMuZGF0YSh0aGlzLCJkZXN0cm95
LnRhYnMiKSl7Yyh0aGlzKS5yZW1vdmUoKX1lbHNle2ModGhpcz0NCikucmVt
b3ZlQ2xhc3MoWyJ1aS1zdGF0ZS1kZWZhdWx0IiwidWktY29ybmVyLXRvcCIs
InVpLXRhYnMtc2VsZWN0ZWQiLCJ1aS09DQpzdGF0ZS1hY3RpdmUiLCJ1aS1z
dGF0ZS1ob3ZlciIsInVpLXN0YXRlLWZvY3VzIiwidWktc3RhdGUtZGlzYWJs
ZWQiLCJ1aS10PQ0KYWJzLXBhbmVsIiwidWktd2lkZ2V0LWNvbnRlbnQiLCJ1
aS1jb3JuZXItYm90dG9tIiwidWktdGFicy1oaWRlIl0uam9pbigiID0NCiIp
KX19KTtpZihkLmNvb2tpZSl7dGhpcy5fY29va2llKG51bGwsZC5jb29raWUp
fXJldHVybiA9DQp0aGlzfSxhZGQ6ZnVuY3Rpb24oZyxmLGUpe2lmKGU9M0Q9
M0Q9M0R1bmRlZmluZWQpe2U9M0R0aGlzLmFuY2hvcnMubGVuZ3RoPQ0KfXZh
ciA9DQpkPTNEdGhpcyxpPTNEdGhpcy5vcHRpb25zLGs9M0RjKGkudGFiVGVt
cGxhdGUucmVwbGFjZSgvI1x7aHJlZlx9L2csZykucmVwPQ0KbGFjZSgvI1x7
bGFiZWxcfS9nLGYpKSxqPTNEIWcuaW5kZXhPZigiIyIpP2cucmVwbGFjZSgi
IyIsIiIpOnRoaXMuX3RhYklkKD0NCmMoImEiLGspWzBdKTtrLmFkZENsYXNz
KCJ1aS1zdGF0ZS1kZWZhdWx0ID0NCnVpLWNvcm5lci10b3AiKS5kYXRhKCJk
ZXN0cm95LnRhYnMiLHRydWUpO3ZhciA9DQpoPTNEYygiIyIraik7aWYoIWgu
bGVuZ3RoKXtoPTNEYyhpLnBhbmVsVGVtcGxhdGUpLmF0dHIoImlkIixqKS5k
YXRhKCJkZXN0PQ0Kcm95LnRhYnMiLHRydWUpfWguYWRkQ2xhc3MoInVpLXRh
YnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgPQ0KdWktY29ybmVyLWJvdHRv
bSA9DQp1aS10YWJzLWhpZGUiKTtpZihlPj0zRHRoaXMubGlzLmxlbmd0aCl7
ay5hcHBlbmRUbyh0aGlzLmxpc3QpO2guYXBwZW5kVG8oPQ0KdGhpcy5saXN0
WzBdLnBhcmVudE5vZGUpfWVsc2V7ay5pbnNlcnRCZWZvcmUodGhpcy5saXNb
ZV0pO2guaW5zZXJ0QmVmb3JlKD0NCnRoaXMucGFuZWxzW2VdKX1pLmRpc2Fi
bGVkPTNEYy5tYXAoaS5kaXNhYmxlZCxmdW5jdGlvbihtLGwpe3JldHVybiA9
DQptPj0zRGU/KyttOm19KTt0aGlzLl90YWJpZnkoKTtpZih0aGlzLmFuY2hv
cnMubGVuZ3RoPTNEPTNEMSl7aS5zZWxlY3RlZD0zRD0NCjA7ay5hZGRDbGFz
cygidWktdGFicy1zZWxlY3RlZCA9DQp1aS1zdGF0ZS1hY3RpdmUiKTtoLnJl
bW92ZUNsYXNzKCJ1aS10YWJzLWhpZGUiKTt0aGlzLmVsZW1lbnQucXVldWUo
InRhYnMiPQ0KLGZ1bmN0aW9uKCl7ZC5fdHJpZ2dlcigic2hvdyIsbnVsbCxk
Ll91aShkLmFuY2hvcnNbMF0sZC5wYW5lbHNbMF0pKX0pO3RoaT0NCnMubG9h
ZCgwKX10aGlzLl90cmlnZ2VyKCJhZGQiLG51bGwsdGhpcy5fdWkodGhpcy5h
bmNob3JzW2VdLHRoaXMucGFuZWxzW2U9DQpdKSk7cmV0dXJuIHRoaXN9LHJl
bW92ZTpmdW5jdGlvbihkKXt2YXIgPQ0KZj0zRHRoaXMub3B0aW9ucyxnPTNE
dGhpcy5saXMuZXEoZCkucmVtb3ZlKCksZT0zRHRoaXMucGFuZWxzLmVxKGQp
LnJlbW92ZT0NCigpO2lmKGcuaGFzQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQi
KSYmdGhpcy5hbmNob3JzLmxlbmd0aD4xKXt0aGlzLnNlbGVjdCg9DQpkKyhk
KzE8dGhpcy5hbmNob3JzLmxlbmd0aD8xOi0xKSl9Zi5kaXNhYmxlZD0zRGMu
bWFwKGMuZ3JlcChmLmRpc2FibGVkLGZ1PQ0KbmN0aW9uKGosaCl7cmV0dXJu
IGohPTNEZH0pLGZ1bmN0aW9uKGosaCl7cmV0dXJuID0NCmo+PTNEZD8tLWo6
an0pO3RoaXMuX3RhYmlmeSgpO3RoaXMuX3RyaWdnZXIoInJlbW92ZSIsbnVs
bCx0aGlzLl91aShnLmZpbmQ9DQooImEiKVswXSxlWzBdKSk7cmV0dXJuIHRo
aXN9LGVuYWJsZTpmdW5jdGlvbihkKXt2YXIgPQ0KZT0zRHRoaXMub3B0aW9u
cztpZihjLmluQXJyYXkoZCxlLmRpc2FibGVkKT0zRD0zRC0xKXtyZXR1cm59
dGhpcy5saXMuZXEoZD0NCikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2Fi
bGVkIik7ZS5kaXNhYmxlZD0zRGMuZ3JlcChlLmRpc2FibGVkLGZ1bmN0aW89
DQpuKGcsZil7cmV0dXJuID0NCmchPTNEZH0pO3RoaXMuX3RyaWdnZXIoImVu
YWJsZSIsbnVsbCx0aGlzLl91aSh0aGlzLmFuY2hvcnNbZF0sdGhpcy5wYW5l
bHM9DQpbZF0pKTtyZXR1cm4gdGhpc30sZGlzYWJsZTpmdW5jdGlvbihlKXt2
YXIgPQ0KZD0zRHRoaXMsZj0zRHRoaXMub3B0aW9ucztpZihlIT0zRGYuc2Vs
ZWN0ZWQpe3RoaXMubGlzLmVxKGUpLmFkZENsYXNzKCJ1aT0NCi1zdGF0ZS1k
aXNhYmxlZCIpO2YuZGlzYWJsZWQucHVzaChlKTtmLmRpc2FibGVkLnNvcnQo
KTt0aGlzLl90cmlnZ2VyKCJkaXM9DQphYmxlIixudWxsLHRoaXMuX3VpKHRo
aXMuYW5jaG9yc1tlXSx0aGlzLnBhbmVsc1tlXSkpfXJldHVybiA9DQp0aGlz
fSxzZWxlY3Q6ZnVuY3Rpb24oZCl7aWYodHlwZW9mID0NCmQ9M0Q9M0Qic3Ry
aW5nIil7ZD0zRHRoaXMuYW5jaG9ycy5pbmRleCh0aGlzLmFuY2hvcnMuZmls
dGVyKCJbaHJlZiQ9M0QiK2Q9DQorIl0iKSl9ZWxzZXtpZihkPTNEPTNEPTNE
bnVsbCl7ZD0zRC0xfX1pZihkPTNEPTNELTEmJnRoaXMub3B0aW9ucy5jb2xs
YXBzPQ0KaWJsZSl7ZD0zRHRoaXMub3B0aW9ucy5zZWxlY3RlZH10aGlzLmFu
Y2hvcnMuZXEoZCkudHJpZ2dlcih0aGlzLm9wdGlvbnMuZT0NCnZlbnQrIi50
YWJzIik7cmV0dXJuIHRoaXN9LGxvYWQ6ZnVuY3Rpb24oZyl7dmFyID0NCmU9
M0R0aGlzLGk9M0R0aGlzLm9wdGlvbnMsZD0zRHRoaXMuYW5jaG9ycy5lcShn
KVswXSxmPTNEYy5kYXRhKGQsImxvYWQudGE9DQpicyIpO3RoaXMuYWJvcnQo
KTtpZighZnx8dGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJzIikubGVuZ3RoIT0z
RD0zRDAmJmMuZGF0PQ0KYShkLCJjYWNoZS50YWJzIikpe3RoaXMuZWxlbWVu
dC5kZXF1ZXVlKCJ0YWJzIik7cmV0dXJufXRoaXMubGlzLmVxKGcpLmFkZD0N
CkNsYXNzKCJ1aS1zdGF0ZS1wcm9jZXNzaW5nIik7aWYoaS5zcGlubmVyKXt2
YXIgPQ0KaD0zRGMoInNwYW4iLGQpO2guZGF0YSgibGFiZWwudGFicyIsaC5o
dG1sKCkpLmh0bWwoaS5zcGlubmVyKX10aGlzLnhocj0zRD0NCmMuYWpheChj
LmV4dGVuZCh7fSxpLmFqYXhPcHRpb25zLHt1cmw6ZixzdWNjZXNzOmZ1bmN0
aW9uKGssail7YyhlLl9zYW5pdGk9DQp6ZVNlbGVjdG9yKGQuaGFzaCkpLmh0
bWwoayk7ZS5fY2xlYW51cCgpO2lmKGkuY2FjaGUpe2MuZGF0YShkLCJjYWNo
ZS50YWJzPQ0KIix0cnVlKX1lLl90cmlnZ2VyKCJsb2FkIixudWxsLGUuX3Vp
KGUuYW5jaG9yc1tnXSxlLnBhbmVsc1tnXSkpO3RyeXtpLmFqYT0NCnhPcHRp
b25zLnN1Y2Nlc3MoayxqKX1jYXRjaChsKXt9fSxlcnJvcjpmdW5jdGlvbihs
LGosayl7ZS5fY2xlYW51cCgpO2UuX3Q9DQpyaWdnZXIoImxvYWQiLG51bGws
ZS5fdWkoZS5hbmNob3JzW2ddLGUucGFuZWxzW2ddKSk7dHJ5e2kuYWpheE9w
dGlvbnMuZXJyPQ0Kb3IobCxqLGcsZCl9Y2F0Y2goayl7fX19KSk7ZS5lbGVt
ZW50LmRlcXVldWUoInRhYnMiKTtyZXR1cm4gPQ0KdGhpc30sYWJvcnQ6ZnVu
Y3Rpb24oKXt0aGlzLmVsZW1lbnQucXVldWUoW10pO3RoaXMucGFuZWxzLnN0
b3AoZmFsc2UsdHJ1ZT0NCik7dGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJzIix0
aGlzLmVsZW1lbnQucXVldWUoInRhYnMiKS5zcGxpY2UoLTIsMikpO2lmKHQ9
DQpoaXMueGhyKXt0aGlzLnhoci5hYm9ydCgpO2RlbGV0ZSB0aGlzLnhocn10
aGlzLl9jbGVhbnVwKCk7cmV0dXJuID0NCnRoaXN9LHVybDpmdW5jdGlvbihl
LGQpe3RoaXMuYW5jaG9ycy5lcShlKS5yZW1vdmVEYXRhKCJjYWNoZS50YWJz
IikuZGF0YSg9DQoibG9hZC50YWJzIixkKTtyZXR1cm4gdGhpc30sbGVuZ3Ro
OmZ1bmN0aW9uKCl7cmV0dXJuID0NCnRoaXMuYW5jaG9ycy5sZW5ndGh9fSk7
Yy5leHRlbmQoYy51aS50YWJzLHt2ZXJzaW9uOiIxLjgifSk7Yy5leHRlbmQo
Yy51aS49DQp0YWJzLnByb3RvdHlwZSx7cm90YXRpb246bnVsbCxyb3RhdGU6
ZnVuY3Rpb24oZixoKXt2YXIgPQ0KZD0zRHRoaXMsaT0zRHRoaXMub3B0aW9u
czt2YXIgPQ0KZT0zRGQuX3JvdGF0ZXx8KGQuX3JvdGF0ZT0zRGZ1bmN0aW9u
KGope2NsZWFyVGltZW91dChkLnJvdGF0aW9uKTtkLnJvdGF0aT0NCm9uPTNE
c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciA9DQprPTNEaS5zZWxlY3RlZDtk
LnNlbGVjdCgrK2s8ZC5hbmNob3JzLmxlbmd0aD9rOjApfSxmKTtpZihqKXtq
LnN0b3BQcm9wYWdhPQ0KdGlvbigpfX0pO3ZhciA9DQpnPTNEZC5fdW5yb3Rh
dGV8fChkLl91bnJvdGF0ZT0zRCFoP2Z1bmN0aW9uKGope2lmKGouY2xpZW50
WCl7ZC5yb3RhdGUobnVsPQ0KbCl9fTpmdW5jdGlvbihqKXt0PTNEaS5zZWxl
Y3RlZDtlKCl9KTtpZihmKXt0aGlzLmVsZW1lbnQuYmluZCgidGFic3Nob3ci
LD0NCmUpO3RoaXMuYW5jaG9ycy5iaW5kKGkuZXZlbnQrIi50YWJzIixnKTtl
KCl9ZWxzZXtjbGVhclRpbWVvdXQoZC5yb3RhdGlvbik9DQo7dGhpcy5lbGVt
ZW50LnVuYmluZCgidGFic3Nob3ciLGUpO3RoaXMuYW5jaG9ycy51bmJpbmQo
aS5ldmVudCsiLnRhYnMiLGcpPQ0KO2RlbGV0ZSB0aGlzLl9yb3RhdGU7ZGVs
ZXRlIHRoaXMuX3Vucm90YXRlfXJldHVybiB0aGlzfX0pfSkoalF1ZXJ5KTs7
DQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0MzNjUzLjFGNUFFREEw
DQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KQ29u
dGVudC1Mb2NhdGlvbjogaHR0cDovL3d3dy5jYXJ0YXNpLml0L2dyZXlib3gv
QUpTLmpzDQoNCkFKUz0zRHtCQVNFX1VSTDoiIixkcmFnX29iajpudWxsLGRy
YWdfZWxtOm51bGwsX2Ryb3Bfem9uZXM6W10sX2N1cl9wb3M6bnU9DQpsbCxn
ZXRTY3JvbGxUb3A6ZnVuY3Rpb24oKXs9MEE9DQp2YXIgdDs9MEE9DQppZihk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5zY3JvbGxUb3Apez0wQT0NCnQ9M0Rkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuc2Nyb2xsVG9wOz0wQT0NCn1lbHNlez0wQT0NCmlmKGRvY3VtZW50
LmJvZHkpez0wQT0NCnQ9M0Rkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDs9MEE9
DQp9PTBBPQ0KfT0wQT0NCnJldHVybiB0Oz0wQT0NCn0sYWRkQ2xhc3M6ZnVu
Y3Rpb24oKXs9MEE9DQp2YXIgXzI9M0RBSlMuZm9yY2VBcnJheShhcmd1bWVu
dHMpOz0wQT0NCnZhciBfMz0zRF8yLnBvcCgpOz0wQT0NCnZhciBfND0zRGZ1
bmN0aW9uKG8pez0wQT0NCmlmKCFuZXcgUmVnRXhwKCIoXnxcXHMpIitfMysi
KFxcc3wkKSIpLnRlc3Qoby5jbGFzc05hbWUpKXs9MEE9DQpvLmNsYXNzTmFt
ZSs9M0Qoby5jbGFzc05hbWU/IiAiOiIiKStfMzs9MEE9DQp9PTBBPQ0KfTs9
MEE9DQpBSlMubWFwKF8yLGZ1bmN0aW9uKF82KXs9MEE9DQpfNChfNik7PTBB
PQ0KfSk7PTBBPQ0KfSxzZXRTdHlsZTpmdW5jdGlvbigpez0wQT0NCnZhciBf
Nz0zREFKUy5mb3JjZUFycmF5KGFyZ3VtZW50cyk7PTBBPQ0KdmFyIF84PTNE
XzcucG9wKCk7PTBBPQ0KdmFyIF85PTNEXzcucG9wKCk7PTBBPQ0KQUpTLm1h
cChfNyxmdW5jdGlvbihfYSl7PTBBPQ0KX2Euc3R5bGVbXzldPTNEQUpTLmdl
dENzc0RpbShfOCk7PTBBPQ0KfSk7PTBBPQ0KfSxleHRlbmQ6ZnVuY3Rpb24o
X2Ipez0wQT0NCnZhciBfYz0zRG5ldyB0aGlzKCJub19pbml0Iik7PTBBPQ0K
Zm9yKGsgaW4gX2Ipez0wQT0NCnZhciBfZD0zRF9jW2tdOz0wQT0NCnZhciBf
ZT0zRF9iW2tdOz0wQT0NCmlmKF9kJiZfZCE9M0RfZSYmdHlwZW9mIF9lPTNE
PTNEImZ1bmN0aW9uIil7PTBBPQ0KX2U9M0R0aGlzLl9wYXJlbnRpemUoX2Us
X2QpOz0wQT0NCn09MEE9DQpfY1trXT0zRF9lOz0wQT0NCn09MEE9DQpyZXR1
cm4gbmV3IEFKUy5DbGFzcyhfYyk7PTBBPQ0KfSxsb2c6ZnVuY3Rpb24obyl7
PTBBPQ0KaWYod2luZG93LmNvbnNvbGUpez0wQT0NCmNvbnNvbGUubG9nKG8p
Oz0wQT0NCn1lbHNlez0wQT0NCnZhciBkaXY9M0RBSlMuJCgiYWpzX2xvZ2dl
ciIpOz0wQT0NCmlmKCFkaXYpez0wQT0NCmRpdj0zREFKUy5ESVYoe2lkOiJh
anNfbG9nZ2VyIiwic3R5bGUiOiJjb2xvcjogZ3JlZW47IHBvc2l0aW9uOiA9
DQphYnNvbHV0ZTsgbGVmdDogMCJ9KTs9MEE9DQpkaXYuc3R5bGUudG9wPTNE
QUpTLmdldFNjcm9sbFRvcCgpKyJweCI7PTBBPQ0KQUpTLkFDTihBSlMuZ2V0
Qm9keSgpLGRpdik7PTBBPQ0KfT0wQT0NCkFKUy5zZXRIVE1MKGRpdiwiIitv
KTs9MEE9DQp9PTBBPQ0KfSxzZXRIZWlnaHQ6ZnVuY3Rpb24oKXs9MEE9DQp2
YXIgXzExPTNEQUpTLmZvcmNlQXJyYXkoYXJndW1lbnRzKTs9MEE9DQpfMTEu
c3BsaWNlKF8xMS5sZW5ndGgtMSwwLCJoZWlnaHQiKTs9MEE9DQpBSlMuc2V0
U3R5bGUuYXBwbHkobnVsbCxfMTEpOz0wQT0NCn0sX2dldFJlYWxTY29wZTpm
dW5jdGlvbihmbixfMTMpez0wQT0NCl8xMz0zREFKUy4kQShfMTMpOz0wQT0N
CnZhciBfMTQ9M0Rmbi5fY3Njb3BlfHx3aW5kb3c7PTBBPQ0KcmV0dXJuIGZ1
bmN0aW9uKCl7PTBBPQ0KdmFyIF8xNT0zREFKUy4kRkEoYXJndW1lbnRzKS5j
b25jYXQoXzEzKTs9MEE9DQpyZXR1cm4gZm4uYXBwbHkoXzE0LF8xNSk7PTBB
PQ0KfTs9MEE9DQp9LGRvY3VtZW50SW5zZXJ0OmZ1bmN0aW9uKGVsbSl7PTBB
PQ0KaWYodHlwZW9mIChlbG0pPTNEPTNEInN0cmluZyIpez0wQT0NCmVsbT0z
REFKUy5IVE1MMkRPTShlbG0pOz0wQT0NCn09MEE9DQpkb2N1bWVudC53cml0
ZSgiPHNwYW4gaWQ9M0RcImR1bW15X2hvbGRlclwiPjwvc3Bhbj4iKTs9MEE9
DQpBSlMuc3dhcERPTShBSlMuJCgiZHVtbXlfaG9sZGVyIiksZWxtKTs9MEE9
DQp9LGdldFdpbmRvd1NpemU6ZnVuY3Rpb24oZG9jKXs9MEE9DQpkb2M9M0Rk
b2N8fGRvY3VtZW50Oz0wQT0NCnZhciBfMTgsXzE5Oz0wQT0NCmlmKHNlbGYu
aW5uZXJIZWlnaHQpez0wQT0NCl8xOD0zRHNlbGYuaW5uZXJXaWR0aDs9MEE9
DQpfMTk9M0RzZWxmLmlubmVySGVpZ2h0Oz0wQT0NCn1lbHNlez0wQT0NCmlm
KGRvYy5kb2N1bWVudEVsZW1lbnQmJmRvYy5kb2N1bWVudEVsZW1lbnQuY2xp
ZW50SGVpZ2h0KXs9MEE9DQpfMTg9M0Rkb2MuZG9jdW1lbnRFbGVtZW50LmNs
aWVudFdpZHRoOz0wQT0NCl8xOT0zRGRvYy5kb2N1bWVudEVsZW1lbnQuY2xp
ZW50SGVpZ2h0Oz0wQT0NCn1lbHNlez0wQT0NCmlmKGRvYy5ib2R5KXs9MEE9
DQpfMTg9M0Rkb2MuYm9keS5jbGllbnRXaWR0aDs9MEE9DQpfMTk9M0Rkb2Mu
Ym9keS5jbGllbnRIZWlnaHQ7PTBBPQ0KfT0wQT0NCn09MEE9DQp9PTBBPQ0K
cmV0dXJuIHsidyI6XzE4LCJoIjpfMTl9Oz0wQT0NCn0sZmxhdHRlbkxpc3Q6
ZnVuY3Rpb24oXzFhKXs9MEE9DQp2YXIgcj0zRFtdOz0wQT0NCnZhciBfMWM9
M0RmdW5jdGlvbihyLGwpez0wQT0NCkFKUy5tYXAobCxmdW5jdGlvbihvKXs9
MEE9DQppZihvPTNEPTNEbnVsbCl7PTBBPQ0KfWVsc2V7PTBBPQ0KaWYoQUpT
LmlzQXJyYXkobykpez0wQT0NCl8xYyhyLG8pOz0wQT0NCn1lbHNlez0wQT0N
CnIucHVzaChvKTs9MEE9DQp9PTBBPQ0KfT0wQT0NCn0pOz0wQT0NCn07PTBB
PQ0KXzFjKHIsXzFhKTs9MEE9DQpyZXR1cm4gcjs9MEE9DQp9LGlzRnVuY3Rp
b246ZnVuY3Rpb24ob2JqKXs9MEE9DQpyZXR1cm4gKHR5cGVvZiBvYmo9M0Q9
M0QiZnVuY3Rpb24iKTs9MEE9DQp9LHNldEV2ZW50S2V5OmZ1bmN0aW9uKGUp
ez0wQT0NCmUua2V5PTNEZS5rZXlDb2RlP2Uua2V5Q29kZTplLmNoYXJDb2Rl
Oz0wQT0NCmlmKHdpbmRvdy5ldmVudCl7PTBBPQ0KZS5jdHJsPTNEd2luZG93
LmV2ZW50LmN0cmxLZXk7PTBBPQ0KZS5zaGlmdD0zRHdpbmRvdy5ldmVudC5z
aGlmdEtleTs9MEE9DQp9ZWxzZXs9MEE9DQplLmN0cmw9M0RlLmN0cmxLZXk7
PTBBPQ0KZS5zaGlmdD0zRGUuc2hpZnRLZXk7PTBBPQ0KfT0wQT0NCnN3aXRj
aChlLmtleSl7PTBBPQ0KY2FzZSA2MzIzMjo9MEE9DQplLmtleT0zRDM4Oz0w
QT0NCmJyZWFrOz0wQT0NCmNhc2UgNjMyMzM6PTBBPQ0KZS5rZXk9M0Q0MDs9
MEE9DQpicmVhazs9MEE9DQpjYXNlIDYzMjM1Oj0wQT0NCmUua2V5PTNEMzk7
PTBBPQ0KYnJlYWs7PTBBPQ0KY2FzZSA2MzIzNDo9MEE9DQplLmtleT0zRDM3
Oz0wQT0NCmJyZWFrOz0wQT0NCn09MEE9DQp9LHJlbW92ZUVsZW1lbnQ6ZnVu
Y3Rpb24oKXs9MEE9DQp2YXIgXzIyPTNEQUpTLmZvcmNlQXJyYXkoYXJndW1l
bnRzKTs9MEE9DQpBSlMubWFwKF8yMixmdW5jdGlvbihlbG0pez0wQT0NCkFK
Uy5zd2FwRE9NKGVsbSxudWxsKTs9MEE9DQp9KTs9MEE9DQp9LF91bmxvYWRM
aXN0ZW5lcnM6ZnVuY3Rpb24oKXs9MEE9DQppZihBSlMubGlzdGVuZXJzKXs9
MEE9DQpBSlMubWFwKEFKUy5saXN0ZW5lcnMsZnVuY3Rpb24oZWxtLF8yNSxm
bil7PTBBPQ0KQUpTLlJFVihlbG0sXzI1LGZuKTs9MEE9DQp9KTs9MEE9DQp9
PTBBPQ0KQUpTLmxpc3RlbmVycz0zRFtdOz0wQT0NCn0sam9pbjpmdW5jdGlv
bihfMjcsXzI4KXs9MEE9DQp0cnl7PTBBPQ0KcmV0dXJuIF8yOC5qb2luKF8y
Nyk7PTBBPQ0KfT0wQT0NCmNhdGNoKGUpez0wQT0NCnZhciByPTNEXzI4WzBd
fHwiIjs9MEE9DQpBSlMubWFwKF8yOCxmdW5jdGlvbihlbG0pez0wQT0NCnIr
PTNEXzI3K2VsbTs9MEE9DQp9LDEpOz0wQT0NCnJldHVybiByKyIiOz0wQT0N
Cn09MEE9DQp9LGdldEluZGV4OmZ1bmN0aW9uKGVsbSxfMmMsXzJkKXs9MEE9
DQpmb3IodmFyIGk9M0QwO2k8XzJjLmxlbmd0aDtpKyspez0wQT0NCmlmKF8y
ZCYmXzJkKF8yY1tpXSl8fGVsbT0zRD0zRF8yY1tpXSl7PTBBPQ0KcmV0dXJu
IGk7PTBBPQ0KfT0wQT0NCn09MEE9DQpyZXR1cm4gLTE7PTBBPQ0KfSxpc0lu
OmZ1bmN0aW9uKGVsbSxfMzApez0wQT0NCnZhciBpPTNEQUpTLmdldEluZGV4
KGVsbSxfMzApOz0wQT0NCmlmKGkhPTNELTEpez0wQT0NCnJldHVybiB0cnVl
Oz0wQT0NCn1lbHNlez0wQT0NCnJldHVybiBmYWxzZTs9MEE9DQp9PTBBPQ0K
fSxpc0FycmF5OmZ1bmN0aW9uKG9iail7PTBBPQ0KcmV0dXJuIG9iaiBpbnN0
YW5jZW9mIEFycmF5Oz0wQT0NCn0sc2V0TGVmdDpmdW5jdGlvbigpez0wQT0N
CnZhciBfMzM9M0RBSlMuZm9yY2VBcnJheShhcmd1bWVudHMpOz0wQT0NCl8z
My5zcGxpY2UoXzMzLmxlbmd0aC0xLDAsImxlZnQiKTs9MEE9DQpBSlMuc2V0
U3R5bGUuYXBwbHkobnVsbCxfMzMpOz0wQT0NCn0sYXBwZW5kQ2hpbGROb2Rl
czpmdW5jdGlvbihlbG0pez0wQT0NCmlmKGFyZ3VtZW50cy5sZW5ndGg+PTNE
Mil7PTBBPQ0KQUpTLm1hcChhcmd1bWVudHMsZnVuY3Rpb24obil7PTBBPQ0K
aWYoQUpTLmlzU3RyaW5nKG4pKXs9MEE9DQpuPTNEQUpTLlROKG4pOz0wQT0N
Cn09MEE9DQppZihBSlMuaXNEZWZpbmVkKG4pKXs9MEE9DQplbG0uYXBwZW5k
Q2hpbGQobik7PTBBPQ0KfT0wQT0NCn0sMSk7PTBBPQ0KfT0wQT0NCnJldHVy
biBlbG07PTBBPQ0KfSxnZXRFbGVtZW50c0J5VGFnQW5kQ2xhc3NOYW1lOmZ1
bmN0aW9uKF8zNixfMzcsXzM4LF8zOSl7PTBBPQ0KdmFyIF8zYT0zRFtdOz0w
QT0NCmlmKCFBSlMuaXNEZWZpbmVkKF8zOCkpez0wQT0NCl8zOD0zRGRvY3Vt
ZW50Oz0wQT0NCn09MEE9DQppZighQUpTLmlzRGVmaW5lZChfMzYpKXs9MEE9
DQpfMzY9M0QiKiI7PTBBPQ0KfT0wQT0NCnZhciBlbHM9M0RfMzguZ2V0RWxl
bWVudHNCeVRhZ05hbWUoXzM2KTs9MEE9DQp2YXIgXzNjPTNEZWxzLmxlbmd0
aDs9MEE9DQp2YXIgXzNkPTNEbmV3IFJlZ0V4cCgiKF58XFxzKSIrXzM3KyIo
XFxzfCQpIik7PTBBPQ0KZm9yKGk9M0QwLGo9M0QwO2k8XzNjO2krKyl7PTBB
PQ0KaWYoXzNkLnRlc3QoZWxzW2ldLmNsYXNzTmFtZSl8fF8zNz0zRD0zRG51
bGwpez0wQT0NCl8zYVtqXT0zRGVsc1tpXTs9MEE9DQpqKys7PTBBPQ0KfT0w
QT0NCn09MEE9DQppZihfMzkpez0wQT0NCnJldHVybiBfM2FbMF07PTBBPQ0K
fWVsc2V7PTBBPQ0KcmV0dXJuIF8zYTs9MEE9DQp9PTBBPQ0KfSxpc09wZXJh
OmZ1bmN0aW9uKCl7PTBBPQ0KcmV0dXJuIChuYXZpZ2F0b3IudXNlckFnZW50
LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigib3BlcmEiKSE9M0QtMSk7PTBBPQ0K
fSxpc1N0cmluZzpmdW5jdGlvbihvYmopez0wQT0NCnJldHVybiAodHlwZW9m
IG9iaj0zRD0zRCJzdHJpbmciKTs9MEE9DQp9LGhpZGVFbGVtZW50OmZ1bmN0
aW9uKGVsbSl7PTBBPQ0KdmFyIF80MD0zREFKUy5mb3JjZUFycmF5KGFyZ3Vt
ZW50cyk7PTBBPQ0KQUpTLm1hcChfNDAsZnVuY3Rpb24oZWxtKXs9MEE9DQpl
bG0uc3R5bGUuZGlzcGxheT0zRCJub25lIjs9MEE9DQp9KTs9MEE9DQp9LHNl
dE9wYWNpdHk6ZnVuY3Rpb24oZWxtLHApez0wQT0NCmVsbS5zdHlsZS5vcGFj
aXR5PTNEcDs9MEE9DQplbG0uc3R5bGUuZmlsdGVyPTNEImFscGhhKG9wYWNp
dHk9M0QiK3AqMTAwKyIpIjs9MEE9DQp9LGluc2VydEJlZm9yZTpmdW5jdGlv
bihlbG0sXzQ1KXs9MEE9DQpfNDUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
ZWxtLF80NSk7PTBBPQ0KcmV0dXJuIGVsbTs9MEE9DQp9LHNldFdpZHRoOmZ1
bmN0aW9uKCl7PTBBPQ0KdmFyIF80Nj0zREFKUy5mb3JjZUFycmF5KGFyZ3Vt
ZW50cyk7PTBBPQ0KXzQ2LnNwbGljZShfNDYubGVuZ3RoLTEsMCwid2lkdGgi
KTs9MEE9DQpBSlMuc2V0U3R5bGUuYXBwbHkobnVsbCxfNDYpOz0wQT0NCn0s
Y3JlYXRlQXJyYXk6ZnVuY3Rpb24odil7PTBBPQ0KaWYoQUpTLmlzQXJyYXko
dikmJiFBSlMuaXNTdHJpbmcodikpez0wQT0NCnJldHVybiB2Oz0wQT0NCn1l
bHNlez0wQT0NCmlmKCF2KXs9MEE9DQpyZXR1cm4gW107PTBBPQ0KfWVsc2V7
PTBBPQ0KcmV0dXJuIFt2XTs9MEE9DQp9PTBBPQ0KfT0wQT0NCn0saXNEaWN0
OmZ1bmN0aW9uKG8pez0wQT0NCnZhciBfNDk9M0RTdHJpbmcobyk7PTBBPQ0K
cmV0dXJuIF80OS5pbmRleE9mKCIgT2JqZWN0IikhPTNELTE7PTBBPQ0KfSxp
c01vemlsbGE6ZnVuY3Rpb24oKXs9MEE9DQpyZXR1cm4gPQ0KKG5hdmlnYXRv
ci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJnZWNrbyIpIT0z
RC0xJiZuYXZpZ2F0b3IucHJvZD0NCnVjdFN1Yj49M0QyMDAzMDIxMCk7PTBB
PQ0KfSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGVsbSxfNGIsZm4s
XzRkKXs9MEE9DQp2YXIgXzRlPTNEImFqc2xfIitfNGIrZm47PTBBPQ0KaWYo
IV80ZCl7PTBBPQ0KXzRkPTNEZmFsc2U7PTBBPQ0KfT0wQT0NCmZuPTNEZWxt
W180ZV18fGZuOz0wQT0NCmlmKGVsbVsib24iK180Yl09M0Q9M0Rmbil7PTBB
PQ0KZWxtWyJvbiIrXzRiXT0zRGVsbVtfNGUrIm9sZCJdOz0wQT0NCn09MEE9
DQppZihlbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcil7PTBBPQ0KZWxtLnJlbW92
ZUV2ZW50TGlzdGVuZXIoXzRiLGZuLF80ZCk7PTBBPQ0KaWYoQUpTLmlzT3Bl
cmEoKSl7PTBBPQ0KZWxtLnJlbW92ZUV2ZW50TGlzdGVuZXIoXzRiLGZuLCFf
NGQpOz0wQT0NCn09MEE9DQp9ZWxzZXs9MEE9DQppZihlbG0uZGV0YWNoRXZl
bnQpez0wQT0NCmVsbS5kZXRhY2hFdmVudCgib24iK180Yixmbik7PTBBPQ0K
fT0wQT0NCn09MEE9DQp9LGNhbGxMYXRlcjpmdW5jdGlvbihmbixfNTApez0w
QT0NCnZhciBfNTE9M0RmdW5jdGlvbigpez0wQT0NCmZuKCk7PTBBPQ0KfTs9
MEE9DQp3aW5kb3cuc2V0VGltZW91dChfNTEsXzUwKTs9MEE9DQp9LHNldFRv
cDpmdW5jdGlvbigpez0wQT0NCnZhciBfNTI9M0RBSlMuZm9yY2VBcnJheShh
cmd1bWVudHMpOz0wQT0NCl81Mi5zcGxpY2UoXzUyLmxlbmd0aC0xLDAsInRv
cCIpOz0wQT0NCkFKUy5zZXRTdHlsZS5hcHBseShudWxsLF81Mik7PTBBPQ0K
fSxfY3JlYXRlRG9tU2hvcnRjdXRzOmZ1bmN0aW9uKCl7PTBBPQ0KdmFyID0N
Cl81Mz0zRFsidWwiLCJsaSIsInRkIiwidHIiLCJ0aCIsInRib2R5IiwidGFi
bGUiLCJpbnB1dCIsInNwYW4iLCJiIiwiYSIsImQ9DQppdiIsImltZyIsImJ1
dHRvbiIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImJyIiwidGV4
dGFyZWEiLCJmb3JtIiwiPQ0KcCIsInNlbGVjdCIsIm9wdGlvbiIsIm9wdGdy
b3VwIiwiaWZyYW1lIiwic2NyaXB0IiwiY2VudGVyIiwiZGwiLCJkdCIsImRk
Ij0NCiwic21hbGwiLCJwcmUiLCJpIl07PTBBPQ0KdmFyIF81ND0zRGZ1bmN0
aW9uKGVsbSl7PTBBPQ0KQUpTW2VsbS50b1VwcGVyQ2FzZSgpXT0zRGZ1bmN0
aW9uKCl7PTBBPQ0KcmV0dXJuIEFKUy5jcmVhdGVET00uYXBwbHkobnVsbCxb
ZWxtLGFyZ3VtZW50c10pOz0wQT0NCn07PTBBPQ0KfTs9MEE9DQpBSlMubWFw
KF81MyxfNTQpOz0wQT0NCkFKUy5UTj0zRGZ1bmN0aW9uKF81Nil7PTBBPQ0K
cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKF81Nik7PTBBPQ0KfTs9
MEE9DQp9LGFkZENhbGxiYWNrOmZ1bmN0aW9uKGZuKXs9MEE9DQp0aGlzLmNh
bGxiYWNrcy51bnNoaWZ0KGZuKTs9MEE9DQp9LGJpbmRNZXRob2RzOmZ1bmN0
aW9uKF81OCl7PTBBPQ0KZm9yKHZhciBrIGluIF81OCl7PTBBPQ0KdmFyIF81
YT0zRF81OFtrXTs9MEE9DQppZih0eXBlb2YgKF81YSk9M0Q9M0QiZnVuY3Rp
b24iKXs9MEE9DQpfNThba109M0RBSlMuJGIoXzVhLF81OCk7PTBBPQ0KfT0w
QT0NCn09MEE9DQp9LHBhcnRpYWw6ZnVuY3Rpb24oZm4pez0wQT0NCnZhciBf
NWM9M0RBSlMuJEZBKGFyZ3VtZW50cyk7PTBBPQ0KXzVjLnNoaWZ0KCk7PTBB
PQ0KcmV0dXJuIGZ1bmN0aW9uKCl7PTBBPQ0KXzVjPTNEXzVjLmNvbmNhdChB
SlMuJEZBKGFyZ3VtZW50cykpOz0wQT0NCnJldHVybiBmbi5hcHBseSh3aW5k
b3csXzVjKTs9MEE9DQp9Oz0wQT0NCn0saXNOdW1iZXI6ZnVuY3Rpb24ob2Jq
KXs9MEE9DQpyZXR1cm4gKHR5cGVvZiBvYmo9M0Q9M0QibnVtYmVyIik7PTBB
PQ0KfSxnZXRDc3NEaW06ZnVuY3Rpb24oZGltKXs9MEE9DQppZihBSlMuaXNT
dHJpbmcoZGltKSl7PTBBPQ0KcmV0dXJuIGRpbTs9MEE9DQp9ZWxzZXs9MEE9
DQpyZXR1cm4gZGltKyJweCI7PTBBPQ0KfT0wQT0NCn0saXNJZTpmdW5jdGlv
bigpez0wQT0NCnJldHVybiA9DQoobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xv
d2VyQ2FzZSgpLmluZGV4T2YoIm1zaWUiKSE9M0QtMSYmbmF2aWdhdG9yLnVz
ZXJBPQ0KZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm9wZXJhIik9M0Q9
M0QtMSk7PTBBPQ0KfSxyZW1vdmVDbGFzczpmdW5jdGlvbigpez0wQT0NCnZh
ciBfNWY9M0RBSlMuZm9yY2VBcnJheShhcmd1bWVudHMpOz0wQT0NCnZhciBj
bHM9M0RfNWYucG9wKCk7PTBBPQ0KdmFyIF82MT0zRGZ1bmN0aW9uKG8pez0w
QT0NCm8uY2xhc3NOYW1lPTNEby5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVn
RXhwKCJcXHM/IitjbHMsImciKSwiIik7PTBBPQ0KfTs9MEE9DQpBSlMubWFw
KF81ZixmdW5jdGlvbihlbG0pez0wQT0NCl82MShlbG0pOz0wQT0NCn0pOz0w
QT0NCn0sc2V0SFRNTDpmdW5jdGlvbihlbG0sXzY1KXs9MEE9DQplbG0uaW5u
ZXJIVE1MPTNEXzY1Oz0wQT0NCnJldHVybiBlbG07PTBBPQ0KfSxtYXA6ZnVu
Y3Rpb24oXzY2LGZuLF82OCxfNjkpez0wQT0NCnZhciBpPTNEMCxsPTNEXzY2
Lmxlbmd0aDs9MEE9DQppZihfNjgpez0wQT0NCmk9M0RfNjg7PTBBPQ0KfT0w
QT0NCmlmKF82OSl7PTBBPQ0KbD0zRF82OTs9MEE9DQp9PTBBPQ0KZm9yKGk7
aTxsO2krKyl7PTBBPQ0KdmFyIHZhbD0zRGZuKF82NltpXSxpKTs9MEE9DQpp
Zih2YWwhPTNEdW5kZWZpbmVkKXs9MEE9DQpyZXR1cm4gdmFsOz0wQT0NCn09
MEE9DQp9PTBBPQ0KfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGVsbSxf
NmUsZm4sXzcwLF83MSl7PTBBPQ0KdmFyIF83Mj0zRCJhanNsXyIrXzZlK2Zu
Oz0wQT0NCmlmKCFfNzEpez0wQT0NCl83MT0zRGZhbHNlOz0wQT0NCn09MEE9
DQpBSlMubGlzdGVuZXJzPTNEQUpTLiRBKEFKUy5saXN0ZW5lcnMpOz0wQT0N
CmlmKEFKUy5pc0luKF82ZSxbImtleXByZXNzIiwia2V5ZG93biIsImtleXVw
IiwiY2xpY2siXSkpez0wQT0NCnZhciBfNzM9M0Rmbjs9MEE9DQpmbj0zRGZ1
bmN0aW9uKGUpez0wQT0NCkFKUy5zZXRFdmVudEtleShlKTs9MEE9DQpyZXR1
cm4gXzczLmFwcGx5KHdpbmRvdyxhcmd1bWVudHMpOz0wQT0NCn07PTBBPQ0K
fT0wQT0NCnZhciBfNzU9M0RBSlMuaXNJbihfNmUsWyJzdWJtaXQiLCJsb2Fk
Iiwic2Nyb2xsIiwicmVzaXplIl0pOz0wQT0NCnZhciBfNzY9M0RBSlMuJEEo
ZWxtKTs9MEE9DQpBSlMubWFwKF83NixmdW5jdGlvbihfNzcpez0wQT0NCmlm
KF83MCl7PTBBPQ0KdmFyIF83OD0zRGZuOz0wQT0NCmZuPTNEZnVuY3Rpb24o
ZSl7PTBBPQ0KQUpTLlJFVihfNzcsXzZlLGZuKTs9MEE9DQpyZXR1cm4gXzc4
LmFwcGx5KHdpbmRvdyxhcmd1bWVudHMpOz0wQT0NCn07PTBBPQ0KfT0wQT0N
CmlmKF83NSl7PTBBPQ0KdmFyIF83YT0zRF83N1sib24iK182ZV07PTBBPQ0K
dmFyIF83Yj0zRGZ1bmN0aW9uKCl7PTBBPQ0KaWYoXzdhKXs9MEE9DQpmbihh
cmd1bWVudHMpOz0wQT0NCnJldHVybiBfN2EoYXJndW1lbnRzKTs9MEE9DQp9
ZWxzZXs9MEE9DQpyZXR1cm4gZm4oYXJndW1lbnRzKTs9MEE9DQp9PTBBPQ0K
fTs9MEE9DQpfNzdbXzcyXT0zRF83Yjs9MEE9DQpfNzdbXzcyKyJvbGQiXT0z
RF83YTs9MEE9DQplbG1bIm9uIitfNmVdPTNEXzdiOz0wQT0NCn1lbHNlez0w
QT0NCl83N1tfNzJdPTNEZm47PTBBPQ0KaWYoXzc3LmF0dGFjaEV2ZW50KXs9
MEE9DQpfNzcuYXR0YWNoRXZlbnQoIm9uIitfNmUsZm4pOz0wQT0NCn1lbHNl
ez0wQT0NCmlmKF83Ny5hZGRFdmVudExpc3RlbmVyKXs9MEE9DQpfNzcuYWRk
RXZlbnRMaXN0ZW5lcihfNmUsZm4sXzcxKTs9MEE9DQp9PTBBPQ0KfT0wQT0N
CkFKUy5saXN0ZW5lcnMucHVzaChbXzc3LF82ZSxmbl0pOz0wQT0NCn09MEE9
DQp9KTs9MEE9DQp9LHByZWxvYWRJbWFnZXM6ZnVuY3Rpb24oKXs9MEE9DQpB
SlMuQUVWKHdpbmRvdywibG9hZCIsQUpTLiRwKGZ1bmN0aW9uKF83Yyl7PTBB
PQ0KQUpTLm1hcChfN2MsZnVuY3Rpb24oc3JjKXs9MEE9DQp2YXIgcGljPTNE
bmV3IEltYWdlKCk7PTBBPQ0KcGljLnNyYz0zRHNyYzs9MEE9DQp9KTs9MEE9
DQp9LGFyZ3VtZW50cykpOz0wQT0NCn0sZm9yY2VBcnJheTpmdW5jdGlvbihf
N2Ypez0wQT0NCnZhciByPTNEW107PTBBPQ0KQUpTLm1hcChfN2YsZnVuY3Rp
b24oZWxtKXs9MEE9DQpyLnB1c2goZWxtKTs9MEE9DQp9KTs9MEE9DQpyZXR1
cm4gcjs9MEE9DQp9LHVwZGF0ZTpmdW5jdGlvbihsMSxsMil7PTBBPQ0KZm9y
KHZhciBpIGluIGwyKXs9MEE9DQpsMVtpXT0zRGwyW2ldOz0wQT0NCn09MEE9
DQpyZXR1cm4gbDE7PTBBPQ0KfSxnZXRCb2R5OmZ1bmN0aW9uKCl7PTBBPQ0K
cmV0dXJuIEFKUy4kYnl0YygiYm9keSIpWzBdOz0wQT0NCn0sSFRNTDJET006
ZnVuY3Rpb24oXzg1LF84Nil7PTBBPQ0KdmFyIGQ9M0RBSlMuRElWKCk7PTBB
PQ0KZC5pbm5lckhUTUw9M0RfODU7PTBBPQ0KaWYoXzg2KXs9MEE9DQpyZXR1
cm4gZC5jaGlsZE5vZGVzWzBdOz0wQT0NCn1lbHNlez0wQT0NCnJldHVybiBk
Oz0wQT0NCn09MEE9DQp9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oaWQpez0wQT0N
CmlmKEFKUy5pc1N0cmluZyhpZCl8fEFKUy5pc051bWJlcihpZCkpez0wQT0N
CnJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7PTBBPQ0KfWVs
c2V7PTBBPQ0KcmV0dXJuIGlkOz0wQT0NCn09MEE9DQp9LHNob3dFbGVtZW50
OmZ1bmN0aW9uKCl7PTBBPQ0KdmFyIF84OT0zREFKUy5mb3JjZUFycmF5KGFy
Z3VtZW50cyk7PTBBPQ0KQUpTLm1hcChfODksZnVuY3Rpb24oZWxtKXs9MEE9
DQplbG0uc3R5bGUuZGlzcGxheT0zRCIiOz0wQT0NCn0pOz0wQT0NCn0sYmlu
ZDpmdW5jdGlvbihmbixfOGMsXzhkKXs9MEE9DQpmbi5fY3Njb3BlPTNEXzhj
Oz0wQT0NCnJldHVybiBBSlMuX2dldFJlYWxTY29wZShmbixfOGQpOz0wQT0N
Cn0sY3JlYXRlRE9NOmZ1bmN0aW9uKF84ZSxfOGYpez0wQT0NCnZhciBpPTNE
MCxfOTE7PTBBPQ0KdmFyIGVsbT0zRGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
XzhlKTs9MEE9DQp2YXIgXzkzPTNEXzhmWzBdOz0wQT0NCmlmKEFKUy5pc0Rp
Y3QoXzhmW2ldKSl7PTBBPQ0KZm9yKGsgaW4gXzkzKXs9MEE9DQpfOTE9M0Rf
OTNba107PTBBPQ0KaWYoaz0zRD0zRCJzdHlsZSJ8fGs9M0Q9M0QicyIpez0w
QT0NCmVsbS5zdHlsZS5jc3NUZXh0PTNEXzkxOz0wQT0NCn1lbHNlez0wQT0N
CmlmKGs9M0Q9M0QiYyJ8fGs9M0Q9M0QiY2xhc3MifHxrPTNEPTNEImNsYXNz
TmFtZSIpez0wQT0NCmVsbS5jbGFzc05hbWU9M0RfOTE7PTBBPQ0KfWVsc2V7
PTBBPQ0KZWxtLnNldEF0dHJpYnV0ZShrLF85MSk7PTBBPQ0KfT0wQT0NCn09
MEE9DQp9PTBBPQ0KaSsrOz0wQT0NCn09MEE9DQppZihfOTM9M0Q9M0RudWxs
KXs9MEE9DQppPTNEMTs9MEE9DQp9PTBBPQ0KZm9yKHZhciBqPTNEaTtqPF84
Zi5sZW5ndGg7aisrKXs9MEE9DQp2YXIgXzkxPTNEXzhmW2pdOz0wQT0NCmlm
KF85MSl7PTBBPQ0KdmFyIF85NT0zRHR5cGVvZiAoXzkxKTs9MEE9DQppZihf
OTU9M0Q9M0Qic3RyaW5nInx8Xzk1PTNEPTNEIm51bWJlciIpez0wQT0NCl85
MT0zREFKUy5UTihfOTEpOz0wQT0NCn09MEE9DQplbG0uYXBwZW5kQ2hpbGQo
XzkxKTs9MEE9DQp9PTBBPQ0KfT0wQT0NCnJldHVybiBlbG07PTBBPQ0KfSxz
d2FwRE9NOmZ1bmN0aW9uKF85NixzcmMpez0wQT0NCl85Nj0zREFKUy5nZXRF
bGVtZW50KF85Nik7PTBBPQ0KdmFyIF85OD0zRF85Ni5wYXJlbnROb2RlOz0w
QT0NCmlmKHNyYyl7PTBBPQ0Kc3JjPTNEQUpTLmdldEVsZW1lbnQoc3JjKTs9
MEE9DQpfOTgucmVwbGFjZUNoaWxkKHNyYyxfOTYpOz0wQT0NCn1lbHNlez0w
QT0NCl85OC5yZW1vdmVDaGlsZChfOTYpOz0wQT0NCn09MEE9DQpyZXR1cm4g
c3JjOz0wQT0NCn0saXNEZWZpbmVkOmZ1bmN0aW9uKG8pez0wQT0NCnJldHVy
biAobyE9M0QidW5kZWZpbmVkIiYmbyE9M0RudWxsKTs9MEE9DQp9fTs9MEE9
DQpBSlMuJD0zREFKUy5nZXRFbGVtZW50Oz0wQT0NCkFKUy4kJD0zREFKUy5n
ZXRFbGVtZW50czs9MEE9DQpBSlMuJGY9M0RBSlMuZ2V0Rm9ybUVsZW1lbnQ7
PTBBPQ0KQUpTLiRwPTNEQUpTLnBhcnRpYWw7PTBBPQ0KQUpTLiRiPTNEQUpT
LmJpbmQ7PTBBPQ0KQUpTLiRBPTNEQUpTLmNyZWF0ZUFycmF5Oz0wQT0NCkFK
Uy5EST0zREFKUy5kb2N1bWVudEluc2VydDs9MEE9DQpBSlMuQUNOPTNEQUpT
LmFwcGVuZENoaWxkTm9kZXM7PTBBPQ0KQUpTLlJDTj0zREFKUy5yZXBsYWNl
Q2hpbGROb2Rlczs9MEE9DQpBSlMuQUVWPTNEQUpTLmFkZEV2ZW50TGlzdGVu
ZXI7PTBBPQ0KQUpTLlJFVj0zREFKUy5yZW1vdmVFdmVudExpc3RlbmVyOz0w
QT0NCkFKUy4kYnl0Yz0zREFKUy5nZXRFbGVtZW50c0J5VGFnQW5kQ2xhc3NO
YW1lOz0wQT0NCkFKUy4kQVA9M0RBSlMuYWJzb2x1dGVQb3NpdGlvbjs9MEE9
DQpBSlMuJEZBPTNEQUpTLmZvcmNlQXJyYXk7PTBBPQ0KQUpTLmFkZEV2ZW50
TGlzdGVuZXIod2luZG93LCJ1bmxvYWQiLEFKUy5fdW5sb2FkTGlzdGVuZXJz
KTs9MEE9DQpBSlMuX2NyZWF0ZURvbVNob3J0Y3V0cygpOz0wQT0NCkFKUy5D
bGFzcz0zRGZ1bmN0aW9uKF85YSl7PTBBPQ0KdmFyIGZuPTNEZnVuY3Rpb24o
KXs9MEE9DQppZihhcmd1bWVudHNbMF0hPTNEIm5vX2luaXQiKXs9MEE9DQpy
ZXR1cm4gdGhpcy5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTs9MEE9DQp9
PTBBPQ0KfTs9MEE9DQpmbi5wcm90b3R5cGU9M0RfOWE7PTBBPQ0KQUpTLnVw
ZGF0ZShmbixBSlMuQ2xhc3MucHJvdG90eXBlKTs9MEE9DQpyZXR1cm4gZm47
PTBBPQ0KfTs9MEE9DQpBSlMuQ2xhc3MucHJvdG90eXBlPTNEe2V4dGVuZDpm
dW5jdGlvbihfOWMpez0wQT0NCnZhciBfOWQ9M0RuZXcgdGhpcygibm9faW5p
dCIpOz0wQT0NCmZvcihrIGluIF85Yyl7PTBBPQ0KdmFyIF85ZT0zRF85ZFtr
XTs9MEE9DQp2YXIgY3VyPTNEXzljW2tdOz0wQT0NCmlmKF85ZSYmXzllIT0z
RGN1ciYmdHlwZW9mIGN1cj0zRD0zRCJmdW5jdGlvbiIpez0wQT0NCmN1cj0z
RHRoaXMuX3BhcmVudGl6ZShjdXIsXzllKTs9MEE9DQp9PTBBPQ0KXzlkW2td
PTNEY3VyOz0wQT0NCn09MEE9DQpyZXR1cm4gbmV3IEFKUy5DbGFzcyhfOWQp
Oz0wQT0NCn0saW1wbGVtZW50OmZ1bmN0aW9uKF9hMCl7PTBBPQ0KQUpTLnVw
ZGF0ZSh0aGlzLnByb3RvdHlwZSxfYTApOz0wQT0NCn0sX3BhcmVudGl6ZTpm
dW5jdGlvbihjdXIsX2EyKXs9MEE9DQpyZXR1cm4gZnVuY3Rpb24oKXs9MEE9
DQp0aGlzLnBhcmVudD0zRF9hMjs9MEE9DQpyZXR1cm4gY3VyLmFwcGx5KHRo
aXMsYXJndW1lbnRzKTs9MEE9DQp9Oz0wQT0NCn19Oz0wQT0NCnNjcmlwdF9s
b2FkZWQ9M0R0cnVlOz0wQT0NCj0wQT0NCj0wQT0NCnNjcmlwdF9sb2FkZWQ9
M0R0cnVlOw0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMzY1My4x
RjVBRURBMA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0NCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFi
bGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9n
cmV5Ym94L0FKU19meC5qcw0KDQpBSlMuZng9M0R7X3NoYWRlczp7MDoiZmZm
ZmZmIiwxOiJmZmZmZWUiLDI6ImZmZmZkZCIsMzoiZmZmZmNjIiw0OiJmZmZm
YmIiPQ0KLDU6ImZmZmZhYSIsNjoiZmZmZjk5In0saGlnaGxpZ2h0OmZ1bmN0
aW9uKF8xLF8yKXs9MEE9DQp2YXIgXzM9M0RuZXcgQUpTLmZ4LkJhc2UoKTs9
MEE9DQpfMy5lbG09M0RBSlMuJChfMSk7PTBBPQ0KXzMub3B0aW9ucy5kdXJh
dGlvbj0zRDYwMDs9MEE9DQpfMy5zZXRPcHRpb25zKF8yKTs9MEE9DQpBSlMu
dXBkYXRlKF8zLHtpbmNyZWFzZTpmdW5jdGlvbigpez0wQT0NCmlmKHRoaXMu
bm93PTNEPTNENyl7PTBBPQ0KXzEuc3R5bGUuYmFja2dyb3VuZENvbG9yPTNE
IiNmZmYiOz0wQT0NCn1lbHNlez0wQT0NCl8xLnN0eWxlLmJhY2tncm91bmRD
b2xvcj0zRCIjIitBSlMuZnguX3NoYWRlc1tNYXRoLmZsb29yKHRoaXMubm93
KV07PTBBPQ0KfT0wQT0NCn19KTs9MEE9DQpyZXR1cm4gXzMuY3VzdG9tKDYs
MCk7PTBBPQ0KfSxmYWRlSW46ZnVuY3Rpb24oXzQsXzUpez0wQT0NCl81PTNE
XzV8fHt9Oz0wQT0NCmlmKCFfNS5mcm9tKXs9MEE9DQpfNS5mcm9tPTNEMDs9
MEE9DQpBSlMuc2V0T3BhY2l0eShfNCwwKTs9MEE9DQp9PTBBPQ0KaWYoIV81
LnRvKXs9MEE9DQpfNS50bz0zRDE7PTBBPQ0KfT0wQT0NCnZhciBzPTNEbmV3
IEFKUy5meC5TdHlsZShfNCwib3BhY2l0eSIsXzUpOz0wQT0NCnJldHVybiBz
LmN1c3RvbShfNS5mcm9tLF81LnRvKTs9MEE9DQp9LGZhZGVPdXQ6ZnVuY3Rp
b24oXzcsXzgpez0wQT0NCl84PTNEXzh8fHt9Oz0wQT0NCmlmKCFfOC5mcm9t
KXs9MEE9DQpfOC5mcm9tPTNEMTs9MEE9DQp9PTBBPQ0KaWYoIV84LnRvKXs9
MEE9DQpfOC50bz0zRDA7PTBBPQ0KfT0wQT0NCl84LmR1cmF0aW9uPTNEMzAw
Oz0wQT0NCnZhciBzPTNEbmV3IEFKUy5meC5TdHlsZShfNywib3BhY2l0eSIs
XzgpOz0wQT0NCnJldHVybiBzLmN1c3RvbShfOC5mcm9tLF84LnRvKTs9MEE9
DQp9LHNldFdpZHRoOmZ1bmN0aW9uKF9hLF9iKXs9MEE9DQp2YXIgcz0zRG5l
dyBBSlMuZnguU3R5bGUoX2EsIndpZHRoIixfYik7PTBBPQ0KcmV0dXJuIHMu
Y3VzdG9tKF9iLmZyb20sX2IudG8pOz0wQT0NCn0sc2V0SGVpZ2h0OmZ1bmN0
aW9uKF9kLF9lKXs9MEE9DQp2YXIgcz0zRG5ldyBBSlMuZnguU3R5bGUoX2Qs
ImhlaWdodCIsX2UpOz0wQT0NCnJldHVybiBzLmN1c3RvbShfZS5mcm9tLF9l
LnRvKTs9MEE9DQp9fTs9MEE9DQpBSlMuZnguQmFzZT0zRG5ldyBBSlMuQ2xh
c3Moe2luaXQ6ZnVuY3Rpb24oXzEwKXs9MEE9DQp0aGlzLm9wdGlvbnM9M0R7
b25TdGFydDpmdW5jdGlvbigpez0wQT0NCn0sb25Db21wbGV0ZTpmdW5jdGlv
bigpez0wQT0NCn0sdHJhbnNpdGlvbjpBSlMuZnguVHJhbnNpdGlvbnMuc2lu
ZUluT3V0LGR1cmF0aW9uOjUwMCx3YWl0OnRydWUsZnBzOjUwfTs9MEE9DQpB
SlMudXBkYXRlKHRoaXMub3B0aW9ucyxfMTApOz0wQT0NCkFKUy5iaW5kTWV0
aG9kcyh0aGlzKTs9MEE9DQp9LHNldE9wdGlvbnM6ZnVuY3Rpb24oXzExKXs9
MEE9DQpBSlMudXBkYXRlKHRoaXMub3B0aW9ucyxfMTEpOz0wQT0NCn0sc3Rl
cDpmdW5jdGlvbigpez0wQT0NCnZhciBfMTI9M0RuZXcgRGF0ZSgpLmdldFRp
bWUoKTs9MEE9DQppZihfMTI8dGhpcy50aW1lK3RoaXMub3B0aW9ucy5kdXJh
dGlvbil7PTBBPQ0KdGhpcy5jVGltZT0zRF8xMi10aGlzLnRpbWU7PTBBPQ0K
dGhpcy5zZXROb3coKTs9MEE9DQp9ZWxzZXs9MEE9DQpzZXRUaW1lb3V0KEFK
Uy4kYih0aGlzLm9wdGlvbnMub25Db21wbGV0ZSx0aGlzLFt0aGlzLmVsbV0p
LDEwKTs9MEE9DQp0aGlzLmNsZWFyVGltZXIoKTs9MEE9DQp0aGlzLm5vdz0z
RHRoaXMudG87PTBBPQ0KfT0wQT0NCnRoaXMuaW5jcmVhc2UoKTs9MEE9DQp9
LHNldE5vdzpmdW5jdGlvbigpez0wQT0NCnRoaXMubm93PTNEdGhpcy5jb21w
dXRlKHRoaXMuZnJvbSx0aGlzLnRvKTs9MEE9DQp9LGNvbXB1dGU6ZnVuY3Rp
b24oXzEzLHRvKXs9MEE9DQp2YXIgXzE1PTNEdG8tXzEzOz0wQT0NCnJldHVy
biB0aGlzLm9wdGlvbnMudHJhbnNpdGlvbih0aGlzLmNUaW1lLF8xMyxfMTUs
dGhpcy5vcHRpb25zLmR1cmF0aW9uKTs9MEE9DQp9LGNsZWFyVGltZXI6ZnVu
Y3Rpb24oKXs9MEE9DQpjbGVhckludGVydmFsKHRoaXMudGltZXIpOz0wQT0N
CnRoaXMudGltZXI9M0RudWxsOz0wQT0NCnJldHVybiB0aGlzOz0wQT0NCn0s
X3N0YXJ0OmZ1bmN0aW9uKF8xNix0byl7PTBBPQ0KaWYoIXRoaXMub3B0aW9u
cy53YWl0KXs9MEE9DQp0aGlzLmNsZWFyVGltZXIoKTs9MEE9DQp9PTBBPQ0K
aWYodGhpcy50aW1lcil7PTBBPQ0KcmV0dXJuOz0wQT0NCn09MEE9DQpzZXRU
aW1lb3V0KEFKUy4kcCh0aGlzLm9wdGlvbnMub25TdGFydCx0aGlzLmVsbSks
MTApOz0wQT0NCnRoaXMuZnJvbT0zRF8xNjs9MEE9DQp0aGlzLnRvPTNEdG87
PTBBPQ0KdGhpcy50aW1lPTNEbmV3IERhdGUoKS5nZXRUaW1lKCk7PTBBPQ0K
dGhpcy50aW1lcj0zRHNldEludGVydmFsKHRoaXMuc3RlcCxNYXRoLnJvdW5k
KDEwMDAvdGhpcy5vcHRpb25zLmZwcykpOz0wQT0NCnJldHVybiB0aGlzOz0w
QT0NCn0sY3VzdG9tOmZ1bmN0aW9uKF8xOCx0byl7PTBBPQ0KcmV0dXJuIHRo
aXMuX3N0YXJ0KF8xOCx0byk7PTBBPQ0KfSxzZXQ6ZnVuY3Rpb24odG8pez0w
QT0NCnRoaXMubm93PTNEdG87PTBBPQ0KdGhpcy5pbmNyZWFzZSgpOz0wQT0N
CnJldHVybiB0aGlzOz0wQT0NCn0sc2V0U3R5bGU6ZnVuY3Rpb24oZWxtLF8x
Yyx2YWwpez0wQT0NCmlmKHRoaXMucHJvcGVydHk9M0Q9M0Qib3BhY2l0eSIp
ez0wQT0NCkFKUy5zZXRPcGFjaXR5KGVsbSx2YWwpOz0wQT0NCn1lbHNlez0w
QT0NCkFKUy5zZXRTdHlsZShlbG0sXzFjLHZhbCk7PTBBPQ0KfT0wQT0NCn19
KTs9MEE9DQpBSlMuZnguU3R5bGU9M0RBSlMuZnguQmFzZS5leHRlbmQoe2lu
aXQ6ZnVuY3Rpb24oZWxtLF8xZixfMjApez0wQT0NCnRoaXMucGFyZW50KCk7
PTBBPQ0KdGhpcy5lbG09M0RlbG07PTBBPQ0KdGhpcy5zZXRPcHRpb25zKF8y
MCk7PTBBPQ0KdGhpcy5wcm9wZXJ0eT0zRF8xZjs9MEE9DQp9LGluY3JlYXNl
OmZ1bmN0aW9uKCl7PTBBPQ0KdGhpcy5zZXRTdHlsZSh0aGlzLmVsbSx0aGlz
LnByb3BlcnR5LHRoaXMubm93KTs9MEE9DQp9fSk7PTBBPQ0KQUpTLmZ4LlN0
eWxlcz0zREFKUy5meC5CYXNlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlbG0s
XzIyKXs9MEE9DQp0aGlzLnBhcmVudCgpOz0wQT0NCnRoaXMuZWxtPTNEQUpT
LiQoZWxtKTs9MEE9DQp0aGlzLnNldE9wdGlvbnMoXzIyKTs9MEE9DQp0aGlz
Lm5vdz0zRHt9Oz0wQT0NCn0sc2V0Tm93OmZ1bmN0aW9uKCl7PTBBPQ0KZm9y
KHAgaW4gdGhpcy5mcm9tKXs9MEE9DQp0aGlzLm5vd1twXT0zRHRoaXMuY29t
cHV0ZSh0aGlzLmZyb21bcF0sdGhpcy50b1twXSk7PTBBPQ0KfT0wQT0NCn0s
Y3VzdG9tOmZ1bmN0aW9uKG9iail7PTBBPQ0KaWYodGhpcy50aW1lciYmdGhp
cy5vcHRpb25zLndhaXQpez0wQT0NCnJldHVybjs9MEE9DQp9PTBBPQ0KdmFy
IF8yND0zRHt9Oz0wQT0NCnZhciB0bz0zRHt9Oz0wQT0NCmZvcihwIGluIG9i
ail7PTBBPQ0KXzI0W3BdPTNEb2JqW3BdWzBdOz0wQT0NCnRvW3BdPTNEb2Jq
W3BdWzFdOz0wQT0NCn09MEE9DQpyZXR1cm4gdGhpcy5fc3RhcnQoXzI0LHRv
KTs9MEE9DQp9LGluY3JlYXNlOmZ1bmN0aW9uKCl7PTBBPQ0KZm9yKHZhciBw
IGluIHRoaXMubm93KXs9MEE9DQp0aGlzLnNldFN0eWxlKHRoaXMuZWxtLHAs
dGhpcy5ub3dbcF0pOz0wQT0NCn09MEE9DQp9fSk7PTBBPQ0KQUpTLmZ4LlRy
YW5zaXRpb25zPTNEe2xpbmVhcjpmdW5jdGlvbih0LGIsYyxkKXs9MEE9DQpy
ZXR1cm4gYyp0L2QrYjs9MEE9DQp9LHNpbmVJbk91dDpmdW5jdGlvbih0LGIs
YyxkKXs9MEE9DQpyZXR1cm4gLWMvMiooTWF0aC5jb3MoTWF0aC5QSSp0L2Qp
LTEpK2I7PTBBPQ0KfX07PTBBPQ0Kc2NyaXB0X2xvYWRlZD0zRHRydWU7PTBB
PQ0KPTBBPQ0KPTBBPQ0Kc2NyaXB0X2xvYWRlZD0zRHRydWU7DQotLS0tLS09
X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0MzNjUzLjFGNUFFREEwDQpDb250ZW50
LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFu
c2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2Nh
dGlvbjogaHR0cDovL3d3dy5jYXJ0YXNpLml0L2dyZXlib3gvZ2Jfc2NyaXB0
cy5qcw0KDQp2YXIgR0JfQ1VSUkVOVD0zRG51bGw7DQpHQl9oaWRlPTNEZnVu
Y3Rpb24oY2Ipew0KR0JfQ1VSUkVOVC5oaWRlKGNiKTsNCn07DQpHcmV5Qm94
PTNEbmV3IEFKUy5DbGFzcyh7aW5pdDpmdW5jdGlvbihfMil7DQp0aGlzLnVz
ZV9meD0zREFKUy5meDsNCnRoaXMudHlwZT0zRCJwYWdlIjsNCnRoaXMub3Zl
cmxheV9jbGlja19jbG9zZT0zRGZhbHNlOw0KdGhpcy5zYWx0PTNEMDsNCnRo
aXMucm9vdF9kaXI9M0RHQl9ST09UX0RJUjsNCnRoaXMuY2FsbGJhY2tfZm5z
PTNEW107DQp0aGlzLnJlbG9hZF9vbl9jbG9zZT0zRGZhbHNlOw0KdGhpcy5z
cmNfbG9hZGVyPTNEdGhpcy5yb290X2RpcisibG9hZGVyX2ZyYW1lLmh0bWwi
Ow0KdmFyIF8zPTNEd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLmluZGV4T2Yo
Ind3dyIpOw0KdmFyIF80PTNEdGhpcy5zcmNfbG9hZGVyLmluZGV4T2YoInd3
dyIpOw0KaWYoXzMhPTNELTEmJl80PTNEPTNELTEpew0KdGhpcy5zcmNfbG9h
ZGVyPTNEdGhpcy5zcmNfbG9hZGVyLnJlcGxhY2UoIjovLyIsIjovL3d3dy4i
KTsNCn0NCmlmKF8zPTNEPTNELTEmJl80IT0zRC0xKXsNCnRoaXMuc3JjX2xv
YWRlcj0zRHRoaXMuc3JjX2xvYWRlci5yZXBsYWNlKCI6Ly93d3cuIiwiOi8v
Iik7DQp9DQp0aGlzLnNob3dfbG9hZGluZz0zRHRydWU7DQpBSlMudXBkYXRl
KHRoaXMsXzIpOw0KfSxhZGRDYWxsYmFjazpmdW5jdGlvbihmbil7DQppZihm
bil7DQp0aGlzLmNhbGxiYWNrX2Zucy5wdXNoKGZuKTsNCn0NCn0sc2hvdzpm
dW5jdGlvbihfNil7DQpHQl9DVVJSRU5UPTNEdGhpczsNCnRoaXMudXJsPTNE
XzY7DQp2YXIgXzc9M0RbQUpTLiRieXRjKCJvYmplY3QiKSxBSlMuJGJ5dGMo
InNlbGVjdCIpXTsNCkFKUy5tYXAoQUpTLmZsYXR0ZW5MaXN0KF83KSxmdW5j
dGlvbihfOCl7DQpfOC5zdHlsZS52aXNpYmlsaXR5PTNEImhpZGRlbiI7DQp9
KTsNCnRoaXMuY3JlYXRlRWxlbWVudHMoKTsNCnJldHVybiBmYWxzZTsNCn0s
aGlkZTpmdW5jdGlvbihjYil7DQp2YXIgbWU9M0R0aGlzOw0KQUpTLmNhbGxM
YXRlcihmdW5jdGlvbigpew0KdmFyIF9iPTNEbWUuY2FsbGJhY2tfZm5zOw0K
aWYoX2IhPTNEW10pew0KQUpTLm1hcChfYixmdW5jdGlvbihmbil7DQpmbigp
Ow0KfSk7DQp9DQptZS5vbkhpZGUoKTsNCmlmKG1lLnVzZV9meCl7DQp2YXIg
X2Q9M0RtZS5vdmVybGF5Ow0KQUpTLmZ4LmZhZGVPdXQobWUub3ZlcmxheSx7
b25Db21wbGV0ZTpmdW5jdGlvbigpew0KQUpTLnJlbW92ZUVsZW1lbnQoX2Qp
Ow0KX2Q9M0RudWxsOw0KfSxkdXJhdGlvbjozMDB9KTsNCkFKUy5yZW1vdmVF
bGVtZW50KG1lLmdfd2luZG93KTsNCn1lbHNlew0KQUpTLnJlbW92ZUVsZW1l
bnQobWUuZ193aW5kb3csbWUub3ZlcmxheSk7DQp9DQptZS5yZW1vdmVGcmFt
ZSgpOw0KQUpTLlJFVih3aW5kb3csInNjcm9sbCIsX0dCX3NldE92ZXJsYXlE
aW1lbnNpb24pOw0KQUpTLlJFVih3aW5kb3csInJlc2l6ZSIsX0dCX3VwZGF0
ZSk7DQp2YXIgX2U9M0RbQUpTLiRieXRjKCJvYmplY3QiKSxBSlMuJGJ5dGMo
InNlbGVjdCIpXTsNCkFKUy5tYXAoQUpTLmZsYXR0ZW5MaXN0KF9lKSxmdW5j
dGlvbihfZil7DQpfZi5zdHlsZS52aXNpYmlsaXR5PTNEInZpc2libGUiOw0K
fSk7DQpHQl9DVVJSRU5UPTNEbnVsbDsNCmlmKG1lLnJlbG9hZF9vbl9jbG9z
ZSl7DQp3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7DQp9DQppZihBSlMuaXNG
dW5jdGlvbihjYikpew0KY2IoKTsNCn0NCn0sMTApOw0KfSx1cGRhdGU6ZnVu
Y3Rpb24oKXsNCnRoaXMuc2V0T3ZlcmxheURpbWVuc2lvbigpOw0KdGhpcy5z
ZXRGcmFtZVNpemUoKTsNCnRoaXMuc2V0V2luZG93UG9zaXRpb24oKTsNCn0s
Y3JlYXRlRWxlbWVudHM6ZnVuY3Rpb24oKXsNCnRoaXMuaW5pdE92ZXJsYXko
KTsNCnRoaXMuZ193aW5kb3c9M0RBSlMuRElWKHsiaWQiOiJHQl93aW5kb3ci
fSk7DQpBSlMuaGlkZUVsZW1lbnQodGhpcy5nX3dpbmRvdyk7DQpBSlMuZ2V0
Qm9keSgpLmluc2VydEJlZm9yZSh0aGlzLmdfd2luZG93LHRoaXMub3Zlcmxh
eS5uZXh0U2libGluZyk7DQp0aGlzLmluaXRGcmFtZSgpOw0KdGhpcy5pbml0
SG9vaygpOw0KdGhpcy51cGRhdGUoKTsNCnZhciBtZT0zRHRoaXM7DQppZih0
aGlzLnVzZV9meCl7DQpBSlMuZnguZmFkZUluKHRoaXMub3ZlcmxheSx7ZHVy
YXRpb246MzAwLHRvOjAuNyxvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7DQptZS5v
blNob3coKTsNCkFKUy5zaG93RWxlbWVudChtZS5nX3dpbmRvdyk7DQptZS5z
dGFydExvYWRpbmcoKTsNCn19KTsNCn1lbHNlew0KQUpTLnNldE9wYWNpdHko
dGhpcy5vdmVybGF5LDAuNyk7DQpBSlMuc2hvd0VsZW1lbnQodGhpcy5nX3dp
bmRvdyk7DQp0aGlzLm9uU2hvdygpOw0KdGhpcy5zdGFydExvYWRpbmcoKTsN
Cn0NCkFKUy5BRVYod2luZG93LCJzY3JvbGwiLF9HQl9zZXRPdmVybGF5RGlt
ZW5zaW9uKTsNCkFKUy5BRVYod2luZG93LCJyZXNpemUiLF9HQl91cGRhdGUp
Ow0KfSxyZW1vdmVGcmFtZTpmdW5jdGlvbigpew0KdHJ5ew0KQUpTLnJlbW92
ZUVsZW1lbnQodGhpcy5pZnJhbWUpOw0KfQ0KY2F0Y2goZSl7DQp9DQp0aGlz
LmlmcmFtZT0zRG51bGw7DQp9LHN0YXJ0TG9hZGluZzpmdW5jdGlvbigpew0K
dGhpcy5pZnJhbWUuc3JjPTNEdGhpcy5zcmNfbG9hZGVyKyI/cz0zRCIrdGhp
cy5zYWx0Kys7DQpBSlMuc2hvd0VsZW1lbnQodGhpcy5pZnJhbWUpOw0KfSxz
ZXRPdmVybGF5RGltZW5zaW9uOmZ1bmN0aW9uKCl7DQp2YXIgXzExPTNEQUpT
LmdldFdpbmRvd1NpemUoKTsNCmlmKEFKUy5pc01vemlsbGEoKXx8QUpTLmlz
T3BlcmEoKSl7DQpBSlMuc2V0V2lkdGgodGhpcy5vdmVybGF5LCIxMDAlIik7
DQp9ZWxzZXsNCkFKUy5zZXRXaWR0aCh0aGlzLm92ZXJsYXksXzExLncpOw0K
fQ0KdmFyID0NCl8xMj0zRE1hdGgubWF4KEFKUy5nZXRTY3JvbGxUb3AoKStf
MTEuaCxBSlMuZ2V0U2Nyb2xsVG9wKCkrdGhpcy5oZWlnaHQpOw0KaWYoXzEy
PEFKUy5nZXRTY3JvbGxUb3AoKSl7DQpBSlMuc2V0SGVpZ2h0KHRoaXMub3Zl
cmxheSxfMTIpOw0KfWVsc2V7DQpBSlMuc2V0SGVpZ2h0KHRoaXMub3Zlcmxh
eSxBSlMuZ2V0U2Nyb2xsVG9wKCkrXzExLmgpOw0KfQ0KfSxpbml0T3Zlcmxh
eTpmdW5jdGlvbigpew0KdGhpcy5vdmVybGF5PTNEQUpTLkRJVih7ImlkIjoi
R0Jfb3ZlcmxheSJ9KTsNCmlmKHRoaXMub3ZlcmxheV9jbGlja19jbG9zZSl7
DQpBSlMuQUVWKHRoaXMub3ZlcmxheSwiY2xpY2siLEdCX2hpZGUpOw0KfQ0K
QUpTLnNldE9wYWNpdHkodGhpcy5vdmVybGF5LDApOw0KQUpTLmdldEJvZHko
KS5pbnNlcnRCZWZvcmUodGhpcy5vdmVybGF5LEFKUy5nZXRCb2R5KCkuZmly
c3RDaGlsZCk7DQp9LGluaXRGcmFtZTpmdW5jdGlvbigpew0KaWYoIXRoaXMu
aWZyYW1lKXsNCnZhciBkPTNEeyJuYW1lIjoiR0JfZnJhbWUiLCJjbGFzcyI6
IkdCX2ZyYW1lIiwiZnJhbWVCb3JkZXIiOjB9Ow0KaWYoQUpTLmlzSWUoKSl7
DQpkLnNyYz0zRCJqYXZhc2NyaXB0OmZhbHNlO2RvY3VtZW50LndyaXRlKFwi
XCIpOyI7DQp9DQp0aGlzLmlmcmFtZT0zREFKUy5JRlJBTUUoZCk7DQp0aGlz
Lm1pZGRsZV9jbnQ9M0RBSlMuRElWKHsiY2xhc3MiOiJjb250ZW50In0sdGhp
cy5pZnJhbWUpOw0KdGhpcy50b3BfY250PTNEQUpTLkRJVigpOw0KdGhpcy5i
b3R0b21fY250PTNEQUpTLkRJVigpOw0KQUpTLkFDTih0aGlzLmdfd2luZG93
LHRoaXMudG9wX2NudCx0aGlzLm1pZGRsZV9jbnQsdGhpcy5ib3R0b21fY250
KTsNCn0NCn0sb25IaWRlOmZ1bmN0aW9uKCl7DQp9LG9uU2hvdzpmdW5jdGlv
bigpew0KfSxzZXRGcmFtZVNpemU6ZnVuY3Rpb24oKXsNCn0sc2V0V2luZG93
UG9zaXRpb246ZnVuY3Rpb24oKXsNCn0saW5pdEhvb2s6ZnVuY3Rpb24oKXsN
Cn19KTsNCl9HQl91cGRhdGU9M0RmdW5jdGlvbigpew0KaWYoR0JfQ1VSUkVO
VCl7DQpHQl9DVVJSRU5ULnVwZGF0ZSgpOw0KfQ0KfTsNCl9HQl9zZXRPdmVy
bGF5RGltZW5zaW9uPTNEZnVuY3Rpb24oKXsNCmlmKEdCX0NVUlJFTlQpew0K
R0JfQ1VSUkVOVC5zZXRPdmVybGF5RGltZW5zaW9uKCk7DQp9DQp9Ow0KQUpT
LnByZWxvYWRJbWFnZXMoR0JfUk9PVF9ESVIrImluZGljYXRvci5naWYiKTsN
CnNjcmlwdF9sb2FkZWQ9M0R0cnVlOw0KdmFyIEdCX1NFVFM9M0R7fTsNCmZ1
bmN0aW9uIGRlY29HcmV5Ym94TGlua3MoKXsNCnZhciBhcz0zREFKUy4kYnl0
YygiYSIpOw0KQUpTLm1hcChhcyxmdW5jdGlvbihhKXsNCmlmKGEuZ2V0QXR0
cmlidXRlKCJocmVmIikmJmEuZ2V0QXR0cmlidXRlKCJyZWwiKSl7DQp2YXIg
cmVsPTNEYS5nZXRBdHRyaWJ1dGUoInJlbCIpOw0KaWYocmVsLmluZGV4T2Yo
ImdiXyIpPTNEPTNEMCl7DQp2YXIgXzE3PTNEcmVsLm1hdGNoKC9cdysvKVsw
XTsNCnZhciBfMTg9M0RyZWwubWF0Y2goL1xbKC4qKVxdLylbMV07DQp2YXIg
XzE5PTNEMDsNCnZhciBfMWE9M0R7ImNhcHRpb24iOmEudGl0bGV8fCIiLCJ1
cmwiOmEuaHJlZn07DQppZihfMTc9M0Q9M0QiZ2JfcGFnZXNldCJ8fF8xNz0z
RD0zRCJnYl9pbWFnZXNldCIpew0KaWYoIUdCX1NFVFNbXzE4XSl7DQpHQl9T
RVRTW18xOF09M0RbXTsNCn0NCkdCX1NFVFNbXzE4XS5wdXNoKF8xYSk7DQpf
MTk9M0RHQl9TRVRTW18xOF0ubGVuZ3RoOw0KfQ0KaWYoXzE3PTNEPTNEImdi
X3BhZ2VzZXQiKXsNCmEub25jbGljaz0zRGZ1bmN0aW9uKCl7DQpHQl9zaG93
RnVsbFNjcmVlblNldChHQl9TRVRTW18xOF0sXzE5KTsNCnJldHVybiBmYWxz
ZTsNCn07DQp9DQppZihfMTc9M0Q9M0QiZ2JfaW1hZ2VzZXQiKXsNCmEub25j
bGljaz0zRGZ1bmN0aW9uKCl7DQpHQl9zaG93SW1hZ2VTZXQoR0JfU0VUU1tf
MThdLF8xOSk7DQpyZXR1cm4gZmFsc2U7DQp9Ow0KfQ0KaWYoXzE3PTNEPTNE
ImdiX2ltYWdlIil7DQphLm9uY2xpY2s9M0RmdW5jdGlvbigpew0KR0Jfc2hv
d0ltYWdlKF8xYS5jYXB0aW9uLF8xYS51cmwpOw0KcmV0dXJuIGZhbHNlOw0K
fTsNCn0NCmlmKF8xNz0zRD0zRCJnYl9wYWdlIil7DQphLm9uY2xpY2s9M0Rm
dW5jdGlvbigpew0KdmFyIHNwPTNEXzE4LnNwbGl0KC8sID8vKTsNCkdCX3No
b3coXzFhLmNhcHRpb24sXzFhLnVybCxwYXJzZUludChzcFsxXSkscGFyc2VJ
bnQoc3BbMF0pKTsNCnJldHVybiBmYWxzZTsNCn07DQp9DQppZihfMTc9M0Q9
M0QiZ2JfcGFnZV9mcyIpew0KYS5vbmNsaWNrPTNEZnVuY3Rpb24oKXsNCkdC
X3Nob3dGdWxsU2NyZWVuKF8xYS5jYXB0aW9uLF8xYS51cmwpOw0KcmV0dXJu
IGZhbHNlOw0KfTsNCn0NCmlmKF8xNz0zRD0zRCJnYl9wYWdlX2NlbnRlciIp
ew0KYS5vbmNsaWNrPTNEZnVuY3Rpb24oKXsNCnZhciBzcD0zRF8xOC5zcGxp
dCgvLCA/Lyk7DQpHQl9zaG93Q2VudGVyKF8xYS5jYXB0aW9uLF8xYS51cmws
cGFyc2VJbnQoc3BbMV0pLHBhcnNlSW50KHNwWzBdKSk7DQpyZXR1cm4gZmFs
c2U7DQp9Ow0KfQ0KfQ0KfQ0KfSk7DQp9DQpBSlMuQUVWKHdpbmRvdywibG9h
ZCIsZGVjb0dyZXlib3hMaW5rcyk7DQpHQl9zaG93SW1hZ2U9M0RmdW5jdGlv
bihfMWQsdXJsLF8xZil7DQp2YXIgPQ0KXzIwPTNEe3dpZHRoOjMwMCxoZWln
aHQ6MzAwLHR5cGU6ImltYWdlIixmdWxsc2NyZWVuOmZhbHNlLGNlbnRlcl93
aW46dHJ1ZT0NCixjYXB0aW9uOl8xZCxjYWxsYmFja19mbjpfMWZ9Ow0KdmFy
IHdpbj0zRG5ldyBHQl9HYWxsZXJ5KF8yMCk7DQpyZXR1cm4gd2luLnNob3co
dXJsKTsNCn07DQpHQl9zaG93UGFnZT0zRGZ1bmN0aW9uKF8yMix1cmwsXzI0
KXsNCnZhciA9DQpfMjU9M0R7dHlwZToicGFnZSIsY2FwdGlvbjpfMjIsY2Fs
bGJhY2tfZm46XzI0LGZ1bGxzY3JlZW46dHJ1ZSxjZW50ZXJfd2luPQ0KOmZh
bHNlfTsNCnZhciB3aW49M0RuZXcgR0JfR2FsbGVyeShfMjUpOw0KcmV0dXJu
IHdpbi5zaG93KHVybCk7DQp9Ow0KR0JfR2FsbGVyeT0zREdyZXlCb3guZXh0
ZW5kKHtpbml0OmZ1bmN0aW9uKF8yNyl7DQp0aGlzLnBhcmVudCh7fSk7DQp0
aGlzLmltZ19jbG9zZT0zRHRoaXMucm9vdF9kaXIrImdfY2xvc2UuZ2lmIjsN
CkFKUy51cGRhdGUodGhpcyxfMjcpOw0KdGhpcy5hZGRDYWxsYmFjayh0aGlz
LmNhbGxiYWNrX2ZuKTsNCn0saW5pdEhvb2s6ZnVuY3Rpb24oKXsNCkFKUy5h
ZGRDbGFzcyh0aGlzLmdfd2luZG93LCJHQl9HYWxsZXJ5Iik7DQp2YXIgXzI4
PTNEQUpTLkRJVih7ImNsYXNzIjoiaW5uZXIifSk7DQp0aGlzLmhlYWRlcj0z
REFKUy5ESVYoeyJjbGFzcyI6IkdCX2hlYWRlciJ9LF8yOCk7DQpBSlMuc2V0
T3BhY2l0eSh0aGlzLmhlYWRlciwwKTsNCkFKUy5nZXRCb2R5KCkuaW5zZXJ0
QmVmb3JlKHRoaXMuaGVhZGVyLHRoaXMub3ZlcmxheS5uZXh0U2libGluZyk7
DQp2YXIgPQ0KXzI5PTNEQUpTLlREKHsiaWQiOiJHQl9jYXB0aW9uIiwiY2xh
c3MiOiJjYXB0aW9uIiwid2lkdGgiOiI0MCUifSx0aGlzLmNhcD0NCnRpb24p
Ow0KdmFyIF8yYT0zREFKUy5URCh7ImlkIjoiR0JfbWlkZGxlIiwiY2xhc3Mi
OiJtaWRkbGUiLCJ3aWR0aCI6IjIwJSJ9KTsNCnZhciBfMmI9M0RBSlMuSU1H
KHsic3JjIjp0aGlzLmltZ19jbG9zZX0pOw0KQUpTLkFFVihfMmIsImNsaWNr
IixHQl9oaWRlKTsNCnZhciBfMmM9M0RBSlMuVEQoeyJjbGFzcyI6ImNsb3Nl
Iiwid2lkdGgiOiI0MCUifSxfMmIpOw0KdmFyIF8yZD0zREFKUy5UQk9EWShB
SlMuVFIoXzI5LF8yYSxfMmMpKTsNCnZhciBfMmU9M0RBSlMuVEFCTEUoeyJj
ZWxsc3BhY2luZyI6IjAiLCJjZWxscGFkZGluZyI6MCwiYm9yZGVyIjowfSxf
MmQpOw0KQUpTLkFDTihfMjgsXzJlKTsNCmlmKHRoaXMuZnVsbHNjcmVlbil7
DQpBSlMuQUVWKHdpbmRvdywic2Nyb2xsIixBSlMuJGIodGhpcy5zZXRXaW5k
b3dQb3NpdGlvbix0aGlzKSk7DQp9ZWxzZXsNCkFKUy5BRVYod2luZG93LCJz
Y3JvbGwiLEFKUy4kYih0aGlzLl9zZXRIZWFkZXJQb3MsdGhpcykpOw0KfQ0K
fSxzZXRGcmFtZVNpemU6ZnVuY3Rpb24oKXsNCnZhciBfMmY9M0R0aGlzLm92
ZXJsYXkub2Zmc2V0V2lkdGg7DQp2YXIgXzMwPTNEQUpTLmdldFdpbmRvd1Np
emUoKTsNCmlmKHRoaXMuZnVsbHNjcmVlbil7DQp0aGlzLndpZHRoPTNEXzJm
LTQwOw0KdGhpcy5oZWlnaHQ9M0RfMzAuaC04MDsNCn0NCkFKUy5zZXRXaWR0
aCh0aGlzLmlmcmFtZSx0aGlzLndpZHRoKTsNCkFKUy5zZXRIZWlnaHQodGhp
cy5pZnJhbWUsdGhpcy5oZWlnaHQpOw0KQUpTLnNldFdpZHRoKHRoaXMuaGVh
ZGVyLF8yZik7DQp9LF9zZXRIZWFkZXJQb3M6ZnVuY3Rpb24oKXsNCkFKUy5z
ZXRUb3AodGhpcy5oZWFkZXIsQUpTLmdldFNjcm9sbFRvcCgpKzEwKTsNCn0s
c2V0V2luZG93UG9zaXRpb246ZnVuY3Rpb24oKXsNCnZhciBfMzE9M0R0aGlz
Lm92ZXJsYXkub2Zmc2V0V2lkdGg7DQp2YXIgXzMyPTNEQUpTLmdldFdpbmRv
d1NpemUoKTsNCkFKUy5zZXRMZWZ0KHRoaXMuZ193aW5kb3csKChfMzEtNTAt
dGhpcy53aWR0aCkvMikpOw0KdmFyIF8zMz0zREFKUy5nZXRTY3JvbGxUb3Ao
KSs1NTsNCmlmKCF0aGlzLmNlbnRlcl93aW4pew0KQUpTLnNldFRvcCh0aGlz
Lmdfd2luZG93LF8zMyk7DQp9ZWxzZXsNCnZhciBmbD0zRCgoXzMyLmgtdGhp
cy5oZWlnaHQpLzIpKzIwK0FKUy5nZXRTY3JvbGxUb3AoKTsNCmlmKGZsPDAp
ew0KZmw9M0QwOw0KfQ0KaWYoXzMzPmZsKXsNCmZsPTNEXzMzOw0KfQ0KQUpT
LnNldFRvcCh0aGlzLmdfd2luZG93LGZsKTsNCn0NCnRoaXMuX3NldEhlYWRl
clBvcygpOw0KfSxvbkhpZGU6ZnVuY3Rpb24oKXsNCkFKUy5yZW1vdmVFbGVt
ZW50KHRoaXMuaGVhZGVyKTsNCkFKUy5yZW1vdmVDbGFzcyh0aGlzLmdfd2lu
ZG93LCJHQl9HYWxsZXJ5Iik7DQp9LG9uU2hvdzpmdW5jdGlvbigpew0KaWYo
dGhpcy51c2VfZngpew0KQUpTLmZ4LmZhZGVJbih0aGlzLmhlYWRlcix7dG86
MX0pOw0KfWVsc2V7DQpBSlMuc2V0T3BhY2l0eSh0aGlzLmhlYWRlciwxKTsN
Cn0NCn19KTsNCkFKUy5wcmVsb2FkSW1hZ2VzKEdCX1JPT1RfRElSKyJnX2Ns
b3NlLmdpZiIpOw0KR0Jfc2hvd0Z1bGxTY3JlZW5TZXQ9M0RmdW5jdGlvbihz
ZXQsXzM2LF8zNyl7DQp2YXIgXzM4PTNEe3R5cGU6InBhZ2UiLGZ1bGxzY3Jl
ZW46dHJ1ZSxjZW50ZXJfd2luOmZhbHNlfTsNCnZhciBfMzk9M0RuZXcgR0Jf
U2V0cyhfMzgsc2V0KTsNCl8zOS5hZGRDYWxsYmFjayhfMzcpOw0KXzM5LnNo
b3dTZXQoXzM2LTEpOw0KcmV0dXJuIGZhbHNlOw0KfTsNCkdCX3Nob3dJbWFn
ZVNldD0zRGZ1bmN0aW9uKHNldCxfM2IsXzNjKXsNCnZhciA9DQpfM2Q9M0R7
dHlwZToiaW1hZ2UiLGZ1bGxzY3JlZW46ZmFsc2UsY2VudGVyX3dpbjp0cnVl
LHdpZHRoOjMwMCxoZWlnaHQ6MzAwPQ0KfTsNCnZhciBfM2U9M0RuZXcgR0Jf
U2V0cyhfM2Qsc2V0KTsNCl8zZS5hZGRDYWxsYmFjayhfM2MpOw0KXzNlLnNo
b3dTZXQoXzNiLTEpOw0KcmV0dXJuIGZhbHNlOw0KfTsNCkdCX1NldHM9M0RH
Ql9HYWxsZXJ5LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihfM2Ysc2V0KXsNCnRo
aXMucGFyZW50KF8zZik7DQppZighdGhpcy5pbWdfbmV4dCl7DQp0aGlzLmlt
Z19uZXh0PTNEdGhpcy5yb290X2RpcisibmV4dC5naWYiOw0KfQ0KaWYoIXRo
aXMuaW1nX3ByZXYpew0KdGhpcy5pbWdfcHJldj0zRHRoaXMucm9vdF9kaXIr
InByZXYuZ2lmIjsNCn0NCnRoaXMuY3VycmVudF9zZXQ9M0RzZXQ7DQp9LHNo
b3dTZXQ6ZnVuY3Rpb24oXzQxKXsNCnRoaXMuY3VycmVudF9pbmRleD0zRF80
MTsNCnZhciBfNDI9M0R0aGlzLmN1cnJlbnRfc2V0W3RoaXMuY3VycmVudF9p
bmRleF07DQp0aGlzLnNob3coXzQyLnVybCk7DQp0aGlzLl9zZXRDYXB0aW9u
KF80Mi5jYXB0aW9uKTsNCnRoaXMuYnRuX3ByZXY9M0RBSlMuSU1HKHsiY2xh
c3MiOiJsZWZ0IixzcmM6dGhpcy5pbWdfcHJldn0pOw0KdGhpcy5idG5fbmV4
dD0zREFKUy5JTUcoeyJjbGFzcyI6InJpZ2h0IixzcmM6dGhpcy5pbWdfbmV4
dH0pOw0KQUpTLkFFVih0aGlzLmJ0bl9wcmV2LCJjbGljayIsQUpTLiRiKHRo
aXMuc3dpdGNoUHJldix0aGlzKSk7DQpBSlMuQUVWKHRoaXMuYnRuX25leHQs
ImNsaWNrIixBSlMuJGIodGhpcy5zd2l0Y2hOZXh0LHRoaXMpKTsNCkdCX1NU
QVRVUz0zREFKUy5TUEFOKHsiY2xhc3MiOiJHQl9uYXZTdGF0dXMifSk7DQpB
SlMuQUNOKEFKUy4kKCJHQl9taWRkbGUiKSx0aGlzLmJ0bl9wcmV2LEdCX1NU
QVRVUyx0aGlzLmJ0bl9uZXh0KTsNCnRoaXMudXBkYXRlU3RhdHVzKCk7DQp9
LHVwZGF0ZVN0YXR1czpmdW5jdGlvbigpew0KQUpTLnNldEhUTUwoR0JfU1RB
VFVTLCh0aGlzLmN1cnJlbnRfaW5kZXgrMSkrIiAvID0NCiIrdGhpcy5jdXJy
ZW50X3NldC5sZW5ndGgpOw0KaWYodGhpcy5jdXJyZW50X2luZGV4PTNEPTNE
MCl7DQpBSlMuYWRkQ2xhc3ModGhpcy5idG5fcHJldiwiZGlzYWJsZWQiKTsN
Cn1lbHNlew0KQUpTLnJlbW92ZUNsYXNzKHRoaXMuYnRuX3ByZXYsImRpc2Fi
bGVkIik7DQp9DQppZih0aGlzLmN1cnJlbnRfaW5kZXg9M0Q9M0R0aGlzLmN1
cnJlbnRfc2V0Lmxlbmd0aC0xKXsNCkFKUy5hZGRDbGFzcyh0aGlzLmJ0bl9u
ZXh0LCJkaXNhYmxlZCIpOw0KfWVsc2V7DQpBSlMucmVtb3ZlQ2xhc3ModGhp
cy5idG5fbmV4dCwiZGlzYWJsZWQiKTsNCn0NCn0sX3NldENhcHRpb246ZnVu
Y3Rpb24oXzQzKXsNCkFKUy5zZXRIVE1MKEFKUy4kKCJHQl9jYXB0aW9uIiks
XzQzKTsNCn0sdXBkYXRlRnJhbWU6ZnVuY3Rpb24oKXsNCnZhciBfNDQ9M0R0
aGlzLmN1cnJlbnRfc2V0W3RoaXMuY3VycmVudF9pbmRleF07DQp0aGlzLl9z
ZXRDYXB0aW9uKF80NC5jYXB0aW9uKTsNCnRoaXMudXJsPTNEXzQ0LnVybDsN
CnRoaXMuc3RhcnRMb2FkaW5nKCk7DQp9LHN3aXRjaFByZXY6ZnVuY3Rpb24o
KXsNCmlmKHRoaXMuY3VycmVudF9pbmRleCE9M0QwKXsNCnRoaXMuY3VycmVu
dF9pbmRleC0tOw0KdGhpcy51cGRhdGVGcmFtZSgpOw0KdGhpcy51cGRhdGVT
dGF0dXMoKTsNCn0NCn0sc3dpdGNoTmV4dDpmdW5jdGlvbigpew0KaWYodGhp
cy5jdXJyZW50X2luZGV4IT0zRHRoaXMuY3VycmVudF9zZXQubGVuZ3RoLTEp
ew0KdGhpcy5jdXJyZW50X2luZGV4Kys7DQp0aGlzLnVwZGF0ZUZyYW1lKCk7
DQp0aGlzLnVwZGF0ZVN0YXR1cygpOw0KfQ0KfX0pOw0KQUpTLkFFVih3aW5k
b3csImxvYWQiLGZ1bmN0aW9uKCl7DQpBSlMucHJlbG9hZEltYWdlcyhHQl9S
T09UX0RJUisibmV4dC5naWYiLEdCX1JPT1RfRElSKyJwcmV2LmdpZiIpOw0K
fSk7DQpHQl9zaG93PTNEZnVuY3Rpb24oXzQ1LHVybCxfNDcsXzQ4LF80OSl7
DQp2YXIgPQ0KXzRhPTNEe2NhcHRpb246XzQ1LGhlaWdodDpfNDd8fDUwMCx3
aWR0aDpfNDh8fDUwMCxmdWxsc2NyZWVuOmZhbHNlLGNhbGxiYT0NCmNrX2Zu
Ol80OX07DQp2YXIgd2luPTNEbmV3IEdCX1dpbmRvdyhfNGEpOw0KcmV0dXJu
IHdpbi5zaG93KHVybCk7DQp9Ow0KR0Jfc2hvd0NlbnRlcj0zRGZ1bmN0aW9u
KF80Yyx1cmwsXzRlLF80ZixfNTApew0KdmFyID0NCl81MT0zRHtjYXB0aW9u
Ol80YyxjZW50ZXJfd2luOnRydWUsaGVpZ2h0Ol80ZXx8NTAwLHdpZHRoOl80
Znx8NTAwLGZ1bGxzY3I9DQplZW46ZmFsc2UsY2FsbGJhY2tfZm46XzUwfTsN
CnZhciB3aW49M0RuZXcgR0JfV2luZG93KF81MSk7DQpyZXR1cm4gd2luLnNo
b3codXJsKTsNCn07DQpHQl9zaG93RnVsbFNjcmVlbj0zRGZ1bmN0aW9uKF81
Myx1cmwsXzU1KXsNCnZhciBfNTY9M0R7Y2FwdGlvbjpfNTMsZnVsbHNjcmVl
bjp0cnVlLGNhbGxiYWNrX2ZuOl81NX07DQp2YXIgd2luPTNEbmV3IEdCX1dp
bmRvdyhfNTYpOw0KcmV0dXJuIHdpbi5zaG93KHVybCk7DQp9Ow0KR0JfV2lu
ZG93PTNER3JleUJveC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oXzU4KXsNCnRo
aXMucGFyZW50KHt9KTsNCnRoaXMuaW1nX2hlYWRlcj0zRHRoaXMucm9vdF9k
aXIrImhlYWRlcl9iZy5naWYiOw0KdGhpcy5pbWdfY2xvc2U9M0R0aGlzLnJv
b3RfZGlyKyJ3X2Nsb3NlLmdpZiI7DQp0aGlzLnNob3dfY2xvc2VfaW1nPTNE
dHJ1ZTsNCkFKUy51cGRhdGUodGhpcyxfNTgpOw0KdGhpcy5hZGRDYWxsYmFj
ayh0aGlzLmNhbGxiYWNrX2ZuKTsNCn0saW5pdEhvb2s6ZnVuY3Rpb24oKXsN
CkFKUy5hZGRDbGFzcyh0aGlzLmdfd2luZG93LCJHQl9XaW5kb3ciKTsNCnRo
aXMuaGVhZGVyPTNEQUpTLlRBQkxFKHsiY2xhc3MiOiJoZWFkZXIifSk7DQp0
aGlzLmhlYWRlci5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9M0QidXJsKCIrdGhp
cy5pbWdfaGVhZGVyKyIpIjsNCnZhciBfNTk9M0RBSlMuVEQoeyJjbGFzcyI6
ImNhcHRpb24ifSx0aGlzLmNhcHRpb24pOw0KdmFyIF81YT0zREFKUy5URCh7
ImNsYXNzIjoiY2xvc2UifSk7DQppZih0aGlzLnNob3dfY2xvc2VfaW1nKXsN
CnZhciBfNWI9M0RBSlMuSU1HKHsic3JjIjp0aGlzLmltZ19jbG9zZX0pOw0K
dmFyIF81Yz0zREFKUy5TUEFOKCJDaGl1ZGkiKTsgLyogY2hpdWRpICovDQp2
YXIgYnRuPTNEQUpTLkRJVihfNWIsXzVjKTsNCkFKUy5BRVYoW181YixfNWNd
LCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7DQpBSlMuYWRkQ2xhc3MoXzVjLCJv
biIpOw0KfSk7DQpBSlMuQUVWKFtfNWIsXzVjXSwibW91c2VvdXQiLGZ1bmN0
aW9uKCl7DQpBSlMucmVtb3ZlQ2xhc3MoXzVjLCJvbiIpOw0KfSk7DQpBSlMu
QUVWKFtfNWIsXzVjXSwibW91c2Vkb3duIixmdW5jdGlvbigpew0KQUpTLmFk
ZENsYXNzKF81YywiY2xpY2siKTsNCn0pOw0KQUpTLkFFVihbXzViLF81Y10s
Im1vdXNldXAiLGZ1bmN0aW9uKCl7DQpBSlMucmVtb3ZlQ2xhc3MoXzVjLCJj
bGljayIpOw0KfSk7DQpBSlMuQUVWKFtfNWIsXzVjXSwiY2xpY2siLEdCX2hp
ZGUpOw0KQUpTLkFDTihfNWEsYnRuKTsNCn0NCnRib2R5X2hlYWRlcj0zREFK
Uy5UQk9EWSgpOw0KQUpTLkFDTih0Ym9keV9oZWFkZXIsQUpTLlRSKF81OSxf
NWEpKTsNCkFKUy5BQ04odGhpcy5oZWFkZXIsdGJvZHlfaGVhZGVyKTsNCkFK
Uy5BQ04odGhpcy50b3BfY250LHRoaXMuaGVhZGVyKTsNCmlmKHRoaXMuZnVs
bHNjcmVlbil7DQpBSlMuQUVWKHdpbmRvdywic2Nyb2xsIixBSlMuJGIodGhp
cy5zZXRXaW5kb3dQb3NpdGlvbix0aGlzKSk7DQp9DQp9LHNldEZyYW1lU2l6
ZTpmdW5jdGlvbigpew0KaWYodGhpcy5mdWxsc2NyZWVuKXsNCnZhciBfNWU9
M0RBSlMuZ2V0V2luZG93U2l6ZSgpOw0Kb3ZlcmxheV9oPTNEXzVlLmg7DQp0
aGlzLndpZHRoPTNETWF0aC5yb3VuZCh0aGlzLm92ZXJsYXkub2Zmc2V0V2lk
dGgtKHRoaXMub3ZlcmxheS5vZmZzZXRXaWR0PQ0KaC8xMDApKjEwKTsNCnRo
aXMuaGVpZ2h0PTNETWF0aC5yb3VuZChvdmVybGF5X2gtKG92ZXJsYXlfaC8x
MDApKjEwKTsNCn0NCkFKUy5zZXRXaWR0aCh0aGlzLmhlYWRlcix0aGlzLndp
ZHRoKzYpOw0KQUpTLnNldFdpZHRoKHRoaXMuaWZyYW1lLHRoaXMud2lkdGgp
Ow0KQUpTLnNldEhlaWdodCh0aGlzLmlmcmFtZSx0aGlzLmhlaWdodCk7DQp9
LHNldFdpbmRvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7DQp2YXIgXzVmPTNEQUpT
LmdldFdpbmRvd1NpemUoKTsNCkFKUy5zZXRMZWZ0KHRoaXMuZ193aW5kb3cs
KChfNWYudy10aGlzLndpZHRoKS8yKS0xMyk7DQppZighdGhpcy5jZW50ZXJf
d2luKXsNCkFKUy5zZXRUb3AodGhpcy5nX3dpbmRvdyxBSlMuZ2V0U2Nyb2xs
VG9wKCkpOw0KfWVsc2V7DQp2YXIgZmw9M0QoKF81Zi5oLXRoaXMuaGVpZ2h0
KS8yKS0yMCtBSlMuZ2V0U2Nyb2xsVG9wKCk7DQppZihmbDwwKXsNCmZsPTNE
MDsNCn0NCkFKUy5zZXRUb3AodGhpcy5nX3dpbmRvdyxmbCk7DQp9DQp9fSk7
DQpBSlMucHJlbG9hZEltYWdlcyhHQl9ST09UX0RJUisid19jbG9zZS5naWYi
LEdCX1JPT1RfRElSKyJoZWFkZXJfYmcuZ2lmIik7PQ0KDQoNCg0Kc2NyaXB0
X2xvYWRlZD0zRHRydWU7DQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAx
Q0MzNjUzLjFGNUFFREEwDQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQ0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVk
LXByaW50YWJsZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDovL3d3dy5jYXJ0
YXNpLml0L2phdmFzY3JpcHQvaG9tZS5qcw0KDQovL21vZGlmaWNhcmUNCnZh
ciBjb250ZW50X2hvbWU9M0QiL3BvcHVwLyI7DQp2YXIgaG9tZSA9M0QiL2d0
d3BhZ2VzIjsNCnZhciBwb3J0YUh0dHBzID0zRCIiOw0KDQovL2RhIG5vbiBt
b2RpZmljYXJlDQp2YXIgY29udGVudF9jbHViPTNEaG9tZSsiL2lvc2kvIjsN
CnZhciBjb250ZW50X2NhcnRlPTNEaG9tZSsiL2NhcnRlLyI7DQoNCmZ1bmN0
aW9uIGdvSW5pemlhdGl2YU1lc2UocGFyYW0pIHsNCglkb2N1bWVudC5nb3Rv
cGFnZS5hY3Rpb24gPTNEIGhvbWUrIi9jb21tb24vaW5kZXguanNwP2lkPTNE
V1F4RVVKdWRRUSI7DQoJZG9jdW1lbnQuZ290b3BhZ2UuanNwTmFtZS52YWx1
ZT0zRCIvaW1wZWdub19zb2NpYWxlL2luZGV4X2dvLmpzcCI7DQoJZG9jdW1l
bnQuZ290b3BhZ2UucGFyYW0udmFsdWU9M0RwYXJhbTsNCglkb2N1bWVudC5n
b3RvcGFnZS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIGdvUG9wdXAocGFyYW0p
IHsNCgl2YXIgYXJncyA9M0QgcGFyYW0uc3BsaXQoIjsiKTsNCglpZihhcmdz
WzFdPTNEPTNEbnVsbCl7DQoJCWFyZ3NbMV09M0QzMDA7DQoJfQ0KCWlmKGFy
Z3NbMl09M0Q9M0RudWxsKSB7DQoJCWFyZ3NbMl09M0QzMDA7DQoJfQ0KCWlm
KHBhcmFtLmluZGV4T2YoJy5qc3AnKSE9M0QtMSkgew0KCQk9DQp3aW5kb3cu
b3Blbihob21lK2FyZ3NbMF0sJycsJ3dpZHRoPTNEJythcmdzWzFdKycsaGVp
Z2h0PTNEJythcmdzWzJdKycsc2NyPQ0Kb2xsYmFycz0zRHllcycpOw0KCX0g
ZWxzZSB7DQoJCT0NCndpbmRvdy5vcGVuKGNvbnRlbnRfaG9tZSthcmdzWzBd
LCcnLCd3aWR0aD0zRCcrYXJnc1sxXSsnLGhlaWdodD0zRCcrYXJnc1s9DQoy
XSsnLHNjcm9sbGJhcnM9M0R5ZXMnKTsNCgl9DQp9DQpmdW5jdGlvbiBsb2Fk
KHBhZ2Upew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZWxhaW8nKS5z
cmM9M0Rjb250ZW50X2hvbWUrcGFnZTsNCn0NCmZ1bmN0aW9uIGhyZWYocGFn
ZSl7DQoJZG9jdW1lbnQubG9jYXRpb24uaHJlZj0zRGNvbnRlbnRfaG9tZStw
YWdlOw0KfQ0KZnVuY3Rpb24gZ29DbHViSnNwKHBhZ2Upew0KCWRvY3VtZW50
LmxvY2F0aW9uLmhyZWY9M0Rjb250ZW50X2NsdWIrcGFnZTsNCn0NCmZ1bmN0
aW9uIGdvQ2x1YkpzcEV4KHBhcmFtKXsNCgl2YXIgYXJncyA9M0QgcGFyYW0u
c3BsaXQoIjsiKTsNCglpZihhcmdzWzFdPTNEPTNEbnVsbCl7DQoJCWFyZ3Nb
MV09M0QzMDA7DQoJfQ0KCWlmKGFyZ3NbMl09M0Q9M0RudWxsKSB7DQoJCWFy
Z3NbMl09M0QzMDA7DQoJfQ0KCS8vZG9jdW1lbnQubG9jYXRpb24uaHJlZj0z
RGNvbnRlbnRfY2x1YitwYWdlOw0KCT0NCndpbmRvdy5vcGVuKGNvbnRlbnRf
Y2x1YithcmdzWzBdLCcnLCd3aWR0aD0zRCcrYXJnc1sxXSsnLGhlaWdodD0z
RCcrYXJnc1s9DQoyXSsnLHNjcm9sbGJhcnM9M0R5ZXMnKTsNCn0NCmZ1bmN0
aW9uIGdvUG9wdXBDbHViSnNwKHBhZ2UscGFyYW0pew0KCXdpbmRvdy5vcGVu
KGNvbnRlbnRfY2x1YitwYWdlLCcnLHBhcmFtKycsc2Nyb2xsYmFycz0zRHll
cycpOw0KfQ0KZnVuY3Rpb24gZ29Qb3B1cENhcnRlSnNwKHBhZ2UscGFyYW0p
ew0KCXdpbmRvdy5vcGVuKGNvbnRlbnRfY2FydGUrcGFnZSwnJyxwYXJhbSsn
LHNjcm9sbGJhcnM9M0R5ZXMnKTsNCn0NCmZ1bmN0aW9uIE1NX3N3YXBJbWdS
ZXN0b3JlKCkgeyAvL3YzLjANCiAgdmFyIGkseCxhPTNEZG9jdW1lbnQuTU1f
c3I7ID0NCmZvcihpPTNEMDthJiZpPGEubGVuZ3RoJiYoeD0zRGFbaV0pJiZ4
Lm9TcmM7aSsrKSB4LnNyYz0zRHgub1NyYzsNCn0NCg0KZnVuY3Rpb24gTU1f
cHJlbG9hZEltYWdlcygpIHsgLy92My4wDQogIHZhciBkPTNEZG9jdW1lbnQ7
IGlmKGQuaW1hZ2VzKXsgaWYoIWQuTU1fcCkgZC5NTV9wPTNEbmV3IEFycmF5
KCk7DQogICAgdmFyIGksaj0zRGQuTU1fcC5sZW5ndGgsYT0zRE1NX3ByZWxv
YWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0zRDA7ID0NCmk8YS5sZW5ndGg7
IGkrKykNCiAgICBpZiAoYVtpXS5pbmRleE9mKCIjIikhPTNEMCl7IGQuTU1f
cFtqXT0zRG5ldyBJbWFnZTsgPQ0KZC5NTV9wW2orK10uc3JjPTNEYVtpXTt9
fQ0KfQ0KDQpmdW5jdGlvbiBNTV9maW5kT2JqKG4sIGQpIHsgLy92NC4wMQ0K
ICB2YXIgcCxpLHg7ICBpZighZCkgZD0zRGRvY3VtZW50OyA9DQppZigocD0z
RG4uaW5kZXhPZigiPyIpKT4wJiZwYXJlbnQuZnJhbWVzLmxlbmd0aCkgew0K
ICAgIGQ9M0RwYXJlbnQuZnJhbWVzW24uc3Vic3RyaW5nKHArMSldLmRvY3Vt
ZW50OyBuPTNEbi5zdWJzdHJpbmcoMCxwKTt9DQogIGlmKCEoeD0zRGRbbl0p
JiZkLmFsbCkgeD0zRGQuYWxsW25dOyBmb3IgPQ0KKGk9M0QwOyF4JiZpPGQu
Zm9ybXMubGVuZ3RoO2krKykgeD0zRGQuZm9ybXNbaV1bbl07DQogIGZvcihp
PTNEMDsheCYmZC5sYXllcnMmJmk8ZC5sYXllcnMubGVuZ3RoO2krKykgPQ0K
eD0zRE1NX2ZpbmRPYmoobixkLmxheWVyc1tpXS5kb2N1bWVudCk7DQogIGlm
KCF4ICYmIGQuZ2V0RWxlbWVudEJ5SWQpIHg9M0RkLmdldEVsZW1lbnRCeUlk
KG4pOyByZXR1cm4geDsNCn0NCg0KZnVuY3Rpb24gTU1fc3dhcEltYWdlKCkg
eyAvL3YzLjANCiAgdmFyIGksaj0zRDAseCxhPTNETU1fc3dhcEltYWdlLmFy
Z3VtZW50czsgZG9jdW1lbnQuTU1fc3I9M0RuZXcgQXJyYXk7ID0NCmZvcihp
PTNEMDtpPChhLmxlbmd0aC0yKTtpKz0zRDMpDQogICBpZiAoKHg9M0RNTV9m
aW5kT2JqKGFbaV0pKSE9M0RudWxsKXtkb2N1bWVudC5NTV9zcltqKytdPTNE
eDsgPQ0KaWYoIXgub1NyYykgeC5vU3JjPTNEeC5zcmM7IHguc3JjPTNEYVtp
KzJdO30NCn0NCg0KZnVuY3Rpb24gTU1fanVtcE1lbnUodGFyZyxzZWxPYmos
cmVzdG9yZSl7IC8vdjMuMA0KICA9DQpldmFsKHRhcmcrIi5sb2NhdGlvbj0z
RCciK3NlbE9iai5vcHRpb25zW3NlbE9iai5zZWxlY3RlZEluZGV4XS52YWx1
ZSsiJyIpPQ0KOw0KICBpZiAocmVzdG9yZSkgc2VsT2JqLnNlbGVjdGVkSW5k
ZXg9M0QwOw0KfQ0KDQoNCg0KLy8gY29kaWNlIFdUDQoNCg0KZnVuY3Rpb24g
YWRkV3RQYXJhbShkZXN0aW5hdGlvbil7DQoJdmFyIGJhclBhcmFtcyA9M0Qg
d2luZG93LmxvY2F0aW9uLnNlYXJjaDsNCgl2YXIgZnJvbSA9M0QgYmFyUGFy
YW1zLmluZGV4T2YoJ1dULm1jX2lkJywwKTsNCgl2YXIgbmV3UGFyID0zRCAn
JzsNCglpZiAoZnJvbT49M0QwKXsNCgkJdmFyIHRlbXAgPTNEIGJhclBhcmFt
cy5zdWJzdHJpbmcoZnJvbSk7DQoJCXZhciB0byA9M0QgdGVtcC5pbmRleE9m
KCcmJyk7DQoJCWlmICh0bzwwKXsNCgkJCW5ld1BhciA9M0QgYmFyUGFyYW1z
LnN1YnN0cmluZyhmcm9tKzkpOw0KCQkJLy8gYWxlcnQoJzEgLSAnICsgbmV3
UGFyKTsNCgkJfQ0KCQllbHNlIHsNCgkJCW5ld1BhciA9M0QgYmFyUGFyYW1z
LnN1YnN0cmluZyhmcm9tKzksdG8rMSk7DQoJCQkvLyBhbGVydCgnMiAtICcg
KyBuZXdQYXIpOw0KCQl9DQoJCW5ld1BhciA9M0QgJyZXVC5tY19pZD0zRCcg
KyBuZXdQYXINCgl9PTIwDQoJdmFyIGRpbVg9M0RzY3JlZW4ud2lkdGg7IC8v
bGFyZ2hlenphIHBhZ2luYQ0KCXZhciBkaW1ZPTNEc2NyZWVuLmhlaWdodDsg
Ly9sdW5naGV6emEgcGFnaW5hDQoJZGVzdGluYXRpb24gPTNEIGRlc3RpbmF0
aW9uICsgbmV3UGFyOw0KCS8vIGFsZXJ0KGRlc3RpbmF0aW9uKTsNCgk9DQp3
aW5kb3cub3BlbihkZXN0aW5hdGlvbiwnbmV3V2luJywndG9vbGJhcj0zRG5v
LHN0YXR1cz0zRG5vLHNjcm9sbGJhcnM9M0R5PQ0KZXMsbWVudWJhcj0zRG5v
LHdpZHRoPTNEJytkaW1YKycsaGVpZ2h0PTNEJytkaW1ZKycsbGVmdD0zRDcx
MiwgPQ0KdG9wPTNEMzAwJyk7DQp9DQoNCg0KDQpmdW5jdGlvbiBhZGRXdFBh
cmFtVEFCKGRlc3RpbmF0aW9uKXsNCi8vIElNUE9SVEFOVEU6IERBIFVUSUxJ
WlpBUkUgU09MTyBORUxMRSBDQU1QQUdORSwgc2VydmUgcGVyIHRlbmVyZSBp
biA9DQptZW1vcmlhIGlsIGNvZGljZSBXVCBxdWFsb3JhIHNpIGFycml2aSBh
bGxhIGxhbmRpbmcgcGFnZSBkYSBwYWdpbmEgPQ0KaW50ZXJtZWRpYQ0KCXZh
ciBiYXJQYXJhbXMgPTNEIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7DQoJdmFy
IGZyb20gPTNEIGJhclBhcmFtcy5pbmRleE9mKCdXVC5tY19pZCcsMCk7DQoJ
dmFyIG5ld1BhciA9M0QgJyc7DQoJaWYgKGZyb20+PTNEMCl7DQoJCXZhciB0
ZW1wID0zRCBiYXJQYXJhbXMuc3Vic3RyaW5nKGZyb20pOw0KCQl2YXIgdG8g
PTNEIHRlbXAuaW5kZXhPZignJicpOw0KCQlpZiAodG88MCl7DQoJCQluZXdQ
YXIgPTNEIGJhclBhcmFtcy5zdWJzdHJpbmcoZnJvbSs5KTsNCgkJCS8vIGFs
ZXJ0KCcxIC0gJyArIG5ld1Bhcik7DQoJCX0NCgkJZWxzZSB7DQoJCQluZXdQ
YXIgPTNEIGJhclBhcmFtcy5zdWJzdHJpbmcoZnJvbSs5LHRvKzEpOw0KCQkJ
Ly8gYWxlcnQoJzIgLSAnICsgbmV3UGFyKTsNCgkJfQ0KCQluZXdQYXIgPTNE
ICcmV1QubWNfaWQ9M0QnICsgbmV3UGFyDQoJfT0yMA0KCXZhciBkaW1YPTNE
c2NyZWVuLndpZHRoOyAvL2xhcmdoZXp6YSBwYWdpbmENCgl2YXIgZGltWT0z
RHNjcmVlbi5oZWlnaHQ7IC8vbHVuZ2hlenphIHBhZ2luYQ0KCWRlc3RpbmF0
aW9uID0zRCBkZXN0aW5hdGlvbiArIG5ld1BhcjsNCgkvLyBhbGVydChkZXN0
aW5hdGlvbik7DQoJd2luZG93LmxvY2F0aW9uLmhyZWYgPTNEIGRlc3RpbmF0
aW9uOw0KCT0NCi8vd2luZG93Lm9wZW4oZGVzdGluYXRpb24sJ25ld1dpbics
J3Rvb2xiYXI9M0R5ZXMsc3RhdHVzPTNEeWVzLHNjcm9sbGJhcnM9DQo9M0R5
ZXMsbWVudWJhcj0zRHllcyx3aWR0aD0zRCcrZGltWCsnLGhlaWdodD0zRCcr
ZGltWSsnLGxlZnQ9M0Q3MTIsID0NCnRvcD0zRDMwMCcpOw0KfQ0KDQpmdW5j
dGlvbiBjaGFuZ2VXdFBhcmFtKGxpbmssIG5ld0NvZGUsIF9uZXdXaW5kb3cp
ew0KCS8vIEEgVCBUIEUgTiBaIEkgTyBOIEU6PTIwDQoJLy8gc2UsIG5lbCBs
aW5rIGRpIHByb3ZlbmllbnphLCBkaSBwYXJhbWV0cmkgIldULm1jX2lkIiBj
ZSBuJz1FOCBwaT1GOSA9DQpkaSB1bm8sIHNvbG8gaWwgcHJpbW8gdmllbmUg
Y29uc2lkZXJhdG8NCgkvLyBwYXJhbWV0cm8gX25ld1dpbmRvdyA9M0Qgc2Ug
dHJ1ZSBpbCBsaW5rIGNvbnRlbnV0byBpbiAnbGluaycgc2FyPUUwID0NCmVz
c2VyZSBhcGVydG8gaW4gdW5hIG51b3ZhIGZpbmVzdHJhOw0KCS8vIHBhcmFt
ZXRybyBuZXdDb2RlID0zRCBjb2RpY2UgZGEgYWdnaXVuZ2VyZSBhbGxhIGZp
bmUgZGVsIHZhbG9yZSBkZWwgPQ0KcGFyYW1ldHJvICJXVC5tY19pZCINCgkv
LyBwYXJhbWV0cm8gbGluayA9M0QgcGFnaW5hIGRpIGRlc3RpbmF6aW9uZSAo
bm9uIGRldmUgY29udGVuZXJlIGFsdHJpID0NCnBhcmFtZXRyaSAiV1QubWNf
aWQiKQ0KIAl2YXIgYmFyUGFyYW1zID0zRCB3aW5kb3cubG9jYXRpb24uc2Vh
cmNoOw0KCXZhciBmcm9tID0zRCBiYXJQYXJhbXMuaW5kZXhPZignV1QubWNf
aWQnLDApOw0KCXZhciBuZXdQYXIgPTNEICcnOw0KCWlmIChmcm9tPj0zRDAp
ew0KCQl2YXIgdGVtcCA9M0QgYmFyUGFyYW1zLnN1YnN0cmluZyhmcm9tKTsN
CgkJdmFyIHRvID0zRCB0ZW1wLmluZGV4T2YoJyYnKTsNCgkJaWYgKHRvPDAp
ew0KCQkJbmV3UGFyID0zRCBiYXJQYXJhbXMuc3Vic3RyaW5nKGZyb20rOSk7
DQoJCQkvL2FsZXJ0KCcxIC0gJyArIG5ld1Bhcik7DQoJCX0NCgkJZWxzZSB7
DQoJCQluZXdQYXIgPTNEIGJhclBhcmFtcy5zdWJzdHJpbmcoZnJvbSs5LHRv
KzEpOw0KCQkJLy9hbGVydCgnMiAtICcgKyBuZXdQYXIpOw0KCQl9DQoJCXZh
ciBmaXJzdENoYXIgPTNEICcnOz0yMA0KCQlpZiAobGluay5pbmRleE9mKCc/
Jyk8MCkNCgkJCWZpcnN0Q2hhcj0zRCc/JzsNCgkJZWxzZQ0KCQkJZmlyc3RD
aGFyPTNEJyYnOw0KCQluZXdQYXIgPTNEIGZpcnN0Q2hhciArICdXVC5tY19p
ZD0zRCcgKyBuZXdQYXIgKyBuZXdDb2RlOw0KCX0NCglsaW5rID0zRCBsaW5r
ICsgbmV3UGFyOw0KCWlmKF9uZXdXaW5kb3c9M0Q9M0R0cnVlKXsNCgkJdmFy
IGRpbVg9M0RzY3JlZW4ud2lkdGg7IC8vbGFyZ2hlenphIHBhZ2luYQ0KCQl2
YXIgZGltWT0zRHNjcmVlbi5oZWlnaHQ7IC8vbHVuZ2hlenphIHBhZ2luYQ0K
CQk9DQp3aW5kb3cub3BlbihsaW5rLCduZXdXaW4nLCd0b29sYmFyPTNEeWVz
LHN0YXR1cz0zRHllcyxzY3JvbGxiYXJzPTNEeWVzLG1lPQ0KbnViYXI9M0R5
ZXMsd2lkdGg9M0QnK2RpbVgrJyxoZWlnaHQ9M0QnK2RpbVkrJyxsZWZ0PTNE
NzEyLCB0b3A9M0QzMDAnKTsNCgkJcmV0dXJuOw0KCX0NCglpZihfbmV3V2lu
ZG93PTNEPTNEZmFsc2Upew0KCQl3aW5kb3cubG9jYXRpb24uaHJlZj0zRGxp
bms7DQoJCXJldHVybjsNCgl9DQp9DQoNCg0KLS0tLS0tPV9OZXh0UGFydF8w
MDBfMDAwMF8wMUNDMzY1My4xRjVBRURBMA0KQ29udGVudC1UeXBlOiBhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0NCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6
Ly93d3cuY2FydGFzaS5pdC9qYXZhc2NyaXB0L2dlc3R1cmwuanMNCg0KCWZ1
bmN0aW9uIGdvKGlkKSB7DQoJCWdvKGlkLCdudWxsJywnbnVsbCcpOw0KCX0N
CglmdW5jdGlvbiBnbyhpZCwgcGFyYW0pIHsNCgkJZ28oaWQscGFyYW0sJ251
bGwnKTsNCgl9DQoJZnVuY3Rpb24gZ29IdG1sKHBhcmFtLCBwYXJhbTIpIHsN
CgkJZG9jdW1lbnQuZ290b3BhZ2UuYWN0aW9uID0zRCBob21lICsgIi9jb21t
b24vaW5kZXguanNwIjsNCgkJZG9jdW1lbnQuZ290b3BhZ2UuanNwTmFtZS52
YWx1ZT0zRHBhcmFtOw0KICAgIGRvY3VtZW50LmdvdG9wYWdlLmlkYy52YWx1
ZT0zRHBhcmFtMjsNCgkJZG9jdW1lbnQuZ290b3BhZ2Uuc3VibWl0KCk7DQoJ
fQ0KPTA5DQoJZnVuY3Rpb24gZ2V0VXJsKGpzcCxob21lUGFnZSl7PTA5DQoJ
CXZhciB1cmwgPTNEICIiOw0KCQlpZihqc3A9M0Q9M0QiL2RvbmF6aW9uaS9k
b25hLmpzcCIgfHwgPQ0KanNwPTNEPTNEIi9sYXZvcmFyZV9pbl9jYXJ0YXNp
L21vZHVsby5qc3AiIHx8ID0NCmpzcD0zRD0zRCIvbGF2b3JhcmVfaW5fY2Fy
dGFzaS9pbnNlcmltZW50by5qc3AiIHx8ID0NCmpzcD0zRD0zRCJuYWRtdVJ0
VlVaIil7DQoJCQlpZiAoZG9jdW1lbnQuVVJMLmluZGV4T2YoIm5ld2d0d3N2
IikhPTNELTEpew0KCQkJCXVybCA9M0QgZ2V0TmFtZUh0dHAoKSArIGhvbWUg
KyAiL2NvbW1vbi9pbmRleC5qc3AiOw0KCQkJfSBlbHNlIHsNCgkJCQl1cmwg
PTNEIGdldE5hbWVIdHRwcygpICsgaG9tZSArICIvY29tbW9uL2luZGV4Lmpz
cCI7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZiAoaG9tZVBhZ2Upew0KCQkJ
CWlmIChkb2N1bWVudC5VUkwuaW5kZXhPZigiaHR0cHMiKSE9M0QtMSl7DQoJ
CQkJCXVybCA9M0QgZ2V0TmFtZUh0dHAoKSArIGhvbWUgKyAiL2luZGV4Lmpz
cCI7DQoJCQkJfSBlbHNlIHsNCgkJCQkJdXJsID0zRCBob21lICsgIi9pbmRl
eC5qc3AiOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJaWYgKGRvY3VtZW50
LlVSTC5pbmRleE9mKCJodHRwcyIpIT0zRC0xKXsNCgkJCQkJdXJsID0zRCBn
ZXROYW1lSHR0cCgpICsgaG9tZSArICIvY29tbW9uL2luZGV4LmpzcCI7DQoJ
CQkJfSBlbHNlIHsNCgkJCQkJdXJsID0zRCBob21lICsgIi9jb21tb24vaW5k
ZXguanNwIjsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuICh1cmwpOw0K
CX0NCi8qDQoJdXJsID0zRCAiaHR0cDovL25ld2d0dy5zaS5pdC9pbmRleC8i
Ow0KCXBhcmVudC5sb2NhdGlvbi5ocmVmPTNEdXJsOw0KKi8JPTA5DQoJZnVu
Y3Rpb24gZ28oaWQsIHBhcmFtLCBqc3ApIHsNCgkJdmFyIHVybCA9M0QnJzsN
CgkJaWYoaWQ9M0Q9M0QibmFkbXVSdFZVWiIpIHsNCgkJCXVybCA9M0QgZ2V0
VXJsKCduYWRtdVJ0VlVaJyxmYWxzZSk7DQoJCX0gZWxzZSB7DQoJCQl1cmwg
PTNEIGdldFVybChqc3AsZmFsc2UpOw0KCQl9DQoJCWlmKGlkIT0zRCJudWxs
Iikge3VybD0zRHVybCsiP2lkPTNEIitpZH0NCgkJZG9jdW1lbnQuZ290b3Bh
Z2UuYWN0aW9uID0zRCB1cmw7DQoJCWRvY3VtZW50LmdvdG9wYWdlLnBhcmFt
LnZhbHVlPTNEcGFyYW07DQoJCWRvY3VtZW50LmdvdG9wYWdlLmpzcE5hbWUu
dmFsdWU9M0Rqc3A7DQoJCWRvY3VtZW50LmdvdG9wYWdlLnN1Ym1pdCgpOw0K
CX0NCglmdW5jdGlvbiBnb2pzcChqc3AsIHBhcmFtKSB7DQoJCWdvKCdudWxs
JyxwYXJhbSxqc3ApOw0KCX0NCj0wOQ0KCWZ1bmN0aW9uIGdvSG9tZShpZCkg
ew0KCQlkb2N1bWVudC5nb3RvcGFnZS5hY3Rpb24gPTNEIGdldFVybCgiIix0
cnVlKSArICI/aWQ9M0QiK2lkOyAvL2hvbWUgKyA9DQoiL2luZGV4LmpzcD9p
ZD0zRCIraWQ7DQoJCWRvY3VtZW50LmdvdG9wYWdlLnN1Ym1pdCgpOw0KCX0N
Cg0KCWZ1bmN0aW9uIGFwcmlDb21tKGlkKSB7DQoJCWlmKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjJytpZCkhPTNEbnVsbCl7DQoJCQlkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYycraWQpLmNsYXNzTmFtZSA9M0QgPQ0KJ2xpbmtQ
cml2YXRpQm9sZC1IT1ZFUic7DQoJCX0NCgl9DQoNCglmdW5jdGlvbiBhcHJp
U2VydihpZCkgew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycraWQp
LmNsYXNzTmFtZSA9M0QgJ2xpbmtHcmlnaW9Cb2xkLUhPVkVSJzsNCgl9DQoJ
ZnVuY3Rpb24gZ29Cb3goZWxlbWVudCkgew0KCQlkb2N1bWVudC5nb3RvcGFn
ZS5hY3Rpb24gPTNEIGdldFVybCgiIixmYWxzZSkgKyAiP2lkPTNEIitlbGVt
ZW50LnZhbHVlID0NCjsvL2hvbWUgKyAiL2NvbW1vbi9pbmRleC5qc3A/aWQ9
M0QiK2VsZW1lbnQudmFsdWU7DQoJCWRvY3VtZW50LmdvdG9wYWdlLnN1Ym1p
dCgpOw0KCX0NCi8vCWZ1bmN0aW9uIGdvRm9jdXNvbihwYXJhbSwgcGFyYW0y
KSB7DQovLwkJZG9jdW1lbnQuZ290b3BhZ2UuYWN0aW9uID0zRGdldFVybCgi
IixmYWxzZSkgOy8vIGhvbWUgKyA9DQoiL2NvbW1vbi9pbmRleC5qc3AiOw0K
Ly8JCWRvY3VtZW50LmdvdG9wYWdlLm5ld3NQYWdlLnZhbHVlPTNEcGFyYW07
DQovLyAgICBkb2N1bWVudC5nb3RvcGFnZS5wYXJhbS52YWx1ZT0zRHBhcmFt
MjsNCi8vCQlkb2N1bWVudC5nb3RvcGFnZS5zdWJtaXQoKTsNCi8vCX0NCglm
dW5jdGlvbiBnb05ld3MocGFyYW0pIHsNCgkJZG9jdW1lbnQuZ290b3BhZ2Uu
YWN0aW9uID0zRCBnZXRVcmwoIiIsZmFsc2UpIDsvL2hvbWUgKyA9DQoiL2Nv
bW1vbi9pbmRleC5qc3AiOw0KCQlkb2N1bWVudC5nb3RvcGFnZS5uZXdzUGFn
ZS52YWx1ZT0zRHBhcmFtOw0KCQlkb2N1bWVudC5nb3RvcGFnZS5zdWJtaXQo
KTsNCgl9DQo9MDkNCglmdW5jdGlvbiBnZXROYW1lSHR0cHMoKXsNCgkJdmFy
IG5hbWUgPTNEIiI7DQoJCXZhciBmaW5lPTNEIGRvY3VtZW50LlVSTC5pbmRl
eE9mKCIvIiwxMCk7DQoJCXZhciBpbmkgPTNEIGRvY3VtZW50LlVSTC5pbmRl
eE9mKCIvLyIpOw0KCQlpZiAoZmluZSAhPTNEIC0xKXsNCgkJCW5hbWU9M0Rk
b2N1bWVudC5VUkwuc3Vic3RyaW5nKGluaSsyLGZpbmUpOw0KCQkJbmFtZT0z
RCJodHRwczovLyIgKyBuYW1lICsgcG9ydGFIdHRwczsNCgkJfT0yMA0KCQly
ZXR1cm4gKG5hbWUpOw0KCX0NCj0wOQ0KCWZ1bmN0aW9uIGdldE5hbWVIdHRw
KCl7DQoJCXZhciBuYW1lID0zRCIiOw0KCQl2YXIgZmluZT0zRCBkb2N1bWVu
dC5VUkwuaW5kZXhPZigiLyIsMTApOw0KCQlpZiAoZG9jdW1lbnQuVVJMLmlu
ZGV4T2YoIjoiLDEwKSE9M0QiLTEiKSB7DQoJCQlmaW5lPTNEIGRvY3VtZW50
LlVSTC5pbmRleE9mKCI6IiwxMCk7DQoJCX0NCgkJdmFyIGluaSA9M0QgZG9j
dW1lbnQuVVJMLmluZGV4T2YoIi8vIik7DQoJCWlmIChmaW5lICE9M0QgLTEp
ew0KCQkJbmFtZT0zRGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoaW5pKzIsZmlu
ZSk7DQoJCQluYW1lPTNEImh0dHA6Ly8iICsgbmFtZTs9MjANCgkJfT0yMA0K
CQlyZXR1cm4gKG5hbWUpOw0KCX0NCg0KDQotLS0tLS09X05leHRQYXJ0XzAw
MF8wMDAwXzAxQ0MzNjUzLjFGNUFFREEwDQpDb250ZW50LVR5cGU6IGFwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu
ZzogcXVvdGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDov
L2Ftb3VnZTIwMTEuY29tL2EvZ3R3cGFnZXMvU2NyaXB0cy9BQ19SdW5BY3Rp
dmVDb250ZW50LmpzDQoNCi8vdjEuMA0KLy9Db3B5cmlnaHQgMjAwNiBBZG9i
ZSBTeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpmdW5jdGlv
biBBQ19BZGRFeHRlbnNpb24oc3JjLCBleHQpDQp7DQogIGlmIChzcmMuaW5k
ZXhPZignPycpICE9M0QgLTEpDQogICAgcmV0dXJuIHNyYy5yZXBsYWNlKC9c
Py8sIGV4dCsnPycpOz0yMA0KICBlbHNlDQogICAgcmV0dXJuIHNyYyArIGV4
dDsNCn0NCg0KZnVuY3Rpb24gQUNfR2VuZXJhdGVvYmoob2JqQXR0cnMsIHBh
cmFtcywgZW1iZWRBdHRycyk9MjANCns9MjANCiAgdmFyIHN0ciA9M0QgJzxv
YmplY3QgJzsNCiAgZm9yICh2YXIgaSBpbiBvYmpBdHRycykNCiAgICBzdHIg
Kz0zRCBpICsgJz0zRCInICsgb2JqQXR0cnNbaV0gKyAnIiAnOw0KICBzdHIg
Kz0zRCAnPic7DQogIGZvciAodmFyIGkgaW4gcGFyYW1zKQ0KICAgIHN0ciAr
PTNEICc8cGFyYW0gbmFtZT0zRCInICsgaSArICciIHZhbHVlPTNEIicgKyBw
YXJhbXNbaV0gKyAnIiAvPiA9DQonOw0KICBzdHIgKz0zRCAnPGVtYmVkICc7
DQogIGZvciAodmFyIGkgaW4gZW1iZWRBdHRycykNCiAgICBzdHIgKz0zRCBp
ICsgJz0zRCInICsgZW1iZWRBdHRyc1tpXSArICciICc7DQogIHN0ciArPTNE
ICcgPjwvZW1iZWQ+PC9vYmplY3Q+JzsNCg0KICBkb2N1bWVudC53cml0ZShz
dHIpOw0KfQ0KDQpmdW5jdGlvbiBBQ19GTF9SdW5Db250ZW50KCl7DQogIHZh
ciByZXQgPTNEPTIwDQogICAgQUNfR2V0QXJncw0KICAgICggIGFyZ3VtZW50
cywgIi5zd2YiLCAibW92aWUiLCA9DQoiY2xzaWQ6ZDI3Y2RiNmUtYWU2ZC0x
MWNmLTk2YjgtNDQ0NTUzNTQwMDAwIg0KICAgICAsICJhcHBsaWNhdGlvbi94
LXNob2Nrd2F2ZS1mbGFzaCINCiAgICApOw0KICBBQ19HZW5lcmF0ZW9iaihy
ZXQub2JqQXR0cnMsIHJldC5wYXJhbXMsIHJldC5lbWJlZEF0dHJzKTsNCn0N
Cg0KZnVuY3Rpb24gQUNfU1dfUnVuQ29udGVudCgpew0KICB2YXIgcmV0ID0z
RD0yMA0KICAgIEFDX0dldEFyZ3MNCiAgICAoICBhcmd1bWVudHMsICIuZGNy
IiwgInNyYyIsID0NCiJjbHNpZDoxNjZCMUJDQS0zRjlDLTExQ0YtODA3NS00
NDQ1NTM1NDAwMDAiDQogICAgICwgbnVsbA0KICAgICk7DQogIEFDX0dlbmVy
YXRlb2JqKHJldC5vYmpBdHRycywgcmV0LnBhcmFtcywgcmV0LmVtYmVkQXR0
cnMpOw0KfQ0KDQpmdW5jdGlvbiBBQ19HZXRBcmdzKGFyZ3MsIGV4dCwgc3Jj
UGFyYW1OYW1lLCBjbGFzc2lkLCBtaW1lVHlwZSl7DQogIHZhciByZXQgPTNE
IG5ldyBPYmplY3QoKTsNCiAgcmV0LmVtYmVkQXR0cnMgPTNEIG5ldyBPYmpl
Y3QoKTsNCiAgcmV0LnBhcmFtcyA9M0QgbmV3IE9iamVjdCgpOw0KICByZXQu
b2JqQXR0cnMgPTNEIG5ldyBPYmplY3QoKTsNCiAgZm9yICh2YXIgaT0zRDA7
IGkgPCBhcmdzLmxlbmd0aDsgaT0zRGkrMil7DQogICAgdmFyIGN1cnJBcmcg
PTNEIGFyZ3NbaV0udG9Mb3dlckNhc2UoKTsgICA9MjANCg0KICAgIHN3aXRj
aCAoY3VyckFyZyl7PTA5DQogICAgICBjYXNlICJjbGFzc2lkIjoNCiAgICAg
ICAgYnJlYWs7DQogICAgICBjYXNlICJwbHVnaW5zcGFnZSI6DQogICAgICAg
IHJldC5lbWJlZEF0dHJzW2FyZ3NbaV1dID0zRCBhcmdzW2krMV07DQogICAg
ICAgIGJyZWFrOw0KICAgICAgY2FzZSAic3JjIjoNCiAgICAgIGNhc2UgIm1v
dmllIjo9MDkNCiAgICAgICAgYXJnc1tpKzFdID0zRCBBQ19BZGRFeHRlbnNp
b24oYXJnc1tpKzFdLCBleHQpOw0KICAgICAgICByZXQuZW1iZWRBdHRyc1si
c3JjIl0gPTNEIGFyZ3NbaSsxXTsNCiAgICAgICAgcmV0LnBhcmFtc1tzcmNQ
YXJhbU5hbWVdID0zRCBhcmdzW2krMV07DQogICAgICAgIGJyZWFrOw0KICAg
ICAgY2FzZSAib25hZnRlcnVwZGF0ZSI6DQogICAgICBjYXNlICJvbmJlZm9y
ZXVwZGF0ZSI6DQogICAgICBjYXNlICJvbmJsdXIiOg0KICAgICAgY2FzZSAi
b25jZWxsY2hhbmdlIjoNCiAgICAgIGNhc2UgIm9uY2xpY2siOg0KICAgICAg
Y2FzZSAib25kYmxDbGljayI6DQogICAgICBjYXNlICJvbmRyYWciOg0KICAg
ICAgY2FzZSAib25kcmFnZW5kIjoNCiAgICAgIGNhc2UgIm9uZHJhZ2VudGVy
IjoNCiAgICAgIGNhc2UgIm9uZHJhZ2xlYXZlIjoNCiAgICAgIGNhc2UgIm9u
ZHJhZ292ZXIiOg0KICAgICAgY2FzZSAib25kcm9wIjoNCiAgICAgIGNhc2Ug
Im9uZmluaXNoIjoNCiAgICAgIGNhc2UgIm9uZm9jdXMiOg0KICAgICAgY2Fz
ZSAib25oZWxwIjoNCiAgICAgIGNhc2UgIm9ubW91c2Vkb3duIjoNCiAgICAg
IGNhc2UgIm9ubW91c2V1cCI6DQogICAgICBjYXNlICJvbm1vdXNlb3ZlciI6
DQogICAgICBjYXNlICJvbm1vdXNlbW92ZSI6DQogICAgICBjYXNlICJvbm1v
dXNlb3V0IjoNCiAgICAgIGNhc2UgIm9ua2V5cHJlc3MiOg0KICAgICAgY2Fz
ZSAib25rZXlkb3duIjoNCiAgICAgIGNhc2UgIm9ua2V5dXAiOg0KICAgICAg
Y2FzZSAib25sb2FkIjoNCiAgICAgIGNhc2UgIm9ubG9zZWNhcHR1cmUiOg0K
ICAgICAgY2FzZSAib25wcm9wZXJ0eWNoYW5nZSI6DQogICAgICBjYXNlICJv
bnJlYWR5c3RhdGVjaGFuZ2UiOg0KICAgICAgY2FzZSAib25yb3dzZGVsZXRl
IjoNCiAgICAgIGNhc2UgIm9ucm93ZW50ZXIiOg0KICAgICAgY2FzZSAib25y
b3dleGl0IjoNCiAgICAgIGNhc2UgIm9ucm93c2luc2VydGVkIjoNCiAgICAg
IGNhc2UgIm9uc3RhcnQiOg0KICAgICAgY2FzZSAib25zY3JvbGwiOg0KICAg
ICAgY2FzZSAib25iZWZvcmVlZGl0Zm9jdXMiOg0KICAgICAgY2FzZSAib25h
Y3RpdmF0ZSI6DQogICAgICBjYXNlICJvbmJlZm9yZWRlYWN0aXZhdGUiOg0K
ICAgICAgY2FzZSAib25kZWFjdGl2YXRlIjoNCiAgICAgIGNhc2UgInR5cGUi
Og0KICAgICAgY2FzZSAiY29kZWJhc2UiOg0KICAgICAgICByZXQub2JqQXR0
cnNbYXJnc1tpXV0gPTNEIGFyZ3NbaSsxXTsNCiAgICAgICAgYnJlYWs7DQog
ICAgICBjYXNlICJ3aWR0aCI6DQogICAgICBjYXNlICJoZWlnaHQiOg0KICAg
ICAgY2FzZSAiYWxpZ24iOg0KICAgICAgY2FzZSAidnNwYWNlIjo9MjANCiAg
ICAgIGNhc2UgImhzcGFjZSI6DQogICAgICBjYXNlICJjbGFzcyI6DQogICAg
ICBjYXNlICJ0aXRsZSI6DQogICAgICBjYXNlICJhY2Nlc3NrZXkiOg0KICAg
ICAgY2FzZSAibmFtZSI6DQogICAgICBjYXNlICJpZCI6DQogICAgICBjYXNl
ICJ0YWJpbmRleCI6DQogICAgICAgIHJldC5lbWJlZEF0dHJzW2FyZ3NbaV1d
ID0zRCByZXQub2JqQXR0cnNbYXJnc1tpXV0gPTNEIGFyZ3NbaSsxXTsNCiAg
ICAgICAgYnJlYWs7DQogICAgICBkZWZhdWx0Og0KICAgICAgICByZXQuZW1i
ZWRBdHRyc1thcmdzW2ldXSA9M0QgcmV0LnBhcmFtc1thcmdzW2ldXSA9M0Qg
YXJnc1tpKzFdOw0KICAgIH0NCiAgfQ0KICByZXQub2JqQXR0cnNbImNsYXNz
aWQiXSA9M0QgY2xhc3NpZDsNCiAgaWYgKG1pbWVUeXBlKSByZXQuZW1iZWRB
dHRyc1sidHlwZSJdID0zRCBtaW1lVHlwZTsNCiAgcmV0dXJuIHJldDsNCn0N
Cg0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMzY1My4xRjVBRURB
MA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCkNv
bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCkNv
bnRlbnQtTG9jYXRpb246IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9hY2NvcmRp
b24vbGliL2pxdWVyeS5kaW1lbnNpb25zLmpzDQoNCi8qIENvcHlyaWdodCAo
YykgMjAwNyBQYXVsIEJha2F1cyAocGF1bC5iYWthdXNAZ29vZ2xlbWFpbC5j
b20pIGFuZCA9DQpCcmFuZG9uIEFhcm9uIChicmFuZG9uLmFhcm9uQGdtYWls
LmNvbSB8fCBodHRwOi8vYnJhbmRvbmFhcm9uLm5ldCk9MEE9DQogKiBEdWFs
IGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgPQ0KKGh0dHA6Ly93d3cub3BlbnNv
dXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKT0wQT0NCiAqIGFu
ZCBHUEwgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvZ3Bs
LWxpY2Vuc2UucGhwKSBsaWNlbnNlcy49MEE9DQogKj0wQT0NCiAqICRMYXN0
Q2hhbmdlZERhdGU6IDIwMDctMTAtMDYgMjA6MTE6MTUgKzAyMDAgKFNhLCAw
NiBPa3QgMjAwNykgJD0wQT0NCiAqICRSZXY6IDM1ODEgJD0wQT0NCiAqPTBB
PQ0KICogVmVyc2lvbjogQFZFUlNJT049MEE9DQogKj0wQT0NCiAqIFJlcXVp
cmVzOiBqUXVlcnkgMS4yKz0wQT0NCiAqLz0wQT0NCj0wQT0NCihmdW5jdGlv
bigkKXs9MEE9DQoJPTBBPQ0KJC5kaW1lbnNpb25zID0zRCB7PTBBPQ0KCXZl
cnNpb246ICdAVkVSU0lPTic9MEE9DQp9Oz0wQT0NCj0wQT0NCi8vIENyZWF0
ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91
dGVyV2lkdGggbWV0aG9kcz0wQT0NCiQuZWFjaCggWyAnSGVpZ2h0JywgJ1dp
ZHRoJyBdLCBmdW5jdGlvbihpLCBuYW1lKXs9MEE9DQoJPTBBPQ0KCS8vIGlu
bmVySGVpZ2h0IGFuZCBpbm5lcldpZHRoPTBBPQ0KCSQuZm5bICdpbm5lcicg
KyBuYW1lIF0gPTNEIGZ1bmN0aW9uKCkgez0wQT0NCgkJaWYgKCF0aGlzWzBd
KSByZXR1cm47PTBBPQ0KCQk9MEE9DQoJCXZhciB0b3JsID0zRCBuYW1lID0z
RD0zRCAnSGVpZ2h0JyA/ICdUb3AnICAgIDogJ0xlZnQnLCAgLy8gdG9wIG9y
IGxlZnQ9MEE9DQoJCSAgICBib3JyID0zRCBuYW1lID0zRD0zRCAnSGVpZ2h0
JyA/ICdCb3R0b20nIDogJ1JpZ2h0JzsgLy8gYm90dG9tIG9yID0NCnJpZ2h0
PTBBPQ0KCQk9MEE9DQoJCXJldHVybiBudW0oIHRoaXMsIG5hbWUudG9Mb3dl
ckNhc2UoKSApICsgbnVtKHRoaXMsICdwYWRkaW5nJyArIHRvcmwpICsgPQ0K
bnVtKHRoaXMsICdwYWRkaW5nJyArIGJvcnIpOz0wQT0NCgl9Oz0wQT0NCgk9
MEE9DQoJLy8gb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGg9MEE9DQoJJC5m
blsgJ291dGVyJyArIG5hbWUgXSA9M0QgZnVuY3Rpb24ob3B0aW9ucykgez0w
QT0NCgkJaWYgKCF0aGlzWzBdKSByZXR1cm47PTBBPQ0KCQk9MEE9DQoJCXZh
ciB0b3JsID0zRCBuYW1lID0zRD0zRCAnSGVpZ2h0JyA/ICdUb3AnICAgIDog
J0xlZnQnLCAgLy8gdG9wIG9yIGxlZnQ9MEE9DQoJCSAgICBib3JyID0zRCBu
YW1lID0zRD0zRCAnSGVpZ2h0JyA/ICdCb3R0b20nIDogJ1JpZ2h0JzsgLy8g
Ym90dG9tIG9yID0NCnJpZ2h0PTBBPQ0KCQk9MEE9DQoJCW9wdGlvbnMgPTNE
ICQuZXh0ZW5kKHsgbWFyZ2luOiBmYWxzZSB9LCBvcHRpb25zIHx8IHt9KTs9
MEE9DQoJCT0wQT0NCgkJcmV0dXJuIG51bSggdGhpcywgbmFtZS50b0xvd2Vy
Q2FzZSgpICk9MEE9DQoJCQkJKyBudW0odGhpcywgJ2JvcmRlcicgKyB0b3Js
ICsgJ1dpZHRoJykgKyBudW0odGhpcywgJ2JvcmRlcicgKyBib3JyICsgPQ0K
J1dpZHRoJyk9MEE9DQoJCQkJKyBudW0odGhpcywgJ3BhZGRpbmcnICsgdG9y
bCkgKyBudW0odGhpcywgJ3BhZGRpbmcnICsgYm9ycik9MEE9DQoJCQkJKyAo
b3B0aW9ucy5tYXJnaW4gPyAobnVtKHRoaXMsICdtYXJnaW4nICsgdG9ybCkg
KyBudW0odGhpcywgJ21hcmdpbicgPQ0KKyBib3JyKSkgOiAwKTs9MEE9DQoJ
fTs9MEE9DQp9KTs9MEE9DQo9MEE9DQovLyBDcmVhdGUgc2Nyb2xsTGVmdCBh
bmQgc2Nyb2xsVG9wIG1ldGhvZHM9MEE9DQokLmVhY2goIFsnTGVmdCcsICdU
b3AnXSwgZnVuY3Rpb24oaSwgbmFtZSkgez0wQT0NCgkkLmZuWyAnc2Nyb2xs
JyArIG5hbWUgXSA9M0QgZnVuY3Rpb24odmFsKSB7PTBBPQ0KCQlpZiAoIXRo
aXNbMF0pIHJldHVybjs9MEE9DQoJCT0wQT0NCgkJcmV0dXJuIHZhbCAhPTNE
IHVuZGVmaW5lZCA/PTBBPQ0KCQk9MEE9DQoJCQkvLyBTZXQgdGhlIHNjcm9s
bCBvZmZzZXQ9MEE9DQoJCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7PTBBPQ0K
CQkJCXRoaXMgPTNEPTNEIHdpbmRvdyB8fCB0aGlzID0zRD0zRCBkb2N1bWVu
dCA/PTBBPQ0KCQkJCQl3aW5kb3cuc2Nyb2xsVG8oID0wQT0NCgkJCQkJCW5h
bWUgPTNEPTNEICdMZWZ0JyA/IHZhbCA6ICQod2luZG93KVsgJ3Njcm9sbExl
ZnQnIF0oKSw9MEE9DQoJCQkJCQluYW1lID0zRD0zRCAnVG9wJyAgPyB2YWwg
OiAkKHdpbmRvdylbICdzY3JvbGxUb3AnICBdKCk9MEE9DQoJCQkJCSkgOj0w
QT0NCgkJCQkJdGhpc1sgJ3Njcm9sbCcgKyBuYW1lIF0gPTNEIHZhbDs9MEE9
DQoJCQl9KSA6PTBBPQ0KCQkJPTBBPQ0KCQkJLy8gUmV0dXJuIHRoZSBzY3Jv
bGwgb2Zmc2V0PTBBPQ0KCQkJdGhpc1swXSA9M0Q9M0Qgd2luZG93IHx8IHRo
aXNbMF0gPTNEPTNEIGRvY3VtZW50ID89MEE9DQoJCQkJc2VsZlsgKG5hbWUg
PTNEPTNEICdMZWZ0JyA/ICdwYWdlWE9mZnNldCcgOiAncGFnZVlPZmZzZXQn
KSBdIHx8PTBBPQ0KCQkJCQkkLmJveE1vZGVsICYmIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudFsgJ3Njcm9sbCcgKyBuYW1lIF0gfHw9MEE9DQoJCQkJCWRv
Y3VtZW50LmJvZHlbICdzY3JvbGwnICsgbmFtZSBdIDo9MEE9DQoJCQkJdGhp
c1swXVsgJ3Njcm9sbCcgKyBuYW1lIF07PTBBPQ0KCX07PTBBPQ0KfSk7PTBB
PQ0KPTBBPQ0KJC5mbi5leHRlbmQoez0wQT0NCglwb3NpdGlvbjogZnVuY3Rp
b24oKSB7PTBBPQ0KCQl2YXIgbGVmdCA9M0QgMCwgdG9wID0zRCAwLCBlbGVt
ID0zRCB0aGlzWzBdLCBvZmZzZXQsIHBhcmVudE9mZnNldCwgPQ0Kb2Zmc2V0
UGFyZW50LCByZXN1bHRzOz0wQT0NCgkJPTBBPQ0KCQlpZiAoZWxlbSkgez0w
QT0NCgkJCS8vIEdldCAqcmVhbCogb2Zmc2V0UGFyZW50PTBBPQ0KCQkJb2Zm
c2V0UGFyZW50ID0zRCB0aGlzLm9mZnNldFBhcmVudCgpOz0wQT0NCgkJCT0w
QT0NCgkJCS8vIEdldCBjb3JyZWN0IG9mZnNldHM9MEE9DQoJCQlvZmZzZXQg
ICAgICAgPTNEIHRoaXMub2Zmc2V0KCk7PTBBPQ0KCQkJcGFyZW50T2Zmc2V0
ID0zRCBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7PTBBPQ0KCQkJPTBBPQ0KCQkJ
Ly8gU3VidHJhY3QgZWxlbWVudCBtYXJnaW5zPTBBPQ0KCQkJb2Zmc2V0LnRv
cCAgLT0zRCBudW0oZWxlbSwgJ21hcmdpblRvcCcpOz0wQT0NCgkJCW9mZnNl
dC5sZWZ0IC09M0QgbnVtKGVsZW0sICdtYXJnaW5MZWZ0Jyk7PTBBPQ0KCQkJ
PTBBPQ0KCQkJLy8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzPTBBPQ0KCQkJ
cGFyZW50T2Zmc2V0LnRvcCAgKz0zRCBudW0ob2Zmc2V0UGFyZW50LCAnYm9y
ZGVyVG9wV2lkdGgnKTs9MEE9DQoJCQlwYXJlbnRPZmZzZXQubGVmdCArPTNE
IG51bShvZmZzZXRQYXJlbnQsICdib3JkZXJMZWZ0V2lkdGgnKTs9MEE9DQoJ
CQk9MEE9DQoJCQkvLyBTdWJ0cmFjdCB0aGUgdHdvIG9mZnNldHM9MEE9DQoJ
CQlyZXN1bHRzID0zRCB7PTBBPQ0KCQkJCXRvcDogIG9mZnNldC50b3AgIC0g
cGFyZW50T2Zmc2V0LnRvcCw9MEE9DQoJCQkJbGVmdDogb2Zmc2V0LmxlZnQg
LSBwYXJlbnRPZmZzZXQubGVmdD0wQT0NCgkJCX07PTBBPQ0KCQl9PTBBPQ0K
CQk9MEE9DQoJCXJldHVybiByZXN1bHRzOz0wQT0NCgl9LD0wQT0NCgk9MEE9
DQoJb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHs9MEE9DQoJCXZhciBvZmZz
ZXRQYXJlbnQgPTNEIHRoaXNbMF0ub2Zmc2V0UGFyZW50Oz0wQT0NCgkJd2hp
bGUgKCBvZmZzZXRQYXJlbnQgJiYgKCEvXmJvZHl8aHRtbCQvaS50ZXN0KG9m
ZnNldFBhcmVudC50YWdOYW1lKSAmJiA9DQokLmNzcyhvZmZzZXRQYXJlbnQs
ICdwb3NpdGlvbicpID0zRD0zRCAnc3RhdGljJykgKT0wQT0NCgkJCW9mZnNl
dFBhcmVudCA9M0Qgb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDs9MEE9DQoJ
CXJldHVybiAkKG9mZnNldFBhcmVudCk7PTBBPQ0KCX09MEE9DQp9KTs9MEE9
DQo9MEE9DQpmdW5jdGlvbiBudW0oZWwsIHByb3ApIHs9MEE9DQoJcmV0dXJu
IHBhcnNlSW50KCQuY3NzKGVsLmpxdWVyeT9lbFswXTplbCxwcm9wKSl8fDA7
PTBBPQ0KfTs9MEE9DQo9MEE9DQp9KShqUXVlcnkpOw0KLS0tLS0tPV9OZXh0
UGFydF8wMDBfMDAwMF8wMUNDMzY1My4xRjVBRURBMA0KQ29udGVudC1UeXBl
OiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQtTG9jYXRpb246
IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9hY2NvcmRpb24vanF1ZXJ5LmFjY29y
ZGlvbi5qcw0KDQovKg0KICogalF1ZXJ5IFVJIEFjY29yZGlvbiAxLjYNCiAq
PTIwDQogKiBDb3B5cmlnaHQgKGMpIDIwMDcgSj1DMz1CNnJuIFphZWZmZXJl
cg0KICoNCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvQWNjb3JkaW9u
DQogKg0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwg
bGljZW5zZXM6DQogKiAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGlj
ZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiAgIGh0dHA6Ly93d3cuZ251Lm9y
Zy9saWNlbnNlcy9ncGwuaHRtbA0KICoNCiAqIFJldmlzaW9uOiAkSWQ6IGpx
dWVyeS5hY2NvcmRpb24uanMgNDg3NiAyMDA4LTAzLTA4IDExOjQ5OjA0WiA9
DQpqb2Vybi56YWVmZmVyZXIgJA0KICoNCiAqLw0KDQo7KGZ1bmN0aW9uKCQp
IHsNCj0wOQ0KLy8gSWYgdGhlIFVJIHNjb3BlIGlzIG5vdCBhdmFpbGFibGUs
IGFkZCBpdA0KJC51aSA9M0QgJC51aSB8fCB7fTsNCg0KJC5mbi5leHRlbmQo
ew0KCWFjY29yZGlvbjogZnVuY3Rpb24ob3B0aW9ucywgZGF0YSkgew0KCQl2
YXIgYXJncyA9M0QgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1l
bnRzLCAxKTsNCg0KCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgew0K
CQkJaWYgKHR5cGVvZiBvcHRpb25zID0zRD0zRCAic3RyaW5nIikgew0KCQkJ
CXZhciBhY2NvcmRpb24gPTNEICQuZGF0YSh0aGlzLCAidWktYWNjb3JkaW9u
Iik7DQoJCQkJYWNjb3JkaW9uW29wdGlvbnNdLmFwcGx5KGFjY29yZGlvbiwg
YXJncyk7DQoJCQkvLyBJTklUIHdpdGggb3B0aW9uYWwgb3B0aW9ucw0KCQkJ
fSBlbHNlIGlmICghJCh0aGlzKS5pcygiLnVpLWFjY29yZGlvbiIpKQ0KCQkJ
CSQuZGF0YSh0aGlzLCAidWktYWNjb3JkaW9uIiwgbmV3ICQudWkuYWNjb3Jk
aW9uKHRoaXMsIG9wdGlvbnMpKTsNCgkJfSk7DQoJfSwNCgkvLyBkZXByZWNh
dGVkLCB1c2UgYWNjb3JkaW9uKCJhY3RpdmF0ZSIsIGluZGV4KSBpbnN0ZWFk
DQoJYWN0aXZhdGU6IGZ1bmN0aW9uKGluZGV4KSB7DQoJCXJldHVybiB0aGlz
LmFjY29yZGlvbigiYWN0aXZhdGUiLCBpbmRleCk7DQoJfQ0KfSk7DQoNCiQu
dWkuYWNjb3JkaW9uID0zRCBmdW5jdGlvbihjb250YWluZXIsIG9wdGlvbnMp
IHsNCj0wOQ0KCS8vIHNldHVwIGNvbmZpZ3VyYXRpb24NCgl0aGlzLm9wdGlv
bnMgPTNEIG9wdGlvbnMgPTNEICQuZXh0ZW5kKHt9LCAkLnVpLmFjY29yZGlv
bi5kZWZhdWx0cywgPQ0Kb3B0aW9ucyk7DQoJdGhpcy5lbGVtZW50ID0zRCBj
b250YWluZXI7DQo9MDkNCgkkKGNvbnRhaW5lcikuYWRkQ2xhc3MoInVpLWFj
Y29yZGlvbiIpOw0KPTA5DQoJaWYgKCBvcHRpb25zLm5hdmlnYXRpb24gKSB7
DQoJCXZhciBjdXJyZW50ID0zRCA9DQokKGNvbnRhaW5lcikuZmluZCgiaDQi
KS5maWx0ZXIob3B0aW9ucy5uYXZpZ2F0aW9uRmlsdGVyKTsNCgkJaWYgKCBj
dXJyZW50Lmxlbmd0aCApIHsNCgkJCWlmICggY3VycmVudC5maWx0ZXIob3B0
aW9ucy5oZWFkZXIpLmxlbmd0aCApIHsNCgkJCQlvcHRpb25zLmFjdGl2ZSA9
M0QgY3VycmVudDsNCgkJCX0gZWxzZSB7DQoJCQkJb3B0aW9ucy5hY3RpdmUg
PTNEIGN1cnJlbnQucGFyZW50KCkucGFyZW50KCkucHJldigpOw0KCQkJCWN1
cnJlbnQuYWRkQ2xhc3MoImN1cnJlbnQiKTsNCgkJCX0NCgkJfQ0KCX0NCj0w
OQ0KCS8vIGNhbGN1bGF0ZSBhY3RpdmUgaWYgbm90IHNwZWNpZmllZCwgdXNp
bmcgdGhlIGZpcnN0IGhlYWRlcg0KCW9wdGlvbnMuaGVhZGVycyA9M0QgJChj
b250YWluZXIpLmZpbmQob3B0aW9ucy5oZWFkZXIpOw0KCW9wdGlvbnMuYWN0
aXZlID0zRCBmaW5kQWN0aXZlKG9wdGlvbnMuaGVhZGVycywgb3B0aW9ucy5h
Y3RpdmUpOw0KDQoJaWYgKCBvcHRpb25zLmZpbGxTcGFjZSApIHsNCgkJdmFy
IG1heEhlaWdodCA9M0QgJChjb250YWluZXIpLnBhcmVudCgpLmhlaWdodCgp
Ow0KCQlvcHRpb25zLmhlYWRlcnMuZWFjaChmdW5jdGlvbigpIHsNCgkJCW1h
eEhlaWdodCAtPTNEICQodGhpcykub3V0ZXJIZWlnaHQoKTsNCgkJfSk7DQoJ
CXZhciBtYXhQYWRkaW5nID0zRCAwOw0KCQlvcHRpb25zLmhlYWRlcnMubmV4
dCgpLmVhY2goZnVuY3Rpb24oKSB7DQoJCQltYXhQYWRkaW5nID0zRCBNYXRo
Lm1heChtYXhQYWRkaW5nLCAkKHRoaXMpLmlubmVySGVpZ2h0KCkgLSA9DQok
KHRoaXMpLmhlaWdodCgpKTsNCgkJfSkuaGVpZ2h0KG1heEhlaWdodCAtIG1h
eFBhZGRpbmcpOw0KCX0gZWxzZSBpZiAoIG9wdGlvbnMuYXV0b2hlaWdodCAp
IHsNCgkJdmFyIG1heEhlaWdodCA9M0QgMDsNCgkJb3B0aW9ucy5oZWFkZXJz
Lm5leHQoKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJbWF4SGVpZ2h0ID0zRCBN
YXRoLm1heChtYXhIZWlnaHQsICQodGhpcykub3V0ZXJIZWlnaHQoKSk7DQoJ
CX0pLmhlaWdodChtYXhIZWlnaHQpOw0KCX0NCg0KCW9wdGlvbnMuaGVhZGVy
cw0KCQkubm90KG9wdGlvbnMuYWN0aXZlIHx8ICIiKQ0KCQkubmV4dCgpDQoJ
CS5oaWRlKCk7DQoJb3B0aW9ucy5hY3RpdmUucGFyZW50KCkuYW5kU2VsZigp
LmFkZENsYXNzKG9wdGlvbnMuc2VsZWN0ZWRDbGFzcyk7DQo9MDkNCglpZiAo
b3B0aW9ucy5ldmVudCkNCgkJJChjb250YWluZXIpLmJpbmQoKG9wdGlvbnMu
ZXZlbnQpICsgIi51aS1hY2NvcmRpb24iLCBjbGlja0hhbmRsZXIpOw0KfTsN
Cg0KJC51aS5hY2NvcmRpb24ucHJvdG90eXBlID0zRCB7DQoJYWN0aXZhdGU6
IGZ1bmN0aW9uKGluZGV4KSB7DQoJCS8vIGNhbGwgY2xpY2tIYW5kbGVyIHdp
dGggY3VzdG9tIGV2ZW50DQoJCWNsaWNrSGFuZGxlci5jYWxsKHRoaXMuZWxl
bWVudCwgew0KCQkJdGFyZ2V0OiBmaW5kQWN0aXZlKCB0aGlzLm9wdGlvbnMu
aGVhZGVycywgaW5kZXggKVswXQ0KCQl9KTsNCgl9LA0KPTA5DQoJZW5hYmxl
OiBmdW5jdGlvbigpIHsNCgkJdGhpcy5vcHRpb25zLmRpc2FibGVkID0zRCBm
YWxzZTsNCgl9LA0KCWRpc2FibGU6IGZ1bmN0aW9uKCkgew0KCQl0aGlzLm9w
dGlvbnMuZGlzYWJsZWQgPTNEIHRydWU7DQoJfSwNCglkZXN0cm95OiBmdW5j
dGlvbigpIHsNCgkJdGhpcy5vcHRpb25zLmhlYWRlcnMubmV4dCgpLmNzcygi
ZGlzcGxheSIsICIiKTsNCgkJaWYgKCB0aGlzLm9wdGlvbnMuZmlsbFNwYWNl
IHx8IHRoaXMub3B0aW9ucy5hdXRvaGVpZ2h0ICkgew0KCQkJdGhpcy5vcHRp
b25zLmhlYWRlcnMubmV4dCgpLmNzcygiaGVpZ2h0IiwgIiIpOw0KCQl9DQoJ
CSQucmVtb3ZlRGF0YSh0aGlzLmVsZW1lbnQsICJ1aS1hY2NvcmRpb24iKTsN
CgkJJCh0aGlzLmVsZW1lbnQpLnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24i
KS51bmJpbmQoIi51aS1hY2NvcmRpb24iKTsNCgl9DQp9DQoNCmZ1bmN0aW9u
IHNjb3BlQ2FsbGJhY2soY2FsbGJhY2ssIHNjb3BlKSB7DQoJcmV0dXJuIGZ1
bmN0aW9uKCkgew0KCQlyZXR1cm4gY2FsbGJhY2suYXBwbHkoc2NvcGUsIGFy
Z3VtZW50cyk7DQoJfTsNCn0NCg0KZnVuY3Rpb24gY29tcGxldGVkKGNhbmNl
bCkgew0KCS8vIGlmIHJlbW92ZWQgd2hpbGUgYW5pbWF0ZWQgZGF0YSBjYW4g
YmUgZW1wdHkNCglpZiAoISQuZGF0YSh0aGlzLCAidWktYWNjb3JkaW9uIikp
DQoJCXJldHVybjsNCgl2YXIgaW5zdGFuY2UgPTNEICQuZGF0YSh0aGlzLCAi
dWktYWNjb3JkaW9uIik7DQoJdmFyIG9wdGlvbnMgPTNEIGluc3RhbmNlLm9w
dGlvbnM7DQoJb3B0aW9ucy5ydW5uaW5nID0zRCBjYW5jZWwgPyAwIDogLS1v
cHRpb25zLnJ1bm5pbmc7DQoJaWYgKCBvcHRpb25zLnJ1bm5pbmcgKQ0KCQly
ZXR1cm47DQoJaWYgKCBvcHRpb25zLmNsZWFyU3R5bGUgKSB7DQoJCW9wdGlv
bnMudG9TaG93LmFkZChvcHRpb25zLnRvSGlkZSkuY3NzKHsNCgkJCWhlaWdo
dDogIiIsDQoJCQlvdmVyZmxvdzogIiINCgkJfSk7DQoJfQ0KCSQodGhpcyku
dHJpZ2dlckhhbmRsZXIoImNoYW5nZS51aS1hY2NvcmRpb24iLCBbb3B0aW9u
cy5kYXRhXSwgPQ0Kb3B0aW9ucy5jaGFuZ2UpOw0KfQ0KDQpmdW5jdGlvbiB0
b2dnbGUodG9TaG93LCB0b0hpZGUsIGRhdGEsIGNsaWNrZWRBY3RpdmUsIGRv
d24pIHsNCgl2YXIgb3B0aW9ucyA9M0QgJC5kYXRhKHRoaXMsICJ1aS1hY2Nv
cmRpb24iKS5vcHRpb25zOw0KCW9wdGlvbnMudG9TaG93ID0zRCB0b1Nob3c7
DQoJb3B0aW9ucy50b0hpZGUgPTNEIHRvSGlkZTsNCglvcHRpb25zLmRhdGEg
PTNEIGRhdGE7DQoJdmFyIGNvbXBsZXRlID0zRCBzY29wZUNhbGxiYWNrKGNv
bXBsZXRlZCwgdGhpcyk7DQo9MDkNCgkvLyBjb3VudCBlbGVtZW50cyB0byBh
bmltYXRlDQoJb3B0aW9ucy5ydW5uaW5nID0zRCB0b0hpZGUuc2l6ZSgpID0z
RD0zRCAwID8gdG9TaG93LnNpemUoKSA6ID0NCnRvSGlkZS5zaXplKCk7DQo9
MDkNCglpZiAoIG9wdGlvbnMuYW5pbWF0ZWQgKSB7DQoJCWlmICggIW9wdGlv
bnMuYWx3YXlzT3BlbiAmJiBjbGlja2VkQWN0aXZlICkgew0KCQkJJC51aS5h
Y2NvcmRpb24uYW5pbWF0aW9uc1tvcHRpb25zLmFuaW1hdGVkXSh7DQoJCQkJ
dG9TaG93OiBqUXVlcnkoW10pLA0KCQkJCXRvSGlkZTogdG9IaWRlLA0KCQkJ
CWNvbXBsZXRlOiBjb21wbGV0ZSwNCgkJCQlkb3duOiBkb3duLA0KCQkJCWF1
dG9oZWlnaHQ6IG9wdGlvbnMuYXV0b2hlaWdodA0KCQkJfSk7DQoJCX0gZWxz
ZSB7DQoJCQkkLnVpLmFjY29yZGlvbi5hbmltYXRpb25zW29wdGlvbnMuYW5p
bWF0ZWRdKHsNCgkJCQl0b1Nob3c6IHRvU2hvdywNCgkJCQl0b0hpZGU6IHRv
SGlkZSwNCgkJCQljb21wbGV0ZTogY29tcGxldGUsDQoJCQkJZG93bjogZG93
biwNCgkJCQlhdXRvaGVpZ2h0OiBvcHRpb25zLmF1dG9oZWlnaHQNCgkJCX0p
Ow0KCQl9DQoJfSBlbHNlIHsNCgkJaWYgKCAhb3B0aW9ucy5hbHdheXNPcGVu
ICYmIGNsaWNrZWRBY3RpdmUgKSB7DQoJCQl0b1Nob3cudG9nZ2xlKCk7DQoJ
CX0gZWxzZSB7DQoJCQl0b0hpZGUuaGlkZSgpOw0KCQkJdG9TaG93LnNob3co
KTsNCgkJfQ0KCQljb21wbGV0ZSh0cnVlKTsNCgl9DQp9DQoNCmZ1bmN0aW9u
IGNsaWNrSGFuZGxlcihldmVudCkgew0KCXZhciBvcHRpb25zID0zRCAkLmRh
dGEodGhpcywgInVpLWFjY29yZGlvbiIpLm9wdGlvbnM7DQoJaWYgKG9wdGlv
bnMuZGlzYWJsZWQpDQoJCXJldHVybiBmYWxzZTsNCj0wOQ0KCS8vIGNhbGxl
ZCBvbmx5IHdoZW4gdXNpbmcgYWN0aXZhdGUoZmFsc2UpIHRvIGNsb3NlIGFs
bCBwYXJ0cyA9DQpwcm9ncmFtbWF0aWNhbGx5DQoJaWYgKCAhZXZlbnQudGFy
Z2V0ICYmICFvcHRpb25zLmFsd2F5c09wZW4gKSB7DQoJCW9wdGlvbnMuYWN0
aXZlLnBhcmVudCgpLmFuZFNlbGYoKS50b2dnbGVDbGFzcyhvcHRpb25zLnNl
bGVjdGVkQ2xhc3MpOw0KCQl2YXIgdG9IaWRlID0zRCBvcHRpb25zLmFjdGl2
ZS5uZXh0KCksDQoJCQlkYXRhID0zRCB7DQoJCQkJaW5zdGFuY2U6IHRoaXMs
DQoJCQkJb3B0aW9uczogb3B0aW9ucywNCgkJCQluZXdIZWFkZXI6IGpRdWVy
eShbXSksDQoJCQkJb2xkSGVhZGVyOiBvcHRpb25zLmFjdGl2ZSwNCgkJCQlu
ZXdDb250ZW50OiBqUXVlcnkoW10pLA0KCQkJCW9sZENvbnRlbnQ6IHRvSGlk
ZQ0KCQkJfSwNCgkJCXRvU2hvdyA9M0Qgb3B0aW9ucy5hY3RpdmUgPTNEICQo
W10pOw0KCQl0b2dnbGUuY2FsbCh0aGlzLCB0b1Nob3csIHRvSGlkZSwgZGF0
YSApOw0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCS8vIGdldCB0aGUgY2xpY2sg
dGFyZ2V0DQoJdmFyIGNsaWNrZWQgPTNEICQoZXZlbnQudGFyZ2V0KTsNCj0w
OQ0KCS8vIGR1ZSB0byB0aGUgZXZlbnQgZGVsZWdhdGlvbiBtb2RlbCwgd2Ug
aGF2ZSB0byBjaGVjayBpZiBvbmUNCgkvLyBvZiB0aGUgcGFyZW50IGVsZW1l
bnRzIGlzIG91ciBhY3R1YWwgaGVhZGVyLCBhbmQgZmluZCB0aGF0DQoJaWYg
KCBjbGlja2VkLnBhcmVudHMob3B0aW9ucy5oZWFkZXIpLmxlbmd0aCApDQoJ
CXdoaWxlICggIWNsaWNrZWQuaXMob3B0aW9ucy5oZWFkZXIpICkNCgkJCWNs
aWNrZWQgPTNEIGNsaWNrZWQucGFyZW50KCk7DQo9MDkNCgl2YXIgY2xpY2tl
ZEFjdGl2ZSA9M0QgY2xpY2tlZFswXSA9M0Q9M0Qgb3B0aW9ucy5hY3RpdmVb
MF07DQo9MDkNCgkvLyBpZiBhbmltYXRpb25zIGFyZSBzdGlsbCBhY3RpdmUs
IG9yIHRoZSBhY3RpdmUgaGVhZGVyIGlzIHRoZSB0YXJnZXQsID0NCmlnbm9y
ZSBjbGljaw0KCWlmIChvcHRpb25zLnJ1bm5pbmcgfHwgKG9wdGlvbnMuYWx3
YXlzT3BlbiAmJiBjbGlja2VkQWN0aXZlKSkNCgkJcmV0dXJuIGZhbHNlOw0K
CWlmICghY2xpY2tlZC5pcyhvcHRpb25zLmhlYWRlcikpDQoJCXJldHVybjsN
Cg0KCS8vIHN3aXRjaCBjbGFzc2VzDQoJb3B0aW9ucy5hY3RpdmUucGFyZW50
KCkuYW5kU2VsZigpLnRvZ2dsZUNsYXNzKG9wdGlvbnMuc2VsZWN0ZWRDbGFz
cyk7DQoJaWYgKCAhY2xpY2tlZEFjdGl2ZSApIHsNCgkJY2xpY2tlZC5wYXJl
bnQoKS5hbmRTZWxmKCkuYWRkQ2xhc3Mob3B0aW9ucy5zZWxlY3RlZENsYXNz
KTsNCgl9DQoNCgkvLyBmaW5kIGVsZW1lbnRzIHRvIHNob3cgYW5kIGhpZGUN
Cgl2YXIgdG9TaG93ID0zRCBjbGlja2VkLm5leHQoKSwNCgkJdG9IaWRlID0z
RCBvcHRpb25zLmFjdGl2ZS5uZXh0KCksDQoJCS8vZGF0YSA9M0QgW2NsaWNr
ZWQsIG9wdGlvbnMuYWN0aXZlLCB0b1Nob3csIHRvSGlkZV0sDQoJCWRhdGEg
PTNEIHsNCgkJCWluc3RhbmNlOiB0aGlzLA0KCQkJb3B0aW9uczogb3B0aW9u
cywNCgkJCW5ld0hlYWRlcjogY2xpY2tlZCwNCgkJCW9sZEhlYWRlcjogb3B0
aW9ucy5hY3RpdmUsDQoJCQluZXdDb250ZW50OiB0b1Nob3csDQoJCQlvbGRD
b250ZW50OiB0b0hpZGUNCgkJfSwNCgkJZG93biA9M0Qgb3B0aW9ucy5oZWFk
ZXJzLmluZGV4KCBvcHRpb25zLmFjdGl2ZVswXSApID4gPQ0Kb3B0aW9ucy5o
ZWFkZXJzLmluZGV4KCBjbGlja2VkWzBdICk7DQo9MDkNCglvcHRpb25zLmFj
dGl2ZSA9M0QgY2xpY2tlZEFjdGl2ZSA/ICQoW10pIDogY2xpY2tlZDsNCgl0
b2dnbGUuY2FsbCh0aGlzLCB0b1Nob3csIHRvSGlkZSwgZGF0YSwgY2xpY2tl
ZEFjdGl2ZSwgZG93biApOw0KDQoJcmV0dXJuIGZhbHNlOw0KfTsNCg0KZnVu
Y3Rpb24gZmluZEFjdGl2ZShoZWFkZXJzLCBzZWxlY3Rvcikgew0KCXJldHVy
biBzZWxlY3RvciAhPTNEIHVuZGVmaW5lZA0KCQk/IHR5cGVvZiBzZWxlY3Rv
ciA9M0Q9M0QgIm51bWJlciINCgkJCT8gaGVhZGVycy5maWx0ZXIoIjplcSgi
ICsgc2VsZWN0b3IgKyAiKSIpDQoJCQk6IGhlYWRlcnMubm90KGhlYWRlcnMu
bm90KHNlbGVjdG9yKSkNCgkJOiBzZWxlY3RvciA9M0Q9M0Q9M0QgZmFsc2UN
CgkJCT8gJChbXSkNCgkJCTogaGVhZGVycy5maWx0ZXIoIjplcSgwKSIpOw0K
fQ0KDQokLmV4dGVuZCgkLnVpLmFjY29yZGlvbiwgew0KCWRlZmF1bHRzOiB7
DQoJCXNlbGVjdGVkQ2xhc3M6ICJzZWxlY3RlZCIsDQoJCWFsd2F5c09wZW46
IHRydWUsDQoJCWFuaW1hdGVkOiAnc2xpZGUnLA0KCQlldmVudDogImNsaWNr
IiwNCgkJaGVhZGVyOiAiaDQiLA0KCQlhdXRvaGVpZ2h0OiB0cnVlLA0KCQly
dW5uaW5nOiAwLA0KCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbigpIHsN
CgkJCXJldHVybiB0aGlzLmhyZWYudG9Mb3dlckNhc2UoKSA9M0Q9M0QgbG9j
YXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpOw0KCQl9DQoJfSwNCglhbmltYXRp
b25zOiB7DQoJCXNsaWRlOiBmdW5jdGlvbihvcHRpb25zLCBhZGRpdGlvbnMp
IHsNCgkJCW9wdGlvbnMgPTNEICQuZXh0ZW5kKHsNCgkJCQllYXNpbmc6ICJz
d2luZyIsDQoJCQkJZHVyYXRpb246IDMwMA0KCQkJfSwgb3B0aW9ucywgYWRk
aXRpb25zKTsNCgkJCWlmICggIW9wdGlvbnMudG9IaWRlLnNpemUoKSApIHsN
CgkJCQlvcHRpb25zLnRvU2hvdy5hbmltYXRlKHtoZWlnaHQ6ICJzaG93In0s
IG9wdGlvbnMpOw0KCQkJCXJldHVybjsNCgkJCX0NCgkJCXZhciBoaWRlSGVp
Z2h0ID0zRCBvcHRpb25zLnRvSGlkZS5oZWlnaHQoKSwNCgkJCQlzaG93SGVp
Z2h0ID0zRCBvcHRpb25zLnRvU2hvdy5oZWlnaHQoKSwNCgkJCQlkaWZmZXJl
bmNlID0zRCBzaG93SGVpZ2h0IC8gaGlkZUhlaWdodDsNCgkJCW9wdGlvbnMu
dG9TaG93LmNzcyh7IGhlaWdodDogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0p
LnNob3coKTsNCgkJCT0NCm9wdGlvbnMudG9IaWRlLmZpbHRlcigiOmhpZGRl
biIpLmVhY2gob3B0aW9ucy5jb21wbGV0ZSkuZW5kKCkuZmlsdGVyKCI6dmk9
DQpzaWJsZSIpLmFuaW1hdGUoe2hlaWdodDoiaGlkZSJ9LHsNCgkJCQlzdGVw
OiBmdW5jdGlvbihub3cpIHsNCgkJCQkJdmFyIGN1cnJlbnQgPTNEIChoaWRl
SGVpZ2h0IC0gbm93KSAqIGRpZmZlcmVuY2U7DQoJCQkJCWlmICgkLmJyb3dz
ZXIubXNpZSB8fCAkLmJyb3dzZXIub3BlcmEpIHsNCgkJCQkJCWN1cnJlbnQg
PTNEIE1hdGguY2VpbChjdXJyZW50KTsNCgkJCQkJfQ0KCQkJCQlvcHRpb25z
LnRvU2hvdy5oZWlnaHQoIGN1cnJlbnQgKTsNCgkJCQl9LA0KCQkJCWR1cmF0
aW9uOiBvcHRpb25zLmR1cmF0aW9uLA0KCQkJCWVhc2luZzogb3B0aW9ucy5l
YXNpbmcsDQoJCQkJY29tcGxldGU6IGZ1bmN0aW9uKCkgew0KCQkJCQlpZiAo
ICFvcHRpb25zLmF1dG9oZWlnaHQgKSB7DQoJCQkJCQlvcHRpb25zLnRvU2hv
dy5jc3MoImhlaWdodCIsICJhdXRvIik7DQoJCQkJCX0NCgkJCQkJb3B0aW9u
cy5jb21wbGV0ZSgpOw0KCQkJCX0NCgkJCX0pOw0KCQl9LA0KCQlib3VuY2Vz
bGlkZTogZnVuY3Rpb24ob3B0aW9ucykgew0KCQkJdGhpcy5zbGlkZShvcHRp
b25zLCB7DQoJCQkJZWFzaW5nOiBvcHRpb25zLmRvd24gPyAiYm91bmNlb3V0
IiA6ICJzd2luZyIsDQoJCQkJZHVyYXRpb246IG9wdGlvbnMuZG93biA/IDEw
MDAgOiAyMDANCgkJCX0pOw0KCQl9LA0KCQllYXNlc2xpZGU6IGZ1bmN0aW9u
KG9wdGlvbnMpIHsNCgkJCXRoaXMuc2xpZGUob3B0aW9ucywgew0KCQkJCWVh
c2luZzogImVhc2Vpbm91dCIsDQoJCQkJZHVyYXRpb246IDcwMA0KCQkJfSkN
CgkJfQ0KCX0NCn0pOw0KDQp9KShqUXVlcnkpOw0KDQoNCglqUXVlcnkoKS5y
ZWFkeShmdW5jdGlvbigpew0KCQkvLyBzaW1wbGUgYWNjb3JkaW9uDQoJCWpR
dWVyeSgnI2xpc3QxYScpLmFjY29yZGlvbigpOw0KCQlqUXVlcnkoJyNsaXN0
MWInKS5hY2NvcmRpb24oew0KCQkJYXV0b2hlaWdodDogZmFsc2UNCgkJfSk7
DQoJPTA5DQoJPTA5DQoJCXZhciB3aXphcmQgPTNEICQoIiN3aXphcmQiKS5h
Y2NvcmRpb24oew0KCQkJaGVhZGVyOiAnLnRpdGxlJywNCgkJCWV2ZW50OiBm
YWxzZQ0KCQl9KTsNCgk9MDkNCgkJdmFyIHdpemFyZEJ1dHRvbnMgPTNEICQo
W10pOw0KCQkkKCJkaXYudGl0bGUiLCB3aXphcmQpLmVhY2goZnVuY3Rpb24o
aW5kZXgpIHsNCgkJCXdpemFyZEJ1dHRvbnMgPTNEIHdpemFyZEJ1dHRvbnMu
YWRkKCQodGhpcykNCgkJCS5uZXh0KCkNCgkJCS5jaGlsZHJlbigiOmJ1dHRv
biIpDQoJCQkuZmlsdGVyKCIubmV4dCwgLnByZXZpb3VzIikNCgkJCS5jbGlj
ayhmdW5jdGlvbigpIHsNCgkJCQl3aXphcmQuYWNjb3JkaW9uKCJhY3RpdmF0
ZSIsIGluZGV4ICsgKCQodGhpcykuaXMoIi5uZXh0IikgPyAxIDogLTEpKQ0K
CQkJfSkpOw0KCQl9KTsNCgk9MDkNCgkJLy8gYmluZCB0byBjaGFuZ2UgZXZl
bnQgb2Ygc2VsZWN0IHRvIGNvbnRyb2wgZmlyc3QgYW5kIHNlY29uZHMgPQ0K
YWNjb3JkaW9uDQoJCS8vIHNpbWlsYXIgdG8gdGFiJ3MgcGx1Z2luIHRyaWdn
ZXJUYWIoKSwgd2l0aG91dCBhbiBleHRyYSBtZXRob2QNCgkJdmFyIGFjY29y
ZGlvbnMgPTNEIGpRdWVyeSgnI2xpc3QxYSwgI2xpc3QxYiwgI2xpc3QyLCAj
bGlzdDMsID0NCiNuYXZpZ2F0aW9uLCAjd2l6YXJkJyk7DQoJPTA5DQoJCWpR
dWVyeSgnI3N3aXRjaCBzZWxlY3QnKS5jaGFuZ2UoZnVuY3Rpb24oKSB7DQoJ
CQlhY2NvcmRpb25zLmFjY29yZGlvbigiYWN0aXZhdGUiLCB0aGlzLnNlbGVj
dGVkSW5kZXgtMSApOw0KCQl9KTsNCgkJalF1ZXJ5KCcjY2xvc2UnKS5jbGlj
ayhmdW5jdGlvbigpIHsNCgkJCWFjY29yZGlvbnMuYWNjb3JkaW9uKCJhY3Rp
dmF0ZSIsIC0xKTsNCgkJfSk7DQoJCWpRdWVyeSgnI3N3aXRjaDInKS5jaGFu
Z2UoZnVuY3Rpb24oKSB7DQoJCQlhY2NvcmRpb25zLmFjY29yZGlvbigiYWN0
aXZhdGUiLCB0aGlzLnZhbHVlKTsNCgkJfSk7DQoJCWpRdWVyeSgnI2VuYWJs
ZScpLmNsaWNrKGZ1bmN0aW9uKCkgew0KCQkJYWNjb3JkaW9ucy5hY2NvcmRp
b24oImVuYWJsZSIpOw0KCQl9KTsNCgkJalF1ZXJ5KCcjZGlzYWJsZScpLmNs
aWNrKGZ1bmN0aW9uKCkgew0KCQkJYWNjb3JkaW9ucy5hY2NvcmRpb24oImRp
c2FibGUiKTsNCgkJfSk7DQoJCWpRdWVyeSgnI3JlbW92ZScpLmNsaWNrKGZ1
bmN0aW9uKCkgew0KCQkJYWNjb3JkaW9ucy5hY2NvcmRpb24oImRlc3Ryb3ki
KTsNCgkJCXdpemFyZEJ1dHRvbnMudW5iaW5kKCJjbGljayIpOw0KCQl9KTsN
Cgl9KTsNCg0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMzY1My4x
RjVBRURBMA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0NCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFi
bGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9q
YXZhc2NyaXB0L3d0aW5pdC5qcw0KDQovLyBXZWJUcmVuZHMgU21hcnRTb3Vy
Y2UgRGF0YSBDb2xsZWN0b3IgVGFnDQovLyBWZXJzaW9uOiAxLjEuMQ0KLy8g
Q3JlYXRlZDogMi8xMi8yMDA4IDU6NDc6MjQgQU0NCmZ1bmN0aW9uIERjc0lu
aXQoKXsNCgl2YXIgdGhhdD0zRHRoaXM7DQoJdGhpcy5kY3NpZD0zRCJkY3Nn
OWYwOXAxMDAwMGc0ZWU1cjU4ZHo4XzViOGYiOw0KCXRoaXMuZG9tYWluPTNE
InN0YXRzZS53ZWJ0cmVuZHNsaXZlLmNvbSI7DQoJdGhpcy5lbmFibGVkPTNE
dHJ1ZTsNCgl0aGlzLmV4cmU9M0QoZnVuY3Rpb24oKXtyZXR1cm4od2luZG93
LlJlZ0V4cD9uZXcgPQ0KUmVnRXhwKCJkY3ModXJpKXwocmVmKXwoYXV0KXwo
bWV0KXwoc3RhKXwoc2lwKXwocHJvKXwoYnl0KXwoZGF0KXwocDNwKXwoYz0N
CmZnKXwocmVkaXJlY3QpfChjaXApIiwiaSIpOiIiKTt9KSgpOw0KCXRoaXMu
ZnBjPTNEIldUX0ZQQyI7DQoJdGhpcy5mcGNkb209M0QiLmNhcnRhc2kuaXQi
Ow0KCXRoaXMuaTE4bj0zRGZhbHNlOw0KCXRoaXMuaW1hZ2VzPTNEW107DQoJ
dGhpcy5pbmRleD0zRDA7DQoJdGhpcy5xcD0zRFtdOw0KCT0NCnRoaXMucmU9
M0QoZnVuY3Rpb24oKXtyZXR1cm4od2luZG93LlJlZ0V4cD8odGhhdC5pMThu
P3siJTI1IjovXCUvZ306eyIlMDk9DQoiOi9cdC9nLCIlMjAiOi8gPQ0KL2cs
IiUyMyI6L1wjL2csIiUyNiI6L1wmL2csIiUyQiI6L1wrL2csIiUzRiI6L1w/
L2csIiU1QyI6L1xcL2csIiUyMiI6L1wiLz0NCmcsIiU3RiI6L1x4N0YvZywi
JUEwIjovXHhBMC9nfSk6IiIpO30pKCk7DQoJdGhpcy5vbnNpdGVkb21zPTNE
IiI7DQoJdGhpcy5kb3dubG9hZHR5cGVzPTNEInhscyxkb2MscGRmLHR4dCxj
c3YsemlwIjsNCgl0aGlzLnJpZ2h0Y2xpY2t0eXBlcz0zRCJ4bHMsZG9jLHBk
Zix0eHQsY3N2LHppcCI7DQoJdGhpcy50aW1lem9uZT0zRDE7DQoJdGhpcy50
cmFja2V2ZW50cz0zRHRydWU7DQoJPQ0KKGZ1bmN0aW9uKCl7aWYodGhhdC5l
bmFibGVkJiYoZG9jdW1lbnQuY29va2llLmluZGV4T2YodGhhdC5mcGMrIj0z
RCIpPTNEPTNEPQ0KLTEpJiYoZG9jdW1lbnQuY29va2llLmluZGV4T2YoIldU
TE9QVE9VVD0zRCIpPTNEPTNELTEpKXtkb2N1bWVudC53cml0ZSgiPD0NCnNj
ciIrImlwdCB0eXBlPTNEJ3RleHQvamF2YXNjcmlwdCcgPQ0Kc3JjPTNEJyIr
Imh0dHAiKyh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuaW5kZXhPZignaHR0
cHM6Jyk9M0Q9M0QwPydzJzonJz0NCikrIjovLyIrdGhhdC5kb21haW4rIi8i
K3RoYXQuZGNzaWQrIi93dGlkLmpzIisiJz48XC9zY3IiKyJpcHQ+Iik7fX0p
KCk7DQp9DQp2YXIgRENTPTNEe307DQp2YXIgV1Q9M0R7fTsNCnZhciBEQ1Nl
eHQ9M0R7fTsNCnZhciBkY3NJbml0PTNEbmV3IERjc0luaXQoKTsNCi0tLS0t
LT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFDQzM2NTMuMUY1QUVEQTANCkNvbnRl
bnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQpDb250ZW50LVRy
YW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlDQpDb250ZW50LUxv
Y2F0aW9uOiBodHRwOi8vd3d3LmNhcnRhc2kuaXQvamF2YXNjcmlwdC93dGJh
c2UuanMNCg0KLy8gV2ViVHJlbmRzIFNtYXJ0U291cmNlIERhdGEgQ29sbGVj
dG9yIFRhZw0KLy8gVmVyc2lvbjogMS4xLjENCi8vIENyZWF0ZWQ6IDIvMTIv
MjAwOCA1OjQ3OjI0IEFNDQpmdW5jdGlvbiBkY3NDb29raWUoKXsNCglpZiAo
dHlwZW9mKGRjc090aGVyKT0zRD0zRCJmdW5jdGlvbiIpew0KCQlkY3NPdGhl
cigpOw0KCX0NCgllbHNlIGlmICh0eXBlb2YoZGNzRlBDKT0zRD0zRCJmdW5j
dGlvbiIpew0KCQlkY3NGUEMoZGNzSW5pdC50aW1lem9uZSk7DQoJfQ0KfQ0K
ZnVuY3Rpb24gZGNzR2V0Q29va2llKG5hbWUpew0KCXZhciBjb29raWVzPTNE
ZG9jdW1lbnQuY29va2llLnNwbGl0KCI7ICIpOw0KCXZhciBjbWF0Y2g9M0Rb
XTsNCgl2YXIgaWR4PTNEMDsNCgl2YXIgaT0zRDA7DQoJdmFyIG5hbWVsZW49
M0RuYW1lLmxlbmd0aDsNCgl2YXIgY2xlbj0zRGNvb2tpZXMubGVuZ3RoOw0K
CWZvciAoaT0zRDA7aTxjbGVuO2krKyl7DQoJCXZhciBjPTNEY29va2llc1tp
XTsNCgkJaWYgKChjLnN1YnN0cmluZygwLG5hbWVsZW4rMSkpPTNEPTNEKG5h
bWUrIj0zRCIpKXsNCgkJCWNtYXRjaFtpZHgrK109M0RjOw0KCQl9DQoJfQ0K
CXZhciBjbWF0Y2hDb3VudD0zRGNtYXRjaC5sZW5ndGg7DQoJaWYgKGNtYXRj
aENvdW50PjApew0KCQlpZHg9M0QwOw0KCQlpZiAoKGNtYXRjaENvdW50PjEp
JiYobmFtZT0zRD0zRGRjc0luaXQuZnBjKSl7DQoJCQl2YXIgZExhdGVzdD0z
RG5ldyBEYXRlKDApOw0KCQkJZm9yIChpPTNEMDtpPGNtYXRjaENvdW50O2kr
Kyl7DQoJCQkJdmFyIGx2PTNEcGFyc2VJbnQoZGNzR2V0Q3J1bWIoY21hdGNo
W2ldLCJsdiIpKTsNCgkJCQl2YXIgZExzdD0zRG5ldyBEYXRlKGx2KTsNCgkJ
CQlpZiAoZExzdD5kTGF0ZXN0KXsNCgkJCQkJZExhdGVzdC5zZXRUaW1lKGRM
c3QuZ2V0VGltZSgpKTsNCgkJCQkJaWR4PTNEaTsNCgkJCQl9DQoJCQl9DQoJ
CX0NCgkJcmV0dXJuIHVuZXNjYXBlKGNtYXRjaFtpZHhdLnN1YnN0cmluZyhu
YW1lbGVuKzEpKTsNCgl9DQoJZWxzZXsNCgkJcmV0dXJuIG51bGw7DQoJfQ0K
fQ0KZnVuY3Rpb24gZGNzR2V0Q3J1bWIoY3ZhbCxjcnVtYil7DQoJdmFyIGFD
b29raWU9M0RjdmFsLnNwbGl0KCI6Iik7DQoJZm9yICh2YXIgaT0zRDA7aTxh
Q29va2llLmxlbmd0aDtpKyspew0KCQl2YXIgYUNydW1iPTNEYUNvb2tpZVtp
XS5zcGxpdCgiPTNEIik7DQoJCWlmIChjcnVtYj0zRD0zRGFDcnVtYlswXSl7
DQoJCQlyZXR1cm4gYUNydW1iWzFdOw0KCQl9DQoJfQ0KCXJldHVybiBudWxs
Ow0KfQ0KZnVuY3Rpb24gZGNzR2V0SWRDcnVtYihjdmFsLGNydW1iKXsNCgl2
YXIgaWQ9M0RjdmFsLnN1YnN0cmluZygwLGN2YWwuaW5kZXhPZigiOmx2PTNE
IikpOw0KCXZhciBhQ3J1bWI9M0RpZC5zcGxpdCgiPTNEIik7DQoJZm9yICh2
YXIgaT0zRDA7aTxhQ3J1bWIubGVuZ3RoO2krKyl7DQoJCWlmIChjcnVtYj0z
RD0zRGFDcnVtYlswXSl7DQoJCQlyZXR1cm4gYUNydW1iWzFdOw0KCQl9DQoJ
fQ0KCXJldHVybiBudWxsOw0KfQ0KZnVuY3Rpb24gZGNzSXNGcGNTZXQobmFt
ZSxpZCxsdixzcyl7DQoJdmFyIGM9M0RkY3NHZXRDb29raWUobmFtZSk7DQoJ
aWYgKGMpew0KCQlyZXR1cm4gPQ0KKChpZD0zRD0zRGRjc0dldElkQ3J1bWIo
YywiaWQiKSkmJihsdj0zRD0zRGRjc0dldENydW1iKGMsImx2IikpJiYoc3M9
M0RkYz0NCnNHZXRDcnVtYihjLCJzcyIpKSk/MDozOw0KCX0NCglyZXR1cm4g
MjsNCn0NCmZ1bmN0aW9uIGRjc0ZQQyhvZmZzZXQpew0KCWlmICh0eXBlb2Yo
b2Zmc2V0KT0zRD0zRCJ1bmRlZmluZWQiKXsNCgkJcmV0dXJuOw0KCX0NCglp
ZiAoZG9jdW1lbnQuY29va2llLmluZGV4T2YoIldUTE9QVE9VVD0zRCIpIT0z
RC0xKXsNCgkJcmV0dXJuOw0KCX0NCgl2YXIgbmFtZT0zRGRjc0luaXQuZnBj
Ow0KCXZhciBkQ3VyPTNEbmV3IERhdGUoKTsNCgl2YXIgYWRqPTNEKGRDdXIu
Z2V0VGltZXpvbmVPZmZzZXQoKSo2MDAwMCkrKG9mZnNldCozNjAwMDAwKTsN
CglkQ3VyLnNldFRpbWUoZEN1ci5nZXRUaW1lKCkrYWRqKTsNCgl2YXIgZEV4
cD0zRG5ldyBEYXRlKGRDdXIuZ2V0VGltZSgpKzMxNTM2MDAwMDAwMCk7DQoJ
dmFyIGRTZXM9M0RuZXcgRGF0ZShkQ3VyLmdldFRpbWUoKSk7DQoJPQ0KV1Qu
Y29fZj0zRFdULnZ0X3NpZD0zRFdULnZ0X2Y9M0RXVC52dF9mX2E9M0RXVC52
dF9mX3M9M0RXVC52dF9mX2Q9M0RXVC52dD0NCl9mX3RsaD0zRFdULnZ0X2Zf
dGx2PTNEIiI7DQoJaWYgKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKG5hbWUr
Ij0zRCIpPTNEPTNELTEpew0KCQlpZiAoKHR5cGVvZihnV3RJZCkhPTNEInVu
ZGVmaW5lZCIpJiYoZ1d0SWQhPTNEIiIpKXsNCgkJCVdULmNvX2Y9M0RnV3RJ
ZDsNCgkJfQ0KCQllbHNlIGlmICgodHlwZW9mKGdUZW1wV3RJZCkhPTNEInVu
ZGVmaW5lZCIpJiYoZ1RlbXBXdElkIT0zRCIiKSl7DQoJCQlXVC5jb19mPTNE
Z1RlbXBXdElkOw0KCQkJV1QudnRfZj0zRCIxIjsNCgkJfQ0KCQllbHNlew0K
CQkJV1QuY29fZj0zRCIyIjsNCgkJCXZhciBjdXI9M0RkQ3VyLmdldFRpbWUo
KS50b1N0cmluZygpOw0KCQkJZm9yICh2YXIgaT0zRDI7aTw9M0QoMzItY3Vy
Lmxlbmd0aCk7aSsrKXsNCgkJCQlXVC5jb19mKz0zRE1hdGguZmxvb3IoTWF0
aC5yYW5kb20oKSoxNi4wKS50b1N0cmluZygxNik7DQoJCQl9DQoJCQlXVC5j
b19mKz0zRGN1cjsNCgkJCVdULnZ0X2Y9M0QiMSI7DQoJCX0NCgkJaWYgKHR5
cGVvZihnV3RBY2NvdW50Um9sbHVwKT0zRD0zRCJ1bmRlZmluZWQiKXsNCgkJ
CVdULnZ0X2ZfYT0zRCIxIjsNCgkJfQ0KCQlXVC52dF9mX3M9M0RXVC52dF9m
X2Q9M0QiMSI7DQoJCVdULnZ0X2ZfdGxoPTNEV1QudnRfZl90bHY9M0QiMCI7
DQoJfQ0KCWVsc2V7DQoJCXZhciBjPTNEZGNzR2V0Q29va2llKG5hbWUpOw0K
CQl2YXIgaWQ9M0RkY3NHZXRJZENydW1iKGMsImlkIik7DQoJCXZhciBsdj0z
RHBhcnNlSW50KGRjc0dldENydW1iKGMsImx2IikpOw0KCQl2YXIgc3M9M0Rw
YXJzZUludChkY3NHZXRDcnVtYihjLCJzcyIpKTsNCgkJaWYgKChpZD0zRD0z
RG51bGwpfHwoaWQ9M0Q9M0QibnVsbCIpfHxpc05hTihsdil8fGlzTmFOKHNz
KSl7DQoJCQlyZXR1cm47DQoJCX0NCgkJV1QuY29fZj0zRGlkOw0KCQl2YXIg
ZExzdD0zRG5ldyBEYXRlKGx2KTsNCgkJV1QudnRfZl90bGg9M0RNYXRoLmZs
b29yKChkTHN0LmdldFRpbWUoKS1hZGopLzEwMDApOw0KCQlkU2VzLnNldFRp
bWUoc3MpOw0KCQlpZiA9DQooKGRDdXIuZ2V0VGltZSgpPihkTHN0LmdldFRp
bWUoKSsxODAwMDAwKSl8fChkQ3VyLmdldFRpbWUoKT4oZFNlcy5nZXRUaW1l
PQ0KKCkrMjg4MDAwMDApKSl7DQoJCQlXVC52dF9mX3Rsdj0zRE1hdGguZmxv
b3IoKGRTZXMuZ2V0VGltZSgpLWFkaikvMTAwMCk7DQoJCQlkU2VzLnNldFRp
bWUoZEN1ci5nZXRUaW1lKCkpOw0KCQkJV1QudnRfZl9zPTNEIjEiOw0KCQl9
DQoJCWlmID0NCigoZEN1ci5nZXREYXkoKSE9M0RkTHN0LmdldERheSgpKXx8
KGRDdXIuZ2V0TW9udGgoKSE9M0RkTHN0LmdldE1vbnRoKCkpfHw9DQooZEN1
ci5nZXRZZWFyKCkhPTNEZExzdC5nZXRZZWFyKCkpKXsNCgkJCVdULnZ0X2Zf
ZD0zRCIxIjsNCgkJfQ0KCX0NCglXVC5jb19mPTNEZXNjYXBlKFdULmNvX2Yp
Ow0KCVdULnZ0X3NpZD0zRFdULmNvX2YrIi4iKyhkU2VzLmdldFRpbWUoKS1h
ZGopOw0KCXZhciBleHBpcnk9M0QiOyBleHBpcmVzPTNEIitkRXhwLnRvR01U
U3RyaW5nKCk7DQoJdmFyIGN1cj0zRGRDdXIuZ2V0VGltZSgpLnRvU3RyaW5n
KCk7DQoJdmFyIHNlcz0zRGRTZXMuZ2V0VGltZSgpLnRvU3RyaW5nKCk7DQoJ
PQ0KZG9jdW1lbnQuY29va2llPTNEbmFtZSsiPTNEIisiaWQ9M0QiK1dULmNv
X2YrIjpsdj0zRCIrY3VyKyI6c3M9M0QiK3NlcytleD0NCnBpcnkrIjsgcGF0
aD0zRC8iKygoKGRjc0luaXQuZnBjZG9tIT0zRCIiKSk/KCI7ID0NCmRvbWFp
bj0zRCIrZGNzSW5pdC5mcGNkb20pOigiIikpOw0KCXZhciByYz0zRGRjc0lz
RnBjU2V0KG5hbWUsV1QuY29fZixjdXIsc2VzKTsNCglpZiAocmMhPTNEMCl7
DQoJCT0NCldULmNvX2Y9M0RXVC52dF9zaWQ9M0RXVC52dF9mX3M9M0RXVC52
dF9mX2Q9M0RXVC52dF9mX3RsaD0zRFdULnZ0X2ZfdGx2PTNEPQ0KIiI7DQoJ
CVdULnZ0X2Y9M0RXVC52dF9mX2E9M0RyYzsNCiAgICB9DQp9DQpmdW5jdGlv
biBkY3NJc09uc2l0ZShob3N0KXsNCglob3N0PTNEaG9zdC50b0xvd2VyQ2Fz
ZSgpOw0KCWlmIChob3N0PTNEPTNEd2luZG93LmxvY2F0aW9uLmhvc3RuYW1l
LnRvTG93ZXJDYXNlKCkpDQoJew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJaWYg
KHR5cGVvZihkY3NJbml0Lm9uc2l0ZWRvbXMudGVzdCk9M0Q9M0QiZnVuY3Rp
b24iKXsNCgkJcmV0dXJuIGRjc0luaXQub25zaXRlZG9tcy50ZXN0KGhvc3Qp
Ow0KCX0NCgllbHNlIGlmIChkY3NJbml0Lm9uc2l0ZWRvbXMubGVuZ3RoPjAp
ew0KCQl2YXIgZG9tcz0zRGRjc0luaXQub25zaXRlZG9tcy50b0xvd2VyQ2Fz
ZSgpLnNwbGl0KCIsIik7DQoJCXZhciBsZW49M0Rkb21zLmxlbmd0aDsNCgkJ
Zm9yICh2YXIgaT0zRDA7aTxsZW47aSsrKXsNCgkJCWlmIChob3N0PTNEPTNE
ZG9tc1tpXSl7DQoJCQkgICAgcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgl9
DQoJcmV0dXJuIGZhbHNlOw0KfQ0KZnVuY3Rpb24gZGNzVHlwZU1hdGNoKHB0
aCwgdHlwZWxpc3Qpew0KCXZhciB0eXBlPTNEcHRoLnN1YnN0cmluZyhwdGgu
bGFzdEluZGV4T2YoIi4iKSsxLHB0aC5sZW5ndGgpOw0KCXZhciB0eXBlcz0z
RHR5cGVsaXN0LnNwbGl0KCIsIik7DQoJZm9yICh2YXIgaT0zRDA7aTx0eXBl
cy5sZW5ndGg7aSsrKXsNCgkJaWYgKHR5cGU9M0Q9M0R0eXBlc1tpXSl7DQoJ
CQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCX0NCglyZXR1cm4gZmFsc2U7DQp9DQpm
dW5jdGlvbiBkY3NFdnQoZXZ0LHRhZyl7DQoJdmFyIGU9M0RldnQudGFyZ2V0
fHxldnQuc3JjRWxlbWVudDsNCgl3aGlsZSAoZS50YWdOYW1lJiYoZS50YWdO
YW1lIT0zRHRhZykpew0KCQllPTNEZS5wYXJlbnRFbGVtZW50fHxlLnBhcmVu
dE5vZGU7DQoJfQ0KCXJldHVybiBlOw0KfQ0KZnVuY3Rpb24gZGNzTmF2aWdh
dGlvbihldnQpew0KCXJldHVybiAiIjsNCn0NCmZ1bmN0aW9uIGRjc0JpbmQo
ZXZlbnQsZnVuYyl7DQoJaWYgKCh0eXBlb2Yod2luZG93W2Z1bmNdKT0zRD0z
RCJmdW5jdGlvbiIpJiZkb2N1bWVudC5ib2R5KXsNCgkJaWYgKGRvY3VtZW50
LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcil7DQoJCQlkb2N1bWVudC5ib2R5LmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnQsIHdpbmRvd1tmdW5jXSwgdHJ1ZSk7DQoJ
CX0NCgkJZWxzZSBpZihkb2N1bWVudC5ib2R5LmF0dGFjaEV2ZW50KXsNCgkJ
CWRvY3VtZW50LmJvZHkuYXR0YWNoRXZlbnQoIm9uIitldmVudCwgd2luZG93
W2Z1bmNdKTsNCgkJfQ0KCX0NCn0NCmZ1bmN0aW9uIGRjc0VUKCl7DQoJdmFy
ID0NCmU9M0QobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTVNJRSIp
IT0zRC0xKT8iY2xpY2siOiJtb3VzZWRvd24iOw0KCWRjc0JpbmQoZSwiZGNz
RG93bmxvYWQiKTsNCglkY3NCaW5kKGUsImRjc0R5bmFtaWMiKTsNCglkY3NC
aW5kKGUsImRjc0Zvcm1CdXR0b24iKTsNCglkY3NCaW5kKGUsImRjc09mZnNp
dGUiKTsNCglkY3NCaW5kKGUsImRjc0FuY2hvciIpOw0KCWRjc0JpbmQoImNv
bnRleHRtZW51IiwiZGNzUmlnaHRDbGljayIpOw0KCWRjc0JpbmQoZSwiZGNz
SW1hZ2VNYXAiKTsNCn0NCmZ1bmN0aW9uIGRjc011bHRpVHJhY2soKXsNCglp
ZiAoYXJndW1lbnRzLmxlbmd0aCUyPTNEPTNEMCl7DQoJCWZvciAodmFyIGk9
M0QwO2k8YXJndW1lbnRzLmxlbmd0aDtpKz0zRDIpew0KCQkJaWYgKGFyZ3Vt
ZW50c1tpXS5pbmRleE9mKCdXVC4nKT0zRD0zRDApew0KCQkJCVdUW2FyZ3Vt
ZW50c1tpXS5zdWJzdHJpbmcoMyldPTNEYXJndW1lbnRzW2krMV07DQoJCQl9
DQoJCQllbHNlIGlmIChhcmd1bWVudHNbaV0uaW5kZXhPZignRENTLicpPTNE
PTNEMCl7DQoJCQkJRENTW2FyZ3VtZW50c1tpXS5zdWJzdHJpbmcoNCldPTNE
YXJndW1lbnRzW2krMV07DQoJCQl9DQoJCQllbHNlIGlmIChhcmd1bWVudHNb
aV0uaW5kZXhPZignRENTZXh0LicpPTNEPTNEMCl7DQoJCQkJRENTZXh0W2Fy
Z3VtZW50c1tpXS5zdWJzdHJpbmcoNyldPTNEYXJndW1lbnRzW2krMV07DQoJ
CQl9DQoJCX0NCgkJdmFyIGRDdXJyZW50PTNEbmV3IERhdGUoKTsNCgkJRENT
LmRjc2RhdD0zRGRDdXJyZW50LmdldFRpbWUoKTsNCgkJZGNzRnVuYygiZGNz
Q29va2llIik7DQoJCWRjc1RhZygpOw0KCX0NCn0NCg0KLy8gQWRkIGV2ZW50
IGhhbmRsZXJzIGhlcmUNCg0KLy8gQ29kZSBzZWN0aW9uIGZvciBUcmFjayBj
bGlja3MgdG8gZG93bmxvYWQgbGlua3MuDQpmdW5jdGlvbiBkY3NEb3dubG9h
ZChldnQpew0KCWV2dD0zRGV2dHx8KHdpbmRvdy5ldmVudHx8IiIpOw0KCWlm
IChldnQmJigodHlwZW9mKGV2dC53aGljaCkhPTNEIm51bWJlciIpfHwoZXZ0
LndoaWNoPTNEPTNEMSkpKXsNCgkJdmFyIGU9M0RkY3NFdnQoZXZ0LCJBIik7
DQoJCWlmIChlLmhvc3RuYW1lJiZkY3NJc09uc2l0ZShlLmhvc3RuYW1lKSl7
DQoJCQlpZiAoZGNzVHlwZU1hdGNoKGUucGF0aG5hbWUsZGNzSW5pdC5kb3du
bG9hZHR5cGVzKSl7DQoJCQkJdmFyID0NCnFyeT0zRGUuc2VhcmNoP2Uuc2Vh
cmNoLnN1YnN0cmluZyhlLnNlYXJjaC5pbmRleE9mKCI/IikrMSxlLnNlYXJj
aC5sZW5ndGg9DQopOiIiOw0KCQkJCXZhciA9DQpwdGg9M0RlLnBhdGhuYW1l
PygoZS5wYXRobmFtZS5pbmRleE9mKCIvIikhPTNEMCk/Ii8iK2UucGF0aG5h
bWU6ZS5wYXRobmFtPQ0KZSk6Ii8iOw0KCQkJCXZhciB0dGw9M0QiIjsNCgkJ
CQl2YXIgdGV4dD0zRGRvY3VtZW50LmFsbD9lLmlubmVyVGV4dDplLnRleHQ7
DQoJCQkJdmFyIGltZz0zRGRjc0V2dChldnQsIklNRyIpOw0KCQkJCWlmIChp
bWcuYWx0KXsNCgkJCQkJdHRsPTNEaW1nLmFsdDsNCgkJCQl9DQoJCQkJZWxz
ZSBpZiAodGV4dCl7DQoJCQkJCXR0bD0zRHRleHQ7DQoJCQkJfQ0KCQkJCWVs
c2UgaWYgKGUuaW5uZXJIVE1MKXsNCgkJCQkJdHRsPTNEZS5pbm5lckhUTUw7
DQoJCQkJfQ0KCQkJCT0NCmRjc011bHRpVHJhY2soIkRDUy5kY3NzaXAiLGUu
aG9zdG5hbWUsIkRDUy5kY3N1cmkiLHB0aCwiRENTLmRjc3FyeSIsZS5zZWE9
DQpyY2h8fCIiLCJXVC50aSIsIkRvd25sb2FkOiIrdHRsLCJXVC5kbCIsIjIw
IiwiV1QubnYiLGRjc05hdmlnYXRpb24oZXZ0KSk7PQ0KDQoJCQkJRENTLmRj
c3NpcD0zRERDUy5kY3N1cmk9M0REQ1MuZGNzcXJ5PTNEV1QudGk9M0RXVC5k
bD0zRFdULm52PTNEIiI7DQoJCQl9DQoJCX0NCgl9DQp9DQovLyBDb2RlIHNl
Y3Rpb24gZm9yIFRyYWNrIHJpZ2h0IGNsaWNrcyB0byBkb3dubG9hZCBsaW5r
cy4NCmZ1bmN0aW9uIGRjc1JpZ2h0Q2xpY2soZXZ0KXsNCglldnQ9M0RldnR8
fCh3aW5kb3cuZXZlbnR8fCIiKTsNCglpZiAoZXZ0KXsNCgkJdmFyIGJ0bj0z
RGV2dC53aGljaHx8ZXZ0LmJ1dHRvbjsNCgkJaWYgKChidG4hPTNEMSl8fChu
YXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIlNhZmFyaSIpIT0zRC0xKSl7
DQoJCQl2YXIgZT0zRGRjc0V2dChldnQsIkEiKTsNCgkJCWlmICgodHlwZW9m
KGUuaHJlZikhPTNEInVuZGVmaW5lZCIpJiZlLmhyZWYpew0KCQkJCWlmID0N
CigodHlwZW9mKGUucHJvdG9jb2wpIT0zRCJ1bmRlZmluZWQiKSYmZS5wcm90
b2NvbCYmKGUucHJvdG9jb2wuaW5kZXhPZigiaHQ9DQp0cCIpIT0zRC0xKSl7
DQoJCQkJCWlmID0NCigodHlwZW9mKGUucGF0aG5hbWUpIT0zRCJ1bmRlZmlu
ZWQiKSYmZGNzVHlwZU1hdGNoKGUucGF0aG5hbWUsZGNzSW5pdC5yaWc9DQpo
dGNsaWNrdHlwZXMpKXsNCgkJCQkJCXZhciA9DQpwdGg9M0RlLnBhdGhuYW1l
PygoZS5wYXRobmFtZS5pbmRleE9mKCIvIikhPTNEMCk/Ii8iK2UucGF0aG5h
bWU6ZS5wYXRobmFtPQ0KZSk6Ii8iOw0KCQkJCQkJPQ0KZGNzTXVsdGlUcmFj
aygiRENTLmRjc3NpcCIsZS5ob3N0bmFtZSwiRENTLmRjc3VyaSIscHRoLCJE
Q1MuZGNzcXJ5IiwiIiwiVz0NClQudGkiLCJSaWdodENsaWNrOiIrcHRoLCJX
VC5kbCIsIjI1Iik7DQoJCQkJCQlEQ1MuZGNzc2lwPTNERENTLmRjc3VyaT0z
RFdULnRpPTNEV1QuZGw9M0RXVC5udj0zRCIiOw0KCQkJCQl9DQoJCQkJfQ0K
CQkJfQ0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gZGNzQWR2KCl7DQoJaWYgKGRj
c0luaXQudHJhY2tldmVudHMpew0KCQlkY3NGdW5jKCJkY3NFVCIpOw0KCX0N
CglkY3NGdW5jKCJkY3NDb29raWUiKTsNCglkY3NGdW5jKCJkY3NBZFNlYXJj
aCIpOw0KCWRjc0Z1bmMoImRjc1RQIik7DQoJZGNzRnVuYygiZGNzTWV0YUNh
cCIpOw0KfQ0KDQovLyBBZGQgY3VzdG9taXphdGlvbnMgaGVyZQ0KDQpmdW5j
dGlvbiBkY3NWYXIoKXsNCgl2YXIgZEN1cnJlbnQ9M0RuZXcgRGF0ZSgpOw0K
CVdULnR6PTNEKGRDdXJyZW50LmdldFRpbWV6b25lT2Zmc2V0KCkvNjAqLTEp
fHwiMCI7DQoJV1QuYmg9M0RkQ3VycmVudC5nZXRIb3VycygpfHwiMCI7DQoJ
PQ0KV1QudWw9M0RuYXZpZ2F0b3IuYXBwTmFtZT0zRD0zRCJOZXRzY2FwZSI/
bmF2aWdhdG9yLmxhbmd1YWdlOm5hdmlnYXRvci51cz0NCmVyTGFuZ3VhZ2U7
DQoJaWYgKHR5cGVvZihzY3JlZW4pPTNEPTNEIm9iamVjdCIpew0KCQk9DQpX
VC5jZD0zRG5hdmlnYXRvci5hcHBOYW1lPTNEPTNEIk5ldHNjYXBlIj9zY3Jl
ZW4ucGl4ZWxEZXB0aDpzY3JlZW4uY29sb3JEPQ0KZXB0aDsNCgkJV1Quc3I9
M0RzY3JlZW4ud2lkdGgrIngiK3NjcmVlbi5oZWlnaHQ7DQoJfQ0KCWlmICh0
eXBlb2YobmF2aWdhdG9yLmphdmFFbmFibGVkKCkpPTNEPTNEImJvb2xlYW4i
KXsNCgkJV1Quam89M0RuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKT8iWWVzIjoi
Tm8iOw0KCX0NCglpZiAoZG9jdW1lbnQudGl0bGUpew0KCQlpZiAod2luZG93
LlJlZ0V4cCl7DQoJCQl2YXIgdGlyZT0zRG5ldyA9DQpSZWdFeHAoIl4iK3dp
bmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5o
b3N0bmFtZSsiXFxzLVxcPQ0KcyIpOw0KCQkJV1QudGk9M0Rkb2N1bWVudC50
aXRsZS5yZXBsYWNlKHRpcmUsIiIpOw0KCQl9DQoJCWVsc2V7DQoJCQlXVC50
aT0zRGRvY3VtZW50LnRpdGxlOw0KCQl9DQoJfQ0KCVdULmpzPTNEIlllcyI7
DQoJV1QuanY9M0RkY3NKVigpOw0KCWlmIChkb2N1bWVudC5ib2R5JiZkb2N1
bWVudC5ib2R5LmFkZEJlaGF2aW9yKXsNCgkJZG9jdW1lbnQuYm9keS5hZGRC
ZWhhdmlvcigiI2RlZmF1bHQjY2xpZW50Q2FwcyIpOw0KCQlXVC5jdD0zRGRv
Y3VtZW50LmJvZHkuY29ubmVjdGlvblR5cGV8fCJ1bmtub3duIjsNCgkJZG9j
dW1lbnQuYm9keS5hZGRCZWhhdmlvcigiI2RlZmF1bHQjaG9tZVBhZ2UiKTsN
CgkJV1QuaHA9M0Rkb2N1bWVudC5ib2R5LmlzSG9tZVBhZ2UobG9jYXRpb24u
aHJlZik/IjEiOiIwIjsNCgl9DQoJZWxzZXsNCgkJV1QuY3Q9M0QidW5rbm93
biI7DQoJfQ0KCWlmIChkb2N1bWVudC5hbGwpew0KCQk9DQpXVC5icz0zRGRv
Y3VtZW50LmJvZHk/ZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCsieCIrZG9j
dW1lbnQuYm9keS5vZmZzZXRIPQ0KZWlnaHQ6InVua25vd24iOw0KCX0NCgll
bHNlew0KCQlXVC5icz0zRHdpbmRvdy5pbm5lcldpZHRoKyJ4Iit3aW5kb3cu
aW5uZXJIZWlnaHQ7DQoJfQ0KCVdULmZpPTNEIk5vIjsNCglpZiAod2luZG93
LkFjdGl2ZVhPYmplY3Qpew0KCQlmb3IodmFyIGk9M0QxMDtpPjA7aS0tKXsN
CgkJCXRyeXsNCgkJCQl2YXIgZmxhc2ggPTNEIG5ldyBBY3RpdmVYT2JqZWN0
KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC4iK2kpOw0KCQkJCVdU
LmZpPTNEIlllcyI7DQoJCQkJV1QuZnY9M0RpKyIuMCI7DQoJCQkJYnJlYWs7
DQoJCQl9DQoJCQljYXRjaChlKXsNCgkJCX0NCgkJfQ0KCX0NCgllbHNlIGlm
IChuYXZpZ2F0b3IucGx1Z2lucyYmbmF2aWdhdG9yLnBsdWdpbnMubGVuZ3Ro
KXsNCgkJZm9yICh2YXIgaT0zRDA7aTxuYXZpZ2F0b3IucGx1Z2lucy5sZW5n
dGg7aSsrKXsNCgkJCWlmIChuYXZpZ2F0b3IucGx1Z2luc1tpXS5uYW1lLmlu
ZGV4T2YoJ1Nob2Nrd2F2ZSBGbGFzaCcpIT0zRC0xKXsNCgkJCQlXVC5maT0z
RCJZZXMiOw0KCQkJCVdULmZ2PTNEbmF2aWdhdG9yLnBsdWdpbnNbaV0uZGVz
Y3JpcHRpb24uc3BsaXQoIiAiKVsyXTsNCgkJCQlicmVhazsNCgkJCX0NCgkJ
fQ0KCX0NCglpZiAoZGNzSW5pdC5pMThuKXsNCgkJaWYgKHR5cGVvZihkb2N1
bWVudC5kZWZhdWx0Q2hhcnNldCk9M0Q9M0Qic3RyaW5nIil7DQoJCQlXVC5s
ZT0zRGRvY3VtZW50LmRlZmF1bHRDaGFyc2V0Ow0KCQl9PTIwDQoJCWVsc2Ug
aWYgKHR5cGVvZihkb2N1bWVudC5jaGFyYWN0ZXJTZXQpPTNEPTNEInN0cmlu
ZyIpew0KCQkJV1QubGU9M0Rkb2N1bWVudC5jaGFyYWN0ZXJTZXQ7DQoJCX0N
CgkJZWxzZXsNCgkJCVdULmxlPTNEInVua25vd24iOw0KCQl9DQoJfQ0KCVdU
LnR2PTNEIjEuMS4xIjsNCi8vCVdULnNwPTNEIkBAU1BMSVRWQUxVRUBAIjsN
CglXVC5kbD0zRCIwIjsNCglEQ1MuZGNzZGF0PTNEZEN1cnJlbnQuZ2V0VGlt
ZSgpOw0KCURDUy5kY3NzaXA9M0R3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7
DQoJRENTLmRjc3VyaT0zRHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsNCglX
VC5lcz0zRERDUy5kY3NzaXArRENTLmRjc3VyaTsNCglpZiAod2luZG93Lmxv
Y2F0aW9uLnNlYXJjaCl7DQoJCURDUy5kY3Nxcnk9M0R3aW5kb3cubG9jYXRp
b24uc2VhcmNoOw0KCQlpZiAoZGNzSW5pdC5xcC5sZW5ndGg+MCl7DQoJCQlm
b3IgKHZhciBpPTNEMDtpPGRjc0luaXQucXAubGVuZ3RoO2krKyl7DQoJCQkJ
dmFyIHBvcz0zRERDUy5kY3NxcnkuaW5kZXhPZihkY3NJbml0LnFwW2ldKTsN
CgkJCQlpZiAocG9zIT0zRC0xKXsNCgkJCQkJdmFyIGZyb250PTNERENTLmRj
c3FyeS5zdWJzdHJpbmcoMCxwb3MpOw0KCQkJCQl2YXIgPQ0KZW5kPTNERENT
LmRjc3FyeS5zdWJzdHJpbmcocG9zK2Rjc0luaXQucXBbaV0ubGVuZ3RoLERD
Uy5kY3NxcnkubGVuZ3RoKTsNCgkJCQkJRENTLmRjc3FyeT0zRGZyb250K2Vu
ZDsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJaWYgPQ0KKCh3aW5kb3cuZG9j
dW1lbnQucmVmZXJyZXIhPTNEIiIpJiYod2luZG93LmRvY3VtZW50LnJlZmVy
cmVyIT0zRCItIikpew0KCQlpZiAoIShuYXZpZ2F0b3IuYXBwTmFtZT0zRD0z
RCJNaWNyb3NvZnQgSW50ZXJuZXQgPQ0KRXhwbG9yZXIiJiZwYXJzZUludChu
YXZpZ2F0b3IuYXBwVmVyc2lvbik8NCkpew0KCQkJRENTLmRjc3JlZj0zRHdp
bmRvdy5kb2N1bWVudC5yZWZlcnJlcjsNCgkJfQ0KCX0NCn0NCmZ1bmN0aW9u
IGRjc0EoTixWKXsNCglpZiAoZGNzSW5pdC5pMThuJiYoZGNzSW5pdC5leHJl
IT0zRCIiKSYmIWRjc0luaXQuZXhyZS50ZXN0KE4pKXsNCgkJaWYgKE49M0Q9
M0QiZGNzcXJ5Iil7DQoJCQl2YXIgbmV3Vj0zRCIiOw0KCQkJdmFyIHBhcmFt
cz0zRFYuc3Vic3RyaW5nKDEpLnNwbGl0KCImIik7DQoJCQlmb3IgKHZhciBp
PTNEMDtpPHBhcmFtcy5sZW5ndGg7aSsrKXsNCgkJCQl2YXIgcGFpcj0zRHBh
cmFtc1tpXTsNCgkJCQl2YXIgcG9zPTNEcGFpci5pbmRleE9mKCI9M0QiKTsN
CgkJCQlpZiAocG9zIT0zRC0xKXsNCgkJCQkJdmFyIGtleT0zRHBhaXIuc3Vi
c3RyaW5nKDAscG9zKTsNCgkJCQkJdmFyIHZhbD0zRHBhaXIuc3Vic3RyaW5n
KHBvcysxKTsNCgkJCQkJaWYgKGkhPTNEMCl7DQoJCQkJCQluZXdWKz0zRCIm
IjsNCgkJCQkJfQ0KCQkJCQluZXdWKz0zRGtleSsiPTNEIitkY3NFbmNvZGUo
dmFsKTsNCgkJCQl9DQoJCQl9DQoJCQlWPTNEVi5zdWJzdHJpbmcoMCwxKStu
ZXdWOw0KCQl9DQoJCWVsc2V7DQoJCQlWPTNEZGNzRW5jb2RlKFYpOw0KCQl9
DQoJfQ0KCXJldHVybiAiJiIrTisiPTNEIitkY3NFc2NhcGUoViwgZGNzSW5p
dC5yZSk7DQp9DQpmdW5jdGlvbiBkY3NFc2NhcGUoUywgUkVMKXsNCglpZiAo
UkVMIT0zRCIiKXsNCgkJUz0zRFMudG9TdHJpbmcoKTsNCgkJZm9yICh2YXIg
UiBpbiBSRUwpew0KCQkJUz0zRFMucmVwbGFjZShSRUxbUl0sUik7DQoJCX0N
CgkJcmV0dXJuIFM7DQoJfQ0KCWVsc2V7DQoJCXJldHVybiBlc2NhcGUoUyk7
DQoJfQ0KfQ0KZnVuY3Rpb24gZGNzRW5jb2RlKFMpew0KCXJldHVybiA9DQoo
dHlwZW9mKGVuY29kZVVSSUNvbXBvbmVudCk9M0Q9M0QiZnVuY3Rpb24iKT9l
bmNvZGVVUklDb21wb25lbnQoUyk6ZXNjYXBlPQ0KKFMpOw0KfQ0KZnVuY3Rp
b24gZGNzQ3JlYXRlSW1hZ2UoZGNzU3JjKXsNCglpZiAoZG9jdW1lbnQuaW1h
Z2VzKXsNCgkJZGNzSW5pdC5pbWFnZXNbZGNzSW5pdC5pbmRleF09M0RuZXcg
SW1hZ2U7DQoJCWRjc0luaXQuaW1hZ2VzW2Rjc0luaXQuaW5kZXhdLnNyYz0z
RGRjc1NyYzsNCgkJZGNzSW5pdC5pbmRleCsrOw0KCX0NCgllbHNlew0KCQlk
b2N1bWVudC53cml0ZSgnPElNRyBBTFQ9M0QiIiBCT1JERVI9M0QiMCIgTkFN
RT0zRCJEQ1NJTUciIFdJRFRIPTNEIjEiID0NCkhFSUdIVD0zRCIxIiBTUkM9
M0QiJytkY3NTcmMrJyI+Jyk7DQoJfQ0KfQ0KZnVuY3Rpb24gZGNzTWV0YSgp
ew0KCXZhciBlbGVtczsNCglpZiAoZG9jdW1lbnQuYWxsKXsNCgkJZWxlbXM9
M0Rkb2N1bWVudC5hbGwudGFncygibWV0YSIpOw0KCX0NCgllbHNlIGlmIChk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQpew0KCQllbGVtcz0zRGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIik7DQoJfQ0KCWlmICh0eXBl
b2YoZWxlbXMpIT0zRCJ1bmRlZmluZWQiKXsNCgkJdmFyIGxlbmd0aD0zRGVs
ZW1zLmxlbmd0aDsNCgkJZm9yICh2YXIgaT0zRDA7aTxsZW5ndGg7aSsrKXsN
CgkJCXZhciBuYW1lPTNEZWxlbXMuaXRlbShpKS5uYW1lOw0KCQkJdmFyIGNv
bnRlbnQ9M0RlbGVtcy5pdGVtKGkpLmNvbnRlbnQ7DQoJCQl2YXIgZXF1aXY9
M0RlbGVtcy5pdGVtKGkpLmh0dHBFcXVpdjsNCgkJCWlmIChuYW1lLmxlbmd0
aD4wKXsNCgkJCQlpZiAobmFtZS5pbmRleE9mKCJXVC4iKT0zRD0zRDApew0K
CQkJCQlXVFtuYW1lLnN1YnN0cmluZygzKV09M0Rjb250ZW50Ow0KCQkJCX0N
CgkJCQllbHNlIGlmIChuYW1lLmluZGV4T2YoIkRDU2V4dC4iKT0zRD0zRDAp
ew0KCQkJCQlEQ1NleHRbbmFtZS5zdWJzdHJpbmcoNyldPTNEY29udGVudDsN
CgkJCQl9DQoJCQkJZWxzZSBpZiAobmFtZS5pbmRleE9mKCJEQ1MuIik9M0Q9
M0QwKXsNCgkJCQkJRENTW25hbWUuc3Vic3RyaW5nKDQpXT0zRGNvbnRlbnQ7
DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gZGNzVGFnKCl7
DQoJaWYgKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCJXVExPUFRPVVQ9M0Qi
KSE9M0QtMSl7DQoJCXJldHVybjsNCgl9DQoJdmFyID0NClA9M0QiaHR0cCIr
KHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwczonKT0z
RD0zRDA/J3MnOicnKSsiOi89DQovIitkY3NJbml0LmRvbWFpbisoZGNzSW5p
dC5kY3NpZD0zRD0zRCIiPycnOicvJytkY3NJbml0LmRjc2lkKSsiL2Rjcy5n
aWY/PQ0KIjsNCglpZiAoZGNzSW5pdC5pMThuKXsNCgkJV1QuZGVwPTNEIiI7
DQoJfQ0KCWZvciAodmFyIE4gaW4gRENTKXsNCgkJaWYgKERDU1tOXSl7DQoJ
CQlQKz0zRGRjc0EoTixEQ1NbTl0pOw0KCQl9DQoJfQ0KCXZhciBrZXlzPTNE
WyJjb19mIiwidnRfc2lkIiwidnRfZl90bHYiXTsNCglmb3IgKHZhciBpPTNE
MDtpPGtleXMubGVuZ3RoO2krKyl7DQoJCXZhciBrZXk9M0RrZXlzW2ldOw0K
CQlpZiAoV1Rba2V5XSl7DQoJCQlQKz0zRGRjc0EoIldULiIra2V5LFdUW2tl
eV0pOw0KCQkJZGVsZXRlIFdUW2tleV07DQoJCX0NCgl9DQoJZm9yIChOIGlu
IFdUKXsNCgkJaWYgKFdUW05dKXsNCgkJCVArPTNEZGNzQSgiV1QuIitOLFdU
W05dKTsNCgkJfQ0KCX0NCglmb3IgKE4gaW4gRENTZXh0KXsNCgkJaWYgKERD
U2V4dFtOXSl7DQoJCQlpZiAoZGNzSW5pdC5pMThuKXsNCgkJCQlXVC5kZXA9
M0QoV1QuZGVwLmxlbmd0aD0zRD0zRDApP046KFdULmRlcCsiOyIrTik7DQoJ
CQl9DQoJCQlQKz0zRGRjc0EoTixEQ1NleHRbTl0pOw0KCQl9DQoJfQ0KCWlm
IChkY3NJbml0LmkxOG4mJihXVC5kZXAubGVuZ3RoPjApKXsNCgkJUCs9M0Rk
Y3NBKCJXVC5kZXAiLFdULmRlcCk7DQoJfQ0KCWlmIChQLmxlbmd0aD4yMDQ4
JiZuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKT49M0QwKXsN
CgkJUD0zRFAuc3Vic3RyaW5nKDAsMjA0MCkrIiZXVC50dT0zRDEiOw0KCX0N
CglkY3NDcmVhdGVJbWFnZShQKTsNCglXVC5hZD0zRCIiOw0KfQ0KZnVuY3Rp
b24gZGNzSlYoKXsNCgl2YXIgYWd0PTNEbmF2aWdhdG9yLnVzZXJBZ2VudC50
b0xvd2VyQ2FzZSgpOw0KCXZhciBtYWpvcj0zRHBhcnNlSW50KG5hdmlnYXRv
ci5hcHBWZXJzaW9uKTsNCgl2YXIgbWFjPTNEKGFndC5pbmRleE9mKCJtYWMi
KSE9M0QtMSk7DQoJdmFyIGZmPTNEKGFndC5pbmRleE9mKCJmaXJlZm94Iikh
PTNELTEpOw0KCXZhciBmZjA9M0QoYWd0LmluZGV4T2YoImZpcmVmb3gvMC4i
KSE9M0QtMSk7DQoJdmFyIGZmMTA9M0QoYWd0LmluZGV4T2YoImZpcmVmb3gv
MS4wIikhPTNELTEpOw0KCXZhciBmZjE1PTNEKGFndC5pbmRleE9mKCJmaXJl
Zm94LzEuNSIpIT0zRC0xKTsNCgl2YXIgZmYyMD0zRChhZ3QuaW5kZXhPZigi
ZmlyZWZveC8yLjAiKSE9M0QtMSk7DQoJdmFyIGZmM3VwPTNEKGZmJiYhZmYw
JiYhZmYxMCYhZmYxNSYhZmYyMCk7DQoJdmFyID0NCm5uPTNEKCFmZiYmKGFn
dC5pbmRleE9mKCJtb3ppbGxhIikhPTNELTEpJiYoYWd0LmluZGV4T2YoImNv
bXBhdGlibGUiKT0zRD0zRD0NCi0xKSk7DQoJdmFyIG5uND0zRChubiYmKG1h
am9yPTNEPTNENCkpOw0KCXZhciBubjZ1cD0zRChubiYmKG1ham9yPj0zRDUp
KTsNCgl2YXIgaWU9M0QoKGFndC5pbmRleE9mKCJtc2llIikhPTNELTEpJiYo
YWd0LmluZGV4T2YoIm9wZXJhIik9M0Q9M0QtMSkpOw0KCXZhciBpZTQ9M0Qo
aWUmJihtYWpvcj0zRD0zRDQpJiYoYWd0LmluZGV4T2YoIm1zaWUgNCIpIT0z
RC0xKSk7DQoJdmFyIGllNXVwPTNEKGllJiYhaWU0KTsNCgl2YXIgb3A9M0Qo
YWd0LmluZGV4T2YoIm9wZXJhIikhPTNELTEpOw0KCXZhciBvcDU9M0QoYWd0
LmluZGV4T2YoIm9wZXJhIDUiKSE9M0QtMXx8YWd0LmluZGV4T2YoIm9wZXJh
LzUiKSE9M0QtMSk7DQoJdmFyIG9wNj0zRChhZ3QuaW5kZXhPZigib3BlcmEg
NiIpIT0zRC0xfHxhZ3QuaW5kZXhPZigib3BlcmEvNiIpIT0zRC0xKTsNCgl2
YXIgb3A3dXA9M0Qob3AmJiFvcDUmJiFvcDYpOw0KCXZhciBqdj0zRCIxLjEi
Ow0KCWlmIChmZjN1cCl7DQoJCWp2PTNEIjEuOCI7DQoJfQ0KCWVsc2UgaWYg
KGZmMjApew0KCQlqdj0zRCIxLjciOw0KCX0NCgllbHNlIGlmIChmZjE1KXsN
CgkJanY9M0QiMS42IjsNCgl9DQoJZWxzZSBpZiAoZmYwfHxmZjEwfHxubjZ1
cHx8b3A3dXApew0KCQlqdj0zRCIxLjUiOw0KCX0NCgllbHNlIGlmICgobWFj
JiZpZTV1cCl8fG9wNil7DQoJCWp2PTNEIjEuNCI7DQoJfQ0KCWVsc2UgaWYg
KGllNXVwfHxubjR8fG9wNSl7DQoJCWp2PTNEIjEuMyI7DQoJfQ0KCWVsc2Ug
aWYgKGllNCl7DQoJCWp2PTNEIjEuMiI7DQoJfQ0KCXJldHVybiBqdjsNCn0N
CmZ1bmN0aW9uIGRjc0Z1bmMoZnVuYyl7DQoJaWYgKHR5cGVvZih3aW5kb3db
ZnVuY10pPTNEPTNEImZ1bmN0aW9uIil7DQoJCXdpbmRvd1tmdW5jXSgpOw0K
CX0NCn0NCg0KaWYgKGRjc0luaXQuZW5hYmxlZCl7DQogICAgZGNzVmFyKCk7
DQogICAgZGNzTWV0YSgpOw0KICAgIGRjc0Z1bmMoImRjc0FkdiIpOw0KICAg
IGRjc1RhZygpOw0KfQ0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUND
MzY1My4xRjVBRURBMC0tDQo=

------=_NextPart_000_007A_01C2A9A6.76487B14--
