Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ao6To-0006Ct-FC for pgadmin-hackers@arkaria.postgresql.org; Thu, 07 Apr 2016 09:44:00 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1ao6To-0006vw-0m for pgadmin-hackers@arkaria.postgresql.org; Thu, 07 Apr 2016 09:44:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ao6SW-0006BJ-4K for pgadmin-hackers@postgresql.org; Thu, 07 Apr 2016 09:42:40 +0000 Received: from mail-wm0-x235.google.com ([2a00:1450:400c:c09::235]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1ao6SR-0004xN-S8 for pgadmin-hackers@postgresql.org; Thu, 07 Apr 2016 09:42:39 +0000 Received: by mail-wm0-x235.google.com with SMTP id 191so85248772wmq.0 for ; Thu, 07 Apr 2016 02:42:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:date:message-id:subject:from:to; bh=lHFzZf+ZBJobxeP7z2CP7gPzkjKvH0S1/OL5EhykHXA=; b=kQrLCAsslFXrDoAZRQFhgVHvGs176VDaYBGYieW8dvWSnDLLDpsG98kqBFWTztbYSt 42JNGpDTX7iZuSdijaJsD2PAxZpamStgKPqAd7XXfY3Ktr6EX8tyT0TRTf2SyL8yXB/n wB2xVez06PId8IPFa65EoCoQ8DxHl4UNrroAw1Y7PKaSvpRUd+zuXECmamqOuokBc/PH yWuiyjB7KpUOBcZ+Glyu7LH+y1/dMJpZ3O2AFL12U4t5GXFUON1ctNcg0f4iJ8tHkBPg UkGXiKULlYJgNSmNd7/uo24s0UfWkjyOK6a8c/WSSVYOcEUaYGuji/UewCGLQSJ2dWgi bUCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to; bh=lHFzZf+ZBJobxeP7z2CP7gPzkjKvH0S1/OL5EhykHXA=; b=WXgXZkeUhDgGvKPzQDwdRO/8HJVwyNMK1mszaZGiQOuFMlHqRbdIARmsZdO4XIGwli aZ5Pt9M0qDWwlux115PKBmPRGY97Lpo/wRwWn15bRbcAlecb0KDwzFoGnoTUx2xLN3gK ng7YXMsnNYq5xfRoLBKo1W9DLFzP+iTEHhAvgAw5cO8htACsrLTMTqNwx4kdsEOFdJPz J/03dtit5VHm5G/vwq3hqR28SPojPcKH/pzhfXpOdx4GA+U5tsPGx3g3YijQ+JifqR52 sKmB2cN12/4P+xwQfmLV/jrpJRNcOsOIb8IUZfio4CsEm16FJbW7eMy3T1icO6BkRau0 SxVw== X-Gm-Message-State: AD7BkJJjLoLtoY5G3+B7tdxgmsmP4J+yNDNssJm9tBL6uDyrl2BJKADML4YoDRDT5TQHGe6CZM4kbdgFUQzut4fp MIME-Version: 1.0 X-Received: by 10.194.81.103 with SMTP id z7mr2323037wjx.25.1460022155045; Thu, 07 Apr 2016 02:42:35 -0700 (PDT) Received: by 10.28.111.5 with HTTP; Thu, 7 Apr 2016 02:42:34 -0700 (PDT) Date: Thu, 7 Apr 2016 10:42:34 +0100 Message-ID: Subject: Styling tab navigation and close buttons From: Arun Kollan To: pgadmin-hackers@postgresql.org, Dave Page Content-Type: multipart/mixed; boundary=047d7bf0d1d6eb389f052fe1e53f X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --047d7bf0d1d6eb389f052fe1e53f Content-Type: multipart/alternative; boundary=047d7bf0d1d6eb3899052fe1e53d --047d7bf0d1d6eb3899052fe1e53d Content-Type: text/plain; charset=UTF-8 Hi Team, Please find attached patch for styling tab navigation and close buttons. The patch consists of changes to wcDocker to customise the placement of navigational buttons and also removal of an extra arrows. A readme file added explaining the changes. Arun Kollan *Website: www.enterprisedb.com * *EnterpriseDB Blog: http://blogs.enterprisedb.com/ Follow us on Twitter: http://www.twitter.com/enterprisedb * This e-mail message (and any attachment) is intended for the use of the individual or entity to whom it is addressed. This message contains information from EnterpriseDB Corporation that may be privileged, confidential, or exempt from disclosure under applicable law. If you are not the intended recipient or authorized to receive this for the intended recipient, any use, dissemination, distribution, retention, archiving, or copying of this communication is strictly prohibited. If you have received this e-mail in error, please notify the sender immediately by reply e-mail and delete this message. --047d7bf0d1d6eb3899052fe1e53d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Team,<= div>
Please find attached patch for styling tab navigation an= d close buttons. The patch consists of changes to wcDocker to customise the= placement of navigational buttons =C2=A0and also removal of an extra arrow= s. A readme file added explaining the changes.=C2=A0


Arun Kollan
Website:=C2=A0www.enterprisedb.com
=
EnterpriseDB Blog:=C2=A0http://blogs.enterprisedb.com/
Follow us on Twitte= r:=C2=A0h= ttp://www.twitter.com/enterprisedb


This e-mail message (and any attachment) is intended for the use of t= he individual or entity to whom it is addressed. This message contains info= rmation from EnterpriseDB Corporation that may be privileged, confidential,= or exempt from disclosure under applicable law. If you are not the intende= d recipient or authorized to receive this for the intended recipient, any u= se, dissemination, distribution, retention, archiving, or copying of this c= ommunication is strictly prohibited. If you have received this e-mail in er= ror, please notify the sender immediately by reply e-mail and delete this m= essage.




--047d7bf0d1d6eb3899052fe1e53d-- --047d7bf0d1d6eb389f052fe1e53f Content-Type: application/octet-stream; name="button_tab-nav_styling.patch" Content-Disposition: attachment; filename="button_tab-nav_styling.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_imq3gxjx0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3ZlcnJpZGVz LmNzcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3ZlcnJpZGVzLmNzcwpp bmRleCAyZmNhYWUyLi5lOTQ3NDJlIDEwMDc1NQotLS0gYS93ZWIvcGdhZG1p bi9zdGF0aWMvY3NzL292ZXJyaWRlcy5jc3MKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2Nzcy9vdmVycmlkZXMuY3NzCkBAIC0zMDAsMjQgKzMwMCwyMSBA QCBpZnJhbWUgewogfQogCiAub2JqX3Byb3BlcnRpZXMgZmllbGRzZXQgPiAu ZmllbGRzZXQtY29udGVudCB7Ci0gICAgYm9yZGVyLXJhZGl1czo1cHg7Ci0g ICAgcGFkZGluZzogNXB4IDEwcHg7Ci0gICAgd2lkdGg6IDk5LjglOwotICAg IG1hcmdpbjogMCAwLjElOwotICAgIGJvcmRlci1jb2xvcjogIzkyQUZDODsK LSAgICBib3JkZXItd2lkdGg6IDJweDsKLSAgICBib3JkZXItc3R5bGU6IHJp ZGdlOwotICAgIGJhY2tncm91bmQtY29sb3I6ICMjRDdEOEREOworICBib3Jk ZXItcmFkaXVzOjVweDsKKyAgcGFkZGluZzogNXB4IDEwcHg7CisgIGJvcmRl ci1jb2xvcjogIzkyQUZDODsKKyAgYm9yZGVyLXdpZHRoOiAycHg7CisgIGJv cmRlci1zdHlsZTogcmlkZ2U7CiB9CiAKIC5vYmpfcHJvcGVydGllcyAuYmFk Z2UgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIHRleHQtYWxpZ246IGxl ZnQ7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotICAgIG1hcmdpbi1ib3R0b206 IDFweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkM3NkI0OwotCWJvcmRl ci1yYWRpdXM6NXB4OwotCXBhZGRpbmc6IDVweCA3cHg7CisgIGRpc3BsYXk6 IGJsb2NrOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBjdXJzb3I6IHBvaW50 ZXI7CisgIG1hcmdpbi1ib3R0b206IDFweDsKKyAgYmFja2dyb3VuZC1jb2xv cjogIzJDNzZCNDsKKyAgYm9yZGVyLXJhZGl1czo1cHg7CisgIHBhZGRpbmc6 IDVweCA3cHg7CiB9CiAKIC5vYmpfcHJvcGVydGllcyAuYmFkZ2UgLmNhcmV0 IHsKQEAgLTM0Myw5ICszNDAsNyBAQCBpZnJhbWUgewogfQogCiAub2JqX3By b3BlcnRpZXMgdGFibGUgewotICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRh bnQ7Ci0gICAgd2lkdGg6IDk4JTsKLSAgICBtYXJnaW46IDAuOCU7CisgIGRp c3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiB9CiAKIC5vYmpfcHJvcGVydGll cyB0YWJsZSB0ciB7CkBAIC0zODQsOCArMzc5LDggQEAgaWZyYW1lIHsKIH0K IAogLnBnLXByb3AtYnRuLWdyb3VwIGJ1dHRvbiB7Ci0gICAgcGFkZGluZzog NXB4OwotICAgIG1hcmdpbjogMnB4IDVweDsKKyAgcGFkZGluZzogNXB4Owor ICBtYXJnaW46IDJweCA1cHg7CiB9CiAKIC5wZy1wcm9wLWJ0bi1ncm91cCBi dXR0b246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSB7CkBA IC0zOTUsOCArMzkwLDYgQEAgaWZyYW1lIHsKIC5wZy1wcm9wLWNvbnRlbnQg ewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBvdmVyZmxvdzogYXV0 bzsKLSAgICB0b3A6IDNweDsKLSAgICBib3R0b206IDA7CiAgICAgcGFkZGlu Zy1ib3R0b206IDdweDsKICAgICBwYWRkaW5nLXRvcDogMDsKICAgICBwYWRk aW5nLXJpZ2h0OiAwOwpAQCAtNDA4LDcgKzQwMSw3IEBAIGlmcmFtZSB7CiB9 CiAKIC5oYXMtcGctcHJvcC1idG4tZ3JvdXAgewotICAgIHRvcDogNDNweDsK KyAgICB0b3A6IDQ4cHg7CiB9CiAKIC5wZy1wcm9wLWNvbnRlbnQgPiBkaXYg ewpAQCAtNDc2LDggKzQ2OSw4IEBAIGZpZWxkc2V0W2Rpc2FibGVkXSAuZm9y bS1jb250cm9sIHsKIH0KIAogLmJhY2tncmlkIHRoLCAuYmFja2dyaWQgdGQg ewotICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwotICAgIGZvbnQtc2l6ZTogMTJw eDsKKyAgbGluZS1oZWlnaHQ6IDE4cHg7CisgIGZvbnQtc2l6ZTogMTJweDsK IH0KIAogLmJhY2tncmlkIHRoIHsKQEAgLTcyMyw3NCArNzE2LDY5IEBAIGRp di5pbmxpbmUtdGFiLXBhbmVsID4gdWwubmF2LXRhYnMgPiBsaSA+IGEsCiBk aXYuaW5saW5lLXRhYi1wYW5lbCA+IHVsLm5hdi10YWJzID4gbGkgPiBhOmFj dGl2ZSwKIGRpdi5pbmxpbmUtdGFiLXBhbmVsID4gdWwubmF2LXRhYnMgPiBs aSA+IGE6aG92ZXIsCiBkaXYuaW5saW5lLXRhYi1wYW5lbCA+IHVsLm5hdi10 YWJzID4gbGkgPiBhOmZvY3VzIHsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFk aXVzOiA1cHg7Ci0JYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKKyAg Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OworICBib3JkZXItdG9wLXJp Z2h0LXJhZGl1czogNXB4OwogfQogCiBkaXYuaW5saW5lLXRhYi1wYW5lbCA+ IHVsLm5hdi10YWJzID4gbGk6Zmlyc3QtY2hpbGQgPiBhLAogZGl2LmlubGlu ZS10YWItcGFuZWwgPiB1bC5uYXYtdGFicyA+IGxpOmZpcnN0LWNoaWxkID4g YTphY3RpdmUsCiBkaXYuaW5saW5lLXRhYi1wYW5lbCA+IHVsLm5hdi10YWJz ID4gbGk6Zmlyc3QtY2hpbGQgPiBhOmhvdmVyLAogZGl2LmlubGluZS10YWIt cGFuZWwgPiB1bC5uYXYtdGFicyA+IGxpOmZpcnN0LWNoaWxkID4gYTpmb2N1 cyB7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OyAKLQlib3Jk ZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwotCW1hcmdpbi1sZWZ0OiAxcHg7 CisgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKKyAgYm9yZGVyLXRv cC1yaWdodC1yYWRpdXM6IDVweDsKKyAgbWFyZ2luLWxlZnQ6IDFweDsKIH0K IAogZGl2LmlubGluZS10YWItcGFuZWwgPiB1bC50YWItY29udGVudCB7Ci0g ICAgcGFkZGluZy1sZWZ0OiA1cHg7IHBhZGRpbmctcmlnaHQ6IDVweDsgYm9y ZGVyLWNvbG9yOiAjREREOwotICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRp dXM6IDEwcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4Owot ICAgIGJvcmRlci13aWR0aDogMHB4IDFweCAxcHggMXB4OyBib3JkZXItYm90 dG9tLXJpZ2h0LXJhZGl1czogNXB4OwotICAgIGJvcmRlci1ib3R0b20tbGVm dC1yYWRpdXM6IDVweDsgYm9yZGVyLXN0eWxlOiBzb2xpZCBzb2xpZDsKKyAg cGFkZGluZy1sZWZ0OiA1cHg7IHBhZGRpbmctcmlnaHQ6IDVweDsgYm9yZGVy LWNvbG9yOiAjREREOworICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAx MHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDsKKyAgYm9y ZGVyLXdpZHRoOiAwcHggMXB4IDFweCAxcHg7IGJvcmRlci1ib3R0b20tcmln aHQtcmFkaXVzOiA1cHg7CisgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6 IDVweDsgYm9yZGVyLXN0eWxlOiBzb2xpZCBzb2xpZDsKIH0KIAogZGl2Lmlu bGluZS10YWItcGFuZWwgPiB1bC50YWItY29udGVudCA+IGRpdi50YWItcGFu ZSB7Ci0gICAgbWluLWhlaWdodDogMTUwcHg7IHBhZGRpbmc6IDBweCAhaW1w b3J0YW50OworICBtaW4taGVpZ2h0OiAxNTBweDsgcGFkZGluZzogMHB4ICFp bXBvcnRhbnQ7CiB9CiAKIGRpdi5pbmxpbmUtdGFiLXBhbmVsID4gdWwudGFi LWNvbnRlbnQgPiBkaXYudGFiLXBhbmUgPiAqOmZpcnN0LWNoaWxkIHsKLSAg ICBtYXJnaW4tdG9wOiA1cHg7CisgIG1hcmdpbi10b3A6IDVweDsKIH0KIAog ZGl2LmlubGluZS10YWItcGFuZWwgPiB1bC50YWItY29udGVudCA+IGRpdi50 YWItcGFuZSA+ICo6bGFzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWJvdHRvbTog NXB4OworICBtYXJnaW4tYm90dG9tOiA1cHg7CiB9Ci0ucGdhZG1pbi1jb250 cm9sLWVycm9yLW1lc3NhZ2UKLXsKLSAgICBwYWRkaW5nLWxlZnQ6IDRweDsK KworLnBnYWRtaW4tY29udHJvbC1lcnJvci1tZXNzYWdleworICBwYWRkaW5n LWxlZnQ6IDRweDsKIH0KLS5idG4tZ3JvdXAtc20+LmJ0biwgLmJ0bi1zbQot ewotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBwYWRkaW5nOiAzcHggM3B4 OworCisuYnRuLWdyb3VwLXNtPi5idG4sIC5idG4tc217CisgIGZvbnQtc2l6 ZTogMTFweDsKKyAgcGFkZGluZzogM3B4IDNweDsKIH0KIAogdGQuZWRpdC1j ZWxsLmVkaXRhYmxlLnNvcnRhYmxlLnJlbmRlcmFibGUuZWRpdG9yIHsKLSAg ICBvdXRsaW5lOiAwcHg7CisgIG91dGxpbmU6IDBweDsKIH0KIAotLnByaXZp bGVnZV9sYWJlbAotewotICAgIGZvbnQtc2l6ZTogMTBweCFpbXBvcnRhbnQ7 Ci19Ci0uYmFja2dyaWQgdGgsIC5iYWNrZ3JpZCB0ZAotewotICAgIHBhZGRp bmc6IDJweDsKLSAgICBmb250LXdlaWdodDogbm9ybWFsIWltcG9ydGFudDsK Ky5wcml2aWxlZ2VfbGFiZWx7CisgIGZvbnQtc2l6ZTogMTBweCFpbXBvcnRh bnQ7CiB9Ci0ucGctcGFuZWwtZGVwZW5kcy1jb250YWluZXIgPiB0YWJsZSA+ IHRoZWFkID4gdHIgPiB0aCB7Ci0gICAgcGFkZGluZzogMnB4OworCisuYmFj a2dyaWQgdGgsIC5iYWNrZ3JpZCB0ZHsKKyAgcGFkZGluZzogMnB4OworICBm b250LXdlaWdodDogbm9ybWFsIWltcG9ydGFudDsKIH0KIAotLmJhY2tncmlk IHRoOmZpcnN0LWNoaWxkICwgLmJhY2tncmlkIHRoOmxhc3QtY2hpbGR7Ci0g ICAgYm9yZGVyLWxlZnQtY29sb3I6ICMyQzc2QjQ7Cisuc3Vibm9kZSA+IHRh YmxlLmJhY2tncmlkID4gdGhlYWQgPiB0ciA+IHRoOmZpcnN0LWNoaWxkewor ICBib3JkZXItbGVmdC1jb2xvcjogIzJDNzZCNDsKIH0KIAotLmJhY2tncmlk IHRoOmxhc3QtY2hpbGR7Ci0gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMkM3 NkI0OworLnN1Ym5vZGUgPiB0YWJsZS5iYWNrZ3JpZCA+IHRoZWFkID4gdHIg PiB0aDpsYXN0LWNoaWxkeworICBib3JkZXItcmlnaHQtY29sb3I6ICMyQzc2 QjQ7CiB9Ci0uc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9u LS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZAotewotICAg IHBhZGRpbmctbGVmdDogM3B4OworLnNlbGVjdDItY29udGFpbmVyIC5zZWxl Y3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVu ZGVyZWR7CisgIHBhZGRpbmctbGVmdDogNXB4OwogfQogCiAvKiBNZXNzYWdl IHBhbmVsIHNob3duIG9uIGJyb3dzZXIgdGFicyAqLwpAQCAtOTA1LDUgKzg5 MywyMiBAQCB1bC5uYXYubmF2LXRhYnMgewogfQogCiAuYnRuLXByaW1hcnl7 Ci0JbWFyZ2luOiAycHggMTNweCAhaW1wb3J0YW50OworICBtYXJnaW46IDJw eCAxM3B4ICFpbXBvcnRhbnQ7CiB9CisKKy5wZy1wYW5lbC1kZXBlbmRzLWNv bnRhaW5lciA+dGFibGUuYmFja2dyaWQudGFibGUtYm9yZGVyZWQgeworICBi b3JkZXI6IDBweDsKK30KKworLnBnLXBhbmVsLWRlcGVuZHMtY29udGFpbmVy ID4gdGFibGUgPiB0aGVhZCA+IHRyID4gdGggeworICBwYWRkaW5nOiAycHg7 CisgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cit9CisKKy5wZy1wYW5lbC1k ZXBlbmRzLWNvbnRhaW5lciA+IHRhYmxlID4gdGhlYWQgPiB0ciA+IHRoOmZp cnN0LWNoaWxkIHsKKyAgYm9yZGVyLWxlZnQ6IDBweDsKK30KKworLnBnLXBh bmVsLWRlcGVuZHMtY29udGFpbmVyID4gdGFibGUgPiB0aGVhZCA+IHRyID4g dGg6bGFzdC1jaGlsZCB7CisgIGJvcmRlci1yaWdodDogMHB4OworfQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3N0YXRpYy9jc3Mvd2NEb2NrZXIvVGhlbWVzL3BnYWRtaW4uY3NzIGIv d2ViL3BnYWRtaW4vc3RhdGljL2Nzcy93Y0RvY2tlci9UaGVtZXMvcGdhZG1p bi5jc3MKaW5kZXggNTFlMDQ2MS4uYjAxZjFhZSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vc3RhdGljL2Nzcy93Y0RvY2tlci9UaGVtZXMvcGdhZG1pbi5j c3MKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy93Y0RvY2tlci9UaGVt ZXMvcGdhZG1pbi5jc3MKQEAgLTM3LDE1ICszNywyNCBAQAogLndjRnJhbWVC dXR0b24gewogICB3aWR0aDogMjBweDsKICAgaGVpZ2h0OiAyMHB4OwotICBi b3JkZXI6IDJweCBzb2xpZCAjOEEwRDBEOwotICBiYWNrZ3JvdW5kLWNvbG9y OiAjQTU2RDZEOworICBib3JkZXI6IDJweCBzb2xpZCAjOUU5RTlFOworICBi YWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwogICBmb250LXNpemU6IDEycHg7Cisg IGJvcmRlci1yYWRpdXM6IDVweCA1cHggNXB4IDVweDsKKyAgbWFyZ2luLXJp Z2h0OiAycHg7CiB9CiAKIC53Y0ZyYW1lTWluaUJ1dHRvbiB7CiAgIHdpZHRo OiA4cHg7CiB9CiAKKy53Y0ZyYW1lQnV0dG9uLndjRnJhbWVCdXR0b25MZWZ0 IHsKKyAgcmlnaHQ6IDEwcHg7Cit9Cisud2NGcmFtZUJ1dHRvbi53Y0ZyYW1l QnV0dG9uUmlnaHQgeworICByaWdodDogMTBweDsKK30KKwogLndjRnJhbWVC dXR0b246aG92ZXIgewogICBib3JkZXI6IDJweCBzb2xpZCAjQ0NDQ0NDOwog fQpAQCAtMjYzLDExICsyNzIsOSBAQAogfQogCiAud2NGcmFtZUJ1dHRvbkJh ciB7Ci0gIHRvcDogN3B4OworICB0b3A6IDVweDsKICAgcmlnaHQ6IDVweDsK LSAgY29sb3I6IHdoaXRlOwogfQotCiAuY29udGV4dC1tZW51LWxpc3Qgewog Zm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJp YWwsIHNhbnMtc2VyaWY7CiBmb250LXNpemU6IDEzcHg7CkBAIC0zMTMsMyAr MzIwLDEyIEBAIGZvbnQtc2l6ZTogMTNweDsKIHVsLmRyb3Bkb3duLW1lbnUg PiBsaS5tZW51LWl0ZW0gPiBhID4gaS53Y1RhYkljb24gewogICB3aWR0aDog MTRweDsKIH0KKworLndjRnJhbWVCdXR0b24gLmZhLmZhLWNsb3NlIHsKKyAg bWFyZ2luLXRvcDogMy41cHg7CisgIHBhZGRpbmctbGVmdDogMXB4OworfQor CitzcGFuLmZhLmZhLWFycm93LWxlZnQsIC5mYS1hcnJvdy1yaWdodCB7Cisg IG1hcmdpbi10b3A6IDRweDsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy93Y0RvY2tlci9SRUFETUUgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvd2NEb2NrZXIvUkVBRE1FCmluZGV4IGRmMDRmYmQuLmYxMzA2ZDcg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy93Y0RvY2tlci9S RUFETUUKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3djRG9ja2VyL1JF QURNRQpAQCAtMSwzICsxLDQgQEAKKzE2LzAzLzIwMTYKIFRoZSB3Y0RvY2tl ciB0aGVtZSBmcmFtZSB3aWR0aCBoYXMgYmVlbiBjaGFuZ2VkIGZyb20gNnB4 IHRvIDRweC4gVGhpcyBjaGFuZ2UgaGFzIAogYmVlbiBicm91Z2h0IGFib3V0 IHRvIGtlZXAgdGhlIHdpZHRoIG9mIHRoZSBmcmFtZSBjb25zaXN0ZW50IHdp dGggdGhlIHdpZHRoIG9mIAogdGhlIHdpbmRvdyBkaXZpZGVyLiAKQEAgLTM1 LDMgKzM2LDMyIEBAIGluZGV4IDk1NGQ3M2UuLmJjNjRiM2IgMTAwNzU1CiBU aGUgc2FtZSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIHdjRG9ja2VyLW1p bi5qcyBhbmQgaXMgbm90IGluY2x1ZGVkIGFzIHRoZSAKIGZpbGUgaXMgdGlk eSBmb3JtYXR0ZWQuIAogICAgICAgICAgICAgICAgICAKKzA2LzA0LzIwMTYK K1RoZSB3Y0RvY2tlciBpcyB1cGRhdGVkIHRvIHJlbW92ZSB0aGUgZXh0cmEg bGVmdCBhbmQgdGhlIHJpZ2h0IGFycm93cyAoIHNpZ25zICkgd2hpY2ggYXJl IG5vdCByZXF1aXJlZCBmb3IgdGFiIG5hdmlnYXRpb24uIE5ldyBydWxlcyBo YXMgYmVlbiBhZGRlZCB0byBzZXQgdGhlIHBvc2l0aW9uIGZvciBlYWNoIHNw ZWNpZmljIG5hdmlnYXRpb25hbCBidXR0b25zIDsgbGVmdCAmIHJpZ2h0CisK K2RpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvd2NEb2NrZXIv d2NEb2NrZXIuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvd2NEb2NrZXIv d2NEb2NrZXIuanMKK2luZGV4IGJjNjRiM2IuLmI0YTUxOTMgMTAwNzU1Cist LS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvd2NEb2NrZXIvd2NEb2NrZXIu anMKKysrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy93Y0RvY2tlci93Y0Rv Y2tlci5qcworQEAgLTMzOTIsOCArMzM5Miw4IEBAIGRlZmluZSgnd2NEb2Nr ZXIvZnJhbWUnLFsKKyAgICAgICAgICAgICB0aGlzLiR0YWJCYXIgPSAkKCc8 ZGl2IGNsYXNzPSJ3Y0ZyYW1lVGl0bGVCYXIiPicpOworICAgICAgICAgICAg IHRoaXMuJHRhYlNjcm9sbCA9ICQoJzxkaXYgY2xhc3M9IndjVGFiU2Nyb2xs ZXIiPicpOworICAgICAgICAgICAgIHRoaXMuJGNlbnRlciA9ICQoJzxkaXYg Y2xhc3M9IndjRnJhbWVDZW50ZXIgd2NQYW5lbEJhY2tncm91bmQiPicpOwor LSAgICAgICAgICAgIHRoaXMuJHRhYkxlZnQgPSAkKCc8ZGl2IGNsYXNzPSJ3 Y0ZyYW1lQnV0dG9uIiB0aXRsZT0iU2Nyb2xsIHRhYnMgdG8gdGhlIGxlZnQu Ij48c3BhbiBjbGFzcz0iZmEgZmEtYXJyb3ctbGVmdCI+PC9zcGFuPiZsdDs8 L2Rpdj4nKTsKKy0gICAgICAgICAgICB0aGlzLiR0YWJSaWdodCA9ICQoJzxk aXYgY2xhc3M9IndjRnJhbWVCdXR0b24iIHRpdGxlPSJTY3JvbGwgdGFicyB0 byB0aGUgcmlnaHQuIj48c3BhbiBjbGFzcz0iZmEgZmEtYXJyb3ctcmlnaHQi Pjwvc3Bhbj4mZ3Q7PC9kaXY+Jyk7CisrICAgICAgICAgICAgdGhpcy4kdGFi TGVmdCA9ICQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b24gYXJyb3dsZWZ0 IiB0aXRsZT0iU2Nyb2xsIHRhYnMgdG8gdGhlIGxlZnQuIj48c3BhbiBjbGFz cz0iZmEgZmEtYXJyb3ctbGVmdCI+PC9zcGFuPjwvZGl2PicpOworKyAgICAg ICAgICAgIHRoaXMuJHRhYlJpZ2h0ID0gJCgnPGRpdiBjbGFzcz0id2NGcmFt ZUJ1dHRvbiBhcnJvd3JpZ2h0IiB0aXRsZT0iU2Nyb2xsIHRhYnMgdG8gdGhl IHJpZ2h0LiI+PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LXJpZ2h0Ij48L3Nw YW4+PC9kaXY+Jyk7CisgICAgICAgICAgICAgdGhpcy4kY2xvc2UgPSAkKCc8 ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9uIiB0aXRsZT0iQ2xvc2UgdGhlIGN1 cnJlbnRseSBhY3RpdmUgcGFuZWwgdGFiIj48ZGl2IGNsYXNzPSJmYSBmYS1j bG9zZSI+PC9kaXY+WDwvZGl2PicpOworIAorICAgICAgICAgICAgIHRoaXMu JGNvbGxhcHNlID0gJCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbiIgdGl0 bGU9IkNvbGxhcHNlIHRoZSBhY3RpdmUgcGFuZWwiPjxkaXYgY2xhc3M9ImZh IGZhLWRvd25sb2FkIj48L2Rpdj5DPC9kaXY+Jyk7CitAQCAtNTk4NSw4ICs1 OTg1LDggQEAgZGVmaW5lKCd3Y0RvY2tlci90YWJmcmFtZScsWworICAgICAg ICAgICAgIHRoaXMuJHRhYkJhciA9ICQoJzxkaXYgY2xhc3M9IndjRnJhbWVU aXRsZUJhciB3Y0N1c3RvbVRhYlRpdGxlIHdjV2lkZSI+Jyk7CisgICAgICAg ICAgICAgdGhpcy4kdGFiU2Nyb2xsID0gJCgnPGRpdiBjbGFzcz0id2NUYWJT Y3JvbGxlciI+Jyk7CisgICAgICAgICAgICAgdGhpcy4kY2VudGVyID0gJCgn PGRpdiBjbGFzcz0id2NGcmFtZUNlbnRlciB3Y1BhbmVsQmFja2dyb3VuZCI+ Jyk7CistICAgICAgICAgICAgdGhpcy4kdGFiTGVmdCA9ICQoJzxkaXYgY2xh c3M9IndjRnJhbWVCdXR0b24iIHRpdGxlPSJTY3JvbGwgdGFicyB0byB0aGUg bGVmdC4iPjxzcGFuIGNsYXNzPSJmYSBmYS1hcnJvdy1sZWZ0Ij48L3NwYW4+ Jmx0OzwvZGl2PicpOworLSAgICAgICAgICAgIHRoaXMuJHRhYlJpZ2h0ID0g JCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbiIgdGl0bGU9IlNjcm9sbCB0 YWJzIHRvIHRoZSByaWdodC4iPjxzcGFuIGNsYXNzPSJmYSBmYS1hcnJvdy1y aWdodCI+PC9zcGFuPiZndDs8L2Rpdj4nKTsKKysgICAgICAgICAgICB0aGlz LiR0YWJMZWZ0ID0gJCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbiB3Y0Zy YW1lQnV0dG9uTGVmdCIgdGl0bGU9IlNjcm9sbCB0YWJzIHRvIHRoZSBsZWZ0 LiI+PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LWxlZnQiPjwvc3Bhbj48L2Rp dj4nKTsKKysgICAgICAgICAgICB0aGlzLiR0YWJSaWdodCA9ICQoJzxkaXYg Y2xhc3M9IndjRnJhbWVCdXR0b24gd2NGcmFtZUJ1dHRvblJpZ2h0IiB0aXRs ZT0iU2Nyb2xsIHRhYnMgdG8gdGhlIHJpZ2h0LiI+PHNwYW4gY2xhc3M9ImZh IGZhLWFycm93LXJpZ2h0Ij48L3NwYW4+PC9kaXY+Jyk7CisgICAgICAgICAg ICAgdGhpcy4kY2xvc2UgPSAkKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9u IiB0aXRsZT0iQ2xvc2UgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGFuZWwgdGFi Ij48c3BhbiBjbGFzcz0iZmEgZmEtY2xvc2UiPjwvc3Bhbj5YPC9kaXY+Jyk7 CisgCisgICAgICAgICAgICAgLy90aGlzLiRtYXhpbWl6ZSA9ICQoJzxkaXYg Y2xhc3M9IndjRnJhbWVCdXR0b24iIHRpdGxlPSJDbG9zZSB0aGUgY3VycmVu dGx5IGFjdGl2ZSBwYW5lbCB0YWIiPjxzcGFuIGNsYXNzPSJmYSBmYS1leHBh bmQiPjwvc3Bhbj5YPC9kaXY+Jyk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3djRG9j a2VyL3djRG9ja2VyLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3djRG9j a2VyL3djRG9ja2VyLmpzCmluZGV4IGJjNjRiM2IuLmI0YTUxOTMgMTAwNzU1 Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy93Y0RvY2tlci93Y0RvY2tl ci5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvd2NEb2NrZXIvd2NE b2NrZXIuanMKQEAgLTMzOTIsOCArMzM5Miw4IEBAIGRlZmluZSgnd2NEb2Nr ZXIvZnJhbWUnLFsKICAgICAgICAgICAgIHRoaXMuJHRhYkJhciA9ICQoJzxk aXYgY2xhc3M9IndjRnJhbWVUaXRsZUJhciI+Jyk7CiAgICAgICAgICAgICB0 aGlzLiR0YWJTY3JvbGwgPSAkKCc8ZGl2IGNsYXNzPSJ3Y1RhYlNjcm9sbGVy Ij4nKTsKICAgICAgICAgICAgIHRoaXMuJGNlbnRlciA9ICQoJzxkaXYgY2xh c3M9IndjRnJhbWVDZW50ZXIgd2NQYW5lbEJhY2tncm91bmQiPicpOwotICAg ICAgICAgICAgdGhpcy4kdGFiTGVmdCA9ICQoJzxkaXYgY2xhc3M9IndjRnJh bWVCdXR0b24iIHRpdGxlPSJTY3JvbGwgdGFicyB0byB0aGUgbGVmdC4iPjxz cGFuIGNsYXNzPSJmYSBmYS1hcnJvdy1sZWZ0Ij48L3NwYW4+Jmx0OzwvZGl2 PicpOwotICAgICAgICAgICAgdGhpcy4kdGFiUmlnaHQgPSAkKCc8ZGl2IGNs YXNzPSJ3Y0ZyYW1lQnV0dG9uIiB0aXRsZT0iU2Nyb2xsIHRhYnMgdG8gdGhl IHJpZ2h0LiI+PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LXJpZ2h0Ij48L3Nw YW4+Jmd0OzwvZGl2PicpOworICAgICAgICAgICAgdGhpcy4kdGFiTGVmdCA9 ICQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b24gYXJyb3dsZWZ0IiB0aXRs ZT0iU2Nyb2xsIHRhYnMgdG8gdGhlIGxlZnQuIj48c3BhbiBjbGFzcz0iZmEg ZmEtYXJyb3ctbGVmdCI+PC9zcGFuPjwvZGl2PicpOworICAgICAgICAgICAg dGhpcy4kdGFiUmlnaHQgPSAkKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9u IGFycm93cmlnaHQiIHRpdGxlPSJTY3JvbGwgdGFicyB0byB0aGUgcmlnaHQu Ij48c3BhbiBjbGFzcz0iZmEgZmEtYXJyb3ctcmlnaHQiPjwvc3Bhbj48L2Rp dj4nKTsKICAgICAgICAgICAgIHRoaXMuJGNsb3NlID0gJCgnPGRpdiBjbGFz cz0id2NGcmFtZUJ1dHRvbiIgdGl0bGU9IkNsb3NlIHRoZSBjdXJyZW50bHkg YWN0aXZlIHBhbmVsIHRhYiI+PGRpdiBjbGFzcz0iZmEgZmEtY2xvc2UiPjwv ZGl2Plg8L2Rpdj4nKTsKIAogICAgICAgICAgICAgdGhpcy4kY29sbGFwc2Ug PSAkKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9uIiB0aXRsZT0iQ29sbGFw c2UgdGhlIGFjdGl2ZSBwYW5lbCI+PGRpdiBjbGFzcz0iZmEgZmEtZG93bmxv YWQiPjwvZGl2PkM8L2Rpdj4nKTsKQEAgLTU5ODUsOCArNTk4NSw4IEBAIGRl ZmluZSgnd2NEb2NrZXIvdGFiZnJhbWUnLFsKICAgICAgICAgICAgIHRoaXMu JHRhYkJhciA9ICQoJzxkaXYgY2xhc3M9IndjRnJhbWVUaXRsZUJhciB3Y0N1 c3RvbVRhYlRpdGxlIHdjV2lkZSI+Jyk7CiAgICAgICAgICAgICB0aGlzLiR0 YWJTY3JvbGwgPSAkKCc8ZGl2IGNsYXNzPSJ3Y1RhYlNjcm9sbGVyIj4nKTsK ICAgICAgICAgICAgIHRoaXMuJGNlbnRlciA9ICQoJzxkaXYgY2xhc3M9Indj RnJhbWVDZW50ZXIgd2NQYW5lbEJhY2tncm91bmQiPicpOwotICAgICAgICAg ICAgdGhpcy4kdGFiTGVmdCA9ICQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0 b24iIHRpdGxlPSJTY3JvbGwgdGFicyB0byB0aGUgbGVmdC4iPjxzcGFuIGNs YXNzPSJmYSBmYS1hcnJvdy1sZWZ0Ij48L3NwYW4+Jmx0OzwvZGl2PicpOwot ICAgICAgICAgICAgdGhpcy4kdGFiUmlnaHQgPSAkKCc8ZGl2IGNsYXNzPSJ3 Y0ZyYW1lQnV0dG9uIiB0aXRsZT0iU2Nyb2xsIHRhYnMgdG8gdGhlIHJpZ2h0 LiI+PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LXJpZ2h0Ij48L3NwYW4+Jmd0 OzwvZGl2PicpOworICAgICAgICAgICAgdGhpcy4kdGFiTGVmdCA9ICQoJzxk aXYgY2xhc3M9IndjRnJhbWVCdXR0b24gd2NGcmFtZUJ1dHRvbkxlZnQiIHRp dGxlPSJTY3JvbGwgdGFicyB0byB0aGUgbGVmdC4iPjxzcGFuIGNsYXNzPSJm YSBmYS1hcnJvdy1sZWZ0Ij48L3NwYW4+PC9kaXY+Jyk7CisgICAgICAgICAg ICB0aGlzLiR0YWJSaWdodCA9ICQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0 b24gd2NGcmFtZUJ1dHRvblJpZ2h0IiB0aXRsZT0iU2Nyb2xsIHRhYnMgdG8g dGhlIHJpZ2h0LiI+PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LXJpZ2h0Ij48 L3NwYW4+PC9kaXY+Jyk7CiAgICAgICAgICAgICB0aGlzLiRjbG9zZSA9ICQo JzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b24iIHRpdGxlPSJDbG9zZSB0aGUg Y3VycmVudGx5IGFjdGl2ZSBwYW5lbCB0YWIiPjxzcGFuIGNsYXNzPSJmYSBm YS1jbG9zZSI+PC9zcGFuPlg8L2Rpdj4nKTsKIAogICAgICAgICAgICAgLy90 aGlzLiRtYXhpbWl6ZSA9ICQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b24i IHRpdGxlPSJDbG9zZSB0aGUgY3VycmVudGx5IGFjdGl2ZSBwYW5lbCB0YWIi PjxzcGFuIGNsYXNzPSJmYSBmYS1leHBhbmQiPjwvc3Bhbj5YPC9kaXY+Jyk7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvd2NEb2NrZXIv d2NEb2NrZXIubWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3djRG9j a2VyL3djRG9ja2VyLm1pbi5qcwppbmRleCBlMmIyZTc3Li5hNTVlYzk4IDEw MDc1NQotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvd2NEb2NrZXIvd2NE b2NrZXIubWluLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy93Y0Rv Y2tlci93Y0RvY2tlci5taW4uanMKQEAgLTMyLDggKzMyLDggQEAKICAqLwog CiAhZnVuY3Rpb24oKXt2YXIgdCxlLGE7IWZ1bmN0aW9uKHIpe2Z1bmN0aW9u IG8odCxlKXtyZXR1cm4gZy5jYWxsKHQsZSl9ZnVuY3Rpb24gaSh0LGUpe3Zh ciBhLHIsbyxpLG4scyxsLGMsaCx1LGQsZj1lJiZlLnNwbGl0KCIvIikscD1t Lm1hcCxiPXAmJnBbIioiXXx8e307aWYodCYmIi4iPT09dC5jaGFyQXQoMCkp aWYoZSl7Zm9yKHQ9dC5zcGxpdCgiLyIpLG49dC5sZW5ndGgtMSxtLm5vZGVJ ZENvbXBhdCYmeC50ZXN0KHRbbl0pJiYodFtuXT10W25dLnJlcGxhY2UoeCwi IikpLHQ9Zi5zbGljZSgwLGYubGVuZ3RoLTEpLmNvbmNhdCh0KSxoPTA7aDx0 Lmxlbmd0aDtoKz0xKWlmKGQ9dFtoXSwiLiI9PT1kKXQuc3BsaWNlKGgsMSks aC09MTtlbHNlIGlmKCIuLiI9PT1kKXtpZigxPT09aCYmKCIuLiI9PT10WzJd fHwiLi4iPT09dFswXSkpYnJlYWs7aD4wJiYodC5zcGxpY2UoaC0xLDIpLGgt PTIpfXQ9dC5qb2luKCIvIil9ZWxzZSAwPT09dC5pbmRleE9mKCIuLyIpJiYo dD10LnN1YnN0cmluZygyKSk7aWYoKGZ8fGIpJiZwKXtmb3IoYT10LnNwbGl0 KCIvIiksaD1hLmxlbmd0aDtoPjA7aC09MSl7aWYocj1hLnNsaWNlKDAsaCku am9pbigiLyIpLGYpZm9yKHU9Zi5sZW5ndGg7dT4wO3UtPTEpaWYobz1wW2Yu c2xpY2UoMCx1KS5qb2luKCIvIildLG8mJihvPW9bcl0pKXtpPW8scz1oO2Jy ZWFrfWlmKGkpYnJlYWs7IWwmJmImJmJbcl0mJihsPWJbcl0sYz1oKX0haSYm bCYmKGk9bCxzPWMpLGkmJihhLnNwbGljZSgwLHMsaSksdD1hLmpvaW4oIi8i KSl9cmV0dXJuIHR9ZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbigp e3ZhciBhPVQuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuInN0cmluZyIhPXR5 cGVvZiBhWzBdJiYxPT09YS5sZW5ndGgmJmEucHVzaChudWxsKSxmLmFwcGx5 KHIsYS5jb25jYXQoW3QsZV0pKX19ZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVu Y3Rpb24oZSl7cmV0dXJuIGkoZSx0KX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4g ZnVuY3Rpb24oZSl7X1t0XT1lfX1mdW5jdGlvbiBjKHQpe2lmKG8odix0KSl7 dmFyIGU9dlt0XTtkZWxldGUgdlt0XSx3W3RdPSEwLGQuYXBwbHkocixlKX1p ZighbyhfLHQpJiYhbyh3LHQpKXRocm93IG5ldyBFcnJvcigiTm8gIit0KTty ZXR1cm4gX1t0XX1mdW5jdGlvbiBoKHQpe3ZhciBlLGE9dD90LmluZGV4T2Yo IiEiKTotMTtyZXR1cm4gYT4tMSYmKGU9dC5zdWJzdHJpbmcoMCxhKSx0PXQu c3Vic3RyaW5nKGErMSx0Lmxlbmd0aCkpLFtlLHRdfWZ1bmN0aW9uIHUodCl7 cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG0mJm0uY29uZmlnJiZtLmNvbmZp Z1t0XXx8e319fXZhciBkLGYscCxiLF89e30sdj17fSxtPXt9LHc9e30sZz1P YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFQ9W10uc2xpY2UseD0v XC5qcyQvO3A9ZnVuY3Rpb24odCxlKXt2YXIgYSxyPWgodCksbz1yWzBdO3Jl dHVybiB0PXJbMV0sbyYmKG89aShvLGUpLGE9YyhvKSksbz90PWEmJmEubm9y bWFsaXplP2Eubm9ybWFsaXplKHQscyhlKSk6aSh0LGUpOih0PWkodCxlKSxy PWgodCksbz1yWzBdLHQ9clsxXSxvJiYoYT1jKG8pKSkse2Y6bz9vKyIhIit0 OnQsbjp0LHByOm8scDphfX0sYj17cmVxdWlyZTpmdW5jdGlvbih0KXtyZXR1 cm4gbih0KX0sZXhwb3J0czpmdW5jdGlvbih0KXt2YXIgZT1fW3RdO3JldHVy biJ1bmRlZmluZWQiIT10eXBlb2YgZT9lOl9bdF09e319LG1vZHVsZTpmdW5j dGlvbih0KXtyZXR1cm57aWQ6dCx1cmk6IiIsZXhwb3J0czpfW3RdLGNvbmZp Zzp1KHQpfX19LGQ9ZnVuY3Rpb24odCxlLGEsaSl7dmFyIHMsaCx1LGQsZixt LGc9W10sVD10eXBlb2YgYTtpZihpPWl8fHQsInVuZGVmaW5lZCI9PT1UfHwi ZnVuY3Rpb24iPT09VCl7Zm9yKGU9IWUubGVuZ3RoJiZhLmxlbmd0aD9bInJl cXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl06ZSxmPTA7ZjxlLmxlbmd0aDtm Kz0xKWlmKGQ9cChlW2ZdLGkpLGg9ZC5mLCJyZXF1aXJlIj09PWgpZ1tmXT1i LnJlcXVpcmUodCk7ZWxzZSBpZigiZXhwb3J0cyI9PT1oKWdbZl09Yi5leHBv cnRzKHQpLG09ITA7ZWxzZSBpZigibW9kdWxlIj09PWgpcz1nW2ZdPWIubW9k dWxlKHQpO2Vsc2UgaWYobyhfLGgpfHxvKHYsaCl8fG8odyxoKSlnW2ZdPWMo aCk7ZWxzZXtpZighZC5wKXRocm93IG5ldyBFcnJvcih0KyIgbWlzc2luZyAi K2gpO2QucC5sb2FkKGQubixuKGksITApLGwoaCkse30pLGdbZl09X1toXX11 PWE/YS5hcHBseShfW3RdLGcpOnZvaWQgMCx0JiYocyYmcy5leHBvcnRzIT09 ciYmcy5leHBvcnRzIT09X1t0XT9fW3RdPXMuZXhwb3J0czp1PT09ciYmbXx8 KF9bdF09dSkpfWVsc2UgdCYmKF9bdF09YSl9LHQ9ZT1mPWZ1bmN0aW9uKHQs ZSxhLG8saSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBiW3RdP2Jb dF0oZSk6YyhwKHQsZSkuZik7aWYoIXQuc3BsaWNlKXtpZihtPXQsbS5kZXBz JiZmKG0uZGVwcyxtLmNhbGxiYWNrKSwhZSlyZXR1cm47ZS5zcGxpY2U/KHQ9 ZSxlPWEsYT1udWxsKTp0PXJ9cmV0dXJuIGU9ZXx8ZnVuY3Rpb24oKXt9LCJm dW5jdGlvbiI9PXR5cGVvZiBhJiYoYT1vLG89aSksbz9kKHIsdCxlLGEpOnNl dFRpbWVvdXQoZnVuY3Rpb24oKXtkKHIsdCxlLGEpfSw0KSxmfSxmLmNvbmZp Zz1mdW5jdGlvbih0KXtyZXR1cm4gZih0KX0sdC5fZGVmaW5lZD1fLGE9ZnVu Y3Rpb24odCxlLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcg RXJyb3IoIlNlZSBhbG1vbmQgUkVBRE1FOiBpbmNvcnJlY3QgbW9kdWxlIGJ1 aWxkLCBubyBtb2R1bGUgbmFtZSIpO2Uuc3BsaWNlfHwoYT1lLGU9W10pLG8o Xyx0KXx8byh2LHQpfHwodlt0XT1bdCxlLGFdKX0sYS5hbWQ9e2pRdWVyeToh MH19KCksYSgibGlicy9hbG1vbmQiLGZ1bmN0aW9uKCl7fSksZnVuY3Rpb24o dCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhP2EoImRjbC9taW5pIixbXSx0KToi dW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6 ZGNsPXQoKX0oZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChl LHIpe3ZhciBpLGMsaCx1LGQsZixwLGIsXyx2LG09WzBdLHc9MDtpZihlKWlm KGUgaW5zdGFuY2VvZiBBcnJheSl7Zm9yKGQ9e30sYj1lLnNsaWNlKDApLnJl dmVyc2UoKSxfPWIubGVuZ3RoLTE7Xz49MDstLV8paWYoYz1iW19dLGMuX3Vu aXF1ZUlkPWMuX3VuaXF1ZUlkfHxuKyssaT1jLl9tZXRhKXtmb3IocD1pLmJh c2VzLHc9cC5sZW5ndGgtMTt3PjA7LS13KXY9cFt3XS5fdW5pcXVlSWQsZFt2 XT0oZFt2XXx8MCkrMTtiW19dPXAuc2xpY2UoMCl9ZWxzZSBiW19dPVtjXTtm PXt9O3Q6Zm9yKDtiLmxlbmd0aDspe2ZvcihfPTA7XzxiLmxlbmd0aDsrK18p aWYocD1iW19dLGM9cFswXSx2PWMuX3VuaXF1ZUlkLCFkW3ZdKXtmW3ZdfHwo bS5wdXNoKGMpLGZbdl09MSkscC5zaGlmdCgpLHAubGVuZ3RoPy0tZFtwWzBd Ll91bmlxdWVJZF06Yi5zcGxpY2UoXywxKTtjb250aW51ZSB0fXQuX2Vycm9y KCJjeWNsZSIscixiKX1lPWVbMF0sdz1tLmxlbmd0aC0oKHU9ZS5fbWV0YSkm JmU9PT1tW20ubGVuZ3RoLSh3PXUuYmFzZXMubGVuZ3RoKV0/dzoxKS0xfWVs c2UgZS5fdW5pcXVlSWQ9ZS5fdW5pcXVlSWR8fG4rKyxtPW0uY29uY2F0KCh1 PWUuX21ldGEpP3UuYmFzZXM6ZSk7Zm9yKGk9ZT90LmRlbGVnYXRlKGVbbF0p Ont9LHA9ZSYmKHU9ZS5fbWV0YSk/dC5kZWxlZ2F0ZSh1LndlYXZlcik6e2Nv bnN0cnVjdG9yOjJ9O3c+MDstLXcpaWYoYz1tW3ddLHU9Yy5fbWV0YSx0Lm1p eChpLHUmJnUub3duUHJvcHN8fGNbbF0pLHUpZm9yKHYgaW4gYj11LndlYXZl cilwW3ZdPSgrcFt2XXx8MCl8Ylt2XTtmb3IodiBpbiByKWEodT1yW3ZdKT9w W3ZdPStwW3ZdfHwwOmlbdl09dTtyZXR1cm4gdT17YmFzZXM6bSxvd25Qcm9w czpyLHdlYXZlcjpwLGNoYWluczp7fX0sbVswXT17X21ldGE6dSxwcm90b3R5 cGU6aX0sbyh1LGkpLGg9aVtzXSxoLl9tZXRhPXUsaFtsXT1pLG1bMF09aCx0 Ll9wb3N0cHJvY2VzcyhoKX1mdW5jdGlvbiBlKHQpe3RoaXMuYXJvdW5kPXR9 ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdCYmdC5zcHIgaW5zdGFuY2VvZiBlfWZ1 bmN0aW9uIHIodCl7dmFyIGU9W107Zm9yKHZhciBhIGluIHQpZS5wdXNoKGEp O3JldHVybiBlfWZ1bmN0aW9uIG8oZSxhKXt2YXIgcj1lLndlYXZlcixvPWUu YmFzZXMsaT1lLmNoYWlucztmb3IodmFyIG4gaW4gcilhW25dPXQuX3N0dWIo cltuXSxvLG4saSl9dmFyIGksbj0wLHM9ImNvbnN0cnVjdG9yIixsPSJwcm90 b3R5cGUiLGM9e307cmV0dXJuKGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGEg aW4gZSl0W2FdPWVbYV19KSh0LHttaXg6aSxkZWxlZ2F0ZTpmdW5jdGlvbih0 KXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0KX0sYWxsS2V5czpyLFN1cGVyOmUs c3VwZXJDYWxsOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll9tYWtlU3VwZXIoZSl9 LF9tYWtlU3VwZXI6ZnVuY3Rpb24odCxhKXt2YXIgcj1mdW5jdGlvbigpe307 cmV0dXJuIHIuc3ByPW5ldyhhfHxlKSh0KSxyfSxfcG9zdHByb2Nlc3M6ZnVu Y3Rpb24odCl7cmV0dXJuIHR9LF9lcnJvcjpmdW5jdGlvbih0KXt0aHJvdyBF cnJvcigiZGNsOiAiK3QpfSxfaW5zdGFudGlhdGU6ZnVuY3Rpb24odCxlLGEp e3ZhciByPXQuc3ByLmFyb3VuZChlKTtyZXR1cm4gci5jdHI9dC5jdHIscn0s X2V4dHJhY3RDaGFpbjpmdW5jdGlvbih0LGUscil7Zm9yKHZhciBvLGksbj10 Lmxlbmd0aC0xLGg9W10sdT0iYXJvdW5kIj09cjtvPXRbbl07LS1uKSgoaT1v Ll9tZXRhKT8oaT1pLm93blByb3BzKS5oYXNPd25Qcm9wZXJ0eShlKSYmKGEo aT1pW2VdKT91P2kuc3ByLmFyb3VuZDppPWkuc3ByW3JdOnUpOnUmJihpPWU9 PXM/bzpvW2xdW2VdKSYmaSE9PWNbZV0pJiYoaS5jdHI9byxoLnB1c2goaSkp O3JldHVybiBofSxfc3R1YkNoYWluOmZ1bmN0aW9uKHQpe3ZhciBlLGE9dC5s ZW5ndGg7cmV0dXJuIGE/MT09YT8oZT10WzBdLGZ1bmN0aW9uKCl7ZS5hcHBs eSh0aGlzLGFyZ3VtZW50cyl9KTpmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2E+ ZTsrK2UpdFtlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9OjB9LF9zdHViU3Vw ZXI6ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG8saT0wLG49Y1tyXTtvPWVbaV07 KytpKW49YShvKT9lW2ldPXQuX2luc3RhbnRpYXRlKG8sbixyKTpvO3JldHVy biByIT1zP246ZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19 LF9zdHViQ2hhaW5TdXBlcjpmdW5jdGlvbihlLHIsbyl7Zm9yKHZhciBpLG4s bD0wLGM9MDtpPWVbbF07KytsKWEoaSkmJihuPWwtYyxlW2xdPXQuX2luc3Rh bnRpYXRlKGksbj8xPT1uP2VbY106cihlLnNsaWNlKGMsbCkpOjAsbyksYz1s KTtyZXR1cm4gbj1sLWMsbj8xPT1uJiZvIT1zP2VbY106cihjP2Uuc2xpY2Uo Yyk6ZSk6MH0sX3N0dWI6ZnVuY3Rpb24oZSxhLHIsbyl7dmFyIGk9b1tyXT10 Ll9leHRyYWN0Q2hhaW4oYSxyLCJhcm91bmQiKTtyZXR1cm4oZT90Ll9zdHVi Q2hhaW5TdXBlcihpLHQuX3N0dWJDaGFpbixyKTp0Ll9zdHViU3VwZXIoaSxy KSl8fGZ1bmN0aW9uKCl7fX19KSx0fSksZnVuY3Rpb24odCl7InVuZGVmaW5l ZCIhPXR5cGVvZiBhP2EoImRjbC9kY2wiLFsiLi9taW5pIl0sdCk6InVuZGVm aW5lZCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dChlKCIuL21p bmkiKSk6ZGNsPXQoZGNsKX0oZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1 bmN0aW9uIGUoKXt9ZnVuY3Rpb24gYShlKXtyZXR1cm4gdC5fbWFrZVN1cGVy KGUsaSl9ZnVuY3Rpb24gcih0LGEscil7dmFyIG89dHx8ZSxpPWF8fGUsbj1y fHxlLHM9ZnVuY3Rpb24oKXt2YXIgdCxlO28uYXBwbHkodGhpcyxhcmd1bWVu dHMpO3RyeXt0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGEpe3Q9 YSxlPSEwfWlmKGkuY2FsbCh0aGlzLGFyZ3VtZW50cyx0KSxlKXRocm93IHQ7 cmV0dXJuIHR9O3JldHVybiBzLmFkdmljZXM9e2JlZm9yZTp0LGFmdGVyOmEs YXJvdW5kOnJ9LHN9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZnVuY3Rpb24oYSxy KXt2YXIgbyxpPWEuX21ldGE7aSYmKG89K2kud2VhdmVyW3JdfHwwLG8mJm8h PWUmJnQuX2Vycm9yKCJzZXQgY2hhaW5pbmciLHIsYSxlLG8pLGkud2VhdmVy W3JdPWUpfX12YXIgaT10KHQuU3VwZXIse2NvbnN0cnVjdG9yOmZ1bmN0aW9u KCl7dGhpcy5iZWZvcmU9dGhpcy5hcm91bmQuYmVmb3JlLHRoaXMuYWZ0ZXI9 dGhpcy5hcm91bmQuYWZ0ZXIsdGhpcy5hcm91bmQ9dGhpcy5hcm91bmQuYXJv dW5kfX0pO3JldHVybiB0Lm1peCh0LHtBZHZpY2U6aSxhZHZpc2U6YSxiZWZv cmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYWR2aXNlKHtiZWZvcmU6ZX0pfSxh ZnRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdC5hZHZpc2Uoe2FmdGVyOmV9KX0s YXJvdW5kOnQuc3VwZXJDYWxsLGNoYWluQmVmb3JlOm8oMSksY2hhaW5BZnRl cjpvKDIpLGlzSW5zdGFuY2VPZjpmdW5jdGlvbih0LGUpe2lmKHQgaW5zdGFu Y2VvZiBlKXJldHVybiEwO3ZhciBhLHI9dC5jb25zdHJ1Y3Rvci5fbWV0YTtp ZihyKWZvcihyPXIuYmFzZXMsYT1yLmxlbmd0aC0xO2E+PTA7LS1hKWlmKHJb YV09PT1lKXJldHVybiEwO3JldHVybiExfSxfc3R1YjpmdW5jdGlvbihlLGEs byxpKXt2YXIgbj1pW29dPXQuX2V4dHJhY3RDaGFpbihhLG8sImFyb3VuZCIp LHM9dC5fZXh0cmFjdENoYWluKGEsbywiYmVmb3JlIikucmV2ZXJzZSgpLGw9 dC5fZXh0cmFjdENoYWluKGEsbywiYWZ0ZXIiKTtyZXR1cm4gbj1lP3QuX3N0 dWJDaGFpblN1cGVyKG4sMT09ZT9mdW5jdGlvbihlKXtyZXR1cm4gdC5fc3R1 YkNoYWluKGUucmV2ZXJzZSgpKX06dC5fc3R1YkNoYWluLG8pOnQuX3N0dWJT dXBlcihuLG8pLHMubGVuZ3RofHxsLmxlbmd0aD9yKHQuX3N0dWJDaGFpbihz KSx0Ll9zdHViQ2hhaW4obCksbik6bnx8ZnVuY3Rpb24oKXt9fX0pLHR9KSxh KCJ3Y0RvY2tlci90eXBlcyIsW10sZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1 cm4gdC5ET0NLPXtNT0RBTDoibW9kYWwiLEZMT0FUOiJmbG9hdCIsVE9QOiJ0 b3AiLExFRlQ6ImxlZnQiLFJJR0hUOiJyaWdodCIsQk9UVE9NOiJib3R0b20i LFNUQUNLRUQ6InN0YWNrZWQifSx0LkxBWU9VVD17U0lNUExFOiJ3Y0xheW91 dFNpbXBsZSIsVEFCTEU6IndjTGF5b3V0VGFibGUifSx0LkVWRU5UPXtJTklU OiJwYW5lbEluaXQiLExPQURFRDoiZG9ja2VyTG9hZGVkIixVUERBVEVEOiJw YW5lbFVwZGF0ZWQiLFZJU0lCSUxJVFlfQ0hBTkdFRDoicGFuZWxWaXNpYmls aXR5Q2hhbmdlZCIsQkVHSU5fRE9DSzoicGFuZWxCZWdpbkRvY2siLEVORF9E T0NLOiJwYW5lbEVuZERvY2siLEdBSU5fRk9DVVM6InBhbmVsR2FpbkZvY3Vz IixMT1NUX0ZPQ1VTOiJwYW5lbExvc3RGb2N1cyIsQ0xPU0lORzoicGFuZWxD bG9zaW5nIixDTE9TRUQ6InBhbmVsQ2xvc2VkIixQRVJTSVNURU5UX0NMT1NF RDoicGFuZWxQZXJzaXN0ZW50Q2xvc2VkIixQRVJTSVNURU5UX09QRU5FRDoi cGFuZWxQZXJzaXN0ZW50T3BlbmVkIixCVVRUT046InBhbmVsQnV0dG9uIixB VFRBQ0hFRDoicGFuZWxBdHRhY2hlZCIsREVUQUNIRUQ6InBhbmVsRGV0YWNo ZWQiLE1PVkVfU1RBUlRFRDoicGFuZWxNb3ZlU3RhcnRlZCIsTU9WRV9FTkRF RDoicGFuZWxNb3ZlRW5kZWQiLE1PVkVEOiJwYW5lbE1vdmVkIixSRVNJWkVf U1RBUlRFRDoicGFuZWxSZXNpemVTdGFydGVkIixSRVNJWkVfRU5ERUQ6InBh bmVsUmVzaXplRW5kZWQiLFJFU0laRUQ6InBhbmVsUmVzaXplZCIsT1JERVJf Q0hBTkdFRDoicGFuZWxPcmRlckNoYW5nZWQiLFNDUk9MTEVEOiJwYW5lbFNj cm9sbGVkIixTQVZFX0xBWU9VVDoibGF5b3V0U2F2ZSIsUkVTVE9SRV9MQVlP VVQ6ImxheW91dFJlc3RvcmUiLENVU1RPTV9UQUJfQ0hBTkdFRDoiY3VzdG9t VGFiQ2hhbmdlZCIsQ1VTVE9NX1RBQl9DTE9TRUQ6ImN1c3RvbVRhYkNsb3Nl ZCJ9LHQuUEFORUxfUExBQ0VIT0xERVI9Il9fd2NEb2NrZXJQbGFjZWhvbGRl clBhbmVsIix0LkNPTExBUFNFRD0iX193Y0RvY2tlckNvbGxhcHNlZFBhbmVs Iix0Lk9SSUVOVEFUSU9OPXtWRVJUSUNBTDohMSxIT1JJWk9OVEFMOiEwfSx0 LlRBQj17VE9QOiJ0b3AiLExFRlQ6ImxlZnQiLFJJR0hUOiJyaWdodCIsQk9U VE9NOiJib3R0b20ifSx0fSksYSgid2NEb2NrZXIvYmFzZSIsWyJkY2wvZGNs Il0sZnVuY3Rpb24odCl7cmV0dXJuIHQobnVsbCx7Z2V0T3B0aW9uczpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9vcHRpb25zfHx0aGlzLmRvY2tlcigpLl9v cHRpb25zfHx7fX0sb3B0aW9uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMu Z2V0T3B0aW9ucygpW3RdfHxlfSxpbnN0YW5jZU9mOmZ1bmN0aW9uKHQsZSl7 cmV0dXJuIGU9ZXx8dGhpcywhKCFlfHwtMT09ZS5kZWNsYXJlZENsYXNzLmlu ZGV4T2YodCkpfSxkb2NrZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXR8fHRo aXMuX3BhcmVudDtlJiYhZS5pbnN0YW5jZU9mKCJ3Y0RvY2tlciIpOyllPWUu X3BhcmVudDtyZXR1cm4gZX0sX19nZXRDbGFzczpmdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5nZXRPcHRpb25zKClbdCsiQ2xhc3MiXX19KX0pLGEoIndjRG9j a2VyL3BhbmVsIixbImRjbC9kY2wiLCIuL3R5cGVzIiwiLi9iYXNlIl0sZnVu Y3Rpb24odCxlLGEpe3ZhciByPXQoYSx7ZGVjbGFyZWRDbGFzczoid2NQYW5l bCIsY29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLGEpe3RoaXMuJGNvbnRhaW5l cj1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuJGljb249bnVsbCx0aGlzLiR0 aXRsZT1udWxsLHRoaXMuJHRpdGxlVGV4dD1udWxsLHRoaXMuJGxvYWRpbmc9 bnVsbCx0aGlzLl9wYW5lbE9iamVjdD1udWxsLHRoaXMuX2luaXRpYWxpemVk PSExLHRoaXMuX2NvbGxhcHNlRGlyZWN0aW9uPXZvaWQgMCx0aGlzLl90eXBl PWUsdGhpcy5fdGl0bGU9ZSx0aGlzLl90aXRsZVZpc2libGU9ITAsdGhpcy5f b3B0aW9ucz1hLHRoaXMuX2xheW91dD1udWxsLHRoaXMuX2J1dHRvbkxpc3Q9 W10sdGhpcy5fYWN0dWFsUG9zPXt4Oi41LHk6LjV9LHRoaXMuX2FjdHVhbFNp emU9e3g6MCx5OjB9LHRoaXMuX3Jlc2l6ZURhdGE9e3RpbWU6LTEsdGltZW91 dDohMSxkZWx0YToxNTB9LHRoaXMuX3Bvcz17eDouNSx5Oi41fSx0aGlzLl9t b3ZlRGF0YT17dGltZTotMSx0aW1lb3V0OiExLGRlbHRhOjE1MH0sdGhpcy5f c2l6ZT17eDotMSx5Oi0xfSx0aGlzLl9taW5TaXplPXt4OjEwMCx5OjEwMH0s dGhpcy5fbWF4U2l6ZT17eDoxLzAseToxLzB9LHRoaXMuX3Njcm9sbD17eDow LHk6MH0sdGhpcy5fc2Nyb2xsYWJsZT17eDohMCx5OiEwfSx0aGlzLl9jb2xs YXBzaWJsZT0hMCx0aGlzLl9vdmVyZmxvd1Zpc2libGU9ITEsdGhpcy5fbW92 ZWFibGU9ITAsdGhpcy5fY2xvc2VhYmxlPSEwLHRoaXMuX3Jlc2l6ZVZpc2li bGU9ITAsdGhpcy5faXNWaXNpYmxlPSExLHRoaXMuX2V2ZW50cz17fSx0aGlz Ll9faW5pdCgpfSx0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4idW5kZWZpbmVk IiE9dHlwZW9mIHQmJih0PT09ITE/KHRoaXMuX3RpdGxlVmlzaWJsZT0hMSx0 aGlzLiR0aXRsZVRleHQuaHRtbCh0aGlzLl90eXBlKSk6KHRoaXMuX3RpdGxl PXQsdGhpcy4kdGl0bGVUZXh0Lmh0bWwodCkpLHRoaXMuJGljb24mJnRoaXMu JHRpdGxlVGV4dC5wcmVwZW5kKHRoaXMuJGljb24pLHRoaXMuX3BhcmVudCYm dGhpcy5fcGFyZW50Lmluc3RhbmNlT2YoIndjRnJhbWUiKSYmdGhpcy5fcGFy ZW50Ll9fdXBkYXRlVGFicygpKSx0aGlzLl90aXRsZX0saW5mbzpmdW5jdGlv bigpe3JldHVybiB0aGlzLmRvY2tlcigpLnBhbmVsVHlwZUluZm8odGhpcy5f dHlwZSl9LGxheW91dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXlvdXR9 LGZvY3VzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZG9ja2VyKCk7aWYoZSl7 ZS5fX2ZvY3VzKHRoaXMuX3BhcmVudCx0KTtmb3IodmFyIGE9MDthPHRoaXMu X3BhcmVudC5fcGFuZWxMaXN0Lmxlbmd0aDsrK2EpaWYodGhpcy5fcGFyZW50 Ll9wYW5lbExpc3RbYV09PT10aGlzJiZ0aGlzLl9wYXJlbnQuX2N1clRhYiE9 PWEpe3RoaXMuX3BhcmVudC5wYW5lbChhKTticmVha319fSxjb2xsYXBzZURp cmVjdGlvbjpmdW5jdGlvbih0KXt0aGlzLl9jb2xsYXBzZURpcmVjdGlvbj10 fSxpc1Zpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWaXNpYmxl fSxpc0Zsb2F0aW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudCYm dGhpcy5fcGFyZW50Lmluc3RhbmNlT2YoIndjRnJhbWUiKT90aGlzLl9wYXJl bnQuX2lzRmxvYXRpbmc6ITF9LGlzSW5Gb2N1czpmdW5jdGlvbigpe3ZhciB0 PXRoaXMuZG9ja2VyKCk7cmV0dXJuIHQmJnRoaXMuX3BhcmVudCYmdGhpcy5f cGFyZW50Lmluc3RhbmNlT2YoIndjRnJhbWUiKT90aGlzLl9wYXJlbnQ9PT10 Ll9mb2N1c0ZyYW1lOiExfSxhZGRCdXR0b246ZnVuY3Rpb24odCxlLGEscixv LGkpe3RoaXMuX2J1dHRvbkxpc3QucHVzaCh7bmFtZTp0LGNsYXNzTmFtZTpl LHRvZ2dsZUNsYXNzTmFtZTppLHRleHQ6YSx0aXA6cixpc1RvZ2dsYWJsZTpv LGlzVG9nZ2xlZDohMX0pLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Lmlu c3RhbmNlT2YoIndjRnJhbWUiKSYmdGhpcy5fcGFyZW50Ll9fdXBkYXRlKCl9 LHJlbW92ZUJ1dHRvbjpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMu X2J1dHRvbkxpc3QubGVuZ3RoOysrZSlpZih0aGlzLl9idXR0b25MaXN0W2Vd Lm5hbWU9PT10KXJldHVybiB0aGlzLl9idXR0b25MaXN0LnNwbGljZShlLDEp LHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Lmluc3RhbmNlT2YoIndjRnJh bWUiKSYmdGhpcy5fcGFyZW50Ll9fb25UYWJDaGFuZ2UoKSx0aGlzLl9wYXJl bnQmJnRoaXMuX3BhcmVudC5pbnN0YW5jZU9mKCJ3Y0ZyYW1lIikmJnRoaXMu X3BhcmVudC5fX3VwZGF0ZSgpLCEwO3JldHVybiExfSxidXR0b25TdGF0ZTpm dW5jdGlvbih0LGUpe2Zvcih2YXIgYT0wO2E8dGhpcy5fYnV0dG9uTGlzdC5s ZW5ndGg7KythKWlmKHRoaXMuX2J1dHRvbkxpc3RbYV0ubmFtZT09PXQpcmV0 dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBlJiYodGhpcy5fYnV0dG9uTGlzdFth XS5pc1RvZ2dsZWQ9ZSx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5pbnN0 YW5jZU9mKCJ3Y0ZyYW1lIikmJnRoaXMuX3BhcmVudC5fX29uVGFiQ2hhbmdl KCkpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Lmluc3RhbmNlT2YoIndj RnJhbWUiKSYmdGhpcy5fcGFyZW50Ll9fdXBkYXRlKCksdGhpcy5fYnV0dG9u TGlzdFthXS5pc1RvZ2dsZWQ7cmV0dXJuITF9LGluaXRQb3M6ZnVuY3Rpb24o dCxlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQpe3ZhciBhPXRoaXMuZG9j a2VyKCk7YT90aGlzLl9wb3MueD1hLl9fc3RyaW5nVG9QZXJjZW50KHQsYS4k Y29udGFpbmVyLndpZHRoKCkpOnRoaXMuX3Bvcy54PXR9aWYoInVuZGVmaW5l ZCIhPXR5cGVvZiBlKXt2YXIgYT10aGlzLmRvY2tlcigpO2E/dGhpcy5fcG9z Lnk9YS5fX3N0cmluZ1RvUGVyY2VudChlLGEuJGNvbnRhaW5lci5oZWlnaHQo KSk6dGhpcy5fcG9zLnk9ZX1yZXR1cm57eDp0aGlzLl9wb3MueCx5OnRoaXMu X3Bvcy55fX0saW5pdFNpemU6ZnVuY3Rpb24odCxlKXtpZigidW5kZWZpbmVk IiE9dHlwZW9mIHQpe3ZhciBhPXRoaXMuZG9ja2VyKCk7YT90aGlzLl9zaXpl Lng9YS5fX3N0cmluZ1RvUGl4ZWwodCxhLiRjb250YWluZXIud2lkdGgoKSk6 dGhpcy5fc2l6ZS54PXR9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBlKXt2YXIg YT10aGlzLmRvY2tlcigpO2E/dGhpcy5fc2l6ZS55PWEuX19zdHJpbmdUb1Bp eGVsKGUsYS4kY29udGFpbmVyLmhlaWdodCgpKTp0aGlzLl9zaXplLnk9ZX1y ZXR1cm57eDp0aGlzLl9zaXplLngseTp0aGlzLl9zaXplLnl9fSxtaW5TaXpl OmZ1bmN0aW9uKHQsZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0KXt2YXIg YT10aGlzLmRvY2tlcigpO2E/dGhpcy5fbWluU2l6ZS54PWEuX19zdHJpbmdU b1BpeGVsKHQsYS4kY29udGFpbmVyLndpZHRoKCkpOnRoaXMuX21pblNpemUu eD10fWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgZSl7dmFyIGE9dGhpcy5kb2Nr ZXIoKTthP3RoaXMuX21pblNpemUueT1hLl9fc3RyaW5nVG9QaXhlbChlLGEu JGNvbnRhaW5lci5oZWlnaHQoKSk6dGhpcy5fbWluU2l6ZS55PWV9cmV0dXJu e3g6dGhpcy5fbWluU2l6ZS54LHk6dGhpcy5fbWluU2l6ZS55fX0sbWF4U2l6 ZTpmdW5jdGlvbih0LGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdCl7dmFy IGE9dGhpcy5kb2NrZXIoKTthP3RoaXMuX21heFNpemUueD1hLl9fc3RyaW5n VG9QaXhlbCh0LGEuJGNvbnRhaW5lci53aWR0aCgpKTp0aGlzLl9tYXhTaXpl Lng9dH1pZigidW5kZWZpbmVkIiE9dHlwZW9mIGUpe3ZhciBhPXRoaXMuZG9j a2VyKCk7YT90aGlzLl9tYXhTaXplLnk9YS5fX3N0cmluZ1RvUGl4ZWwoZSxh LiRjb250YWluZXIuaGVpZ2h0KCkpOnRoaXMuX21heFNpemUueT1lfXJldHVy bnt4OnRoaXMuX21heFNpemUueCx5OnRoaXMuX21heFNpemUueX19LHdpZHRo OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNvbnRhaW5lcj90aGlzLiRjb250 YWluZXIud2lkdGgoKTowfSxoZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy4kY29udGFpbmVyP3RoaXMuJGNvbnRhaW5lci5oZWlnaHQoKTowfSxpY29u OmZ1bmN0aW9uKHQpe3RoaXMuJGljb258fCh0aGlzLiRpY29uPSQoIjxkaXY+ IiksdGhpcy4kdGl0bGVUZXh0LnByZXBlbmQodGhpcy4kaWNvbikpLHRoaXMu JGljb24ucmVtb3ZlQ2xhc3MoKSx0aGlzLiRpY29uLmFkZENsYXNzKCJ3Y1Rh Ykljb24gIit0KSx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5pbnN0YW5j ZU9mKCJ3Y0ZyYW1lIikmJnRoaXMuX3BhcmVudC5fX3VwZGF0ZVRhYnMoKX0s ZmFpY29uOmZ1bmN0aW9uKHQpe3RoaXMuJGljb258fCh0aGlzLiRpY29uPSQo IjxkaXY+IiksdGhpcy4kdGl0bGVUZXh0LnByZXBlbmQodGhpcy4kaWNvbikp LHRoaXMuJGljb24ucmVtb3ZlQ2xhc3MoKSx0aGlzLiRpY29uLmFkZENsYXNz KCJ3Y1RhYkljb24gZmEgZmEtZncgZmEtIit0KSx0aGlzLl9wYXJlbnQmJnRo aXMuX3BhcmVudC5pbnN0YW5jZU9mKCJ3Y0ZyYW1lIikmJnRoaXMuX3BhcmVu dC5fX3VwZGF0ZVRhYnMoKX0sc2Nyb2xsYWJsZTpmdW5jdGlvbih0LGUpe3Jl dHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdCYmKHRoaXMuX3Njcm9sbGFibGUu eD10PyEwOiExLHRoaXMuX3Njcm9sbGFibGUueT1lPyEwOiExKSx7eDp0aGlz Ll9zY3JvbGxhYmxlLngseTp0aGlzLl9zY3JvbGxhYmxlLnl9fSxzY3JvbGw6 ZnVuY3Rpb24odCxlLGEpe3JldHVybiB0aGlzLiRjb250YWluZXI/KCJ1bmRl ZmluZWQiIT10eXBlb2YgdCYmKGE/dGhpcy4kY29udGFpbmVyLnBhcmVudCgp LnN0b3AoKS5hbmltYXRlKHtzY3JvbGxMZWZ0OnQsc2Nyb2xsVG9wOmV9LGEp Oih0aGlzLiRjb250YWluZXIucGFyZW50KCkuc2Nyb2xsTGVmdCh0KSx0aGlz LiRjb250YWluZXIucGFyZW50KCkuc2Nyb2xsVG9wKGUpKSkse3g6dGhpcy4k Y29udGFpbmVyLnBhcmVudCgpLnNjcm9sbExlZnQoKSx5OnRoaXMuJGNvbnRh aW5lci5wYXJlbnQoKS5zY3JvbGxUb3AoKX0pOnt4OjAseTowfX0sY29sbGFw c2libGU6ZnVuY3Rpb24odCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0 JiYodGhpcy5fY29sbGFwc2libGU9dD8hMDohMSksdGhpcy5fY29sbGFwc2li bGV9LG92ZXJmbG93VmlzaWJsZTpmdW5jdGlvbih0KXtyZXR1cm4idW5kZWZp bmVkIiE9dHlwZW9mIHQmJih0aGlzLl9vdmVyZmxvd1Zpc2libGU9dD8hMDoh MSksdGhpcy5fb3ZlcmZsb3dWaXNpYmxlfSxyZXNpemVWaXNpYmxlOmZ1bmN0 aW9uKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdCYmKHRoaXMuX3Jl c2l6ZVZpc2libGU9dD8hMDohMSksdGhpcy5fcmVzaXplVmlzaWJsZX0sbW92 ZWFibGU6ZnVuY3Rpb24odCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0 JiYodGhpcy5fbW92ZWFibGU9dD8hMDohMSx0aGlzLiR0aXRsZS50b2dnbGVD bGFzcygid2NOb3RNb3ZlYWJsZSIsIXRoaXMuX21vdmVhYmxlKSksdGhpcy5f bW92ZWFibGV9LGNsb3NlYWJsZTpmdW5jdGlvbih0KXtyZXR1cm4idW5kZWZp bmVkIiE9dHlwZW9mIHQmJih0aGlzLl9jbG9zZWFibGU9dD8hMDohMSx0aGlz Ll9wYXJlbnQmJnRoaXMuX3BhcmVudC5fX3VwZGF0ZSgpKSx0aGlzLl9jbG9z ZWFibGV9LGNsb3NlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb2NrZXIoKTt0 JiZ0Ll9fY2xvc2VQYW5lbCh0aGlzKX0sc3RhcnRMb2FkaW5nOmZ1bmN0aW9u KHQsZSxhKXtpZighdGhpcy4kbG9hZGluZyl7dGhpcy4kbG9hZGluZz0kKCc8 ZGl2IGNsYXNzPSJ3Y0xvYWRpbmdDb250YWluZXIiPjwvZGl2PicpLHRoaXMu JGNvbnRhaW5lci5hcHBlbmQodGhpcy4kbG9hZGluZyk7dmFyIHI9JCgnPGRp diBjbGFzcz0id2NMb2FkaW5nQmFja2dyb3VuZCI+PC9kaXY+Jyk7Im51bWJl ciIhPXR5cGVvZiBlJiYoZT0uNCksdGhpcy4kbG9hZGluZy5hcHBlbmQocik7 dmFyIG89JCgnPGRpdiBjbGFzcz0id2NMb2FkaW5nSWNvbkNvbnRhaW5lciI+ PGkgY2xhc3M9IndjTG9hZGluZ0ljb24gJyt0aGlzLmRvY2tlcigpLl9vcHRp b25zLmxvYWRpbmdDbGFzcysnIj48L2k+PC9kaXY+Jyk7aWYodGhpcy4kbG9h ZGluZy5hcHBlbmQobyksdCl7dmFyIGk9JCgnPHNwYW4gY2xhc3M9IndjTG9h ZGluZ0xhYmVsIj4nK3QrIjwvc3Bhbj4iKTt0aGlzLiRsb2FkaW5nLmFwcGVu ZChpKX0ibnVtYmVyIiE9dHlwZW9mIGEmJihhPTEpLHRoaXMuZG9ja2VyKCku JGxvYWRpbmcmJihlPTAsYT0wKSxyLmNzcygib3BhY2l0eSIsZSksby5jc3Mo Im9wYWNpdHkiLGEpLGkmJmkuY3NzKCJvcGFjaXR5IixhKX19LGZpbmlzaExv YWRpbmc6ZnVuY3Rpb24odCl7aWYodGhpcy4kbG9hZGluZylpZih0PjApe3Zh ciBlPXRoaXM7dGhpcy4kbG9hZGluZy5mYWRlT3V0KHQsZnVuY3Rpb24oKXtl LiRsb2FkaW5nLnJlbW92ZSgpLGUuJGxvYWRpbmc9bnVsbCxlLmRvY2tlcigp Ll9fdGVzdExvYWRGaW5pc2hlZCgpfSl9ZWxzZSB0aGlzLiRsb2FkaW5nLnJl bW92ZSgpLHRoaXMuJGxvYWRpbmc9bnVsbCx0aGlzLmRvY2tlcigpLl9fdGVz dExvYWRGaW5pc2hlZCgpfSxvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0Pyh0 aGlzLl9ldmVudHNbdF18fCh0aGlzLl9ldmVudHNbdF09W10pLC0xIT09dGhp cy5fZXZlbnRzW3RdLmluZGV4T2YoZSk/ITE6KHRoaXMuX2V2ZW50c1t0XS5w dXNoKGUpLCEwKSk6ITF9LG9mZjpmdW5jdGlvbih0LGUpe2lmKCJ1bmRlZmlu ZWQiPT10eXBlb2YgdClyZXR1cm4gdm9pZCh0aGlzLl9ldmVudHM9e30pO2lm KHRoaXMuX2V2ZW50c1t0XSlpZigidW5kZWZpbmVkIj09dHlwZW9mIGUpdGhp cy5fZXZlbnRzW3RdPVtdO2Vsc2UgZm9yKHZhciBhPTA7YTx0aGlzLl9ldmVu dHNbdF0ubGVuZ3RoOysrYSlpZih0aGlzLl9ldmVudHNbdF1bYV09PT1lKXt0 aGlzLl9ldmVudHNbdF0uc3BsaWNlKGEsMSk7YnJlYWt9fSx0cmlnZ2VyOmZ1 bmN0aW9uKHQsZSl7dmFyIGE9dGhpcy5kb2NrZXIoKTtyZXR1cm4gYT9hLnRy aWdnZXIodCxlKTpbXX0sX19pbml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5f b3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5sYXlvdXR8fCJ3Y0xheW91dFRhYmxl Ijt0aGlzLl9sYXlvdXQ9bmV3KHRoaXMuZG9ja2VyKCkuX19nZXRDbGFzcyh0 KSkodGhpcy4kY29udGFpbmVyLHRoaXMpLHRoaXMuJHRpdGxlPSQoJzxkaXYg Y2xhc3M9IndjUGFuZWxUYWIiPicpLHRoaXMuJHRpdGxlVGV4dD0kKCI8ZGl2 PiIrdGhpcy5fdGl0bGUrIjwvZGl2PiIpLHRoaXMuJHRpdGxlLmFwcGVuZCh0 aGlzLiR0aXRsZVRleHQpLHRoaXMuX29wdGlvbnMuaGFzT3duUHJvcGVydHko InRpdGxlIikmJnRoaXMudGl0bGUodGhpcy5fb3B0aW9ucy50aXRsZSksdGhp cy5fb3B0aW9ucy5pY29uJiZ0aGlzLmljb24odGhpcy5fb3B0aW9ucy5pY29u KSx0aGlzLl9vcHRpb25zLmZhaWNvbiYmdGhpcy5mYWljb24odGhpcy5fb3B0 aW9ucy5mYWljb24pfSxfX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMu ZG9ja2VyKCk7aWYodCYmKHRoaXMuX2xheW91dC5fX3VwZGF0ZSgpLHRoaXMu JGNvbnRhaW5lcikpe2lmKHRoaXMuX3Jlc2l6ZVZpc2libGU/dGhpcy5fcGFy ZW50LiRmcmFtZS5yZW1vdmVDbGFzcygid2NIaWRlT25SZXNpemUiKTp0aGlz Ll9wYXJlbnQuJGZyYW1lLmFkZENsYXNzKCJ3Y0hpZGVPblJlc2l6ZSIpLHRo aXMuX2luaXRpYWxpemVkKXRoaXMuX190cmlnZ2VyKGUuRVZFTlQuVVBEQVRF RCk7ZWxzZXt0aGlzLl9pbml0aWFsaXplZD0hMDt2YXIgYT10aGlzO3NldFRp bWVvdXQoZnVuY3Rpb24oKXthLl9fdHJpZ2dlcihlLkVWRU5ULklOSVQpLHQu X190ZXN0TG9hZEZpbmlzaGVkKCl9LDApfXZhciByPXRoaXMuJGNvbnRhaW5l ci53aWR0aCgpLG89dGhpcy4kY29udGFpbmVyLmhlaWdodCgpOyh0aGlzLl9h Y3R1YWxTaXplLnghPT1yfHx0aGlzLl9hY3R1YWxTaXplLnkhPT1vKSYmKHRo aXMuX3Jlc2l6ZURhdGEudGltZT1uZXcgRGF0ZSx0aGlzLl9yZXNpemVEYXRh LnRpbWVvdXR8fCh0aGlzLl9yZXNpemVEYXRhLnRpbWVvdXQ9ITAsc2V0VGlt ZW91dCh0aGlzLl9fcmVzaXplRW5kLmJpbmQodGhpcyksdGhpcy5fcmVzaXpl RGF0YS5kZWx0YSksdGhpcy5fX3RyaWdnZXIoZS5FVkVOVC5SRVNJWkVfU1RB UlRFRCx7d2lkdGg6dGhpcy5fYWN0dWFsU2l6ZS54LGhlaWdodDp0aGlzLl9h Y3R1YWxTaXplLnl9KSksdGhpcy5fYWN0dWFsU2l6ZS54PXIsdGhpcy5fYWN0 dWFsU2l6ZS55PW8sdGhpcy5fX3RyaWdnZXIoZS5FVkVOVC5SRVNJWkVELHt3 aWR0aDp0aGlzLl9hY3R1YWxTaXplLngsaGVpZ2h0OnRoaXMuX2FjdHVhbFNp emUueX0pKTt2YXIgaT10aGlzLiRjb250YWluZXIub2Zmc2V0KCk7KHRoaXMu X2FjdHVhbFBvcy54IT09aS5sZWZ0fHx0aGlzLl9hY3R1YWxQb3MueSE9PWku dG9wKSYmKHRoaXMuX21vdmVEYXRhLnRpbWU9bmV3IERhdGUsdGhpcy5fbW92 ZURhdGEudGltZW91dHx8KHRoaXMuX21vdmVEYXRhLnRpbWVvdXQ9ITAsc2V0 VGltZW91dCh0aGlzLl9fbW92ZUVuZC5iaW5kKHRoaXMpLHRoaXMuX21vdmVE YXRhLmRlbHRhKSx0aGlzLl9fdHJpZ2dlcihlLkVWRU5ULk1PVkVfU1RBUlRF RCx7eDp0aGlzLl9hY3R1YWxQb3MueCx5OnRoaXMuX2FjdHVhbFBvcy55fSkp LHRoaXMuX2FjdHVhbFBvcy54PWkubGVmdCx0aGlzLl9hY3R1YWxQb3MueT1p LnRvcCx0aGlzLl9fdHJpZ2dlcihlLkVWRU5ULk1PVkVELHt4OnRoaXMuX2Fj dHVhbFBvcy54LHk6dGhpcy5fYWN0dWFsUG9zLnl9KSl9fSxfX3Jlc2l6ZUVu ZDpmdW5jdGlvbigpe25ldyBEYXRlLXRoaXMuX3Jlc2l6ZURhdGEudGltZTx0 aGlzLl9yZXNpemVEYXRhLmRlbHRhP3NldFRpbWVvdXQodGhpcy5fX3Jlc2l6 ZUVuZC5iaW5kKHRoaXMpLHRoaXMuX3Jlc2l6ZURhdGEuZGVsdGEpOih0aGlz Ll9yZXNpemVEYXRhLnRpbWVvdXQ9ITEsdGhpcy5fX3RyaWdnZXIoZS5FVkVO VC5SRVNJWkVfRU5ERUQse3dpZHRoOnRoaXMuX2FjdHVhbFNpemUueCxoZWln aHQ6dGhpcy5fYWN0dWFsU2l6ZS55fSkpfSxfX21vdmVFbmQ6ZnVuY3Rpb24o KXtuZXcgRGF0ZS10aGlzLl9tb3ZlRGF0YS50aW1lPHRoaXMuX21vdmVEYXRh LmRlbHRhP3NldFRpbWVvdXQodGhpcy5fX21vdmVFbmQuYmluZCh0aGlzKSx0 aGlzLl9tb3ZlRGF0YS5kZWx0YSk6KHRoaXMuX21vdmVEYXRhLnRpbWVvdXQ9 ITEsdGhpcy5fX3RyaWdnZXIoZS5FVkVOVC5NT1ZFX0VOREVELHt4OnRoaXMu X2FjdHVhbFBvcy54LHk6dGhpcy5fYWN0dWFsUG9zLnl9KSl9LF9faXNWaXNp YmxlOmZ1bmN0aW9uKHQpe3RoaXMuX2lzVmlzaWJsZSE9PXQmJih0aGlzLl9p c1Zpc2libGU9dCx0aGlzLl9fdHJpZ2dlcihlLkVWRU5ULlZJU0lCSUxJVFlf Q0hBTkdFRCx0aGlzLl9pc1Zpc2libGUpKX0sX19zYXZlOmZ1bmN0aW9uKCl7 dmFyIHQ9e307cmV0dXJuIHQudHlwZT0id2NQYW5lbCIsdC5wYW5lbFR5cGU9 dGhpcy5fdHlwZSx0LnNpemU9e3g6dGhpcy5fc2l6ZS54LHk6dGhpcy5fc2l6 ZS55fSx0LmN1c3RvbURhdGE9e30sdGhpcy5fX3RyaWdnZXIoZS5FVkVOVC5T QVZFX0xBWU9VVCx0LmN1c3RvbURhdGEpLHR9LF9fcmVzdG9yZTpmdW5jdGlv bih0LGEpe3Quc2l6ZSYmKHRoaXMuX3NpemUueD10LnNpemUueCx0aGlzLl9z aXplLnk9dC5zaXplLnkpLHRoaXMuX190cmlnZ2VyKGUuRVZFTlQuUkVTVE9S RV9MQVlPVVQsdC5jdXN0b21EYXRhKX0sX190cmlnZ2VyOmZ1bmN0aW9uKHQs ZSl7aWYoIXQpcmV0dXJuITE7dmFyIGE9W107aWYodGhpcy5fZXZlbnRzW3Rd KWZvcih2YXIgcj10aGlzLl9ldmVudHNbdF0uc2xpY2UoMCksbz0wO288ci5s ZW5ndGg7KytvKWEucHVzaChyW29dLmNhbGwodGhpcyxlKSk7cmV0dXJuIGF9 LF9fcmVjdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJGNvbnRhaW5lci5vZmZz ZXQoKSxlPXRoaXMuJGNvbnRhaW5lci53aWR0aCgpLGE9dGhpcy4kY29udGFp bmVyLmhlaWdodCgpO3JldHVybnt4OnQubGVmdCx5OnQudG9wLHc6ZSxoOmF9 fSxfX2NvbnRhaW5lcjpmdW5jdGlvbih0KXtyZXR1cm4idW5kZWZpbmVkIj09 dHlwZW9mIHQ/dGhpcy4kY29udGFpbmVyOih0aGlzLiRjb250YWluZXI9dCx0 aGlzLiRjb250YWluZXI/KHRoaXMuX2xheW91dC5fX2NvbnRhaW5lcih0aGlz LiRjb250YWluZXIpLHRoaXMuJGxvYWRpbmcmJnRoaXMuJGNvbnRhaW5lci5h cHBlbmQodGhpcy4kbG9hZGluZykpOih0aGlzLl9sYXlvdXQuX19jb250YWlu ZXIobnVsbCksdGhpcy5maW5pc2hMb2FkaW5nKCkpLHRoaXMuJGNvbnRhaW5l cil9LF9fZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3BhbmVsT2JqZWN0PW51 bGwsdGhpcy5vZmYoKSx0aGlzLl9fY29udGFpbmVyKG51bGwpLHRoaXMuX3Bh cmVudD1udWxsfX0pO3JldHVybiByfSksYSgid2NEb2NrZXIvZ2hvc3QiLFsi ZGNsL2RjbCIsIi4vdHlwZXMiXSxmdW5jdGlvbih0LGUpe3ZhciBhPXQobnVs bCx7ZGVjbGFyZWRDbGFzczoid2NHaG9zdCIsY29uc3RydWN0b3I6ZnVuY3Rp b24odCxlLGEpe3RoaXMuJGdob3N0PW51bGwsdGhpcy5fcmVjdCx0aGlzLl9h bmNob3JNb3VzZT0hMSx0aGlzLl9hbmNob3I9bnVsbCx0aGlzLl9kb2NrZXI9 YSx0aGlzLl9vdXRlcj1hLl9fZmluZElubmVyKCksdGhpcy5fb3V0ZXImJnRo aXMuX291dGVyLmluc3RhbmNlT2YoIndjU3BsaXR0ZXIiKSYmKHRoaXMuX2lu bmVyPXRoaXMuX291dGVyLnJpZ2h0KCkpLHRoaXMuX19pbml0KHQsZSl9LHVw ZGF0ZTpmdW5jdGlvbih0KXt0aGlzLl9fbW92ZSh0KTtmb3IodmFyIGU9MDtl PHRoaXMuX2RvY2tlci5fZmxvYXRpbmdMaXN0Lmxlbmd0aDsrK2Upe3ZhciBh PXRoaXMuX2RvY2tlci5fZmxvYXRpbmdMaXN0W2VdLl9fcmVjdCgpO2lmKHQu eD5hLngmJnQueT5hLnkmJnQueDxhLngrYS53JiZ0Lnk8YS55K2EuaClyZXR1 cm4gdm9pZCh0aGlzLl9kb2NrZXIuX2Zsb2F0aW5nTGlzdFtlXS5fX2NoZWNr QW5jaG9yRHJvcCh0LCExLHRoaXMsITAsdm9pZCAwLCEwKT90aGlzLl9hbmNo b3IucGFuZWw9dGhpcy5fZG9ja2VyLl9mbG9hdGluZ0xpc3RbZV0ucGFuZWwo KTp0aGlzLmFuY2hvcih0LG51bGwpKX1mb3IodmFyIGU9MDtlPHRoaXMuX2Rv Y2tlci5fZnJhbWVMaXN0Lmxlbmd0aDsrK2Upe3ZhciBhPXRoaXMuX2RvY2tl ci5fZnJhbWVMaXN0W2VdLl9fcmVjdCgpO2lmKHQueD5hLngmJnQueT5hLnkm JnQueDxhLngrYS53JiZ0Lnk8YS55K2EuaClyZXR1cm4gdm9pZCh0aGlzLl9k b2NrZXIuX2ZyYW1lTGlzdFtlXS5fX2NoZWNrQW5jaG9yRHJvcCh0LCExLHRo aXMsITAsdm9pZCAwLCEwKT90aGlzLl9hbmNob3IucGFuZWw9dGhpcy5fZG9j a2VyLl9mcmFtZUxpc3RbZV0ucGFuZWwoKTp0aGlzLmFuY2hvcih0LG51bGwp KX19LGFuY2hvcjpmdW5jdGlvbih0LGEpe2lmKCJ1bmRlZmluZWQiPT10eXBl b2YgdClyZXR1cm4gdGhpcy5fYW5jaG9yO2lmKCFhfHwhdGhpcy5fYW5jaG9y fHxhLmxvYyE9PXRoaXMuX2FuY2hvci5sb2N8fGEuaXRlbSE9PXRoaXMuX2Fu Y2hvci5pdGVtKXt2YXIgcj17eDpwYXJzZUludCh0aGlzLiRnaG9zdC5jc3Mo ImxlZnQiKSkseTpwYXJzZUludCh0aGlzLiRnaG9zdC5jc3MoInRvcCIpKSx3 OnBhcnNlSW50KHRoaXMuJGdob3N0LmNzcygid2lkdGgiKSksaDpwYXJzZUlu dCh0aGlzLiRnaG9zdC5jc3MoImhlaWdodCIpKX07aWYodGhpcy5fYW5jaG9y TW91c2U9e3g6ci54LXQueCx5OnIueS10Lnl9LHRoaXMuX3JlY3QueD0tdGhp cy5fYW5jaG9yTW91c2UueCx0aGlzLl9yZWN0Lnk9LXRoaXMuX2FuY2hvck1v dXNlLnksIWEpe2lmKCF0aGlzLl9hbmNob3IpcmV0dXJuO2lmKHRoaXMuX2Rv Y2tlci5fZHJhZ2dpbmdGcmFtZSYmdGhpcy5fZG9ja2VyLl9kcmFnZ2luZ0Zy YW1lLiRjb250YWluZXIpe3ZhciBvPXRoaXMuX2RvY2tlci5fZHJhZ2dpbmdG cmFtZS5fcGFuZWxMaXN0WzBdLl9vcHRpb25zLmRldGFjaFRvV2lkdGh8fHRo aXMuX2RvY2tlci5fb3B0aW9ucy5kZXRhY2hUb1dpZHRofHx0aGlzLl9yZWN0 LncsaT10aGlzLl9kb2NrZXIuX2RyYWdnaW5nRnJhbWUuX3BhbmVsTGlzdFsw XS5fb3B0aW9ucy5kZXRhY2hUb0hlaWdodHx8dGhpcy5fZG9ja2VyLl9vcHRp b25zLmRldGFjaFRvSGVpZ2h0fHx0aGlzLl9yZWN0Lmg7dGhpcy5fcmVjdC53 PXRoaXMuX2RvY2tlci5fX3N0cmluZ1RvUGl4ZWwobyx0aGlzLl9kb2NrZXIu JGNvbnRhaW5lci53aWR0aCgpKSx0aGlzLl9yZWN0Lmg9dGhpcy5fZG9ja2Vy Ll9fc3RyaW5nVG9QaXhlbChpLHRoaXMuX2RvY2tlci4kY29udGFpbmVyLmhl aWdodCgpKX1yZXR1cm4gdGhpcy5fYW5jaG9yPW51bGwsdGhpcy4kZ2hvc3Qu c2hvdygpLHZvaWQgdGhpcy4kZ2hvc3Quc3RvcCgpLmFuaW1hdGUoe29wYWNp dHk6LjMsIm1hcmdpbi1sZWZ0Ijp0aGlzLl9yZWN0LngtdGhpcy5fcmVjdC53 LzIrInB4IiwibWFyZ2luLXRvcCI6dGhpcy5fcmVjdC55LTEwKyJweCIsd2lk dGg6dGhpcy5fcmVjdC53KyJweCIsaGVpZ2h0OnRoaXMuX3JlY3QuaCsicHgi fSwxNTApfXRoaXMuX2FuY2hvcj1hO3ZhciBuPS44O2Euc2VsZiYmYS5sb2M9 PT1lLkRPQ0suU1RBQ0tFRD8obj0wLHRoaXMuJGdob3N0LmhpZGUoKSk6dGhp cy4kZ2hvc3Quc2hvdygpLHRoaXMuJGdob3N0LnN0b3AoKS5hbmltYXRlKHtv cGFjaXR5Om4sIm1hcmdpbi1sZWZ0IjoiMnB4IiwibWFyZ2luLXRvcCI6IjJw eCIsYm9yZGVyOiIwcHgiLGxlZnQ6YS54KyJweCIsdG9wOmEueSsicHgiLHdp ZHRoOmEudysicHgiLGhlaWdodDphLmgrInB4In0sMTUwKX19LHJlY3Q6ZnVu Y3Rpb24oKXtyZXR1cm57eDp0aGlzLiRnaG9zdC5vZmZzZXQoKS5sZWZ0LHk6 dGhpcy4kZ2hvc3Qub2Zmc2V0KCkudG9wLHc6cGFyc2VJbnQodGhpcy4kZ2hv c3QuY3NzKCJ3aWR0aCIpKSxoOnBhcnNlSW50KHRoaXMuJGdob3N0LmNzcygi aGVpZ2h0IikpLHRhYk9yaWVudGF0aW9uOnRoaXMuX2FuY2hvciYmdGhpcy5f YW5jaG9yLnRhYn19LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9fZGVzdHJv eSgpfSxfX2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLiRnaG9zdD0kKCc8ZGl2 IGNsYXNzPSJ3Y0dob3N0Ij4nKS5jc3MoIm9wYWNpdHkiLDApLmNzcygidG9w Iix0LnkrInB4IikuY3NzKCJsZWZ0Iix0LngrInB4IikuY3NzKCJ3aWR0aCIs dC53KyJweCIpLmNzcygiaGVpZ2h0Iix0LmgrInB4IiksdGhpcy5fYW5jaG9y TW91c2U9e3g6dC54LWUueCx5OnQueS1lLnl9LHRoaXMuX3JlY3Q9e3g6LXRo aXMuX2FuY2hvck1vdXNlLngseTotdGhpcy5fYW5jaG9yTW91c2UueSx3OnQu dyxoOnQuaH0sJCgiYm9keSIpLmFwcGVuZCh0aGlzLiRnaG9zdCksdGhpcy5h bmNob3IoZSx0KX0sX19tb3ZlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9hbmNo b3Ipe3ZhciBlPXBhcnNlSW50KHRoaXMuJGdob3N0LmNzcygibGVmdCIpKSxh PXBhcnNlSW50KHRoaXMuJGdob3N0LmNzcygidG9wIikpO2U9dC54K3RoaXMu X2FuY2hvck1vdXNlLngsYT10LnkrdGhpcy5fYW5jaG9yTW91c2UueSx0aGlz LiRnaG9zdC5jc3MoImxlZnQiLGUrInB4IiksdGhpcy4kZ2hvc3QuY3NzKCJ0 b3AiLGErInB4Iil9fSxfX3JlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f cmVjdH0sX19kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy4kZ2hvc3Quc3RvcCgp LmFuaW1hdGUoe29wYWNpdHk6MH0se2R1cmF0aW9uOjE3NSxjb21wbGV0ZTpm dW5jdGlvbigpeyQodGhpcykucmVtb3ZlKCl9fSl9fSk7cmV0dXJuIGF9KSxh KCJ3Y0RvY2tlci9zcGxpdHRlciIsWyJkY2wvZGNsIiwiLi90eXBlcyIsIi4v YmFzZSJdLGZ1bmN0aW9uKHQsZSxhKXt2YXIgcj10KGEse2RlY2xhcmVkQ2xh c3M6IndjU3BsaXR0ZXIiLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxhKXt0 aGlzLiRjb250YWluZXI9JCh0KSx0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9vcmll bnRhdGlvbj1hLHRoaXMuX3BhbmU9WyExLCExXSx0aGlzLiRwYW5lPVtdLHRo aXMuJGJhcj1udWxsLHRoaXMuX3Bvcz0uNSx0aGlzLl9wb3NUYXJnZXQ9LjUs dGhpcy5fcGl4ZWxQb3M9LTEsdGhpcy5fZmluZEJlc3RQb3M9ITEsdGhpcy5f YW5pbT0wLHRoaXMuX2JvdW5kRXZlbnRzPVtdLHRoaXMuX19pbml0KCksdGhp cy5kb2NrZXIoKS5fc3BsaXR0ZXJMaXN0LnB1c2godGhpcyl9LGluaXRMYXlv dXRzOmZ1bmN0aW9uKHQsZSl7dmFyIGE9dHx8IndjTGF5b3V0VGFibGUiLHI9 bmV3KHRoaXMuZG9ja2VyKCkuX19nZXRDbGFzcyhhKSkodGhpcy4kcGFuZVsw XSx0aGlzKTthPWV8fCJ3Y0xheW91dFRhYmxlIjt2YXIgbz1uZXcodGhpcy5k b2NrZXIoKS5fX2dldENsYXNzKGEpKSh0aGlzLiRwYW5lWzFdLHRoaXMpO3Ro aXMucGFuZSgwLHIpLHRoaXMucGFuZSgxLG8pfSxvcmllbnRhdGlvbjpmdW5j dGlvbih0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHQ/dGhpcy5fb3Jp ZW50YXRpb246dm9pZCh0aGlzLl9vcmllbnRhdGlvbiE9dCYmKHRoaXMuX29y aWVudGF0aW9uPXQsdGhpcy5fb3JpZW50YXRpb24/dGhpcy4kYmFyLnJlbW92 ZUNsYXNzKCJ3Y1dpZGUiKS5yZW1vdmVDbGFzcygid2NTcGxpdHRlckJhckgi KS5hZGRDbGFzcygid2NUYWxsIikuYWRkQ2xhc3MoIndjU3BsaXR0ZXJCYXJW Iik6dGhpcy4kYmFyLnJlbW92ZUNsYXNzKCJ3Y1RhbGwiKS5yZW1vdmVDbGFz cygid2NTcGxpdHRlckJhclYiKS5hZGRDbGFzcygid2NXaWRlIikuYWRkQ2xh c3MoIndjU3BsaXR0ZXJCYXJIIiksdGhpcy4kcGFuZVswXS5jc3MoInRvcCIs IiIpLmNzcygibGVmdCIsIiIpLmNzcygid2lkdGgiLCIiKS5jc3MoImhlaWdo dCIsIiIpLHRoaXMuJHBhbmVbMV0uY3NzKCJ0b3AiLCIiKS5jc3MoImxlZnQi LCIiKS5jc3MoIndpZHRoIiwiIikuY3NzKCJoZWlnaHQiLCIiKSx0aGlzLiRi YXIuY3NzKCJ0b3AiLCIiKS5jc3MoImxlZnQiLCIiKS5jc3MoIndpZHRoIiwi IikuY3NzKCJoZWlnaHQiLCIiKSx0aGlzLl9fdXBkYXRlKCksdGhpcy5fcGFy ZW50JiZ0aGlzLl9wYXJlbnQuaW5zdGFuY2VPZigid2NQYW5lbCIpJiZ0aGlz Ll9wYXJlbnQuX190cmlnZ2VyKGUuRVZFTlQuVVBEQVRFRCkpKX0sbWluU2l6 ZTpmdW5jdGlvbigpe3ZhciB0LGU7cmV0dXJuIHRoaXMuX3BhbmVbMF0mJiJm dW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9wYW5lWzBdLm1pblNpemUmJih0PXRo aXMuX3BhbmVbMF0ubWluU2l6ZSgpKSx0aGlzLl9wYW5lWzFdJiYiZnVuY3Rp b24iPT10eXBlb2YgdGhpcy5fcGFuZVsxXS5taW5TaXplJiYoZT10aGlzLl9w YW5lWzFdLm1pblNpemUoKSksdCYmZT8odGhpcy5fb3JpZW50YXRpb24/KHQu eCs9ZS54LHQueT1NYXRoLm1heCh0LnksZS55KSk6KHQueSs9ZS55LHQueD1N YXRoLm1heCh0LngsZS54KSksdCk6dD90OmU/ZTohMX0sbWF4U2l6ZTpmdW5j dGlvbigpe3ZhciB0LGU7cmV0dXJuIHRoaXMuX3BhbmVbMF0mJiJmdW5jdGlv biI9PXR5cGVvZiB0aGlzLl9wYW5lWzBdLm1heFNpemUmJih0PXRoaXMuX3Bh bmVbMF0ubWF4U2l6ZSgpKSx0aGlzLl9wYW5lWzFdJiYiZnVuY3Rpb24iPT10 eXBlb2YgdGhpcy5fcGFuZVsxXS5tYXhTaXplJiYoZT10aGlzLl9wYW5lWzFd Lm1heFNpemUoKSksdCYmZT8odGhpcy5fb3JpZW50YXRpb24/KHQueCs9ZS54 LHQueT1NYXRoLm1pbih0LnksZS55KSk6KHQueSs9ZS55LHQueD1NYXRoLm1p bih0LngsZS54KSksdCk6dD90OmU/ZTohMX0scG9zOmZ1bmN0aW9uKHQpe3Jl dHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdCYmKHRoaXMuX3Bvcz10aGlzLl9w b3NUYXJnZXQ9dCx0aGlzLl9fdXBkYXRlKCksdGhpcy5fcGFyZW50JiZ0aGlz Ll9wYXJlbnQuaW5zdGFuY2VPZigid2NQYW5lbCIpJiZ0aGlzLl9wYXJlbnQu X190cmlnZ2VyKGUuRVZFTlQuVVBEQVRFRCkpLHRoaXMuX3Bvc1RhcmdldH0s YW5pbVBvczpmdW5jdGlvbih0LGUpe3RoaXMuX3Bvc1RhcmdldD10O3ZhciBh PXRoaXM7dGhpcy4kYmFyLnF1ZXVlKGZ1bmN0aW9uKHQpe2EuX2FuaW0mJmNs ZWFySW50ZXJ2YWwoYS5fYW5pbSksYS5fYW5pbT1zZXRJbnRlcnZhbChmdW5j dGlvbigpe2EuX3Bvcz5hLl9wb3NUYXJnZXQmJihhLl9wb3MtPShhLl9wb3Mt YS5fcG9zVGFyZ2V0KS81LGEuX3Bvczw9YS5fcG9zVGFyZ2V0Ky4wMSYmKGEu X3Bvcz1hLl9wb3NUYXJnZXQpKSxhLl9wb3M8YS5fcG9zVGFyZ2V0JiYoYS5f cG9zKz0oYS5fcG9zVGFyZ2V0LWEuX3BvcykvNSxhLl9wb3M+PWEuX3Bvc1Rh cmdldC0uMDEmJihhLl9wb3M9YS5fcG9zVGFyZ2V0KSksYS5fX3VwZGF0ZSgp LGEuX3Bvcz09YS5fcG9zVGFyZ2V0JiYoZSYmZSgpLHQoKSxjbGVhckludGVy dmFsKGEuX2FuaW0pLGEuX2FuaW09MCl9LDUpfSksdGhpcy4kYmFyLmRlcXVl dWUoKX0scGFuZTpmdW5jdGlvbih0LGUpe2lmKHQ+PTAmJjI+dCl7aWYoInVu ZGVmaW5lZCI9PXR5cGVvZiBlKXJldHVybiB0aGlzLl9wYW5lW3RdO2lmKGUp cmV0dXJuIHRoaXMuX3BhbmVbdF09ZSxlLl9wYXJlbnQ9dGhpcyxlLl9fY29u dGFpbmVyKHRoaXMuJHBhbmVbdF0pLHRoaXMuX3BhbmVbMF0mJnRoaXMuX3Bh bmVbMV0mJnRoaXMuX191cGRhdGUoKSxlO3RoaXMuX3BhbmVbdF0mJih0aGlz Ll9wYW5lW3RdLl9fY29udGFpbmVyKG51bGwpLHRoaXMuX3BhbmVbdF09ITEp fXJldHVybiExfSxsZWZ0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhbmUo MCx0KX0scmlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFuZSgxLHQp fSx0b3A6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFuZSgwLHQpfSxib3R0 b206ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFuZSgxLHQpfSxzY3JvbGxh YmxlOmZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9m IGUmJnRoaXMuJHBhbmVbdF0udG9nZ2xlQ2xhc3MoIndjU2Nyb2xsYWJsZVgi LGUpLCJ1bmRlZmluZWQiIT10eXBlb2YgYSYmdGhpcy4kcGFuZVt0XS50b2dn bGVDbGFzcygid2NTY3JvbGxhYmxlWSIsYSkse3g6dGhpcy4kcGFuZVt0XS5o YXNDbGFzcygid2NTY3JvbGxhYmxlWCIpLHk6dGhpcy4kcGFuZVt0XS5oYXND bGFzcygid2NTY3JvbGxhYmxlWSIpfX0sZGVzdHJveTpmdW5jdGlvbih0KXt2 YXIgZT10aGlzLmRvY2tlcigpO2lmKGUpe3ZhciBhPXRoaXMuZG9ja2VyKCku X3NwbGl0dGVyTGlzdC5pbmRleE9mKHRoaXMpO2E+LTEmJnRoaXMuZG9ja2Vy KCkuX3NwbGl0dGVyTGlzdC5zcGxpY2UoYSwxKX12b2lkIDA9PT10fHx0P3Ro aXMuX19kZXN0cm95KCk6dGhpcy5fX2NvbnRhaW5lcihudWxsKX0sX19pbml0 OmZ1bmN0aW9uKCl7aWYodGhpcy4kcGFuZS5wdXNoKCQoJzxkaXYgY2xhc3M9 IndjTGF5b3V0UGFuZSB3Y1Njcm9sbGFibGVYIHdjU2Nyb2xsYWJsZVkiPicp KSx0aGlzLiRwYW5lLnB1c2goJCgnPGRpdiBjbGFzcz0id2NMYXlvdXRQYW5l IHdjU2Nyb2xsYWJsZVggd2NTY3JvbGxhYmxlWSI+JykpLHRoaXMuJGJhcj0k KCc8ZGl2IGNsYXNzPSJ3Y1NwbGl0dGVyQmFyIj4nKSx0aGlzLl9vcmllbnRh dGlvbj90aGlzLiRiYXIuYWRkQ2xhc3MoIndjVGFsbCIpLmFkZENsYXNzKCJ3 Y1NwbGl0dGVyQmFyViIpOnRoaXMuJGJhci5hZGRDbGFzcygid2NXaWRlIiku YWRkQ2xhc3MoIndjU3BsaXR0ZXJCYXJIIiksdGhpcy5fX2NvbnRhaW5lcih0 aGlzLiRjb250YWluZXIpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Lmlu c3RhbmNlT2YoIndjUGFuZWwiKSl7dGhpcy5fYm91bmRFdmVudHMucHVzaCh7 ZXZlbnQ6ZS5FVkVOVC5VUERBVEVELGhhbmRsZXI6dGhpcy5fX3VwZGF0ZS5i aW5kKHRoaXMpfSksdGhpcy5fYm91bmRFdmVudHMucHVzaCh7ZXZlbnQ6ZS5F VkVOVC5DTE9TRUQsaGFuZGxlcjp0aGlzLmRlc3Ryb3kuYmluZCh0aGlzKX0p O2Zvcih2YXIgdD0wO3Q8dGhpcy5fYm91bmRFdmVudHMubGVuZ3RoOysrdCl0 aGlzLl9wYXJlbnQub24odGhpcy5fYm91bmRFdmVudHNbdF0uZXZlbnQsdGhp cy5fYm91bmRFdmVudHNbdF0uaGFuZGxlcil9fSxfX3VwZGF0ZTpmdW5jdGlv bih0KXt2YXIgYT10aGlzLiRjb250YWluZXIub3V0ZXJXaWR0aCgpLHI9dGhp cy4kY29udGFpbmVyLm91dGVySGVpZ2h0KCksbz10aGlzLl9fbWluUG9zKCks aT10aGlzLl9fbWF4UG9zKCk7aWYodGhpcy5fZmluZEJlc3RQb3Mpe3RoaXMu X2ZpbmRCZXN0UG9zPSExO3ZhciBuLHM7dGhpcy5fcGFuZVswXSYmImZ1bmN0 aW9uIj09dHlwZW9mIHRoaXMuX3BhbmVbMF0uaW5pdFNpemUmJihuPXRoaXMu X3BhbmVbMF0uaW5pdFNpemUoKSxuJiYobi54PDAmJihuLng9YS8yKSxuLnk8 MCYmKG4ueT1yLzIpKSksdGhpcy5fcGFuZVsxXSYmImZ1bmN0aW9uIj09dHlw ZW9mIHRoaXMuX3BhbmVbMV0uaW5pdFNpemUmJihzPXRoaXMuX3BhbmVbMV0u aW5pdFNpemUoKSxzJiYocy54PDAmJihzLng9YS8yKSxzLnk8MCYmKHMueT1y LzIpLHMueD1hLXMueCxzLnk9ci1zLnkpKTt2YXIgbDtuJiZzP2w9e3g6TWF0 aC5taW4obi54LHMueCkseTpNYXRoLm1pbihuLnkscy55KX06bj9sPW46cyYm KGw9cyksbCYmKHRoaXMuX29yaWVudGF0aW9uP3RoaXMuX3Bvcz1sLngvYTp0 aGlzLl9wb3M9bC55L3IpfWlmKHRoaXMuJGJhci50b2dnbGVDbGFzcygid2NT cGxpdHRlckJhclN0YXRpYyIsdGhpcy5fX2lzU3RhdGljKCkpLHRoaXMuX29y aWVudGF0aW9uPT09ZS5PUklFTlRBVElPTi5IT1JJWk9OVEFMKXt2YXIgYz10 aGlzLiRiYXIub3V0ZXJXaWR0aCgpLzIsaD1wYXJzZUludCh0aGlzLiRiYXIu Y3NzKCJib3JkZXItdG9wLXdpZHRoIikpK3BhcnNlSW50KHRoaXMuJGJhci5j c3MoImJvcmRlci1ib3R0b20td2lkdGgiKSk7aWYodCl7dmFyIHU9dGhpcy5f cGl4ZWxQb3MtKHRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKS5sZWZ0K3BhcnNl SW50KHRoaXMuJGNvbnRhaW5lci5jc3MoImJvcmRlci1sZWZ0LXdpZHRoIikp KS10aGlzLiRiYXIub3V0ZXJXaWR0aCgpLzI7dGhpcy5fcG9zPXUvKGEtdGhp cy4kYmFyLm91dGVyV2lkdGgoKSl9dGhpcy5fcG9zPU1hdGgubWluKE1hdGgu bWF4KHRoaXMuX3BvcywwKSwxKTt2YXIgbD0oYS10aGlzLiRiYXIub3V0ZXJX aWR0aCgpKSp0aGlzLl9wb3MrYztvJiYobD1NYXRoLm1heChvLngsbCkpLGkm JihsPU1hdGgubWluKGkueCxsKSk7dmFyIGQ9MCxmPTA7aWYodGhpcy5fcGFy ZW50JiYid2NDb2xsYXBzZXIiPT09dGhpcy5fcGFyZW50LmRlY2xhcmVkQ2xh c3Mpe3ZhciBwPXRoaXMuZG9ja2VyKCkuJGNvbnRhaW5lcixiPXRoaXMuX3Bh cmVudC4kY29udGFpbmVyO2Q9Yi5vZmZzZXQoKS50b3AtcC5vZmZzZXQoKS50 b3AsZj1wLm9mZnNldCgpLnRvcCtwLm91dGVySGVpZ2h0KCktKGIub2Zmc2V0 KCkudG9wK2Iub3V0ZXJIZWlnaHQoKSl9dGhpcy4kYmFyLmNzcygibGVmdCIs bC1jKSx0aGlzLiRiYXIuY3NzKCJ0b3AiLGQpLHRoaXMuJGJhci5jc3MoImhl aWdodCIsci1oLWYpLHRoaXMuJHBhbmVbMF0uY3NzKCJ3aWR0aCIsbC1jKSx0 aGlzLiRwYW5lWzBdLmNzcygibGVmdCIsIjBweCIpLHRoaXMuJHBhbmVbMF0u Y3NzKCJyaWdodCIsIiIpLHRoaXMuJHBhbmVbMF0uY3NzKCJ0b3AiLGQpLHRo aXMuJHBhbmVbMF0uY3NzKCJib3R0b20iLGYpLHRoaXMuJHBhbmVbMV0uY3Nz KCJsZWZ0IiwiIiksdGhpcy4kcGFuZVsxXS5jc3MoInJpZ2h0IiwiMHB4Iiks dGhpcy4kcGFuZVsxXS5jc3MoIndpZHRoIixhLWwtYy0yKnBhcnNlSW50KHRo aXMuJGNvbnRhaW5lci5jc3MoImJvcmRlci1sZWZ0LXdpZHRoIikpKSx0aGlz LiRwYW5lWzFdLmNzcygidG9wIixkKSx0aGlzLiRwYW5lWzFdLmNzcygiYm90 dG9tIixmKSx0aGlzLl9waXhlbFBvcz10aGlzLiRiYXIub2Zmc2V0KCkubGVm dCtjfWVsc2V7dmFyIGM9dGhpcy4kYmFyLm91dGVySGVpZ2h0KCkvMixoPXBh cnNlSW50KHRoaXMuJGJhci5jc3MoImJvcmRlci1sZWZ0LXdpZHRoIikpK3Bh cnNlSW50KHRoaXMuJGJhci5jc3MoImJvcmRlci1yaWdodC13aWR0aCIpKTtp Zih0KXt2YXIgdT10aGlzLl9waXhlbFBvcy0odGhpcy4kY29udGFpbmVyLm9m ZnNldCgpLnRvcCtwYXJzZUludCh0aGlzLiRjb250YWluZXIuY3NzKCJib3Jk ZXItdG9wLXdpZHRoIikpKS10aGlzLiRiYXIub3V0ZXJIZWlnaHQoKS8yO3Ro aXMuX3Bvcz11LyhyLXRoaXMuJGJhci5vdXRlckhlaWdodCgpKX10aGlzLl9w b3M9TWF0aC5taW4oTWF0aC5tYXgodGhpcy5fcG9zLDApLDEpO3ZhciBsPShy LXRoaXMuJGJhci5vdXRlckhlaWdodCgpKSp0aGlzLl9wb3MrYztvJiYobD1N YXRoLm1heChvLnksbCkpLGkmJihsPU1hdGgubWluKGkueSxsKSk7dmFyIF89 MCx2PTA7aWYodGhpcy5fcGFyZW50JiYid2NDb2xsYXBzZXIiPT09dGhpcy5f cGFyZW50LmRlY2xhcmVkQ2xhc3Mpe3ZhciBwPXRoaXMuZG9ja2VyKCkuJGNv bnRhaW5lcixiPXRoaXMuX3BhcmVudC4kY29udGFpbmVyO189Yi5vZmZzZXQo KS5sZWZ0LXAub2Zmc2V0KCkubGVmdCx2PXAub2Zmc2V0KCkubGVmdCtwLm91 dGVyV2lkdGgoKS0oYi5vZmZzZXQoKS5sZWZ0K2Iub3V0ZXJXaWR0aCgpKX10 aGlzLiRiYXIuY3NzKCJ0b3AiLGwtYyksdGhpcy4kYmFyLmNzcygibGVmdCIs XyksdGhpcy4kYmFyLmNzcygid2lkdGgiLGEtaC1mKSx0aGlzLiRwYW5lWzBd LmNzcygiaGVpZ2h0IixsLWMpLHRoaXMuJHBhbmVbMF0uY3NzKCJ0b3AiLCIw cHgiKSx0aGlzLiRwYW5lWzBdLmNzcygiYm90dG9tIiwiIiksdGhpcy4kcGFu ZVswXS5jc3MoImxlZnQiLF8pLHRoaXMuJHBhbmVbMF0uY3NzKCJyaWdodCIs diksdGhpcy4kcGFuZVsxXS5jc3MoInRvcCIsIiIpLHRoaXMuJHBhbmVbMV0u Y3NzKCJib3R0b20iLCIwcHgiKSx0aGlzLiRwYW5lWzFdLmNzcygiaGVpZ2h0 IixyLWwtYy0yKnBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3MoImJvcmRl ci10b3Atd2lkdGgiKSkpLHRoaXMuJHBhbmVbMV0uY3NzKCJsZWZ0IixfKSx0 aGlzLiRwYW5lWzFdLmNzcygicmlnaHQiLHYpLHRoaXMuX3BpeGVsUG9zPXRo aXMuJGJhci5vZmZzZXQoKS50b3ArY312b2lkIDA9PT10JiYodD0hMCksdGhp cy5fcGFuZVswXSYmdGhpcy5fcGFuZVswXS5fX3VwZGF0ZSh0KSx0aGlzLl9w YW5lWzFdJiZ0aGlzLl9wYW5lWzFdLl9fdXBkYXRlKHQpfSxfX3NhdmU6ZnVu Y3Rpb24oKXtpZih0aGlzLl9wYW5lWzBdJiYid2NDb2xsYXBzZXIiPT09dGhp cy5fcGFuZVswXS5kZWNsYXJlZENsYXNzKXJldHVybiB0aGlzLl9wYW5lWzFd Ll9fc2F2ZSgpO2lmKHRoaXMuX3BhbmVbMV0mJiJ3Y0NvbGxhcHNlciI9PT10 aGlzLl9wYW5lWzFdLmRlY2xhcmVkQ2xhc3MpcmV0dXJuIHRoaXMuX3BhbmVb MF0uX19zYXZlKCk7dmFyIHQ9e307cmV0dXJuIHQudHlwZT0id2NTcGxpdHRl ciIsdC5ob3Jpem9udGFsPXRoaXMuX29yaWVudGF0aW9uLHQuaXNEcmF3ZXI9 dGhpcy4kYmFyLmhhc0NsYXNzKCJ3Y0RyYXdlclNwbGl0dGVyQmFyIiksdC5w YW5lMD10aGlzLl9wYW5lWzBdP3RoaXMuX3BhbmVbMF0uX19zYXZlKCk6bnVs bCx0LnBhbmUxPXRoaXMuX3BhbmVbMV0/dGhpcy5fcGFuZVsxXS5fX3NhdmUo KTpudWxsLHQucG9zPXRoaXMuX3Bvcyx0fSxfX3Jlc3RvcmU6ZnVuY3Rpb24o dCxlKXt0aGlzLl9wb3M9dC5wb3MsdC5pc0RyYXdlciYmdGhpcy4kYmFyLmFk ZENsYXNzKCJ3Y0RyYXdlclNwbGl0dGVyQmFyIiksdC5wYW5lMCYmKHRoaXMu X3BhbmVbMF09ZS5fX2NyZWF0ZSh0LnBhbmUwLHRoaXMsdGhpcy4kcGFuZVsw XSksdGhpcy5fcGFuZVswXS5fX3Jlc3RvcmUodC5wYW5lMCxlKSksdC5wYW5l MSYmKHRoaXMuX3BhbmVbMV09ZS5fX2NyZWF0ZSh0LnBhbmUxLHRoaXMsdGhp cy4kcGFuZVsxXSksdGhpcy5fcGFuZVsxXS5fX3Jlc3RvcmUodC5wYW5lMSxl KSl9LF9fZmluZEJlc3RQb3M6ZnVuY3Rpb24oKXt0aGlzLl9maW5kQmVzdFBv cz0hMH0sX19tb3ZlQmFyOmZ1bmN0aW9uKHQpe3ZhciBhPXRoaXMuJGNvbnRh aW5lci5vZmZzZXQoKTtpZih0LngtPWEubGVmdCx0LnktPWEudG9wLHRoaXMu X29yaWVudGF0aW9uPT09ZS5PUklFTlRBVElPTi5IT1JJWk9OVEFMKXt2YXIg cj10aGlzLiRjb250YWluZXIub3V0ZXJXaWR0aCgpLXRoaXMuJGJhci5vdXRl cldpZHRoKCk7dC54Kz0xLXBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3Mo ImJvcmRlci1sZWZ0LXdpZHRoIikpLXRoaXMuJGJhci5vdXRlcldpZHRoKCkv Mix0aGlzLnBvcyh0Lngvcil9ZWxzZXt2YXIgbz10aGlzLiRjb250YWluZXIu b3V0ZXJIZWlnaHQoKS10aGlzLiRiYXIub3V0ZXJIZWlnaHQoKTt0LnkrPTEt cGFyc2VJbnQodGhpcy4kY29udGFpbmVyLmNzcygiYm9yZGVyLXRvcC13aWR0 aCIpKS10aGlzLiRiYXIub3V0ZXJIZWlnaHQoKS8yLHRoaXMucG9zKHQueS9v KX19LF9fbWluUG9zOmZ1bmN0aW9uKCl7dmFyIHQsYT10aGlzLiRjb250YWlu ZXIub3V0ZXJXaWR0aCgpLHI9dGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0 KCk7dD10aGlzLl9wYW5lWzBdJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5f cGFuZVswXS5taW5TaXplP3RoaXMuX3BhbmVbMF0ubWluU2l6ZSgpOnt4OjUw LHk6NTB9O3ZhciBvO2lmKG89dGhpcy5fcGFuZVsxXSYmImZ1bmN0aW9uIj09 dHlwZW9mIHRoaXMuX3BhbmVbMV0ubWF4U2l6ZT90aGlzLl9wYW5lWzFdLm1h eFNpemUoKTp7eDphLHk6cn0sdGhpcy5fb3JpZW50YXRpb249PT1lLk9SSUVO VEFUSU9OLkhPUklaT05UQUwpe3ZhciBpPXRoaXMuJGJhci5vdXRlcldpZHRo KCkvMjt0LngrPWksYS09aX1lbHNle3ZhciBpPXRoaXMuJGJhci5vdXRlckhl aWdodCgpLzI7dC55Kz1pLHItPWl9cmV0dXJuIG8ueD1hLU1hdGgubWluKG8u eCxhKSxvLnk9ci1NYXRoLm1pbihvLnksciksdC54PU1hdGgubWF4KHQueCxv LngpLHQueT1NYXRoLm1heCh0Lnksby55KSx0fSxfX21heFBvczpmdW5jdGlv bigpe3ZhciB0LGE9dGhpcy4kY29udGFpbmVyLm91dGVyV2lkdGgoKSxyPXRo aXMuJGNvbnRhaW5lci5vdXRlckhlaWdodCgpO3Q9dGhpcy5fcGFuZVswXSYm ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX3BhbmVbMF0ubWF4U2l6ZT90aGlz Ll9wYW5lWzBdLm1heFNpemUoKTp7eDphLHk6cn07dmFyIG87aWYobz10aGlz Ll9wYW5lWzFdJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fcGFuZVsxXS5t aW5TaXplP3RoaXMuX3BhbmVbMV0ubWluU2l6ZSgpOnt4OjUwLHk6NTB9LHRo aXMuX29yaWVudGF0aW9uPT09ZS5PUklFTlRBVElPTi5IT1JJWk9OVEFMKXt2 YXIgaT10aGlzLiRiYXIub3V0ZXJXaWR0aCgpLzI7dC54Kz1pLGEtPWl9ZWxz ZXt2YXIgaT10aGlzLiRiYXIub3V0ZXJIZWlnaHQoKS8yO3QueSs9aSxyLT1p fXJldHVybiBvLng9YS1vLngsby55PXItby55LHQueD1NYXRoLm1pbihvLngs dC54KSx0Lnk9TWF0aC5taW4oby55LHQueSksdH0sX19pc1N0YXRpYzpmdW5j dGlvbigpe2Zvcih2YXIgdD10aGlzLl9vcmllbnRhdGlvbj09PWUuT1JJRU5U QVRJT04uSE9SSVpPTlRBTD8ieCI6InkiLGE9MDsyPmE7KythKWlmKHRoaXMu X3BhbmVbYV0mJnRoaXMuX3BhbmVbYV0ubWluU2l6ZSYmdGhpcy5fcGFuZVth XS5tYXhTaXplJiZ0aGlzLl9wYW5lW2FdLm1heFNpemUoKVt0XS10aGlzLl9w YW5lW2FdLm1pblNpemUoKVt0XT09PTApcmV0dXJuITA7cmV0dXJuITF9LF9f Y29udGFpbmVyOmZ1bmN0aW9uKHQpe3JldHVybiJ1bmRlZmluZWQiPT10eXBl b2YgdD90aGlzLiRjb250YWluZXI6KHRoaXMuJGNvbnRhaW5lcj10LHRoaXMu JGNvbnRhaW5lcj8odGhpcy4kY29udGFpbmVyLmFwcGVuZCh0aGlzLiRwYW5l WzBdKSx0aGlzLiRjb250YWluZXIuYXBwZW5kKHRoaXMuJHBhbmVbMV0pLHRo aXMuJGNvbnRhaW5lci5hcHBlbmQodGhpcy4kYmFyKSk6KHRoaXMuJHBhbmVb MF0ucmVtb3ZlKCksCi10aGlzLiRwYW5lWzFdLnJlbW92ZSgpLHRoaXMuJGJh ci5yZW1vdmUoKSksdGhpcy4kY29udGFpbmVyKX0sX19yZW1vdmVDaGlsZDpm dW5jdGlvbih0KXtpZih0aGlzLl9wYW5lWzBdPT09dCl0aGlzLl9wYW5lWzBd PSExO2Vsc2V7aWYodGhpcy5fcGFuZVsxXSE9PXQpcmV0dXJuO3RoaXMuX3Bh bmVbMV09ITF9dCYmKHQuX19jb250YWluZXIobnVsbCksdC5fcGFyZW50PW51 bGwpfSxfX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtmb3IodGhpcy5fYW5pbSYmKGNs ZWFySW50ZXJ2YWwodGhpcy5fYW5pbSksdGhpcy5fYW5pbT0wKSx0aGlzLiRi YXIuY2xlYXJRdWV1ZSgpO3RoaXMuX2JvdW5kRXZlbnRzLmxlbmd0aDspdGhp cy5fcGFyZW50Lm9mZih0aGlzLl9ib3VuZEV2ZW50c1swXS5ldmVudCx0aGlz Ll9ib3VuZEV2ZW50c1swXS5oYW5kbGVyKSx0aGlzLl9ib3VuZEV2ZW50cy5z aGlmdCgpO3RoaXMuX3BhbmVbMF0mJih0aGlzLl9wYW5lWzBdLl9fZGVzdHJv eSgpLHRoaXMuX3BhbmVbMF09bnVsbCksdGhpcy5fcGFuZVsxXSYmKHRoaXMu X3BhbmVbMV0uX19kZXN0cm95KCksdGhpcy5fcGFuZVsxXT1udWxsKSx0aGlz Ll9fY29udGFpbmVyKG51bGwpLHRoaXMuX3BhcmVudD0hMX19KTtyZXR1cm4g cn0pLGEoIndjRG9ja2VyL2ZyYW1lIixbImRjbC9kY2wiLCIuL3R5cGVzIiwi Li9iYXNlIl0sZnVuY3Rpb24odCxlLGEpe3ZhciByPXQoYSx7ZGVjbGFyZWRD bGFzczoid2NGcmFtZSIsTEVGVF9UQUJfQlVGRkVSOjE1LGNvbnN0cnVjdG9y OmZ1bmN0aW9uKHQsYSxyKXt0aGlzLiRjb250YWluZXI9JCh0KSx0aGlzLl9w YXJlbnQ9YSx0aGlzLl9pc0Zsb2F0aW5nPXIsdGhpcy4kZnJhbWU9bnVsbCx0 aGlzLiR0aXRsZT1udWxsLHRoaXMuJHRpdGxlQmFyPW51bGwsdGhpcy4kdGFi QmFyPW51bGwsdGhpcy4kdGFiU2Nyb2xsPW51bGwsdGhpcy4kY2VudGVyPW51 bGwsdGhpcy4kdGFiTGVmdD1udWxsLHRoaXMuJHRhYlJpZ2h0PW51bGwsdGhp cy4kY2xvc2U9bnVsbCx0aGlzLiRjb2xsYXBzZT1udWxsLHRoaXMuJHRvcD1u dWxsLHRoaXMuJGJvdHRvbT1udWxsLHRoaXMuJGxlZnQ9bnVsbCx0aGlzLiRy aWdodD1udWxsLHRoaXMuJGNvcm5lcjE9bnVsbCx0aGlzLiRjb3JuZXIyPW51 bGwsdGhpcy4kY29ybmVyMz1udWxsLHRoaXMuJGNvcm5lcjQ9bnVsbCx0aGlz LiRidXR0b25CYXI9bnVsbCx0aGlzLiRzaGFkb3dlcj1udWxsLHRoaXMuJG1v ZGFsQmxvY2tlcj1udWxsLHRoaXMuX3RpdGxlVmlzaWJsZT0hMCx0aGlzLl9j YW5TY3JvbGxUYWJzPSExLHRoaXMuX3RhYk9yaWVudGF0aW9uPWUuVEFCLlRP UCx0aGlzLl90YWJTY3JvbGxQb3M9MCx0aGlzLl9jdXJUYWI9LTEsdGhpcy5f cGFuZWxMaXN0PVtdLHRoaXMuX2J1dHRvbkxpc3Q9W10sdGhpcy5fcmVzaXpl RGF0YT17dGltZTotMSx0aW1lb3V0OiExLGRlbHRhOjE1MH0sdGhpcy5fcG9z PXt4Oi41LHk6LjV9LHRoaXMuX3NpemU9e3g6NDAwLHk6NDAwfSx0aGlzLl9s YXN0U2l6ZT17eDo0MDAseTo0MDB9LHRoaXMuX2FuY2hvck1vdXNlPXt4OjAs eTowfSx0aGlzLl9faW5pdCgpfSxwb3M6ZnVuY3Rpb24odCxlLGEpe3ZhciBy PXRoaXMuJGNvbnRhaW5lci53aWR0aCgpLG89dGhpcy4kY29udGFpbmVyLmhl aWdodCgpO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdD9hP3t4OnRoaXMu X3Bvcy54KnIseTp0aGlzLl9wb3MueSpvfTp7eDp0aGlzLl9wb3MueCx5OnRo aXMuX3Bvcy55fTp2b2lkKGE/KHRoaXMuX3Bvcy54PXQvcix0aGlzLl9wb3Mu eT1lL28pOih0aGlzLl9wb3MueD10LHRoaXMuX3Bvcy55PWUpKX0saW5pdFNp emU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9e3g6LTEseTotMX0sZT0wO2U8dGhp cy5fcGFuZWxMaXN0Lmxlbmd0aDsrK2UpdC54PHRoaXMuX3BhbmVsTGlzdFtl XS5pbml0U2l6ZSgpLngmJih0Lng9dGhpcy5fcGFuZWxMaXN0W2VdLmluaXRT aXplKCkueCksdC55PHRoaXMuX3BhbmVsTGlzdFtlXS5pbml0U2l6ZSgpLnkm Jih0Lnk9dGhpcy5fcGFuZWxMaXN0W2VdLmluaXRTaXplKCkueSk7cmV0dXJu IHQueDwwfHx0Lnk8MD8hMTp0fSxtaW5TaXplOmZ1bmN0aW9uKCl7Zm9yKHZh ciB0PXt4OjAseTowfSxlPTA7ZTx0aGlzLl9wYW5lbExpc3QubGVuZ3RoOysr ZSl0Lng9TWF0aC5tYXgodC54LHRoaXMuX3BhbmVsTGlzdFtlXS5taW5TaXpl KCkueCksdC55PU1hdGgubWF4KHQueSx0aGlzLl9wYW5lbExpc3RbZV0ubWlu U2l6ZSgpLnkpO3JldHVybiB0fSxtYXhTaXplOmZ1bmN0aW9uKCl7Zm9yKHZh ciB0PXt4OjEvMCx5OjEvMH0sZT0wO2U8dGhpcy5fcGFuZWxMaXN0Lmxlbmd0 aDsrK2UpdC54PU1hdGgubWluKHQueCx0aGlzLl9wYW5lbExpc3RbZV0ubWF4 U2l6ZSgpLngpLHQueT1NYXRoLm1pbih0LnksdGhpcy5fcGFuZWxMaXN0W2Vd Lm1heFNpemUoKS55KTtyZXR1cm4gdH0sdGFiT3JpZW50YXRpb246ZnVuY3Rp b24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJnRoaXMuX3RhYk9yaWVudGF0aW9u IT09dCYmdGhpcy5kb2NrZXIoKS5fY2FuT3JpZW50VGFicyYmKHRoaXMuX3Rh Yk9yaWVudGF0aW9uPXQsdGhpcy5fX3VwZGF0ZVRhYnMoKSx0aGlzLl9fdXBk YXRlVGFicygpKSx0aGlzLl90YWJPcmllbnRhdGlvbn0sYWRkUGFuZWw6ZnVu Y3Rpb24odCxlKXt2YXIgYT10aGlzLl9wYW5lbExpc3QuaW5kZXhPZih0KTst MSE9PWEmJnRoaXMuX3BhbmVsTGlzdC5zcGxpY2UoYSwxKSwidW5kZWZpbmVk Ij09dHlwZW9mIGU/dGhpcy5fcGFuZWxMaXN0LnB1c2godCk6dGhpcy5fcGFu ZWxMaXN0LnNwbGljZShlLDAsdCksLTE9PT10aGlzLl9jdXJUYWImJnRoaXMu X3BhbmVsTGlzdC5sZW5ndGgmJih0aGlzLmlzQ29sbGFwc2VyKCl8fCh0aGlz Ll9jdXJUYWI9MCksdGhpcy5fc2l6ZT10aGlzLmluaXRTaXplKCkpLHRoaXMu X191cGRhdGVUYWJzKCl9LHJlbW92ZVBhbmVsOmZ1bmN0aW9uKHQpe2Zvcih2 YXIgZT0wO2U8dGhpcy5fcGFuZWxMaXN0Lmxlbmd0aDsrK2UpaWYodGhpcy5f cGFuZWxMaXN0W2VdPT09dCl7dGhpcy5pc0NvbGxhcHNlcigpP3RoaXMuX2N1 clRhYj0tMTp0aGlzLl9jdXJUYWI+PWUmJnRoaXMuX2N1clRhYi0tLHRoaXMu X3BhbmVsTGlzdFtlXS5fcGFyZW50PT09dGhpcyYmKHRoaXMuX3BhbmVsTGlz dFtlXS5fX2NvbnRhaW5lcihudWxsKSx0aGlzLl9wYW5lbExpc3RbZV0uX3Bh cmVudD1udWxsKSx0aGlzLl9wYW5lbExpc3Quc3BsaWNlKGUsMSksdC5faXNW aXNpYmxlPSExO2JyZWFrfXJldHVybi0xPT09dGhpcy5fY3VyVGFiJiYhdGhp cy5jb2xsYXBzZSgpJiZ0aGlzLl9wYW5lbExpc3QubGVuZ3RoJiYodGhpcy5f Y3VyVGFiPTApLHRoaXMuX191cGRhdGVUYWJzKCksdGhpcy5fcGFuZWxMaXN0 Lmxlbmd0aD4wfSxwYW5lbDpmdW5jdGlvbih0LGUpe3JldHVybiJ1bmRlZmlu ZWQiIT10eXBlb2YgdCYmKHRoaXMuaXNDb2xsYXBzZXIoKSYmdD09PXRoaXMu X2N1clRhYiYmKHRoaXMuY29sbGFwc2UoKSx0PS0xKSx0PHRoaXMuX3BhbmVs TGlzdC5sZW5ndGgmJih0aGlzLiR0YWJCYXIuZmluZCgnPiAud2NUYWJTY3Jv bGxlciA+IC53Y1BhbmVsVGFiW2lkPSInK3RoaXMuX2N1clRhYisnIl0nKS5y ZW1vdmVDbGFzcygid2NQYW5lbFRhYkFjdGl2ZSIpLHRoaXMuJGNlbnRlci5j aGlsZHJlbignLndjUGFuZWxUYWJDb250ZW50W2lkPSInK3RoaXMuX2N1clRh YisnIl0nKS5hZGRDbGFzcygid2NQYW5lbFRhYkNvbnRlbnRIaWRkZW4iKSx0 aGlzLl9jdXJUYWIhPT10JiZ0aGlzLmNvbGxhcHNlKCksdGhpcy5fY3VyVGFi PXQsdD4tMSYmKHRoaXMuJHRhYkJhci5maW5kKCc+IC53Y1RhYlNjcm9sbGVy ID4gLndjUGFuZWxUYWJbaWQ9IicrdCsnIl0nKS5hZGRDbGFzcygid2NQYW5l bFRhYkFjdGl2ZSIpLHRoaXMuJGNlbnRlci5jaGlsZHJlbignLndjUGFuZWxU YWJDb250ZW50W2lkPSInK3QrJyJdJykucmVtb3ZlQ2xhc3MoIndjUGFuZWxU YWJDb250ZW50SGlkZGVuIiksdGhpcy5leHBhbmQoKSksdGhpcy5fX3VwZGF0 ZVRhYnMoZSkpKSx0aGlzLl9jdXJUYWI+LTEmJnRoaXMuX2N1clRhYjx0aGlz Ll9wYW5lbExpc3QubGVuZ3RoP3RoaXMuX3BhbmVsTGlzdFt0aGlzLl9jdXJU YWJdOnRoaXMuaXNDb2xsYXBzZXIoKSYmdGhpcy5fcGFuZWxMaXN0Lmxlbmd0 aD90aGlzLl9wYW5lbExpc3RbMF06ITF9LGlzQ29sbGFwc2VyOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX3BhcmVudCYmIndjRHJhd2VyIj09PXRoaXMuX3Bh cmVudC5kZWNsYXJlZENsYXNzfSxjb2xsYXBzZTpmdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5pc0NvbGxhcHNlcigpPyh0aGlzLl9wYXJlbnQuY29sbGFwc2Uo dCksITApOiExfSxleHBhbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0Nv bGxhcHNlcigpPyh0aGlzLl9wYXJlbnQuZXhwYW5kKCksITApOiExfSxpc0V4 cGFuZGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNDb2xsYXBzZXIoKT90 aGlzLl9wYXJlbnQuaXNFeHBhbmRlZCgpOnZvaWQgMH0sX19pbml0OmZ1bmN0 aW9uKCl7dGhpcy4kZnJhbWU9JCgnPGRpdiBjbGFzcz0id2NGcmFtZSB3Y1dp ZGUgd2NUYWxsIj4nKSx0aGlzLiR0aXRsZT0kKCc8ZGl2IGNsYXNzPSJ3Y0Zy YW1lVGl0bGUiPicpLHRoaXMuJHRpdGxlQmFyPSQoJzxkaXYgY2xhc3M9Indj RnJhbWVUaXRsZUJhciB3Y0ZyYW1lVG9wcGVyIj4nKSx0aGlzLiR0YWJCYXI9 JCgnPGRpdiBjbGFzcz0id2NGcmFtZVRpdGxlQmFyIj4nKSx0aGlzLiR0YWJT Y3JvbGw9JCgnPGRpdiBjbGFzcz0id2NUYWJTY3JvbGxlciI+JyksdGhpcy4k Y2VudGVyPSQoJzxkaXYgY2xhc3M9IndjRnJhbWVDZW50ZXIgd2NQYW5lbEJh Y2tncm91bmQiPicpLHRoaXMuJHRhYkxlZnQ9JCgnPGRpdiBjbGFzcz0id2NG cmFtZUJ1dHRvbiIgdGl0bGU9IlNjcm9sbCB0YWJzIHRvIHRoZSBsZWZ0LiI+ PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LWxlZnQiPjwvc3Bhbj4mbHQ7PC9k aXY+JyksdGhpcy4kdGFiUmlnaHQ9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1 dHRvbiIgdGl0bGU9IlNjcm9sbCB0YWJzIHRvIHRoZSByaWdodC4iPjxzcGFu IGNsYXNzPSJmYSBmYS1hcnJvdy1yaWdodCI+PC9zcGFuPiZndDs8L2Rpdj4n KSx0aGlzLiRjbG9zZT0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9uIiB0 aXRsZT0iQ2xvc2UgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGFuZWwgdGFiIj48 ZGl2IGNsYXNzPSJmYSBmYS1jbG9zZSI+PC9kaXY+WDwvZGl2PicpLHRoaXMu JGNvbGxhcHNlPSQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b24iIHRpdGxl PSJDb2xsYXBzZSB0aGUgYWN0aXZlIHBhbmVsIj48ZGl2IGNsYXNzPSJmYSBm YS1kb3dubG9hZCI+PC9kaXY+QzwvZGl2PicpLHRoaXMuJGJ1dHRvbkJhcj0k KCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9uQmFyIj4nKSx0aGlzLiR0YWJC dXR0b25CYXI9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbkJhciI+Jyks dGhpcy4kdGFiQmFyLmFwcGVuZCh0aGlzLiR0YWJTY3JvbGwpLHRoaXMuJHRh YkJhci5hcHBlbmQodGhpcy4kdGFiQnV0dG9uQmFyKSx0aGlzLiRmcmFtZS5h cHBlbmQodGhpcy4kYnV0dG9uQmFyKSx0aGlzLiRidXR0b25CYXIuYXBwZW5k KHRoaXMuJGNsb3NlKSx0aGlzLiRidXR0b25CYXIuYXBwZW5kKHRoaXMuJGNv bGxhcHNlKSx0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kY2VudGVyKSx0aGlz Ll9pc0Zsb2F0aW5nJiYodGhpcy4kdG9wPSQoJzxkaXYgY2xhc3M9IndjRnJh bWVFZGdlSCB3Y0ZyYW1lRWRnZSI+PC9kaXY+JykuY3NzKCJ0b3AiLCItNHB4 IikuY3NzKCJsZWZ0IiwiMHB4IikuY3NzKCJyaWdodCIsIjBweCIpLHRoaXMu JGJvdHRvbT0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lRWRnZUggd2NGcmFtZUVk Z2UiPjwvZGl2PicpLmNzcygiYm90dG9tIiwiLTRweCIpLmNzcygibGVmdCIs IjBweCIpLmNzcygicmlnaHQiLCIwcHgiKSx0aGlzLiRsZWZ0PSQoJzxkaXYg Y2xhc3M9IndjRnJhbWVFZGdlViB3Y0ZyYW1lRWRnZSI+PC9kaXY+JykuY3Nz KCJsZWZ0IiwiLTRweCIpLmNzcygidG9wIiwiMHB4IikuY3NzKCJib3R0b20i LCIwcHgiKSx0aGlzLiRyaWdodD0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lRWRn ZVYgd2NGcmFtZUVkZ2UiPjwvZGl2PicpLmNzcygicmlnaHQiLCItNHB4Iiku Y3NzKCJ0b3AiLCIwcHgiKS5jc3MoImJvdHRvbSIsIjBweCIpLHRoaXMuJGNv cm5lcjE9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUNvcm5lck5XIHdjRnJhbWVF ZGdlIj48L2Rpdj4nKS5jc3MoInRvcCIsIi00cHgiKS5jc3MoImxlZnQiLCIt NHB4IiksdGhpcy4kY29ybmVyMj0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQ29y bmVyTkUgd2NGcmFtZUVkZ2UiPjwvZGl2PicpLmNzcygidG9wIiwiLTRweCIp LmNzcygicmlnaHQiLCItNHB4IiksdGhpcy4kY29ybmVyMz0kKCc8ZGl2IGNs YXNzPSJ3Y0ZyYW1lQ29ybmVyTlcgd2NGcmFtZUVkZ2UiPjwvZGl2PicpLmNz cygiYm90dG9tIiwiLTRweCIpLmNzcygicmlnaHQiLCItNHB4IiksdGhpcy4k Y29ybmVyND0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQ29ybmVyTkUgd2NGcmFt ZUVkZ2UiPjwvZGl2PicpLmNzcygiYm90dG9tIiwiLTRweCIpLmNzcygibGVm dCIsIi00cHgiKSx0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kdG9wKSx0aGlz LiRmcmFtZS5hcHBlbmQodGhpcy4kYm90dG9tKSx0aGlzLiRmcmFtZS5hcHBl bmQodGhpcy4kbGVmdCksdGhpcy4kZnJhbWUuYXBwZW5kKHRoaXMuJHJpZ2h0 KSx0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kY29ybmVyMSksdGhpcy4kZnJh bWUuYXBwZW5kKHRoaXMuJGNvcm5lcjIpLHRoaXMuJGZyYW1lLmFwcGVuZCh0 aGlzLiRjb3JuZXIzKSx0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kY29ybmVy NCkpLHRoaXMuX19jb250YWluZXIodGhpcy4kY29udGFpbmVyKSx0aGlzLl9p c0Zsb2F0aW5nJiZ0aGlzLiRmcmFtZS5hZGRDbGFzcygid2NGbG9hdGluZyIp LHRoaXMuJGNlbnRlci5zY3JvbGwodGhpcy5fX3Njcm9sbGVkLmJpbmQodGhp cykpfSxfX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJGNvbnRhaW5l ci53aWR0aCgpLGU9dGhpcy4kY29udGFpbmVyLmhlaWdodCgpO2lmKHRoaXMu X2lzRmxvYXRpbmcpe3ZhciBhPXRoaXMuX3Bvcy54KnQtdGhpcy5fc2l6ZS54 LzIscj10aGlzLl9wb3MueSplLXRoaXMuX3NpemUueS8yOzA+ciYmKHI9MCks YSt0aGlzLl9zaXplLngvMjwwJiYoYT0tdGhpcy5fc2l6ZS54LzIpLGErdGhp cy5fc2l6ZS54LzI+dCYmKGE9dC10aGlzLl9zaXplLngvMikscitwYXJzZUlu dCh0aGlzLiRjZW50ZXIuY3NzKCJ0b3AiKSk+ZSYmKHI9ZS1wYXJzZUludCh0 aGlzLiRjZW50ZXIuY3NzKCJ0b3AiKSkpLHRoaXMuJGZyYW1lLmNzcygibGVm dCIsYSsicHgiKSx0aGlzLiRmcmFtZS5jc3MoInRvcCIscisicHgiKSx0aGlz LiRmcmFtZS5jc3MoIndpZHRoIix0aGlzLl9zaXplLngrInB4IiksdGhpcy4k ZnJhbWUuY3NzKCJoZWlnaHQiLHRoaXMuX3NpemUueSsicHgiKX0odCE9PXRo aXMuX2xhc3RTaXplLnh8fGUhPT10aGlzLl9sYXN0U2l6ZS55KSYmKHRoaXMu X2xhc3RTaXplLng9dCx0aGlzLl9sYXN0U2l6ZS55PWUsdGhpcy5fcmVzaXpl RGF0YS50aW1lPW5ldyBEYXRlLHRoaXMuX3Jlc2l6ZURhdGEudGltZW91dHx8 KHRoaXMuX3Jlc2l6ZURhdGEudGltZW91dD0hMCxzZXRUaW1lb3V0KHRoaXMu X19yZXNpemVFbmQuYmluZCh0aGlzKSx0aGlzLl9yZXNpemVEYXRhLmRlbHRh KSkpLHRoaXMuX19vblRhYkNoYW5nZSgpfSxfX3Jlc2l6ZUVuZDpmdW5jdGlv bigpe3RoaXMuX191cGRhdGVUYWJzKCksbmV3IERhdGUtdGhpcy5fcmVzaXpl RGF0YS50aW1lPHRoaXMuX3Jlc2l6ZURhdGEuZGVsdGE/c2V0VGltZW91dCh0 aGlzLl9fcmVzaXplRW5kLmJpbmQodGhpcyksdGhpcy5fcmVzaXplRGF0YS5k ZWx0YSk6dGhpcy5fcmVzaXplRGF0YS50aW1lb3V0PSExfSxfX3RyaWdnZXI6 ZnVuY3Rpb24odCxlKXtmb3IodmFyIGE9MDthPHRoaXMuX3BhbmVsTGlzdC5s ZW5ndGg7KythKXRoaXMuX3BhbmVsTGlzdFthXS5fX3RyaWdnZXIodCxlKX0s X19zYXZlOmZ1bmN0aW9uKCl7dmFyIHQ9e307dC50eXBlPSJ3Y0ZyYW1lIix0 LmZsb2F0aW5nPXRoaXMuX2lzRmxvYXRpbmcsdC5pc0ZvY3VzPXRoaXMuJGZy YW1lLmhhc0NsYXNzKCJ3Y0Zsb2F0aW5nRm9jdXMiKSx0LnRhYk9yaWVudGF0 aW9uPXRoaXMuX3RhYk9yaWVudGF0aW9uLHQucG9zPXt4OnRoaXMuX3Bvcy54 LHk6dGhpcy5fcG9zLnl9LHQuc2l6ZT17eDp0aGlzLl9zaXplLngseTp0aGlz Ll9zaXplLnl9LHQudGFiPXRoaXMuX2N1clRhYix0LnBhbmVscz1bXTtmb3Io dmFyIGU9MDtlPHRoaXMuX3BhbmVsTGlzdC5sZW5ndGg7KytlKXQucGFuZWxz LnB1c2godGhpcy5fcGFuZWxMaXN0W2VdLl9fc2F2ZSgpKTtyZXR1cm4gdH0s X19yZXN0b3JlOmZ1bmN0aW9uKHQsYSl7dGhpcy5faXNGbG9hdGluZz10LmZs b2F0aW5nLHRoaXMuX3RhYk9yaWVudGF0aW9uPXQudGFiT3JpZW50YXRpb258 fGUuVEFCLlRPUCx0aGlzLl9wb3MueD10LnBvcy54LHRoaXMuX3Bvcy55PXQu cG9zLnksdGhpcy5fc2l6ZS54PXQuc2l6ZS54LHRoaXMuX3NpemUueT10LnNp emUueSx0aGlzLl9jdXJUYWI9dC50YWI7Zm9yKHZhciByPTA7cjx0LnBhbmVs cy5sZW5ndGg7KytyKXt2YXIgbz1hLl9fY3JlYXRlKHQucGFuZWxzW3JdLHRo aXMsdGhpcy4kY2VudGVyKTtvLl9fcmVzdG9yZSh0LnBhbmVsc1tyXSxhKSx0 aGlzLl9wYW5lbExpc3QucHVzaChvKX10aGlzLl9fdXBkYXRlKCksdC5pc0Zv Y3VzJiZ0aGlzLiRmcmFtZS5hZGRDbGFzcygid2NGbG9hdGluZ0ZvY3VzIil9 LF9fdXBkYXRlVGFiczpmdW5jdGlvbih0KXt0aGlzLiR0YWJTY3JvbGwuZW1w dHkoKTt2YXIgYT1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5fdGFiT3JpZW50 YXRpb24pe2Nhc2UgZS5UQUIuQk9UVE9NOnJldHVybiB0Lm9mZnNldCgpLmxl ZnQ7Y2FzZSBlLlRBQi5UT1A6cmV0dXJuIHQub2Zmc2V0KCkubGVmdDtjYXNl IGUuVEFCLkxFRlQ6cmV0dXJuIHQub2Zmc2V0KCkudG9wO2Nhc2UgZS5UQUIu UklHSFQ6cmV0dXJuIHQub2Zmc2V0KCkudG9wfX0uYmluZCh0aGlzKSxyPVtd LG89W10saT0wLG49YSh0aGlzLiR0YWJTY3JvbGwpLHM9dGhpcy5fcGFuZWxM aXN0Lmxlbmd0aD4xfHx0aGlzLl9pc0Zsb2F0aW5nfHx0aGlzLmlzQ29sbGFw c2VyKCk7dGhpcy5pc0NvbGxhcHNlcigpP3RoaXMuJHRhYkJhci5hZGRDbGFz cygid2NOb3RNb3ZlYWJsZSIpOih0aGlzLiR0aXRsZUJhci5yZW1vdmVDbGFz cygid2NOb3RNb3ZlYWJsZSIpLHRoaXMuJHRhYkJhci5yZW1vdmVDbGFzcygi d2NOb3RNb3ZlYWJsZSIpKSx0aGlzLiRjZW50ZXIuY2hpbGRyZW4oIi53Y1Bh bmVsVGFiQ29udGVudCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmFkZENs YXNzKCJ3Y1BhbmVsVGFiQ29udGVudEhpZGRlbiB3Y1BhbmVsVGFiVW51c2Vk Iil9KSx0aGlzLl90aXRsZVZpc2libGU9ITAsdGhpcy4kdGl0bGUuaHRtbCgi Iik7Zm9yKHZhciBsPTA7bDx0aGlzLl9wYW5lbExpc3QubGVuZ3RoOysrbCl7 dmFyIGM9dGhpcy5fcGFuZWxMaXN0W2xdLGg9bnVsbDtzJiYoaD1jLiR0aXRs ZSxjLiR0aXRsZS5hdHRyKCJpZCIsbCksdGhpcy4kdGFiU2Nyb2xsLmFwcGVu ZChjLiR0aXRsZSkpLGMubW92ZWFibGUoKXx8KHRoaXMuJHRpdGxlQmFyLmFk ZENsYXNzKCJ3Y05vdE1vdmVhYmxlIiksdGhpcy4kdGFiQmFyLmFkZENsYXNz KCJ3Y05vdE1vdmVhYmxlIikpLGMuX3RpdGxlVmlzaWJsZXx8KHRoaXMuX3Rp dGxlVmlzaWJsZT0hMSk7dmFyIHU9dGhpcy4kY2VudGVyLmNoaWxkcmVuKCcu d2NQYW5lbFRhYkNvbnRlbnRbaWQ9IicrbCsnIl0nKTt1Lmxlbmd0aHx8KHU9 JCgnPGRpdiBjbGFzcz0id2NQYW5lbFRhYkNvbnRlbnQgd2NQYW5lbFRhYkNv bnRlbnRIaWRkZW4iIGlkPSInK2wrJyI+JyksdGhpcy4kY2VudGVyLmFwcGVu ZCh1KSksYy5fX2NvbnRhaW5lcih1KSxjLl9wYXJlbnQ9dGhpczt2YXIgZD10 aGlzLl9jdXJUYWI9PT1sO2lmKGMuaXNWaXNpYmxlKCkhPT1kJiZyLnB1c2go e3BhbmVsOmMsaXNWaXNpYmxlOmR9KSx1LnJlbW92ZUNsYXNzKCJ3Y1BhbmVs VGFiVW51c2VkIiksZCYmKGgmJmguYWRkQ2xhc3MoIndjUGFuZWxUYWJBY3Rp dmUiKSx1LnJlbW92ZUNsYXNzKCJ3Y1BhbmVsVGFiQ29udGVudEhpZGRlbiIp LHRoaXMuJHRpdGxlLmh0bWwoYy50aXRsZSgpKSxjLiRpY29uKSl7dmFyIGY9 Yy4kaWNvbi5jbG9uZSgpO3RoaXMuJHRpdGxlLnByZXBlbmQoZil9aCYmKGk9 YShoKS1uLG8ucHVzaChpKSxpKz1oLm91dGVyV2lkdGgoKSl9dmFyIHA9dGhp cy4kdGl0bGVCYXIsYj0wO2lmKHRoaXMuX3RpdGxlVmlzaWJsZSl7c3dpdGNo KHRoaXMuJGZyYW1lLnBhcmVudCgpfHx0aGlzLiRjZW50ZXIuY3NzKCJ0b3Ai LCIiKSx0aGlzLl90YWJPcmllbnRhdGlvbil7Y2FzZSBlLlRBQi5UT1A6dGhp cy4kZnJhbWUucHJlcGVuZCh0aGlzLiR0YWJCYXIpLHRoaXMuJHRpdGxlQmFy LnJlbW92ZSgpLHRoaXMuJHRhYkJhci5hZGRDbGFzcygid2NUYWJUb3AiKS5y ZW1vdmVDbGFzcygid2NUYWJMZWZ0IHdjVGFiUmlnaHQgd2NUYWJCb3R0b20i KSxzP3RoaXMuJHRpdGxlLnJlbW92ZSgpOnRoaXMuJHRhYkJhci5wcmVwZW5k KHRoaXMuJHRpdGxlKSxwPXRoaXMuJHRhYkJhcix0aGlzLiRjZW50ZXIuY3Nz KCJsZWZ0IiwwKS5jc3MoInJpZ2h0IiwwKS5jc3MoImJvdHRvbSIsMCksYj10 aGlzLiRjZW50ZXIud2lkdGgoKTticmVhaztjYXNlIGUuVEFCLkJPVFRPTTpp Zih0aGlzLiRmcmFtZS5wcmVwZW5kKHRoaXMuJHRpdGxlQmFyKSx0aGlzLiR0 aXRsZUJhci5hcHBlbmQodGhpcy4kdGl0bGUpLHMpe3ZhciBfPXRoaXMuJHRp dGxlQmFyLmhlaWdodCgpO3RoaXMuJGZyYW1lLmFwcGVuZCh0aGlzLiR0YWJC YXIpLHRoaXMuJHRhYkJhci5hZGRDbGFzcygid2NUYWJCb3R0b20iKS5yZW1v dmVDbGFzcygid2NUYWJUb3Agd2NUYWJMZWZ0IHdjVGFiUmlnaHQiKSx0aGlz LiRjZW50ZXIuY3NzKCJsZWZ0IiwwKS5jc3MoInJpZ2h0IiwwKS5jc3MoImJv dHRvbSIsXyl9ZWxzZSB0aGlzLiR0YWJCYXIucmVtb3ZlKCk7Yj10aGlzLiRj ZW50ZXIud2lkdGgoKTticmVhaztjYXNlIGUuVEFCLkxFRlQ6aWYodGhpcy4k ZnJhbWUucHJlcGVuZCh0aGlzLiR0aXRsZUJhciksdGhpcy4kdGl0bGVCYXIu YXBwZW5kKHRoaXMuJHRpdGxlKSxzKXt2YXIgXz10aGlzLiR0aXRsZUJhci5o ZWlnaHQoKTt0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kdGFiQmFyKSx0aGlz LiR0YWJCYXIuYWRkQ2xhc3MoIndjVGFiTGVmdCIpLnJlbW92ZUNsYXNzKCJ3 Y1RhYlRvcCB3Y1RhYlJpZ2h0IHdjVGFiQm90dG9tIiksdGhpcy4kY2VudGVy LmNzcygibGVmdCIsXykuY3NzKCJyaWdodCIsMCkuY3NzKCJib3R0b20iLDAp fWVsc2UgdGhpcy4kdGFiQmFyLnJlbW92ZSgpO2I9dGhpcy4kY2VudGVyLmhl aWdodCgpO2JyZWFrO2Nhc2UgZS5UQUIuUklHSFQ6aWYodGhpcy4kZnJhbWUu cHJlcGVuZCh0aGlzLiR0aXRsZUJhciksdGhpcy4kdGl0bGVCYXIuYXBwZW5k KHRoaXMuJHRpdGxlKSxzKXt2YXIgXz10aGlzLiR0aXRsZUJhci5oZWlnaHQo KTt0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kdGFiQmFyKSx0aGlzLiR0YWJC YXIuYWRkQ2xhc3MoIndjVGFiUmlnaHQiKS5yZW1vdmVDbGFzcygid2NUYWJU b3Agd2NUYWJMZWZ0IHdjVGFiQm90dG9tIiksdGhpcy4kY2VudGVyLmNzcygi bGVmdCIsMCkuY3NzKCJyaWdodCIsXykuY3NzKCJib3R0b20iLDApfWVsc2Ug dGhpcy4kdGFiQmFyLnJlbW92ZSgpO2I9dGhpcy4kY2VudGVyLmhlaWdodCgp fXN8fHRoaXMuJGNlbnRlci5jc3MoImxlZnQiLDApLmNzcygicmlnaHQiLDAp LmNzcygiYm90dG9tIiwwKX1lbHNlIHRoaXMuJHRpdGxlQmFyLnJlbW92ZSgp LHRoaXMuJHRhYkJhci5yZW1vdmUoKSx0aGlzLiRjZW50ZXIuY3NzKCJ0b3Ai LDApLmNzcygibGVmdCIsMCkuY3NzKCJyaWdodCIsMCkuY3NzKCJib3R0b20i LDApO2lmKHRoaXMuJGNlbnRlci5jaGlsZHJlbigiLndjUGFuZWxUYWJVbnVz ZWQiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKX0pLHRoaXMu X3RpdGxlVmlzaWJsZSl7dmFyIHY9dGhpcy5fX29uVGFiQ2hhbmdlKCk7aWYo dClmb3IodmFyIGw9MDtsPG8ubGVuZ3RoOysrbClpZihsPT09dGhpcy5fY3Vy VGFiKXt2YXIgbT1vW2xdLHc9aTtsKzE8by5sZW5ndGgmJih3PW9bbCsxXSk7 dmFyIGc9LXBhcnNlSW50KHRoaXMuJHRhYlNjcm9sbC5jc3MoImxlZnQiKSks VD1iLXY7Zz5tPyh0aGlzLl90YWJTY3JvbGxQb3M9bS10aGlzLkxFRlRfVEFC X0JVRkZFUix0aGlzLl90YWJTY3JvbGxQb3M8MCYmKHRoaXMuX3RhYlNjcm9s bFBvcz0wKSk6dy1nPlQmJih0aGlzLl90YWJTY3JvbGxQb3M9dy1UK3RoaXMu TEVGVF9UQUJfQlVGRkVSKTticmVha31pZih0aGlzLl9jYW5TY3JvbGxUYWJz PSExLGk+Yi12KXt0aGlzLl9jYW5TY3JvbGxUYWJzPXRoaXMuX3RpdGxlVmlz aWJsZSx0aGlzLl9jYW5TY3JvbGxUYWJzJiYodGhpcy4kdGFiQnV0dG9uQmFy LmFwcGVuZCh0aGlzLiR0YWJSaWdodCksdGhpcy4kdGFiQnV0dG9uQmFyLmFw cGVuZCh0aGlzLiR0YWJMZWZ0KSx2Kz10aGlzLiR0YWJSaWdodC5vdXRlcldp ZHRoKCksdis9dGhpcy4kdGFiTGVmdC5vdXRlcldpZHRoKCkpO3ZhciB4PWkt KGItdikvMjtpZih0aGlzLl90YWJTY3JvbGxQb3M+eClmb3IodmFyIHk9dGhp cy4kdGFiU2Nyb2xsLmNoaWxkcmVuKCksbD0wO2w8eS5sZW5ndGg7KytsKXt2 YXIgaD0kKHlbbF0pO2lmKGk9YShoKS1uLGkraC5vdXRlcldpZHRoKCk+eCl7 dGhpcy5fdGFiU2Nyb2xsUG9zPWktdGhpcy5MRUZUX1RBQl9CVUZGRVIsdGhp cy5fdGFiU2Nyb2xsUG9zPDAmJih0aGlzLl90YWJTY3JvbGxQb3M9MCk7YnJl YWt9fX1lbHNlIHRoaXMuX3RhYlNjcm9sbFBvcz0wLHRoaXMuJHRhYkxlZnQu cmVtb3ZlKCksdGhpcy4kdGFiUmlnaHQucmVtb3ZlKCk7dGhpcy4kdGFiU2Ny b2xsLnN0b3AoKS5hbmltYXRlKHtsZWZ0Oi10aGlzLl90YWJTY3JvbGxQb3Mr InB4In0sImZhc3QiKTtmb3IodmFyIGw9MDtsPHIubGVuZ3RoOysrbClyW2xd LnBhbmVsLl9faXNWaXNpYmxlKHJbbF0uaXNWaXNpYmxlKX19LF9fb25UYWJD aGFuZ2U6ZnVuY3Rpb24oKXt2YXIgdD0wLGE9MCxyPXRoaXMucGFuZWwoKTtm b3IodGhpcy4kdGFiTGVmdC5yZW1vdmUoKSx0aGlzLiR0YWJSaWdodC5yZW1v dmUoKSx0aGlzLiRjbG9zZS5oaWRlKCksdGhpcy4kY29sbGFwc2UuaGlkZSgp O3RoaXMuX2J1dHRvbkxpc3QubGVuZ3RoOyl0aGlzLl9idXR0b25MaXN0LnBv cCgpLnJlbW92ZSgpO2lmKHIpe3ZhciBvPXIuc2Nyb2xsYWJsZSgpO2lmKHRo aXMuJGNlbnRlci50b2dnbGVDbGFzcygid2NTY3JvbGxhYmxlWCIsby54KSx0 aGlzLiRjZW50ZXIudG9nZ2xlQ2xhc3MoIndjU2Nyb2xsYWJsZVkiLG8ueSks dGhpcy4kZnJhbWUudG9nZ2xlQ2xhc3MoIndjT3ZlcmZsb3dWaXNpYmxlIixy Lm92ZXJmbG93VmlzaWJsZSgpKSx0aGlzLiRjZW50ZXIudG9nZ2xlQ2xhc3Mo IndjT3ZlcmZsb3dWaXNpYmxlIixyLm92ZXJmbG93VmlzaWJsZSgpKSwhdGhp cy5pc0NvbGxhcHNlcigpfHx0aGlzLmlzRXhwYW5kZWQoKSl7ci5jbG9zZWFi bGUoKSYmKHRoaXMuJGNsb3NlLnNob3coKSx0Kz10aGlzLiRjbG9zZS5vdXRl cldpZHRoKCkpO3ZhciBpPXRoaXMuZG9ja2VyKCk7aWYoaS5pc0NvbGxhcHNl RW5hYmxlZCgpJiZyLm1vdmVhYmxlKCkmJnIuY29sbGFwc2libGUoKSYmIXRo aXMuX2lzRmxvYXRpbmcmJiFyLl9pc1BsYWNlaG9sZGVyKWlmKHRoaXMuaXND b2xsYXBzZXIoKSl7dmFyIG49dGhpcy4kY29sbGFwc2UuY2hpbGRyZW4oImRp diIpO3N3aXRjaChuWzBdLmNsYXNzTmFtZT0iZmEgZmEtc2lnbi1vdXQiLHRo aXMuX3BhcmVudC5fcG9zaXRpb24pe2Nhc2UgZS5ET0NLLkxFRlQ6bi5hZGRD bGFzcygid2NDb2xsYXBzZUxlZnQiKTticmVhaztjYXNlIGUuRE9DSy5SSUdI VDpuLmFkZENsYXNzKCJ3Y0NvbGxhcHNlUmlnaHQiKTticmVhaztjYXNlIGUu RE9DSy5CT1RUT006bi5hZGRDbGFzcygid2NDb2xsYXBzZUJvdHRvbSIpfW4u YWRkQ2xhc3MoIndjQ29sbGFwc2VkIiksdGhpcy4kY29sbGFwc2Uuc2hvdygp LHRoaXMuJGNvbGxhcHNlLmF0dHIoInRpdGxlIiwiRG9jayB0aGlzIGNvbGxh cHNlZCBwYW5lbCBiYWNrIGludG8gdGhlIG1haW4gbGF5b3V0LiIpLHQrPXRo aXMuJGNvbGxhcHNlLm91dGVyV2lkdGgoKX1lbHNle3ZhciBzPWUuRE9DSy5C T1RUT007aWYoci5fY29sbGFwc2VEaXJlY3Rpb249PT1lLkRPQ0suTEVGVHx8 ci5fY29sbGFwc2VEaXJlY3Rpb249PT1lLkRPQ0suUklHSFR8fHIuX2NvbGxh cHNlRGlyZWN0aW9uPT09ZS5ET0NLLkJPVFRPTSlzPXIuX2NvbGxhcHNlRGly ZWN0aW9uO2Vsc2V7dmFyIGw9aS4kY29udGFpbmVyOyEkLmlzRW1wdHlPYmpl Y3QoaS5fY29sbGFwc2VyKSYmaS5fY29sbGFwc2VyLmhhc093blByb3BlcnR5 KGUuRE9DSy5SSUdIVCkmJihsPWkuX2NvbGxhcHNlcltlLkRPQ0suUklHSFRd Ll9wYXJlbnQuJHBhbmVbMF0pO3ZhciBjPWwub2Zmc2V0KCksaD10aGlzLiRj b250YWluZXIub2Zmc2V0KCk7aC5yaWdodD0oaC5sZWZ0K3RoaXMuJGNvbnRh aW5lci53aWR0aCgpLWMubGVmdCkvbC53aWR0aCgpLGguYm90dG9tPShoLnRv cCt0aGlzLiRjb250YWluZXIuaGVpZ2h0KCktYy50b3ApL2wuaGVpZ2h0KCks aC50b3A9KGgudG9wLWMudG9wKS9sLmhlaWdodCgpLGgubGVmdD0oaC5sZWZ0 LWMubGVmdCkvbC53aWR0aCgpLCJmdW5jdGlvbiI9PXR5cGVvZiByLl9jb2xs YXBzZURpcmVjdGlvbj9zPXIuX2NvbGxhcHNlRGlyZWN0aW9uKGgpOmgudG9w Pi41JiZoLmJvdHRvbT4uOTU/cz1lLkRPQ0suQk9UVE9NOmgubGVmdDw9LjA1 P3M9ZS5ET0NLLkxFRlQ6aC5yaWdodD49Ljk1P3M9ZS5ET0NLLlJJR0hUOmgu Ym90dG9tPi45NSYmKHM9ZS5ET0NLLkJPVFRPTSl9dmFyIHU9IiIsZD0iIjtz d2l0Y2gocyl7Y2FzZSBlLkRPQ0suTEVGVDp1PSJsZWZ0IHNpZGUuIixkPSJ3 Y0NvbGxhcHNlTGVmdCI7YnJlYWs7Y2FzZSBlLkRPQ0suUklHSFQ6dT0icmln aHQgc2lkZS4iLGQ9IndjQ29sbGFwc2VSaWdodCI7YnJlYWs7Y2FzZSBlLkRP Q0suQk9UVE9NOnU9ImJvdHRvbS4iLGQ9IndjQ29sbGFwc2VCb3R0b20ifWlm KHUpe3ZhciBuPXRoaXMuJGNvbGxhcHNlLmNoaWxkcmVuKCJkaXYiKTtuWzBd LmNsYXNzTmFtZT0iZmEgZmEtc2lnbi1pbiIsbi5hZGRDbGFzcyhkKSxuLmFk ZENsYXNzKCJ3Y0NvbGxhcHNpYmxlIiksdGhpcy4kY29sbGFwc2Uuc2hvdygp LHRoaXMuJGNvbGxhcHNlLmF0dHIoInRpdGxlIiwiQ29sbGFwc2UgdGhpcyBw YW5lbCBpbnRvIHRoZSAiK3UpLHQrPXRoaXMuJGNvbGxhcHNlLm91dGVyV2lk dGgoKX19Zm9yKHZhciBmPTA7ZjxyLl9idXR0b25MaXN0Lmxlbmd0aDsrK2Yp e3ZhciBwPXIuX2J1dHRvbkxpc3RbZl0sYj0kKCI8ZGl2PiIpLF89cC5jbGFz c05hbWU7Yi5hZGRDbGFzcygid2NGcmFtZUJ1dHRvbiIpLHAuaXNUb2dnbGFi bGUmJihiLmFkZENsYXNzKCJ3Y0ZyYW1lQnV0dG9uVG9nZ2xlciIpLHAuaXNU b2dnbGVkJiYoYi5hZGRDbGFzcygid2NGcmFtZUJ1dHRvblRvZ2dsZWQiKSxf PXAudG9nZ2xlQ2xhc3NOYW1lfHxfKSksYi5hdHRyKCJ0aXRsZSIscC50aXAp LGIuZGF0YSgibmFtZSIscC5uYW1lKSxiLnRleHQocC50ZXh0KSxfJiZiLnBy ZXBlbmQoJCgnPGRpdiBjbGFzcz0iJytfKyciPicpKSx0aGlzLl9idXR0b25M aXN0LnB1c2goYiksdGhpcy4kYnV0dG9uQmFyLmFwcGVuZChiKSx0Kz1iLm91 dGVyV2lkdGgoKX19aWYodGhpcy5fY2FuU2Nyb2xsVGFicyYmKHRoaXMuJHRh YkJ1dHRvbkJhci5hcHBlbmQodGhpcy4kdGFiUmlnaHQpLHRoaXMuJHRhYkJ1 dHRvbkJhci5hcHBlbmQodGhpcy4kdGFiTGVmdCksYSs9dGhpcy4kdGFiUmln aHQub3V0ZXJXaWR0aCgpK3RoaXMuJHRhYkxlZnQub3V0ZXJXaWR0aCgpKSx0 aGlzLl90aXRsZVZpc2libGUpc3dpdGNoKHRoaXMuJGJ1dHRvbkJhci5jc3Mo InJpZ2h0IiwiIiksdGhpcy5fdGFiT3JpZW50YXRpb24pe2Nhc2UgZS5UQUIu UklHSFQ6dGhpcy4kYnV0dG9uQmFyLmNzcygicmlnaHQiLHRoaXMuJHRhYkJh ci5oZWlnaHQoKSk7Y2FzZSBlLlRBQi5MRUZUOnRoaXMuJHRhYkJhci5jc3Mo IndpZHRoIix0aGlzLiRjZW50ZXIuaGVpZ2h0KCkrdGhpcy4kdGFiQmFyLmhl aWdodCgpKTticmVhaztjYXNlIGUuVEFCLlRPUDpjYXNlIGUuVEFCLkJPVFRP TTp0aGlzLiR0YWJCYXIuY3NzKCJ3aWR0aCIsdGhpcy4kY2VudGVyLndpZHRo KCkpfXIuX191cGRhdGUoKSx0aGlzLiRjZW50ZXIuc2Nyb2xsTGVmdChyLl9z Y3JvbGwueCksdGhpcy4kY2VudGVyLnNjcm9sbFRvcChyLl9zY3JvbGwueSl9 cmV0dXJuIHRoaXMuJGJ1dHRvbkJhci5jc3MoIm1pbi13aWR0aCIsdCkuY3Nz KCJ3aWR0aCIsdCksdGhpcy4kdGFiQnV0dG9uQmFyLmNzcygibWluLXdpZHRo IixhKS5jc3MoIndpZHRoIixhKSx0aGlzLl90YWJPcmllbnRhdGlvbj09PWUu VEFCLlRPUD8odGhpcy4kdGFiQnV0dG9uQmFyLmNzcygicmlnaHQiLHQpLHQr YSk6KHRoaXMuJHRhYkJ1dHRvbkJhci5jc3MoInJpZ2h0IiwwKSxhKX0sX19z Y3JvbGxlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFuZWwoKTt0Ll9zY3Jv bGwueD10aGlzLiRjZW50ZXIuc2Nyb2xsTGVmdCgpLHQuX3Njcm9sbC55PXRo aXMuJGNlbnRlci5zY3JvbGxUb3AoKSx0Ll9fdHJpZ2dlcihlLkVWRU5ULlND Uk9MTEVEKX0sX19mb2N1czpmdW5jdGlvbih0KXtpZih0KXt2YXIgZT0kKCc8 ZGl2IGNsYXNzPSJ3Y0ZyYW1lRmxhc2hlciI+Jyk7dGhpcy4kZnJhbWUuYXBw ZW5kKGUpLGUuYW5pbWF0ZSh7b3BhY2l0eToxfSwxMDApLmFuaW1hdGUoe29w YWNpdHk6MH0sMTAwKS5hbmltYXRlKHtvcGFjaXR5Oi42fSw1MCkuYW5pbWF0 ZSh7b3BhY2l0eTowfSw1MCkucXVldWUoZnVuY3Rpb24odCl7ZS5yZW1vdmUo KSx0KCl9KX19LF9fbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLiRjb250 YWluZXIud2lkdGgoKSxhPXRoaXMuJGNvbnRhaW5lci5oZWlnaHQoKTt0aGlz Ll9wb3MueD0odC54K3RoaXMuX2FuY2hvck1vdXNlLngpL2UsdGhpcy5fcG9z Lnk9KHQueSt0aGlzLl9hbmNob3JNb3VzZS55KS9hfSxfX2FuY2hvck1vdmU6 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kY29udGFpbmVyLndpZHRoKCksYT10 aGlzLiRjb250YWluZXIuaGVpZ2h0KCk7dGhpcy5fYW5jaG9yTW91c2UueD10 aGlzLl9wb3MueCplLXQueCx0aGlzLl9hbmNob3JNb3VzZS55PXRoaXMuX3Bv cy55KmEtdC55fSxfX3RhYk1vdmU6ZnVuY3Rpb24odCxlKXtpZih0Pj0wJiZ0 PHRoaXMuX3BhbmVsTGlzdC5sZW5ndGgmJmU+PTAmJmU8dGhpcy5fcGFuZWxM aXN0Lmxlbmd0aCl7dmFyIGE9dGhpcy5fcGFuZWxMaXN0LnNwbGljZSh0LDEp O3JldHVybiB0aGlzLl9wYW5lbExpc3Quc3BsaWNlKGUsMCxhWzBdKSx0aGlz Ll9jdXJUYWI9PT10JiYodGhpcy5fY3VyVGFiPWUpLHRoaXMuX191cGRhdGVU YWJzKCksdGhpcy4kdGFiQmFyLmZpbmQoJz4gLndjVGFiU2Nyb2xsZXIgPiAu d2NQYW5lbFRhYltpZD0iJytlKyciXScpWzBdfXJldHVybiExfSxfX2NoZWNr QW5jaG9yRHJvcDpmdW5jdGlvbih0LGUsYSxyLG8saSl7dmFyIG49dGhpcy5w YW5lbCgpO3JldHVybiBuJiZuLm1vdmVhYmxlKCk/bi5sYXlvdXQoKS5fX2No ZWNrQW5jaG9yRHJvcCh0LGUmJnRoaXMuX3RhYk9yaWVudGF0aW9uLGEsIXRo aXMuX2lzRmxvYXRpbmcmJiF0aGlzLmlzQ29sbGFwc2VyKCkmJnIsdGhpcy4k ZnJhbWUsbi5tb3ZlYWJsZSgpJiZuLnRpdGxlKCksbyx0aGlzLmlzQ29sbGFw c2VyKCk/dGhpcy5fdGFiT3JpZW50YXRpb246dm9pZCAwLGkpOiExfSxfX3Jl c2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBhPXRoaXMuJGNvbnRhaW5lci53aWR0 aCgpLHI9dGhpcy4kY29udGFpbmVyLmhlaWdodCgpLG89dGhpcy4kY29udGFp bmVyLm9mZnNldCgpO2UueC09by5sZWZ0LGUueS09by50b3A7Zm9yKHZhciBp PXRoaXMubWluU2l6ZSgpLG49dGhpcy5tYXhTaXplKCkscz17eDp0aGlzLl9w b3MueCphLXRoaXMuX3NpemUueC8yLHk6dGhpcy5fcG9zLnkqci10aGlzLl9z aXplLnkvMn0sbD0wO2w8dC5sZW5ndGg7KytsKXtzd2l0Y2godFtsXSl7Y2Fz ZSJ0b3AiOnRoaXMuX3NpemUueSs9cy55LWUueS0yLHMueT1lLnkrMix0aGlz Ll9zaXplLnk8aS55JiYocy55Kz10aGlzLl9zaXplLnktaS55LHRoaXMuX3Np emUueT1pLnkpLHRoaXMuX3NpemUueT5uLnkmJihzLnkrPXRoaXMuX3NpemUu eS1uLnksdGhpcy5fc2l6ZS55PW4ueSk7YnJlYWs7Y2FzZSJib3R0b20iOnRo aXMuX3NpemUueT1lLnktNC1zLnksdGhpcy5fc2l6ZS55PGkueSYmKHRoaXMu X3NpemUueT1pLnkpLHRoaXMuX3NpemUueT5uLnkmJih0aGlzLl9zaXplLnk9 bi55KTticmVhaztjYXNlImxlZnQiOnRoaXMuX3NpemUueCs9cy54LWUueC0y LHMueD1lLngrMix0aGlzLl9zaXplLng8aS54JiYocy54Kz10aGlzLl9zaXpl LngtaS54LHRoaXMuX3NpemUueD1pLngpLHRoaXMuX3NpemUueD5uLngmJihz LngrPXRoaXMuX3NpemUueC1uLngsdGhpcy5fc2l6ZS54PW4ueCk7YnJlYWs7 Y2FzZSJyaWdodCI6dGhpcy5fc2l6ZS54PWUueC00LXMueCx0aGlzLl9zaXpl Lng8aS54JiYodGhpcy5fc2l6ZS54PWkueCksdGhpcy5fc2l6ZS54Pm4ueCYm KHRoaXMuX3NpemUueD1uLngpfXRoaXMuX3Bvcy54PShzLngrdGhpcy5fc2l6 ZS54LzIpL2EsdGhpcy5fcG9zLnk9KHMueSt0aGlzLl9zaXplLnkvMikvcn19 LF9fc2hhZG93OmZ1bmN0aW9uKHQpe2lmKHQpdGhpcy4kc2hhZG93ZXJ8fCh0 aGlzLiRzaGFkb3dlcj0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lU2hhZG93ZXIi PicpLHRoaXMuJGZyYW1lLmFwcGVuZCh0aGlzLiRzaGFkb3dlciksdGhpcy4k c2hhZG93ZXIuYW5pbWF0ZSh7b3BhY2l0eTouNX0sMzAwKSk7ZWxzZSBpZih0 aGlzLiRzaGFkb3dlcil7dmFyIGU9dGhpczt0aGlzLiRzaGFkb3dlci5hbmlt YXRlKHtvcGFjaXR5OjB9LDMwMCkucXVldWUoZnVuY3Rpb24odCl7ZS4kc2hh ZG93ZXIucmVtb3ZlKCksZS4kc2hhZG93ZXI9bnVsbCx0KCl9KX19LF9fcmVj dDpmdW5jdGlvbigpe2lmKHRoaXMuaXNDb2xsYXBzZXIoKSlyZXR1cm4gdGhp cy5fcGFyZW50Ll9fcmVjdCgpO3ZhciB0PXRoaXMuJGZyYW1lLm9mZnNldCgp LGU9dGhpcy4kZnJhbWUud2lkdGgoKSxhPXRoaXMuJGZyYW1lLmhlaWdodCgp O3JldHVybnt4OnQubGVmdCx5OnQudG9wLHc6ZSxoOmF9fSxfX2NvbnRhaW5l cjpmdW5jdGlvbih0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHQ/dGhp cy4kY29udGFpbmVyOih0aGlzLiRjb250YWluZXI9dCx0aGlzLiRjb250YWlu ZXI/dGhpcy4kY29udGFpbmVyLmFwcGVuZCh0aGlzLiRmcmFtZSk6dGhpcy4k ZnJhbWUucmVtb3ZlKCksdGhpcy4kY29udGFpbmVyKX0sX19kZXN0cm95OmZ1 bmN0aW9uKCl7dGhpcy5fY3VyVGFiPS0xO2Zvcih2YXIgdD0wO3Q8dGhpcy5f cGFuZWxMaXN0Lmxlbmd0aDsrK3QpdGhpcy5fcGFuZWxMaXN0W3RdLl9fZGVz dHJveSgpO2Zvcig7dGhpcy5fcGFuZWxMaXN0Lmxlbmd0aDspdGhpcy5fcGFu ZWxMaXN0LnBvcCgpO3RoaXMuJG1vZGFsQmxvY2tlciYmKHRoaXMuJG1vZGFs QmxvY2tlci5yZW1vdmUoKSx0aGlzLiRtb2RhbEJsb2NrZXI9bnVsbCksdGhp cy5fX2NvbnRhaW5lcihudWxsKSx0aGlzLl9wYXJlbnQ9bnVsbH19KTtyZXR1 cm4gcn0pLGEoIndjRG9ja2VyL2RyYXdlciIsWyJkY2wvZGNsIiwiLi90eXBl cyIsIi4vZnJhbWUiLCIuL2Jhc2UiXSxmdW5jdGlvbih0LGUsYSxyKXt2YXIg bz10KHIse2RlY2xhcmVkQ2xhc3M6IndjRHJhd2VyIixjb25zdHJ1Y3Rvcjpm dW5jdGlvbih0LGEscil7dGhpcy4kY29udGFpbmVyPSQodCksdGhpcy4kZnJh bWU9bnVsbCx0aGlzLl9wb3NpdGlvbj1yLHRoaXMuX3BhcmVudD1hLHRoaXMu X2ZyYW1lPW51bGwsdGhpcy5fY2xvc2VTaXplPTAsdGhpcy5fZXhwYW5kZWQ9 ITEsdGhpcy5fc2xpZGluZz0hMSx0aGlzLl9vcmllbnRhdGlvbj10aGlzLl9w b3NpdGlvbj09PWUuRE9DSy5MRUZUfHx0aGlzLl9wb3NpdGlvbj09PWUuRE9D Sy5SSUdIVD9lLk9SSUVOVEFUSU9OLkhPUklaT05UQUw6ZS5PUklFTlRBVElP Ti5WRVJUSUNBTCx0aGlzLl9faW5pdCgpfSxjb2xsYXBzZTpmdW5jdGlvbih0 KXtpZih0aGlzLl9leHBhbmRlZCl7dmFyIGE9dGhpcy5fZnJhbWUucGFuZWwo KTtpZihhKXt2YXIgcj10aGlzLl9wYXJlbnQucG9zKCk7dGhpcy5fcG9zaXRp b24hPT1lLkRPQ0suTEVGVCYmKHI9MS1yKTt2YXIgbzt0aGlzLl9wb3NpdGlv bj09PWUuRE9DSy5CT1RUT00/KG89dGhpcy5kb2NrZXIoKS4kY29udGFpbmVy LmhlaWdodCgpLGEuX3NpemUueT1yKm8pOihvPXRoaXMuZG9ja2VyKCkuJGNv bnRhaW5lci53aWR0aCgpLGEuX3NpemUueD1yKm8pfWlmKHRoaXMuX2V4cGFu ZGVkPSExLHQpc3dpdGNoKHRoaXMuX3Bvc2l0aW9uKXtjYXNlIGUuRE9DSy5U T1A6Y2FzZSBlLkRPQ0suTEVGVDp0aGlzLl9wYXJlbnQucG9zKDApO2JyZWFr O2Nhc2UgZS5ET0NLLlJJR0hUOmNhc2UgZS5ET0NLLkJPVFRPTTp0aGlzLl9w YXJlbnQucG9zKDEpfWVsc2V7dGhpcy5fc2xpZGluZz0hMDt2YXIgaT10aGlz LG49ZnVuY3Rpb24oKXtpLl9zbGlkaW5nPSExLGkuX3BhcmVudC5fX3VwZGF0 ZSgpfTtzd2l0Y2godGhpcy5fcG9zaXRpb24pe2Nhc2UgZS5ET0NLLlRPUDpj YXNlIGUuRE9DSy5MRUZUOnRoaXMuX3BhcmVudC5hbmltUG9zKDAsbik7YnJl YWs7Y2FzZSBlLkRPQ0suUklHSFQ6Y2FzZSBlLkRPQ0suQk9UVE9NOnRoaXMu X3BhcmVudC5hbmltUG9zKDEsbil9fX19LGV4cGFuZDpmdW5jdGlvbigpe2lm KCF0aGlzLl9leHBhbmRlZCl7dGhpcy5fZXhwYW5kZWQ9ITAsdGhpcy5fc2xp ZGluZz0hMDt2YXIgdD10aGlzLl9mcmFtZS5wYW5lbCgpO2lmKHQpe3ZhciBh LHI7dGhpcy5fcG9zaXRpb249PT1lLkRPQ0suQk9UVE9NPyhhPXQuX3NpemUu eSxyPXRoaXMuZG9ja2VyKCkuJGNvbnRhaW5lci5oZWlnaHQoKSk6KGE9dC5f c2l6ZS54LHI9dGhpcy5kb2NrZXIoKS4kY29udGFpbmVyLndpZHRoKCkpLHRo aXMuX3Bvc2l0aW9uIT09ZS5ET0NLLkxFRlQmJihhPXItYSksYS89cjt2YXIg bz10aGlzO3RoaXMuX3BhcmVudC5hbmltUG9zKGEsZnVuY3Rpb24oKXtvLl9z bGlkaW5nPSExLG8uX3BhcmVudC5fX3VwZGF0ZSgpfSl9fX0saXNFeHBhbmRl ZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9leHBhbmRlZH0sbWluU2l6ZTpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9leHBhbmRlZD90aGlzLl9yb290JiYi ZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fcm9vdC5taW5TaXplP3RoaXMuX3Jv b3QubWluU2l6ZSgpOnt4OjEwMCx5OjEwMH06KHRoaXMuX19hZGp1c3RDb2xs YXBzZWRTaXplKCkse3g6dGhpcy5fY2xvc2VTaXplLHk6dGhpcy5fY2xvc2VT aXplfSl9LG1heFNpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9vcmllbnRh dGlvbj09PWUuT1JJRU5UQVRJT04uSE9SSVpPTlRBTD8hMDohMTtyZXR1cm4g dGhpcy5fZXhwYW5kZWR8fHRoaXMuX3NsaWRpbmc/dGhpcy5fcm9vdCYmImZ1 bmN0aW9uIj09dHlwZW9mIHRoaXMuX3Jvb3QubWF4U2l6ZT97eDp0P3RoaXMu X3Jvb3QubWF4U2l6ZSgpLng6MS8wLHk6dD8xLzA6dGhpcy5fcm9vdC5tYXhT aXplKCkueX06e3g6MS8wLHk6MS8wfToodGhpcy5fX2FkanVzdENvbGxhcHNl ZFNpemUoKSx7eDp0P3RoaXMuX2Nsb3NlU2l6ZToxLzAseTp0PzEvMDp0aGlz Ll9jbG9zZVNpemV9KX0sX19pbml0OmZ1bmN0aW9uKCl7dGhpcy4kZnJhbWU9 JCgnPGRpdiBjbGFzcz0id2NDb2xsYXBzZXJGcmFtZSI+JyksdGhpcy5fX2Nv bnRhaW5lcih0aGlzLiRjb250YWluZXIpLHRoaXMuX2ZyYW1lPW5ldyh0aGlz LmRvY2tlcigpLl9fZ2V0Q2xhc3MoIndjRnJhbWUiKSkodGhpcy4kZnJhbWUs dGhpcywhMSksdGhpcy5fZnJhbWUudGFiT3JpZW50YXRpb24odGhpcy5fcG9z aXRpb24pfSxfX3VwZGF0ZTpmdW5jdGlvbih0KXt0aGlzLl9fYWRqdXN0Q29s bGFwc2VkU2l6ZSgpLHRoaXMuX2ZyYW1lLl9fdXBkYXRlKCl9LF9fYWRqdXN0 Q29sbGFwc2VkU2l6ZTpmdW5jdGlvbigpe3RoaXMuX2ZyYW1lLl9wYW5lbExp c3QubGVuZ3RoPyh0aGlzLl9jbG9zZVNpemU9dGhpcy5fZnJhbWUuJHRhYkJh ci5vdXRlckhlaWdodCgpLHRoaXMuX3BhcmVudC4kYmFyLnJlbW92ZUNsYXNz KCJ3Y1NwbGl0dGVySGlkZGVuIikpOih0aGlzLl9jbG9zZVNpemU9MCx0aGlz Ll9wYXJlbnQuJGJhci5hZGRDbGFzcygid2NTcGxpdHRlckhpZGRlbiIpKX0s X19yZWN0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kZnJhbWUub2Zmc2V0KCks YT10aGlzLiRmcmFtZS53aWR0aCgpLHI9dGhpcy4kZnJhbWUuaGVpZ2h0KCks bz10aGlzLl9mcmFtZS5wYW5lbCgpO3JldHVybiBvJiYodGhpcy5fcG9zaXRp b249PT1lLkRPQ0suQk9UVE9NPyhyPW8uX3NpemUueSxhLz0zKTooYT1vLl9z aXplLngsci89MykpLHt4OnQubGVmdCx5OnQudG9wLHc6YSxoOnJ9fSxfX3Nh dmU6ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gdC5jbG9zZVNpemU9dGhp cy5fY2xvc2VTaXplLHQuZnJhbWU9dGhpcy5fZnJhbWUuX19zYXZlKCksdH0s X19yZXN0b3JlOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY2xvc2VTaXplPXQuY2xv c2VTaXplLHRoaXMuX2ZyYW1lLl9fcmVzdG9yZSh0LmZyYW1lLGUpLHRoaXMu X19hZGp1c3RDb2xsYXBzZWRTaXplKCl9LF9fY29udGFpbmVyOmZ1bmN0aW9u KHQpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdD90aGlzLiRjb250YWlu ZXI6KHRoaXMuJGNvbnRhaW5lcj10LHRoaXMuJGNvbnRhaW5lcj90aGlzLiRj b250YWluZXIuYXBwZW5kKHRoaXMuJGZyYW1lKTp0aGlzLiRmcmFtZS5yZW1v dmUoKSx0aGlzLiRjb250YWluZXIpfSxfX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0 aGlzLl9mcmFtZSYmKHRoaXMuX2ZyYW1lLl9fZGVzdHJveSgpLHRoaXMuX2Zy YW1lPW51bGwpLHRoaXMuX19jb250YWluZXIobnVsbCksdGhpcy5fcGFyZW50 PW51bGx9fSk7cmV0dXJuIG99KSxhKCJ3Y0RvY2tlci9jb2xsYXBzZXIiLFsi ZGNsL2RjbCIsIi4vdHlwZXMiLCIuL3NwbGl0dGVyIiwiLi9kcmF3ZXIiLCIu L2Jhc2UiXSxmdW5jdGlvbih0LGUsYSxyLG8pe3ZhciBpPXQobyx7ZGVjbGFy ZWRDbGFzczoid2NDb2xsYXBzZXIiLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQs YSxyKXt0aGlzLiRjb250YWluZXI9JCh0KSx0aGlzLiRmcmFtZT1udWxsLHRo aXMuX3Bvc2l0aW9uPXIsdGhpcy5fcGFyZW50PWEsdGhpcy5fc3BsaXR0ZXI9 bnVsbCx0aGlzLl9kcmF3ZXI9bnVsbCx0aGlzLl9zaXplPTAsdGhpcy5fb3Jp ZW50YXRpb249dGhpcy5fcG9zaXRpb249PT1lLkRPQ0suTEVGVHx8dGhpcy5f cG9zaXRpb249PT1lLkRPQ0suUklHSFQ/ZS5PUklFTlRBVElPTi5IT1JJWk9O VEFMOmUuT1JJRU5UQVRJT04uVkVSVElDQUwsdGhpcy5fX2luaXQoKX0sY29s bGFwc2U6ZnVuY3Rpb24odCl7dGhpcy5fZHJhd2VyLmNvbGxhcHNlKCl9LGV4 cGFuZDpmdW5jdGlvbigpe3RoaXMuX2RyYXdlci5leHBhbmQoKX0saXNFeHBh bmRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmF3ZXIuaXNFeHBhbmRl ZCgpfSxtaW5TaXplOmZ1bmN0aW9uKCl7cmV0dXJue3g6dGhpcy5fc2l6ZSx5 OnRoaXMuX3NpemV9fSxtYXhTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5f b3JpZW50YXRpb249PT1lLk9SSUVOVEFUSU9OLkhPUklaT05UQUw/ITA6ITE7 cmV0dXJue3g6dD90aGlzLl9zaXplOjEvMCx5OnQ/MS8wOnRoaXMuX3NpemV9 fSxfX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLiRmcmFtZT0kKCc8ZGl2IGNsYXNz PSJ3Y0NvbGxhcHNlckZyYW1lIj4nKSx0aGlzLl9fY29udGFpbmVyKHRoaXMu JGNvbnRhaW5lcik7dmFyIHQ9dGhpcy5kb2NrZXIoKTtzd2l0Y2godGhpcy5f c3BsaXR0ZXI9bmV3KHRoaXMuZG9ja2VyKCkuX19nZXRDbGFzcygid2NTcGxp dHRlciIpKSh0LiRjb250YWluZXIsdGhpcyx0aGlzLl9vcmllbnRhdGlvbiks dGhpcy5fZHJhd2VyPW5ldyh0aGlzLmRvY2tlcigpLl9fZ2V0Q2xhc3MoIndj RHJhd2VyIikpKHQuJHRyYW5zaXRpb24sdGhpcy5fc3BsaXR0ZXIsdGhpcy5f cG9zaXRpb24pLHRoaXMuX3Bvc2l0aW9uKXtjYXNlIGUuRE9DSy5MRUZUOnRo aXMuX3NwbGl0dGVyLnBhbmUoMCx0aGlzLl9kcmF3ZXIpLHRoaXMuX3NwbGl0 dGVyLiRwYW5lWzFdLnJlbW92ZSgpLHRoaXMuX3NwbGl0dGVyLiRwYW5lWzBd LmFkZENsYXNzKCJ3Y0RyYXdlciIpLHRoaXMuX3NwbGl0dGVyLnBvcygwKTti cmVhaztjYXNlIGUuRE9DSy5SSUdIVDpjYXNlIGUuRE9DSy5CT1RUT006dGhp cy5fc3BsaXR0ZXIucGFuZSgxLHRoaXMuX2RyYXdlciksdGhpcy5fc3BsaXR0 ZXIuJHBhbmVbMF0ucmVtb3ZlKCksdGhpcy5fc3BsaXR0ZXIuJHBhbmVbMV0u YWRkQ2xhc3MoIndjRHJhd2VyIiksdGhpcy5fc3BsaXR0ZXIucG9zKDEpfXRo aXMuX3BhcmVudC4kYmFyLmFkZENsYXNzKCJ3Y1NwbGl0dGVySGlkZGVuIil9 LF9fdXBkYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3NwbGl0dGVyLl9fdXBkYXRl KCksdGhpcy5fX2FkanVzdFNpemUoKX0sX19hZGp1c3RTaXplOmZ1bmN0aW9u KCl7dGhpcy5fZHJhd2VyLl9mcmFtZS5fcGFuZWxMaXN0Lmxlbmd0aD90aGlz Ll9zaXplPXRoaXMuX2RyYXdlci5fZnJhbWUuJHRhYkJhci5vdXRlckhlaWdo dCgpOnRoaXMuX3NpemU9MH0sX19yZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX2RyYXdlci5fX3JlY3QoKX0sX19zYXZlOmZ1bmN0aW9uKCl7dmFyIHQ9 e307cmV0dXJuIHQuc2l6ZT10aGlzLl9zaXplLHQuZHJhd2VyPXRoaXMuX2Ry YXdlci5fX3NhdmUoKSx0fSxfX3Jlc3RvcmU6ZnVuY3Rpb24odCxlKXt0aGlz Ll9zaXplPXQuc2l6ZSx0aGlzLl9kcmF3ZXIuX19yZXN0b3JlKHQuZHJhd2Vy LGUpLHRoaXMuX19hZGp1c3RTaXplKCl9LF9fY29udGFpbmVyOmZ1bmN0aW9u KHQpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdD90aGlzLiRjb250YWlu ZXI6KHRoaXMuJGNvbnRhaW5lcj10LHRoaXMuJGNvbnRhaW5lcj90aGlzLiRj b250YWluZXIuYXBwZW5kKHRoaXMuJGZyYW1lKTp0aGlzLiRmcmFtZS5yZW1v dmUoKSx0aGlzLiRjb250YWluZXIpfSxfX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0 aGlzLl9zcGxpdHRlciYmKHRoaXMuX3NwbGl0dGVyLl9fZGVzdHJveSgpLHRo aXMuX3NwbGl0dGVyPW51bGwsdGhpcy5fZnJhbWU9bnVsbCksdGhpcy5fX2Nv bnRhaW5lcihudWxsKSx0aGlzLl9wYXJlbnQ9bnVsbH19KTtyZXR1cm4gaX0p LGEoIndjRG9ja2VyL2xheW91dCIsWyJkY2wvZGNsIiwiLi90eXBlcyJdLGZ1 bmN0aW9uKHQsZSl7dmFyIGE9dChudWxsLHtkZWNsYXJlZENsYXNzOiJ3Y0xh eW91dCIsY29uc3RydWN0b3I6ZnVuY3Rpb24odCxlKXt0aGlzLiRjb250YWlu ZXI9JCh0KSx0aGlzLl9wYXJlbnQ9ZSx0aGlzLiRlbGVtPW51bGwsdGhpcy5f X2luaXQoKX0sYWRkSXRlbTpmdW5jdGlvbih0KXt9LGNsZWFyOmZ1bmN0aW9u KCl7fSxzY2VuZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbGVtfSxfX2lu aXQ6ZnVuY3Rpb24oKXt9LF9fdXBkYXRlOmZ1bmN0aW9uKCl7fSxfX2NoZWNr QW5jaG9yRHJvcDpmdW5jdGlvbih0LGEscixvLGksbixzLGwsYyl7ZnVuY3Rp b24gaCh0LGUsYSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fHwic3RyaW5n Ij09dHlwZW9mIHQmJi0xIT09dC5pbmRleE9mKCJweCIsdC5sZW5ndGgtMik/ KHQ9cGFyc2VJbnQodCkse3g6dCx5OnR9KToic3RyaW5nIj09dHlwZW9mIHQm Ji0xIT09dC5pbmRleE9mKCIlIix0Lmxlbmd0aC0xKT8odD1wYXJzZUludCh0 KS8xMDAse3g6ZSp0LHk6YSp0fSk6e3g6MCx5OjB9fXZhciB1PXRoaXMuX3Bh cmVudC5kb2NrZXIoKSxkPWkub3V0ZXJXaWR0aCgpLGY9aS5vdXRlckhlaWdo dCgpLHA9aS5vZmZzZXQoKSxiPWkuZmluZCgiLndjRnJhbWVUaXRsZUJhciIp LmhlaWdodCgpO258fChiPTApO3ZhciBfPWgodS5fb3B0aW9ucy5lZGdlQW5j aG9yU2l6ZSx1LiRjb250YWluZXIub3V0ZXJXaWR0aCgpLHUuJGNvbnRhaW5l ci5vdXRlckhlaWdodCgpKSx2PWgodS5fb3B0aW9ucy5wYW5lbEFuY2hvclNp emUsZCxmKTtpZihuKXtpZigoIWx8fGw9PT1lLlRBQi5UT1ApJiZ0Lnk+PXAu dG9wJiZ0Lnk8PXAudG9wK2ImJnQueD49cC5sZWZ0JiZ0Lng8PXAubGVmdCtk KXJldHVybiByLmFuY2hvcih0LHt4OnAubGVmdC0yLHk6cC50b3AtMix3OmQs aDpiLTIsbG9jOmUuRE9DSy5TVEFDS0VELHRhYjplLlRBQi5UT1AsaXRlbTp0 aGlzLHNlbGY6YT09PWUuVEFCLlRPUHx8cyYmYX0pLCEwO2lmKHUuX2Nhbk9y aWVudFRhYnMpe2lmKCghbHx8bD09PWUuVEFCLkJPVFRPTSkmJnQueT49cC50 b3ArZi1iJiZ0Lnk8PXAudG9wK2YmJnQueD49cC5sZWZ0JiZ0Lng8PXAubGVm dCtkKXJldHVybiByLmFuY2hvcih0LHt4OnAubGVmdC0yLHk6cC50b3ArZi1i LTIsdzpkLGg6Yixsb2M6ZS5ET0NLLlNUQUNLRUQsdGFiOmUuVEFCLkJPVFRP TSxpdGVtOnRoaXMsc2VsZjphPT09ZS5UQUIuQk9UVE9NfSksITA7aWYoKCFs fHxsPT09ZS5UQUIuTEVGVCkmJnQueT49cC50b3AmJnQueTw9cC50b3ArZiYm dC54Pj1wLmxlZnQmJnQueDw9cC5sZWZ0K2IpcmV0dXJuIHIuYW5jaG9yKHQs e3g6cC5sZWZ0LTIseTpwLnRvcC0yLHc6Yi0yLGg6Zixsb2M6ZS5ET0NLLlNU QUNLRUQsdGFiOmUuVEFCLkxFRlQsaXRlbTp0aGlzLHNlbGY6YT09PWUuVEFC LkxFRlR9KSwhMDtpZigoIWx8fGw9PT1lLlRBQi5SSUdIVCkmJnQueT49cC50 b3AmJnQueTw9cC50b3ArZiYmdC54Pj1wLmxlZnQrZC1iJiZ0Lng8PXAubGVm dCtkKXJldHVybiByLmFuY2hvcih0LHt4OnAubGVmdCtkLWItMix5OnAudG9w LTIsdzpiLGg6Zixsb2M6ZS5ET0NLLlNUQUNLRUQsdGFiOmUuVEFCLlJJR0hU LGl0ZW06dGhpcyxzZWxmOmE9PT1lLlRBQi5SSUdIVH0pLCEwfX1pZihjJiZy Ll9vdXRlciYmci5faW5uZXIpe3ZhciBtPXIuX291dGVyLiRjb250YWluZXIu b3V0ZXJXaWR0aCgpLHc9ci5fb3V0ZXIuJGNvbnRhaW5lci5vdXRlckhlaWdo dCgpLGc9ci5fb3V0ZXIuJGNvbnRhaW5lci5vZmZzZXQoKTtpZih0Lnk+PWcu dG9wJiZ0Lnk8PWcudG9wK3cmJnQueD49Zy5sZWZ0K2ImJnQueDw9Zy5sZWZ0 K2IrXy54KXJldHVybiByLmFuY2hvcih0LHt4OmcubGVmdC0yLHk6Zy50b3At Mix3Om0vMyxoOncsbG9jOmUuRE9DSy5MRUZULGl0ZW06ci5faW5uZXIsc2Vs ZjohMX0pLCEwO2lmKHQueT49Zy50b3AmJnQueTw9Zy50b3ArdyYmdC54Pj1n LmxlZnQrbS1fLngtYiYmdC54PD1nLmxlZnQrbS1iKXJldHVybiByLmFuY2hv cih0LHt4OmcubGVmdCttLW0vMy0yLHk6Zy50b3AtMix3Om0vMyxoOncsbG9j OmUuRE9DSy5SSUdIVCxpdGVtOnIuX2lubmVyLHNlbGY6ITF9KSwhMDtpZih0 Lnk+PWcudG9wK2ImJnQueTw9Zy50b3ArYitfLnkmJnQueD49Zy5sZWZ0JiZ0 Lng8PWcubGVmdCttKXJldHVybiByLmFuY2hvcih0LHt4OmcubGVmdC0yLHk6 Zy50b3AtMix3Om0saDp3LzMsbG9jOmUuRE9DSy5UT1AsaXRlbTpyLl9pbm5l cixzZWxmOiExfSksITA7aWYodC55Pj1nLnRvcCt3LWItXy55JiZ0Lnk8PWcu dG9wK3ctYiYmdC54Pj1nLmxlZnQmJnQueDw9Zy5sZWZ0K20pcmV0dXJuIHIu YW5jaG9yKHQse3g6Zy5sZWZ0LTIseTpnLnRvcCt3LXcvMy0yLHc6bSxoOncv Myxsb2M6ZS5ET0NLLkJPVFRPTSxpdGVtOnIuX2lubmVyLHNlbGY6ITF9KSwh MH1pZighbylyZXR1cm4hMTtpZih0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVu dC5pbnN0YW5jZU9mKCJ3Y1BhbmVsIikmJnRoaXMuX3BhcmVudC5faXNQbGFj ZWhvbGRlcilyZXR1cm4gci5hbmNob3IodCx7eDpwLmxlZnQtMix5OnAudG9w LTIsdzpkLGg6Zixsb2M6ZS5ET0NLLlRPUCxpdGVtOnRoaXMsc2VsZjohMX0p LCEwO2lmKGY+ZCl7aWYodC55Pj1wLnRvcCYmdC55PD1wLnRvcCtiK3YueSYm dC54Pj1wLmxlZnQmJnQueDw9cC5sZWZ0K2QpcmV0dXJuIHIuYW5jaG9yKHQs e3g6cC5sZWZ0LTIseTpwLnRvcC0yLHc6ZCxoOi41KmYsbG9jOmUuRE9DSy5U T1AsaXRlbTp0aGlzLHNlbGY6ITF9KSwhMDtpZih0Lnk+PXAudG9wK2Ytdi55 LWImJnQueTw9cC50b3ArZiYmdC54Pj1wLmxlZnQmJnQueDw9cC5sZWZ0K2Qp cmV0dXJuIHIuYW5jaG9yKHQse3g6cC5sZWZ0LTIseTpwLnRvcCsoZi0uNSpm KS0yLHc6ZCxoOi41KmYsbG9jOmUuRE9DSy5CT1RUT00saXRlbTp0aGlzLHNl bGY6ITF9KSwhMH1pZih0Lnk+PXAudG9wJiZ0Lnk8PXAudG9wK2Ype2lmKHQu eD49cC5sZWZ0JiZ0Lng8PXAubGVmdCt2LngrYilyZXR1cm4gci5hbmNob3Io dCx7eDpwLmxlZnQtMix5OnAudG9wLTIsdzouNSpkLGg6Zixsb2M6ZS5ET0NL LkxFRlQsaXRlbTp0aGlzLHNlbGY6ITF9KSwhMDtpZih0Lng+PXAubGVmdCtk LXYueC1iJiZ0Lng8PXAubGVmdCtkKXJldHVybiByLmFuY2hvcih0LHt4OnAu bGVmdCsuNSpkLTIseTpwLnRvcC0yLHc6LjUqZCxoOmYsbG9jOmUuRE9DSy5S SUdIVCxpdGVtOnRoaXMsc2VsZjohMX0pLCEwfWlmKGQ+PWYpe2lmKHQueT49 cC50b3AmJnQueTw9cC50b3Ardi55K2ImJnQueD49cC5sZWZ0JiZ0Lng8PXAu bGVmdCtkKXJldHVybiByLmFuY2hvcih0LHt4OnAubGVmdC0yLHk6cC50b3At Mix3OmQsaDouNSpmLGxvYzplLkRPQ0suVE9QLGl0ZW06dGhpcyxzZWxmOiEx fSksITA7aWYodC55Pj1wLnRvcCtmLXYueS1iJiZ0Lnk8PXAudG9wK2YmJnQu eD49cC5sZWZ0JiZ0Lng8PXAubGVmdCtkKXJldHVybiByLmFuY2hvcih0LHt4 OnAubGVmdC0yLHk6cC50b3ArKGYtLjUqZiktMix3OmQsaDouNSpmLGxvYzpl LkRPQ0suQk9UVE9NLGl0ZW06dGhpcyxzZWxmOiExfSksITB9cmV0dXJuITF9 LF9fY29udGFpbmVyOmZ1bmN0aW9uKHQpe3JldHVybiJ1bmRlZmluZWQiPT10 eXBlb2YgdD90aGlzLiRjb250YWluZXI6KHRoaXMuJGNvbnRhaW5lcj10LHRo aXMuJGNvbnRhaW5lcj90aGlzLiRjb250YWluZXIuYXBwZW5kKHRoaXMuJGVs ZW0pOnRoaXMuJGVsZW0ucmVtb3ZlKCksdGhpcy4kY29udGFpbmVyKX0sX19k ZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fX2NvbnRhaW5lcihudWxsKSx0aGlz Ll9wYXJlbnQ9bnVsbCx0aGlzLmNsZWFyKCksdGhpcy4kZWxlbS5yZW1vdmUo KSx0aGlzLiRlbGVtPW51bGx9fSk7cmV0dXJuIGF9KSxhKCJ3Y0RvY2tlci9s YXlvdXRzaW1wbGUiLFsiZGNsL2RjbCIsIi4vdHlwZXMiLCIuL2xheW91dCJd LGZ1bmN0aW9uKHQsZSxhKXt2YXIgcj10KGEse2RlY2xhcmVkQ2xhc3M6Indj TGF5b3V0U2ltcGxlIixhZGRJdGVtOmZ1bmN0aW9uKHQpe3RoaXMuJGVsZW0u YXBwZW5kKHQpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuJGVsZW0ucmVtb3Zl KCksdGhpcy4kZWxlbT1udWxsLHRoaXMuX19pbml0KCl9LF9faW5pdDpmdW5j dGlvbigpe3RoaXMuJGVsZW09JCgnPGRpdiBjbGFzcz0id2NMYXlvdXQgd2NX aWRlIHdjVGFsbCI+PC9kaXY+JyksdGhpcy5fX2NvbnRhaW5lcih0aGlzLiRj b250YWluZXIpfSxfX3VwZGF0ZTpmdW5jdGlvbigpe319KTtyZXR1cm4gcn0p LGEoIndjRG9ja2VyL2xheW91dHRhYmxlIixbImRjbC9kY2wiLCIuL3R5cGVz IiwiLi9sYXlvdXQiXSxmdW5jdGlvbih0LGUsYSl7dmFyIHI9dChhLHtkZWNs YXJlZENsYXNzOiJ3Y0xheW91dFRhYmxlIixhZGRJdGVtOmZ1bmN0aW9uKHQs ZSxhLHIsbyl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgZXx8MD5lKSYm KGU9MCksKCJ1bmRlZmluZWQiPT10eXBlb2YgYXx8MD5hKSYmKGE9MCksKCJ1 bmRlZmluZWQiPT10eXBlb2Ygcnx8MD49cikmJihyPTEpLCgidW5kZWZpbmVk Ij09dHlwZW9mIG98fDA+PW8pJiYobz0xKSx0aGlzLl9fcmVzaXplR3JpZChl K3ItMSxhK28tMSksKHI+MXx8bz4xKSYmIXRoaXMuX19tZXJnZUdyaWQoZSxh LHIsbyk/ITE6KHRoaXMuX2dyaWRbYV1bZV0uJGVsLmFwcGVuZCgkKHQpKSx0 aGlzLml0ZW0oZSxhKSl9LGl0ZW06ZnVuY3Rpb24odCxlKXtpZihlPj10aGlz Ll9ncmlkLmxlbmd0aClyZXR1cm4hMTtpZih0Pj10aGlzLl9ncmlkW2VdLmxl bmd0aClyZXR1cm4hMTt2YXIgYT10aGlzLHI9eyQ6YS5fZ3JpZFtlXVt0XS4k ZWwsY3NzOmZ1bmN0aW9uKG8saSl7aWYoYS5fZ3JpZFtlXVt0XS4kZWwpe2lm KHZvaWQgMD09PWkpcmV0dXJuIGEuX2dyaWRbZV1bdF0uJGVsLmNzcyhvKTth Ll9ncmlkW2VdW3RdLiRlbC5jc3MobyxpKX1yZXR1cm4gcn0sc3RyZXRjaDpm dW5jdGlvbihvLGkpe3JldHVybiBhLml0ZW1TdHJldGNoKHQsZSxvLGkpLHJ9 fTtyZXR1cm4gcn0saXRlbVN0cmV0Y2g6ZnVuY3Rpb24odCxlLGEscil7dmFy IG89dGhpcy5fYmF0Y2hQcm9jZXNzO3RoaXMuX2JhdGNoUHJvY2Vzcz0hMCx0 aGlzLl9fcmVzaXplR3JpZCh0LGUpO3ZhciBpPXRoaXMuX2dyaWRbZV1bdF07 cmV0dXJuIGkueDwwfHxpLnk8MD8hMToodm9pZCAwIT09YSYmKGkuc3g9YSks dm9pZCAwIT09ciYmKGkuc3k9ciksdGhpcy5fYmF0Y2hQcm9jZXNzPW8sb3x8 dGhpcy5fX3Jlc2l6ZUdyaWQoMCwwKSwhMCl9LGNsZWFyOmZ1bmN0aW9uKCl7 dmFyIHQ9dGhpcy5zaG93R3JpZCgpLGU9dGhpcy5ncmlkU3BhY2luZygpLGE9 dGhpcy5ncmlkQWx0ZXJuYXRlKCk7dGhpcy4kZWxlbS5yZW1vdmUoKSx0aGlz Ll9faW5pdCgpLHRoaXMuc2hvd0dyaWQodCksdGhpcy5ncmlkU3BhY2luZyhl KSx0aGlzLmdyaWRBbHRlcm5hdGUoYSksdGhpcy5fZ3JpZD1bXX0sc3RhcnRC YXRjaDpmdW5jdGlvbigpe3RoaXMuX2JhdGNoUHJvY2Vzcz0hMH0sZmluaXNo QmF0Y2g6ZnVuY3Rpb24oKXt0aGlzLl9iYXRjaFByb2Nlc3M9ITEsdGhpcy5f X3Jlc2l6ZUdyaWQoMCwwKX0sc2hvd0dyaWQ6ZnVuY3Rpb24odCl7cmV0dXJu InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0aGlzLiRlbGVtLnRvZ2dsZUNsYXNz KCJ3Y0xheW91dEdyaWQiLHQpLHRoaXMuJGVsZW0uaGFzQ2xhc3MoIndjTGF5 b3V0R3JpZCIpfSxncmlkU3BhY2luZzpmdW5jdGlvbih0KXtyZXR1cm4idW5k ZWZpbmVkIiE9dHlwZW9mIHQmJnRoaXMuJGVsZW0uY3NzKCJib3JkZXItc3Bh Y2luZyIsdCsicHgiKSxwYXJzZUludCh0aGlzLiRlbGVtLmNzcygiYm9yZGVy LXNwYWNpbmciKSl9LGdyaWRBbHRlcm5hdGU6ZnVuY3Rpb24odCl7cmV0dXJu InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0aGlzLiRlbGVtLnRvZ2dsZUNsYXNz KCJ3Y0xheW91dEdyaWRBbHRlcm5hdGUiLHQpLHRoaXMuJGVsZW0uaGFzQ2xh c3MoIndjTGF5b3V0R3JpZEFsdGVybmF0ZSIpfSxfX2luaXQ6ZnVuY3Rpb24o KXt0aGlzLiRlbGVtPSQoJzx0YWJsZSBjbGFzcz0id2NMYXlvdXQgd2NXaWRl IHdjVGFsbCI+PC90YWJsZT4nKSx0aGlzLiRlbGVtLmFwcGVuZCgkKCI8dGJv ZHk+PC90Ym9keT4iKSksdGhpcy5fZ3JpZD1bXSx0aGlzLl9fY29udGFpbmVy KHRoaXMuJGNvbnRhaW5lcil9LF9fdXBkYXRlOmZ1bmN0aW9uKCl7fSxfX3Jl c2l6ZUdyaWQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGE9MDtlPj1hOysrYSl7 aWYodGhpcy5fZ3JpZC5sZW5ndGg8PWEpe3ZhciByPVtdO3IuJHJvdz0kKCI8 dHI+IiksdGhpcy5fZ3JpZC5wdXNoKHIpfWZvcih2YXIgbz0wO3Q+PW87Kytv KXRoaXMuX2dyaWRbYV0ubGVuZ3RoPD1vJiZ0aGlzLl9ncmlkW2FdLnB1c2go eyRlbDokKCI8dGQ+IikseDowLHk6MCxzeDoiIixzeToiIn0pfWlmKCF0aGlz Ll9iYXRjaFByb2Nlc3Mpe3ZhciBpPXRoaXMuJGVsZW0uZmluZCgidGJvZHki KTskKCIud2NEb2NrZXJUcmFuc2l0aW9uIikuYXBwZW5kKGkpO2Zvcih2YXIg bj0kKCI8dGJvZHk+IiksYT0wO2E8dGhpcy5fZ3JpZC5sZW5ndGg7KythKWZv cih2YXIgcz1udWxsLG89MDtvPHRoaXMuX2dyaWRbYV0ubGVuZ3RoOysrbyl7 dmFyIGw9dGhpcy5fZ3JpZFthXVtvXTtsLiRlbCYmKHN8fChzPXRoaXMuX2dy aWRbYV0uJHJvdyxuLmFwcGVuZChzKSksbC4kZWwuY3NzKCJ3aWR0aCIsbC5z eCksbC4kZWwuY3NzKCJoZWlnaHQiLGwuc3kpLHMuYXBwZW5kKGwuJGVsKSl9 dGhpcy4kZWxlbS5hcHBlbmQobiksaS5yZW1vdmUoKX19LF9fbWVyZ2VHcmlk OmZ1bmN0aW9uKHQsZSxhLHIpe2Zvcih2YXIgbz0wO3I+bzsrK28pZm9yKHZh ciBpPTA7YT5pOysraSl7dmFyIG49dGhpcy5fZ3JpZFtlK29dW3QraV07aWYo IW4uJGVsfHwwIT09bi54fHwwIT09bi55KXJldHVybiExfXZhciBuPXRoaXMu X2dyaWRbZV1bdF07YT4xJiYobi4kZWwuYXR0cigiY29sc3BhbiIsIiIrYSks bi54PWEtMSkscj4xJiYobi4kZWwuYXR0cigicm93c3BhbiIsIiIrciksCi1u Lnk9ci0xKTtmb3IodmFyIG89MDtyPm87KytvKWZvcih2YXIgaT0wO2E+aTsr K2kpaWYoMCE9PW98fDAhPT1pKXt2YXIgbj10aGlzLl9ncmlkW2Urb11bdCtp XTtuLiRlbC5yZW1vdmUoKSxuLiRlbD1udWxsLG4ueD0taSxuLnk9LW99cmV0 dXJuITB9fSk7cmV0dXJuIHJ9KSxhKCJ3Y0RvY2tlci90YWJmcmFtZSIsWyJk Y2wvZGNsIiwiLi90eXBlcyIsIi4vYmFzZSJdLGZ1bmN0aW9uKHQsZSxhKXt2 YXIgcj10KGEse2RlY2xhcmVkQ2xhc3M6IndjVGFiRnJhbWUiLExFRlRfVEFC X0JVRkZFUjoxNSxjb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGEpe3RoaXMuJGNv bnRhaW5lcj0kKHQpLHRoaXMuX3BhcmVudD1hLHRoaXMuJGZyYW1lPW51bGws dGhpcy4kdGFiQmFyPW51bGwsdGhpcy4kdGFiU2Nyb2xsPW51bGwsdGhpcy4k Y2VudGVyPW51bGwsdGhpcy4kdGFiTGVmdD1udWxsLHRoaXMuJHRhYlJpZ2h0 PW51bGwsdGhpcy4kY2xvc2U9bnVsbCx0aGlzLl90YWJPcmllbnRhdGlvbj1l LlRBQi5UT1AsdGhpcy5fY2FuU2Nyb2xsVGFicz0hMSx0aGlzLl90YWJTY3Jv bGxQb3M9MCx0aGlzLl9jdXJUYWI9LTEsdGhpcy5fbGF5b3V0TGlzdD1bXSx0 aGlzLl9tb3ZlYWJsZT0hMCx0aGlzLl9ib3VuZEV2ZW50cz1bXSx0aGlzLl9f aW5pdCgpfSx1cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRjZW50ZXIu c2Nyb2xsVG9wKCk7dGhpcy5fX3VwZGF0ZVRhYnMoKSx0aGlzLiRjZW50ZXIu c2Nyb2xsVG9wKHQpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fX2Rlc3Ry b3koKX0sdGFiQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF5b3V0 TGlzdC5sZW5ndGh9LHRhYk9yaWVudGF0aW9uOmZ1bmN0aW9uKHQpe3JldHVy biB2b2lkIDAhPT10JiZ0aGlzLl90YWJPcmllbnRhdGlvbiE9PXQmJnRoaXMu ZG9ja2VyKCkuX2Nhbk9yaWVudFRhYnMmJih0aGlzLl90YWJPcmllbnRhdGlv bj10LHRoaXMuX191cGRhdGVUYWJzKCksdGhpcy5fX3VwZGF0ZVRhYnMoKSks dGhpcy5fdGFiT3JpZW50YXRpb259LGFkZFRhYjpmdW5jdGlvbih0LGUsYSl7 dmFyIHI9YXx8IndjTGF5b3V0VGFibGUiLG89bmV3KHRoaXMuZG9ja2VyKCku X19nZXRDbGFzcyhyKSkoIi53Y0RvY2tlclRyYW5zaXRpb24iLHRoaXMuX3Bh cmVudCk7cmV0dXJuIG8ubmFtZT10LG8uX3Njcm9sbGFibGU9e3g6ITAseToh MH0sby5fc2Nyb2xsPXt4OjAseTowfSxvLl9jbG9zZWFibGU9ITEsby5fb3Zl cmZsb3dWaXNpYmxlPSExLCJ1bmRlZmluZWQiPT10eXBlb2YgZXx8LTE+PWU/ dGhpcy5fbGF5b3V0TGlzdC5wdXNoKG8pOnRoaXMuX2xheW91dExpc3Quc3Bs aWNlKGUsMCxvKSwtMT09PXRoaXMuX2N1clRhYiYmdGhpcy5fbGF5b3V0TGlz dC5sZW5ndGgmJih0aGlzLl9jdXJUYWI9MCksdGhpcy5fX3VwZGF0ZVRhYnMo KSxvfSxyZW1vdmVUYWI6ZnVuY3Rpb24odCl7aWYodD4tMSYmdDx0aGlzLl9s YXlvdXRMaXN0Lmxlbmd0aCl7dmFyIGE9dGhpcy5fbGF5b3V0TGlzdFt0XS5u YW1lO3JldHVybiB0aGlzLl9sYXlvdXRMaXN0W3RdLl9fZGVzdHJveSgpLHRo aXMuX2xheW91dExpc3Quc3BsaWNlKHQsMSksdGhpcy5fY3VyVGFiPj10JiYo dGhpcy5fY3VyVGFiLS0sdGhpcy5fY3VyVGFiPDAmJih0aGlzLl9jdXJUYWI9 MCkpLHRoaXMuX191cGRhdGVUYWJzKCksdGhpcy5fcGFyZW50Ll9fdHJpZ2dl cihlLkVWRU5ULkNVU1RPTV9UQUJfQ0xPU0VELHtvYmo6dGhpcyxuYW1lOmEs aW5kZXg6dH0pLCEwfXJldHVybiExfSx0YWI6ZnVuY3Rpb24odCxhKXtpZigi dW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQ+LTEmJnQ8dGhpcy5fbGF5b3V0TGlz dC5sZW5ndGgpe3RoaXMuJHRhYkJhci5maW5kKCc+IC53Y1RhYlNjcm9sbGVy ID4gLndjUGFuZWxUYWJbaWQ9IicrdGhpcy5fY3VyVGFiKyciXScpLnJlbW92 ZUNsYXNzKCJ3Y1BhbmVsVGFiQWN0aXZlIiksdGhpcy4kY2VudGVyLmNoaWxk cmVuKCcud2NQYW5lbFRhYkNvbnRlbnRbaWQ9IicrdGhpcy5fY3VyVGFiKyci XScpLmFkZENsYXNzKCJ3Y1BhbmVsVGFiQ29udGVudEhpZGRlbiIpLHRoaXMu X2N1clRhYj10LHRoaXMuJHRhYkJhci5maW5kKCc+IC53Y1RhYlNjcm9sbGVy ID4gLndjUGFuZWxUYWJbaWQ9IicrdCsnIl0nKS5hZGRDbGFzcygid2NQYW5l bFRhYkFjdGl2ZSIpLHRoaXMuJGNlbnRlci5jaGlsZHJlbignLndjUGFuZWxU YWJDb250ZW50W2lkPSInK3QrJyJdJykucmVtb3ZlQ2xhc3MoIndjUGFuZWxU YWJDb250ZW50SGlkZGVuIiksdGhpcy5fX3VwZGF0ZVRhYnMoYSk7dmFyIHI9 dGhpcy5fbGF5b3V0TGlzdFt0aGlzLl9jdXJUYWJdLm5hbWU7dGhpcy5fcGFy ZW50Ll9fdHJpZ2dlcihlLkVWRU5ULkNVU1RPTV9UQUJfQ0hBTkdFRCx7b2Jq OnRoaXMsbmFtZTpyLGluZGV4OnR9KX1yZXR1cm4gdGhpcy5fY3VyVGFifSxs YXlvdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+LTEmJnQ8dGhpcy5fbGF5b3V0 TGlzdC5sZW5ndGg/dGhpcy5fbGF5b3V0TGlzdFt0XTohMX0sbW92ZVRhYjpm dW5jdGlvbih0LGUpe2lmKHQ+PTAmJnQ8dGhpcy5fbGF5b3V0TGlzdC5sZW5n dGgmJmU+PTAmJmU8dGhpcy5fbGF5b3V0TGlzdC5sZW5ndGgpe3ZhciBhPXRo aXMuX2xheW91dExpc3Quc3BsaWNlKHQsMSk7cmV0dXJuIHRoaXMuX2xheW91 dExpc3Quc3BsaWNlKGUsMCxhWzBdKSx0aGlzLl9jdXJUYWI9PT10JiYodGhp cy5fY3VyVGFiPWUpLHRoaXMuX191cGRhdGVUYWJzKCksdGhpcy4kdGFiQmFy LmZpbmQoJz4gLndjVGFiU2Nyb2xsZXIgPiAud2NQYW5lbFRhYltpZD0iJytl KyciXScpWzBdfXJldHVybiExfSxtb3ZlYWJsZTpmdW5jdGlvbih0KXtyZXR1 cm4idW5kZWZpbmVkIiE9dHlwZW9mIHQmJih0aGlzLl9tb3ZlYWJsZT10KSx0 aGlzLl9tb3ZlYWJsZX0sY2xvc2VhYmxlOmZ1bmN0aW9uKHQsZSl7aWYodD4t MSYmdDx0aGlzLl9sYXlvdXRMaXN0Lmxlbmd0aCl7dmFyIGE9dGhpcy5fbGF5 b3V0TGlzdFt0XTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGUmJihhLl9j bG9zZWFibGU9ZSksYS5fY2xvc2VhYmxlfXJldHVybiExfSxzY3JvbGxhYmxl OmZ1bmN0aW9uKHQsZSxhKXtpZih0Pi0xJiZ0PHRoaXMuX2xheW91dExpc3Qu bGVuZ3RoKXt2YXIgcj10aGlzLl9sYXlvdXRMaXN0W3RdLG89ITE7cmV0dXJu InVuZGVmaW5lZCIhPXR5cGVvZiBlJiYoci5fc2Nyb2xsYWJsZS54PWUsbz0h MCksInVuZGVmaW5lZCIhPXR5cGVvZiBhJiYoci5fc2Nyb2xsYWJsZS55PWEs bz0hMCksbyYmdGhpcy5fX29uVGFiQ2hhbmdlKCkse3g6ci5fc2Nyb2xsYWJs ZS54LHk6ci5fc2Nyb2xsYWJsZS55fX1yZXR1cm4hMX0sb3ZlcmZsb3dWaXNp YmxlOmZ1bmN0aW9uKHQsZSl7aWYodD4tMSYmdDx0aGlzLl9sYXlvdXRMaXN0 Lmxlbmd0aCl7dmFyIGE9dGhpcy5fbGF5b3V0TGlzdFt0XTtyZXR1cm4idW5k ZWZpbmVkIiE9dHlwZW9mIG92ZXJmbG93JiYoYS5fb3ZlcmZsb3dWaXNpYmxl PW92ZXJmbG93LHRoaXMuX19vblRhYkNoYW5nZSgpKSxhLl9vdmVyZmxvd1Zp c2libGV9cmV0dXJuITF9LGZpdENvbnRlbnRzOmZ1bmN0aW9uKHQsZSxhKXtp Zih0Pi0xJiZ0PHRoaXMuX2xheW91dExpc3QubGVuZ3RoKXt2YXIgcj10aGlz Ll9sYXlvdXRMaXN0W3RdO3IuaGFzT3duUHJvcGVydHkoIl9maXRDb250ZW50 cyIpfHwoci5fZml0Q29udGVudHM9e3g6ITEseTohMX0pO3ZhciBvPSExO3Jl dHVybiJ1bmRlZmluZWQiIT10eXBlb2YgZSYmKHIuX2ZpdENvbnRlbnRzLng9 ZSxvPSEwKSwidW5kZWZpbmVkIiE9dHlwZW9mIGEmJihyLl9maXRDb250ZW50 cy55PWEsbz0hMCksbyYmdGhpcy5fX29uVGFiQ2hhbmdlKCkse3g6ci5fZml0 Q29udGVudHMueCx5OnIuX2ZpdENvbnRlbnRzLnl9fXJldHVybiExfSxpY29u OmZ1bmN0aW9uKHQsZSl7aWYodD4tMSYmdDx0aGlzLl9sYXlvdXRMaXN0Lmxl bmd0aCl7dmFyIGE9dGhpcy5fbGF5b3V0TGlzdFt0XTthLiRpY29ufHwoYS4k aWNvbj0kKCI8ZGl2PiIpKSxhLiRpY29uLnJlbW92ZUNsYXNzKCksYS4kaWNv bi5hZGRDbGFzcygid2NUYWJJY29uICIrZSl9fSxmYWljb246ZnVuY3Rpb24o dCxlKXtpZih0Pi0xJiZ0PHRoaXMuX2xheW91dExpc3QubGVuZ3RoKXt2YXIg YT10aGlzLl9sYXlvdXRMaXN0W3RdO2EuJGljb258fChhLiRpY29uPSQoIjxk aXY+IikpLGEuJGljb24ucmVtb3ZlQ2xhc3MoKSxhLiRpY29uLmFkZENsYXNz KCJmYSBmYS1mdyBmYS0iK2UpfX0sX19pbml0OmZ1bmN0aW9uKCl7dGhpcy4k ZnJhbWU9JCgnPGRpdiBjbGFzcz0id2NDdXN0b21UYWIgd2NXaWRlIHdjVGFs bCI+JyksdGhpcy4kdGFiQmFyPSQoJzxkaXYgY2xhc3M9IndjRnJhbWVUaXRs ZUJhciB3Y0N1c3RvbVRhYlRpdGxlIHdjV2lkZSI+JyksdGhpcy4kdGFiU2Ny b2xsPSQoJzxkaXYgY2xhc3M9IndjVGFiU2Nyb2xsZXIiPicpLHRoaXMuJGNl bnRlcj0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQ2VudGVyIHdjUGFuZWxCYWNr Z3JvdW5kIj4nKSx0aGlzLiR0YWJMZWZ0PSQoJzxkaXYgY2xhc3M9IndjRnJh bWVCdXR0b24iIHRpdGxlPSJTY3JvbGwgdGFicyB0byB0aGUgbGVmdC4iPjxz cGFuIGNsYXNzPSJmYSBmYS1hcnJvdy1sZWZ0Ij48L3NwYW4+Jmx0OzwvZGl2 PicpLHRoaXMuJHRhYlJpZ2h0PSQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0 b24iIHRpdGxlPSJTY3JvbGwgdGFicyB0byB0aGUgcmlnaHQuIj48c3BhbiBj bGFzcz0iZmEgZmEtYXJyb3ctcmlnaHQiPjwvc3Bhbj4mZ3Q7PC9kaXY+Jyks dGhpcy4kY2xvc2U9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbiIgdGl0 bGU9IkNsb3NlIHRoZSBjdXJyZW50bHkgYWN0aXZlIHBhbmVsIHRhYiI+PHNw YW4gY2xhc3M9ImZhIGZhLWNsb3NlIj48L3NwYW4+WDwvZGl2PicpLHRoaXMu JGJ1dHRvbkJhcj0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9uQmFyIj4n KSx0aGlzLiR0YWJCYXIuYXBwZW5kKHRoaXMuJHRhYlNjcm9sbCksdGhpcy4k dGFiQmFyLmFwcGVuZCh0aGlzLiRidXR0b25CYXIpLHRoaXMuJGJ1dHRvbkJh ci5hcHBlbmQodGhpcy4kY2xvc2UpLHRoaXMuJGZyYW1lLmFwcGVuZCh0aGlz LiRjZW50ZXIpLHRoaXMuJGZyYW1lLmFwcGVuZCh0aGlzLiR0YWJCYXIpLHRo aXMuX19jb250YWluZXIodGhpcy4kY29udGFpbmVyKSx0aGlzLl9ib3VuZEV2 ZW50cy5wdXNoKHtldmVudDplLkVWRU5ULlVQREFURUQsaGFuZGxlcjp0aGlz LnVwZGF0ZS5iaW5kKHRoaXMpfSksdGhpcy5fYm91bmRFdmVudHMucHVzaCh7 ZXZlbnQ6ZS5FVkVOVC5DTE9TRUQsaGFuZGxlcjp0aGlzLmRlc3Ryb3kuYmlu ZCh0aGlzKX0pO2Zvcih2YXIgdD0wO3Q8dGhpcy5fYm91bmRFdmVudHMubGVu Z3RoOysrdCl0aGlzLl9wYXJlbnQub24odGhpcy5fYm91bmRFdmVudHNbdF0u ZXZlbnQsdGhpcy5fYm91bmRFdmVudHNbdF0uaGFuZGxlcik7dmFyIGE9dGhp cy5kb2NrZXIoKTthJiZhLl90YWJMaXN0LnB1c2godGhpcyl9LF9fdXBkYXRl VGFiczpmdW5jdGlvbih0KXt0aGlzLiR0YWJTY3JvbGwuZW1wdHkoKTt2YXIg YT1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5fdGFiT3JpZW50YXRpb24pe2Nh c2UgZS5UQUIuQk9UVE9NOnJldHVybiB0Lm9mZnNldCgpLmxlZnQ7Y2FzZSBl LlRBQi5UT1A6cmV0dXJuIHQub2Zmc2V0KCkubGVmdDtjYXNlIGUuVEFCLkxF RlQ6cmV0dXJuIHQub2Zmc2V0KCkudG9wO2Nhc2UgZS5UQUIuUklHSFQ6cmV0 dXJuIHQub2Zmc2V0KCkudG9wfX0uYmluZCh0aGlzKSxyPVtdLG89MCxpPWEo dGhpcy4kdGFiU2Nyb2xsKTt0aGlzLiRjZW50ZXIuY2hpbGRyZW4oIi53Y1Bh bmVsVGFiQ29udGVudCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmFkZENs YXNzKCJ3Y1BhbmVsVGFiQ29udGVudEhpZGRlbiB3Y1BhbmVsVGFiVW51c2Vk Iil9KTtmb3IodmFyIG49MDtuPHRoaXMuX2xheW91dExpc3QubGVuZ3RoOysr bil7dmFyIHM9JCgnPGRpdiBpZD0iJytuKyciIGNsYXNzPSJ3Y1BhbmVsVGFi Ij48ZGl2PicrdGhpcy5fbGF5b3V0TGlzdFtuXS5uYW1lKyI8L2Rpdj48L2Rp dj4iKTt0aGlzLl9tb3ZlYWJsZSYmcy5hZGRDbGFzcygid2NDdXN0b21UYWJN b3ZlYWJsZSIpLHRoaXMuJHRhYlNjcm9sbC5hcHBlbmQocyksdGhpcy5fbGF5 b3V0TGlzdFtuXS4kaWNvbiYmcy5maW5kKCJkaXYiKS5wcmVwZW5kKHRoaXMu X2xheW91dExpc3Rbbl0uJGljb24pO3ZhciBsPXRoaXMuJGNlbnRlci5jaGls ZHJlbignLndjUGFuZWxUYWJDb250ZW50W2lkPSInK24rJyJdJyk7bC5sZW5n dGh8fChsPSQoJzxkaXYgY2xhc3M9IndjUGFuZWxUYWJDb250ZW50IHdjUGFu ZWxUYWJDb250ZW50SGlkZGVuIiBpZD0iJytuKyciPicpLHRoaXMuJGNlbnRl ci5hcHBlbmQobCkpLHRoaXMuX2xheW91dExpc3Rbbl0uX19jb250YWluZXIo bCksdGhpcy5fbGF5b3V0TGlzdFtuXS5fcGFyZW50PXRoaXM7dmFyIGM9dGhp cy5fY3VyVGFiPT09bjtsLnJlbW92ZUNsYXNzKCJ3Y1BhbmVsVGFiVW51c2Vk IiksYyYmKHMuYWRkQ2xhc3MoIndjUGFuZWxUYWJBY3RpdmUiKSxsLnJlbW92 ZUNsYXNzKCJ3Y1BhbmVsVGFiQ29udGVudEhpZGRlbiIpKSxvPWEocyktaSxy LnB1c2gobyksbys9cy5vdXRlcldpZHRoKCl9dmFyIGg9MCx1PXRoaXMuJHRh YkJhci5oZWlnaHQoKTtzd2l0Y2godGhpcy5fdGFiT3JpZW50YXRpb24pe2Nh c2UgZS5UQUIuVE9QOnRoaXMuJHRhYkJhci5hZGRDbGFzcygid2NUYWJUb3Ai KS5yZW1vdmVDbGFzcygid2NUYWJMZWZ0IHdjVGFiUmlnaHQgd2NUYWJCb3R0 b20iKSx0aGlzLiRjZW50ZXIuY3NzKCJ0b3AiLHUpLmNzcygibGVmdCIsMCku Y3NzKCJyaWdodCIsMCkuY3NzKCJib3R0b20iLDApLGg9dGhpcy4kY2VudGVy LndpZHRoKCk7YnJlYWs7Y2FzZSBlLlRBQi5CT1RUT006dGhpcy4kdGFiQmFy LmFkZENsYXNzKCJ3Y1RhYkJvdHRvbSIpLnJlbW92ZUNsYXNzKCJ3Y1RhYlRv cCB3Y1RhYkxlZnQgd2NUYWJSaWdodCIpLHRoaXMuJGNlbnRlci5jc3MoInRv cCIsMCkuY3NzKCJsZWZ0IiwwKS5jc3MoInJpZ2h0IiwwKS5jc3MoImJvdHRv bSIsdSksaD10aGlzLiRjZW50ZXIud2lkdGgoKTticmVhaztjYXNlIGUuVEFC LkxFRlQ6dGhpcy4kdGFiQmFyLmFkZENsYXNzKCJ3Y1RhYkxlZnQiKS5yZW1v dmVDbGFzcygid2NUYWJUb3Agd2NUYWJSaWdodCB3Y1RhYkJvdHRvbSIpLHRo aXMuJGNlbnRlci5jc3MoInRvcCIsMCkuY3NzKCJsZWZ0Iix1KS5jc3MoInJp Z2h0IiwwKS5jc3MoImJvdHRvbSIsMCksaD10aGlzLiRjZW50ZXIuaGVpZ2h0 KCk7YnJlYWs7Y2FzZSBlLlRBQi5SSUdIVDp0aGlzLiR0YWJCYXIuYWRkQ2xh c3MoIndjVGFiUmlnaHQiKS5yZW1vdmVDbGFzcygid2NUYWJUb3Agd2NUYWJM ZWZ0IHdjVGFiQm90dG9tIiksdGhpcy4kY2VudGVyLmNzcygidG9wIiwwKS5j c3MoImxlZnQiLDApLmNzcygicmlnaHQiLHUpLmNzcygiYm90dG9tIiwwKSxo PXRoaXMuJGNlbnRlci5oZWlnaHQoKX10aGlzLiRjZW50ZXIuY2hpbGRyZW4o Ii53Y1BhbmVsVGFiVW51c2VkIikuZWFjaChmdW5jdGlvbigpeyQodGhpcyku cmVtb3ZlKCl9KTt2YXIgZD10aGlzLl9fb25UYWJDaGFuZ2UoKTtpZih0KWZv cih2YXIgbj0wO248ci5sZW5ndGg7KytuKWlmKG49PT10aGlzLl9jdXJUYWIp e3ZhciBmPXJbbl0scD1vO24rMTxyLmxlbmd0aCYmKHA9cltuKzFdKTt2YXIg Yj0tcGFyc2VJbnQodGhpcy4kdGFiU2Nyb2xsLmNzcygibGVmdCIpKSxfPWgt ZDtiPmY/KHRoaXMuX3RhYlNjcm9sbFBvcz1mLXRoaXMuTEVGVF9UQUJfQlVG RkVSLHRoaXMuX3RhYlNjcm9sbFBvczwwJiYodGhpcy5fdGFiU2Nyb2xsUG9z PTApKTpwLWI+XyYmKHRoaXMuX3RhYlNjcm9sbFBvcz1wLV8rdGhpcy5MRUZU X1RBQl9CVUZGRVIpO2JyZWFrfWlmKHRoaXMuX2NhblNjcm9sbFRhYnM9ITEs bz5oLWQpe3RoaXMuX2NhblNjcm9sbFRhYnM9ITAsdGhpcy4kYnV0dG9uQmFy LmFwcGVuZCh0aGlzLiR0YWJSaWdodCksdGhpcy4kYnV0dG9uQmFyLmFwcGVu ZCh0aGlzLiR0YWJMZWZ0KSxkKz10aGlzLiR0YWJSaWdodC5vdXRlcldpZHRo KCksZCs9dGhpcy4kdGFiTGVmdC5vdXRlcldpZHRoKCk7dmFyIHY9by0oaC1k KS8yO2lmKHRoaXMuX3RhYlNjcm9sbFBvcz52KWZvcih2YXIgbT10aGlzLiR0 YWJTY3JvbGwuY2hpbGRyZW4oKSxuPTA7bjxtLmxlbmd0aDsrK24pe3ZhciBz PSQobVtuXSk7aWYobz1hKHMpLWksbytzLm91dGVyV2lkdGgoKT52KXt0aGlz Ll90YWJTY3JvbGxQb3M9by10aGlzLkxFRlRfVEFCX0JVRkZFUix0aGlzLl90 YWJTY3JvbGxQb3M8MCYmKHRoaXMuX3RhYlNjcm9sbFBvcz0wKTticmVha319 fWVsc2UgdGhpcy5fdGFiU2Nyb2xsUG9zPTAsdGhpcy4kdGFiTGVmdC5yZW1v dmUoKSx0aGlzLiR0YWJSaWdodC5yZW1vdmUoKTt0aGlzLiR0YWJTY3JvbGwu c3RvcCgpLmFuaW1hdGUoe2xlZnQ6LXRoaXMuX3RhYlNjcm9sbFBvcysicHgi fSwiZmFzdCIpfSxfX29uVGFiQ2hhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ9MCxh PXRoaXMubGF5b3V0KHRoaXMuX2N1clRhYik7aWYoYSl7dGhpcy4kY2VudGVy LnRvZ2dsZUNsYXNzKCJ3Y1Njcm9sbGFibGVYIixhLl9zY3JvbGxhYmxlLngp LHRoaXMuJGNlbnRlci50b2dnbGVDbGFzcygid2NTY3JvbGxhYmxlWSIsYS5f c2Nyb2xsYWJsZS55KSx0aGlzLiRjZW50ZXIudG9nZ2xlQ2xhc3MoIndjT3Zl cmZsb3dWaXNpYmxlIixhLl9vdmVyZmxvd1Zpc2libGUpLHRoaXMuJHRhYkxl ZnQucmVtb3ZlKCksdGhpcy4kdGFiUmlnaHQucmVtb3ZlKCksYS5fY2xvc2Vh YmxlPyh0aGlzLiRjbG9zZS5zaG93KCksdCs9dGhpcy4kY2xvc2Uub3V0ZXJX aWR0aCgpKTp0aGlzLiRjbG9zZS5oaWRlKCksdGhpcy5fY2FuU2Nyb2xsVGFi cyYmKHRoaXMuJHRhYkJhci5hcHBlbmQodGhpcy4kdGFiUmlnaHQpLHRoaXMu JHRhYkJhci5hcHBlbmQodGhpcy4kdGFiTGVmdCksdCs9dGhpcy4kdGFiUmln aHQub3V0ZXJXaWR0aCgpK3RoaXMuJHRhYkxlZnQub3V0ZXJXaWR0aCgpKTt2 YXIgcj10aGlzLmZpdENvbnRlbnRzKHRoaXMuX2N1clRhYik7aWYoci54KXt2 YXIgbz1hLnNjZW5lKCkub3V0ZXJXaWR0aCgpOyh0aGlzLl90YWJPcmllbnRh dGlvbj09PWUuVEFCLkxFRlR8fHRoaXMuX3RhYk9yaWVudGF0aW9uPT09ZS5U QUIuUklHSFQpJiYobys9dGhpcy4kdGFiU2Nyb2xsLmhlaWdodCgpKSx0aGlz LiRjb250YWluZXIuY3NzKCJ3aWR0aCIsbyl9ZWxzZSB0aGlzLiRjb250YWlu ZXIuY3NzKCJ3aWR0aCIsIiIpO2lmKHIueSl7dmFyIGk9YS5zY2VuZSgpLm91 dGVySGVpZ2h0KCk7KHRoaXMuX3RhYk9yaWVudGF0aW9uPT09ZS5UQUIuVE9Q fHx0aGlzLl90YWJPcmllbnRhdGlvbj09PWUuVEFCLkJPVFRPTSkmJihpKz10 aGlzLiR0YWJTY3JvbGwuaGVpZ2h0KCkpLHRoaXMuJGNvbnRhaW5lci5jc3Mo ImhlaWdodCIsaSl9ZWxzZSB0aGlzLiRjb250YWluZXIuY3NzKCJoZWlnaHQi LCIiKTtzd2l0Y2godGhpcy5fdGFiT3JpZW50YXRpb24pe2Nhc2UgZS5UQUIu UklHSFQ6Y2FzZSBlLlRBQi5MRUZUOnRoaXMuJHRhYkJhci5jc3MoIndpZHRo Iix0aGlzLiRjZW50ZXIuaGVpZ2h0KCl8fCIxMDAlIik7YnJlYWs7Y2FzZSBl LlRBQi5UT1A6Y2FzZSBlLlRBQi5CT1RUT006dGhpcy4kdGFiQmFyLmNzcygi d2lkdGgiLHRoaXMuJGNlbnRlci53aWR0aCgpfHwiMTAwJSIpfXRoaXMuJGNl bnRlci5zY3JvbGxMZWZ0KGEuX3Njcm9sbC54KSx0aGlzLiRjZW50ZXIuc2Ny b2xsVG9wKGEuX3Njcm9sbC55KX1yZXR1cm4gdGhpcy4kYnV0dG9uQmFyLmNz cygibWluLXdpZHRoIix0KS5jc3MoIndpZHRoIix0KSx0fSxfX3Njcm9sbGVk OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sYXlvdXQodGhpcy5fY3VyVGFiKTt0 Ll9zY3JvbGwueD10aGlzLiRjZW50ZXIuc2Nyb2xsTGVmdCgpLHQuX3Njcm9s bC55PXRoaXMuJGNlbnRlci5zY3JvbGxUb3AoKX0sX19jb250YWluZXI6ZnVu Y3Rpb24odCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB0P3RoaXMuJGNv bnRhaW5lcjoodGhpcy4kY29udGFpbmVyPXQsdGhpcy4kY29udGFpbmVyP3Ro aXMuJGNvbnRhaW5lci5hcHBlbmQodGhpcy4kZnJhbWUpOnRoaXMuJGZyYW1l LnJlbW92ZSgpLHRoaXMuJGNvbnRhaW5lcil9LF9fZGVzdHJveTpmdW5jdGlv bigpe3ZhciB0PXRoaXMuZG9ja2VyKCk7aWYodCl7dmFyIGU9dC5fdGFiTGlz dC5pbmRleE9mKHRoaXMpO2U+LTEmJnQuX3RhYkxpc3Quc3BsaWNlKGUsMSl9 Zm9yKDt0aGlzLl9ib3VuZEV2ZW50cy5sZW5ndGg7KXRoaXMuX3BhcmVudC5v ZmYodGhpcy5fYm91bmRFdmVudHNbMF0uZXZlbnQsdGhpcy5fYm91bmRFdmVu dHNbMF0uaGFuZGxlciksdGhpcy5fYm91bmRFdmVudHMuc2hpZnQoKTt0aGlz Ll9jdXJUYWI9LTE7Zm9yKHZhciBhPTA7YTx0aGlzLl9sYXlvdXRMaXN0Lmxl bmd0aDsrK2EpdGhpcy5fbGF5b3V0TGlzdFthXS5fX2Rlc3Ryb3koKTtmb3Io O3RoaXMuX2xheW91dExpc3QubGVuZ3RoOyl0aGlzLl9sYXlvdXRMaXN0LnBv cCgpO3RoaXMuX19jb250YWluZXIobnVsbCksdGhpcy5fcGFyZW50PW51bGx9 fSk7cmV0dXJuIHJ9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtpZih0 IT09ZSl7dmFyIGE9bnVsbD09PXQscj10PT09eSxvPXQ9PT10LGk9bnVsbD09 PWUsbj1lPT09eSxzPWU9PT1lO2lmKHQ+ZSYmIWl8fCFvfHxhJiYhbiYmc3x8 ciYmcylyZXR1cm4gMTtpZihlPnQmJiFhfHwhc3x8aSYmIXImJm98fG4mJm8p cmV0dXJuLTF9cmV0dXJuIDB9ZnVuY3Rpb24gZSh0LGUsYSl7Zm9yKHZhciBy PXQubGVuZ3RoLG89YT9yOi0xO2E/by0tOisrbzxyOylpZihlKHRbb10sbyx0 KSlyZXR1cm4gbztyZXR1cm4tMX1mdW5jdGlvbiByKHQsZSxhKXtpZihlIT09 ZSlyZXR1cm4gcCh0LGEpO2Zvcih2YXIgcj1hLTEsbz10Lmxlbmd0aDsrK3I8 bzspaWYodFtyXT09PWUpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gbyh0 KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdHx8ITF9ZnVuY3Rpb24gaSh0 KXtyZXR1cm4gbnVsbD09dD8iIjp0KyIifWZ1bmN0aW9uIG4odCxlKXtmb3Io dmFyIGE9LTEscj10Lmxlbmd0aDsrK2E8ciYmZS5pbmRleE9mKHQuY2hhckF0 KGEpKT4tMTspO3JldHVybiBhfWZ1bmN0aW9uIHModCxlKXtmb3IodmFyIGE9 dC5sZW5ndGg7YS0tJiZlLmluZGV4T2YodC5jaGFyQXQoYSkpPi0xOyk7cmV0 dXJuIGF9ZnVuY3Rpb24gbChlLGEpe3JldHVybiB0KGUuY3JpdGVyaWEsYS5j cml0ZXJpYSl8fGUuaW5kZXgtYS5pbmRleH1mdW5jdGlvbiBjKGUsYSxyKXtm b3IodmFyIG89LTEsaT1lLmNyaXRlcmlhLG49YS5jcml0ZXJpYSxzPWkubGVu Z3RoLGw9ci5sZW5ndGg7KytvPHM7KXt2YXIgYz10KGlbb10sbltvXSk7aWYo Yyl7aWYobz49bClyZXR1cm4gYzt2YXIgaD1yW29dO3JldHVybiBjKigiYXNj Ij09PWh8fGg9PT0hMD8xOi0xKX19cmV0dXJuIGUuaW5kZXgtYS5pbmRleH1m dW5jdGlvbiBoKHQpe3JldHVybiBLdFt0XX1mdW5jdGlvbiB1KHQpe3JldHVy biBXdFt0XX1mdW5jdGlvbiBkKHQsZSxhKXtyZXR1cm4gZT90PVV0W3RdOmEm Jih0PXF0W3RdKSwiXFwiK3R9ZnVuY3Rpb24gZih0KXtyZXR1cm4iXFwiK3F0 W3RdfWZ1bmN0aW9uIHAodCxlLGEpe2Zvcih2YXIgcj10Lmxlbmd0aCxvPWUr KGE/MDotMSk7YT9vLS06KytvPHI7KXt2YXIgaT10W29dO2lmKGkhPT1pKXJl dHVybiBvfXJldHVybi0xfWZ1bmN0aW9uIGIodCl7cmV0dXJuISF0JiYib2Jq ZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gMTYwPj10JiZ0 Pj05JiYxMz49dHx8MzI9PXR8fDE2MD09dHx8NTc2MD09dHx8NjE1OD09dHx8 dD49ODE5MiYmKDgyMDI+PXR8fDgyMzI9PXR8fDgyMzM9PXR8fDgyMzk9PXR8 fDgyODc9PXR8fDEyMjg4PT10fHw2NTI3OT09dCl9ZnVuY3Rpb24gdih0LGUp e2Zvcih2YXIgYT0tMSxyPXQubGVuZ3RoLG89LTEsaT1bXTsrK2E8cjspdFth XT09PWUmJih0W2FdPU4saVsrK29dPWEpO3JldHVybiBpfWZ1bmN0aW9uIG0o dCxlKXtmb3IodmFyIGEscj0tMSxvPXQubGVuZ3RoLGk9LTEsbj1bXTsrK3I8 bzspe3ZhciBzPXRbcl0sbD1lP2UocyxyLHQpOnM7ciYmYT09PWx8fChhPWws blsrK2ldPXMpfXJldHVybiBufWZ1bmN0aW9uIHcodCl7Zm9yKHZhciBlPS0x LGE9dC5sZW5ndGg7KytlPGEmJl8odC5jaGFyQ29kZUF0KGUpKTspO3JldHVy biBlfWZ1bmN0aW9uIGcodCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmXyh0 LmNoYXJDb2RlQXQoZSkpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gVCh0KXtyZXR1 cm4gR3RbdF19ZnVuY3Rpb24geChhKXtmdW5jdGlvbiBfKHQpe2lmKGIodCkm JiFrcyh0KSYmISh0IGluc3RhbmNlb2YgZXQpKXtpZih0IGluc3RhbmNlb2Yg USlyZXR1cm4gdDtpZihybi5jYWxsKHQsIl9fY2hhaW5fXyIpJiZybi5jYWxs KHQsIl9fd3JhcHBlZF9fIikpcmV0dXJuIHByKHQpfXJldHVybiBuZXcgUSh0 KX1mdW5jdGlvbiBaKCl7fWZ1bmN0aW9uIFEodCxlLGEpe3RoaXMuX193cmFw cGVkX189dCx0aGlzLl9fYWN0aW9uc19fPWF8fFtdLHRoaXMuX19jaGFpbl9f PSEhZX1mdW5jdGlvbiBldCh0KXt0aGlzLl9fd3JhcHBlZF9fPXQsdGhpcy5f X2FjdGlvbnNfXz1bXSx0aGlzLl9fZGlyX189MSx0aGlzLl9fZmlsdGVyZWRf Xz0hMSx0aGlzLl9faXRlcmF0ZWVzX189W10sdGhpcy5fX3Rha2VDb3VudF9f PU9uLHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIEt0KCl7dmFyIHQ9bmV3 IGV0KHRoaXMuX193cmFwcGVkX18pO3JldHVybiB0Ll9fYWN0aW9uc19fPW9l KHRoaXMuX19hY3Rpb25zX18pLHQuX19kaXJfXz10aGlzLl9fZGlyX18sdC5f X2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sdC5fX2l0ZXJhdGVlc19f PW9lKHRoaXMuX19pdGVyYXRlZXNfXyksdC5fX3Rha2VDb3VudF9fPXRoaXMu X190YWtlQ291bnRfXyx0Ll9fdmlld3NfXz1vZSh0aGlzLl9fdmlld3NfXyks dH1mdW5jdGlvbiBXdCgpe2lmKHRoaXMuX19maWx0ZXJlZF9fKXt2YXIgdD1u ZXcgZXQodGhpcyk7dC5fX2Rpcl9fPS0xLHQuX19maWx0ZXJlZF9fPSEwfWVs c2UgdD10aGlzLmNsb25lKCksdC5fX2Rpcl9fKj0tMTtyZXR1cm4gdH1mdW5j dGlvbiBHdCgpe3ZhciB0PXRoaXMuX193cmFwcGVkX18udmFsdWUoKSxlPXRo aXMuX19kaXJfXyxhPWtzKHQpLHI9MD5lLG89YT90Lmxlbmd0aDowLGk9VWEo MCxvLHRoaXMuX192aWV3c19fKSxuPWkuc3RhcnQscz1pLmVuZCxsPXMtbixj PXI/czpuLTEsaD10aGlzLl9faXRlcmF0ZWVzX18sdT1oLmxlbmd0aCxkPTAs Zj1TbihsLHRoaXMuX190YWtlQ291bnRfXyk7aWYoIWF8fEk+b3x8bz09bCYm Zj09bClyZXR1cm4gb2EodCx0aGlzLl9fYWN0aW9uc19fKTt2YXIgcD1bXTt0 OmZvcig7bC0tJiZmPmQ7KXtjKz1lO2Zvcih2YXIgYj0tMSxfPXRbY107Kyti PHU7KXt2YXIgdj1oW2JdLG09di5pdGVyYXRlZSx3PXYudHlwZSxnPW0oXyk7 aWYodz09TSlfPWc7ZWxzZSBpZighZyl7aWYodz09Viljb250aW51ZSB0O2Jy ZWFrIHR9fXBbZCsrXT1ffXJldHVybiBwfWZ1bmN0aW9uIGp0KCl7dGhpcy5f X2RhdGFfXz17fX1mdW5jdGlvbiBVdCh0KXtyZXR1cm4gdGhpcy5oYXModCkm JmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdfWZ1bmN0aW9uIHF0KHQpe3JldHVy biJfX3Byb3RvX18iPT10P3k6dGhpcy5fX2RhdGFfX1t0XX1mdW5jdGlvbiBa dCh0KXtyZXR1cm4iX19wcm90b19fIiE9dCYmcm4uY2FsbCh0aGlzLl9fZGF0 YV9fLHQpfWZ1bmN0aW9uIFl0KHQsZSl7cmV0dXJuIl9fcHJvdG9fXyIhPXQm Jih0aGlzLl9fZGF0YV9fW3RdPWUpLHRoaXN9ZnVuY3Rpb24gWHQodCl7dmFy IGU9dD90Lmxlbmd0aDowO2Zvcih0aGlzLmRhdGE9e2hhc2g6Z24obnVsbCks c2V0Om5ldyBwbn07ZS0tOyl0aGlzLnB1c2godFtlXSl9ZnVuY3Rpb24gSnQo dCxlKXt2YXIgYT10LmRhdGEscj0ic3RyaW5nIj09dHlwZW9mIGV8fHpvKGUp P2Euc2V0LmhhcyhlKTphLmhhc2hbZV07cmV0dXJuIHI/MDotMX1mdW5jdGlv biBRdCh0KXt2YXIgZT10aGlzLmRhdGE7InN0cmluZyI9PXR5cGVvZiB0fHx6 byh0KT9lLnNldC5hZGQodCk6ZS5oYXNoW3RdPSEwfWZ1bmN0aW9uIHJlKHQs ZSl7Zm9yKHZhciBhPS0xLHI9dC5sZW5ndGgsbz0tMSxpPWUubGVuZ3RoLG49 TmkocitpKTsrK2E8cjspblthXT10W2FdO2Zvcig7KytvPGk7KW5bYSsrXT1l W29dO3JldHVybiBufWZ1bmN0aW9uIG9lKHQsZSl7dmFyIGE9LTEscj10Lmxl bmd0aDtmb3IoZXx8KGU9TmkocikpOysrYTxyOyllW2FdPXRbYV07cmV0dXJu IGV9ZnVuY3Rpb24gaWUodCxlKXtmb3IodmFyIGE9LTEscj10Lmxlbmd0aDsr K2E8ciYmZSh0W2FdLGEsdCkhPT0hMTspO3JldHVybiB0fWZ1bmN0aW9uIG5l KHQsZSl7Zm9yKHZhciBhPXQubGVuZ3RoO2EtLSYmZSh0W2FdLGEsdCkhPT0h MTspO3JldHVybiB0fWZ1bmN0aW9uIHNlKHQsZSl7Zm9yKHZhciBhPS0xLHI9 dC5sZW5ndGg7KythPHI7KWlmKCFlKHRbYV0sYSx0KSlyZXR1cm4hMTtyZXR1 cm4hMH1mdW5jdGlvbiBsZSh0LGUsYSxyKXtmb3IodmFyIG89LTEsaT10Lmxl bmd0aCxuPXIscz1uOysrbzxpOyl7dmFyIGw9dFtvXSxjPStlKGwpO2EoYyxu KSYmKG49YyxzPWwpfXJldHVybiBzfWZ1bmN0aW9uIGNlKHQsZSl7Zm9yKHZh ciBhPS0xLHI9dC5sZW5ndGgsbz0tMSxpPVtdOysrYTxyOyl7dmFyIG49dFth XTtlKG4sYSx0KSYmKGlbKytvXT1uKX1yZXR1cm4gaX1mdW5jdGlvbiBoZSh0 LGUpe2Zvcih2YXIgYT0tMSxyPXQubGVuZ3RoLG89Tmkocik7KythPHI7KW9b YV09ZSh0W2FdLGEsdCk7cmV0dXJuIG99ZnVuY3Rpb24gdWUodCxlKXtmb3Io dmFyIGE9LTEscj1lLmxlbmd0aCxvPXQubGVuZ3RoOysrYTxyOyl0W28rYV09 ZVthXTtyZXR1cm4gdH1mdW5jdGlvbiBkZSh0LGUsYSxyKXt2YXIgbz0tMSxp PXQubGVuZ3RoO2ZvcihyJiZpJiYoYT10Wysrb10pOysrbzxpOylhPWUoYSx0 W29dLG8sdCk7cmV0dXJuIGF9ZnVuY3Rpb24gZmUodCxlLGEscil7dmFyIG89 dC5sZW5ndGg7Zm9yKHImJm8mJihhPXRbLS1vXSk7by0tOylhPWUoYSx0W29d LG8sdCk7cmV0dXJuIGF9ZnVuY3Rpb24gcGUodCxlKXtmb3IodmFyIGE9LTEs cj10Lmxlbmd0aDsrK2E8cjspaWYoZSh0W2FdLGEsdCkpcmV0dXJuITA7cmV0 dXJuITF9ZnVuY3Rpb24gYmUodCxlKXtmb3IodmFyIGE9dC5sZW5ndGgscj0w O2EtLTspcis9K2UodFthXSl8fDA7cmV0dXJuIHJ9ZnVuY3Rpb24gX2UodCxl KXtyZXR1cm4gdD09PXk/ZTp0fWZ1bmN0aW9uIHZlKHQsZSxhLHIpe3JldHVy biB0IT09eSYmcm4uY2FsbChyLGEpP3Q6ZX1mdW5jdGlvbiBtZSh0LGUsYSl7 Zm9yKHZhciByPS0xLG89anMoZSksaT1vLmxlbmd0aDsrK3I8aTspe3ZhciBu PW9bcl0scz10W25dLGw9YShzLGVbbl0sbix0LGUpOyhsPT09bD9sPT09czpz IT09cykmJihzIT09eXx8biBpbiB0KXx8KHRbbl09bCl9cmV0dXJuIHR9ZnVu Y3Rpb24gd2UodCxlKXtyZXR1cm4gbnVsbD09ZT90OlRlKGUsanMoZSksdCl9 ZnVuY3Rpb24gZ2UodCxlKXtmb3IodmFyIGE9LTEscj1udWxsPT10LG89IXIm JkphKHQpLGk9bz90Lmxlbmd0aDowLG49ZS5sZW5ndGgscz1OaShuKTsrK2E8 bjspe3ZhciBsPWVbYV07bz9zW2FdPVFhKGwsaSk/dFtsXTp5OnNbYV09cj95 OnRbbF19cmV0dXJuIHN9ZnVuY3Rpb24gVGUodCxlLGEpe2F8fChhPXt9KTtm b3IodmFyIHI9LTEsbz1lLmxlbmd0aDsrK3I8bzspe3ZhciBpPWVbcl07YVtp XT10W2ldfXJldHVybiBhfWZ1bmN0aW9uIHhlKHQsZSxhKXt2YXIgcj10eXBl b2YgdDtyZXR1cm4iZnVuY3Rpb24iPT1yP2U9PT15P3Q6c2EodCxlLGEpOm51 bGw9PXQ/Rmk6Im9iamVjdCI9PXI/UmUodCk6ZT09PXk/a2kodCk6TmUodCxl KX1mdW5jdGlvbiB5ZSh0LGUsYSxyLG8saSxuKXt2YXIgcztpZihhJiYocz1v P2EodCxyLG8pOmEodCkpLHMhPT15KXJldHVybiBzO2lmKCF6byh0KSlyZXR1 cm4gdDt2YXIgbD1rcyh0KTtpZihsKXtpZihzPXFhKHQpLCFlKXJldHVybiBv ZSh0LHMpfWVsc2V7dmFyIGM9bm4uY2FsbCh0KSxoPWM9PXE7aWYoYyE9WCYm YyE9SyYmKCFofHxvKSlyZXR1cm4gTnRbY10/WWEodCxjLGUpOm8/dDp7fTtp ZihlZSh0KSlyZXR1cm4gbz90Ont9O2lmKHM9WmEoaD97fTp0KSwhZSlyZXR1 cm4gd2Uocyx0KX1pfHwoaT1bXSksbnx8KG49W10pO2Zvcih2YXIgdT1pLmxl bmd0aDt1LS07KWlmKGlbdV09PXQpcmV0dXJuIG5bdV07cmV0dXJuIGkucHVz aCh0KSxuLnB1c2gocyksKGw/aWU6RWUpKHQsZnVuY3Rpb24ocixvKXtzW29d PXllKHIsZSxhLG8sdCxpLG4pfSksc31mdW5jdGlvbiBCZSh0LGUsYSl7aWYo ImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFhpKFIpO3JldHVybiBi bihmdW5jdGlvbigpe3QuYXBwbHkoeSxhKX0sZSl9ZnVuY3Rpb24gQ2UodCxl KXt2YXIgYT10P3QubGVuZ3RoOjAsbz1bXTtpZighYSlyZXR1cm4gbzt2YXIg aT0tMSxuPVdhKCkscz1uPT09cixsPXMmJmUubGVuZ3RoPj1JP19hKGUpOm51 bGwsYz1lLmxlbmd0aDtsJiYobj1KdCxzPSExLGU9bCk7dDpmb3IoOysraTxh Oyl7dmFyIGg9dFtpXTtpZihzJiZoPT09aCl7Zm9yKHZhciB1PWM7dS0tOylp ZihlW3VdPT09aCljb250aW51ZSB0O28ucHVzaChoKX1lbHNlIG4oZSxoLDAp PDAmJm8ucHVzaChoKX1yZXR1cm4gb31mdW5jdGlvbiBTZSh0LGUpe3ZhciBh PSEwO3JldHVybiBObih0LGZ1bmN0aW9uKHQscixvKXtyZXR1cm4gYT0hIWUo dCxyLG8pfSksYX1mdW5jdGlvbiAkZSh0LGUsYSxyKXt2YXIgbz1yLGk9bzty ZXR1cm4gTm4odCxmdW5jdGlvbih0LG4scyl7dmFyIGw9K2UodCxuLHMpOyhh KGwsbyl8fGw9PT1yJiZsPT09aSkmJihvPWwsaT10KX0pLGl9ZnVuY3Rpb24g UGUodCxlLGEscil7dmFyIG89dC5sZW5ndGg7Zm9yKGE9bnVsbD09YT8wOith fHwwLDA+YSYmKGE9LWE+bz8wOm8rYSkscj1yPT09eXx8cj5vP286K3J8fDAs MD5yJiYocis9byksbz1hPnI/MDpyPj4+MCxhPj4+PTA7bz5hOyl0W2ErK109 ZTtyZXR1cm4gdH1mdW5jdGlvbiBGZSh0LGUpe3ZhciBhPVtdO3JldHVybiBO bih0LGZ1bmN0aW9uKHQscixvKXtlKHQscixvKSYmYS5wdXNoKHQpfSksYX1m dW5jdGlvbiBMZSh0LGUsYSxyKXt2YXIgbztyZXR1cm4gYSh0LGZ1bmN0aW9u KHQsYSxpKXtyZXR1cm4gZSh0LGEsaSk/KG89cj9hOnQsITEpOnZvaWQgMH0p LG99ZnVuY3Rpb24gT2UodCxlLGEscil7cnx8KHI9W10pO2Zvcih2YXIgbz0t MSxpPXQubGVuZ3RoOysrbzxpOyl7dmFyIG49dFtvXTtiKG4pJiZKYShuKSYm KGF8fGtzKG4pfHwkbyhuKSk/ZT9PZShuLGUsYSxyKTp1ZShyLG4pOmF8fChy W3IubGVuZ3RoXT1uKX1yZXR1cm4gcn1mdW5jdGlvbiBBZSh0LGUpe3JldHVy biBXbih0LGUsYWkpfWZ1bmN0aW9uIEVlKHQsZSl7cmV0dXJuIFduKHQsZSxq cyl9ZnVuY3Rpb24gRGUodCxlKXtyZXR1cm4gR24odCxlLGpzKX1mdW5jdGlv biBrZSh0LGUpe2Zvcih2YXIgYT0tMSxyPWUubGVuZ3RoLG89LTEsaT1bXTsr K2E8cjspe3ZhciBuPWVbYV07a28odFtuXSkmJihpWysrb109bil9cmV0dXJu IGl9ZnVuY3Rpb24gemUodCxlLGEpe2lmKG51bGwhPXQpe3Q9ZHIodCksYSE9 PXkmJmEgaW4gdCYmKGU9W2FdKTtmb3IodmFyIHI9MCxvPWUubGVuZ3RoO251 bGwhPXQmJm8+cjspdD1kcih0KVtlW3IrK11dO3JldHVybiByJiZyPT1vP3Q6 eX19ZnVuY3Rpb24gSGUodCxlLGEscixvLGkpe3JldHVybiB0PT09ZT8hMDpu dWxsPT10fHxudWxsPT1lfHwhem8odCkmJiFiKGUpP3QhPT10JiZlIT09ZTpJ ZSh0LGUsSGUsYSxyLG8saSl9ZnVuY3Rpb24gSWUodCxlLGEscixvLGksbil7 dmFyIHM9a3ModCksbD1rcyhlKSxjPVcsaD1XO3N8fChjPW5uLmNhbGwodCks Yz09Sz9jPVg6YyE9WCYmKHM9R28odCkpKSxsfHwoaD1ubi5jYWxsKGUpLGg9 PUs/aD1YOmghPVgmJihsPUdvKGUpKSk7dmFyIHU9Yz09WCYmIWVlKHQpLGQ9 aD09WCYmIWVlKGUpLGY9Yz09aDtpZihmJiYhcyYmIXUpcmV0dXJuIE1hKHQs ZSxjKTtpZighbyl7dmFyIHA9dSYmcm4uY2FsbCh0LCJfX3dyYXBwZWRfXyIp LGI9ZCYmcm4uY2FsbChlLCJfX3dyYXBwZWRfXyIpO2lmKHB8fGIpcmV0dXJu IGEocD90LnZhbHVlKCk6dCxiP2UudmFsdWUoKTplLHIsbyxpLG4pfWlmKCFm KXJldHVybiExO2l8fChpPVtdKSxufHwobj1bXSk7Zm9yKHZhciBfPWkubGVu Z3RoO18tLTspaWYoaVtfXT09dClyZXR1cm4gbltfXT09ZTtpLnB1c2godCks bi5wdXNoKGUpO3ZhciB2PShzP1ZhOlJhKSh0LGUsYSxyLG8saSxuKTtyZXR1 cm4gaS5wb3AoKSxuLnBvcCgpLHZ9ZnVuY3Rpb24gVmUodCxlLGEpe3ZhciBy PWUubGVuZ3RoLG89cixpPSFhO2lmKG51bGw9PXQpcmV0dXJuIW87Zm9yKHQ9 ZHIodCk7ci0tOyl7dmFyIG49ZVtyXTtpZihpJiZuWzJdP25bMV0hPT10W25b MF1dOiEoblswXWluIHQpKXJldHVybiExfWZvcig7KytyPG87KXtuPWVbcl07 dmFyIHM9blswXSxsPXRbc10sYz1uWzFdO2lmKGkmJm5bMl0pe2lmKGw9PT15 JiYhKHMgaW4gdCkpcmV0dXJuITF9ZWxzZXt2YXIgaD1hP2EobCxjLHMpOnk7 aWYoIShoPT09eT9IZShjLGwsYSwhMCk6aCkpcmV0dXJuITF9fXJldHVybiEw fWZ1bmN0aW9uIE1lKHQsZSl7dmFyIGE9LTEscj1KYSh0KT9OaSh0Lmxlbmd0 aCk6W107cmV0dXJuIE5uKHQsZnVuY3Rpb24odCxvLGkpe3JbKythXT1lKHQs byxpKX0pLHJ9ZnVuY3Rpb24gUmUodCl7dmFyIGU9R2EodCk7aWYoMT09ZS5s ZW5ndGgmJmVbMF1bMl0pe3ZhciBhPWVbMF1bMF0scj1lWzBdWzFdO3JldHVy biBmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8hMToodD1kcih0KSx0W2Fd PT09ciYmKHIhPT15fHxhIGluIHQpKX19cmV0dXJuIGZ1bmN0aW9uKHQpe3Jl dHVybiBWZSh0LGUpfX1mdW5jdGlvbiBOZSh0LGUpe3ZhciBhPWtzKHQpLHI9 ZXIodCkmJm9yKGUpLG89dCsiIjtyZXR1cm4gdD1mcih0KSxmdW5jdGlvbihp KXtpZihudWxsPT1pKXJldHVybiExO3ZhciBuPW87aWYoaT1kcihpKSwhKCFh JiZyfHxuIGluIGkpKXtpZihpPTE9PXQubGVuZ3RoP2k6emUoaSxZZSh0LDAs LTEpKSxudWxsPT1pKXJldHVybiExO249JHIodCksaT1kcihpKX1yZXR1cm4g aVtuXT09PWU/ZSE9PXl8fG4gaW4gaTpIZShlLGlbbl0seSwhMCl9fWZ1bmN0 aW9uIEtlKHQsZSxhLHIsbyl7aWYoIXpvKHQpKXJldHVybiB0O3ZhciBpPUph KGUpJiYoa3MoZSl8fEdvKGUpKSxuPWk/eTpqcyhlKTtyZXR1cm4gaWUobnx8 ZSxmdW5jdGlvbihzLGwpe2lmKG4mJihsPXMscz1lW2xdKSxiKHMpKXJ8fChy PVtdKSxvfHwobz1bXSksV2UodCxlLGwsS2UsYSxyLG8pO2Vsc2V7dmFyIGM9 dFtsXSxoPWE/YShjLHMsbCx0LGUpOnksdT1oPT09eTt1JiYoaD1zKSxoPT09 eSYmKCFpfHxsIGluIHQpfHwhdSYmKGg9PT1oP2g9PT1jOmMhPT1jKXx8KHRb bF09aCl9fSksdH1mdW5jdGlvbiBXZSh0LGUsYSxyLG8saSxuKXtmb3IodmFy IHM9aS5sZW5ndGgsbD1lW2FdO3MtLTspaWYoaVtzXT09bClyZXR1cm4gdm9p ZCh0W2FdPW5bc10pO3ZhciBjPXRbYV0saD1vP28oYyxsLGEsdCxlKTp5LHU9 aD09PXk7dSYmKGg9bCxKYShsKSYmKGtzKGwpfHxHbyhsKSk/aD1rcyhjKT9j OkphKGMpP29lKGMpOltdOk5vKGwpfHwkbyhsKT9oPSRvKGMpP1lvKGMpOk5v KGMpP2M6e306dT0hMSksaS5wdXNoKGwpLG4ucHVzaChoKSx1P3RbYV09ciho LGwsbyxpLG4pOihoPT09aD9oIT09YzpjPT09YykmJih0W2FdPWgpfWZ1bmN0 aW9uIEdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT95 OmRyKGUpW3RdfX1mdW5jdGlvbiBqZSh0KXt2YXIgZT10KyIiO3JldHVybiB0 PWZyKHQpLGZ1bmN0aW9uKGEpe3JldHVybiB6ZShhLHQsZSl9fWZ1bmN0aW9u IFVlKHQsZSl7Zm9yKHZhciBhPXQ/ZS5sZW5ndGg6MDthLS07KXt2YXIgcj1l W2FdO2lmKHIhPW8mJlFhKHIpKXt2YXIgbz1yO19uLmNhbGwodCxyLDEpfX1y ZXR1cm4gdH1mdW5jdGlvbiBxZSh0LGUpe3JldHVybiB0K1RuKEZuKCkqKGUt dCsxKSl9ZnVuY3Rpb24gWmUodCxlLGEscixvKXtyZXR1cm4gbyh0LGZ1bmN0 aW9uKHQsbyxpKXthPXI/KHI9ITEsdCk6ZShhLHQsbyxpKX0pLGF9ZnVuY3Rp b24gWWUodCxlLGEpe3ZhciByPS0xLG89dC5sZW5ndGg7ZT1udWxsPT1lPzA6 K2V8fDAsMD5lJiYoZT0tZT5vPzA6bytlKSxhPWE9PT15fHxhPm8/bzorYXx8 MCwwPmEmJihhKz1vKSxvPWU+YT8wOmEtZT4+PjAsZT4+Pj0wO2Zvcih2YXIg aT1OaShvKTsrK3I8bzspaVtyXT10W3IrZV07cmV0dXJuIGl9ZnVuY3Rpb24g WGUodCxlKXt2YXIgYTtyZXR1cm4gTm4odCxmdW5jdGlvbih0LHIsbyl7cmV0 dXJuIGE9ZSh0LHIsbyksIWF9KSwhIWF9ZnVuY3Rpb24gSmUodCxlKXt2YXIg YT10Lmxlbmd0aDtmb3IodC5zb3J0KGUpO2EtLTspdFthXT10W2FdLnZhbHVl O3JldHVybiB0fWZ1bmN0aW9uIFFlKHQsZSxhKXt2YXIgcj1OYSgpLG89LTE7 ZT1oZShlLGZ1bmN0aW9uKHQpe3JldHVybiByKHQpfSk7dmFyIGk9TWUodCxm dW5jdGlvbih0KXt2YXIgYT1oZShlLGZ1bmN0aW9uKGUpe3JldHVybiBlKHQp fSk7cmV0dXJue2NyaXRlcmlhOmEsaW5kZXg6KytvLHZhbHVlOnR9fSk7cmV0 dXJuIEplKGksZnVuY3Rpb24odCxlKXtyZXR1cm4gYyh0LGUsYSl9KX1mdW5j dGlvbiB0YSh0LGUpe3ZhciBhPTA7cmV0dXJuIE5uKHQsZnVuY3Rpb24odCxy LG8pe2ErPStlKHQscixvKXx8MH0pLGF9ZnVuY3Rpb24gZWEodCxlKXt2YXIg YT0tMSxvPVdhKCksaT10Lmxlbmd0aCxuPW89PT1yLHM9biYmaT49SSxsPXM/ X2EoKTpudWxsLGM9W107bD8obz1KdCxuPSExKToocz0hMSxsPWU/W106Yyk7 dDpmb3IoOysrYTxpOyl7dmFyIGg9dFthXSx1PWU/ZShoLGEsdCk6aDtpZihu JiZoPT09aCl7Zm9yKHZhciBkPWwubGVuZ3RoO2QtLTspaWYobFtkXT09PXUp Y29udGludWUgdDtlJiZsLnB1c2godSksYy5wdXNoKGgpfWVsc2UgbyhsLHUs MCk8MCYmKChlfHxzKSYmbC5wdXNoKHUpLGMucHVzaChoKSl9cmV0dXJuIGN9 ZnVuY3Rpb24gYWEodCxlKXtmb3IodmFyIGE9LTEscj1lLmxlbmd0aCxvPU5p KHIpOysrYTxyOylvW2FdPXRbZVthXV07cmV0dXJuIG99ZnVuY3Rpb24gcmEo dCxlLGEscil7Zm9yKHZhciBvPXQubGVuZ3RoLGk9cj9vOi0xOyhyP2ktLTor K2k8bykmJmUodFtpXSxpLHQpOyk7cmV0dXJuIGE/WWUodCxyPzA6aSxyP2kr MTpvKTpZZSh0LHI/aSsxOjAscj9vOmkpfWZ1bmN0aW9uIG9hKHQsZSl7dmFy IGE9dDthIGluc3RhbmNlb2YgZXQmJihhPWEudmFsdWUoKSk7Zm9yKHZhciBy PS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgaT1lW3JdO2E9aS5mdW5jLmFw cGx5KGkudGhpc0FyZyx1ZShbYV0saS5hcmdzKSl9cmV0dXJuIGF9ZnVuY3Rp b24gaWEodCxlLGEpe3ZhciByPTAsbz10P3QubGVuZ3RoOnI7aWYoIm51bWJl ciI9PXR5cGVvZiBlJiZlPT09ZSYmRG4+PW8pe2Zvcig7bz5yOyl7dmFyIGk9 citvPj4+MSxuPXRbaV07KGE/ZT49bjplPm4pJiZudWxsIT09bj9yPWkrMTpv PWl9cmV0dXJuIG99cmV0dXJuIG5hKHQsZSxGaSxhKX1mdW5jdGlvbiBuYSh0 LGUsYSxyKXtlPWEoZSk7Zm9yKHZhciBvPTAsaT10P3QubGVuZ3RoOjAsbj1l IT09ZSxzPW51bGw9PT1lLGw9ZT09PXk7aT5vOyl7dmFyIGM9VG4oKG8raSkv MiksaD1hKHRbY10pLHU9aCE9PXksZD1oPT09aDtpZihuKXZhciBmPWR8fHI7 ZWxzZSBmPXM/ZCYmdSYmKHJ8fG51bGwhPWgpOmw/ZCYmKHJ8fHUpOm51bGw9 PWg/ITE6cj9lPj1oOmU+aDtmP289YysxOmk9Y31yZXR1cm4gU24oaSxFbil9 ZnVuY3Rpb24gc2EodCxlLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXJl dHVybiBGaTtpZihlPT09eSlyZXR1cm4gdDtzd2l0Y2goYSl7Y2FzZSAxOnJl dHVybiBmdW5jdGlvbihhKXtyZXR1cm4gdC5jYWxsKGUsYSl9O2Nhc2UgMzpy ZXR1cm4gZnVuY3Rpb24oYSxyLG8pe3JldHVybiB0LmNhbGwoZSxhLHIsbyl9 O2Nhc2UgNDpyZXR1cm4gZnVuY3Rpb24oYSxyLG8saSl7cmV0dXJuIHQuY2Fs bChlLGEscixvLGkpfTtjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGEscixvLGks bil7cmV0dXJuIHQuY2FsbChlLGEscixvLGksbil9fXJldHVybiBmdW5jdGlv bigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gbGEo dCl7dmFyIGU9bmV3IGNuKHQuYnl0ZUxlbmd0aCksYT1uZXcgdm4oZSk7cmV0 dXJuIGEuc2V0KG5ldyB2bih0KSksZX1mdW5jdGlvbiBjYSh0LGUsYSl7Zm9y KHZhciByPWEubGVuZ3RoLG89LTEsaT1Dbih0Lmxlbmd0aC1yLDApLG49LTEs cz1lLmxlbmd0aCxsPU5pKHMraSk7KytuPHM7KWxbbl09ZVtuXTtmb3IoOysr bzxyOylsW2Fbb11dPXRbb107Zm9yKDtpLS07KWxbbisrXT10W28rK107cmV0 dXJuIGx9ZnVuY3Rpb24gaGEodCxlLGEpe2Zvcih2YXIgcj0tMSxvPWEubGVu Z3RoLGk9LTEsbj1Dbih0Lmxlbmd0aC1vLDApLHM9LTEsbD1lLmxlbmd0aCxj PU5pKG4rbCk7KytpPG47KWNbaV09dFtpXTtmb3IodmFyIGg9aTsrK3M8bDsp Y1toK3NdPWVbc107Zm9yKDsrK3I8bzspY1toK2Fbcl1dPXRbaSsrXTtyZXR1 cm4gY31mdW5jdGlvbiB1YSh0LGUpe3JldHVybiBmdW5jdGlvbihhLHIsbyl7 dmFyIGk9ZT9lKCk6e307aWYocj1OYShyLG8sMyksa3MoYSkpZm9yKHZhciBu PS0xLHM9YS5sZW5ndGg7KytuPHM7KXt2YXIgbD1hW25dO3QoaSxsLHIobCxu LGEpLGEpfWVsc2UgTm4oYSxmdW5jdGlvbihlLGEsbyl7dChpLGUscihlLGEs byksbyl9KTtyZXR1cm4gaX19ZnVuY3Rpb24gZGEodCl7cmV0dXJuIHdvKGZ1 bmN0aW9uKGUsYSl7dmFyIHI9LTEsbz1udWxsPT1lPzA6YS5sZW5ndGgsaT1v PjI/YVtvLTJdOnksbj1vPjI/YVsyXTp5LHM9bz4xP2Fbby0xXTp5O2Zvcigi ZnVuY3Rpb24iPT10eXBlb2YgaT8oaT1zYShpLHMsNSksby09Mik6KGk9ImZ1 bmN0aW9uIj09dHlwZW9mIHM/czp5LG8tPWk/MTowKSxuJiZ0cihhWzBdLGFb MV0sbikmJihpPTM+bz95Omksbz0xKTsrK3I8bzspe3ZhciBsPWFbcl07bCYm dChlLGwsaSl9cmV0dXJuIGV9KX1mdW5jdGlvbiBmYSh0LGUpe3JldHVybiBm dW5jdGlvbihhLHIpe3ZhciBvPWE/cW4oYSk6MDtpZighcnIobykpcmV0dXJu IHQoYSxyKTtmb3IodmFyIGk9ZT9vOi0xLG49ZHIoYSk7KGU/aS0tOisraTxv KSYmcihuW2ldLGksbikhPT0hMTspO3JldHVybiBhfX1mdW5jdGlvbiBwYSh0 KXtyZXR1cm4gZnVuY3Rpb24oZSxhLHIpe2Zvcih2YXIgbz1kcihlKSxpPXIo ZSksbj1pLmxlbmd0aCxzPXQ/bjotMTt0P3MtLTorK3M8bjspe3ZhciBsPWlb c107aWYoYShvW2xdLGwsbyk9PT0hMSlicmVha31yZXR1cm4gZX19ZnVuY3Rp b24gYmEodCxlKXtmdW5jdGlvbiBhKCl7dmFyIG89dGhpcyYmdGhpcyE9PXRl JiZ0aGlzIGluc3RhbmNlb2YgYT9yOnQ7cmV0dXJuIG8uYXBwbHkoZSxhcmd1 bWVudHMpfXZhciByPW1hKHQpO3JldHVybiBhfWZ1bmN0aW9uIF9hKHQpe3Jl dHVybiBnbiYmcG4/bmV3IFh0KHQpOm51bGx9ZnVuY3Rpb24gdmEodCl7cmV0 dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgYT0tMSxyPVNpKGRpKGUpKSxvPXIu bGVuZ3RoLGk9IiI7KythPG87KWk9dChpLHJbYV0sYSk7cmV0dXJuIGl9fWZ1 bmN0aW9uIG1hKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50 cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAx OnJldHVybiBuZXcgdChlWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGVbMF0s ZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSk7Y2Fz ZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKTtjYXNlIDU6 cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSk7Y2FzZSA2 OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSk7 Y2FzZSA3OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0s ZVs1XSxlWzZdKX12YXIgYT1Sbih0LnByb3RvdHlwZSkscj10LmFwcGx5KGEs ZSk7cmV0dXJuIHpvKHIpP3I6YX19ZnVuY3Rpb24gd2EodCl7ZnVuY3Rpb24g ZShhLHIsbyl7byYmdHIoYSxyLG8pJiYocj15KTt2YXIgaT1JYShhLHQseSx5 LHkseSx5LHIpO3JldHVybiBpLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIs aX1yZXR1cm4gZX1mdW5jdGlvbiBnYSh0LGUpe3JldHVybiB3byhmdW5jdGlv bihhKXt2YXIgcj1hWzBdO3JldHVybiBudWxsPT1yP3I6KGEucHVzaChlKSx0 LmFwcGx5KHksYSkpfSl9ZnVuY3Rpb24gVGEodCxlKXtyZXR1cm4gZnVuY3Rp b24oYSxyLG8pe2lmKG8mJnRyKGEscixvKSYmKHI9eSkscj1OYShyLG8sMyks MT09ci5sZW5ndGgpe2E9a3MoYSk/YTp1cihhKTt2YXIgaT1sZShhLHIsdCxl KTtpZighYS5sZW5ndGh8fGkhPT1lKXJldHVybiBpfXJldHVybiAkZShhLHIs dCxlKX19ZnVuY3Rpb24geGEodCxhKXtyZXR1cm4gZnVuY3Rpb24ocixvLGkp e2lmKG89TmEobyxpLDMpLGtzKHIpKXt2YXIgbj1lKHIsbyxhKTtyZXR1cm4g bj4tMT9yW25dOnl9cmV0dXJuIExlKHIsbyx0KX19ZnVuY3Rpb24geWEodCl7 cmV0dXJuIGZ1bmN0aW9uKGEscixvKXtyZXR1cm4gYSYmYS5sZW5ndGg/KHI9 TmEocixvLDMpLGUoYSxyLHQpKTotMX19ZnVuY3Rpb24gQmEodCl7cmV0dXJu IGZ1bmN0aW9uKGUsYSxyKXtyZXR1cm4gYT1OYShhLHIsMyksTGUoZSxhLHQs ITApfX1mdW5jdGlvbiBDYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFy IGUsYT1hcmd1bWVudHMubGVuZ3RoLHI9dD9hOi0xLG89MCxpPU5pKGEpO3Q/ ci0tOisrcjxhOyl7dmFyIG49aVtvKytdPWFyZ3VtZW50c1tyXTtpZigiZnVu Y3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgWGkoUik7IWUmJlEucHJvdG90 eXBlLnRocnUmJiJ3cmFwcGVyIj09S2EobikmJihlPW5ldyBRKFtdLCEwKSl9 Zm9yKHI9ZT8tMTphOysrcjxhOyl7bj1pW3JdO3ZhciBzPUthKG4pLGw9Indy YXBwZXIiPT1zP1VuKG4pOnk7ZT1sJiZhcihsWzBdKSYmbFsxXT09KEF8UHxM fEUpJiYhbFs0XS5sZW5ndGgmJjE9PWxbOV0/ZVtLYShsWzBdKV0uYXBwbHko ZSxsWzNdKToxPT1uLmxlbmd0aCYmYXIobik/ZVtzXSgpOmUudGhydShuKX1y ZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMscj10WzBdO2lmKGUm JjE9PXQubGVuZ3RoJiZrcyhyKSYmci5sZW5ndGg+PUkpcmV0dXJuIGUucGxh bnQocikudmFsdWUoKTtmb3IodmFyIG89MCxuPWE/aVtvXS5hcHBseSh0aGlz LHQpOnI7KytvPGE7KW49aVtvXS5jYWxsKHRoaXMsbik7cmV0dXJuIG59fX1m dW5jdGlvbiBTYSh0LGUpe3JldHVybiBmdW5jdGlvbihhLHIsbyl7cmV0dXJu ImZ1bmN0aW9uIj09dHlwZW9mIHImJm89PT15JiZrcyhhKT90KGEscik6ZShh LHNhKHIsbywzKSl9fWZ1bmN0aW9uICRhKHQpe3JldHVybiBmdW5jdGlvbihl LGEscil7cmV0dXJuKCJmdW5jdGlvbiIhPXR5cGVvZiBhfHxyIT09eSkmJihh PXNhKGEsciwzKSksdChlLGEsYWkpfX1mdW5jdGlvbiBQYSh0KXtyZXR1cm4g ZnVuY3Rpb24oZSxhLHIpe3JldHVybigiZnVuY3Rpb24iIT10eXBlb2YgYXx8 ciE9PXkpJiYoYT1zYShhLHIsMykpLHQoZSxhKX19ZnVuY3Rpb24gRmEodCl7 cmV0dXJuIGZ1bmN0aW9uKGUsYSxyKXt2YXIgbz17fTtyZXR1cm4gYT1OYShh LHIsMyksRWUoZSxmdW5jdGlvbihlLHIsaSl7dmFyIG49YShlLHIsaSk7cj10 P246cixlPXQ/ZTpuLG9bcl09ZX0pLG99fWZ1bmN0aW9uIExhKHQpe3JldHVy biBmdW5jdGlvbihlLGEscil7cmV0dXJuIGU9aShlKSwodD9lOiIiKStEYShl LGEscikrKHQ/IiI6ZSl9fWZ1bmN0aW9uIE9hKHQpe3ZhciBlPXdvKGZ1bmN0 aW9uKGEscil7dmFyIG89dihyLGUucGxhY2Vob2xkZXIpO3JldHVybiBJYShh LHQseSxyLG8pfSk7cmV0dXJuIGV9ZnVuY3Rpb24gQWEodCxlKXtyZXR1cm4g ZnVuY3Rpb24oYSxyLG8saSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDwzO3Jl dHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiZpPT09eSYma3MoYSk/dChhLHIs byxuKTpaZShhLE5hKHIsaSw0KSxvLG4sZSl9fWZ1bmN0aW9uIEVhKHQsZSxh LHIsbyxpLG4scyxsLGMpe2Z1bmN0aW9uIGgoKXtmb3IodmFyIHc9YXJndW1l bnRzLmxlbmd0aCxnPXcsVD1OaSh3KTtnLS07KVRbZ109YXJndW1lbnRzW2dd O2lmKHImJihUPWNhKFQscixvKSksaSYmKFQ9aGEoVCxpLG4pKSxwfHxfKXt2 YXIgeD1oLnBsYWNlaG9sZGVyLEI9dihULHgpO2lmKHctPUIubGVuZ3RoLGM+ dyl7dmFyICQ9cz9vZShzKTp5LFA9Q24oYy13LDApLEY9cD9COnksQT1wP3k6 QixFPXA/VDp5LEQ9cD95OlQ7ZXw9cD9MOk8sZSY9fihwP086TCksYnx8KGUm PX4oQ3xTKSk7dmFyIGs9W3QsZSxhLEUsRixELEEsJCxsLFBdLHo9RWEuYXBw bHkoeSxrKTtyZXR1cm4gYXIodCkmJlpuKHosayksei5wbGFjZWhvbGRlcj14 LHp9fXZhciBIPWQ/YTp0aGlzLEk9Zj9IW3RdOnQ7cmV0dXJuIHMmJihUPWNy KFQscykpLHUmJmw8VC5sZW5ndGgmJihULmxlbmd0aD1sKSx0aGlzJiZ0aGlz IT09dGUmJnRoaXMgaW5zdGFuY2VvZiBoJiYoST1tfHxtYSh0KSksSS5hcHBs eShILFQpfXZhciB1PWUmQSxkPWUmQyxmPWUmUyxwPWUmUCxiPWUmJCxfPWUm RixtPWY/eTptYSh0KTtyZXR1cm4gaH1mdW5jdGlvbiBEYSh0LGUsYSl7dmFy IHI9dC5sZW5ndGg7aWYoZT0rZSxyPj1lfHwheW4oZSkpcmV0dXJuIiI7dmFy IG89ZS1yO3JldHVybiBhPW51bGw9PWE/IiAiOmErIiIsbWkoYSx3bihvL2Eu bGVuZ3RoKSkuc2xpY2UoMCxvKX1mdW5jdGlvbiBrYSh0LGUsYSxyKXtmdW5j dGlvbiBvKCl7Zm9yKHZhciBlPS0xLHM9YXJndW1lbnRzLmxlbmd0aCxsPS0x LGM9ci5sZW5ndGgsaD1OaShjK3MpOysrbDxjOyloW2xdPXJbbF07Zm9yKDtz LS07KWhbbCsrXT1hcmd1bWVudHNbKytlXTt2YXIgdT10aGlzJiZ0aGlzIT09 dGUmJnRoaXMgaW5zdGFuY2VvZiBvP246dDtyZXR1cm4gdS5hcHBseShpP2E6 dGhpcyxoKX12YXIgaT1lJkMsbj1tYSh0KTtyZXR1cm4gb31mdW5jdGlvbiB6 YSh0KXt2YXIgZT1qaVt0XTtyZXR1cm4gZnVuY3Rpb24odCxhKXtyZXR1cm4g YT1hPT09eT8wOithfHwwLGE/KGE9ZG4oMTAsYSksZSh0KmEpL2EpOmUodCl9 fWZ1bmN0aW9uIEhhKHQpe3JldHVybiBmdW5jdGlvbihlLGEscixvKXt2YXIg aT1OYShyKTtyZXR1cm4gbnVsbD09ciYmaT09PXhlP2lhKGUsYSx0KTpuYShl LGEsaShyLG8sMSksdCl9fWZ1bmN0aW9uIElhKHQsZSxhLHIsbyxpLG4scyl7 dmFyIGw9ZSZTO2lmKCFsJiYiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBu ZXcgWGkoUik7dmFyIGM9cj9yLmxlbmd0aDowO2lmKGN8fChlJj1+KEx8Tyks cj1vPXkpLGMtPW8/by5sZW5ndGg6MCxlJk8pe3ZhciBoPXIsdT1vO3I9bz15 fXZhciBkPWw/eTpVbih0KSxmPVt0LGUsYSxyLG8saCx1LGksbixzXTtpZihk JiYoaXIoZixkKSxlPWZbMV0scz1mWzldKSxmWzldPW51bGw9PXM/bD8wOnQu bGVuZ3RoOkNuKHMtYywwKXx8MCxlPT1DKXZhciBwPWJhKGZbMF0sZlsyXSk7 ZWxzZSBwPWUhPUwmJmUhPShDfEwpfHxmWzRdLmxlbmd0aD9FYS5hcHBseSh5 LGYpOmthLmFwcGx5KHksZik7dmFyIGI9ZD9qbjpabjtyZXR1cm4gYihwLGYp fWZ1bmN0aW9uIFZhKHQsZSxhLHIsbyxpLG4pe3ZhciBzPS0xLGw9dC5sZW5n dGgsYz1lLmxlbmd0aDtpZihsIT1jJiYhKG8mJmM+bCkpcmV0dXJuITE7Zm9y KDsrK3M8bDspe3ZhciBoPXRbc10sdT1lW3NdLGQ9cj9yKG8/dTpoLG8/aDp1 LHMpOnk7aWYoZCE9PXkpe2lmKGQpY29udGludWU7cmV0dXJuITF9aWYobyl7 aWYoIXBlKGUsZnVuY3Rpb24odCl7cmV0dXJuIGg9PT10fHxhKGgsdCxyLG8s aSxuKX0pKXJldHVybiExfWVsc2UgaWYoaCE9PXUmJiFhKGgsdSxyLG8saSxu KSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBNYSh0LGUsYSl7c3dpdGNo KGEpe2Nhc2UgRzpjYXNlIGo6cmV0dXJuK3Q9PStlO2Nhc2UgVTpyZXR1cm4g dC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UgWTpy ZXR1cm4gdCE9K3Q/ZSE9K2U6dD09K2U7Y2FzZSBKOmNhc2UgdHQ6cmV0dXJu IHQ9PWUrIiJ9cmV0dXJuITF9ZnVuY3Rpb24gUmEodCxlLGEscixvLGksbil7 dmFyIHM9anModCksbD1zLmxlbmd0aCxjPWpzKGUpLGg9Yy5sZW5ndGg7aWYo bCE9aCYmIW8pcmV0dXJuITE7Zm9yKHZhciB1PWw7dS0tOyl7dmFyIGQ9c1t1 XTtpZighKG8/ZCBpbiBlOnJuLmNhbGwoZSxkKSkpcmV0dXJuITF9Zm9yKHZh ciBmPW87Kyt1PGw7KXtkPXNbdV07dmFyIHA9dFtkXSxiPWVbZF0sXz1yP3Io bz9iOnAsbz9wOmIsZCk6eTtpZighKF89PT15P2EocCxiLHIsbyxpLG4pOl8p KXJldHVybiExO2Z8fChmPSJjb25zdHJ1Y3RvciI9PWQpfWlmKCFmKXt2YXIg dj10LmNvbnN0cnVjdG9yLG09ZS5jb25zdHJ1Y3RvcjtpZih2IT1tJiYiY29u c3RydWN0b3IiaW4gdCYmImNvbnN0cnVjdG9yImluIGUmJiEoImZ1bmN0aW9u Ij09dHlwZW9mIHYmJnYgaW5zdGFuY2VvZiB2JiYiZnVuY3Rpb24iPT10eXBl b2YgbSYmbSBpbnN0YW5jZW9mIG0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0 aW9uIE5hKHQsZSxhKXt2YXIgcj1fLmNhbGxiYWNrfHwkaTtyZXR1cm4gcj1y PT09JGk/eGU6cixhP3IodCxlLGEpOnJ9ZnVuY3Rpb24gS2EodCl7Zm9yKHZh ciBlPXQubmFtZSsiIixhPUhuW2VdLHI9YT9hLmxlbmd0aDowO3ItLTspe3Zh ciBvPWFbcl0saT1vLmZ1bmM7aWYobnVsbD09aXx8aT09dClyZXR1cm4gby5u YW1lfXJldHVybiBlfWZ1bmN0aW9uIFdhKHQsZSxhKXt2YXIgbz1fLmluZGV4 T2Z8fENyO3JldHVybiBvPW89PT1Dcj9yOm8sdD9vKHQsZSxhKTpvfWZ1bmN0 aW9uIEdhKHQpe2Zvcih2YXIgZT1yaSh0KSxhPWUubGVuZ3RoO2EtLTspZVth XVsyXT1vcihlW2FdWzFdKTtyZXR1cm4gZX1mdW5jdGlvbiBqYSh0LGUpe3Zh ciBhPW51bGw9PXQ/eTp0W2VdO3JldHVybiBWbyhhKT9hOnl9ZnVuY3Rpb24g VWEodCxlLGEpe2Zvcih2YXIgcj0tMSxvPWEubGVuZ3RoOysrcjxvOyl7dmFy IGk9YVtyXSxuPWkuc2l6ZTtzd2l0Y2goaS50eXBlKXtjYXNlImRyb3AiOnQr PW47YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOmUtPW47YnJlYWs7Y2FzZSJ0YWtl IjplPVNuKGUsdCtuKTticmVhaztjYXNlInRha2VSaWdodCI6dD1Dbih0LGUt bil9fXJldHVybntzdGFydDp0LGVuZDplfX1mdW5jdGlvbiBxYSh0KXt2YXIg ZT10Lmxlbmd0aCxhPW5ldyB0LmNvbnN0cnVjdG9yKGUpO3JldHVybiBlJiYi c3RyaW5nIj09dHlwZW9mIHRbMF0mJnJuLmNhbGwodCwiaW5kZXgiKSYmKGEu aW5kZXg9dC5pbmRleCxhLmlucHV0PXQuaW5wdXQpLGF9ZnVuY3Rpb24gWmEo dCl7dmFyIGU9dC5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBl b2YgZSYmZSBpbnN0YW5jZW9mIGV8fChlPXFpKSxuZXcgZX1mdW5jdGlvbiBZ YSh0LGUsYSl7dmFyIHI9dC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSBh dDpyZXR1cm4gbGEodCk7Y2FzZSBHOmNhc2UgajpyZXR1cm4gbmV3IHIoK3Qp O2Nhc2UgcnQ6Y2FzZSBvdDpjYXNlIGl0OmNhc2UgbnQ6Y2FzZSBzdDpjYXNl IGx0OmNhc2UgY3Q6Y2FzZSBodDpjYXNlIHV0OnIgaW5zdGFuY2VvZiByJiYo cj1JbltlXSk7dmFyIG89dC5idWZmZXI7cmV0dXJuIG5ldyByKGE/bGEobyk6 byx0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpO2Nhc2UgWTpjYXNlIHR0OnJldHVy biBuZXcgcih0KTtjYXNlIEo6dmFyIGk9bmV3IHIodC5zb3VyY2UsTHQuZXhl Yyh0KSk7aS5sYXN0SW5kZXg9dC5sYXN0SW5kZXh9cmV0dXJuIGl9ZnVuY3Rp b24gWGEodCxlLGEpe251bGw9PXR8fGVyKGUsdCl8fChlPWZyKGUpLHQ9MT09 ZS5sZW5ndGg/dDp6ZSh0LFllKGUsMCwtMSkpLGU9JHIoZSkpO3ZhciByPW51 bGw9PXQ/dDp0W2VdO3JldHVybiBudWxsPT1yP3k6ci5hcHBseSh0LGEpfWZ1 bmN0aW9uIEphKHQpe3JldHVybiBudWxsIT10JiZycihxbih0KSl9ZnVuY3Rp b24gUWEodCxlKXtyZXR1cm4gdD0ibnVtYmVyIj09dHlwZW9mIHR8fEV0LnRl c3QodCk/K3Q6LTEsZT1udWxsPT1lP2tuOmUsdD4tMSYmdCUxPT0wJiZlPnR9 ZnVuY3Rpb24gdHIodCxlLGEpe2lmKCF6byhhKSlyZXR1cm4hMTt2YXIgcj10 eXBlb2YgZTtpZigibnVtYmVyIj09cj9KYShhKSYmUWEoZSxhLmxlbmd0aCk6 InN0cmluZyI9PXImJmUgaW4gYSl7dmFyIG89YVtlXTtyZXR1cm4gdD09PXQ/ dD09PW86byE9PW99cmV0dXJuITF9ZnVuY3Rpb24gZXIodCxlKXt2YXIgYT10 eXBlb2YgdDtpZigic3RyaW5nIj09YSYmeXQudGVzdCh0KXx8Im51bWJlciI9 PWEpcmV0dXJuITA7aWYoa3ModCkpcmV0dXJuITE7dmFyIHI9IXh0LnRlc3Qo dCk7cmV0dXJuIHJ8fG51bGwhPWUmJnQgaW4gZHIoZSl9ZnVuY3Rpb24gYXIo dCl7dmFyIGU9S2EodCksYT1fW2VdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBh fHwhKGUgaW4gZXQucHJvdG90eXBlKSlyZXR1cm4hMTtpZih0PT09YSlyZXR1 cm4hMDt2YXIgcj1VbihhKTtyZXR1cm4hIXImJnQ9PT1yWzBdfWZ1bmN0aW9u IHJyKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0w JiZrbj49dH1mdW5jdGlvbiBvcih0KXtyZXR1cm4gdD09PXQmJiF6byh0KX1m dW5jdGlvbiBpcih0LGUpe3ZhciBhPXRbMV0scj1lWzFdLG89YXxyLGk9QT5v LG49cj09QSYmYT09UHx8cj09QSYmYT09RSYmdFs3XS5sZW5ndGg8PWVbOF18 fHI9PShBfEUpJiZhPT1QO2lmKCFpJiYhbilyZXR1cm4gdDtyJkMmJih0WzJd PWVbMl0sb3w9YSZDPzA6JCk7dmFyIHM9ZVszXTtpZihzKXt2YXIgbD10WzNd O3RbM109bD9jYShsLHMsZVs0XSk6b2UocyksdFs0XT1sP3YodFszXSxOKTpv ZShlWzRdKX1yZXR1cm4gcz1lWzVdLHMmJihsPXRbNV0sdFs1XT1sP2hhKGws cyxlWzZdKTpvZShzKSx0WzZdPWw/dih0WzVdLE4pOm9lKGVbNl0pKSxzPWVb N10scyYmKHRbN109b2UocykpLHImQSYmKHRbOF09bnVsbD09dFs4XT9lWzhd OlNuKHRbOF0sZVs4XSkpLG51bGw9PXRbOV0mJih0WzldPWVbOV0pLHRbMF09 ZVswXSx0WzFdPW8sdH1mdW5jdGlvbiBucih0LGUpe3JldHVybiB0PT09eT9l OnpzKHQsZSxucil9ZnVuY3Rpb24gc3IodCxlKXt0PWRyKHQpO2Zvcih2YXIg YT0tMSxyPWUubGVuZ3RoLG89e307KythPHI7KXt2YXIgaT1lW2FdO2kgaW4g dCYmKG9baV09dFtpXSl9cmV0dXJuIG99ZnVuY3Rpb24gbHIodCxlKXt2YXIg YT17fTtyZXR1cm4gQWUodCxmdW5jdGlvbih0LHIsbyl7ZSh0LHIsbykmJihh W3JdPXQpfSksYX1mdW5jdGlvbiBjcih0LGUpe2Zvcih2YXIgYT10Lmxlbmd0 aCxyPVNuKGUubGVuZ3RoLGEpLG89b2UodCk7ci0tOyl7dmFyIGk9ZVtyXTt0 W3JdPVFhKGksYSk/b1tpXTp5fXJldHVybiB0fWZ1bmN0aW9uIGhyKHQpe2Zv cih2YXIgZT1haSh0KSxhPWUubGVuZ3RoLHI9YSYmdC5sZW5ndGgsbz0hIXIm JnJyKHIpJiYoa3ModCl8fCRvKHQpfHxXbyh0KSksaT0tMSxuPVtdOysraTxh Oyl7dmFyIHM9ZVtpXTsobyYmUWEocyxyKXx8cm4uY2FsbCh0LHMpKSYmbi5w dXNoKHMpfXJldHVybiBufWZ1bmN0aW9uIHVyKHQpe3JldHVybiBudWxsPT10 P1tdOkphKHQpP18uc3VwcG9ydC51bmluZGV4ZWRDaGFycyYmV28odCk/dC5z cGxpdCgiIik6em8odCk/dDpxaSh0KTpzaSh0KX1mdW5jdGlvbiBkcih0KXtp ZihfLnN1cHBvcnQudW5pbmRleGVkQ2hhcnMmJldvKHQpKXtmb3IodmFyIGU9 LTEsYT10Lmxlbmd0aCxyPXFpKHQpOysrZTxhOylyW2VdPXQuY2hhckF0KGUp O3JldHVybiByfXJldHVybiB6byh0KT90OnFpKHQpfWZ1bmN0aW9uIGZyKHQp e2lmKGtzKHQpKXJldHVybiB0O3ZhciBlPVtdO3JldHVybiBpKHQpLnJlcGxh Y2UoQnQsZnVuY3Rpb24odCxhLHIsbyl7ZS5wdXNoKHI/by5yZXBsYWNlKFB0 LCIkMSIpOmF8fHQpfSksZX1mdW5jdGlvbiBwcih0KXtyZXR1cm4gdCBpbnN0 YW5jZW9mIGV0P3QuY2xvbmUoKTpuZXcgUSh0Ll9fd3JhcHBlZF9fLHQuX19j aGFpbl9fLG9lKHQuX19hY3Rpb25zX18pKX1mdW5jdGlvbiBicih0LGUsYSl7 ZT0oYT90cih0LGUsYSk6bnVsbD09ZSk/MTpDbihUbihlKXx8MSwxKTtmb3Io dmFyIHI9MCxvPXQ/dC5sZW5ndGg6MCxpPS0xLG49Tmkod24oby9lKSk7bz5y OyluWysraV09WWUodCxyLHIrPWUpO3JldHVybiBufWZ1bmN0aW9uIF9yKHQp e2Zvcih2YXIgZT0tMSxhPXQ/dC5sZW5ndGg6MCxyPS0xLG89W107KytlPGE7 KXt2YXIgaT10W2VdO2kmJihvWysrcl09aSl9cmV0dXJuIG99ZnVuY3Rpb24g dnIodCxlLGEpe3ZhciByPXQ/dC5sZW5ndGg6MDtyZXR1cm4gcj8oKGE/dHIo dCxlLGEpOm51bGw9PWUpJiYoZT0xKSxZZSh0LDA+ZT8wOmUpKTpbXX1mdW5j dGlvbiBtcih0LGUsYSl7dmFyIHI9dD90Lmxlbmd0aDowO3JldHVybiByPygo YT90cih0LGUsYSk6bnVsbD09ZSkmJihlPTEpLAordGhpcy4kcGFuZVsxXS5y ZW1vdmUoKSx0aGlzLiRiYXIucmVtb3ZlKCkpLHRoaXMuJGNvbnRhaW5lcil9 LF9fcmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24odCl7aWYodGhpcy5fcGFuZVswXT09 PXQpdGhpcy5fcGFuZVswXT0hMTtlbHNle2lmKHRoaXMuX3BhbmVbMV0hPT10 KXJldHVybjt0aGlzLl9wYW5lWzFdPSExfXQmJih0Ll9fY29udGFpbmVyKG51 bGwpLHQuX3BhcmVudD1udWxsKX0sX19kZXN0cm95OmZ1bmN0aW9uKCl7Zm9y KHRoaXMuX2FuaW0mJihjbGVhckludGVydmFsKHRoaXMuX2FuaW0pLHRoaXMu X2FuaW09MCksdGhpcy4kYmFyLmNsZWFyUXVldWUoKTt0aGlzLl9ib3VuZEV2 ZW50cy5sZW5ndGg7KXRoaXMuX3BhcmVudC5vZmYodGhpcy5fYm91bmRFdmVu dHNbMF0uZXZlbnQsdGhpcy5fYm91bmRFdmVudHNbMF0uaGFuZGxlciksdGhp cy5fYm91bmRFdmVudHMuc2hpZnQoKTt0aGlzLl9wYW5lWzBdJiYodGhpcy5f cGFuZVswXS5fX2Rlc3Ryb3koKSx0aGlzLl9wYW5lWzBdPW51bGwpLHRoaXMu X3BhbmVbMV0mJih0aGlzLl9wYW5lWzFdLl9fZGVzdHJveSgpLHRoaXMuX3Bh bmVbMV09bnVsbCksdGhpcy5fX2NvbnRhaW5lcihudWxsKSx0aGlzLl9wYXJl bnQ9ITF9fSk7cmV0dXJuIHJ9KSxhKCJ3Y0RvY2tlci9mcmFtZSIsWyJkY2wv ZGNsIiwiLi90eXBlcyIsIi4vYmFzZSJdLGZ1bmN0aW9uKHQsZSxhKXt2YXIg cj10KGEse2RlY2xhcmVkQ2xhc3M6IndjRnJhbWUiLExFRlRfVEFCX0JVRkZF UjoxNSxjb25zdHJ1Y3RvcjpmdW5jdGlvbih0LGEscil7dGhpcy4kY29udGFp bmVyPSQodCksdGhpcy5fcGFyZW50PWEsdGhpcy5faXNGbG9hdGluZz1yLHRo aXMuJGZyYW1lPW51bGwsdGhpcy4kdGl0bGU9bnVsbCx0aGlzLiR0aXRsZUJh cj1udWxsLHRoaXMuJHRhYkJhcj1udWxsLHRoaXMuJHRhYlNjcm9sbD1udWxs LHRoaXMuJGNlbnRlcj1udWxsLHRoaXMuJHRhYkxlZnQ9bnVsbCx0aGlzLiR0 YWJSaWdodD1udWxsLHRoaXMuJGNsb3NlPW51bGwsdGhpcy4kY29sbGFwc2U9 bnVsbCx0aGlzLiR0b3A9bnVsbCx0aGlzLiRib3R0b209bnVsbCx0aGlzLiRs ZWZ0PW51bGwsdGhpcy4kcmlnaHQ9bnVsbCx0aGlzLiRjb3JuZXIxPW51bGws dGhpcy4kY29ybmVyMj1udWxsLHRoaXMuJGNvcm5lcjM9bnVsbCx0aGlzLiRj b3JuZXI0PW51bGwsdGhpcy4kYnV0dG9uQmFyPW51bGwsdGhpcy4kc2hhZG93 ZXI9bnVsbCx0aGlzLiRtb2RhbEJsb2NrZXI9bnVsbCx0aGlzLl90aXRsZVZp c2libGU9ITAsdGhpcy5fY2FuU2Nyb2xsVGFicz0hMSx0aGlzLl90YWJPcmll bnRhdGlvbj1lLlRBQi5UT1AsdGhpcy5fdGFiU2Nyb2xsUG9zPTAsdGhpcy5f Y3VyVGFiPS0xLHRoaXMuX3BhbmVsTGlzdD1bXSx0aGlzLl9idXR0b25MaXN0 PVtdLHRoaXMuX3Jlc2l6ZURhdGE9e3RpbWU6LTEsdGltZW91dDohMSxkZWx0 YToxNTB9LHRoaXMuX3Bvcz17eDouNSx5Oi41fSx0aGlzLl9zaXplPXt4OjQw MCx5OjQwMH0sdGhpcy5fbGFzdFNpemU9e3g6NDAwLHk6NDAwfSx0aGlzLl9h bmNob3JNb3VzZT17eDowLHk6MH0sdGhpcy5fX2luaXQoKX0scG9zOmZ1bmN0 aW9uKHQsZSxhKXt2YXIgcj10aGlzLiRjb250YWluZXIud2lkdGgoKSxvPXRo aXMuJGNvbnRhaW5lci5oZWlnaHQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlw ZW9mIHQ/YT97eDp0aGlzLl9wb3MueCpyLHk6dGhpcy5fcG9zLnkqb306e3g6 dGhpcy5fcG9zLngseTp0aGlzLl9wb3MueX06dm9pZChhPyh0aGlzLl9wb3Mu eD10L3IsdGhpcy5fcG9zLnk9ZS9vKToodGhpcy5fcG9zLng9dCx0aGlzLl9w b3MueT1lKSl9LGluaXRTaXplOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXt4Oi0x LHk6LTF9LGU9MDtlPHRoaXMuX3BhbmVsTGlzdC5sZW5ndGg7KytlKXQueDx0 aGlzLl9wYW5lbExpc3RbZV0uaW5pdFNpemUoKS54JiYodC54PXRoaXMuX3Bh bmVsTGlzdFtlXS5pbml0U2l6ZSgpLngpLHQueTx0aGlzLl9wYW5lbExpc3Rb ZV0uaW5pdFNpemUoKS55JiYodC55PXRoaXMuX3BhbmVsTGlzdFtlXS5pbml0 U2l6ZSgpLnkpO3JldHVybiB0Lng8MHx8dC55PDA/ITE6dH0sbWluU2l6ZTpm dW5jdGlvbigpe2Zvcih2YXIgdD17eDowLHk6MH0sZT0wO2U8dGhpcy5fcGFu ZWxMaXN0Lmxlbmd0aDsrK2UpdC54PU1hdGgubWF4KHQueCx0aGlzLl9wYW5l bExpc3RbZV0ubWluU2l6ZSgpLngpLHQueT1NYXRoLm1heCh0LnksdGhpcy5f cGFuZWxMaXN0W2VdLm1pblNpemUoKS55KTtyZXR1cm4gdH0sbWF4U2l6ZTpm dW5jdGlvbigpe2Zvcih2YXIgdD17eDoxLzAseToxLzB9LGU9MDtlPHRoaXMu X3BhbmVsTGlzdC5sZW5ndGg7KytlKXQueD1NYXRoLm1pbih0LngsdGhpcy5f cGFuZWxMaXN0W2VdLm1heFNpemUoKS54KSx0Lnk9TWF0aC5taW4odC55LHRo aXMuX3BhbmVsTGlzdFtlXS5tYXhTaXplKCkueSk7cmV0dXJuIHR9LHRhYk9y aWVudGF0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiZ0aGlz Ll90YWJPcmllbnRhdGlvbiE9PXQmJnRoaXMuZG9ja2VyKCkuX2Nhbk9yaWVu dFRhYnMmJih0aGlzLl90YWJPcmllbnRhdGlvbj10LHRoaXMuX191cGRhdGVU YWJzKCksdGhpcy5fX3VwZGF0ZVRhYnMoKSksdGhpcy5fdGFiT3JpZW50YXRp b259LGFkZFBhbmVsOmZ1bmN0aW9uKHQsZSl7dmFyIGE9dGhpcy5fcGFuZWxM aXN0LmluZGV4T2YodCk7LTEhPT1hJiZ0aGlzLl9wYW5lbExpc3Quc3BsaWNl KGEsMSksInVuZGVmaW5lZCI9PXR5cGVvZiBlP3RoaXMuX3BhbmVsTGlzdC5w dXNoKHQpOnRoaXMuX3BhbmVsTGlzdC5zcGxpY2UoZSwwLHQpLC0xPT09dGhp cy5fY3VyVGFiJiZ0aGlzLl9wYW5lbExpc3QubGVuZ3RoJiYodGhpcy5pc0Nv bGxhcHNlcigpfHwodGhpcy5fY3VyVGFiPTApLHRoaXMuX3NpemU9dGhpcy5p bml0U2l6ZSgpKSx0aGlzLl9fdXBkYXRlVGFicygpfSxyZW1vdmVQYW5lbDpm dW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX3BhbmVsTGlzdC5sZW5n dGg7KytlKWlmKHRoaXMuX3BhbmVsTGlzdFtlXT09PXQpe3RoaXMuaXNDb2xs YXBzZXIoKT90aGlzLl9jdXJUYWI9LTE6dGhpcy5fY3VyVGFiPj1lJiZ0aGlz Ll9jdXJUYWItLSx0aGlzLl9wYW5lbExpc3RbZV0uX3BhcmVudD09PXRoaXMm Jih0aGlzLl9wYW5lbExpc3RbZV0uX19jb250YWluZXIobnVsbCksdGhpcy5f cGFuZWxMaXN0W2VdLl9wYXJlbnQ9bnVsbCksdGhpcy5fcGFuZWxMaXN0LnNw bGljZShlLDEpLHQuX2lzVmlzaWJsZT0hMTticmVha31yZXR1cm4tMT09PXRo aXMuX2N1clRhYiYmIXRoaXMuY29sbGFwc2UoKSYmdGhpcy5fcGFuZWxMaXN0 Lmxlbmd0aCYmKHRoaXMuX2N1clRhYj0wKSx0aGlzLl9fdXBkYXRlVGFicygp LHRoaXMuX3BhbmVsTGlzdC5sZW5ndGg+MH0scGFuZWw6ZnVuY3Rpb24odCxl KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHQmJih0aGlzLmlzQ29sbGFw c2VyKCkmJnQ9PT10aGlzLl9jdXJUYWImJih0aGlzLmNvbGxhcHNlKCksdD0t MSksdDx0aGlzLl9wYW5lbExpc3QubGVuZ3RoJiYodGhpcy4kdGFiQmFyLmZp bmQoJz4gLndjVGFiU2Nyb2xsZXIgPiAud2NQYW5lbFRhYltpZD0iJyt0aGlz Ll9jdXJUYWIrJyJdJykucmVtb3ZlQ2xhc3MoIndjUGFuZWxUYWJBY3RpdmUi KSx0aGlzLiRjZW50ZXIuY2hpbGRyZW4oJy53Y1BhbmVsVGFiQ29udGVudFtp ZD0iJyt0aGlzLl9jdXJUYWIrJyJdJykuYWRkQ2xhc3MoIndjUGFuZWxUYWJD b250ZW50SGlkZGVuIiksdGhpcy5fY3VyVGFiIT09dCYmdGhpcy5jb2xsYXBz ZSgpLHRoaXMuX2N1clRhYj10LHQ+LTEmJih0aGlzLiR0YWJCYXIuZmluZCgn PiAud2NUYWJTY3JvbGxlciA+IC53Y1BhbmVsVGFiW2lkPSInK3QrJyJdJyku YWRkQ2xhc3MoIndjUGFuZWxUYWJBY3RpdmUiKSx0aGlzLiRjZW50ZXIuY2hp bGRyZW4oJy53Y1BhbmVsVGFiQ29udGVudFtpZD0iJyt0KyciXScpLnJlbW92 ZUNsYXNzKCJ3Y1BhbmVsVGFiQ29udGVudEhpZGRlbiIpLHRoaXMuZXhwYW5k KCkpLHRoaXMuX191cGRhdGVUYWJzKGUpKSksdGhpcy5fY3VyVGFiPi0xJiZ0 aGlzLl9jdXJUYWI8dGhpcy5fcGFuZWxMaXN0Lmxlbmd0aD90aGlzLl9wYW5l bExpc3RbdGhpcy5fY3VyVGFiXTp0aGlzLmlzQ29sbGFwc2VyKCkmJnRoaXMu X3BhbmVsTGlzdC5sZW5ndGg/dGhpcy5fcGFuZWxMaXN0WzBdOiExfSxpc0Nv bGxhcHNlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnQmJiJ3Y0Ry YXdlciI9PT10aGlzLl9wYXJlbnQuZGVjbGFyZWRDbGFzc30sY29sbGFwc2U6 ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXNDb2xsYXBzZXIoKT8odGhpcy5f cGFyZW50LmNvbGxhcHNlKHQpLCEwKTohMX0sZXhwYW5kOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuaXNDb2xsYXBzZXIoKT8odGhpcy5fcGFyZW50LmV4cGFu ZCgpLCEwKTohMX0saXNFeHBhbmRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlz LmlzQ29sbGFwc2VyKCk/dGhpcy5fcGFyZW50LmlzRXhwYW5kZWQoKTp2b2lk IDB9LF9faW5pdDpmdW5jdGlvbigpe3RoaXMuJGZyYW1lPSQoJzxkaXYgY2xh c3M9IndjRnJhbWUgd2NXaWRlIHdjVGFsbCI+JyksdGhpcy4kdGl0bGU9JCgn PGRpdiBjbGFzcz0id2NGcmFtZVRpdGxlIj4nKSx0aGlzLiR0aXRsZUJhcj0k KCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lVGl0bGVCYXIgd2NGcmFtZVRvcHBlciI+ JyksdGhpcy4kdGFiQmFyPSQoJzxkaXYgY2xhc3M9IndjRnJhbWVUaXRsZUJh ciI+JyksdGhpcy4kdGFiU2Nyb2xsPSQoJzxkaXYgY2xhc3M9IndjVGFiU2Ny b2xsZXIiPicpLHRoaXMuJGNlbnRlcj0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1l Q2VudGVyIHdjUGFuZWxCYWNrZ3JvdW5kIj4nKSx0aGlzLiR0YWJMZWZ0PSQo JzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b24gd2NGcmFtZUJ1dHRvbkxlZnQi IHRpdGxlPSJTY3JvbGwgdGFicyB0byB0aGUgbGVmdC4iPjxzcGFuIGNsYXNz PSJmYSBmYS1hcnJvdy1sZWZ0Ij48L3NwYW4+PC9kaXY+JyksdGhpcy4kdGFi UmlnaHQ9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbiB3Y0ZyYW1lQnV0 dG9uUmlnaHQgIiB0aXRsZT0iU2Nyb2xsIHRhYnMgdG8gdGhlIHJpZ2h0LiI+ PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LXJpZ2h0Ij48L3NwYW4+PC9kaXY+ JyksdGhpcy4kY2xvc2U9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbiIg dGl0bGU9IkNsb3NlIHRoZSBjdXJyZW50bHkgYWN0aXZlIHBhbmVsIHRhYiI+ PGRpdiBjbGFzcz0iZmEgZmEtY2xvc2UiPjwvZGl2Plg8L2Rpdj4nKSx0aGlz LiRjb2xsYXBzZT0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lQnV0dG9uIiB0aXRs ZT0iQ29sbGFwc2UgdGhlIGFjdGl2ZSBwYW5lbCI+PGRpdiBjbGFzcz0iZmEg ZmEtZG93bmxvYWQiPjwvZGl2PkM8L2Rpdj4nKSx0aGlzLiRidXR0b25CYXI9 JCgnPGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbkJhciI+JyksdGhpcy4kdGFi QnV0dG9uQmFyPSQoJzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b25CYXIiPicp LHRoaXMuJHRhYkJhci5hcHBlbmQodGhpcy4kdGFiU2Nyb2xsKSx0aGlzLiR0 YWJCYXIuYXBwZW5kKHRoaXMuJHRhYkJ1dHRvbkJhciksdGhpcy4kZnJhbWUu YXBwZW5kKHRoaXMuJGJ1dHRvbkJhciksdGhpcy4kYnV0dG9uQmFyLmFwcGVu ZCh0aGlzLiRjbG9zZSksdGhpcy4kYnV0dG9uQmFyLmFwcGVuZCh0aGlzLiRj b2xsYXBzZSksdGhpcy4kZnJhbWUuYXBwZW5kKHRoaXMuJGNlbnRlciksdGhp cy5faXNGbG9hdGluZyYmKHRoaXMuJHRvcD0kKCc8ZGl2IGNsYXNzPSJ3Y0Zy YW1lRWRnZUggd2NGcmFtZUVkZ2UiPjwvZGl2PicpLmNzcygidG9wIiwiLTRw eCIpLmNzcygibGVmdCIsIjBweCIpLmNzcygicmlnaHQiLCIwcHgiKSx0aGlz LiRib3R0b209JCgnPGRpdiBjbGFzcz0id2NGcmFtZUVkZ2VIIHdjRnJhbWVF ZGdlIj48L2Rpdj4nKS5jc3MoImJvdHRvbSIsIi00cHgiKS5jc3MoImxlZnQi LCIwcHgiKS5jc3MoInJpZ2h0IiwiMHB4IiksdGhpcy4kbGVmdD0kKCc8ZGl2 IGNsYXNzPSJ3Y0ZyYW1lRWRnZVYgd2NGcmFtZUVkZ2UiPjwvZGl2PicpLmNz cygibGVmdCIsIi00cHgiKS5jc3MoInRvcCIsIjBweCIpLmNzcygiYm90dG9t IiwiMHB4IiksdGhpcy4kcmlnaHQ9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUVk Z2VWIHdjRnJhbWVFZGdlIj48L2Rpdj4nKS5jc3MoInJpZ2h0IiwiLTRweCIp LmNzcygidG9wIiwiMHB4IikuY3NzKCJib3R0b20iLCIwcHgiKSx0aGlzLiRj b3JuZXIxPSQoJzxkaXYgY2xhc3M9IndjRnJhbWVDb3JuZXJOVyB3Y0ZyYW1l RWRnZSI+PC9kaXY+JykuY3NzKCJ0b3AiLCItNHB4IikuY3NzKCJsZWZ0Iiwi LTRweCIpLHRoaXMuJGNvcm5lcjI9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUNv cm5lck5FIHdjRnJhbWVFZGdlIj48L2Rpdj4nKS5jc3MoInRvcCIsIi00cHgi KS5jc3MoInJpZ2h0IiwiLTRweCIpLHRoaXMuJGNvcm5lcjM9JCgnPGRpdiBj bGFzcz0id2NGcmFtZUNvcm5lck5XIHdjRnJhbWVFZGdlIj48L2Rpdj4nKS5j c3MoImJvdHRvbSIsIi00cHgiKS5jc3MoInJpZ2h0IiwiLTRweCIpLHRoaXMu JGNvcm5lcjQ9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUNvcm5lck5FIHdjRnJh bWVFZGdlIj48L2Rpdj4nKS5jc3MoImJvdHRvbSIsIi00cHgiKS5jc3MoImxl ZnQiLCItNHB4IiksdGhpcy4kZnJhbWUuYXBwZW5kKHRoaXMuJHRvcCksdGhp cy4kZnJhbWUuYXBwZW5kKHRoaXMuJGJvdHRvbSksdGhpcy4kZnJhbWUuYXBw ZW5kKHRoaXMuJGxlZnQpLHRoaXMuJGZyYW1lLmFwcGVuZCh0aGlzLiRyaWdo dCksdGhpcy4kZnJhbWUuYXBwZW5kKHRoaXMuJGNvcm5lcjEpLHRoaXMuJGZy YW1lLmFwcGVuZCh0aGlzLiRjb3JuZXIyKSx0aGlzLiRmcmFtZS5hcHBlbmQo dGhpcy4kY29ybmVyMyksdGhpcy4kZnJhbWUuYXBwZW5kKHRoaXMuJGNvcm5l cjQpKSx0aGlzLl9fY29udGFpbmVyKHRoaXMuJGNvbnRhaW5lciksdGhpcy5f aXNGbG9hdGluZyYmdGhpcy4kZnJhbWUuYWRkQ2xhc3MoIndjRmxvYXRpbmci KSx0aGlzLiRjZW50ZXIuc2Nyb2xsKHRoaXMuX19zY3JvbGxlZC5iaW5kKHRo aXMpKX0sX191cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRjb250YWlu ZXIud2lkdGgoKSxlPXRoaXMuJGNvbnRhaW5lci5oZWlnaHQoKTtpZih0aGlz Ll9pc0Zsb2F0aW5nKXt2YXIgYT10aGlzLl9wb3MueCp0LXRoaXMuX3NpemUu eC8yLHI9dGhpcy5fcG9zLnkqZS10aGlzLl9zaXplLnkvMjswPnImJihyPTAp LGErdGhpcy5fc2l6ZS54LzI8MCYmKGE9LXRoaXMuX3NpemUueC8yKSxhK3Ro aXMuX3NpemUueC8yPnQmJihhPXQtdGhpcy5fc2l6ZS54LzIpLHIrcGFyc2VJ bnQodGhpcy4kY2VudGVyLmNzcygidG9wIikpPmUmJihyPWUtcGFyc2VJbnQo dGhpcy4kY2VudGVyLmNzcygidG9wIikpKSx0aGlzLiRmcmFtZS5jc3MoImxl ZnQiLGErInB4IiksdGhpcy4kZnJhbWUuY3NzKCJ0b3AiLHIrInB4IiksdGhp cy4kZnJhbWUuY3NzKCJ3aWR0aCIsdGhpcy5fc2l6ZS54KyJweCIpLHRoaXMu JGZyYW1lLmNzcygiaGVpZ2h0Iix0aGlzLl9zaXplLnkrInB4Iil9KHQhPT10 aGlzLl9sYXN0U2l6ZS54fHxlIT09dGhpcy5fbGFzdFNpemUueSkmJih0aGlz Ll9sYXN0U2l6ZS54PXQsdGhpcy5fbGFzdFNpemUueT1lLHRoaXMuX3Jlc2l6 ZURhdGEudGltZT1uZXcgRGF0ZSx0aGlzLl9yZXNpemVEYXRhLnRpbWVvdXR8 fCh0aGlzLl9yZXNpemVEYXRhLnRpbWVvdXQ9ITAsc2V0VGltZW91dCh0aGlz Ll9fcmVzaXplRW5kLmJpbmQodGhpcyksdGhpcy5fcmVzaXplRGF0YS5kZWx0 YSkpKSx0aGlzLl9fb25UYWJDaGFuZ2UoKX0sX19yZXNpemVFbmQ6ZnVuY3Rp b24oKXt0aGlzLl9fdXBkYXRlVGFicygpLG5ldyBEYXRlLXRoaXMuX3Jlc2l6 ZURhdGEudGltZTx0aGlzLl9yZXNpemVEYXRhLmRlbHRhP3NldFRpbWVvdXQo dGhpcy5fX3Jlc2l6ZUVuZC5iaW5kKHRoaXMpLHRoaXMuX3Jlc2l6ZURhdGEu ZGVsdGEpOnRoaXMuX3Jlc2l6ZURhdGEudGltZW91dD0hMX0sX190cmlnZ2Vy OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBhPTA7YTx0aGlzLl9wYW5lbExpc3Qu bGVuZ3RoOysrYSl0aGlzLl9wYW5lbExpc3RbYV0uX190cmlnZ2VyKHQsZSl9 LF9fc2F2ZTpmdW5jdGlvbigpe3ZhciB0PXt9O3QudHlwZT0id2NGcmFtZSIs dC5mbG9hdGluZz10aGlzLl9pc0Zsb2F0aW5nLHQuaXNGb2N1cz10aGlzLiRm cmFtZS5oYXNDbGFzcygid2NGbG9hdGluZ0ZvY3VzIiksdC50YWJPcmllbnRh dGlvbj10aGlzLl90YWJPcmllbnRhdGlvbix0LnBvcz17eDp0aGlzLl9wb3Mu eCx5OnRoaXMuX3Bvcy55fSx0LnNpemU9e3g6dGhpcy5fc2l6ZS54LHk6dGhp cy5fc2l6ZS55fSx0LnRhYj10aGlzLl9jdXJUYWIsdC5wYW5lbHM9W107Zm9y KHZhciBlPTA7ZTx0aGlzLl9wYW5lbExpc3QubGVuZ3RoOysrZSl0LnBhbmVs cy5wdXNoKHRoaXMuX3BhbmVsTGlzdFtlXS5fX3NhdmUoKSk7cmV0dXJuIHR9 LF9fcmVzdG9yZTpmdW5jdGlvbih0LGEpe3RoaXMuX2lzRmxvYXRpbmc9dC5m bG9hdGluZyx0aGlzLl90YWJPcmllbnRhdGlvbj10LnRhYk9yaWVudGF0aW9u fHxlLlRBQi5UT1AsdGhpcy5fcG9zLng9dC5wb3MueCx0aGlzLl9wb3MueT10 LnBvcy55LHRoaXMuX3NpemUueD10LnNpemUueCx0aGlzLl9zaXplLnk9dC5z aXplLnksdGhpcy5fY3VyVGFiPXQudGFiO2Zvcih2YXIgcj0wO3I8dC5wYW5l bHMubGVuZ3RoOysrcil7dmFyIG89YS5fX2NyZWF0ZSh0LnBhbmVsc1tyXSx0 aGlzLHRoaXMuJGNlbnRlcik7by5fX3Jlc3RvcmUodC5wYW5lbHNbcl0sYSks dGhpcy5fcGFuZWxMaXN0LnB1c2gobyl9dGhpcy5fX3VwZGF0ZSgpLHQuaXNG b2N1cyYmdGhpcy4kZnJhbWUuYWRkQ2xhc3MoIndjRmxvYXRpbmdGb2N1cyIp fSxfX3VwZGF0ZVRhYnM6ZnVuY3Rpb24odCl7dGhpcy4kdGFiU2Nyb2xsLmVt cHR5KCk7dmFyIGE9ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuX3RhYk9yaWVu dGF0aW9uKXtjYXNlIGUuVEFCLkJPVFRPTTpyZXR1cm4gdC5vZmZzZXQoKS5s ZWZ0O2Nhc2UgZS5UQUIuVE9QOnJldHVybiB0Lm9mZnNldCgpLmxlZnQ7Y2Fz ZSBlLlRBQi5MRUZUOnJldHVybiB0Lm9mZnNldCgpLnRvcDtjYXNlIGUuVEFC LlJJR0hUOnJldHVybiB0Lm9mZnNldCgpLnRvcH19LmJpbmQodGhpcykscj1b XSxvPVtdLGk9MCxuPWEodGhpcy4kdGFiU2Nyb2xsKSxzPXRoaXMuX3BhbmVs TGlzdC5sZW5ndGg+MXx8dGhpcy5faXNGbG9hdGluZ3x8dGhpcy5pc0NvbGxh cHNlcigpO3RoaXMuaXNDb2xsYXBzZXIoKT90aGlzLiR0YWJCYXIuYWRkQ2xh c3MoIndjTm90TW92ZWFibGUiKToodGhpcy4kdGl0bGVCYXIucmVtb3ZlQ2xh c3MoIndjTm90TW92ZWFibGUiKSx0aGlzLiR0YWJCYXIucmVtb3ZlQ2xhc3Mo IndjTm90TW92ZWFibGUiKSksdGhpcy4kY2VudGVyLmNoaWxkcmVuKCIud2NQ YW5lbFRhYkNvbnRlbnQiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5hZGRD bGFzcygid2NQYW5lbFRhYkNvbnRlbnRIaWRkZW4gd2NQYW5lbFRhYlVudXNl ZCIpfSksdGhpcy5fdGl0bGVWaXNpYmxlPSEwLHRoaXMuJHRpdGxlLmh0bWwo IiIpO2Zvcih2YXIgbD0wO2w8dGhpcy5fcGFuZWxMaXN0Lmxlbmd0aDsrK2wp e3ZhciBjPXRoaXMuX3BhbmVsTGlzdFtsXSxoPW51bGw7cyYmKGg9Yy4kdGl0 bGUsYy4kdGl0bGUuYXR0cigiaWQiLGwpLHRoaXMuJHRhYlNjcm9sbC5hcHBl bmQoYy4kdGl0bGUpKSxjLm1vdmVhYmxlKCl8fCh0aGlzLiR0aXRsZUJhci5h ZGRDbGFzcygid2NOb3RNb3ZlYWJsZSIpLHRoaXMuJHRhYkJhci5hZGRDbGFz cygid2NOb3RNb3ZlYWJsZSIpKSxjLl90aXRsZVZpc2libGV8fCh0aGlzLl90 aXRsZVZpc2libGU9ITEpO3ZhciB1PXRoaXMuJGNlbnRlci5jaGlsZHJlbign LndjUGFuZWxUYWJDb250ZW50W2lkPSInK2wrJyJdJyk7dS5sZW5ndGh8fCh1 PSQoJzxkaXYgY2xhc3M9IndjUGFuZWxUYWJDb250ZW50IHdjUGFuZWxUYWJD b250ZW50SGlkZGVuIiBpZD0iJytsKyciPicpLHRoaXMuJGNlbnRlci5hcHBl bmQodSkpLGMuX19jb250YWluZXIodSksYy5fcGFyZW50PXRoaXM7dmFyIGQ9 dGhpcy5fY3VyVGFiPT09bDtpZihjLmlzVmlzaWJsZSgpIT09ZCYmci5wdXNo KHtwYW5lbDpjLGlzVmlzaWJsZTpkfSksdS5yZW1vdmVDbGFzcygid2NQYW5l bFRhYlVudXNlZCIpLGQmJihoJiZoLmFkZENsYXNzKCJ3Y1BhbmVsVGFiQWN0 aXZlIiksdS5yZW1vdmVDbGFzcygid2NQYW5lbFRhYkNvbnRlbnRIaWRkZW4i KSx0aGlzLiR0aXRsZS5odG1sKGMudGl0bGUoKSksYy4kaWNvbikpe3ZhciBm PWMuJGljb24uY2xvbmUoKTt0aGlzLiR0aXRsZS5wcmVwZW5kKGYpfWgmJihp PWEoaCktbixvLnB1c2goaSksaSs9aC5vdXRlcldpZHRoKCkpfXZhciBwPXRo aXMuJHRpdGxlQmFyLGI9MDtpZih0aGlzLl90aXRsZVZpc2libGUpe3N3aXRj aCh0aGlzLiRmcmFtZS5wYXJlbnQoKXx8dGhpcy4kY2VudGVyLmNzcygidG9w IiwiIiksdGhpcy5fdGFiT3JpZW50YXRpb24pe2Nhc2UgZS5UQUIuVE9QOnRo aXMuJGZyYW1lLnByZXBlbmQodGhpcy4kdGFiQmFyKSx0aGlzLiR0aXRsZUJh ci5yZW1vdmUoKSx0aGlzLiR0YWJCYXIuYWRkQ2xhc3MoIndjVGFiVG9wIiku cmVtb3ZlQ2xhc3MoIndjVGFiTGVmdCB3Y1RhYlJpZ2h0IHdjVGFiQm90dG9t Iikscz90aGlzLiR0aXRsZS5yZW1vdmUoKTp0aGlzLiR0YWJCYXIucHJlcGVu ZCh0aGlzLiR0aXRsZSkscD10aGlzLiR0YWJCYXIsdGhpcy4kY2VudGVyLmNz cygibGVmdCIsMCkuY3NzKCJyaWdodCIsMCkuY3NzKCJib3R0b20iLDApLGI9 dGhpcy4kY2VudGVyLndpZHRoKCk7YnJlYWs7Y2FzZSBlLlRBQi5CT1RUT006 aWYodGhpcy4kZnJhbWUucHJlcGVuZCh0aGlzLiR0aXRsZUJhciksdGhpcy4k dGl0bGVCYXIuYXBwZW5kKHRoaXMuJHRpdGxlKSxzKXt2YXIgXz10aGlzLiR0 aXRsZUJhci5oZWlnaHQoKTt0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kdGFi QmFyKSx0aGlzLiR0YWJCYXIuYWRkQ2xhc3MoIndjVGFiQm90dG9tIikucmVt b3ZlQ2xhc3MoIndjVGFiVG9wIHdjVGFiTGVmdCB3Y1RhYlJpZ2h0IiksdGhp cy4kY2VudGVyLmNzcygibGVmdCIsMCkuY3NzKCJyaWdodCIsMCkuY3NzKCJi b3R0b20iLF8pfWVsc2UgdGhpcy4kdGFiQmFyLnJlbW92ZSgpO2I9dGhpcy4k Y2VudGVyLndpZHRoKCk7YnJlYWs7Y2FzZSBlLlRBQi5MRUZUOmlmKHRoaXMu JGZyYW1lLnByZXBlbmQodGhpcy4kdGl0bGVCYXIpLHRoaXMuJHRpdGxlQmFy LmFwcGVuZCh0aGlzLiR0aXRsZSkscyl7dmFyIF89dGhpcy4kdGl0bGVCYXIu aGVpZ2h0KCk7dGhpcy4kZnJhbWUuYXBwZW5kKHRoaXMuJHRhYkJhciksdGhp cy4kdGFiQmFyLmFkZENsYXNzKCJ3Y1RhYkxlZnQiKS5yZW1vdmVDbGFzcygi d2NUYWJUb3Agd2NUYWJSaWdodCB3Y1RhYkJvdHRvbSIpLHRoaXMuJGNlbnRl ci5jc3MoImxlZnQiLF8pLmNzcygicmlnaHQiLDApLmNzcygiYm90dG9tIiww KX1lbHNlIHRoaXMuJHRhYkJhci5yZW1vdmUoKTtiPXRoaXMuJGNlbnRlci5o ZWlnaHQoKTticmVhaztjYXNlIGUuVEFCLlJJR0hUOmlmKHRoaXMuJGZyYW1l LnByZXBlbmQodGhpcy4kdGl0bGVCYXIpLHRoaXMuJHRpdGxlQmFyLmFwcGVu ZCh0aGlzLiR0aXRsZSkscyl7dmFyIF89dGhpcy4kdGl0bGVCYXIuaGVpZ2h0 KCk7dGhpcy4kZnJhbWUuYXBwZW5kKHRoaXMuJHRhYkJhciksdGhpcy4kdGFi QmFyLmFkZENsYXNzKCJ3Y1RhYlJpZ2h0IikucmVtb3ZlQ2xhc3MoIndjVGFi VG9wIHdjVGFiTGVmdCB3Y1RhYkJvdHRvbSIpLHRoaXMuJGNlbnRlci5jc3Mo ImxlZnQiLDApLmNzcygicmlnaHQiLF8pLmNzcygiYm90dG9tIiwwKX1lbHNl IHRoaXMuJHRhYkJhci5yZW1vdmUoKTtiPXRoaXMuJGNlbnRlci5oZWlnaHQo KX1zfHx0aGlzLiRjZW50ZXIuY3NzKCJsZWZ0IiwwKS5jc3MoInJpZ2h0Iiww KS5jc3MoImJvdHRvbSIsMCl9ZWxzZSB0aGlzLiR0aXRsZUJhci5yZW1vdmUo KSx0aGlzLiR0YWJCYXIucmVtb3ZlKCksdGhpcy4kY2VudGVyLmNzcygidG9w IiwwKS5jc3MoImxlZnQiLDApLmNzcygicmlnaHQiLDApLmNzcygiYm90dG9t IiwwKTtpZih0aGlzLiRjZW50ZXIuY2hpbGRyZW4oIi53Y1BhbmVsVGFiVW51 c2VkIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlKCl9KSx0aGlz Ll90aXRsZVZpc2libGUpe3ZhciB2PXRoaXMuX19vblRhYkNoYW5nZSgpO2lm KHQpZm9yKHZhciBsPTA7bDxvLmxlbmd0aDsrK2wpaWYobD09PXRoaXMuX2N1 clRhYil7dmFyIG09b1tsXSx3PWk7bCsxPG8ubGVuZ3RoJiYodz1vW2wrMV0p O3ZhciBnPS1wYXJzZUludCh0aGlzLiR0YWJTY3JvbGwuY3NzKCJsZWZ0Iikp LFQ9Yi12O2c+bT8odGhpcy5fdGFiU2Nyb2xsUG9zPW0tdGhpcy5MRUZUX1RB Ql9CVUZGRVIsdGhpcy5fdGFiU2Nyb2xsUG9zPDAmJih0aGlzLl90YWJTY3Jv bGxQb3M9MCkpOnctZz5UJiYodGhpcy5fdGFiU2Nyb2xsUG9zPXctVCt0aGlz LkxFRlRfVEFCX0JVRkZFUik7YnJlYWt9aWYodGhpcy5fY2FuU2Nyb2xsVGFi cz0hMSxpPmItdil7dGhpcy5fY2FuU2Nyb2xsVGFicz10aGlzLl90aXRsZVZp c2libGUsdGhpcy5fY2FuU2Nyb2xsVGFicyYmKHRoaXMuJHRhYkJ1dHRvbkJh ci5hcHBlbmQodGhpcy4kdGFiUmlnaHQpLHRoaXMuJHRhYkJ1dHRvbkJhci5h cHBlbmQodGhpcy4kdGFiTGVmdCksdis9dGhpcy4kdGFiUmlnaHQub3V0ZXJX aWR0aCgpLHYrPXRoaXMuJHRhYkxlZnQub3V0ZXJXaWR0aCgpKTt2YXIgeD1p LShiLXYpLzI7aWYodGhpcy5fdGFiU2Nyb2xsUG9zPngpZm9yKHZhciB5PXRo aXMuJHRhYlNjcm9sbC5jaGlsZHJlbigpLGw9MDtsPHkubGVuZ3RoOysrbCl7 dmFyIGg9JCh5W2xdKTtpZihpPWEoaCktbixpK2gub3V0ZXJXaWR0aCgpPngp e3RoaXMuX3RhYlNjcm9sbFBvcz1pLXRoaXMuTEVGVF9UQUJfQlVGRkVSLHRo aXMuX3RhYlNjcm9sbFBvczwwJiYodGhpcy5fdGFiU2Nyb2xsUG9zPTApO2Jy ZWFrfX19ZWxzZSB0aGlzLl90YWJTY3JvbGxQb3M9MCx0aGlzLiR0YWJMZWZ0 LnJlbW92ZSgpLHRoaXMuJHRhYlJpZ2h0LnJlbW92ZSgpO3RoaXMuJHRhYlNj cm9sbC5zdG9wKCkuYW5pbWF0ZSh7bGVmdDotdGhpcy5fdGFiU2Nyb2xsUG9z KyJweCJ9LCJmYXN0Iik7Zm9yKHZhciBsPTA7bDxyLmxlbmd0aDsrK2wpclts XS5wYW5lbC5fX2lzVmlzaWJsZShyW2xdLmlzVmlzaWJsZSl9fSxfX29uVGFi Q2hhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ9MCxhPTAscj10aGlzLnBhbmVsKCk7 Zm9yKHRoaXMuJHRhYkxlZnQucmVtb3ZlKCksdGhpcy4kdGFiUmlnaHQucmVt b3ZlKCksdGhpcy4kY2xvc2UuaGlkZSgpLHRoaXMuJGNvbGxhcHNlLmhpZGUo KTt0aGlzLl9idXR0b25MaXN0Lmxlbmd0aDspdGhpcy5fYnV0dG9uTGlzdC5w b3AoKS5yZW1vdmUoKTtpZihyKXt2YXIgbz1yLnNjcm9sbGFibGUoKTtpZih0 aGlzLiRjZW50ZXIudG9nZ2xlQ2xhc3MoIndjU2Nyb2xsYWJsZVgiLG8ueCks dGhpcy4kY2VudGVyLnRvZ2dsZUNsYXNzKCJ3Y1Njcm9sbGFibGVZIixvLnkp LHRoaXMuJGZyYW1lLnRvZ2dsZUNsYXNzKCJ3Y092ZXJmbG93VmlzaWJsZSIs ci5vdmVyZmxvd1Zpc2libGUoKSksdGhpcy4kY2VudGVyLnRvZ2dsZUNsYXNz KCJ3Y092ZXJmbG93VmlzaWJsZSIsci5vdmVyZmxvd1Zpc2libGUoKSksIXRo aXMuaXNDb2xsYXBzZXIoKXx8dGhpcy5pc0V4cGFuZGVkKCkpe3IuY2xvc2Vh YmxlKCkmJih0aGlzLiRjbG9zZS5zaG93KCksdCs9dGhpcy4kY2xvc2Uub3V0 ZXJXaWR0aCgpKTt2YXIgaT10aGlzLmRvY2tlcigpO2lmKGkuaXNDb2xsYXBz ZUVuYWJsZWQoKSYmci5tb3ZlYWJsZSgpJiZyLmNvbGxhcHNpYmxlKCkmJiF0 aGlzLl9pc0Zsb2F0aW5nJiYhci5faXNQbGFjZWhvbGRlcilpZih0aGlzLmlz Q29sbGFwc2VyKCkpe3ZhciBuPXRoaXMuJGNvbGxhcHNlLmNoaWxkcmVuKCJk aXYiKTtzd2l0Y2goblswXS5jbGFzc05hbWU9ImZhIGZhLXNpZ24tb3V0Iix0 aGlzLl9wYXJlbnQuX3Bvc2l0aW9uKXtjYXNlIGUuRE9DSy5MRUZUOm4uYWRk Q2xhc3MoIndjQ29sbGFwc2VMZWZ0Iik7YnJlYWs7Y2FzZSBlLkRPQ0suUklH SFQ6bi5hZGRDbGFzcygid2NDb2xsYXBzZVJpZ2h0Iik7YnJlYWs7Y2FzZSBl LkRPQ0suQk9UVE9NOm4uYWRkQ2xhc3MoIndjQ29sbGFwc2VCb3R0b20iKX1u LmFkZENsYXNzKCJ3Y0NvbGxhcHNlZCIpLHRoaXMuJGNvbGxhcHNlLnNob3co KSx0aGlzLiRjb2xsYXBzZS5hdHRyKCJ0aXRsZSIsIkRvY2sgdGhpcyBjb2xs YXBzZWQgcGFuZWwgYmFjayBpbnRvIHRoZSBtYWluIGxheW91dC4iKSx0Kz10 aGlzLiRjb2xsYXBzZS5vdXRlcldpZHRoKCl9ZWxzZXt2YXIgcz1lLkRPQ0su Qk9UVE9NO2lmKHIuX2NvbGxhcHNlRGlyZWN0aW9uPT09ZS5ET0NLLkxFRlR8 fHIuX2NvbGxhcHNlRGlyZWN0aW9uPT09ZS5ET0NLLlJJR0hUfHxyLl9jb2xs YXBzZURpcmVjdGlvbj09PWUuRE9DSy5CT1RUT00pcz1yLl9jb2xsYXBzZURp cmVjdGlvbjtlbHNle3ZhciBsPWkuJGNvbnRhaW5lcjshJC5pc0VtcHR5T2Jq ZWN0KGkuX2NvbGxhcHNlcikmJmkuX2NvbGxhcHNlci5oYXNPd25Qcm9wZXJ0 eShlLkRPQ0suUklHSFQpJiYobD1pLl9jb2xsYXBzZXJbZS5ET0NLLlJJR0hU XS5fcGFyZW50LiRwYW5lWzBdKTt2YXIgYz1sLm9mZnNldCgpLGg9dGhpcy4k Y29udGFpbmVyLm9mZnNldCgpO2gucmlnaHQ9KGgubGVmdCt0aGlzLiRjb250 YWluZXIud2lkdGgoKS1jLmxlZnQpL2wud2lkdGgoKSxoLmJvdHRvbT0oaC50 b3ArdGhpcy4kY29udGFpbmVyLmhlaWdodCgpLWMudG9wKS9sLmhlaWdodCgp LGgudG9wPShoLnRvcC1jLnRvcCkvbC5oZWlnaHQoKSxoLmxlZnQ9KGgubGVm dC1jLmxlZnQpL2wud2lkdGgoKSwiZnVuY3Rpb24iPT10eXBlb2Ygci5fY29s bGFwc2VEaXJlY3Rpb24/cz1yLl9jb2xsYXBzZURpcmVjdGlvbihoKTpoLnRv cD4uNSYmaC5ib3R0b20+Ljk1P3M9ZS5ET0NLLkJPVFRPTTpoLmxlZnQ8PS4w NT9zPWUuRE9DSy5MRUZUOmgucmlnaHQ+PS45NT9zPWUuRE9DSy5SSUdIVDpo LmJvdHRvbT4uOTUmJihzPWUuRE9DSy5CT1RUT00pfXZhciB1PSIiLGQ9IiI7 c3dpdGNoKHMpe2Nhc2UgZS5ET0NLLkxFRlQ6dT0ibGVmdCBzaWRlLiIsZD0i d2NDb2xsYXBzZUxlZnQiO2JyZWFrO2Nhc2UgZS5ET0NLLlJJR0hUOnU9InJp Z2h0IHNpZGUuIixkPSJ3Y0NvbGxhcHNlUmlnaHQiO2JyZWFrO2Nhc2UgZS5E T0NLLkJPVFRPTTp1PSJib3R0b20uIixkPSJ3Y0NvbGxhcHNlQm90dG9tIn1p Zih1KXt2YXIgbj10aGlzLiRjb2xsYXBzZS5jaGlsZHJlbigiZGl2Iik7blsw XS5jbGFzc05hbWU9ImZhIGZhLXNpZ24taW4iLG4uYWRkQ2xhc3MoZCksbi5h ZGRDbGFzcygid2NDb2xsYXBzaWJsZSIpLHRoaXMuJGNvbGxhcHNlLnNob3co KSx0aGlzLiRjb2xsYXBzZS5hdHRyKCJ0aXRsZSIsIkNvbGxhcHNlIHRoaXMg cGFuZWwgaW50byB0aGUgIit1KSx0Kz10aGlzLiRjb2xsYXBzZS5vdXRlcldp ZHRoKCl9fWZvcih2YXIgZj0wO2Y8ci5fYnV0dG9uTGlzdC5sZW5ndGg7Kytm KXt2YXIgcD1yLl9idXR0b25MaXN0W2ZdLGI9JCgiPGRpdj4iKSxfPXAuY2xh c3NOYW1lO2IuYWRkQ2xhc3MoIndjRnJhbWVCdXR0b24iKSxwLmlzVG9nZ2xh YmxlJiYoYi5hZGRDbGFzcygid2NGcmFtZUJ1dHRvblRvZ2dsZXIiKSxwLmlz VG9nZ2xlZCYmKGIuYWRkQ2xhc3MoIndjRnJhbWVCdXR0b25Ub2dnbGVkIiks Xz1wLnRvZ2dsZUNsYXNzTmFtZXx8XykpLGIuYXR0cigidGl0bGUiLHAudGlw KSxiLmRhdGEoIm5hbWUiLHAubmFtZSksYi50ZXh0KHAudGV4dCksXyYmYi5w cmVwZW5kKCQoJzxkaXYgY2xhc3M9IicrXysnIj4nKSksdGhpcy5fYnV0dG9u TGlzdC5wdXNoKGIpLHRoaXMuJGJ1dHRvbkJhci5hcHBlbmQoYiksdCs9Yi5v dXRlcldpZHRoKCl9fWlmKHRoaXMuX2NhblNjcm9sbFRhYnMmJih0aGlzLiR0 YWJCdXR0b25CYXIuYXBwZW5kKHRoaXMuJHRhYlJpZ2h0KSx0aGlzLiR0YWJC dXR0b25CYXIuYXBwZW5kKHRoaXMuJHRhYkxlZnQpLGErPXRoaXMuJHRhYlJp Z2h0Lm91dGVyV2lkdGgoKSt0aGlzLiR0YWJMZWZ0Lm91dGVyV2lkdGgoKSks dGhpcy5fdGl0bGVWaXNpYmxlKXN3aXRjaCh0aGlzLiRidXR0b25CYXIuY3Nz KCJyaWdodCIsIiIpLHRoaXMuX3RhYk9yaWVudGF0aW9uKXtjYXNlIGUuVEFC LlJJR0hUOnRoaXMuJGJ1dHRvbkJhci5jc3MoInJpZ2h0Iix0aGlzLiR0YWJC YXIuaGVpZ2h0KCkpO2Nhc2UgZS5UQUIuTEVGVDp0aGlzLiR0YWJCYXIuY3Nz KCJ3aWR0aCIsdGhpcy4kY2VudGVyLmhlaWdodCgpK3RoaXMuJHRhYkJhci5o ZWlnaHQoKSk7YnJlYWs7Y2FzZSBlLlRBQi5UT1A6Y2FzZSBlLlRBQi5CT1RU T006dGhpcy4kdGFiQmFyLmNzcygid2lkdGgiLHRoaXMuJGNlbnRlci53aWR0 aCgpKX1yLl9fdXBkYXRlKCksdGhpcy4kY2VudGVyLnNjcm9sbExlZnQoci5f c2Nyb2xsLngpLHRoaXMuJGNlbnRlci5zY3JvbGxUb3Aoci5fc2Nyb2xsLnkp fXJldHVybiB0aGlzLiRidXR0b25CYXIuY3NzKCJtaW4td2lkdGgiLHQpLmNz cygid2lkdGgiLHQpLHRoaXMuJHRhYkJ1dHRvbkJhci5jc3MoIm1pbi13aWR0 aCIsYSkuY3NzKCJ3aWR0aCIsYSksdGhpcy5fdGFiT3JpZW50YXRpb249PT1l LlRBQi5UT1A/KHRoaXMuJHRhYkJ1dHRvbkJhci5jc3MoInJpZ2h0Iix0KSx0 K2EpOih0aGlzLiR0YWJCdXR0b25CYXIuY3NzKCJyaWdodCIsMCksYSl9LF9f c2Nyb2xsZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhbmVsKCk7dC5fc2Ny b2xsLng9dGhpcy4kY2VudGVyLnNjcm9sbExlZnQoKSx0Ll9zY3JvbGwueT10 aGlzLiRjZW50ZXIuc2Nyb2xsVG9wKCksdC5fX3RyaWdnZXIoZS5FVkVOVC5T Q1JPTExFRCl9LF9fZm9jdXM6ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9JCgn PGRpdiBjbGFzcz0id2NGcmFtZUZsYXNoZXIiPicpO3RoaXMuJGZyYW1lLmFw cGVuZChlKSxlLmFuaW1hdGUoe29wYWNpdHk6MX0sMTAwKS5hbmltYXRlKHtv cGFjaXR5OjB9LDEwMCkuYW5pbWF0ZSh7b3BhY2l0eTouNn0sNTApLmFuaW1h dGUoe29wYWNpdHk6MH0sNTApLnF1ZXVlKGZ1bmN0aW9uKHQpe2UucmVtb3Zl KCksdCgpfSl9fSxfX21vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kY29u dGFpbmVyLndpZHRoKCksYT10aGlzLiRjb250YWluZXIuaGVpZ2h0KCk7dGhp cy5fcG9zLng9KHQueCt0aGlzLl9hbmNob3JNb3VzZS54KS9lLHRoaXMuX3Bv cy55PSh0LnkrdGhpcy5fYW5jaG9yTW91c2UueSkvYX0sX19hbmNob3JNb3Zl OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuJGNvbnRhaW5lci53aWR0aCgpLGE9 dGhpcy4kY29udGFpbmVyLmhlaWdodCgpO3RoaXMuX2FuY2hvck1vdXNlLng9 dGhpcy5fcG9zLngqZS10LngsdGhpcy5fYW5jaG9yTW91c2UueT10aGlzLl9w b3MueSphLXQueX0sX190YWJNb3ZlOmZ1bmN0aW9uKHQsZSl7aWYodD49MCYm dDx0aGlzLl9wYW5lbExpc3QubGVuZ3RoJiZlPj0wJiZlPHRoaXMuX3BhbmVs TGlzdC5sZW5ndGgpe3ZhciBhPXRoaXMuX3BhbmVsTGlzdC5zcGxpY2UodCwx KTtyZXR1cm4gdGhpcy5fcGFuZWxMaXN0LnNwbGljZShlLDAsYVswXSksdGhp cy5fY3VyVGFiPT09dCYmKHRoaXMuX2N1clRhYj1lKSx0aGlzLl9fdXBkYXRl VGFicygpLHRoaXMuJHRhYkJhci5maW5kKCc+IC53Y1RhYlNjcm9sbGVyID4g LndjUGFuZWxUYWJbaWQ9IicrZSsnIl0nKVswXX1yZXR1cm4hMX0sX19jaGVj a0FuY2hvckRyb3A6ZnVuY3Rpb24odCxlLGEscixvLGkpe3ZhciBuPXRoaXMu cGFuZWwoKTtyZXR1cm4gbiYmbi5tb3ZlYWJsZSgpP24ubGF5b3V0KCkuX19j aGVja0FuY2hvckRyb3AodCxlJiZ0aGlzLl90YWJPcmllbnRhdGlvbixhLCF0 aGlzLl9pc0Zsb2F0aW5nJiYhdGhpcy5pc0NvbGxhcHNlcigpJiZyLHRoaXMu JGZyYW1lLG4ubW92ZWFibGUoKSYmbi50aXRsZSgpLG8sdGhpcy5pc0NvbGxh cHNlcigpP3RoaXMuX3RhYk9yaWVudGF0aW9uOnZvaWQgMCxpKTohMX0sX19y ZXNpemU6ZnVuY3Rpb24odCxlKXt2YXIgYT10aGlzLiRjb250YWluZXIud2lk dGgoKSxyPXRoaXMuJGNvbnRhaW5lci5oZWlnaHQoKSxvPXRoaXMuJGNvbnRh aW5lci5vZmZzZXQoKTtlLngtPW8ubGVmdCxlLnktPW8udG9wO2Zvcih2YXIg aT10aGlzLm1pblNpemUoKSxuPXRoaXMubWF4U2l6ZSgpLHM9e3g6dGhpcy5f cG9zLngqYS10aGlzLl9zaXplLngvMix5OnRoaXMuX3Bvcy55KnItdGhpcy5f c2l6ZS55LzJ9LGw9MDtsPHQubGVuZ3RoOysrbCl7c3dpdGNoKHRbbF0pe2Nh c2UidG9wIjp0aGlzLl9zaXplLnkrPXMueS1lLnktMixzLnk9ZS55KzIsdGhp cy5fc2l6ZS55PGkueSYmKHMueSs9dGhpcy5fc2l6ZS55LWkueSx0aGlzLl9z aXplLnk9aS55KSx0aGlzLl9zaXplLnk+bi55JiYocy55Kz10aGlzLl9zaXpl Lnktbi55LHRoaXMuX3NpemUueT1uLnkpO2JyZWFrO2Nhc2UiYm90dG9tIjp0 aGlzLl9zaXplLnk9ZS55LTQtcy55LHRoaXMuX3NpemUueTxpLnkmJih0aGlz Ll9zaXplLnk9aS55KSx0aGlzLl9zaXplLnk+bi55JiYodGhpcy5fc2l6ZS55 PW4ueSk7YnJlYWs7Y2FzZSJsZWZ0Ijp0aGlzLl9zaXplLngrPXMueC1lLngt MixzLng9ZS54KzIsdGhpcy5fc2l6ZS54PGkueCYmKHMueCs9dGhpcy5fc2l6 ZS54LWkueCx0aGlzLl9zaXplLng9aS54KSx0aGlzLl9zaXplLng+bi54JiYo cy54Kz10aGlzLl9zaXplLngtbi54LHRoaXMuX3NpemUueD1uLngpO2JyZWFr O2Nhc2UicmlnaHQiOnRoaXMuX3NpemUueD1lLngtNC1zLngsdGhpcy5fc2l6 ZS54PGkueCYmKHRoaXMuX3NpemUueD1pLngpLHRoaXMuX3NpemUueD5uLngm Jih0aGlzLl9zaXplLng9bi54KX10aGlzLl9wb3MueD0ocy54K3RoaXMuX3Np emUueC8yKS9hLHRoaXMuX3Bvcy55PShzLnkrdGhpcy5fc2l6ZS55LzIpL3J9 fSxfX3NoYWRvdzpmdW5jdGlvbih0KXtpZih0KXRoaXMuJHNoYWRvd2VyfHwo dGhpcy4kc2hhZG93ZXI9JCgnPGRpdiBjbGFzcz0id2NGcmFtZVNoYWRvd2Vy Ij4nKSx0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kc2hhZG93ZXIpLHRoaXMu JHNoYWRvd2VyLmFuaW1hdGUoe29wYWNpdHk6LjV9LDMwMCkpO2Vsc2UgaWYo dGhpcy4kc2hhZG93ZXIpe3ZhciBlPXRoaXM7dGhpcy4kc2hhZG93ZXIuYW5p bWF0ZSh7b3BhY2l0eTowfSwzMDApLnF1ZXVlKGZ1bmN0aW9uKHQpe2UuJHNo YWRvd2VyLnJlbW92ZSgpLGUuJHNoYWRvd2VyPW51bGwsdCgpfSl9fSxfX3Jl Y3Q6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQ29sbGFwc2VyKCkpcmV0dXJuIHRo aXMuX3BhcmVudC5fX3JlY3QoKTt2YXIgdD10aGlzLiRmcmFtZS5vZmZzZXQo KSxlPXRoaXMuJGZyYW1lLndpZHRoKCksYT10aGlzLiRmcmFtZS5oZWlnaHQo KTtyZXR1cm57eDp0LmxlZnQseTp0LnRvcCx3OmUsaDphfX0sX19jb250YWlu ZXI6ZnVuY3Rpb24odCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB0P3Ro aXMuJGNvbnRhaW5lcjoodGhpcy4kY29udGFpbmVyPXQsdGhpcy4kY29udGFp bmVyP3RoaXMuJGNvbnRhaW5lci5hcHBlbmQodGhpcy4kZnJhbWUpOnRoaXMu JGZyYW1lLnJlbW92ZSgpLHRoaXMuJGNvbnRhaW5lcil9LF9fZGVzdHJveTpm dW5jdGlvbigpe3RoaXMuX2N1clRhYj0tMTtmb3IodmFyIHQ9MDt0PHRoaXMu X3BhbmVsTGlzdC5sZW5ndGg7Kyt0KXRoaXMuX3BhbmVsTGlzdFt0XS5fX2Rl c3Ryb3koKTtmb3IoO3RoaXMuX3BhbmVsTGlzdC5sZW5ndGg7KXRoaXMuX3Bh bmVsTGlzdC5wb3AoKTt0aGlzLiRtb2RhbEJsb2NrZXImJih0aGlzLiRtb2Rh bEJsb2NrZXIucmVtb3ZlKCksdGhpcy4kbW9kYWxCbG9ja2VyPW51bGwpLHRo aXMuX19jb250YWluZXIobnVsbCksdGhpcy5fcGFyZW50PW51bGx9fSk7cmV0 dXJuIHJ9KSxhKCJ3Y0RvY2tlci9kcmF3ZXIiLFsiZGNsL2RjbCIsIi4vdHlw ZXMiLCIuL2ZyYW1lIiwiLi9iYXNlIl0sZnVuY3Rpb24odCxlLGEscil7dmFy IG89dChyLHtkZWNsYXJlZENsYXNzOiJ3Y0RyYXdlciIsY29uc3RydWN0b3I6 ZnVuY3Rpb24odCxhLHIpe3RoaXMuJGNvbnRhaW5lcj0kKHQpLHRoaXMuJGZy YW1lPW51bGwsdGhpcy5fcG9zaXRpb249cix0aGlzLl9wYXJlbnQ9YSx0aGlz Ll9mcmFtZT1udWxsLHRoaXMuX2Nsb3NlU2l6ZT0wLHRoaXMuX2V4cGFuZGVk PSExLHRoaXMuX3NsaWRpbmc9ITEsdGhpcy5fb3JpZW50YXRpb249dGhpcy5f cG9zaXRpb249PT1lLkRPQ0suTEVGVHx8dGhpcy5fcG9zaXRpb249PT1lLkRP Q0suUklHSFQ/ZS5PUklFTlRBVElPTi5IT1JJWk9OVEFMOmUuT1JJRU5UQVRJ T04uVkVSVElDQUwsdGhpcy5fX2luaXQoKX0sY29sbGFwc2U6ZnVuY3Rpb24o dCl7aWYodGhpcy5fZXhwYW5kZWQpe3ZhciBhPXRoaXMuX2ZyYW1lLnBhbmVs KCk7aWYoYSl7dmFyIHI9dGhpcy5fcGFyZW50LnBvcygpO3RoaXMuX3Bvc2l0 aW9uIT09ZS5ET0NLLkxFRlQmJihyPTEtcik7dmFyIG87dGhpcy5fcG9zaXRp b249PT1lLkRPQ0suQk9UVE9NPyhvPXRoaXMuZG9ja2VyKCkuJGNvbnRhaW5l ci5oZWlnaHQoKSxhLl9zaXplLnk9cipvKToobz10aGlzLmRvY2tlcigpLiRj b250YWluZXIud2lkdGgoKSxhLl9zaXplLng9cipvKX1pZih0aGlzLl9leHBh bmRlZD0hMSx0KXN3aXRjaCh0aGlzLl9wb3NpdGlvbil7Y2FzZSBlLkRPQ0su VE9QOmNhc2UgZS5ET0NLLkxFRlQ6dGhpcy5fcGFyZW50LnBvcygwKTticmVh aztjYXNlIGUuRE9DSy5SSUdIVDpjYXNlIGUuRE9DSy5CT1RUT006dGhpcy5f cGFyZW50LnBvcygxKX1lbHNle3RoaXMuX3NsaWRpbmc9ITA7dmFyIGk9dGhp cyxuPWZ1bmN0aW9uKCl7aS5fc2xpZGluZz0hMSxpLl9wYXJlbnQuX191cGRh dGUoKX07c3dpdGNoKHRoaXMuX3Bvc2l0aW9uKXtjYXNlIGUuRE9DSy5UT1A6 Y2FzZSBlLkRPQ0suTEVGVDp0aGlzLl9wYXJlbnQuYW5pbVBvcygwLG4pO2Jy ZWFrO2Nhc2UgZS5ET0NLLlJJR0hUOmNhc2UgZS5ET0NLLkJPVFRPTTp0aGlz Ll9wYXJlbnQuYW5pbVBvcygxLG4pfX19fSxleHBhbmQ6ZnVuY3Rpb24oKXtp ZighdGhpcy5fZXhwYW5kZWQpe3RoaXMuX2V4cGFuZGVkPSEwLHRoaXMuX3Ns aWRpbmc9ITA7dmFyIHQ9dGhpcy5fZnJhbWUucGFuZWwoKTtpZih0KXt2YXIg YSxyO3RoaXMuX3Bvc2l0aW9uPT09ZS5ET0NLLkJPVFRPTT8oYT10Ll9zaXpl Lnkscj10aGlzLmRvY2tlcigpLiRjb250YWluZXIuaGVpZ2h0KCkpOihhPXQu X3NpemUueCxyPXRoaXMuZG9ja2VyKCkuJGNvbnRhaW5lci53aWR0aCgpKSx0 aGlzLl9wb3NpdGlvbiE9PWUuRE9DSy5MRUZUJiYoYT1yLWEpLGEvPXI7dmFy IG89dGhpczt0aGlzLl9wYXJlbnQuYW5pbVBvcyhhLGZ1bmN0aW9uKCl7by5f c2xpZGluZz0hMSxvLl9wYXJlbnQuX191cGRhdGUoKX0pfX19LGlzRXhwYW5k ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXhwYW5kZWR9LG1pblNpemU6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXhwYW5kZWQ/dGhpcy5fcm9vdCYm ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX3Jvb3QubWluU2l6ZT90aGlzLl9y b290Lm1pblNpemUoKTp7eDoxMDAseToxMDB9Oih0aGlzLl9fYWRqdXN0Q29s bGFwc2VkU2l6ZSgpLHt4OnRoaXMuX2Nsb3NlU2l6ZSx5OnRoaXMuX2Nsb3Nl U2l6ZX0pfSxtYXhTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fb3JpZW50 YXRpb249PT1lLk9SSUVOVEFUSU9OLkhPUklaT05UQUw/ITA6ITE7cmV0dXJu IHRoaXMuX2V4cGFuZGVkfHx0aGlzLl9zbGlkaW5nP3RoaXMuX3Jvb3QmJiJm dW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9yb290Lm1heFNpemU/e3g6dD90aGlz Ll9yb290Lm1heFNpemUoKS54OjEvMCx5OnQ/MS8wOnRoaXMuX3Jvb3QubWF4 U2l6ZSgpLnl9Ont4OjEvMCx5OjEvMH06KHRoaXMuX19hZGp1c3RDb2xsYXBz ZWRTaXplKCkse3g6dD90aGlzLl9jbG9zZVNpemU6MS8wLHk6dD8xLzA6dGhp cy5fY2xvc2VTaXplfSl9LF9faW5pdDpmdW5jdGlvbigpe3RoaXMuJGZyYW1l PSQoJzxkaXYgY2xhc3M9IndjQ29sbGFwc2VyRnJhbWUiPicpLHRoaXMuX19j b250YWluZXIodGhpcy4kY29udGFpbmVyKSx0aGlzLl9mcmFtZT1uZXcodGhp cy5kb2NrZXIoKS5fX2dldENsYXNzKCJ3Y0ZyYW1lIikpKHRoaXMuJGZyYW1l LHRoaXMsITEpLHRoaXMuX2ZyYW1lLnRhYk9yaWVudGF0aW9uKHRoaXMuX3Bv c2l0aW9uKX0sX191cGRhdGU6ZnVuY3Rpb24odCl7dGhpcy5fX2FkanVzdENv bGxhcHNlZFNpemUoKSx0aGlzLl9mcmFtZS5fX3VwZGF0ZSgpfSxfX2FkanVz dENvbGxhcHNlZFNpemU6ZnVuY3Rpb24oKXt0aGlzLl9mcmFtZS5fcGFuZWxM aXN0Lmxlbmd0aD8odGhpcy5fY2xvc2VTaXplPXRoaXMuX2ZyYW1lLiR0YWJC YXIub3V0ZXJIZWlnaHQoKSx0aGlzLl9wYXJlbnQuJGJhci5yZW1vdmVDbGFz cygid2NTcGxpdHRlckhpZGRlbiIpKToodGhpcy5fY2xvc2VTaXplPTAsdGhp cy5fcGFyZW50LiRiYXIuYWRkQ2xhc3MoIndjU3BsaXR0ZXJIaWRkZW4iKSl9 LF9fcmVjdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJGZyYW1lLm9mZnNldCgp LGE9dGhpcy4kZnJhbWUud2lkdGgoKSxyPXRoaXMuJGZyYW1lLmhlaWdodCgp LG89dGhpcy5fZnJhbWUucGFuZWwoKTtyZXR1cm4gbyYmKHRoaXMuX3Bvc2l0 aW9uPT09ZS5ET0NLLkJPVFRPTT8ocj1vLl9zaXplLnksYS89Myk6KGE9by5f c2l6ZS54LHIvPTMpKSx7eDp0LmxlZnQseTp0LnRvcCx3OmEsaDpyfX0sX19z YXZlOmZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIHQuY2xvc2VTaXplPXRo aXMuX2Nsb3NlU2l6ZSx0LmZyYW1lPXRoaXMuX2ZyYW1lLl9fc2F2ZSgpLHR9 LF9fcmVzdG9yZTpmdW5jdGlvbih0LGUpe3RoaXMuX2Nsb3NlU2l6ZT10LmNs b3NlU2l6ZSx0aGlzLl9mcmFtZS5fX3Jlc3RvcmUodC5mcmFtZSxlKSx0aGlz Ll9fYWRqdXN0Q29sbGFwc2VkU2l6ZSgpfSxfX2NvbnRhaW5lcjpmdW5jdGlv bih0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHQ/dGhpcy4kY29udGFp bmVyOih0aGlzLiRjb250YWluZXI9dCx0aGlzLiRjb250YWluZXI/dGhpcy4k Y29udGFpbmVyLmFwcGVuZCh0aGlzLiRmcmFtZSk6dGhpcy4kZnJhbWUucmVt b3ZlKCksdGhpcy4kY29udGFpbmVyKX0sX19kZXN0cm95OmZ1bmN0aW9uKCl7 dGhpcy5fZnJhbWUmJih0aGlzLl9mcmFtZS5fX2Rlc3Ryb3koKSx0aGlzLl9m cmFtZT1udWxsKSx0aGlzLl9fY29udGFpbmVyKG51bGwpLHRoaXMuX3BhcmVu dD1udWxsfX0pO3JldHVybiBvfSksYSgid2NEb2NrZXIvY29sbGFwc2VyIixb ImRjbC9kY2wiLCIuL3R5cGVzIiwiLi9zcGxpdHRlciIsIi4vZHJhd2VyIiwi Li9iYXNlIl0sZnVuY3Rpb24odCxlLGEscixvKXt2YXIgaT10KG8se2RlY2xh cmVkQ2xhc3M6IndjQ29sbGFwc2VyIixjb25zdHJ1Y3RvcjpmdW5jdGlvbih0 LGEscil7dGhpcy4kY29udGFpbmVyPSQodCksdGhpcy4kZnJhbWU9bnVsbCx0 aGlzLl9wb3NpdGlvbj1yLHRoaXMuX3BhcmVudD1hLHRoaXMuX3NwbGl0dGVy PW51bGwsdGhpcy5fZHJhd2VyPW51bGwsdGhpcy5fc2l6ZT0wLHRoaXMuX29y aWVudGF0aW9uPXRoaXMuX3Bvc2l0aW9uPT09ZS5ET0NLLkxFRlR8fHRoaXMu X3Bvc2l0aW9uPT09ZS5ET0NLLlJJR0hUP2UuT1JJRU5UQVRJT04uSE9SSVpP TlRBTDplLk9SSUVOVEFUSU9OLlZFUlRJQ0FMLHRoaXMuX19pbml0KCl9LGNv bGxhcHNlOmZ1bmN0aW9uKHQpe3RoaXMuX2RyYXdlci5jb2xsYXBzZSgpfSxl eHBhbmQ6ZnVuY3Rpb24oKXt0aGlzLl9kcmF3ZXIuZXhwYW5kKCl9LGlzRXhw YW5kZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhd2VyLmlzRXhwYW5k ZWQoKX0sbWluU2l6ZTpmdW5jdGlvbigpe3JldHVybnt4OnRoaXMuX3NpemUs eTp0aGlzLl9zaXplfX0sbWF4U2l6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMu X29yaWVudGF0aW9uPT09ZS5PUklFTlRBVElPTi5IT1JJWk9OVEFMPyEwOiEx O3JldHVybnt4OnQ/dGhpcy5fc2l6ZToxLzAseTp0PzEvMDp0aGlzLl9zaXpl fX0sX19pbml0OmZ1bmN0aW9uKCl7dGhpcy4kZnJhbWU9JCgnPGRpdiBjbGFz cz0id2NDb2xsYXBzZXJGcmFtZSI+JyksdGhpcy5fX2NvbnRhaW5lcih0aGlz LiRjb250YWluZXIpO3ZhciB0PXRoaXMuZG9ja2VyKCk7c3dpdGNoKHRoaXMu X3NwbGl0dGVyPW5ldyh0aGlzLmRvY2tlcigpLl9fZ2V0Q2xhc3MoIndjU3Bs aXR0ZXIiKSkodC4kY29udGFpbmVyLHRoaXMsdGhpcy5fb3JpZW50YXRpb24p LHRoaXMuX2RyYXdlcj1uZXcodGhpcy5kb2NrZXIoKS5fX2dldENsYXNzKCJ3 Y0RyYXdlciIpKSh0LiR0cmFuc2l0aW9uLHRoaXMuX3NwbGl0dGVyLHRoaXMu X3Bvc2l0aW9uKSx0aGlzLl9wb3NpdGlvbil7Y2FzZSBlLkRPQ0suTEVGVDp0 aGlzLl9zcGxpdHRlci5wYW5lKDAsdGhpcy5fZHJhd2VyKSx0aGlzLl9zcGxp dHRlci4kcGFuZVsxXS5yZW1vdmUoKSx0aGlzLl9zcGxpdHRlci4kcGFuZVsw XS5hZGRDbGFzcygid2NEcmF3ZXIiKSx0aGlzLl9zcGxpdHRlci5wb3MoMCk7 YnJlYWs7Y2FzZSBlLkRPQ0suUklHSFQ6Y2FzZSBlLkRPQ0suQk9UVE9NOnRo aXMuX3NwbGl0dGVyLnBhbmUoMSx0aGlzLl9kcmF3ZXIpLHRoaXMuX3NwbGl0 dGVyLiRwYW5lWzBdLnJlbW92ZSgpLHRoaXMuX3NwbGl0dGVyLiRwYW5lWzFd LmFkZENsYXNzKCJ3Y0RyYXdlciIpLHRoaXMuX3NwbGl0dGVyLnBvcygxKX10 aGlzLl9wYXJlbnQuJGJhci5hZGRDbGFzcygid2NTcGxpdHRlckhpZGRlbiIp fSxfX3VwZGF0ZTpmdW5jdGlvbih0KXt0aGlzLl9zcGxpdHRlci5fX3VwZGF0 ZSgpLHRoaXMuX19hZGp1c3RTaXplKCl9LF9fYWRqdXN0U2l6ZTpmdW5jdGlv bigpe3RoaXMuX2RyYXdlci5fZnJhbWUuX3BhbmVsTGlzdC5sZW5ndGg/dGhp cy5fc2l6ZT10aGlzLl9kcmF3ZXIuX2ZyYW1lLiR0YWJCYXIub3V0ZXJIZWln aHQoKTp0aGlzLl9zaXplPTB9LF9fcmVjdDpmdW5jdGlvbigpe3JldHVybiB0 aGlzLl9kcmF3ZXIuX19yZWN0KCl9LF9fc2F2ZTpmdW5jdGlvbigpe3ZhciB0 PXt9O3JldHVybiB0LnNpemU9dGhpcy5fc2l6ZSx0LmRyYXdlcj10aGlzLl9k cmF3ZXIuX19zYXZlKCksdH0sX19yZXN0b3JlOmZ1bmN0aW9uKHQsZSl7dGhp cy5fc2l6ZT10LnNpemUsdGhpcy5fZHJhd2VyLl9fcmVzdG9yZSh0LmRyYXdl cixlKSx0aGlzLl9fYWRqdXN0U2l6ZSgpfSxfX2NvbnRhaW5lcjpmdW5jdGlv bih0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHQ/dGhpcy4kY29udGFp bmVyOih0aGlzLiRjb250YWluZXI9dCx0aGlzLiRjb250YWluZXI/dGhpcy4k Y29udGFpbmVyLmFwcGVuZCh0aGlzLiRmcmFtZSk6dGhpcy4kZnJhbWUucmVt b3ZlKCksdGhpcy4kY29udGFpbmVyKX0sX19kZXN0cm95OmZ1bmN0aW9uKCl7 dGhpcy5fc3BsaXR0ZXImJih0aGlzLl9zcGxpdHRlci5fX2Rlc3Ryb3koKSx0 aGlzLl9zcGxpdHRlcj1udWxsLHRoaXMuX2ZyYW1lPW51bGwpLHRoaXMuX19j b250YWluZXIobnVsbCksdGhpcy5fcGFyZW50PW51bGx9fSk7cmV0dXJuIGl9 KSxhKCJ3Y0RvY2tlci9sYXlvdXQiLFsiZGNsL2RjbCIsIi4vdHlwZXMiXSxm dW5jdGlvbih0LGUpe3ZhciBhPXQobnVsbCx7ZGVjbGFyZWRDbGFzczoid2NM YXlvdXQiLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSl7dGhpcy4kY29udGFp bmVyPSQodCksdGhpcy5fcGFyZW50PWUsdGhpcy4kZWxlbT1udWxsLHRoaXMu X19pbml0KCl9LGFkZEl0ZW06ZnVuY3Rpb24odCl7fSxjbGVhcjpmdW5jdGlv bigpe30sc2NlbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZWxlbX0sX19p bml0OmZ1bmN0aW9uKCl7fSxfX3VwZGF0ZTpmdW5jdGlvbigpe30sX19jaGVj a0FuY2hvckRyb3A6ZnVuY3Rpb24odCxhLHIsbyxpLG4scyxsLGMpe2Z1bmN0 aW9uIGgodCxlLGEpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdHx8InN0cmlu ZyI9PXR5cGVvZiB0JiYtMSE9PXQuaW5kZXhPZigicHgiLHQubGVuZ3RoLTIp Pyh0PXBhcnNlSW50KHQpLHt4OnQseTp0fSk6InN0cmluZyI9PXR5cGVvZiB0 JiYtMSE9PXQuaW5kZXhPZigiJSIsdC5sZW5ndGgtMSk/KHQ9cGFyc2VJbnQo dCkvMTAwLHt4OmUqdCx5OmEqdH0pOnt4OjAseTowfX12YXIgdT10aGlzLl9w YXJlbnQuZG9ja2VyKCksZD1pLm91dGVyV2lkdGgoKSxmPWkub3V0ZXJIZWln aHQoKSxwPWkub2Zmc2V0KCksYj1pLmZpbmQoIi53Y0ZyYW1lVGl0bGVCYXIi KS5oZWlnaHQoKTtufHwoYj0wKTt2YXIgXz1oKHUuX29wdGlvbnMuZWRnZUFu Y2hvclNpemUsdS4kY29udGFpbmVyLm91dGVyV2lkdGgoKSx1LiRjb250YWlu ZXIub3V0ZXJIZWlnaHQoKSksdj1oKHUuX29wdGlvbnMucGFuZWxBbmNob3JT aXplLGQsZik7aWYobil7aWYoKCFsfHxsPT09ZS5UQUIuVE9QKSYmdC55Pj1w LnRvcCYmdC55PD1wLnRvcCtiJiZ0Lng+PXAubGVmdCYmdC54PD1wLmxlZnQr ZClyZXR1cm4gci5hbmNob3IodCx7eDpwLmxlZnQtMix5OnAudG9wLTIsdzpk LGg6Yi0yLGxvYzplLkRPQ0suU1RBQ0tFRCx0YWI6ZS5UQUIuVE9QLGl0ZW06 dGhpcyxzZWxmOmE9PT1lLlRBQi5UT1B8fHMmJmF9KSwhMDtpZih1Ll9jYW5P cmllbnRUYWJzKXtpZigoIWx8fGw9PT1lLlRBQi5CT1RUT00pJiZ0Lnk+PXAu dG9wK2YtYiYmdC55PD1wLnRvcCtmJiZ0Lng+PXAubGVmdCYmdC54PD1wLmxl ZnQrZClyZXR1cm4gci5hbmNob3IodCx7eDpwLmxlZnQtMix5OnAudG9wK2Yt Yi0yLHc6ZCxoOmIsbG9jOmUuRE9DSy5TVEFDS0VELHRhYjplLlRBQi5CT1RU T00saXRlbTp0aGlzLHNlbGY6YT09PWUuVEFCLkJPVFRPTX0pLCEwO2lmKCgh bHx8bD09PWUuVEFCLkxFRlQpJiZ0Lnk+PXAudG9wJiZ0Lnk8PXAudG9wK2Ym JnQueD49cC5sZWZ0JiZ0Lng8PXAubGVmdCtiKXJldHVybiByLmFuY2hvcih0 LHt4OnAubGVmdC0yLHk6cC50b3AtMix3OmItMixoOmYsbG9jOmUuRE9DSy5T VEFDS0VELHRhYjplLlRBQi5MRUZULGl0ZW06dGhpcyxzZWxmOmE9PT1lLlRB Qi5MRUZUfSksITA7aWYoKCFsfHxsPT09ZS5UQUIuUklHSFQpJiZ0Lnk+PXAu dG9wJiZ0Lnk8PXAudG9wK2YmJnQueD49cC5sZWZ0K2QtYiYmdC54PD1wLmxl ZnQrZClyZXR1cm4gci5hbmNob3IodCx7eDpwLmxlZnQrZC1iLTIseTpwLnRv cC0yLHc6YixoOmYsbG9jOmUuRE9DSy5TVEFDS0VELHRhYjplLlRBQi5SSUdI VCxpdGVtOnRoaXMsc2VsZjphPT09ZS5UQUIuUklHSFR9KSwhMH19aWYoYyYm ci5fb3V0ZXImJnIuX2lubmVyKXt2YXIgbT1yLl9vdXRlci4kY29udGFpbmVy Lm91dGVyV2lkdGgoKSx3PXIuX291dGVyLiRjb250YWluZXIub3V0ZXJIZWln aHQoKSxnPXIuX291dGVyLiRjb250YWluZXIub2Zmc2V0KCk7aWYodC55Pj1n LnRvcCYmdC55PD1nLnRvcCt3JiZ0Lng+PWcubGVmdCtiJiZ0Lng8PWcubGVm dCtiK18ueClyZXR1cm4gci5hbmNob3IodCx7eDpnLmxlZnQtMix5OmcudG9w LTIsdzptLzMsaDp3LGxvYzplLkRPQ0suTEVGVCxpdGVtOnIuX2lubmVyLHNl bGY6ITF9KSwhMDtpZih0Lnk+PWcudG9wJiZ0Lnk8PWcudG9wK3cmJnQueD49 Zy5sZWZ0K20tXy54LWImJnQueDw9Zy5sZWZ0K20tYilyZXR1cm4gci5hbmNo b3IodCx7eDpnLmxlZnQrbS1tLzMtMix5OmcudG9wLTIsdzptLzMsaDp3LGxv YzplLkRPQ0suUklHSFQsaXRlbTpyLl9pbm5lcixzZWxmOiExfSksITA7aWYo dC55Pj1nLnRvcCtiJiZ0Lnk8PWcudG9wK2IrXy55JiZ0Lng+PWcubGVmdCYm dC54PD1nLmxlZnQrbSlyZXR1cm4gci5hbmNob3IodCx7eDpnLmxlZnQtMix5 OmcudG9wLTIsdzptLGg6dy8zLGxvYzplLkRPQ0suVE9QLGl0ZW06ci5faW5u ZXIsc2VsZjohMX0pLCEwO2lmKHQueT49Zy50b3Ardy1iLV8ueSYmdC55PD1n LnRvcCt3LWImJnQueD49Zy5sZWZ0JiZ0Lng8PWcubGVmdCttKXJldHVybiBy LmFuY2hvcih0LHt4OmcubGVmdC0yLHk6Zy50b3Ardy13LzMtMix3Om0saDp3 LzMsbG9jOmUuRE9DSy5CT1RUT00saXRlbTpyLl9pbm5lcixzZWxmOiExfSks ITB9aWYoIW8pcmV0dXJuITE7aWYodGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJl bnQuaW5zdGFuY2VPZigid2NQYW5lbCIpJiZ0aGlzLl9wYXJlbnQuX2lzUGxh Y2Vob2xkZXIpcmV0dXJuIHIuYW5jaG9yKHQse3g6cC5sZWZ0LTIseTpwLnRv cC0yLHc6ZCxoOmYsbG9jOmUuRE9DSy5UT1AsaXRlbTp0aGlzLHNlbGY6ITF9 KSwhMDtpZihmPmQpe2lmKHQueT49cC50b3AmJnQueTw9cC50b3ArYit2Lnkm JnQueD49cC5sZWZ0JiZ0Lng8PXAubGVmdCtkKXJldHVybiByLmFuY2hvcih0 LHt4OnAubGVmdC0yLHk6cC50b3AtMix3OmQsaDouNSpmLGxvYzplLkRPQ0su VE9QLGl0ZW06dGhpcyxzZWxmOiExfSksITA7aWYodC55Pj1wLnRvcCtmLXYu eS1iJiZ0Lnk8PXAudG9wK2YmJnQueD49cC5sZWZ0JiZ0Lng8PXAubGVmdCtk KXJldHVybiByLmFuY2hvcih0LHt4OnAubGVmdC0yLHk6cC50b3ArKGYtLjUq ZiktMix3OmQsaDouNSpmLGxvYzplLkRPQ0suQk9UVE9NLGl0ZW06dGhpcyxz ZWxmOiExfSksITB9aWYodC55Pj1wLnRvcCYmdC55PD1wLnRvcCtmKXtpZih0 Lng+PXAubGVmdCYmdC54PD1wLmxlZnQrdi54K2IpcmV0dXJuIHIuYW5jaG9y KHQse3g6cC5sZWZ0LTIseTpwLnRvcC0yLHc6LjUqZCxoOmYsbG9jOmUuRE9D Sy5MRUZULGl0ZW06dGhpcyxzZWxmOiExfSksITA7aWYodC54Pj1wLmxlZnQr ZC12LngtYiYmdC54PD1wLmxlZnQrZClyZXR1cm4gci5hbmNob3IodCx7eDpw LmxlZnQrLjUqZC0yLHk6cC50b3AtMix3Oi41KmQsaDpmLGxvYzplLkRPQ0su UklHSFQsaXRlbTp0aGlzLHNlbGY6ITF9KSwhMH1pZihkPj1mKXtpZih0Lnk+ PXAudG9wJiZ0Lnk8PXAudG9wK3YueStiJiZ0Lng+PXAubGVmdCYmdC54PD1w LmxlZnQrZClyZXR1cm4gci5hbmNob3IodCx7eDpwLmxlZnQtMix5OnAudG9w LTIsdzpkLGg6LjUqZixsb2M6ZS5ET0NLLlRPUCxpdGVtOnRoaXMsc2VsZjoh MX0pLCEwO2lmKHQueT49cC50b3ArZi12LnktYiYmdC55PD1wLnRvcCtmJiZ0 Lng+PXAubGVmdCYmdC54PD1wLmxlZnQrZClyZXR1cm4gci5hbmNob3IodCx7 eDpwLmxlZnQtMix5OnAudG9wKyhmLS41KmYpLTIsdzpkLGg6LjUqZixsb2M6 ZS5ET0NLLkJPVFRPTSxpdGVtOnRoaXMsc2VsZjohMX0pLCEwfXJldHVybiEx fSxfX2NvbnRhaW5lcjpmdW5jdGlvbih0KXtyZXR1cm4idW5kZWZpbmVkIj09 dHlwZW9mIHQ/dGhpcy4kY29udGFpbmVyOih0aGlzLiRjb250YWluZXI9dCx0 aGlzLiRjb250YWluZXI/dGhpcy4kY29udGFpbmVyLmFwcGVuZCh0aGlzLiRl bGVtKTp0aGlzLiRlbGVtLnJlbW92ZSgpLHRoaXMuJGNvbnRhaW5lcil9LF9f ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX19jb250YWluZXIobnVsbCksdGhp cy5fcGFyZW50PW51bGwsdGhpcy5jbGVhcigpLHRoaXMuJGVsZW0ucmVtb3Zl KCksdGhpcy4kZWxlbT1udWxsfX0pO3JldHVybiBhfSksYSgid2NEb2NrZXIv bGF5b3V0c2ltcGxlIixbImRjbC9kY2wiLCIuL3R5cGVzIiwiLi9sYXlvdXQi XSxmdW5jdGlvbih0LGUsYSl7dmFyIHI9dChhLHtkZWNsYXJlZENsYXNzOiJ3 Y0xheW91dFNpbXBsZSIsYWRkSXRlbTpmdW5jdGlvbih0KXt0aGlzLiRlbGVt LmFwcGVuZCh0KX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLiRlbGVtLnJlbW92 ZSgpLHRoaXMuJGVsZW09bnVsbCx0aGlzLl9faW5pdCgpfSxfX2luaXQ6ZnVu Y3Rpb24oKXt0aGlzLiRlbGVtPSQoJzxkaXYgY2xhc3M9IndjTGF5b3V0IHdj V2lkZSB3Y1RhbGwiPjwvZGl2PicpLHRoaXMuX19jb250YWluZXIodGhpcy4k Y29udGFpbmVyKX0sX191cGRhdGU6ZnVuY3Rpb24oKXt9fSk7cmV0dXJuIHJ9 KSxhKCJ3Y0RvY2tlci9sYXlvdXR0YWJsZSIsWyJkY2wvZGNsIiwiLi90eXBl cyIsIi4vbGF5b3V0Il0sZnVuY3Rpb24odCxlLGEpe3ZhciByPXQoYSx7ZGVj bGFyZWRDbGFzczoid2NMYXlvdXRUYWJsZSIsYWRkSXRlbTpmdW5jdGlvbih0 LGUsYSxyLG8pe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIGV8fDA+ZSkm JihlPTApLCgidW5kZWZpbmVkIj09dHlwZW9mIGF8fDA+YSkmJihhPTApLCgi dW5kZWZpbmVkIj09dHlwZW9mIHJ8fDA+PXIpJiYocj0xKSwoInVuZGVmaW5l ZCI9PXR5cGVvZiBvfHwwPj1vKSYmKG89MSksdGhpcy5fX3Jlc2l6ZUdyaWQo ZStyLTEsYStvLTEpLChyPjF8fG8+MSkmJiF0aGlzLl9fbWVyZ2VHcmlkKGUs YSxyLG8pPyExOih0aGlzLl9ncmlkW2FdW2VdLiRlbC5hcHBlbmQoJCh0KSks dGhpcy5pdGVtKGUsYSkpfSxpdGVtOmZ1bmN0aW9uKHQsZSl7aWYoZT49dGhp cy5fZ3JpZC5sZW5ndGgpcmV0dXJuITE7aWYodD49dGhpcy5fZ3JpZFtlXS5s ZW5ndGgpcmV0dXJuITE7dmFyIGE9dGhpcyxyPXskOmEuX2dyaWRbZV1bdF0u JGVsLGNzczpmdW5jdGlvbihvLGkpe2lmKGEuX2dyaWRbZV1bdF0uJGVsKXtp Zih2b2lkIDA9PT1pKXJldHVybiBhLl9ncmlkW2VdW3RdLiRlbC5jc3Mobyk7 YS5fZ3JpZFtlXVt0XS4kZWwuY3NzKG8saSl9cmV0dXJuIHJ9LHN0cmV0Y2g6 ZnVuY3Rpb24obyxpKXtyZXR1cm4gYS5pdGVtU3RyZXRjaCh0LGUsbyxpKSxy fX07cmV0dXJuIHJ9LGl0ZW1TdHJldGNoOmZ1bmN0aW9uKHQsZSxhLHIpe3Zh ciBvPXRoaXMuX2JhdGNoUHJvY2Vzczt0aGlzLl9iYXRjaFByb2Nlc3M9ITAs dGhpcy5fX3Jlc2l6ZUdyaWQodCxlKTt2YXIgaT10aGlzLl9ncmlkW2VdW3Rd O3JldHVybiBpLng8MHx8aS55PDA/ITE6KHZvaWQgMCE9PWEmJihpLnN4PWEp LHZvaWQgMCE9PXImJihpLnN5PXIpLHRoaXMuX2JhdGNoUHJvY2Vzcz1vLG98 fHRoaXMuX19yZXNpemVHcmlkKDAsMCksITApfSxjbGVhcjpmdW5jdGlvbigp e3ZhciB0PXRoaXMuc2hvd0dyaWQoKSxlPXRoaXMuZ3JpZFNwYWNpbmcoKSxh PXRoaXMuZ3JpZEFsdGVybmF0ZSgpO3RoaXMuJGVsZW0ucmVtb3ZlKCksdGhp cy5fX2luaXQoKSx0aGlzLnNob3dHcmlkKHQpLHRoaXMuZ3JpZFNwYWNpbmco ZSksdGhpcy5ncmlkQWx0ZXJuYXRlKGEpLHRoaXMuX2dyaWQ9W119LHN0YXJ0 QmF0Y2g6ZnVuY3Rpb24oKXt0aGlzLl9iYXRjaFByb2Nlc3M9ITB9LGZpbmlz aEJhdGNoOmZ1bmN0aW9uKCl7dGhpcy5fYmF0Y2hQcm9jZXNzPSExLHRoaXMu X19yZXNpemVHcmlkKDAsMCl9LHNob3dHcmlkOmZ1bmN0aW9uKHQpe3JldHVy biJ1bmRlZmluZWQiIT10eXBlb2YgdCYmdGhpcy4kZWxlbS50b2dnbGVDbGFz cygid2NMYXlvdXRHcmlkIix0KSx0aGlzLiRlbGVtLmhhc0NsYXNzKCJ3Y0xh eW91dEdyaWQiKX0sZ3JpZFNwYWNpbmc6ZnVuY3Rpb24odCl7cmV0dXJuInVu ZGVmaW5lZCIhPXR5cGVvZiB0JiZ0aGlzLiRlbGVtLmNzcygiYm9yZGVyLXNw YWNpbmciLHQrInB4IikscGFyc2VJbnQodGhpcy4kZWxlbS5jc3MoImJvcmRl ci1zcGFjaW5nIikpfSxncmlkQWx0ZXJuYXRlOmZ1bmN0aW9uKHQpe3JldHVy biJ1bmRlZmluZWQiIT10eXBlb2YgdCYmdGhpcy4kZWxlbS50b2dnbGVDbGFz cygid2NMYXlvdXRHcmlkQWx0ZXJuYXRlIix0KSx0aGlzLiRlbGVtLmhhc0Ns YXNzKCJ3Y0xheW91dEdyaWRBbHRlcm5hdGUiKX0sX19pbml0OmZ1bmN0aW9u KCl7dGhpcy4kZWxlbT0kKCc8dGFibGUgY2xhc3M9IndjTGF5b3V0IHdjV2lk ZSB3Y1RhbGwiPjwvdGFibGU+JyksdGhpcy4kZWxlbS5hcHBlbmQoJCgiPHRi b2R5PjwvdGJvZHk+IikpLHRoaXMuX2dyaWQ9W10sdGhpcy5fX2NvbnRhaW5l cih0aGlzLiRjb250YWluZXIpfSxfX3VwZGF0ZTpmdW5jdGlvbigpe30sX19y ZXNpemVHcmlkOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBhPTA7ZT49YTsrK2Ep e2lmKHRoaXMuX2dyaWQubGVuZ3RoPD1hKXt2YXIgcj1bXTtyLiRyb3c9JCgi PHRyPiIpLHRoaXMuX2dyaWQucHVzaChyKX1mb3IodmFyIG89MDt0Pj1vOysr byl0aGlzLl9ncmlkW2FdLmxlbmd0aDw9byYmdGhpcy5fZ3JpZFthXS5wdXNo KHskZWw6JCgiPHRkPiIpLHg6MCx5OjAsc3g6IiIsc3k6IiJ9KX1pZighdGhp cy5fYmF0Y2hQcm9jZXNzKXt2YXIgaT10aGlzLiRlbGVtLmZpbmQoInRib2R5 Iik7JCgiLndjRG9ja2VyVHJhbnNpdGlvbiIpLmFwcGVuZChpKTtmb3IodmFy IG49JCgiPHRib2R5PiIpLGE9MDthPHRoaXMuX2dyaWQubGVuZ3RoOysrYSlm b3IodmFyIHM9bnVsbCxvPTA7bzx0aGlzLl9ncmlkW2FdLmxlbmd0aDsrK28p e3ZhciBsPXRoaXMuX2dyaWRbYV1bb107bC4kZWwmJihzfHwocz10aGlzLl9n cmlkW2FdLiRyb3csbi5hcHBlbmQocykpLGwuJGVsLmNzcygid2lkdGgiLGwu c3gpLGwuJGVsLmNzcygiaGVpZ2h0IixsLnN5KSxzLmFwcGVuZChsLiRlbCkp fXRoaXMuJGVsZW0uYXBwZW5kKG4pLGkucmVtb3ZlKCl9fSxfX21lcmdlR3Jp ZDpmdW5jdGlvbih0LGUsYSxyKXtmb3IodmFyIG89MDtyPm87KytvKWZvcih2 YXIgaT0wO2E+aTsrK2kpe3ZhciBuPXRoaXMuX2dyaWRbZStvXVt0K2ldO2lm KCFuLiRlbHx8MCE9PW4ueHx8MCE9PW4ueSlyZXR1cm4hMX12YXIgbj10aGlz Ll9ncmlkW2VdW3RdO2E+MSYmKG4uJGVsLmF0dHIoImNvbHNwYW4iLCIiK2Ep LG4ueD1hLTEpLHI+MSYmKG4uJGVsLmF0dHIoInJvd3NwYW4iLCIiK3IpLAor bi55PXItMSk7Zm9yKHZhciBvPTA7cj5vOysrbylmb3IodmFyIGk9MDthPmk7 KytpKWlmKDAhPT1vfHwwIT09aSl7dmFyIG49dGhpcy5fZ3JpZFtlK29dW3Qr aV07bi4kZWwucmVtb3ZlKCksbi4kZWw9bnVsbCxuLng9LWksbi55PS1vfXJl dHVybiEwfX0pO3JldHVybiByfSksYSgid2NEb2NrZXIvdGFiZnJhbWUiLFsi ZGNsL2RjbCIsIi4vdHlwZXMiLCIuL2Jhc2UiXSxmdW5jdGlvbih0LGUsYSl7 dmFyIHI9dChhLHtkZWNsYXJlZENsYXNzOiJ3Y1RhYkZyYW1lIixMRUZUX1RB Ql9CVUZGRVI6MTUsY29uc3RydWN0b3I6ZnVuY3Rpb24odCxhKXt0aGlzLiRj b250YWluZXI9JCh0KSx0aGlzLl9wYXJlbnQ9YSx0aGlzLiRmcmFtZT1udWxs LHRoaXMuJHRhYkJhcj1udWxsLHRoaXMuJHRhYlNjcm9sbD1udWxsLHRoaXMu JGNlbnRlcj1udWxsLHRoaXMuJHRhYkxlZnQ9bnVsbCx0aGlzLiR0YWJSaWdo dD1udWxsLHRoaXMuJGNsb3NlPW51bGwsdGhpcy5fdGFiT3JpZW50YXRpb249 ZS5UQUIuVE9QLHRoaXMuX2NhblNjcm9sbFRhYnM9ITEsdGhpcy5fdGFiU2Ny b2xsUG9zPTAsdGhpcy5fY3VyVGFiPS0xLHRoaXMuX2xheW91dExpc3Q9W10s dGhpcy5fbW92ZWFibGU9ITAsdGhpcy5fYm91bmRFdmVudHM9W10sdGhpcy5f X2luaXQoKX0sdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kY2VudGVy LnNjcm9sbFRvcCgpO3RoaXMuX191cGRhdGVUYWJzKCksdGhpcy4kY2VudGVy LnNjcm9sbFRvcCh0KX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX19kZXN0 cm95KCl9LHRhYkNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xheW91 dExpc3QubGVuZ3RofSx0YWJPcmllbnRhdGlvbjpmdW5jdGlvbih0KXtyZXR1 cm4gdm9pZCAwIT09dCYmdGhpcy5fdGFiT3JpZW50YXRpb24hPT10JiZ0aGlz LmRvY2tlcigpLl9jYW5PcmllbnRUYWJzJiYodGhpcy5fdGFiT3JpZW50YXRp b249dCx0aGlzLl9fdXBkYXRlVGFicygpLHRoaXMuX191cGRhdGVUYWJzKCkp LHRoaXMuX3RhYk9yaWVudGF0aW9ufSxhZGRUYWI6ZnVuY3Rpb24odCxlLGEp e3ZhciByPWF8fCJ3Y0xheW91dFRhYmxlIixvPW5ldyh0aGlzLmRvY2tlcigp Ll9fZ2V0Q2xhc3MocikpKCIud2NEb2NrZXJUcmFuc2l0aW9uIix0aGlzLl9w YXJlbnQpO3JldHVybiBvLm5hbWU9dCxvLl9zY3JvbGxhYmxlPXt4OiEwLHk6 ITB9LG8uX3Njcm9sbD17eDowLHk6MH0sby5fY2xvc2VhYmxlPSExLG8uX292 ZXJmbG93VmlzaWJsZT0hMSwidW5kZWZpbmVkIj09dHlwZW9mIGV8fC0xPj1l P3RoaXMuX2xheW91dExpc3QucHVzaChvKTp0aGlzLl9sYXlvdXRMaXN0LnNw bGljZShlLDAsbyksLTE9PT10aGlzLl9jdXJUYWImJnRoaXMuX2xheW91dExp c3QubGVuZ3RoJiYodGhpcy5fY3VyVGFiPTApLHRoaXMuX191cGRhdGVUYWJz KCksb30scmVtb3ZlVGFiOmZ1bmN0aW9uKHQpe2lmKHQ+LTEmJnQ8dGhpcy5f bGF5b3V0TGlzdC5sZW5ndGgpe3ZhciBhPXRoaXMuX2xheW91dExpc3RbdF0u bmFtZTtyZXR1cm4gdGhpcy5fbGF5b3V0TGlzdFt0XS5fX2Rlc3Ryb3koKSx0 aGlzLl9sYXlvdXRMaXN0LnNwbGljZSh0LDEpLHRoaXMuX2N1clRhYj49dCYm KHRoaXMuX2N1clRhYi0tLHRoaXMuX2N1clRhYjwwJiYodGhpcy5fY3VyVGFi PTApKSx0aGlzLl9fdXBkYXRlVGFicygpLHRoaXMuX3BhcmVudC5fX3RyaWdn ZXIoZS5FVkVOVC5DVVNUT01fVEFCX0NMT1NFRCx7b2JqOnRoaXMsbmFtZTph LGluZGV4OnR9KSwhMH1yZXR1cm4hMX0sdGFiOmZ1bmN0aW9uKHQsYSl7aWYo InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0Pi0xJiZ0PHRoaXMuX2xheW91dExp c3QubGVuZ3RoKXt0aGlzLiR0YWJCYXIuZmluZCgnPiAud2NUYWJTY3JvbGxl ciA+IC53Y1BhbmVsVGFiW2lkPSInK3RoaXMuX2N1clRhYisnIl0nKS5yZW1v dmVDbGFzcygid2NQYW5lbFRhYkFjdGl2ZSIpLHRoaXMuJGNlbnRlci5jaGls ZHJlbignLndjUGFuZWxUYWJDb250ZW50W2lkPSInK3RoaXMuX2N1clRhYisn Il0nKS5hZGRDbGFzcygid2NQYW5lbFRhYkNvbnRlbnRIaWRkZW4iKSx0aGlz Ll9jdXJUYWI9dCx0aGlzLiR0YWJCYXIuZmluZCgnPiAud2NUYWJTY3JvbGxl ciA+IC53Y1BhbmVsVGFiW2lkPSInK3QrJyJdJykuYWRkQ2xhc3MoIndjUGFu ZWxUYWJBY3RpdmUiKSx0aGlzLiRjZW50ZXIuY2hpbGRyZW4oJy53Y1BhbmVs VGFiQ29udGVudFtpZD0iJyt0KyciXScpLnJlbW92ZUNsYXNzKCJ3Y1BhbmVs VGFiQ29udGVudEhpZGRlbiIpLHRoaXMuX191cGRhdGVUYWJzKGEpO3ZhciBy PXRoaXMuX2xheW91dExpc3RbdGhpcy5fY3VyVGFiXS5uYW1lO3RoaXMuX3Bh cmVudC5fX3RyaWdnZXIoZS5FVkVOVC5DVVNUT01fVEFCX0NIQU5HRUQse29i ajp0aGlzLG5hbWU6cixpbmRleDp0fSl9cmV0dXJuIHRoaXMuX2N1clRhYn0s bGF5b3V0OmZ1bmN0aW9uKHQpe3JldHVybiB0Pi0xJiZ0PHRoaXMuX2xheW91 dExpc3QubGVuZ3RoP3RoaXMuX2xheW91dExpc3RbdF06ITF9LG1vdmVUYWI6 ZnVuY3Rpb24odCxlKXtpZih0Pj0wJiZ0PHRoaXMuX2xheW91dExpc3QubGVu Z3RoJiZlPj0wJiZlPHRoaXMuX2xheW91dExpc3QubGVuZ3RoKXt2YXIgYT10 aGlzLl9sYXlvdXRMaXN0LnNwbGljZSh0LDEpO3JldHVybiB0aGlzLl9sYXlv dXRMaXN0LnNwbGljZShlLDAsYVswXSksdGhpcy5fY3VyVGFiPT09dCYmKHRo aXMuX2N1clRhYj1lKSx0aGlzLl9fdXBkYXRlVGFicygpLHRoaXMuJHRhYkJh ci5maW5kKCc+IC53Y1RhYlNjcm9sbGVyID4gLndjUGFuZWxUYWJbaWQ9Iicr ZSsnIl0nKVswXX1yZXR1cm4hMX0sbW92ZWFibGU6ZnVuY3Rpb24odCl7cmV0 dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0JiYodGhpcy5fbW92ZWFibGU9dCks dGhpcy5fbW92ZWFibGV9LGNsb3NlYWJsZTpmdW5jdGlvbih0LGUpe2lmKHQ+ LTEmJnQ8dGhpcy5fbGF5b3V0TGlzdC5sZW5ndGgpe3ZhciBhPXRoaXMuX2xh eW91dExpc3RbdF07cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBlJiYoYS5f Y2xvc2VhYmxlPWUpLGEuX2Nsb3NlYWJsZX1yZXR1cm4hMX0sc2Nyb2xsYWJs ZTpmdW5jdGlvbih0LGUsYSl7aWYodD4tMSYmdDx0aGlzLl9sYXlvdXRMaXN0 Lmxlbmd0aCl7dmFyIHI9dGhpcy5fbGF5b3V0TGlzdFt0XSxvPSExO3JldHVy biJ1bmRlZmluZWQiIT10eXBlb2YgZSYmKHIuX3Njcm9sbGFibGUueD1lLG89 ITApLCJ1bmRlZmluZWQiIT10eXBlb2YgYSYmKHIuX3Njcm9sbGFibGUueT1h LG89ITApLG8mJnRoaXMuX19vblRhYkNoYW5nZSgpLHt4OnIuX3Njcm9sbGFi bGUueCx5OnIuX3Njcm9sbGFibGUueX19cmV0dXJuITF9LG92ZXJmbG93Vmlz aWJsZTpmdW5jdGlvbih0LGUpe2lmKHQ+LTEmJnQ8dGhpcy5fbGF5b3V0TGlz dC5sZW5ndGgpe3ZhciBhPXRoaXMuX2xheW91dExpc3RbdF07cmV0dXJuInVu ZGVmaW5lZCIhPXR5cGVvZiBvdmVyZmxvdyYmKGEuX292ZXJmbG93VmlzaWJs ZT1vdmVyZmxvdyx0aGlzLl9fb25UYWJDaGFuZ2UoKSksYS5fb3ZlcmZsb3dW aXNpYmxlfXJldHVybiExfSxmaXRDb250ZW50czpmdW5jdGlvbih0LGUsYSl7 aWYodD4tMSYmdDx0aGlzLl9sYXlvdXRMaXN0Lmxlbmd0aCl7dmFyIHI9dGhp cy5fbGF5b3V0TGlzdFt0XTtyLmhhc093blByb3BlcnR5KCJfZml0Q29udGVu dHMiKXx8KHIuX2ZpdENvbnRlbnRzPXt4OiExLHk6ITF9KTt2YXIgbz0hMTty ZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGUmJihyLl9maXRDb250ZW50cy54 PWUsbz0hMCksInVuZGVmaW5lZCIhPXR5cGVvZiBhJiYoci5fZml0Q29udGVu dHMueT1hLG89ITApLG8mJnRoaXMuX19vblRhYkNoYW5nZSgpLHt4OnIuX2Zp dENvbnRlbnRzLngseTpyLl9maXRDb250ZW50cy55fX1yZXR1cm4hMX0saWNv bjpmdW5jdGlvbih0LGUpe2lmKHQ+LTEmJnQ8dGhpcy5fbGF5b3V0TGlzdC5s ZW5ndGgpe3ZhciBhPXRoaXMuX2xheW91dExpc3RbdF07YS4kaWNvbnx8KGEu JGljb249JCgiPGRpdj4iKSksYS4kaWNvbi5yZW1vdmVDbGFzcygpLGEuJGlj b24uYWRkQ2xhc3MoIndjVGFiSWNvbiAiK2UpfX0sZmFpY29uOmZ1bmN0aW9u KHQsZSl7aWYodD4tMSYmdDx0aGlzLl9sYXlvdXRMaXN0Lmxlbmd0aCl7dmFy IGE9dGhpcy5fbGF5b3V0TGlzdFt0XTthLiRpY29ufHwoYS4kaWNvbj0kKCI8 ZGl2PiIpKSxhLiRpY29uLnJlbW92ZUNsYXNzKCksYS4kaWNvbi5hZGRDbGFz cygiZmEgZmEtZncgZmEtIitlKX19LF9faW5pdDpmdW5jdGlvbigpe3RoaXMu JGZyYW1lPSQoJzxkaXYgY2xhc3M9IndjQ3VzdG9tVGFiIHdjV2lkZSB3Y1Rh bGwiPicpLHRoaXMuJHRhYkJhcj0kKCc8ZGl2IGNsYXNzPSJ3Y0ZyYW1lVGl0 bGVCYXIgd2NDdXN0b21UYWJUaXRsZSB3Y1dpZGUiPicpLHRoaXMuJHRhYlNj cm9sbD0kKCc8ZGl2IGNsYXNzPSJ3Y1RhYlNjcm9sbGVyIj4nKSx0aGlzLiRj ZW50ZXI9JCgnPGRpdiBjbGFzcz0id2NGcmFtZUNlbnRlciB3Y1BhbmVsQmFj a2dyb3VuZCI+JyksdGhpcy4kdGFiTGVmdD0kKCc8ZGl2IGNsYXNzPSJ3Y0Zy YW1lQnV0dG9uIHdjRnJhbWVCdXR0b25MZWZ0ICIgdGl0bGU9IlNjcm9sbCB0 YWJzIHRvIHRoZSBsZWZ0LiI+PHNwYW4gY2xhc3M9ImZhIGZhLWFycm93LWxl ZnQiPjwvc3Bhbj48L2Rpdj4nKSx0aGlzLiR0YWJSaWdodD0kKCc8ZGl2IGNs YXNzPSJ3Y0ZyYW1lQnV0dG9uIHdjRnJhbWVCdXR0b25SaWdodCIgdGl0bGU9 IlNjcm9sbCB0YWJzIHRvIHRoZSByaWdodC4iPjxzcGFuIGNsYXNzPSJmYSBm YS1hcnJvdy1yaWdodCI+PC9zcGFuPjwvZGl2PicpLHRoaXMuJGNsb3NlPSQo JzxkaXYgY2xhc3M9IndjRnJhbWVCdXR0b24iIHRpdGxlPSJDbG9zZSB0aGUg Y3VycmVudGx5IGFjdGl2ZSBwYW5lbCB0YWIiPjxzcGFuIGNsYXNzPSJmYSBm YS1jbG9zZSI+PC9zcGFuPlg8L2Rpdj4nKSx0aGlzLiRidXR0b25CYXI9JCgn PGRpdiBjbGFzcz0id2NGcmFtZUJ1dHRvbkJhciI+JyksdGhpcy4kdGFiQmFy LmFwcGVuZCh0aGlzLiR0YWJTY3JvbGwpLHRoaXMuJHRhYkJhci5hcHBlbmQo dGhpcy4kYnV0dG9uQmFyKSx0aGlzLiRidXR0b25CYXIuYXBwZW5kKHRoaXMu JGNsb3NlKSx0aGlzLiRmcmFtZS5hcHBlbmQodGhpcy4kY2VudGVyKSx0aGlz LiRmcmFtZS5hcHBlbmQodGhpcy4kdGFiQmFyKSx0aGlzLl9fY29udGFpbmVy KHRoaXMuJGNvbnRhaW5lciksdGhpcy5fYm91bmRFdmVudHMucHVzaCh7ZXZl bnQ6ZS5FVkVOVC5VUERBVEVELGhhbmRsZXI6dGhpcy51cGRhdGUuYmluZCh0 aGlzKX0pLHRoaXMuX2JvdW5kRXZlbnRzLnB1c2goe2V2ZW50OmUuRVZFTlQu Q0xPU0VELGhhbmRsZXI6dGhpcy5kZXN0cm95LmJpbmQodGhpcyl9KTtmb3Io dmFyIHQ9MDt0PHRoaXMuX2JvdW5kRXZlbnRzLmxlbmd0aDsrK3QpdGhpcy5f cGFyZW50Lm9uKHRoaXMuX2JvdW5kRXZlbnRzW3RdLmV2ZW50LHRoaXMuX2Jv dW5kRXZlbnRzW3RdLmhhbmRsZXIpO3ZhciBhPXRoaXMuZG9ja2VyKCk7YSYm YS5fdGFiTGlzdC5wdXNoKHRoaXMpfSxfX3VwZGF0ZVRhYnM6ZnVuY3Rpb24o dCl7dGhpcy4kdGFiU2Nyb2xsLmVtcHR5KCk7dmFyIGE9ZnVuY3Rpb24odCl7 c3dpdGNoKHRoaXMuX3RhYk9yaWVudGF0aW9uKXtjYXNlIGUuVEFCLkJPVFRP TTpyZXR1cm4gdC5vZmZzZXQoKS5sZWZ0O2Nhc2UgZS5UQUIuVE9QOnJldHVy biB0Lm9mZnNldCgpLmxlZnQ7Y2FzZSBlLlRBQi5MRUZUOnJldHVybiB0Lm9m ZnNldCgpLnRvcDtjYXNlIGUuVEFCLlJJR0hUOnJldHVybiB0Lm9mZnNldCgp LnRvcH19LmJpbmQodGhpcykscj1bXSxvPTAsaT1hKHRoaXMuJHRhYlNjcm9s bCk7dGhpcy4kY2VudGVyLmNoaWxkcmVuKCIud2NQYW5lbFRhYkNvbnRlbnQi KS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5hZGRDbGFzcygid2NQYW5lbFRh YkNvbnRlbnRIaWRkZW4gd2NQYW5lbFRhYlVudXNlZCIpfSk7Zm9yKHZhciBu PTA7bjx0aGlzLl9sYXlvdXRMaXN0Lmxlbmd0aDsrK24pe3ZhciBzPSQoJzxk aXYgaWQ9IicrbisnIiBjbGFzcz0id2NQYW5lbFRhYiI+PGRpdj4nK3RoaXMu X2xheW91dExpc3Rbbl0ubmFtZSsiPC9kaXY+PC9kaXY+Iik7dGhpcy5fbW92 ZWFibGUmJnMuYWRkQ2xhc3MoIndjQ3VzdG9tVGFiTW92ZWFibGUiKSx0aGlz LiR0YWJTY3JvbGwuYXBwZW5kKHMpLHRoaXMuX2xheW91dExpc3Rbbl0uJGlj b24mJnMuZmluZCgiZGl2IikucHJlcGVuZCh0aGlzLl9sYXlvdXRMaXN0W25d LiRpY29uKTt2YXIgbD10aGlzLiRjZW50ZXIuY2hpbGRyZW4oJy53Y1BhbmVs VGFiQ29udGVudFtpZD0iJytuKyciXScpO2wubGVuZ3RofHwobD0kKCc8ZGl2 IGNsYXNzPSJ3Y1BhbmVsVGFiQ29udGVudCB3Y1BhbmVsVGFiQ29udGVudEhp ZGRlbiIgaWQ9IicrbisnIj4nKSx0aGlzLiRjZW50ZXIuYXBwZW5kKGwpKSx0 aGlzLl9sYXlvdXRMaXN0W25dLl9fY29udGFpbmVyKGwpLHRoaXMuX2xheW91 dExpc3Rbbl0uX3BhcmVudD10aGlzO3ZhciBjPXRoaXMuX2N1clRhYj09PW47 bC5yZW1vdmVDbGFzcygid2NQYW5lbFRhYlVudXNlZCIpLGMmJihzLmFkZENs YXNzKCJ3Y1BhbmVsVGFiQWN0aXZlIiksbC5yZW1vdmVDbGFzcygid2NQYW5l bFRhYkNvbnRlbnRIaWRkZW4iKSksbz1hKHMpLWksci5wdXNoKG8pLG8rPXMu b3V0ZXJXaWR0aCgpfXZhciBoPTAsdT10aGlzLiR0YWJCYXIuaGVpZ2h0KCk7 c3dpdGNoKHRoaXMuX3RhYk9yaWVudGF0aW9uKXtjYXNlIGUuVEFCLlRPUDp0 aGlzLiR0YWJCYXIuYWRkQ2xhc3MoIndjVGFiVG9wIikucmVtb3ZlQ2xhc3Mo IndjVGFiTGVmdCB3Y1RhYlJpZ2h0IHdjVGFiQm90dG9tIiksdGhpcy4kY2Vu dGVyLmNzcygidG9wIix1KS5jc3MoImxlZnQiLDApLmNzcygicmlnaHQiLDAp LmNzcygiYm90dG9tIiwwKSxoPXRoaXMuJGNlbnRlci53aWR0aCgpO2JyZWFr O2Nhc2UgZS5UQUIuQk9UVE9NOnRoaXMuJHRhYkJhci5hZGRDbGFzcygid2NU YWJCb3R0b20iKS5yZW1vdmVDbGFzcygid2NUYWJUb3Agd2NUYWJMZWZ0IHdj VGFiUmlnaHQiKSx0aGlzLiRjZW50ZXIuY3NzKCJ0b3AiLDApLmNzcygibGVm dCIsMCkuY3NzKCJyaWdodCIsMCkuY3NzKCJib3R0b20iLHUpLGg9dGhpcy4k Y2VudGVyLndpZHRoKCk7YnJlYWs7Y2FzZSBlLlRBQi5MRUZUOnRoaXMuJHRh YkJhci5hZGRDbGFzcygid2NUYWJMZWZ0IikucmVtb3ZlQ2xhc3MoIndjVGFi VG9wIHdjVGFiUmlnaHQgd2NUYWJCb3R0b20iKSx0aGlzLiRjZW50ZXIuY3Nz KCJ0b3AiLDApLmNzcygibGVmdCIsdSkuY3NzKCJyaWdodCIsMCkuY3NzKCJi b3R0b20iLDApLGg9dGhpcy4kY2VudGVyLmhlaWdodCgpO2JyZWFrO2Nhc2Ug ZS5UQUIuUklHSFQ6dGhpcy4kdGFiQmFyLmFkZENsYXNzKCJ3Y1RhYlJpZ2h0 IikucmVtb3ZlQ2xhc3MoIndjVGFiVG9wIHdjVGFiTGVmdCB3Y1RhYkJvdHRv bSIpLHRoaXMuJGNlbnRlci5jc3MoInRvcCIsMCkuY3NzKCJsZWZ0IiwwKS5j c3MoInJpZ2h0Iix1KS5jc3MoImJvdHRvbSIsMCksaD10aGlzLiRjZW50ZXIu aGVpZ2h0KCl9dGhpcy4kY2VudGVyLmNoaWxkcmVuKCIud2NQYW5lbFRhYlVu dXNlZCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZSgpfSk7dmFy IGQ9dGhpcy5fX29uVGFiQ2hhbmdlKCk7aWYodClmb3IodmFyIG49MDtuPHIu bGVuZ3RoOysrbilpZihuPT09dGhpcy5fY3VyVGFiKXt2YXIgZj1yW25dLHA9 bztuKzE8ci5sZW5ndGgmJihwPXJbbisxXSk7dmFyIGI9LXBhcnNlSW50KHRo aXMuJHRhYlNjcm9sbC5jc3MoImxlZnQiKSksXz1oLWQ7Yj5mPyh0aGlzLl90 YWJTY3JvbGxQb3M9Zi10aGlzLkxFRlRfVEFCX0JVRkZFUix0aGlzLl90YWJT Y3JvbGxQb3M8MCYmKHRoaXMuX3RhYlNjcm9sbFBvcz0wKSk6cC1iPl8mJih0 aGlzLl90YWJTY3JvbGxQb3M9cC1fK3RoaXMuTEVGVF9UQUJfQlVGRkVSKTti cmVha31pZih0aGlzLl9jYW5TY3JvbGxUYWJzPSExLG8+aC1kKXt0aGlzLl9j YW5TY3JvbGxUYWJzPSEwLHRoaXMuJGJ1dHRvbkJhci5hcHBlbmQodGhpcy4k dGFiUmlnaHQpLHRoaXMuJGJ1dHRvbkJhci5hcHBlbmQodGhpcy4kdGFiTGVm dCksZCs9dGhpcy4kdGFiUmlnaHQub3V0ZXJXaWR0aCgpLGQrPXRoaXMuJHRh YkxlZnQub3V0ZXJXaWR0aCgpO3ZhciB2PW8tKGgtZCkvMjtpZih0aGlzLl90 YWJTY3JvbGxQb3M+dilmb3IodmFyIG09dGhpcy4kdGFiU2Nyb2xsLmNoaWxk cmVuKCksbj0wO248bS5sZW5ndGg7KytuKXt2YXIgcz0kKG1bbl0pO2lmKG89 YShzKS1pLG8rcy5vdXRlcldpZHRoKCk+dil7dGhpcy5fdGFiU2Nyb2xsUG9z PW8tdGhpcy5MRUZUX1RBQl9CVUZGRVIsdGhpcy5fdGFiU2Nyb2xsUG9zPDAm Jih0aGlzLl90YWJTY3JvbGxQb3M9MCk7YnJlYWt9fX1lbHNlIHRoaXMuX3Rh YlNjcm9sbFBvcz0wLHRoaXMuJHRhYkxlZnQucmVtb3ZlKCksdGhpcy4kdGFi UmlnaHQucmVtb3ZlKCk7dGhpcy4kdGFiU2Nyb2xsLnN0b3AoKS5hbmltYXRl KHtsZWZ0Oi10aGlzLl90YWJTY3JvbGxQb3MrInB4In0sImZhc3QiKX0sX19v blRhYkNoYW5nZTpmdW5jdGlvbigpe3ZhciB0PTAsYT10aGlzLmxheW91dCh0 aGlzLl9jdXJUYWIpO2lmKGEpe3RoaXMuJGNlbnRlci50b2dnbGVDbGFzcygi d2NTY3JvbGxhYmxlWCIsYS5fc2Nyb2xsYWJsZS54KSx0aGlzLiRjZW50ZXIu dG9nZ2xlQ2xhc3MoIndjU2Nyb2xsYWJsZVkiLGEuX3Njcm9sbGFibGUueSks dGhpcy4kY2VudGVyLnRvZ2dsZUNsYXNzKCJ3Y092ZXJmbG93VmlzaWJsZSIs YS5fb3ZlcmZsb3dWaXNpYmxlKSx0aGlzLiR0YWJMZWZ0LnJlbW92ZSgpLHRo aXMuJHRhYlJpZ2h0LnJlbW92ZSgpLGEuX2Nsb3NlYWJsZT8odGhpcy4kY2xv c2Uuc2hvdygpLHQrPXRoaXMuJGNsb3NlLm91dGVyV2lkdGgoKSk6dGhpcy4k Y2xvc2UuaGlkZSgpLHRoaXMuX2NhblNjcm9sbFRhYnMmJih0aGlzLiR0YWJC YXIuYXBwZW5kKHRoaXMuJHRhYlJpZ2h0KSx0aGlzLiR0YWJCYXIuYXBwZW5k KHRoaXMuJHRhYkxlZnQpLHQrPXRoaXMuJHRhYlJpZ2h0Lm91dGVyV2lkdGgo KSt0aGlzLiR0YWJMZWZ0Lm91dGVyV2lkdGgoKSk7dmFyIHI9dGhpcy5maXRD b250ZW50cyh0aGlzLl9jdXJUYWIpO2lmKHIueCl7dmFyIG89YS5zY2VuZSgp Lm91dGVyV2lkdGgoKTsodGhpcy5fdGFiT3JpZW50YXRpb249PT1lLlRBQi5M RUZUfHx0aGlzLl90YWJPcmllbnRhdGlvbj09PWUuVEFCLlJJR0hUKSYmKG8r PXRoaXMuJHRhYlNjcm9sbC5oZWlnaHQoKSksdGhpcy4kY29udGFpbmVyLmNz cygid2lkdGgiLG8pfWVsc2UgdGhpcy4kY29udGFpbmVyLmNzcygid2lkdGgi LCIiKTtpZihyLnkpe3ZhciBpPWEuc2NlbmUoKS5vdXRlckhlaWdodCgpOyh0 aGlzLl90YWJPcmllbnRhdGlvbj09PWUuVEFCLlRPUHx8dGhpcy5fdGFiT3Jp ZW50YXRpb249PT1lLlRBQi5CT1RUT00pJiYoaSs9dGhpcy4kdGFiU2Nyb2xs LmhlaWdodCgpKSx0aGlzLiRjb250YWluZXIuY3NzKCJoZWlnaHQiLGkpfWVs c2UgdGhpcy4kY29udGFpbmVyLmNzcygiaGVpZ2h0IiwiIik7c3dpdGNoKHRo aXMuX3RhYk9yaWVudGF0aW9uKXtjYXNlIGUuVEFCLlJJR0hUOmNhc2UgZS5U QUIuTEVGVDp0aGlzLiR0YWJCYXIuY3NzKCJ3aWR0aCIsdGhpcy4kY2VudGVy LmhlaWdodCgpfHwiMTAwJSIpO2JyZWFrO2Nhc2UgZS5UQUIuVE9QOmNhc2Ug ZS5UQUIuQk9UVE9NOnRoaXMuJHRhYkJhci5jc3MoIndpZHRoIix0aGlzLiRj ZW50ZXIud2lkdGgoKXx8IjEwMCUiKX10aGlzLiRjZW50ZXIuc2Nyb2xsTGVm dChhLl9zY3JvbGwueCksdGhpcy4kY2VudGVyLnNjcm9sbFRvcChhLl9zY3Jv bGwueSl9cmV0dXJuIHRoaXMuJGJ1dHRvbkJhci5jc3MoIm1pbi13aWR0aCIs dCkuY3NzKCJ3aWR0aCIsdCksdH0sX19zY3JvbGxlZDpmdW5jdGlvbigpe3Zh ciB0PXRoaXMubGF5b3V0KHRoaXMuX2N1clRhYik7dC5fc2Nyb2xsLng9dGhp cy4kY2VudGVyLnNjcm9sbExlZnQoKSx0Ll9zY3JvbGwueT10aGlzLiRjZW50 ZXIuc2Nyb2xsVG9wKCl9LF9fY29udGFpbmVyOmZ1bmN0aW9uKHQpe3JldHVy biJ1bmRlZmluZWQiPT10eXBlb2YgdD90aGlzLiRjb250YWluZXI6KHRoaXMu JGNvbnRhaW5lcj10LHRoaXMuJGNvbnRhaW5lcj90aGlzLiRjb250YWluZXIu YXBwZW5kKHRoaXMuJGZyYW1lKTp0aGlzLiRmcmFtZS5yZW1vdmUoKSx0aGlz LiRjb250YWluZXIpfSxfX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdD10aGlz LmRvY2tlcigpO2lmKHQpe3ZhciBlPXQuX3RhYkxpc3QuaW5kZXhPZih0aGlz KTtlPi0xJiZ0Ll90YWJMaXN0LnNwbGljZShlLDEpfWZvcig7dGhpcy5fYm91 bmRFdmVudHMubGVuZ3RoOyl0aGlzLl9wYXJlbnQub2ZmKHRoaXMuX2JvdW5k RXZlbnRzWzBdLmV2ZW50LHRoaXMuX2JvdW5kRXZlbnRzWzBdLmhhbmRsZXIp LHRoaXMuX2JvdW5kRXZlbnRzLnNoaWZ0KCk7dGhpcy5fY3VyVGFiPS0xO2Zv cih2YXIgYT0wO2E8dGhpcy5fbGF5b3V0TGlzdC5sZW5ndGg7KythKXRoaXMu X2xheW91dExpc3RbYV0uX19kZXN0cm95KCk7Zm9yKDt0aGlzLl9sYXlvdXRM aXN0Lmxlbmd0aDspdGhpcy5fbGF5b3V0TGlzdC5wb3AoKTt0aGlzLl9fY29u dGFpbmVyKG51bGwpLHRoaXMuX3BhcmVudD1udWxsfX0pO3JldHVybiByfSks ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7aWYodCE9PWUpe3ZhciBhPW51 bGw9PT10LHI9dD09PXksbz10PT09dCxpPW51bGw9PT1lLG49ZT09PXkscz1l PT09ZTtpZih0PmUmJiFpfHwhb3x8YSYmIW4mJnN8fHImJnMpcmV0dXJuIDE7 aWYoZT50JiYhYXx8IXN8fGkmJiFyJiZvfHxuJiZvKXJldHVybi0xfXJldHVy biAwfWZ1bmN0aW9uIGUodCxlLGEpe2Zvcih2YXIgcj10Lmxlbmd0aCxvPWE/ cjotMTthP28tLTorK288cjspaWYoZSh0W29dLG8sdCkpcmV0dXJuIG87cmV0 dXJuLTF9ZnVuY3Rpb24gcih0LGUsYSl7aWYoZSE9PWUpcmV0dXJuIHAodCxh KTtmb3IodmFyIHI9YS0xLG89dC5sZW5ndGg7KytyPG87KWlmKHRbcl09PT1l KXJldHVybiByO3JldHVybi0xfWZ1bmN0aW9uIG8odCl7cmV0dXJuImZ1bmN0 aW9uIj09dHlwZW9mIHR8fCExfWZ1bmN0aW9uIGkodCl7cmV0dXJuIG51bGw9 PXQ/IiI6dCsiIn1mdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciBhPS0xLHI9dC5s ZW5ndGg7KythPHImJmUuaW5kZXhPZih0LmNoYXJBdChhKSk+LTE7KTtyZXR1 cm4gYX1mdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciBhPXQubGVuZ3RoO2EtLSYm ZS5pbmRleE9mKHQuY2hhckF0KGEpKT4tMTspO3JldHVybiBhfWZ1bmN0aW9u IGwoZSxhKXtyZXR1cm4gdChlLmNyaXRlcmlhLGEuY3JpdGVyaWEpfHxlLmlu ZGV4LWEuaW5kZXh9ZnVuY3Rpb24gYyhlLGEscil7Zm9yKHZhciBvPS0xLGk9 ZS5jcml0ZXJpYSxuPWEuY3JpdGVyaWEscz1pLmxlbmd0aCxsPXIubGVuZ3Ro OysrbzxzOyl7dmFyIGM9dChpW29dLG5bb10pO2lmKGMpe2lmKG8+PWwpcmV0 dXJuIGM7dmFyIGg9cltvXTtyZXR1cm4gYyooImFzYyI9PT1ofHxoPT09ITA/ MTotMSl9fXJldHVybiBlLmluZGV4LWEuaW5kZXh9ZnVuY3Rpb24gaCh0KXty ZXR1cm4gS3RbdF19ZnVuY3Rpb24gdSh0KXtyZXR1cm4gV3RbdF19ZnVuY3Rp b24gZCh0LGUsYSl7cmV0dXJuIGU/dD1VdFt0XTphJiYodD1xdFt0XSksIlxc Iit0fWZ1bmN0aW9uIGYodCl7cmV0dXJuIlxcIitxdFt0XX1mdW5jdGlvbiBw KHQsZSxhKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1lKyhhPzA6LTEpO2E/by0t OisrbzxyOyl7dmFyIGk9dFtvXTtpZihpIT09aSlyZXR1cm4gb31yZXR1cm4t MX1mdW5jdGlvbiBiKHQpe3JldHVybiEhdCYmIm9iamVjdCI9PXR5cGVvZiB0 fWZ1bmN0aW9uIF8odCl7cmV0dXJuIDE2MD49dCYmdD49OSYmMTM+PXR8fDMy PT10fHwxNjA9PXR8fDU3NjA9PXR8fDYxNTg9PXR8fHQ+PTgxOTImJig4MjAy Pj10fHw4MjMyPT10fHw4MjMzPT10fHw4MjM5PT10fHw4Mjg3PT10fHwxMjI4 OD09dHx8NjUyNzk9PXQpfWZ1bmN0aW9uIHYodCxlKXtmb3IodmFyIGE9LTEs cj10Lmxlbmd0aCxvPS0xLGk9W107KythPHI7KXRbYV09PT1lJiYodFthXT1O LGlbKytvXT1hKTtyZXR1cm4gaX1mdW5jdGlvbiBtKHQsZSl7Zm9yKHZhciBh LHI9LTEsbz10Lmxlbmd0aCxpPS0xLG49W107KytyPG87KXt2YXIgcz10W3Jd LGw9ZT9lKHMscix0KTpzO3ImJmE9PT1sfHwoYT1sLG5bKytpXT1zKX1yZXR1 cm4gbn1mdW5jdGlvbiB3KHQpe2Zvcih2YXIgZT0tMSxhPXQubGVuZ3RoOysr ZTxhJiZfKHQuY2hhckNvZGVBdChlKSk7KTtyZXR1cm4gZX1mdW5jdGlvbiBn KHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJl8odC5jaGFyQ29kZUF0KGUp KTspO3JldHVybiBlfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEd0W3RdfWZ1bmN0 aW9uIHgoYSl7ZnVuY3Rpb24gXyh0KXtpZihiKHQpJiYha3ModCkmJiEodCBp bnN0YW5jZW9mIGV0KSl7aWYodCBpbnN0YW5jZW9mIFEpcmV0dXJuIHQ7aWYo cm4uY2FsbCh0LCJfX2NoYWluX18iKSYmcm4uY2FsbCh0LCJfX3dyYXBwZWRf XyIpKXJldHVybiBwcih0KX1yZXR1cm4gbmV3IFEodCl9ZnVuY3Rpb24gWigp e31mdW5jdGlvbiBRKHQsZSxhKXt0aGlzLl9fd3JhcHBlZF9fPXQsdGhpcy5f X2FjdGlvbnNfXz1hfHxbXSx0aGlzLl9fY2hhaW5fXz0hIWV9ZnVuY3Rpb24g ZXQodCl7dGhpcy5fX3dyYXBwZWRfXz10LHRoaXMuX19hY3Rpb25zX189W10s dGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0 ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz1Pbix0aGlzLl9fdmll d3NfXz1bXX1mdW5jdGlvbiBLdCgpe3ZhciB0PW5ldyBldCh0aGlzLl9fd3Jh cHBlZF9fKTtyZXR1cm4gdC5fX2FjdGlvbnNfXz1vZSh0aGlzLl9fYWN0aW9u c19fKSx0Ll9fZGlyX189dGhpcy5fX2Rpcl9fLHQuX19maWx0ZXJlZF9fPXRo aXMuX19maWx0ZXJlZF9fLHQuX19pdGVyYXRlZXNfXz1vZSh0aGlzLl9faXRl cmF0ZWVzX18pLHQuX190YWtlQ291bnRfXz10aGlzLl9fdGFrZUNvdW50X18s dC5fX3ZpZXdzX189b2UodGhpcy5fX3ZpZXdzX18pLHR9ZnVuY3Rpb24gV3Qo KXtpZih0aGlzLl9fZmlsdGVyZWRfXyl7dmFyIHQ9bmV3IGV0KHRoaXMpO3Qu X19kaXJfXz0tMSx0Ll9fZmlsdGVyZWRfXz0hMH1lbHNlIHQ9dGhpcy5jbG9u ZSgpLHQuX19kaXJfXyo9LTE7cmV0dXJuIHR9ZnVuY3Rpb24gR3QoKXt2YXIg dD10aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksZT10aGlzLl9fZGlyX18sYT1r cyh0KSxyPTA+ZSxvPWE/dC5sZW5ndGg6MCxpPVVhKDAsbyx0aGlzLl9fdmll d3NfXyksbj1pLnN0YXJ0LHM9aS5lbmQsbD1zLW4sYz1yP3M6bi0xLGg9dGhp cy5fX2l0ZXJhdGVlc19fLHU9aC5sZW5ndGgsZD0wLGY9U24obCx0aGlzLl9f dGFrZUNvdW50X18pO2lmKCFhfHxJPm98fG89PWwmJmY9PWwpcmV0dXJuIG9h KHQsdGhpcy5fX2FjdGlvbnNfXyk7dmFyIHA9W107dDpmb3IoO2wtLSYmZj5k Oyl7Yys9ZTtmb3IodmFyIGI9LTEsXz10W2NdOysrYjx1Oyl7dmFyIHY9aFti XSxtPXYuaXRlcmF0ZWUsdz12LnR5cGUsZz1tKF8pO2lmKHc9PU0pXz1nO2Vs c2UgaWYoIWcpe2lmKHc9PVYpY29udGludWUgdDticmVhayB0fX1wW2QrK109 X31yZXR1cm4gcH1mdW5jdGlvbiBqdCgpe3RoaXMuX19kYXRhX189e319ZnVu Y3Rpb24gVXQodCl7cmV0dXJuIHRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5f X2RhdGFfX1t0XX1mdW5jdGlvbiBxdCh0KXtyZXR1cm4iX19wcm90b19fIj09 dD95OnRoaXMuX19kYXRhX19bdF19ZnVuY3Rpb24gWnQodCl7cmV0dXJuIl9f cHJvdG9fXyIhPXQmJnJuLmNhbGwodGhpcy5fX2RhdGFfXyx0KX1mdW5jdGlv biBZdCh0LGUpe3JldHVybiJfX3Byb3RvX18iIT10JiYodGhpcy5fX2RhdGFf X1t0XT1lKSx0aGlzfWZ1bmN0aW9uIFh0KHQpe3ZhciBlPXQ/dC5sZW5ndGg6 MDtmb3IodGhpcy5kYXRhPXtoYXNoOmduKG51bGwpLHNldDpuZXcgcG59O2Ut LTspdGhpcy5wdXNoKHRbZV0pfWZ1bmN0aW9uIEp0KHQsZSl7dmFyIGE9dC5k YXRhLHI9InN0cmluZyI9PXR5cGVvZiBlfHx6byhlKT9hLnNldC5oYXMoZSk6 YS5oYXNoW2VdO3JldHVybiByPzA6LTF9ZnVuY3Rpb24gUXQodCl7dmFyIGU9 dGhpcy5kYXRhOyJzdHJpbmciPT10eXBlb2YgdHx8em8odCk/ZS5zZXQuYWRk KHQpOmUuaGFzaFt0XT0hMH1mdW5jdGlvbiByZSh0LGUpe2Zvcih2YXIgYT0t MSxyPXQubGVuZ3RoLG89LTEsaT1lLmxlbmd0aCxuPU5pKHIraSk7KythPHI7 KW5bYV09dFthXTtmb3IoOysrbzxpOyluW2ErK109ZVtvXTtyZXR1cm4gbn1m dW5jdGlvbiBvZSh0LGUpe3ZhciBhPS0xLHI9dC5sZW5ndGg7Zm9yKGV8fChl PU5pKHIpKTsrK2E8cjspZVthXT10W2FdO3JldHVybiBlfWZ1bmN0aW9uIGll KHQsZSl7Zm9yKHZhciBhPS0xLHI9dC5sZW5ndGg7KythPHImJmUodFthXSxh LHQpIT09ITE7KTtyZXR1cm4gdH1mdW5jdGlvbiBuZSh0LGUpe2Zvcih2YXIg YT10Lmxlbmd0aDthLS0mJmUodFthXSxhLHQpIT09ITE7KTtyZXR1cm4gdH1m dW5jdGlvbiBzZSh0LGUpe2Zvcih2YXIgYT0tMSxyPXQubGVuZ3RoOysrYTxy OylpZighZSh0W2FdLGEsdCkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24g bGUodCxlLGEscil7Zm9yKHZhciBvPS0xLGk9dC5sZW5ndGgsbj1yLHM9bjsr K288aTspe3ZhciBsPXRbb10sYz0rZShsKTthKGMsbikmJihuPWMscz1sKX1y ZXR1cm4gc31mdW5jdGlvbiBjZSh0LGUpe2Zvcih2YXIgYT0tMSxyPXQubGVu Z3RoLG89LTEsaT1bXTsrK2E8cjspe3ZhciBuPXRbYV07ZShuLGEsdCkmJihp Wysrb109bil9cmV0dXJuIGl9ZnVuY3Rpb24gaGUodCxlKXtmb3IodmFyIGE9 LTEscj10Lmxlbmd0aCxvPU5pKHIpOysrYTxyOylvW2FdPWUodFthXSxhLHQp O3JldHVybiBvfWZ1bmN0aW9uIHVlKHQsZSl7Zm9yKHZhciBhPS0xLHI9ZS5s ZW5ndGgsbz10Lmxlbmd0aDsrK2E8cjspdFtvK2FdPWVbYV07cmV0dXJuIHR9 ZnVuY3Rpb24gZGUodCxlLGEscil7dmFyIG89LTEsaT10Lmxlbmd0aDtmb3Io ciYmaSYmKGE9dFsrK29dKTsrK288aTspYT1lKGEsdFtvXSxvLHQpO3JldHVy biBhfWZ1bmN0aW9uIGZlKHQsZSxhLHIpe3ZhciBvPXQubGVuZ3RoO2Zvcihy JiZvJiYoYT10Wy0tb10pO28tLTspYT1lKGEsdFtvXSxvLHQpO3JldHVybiBh fWZ1bmN0aW9uIHBlKHQsZSl7Zm9yKHZhciBhPS0xLHI9dC5sZW5ndGg7Kyth PHI7KWlmKGUodFthXSxhLHQpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9u IGJlKHQsZSl7Zm9yKHZhciBhPXQubGVuZ3RoLHI9MDthLS07KXIrPStlKHRb YV0pfHwwO3JldHVybiByfWZ1bmN0aW9uIF9lKHQsZSl7cmV0dXJuIHQ9PT15 P2U6dH1mdW5jdGlvbiB2ZSh0LGUsYSxyKXtyZXR1cm4gdCE9PXkmJnJuLmNh bGwocixhKT90OmV9ZnVuY3Rpb24gbWUodCxlLGEpe2Zvcih2YXIgcj0tMSxv PWpzKGUpLGk9by5sZW5ndGg7KytyPGk7KXt2YXIgbj1vW3JdLHM9dFtuXSxs PWEocyxlW25dLG4sdCxlKTsobD09PWw/bD09PXM6cyE9PXMpJiYocyE9PXl8 fG4gaW4gdCl8fCh0W25dPWwpfXJldHVybiB0fWZ1bmN0aW9uIHdlKHQsZSl7 cmV0dXJuIG51bGw9PWU/dDpUZShlLGpzKGUpLHQpfWZ1bmN0aW9uIGdlKHQs ZSl7Zm9yKHZhciBhPS0xLHI9bnVsbD09dCxvPSFyJiZKYSh0KSxpPW8/dC5s ZW5ndGg6MCxuPWUubGVuZ3RoLHM9Tmkobik7KythPG47KXt2YXIgbD1lW2Fd O28/c1thXT1RYShsLGkpP3RbbF06eTpzW2FdPXI/eTp0W2xdfXJldHVybiBz fWZ1bmN0aW9uIFRlKHQsZSxhKXthfHwoYT17fSk7Zm9yKHZhciByPS0xLG89 ZS5sZW5ndGg7KytyPG87KXt2YXIgaT1lW3JdO2FbaV09dFtpXX1yZXR1cm4g YX1mdW5jdGlvbiB4ZSh0LGUsYSl7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuImZ1 bmN0aW9uIj09cj9lPT09eT90OnNhKHQsZSxhKTpudWxsPT10P0ZpOiJvYmpl Y3QiPT1yP1JlKHQpOmU9PT15P2tpKHQpOk5lKHQsZSl9ZnVuY3Rpb24geWUo dCxlLGEscixvLGksbil7dmFyIHM7aWYoYSYmKHM9bz9hKHQscixvKTphKHQp KSxzIT09eSlyZXR1cm4gcztpZighem8odCkpcmV0dXJuIHQ7dmFyIGw9a3Mo dCk7aWYobCl7aWYocz1xYSh0KSwhZSlyZXR1cm4gb2UodCxzKX1lbHNle3Zh ciBjPW5uLmNhbGwodCksaD1jPT1xO2lmKGMhPVgmJmMhPUsmJighaHx8bykp cmV0dXJuIE50W2NdP1lhKHQsYyxlKTpvP3Q6e307aWYoZWUodCkpcmV0dXJu IG8/dDp7fTtpZihzPVphKGg/e306dCksIWUpcmV0dXJuIHdlKHMsdCl9aXx8 KGk9W10pLG58fChuPVtdKTtmb3IodmFyIHU9aS5sZW5ndGg7dS0tOylpZihp W3VdPT10KXJldHVybiBuW3VdO3JldHVybiBpLnB1c2godCksbi5wdXNoKHMp LChsP2llOkVlKSh0LGZ1bmN0aW9uKHIsbyl7c1tvXT15ZShyLGUsYSxvLHQs aSxuKX0pLHN9ZnVuY3Rpb24gQmUodCxlLGEpe2lmKCJmdW5jdGlvbiIhPXR5 cGVvZiB0KXRocm93IG5ldyBYaShSKTtyZXR1cm4gYm4oZnVuY3Rpb24oKXt0 LmFwcGx5KHksYSl9LGUpfWZ1bmN0aW9uIENlKHQsZSl7dmFyIGE9dD90Lmxl bmd0aDowLG89W107aWYoIWEpcmV0dXJuIG87dmFyIGk9LTEsbj1XYSgpLHM9 bj09PXIsbD1zJiZlLmxlbmd0aD49ST9fYShlKTpudWxsLGM9ZS5sZW5ndGg7 bCYmKG49SnQscz0hMSxlPWwpO3Q6Zm9yKDsrK2k8YTspe3ZhciBoPXRbaV07 aWYocyYmaD09PWgpe2Zvcih2YXIgdT1jO3UtLTspaWYoZVt1XT09PWgpY29u dGludWUgdDtvLnB1c2goaCl9ZWxzZSBuKGUsaCwwKTwwJiZvLnB1c2goaCl9 cmV0dXJuIG99ZnVuY3Rpb24gU2UodCxlKXt2YXIgYT0hMDtyZXR1cm4gTm4o dCxmdW5jdGlvbih0LHIsbyl7cmV0dXJuIGE9ISFlKHQscixvKX0pLGF9ZnVu Y3Rpb24gJGUodCxlLGEscil7dmFyIG89cixpPW87cmV0dXJuIE5uKHQsZnVu Y3Rpb24odCxuLHMpe3ZhciBsPStlKHQsbixzKTsoYShsLG8pfHxsPT09ciYm bD09PWkpJiYobz1sLGk9dCl9KSxpfWZ1bmN0aW9uIFBlKHQsZSxhLHIpe3Zh ciBvPXQubGVuZ3RoO2ZvcihhPW51bGw9PWE/MDorYXx8MCwwPmEmJihhPS1h Pm8/MDpvK2EpLHI9cj09PXl8fHI+bz9vOityfHwwLDA+ciYmKHIrPW8pLG89 YT5yPzA6cj4+PjAsYT4+Pj0wO28+YTspdFthKytdPWU7cmV0dXJuIHR9ZnVu Y3Rpb24gRmUodCxlKXt2YXIgYT1bXTtyZXR1cm4gTm4odCxmdW5jdGlvbih0 LHIsbyl7ZSh0LHIsbykmJmEucHVzaCh0KX0pLGF9ZnVuY3Rpb24gTGUodCxl LGEscil7dmFyIG87cmV0dXJuIGEodCxmdW5jdGlvbih0LGEsaSl7cmV0dXJu IGUodCxhLGkpPyhvPXI/YTp0LCExKTp2b2lkIDB9KSxvfWZ1bmN0aW9uIE9l KHQsZSxhLHIpe3J8fChyPVtdKTtmb3IodmFyIG89LTEsaT10Lmxlbmd0aDsr K288aTspe3ZhciBuPXRbb107YihuKSYmSmEobikmJihhfHxrcyhuKXx8JG8o bikpP2U/T2UobixlLGEscik6dWUocixuKTphfHwocltyLmxlbmd0aF09bil9 cmV0dXJuIHJ9ZnVuY3Rpb24gQWUodCxlKXtyZXR1cm4gV24odCxlLGFpKX1m dW5jdGlvbiBFZSh0LGUpe3JldHVybiBXbih0LGUsanMpfWZ1bmN0aW9uIERl KHQsZSl7cmV0dXJuIEduKHQsZSxqcyl9ZnVuY3Rpb24ga2UodCxlKXtmb3Io dmFyIGE9LTEscj1lLmxlbmd0aCxvPS0xLGk9W107KythPHI7KXt2YXIgbj1l W2FdO2tvKHRbbl0pJiYoaVsrK29dPW4pfXJldHVybiBpfWZ1bmN0aW9uIHpl KHQsZSxhKXtpZihudWxsIT10KXt0PWRyKHQpLGEhPT15JiZhIGluIHQmJihl PVthXSk7Zm9yKHZhciByPTAsbz1lLmxlbmd0aDtudWxsIT10JiZvPnI7KXQ9 ZHIodClbZVtyKytdXTtyZXR1cm4gciYmcj09bz90Onl9fWZ1bmN0aW9uIEhl KHQsZSxhLHIsbyxpKXtyZXR1cm4gdD09PWU/ITA6bnVsbD09dHx8bnVsbD09 ZXx8IXpvKHQpJiYhYihlKT90IT09dCYmZSE9PWU6SWUodCxlLEhlLGEscixv LGkpfWZ1bmN0aW9uIEllKHQsZSxhLHIsbyxpLG4pe3ZhciBzPWtzKHQpLGw9 a3MoZSksYz1XLGg9VztzfHwoYz1ubi5jYWxsKHQpLGM9PUs/Yz1YOmMhPVgm JihzPUdvKHQpKSksbHx8KGg9bm4uY2FsbChlKSxoPT1LP2g9WDpoIT1YJiYo bD1HbyhlKSkpO3ZhciB1PWM9PVgmJiFlZSh0KSxkPWg9PVgmJiFlZShlKSxm PWM9PWg7aWYoZiYmIXMmJiF1KXJldHVybiBNYSh0LGUsYyk7aWYoIW8pe3Zh ciBwPXUmJnJuLmNhbGwodCwiX193cmFwcGVkX18iKSxiPWQmJnJuLmNhbGwo ZSwiX193cmFwcGVkX18iKTtpZihwfHxiKXJldHVybiBhKHA/dC52YWx1ZSgp OnQsYj9lLnZhbHVlKCk6ZSxyLG8saSxuKX1pZighZilyZXR1cm4hMTtpfHwo aT1bXSksbnx8KG49W10pO2Zvcih2YXIgXz1pLmxlbmd0aDtfLS07KWlmKGlb X109PXQpcmV0dXJuIG5bX109PWU7aS5wdXNoKHQpLG4ucHVzaChlKTt2YXIg dj0ocz9WYTpSYSkodCxlLGEscixvLGksbik7cmV0dXJuIGkucG9wKCksbi5w b3AoKSx2fWZ1bmN0aW9uIFZlKHQsZSxhKXt2YXIgcj1lLmxlbmd0aCxvPXIs aT0hYTtpZihudWxsPT10KXJldHVybiFvO2Zvcih0PWRyKHQpO3ItLTspe3Zh ciBuPWVbcl07aWYoaSYmblsyXT9uWzFdIT09dFtuWzBdXTohKG5bMF1pbiB0 KSlyZXR1cm4hMX1mb3IoOysrcjxvOyl7bj1lW3JdO3ZhciBzPW5bMF0sbD10 W3NdLGM9blsxXTtpZihpJiZuWzJdKXtpZihsPT09eSYmIShzIGluIHQpKXJl dHVybiExfWVsc2V7dmFyIGg9YT9hKGwsYyxzKTp5O2lmKCEoaD09PXk/SGUo YyxsLGEsITApOmgpKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBNZSh0 LGUpe3ZhciBhPS0xLHI9SmEodCk/TmkodC5sZW5ndGgpOltdO3JldHVybiBO bih0LGZ1bmN0aW9uKHQsbyxpKXtyWysrYV09ZSh0LG8saSl9KSxyfWZ1bmN0 aW9uIFJlKHQpe3ZhciBlPUdhKHQpO2lmKDE9PWUubGVuZ3RoJiZlWzBdWzJd KXt2YXIgYT1lWzBdWzBdLHI9ZVswXVsxXTtyZXR1cm4gZnVuY3Rpb24odCl7 cmV0dXJuIG51bGw9PXQ/ITE6KHQ9ZHIodCksdFthXT09PXImJihyIT09eXx8 YSBpbiB0KSl9fXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gVmUodCxlKX19 ZnVuY3Rpb24gTmUodCxlKXt2YXIgYT1rcyh0KSxyPWVyKHQpJiZvcihlKSxv PXQrIiI7cmV0dXJuIHQ9ZnIodCksZnVuY3Rpb24oaSl7aWYobnVsbD09aSly ZXR1cm4hMTt2YXIgbj1vO2lmKGk9ZHIoaSksISghYSYmcnx8biBpbiBpKSl7 aWYoaT0xPT10Lmxlbmd0aD9pOnplKGksWWUodCwwLC0xKSksbnVsbD09aSly ZXR1cm4hMTtuPSRyKHQpLGk9ZHIoaSl9cmV0dXJuIGlbbl09PT1lP2UhPT15 fHxuIGluIGk6SGUoZSxpW25dLHksITApfX1mdW5jdGlvbiBLZSh0LGUsYSxy LG8pe2lmKCF6byh0KSlyZXR1cm4gdDt2YXIgaT1KYShlKSYmKGtzKGUpfHxH byhlKSksbj1pP3k6anMoZSk7cmV0dXJuIGllKG58fGUsZnVuY3Rpb24ocyxs KXtpZihuJiYobD1zLHM9ZVtsXSksYihzKSlyfHwocj1bXSksb3x8KG89W10p LFdlKHQsZSxsLEtlLGEscixvKTtlbHNle3ZhciBjPXRbbF0saD1hP2EoYyxz LGwsdCxlKTp5LHU9aD09PXk7dSYmKGg9cyksaD09PXkmJighaXx8bCBpbiB0 KXx8IXUmJihoPT09aD9oPT09YzpjIT09Yyl8fCh0W2xdPWgpfX0pLHR9ZnVu Y3Rpb24gV2UodCxlLGEscixvLGksbil7Zm9yKHZhciBzPWkubGVuZ3RoLGw9 ZVthXTtzLS07KWlmKGlbc109PWwpcmV0dXJuIHZvaWQodFthXT1uW3NdKTt2 YXIgYz10W2FdLGg9bz9vKGMsbCxhLHQsZSk6eSx1PWg9PT15O3UmJihoPWws SmEobCkmJihrcyhsKXx8R28obCkpP2g9a3MoYyk/YzpKYShjKT9vZShjKTpb XTpObyhsKXx8JG8obCk/aD0kbyhjKT9ZbyhjKTpObyhjKT9jOnt9OnU9ITEp LGkucHVzaChsKSxuLnB1c2goaCksdT90W2FdPXIoaCxsLG8saSxuKTooaD09 PWg/aCE9PWM6Yz09PWMpJiYodFthXT1oKX1mdW5jdGlvbiBHZSh0KXtyZXR1 cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/eTpkcihlKVt0XX19ZnVu Y3Rpb24gamUodCl7dmFyIGU9dCsiIjtyZXR1cm4gdD1mcih0KSxmdW5jdGlv bihhKXtyZXR1cm4gemUoYSx0LGUpfX1mdW5jdGlvbiBVZSh0LGUpe2Zvcih2 YXIgYT10P2UubGVuZ3RoOjA7YS0tOyl7dmFyIHI9ZVthXTtpZihyIT1vJiZR YShyKSl7dmFyIG89cjtfbi5jYWxsKHQsciwxKX19cmV0dXJuIHR9ZnVuY3Rp b24gcWUodCxlKXtyZXR1cm4gdCtUbihGbigpKihlLXQrMSkpfWZ1bmN0aW9u IFplKHQsZSxhLHIsbyl7cmV0dXJuIG8odCxmdW5jdGlvbih0LG8saSl7YT1y PyhyPSExLHQpOmUoYSx0LG8saSl9KSxhfWZ1bmN0aW9uIFllKHQsZSxhKXt2 YXIgcj0tMSxvPXQubGVuZ3RoO2U9bnVsbD09ZT8wOitlfHwwLDA+ZSYmKGU9 LWU+bz8wOm8rZSksYT1hPT09eXx8YT5vP286K2F8fDAsMD5hJiYoYSs9byks bz1lPmE/MDphLWU+Pj4wLGU+Pj49MDtmb3IodmFyIGk9Tmkobyk7KytyPG87 KWlbcl09dFtyK2VdO3JldHVybiBpfWZ1bmN0aW9uIFhlKHQsZSl7dmFyIGE7 cmV0dXJuIE5uKHQsZnVuY3Rpb24odCxyLG8pe3JldHVybiBhPWUodCxyLG8p LCFhfSksISFhfWZ1bmN0aW9uIEplKHQsZSl7dmFyIGE9dC5sZW5ndGg7Zm9y KHQuc29ydChlKTthLS07KXRbYV09dFthXS52YWx1ZTtyZXR1cm4gdH1mdW5j dGlvbiBRZSh0LGUsYSl7dmFyIHI9TmEoKSxvPS0xO2U9aGUoZSxmdW5jdGlv bih0KXtyZXR1cm4gcih0KX0pO3ZhciBpPU1lKHQsZnVuY3Rpb24odCl7dmFy IGE9aGUoZSxmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pO3JldHVybntjcml0 ZXJpYTphLGluZGV4Oisrbyx2YWx1ZTp0fX0pO3JldHVybiBKZShpLGZ1bmN0 aW9uKHQsZSl7cmV0dXJuIGModCxlLGEpfSl9ZnVuY3Rpb24gdGEodCxlKXt2 YXIgYT0wO3JldHVybiBObih0LGZ1bmN0aW9uKHQscixvKXthKz0rZSh0LHIs byl8fDB9KSxhfWZ1bmN0aW9uIGVhKHQsZSl7dmFyIGE9LTEsbz1XYSgpLGk9 dC5sZW5ndGgsbj1vPT09cixzPW4mJmk+PUksbD1zP19hKCk6bnVsbCxjPVtd O2w/KG89SnQsbj0hMSk6KHM9ITEsbD1lP1tdOmMpO3Q6Zm9yKDsrK2E8aTsp e3ZhciBoPXRbYV0sdT1lP2UoaCxhLHQpOmg7aWYobiYmaD09PWgpe2Zvcih2 YXIgZD1sLmxlbmd0aDtkLS07KWlmKGxbZF09PT11KWNvbnRpbnVlIHQ7ZSYm bC5wdXNoKHUpLGMucHVzaChoKX1lbHNlIG8obCx1LDApPDAmJigoZXx8cykm JmwucHVzaCh1KSxjLnB1c2goaCkpfXJldHVybiBjfWZ1bmN0aW9uIGFhKHQs ZSl7Zm9yKHZhciBhPS0xLHI9ZS5sZW5ndGgsbz1OaShyKTsrK2E8cjspb1th XT10W2VbYV1dO3JldHVybiBvfWZ1bmN0aW9uIHJhKHQsZSxhLHIpe2Zvcih2 YXIgbz10Lmxlbmd0aCxpPXI/bzotMTsocj9pLS06KytpPG8pJiZlKHRbaV0s aSx0KTspO3JldHVybiBhP1llKHQscj8wOmkscj9pKzE6byk6WWUodCxyP2kr MTowLHI/bzppKX1mdW5jdGlvbiBvYSh0LGUpe3ZhciBhPXQ7YSBpbnN0YW5j ZW9mIGV0JiYoYT1hLnZhbHVlKCkpO2Zvcih2YXIgcj0tMSxvPWUubGVuZ3Ro OysrcjxvOyl7dmFyIGk9ZVtyXTthPWkuZnVuYy5hcHBseShpLnRoaXNBcmcs dWUoW2FdLGkuYXJncykpfXJldHVybiBhfWZ1bmN0aW9uIGlhKHQsZSxhKXt2 YXIgcj0wLG89dD90Lmxlbmd0aDpyO2lmKCJudW1iZXIiPT10eXBlb2YgZSYm ZT09PWUmJkRuPj1vKXtmb3IoO28+cjspe3ZhciBpPXIrbz4+PjEsbj10W2ld OyhhP2U+PW46ZT5uKSYmbnVsbCE9PW4/cj1pKzE6bz1pfXJldHVybiBvfXJl dHVybiBuYSh0LGUsRmksYSl9ZnVuY3Rpb24gbmEodCxlLGEscil7ZT1hKGUp O2Zvcih2YXIgbz0wLGk9dD90Lmxlbmd0aDowLG49ZSE9PWUscz1udWxsPT09 ZSxsPWU9PT15O2k+bzspe3ZhciBjPVRuKChvK2kpLzIpLGg9YSh0W2NdKSx1 PWghPT15LGQ9aD09PWg7aWYobil2YXIgZj1kfHxyO2Vsc2UgZj1zP2QmJnUm JihyfHxudWxsIT1oKTpsP2QmJihyfHx1KTpudWxsPT1oPyExOnI/ZT49aDpl Pmg7Zj9vPWMrMTppPWN9cmV0dXJuIFNuKGksRW4pfWZ1bmN0aW9uIHNhKHQs ZSxhKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdClyZXR1cm4gRmk7aWYoZT09 PXkpcmV0dXJuIHQ7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24o YSl7cmV0dXJuIHQuY2FsbChlLGEpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9u KGEscixvKXtyZXR1cm4gdC5jYWxsKGUsYSxyLG8pfTtjYXNlIDQ6cmV0dXJu IGZ1bmN0aW9uKGEscixvLGkpe3JldHVybiB0LmNhbGwoZSxhLHIsbyxpKX07 Y2FzZSA1OnJldHVybiBmdW5jdGlvbihhLHIsbyxpLG4pe3JldHVybiB0LmNh bGwoZSxhLHIsbyxpLG4pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5h cHBseShlLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGxhKHQpe3ZhciBlPW5ldyBj bih0LmJ5dGVMZW5ndGgpLGE9bmV3IHZuKGUpO3JldHVybiBhLnNldChuZXcg dm4odCkpLGV9ZnVuY3Rpb24gY2EodCxlLGEpe2Zvcih2YXIgcj1hLmxlbmd0 aCxvPS0xLGk9Q24odC5sZW5ndGgtciwwKSxuPS0xLHM9ZS5sZW5ndGgsbD1O aShzK2kpOysrbjxzOylsW25dPWVbbl07Zm9yKDsrK288cjspbFthW29dXT10 W29dO2Zvcig7aS0tOylsW24rK109dFtvKytdO3JldHVybiBsfWZ1bmN0aW9u IGhhKHQsZSxhKXtmb3IodmFyIHI9LTEsbz1hLmxlbmd0aCxpPS0xLG49Q24o dC5sZW5ndGgtbywwKSxzPS0xLGw9ZS5sZW5ndGgsYz1OaShuK2wpOysraTxu OyljW2ldPXRbaV07Zm9yKHZhciBoPWk7KytzPGw7KWNbaCtzXT1lW3NdO2Zv cig7KytyPG87KWNbaCthW3JdXT10W2krK107cmV0dXJuIGN9ZnVuY3Rpb24g dWEodCxlKXtyZXR1cm4gZnVuY3Rpb24oYSxyLG8pe3ZhciBpPWU/ZSgpOnt9 O2lmKHI9TmEocixvLDMpLGtzKGEpKWZvcih2YXIgbj0tMSxzPWEubGVuZ3Ro OysrbjxzOyl7dmFyIGw9YVtuXTt0KGksbCxyKGwsbixhKSxhKX1lbHNlIE5u KGEsZnVuY3Rpb24oZSxhLG8pe3QoaSxlLHIoZSxhLG8pLG8pfSk7cmV0dXJu IGl9fWZ1bmN0aW9uIGRhKHQpe3JldHVybiB3byhmdW5jdGlvbihlLGEpe3Zh ciByPS0xLG89bnVsbD09ZT8wOmEubGVuZ3RoLGk9bz4yP2Fbby0yXTp5LG49 bz4yP2FbMl06eSxzPW8+MT9hW28tMV06eTtmb3IoImZ1bmN0aW9uIj09dHlw ZW9mIGk/KGk9c2EoaSxzLDUpLG8tPTIpOihpPSJmdW5jdGlvbiI9PXR5cGVv ZiBzP3M6eSxvLT1pPzE6MCksbiYmdHIoYVswXSxhWzFdLG4pJiYoaT0zPm8/ eTppLG89MSk7KytyPG87KXt2YXIgbD1hW3JdO2wmJnQoZSxsLGkpfXJldHVy biBlfSl9ZnVuY3Rpb24gZmEodCxlKXtyZXR1cm4gZnVuY3Rpb24oYSxyKXt2 YXIgbz1hP3FuKGEpOjA7aWYoIXJyKG8pKXJldHVybiB0KGEscik7Zm9yKHZh ciBpPWU/bzotMSxuPWRyKGEpOyhlP2ktLTorK2k8bykmJnIobltpXSxpLG4p IT09ITE7KTtyZXR1cm4gYX19ZnVuY3Rpb24gcGEodCl7cmV0dXJuIGZ1bmN0 aW9uKGUsYSxyKXtmb3IodmFyIG89ZHIoZSksaT1yKGUpLG49aS5sZW5ndGgs cz10P246LTE7dD9zLS06KytzPG47KXt2YXIgbD1pW3NdO2lmKGEob1tsXSxs LG8pPT09ITEpYnJlYWt9cmV0dXJuIGV9fWZ1bmN0aW9uIGJhKHQsZSl7ZnVu Y3Rpb24gYSgpe3ZhciBvPXRoaXMmJnRoaXMhPT10ZSYmdGhpcyBpbnN0YW5j ZW9mIGE/cjp0O3JldHVybiBvLmFwcGx5KGUsYXJndW1lbnRzKX12YXIgcj1t YSh0KTtyZXR1cm4gYX1mdW5jdGlvbiBfYSh0KXtyZXR1cm4gZ24mJnBuP25l dyBYdCh0KTpudWxsfWZ1bmN0aW9uIHZhKHQpe3JldHVybiBmdW5jdGlvbihl KXtmb3IodmFyIGE9LTEscj1TaShkaShlKSksbz1yLmxlbmd0aCxpPSIiOysr YTxvOylpPXQoaSxyW2FdLGEpO3JldHVybiBpfX1mdW5jdGlvbiBtYSh0KXty ZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7c3dpdGNoKGUubGVu Z3RoKXtjYXNlIDA6cmV0dXJuIG5ldyB0O2Nhc2UgMTpyZXR1cm4gbmV3IHQo ZVswXSk7Y2FzZSAyOnJldHVybiBuZXcgdChlWzBdLGVbMV0pO2Nhc2UgMzpy ZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3 IHQoZVswXSxlWzFdLGVbMl0sZVszXSk7Y2FzZSA1OnJldHVybiBuZXcgdChl WzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0pO2Nhc2UgNjpyZXR1cm4gbmV3IHQo ZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0pO2Nhc2UgNzpyZXR1cm4g bmV3IHQoZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0sZVs2XSl9dmFy IGE9Um4odC5wcm90b3R5cGUpLHI9dC5hcHBseShhLGUpO3JldHVybiB6byhy KT9yOmF9fWZ1bmN0aW9uIHdhKHQpe2Z1bmN0aW9uIGUoYSxyLG8pe28mJnRy KGEscixvKSYmKHI9eSk7dmFyIGk9SWEoYSx0LHkseSx5LHkseSxyKTtyZXR1 cm4gaS5wbGFjZWhvbGRlcj1lLnBsYWNlaG9sZGVyLGl9cmV0dXJuIGV9ZnVu Y3Rpb24gZ2EodCxlKXtyZXR1cm4gd28oZnVuY3Rpb24oYSl7dmFyIHI9YVsw XTtyZXR1cm4gbnVsbD09cj9yOihhLnB1c2goZSksdC5hcHBseSh5LGEpKX0p fWZ1bmN0aW9uIFRhKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGEscixvKXtpZihv JiZ0cihhLHIsbykmJihyPXkpLHI9TmEocixvLDMpLDE9PXIubGVuZ3RoKXth PWtzKGEpP2E6dXIoYSk7dmFyIGk9bGUoYSxyLHQsZSk7aWYoIWEubGVuZ3Ro fHxpIT09ZSlyZXR1cm4gaX1yZXR1cm4gJGUoYSxyLHQsZSl9fWZ1bmN0aW9u IHhhKHQsYSl7cmV0dXJuIGZ1bmN0aW9uKHIsbyxpKXtpZihvPU5hKG8saSwz KSxrcyhyKSl7dmFyIG49ZShyLG8sYSk7cmV0dXJuIG4+LTE/cltuXTp5fXJl dHVybiBMZShyLG8sdCl9fWZ1bmN0aW9uIHlhKHQpe3JldHVybiBmdW5jdGlv bihhLHIsbyl7cmV0dXJuIGEmJmEubGVuZ3RoPyhyPU5hKHIsbywzKSxlKGEs cix0KSk6LTF9fWZ1bmN0aW9uIEJhKHQpe3JldHVybiBmdW5jdGlvbihlLGEs cil7cmV0dXJuIGE9TmEoYSxyLDMpLExlKGUsYSx0LCEwKX19ZnVuY3Rpb24g Q2EodCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlLGE9YXJndW1lbnRz Lmxlbmd0aCxyPXQ/YTotMSxvPTAsaT1OaShhKTt0P3ItLTorK3I8YTspe3Zh ciBuPWlbbysrXT1hcmd1bWVudHNbcl07aWYoImZ1bmN0aW9uIiE9dHlwZW9m IG4pdGhyb3cgbmV3IFhpKFIpOyFlJiZRLnByb3RvdHlwZS50aHJ1JiYid3Jh cHBlciI9PUthKG4pJiYoZT1uZXcgUShbXSwhMCkpfWZvcihyPWU/LTE6YTsr K3I8YTspe249aVtyXTt2YXIgcz1LYShuKSxsPSJ3cmFwcGVyIj09cz9Vbihu KTp5O2U9bCYmYXIobFswXSkmJmxbMV09PShBfFB8THxFKSYmIWxbNF0ubGVu Z3RoJiYxPT1sWzldP2VbS2EobFswXSldLmFwcGx5KGUsbFszXSk6MT09bi5s ZW5ndGgmJmFyKG4pP2Vbc10oKTplLnRocnUobil9cmV0dXJuIGZ1bmN0aW9u KCl7dmFyIHQ9YXJndW1lbnRzLHI9dFswXTtpZihlJiYxPT10Lmxlbmd0aCYm a3MocikmJnIubGVuZ3RoPj1JKXJldHVybiBlLnBsYW50KHIpLnZhbHVlKCk7 Zm9yKHZhciBvPTAsbj1hP2lbb10uYXBwbHkodGhpcyx0KTpyOysrbzxhOylu PWlbb10uY2FsbCh0aGlzLG4pO3JldHVybiBufX19ZnVuY3Rpb24gU2EodCxl KXtyZXR1cm4gZnVuY3Rpb24oYSxyLG8pe3JldHVybiJmdW5jdGlvbiI9PXR5 cGVvZiByJiZvPT09eSYma3MoYSk/dChhLHIpOmUoYSxzYShyLG8sMykpfX1m dW5jdGlvbiAkYSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxhLHIpe3JldHVybigi ZnVuY3Rpb24iIT10eXBlb2YgYXx8ciE9PXkpJiYoYT1zYShhLHIsMykpLHQo ZSxhLGFpKX19ZnVuY3Rpb24gUGEodCl7cmV0dXJuIGZ1bmN0aW9uKGUsYSxy KXtyZXR1cm4oImZ1bmN0aW9uIiE9dHlwZW9mIGF8fHIhPT15KSYmKGE9c2Eo YSxyLDMpKSx0KGUsYSl9fWZ1bmN0aW9uIEZhKHQpe3JldHVybiBmdW5jdGlv bihlLGEscil7dmFyIG89e307cmV0dXJuIGE9TmEoYSxyLDMpLEVlKGUsZnVu Y3Rpb24oZSxyLGkpe3ZhciBuPWEoZSxyLGkpO3I9dD9uOnIsZT10P2U6bixv W3JdPWV9KSxvfX1mdW5jdGlvbiBMYSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxh LHIpe3JldHVybiBlPWkoZSksKHQ/ZToiIikrRGEoZSxhLHIpKyh0PyIiOmUp fX1mdW5jdGlvbiBPYSh0KXt2YXIgZT13byhmdW5jdGlvbihhLHIpe3ZhciBv PXYocixlLnBsYWNlaG9sZGVyKTtyZXR1cm4gSWEoYSx0LHkscixvKX0pO3Jl dHVybiBlfWZ1bmN0aW9uIEFhKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGEscixv LGkpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4iZnVuY3Rpb24i PT10eXBlb2YgciYmaT09PXkmJmtzKGEpP3QoYSxyLG8sbik6WmUoYSxOYShy LGksNCksbyxuLGUpfX1mdW5jdGlvbiBFYSh0LGUsYSxyLG8saSxuLHMsbCxj KXtmdW5jdGlvbiBoKCl7Zm9yKHZhciB3PWFyZ3VtZW50cy5sZW5ndGgsZz13 LFQ9Tmkodyk7Zy0tOylUW2ddPWFyZ3VtZW50c1tnXTtpZihyJiYoVD1jYShU LHIsbykpLGkmJihUPWhhKFQsaSxuKSkscHx8Xyl7dmFyIHg9aC5wbGFjZWhv bGRlcixCPXYoVCx4KTtpZih3LT1CLmxlbmd0aCxjPncpe3ZhciAkPXM/b2Uo cyk6eSxQPUNuKGMtdywwKSxGPXA/Qjp5LEE9cD95OkIsRT1wP1Q6eSxEPXA/ eTpUO2V8PXA/TDpPLGUmPX4ocD9POkwpLGJ8fChlJj1+KEN8UykpO3ZhciBr PVt0LGUsYSxFLEYsRCxBLCQsbCxQXSx6PUVhLmFwcGx5KHksayk7cmV0dXJu IGFyKHQpJiZabih6LGspLHoucGxhY2Vob2xkZXI9eCx6fX12YXIgSD1kP2E6 dGhpcyxJPWY/SFt0XTp0O3JldHVybiBzJiYoVD1jcihULHMpKSx1JiZsPFQu bGVuZ3RoJiYoVC5sZW5ndGg9bCksdGhpcyYmdGhpcyE9PXRlJiZ0aGlzIGlu c3RhbmNlb2YgaCYmKEk9bXx8bWEodCkpLEkuYXBwbHkoSCxUKX12YXIgdT1l JkEsZD1lJkMsZj1lJlMscD1lJlAsYj1lJiQsXz1lJkYsbT1mP3k6bWEodCk7 cmV0dXJuIGh9ZnVuY3Rpb24gRGEodCxlLGEpe3ZhciByPXQubGVuZ3RoO2lm KGU9K2Uscj49ZXx8IXluKGUpKXJldHVybiIiO3ZhciBvPWUtcjtyZXR1cm4g YT1udWxsPT1hPyIgIjphKyIiLG1pKGEsd24oby9hLmxlbmd0aCkpLnNsaWNl KDAsbyl9ZnVuY3Rpb24ga2EodCxlLGEscil7ZnVuY3Rpb24gbygpe2Zvcih2 YXIgZT0tMSxzPWFyZ3VtZW50cy5sZW5ndGgsbD0tMSxjPXIubGVuZ3RoLGg9 TmkoYytzKTsrK2w8YzspaFtsXT1yW2xdO2Zvcig7cy0tOyloW2wrK109YXJn dW1lbnRzWysrZV07dmFyIHU9dGhpcyYmdGhpcyE9PXRlJiZ0aGlzIGluc3Rh bmNlb2Ygbz9uOnQ7cmV0dXJuIHUuYXBwbHkoaT9hOnRoaXMsaCl9dmFyIGk9 ZSZDLG49bWEodCk7cmV0dXJuIG99ZnVuY3Rpb24gemEodCl7dmFyIGU9amlb dF07cmV0dXJuIGZ1bmN0aW9uKHQsYSl7cmV0dXJuIGE9YT09PXk/MDorYXx8 MCxhPyhhPWRuKDEwLGEpLGUodCphKS9hKTplKHQpfX1mdW5jdGlvbiBIYSh0 KXtyZXR1cm4gZnVuY3Rpb24oZSxhLHIsbyl7dmFyIGk9TmEocik7cmV0dXJu IG51bGw9PXImJmk9PT14ZT9pYShlLGEsdCk6bmEoZSxhLGkocixvLDEpLHQp fX1mdW5jdGlvbiBJYSh0LGUsYSxyLG8saSxuLHMpe3ZhciBsPWUmUztpZigh bCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFhpKFIpO3ZhciBj PXI/ci5sZW5ndGg6MDtpZihjfHwoZSY9fihMfE8pLHI9bz15KSxjLT1vP28u bGVuZ3RoOjAsZSZPKXt2YXIgaD1yLHU9bztyPW89eX12YXIgZD1sP3k6VW4o dCksZj1bdCxlLGEscixvLGgsdSxpLG4sc107aWYoZCYmKGlyKGYsZCksZT1m WzFdLHM9Zls5XSksZls5XT1udWxsPT1zP2w/MDp0Lmxlbmd0aDpDbihzLWMs MCl8fDAsZT09Qyl2YXIgcD1iYShmWzBdLGZbMl0pO2Vsc2UgcD1lIT1MJiZl IT0oQ3xMKXx8Zls0XS5sZW5ndGg/RWEuYXBwbHkoeSxmKTprYS5hcHBseSh5 LGYpO3ZhciBiPWQ/am46Wm47cmV0dXJuIGIocCxmKX1mdW5jdGlvbiBWYSh0 LGUsYSxyLG8saSxuKXt2YXIgcz0tMSxsPXQubGVuZ3RoLGM9ZS5sZW5ndGg7 aWYobCE9YyYmIShvJiZjPmwpKXJldHVybiExO2Zvcig7KytzPGw7KXt2YXIg aD10W3NdLHU9ZVtzXSxkPXI/cihvP3U6aCxvP2g6dSxzKTp5O2lmKGQhPT15 KXtpZihkKWNvbnRpbnVlO3JldHVybiExfWlmKG8pe2lmKCFwZShlLGZ1bmN0 aW9uKHQpe3JldHVybiBoPT09dHx8YShoLHQscixvLGksbil9KSlyZXR1cm4h MX1lbHNlIGlmKGghPT11JiYhYShoLHUscixvLGksbikpcmV0dXJuITF9cmV0 dXJuITB9ZnVuY3Rpb24gTWEodCxlLGEpe3N3aXRjaChhKXtjYXNlIEc6Y2Fz ZSBqOnJldHVybit0PT0rZTtjYXNlIFU6cmV0dXJuIHQubmFtZT09ZS5uYW1l JiZ0Lm1lc3NhZ2U9PWUubWVzc2FnZTtjYXNlIFk6cmV0dXJuIHQhPSt0P2Uh PStlOnQ9PStlO2Nhc2UgSjpjYXNlIHR0OnJldHVybiB0PT1lKyIifXJldHVy biExfWZ1bmN0aW9uIFJhKHQsZSxhLHIsbyxpLG4pe3ZhciBzPWpzKHQpLGw9 cy5sZW5ndGgsYz1qcyhlKSxoPWMubGVuZ3RoO2lmKGwhPWgmJiFvKXJldHVy biExO2Zvcih2YXIgdT1sO3UtLTspe3ZhciBkPXNbdV07aWYoIShvP2QgaW4g ZTpybi5jYWxsKGUsZCkpKXJldHVybiExfWZvcih2YXIgZj1vOysrdTxsOyl7 ZD1zW3VdO3ZhciBwPXRbZF0sYj1lW2RdLF89cj9yKG8/YjpwLG8/cDpiLGQp Onk7aWYoIShfPT09eT9hKHAsYixyLG8saSxuKTpfKSlyZXR1cm4hMTtmfHwo Zj0iY29uc3RydWN0b3IiPT1kKX1pZighZil7dmFyIHY9dC5jb25zdHJ1Y3Rv cixtPWUuY29uc3RydWN0b3I7aWYodiE9bSYmImNvbnN0cnVjdG9yImluIHQm JiJjb25zdHJ1Y3RvciJpbiBlJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiB2JiZ2 IGluc3RhbmNlb2YgdiYmImZ1bmN0aW9uIj09dHlwZW9mIG0mJm0gaW5zdGFu Y2VvZiBtKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBOYSh0LGUsYSl7 dmFyIHI9Xy5jYWxsYmFja3x8JGk7cmV0dXJuIHI9cj09PSRpP3hlOnIsYT9y KHQsZSxhKTpyfWZ1bmN0aW9uIEthKHQpe2Zvcih2YXIgZT10Lm5hbWUrIiIs YT1IbltlXSxyPWE/YS5sZW5ndGg6MDtyLS07KXt2YXIgbz1hW3JdLGk9by5m dW5jO2lmKG51bGw9PWl8fGk9PXQpcmV0dXJuIG8ubmFtZX1yZXR1cm4gZX1m dW5jdGlvbiBXYSh0LGUsYSl7dmFyIG89Xy5pbmRleE9mfHxDcjtyZXR1cm4g bz1vPT09Q3I/cjpvLHQ/byh0LGUsYSk6b31mdW5jdGlvbiBHYSh0KXtmb3Io dmFyIGU9cmkodCksYT1lLmxlbmd0aDthLS07KWVbYV1bMl09b3IoZVthXVsx XSk7cmV0dXJuIGV9ZnVuY3Rpb24gamEodCxlKXt2YXIgYT1udWxsPT10P3k6 dFtlXTtyZXR1cm4gVm8oYSk/YTp5fWZ1bmN0aW9uIFVhKHQsZSxhKXtmb3Io dmFyIHI9LTEsbz1hLmxlbmd0aDsrK3I8bzspe3ZhciBpPWFbcl0sbj1pLnNp emU7c3dpdGNoKGkudHlwZSl7Y2FzZSJkcm9wIjp0Kz1uO2JyZWFrO2Nhc2Ui ZHJvcFJpZ2h0IjplLT1uO2JyZWFrO2Nhc2UidGFrZSI6ZT1TbihlLHQrbik7 YnJlYWs7Y2FzZSJ0YWtlUmlnaHQiOnQ9Q24odCxlLW4pfX1yZXR1cm57c3Rh cnQ6dCxlbmQ6ZX19ZnVuY3Rpb24gcWEodCl7dmFyIGU9dC5sZW5ndGgsYT1u ZXcgdC5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gZSYmInN0cmluZyI9PXR5cGVv ZiB0WzBdJiZybi5jYWxsKHQsImluZGV4IikmJihhLmluZGV4PXQuaW5kZXgs YS5pbnB1dD10LmlucHV0KSxhfWZ1bmN0aW9uIFphKHQpe3ZhciBlPXQuY29u c3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUgaW5zdGFu Y2VvZiBlfHwoZT1xaSksbmV3IGV9ZnVuY3Rpb24gWWEodCxlLGEpe3ZhciBy PXQuY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UgYXQ6cmV0dXJuIGxhKHQp O2Nhc2UgRzpjYXNlIGo6cmV0dXJuIG5ldyByKCt0KTtjYXNlIHJ0OmNhc2Ug b3Q6Y2FzZSBpdDpjYXNlIG50OmNhc2Ugc3Q6Y2FzZSBsdDpjYXNlIGN0OmNh c2UgaHQ6Y2FzZSB1dDpyIGluc3RhbmNlb2YgciYmKHI9SW5bZV0pO3ZhciBv PXQuYnVmZmVyO3JldHVybiBuZXcgcihhP2xhKG8pOm8sdC5ieXRlT2Zmc2V0 LHQubGVuZ3RoKTtjYXNlIFk6Y2FzZSB0dDpyZXR1cm4gbmV3IHIodCk7Y2Fz ZSBKOnZhciBpPW5ldyByKHQuc291cmNlLEx0LmV4ZWModCkpO2kubGFzdElu ZGV4PXQubGFzdEluZGV4fXJldHVybiBpfWZ1bmN0aW9uIFhhKHQsZSxhKXtu dWxsPT10fHxlcihlLHQpfHwoZT1mcihlKSx0PTE9PWUubGVuZ3RoP3Q6emUo dCxZZShlLDAsLTEpKSxlPSRyKGUpKTt2YXIgcj1udWxsPT10P3Q6dFtlXTty ZXR1cm4gbnVsbD09cj95OnIuYXBwbHkodCxhKX1mdW5jdGlvbiBKYSh0KXty ZXR1cm4gbnVsbCE9dCYmcnIocW4odCkpfWZ1bmN0aW9uIFFhKHQsZSl7cmV0 dXJuIHQ9Im51bWJlciI9PXR5cGVvZiB0fHxFdC50ZXN0KHQpPyt0Oi0xLGU9 bnVsbD09ZT9rbjplLHQ+LTEmJnQlMT09MCYmZT50fWZ1bmN0aW9uIHRyKHQs ZSxhKXtpZighem8oYSkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIGU7aWYoIm51 bWJlciI9PXI/SmEoYSkmJlFhKGUsYS5sZW5ndGgpOiJzdHJpbmciPT1yJiZl IGluIGEpe3ZhciBvPWFbZV07cmV0dXJuIHQ9PT10P3Q9PT1vOm8hPT1vfXJl dHVybiExfWZ1bmN0aW9uIGVyKHQsZSl7dmFyIGE9dHlwZW9mIHQ7aWYoInN0 cmluZyI9PWEmJnl0LnRlc3QodCl8fCJudW1iZXIiPT1hKXJldHVybiEwO2lm KGtzKHQpKXJldHVybiExO3ZhciByPSF4dC50ZXN0KHQpO3JldHVybiByfHxu dWxsIT1lJiZ0IGluIGRyKGUpfWZ1bmN0aW9uIGFyKHQpe3ZhciBlPUthKHQp LGE9X1tlXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgYXx8IShlIGluIGV0LnBy b3RvdHlwZSkpcmV0dXJuITE7aWYodD09PWEpcmV0dXJuITA7dmFyIHI9VW4o YSk7cmV0dXJuISFyJiZ0PT09clswXX1mdW5jdGlvbiBycih0KXtyZXR1cm4i bnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYma24+PXR9ZnVuY3Rp b24gb3IodCl7cmV0dXJuIHQ9PT10JiYhem8odCl9ZnVuY3Rpb24gaXIodCxl KXt2YXIgYT10WzFdLHI9ZVsxXSxvPWF8cixpPUE+byxuPXI9PUEmJmE9PVB8 fHI9PUEmJmE9PUUmJnRbN10ubGVuZ3RoPD1lWzhdfHxyPT0oQXxFKSYmYT09 UDtpZighaSYmIW4pcmV0dXJuIHQ7ciZDJiYodFsyXT1lWzJdLG98PWEmQz8w OiQpO3ZhciBzPWVbM107aWYocyl7dmFyIGw9dFszXTt0WzNdPWw/Y2EobCxz LGVbNF0pOm9lKHMpLHRbNF09bD92KHRbM10sTik6b2UoZVs0XSl9cmV0dXJu IHM9ZVs1XSxzJiYobD10WzVdLHRbNV09bD9oYShsLHMsZVs2XSk6b2Uocyks dFs2XT1sP3YodFs1XSxOKTpvZShlWzZdKSkscz1lWzddLHMmJih0WzddPW9l KHMpKSxyJkEmJih0WzhdPW51bGw9PXRbOF0/ZVs4XTpTbih0WzhdLGVbOF0p KSxudWxsPT10WzldJiYodFs5XT1lWzldKSx0WzBdPWVbMF0sdFsxXT1vLHR9 ZnVuY3Rpb24gbnIodCxlKXtyZXR1cm4gdD09PXk/ZTp6cyh0LGUsbnIpfWZ1 bmN0aW9uIHNyKHQsZSl7dD1kcih0KTtmb3IodmFyIGE9LTEscj1lLmxlbmd0 aCxvPXt9OysrYTxyOyl7dmFyIGk9ZVthXTtpIGluIHQmJihvW2ldPXRbaV0p fXJldHVybiBvfWZ1bmN0aW9uIGxyKHQsZSl7dmFyIGE9e307cmV0dXJuIEFl KHQsZnVuY3Rpb24odCxyLG8pe2UodCxyLG8pJiYoYVtyXT10KX0pLGF9ZnVu Y3Rpb24gY3IodCxlKXtmb3IodmFyIGE9dC5sZW5ndGgscj1TbihlLmxlbmd0 aCxhKSxvPW9lKHQpO3ItLTspe3ZhciBpPWVbcl07dFtyXT1RYShpLGEpP29b aV06eX1yZXR1cm4gdH1mdW5jdGlvbiBocih0KXtmb3IodmFyIGU9YWkodCks YT1lLmxlbmd0aCxyPWEmJnQubGVuZ3RoLG89ISFyJiZycihyKSYmKGtzKHQp fHwkbyh0KXx8V28odCkpLGk9LTEsbj1bXTsrK2k8YTspe3ZhciBzPWVbaV07 KG8mJlFhKHMscil8fHJuLmNhbGwodCxzKSkmJm4ucHVzaChzKX1yZXR1cm4g bn1mdW5jdGlvbiB1cih0KXtyZXR1cm4gbnVsbD09dD9bXTpKYSh0KT9fLnN1 cHBvcnQudW5pbmRleGVkQ2hhcnMmJldvKHQpP3Quc3BsaXQoIiIpOnpvKHQp P3Q6cWkodCk6c2kodCl9ZnVuY3Rpb24gZHIodCl7aWYoXy5zdXBwb3J0LnVu aW5kZXhlZENoYXJzJiZXbyh0KSl7Zm9yKHZhciBlPS0xLGE9dC5sZW5ndGgs cj1xaSh0KTsrK2U8YTspcltlXT10LmNoYXJBdChlKTtyZXR1cm4gcn1yZXR1 cm4gem8odCk/dDpxaSh0KX1mdW5jdGlvbiBmcih0KXtpZihrcyh0KSlyZXR1 cm4gdDt2YXIgZT1bXTtyZXR1cm4gaSh0KS5yZXBsYWNlKEJ0LGZ1bmN0aW9u KHQsYSxyLG8pe2UucHVzaChyP28ucmVwbGFjZShQdCwiJDEiKTphfHx0KX0p LGV9ZnVuY3Rpb24gcHIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBldD90LmNs b25lKCk6bmV3IFEodC5fX3dyYXBwZWRfXyx0Ll9fY2hhaW5fXyxvZSh0Ll9f YWN0aW9uc19fKSl9ZnVuY3Rpb24gYnIodCxlLGEpe2U9KGE/dHIodCxlLGEp Om51bGw9PWUpPzE6Q24oVG4oZSl8fDEsMSk7Zm9yKHZhciByPTAsbz10P3Qu bGVuZ3RoOjAsaT0tMSxuPU5pKHduKG8vZSkpO28+cjspblsrK2ldPVllKHQs cixyKz1lKTtyZXR1cm4gbn1mdW5jdGlvbiBfcih0KXtmb3IodmFyIGU9LTEs YT10P3QubGVuZ3RoOjAscj0tMSxvPVtdOysrZTxhOyl7dmFyIGk9dFtlXTtp JiYob1srK3JdPWkpfXJldHVybiBvfWZ1bmN0aW9uIHZyKHQsZSxhKXt2YXIg cj10P3QubGVuZ3RoOjA7cmV0dXJuIHI/KChhP3RyKHQsZSxhKTpudWxsPT1l KSYmKGU9MSksWWUodCwwPmU/MDplKSk6W119ZnVuY3Rpb24gbXIodCxlLGEp e3ZhciByPXQ/dC5sZW5ndGg6MDtyZXR1cm4gcj8oKGE/dHIodCxlLGEpOm51 bGw9PWUpJiYoZT0xKSwKIGU9ci0oK2V8fDApLFllKHQsMCwwPmU/MDplKSk6 W119ZnVuY3Rpb24gd3IodCxlLGEpe3JldHVybiB0JiZ0Lmxlbmd0aD9yYSh0 LE5hKGUsYSwzKSwhMCwhMCk6W119ZnVuY3Rpb24gZ3IodCxlLGEpe3JldHVy biB0JiZ0Lmxlbmd0aD9yYSh0LE5hKGUsYSwzKSwhMCk6W119ZnVuY3Rpb24g VHIodCxlLGEscil7dmFyIG89dD90Lmxlbmd0aDowO3JldHVybiBvPyhhJiYi bnVtYmVyIiE9dHlwZW9mIGEmJnRyKHQsZSxhKSYmKGE9MCxyPW8pLFBlKHQs ZSxhLHIpKTpbXX1mdW5jdGlvbiB4cih0KXtyZXR1cm4gdD90WzBdOnl9ZnVu Y3Rpb24geXIodCxlLGEpe3ZhciByPXQ/dC5sZW5ndGg6MDtyZXR1cm4gYSYm dHIodCxlLGEpJiYoZT0hMSkscj9PZSh0LGUpOltdfWZ1bmN0aW9uIEJyKHQp e3ZhciBlPXQ/dC5sZW5ndGg6MDtyZXR1cm4gZT9PZSh0LCEwKTpbXX1mdW5j dGlvbiBDcih0LGUsYSl7dmFyIG89dD90Lmxlbmd0aDowO2lmKCFvKXJldHVy bi0xO2lmKCJudW1iZXIiPT10eXBlb2YgYSlhPTA+YT9DbihvK2EsMCk6YTtl bHNlIGlmKGEpe3ZhciBpPWlhKHQsZSk7cmV0dXJuIG8+aSYmKGU9PT1lP2U9 PT10W2ldOnRbaV0hPT10W2ldKT9pOi0xfXJldHVybiByKHQsZSxhfHwwKX1m dW5jdGlvbiBTcih0KXtyZXR1cm4gbXIodCwxKX1mdW5jdGlvbiAkcih0KXt2 YXIgZT10P3QubGVuZ3RoOjA7cmV0dXJuIGU/dFtlLTFdOnl9ZnVuY3Rpb24g UHIodCxlLGEpe3ZhciByPXQ/dC5sZW5ndGg6MDtpZighcilyZXR1cm4tMTt2 YXIgbz1yO2lmKCJudW1iZXIiPT10eXBlb2YgYSlvPSgwPmE/Q24ocithLDAp OlNuKGF8fDAsci0xKSkrMTtlbHNlIGlmKGEpe289aWEodCxlLCEwKS0xO3Zh ciBpPXRbb107cmV0dXJuKGU9PT1lP2U9PT1pOmkhPT1pKT9vOi0xfWlmKGUh PT1lKXJldHVybiBwKHQsbywhMCk7Zm9yKDtvLS07KWlmKHRbb109PT1lKXJl dHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIEZyKCl7dmFyIHQ9YXJndW1lbnRz LGU9dFswXTtpZighZXx8IWUubGVuZ3RoKXJldHVybiBlO2Zvcih2YXIgYT0w LHI9V2EoKSxvPXQubGVuZ3RoOysrYTxvOylmb3IodmFyIGk9MCxuPXRbYV07 KGk9cihlLG4saSkpPi0xOylfbi5jYWxsKGUsaSwxKTtyZXR1cm4gZX1mdW5j dGlvbiBMcih0LGUsYSl7dmFyIHI9W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1 cm4gcjt2YXIgbz0tMSxpPVtdLG49dC5sZW5ndGg7Zm9yKGU9TmEoZSxhLDMp OysrbzxuOyl7dmFyIHM9dFtvXTtlKHMsbyx0KSYmKHIucHVzaChzKSxpLnB1 c2gobykpfXJldHVybiBVZSh0LGkpLHJ9ZnVuY3Rpb24gT3IodCl7cmV0dXJu IHZyKHQsMSl9ZnVuY3Rpb24gQXIodCxlLGEpe3ZhciByPXQ/dC5sZW5ndGg6 MDtyZXR1cm4gcj8oYSYmIm51bWJlciIhPXR5cGVvZiBhJiZ0cih0LGUsYSkm JihlPTAsYT1yKSxZZSh0LGUsYSkpOltdfWZ1bmN0aW9uIEVyKHQsZSxhKXt2 YXIgcj10P3QubGVuZ3RoOjA7cmV0dXJuIHI/KChhP3RyKHQsZSxhKTpudWxs PT1lKSYmKGU9MSksWWUodCwwLDA+ZT8wOmUpKTpbXX1mdW5jdGlvbiBEcih0 LGUsYSl7dmFyIHI9dD90Lmxlbmd0aDowO3JldHVybiByPygoYT90cih0LGUs YSk6bnVsbD09ZSkmJihlPTEpLGU9ci0oK2V8fDApLFllKHQsMD5lPzA6ZSkp OltdfWZ1bmN0aW9uIGtyKHQsZSxhKXtyZXR1cm4gdCYmdC5sZW5ndGg/cmEo dCxOYShlLGEsMyksITEsITApOltdfWZ1bmN0aW9uIHpyKHQsZSxhKXtyZXR1 cm4gdCYmdC5sZW5ndGg/cmEodCxOYShlLGEsMykpOltdfWZ1bmN0aW9uIEhy KHQsZSxhLG8pe3ZhciBpPXQ/dC5sZW5ndGg6MDtpZighaSlyZXR1cm5bXTtu dWxsIT1lJiYiYm9vbGVhbiIhPXR5cGVvZiBlJiYobz1hLGE9dHIodCxlLG8p P3k6ZSxlPSExKTt2YXIgbj1OYSgpO3JldHVybihudWxsIT1hfHxuIT09eGUp JiYoYT1uKGEsbywzKSksZSYmV2EoKT09PXI/bSh0LGEpOmVhKHQsYSl9ZnVu Y3Rpb24gSXIodCl7aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm5bXTt2YXIgZT0t MSxhPTA7dD1jZSh0LGZ1bmN0aW9uKHQpe3JldHVybiBKYSh0KT8oYT1Dbih0 Lmxlbmd0aCxhKSwhMCk6dm9pZCAwfSk7Zm9yKHZhciByPU5pKGEpOysrZTxh OylyW2VdPWhlKHQsR2UoZSkpO3JldHVybiByfWZ1bmN0aW9uIFZyKHQsZSxh KXt2YXIgcj10P3QubGVuZ3RoOjA7aWYoIXIpcmV0dXJuW107dmFyIG89SXIo dCk7cmV0dXJuIG51bGw9PWU/bzooZT1zYShlLGEsNCksaGUobyxmdW5jdGlv bih0KXtyZXR1cm4gZGUodCxlLHksITApfSkpfWZ1bmN0aW9uIE1yKCl7Zm9y KHZhciB0PS0xLGU9YXJndW1lbnRzLmxlbmd0aDsrK3Q8ZTspe3ZhciBhPWFy Z3VtZW50c1t0XTtpZihKYShhKSl2YXIgcj1yP3VlKENlKHIsYSksQ2UoYSxy KSk6YX1yZXR1cm4gcj9lYShyKTpbXX1mdW5jdGlvbiBScih0LGUpe3ZhciBh PS0xLHI9dD90Lmxlbmd0aDowLG89e307Zm9yKCFyfHxlfHxrcyh0WzBdKXx8 KGU9W10pOysrYTxyOyl7dmFyIGk9dFthXTtlP29baV09ZVthXTppJiYob1tp WzBdXT1pWzFdKX1yZXR1cm4gb31mdW5jdGlvbiBOcih0KXt2YXIgZT1fKHQp O3JldHVybiBlLl9fY2hhaW5fXz0hMCxlfWZ1bmN0aW9uIEtyKHQsZSxhKXty ZXR1cm4gZS5jYWxsKGEsdCksdH1mdW5jdGlvbiBXcih0LGUsYSl7cmV0dXJu IGUuY2FsbChhLHQpfWZ1bmN0aW9uIEdyKCl7cmV0dXJuIE5yKHRoaXMpfWZ1 bmN0aW9uIGpyKCl7cmV0dXJuIG5ldyBRKHRoaXMudmFsdWUoKSx0aGlzLl9f Y2hhaW5fXyl9ZnVuY3Rpb24gVXIodCl7Zm9yKHZhciBlLGE9dGhpczthIGlu c3RhbmNlb2YgWjspe3ZhciByPXByKGEpO2U/by5fX3dyYXBwZWRfXz1yOmU9 cjt2YXIgbz1yO2E9YS5fX3dyYXBwZWRfX31yZXR1cm4gby5fX3dyYXBwZWRf Xz10LGV9ZnVuY3Rpb24gcXIoKXt2YXIgdD10aGlzLl9fd3JhcHBlZF9fLGU9 ZnVuY3Rpb24odCl7cmV0dXJuIHQucmV2ZXJzZSgpfTtpZih0IGluc3RhbmNl b2YgZXQpe3ZhciBhPXQ7cmV0dXJuIHRoaXMuX19hY3Rpb25zX18ubGVuZ3Ro JiYoYT1uZXcgZXQodGhpcykpLGE9YS5yZXZlcnNlKCksYS5fX2FjdGlvbnNf Xy5wdXNoKHtmdW5jOldyLGFyZ3M6W2VdLHRoaXNBcmc6eX0pLG5ldyBRKGEs dGhpcy5fX2NoYWluX18pfXJldHVybiB0aGlzLnRocnUoZSl9ZnVuY3Rpb24g WnIoKXtyZXR1cm4gdGhpcy52YWx1ZSgpKyIifWZ1bmN0aW9uIFlyKCl7cmV0 dXJuIG9hKHRoaXMuX193cmFwcGVkX18sdGhpcy5fX2FjdGlvbnNfXyl9ZnVu Y3Rpb24gWHIodCxlLGEpe3ZhciByPWtzKHQpP3NlOlNlO3JldHVybiBhJiZ0 cih0LGUsYSkmJihlPXkpLCgiZnVuY3Rpb24iIT10eXBlb2YgZXx8YSE9PXkp JiYoZT1OYShlLGEsMykpLHIodCxlKX1mdW5jdGlvbiBKcih0LGUsYSl7dmFy IHI9a3ModCk/Y2U6RmU7cmV0dXJuIGU9TmEoZSxhLDMpLHIodCxlKX1mdW5j dGlvbiBRcih0LGUpe3JldHVybiBocyh0LFJlKGUpKX1mdW5jdGlvbiB0byh0 LGUsYSxyKXt2YXIgbz10P3FuKHQpOjA7cmV0dXJuIHJyKG8pfHwodD1zaSh0 KSxvPXQubGVuZ3RoKSxhPSJudW1iZXIiIT10eXBlb2YgYXx8ciYmdHIoZSxh LHIpPzA6MD5hP0NuKG8rYSwwKTphfHwwLCJzdHJpbmciPT10eXBlb2YgdHx8 IWtzKHQpJiZXbyh0KT9vPj1hJiZ0LmluZGV4T2YoZSxhKT4tMTohIW8mJldh KHQsZSxhKT4tMX1mdW5jdGlvbiBlbyh0LGUsYSl7dmFyIHI9a3ModCk/aGU6 TWU7cmV0dXJuIGU9TmEoZSxhLDMpLHIodCxlKX1mdW5jdGlvbiBhbyh0LGUp e3JldHVybiBlbyh0LGtpKGUpKX1mdW5jdGlvbiBybyh0LGUsYSl7dmFyIHI9 a3ModCk/Y2U6RmU7cmV0dXJuIGU9TmEoZSxhLDMpLHIodCxmdW5jdGlvbih0 LGEscil7cmV0dXJuIWUodCxhLHIpfSl9ZnVuY3Rpb24gb28odCxlLGEpe2lm KGE/dHIodCxlLGEpOm51bGw9PWUpe3Q9dXIodCk7dmFyIHI9dC5sZW5ndGg7 cmV0dXJuIHI+MD90W3FlKDAsci0xKV06eX12YXIgbz0tMSxpPVpvKHQpLHI9 aS5sZW5ndGgsbj1yLTE7Zm9yKGU9U24oMD5lPzA6K2V8fDAscik7KytvPGU7 KXt2YXIgcz1xZShvLG4pLGw9aVtzXTtpW3NdPWlbb10saVtvXT1sfXJldHVy biBpLmxlbmd0aD1lLGl9ZnVuY3Rpb24gaW8odCl7cmV0dXJuIG9vKHQsT24p fWZ1bmN0aW9uIG5vKHQpe3ZhciBlPXQ/cW4odCk6MDtyZXR1cm4gcnIoZSk/ ZTpqcyh0KS5sZW5ndGh9ZnVuY3Rpb24gc28odCxlLGEpe3ZhciByPWtzKHQp P3BlOlhlO3JldHVybiBhJiZ0cih0LGUsYSkmJihlPXkpLCgiZnVuY3Rpb24i IT10eXBlb2YgZXx8YSE9PXkpJiYoZT1OYShlLGEsMykpLHIodCxlKX1mdW5j dGlvbiBsbyh0LGUsYSl7aWYobnVsbD09dClyZXR1cm5bXTthJiZ0cih0LGUs YSkmJihlPXkpO3ZhciByPS0xO2U9TmEoZSxhLDMpO3ZhciBvPU1lKHQsZnVu Y3Rpb24odCxhLG8pe3JldHVybntjcml0ZXJpYTplKHQsYSxvKSxpbmRleDor K3IsdmFsdWU6dH19KTtyZXR1cm4gSmUobyxsKX1mdW5jdGlvbiBjbyh0LGUs YSxyKXtyZXR1cm4gbnVsbD09dD9bXToociYmdHIoZSxhLHIpJiYoYT15KSxr cyhlKXx8KGU9bnVsbD09ZT9bXTpbZV0pLGtzKGEpfHwoYT1udWxsPT1hP1td OlthXSksUWUodCxlLGEpKX1mdW5jdGlvbiBobyh0LGUpe3JldHVybiBKcih0 LFJlKGUpKX1mdW5jdGlvbiB1byh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVv ZiBlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgWGkoUik7 dmFyIGE9dDt0PWUsZT1hfXJldHVybiB0PXluKHQ9K3QpP3Q6MCxmdW5jdGlv bigpe3JldHVybi0tdDwxP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQg MH19ZnVuY3Rpb24gZm8odCxlLGEpe3JldHVybiBhJiZ0cih0LGUsYSkmJihl PXkpLGU9dCYmbnVsbD09ZT90Lmxlbmd0aDpDbigrZXx8MCwwKSxJYSh0LEEs eSx5LHkseSxlKX1mdW5jdGlvbiBwbyh0LGUpe3ZhciBhO2lmKCJmdW5jdGlv biIhPXR5cGVvZiBlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBu ZXcgWGkoUik7dmFyIHI9dDt0PWUsZT1yfXJldHVybiBmdW5jdGlvbigpe3Jl dHVybi0tdD4wJiYoYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksMT49dCYm KGU9eSksYX19ZnVuY3Rpb24gYm8odCxlLGEpe2Z1bmN0aW9uIHIoKXtmJiZo bihmKSxjJiZobihjKSxiPTAsYz1mPXA9eX1mdW5jdGlvbiBvKGUsYSl7YSYm aG4oYSksYz1mPXA9eSxlJiYoYj1UcygpLGg9dC5hcHBseShkLGwpLGZ8fGN8 fChsPWQ9eSkpfWZ1bmN0aW9uIGkoKXt2YXIgdD1lLShUcygpLXUpOzA+PXR8 fHQ+ZT9vKHAsYyk6Zj1ibihpLHQpfWZ1bmN0aW9uIG4oKXtvKHYsZil9ZnVu Y3Rpb24gcygpe2lmKGw9YXJndW1lbnRzLHU9VHMoKSxkPXRoaXMscD12JiYo Znx8IW0pLF89PT0hMSl2YXIgYT1tJiYhZjtlbHNle2N8fG18fChiPXUpO3Zh ciByPV8tKHUtYiksbz0wPj1yfHxyPl87bz8oYyYmKGM9aG4oYykpLGI9dSxo PXQuYXBwbHkoZCxsKSk6Y3x8KGM9Ym4obixyKSl9cmV0dXJuIG8mJmY/Zj1o bihmKTpmfHxlPT09X3x8KGY9Ym4oaSxlKSksYSYmKG89ITAsaD10LmFwcGx5 KGQsbCkpLCFvfHxmfHxjfHwobD1kPXkpLGh9dmFyIGwsYyxoLHUsZCxmLHAs Yj0wLF89ITEsdj0hMDtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBu ZXcgWGkoUik7aWYoZT0wPmU/MDorZXx8MCxhPT09ITApe3ZhciBtPSEwO3Y9 ITF9ZWxzZSB6byhhKSYmKG09ISFhLmxlYWRpbmcsXz0ibWF4V2FpdCJpbiBh JiZDbigrYS5tYXhXYWl0fHwwLGUpLHY9InRyYWlsaW5nImluIGE/ISFhLnRy YWlsaW5nOnYpO3JldHVybiBzLmNhbmNlbD1yLHN9ZnVuY3Rpb24gX28odCxl KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8ZSYmImZ1bmN0aW9uIiE9dHlw ZW9mIGUpdGhyb3cgbmV3IFhpKFIpO3ZhciBhPWZ1bmN0aW9uKCl7dmFyIHI9 YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMscik6clswXSxpPWEuY2FjaGU7 aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciBuPXQuYXBwbHkodGhp cyxyKTtyZXR1cm4gYS5jYWNoZT1pLnNldChvLG4pLG59O3JldHVybiBhLmNh Y2hlPW5ldyBfby5DYWNoZSxhfWZ1bmN0aW9uIHZvKHQpe2lmKCJmdW5jdGlv biIhPXR5cGVvZiB0KXRocm93IG5ldyBYaShSKTtyZXR1cm4gZnVuY3Rpb24o KXtyZXR1cm4hdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG1v KHQpe3JldHVybiBwbygyLHQpfWZ1bmN0aW9uIHdvKHQsZSl7aWYoImZ1bmN0 aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFhpKFIpO3JldHVybiBlPUNuKGU9 PT15P3QubGVuZ3RoLTE6K2V8fDAsMCksZnVuY3Rpb24oKXtmb3IodmFyIGE9 YXJndW1lbnRzLHI9LTEsbz1DbihhLmxlbmd0aC1lLDApLGk9Tmkobyk7Kyty PG87KWlbcl09YVtlK3JdO3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIHQuY2Fs bCh0aGlzLGkpO2Nhc2UgMTpyZXR1cm4gdC5jYWxsKHRoaXMsYVswXSxpKTtj YXNlIDI6cmV0dXJuIHQuY2FsbCh0aGlzLGFbMF0sYVsxXSxpKX12YXIgbj1O aShlKzEpO2ZvcihyPS0xOysrcjxlOyluW3JdPWFbcl07cmV0dXJuIG5bZV09 aSx0LmFwcGx5KHRoaXMsbil9fWZ1bmN0aW9uIGdvKHQpe2lmKCJmdW5jdGlv biIhPXR5cGVvZiB0KXRocm93IG5ldyBYaShSKTtyZXR1cm4gZnVuY3Rpb24o ZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxlKX19ZnVuY3Rpb24gVG8odCxlLGEp e3ZhciByPSEwLG89ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cg bmV3IFhpKFIpO3JldHVybiBhPT09ITE/cj0hMTp6byhhKSYmKHI9ImxlYWRp bmciaW4gYT8hIWEubGVhZGluZzpyLG89InRyYWlsaW5nImluIGE/ISFhLnRy YWlsaW5nOm8pLGJvKHQsZSx7bGVhZGluZzpyLG1heFdhaXQ6K2UsdHJhaWxp bmc6b30pfWZ1bmN0aW9uIHhvKHQsZSl7cmV0dXJuIGU9bnVsbD09ZT9GaTpl LElhKGUsTCx5LFt0XSxbXSl9ZnVuY3Rpb24geW8odCxlLGEscil7cmV0dXJu IGUmJiJib29sZWFuIiE9dHlwZW9mIGUmJnRyKHQsZSxhKT9lPSExOiJmdW5j dGlvbiI9PXR5cGVvZiBlJiYocj1hLGE9ZSxlPSExKSwiZnVuY3Rpb24iPT10 eXBlb2YgYT95ZSh0LGUsc2EoYSxyLDMpKTp5ZSh0LGUpfWZ1bmN0aW9uIEJv KHQsZSxhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT95ZSh0LCEwLHNh KGUsYSwzKSk6eWUodCwhMCl9ZnVuY3Rpb24gQ28odCxlKXtyZXR1cm4gdD5l fWZ1bmN0aW9uIFNvKHQsZSl7cmV0dXJuIHQ+PWV9ZnVuY3Rpb24gJG8odCl7 cmV0dXJuIGIodCkmJkphKHQpJiZybi5jYWxsKHQsImNhbGxlZSIpJiYhZm4u Y2FsbCh0LCJjYWxsZWUiKX1mdW5jdGlvbiBQbyh0KXtyZXR1cm4gdD09PSEw fHx0PT09ITF8fGIodCkmJm5uLmNhbGwodCk9PUd9ZnVuY3Rpb24gRm8odCl7 cmV0dXJuIGIodCkmJm5uLmNhbGwodCk9PWp9ZnVuY3Rpb24gTG8odCl7cmV0 dXJuISF0JiYxPT09dC5ub2RlVHlwZSYmYih0KSYmIU5vKHQpfWZ1bmN0aW9u IE9vKHQpe3JldHVybiBudWxsPT10PyEwOkphKHQpJiYoa3ModCl8fFdvKHQp fHwkbyh0KXx8Yih0KSYma28odC5zcGxpY2UpKT8hdC5sZW5ndGg6IWpzKHQp Lmxlbmd0aH1mdW5jdGlvbiBBbyh0LGUsYSxyKXthPSJmdW5jdGlvbiI9PXR5 cGVvZiBhP3NhKGEsciwzKTp5O3ZhciBvPWE/YSh0LGUpOnk7cmV0dXJuIG89 PT15P0hlKHQsZSxhKTohIW99ZnVuY3Rpb24gRW8odCl7cmV0dXJuIGIodCkm JiJzdHJpbmciPT10eXBlb2YgdC5tZXNzYWdlJiZubi5jYWxsKHQpPT1VfWZ1 bmN0aW9uIERvKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmeW4odCl9 ZnVuY3Rpb24ga28odCl7cmV0dXJuIHpvKHQpJiZubi5jYWxsKHQpPT1xfWZ1 bmN0aW9uIHpvKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiEhdCYmKCJvYmpl Y3QiPT1lfHwiZnVuY3Rpb24iPT1lKX1mdW5jdGlvbiBIbyh0LGUsYSxyKXty ZXR1cm4gYT0iZnVuY3Rpb24iPT10eXBlb2YgYT9zYShhLHIsMyk6eSxWZSh0 LEdhKGUpLGEpfWZ1bmN0aW9uIElvKHQpe3JldHVybiBSbyh0KSYmdCE9K3R9 ZnVuY3Rpb24gVm8odCl7cmV0dXJuIG51bGw9PXQ/ITE6a28odCk/bG4udGVz dChhbi5jYWxsKHQpKTpiKHQpJiYoZWUodCk/bG46QXQpLnRlc3QodCl9ZnVu Y3Rpb24gTW8odCl7cmV0dXJuIG51bGw9PT10fWZ1bmN0aW9uIFJvKHQpe3Jl dHVybiJudW1iZXIiPT10eXBlb2YgdHx8Yih0KSYmbm4uY2FsbCh0KT09WX1m dW5jdGlvbiBObyh0KXt2YXIgZTtpZighYih0KXx8bm4uY2FsbCh0KSE9WHx8 ZWUodCl8fCRvKHQpfHwhcm4uY2FsbCh0LCJjb25zdHJ1Y3RvciIpJiYoZT10 LmNvbnN0cnVjdG9yLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYhKGUgaW5zdGFu Y2VvZiBlKSkpcmV0dXJuITE7dmFyIGE7cmV0dXJuIF8uc3VwcG9ydC5vd25M YXN0PyhBZSh0LGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gYT1ybi5jYWxsKHIs ZSksITF9KSxhIT09ITEpOihBZSh0LGZ1bmN0aW9uKHQsZSl7YT1lfSksYT09 PXl8fHJuLmNhbGwodCxhKSl9ZnVuY3Rpb24gS28odCl7cmV0dXJuIHpvKHQp JiZubi5jYWxsKHQpPT1KfWZ1bmN0aW9uIFdvKHQpe3JldHVybiJzdHJpbmci PT10eXBlb2YgdHx8Yih0KSYmbm4uY2FsbCh0KT09dHR9ZnVuY3Rpb24gR28o dCl7cmV0dXJuIGIodCkmJnJyKHQubGVuZ3RoKSYmISFSdFtubi5jYWxsKHQp XX1mdW5jdGlvbiBqbyh0KXtyZXR1cm4gdD09PXl9ZnVuY3Rpb24gVW8odCxl KXtyZXR1cm4gZT50fWZ1bmN0aW9uIHFvKHQsZSl7cmV0dXJuIGU+PXR9ZnVu Y3Rpb24gWm8odCl7dmFyIGU9dD9xbih0KTowO3JldHVybiBycihlKT9lP18u c3VwcG9ydC51bmluZGV4ZWRDaGFycyYmV28odCk/dC5zcGxpdCgiIik6b2Uo dCk6W106c2kodCl9ZnVuY3Rpb24gWW8odCl7cmV0dXJuIFRlKHQsYWkodCkp fWZ1bmN0aW9uIFhvKHQsZSxhKXt2YXIgcj1Sbih0KTtyZXR1cm4gYSYmdHIo dCxlLGEpJiYoZT15KSxlP3dlKHIsZSk6cn1mdW5jdGlvbiBKbyh0KXtyZXR1 cm4ga2UodCxhaSh0KSl9ZnVuY3Rpb24gUW8odCxlLGEpe3ZhciByPW51bGw9 PXQ/eTp6ZSh0LGZyKGUpLGUrIiIpO3JldHVybiByPT09eT9hOnJ9ZnVuY3Rp b24gdGkodCxlKXtpZihudWxsPT10KXJldHVybiExO3ZhciBhPXJuLmNhbGwo dCxlKTtpZighYSYmIWVyKGUpKXtpZihlPWZyKGUpLHQ9MT09ZS5sZW5ndGg/ dDp6ZSh0LFllKGUsMCwtMSkpLG51bGw9PXQpcmV0dXJuITE7ZT0kcihlKSxh PXJuLmNhbGwodCxlKX1yZXR1cm4gYXx8cnIodC5sZW5ndGgpJiZRYShlLHQu bGVuZ3RoKSYmKGtzKHQpfHwkbyh0KXx8V28odCkpfWZ1bmN0aW9uIGVpKHQs ZSxhKXthJiZ0cih0LGUsYSkmJihlPXkpO2Zvcih2YXIgcj0tMSxvPWpzKHQp LGk9by5sZW5ndGgsbj17fTsrK3I8aTspe3ZhciBzPW9bcl0sbD10W3NdO2U/ cm4uY2FsbChuLGwpP25bbF0ucHVzaChzKTpuW2xdPVtzXTpuW2xdPXN9cmV0 dXJuIG59ZnVuY3Rpb24gYWkodCl7aWYobnVsbD09dClyZXR1cm5bXTt6byh0 KXx8KHQ9cWkodCkpO3ZhciBlPXQubGVuZ3RoLGE9Xy5zdXBwb3J0O2U9ZSYm cnIoZSkmJihrcyh0KXx8JG8odCl8fFdvKHQpKSYmZXx8MDtmb3IodmFyIHI9 dC5jb25zdHJ1Y3RvcixvPS0xLGk9a28ocikmJnIucHJvdG90eXBlfHx0bixu PWk9PT10LHM9TmkoZSksbD1lPjAsYz1hLmVudW1FcnJvclByb3BzJiYodD09 PVFpfHx0IGluc3RhbmNlb2YgV2kpLGg9YS5lbnVtUHJvdG90eXBlcyYma28o dCk7KytvPGU7KXNbb109bysiIjtmb3IodmFyIHUgaW4gdCloJiYicHJvdG90 eXBlIj09dXx8YyYmKCJtZXNzYWdlIj09dXx8Im5hbWUiPT11KXx8bCYmUWEo dSxlKXx8ImNvbnN0cnVjdG9yIj09dSYmKG58fCFybi5jYWxsKHQsdSkpfHxz LnB1c2godSk7aWYoYS5ub25FbnVtU2hhZG93cyYmdCE9PXRuKXt2YXIgZD10 PT09ZW4/dHQ6dD09PVFpP1U6bm4uY2FsbCh0KSxmPVZuW2RdfHxWbltYXTtm b3IoZD09WCYmKGk9dG4pLGU9VnQubGVuZ3RoO2UtLTspe3U9VnRbZV07dmFy IHA9Zlt1XTtuJiZwfHwocD8hcm4uY2FsbCh0LHUpOnRbdV09PT1pW3VdKXx8 cy5wdXNoKHUpfX1yZXR1cm4gc31mdW5jdGlvbiByaSh0KXt0PWRyKHQpO2Zv cih2YXIgZT0tMSxhPWpzKHQpLHI9YS5sZW5ndGgsbz1OaShyKTsrK2U8cjsp e3ZhciBpPWFbZV07b1tlXT1baSx0W2ldXX1yZXR1cm4gb31mdW5jdGlvbiBv aSh0LGUsYSl7dmFyIHI9bnVsbD09dD95OmRyKHQpW2VdO3JldHVybiByPT09 eSYmKG51bGw9PXR8fGVyKGUsdCl8fChlPWZyKGUpLHQ9MT09ZS5sZW5ndGg/ dDp6ZSh0LFllKGUsMCwtMSkpLHI9bnVsbD09dD95OmRyKHQpWyRyKGUpXSks cj1yPT09eT9hOnIpLGtvKHIpP3IuY2FsbCh0KTpyfWZ1bmN0aW9uIGlpKHQs ZSxhKXtpZihudWxsPT10KXJldHVybiB0O3ZhciByPWUrIiI7ZT1udWxsIT10 W3JdfHxlcihlLHQpP1tyXTpmcihlKTtmb3IodmFyIG89LTEsaT1lLmxlbmd0 aCxuPWktMSxzPXQ7bnVsbCE9cyYmKytvPGk7KXt2YXIgbD1lW29dO3pvKHMp JiYobz09bj9zW2xdPWE6bnVsbD09c1tsXSYmKHNbbF09UWEoZVtvKzFdKT9b XTp7fSkpLHM9c1tsXX1yZXR1cm4gdH1mdW5jdGlvbiBuaSh0LGUsYSxyKXt2 YXIgbz1rcyh0KXx8R28odCk7aWYoZT1OYShlLHIsNCksbnVsbD09YSlpZihv fHx6byh0KSl7dmFyIGk9dC5jb25zdHJ1Y3RvcjthPW8/a3ModCk/bmV3IGk6 W106Um4oa28oaSk/aS5wcm90b3R5cGU6eSl9ZWxzZSBhPXt9O3JldHVybihv P2llOkVlKSh0LGZ1bmN0aW9uKHQscixvKXtyZXR1cm4gZShhLHQscixvKX0p LGF9ZnVuY3Rpb24gc2kodCl7cmV0dXJuIGFhKHQsanModCkpfWZ1bmN0aW9u IGxpKHQpe3JldHVybiBhYSh0LGFpKHQpKX1mdW5jdGlvbiBjaSh0LGUsYSl7 cmV0dXJuIGU9K2V8fDAsYT09PXk/KGE9ZSxlPTApOmE9K2F8fDAsdD49U24o ZSxhKSYmdDxDbihlLGEpfWZ1bmN0aW9uIGhpKHQsZSxhKXthJiZ0cih0LGUs YSkmJihlPWE9eSk7dmFyIHI9bnVsbD09dCxvPW51bGw9PWU7aWYobnVsbD09 YSYmKG8mJiJib29sZWFuIj09dHlwZW9mIHQ/KGE9dCx0PTEpOiJib29sZWFu Ij09dHlwZW9mIGUmJihhPWUsbz0hMCkpLHImJm8mJihlPTEsbz0hMSksdD0r dHx8MCxvPyhlPXQsdD0wKTplPStlfHwwLGF8fHQlMXx8ZSUxKXt2YXIgaT1G bigpO3JldHVybiBTbih0K2kqKGUtdCt1bigiMWUtIisoKGkrIiIpLmxlbmd0 aC0xKSkpLGUpfXJldHVybiBxZSh0LGUpfWZ1bmN0aW9uIHVpKHQpe3JldHVy biB0PWkodCksdCYmdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNl KDEpfWZ1bmN0aW9uIGRpKHQpe3JldHVybiB0PWkodCksdCYmdC5yZXBsYWNl KER0LGgpLnJlcGxhY2UoJHQsIiIpfWZ1bmN0aW9uIGZpKHQsZSxhKXt0PWko dCksZSs9IiI7dmFyIHI9dC5sZW5ndGg7cmV0dXJuIGE9YT09PXk/cjpTbigw PmE/MDorYXx8MCxyKSxhLT1lLmxlbmd0aCxhPj0wJiZ0LmluZGV4T2YoZSxh KT09YX1mdW5jdGlvbiBwaSh0KXtyZXR1cm4gdD1pKHQpLHQmJm10LnRlc3Qo dCk/dC5yZXBsYWNlKF90LHUpOnR9ZnVuY3Rpb24gYmkodCl7cmV0dXJuIHQ9 aSh0KSx0JiZTdC50ZXN0KHQpP3QucmVwbGFjZShDdCxkKTp0fHwiKD86KSJ9 ZnVuY3Rpb24gX2kodCxlLGEpe3Q9aSh0KSxlPStlO3ZhciByPXQubGVuZ3Ro O2lmKHI+PWV8fCF5bihlKSlyZXR1cm4gdDt2YXIgbz0oZS1yKS8yLG49VG4o bykscz13bihvKTtyZXR1cm4gYT1EYSgiIixzLGEpLGEuc2xpY2UoMCxuKSt0 K2F9ZnVuY3Rpb24gdmkodCxlLGEpe3JldHVybihhP3RyKHQsZSxhKTpudWxs PT1lKT9lPTA6ZSYmKGU9K2UpLHQ9VGkodCksUG4odCxlfHwoT3QudGVzdCh0 KT8xNjoxMCkpfWZ1bmN0aW9uIG1pKHQsZSl7dmFyIGE9IiI7aWYodD1pKHQp LGU9K2UsMT5lfHwhdHx8IXluKGUpKXJldHVybiBhO2RvIGUlMiYmKGErPXQp LGU9VG4oZS8yKSx0Kz10O3doaWxlKGUpO3JldHVybiBhfWZ1bmN0aW9uIHdp KHQsZSxhKXtyZXR1cm4gdD1pKHQpLGE9bnVsbD09YT8wOlNuKDA+YT8wOith fHwwLHQubGVuZ3RoKSx0Lmxhc3RJbmRleE9mKGUsYSk9PWF9ZnVuY3Rpb24g Z2kodCxlLGEpe3ZhciByPV8udGVtcGxhdGVTZXR0aW5nczthJiZ0cih0LGUs YSkmJihlPWE9eSksdD1pKHQpLGU9bWUod2Uoe30sYXx8ZSkscix2ZSk7dmFy IG8sbixzPW1lKHdlKHt9LGUuaW1wb3J0cyksci5pbXBvcnRzLHZlKSxsPWpz KHMpLGM9YWEocyxsKSxoPTAsdT1lLmludGVycG9sYXRlfHxrdCxkPSJfX3Ag Kz0gJyIscD1aaSgoZS5lc2NhcGV8fGt0KS5zb3VyY2UrInwiK3Uuc291cmNl KyJ8IisodT09PVR0P0Z0Omt0KS5zb3VyY2UrInwiKyhlLmV2YWx1YXRlfHxr dCkuc291cmNlKyJ8JCIsImciKSxiPSIvLyMgc291cmNlVVJMPSIrKCJzb3Vy Y2VVUkwiaW4gZT9lLnNvdXJjZVVSTDoibG9kYXNoLnRlbXBsYXRlU291cmNl c1siKyArK010KyJdIikrIlxuIjt0LnJlcGxhY2UocCxmdW5jdGlvbihlLGEs cixpLHMsbCl7cmV0dXJuIHJ8fChyPWkpLGQrPXQuc2xpY2UoaCxsKS5yZXBs YWNlKHp0LGYpLGEmJihvPSEwLGQrPSInICtcbl9fZSgiK2ErIikgK1xuJyIp LHMmJihuPSEwLGQrPSInO1xuIitzKyI7XG5fX3AgKz0gJyIpLHImJihkKz0i JyArXG4oKF9fdCA9ICgiK3IrIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xu JyIpLGg9bCtlLmxlbmd0aCxlfSksZCs9Iic7XG4iO3ZhciB2PWUudmFyaWFi bGU7dnx8KGQ9IndpdGggKG9iaikge1xuIitkKyJcbn1cbiIpLGQ9KG4/ZC5y ZXBsYWNlKGR0LCIiKTpkKS5yZXBsYWNlKGZ0LCIkMSIpLnJlcGxhY2UocHQs IiQxOyIpLGQ9ImZ1bmN0aW9uKCIrKHZ8fCJvYmoiKSsiKSB7XG4iKyh2PyIi OiJvYmogfHwgKG9iaiA9IHt9KTtcbiIpKyJ2YXIgX190LCBfX3AgPSAnJyIr KG8/IiwgX19lID0gXy5lc2NhcGUiOiIiKSsobj8iLCBfX2ogPSBBcnJheS5w cm90b3R5cGUuam9pbjtcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19q LmNhbGwoYXJndW1lbnRzLCAnJykgfVxuIjoiO1xuIikrZCsicmV0dXJuIF9f cFxufSI7dmFyIG09cmwoZnVuY3Rpb24oKXtyZXR1cm4gR2kobCxiKyJyZXR1 cm4gIitkKS5hcHBseSh5LGMpfSk7aWYobS5zb3VyY2U9ZCxFbyhtKSl0aHJv dyBtO3JldHVybiBtfWZ1bmN0aW9uIFRpKHQsZSxhKXt2YXIgcj10O3JldHVy bih0PWkodCkpPyhhP3RyKHIsZSxhKTpudWxsPT1lKT90LnNsaWNlKHcodCks Zyh0KSsxKTooZSs9IiIsdC5zbGljZShuKHQsZSkscyh0LGUpKzEpKTp0fWZ1 bmN0aW9uIHhpKHQsZSxhKXt2YXIgcj10O3JldHVybiB0PWkodCksdD8oYT90 cihyLGUsYSk6bnVsbD09ZSk/dC5zbGljZSh3KHQpKTp0LnNsaWNlKG4odCxl KyIiKSk6dH1mdW5jdGlvbiB5aSh0LGUsYSl7dmFyIHI9dDtyZXR1cm4gdD1p KHQpLHQ/KGE/dHIocixlLGEpOm51bGw9PWUpP3Quc2xpY2UoMCxnKHQpKzEp OnQuc2xpY2UoMCxzKHQsZSsiIikrMSk6dH1mdW5jdGlvbiBCaSh0LGUsYSl7 YSYmdHIodCxlLGEpJiYoZT15KTt2YXIgcj1ELG89aztpZihudWxsIT1lKWlm KHpvKGUpKXt2YXIgbj0ic2VwYXJhdG9yImluIGU/ZS5zZXBhcmF0b3I6bjty PSJsZW5ndGgiaW4gZT8rZS5sZW5ndGh8fDA6cixvPSJvbWlzc2lvbiJpbiBl P2koZS5vbWlzc2lvbik6b31lbHNlIHI9K2V8fDA7aWYodD1pKHQpLHI+PXQu bGVuZ3RoKXJldHVybiB0O3ZhciBzPXItby5sZW5ndGg7aWYoMT5zKXJldHVy biBvO3ZhciBsPXQuc2xpY2UoMCxzKTtpZihudWxsPT1uKXJldHVybiBsK287 aWYoS28obikpe2lmKHQuc2xpY2Uocykuc2VhcmNoKG4pKXt2YXIgYyxoLHU9 dC5zbGljZSgwLHMpO2ZvcihuLmdsb2JhbHx8KG49Wmkobi5zb3VyY2UsKEx0 LmV4ZWMobil8fCIiKSsiZyIpKSxuLmxhc3RJbmRleD0wO2M9bi5leGVjKHUp OyloPWMuaW5kZXg7bD1sLnNsaWNlKDAsbnVsbD09aD9zOmgpfX1lbHNlIGlm KHQuaW5kZXhPZihuLHMpIT1zKXt2YXIgZD1sLmxhc3RJbmRleE9mKG4pO2Q+ LTEmJihsPWwuc2xpY2UoMCxkKSl9cmV0dXJuIGwrb31mdW5jdGlvbiBDaSh0 KXtyZXR1cm4gdD1pKHQpLHQmJnZ0LnRlc3QodCk/dC5yZXBsYWNlKGJ0LFQp OnR9ZnVuY3Rpb24gU2kodCxlLGEpe3JldHVybiBhJiZ0cih0LGUsYSkmJihl PXkpLHQ9aSh0KSx0Lm1hdGNoKGV8fEh0KXx8W119ZnVuY3Rpb24gJGkodCxl LGEpe3JldHVybiBhJiZ0cih0LGUsYSkmJihlPXkpLGIodCk/TGkodCk6eGUo dCxlKX1mdW5jdGlvbiBQaSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g dH19ZnVuY3Rpb24gRmkodCl7cmV0dXJuIHR9ZnVuY3Rpb24gTGkodCl7cmV0 dXJuIFJlKHllKHQsITApKX1mdW5jdGlvbiBPaSh0LGUpe3JldHVybiBOZSh0 LHllKGUsITApKX1mdW5jdGlvbiBBaSh0LGUsYSl7aWYobnVsbD09YSl7dmFy IHI9em8oZSksbz1yP2pzKGUpOnksaT1vJiZvLmxlbmd0aD9rZShlLG8pOnk7 KGk/aS5sZW5ndGg6cil8fChpPSExLGE9ZSxlPXQsdD10aGlzKX1pfHwoaT1r ZShlLGpzKGUpKSk7dmFyIG49ITAscz0tMSxsPWtvKHQpLGM9aS5sZW5ndGg7 YT09PSExP249ITE6em8oYSkmJiJjaGFpbiJpbiBhJiYobj1hLmNoYWluKTtm b3IoOysrczxjOyl7dmFyIGg9aVtzXSx1PWVbaF07dFtoXT11LGwmJih0LnBy b3RvdHlwZVtoXT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIg YT10aGlzLl9fY2hhaW5fXztpZihufHxhKXt2YXIgcj10KHRoaXMuX193cmFw cGVkX18pLG89ci5fX2FjdGlvbnNfXz1vZSh0aGlzLl9fYWN0aW9uc19fKTty ZXR1cm4gby5wdXNoKHtmdW5jOmUsYXJnczphcmd1bWVudHMsdGhpc0FyZzp0 fSksci5fX2NoYWluX189YSxyfXJldHVybiBlLmFwcGx5KHQsdWUoW3RoaXMu dmFsdWUoKV0sYXJndW1lbnRzKSl9fSh1KSl9cmV0dXJuIHR9ZnVuY3Rpb24g RWkoKXtyZXR1cm4gdGUuXz1zbix0aGlzfWZ1bmN0aW9uIERpKCl7fWZ1bmN0 aW9uIGtpKHQpe3JldHVybiBlcih0KT9HZSh0KTpqZSh0KX1mdW5jdGlvbiB6 aSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHplKHQsZnIoZSksZSsi Iil9fWZ1bmN0aW9uIEhpKHQsZSxhKXthJiZ0cih0LGUsYSkmJihlPWE9eSks dD0rdHx8MCxhPW51bGw9PWE/MTorYXx8MCxudWxsPT1lPyhlPXQsdD0wKTpl PStlfHwwO2Zvcih2YXIgcj0tMSxvPUNuKHduKChlLXQpLyhhfHwxKSksMCks aT1OaShvKTsrK3I8bzspaVtyXT10LHQrPWE7cmV0dXJuIGl9ZnVuY3Rpb24g SWkodCxlLGEpe2lmKHQ9VG4odCksMT50fHwheW4odCkpcmV0dXJuW107dmFy IHI9LTEsbz1OaShTbih0LEFuKSk7Zm9yKGU9c2EoZSxhLDEpOysrcjx0OylB bj5yP29bcl09ZShyKTplKHIpO3JldHVybiBvfWZ1bmN0aW9uIFZpKHQpe3Zh ciBlPSsrb247cmV0dXJuIGkodCkrZX1mdW5jdGlvbiBNaSh0LGUpe3JldHVy bigrdHx8MCkrKCtlfHwwKX1mdW5jdGlvbiBSaSh0LGUsYSl7cmV0dXJuIGEm JnRyKHQsZSxhKSYmKGU9eSksZT1OYShlLGEsMyksMT09ZS5sZW5ndGg/YmUo a3ModCk/dDp1cih0KSxlKTp0YSh0LGUpfWE9YT9hZS5kZWZhdWx0cyh0ZS5P YmplY3QoKSxhLGFlLnBpY2sodGUsSXQpKTp0ZTt2YXIgTmk9YS5BcnJheSxL aT1hLkRhdGUsV2k9YS5FcnJvcixHaT1hLkZ1bmN0aW9uLGppPWEuTWF0aCxV aT1hLk51bWJlcixxaT1hLk9iamVjdCxaaT1hLlJlZ0V4cCxZaT1hLlN0cmlu ZyxYaT1hLlR5cGVFcnJvcixKaT1OaS5wcm90b3R5cGUsUWk9V2kucHJvdG90 eXBlLHRuPXFpLnByb3RvdHlwZSxlbj1ZaS5wcm90b3R5cGUsYW49R2kucHJv dG90eXBlLnRvU3RyaW5nLHJuPXRuLmhhc093blByb3BlcnR5LG9uPTAsbm49 dG4udG9TdHJpbmcsc249dGUuXyxsbj1aaSgiXiIrYW4uY2FsbChybikucmVw bGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9o YXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8o Pz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksY249YS5BcnJheUJ1ZmZlcixobj1h LmNsZWFyVGltZW91dCx1bj1hLnBhcnNlRmxvYXQsZG49amkucG93LGZuPXRu LnByb3BlcnR5SXNFbnVtZXJhYmxlLHBuPWphKGEsIlNldCIpLGJuPWEuc2V0 VGltZW91dCxfbj1KaS5zcGxpY2Usdm49YS5VaW50OEFycmF5LG1uPWphKGEs IldlYWtNYXAiKSx3bj1qaS5jZWlsLGduPWphKHFpLCJjcmVhdGUiKSxUbj1q aS5mbG9vcix4bj1qYShOaSwiaXNBcnJheSIpLHluPWEuaXNGaW5pdGUsQm49 amEocWksImtleXMiKSxDbj1qaS5tYXgsU249amkubWluLCRuPWphKEtpLCJu b3ciKSxQbj1hLnBhcnNlSW50LEZuPWppLnJhbmRvbSxMbj1VaS5ORUdBVElW RV9JTkZJTklUWSxPbj1VaS5QT1NJVElWRV9JTkZJTklUWSxBbj00Mjk0OTY3 Mjk1LEVuPUFuLTEsRG49QW4+Pj4xLGtuPTkwMDcxOTkyNTQ3NDA5OTEsem49 bW4mJm5ldyBtbixIbj17fSxJbj17fTtJbltydF09YS5GbG9hdDMyQXJyYXks SW5bb3RdPWEuRmxvYXQ2NEFycmF5LEluW2l0XT1hLkludDhBcnJheSxJbltu dF09YS5JbnQxNkFycmF5LEluW3N0XT1hLkludDMyQXJyYXksSW5bbHRdPXZu LEluW2N0XT1hLlVpbnQ4Q2xhbXBlZEFycmF5LEluW2h0XT1hLlVpbnQxNkFy cmF5LEluW3V0XT1hLlVpbnQzMkFycmF5O3ZhciBWbj17fTtWbltXXT1Wbltq XT1WbltZXT17Y29uc3RydWN0b3I6ITAsdG9Mb2NhbGVTdHJpbmc6ITAsdG9T dHJpbmc6ITAsdmFsdWVPZjohMH0sVm5bR109Vm5bdHRdPXtjb25zdHJ1Y3Rv cjohMCx0b1N0cmluZzohMCx2YWx1ZU9mOiEwfSxWbltVXT1WbltxXT1WbltK XT17Y29uc3RydWN0b3I6ITAsdG9TdHJpbmc6ITB9LFZuW1hdPXtjb25zdHJ1 Y3RvcjohMH0saWUoVnQsZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIFZuKWlm KHJuLmNhbGwoVm4sZSkpe3ZhciBhPVZuW2VdO2FbdF09cm4uY2FsbChhLHQp fX0pO3ZhciBNbj1fLnN1cHBvcnQ9e307IWZ1bmN0aW9uKHQpe3ZhciBlPWZ1 bmN0aW9uKCl7dGhpcy54PXR9LGE9ezA6dCxsZW5ndGg6dH0scj1bXTtlLnBy b3RvdHlwZT17dmFsdWVPZjp0LHk6dH07Zm9yKHZhciBvIGluIG5ldyBlKXIu cHVzaChvKTtNbi5lbnVtRXJyb3JQcm9wcz1mbi5jYWxsKFFpLCJtZXNzYWdl Iil8fGZuLmNhbGwoUWksIm5hbWUiKSxNbi5lbnVtUHJvdG90eXBlcz1mbi5j YWxsKGUsInByb3RvdHlwZSIpLE1uLm5vbkVudW1TaGFkb3dzPSEvdmFsdWVP Zi8udGVzdChyKSxNbi5vd25MYXN0PSJ4IiE9clswXSxNbi5zcGxpY2VPYmpl Y3RzPShfbi5jYWxsKGEsMCwxKSwhYVswXSksTW4udW5pbmRleGVkQ2hhcnM9 IngiWzBdK3FpKCJ4IilbMF0hPSJ4eCJ9KDEsMCksXy50ZW1wbGF0ZVNldHRp bmdzPXtlc2NhcGU6d3QsZXZhbHVhdGU6Z3QsaW50ZXJwb2xhdGU6VHQsdmFy aWFibGU6IiIsaW1wb3J0czp7XzpffX07dmFyIFJuPWZ1bmN0aW9uKCl7ZnVu Y3Rpb24gdCgpe31yZXR1cm4gZnVuY3Rpb24oZSl7aWYoem8oZSkpe3QucHJv dG90eXBlPWU7dmFyIGE9bmV3IHQ7dC5wcm90b3R5cGU9eX1yZXR1cm4gYXx8 e319fSgpLE5uPWZhKEVlKSxLbj1mYShEZSwhMCksV249cGEoKSxHbj1wYSgh MCksam49em4/ZnVuY3Rpb24odCxlKXtyZXR1cm4gem4uc2V0KHQsZSksdH06 RmksVW49em4/ZnVuY3Rpb24odCl7cmV0dXJuIHpuLmdldCh0KX06RGkscW49 R2UoImxlbmd0aCIpLFpuPWZ1bmN0aW9uKCl7dmFyIHQ9MCxlPTA7cmV0dXJu IGZ1bmN0aW9uKGEscil7dmFyIG89VHMoKSxpPUgtKG8tZSk7aWYoZT1vLGk+ MCl7aWYoKyt0Pj16KXJldHVybiBhfWVsc2UgdD0wO3JldHVybiBqbihhLHIp fX0oKSxZbj13byhmdW5jdGlvbih0LGUpe3JldHVybiBiKHQpJiZKYSh0KT9D ZSh0LE9lKGUsITEsITApKTpbXX0pLFhuPXlhKCksSm49eWEoITApLFFuPXdv KGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxhPWUsbz1OaSh1KSxp PVdhKCksbj1pPT09cixzPVtdO2EtLTspe3ZhciBsPXRbYV09SmEobD10W2Fd KT9sOltdO29bYV09biYmbC5sZW5ndGg+PTEyMD9fYShhJiZsKTpudWxsfXZh ciBjPXRbMF0saD0tMSx1PWM/Yy5sZW5ndGg6MCxkPW9bMF07dDpmb3IoOysr aDx1OylpZihsPWNbaF0sKGQ/SnQoZCxsKTppKHMsbCwwKSk8MCl7Zm9yKHZh ciBhPWU7LS1hOyl7dmFyIGY9b1thXTtpZigoZj9KdChmLGwpOmkodFthXSxs LDApKTwwKWNvbnRpbnVlIHR9ZCYmZC5wdXNoKGwpLHMucHVzaChsKX1yZXR1 cm4gc30pLHRzPXdvKGZ1bmN0aW9uKGUsYSl7YT1PZShhKTt2YXIgcj1nZShl LGEpO3JldHVybiBVZShlLGEuc29ydCh0KSkscn0pLGVzPUhhKCksYXM9SGEo ITApLHJzPXdvKGZ1bmN0aW9uKHQpe3JldHVybiBlYShPZSh0LCExLCEwKSl9 KSxvcz13byhmdW5jdGlvbih0LGUpe3JldHVybiBKYSh0KT9DZSh0LGUpOltd fSksaXM9d28oSXIpLG5zPXdvKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3Ro LGE9ZT4yP3RbZS0yXTp5LHI9ZT4xP3RbZS0xXTp5O3JldHVybiBlPjImJiJm dW5jdGlvbiI9PXR5cGVvZiBhP2UtPTI6KGE9ZT4xJiYiZnVuY3Rpb24iPT10 eXBlb2Ygcj8oLS1lLHIpOnkscj15KSx0Lmxlbmd0aD1lLFZyKHQsYSxyKX0p LHNzPXdvKGZ1bmN0aW9uKHQpe3JldHVybiB0PU9lKHQpLHRoaXMudGhydShm dW5jdGlvbihlKXtyZXR1cm4gcmUoa3MoZSk/ZTpbZHIoZSldLHQpfSl9KSxs cz13byhmdW5jdGlvbih0LGUpe3JldHVybiBKYSh0KSYmKHQ9dXIodCkpLGdl KHQsT2UoZSkpfSksY3M9dWEoZnVuY3Rpb24odCxlLGEpe3JuLmNhbGwodCxh KT8rK3RbYV06dFthXT0xfSksaHM9eGEoTm4pLHVzPXhhKEtuLCEwKSxkcz1T YShpZSxObiksZnM9U2EobmUsS24pLHBzPXVhKGZ1bmN0aW9uKHQsZSxhKXty bi5jYWxsKHQsYSk/dFthXS5wdXNoKGUpOnRbYV09W2VdfSksYnM9dWEoZnVu Y3Rpb24odCxlLGEpe3RbYV09ZX0pLF9zPXdvKGZ1bmN0aW9uKHQsZSxhKXt2 YXIgcj0tMSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBlLGk9ZXIoZSksbj1KYSh0 KT9OaSh0Lmxlbmd0aCk6W107cmV0dXJuIE5uKHQsZnVuY3Rpb24odCl7dmFy IHM9bz9lOmkmJm51bGwhPXQ/dFtlXTp5O25bKytyXT1zP3MuYXBwbHkodCxh KTpYYSh0LGUsYSl9KSxufSksdnM9dWEoZnVuY3Rpb24odCxlLGEpe3RbYT8w OjFdLnB1c2goZSl9LGZ1bmN0aW9uKCl7cmV0dXJuW1tdLFtdXX0pLG1zPUFh KGRlLE5uKSx3cz1BYShmZSxLbiksZ3M9d28oZnVuY3Rpb24odCxlKXtpZihu dWxsPT10KXJldHVybltdO3ZhciBhPWVbMl07cmV0dXJuIGEmJnRyKGVbMF0s ZVsxXSxhKSYmKGUubGVuZ3RoPTEpLFFlKHQsT2UoZSksW10pfSksVHM9JG58 fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBLaSkuZ2V0VGltZSgpfSx4cz13byhm dW5jdGlvbih0LGUsYSl7dmFyIHI9QztpZihhLmxlbmd0aCl7dmFyIG89dihh LHhzLnBsYWNlaG9sZGVyKTtyfD1MfXJldHVybiBJYSh0LHIsZSxhLG8pfSks eXM9d28oZnVuY3Rpb24odCxlKXtlPWUubGVuZ3RoP09lKGUpOkpvKHQpO2Zv cih2YXIgYT0tMSxyPWUubGVuZ3RoOysrYTxyOyl7dmFyIG89ZVthXTt0W29d PUlhKHRbb10sQyx0KX1yZXR1cm4gdH0pLEJzPXdvKGZ1bmN0aW9uKHQsZSxh KXt2YXIgcj1DfFM7aWYoYS5sZW5ndGgpe3ZhciBvPXYoYSxCcy5wbGFjZWhv bGRlcik7cnw9TH1yZXR1cm4gSWEoZSxyLHQsYSxvKX0pLENzPXdhKFApLFNz PXdhKEYpLCRzPXdvKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEJlKHQsMSxlKX0p LFBzPXdvKGZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4gQmUodCxlLGEpfSksRnM9 Q2EoKSxMcz1DYSghMCksT3M9d28oZnVuY3Rpb24odCxlKXtpZihlPU9lKGUp LCJmdW5jdGlvbiIhPXR5cGVvZiB0fHwhc2UoZSxvKSl0aHJvdyBuZXcgWGko Uik7dmFyIGE9ZS5sZW5ndGg7cmV0dXJuIHdvKGZ1bmN0aW9uKHIpe2Zvcih2 YXIgbz1TbihyLmxlbmd0aCxhKTtvLS07KXJbb109ZVtvXShyW29dKTtyZXR1 cm4gdC5hcHBseSh0aGlzLHIpfSl9KSxBcz1PYShMKSxFcz1PYShPKSxEcz13 byhmdW5jdGlvbih0LGUpe3JldHVybiBJYSh0LEUseSx5LHksT2UoZSkpfSks a3M9eG58fGZ1bmN0aW9uKHQpe3JldHVybiBiKHQpJiZycih0Lmxlbmd0aCkm Jm5uLmNhbGwodCk9PVd9LHpzPWRhKEtlKSxIcz1kYShmdW5jdGlvbih0LGUs YSl7cmV0dXJuIGE/bWUodCxlLGEpOndlKHQsZSl9KSxJcz1nYShIcyxfZSks VnM9Z2EoenMsbnIpLE1zPUJhKEVlKSxScz1CYShEZSksTnM9JGEoV24pLEtz PSRhKEduKSxXcz1QYShFZSksR3M9UGEoRGUpLGpzPUJuP2Z1bmN0aW9uKHQp e3ZhciBlPW51bGw9PXQ/eTp0LmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlv biI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZT09PXR8fCgiZnVuY3Rpb24iPT10 eXBlb2YgdD9fLnN1cHBvcnQuZW51bVByb3RvdHlwZXM6SmEodCkpP2hyKHQp OnpvKHQpP0JuKHQpOltdfTpocixVcz1GYSghMCkscXM9RmEoKSxacz13byhm dW5jdGlvbih0LGUpe2lmKG51bGw9PXQpcmV0dXJue307aWYoImZ1bmN0aW9u IiE9dHlwZW9mIGVbMF0pe3ZhciBlPWhlKE9lKGUpLFlpKTtyZXR1cm4gc3Io dCxDZShhaSh0KSxlKSl9dmFyIGE9c2EoZVswXSxlWzFdLDMpO3JldHVybiBs cih0LGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4hYSh0LGUscil9KX0pLFlzPXdv KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/e306ImZ1bmN0aW9uIj09 dHlwZW9mIGVbMF0/bHIodCxzYShlWzBdLGVbMV0sMykpOnNyKHQsT2UoZSkp fSksWHM9dmEoZnVuY3Rpb24odCxlLGEpe3JldHVybiBlPWUudG9Mb3dlckNh c2UoKSx0KyhhP2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgx KTplKX0pLEpzPXZhKGZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4gdCsoYT8iLSI6 IiIpK2UudG9Mb3dlckNhc2UoKX0pLFFzPUxhKCksdGw9TGEoITApLGVsPXZh KGZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4gdCsoYT8iXyI6IiIpK2UudG9Mb3dl ckNhc2UoKX0pLGFsPXZhKGZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4gdCsoYT8i ICI6IiIpKyhlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSkp fSkscmw9d28oZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHQuYXBwbHkoeSxl KX1jYXRjaChhKXtyZXR1cm4gRW8oYSk/YTpuZXcgV2koYSl9fSksb2w9d28o ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIFhhKGEs dCxlKX19KSxpbD13byhmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihh KXtyZXR1cm4gWGEodCxhLGUpfX0pLG5sPXphKCJjZWlsIiksc2w9emEoImZs b29yIiksbGw9VGEoQ28sTG4pLGNsPVRhKFVvLE9uKSxobD16YSgicm91bmQi KTtyZXR1cm4gXy5wcm90b3R5cGU9Wi5wcm90b3R5cGUsUS5wcm90b3R5cGU9 Um4oWi5wcm90b3R5cGUpLFEucHJvdG90eXBlLmNvbnN0cnVjdG9yPVEsZXQu cHJvdG90eXBlPVJuKFoucHJvdG90eXBlKSxldC5wcm90b3R5cGUuY29uc3Ry dWN0b3I9ZXQsanQucHJvdG90eXBlWyJkZWxldGUiXT1VdCxqdC5wcm90b3R5 cGUuZ2V0PXF0LGp0LnByb3RvdHlwZS5oYXM9WnQsanQucHJvdG90eXBlLnNl dD1ZdCxYdC5wcm90b3R5cGUucHVzaD1RdCxfby5DYWNoZT1qdCxfLmFmdGVy PXVvLF8uYXJ5PWZvLF8uYXNzaWduPUhzLF8uYXQ9bHMsXy5iZWZvcmU9cG8s Xy5iaW5kPXhzLF8uYmluZEFsbD15cyxfLmJpbmRLZXk9QnMsXy5jYWxsYmFj az0kaSxfLmNoYWluPU5yLF8uY2h1bms9YnIsXy5jb21wYWN0PV9yLF8uY29u c3RhbnQ9UGksXy5jb3VudEJ5PWNzLF8uY3JlYXRlPVhvLF8uY3Vycnk9Q3Ms Xy5jdXJyeVJpZ2h0PVNzLF8uZGVib3VuY2U9Ym8sXy5kZWZhdWx0cz1Jcyxf LmRlZmF1bHRzRGVlcD1WcyxfLmRlZmVyPSRzLF8uZGVsYXk9UHMsXy5kaWZm ZXJlbmNlPVluLF8uZHJvcD12cixfLmRyb3BSaWdodD1tcixfLmRyb3BSaWdo dFdoaWxlPXdyLF8uZHJvcFdoaWxlPWdyLF8uZmlsbD1UcixfLmZpbHRlcj1K cixfLmZsYXR0ZW49eXIsXy5mbGF0dGVuRGVlcD1CcixfLmZsb3c9RnMsXy5m bG93UmlnaHQ9THMsXy5mb3JFYWNoPWRzLF8uZm9yRWFjaFJpZ2h0PWZzLF8u Zm9ySW49TnMsXy5mb3JJblJpZ2h0PUtzLF8uZm9yT3duPVdzLF8uZm9yT3du UmlnaHQ9R3MsXy5mdW5jdGlvbnM9Sm8sXy5ncm91cEJ5PXBzLF8uaW5kZXhC eT1icyxfLmluaXRpYWw9U3IsXy5pbnRlcnNlY3Rpb249UW4sXy5pbnZlcnQ9 ZWksXy5pbnZva2U9X3MsXy5rZXlzPWpzLF8ua2V5c0luPWFpLF8ubWFwPWVv LF8ubWFwS2V5cz1VcyxfLm1hcFZhbHVlcz1xcyxfLm1hdGNoZXM9TGksXy5t YXRjaGVzUHJvcGVydHk9T2ksXy5tZW1vaXplPV9vLF8ubWVyZ2U9enMsXy5t ZXRob2Q9b2wsXy5tZXRob2RPZj1pbCxfLm1peGluPUFpLF8ubW9kQXJncz1P cyxfLm5lZ2F0ZT12byxfLm9taXQ9WnMsXy5vbmNlPW1vLF8ucGFpcnM9cmks Xy5wYXJ0aWFsPUFzLF8ucGFydGlhbFJpZ2h0PUVzLF8ucGFydGl0aW9uPXZz LF8ucGljaz1ZcyxfLnBsdWNrPWFvLF8ucHJvcGVydHk9a2ksXy5wcm9wZXJ0 eU9mPXppLF8ucHVsbD1GcixfLnB1bGxBdD10cyxfLnJhbmdlPUhpLF8ucmVh cmc9RHMsXy5yZWplY3Q9cm8sXy5yZW1vdmU9THIsXy5yZXN0PU9yLF8ucmVz dFBhcmFtPXdvLF8uc2V0PWlpLF8uc2h1ZmZsZT1pbyxfLnNsaWNlPUFyLF8u c29ydEJ5PWxvLF8uc29ydEJ5QWxsPWdzLF8uc29ydEJ5T3JkZXI9Y28sXy5z cHJlYWQ9Z28sXy50YWtlPUVyLF8udGFrZVJpZ2h0PURyLF8udGFrZVJpZ2h0 V2hpbGU9a3IsXy50YWtlV2hpbGU9enIsXy50YXA9S3IsXy50aHJvdHRsZT1U byxfLnRocnU9V3IsXy50aW1lcz1JaSxfLnRvQXJyYXk9Wm8sXy50b1BsYWlu T2JqZWN0PVlvLF8udHJhbnNmb3JtPW5pLF8udW5pb249cnMsXy51bmlxPUhy LF8udW56aXA9SXIsXy51bnppcFdpdGg9VnIsXy52YWx1ZXM9c2ksXy52YWx1 ZXNJbj1saSxfLndoZXJlPWhvLF8ud2l0aG91dD1vcyxfLndyYXA9eG8sXy54 b3I9TXIsXy56aXA9aXMsXy56aXBPYmplY3Q9UnIsXy56aXBXaXRoPW5zLF8u YmFja2Zsb3c9THMsXy5jb2xsZWN0PWVvLF8uY29tcG9zZT1McyxfLmVhY2g9 ZHMsXy5lYWNoUmlnaHQ9ZnMsXy5leHRlbmQ9SHMsXy5pdGVyYXRlZT0kaSxf Lm1ldGhvZHM9Sm8sXy5vYmplY3Q9UnIsXy5zZWxlY3Q9SnIsXy50YWlsPU9y LF8udW5pcXVlPUhyLEFpKF8sXyksXy5hZGQ9TWksXy5hdHRlbXB0PXJsLF8u Y2FtZWxDYXNlPVhzLF8uY2FwaXRhbGl6ZT11aSxfLmNlaWw9bmwsXy5jbG9u ZT15byxfLmNsb25lRGVlcD1CbyxfLmRlYnVycj1kaSxfLmVuZHNXaXRoPWZp LF8uZXNjYXBlPXBpLF8uZXNjYXBlUmVnRXhwPWJpLF8uZXZlcnk9WHIsXy5m aW5kPWhzLF8uZmluZEluZGV4PVhuLF8uZmluZEtleT1NcyxfLmZpbmRMYXN0 PXVzLF8uZmluZExhc3RJbmRleD1KbixfLmZpbmRMYXN0S2V5PVJzLF8uZmlu ZFdoZXJlPVFyLF8uZmlyc3Q9eHIsXy5mbG9vcj1zbCxfLmdldD1RbyxfLmd0 PUNvLF8uZ3RlPVNvLF8uaGFzPXRpLF8uaWRlbnRpdHk9RmksXy5pbmNsdWRl cz10byxfLmluZGV4T2Y9Q3IsXy5pblJhbmdlPWNpLF8uaXNBcmd1bWVudHM9 JG8sXy5pc0FycmF5PWtzLF8uaXNCb29sZWFuPVBvLF8uaXNEYXRlPUZvLF8u aXNFbGVtZW50PUxvLF8uaXNFbXB0eT1PbyxfLmlzRXF1YWw9QW8sXy5pc0Vy cm9yPUVvLF8uaXNGaW5pdGU9RG8sXy5pc0Z1bmN0aW9uPWtvLF8uaXNNYXRj aD1IbyxfLmlzTmFOPUlvLF8uaXNOYXRpdmU9Vm8sXy5pc051bGw9TW8sXy5p c051bWJlcj1SbyxfLmlzT2JqZWN0PXpvLF8uaXNQbGFpbk9iamVjdD1Obyxf LmlzUmVnRXhwPUtvLF8uaXNTdHJpbmc9V28sXy5pc1R5cGVkQXJyYXk9R28s Xy5pc1VuZGVmaW5lZD1qbyxfLmtlYmFiQ2FzZT1KcyxfLmxhc3Q9JHIsXy5s YXN0SW5kZXhPZj1QcixfLmx0PVVvLF8ubHRlPXFvLF8ubWF4PWxsLF8ubWlu PWNsLF8ubm9Db25mbGljdD1FaSxfLm5vb3A9RGksXy5ub3c9VHMsXy5wYWQ9 X2ksXy5wYWRMZWZ0PVFzLF8ucGFkUmlnaHQ9dGwsXy5wYXJzZUludD12aSxf LnJhbmRvbT1oaSxfLnJlZHVjZT1tcyxfLnJlZHVjZVJpZ2h0PXdzLF8ucmVw ZWF0PW1pLF8ucmVzdWx0PW9pLF8ucm91bmQ9aGwsXy5ydW5JbkNvbnRleHQ9 eCxfLnNpemU9bm8sXy5zbmFrZUNhc2U9ZWwsXy5zb21lPXNvLF8uc29ydGVk SW5kZXg9ZXMsXy5zb3J0ZWRMYXN0SW5kZXg9YXMsXy5zdGFydENhc2U9YWws Xy5zdGFydHNXaXRoPXdpLF8uc3VtPVJpLF8udGVtcGxhdGU9Z2ksXy50cmlt PVRpLF8udHJpbUxlZnQ9eGksXy50cmltUmlnaHQ9eWksXy50cnVuYz1CaSxf LnVuZXNjYXBlPUNpLF8udW5pcXVlSWQ9VmksXy53b3Jkcz1TaSxfLmFsbD1Y cixfLmFueT1zbyxfLmNvbnRhaW5zPXRvLF8uZXE9QW8sXy5kZXRlY3Q9aHMs Xy5mb2xkbD1tcyxfLmZvbGRyPXdzLF8uaGVhZD14cixfLmluY2x1ZGU9dG8s Xy5pbmplY3Q9bXMsQWkoXyxmdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiBF ZShfLGZ1bmN0aW9uKGUsYSl7Xy5wcm90b3R5cGVbYV18fCh0W2FdPWUpfSks dH0oKSwhMSksXy5zYW1wbGU9b28sXy5wcm90b3R5cGUuc2FtcGxlPWZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLl9fY2hhaW5fX3x8bnVsbCE9dD90aGlzLnRo cnUoZnVuY3Rpb24oZSl7cmV0dXJuIG9vKGUsdCl9KTpvbyh0aGlzLnZhbHVl KCkpfSxfLlZFUlNJT049QixpZShbImJpbmQiLCJiaW5kS2V5IiwiY3Vycnki LCJjdXJyeVJpZ2h0IiwicGFydGlhbCIsInBhcnRpYWxSaWdodCJdLGZ1bmN0 aW9uKHQpe19bdF0ucGxhY2Vob2xkZXI9X30pLGllKFsiZHJvcCIsInRha2Ui XSxmdW5jdGlvbih0LGUpe2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbihhKXt2 YXIgcj10aGlzLl9fZmlsdGVyZWRfXztpZihyJiYhZSlyZXR1cm4gbmV3IGV0 KHRoaXMpO2E9bnVsbD09YT8xOkNuKFRuKGEpfHwwLDApO3ZhciBvPXRoaXMu Y2xvbmUoKTtyZXR1cm4gcj9vLl9fdGFrZUNvdW50X189U24oby5fX3Rha2VD b3VudF9fLGEpOm8uX192aWV3c19fLnB1c2goe3NpemU6YSx0eXBlOnQrKG8u X19kaXJfXzwwPyJSaWdodCI6IiIpfSksb30sZXQucHJvdG90eXBlW3QrIlJp Z2h0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpW3RdKGUp LnJldmVyc2UoKX19KSxpZShbImZpbHRlciIsIm1hcCIsInRha2VXaGlsZSJd LGZ1bmN0aW9uKHQsZSl7dmFyIGE9ZSsxLHI9YSE9TTtldC5wcm90b3R5cGVb dF09ZnVuY3Rpb24odCxlKXt2YXIgbz10aGlzLmNsb25lKCk7cmV0dXJuIG8u X19pdGVyYXRlZXNfXy5wdXNoKHtpdGVyYXRlZTpOYSh0LGUsMSksdHlwZTph fSksby5fX2ZpbHRlcmVkX189by5fX2ZpbHRlcmVkX198fHIsb319KSxpZShb ImZpcnN0IiwibGFzdCJdLGZ1bmN0aW9uKHQsZSl7dmFyIGE9InRha2UiKyhl PyJSaWdodCI6IiIpO2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVy biB0aGlzW2FdKDEpLnZhbHVlKClbMF19fSksaWUoWyJpbml0aWFsIiwicmVz dCJdLGZ1bmN0aW9uKHQsZSl7dmFyIGE9ImRyb3AiKyhlPyIiOiJSaWdodCIp O2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmls dGVyZWRfXz9uZXcgZXQodGhpcyk6dGhpc1thXSgxKX19KSxpZShbInBsdWNr Iiwid2hlcmUiXSxmdW5jdGlvbih0LGUpe3ZhciBhPWU/ImZpbHRlciI6Im1h cCIscj1lP1JlOmtpO2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbih0KXtyZXR1 cm4gdGhpc1thXShyKHQpKX19KSxldC5wcm90b3R5cGUuY29tcGFjdD1mdW5j dGlvbigpe3JldHVybiB0aGlzLmZpbHRlcihGaSl9LGV0LnByb3RvdHlwZS5y ZWplY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1OYSh0LGUsMSksdGhpcy5m aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIXQoZSl9KX0sZXQucHJvdG90eXBl LnNsaWNlPWZ1bmN0aW9uKHQsZSl7dD1udWxsPT10PzA6K3R8fDA7dmFyIGE9 dGhpcztyZXR1cm4gYS5fX2ZpbHRlcmVkX18mJih0PjB8fDA+ZSk/bmV3IGV0 KGEpOigwPnQ/YT1hLnRha2VSaWdodCgtdCk6dCYmKGE9YS5kcm9wKHQpKSxl IT09eSYmKGU9K2V8fDAsYT0wPmU/YS5kcm9wUmlnaHQoLWUpOmEudGFrZShl LXQpKSxhKX0sZXQucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZSh0LGUpLnJl dmVyc2UoKX0sZXQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy50YWtlKE9uKX0sRWUoZXQucHJvdG90eXBlLGZ1bmN0aW9uKHQs ZSl7dmFyIGE9L14oPzpmaWx0ZXJ8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0 KGUpLHI9L14oPzpmaXJzdHxsYXN0KSQvLnRlc3QoZSksbz1fW3I/InRha2Ui KygibGFzdCI9PWU/IlJpZ2h0IjoiIik6ZV07byYmKF8ucHJvdG90eXBlW2Vd PWZ1bmN0aW9uKCl7dmFyIGU9cj9bMV06YXJndW1lbnRzLGk9dGhpcy5fX2No YWluX18sbj10aGlzLl9fd3JhcHBlZF9fLHM9ISF0aGlzLl9fYWN0aW9uc19f Lmxlbmd0aCxsPW4gaW5zdGFuY2VvZiBldCxjPWVbMF0saD1sfHxrcyhuKTto JiZhJiYiZnVuY3Rpb24iPT10eXBlb2YgYyYmMSE9Yy5sZW5ndGgmJihsPWg9 ITEpO3ZhciB1PWZ1bmN0aW9uKHQpe3JldHVybiByJiZpP28odCwxKVswXTpv LmFwcGx5KHksdWUoW3RdLGUpKX0sZD17ZnVuYzpXcixhcmdzOlt1XSx0aGlz QXJnOnl9LGY9bCYmIXM7aWYociYmIWkpcmV0dXJuIGY/KG49bi5jbG9uZSgp LG4uX19hY3Rpb25zX18ucHVzaChkKSx0LmNhbGwobikpOm8uY2FsbCh5LHRo aXMudmFsdWUoKSlbMF07aWYoIXImJmgpe249Zj9uOm5ldyBldCh0aGlzKTt2 YXIgcD10LmFwcGx5KG4sZSk7cmV0dXJuIHAuX19hY3Rpb25zX18ucHVzaChk KSxuZXcgUShwLGkpfXJldHVybiB0aGlzLnRocnUodSl9KX0pLGllKFsiam9p biIsInBvcCIsInB1c2giLCJyZXBsYWNlIiwic2hpZnQiLCJzb3J0Iiwic3Bs aWNlIiwic3BsaXQiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24odCl7dmFyIGU9KC9e KD86cmVwbGFjZXxzcGxpdCkkLy50ZXN0KHQpP2VuOkppKVt0XSxhPS9eKD86 cHVzaHxzb3J0fHVuc2hpZnQpJC8udGVzdCh0KT8idGFwIjoidGhydSIscj0h TW4uc3BsaWNlT2JqZWN0cyYmL14oPzpwb3B8c2hpZnR8c3BsaWNlKSQvLnRl c3QodCksbz0vXig/OmpvaW58cG9wfHJlcGxhY2V8c2hpZnQpJC8udGVzdCh0 KSxpPXI/ZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRz KTtyZXR1cm4gMD09PXRoaXMubGVuZ3RoJiZkZWxldGUgdGhpc1swXSx0fTpl O18ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3Jl dHVybiBvJiYhdGhpcy5fX2NoYWluX18/aS5hcHBseSh0aGlzLnZhbHVlKCks dCk6dGhpc1thXShmdW5jdGlvbihlKXtyZXR1cm4gaS5hcHBseShlLHQpfSl9 fSksRWUoZXQucHJvdG90eXBlLGZ1bmN0aW9uKHQsZSl7dmFyIGE9X1tlXTtp ZihhKXt2YXIgcj1hLm5hbWUrIiIsbz1IbltyXXx8KEhuW3JdPVtdKTtvLnB1 c2goe25hbWU6ZSxmdW5jOmF9KX19KSxIbltFYSh5LFMpLm5hbWVdPVt7bmFt ZToid3JhcHBlciIsZnVuYzp5fV0sZXQucHJvdG90eXBlLmNsb25lPUt0LGV0 LnByb3RvdHlwZS5yZXZlcnNlPVd0LGV0LnByb3RvdHlwZS52YWx1ZT1HdCxf LnByb3RvdHlwZS5jaGFpbj1HcixfLnByb3RvdHlwZS5jb21taXQ9anIsXy5w cm90b3R5cGUuY29uY2F0PXNzLF8ucHJvdG90eXBlLnBsYW50PVVyLF8ucHJv dG90eXBlLnJldmVyc2U9cXIsXy5wcm90b3R5cGUudG9TdHJpbmc9WnIsXy5w cm90b3R5cGUucnVuPV8ucHJvdG90eXBlLnRvSlNPTj1fLnByb3RvdHlwZS52 YWx1ZU9mPV8ucHJvdG90eXBlLnZhbHVlPVlyLF8ucHJvdG90eXBlLmNvbGxl Y3Q9Xy5wcm90b3R5cGUubWFwLF8ucHJvdG90eXBlLmhlYWQ9Xy5wcm90b3R5 cGUuZmlyc3QsXy5wcm90b3R5cGUuc2VsZWN0PV8ucHJvdG90eXBlLmZpbHRl cixfLnByb3RvdHlwZS50YWlsPV8ucHJvdG90eXBlLnJlc3QsX312YXIgeSxC PSIzLjEwLjEiLEM9MSxTPTIsJD00LFA9OCxGPTE2LEw9MzIsTz02NCxBPTEy OCxFPTI1NixEPTMwLGs9Ii4uLiIsej0xNTAsSD0xNixJPTIwMCxWPTEsTT0y LFI9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLE49Il9fbG9kYXNoX3BsYWNlaG9s ZGVyX18iLEs9IltvYmplY3QgQXJndW1lbnRzXSIsVz0iW29iamVjdCBBcnJh eV0iLEc9IltvYmplY3QgQm9vbGVhbl0iLGo9IltvYmplY3QgRGF0ZV0iLFU9 IltvYmplY3QgRXJyb3JdIixxPSJbb2JqZWN0IEZ1bmN0aW9uXSIsWj0iW29i amVjdCBNYXBdIixZPSJbb2JqZWN0IE51bWJlcl0iLFg9IltvYmplY3QgT2Jq ZWN0XSIsSj0iW29iamVjdCBSZWdFeHBdIixRPSJbb2JqZWN0IFNldF0iLHR0 PSJbb2JqZWN0IFN0cmluZ10iLGV0PSJbb2JqZWN0IFdlYWtNYXBdIixhdD0i W29iamVjdCBBcnJheUJ1ZmZlcl0iLHJ0PSJbb2JqZWN0IEZsb2F0MzJBcnJh eV0iLG90PSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLGl0PSJbb2JqZWN0IElu dDhBcnJheV0iLG50PSJbb2JqZWN0IEludDE2QXJyYXldIixzdD0iW29iamVj dCBJbnQzMkFycmF5XSIsbHQ9IltvYmplY3QgVWludDhBcnJheV0iLGN0PSJb b2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsaHQ9IltvYmplY3QgVWludDE2 QXJyYXldIix1dD0iW29iamVjdCBVaW50MzJBcnJheV0iLGR0PS9cYl9fcCBc Kz0gJyc7L2csZnQ9L1xiKF9fcCBcKz0pICcnIFwrL2cscHQ9LyhfX2VcKC4q P1wpfFxiX190XCkpIFwrXG4nJzsvZyxidD0vJig/OmFtcHxsdHxndHxxdW90 fCMzOXwjOTYpOy9nLF90PS9bJjw+IidgXS9nLHZ0PVJlZ0V4cChidC5zb3Vy Y2UpLG10PVJlZ0V4cChfdC5zb3VyY2UpLHd0PS88JS0oW1xzXFNdKz8pJT4v ZyxndD0vPCUoW1xzXFNdKz8pJT4vZyxUdD0vPCU9KFtcc1xTXSs/KSU+L2cs eHQ9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxuXFxdfFxc LikqP1wxKVxdLyx5dD0vXlx3KiQvLEJ0PS9bXi5bXF1dK3xcWyg/OigtP1xk Kyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxuXFxdfFxcLikqPylc MilcXS9nLEN0PS9eWzohLF18W1xcXiQuKis/KClbXF17fXxcL118KF5bMC05 YS1mQS1GbnJ0dXZ4XSl8KFtcblxyXHUyMDI4XHUyMDI5XSkvZyxTdD1SZWdF eHAoQ3Quc291cmNlKSwkdD0vW1x1MDMwMC1cdTAzNmZcdWZlMjAtXHVmZTIz XS9nLFB0PS9cXChcXCk/L2csRnQ9L1wkXHsoW15cXH1dKig/OlxcLlteXFx9 XSopKilcfS9nLEx0PS9cdyokLyxPdD0vXjBbeFhdLyxBdD0vXlxbb2JqZWN0 IC4rP0NvbnN0cnVjdG9yXF0kLyxFdD0vXlxkKyQvLER0PS9bXHhjMC1ceGQ2 XHhkOC1ceGRlXHhkZi1ceGY2XHhmOC1ceGZmXS9nLGt0PS8oJF4pLyx6dD0v WydcblxyXHUyMDI4XHUyMDI5XFxdL2csSHQ9ZnVuY3Rpb24oKXt2YXIgdD0i W0EtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdIixlPSJbYS16XFx4ZGYtXFx4 ZjZcXHhmOC1cXHhmZl0rIjtyZXR1cm4gUmVnRXhwKHQrIisoPz0iK3QrZSsi KXwiK3QrIj8iK2UrInwiK3QrIit8WzAtOV0rIiwiZyIpfSgpLEl0PVsiQXJy YXkiLCJBcnJheUJ1ZmZlciIsIkRhdGUiLCJFcnJvciIsIkZsb2F0MzJBcnJh eSIsIkZsb2F0NjRBcnJheSIsIkZ1bmN0aW9uIiwiSW50OEFycmF5IiwiSW50 MTZBcnJheSIsIkludDMyQXJyYXkiLCJNYXRoIiwiTnVtYmVyIiwiT2JqZWN0 IiwiUmVnRXhwIiwiU2V0IiwiU3RyaW5nIiwiXyIsImNsZWFyVGltZW91dCIs ImlzRmluaXRlIiwicGFyc2VGbG9hdCIsInBhcnNlSW50Iiwic2V0VGltZW91 dCIsIlR5cGVFcnJvciIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJh eSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJXZWFrTWFwIl0sVnQ9 WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVP ZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0 b1N0cmluZyIsInZhbHVlT2YiXSxNdD0tMSxSdD17fTtSdFtydF09UnRbb3Rd PVJ0W2l0XT1SdFtudF09UnRbc3RdPVJ0W2x0XT1SdFtjdF09UnRbaHRdPVJ0 W3V0XT0hMCxSdFtLXT1SdFtXXT1SdFthdF09UnRbR109UnRbal09UnRbVV09 UnRbcV09UnRbWl09UnRbWV09UnRbWF09UnRbSl09UnRbUV09UnRbdHRdPVJ0 W2V0XT0hMTt2YXIgTnQ9e307TnRbS109TnRbV109TnRbYXRdPU50W0ddPU50 W2pdPU50W3J0XT1OdFtvdF09TnRbaXRdPU50W250XT1OdFtzdF09TnRbWV09 TnRbWF09TnRbSl09TnRbdHRdPU50W2x0XT1OdFtjdF09TnRbaHRdPU50W3V0 XT0hMCxOdFtVXT1OdFtxXT1OdFtaXT1OdFtRXT1OdFtldF09ITE7dmFyIEt0 PXsiw4AiOiJBIiwiw4EiOiJBIiwiw4IiOiJBIiwiw4MiOiJBIiwiw4QiOiJB Iiwiw4UiOiJBIiwiw6AiOiJhIiwiw6EiOiJhIiwiw6IiOiJhIiwiw6MiOiJh Iiwiw6QiOiJhIiwiw6UiOiJhIiwiw4ciOiJDIiwiw6ciOiJjIiwiw5AiOiJE Iiwiw7AiOiJkIiwiw4giOiJFIiwiw4kiOiJFIiwiw4oiOiJFIiwiw4siOiJF Iiwiw6giOiJlIiwiw6kiOiJlIiwiw6oiOiJlIiwiw6siOiJlIiwiw4wiOiJJ Iiwiw40iOiJJIiwiw44iOiJJIiwiw48iOiJJIiwiw6wiOiJpIiwiw60iOiJp Iiwiw64iOiJpIiwiw68iOiJpIiwiw5EiOiJOIiwiw7EiOiJuIiwiw5IiOiJP Iiwiw5MiOiJPIiwiw5QiOiJPIiwiw5UiOiJPIiwiw5YiOiJPIiwiw5giOiJP Iiwiw7IiOiJvIiwiw7MiOiJvIiwiw7QiOiJvIiwiw7UiOiJvIiwiw7YiOiJv Iiwiw7giOiJvIiwiw5kiOiJVIiwiw5oiOiJVIiwiw5siOiJVIiwiw5wiOiJV Iiwiw7kiOiJ1Iiwiw7oiOiJ1Iiwiw7siOiJ1Iiwiw7wiOiJ1Iiwiw50iOiJZ Iiwiw70iOiJ5Iiwiw78iOiJ5Iiwiw4YiOiJBZSIsIsOmIjoiYWUiLCLDniI6 IlRoIiwiw74iOiJ0aCIsIsOfIjoic3MifSxXdD17IiYiOiImYW1wOyIsIjwi OiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7Iiwi YCI6IiYjOTY7In0sR3Q9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsi OiI+IiwiJnF1b3Q7IjonIicsIiYjMzk7IjoiJyIsIiYjOTY7IjoiYCJ9LGp0 PXsiZnVuY3Rpb24iOiEwLG9iamVjdDohMH0sVXQ9ezA6IngzMCIsMToieDMx IiwyOiJ4MzIiLDM6IngzMyIsNDoieDM0Iiw1OiJ4MzUiLDY6IngzNiIsNzoi eDM3Iiw4OiJ4MzgiLDk6IngzOSIsQToieDQxIixCOiJ4NDIiLEM6Ing0MyIs RDoieDQ0IixFOiJ4NDUiLEY6Ing0NiIsYToieDYxIixiOiJ4NjIiLGM6Ing2 MyIsZDoieDY0IixlOiJ4NjUiLGY6Ing2NiIsbjoieDZlIixyOiJ4NzIiLHQ6 Ing3NCIsdToieDc1Iix2OiJ4NzYiLHg6Ing3OCJ9LHF0PXsiXFwiOiJcXCIs IiciOiInIiwiXG4iOiJuIiwiXHIiOiJyIiwiXHUyMDI4IjoidTIwMjgiLCJc dTIwMjkiOiJ1MjAyOSJ9LFp0PWp0W3R5cGVvZiBleHBvcnRzXSYmZXhwb3J0 cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsWXQ9anRbdHlwZW9mIG1v ZHVsZV0mJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlLFh0PVp0 JiZZdCYmIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFs Lk9iamVjdCYmZ2xvYmFsLEp0PWp0W3R5cGVvZiBzZWxmXSYmc2VsZiYmc2Vs Zi5PYmplY3QmJnNlbGYsUXQ9anRbdHlwZW9mIHdpbmRvd10mJndpbmRvdyYm d2luZG93Lk9iamVjdCYmd2luZG93LHRlPVh0fHxRdCE9PSh0aGlzJiZ0aGlz LndpbmRvdykmJlF0fHxKdHx8dGhpcyxlZT1mdW5jdGlvbigpe3RyeXtPYmpl Y3Qoe3RvU3RyaW5nOjB9KyIiKX1jYXRjaCh0KXtyZXR1cm4gZnVuY3Rpb24o KXtyZXR1cm4hMX19cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlv biIhPXR5cGVvZiB0LnRvU3RyaW5nJiYic3RyaW5nIj09dHlwZW9mKHQrIiIp fX0oKSxhZT14KCk7ImZ1bmN0aW9uIj09dHlwZW9mIGEmJiJvYmplY3QiPT10 eXBlb2YgYS5hbWQmJmEuYW1kJiZhKCJsb2Rhc2gvbWFpbiIsW10sZnVuY3Rp b24oKXtyZXR1cm4gYWV9KX0uY2FsbCh0aGlzKSxhKCJsb2Rhc2giLFsibG9k YXNoL21haW4iXSxmdW5jdGlvbih0KXtyZXR1cm4gdH0pLGEoIndjRG9ja2Vy L2RvY2tlciIsWyJkY2wvZGNsIiwiLi90eXBlcyIsIi4vcGFuZWwiLCIuL2do b3N0IiwiLi9zcGxpdHRlciIsIi4vZnJhbWUiLCIuL2NvbGxhcHNlciIsIi4v bGF5b3V0c2ltcGxlIiwiLi9sYXlvdXR0YWJsZSIsIi4vdGFiZnJhbWUiLCIu L2RyYXdlciIsIi4vYmFzZSIsImxvZGFzaCJdLGZ1bmN0aW9uKHQsZSxhLHIs byxpLG4scyxsLGMsaCx1LGQpe3ZhciBmPXt3Y1BhbmVsOmEsd2NHaG9zdDpy LHdjU3BsaXR0ZXI6byx3Y0ZyYW1lOmksd2NDb2xsYXBzZXI6bix3Y0xheW91 dFNpbXBsZTpzLHdjTGF5b3V0VGFibGU6bCx3Y0RyYXdlcjpoLHdjVGFiRnJh bWU6Y30scD10KHUse2RlY2xhcmVkQ2xhc3M6IndjRG9ja2VyIixjb25zdHJ1 Y3RvcjpmdW5jdGlvbih0LGUpe3RoaXMuJG91dGVyPSQodCksdGhpcy4kY29u dGFpbmVyPSQoJzxkaXYgY2xhc3M9IndjRG9ja2VyIj4nKSx0aGlzLiR0cmFu c2l0aW9uPSQoJzxkaXYgY2xhc3M9IndjRG9ja2VyVHJhbnNpdGlvbiI+Jyks dGhpcy4kbG9hZGluZz1udWxsLHRoaXMuJG91dGVyLmFwcGVuZCh0aGlzLiRj b250YWluZXIpLHRoaXMuJGNvbnRhaW5lci5hcHBlbmQodGhpcy4kdHJhbnNp dGlvbiksCiB0aGlzLl9jYW5PcmllbnRUYWJzPSEwLHRoaXMuX2V2ZW50cz17 fSx0aGlzLl9yb290PW51bGwsdGhpcy5fZnJhbWVMaXN0PVtdLHRoaXMuX2Zs b2F0aW5nTGlzdD1bXSx0aGlzLl9tb2RhbExpc3Q9W10sdGhpcy5fcGVyc2lz dGVudExpc3Q9W10sdGhpcy5fZm9jdXNGcmFtZT1udWxsLHRoaXMuX3BsYWNl aG9sZGVyUGFuZWw9bnVsbCx0aGlzLl9jb250ZXh0VGltZXI9MCx0aGlzLl9k aXJ0eT0hMSx0aGlzLl9kaXJ0eURvbnRNb3ZlPSExLHRoaXMuX3NwbGl0dGVy TGlzdD1bXSx0aGlzLl90YWJMaXN0PVtdLHRoaXMuX2NvbGxhcHNlcj17fSx0 aGlzLl9kb2NrUGFuZWxUeXBlTGlzdD1bXSx0aGlzLl9jcmVhdGluZ1BhbmVs PSExLHRoaXMuX2RyYWdnaW5nU3BsaXR0ZXI9bnVsbCx0aGlzLl9kcmFnZ2lu Z0ZyYW1lPW51bGwsdGhpcy5fZHJhZ2dpbmdGcmFtZVNpemVyPW51bGwsdGhp cy5fZHJhZ2dpbmdGcmFtZVRhYj1udWxsLHRoaXMuX2RyYWdnaW5nRnJhbWVU b3BwZXI9ITEsdGhpcy5fZHJhZ2dpbmdDdXN0b21UYWJGcmFtZT1udWxsLHRo aXMuX2dob3N0PW51bGwsdGhpcy5fbWVudVRpbWVyPTAsdGhpcy5fbW91c2VP cmlnaW49e3g6MCx5OjB9LHRoaXMuX3Jlc2l6ZURhdGE9e3RpbWU6LTEsdGlt ZW91dDohMSxkZWx0YToxNTB9O3ZhciBhPXt0aGVtZVBhdGg6IlRoZW1lcyIs dGhlbWU6ImRlZmF1bHQiLGxvYWRpbmdDbGFzczoiZmEgZmEtc3Bpbm5lciBm YS1wdWxzZSIsYWxsb3dDb250ZXh0TWVudTohMCxoaWRlT25SZXNpemU6ITEs YWxsb3dDb2xsYXBzZTohMCxyZXNwb25zZVJhdGU6MTAsbW92ZVN0YXJ0RGVs YXk6MzAwLGVkZ2VBbmNob3JTaXplOjUwLHBhbmVsQW5jaG9yU2l6ZToiMTUl IixkZXRhY2hUb1dpZHRoOiI1MCUiLGRldGFjaFRvSGVpZ2h0OiI1MCUifTt0 aGlzLl9vcHRpb25zPXt9O2Zvcih2YXIgciBpbiBmKWFbcisiQ2xhc3MiXT1m W3JdO2Zvcih2YXIgciBpbiBhKXRoaXMuX29wdGlvbnNbcl09YVtyXTtmb3Io dmFyIHIgaW4gZSl0aGlzLl9vcHRpb25zW3JdPWVbcl07dGhpcy5fX2luaXQo KX0sdGhlbWVQYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYo dGhpcy5fb3B0aW9ucy50aGVtZVBhdGg9dCksdGhpcy5fb3B0aW9ucy50aGVt ZVBhdGh9LHRoZW1lOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe3ZhciBl PSQoIiN3Y1RoZW1lIiksYT0obmV3IERhdGUpLmdldFRpbWUoKSxyPXQuaW5k ZXhPZigiLmNzcyIpO3I+LTEmJih0PXQuc3Vic3RyaW5nKDAscikpO3ZhciBv PSQoJzxsaW5rIGlkPSJ3Y1RoZW1lIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9 InRleHQvY3NzIiBocmVmPSInK3RoaXMuX29wdGlvbnMudGhlbWVQYXRoKyIv Iit0KyIuY3NzP3Y9IithKyciLz4nKTt0aGlzLl9vcHRpb25zLnRoZW1lPXQ7 dmFyIGk9dGhpcztvWzBdLm9ubG9hZD1mdW5jdGlvbigpe2UucmVtb3ZlKCks aS5fX3VwZGF0ZSgpfSwkKCJoZWFkIikuYXBwZW5kKG8pfXJldHVybiB0aGlz Ll9vcHRpb25zLnRoZW1lfSxpc0NvbGxhcHNlRW5hYmxlZDpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9jYW5PcmllbnRUYWJzJiZ0aGlzLl9vcHRpb25zLmFs bG93Q29sbGFwc2V9LHJlZ2lzdGVyUGFuZWxUeXBlOmZ1bmN0aW9uKHQsZSxh KXt2YXIgcj1lOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYocj17b25DcmVhdGU6 ZX0sY29uc29sZS5sb2coIldBUk5JTkc6IFBhc3NpbmcgaW4gdGhlIGNyZWF0 aW9uIGZ1bmN0aW9uIGRpcmVjdGx5IHRvIHdjRG9ja2VyLnJlZ2lzdGVyUGFu ZWxUeXBlIHBhcmFtZXRlciAyIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxs IGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgdmVyc2lvbiEgIFBsZWFzZSB1c2Ug dGhlIHByZWZlcnJlZCBvcHRpb25zIG9iamVjdCBpbnN0ZWFkLiIpKSwidW5k ZWZpbmVkIiE9dHlwZW9mIGEmJihyLmlzUHJpdmF0ZT1hLGNvbnNvbGUubG9n KCJXQVJOSU5HOiBQYXNzaW5nIGluIHRoZSBpc1ByaXZhdGUgZmxhZyB0byB3 Y0RvY2tlci5yZWdpc3RlclBhbmVsVHlwZSBwYXJhbWV0ZXIgMyBpcyBub3cg ZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHZl cnNpb24hICBQbGVhc2UgdXNlIHRoZSBwcmVmZXJyZWQgb3B0aW9ucyBvYmpl Y3QgaW5zdGVhZC4iKSksJC5pc0VtcHR5T2JqZWN0KHIpJiYocj1udWxsKTtm b3IodmFyIG89MDtvPHRoaXMuX2RvY2tQYW5lbFR5cGVMaXN0Lmxlbmd0aDsr K28paWYodGhpcy5fZG9ja1BhbmVsVHlwZUxpc3Rbb10ubmFtZT09PXQpcmV0 dXJuITE7dGhpcy5fZG9ja1BhbmVsVHlwZUxpc3QucHVzaCh7bmFtZTp0LG9w dGlvbnM6cn0pO3ZhciBpPSQoIm1lbnUiKS5maW5kKCJtZW51Iik7cmV0dXJu IGkuYXBwZW5kKCQoJzxtZW51aXRlbSBsYWJlbD0iJyt0KyciPicpKSwhMH0s cGFuZWxUeXBlczpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10sYT0wO2E8dGhp cy5fZG9ja1BhbmVsVHlwZUxpc3QubGVuZ3RoOysrYSkodHx8IXRoaXMuX2Rv Y2tQYW5lbFR5cGVMaXN0W2FdLm9wdGlvbnMuaXNQcml2YXRlKSYmZS5wdXNo KHRoaXMuX2RvY2tQYW5lbFR5cGVMaXN0W2FdLm5hbWUpO3JldHVybiBlfSxw YW5lbFR5cGVJbmZvOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5f ZG9ja1BhbmVsVHlwZUxpc3QubGVuZ3RoOysrZSlpZih0aGlzLl9kb2NrUGFu ZWxUeXBlTGlzdFtlXS5uYW1lPT10KXJldHVybiB0aGlzLl9kb2NrUGFuZWxU eXBlTGlzdFtlXS5vcHRpb25zO3JldHVybiExfSxhZGRQYW5lbDpmdW5jdGlv bih0LGEscixvKXtmdW5jdGlvbiBpKHQpe2E9PT1lLkRPQ0suU1RBQ0tFRD90 aGlzLl9fYWRkUGFuZWxHcm91cGVkKHQscixvKTp0aGlzLl9fYWRkUGFuZWxB bG9uZSh0LGEscixvKSx0aGlzLl9wbGFjZWhvbGRlclBhbmVsJiZ0Lm1vdmVh YmxlKCkmJmEhPT1lLkRPQ0suRkxPQVQmJmEhPT1lLkRPQ0suTU9EQUwmJnRo aXMucmVtb3ZlUGFuZWwodGhpcy5fcGxhY2Vob2xkZXJQYW5lbCkmJih0aGlz Ll9wbGFjZWhvbGRlclBhbmVsPW51bGwpLHRoaXMuX19mb3JjZVVwZGF0ZSgp fWZvcih2YXIgbj0wO248dGhpcy5fcGVyc2lzdGVudExpc3QubGVuZ3RoOysr bilpZih0aGlzLl9wZXJzaXN0ZW50TGlzdFtuXS5fdHlwZT09PXQpe3ZhciBz PXRoaXMuX3BlcnNpc3RlbnRMaXN0LnNwbGljZShuLDEpWzBdO3JldHVybiBp LmNhbGwodGhpcyxzKSxzLl9fdHJpZ2dlcihlLkVWRU5ULlBFUlNJU1RFTlRf T1BFTkVEKSxzfWZvcih2YXIgbD0wO2w8dGhpcy5fZG9ja1BhbmVsVHlwZUxp c3QubGVuZ3RoOysrbClpZih0aGlzLl9kb2NrUGFuZWxUeXBlTGlzdFtsXS5u YW1lPT09dCl7dmFyIGM9dGhpcy5fZG9ja1BhbmVsVHlwZUxpc3RbbF0scz1u ZXcodGhpcy5fX2dldENsYXNzKCJ3Y1BhbmVsIikpKHRoaXMsdCxjLm9wdGlv bnMpO3MuX19jb250YWluZXIodGhpcy4kdHJhbnNpdGlvbik7dmFyIGg9Yy5v cHRpb25zJiZjLm9wdGlvbnMub3B0aW9uc3x8e307cmV0dXJuIHMuX3BhbmVs T2JqZWN0PW5ldyBjLm9wdGlvbnMub25DcmVhdGUocyxoKSxpLmNhbGwodGhp cyxzKSxzfXJldHVybiExfSxyZW1vdmVQYW5lbDpmdW5jdGlvbih0LGEpe2lm KCF0KXJldHVybiExO3ZhciByPXRoaXMuX19pc0xhc3RQYW5lbCh0KSxvPXQu X3BhcmVudDtpZihvJiZvLmluc3RhbmNlT2YoIndjRnJhbWUiKSl7Zm9yKHZh ciBpPXQuX190cmlnZ2VyKGUuRVZFTlQuQ0xPU0lORyksbj0wO248aS5sZW5n dGg7KytuKWlmKCFpW25dKXJldHVybiExO2lmKGE/KHQuX19jb250YWluZXIo dGhpcy4kdHJhbnNpdGlvbiksdC5fcGFyZW50PW51bGwpOnQuX190cmlnZ2Vy KGUuRVZFTlQuQ0xPU0VEKSwhby5yZW1vdmVQYW5lbCh0KSYmIW8uaXNDb2xs YXBzZXIoKSl7aWYocilyZXR1cm4gdGhpcy5fX2FkZFBsYWNlaG9sZGVyKG8p LGE/dC5fX3RyaWdnZXIoZS5FVkVOVC5QRVJTSVNURU5UX0NMT1NFRCk6dC5f X2Rlc3Ryb3koKSwhMDt2YXIgcz10aGlzLl9mbG9hdGluZ0xpc3QuaW5kZXhP ZihvKTstMSE9PXMmJnRoaXMuX2Zsb2F0aW5nTGlzdC5zcGxpY2UocywxKSxz PXRoaXMuX2ZyYW1lTGlzdC5pbmRleE9mKG8pLC0xIT09cyYmdGhpcy5fZnJh bWVMaXN0LnNwbGljZShzLDEpLHM9dGhpcy5fbW9kYWxMaXN0LmluZGV4T2Yo byksLTEhPT1zJiZ0aGlzLl9tb2RhbExpc3Quc3BsaWNlKHMsMSksdGhpcy5f bW9kYWxMaXN0Lmxlbmd0aD90aGlzLl9fZm9jdXModGhpcy5fbW9kYWxMaXN0 W3RoaXMuX21vZGFsTGlzdC5sZW5ndGgtMV0pOnRoaXMuX2Zsb2F0aW5nTGlz dC5sZW5ndGgmJnRoaXMuX19mb2N1cyh0aGlzLl9mbG9hdGluZ0xpc3RbdGhp cy5fZmxvYXRpbmdMaXN0Lmxlbmd0aC0xXSk7dmFyIGw9by5fcGFyZW50O2lm KGwmJmwuaW5zdGFuY2VPZigid2NTcGxpdHRlciIpKXtsLl9fcmVtb3ZlQ2hp bGQobyk7dmFyIGM7bC5wYW5lKDApPyhjPWwucGFuZSgwKSxsLl9wYW5lWzBd PW51bGwpOihjPWwucGFuZSgxKSxsLl9wYW5lWzFdPW51bGwpLGMuX19jb250 YWluZXIodGhpcy4kdHJhbnNpdGlvbiksYy5fcGFyZW50PW51bGwscz10aGlz Ll9zcGxpdHRlckxpc3QuaW5kZXhPZihsKSwtMSE9PXMmJnRoaXMuX3NwbGl0 dGVyTGlzdC5zcGxpY2UocywxKTt2YXIgaD1sLl9wYXJlbnQ7cGFyZW50Q29u dGFpbmVyPWwuX19jb250YWluZXIoKSxsLl9fZGVzdHJveSgpLGgmJmguaW5z dGFuY2VPZigid2NTcGxpdHRlciIpPyhoLl9fcmVtb3ZlQ2hpbGQobCksaC5w YW5lKDApP2gucGFuZSgxLGMpOmgucGFuZSgwLGMpKTpoPT09dGhpcyYmKHRo aXMuX3Jvb3Q9YyxjLl9wYXJlbnQ9dGhpcyxjLl9fY29udGFpbmVyKHBhcmVu dENvbnRhaW5lcikpLHRoaXMuX191cGRhdGUoKX1lbHNlIG89PT10aGlzLl9y b290JiYodGhpcy5fcm9vdD1udWxsKTt0aGlzLl9mb2N1c0ZyYW1lPT09byYm KHRoaXMuX2ZvY3VzRnJhbWU9bnVsbCksby5fX2Rlc3Ryb3koKX1yZXR1cm4g YT90Ll9fdHJpZ2dlcihlLkVWRU5ULlBFUlNJU1RFTlRfQ0xPU0VEKTp0Ll9f ZGVzdHJveSgpLCEwfXJldHVybiExfSxtb3ZlUGFuZWw6ZnVuY3Rpb24odCxh LHIsbyl7dmFyIGk9dGhpcy5fX2lzTGFzdFBhbmVsKHQpLG49dC4kY29udGFp bmVyO3QuX3BhcmVudCYmdC5fcGFyZW50Lmluc3RhbmNlT2YoIndjRnJhbWUi KSYmKG49dC5fcGFyZW50LiRmcmFtZSk7dmFyIHM9bi5vZmZzZXQoKSxsPW4u d2lkdGgoKSxjPW4uaGVpZ2h0KCksaD10Ll9wYXJlbnQsdT0hMTtpZihoJiZo Lmluc3RhbmNlT2YoIndjRnJhbWUiKSl7dT1oLl9pc0Zsb2F0aW5nO2Zvcih2 YXIgZD0wO2Q8aC5fcGFuZWxMaXN0Lmxlbmd0aDsrK2QpaWYoaC5fcGFuZWxM aXN0W2RdPT09dCl7aC5pc0NvbGxhcHNlcigpP2guX2N1clRhYj0tMTpoLl9j dXJUYWI+PWQmJmguX2N1clRhYi0tLHQuX19jb250YWluZXIodGhpcy4kdHJh bnNpdGlvbiksdC5fcGFyZW50PW51bGwsaC5fcGFuZWxMaXN0LnNwbGljZShk LDEpO2JyZWFrfWlmKCFoLmlzQ29sbGFwc2VyKCkmJi0xPT09aC5fY3VyVGFi JiZoLl9wYW5lbExpc3QubGVuZ3RoJiYoaC5fY3VyVGFiPTApLGguX191cGRh dGVUYWJzKCksaC5jb2xsYXBzZSgpLCFoLmlzQ29sbGFwc2VyKCkmJjA9PT1o Ll9wYW5lbExpc3QubGVuZ3RoKWlmKGkpdGhpcy5fX2FkZFBsYWNlaG9sZGVy KGgpO2Vsc2V7dmFyIGY9dGhpcy5fZmxvYXRpbmdMaXN0LmluZGV4T2YoaCk7 LTEhPT1mJiZ0aGlzLl9mbG9hdGluZ0xpc3Quc3BsaWNlKGYsMSksZj10aGlz Ll9mcmFtZUxpc3QuaW5kZXhPZihoKSwtMSE9PWYmJnRoaXMuX2ZyYW1lTGlz dC5zcGxpY2UoZiwxKTt2YXIgcD1oLl9wYXJlbnQ7aWYocCYmcC5pbnN0YW5j ZU9mKCJ3Y1NwbGl0dGVyIikpe3AuX19yZW1vdmVDaGlsZChoKTt2YXIgYjtw LnBhbmUoMCk/KGI9cC5wYW5lKDApLHAuX3BhbmVbMF09bnVsbCk6KGI9cC5w YW5lKDEpLHAuX3BhbmVbMV09bnVsbCkscj09PXAmJihyLl9zaGlmdD1iKSxi Ll9fY29udGFpbmVyKHRoaXMuJHRyYW5zaXRpb24pLGIuX3BhcmVudD1udWxs LGY9dGhpcy5fc3BsaXR0ZXJMaXN0LmluZGV4T2YocCksLTEhPT1mJiZ0aGlz Ll9zcGxpdHRlckxpc3Quc3BsaWNlKGYsMSk7dmFyIF89cC5fcGFyZW50O3Bh cmVudENvbnRhaW5lcj1wLl9fY29udGFpbmVyKCkscC5fX2Rlc3Ryb3koKSxf JiZfLmluc3RhbmNlT2YoIndjU3BsaXR0ZXIiKT8oXy5fX3JlbW92ZUNoaWxk KHApLF8ucGFuZSgwKT9fLnBhbmUoMSxiKTpfLnBhbmUoMCxiKSk6Xz09PXRo aXMmJih0aGlzLl9yb290PWIsYi5fcGFyZW50PXRoaXMsYi5fX2NvbnRhaW5l cihwYXJlbnRDb250YWluZXIpKSx0aGlzLl9fdXBkYXRlKCl9dGhpcy5fZm9j dXNGcmFtZT09PWgmJih0aGlzLl9mb2N1c0ZyYW1lPW51bGwpLGguX19kZXN0 cm95KCl9fXQuaW5pdFNpemUobCxjKSxhPT09ZS5ET0NLLlNUQUNLRUQ/dGhp cy5fX2FkZFBhbmVsR3JvdXBlZCh0LHIsbyk6dGhpcy5fX2FkZFBhbmVsQWxv bmUodCxhLHIsbykscj09dGhpcy5fcGxhY2Vob2xkZXJQYW5lbCYmKHRoaXMu cmVtb3ZlUGFuZWwodGhpcy5fcGxhY2Vob2xkZXJQYW5lbCksdGhpcy5fcGxh Y2Vob2xkZXJQYW5lbD1udWxsKTt2YXIgdj10Ll9wYXJlbnQ7cmV0dXJuIHYm JnYuaW5zdGFuY2VPZigid2NGcmFtZSIpJiYxPT09di5fcGFuZWxMaXN0Lmxl bmd0aCYmdi5wb3Mocy5sZWZ0K2wvMisyMCxzLnRvcCtjLzIrMjAsITApLHRo aXMuX191cGRhdGUoITApLHYmJnYuaW5zdGFuY2VPZigid2NGcmFtZSIpJiZ1 IT09di5faXNGbG9hdGluZyYmKHYuX2lzRmxvYXRpbmc/dC5fX3RyaWdnZXIo ZS5FVkVOVC5ERVRBQ0hFRCk6dC5fX3RyaWdnZXIoZS5FVkVOVC5BVFRBQ0hF RCkpLHQuX190cmlnZ2VyKGUuRVZFTlQuTU9WRUQpLHR9LGZpbmRQYW5lbHM6 ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLGE9MDthPHRoaXMuX2ZyYW1lTGlz dC5sZW5ndGg7KythKWZvcih2YXIgcj10aGlzLl9mcmFtZUxpc3RbYV0sbz0w O288ci5fcGFuZWxMaXN0Lmxlbmd0aDsrK28pe3ZhciBpPXIuX3BhbmVsTGlz dFtvXTt0JiZpLl90eXBlIT09dHx8ZS5wdXNoKGkpfXJldHVybiBlfSxzdGFy dExvYWRpbmc6ZnVuY3Rpb24odCxlLGEpe2lmKCF0aGlzLiRsb2FkaW5nKXt0 aGlzLiRsb2FkaW5nPSQoJzxkaXYgY2xhc3M9IndjTG9hZGluZ0NvbnRhaW5l ciI+PC9kaXY+JyksdGhpcy4kb3V0ZXIuYXBwZW5kKHRoaXMuJGxvYWRpbmcp O3ZhciByPSQoJzxkaXYgY2xhc3M9IndjTG9hZGluZ0JhY2tncm91bmQiPjwv ZGl2PicpOyJudW1iZXIiIT10eXBlb2YgZSYmKGU9LjQpLHIuY3NzKCJvcGFj aXR5IixlKSx0aGlzLiRsb2FkaW5nLmFwcGVuZChyKTt2YXIgbz0kKCc8ZGl2 IGNsYXNzPSJ3Y0xvYWRpbmdJY29uQ29udGFpbmVyIj48aSBjbGFzcz0id2NM b2FkaW5nSWNvbiAnK3RoaXMuX29wdGlvbnMubG9hZGluZ0NsYXNzKyciPjwv aT48L2Rpdj4nKTtpZih0aGlzLiRsb2FkaW5nLmFwcGVuZChvKSx0KXt2YXIg aT0kKCc8c3BhbiBjbGFzcz0id2NMb2FkaW5nTGFiZWwiPicrdCsiPC9zcGFu PiIpO3RoaXMuJGxvYWRpbmcuYXBwZW5kKGkpfSJudW1iZXIiIT10eXBlb2Yg YSYmKGE9MSksby5jc3MoIm9wYWNpdHkiLGEpLGkmJmkuY3NzKCJvcGFjaXR5 IixhKX19LGZpbmlzaExvYWRpbmc6ZnVuY3Rpb24odCl7aWYodGhpcy4kbG9h ZGluZylpZih0PjApe3ZhciBlPXRoaXM7dGhpcy4kbG9hZGluZy5mYWRlT3V0 KHQsZnVuY3Rpb24oKXtlLiRsb2FkaW5nLnJlbW92ZSgpLGUuJGxvYWRpbmc9 bnVsbH0pfWVsc2UgdGhpcy4kbG9hZGluZy5yZW1vdmUoKSx0aGlzLiRsb2Fk aW5nPW51bGx9LG9uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ/KHRoaXMuX2V2 ZW50c1t0XXx8KHRoaXMuX2V2ZW50c1t0XT1bXSksLTEhPT10aGlzLl9ldmVu dHNbdF0uaW5kZXhPZihlKT8hMToodGhpcy5fZXZlbnRzW3RdLnB1c2goZSks ITApKTohMX0sb2ZmOmZ1bmN0aW9uKHQsZSl7aWYoInVuZGVmaW5lZCI9PXR5 cGVvZiB0KXRoaXMuX2V2ZW50cz17fTtlbHNlIGlmKHRoaXMuX2V2ZW50c1t0 XSlpZigidW5kZWZpbmVkIj09dHlwZW9mIGUpdGhpcy5fZXZlbnRzW3RdPVtd O2Vsc2UgZm9yKHZhciBhPTA7YTx0aGlzLl9ldmVudHNbdF0ubGVuZ3RoOysr YSlpZih0aGlzLl9ldmVudHNbdF1bYV09PT1lKXt0aGlzLl9ldmVudHNbdF0u c3BsaWNlKGEsMSk7YnJlYWt9fSx0cmlnZ2VyOmZ1bmN0aW9uKHQsZSl7aWYo IXQpcmV0dXJuITE7Zm9yKHZhciBhPVtdLHI9MDtyPHRoaXMuX2ZyYW1lTGlz dC5sZW5ndGg7KytyKWZvcih2YXIgbz10aGlzLl9mcmFtZUxpc3Rbcl0saT0w O2k8by5fcGFuZWxMaXN0Lmxlbmd0aDsrK2kpe3ZhciBuPW8uX3BhbmVsTGlz dFtpXTthPWEuY29uY2F0KG4uX190cmlnZ2VyKHQsZSkpfXJldHVybiBhLmNv bmNhdCh0aGlzLl9fdHJpZ2dlcih0LGUpKX0sYmFzaWNNZW51OmZ1bmN0aW9u KHQsZSxhKXtjb25zb2xlLmxvZygiV0FSTklORzogd2NEb2NrZXIuYmFzaWNN ZW51IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugd2NEb2NrZXIubWVudSBp bnN0ZWFkLiIpLHRoaXMubWVudSh0LGUsYSl9LG1lbnU6ZnVuY3Rpb24odCxh LHIpe3ZhciBvPXRoaXM7JC5jb250ZXh0TWVudSh7c2VsZWN0b3I6dCxidWls ZDpmdW5jdGlvbih0LGkpe2Zvcih2YXIgbixzPW8uX19tb3VzZShpKSxsPTA7 bDxvLl9mcmFtZUxpc3QubGVuZ3RoOysrbCl7dmFyIGM9dC5oYXNDbGFzcygi d2NGcmFtZSIpJiZ0fHx0LnBhcmVudHMoIi53Y0ZyYW1lIik7aWYoby5fZnJh bWVMaXN0W2xdLiRmcmFtZVswXT09PWNbMF0pe249by5fZnJhbWVMaXN0W2xd O2JyZWFrfX12YXIgaD0hMTskKGkudGFyZ2V0KS5oYXNDbGFzcygid2NUYWJT Y3JvbGxlciIpJiYoaD0hMCk7Zm9yKHZhciB1PXt9LGw9MDtsPG8uX2RvY2tQ YW5lbFR5cGVMaXN0Lmxlbmd0aDsrK2wpe3ZhciBkPW8uX2RvY2tQYW5lbFR5 cGVMaXN0W2xdO2lmKCFkLm9wdGlvbnMuaXNQcml2YXRlKXtpZihkLm9wdGlv bnMubGltaXQ+MCYmby5maW5kUGFuZWxzKGQubmFtZSkubGVuZ3RoPj1kLm9w dGlvbnMubGltaXQpY29udGludWU7dmFyIGY9bnVsbCxwPW51bGwsYj1kLm5h bWU7ZC5vcHRpb25zJiYoZC5vcHRpb25zLmZhaWNvbiYmKHA9ZC5vcHRpb25z LmZhaWNvbiksZC5vcHRpb25zLmljb24mJihmPWQub3B0aW9ucy5pY29uKSxk Lm9wdGlvbnMudGl0bGUmJihiPWQub3B0aW9ucy50aXRsZSkpLHVbZC5uYW1l XT17bmFtZTpiLGljb246ZixmYWljb246cCxjbGFzc05hbWU6IndjTWVudUNy ZWF0ZVBhbmVsIn19fXZhciBfPTAsdj17fSxtPWE7ImZ1bmN0aW9uIj09dHlw ZW9mIGEmJihtPWEodCxpKSk7Zm9yKHZhciBsPTA7bDxtLmxlbmd0aDsrK2wp aWYoJC5pc0VtcHR5T2JqZWN0KG1bbF0pKXZbInNlcCIrXysrXT0iLS0tLS0t LS0tIjtlbHNle3ZhciB3PW1bbF0uY2FsbGJhY2s7dyYmIWZ1bmN0aW9uKHQs ZSl7dC5jYWxsYmFjaz1mdW5jdGlvbih0LGEpe3ZhciByPW51bGwsaT1hLiR0 cmlnZ2VyLnBhcmVudHMoIi53Y0ZyYW1lIikuZmlyc3QoKTtpZihpLmxlbmd0 aClmb3IodmFyIG49MDtuPG8uX2ZyYW1lTGlzdC5sZW5ndGg7KytuKWlbMF09 PT1vLl9mcmFtZUxpc3Rbbl0uJGZyYW1lWzBdJiYocj1vLl9mcmFtZUxpc3Rb bl0ucGFuZWwoKSk7ZSh0LGEscil9fShtW2xdLHcpLHZbbVtsXS5uYW1lXT1t W2xdfXZhciBnPXt9LFQ9IiI7aWYoby5pc0NvbGxhcHNlRW5hYmxlZCgpKXt2 YXIgeD1uLiRjb2xsYXBzZS5jaGlsZHJlbigiZGl2Iik7VD14Lmhhc0NsYXNz KCJ3Y0NvbGxhcHNlTGVmdCIpPyIgd2NDb2xsYXBzZUxlZnQiOnguaGFzQ2xh c3MoIndjQ29sbGFwc2VSaWdodCIpPyIgd2NDb2xsYXBzZVJpZ2h0IjoiIHdj Q29sbGFwc2VCb3R0b20iLGdbZS5ET0NLLkxFRlRdPXtuYW1lOmUuRE9DSy5M RUZULGZhaWNvbjoic2lnbi1pbiB3Y0NvbGxhcHNlTGVmdCB3Y0NvbGxhcHNp YmxlIn0sZ1tlLkRPQ0suUklHSFRdPXtuYW1lOmUuRE9DSy5SSUdIVCxmYWlj b246InNpZ24taW4gd2NDb2xsYXBzZVJpZ2h0IHdjQ29sbGFwc2libGUifSxn W2UuRE9DSy5CT1RUT01dPXtuYW1lOmUuRE9DSy5CT1RUT00sZmFpY29uOiJz aWduLWluIHdjQ29sbGFwc2VCb3R0b20gd2NDb2xsYXBzaWJsZSJ9fXZhciB5 PXY7aWYociYmKCQuaXNFbXB0eU9iamVjdCh2KXx8KHlbInNlcCIrXysrXT0i LS0tLS0tLS0tIiksaD8oeVsiQ2xvc2UgUGFuZWwiXT17bmFtZToiUmVtb3Zl IFBhbmVsIixmYWljb246ImNsb3NlIixkaXNhYmxlZDohbi5wYW5lbCgpLmNs b3NlYWJsZSgpfSxvLmlzQ29sbGFwc2VFbmFibGVkKCkmJihuLmlzQ29sbGFw c2VyKCk/eVsiQXR0YWNoIFBhbmVsIl09e25hbWU6IkRvY2sgUGFuZWwiLGZh aWNvbjoic2lnbi1vdXQiK1QrIiB3Y0NvbGxhcHNlZCIsZGlzYWJsZWQ6IW4u cGFuZWwoKS5tb3ZlYWJsZSgpfTp5LmZvbGQxPXtuYW1lOiJDb2xsYXBzZSBQ YW5lbCIsZmFpY29uOiJzaWduLWluIitUKyIgd2NDb2xsYXBzaWJsZSIsaXRl bXM6ZyxkaXNhYmxlZDohbi5wYW5lbCgpLm1vdmVhYmxlKCl9KSxuLl9pc0Zs b2F0aW5nfHwoeVsiRGV0YWNoIFBhbmVsIl09e25hbWU6IkZsb2F0IFBhbmVs IixmYWljb246ImxldmVsLXVwIixkaXNhYmxlZDohbi5wYW5lbCgpLm1vdmVh YmxlKCl8fG4ucGFuZWwoKS5faXNQbGFjZWhvbGRlcn0pLHlbInNlcCIrXysr XT0iLS0tLS0tLS0tIix5LmZvbGQyPXtuYW1lOiJBZGQgUGFuZWwiLGZhaWNv bjoiY29sdW1ucyIsaXRlbXM6dSxkaXNhYmxlZDohKG4ucGFuZWwoKS5fdGl0 bGVWaXNpYmxlJiYoIW4uX2lzRmxvYXRpbmd8fC0xPT09by5fbW9kYWxMaXN0 LmluZGV4T2YobikpKSxjbGFzc05hbWU6IndjTWVudUNyZWF0ZVBhbmVsIn0p OihuJiYoeVsiQ2xvc2UgUGFuZWwiXT17bmFtZToiUmVtb3ZlIFBhbmVsIixm YWljb246ImNsb3NlIixkaXNhYmxlZDohbi5wYW5lbCgpLmNsb3NlYWJsZSgp fSxvLmlzQ29sbGFwc2VFbmFibGVkKCkmJihuLmlzQ29sbGFwc2VyKCk/eVsi QXR0YWNoIFBhbmVsIl09e25hbWU6IkRvY2sgUGFuZWwiLGZhaWNvbjoic2ln bi1vdXQiK1QrIiB3Y0NvbGxhcHNlZCIsZGlzYWJsZWQ6IW4ucGFuZWwoKS5t b3ZlYWJsZSgpfTp5LmZvbGQxPXtuYW1lOiJDb2xsYXBzZSBQYW5lbCIsZmFp Y29uOiJzaWduLWluIitUKyIgd2NDb2xsYXBzaWJsZSIsaXRlbXM6ZyxkaXNh YmxlZDohbi5wYW5lbCgpLm1vdmVhYmxlKCl9KSxuLl9pc0Zsb2F0aW5nfHwo eVsiRGV0YWNoIFBhbmVsIl09e25hbWU6IkZsb2F0IFBhbmVsIixmYWljb246 ImxldmVsLXVwIixkaXNhYmxlZDohbi5wYW5lbCgpLm1vdmVhYmxlKCl8fG4u cGFuZWwoKS5faXNQbGFjZWhvbGRlcn0pLHlbInNlcCIrXysrXT0iLS0tLS0t LS0tIikseS5mb2xkMj17bmFtZToiQWRkIFBhbmVsIixmYWljb246ImNvbHVt bnMiLGl0ZW1zOnUsZGlzYWJsZWQ6ISghbnx8IW4uX2lzRmxvYXRpbmcmJm4u cGFuZWwoKS5tb3ZlYWJsZSgpKSxjbGFzc05hbWU6IndjTWVudUNyZWF0ZVBh bmVsIn0pLG4mJiFuLl9pc0Zsb2F0aW5nJiZuLnBhbmVsKCkubW92ZWFibGUo KSkpe3ZhciBCPW4uX19yZWN0KCk7by5fZ2hvc3Q9bmV3KG8uX19nZXRDbGFz cygid2NHaG9zdCIpKShCLHMsbyksbi5fX2NoZWNrQW5jaG9yRHJvcChzLCEx LG8uX2dob3N0LCEwLCExLCExKSxvLl9naG9zdC4kZ2hvc3QuaGlkZSgpfXJl dHVybntjYWxsYmFjazpmdW5jdGlvbih0LGEpe2lmKCJDbG9zZSBQYW5lbCI9 PT10KXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnBhbmVsKCkuY2xvc2UoKX0s MTApO2Vsc2UgaWYoIkRldGFjaCBQYW5lbCI9PT10KW8ubW92ZVBhbmVsKG4u cGFuZWwoKSxlLkRPQ0suRkxPQVQsITEpO2Vsc2UgaWYoIkF0dGFjaCBQYW5l bCI9PT10KXt2YXIgcj1uLiRjb2xsYXBzZS5jaGlsZHJlbigiZGl2IiksaT1l LkRPQ0suQk9UVE9NO3IuaGFzQ2xhc3MoIndjQ29sbGFwc2VMZWZ0Iik/aT1l LkRPQ0suTEVGVDpyLmhhc0NsYXNzKCJ3Y0NvbGxhcHNlUmlnaHQiKSYmKGk9 ZS5ET0NLLlJJR0hUKTt2YXIgcz17fTtzd2l0Y2goaSl7Y2FzZSBlLkRPQ0su TEVGVDpzLnc9bi4kZnJhbWUud2lkdGgoKTticmVhaztjYXNlIGUuRE9DSy5S SUdIVDpzLnc9bi4kZnJhbWUud2lkdGgoKTticmVhaztjYXNlIGUuRE9DSy5C T1RUT006cy5oPW4uJGZyYW1lLmhlaWdodCgpfXZhciBsPW8uX2NvbGxhcHNl cltlLkRPQ0suTEVGVF0uX3BhcmVudC5yaWdodCgpO24uY29sbGFwc2UoITAp LG8ubW92ZVBhbmVsKG4ucGFuZWwoKSxpLGwscyl9ZWxzZSBpZih0PT09ZS5E T0NLLkxFRlQpby5tb3ZlUGFuZWwobi5wYW5lbCgpLGUuRE9DSy5MRUZULGUu Q09MTEFQU0VEKTtlbHNlIGlmKHQ9PT1lLkRPQ0suUklHSFQpby5tb3ZlUGFu ZWwobi5wYW5lbCgpLGUuRE9DSy5SSUdIVCxlLkNPTExBUFNFRCk7ZWxzZSBp Zih0PT09ZS5ET0NLLkJPVFRPTSlvLm1vdmVQYW5lbChuLnBhbmVsKCksZS5E T0NLLkJPVFRPTSxlLkNPTExBUFNFRCk7ZWxzZSBpZihvLl9naG9zdCYmbil7 dmFyIGM9by5fZ2hvc3QuYW5jaG9yKCksbD1uLnBhbmVsKCk7Yy5pdGVtJiYo bD1jLml0ZW0uX3BhcmVudCk7dmFyIGg9by5hZGRQYW5lbCh0LGMubG9jLGws by5fZ2hvc3QucmVjdCgpKTtoLmZvY3VzKCl9fSxldmVudHM6e3Nob3c6ZnVu Y3Rpb24odCl7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgYT17fSxyPXQuJG1lbnUu ZmluZCgiLmNvbnRleHQtbWVudS1pdGVtIiksbz0wO288ci5sZW5ndGg7Kytv KXt2YXIgaT0kKHJbb10pLG49aS5maW5kKCJzcGFuIik7bi5sZW5ndGgmJihh W25bMF0uaW5uZXJIVE1MXT1pKX0hZnVuY3Rpb24gcyh0KXtmb3IodmFyIGUg aW4gdCl7dmFyIHI9dFtlXSxvPWFbci5uYW1lXTtpZihvKXt2YXIgaT0kKCc8 ZGl2IGNsYXNzPSJ3Y01lbnVJY29uIj4nKTtpZihvLnByZXBlbmQoaSksci5p Y29uJiZpLmFkZENsYXNzKHIuaWNvbiksci5mYWljb24mJmkuYWRkQ2xhc3Mo ImZhIGZhLW1lbnUgZmEtIityLmZhaWNvbisiIGZhLWxnIGZhLWZ3Iiksby5o YXNDbGFzcygiY29udGV4dC1tZW51LXN1Ym1lbnUiKSl7dmFyIG49JCgnPGRp diBjbGFzcz0id2NNZW51U3ViTWVudSBmYSBmYS1jYXJldC1yaWdodCBmYS1s ZyI+Jyk7by5hcHBlbmQobil9fXIuaXRlbXMmJnMoci5pdGVtcyl9fShlKX0o eSl9LGhpZGU6ZnVuY3Rpb24odCl7by5fZ2hvc3QmJihvLl9naG9zdC5kZXN0 cm95KCksby5fZ2hvc3Q9ITEpfX0sYW5pbWF0aW9uOntkdXJhdGlvbjoyNTAs c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0scmVwb3NpdGlvbjohMSxh dXRvSGlkZTohMCx6SW5kZXg6MjAwLGl0ZW1zOnl9fX0pfSxieXBhc3NNZW51 OmZ1bmN0aW9uKCl7dGhpcy5fbWVudVRpbWVyJiZjbGVhclRpbWVvdXQodGhp cy5fbWVudVRpbWVyKTtmb3IodmFyIHQgaW4gJC5jb250ZXh0TWVudS5tZW51 cyl7dmFyIGU9JC5jb250ZXh0TWVudS5tZW51c1t0XS5zZWxlY3RvcjskKGUp LmNvbnRleHRNZW51KCExKX12YXIgYT10aGlzO3RoaXMuX21lbnVUaW1lcj1z ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluICQuY29udGV4dE1l bnUubWVudXMpe3ZhciBlPSQuY29udGV4dE1lbnUubWVudXNbdF0uc2VsZWN0 b3I7JChlKS5jb250ZXh0TWVudSghMCl9YS5fbWVudVRpbWVyPW51bGx9LDAp fSxzYXZlOmZ1bmN0aW9uKCl7dmFyIHQ9e307dC5mbG9hdGluZz1bXTtmb3Io dmFyIGE9MDthPHRoaXMuX2Zsb2F0aW5nTGlzdC5sZW5ndGg7KythKXQuZmxv YXRpbmcucHVzaCh0aGlzLl9mbG9hdGluZ0xpc3RbYV0uX19zYXZlKCkpO3Jl dHVybiB0LnJvb3Q9dGhpcy5fcm9vdC5fX3NhdmUoKSwkLmlzRW1wdHlPYmpl Y3QodGhpcy5fY29sbGFwc2VyKXx8KHQuY29sbGFwc2Vycz17bGVmdDp0aGlz Ll9jb2xsYXBzZXJbZS5ET0NLLkxFRlRdLl9fc2F2ZSgpLHJpZ2h0OnRoaXMu X2NvbGxhcHNlcltlLkRPQ0suUklHSFRdLl9fc2F2ZSgpLGJvdHRvbTp0aGlz Ll9jb2xsYXBzZXJbZS5ET0NLLkJPVFRPTV0uX19zYXZlKCl9KSxKU09OLnN0 cmluZ2lmeSh0LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9PTEvMD8iSW5maW5p dHkiOmV9KX0scmVzdG9yZTpmdW5jdGlvbih0KXt2YXIgYT1KU09OLnBhcnNl KHQsZnVuY3Rpb24odCxlKXtyZXR1cm4iSW5maW5pdHkiPT09ZT8xLzA6ZX0p O3RoaXMuY2xlYXIoKSx0aGlzLl9yb290PXRoaXMuX19jcmVhdGUoYS5yb290 LHRoaXMsdGhpcy4kY29udGFpbmVyKSx0aGlzLl9yb290Ll9fcmVzdG9yZShh LnJvb3QsdGhpcyk7Zm9yKHZhciByPTA7cjxhLmZsb2F0aW5nLmxlbmd0aDsr K3Ipe3ZhciBvPXRoaXMuX19jcmVhdGUoYS5mbG9hdGluZ1tyXSx0aGlzLHRo aXMuJGNvbnRhaW5lcik7by5fX3Jlc3RvcmUoYS5mbG9hdGluZ1tyXSx0aGlz KX1pZih0aGlzLl9fZm9yY2VVcGRhdGUoITEpLCEkLmlzRW1wdHlPYmplY3Qo YS5jb2xsYXBzZXJzKSYmdGhpcy5pc0NvbGxhcHNlRW5hYmxlZCgpKXt0aGlz Ll9faW5pdENvbGxhcHNlcnMoKSx0aGlzLl9jb2xsYXBzZXJbZS5ET0NLLkxF RlRdLl9fcmVzdG9yZShhLmNvbGxhcHNlcnMubGVmdCx0aGlzKSx0aGlzLl9j b2xsYXBzZXJbZS5ET0NLLlJJR0hUXS5fX3Jlc3RvcmUoYS5jb2xsYXBzZXJz LnJpZ2h0LHRoaXMpLHRoaXMuX2NvbGxhcHNlcltlLkRPQ0suQk9UVE9NXS5f X3Jlc3RvcmUoYS5jb2xsYXBzZXJzLmJvdHRvbSx0aGlzKTt2YXIgaT10aGlz O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpLl9fZm9yY2VVcGRhdGUoKX0pfX0s Y2xlYXI6ZnVuY3Rpb24oKXt0aGlzLl9yb290PW51bGwsdGhpcy50cmlnZ2Vy KGUuRVZFTlQuQ0xPU0VEKTtmb3IodmFyIHQ9MDt0PHRoaXMuX3NwbGl0dGVy TGlzdC5sZW5ndGg7Kyt0KXRoaXMuX3NwbGl0dGVyTGlzdFt0XS5fX2Rlc3Ry b3koKTtmb3IodmFyIHQ9MDt0PHRoaXMuX2ZyYW1lTGlzdC5sZW5ndGg7Kyt0 KXRoaXMuX2ZyYW1lTGlzdFt0XS5fX2Rlc3Ryb3koKTtmb3IoJC5pc0VtcHR5 T2JqZWN0KHRoaXMuX2NvbGxhcHNlcil8fCh0aGlzLl9jb2xsYXBzZXJbZS5E T0NLLkxFRlRdLl9fZGVzdHJveSgpLHRoaXMuX2NvbGxhcHNlcltlLkRPQ0su UklHSFRdLl9fZGVzdHJveSgpLHRoaXMuX2NvbGxhcHNlcltlLkRPQ0suQk9U VE9NXS5fX2Rlc3Ryb3koKSx0aGlzLl9jb2xsYXBzZXI9e30pO3RoaXMuX2Zy YW1lTGlzdC5sZW5ndGg7KXRoaXMuX2ZyYW1lTGlzdC5wb3AoKTtmb3IoO3Ro aXMuX2Zsb2F0aW5nTGlzdC5sZW5ndGg7KXRoaXMuX2Zsb2F0aW5nTGlzdC5w b3AoKTtmb3IoO3RoaXMuX3NwbGl0dGVyTGlzdC5sZW5ndGg7KXRoaXMuX3Nw bGl0dGVyTGlzdC5wb3AoKX0sX19pbml0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24g dCh0KXt2YXIgZT1nLl9fbW91c2UodCk7Zy5fbW91c2VPcmlnaW4ueD1lLngs Zy5fbW91c2VPcmlnaW4ueT1lLnl9ZnVuY3Rpb24gYSh0KXt2YXIgYT1nLl9f bW91c2UodCk7aWYoMz09PWEud2hpY2gpcmV0dXJuITA7aWYoJCgiYm9keSIp LnJlbW92ZUNsYXNzKCJ3Y0Rpc2FibGVTZWxlY3Rpb24iKSxnLl9kcmFnZ2lu Z0ZyYW1lKWZvcih2YXIgcj0wO3I8Zy5fZnJhbWVMaXN0Lmxlbmd0aDsrK3Ip Zy5fZnJhbWVMaXN0W3JdLl9fc2hhZG93KCExKTtpZihnLl9naG9zdCYmKGcu X2RyYWdnaW5nRnJhbWV8fGcuX2NyZWF0aW5nUGFuZWwpKXt2YXIgbz1nLl9n aG9zdC5hbmNob3IoKTtpZihnLl9kcmFnZ2luZ0ZyYW1lKXtpZihvKXtpZigh by5zZWxmJiZ2b2lkIDAhPT1vLmxvYylpZihvLnRhYiYmby5pdGVtLl9wYXJl bnQuX3BhcmVudD09Zy5fZHJhZ2dpbmdGcmFtZSlnLl9kcmFnZ2luZ0ZyYW1l LnRhYk9yaWVudGF0aW9uKG8udGFiKTtlbHNle3ZhciBpPTA7Zy5fZHJhZ2dp bmdGcmFtZVRhYj9pPXBhcnNlSW50KCQoZy5fZHJhZ2dpbmdGcmFtZVRhYiku YXR0cigiaWQiKSk6Zy5fZHJhZ2dpbmdGcmFtZS5wYW5lbCgwKTt2YXIgbjtp ZihvLml0ZW0mJihuPW8uaXRlbS5fcGFyZW50KSxnLl9kcmFnZ2luZ0ZyYW1l Ll9wYW5lbExpc3QuaW5kZXhPZihuKT4tMSl7aWYoMT09PWcuX2RyYWdnaW5n RnJhbWUuX3BhbmVsTGlzdC5sZW5ndGgpcmV0dXJuO2Zvcih2YXIgcj0wO3I8 Zy5fZHJhZ2dpbmdGcmFtZS5fcGFuZWxMaXN0Lmxlbmd0aDsrK3IpaWYobiE9 PWcuX2RyYWdnaW5nRnJhbWUuX3BhbmVsTGlzdFtyXSl7bj1nLl9kcmFnZ2lu Z0ZyYW1lLl9wYW5lbExpc3Rbcl0saS0tO2JyZWFrfX12YXIgcz1udWxsO2lm KHM9Zy5fZHJhZ2dpbmdGcmFtZVRhYj9nLl9kcmFnZ2luZ0ZyYW1lLnBhbmVs KHBhcnNlSW50KCQoZy5fZHJhZ2dpbmdGcmFtZVRhYikuYXR0cigiaWQiKSkp OmcuX2RyYWdnaW5nRnJhbWUucGFuZWwoKSxuPWcubW92ZVBhbmVsKHMsby5s b2MsbixnLl9naG9zdC5yZWN0KCkpLG4uX3BhcmVudC5wYW5lbChuLl9wYXJl bnQuX3BhbmVsTGlzdC5sZW5ndGgtMSwhMCksZy5fZHJhZ2dpbmdGcmFtZVRh Yil7dmFyIGw9bi5fcGFyZW50O2wmJmwuaW5zdGFuY2VPZigid2NGcmFtZSIp JiYoaSs9bC5fcGFuZWxMaXN0Lmxlbmd0aCl9ZWxzZXt2YXIgYz1nLl9naG9z dC5yZWN0KCk7Zm9yKGMudGFiT3JpZW50YXRpb258fChjLnRhYk9yaWVudGF0 aW9uPWcuX2RyYWdnaW5nRnJhbWUudGFiT3JpZW50YXRpb24oKSk7Zy5fZHJh Z2dpbmdGcmFtZS5wYW5lbCgpOylnLm1vdmVQYW5lbChnLl9kcmFnZ2luZ0Zy YW1lLnBhbmVsKCksZS5ET0NLLlNUQUNLRUQsbixjKX12YXIgbD1uLl9wYXJl bnQ7bCYmbC5pbnN0YW5jZU9mKCJ3Y0ZyYW1lIikmJmwucGFuZWwoaSksZy5f X2ZvY3VzKGwpfX1lbHNlIGlmKGcuX2RyYWdnaW5nRnJhbWVUYWJ8fGcuX2Ry YWdnaW5nRnJhbWUucGFuZWwoMCksZy5fZHJhZ2dpbmdGcmFtZVRhYnx8IWcu X19pc0xhc3RGcmFtZShnLl9kcmFnZ2luZ0ZyYW1lKSl7dmFyIG49Zy5fZHJh Z2dpbmdGcmFtZS5wYW5lbChwYXJzZUludCgkKGcuX2RyYWdnaW5nRnJhbWVU YWIpLmF0dHIoImlkIikpKTtpZihnLm1vdmVQYW5lbChuLGUuRE9DSy5GTE9B VCxudWxsLGcuX2dob3N0Ll9fcmVjdCgpKSwhZy5fZHJhZ2dpbmdGcmFtZVRh Yilmb3IoO2cuX2RyYWdnaW5nRnJhbWUucGFuZWwoKTspZy5tb3ZlUGFuZWwo Zy5fZHJhZ2dpbmdGcmFtZS5wYW5lbCgpLGUuRE9DSy5TVEFDS0VELG4se3Rh Yk9yaWVudGF0aW9uOmcuX2RyYWdnaW5nRnJhbWUuX3RhYk9yaWVudGF0aW9u fSk7dmFyIGw9bi5fcGFyZW50O2wmJmwuaW5zdGFuY2VPZigid2NGcmFtZSIp JiYobC5wb3MoYS54LGEueStnLl9naG9zdC5fX3JlY3QoKS5oLzItMTAsITAp LGwuX3NpemUueD1nLl9naG9zdC5fX3JlY3QoKS53LGwuX3NpemUueT1nLl9n aG9zdC5fX3JlY3QoKS5oKSxsLl9fdXBkYXRlKCksZy5fX2ZvY3VzKGwpfX1l bHNlIGlmKGcuX2NyZWF0aW5nUGFuZWwpe3ZhciBoPWUuRE9DSy5GTE9BVCx1 PW51bGw7byYmKGg9by5sb2MsdT1vLml0ZW0/by5pdGVtLl9wYXJlbnQ6by5w YW5lbCksZy5hZGRQYW5lbChnLl9jcmVhdGluZ1BhbmVsLGgsdSxnLl9naG9z dC5yZWN0KCkpfWcuX2dob3N0LmRlc3Ryb3koKSxnLl9naG9zdD1udWxsLGcu dHJpZ2dlcihlLkVWRU5ULkVORF9ET0NLKSxnLl9fdXBkYXRlKCl9cmV0dXJu IGcuX2RyYWdnaW5nU3BsaXR0ZXImJihnLl9kcmFnZ2luZ1NwbGl0dGVyLiRw YW5lWzBdLnJlbW92ZUNsYXNzKCJ3Y1Jlc2l6aW5nIiksZy5fZHJhZ2dpbmdT cGxpdHRlci4kcGFuZVsxXS5yZW1vdmVDbGFzcygid2NSZXNpemluZyIpKSxn Ll9kcmFnZ2luZ1NwbGl0dGVyPW51bGwsZy5fZHJhZ2dpbmdGcmFtZT1udWxs LGcuX2RyYWdnaW5nRnJhbWVTaXplcj1udWxsLGcuX2RyYWdnaW5nRnJhbWVU YWI9bnVsbCxnLl9kcmFnZ2luZ0ZyYW1lVG9wcGVyPSExLGcuX2RyYWdnaW5n Q3VzdG9tVGFiRnJhbWU9bnVsbCxnLl9yZW1vdmluZ1BhbmVsPW51bGwsITB9 ZnVuY3Rpb24gcih0KXt4PXQ7dmFyIGU9Zy5fX21vdXNlKHQpO2lmKCEoMyE9 PWUud2hpY2gmJihnLl9kcmFnZ2luZ1NwbGl0dGVyfHxnLl9kcmFnZ2luZ0Zy YW1lU2l6ZXJ8fGcuX2RyYWdnaW5nQ3VzdG9tVGFiRnJhbWV8fGcuX2dob3N0 fHxnLl9kcmFnZ2luZ0ZyYW1lfHxnLl9kcmFnZ2luZ0ZyYW1lVGFiKSkpcmV0 dXJuITA7dmFyIGE9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYS1UPGcuX29w dGlvbnMucmVzcG9uc2VSYXRlKXJldHVybiB5fHwoeT1zZXRUaW1lb3V0KGZ1 bmN0aW9uKCl7VD0wLHk9MCxyKHgpfSxnLl9vcHRpb25zLnJlc3BvbnNlUmF0 ZSkpLCEwO2lmKFQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksZy5fZHJhZ2dpbmdT cGxpdHRlcilnLl9kcmFnZ2luZ1NwbGl0dGVyLl9fbW92ZUJhcihlKTtlbHNl IGlmKGcuX2RyYWdnaW5nRnJhbWVTaXplcil7dmFyIG89Zy4kY29udGFpbmVy Lm9mZnNldCgpO2UueCs9by5sZWZ0LGUueSs9by50b3AsZy5fZHJhZ2dpbmdG cmFtZS5fX3Jlc2l6ZShnLl9kcmFnZ2luZ0ZyYW1lU2l6ZXIsZSksZy5fZHJh Z2dpbmdGcmFtZS5fX3VwZGF0ZSgpfWVsc2UgaWYoZy5fZHJhZ2dpbmdDdXN0 b21UYWJGcmFtZSl7aWYoZy5fZHJhZ2dpbmdDdXN0b21UYWJGcmFtZS5tb3Zl YWJsZSgpKXt2YXIgaT0kKHQudGFyZ2V0KS5oYXNDbGFzcygid2NQYW5lbFRh YiIpPyQodC50YXJnZXQpOiQodC50YXJnZXQpLnBhcmVudHMoIi53Y1BhbmVs VGFiIik7Zy5fZHJhZ2dpbmdGcmFtZVRhYiYmaSYmaS5sZW5ndGgmJmcuX2Ry YWdnaW5nRnJhbWVUYWIhPT10LnRhcmdldCYmKGcuX2RyYWdnaW5nRnJhbWVU YWI9Zy5fZHJhZ2dpbmdDdXN0b21UYWJGcmFtZS5tb3ZlVGFiKHBhcnNlSW50 KCQoZy5fZHJhZ2dpbmdGcmFtZVRhYikuYXR0cigiaWQiKSkscGFyc2VJbnQo aS5hdHRyKCJpZCIpKSkpfX1lbHNlIGlmKGcuX2dob3N0KWlmKGcuX2RyYWdn aW5nRnJhbWUpe2cuX2dob3N0Ll9fbW92ZShlKTt2YXIgbj0hKGcuX2RyYWdn aW5nRnJhbWUuX2lzRmxvYXRpbmd8fDE9PT1lLndoaWNoKTtpZihnLl9kcmFn Z2luZ0ZyYW1lLl9fY2hlY2tBbmNob3JEcm9wKGUsITAsZy5fZ2hvc3QsZy5f ZHJhZ2dpbmdGcmFtZS5fcGFuZWxMaXN0Lmxlbmd0aD4xJiZnLl9kcmFnZ2lu Z0ZyYW1lVGFiLGcuX2RyYWdnaW5nRnJhbWVUb3BwZXIsIWcuX19pc0xhc3RG cmFtZShnLl9kcmFnZ2luZ0ZyYW1lKSkpe2cuX2RyYWdnaW5nRnJhbWUuX19z aGFkb3coITEpO3ZhciBzPSQoZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChl LngsZS55KSksaT1zLmhhc0NsYXNzKCJ3Y1BhbmVsVGFiIik/czpzLnBhcmVu dHMoIi53Y1BhbmVsVGFiIik7Zy5fZHJhZ2dpbmdGcmFtZVRhYiYmaS5sZW5n dGgmJmcuX2RyYWdnaW5nRnJhbWVUYWIhPT1pWzBdJiYoZy5fZHJhZ2dpbmdG cmFtZVRhYj1nLl9kcmFnZ2luZ0ZyYW1lLl9fdGFiTW92ZShwYXJzZUludCgk KGcuX2RyYWdnaW5nRnJhbWVUYWIpLmF0dHIoImlkIikpLHBhcnNlSW50KGku YXR0cigiaWQiKSkpKX1lbHNle2lmKChuZXcgRGF0ZSkuZ2V0VGltZSgpLUI8 Zy5fb3B0aW9ucy5tb3ZlU3RhcnREZWxheSlyZXR1cm47aWYoZy5fZHJhZ2dp bmdGcmFtZS5fX3NoYWRvdyghMCksZy5fX2ZvY3VzKCksIW4pZm9yKHZhciBs PTA7bDxnLl9mcmFtZUxpc3QubGVuZ3RoOysrbClpZihnLl9mcmFtZUxpc3Rb bF0hPT1nLl9kcmFnZ2luZ0ZyYW1lJiZnLl9mcmFtZUxpc3RbbF0uX19jaGVj a0FuY2hvckRyb3AoZSwhMSxnLl9naG9zdCwhMCxnLl9kcmFnZ2luZ0ZyYW1l VG9wcGVyLCFnLl9faXNMYXN0RnJhbWUoZy5fZHJhZ2dpbmdGcmFtZSkpKXJl dHVybiB2b2lkIGcuX2RyYWdnaW5nRnJhbWUuX19zaGFkb3coITApO2cuX2do b3N0LmFuY2hvcihlLG51bGwpfX1lbHNlIGcuX2NyZWF0aW5nUGFuZWwmJmcu X2dob3N0LnVwZGF0ZShlKTtlbHNlIGcuX2RyYWdnaW5nRnJhbWUmJiFnLl9k cmFnZ2luZ0ZyYW1lVGFiJiYoZy5fZHJhZ2dpbmdGcmFtZS5fX21vdmUoZSks Zy5fZHJhZ2dpbmdGcmFtZS5fX3VwZGF0ZSgpKTtyZXR1cm4hMH1mdW5jdGlv biBvKCl7cmV0dXJuITF9ZnVuY3Rpb24gaSgpe2cuX2dob3N0JiZnLl9naG9z dC4kZ2hvc3Quc3RvcCgpLmZhZGVJbigyMDApfWZ1bmN0aW9uIG4oKXtnLl9n aG9zdCYmZy5fZ2hvc3QuJGdob3N0LnN0b3AoKS5mYWRlT3V0KDIwMCl9ZnVu Y3Rpb24gcyh0KXtnLl9tb2RhbExpc3QubGVuZ3RoJiZnLl9tb2RhbExpc3Rb Zy5fbW9kYWxMaXN0Lmxlbmd0aC0xXS5fX2ZvY3VzKCEwKX1mdW5jdGlvbiBs KHQpe3QucHJldmVudERlZmF1bHQoKSx0LnJldHVyblZhbHVlPSExfWZ1bmN0 aW9uIGMoKXskKCJib2R5IikuYWRkQ2xhc3MoIndjRGlzYWJsZVNlbGVjdGlv biIpfWZ1bmN0aW9uIGgodCl7JCgiYm9keSIpLnJlbW92ZUNsYXNzKCJ3Y0Rp c2FibGVTZWxlY3Rpb24iKTtmb3IodmFyIGU9MDtlPGcuX3RhYkxpc3QubGVu Z3RoOysrZSl7dmFyIGE9Zy5fdGFiTGlzdFtlXTtpZihhLiRjbG9zZVswXT09 PXRoaXMpe3ZhciByPWEudGFiKCk7cmV0dXJuIGEucmVtb3ZlVGFiKHIpLHZv aWQgdC5zdG9wUHJvcGFnYXRpb24oKX1pZihhLiR0YWJMZWZ0WzBdPT09dGhp cylyZXR1cm4gYS5fdGFiU2Nyb2xsUG9zLT1hLiR0YWJCYXIud2lkdGgoKS8y LGEuX3RhYlNjcm9sbFBvczwwJiYoYS5fdGFiU2Nyb2xsUG9zPTApLGEuX191 cGRhdGVUYWJzKCksdm9pZCB0LnN0b3BQcm9wYWdhdGlvbigpO2lmKGEuJHRh YlJpZ2h0WzBdPT09dGhpcylyZXR1cm4gYS5fdGFiU2Nyb2xsUG9zKz1hLiR0 YWJCYXIud2lkdGgoKS8yLGEuX191cGRhdGVUYWJzKCksdm9pZCB0LnN0b3BQ cm9wYWdhdGlvbigpfX1mdW5jdGlvbiB1KCl7JCgiYm9keSIpLnJlbW92ZUNs YXNzKCJ3Y0Rpc2FibGVTZWxlY3Rpb24iKTtmb3IodmFyIHQ9MDt0PGcuX2Zy YW1lTGlzdC5sZW5ndGg7Kyt0KXt2YXIgYT1nLl9mcmFtZUxpc3RbdF07aWYo YS4kY2xvc2VbMF09PT10aGlzKXJldHVybiB2b2lkIGcuX19jbG9zZVBhbmVs KGEucGFuZWwoKSk7aWYoYS4kY29sbGFwc2VbMF09PT10aGlzKXt2YXIgcj1h LiRjb2xsYXBzZS5jaGlsZHJlbigiZGl2Iiksbz1lLkRPQ0suQk9UVE9NO2lm KHIuaGFzQ2xhc3MoIndjQ29sbGFwc2VMZWZ0Iik/bz1lLkRPQ0suTEVGVDpy Lmhhc0NsYXNzKCJ3Y0NvbGxhcHNlUmlnaHQiKSYmKG89ZS5ET0NLLlJJR0hU KSxhLmlzQ29sbGFwc2VyKCkpe3ZhciBpPXt9O3N3aXRjaChvKXtjYXNlIGUu RE9DSy5MRUZUOmkudz1hLiRmcmFtZS53aWR0aCgpO2JyZWFrO2Nhc2UgZS5E T0NLLlJJR0hUOmkudz1hLiRmcmFtZS53aWR0aCgpO2JyZWFrO2Nhc2UgZS5E T0NLLkJPVFRPTTppLmg9YS4kZnJhbWUuaGVpZ2h0KCl9dmFyIG49Zy5fY29s bGFwc2VyW2UuRE9DSy5MRUZUXS5fcGFyZW50LnJpZ2h0KCk7YS5jb2xsYXBz ZSghMCksZy5tb3ZlUGFuZWwoYS5wYW5lbCgpLG8sbixpKX1lbHNlIGcubW92 ZVBhbmVsKGEucGFuZWwoKSxvLGUuQ09MTEFQU0VEKTtyZXR1cm4gdm9pZCBn Ll9fdXBkYXRlKCl9aWYoYS4kdGFiTGVmdFswXT09PXRoaXMpcmV0dXJuIGEu X3RhYlNjcm9sbFBvcy09YS4kdGFiQmFyLndpZHRoKCkvMixhLl90YWJTY3Jv bGxQb3M8MCYmKGEuX3RhYlNjcm9sbFBvcz0wKSx2b2lkIGEuX191cGRhdGVU YWJzKCk7aWYoYS4kdGFiUmlnaHRbMF09PT10aGlzKXJldHVybiBhLl90YWJT Y3JvbGxQb3MrPWEuJHRhYkJhci53aWR0aCgpLzIsdm9pZCBhLl9fdXBkYXRl VGFicygpO2Zvcih2YXIgcz0wO3M8YS5fYnV0dG9uTGlzdC5sZW5ndGg7Kytz KWlmKGEuX2J1dHRvbkxpc3Rbc11bMF09PT10aGlzKXt2YXIgbD1hLl9idXR0 b25MaXN0W3NdLGM9e25hbWU6bC5kYXRhKCJuYW1lIiksaXNUb2dnbGVkOiEx fTtsLmhhc0NsYXNzKCJ3Y0ZyYW1lQnV0dG9uVG9nZ2xlciIpJiYobC50b2dn bGVDbGFzcygid2NGcmFtZUJ1dHRvblRvZ2dsZWQiKSxsLmhhc0NsYXNzKCJ3 Y0ZyYW1lQnV0dG9uVG9nZ2xlZCIpJiYoYy5pc1RvZ2dsZWQ9ITApKTt2YXIg aD1hLnBhbmVsKCk7cmV0dXJuIGguYnV0dG9uU3RhdGUoYy5uYW1lLGMuaXNU b2dnbGVkKSx2b2lkIGguX190cmlnZ2VyKGUuRVZFTlQuQlVUVE9OLGMpfX19 ZnVuY3Rpb24gZCh0KXt2YXIgZT1nLl9fbW91c2UodCk7aWYoMj09PWUud2hp Y2gpZm9yKHZhciBhPXBhcnNlSW50KCQodGhpcykuYXR0cigiaWQiKSkscj0w O3I8Zy5fZnJhbWVMaXN0Lmxlbmd0aDsrK3Ipe3ZhciBvPWcuX2ZyYW1lTGlz dFtyXTtpZihvLiR0YWJCYXJbMF09PT0kKHRoaXMpLnBhcmVudHMoIi53Y0Zy YW1lVGl0bGVCYXIiKVswXSl7dmFyIGk9by5fcGFuZWxMaXN0W2FdO3JldHVy biB2b2lkKGcuX3JlbW92aW5nUGFuZWw9PT1pJiYoZy5yZW1vdmVQYW5lbChp KSxnLl9fdXBkYXRlKCkpKX19fWZ1bmN0aW9uIGYodCl7dmFyIGU9Zy5fX21v dXNlKHQpO2lmKDEhPT1lLndoaWNoKXJldHVybiEwOyQoImJvZHkiKS5hZGRD bGFzcygid2NEaXNhYmxlU2VsZWN0aW9uIik7Zm9yKHZhciBhPTA7YTxnLl9z cGxpdHRlckxpc3QubGVuZ3RoOysrYSlpZihnLl9zcGxpdHRlckxpc3RbYV0u JGJhclswXT09PXRoaXMpe2cuX2RyYWdnaW5nU3BsaXR0ZXI9Zy5fc3BsaXR0 ZXJMaXN0W2FdLGcuX2RyYWdnaW5nU3BsaXR0ZXIuJHBhbmVbMF0uYWRkQ2xh c3MoIndjUmVzaXppbmciKSxnLl9kcmFnZ2luZ1NwbGl0dGVyLiRwYW5lWzFd LmFkZENsYXNzKCJ3Y1Jlc2l6aW5nIiksdC5wcmV2ZW50RGVmYXVsdCgpO2Jy ZWFrfXJldHVybiEwfWZ1bmN0aW9uIHAodCl7dmFyIGE9Zy5fX21vdXNlKHQp O2lmKDM9PT1hLndoaWNoKXJldHVybiEwO2lmKCQodC50YXJnZXQpLmhhc0Ns YXNzKCJ3Y0ZyYW1lQnV0dG9uIil8fCQodC50YXJnZXQpLnBhcmVudHMoIi53 Y0ZyYW1lQnV0dG9uIikubGVuZ3RoKXJldHVybiEwO0I9KG5ldyBEYXRlKS5n ZXRUaW1lKCksJCgiYm9keSIpLmFkZENsYXNzKCJ3Y0Rpc2FibGVTZWxlY3Rp b24iKTtmb3IodmFyIHI9MDtyPGcuX2ZyYW1lTGlzdC5sZW5ndGg7KytyKWlm KGcuX2ZyYW1lTGlzdFtyXS4kdGl0bGVCYXJbMF09PXRoaXN8fGcuX2ZyYW1l TGlzdFtyXS4kdGFiQmFyWzBdPT10aGlzKXtnLl9kcmFnZ2luZ0ZyYW1lPWcu X2ZyYW1lTGlzdFtyXSxnLl9kcmFnZ2luZ0ZyYW1lLl9fYW5jaG9yTW92ZShh KTt2YXIgbz0kKHQudGFyZ2V0KS5oYXNDbGFzcygid2NQYW5lbFRhYiIpPyQo dC50YXJnZXQpOiQodC50YXJnZXQpLnBhcmVudHMoIi53Y1BhbmVsVGFiIik7 aWYobyYmby5sZW5ndGgpe3ZhciBpPXBhcnNlSW50KG8uYXR0cigiaWQiKSk7 Zy5fZHJhZ2dpbmdGcmFtZS5wYW5lbChpLCEwKSxnLl9kcmFnZ2luZ0ZyYW1l VGFiPW9bMF0sJCh3aW5kb3cpLmZvY3VzKCl9dmFyIG49ITA7aWYoZy5fZHJh Z2dpbmdGcmFtZVRhYj9vLmhhc0NsYXNzKCJ3Y05vdE1vdmVhYmxlIikmJihu PSExKTpnLl9kcmFnZ2luZ0ZyYW1lLl9pc0Zsb2F0aW5nJiYxPT09YS53aGlj aCYmKG49ITEpLG4peyFnLl9kcmFnZ2luZ0ZyYW1lVGFiJiZnLl9kcmFnZ2lu Z0ZyYW1lLmlzQ29sbGFwc2VyKCkmJihnLl9kcmFnZ2luZ0ZyYW1lVGFiPWcu X2RyYWdnaW5nRnJhbWUucGFuZWwoKSksZy5fZHJhZ2dpbmdGcmFtZVRvcHBl cj0kKHQudGFyZ2V0KS5wYXJlbnRzKCIud2NGcmFtZVRvcHBlciIpLmxlbmd0 aD4wO3ZhciBzPWcuX2RyYWdnaW5nRnJhbWUuX19yZWN0KCk7Zy5fZ2hvc3Q9 bmV3KGcuX19nZXRDbGFzcygid2NHaG9zdCIpKShzLGEsZyksZy5fZHJhZ2dp bmdGcmFtZS5fX2NoZWNrQW5jaG9yRHJvcChhLCEwLGcuX2dob3N0LCEwLGcu X2RyYWdnaW5nRnJhbWVUb3BwZXIsIWcuX19pc0xhc3RGcmFtZShnLl9kcmFn Z2luZ0ZyYW1lKSksZy50cmlnZ2VyKGUuRVZFTlQuQkVHSU5fRE9DSyl9YnJl YWt9Zm9yKHZhciByPTA7cjxnLl90YWJMaXN0Lmxlbmd0aDsrK3IpaWYoZy5f dGFiTGlzdFtyXS4kdGFiQmFyWzBdPT10aGlzKXtnLl9kcmFnZ2luZ0N1c3Rv bVRhYkZyYW1lPWcuX3RhYkxpc3Rbcl07dmFyIG89JCh0LnRhcmdldCkuaGFz Q2xhc3MoIndjUGFuZWxUYWIiKT8kKHQudGFyZ2V0KTokKHQudGFyZ2V0KS5w YXJlbnRzKCIud2NQYW5lbFRhYiIpO2lmKG8mJm8ubGVuZ3RoKXt2YXIgaT1w YXJzZUludChvLmF0dHIoImlkIikpO2cuX2RyYWdnaW5nQ3VzdG9tVGFiRnJh bWUudGFiKGksITApLGcuX2RyYWdnaW5nRnJhbWVUYWI9b1swXX1icmVha31y ZXR1cm4gZy5fZHJhZ2dpbmdGcmFtZSYmZy5fX2ZvY3VzKGcuX2RyYWdnaW5n RnJhbWUpLCEwfWZ1bmN0aW9uIGIodCl7dmFyIGU9Zy5fX21vdXNlKHQpO2lm KDM9PT1lLndoaWNoKXJldHVybiEwO2Zvcih2YXIgYT0wO2E8Zy5fZnJhbWVM aXN0Lmxlbmd0aDsrK2EpaWYoZy5fZnJhbWVMaXN0W2FdLnBhbmVsKCkmJmcu X2ZyYW1lTGlzdFthXS5wYW5lbCgpLmxheW91dCgpLnNjZW5lKClbMF09PXRo aXMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnLl9fZm9jdXMoZy5fZnJhbWVM aXN0W2FdKX0sMTApO2JyZWFrfXJldHVybiEwfWZ1bmN0aW9uIF8odCl7dmFy IGU9Zy5fX21vdXNlKHQpO2lmKDM9PT1lLndoaWNoKXJldHVybiEwOyQoImJv ZHkiKS5hZGRDbGFzcygid2NEaXNhYmxlU2VsZWN0aW9uIik7Zm9yKHZhciBh PTA7YTxnLl9mcmFtZUxpc3QubGVuZ3RoOysrYSlpZihnLl9mcmFtZUxpc3Rb YV0uX2lzRmxvYXRpbmcpe2lmKGcuX2ZyYW1lTGlzdFthXS4kdG9wWzBdPT10 aGlzKXtnLl9kcmFnZ2luZ0ZyYW1lPWcuX2ZyYW1lTGlzdFthXSxnLl9kcmFn Z2luZ0ZyYW1lU2l6ZXI9WyJ0b3AiXTticmVha31pZihnLl9mcmFtZUxpc3Rb YV0uJGJvdHRvbVswXT09dGhpcyl7Zy5fZHJhZ2dpbmdGcmFtZT1nLl9mcmFt ZUxpc3RbYV0sZy5fZHJhZ2dpbmdGcmFtZVNpemVyPVsiYm90dG9tIl07YnJl YWt9aWYoZy5fZnJhbWVMaXN0W2FdLiRsZWZ0WzBdPT10aGlzKXtnLl9kcmFn Z2luZ0ZyYW1lPWcuX2ZyYW1lTGlzdFthXSxnLl9kcmFnZ2luZ0ZyYW1lU2l6 ZXI9WyJsZWZ0Il07YnJlYWt9aWYoZy5fZnJhbWVMaXN0W2FdLiRyaWdodFsw XT09dGhpcyl7Zy5fZHJhZ2dpbmdGcmFtZT1nLl9mcmFtZUxpc3RbYV0sZy5f ZHJhZ2dpbmdGcmFtZVNpemVyPVsicmlnaHQiXTticmVha31pZihnLl9mcmFt ZUxpc3RbYV0uJGNvcm5lcjFbMF09PXRoaXMpe2cuX2RyYWdnaW5nRnJhbWU9 Zy5fZnJhbWVMaXN0W2FdLGcuX2RyYWdnaW5nRnJhbWVTaXplcj1bInRvcCIs ImxlZnQiXTticmVha31pZihnLl9mcmFtZUxpc3RbYV0uJGNvcm5lcjJbMF09 PXRoaXMpe2cuX2RyYWdnaW5nRnJhbWU9Zy5fZnJhbWVMaXN0W2FdLGcuX2Ry YWdnaW5nRnJhbWVTaXplcj1bInRvcCIsInJpZ2h0Il07YnJlYWt9aWYoZy5f ZnJhbWVMaXN0W2FdLiRjb3JuZXIzWzBdPT10aGlzKXtnLl9kcmFnZ2luZ0Zy YW1lPWcuX2ZyYW1lTGlzdFthXSxnLl9kcmFnZ2luZ0ZyYW1lU2l6ZXI9WyJi b3R0b20iLCJyaWdodCJdO2JyZWFrfWlmKGcuX2ZyYW1lTGlzdFthXS4kY29y bmVyNFswXT09dGhpcyl7Zy5fZHJhZ2dpbmdGcmFtZT1nLl9mcmFtZUxpc3Rb YV0sZy5fZHJhZ2dpbmdGcmFtZVNpemVyPVsiYm90dG9tIiwibGVmdCJdO2Jy ZWFrfX1yZXR1cm4gZy5fZHJhZ2dpbmdGcmFtZSYmZy5fX2ZvY3VzKGcuX2Ry YWdnaW5nRnJhbWUpLCEwfWZ1bmN0aW9uIHYodCl7dmFyIGE9Zy5fX21vdXNl KHQpO2lmKDEhPT1hLndoaWNoKXJldHVybiEwO3ZhciByPSQodGhpcykuZGF0 YSgicGFuZWwiKSxvPWcucGFuZWxUeXBlSW5mbyhyKTtpZihvKXt2YXIgaT17 eDphLngtMjUwLHk6YS55LHc6NTAwLGg6NTAwfTskKCJib2R5IikuYWRkQ2xh c3MoIndjRGlzYWJsZVNlbGVjdGlvbiIpLGcuX2dob3N0PW5ldyhnLl9fZ2V0 Q2xhc3MoIndjR2hvc3QiKSkoaSxhLGcpLGcuX2dob3N0LnVwZGF0ZShhKSxn Ll9naG9zdC5hbmNob3IoYSxnLl9naG9zdC5hbmNob3IoKSksZy5fY3JlYXRp bmdQYW5lbD1yLGcuX19mb2N1cygpLGcudHJpZ2dlcihlLkVWRU5ULkJFR0lO X0RPQ0spfX1mdW5jdGlvbiBtKHQpe3ZhciBlPWcuX19tb3VzZSh0KTtpZigy IT09ZS53aGljaClyZXR1cm4hMDtmb3IodmFyIGE9cGFyc2VJbnQoJCh0aGlz KS5hdHRyKCJpZCIpKSxyPTA7cjxnLl9mcmFtZUxpc3QubGVuZ3RoOysrcil7 dmFyIG89Zy5fZnJhbWVMaXN0W3JdO2lmKG8uJHRhYkJhclswXT09PSQodGhp cykucGFyZW50cygiLndjRnJhbWVUaXRsZUJhciIpWzBdKXt2YXIgaT1vLl9w YW5lbExpc3RbYV07cmV0dXJuIGkmJmkuY2xvc2VhYmxlKCkmJihnLl9yZW1v dmluZ1BhbmVsPW8uX3BhbmVsTGlzdFthXSksITB9fXJldHVybiEwfWZ1bmN0 aW9uIHcodCl7Mjc9PXQua2V5Q29kZSYmZy5fZ2hvc3QmJihnLl9naG9zdC5k ZXN0cm95KCksZy5fZ2hvc3Q9ITEsZy50cmlnZ2VyKGUuRVZFTlQuRU5EX0RP Q0spLGcuX2RyYWdnaW5nRnJhbWUmJmcuX2RyYWdnaW5nRnJhbWUuX19zaGFk b3coITEpLGcuX2NyZWF0aW5nUGFuZWw9ITEsZy5fZHJhZ2dpbmdTcGxpdHRl cj1udWxsLGcuX2RyYWdnaW5nRnJhbWU9bnVsbCxnLl9kcmFnZ2luZ0ZyYW1l U2l6ZXI9bnVsbCxnLl9kcmFnZ2luZ0ZyYW1lVGFiPW51bGwsZy5fZHJhZ2dp bmdGcmFtZVRvcHBlcj0hMSxnLl9kcmFnZ2luZ0N1c3RvbVRhYkZyYW1lPW51 bGwsZy5fcmVtb3ZpbmdQYW5lbD1udWxsKX12YXIgZz10aGlzO3RoaXMuX19j b21wYXRpYmlsaXR5Q2hlY2soKSx0aGlzLl9yb290PW51bGwsdGhpcy5fX2Fk ZFBsYWNlaG9sZGVyKCksdGhpcy5fb3B0aW9ucy5hbGxvd0NvbnRleHRNZW51 JiZ0aGlzLm1lbnUoIi53Y0ZyYW1lIixbXSwhMCksdGhpcy50aGVtZSh0aGlz Ll9vcHRpb25zLnRoZW1lKSx0aGlzLl91cGRhdGVJZD1zZXRJbnRlcnZhbChm dW5jdGlvbigpe2lmKGcuX2RpcnR5KXtnLl9kaXJ0eT0hMSxnLl9yb290JiZn Ll9yb290Ll9fdXBkYXRlKGcuX2RpcnR5RG9udE1vdmUpO2Zvcih2YXIgdD0w O3Q8Zy5fZmxvYXRpbmdMaXN0Lmxlbmd0aDsrK3QpZy5fZmxvYXRpbmdMaXN0 W3RdLl9fdXBkYXRlKCl9fSx0aGlzLl9vcHRpb25zLnJlc3BvbnNlUmF0ZSks JCh3aW5kb3cpLnJlc2l6ZSh0aGlzLl9fcmVzaXplLmJpbmQodGhpcykpLCQo ImJvZHkiKS5vbigiY29udGV4dG1lbnUiLCIud2NTcGxpdHRlckJhciIsbyks JCgiYm9keSIpLm9uKCJtb3VzZWVudGVyIiwiLndjTWVudUNyZWF0ZVBhbmVs IixpKSwkKCJib2R5Iikub24oIm1vdXNlbGVhdmUiLCIud2NNZW51Q3JlYXRl UGFuZWwiLG4pLCQoImJvZHkiKS5vbigibW91c2Vtb3ZlIixyKSwkKCJib2R5 Iikub24oInRvdWNobW92ZSIsciksJCgiYm9keSIpLm9uKCJtb3VzZWRvd24i LHQpLCQoImJvZHkiKS5vbigidG91Y2hzdGFydCIsdCksJCgiYm9keSIpLm9u KCJtb3VzZWRvd24iLCIud2NNb2RhbEJsb2NrZXIiLHMpLCQoImJvZHkiKS5v bigidG91Y2hzdGFydCIsIi53Y01vZGFsQmxvY2tlciIscyksJCgiYm9keSIp Lm9uKCJtb3VzZWRvd24iLCIud2NQYW5lbFRhYiIsbCksJCgiYm9keSIpLm9u KCJ0b3VjaHN0YXJ0IiwiLndjUGFuZWxUYWIiLGwpLCQoImJvZHkiKS5vbigi bW91c2Vkb3duIiwiLndjRnJhbWVCdXR0b25CYXIgPiAud2NGcmFtZUJ1dHRv biIsYyksJCgiYm9keSIpLm9uKCJ0b3VjaHN0YXJ0IiwiLndjRnJhbWVCdXR0 b25CYXIgPiAud2NGcmFtZUJ1dHRvbiIsYyksJCgiYm9keSIpLm9uKCJtb3Vz ZWRvd24iLCIud2NGcmFtZVRpdGxlQmFyIixwKSwkKCJib2R5Iikub24oInRv dWNoc3RhcnQiLCIud2NGcmFtZVRpdGxlQmFyIixwKSwkKCJib2R5Iikub24o Im1vdXNlZG93biIsIi53Y1NwbGl0dGVyQmFyIixmKSwkKCJib2R5Iikub24o InRvdWNoc3RhcnQiLCIud2NTcGxpdHRlckJhciIsZiksJCgiYm9keSIpLm9u KCJtb3VzZWRvd24iLCIud2NQYW5lbFRhYiIsbSksJCgiYm9keSIpLm9uKCJ0 b3VjaHN0YXJ0IiwiLndjUGFuZWxUYWIiLG0pLCQoImJvZHkiKS5vbigibW91 c2V1cCIsIi53Y1BhbmVsVGFiIixkKSwkKCJib2R5Iikub24oInRvdWNoZW5k IiwiLndjUGFuZWxUYWIiLGQpLCQoImJvZHkiKS5vbigibW91c2Vkb3duIiwi LndjTGF5b3V0IixiKSwkKCJib2R5Iikub24oInRvdWNoc3RhcnQiLCIud2NM YXlvdXQiLGIpLCQoImJvZHkiKS5vbigibW91c2Vkb3duIiwiLndjRnJhbWVF ZGdlIixfKSwkKCJib2R5Iikub24oInRvdWNoc3RhcnQiLCIud2NGcmFtZUVk Z2UiLF8pLCQoImJvZHkiKS5vbigibW91c2Vkb3duIiwiLndjQ3JlYXRlUGFu ZWwiLHYpLCQoImJvZHkiKS5vbigidG91Y2hzdGFydCIsIi53Y0NyZWF0ZVBh bmVsIix2KSwkKCJib2R5Iikub24oIm1vdXNldXAiLGEpLCQoImJvZHkiKS5v bigidG91Y2hlbmQiLGEpLCQoImJvZHkiKS5vbigiY2xpY2siLCIud2NDdXN0 b21UYWIgLndjRnJhbWVCdXR0b24iLGgpLCQoImJvZHkiKS5vbigiY2xpY2si LCIud2NGcmFtZUJ1dHRvbkJhciA+IC53Y0ZyYW1lQnV0dG9uIix1KSwkKCJi b2R5Iikub24oImtleXVwIix3KTt2YXIgVD0obmV3IERhdGUpLmdldFRpbWUo KSx4PW51bGwseT0wLEI9MH0sX190ZXN0TG9hZEZpbmlzaGVkOmZ1bmN0aW9u KCl7Zm9yKHZhciB0PTA7dDx0aGlzLl9mcmFtZUxpc3QubGVuZ3RoOysrdClm b3IodmFyIGE9dGhpcy5fZnJhbWVMaXN0W3RdLHI9MDtyPGEuX3BhbmVsTGlz dC5sZW5ndGg7KytyKXt2YXIgbz1hLl9wYW5lbExpc3Rbcl07aWYoby5faXNW aXNpYmxlJiYhby5faW5pdGlhbGl6ZWQpcmV0dXJuO2lmKG8uJGxvYWRpbmcp cmV0dXJufXZhciBpPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2kudHJp Z2dlcihlLkVWRU5ULkxPQURFRCksaS5vZmYoZS5FVkVOVC5MT0FERUQpO2Zv cih2YXIgdD0wO3Q8aS5fZnJhbWVMaXN0Lmxlbmd0aDsrK3QpZm9yKHZhciBh PWkuX2ZyYW1lTGlzdFt0XSxyPTA7cjxhLl9wYW5lbExpc3QubGVuZ3RoOysr cil7dmFyIG89YS5fcGFuZWxMaXN0W3JdO28ub2ZmKGUuRVZFTlQuTE9BREVE KX19LDApfSxfX2NvbXBhdGliaWxpdHlDaGVjazpmdW5jdGlvbigpe2Z1bmN0 aW9uIHQoKXtmb3IodmFyIHQ9InRyYW5zZm9ybSBXZWJraXRUcmFuc2Zvcm0g TW96VHJhbnNmb3JtIE9UcmFuc2Zvcm0gbXNUcmFuc2Zvcm0iLnNwbGl0KCIg IiksZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxhPTA7YTx0Lmxl bmd0aDthKyspaWYoZSYmdm9pZCAwIT09ZS5zdHlsZVt0W2FdXSlyZXR1cm4h MDtyZXR1cm4hMX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9u LnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5 cGVvZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uLnByb3Rv dHlwZS5iaW5kIC0gd2hhdCBpcyB0cnlpbmcgdG8gYmUgYm91bmQgaXMgbm90 IGNhbGxhYmxlIik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo YXJndW1lbnRzLDEpLGE9dGhpcyxyPWZ1bmN0aW9uKCl7fSxvPWZ1bmN0aW9u KCl7cmV0dXJuIGEuYXBwbHkodGhpcyBpbnN0YW5jZW9mIHImJnQ/dGhpczp0 LGUuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50 cykpKX07cmV0dXJuIHIucHJvdG90eXBlPXRoaXMucHJvdG90eXBlLG8ucHJv dG90eXBlPW5ldyByLG99KSxBcnJheS5wcm90b3R5cGUuaW5kZXhPZnx8KEFy cmF5LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu bGVuZ3RoPj4+MCxhPU51bWJlcihhcmd1bWVudHNbMV0pfHwwO2ZvcihhPTA+ YT9NYXRoLmNlaWwoYSk6TWF0aC5mbG9vcihhKSwwPmEmJihhKz1lKTtlPmE7 YSsrKWlmKGEgaW4gdGhpcyYmdGhpc1thXT09PXQpcmV0dXJuIGE7cmV0dXJu LTF9KTt2YXIgZT1mdW5jdGlvbigpe2Zvcih2YXIgdD0zLGU9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgiZGl2IiksYT1lLmdldEVsZW1lbnRzQnlUYWdOYW1l KCJpIik7ZS5pbm5lckhUTUw9IjwhLS1baWYgZ3QgSUUgIisgKyt0KyJdPjxp PjwvaT48IVtlbmRpZl0tLT4iLGFbMF07KTtyZXR1cm4gdD40P3Q6dm9pZCAw fSgpOzk+ZT90aGlzLl9jYW5PcmllbnRUYWJzPSExOnRoaXMuX2Nhbk9yaWVu dFRhYnM9dCgpO3ZhciBhPS9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQ b2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZp Z2F0b3IudXNlckFnZW50KTskKCJib2R5IikuYWRkQ2xhc3MoYT8id2NNb2Jp bGUiOiJ3Y0Rlc2t0b3AiKX0sX19maW5kSW5uZXI6ZnVuY3Rpb24oKXtmdW5j dGlvbiB0KHQpe3JldHVybiEhKHQmJnQuaW5zdGFuY2VPZigid2NGcmFtZSIp JiZ0LnBhbmVsKCkmJiF0LnBhbmVsKCkubW92ZWFibGUoKXx8dC5pbnN0YW5j ZU9mKCJ3Y0NvbGxhcHNlciIpKX1mb3IodmFyIGU9dGhpcy5fcm9vdDtlJiZl Lmluc3RhbmNlT2YoIndjU3BsaXR0ZXIiKTspe3ZhciBhPXQoZS5fcGFuZVsw XSkscj10KGUuX3BhbmVbMV0pO2lmKGEmJiFyKWU9ZS5fcGFuZVsxXTtlbHNl IGlmKHImJiFhKWU9ZS5fcGFuZVswXTtlbHNlIGlmKCFhJiYhcilicmVha31y ZXR1cm4gZX0sX19pbml0Q29sbGFwc2VyczpmdW5jdGlvbigpe2Z1bmN0aW9u IHQodCl7dGhpcy5fY29sbGFwc2VyW3RdPXRoaXMuX19hZGRDb2xsYXBzZXIo dCxhKSxhPXRoaXMuX2NvbGxhcHNlclt0XS5fcGFyZW50LHRoaXMuX2ZyYW1l TGlzdC5wdXNoKHRoaXMuX2NvbGxhcHNlclt0XS5fZHJhd2VyLl9mcmFtZSl9 aWYodGhpcy5pc0NvbGxhcHNlRW5hYmxlZCgpJiYkLmlzRW1wdHlPYmplY3Qo dGhpcy5fY29sbGFwc2VyKSl7dmFyIGE9dGhpcy5fX2ZpbmRJbm5lcigpO3Qu Y2FsbCh0aGlzLGUuRE9DSy5MRUZUKSx0LmNhbGwodGhpcyxlLkRPQ0suUklH SFQpLHQuY2FsbCh0aGlzLGUuRE9DSy5CT1RUT00pO3ZhciByPXRoaXM7c2V0 VGltZW91dChmdW5jdGlvbigpe3IuX191cGRhdGUoKX0pfX0sX191cGRhdGU6 ZnVuY3Rpb24odCl7dGhpcy5fZGlydHk9ITAsdGhpcy5fZGlydHlEb250TW92 ZT10fSxfX2ZvcmNlVXBkYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX2RpcnR5PSEx LHRoaXMuX3Jvb3QmJnRoaXMuX3Jvb3QuX191cGRhdGUodCk7Zm9yKHZhciBl PTA7ZTx0aGlzLl9mbG9hdGluZ0xpc3QubGVuZ3RoOysrZSl0aGlzLl9mbG9h dGluZ0xpc3RbZV0uX191cGRhdGUoKX0sX19vcmRlclBhbmVsczpmdW5jdGlv bigpe2lmKDAhPT10aGlzLl9mbG9hdGluZ0xpc3QubGVuZ3RoKXt2YXIgdD10 aGlzLl9mbG9hdGluZ0xpc3QuaW5kZXhPZih0aGlzLl9mb2N1c0ZyYW1lKSxh PXRoaXMuX2Zsb2F0aW5nTGlzdC5sZW5ndGgtMTt0aGlzLl9mbG9hdGluZ0xp c3Quc3BsaWNlKGEsMCx0aGlzLl9mbG9hdGluZ0xpc3Quc3BsaWNlKHQsMSlb MF0pO2Zvcih2YXIgcixvPSh0aGlzLl9mbG9hdGluZ0xpc3QubGVuZ3RoLDEw KSxpPTUsbj0wO248dGhpcy5fZmxvYXRpbmdMaXN0Lmxlbmd0aDsrK24paWYo cj10aGlzLl9mbG9hdGluZ0xpc3Rbbl0pe3ZhciBzPW8rbippO3IuJGZyYW1l LmNzcygiei1pbmRleCIscyksci5fX3RyaWdnZXIoZS5FVkVOVC5PUkRFUl9D SEFOR0VELHMpfX19LF9fbW91c2U6ZnVuY3Rpb24odCl7aWYodC5vcmlnaW5h bEV2ZW50JiYodC5vcmlnaW5hbEV2ZW50LnRvdWNoZXN8fHQub3JpZ2luYWxF dmVudC5jaGFuZ2VkVG91Y2hlcykpe3ZhciBlPXQub3JpZ2luYWxFdmVudC50 b3VjaGVzWzBdfHx0Lm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07 cmV0dXJue3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZLHdoaWNoOjF9fXJldHVy bnt4OnQuY2xpZW50WHx8dC5wYWdlWCx5OnQuY2xpZW50WXx8dC5wYWdlWSx3 aGljaDp0LndoaWNofHwxfX0sX19yZXNpemU6ZnVuY3Rpb24odCl7dGhpcy5f cmVzaXplRGF0YS50aW1lPW5ldyBEYXRlLHRoaXMuX3Jlc2l6ZURhdGEudGlt ZW91dHx8KHRoaXMuX3Jlc2l6ZURhdGEudGltZW91dD0hMCxzZXRUaW1lb3V0 KHRoaXMuX19yZXNpemVFbmQuYmluZCh0aGlzKSx0aGlzLl9yZXNpemVEYXRh LmRlbHRhKSx0aGlzLl9fdHJpZ2dlcihlLkVWRU5ULlJFU0laRV9TVEFSVEVE KSksdGhpcy5fX3RyaWdnZXIoZS5FVkVOVC5SRVNJWkVEKSx0aGlzLl9fdXBk YXRlKCExKX0sX19yZXNpemVFbmQ6ZnVuY3Rpb24oKXtuZXcgRGF0ZS10aGlz Ll9yZXNpemVEYXRhLnRpbWU8dGhpcy5fcmVzaXplRGF0YS5kZWx0YT9zZXRU aW1lb3V0KHRoaXMuX19yZXNpemVFbmQuYmluZCh0aGlzKSx0aGlzLl9yZXNp emVEYXRhLmRlbHRhKToodGhpcy5fcmVzaXplRGF0YS50aW1lb3V0PSExLHRo aXMuX190cmlnZ2VyKGUuRVZFTlQuUkVTSVpFX0VOREVEKSl9LF9fZm9jdXM6 ZnVuY3Rpb24odCxhKXt2YXIgcj10aGlzLl9mb2N1c0ZyYW1lIT10O2lmKHRo aXMuX2ZvY3VzRnJhbWUpe3RoaXMuX2ZvY3VzRnJhbWUuX2lzRmxvYXRpbmcm JnRoaXMuX2ZvY3VzRnJhbWUuJGZyYW1lLnJlbW92ZUNsYXNzKCJ3Y0Zsb2F0 aW5nRm9jdXMiKTt2YXIgbz10aGlzLl9mb2N1c0ZyYW1lO3RoaXMuX2ZvY3Vz RnJhbWU9bnVsbCxvLl9fdHJpZ2dlcihlLkVWRU5ULkxPU1RfRk9DVVMpLG8u aXNDb2xsYXBzZXIoKSYmciYmKG8uY29sbGFwc2UoKSxvLnBhbmVsKC0xKSl9 dGhpcy5fZm9jdXNGcmFtZT10LAogdGhpcy5fZm9jdXNGcmFtZSYmKHRoaXMu X2ZvY3VzRnJhbWUuX2lzRmxvYXRpbmcmJih0aGlzLl9mb2N1c0ZyYW1lLiRm cmFtZS5hZGRDbGFzcygid2NGbG9hdGluZ0ZvY3VzIiksciYmJCgiYm9keSIp LmFwcGVuZCh0aGlzLl9mb2N1c0ZyYW1lLiRmcmFtZSkpLHRoaXMuX2ZvY3Vz RnJhbWUuX19mb2N1cyhhKSx0aGlzLl9mb2N1c0ZyYW1lLl9fdHJpZ2dlcihl LkVWRU5ULkdBSU5fRk9DVVMpKSx0aGlzLl9fb3JkZXJQYW5lbHMoKX0sX190 cmlnZ2VyOmZ1bmN0aW9uKHQsZSl7aWYodCl7dmFyIGE9W107aWYodGhpcy5f ZXZlbnRzW3RdKWZvcih2YXIgcj10aGlzLl9ldmVudHNbdF0uc2xpY2UoMCks bz0wO288ci5sZW5ndGg7KytvKWEucHVzaChyW29dLmNhbGwodGhpcyxlKSk7 cmV0dXJuIGF9fSxfX2lzTGFzdFBhbmVsOmZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT0wO2U8dGhpcy5fZnJhbWVMaXN0Lmxlbmd0aDsrK2Upe3ZhciBhPXRoaXMu X2ZyYW1lTGlzdFtlXTtpZighYS5faXNGbG9hdGluZyYmIWEuaXNDb2xsYXBz ZXIoKSlmb3IodmFyIHI9MDtyPGEuX3BhbmVsTGlzdC5sZW5ndGg7KytyKXt2 YXIgbz1hLl9wYW5lbExpc3Rbcl07aWYobyE9PXQmJm8ubW92ZWFibGUoKSly ZXR1cm4hMX19cmV0dXJuITB9LF9faXNMYXN0RnJhbWU6ZnVuY3Rpb24odCl7 Zm9yKHZhciBlPTA7ZTx0aGlzLl9mcmFtZUxpc3QubGVuZ3RoOysrZSl7dmFy IGE9dGhpcy5fZnJhbWVMaXN0W2VdO2lmKCFhLl9pc0Zsb2F0aW5nJiZhIT09 dCYmIWEuaXNDb2xsYXBzZXIoKSlmb3IodmFyIHI9MDtyPGEuX3BhbmVsTGlz dC5sZW5ndGg7KytyKXt2YXIgbz1hLl9wYW5lbExpc3Rbcl07aWYoby5tb3Zl YWJsZSgpKXJldHVybiExfX1yZXR1cm4hMH0sX19jcmVhdGU6ZnVuY3Rpb24o dCxhLHIpe3N3aXRjaCh0LnR5cGUpe2Nhc2Uid2NTcGxpdHRlciI6dmFyIG89 bmV3KHRoaXMuX19nZXRDbGFzcygid2NTcGxpdHRlciIpKShyLGEsdC5ob3Jp em9udGFsKTtyZXR1cm4gby5zY3JvbGxhYmxlKDAsITEsITEpLG8uc2Nyb2xs YWJsZSgxLCExLCExKSxvO2Nhc2Uid2NGcmFtZSI6dmFyIGk9bmV3KHRoaXMu X19nZXRDbGFzcygid2NGcmFtZSIpKShyLGEsdC5mbG9hdGluZyk7cmV0dXJu IHRoaXMuX2ZyYW1lTGlzdC5wdXNoKGkpLHQuZmxvYXRpbmcmJnRoaXMuX2Zs b2F0aW5nTGlzdC5wdXNoKGkpLGk7Y2FzZSJ3Y1BhbmVsIjppZih0LnBhbmVs VHlwZT09PWUuUEFORUxfUExBQ0VIT0xERVIpcmV0dXJuIHRoaXMuX3BsYWNl aG9sZGVyUGFuZWx8fCh0aGlzLl9wbGFjZWhvbGRlclBhbmVsPW5ldyh0aGlz Ll9fZ2V0Q2xhc3MoIndjUGFuZWwiKSkoYSxlLlBBTkVMX1BMQUNFSE9MREVS LHt9KSx0aGlzLl9wbGFjZWhvbGRlclBhbmVsLl9pc1BsYWNlaG9sZGVyPSEw LHRoaXMuX3BsYWNlaG9sZGVyUGFuZWwuX19jb250YWluZXIodGhpcy4kdHJh bnNpdGlvbiksdGhpcy5fcGxhY2Vob2xkZXJQYW5lbC5fcGFuZWxPYmplY3Q9 bmV3IGZ1bmN0aW9uKHQpe3QudGl0bGUoITEpLHQuY2xvc2VhYmxlKCExKX0o dGhpcy5fcGxhY2Vob2xkZXJQYW5lbCksdGhpcy5fcGxhY2Vob2xkZXJQYW5l bC5fX2NvbnRhaW5lcihyKSksdGhpcy5fcGxhY2Vob2xkZXJQYW5lbDtmb3Io dmFyIG49MDtuPHRoaXMuX2RvY2tQYW5lbFR5cGVMaXN0Lmxlbmd0aDsrK24p aWYodGhpcy5fZG9ja1BhbmVsVHlwZUxpc3Rbbl0ubmFtZT09PXQucGFuZWxU eXBlKXt2YXIgcz1uZXcodGhpcy5fX2dldENsYXNzKCJ3Y1BhbmVsIikpKGEs dC5wYW5lbFR5cGUsdGhpcy5fZG9ja1BhbmVsVHlwZUxpc3Rbbl0ub3B0aW9u cyk7cy5fX2NvbnRhaW5lcih0aGlzLiR0cmFuc2l0aW9uKTt2YXIgbD10aGlz Ll9kb2NrUGFuZWxUeXBlTGlzdFtuXS5vcHRpb25zJiZ0aGlzLl9kb2NrUGFu ZWxUeXBlTGlzdFtuXS5vcHRpb25zLm9wdGlvbnN8fHt9O3MuX3BhbmVsT2Jq ZWN0PW5ldyB0aGlzLl9kb2NrUGFuZWxUeXBlTGlzdFtuXS5vcHRpb25zLm9u Q3JlYXRlKHMsbCkscy5fX2NvbnRhaW5lcihyKTticmVha31yZXR1cm4gc31y ZXR1cm4gbnVsbH0sX19hZGRQYW5lbEdyb3VwZWQ6ZnVuY3Rpb24odCxhLHIp e3ZhciBvPWE7cmV0dXJuIG8mJm8uaW5zdGFuY2VPZigid2NQYW5lbCIpJiYo bz1hLl9wYXJlbnQpLG8mJm8uaW5zdGFuY2VPZigid2NGcmFtZSIpPyhyJiZy LnRhYk9yaWVudGF0aW9uJiZvLnRhYk9yaWVudGF0aW9uKHIudGFiT3JpZW50 YXRpb24pLHZvaWQgby5hZGRQYW5lbCh0KSk6dm9pZCB0aGlzLl9fYWRkUGFu ZWxBbG9uZSh0LGUuRE9DSy5MRUZULGEscil9LF9fYWRkUGFuZWxBbG9uZTpm dW5jdGlvbih0LGEscixvKXtpZihyJiZyLl9zaGlmdCl7dmFyIGk9cjtyPXIu X3NoaWZ0LGkuX3NoaWZ0PXZvaWQgMH1pZihvKXt2YXIgbj10aGlzLiRjb250 YWluZXIud2lkdGgoKSxzPXRoaXMuJGNvbnRhaW5lci5oZWlnaHQoKTtvLmhh c093blByb3BlcnR5KCJ4IikmJihvLng9dGhpcy5fX3N0cmluZ1RvUGl4ZWwo by54LG4pKSxvLmhhc093blByb3BlcnR5KCJ5IikmJihvLnk9dGhpcy5fX3N0 cmluZ1RvUGl4ZWwoby55LHMpKSxvLmhhc093blByb3BlcnR5KCJ3Iil8fChv Lnc9dC5pbml0U2l6ZSgpLngpLG8uaGFzT3duUHJvcGVydHkoImgiKXx8KG8u aD10LmluaXRTaXplKCkueSksby53PXRoaXMuX19zdHJpbmdUb1BpeGVsKG8u dyxuKSxvLmg9dGhpcy5fX3N0cmluZ1RvUGl4ZWwoby5oLHMpLHQuX3NpemUu eD1vLncsdC5fc2l6ZS55PW8uaH1pZihyPT09ZS5DT0xMQVBTRUQpe2lmKHRo aXMuX19pbml0Q29sbGFwc2VycygpLHRoaXMuX2NvbGxhcHNlclthXSl7cj10 aGlzLl9jb2xsYXBzZXJbYV0uX2RyYXdlci5fZnJhbWUuYWRkUGFuZWwodCk7 dmFyIGw9dGhpcztyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2wuX191 cGRhdGUoKX0pLHR9cmV0dXJuIGNvbnNvbGUubG9nKCdFUlJPUjogQXR0ZW1w dGVkIHRvIGNvbGxhcHNlIHBhbmVsICInK3QuX3R5cGUrJyIgdG8gaW52YWxp ZCBsb2NhdGlvbjogJythKSwhMX1pZihhPT09ZS5ET0NLLkZMT0FUfHxhPT09 ZS5ET0NLLk1PREFMKXt2YXIgYz1uZXcodGhpcy5fX2dldENsYXNzKCJ3Y0Zy YW1lIikpKHRoaXMuJGNvbnRhaW5lcix0aGlzLCEwKTtpZihvJiZvLnRhYk9y aWVudGF0aW9uJiZjLnRhYk9yaWVudGF0aW9uKG8udGFiT3JpZW50YXRpb24p LHRoaXMuX2ZyYW1lTGlzdC5wdXNoKGMpLHRoaXMuX2Zsb2F0aW5nTGlzdC5w dXNoKGMpLHRoaXMuX19mb2N1cyhjKSxjLmFkZFBhbmVsKHQpLGMucG9zKHQu X3Bvcy54LHQuX3Bvcy55LCExKSxhPT09ZS5ET0NLLk1PREFMJiYoYy4kbW9k YWxCbG9ja2VyPSQoJzxkaXYgY2xhc3M9IndjTW9kYWxCbG9ja2VyIj48L2Rp dj4nKSxjLiRmcmFtZS5wcmVwZW5kKGMuJG1vZGFsQmxvY2tlciksdC5tb3Zl YWJsZSghMSksYy4kZnJhbWUuYWRkQ2xhc3MoIndjTW9kYWwiKSx0aGlzLl9t b2RhbExpc3QucHVzaChjKSksbyl7dmFyIGg9Yy5wb3Modm9pZCAwLHZvaWQg MCwhMCk7by5oYXNPd25Qcm9wZXJ0eSgieCIpJiYoaC54PW8ueCtvLncvMiks by5oYXNPd25Qcm9wZXJ0eSgieSIpJiYoaC55PW8ueStvLmgvMiksYy5wb3Mo aC54LGgueSwhMCksYy5fc2l6ZT17eDpvLncseTpvLmh9fXJldHVybiB2b2lk IHRoaXMuX19vcmRlclBhbmVscygpfWlmKHIpe2Zvcih2YXIgdT1yLl9wYXJl bnQsZD1yO3UmJiF1Lmluc3RhbmNlT2YoIndjU3BsaXR0ZXIiKSYmIXUuaW5z dGFuY2VPZigid2NEb2NrZXIiKTspZD11LHU9dS5fcGFyZW50O2lmKHUmJnUu aW5zdGFuY2VPZigid2NTcGxpdHRlciIpKXt2YXIgZixwPXUucGFuZSgwKSxi PSh1LnBhbmUoMSkse3g6LTEseTotMX0pO2lmKHA9PT1kPyhmPW5ldyh0aGlz Ll9fZ2V0Q2xhc3MoIndjU3BsaXR0ZXIiKSkodGhpcy4kdHJhbnNpdGlvbix1 LGEhPT1lLkRPQ0suQk9UVE9NJiZhIT09ZS5ET0NLLlRPUCksYi54PXUuJHBh bmVbMF0ud2lkdGgoKSxiLnk9dS4kcGFuZVswXS5oZWlnaHQoKSx1LnBhbmUo MCxmKSk6KGY9bmV3KHRoaXMuX19nZXRDbGFzcygid2NTcGxpdHRlciIpKSh0 aGlzLiR0cmFuc2l0aW9uLHUsYSE9PWUuRE9DSy5CT1RUT00mJmEhPT1lLkRP Q0suVE9QKSxiLng9dS4kcGFuZVsxXS53aWR0aCgpLGIueT11LiRwYW5lWzFd LmhlaWdodCgpLHUucGFuZSgxLGYpKSxmKXtpZihmLnNjcm9sbGFibGUoMCwh MSwhMSksZi5zY3JvbGxhYmxlKDEsITEsITEpLG98fChvPXt3OnQuX3NpemUu eCxoOnQuX3NpemUueX0pLG8pc3dpdGNoKG8udzwwJiYoby53PWIueC8yKSxv Lmg8MCYmKG8uaD1iLnkvMiksYSl7Y2FzZSBlLkRPQ0suTEVGVDpmLnBvcyhv LncvYi54KTticmVhaztjYXNlIGUuRE9DSy5SSUdIVDpmLnBvcygxLW8udy9i LngpO2JyZWFrO2Nhc2UgZS5ET0NLLlRPUDpmLnBvcyhvLmgvYi55KTticmVh aztjYXNlIGUuRE9DSy5CT1RUT006Zi5wb3MoMS1vLmgvYi55KX1lbHNlIGYu cG9zKC41KTtjPW5ldyh0aGlzLl9fZ2V0Q2xhc3MoIndjRnJhbWUiKSkodGhp cy4kdHJhbnNpdGlvbixmLCExKSx0aGlzLl9mcmFtZUxpc3QucHVzaChjKSxh PT09ZS5ET0NLLkxFRlR8fGE9PT1lLkRPQ0suVE9QPyhmLnBhbmUoMCxjKSxm LnBhbmUoMSxkKSk6KGYucGFuZSgwLGQpLGYucGFuZSgxLGMpKSxjLmFkZFBh bmVsKHQpfXJldHVybn19dmFyIF89dGhpcyx2PXRoaXMuJGNvbnRhaW5lcixj PW5ldyh0aGlzLl9fZ2V0Q2xhc3MoIndjRnJhbWUiKSkodGhpcy4kdHJhbnNp dGlvbixfLCExKTtpZih0aGlzLl9mcmFtZUxpc3QucHVzaChjKSxfLl9yb290 KXt2YXIgZj1uZXcodGhpcy5fX2dldENsYXNzKCJ3Y1NwbGl0dGVyIikpKHYs XyxhIT09ZS5ET0NLLkJPVFRPTSYmYSE9PWUuRE9DSy5UT1ApO2lmKGYpe2Mu X3BhcmVudD1mLGYuc2Nyb2xsYWJsZSgwLCExLCExKSxmLnNjcm9sbGFibGUo MSwhMSwhMSk7dmFyIGI9e3g6di53aWR0aCgpLHk6di5oZWlnaHQoKX07aWYo bylzd2l0Y2goby53PDAmJihvLnc9Yi54LzIpLG8uaDwwJiYoby5oPWIueS8y KSxhKXtjYXNlIGUuRE9DSy5MRUZUOmYucG9zKG8udy9iLngpO2JyZWFrO2Nh c2UgZS5ET0NLLlJJR0hUOmYucG9zKDEtby53L2IueCk7YnJlYWs7Y2FzZSBl LkRPQ0suVE9QOmYucG9zKG8uaC9iLnkpO2JyZWFrO2Nhc2UgZS5ET0NLLkJP VFRPTTpmLnBvcygxLW8uaC9iLnkpfWVsc2UgZi5fX2ZpbmRCZXN0UG9zKCk7 YT09PWUuRE9DSy5MRUZUfHxhPT09ZS5ET0NLLlRPUD8oZi5wYW5lKDAsYyks Zi5wYW5lKDEsXy5fcm9vdCkpOihmLnBhbmUoMCxfLl9yb290KSxmLnBhbmUo MSxjKSksXy5fcm9vdD1mfX1lbHNlIF8uX3Jvb3Q9YyxjLl9fY29udGFpbmVy KHYpO2MuYWRkUGFuZWwodCl9LF9fYWRkQ29sbGFwc2VyOmZ1bmN0aW9uKHQs YSl7dmFyIHI9bnVsbDtpZihhKXtmb3IodmFyIG89YS5fcGFyZW50LGk9YTtv JiYhby5pbnN0YW5jZU9mKCJ3Y1NwbGl0dGVyIikmJiFvLmluc3RhbmNlT2Yo IndjRG9ja2VyIik7KWk9byxvPW8uX3BhcmVudDt2YXIgbj1uZXcodGhpcy5f X2dldENsYXNzKCJ3Y1NwbGl0dGVyIikpKHRoaXMuJHRyYW5zaXRpb24sbyx0 IT09ZS5ET0NLLkJPVFRPTSYmdCE9PWUuRE9DSy5UT1ApO2lmKG8mJm8uaW5z dGFuY2VPZigid2NEb2NrZXIiKSYmKHRoaXMuX3Jvb3Q9bixuLl9fY29udGFp bmVyKHRoaXMuJGNvbnRhaW5lcikpLG8mJm8uaW5zdGFuY2VPZigid2NTcGxp dHRlciIpKXt2YXIgcz1vLmxlZnQoKSxsPShvLnJpZ2h0KCkse3g6LTEseTot MX0pO3M9PT1pPyhsLng9by4kcGFuZVswXS53aWR0aCgpLGwueT1vLiRwYW5l WzBdLmhlaWdodCgpLG8ucGFuZSgwLG4pKToobj1uZXcodGhpcy5fX2dldENs YXNzKCJ3Y1NwbGl0dGVyIikpKHRoaXMuJHRyYW5zaXRpb24sbyx0IT09ZS5E T0NLLkJPVFRPTSYmdCE9PWUuRE9DSy5UT1ApLGwueD1vLiRwYW5lWzFdLndp ZHRoKCksbC55PW8uJHBhbmVbMV0uaGVpZ2h0KCksby5wYW5lKDEsbikpfWlm KG4pe3N3aXRjaChuLnNjcm9sbGFibGUoMCwhMSwhMSksbi5zY3JvbGxhYmxl KDEsITEsITEpLHI9bmV3KHRoaXMuX19nZXRDbGFzcygid2NDb2xsYXBzZXIi KSkodGhpcy4kdHJhbnNpdGlvbixuLHQpLHQpe2Nhc2UgZS5ET0NLLlRPUDpj YXNlIGUuRE9DSy5MRUZUOm4ucG9zKDApO2JyZWFrO2Nhc2UgZS5ET0NLLkJP VFRPTTpjYXNlIGUuRE9DSy5SSUdIVDpuLnBvcygxKX10PT09ZS5ET0NLLkxF RlR8fHQ9PT1lLkRPQ0suVE9QPyhuLnBhbmUoMCxyKSxuLnBhbmUoMSxpKSk6 KG4ucGFuZSgwLGkpLG4ucGFuZSgxLHIpKX19cmV0dXJuIHJ9LF9fYWRkUGxh Y2Vob2xkZXI6ZnVuY3Rpb24odCl7dGhpcy5fcGxhY2Vob2xkZXJQYW5lbCYm Y29uc29sZS5sb2coIldBUk5JTkc6IHdjRG9ja2VyIGNyZWF0aW5nIHBsYWNl aG9sZGVyIHBhbmVsIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzIiksdGhpcy5f cGxhY2Vob2xkZXJQYW5lbD1uZXcodGhpcy5fX2dldENsYXNzKCJ3Y1BhbmVs IikpKHRoaXMsZS5QQU5FTF9QTEFDRUhPTERFUix7fSksdGhpcy5fcGxhY2Vo b2xkZXJQYW5lbC5faXNQbGFjZWhvbGRlcj0hMCx0aGlzLl9wbGFjZWhvbGRl clBhbmVsLl9fY29udGFpbmVyKHRoaXMuJHRyYW5zaXRpb24pLHRoaXMuX3Bs YWNlaG9sZGVyUGFuZWwuX3BhbmVsT2JqZWN0PW5ldyBmdW5jdGlvbih0KXt0 LnRpdGxlKCExKSx0LmNsb3NlYWJsZSghMSl9KHRoaXMuX3BsYWNlaG9sZGVy UGFuZWwpLHQ/dGhpcy5fX2FkZFBhbmVsR3JvdXBlZCh0aGlzLl9wbGFjZWhv bGRlclBhbmVsLHQpOnRoaXMuX19hZGRQYW5lbEFsb25lKHRoaXMuX3BsYWNl aG9sZGVyUGFuZWwsZS5ET0NLLlRPUCksdGhpcy5fX3VwZGF0ZSgpfSxfX2Ns b3NlUGFuZWw6ZnVuY3Rpb24odCl7dmFyIGU9ITEsYT10aGlzLnBhbmVsVHlw ZUluZm8odC5fdHlwZSk7YSYmYS5pc1BlcnNpc3RlbnQmJihlPSEwLHRoaXMu X3BlcnNpc3RlbnRMaXN0LnB1c2godCkpLHRoaXMucmVtb3ZlUGFuZWwodCxl KSx0aGlzLl9fdXBkYXRlKCl9LF9fc3RyaW5nVG9QZXJjZW50OmZ1bmN0aW9u KHQsZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZigtMSE9PXQuaW5kZXhP ZigiJSIsdC5sZW5ndGgtMSkpcmV0dXJuIHBhcnNlRmxvYXQodCkvMTAwO2lm KC0xIT09dC5pbmRleE9mKCJweCIsdC5sZW5ndGgtMikpcmV0dXJuIHBhcnNl RmxvYXQodCkvZX1yZXR1cm4gcGFyc2VGbG9hdCh0KX0sX19zdHJpbmdUb1Bp eGVsOmZ1bmN0aW9uKHQsZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZigt MSE9PXQuaW5kZXhPZigiJSIsdC5sZW5ndGgtMSkpcmV0dXJuIHBhcnNlRmxv YXQodCkvMTAwKmU7aWYoLTEhPT10LmluZGV4T2YoInB4Iix0Lmxlbmd0aC0y KSlyZXR1cm4gcGFyc2VGbG9hdCh0KX1yZXR1cm4gcGFyc2VGbG9hdCh0KX19 KTtmb3IodmFyIGIgaW4gZSlwW2JdPWVbYl07cmV0dXJuIHAuZGVmYXVsdENs YXNzZXM9ZixwfSksYSgid2NEb2NrZXIvaWZyYW1lIixbImRjbC9kY2wiLCIu L3R5cGVzIiwiLi9iYXNlIl0sZnVuY3Rpb24odCxlLGEpe3ZhciByPXQoYSx7 ZGVjbGFyZWRDbGFzczoid2NJRnJhbWUiLGNvbnN0cnVjdG9yOmZ1bmN0aW9u KHQsZSl7dGhpcy5fcGFuZWw9ZSx0aGlzLl9sYXlvdXQ9ZS5sYXlvdXQoKSx0 aGlzLiRjb250YWluZXI9JCh0KSx0aGlzLiRmcmFtZT1udWxsLHRoaXMuJGZv Y3VzPW51bGwsdGhpcy4kaUZyYW1lPW51bGwsdGhpcy5fd2luZG93PW51bGws dGhpcy5faXNEb2NraW5nPSExLHRoaXMuX2lzSG92ZXJpbmc9ITEsdGhpcy5f Ym91bmRFdmVudHM9W10sdGhpcy5fb25Mb2FkRnVuY3M9W10sdGhpcy5fb25D bG9zZWRGdW5jcz1bXSx0aGlzLl9faW5pdCgpfSxvcGVuVVJMOmZ1bmN0aW9u KHQpe3RoaXMuX19jbGVhckZyYW1lKCksdGhpcy4kaUZyYW1lPSQoIjxpZnJh bWU+aUZyYW1lcyBub3Qgc3VwcG9ydGVkIG9uIHlvdXIgZGV2aWNlITwvaWZy YW1lPiIpLHRoaXMuJGZyYW1lLnByZXBlbmQodGhpcy4kaUZyYW1lKSx0aGlz Ll9fb25Nb3ZlZCgpLHRoaXMuX3dpbmRvdz10aGlzLiRpRnJhbWVbMF0uY29u dGVudFdpbmRvd3x8dGhpcy4kaUZyYW1lWzBdLHRoaXMuX191cGRhdGVGcmFt ZSgpLHRoaXMuX3dpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHQpLHRoaXMuJGlG cmFtZVswXS5mb2N1cygpLHRoaXMuJGlGcmFtZS5ob3Zlcih0aGlzLl9fb25I b3ZlckVudGVyLmJpbmQodGhpcyksdGhpcy5fX29uSG92ZXJFeGl0LmJpbmQo dGhpcykpO3ZhciBlPXRoaXM7dGhpcy4kaUZyYW1lLmxvYWQoZnVuY3Rpb24o KXtmb3IodmFyIHQ9MDt0PGUuX29uTG9hZEZ1bmNzLmxlbmd0aDsrK3QpZS5f b25Mb2FkRnVuY3NbdF0oKTtlLl9vbkxvYWRGdW5jcz1bXX0pfSxvcGVuSFRN TDpmdW5jdGlvbih0KXt0aGlzLl9fY2xlYXJGcmFtZSgpLHRoaXMuJGlGcmFt ZT0kKCI8aWZyYW1lPmlGcmFtZXMgbm90IHN1cHBvcnRlZCBvbiB5b3VyIGRl dmljZSE8L2lmcmFtZT4iKSx0aGlzLiRmcmFtZS5wcmVwZW5kKHRoaXMuJGlG cmFtZSksdGhpcy5fX29uTW92ZWQoKSx0aGlzLl93aW5kb3c9dGhpcy4kaUZy YW1lWzBdLmNvbnRlbnRXaW5kb3d8fHRoaXMuJGlGcmFtZVswXSx0aGlzLl9f dXBkYXRlRnJhbWUoKSx0aGlzLl93aW5kb3cuZG9jdW1lbnQub3BlbigpLHRo aXMuX3dpbmRvdy5kb2N1bWVudC53cml0ZSh0KSx0aGlzLl93aW5kb3cuZG9j dW1lbnQuY2xvc2UoKSx0aGlzLiRpRnJhbWVbMF0uZm9jdXMoKSx0aGlzLiRp RnJhbWUuaG92ZXIodGhpcy5fX29uSG92ZXJFbnRlci5iaW5kKHRoaXMpLHRo aXMuX19vbkhvdmVyRXhpdC5iaW5kKHRoaXMpKTt2YXIgZT10aGlzO3RoaXMu JGlGcmFtZS5sb2FkKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxlLl9vbkxv YWRGdW5jcy5sZW5ndGg7Kyt0KWUuX29uTG9hZEZ1bmNzW3RdKCk7ZS5fb25M b2FkRnVuY3M9W119KX0sb3BlblNSQzpmdW5jdGlvbih0KXt0aGlzLl9fY2xl YXJGcmFtZSgpLHRoaXMuJGlGcmFtZT0kKCI8aWZyYW1lPmlGcmFtZXMgbm90 IHN1cHBvcnRlZCBvbiB5b3VyIGRldmljZSE8L2lmcmFtZT4iKSx0aGlzLiRm cmFtZS5wcmVwZW5kKHRoaXMuJGlGcmFtZSksdGhpcy5fX29uTW92ZWQoKSx0 aGlzLl93aW5kb3c9dGhpcy4kaUZyYW1lWzBdLmNvbnRlbnRXaW5kb3d8fHRo aXMuJGlGcmFtZVswXSx0aGlzLl9fdXBkYXRlRnJhbWUoKSx0aGlzLiRpRnJh bWVbMF0uc3JjZG9jPXQsdGhpcy4kaUZyYW1lWzBdLmZvY3VzKCksdGhpcy4k aUZyYW1lLmhvdmVyKHRoaXMuX19vbkhvdmVyRW50ZXIuYmluZCh0aGlzKSx0 aGlzLl9fb25Ib3ZlckV4aXQuYmluZCh0aGlzKSk7dmFyIGU9dGhpczt0aGlz LiRpRnJhbWUubG9hZChmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ZS5fb25M b2FkRnVuY3MubGVuZ3RoOysrdCllLl9vbkxvYWRGdW5jc1t0XSgpO2UuX29u TG9hZEZ1bmNzPVtdfSl9LG9uTG9hZGVkOmZ1bmN0aW9uKHQpe3RoaXMuX29u TG9hZEZ1bmNzLnB1c2godCl9LG9uQ2xvc2VkOmZ1bmN0aW9uKHQpe3RoaXMu X29uQ2xvc2VkRnVuY3MucHVzaCh0KX0sc2hvdzpmdW5jdGlvbigpe3RoaXMu JGZyYW1lJiZ0aGlzLiRmcmFtZS5yZW1vdmVDbGFzcygid2NJRnJhbWVIaWRk ZW4iKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuJGZyYW1lJiZ0aGlzLiRmcmFt ZS5hZGRDbGFzcygid2NJRnJhbWVIaWRkZW4iKX0sd2luZG93OmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX3dpbmRvd30sZGVzdHJveTpmdW5jdGlvbigpe2Zv cig7dGhpcy5fYm91bmRFdmVudHMubGVuZ3RoOyl0aGlzLl9wYW5lbC5vZmYo dGhpcy5fYm91bmRFdmVudHNbMF0uZXZlbnQsdGhpcy5fYm91bmRFdmVudHNb MF0uaGFuZGxlciksdGhpcy5fYm91bmRFdmVudHMuc2hpZnQoKTt0aGlzLl9f Y2xlYXJGcmFtZSgpLHRoaXMuX3BhbmVsPW51bGwsdGhpcy5fbGF5b3V0PW51 bGwsdGhpcy4kY29udGFpbmVyPW51bGwsdGhpcy4kZnJhbWUucmVtb3ZlKCks dGhpcy4kZnJhbWU9bnVsbCx0aGlzLiRmb2N1cz1udWxsfSxfX2luaXQ6ZnVu Y3Rpb24oKXt0aGlzLiRmcmFtZT0kKCc8ZGl2IGNsYXNzPSJ3Y0lGcmFtZSI+ JyksdGhpcy4kZm9jdXM9JCgnPGRpdiBjbGFzcz0id2NJRnJhbWVGb2N1cyI+ JyksdGhpcy5fcGFuZWwuZG9ja2VyKCkuJGNvbnRhaW5lci5hcHBlbmQodGhp cy4kZnJhbWUpLHRoaXMuJGZyYW1lLmFwcGVuZCh0aGlzLiRmb2N1cyksdGhp cy5fYm91bmRFdmVudHMucHVzaCh7ZXZlbnQ6ZS5FVkVOVC5WSVNJQklMSVRZ X0NIQU5HRUQsaGFuZGxlcjp0aGlzLl9fb25WaXNpYmlsaXR5Q2hhbmdlZC5i aW5kKHRoaXMpfSksdGhpcy5fYm91bmRFdmVudHMucHVzaCh7ZXZlbnQ6ZS5F VkVOVC5CRUdJTl9ET0NLLGhhbmRsZXI6dGhpcy5fX29uQmVnaW5Eb2NrLmJp bmQodGhpcyl9KSx0aGlzLl9ib3VuZEV2ZW50cy5wdXNoKHtldmVudDplLkVW RU5ULkVORF9ET0NLLGhhbmRsZXI6dGhpcy5fX29uRW5kRG9jay5iaW5kKHRo aXMpfSksdGhpcy5fYm91bmRFdmVudHMucHVzaCh7ZXZlbnQ6ZS5FVkVOVC5N T1ZFX1NUQVJURUQsaGFuZGxlcjp0aGlzLl9fb25Nb3ZlU3RhcnRlZC5iaW5k KHRoaXMpfSksdGhpcy5fYm91bmRFdmVudHMucHVzaCh7ZXZlbnQ6ZS5FVkVO VC5SRVNJWkVfU1RBUlRFRCxoYW5kbGVyOnRoaXMuX19vbk1vdmVTdGFydGVk LmJpbmQodGhpcyl9KSx0aGlzLl9ib3VuZEV2ZW50cy5wdXNoKHtldmVudDpl LkVWRU5ULk1PVkVfRU5ERUQsaGFuZGxlcjp0aGlzLl9fb25Nb3ZlRmluaXNo ZWQuYmluZCh0aGlzKX0pLHRoaXMuX2JvdW5kRXZlbnRzLnB1c2goe2V2ZW50 OmUuRVZFTlQuUkVTSVpFX0VOREVELGhhbmRsZXI6dGhpcy5fX29uTW92ZUZp bmlzaGVkLmJpbmQodGhpcyl9KSx0aGlzLl9ib3VuZEV2ZW50cy5wdXNoKHtl dmVudDplLkVWRU5ULk1PVkVELGhhbmRsZXI6dGhpcy5fX29uTW92ZWQuYmlu ZCh0aGlzKX0pLHRoaXMuX2JvdW5kRXZlbnRzLnB1c2goe2V2ZW50OmUuRVZF TlQuUkVTSVpFRCxoYW5kbGVyOnRoaXMuX19vbk1vdmVkLmJpbmQodGhpcyl9 KSx0aGlzLl9ib3VuZEV2ZW50cy5wdXNoKHtldmVudDplLkVWRU5ULkFUVEFD SEVELGhhbmRsZXI6dGhpcy5fX29uQXR0YWNoZWQuYmluZCh0aGlzKX0pLHRo aXMuX2JvdW5kRXZlbnRzLnB1c2goe2V2ZW50OmUuRVZFTlQuREVUQUNIRUQs aGFuZGxlcjp0aGlzLl9fdXBkYXRlRnJhbWUuYmluZCh0aGlzKX0pLHRoaXMu X2JvdW5kRXZlbnRzLnB1c2goe2V2ZW50OmUuRVZFTlQuR0FJTl9GT0NVUyxo YW5kbGVyOnRoaXMuX191cGRhdGVGcmFtZS5iaW5kKHRoaXMpfSksdGhpcy5f Ym91bmRFdmVudHMucHVzaCh7ZXZlbnQ6ZS5FVkVOVC5MT1NUX0ZPQ1VTLGhh bmRsZXI6dGhpcy5fX3VwZGF0ZUZyYW1lLmJpbmQodGhpcyl9KSx0aGlzLl9i b3VuZEV2ZW50cy5wdXNoKHtldmVudDplLkVWRU5ULlBFUlNJU1RFTlRfT1BF TkVELGhhbmRsZXI6dGhpcy5fX3VwZGF0ZUZyYW1lLmJpbmQodGhpcyl9KSx0 aGlzLl9ib3VuZEV2ZW50cy5wdXNoKHtldmVudDplLkVWRU5ULlBFUlNJU1RF TlRfQ0xPU0VELGhhbmRsZXI6dGhpcy5fX3VwZGF0ZUZyYW1lLmJpbmQodGhp cyl9KSx0aGlzLl9ib3VuZEV2ZW50cy5wdXNoKHtldmVudDplLkVWRU5ULkNM T1NFRCxoYW5kbGVyOnRoaXMuX19vbkNsb3NlZC5iaW5kKHRoaXMpfSksdGhp cy5fYm91bmRFdmVudHMucHVzaCh7ZXZlbnQ6ZS5FVkVOVC5PUkRFUl9DSEFO R0VELGhhbmRsZXI6dGhpcy5fX29uT3JkZXJDaGFuZ2VkLmJpbmQodGhpcyl9 KTtmb3IodmFyIHQ9MDt0PHRoaXMuX2JvdW5kRXZlbnRzLmxlbmd0aDsrK3Qp dGhpcy5fcGFuZWwub24odGhpcy5fYm91bmRFdmVudHNbdF0uZXZlbnQsdGhp cy5fYm91bmRFdmVudHNbdF0uaGFuZGxlcik7JCh3aW5kb3cpLmJsdXIodGhp cy5fX29uQmx1ci5iaW5kKHRoaXMpKX0sX19jbGVhckZyYW1lOmZ1bmN0aW9u KCl7aWYodGhpcy4kaUZyYW1lKXtmb3IodmFyIHQ9MDt0PHRoaXMuX29uQ2xv c2VkRnVuY3MubGVuZ3RoOysrdCl0aGlzLl9vbkNsb3NlZEZ1bmNzW3RdKCk7 dGhpcy5fb25DbG9zZWRGdW5jcz1bXSx0aGlzLiRpRnJhbWVbMF0uc3JjZG9j PSIiLHRoaXMuJGlGcmFtZS5yZW1vdmUoKSx0aGlzLiRpRnJhbWU9bnVsbCx0 aGlzLl93aW5kb3c9bnVsbH19LF9fdXBkYXRlRnJhbWU6ZnVuY3Rpb24oKXtp Zih0aGlzLiRmcmFtZSYmdGhpcy5fcGFuZWwpe3ZhciB0PXRoaXMuX3BhbmVs LmlzRmxvYXRpbmcoKTt0aGlzLiRmcmFtZS50b2dnbGVDbGFzcygid2NJRnJh bWVGbG9hdGluZyIsdCksdD90aGlzLiRmcmFtZS50b2dnbGVDbGFzcygid2NJ RnJhbWVGbG9hdGluZ0ZvY3VzIixmb2N1cyk6dGhpcy4kZnJhbWUucmVtb3Zl Q2xhc3MoIndjSUZyYW1lRmxvYXRpbmdGb2N1cyIpLHRoaXMuJGZyYW1lLnRv Z2dsZUNsYXNzKCJ3Y0lGcmFtZVBhbmVsSGlkZGVuIiwhdGhpcy5fcGFuZWwu aXNWaXNpYmxlKCkpLHRoaXMuX3BhbmVsJiZ0aGlzLl9wYW5lbC5fcGFyZW50 JiZ0aGlzLl9wYW5lbC5fcGFyZW50Lmluc3RhbmNlT2YoIndjRnJhbWUiKSYm dGhpcy4kZnJhbWUudG9nZ2xlQ2xhc3MoIndjRHJhd2VyIix0aGlzLl9wYW5l bC5fcGFyZW50LmlzQ29sbGFwc2VyKCkpfX0sX19mb2N1c0ZpeDpmdW5jdGlv bigpe3RoaXMuJGZyYW1lLmNzcygibGVmdCIscGFyc2VJbnQodGhpcy4kZnJh bWUuY3NzKCJsZWZ0IikpKzEpLHRoaXMuJGZyYW1lLmNzcygibGVmdCIscGFy c2VJbnQodGhpcy4kZnJhbWUuY3NzKCJsZWZ0IikpLTEpfSxfX29uSG92ZXJF bnRlcjpmdW5jdGlvbigpe3RoaXMuX2lzSG92ZXJpbmc9ITB9LF9fb25Ib3Zl ckV4aXQ6ZnVuY3Rpb24oKXt0aGlzLl9pc0hvdmVyaW5nPSExfSxfX29uQmx1 cjpmdW5jdGlvbigpe3RoaXMuX2lzSG92ZXJpbmcmJnRoaXMuX19vbkZvY3Vz KCl9LF9fb25Gb2N1czpmdW5jdGlvbigpe3RoaXMuX3BhbmVsJiZ0aGlzLmRv Y2tlcih0aGlzLl9wYW5lbCkuX19mb2N1cyh0aGlzLl9wYW5lbC5fcGFyZW50 KX0sX19vblZpc2liaWxpdHlDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5fX3Vw ZGF0ZUZyYW1lKCksdGhpcy5fcGFuZWwuaXNWaXNpYmxlKCkmJnRoaXMuX19v bk1vdmVkKCl9LF9fb25CZWdpbkRvY2s6ZnVuY3Rpb24oKXt0aGlzLiRmcmFt ZSYmKHRoaXMuX2lzRG9ja2luZz0hMCx0aGlzLiRmcmFtZS5hZGRDbGFzcygi d2NJRnJhbWVNb3ZpbmciKSl9LF9fb25FbmREb2NrOmZ1bmN0aW9uKCl7dGhp cy4kZnJhbWUmJih0aGlzLl9pc0RvY2tpbmc9ITEsdGhpcy4kZnJhbWUucmVt b3ZlQ2xhc3MoIndjSUZyYW1lTW92aW5nIiksdGhpcy5fX2ZvY3VzRml4KCkp fSxfX29uQXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLiRmcmFtZS5jc3MoInot aW5kZXgiLCIiKSx0aGlzLl9fdXBkYXRlRnJhbWUoKX0sX19vbk1vdmVTdGFy dGVkOmZ1bmN0aW9uKCl7dGhpcy4kZnJhbWUmJiF0aGlzLl9pc0RvY2tpbmcm JnRoaXMuJGZyYW1lLmFkZENsYXNzKCJ3Y0lGcmFtZU1vdmluZyIpfSxfX29u TW92ZUZpbmlzaGVkOmZ1bmN0aW9uKCl7dGhpcy4kZnJhbWUmJiF0aGlzLl9p c0RvY2tpbmcmJih0aGlzLiRmcmFtZS5yZW1vdmVDbGFzcygid2NJRnJhbWVN b3ZpbmciKSx0aGlzLl9fZm9jdXNGaXgoKSl9LF9fb25Nb3ZlZDpmdW5jdGlv bigpe2lmKHRoaXMuJGZyYW1lJiZ0aGlzLl9wYW5lbCl7dmFyIHQ9dGhpcy5k b2NrZXIodGhpcy5fcGFuZWwpO2lmKHQpe3ZhciBlPXQuJGNvbnRhaW5lci5v ZmZzZXQoKSxhPXRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKSxyPXRoaXMuJGNv bnRhaW5lci53aWR0aCgpLG89dGhpcy4kY29udGFpbmVyLmhlaWdodCgpO3Ro aXMuJGZyYW1lLmNzcygidG9wIixhLnRvcC1lLnRvcCksdGhpcy4kZnJhbWUu Y3NzKCJsZWZ0IixhLmxlZnQtZS5sZWZ0KSx0aGlzLiRmcmFtZS5jc3MoIndp ZHRoIixyKSx0aGlzLiRmcmFtZS5jc3MoImhlaWdodCIsbyl9ZWxzZSBjb25z b2xlLmVycm9yKCJoYXZlIG5vIGRvY2tlciIpfX0sX19vbk9yZGVyQ2hhbmdl ZDpmdW5jdGlvbih0KXt0aGlzLiRmcmFtZS5jc3MoInotaW5kZXgiLHQrMSl9 LF9fb25DbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLmRlc3Ryb3koKX19KTtyZXR1 cm4gcn0pLGEoIndjRG9ja2VyL1RoZW1lQnVpbGRlciIsWyJkY2wvZGNsIiwi d2NEb2NrZXIvdHlwZXMiLCJ3Y0RvY2tlci90YWJmcmFtZSIsIndjRG9ja2Vy L2Jhc2UiXSxmdW5jdGlvbih0LGUsYSxyKXt2YXIgbz10KHIse2RlY2xhcmVk Q2xhc3M6IndjRG9ja2VyIixjb25zdHJ1Y3RvcjpmdW5jdGlvbih0KXt0aGlz Ll9wYW5lbD10LHRoaXMuX2NvbnRyb2xzPVtdLHRoaXMuX2ZyYW1lcz1bXSx0 aGlzLl9mcmFtZUluZGV4PVtdLHRoaXMuJGFjdGl2ZVRoZW1lPW51bGwsdGhp cy5fbGFzdENoZWNrYm94PW51bGwsdGhpcy4kcGFydD0kKCc8c2VsZWN0IHN0 eWxlPSJ3aWR0aDoxMDAlIj4nKSx0aGlzLl9mb250V2VpZ2h0cz1bIm5vcm1h bCIsImJvbGQiLCJib2xkZXIiLCJsaWdodGVyIiwiMTAwIiwiMjAwIiwiMzAw IiwiNDAwIiwiNTAwIiwiNjAwIiwiNzAwIiwiODAwIiwiOTAwIiwiaW5pdGlh bCIsImluaGVyaXQiXSx0aGlzLl9ib3JkZXJTdHlsZXM9W3tkaXNwbGF5OiJu b25lIix2YWx1ZToiIn0sImRvdHRlZCIsImRhc2hlZCIsInNvbGlkIiwiZG91 YmxlIiwiZ3Jvb3ZlIiwicmlkZ2UiLCJpbnNldCIsIm91dHNldCIsImluaXRp YWwiLCJpbmhlcml0Il0sdGhpcy5fc2hhZG93U3R5bGU9W3tkaXNwbGF5OiJu b3JtYWwiLHZhbHVlOiIifSwiaW5zZXQiLCJpbml0aWFsIiwiaW5oZXJpdCJd LHRoaXMuX3BhcnNlQm94U2hhZG93U3R5bGU9ZnVuY3Rpb24odCl7cmV0dXJu IHQ9dC50b0xvd2VyQ2FzZSgpLHQuaW5kZXhPZigiaW5zZXQiKT4tMT8iaW5z ZXQiOnQuaW5kZXhPZigiaW5pdGlhbCIpPi0xPyJpbml0aWFsIjp0LmluZGV4 T2YoImluaGVyaXQiKT4tMT8iaW5oZXJpdCI6IiJ9LHRoaXMuX3BhcnNlQm94 U2hhZG93Q29sb3I9ZnVuY3Rpb24odCl7dD10LnRvTG93ZXJDYXNlKCk7dmFy IGU9dC5pbmRleE9mKCJyZ2IiKTtpZihlPi0xKXt2YXIgYT10LmluZGV4T2Yo IikiKTtyZXR1cm4gdC5zdWJzdHJpbmcoZSxhKzEpfWlmKGU9dC5pbmRleE9m KCIjIiksZT4tMSl7dmFyIGE9dC5pbmRleE9mKCIgIik7cmV0dXJuLTE9PT1h JiYoYT10Lmxlbmd0aCksdC5zdWJzdHJpbmcoZSxhKzEpLnJlcGxhY2UoIjsi LCIiKX19LHRoaXMuX3BhcnNlQm94U2hhZG93QXR0cmlidXRlPWZ1bmN0aW9u KHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgYT0wO2U9ZS5yZXBsYWNlKC9c cyg/IVteKV0qKFwofCQpKS9nLCIiKTtmb3IodmFyIHI9ZS5zcGxpdCgiICIp LG89MDtvPHIubGVuZ3RoOysrbyl7dmFyIGk9cltvXS50cmltKCkucmVwbGFj ZSgicHgiLCIiKTtpZighaXNOYU4oaSkmJihhKz0xLGE9PT10KSlyZXR1cm4g aS50b1N0cmluZygpKyJweCJ9cmV0dXJuIjBweCJ9fSx0aGlzLmluaXQoKX0s Y2xlYXJDb250cm9sczpmdW5jdGlvbigpe3RoaXMuX2ZyYW1lSW5kZXg9W107 Zm9yKHZhciB0PXRoaXMuX2ZyYW1lcy5sZW5ndGgtMTt0Pj0wOy0tdCl0aGlz Ll9mcmFtZUluZGV4LnVuc2hpZnQodGhpcy5fZnJhbWVzW3RdLnRhYigpKSx0 aGlzLl9mcmFtZXNbdF0uZGVzdHJveSgpO3RoaXMuX2ZyYW1lcz1bXX0sYnVp bGRDb250cm9sczpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3BhbmVs LnN0YXJ0TG9hZGluZygpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmNsZWFy Q29udHJvbHMoKSwkKCJib2R5IikudG9nZ2xlQ2xhc3MoIndjTW9iaWxlIix0 PyEwOiExKS50b2dnbGVDbGFzcygid2NEZXNrdG9wIix0PyExOiEwKSxlLl9w YW5lbC5sYXlvdXQoKS5jbGVhcigpLGUuX3BhbmVsLmxheW91dCgpLnN0YXJ0 QmF0Y2goKSxlLl9wYW5lbC5sYXlvdXQoKS5zY2VuZSgpLmNzcygicGFkZGlu ZyIsIjEwcHgiKSxlLl9wYW5lbC5sYXlvdXQoKS5fY2hpbGRGcmFtZXM9W107 Zm9yKHZhciBhPTAscj0wO3I8ZS5fY29udHJvbHMubGVuZ3RoOysrcil7dmFy IG89ZS5fY29udHJvbHNbcl07by5jcmVhdGUmJihvLmNyZWF0ZS5jYWxsKGUs ZS5fcGFuZWwubGF5b3V0KCksbyxhLHQpLGErPTEpfXZhciBpPSQoJzxpbnB1 dCB0eXBlPSJmaWxlIiB2YWx1ZT0iVXBsb2FkIiBzdHlsZT0id2lkdGg6MTAw JTsiIHRpdGxlPSJVcGxvYWQgeW91ciBvd24gY3VzdG9tIGNzcyB0aGVtZS4i Lz4nKTtlLl9wYW5lbC5sYXlvdXQoKS5hZGRJdGVtKCQoIjxsYWJlbD5VcGxv YWQgVGhlbWU6PC9sYWJlbD4iKSwwLGEsMiksZS5fcGFuZWwubGF5b3V0KCku YWRkSXRlbShpLDIsYSwyKS5zdHJldGNoKCIyMCUiLCIiKSxpLm9uKCJjaGFu Z2UiLGZ1bmN0aW9uKHQpe2lmKHRoaXMuZmlsZXMubGVuZ3RoKXt2YXIgYT10 aGlzLmZpbGVzWzBdO2lmKCJ0ZXh0L2NzcyIhPT1hLnR5cGUpcmV0dXJuIHZv aWQgYWxlcnQoIkZhaWxlZCB0byB1cGxvYWQgZmlsZSwgbXVzdCBiZSBhIHN0 eWxlc2hlZXQhIik7dmFyIHI9bmV3IEZpbGVSZWFkZXI7ZS5fcGFuZWwuc3Rh cnRMb2FkaW5nKCksc2V0VGltZW91dChmdW5jdGlvbigpe3IucmVhZEFzVGV4 dChhLCJVVEYtOCIpLHIub25sb2FkPWZ1bmN0aW9uKHQpe2UuYXBwbHkodC50 YXJnZXQucmVzdWx0KTt2YXIgYT0kKCJib2R5IikuaGFzQ2xhc3MoIndjTW9i aWxlIik7ZS5wdWxsKGUuX2NvbnRyb2xzKSxlLmJ1aWxkQ29udHJvbHMoYSks ZS5fcGFuZWwuZmluaXNoTG9hZGluZyg0MDApfSxyLm9uZXJyb3I9ZnVuY3Rp b24odCl7Y29uc29sZS5sb2coIkVycm9yIHJlYWRpbmcgdGhlbWUgZmlsZS4i KSxlLl9wYW5lbC5maW5pc2hMb2FkaW5nKDQwMCl9fSwxMDApfX0pLGErPTE7 dmFyIG49JCgnPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIHRpdGxlPSJQ dWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgY3VycmVudGx5IGFjdGl2ZSB0aGVt ZS4iPlB1bGw8L2J1dHRvbj4nKTtlLl9wYW5lbC5sYXlvdXQoKS5hZGRJdGVt KG4sMCxhKS5zdHJldGNoKCIyNSUiLCIiKSxuLmNsaWNrKGZ1bmN0aW9uKCl7 ZS5fcGFuZWwuc3RhcnRMb2FkaW5nKCksc2V0VGltZW91dChmdW5jdGlvbigp e3ZhciB0PSQoImJvZHkiKS5oYXNDbGFzcygid2NNb2JpbGUiKTtlLnB1bGwo ZS5fY29udHJvbHMpLGUuYnVpbGRDb250cm9scyh0KSxlLl9wYW5lbC5maW5p c2hMb2FkaW5nKDQwMCl9LDEwMCl9KTt2YXIgcz0kKCc8YnV0dG9uIGNsYXNz PSJ3Y0N1c3RvbVRoZW1lQXBwbGllZCIgc3R5bGU9IndpZHRoOjEwMCU7IiB0 aXRsZT0iQXBwbHkgdGhlc2UgYXR0cmlidXRlcyB0byB0aGUgdGhlbWUuIj5B cHBseTwvYnV0dG9uPicpO2UuX3BhbmVsLmxheW91dCgpLmFkZEl0ZW0ocywx LGEpLnN0cmV0Y2goIjI1JSIsIiIpLHMuY2xpY2soZnVuY3Rpb24oKXt2YXIg dD1lLmJ1aWxkKCk7ZS5hcHBseSh0KSxzLmFkZENsYXNzKCJ3Y0J1dHRvbkFj dGl2ZSIpfSksZS4kYWN0aXZlVGhlbWUmJmUuJGFjdGl2ZVRoZW1lLnBhcmVu dCgpLmxlbmd0aCYmcy5hZGRDbGFzcygid2NCdXR0b25BY3RpdmUiKTt2YXIg bD0kKCc8YnV0dG9uIHN0eWxlPSJ3aWR0aDoxMDAlOyIgdGl0bGU9IlRvZ2ds ZSBtb2JpbGUgdGhlbWUgb3ZlcnJpZGVzLiI+TW9iaWxlPC9idXR0b24+Jyk7 ZS5fcGFuZWwubGF5b3V0KCkuYWRkSXRlbShsLDIsYSkuc3RyZXRjaCgiMjUl IiwiIiksbC5jbGljayhmdW5jdGlvbigpe2UuX3BhbmVsLnN0YXJ0TG9hZGlu ZygpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmJ1aWxkQ29udHJvbHMoIXQp LGUuX3BhbmVsLmRvY2tlcigpLl9fdXBkYXRlKCksZS5fcGFuZWwuZmluaXNo TG9hZGluZyg0MDApfSwxMDApfSksdCYmbC5hZGRDbGFzcygid2NCdXR0b25B Y3RpdmUiKTt2YXIgYz0kKCc8YnV0dG9uIHN0eWxlPSJ3aWR0aDoxMDAlOyIg dGl0bGU9IkRvd25sb2FkIHlvdXIgY3VzdG9tIHRoZW1lLiI+RG93bmxvYWQ8 L2J1dHRvbj4nKTtlLl9wYW5lbC5sYXlvdXQoKS5hZGRJdGVtKGMsMyxhKS5z dHJldGNoKCIyNSUiLCIiKSxjLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5i dWlsZCgpLGE9bmV3IEJsb2IoW3RdLHt0eXBlOiJ0ZXh0L3BsYWluO2NoYXJz ZXQ9dXRmLTgifSk7c2F2ZUFzKGEsIm15VGhlbWUuY3NzIil9KSxlLl9wYW5l bC5sYXlvdXQoKS5maW5pc2hCYXRjaCgpO2Zvcih2YXIgcj0wO3I8ZS5fZnJh bWVJbmRleC5sZW5ndGg7KytyKWUuX2ZyYW1lc1tyXS50YWIoZS5fZnJhbWVJ bmRleFtyXSk7ZS5fcGFuZWwuZmluaXNoTG9hZGluZyg0MDApfSwxMDApfSxh ZGRUYWJGcmFtZTpmdW5jdGlvbih0LGUscixvKXt2YXIgaT1udWxsO2Uuc3Ry ZXRjaD8oaT0kKCc8ZGl2IGNsYXNzPSJ3Y0Z1bGxTaXplZCI+PC9kaXY+Jyks dC5hZGRJdGVtKGksMCxyLDUpLnN0cmV0Y2goIiIsIjEwMCUiKS5jc3MoInBv c2l0aW9uIiwicmVsYXRpdmUiKSk6KGk9JCgiPGRpdj4iKSx0LmFkZEl0ZW0o aSwwLHIsNSkuY3NzKCJoZWlnaHQiLCJhdXRvIikpO3ZhciBuPW5ldyBhKGks dGhpcy5fcGFuZWwpO3QuX2NoaWxkRnJhbWVzLnB1c2gobiksbi5tb3ZlYWJs ZSghMSksZS5vcmllbnRhdGlvbiYmbi50YWJPcmllbnRhdGlvbihlLm9yaWVu dGF0aW9uKTtmb3IodmFyIHM9MDtzPGUuY29udHJvbHMubGVuZ3RoOysrcyl7 dmFyIGw9ZS5jb250cm9sc1tzXTtsLmNyZWF0ZSYmbC5jcmVhdGUuY2FsbCh0 aGlzLG4sbCwwLG8pfXRoaXMuX2ZyYW1lcy5wdXNoKG4pfSxhZGRUYWI6ZnVu Y3Rpb24odCxlLGEscil7dmFyIG89dC5hZGRUYWIoZS5uYW1lKTtvLnNjZW5l KCkuY3NzKCJwYWRkaW5nIiwiMTBweCIpLG8uZ3JpZEFsdGVybmF0ZSghMCks by5zaG93R3JpZCghMCksby5fY2hpbGRGcmFtZXM9W10sZS5zY3JvbGxhYmxl fHx0LmZpdENvbnRlbnRzKHQudGFiQ291bnQoKS0xLCExLCEwKSxvLnN0YXJ0 QmF0Y2goKTtmb3IodmFyIGE9MCxpPTA7aTxlLmNvbnRyb2xzLmxlbmd0aDsr K2kpe3ZhciBuPWUuY29udHJvbHNbaV07bi5jcmVhdGUmJihuLmNyZWF0ZS5j YWxsKHRoaXMsbyxuLGEsciksYSs9MSl9by5hZGRJdGVtKCI8ZGl2PiIsMCxh LDUpLnN0cmV0Y2goIiIsIjEwMCUiKSxvLmZpbmlzaEJhdGNoKCl9LGFkZFNw YWNlcjpmdW5jdGlvbih0LGUsYSxyKXtlLm5hbWU/dC5hZGRJdGVtKCc8ZGl2 IGNsYXNzPSJ3Y0F0dHJpYnV0ZVNwYWNlclNvbGlkIj4nK2UubmFtZSsiPC9k aXY+IiwwLGEsNCkuc3RyZXRjaCgiMTAwJSIsIiIpOnQuYWRkSXRlbSgnPGRp diBjbGFzcz0id2NBdHRyaWJ1dGVTcGFjZXIiPjwvZGl2PicsMCxhLDQpLnN0 cmV0Y2goIjEwMCUiLCIiKX0sYWRkQ29sb3JDb250cm9sOmZ1bmN0aW9uKHQs ZSxhLHIpe2Z1bmN0aW9uIG8odCl7dD9lW2NdPXQudG9SZ2JTdHJpbmcoKTpl W2NdPW51bGwsIXImJmUuaXNNb2JpbGVEaXNhYmxlZCYmKGUubW9iaWxlVmFs dWU9ZS52YWx1ZSksbC5vbkNoYW5nZWQoKX12YXIgaT1udWxsLG49bnVsbCxz PW51bGwsbD10aGlzLGM9InZhbHVlIixoPSJpc0Rpc2FibGVkIjtyJiYoYz0i bW9iaWxlVmFsdWUiLGg9ImlzTW9iaWxlRGlzYWJsZWQiKSxuPSQoJzxsYWJl bCBjbGFzcz0id2NBdHRyaWJ1dGVMYWJlbCIgdGl0bGU9IicrZS5pbmZvKyci PicrZS5uYW1lKyI6PC9sYWJlbD4iKSx0LmFkZEl0ZW0obiwxLGEpLnN0cmV0 Y2goIjElIiwiIikuY3NzKCJ0ZXh0LWFsaWduIiwicmlnaHQiKSxzPSQoJzxp bnB1dCBzdHlsZT0id2lkdGg6MTAwJTsiIHRpdGxlPSInK2UuaW5mbysnIi8+ JyksdC5hZGRJdGVtKHMsMixhLDIpLnN0cmV0Y2goIjEwMCUiLCIiKSxzLnNw ZWN0cnVtKHtjb2xvcjplW2NdLHNob3dBbHBoYTohMCxzaG93UGFsZXR0ZToh MCxzaG93SW5wdXQ6ITAsc2hvd0luaXRpYWw6ITAsYWxsb3dFbXB0eTohMCxj bGlja291dEZpcmVzQ2hhbmdlOiEwLHBhbGV0dGU6W1siIzAwMCIsIiM0NDQi LCIjNjY2IiwiIzk5OSIsIiNjY2MiLCIjZWVlIiwiI2YzZjNmMyIsIiNmZmYi XSxbIiNmMDAiLCIjZjkwIiwiI2ZmMCIsIiMwZjAiLCIjMGZmIiwiIzAwZiIs IiM5MGYiLCIjZjBmIl0sWyIjZjRjY2NjIiwiI2ZjZTVjZCIsIiNmZmYyY2Mi LCIjZDllYWQzIiwiI2QwZTBlMyIsIiNjZmUyZjMiLCIjZDlkMmU5IiwiI2Vh ZDFkYyJdLFsiI2VhOTk5OSIsIiNmOWNiOWMiLCIjZmZlNTk5IiwiI2I2ZDdh OCIsIiNhMmM0YzkiLCIjOWZjNWU4IiwiI2I0YTdkNiIsIiNkNWE2YmQiXSxb IiNlMDY2NjYiLCIjZjZiMjZiIiwiI2ZmZDk2NiIsIiM5M2M0N2QiLCIjNzZh NWFmIiwiIzZmYThkYyIsIiM4ZTdjYzMiLCIjYzI3YmEwIl0sWyIjYzAwIiwi I2U2OTEzOCIsIiNmMWMyMzIiLCIjNmFhODRmIiwiIzQ1ODE4ZSIsIiMzZDg1 YzYiLCIjNjc0ZWE3IiwiI2E2NGQ3OSJdLFsiIzkwMCIsIiNiNDVmMDYiLCIj YmY5MDAwIiwiIzM4NzYxZCIsIiMxMzRmNWMiLCIjMGI1Mzk0IiwiIzM1MWM3 NSIsIiM3NDFiNDciXSxbIiM2MDAiLCIjNzgzZjA0IiwiIzdmNjAwMCIsIiMy NzRlMTMiLCIjMGMzNDNkIiwiIzA3Mzc2MyIsIiMyMDEyNGQiLCIjNGMxMTMw Il1dLHNlbGVjdGlvblBhbGV0dGU6W10sbWF4U2VsZWN0aW9uU2l6ZTo4LGxv Y2FsU3RvcmFnZUtleToidGhlbWUuY29sb3JzIixwcmVmZXJyZWRGb3JtYXQ6 ImhleDMiLGNoYW5nZTpvLG1vdmU6byxoaWRlOm99KSxlLmdyb3VwZWQ/aT10 aGlzLl9sYXN0Q2hlY2tib3g6KGk9JCgnPGlucHV0IHR5cGU9ImNoZWNrYm94 IiB0aXRsZT0iJytlLmluZm8rJyIvPicpLHQuYWRkSXRlbShpLDAsYSkuc3Ry ZXRjaCgiMSUiLCIiKSxpLmF0dHIoImNoZWNrZWQiLCFlW2hdKSx0aGlzLl9s YXN0Q2hlY2tib3g9aSksaS5jaGFuZ2UoZnVuY3Rpb24oKXtlW2hdPSF0aGlz LmNoZWNrZWQscy5zcGVjdHJ1bSh0aGlzLmNoZWNrZWQ/ImVuYWJsZSI6ImRp c2FibGUiKSxsLm9uQ2hhbmdlZCgpfSksZVtoXSYmcy5zcGVjdHJ1bSgiZGlz YWJsZSIpfSxhZGRUZXh0Q29udHJvbDpmdW5jdGlvbih0LGUsYSxyKXt2YXIg bz1udWxsLGk9bnVsbCxuPW51bGwscz10aGlzLGw9InZhbHVlIixjPSJpc0Rp c2FibGVkIjtyJiYobD0ibW9iaWxlVmFsdWUiLGM9ImlzTW9iaWxlRGlzYWJs ZWQiKSxpPSQoJzxsYWJlbCBjbGFzcz0id2NBdHRyaWJ1dGVMYWJlbCIgdGl0 bGU9IicrZS5pbmZvKyciPicrZS5uYW1lKyI6PC9sYWJlbD4iKSx0LmFkZEl0 ZW0oaSwxLGEpLnN0cmV0Y2goIjElIiwiIikuY3NzKCJ0ZXh0LWFsaWduIiwi cmlnaHQiKSxuPSQoJzxpbnB1dCBjbGFzcz0id2NBdHRyaWJ1dGVDb250cm9s IiB0aXRsZT0iJytlLmluZm8rJyIgdHlwZT0idGV4dCIvPicpLHQuYWRkSXRl bShuLDIsYSwyKS5zdHJldGNoKCIxMDAlIiwiIiksbi52YWwoZVtsXSksbi5j aGFuZ2UoZnVuY3Rpb24oKXtlW2xdPSQodGhpcykudmFsKCksIXImJmUuaXNN b2JpbGVEaXNhYmxlZCYmKGUubW9iaWxlVmFsdWU9ZS52YWx1ZSkscy5vbkNo YW5nZWQoKX0pLGUuZ3JvdXBlZD9vPXRoaXMuX2xhc3RDaGVja2JveDoobz0k KCc8aW5wdXQgdHlwZT0iY2hlY2tib3giIHRpdGxlPSInK2UuaW5mbysnIi8+ JyksdC5hZGRJdGVtKG8sMCxhKS5zdHJldGNoKCIxJSIsIiIpLG8uYXR0cigi Y2hlY2tlZCIsIWVbY10pLHRoaXMuX2xhc3RDaGVja2JveD1vKSxvLmNoYW5n ZShmdW5jdGlvbigpe2VbY109IXRoaXMuY2hlY2tlZCxuLmF0dHIoImRpc2Fi bGVkIiwhdGhpcy5jaGVja2VkKSxzLm9uQ2hhbmdlZCgpfSksZVtjXSYmbi5h dHRyKCJkaXNhYmxlZCIsITApfSxhZGRQaXhlbENvbnRyb2w6ZnVuY3Rpb24o dCxlLGEscil7dmFyIG89bnVsbCxpPW51bGwsbj1udWxsLHM9dGhpcyxsPSJ2 YWx1ZSIsYz0iaXNEaXNhYmxlZCI7ciYmKGw9Im1vYmlsZVZhbHVlIixjPSJp c01vYmlsZURpc2FibGVkIiksaT0kKCc8bGFiZWwgY2xhc3M9IndjQXR0cmli dXRlTGFiZWwiIHRpdGxlPSInK2UuaW5mbysnIj4nK2UubmFtZSsiOjwvbGFi ZWw+IiksdC5hZGRJdGVtKGksMSxhKS5zdHJldGNoKCIxJSIsIiIpLmNzcygi dGV4dC1hbGlnbiIsInJpZ2h0Iiksbj0kKCc8aW5wdXQgY2xhc3M9IndjQXR0 cmlidXRlQ29udHJvbCIgdGl0bGU9IicrZS5pbmZvKyciIHR5cGU9Im51bWJl ciIgc3RlcD0iMSIvPicpLHQuYWRkSXRlbShuLDIsYSwyKS5zdHJldGNoKCIx MDAlIiwiIiksbi52YWwocGFyc2VJbnQoZVtsXSkpLG4uY2hhbmdlKGZ1bmN0 aW9uKCl7ZVtsXT0kKHRoaXMpLnZhbCgpKyJweCIsIXImJmUuaXNNb2JpbGVE aXNhYmxlZCYmKGUubW9iaWxlVmFsdWU9ZS52YWx1ZSkscy5vbkNoYW5nZWQo KX0pLGUuZ3JvdXBlZD9vPXRoaXMuX2xhc3RDaGVja2JveDoobz0kKCc8aW5w dXQgdHlwZT0iY2hlY2tib3giIHRpdGxlPSInK2UuaW5mbysnIi8+JyksdC5h ZGRJdGVtKG8sMCxhKS5zdHJldGNoKCIxJSIsIiIpLG8uYXR0cigiY2hlY2tl ZCIsIWVbY10pLHRoaXMuX2xhc3RDaGVja2JveD1vKSxvLmNoYW5nZShmdW5j dGlvbigpe2VbY109IXRoaXMuY2hlY2tlZCxuLmF0dHIoImRpc2FibGVkIiwh dGhpcy5jaGVja2VkKSxzLm9uQ2hhbmdlZCgpfSksZVtjXSYmbi5hdHRyKCJk aXNhYmxlZCIsITApfSxhZGRMaXN0Q29udHJvbDpmdW5jdGlvbih0KXtyZXR1 cm4gZnVuY3Rpb24oZSxhLHIsbyl7dmFyIGk9bnVsbCxuPW51bGwscz1udWxs LGw9dGhpcyxjPSJ2YWx1ZSIsaD0iaXNEaXNhYmxlZCI7byYmKGM9Im1vYmls ZVZhbHVlIixoPSJpc01vYmlsZURpc2FibGVkIiksbj0kKCc8bGFiZWwgY2xh c3M9IndjQXR0cmlidXRlTGFiZWwiIHRpdGxlPSInK2EuaW5mbysnIj4nK2Eu bmFtZSsiOjwvbGFiZWw+IiksZS5hZGRJdGVtKG4sMSxyKS5zdHJldGNoKCIx JSIsIiIpLmNzcygidGV4dC1hbGlnbiIsInJpZ2h0Iikscz0kKCc8c2VsZWN0 IGNsYXNzPSJ3Y0F0dHJpYnV0ZUNvbnRyb2wiIHRpdGxlPSInK2EuaW5mbysn Ij48L3NlbGVjdD4nKSxlLmFkZEl0ZW0ocywyLHIsMikuc3RyZXRjaCgiMTAw JSIsIiIpO2Zvcih2YXIgdT0wO3U8dC5sZW5ndGg7Kyt1KXt2YXIgZD0iIixm PSIiOyJzdHJpbmciPT10eXBlb2YgdFt1XT8oZD10W3VdLGY9dFt1XSk6KGQ9 dFt1XS5kaXNwbGF5LGY9dFt1XS52YWx1ZSkscy5hcHBlbmQoJCgnPG9wdGlv biB2YWx1ZT0iJytmKyciJysoYVtjXT09PWY/IiBzZWxlY3RlZCI6IiIpKyI+ IitkKyI8L29wdGlvbj4iKSl9cy5jaGFuZ2UoZnVuY3Rpb24oKXthW2NdPSQo dGhpcykudmFsKCksIW8mJmEuaXNNb2JpbGVEaXNhYmxlZCYmKGEubW9iaWxl VmFsdWU9YS52YWx1ZSksbC5vbkNoYW5nZWQoKX0pLGEuZ3JvdXBlZD9pPXRo aXMuX2xhc3RDaGVja2JveDooaT0kKCc8aW5wdXQgdHlwZT0iY2hlY2tib3gi IHRpdGxlPSInK2EuaW5mbysnIi8+JyksZS5hZGRJdGVtKGksMCxyKS5zdHJl dGNoKCIxJSIsIiIpLGkuYXR0cigiY2hlY2tlZCIsIWFbaF0pLHRoaXMuX2xh c3RDaGVja2JveD1pKSxpLmNoYW5nZShmdW5jdGlvbigpe2FbaF09IXRoaXMu Y2hlY2tlZCxzLmF0dHIoImRpc2FibGVkIiwhdGhpcy5jaGVja2VkKSxsLm9u Q2hhbmdlZCgpfSksYVtoXSYmcy5hdHRyKCJkaXNhYmxlZCIsITApfX0sYnVp bGQ6ZnVuY3Rpb24odCxlKXt2YXIgYT0hMTt0fHwodD17fSxlPXRoaXMuX2Nv bnRyb2xzLGE9ITApO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIg bz1lW3JdO2lmKG8uY29udHJvbHMmJnRoaXMuYnVpbGQodCxvLmNvbnRyb2xz KSwhKCFvLnNlbGVjdG9yfHwic3RyaW5nIiE9dHlwZW9mIG8udmFsdWV8fG8u aXNEaXNhYmxlZCYmby5pc01vYmlsZURpc2FibGVkKSl7dC5oYXNPd25Qcm9w ZXJ0eShvLnNlbGVjdG9yKXx8KHRbby5zZWxlY3Rvcl09W10pO2Zvcih2YXIg aT10W28uc2VsZWN0b3JdLG49by5hdHRyaWJ1dGUuc3BsaXQoIiwiKSxzPTA7 czxuLmxlbmd0aDsrK3Mpe2lmKG8uYXBwZW5kKXtmb3IodmFyIGw9ITEsYz0w O2M8aS5sZW5ndGg7KytjKWlmKGlbY10ua2V5PT09bltzXSl7by5pc0Rpc2Fi bGVkfHwoaVtjXS52YWx1ZSYmKGlbY10udmFsdWUrPSIgIiksaVtjXS52YWx1 ZSs9by52YWx1ZSksby5pc01vYmlsZURpc2FibGVkfHwoaVtjXS5tb2JpbGVW YWx1ZSYmKGlbY10ubW9iaWxlVmFsdWUrPSIgIiksaVtjXS5tb2JpbGVWYWx1 ZSs9by5tb2JpbGVWYWx1ZSksbD0hMDticmVha31pZihsKWNvbnRpbnVlfXZh ciBoPXtrZXk6bltzXSxpbXBvcnRhbnQ6by5pbXBvcnRhbnR9O28uaXNEaXNh YmxlZHx8KGgudmFsdWU9by52YWx1ZSksby5pc01vYmlsZURpc2FibGVkfHwo aC5tb2JpbGVWYWx1ZT1vLm1vYmlsZVZhbHVlKSxpLnB1c2goaCl9aWYoby5h bHNvKWZvcih2YXIgcz0wO3M8by5hbHNvLmxlbmd0aDsrK3Mpe3ZhciB1PW8u YWxzb1tzXTt0Lmhhc093blByb3BlcnR5KHUuc2VsZWN0b3IpfHwodFt1LnNl bGVjdG9yXT1bXSk7dmFyIGQ9dFt1LnNlbGVjdG9yXTtuPXUuYXR0cmlidXRl LnNwbGl0KCIsIik7Zm9yKHZhciBjPTA7YzxuLmxlbmd0aDsrK2Mpe3ZhciBo PXtrZXk6bltjXSxpbXBvcnRhbnQ6by5pbXBvcnRhbnR9O28uaXNEaXNhYmxl ZHx8KGgudmFsdWU9by52YWx1ZSksby5pc01vYmlsZURpc2FibGVkfHwoaC5t b2JpbGVWYWx1ZT1vLm1vYmlsZVZhbHVlKSxkLnB1c2goaCl9fX19aWYoYSl7 dmFyIGY9IiI7Zm9yKHZhciBwIGluIHQpaWYodFtwXS5sZW5ndGgpe2Zvcih2 YXIgYj0hMSxfPXAuc3BsaXQoIiwgIikuam9pbigiLFxuIikrIiB7XG4iLHI9 MDtyPHRbcF0ubGVuZ3RoOysrcil7dmFyIHY9dFtwXVtyXTt2LnZhbHVlJiYo Yj0hMCxfKz0iICAiK3Yua2V5KyI6ICIrdi52YWx1ZSx2LmltcG9ydGFudCYm KF8rPSIgIWltcG9ydGFudCIpLF8rPSI7XG4iKX1fKz0ifVxuXG4iLGImJihm Kz1fKX1mb3IodmFyIHAgaW4gdClpZih0W3BdLmxlbmd0aCl7Zm9yKHZhciBi PSExLG09Ii53Y01vYmlsZSAiK3Auc3BsaXQoIiwgIikuam9pbigiLCAud2NN b2JpbGUgIiksXz1tLnNwbGl0KCIsICIpLmpvaW4oIixcbiIpKyIge1xuIixy PTA7cjx0W3BdLmxlbmd0aDsrK3Ipe3ZhciB2PXRbcF1bcl07di5tb2JpbGVW YWx1ZSYmKGI9ITAsXys9IiAgIit2LmtleSsiOiAiK3YubW9iaWxlVmFsdWUs di5pbXBvcnRhbnQmJihfKz0iICFpbXBvcnRhbnQiKSxfKz0iO1xuIil9Xys9 In1cblxuIixiJiYoZis9Xyl9cmV0dXJuIGZ9fSxhcHBseTpmdW5jdGlvbih0 KXskKCJvcHRpb24uY3VzdG9tIikuc2hvdygpLmF0dHIoInNlbGVjdGVkIiwi c2VsZWN0ZWQiKSwkKCIjd2NUaGVtZSIpLnJlbW92ZSgpLCQoIiN3Y0N1c3Rv bVRoZW1lIikucmVtb3ZlKCksdGhpcy4kYWN0aXZlVGhlbWU9JCgnPHN0eWxl IGlkPSJ3Y0N1c3RvbVRoZW1lIj48L3N0eWxlPicpLCQoImhlYWQiKS5hcHBl bmQodGhpcy4kYWN0aXZlVGhlbWUpLHRoaXMuJGFjdGl2ZVRoZW1lLnRleHQo dCksdGhpcy5fcGFuZWwuZG9ja2VyKCkuX191cGRhdGUoKX0scHVsbDpmdW5j dGlvbih0LGUpe2V8fCh0aGlzLl9vYmpNYXBwaW5nPXt9LHRoaXMuX3RlbXBJ dGVtcz1bXSk7dmFyIGE9ITEscj0kKCJib2R5IikuaGFzQ2xhc3MoIndjTW9i aWxlIik7JCgiYm9keSIpLnJlbW92ZUNsYXNzKCJ3Y01vYmlsZSIpLmFkZENs YXNzKCJ3Y0Rlc2t0b3AiKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbyl7 dmFyIGk9dFtvXTtpZihpLmlzRGlzYWJsZWQ9ITEsaS5jb250cm9scyYmdGhp cy5wdWxsKGkuY29udHJvbHMsITApLGkuc2VsZWN0b3ImJmkuZWxlbSl7dmFy IG49bnVsbDt0aGlzLl9vYmpNYXBwaW5nLmhhc093blByb3BlcnR5KGkuc2Vs ZWN0b3IpP249dGhpcy5fb2JqTWFwcGluZ1tpLnNlbGVjdG9yXToobj0kKGku ZWxlbSksJCgiYm9keSIpLmFwcGVuZChuKSx0aGlzLl90ZW1wSXRlbXMucHVz aChuKSx0aGlzLl9vYmpNYXBwaW5nW2kuc2VsZWN0b3JdPW4pLG4uY2hpbGRy ZW4oKS5sZW5ndGgmJihuPW4uY2hpbGRyZW4oKSk7dmFyIHM9aS5hdHRyaWJ1 dGUuc3BsaXQoIiwiKVswXSxsPW4uY3NzKHMpOyJub25lIiE9PWwmJmwubGVu Z3RoJiZsIT09aS5ub3RWYWx1ZT9pLnBhcnNlcj9pLnZhbHVlPWkucGFyc2Vy KGwpOmkudmFsdWU9bDooaS5pc0Rpc2FibGVkPSEwLGkudmFsdWU9aS5ub3RW YWx1ZXx8aS52YWx1ZSksaS5ncm91cGVkJiZhJiYoaS5pc0Rpc2FibGVkPSEw KSxpLmdyb3VwZWR8fChhPWkuaXNEaXNhYmxlZCl9fWE9ITEsJCgiYm9keSIp LmFkZENsYXNzKCJ3Y01vYmlsZSIpLnJlbW92ZUNsYXNzKCJ3Y0Rlc2t0b3Ai KTtmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbyl7dmFyIGk9dFtvXTtpZihp LmlzTW9iaWxlRGlzYWJsZWQ9ITEsaS5zZWxlY3RvciYmaS5lbGVtKXt2YXIg bj1udWxsLGM9Ii53Y01vYmlsZSAiK2kuc2VsZWN0b3Iuc3BsaXQoIiwgIiku am9pbigiLCAud2NNb2JpbGUgIik7dGhpcy5fb2JqTWFwcGluZy5oYXNPd25Q cm9wZXJ0eShjKT9uPXRoaXMuX29iak1hcHBpbmdbY106KG49JChpLmVsZW0p LCQoImJvZHkiKS5hcHBlbmQobiksdGhpcy5fdGVtcEl0ZW1zLnB1c2gobiks dGhpcy5fb2JqTWFwcGluZ1tjXT1uKSxuLmNoaWxkcmVuKCkubGVuZ3RoJiYo bj1uLmNoaWxkcmVuKCkpO3ZhciBzPWkuYXR0cmlidXRlLnNwbGl0KCIsIilb MF0sbD1uLmNzcyhzKTsibm9uZSIhPT1sJiZsLmxlbmd0aCYmbCE9PWkubm90 VmFsdWU/aS5wYXJzZXI/aS5tb2JpbGVWYWx1ZT1pLnBhcnNlcihsKTppLm1v YmlsZVZhbHVlPWw6KGkuaXNNb2JpbGVEaXNhYmxlZD0hMCxpLm1vYmlsZVZh bHVlPWkubm90VmFsdWV8fGkudmFsdWUpLGkubW9iaWxlVmFsdWU9PT1pLnZh bHVlJiYoaS5pc01vYmlsZURpc2FibGVkPSEwKSxpLmdyb3VwZWQmJmEmJihp LmlzTW9iaWxlRGlzYWJsZWQ9ITApLGkuZ3JvdXBlZHx8KGE9aS5pc0Rpc2Fi bGVkKX19aWYoIWUpZm9yKHZhciBvPTA7bzx0aGlzLl90ZW1wSXRlbXMubGVu Z3RoOysrbyl0aGlzLl90ZW1wSXRlbXNbb10ucmVtb3ZlKCk7JCgiYm9keSIp LnRvZ2dsZUNsYXNzKCJ3Y01vYmlsZSIscikudG9nZ2xlQ2xhc3MoIndjRGVz a3RvcCIsIXIpfSxvbkNoYW5nZWQ6ZnVuY3Rpb24oKXtpZih0aGlzLiRhY3Rp dmVUaGVtZSYmdGhpcy4kYWN0aXZlVGhlbWUucGFyZW50KCkubGVuZ3RoKXt2 YXIgdD10aGlzLmJ1aWxkKCk7dGhpcy5hcHBseSh0KX1lbHNlIHRoaXMuJGFj dGl2ZVRoZW1lPW51bGx9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLmluaXRDb250 cm9scygpO3ZhciB0PXRoaXM7dGhpcy5fcGFuZWwub24oZS5FVkVOVC5JTklU LGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPSQoImJv ZHkiKS5oYXNDbGFzcygid2NNb2JpbGUiKTt0LnB1bGwodC5fY29udHJvbHMp LHQuYnVpbGRDb250cm9scyhlKX0sMTAwKX0pLHRoaXMuX3BhbmVsLmFkZEJ1 dHRvbigiSW5mbyIsImZhIGZhLXF1ZXN0aW9uIiwiPyIsIlNob3cgaW5mb3Jt YXRpb24gYWJvdXQgdGhpcyBwYW5lbC4iKSx0aGlzLl9wYW5lbC5vbihlLkVW RU5ULkJVVFRPTixmdW5jdGlvbihhKXt2YXIgcj10Ll9wYW5lbC5kb2NrZXIo KS5hZGRQYW5lbCgiSW5mbyBQYW5lbCIsZS5ET0NLLk1PREFMLG51bGwpO3Iu bGF5b3V0KCkuc2NlbmUoKS5maW5kKCJzcGFuIikudGV4dCgnVGhlIHRoZW1l IGJ1aWxkZXIgcGFuZWwgYWxsb3dzIHlvdSB0byBkZXNpZ24geW91ciBvd24g Y3VzdG9tIHdjRG9ja2VyIHRoZW1lcyB3aXRob3V0IGhhdmluZyB0byBtZXNz IHdpdGggQ1NTIGNvZGUgZGlyZWN0bHkhIFByZXNzICJQdWxsIiB0byBnYXRo ZXIgYWxsIGN1cnJlbnQgdGhlbWUgc2V0dGluZ3MgZnJvbSB0aGUgd2luZG93 IGFuZCBhc3NpZ24gdGhlbSBpbnRvIHRoZSBkaXNwbGF5ZWQgYXR0cmlidXRl cy4gUHJlc3MgIkFwcGx5IiB0byBvdmVycmlkZSB0aGUgY3VycmVudCB2aXNp YmxlIHRoZW1lIHdpdGggeW91ciBjdXN0b20gdGhlbWUgKGFuZCBkaXNwbGF5 IGFueSBmdXJ0aGVyIGNoYW5nZXMgbGl2ZSEpLiBQcmVzcyAiRG93bmxvYWQi IHRvIGRvd25sb2FkIGEgY29weSBvZiB5b3VyIG5ldyB0aGVtZSEnKX0pLHRo aXMuX3BhbmVsLm9uKGUuRVZFTlQuQ0xPU0VELGZ1bmN0aW9uKCl7dmFyIHQ9 JCgiI3djQ3VzdG9tVGhlbWUiKTt0Lmxlbmd0aCYmKCQoIm9wdGlvbi5jdXN0 b20iKS5oaWRlKCksJCgiLnRoZW1lU2VsZWN0b3IiKS52YWwoImRlZmF1bHQi KS5jaGFuZ2UoKSx0LnJlbW92ZSgpKX0pLHRoaXMuX3BhbmVsLm9uKGUuRVZF TlQuQ1VTVE9NX1RBQl9DSEFOR0VELGZ1bmN0aW9uKGUpe2Zvcih2YXIgYT0w O2E8dC5fZnJhbWVzLmxlbmd0aDsrK2EpdC5fZnJhbWVzW2FdLnVwZGF0ZSgp fSl9LGluaXRDb250cm9sczpmdW5jdGlvbigpe3RoaXMuX2NvbnRyb2xzPVt7 Y3JlYXRlOnRoaXMuYWRkVGFiRnJhbWUsc3RyZXRjaDohMCxjb250cm9sczpb e25hbWU6Ik1haW4iLHNjcm9sbGFibGU6ITAsY3JlYXRlOnRoaXMuYWRkVGFi LGNvbnRyb2xzOlt7bmFtZToiTWFpbiIsY3JlYXRlOnRoaXMuYWRkU3BhY2Vy fSx7c2VsZWN0b3I6Ii53Y0RvY2tlciIsZWxlbTonPGRpdiBjbGFzcz0id2NE b2NrZXIiPjwvZGl2PicsbmFtZToiRm9udCBGYW1pbHkiLGluZm86IlRoZSBm b250IGZhbWlseSBvZiBzdGFuZGFyZCB0ZXh0IixjcmVhdGU6dGhpcy5hZGRU ZXh0Q29udHJvbCxhdHRyaWJ1dGU6ImZvbnQtZmFtaWx5Iix2YWx1ZToiIn0s e3NlbGVjdG9yOiIud2NEb2NrZXIiLGVsZW06JzxkaXYgY2xhc3M9IndjRG9j a2VyIj48L2Rpdj4nLG5hbWU6IkZvbnQgV2VpZ2h0IixpbmZvOiJUaGUgZm9u dCB3ZWlnaHQgb2YgdGhlIHN0YW5kYXJkIHRleHQiLGNyZWF0ZTp0aGlzLmFk ZExpc3RDb250cm9sKHRoaXMuX2ZvbnRXZWlnaHRzKSxhdHRyaWJ1dGU6ImZv bnQtd2VpZ2h0Iix2YWx1ZToiIn0se3NlbGVjdG9yOiIud2NEb2NrZXIiLGVs ZW06JzxkaXYgY2xhc3M9IndjRG9ja2VyIj48L2Rpdj4nLG5hbWU6IkZvbnQg U2l6ZSIsaW5mbzoiVGhlIGZvbnQgc2l6ZSBvZiBzdGFuZGFyZCB0ZXh0Iixj cmVhdGU6dGhpcy5hZGRQaXhlbENvbnRyb2wsYXR0cmlidXRlOiJmb250LXNp emUiLHZhbHVlOiIifSx7c2VsZWN0b3I6Ii53Y0RvY2tlciIsZWxlbTonPGRp diBjbGFzcz0id2NEb2NrZXIiPjwvZGl2PicsbmFtZToiRm9udCBDb2xvciIs aW5mbzoiVGhlIGZvbnQgY29sb3Igb2Ygc3RhbmRhcmQgdGV4dCIsY3JlYXRl OnRoaXMuYWRkQ29sb3JDb250cm9sLGF0dHJpYnV0ZToiY29sb3IiLHZhbHVl OiIifSx7bmFtZToiIixjcmVhdGU6dGhpcy5hZGRTcGFjZXJ9LHtuYW1lOiJC YWNrZ3JvdW5kIixjcmVhdGU6dGhpcy5hZGRTcGFjZXJ9LHtzZWxlY3Rvcjoi LndjRG9ja2VyLCAud2NQYW5lbEJhY2tncm91bmQiLGVsZW06JzxkaXYgY2xh c3M9IndjRG9ja2VyIj48L2Rpdj4nLG5hbWU6IkNvbG9yIixpbmZvOiJUaGUg YmFja2dyb3VuZCBjb2xvciB0byB1c2UiLGNyZWF0ZTp0aGlzLmFkZENvbG9y Q29udHJvbCxhdHRyaWJ1dGU6ImJhY2tncm91bmQtY29sb3IiLHZhbHVlOiIi fSx7c2VsZWN0b3I6Ii53Y0RvY2tlciwgLndjUGFuZWxCYWNrZ3JvdW5kIixl bGVtOic8ZGl2IGNsYXNzPSJ3Y0RvY2tlciI+PC9kaXY+JyxuYW1lOiJCb3gt U2hhZG93IFN0eWxlIixpbmZvOiJUaGUgYm94IHNoYWRvdyBzdHlsZSIsY3Jl YXRlOnRoaXMuYWRkTGlzdENvbnRyb2wodGhpcy5fc2hhZG93U3R5bGUpLHBh cnNlcjp0aGlzLl9wYXJzZUJveFNoYWRvd1N0eWxlLGF0dHJpYnV0ZToiYm94 LXNoYWRvdyIsdmFsdWU6IiJ9LHtzZWxlY3RvcjoiLndjRG9ja2VyLCAud2NQ YW5lbEJhY2tncm91bmQiLGVsZW06JzxkaXYgY2xhc3M9IndjRG9ja2VyIj48 L2Rpdj4nLG5hbWU6IkJveC1TaGFkb3cgTGVmdCBPZmZzZXQiLGluZm86IlRo ZSBib3ggc2hhZG93IGhvcml6b250YWwgb2Zmc2V0IGZyb20gdGhlIGxlZnQg KGNhbiBiZSBuZWdhdGl2ZSkiLGNyZWF0ZTp0aGlzLmFkZFBpeGVsQ29udHJv bCxwYXJzZXI6dGhpcy5fcGFyc2VCb3hTaGFkb3dBdHRyaWJ1dGUoMSksYXR0 cmlidXRlOiJib3gtc2hhZG93IixhcHBlbmQ6ITAsZ3JvdXBlZDohMCx2YWx1 ZToiMHB4Iixtb2JpbGVWYWx1ZToiMHB4In0se3NlbGVjdG9yOiIud2NEb2Nr ZXIsIC53Y1BhbmVsQmFja2dyb3VuZCIsZWxlbTonPGRpdiBjbGFzcz0id2NE b2NrZXIiPjwvZGl2PicsbmFtZToiQm94LVNoYWRvdyBUb3AgT2Zmc2V0Iixp bmZvOiJUaGUgYm94IHNoYWRvdyB2ZXJ0aWNhbCBvZmZzZXQgZnJvbSB0aGUg dG9wIChjYW4gYmUgbmVnYXRpdmUpIixjcmVhdGU6dGhpcy5hZGRQaXhlbENv bnRyb2wscGFyc2VyOnRoaXMuX3BhcnNlQm94U2hhZG93QXR0cmlidXRlKDIp LGF0dHJpYnV0ZToiYm94LXNoYWRvdyIsYXBwZW5kOiEwLGdyb3VwZWQ6ITAs dmFsdWU6IjBweCIsbW9iaWxlVmFsdWU6IjBweCJ9LHtzZWxlY3RvcjoiLndj RG9ja2VyLCAud2NQYW5lbEJhY2tncm91bmQiLGVsZW06JzxkaXYgY2xhc3M9 IndjRG9ja2VyIj48L2Rpdj4nLG5hbWU6IkJveC1TaGFkb3cgQmx1ciIsaW5m bzoiVGhlIGJveCBzaGFkb3cgYmx1ciIsY3JlYXRlOnRoaXMuYWRkUGl4ZWxD b250cm9sLHBhcnNlcjp0aGlzLl9wYXJzZUJveFNoYWRvd0F0dHJpYnV0ZSgz KSxhdHRyaWJ1dGU6ImJveC1zaGFkb3ciLGFwcGVuZDohMCxncm91cGVkOiEw LHZhbHVlOiIwcHgiLG1vYmlsZVZhbHVlOiIwcHgifSx7c2VsZWN0b3I6Ii53 Y0RvY2tlciwgLndjUGFuZWxCYWNrZ3JvdW5kIixlbGVtOic8ZGl2IGNsYXNz PSJ3Y0RvY2tlciI+PC9kaXY+JyxuYW1lOiJCb3gtU2hhZG93IFNwcmVhZCIs aW5mbzoiVGhlIGJveCBzaGFkb3cgc3ByZWFkIixjcmVhdGU6dGhpcy5hZGRQ aXhlbENvbnRyb2wscGFyc2VyOnRoaXMuX3BhcnNlQm94U2hhZG93QXR0cmli dXRlKDQpLGF0dHJpYnV0ZToiYm94LXNoYWRvdyIsYXBwZW5kOiEwLGdyb3Vw ZWQ6ITAsdmFsdWU6IjBweCIsbW9iaWxlVmFsdWU6IjBweCJ9LHtzZWxlY3Rv cjoiLndjRG9ja2VyLCAud2NQYW5lbEJhY2tncm91bmQiLGVsZW06JzxkaXYg Y2xhc3M9IndjRG9ja2VyIj48L2Rpdj4nLG5hbWU6IkJveC1TaGFkb3cgQ29s b3IiLGluZm86IlRoZSBib3ggc2hhZG93IGNvbG9yIixjcmVhdGU6dGhpcy5h ZGRDb2xvckNvbnRyb2wscGFyc2VyOnRoaXMuX3BhcnNlQm94U2hhZG93Q29s b3IsYXR0cmlidXRlOiJib3gtc2hhZG93IixhcHBlbmQ6ITAsZ3JvdXBlZDoh MCx2YWx1ZToiIn0se25hbWU6IiIsY3JlYXRlOnRoaXMuYWRkU3BhY2VyfSx7 bmFtZToiTW9kYWwgQmxvY2tlciIsY3JlYXRlOnRoaXMuYWRkU3BhY2VyfSx7 c2VsZWN0b3I6Ii53Y01vZGFsQmxvY2tlciIsZWxlbTonPGRpdiBjbGFzcz0i d2NNb2RhbEJsb2NrZXIiPjwvZGl2PicsbmFtZToiTW9kYWwgQmxvY2tlciBD b2xvciIsaW5mbzoiVGhlIGNvbG9yIG9mIHRoZSBmdWxsc2NyZWVuIGJsb2Nr ZXIgZWxlbWVudCB0aGF0IGFwcGVhcnMgd2hlbiBhIG1vZGFsIHBhbmVsIGlz IHZpc2libGUiLGNyZWF0ZTp0aGlzLmFkZENvbG9yQ29udHJvbCxhdHRyaWJ1 dGU6ImJhY2tncm91bmQtY29sb3IiLHZhbHVlOiIifSx7bmFtZToiIixjcmVh dGU6dGhpcy5hZGRTcGFjZXJ9LHtuYW1lOiJMb2FkaW5nIFNjcmVlbiIsY3Jl YXRlOnRoaXMuYWRkU3BhY2VyfSx7c2VsZWN0b3I6Ii53Y0xvYWRpbmdJY29u IixlbGVtOic8ZGl2IGNsYXNzPSJ3Y0xvYWRpbmdJY29uIj48L2Rpdj4nLG5h bWU6IkxvYWRpbmcgSWNvbiBDb2xvciIsaW5mbzoiVGhlIGljb24gY29sb3Ig b3IgdGhlIGxvYWRpbmcgc2NyZWVuIHRvIHVzZSIsY3JlYXRlOnRoaXMuYWRk Q29sb3JDb250cm9sLGF0dHJpYnV0ZToiY29sb3IiLHZhbHVlOiIifSx7c2Vs ZWN0b3I6Ii53Y0xvYWRpbmdMYWJlbCIsZWxlbTonPGRpdiBjbGFzcz0id2NM b2FkaW5nTGFiZWwiPjwvZGl2PicsbmFtZToiTG9hZGluZyBMYWJlbCBDb2xv ciIsaW5mbzoiVGhlIGxhYmVsIGNvbG9yIG9yIHRoZSBsb2FkaW5nIHNjcmVl biB0byB1c2UiLGNyZWF0ZTp0aGlzLmFkZENvbG9yQ29udHJvbCxhdHRyaWJ1 dGU6ImNvbG9yIix2YWx1ZToiIn0se3NlbGVjdG9yOiIud2NMb2FkaW5nQmFj a2dyb3VuZCIsZWxlbTonPGRpdiBjbGFzcz0id2NMb2FkaW5nQmFja2dyb3Vu ZCI+PC9kaXY+JyxuYW1lOiJMb2FkaW5nIFNjcmVlbiBDb2xvciIsaW5mbzoi VGhlIGJhY2tncm91bmQgY29sb3Igb3IgdGhlIGxvYWRpbmcgc2NyZWVuIHRv IHVzZSIsY3JlYXRlOnRoaXMuYWRkQ29sb3JDb250cm9sLGF0dHJpYnV0ZToi YmFja2dyb3VuZC1jb2xvciIsdmFsdWU6IiJ9LHtuYW1lOiIiLGNyZWF0ZTp0 aGlzLmFkZFNwYWNlcn0se25hbWU6Ikdob3N0IixjcmVhdGU6dGhpcy5hZGRT cGFjZXJ9LHtzZWxlY3RvcjoiLndjR2hvc3QiLGVsZW06JzxkaXYgY2xhc3M9 IndjR2hvc3QiPjwvZGl2PicsbmFtZToiR2hvc3QgQ29sb3IiLGluZm86IlRo ZSBnaG9zdCBjb2xvciwgdGhpcyBpcyB0aGUgb3ZlcmxheSB0aGF0IHNob3dz IHdoZXJlIGEgbW92aW5nIHBhbmVsIGlzIGJlaW5nIG1vdmVkIixjcmVhdGU6 dGhpcy5hZGRDb2xvckNvbnRyb2wsYXR0cmlidXRlOiJiYWNrZ3JvdW5kLWNv bG9yIix2YWx1ZToiIn0se3NlbGVjdG9yOiIud2NHaG9zdCIsZWxlbTonPGRp diBjbGFzcz0id2NHaG9zdCI+PC9kaXY+JyxuYW1lOiJHaG9zdCBCb3JkZXIg UmFkaXVzIiwK --047d7bf0d1d6eb389f052fe1e53f Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --047d7bf0d1d6eb389f052fe1e53f--