Content-Type: multipart/related; start=; boundary=----------g4QYkLs0brU8yo6UeYwHBy Content-Location: http://www.torrentino.com/torrents/102795 Subject: =?utf-8?Q?=D0=91=D0=B8=D0=BC=D0=B5=D1=80=D1=8B=20=D1=81=D0=BA=D0=B0=D1=87=D0=B0=D1=82=D1=8C=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D1=82=D0=BE=D1=80=D1=80=D0=B5=D0=BD=D1=82=20=D1=82=D1=80=D0=B5=D0=BA=D0=B5=D1=80=20=D0=A2=D0=9E=D0=A0=D0=A0=D0=95=D0=9D=D0=A2=D0=98=D0=9D=D0=9E=20=D0=B1=D0=B5=D1=81=D0=BF=D0=BB=D0=B0=D1=82=D0=BD=D0=BE=20-=20=D0=B8=D0=B3=D1=80=D1=8B=20=D0=BD=D0=B0=20Torrentino=20com?= MIME-Version: 1.0 ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=102795.htm Content-Type: text/html; charset=utf-8; name=102795.htm Content-ID: Content-Location: http://www.torrentino.com/torrents/102795 Content-Transfer-Encoding: Quoted-Printable = =D0=91=D0=B8=D0=BC=D0=B5=D1=80=D1=8B =D1=81=D0=BA=D0=B0=D1=87= =D0=B0=D1=82=D1=8C =D1=87=D0=B5=D1=80=D0=B5=D0=B7 =D1=82=D0=BE=D1=80=D1=80= =D0=B5=D0=BD=D1=82 =D1=82=D1=80=D0=B5=D0=BA=D0=B5=D1=80 =D0=A2=D0=9E=D0=A0= =D0=A0=D0=95=D0=9D=D0=A2=D0=98=D0=9D=D0=9E =D0=B1=D0=B5=D1=81=D0=BF=D0=BB= =D0=B0=D1=82=D0=BD=D0=BE - =D0=B8=D0=B3=D1=80=D1=8B =D0=BD=D0=B0 Torrent= ino com = =
=
=

=D0=91=D0=B8=D0=BC=D0=B5=D1=80=D1=8B / Beam Breakers / RU / Racing / 2003 / PC

648.7 =D0=9C=D0=91 1 =D1=81=D0=B8=D0=B4 / 0 =D0=BB=D0=B8=D1=87=D0=B5=D0= =B9
3D=

=D0=9D=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5: =D0=91=D0= =B8=D0=BC=D0=B5=D1=80=D1=8B
=D0=9E=D1=80=D0=B8=D0=B3=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5= =D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5: Beam Breakers=
=D0=93=D0=BE=D0=B4 =D0=B2=D1=8B=D0=BF=D1=83=D1=81=D0=BA=D0=B0: 2003
=D0=96=D0=B0=D0=BD=D1=80: Arcade / Racing (Futuristic) / 3D
=D0=92=D1=8B=D0=BF=D1=83=D1=89=D0=B5=D0=BD=D0=BE: 1=D0=A1
=D0=AF=D0=B7=D1=8B=D0=BA: =D0=A0=D1=83=D1=81=D1=81=D0=BA=D0=B8=D0=B9 =D0= =9C=D0=B8=D0=BD=D0=B8=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5 =D1=81=D0= =B8=D1=81=D1=82=D0=B5=D0=BC=D0=BD=D1=8B=D0=B5 =D1=82=D1=80=D0=B5=D0=B1=D0= =BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F:
=D0=9E=D0=BF=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D0=B0=D1=8F= =D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=B0: Windows 98/ME/2000/XP
= =D0=9F=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=BE=D1=80: Pentium II 400 = =D0=9C=D0=93=D1=86
=D0=9F=D0=B0=D0=BC=D1=8F=D1=82=D1=8C: 64 =D0=9C=D0=91
=D0=92=D0=B8=D0=B4=D0=B5=D0=BE=D0=BA=D0=B0=D1=80=D1=82=D0=B0: 8 =D0=9C=D0= =91, DirectX 8.1
=D0=90=D1=83=D0=B4=D0=B8=D0=BE=D0=BA=D0=B0=D1=80=D1=82=D0=B0: =D0=A1=D0= =BE=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=B8=D0=BC=D0=B0=D1=8F =D1=81 DirectX= 8.1
=D0=A1=D0=B2=D0=BE=D0=B1=D0=BE=D0=B4=D0=BD=D0=BE=D0=B5 =D0=BC=D0=B5=D1=81= =D1=82=D0=BE =D0=BD=D0=B0 =D0=96=D0=94: 500 =D0=9C=D0=91
CD-=D0=BF=D1=80=D0=B8=D0=B2=D0=BE=D0=B4: 4=D1=85
=D0=9E=D0=B1 =D0=B8=D0=B3=D1=80=D0=B5: =D0=9E=D0=B3=D1=80=D0=BE=D0=BC=D0= =BD=D1=8B=D0=B9 =D1=84=D1=83=D1=82=D1=83=D1=80=D0=B8=D1=81=D1=82=D0=B8=D1= =87=D0=B5=D1=81=D0=BA=D0=B8=D0=B9 =D0=B3=D0=BE=D1=80=D0=BE=D0=B4, =D0=BD= =D0=B0=D0=B2=D0=BE=D0=B4=D0=BD=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9 =D0=B3=D0=B0= =D0=BD=D0=B3=D1=81=D1=82=D0=B5=D1=80=D0=B0=D0=BC=D0=B8 =D0=B8 =D0=BF=D0=BE= =D0=BB=D0=B8=D1=86=D0=B8=D0=B5=D0=B9, =D0=B1=D0=B5=D1=88=D0=B5=D0=BD=D0=B0= =D1=8F =D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82=D1=8C =D0=B8 =D1=81=D0= =B2=D0=B5=D1=80=D1=85=D0=B1=D1=8B=D1=81=D1=82=D1=80=D1=8B=D0=B5 =D0=B0=D0= =B2=D1=82=D0=BE=D0=BC=D0=BE=D0=B1=D0=B8=D0=BB=D0=B8 =D1=81 =D0=B0=D0=BD=D1= =82=D0=B8=D0=B3=D1=80=D0=B0=D0=B2=D0=B8=D1=82=D0=B0=D1=86=D0=B8=D0=BE=D0= =BD=D0=BD=D1=8B=D0=BC =D0=B4=D0=B2=D0=B8=D0=B3=D0=B0=D1=82=D0=B5=D0=BB=D0= =B5=D0=BC. =D0=A1=D1=82=D0=B0=D0=BD=D1=8C=D1=82=D0=B5 =D1=87=D0=BB=D0=B5= =D0=BD=D0=BE=D0=BC =D0=B1=D0=B0=D0=BD=D0=B4=D1=8B, =D0=BE=D0=B1=D0=B7=D0= =B0=D0=B2=D0=B5=D0=B4=D0=B8=D1=82=D0=B5=D1=81=D1=8C =D0=BC=D0=BE=D1=89=D0= =BD=D0=BE=D0=B9 =D0=BC=D0=B0=D1=88=D0=B8=D0=BD=D0=BE=D0=B9 =D0=B8 =D0=BD= =D0=B0=D1=81=D0=BB=D0=B0=D0=B6=D0=B4=D0=B0=D0=B9=D1=82=D0=B5=D1=81=D1=8C= =D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=B9 =D1=81=D0=B2=D0=BE=D0=B1=D0=BE=D0=B4= =D0=BE=D0=B9 =D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D1=89=D0=B5=D0=BD=D0=B8= =D1=8F =D0=BF=D0=BE =D1=84=D1=83=D1=82=D1=83=D1=80=D0=B8=D1=81=D1=82=D0=B8= =D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=BC=D1=83 =D0=BC=D0=B5=D0=B3=D0=B0=D0=BF= =D0=BE=D0=BB=D0=B8=D1=81=D1=83. =D0=9F=D0=BE=D0=BF=D1=80=D0=BE=D0=B1=D1=83= =D0=B9=D1=82=D0=B5 =D1=81=D0=B2=D0=BE=D0=B8 =D1=81=D0=B8=D0=BB=D1=8B =D0= =B2 =D0=BD=D0=B5=D0=BB=D0=B5=D0=B3=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D1=85 =D0= =B3=D0=BE=D0=BD=D0=BA=D0=B0=D1=85, =D0=B2 =D0=BA=D0=BE=D1=82=D0=BE=D1=80= =D1=8B=D1=85 =D1=83=D1=87=D0=B0=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=82 =D0=BB= =D1=83=D1=87=D1=88=D0=B8=D0=B5 =D0=B8=D0=B7 =D0=BB=D1=83=D1=87=D1=88=D0=B8= =D1=85. =D0=9F=D0=BE=D0=B1=D0=B5=D0=B4=D0=B0 =D0=B2 =D1=82=D0=B0=D0=BA=D0= =BE=D0=BC =D1=81=D0=BE=D1=80=D0=B5=D0=B2=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0= =B8=D0=B8 =D0=BE=D0=B7=D0=BD=D0=B0=D1=87=D0=B0=D0=B5=D1=82 =D0=BD=D0=B5 = =D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE =D0=B2=D0=B0=D1=88 =D0=BB=D0=B8=D1=87= =D0=BD=D1=8B=D0=B9 =D1=83=D1=81=D0=BF=D0=B5=D1=85, =D0=BD=D0=BE =D0=B8 =D0= =BF=D0=BE=D0=B2=D1=8B=D1=88=D0=B5=D0=BD=D0=B8=D0=B5 =D0=B0=D0=B2=D1=82=D0= =BE=D1=80=D0=B8=D1=82=D0=B5=D1=82=D0=B0 =D0=B2=D1=81=D0=B5=D0=B9 =D0=B1=D0= =B0=D0=BD=D0=B4=D1=8B. =D0=9E=D0=BF=D0=B0=D1=81=D0=BD=D1=8B=D0=B5 =D0=BC= =D0=B8=D1=81=D1=81=D0=B8=D0=B8 =D0=B8 =D0=BA=D1=80=D1=83=D1=82=D1=8B=D0=B5= =D0=B2=D0=B8=D1=80=D0=B0=D0=B6=D0=B8 =E2=80=94 =D1=80=D0=B0=D0=B1=D0=BE= =D1=82=D0=B0 =D0=B4=D0=BB=D1=8F =D0=BD=D0=B0=D1=81=D1=82=D0=BE=D1=8F=D1=89= =D0=B5=D0=B3=D0=BE =D0=B3=D0=BE=D0=BD=D1=89=D0=B8=D0=BA=D0=B0. =D0=9D=D0= =B5 =D0=BE=D0=BF=D0=BB=D0=BE=D1=88=D0=B0=D0=B9=D1=82=D0=B5, =D0=B8 =D0=B2= =D0=B0=D0=BC =D0=B3=D0=B0=D1=80=D0=B0=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2= =D0=B0=D0=BD=D0=BE =D1=89=D0=B5=D0=B4=D1=80=D0=BE=D0=B5 =D0=B2=D0=BE=D0=B7= =D0=BD=D0=B0=D0=B3=D1=80=D0=B0=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5 =D0=B8= =D1=83=D0=B2=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5 =D1=81=D0=BE =D1=81=D1= =82=D0=BE=D1=80=D0=BE=D0=BD=D1=8B =D0=B1=D0=BE=D1=81=D1=81=D0=B0.
=D0=9E=D1=81=D0=BE=D0=B1=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D0=B8 =D0=B8= =D0=B3=D1=80=D1=8B:
* =D0=A3=D0=BD=D0=B8=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9 =D0=B8=D0= =B3=D1=80=D0=BE=D0=B2=D0=BE=D0=B9 =D0=BC=D0=B8=D1=80.
* =D0=A1=D0=B2=D0=BE=D0=B1=D0=BE=D0=B4=D0=B0 =D0=BF=D0=B5=D1=80=D0=B5=D0= =BC=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D1=8F =D0=BF=D0=BE =D0=BE=D0=B3=D1=80=D0= =BE=D0=BC=D0=BD=D0=BE=D0=BC=D1=83 =D1=84=D1=83=D1=82=D1=83=D1=80=D0=B8=D1= =81=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=BC=D1=83 =D0=B3=D0=BE=D1= =80=D0=BE=D0=B4=D1=83.
* 57 =D0=BC=D0=B8=D1=81=D1=81=D0=B8=D0=B9 =D0=B2 =D1=80=D0=B5=D0=B6=D0=B8= =D0=BC=D0=B5 =D0=BA=D0=B0=D0=BC=D0=BF=D0=B0=D0=BD=D0=B8=D0=B8.
* 30 =D1=80=D0=B0=D0=B7=D0=BB=D0=B8=D1=87=D0=BD=D1=8B=D1=85 =D0=BC=D0=B0= =D1=88=D0=B8=D0=BD =D1=81 =D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE= =D1=81=D1=82=D1=8C=D1=8E =D0=B8=D1=85 =D0=B4=D0=B0=D0=BB=D1=8C=D0=BD=D0=B5= =D0=B9=D1=88=D0=B5=D0=B9 =D0=BC=D0=BE=D0=B4=D0=B5=D1=80=D0=BD=D0=B8=D0=B7= =D0=B0=D1=86=D0=B8=D0=B8.
* 5 =D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2 =D1=82=D1=80=D0=B0=D0=BD= =D1=81=D0=BF=D0=BE=D1=80=D1=82=D0=BD=D1=8B=D1=85 =D1=81=D1=80=D0=B5=D0=B4= =D1=81=D1=82=D0=B2.
* =D0=94=D0=BE 6 =D0=B8=D0=B3=D1=80=D0=BE=D0=BA=D0=BE=D0=B2 =D0=B2 =D1=80= =D0=B5=D0=B6=D0=B8=D0=BC=D0=B5 =D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=D0=BF=D0=BE= =D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D0=BA= =D0=BE=D0=B9 =D0=B8=D0=B3=D1=80=D1=8B.

=D0=9F=D1=80=D0=B5=D0=BC=D0=B8=D1=8F =C2=AB=D0=9E=D1=81=D0= =BA=D0=B0=D1=80=C2=BB =D0=B7=D0=B0 =D0=BB=D1=83=D1=87=D1=88=D0=B8=D0=B9 = =D0=B7=D0=B2=D1=83=D0=BA=C2=A0=E2=80=94 =D0=BD=D0=B0=D0=B3=D1=80=D0=B0=D0= =B4=D0=B0 =D0=90=D0=BC=D0=B5=D1=80=D0=B8=D0=BA=D0=B0=D0=BD=D1=81=D0=BA=D0= =BE=D0=B9 =D0=B0=D0=BA=D0=B0=D0=B4=D0=B5=D0=BC=D0=B8=D0=B8 =D0=BA=D0=B8=D0= =BD=D0=BE=D0=B8=D1=81=D0=BA=D1=83=D1=81=D1=81=D1=82=D0=B2=D0=B0, =D0=BF=D1= =80=D0=B8=D1=81=D1=83=D0=B6=D0=B4=D0=B0=D0=B5=D0=BC=D0=B0=D1=8F =D0=B5=D0= =B6=D0=B5=D0=B3=D0=BE=D0=B4=D0=BD=D0=BE =D1=81 1930 =D0=B3=D0=BE=D0=B4=D0= =B0.

=D0=A1=D0=BA=D1=80=D0=B8=D0=BD=D1=88=D0= =BE=D1=82=D1=8B
=D0=9F=D0=BE=D0=B6=D0=B0=D0=BB=D0=BE=D0=B2=D0=B0=D1=82=D1= =8C=D1=81=D1=8F...
<= div style=3D"margin:0;padding:0;display:inline">=
=D0=9E=D1=82=D0=BC=D0=B5=D0=BD=D0=B0
=
=D0=A1=D0=BE=D0=B4=D0=B5=D1=80=D0=B6=D0=B0= =D0=BD=D0=B8=D0=B5 =D1=82=D0=BE=D1=80=D1=80=D0=B5=D0=BD=D1=82=D0=B0
  • Bimery.2003.PC
    • Bimery.2003.PC.mdf
    • Bimery.2003.PC.mds

= =
=D0=9F=D0=BE=D1=85=D0=BE=D0=B6= =D0=B8=D0=B5 =D1=82=D0=BE=D1=80=D1=80=D0=B5=D0=BD=D1=82=D1=8B
  1. =D0=A1=D0=B8=D0=B4=D1=8B =D0=BF=D0= =B8=D1=80=D1=8B
    3D"comment"
    3D"Hot

    390 =D0=9C=D0=91

    0 0

    +1 0

  2. =D0=A1=D0=B8=D0=B4=D1=8B =D0=BF=D0= =B8=D1=80=D1=8B
    3D"comment"
    3D"MotoGP

    1.12 =D0=93=D0=91

    0 0

    +2 0

  3. =D0=A1=D0=B8=D0=B4=D1=8B =D0=BF=D0= =B8=D1=80=D1=8B
    3D"comment"
    3D"MotoGP

    531 =D0=9C=D0=91

    0 0

    +5 –1

  4. =D0=A1=D0=B8=D0=B4=D1=8B =D0=BF=D0= =B8=D1=80=D1=8B
    3D"comment"
    3D"=D0=91=D0=BE=D0=B5=D0=BC=D0=BE=D0=B1=D0=B8=D0=BB=D0=B8=

    266 =D0=9C=D0=91

    0 0

    +1 0

=D0=A1=D0=B2=D0=BE=D0=B9 =D0=BA=D0=BE=D0= =BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B9
=
= =
=

© 2009–2015, Torrentino.com

=D0=9F=D0=BE =D0=B2=D1=81=D0=B5=D0=BC =D0=B2=D0=BE=D0=BF=D1= =80=D0=BE=D1=81=D0=B0=D0=BC =D0=BE=D0=B1=D1=80=D0=B0=D1=89=D0=B0=D1=82=D1= =8C=D1=81=D1=8F =D0=BD=D0=B0 admin@torrentino.com

=D0=9F=D1=80=D0=B0=D0=B2=D0=BE=D0=BE=D0=B1=D0=BB=D0=B0=D0=B4= =D0=B0=D1=82=D0=B5=D0=BB=D1=8F=D0=BC =D0=BF=D1=80=D0=BE=D1=81=D1=8C=D0=B1= =D0=B0 =D0=BF=D0=B8=D1=81=D0=B0=D1=82=D1=8C =D0=B2=D0=B5=D0=B6=D0=BB=D0=B8= =D0=B2=D0=BE =D0=B8 =D1=81=D0=B2=D0=BE=D0=B5=D0=B2=D1=80=D0=B5=D0=BC=D0=B5= =D0=BD=D0=BD=D0=BE: admin@torren= tino.com =D0=B8 =D0=BC=D1=8B =D0=BE=D1=82=D0=BD=D0=B5=D1=81=D0=B5=D0= =BC=D1=81=D1=8F =D0=BA =D0=B2=D0=B0=D1=88=D0=B5=D0=B9 =D0=BF=D1=80=D0=BE= =D1=81=D1=8C=D0=B1=D0=B5 =D1=81 =D0=BF=D0=BE=D0=BD=D0=B8=D0=BC=D0=B0=D0=BD= =D0=B8=D0=B5=D0=BC.

=D0=9E=D0=B1=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D0=B8=D0= =B5 =D0=BA =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0= =BB=D1=8F=D0=BC

------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline Content-Type: image/png Content-Location: http://asset1.torrentino.com/assets/com/logo-630e4d43230a6976173f639831d54d61.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAN4AAAAgCAYAAAB9/8beAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5h ZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0 dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1l bnRJRD0ieG1wLmRpZDoxNUQyODM0REM1MkRFMDExQjczQ0U1Qzc4OEVFQ0Q1NyIg eG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRDlCNDM5MjRCMTAxMUUwQkExQUE5 RDVBNTAwRDJCMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRDlCNDM5MTRC MTAxMUUwQkExQUE5RDVBNTAwRDJCMSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQ aG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6 aW5zdGFuY2VJRD0ieG1wLmlpZDozRkU2MzYwMjU1NDZFMDExOTk1OUZEQ0YyMUE1 NTVFNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxNUQyODM0REM1MkRFMDEx QjczQ0U1Qzc4OEVFQ0Q1NyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRG 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 /Z8AAwA4RlLa925xIQAAAABJRU5ErkJggg== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline Content-Type: image/png Content-Location: http://asset1.torrentino.com/assets/com/search-submit-42b3eea401997e476116eb7753427fa8.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAD4AAAAgCAYAAABKHcuvAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+NpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5h ZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpkYz0iaHR0 cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhtcD0iaHR0cDov L25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElE PSJ1dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3IiB4bXBNTTpE b2N1bWVudElEPSJ4bXAuZGlkOjBDNEZBMjgxNjY5NjExRTFBQUFCRkY2Q0VBMEQw RUU2IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBDNEZBMjgwNjY5NjExRTFB QUFCRkY2Q0VBMEQwRUU2IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hv cCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5j ZUlEPSJ4bXAuaWlkOjk2OURBQTNFRTYyMzY4MTE4QzE0OEE0MjBEQUZGMzg0IiBz dFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk1OURBQTNFRTYyMzY4MTE4QzE0OEE0 MjBEQUZGMzg0Ii8+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxh bmc9IngtZGVmYXVsdCI+V2ViPC9yZGY6bGk+IDwvcmRmOkFsdD4gPC9kYzp0aXRs ZT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ eHBhY2tldCBlbmQ9InIiPz6qGOhqAAACO0lEQVR42uyZQWoCMRSGk3FmlK4UVyI9 QBddue4BCnoPj+Q9FHqArl33ACKuBFcFZ3TS/Gn+4TVQHUoLxcmDRzIxmbzv/S/j ItoYo6z1rd9bz9VtW2F9Y/2QAnq73T7M5/On9Xrd3+12xS0Sj0ajfDKZHBaLxet4 PH7TVvHH2Wz2vFqt7jAhTVNN73Q6utfrJWjzPNfdbtf1+Rs9SRJtza2F2We3WdhH i/lhUOfz2bBv4zFVVdV9tHjmuHWD+eijhZdlWaE9Ho9VURTuGS3GTqdT7XjXdDp9 Xy6XL1A8h9K+DNyL/QYuSDz7VmExANAHBx0xco4Fxfoa2I+5wLFWQoZGUGkhNKZw jMbY5FyyhO/zrDnA1X6/L+VGdGTODiXV544AQ4Uo0deexwEJ9Q1aJMH/pnwizKVy ZMBSeQFbg0nFAWzVhcJOdSiNMcQuElLvy6PswDFZBsDSQOlitX0JxhIEb/smy7K6 3GV5s+8T8KXUkYhr51AGKNWTsCx1xMcWMQGcYklgmUxp6aVAmAAEj+SgxTmy4AlB vbJKwocJITST0ERxqTDAGIusBAI2hW0MHpS/EdVREQKAVJRjSAw/kOHH7ZrJc04Y wlEMGVMTyB+DX1JHHBN5XCqpbpMy/67kw0r4LUv/6n8zLNv/9r+eqJZaBI/gETyC R/AIHsEjeASP4BE8gkfwCB7BI/ifGy5GanBcr7QFfDgcZgQvcKfUFnDPWgB8g4s0 3CndsvKDwSAFI1jBrNt6TfwhwAD7nm8rdGjqJAAAAABJRU5ErkJggg== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://asset1.torrentino.com/assets/com/plate-f2f9fb7599595c92f5d79f960e16d1f3.jpg Content-Transfer-Encoding: Base64 /9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/ 4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49 Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRh IHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29y ZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAg ICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8w Mi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0 PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0v IiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBl L1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MTVEMjgz NERDNTJERTAxMUI3M0NFNUM3ODhFRUNENTciIHhtcE1NOkRvY3VtZW50SUQ9Inht cC5kaWQ6Q0JEMjg2NzIzNDQ2MTFFMDk4NEM5RTdENjcxMzMyN0MiIHhtcE1NOklu c3RhbmNlSUQ9InhtcC5paWQ6Q0JEMjg2NzEzNDQ2MTFFMDk4NEM5RTdENjcxMzMy N0MiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dz Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 NDk5ODU3NTE5NTJGRTAxMTlCQzZCNDkxQUY0OUVGRUYiIHN0UmVmOmRvY3VtZW50 SUQ9InhtcC5kaWQ6MTVEMjgzNERDNTJERTAxMUI3M0NFNUM3ODhFRUNENTciLz4g PC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBh Y2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAAoUAAAKOAAA DqwAABKb/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAM Dg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgAR CAGhAZ8DAREAAhEBAxEB/8QAgQABAQEBAQEBAAAAAAAAAAAAAAEFBAMCBgEBAAAA AAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAsBEBAAAAAAAAAAAAAAAAAAAA sBIBAAAAAAAAAAAAAAAAAAAAsBMAAwEBAAMBAAMBAQAAAAAAAAERECAwUWFAULAh YDH/2gAMAwEAAhEDEQAAAfyhQQAgICAgIQEBCEBCEBCEBCAhCAhAQEICAEBDdAAI AQEBCAhAQgIQgIQgIQgIQEIQEBCAgICAG6CkAICAgIQEICEBCEBCAhCEBCAhCAgI QEBAQA3QACAEBAQgIQEICEICEBCEICEBCEBAQgICAgBugAEAICEBAQgIQEIQEIQE IQEICEICAhAQEBADcKAQAgICAgIQEIQEICEICEICEICEBAQgICAgBuAAAgBAQEIC EBCAhAQhCAhAQhAQgIQEBAQEANwAAgBAQEBAQgIQEIQEIQEIQEICEBCAgICAgBtg AAEAICEBAQgIQEIQEIQEICEICAhAQEBAQA2wAAQAgICAhAQgIQEICEICEICEBCAg ICAgIAbQAAAICAgICEBCAhAQgIQgIQEICEBAQgBAQA2gAAQAgICAgIQEICEBCAhC AhAQgICEBAQAgBsgFIAQAgICAgIQEBCEBCAhAQgIQEICAgICAA2QACAAgICAgICE BCAhAQgIQEICEBAQEBAQAGwUgAIACAgBCAgIQEICEBCAhAQgICAhACAgANgAgABA CAgICAgIQEICEBCAhAQEICAgIAQAGuAAQAEAICAgICAhAQgIQEBCAhAQEBAQEAAN YAAAgAICAgICAgIQEICEBAQgICAhACAgABqgAAAgAICAgICAhAQEICAhAQgICAgI AQAA1QAQAAgAICAgICAhAQEICAhAQEBAQEBAAAagAAIAAQEAICAgICEBAQgICEBA QEAICAAA0wAAAQAEBACAgICEBAQEICAgICAgICAAAGkAAAAQAEBACAgICEBAQEIC AgICAEBAAADSAAIAACAEBAQAgIQEBAQEBAQEBAQAgAABogAAAgAIAQEBAQAhAQEB AQEBAQAgIAAADQAAABAACAgBAQEBAQEBAQEBACAgIAAAAd4AAAABAQAgBAQEBAQE BAQAgICAEAAAAO8AAEAAIACAgBAQEBACAgICAgBAQAAAAHcAAAQAAgBACAEBAQAg ICAgIAQAgAAAAO0AAAAgAIACAgBAQEAICAgBAQAgAAAAB2AAAAAgABACAgBAQAgI CAEAICAAAAAA7AACAAAEABACAgBACAgBAQAgBAAAAAAdYAAAIAAQAEAIAQEAICAE AIAQAAAAAA6gAAAAQAAgBACAEAICAEAIAQAAAAAAHSAAAAACAAgBACAEAIAQAgBA AAAAAADpAAAIAACAAgAIAQAgBACAEAAAAAAAB0AAAAEAABAAQAgBACAAgBAAAAAA AAD3AAAAABAAQAEABACAAgBAAAAAAAAAe4AABAAACAAgAIACAEABAAAAAAAAAD2A AAABAAAQAEABAAQAEAAAAAAAAAB6gAAAAAEAAIACAAEAIAAAAAAAAAAD1AAABAAA CAAEAAIACAAAAAAAAAAAHoAAAAACAAAgABAAQAAAAAAAAAAAA9AAAQAAAAgAAIAA QAAAAAAAAAAAAH2AAAAAQAAAEAAIAAAAAAAAAAAAAD6AAAAAAABAAAQAAAAAAAAA AAAAAH0AAAAACAAAEAAAAAAAAAAAAAAAAKUEAAAAAABAAAAAAAAAAAAAAAAACgAA AAAEAAAAAAAAAAAAAAAAAAAKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /9oACAEBAAEFAixP/9oACAECAAEFAixP/9oACAEDAAEFAixP/9oACAECAgY/AixP /9oACAEDAgY/AixP/9oACAEBAQY/AixP/9oACAEBAwE/ISsrKf6Vn+n+lZWVlZWV lZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZX/AFSP/9oACAEC AwE/If6sT//aAAgBAwMBPyH+rE//2gAMAwEAAhEDEQAAEIBIIIIIJBAJAJAJAIBI JBAIIABJJJIIIJBIJAJBJAJBIBIIJBBJIJBIIIIJBIJAJAIAJBIBIIJBBJIJJJII IJBIJAJAIAJBIBIIJBBJIBJBAIJBBIJAJAJAJBIBIIJBBJIIAJBBBBAIBIJAJAJA JBIIBBBJIJJIJBBBIJBIBABIJAJBIJBBBJIAABIIIIIBAIBIBIBIBAIJBBBBIJJJ BAIJBBIBAJAJBIBIIBBBBBIAAAIBBBBIJBIBABAJBIJBBBBBIJJJAIIIIJBIJAIB IJAIBBBJBBAAAAJBBBBBIJBIJAJBIJBBIIJBAJIJBIIIIIJBAJBIBAIBBIIIJJAB IBIBBBBBBIJBIJBIJBIIIIIJAIJAJAIIBIIJBIJBIJBIIIJIIJAJBJAJBBJBBBIJ BIJBIIJBBBIIAJABJBIIIIIIBBIJBAIJBBBBJIAJJABIBBBBBBAIJBIIBBBBJBBI AJJJAJAIIIIIJBBIIBBIIIIJBAAAAJJBIBBBBBAIIJBAIIIIIJJAAAAAJIBBIIII IBBAIIJJBBAIJAAJJIAJAIJBBBBIIIJBBBBBBJIAAJJJIBIBBIIIIBBBBIIIIIBB IAAAABJABAIIJBBIIIIIIIIIJBAAAAAAAJAJBBBJAJBBBBBBBAIJAAAJJJAJJBBI IIIIIIIIIJBBJIAAAJJJIABBIJBBBBBJJJIIIJBIAAAAAAJIBIBBIIIIJBBBBBII JAAAAAAABJAJBIJBBBIIIIJJBIJAAAAJJIABJBIBBIIIJBBBIIJBIAAAAJJJJAJI BAIJBBIIIJBAIJAAAAAAABJIAJAIBBIIBBAIIBIJAAAAAAAAAJIBIBAIBBIIJBIJ BIAAAAAJJJIAJABAJBIIBBIJBIJAAAAAAJJJJIAJAJBIJBIJBIJBIAAAAAAAAABJ IBIBIBAIBIIBIJAAAAAAAJJIABJIBIBIJBIJAJBIAAAAAAAJJJJAAJIJIJAJBIBI JAAAAAAAAAAABJIAJAJAJAJBJBIAAAAAAAAJJAAAJJAJAJIJAJAJAAAAAAAAAJJJ JIABJAJIJIBIJIAAAAAAAAAAAAAJJIBJAJIBJBJAAAAAAAAAAJJJJAAJJAJIBJBJ AAAAAAAAAAAAAAJJJABJABJAJIAAAAAAAAAAAJJJAABJJABJAJIAAAAAAAAAAAAJ JJJJJAAJJAJIAAAAAAAAAAAAABJAAAAJJIBJJAAAAAAAAAAAAAAIBJJJJJABJIAA AAAAAAAAAAAAAJJJJIABJJIAAAAAAAAAAAAAAAAAAABJJJJAAAAAAAAAAAAAAAAA AJJJJJJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAP/9oACAEBAwE/EK/bPoz6Mr2xv2Z9GN+zG/Zn0Z9GP2MfsY/Y z6M+jPoz6M+jPoz6MfsY/Yx+xj9jH7GP2M+jPox+xj9jH7GP2MfsY/Yz6M+jPoz6 M+jPoz6MfsY/Yx+xj9jPoz6MfsZ9GfRn0Z9Hs4esY/CxjGMfDGMYxjHrxjGPX0sf TGPxMYxjHjGMYxjGPXjGMeMfd4esY/CxjGMfDGMYxjHrxjGPX4W8Y9Yx+BjGMY9Y xjGPXyxjHr6pdbx6xjGMeMYxjGMY9YxjGPwsY9fN4uN4x6xjGMYxjGPXjGMYx+Jj Hr8Vy6x8sYx9MYxjH0+2Pp5SlLreNj1jH4GMYxj6YxjGMfLHrx5cpS7dfDGMYxjG MY9esYxjGMYxj4Y9ePqly43w/G9YxjGMYx4xjGMesePH4Ll1vljGMYxjGMYxj8bG PWPH1/vFy5dbGPwPpjxjGMfLGPX1dpcuXLjY3rGMYxjGMYxjGMYxjGMYx8Pp6ilK XLt26xsePXr8jGMY9evHqf8AhSl2ly5dbG9eMYxjGMYxjGMYx8sY8Y8ePU/8Gyl2 ly5cpdY2MY9fheMYx8PX3f8AClKXKXLlylyjY3j1jGMYxjHj5Yx69ePilKXaXKUu XaN43jGMePpjGMfDHrx4+KUpdpcuXLt4bGPXjGMYx8sevyUpcpS5S5S5eG8esYxj 5Yx6x6x48fipS5Sly5S5S8Mb5Yxj4Y9evzUpSlylLl2l1sb4Y+WPh69ePqlKUpS7 cpcpcpdo3rY2Phj4evXw+qUpSlLtLlG8uUuUb1sb4Y+Hw8Y8fhpSlKUpSlx/5/7l KXLt2jetj1j1j19PulKUpdpSjZS5cu3KN62N6x69evHj8FKUpS5SlKXLlKXLt1sb 1vXw8fmpSlKUpS5S5Sly5du3W9evXjx4/PSlyly5cuXLt1vW9fLx/hpSlKUuXKUu XLtxvW9bxvX56UpSlKXaXKUu3blylxvXjePp+OlKUpSl2lKXKXLl5uXW8bx8PH5K UpSlKXKXbty5cvdxvG+G/PSlKUpdpdpSly5cuXLly43w/wAFKUpSl2lLl25Sl25e m+G/w0pSlKXaXaXLlLly5fC3+KlKUpeKUuUuUuXbly9t7fwUpSlLxSlyl27cvNy7 fyUpSlKXaUu0uUuXbzf0UpSlLzS8Xbt25dv56UpSlLzS7S7du3bt/LSlKUpSl2lL tLt27eL+alKUpSlLzS7S7dvF/fSlLxS7S7S8X+DpS7S8UvF/XSlKUpeaUvN5v7aU pSlKUvVLzS/xFKUvV/gqUpSl8NL/AB1KX+JpSlL/ANJ//9oACAECAwE/EP6sT//a AAgBAwMBPxD+rE//2Q== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline Content-Type: image/png Content-Location: http://asset1.torrentino.com/assets/com/outmargin-corner-edf9356fd55928c503170160e61c3d7d.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABMAAAAECAYAAABsgwTvAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv YmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu aWlkOjU0MzQwODI1NjZBNzExRTFCNjMwOTkyMzAwQzJFMjYxIiB4bXBNTTpEb2N1 bWVudElEPSJ4bXAuZGlkOjU0MzQwODI2NjZBNzExRTFCNjMwOTkyMzAwQzJFMjYx Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 NTQzNDA4MjM2NkE3MTFFMUI2MzA5OTIzMDBDMkUyNjEiIHN0UmVmOmRvY3VtZW50 SUQ9InhtcC5kaWQ6NTQzNDA4MjQ2NkE3MTFFMUI2MzA5OTIzMDBDMkUyNjEiLz4g PC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBh Y2tldCBlbmQ9InIiPz67or10AAAAQUlEQVR42mJkYGAQhmJ+IOYDYi4GMgHj//// UQUYGVmhhoMMFoHSrGQZhlURIyMnksH8UMvIMwyHBXxoFvABBBgAE6YKOfAVlOwA AAAASUVORK5CYII= ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline Content-Type: image/png Content-Location: http://asset1.torrentino.com/assets/com/download-torrent-818b72e2ce35712232e511fc25a92ffb.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAANwAAACfCAYAAACSlrdDAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv YmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu aWlkOkY4QzAwNUVCNjY5QzExRTFCQjgzRTg0MDBGNkU0Q0Q2IiB4bXBNTTpEb2N1 bWVudElEPSJ4bXAuZGlkOkY4QzAwNUVDNjY5QzExRTFCQjgzRTg0MDBGNkU0Q0Q2 Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 RjhDMDA1RTk2NjlDMTFFMUJCODNFODQwMEY2RTRDRDYiIHN0UmVmOmRvY3VtZW50 SUQ9InhtcC5kaWQ6RjhDMDA1RUE2NjlDMTFFMUJCODNFODQwMEY2RTRDRDYiLz4g PC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBh Y2tldCBlbmQ9InIiPz4X+1EjAABEmElEQVR42ux9X6x1x3XXmn97n2vnuzaO7TYJ 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 U7a+UmzMbZrEon74mRtuHbcuuBXEGZF5OH4fbdwMLJBuaM4wbpj4TmOOdqCCwQsG scgYiYE4MvMQm/XA6K2LhnQGmTgQN2CuVY3unKG4YExUBGoBCobmK/CpKbYkkCW3 i57RmUa0OVMocQ7UWnMxK0ttltTugwlrjtNySGLNKHMYMLISN1QyWD9vuUmyrT35 IQZtgiq6Rn/V5L9pW9KA2hYP+Ic84uVkKPkUnd59/fXXf9U988wzL+QS/1me/uh7 uaie0cQf/0n5+t/7+5I/9ie70d2hw9uE+Pv/V/7EP/oHEv7Lf7IILoXNwyfDl8GW f4NHu56HbHpMzPxJcvL0T8rHXvin8n2/gyd/56yFwDfe3vbn5t/uM9f+lsPPZfv5 5X52z9hzfvNT7vP89h1u633u9XH4+/LvS17rfvu9MV40Ovhej3q/H3DQK1Ciu1/c JeRJM0MP2h8+v22z/O7id/teL322HcdeuyN9qF5uIwc/L/Whl78/fLf9/LDIT/0T eeMP/6b88Rc/C1Iv3Hd8LKb4vAfDPevWZ3fMjoaZ9Mhf+DtXI9YdI1J3HONvRazu 4Hc9eO6gzZLx9vrU+zCeXhUiugazXSvU9G2mbff2/337wm5Xfe62wvNwLm/FxHq/ 9XcLwbtQAHv0qEeEuF4xcHfNybrFzwPlcgiPvvB3zT9PMEFzne6Q11oxj9Rs0wo7 NTz6sasRuOHmPWSp7iapC+XQAk67n/tCbyP53O4zv8/Yewy4fK/uKyBdvu8CF3pZ w12ajh7O42IaeiGT9961xKnqu8OA7r10TVHvM33d/+NaGu4Yrakc1WBylYY7XBx3 oKWuHuRl4XzVpHXxU68Y24Vp+ehH7aAAo7R2OEF1aHkpXWznwnh4+cg7nNvw1R6B uy1p6gXzuAXhLxji4rNtP062T1o/baeg/XQLnjtgtB2/tQ4p4ZaM4zYNLt4pC8Zz S3wtGHNP4upCJrvD9XP7BObe7mJ9MMxK2Ymro3i5jil5ybSTfVNxoTePfH4fc3Lb Z6OiCzq6ljm5XXK3b44evvsAeCqGp2RIYN77qaXJ414XVUyqVyJ0yTyN6vVAzSy4 So4qiP0PNtzU+lx8oQttt3zO7xhQZPHcgcrdDs0djFd2mvYKa/k4EblrSET3AHT5 nbRJ+wATOqrB9P4acY+59AgTLbSXWwjCCwbYWikXz9XD5zd+mCx/Xma0PearC+be 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 ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline Content-Type: image/png Content-Location: http://asset1.torrentino.com/assets/com/votey-02672d76e50d867a135e4213d4c42b25.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAIoAAABjCAYAAABEzJguAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5h ZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0 dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1l bnRJRD0ieG1wLmRpZDo4MUYyNEE3NUE1NkNFMDExOEU1OEY1OEY4ODY1MTdBQiIg eG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMEVDMDIzRjc2MzMxMUUwOEIwM0Q5 OENFQjc1QzUxOCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMEVDMDIzRTc2 MzMxMUUwOEIwM0Q5OENFQjc1QzUxOCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQ aG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6 aW5zdGFuY2VJRD0ieG1wLmlpZDo4MUYyNEE3NUE1NkNFMDExOEU1OEY1OEY4ODY1 MTdBQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MUYyNEE3NUE1NkNFMDEx OEU1OEY1OEY4ODY1MTdBQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRG 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 ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline Content-Type: image/png Content-Location: http://asset1.torrentino.com/assets/com/zona-btn-d233dbc344a28aa38bec49d83f20869c.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAN4AAACQCAYAAABnNdWrAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8x Mi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5h ZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0 dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1l bnRJRD0ieG1wLmRpZDo2RTc5NDFENzUxNzJFMDExOTBEMEZDREQyMTg2RDdFQSIg eG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0REY1ODk0ODExOTIxMUUxQUEwNkRD NUYxNTQwQjFCOCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0REY1ODk0NzEx OTIxMUUxQUEwNkRDNUYxNTQwQjFCOCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQ aG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6 aW5zdGFuY2VJRD0ieG1wLmlpZDpDQzVCM0FDQzQ1NzZFMDExQUM5MERGQkJDN0Q1 RDY1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2RTc5NDFENzUxNzJFMDEx OTBEMEZDREQyMTg2RDdFQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRG 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 ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=application-db52419efa8b3c873aff9cf62d25282d.css Content-Type: text/css; name=application-db52419efa8b3c873aff9cf62d25282d.css Content-Location: http://asset1.torrentino.com/assets/com/application-db52419efa8b3c873aff9cf62d25282d.css Content-Transfer-Encoding: 8bit /*! * Bootstrap v2.0.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; } .clearfix:after { clear: both; } article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } audio:not([controls]) { display: none; } html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { max-width: 100%; height: auto; border: 0; -ms-interpolation-mode: bicubic; } button, input, select, textarea { margin: 0; font-size: 100%; vertical-align: middle; } button, input { *overflow: visible; line-height: normal; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } input[type="search"] { -webkit-appearance: textfield; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } textarea { overflow: auto; vertical-align: top; } body { margin: 0; font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; font-size: 13px; line-height: 18px; color: #333333; background-color: #ffffff; } a { color: #3fa9f5; text-decoration: none; } a:hover { color: #0b85dc; text-decoration: underline; } .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; margin-left: 20px; } .span1 { width: 60px; } .span2 { width: 140px; } .span3 { width: 220px; } .span4 { width: 300px; } .span5 { width: 380px; } .span6 { width: 460px; } .span7 { width: 540px; } .span8 { width: 620px; } .span9 { width: 700px; } .span10 { width: 780px; } .span11 { width: 860px; } .span12, .container { width: 940px; } .offset1 { margin-left: 100px; } .offset2 { margin-left: 180px; } .offset3 { margin-left: 260px; } .offset4 { margin-left: 340px; } .offset5 { margin-left: 420px; } .offset6 { margin-left: 500px; } .offset7 { margin-left: 580px; } .offset8 { margin-left: 660px; } .offset9 { margin-left: 740px; } .offset10 { margin-left: 820px; } .offset11 { margin-left: 900px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; } .row-fluid:after { clear: both; } .row-fluid > [class*="span"] { float: left; margin-left: 2.127659574%; } .row-fluid > [class*="span"]:first-child { margin-left: 0; } .row-fluid > .span1 { width: 6.382978723%; } .row-fluid > .span2 { width: 14.89361702%; } .row-fluid > .span3 { width: 23.404255317%; } .row-fluid > .span4 { width: 31.914893614%; } .row-fluid > .span5 { width: 40.425531911%; } .row-fluid > .span6 { width: 48.93617020799999%; } .row-fluid > .span7 { width: 57.446808505%; } .row-fluid > .span8 { width: 65.95744680199999%; } .row-fluid > .span9 { width: 74.468085099%; } .row-fluid > .span10 { width: 82.97872339599999%; } .row-fluid > .span11 { width: 91.489361693%; } .row-fluid > .span12 { width: 99.99999998999999%; } .container { width: 940px; margin-left: auto; margin-right: auto; *zoom: 1; } .container:before, .container:after { display: table; content: ""; } .container:after { clear: both; } .container-fluid { padding-left: 20px; padding-right: 20px; *zoom: 1; } .container-fluid:before, .container-fluid:after { display: table; content: ""; } .container-fluid:after { clear: both; } p { margin: 0 0 9px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px; } p small { font-size: 11px; color: #999999; } .lead { margin-bottom: 18px; font-size: 20px; font-weight: 200; line-height: 27px; } h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: bold; color: #333333; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; color: #999999; } h1 { font-size: 30px; line-height: 36px; } h1 small { font-size: 18px; } h2 { font-size: 24px; line-height: 36px; } h2 small { font-size: 18px; } h3 { line-height: 27px; font-size: 18px; } h3 small { font-size: 14px; } h4, h5, h6 { line-height: 18px; } h4 { font-size: 14px; } h4 small { font-size: 12px; } h5 { font-size: 12px; } h6 { font-size: 11px; color: #999999; text-transform: uppercase; } .page-header { padding-bottom: 17px; margin: 18px 0; border-bottom: 1px solid #eeeeee; } .page-header h1 { line-height: 1; } ul, ol { padding: 0; margin: 0 0 9px 25px; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } ul { list-style: disc; } ol { list-style: decimal; } li { line-height: 18px; } ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } dl { margin-bottom: 18px; } dt, dd { line-height: 18px; } dt { font-weight: bold; } dd { margin-left: 9px; } hr { margin: 18px 0; border: 0; border-top: 1px solid #eeeeee; border-bottom: 1px solid #ffffff; } strong { font-weight: bold; } em { font-style: italic; } .muted { color: #999999; } abbr { font-size: 90%; text-transform: uppercase; border-bottom: 1px dotted #ddd; cursor: help; } blockquote { padding: 0 0 0 15px; margin: 0 0 18px; border-left: 5px solid #eeeeee; } blockquote p { margin-bottom: 0; font-size: 16px; font-weight: 300; line-height: 22.5px; } blockquote small { display: block; line-height: 18px; color: #999999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { float: right; padding-left: 0; padding-right: 15px; border-left: 0; border-right: 5px solid #eeeeee; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 18px; line-height: 18px; font-style: normal; } small { font-size: 100%; } cite { font-style: normal; } code, pre { padding: 0 3px 2px; font-family: Menlo, Monaco, "Courier New", monospace; font-size: 12px; color: #333333; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } code { padding: 3px 4px; color: #d14; background-color: #f7f7f9; border: 1px solid #e1e1e8; } pre { display: block; padding: 8.5px; margin: 0 0 9px; font-size: 12px; line-height: 18px; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; white-space: pre; white-space: pre-wrap; word-break: break-all; word-wrap: break-word; } pre.prettyprint { margin-bottom: 18px; } pre code { padding: 0; color: inherit; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } .label { padding: 2px 4px 3px; font-size: 11.049999999999999px; font-weight: bold; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #999999; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .label:hover { color: #ffffff; text-decoration: none; } .label-important { background-color: #b94a48; } .label-important:hover { background-color: #953b39; } .label-warning { background-color: #f89406; } .label-warning:hover { background-color: #c67605; } .label-success { background-color: #468847; } .label-success:hover { background-color: #356635; } .label-info { background-color: #3a87ad; } .label-info:hover { background-color: #2d6987; } table { max-width: 100%; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 18px; } .table th, .table td { padding: 8px; line-height: 18px; text-align: left; vertical-align: top; border-top: 1px solid #ddd; } .table th { font-weight: bold; } .table thead th { vertical-align: bottom; } .table thead:first-child tr th, .table thead:first-child tr td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #ddd; } .table-condensed th, .table-condensed td { padding: 4px 5px; } .table-bordered { border: 1px solid #ddd; border-collapse: separate; *border-collapse: collapsed; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .table-bordered th + th, .table-bordered td + td, .table-bordered th + td, .table-bordered td + th { border-left: 1px solid #ddd; } .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { border-top: 0; } .table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child { -webkit-border-radius: 4px 0 0 0; -moz-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; } .table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child { -webkit-border-radius: 0 4px 0 0; -moz-border-radius: 0 4px 0 0; border-radius: 0 4px 0 0; } .table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child { -webkit-border-radius: 0 0 0 4px; -moz-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px; } .table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child { -webkit-border-radius: 0 0 4px 0; -moz-border-radius: 0 0 4px 0; border-radius: 0 0 4px 0; } .table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { background-color: #f9f9f9; } .table tbody tr:hover td, .table tbody tr:hover th { background-color: #f5f5f5; } table .span1 { float: none; width: 44px; margin-left: 0; } table .span2 { float: none; width: 124px; margin-left: 0; } table .span3 { float: none; width: 204px; margin-left: 0; } table .span4 { float: none; width: 284px; margin-left: 0; } table .span5 { float: none; width: 364px; margin-left: 0; } table .span6 { float: none; width: 444px; margin-left: 0; } table .span7 { float: none; width: 524px; margin-left: 0; } table .span8 { float: none; width: 604px; margin-left: 0; } table .span9 { float: none; width: 684px; margin-left: 0; } table .span10 { float: none; width: 764px; margin-left: 0; } table .span11 { float: none; width: 844px; margin-left: 0; } table .span12 { float: none; width: 924px; margin-left: 0; } form { margin: 0 0 18px; } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 27px; font-size: 19.5px; line-height: 36px; color: #333333; border: 0; border-bottom: 1px solid #eee; } legend small { font-size: 13.5px; color: #999999; } label, input, button, select, textarea { font-size: 13px; font-weight: normal; line-height: 18px; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } label { display: block; margin-bottom: 5px; color: #333333; } input, textarea, select, .uneditable-input { display: inline-block; width: 210px; height: 18px; padding: 4px; margin-bottom: 9px; font-size: 13px; line-height: 18px; color: #555555; border: 1px solid #ccc; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .uneditable-textarea { width: auto; height: auto; } label input, label textarea, label select { display: block; } input[type="image"], input[type="checkbox"], input[type="radio"] { width: auto; height: auto; padding: 0; margin: 3px 0; *margin-top: 0; /* IE7 */ line-height: normal; cursor: pointer; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; border: 0 \9; /* IE9 and down */ } input[type="image"] { border: 0; } input[type="file"] { width: auto; padding: initial; line-height: initial; border: initial; background-color: #ffffff; background-color: initial; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } input[type="button"], input[type="reset"], input[type="submit"] { width: auto; height: auto; } select, input[type="file"] { height: 28px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ *margin-top: 4px; /* For IE7, add top margin to align select with labels */ line-height: 28px; } input[type="file"] { line-height: 18px \9; } select { width: 220px; background-color: #ffffff; } select[multiple], select[size] { height: auto; } input[type="image"] { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } textarea { height: auto; } input[type="hidden"] { display: none; } .radio, .checkbox { padding-left: 18px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -18px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } .radio.inline, .checkbox.inline { display: inline-block; padding-top: 5px; margin-bottom: 0; vertical-align: middle; } .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } input, textarea { -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -ms-transition: border linear 0.2s, box-shadow linear 0.2s; -o-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; } input:focus, textarea:focus { border-color: rgba(82, 168, 236, 0.8); -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); outline: 0; outline: thin dotted \9; /* IE6-9 */ } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus, select:focus { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .input-mini { width: 60px; } .input-small { width: 90px; } .input-medium { width: 150px; } .input-large { width: 210px; } .input-xlarge { width: 270px; } .input-xxlarge { width: 530px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { float: none; margin-left: 0; } input.span1, textarea.span1, .uneditable-input.span1 { width: 50px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 130px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 210px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 290px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 370px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 450px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 530px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 610px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 690px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 770px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 850px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 930px; } input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { background-color: #f5f5f5; border-color: #ddd; cursor: not-allowed; } .control-group.warning > label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #c09853; } .control-group.warning input, .control-group.warning select, .control-group.warning textarea { color: #c09853; border-color: #c09853; } .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #a47e3c; -webkit-box-shadow: 0 0 6px #dbc59e; -moz-box-shadow: 0 0 6px #dbc59e; box-shadow: 0 0 6px #dbc59e; } .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #c09853; background-color: #fcf8e3; border-color: #c09853; } .control-group.error > label, .control-group.error .help-block, .control-group.error .help-inline { color: #b94a48; } .control-group.error input, .control-group.error select, .control-group.error textarea { color: #b94a48; border-color: #b94a48; } .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #953b39; -webkit-box-shadow: 0 0 6px #d59392; -moz-box-shadow: 0 0 6px #d59392; box-shadow: 0 0 6px #d59392; } .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #b94a48; background-color: #f2dede; border-color: #b94a48; } .control-group.success > label, .control-group.success .help-block, .control-group.success .help-inline { color: #468847; } .control-group.success input, .control-group.success select, .control-group.success textarea { color: #468847; border-color: #468847; } .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #356635; -webkit-box-shadow: 0 0 6px #7aba7b; -moz-box-shadow: 0 0 6px #7aba7b; box-shadow: 0 0 6px #7aba7b; } .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #468847; background-color: #dff0d8; border-color: #468847; } input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid { color: #b94a48; border-color: #ee5f5b; } input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } .form-actions { padding: 17px 20px 18px; margin-top: 18px; margin-bottom: 18px; background-color: #f5f5f5; border-top: 1px solid #ddd; } .uneditable-input { display: block; background-color: #ffffff; border-color: #eee; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); cursor: not-allowed; } :-moz-placeholder { color: #999999; } ::-webkit-input-placeholder { color: #999999; } .help-block { display: block; margin-top: 5px; margin-bottom: 0; color: #999999; } .help-inline { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; margin-bottom: 9px; vertical-align: middle; padding-left: 5px; } .input-prepend, .input-append { margin-bottom: 5px; *zoom: 1; } .input-prepend:before, .input-append:before, .input-prepend:after, .input-append:after { display: table; content: ""; } .input-prepend:after, .input-append:after { clear: both; } .input-prepend input, .input-append input, .input-prepend .uneditable-input, .input-append .uneditable-input { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend input:focus, .input-append input:focus, .input-prepend .uneditable-input:focus, .input-append .uneditable-input:focus { position: relative; z-index: 2; } .input-prepend .uneditable-input, .input-append .uneditable-input { border-left-color: #ccc; } .input-prepend .add-on, .input-append .add-on { float: left; display: block; width: auto; min-width: 16px; height: 18px; margin-right: -1px; padding: 4px 5px; font-weight: normal; line-height: 18px; color: #999999; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #f5f5f5; border: 1px solid #ccc; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend .active, .input-append .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on { *margin-top: 1px; /* IE6-7 */ } .input-append input, .input-append .uneditable-input { float: left; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append .uneditable-input { border-left-color: #eee; border-right-color: #ccc; } .input-append .add-on { margin-right: 0; margin-left: -1px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append input:first-child { *margin-left: -160px; } .input-append input:first-child + .add-on { *margin-left: -21px; } .search-query { padding-left: 14px; padding-right: 14px; margin-bottom: 0; -webkit-border-radius: 14px; -moz-border-radius: 14px; border-radius: 14px; } .form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input { display: inline-block; margin-bottom: 0; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search label, .form-inline label, .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { display: inline-block; } .form-search .input-append .add-on, .form-inline .input-prepend .add-on, .form-search .input-append .add-on, .form-inline .input-prepend .add-on { vertical-align: middle; } .form-search .radio, .form-inline .radio, .form-search .checkbox, .form-inline .checkbox { margin-bottom: 0; vertical-align: middle; } .control-group { margin-bottom: 9px; } legend + .control-group { margin-top: 18px; -webkit-margin-top-collapse: separate; } .form-horizontal .control-group { margin-bottom: 18px; *zoom: 1; } .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; content: ""; } .form-horizontal .control-group:after { clear: both; } .form-horizontal .control-label { float: left; width: 140px; padding-top: 5px; text-align: right; } .form-horizontal .controls { margin-left: 160px; } .form-horizontal .form-actions { padding-left: 160px; } .btn { display: inline-block; padding: 4px 10px 4px; margin-bottom: 0; font-size: 13px; line-height: 18px; color: #333333; text-align: center; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(top, #ffffff, #e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); border: 1px solid #ccc; border-bottom-color: #bbb; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); cursor: pointer; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); *margin-left: .3em; } .btn:hover, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { background-color: #e6e6e6; } .btn:active, .btn.active { background-color: #cccccc \9; } .btn:first-child { *margin-left: 0; } .btn:hover { color: #333333; text-decoration: none; background-color: #e6e6e6; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -ms-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn.active, .btn:active { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); background-color: #e6e6e6; background-color: #d9d9d9 \9; outline: 0; } .btn.disabled, .btn[disabled] { cursor: default; background-image: none; background-color: #e6e6e6; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 9px 14px; font-size: 15px; line-height: normal; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .btn-large [class^="icon-"] { margin-top: 1px; } .btn-small { padding: 5px 9px; font-size: 11px; line-height: 16px; } .btn-small [class^="icon-"] { margin-top: -1px; } .btn-mini { padding: 2px 6px; font-size: 11px; line-height: 14px; } .btn-primary, .btn-primary:hover, .btn-warning, .btn-warning:hover, .btn-danger, .btn-danger:hover, .btn-success, .btn-success:hover, .btn-info, .btn-info:hover, .btn-inverse, .btn-inverse:hover { text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); color: #ffffff; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-dark.active { color: rgba(255, 255, 255, 0.75); } .btn-primary { background-color: #3f91f5; background-image: -moz-linear-gradient(top, #3fa9f5, #3f6cf5); background-image: -ms-linear-gradient(top, #3fa9f5, #3f6cf5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3fa9f5), to(#3f6cf5)); background-image: -webkit-linear-gradient(top, #3fa9f5, #3f6cf5); background-image: -o-linear-gradient(top, #3fa9f5, #3f6cf5); background-image: linear-gradient(top, #3fa9f5, #3f6cf5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3fa9f5', endColorstr='#3f6cf5', GradientType=0); border-color: #3f6cf5 #3f6cf5 #0b3fdc; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-primary:hover, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { background-color: #3f6cf5; } .btn-primary:active, .btn-primary.active { background-color: #0f47f2 \9; } .btn-warning { background-color: #faa732; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -ms-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(top, #fbb450, #f89406); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); border-color: #f89406 #f89406 #ad6704; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-warning:hover, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { background-color: #f89406; } .btn-warning:active, .btn-warning.active { background-color: #c67605 \9; } .btn-danger { background-color: #da4f49; background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); background-image: linear-gradient(top, #ee5f5b, #bd362f); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); border-color: #bd362f #bd362f #802420; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-danger:hover, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { background-color: #bd362f; } .btn-danger:active, .btn-danger.active { background-color: #942a25 \9; } .btn-success { background-color: #5bb75b; background-image: -moz-linear-gradient(top, #62c462, #51a351); background-image: -ms-linear-gradient(top, #62c462, #51a351); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); background-image: -webkit-linear-gradient(top, #62c462, #51a351); background-image: -o-linear-gradient(top, #62c462, #51a351); background-image: linear-gradient(top, #62c462, #51a351); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); border-color: #51a351 #51a351 #387038; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-success:hover, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { background-color: #51a351; } .btn-success:active, .btn-success.active { background-color: #408140 \9; } .btn-info { background-color: #49afcd; background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); background-image: linear-gradient(top, #5bc0de, #2f96b4); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); border-color: #2f96b4 #2f96b4 #1f6377; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-info:hover, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { background-color: #2f96b4; } .btn-info:active, .btn-info.active { background-color: #24748c \9; } .btn-inverse { background-color: #393939; background-image: -moz-linear-gradient(top, #454545, #262626); background-image: -ms-linear-gradient(top, #454545, #262626); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#454545), to(#262626)); background-image: -webkit-linear-gradient(top, #454545, #262626); background-image: -o-linear-gradient(top, #454545, #262626); background-image: linear-gradient(top, #454545, #262626); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#454545', endColorstr='#262626', GradientType=0); border-color: #262626 #262626 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-inverse:hover, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { background-color: #262626; } .btn-inverse:active, .btn-inverse.active { background-color: #0c0c0c \9; } button.btn, input[type="submit"].btn { *padding-top: 2px; *padding-bottom: 2px; } button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } button.btn.large, input[type="submit"].btn.large { *padding-top: 7px; *padding-bottom: 7px; } button.btn.small, input[type="submit"].btn.small { *padding-top: 3px; *padding-bottom: 3px; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; line-height: 14px; vertical-align: text-top; background-image: url("../img/glyphicons-halflings.png"); background-position: 14px 14px; background-repeat: no-repeat; *margin-right: .3em; } [class^="icon-"]:last-child, [class*=" icon-"]:last-child { *margin-left: 0; } .icon-white { background-image: url("../img/glyphicons-halflings-white.png"); } .icon-glass { background-position: 0 0; } .icon-music { background-position: -24px 0; } .icon-search { background-position: -48px 0; } .icon-envelope { background-position: -72px 0; } .icon-heart { background-position: -96px 0; } .icon-star { background-position: -120px 0; } .icon-star-empty { background-position: -144px 0; } .icon-user { background-position: -168px 0; } .icon-film { background-position: -192px 0; } .icon-th-large { background-position: -216px 0; } .icon-th { background-position: -240px 0; } .icon-th-list { background-position: -264px 0; } .icon-ok { background-position: -288px 0; } .icon-remove { background-position: -312px 0; } .icon-zoom-in { background-position: -336px 0; } .icon-zoom-out { background-position: -360px 0; } .icon-off { background-position: -384px 0; } .icon-signal { background-position: -408px 0; } .icon-cog { background-position: -432px 0; } .icon-trash { background-position: -456px 0; } .icon-home { background-position: 0 -24px; } .icon-file { background-position: -24px -24px; } .icon-time { background-position: -48px -24px; } .icon-road { background-position: -72px -24px; } .icon-download-alt { background-position: -96px -24px; } .icon-download { background-position: -120px -24px; } .icon-upload { background-position: -144px -24px; } .icon-inbox { background-position: -168px -24px; } .icon-play-circle { background-position: -192px -24px; } .icon-repeat { background-position: -216px -24px; } .icon-refresh { background-position: -240px -24px; } .icon-list-alt { background-position: -264px -24px; } .icon-lock { background-position: -287px -24px; } .icon-flag { background-position: -312px -24px; } .icon-headphones { background-position: -336px -24px; } .icon-volume-off { background-position: -360px -24px; } .icon-volume-down { background-position: -384px -24px; } .icon-volume-up { background-position: -408px -24px; } .icon-qrcode { background-position: -432px -24px; } .icon-barcode { background-position: -456px -24px; } .icon-tag { background-position: 0 -48px; } .icon-tags { background-position: -25px -48px; } .icon-book { background-position: -48px -48px; } .icon-bookmark { background-position: -72px -48px; } .icon-print { background-position: -96px -48px; } .icon-camera { background-position: -120px -48px; } .icon-font { background-position: -144px -48px; } .icon-bold { background-position: -167px -48px; } .icon-italic { background-position: -192px -48px; } .icon-text-height { background-position: -216px -48px; } .icon-text-width { background-position: -240px -48px; } .icon-align-left { background-position: -264px -48px; } .icon-align-center { background-position: -288px -48px; } .icon-align-right { background-position: -312px -48px; } .icon-align-justify { background-position: -336px -48px; } .icon-list { background-position: -360px -48px; } .icon-indent-left { background-position: -384px -48px; } .icon-indent-right { background-position: -408px -48px; } .icon-facetime-video { background-position: -432px -48px; } .icon-picture { background-position: -456px -48px; } .icon-pencil { background-position: 0 -72px; } .icon-map-marker { background-position: -24px -72px; } .icon-adjust { background-position: -48px -72px; } .icon-tint { background-position: -72px -72px; } .icon-edit { background-position: -96px -72px; } .icon-share { background-position: -120px -72px; } .icon-check { background-position: -144px -72px; } .icon-move { background-position: -168px -72px; } .icon-step-backward { background-position: -192px -72px; } .icon-fast-backward { background-position: -216px -72px; } .icon-backward { background-position: -240px -72px; } .icon-play { background-position: -264px -72px; } .icon-pause { background-position: -288px -72px; } .icon-stop { background-position: -312px -72px; } .icon-forward { background-position: -336px -72px; } .icon-fast-forward { background-position: -360px -72px; } .icon-step-forward { background-position: -384px -72px; } .icon-eject { background-position: -408px -72px; } .icon-chevron-left { background-position: -432px -72px; } .icon-chevron-right { background-position: -456px -72px; } .icon-plus-sign { background-position: 0 -96px; } .icon-minus-sign { background-position: -24px -96px; } .icon-remove-sign { background-position: -48px -96px; } .icon-ok-sign { background-position: -72px -96px; } .icon-question-sign { background-position: -96px -96px; } .icon-info-sign { background-position: -120px -96px; } .icon-screenshot { background-position: -144px -96px; } .icon-remove-circle { background-position: -168px -96px; } .icon-ok-circle { background-position: -192px -96px; } .icon-ban-circle { background-position: -216px -96px; } .icon-arrow-left { background-position: -240px -96px; } .icon-arrow-right { background-position: -264px -96px; } .icon-arrow-up { background-position: -289px -96px; } .icon-arrow-down { background-position: -312px -96px; } .icon-share-alt { background-position: -336px -96px; } .icon-resize-full { background-position: -360px -96px; } .icon-resize-small { background-position: -384px -96px; } .icon-plus { background-position: -408px -96px; } .icon-minus { background-position: -433px -96px; } .icon-asterisk { background-position: -456px -96px; } .icon-exclamation-sign { background-position: 0 -120px; } .icon-gift { background-position: -24px -120px; } .icon-leaf { background-position: -48px -120px; } .icon-fire { background-position: -72px -120px; } .icon-eye-open { background-position: -96px -120px; } .icon-eye-close { background-position: -120px -120px; } .icon-warning-sign { background-position: -144px -120px; } .icon-plane { background-position: -168px -120px; } .icon-calendar { background-position: -192px -120px; } .icon-random { background-position: -216px -120px; } .icon-comment { background-position: -240px -120px; } .icon-magnet { background-position: -264px -120px; } .icon-chevron-up { background-position: -288px -120px; } .icon-chevron-down { background-position: -313px -119px; } .icon-retweet { background-position: -336px -120px; } .icon-shopping-cart { background-position: -360px -120px; } .icon-folder-close { background-position: -384px -120px; } .icon-folder-open { background-position: -408px -120px; } .icon-resize-vertical { background-position: -432px -119px; } .icon-resize-horizontal { background-position: -456px -118px; } .btn-group { position: relative; *zoom: 1; *margin-left: .3em; } .btn-group:before, .btn-group:after { display: table; content: ""; } .btn-group:after { clear: both; } .btn-group:first-child { *margin-left: 0; } .btn-group + .btn-group { margin-left: 5px; } .btn-toolbar { margin-top: 9px; margin-bottom: 9px; } .btn-toolbar .btn-group { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; } .btn-group .btn { position: relative; float: left; margin-left: -1px; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group .btn:first-child { margin-left: 0; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .btn-group .btn:last-child, .btn-group .dropdown-toggle { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .btn-group .btn.large:first-child { margin-left: 0; -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } .btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; border-bottom-right-radius: 6px; } .btn-group .btn:hover, .btn-group .btn:focus, .btn-group .btn:active, .btn-group .btn.active { z-index: 2; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group .dropdown-toggle { padding-left: 8px; padding-right: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); *padding-top: 5px; *padding-bottom: 5px; } .btn-group.open { *z-index: 1000; } .btn-group.open .dropdown-menu { display: block; margin-top: 1px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .btn-group.open .dropdown-toggle { background-image: none; -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn .caret { margin-top: 7px; margin-left: 0; } .btn:hover .caret, .open.btn-group .caret { opacity: 1; filter: alpha(opacity=100); } .btn-primary .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { border-top-color: #ffffff; opacity: 0.75; filter: alpha(opacity=75); } .btn-small .caret { margin-top: 4px; } .nav { margin-left: 0; margin-bottom: 18px; list-style: none; } .nav > li > a { display: block; } .nav > li > a:hover { text-decoration: none; background-color: #eeeeee; } .nav .nav-header { display: block; padding: 3px 15px; font-size: 11px; font-weight: bold; line-height: 18px; color: #999999; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); text-transform: uppercase; } .nav li + .nav-header { margin-top: 9px; } .nav-list { padding-left: 14px; padding-right: 14px; margin-bottom: 0; } .nav-list > li > a, .nav-list .nav-header { margin-left: -15px; margin-right: -15px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } .nav-list > li > a { padding: 3px 15px; } .nav-list .active > a, .nav-list .active > a:hover { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); background-color: #3fa9f5; } .nav-list [class^="icon-"] { margin-right: 2px; } .nav-tabs, .nav-pills { *zoom: 1; } .nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { display: table; content: ""; } .nav-tabs:after, .nav-pills:after { clear: both; } .nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; padding-left: 12px; margin-right: 2px; line-height: 14px; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { margin-bottom: -1px; } .nav-tabs > li > a { padding-top: 9px; padding-bottom: 9px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover { border-color: #eeeeee #eeeeee #dddddd; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover { color: #555555; background-color: #ffffff; border: 1px solid #ddd; border-bottom-color: transparent; cursor: default; } .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .nav-pills .active > a, .nav-pills .active > a:hover { color: #ffffff; background-color: #3fa9f5; } .nav-stacked > li { float: none; } .nav-stacked > li > a { margin-right: 0; } .nav-tabs.nav-stacked { border-bottom: 0; } .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .nav-tabs.nav-stacked > li > a:hover { border-color: #ddd; z-index: 2; } .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } .nav-tabs .dropdown-menu, .nav-pills .dropdown-menu { margin-top: 1px; border-width: 1px; } .nav-pills .dropdown-menu { -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret { border-top-color: #3fa9f5; margin-top: 6px; } .nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret { border-top-color: #0b85dc; } .nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret { border-top-color: #333333; } .nav > .dropdown.active > a:hover { color: #000000; cursor: pointer; } .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover { color: #ffffff; background-color: #999999; border-color: #999999; } .nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret { border-top-color: #ffffff; opacity: 1; filter: alpha(opacity=100); } .tabs-stacked .open > a:hover { border-color: #999999; } .tabbable { *zoom: 1; } .tabbable:before, .tabbable:after { display: table; content: ""; } .tabbable:after { clear: both; } .tab-content { overflow: hidden; } .tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs { border-bottom: 0; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below .nav-tabs { border-top: 1px solid #ddd; } .tabs-below .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } .tabs-below .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .tabs-below .nav-tabs > li > a:hover { border-bottom-color: transparent; border-top-color: #ddd; } .tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover { border-color: transparent #ddd #ddd #ddd; } .tabs-left .nav-tabs > li, .tabs-right .nav-tabs > li { float: none; } .tabs-left .nav-tabs > li > a, .tabs-right .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } .tabs-left .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } .tabs-left .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .tabs-left .nav-tabs > li > a:hover { border-color: #eeeeee #dddddd #eeeeee #eeeeee; } .tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover { border-color: #ddd transparent #ddd #ddd; *border-right-color: #ffffff; } .tabs-right .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } .tabs-right .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .tabs-right .nav-tabs > li > a:hover { border-color: #eeeeee #eeeeee #eeeeee #dddddd; } .tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover { border-color: #ddd #ddd #ddd transparent; *border-left-color: #ffffff; } .navbar { overflow: visible; margin-bottom: 18px; } .navbar-inner { padding-left: 20px; padding-right: 20px; background-color: #2c2c2c; background-image: -moz-linear-gradient(top, #333333, #222222); background-image: -ms-linear-gradient(top, #333333, #222222); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); background-image: -webkit-linear-gradient(top, #333333, #222222); background-image: -o-linear-gradient(top, #333333, #222222); background-image: linear-gradient(top, #333333, #222222); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); } .btn-navbar { display: none; float: right; padding: 7px 10px; margin-left: 5px; margin-right: 5px; background-color: #2c2c2c; background-image: -moz-linear-gradient(top, #333333, #222222); background-image: -ms-linear-gradient(top, #333333, #222222); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); background-image: -webkit-linear-gradient(top, #333333, #222222); background-image: -o-linear-gradient(top, #333333, #222222); background-image: linear-gradient(top, #333333, #222222); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); border-color: #222222 #222222 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); } .btn-navbar:hover, .btn-navbar:active, .btn-navbar.active, .btn-navbar.disabled, .btn-navbar[disabled] { background-color: #222222; } .btn-navbar:active, .btn-navbar.active { background-color: #080808 \9; } .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); } .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } .nav-collapse.collapse { height: auto; } .navbar .brand:hover { text-decoration: none; } .navbar .brand { float: left; display: block; padding: 8px 20px 12px; margin-left: -20px; font-size: 20px; font-weight: 200; line-height: 1; color: #ffffff; } .navbar .navbar-text { margin-bottom: 0; line-height: 40px; color: #999999; } .navbar .navbar-text a:hover { color: #ffffff; background-color: transparent; } .navbar .btn, .navbar .btn-group { margin-top: 5px; } .navbar .btn-group .btn { margin-top: 0; } .navbar-form { margin-bottom: 0; *zoom: 1; } .navbar-form:before, .navbar-form:after { display: table; content: ""; } .navbar-form:after { clear: both; } .navbar-form input, .navbar-form select { display: inline-block; margin-top: 5px; margin-bottom: 0; } .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 6px; white-space: nowrap; } .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } .navbar-search { position: relative; float: left; margin-top: 6px; margin-bottom: 0; } .navbar-search .search-query { padding: 4px 9px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; color: #ffffff; color: rgba(255, 255, 255, 0.75); background: #666; background: rgba(255, 255, 255, 0.3); border: 1px solid #111; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); -webkit-transition: none; -moz-transition: none; -ms-transition: none; -o-transition: none; transition: none; } .navbar-search .search-query :-moz-placeholder { color: #eeeeee; } .navbar-search .search-query::-webkit-input-placeholder { color: #eeeeee; } .navbar-search .search-query:hover { color: #ffffff; background-color: #999999; background-color: rgba(255, 255, 255, 0.5); } .navbar-search .search-query:focus, .navbar-search .search-query.focused { padding: 5px 10px; color: #333333; text-shadow: 0 1px 0 #ffffff; background-color: #ffffff; border: 0; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); outline: 0; } .navbar-fixed-top { position: fixed; top: 0; right: 0; left: 0; z-index: 1030; } .navbar-fixed-top .navbar-inner { padding-left: 0; padding-right: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar .nav { position: relative; left: 0; display: block; float: left; margin: 0 10px 0 0; } .navbar .nav.pull-right { float: right; } .navbar .nav > li { display: block; float: left; } .navbar .nav > li > a { float: none; padding: 10px 10px 11px; line-height: 19px; color: #999999; text-decoration: none; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .navbar .nav > li > a:hover { background-color: transparent; color: #ffffff; text-decoration: none; } .navbar .nav .active > a, .navbar .nav .active > a:hover { color: #ffffff; text-decoration: none; background-color: #222222; } .navbar .divider-vertical { height: 40px; width: 1px; margin: 0 9px; overflow: hidden; background-color: #222222; border-right: 1px solid #333333; } .navbar .nav.pull-right { margin-left: 10px; margin-right: 0; } .navbar .dropdown-menu { margin-top: 1px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .navbar .dropdown-menu:before { content: ''; display: inline-block; border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-bottom-color: rgba(0, 0, 0, 0.2); position: absolute; top: -7px; left: 9px; } .navbar .dropdown-menu:after { content: ''; display: inline-block; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; position: absolute; top: -6px; left: 10px; } .navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret { border-top-color: #ffffff; } .navbar .nav .active .caret { opacity: 1; filter: alpha(opacity=100); } .navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle { background-color: transparent; } .navbar .nav .active > .dropdown-toggle:hover { color: #ffffff; } .navbar .nav.pull-right .dropdown-menu { left: auto; right: 0; } .navbar .nav.pull-right .dropdown-menu:before { left: auto; right: 12px; } .navbar .nav.pull-right .dropdown-menu:after { left: auto; right: 13px; } .breadcrumb { padding: 7px 14px; margin: 0 0 18px; background-color: #fbfbfb; background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); background-image: linear-gradient(top, #ffffff, #f5f5f5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); border: 1px solid #ddd; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: inset 0 1px 0 #ffffff; -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; } .breadcrumb li { display: inline-block; text-shadow: 0 1px 0 #ffffff; } .breadcrumb .divider { padding: 0 5px; color: #999999; } .breadcrumb .active a { color: #333333; } .pagination { height: 36px; margin: 18px 0; } .pagination ul { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; margin-left: 0; margin-bottom: 0; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .pagination li { display: inline; } .pagination a { float: left; padding: 0 14px; line-height: 34px; text-decoration: none; border: 1px solid #ddd; border-left-width: 0; } .pagination a:hover, .pagination .active a { background-color: #f5f5f5; } .pagination .active a { color: #999999; cursor: default; } .pagination .disabled a, .pagination .disabled a:hover { color: #999999; background-color: transparent; cursor: default; } .pagination li:first-child a { border-left-width: 1px; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .pagination li:last-child a { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .pager { margin-left: 0; margin-bottom: 18px; list-style: none; text-align: center; *zoom: 1; } .pager:before, .pager:after { display: table; content: ""; } .pager:after { clear: both; } .pager li { display: inline; } .pager a { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .pager a:hover { text-decoration: none; background-color: #f5f5f5; } .pager .next a { float: right; } .pager .previous a { float: left; } .thumbnails { margin-left: -20px; list-style: none; *zoom: 1; } .thumbnails:before, .thumbnails:after { display: table; content: ""; } .thumbnails:after { clear: both; } .thumbnails > li { float: left; margin: 0 0 18px 20px; } .thumbnail { display: block; padding: 4px; line-height: 1; border: 1px solid #ddd; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); } a.thumbnail:hover { border-color: #3fa9f5; -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); } .thumbnail > img { display: block; max-width: 100%; margin-left: auto; margin-right: auto; } .thumbnail .caption { padding: 9px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 18px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .alert, .alert-heading { color: #c09853; } .alert .close { position: relative; top: -2px; right: -21px; line-height: 18px; } .alert-success { background-color: #dff0d8; border-color: #d6e9c6; } .alert-success, .alert-success .alert-heading { color: #468847; } .alert-danger, .alert-error { background-color: #f2dede; border-color: #eed3d7; } .alert-danger, .alert-error, .alert-danger .alert-heading, .alert-error .alert-heading { color: #b94a48; } .alert-info { background-color: #d9edf7; border-color: #bce8f1; } .alert-info, .alert-info .alert-heading { color: #3a87ad; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } @-webkit-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } .progress { overflow: hidden; height: 18px; margin-bottom: 18px; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: linear-gradient(top, #f5f5f5, #f9f9f9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .progress .bar { width: 0%; height: 18px; color: #ffffff; font-size: 12px; text-align: center; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e90d2; background-image: -moz-linear-gradient(top, #149bdf, #0480be); background-image: -ms-linear-gradient(top, #149bdf, #0480be); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); background-image: -webkit-linear-gradient(top, #149bdf, #0480be); background-image: -o-linear-gradient(top, #149bdf, #0480be); background-image: linear-gradient(top, #149bdf, #0480be); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width 0.6s ease; -moz-transition: width 0.6s ease; -ms-transition: width 0.6s ease; -o-transition: width 0.6s ease; transition: width 0.6s ease; } .progress-striped .bar { background-color: #62c462; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; -moz-background-size: 40px 40px; -o-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-danger .bar { background-color: #dd514c; background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); background-image: linear-gradient(top, #ee5f5b, #c43c35); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); } .progress-danger.progress-striped .bar { background-color: #ee5f5b; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-success .bar { background-color: #5eb95e; background-image: -moz-linear-gradient(top, #62c462, #57a957); background-image: -ms-linear-gradient(top, #62c462, #57a957); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); background-image: -webkit-linear-gradient(top, #62c462, #57a957); background-image: -o-linear-gradient(top, #62c462, #57a957); background-image: linear-gradient(top, #62c462, #57a957); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); } .progress-success.progress-striped .bar { background-color: #62c462; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-info .bar { background-color: #4bb1cf; background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); background-image: -o-linear-gradient(top, #5bc0de, #339bb9); background-image: linear-gradient(top, #5bc0de, #339bb9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); } .progress-info.progress-striped .bar { background-color: #5bc0de; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .hero-unit { padding: 60px; margin-bottom: 30px; background-color: #f5f5f5; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; letter-spacing: -1px; } .hero-unit p { font-size: 18px; font-weight: 200; line-height: 27px; } .tooltip { position: absolute; z-index: 1020; display: block; visibility: visible; padding: 5px; font-size: 11px; opacity: 0; filter: alpha(opacity=0); } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { margin-top: -2px; } .tooltip.right { margin-left: 2px; } .tooltip.bottom { margin-top: 2px; } .tooltip.left { margin-left: -2px; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #000000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 5px solid #000000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 5px solid #000000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-right: 5px solid #000000; } .tooltip-inner { max-width: 200px; padding: 3px 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; padding: 5px; } .popover.top { margin-top: -5px; } .popover.right { margin-left: 5px; } .popover.bottom { margin-top: 5px; } .popover.left { margin-left: -5px; } .popover.top .arrow { bottom: 0; left: 50%; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #000000; } .popover.right .arrow { top: 50%; left: 0; margin-top: -5px; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-right: 5px solid #000000; } .popover.bottom .arrow { top: 0; left: 50%; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 5px solid #000000; } .popover.left .arrow { top: 50%; right: 0; margin-top: -5px; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 5px solid #000000; } .popover .arrow { position: absolute; width: 0; height: 0; } .popover-inner { padding: 3px; width: 280px; overflow: hidden; background: #000000; background: rgba(0, 0, 0, 0.8); -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); } .popover-title { padding: 9px 15px; line-height: 1; background-color: #f5f5f5; border-bottom: 1px solid #eee; -webkit-border-radius: 3px 3px 0 0; -moz-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0; } .popover-content { padding: 14px; background-color: #ffffff; -webkit-border-radius: 0 0 3px 3px; -moz-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px; -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; } .popover-content p, .popover-content ul, .popover-content ol { margin-bottom: 0; } .modal-open .dropdown-menu { z-index: 2050; } .modal-open .dropdown.open { *z-index: 2050; } .modal-open .popover { z-index: 2060; } .modal-open .tooltip { z-index: 2070; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } .modal { position: fixed; top: 50%; left: 50%; z-index: 1050; max-height: 500px; overflow: auto; width: 560px; margin: -250px 0 0 -280px; background-color: #ffffff; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, 0.3); *border: 1px solid #999; /* IE6-7 */ -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; } .modal.fade { -webkit-transition: opacity .3s linear, top .3s ease-out; -moz-transition: opacity .3s linear, top .3s ease-out; -ms-transition: opacity .3s linear, top .3s ease-out; -o-transition: opacity .3s linear, top .3s ease-out; transition: opacity .3s linear, top .3s ease-out; top: -25%; } .modal.fade.in { top: 50%; } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { margin-top: 2px; } .modal-body { padding: 15px; } .modal-body .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; -webkit-box-shadow: inset 0 1px 0 #ffffff; -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; *zoom: 1; } .modal-footer:before, .modal-footer:after { display: table; content: ""; } .modal-footer:after { clear: both; } .modal-footer .btn { float: right; margin-left: 5px; margin-bottom: 0; } .dropdown { position: relative; } .dropdown-toggle { *margin-bottom: -3px; } .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } .caret { display: inline-block; width: 0; height: 0; text-indent: -99999px; *text-indent: 0; vertical-align: top; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 4px solid #000000; opacity: 0.3; filter: alpha(opacity=30); content: "\2193"; } .dropdown .caret { margin-top: 8px; margin-left: 2px; } .dropdown:hover .caret, .open.dropdown .caret { opacity: 1; filter: alpha(opacity=100); } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; float: left; display: none; min-width: 160px; _width: 160px; padding: 4px 0; margin: 0; list-style: none; background-color: #ffffff; border-color: #ccc; border-color: rgba(0, 0, 0, 0.2); border-style: solid; border-width: 1px; -webkit-border-radius: 0 0 5px 5px; -moz-border-radius: 0 0 5px 5px; border-radius: 0 0 5px 5px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; *border-right-width: 2px; *border-bottom-width: 2px; } .dropdown-menu.bottom-up { top: auto; bottom: 100%; margin-bottom: 2px; } .dropdown-menu .divider { height: 1px; margin: 5px 1px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; *width: 100%; *margin: -5px 0 5px; } .dropdown-menu a { display: block; padding: 3px 15px; clear: both; font-weight: normal; line-height: 18px; color: #555555; white-space: nowrap; } .dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover { color: #ffffff; text-decoration: none; background-color: #3fa9f5; } .dropdown.open { *z-index: 1000; } .dropdown.open .dropdown-toggle { color: #ffffff; background: #ccc; background: rgba(0, 0, 0, 0.3); } .dropdown.open .dropdown-menu { display: block; } .typeahead { margin-top: 2px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion { margin-bottom: 18px; } .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion-heading { border-bottom: 0; } .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } .carousel { position: relative; margin-bottom: 18px; line-height: 1; } .carousel-inner { overflow: hidden; width: 100%; position: relative; } .carousel .item { display: none; position: relative; -webkit-transition: 0.6s ease-in-out left; -moz-transition: 0.6s ease-in-out left; -ms-transition: 0.6s ease-in-out left; -o-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel .item > img { display: block; line-height: 1; } .carousel .active, .carousel .next, .carousel .prev { display: block; } .carousel .active { left: 0; } .carousel .next, .carousel .prev { position: absolute; top: 0; width: 100%; } .carousel .next { left: 100%; } .carousel .prev { left: -100%; } .carousel .next.left, .carousel .prev.right { left: 0; } .carousel .active.left { left: -100%; } .carousel .active.right { left: 100%; } .carousel-control { position: absolute; top: 40%; left: 15px; width: 40px; height: 40px; margin-top: -20px; font-size: 60px; font-weight: 100; line-height: 30px; color: #ffffff; text-align: center; background: #222222; border: 3px solid #ffffff; -webkit-border-radius: 23px; -moz-border-radius: 23px; border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.right { left: auto; right: 15px; } .carousel-control:hover { color: #ffffff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 10px 15px 5px; background: #333333; background: rgba(0, 0, 0, 0.75); } .carousel-caption h4, .carousel-caption p { color: #ffffff; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #eee; border: 1px solid rgba(0, 0, 0, 0.05); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .close { float: right; font-size: 20px; font-weight: bold; line-height: 18px; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover { color: #000000; text-decoration: none; opacity: 0.4; filter: alpha(opacity=40); cursor: pointer; } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .fade { -webkit-transition: opacity 0.15s linear; -moz-transition: opacity 0.15s linear; -ms-transition: opacity 0.15s linear; -o-transition: opacity 0.15s linear; transition: opacity 0.15s linear; opacity: 0; } .fade.in { opacity: 1; } .collapse { -webkit-transition: height 0.35s ease; -moz-transition: height 0.35s ease; -ms-transition: height 0.35s ease; -o-transition: height 0.35s ease; transition: height 0.35s ease; position: relative; overflow: hidden; height: 0; } .collapse.in { height: auto; } /*! * Bootstrap Responsive v2.0.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .hidden { display: none; visibility: hidden; } @media (max-width: 480px) { .nav-collapse { -webkit-transform: translate3d(0, 0, 0); } .page-header h1 small { display: block; line-height: 18px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { display: block; width: 100%; min-height: 28px; /* Make inputs at least the height of their button counterpart */ /* Makes inputs behave like true block-level elements */ -webkit-box-sizing: border-box; /* Older Webkit */ -moz-box-sizing: border-box; /* Older FF */ -ms-box-sizing: border-box; /* IE8 */ box-sizing: border-box; /* CSS3 spec*/ } .input-prepend input[class*="span"], .input-append input[class*="span"] { width: auto; } input[type="checkbox"], input[type="radio"] { border: 1px solid #ccc; } .form-horizontal .control-group > label { float: none; width: auto; padding-top: 0; text-align: left; } .form-horizontal .controls { margin-left: 0; } .form-horizontal .control-list { padding-top: 0; } .form-horizontal .form-actions { padding-left: 10px; padding-right: 10px; } .modal { position: absolute; top: 10px; left: 10px; right: 10px; width: auto; margin: 0; } .modal.fade.in { top: auto; } .modal-header .close { padding: 10px; margin: -10px; } .carousel-caption { position: static; } } @media (max-width: 767px) { .container { width: auto; padding: 0 20px; } .row-fluid { width: 100%; } .row { margin-left: 0; } .row > [class*="span"], .row-fluid > [class*="span"] { float: none; display: block; width: auto; margin: 0; } } @media (min-width: 768px) and (max-width: 979px) { .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; margin-left: 20px; } .span1 { width: 42px; } .span2 { width: 104px; } .span3 { width: 166px; } .span4 { width: 228px; } .span5 { width: 290px; } .span6 { width: 352px; } .span7 { width: 414px; } .span8 { width: 476px; } .span9 { width: 538px; } .span10 { width: 600px; } .span11 { width: 662px; } .span12, .container { width: 724px; } .offset1 { margin-left: 82px; } .offset2 { margin-left: 144px; } .offset3 { margin-left: 206px; } .offset4 { margin-left: 268px; } .offset5 { margin-left: 330px; } .offset6 { margin-left: 392px; } .offset7 { margin-left: 454px; } .offset8 { margin-left: 516px; } .offset9 { margin-left: 578px; } .offset10 { margin-left: 640px; } .offset11 { margin-left: 702px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; } .row-fluid:after { clear: both; } .row-fluid > [class*="span"] { float: left; margin-left: 2.762430939%; } .row-fluid > [class*="span"]:first-child { margin-left: 0; } .row-fluid > .span1 { width: 5.801104972%; } .row-fluid > .span2 { width: 14.364640883%; } .row-fluid > .span3 { width: 22.928176794%; } .row-fluid > .span4 { width: 31.491712705%; } .row-fluid > .span5 { width: 40.055248616%; } .row-fluid > .span6 { width: 48.618784527%; } .row-fluid > .span7 { width: 57.182320438000005%; } .row-fluid > .span8 { width: 65.74585634900001%; } .row-fluid > .span9 { width: 74.30939226%; } .row-fluid > .span10 { width: 82.87292817100001%; } .row-fluid > .span11 { width: 91.436464082%; } .row-fluid > .span12 { width: 99.999999993%; } input.span1, textarea.span1, .uneditable-input.span1 { width: 32px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 94px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 156px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 218px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 280px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 342px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 404px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 466px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 528px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 590px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 652px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 714px; } } @media (max-width: 979px) { body { padding-top: 0; } .navbar-fixed-top { position: static; margin-bottom: 18px; } .navbar-fixed-top .navbar-inner { padding: 5px; } .navbar .container { width: auto; padding: 0; } .navbar .brand { padding-left: 10px; padding-right: 10px; margin: 0 0 0 -5px; } .navbar .nav-collapse { clear: left; } .navbar .nav { float: none; margin: 0 0 9px; } .navbar .nav > li { float: none; } .navbar .nav > li > a { margin-bottom: 2px; } .navbar .nav > .divider-vertical { display: none; } .navbar .nav .nav-header { color: #999999; text-shadow: none; } .navbar .nav > li > a, .navbar .dropdown-menu a { padding: 6px 15px; font-weight: bold; color: #999999; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .navbar .dropdown-menu li + li a { margin-bottom: 2px; } .navbar .nav > li > a:hover, .navbar .dropdown-menu a:hover { background-color: #222222; } .navbar .dropdown-menu { position: static; top: auto; left: auto; float: none; display: block; max-width: none; margin: 0 15px; padding: 0; background-color: transparent; border: none; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .navbar .dropdown-menu:before, .navbar .dropdown-menu:after { display: none; } .navbar .dropdown-menu .divider { display: none; } .navbar-form, .navbar-search { float: none; padding: 9px 15px; margin: 9px 0; border-top: 1px solid #222222; border-bottom: 1px solid #222222; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); } .navbar .nav.pull-right { float: none; margin-left: 0; } .navbar-static .navbar-inner { padding-left: 10px; padding-right: 10px; } .btn-navbar { display: block; } .nav-collapse { overflow: hidden; height: 0; } } @media (min-width: 980px) { .nav-collapse.collapse { height: auto !important; } } @media (min-width: 1200px) { .row { margin-left: -30px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; margin-left: 30px; } .span1 { width: 70px; } .span2 { width: 170px; } .span3 { width: 270px; } .span4 { width: 370px; } .span5 { width: 470px; } .span6 { width: 570px; } .span7 { width: 670px; } .span8 { width: 770px; } .span9 { width: 870px; } .span10 { width: 970px; } .span11 { width: 1070px; } .span12, .container { width: 1170px; } .offset1 { margin-left: 130px; } .offset2 { margin-left: 230px; } .offset3 { margin-left: 330px; } .offset4 { margin-left: 430px; } .offset5 { margin-left: 530px; } .offset6 { margin-left: 630px; } .offset7 { margin-left: 730px; } .offset8 { margin-left: 830px; } .offset9 { margin-left: 930px; } .offset10 { margin-left: 1030px; } .offset11 { margin-left: 1130px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; } .row-fluid:after { clear: both; } .row-fluid > [class*="span"] { float: left; margin-left: 2.564102564%; } .row-fluid > [class*="span"]:first-child { margin-left: 0; } .row-fluid > .span1 { width: 5.982905983%; } .row-fluid > .span2 { width: 14.529914530000001%; } .row-fluid > .span3 { width: 23.076923077%; } .row-fluid > .span4 { width: 31.623931624%; } .row-fluid > .span5 { width: 40.170940171000005%; } .row-fluid > .span6 { width: 48.717948718%; } .row-fluid > .span7 { width: 57.264957265%; } .row-fluid > .span8 { width: 65.81196581200001%; } .row-fluid > .span9 { width: 74.358974359%; } .row-fluid > .span10 { width: 82.905982906%; } .row-fluid > .span11 { width: 91.45299145300001%; } .row-fluid > .span12 { width: 100%; } input.span1, textarea.span1, .uneditable-input.span1 { width: 60px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 160px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 260px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 360px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 460px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 560px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 660px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 760px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 860px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 960px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 1060px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 1160px; } .thumbnails { margin-left: -30px; } .thumbnails > li { margin-left: 30px; } } body{ background: #3fa9f5; padding-top: 71px; } img{ max-width: none; } .dotted{ cursor: pointer; border-bottom: 1px dotted; text-decoration: none !important; } .dashed{ cursor: pointer; border-bottom: 1px dashed; text-decoration: none !important; } .clearer{ width: 100%; overflow: hidden; clear: both; } .green { color: #4E8F33; } .red { color: #D54859; } .btn{ text-decoration: none !important; } .heading{ font-size: 16px; line-height: 1.5em; margin-bottom: 0.75em; } .heading .authority{ color: #40a3ea; vertical-align: super; font-size:12px; line-height: 1em; } #layout{ position: relative; } #sidebar { padding-left: 10px; } /* real heading */ #heading{ position: absolute; bottom: 0; left: 0; background: #000; color: #fff; text-align: left; width: 100%; line-height: 1.385em; } #heading h1, #heading h2, #heading h3{ font-size: 120%; font-weight: bold; line-height: 1.2em; margin-bottom: 0.5em; color: #fff; } #heading .heading-holder{ padding: 18px; } #heading .ft1, #heading .ft2, #heading .ft3 { float: left; } #heading .ftw { font-size: 0.833em; line-height: 1.3em; margin-top: 0.75em; } #heading .w100{ width: 100%; } #heading .w50{ width: 50%; } #heading .w33{ width: 33%; } .header{ margin-bottom: 17px; } .top-header{ top: 0; margin-bottom: 32px; height: 71px; /*background-color: rgba(0,0,0,0.6);*/ /*position: relative;*/ /*padding-bottom: 60px;*/ position: fixed; /*overflow: hidden;*/ /*width: 1170px;*/ z-index: 999; background: #194361; } .ie .top-header{ background: url(http://asset1.torrentino.com/assets/com/top-header-58f032872e15dd07044aaee17d130053.png) repeat; } .navigation{ border-top: 1px solid rgba(255,255,255,0.1); position: relative; margin-top: -1px; } .navigation h2{ font-size: 1em; font-weight: normal; } .navigation .nav{ width: 100%; background: rgba(0,0,0,0.8); } .ie .navigation .nav{ background: url(http://asset1.torrentino.com/assets/com/top-navigation-37879f96147c106ad2576fe60488a848.png) repeat; } .navigation .nav li{ float: left; border-right: 1px solid rgba(255,255,255,0.1); border-left: 1px solid rgba(0,0,0,0.2); } .navigation .nav li.first{ border-left: 0; } .navigation .nav li.last{ border-right: 0; } .navigation .nav .social-buttons, .navigation .nav .messages, .navigation .nav .add-torrent{ float: right; } .navigation .nav li h2 a, .navigation .nav li span a{ color: #fff; display: block; height: 36px; line-height: 36px; padding: 0 20px; font-size: 1.231em; text-shadow: 0 -1px 0 #000; } .navigation .nav li .social-buttons-holder{ padding-top: 3px; } .navigation .nav li .social-buttons-holder a{ line-height: 1; font-size: 1; height: 16px; } .navigation .messages a .msg-count { background-color: #F61E26; border: 0 none; color: #FFFFFF; display: inline; font-size: 11px; margin-left: 11px; padding: 1px 5px 0; text-shadow: 0 -1px 0 #A5161B; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; position: relative; top: -1px; font-weight: bold; background-image: -moz-linear-gradient(top, #fe1d25, #c2272d); background-image: -ms-linear-gradient(top, #fe1d25, #c2272d); background-image: -o-linear-gradient(top, #fe1d25, #c2272d); background-image: -webkit-gradient(linear, center top, center bottom, from(#fe1d25), to(#c2272d)); background-image: -webkit-linear-gradient(top, #fe1d25, #c2272d); background-image: linear-gradient(top, #fe1d25, #c2272d); } .navigation .nav li.messages span a:hover .msg-count { text-decoration: none !important; border: none; } .user-panel{ position: absolute; top: 0; right: 0; height: 100%; color: #ccc; } .user-panel .auth-links{ margin-top: 32px; padding: 0 22px; } .user-panel a{ color: #fff; text-decoration: underline; } .user-panel .authorized{ line-height: 1.6em; margin-top: 21px; padding-right: 18px; } .user-panel a.first{ margin-right: 2em; } .brand{ top: 25px; left: 28px; position: absolute; } .brand a{ display: block; width: 222px; height: 32px; text-indent: 100%; overflow: hidden; background: url(http://asset1.torrentino.com/assets/com/logo-630e4d43230a6976173f639831d54d61.png); } /* поисковая строка */ .search{ position: absolute; left: 306px; top: 28px; } .search form{ margin: 0; } .search .search-text{ width: 606px; border: 1px solid rgba(0,0,0,0.5); -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; border-radius: 3px 0px 0px 3px; background: #fff; box-shadow: 0; -moz-box-shadow: 0; -webkit-box-shadow: 0; position: relative; margin-bottom: 0; z-index: 1; } .search .search-submit{ background: url(http://asset1.torrentino.com/assets/com/search-submit-42b3eea401997e476116eb7753427fa8.png); border: 0; box-shadow: 0; -moz-box-shadow: 0; -webkit-box-shadow: 0; color: #fff; width: 62px; height: 32px; position: absolute; left: 615px; top: -2px; text-shadow: 0 -1px 0 #000; z-index: 0; } /* всевдотег в строке поиска */ .pseudotag{ display: block; background: #d5d5d5; color: #4c4c4c; border-radius: 3px; height: 24px; padding: 0 24px 0 6px; margin: 2px; position: absolute; z-index: 2; line-height: 24px; overflow: hidden; } .pseudotag .tagname{ float: left; width: 52px; text-align: center; } .pseudotag.deleting{ background: #c9c9c9; color: #444; } .pseudotag .close-tag{ width: 13px; height: 13px; background: url(http://asset1.torrentino.com/assets/com/close-tag-cce05350be2a7594f82d6ed281f1f71d.gif) 0 0 no-repeat; position: absolute; top:6px; right: 6px; cursor: pointer; } .pseudotag .close-tag:hover{ background: url(http://asset1.torrentino.com/assets/com/close-tag-cce05350be2a7594f82d6ed281f1f71d.gif) 100% 0 no-repeat; } .search .search-text.withtag{ padding-left: 84px; width: 526px; } .content{ background: #fff; padding: 18px 0; } .content a{ text-decoration: underline; } .breadcrumbs{ font-size: 16px; margin-bottom: 14px; line-height: 1.4em; } .breadcrumbs a{ color: #fff; text-decoration: none; border-bottom: 1px solid #777; } .breadcrumbs a .original-name{ color: #888; margin-left: 0.5em; } .outmargin{ position: relative; margin-left: -18px; margin-bottom: 18px; background: #141414 url(http://asset1.torrentino.com/assets/com/plate-f2f9fb7599595c92f5d79f960e16d1f3.jpg) 0 0 no-repeat; color: #fff; padding: 1.1em 36px; } .outmargin:after{ display: block; content: "."; text-indent: 100%; overflow: hidden; position: absolute; bottom: -4px; left: 0; width: 18px; height: 4px; background: url(http://asset1.torrentino.com/assets/com/outmargin-corner-edf9356fd55928c503170160e61c3d7d.png); } .outmargin .heading{ font-size: 20px; margin-bottom: 0; } .outmargin .heading a{ color: #fff; } .outmargin .pagination a { border: none; box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .outmargin .pagination a:hover, .outmargin .pagination .active a{ background: #3FA9F5; color: #fff; } .plate .heading{ margin-bottom: 18px; } .plate{ padding: 36px; } .plate .name{ font-size: 23px; line-height: 27px; margin-bottom: 7px; } .plate .name h1{ font-size: 23px; line-height: 27px; margin-bottom: 7px; font-weight: normal; display: inline-block; color: #fff; } .tags { color: #aaa; text-align: left; font-size: 11px; margin-bottom: 24px; } .torrent-file-info .download-torrent{ width: 220px; height: 53px; font-size: 20px; line-height: 53px; font-weight: bold; text-shadow: 0 -1px 0 #000; text-align: center; text-decoration: none; display: block; background: url(http://asset1.torrentino.com/assets/com/download-torrent-818b72e2ce35712232e511fc25a92ffb.png) 0 0; color: #fff; float: left; margin-right: 0.5em; } .torrent-file-info .torrent-file-info-info{ margin-top: 0.5em; } .watch-online-info .watch-online{ width: 220px; height: 53px; font-size: 20px; line-height: 53px; font-weight: bold; text-shadow: 0 -1px 0 #000; text-align: center; text-decoration: none; display: block; background: url(http://asset1.torrentino.com/assets/com/watch-online-cdcb13756807fead45cce6b62d1b4fa7.png) 0 0; color: #fff; margin-bottom: 5px; margin-top: 5px; float: left; margin-right: 0.5em; } .watch-online-info.start-download .watch-online{ float: none; margin: 0px 0 10px 27px; position: relative; } .torrent-file-info{ float: right; } .torrent-file-info .download-torrent:hover{ background-position: 0 -53px; } .torrent-file-info .download-torrent:active{ background-position: 0 -106px; } .torrent-file-info .size{ font-size: 18px; margin: 0 10px; } .torrent-file-info .peers{ color: #8a8a8a; font-size: 10px; } .torrent-file-info .peers .value{ color: #fff; font-size: 12px; } /* оценки торрента и качества */ .ratings{ margin-bottom: 18px; width: 100%; clear: both; overflow: hidden; } .voterating{ width: 130px; float: left; margin-right: 60px; } .voterating .vote-button-holder{ float: left; width: 134px; height: 23px; margin-bottom: 9px; } .voterating a{ text-decoration: none; } .voterating .vote{ display: block; height: 33px; background-image: url(http://asset1.torrentino.com/assets/com/votey-02672d76e50d867a135e4213d4c42b25.png); background-repeat: no-repeat; overflow: hidden; cursor: pointer; position: relative; zoom: 1; float: left; } .entity-link { font-size: 10px; left: 380px; color: #888; margin-top: -3px; } .entity-link a{ font-size: 12px; margin-right: 0.5em; } .sparkbar{ width: 132px; height: 4px; } .sparkbar div{ float: left; background: url(http://asset1.torrentino.com/assets/com/voted-76f8f013edf30175c4fc85c9578e0b90.png) 0 0 no-repeat; height: 4px; } .sparkbar .sparkbar-likes{ border-right: 1px solid #141414; position: relative; margin-left: -1px; zoom: 1; } .sparkbar .sparkbar-dislikes{ background-position: 100% -4px; } .voterating .voted{ font-size: 10px; color: #aaa; white-space: nowrap; } span#vote-good{ background-position: 0 0; margin: -5px 0 0 -4px; width: 107px; } span#vote-good.active, span#vote-good:hover{ background-position: 0 -33px;; } span#vote-good:active{ background-position: 0 -66px;; } span#vote-good span{ display: block; line-height: 33px; color: #000; padding-left: 33px; } span#vote-bad{ width: 31px; background-position: -107px 0; text-indent: -99999px; overflow: hidden; margin-top: -5px; } span#vote-bad.active, span#vote-bad:hover{ background-position: -107px -33px;; } span#vote-bad:active{ background-position: -107px -66px;; } .ratings .stars{ margin-bottom: 8px; } .ratings .quality{ float: left; right: 0px; width: 155px; line-height: 1.1em; white-space: nowrap; margin-right: 20px; } .ratings .quality .stars-holder, .ratings .quality .total-vote, .ratings .quality div{ display: block; height: 12px; } .ratings .quality .stars-holder{ width: 65px; background: url(http://asset1.torrentino.com/assets/com/stars-23ce34835f7524ef9471aeec77a1de1b.png) 0 -12px repeat-x; position: relative; z-index: 0; float: left; margin-right: 0.5em; } .ratings .quality .total-vote{ background: url(http://asset1.torrentino.com/assets/com/stars-23ce34835f7524ef9471aeec77a1de1b.png) 0 0px repeat-x; } .ratings .quality .count{ font-size: 10px; color: #aaa; white-space: nowrap; } .ratings .quality .count span{ font-size: 11px; color: #fff; } .description{ margin-bottom: 27px; } .description .poster{ float: right; padding: 0 9px 18px 18px; } .screenshots{ margin-bottom: 27px; } .screenshots li{ float: left; } .torrent-content{ margin-bottom: 27px; } /* comments */ #torrent-comment-form{ padding: 18px; } .add-comment{ } .comment_row.row{ margin-left: 0; margin-bottom: 9px; } .comments ul{ padding-top: 14px; } .comment{ padding: 0 0 0 25px; margin-bottom: 14px; } .comment.replied{ margin-left: 36px; } .comment .left{ float: left; } .comment .right{ float: right; } .comment .comment-info{ font-size: 11px; margin-bottom: 9px; } .comment .author{ padding-left: 37px; margin-right: 0.75em; float: left; display: block; } .comment .author a{ color: #7f7f7f; } .comment .author .avatar{ position: absolute; margin: -5px 0 0 -37px; } .comment .author .avatar img{ width: 24px; height: 24px; } .comment .author .name{ font-weight: bold; } .comment .author-info{ font-size: 9px; float: left; line-height: 10px; margin-left: -5px; margin-right: 10px; } .comment .quality-rating{ float: left; margin-right: 1em; } .comment .author-info .points{ color: #40a3ea; } .comment .author-info .status{ color: #a5a5a5; } .comment .date{ font-size: 10px; margin-right: 0.75em; } .comment:hover .hide-comment{ display: block; } .comment .hide-comment{ display: none; float: left; padding-left:7px; height: 19px; line-height: 19px; position: relative; cursor: pointer; } .comment .hide-comment a{ background: url(http://asset1.torrentino.com/assets/com/hide-comment-638e591dc23760c4386e026baaffc137.png); float: left; padding-left:7px; height: 19px; line-height: 19px; position: relative; cursor: pointer; } .comment .hide-comment-cn{ background: url(http://asset1.torrentino.com/assets/com/hide-comment-638e591dc23760c4386e026baaffc137.png) 100% 0; display: block; position: absolute; width: 7px; top: 0; bottom: 0; right: -7px; } .comment .hide-comment a:hover{background-position: 0 -19px;} .comment .hide-comment a:active{background-position: 0 -38px;} .comment .hide-comment:hover .hide-comment-cn{background-position: 100% -19px;} .comment .hide-comment:active .hide-comment-cn{background-position: 100% -38px;} .comment .vote{ float: right; margin-left: 7px; } .comment .vote span{ display: block; background: url(http://asset1.torrentino.com/assets/com/vote-comment-a741d900418756bd4f70eb3c4cc3bada.png) no-repeat; width: 19px; height: 18px; float: left; cursor: pointer; } .comment .rating .score{ margin-left: 1.5em; float: left; } .comment .rating .bad{ color: #ff1d25; } .comment .rating .good{ color: #39b54a; } .comment .vote span.vote-good{background-position: 0 0;} .comment .vote span.vote-good:hover{background-position: 0 -18px;} .comment .vote span.vote-good.voted, .comment .vote span.vote-good:active{background-position: 0 -36px;} .comment .vote span.vote-bad{background-position: -19px 0;} .comment .vote span.vote-bad:hover{background-position: -19px -18px;} .comment .vote span.vote-bad.voted, .comment .vote span.vote-bad:active{background-position: -19px -36px;} .comment .reply{ font-size: 10px; } .comment-text{ margin-bottom: 3px; } .comment .downloaded{ padding: 7px; border: 1px solid #ccc; position: relative; margin-left: -7px; zoom: 1; border-radius: 7px; } .comment .downloaded:after{ content: "."; position: absolute; width: 7px; height: 11px; display: block; background: url(http://asset1.torrentino.com/assets/com/balloon-arrow-718a6df3c2c3074cfe297ca8346be3e7.png); top: -11px; left: 40px; text-indent: 100%; overflow: hidden; } #comments ul { list-style: none; } /* main page */ /* movies posters */ .movies{ padding: 0 18px; } .movies .item{ width: 25%; float: left; min-width: 166px; } .movies .item.last{ margin-right: 0; } .movies .item .dvdbox{ width: 166px; height: 227px; position: relative; margin-left: -8px; zoom: 1; background: url(http://asset1.torrentino.com/assets/com/dvdbox-aed958c94c608db4075ba7158cf0205d.gif) no-repeat; margin-bottom: 0.5em; } .movies .item .dvdbox .image{ width: 146px; height: 216px; overflow: hidden; position: absolute; left: 8px; top: 4px; } .movies .item .dvdbox .image a{ text-decoration: none; } .movies .item .dvdbox .image a img{ border: none; height: 216px; } .movies .item .dvdbox .image:after{ content: "."; text-indent: -99px; overflow: hidden; display: block; width: 6px; position: absolute; left: 0; top: 0; bottom: 0; background: url(http://asset1.torrentino.com/assets/com/dvdbox-reflex-71e30b12d47a4419cfe9bc2ac5993cad.png) no-repeat; } .movies .tags{ font-size: 0.769em; color: #7b7c7e; padding: 0; background: none; } .movies-list .item { height: 310px; overflow: hidden; } /* search results*/ .results { padding-top: 30px; padding-left: 18px; } .results .outmargin{ margin-left: -36px; } .results .sort{ margin-bottom: 1em; } .results .torrent-holder{ position: relative; } .results .sort .value .current { text-decoration: none; color: white; background: #32adcf; } .results .sort a{ text-decoration: underline; padding: 0.25em 0.5em; } .results ol.items { margin-left: -18px; padding-bottom: 40px; position: relative; zoom: 1; } .results .items li.item { padding: 14px 0; position: relative; } .results .items li.item.hovered{ background: #f3f3f3; } .results .items .h4 { font-size: 14px; color: #2b2b2b; margin: 0 230px 0 82px; font-weight: normal; } .results .items .tags { margin: 0 230px 0 82px; font-size: 11px; text-align: left; } .results .items .h4 a{ text-decoration: underline; } .results .items a { color: #2b2b2b; text-decoration: none; } .results .items .title { width: 100%; float: left; } .results .items .image { float: left; margin-left: -100%; padding: 1px; left: 20px; position: relative; background: #c8c8c8; } .results .items .image img { width: 50px; height: 50px; } .results .items li.hovered .table-head{ display: block; } .results .items .table-head{ display: none; width: 225px; position: absolute; height: 22px; top: 34px; right: 0; font-size: 9px; } .results .items .table-head div{ position: absolute; top: -16px; color: #666; } .results .items .table-head .th-size{ right: 167px } .results .items .table-head .th-peers{ right: 112px } .results .items .table-head .th-peers span{ color: #999; font-size: 8px; } .results .items .table-head .th-quality{ right: 36px } .results .items .table-head .th-comment{ right: 10px; top: -11px; opacity: 0.5; } .results .items .data { float: left; width: 220px; margin-left: -220px; position: relative; } .results .items p { text-align: right; line-height: 20px; padding-bottom: 2px; } .results .items p.size { font-size: 13px; color: #424242; position: absolute; top: 0; right: 167px; white-space: nowrap; } .results .items p.peers-info { font-size: 11px; color: #7d7e81; position: absolute; top: 0; right: 111px; } .results .items p.peers-info .s{ color: #32adcf; font-size: 11px; } .results .items p.peers-info .l{ color: #999; font-size: 9px; } .results .items p.comments-count{ position: absolute; top: 0; right: 10px; } .results .items p.comments-count a{ font-size: 10px; text-decoration: none; border: none; } .results .items p.rating{ position: absolute; top: 0; right: 38px; font-size: 9px; color: #666; } .results .items p.rating .big{ font-size: 13px; } .results .items p.quality{ position: absolute; top: 21px; right: 33px; font-size: 10px; } .results .items p.quality span{ height: 12px; display: block; background: url(http://asset1.torrentino.com/assets/com/stars-search-ff4046aae9bb38f91e783fa58ed9f6c0.png) 0 0 no-repeat; } .results .items p.quality .stars-holder{ width: 52px; position: relative; background-position: 0 -12px; } .results .items p.quality .stars{ position: absolute; top: 0; left: 0; } .results h1 { font-size: 30px; color: #d9d9d9; line-height: 1; padding-left: 32px; margin-bottom: -5px; text-decoration: none; overflow: hidden; } .results .trailer{ font-weight: bold; } #content .results .entity{ color: #3b3a3a; font-size: 11px; margin: 0 0 5px 0; padding-left: 18px; } #content .results .entity .entity-name{ color: #333; border-bottom: none; text-decoration: none; font-size: 12px; font-weight: bold; margin-right: 4px; } #content .results .entity a{ text-decoration: underline; color: #7d7e81; font-size: 11px; margin-left: 0.5em; } /* для списка торрентов на чёрном фоне */ .plate .results{ padding-top: 10px; margin-left: -18px; } .plate .results ol.items{ padding-bottom: 0; position: relative; margin-right: -18px; zoom: 1; list-style: none; } .plate .results .items li.hovered { background: #222; } .plate .results .items h4 { color: #fff; } .plate .results .items a { color: #eee; text-decoration: none; border-bottom: 1px solid #666; } .plate .results .items a:hover{ color: #fff; border-bottom: 1px solid #999; } .plate .results .items .tags{ color: #b8b8b8; } .plate .results .items p.size { color: #fff; } #content .plate .results .tags{ color: #157995; } #content .plate .results .tags a{ color: #157995; border: none; } #content .plate .results .tags a:hover{ color: #32ADCF; border: none; } .sections { zoom: 1; } #content .plate .results .image a, #content .plate .results .image a:hover{ border: 0; text-decoration: none; } /* облако тегов */ .tags-panel { margin-bottom: 20px; padding-left: 18px; } .tags-panel h4 { color: #1E1E1E; font-size: 20px; padding: 20px 0 0; } .tags-selected { margin-bottom: 20px; } .tags-selected span { background: none repeat scroll 0 0 #EBEBEB; color: #373737; display: inline-block; font-size: 12px; line-height: 21px; margin-right: 3px; overflow: hidden; padding: 0 6px; } .tags-selected span a { background: url(http://asset1.torrentino.com/assets/com/x-52f67358672eb28599cb4656f9b391e2.png) no-repeat scroll 0 0 transparent; display: inline-block; height: 0; overflow: hidden; padding-top: 7px; width: 6px; } .tags-cloud .level0 a { font-size: 14px; } .tags-cloud .level1 a { color: #616161; font-size: 16px; } .tags-cloud .level2 a { color: #585858; font-size: 18px; } .tags-cloud .level3 a { color: #4F4F4F; font-size: 20px; } .tags-cloud .level4 a { color: #444444; font-size: 22px; } .tags-cloud .level5 a { color: #3B3B3B; font-size: 24px; } .tags-cloud .level6 a { color: #242424; font-size: 26px; } .tags-cloud .level7 a { color: #181818; font-size: 28px; } .tags-cloud .level8 a { color: #0A0A0A; font-size: 30px; } .tags-cloud .level9 a { color: #000000; font-size: 32px; } .tags-cloud { line-height: 27px; padding: 10px; text-align: center; margin-top: 1em; } .tags-cloud a { color: #525252; margin: 0 3px; text-decoration: none; } /* footer */ #footer { background: #eee; color: #000; text-align: left; } #footer .footer-holder { padding: 18px; } #footer a{ color: #000; text-decoration: underline; } /* Список всех фильмов и серий */ .all-series{ color: #252525; font-size: 20px; margin: 1em 0; } .all-series a{ color: #000; } .all-series ul li{ width: 50%; margin-bottom: 15px; float: left; height: 60px; } .series-holder{ padding: 0 18px; } .all-series ul li .image{ margin-top: 2px; float: left; } .all-series ul li .image img{ width: 50px; height: 50px; } .all-series .name{ margin-left: 60px; } .all-series .name a{ font-size: 14px; } .all-series .tags{ background: none; padding: 0; color: #999; font-size: 11px; } /* Профиль пользователя */ .profile{ padding-left: 18px; } .tabs-holder .nav-tabs{ padding-left: 8px; } /* Авторитет */ .authority table{ width: 100%; } .authority table thead th{ text-align: left; font-weight: normal; border: none; padding: 0; font-size: 11px; } .authority table thead th div{ border-bottom: 1px solid #ccc; margin-bottom: 2em; } .authority table th div, .authority table td div{ padding: 5px; } .authority table .date{ width: 110px; } .authority table .points{ width: 80px; text-align: center; } .authority table td a{ color: #32adcf; } .authority table td { padding-bottom: 0.5em; } /* Добавление торрента */ form .help{ position: absolute; left: 643px; top: 0; font-size: 12px; line-height: 1.3em; font-family: Verdana, Arial, Helvetica, sans-serif; z-index: 3; } form .help .help-opener{ font-size: 14px; } form .help ul li a{ color: #32adcf; } form .help ul{ background-color: #fff; padding-top: 1em; } form .help ul li{ margin-bottom: 3px; } form .help ul li .dash{ position: absolute; margin-left: -15px; } #addTorrent fieldset{ position: relative; } #addTorrent .pics{ float: left; } #addTorrent .pics .pic{ border: 4px solid #c7c7c7; width: 122px; background: #fff; text-align: center; margin-bottom: 1.385em; } #addTorrent .pics .pic .caption{ font-size: 1.385em; color: #d1d1d1; } #addTorrent .pics .dotted{ color: #0c78c3; font-size: 0.846em; font-family: Arial, Helvetica; } #addTorrent .pics .addPoster{ height: 152px; position: relative; z-index: 2; } #addTorrent .pics .addPoster .addpic-holder{ margin-top: 5em; } #addTorrent .pics .addpic-holder .progress{ width: 0%; position: absolute; background-color: #e6f5d3; top: 0; left: 0; z-index: 3; } #addTorrent .pics .addPoster .addpic-holder .progress{ height: 152px; } #addTorrent .pics .addScreenshot .addpic-holder .progress{ height: 92px; } #addTorrent .pics .container{ position: relative; z-index: 5; } #addTorrent .pics .addScreenshot{ height: 92px; position: relative; z-index: 2; } #addTorrent .pics .addScreenshot .addpic-holder{ margin-top: 2.692em; } #addTorrent select optgroup{ background: #fff; font-style: italic; color: #9e9e9e; font-weight: normal; } #addTorrent select optgroup option{ background: #fff; font-style: normal; color: #484848; font-weight: normal; } #addTorrent .fakeinput{ height: 25px; color: #484848; border: 1px solid #c7c7c7; background: #fff; text-align: center; position: relative; } #addTorrent .fakeinput span.dotted{ color: #0c78c3; font-size: 0.846em; font-family: Arial, Helvetica; } #addTorrent .remove-link{ background: #C7C7C7; text-align: center; padding: 5px 0 2px 0; } #addTorrent .remove-link a{ font-size:0.846em; font-family:Arial,Helvetica; } .customInputFile { border-bottom: 1px dotted; overflow: hidden; padding: 0 2px; width: auto; display: inline; text-align: center; color: #0C78C3; font-family: Arial,Helvetica; font-size: 0.846em; cursor: pointer; } .customInputFileName { display: none; cursor: pointer; } .customInputFileHover { border: 0; } .customInputFileActive.customInputFileHover { border: none; } .customInputFileWrapper{ cursor: pointer; width: 100%; padding: 1em 0; margin-top: -2em; margin-left: 0; left: 0; } .customInputFileWrapper input{ cursor: pointer; } /* messages */ .message{ background: url(http://asset1.torrentino.com/assets/com/message-bg-38a49412b5c74887d4d6b839377dbae6.png) 0 0 repeat-x; position: relative; margin: 0 0 36px -18px; padding: 9px 18px; } .message .poster{ float: left; width: 50px; height: 50px; border: 1px solid #e3e3e3; overflow: hidden; } .message .torrent-info{ margin-left: 63px; } .message .btn{ margin-right: 1em; } a.keeper-collapse{ text-decoration: none; color: #333; } .message .like-holder{ float: left; margin-right: 20px; width: 130px; } .message .quality .panel{ float: left; margin-right: 18px; } .message .sparks-holder{ height:12px; width: 80px; background: url(http://asset1.torrentino.com/assets/com/sparks-quality-c03c1d469d23fececbd2c5cf4f4a8b23.png) 0 -13px no-repeat; position: relative; float: left; margin-top: 3px; } .message .quality label{ float: left; display: block; width: 45px; } .message .spark{ height:12px; position: absolute; top: 0; left: 0; background: none; cursor: pointer; } .message .spark:hover, .message .spark.active{ background: url(http://asset1.torrentino.com/assets/com/sparks-quality-c03c1d469d23fececbd2c5cf4f4a8b23.png) 0 0 no-repeat; } .message .spark1{width: 20%;} .message .spark2{width: 40%;} .message .spark3{width: 60%;} .message .spark4{width: 80%;} .message .spark5{width: 100%;} /* Смотритель торрента */ .torrent-feedback{ margin: 1.5em 0; } .torrent-keeper{ font-size: 16px; color: #fff; float: left; } #keeper_likes_count{ font-size: 9px; padding-top: 7px; padding-left: 2px; } .torrent-keeper .thanks{ padding: 5px 12px; background-color: #59bf46; border: 2px solid #312d2e; outline: 1px solid #373737; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; outline-radius: 5px; -moz-outline-radius: 5px; -webkit-outline-radius: 5px; -moz-box-shadow: inset 0px 1px #acd62f, inset 0px -1px #acd62f; -webkit-box-shadow: inset 0px 1px #acd62f, inset 0px -1px #acd62f; box-shadow: inset 0px 1px #acd62f, inset 0px -1px #acd62f; background-image: -moz-linear-gradient(top, #6ecd3d, #3ab54a); background-image: -ms-linear-gradient(top, #6ecd3d, #3ab54a); background-image: -o-linear-gradient(top, #6ecd3d, #3ab54a); background-image: -webkit-gradient(linear, center top, center bottom, from(#6ecd3d), to(#3ab54a)); background-image: -webkit-linear-gradient(top, #6ecd3d, #3ab54a); background-image: linear-gradient(top, #6ecd3d, #3ab54a); font-weight: bold; text-decoration: none; text-shadow: 0 -1px 0 #53a33a; color: #fff; } .torrent-keeper .thanks.disabled{ background-color: #51A351; background-image: none; opacity: 0.65; } .torrent-keeper .name{ font-weight: bold; color: #7ac943; } /* report torrent */ .report-torrent{ float: right; } .report-torrent .dotted{ color: #ff7bac; } .report-torrent .reasons{ background: #000; margin-left: -18px; padding: 18px; position: absolute; z-index: 999; } .report-torrent .reasons label{ color: #fff; white-space: nowrap; } /* Авторизация */ .open_id_services { margin: 15px 0 0; width: 450px; } .open_id_services .service { display: block; float: left; height: 20px; line-height: 20px; margin-bottom: 10px; width: 24.9%; } .open_id_services .service .icon { background: url(http://asset1.torrentino.com/assets/com/openid-bb5388a3b68f3d4572c822fa0fc98d12.png) no-repeat scroll 0 0 transparent; vertical-align: middle; width: 16px; height: 16px; } .open_id_services .yandex .icon { background-position: -7px -16px; } .open_id_services .livejournal .icon { background-position: -7px -32px; } .open_id_services .twitter .icon { background-position: -7px -48px; } .open_id_services .google .icon { background-position: -7px -64px; } .open_id_services .facebook .icon { background-position: -7px -80px; } .open_id_services .liveinternet .icon { background-position: -7px -96px; } .open_id_services .service label, .open_id_services .service a { -moz-border-radius: 4px 4px 4px 4px; color: black; padding: 4px; text-decoration: underline; display: inline; } .open_id_services .hover label, .open_id_services .hover a { background-color: #ECECEC; } .open_id_services .active label, .open_id_services .active a { background-color: #DADADA; } .facebook_login { margin: 15px 0; } #login_check { font-size: 12px; } #login_check.loading { color: gray; } #login_check.used { color: red; font-weight: bold; } #login_check.available { color: #31CB2F; font-weight: bold; } #facebox .submit{ margin-right: 1em; } /* это добавил r для списка новых эпизодов */ .heading .new_episodes { color: white; } .new-episodes ul li{ padding: 10px 0; } img.episode_thumb { width: 65px; height: 95px; overflow: hidden } .new-episodes .episode_info { margin-left: 10px; } .new-episodes .size_info { margin-top: 30px; } .new-episodes .size_info{ width: 150px; text-align: right; } .new-episodes .size_info .size{ font-size: 14px; color: #424242; } .new-episodes .size_info .peers{ font-size: 11px; color: #7D7E81; } .new-episodes .showname { color: #7C7C7E; font-size: 14px; } .new-episodes .showname a { font-size: 21px; color: #4F4F4F; } .new-episodes .torrentname{ margin-bottom: 10px; } .new-episodes .torrentname a { color: #4F4F4F; font-size: 13px; } .new-episodes .tags a { color: #AAA; font-size: 13px; text-decoration: none; font-size: 11px; } .no_left_margin{ margin-left: 0; } .movie_descr .entity{ font-size: 1.231em; margin: 0.563em 0 1em 0; } .movie_descr .row{ margin-bottom: 5px; } .movie_descr .torrent-file-info{ margin-bottom: 15px; float: none; } .movie .description{ margin: 15px 0; } .movie .online{ margin-top: 20px; } /* из старого дизайна */ .season{ padding: 0 0 0 25px; } #info .seasons table td div { padding-bottom: 1em; } #info .seasons table td div.episode_torrent { padding-bottom: 0.5em; } #info .seasons .episod_number { width: 31px; color: #666; } #info .seasons .episod_name { font-size: 1.077em; } #info .seasons a { color: #333; } #info .seasons .episod_date { font-size: 0.769em; margin-left: 1em; color: #666; } #info .season .season-episode { margin-left: 31px; } #info .season .torrents { margin-top: 0.386em; color: #666; margin-left: 31px; padding-bottom: 0; border-left: 1px solid #666; padding-left: 1em; } #info table.items { width: 100%; } #info table.items td div.desc { font-size: 0.769em; } #info table.items td.data { width: 81px; text-align: right; } #info table.items td div.peers { font-size: 0.769em; white-space: nowrap; position: static; } #info table.items td div.size { white-space: nowrap; padding-bottom: 0; } .span3.sidebar{ margin-left: 0px; } #vk_groups{ margin: 0 0 5px 5px; } .fleft{ float:left; } .torrent-file-info.start_download{ margin: 15px 0; text-align: center; } .torrent-file-info.start_download a.download-torrent{ font-size: 15px; } .start_download .magnet{ color: white; } #content .zona-btn{ float: none; margin: 10px 0 0 27px; width: 222px; text-align: left; font-size: 15px; position: relative; } #content .zona-btn a.download{ height: 48px; display: block; outline: none; text-decoration: none; background-image: url(http://asset1.torrentino.com/assets/com/zona-btn-d233dbc344a28aa38bec49d83f20869c.png); background-position: 0 0; background-repeat: no-repeat; margin-bottom: 7px; text-align: center; text-shadow: 0 1px 0 #fff; } #content .zona-btn a.download span.title{ display:block; width: 170px; color: #212737; padding-top: 7px; font-size: 16px; line-height: 1em; } #content .zona-btn a.download span.zona{ display:block; width: 170px; color: #6d6d6d; font-size: 12px; } #content .zona-btn a.download:hover{ background-position: 0 -48px; } #content .zona-btn a.download:active{ background-position: 0 -96px; } #content .zona-btn .zona-desc{ position: absolute; left: 234px; top: 0.6em; font-size: 12px; line-height: 1.3em; width: 200px; } #content .zona-btn .zona-desc a{ color: #30a6e4; } #content .part-btn{ float: none; margin: 10px 0 0 27px; width: 222px; text-align: left; font-size: 15px; position: relative; } #content .part-btn a.download{ height: 48px; display: block; outline: none; text-decoration: none; background-image: url(http://asset1.torrentino.com/assets/com/zona-btn-d233dbc344a28aa38bec49d83f20869c.png); background-position: 0 0; background-repeat: no-repeat; margin-bottom: 7px; text-align: center; text-shadow: 0 1px 0 #fff; } #content .part-btn a.download span.title{ display:block; width: 170px; color: #212737; padding-top: 15px; font-size: 16px; line-height: 1em; } #content .part-btn a.download span.zona{ display:block; width: 170px; color: #6d6d6d; font-size: 12px; } #content .part-btn a.download:hover{ background-position: 0 -48px; } #content .part-btn a.download:active{ background-position: 0 -96px; } #content .part-btn .part-desc{ position: absolute; left: 234px; top: 0.6em; font-size: 12px; line-height: 1.3em; width: 200px; } #content .part-btn .part-desc a{ color: #30a6e4; } .centering{ text-align: center; } .list_holder div{ margin-bottom: 0.5em; } #video-holder iframe{ border: none; } .bad-video-report{ padding-top: 2em; } .forum{ padding: 0 18px 18px 18px; } .forum h4{ font-weight: normal; font-size: 16px; display: inline } .forum h4 a{ color: #000; } .forum .messages{ font-size: 11px; color: #808080; } .forum .breadcrumbs, .forum .breadcrumbs a{ color: #808080; font-size: 13px; } .forum .topics a{ font-size: 11px; text-decoration: underline; margin-right: 0.5em; } .forum .last-post{ font-size: 11px; color: #666666; padding-left: 22px; } .forum .last-post .post-author{ color: #3fa9f5; } .forum .heading{ font-size: 36px; line-height: 1; margin-bottom: 0; } .topic-holder{ border-radius: 6px; background: #fff; color: #000; padding: 20px; position: relative; zoom: 1; margin: 0 -18px 1em -18px; } .topic-heading{ font-size: 23px; margin-bottom: 1em; margin-top: 0.5em; line-height: 1; } .topic-heading a{ padding-left: 45px; } .topic-heading a .cover{ position: absolute; margin-left: -45px; margin-top: -3px; width: 35px; height: 35px; overflow: hidden; display: inline-block; } .forum-post{ padding: 0 75px 20px 32px; margin-bottom: 20px; position: relative; overflow: hidden; } .forum-post.even{ background-color:#f2f2f2; padding-left: 50px; padding-right: 93px; padding-top: 5px; margin: 0 -18px 20px -18px; position: relative; zoom: 1; } .forum-post a.author{ text-decoration: none; } .forum-post a.author:hover .name{ text-decoration: underline; } .forum-post .author .avatar{ position: absolute; left: 0; top: 0; width: 24px; height: 24px; overflow: hidden; } .forum-post.even .author .avatar{ left: 18px; top: 5px; } .forum-post .author .karma{ position: absolute; left: 0; top: 27px; font-size: 8px; color: #666; text-decoration: none; line-height: 1; } .forum-post.even .author .karma{ left: 18px; } .forum-post .author .name{ font-weight: bold; color: #000; border: none; } .forum-post .my .name{ background: #b3ecff; padding: 0 6px; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; position: relative; margin: 0 0 0 -3px; zoom: 1; } .forum-post .post-content{ margin-right: 0.5em; } .forum-post .post-content img{ max-width: 100%; } .forum-post .post-date{ font-size: 10px; color: #808080; margin-right: 0.5em; } .forum-post .controls{ font-size: 10px; } .forum-post .controls a{ margin-right: 0.5em; } .forum-post .controls .remove{ color: #e66267; } .forum-post .post-info{ white-space: nowrap; } .forum-post .rating{ position: absolute; top: 0; right: 0; font-size: 11px; } .forum-post .vote{ float: right; margin-left: 7px; } .forum-post .vote span{ display: block; background: url(http://asset1.torrentino.com/assets/com/vote-comment-a741d900418756bd4f70eb3c4cc3bada.png) no-repeat; width: 19px; height: 18px; float: left; cursor: pointer; } .forum-post .rating .score{ margin-left: 1.5em; float: left; } .forum-post .rating .bad{ color: #ff1d25; } .forum-post .rating .good{ color: #39b54a; } .forum-post .vote span.vote-good{background-position: 0 0;} .forum-post .vote span.vote-good:hover{background-position: 0 -18px;} .forum-post .vote span.vote-good.voted, .forum-post .vote span.vote-good:active{background-position: 0 -36px;} .forum-post .vote span.vote-bad{background-position: -19px 0;} .forum-post .vote span.vote-bad:hover{background-position: -19px -18px;} .forum-post .vote span.vote-bad.voted, .forum-post .vote span.vote-bad:active{background-position: -19px -36px;} .forum-post blockquote{ display: inline-block; color: #808080; padding-left: 28px; border-left: 1px solid #ccc; margin-left: 0; } .forum-post blockquote .quote-name{ font-weight: bold; } .forum-post blockquote .quote-date{ font-size: 9px; } #new_post textarea{ height: 80px; } .jHtmlArea iframe{ border: 1px solid #ccc; height: 62px; } #new_post{ padding-left: 32px; position: relative; } #new_post a.author{ text-decoration: none; } #new_post a.author:hover .name{ text-decoration: underline; } #new_post .author .avatar{ position: absolute; left: 0; top: 0; width: 24px; height: 24px; overflow: hidden; } #new_post .author .name{ font-weight: bold; color: #000; border: none; } div.jHtmlArea .ToolBar ul { width: 100%; background: none !important; border: none !important; margin: 0 !important; } #new-comment-link{ font-size: 16px; font-weight: bold; } #content .auth-inside{ padding: 18px; } .top-users{ padding-left: 17px; margin-bottom: 18px; line-height: 18px; } .top-users .heading{ padding-left: 4px; font-size: 18px; } .top-users table{ width: 100%; margin-top: 18px; } .top-users table td{ height: 28px; } .top-users .position{ width: 15px; font-size: 10px; text-align: right; } .top-users .avatar{ width: 33px; text-align: center; } .top-users .avatar div{ position: relative; } .top-users .user a{ color: #000; font-size: 12px; } .top-users .authority{ text-align: right; } .top-users .authority div{ padding-right: 9px; } .top-users .crown{ width: 16px; height: 16px; display: block; background: url(http://asset1.torrentino.com/assets/com/crown-8d7fb5833dbba8139a08c43c1ce5b065.png) 50% 50% no-repeat; position: absolute; top: -18px; left: 8px; } div.more-text { color: #CC8; font-size: 12px; font-weight: lighter; border-top: 1px solid #fff; padding-top: 12px; border-bottom: 1px solid #fff; padding-bottom: 12px; } div.download-box { border-top: 1px solid #fff; padding-top: 12px; } .pull-left-important { float: left!important; } .darken { color: #999999; } .best-torrent { font-size: 20px; padding-top: 10px; } .best-torrent small { font-size: 12px; margin-left: 10px; } .best-torrent span { font-size: 10px; color: #7e7e7e; } .more-torrents small { color: #7e7e7e; font-size: 12px; } div.last_downloaded { margin-left: 15px; margin-top: 20px; } .last_downloaded ul { margin-top: 10px; margin-left: 0px; } .last_downloaded li { color: #0C78C3; display: block; font-size: 11px; line-height: 1.33em; margin-bottom: 0.8em; margin-right: 1em; } .last_downloaded .h2 { clear: both; color: #202020; display: block; font-size: 1.8em; margin: 0 0 0.2em; } .video_code { padding-top: 30px; } .another-link { max-width: 270px; overflow: hidden; text-overflow: ellipsis; display: block; } .download-block { margin-left: 90px; width: 450px; } @media (max-width: 768px){ .a-panel{ display: none; } .header{ height: auto; } .navigation .nav li{ float: none !important; border-bottom: 1px solid rgba(0, 0, 0, 0.2); border-top: 1px solid rgba(255, 255, 255, 0.1); border-left: 0; border-right: 0; } .navigation .nav .social-buttons{ display: none; } .navigation .nav .add-torrent{ display: none; } .top-header{ height: auto; width: 100%; overflow: hidden; } .brand{ position: relative; top: 0; left: 0; margin: 0 auto; padding: 10px; } .search{ position: relative; float: none; top: auto; left: auto; padding: 10px; } .search .search-text{ border-radius: 14px; -moz-border-radius: 14px; -webkit-border-radius: 14px; margin-bottom: 0; padding-left: 14px; padding-right: 14px; width: 150px; } .search .search-submit{ position: relative; top: auto; left: auto; } .breadcrumbs{ display: none; } .outmargin{ margin:0; padding: 10px; background-image: none; } .outmargin:after { display: none; } .plate .name{ font-size: 13px; line-height: 18px; font-weight: bold; } .ratings{ display: none; } .torrent-file-info { float: none; margin-bottom: 18px; } .torrent-content{ display: none; } .description .poster { float: none; padding: 0; } } .qq-uploader { position:relative; width: 370px; outline: none; margin: -3px 0 0 -2px; zoom: 1; } .qq-upload-button-focus {outline:1px dotted black;} .qq-upload-drop-area { position:absolute; top:0; left:0; width:100%; height:100%; min-height: 70px; z-index:2; background:#FF9797; text-align:center; } .qq-upload-drop-area span { display:block; position:absolute; top: 50%; width:100%; margin-top:-8px; font-size:16px; } .qq-upload-drop-area-active {background:#FF7171;} .qq-upload-list {margin:15px 0px; padding:0; list-style: none;} .qq-upload-list li { margin:0; padding:0; line-height:15px; font-size:12px;} .qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text { margin-right: 7px; } .qq-upload-file {} .qq-upload-spinner {display: block; background: url(http://asset1.torrentino.com/assets/com/spinner-7758709420a92f62beea26f960219c42.gif); width:24px; height:24px; margin: -3px 0 0 -31px; position: absolute;} .qq-upload-size,.qq-upload-cancel {font-size:11px;} .qq-upload-failed-text {display:none;} .qq-upload-fail .qq-upload-failed-text {display:inline;} .qq-upload-button{ height: 33px; line-height: 30px; clear: both; outline: none; cursor: pointer; color: #333; text-decoration: none; } .qq-upload-button input{ cursor: pointer; } .qq-upload-button .button-cl, .qq-upload-button .button-cr{ background-image: url(http://asset1.torrentino.com/assets/com/button-b2e3a8e17ab96a9002d27370d2daa189.png); background-repeat: no-repeat; position: relative; top: -3px; left: -3px; } .qq-upload-button .button-cl{ padding: 9px 0 8px 12px; background-position: 0 0; } .qq-upload-button .button-cr{ padding: 9px 12px 8px 0px; background-position: 100% 0; } .qq-upload-button-hover .button-cl{ background-position: 0 -33px; } .qq-upload-button-hover .button-cr{ background-position: 100% -33px; } .qq-upload-button-focus .button-cl{ background-position: 0 -66px; } .qq-upload-button-focus .button-cr{ background-position: 100% -66px; } .qq-filename{ position: relative; top: -3px; } .qq-filename-text{ padding-right: 18px; } #facebox { position: absolute; top: 0; left: 0; z-index: 100; text-align: left; } #facebox .popup { position: relative; } #facebox table { border-collapse: collapse; } #facebox td { border-bottom: 0; padding: 0; } #facebox .body { padding: 15px; background: #fff; width: 450px; } #facebox .loading { text-align: center; } #facebox .image { text-align: center; } #facebox img { border: 0; margin: 0; } #facebox .header { float: right; } #facebox_overlay { position: fixed; top: 0px; left: 0px; height:100%; width:100%; } .facebox_hide { z-index:-100; } .facebox_overlayBG { background-color: #000; z-index: 99; } * html #facebox_overlay { /* ie6 hack */ position: absolute; height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); } #facebox .content h1 {margin-top: 0;} .search-suggest { position: absolute; background: white; border: 1px solid silver; z-index: 1000; display: none; } .search-suggest-visible { display: block; } .search-suggest .search-suggest-list, .search-suggest .search-suggest-item { margin: 0; padding: 0; list-style: none; background: none; zoom: 1; } .search-suggest .search-suggest-item-block { padding: 3px; white-space: nowrap; overflow: hidden; } .search-suggest .search-suggest-item-hover { background: #d3dde0; } .search-suggest .search-suggest-item-active { background: #bad2d8; } .search-suggest .search-suggest-list { z-index: 1100; position: relative; text-align: left; } .search-suggest .search-suggest-shim { top: 0; left: 0; border: 0 none; background: white; position: absolute; width: 100%; } /* *= .require ./reset-fonts-grids-min.css *= .require ./base.css *= .require ./forms.css *= .require ./search-suggest.css *= .require ./jstree_theme.css */ ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://www.torrentino.com/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAA AAAAAAAAAAAAAAAAAAD///8B////Af///wEAAAADAAAADQAAABUAAAAbAAAAHwAA ABsAAAAVAAAADQAAAAX///8B////Af///wH///8B////AQAAAAMAAAATAAAAKQAA AD0AAABNAAAAWQAAAF0BBBZjAQYkXQIHKE8AAg4zAAAAGQAABAf///8B////Af// /wEAAAARAAAALQAAAEcAAABhAAAAeQAAAo8AAACXDRqV3w8cpfsWJMb7ChVuewAA AC8BAxEdAAAAA////wH///8BAAAADwAAACkAAABDAAAAWwAAAHMAAASHAAAAiw4b meERHKn/GSfT/w0YfX8AAAArAgUbGf///wH///8B////Af///wEAAAALAAAAHwAB ADEBBwBBAAADRwAAAEUMGIbPER6w/xkn1f8QH55jAAAAAxIgpQP///8B////Af// /wH///8B////Af///wEUdAADBQqkCQcbdSUACzEVECC1xRAbpP8YJs7/FirYW/// /wEQJscTCSKyA////wH///8B////Af///wH///8BNf8ABx6tMl8RIM3LFSXI7xQj x/cQG6T/FyPC/xoozescK9zzFinQl////wH///8B////Af///wEp2h0D////ASjN G5EiyQz/GYNWqxQZ1O0VJcL/ER2v/xYiuv0cKMr/GCfG0RIs4hP///8B////Af// /wEs1BwD////AS/ZG3Uq2xv/IcAW/yHLBvEZcXarExjO9xMju/8aJ9j/Gyze4wwg qiH///8B////Af///wElsxcD////ASmyFVUqzhz/KNIb/x+3Ev8gvxb/I9QK4xRO lKcSF8f/FyjO8xInzjf///8BFinSA////wH///8B////ATLKF0Mt2h37KMkb/yTA GP8cpBD/IL0U/yLHF/8i0AzbEz6lsxAa1FH///8BEx/IA////wH///8B////Af// /wEyxxc7MNQaUzPYGmcq2Bv5HKYR/yG9E/MmxhVhI8YVYSbaCSX///8BHnh4A/// /wH///8B////Af///wH///8B////Af///wE1vxUbK9cb8x+4E/8bmg/rLrATEf// /wH///8B////Af///wH///8B////Af///wH///8B////ATLJFwP///8BNMIWHSvZ G/EethP/HKIP6TG+FBP///8BJbsXA////wH///8B////Af///wH///8B////Af// /wH///8B////ATa9FBkr2BvxHasS/yG4Eus70xYR////Af///wH///8B////Af// /wH///8B////Af///wH///8B////Af///wE2txMJL80XXSe2EmknrxFfPNIVB/// /wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA//8AAP//AAD//wAA //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=application-4cfe99edc0ac04f9f3ae6334b017ddc4.js Content-Type: application/javascript; name=application-4cfe99edc0ac04f9f3ae6334b017ddc4.js Content-Location: http://asset1.torrentino.com/assets/com/application-4cfe99edc0ac04f9f3ae6334b017ddc4.js Content-Transfer-Encoding: Base64 LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNS4xCiAqIGh0dHA6 Ly9qcXVlcnkuY29tLwogKgogKiBDb3B5cmlnaHQgMjAxMSwgSm9obiBSZXNpZwog KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBs aWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBJbmNs dWRlcyBTaXp6bGUuanMKICogaHR0cDovL3NpenpsZWpzLmNvbS8KICogQ29weXJp Z2h0IDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24KICogUmVsZWFzZWQgdW5kZXIg dGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgogKgogKiBEYXRlOiBXZWQg RmViIDIzIDEzOjU1OjI5IDIwMTEgLTA1MDAKICovCmZ1bmN0aW9uIGFjdGlvbihh LGIsYyl7JChhKS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhp cyksYj1hLmF0dHIoImNsYXNzIikuc3BsaXQoIiAiKTskLmluQXJyYXkoInd5c2l3 eWciLGIpPi0xJiZhLmZpbmQoIi5lZGl0b3IiKS5mb2N1cygpfSksYz09bnVsbCYm KGM9ITEpLGRvY3VtZW50LmV4ZWNDb21tYW5kKGIsbnVsbCxjKX1mdW5jdGlvbiBt YWtlVG9vbGJhcihhKXt0b29sYmFyPSc8ZGl2IGNsYXNzPSJ3eXNpd3lnLXRvb2xi YXIiPjxpbWcgc3JjPSIvaW1hZ2VzL3d5c2l3eWcvYm9sZC5wbmciIG9uY2xpY2s9 ImFjdGlvbih0aGlzLFwnYm9sZFwnKSIgdGl0bGU9ImJvbGQiIGFsdD0iYm9sZCIg Lz48aW1nIHNyYz0iL2ltYWdlcy93eXNpd3lnL2l0YWxpYy5wbmciIG9uY2xpY2s9 ImFjdGlvbih0aGlzLFwnaXRhbGljXCcpIiB0aXRsZT0iaXRhbGljIiBhbHQ9Iml0 YWxpYyIgLz48aW1nIHNyYz0iL2ltYWdlcy93eXNpd3lnL3VsLnBuZyIgb25jbGlj az0iYWN0aW9uKHRoaXMsXCdpbnNlcnR1bm9yZGVyZWRsaXN0XCcpIiB0aXRsZT0i dWwiIGFsdD0idWwiIC8+PC9kaXY+JyxhLnBhcmVudCgpLnByZXBlbmQodG9vbGJh cil9ZnVuY3Rpb24gdXJsZW5jb2RlKGEpe3JldHVybiBhLnJlcGxhY2UoL1wrL2cs IiUyQiIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvXCovZywiJTJBIiku cmVwbGFjZSgvXC8vZywiJTJGIikucmVwbGFjZSgvQC9nLCIlNDAiKX1mdW5jdGlv biBnb190b19zZWFyY2hfcmVzdWx0cygpe3ZhciBhPSIvc2VhcmNoLyIrJCgiI2tp bmQiKS52YWwoKSsiLyIrdXJsZW5jb2RlKCQoIiNzZWFyY2giKS52YWwoKSk7cmV0 dXJuIGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9YSwhMX1mdW5jdGlvbiBmYWNlYm9v a19vbmxvZ2luKCl7ZG9jdW1lbnQubG9jYXRpb249Ii9zZXNzaW9uL2ZhY2Vib29r In1mdW5jdGlvbiBjaGVja19zaGFyZV9mb3JtKCl7cmV0dXJuICQoIiNzaGFyZS15 b3VyLW5hbWUiKVswXS52YWx1ZS5sZW5ndGg9PTA/KGFsZXJ0KCLQktGLINC00L7Q u9C20L3RiyDQstCy0LXRgdGC0Lgg0YHQstC+0LUg0LjQvNGPLiIpLCExKTokKCIj c2hhcmUteW91ci1lbWFpbCIpWzBdLnZhbHVlLmxlbmd0aD09MD8oYWxlcnQoItCS 0Ysg0LTQvtC70LbQvdGLINCy0LLQtdGB0YLQuCDRgdCy0L7QuSBlLW1haWwuIiks ITEpOiQoIiNzaGFyZS1jb21tZW50IilbMF0udmFsdWUubGVuZ3RoPT0wPyhhbGVy dCgi0JLRiyDQtNC+0LvQttC90Ysg0LLQstC10YHRgtC4INC/0L7QtNC/0LjRgdGM LiIpLCExKTohMH1mdW5jdGlvbiBzaG93X2NvbW1lbnRfc3Bpbm5lcigpeyQoIiNz cGlubWUiKS5zcGlubmVyKHtoZWlnaHQ6MzIsd2lkdGg6MTYsc3BlZWQ6NTAsaW1h Z2U6Imh0dHA6Ly9hc3NldDEudG9ycmVudGluby5jb20vYXNzZXRzL2NvbS9zcG90 bGlnaHRfc3Bpbm5lcl9ib3RoLTdiM2I5Y2RmNzdmNGFhZjg1NTE1MzM2NWFkOGJj YmRmLnBuZyJ9KSwkKCIjc3Bpbm1lIikuc2hvdygpfWZ1bmN0aW9uIGhpZGVfY29t bWVudF9zcGlubmVyKCl7JCgiI3NwaW5tZSIpLmhpZGUoKSwkLnNwaW5uZXJTdG9w KCl9ZnVuY3Rpb24gYWRkRmF2b3JpdGUoKXtkb2N1bWVudC5hbGw/d2luZG93LmV4 dGVybmFsLkFkZEZhdm9yaXRlKGxvY2F0aW9uLmhyZWYsZG9jdW1lbnQudGl0bGUp OndpbmRvdy5zaWRlYmFyJiZ3aW5kb3cuc2lkZWJhci5hZGRQYW5lbChkb2N1bWVu dC50aXRsZSxsb2NhdGlvbi5ocmVmLCIiKX1mdW5jdGlvbiBfX2ZsYXNoX2Nvb2tp ZV9pbml0KGEpe25hbWVzcGFjZT0iem9uYSI7dmFyIGI7d2luZG93LlN3ZlN0b3Jl W25hbWVzcGFjZV0/KGI9d2luZG93LlN3ZlN0b3JlW25hbWVzcGFjZV0sYSYmYShi LmdldCgiWm9uYUluc3RhbGxlZCIpPT0idHJ1ZSIpKTpiPW5ldyBTd2ZTdG9yZSh7 c3dmX3VybDoiaHR0cDovL3pvbmEucnUvZmxhc2gvc3RvcmFnZS5zd2YiLG5hbWVz cGFjZTpuYW1lc3BhY2UscGF0aDoiLyIsZGVidWc6ITEsb25yZWFkeTpmdW5jdGlv bigpe2EmJmEoYi5nZXQoIlpvbmFJbnN0YWxsZWQiKT09InRydWUiKX0sb25lcnJv cjpmdW5jdGlvbigpe2EmJmEoITEpfX0pfWZ1bmN0aW9uIGlzWm9uYUluc3RhbGxl ZChhKXtuYW1lc3BhY2U9InpvbmEiLHN0PXdpbmRvdy5Td2ZTdG9yZVtuYW1lc3Bh Y2VdO2lmKHR5cGVvZiBzdD09InVuZGVmaW5lZCIpX19mbGFzaF9jb29raWVfaW5p dChhKTtlbHNlIGlmKGEpYShzdC5nZXQoIlpvbmFJbnN0YWxsZWQiKT09InRydWUi KTtlbHNlIHJldHVybiBzdC5nZXQoIlpvbmFJbnN0YWxsZWQiKT09InRydWUiO3Jl dHVybn0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBELmlzV2lu ZG93KGEpP2E6YS5ub2RlVHlwZT09PTk/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRX aW5kb3c6ITF9ZnVuY3Rpb24gZChhKXtpZighY2FbYV0pe3ZhciBiPUQoIjwiK2Er Ij4iKS5hcHBlbmRUbygiYm9keSIpLGM9Yi5jc3MoImRpc3BsYXkiKTtiLnJlbW92 ZSgpO2lmKGM9PT0ibm9uZSJ8fGM9PT0iIiljPSJibG9jayI7Y2FbYV09Y31yZXR1 cm4gY2FbYV19ZnVuY3Rpb24gZShhLGIpe3ZhciBjPXt9O3JldHVybiBELmVhY2go Y2UuY29uY2F0LmFwcGx5KFtdLGNlLnNsaWNlKDAsYikpLGZ1bmN0aW9uKCl7Y1t0 aGlzXT1hfSksY31mdW5jdGlvbiBmKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVY T2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24g Zygpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1m dW5jdGlvbiBoKCl7RChhKS51bmxvYWQoZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4g YiQpYiRbYV0oMCwxKX0pfWZ1bmN0aW9uIGkoYSxjKXthLmRhdGFGaWx0ZXImJihj PWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZD1hLmRhdGFUeXBlcyxl PXt9LGYsZyxoPWQubGVuZ3RoLGksaj1kWzBdLGssbCxtLG4sbztmb3IoZj0xO2Y8 aDtmKyspe2lmKGY9PT0xKWZvcihnIGluIGEuY29udmVydGVycyl0eXBlb2YgZz09 InN0cmluZyImJihlW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddKTtr PWosaj1kW2ZdO2lmKGo9PT0iKiIpaj1rO2Vsc2UgaWYoayE9PSIqIiYmayE9PWop e2w9aysiICIraixtPWVbbF18fGVbIiogIitqXTtpZighbSl7bz1iO2ZvcihuIGlu IGUpe2k9bi5zcGxpdCgiICIpO2lmKGlbMF09PT1rfHxpWzBdPT09IioiKXtvPWVb aVsxXSsiICIral07aWYobyl7bj1lW25dLG49PT0hMD9tPW86bz09PSEwJiYobT1u KTticmVha319fX0hbSYmIW8mJkQuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAi K2wucmVwbGFjZSgiICIsIiB0byAiKSksbSE9PSEwJiYoYz1tP20oYyk6byhuKGMp KSl9fXJldHVybiBjfWZ1bmN0aW9uIGooYSxjLGQpe3ZhciBlPWEuY29udGVudHMs Zj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBp biBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNo aWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIo ImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50 ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vs c2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBd XSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXJldHVybiBqIT09Zlsw XSYmZi51bnNoaWZ0KGopLGRbal19ZnVuY3Rpb24gayhhLGIsYyxkKXtpZihELmlz QXJyYXkoYikmJmIubGVuZ3RoKUQuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8YkIu dGVzdChhKT9kKGEsZSk6ayhhKyJbIisodHlwZW9mIGU9PSJvYmplY3QifHxELmlz QXJyYXkoZSk/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Yj09bnVsbHx8 dHlwZW9mIGIhPSJvYmplY3QiKWQoYSxiKTtlbHNlIGlmKEQuaXNBcnJheShiKXx8 RC5pc0VtcHR5T2JqZWN0KGIpKWQoYSwiIik7ZWxzZSBmb3IodmFyIGUgaW4gYilr KGErIlsiK2UrIl0iLGJbZV0sYyxkKX1mdW5jdGlvbiBsKGEsYyxkLGUsZixnKXtm PWZ8fGMuZGF0YVR5cGVzWzBdLGc9Z3x8e30sZ1tmXT0hMDt2YXIgaD1hW2ZdLGk9 MCxqPWg/aC5sZW5ndGg6MCxrPWE9PT1iUyxtO2Zvcig7aTxqJiYoa3x8IW0pO2kr KyltPWhbaV0oYyxkLGUpLHR5cGVvZiBtPT0ic3RyaW5nIiYmKCFrfHxnW21dP209 YjooYy5kYXRhVHlwZXMudW5zaGlmdChtKSxtPWwoYSxjLGQsZSxtLGcpKSk7cmV0 dXJuKGt8fCFtKSYmIWdbIioiXSYmKG09bChhLGMsZCxlLCIqIixnKSksbX1mdW5j dGlvbiBtKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5n IiYmKGM9YixiPSIqIik7aWYoRC5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93 ZXJDYXNlKCkuc3BsaXQoYk0pLGU9MCxmPWQubGVuZ3RoLGcsaCxpO2Zvcig7ZTxm O2UrKylnPWRbZV0saT0vXlwrLy50ZXN0KGcpLGkmJihnPWcuc3Vic3RyKDEpfHwi KiIpLGg9YVtnXT1hW2ddfHxbXSxoW2k/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1m dW5jdGlvbiBuKGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9idTpidixlPWI9PT0i d2lkdGgiP2Eub2Zmc2V0V2lkdGg6YS5vZmZzZXRIZWlnaHQ7cmV0dXJuIGM9PT0i Ym9yZGVyIj9lOihELmVhY2goZCxmdW5jdGlvbigpe2N8fChlLT1wYXJzZUZsb2F0 KEQuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2UrPXBh cnNlRmxvYXQoRC5jc3MoYSwibWFyZ2luIit0aGlzKSl8fDA6ZS09cGFyc2VGbG9h dChELmNzcyhhLCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwfSksZSl9ZnVuY3Rp b24gbyhhLGIpe2Iuc3JjP0QuYWpheCh7dXJsOmIuc3JjLGFzeW5jOiExLGRhdGFU eXBlOiJzY3JpcHQifSk6RC5nbG9iYWxFdmFsKGIudGV4dHx8Yi50ZXh0Q29udGVu dHx8Yi5pbm5lckhUTUx8fCIiKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5y ZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBwKGEpe3JldHVybiJnZXRFbGVtZW50c0J5 VGFnTmFtZSJpbiBhP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKToicXVlcnlT ZWxlY3RvckFsbCJpbiBhP2EucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0 aW9uIHEoYSxiKXtpZihiLm5vZGVUeXBlPT09MSl7dmFyIGM9Yi5ub2RlTmFtZS50 b0xvd2VyQ2FzZSgpO2IuY2xlYXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0 ZXMoYSk7aWYoYz09PSJvYmplY3QiKWIub3V0ZXJIVE1MPWEub3V0ZXJIVE1MO2Vs c2UgaWYoYyE9PSJpbnB1dCJ8fGEudHlwZSE9PSJjaGVja2JveCImJmEudHlwZSE9 PSJyYWRpbyIpe2lmKGM9PT0ib3B0aW9uIiliLnNlbGVjdGVkPWEuZGVmYXVsdFNl bGVjdGVkO2Vsc2UgaWYoYz09PSJpbnB1dCJ8fGM9PT0idGV4dGFyZWEiKWIuZGVm YXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlfWVsc2UgYS5jaGVja2VkJiYoYi5kZWZh dWx0Q2hlY2tlZD1iLmNoZWNrZWQ9YS5jaGVja2VkKSxiLnZhbHVlIT09YS52YWx1 ZSYmKGIudmFsdWU9YS52YWx1ZSk7Yi5yZW1vdmVBdHRyaWJ1dGUoRC5leHBhbmRv KX19ZnVuY3Rpb24gcihhLGIpe2lmKGIubm9kZVR5cGU9PT0xJiZELmhhc0RhdGEo YSkpe3ZhciBjPUQuZXhwYW5kbyxkPUQuZGF0YShhKSxlPUQuZGF0YShiLGQpO2lm KGQ9ZFtjXSl7dmFyIGY9ZC5ldmVudHM7ZT1lW2NdPUQuZXh0ZW5kKHt9LGQpO2lm KGYpe2RlbGV0ZSBlLmhhbmRsZSxlLmV2ZW50cz17fTtmb3IodmFyIGcgaW4gZilm b3IodmFyIGg9MCxpPWZbZ10ubGVuZ3RoO2g8aTtoKyspRC5ldmVudC5hZGQoYixn KyhmW2ddW2hdLm5hbWVzcGFjZT8iLiI6IiIpK2ZbZ11baF0ubmFtZXNwYWNlLGZb Z11baF0sZltnXVtoXS5kYXRhKX19fX1mdW5jdGlvbiBzKGEsYil7cmV0dXJuIEQu bm9kZU5hbWUoYSwidGFibGUiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9k eSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIHQoYSxiLGMpe2lmKEQuaXNGdW5jdGlv bihiKSlyZXR1cm4gRC5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2Fs bChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gRC5n cmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9m IGI9PSJzdHJpbmciKXt2YXIgZD1ELmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4g YS5ub2RlVHlwZT09PTF9KTtpZihiYS50ZXN0KGIpKXJldHVybiBELmZpbHRlcihi LGQsIWMpO2I9RC5maWx0ZXIoYixkKX1yZXR1cm4gRC5ncmVwKGEsZnVuY3Rpb24o YSxkKXtyZXR1cm4gRC5pbkFycmF5KGEsYik+PTA9PT1jfSl9ZnVuY3Rpb24gdShh KXtyZXR1cm4hYXx8IWEucGFyZW50Tm9kZXx8YS5wYXJlbnROb2RlLm5vZGVUeXBl PT09MTF9ZnVuY3Rpb24gdihhLGIpe3JldHVybihhJiZhIT09IioiP2ErIi4iOiIi KStiLnJlcGxhY2UoUCwiYCIpLnJlcGxhY2UoUSwiJiIpfWZ1bmN0aW9uIHcoYSl7 dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbz1bXSxwPVtdLHE9RC5fZGF0 YSh0aGlzLCJldmVudHMiKTtpZihhLmxpdmVGaXJlZCE9PXRoaXMmJnEmJnEubGl2 ZSYmIWEudGFyZ2V0LmRpc2FibGVkJiYoIWEuYnV0dG9ufHxhLnR5cGUhPT0iY2xp Y2siKSl7YS5uYW1lc3BhY2UmJihtPW5ldyBSZWdFeHAoIihefFxcLikiK2EubmFt ZXNwYWNlLnNwbGl0KCIuIikuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQp IikpLGEubGl2ZUZpcmVkPXRoaXM7dmFyIHI9cS5saXZlLnNsaWNlKDApO2Zvciho PTA7aDxyLmxlbmd0aDtoKyspZj1yW2hdLGYub3JpZ1R5cGUucmVwbGFjZShOLCIi KT09PWEudHlwZT9wLnB1c2goZi5zZWxlY3Rvcik6ci5zcGxpY2UoaC0tLDEpO2U9 RChhLnRhcmdldCkuY2xvc2VzdChwLGEuY3VycmVudFRhcmdldCk7Zm9yKGk9MCxq PWUubGVuZ3RoO2k8ajtpKyspe2w9ZVtpXTtmb3IoaD0wO2g8ci5sZW5ndGg7aCsr KXtmPXJbaF07aWYobC5zZWxlY3Rvcj09PWYuc2VsZWN0b3ImJighbXx8bS50ZXN0 KGYubmFtZXNwYWNlKSkmJiFsLmVsZW0uZGlzYWJsZWQpe2c9bC5lbGVtLGQ9bnVs bDtpZihmLnByZVR5cGU9PT0ibW91c2VlbnRlciJ8fGYucHJlVHlwZT09PSJtb3Vz ZWxlYXZlIilhLnR5cGU9Zi5wcmVUeXBlLGQ9RChhLnJlbGF0ZWRUYXJnZXQpLmNs b3Nlc3QoZi5zZWxlY3RvcilbMF07KCFkfHxkIT09ZykmJm8ucHVzaCh7ZWxlbTpn LGhhbmRsZU9iajpmLGxldmVsOmwubGV2ZWx9KX19fWZvcihpPTAsaj1vLmxlbmd0 aDtpPGo7aSsrKXtlPW9baV07aWYoYyYmZS5sZXZlbD5jKWJyZWFrO2EuY3VycmVu dFRhcmdldD1lLmVsZW0sYS5kYXRhPWUuaGFuZGxlT2JqLmRhdGEsYS5oYW5kbGVP Ymo9ZS5oYW5kbGVPYmosbj1lLmhhbmRsZU9iai5vcmlnSGFuZGxlci5hcHBseShl LmVsZW0sYXJndW1lbnRzKTtpZihuPT09ITF8fGEuaXNQcm9wYWdhdGlvblN0b3Bw ZWQoKSl7Yz1lLmxldmVsLG49PT0hMSYmKGI9ITEpO2lmKGEuaXNJbW1lZGlhdGVQ cm9wYWdhdGlvblN0b3BwZWQoKSlicmVha319cmV0dXJuIGJ9fWZ1bmN0aW9uIHgo YSxjLGQpe3ZhciBlPUQuZXh0ZW5kKHt9LGRbMF0pO2UudHlwZT1hLGUub3JpZ2lu YWxFdmVudD17fSxlLmxpdmVGaXJlZD1iLEQuZXZlbnQuaGFuZGxlLmNhbGwoYyxl KSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZkWzBdLnByZXZlbnREZWZhdWx0KCl9 ZnVuY3Rpb24geSgpe3JldHVybiEwfWZ1bmN0aW9uIHooKXtyZXR1cm4hMX1mdW5j dGlvbiBBKGEpe2Zvcih2YXIgYiBpbiBhKWlmKGIhPT0idG9KU09OIilyZXR1cm4h MTtyZXR1cm4hMH1mdW5jdGlvbiBCKGEsYyxkKXtpZihkPT09YiYmYS5ub2RlVHlw ZT09PTEpe2Q9YS5nZXRBdHRyaWJ1dGUoImRhdGEtIitjKTtpZih0eXBlb2YgZD09 InN0cmluZyIpe3RyeXtkPWQ9PT0idHJ1ZSI/ITA6ZD09PSJmYWxzZSI/ITE6ZD09 PSJudWxsIj9udWxsOkQuaXNOYU4oZCk/RS50ZXN0KGQpP0QucGFyc2VKU09OKGQp OmQ6cGFyc2VGbG9hdChkKX1jYXRjaChlKXt9RC5kYXRhKGEsYyxkKX1lbHNlIGQ9 Yn1yZXR1cm4gZH12YXIgQz1hLmRvY3VtZW50LEQ9ZnVuY3Rpb24oKXtmdW5jdGlv biBjKCl7aWYoIWQuaXNSZWFkeSl7dHJ5e0MuZG9jdW1lbnRFbGVtZW50LmRvU2Ny b2xsKCJsZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChjLDEpO3JldHVybn1kLnJl YWR5KCl9fXZhciBkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkLmZuLmluaXQo YSxiLGcpfSxlPWEualF1ZXJ5LGY9YS4kLGcsaD0vXig/OltePF0qKDxbXHdcV10r PilbXj5dKiR8IyhbXHdcLV0rKSQpLyxpPS9cUy8saj0vXlxzKy8saz0vXHMrJC8s bD0vXGQvLG09L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxuPS9eW1xdLDp7 fVxzXSokLyxvPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cs cD0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/ KD86W2VFXVsrXC1dP1xkKyk/L2cscT0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHI9 Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8scz0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/ WyBcL10oW1x3Ll0rKS8sdD0vKG1zaWUpIChbXHcuXSspLyx1PS8obW96aWxsYSko PzouKj8gcnY6KFtcdy5dKykpPy8sdj1uYXZpZ2F0b3IudXNlckFnZW50LHcseD0h MSx5LHo9InRoZW4gZG9uZSBmYWlsIGlzUmVzb2x2ZWQgaXNSZWplY3RlZCBwcm9t aXNlIi5zcGxpdCgiICIpLEEsQj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEQ9 T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxFPUFycmF5LnByb3RvdHlw ZS5wdXNoLEY9QXJyYXkucHJvdG90eXBlLnNsaWNlLEc9U3RyaW5nLnByb3RvdHlw ZS50cmltLEg9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsST17fTtyZXR1cm4gZC5m bj1kLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZCxpbml0OmZ1bmN0aW9uKGEsYyxl KXt2YXIgZixnLGksajtpZighYSlyZXR1cm4gdGhpcztpZihhLm5vZGVUeXBlKXJl dHVybiB0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcztp ZihhPT09ImJvZHkiJiYhYyYmQy5ib2R5KXJldHVybiB0aGlzLmNvbnRleHQ9Qyx0 aGlzWzBdPUMuYm9keSx0aGlzLnNlbGVjdG9yPSJib2R5Iix0aGlzLmxlbmd0aD0x LHRoaXM7aWYodHlwZW9mIGE9PSJzdHJpbmciKXtmPWguZXhlYyhhKTtpZighZnx8 IWZbMV0mJmMpcmV0dXJuIWN8fGMuanF1ZXJ5PyhjfHxlKS5maW5kKGEpOnRoaXMu Y29uc3RydWN0b3IoYykuZmluZChhKTtpZihmWzFdKXJldHVybiBjPWMgaW5zdGFu Y2VvZiBkP2NbMF06YyxqPWM/Yy5vd25lckRvY3VtZW50fHxjOkMsaT1tLmV4ZWMo YSksaT9kLmlzUGxhaW5PYmplY3QoYyk/KGE9W0MuY3JlYXRlRWxlbWVudChpWzFd KV0sZC5mbi5hdHRyLmNhbGwoYSxjLCEwKSk6YT1bai5jcmVhdGVFbGVtZW50KGlb MV0pXTooaT1kLmJ1aWxkRnJhZ21lbnQoW2ZbMV1dLFtqXSksYT0oaS5jYWNoZWFi bGU/ZC5jbG9uZShpLmZyYWdtZW50KTppLmZyYWdtZW50KS5jaGlsZE5vZGVzKSxk Lm1lcmdlKHRoaXMsYSk7Zz1DLmdldEVsZW1lbnRCeUlkKGZbMl0pO2lmKGcmJmcu cGFyZW50Tm9kZSl7aWYoZy5pZCE9PWZbMl0pcmV0dXJuIGUuZmluZChhKTt0aGlz Lmxlbmd0aD0xLHRoaXNbMF09Z31yZXR1cm4gdGhpcy5jb250ZXh0PUMsdGhpcy5z ZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGQuaXNGdW5jdGlvbihhKT9lLnJlYWR5KGEp OihhLnNlbGVjdG9yIT09YiYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlz LmNvbnRleHQ9YS5jb250ZXh0KSxkLm1ha2VBcnJheShhLHRoaXMpKX0sc2VsZWN0 b3I6IiIsanF1ZXJ5OiIxLjUuMSIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBGLmNh bGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMu dG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hT dGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGU9dGhpcy5jb25zdHJ1Y3RvcigpO3Jl dHVybiBkLmlzQXJyYXkoYSk/RS5hcHBseShlLGEpOmQubWVyZ2UoZSxhKSxlLnBy ZXZPYmplY3Q9dGhpcyxlLmNvbnRleHQ9dGhpcy5jb250ZXh0LGI9PT0iZmluZCI/ ZS5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyh0aGlzLnNlbGVjdG9yPyIgIjoiIikr YzpiJiYoZS5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyIuIitiKyIoIitjKyIpIiks ZX0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBkLmVhY2godGhpcyxhLGIpfSxy ZWFkeTpmdW5jdGlvbihhKXtyZXR1cm4gZC5iaW5kUmVhZHkoKSx5LmRvbmUoYSks dGhpc30sZXE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0tMT90aGlzLnNsaWNlKGEp OnRoaXMuc2xpY2UoYSwrYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xp Y2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRi5hcHBseSh0aGlz LGFyZ3VtZW50cyksInNsaWNlIixGLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikp fSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQubWFwKHRo aXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sZW5kOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3Rv cihudWxsKX0scHVzaDpFLHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlfSxk LmZuLmluaXQucHJvdG90eXBlPWQuZm4sZC5leHRlbmQ9ZC5mbi5leHRlbmQ9ZnVu Y3Rpb24oKXt2YXIgYSxjLGUsZixnLGgsaT1hcmd1bWVudHNbMF18fHt9LGo9MSxr PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTt0eXBlb2YgaT09ImJvb2xlYW4iJiYobD1p LGk9YXJndW1lbnRzWzFdfHx7fSxqPTIpLHR5cGVvZiBpIT0ib2JqZWN0IiYmIWQu aXNGdW5jdGlvbihpKSYmKGk9e30pLGs9PT1qJiYoaT10aGlzLC0taik7Zm9yKDtq PGs7aisrKWlmKChhPWFyZ3VtZW50c1tqXSkhPW51bGwpZm9yKGMgaW4gYSl7ZT1p W2NdLGY9YVtjXTtpZihpPT09Ziljb250aW51ZTtsJiZmJiYoZC5pc1BsYWluT2Jq ZWN0KGYpfHwoZz1kLmlzQXJyYXkoZikpKT8oZz8oZz0hMSxoPWUmJmQuaXNBcnJh eShlKT9lOltdKTpoPWUmJmQuaXNQbGFpbk9iamVjdChlKT9lOnt9LGlbY109ZC5l eHRlbmQobCxoLGYpKTpmIT09YiYmKGlbY109Zil9cmV0dXJuIGl9LGQuZXh0ZW5k KHtub0NvbmZsaWN0OmZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9ZixiJiYoYS5qUXVl cnk9ZSksZH0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihh KXthPT09ITAmJmQucmVhZHlXYWl0LS07aWYoIWQucmVhZHlXYWl0fHxhIT09ITAm JiFkLmlzUmVhZHkpe2lmKCFDLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZC5yZWFk eSwxKTtkLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWQucmVhZHlXYWl0PjApcmV0 dXJuO3kucmVzb2x2ZVdpdGgoQyxbZF0pLGQuZm4udHJpZ2dlciYmZChDKS50cmln Z2VyKCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlv bigpe2lmKCF4KXt4PSEwO2lmKEMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0 dXJuIHNldFRpbWVvdXQoZC5yZWFkeSwxKTtpZihDLmFkZEV2ZW50TGlzdGVuZXIp Qy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixBLCExKSxhLmFk ZEV2ZW50TGlzdGVuZXIoImxvYWQiLGQucmVhZHksITEpO2Vsc2UgaWYoQy5hdHRh Y2hFdmVudCl7Qy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixBKSxh LmF0dGFjaEV2ZW50KCJvbmxvYWQiLGQucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEu ZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGUpe31DLmRvY3VtZW50RWxlbWVudC5k b1Njcm9sbCYmYiYmYygpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJu IGQudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8 ZnVuY3Rpb24oYSl7cmV0dXJuIGQudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93 OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJ bnRlcnZhbCJpbiBhfSxpc05hTjpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbHx8 IWwudGVzdChhKXx8aXNOYU4oYSl9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9 PW51bGw/U3RyaW5nKGEpOklbQi5jYWxsKGEpXXx8Im9iamVjdCJ9LGlzUGxhaW5P YmplY3Q6ZnVuY3Rpb24oYSl7aWYoIWF8fGQudHlwZShhKSE9PSJvYmplY3QifHxh Lm5vZGVUeXBlfHxkLmlzV2luZG93KGEpKXJldHVybiExO2lmKGEuY29uc3RydWN0 b3ImJiFELmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIUQuY2FsbChhLmNvbnN0cnVj dG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExO3ZhciBjO2Zv cihjIGluIGEpO3JldHVybiBjPT09Ynx8RC5jYWxsKGEsYyl9LGlzRW1wdHlPYmpl Y3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9 LGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IGF9LHBhcnNlSlNPTjpmdW5jdGlvbihi KXtpZih0eXBlb2YgYiE9InN0cmluZyJ8fCFiKXJldHVybiBudWxsO2I9ZC50cmlt KGIpO2lmKG4udGVzdChiLnJlcGxhY2UobywiQCIpLnJlcGxhY2UocCwiXSIpLnJl cGxhY2UocSwiIikpKXJldHVybiBhLkpTT04mJmEuSlNPTi5wYXJzZT9hLkpTT04u cGFyc2UoYik6KG5ldyBGdW5jdGlvbigicmV0dXJuICIrYikpKCk7ZC5lcnJvcigi SW52YWxpZCBKU09OOiAiK2IpfSxwYXJzZVhNTDpmdW5jdGlvbihiLGMsZSl7cmV0 dXJuIGEuRE9NUGFyc2VyPyhlPW5ldyBET01QYXJzZXIsYz1lLnBhcnNlRnJvbVN0 cmluZyhiLCJ0ZXh0L3htbCIpKTooYz1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9z b2Z0LlhNTERPTSIpLGMuYXN5bmM9ImZhbHNlIixjLmxvYWRYTUwoYikpLGU9Yy5k b2N1bWVudEVsZW1lbnQsKCFlfHwhZS5ub2RlTmFtZXx8ZS5ub2RlTmFtZT09PSJw YXJzZXJlcnJvciIpJiZkLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKSxjfSxub29w OmZ1bmN0aW9uKCl7fSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe2lmKGEmJmkudGVz dChhKSl7dmFyIGI9Qy5oZWFkfHxDLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFk IilbMF18fEMuZG9jdW1lbnRFbGVtZW50LGM9Qy5jcmVhdGVFbGVtZW50KCJzY3Jp cHQiKTtkLnN1cHBvcnQuc2NyaXB0RXZhbCgpP2MuYXBwZW5kQ2hpbGQoQy5jcmVh dGVUZXh0Tm9kZShhKSk6Yy50ZXh0PWEsYi5pbnNlcnRCZWZvcmUoYyxiLmZpcnN0 Q2hpbGQpLGIucmVtb3ZlQ2hpbGQoYyl9fSxub2RlTmFtZTpmdW5jdGlvbihhLGIp e3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1i LnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmLGc9MCxo PWEubGVuZ3RoLGk9aD09PWJ8fGQuaXNGdW5jdGlvbihhKTtpZihlKXtpZihpKXtm b3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxlKT09PSExKWJyZWFrfWVsc2UgZm9y KDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGUpPT09ITEpYnJlYWt9ZWxzZSBpZihp KXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31l bHNlIGZvcih2YXIgaj1hWzBdO2c8aCYmYy5jYWxsKGosZyxqKSE9PSExO2o9YVsr K2ddKTtyZXR1cm4gYX0sdHJpbTpHP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxs PyIiOkcuY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGEr IiIpLnJlcGxhY2UoaiwiIikucmVwbGFjZShrLCIiKX0sbWFrZUFycmF5OmZ1bmN0 aW9uKGEsYil7dmFyIGM9Ynx8W107aWYoYSE9bnVsbCl7dmFyIGU9ZC50eXBlKGEp O2EubGVuZ3RoPT1udWxsfHxlPT09InN0cmluZyJ8fGU9PT0iZnVuY3Rpb24ifHxl PT09InJlZ2V4cCJ8fGQuaXNXaW5kb3coYSk/RS5jYWxsKGMsYSk6ZC5tZXJnZShj LGEpfXJldHVybiBjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYil7aWYoYi5pbmRleE9m KXJldHVybiBiLmluZGV4T2YoYSk7Zm9yKHZhciBjPTAsZD1iLmxlbmd0aDtjPGQ7 YysrKWlmKGJbY109PT1hKXJldHVybiBjO3JldHVybi0xfSxtZXJnZTpmdW5jdGlv bihhLGMpe3ZhciBkPWEubGVuZ3RoLGU9MDtpZih0eXBlb2YgYy5sZW5ndGg9PSJu dW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vs c2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTtyZXR1cm4gYS5sZW5ndGg9 ZCxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2 YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZk LnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9 W10sZTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoO2Y8ZztmKyspZT1iKGFbZl0sZixj KSxlIT1udWxsJiYoZFtkLmxlbmd0aF09ZSk7cmV0dXJuIGQuY29uY2F0LmFwcGx5 KFtdLGQpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxjLGUpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPT09MiYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1hLGE9ZVtj XSxjPWIpOmMmJiFkLmlzRnVuY3Rpb24oYykmJihlPWMsYz1iKSksIWMmJmEmJihj PWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoZXx8dGhpcyxhcmd1bWVudHMpfSks YSYmKGMuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxjLmd1aWR8fGQuZ3VpZCsrKSxjfSxh Y2Nlc3M6ZnVuY3Rpb24oYSxjLGUsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5 cGVvZiBjPT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGMpZC5hY2Nlc3MoYSxqLGNb al0sZixnLGUpO3JldHVybiBhfWlmKGUhPT1iKXtmPSFoJiZmJiZkLmlzRnVuY3Rp b24oZSk7Zm9yKHZhciBrPTA7azxpO2srKylnKGFba10sYyxmP2UuY2FsbChhW2td LGssZyhhW2tdLGMpKTplLGgpO3JldHVybiBhfXJldHVybiBpP2coYVswXSxjKTpi fSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sX0Rl ZmVycmVkOmZ1bmN0aW9uKCl7dmFyIGE9W10sYixjLGUsZj17ZG9uZTpmdW5jdGlv bigpe2lmKCFlKXt2YXIgYz1hcmd1bWVudHMsZyxoLGksaixrO2ImJihrPWIsYj0w KTtmb3IoZz0wLGg9Yy5sZW5ndGg7ZzxoO2crKylpPWNbZ10saj1kLnR5cGUoaSks aj09PSJhcnJheSI/Zi5kb25lLmFwcGx5KGYsaSk6aj09PSJmdW5jdGlvbiImJmEu cHVzaChpKTtrJiZmLnJlc29sdmVXaXRoKGtbMF0sa1sxXSl9cmV0dXJuIHRoaXN9 LHJlc29sdmVXaXRoOmZ1bmN0aW9uKGQsZil7aWYoIWUmJiFiJiYhYyl7Yz0xO3Ry eXt3aGlsZShhWzBdKWEuc2hpZnQoKS5hcHBseShkLGYpfWNhdGNoKGcpe3Rocm93 IGd9ZmluYWxseXtiPVtkLGZdLGM9MH19cmV0dXJuIHRoaXN9LHJlc29sdmU6ZnVu Y3Rpb24oKXtyZXR1cm4gZi5yZXNvbHZlV2l0aChkLmlzRnVuY3Rpb24odGhpcy5w cm9taXNlKT90aGlzLnByb21pc2UoKTp0aGlzLGFyZ3VtZW50cyksdGhpc30saXNS ZXNvbHZlZDpmdW5jdGlvbigpe3JldHVybiBjfHxifSxjYW5jZWw6ZnVuY3Rpb24o KXtyZXR1cm4gZT0xLGE9W10sdGhpc319O3JldHVybiBmfSxEZWZlcnJlZDpmdW5j dGlvbihhKXt2YXIgYj1kLl9EZWZlcnJlZCgpLGM9ZC5fRGVmZXJyZWQoKSxlO3Jl dHVybiBkLmV4dGVuZChiLHt0aGVuOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGIuZG9u ZShhKS5mYWlsKGMpLHRoaXN9LGZhaWw6Yy5kb25lLHJlamVjdFdpdGg6Yy5yZXNv bHZlV2l0aCxyZWplY3Q6Yy5yZXNvbHZlLGlzUmVqZWN0ZWQ6Yy5pc1Jlc29sdmVk LHByb21pc2U6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbCl7aWYoZSlyZXR1cm4gZTtl PWE9e319dmFyIGM9ei5sZW5ndGg7d2hpbGUoYy0tKWFbeltjXV09Ylt6W2NdXTty ZXR1cm4gYX19KSxiLmRvbmUoYy5jYW5jZWwpLmZhaWwoYi5jYW5jZWwpLGRlbGV0 ZSBiLmNhbmNlbCxhJiZhLmNhbGwoYixiKSxifSx3aGVuOmZ1bmN0aW9uKGEpe3Zh ciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1iPD0xJiZhJiZkLmlzRnVuY3Rpb24oYS5w cm9taXNlKT9hOmQuRGVmZXJyZWQoKSxlPWMucHJvbWlzZSgpO2lmKGI+MSl7dmFy IGY9Ri5jYWxsKGFyZ3VtZW50cywwKSxnPWIsaD1mdW5jdGlvbihhKXtyZXR1cm4g ZnVuY3Rpb24oYil7ZlthXT1hcmd1bWVudHMubGVuZ3RoPjE/Ri5jYWxsKGFyZ3Vt ZW50cywwKTpiLC0tZ3x8Yy5yZXNvbHZlV2l0aChlLGYpfX07d2hpbGUoYi0tKWE9 ZltiXSxhJiZkLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS50aGVu KGgoYiksYy5yZWplY3QpOi0tZztnfHxjLnJlc29sdmVXaXRoKGUsZil9ZWxzZSBj IT09YSYmYy5yZXNvbHZlKGEpO3JldHVybiBlfSx1YU1hdGNoOmZ1bmN0aW9uKGEp e2E9YS50b0xvd2VyQ2FzZSgpO3ZhciBiPXIuZXhlYyhhKXx8cy5leGVjKGEpfHx0 LmV4ZWMoYSl8fGEuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJnUuZXhlYyhhKXx8 W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9fSxz dWI6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJuIG5ldyBhLmZuLmlu aXQoYixjKX1kLmV4dGVuZCghMCxhLHRoaXMpLGEuc3VwZXJjbGFzcz10aGlzLGEu Zm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29uc3RydWN0b3I9YSxhLnN1YmNs YXNzPXRoaXMuc3ViY2xhc3MsYS5mbi5pbml0PWZ1bmN0aW9uIGMoYyxlKXtyZXR1 cm4gZSYmZSBpbnN0YW5jZW9mIGQmJiEoZSBpbnN0YW5jZW9mIGEpJiYoZT1hKGUp KSxkLmZuLmluaXQuY2FsbCh0aGlzLGMsZSxiKX0sYS5mbi5pbml0LnByb3RvdHlw ZT1hLmZuO3ZhciBiPWEoQyk7cmV0dXJuIGF9LGJyb3dzZXI6e319KSx5PWQuX0Rl ZmVycmVkKCksZC5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24g QXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEs Yil7SVsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSx3PWQudWFN YXRjaCh2KSx3LmJyb3dzZXImJihkLmJyb3dzZXJbdy5icm93c2VyXT0hMCxkLmJy b3dzZXIudmVyc2lvbj13LnZlcnNpb24pLGQuYnJvd3Nlci53ZWJraXQmJihkLmJy b3dzZXIuc2FmYXJpPSEwKSxIJiYoZC5pbkFycmF5PWZ1bmN0aW9uKGEsYil7cmV0 dXJuIEguY2FsbChiLGEpfSksaS50ZXN0KCLCoCIpJiYoaj0vXltcc1x4QTBdKy8s az0vW1xzXHhBMF0rJC8pLGc9ZChDKSxDLmFkZEV2ZW50TGlzdGVuZXI/QT1mdW5j dGlvbigpe0MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIs QSwhMSksZC5yZWFkeSgpfTpDLmF0dGFjaEV2ZW50JiYoQT1mdW5jdGlvbigpe0Mu cmVhZHlTdGF0ZT09PSJjb21wbGV0ZSImJihDLmRldGFjaEV2ZW50KCJvbnJlYWR5 c3RhdGVjaGFuZ2UiLEEpLGQucmVhZHkoKSl9KSxkfSgpOyhmdW5jdGlvbigpe0Qu c3VwcG9ydD17fTt2YXIgYj1DLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Iuc3R5bGUu ZGlzcGxheT0ibm9uZSIsYi5pbm5lckhUTUw9IiAgIDxsaW5rLz48dGFibGU+PC90 YWJsZT48YSBocmVmPScvYScgc3R5bGU9J2NvbG9yOnJlZDtmbG9hdDpsZWZ0O29w YWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iO3ZhciBj PWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxkPWIuZ2V0RWxlbWVudHNCeVRh Z05hbWUoImEiKVswXSxlPUMuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZj1lLmFw cGVuZENoaWxkKEMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGc9Yi5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTtpZihjJiZjLmxlbmd0aCYmZCl7RC5z dXBwb3J0PXtsZWFkaW5nV2hpdGVzcGFjZTpiLmZpcnN0Q2hpbGQubm9kZVR5cGU9 PT0zLHRib2R5OiFiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0 aCxodG1sU2VyaWFsaXplOiEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIp Lmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KGQuZ2V0QXR0cmlidXRlKCJzdHlsZSIp KSxocmVmTm9ybWFsaXplZDpkLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixv cGFjaXR5Oi9eMC41NSQvLnRlc3QoZC5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDoh IWQuc3R5bGUuY3NzRmxvYXQsY2hlY2tPbjpnLnZhbHVlPT09Im9uIixvcHRTZWxl Y3RlZDpmLnNlbGVjdGVkLGRlbGV0ZUV4cGFuZG86ITAsb3B0RGlzYWJsZWQ6ITEs Y2hlY2tDbG9uZTohMSxub0Nsb25lRXZlbnQ6ITAsbm9DbG9uZUNoZWNrZWQ6ITAs Ym94TW9kZWw6bnVsbCxpbmxpbmVCbG9ja05lZWRzTGF5b3V0OiExLHNocmlua1dy YXBCbG9ja3M6ITEscmVsaWFibGVIaWRkZW5PZmZzZXRzOiEwfSxnLmNoZWNrZWQ9 ITAsRC5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkPWcuY2xvbmVOb2RlKCEwKS5jaGVj a2VkLGUuZGlzYWJsZWQ9ITAsRC5zdXBwb3J0Lm9wdERpc2FibGVkPSFmLmRpc2Fi bGVkO3ZhciBoPW51bGw7RC5zdXBwb3J0LnNjcmlwdEV2YWw9ZnVuY3Rpb24oKXtp ZihoPT09bnVsbCl7dmFyIGI9Qy5kb2N1bWVudEVsZW1lbnQsYz1DLmNyZWF0ZUVs ZW1lbnQoInNjcmlwdCIpLGQ9InNjcmlwdCIrRC5ub3coKTt0cnl7Yy5hcHBlbmRD aGlsZChDLmNyZWF0ZVRleHROb2RlKCJ3aW5kb3cuIitkKyI9MTsiKSl9Y2F0Y2go ZSl7fWIuaW5zZXJ0QmVmb3JlKGMsYi5maXJzdENoaWxkKSxhW2RdPyhoPSEwLGRl bGV0ZSBhW2RdKTpoPSExLGIucmVtb3ZlQ2hpbGQoYyksYj1jPWQ9bnVsbH1yZXR1 cm4gaH07dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goaSl7RC5zdXBwb3J0LmRlbGV0 ZUV4cGFuZG89ITF9IWIuYWRkRXZlbnRMaXN0ZW5lciYmYi5hdHRhY2hFdmVudCYm Yi5maXJlRXZlbnQmJihiLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiBs KCl7RC5zdXBwb3J0Lm5vQ2xvbmVFdmVudD0hMSxiLmRldGFjaEV2ZW50KCJvbmNs aWNrIixsKX0pLGIuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSks Yj1DLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuaW5uZXJIVE1MPSI8aW5wdXQgdHlw ZT0ncmFkaW8nIG5hbWU9J3JhZGlvdGVzdCcgY2hlY2tlZD0nY2hlY2tlZCcvPiI7 dmFyIGo9Qy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7ai5hcHBlbmRDaGlsZChi LmZpcnN0Q2hpbGQpLEQuc3VwcG9ydC5jaGVja0Nsb25lPWouY2xvbmVOb2RlKCEw KS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLEQoZnVuY3Rpb24oKXt2 YXIgYT1DLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGI9Qy5nZXRFbGVtZW50c0J5VGFn TmFtZSgiYm9keSIpWzBdO2lmKGIpe2Euc3R5bGUud2lkdGg9YS5zdHlsZS5wYWRk aW5nTGVmdD0iMXB4IixiLmFwcGVuZENoaWxkKGEpLEQuYm94TW9kZWw9RC5zdXBw b3J0LmJveE1vZGVsPWEub2Zmc2V0V2lkdGg9PT0yLCJ6b29tImluIGEuc3R5bGUm JihhLnN0eWxlLmRpc3BsYXk9ImlubGluZSIsYS5zdHlsZS56b29tPTEsRC5zdXBw b3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9YS5vZmZzZXRXaWR0aD09PTIsYS5z dHlsZS5kaXNwbGF5PSIiLGEuaW5uZXJIVE1MPSI8ZGl2IHN0eWxlPSd3aWR0aDo0 cHg7Jz48L2Rpdj4iLEQuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzPWEub2Zmc2V0 V2lkdGghPT0yKSxhLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQgc3R5bGU9J3Bh ZGRpbmc6MDtib3JkZXI6MDtkaXNwbGF5Om5vbmUnPjwvdGQ+PHRkPnQ8L3RkPjwv dHI+PC90YWJsZT4iO3ZhciBjPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7 RC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1jWzBdLm9mZnNldEhlaWdo dD09PTAsY1swXS5zdHlsZS5kaXNwbGF5PSIiLGNbMV0uc3R5bGUuZGlzcGxheT0i bm9uZSIsRC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1ELnN1cHBvcnQu cmVsaWFibGVIaWRkZW5PZmZzZXRzJiZjWzBdLm9mZnNldEhlaWdodD09PTAsYS5p bm5lckhUTUw9IiIsYi5yZW1vdmVDaGlsZChhKS5zdHlsZS5kaXNwbGF5PSJub25l IixhPWM9bnVsbH19KTt2YXIgaz1mdW5jdGlvbihhKXt2YXIgYj1DLmNyZWF0ZUVs ZW1lbnQoImRpdiIpO2E9Im9uIithO2lmKCFiLmF0dGFjaEV2ZW50KXJldHVybiEw O3ZhciBjPWEgaW4gYjtyZXR1cm4gY3x8KGIuc2V0QXR0cmlidXRlKGEsInJldHVy bjsiKSxjPXR5cGVvZiBiW2FdPT0iZnVuY3Rpb24iKSxiPW51bGwsY307RC5zdXBw b3J0LnN1Ym1pdEJ1YmJsZXM9aygic3VibWl0IiksRC5zdXBwb3J0LmNoYW5nZUJ1 YmJsZXM9aygiY2hhbmdlIiksYj1jPWQ9bnVsbH19KSgpO3ZhciBFPS9eKD86XHsu Klx9fFxbLipcXSkkLztELmV4dGVuZCh7Y2FjaGU6e30sdXVpZDowLGV4cGFuZG86 ImpRdWVyeSIrKEQuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xE L2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1B RTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpm dW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP0QuY2FjaGVbYVtELmV4cGFu ZG9dXTphW0QuZXhwYW5kb10sISFhJiYhQShhKX0sZGF0YTpmdW5jdGlvbihhLGMs ZCxlKXtpZihELmFjY2VwdERhdGEoYSkpe3ZhciBmPUQuZXhwYW5kbyxnPXR5cGVv ZiBjPT0ic3RyaW5nIixoLGk9YS5ub2RlVHlwZSxqPWk/RC5jYWNoZTphLGs9aT9h W0QuZXhwYW5kb106YVtELmV4cGFuZG9dJiZELmV4cGFuZG87aWYoKCFrfHxlJiZr JiYhaltrXVtmXSkmJmcmJmQ9PT1iKXJldHVybjtrfHwoaT9hW0QuZXhwYW5kb109 az0rK0QudXVpZDprPUQuZXhwYW5kbyksaltrXXx8KGpba109e30saXx8KGpba10u dG9KU09OPUQubm9vcCkpO2lmKHR5cGVvZiBjPT0ib2JqZWN0Inx8dHlwZW9mIGM9 PSJmdW5jdGlvbiIpZT9qW2tdW2ZdPUQuZXh0ZW5kKGpba11bZl0sYyk6altrXT1E LmV4dGVuZChqW2tdLGMpO3JldHVybiBoPWpba10sZSYmKGhbZl18fChoW2ZdPXt9 KSxoPWhbZl0pLGQhPT1iJiYoaFtjXT1kKSxjPT09ImV2ZW50cyImJiFoW2NdP2hb Zl0mJmhbZl0uZXZlbnRzOmc/aFtjXTpofX0scmVtb3ZlRGF0YTpmdW5jdGlvbihi LGMsZCl7aWYoRC5hY2NlcHREYXRhKGIpKXt2YXIgZT1ELmV4cGFuZG8sZj1iLm5v ZGVUeXBlLGc9Zj9ELmNhY2hlOmIsaD1mP2JbRC5leHBhbmRvXTpELmV4cGFuZG87 aWYoIWdbaF0pcmV0dXJuO2lmKGMpe3ZhciBpPWQ/Z1toXVtlXTpnW2hdO2lmKGkp e2RlbGV0ZSBpW2NdO2lmKCFBKGkpKXJldHVybn19aWYoZCl7ZGVsZXRlIGdbaF1b ZV07aWYoIUEoZ1toXSkpcmV0dXJufXZhciBqPWdbaF1bZV07RC5zdXBwb3J0LmRl bGV0ZUV4cGFuZG98fGchPWE/ZGVsZXRlIGdbaF06Z1toXT1udWxsLGo/KGdbaF09 e30sZnx8KGdbaF0udG9KU09OPUQubm9vcCksZ1toXVtlXT1qKTpmJiYoRC5zdXBw b3J0LmRlbGV0ZUV4cGFuZG8/ZGVsZXRlIGJbRC5leHBhbmRvXTpiLnJlbW92ZUF0 dHJpYnV0ZT9iLnJlbW92ZUF0dHJpYnV0ZShELmV4cGFuZG8pOmJbRC5leHBhbmRv XT1udWxsKX19LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gRC5kYXRhKGEs YixjLCEwKX0sYWNjZXB0RGF0YTpmdW5jdGlvbihhKXtpZihhLm5vZGVOYW1lKXt2 YXIgYj1ELm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKGIpcmV0 dXJuIGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9cmV0dXJu ITB9fSksRC5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxjKXt2YXIgZD1udWxs O2lmKHR5cGVvZiBhPT0idW5kZWZpbmVkIil7aWYodGhpcy5sZW5ndGgpe2Q9RC5k YXRhKHRoaXNbMF0pO2lmKHRoaXNbMF0ubm9kZVR5cGU9PT0xKXt2YXIgZT10aGlz WzBdLmF0dHJpYnV0ZXMsZjtmb3IodmFyIGc9MCxoPWUubGVuZ3RoO2c8aDtnKysp Zj1lW2ddLm5hbWUsZi5pbmRleE9mKCJkYXRhLSIpPT09MCYmKGY9Zi5zdWJzdHIo NSksQih0aGlzWzBdLGYsZFtmXSkpfX1yZXR1cm4gZH1pZih0eXBlb2YgYT09Im9i amVjdCIpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0QuZGF0YSh0aGlzLGEp fSk7dmFyIGk9YS5zcGxpdCgiLiIpO3JldHVybiBpWzFdPWlbMV0/Ii4iK2lbMV06 IiIsYz09PWI/KGQ9dGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIraVsxXSsi ISIsW2lbMF1dKSxkPT09YiYmdGhpcy5sZW5ndGgmJihkPUQuZGF0YSh0aGlzWzBd LGEpLGQ9Qih0aGlzWzBdLGEsZCkpLGQ9PT1iJiZpWzFdP3RoaXMuZGF0YShpWzBd KTpkKTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1EKHRoaXMpLGQ9W2lbMF0s Y107Yi50cmlnZ2VySGFuZGxlcigic2V0RGF0YSIraVsxXSsiISIsZCksRC5kYXRh KHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitpWzFdKyIh IixkKX0pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24oKXtELnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLEQuZXh0ZW5kKHtx dWV1ZTpmdW5jdGlvbihhLGIsYyl7aWYoYSl7Yj0oYnx8ImZ4IikrInF1ZXVlIjt2 YXIgZD1ELl9kYXRhKGEsYik7cmV0dXJuIGM/KCFkfHxELmlzQXJyYXkoYyk/ZD1E Ll9kYXRhKGEsYixELm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpLGQpOmR8fFtdfX0s ZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1ELnF1ZXVlKGEs YiksZD1jLnNoaWZ0KCk7ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxk JiYoYj09PSJmeCImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGQuY2FsbChhLGZ1 bmN0aW9uKCl7RC5kZXF1ZXVlKGEsYil9KSksYy5sZW5ndGh8fEQucmVtb3ZlRGF0 YShhLGIrInF1ZXVlIiwhMCl9fSksRC5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9u KGEsYyl7cmV0dXJuIHR5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPSJmeCIpLGM9 PT1iP0QucXVldWUodGhpc1swXSxhKTp0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFy IGQ9RC5xdWV1ZSh0aGlzLGEsYyk7YT09PSJmeCImJmRbMF0hPT0iaW5wcm9ncmVz cyImJkQuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0QuZGVxdWV1ZSh0aGlzLGEpfSl9LGRl bGF5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9RC5meD9ELmZ4LnNwZWVkc1thXXx8 YTphLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oKXt2YXIgYz10aGlz O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtELmRlcXVldWUoYyxiKX0sYSl9KX0sY2xl YXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtd KX19KTt2YXIgRj0vW1xuXHRccl0vZyxHPS9ccysvLEg9L1xyL2csST0vXig/Omhy ZWZ8c3JjfHN0eWxlKSQvLEo9L14oPzpidXR0b258aW5wdXQpJC9pLEs9L14oPzpi dXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksTD0vXmEoPzpy ZWEpPyQvaSxNPS9eKD86cmFkaW98Y2hlY2tib3gpJC9pO0QucHJvcHM9eyJmb3Ii OiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLHJlYWRvbmx5OiJyZWFkT25s eSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2lu ZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdGFiaW5kZXg6 InRhYkluZGV4Iix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9y ZGVyIn0sRC5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRC5h Y2Nlc3ModGhpcyxhLGIsITAsRC5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihh LGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtELmF0dHIodGhpcyxhLCIi KSx0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5yZW1vdmVBdHRyaWJ1dGUoYSl9KX0s YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoRC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0 aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9RCh0aGlzKTtjLmFkZENsYXNzKGEu Y2FsbCh0aGlzLGIsYy5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2YgYT09 InN0cmluZyIpe3ZhciBiPShhfHwiIikuc3BsaXQoRyk7Zm9yKHZhciBjPTAsZD10 aGlzLmxlbmd0aDtjPGQ7YysrKXt2YXIgZT10aGlzW2NdO2lmKGUubm9kZVR5cGU9 PT0xKWlmKGUuY2xhc3NOYW1lKXt2YXIgZj0iICIrZS5jbGFzc05hbWUrIiAiLGc9 ZS5jbGFzc05hbWU7Zm9yKHZhciBoPTAsaT1iLmxlbmd0aDtoPGk7aCsrKWYuaW5k ZXhPZigiICIrYltoXSsiICIpPDAmJihnKz0iICIrYltoXSk7ZS5jbGFzc05hbWU9 RC50cmltKGcpfWVsc2UgZS5jbGFzc05hbWU9YX19cmV0dXJuIHRoaXN9LHJlbW92 ZUNsYXNzOmZ1bmN0aW9uKGEpe2lmKEQuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhp cy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPUQodGhpcyk7Yy5yZW1vdmVDbGFzcyhh LmNhbGwodGhpcyxiLGMuYXR0cigiY2xhc3MiKSkpfSk7aWYoYSYmdHlwZW9mIGE9 PSJzdHJpbmcifHxhPT09Yil7dmFyIGM9KGF8fCIiKS5zcGxpdChHKTtmb3IodmFy IGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe3ZhciBmPXRoaXNbZF07aWYoZi5u b2RlVHlwZT09PTEmJmYuY2xhc3NOYW1lKWlmKGEpe3ZhciBnPSgiICIrZi5jbGFz c05hbWUrIiAiKS5yZXBsYWNlKEYsIiAiKTtmb3IodmFyIGg9MCxpPWMubGVuZ3Ro O2g8aTtoKyspZz1nLnJlcGxhY2UoIiAiK2NbaF0rIiAiLCIgIik7Zi5jbGFzc05h bWU9RC50cmltKGcpfWVsc2UgZi5jbGFzc05hbWU9IiJ9fXJldHVybiB0aGlzfSx0 b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLGQ9dHlwZW9m IGI9PSJib29sZWFuIjtyZXR1cm4gRC5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChm dW5jdGlvbihjKXt2YXIgZD1EKHRoaXMpO2QudG9nZ2xlQ2xhc3MoYS5jYWxsKHRo aXMsYyxkLmF0dHIoImNsYXNzIiksYiksYil9KTp0aGlzLmVhY2goZnVuY3Rpb24o KXtpZihjPT09InN0cmluZyIpe3ZhciBlLGY9MCxnPUQodGhpcyksaD1iLGk9YS5z cGxpdChHKTt3aGlsZShlPWlbZisrXSloPWQ/aDohZy5oYXNDbGFzcyhlKSxnW2g/ ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZp bmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmRC5fZGF0YSh0aGlz LCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9 dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpELl9kYXRhKHRoaXMsIl9fY2xhc3NO YW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGI9IiAiK2Er IiAiO2Zvcih2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKylpZigoIiAiK3Ro aXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShGLCIgIikuaW5kZXhPZihiKT4t MSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGEpe2lmKCFhcmd1bWVu dHMubGVuZ3RoKXt2YXIgYz10aGlzWzBdO2lmKGMpe2lmKEQubm9kZU5hbWUoYywi b3B0aW9uIikpe3ZhciBkPWMuYXR0cmlidXRlcy52YWx1ZTtyZXR1cm4hZHx8ZC5z cGVjaWZpZWQ/Yy52YWx1ZTpjLnRleHR9aWYoRC5ub2RlTmFtZShjLCJzZWxlY3Qi KSl7dmFyIGU9Yy5zZWxlY3RlZEluZGV4LGY9W10sZz1jLm9wdGlvbnMsaD1jLnR5 cGU9PT0ic2VsZWN0LW9uZSI7aWYoZTwwKXJldHVybiBudWxsO2Zvcih2YXIgaT1o P2U6MCxqPWg/ZSsxOmcubGVuZ3RoO2k8ajtpKyspe3ZhciBrPWdbaV07aWYoay5z ZWxlY3RlZCYmKEQuc3VwcG9ydC5vcHREaXNhYmxlZD8hay5kaXNhYmxlZDprLmdl dEF0dHJpYnV0ZSgiZGlzYWJsZWQiKT09PW51bGwpJiYoIWsucGFyZW50Tm9kZS5k aXNhYmxlZHx8IUQubm9kZU5hbWUoay5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7 YT1EKGspLnZhbCgpO2lmKGgpcmV0dXJuIGE7Zi5wdXNoKGEpfX1yZXR1cm4gaCYm IWYubGVuZ3RoJiZnLmxlbmd0aD9EKGdbZV0pLnZhbCgpOmZ9cmV0dXJuIE0udGVz dChjLnR5cGUpJiYhRC5zdXBwb3J0LmNoZWNrT24/Yy5nZXRBdHRyaWJ1dGUoInZh bHVlIik9PT1udWxsPyJvbiI6Yy52YWx1ZTooYy52YWx1ZXx8IiIpLnJlcGxhY2Uo SCwiIil9cmV0dXJuIGJ9dmFyIGw9RC5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oYil7dmFyIGM9RCh0aGlzKSxkPWE7aWYodGhpcy5ub2Rl VHlwZT09PTEpe2wmJihkPWEuY2FsbCh0aGlzLGIsYy52YWwoKSkpLGQ9PW51bGw/ ZD0iIjp0eXBlb2YgZD09Im51bWJlciI/ZCs9IiI6RC5pc0FycmF5KGQpJiYoZD1E Lm1hcChkLGZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOmErIiJ9KSk7aWYo RC5pc0FycmF5KGQpJiZNLnRlc3QodGhpcy50eXBlKSl0aGlzLmNoZWNrZWQ9RC5p bkFycmF5KGMudmFsKCksZCk+PTA7ZWxzZSBpZihELm5vZGVOYW1lKHRoaXMsInNl bGVjdCIpKXt2YXIgZT1ELm1ha2VBcnJheShkKTtEKCJvcHRpb24iLHRoaXMpLmVh Y2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPUQuaW5BcnJheShEKHRoaXMpLnZh bCgpLGUpPj0wfSksZS5sZW5ndGh8fCh0aGlzLnNlbGVjdGVkSW5kZXg9LTEpfWVs c2UgdGhpcy52YWx1ZT1kfX0pfX0pLEQuZXh0ZW5kKHthdHRyRm46e3ZhbDohMCxj c3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEw LG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXtpZighYXx8YS5ub2Rl VHlwZT09PTN8fGEubm9kZVR5cGU9PT04fHxhLm5vZGVUeXBlPT09MilyZXR1cm4g YjtpZihlJiZjIGluIEQuYXR0ckZuKXJldHVybiBEKGEpW2NdKGQpO3ZhciBmPWEu bm9kZVR5cGUhPT0xfHwhRC5pc1hNTERvYyhhKSxnPWQhPT1iO2M9ZiYmRC5wcm9w c1tjXXx8YztpZihhLm5vZGVUeXBlPT09MSl7dmFyIGg9SS50ZXN0KGMpO2lmKGM9 PT0ic2VsZWN0ZWQiJiYhRC5zdXBwb3J0Lm9wdFNlbGVjdGVkKXt2YXIgaT1hLnBh cmVudE5vZGU7aSYmKGkuc2VsZWN0ZWRJbmRleCxpLnBhcmVudE5vZGUmJmkucGFy ZW50Tm9kZS5zZWxlY3RlZEluZGV4KX1pZigoYyBpbiBhfHxhW2NdIT09YikmJmYm JiFoKXtnJiYoYz09PSJ0eXBlIiYmSi50ZXN0KGEubm9kZU5hbWUpJiZhLnBhcmVu dE5vZGUmJkQuZXJyb3IoInR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hhbmdlZCIp LGQ9PT1udWxsP2Eubm9kZVR5cGU9PT0xJiZhLnJlbW92ZUF0dHJpYnV0ZShjKTph W2NdPWQpO2lmKEQubm9kZU5hbWUoYSwiZm9ybSIpJiZhLmdldEF0dHJpYnV0ZU5v ZGUoYykpcmV0dXJuIGEuZ2V0QXR0cmlidXRlTm9kZShjKS5ub2RlVmFsdWU7aWYo Yz09PSJ0YWJJbmRleCIpe3ZhciBqPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiSW5k ZXgiKTtyZXR1cm4gaiYmai5zcGVjaWZpZWQ/ai52YWx1ZTpLLnRlc3QoYS5ub2Rl TmFtZSl8fEwudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6Yn1yZXR1cm4gYVtj XX1pZighRC5zdXBwb3J0LnN0eWxlJiZmJiZjPT09InN0eWxlIilyZXR1cm4gZyYm KGEuc3R5bGUuY3NzVGV4dD0iIitkKSxhLnN0eWxlLmNzc1RleHQ7ZyYmYS5zZXRB dHRyaWJ1dGUoYywiIitkKTtpZighYS5hdHRyaWJ1dGVzW2NdJiZhLmhhc0F0dHJp YnV0ZSYmIWEuaGFzQXR0cmlidXRlKGMpKXJldHVybiBiO3ZhciBrPSFELnN1cHBv cnQuaHJlZk5vcm1hbGl6ZWQmJmYmJmg/YS5nZXRBdHRyaWJ1dGUoYywyKTphLmdl dEF0dHJpYnV0ZShjKTtyZXR1cm4gaz09PW51bGw/YjprfXJldHVybiBnJiYoYVtj XT1kKSxhW2NdfX0pO3ZhciBOPS9cLiguKikkLyxPPS9eKD86dGV4dGFyZWF8aW5w dXR8c2VsZWN0KSQvaSxQPS9cLi9nLFE9LyAvZyxSPS9bXlx3XHMufGBdL2csUz1m dW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKFIsIlxcJCYiKX07RC5ldmVudD17 YWRkOmZ1bmN0aW9uKGMsZCxlLGYpe2lmKGMubm9kZVR5cGUhPT0zJiZjLm5vZGVU eXBlIT09OCl7dHJ5e0QuaXNXaW5kb3coYykmJmMhPT1hJiYhYy5mcmFtZUVsZW1l bnQmJihjPWEpfWNhdGNoKGcpe31pZihlPT09ITEpZT16O2Vsc2UgaWYoIWUpcmV0 dXJuO3ZhciBoLGk7ZS5oYW5kbGVyJiYoaD1lLGU9aC5oYW5kbGVyKSxlLmd1aWR8 fChlLmd1aWQ9RC5ndWlkKyspO3ZhciBqPUQuX2RhdGEoYyk7aWYoIWopcmV0dXJu O3ZhciBrPWouZXZlbnRzLGw9ai5oYW5kbGU7a3x8KGouZXZlbnRzPWs9e30pLGx8 fChqLmhhbmRsZT1sPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBEIT0idW5kZWZp bmVkIiYmIUQuZXZlbnQudHJpZ2dlcmVkP0QuZXZlbnQuaGFuZGxlLmFwcGx5KGwu ZWxlbSxhcmd1bWVudHMpOmJ9KSxsLmVsZW09YyxkPWQuc3BsaXQoIiAiKTt2YXIg bSxuPTAsbzt3aGlsZShtPWRbbisrXSl7aT1oP0QuZXh0ZW5kKHt9LGgpOntoYW5k bGVyOmUsZGF0YTpmfSxtLmluZGV4T2YoIi4iKT4tMT8obz1tLnNwbGl0KCIuIiks bT1vLnNoaWZ0KCksaS5uYW1lc3BhY2U9by5zbGljZSgwKS5zb3J0KCkuam9pbigi LiIpKToobz1bXSxpLm5hbWVzcGFjZT0iIiksaS50eXBlPW0saS5ndWlkfHwoaS5n dWlkPWUuZ3VpZCk7dmFyIHA9a1ttXSxxPUQuZXZlbnQuc3BlY2lhbFttXXx8e307 aWYoIXApe3A9a1ttXT1bXTtpZighcS5zZXR1cHx8cS5zZXR1cC5jYWxsKGMsZixv LGwpPT09ITEpYy5hZGRFdmVudExpc3RlbmVyP2MuYWRkRXZlbnRMaXN0ZW5lciht LGwsITEpOmMuYXR0YWNoRXZlbnQmJmMuYXR0YWNoRXZlbnQoIm9uIittLGwpfXEu YWRkJiYocS5hZGQuY2FsbChjLGkpLGkuaGFuZGxlci5ndWlkfHwoaS5oYW5kbGVy Lmd1aWQ9ZS5ndWlkKSkscC5wdXNoKGkpLEQuZXZlbnQuZ2xvYmFsW21dPSEwfWM9 bnVsbH19LGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoYS5u b2RlVHlwZSE9PTMmJmEubm9kZVR5cGUhPT04KXtkPT09ITEmJihkPXopO3ZhciBm LGcsaCxpLGo9MCxrLGwsbSxuLG8scCxxLHI9RC5oYXNEYXRhKGEpJiZELl9kYXRh KGEpLHM9ciYmci5ldmVudHM7aWYoIXJ8fCFzKXJldHVybjtjJiZjLnR5cGUmJihk PWMuaGFuZGxlcixjPWMudHlwZSk7aWYoIWN8fHR5cGVvZiBjPT0ic3RyaW5nIiYm Yy5jaGFyQXQoMCk9PT0iLiIpe2M9Y3x8IiI7Zm9yKGcgaW4gcylELmV2ZW50LnJl bW92ZShhLGcrYyk7cmV0dXJufWM9Yy5zcGxpdCgiICIpO3doaWxlKGc9Y1tqKytd KXtxPWcscD1udWxsLGs9Zy5pbmRleE9mKCIuIik8MCxsPVtdLGt8fChsPWcuc3Bs aXQoIi4iKSxnPWwuc2hpZnQoKSxtPW5ldyBSZWdFeHAoIihefFxcLikiK0QubWFw KGwuc2xpY2UoMCkuc29ydCgpLFMpLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxc LnwkKSIpKSxvPXNbZ107aWYoIW8pY29udGludWU7aWYoIWQpe2ZvcihpPTA7aTxv Lmxlbmd0aDtpKyspe3A9b1tpXTtpZihrfHxtLnRlc3QocC5uYW1lc3BhY2UpKUQu ZXZlbnQucmVtb3ZlKGEscSxwLmhhbmRsZXIsaSksby5zcGxpY2UoaS0tLDEpfWNv bnRpbnVlfW49RC5ldmVudC5zcGVjaWFsW2ddfHx7fTtmb3IoaT1lfHwwO2k8by5s ZW5ndGg7aSsrKXtwPW9baV07aWYoZC5ndWlkPT09cC5ndWlkKXtpZihrfHxtLnRl c3QocC5uYW1lc3BhY2UpKWU9PW51bGwmJm8uc3BsaWNlKGktLSwxKSxuLnJlbW92 ZSYmbi5yZW1vdmUuY2FsbChhLHApO2lmKGUhPW51bGwpYnJlYWt9fWlmKG8ubGVu Z3RoPT09MHx8ZSE9bnVsbCYmby5sZW5ndGg9PT0xKSghbi50ZWFyZG93bnx8bi50 ZWFyZG93bi5jYWxsKGEsbCk9PT0hMSkmJkQucmVtb3ZlRXZlbnQoYSxnLHIuaGFu ZGxlKSxmPW51bGwsZGVsZXRlIHNbZ119aWYoRC5pc0VtcHR5T2JqZWN0KHMpKXt2 YXIgdD1yLmhhbmRsZTt0JiYodC5lbGVtPW51bGwpLGRlbGV0ZSByLmV2ZW50cyxk ZWxldGUgci5oYW5kbGUsRC5pc0VtcHR5T2JqZWN0KHIpJiZELnJlbW92ZURhdGEo YSxiLCEwKX19fSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1hLnR5cGV8 fGEsZj1hcmd1bWVudHNbM107aWYoIWYpe2E9dHlwZW9mIGE9PSJvYmplY3QiP2Fb RC5leHBhbmRvXT9hOkQuZXh0ZW5kKEQuRXZlbnQoZSksYSk6RC5FdmVudChlKSxl LmluZGV4T2YoIiEiKT49MCYmKGEudHlwZT1lPWUuc2xpY2UoMCwtMSksYS5leGNs dXNpdmU9ITApLGR8fChhLnN0b3BQcm9wYWdhdGlvbigpLEQuZXZlbnQuZ2xvYmFs W2VdJiZELmVhY2goRC5jYWNoZSxmdW5jdGlvbigpe3ZhciBiPUQuZXhwYW5kbyxk PXRoaXNbYl07ZCYmZC5ldmVudHMmJmQuZXZlbnRzW2VdJiZELmV2ZW50LnRyaWdn ZXIoYSxjLGQuaGFuZGxlLmVsZW0pfSkpO2lmKCFkfHxkLm5vZGVUeXBlPT09M3x8 ZC5ub2RlVHlwZT09PTgpcmV0dXJuIGI7YS5yZXN1bHQ9YixhLnRhcmdldD1kLGM9 RC5tYWtlQXJyYXkoYyksYy51bnNoaWZ0KGEpfWEuY3VycmVudFRhcmdldD1kO3Zh ciBnPUQuX2RhdGEoZCwiaGFuZGxlIik7ZyYmZy5hcHBseShkLGMpO3ZhciBoPWQu cGFyZW50Tm9kZXx8ZC5vd25lckRvY3VtZW50O3RyeXtkJiZkLm5vZGVOYW1lJiZE Lm5vRGF0YVtkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxkWyJvbiIrZV0mJmRb Im9uIitlXS5hcHBseShkLGMpPT09ITEmJihhLnJlc3VsdD0hMSxhLnByZXZlbnRE ZWZhdWx0KCkpfWNhdGNoKGkpe31pZighYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgp JiZoKUQuZXZlbnQudHJpZ2dlcihhLGMsaCwhMCk7ZWxzZSBpZighYS5pc0RlZmF1 bHRQcmV2ZW50ZWQoKSl7dmFyIGosaz1hLnRhcmdldCxsPWUucmVwbGFjZShOLCIi KSxtPUQubm9kZU5hbWUoaywiYSIpJiZsPT09ImNsaWNrIixuPUQuZXZlbnQuc3Bl Y2lhbFtsXXx8e307aWYoKCFuLl9kZWZhdWx0fHxuLl9kZWZhdWx0LmNhbGwoZCxh KT09PSExKSYmIW0mJiEoayYmay5ub2RlTmFtZSYmRC5ub0RhdGFbay5ub2RlTmFt ZS50b0xvd2VyQ2FzZSgpXSkpe3RyeXtrW2xdJiYoaj1rWyJvbiIrbF0saiYmKGtb Im9uIitsXT1udWxsKSxELmV2ZW50LnRyaWdnZXJlZD0hMCxrW2xdKCkpfWNhdGNo KG8pe31qJiYoa1sib24iK2xdPWopLEQuZXZlbnQudHJpZ2dlcmVkPSExfX19LGhh bmRsZTpmdW5jdGlvbihjKXt2YXIgZCxlLGYsZyxoLGk9W10saj1ELm1ha2VBcnJh eShhcmd1bWVudHMpO2M9alswXT1ELmV2ZW50LmZpeChjfHxhLmV2ZW50KSxjLmN1 cnJlbnRUYXJnZXQ9dGhpcyxkPWMudHlwZS5pbmRleE9mKCIuIik8MCYmIWMuZXhj bHVzaXZlLGR8fChmPWMudHlwZS5zcGxpdCgiLiIpLGMudHlwZT1mLnNoaWZ0KCks aT1mLnNsaWNlKDApLnNvcnQoKSxnPW5ldyBSZWdFeHAoIihefFxcLikiK2kuam9p bigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLGMubmFtZXNwYWNlPWMubmFt ZXNwYWNlfHxpLmpvaW4oIi4iKSxoPUQuX2RhdGEodGhpcywiZXZlbnRzIiksZT0o aHx8e30pW2MudHlwZV07aWYoaCYmZSl7ZT1lLnNsaWNlKDApO2Zvcih2YXIgaz0w LGw9ZS5sZW5ndGg7azxsO2srKyl7dmFyIG09ZVtrXTtpZihkfHxnLnRlc3QobS5u YW1lc3BhY2UpKXtjLmhhbmRsZXI9bS5oYW5kbGVyLGMuZGF0YT1tLmRhdGEsYy5o YW5kbGVPYmo9bTt2YXIgbj1tLmhhbmRsZXIuYXBwbHkodGhpcyxqKTtuIT09YiYm KGMucmVzdWx0PW4sbj09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFBy b3BhZ2F0aW9uKCkpKTtpZihjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVk KCkpYnJlYWt9fX1yZXR1cm4gYy5yZXN1bHR9LHByb3BzOiJhbHRLZXkgYXR0ckNo YW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2Rl IGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRh aWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbGF5ZXJY IGxheWVyWSBtZXRhS2V5IG5ld1ZhbHVlIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBw YWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5Y IHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZp ZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oYSl7 aWYoYVtELmV4cGFuZG9dKXJldHVybiBhO3ZhciBjPWE7YT1ELkV2ZW50KGMpO2Zv cih2YXIgZD10aGlzLnByb3BzLmxlbmd0aCxlO2Q7KWU9dGhpcy5wcm9wc1stLWRd LGFbZV09Y1tlXTthLnRhcmdldHx8KGEudGFyZ2V0PWEuc3JjRWxlbWVudHx8Qyks YS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50 Tm9kZSksIWEucmVsYXRlZFRhcmdldCYmYS5mcm9tRWxlbWVudCYmKGEucmVsYXRl ZFRhcmdldD1hLmZyb21FbGVtZW50PT09YS50YXJnZXQ/YS50b0VsZW1lbnQ6YS5m cm9tRWxlbWVudCk7aWYoYS5wYWdlWD09bnVsbCYmYS5jbGllbnRYIT1udWxsKXt2 YXIgZj1DLmRvY3VtZW50RWxlbWVudCxnPUMuYm9keTthLnBhZ2VYPWEuY2xpZW50 WCsoZiYmZi5zY3JvbGxMZWZ0fHxnJiZnLnNjcm9sbExlZnR8fDApLShmJiZmLmNs aWVudExlZnR8fGcmJmcuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1hLmNsaWVudFkr KGYmJmYuc2Nyb2xsVG9wfHxnJiZnLnNjcm9sbFRvcHx8MCktKGYmJmYuY2xpZW50 VG9wfHxnJiZnLmNsaWVudFRvcHx8MCl9cmV0dXJuIGEud2hpY2g9PW51bGwmJihh LmNoYXJDb2RlIT1udWxsfHxhLmtleUNvZGUhPW51bGwpJiYoYS53aGljaD1hLgpj aGFyQ29kZSE9bnVsbD9hLmNoYXJDb2RlOmEua2V5Q29kZSksIWEubWV0YUtleSYm YS5jdHJsS2V5JiYoYS5tZXRhS2V5PWEuY3RybEtleSksIWEud2hpY2gmJmEuYnV0 dG9uIT09YiYmKGEud2hpY2g9YS5idXR0b24mMT8xOmEuYnV0dG9uJjI/MzphLmJ1 dHRvbiY0PzI6MCksYX0sZ3VpZDoxZTgscHJveHk6RC5wcm94eSxzcGVjaWFsOnty ZWFkeTp7c2V0dXA6RC5iaW5kUmVhZHksdGVhcmRvd246RC5ub29wfSxsaXZlOnth ZGQ6ZnVuY3Rpb24oYSl7RC5ldmVudC5hZGQodGhpcyx2KGEub3JpZ1R5cGUsYS5z ZWxlY3RvciksRC5leHRlbmQoe30sYSx7aGFuZGxlcjp3LGd1aWQ6YS5oYW5kbGVy Lmd1aWR9KSl9LHJlbW92ZTpmdW5jdGlvbihhKXtELmV2ZW50LnJlbW92ZSh0aGlz LHYoYS5vcmlnVHlwZSxhLnNlbGVjdG9yKSxhKX19LGJlZm9yZXVubG9hZDp7c2V0 dXA6ZnVuY3Rpb24oYSxiLGMpe0QuaXNXaW5kb3codGhpcykmJih0aGlzLm9uYmVm b3JldW5sb2FkPWMpfSx0ZWFyZG93bjpmdW5jdGlvbihhLGIpe3RoaXMub25iZWZv cmV1bmxvYWQ9PT1iJiYodGhpcy5vbmJlZm9yZXVubG9hZD1udWxsKX19fX0sRC5y ZW1vdmVFdmVudD1DLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMp e2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIs YywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2 ZW50KCJvbiIrYixjKX0sRC5FdmVudD1mdW5jdGlvbihhKXtpZighdGhpcy5wcmV2 ZW50RGVmYXVsdClyZXR1cm4gbmV3IEQuRXZlbnQoYSk7YSYmYS50eXBlPyh0aGlz Lm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0 UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8YS5yZXR1cm5WYWx1ZT09PSEx fHxhLmdldFByZXZlbnREZWZhdWx0JiZhLmdldFByZXZlbnREZWZhdWx0KCk/eTp6 KTp0aGlzLnR5cGU9YSx0aGlzLnRpbWVTdGFtcD1ELm5vdygpLHRoaXNbRC5leHBh bmRvXT0hMH0sRC5FdmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0 aW9uKCl7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9eTt2YXIgYT10aGlzLm9yaWdp bmFsRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgp OmEucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0 aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXk7dmFyIGE9dGhpcy5vcmlnaW5hbEV2 ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxh LmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5j dGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9eSx0aGlz LnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6eixpc1Byb3Bh Z2F0aW9uU3RvcHBlZDp6LGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOnp9 O3ZhciBUPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVsYXRlZFRhcmdldDt0cnl7aWYo YiE9PUMmJiFiLnBhcmVudE5vZGUpcmV0dXJuO3doaWxlKGImJmIhPT10aGlzKWI9 Yi5wYXJlbnROb2RlO2IhPT10aGlzJiYoYS50eXBlPWEuZGF0YSxELmV2ZW50Lmhh bmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfWNhdGNoKGMpe319LFU9ZnVuY3Rp b24oYSl7YS50eXBlPWEuZGF0YSxELmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFy Z3VtZW50cyl9O0QuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxl YXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7RC5ldmVudC5zcGVjaWFsW2Fd PXtzZXR1cDpmdW5jdGlvbihjKXtELmV2ZW50LmFkZCh0aGlzLGIsYyYmYy5zZWxl Y3Rvcj9VOlQsYSl9LHRlYXJkb3duOmZ1bmN0aW9uKGEpe0QuZXZlbnQucmVtb3Zl KHRoaXMsYixhJiZhLnNlbGVjdG9yP1U6VCl9fX0pLEQuc3VwcG9ydC5zdWJtaXRC dWJibGVzfHwoRC5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24o YSxiKXtpZih0aGlzLm5vZGVOYW1lJiZ0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNl KCkhPT0iZm9ybSIpRC5ldmVudC5hZGQodGhpcywiY2xpY2suc3BlY2lhbFN1Ym1p dCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1iLnR5cGU7KGM9PT0ic3Vi bWl0Inx8Yz09PSJpbWFnZSIpJiZEKGIpLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGgm JngoInN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfSksRC5ldmVudC5hZGQodGhpcywi a2V5cHJlc3Muc3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJn ZXQsYz1iLnR5cGU7KGM9PT0idGV4dCJ8fGM9PT0icGFzc3dvcmQiKSYmRChiKS5j bG9zZXN0KCJmb3JtIikubGVuZ3RoJiZhLmtleUNvZGU9PT0xMyYmeCgic3VibWl0 Iix0aGlzLGFyZ3VtZW50cyl9KTtlbHNlIHJldHVybiExfSx0ZWFyZG93bjpmdW5j dGlvbihhKXtELmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbFN1Ym1pdCIpfX0p O2lmKCFELnN1cHBvcnQuY2hhbmdlQnViYmxlcyl7dmFyIFYsVz1mdW5jdGlvbihh KXt2YXIgYj1hLnR5cGUsYz1hLnZhbHVlO3JldHVybiBiPT09InJhZGlvInx8Yj09 PSJjaGVja2JveCI/Yz1hLmNoZWNrZWQ6Yj09PSJzZWxlY3QtbXVsdGlwbGUiP2M9 YS5zZWxlY3RlZEluZGV4Pi0xP0QubWFwKGEub3B0aW9ucyxmdW5jdGlvbihhKXty ZXR1cm4gYS5zZWxlY3RlZH0pLmpvaW4oIi0iKToiIjphLm5vZGVOYW1lLnRvTG93 ZXJDYXNlKCk9PT0ic2VsZWN0IiYmKGM9YS5zZWxlY3RlZEluZGV4KSxjfSxYPWZ1 bmN0aW9uKGEpe3ZhciBjPWEudGFyZ2V0LGQsZTtpZihPLnRlc3QoYy5ub2RlTmFt ZSkmJiFjLnJlYWRPbmx5KXtkPUQuX2RhdGEoYywiX2NoYW5nZV9kYXRhIiksZT1X KGMpLChhLnR5cGUhPT0iZm9jdXNvdXQifHxjLnR5cGUhPT0icmFkaW8iKSYmRC5f ZGF0YShjLCJfY2hhbmdlX2RhdGEiLGUpO2lmKGQ9PT1ifHxlPT09ZClyZXR1cm47 aWYoZCE9bnVsbHx8ZSlhLnR5cGU9ImNoYW5nZSIsYS5saXZlRmlyZWQ9YixELmV2 ZW50LnRyaWdnZXIoYSxhcmd1bWVudHNbMV0sYyl9fTtELmV2ZW50LnNwZWNpYWwu Y2hhbmdlPXtmaWx0ZXJzOntmb2N1c291dDpYLGJlZm9yZWRlYWN0aXZhdGU6WCxj bGljazpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPWIudHlwZTsoYz09PSJy YWRpbyJ8fGM9PT0iY2hlY2tib3gifHxiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9 PT0ic2VsZWN0IikmJlguY2FsbCh0aGlzLGEpfSxrZXlkb3duOmZ1bmN0aW9uKGEp e3ZhciBiPWEudGFyZ2V0LGM9Yi50eXBlOyhhLmtleUNvZGU9PT0xMyYmYi5ub2Rl TmFtZS50b0xvd2VyQ2FzZSgpIT09InRleHRhcmVhInx8YS5rZXlDb2RlPT09MzIm JihjPT09ImNoZWNrYm94Inx8Yz09PSJyYWRpbyIpfHxjPT09InNlbGVjdC1tdWx0 aXBsZSIpJiZYLmNhbGwodGhpcyxhKX0sYmVmb3JlYWN0aXZhdGU6ZnVuY3Rpb24o YSl7dmFyIGI9YS50YXJnZXQ7RC5fZGF0YShiLCJfY2hhbmdlX2RhdGEiLFcoYikp fX0sc2V0dXA6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnR5cGU9PT0iZmlsZSIpcmV0 dXJuITE7Zm9yKHZhciBjIGluIFYpRC5ldmVudC5hZGQodGhpcyxjKyIuc3BlY2lh bENoYW5nZSIsVltjXSk7cmV0dXJuIE8udGVzdCh0aGlzLm5vZGVOYW1lKX0sdGVh cmRvd246ZnVuY3Rpb24oYSl7cmV0dXJuIEQuZXZlbnQucmVtb3ZlKHRoaXMsIi5z cGVjaWFsQ2hhbmdlIiksTy50ZXN0KHRoaXMubm9kZU5hbWUpfX0sVj1ELmV2ZW50 LnNwZWNpYWwuY2hhbmdlLmZpbHRlcnMsVi5mb2N1cz1WLmJlZm9yZWFjdGl2YXRl fUMuYWRkRXZlbnRMaXN0ZW5lciYmRC5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1 cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJu IGE9RC5ldmVudC5maXgoYSksYS50eXBlPWIsRC5ldmVudC5oYW5kbGUuY2FsbCh0 aGlzLGEpfUQuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt0aGlz LmFkZEV2ZW50TGlzdGVuZXIoYSxjLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt0 aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKX19fSksRC5lYWNoKFsiYmlu ZCIsIm9uZSJdLGZ1bmN0aW9uKGEsYyl7RC5mbltjXT1mdW5jdGlvbihhLGQsZSl7 aWYodHlwZW9mIGE9PSJvYmplY3QiKXtmb3IodmFyIGYgaW4gYSl0aGlzW2NdKGYs ZCxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKEQuaXNGdW5jdGlvbihkKXx8ZD09PSEx KWU9ZCxkPWI7dmFyIGc9Yz09PSJvbmUiP0QucHJveHkoZSxmdW5jdGlvbihhKXty ZXR1cm4gRCh0aGlzKS51bmJpbmQoYSxnKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRz KX0pOmU7aWYoYT09PSJ1bmxvYWQiJiZjIT09Im9uZSIpdGhpcy5vbmUoYSxkLGUp O2Vsc2UgZm9yKHZhciBoPTAsaT10aGlzLmxlbmd0aDtoPGk7aCsrKUQuZXZlbnQu YWRkKHRoaXNbaF0sYSxnLGQpO3JldHVybiB0aGlzfX0pLEQuZm4uZXh0ZW5kKHt1 bmJpbmQ6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYSE9Im9iamVjdCJ8fGEucHJl dmVudERlZmF1bHQpZm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKUQu ZXZlbnQucmVtb3ZlKHRoaXNbY10sYSxiKTtlbHNlIGZvcih2YXIgZSBpbiBhKXRo aXMudW5iaW5kKGUsYVtlXSk7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9u KGEsYixjLGQpe3JldHVybiB0aGlzLmxpdmUoYixjLGQsYSl9LHVuZGVsZWdhdGU6 ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD90aGlz LnVuYmluZCgibGl2ZSIpOnRoaXMuZGllKGIsbnVsbCxjLGEpfSx0cmlnZ2VyOmZ1 bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0QuZXZlbnQu dHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxi KXtpZih0aGlzWzBdKXt2YXIgYz1ELkV2ZW50KGEpO3JldHVybiBjLnByZXZlbnRE ZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSxELmV2ZW50LnRyaWdnZXIoYyxi LHRoaXNbMF0pLGMucmVzdWx0fX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFy Z3VtZW50cyxjPTE7d2hpbGUoYzxiLmxlbmd0aClELnByb3h5KGEsYltjKytdKTty ZXR1cm4gdGhpcy5jbGljayhELnByb3h5KGEsZnVuY3Rpb24oZCl7dmFyIGU9KEQu X2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklYztyZXR1cm4gRC5f ZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQsZSsxKSxkLnByZXZlbnREZWZh dWx0KCksYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfSkpfSxob3Zlcjpm dW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2 ZShifHxhKX19KTt2YXIgWT17Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0 Iixtb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In07 RC5lYWNoKFsibGl2ZSIsImRpZSJdLGZ1bmN0aW9uKGEsYyl7RC5mbltjXT1mdW5j dGlvbihhLGQsZSxmKXt2YXIgZyxoPTAsaSxqLGssbD1mfHx0aGlzLnNlbGVjdG9y LG09Zj90aGlzOkQodGhpcy5jb250ZXh0KTtpZih0eXBlb2YgYT09Im9iamVjdCIm JiFhLnByZXZlbnREZWZhdWx0KXtmb3IodmFyIG4gaW4gYSltW2NdKG4sZCxhW25d LGwpO3JldHVybiB0aGlzfUQuaXNGdW5jdGlvbihkKSYmKGU9ZCxkPWIpLGE9KGF8 fCIiKS5zcGxpdCgiICIpO3doaWxlKChnPWFbaCsrXSkhPW51bGwpe2k9Ti5leGVj KGcpLGo9IiIsaSYmKGo9aVswXSxnPWcucmVwbGFjZShOLCIiKSk7aWYoZz09PSJo b3ZlciIpe2EucHVzaCgibW91c2VlbnRlciIraiwibW91c2VsZWF2ZSIraik7Y29u dGludWV9az1nLGc9PT0iZm9jdXMifHxnPT09ImJsdXIiPyhhLnB1c2goWVtnXStq KSxnKz1qKTpnPShZW2ddfHxnKStqO2lmKGM9PT0ibGl2ZSIpZm9yKHZhciBvPTAs cD1tLmxlbmd0aDtvPHA7bysrKUQuZXZlbnQuYWRkKG1bb10sImxpdmUuIit2KGcs bCkse2RhdGE6ZCxzZWxlY3RvcjpsLGhhbmRsZXI6ZSxvcmlnVHlwZTpnLG9yaWdI YW5kbGVyOmUscHJlVHlwZTprfSk7ZWxzZSBtLnVuYmluZCgibGl2ZS4iK3YoZyxs KSxlKX1yZXR1cm4gdGhpc319KSxELmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBm b2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNr IG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQg bW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRv d24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxi KXtELmZuW2JdPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM9PW51bGwmJihjPWEsYT1u dWxsKSxhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5iaW5kKGIsYSxjKTp0aGlzLnRy aWdnZXIoYil9LEQuYXR0ckZuJiYoRC5hdHRyRm5bYl09ITApfSksZnVuY3Rpb24o KXtmdW5jdGlvbiBhKGEsYixjLGQsZSxmKXtmb3IodmFyIGc9MCxoPWQubGVuZ3Ro O2c8aDtnKyspe3ZhciBpPWRbZ107aWYoaSl7dmFyIGo9ITE7aT1pW2FdO3doaWxl KGkpe2lmKGkuc2l6Y2FjaGU9PT1jKXtqPWRbaS5zaXpzZXRdO2JyZWFrfWlmKGku bm9kZVR5cGU9PT0xKXtmfHwoaS5zaXpjYWNoZT1jLGkuc2l6c2V0PWcpO2lmKHR5 cGVvZiBiIT0ic3RyaW5nIil7aWYoaT09PWIpe2o9ITA7YnJlYWt9fWVsc2UgaWYo ay5maWx0ZXIoYixbaV0pLmxlbmd0aD4wKXtqPWk7YnJlYWt9fWk9aVthXX1kW2dd PWp9fX1mdW5jdGlvbiBjKGEsYixjLGQsZSxmKXtmb3IodmFyIGc9MCxoPWQubGVu Z3RoO2c8aDtnKyspe3ZhciBpPWRbZ107aWYoaSl7dmFyIGo9ITE7aT1pW2FdO3do aWxlKGkpe2lmKGkuc2l6Y2FjaGU9PT1jKXtqPWRbaS5zaXpzZXRdO2JyZWFrfWku bm9kZVR5cGU9PT0xJiYhZiYmKGkuc2l6Y2FjaGU9YyxpLnNpenNldD1nKTtpZihp Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iKXtqPWk7YnJlYWt9aT1pW2FdfWRb Z109an19fXZhciBkPS8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykrXCl8XFso PzpcW1teXFtcXV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykrXF18XFwu fFteID4rfiwoXFtcXF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzoufFxyfFxuKSop L2csZT0wLGY9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxnPSExLGg9ITAsaT0v XFwvZyxqPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe3JldHVybiBoPSExLDB9 KTt2YXIgaz1mdW5jdGlvbihhLGIsYyxlKXtjPWN8fFtdLGI9Ynx8Qzt2YXIgZz1i O2lmKGIubm9kZVR5cGUhPT0xJiZiLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZigh YXx8dHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiBjO3ZhciBoLGksaixuLG8scSxy LHMsdT0hMCx2PWsuaXNYTUwoYiksdz1bXSx4PWE7ZG97ZC5leGVjKCIiKSxoPWQu ZXhlYyh4KTtpZihoKXt4PWhbM10sdy5wdXNoKGhbMV0pO2lmKGhbMl0pe249aFsz XTticmVha319fXdoaWxlKGgpO2lmKHcubGVuZ3RoPjEmJm0uZXhlYyhhKSlpZih3 Lmxlbmd0aD09PTImJmwucmVsYXRpdmVbd1swXV0paT10KHdbMF0rd1sxXSxiKTtl bHNle2k9bC5yZWxhdGl2ZVt3WzBdXT9bYl06ayh3LnNoaWZ0KCksYik7d2hpbGUo dy5sZW5ndGgpYT13LnNoaWZ0KCksbC5yZWxhdGl2ZVthXSYmKGErPXcuc2hpZnQo KSksaT10KGEsaSl9ZWxzZXshZSYmdy5sZW5ndGg+MSYmYi5ub2RlVHlwZT09PTkm JiF2JiZsLm1hdGNoLklELnRlc3Qod1swXSkmJiFsLm1hdGNoLklELnRlc3Qod1t3 Lmxlbmd0aC0xXSkmJihvPWsuZmluZCh3LnNoaWZ0KCksYix2KSxiPW8uZXhwcj9r LmZpbHRlcihvLmV4cHIsby5zZXQpWzBdOm8uc2V0WzBdKTtpZihiKXtvPWU/e2V4 cHI6dy5wb3AoKSxzZXQ6cChlKX06ay5maW5kKHcucG9wKCksdy5sZW5ndGghPT0x fHx3WzBdIT09In4iJiZ3WzBdIT09IisifHwhYi5wYXJlbnROb2RlP2I6Yi5wYXJl bnROb2RlLHYpLGk9by5leHByP2suZmlsdGVyKG8uZXhwcixvLnNldCk6by5zZXQs dy5sZW5ndGg+MD9qPXAoaSk6dT0hMTt3aGlsZSh3Lmxlbmd0aClxPXcucG9wKCks cj1xLGwucmVsYXRpdmVbcV0/cj13LnBvcCgpOnE9IiIscj09bnVsbCYmKHI9Yiks bC5yZWxhdGl2ZVtxXShqLHIsdil9ZWxzZSBqPXc9W119anx8KGo9aSksanx8ay5l cnJvcihxfHxhKTtpZihmLmNhbGwoaik9PT0iW29iamVjdCBBcnJheV0iKWlmKHUp aWYoYiYmYi5ub2RlVHlwZT09PTEpZm9yKHM9MDtqW3NdIT1udWxsO3MrKylqW3Nd JiYoaltzXT09PSEwfHxqW3NdLm5vZGVUeXBlPT09MSYmay5jb250YWlucyhiLGpb c10pKSYmYy5wdXNoKGlbc10pO2Vsc2UgZm9yKHM9MDtqW3NdIT1udWxsO3MrKylq W3NdJiZqW3NdLm5vZGVUeXBlPT09MSYmYy5wdXNoKGlbc10pO2Vsc2UgYy5wdXNo LmFwcGx5KGMsaik7ZWxzZSBwKGosYyk7cmV0dXJuIG4mJihrKG4sZyxjLGUpLGsu dW5pcXVlU29ydChjKSksY307ay51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHIp e2c9aCxhLnNvcnQocik7aWYoZylmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylh W2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LGsubWF0Y2hl cz1mdW5jdGlvbihhLGIpe3JldHVybiBrKGEsbnVsbCxudWxsLGIpfSxrLm1hdGNo ZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBrKGIsbnVsbCxudWxsLFth XSkubGVuZ3RoPjB9LGsuZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoIWEp cmV0dXJuW107Zm9yKHZhciBlPTAsZj1sLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXt2 YXIgZyxoPWwub3JkZXJbZV07aWYoZz1sLmxlZnRNYXRjaFtoXS5leGVjKGEpKXt2 YXIgaj1nWzFdO2cuc3BsaWNlKDEsMSk7aWYoai5zdWJzdHIoai5sZW5ndGgtMSkh PT0iXFwiKXtnWzFdPShnWzFdfHwiIikucmVwbGFjZShpLCIiKSxkPWwuZmluZFto XShnLGIsYyk7aWYoZCE9bnVsbCl7YT1hLnJlcGxhY2UobC5tYXRjaFtoXSwiIik7 YnJlYWt9fX19cmV0dXJuIGR8fChkPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdO YW1lIT0idW5kZWZpbmVkIj9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6W10p LHtzZXQ6ZCxleHByOmF9fSxrLmZpbHRlcj1mdW5jdGlvbihhLGMsZCxlKXt2YXIg ZixnLGg9YSxpPVtdLGo9YyxtPWMmJmNbMF0mJmsuaXNYTUwoY1swXSk7d2hpbGUo YSYmYy5sZW5ndGgpe2Zvcih2YXIgbiBpbiBsLmZpbHRlcilpZigoZj1sLmxlZnRN YXRjaFtuXS5leGVjKGEpKSE9bnVsbCYmZlsyXSl7dmFyIG8scCxxPWwuZmlsdGVy W25dLHI9ZlsxXTtnPSExLGYuc3BsaWNlKDEsMSk7aWYoci5zdWJzdHIoci5sZW5n dGgtMSk9PT0iXFwiKWNvbnRpbnVlO2o9PT1pJiYoaT1bXSk7aWYobC5wcmVGaWx0 ZXJbbl0pe2Y9bC5wcmVGaWx0ZXJbbl0oZixqLGQsaSxlLG0pO2lmKGYpe2lmKGY9 PT0hMCljb250aW51ZX1lbHNlIGc9bz0hMH1pZihmKWZvcih2YXIgcz0wOyhwPWpb c10pIT1udWxsO3MrKylpZihwKXtvPXEocCxmLHMsaik7dmFyIHQ9ZV4hIW87ZCYm byE9bnVsbD90P2c9ITA6altzXT0hMTp0JiYoaS5wdXNoKHApLGc9ITApfWlmKG8h PT1iKXtkfHwoaj1pKSxhPWEucmVwbGFjZShsLm1hdGNoW25dLCIiKTtpZighZyly ZXR1cm5bXTticmVha319aWYoYT09PWgpaWYoZz09bnVsbClrLmVycm9yKGEpO2Vs c2UgYnJlYWs7aD1hfXJldHVybiBqfSxrLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93 IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYX07dmFy IGw9ay5zZWxlY3RvcnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6 e0lEOi8jKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxDTEFTUzovXC4o KD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLE5BTUU6L1xbbmFtZT1bJyJd KigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLEFUVFI6L1xb XHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMqKD86KFxTPz0pXHMq KD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikq KXwpfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKlwtXXxcXC4p KykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyoo ZXZlbnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1d XHMqXGQrKT8pKVxzKlwpKT8vLFBPUzovOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFz dHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteXC1dfCQpLyxQU0VVRE86Lzoo KD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChb XlwpXStcKXxbXlwoXCldKikrKVwyXCkpPy99LGxlZnRNYXRjaDp7fSxhdHRyTWFw OnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9yIn0sYXR0ckhhbmRs ZTp7aHJlZjpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYi KX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInR5cGUi KX19LHJlbGF0aXZlOnsiKyI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYj09 InN0cmluZyIsZD1jJiYhai50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50b0xvd2Vy Q2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylpZihoPWFb Zl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlwZSE9PTEp O2FbZl09ZXx8aCYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9ofHwhMTpo PT09Yn1lJiZrLmZpbHRlcihiLGEsITApfSwiPiI6ZnVuY3Rpb24oYSxiKXt2YXIg YyxkPXR5cGVvZiBiPT0ic3RyaW5nIixlPTAsZj1hLmxlbmd0aDtpZihkJiYhai50 ZXN0KGIpKXtiPWIudG9Mb3dlckNhc2UoKTtmb3IoO2U8ZjtlKyspe2M9YVtlXTtp ZihjKXt2YXIgZz1jLnBhcmVudE5vZGU7YVtlXT1nLm5vZGVOYW1lLnRvTG93ZXJD YXNlKCk9PT1iP2c6ITF9fX1lbHNle2Zvcig7ZTxmO2UrKyljPWFbZV0sYyYmKGFb ZV09ZD9jLnBhcmVudE5vZGU6Yy5wYXJlbnROb2RlPT09Yik7ZCYmay5maWx0ZXIo YixhLCEwKX19LCIiOmZ1bmN0aW9uKGIsZCxmKXt2YXIgZyxoPWUrKyxpPWE7dHlw ZW9mIGQ9PSJzdHJpbmciJiYhai50ZXN0KGQpJiYoZD1kLnRvTG93ZXJDYXNlKCks Zz1kLGk9YyksaSgicGFyZW50Tm9kZSIsZCxoLGIsZyxmKX0sIn4iOmZ1bmN0aW9u KGIsZCxmKXt2YXIgZyxoPWUrKyxpPWE7dHlwZW9mIGQ9PSJzdHJpbmciJiYhai50 ZXN0KGQpJiYoZD1kLnRvTG93ZXJDYXNlKCksZz1kLGk9YyksaSgicHJldmlvdXNT aWJsaW5nIixkLGgsYixnLGYpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oYSxiLGMpe2lm KHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT0idW5kZWZpbmVkIiYmIWMpe3ZhciBk PWIuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGQmJmQucGFyZW50Tm9kZT9b ZF06W119fSxOQU1FOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIuZ2V0RWxlbWVu dHNCeU5hbWUhPSJ1bmRlZmluZWQiKXt2YXIgYz1bXSxkPWIuZ2V0RWxlbWVudHNC eU5hbWUoYVsxXSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKWRbZV0u Z2V0QXR0cmlidXRlKCJuYW1lIik9PT1hWzFdJiZjLnB1c2goZFtlXSk7cmV0dXJu IGMubGVuZ3RoPT09MD9udWxsOmN9fSxUQUc6ZnVuY3Rpb24oYSxiKXtpZih0eXBl b2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCIpcmV0dXJuIGIu Z2V0RWxlbWVudHNCeVRhZ05hbWUoYVsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1 bmN0aW9uKGEsYixjLGQsZSxmKXthPSIgIithWzFdLnJlcGxhY2UoaSwiIikrIiAi O2lmKGYpcmV0dXJuIGE7Zm9yKHZhciBnPTAsaDsoaD1iW2ddKSE9bnVsbDtnKysp aCYmKGVeKGguY2xhc3NOYW1lJiYoIiAiK2guY2xhc3NOYW1lKyIgIikucmVwbGFj ZSgvW1x0XG5ccl0vZywiICIpLmluZGV4T2YoYSk+PTApP2N8fGQucHVzaChoKTpj JiYoYltnXT0hMSkpO3JldHVybiExfSxJRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsx XS5yZXBsYWNlKGksIiIpfSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVsxXS5y ZXBsYWNlKGksIiIpLnRvTG93ZXJDYXNlKCl9LENISUxEOmZ1bmN0aW9uKGEpe2lm KGFbMV09PT0ibnRoIil7YVsyXXx8ay5lcnJvcihhWzBdKSxhWzJdPWFbMl0ucmVw bGFjZSgvXlwrfFxzKi9nLCIiKTt2YXIgYj0vKC0/KShcZCopKD86bihbK1wtXT9c ZCopKT8vLmV4ZWMoYVsyXT09PSJldmVuIiYmIjJuInx8YVsyXT09PSJvZGQiJiYi Mm4rMSJ8fCEvXEQvLnRlc3QoYVsyXSkmJiIwbisiK2FbMl18fGFbMl0pO2FbMl09 YlsxXSsoYlsyXXx8MSktMCxhWzNdPWJbM10tMH1lbHNlIGFbMl0mJmsuZXJyb3Io YVswXSk7cmV0dXJuIGFbMF09ZSsrLGF9LEFUVFI6ZnVuY3Rpb24oYSxiLGMsZCxl LGYpe3ZhciBnPWFbMV09YVsxXS5yZXBsYWNlKGksIiIpO3JldHVybiFmJiZsLmF0 dHJNYXBbZ10mJihhWzFdPWwuYXR0ck1hcFtnXSksYVs0XT0oYVs0XXx8YVs1XXx8 IiIpLnJlcGxhY2UoaSwiIiksYVsyXT09PSJ+PSImJihhWzRdPSIgIithWzRdKyIg IiksYX0sUFNFVURPOmZ1bmN0aW9uKGEsYixjLGUsZil7aWYoYVsxXT09PSJub3Qi KWlmKChkLmV4ZWMoYVszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChhWzNd KSlhWzNdPWsoYVszXSxudWxsLG51bGwsYik7ZWxzZXt2YXIgZz1rLmZpbHRlcihh WzNdLGIsYywhMF5mKTtyZXR1cm4gY3x8ZS5wdXNoLmFwcGx5KGUsZyksITF9ZWxz ZSBpZihsLm1hdGNoLlBPUy50ZXN0KGFbMF0pfHxsLm1hdGNoLkNISUxELnRlc3Qo YVswXSkpcmV0dXJuITA7cmV0dXJuIGF9LFBPUzpmdW5jdGlvbihhKXtyZXR1cm4g YS51bnNoaWZ0KCEwKSxhfX0sZmlsdGVyczp7ZW5hYmxlZDpmdW5jdGlvbihhKXty ZXR1cm4gYS5kaXNhYmxlZD09PSExJiZhLnR5cGUhPT0iaGlkZGVuIn0sZGlzYWJs ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpm dW5jdGlvbihhKXtyZXR1cm4gYS5jaGVja2VkPT09ITB9LHNlbGVjdGVkOmZ1bmN0 aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3Rl ZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVy biEhYS5maXJzdENoaWxkfSxlbXB0eTpmdW5jdGlvbihhKXtyZXR1cm4hYS5maXJz dENoaWxkfSxoYXM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiEhayhjWzNdLGEpLmxl bmd0aH0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybi9oXGQvaS50ZXN0KGEubm9k ZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiJ0ZXh0Ij09PWEuZ2V0QXR0 cmlidXRlKCJ0eXBlIil9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiJyYWRpbyI9 PT1hLnR5cGV9LGNoZWNrYm94OmZ1bmN0aW9uKGEpe3JldHVybiJjaGVja2JveCI9 PT1hLnR5cGV9LGZpbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImZpbGUiPT09YS50eXBl fSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4icGFzc3dvcmQiPT09YS50eXBl fSxzdWJtaXQ6ZnVuY3Rpb24oYSl7cmV0dXJuInN1Ym1pdCI9PT1hLnR5cGV9LGlt YWdlOmZ1bmN0aW9uKGEpe3JldHVybiJpbWFnZSI9PT1hLnR5cGV9LHJlc2V0OmZ1 bmN0aW9uKGEpe3JldHVybiJyZXNldCI9PT1hLnR5cGV9LGJ1dHRvbjpmdW5jdGlv bihhKXtyZXR1cm4iYnV0dG9uIj09PWEudHlwZXx8YS5ub2RlTmFtZS50b0xvd2Vy Q2FzZSgpPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1 dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX19LHNl dEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0 OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpm dW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXty ZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10t MH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0 aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMp e3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxi LGMsZCl7dmFyIGU9YlsxXSxmPWwuZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEs YyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxh LmlubmVyVGV4dHx8ay5nZXRUZXh0KFthXSl8fCIiKS5pbmRleE9mKGJbM10pPj0w O2lmKGU9PT0ibm90Iil7dmFyIGc9YlszXTtmb3IodmFyIGg9MCxpPWcubGVuZ3Ro O2g8aTtoKyspaWYoZ1toXT09PWEpcmV0dXJuITE7cmV0dXJuITB9ay5lcnJvcihl KX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9YTtzd2l0Y2goYyl7 Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShkPWQucHJldmlvdXNTaWJsaW5n KWlmKGQubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGM9PT0iZmlyc3QiKXJldHVy biEwO2Q9YTtjYXNlImxhc3QiOndoaWxlKGQ9ZC5uZXh0U2libGluZylpZihkLm5v ZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6dmFyIGU9Ylsy XSxmPWJbM107aWYoZT09PTEmJmY9PT0wKXJldHVybiEwO3ZhciBnPWJbMF0saD1h LnBhcmVudE5vZGU7aWYoaCYmKGguc2l6Y2FjaGUhPT1nfHwhYS5ub2RlSW5kZXgp KXt2YXIgaT0wO2ZvcihkPWguZmlyc3RDaGlsZDtkO2Q9ZC5uZXh0U2libGluZylk Lm5vZGVUeXBlPT09MSYmKGQubm9kZUluZGV4PSsraSk7aC5zaXpjYWNoZT1nfXZh ciBqPWEubm9kZUluZGV4LWY7cmV0dXJuIGU9PT0wP2o9PT0wOmolZT09PTAmJmov ZT49MH19LElEOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZh LmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVy biBiPT09IioiJiZhLm5vZGVUeXBlPT09MXx8YS5ub2RlTmFtZS50b0xvd2VyQ2Fz ZSgpPT09Yn0sQ0xBU1M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4oIiAiKyhhLmNsYXNz TmFtZXx8YS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihiKT4t MX0sQVRUUjpmdW5jdGlvbihhLGIpe3ZhciBjPWJbMV0sZD1sLmF0dHJIYW5kbGVb Y10/bC5hdHRySGFuZGxlW2NdKGEpOmFbY10hPW51bGw/YVtjXTphLmdldEF0dHJp YnV0ZShjKSxlPWQrIiIsZj1iWzJdLGc9Yls0XTtyZXR1cm4gZD09bnVsbD9mPT09 IiE9IjpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09 In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6 Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxl bmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcu bGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxi LGMsZCl7dmFyIGU9YlsyXSxmPWwuc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBm KGEsYyxiLGQpfX19LG09bC5tYXRjaC5QT1Msbj1mdW5jdGlvbihhLGIpe3JldHVy biJcXCIrKGItMCsxKX07Zm9yKHZhciBvIGluIGwubWF0Y2gpbC5tYXRjaFtvXT1u ZXcgUmVnRXhwKGwubWF0Y2hbb10uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwo XSpcKSkvLnNvdXJjZSksbC5sZWZ0TWF0Y2hbb109bmV3IFJlZ0V4cCgvKF4oPzou fFxyfFxuKSo/KS8uc291cmNlK2wubWF0Y2hbb10uc291cmNlLnJlcGxhY2UoL1xc KFxkKykvZyxuKSk7dmFyIHA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1BcnJheS5w cm90b3R5cGUuc2xpY2UuY2FsbChhLDApLGI/KGIucHVzaC5hcHBseShiLGEpLGIp OmF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChDLmRvY3VtZW50RWxl bWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHEpe3A9ZnVuY3Rp b24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZi5jYWxsKGEpPT09IltvYmplY3Qg QXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYo dHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7Yzxl O2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2Nd KTtyZXR1cm4gZH19dmFyIHIscztDLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9j dW1lbnRQb3NpdGlvbj9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iPyhnPSEw LDApOiFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhYi5jb21wYXJlRG9jdW1l bnRQb3NpdGlvbj9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE6YS5jb21w YXJlRG9jdW1lbnRQb3NpdGlvbihiKSY0Py0xOjF9OihyPWZ1bmN0aW9uKGEsYil7 dmFyIGMsZCxlPVtdLGY9W10saD1hLnBhcmVudE5vZGUsaT1iLnBhcmVudE5vZGUs aj1oO2lmKGE9PT1iKXJldHVybiBnPSEwLDA7aWYoaD09PWkpcmV0dXJuIHMoYSxi KTtpZighaClyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlm dChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1q LnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8 YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gcyhlW2tdLGZba10pO3Jl dHVybiBrPT09Yz9zKGEsZltrXSwtMSk6cyhlW2tdLGIsMSl9LHM9ZnVuY3Rpb24o YSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hp bGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAx fSksay5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM7Zm9yKHZhciBkPTA7 YVtkXTtkKyspYz1hW2RdLGMubm9kZVR5cGU9PT0zfHxjLm5vZGVUeXBlPT09ND9i Kz1jLm5vZGVWYWx1ZTpjLm5vZGVUeXBlIT09OCYmKGIrPWsuZ2V0VGV4dChjLmNo aWxkTm9kZXMpKTtyZXR1cm4gYn0sZnVuY3Rpb24oKXt2YXIgYT1DLmNyZWF0ZUVs ZW1lbnQoImRpdiIpLGM9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZD1D LmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitjKyInLz4i LGQuaW5zZXJ0QmVmb3JlKGEsZC5maXJzdENoaWxkKSxDLmdldEVsZW1lbnRCeUlk KGMpJiYobC5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRF bGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRC eUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRy aWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp Lm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxsLmZpbHRlci5JRD1mdW5jdGlv bihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmlu ZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9 PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxkLnJlbW92ZUNoaWxkKGEpLGQ9YT1u dWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Qy5jcmVhdGVFbGVtZW50KCJkaXYiKTth LmFwcGVuZENoaWxkKEMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNC eVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKGwuZmluZC5UQUc9ZnVuY3Rpb24oYSxi KXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0i KiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9 PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9Ijxh IGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGls ZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0 cmlidXRlKCJocmVmIikhPT0iIyImJihsLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlv bihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgp LEMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1rLGI9Qy5jcmVh dGVFbGVtZW50KCJkaXYiKSxjPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAg Y2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVl cnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXtrPWZ1bmN0aW9uKGIs ZCxlLGYpe2Q9ZHx8QztpZighZiYmIWsuaXNYTUwoZCkpe3ZhciBnPS9eKFx3KyQp fF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGcmJihkLm5v ZGVUeXBlPT09MXx8ZC5ub2RlVHlwZT09PTkpKXtpZihnWzFdKXJldHVybiBwKGQu Z2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZSk7aWYoZ1syXSYmbC5maW5kLkNMQVNT JiZkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHAoZC5nZXRFbGVtZW50 c0J5Q2xhc3NOYW1lKGdbMl0pLGUpfWlmKGQubm9kZVR5cGU9PT05KXtpZihiPT09 ImJvZHkiJiZkLmJvZHkpcmV0dXJuIHAoW2QuYm9keV0sZSk7aWYoZyYmZ1szXSl7 dmFyIGg9ZC5nZXRFbGVtZW50QnlJZChnWzNdKTtpZighaHx8IWgucGFyZW50Tm9k ZSlyZXR1cm4gcChbXSxlKTtpZihoLmlkPT09Z1szXSlyZXR1cm4gcChbaF0sZSl9 dHJ5e3JldHVybiBwKGQucXVlcnlTZWxlY3RvckFsbChiKSxlKX1jYXRjaChpKXt9 fWVsc2UgaWYoZC5ub2RlVHlwZT09PTEmJmQubm9kZU5hbWUudG9Mb3dlckNhc2Uo KSE9PSJvYmplY3QiKXt2YXIgaj1kLG09ZC5nZXRBdHRyaWJ1dGUoImlkIiksbj1t fHxjLG89ZC5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO20/bj1uLnJl cGxhY2UoLycvZywiXFwkJiIpOmQuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmbyYm KGQ9ZC5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fG8pcmV0dXJuIHAoZC5xdWVyeVNl bGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxlKX1jYXRjaChyKXt9ZmluYWxs eXttfHxqLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZCxlLGYp fTtmb3IodmFyIGQgaW4gYSlrW2RdPWFbZF07Yj1udWxsfX0oKSxmdW5jdGlvbigp e3ZhciBhPUMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEu bW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5t c01hdGNoZXNTZWxlY3RvcixjPSExO3RyeXtiLmNhbGwoQy5kb2N1bWVudEVsZW1l bnQsIlt0ZXN0IT0nJ106c2l6emxlIil9Y2F0Y2goZCl7Yz0hMH1iJiYoay5tYXRj aGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxkKXtkPWQucmVwbGFjZSgvXD1ccyooW14n IlxdXSopXHMqXF0vZywiPSckMSddIik7aWYoIWsuaXNYTUwoYSkpdHJ5e2lmKGN8 fCFsLm1hdGNoLlBTRVVETy50ZXN0KGQpJiYhLyE9Ly50ZXN0KGQpKXJldHVybiBi LmNhbGwoYSxkKX1jYXRjaChlKXt9cmV0dXJuIGsoZCxudWxsLG51bGwsW2FdKS5s ZW5ndGg+MH0pfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Qy5jcmVhdGVFbGVtZW50KCJk aXYiKTthLmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2 IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKGEuZ2V0RWxlbWVudHNCeUNsYXNzTmFt ZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5s YXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05h bWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtsLm9yZGVyLnNwbGljZSgxLDAsIkNM QVNTIiksbC5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5n ZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIu Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxDLmRvY3Vt ZW50RWxlbWVudC5jb250YWlucz9rLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0 dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Qy5kb2N1 bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ay5jb250YWlucz1m dW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24o YikmMTYpfTprLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGsuaXNYTUw9 ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3Vt ZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIg dD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT0iIixmPWIubm9kZVR5cGU/W2Jd OmI7d2hpbGUoYz1sLm1hdGNoLlBTRVVETy5leGVjKGEpKWUrPWNbMF0sYT1hLnJl cGxhY2UobC5tYXRjaC5QU0VVRE8sIiIpO2E9bC5yZWxhdGl2ZVthXT9hKyIqIjph O2Zvcih2YXIgZz0wLGg9Zi5sZW5ndGg7ZzxoO2crKylrKGEsZltnXSxkKTtyZXR1 cm4gay5maWx0ZXIoZSxkKX07RC5maW5kPWssRC5leHByPWsuc2VsZWN0b3JzLEQu ZXhwclsiOiJdPUQuZXhwci5maWx0ZXJzLEQudW5pcXVlPWsudW5pcXVlU29ydCxE LnRleHQ9ay5nZXRUZXh0LEQuaXNYTUxEb2M9ay5pc1hNTCxELmNvbnRhaW5zPWsu Y29udGFpbnN9KCk7dmFyIFo9L1VudGlsJC8sJD0vXig/OnBhcmVudHN8cHJldlVu dGlsfHByZXZBbGwpLyxfPS8sLyxiYT0vXi5bXjojXFtcLixdKiQvLGJiPUFycmF5 LnByb3RvdHlwZS5zbGljZSxiYz1ELmV4cHIubWF0Y2guUE9TLGJkPXtjaGlsZHJl bjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O0QuZm4uZXh0ZW5kKHtm aW5kOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucHVzaFN0YWNrKCIiLCJmaW5kIixh KSxjPTA7Zm9yKHZhciBkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtjPWIubGVu Z3RoLEQuZmluZChhLHRoaXNbZF0sYik7aWYoZD4wKWZvcih2YXIgZj1jO2Y8Yi5s ZW5ndGg7ZisrKWZvcih2YXIgZz0wO2c8YztnKyspaWYoYltnXT09PWJbZl0pe2Iu c3BsaWNlKGYtLSwxKTticmVha319cmV0dXJuIGJ9LGhhczpmdW5jdGlvbihhKXt2 YXIgYj1EKGEpO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIg YT0wLGM9Yi5sZW5ndGg7YTxjO2ErKylpZihELmNvbnRhaW5zKHRoaXMsYlthXSkp cmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFj ayh0KHRoaXMsYSwhMSksIm5vdCIsYSl9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1 cm4gdGhpcy5wdXNoU3RhY2sodCh0aGlzLGEsITApLCJmaWx0ZXIiLGEpfSxpczpm dW5jdGlvbihhKXtyZXR1cm4hIWEmJkQuZmlsdGVyKGEsdGhpcykubGVuZ3RoPjB9 LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkLGUsZj10aGlzWzBdO2lm KEQuaXNBcnJheShhKSl7dmFyIGcsaCxpPXt9LGo9MTtpZihmJiZhLmxlbmd0aCl7 Zm9yKGQ9MCxlPWEubGVuZ3RoO2Q8ZTtkKyspaD1hW2RdLGlbaF18fChpW2hdPUQu ZXhwci5tYXRjaC5QT1MudGVzdChoKT9EKGgsYnx8dGhpcy5jb250ZXh0KTpoKTt3 aGlsZShmJiZmLm93bmVyRG9jdW1lbnQmJmYhPT1iKXtmb3IoaCBpbiBpKWc9aVto XSwoZy5qcXVlcnk/Zy5pbmRleChmKT4tMTpEKGYpLmlzKGcpKSYmYy5wdXNoKHtz ZWxlY3RvcjpoLGVsZW06ZixsZXZlbDpqfSk7Zj1mLnBhcmVudE5vZGUsaisrfX1y ZXR1cm4gY312YXIgaz1iYy50ZXN0KGEpP0QoYSxifHx0aGlzLmNvbnRleHQpOm51 bGw7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2Y9dGhpc1tkXTt3aGls ZShmKXtpZihrP2suaW5kZXgoZik+LTE6RC5maW5kLm1hdGNoZXNTZWxlY3Rvcihm LGEpKXtjLnB1c2goZik7YnJlYWt9Zj1mLnBhcmVudE5vZGU7aWYoIWZ8fCFmLm93 bmVyRG9jdW1lbnR8fGY9PT1iKWJyZWFrfX1yZXR1cm4gYz1jLmxlbmd0aD4xP0Qu dW5pcXVlKGMpOmMsdGhpcy5wdXNoU3RhY2soYywiY2xvc2VzdCIsYSl9LGluZGV4 OmZ1bmN0aW9uKGEpe3JldHVybiFhfHx0eXBlb2YgYT09InN0cmluZyI/RC5pbkFy cmF5KHRoaXNbMF0sYT9EKGEpOnRoaXMucGFyZW50KCkuY2hpbGRyZW4oKSk6RC5p bkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7 dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP0QoYSxiKTpELm1ha2VBcnJheShhKSxk PUQubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodShj WzBdKXx8dShkWzBdKT9kOkQudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigp e3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLEQuZWFjaCh7cGFy ZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5u b2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4g RC5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxi LGMpe3JldHVybiBELmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlv bihhKXtyZXR1cm4gRC5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0 aW9uKGEpe3JldHVybiBELm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0 QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBELmRpcihhLCJuZXh0U2libGluZyIpfSxw cmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBELmRpcihhLCJwcmV2aW91c1NpYmxp bmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gRC5kaXIoYSwi bmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVy biBELmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlv bihhKXtyZXR1cm4gRC5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEp fSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gRC5zaWJsaW5nKGEuZmlyc3RD aGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBELm5vZGVOYW1lKGEs ImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9j dW1lbnQ6RC5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7 RC5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPUQubWFwKHRoaXMsYixjKSxmPWJi LmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gWi50ZXN0KGEpfHwoZD1jKSxkJiZ0eXBl b2YgZD09InN0cmluZyImJihlPUQuZmlsdGVyKGQsZSkpLGU9dGhpcy5sZW5ndGg+ MSYmIWJkW2FdP0QudW5pcXVlKGUpOmUsKHRoaXMubGVuZ3RoPjF8fF8udGVzdChk KSkmJiQudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKGUs YSxmLmpvaW4oIiwiKSl9fSksRC5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihhLGIs Yyl7cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLGIubGVuZ3RoPT09MT9ELmZp bmQubWF0Y2hlc1NlbGVjdG9yKGJbMF0sYSk/W2JbMF1dOltdOkQuZmluZC5tYXRj aGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9W10sZj1hW2NdO3do aWxlKGYmJmYubm9kZVR5cGUhPT05JiYoZD09PWJ8fGYubm9kZVR5cGUhPT0xfHwh RChmKS5pcyhkKSkpZi5ub2RlVHlwZT09PTEmJmUucHVzaChmKSxmPWZbY107cmV0 dXJuIGV9LG50aDpmdW5jdGlvbihhLGIsYyxkKXtiPWJ8fDE7dmFyIGU9MDtmb3Io O2E7YT1hW2NdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2U9PT1iKWJyZWFrO3JldHVy biBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKDthO2E9YS5u ZXh0U2libGluZylhLm5vZGVUeXBlPT09MSYmYSE9PWImJmMucHVzaChhKTtyZXR1 cm4gY319KTt2YXIgYmU9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZyxiZj0v XlxzKy8sYmc9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlu a3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxiaD0vPChbXHc6XSsp LyxiaT0vPHRib2R5L2ksYmo9Lzx8JiM/XHcrOy8sYms9LzwoPzpzY3JpcHR8b2Jq ZWN0fGVtYmVkfG9wdGlvbnxzdHlsZSkvaSxibD0vY2hlY2tlZFxzKig/OltePV18 PVxzKi5jaGVja2VkLikvaSxibT17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxl PSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+ IiwiPC9maWVsZHNldD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0s dHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlsz LCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxj b2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xn cm91cD48L3RhYmxlPiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0sX2RlZmF1 bHQ6WzAsIiIsIiJdfTtibS5vcHRncm91cD1ibS5vcHRpb24sYm0udGJvZHk9Ym0u dGZvb3Q9Ym0uY29sZ3JvdXA9Ym0uY2FwdGlvbj1ibS50aGVhZCxibS50aD1ibS50 ZCxELnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJtLl9kZWZhdWx0PVsxLCJkaXY8 ZGl2PiIsIjwvZGl2PiJdKSxELmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXty ZXR1cm4gRC5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIg Yz1EKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTp0eXBl b2YgYSE9Im9iamVjdCImJmEhPT1iP3RoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNb MF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8QykuY3JlYXRlVGV4dE5vZGUoYSkp OkQudGV4dCh0aGlzKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihELmlzRnVuY3Rp b24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtEKHRoaXMpLndyYXBB bGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9RChhLHRoaXNb MF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50 Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2 YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVU eXBlPT09MSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1y ZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBELmlzRnVu Y3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe0QodGhpcykud3JhcElubmVy KGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPUQo dGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBw ZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbigpe0QodGhpcykud3JhcEFsbChhKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7RC5ub2RlTmFtZSh0 aGlzLCJib2R5Iil8fEQodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVz KX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5p cChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRo aXMuYXBwZW5kQ2hpbGQoYSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0 aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVU eXBlPT09MSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9 LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9k ZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7 dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSk7aWYoYXJndW1l bnRzLmxlbmd0aCl7dmFyIGE9RChhcmd1bWVudHNbMF0pO3JldHVybiBhLnB1c2gu YXBwbHkoYSx0aGlzLnRvQXJyYXkoKSksdGhpcy5wdXNoU3RhY2soYSwiYmVmb3Jl Iixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlz WzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEx LGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlz Lm5leHRTaWJsaW5nKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPXRoaXMu cHVzaFN0YWNrKHRoaXMsImFmdGVyIixhcmd1bWVudHMpO3JldHVybiBhLnB1c2gu YXBwbHkoYSxEKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKSxhfX0scmVtb3ZlOmZ1 bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZDsoZD10aGlzW2NdKSE9bnVsbDtjKysp aWYoIWF8fEQuZmlsdGVyKGEsW2RdKS5sZW5ndGgpIWImJmQubm9kZVR5cGU9PT0x JiYoRC5jbGVhbkRhdGEoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSxELmNs ZWFuRGF0YShbZF0pKSxkLnBhcmVudE5vZGUmJmQucGFyZW50Tm9kZS5yZW1vdmVD aGlsZChkKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGE9 MCxiOyhiPXRoaXNbYV0pIT1udWxsO2ErKyl7Yi5ub2RlVHlwZT09PTEmJkQuY2xl YW5EYXRhKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7d2hpbGUoYi5maXJz dENoaWxkKWIucmVtb3ZlQ2hpbGQoYi5maXJzdENoaWxkKX1yZXR1cm4gdGhpc30s Y2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1hPT1udWxsPyExOmEsYj1iPT1u dWxsP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBELmNsb25lKHRoaXMs YSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe2lmKGE9PT1iKXJldHVybiB0aGlzWzBd JiZ0aGlzWzBdLm5vZGVUeXBlPT09MT90aGlzWzBdLmlubmVySFRNTC5yZXBsYWNl KGJlLCIiKTpudWxsO2lmKHR5cGVvZiBhIT0ic3RyaW5nInx8YmsudGVzdChhKXx8 IUQuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmYmYudGVzdChhKXx8Ym1bKGJo LmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKUQuaXNGdW5jdGlv bihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9RCh0aGlzKTtjLmh0bWwo YS5jYWxsKHRoaXMsYixjLmh0bWwoKSkpfSk6dGhpcy5lbXB0eSgpLmFwcGVuZChh KTtlbHNle2E9YS5yZXBsYWNlKGJnLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKHZhciBj PTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXRoaXNbY10ubm9kZVR5cGU9PT0xJiYo RC5jbGVhbkRhdGEodGhpc1tjXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx0 aGlzW2NdLmlubmVySFRNTD1hKX1jYXRjaChlKXt0aGlzLmVtcHR5KCkuYXBwZW5k KGEpfX1yZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7cmV0dXJu IHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT9ELmlzRnVuY3Rpb24oYSk/dGhp cy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPUQodGhpcyksZD1jLmh0bWwoKTtjLnJl cGxhY2VXaXRoKGEuY2FsbCh0aGlzLGIsZCkpfSk6KHR5cGVvZiBhIT0ic3RyaW5n IiYmKGE9RChhKS5kZXRhY2goKSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9 dGhpcy5uZXh0U2libGluZyxjPXRoaXMucGFyZW50Tm9kZTtEKHRoaXMpLnJlbW92 ZSgpLGI/RChiKS5iZWZvcmUoYSk6RChjKS5hcHBlbmQoYSl9KSk6dGhpcy5wdXNo U3RhY2soRChELmlzRnVuY3Rpb24oYSk/YSgpOmEpLCJyZXBsYWNlV2l0aCIsYSl9 LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRv bU1hbmlwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxmLGcsaCxpPWFbMF0saj1bXTtp ZighRC5zdXBwb3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0 eXBlb2YgaT09InN0cmluZyImJmJsLnRlc3QoaSkpcmV0dXJuIHRoaXMuZWFjaChm dW5jdGlvbigpe0QodGhpcykuZG9tTWFuaXAoYSxjLGQsITApfSk7aWYoRC5pc0Z1 bmN0aW9uKGkpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGY9RCh0 aGlzKTthWzBdPWkuY2FsbCh0aGlzLGUsYz9mLmh0bWwoKTpiKSxmLmRvbU1hbmlw KGEsYyxkKX0pO2lmKHRoaXNbMF0pe2g9aSYmaS5wYXJlbnROb2RlLEQuc3VwcG9y dC5wYXJlbnROb2RlJiZoJiZoLm5vZGVUeXBlPT09MTEmJmguY2hpbGROb2Rlcy5s ZW5ndGg9PT10aGlzLmxlbmd0aD9lPXtmcmFnbWVudDpofTplPUQuYnVpbGRGcmFn bWVudChhLHRoaXMsaiksZz1lLmZyYWdtZW50LGcuY2hpbGROb2Rlcy5sZW5ndGg9 PT0xP2Y9Zz1nLmZpcnN0Q2hpbGQ6Zj1nLmZpcnN0Q2hpbGQ7aWYoZil7Yz1jJiZE Lm5vZGVOYW1lKGYsInRyIik7Zm9yKHZhciBrPTAsbD10aGlzLmxlbmd0aCxtPWwt MTtrPGw7aysrKWQuY2FsbChjP3ModGhpc1trXSxmKTp0aGlzW2tdLGUuY2FjaGVh YmxlfHxsPjEmJms8bT9ELmNsb25lKGcsITAsITApOmcpfWoubGVuZ3RoJiZELmVh Y2goaixvKX1yZXR1cm4gdGhpc319KSxELmJ1aWxkRnJhZ21lbnQ9ZnVuY3Rpb24o YSxiLGMpe3ZhciBkLGUsZixnPWImJmJbMF0/YlswXS5vd25lckRvY3VtZW50fHxi WzBdOkM7cmV0dXJuIGEubGVuZ3RoPT09MSYmdHlwZW9mIGFbMF09PSJzdHJpbmci JiZhWzBdLmxlbmd0aDw1MTImJmc9PT1DJiZhWzBdLmNoYXJBdCgwKT09PSI8IiYm IWJrLnRlc3QoYVswXSkmJihELnN1cHBvcnQuY2hlY2tDbG9uZXx8IWJsLnRlc3Qo YVswXSkpJiYoZT0hMCxmPUQuZnJhZ21lbnRzW2FbMF1dLGYmJmYhPT0xJiYoZD1m KSksZHx8KGQ9Zy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksRC5jbGVhbihhLGcs ZCxjKSksZSYmKEQuZnJhZ21lbnRzW2FbMF1dPWY/ZDoxKSx7ZnJhZ21lbnQ6ZCxj YWNoZWFibGU6ZX19LEQuZnJhZ21lbnRzPXt9LEQuZWFjaCh7YXBwZW5kVG86ImFw cGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIs aW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1 bmN0aW9uKGEsYil7RC5mblthXT1mdW5jdGlvbihjKXt2YXIgZD1bXSxlPUQoYyks Zj10aGlzLmxlbmd0aD09PTEmJnRoaXNbMF0ucGFyZW50Tm9kZTtpZihmJiZmLm5v ZGVUeXBlPT09MTEmJmYuY2hpbGROb2Rlcy5sZW5ndGg9PT0xJiZlLmxlbmd0aD09 PTEpcmV0dXJuIGVbYl0odGhpc1swXSksdGhpcztmb3IodmFyIGc9MCxoPWUubGVu Z3RoO2c8aDtnKyspe3ZhciBpPShnPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0 KCk7RChlW2ddKVtiXShpKSxkPWQuY29uY2F0KGkpfXJldHVybiB0aGlzLnB1c2hT dGFjayhkLGEsZS5zZWxlY3Rvcil9fSksRC5leHRlbmQoe2Nsb25lOmZ1bmN0aW9u KGEsYixjKXt2YXIgZD1hLmNsb25lTm9kZSghMCksZSxmLGc7aWYoKCFELnN1cHBv cnQubm9DbG9uZUV2ZW50fHwhRC5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEu bm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhRC5pc1hNTERvYyhhKSl7 cShhLGQpLGU9cChhKSxmPXAoZCk7Zm9yKGc9MDtlW2ddOysrZylxKGVbZ10sZltn XSl9aWYoYil7cihhLGQpO2lmKGMpe2U9cChhKSxmPXAoZCk7Zm9yKGc9MDtlW2dd OysrZylyKGVbZ10sZltnXSl9fXJldHVybiBkfSxjbGVhbjpmdW5jdGlvbihhLGIs YyxkKXtiPWJ8fEMsdHlwZW9mIGIuY3JlYXRlRWxlbWVudD09InVuZGVmaW5lZCIm JihiPWIub3duZXJEb2N1bWVudHx8YlswXSYmYlswXS5vd25lckRvY3VtZW50fHxD KTt2YXIgZT1bXTtmb3IodmFyIGY9MCxnOyhnPWFbZl0pIT1udWxsO2YrKyl7dHlw ZW9mIGc9PSJudW1iZXIiJiYoZys9IiIpO2lmKCFnKWNvbnRpbnVlO2lmKHR5cGVv ZiBnIT0ic3RyaW5nInx8YmoudGVzdChnKSl7aWYodHlwZW9mIGc9PSJzdHJpbmci KXtnPWcucmVwbGFjZShiZywiPCQxPjwvJDI+Iik7dmFyIGg9KGJoLmV4ZWMoZyl8 fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksaT1ibVtoXXx8Ym0uX2RlZmF1bHQs aj1pWzBdLGs9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtrLmlubmVySFRNTD1pWzFd K2craVsyXTt3aGlsZShqLS0paz1rLmxhc3RDaGlsZDtpZighRC5zdXBwb3J0LnRi b2R5KXt2YXIgbD1iaS50ZXN0KGcpLG09aD09PSJ0YWJsZSImJiFsP2suZmlyc3RD aGlsZCYmay5maXJzdENoaWxkLmNoaWxkTm9kZXM6aVsxXT09PSI8dGFibGU+IiYm IWw/ay5jaGlsZE5vZGVzOltdO2Zvcih2YXIgbj1tLmxlbmd0aC0xO24+PTA7LS1u KUQubm9kZU5hbWUobVtuXSwidGJvZHkiKSYmIW1bbl0uY2hpbGROb2Rlcy5sZW5n dGgmJm1bbl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChtW25dKX0hRC5zdXBwb3J0 LmxlYWRpbmdXaGl0ZXNwYWNlJiZiZi50ZXN0KGcpJiZrLmluc2VydEJlZm9yZShi LmNyZWF0ZVRleHROb2RlKGJmLmV4ZWMoZylbMF0pLGsuZmlyc3RDaGlsZCksZz1r LmNoaWxkTm9kZXN9fWVsc2UgZz1iLmNyZWF0ZVRleHROb2RlKGcpO2cubm9kZVR5 cGU/ZS5wdXNoKGcpOmU9RC5tZXJnZShlLGcpfWlmKGMpZm9yKGY9MDtlW2ZdO2Yr KykhZHx8IUQubm9kZU5hbWUoZVtmXSwic2NyaXB0Iil8fGVbZl0udHlwZSYmZVtm XS50eXBlLnRvTG93ZXJDYXNlKCkhPT0idGV4dC9qYXZhc2NyaXB0Ij8oZVtmXS5u b2RlVHlwZT09PTEmJmUuc3BsaWNlLmFwcGx5KGUsW2YrMSwwXS5jb25jYXQoRC5t YWtlQXJyYXkoZVtmXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpKSks Yy5hcHBlbmRDaGlsZChlW2ZdKSk6ZC5wdXNoKGVbZl0ucGFyZW50Tm9kZT9lW2Zd LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZVtmXSk6ZVtmXSk7cmV0dXJuIGV9LGNs ZWFuRGF0YTpmdW5jdGlvbihhKXt2YXIgYixjLGQ9RC5jYWNoZSxlPUQuZXhwYW5k byxmPUQuZXZlbnQuc3BlY2lhbCxnPUQuc3VwcG9ydC5kZWxldGVFeHBhbmRvO2Zv cih2YXIgaD0wLGk7KGk9YVtoXSkhPW51bGw7aCsrKXtpZihpLm5vZGVOYW1lJiZE Lm5vRGF0YVtpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKWNvbnRpbnVlO2M9aVtE LmV4cGFuZG9dO2lmKGMpe2I9ZFtjXSYmZFtjXVtlXTtpZihiJiZiLmV2ZW50cyl7 Zm9yKHZhciBqIGluIGIuZXZlbnRzKWZbal0/RC5ldmVudC5yZW1vdmUoaSxqKTpE LnJlbW92ZUV2ZW50KGksaixiLmhhbmRsZSk7Yi5oYW5kbGUmJihiLmhhbmRsZS5l bGVtPW51bGwpfWc/ZGVsZXRlIGlbRC5leHBhbmRvXTppLnJlbW92ZUF0dHJpYnV0 ZSYmaS5yZW1vdmVBdHRyaWJ1dGUoRC5leHBhbmRvKSxkZWxldGUgZFtjXX19fX0p O3ZhciBibj0vYWxwaGFcKFteKV0qXCkvaSxibz0vb3BhY2l0eT0oW14pXSopLyxi cD0vLShbYS16XSkvaWcsYnE9LyhbQS1aXSkvZyxicj0vXi0/XGQrKD86cHgpPyQv aSxicz0vXi0/XGQvLGJ0PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6 ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxidT1bIkxlZnQiLCJSaWdodCJdLGJ2 PVsiVG9wIiwiQm90dG9tIl0sYncsYngsYnksYno9ZnVuY3Rpb24oYSxiKXtyZXR1 cm4gYi50b1VwcGVyQ2FzZSgpfTtELmZuLmNzcz1mdW5jdGlvbihhLGMpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPT09MiYmYz09PWI/dGhpczpELmFjY2Vzcyh0aGlz LGEsYywhMCxmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGQhPT1iP0Quc3R5bGUoYSxj LGQpOkQuY3NzKGEsYyl9KX0sRC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5Ontn ZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1idyhhLCJvcGFjaXR5Iiwib3Bh Y2l0eSIpO3JldHVybiBjPT09IiI/IjEiOmN9cmV0dXJuIGEuc3R5bGUub3BhY2l0 eX19fSxjc3NOdW1iZXI6e3pJbmRleDohMCxmb250V2VpZ2h0OiEwLG9wYWNpdHk6 ITAsem9vbTohMCxsaW5lSGVpZ2h0OiEwfSxjc3NQcm9wczp7ImZsb2F0IjpELnN1 cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCJ9LHN0eWxlOmZ1 bmN0aW9uKGEsYyxkLGUpe2lmKGEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBl IT09OCYmYS5zdHlsZSl7dmFyIGYsZz1ELmNhbWVsQ2FzZShjKSxoPWEuc3R5bGUs aT1ELmNzc0hvb2tzW2ddO2M9RC5jc3NQcm9wc1tnXXx8ZztpZihkPT09YilyZXR1 cm4gaSYmImdldCJpbiBpJiYoZj1pLmdldChhLCExLGUpKSE9PWI/ZjpoW2NdO2lm KHR5cGVvZiBkPT0ibnVtYmVyIiYmaXNOYU4oZCl8fGQ9PW51bGwpcmV0dXJuO3R5 cGVvZiBkPT0ibnVtYmVyIiYmIUQuY3NzTnVtYmVyW2ddJiYoZCs9InB4Iik7aWYo IWl8fCEoInNldCJpbiBpKXx8KGQ9aS5zZXQoYSxkKSkhPT1iKXRyeXtoW2NdPWR9 Y2F0Y2goail7fX19LGNzczpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZj1ELmNhbWVs Q2FzZShjKSxnPUQuY3NzSG9va3NbZl07Yz1ELmNzc1Byb3BzW2ZdfHxmO2lmKGcm JiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxkKSkhPT1iKXJldHVybiBlO2lmKGJ3 KXJldHVybiBidyhhLGMsZil9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9 O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07 Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfSxjYW1lbENhc2U6 ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShicCxieil9fSksRC5jdXJDU1M9 RC5jc3MsRC5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe0Qu Y3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU7aWYoYyl7YS5v ZmZzZXRXaWR0aCE9PTA/ZT1uKGEsYixkKTpELnN3YXAoYSxidCxmdW5jdGlvbigp e2U9bihhLGIsZCl9KTtpZihlPD0wKXtlPWJ3KGEsYixiKSxlPT09IjBweCImJmJ5 JiYoZT1ieShhLGIsYikpO2lmKGUhPW51bGwpcmV0dXJuIGU9PT0iInx8ZT09PSJh dXRvIj8iMHB4IjplfXJldHVybiBlPDB8fGU9PW51bGw/KGU9YS5zdHlsZVtiXSxl PT09IiJ8fGU9PT0iYXV0byI/IjBweCI6ZSk6dHlwZW9mIGU9PSJzdHJpbmciP2U6 ZSsicHgifX0sc2V0OmZ1bmN0aW9uKGEsYil7aWYoIWJyLnRlc3QoYikpcmV0dXJu IGI7Yj1wYXJzZUZsb2F0KGIpO2lmKGI+PTApcmV0dXJuIGIrInB4In19fSksRC5z dXBwb3J0Lm9wYWNpdHl8fChELmNzc0hvb2tzLm9wYWNpdHk9CntnZXQ6ZnVuY3Rp b24oYSxiKXtyZXR1cm4gYm8udGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJy ZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpP3BhcnNlRmxvYXQo UmVnRXhwLiQxKS8xMDArIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3Zh ciBjPWEuc3R5bGU7Yy56b29tPTE7dmFyIGQ9RC5pc05hTihiKT8iIjoiYWxwaGEo b3BhY2l0eT0iK2IqMTAwKyIpIixlPWMuZmlsdGVyfHwiIjtjLmZpbHRlcj1ibi50 ZXN0KGUpP2UucmVwbGFjZShibixkKTpjLmZpbHRlcisiICIrZH19KSxDLmRlZmF1 bHRWaWV3JiZDLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihieD1mdW5j dGlvbihhLGMsZCl7dmFyIGUsZixnO2Q9ZC5yZXBsYWNlKGJxLCItJDEiKS50b0xv d2VyQ2FzZSgpO2lmKCEoZj1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKXJl dHVybiBiO2lmKGc9Zi5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpZT1nLmdldFBy b3BlcnR5VmFsdWUoZCksZT09PSIiJiYhRC5jb250YWlucyhhLm93bmVyRG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50LGEpJiYoZT1ELnN0eWxlKGEsZCkpO3JldHVybiBl fSksQy5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoYnk9ZnVuY3Rpb24o YSxiKXt2YXIgYyxkPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxl PWEucnVudGltZVN0eWxlJiZhLnJ1bnRpbWVTdHlsZVtiXSxmPWEuc3R5bGU7cmV0 dXJuIWJyLnRlc3QoZCkmJmJzLnRlc3QoZCkmJihjPWYubGVmdCxlJiYoYS5ydW50 aW1lU3R5bGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxmLmxlZnQ9Yj09PSJm b250U2l6ZSI/IjFlbSI6ZHx8MCxkPWYucGl4ZWxMZWZ0KyJweCIsZi5sZWZ0PWMs ZSYmKGEucnVudGltZVN0eWxlLmxlZnQ9ZSkpLGQ9PT0iIj8iYXV0byI6ZH0pLGJ3 PWJ4fHxieSxELmV4cHImJkQuZXhwci5maWx0ZXJzJiYoRC5leHByLmZpbHRlcnMu aGlkZGVuPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0V2lkdGgsYz1hLm9mZnNl dEhlaWdodDtyZXR1cm4gYj09PTAmJmM9PT0wfHwhRC5zdXBwb3J0LnJlbGlhYmxl SGlkZGVuT2Zmc2V0cyYmKGEuc3R5bGUuZGlzcGxheXx8RC5jc3MoYSwiZGlzcGxh eSIpKT09PSJub25lIn0sRC5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihh KXtyZXR1cm4hRC5leHByLmZpbHRlcnMuaGlkZGVuKGEpfSk7dmFyIGJBPS8lMjAv ZyxiQj0vXFtcXSQvLGJDPS9ccj9cbi9nLGJEPS8jLiokLyxiRT0vXiguKj8pOlsg XHRdKihbXlxyXG5dKilccj8kL21nLGJGPS9eKD86Y29sb3J8ZGF0ZXxkYXRldGlt ZXxlbWFpbHxoaWRkZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJj aHx0ZWx8dGV4dHx0aW1lfHVybHx3ZWVrKSQvaSxiRz0vKD86XmZpbGV8XndpZGdl dHxcLWV4dGVuc2lvbik6JC8sYkg9L14oPzpHRVR8SEVBRCkkLyxiST0vXlwvXC8v LGJKPS9cPy8sYks9LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148 XSopKjxcL3NjcmlwdD4vZ2ksYkw9L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYk09 L1xzKy8sYk49LyhbPyZdKV89W14mXSovLGJPPS8oXnxcLSkoW2Etel0pL2csYlA9 ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiK2MudG9VcHBlckNhc2UoKX0sYlE9L14o W1x3XCtcLlwtXSs6KVwvXC8oW15cLz8jOl0qKSg/OjooXGQrKSk/LyxiUj1ELmZu LmxvYWQsYlM9e30sYlQ9e30sYlUsYlY7dHJ5e2JVPUMubG9jYXRpb24uaHJlZn1j YXRjaChiVyl7YlU9Qy5jcmVhdGVFbGVtZW50KCJhIiksYlUuaHJlZj0iIixiVT1i VS5ocmVmfWJWPWJRLmV4ZWMoYlUudG9Mb3dlckNhc2UoKSksRC5mbi5leHRlbmQo e2xvYWQ6ZnVuY3Rpb24oYSxjLGQpe2lmKHR5cGVvZiBhIT0ic3RyaW5nIiYmYlIp cmV0dXJuIGJSLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighdGhpcy5sZW5ndGgp cmV0dXJuIHRoaXM7dmFyIGU9YS5pbmRleE9mKCIgIik7aWYoZT49MCl7dmFyIGY9 YS5zbGljZShlLGEubGVuZ3RoKTthPWEuc2xpY2UoMCxlKX12YXIgZz0iR0VUIjtj JiYoRC5pc0Z1bmN0aW9uKGMpPyhkPWMsYz1iKTp0eXBlb2YgYz09Im9iamVjdCIm JihjPUQucGFyYW0oYyxELmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksZz0iUE9T VCIpKTt2YXIgaD10aGlzO3JldHVybiBELmFqYXgoe3VybDphLHR5cGU6ZyxkYXRh VHlwZToiaHRtbCIsZGF0YTpjLGNvbXBsZXRlOmZ1bmN0aW9uKGEsYixjKXtjPWEu cmVzcG9uc2VUZXh0LGEuaXNSZXNvbHZlZCgpJiYoYS5kb25lKGZ1bmN0aW9uKGEp e2M9YX0pLGguaHRtbChmP0QoIjxkaXY+IikuYXBwZW5kKGMucmVwbGFjZShiSywi IikpLmZpbmQoZik6YykpLGQmJmguZWFjaChkLFtjLGIsYV0pfX0pLHRoaXN9LHNl cmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBELnBhcmFtKHRoaXMuc2VyaWFsaXpl QXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu bWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHM/RC5tYWtlQXJyYXko dGhpcy5lbGVtZW50cyk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0 aGlzLm5hbWUmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5jaGVja2VkfHxiTC50ZXN0 KHRoaXMubm9kZU5hbWUpfHxiRi50ZXN0KHRoaXMudHlwZSkpfSkubWFwKGZ1bmN0 aW9uKGEsYil7dmFyIGM9RCh0aGlzKS52YWwoKTtyZXR1cm4gYz09bnVsbD9udWxs OkQuaXNBcnJheShjKT9ELm1hcChjLGZ1bmN0aW9uKGEsYyl7cmV0dXJue25hbWU6 Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShiQywiXHJcbiIpfX0pOntuYW1lOmIubmFt ZSx2YWx1ZTpjLnJlcGxhY2UoYkMsIlxyXG4iKX19KS5nZXQoKX19KSxELmVhY2go ImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhT dWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7RC5mblti XT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iaW5kKGIsYSl9fSksRC5lYWNoKFsi Z2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYyl7RFtjXT1mdW5jdGlvbihhLGQsZSxm KXtyZXR1cm4gRC5pc0Z1bmN0aW9uKGQpJiYoZj1mfHxlLGU9ZCxkPWIpLEQuYWph eCh7dHlwZTpjLHVybDphLGRhdGE6ZCxzdWNjZXNzOmUsZGF0YVR5cGU6Zn0pfX0p LEQuZXh0ZW5kKHtnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gRC5nZXQo YSxiLGMsInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4g RC5nZXQoYSxiLGMsImpzb24iKX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7Yj9E LmV4dGVuZCghMCxhLEQuYWpheFNldHRpbmdzLGIpOihiPWEsYT1ELmV4dGVuZCgh MCxELmFqYXhTZXR0aW5ncyxiKSk7Zm9yKHZhciBjIGlue2NvbnRleHQ6MSx1cmw6 MX0pYyBpbiBiP2FbY109YltjXTpjIGluIEQuYWpheFNldHRpbmdzJiYoYVtjXT1E LmFqYXhTZXR0aW5nc1tjXSk7cmV0dXJuIGF9LGFqYXhTZXR0aW5nczp7dXJsOmJV LGlzTG9jYWw6YkcudGVzdChiVlsxXSksZ2xvYmFsOiEwLHR5cGU6IkdFVCIsY29u dGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJv Y2Vzc0RhdGE6ITAsYXN5bmM6ITAsYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94 bWwsIHRleHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHRleHQ6InRleHQvcGxhaW4i LGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsIioiOiIq LyoifSxjb250ZW50czp7eG1sOi94bWwvLGh0bWw6L2h0bWwvLGpzb246L2pzb24v fSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9u c2VUZXh0In0sY29udmVydGVyczp7IiogdGV4dCI6YS5TdHJpbmcsInRleHQgaHRt bCI6ITAsInRleHQganNvbiI6RC5wYXJzZUpTT04sInRleHQgeG1sIjpELnBhcnNl WE1MfX0sYWpheFByZWZpbHRlcjptKGJTKSxhamF4VHJhbnNwb3J0Om0oYlQpLGFq YXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBkKGEsYyxkLGwpe2lmKHUhPT0yKXt1 PTIscyYmY2xlYXJUaW1lb3V0KHMpLHI9YixwPWx8fCIiLHgucmVhZHlTdGF0ZT1h PzQ6MDt2YXIgbyxxLHQsdz1kP2ooZSx4LGQpOmIseSx6O2lmKGE+PTIwMCYmYTwz MDB8fGE9PT0zMDQpe2lmKGUuaWZNb2RpZmllZCl7aWYoeT14LmdldFJlc3BvbnNl SGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpRC5sYXN0TW9kaWZpZWRbbl09eTtpZih6 PXguZ2V0UmVzcG9uc2VIZWFkZXIoIkV0YWciKSlELmV0YWdbbl09en1pZihhPT09 MzA0KWM9Im5vdG1vZGlmaWVkIixvPSEwO2Vsc2UgdHJ5e3E9aShlLHcpLGM9InN1 Y2Nlc3MiLG89ITB9Y2F0Y2goQSl7Yz0icGFyc2VyZXJyb3IiLHQ9QX19ZWxzZXt0 PWM7aWYoIWN8fGEpYz0iZXJyb3IiLGE8MCYmKGE9MCl9eC5zdGF0dXM9YSx4LnN0 YXR1c1RleHQ9YyxvP2gucmVzb2x2ZVdpdGgoZixbcSxjLHhdKTpoLnJlamVjdFdp dGgoZixbeCxjLHRdKSx4LnN0YXR1c0NvZGUobSksbT1iLHYmJmcudHJpZ2dlcigi YWpheCIrKG8/IlN1Y2Nlc3MiOiJFcnJvciIpLFt4LGUsbz9xOnRdKSxrLnJlc29s dmVXaXRoKGYsW3gsY10pLHYmJihnLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3gs ZV0pLC0tRC5hY3RpdmV8fEQuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSl9fXR5 cGVvZiBhPT0ib2JqZWN0IiYmKGM9YSxhPWIpLGM9Y3x8e307dmFyIGU9RC5hamF4 U2V0dXAoe30sYyksZj1lLmNvbnRleHR8fGUsZz1mIT09ZSYmKGYubm9kZVR5cGV8 fGYgaW5zdGFuY2VvZiBEKT9EKGYpOkQuZXZlbnQsaD1ELkRlZmVycmVkKCksaz1E Ll9EZWZlcnJlZCgpLG09ZS5zdGF0dXNDb2RlfHx7fSxuLG89e30scCxxLHIscyx0 LHU9MCx2LHcseD17cmVhZHlTdGF0ZTowLHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rp b24oYSxiKXtyZXR1cm4gdXx8KG9bYS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoYk8s YlApXT1iKSx0aGlzfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXty ZXR1cm4gdT09PTI/cDpudWxsfSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihh KXt2YXIgYztpZih1PT09Mil7aWYoIXEpe3E9e307d2hpbGUoYz1iRS5leGVjKHAp KXFbY1sxXS50b0xvd2VyQ2FzZSgpXT1jWzJdfWM9cVthLnRvTG93ZXJDYXNlKCld fXJldHVybiBjPT09Yj9udWxsOmN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24o YSl7cmV0dXJuIHV8fChlLm1pbWVUeXBlPWEpLHRoaXN9LGFib3J0OmZ1bmN0aW9u KGEpe3JldHVybiBhPWF8fCJhYm9ydCIsciYmci5hYm9ydChhKSxkKDAsYSksdGhp c319O2gucHJvbWlzZSh4KSx4LnN1Y2Nlc3M9eC5kb25lLHguZXJyb3I9eC5mYWls LHguY29tcGxldGU9ay5kb25lLHguc3RhdHVzQ29kZT1mdW5jdGlvbihhKXtpZihh KXt2YXIgYjtpZih1PDIpZm9yKGIgaW4gYSltW2JdPVttW2JdLGFbYl1dO2Vsc2Ug Yj1hW3guc3RhdHVzXSx4LnRoZW4oYixiKX1yZXR1cm4gdGhpc30sZS51cmw9KChh fHxlLnVybCkrIiIpLnJlcGxhY2UoYkQsIiIpLnJlcGxhY2UoYkksYlZbMV0rIi8v IiksZS5kYXRhVHlwZXM9RC50cmltKGUuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNh c2UoKS5zcGxpdChiTSksZS5jcm9zc0RvbWFpbnx8KHQ9YlEuZXhlYyhlLnVybC50 b0xvd2VyQ2FzZSgpKSxlLmNyb3NzRG9tYWluPXQmJih0WzFdIT1iVlsxXXx8dFsy XSE9YlZbMl18fCh0WzNdfHwodFsxXT09PSJodHRwOiI/ODA6NDQzKSkhPShiVlsz XXx8KGJWWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGUuZGF0YSYmZS5wcm9jZXNz RGF0YSYmdHlwZW9mIGUuZGF0YSE9InN0cmluZyImJihlLmRhdGE9RC5wYXJhbShl LmRhdGEsZS50cmFkaXRpb25hbCkpLGwoYlMsZSxjLHgpO2lmKHU9PT0yKXJldHVy biExO3Y9ZS5nbG9iYWwsZS50eXBlPWUudHlwZS50b1VwcGVyQ2FzZSgpLGUuaGFz Q29udGVudD0hYkgudGVzdChlLnR5cGUpLHYmJkQuYWN0aXZlKys9PT0wJiZELmV2 ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKCFlLmhhc0NvbnRlbnQpe2UuZGF0 YSYmKGUudXJsKz0oYkoudGVzdChlLnVybCk/IiYiOiI/IikrZS5kYXRhKSxuPWUu dXJsO2lmKGUuY2FjaGU9PT0hMSl7dmFyIHk9RC5ub3coKSx6PWUudXJsLnJlcGxh Y2UoYk4sIiQxXz0iK3kpO2UudXJsPXorKHo9PT1lLnVybD8oYkoudGVzdChlLnVy bCk/IiYiOiI/IikrIl89Iit5OiIiKX19aWYoZS5kYXRhJiZlLmhhc0NvbnRlbnQm JmUuY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlwZSlvWyJDb250ZW50LVR5 cGUiXT1lLmNvbnRlbnRUeXBlO2UuaWZNb2RpZmllZCYmKG49bnx8ZS51cmwsRC5s YXN0TW9kaWZpZWRbbl0mJihvWyJJZi1Nb2RpZmllZC1TaW5jZSJdPUQubGFzdE1v ZGlmaWVkW25dKSxELmV0YWdbbl0mJihvWyJJZi1Ob25lLU1hdGNoIl09RC5ldGFn W25dKSksby5BY2NlcHQ9ZS5kYXRhVHlwZXNbMF0mJmUuYWNjZXB0c1tlLmRhdGFU eXBlc1swXV0/ZS5hY2NlcHRzW2UuZGF0YVR5cGVzWzBdXSsoZS5kYXRhVHlwZXNb MF0hPT0iKiI/IiwgKi8qOyBxPTAuMDEiOiIiKTplLmFjY2VwdHNbIioiXTtmb3Io dyBpbiBlLmhlYWRlcnMpeC5zZXRSZXF1ZXN0SGVhZGVyKHcsZS5oZWFkZXJzW3dd KTtpZighZS5iZWZvcmVTZW5kfHxlLmJlZm9yZVNlbmQuY2FsbChmLHgsZSkhPT0h MSYmdSE9PTIpe2Zvcih3IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9 KXhbd10oZVt3XSk7cj1sKGJULGUsYyx4KTtpZihyKXt4LnJlYWR5U3RhdGU9MSx2 JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbeCxlXSksZS5hc3luYyYmZS50aW1lb3V0 PjAmJihzPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt4LmFib3J0KCJ0aW1lb3V0Iil9 LGUudGltZW91dCkpO3RyeXt1PTEsci5zZW5kKG8sZCl9Y2F0Y2goQSl7c3RhdHVz PDI/ZCgtMSxBKTpELmVycm9yKEEpfX1lbHNlIGQoLTEsIk5vIFRyYW5zcG9ydCIp O3JldHVybiB4fXJldHVybiB4LmFib3J0KCksITF9LHBhcmFtOmZ1bmN0aW9uKGEs Yyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9RC5pc0Z1bmN0aW9uKGIpP2Io KTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2Rl VVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9RC5hamF4U2V0dGluZ3MudHJhZGl0 aW9uYWwpO2lmKEQuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFELmlzUGxhaW5PYmpl Y3QoYSkpRC5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVl KX0pO2Vsc2UgZm9yKHZhciBmIGluIGEpayhmLGFbZl0sYyxlKTtyZXR1cm4gZC5q b2luKCImIikucmVwbGFjZShiQSwiKyIpfX0pLEQuZXh0ZW5kKHthY3RpdmU6MCxs YXN0TW9kaWZpZWQ6e30sZXRhZzp7fX0pO3ZhciBiWD1ELm5vdygpLGJZPS8oXD0p XD8oJnwkKXwoKVw/XD8oKS9pO0QuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2si LGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gRC5leHBhbmRvKyJfIiti WCsrfX0pLEQuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixj LGQpe3ZhciBlPXR5cGVvZiBiLmRhdGE9PSJzdHJpbmciO2lmKGIuZGF0YVR5cGVz WzBdPT09Impzb25wInx8Yy5qc29ucENhbGxiYWNrfHxjLmpzb25wIT1udWxsfHxi Lmpzb25wIT09ITEmJihiWS50ZXN0KGIudXJsKXx8ZSYmYlkudGVzdChiLmRhdGEp KSl7dmFyIGYsZz1iLmpzb25wQ2FsbGJhY2s9RC5pc0Z1bmN0aW9uKGIuanNvbnBD YWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGg9YVtn XSxpPWIudXJsLGo9Yi5kYXRhLGs9IiQxIitnKyIkMiIsbD1mdW5jdGlvbigpe2Fb Z109aCxmJiZELmlzRnVuY3Rpb24oaCkmJmFbZ10oZlswXSl9O3JldHVybiBiLmpz b25wIT09ITEmJihpPWkucmVwbGFjZShiWSxrKSxiLnVybD09PWkmJihlJiYoaj1q LnJlcGxhY2UoYlksaykpLGIuZGF0YT09PWomJihpKz0oL1w/Ly50ZXN0KGkpPyIm IjoiPyIpK2IuanNvbnArIj0iK2cpKSksYi51cmw9aSxiLmRhdGE9aixhW2ddPWZ1 bmN0aW9uKGEpe2Y9W2FdfSxkLnRoZW4obCxsKSxiLmNvbnZlcnRlcnNbInNjcmlw dCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZnx8RC5lcnJvcihnKyIgd2FzIG5v dCBjYWxsZWQiKSxmWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsInNjcmlwdCJ9 fSksRC5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0 LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0 LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9q YXZhc2NyaXB0fGVjbWFzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQi OmZ1bmN0aW9uKGEpe3JldHVybiBELmdsb2JhbEV2YWwoYSksYX19fSksRC5hamF4 UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2EuY2FjaGU9PT1iJiYoYS5j YWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIixhLmdsb2JhbD0h MSl9KSxELmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5j cm9zc0RvbWFpbil7dmFyIGMsZD1DLmhlYWR8fEMuZ2V0RWxlbWVudHNCeVRhZ05h bWUoImhlYWQiKVswXXx8Qy5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVu Y3Rpb24oZSxmKXtjPUMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksYy5hc3luYz0i YXN5bmMiLGEuc2NyaXB0Q2hhcnNldCYmKGMuY2hhcnNldD1hLnNjcmlwdENoYXJz ZXQpLGMuc3JjPWEudXJsLGMub25sb2FkPWMub25yZWFkeXN0YXRlY2hhbmdlPWZ1 bmN0aW9uKGEsZSl7aWYoIWMucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8u dGVzdChjLnJlYWR5U3RhdGUpKWMub25sb2FkPWMub25yZWFkeXN0YXRlY2hhbmdl PW51bGwsZCYmYy5wYXJlbnROb2RlJiZkLnJlbW92ZUNoaWxkKGMpLGM9YixlfHxm KDIwMCwic3VjY2VzcyIpfSxkLmluc2VydEJlZm9yZShjLGQuZmlyc3RDaGlsZCl9 LGFib3J0OmZ1bmN0aW9uKCl7YyYmYy5vbmxvYWQoMCwxKX19fX0pO3ZhciBiWj1E Lm5vdygpLGIkLGJfO0QuYWpheFNldHRpbmdzLnhocj1hLkFjdGl2ZVhPYmplY3Q/ ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0xvY2FsJiZnKCl8fGYoKX06ZyxiXz1E LmFqYXhTZXR0aW5ncy54aHIoKSxELnN1cHBvcnQuYWpheD0hIWJfLEQuc3VwcG9y dC5jb3JzPWJfJiYid2l0aENyZWRlbnRpYWxzImluIGJfLGJfPWIsRC5zdXBwb3J0 LmFqYXgmJkQuYWpheFRyYW5zcG9ydChmdW5jdGlvbihhKXtpZighYS5jcm9zc0Rv bWFpbnx8RC5zdXBwb3J0LmNvcnMpe3ZhciBjO3JldHVybntzZW5kOmZ1bmN0aW9u KGQsZSl7dmFyIGY9YS54aHIoKSxnLGk7YS51c2VybmFtZT9mLm9wZW4oYS50eXBl LGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKTpmLm9wZW4oYS50 eXBlLGEudXJsLGEuYXN5bmMpO2lmKGEueGhyRmllbGRzKWZvcihpIGluIGEueGhy RmllbGRzKWZbaV09YS54aHJGaWVsZHNbaV07YS5taW1lVHlwZSYmZi5vdmVycmlk ZU1pbWVUeXBlJiZmLm92ZXJyaWRlTWltZVR5cGUoYS5taW1lVHlwZSksKCFhLmNy b3NzRG9tYWlufHxhLmhhc0NvbnRlbnQpJiYhZFsiWC1SZXF1ZXN0ZWQtV2l0aCJd JiYoZFsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO3RyeXtm b3IoaSBpbiBkKWYuc2V0UmVxdWVzdEhlYWRlcihpLGRbaV0pfWNhdGNoKGope31m LnNlbmQoYS5oYXNDb250ZW50JiZhLmRhdGF8fG51bGwpLGM9ZnVuY3Rpb24oZCxo KXt2YXIgaSxqLGssbCxtO3RyeXtpZihjJiYoaHx8Zi5yZWFkeVN0YXRlPT09NCkp e2M9YixnJiYoZi5vbnJlYWR5c3RhdGVjaGFuZ2U9RC5ub29wLGRlbGV0ZSBiJFtn XSk7aWYoaClmLnJlYWR5U3RhdGUhPT00JiZmLmFib3J0KCk7ZWxzZXtpPWYuc3Rh dHVzLGs9Zi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxsPXt9LG09Zi5yZXNwb25z ZVhNTCxtJiZtLmRvY3VtZW50RWxlbWVudCYmKGwueG1sPW0pLGwudGV4dD1mLnJl c3BvbnNlVGV4dDt0cnl7aj1mLnN0YXR1c1RleHR9Y2F0Y2gobil7aj0iIn1pfHwh YS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluP2k9PT0xMjIzJiYoaT0yMDQpOmk9bC50 ZXh0PzIwMDo0MDR9fX1jYXRjaChvKXtofHxlKC0xLG8pfWwmJmUoaSxqLGwsayl9 LGEuYXN5bmMmJmYucmVhZHlTdGF0ZSE9PTQ/KGIkfHwoYiQ9e30saCgpKSxnPWJa KyssZi5vbnJlYWR5c3RhdGVjaGFuZ2U9YiRbZ109Yyk6YygpfSxhYm9ydDpmdW5j dGlvbigpe2MmJmMoMCwxKX19fX0pO3ZhciBjYT17fSxjYj0vXig/OnRvZ2dsZXxz aG93fGhpZGUpJC8sY2M9L14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQv aSxjZCxjZT1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJw YWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0 IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsi b3BhY2l0eSJdXTtELmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIsYyl7dmFy IGYsZztpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGUoInNob3ciLDMp LGEsYixjKTtmb3IodmFyIGg9MCxpPXRoaXMubGVuZ3RoO2g8aTtoKyspZj10aGlz W2hdLGc9Zi5zdHlsZS5kaXNwbGF5LCFELl9kYXRhKGYsIm9sZGRpc3BsYXkiKSYm Zz09PSJub25lIiYmKGc9Zi5zdHlsZS5kaXNwbGF5PSIiKSxnPT09IiImJkQuY3Nz KGYsImRpc3BsYXkiKT09PSJub25lIiYmRC5fZGF0YShmLCJvbGRkaXNwbGF5Iixk KGYubm9kZU5hbWUpKTtmb3IoaD0wO2g8aTtoKyspe2Y9dGhpc1toXSxnPWYuc3R5 bGUuZGlzcGxheTtpZihnPT09IiJ8fGc9PT0ibm9uZSIpZi5zdHlsZS5kaXNwbGF5 PUQuX2RhdGEoZiwib2xkZGlzcGxheSIpfHwiIn1yZXR1cm4gdGhpc30saGlkZTpm dW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShl KCJoaWRlIiwzKSxhLGIsYyk7Zm9yKHZhciBkPTAsZj10aGlzLmxlbmd0aDtkPGY7 ZCsrKXt2YXIgZz1ELmNzcyh0aGlzW2RdLCJkaXNwbGF5Iik7ZyE9PSJub25lIiYm IUQuX2RhdGEodGhpc1tkXSwib2xkZGlzcGxheSIpJiZELl9kYXRhKHRoaXNbZF0s Im9sZGRpc3BsYXkiLGcpfWZvcihkPTA7ZDxmO2QrKyl0aGlzW2RdLnN0eWxlLmRp c3BsYXk9Im5vbmUiO3JldHVybiB0aGlzfSxfdG9nZ2xlOkQuZm4udG9nZ2xlLHRv Z2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dHlwZW9mIGE9PSJib29sZWFuIjty ZXR1cm4gRC5pc0Z1bmN0aW9uKGEpJiZELmlzRnVuY3Rpb24oYik/dGhpcy5fdG9n Z2xlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphPT1udWxsfHxkP3RoaXMuZWFjaChm dW5jdGlvbigpe3ZhciBiPWQ/YTpEKHRoaXMpLmlzKCI6aGlkZGVuIik7RCh0aGlz KVtiPyJzaG93IjoiaGlkZSJdKCl9KTp0aGlzLmFuaW1hdGUoZSgidG9nZ2xlIiwz KSxhLGIsYyksdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0 aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVu ZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9u KGEsYixjLGUpe3ZhciBmPUQuc3BlZWQoYixjLGUpO3JldHVybiBELmlzRW1wdHlP YmplY3QoYSk/dGhpcy5lYWNoKGYuY29tcGxldGUpOnRoaXNbZi5xdWV1ZT09PSEx PyJlYWNoIjoicXVldWUiXShmdW5jdGlvbigpe3ZhciBiPUQuZXh0ZW5kKHt9LGYp LGMsZT10aGlzLm5vZGVUeXBlPT09MSxnPWUmJkQodGhpcykuaXMoIjpoaWRkZW4i KSxoPXRoaXM7Zm9yKGMgaW4gYSl7dmFyIGk9RC5jYW1lbENhc2UoYyk7YyE9PWkm JihhW2ldPWFbY10sZGVsZXRlIGFbY10sYz1pKTtpZihhW2NdPT09ImhpZGUiJiZn fHxhW2NdPT09InNob3ciJiYhZylyZXR1cm4gYi5jb21wbGV0ZS5jYWxsKHRoaXMp O2lmKGUmJihjPT09ImhlaWdodCJ8fGM9PT0id2lkdGgiKSl7Yi5vdmVyZmxvdz1b dGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0 eWxlLm92ZXJmbG93WV07aWYoRC5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGlu ZSImJkQuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSIpaWYoRC5zdXBwb3J0Lmlu bGluZUJsb2NrTmVlZHNMYXlvdXQpe3ZhciBqPWQodGhpcy5ub2RlTmFtZSk7aj09 PSJpbmxpbmUiP3RoaXMuc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIjoodGhp cy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUiLHRoaXMuc3R5bGUuem9vbT0xKX1lbHNl IHRoaXMuc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIn1ELmlzQXJyYXkoYVtj XSkmJigoYi5zcGVjaWFsRWFzaW5nPWIuc3BlY2lhbEVhc2luZ3x8e30pW2NdPWFb Y11bMV0sYVtjXT1hW2NdWzBdKX1yZXR1cm4gYi5vdmVyZmxvdyE9bnVsbCYmKHRo aXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpLGIuY3VyQW5pbT1ELmV4dGVuZCh7 fSxhKSxELmVhY2goYSxmdW5jdGlvbihjLGQpe3ZhciBlPW5ldyBELmZ4KGgsYixj KTtpZihjYi50ZXN0KGQpKWVbZD09PSJ0b2dnbGUiP2c/InNob3ciOiJoaWRlIjpk XShhKTtlbHNle3ZhciBmPWNjLmV4ZWMoZCksaT1lLmN1cigpO2lmKGYpe3ZhciBq PXBhcnNlRmxvYXQoZlsyXSksaz1mWzNdfHwoRC5jc3NOdW1iZXJbY10/IiI6InB4 Iik7ayE9PSJweCImJihELnN0eWxlKGgsYywoanx8MSkrayksaT0oanx8MSkvZS5j dXIoKSppLEQuc3R5bGUoaCxjLGkraykpLGZbMV0mJihqPShmWzFdPT09Ii09Ij8t MToxKSpqK2kpLGUuY3VzdG9tKGksaixrKX1lbHNlIGUuY3VzdG9tKGksZCwiIil9 fSksITB9KX0sc3RvcDpmdW5jdGlvbihhLGIpe3ZhciBjPUQudGltZXJzO3JldHVy biBhJiZ0aGlzLnF1ZXVlKFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFy IGE9Yy5sZW5ndGgtMTthPj0wO2EtLSljW2FdLmVsZW09PT10aGlzJiYoYiYmY1th XSghMCksYy5zcGxpY2UoYSwxKSl9KSxifHx0aGlzLmRlcXVldWUoKSx0aGlzfX0p LEQuZWFjaCh7c2xpZGVEb3duOmUoInNob3ciLDEpLHNsaWRlVXA6ZSgiaGlkZSIs MSksc2xpZGVUb2dnbGU6ZSgidG9nZ2xlIiwxKSxmYWRlSW46e29wYWNpdHk6InNo b3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0 eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7RC5mblthXT1mdW5jdGlvbihhLGMs ZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxELmV4dGVuZCh7c3Bl ZWQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJnR5cGVvZiBhPT0ib2JqZWN0Ij9E LmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fEQuaXNGdW5jdGlvbihh KSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhRC5pc0Z1bmN0aW9uKGIp JiZifTtyZXR1cm4gZC5kdXJhdGlvbj1ELmZ4Lm9mZj8wOnR5cGVvZiBkLmR1cmF0 aW9uPT0ibnVtYmVyIj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gRC5meC5zcGVl ZHM/RC5meC5zcGVlZHNbZC5kdXJhdGlvbl06RC5meC5zcGVlZHMuX2RlZmF1bHQs ZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7ZC5xdWV1ZSE9 PSExJiZEKHRoaXMpLmRlcXVldWUoKSxELmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9s ZC5jYWxsKHRoaXMpfSxkfSxlYXNpbmc6e2xpbmVhcjpmdW5jdGlvbihhLGIsYyxk KXtyZXR1cm4gYytkKmF9LHN3aW5nOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybigt TWF0aC5jb3MoYSpNYXRoLlBJKS8yKy41KSpkK2N9fSx0aW1lcnM6W10sZng6ZnVu Y3Rpb24oYSxiLGMpe3RoaXMub3B0aW9ucz1iLHRoaXMuZWxlbT1hLHRoaXMucHJv cD1jLGIub3JpZ3x8KGIub3JpZz17fSl9fSksRC5meC5wcm90b3R5cGU9e3VwZGF0 ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3Rl cC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoRC5meC5zdGVwW3RoaXMu cHJvcF18fEQuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigp e2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdPT1udWxsfHwhIXRoaXMuZWxlbS5zdHls ZSYmdGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF0hPW51bGwpe3ZhciBhLGI9RC5j c3ModGhpcy5lbGVtLHRoaXMucHJvcCk7cmV0dXJuIGlzTmFOKGE9cGFyc2VGbG9h dChiKSk/IWJ8fGI9PT0iYXV0byI/MDpiOmF9cmV0dXJuIHRoaXMuZWxlbVt0aGlz LnByb3BdfSxjdXN0b206ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0 dXJuIGUuc3RlcChhKX12YXIgZT10aGlzLGY9RC5meDt0aGlzLnN0YXJ0VGltZT1E Lm5vdygpLHRoaXMuc3RhcnQ9YSx0aGlzLmVuZD1iLHRoaXMudW5pdD1jfHx0aGlz LnVuaXR8fChELmNzc051bWJlclt0aGlzLnByb3BdPyIiOiJweCIpLHRoaXMubm93 PXRoaXMuc3RhcnQsdGhpcy5wb3M9dGhpcy5zdGF0ZT0wLGQuZWxlbT10aGlzLmVs ZW0sZCgpJiZELnRpbWVycy5wdXNoKGQpJiYhY2QmJihjZD1zZXRJbnRlcnZhbChm LnRpY2ssZi5pbnRlcnZhbCkpfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25z Lm9yaWdbdGhpcy5wcm9wXT1ELnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRo aXMub3B0aW9ucy5zaG93PSEwLHRoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0 aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6MCx0aGlzLmN1cigpKSxEKHRoaXMu ZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdb dGhpcy5wcm9wXT1ELnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0 aW9ucy5oaWRlPSEwLHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVu Y3Rpb24oYSl7dmFyIGI9RC5ub3coKSxjPSEwO2lmKGF8fGI+PXRoaXMub3B0aW9u cy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQsdGhp cy5wb3M9dGhpcy5zdGF0ZT0xLHRoaXMudXBkYXRlKCksdGhpcy5vcHRpb25zLmN1 ckFuaW1bdGhpcy5wcm9wXT0hMDtmb3IodmFyIGQgaW4gdGhpcy5vcHRpb25zLmN1 ckFuaW0pdGhpcy5vcHRpb25zLmN1ckFuaW1bZF0hPT0hMCYmKGM9ITEpO2lmKGMp e2lmKHRoaXMub3B0aW9ucy5vdmVyZmxvdyE9bnVsbCYmIUQuc3VwcG9ydC5zaHJp bmtXcmFwQmxvY2tzKXt2YXIgZT10aGlzLmVsZW0sZj10aGlzLm9wdGlvbnM7RC5l YWNoKFsiIiwiWCIsIlkiXSxmdW5jdGlvbihhLGIpe2Uuc3R5bGVbIm92ZXJmbG93 IitiXT1mLm92ZXJmbG93W2FdfSl9dGhpcy5vcHRpb25zLmhpZGUmJkQodGhpcy5l bGVtKS5oaWRlKCk7aWYodGhpcy5vcHRpb25zLmhpZGV8fHRoaXMub3B0aW9ucy5z aG93KWZvcih2YXIgZyBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSlELnN0eWxlKHRo aXMuZWxlbSxnLHRoaXMub3B0aW9ucy5vcmlnW2ddKTt0aGlzLm9wdGlvbnMuY29t cGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiExfXZhciBoPWItdGhpcy5zdGFy dFRpbWU7dGhpcy5zdGF0ZT1oL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt2YXIgaT10 aGlzLm9wdGlvbnMuc3BlY2lhbEVhc2luZyYmdGhpcy5vcHRpb25zLnNwZWNpYWxF YXNpbmdbdGhpcy5wcm9wXSxqPXRoaXMub3B0aW9ucy5lYXNpbmd8fChELmVhc2lu Zy5zd2luZz8ic3dpbmciOiJsaW5lYXIiKTtyZXR1cm4gdGhpcy5wb3M9RC5lYXNp bmdbaXx8al0odGhpcy5zdGF0ZSxoLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24p LHRoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMu cG9zLHRoaXMudXBkYXRlKCksITB9fSxELmV4dGVuZChELmZ4LHt0aWNrOmZ1bmN0 aW9uKCl7dmFyIGE9RC50aW1lcnM7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKysp YVtiXSgpfHxhLnNwbGljZShiLS0sMSk7YS5sZW5ndGh8fEQuZnguc3RvcCgpfSxp bnRlcnZhbDoxMyxzdG9wOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChjZCksY2Q9 bnVsbH0sc3BlZWRzOntzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHN0 ZXA6e29wYWNpdHk6ZnVuY3Rpb24oYSl7RC5zdHlsZShhLmVsZW0sIm9wYWNpdHki LGEubm93KX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7YS5lbGVtLnN0eWxlJiZhLmVs ZW0uc3R5bGVbYS5wcm9wXSE9bnVsbD9hLmVsZW0uc3R5bGVbYS5wcm9wXT0oYS5w cm9wPT09IndpZHRoInx8YS5wcm9wPT09ImhlaWdodCI/TWF0aC5tYXgoMCxhLm5v dyk6YS5ub3cpK2EudW5pdDphLmVsZW1bYS5wcm9wXT1hLm5vd319fSksRC5leHBy JiZELmV4cHIuZmlsdGVycyYmKEQuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0 aW9uKGEpe3JldHVybiBELmdyZXAoRC50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJu IGE9PT1iLmVsZW19KS5sZW5ndGh9KTt2YXIgY2Y9L150KD86YWJsZXxkfGgpJC9p LGNnPS9eKD86Ym9keXxodG1sKSQvaTsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Imlu IEMuZG9jdW1lbnRFbGVtZW50P0QuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBi PXRoaXNbMF0sZDtpZihhKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7RC5v ZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO2lmKCFifHwhYi5vd25lckRvY3Vt ZW50KXJldHVybiBudWxsO2lmKGI9PT1iLm93bmVyRG9jdW1lbnQuYm9keSlyZXR1 cm4gRC5vZmZzZXQuYm9keU9mZnNldChiKTt0cnl7ZD1iLmdldEJvdW5kaW5nQ2xp ZW50UmVjdCgpfWNhdGNoKGUpe312YXIgZj1iLm93bmVyRG9jdW1lbnQsZz1mLmRv Y3VtZW50RWxlbWVudDtpZighZHx8IUQuY29udGFpbnMoZyxiKSlyZXR1cm4gZD97 dG9wOmQudG9wLGxlZnQ6ZC5sZWZ0fTp7dG9wOjAsbGVmdDowfTt2YXIgaD1mLmJv ZHksaT1jKGYpLGo9Zy5jbGllbnRUb3B8fGguY2xpZW50VG9wfHwwLGs9Zy5jbGll bnRMZWZ0fHxoLmNsaWVudExlZnR8fDAsbD1pLnBhZ2VZT2Zmc2V0fHxELnN1cHBv cnQuYm94TW9kZWwmJmcuc2Nyb2xsVG9wfHxoLnNjcm9sbFRvcCxtPWkucGFnZVhP ZmZzZXR8fEQuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxMZWZ0fHxoLnNjcm9s bExlZnQsbj1kLnRvcCtsLWosbz1kLmxlZnQrbS1rO3JldHVybnt0b3A6bixsZWZ0 Om99fTpELmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO2lmKGEp cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtELm9mZnNldC5zZXRPZmZzZXQo dGhpcyxhLGIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7 aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBELm9mZnNldC5ib2R5 T2Zmc2V0KGIpO0Qub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgYyxkPWIub2Zmc2V0 UGFyZW50LGU9YixmPWIub3duZXJEb2N1bWVudCxnPWYuZG9jdW1lbnRFbGVtZW50 LGg9Zi5ib2R5LGk9Zi5kZWZhdWx0VmlldyxqPWk/aS5nZXRDb21wdXRlZFN0eWxl KGIsbnVsbCk6Yi5jdXJyZW50U3R5bGUsaz1iLm9mZnNldFRvcCxsPWIub2Zmc2V0 TGVmdDt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiZiIT09aCYmYiE9PWcpe2lmKEQu b2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmai5wb3NpdGlvbj09PSJmaXhl ZCIpYnJlYWs7Yz1pP2kuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVu dFN0eWxlLGstPWIuc2Nyb2xsVG9wLGwtPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGsr PWIub2Zmc2V0VG9wLGwrPWIub2Zmc2V0TGVmdCxELm9mZnNldC5kb2VzTm90QWRk Qm9yZGVyJiYoIUQub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxz fHwhY2YudGVzdChiLm5vZGVOYW1lKSkmJihrKz1wYXJzZUZsb2F0KGMuYm9yZGVy VG9wV2lkdGgpfHwwLGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJMZWZ0V2lkdGgpfHww KSxlPWQsZD1iLm9mZnNldFBhcmVudCksRC5vZmZzZXQuc3VidHJhY3RzQm9yZGVy Rm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYo ays9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxsKz1wYXJzZUZsb2F0 KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaj1jfWlmKGoucG9zaXRpb249PT0icmVs YXRpdmUifHxqLnBvc2l0aW9uPT09InN0YXRpYyIpays9aC5vZmZzZXRUb3AsbCs9 aC5vZmZzZXRMZWZ0O3JldHVybiBELm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRp b24mJmoucG9zaXRpb249PT0iZml4ZWQiJiYoays9TWF0aC5tYXgoZy5zY3JvbGxU b3AsaC5zY3JvbGxUb3ApLGwrPU1hdGgubWF4KGcuc2Nyb2xsTGVmdCxoLnNjcm9s bExlZnQpKSx7dG9wOmssbGVmdDpsfX0sRC5vZmZzZXQ9e2luaXRpYWxpemU6ZnVu Y3Rpb24oKXt2YXIgYT1DLmJvZHksYj1DLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGMs ZCxlLGYsZz1wYXJzZUZsb2F0KEQuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxoPSI8 ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2lu OjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVp Z2h0OjFweDsnPjxkaXY+PC9kaXY+PC9kaXY+PHRhYmxlIHN0eWxlPSdwb3NpdGlv bjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xp ZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnIGNlbGxwYWRk aW5nPScwJyBjZWxsc3BhY2luZz0nMCc+PHRyPjx0ZD48L3RkPjwvdHI+PC90YWJs ZT4iO0QuZXh0ZW5kKGIuc3R5bGUse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAs bGVmdDowLG1hcmdpbjowLGJvcmRlcjowLHdpZHRoOiIxcHgiLGhlaWdodDoiMXB4 Iix2aXNpYmlsaXR5OiJoaWRkZW4ifSksYi5pbm5lckhUTUw9aCxhLmluc2VydEJl Zm9yZShiLGEuZmlyc3RDaGlsZCksYz1iLmZpcnN0Q2hpbGQsZD1jLmZpcnN0Q2hp bGQsZj1jLm5leHRTaWJsaW5nLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCx0aGlzLmRv ZXNOb3RBZGRCb3JkZXI9ZC5vZmZzZXRUb3AhPT01LHRoaXMuZG9lc0FkZEJvcmRl ckZvclRhYmxlQW5kQ2VsbHM9Zi5vZmZzZXRUb3A9PT01LGQuc3R5bGUucG9zaXRp b249ImZpeGVkIixkLnN0eWxlLnRvcD0iMjBweCIsdGhpcy5zdXBwb3J0c0ZpeGVk UG9zaXRpb249ZC5vZmZzZXRUb3A9PT0yMHx8ZC5vZmZzZXRUb3A9PT0xNSxkLnN0 eWxlLnBvc2l0aW9uPWQuc3R5bGUudG9wPSIiLGMuc3R5bGUub3ZlcmZsb3c9Imhp ZGRlbiIsYy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHRoaXMuc3VidHJhY3Rz Qm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPWQub2Zmc2V0VG9wPT09LTUsdGhp cy5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD1hLm9mZnNldFRvcCE9 PWcsYS5yZW1vdmVDaGlsZChiKSxhPWI9Yz1kPWU9Zj1udWxsLEQub2Zmc2V0Lmlu aXRpYWxpemU9RC5ub29wfSxib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEu b2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O3JldHVybiBELm9mZnNldC5pbml0aWFs aXplKCksRC5vZmZzZXQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQm JihiKz1wYXJzZUZsb2F0KEQuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjKz1wYXJz ZUZsb2F0KEQuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDApLHt0b3A6YixsZWZ0OmN9 fSxzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUQuY3NzKGEsInBvc2l0 aW9uIik7ZD09PSJzdGF0aWMiJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUi KTt2YXIgZT1EKGEpLGY9ZS5vZmZzZXQoKSxnPUQuY3NzKGEsInRvcCIpLGg9RC5j c3MoYSwibGVmdCIpLGk9ZD09PSJhYnNvbHV0ZSImJkQuaW5BcnJheSgiYXV0byIs W2csaF0pPi0xLGo9e30saz17fSxsLG07aSYmKGs9ZS5wb3NpdGlvbigpKSxsPWk/ ay50b3A6cGFyc2VJbnQoZywxMCl8fDAsbT1pP2subGVmdDpwYXJzZUludChoLDEw KXx8MCxELmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMsZikpLGIudG9wIT1u dWxsJiYoai50b3A9Yi50b3AtZi50b3ArbCksYi5sZWZ0IT1udWxsJiYoai5sZWZ0 PWIubGVmdC1mLmxlZnQrbSksInVzaW5nImluIGI/Yi51c2luZy5jYWxsKGEsaik6 ZS5jc3Moail9fSxELmZuLmV4dGVuZCh7cG9zaXRpb246ZnVuY3Rpb24oKXtpZigh dGhpc1swXSlyZXR1cm4gbnVsbDt2YXIgYT10aGlzWzBdLGI9dGhpcy5vZmZzZXRQ YXJlbnQoKSxjPXRoaXMub2Zmc2V0KCksZD1jZy50ZXN0KGJbMF0ubm9kZU5hbWUp P3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCk7cmV0dXJuIGMudG9wLT1wYXJzZUZs b2F0KEQuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQo RC5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChELmNz cyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQo RC5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwLHt0b3A6Yy50b3AtZC50 b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJl bnR8fEMuYm9keTt3aGlsZShhJiYhY2cudGVzdChhLm5vZGVOYW1lKSYmRC5jc3Mo YSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJu IGF9KX19KSxELmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxkKXt2YXIg ZT0ic2Nyb2xsIitkO0QuZm5bZV09ZnVuY3Rpb24oZCl7dmFyIGY9dGhpc1swXSxn O3JldHVybiBmP2QhPT1iP3RoaXMuZWFjaChmdW5jdGlvbigpe2c9Yyh0aGlzKSxn P2cuc2Nyb2xsVG8oYT9EKGcpLnNjcm9sbExlZnQoKTpkLGE/ZDpEKGcpLnNjcm9s bFRvcCgpKTp0aGlzW2VdPWR9KTooZz1jKGYpLGc/InBhZ2VYT2Zmc2V0ImluIGc/ Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06RC5zdXBwb3J0LmJveE1v ZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtlXXx8Zy5kb2N1bWVudC5i b2R5W2VdOmZbZV0pOm51bGx9fSksRC5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxm dW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtELmZuWyJpbm5lciIr Y109ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1swXT9wYXJzZUZsb2F0KEQuY3NzKHRo aXNbMF0sZCwicGFkZGluZyIpKTpudWxsfSxELmZuWyJvdXRlciIrY109ZnVuY3Rp b24oYSl7cmV0dXJuIHRoaXNbMF0/cGFyc2VGbG9hdChELmNzcyh0aGlzWzBdLGQs YT8ibWFyZ2luIjoiYm9yZGVyIikpOm51bGx9LEQuZm5bZF09ZnVuY3Rpb24oYSl7 dmFyIGU9dGhpc1swXTtpZighZSlyZXR1cm4gYT09bnVsbD9udWxsOnRoaXM7aWYo RC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFy IGM9RCh0aGlzKTtjW2RdKGEuY2FsbCh0aGlzLGIsY1tkXSgpKSl9KTtpZihELmlz V2luZG93KGUpKXt2YXIgZj1lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xp ZW50IitjXTtyZXR1cm4gZS5kb2N1bWVudC5jb21wYXRNb2RlPT09IkNTUzFDb21w YXQiJiZmfHxlLmRvY3VtZW50LmJvZHlbImNsaWVudCIrY118fGZ9aWYoZS5ub2Rl VHlwZT09PTkpcmV0dXJuIE1hdGgubWF4KGUuZG9jdW1lbnRFbGVtZW50WyJjbGll bnQiK2NdLGUuYm9keVsic2Nyb2xsIitjXSxlLmRvY3VtZW50RWxlbWVudFsic2Ny b2xsIitjXSxlLmJvZHlbIm9mZnNldCIrY10sZS5kb2N1bWVudEVsZW1lbnRbIm9m ZnNldCIrY10pO2lmKGE9PT1iKXt2YXIgZz1ELmNzcyhlLGQpLGg9cGFyc2VGbG9h dChnKTtyZXR1cm4gRC5pc05hTihoKT9nOmh9cmV0dXJuIHRoaXMuY3NzKGQsdHlw ZW9mIGE9PSJzdHJpbmciP2E6YSsicHgiKX19KSxhLmpRdWVyeT1hLiQ9RH0pKHdp bmRvdyksZnVuY3Rpb24oYSl7YS5hamF4U2V0dGluZ3MuYWNjZXB0cy5fZGVmYXVs dD0idGV4dC9qYXZhc2NyaXB0LCB0ZXh0L2h0bWwsIGFwcGxpY2F0aW9uL3htbCwg dGV4dC94bWwsICovKiJ9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS5mbi5yZXNldD1m dW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsodHlwZW9mIHRo aXMucmVzZXQ9PSJmdW5jdGlvbiJ8fHR5cGVvZiB0aGlzLnJlc2V0PT0ib2JqZWN0 IiYmIXRoaXMucmVzZXQubm9kZVR5cGUpJiZ0aGlzLnJlc2V0KCl9KX0sYS5mbi5l bmFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhp cy5kaXNhYmxlZD0hMX0pfSxhLmZuLmRpc2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD0hMH0pfX0oalF1ZXJ5 KSxmdW5jdGlvbihhKXthLmV4dGVuZCh7ZmllbGRFdmVudDpmdW5jdGlvbihhLGIp e3ZhciBjPWFbMF18fGEsZD0iY2hhbmdlIjtyZXR1cm4gYy50eXBlPT0icmFkaW8i fHxjLnR5cGU9PSJjaGVja2JveCI/ZD0iY2xpY2siOmImJihjLnR5cGU9PSJ0ZXh0 Inx8Yy50eXBlPT0idGV4dGFyZWEifHxjLnR5cGU9PSJwYXNzd29yZCIpJiYoZD0i a2V5dXAiKSxkfX0pLGEuZm4uZXh0ZW5kKHtkZWxheWVkT2JzZXJ2ZXI6ZnVuY3Rp b24oYixjKXt2YXIgZD1hKHRoaXMpO3R5cGVvZiB3aW5kb3cuZGVsYXllZE9ic2Vy dmVyU3RhY2s9PSJ1bmRlZmluZWQiJiYod2luZG93LmRlbGF5ZWRPYnNlcnZlclN0 YWNrPVtdKSx0eXBlb2Ygd2luZG93LmRlbGF5ZWRPYnNlcnZlckNhbGxiYWNrPT0i dW5kZWZpbmVkIiYmKHdpbmRvdy5kZWxheWVkT2JzZXJ2ZXJDYWxsYmFjaz1mdW5j dGlvbihhKXt2YXIgYj13aW5kb3cuZGVsYXllZE9ic2VydmVyU3RhY2tbYV07Yi50 aW1lciYmY2xlYXJUaW1lb3V0KGIudGltZXIpLGIudGltZXI9c2V0VGltZW91dChm dW5jdGlvbigpe2IudGltZXI9bnVsbCxiLmNhbGxiYWNrKGIub2JqLGIub2JqLmZv cm1WYWwoKSl9LGIuZGVsYXkqMWUzKSxiLm9sZFZhbD1iLm9iai5mb3JtVmFsKCl9 KSx3aW5kb3cuZGVsYXllZE9ic2VydmVyU3RhY2sucHVzaCh7b2JqOmQsdGltZXI6 bnVsbCxkZWxheTpiLG9sZFZhbDpkLmZvcm1WYWwoKSxjYWxsYmFjazpjfSk7dmFy IGU9d2luZG93LmRlbGF5ZWRPYnNlcnZlclN0YWNrLmxlbmd0aC0xO2RbMF0udGFn TmFtZT09IkZPUk0iP2EoIjppbnB1dCIsZCkuZWFjaChmdW5jdGlvbigpe3ZhciBj PWEodGhpcyk7Yy5iaW5kKGEuZmllbGRFdmVudChjLGIpLGZ1bmN0aW9uKCl7dmFy IGE9d2luZG93LmRlbGF5ZWRPYnNlcnZlclN0YWNrW2VdO2lmKGEub2JqLmZvcm1W YWwoKT09YS5vbGRWYWwpcmV0dXJuO3dpbmRvdy5kZWxheWVkT2JzZXJ2ZXJDYWxs YmFjayhlKX0pfSk6ZC5iaW5kKGEuZmllbGRFdmVudChkLGIpLGZ1bmN0aW9uKCl7 dmFyIGE9d2luZG93LmRlbGF5ZWRPYnNlcnZlclN0YWNrW2VdO2lmKGEub2JqLmZv cm1WYWwoKT09YS5vbGRWYWwpcmV0dXJuO3dpbmRvdy5kZWxheWVkT2JzZXJ2ZXJD YWxsYmFjayhlKX0pfSxmb3JtVmFsOmZ1bmN0aW9uKCl7dmFyIGE9dGhpc1swXTty ZXR1cm4gYS50YWdOYW1lPT0iRk9STSI/dGhpcy5zZXJpYWxpemUoKTphLnR5cGU9 PSJjaGVja2JveCJ8fGEudHlwZT09InJhZGlvIj90aGlzLmZpbHRlcigiaW5wdXQ6 Y2hlY2tlZCIpLnZhbCgpfHwiIjp0aGlzLnZhbCgpfX0pfShqUXVlcnkpLGZ1bmN0 aW9uKCQpeyQuZm4uZXh0ZW5kKHt2aXN1YWxFZmZlY3Q6ZnVuY3Rpb24obyxvcHRp b25zKXtyZXR1cm4gb3B0aW9ucz9zcGVlZD1vcHRpb25zLmR1cmF0aW9uKjFlMzpz cGVlZD1udWxsLGU9by5yZXBsYWNlKC9cXyguKS9nLGZ1bmN0aW9uKGEsYil7cmV0 dXJuIGIudG9VcHBlckNhc2UoKX0pLGV2YWwoIiQodGhpcykuIitlKyIoIitzcGVl ZCsiKSIpfSxhcHBlYXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5mYWRlSW4o YSxiKX0sYmxpbmREb3duOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc2hvdygi YmxpbmQiLHtkaXJlY3Rpb246InZlcnRpY2FsIn0sYSxiKX0sYmxpbmRVcDpmdW5j dGlvbihhLGIpe3JldHVybiB0aGlzLmhpZGUoImJsaW5kIix7ZGlyZWN0aW9uOiJ2 ZXJ0aWNhbCJ9LGEsYil9LGJsaW5kUmlnaHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g dGhpcy5zaG93KCJibGluZCIse2RpcmVjdGlvbjoiaG9yaXpvbnRhbCJ9LGEsYil9 LGJsaW5kTGVmdDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmhpZGUoImJsaW5k Iix7ZGlyZWN0aW9uOiJob3Jpem9udGFsIn0sYSxiKSx0aGlzfSxkcm9wT3V0OmZ1 bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaGlkZSgiZHJvcCIse2RpcmVjdGlvbjoi ZG93biJ9LGEsYil9LGRyb3BJbjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnNo b3coImRyb3AiLHtkaXJlY3Rpb246InVwIn0sYSxiKX0sZmFkZTpmdW5jdGlvbihh LGIpe3JldHVybiB0aGlzLmZhZGVPdXQoYSxiKX0sZmFkZVRvZ2dsZTpmdW5jdGlv bihhLGIpe3JldHVybiB0aGlzLmFuaW1hdGUoe29wYWNpdHk6InRvZ2dsZSJ9LGEs Yil9LGZvbGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5oaWRlKCJmb2xkIix7 fSxhLGIpfSxmb2xkT3V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc2hvdygi Zm9sZCIse30sYSxiKX0sZ3JvdzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnNo b3coInNjYWxlIix7fSxhLGIpfSxoaWdobGlnaHQ6ZnVuY3Rpb24oYSxiKXtyZXR1 cm4gdGhpcy5zaG93KCJoaWdobGlnaHQiLHt9LGEsYil9LHB1ZmY6ZnVuY3Rpb24o YSxiKXtyZXR1cm4gdGhpcy5oaWRlKCJwdWZmIix7fSxhLGIpfSxwdWxzYXRlOmZ1 bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc2hvdygicHVsc2F0ZSIse30sYSxiKX0s c2hha2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zaG93KCJzaGFrZSIse30s YSxiKX0sc2hyaW5rOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaGlkZSgic2Nh bGUiLHt9LGEsYil9LHNxdWlzaDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmhp ZGUoInNjYWxlIix7b3JpZ2luOlsidG9wIiwibGVmdCJdfSxhLGIpfSxzbGlkZVVw OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaGlkZSgic2xpZGUiLHtkaXJlY3Rp b246InVwIn0sYSxiKX0sc2xpZGVEb3duOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRo aXMuc2hvdygic2xpZGUiLHtkaXJlY3Rpb246InVwIn0sYSxiKX0sc3dpdGNoT2Zm OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaGlkZSgiY2xpcCIse30sYSxiKX0s c3dpdGNoT246ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5zaG93KCJjbGlwIix7 fSxhLGIpfX0pfShqUXVlcnkpLGZ1bmN0aW9uKGEpe3ZhciBiO2EucmFpbHM9Yj17 bGlua0NsaWNrU2VsZWN0b3I6ImFbZGF0YS1jb25maXJtXSwgYVtkYXRhLW1ldGhv ZF0sIGFbZGF0YS1yZW1vdGVdIixmb3JtU3VibWl0U2VsZWN0b3I6ImZvcm0iLGZv cm1JbnB1dENsaWNrU2VsZWN0b3I6ImZvcm0gaW5wdXRbdHlwZT1zdWJtaXRdLCBm b3JtIGlucHV0W3R5cGU9aW1hZ2VdLCBmb3JtIGJ1dHRvblt0eXBlPXN1Ym1pdF0s IGZvcm0gYnV0dG9uOm5vdChbdHlwZV0pIixkaXNhYmxlU2VsZWN0b3I6ImlucHV0 W2RhdGEtZGlzYWJsZS13aXRoXSwgYnV0dG9uW2RhdGEtZGlzYWJsZS13aXRoXSwg dGV4dGFyZWFbZGF0YS1kaXNhYmxlLXdpdGhdIixlbmFibGVTZWxlY3RvcjoiaW5w dXRbZGF0YS1kaXNhYmxlLXdpdGhdOmRpc2FibGVkLCBidXR0b25bZGF0YS1kaXNh YmxlLXdpdGhdOmRpc2FibGVkLCB0ZXh0YXJlYVtkYXRhLWRpc2FibGUtd2l0aF06 ZGlzYWJsZWQiLHJlcXVpcmVkSW5wdXRTZWxlY3RvcjoiaW5wdXRbbmFtZV1bcmVx dWlyZWRdLHRleHRhcmVhW25hbWVdW3JlcXVpcmVkXSIsZmlsZUlucHV0U2VsZWN0 b3I6ImlucHV0OmZpbGUiLENTUkZQcm90ZWN0aW9uOmZ1bmN0aW9uKGIpe3ZhciBj PWEoJ21ldGFbbmFtZT0iY3NyZi10b2tlbiJdJykuYXR0cigiY29udGVudCIpO2Mm JmIuc2V0UmVxdWVzdEhlYWRlcigiWC1DU1JGLVRva2VuIixjKX0sZmlyZTpmdW5j dGlvbihiLGMsZCl7dmFyIGU9YS5FdmVudChjKTtyZXR1cm4gYi50cmlnZ2VyKGUs ZCksZS5yZXN1bHQhPT0hMX0sY29uZmlybTpmdW5jdGlvbihhKXtyZXR1cm4gY29u ZmlybShhKX0sYWpheDpmdW5jdGlvbihiKXtyZXR1cm4gYS5hamF4KGIpfSxoYW5k bGVSZW1vdGU6ZnVuY3Rpb24oYyl7dmFyIGQsZSxmLGc9Yy5kYXRhKCJ0eXBlIil8 fGEuYWpheFNldHRpbmdzJiZhLmFqYXhTZXR0aW5ncy5kYXRhVHlwZTtpZihiLmZp cmUoYywiYWpheDpiZWZvcmUiKSl7aWYoYy5pcygiZm9ybSIpKXtkPWMuYXR0cigi bWV0aG9kIiksZT1jLmF0dHIoImFjdGlvbiIpLGY9Yy5zZXJpYWxpemVBcnJheSgp O3ZhciBoPWMuZGF0YSgidWpzOnN1Ym1pdC1idXR0b24iKTtoJiYoZi5wdXNoKGgp LGMuZGF0YSgidWpzOnN1Ym1pdC1idXR0b24iLG51bGwpKX1lbHNlIGQ9Yy5kYXRh KCJtZXRob2QiKSxlPWMuYXR0cigiaHJlZiIpLGY9Yy5kYXRhKCJwYXJhbXMiKXx8 bnVsbDtiLmFqYXgoe3VybDplLHR5cGU6ZHx8IkdFVCIsZGF0YTpmLGRhdGFUeXBl OmcsYmVmb3JlU2VuZDpmdW5jdGlvbihhLGQpe3JldHVybiBkLmRhdGFUeXBlPT09 dW5kZWZpbmVkJiZhLnNldFJlcXVlc3RIZWFkZXIoImFjY2VwdCIsIiovKjtxPTAu NSwgIitkLmFjY2VwdHMuc2NyaXB0KSxiLmZpcmUoYywiYWpheDpiZWZvcmVTZW5k IixbYSxkXSl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSxiLGQpe2MudHJpZ2dlcigiYWph eDpzdWNjZXNzIixbYSxiLGRdKX0sY29tcGxldGU6ZnVuY3Rpb24oYSxiKXtjLnRy aWdnZXIoImFqYXg6Y29tcGxldGUiLFthLGJdKX0sZXJyb3I6ZnVuY3Rpb24oYSxi LGQpe2MudHJpZ2dlcigiYWpheDplcnJvciIsW2EsYixkXSl9fSl9fSxoYW5kbGVN ZXRob2Q6ZnVuY3Rpb24oYil7dmFyIGM9Yi5hdHRyKCJocmVmIiksZD1iLmRhdGEo Im1ldGhvZCIpLGU9YSgibWV0YVtuYW1lPWNzcmYtdG9rZW5dIikuYXR0cigiY29u dGVudCIpLGY9YSgibWV0YVtuYW1lPWNzcmYtcGFyYW1dIikuYXR0cigiY29udGVu dCIpLGc9YSgnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IicrYysnIj48L2Zv cm0+JyksaD0nPGlucHV0IG5hbWU9Il9tZXRob2QiIHZhbHVlPSInK2QrJyIgdHlw ZT0iaGlkZGVuIiAvPic7ZiE9PXVuZGVmaW5lZCYmZSE9PXVuZGVmaW5lZCYmKGgr PSc8aW5wdXQgbmFtZT0iJytmKyciIHZhbHVlPSInK2UrJyIgdHlwZT0iaGlkZGVu IiAvPicpLGcuaGlkZSgpLmFwcGVuZChoKS5hcHBlbmRUbygiYm9keSIpLGcuc3Vi bWl0KCl9LGRpc2FibGVGb3JtRWxlbWVudHM6ZnVuY3Rpb24oYyl7Yy5maW5kKGIu ZGlzYWJsZVNlbGVjdG9yKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKSxj PWIuaXMoImJ1dHRvbiIpPyJodG1sIjoidmFsIjtiLmRhdGEoInVqczplbmFibGUt d2l0aCIsYltjXSgpKSxiW2NdKGIuZGF0YSgiZGlzYWJsZS13aXRoIikpLGIuYXR0 cigiZGlzYWJsZWQiLCJkaXNhYmxlZCIpfSl9LGVuYWJsZUZvcm1FbGVtZW50czpm dW5jdGlvbihjKXtjLmZpbmQoYi5lbmFibGVTZWxlY3RvcikuZWFjaChmdW5jdGlv bigpe3ZhciBiPWEodGhpcyksYz1iLmlzKCJidXR0b24iKT8iaHRtbCI6InZhbCI7 Yi5kYXRhKCJ1anM6ZW5hYmxlLXdpdGgiKSYmYltjXShiLmRhdGEoInVqczplbmFi bGUtd2l0aCIpKSxiLnJlbW92ZUF0dHIoImRpc2FibGVkIil9KX0sYWxsb3dBY3Rp b246ZnVuY3Rpb24oYSl7dmFyIGM9YS5kYXRhKCJjb25maXJtIiksZD0hMSxlO3Jl dHVybiBjPyhiLmZpcmUoYSwiY29uZmlybSIpJiYoZD1iLmNvbmZpcm0oYyksZT1i LmZpcmUoYSwiY29uZmlybTpjb21wbGV0ZSIsW2RdKSksZCYmZSk6ITB9LGJsYW5r SW5wdXRzOmZ1bmN0aW9uKGIsYyxkKXt2YXIgZT1hKCksZixnPWN8fCJpbnB1dCx0 ZXh0YXJlYSI7cmV0dXJuIGIuZmluZChnKS5lYWNoKGZ1bmN0aW9uKCl7Zj1hKHRo aXMpO2lmKGQ/Zi52YWwoKTohZi52YWwoKSllPWUuYWRkKGYpfSksZS5sZW5ndGg/ ZTohMX0sbm9uQmxhbmtJbnB1dHM6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYi5ibGFu a0lucHV0cyhhLGMsITApfSxzdG9wRXZlcnl0aGluZzpmdW5jdGlvbihiKXtyZXR1 cm4gYShiLnRhcmdldCkudHJpZ2dlcigidWpzOmV2ZXJ5dGhpbmdTdG9wcGVkIiks Yi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMX0sY2FsbEZvcm1TdWJtaXRC aW5kaW5nczpmdW5jdGlvbihiKXt2YXIgYz1iLmRhdGEoImV2ZW50cyIpLGQ9ITA7 cmV0dXJuIGMhPT11bmRlZmluZWQmJmMuc3VibWl0IT09dW5kZWZpbmVkJiZhLmVh Y2goYy5zdWJtaXQsZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5oYW5kbGVyPT0i ZnVuY3Rpb24iKXJldHVybiBkPWIuaGFuZGxlcihiLmRhdGEpfSksZH19LCJhamF4 UHJlZmlsdGVyImluIGE/YS5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEsYyxkKXti LkNTUkZQcm90ZWN0aW9uKGQpfSk6YShkb2N1bWVudCkuYWpheFNlbmQoZnVuY3Rp b24oYSxjKXtiLkNTUkZQcm90ZWN0aW9uKGMpfSksYShiLmxpbmtDbGlja1NlbGVj dG9yKS5saXZlKCJjbGljay5yYWlscyIsZnVuY3Rpb24oYyl7dmFyIGQ9YSh0aGlz KTtpZighYi5hbGxvd0FjdGlvbihkKSlyZXR1cm4gYi5zdG9wRXZlcnl0aGluZyhj KTtpZihkLmRhdGEoInJlbW90ZSIpIT09dW5kZWZpbmVkKXJldHVybiBiLmhhbmRs ZVJlbW90ZShkKSwhMTtpZihkLmRhdGEoIm1ldGhvZCIpKXJldHVybiBiLmhhbmRs ZU1ldGhvZChkKSwhMX0pLGEoYi5mb3JtU3VibWl0U2VsZWN0b3IpLmxpdmUoInN1 Ym1pdC5yYWlscyIsZnVuY3Rpb24oYyl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgi cmVtb3RlIikhPT11bmRlZmluZWQsZj1iLmJsYW5rSW5wdXRzKGQsYi5yZXF1aXJl ZElucHV0U2VsZWN0b3IpLGc9Yi5ub25CbGFua0lucHV0cyhkLGIuZmlsZUlucHV0 U2VsZWN0b3IpO2lmKCFiLmFsbG93QWN0aW9uKGQpKXJldHVybiBiLnN0b3BFdmVy eXRoaW5nKGMpO2lmKGYmJmIuZmlyZShkLCJhamF4OmFib3J0ZWQ6cmVxdWlyZWQi LFtmXSkpcmV0dXJuIGIuc3RvcEV2ZXJ5dGhpbmcoYyk7aWYoZSlyZXR1cm4gZz9i LmZpcmUoZCwiYWpheDphYm9ydGVkOmZpbGUiLFtnXSk6IWEuc3VwcG9ydC5zdWJt aXRCdWJibGVzJiZiLmNhbGxGb3JtU3VibWl0QmluZGluZ3MoZCk9PT0hMT9iLnN0 b3BFdmVyeXRoaW5nKGMpOihiLmhhbmRsZVJlbW90ZShkKSwhMSk7c2V0VGltZW91 dChmdW5jdGlvbigpe2IuZGlzYWJsZUZvcm1FbGVtZW50cyhkKX0sMTMpfSksYShi LmZvcm1JbnB1dENsaWNrU2VsZWN0b3IpLmxpdmUoImNsaWNrLnJhaWxzIixmdW5j dGlvbihjKXt2YXIgZD1hKHRoaXMpO2lmKCFiLmFsbG93QWN0aW9uKGQpKXJldHVy biBiLnN0b3BFdmVyeXRoaW5nKGMpO3ZhciBlPWQuYXR0cigibmFtZSIpLGY9ZT97 bmFtZTplLHZhbHVlOmQudmFsKCl9Om51bGw7ZC5jbG9zZXN0KCJmb3JtIikuZGF0 YSgidWpzOnN1Ym1pdC1idXR0b24iLGYpfSksYShiLmZvcm1TdWJtaXRTZWxlY3Rv cikubGl2ZSgiYWpheDpiZWZvcmVTZW5kLnJhaWxzIixmdW5jdGlvbihjKXt0aGlz PT1jLnRhcmdldCYmYi5kaXNhYmxlRm9ybUVsZW1lbnRzKGEodGhpcykpfSksYShi LmZvcm1TdWJtaXRTZWxlY3RvcikubGl2ZSgiYWpheDpjb21wbGV0ZS5yYWlscyIs ZnVuY3Rpb24oYyl7dGhpcz09Yy50YXJnZXQmJmIuZW5hYmxlRm9ybUVsZW1lbnRz KGEodGhpcykpfSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiKXtp ZihhLmZhY2Vib3guc2V0dGluZ3MuaW5pdGVkKXJldHVybiEwO2EuZmFjZWJveC5z ZXR0aW5ncy5pbml0ZWQ9ITAsYShkb2N1bWVudCkudHJpZ2dlcigiaW5pdC5mYWNl Ym94IiksZSgpO3ZhciBjPWEuZmFjZWJveC5zZXR0aW5ncy5pbWFnZVR5cGVzLmpv aW4oInwiKTthLmZhY2Vib3guc2V0dGluZ3MuaW1hZ2VUeXBlc1JlZ2V4cD1uZXcg UmVnRXhwKCIuKCIrYysiKSQiLCJpIiksYiYmYS5leHRlbmQoYS5mYWNlYm94LnNl dHRpbmdzLGIpLGEoImJvZHkiKS5hcHBlbmQoYS5mYWNlYm94LnNldHRpbmdzLmZh Y2Vib3hIdG1sKTt2YXIgZD1bbmV3IEltYWdlLG5ldyBJbWFnZV07ZFswXS5zcmM9 YS5mYWNlYm94LnNldHRpbmdzLmNsb3NlSW1hZ2UsZFsxXS5zcmM9YS5mYWNlYm94 LnNldHRpbmdzLmxvYWRpbmdJbWFnZSxhKCIjZmFjZWJveCAuY2xvc2UiKS5jbGlj ayhhLmZhY2Vib3guY2xvc2UpLGEoIiNmYWNlYm94IC5jbG9zZV9pbWFnZSIpLmF0 dHIoInNyYyIsYS5mYWNlYm94LnNldHRpbmdzLmNsb3NlSW1hZ2UpfWZ1bmN0aW9u IGMoKXt2YXIgYSxiO3JldHVybiBzZWxmLnBhZ2VZT2Zmc2V0PyhiPXNlbGYucGFn ZVlPZmZzZXQsYT1zZWxmLnBhZ2VYT2Zmc2V0KTpkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A/KGI9ZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCxhPWRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudC5zY3JvbGxMZWZ0KTpkb2N1bWVudC5ib2R5JiYoYj1kb2N1bWVu dC5ib2R5LnNjcm9sbFRvcCxhPWRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCksbmV3 IEFycmF5KGEsYil9ZnVuY3Rpb24gZCgpe3ZhciBhO3JldHVybiBzZWxmLmlubmVy SGVpZ2h0P2E9c2VsZi5pbm5lckhlaWdodDpkb2N1bWVudC5kb2N1bWVudEVsZW1l bnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ/YT1kb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OmRvY3VtZW50LmJvZHkm JihhPWRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KSxhfWZ1bmN0aW9uIGUoKXt2 YXIgYj1hLmZhY2Vib3guc2V0dGluZ3M7Yi5sb2FkaW5nSW1hZ2U9Yi5sb2FkaW5n X2ltYWdlfHxiLmxvYWRpbmdJbWFnZSxiLmNsb3NlSW1hZ2U9Yi5jbG9zZV9pbWFn ZXx8Yi5jbG9zZUltYWdlLGIuaW1hZ2VUeXBlcz1iLmltYWdlX3R5cGVzfHxiLmlt YWdlVHlwZXMsYi5mYWNlYm94SHRtbD1iLmZhY2Vib3hfaHRtbHx8Yi5mYWNlYm94 SHRtbH1mdW5jdGlvbiBmKGIsYyl7aWYoYi5tYXRjaCgvIy8pKXt2YXIgZD13aW5k b3cubG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdLGU9Yi5yZXBsYWNlKGQsIiIp O2EuZmFjZWJveC5yZXZlYWwoYShlKS5zaG93KCkucmVwbGFjZVdpdGgoIjxkaXYg aWQ9J2ZhY2Vib3hfbW92ZWQnPjwvZGl2PiIpLGMpfWVsc2UgYi5tYXRjaChhLmZh Y2Vib3guc2V0dGluZ3MuaW1hZ2VUeXBlc1JlZ2V4cCk/ZyhiLGMpOmgoYixjKX1m dW5jdGlvbiBnKGIsYyl7dmFyIGQ9bmV3IEltYWdlO2Qub25sb2FkPWZ1bmN0aW9u KCl7YS5mYWNlYm94LnJldmVhbCgnPGRpdiBjbGFzcz0iaW1hZ2UiPjxpbWcgc3Jj PSInK2Quc3JjKyciIC8+PC9kaXY+JyxjKX0sZC5zcmM9Yn1mdW5jdGlvbiBoKGIs Yyl7YS5nZXQoYixmdW5jdGlvbihiKXthLmZhY2Vib3gucmV2ZWFsKGIsYyl9KX1m dW5jdGlvbiBpKCl7cmV0dXJuIGEuZmFjZWJveC5zZXR0aW5ncy5vdmVybGF5PT0w fHxhLmZhY2Vib3guc2V0dGluZ3Mub3BhY2l0eT09PW51bGx9ZnVuY3Rpb24gaigp e2lmKGkoKSlyZXR1cm47cmV0dXJuIGEoIiNmYWNlYm94X292ZXJsYXkiKS5sZW5n dGg9PTAmJmEoImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9ImZhY2Vib3hfb3Zlcmxh eSIgY2xhc3M9ImZhY2Vib3hfaGlkZSI+PC9kaXY+JyksYSgiI2ZhY2Vib3hfb3Zl cmxheSIpLmhpZGUoKS5hZGRDbGFzcygiZmFjZWJveF9vdmVybGF5QkciKS5jc3Mo Im9wYWNpdHkiLGEuZmFjZWJveC5zZXR0aW5ncy5vcGFjaXR5KS5jbGljayhmdW5j dGlvbigpe2EoZG9jdW1lbnQpLnRyaWdnZXIoImNsb3NlLmZhY2Vib3giKX0pLmZh ZGVJbigyMDApLCExfWZ1bmN0aW9uIGsoKXtpZihpKCkpcmV0dXJuO3JldHVybiBh KCIjZmFjZWJveF9vdmVybGF5IikuZmFkZU91dCgyMDAsZnVuY3Rpb24oKXthKCIj ZmFjZWJveF9vdmVybGF5IikucmVtb3ZlQ2xhc3MoImZhY2Vib3hfb3ZlcmxheUJH IiksYSgiI2ZhY2Vib3hfb3ZlcmxheSIpLmFkZENsYXNzKCJmYWNlYm94X2hpZGUi KSxhKCIjZmFjZWJveF9vdmVybGF5IikucmVtb3ZlKCl9KSwhMX1hLmZhY2Vib3g9 ZnVuY3Rpb24oYixjKXthLmZhY2Vib3gubG9hZGluZygpLGIuYWpheD9oKGIuYWph eCxjKTpiLmltYWdlP2coYi5pbWFnZSxjKTpiLmRpdj9mKGIuZGl2LGMpOmEuaXNG dW5jdGlvbihiKT9iLmNhbGwoYSk6YS5mYWNlYm94LnJldmVhbChiLGMpfSxhLmV4 dGVuZChhLmZhY2Vib3gse3NldHRpbmdzOntvcGFjaXR5Oi42LG92ZXJsYXk6ITAs bG9hZGluZ0ltYWdlOiIvaW1hZ2VzL3NwaW5uZXIuZ2lmIixjbG9zZUltYWdlOiIv aW1hZ2VzL2RpYWxvZy1jbG9zZS5naWYiLGltYWdlVHlwZXM6WyJwbmciLCJqcGci LCJqcGVnIiwiZ2lmIl0sZmFjZWJveEh0bWw6JyAgICA8ZGl2IGlkPSJmYWNlYm94 IiBzdHlsZT0iZGlzcGxheTpub25lOyI+ICAgICAgIDxkaXYgY2xhc3M9InBvcHVw Ij4gICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4gICAgICAgICAgIDxkaXYgY2xh c3M9ImhlYWRlciI+ICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJjbG9z ZSI+ICAgICAgICAgICAgICAgPGltZyBzcmM9Ii9pbWFnZXMvZGlhbG9nLWNsb3Nl LmdpZiIgdGl0bGU9ImNsb3NlIiBjbGFzcz0iY2xvc2VfaW1hZ2UiIC8+ICAgICAg ICAgICAgIDwvYT4gICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgPGRpdiBjbGFz cz0iY29udGVudCI+ICAgICAgICAgICA8L2Rpdj4gICAgICAgICA8L2Rpdj4gICAg ICAgPC9kaXY+ICAgICA8L2Rpdj4nfSxsb2FkaW5nOmZ1bmN0aW9uKCl7YigpO2lm KGEoIiNmYWNlYm94IC5sb2FkaW5nIikubGVuZ3RoPT0xKXJldHVybiEwO2ooKSxh KCIjZmFjZWJveCAuY29udGVudCIpLmVtcHR5KCksYSgiI2ZhY2Vib3ggLmJvZHki KS5jaGlsZHJlbigpLmhpZGUoKS5lbmQoKS5hcHBlbmQoJzxkaXYgY2xhc3M9Imxv YWRpbmciPjxpbWcgc3JjPSInK2EuZmFjZWJveC5zZXR0aW5ncy5sb2FkaW5nSW1h Z2UrJyIvPjwvZGl2PicpLGEoIiNmYWNlYm94IikuY3NzKHt0b3A6YygpWzFdK2Qo KS8xMCxsZWZ0OmEod2luZG93KS53aWR0aCgpLzItMjA1fSkuc2hvdygpLGEoZG9j dW1lbnQpLmJpbmQoImtleWRvd24uZmFjZWJveCIsZnVuY3Rpb24oYil7cmV0dXJu IGIua2V5Q29kZT09MjcmJmEuZmFjZWJveC5jbG9zZSgpLCEwfSksYShkb2N1bWVu dCkudHJpZ2dlcigibG9hZGluZy5mYWNlYm94IgopfSxyZXZlYWw6ZnVuY3Rpb24o YixjKXtpZih0eXBlb2YgYz09InVuZGVmaW5lZCIpdmFyIGM9e307YShkb2N1bWVu dCkudHJpZ2dlcigiYmVmb3JlUmV2ZWFsLmZhY2Vib3giKSxjLmJlZm9yZVJldmVh bCYmYy5iZWZvcmVSZXZlYWwuY2FsbCh0aGlzKSxjLmtsYXNzJiZhKCIjZmFjZWJv eCAuY29udGVudCIpLmFkZENsYXNzKGMua2xhc3MpLGEoIiNmYWNlYm94IC5jb250 ZW50IikuYXBwZW5kKGIpLGEoIiNmYWNlYm94IC5sb2FkaW5nIikucmVtb3ZlKCks YSgiI2ZhY2Vib3ggLmJvZHkiKS5jaGlsZHJlbigpLmZhZGVJbigibm9ybWFsIiks YSgiI2ZhY2Vib3giKS5jc3MoImxlZnQiLGEod2luZG93KS53aWR0aCgpLzItYSgi I2ZhY2Vib3ggLmJvZHkiKS53aWR0aCgpLzIpLGEoZG9jdW1lbnQpLnRyaWdnZXIo InJldmVhbC5mYWNlYm94IiksYy5yZXZlYWwmJmMucmV2ZWFsLmNhbGwodGhpcyks YShkb2N1bWVudCkudHJpZ2dlcigiYWZ0ZXJSZXZlYWwuZmFjZWJveCIpLGMuYWZ0 ZXJSZXZlYWwmJmMuYWZ0ZXJSZXZlYWwuY2FsbCh0aGlzKX0sY2xvc2U6ZnVuY3Rp b24oKXtyZXR1cm4gYShkb2N1bWVudCkudHJpZ2dlcigiY2xvc2UuZmFjZWJveCIp LCExfX0pLGEuZm4uZmFjZWJveD1mdW5jdGlvbihjKXtmdW5jdGlvbiBkKCl7YS5m YWNlYm94LmxvYWRpbmcoITApO3ZhciBiPXt9O3JldHVybiBiLmtsYXNzPXRoaXMu cmVsLm1hdGNoKC9mYWNlYm94XFs/XC4oXHcrKVxdPy8pLGYodGhpcy5ocmVmLGIp LCExfXJldHVybiBiKGMpLHRoaXMuYmluZCgiY2xpY2suZmFjZWJveCIsZCl9LGEo ZG9jdW1lbnQpLmJpbmQoImNsb3NlLmZhY2Vib3giLGZ1bmN0aW9uKCl7YShkb2N1 bWVudCkudW5iaW5kKCJrZXlkb3duLmZhY2Vib3giKSxhKCIjZmFjZWJveCIpLmZh ZGVPdXQoZnVuY3Rpb24oKXthKCIjZmFjZWJveF9tb3ZlZCIpLmxlbmd0aD09MD9h KCIjZmFjZWJveCAuY29udGVudCIpLnJlbW92ZUNsYXNzKCkuYWRkQ2xhc3MoImNv bnRlbnQiKTphKCIjZmFjZWJveF9tb3ZlZCIpLnJlcGxhY2VXaXRoKGEoIiNmYWNl Ym94IC5jb250ZW50IikuY2hpbGRyZW4oKS5oaWRlKCkpLGsoKSxhKCIjZmFjZWJv eCAubG9hZGluZyIpLnJlbW92ZSgpfSl9KX0oalF1ZXJ5KSxmdW5jdGlvbihhLGIp e2Z1bmN0aW9uIGMoYil7cmV0dXJuIWEoYikucGFyZW50cygpLmFuZFNlbGYoKS5m aWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gYS5jdXJDU1ModGhpcywidmlzaWJpbGl0 eSIpPT09ImhpZGRlbiJ8fGEuZXhwci5maWx0ZXJzLmhpZGRlbih0aGlzKX0pLmxl bmd0aH1hLnVpPWEudWl8fHt9LGEudWkudmVyc2lvbnx8KGEuZXh0ZW5kKGEudWks e3ZlcnNpb246IjEuOC42IixrZXlDb2RlOntBTFQ6MTgsQkFDS1NQQUNFOjgsQ0FQ U19MT0NLOjIwLENPTU1BOjE4OCxDT01NQU5EOjkxLENPTU1BTkRfTEVGVDo5MSxD T01NQU5EX1JJR0hUOjkzLENPTlRST0w6MTcsREVMRVRFOjQ2LERPV046NDAsRU5E OjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LElOU0VSVDo0NSxMRUZUOjM3 LE1FTlU6OTMsTlVNUEFEX0FERDoxMDcsTlVNUEFEX0RFQ0lNQUw6MTEwLE5VTVBB RF9ESVZJREU6MTExLE5VTVBBRF9FTlRFUjoxMDgsTlVNUEFEX01VTFRJUExZOjEw NixOVU1QQURfU1VCVFJBQ1Q6MTA5LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBF UklPRDoxOTAsUklHSFQ6MzksU0hJRlQ6MTYsU1BBQ0U6MzIsVEFCOjksVVA6Mzgs V0lORE9XUzo5MX19KSxhLmZuLmV4dGVuZCh7X2ZvY3VzOmEuZm4uZm9jdXMsZm9j dXM6ZnVuY3Rpb24oYixjKXtyZXR1cm4gdHlwZW9mIGI9PSJudW1iZXIiP3RoaXMu ZWFjaChmdW5jdGlvbigpe3ZhciBkPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigp e2EoZCkuZm9jdXMoKSxjJiZjLmNhbGwoZCl9LGIpfSk6dGhpcy5fZm9jdXMuYXBw bHkodGhpcyxhcmd1bWVudHMpfSxzY3JvbGxQYXJlbnQ6ZnVuY3Rpb24oKXt2YXIg YjtyZXR1cm4gYj1hLmJyb3dzZXIubXNpZSYmLyhzdGF0aWN8cmVsYXRpdmUpLy50 ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKXx8L2Fic29sdXRlLy50ZXN0KHRoaXMu Y3NzKCJwb3NpdGlvbiIpKT90aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24o KXtyZXR1cm4vKHJlbGF0aXZlfGFic29sdXRlfGZpeGVkKS8udGVzdChhLmN1ckNT Uyh0aGlzLCJwb3NpdGlvbiIsMSkpJiYvKGF1dG98c2Nyb2xsKS8udGVzdChhLmN1 ckNTUyh0aGlzLCJvdmVyZmxvdyIsMSkrYS5jdXJDU1ModGhpcywib3ZlcmZsb3ct eSIsMSkrYS5jdXJDU1ModGhpcywib3ZlcmZsb3cteCIsMSkpfSkuZXEoMCk6dGhp cy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuLyhhdXRvfHNjcm9s bCkvLnRlc3QoYS5jdXJDU1ModGhpcywib3ZlcmZsb3ciLDEpK2EuY3VyQ1NTKHRo aXMsIm92ZXJmbG93LXkiLDEpK2EuY3VyQ1NTKHRoaXMsIm92ZXJmbG93LXgiLDEp KX0pLmVxKDApLC9maXhlZC8udGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSl8fCFi Lmxlbmd0aD9hKGRvY3VtZW50KTpifSx6SW5kZXg6ZnVuY3Rpb24oYyl7aWYoYyE9 PWIpcmV0dXJuIHRoaXMuY3NzKCJ6SW5kZXgiLGMpO2lmKHRoaXMubGVuZ3RoKXtj PWEodGhpc1swXSk7Zm9yKHZhciBkO2MubGVuZ3RoJiZjWzBdIT09ZG9jdW1lbnQ7 KXtkPWMuY3NzKCJwb3NpdGlvbiIpO2lmKGQ9PT0iYWJzb2x1dGUifHxkPT09InJl bGF0aXZlInx8ZD09PSJmaXhlZCIpe2Q9cGFyc2VJbnQoYy5jc3MoInpJbmRleCIp LDEwKTtpZighaXNOYU4oZCkmJmQhPT0wKXJldHVybiBkfWM9Yy5wYXJlbnQoKX19 cmV0dXJuIDB9LGRpc2FibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5iaW5kKChhLnN1cHBvcnQuc2VsZWN0c3RhcnQ/InNlbGVjdHN0YXJ0IjoibW91 c2Vkb3duIikrIi51aS1kaXNhYmxlU2VsZWN0aW9uIixmdW5jdGlvbihhKXthLnBy ZXZlbnREZWZhdWx0KCl9KX0sZW5hYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMudW5iaW5kKCIudWktZGlzYWJsZVNlbGVjdGlvbiIpfX0pLGEuZWFj aChbIldpZHRoIiwiSGVpZ2h0Il0sZnVuY3Rpb24oYyxkKXtmdW5jdGlvbiBlKGIs YyxkLGUpe3JldHVybiBhLmVhY2goZixmdW5jdGlvbigpe2MtPXBhcnNlRmxvYXQo YS5jdXJDU1MoYiwicGFkZGluZyIrdGhpcywhMCkpfHwwLGQmJihjLT1wYXJzZUZs b2F0KGEuY3VyQ1NTKGIsImJvcmRlciIrdGhpcysiV2lkdGgiLCEwKSl8fDApLGUm JihjLT1wYXJzZUZsb2F0KGEuY3VyQ1NTKGIsIm1hcmdpbiIrdGhpcywhMCkpfHww KX0pLGN9dmFyIGY9ZD09PSJXaWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIs IkJvdHRvbSJdLGc9ZC50b0xvd2VyQ2FzZSgpLGg9e2lubmVyV2lkdGg6YS5mbi5p bm5lcldpZHRoLGlubmVySGVpZ2h0OmEuZm4uaW5uZXJIZWlnaHQsb3V0ZXJXaWR0 aDphLmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6YS5mbi5vdXRlckhlaWdodH07 YS5mblsiaW5uZXIiK2RdPWZ1bmN0aW9uKGMpe3JldHVybiBjPT09Yj9oWyJpbm5l ciIrZF0uY2FsbCh0aGlzKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthKHRoaXMpLmNz cyhnLGUodGhpcyxjKSsicHgiKX0pfSxhLmZuWyJvdXRlciIrZF09ZnVuY3Rpb24o YixjKXtyZXR1cm4gdHlwZW9mIGIhPSJudW1iZXIiP2hbIm91dGVyIitkXS5jYWxs KHRoaXMsYik6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5jc3MoZyxlKHRo aXMsYiwhMCxjKSsicHgiKX0pfX0pLGEuZXh0ZW5kKGEuZXhwclsiOiJdLHtkYXRh OmZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4hIWEuZGF0YShiLGRbM10pfSxmb2N1c2Fi bGU6ZnVuY3Rpb24oYil7dmFyIGQ9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGU9 YS5hdHRyKGIsInRhYmluZGV4Iik7cmV0dXJuImFyZWEiPT09ZD8oZD1iLnBhcmVu dE5vZGUsZT1kLm5hbWUsIWIuaHJlZnx8IWV8fGQubm9kZU5hbWUudG9Mb3dlckNh c2UoKSE9PSJtYXAiPyExOihiPWEoImltZ1t1c2VtYXA9IyIrZSsiXSIpWzBdLCEh YiYmYyhiKSkpOigvaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3Qv LnRlc3QoZCk/IWIuZGlzYWJsZWQ6ImEiPT1kP2IuaHJlZnx8IWlzTmFOKGUpOiFp c05hTihlKSkmJmMoYil9LHRhYmJhYmxlOmZ1bmN0aW9uKGIpe3ZhciBjPWEuYXR0 cihiLCJ0YWJpbmRleCIpO3JldHVybihpc05hTihjKXx8Yz49MCkmJmEoYikuaXMo Ijpmb2N1c2FibGUiKX19KSxhKGZ1bmN0aW9uKCl7dmFyIGI9ZG9jdW1lbnQuYm9k eSxjPWIuYXBwZW5kQ2hpbGQoYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi KSk7YS5leHRlbmQoYy5zdHlsZSx7bWluSGVpZ2h0OiIxMDBweCIsaGVpZ2h0OiJh dXRvIixwYWRkaW5nOjAsYm9yZGVyV2lkdGg6MH0pLGEuc3VwcG9ydC5taW5IZWln aHQ9Yy5vZmZzZXRIZWlnaHQ9PT0xMDAsYS5zdXBwb3J0LnNlbGVjdHN0YXJ0PSJv bnNlbGVjdHN0YXJ0ImluIGMsYi5yZW1vdmVDaGlsZChjKS5zdHlsZS5kaXNwbGF5 PSJub25lIn0pLGEuZXh0ZW5kKGEudWkse3BsdWdpbjp7YWRkOmZ1bmN0aW9uKGIs YyxkKXtiPWEudWlbYl0ucHJvdG90eXBlO2Zvcih2YXIgZSBpbiBkKWIucGx1Z2lu c1tlXT1iLnBsdWdpbnNbZV18fFtdLGIucGx1Z2luc1tlXS5wdXNoKFtjLGRbZV1d KX0sY2FsbDpmdW5jdGlvbihhLGIsYyl7aWYoKGI9YS5wbHVnaW5zW2JdKSYmYS5l bGVtZW50WzBdLnBhcmVudE5vZGUpZm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKysp YS5vcHRpb25zW2JbZF1bMF1dJiZiW2RdWzFdLmFwcGx5KGEuZWxlbWVudCxjKX19 LGNvbnRhaW5zOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGRvY3VtZW50LmNvbXBhcmVE b2N1bWVudFBvc2l0aW9uP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTY6 YSE9PWImJmEuY29udGFpbnMoYil9LGhhc1Njcm9sbDpmdW5jdGlvbihiLGMpe2lm KGEoYikuY3NzKCJvdmVyZmxvdyIpPT09ImhpZGRlbiIpcmV0dXJuITE7Yz1jJiZj PT09ImxlZnQiPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIjt2YXIgZD0hMTtyZXR1 cm4gYltjXT4wPyEwOihiW2NdPTEsZD1iW2NdPjAsYltjXT0wLGQpfSxpc092ZXJB eGlzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYT5iJiZhPGIrY30saXNPdmVyOmZ1 bmN0aW9uKGIsYyxkLGUsZixnKXtyZXR1cm4gYS51aS5pc092ZXJBeGlzKGIsZCxm KSYmYS51aS5pc092ZXJBeGlzKGMsZSxnKX19KSl9KGpRdWVyeSksZnVuY3Rpb24o YSxiKXtpZihhLmNsZWFuRGF0YSl7dmFyIGM9YS5jbGVhbkRhdGE7YS5jbGVhbkRh dGE9ZnVuY3Rpb24oYil7Zm9yKHZhciBkPTAsZTsoZT1iW2RdKSE9bnVsbDtkKysp YShlKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIik7YyhiKX19ZWxzZXt2YXIgZD1h LmZuLnJlbW92ZTthLmZuLnJlbW92ZT1mdW5jdGlvbihiLGMpe3JldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gY3x8KCFifHxhLmZpbHRlcihiLFt0aGlz XSkubGVuZ3RoKSYmYSgiKiIsdGhpcykuYWRkKFt0aGlzXSkuZWFjaChmdW5jdGlv bigpe2EodGhpcykudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpfSksZC5jYWxsKGEo dGhpcyksYixjKX0pfX1hLndpZGdldD1mdW5jdGlvbihiLGMsZCl7dmFyIGU9Yi5z cGxpdCgiLiIpWzBdLGY7Yj1iLnNwbGl0KCIuIilbMV0sZj1lKyItIitiLGR8fChk PWMsYz1hLldpZGdldCksYS5leHByWyI6Il1bZl09ZnVuY3Rpb24oYyl7cmV0dXJu ISFhLmRhdGEoYyxiKX0sYVtlXT1hW2VdfHx7fSxhW2VdW2JdPWZ1bmN0aW9uKGEs Yil7YXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGEsYil9LGM9 bmV3IGMsYy5vcHRpb25zPWEuZXh0ZW5kKCEwLHt9LGMub3B0aW9ucyksYVtlXVti XS5wcm90b3R5cGU9YS5leHRlbmQoITAsYyx7bmFtZXNwYWNlOmUsd2lkZ2V0TmFt ZTpiLHdpZGdldEV2ZW50UHJlZml4OmFbZV1bYl0ucHJvdG90eXBlLndpZGdldEV2 ZW50UHJlZml4fHxiLHdpZGdldEJhc2VDbGFzczpmfSxkKSxhLndpZGdldC5icmlk Z2UoYixhW2VdW2JdKX0sYS53aWRnZXQuYnJpZGdlPWZ1bmN0aW9uKGMsZCl7YS5m bltjXT1mdW5jdGlvbihlKXt2YXIgZj10eXBlb2YgZT09InN0cmluZyIsZz1BcnJh eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaD10aGlzO3JldHVy biBlPSFmJiZnLmxlbmd0aD9hLmV4dGVuZC5hcHBseShudWxsLFshMCxlXS5jb25j YXQoZykpOmUsZiYmZS5jaGFyQXQoMCk9PT0iXyI/aDooZj90aGlzLmVhY2goZnVu Y3Rpb24oKXt2YXIgZD1hLmRhdGEodGhpcyxjKSxmPWQmJmEuaXNGdW5jdGlvbihk W2VdKT9kW2VdLmFwcGx5KGQsZyk6ZDtpZihmIT09ZCYmZiE9PWIpcmV0dXJuIGg9 ZiwhMX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEuZGF0YSh0aGlzLGMp O2I/Yi5vcHRpb24oZXx8e30pLl9pbml0KCk6YS5kYXRhKHRoaXMsYyxuZXcgZChl LHRoaXMpKX0pLGgpfX0sYS5XaWRnZXQ9ZnVuY3Rpb24oYSxiKXthcmd1bWVudHMu bGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoYSxiKX0sYS5XaWRnZXQucHJvdG90 eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLG9w dGlvbnM6e2Rpc2FibGVkOiExfSxfY3JlYXRlV2lkZ2V0OmZ1bmN0aW9uKGIsYyl7 YS5kYXRhKGMsdGhpcy53aWRnZXROYW1lLHRoaXMpLHRoaXMuZWxlbWVudD1hKGMp LHRoaXMub3B0aW9ucz1hLmV4dGVuZCghMCx7fSx0aGlzLm9wdGlvbnMsdGhpcy5f Z2V0Q3JlYXRlT3B0aW9ucygpLGIpO3ZhciBkPXRoaXM7dGhpcy5lbGVtZW50LmJp bmQoInJlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbigpe2QuZGVzdHJv eSgpfSksdGhpcy5fY3JlYXRlKCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIiksdGhp cy5faW5pdCgpfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3JldHVybiBh Lm1ldGFkYXRhJiZhLm1ldGFkYXRhLmdldCh0aGlzLmVsZW1lbnRbMF0pW3RoaXMu d2lkZ2V0TmFtZV19LF9jcmVhdGU6ZnVuY3Rpb24oKXt9LF9pbml0OmZ1bmN0aW9u KCl7fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnVuYmluZCgiLiIr dGhpcy53aWRnZXROYW1lKS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0TmFtZSksdGhp cy53aWRnZXQoKS51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSkucmVtb3ZlQXR0 cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0QmFzZUNs YXNzKyItZGlzYWJsZWQgdWktc3RhdGUtZGlzYWJsZWQiKX0sd2lkZ2V0OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKGMsZCl7 dmFyIGU9YztpZihhcmd1bWVudHMubGVuZ3RoPT09MClyZXR1cm4gYS5leHRlbmQo e30sdGhpcy5vcHRpb25zKTtpZih0eXBlb2YgYz09InN0cmluZyIpe2lmKGQ9PT1i KXJldHVybiB0aGlzLm9wdGlvbnNbY107ZT17fSxlW2NdPWR9cmV0dXJuIHRoaXMu X3NldE9wdGlvbnMoZSksdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24oYil7dmFy IGM9dGhpcztyZXR1cm4gYS5lYWNoKGIsZnVuY3Rpb24oYSxiKXtjLl9zZXRPcHRp b24oYSxiKX0pLHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oYSxiKXtyZXR1cm4g dGhpcy5vcHRpb25zW2FdPWIsYT09PSJkaXNhYmxlZCImJnRoaXMud2lkZ2V0KClb Yj8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKHRoaXMud2lkZ2V0QmFzZUNsYXNz KyItZGlzYWJsZWQgdWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2Fi bGVkIixiKSx0aGlzfSxlbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0 T3B0aW9uKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3NldE9wdGlvbigiZGlzYWJsZWQiLCEwKX0sX3RyaWdnZXI6ZnVuY3Rp b24oYixjLGQpe3ZhciBlPXRoaXMub3B0aW9uc1tiXTtjPWEuRXZlbnQoYyksYy50 eXBlPShiPT09dGhpcy53aWRnZXRFdmVudFByZWZpeD9iOnRoaXMud2lkZ2V0RXZl bnRQcmVmaXgrYikudG9Mb3dlckNhc2UoKSxkPWR8fHt9O2lmKGMub3JpZ2luYWxF dmVudCl7Yj1hLmV2ZW50LnByb3BzLmxlbmd0aDtmb3IodmFyIGY7YjspZj1hLmV2 ZW50LnByb3BzWy0tYl0sY1tmXT1jLm9yaWdpbmFsRXZlbnRbZl19cmV0dXJuIHRo aXMuZWxlbWVudC50cmlnZ2VyKGMsZCksIShhLmlzRnVuY3Rpb24oZSkmJmUuY2Fs bCh0aGlzLmVsZW1lbnRbMF0sYyxkKT09PSExfHxjLmlzRGVmYXVsdFByZXZlbnRl ZCgpKX19fShqUXVlcnkpLGZ1bmN0aW9uKGEpe2Eud2lkZ2V0KCJ1aS5tb3VzZSIs e29wdGlvbnM6e2NhbmNlbDoiOmlucHV0LG9wdGlvbiIsZGlzdGFuY2U6MSxkZWxh eTowfSxfbW91c2VJbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmVsZW1l bnQuYmluZCgibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGIp e3JldHVybiBhLl9tb3VzZURvd24oYil9KS5iaW5kKCJjbGljay4iK3RoaXMud2lk Z2V0TmFtZSxmdW5jdGlvbihiKXtpZihhLl9wcmV2ZW50Q2xpY2tFdmVudClyZXR1 cm4gYS5fcHJldmVudENsaWNrRXZlbnQ9ITEsYi5zdG9wSW1tZWRpYXRlUHJvcGFn YXRpb24oKSwhMX0pLHRoaXMuc3RhcnRlZD0hMX0sX21vdXNlRGVzdHJveTpmdW5j dGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSl9 LF9tb3VzZURvd246ZnVuY3Rpb24oYil7Yi5vcmlnaW5hbEV2ZW50PWIub3JpZ2lu YWxFdmVudHx8e307aWYoIWIub3JpZ2luYWxFdmVudC5tb3VzZUhhbmRsZWQpe3Ro aXMuX21vdXNlU3RhcnRlZCYmdGhpcy5fbW91c2VVcChiKSx0aGlzLl9tb3VzZURv d25FdmVudD1iO3ZhciBkPXRoaXMsZT1iLndoaWNoPT0xLGY9dHlwZW9mIHRoaXMu b3B0aW9ucy5jYW5jZWw9PSJzdHJpbmciP2EoYi50YXJnZXQpLnBhcmVudHMoKS5h ZGQoYi50YXJnZXQpLmZpbHRlcih0aGlzLm9wdGlvbnMuY2FuY2VsKS5sZW5ndGg6 ITE7aWYoIWV8fGZ8fCF0aGlzLl9tb3VzZUNhcHR1cmUoYikpcmV0dXJuITA7dGhp cy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURl bGF5TWV0fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rp b24oKXtkLm1vdXNlRGVsYXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpO2lm KHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoYikmJnRoaXMuX21vdXNlRGVsYXlNZXQo Yikpe3RoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9tb3VzZVN0YXJ0KGIpIT09ITE7 aWYoIXRoaXMuX21vdXNlU3RhcnRlZClyZXR1cm4gYi5wcmV2ZW50RGVmYXVsdCgp LCEwfXJldHVybiB0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihhKXty ZXR1cm4gZC5fbW91c2VNb3ZlKGEpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVu Y3Rpb24oYSl7cmV0dXJuIGQuX21vdXNlVXAoYSl9LGEoZG9jdW1lbnQpLmJpbmQo Im1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxl Z2F0ZSkuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3Vz ZVVwRGVsZWdhdGUpLGIucHJldmVudERlZmF1bHQoKSxiLm9yaWdpbmFsRXZlbnQu bW91c2VIYW5kbGVkPSEwfX0sX21vdXNlTW92ZTpmdW5jdGlvbihiKXtyZXR1cm4h YS5icm93c2VyLm1zaWV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT49OXx8ISFiLmJ1 dHRvbj90aGlzLl9tb3VzZVN0YXJ0ZWQ/KHRoaXMuX21vdXNlRHJhZyhiKSxiLnBy ZXZlbnREZWZhdWx0KCkpOih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGIpJiZ0aGlz Ll9tb3VzZURlbGF5TWV0KGIpJiYoKHRoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9t b3VzZVN0YXJ0KHRoaXMuX21vdXNlRG93bkV2ZW50LGIpIT09ITEpP3RoaXMuX21v dXNlRHJhZyhiKTp0aGlzLl9tb3VzZVVwKGIpKSwhdGhpcy5fbW91c2VTdGFydGVk KTp0aGlzLl9tb3VzZVVwKGIpfSxfbW91c2VVcDpmdW5jdGlvbihiKXtyZXR1cm4g YShkb2N1bWVudCkudW5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUs dGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLnVuYmluZCgibW91c2V1cC4iK3RoaXMu d2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLHRoaXMuX21vdXNlU3Rh cnRlZCYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSx0aGlzLl9wcmV2ZW50Q2xpY2tF dmVudD1iLnRhcmdldD09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0LHRoaXMu X21vdXNlU3RvcChiKSksITF9LF9tb3VzZURpc3RhbmNlTWV0OmZ1bmN0aW9uKGEp e3JldHVybiBNYXRoLm1heChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5w YWdlWC1hLnBhZ2VYKSxNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdl WS1hLnBhZ2VZKSk+PXRoaXMub3B0aW9ucy5kaXN0YW5jZX0sX21vdXNlRGVsYXlN ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb3VzZURlbGF5TWV0fSxfbW91c2VT dGFydDpmdW5jdGlvbigpe30sX21vdXNlRHJhZzpmdW5jdGlvbigpe30sX21vdXNl U3RvcDpmdW5jdGlvbigpe30sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbigpe3JldHVy biEwfX0pfShqUXVlcnkpLGZ1bmN0aW9uKGEpe2EudWk9YS51aXx8e307dmFyIGI9 L2xlZnR8Y2VudGVyfHJpZ2h0LyxjPS90b3B8Y2VudGVyfGJvdHRvbS8sZD1hLmZu LnBvc2l0aW9uLGU9YS5mbi5vZmZzZXQ7YS5mbi5wb3NpdGlvbj1mdW5jdGlvbihl KXtpZighZXx8IWUub2YpcmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2U9 YS5leHRlbmQoe30sZSk7dmFyIGY9YShlLm9mKSxnPWZbMF0saD0oZS5jb2xsaXNp b258fCJmbGlwIikuc3BsaXQoIiAiKSxpPWUub2Zmc2V0P2Uub2Zmc2V0LnNwbGl0 KCIgIik6WzAsMF0saixrLGw7cmV0dXJuIGcubm9kZVR5cGU9PT05PyhqPWYud2lk dGgoKSxrPWYuaGVpZ2h0KCksbD17dG9wOjAsbGVmdDowfSk6Zy5zZXRUaW1lb3V0 PyhqPWYud2lkdGgoKSxrPWYuaGVpZ2h0KCksbD17dG9wOmYuc2Nyb2xsVG9wKCks bGVmdDpmLnNjcm9sbExlZnQoKX0pOmcucHJldmVudERlZmF1bHQ/KGUuYXQ9Imxl ZnQgdG9wIixqPWs9MCxsPXt0b3A6ZS5vZi5wYWdlWSxsZWZ0OmUub2YucGFnZVh9 KTooaj1mLm91dGVyV2lkdGgoKSxrPWYub3V0ZXJIZWlnaHQoKSxsPWYub2Zmc2V0 KCkpLGEuZWFjaChbIm15IiwiYXQiXSxmdW5jdGlvbigpe3ZhciBhPShlW3RoaXNd fHwiIikuc3BsaXQoIiAiKTthLmxlbmd0aD09PTEmJihhPWIudGVzdChhWzBdKT9h LmNvbmNhdChbImNlbnRlciJdKTpjLnRlc3QoYVswXSk/WyJjZW50ZXIiXS5jb25j YXQoYSk6WyJjZW50ZXIiLCJjZW50ZXIiXSksYVswXT1iLnRlc3QoYVswXSk/YVsw XToiY2VudGVyIixhWzFdPWMudGVzdChhWzFdKT9hWzFdOiJjZW50ZXIiLGVbdGhp c109YX0pLGgubGVuZ3RoPT09MSYmKGhbMV09aFswXSksaVswXT1wYXJzZUludChp WzBdLDEwKXx8MCxpLmxlbmd0aD09PTEmJihpWzFdPWlbMF0pLGlbMV09cGFyc2VJ bnQoaVsxXSwxMCl8fDAsZS5hdFswXT09PSJyaWdodCI/bC5sZWZ0Kz1qOmUuYXRb MF09PT0iY2VudGVyIiYmKGwubGVmdCs9ai8yKSxlLmF0WzFdPT09ImJvdHRvbSI/ bC50b3ArPWs6ZS5hdFsxXT09PSJjZW50ZXIiJiYobC50b3ArPWsvMiksbC5sZWZ0 Kz1pWzBdLGwudG9wKz1pWzFdLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEo dGhpcyksYz1iLm91dGVyV2lkdGgoKSxkPWIub3V0ZXJIZWlnaHQoKSxmPXBhcnNl SW50KGEuY3VyQ1NTKHRoaXMsIm1hcmdpbkxlZnQiLCEwKSl8fDAsZz1wYXJzZUlu dChhLmN1ckNTUyh0aGlzLCJtYXJnaW5Ub3AiLCEwKSl8fDAsbT1jK2YrcGFyc2VJ bnQoYS5jdXJDU1ModGhpcywibWFyZ2luUmlnaHQiLCEwKSl8fDAsbj1kK2crcGFy c2VJbnQoYS5jdXJDU1ModGhpcywibWFyZ2luQm90dG9tIiwhMCkpfHwwLG89YS5l eHRlbmQoe30sbCkscDtlLm15WzBdPT09InJpZ2h0Ij9vLmxlZnQtPWM6ZS5teVsw XT09PSJjZW50ZXIiJiYoby5sZWZ0LT1jLzIpLGUubXlbMV09PT0iYm90dG9tIj9v LnRvcC09ZDplLm15WzFdPT09ImNlbnRlciImJihvLnRvcC09ZC8yKSxvLmxlZnQ9 cGFyc2VJbnQoby5sZWZ0KSxvLnRvcD1wYXJzZUludChvLnRvcCkscD17bGVmdDpv LmxlZnQtZix0b3A6by50b3AtZ30sYS5lYWNoKFsibGVmdCIsInRvcCJdLGZ1bmN0 aW9uKGIsZil7YS51aS5wb3NpdGlvbltoW2JdXSYmYS51aS5wb3NpdGlvbltoW2Jd XVtmXShvLHt0YXJnZXRXaWR0aDpqLHRhcmdldEhlaWdodDprLGVsZW1XaWR0aDpj LGVsZW1IZWlnaHQ6ZCxjb2xsaXNpb25Qb3NpdGlvbjpwLGNvbGxpc2lvbldpZHRo Om0sY29sbGlzaW9uSGVpZ2h0Om4sb2Zmc2V0OmksbXk6ZS5teSxhdDplLmF0fSl9 KSxhLmZuLmJnaWZyYW1lJiZiLmJnaWZyYW1lKCksYi5vZmZzZXQoYS5leHRlbmQo byx7dXNpbmc6ZS51c2luZ30pKX0pfSxhLnVpLnBvc2l0aW9uPXtmaXQ6e2xlZnQ6 ZnVuY3Rpb24oYixjKXt2YXIgZD1hKHdpbmRvdyk7ZD1jLmNvbGxpc2lvblBvc2l0 aW9uLmxlZnQrYy5jb2xsaXNpb25XaWR0aC1kLndpZHRoKCktZC5zY3JvbGxMZWZ0 KCksYi5sZWZ0PWQ+MD9iLmxlZnQtZDpNYXRoLm1heChiLmxlZnQtYy5jb2xsaXNp b25Qb3NpdGlvbi5sZWZ0LGIubGVmdCl9LHRvcDpmdW5jdGlvbihiLGMpe3ZhciBk PWEod2luZG93KTtkPWMuY29sbGlzaW9uUG9zaXRpb24udG9wK2MuY29sbGlzaW9u SGVpZ2h0LWQuaGVpZ2h0KCktZC5zY3JvbGxUb3AoKSxiLnRvcD1kPjA/Yi50b3At ZDpNYXRoLm1heChiLnRvcC1jLmNvbGxpc2lvblBvc2l0aW9uLnRvcCxiLnRvcCl9 fSxmbGlwOntsZWZ0OmZ1bmN0aW9uKGIsYyl7aWYoYy5hdFswXSE9PSJjZW50ZXIi KXt2YXIgZD1hKHdpbmRvdyk7ZD1jLmNvbGxpc2lvblBvc2l0aW9uLmxlZnQrYy5j b2xsaXNpb25XaWR0aC1kLndpZHRoKCktZC5zY3JvbGxMZWZ0KCk7dmFyIGU9Yy5t eVswXT09PSJsZWZ0Ij8tYy5lbGVtV2lkdGg6Yy5teVswXT09PSJyaWdodCI/Yy5l bGVtV2lkdGg6MCxmPWMuYXRbMF09PT0ibGVmdCI/Yy50YXJnZXRXaWR0aDotYy50 YXJnZXRXaWR0aCxnPS0yKmMub2Zmc2V0WzBdO2IubGVmdCs9Yy5jb2xsaXNpb25Q b3NpdGlvbi5sZWZ0PDA/ZStmK2c6ZD4wP2UrZitnOjB9fSx0b3A6ZnVuY3Rpb24o YixjKXtpZihjLmF0WzFdIT09ImNlbnRlciIpe3ZhciBkPWEod2luZG93KTtkPWMu Y29sbGlzaW9uUG9zaXRpb24udG9wK2MuY29sbGlzaW9uSGVpZ2h0LWQuaGVpZ2h0 KCktZC5zY3JvbGxUb3AoKTt2YXIgZT1jLm15WzFdPT09InRvcCI/LWMuZWxlbUhl aWdodDpjLm15WzFdPT09ImJvdHRvbSI/Yy5lbGVtSGVpZ2h0OjAsZj1jLmF0WzFd PT09InRvcCI/Yy50YXJnZXRIZWlnaHQ6LWMudGFyZ2V0SGVpZ2h0LGc9LTIqYy5v ZmZzZXRbMV07Yi50b3ArPWMuY29sbGlzaW9uUG9zaXRpb24udG9wPDA/ZStmK2c6 ZD4wP2UrZitnOjB9fX19LGEub2Zmc2V0LnNldE9mZnNldHx8KGEub2Zmc2V0LnNl dE9mZnNldD1mdW5jdGlvbihiLGMpey9zdGF0aWMvLnRlc3QoYS5jdXJDU1MoYiwi cG9zaXRpb24iKSkmJihiLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBk PWEoYiksZT1kLm9mZnNldCgpLGY9cGFyc2VJbnQoYS5jdXJDU1MoYiwidG9wIiwh MCksMTApfHwwLGc9cGFyc2VJbnQoYS5jdXJDU1MoYiwibGVmdCIsITApLDEwKXx8 MDtlPXt0b3A6Yy50b3AtZS50b3ArZixsZWZ0OmMubGVmdC1lLmxlZnQrZ30sInVz aW5nImluIGM/Yy51c2luZy5jYWxsKGIsZSk6ZC5jc3MoZSl9LGEuZm4ub2Zmc2V0 PWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXNbMF07cmV0dXJuIWN8fCFjLm93bmVyRG9j dW1lbnQ/bnVsbDpiP3RoaXMuZWFjaChmdW5jdGlvbigpe2Eub2Zmc2V0LnNldE9m ZnNldCh0aGlzLGIpfSk6ZS5jYWxsKHRoaXMpfSl9KGpRdWVyeSksZnVuY3Rpb24o YSl7YS53aWRnZXQoInVpLmRyYWdnYWJsZSIsYS51aS5tb3VzZSx7d2lkZ2V0RXZl bnRQcmVmaXg6ImRyYWciLG9wdGlvbnM6e2FkZENsYXNzZXM6ITAsYXBwZW5kVG86 InBhcmVudCIsYXhpczohMSxjb25uZWN0VG9Tb3J0YWJsZTohMSxjb250YWlubWVu dDohMSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OiExLGdyaWQ6ITEsaGFuZGxlOiEx LGhlbHBlcjoib3JpZ2luYWwiLGlmcmFtZUZpeDohMSxvcGFjaXR5OiExLHJlZnJl c2hQb3NpdGlvbnM6ITEscmV2ZXJ0OiExLHJldmVydER1cmF0aW9uOjUwMCxzY29w ZToiZGVmYXVsdCIsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9s bFNwZWVkOjIwLHNuYXA6ITEsc25hcE1vZGU6ImJvdGgiLHNuYXBUb2xlcmFuY2U6 MjAsc3RhY2s6ITEsekluZGV4OiExfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5v cHRpb25zLmhlbHBlcj09Im9yaWdpbmFsIiYmIS9eKD86cnxhfGYpLy50ZXN0KHRo aXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIikpJiYodGhpcy5lbGVtZW50WzBdLnN0 eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHRoaXMub3B0aW9ucy5hZGRDbGFzc2Vz JiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZSIpLHRoaXMub3B0 aW9ucy5kaXNhYmxlZCYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2Fi bGUtZGlzYWJsZWQiKSx0aGlzLl9tb3VzZUluaXQoKX0sZGVzdHJveTpmdW5jdGlv bigpe2lmKHRoaXMuZWxlbWVudC5kYXRhKCJkcmFnZ2FibGUiKSlyZXR1cm4gdGhp cy5lbGVtZW50LnJlbW92ZURhdGEoImRyYWdnYWJsZSIpLnVuYmluZCgiLmRyYWdn YWJsZSIpLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dhYmxlLWRy YWdnaW5nIHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpLHRoaXMuX21vdXNlRGVzdHJv eSgpLHRoaXN9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5v cHRpb25zO3JldHVybiB0aGlzLmhlbHBlcnx8Yy5kaXNhYmxlZHx8YShiLnRhcmdl dCkuaXMoIi51aS1yZXNpemFibGUtaGFuZGxlIik/ITE6KHRoaXMuaGFuZGxlPXRo aXMuX2dldEhhbmRsZShiKSx0aGlzLmhhbmRsZT8hMDohMSl9LF9tb3VzZVN0YXJ0 OmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMub3B0aW9ucztyZXR1cm4gdGhpcy5oZWxw ZXI9dGhpcy5fY3JlYXRlSGVscGVyKGIpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9y dGlvbnMoKSxhLnVpLmRkbWFuYWdlciYmKGEudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9 dGhpcyksdGhpcy5fY2FjaGVNYXJnaW5zKCksdGhpcy5jc3NQb3NpdGlvbj10aGlz LmhlbHBlci5jc3MoInBvc2l0aW9uIiksdGhpcy5zY3JvbGxQYXJlbnQ9dGhpcy5o ZWxwZXIuc2Nyb2xsUGFyZW50KCksdGhpcy5vZmZzZXQ9dGhpcy5wb3NpdGlvbkFi cz10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5vZmZzZXQ9e3RvcDp0aGlzLm9m ZnNldC50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMub2Zmc2V0LmxlZnQt dGhpcy5tYXJnaW5zLmxlZnR9LGEuZXh0ZW5kKHRoaXMub2Zmc2V0LHtjbGljazp7 bGVmdDpiLnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOmIucGFnZVktdGhpcy5v ZmZzZXQudG9wfSxwYXJlbnQ6dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkscmVsYXRp dmU6dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKX0pLHRoaXMub3JpZ2luYWxQb3Np dGlvbj10aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYiksdGhp cy5vcmlnaW5hbFBhZ2VYPWIucGFnZVgsdGhpcy5vcmlnaW5hbFBhZ2VZPWIucGFn ZVksYy5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihjLmN1 cnNvckF0KSxjLmNvbnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpLHRo aXMuX3RyaWdnZXIoInN0YXJ0IixiKT09PSExPyh0aGlzLl9jbGVhcigpLCExKToo dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLGEudWkuZGRtYW5hZ2VyJiYh Yy5kcm9wQmVoYXZpb3VyJiZhLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0 aGlzLGIpLHRoaXMuaGVscGVyLmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dp bmciKSx0aGlzLl9tb3VzZURyYWcoYiwhMCksITApfSxfbW91c2VEcmFnOmZ1bmN0 aW9uKGIsYyl7dGhpcy5wb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGIp LHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29s dXRlIik7aWYoIWMpe2M9dGhpcy5fdWlIYXNoKCk7aWYodGhpcy5fdHJpZ2dlcigi ZHJhZyIsYixjKT09PSExKXJldHVybiB0aGlzLl9tb3VzZVVwKHt9KSwhMTt0aGlz LnBvc2l0aW9uPWMucG9zaXRpb259aWYoIXRoaXMub3B0aW9ucy5heGlzfHx0aGlz Lm9wdGlvbnMuYXhpcyE9InkiKXRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhp cy5wb3NpdGlvbi5sZWZ0KyJweCI7aWYoIXRoaXMub3B0aW9ucy5heGlzfHx0aGlz Lm9wdGlvbnMuYXhpcyE9IngiKXRoaXMuaGVscGVyWzBdLnN0eWxlLnRvcD10aGlz LnBvc2l0aW9uLnRvcCsicHgiO3JldHVybiBhLnVpLmRkbWFuYWdlciYmYS51aS5k ZG1hbmFnZXIuZHJhZyh0aGlzLGIpLCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGIp e3ZhciBjPSExO2EudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhh dmlvdXImJihjPWEudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyxiKSksdGhpcy5kcm9w cGVkJiYoYz10aGlzLmRyb3BwZWQsdGhpcy5kcm9wcGVkPSExKTtpZighdGhpcy5l bGVtZW50WzBdfHwhdGhpcy5lbGVtZW50WzBdLnBhcmVudE5vZGUpcmV0dXJuITE7 aWYodGhpcy5vcHRpb25zLnJldmVydD09ImludmFsaWQiJiYhY3x8dGhpcy5vcHRp b25zLnJldmVydD09InZhbGlkIiYmY3x8dGhpcy5vcHRpb25zLnJldmVydD09PSEw fHxhLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLnJldmVydCkmJnRoaXMub3B0aW9u cy5yZXZlcnQuY2FsbCh0aGlzLmVsZW1lbnQsYykpe3ZhciBlPXRoaXM7YSh0aGlz LmhlbHBlcikuYW5pbWF0ZSh0aGlzLm9yaWdpbmFsUG9zaXRpb24scGFyc2VJbnQo dGhpcy5vcHRpb25zLnJldmVydER1cmF0aW9uLDEwKSxmdW5jdGlvbigpe2UuX3Ry aWdnZXIoInN0b3AiLGIpIT09ITEmJmUuX2NsZWFyKCl9KX1lbHNlIHRoaXMuX3Ry aWdnZXIoInN0b3AiLGIpIT09ITEmJnRoaXMuX2NsZWFyKCk7cmV0dXJuITF9LGNh bmNlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdn YWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAoe30pOnRoaXMuX2NsZWFyKCks dGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbihiKXt2YXIgYz0hdGhpcy5vcHRpb25z LmhhbmRsZXx8IWEodGhpcy5vcHRpb25zLmhhbmRsZSx0aGlzLmVsZW1lbnQpLmxl bmd0aD8hMDohMTtyZXR1cm4gYSh0aGlzLm9wdGlvbnMuaGFuZGxlLHRoaXMuZWxl bWVudCkuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09 Yi50YXJnZXQmJihjPSEwKX0pLGN9LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oYil7 dmFyIGM9dGhpcy5vcHRpb25zO3JldHVybiBiPWEuaXNGdW5jdGlvbihjLmhlbHBl cik/YShjLmhlbHBlci5hcHBseSh0aGlzLmVsZW1lbnRbMF0sW2JdKSk6Yy5oZWxw ZXI9PSJjbG9uZSI/dGhpcy5lbGVtZW50LmNsb25lKCk6dGhpcy5lbGVtZW50LGIu cGFyZW50cygiYm9keSIpLmxlbmd0aHx8Yi5hcHBlbmRUbyhjLmFwcGVuZFRvPT0i cGFyZW50Ij90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTpjLmFwcGVuZFRvKSxi WzBdIT10aGlzLmVsZW1lbnRbMF0mJiEvKGZpeGVkfGFic29sdXRlKS8udGVzdChi LmNzcygicG9zaXRpb24iKSkmJmIuY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIiks Yn0sX2FkanVzdE9mZnNldEZyb21IZWxwZXI6ZnVuY3Rpb24oYil7dHlwZW9mIGI9 PSJzdHJpbmciJiYoYj1iLnNwbGl0KCIgIikpLGEuaXNBcnJheShiKSYmKGI9e2xl ZnQ6K2JbMF0sdG9wOitiWzFdfHwwfSksImxlZnQiaW4gYiYmKHRoaXMub2Zmc2V0 LmNsaWNrLmxlZnQ9Yi5sZWZ0K3RoaXMubWFyZ2lucy5sZWZ0KSwicmlnaHQiaW4g YiYmKHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9dGhpcy5oZWxwZXJQcm9wb3J0aW9u cy53aWR0aC1iLnJpZ2h0K3RoaXMubWFyZ2lucy5sZWZ0KSwidG9wImluIGImJih0 aGlzLm9mZnNldC5jbGljay50b3A9Yi50b3ArdGhpcy5tYXJnaW5zLnRvcCksImJv dHRvbSJpbiBiJiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXRoaXMuaGVscGVyUHJv cG9ydGlvbnMuaGVpZ2h0LWIuYm90dG9tK3RoaXMubWFyZ2lucy50b3ApfSxfZ2V0 UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5vZmZzZXRQYXJlbnQ9dGhpcy5o ZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGI9dGhpcy5vZmZzZXRQYXJlbnQub2Zm c2V0KCk7dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmdGhpcy5zY3JvbGxQ YXJlbnRbMF0hPWRvY3VtZW50JiZhLnVpLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFy ZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKGIubGVmdCs9dGhpcy5zY3Jv bGxQYXJlbnQuc2Nyb2xsTGVmdCgpLGIudG9wKz10aGlzLnNjcm9sbFBhcmVudC5z Y3JvbGxUb3AoKSk7aWYodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJv ZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJnRoaXMub2Zmc2V0UGFy ZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09Imh0bWwiJiZhLmJyb3dzZXIu bXNpZSliPXt0b3A6MCxsZWZ0OjB9O3JldHVybnt0b3A6Yi50b3ArKHBhcnNlSW50 KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDAp LGxlZnQ6Yi5sZWZ0KyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJv cmRlckxlZnRXaWR0aCIpLDEwKXx8MCl9fSxfZ2V0UmVsYXRpdmVPZmZzZXQ6ZnVu Y3Rpb24oKXtpZih0aGlzLmNzc1Bvc2l0aW9uPT0icmVsYXRpdmUiKXt2YXIgYT10 aGlzLmVsZW1lbnQucG9zaXRpb24oKTtyZXR1cm57dG9wOmEudG9wLShwYXJzZUlu dCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJl bnQuc2Nyb2xsVG9wKCksbGVmdDphLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVy LmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVm dCgpfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlv bigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3Nz KCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmVsZW1lbnQu Y3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDB9fSxfY2FjaGVIZWxwZXJQcm9wb3J0aW9u czpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMu aGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWln aHQoKX19LF9zZXRDb250YWlubWVudDpmdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0 aW9ucztiLmNvbnRhaW5tZW50PT0icGFyZW50IiYmKGIuY29udGFpbm1lbnQ9dGhp cy5oZWxwZXJbMF0ucGFyZW50Tm9kZSk7aWYoYi5jb250YWlubWVudD09ImRvY3Vt ZW50Inx8Yi5jb250YWlubWVudD09IndpbmRvdyIpdGhpcy5jb250YWlubWVudD1b MC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5s ZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVu dC50b3AsYShiLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50OndpbmRv dykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFy Z2lucy5sZWZ0LChhKGIuY29udGFpbm1lbnQ9PSJkb2N1bWVudCI/ZG9jdW1lbnQ6 d2luZG93KS5oZWlnaHQoKXx8ZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9s bEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJn aW5zLnRvcF07aWYoIS9eKGRvY3VtZW50fHdpbmRvd3xwYXJlbnQpJC8udGVzdChi LmNvbnRhaW5tZW50KSYmYi5jb250YWlubWVudC5jb25zdHJ1Y3RvciE9QXJyYXkp e3ZhciBjPWEoYi5jb250YWlubWVudClbMF07aWYoYyl7Yj1hKGIuY29udGFpbm1l bnQpLm9mZnNldCgpO3ZhciBlPWEoYykuY3NzKCJvdmVyZmxvdyIpIT0iaGlkZGVu Ijt0aGlzLmNvbnRhaW5tZW50PVtiLmxlZnQrKHBhcnNlSW50KGEoYykuY3NzKCJi b3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChhKGMpLmNzcygicGFk ZGluZ0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGIudG9wKyhwYXJz ZUludChhKGMpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUlu dChhKGMpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLnRv cCxiLmxlZnQrKGU/TWF0aC5tYXgoYy5zY3JvbGxXaWR0aCxjLm9mZnNldFdpZHRo KTpjLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoYShjKS5jc3MoImJvcmRlckxlZnRX aWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGEoYykuY3NzKCJwYWRkaW5nUmlnaHQi KSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJn aW5zLmxlZnQsYi50b3ArKGU/TWF0aC5tYXgoYy5zY3JvbGxIZWlnaHQsYy5vZmZz ZXRIZWlnaHQpOmMub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoYShjKS5jc3MoImJv cmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoYShjKS5jc3MoInBhZGRp bmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0 LXRoaXMubWFyZ2lucy50b3BdfX1lbHNlIGIuY29udGFpbm1lbnQuY29uc3RydWN0 b3I9PUFycmF5JiYodGhpcy5jb250YWlubWVudD1iLmNvbnRhaW5tZW50KX0sX2Nv bnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGIsYyl7Y3x8KGM9dGhpcy5wb3NpdGlv biksYj1iPT0iYWJzb2x1dGUiPzE6LTE7dmFyIGU9dGhpcy5jc3NQb3NpdGlvbiE9 ImFic29sdXRlInx8dGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiYhIWEu dWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJl bnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LGY9Lyho dG1sfGJvZHkpL2kudGVzdChlWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6Yy50b3Ar dGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmIrdGhpcy5vZmZzZXQucGFyZW50LnRv cCpiLShhLmJyb3dzZXIuc2FmYXJpJiZhLmJyb3dzZXIudmVyc2lvbjw1MjYmJnRo aXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDoodGhpcy5jc3NQb3NpdGlvbj09ImZp eGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6Zj8wOmUuc2Nyb2xs VG9wKCkpKmIpLGxlZnQ6Yy5sZWZ0K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQq Yit0aGlzLm9mZnNldC5wYXJlbnQubGVmdCpiLShhLmJyb3dzZXIuc2FmYXJpJiZh LmJyb3dzZXIudmVyc2lvbjw1MjYmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/ MDoodGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQu c2Nyb2xsTGVmdCgpOmY/MDplLnNjcm9sbExlZnQoKSkqYil9fSxfZ2VuZXJhdGVQ b3NpdGlvbjpmdW5jdGlvbihiKXt2YXIgYz10aGlzLm9wdGlvbnMsZT10aGlzLmNz c1Bvc2l0aW9uIT0iYWJzb2x1dGUifHx0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9j dW1lbnQmJiEhYS51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlz Lm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQ YXJlbnQsZj0vKGh0bWx8Ym9keSkvaS50ZXN0KGVbMF0udGFnTmFtZSksZz1iLnBh Z2VYLGg9Yi5wYWdlWTtyZXR1cm4gdGhpcy5vcmlnaW5hbFBvc2l0aW9uJiYodGhp cy5jb250YWlubWVudCYmKGIucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0 aGlzLmNvbnRhaW5tZW50WzBdJiYoZz10aGlzLmNvbnRhaW5tZW50WzBdK3RoaXMu b2Zmc2V0LmNsaWNrLmxlZnQpLGIucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9w PHRoaXMuY29udGFpbm1lbnRbMV0mJihoPXRoaXMuY29udGFpbm1lbnRbMV0rdGhp cy5vZmZzZXQuY2xpY2sudG9wKSxiLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxl ZnQ+dGhpcy5jb250YWlubWVudFsyXSYmKGc9dGhpcy5jb250YWlubWVudFsyXSt0 aGlzLm9mZnNldC5jbGljay5sZWZ0KSxiLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNr LnRvcD50aGlzLmNvbnRhaW5tZW50WzNdJiYoaD10aGlzLmNvbnRhaW5tZW50WzNd K3RoaXMub2Zmc2V0LmNsaWNrLnRvcCkpLGMuZ3JpZCYmKGg9dGhpcy5vcmlnaW5h bFBhZ2VZK01hdGgucm91bmQoKGgtdGhpcy5vcmlnaW5hbFBhZ2VZKS9jLmdyaWRb MV0pKmMuZ3JpZFsxXSxoPXRoaXMuY29udGFpbm1lbnQ/aC10aGlzLm9mZnNldC5j bGljay50b3A8dGhpcy5jb250YWlubWVudFsxXXx8aC10aGlzLm9mZnNldC5jbGlj ay50b3A+dGhpcy5jb250YWlubWVudFszXT9oLXRoaXMub2Zmc2V0LmNsaWNrLnRv cDx0aGlzLmNvbnRhaW5tZW50WzFdP2grYy5ncmlkWzFdOmgtYy5ncmlkWzFdOmg6 aCxnPXRoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChnLXRoaXMub3JpZ2lu YWxQYWdlWCkvYy5ncmlkWzBdKSpjLmdyaWRbMF0sZz10aGlzLmNvbnRhaW5tZW50 P2ctdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdfHxn LXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXT9nLXRo aXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXT9nK2MuZ3Jp ZFswXTpnLWMuZ3JpZFswXTpnOmcpKSx7dG9wOmgtdGhpcy5vZmZzZXQuY2xpY2su dG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQu dG9wKyhhLmJyb3dzZXIuc2FmYXJpJiZhLmJyb3dzZXIudmVyc2lvbjw1MjYmJnRo aXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDp0aGlzLmNzc1Bvc2l0aW9uPT0iZml4 ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTpmPzA6ZS5zY3JvbGxU b3AoKSksbGVmdDpnLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQtdGhpcy5vZmZzZXQu cmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCsoYS5icm93c2Vy LnNhZmFyaSYmYS5icm93c2VyLnZlcnNpb248NTI2JiZ0aGlzLmNzc1Bvc2l0aW9u PT0iZml4ZWQiPzA6dGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3Jv bGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmY/MDplLnNjcm9sbExlZnQoKSl9fSxfY2xl YXI6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlci5yZW1vdmVDbGFzcygidWktZHJhZ2dh YmxlLWRyYWdnaW5nIiksdGhpcy5oZWxwZXJbMF0hPXRoaXMuZWxlbWVudFswXSYm IXRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbCYmdGhpcy5oZWxwZXIucmVtb3ZlKCks dGhpcy5oZWxwZXI9bnVsbCx0aGlzLmNhbmNlbEhlbHBlclJlbW92YWw9ITF9LF90 cmlnZ2VyOmZ1bmN0aW9uKGIsYyxlKXtyZXR1cm4gZT1lfHx0aGlzLl91aUhhc2go KSxhLnVpLnBsdWdpbi5jYWxsKHRoaXMsYixbYyxlXSksYj09ImRyYWciJiYodGhp cy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUi KSksYS5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmNhbGwodGhpcyxiLGMsZSl9 LHBsdWdpbnM6e30sX3VpSGFzaDpmdW5jdGlvbigpe3JldHVybntoZWxwZXI6dGhp cy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9u OnRoaXMub3JpZ2luYWxQb3NpdGlvbixvZmZzZXQ6dGhpcy5wb3NpdGlvbkFic319 fSksYS5leHRlbmQoYS51aS5kcmFnZ2FibGUse3ZlcnNpb246IjEuOC42In0pLGEu dWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiY29ubmVjdFRvU29ydGFibGUiLHtz dGFydDpmdW5jdGlvbihiLGMpe3ZhciBlPWEodGhpcykuZGF0YSgiZHJhZ2dhYmxl IiksZj1lLm9wdGlvbnMsZz1hLmV4dGVuZCh7fSxjLHtpdGVtOmUuZWxlbWVudH0p O2Uuc29ydGFibGVzPVtdLGEoZi5jb25uZWN0VG9Tb3J0YWJsZSkuZWFjaChmdW5j dGlvbigpe3ZhciBjPWEuZGF0YSh0aGlzLCJzb3J0YWJsZSIpO2MmJiFjLm9wdGlv bnMuZGlzYWJsZWQmJihlLnNvcnRhYmxlcy5wdXNoKHtpbnN0YW5jZTpjLHNob3Vs ZFJldmVydDpjLm9wdGlvbnMucmV2ZXJ0fSksYy5fcmVmcmVzaEl0ZW1zKCksYy5f dHJpZ2dlcigiYWN0aXZhdGUiLGIsZykpfSl9LHN0b3A6ZnVuY3Rpb24oYixjKXt2 YXIgZT1hKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGY9YS5leHRlbmQoe30sYyx7 aXRlbTplLmVsZW1lbnR9KTthLmVhY2goZS5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0 aGlzLmluc3RhbmNlLmlzT3Zlcj8odGhpcy5pbnN0YW5jZS5pc092ZXI9MCxlLmNh bmNlbEhlbHBlclJlbW92YWw9ITAsdGhpcy5pbnN0YW5jZS5jYW5jZWxIZWxwZXJS ZW1vdmFsPSExLHRoaXMuc2hvdWxkUmV2ZXJ0JiYodGhpcy5pbnN0YW5jZS5vcHRp b25zLnJldmVydD0hMCksdGhpcy5pbnN0YW5jZS5fbW91c2VTdG9wKGIpLHRoaXMu aW5zdGFuY2Uub3B0aW9ucy5oZWxwZXI9dGhpcy5pbnN0YW5jZS5vcHRpb25zLl9o ZWxwZXIsZS5vcHRpb25zLmhlbHBlcj09Im9yaWdpbmFsIiYmdGhpcy5pbnN0YW5j ZS5jdXJyZW50SXRlbS5jc3Moe3RvcDoiYXV0byIsbGVmdDoiYXV0byJ9KSk6KHRo aXMuaW5zdGFuY2UuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0aGlzLmluc3RhbmNl Ll90cmlnZ2VyKCJkZWFjdGl2YXRlIixiLGYpKX0pfSxkcmFnOmZ1bmN0aW9uKGIs Yyl7dmFyIGU9YSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKSxmPXRoaXM7YS5lYWNo KGUuc29ydGFibGVzLGZ1bmN0aW9uKCl7dGhpcy5pbnN0YW5jZS5wb3NpdGlvbkFi cz1lLnBvc2l0aW9uQWJzLHRoaXMuaW5zdGFuY2UuaGVscGVyUHJvcG9ydGlvbnM9 ZS5oZWxwZXJQcm9wb3J0aW9ucyx0aGlzLmluc3RhbmNlLm9mZnNldC5jbGljaz1l Lm9mZnNldC5jbGljayx0aGlzLmluc3RhbmNlLl9pbnRlcnNlY3RzV2l0aCh0aGlz Lmluc3RhbmNlLmNvbnRhaW5lckNhY2hlKT8odGhpcy5pbnN0YW5jZS5pc092ZXJ8 fCh0aGlzLmluc3RhbmNlLmlzT3Zlcj0xLHRoaXMuaW5zdGFuY2UuY3VycmVudEl0 ZW09YShmKS5jbG9uZSgpLmFwcGVuZFRvKHRoaXMuaW5zdGFuY2UuZWxlbWVudCku ZGF0YSgic29ydGFibGUtaXRlbSIsITApLHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5f aGVscGVyPXRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oZWxwZXIsdGhpcy5pbnN0YW5j ZS5vcHRpb25zLmhlbHBlcj1mdW5jdGlvbigpe3JldHVybiBjLmhlbHBlclswXX0s Yi50YXJnZXQ9dGhpcy5pbnN0YW5jZS5jdXJyZW50SXRlbVswXSx0aGlzLmluc3Rh bmNlLl9tb3VzZUNhcHR1cmUoYiwhMCksdGhpcy5pbnN0YW5jZS5fbW91c2VTdGFy dChiLCEwLCEwKSx0aGlzLmluc3RhbmNlLm9mZnNldC5jbGljay50b3A9ZS5vZmZz ZXQuY2xpY2sudG9wLHRoaXMuaW5zdGFuY2Uub2Zmc2V0LmNsaWNrLmxlZnQ9ZS5v ZmZzZXQuY2xpY2subGVmdCx0aGlzLmluc3RhbmNlLm9mZnNldC5wYXJlbnQubGVm dC09ZS5vZmZzZXQucGFyZW50LmxlZnQtdGhpcy5pbnN0YW5jZS5vZmZzZXQucGFy ZW50LmxlZnQsdGhpcy5pbnN0YW5jZS5vZmZzZXQucGFyZW50LnRvcC09ZS5vZmZz ZXQucGFyZW50LnRvcC10aGlzLmluc3RhbmNlLm9mZnNldC5wYXJlbnQudG9wLGUu X3RyaWdnZXIoInRvU29ydGFibGUiLGIpLGUuZHJvcHBlZD10aGlzLmluc3RhbmNl LmVsZW1lbnQsZS5jdXJyZW50SXRlbT1lLmVsZW1lbnQsdGhpcy5pbnN0YW5jZS5m cm9tT3V0c2lkZT1lKSx0aGlzLmluc3RhbmNlLmN1cnJlbnRJdGVtJiZ0aGlzLmlu c3RhbmNlLl9tb3VzZURyYWcoYikpOnRoaXMuaW5zdGFuY2UuaXNPdmVyJiYodGhp cy5pbnN0YW5jZS5pc092ZXI9MCx0aGlzLmluc3RhbmNlLmNhbmNlbEhlbHBlclJl bW92YWw9ITAsdGhpcy5pbnN0YW5jZS5vcHRpb25zLnJldmVydD0hMSx0aGlzLmlu c3RhbmNlLl90cmlnZ2VyKCJvdXQiLGIsdGhpcy5pbnN0YW5jZS5fdWlIYXNoKHRo aXMuaW5zdGFuY2UpKSx0aGlzLmluc3RhbmNlLl9tb3VzZVN0b3AoYiwhMCksdGhp cy5pbnN0YW5jZS5vcHRpb25zLmhlbHBlcj10aGlzLmluc3RhbmNlLm9wdGlvbnMu X2hlbHBlcix0aGlzLmluc3RhbmNlLmN1cnJlbnRJdGVtLnJlbW92ZSgpLHRoaXMu aW5zdGFuY2UucGxhY2Vob2xkZXImJnRoaXMuaW5zdGFuY2UucGxhY2Vob2xkZXIu cmVtb3ZlKCksZS5fdHJpZ2dlcigiZnJvbVNvcnRhYmxlIixiKSxlLmRyb3BwZWQ9 ITEpfSl9fSksYS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjdXJzb3IiLHtz dGFydDpmdW5jdGlvbigpe3ZhciBiPWEoImJvZHkiKSxjPWEodGhpcykuZGF0YSgi ZHJhZ2dhYmxlIikub3B0aW9ucztiLmNzcygiY3Vyc29yIikmJihjLl9jdXJzb3I9 Yi5jc3MoImN1cnNvciIpKSxiLmNzcygiY3Vyc29yIixjLmN1cnNvcil9LHN0b3A6 ZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlv bnM7Yi5fY3Vyc29yJiZhKCJib2R5IikuY3NzKCJjdXJzb3IiLGIuX2N1cnNvcil9 fSksYS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJpZnJhbWVGaXgiLHtzdGFy dDpmdW5jdGlvbigpe3ZhciBiPWEodGhpcykuZGF0YSgiZHJhZ2dhYmxlIikub3B0 aW9uczthKGIuaWZyYW1lRml4PT09ITA/ImlmcmFtZSI6Yi5pZnJhbWVGaXgpLmVh Y2goZnVuY3Rpb24oKXthKCc8ZGl2IGNsYXNzPSJ1aS1kcmFnZ2FibGUtaWZyYW1l Rml4IiBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjsiPjwvZGl2PicpLmNzcyh7d2lk dGg6dGhpcy5vZmZzZXRXaWR0aCsicHgiLGhlaWdodDp0aGlzLm9mZnNldEhlaWdo dCsicHgiLHBvc2l0aW9uOiJhYnNvbHV0ZSIsb3BhY2l0eToiMC4wMDEiLHpJbmRl eDoxZTN9KS5jc3MoYSh0aGlzKS5vZmZzZXQoKSkuYXBwZW5kVG8oImJvZHkiKX0p fSxzdG9wOmZ1bmN0aW9uKCl7YSgiZGl2LnVpLWRyYWdnYWJsZS1pZnJhbWVGaXgi KS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRo aXMpfSl9fSksYS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJvcGFjaXR5Iix7 c3RhcnQ6ZnVuY3Rpb24oYixjKXtiPWEoYy5oZWxwZXIpLGM9YSh0aGlzKS5kYXRh KCJkcmFnZ2FibGUiKS5vcHRpb25zLGIuY3NzKCJvcGFjaXR5IikmJihjLl9vcGFj aXR5PWIuY3NzKCJvcGFjaXR5IikpLGIuY3NzKCJvcGFjaXR5IixjLm9wYWNpdHkp fSxzdG9wOmZ1bmN0aW9uKGIsYyl7Yj1hKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIp Lm9wdGlvbnMsYi5fb3BhY2l0eSYmYShjLmhlbHBlcikuY3NzKCJvcGFjaXR5Iixi Ll9vcGFjaXR5KX19KSxhLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInNjcm9s bCIse3N0YXJ0OmZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKS5kYXRhKCJkcmFnZ2Fi bGUiKTtiLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmIuc2Nyb2xsUGFyZW50 WzBdLnRhZ05hbWUhPSJIVE1MIiYmKGIub3ZlcmZsb3dPZmZzZXQ9Yi5zY3JvbGxQ YXJlbnQub2Zmc2V0KCkpfSxkcmFnOmZ1bmN0aW9uKGIpe3ZhciBjPWEodGhpcyku ZGF0YSgiZHJhZ2dhYmxlIiksZT1jLm9wdGlvbnMsZj0hMTtpZihjLnNjcm9sbFBh cmVudFswXSE9ZG9jdW1lbnQmJmMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWUhPSJI VE1MIil7aWYoIWUuYXhpc3x8ZS5heGlzIT0ieCIpYy5vdmVyZmxvd09mZnNldC50 b3ArYy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0LWIucGFnZVk8ZS5zY3Jv bGxTZW5zaXRpdml0eT9jLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9Zj1jLnNj cm9sbFBhcmVudFswXS5zY3JvbGxUb3ArZS5zY3JvbGxTcGVlZDpiLnBhZ2VZLWMu b3ZlcmZsb3dPZmZzZXQudG9wPGUuc2Nyb2xsU2Vuc2l0aXZpdHkmJihjLnNjcm9s bFBhcmVudFswXS5zY3JvbGxUb3A9Zj1jLnNjcm9sbFBhcmVudFswXS5zY3JvbGxU b3AtZS5zY3JvbGxTcGVlZCk7aWYoIWUuYXhpc3x8ZS5heGlzIT0ieSIpYy5vdmVy Zmxvd09mZnNldC5sZWZ0K2Muc2Nyb2xsUGFyZW50WzBdLm9mZnNldFdpZHRoLWIu cGFnZVg8ZS5zY3JvbGxTZW5zaXRpdml0eT9jLnNjcm9sbFBhcmVudFswXS5zY3Jv bGxMZWZ0PWY9Yy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdCtlLnNjcm9sbFNw ZWVkOmIucGFnZVgtYy5vdmVyZmxvd09mZnNldC5sZWZ0PGUuc2Nyb2xsU2Vuc2l0 aXZpdHkmJihjLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PWY9Yy5zY3JvbGxQ YXJlbnRbMF0uc2Nyb2xsTGVmdC1lLnNjcm9sbFNwZWVkKX1lbHNle2lmKCFlLmF4 aXN8fGUuYXhpcyE9IngiKWIucGFnZVktYShkb2N1bWVudCkuc2Nyb2xsVG9wKCk8 ZS5zY3JvbGxTZW5zaXRpdml0eT9mPWEoZG9jdW1lbnQpLnNjcm9sbFRvcChhKGRv Y3VtZW50KS5zY3JvbGxUb3AoKS1lLnNjcm9sbFNwZWVkKTphKHdpbmRvdykuaGVp Z2h0KCktKGIucGFnZVktYShkb2N1bWVudCkuc2Nyb2xsVG9wKCkpPGUuc2Nyb2xs U2Vuc2l0aXZpdHkmJihmPWEoZG9jdW1lbnQpLnNjcm9sbFRvcChhKGRvY3VtZW50 KS5zY3JvbGxUb3AoKStlLnNjcm9sbFNwZWVkKSk7aWYoIWUuYXhpc3x8ZS5heGlz IT0ieSIpYi5wYWdlWC1hKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCk8ZS5zY3JvbGxT ZW5zaXRpdml0eT9mPWEoZG9jdW1lbnQpLnNjcm9sbExlZnQoYShkb2N1bWVudCku c2Nyb2xsTGVmdCgpLWUuc2Nyb2xsU3BlZWQpOmEod2luZG93KS53aWR0aCgpLShi LnBhZ2VYLWEoZG9jdW1lbnQpLnNjcm9sbExlZnQoKSk8ZS5zY3JvbGxTZW5zaXRp dml0eSYmKGY9YShkb2N1bWVudCkuc2Nyb2xsTGVmdChhKGRvY3VtZW50KS5zY3Jv bGxMZWZ0KCkrZS5zY3JvbGxTcGVlZCkpfWYhPT0hMSYmYS51aS5kZG1hbmFnZXIm JiFlLmRyb3BCZWhhdmlvdXImJmEudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRz KGMsYil9fSksYS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzbmFwIix7c3Rh cnQ6ZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGM9 Yi5vcHRpb25zO2Iuc25hcEVsZW1lbnRzPVtdLGEoYy5zbmFwLmNvbnN0cnVjdG9y IT1TdHJpbmc/Yy5zbmFwLml0ZW1zfHwiOmRhdGEoZHJhZ2dhYmxlKSI6Yy5zbmFw KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMub2Zmc2V0KCk7dGhp cyE9Yi5lbGVtZW50WzBdJiZiLnNuYXBFbGVtZW50cy5wdXNoKHtpdGVtOnRoaXMs d2lkdGg6Yy5vdXRlcldpZHRoKCksaGVpZ2h0OmMub3V0ZXJIZWlnaHQoKSx0b3A6 ZS50b3AsbGVmdDplLmxlZnR9KX0pfSxkcmFnOmZ1bmN0aW9uKGIsYyl7Zm9yKHZh ciBlPWEodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksZj1lLm9wdGlvbnMsZz1mLnNu YXBUb2xlcmFuY2UsaD1jLm9mZnNldC5sZWZ0LGk9aCtlLmhlbHBlclByb3BvcnRp b25zLndpZHRoLGo9Yy5vZmZzZXQudG9wLGs9aitlLmhlbHBlclByb3BvcnRpb25z LmhlaWdodCxsPWUuc25hcEVsZW1lbnRzLmxlbmd0aC0xO2w+PTA7bC0tKXt2YXIg bT1lLnNuYXBFbGVtZW50c1tsXS5sZWZ0LG49bStlLnNuYXBFbGVtZW50c1tsXS53 aWR0aCxvPWUuc25hcEVsZW1lbnRzW2xdLnRvcCxwPW8rZS5zbmFwRWxlbWVudHNb bF0uaGVpZ2h0O2lmKG0tZzxoJiZoPG4rZyYmby1nPGomJmo8cCtnfHxtLWc8aCYm aDxuK2cmJm8tZzxrJiZrPHArZ3x8bS1nPGkmJmk8bitnJiZvLWc8aiYmajxwK2d8 fG0tZzxpJiZpPG4rZyYmby1nPGsmJms8cCtnKXtpZihmLnNuYXBNb2RlIT0iaW5u ZXIiKXt2YXIgcT1NYXRoLmFicyhvLWspPD1nLHI9TWF0aC5hYnMocC1qKTw9Zyxz PU1hdGguYWJzKG0taSk8PWcsdD1NYXRoLmFicyhuLWgpPD1nO3EmJihjLnBvc2l0 aW9uLnRvcD1lLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6by1l LmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3AtZS5tYXJnaW5z LnRvcCksciYmKGMucG9zaXRpb24udG9wPWUuX2NvbnZlcnRQb3NpdGlvblRvKCJy ZWxhdGl2ZSIse3RvcDpwLGxlZnQ6MH0pLnRvcC1lLm1hcmdpbnMudG9wKSxzJiYo Yy5wb3NpdGlvbi5sZWZ0PWUuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIs e3RvcDowLGxlZnQ6bS1lLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdC1l Lm1hcmdpbnMubGVmdCksdCYmKGMucG9zaXRpb24ubGVmdD1lLl9jb252ZXJ0UG9z aXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Om59KS5sZWZ0LWUubWFyZ2lu cy5sZWZ0KX12YXIgdT1xfHxyfHxzfHx0O2Yuc25hcE1vZGUhPSJvdXRlciImJihx PU1hdGguYWJzKG8taik8PWcscj1NYXRoLmFicyhwLWspPD1nLHM9TWF0aC5hYnMo bS1oKTw9Zyx0PU1hdGguYWJzKG4taSk8PWcscSYmKGMucG9zaXRpb24udG9wPWUu X2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpvLGxlZnQ6MH0pLnRv cC1lLm1hcmdpbnMudG9wKSxyJiYoYy5wb3NpdGlvbi50b3A9ZS5fY29udmVydFBv c2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOnAtZS5oZWxwZXJQcm9wb3J0aW9ucy5o ZWlnaHQsbGVmdDowfSkudG9wLWUubWFyZ2lucy50b3ApLHMmJihjLnBvc2l0aW9u LmxlZnQ9ZS5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVm dDptfSkubGVmdC1lLm1hcmdpbnMubGVmdCksdCYmKGMucG9zaXRpb24ubGVmdD1l Ll9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Om4tZS5o ZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQtZS5tYXJnaW5zLmxlZnQpKSwh ZS5zbmFwRWxlbWVudHNbbF0uc25hcHBpbmcmJihxfHxyfHxzfHx0fHx1KSYmZS5v cHRpb25zLnNuYXAuc25hcCYmZS5vcHRpb25zLnNuYXAuc25hcC5jYWxsKGUuZWxl bWVudCxiLGEuZXh0ZW5kKGUuX3VpSGFzaCgpLHtzbmFwSXRlbTplLnNuYXBFbGVt ZW50c1tsXS5pdGVtfSkpLGUuc25hcEVsZW1lbnRzW2xdLnNuYXBwaW5nPXF8fHJ8 fHN8fHR8fHV9ZWxzZSBlLnNuYXBFbGVtZW50c1tsXS5zbmFwcGluZyYmZS5vcHRp b25zLnNuYXAucmVsZWFzZSYmZS5vcHRpb25zLnNuYXAucmVsZWFzZS5jYWxsKGUu ZWxlbWVudCxiLGEuZXh0ZW5kKGUuX3VpSGFzaCgpLHtzbmFwSXRlbTplLnNuYXBF bGVtZW50c1tsXS5pdGVtfSkpLGUuc25hcEVsZW1lbnRzW2xdLnNuYXBwaW5nPSEx fX19KSxhLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInN0YWNrIix7c3RhcnQ6 ZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlv bnM7Yj1hLm1ha2VBcnJheShhKGIuc3RhY2spKS5zb3J0KGZ1bmN0aW9uKGIsYyl7 cmV0dXJuKHBhcnNlSW50KGEoYikuY3NzKCJ6SW5kZXgiKSwxMCl8fDApLShwYXJz ZUludChhKGMpLmNzcygiekluZGV4IiksMTApfHwwKX0pO2lmKGIubGVuZ3RoKXt2 YXIgYz1wYXJzZUludChiWzBdLnN0eWxlLnpJbmRleCl8fDA7YShiKS5lYWNoKGZ1 bmN0aW9uKGEpe3RoaXMuc3R5bGUuekluZGV4PWMrYX0pLHRoaXNbMF0uc3R5bGUu ekluZGV4PWMrYi5sZW5ndGh9fX0pLGEudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxl IiwiekluZGV4Iix7c3RhcnQ6ZnVuY3Rpb24oYixjKXtiPWEoYy5oZWxwZXIpLGM9 YSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zLGIuY3NzKCJ6SW5kZXgi KSYmKGMuX3pJbmRleD1iLmNzcygiekluZGV4IikpLGIuY3NzKCJ6SW5kZXgiLGMu ekluZGV4KX0sc3RvcDpmdW5jdGlvbihiLGMpe2I9YSh0aGlzKS5kYXRhKCJkcmFn Z2FibGUiKS5vcHRpb25zLGIuX3pJbmRleCYmYShjLmhlbHBlcikuY3NzKCJ6SW5k ZXgiLGIuX3pJbmRleCl9fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS53aWRnZXQo InVpLmRyb3BwYWJsZSIse3dpZGdldEV2ZW50UHJlZml4OiJkcm9wIixvcHRpb25z OnthY2NlcHQ6IioiLGFjdGl2ZUNsYXNzOiExLGFkZENsYXNzZXM6ITAsZ3JlZWR5 OiExLGhvdmVyQ2xhc3M6ITEsc2NvcGU6ImRlZmF1bHQiLHRvbGVyYW5jZToiaW50 ZXJzZWN0In0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9ucyxj PWIuYWNjZXB0O3RoaXMuaXNvdmVyPTAsdGhpcy5pc291dD0xLHRoaXMuYWNjZXB0 PWEuaXNGdW5jdGlvbihjKT9jOmZ1bmN0aW9uKGEpe3JldHVybiBhLmlzKGMpfSx0 aGlzLnByb3BvcnRpb25zPXt3aWR0aDp0aGlzLmVsZW1lbnRbMF0ub2Zmc2V0V2lk dGgsaGVpZ2h0OnRoaXMuZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9LGEudWkuZGRt YW5hZ2VyLmRyb3BwYWJsZXNbYi5zY29wZV09YS51aS5kZG1hbmFnZXIuZHJvcHBh Ymxlc1tiLnNjb3BlXXx8W10sYS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1tiLnNj b3BlXS5wdXNoKHRoaXMpLGIuYWRkQ2xhc3NlcyYmdGhpcy5lbGVtZW50LmFkZENs YXNzKCJ1aS1kcm9wcGFibGUiKX0sZGVzdHJveTpmdW5jdGlvbigpe2Zvcih2YXIg Yj1hLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RoaXMub3B0aW9ucy5zY29wZV0s Yz0wO2M8Yi5sZW5ndGg7YysrKWJbY109PXRoaXMmJmIuc3BsaWNlKGMsMSk7cmV0 dXJuIHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktZHJvcHBhYmxlIHVpLWRy b3BwYWJsZS1kaXNhYmxlZCIpLnJlbW92ZURhdGEoImRyb3BwYWJsZSIpLnVuYmlu ZCgiLmRyb3BwYWJsZSIpLHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oYixjKXti PT0iYWNjZXB0IiYmKHRoaXMuYWNjZXB0PWEuaXNGdW5jdGlvbihjKT9jOmZ1bmN0 aW9uKGEpe3JldHVybiBhLmlzKGMpfSksYS5XaWRnZXQucHJvdG90eXBlLl9zZXRP cHRpb24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfYWN0aXZhdGU6ZnVuY3Rpb24o Yil7dmFyIGM9YS51aS5kZG1hbmFnZXIuY3VycmVudDt0aGlzLm9wdGlvbnMuYWN0 aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuYWN0 aXZlQ2xhc3MpLGMmJnRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixiLHRoaXMudWko YykpfSxfZGVhY3RpdmF0ZTpmdW5jdGlvbihiKXt2YXIgYz1hLnVpLmRkbWFuYWdl ci5jdXJyZW50O3RoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyYmdGhpcy5lbGVtZW50 LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyksYyYmdGhpcy5f dHJpZ2dlcigiZGVhY3RpdmF0ZSIKLGIsdGhpcy51aShjKSl9LF9vdmVyOmZ1bmN0 aW9uKGIpe3ZhciBjPWEudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7ISFjJiYoYy5jdXJy ZW50SXRlbXx8Yy5lbGVtZW50KVswXSE9dGhpcy5lbGVtZW50WzBdJiZ0aGlzLmFj Y2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSxjLmN1cnJlbnRJdGVtfHxjLmVsZW1l bnQpJiYodGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5hZGRD bGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigib3Zl ciIsYix0aGlzLnVpKGMpKSl9LF9vdXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS51aS5k ZG1hbmFnZXIuY3VycmVudDshIWMmJihjLmN1cnJlbnRJdGVtfHxjLmVsZW1lbnQp WzBdIT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVt ZW50WzBdLGMuY3VycmVudEl0ZW18fGMuZWxlbWVudCkmJih0aGlzLm9wdGlvbnMu aG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9u cy5ob3ZlckNsYXNzKSx0aGlzLl90cmlnZ2VyKCJvdXQiLGIsdGhpcy51aShjKSkp fSxfZHJvcDpmdW5jdGlvbihiLGMpe3ZhciBlPWN8fGEudWkuZGRtYW5hZ2VyLmN1 cnJlbnQ7aWYoIWV8fChlLmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQpWzBdPT10aGlz LmVsZW1lbnRbMF0pcmV0dXJuITE7dmFyIGY9ITE7cmV0dXJuIHRoaXMuZWxlbWVu dC5maW5kKCI6ZGF0YShkcm9wcGFibGUpIikubm90KCIudWktZHJhZ2dhYmxlLWRy YWdnaW5nIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEuZGF0YSh0aGlzLCJkcm9w cGFibGUiKTtpZihiLm9wdGlvbnMuZ3JlZWR5JiYhYi5vcHRpb25zLmRpc2FibGVk JiZiLm9wdGlvbnMuc2NvcGU9PWUub3B0aW9ucy5zY29wZSYmYi5hY2NlcHQuY2Fs bChiLmVsZW1lbnRbMF0sZS5jdXJyZW50SXRlbXx8ZS5lbGVtZW50KSYmYS51aS5p bnRlcnNlY3QoZSxhLmV4dGVuZChiLHtvZmZzZXQ6Yi5lbGVtZW50Lm9mZnNldCgp fSksYi5vcHRpb25zLnRvbGVyYW5jZSkpcmV0dXJuIGY9ITAsITF9KSxmPyExOnRo aXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLGUuY3VycmVudEl0ZW18fGUu ZWxlbWVudCk/KHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyYmdGhpcy5lbGVtZW50 LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyksdGhpcy5vcHRp b25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9w dGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigiZHJvcCIsYix0aGlzLnVp KGUpKSx0aGlzLmVsZW1lbnQpOiExfSx1aTpmdW5jdGlvbihhKXtyZXR1cm57ZHJh Z2dhYmxlOmEuY3VycmVudEl0ZW18fGEuZWxlbWVudCxoZWxwZXI6YS5oZWxwZXIs cG9zaXRpb246YS5wb3NpdGlvbixvZmZzZXQ6YS5wb3NpdGlvbkFic319fSksYS5l eHRlbmQoYS51aS5kcm9wcGFibGUse3ZlcnNpb246IjEuOC42In0pLGEudWkuaW50 ZXJzZWN0PWZ1bmN0aW9uKGIsYyxlKXtpZighYy5vZmZzZXQpcmV0dXJuITE7dmFy IGY9KGIucG9zaXRpb25BYnN8fGIucG9zaXRpb24uYWJzb2x1dGUpLmxlZnQsZz1m K2IuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsaD0oYi5wb3NpdGlvbkFic3x8Yi5w b3NpdGlvbi5hYnNvbHV0ZSkudG9wLGk9aCtiLmhlbHBlclByb3BvcnRpb25zLmhl aWdodCxqPWMub2Zmc2V0LmxlZnQsaz1qK2MucHJvcG9ydGlvbnMud2lkdGgsbD1j Lm9mZnNldC50b3AsbT1sK2MucHJvcG9ydGlvbnMuaGVpZ2h0O3N3aXRjaChlKXtj YXNlImZpdCI6cmV0dXJuIGo8PWYmJmc8PWsmJmw8PWgmJmk8PW07Y2FzZSJpbnRl cnNlY3QiOnJldHVybiBqPGYrYi5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZn LWIuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMjxrJiZsPGgrYi5oZWxwZXJQcm9w b3J0aW9ucy5oZWlnaHQvMiYmaS1iLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8y PG07Y2FzZSJwb2ludGVyIjpyZXR1cm4gYS51aS5pc092ZXIoKGIucG9zaXRpb25B YnN8fGIucG9zaXRpb24uYWJzb2x1dGUpLnRvcCsoYi5jbGlja09mZnNldHx8Yi5v ZmZzZXQuY2xpY2spLnRvcCwoYi5wb3NpdGlvbkFic3x8Yi5wb3NpdGlvbi5hYnNv bHV0ZSkubGVmdCsoYi5jbGlja09mZnNldHx8Yi5vZmZzZXQuY2xpY2spLmxlZnQs bCxqLGMucHJvcG9ydGlvbnMuaGVpZ2h0LGMucHJvcG9ydGlvbnMud2lkdGgpO2Nh c2UidG91Y2giOnJldHVybihoPj1sJiZoPD1tfHxpPj1sJiZpPD1tfHxoPGwmJmk+ bSkmJihmPj1qJiZmPD1rfHxnPj1qJiZnPD1rfHxmPGomJmc+ayk7ZGVmYXVsdDpy ZXR1cm4hMX19LGEudWkuZGRtYW5hZ2VyPXtjdXJyZW50Om51bGwsZHJvcHBhYmxl czp7ImRlZmF1bHQiOltdfSxwcmVwYXJlT2Zmc2V0czpmdW5jdGlvbihiLGMpe3Zh ciBlPWEudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbYi5vcHRpb25zLnNjb3BlXXx8 W10sZj1jP2MudHlwZTpudWxsLGc9KGIuY3VycmVudEl0ZW18fGIuZWxlbWVudCku ZmluZCgiOmRhdGEoZHJvcHBhYmxlKSIpLmFuZFNlbGYoKSxoPTA7Yjpmb3IoO2g8 ZS5sZW5ndGg7aCsrKWlmKCEoZVtoXS5vcHRpb25zLmRpc2FibGVkfHxiJiYhZVto XS5hY2NlcHQuY2FsbChlW2hdLmVsZW1lbnRbMF0sYi5jdXJyZW50SXRlbXx8Yi5l bGVtZW50KSkpe2Zvcih2YXIgaT0wO2k8Zy5sZW5ndGg7aSsrKWlmKGdbaV09PWVb aF0uZWxlbWVudFswXSl7ZVtoXS5wcm9wb3J0aW9ucy5oZWlnaHQ9MDtjb250aW51 ZSBifWVbaF0udmlzaWJsZT1lW2hdLmVsZW1lbnQuY3NzKCJkaXNwbGF5IikhPSJu b25lIixlW2hdLnZpc2libGUmJihlW2hdLm9mZnNldD1lW2hdLmVsZW1lbnQub2Zm c2V0KCksZVtoXS5wcm9wb3J0aW9ucz17d2lkdGg6ZVtoXS5lbGVtZW50WzBdLm9m ZnNldFdpZHRoLGhlaWdodDplW2hdLmVsZW1lbnRbMF0ub2Zmc2V0SGVpZ2h0fSxm PT0ibW91c2Vkb3duIiYmZVtoXS5fYWN0aXZhdGUuY2FsbChlW2hdLGMpKX19LGRy b3A6ZnVuY3Rpb24oYixjKXt2YXIgZT0hMTtyZXR1cm4gYS5lYWNoKGEudWkuZGRt YW5hZ2VyLmRyb3BwYWJsZXNbYi5vcHRpb25zLnNjb3BlXXx8W10sZnVuY3Rpb24o KXt0aGlzLm9wdGlvbnMmJighdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLnZp c2libGUmJmEudWkuaW50ZXJzZWN0KGIsdGhpcyx0aGlzLm9wdGlvbnMudG9sZXJh bmNlKSYmKGU9ZXx8dGhpcy5fZHJvcC5jYWxsKHRoaXMsYykpLCF0aGlzLm9wdGlv bnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmdGhpcy5hY2NlcHQuY2FsbCh0aGlz LmVsZW1lbnRbMF0sYi5jdXJyZW50SXRlbXx8Yi5lbGVtZW50KSYmKHRoaXMuaXNv dXQ9MSx0aGlzLmlzb3Zlcj0wLHRoaXMuX2RlYWN0aXZhdGUuY2FsbCh0aGlzLGMp KSl9KSxlfSxkcmFnOmZ1bmN0aW9uKGIsYyl7Yi5vcHRpb25zLnJlZnJlc2hQb3Np dGlvbnMmJmEudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKGIsYyksYS5lYWNo KGEudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbYi5vcHRpb25zLnNjb3BlXXx8W10s ZnVuY3Rpb24oKXtpZighKHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5ncmVl ZHlDaGlsZHx8IXRoaXMudmlzaWJsZSkpe3ZhciBlPWEudWkuaW50ZXJzZWN0KGIs dGhpcyx0aGlzLm9wdGlvbnMudG9sZXJhbmNlKTtpZihlPSFlJiZ0aGlzLmlzb3Zl cj09MT8iaXNvdXQiOmUmJnRoaXMuaXNvdmVyPT0wPyJpc292ZXIiOm51bGwpe3Zh ciBmO2lmKHRoaXMub3B0aW9ucy5ncmVlZHkpe3ZhciBnPXRoaXMuZWxlbWVudC5w YXJlbnRzKCI6ZGF0YShkcm9wcGFibGUpOmVxKDApIik7Zy5sZW5ndGgmJihmPWEu ZGF0YShnWzBdLCJkcm9wcGFibGUiKSxmLmdyZWVkeUNoaWxkPWU9PSJpc292ZXIi PzE6MCl9ZiYmZT09Imlzb3ZlciImJihmLmlzb3Zlcj0wLGYuaXNvdXQ9MSxmLl9v dXQuY2FsbChmLGMpKSx0aGlzW2VdPTEsdGhpc1tlPT0iaXNvdXQiPyJpc292ZXIi OiJpc291dCJdPTAsdGhpc1tlPT0iaXNvdmVyIj8iX292ZXIiOiJfb3V0Il0uY2Fs bCh0aGlzLGMpLGYmJmU9PSJpc291dCImJihmLmlzb3V0PTAsZi5pc292ZXI9MSxm Ll9vdmVyLmNhbGwoZixjKSl9fX0pfX19KGpRdWVyeSksZnVuY3Rpb24oYSl7YS53 aWRnZXQoInVpLnJlc2l6YWJsZSIsYS51aS5tb3VzZSx7d2lkZ2V0RXZlbnRQcmVm aXg6InJlc2l6ZSIsb3B0aW9uczp7YWxzb1Jlc2l6ZTohMSxhbmltYXRlOiExLGFu aW1hdGVEdXJhdGlvbjoic2xvdyIsYW5pbWF0ZUVhc2luZzoic3dpbmciLGFzcGVj dFJhdGlvOiExLGF1dG9IaWRlOiExLGNvbnRhaW5tZW50OiExLGdob3N0OiExLGdy aWQ6ITEsaGFuZGxlczoiZSxzLHNlIixoZWxwZXI6ITEsbWF4SGVpZ2h0Om51bGws bWF4V2lkdGg6bnVsbCxtaW5IZWlnaHQ6MTAsbWluV2lkdGg6MTAsekluZGV4OjFl M30sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYz10aGlzLm9wdGlvbnM7 dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1yZXNpemFibGUiKSxhLmV4dGVuZCh0 aGlzLHtfYXNwZWN0UmF0aW86ISFjLmFzcGVjdFJhdGlvLGFzcGVjdFJhdGlvOmMu YXNwZWN0UmF0aW8sb3JpZ2luYWxFbGVtZW50OnRoaXMuZWxlbWVudCxfcHJvcG9y dGlvbmFsbHlSZXNpemVFbGVtZW50czpbXSxfaGVscGVyOmMuaGVscGVyfHxjLmdo b3N0fHxjLmFuaW1hdGU/Yy5oZWxwZXJ8fCJ1aS1yZXNpemFibGUtaGVscGVyIjpu dWxsfSksdGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC9jYW52YXN8dGV4 dGFyZWF8aW5wdXR8c2VsZWN0fGJ1dHRvbnxpbWcvaSkmJigvcmVsYXRpdmUvLnRl c3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSkmJmEuYnJvd3Nlci5vcGVy YSYmdGhpcy5lbGVtZW50LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ImF1 dG8iLGxlZnQ6ImF1dG8ifSksdGhpcy5lbGVtZW50LndyYXAoYSgnPGRpdiBjbGFz cz0idWktd3JhcHBlciIgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW47Ij48L2Rpdj4n KS5jc3Moe3Bvc2l0aW9uOnRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIiksd2lk dGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50 Lm91dGVySGVpZ2h0KCksdG9wOnRoaXMuZWxlbWVudC5jc3MoInRvcCIpLGxlZnQ6 dGhpcy5lbGVtZW50LmNzcygibGVmdCIpfSkpLHRoaXMuZWxlbWVudD10aGlzLmVs ZW1lbnQucGFyZW50KCkuZGF0YSgicmVzaXphYmxlIix0aGlzLmVsZW1lbnQuZGF0 YSgicmVzaXphYmxlIikpLHRoaXMuZWxlbWVudElzV3JhcHBlcj0hMCx0aGlzLmVs ZW1lbnQuY3NzKHttYXJnaW5MZWZ0OnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygi bWFyZ2luTGVmdCIpLG1hcmdpblRvcDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Mo Im1hcmdpblRvcCIpLG1hcmdpblJpZ2h0OnRoaXMub3JpZ2luYWxFbGVtZW50LmNz cygibWFyZ2luUmlnaHQiKSxtYXJnaW5Cb3R0b206dGhpcy5vcmlnaW5hbEVsZW1l bnQuY3NzKCJtYXJnaW5Cb3R0b20iKX0pLHRoaXMub3JpZ2luYWxFbGVtZW50LmNz cyh7bWFyZ2luTGVmdDowLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2lu Qm90dG9tOjB9KSx0aGlzLm9yaWdpbmFsUmVzaXplU3R5bGU9dGhpcy5vcmlnaW5h bEVsZW1lbnQuY3NzKCJyZXNpemUiKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Mo InJlc2l6ZSIsIm5vbmUiKSx0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1l bnRzLnB1c2godGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHtwb3NpdGlvbjoic3Rh dGljIix6b29tOjEsZGlzcGxheToiYmxvY2sifSkpLHRoaXMub3JpZ2luYWxFbGVt ZW50LmNzcyh7bWFyZ2luOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2lu Iil9KSx0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpKSx0aGlzLmhhbmRsZXM9 Yy5oYW5kbGVzfHwoYSgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiLHRoaXMuZWxlbWVu dCkubGVuZ3RoP3tuOiIudWktcmVzaXphYmxlLW4iLGU6Ii51aS1yZXNpemFibGUt ZSIsczoiLnVpLXJlc2l6YWJsZS1zIix3OiIudWktcmVzaXphYmxlLXciLHNlOiIu dWktcmVzaXphYmxlLXNlIixzdzoiLnVpLXJlc2l6YWJsZS1zdyIsbmU6Ii51aS1y ZXNpemFibGUtbmUiLG53OiIudWktcmVzaXphYmxlLW53In06ImUscyxzZSIpO2lm KHRoaXMuaGFuZGxlcy5jb25zdHJ1Y3Rvcj09U3RyaW5nKXt0aGlzLmhhbmRsZXM9 PSJhbGwiJiYodGhpcy5oYW5kbGVzPSJuLGUscyx3LHNlLHN3LG5lLG53Iik7dmFy IGQ9dGhpcy5oYW5kbGVzLnNwbGl0KCIsIik7dGhpcy5oYW5kbGVzPXt9O2Zvcih2 YXIgZj0wO2Y8ZC5sZW5ndGg7ZisrKXt2YXIgZz1hLnRyaW0oZFtmXSksaD1hKCc8 ZGl2IGNsYXNzPSJ1aS1yZXNpemFibGUtaGFuZGxlICcrKCJ1aS1yZXNpemFibGUt IitnKSsnIj48L2Rpdj4nKTsvc3d8c2V8bmV8bncvLnRlc3QoZykmJmguY3NzKHt6 SW5kZXg6KytjLnpJbmRleH0pLCJzZSI9PWcmJmguYWRkQ2xhc3MoInVpLWljb24g dWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2UiKSx0aGlzLmhhbmRsZXNbZ109 Ii51aS1yZXNpemFibGUtIitnLHRoaXMuZWxlbWVudC5hcHBlbmQoaCl9fXRoaXMu X3JlbmRlckF4aXM9ZnVuY3Rpb24oYil7Yj1ifHx0aGlzLmVsZW1lbnQ7Zm9yKHZh ciBjIGluIHRoaXMuaGFuZGxlcyl7dGhpcy5oYW5kbGVzW2NdLmNvbnN0cnVjdG9y PT1TdHJpbmcmJih0aGlzLmhhbmRsZXNbY109YSh0aGlzLmhhbmRsZXNbY10sdGhp cy5lbGVtZW50KS5zaG93KCkpO2lmKHRoaXMuZWxlbWVudElzV3JhcHBlciYmdGhp cy5vcmlnaW5hbEVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL3RleHRhcmVhfGlu cHV0fHNlbGVjdHxidXR0b24vaSkpe3ZhciBkPWEodGhpcy5oYW5kbGVzW2NdLHRo aXMuZWxlbWVudCksZj0wO2Y9L3N3fG5lfG53fHNlfG58cy8udGVzdChjKT9kLm91 dGVySGVpZ2h0KCk6ZC5vdXRlcldpZHRoKCksZD1bInBhZGRpbmciLC9uZXxud3xu Ly50ZXN0KGMpPyJUb3AiOi9zZXxzd3xzLy50ZXN0KGMpPyJCb3R0b20iOi9eZSQv LnRlc3QoYyk/IlJpZ2h0IjoiTGVmdCJdLmpvaW4oIiIpLGIuY3NzKGQsZiksdGhp cy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKX1hKHRoaXMuaGFuZGxlc1tjXSl9fSx0 aGlzLl9yZW5kZXJBeGlzKHRoaXMuZWxlbWVudCksdGhpcy5faGFuZGxlcz1hKCIu dWktcmVzaXphYmxlLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5kaXNhYmxlU2VsZWN0 aW9uKCksdGhpcy5faGFuZGxlcy5tb3VzZW92ZXIoZnVuY3Rpb24oKXtpZighYi5y ZXNpemluZyl7aWYodGhpcy5jbGFzc05hbWUpdmFyIGE9dGhpcy5jbGFzc05hbWUu bWF0Y2goL3VpLXJlc2l6YWJsZS0oc2V8c3d8bmV8bnd8bnxlfHN8dykvaSk7Yi5h eGlzPWEmJmFbMV0/YVsxXToic2UifX0pLGMuYXV0b0hpZGUmJih0aGlzLl9oYW5k bGVzLmhpZGUoKSxhKHRoaXMuZWxlbWVudCkuYWRkQ2xhc3MoInVpLXJlc2l6YWJs ZS1hdXRvaGlkZSIpLmhvdmVyKGZ1bmN0aW9uKCl7YSh0aGlzKS5yZW1vdmVDbGFz cygidWktcmVzaXphYmxlLWF1dG9oaWRlIiksYi5faGFuZGxlcy5zaG93KCl9LGZ1 bmN0aW9uKCl7Yi5yZXNpemluZ3x8KGEodGhpcykuYWRkQ2xhc3MoInVpLXJlc2l6 YWJsZS1hdXRvaGlkZSIpLGIuX2hhbmRsZXMuaGlkZSgpKX0pKSx0aGlzLl9tb3Vz ZUluaXQoKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX21vdXNlRGVzdHJveSgp O3ZhciBiPWZ1bmN0aW9uKGIpe2EoYikucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJs ZSB1aS1yZXNpemFibGUtZGlzYWJsZWQgdWktcmVzaXphYmxlLXJlc2l6aW5nIiku cmVtb3ZlRGF0YSgicmVzaXphYmxlIikudW5iaW5kKCIucmVzaXphYmxlIikuZmlu ZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5yZW1vdmUoKX07aWYodGhpcy5lbGVt ZW50SXNXcmFwcGVyKXtiKHRoaXMuZWxlbWVudCk7dmFyIGM9dGhpcy5lbGVtZW50 O2MuYWZ0ZXIodGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHtwb3NpdGlvbjpjLmNz cygicG9zaXRpb24iKSx3aWR0aDpjLm91dGVyV2lkdGgoKSxoZWlnaHQ6Yy5vdXRl ckhlaWdodCgpLHRvcDpjLmNzcygidG9wIiksbGVmdDpjLmNzcygibGVmdCIpfSkp LnJlbW92ZSgpfXJldHVybiB0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6 ZSIsdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlKSxiKHRoaXMub3JpZ2luYWxFbGVt ZW50KSx0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGIpe3ZhciBjPSExO2Zv cih2YXIgZCBpbiB0aGlzLmhhbmRsZXMpYSh0aGlzLmhhbmRsZXNbZF0pWzBdPT1i LnRhcmdldCYmKGM9ITApO3JldHVybiF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJmN9 LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKGMpe3ZhciBkPXRoaXMub3B0aW9ucyxmPXRo aXMuZWxlbWVudC5wb3NpdGlvbigpLGc9dGhpcy5lbGVtZW50O3RoaXMucmVzaXpp bmc9ITAsdGhpcy5kb2N1bWVudFNjcm9sbD17dG9wOmEoZG9jdW1lbnQpLnNjcm9s bFRvcCgpLGxlZnQ6YShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpfSwoZy5pcygiLnVp LWRyYWdnYWJsZSIpfHwvYWJzb2x1dGUvLnRlc3QoZy5jc3MoInBvc2l0aW9uIikp KSYmZy5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOmYudG9wLGxlZnQ6Zi5s ZWZ0fSksYS5icm93c2VyLm9wZXJhJiYvcmVsYXRpdmUvLnRlc3QoZy5jc3MoInBv c2l0aW9uIikpJiZnLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ImF1dG8i LGxlZnQ6ImF1dG8ifSksdGhpcy5fcmVuZGVyUHJveHkoKSxmPWIodGhpcy5oZWxw ZXIuY3NzKCJsZWZ0IikpO3ZhciBoPWIodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSk7 cmV0dXJuIGQuY29udGFpbm1lbnQmJihmKz1hKGQuY29udGFpbm1lbnQpLnNjcm9s bExlZnQoKXx8MCxoKz1hKGQuY29udGFpbm1lbnQpLnNjcm9sbFRvcCgpfHwwKSx0 aGlzLm9mZnNldD10aGlzLmhlbHBlci5vZmZzZXQoKSx0aGlzLnBvc2l0aW9uPXts ZWZ0OmYsdG9wOmh9LHRoaXMuc2l6ZT10aGlzLl9oZWxwZXI/e3dpZHRoOmcub3V0 ZXJXaWR0aCgpLGhlaWdodDpnLm91dGVySGVpZ2h0KCl9Ont3aWR0aDpnLndpZHRo KCksaGVpZ2h0OmcuaGVpZ2h0KCl9LHRoaXMub3JpZ2luYWxTaXplPXRoaXMuX2hl bHBlcj97d2lkdGg6Zy5vdXRlcldpZHRoKCksaGVpZ2h0Omcub3V0ZXJIZWlnaHQo KX06e3dpZHRoOmcud2lkdGgoKSxoZWlnaHQ6Zy5oZWlnaHQoKX0sdGhpcy5vcmln aW5hbFBvc2l0aW9uPXtsZWZ0OmYsdG9wOmh9LHRoaXMuc2l6ZURpZmY9e3dpZHRo Omcub3V0ZXJXaWR0aCgpLWcud2lkdGgoKSxoZWlnaHQ6Zy5vdXRlckhlaWdodCgp LWcuaGVpZ2h0KCl9LHRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uPXtsZWZ0OmMu cGFnZVgsdG9wOmMucGFnZVl9LHRoaXMuYXNwZWN0UmF0aW89dHlwZW9mIGQuYXNw ZWN0UmF0aW89PSJudW1iZXIiP2QuYXNwZWN0UmF0aW86dGhpcy5vcmlnaW5hbFNp emUud2lkdGgvdGhpcy5vcmlnaW5hbFNpemUuaGVpZ2h0fHwxLGQ9YSgiLnVpLXJl c2l6YWJsZS0iK3RoaXMuYXhpcykuY3NzKCJjdXJzb3IiKSxhKCJib2R5IikuY3Nz KCJjdXJzb3IiLGQ9PSJhdXRvIj90aGlzLmF4aXMrIi1yZXNpemUiOmQpLGcuYWRk Q2xhc3MoInVpLXJlc2l6YWJsZS1yZXNpemluZyIpLHRoaXMuX3Byb3BhZ2F0ZSgi c3RhcnQiLGMpLCEwfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMu aGVscGVyLGM9dGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb24sZD10aGlzLl9jaGFu Z2VbdGhpcy5heGlzXTtpZighZClyZXR1cm4hMTtjPWQuYXBwbHkodGhpcyxbYSxh LnBhZ2VYLWMubGVmdHx8MCxhLnBhZ2VZLWMudG9wfHwwXSk7aWYodGhpcy5fYXNw ZWN0UmF0aW98fGEuc2hpZnRLZXkpYz10aGlzLl91cGRhdGVSYXRpbyhjLGEpO3Jl dHVybiBjPXRoaXMuX3Jlc3BlY3RTaXplKGMsYSksdGhpcy5fcHJvcGFnYXRlKCJy ZXNpemUiLGEpLGIuY3NzKHt0b3A6dGhpcy5wb3NpdGlvbi50b3ArInB4IixsZWZ0 OnRoaXMucG9zaXRpb24ubGVmdCsicHgiLHdpZHRoOnRoaXMuc2l6ZS53aWR0aCsi cHgiLGhlaWdodDp0aGlzLnNpemUuaGVpZ2h0KyJweCJ9KSwhdGhpcy5faGVscGVy JiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0aCYmdGhp cy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSx0aGlzLl91cGRhdGVDYWNoZShjKSx0 aGlzLl90cmlnZ2VyKCJyZXNpemUiLGEsdGhpcy51aSgpKSwhMX0sX21vdXNlU3Rv cDpmdW5jdGlvbihiKXt0aGlzLnJlc2l6aW5nPSExO3ZhciBjPXRoaXMub3B0aW9u cyxkPXRoaXM7aWYodGhpcy5faGVscGVyKXt2YXIgZj10aGlzLl9wcm9wb3J0aW9u YWxseVJlc2l6ZUVsZW1lbnRzLGc9Zi5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3Qo ZlswXS5ub2RlTmFtZSk7Zj1nJiZhLnVpLmhhc1Njcm9sbChmWzBdLCJsZWZ0Iik/ MDpkLnNpemVEaWZmLmhlaWdodCxnPXt3aWR0aDpkLnNpemUud2lkdGgtKGc/MDpk LnNpemVEaWZmLndpZHRoKSxoZWlnaHQ6ZC5zaXplLmhlaWdodC1mfSxmPXBhcnNl SW50KGQuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkrKGQucG9zaXRpb24ubGVmdC1k Lm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGw7dmFyIGg9cGFyc2VJbnQoZC5l bGVtZW50LmNzcygidG9wIiksMTApKyhkLnBvc2l0aW9uLnRvcC1kLm9yaWdpbmFs UG9zaXRpb24udG9wKXx8bnVsbDtjLmFuaW1hdGV8fHRoaXMuZWxlbWVudC5jc3Mo YS5leHRlbmQoZyx7dG9wOmgsbGVmdDpmfSkpLGQuaGVscGVyLmhlaWdodChkLnNp emUuaGVpZ2h0KSxkLmhlbHBlci53aWR0aChkLnNpemUud2lkdGgpLHRoaXMuX2hl bHBlciYmIWMuYW5pbWF0ZSYmdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKX1y ZXR1cm4gYSgiYm9keSIpLmNzcygiY3Vyc29yIiwiYXV0byIpLHRoaXMuZWxlbWVu dC5yZW1vdmVDbGFzcygidWktcmVzaXphYmxlLXJlc2l6aW5nIiksdGhpcy5fcHJv cGFnYXRlKCJzdG9wIixiKSx0aGlzLl9oZWxwZXImJnRoaXMuaGVscGVyLnJlbW92 ZSgpLCExfSxfdXBkYXRlQ2FjaGU6ZnVuY3Rpb24oYSl7dGhpcy5vZmZzZXQ9dGhp cy5oZWxwZXIub2Zmc2V0KCksYyhhLmxlZnQpJiYodGhpcy5wb3NpdGlvbi5sZWZ0 PWEubGVmdCksYyhhLnRvcCkmJih0aGlzLnBvc2l0aW9uLnRvcD1hLnRvcCksYyhh LmhlaWdodCkmJih0aGlzLnNpemUuaGVpZ2h0PWEuaGVpZ2h0KSxjKGEud2lkdGgp JiYodGhpcy5zaXplLndpZHRoPWEud2lkdGgpfSxfdXBkYXRlUmF0aW86ZnVuY3Rp b24oYSl7dmFyIGI9dGhpcy5wb3NpdGlvbixjPXRoaXMuc2l6ZSxkPXRoaXMuYXhp cztyZXR1cm4gYS5oZWlnaHQ/YS53aWR0aD1jLmhlaWdodCp0aGlzLmFzcGVjdFJh dGlvOmEud2lkdGgmJihhLmhlaWdodD1jLndpZHRoL3RoaXMuYXNwZWN0UmF0aW8p LGQ9PSJzdyImJihhLmxlZnQ9Yi5sZWZ0KyhjLndpZHRoLWEud2lkdGgpLGEudG9w PW51bGwpLGQ9PSJudyImJihhLnRvcD1iLnRvcCsoYy5oZWlnaHQtYS5oZWlnaHQp LGEubGVmdD1iLmxlZnQrKGMud2lkdGgtYS53aWR0aCkpLGF9LF9yZXNwZWN0U2l6 ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnMsZD10aGlzLmF4aXMsZT1j KGEud2lkdGgpJiZiLm1heFdpZHRoJiZiLm1heFdpZHRoPGEud2lkdGgsZj1jKGEu aGVpZ2h0KSYmYi5tYXhIZWlnaHQmJmIubWF4SGVpZ2h0PGEuaGVpZ2h0LGc9Yyhh LndpZHRoKSYmYi5taW5XaWR0aCYmYi5taW5XaWR0aD5hLndpZHRoLGg9YyhhLmhl aWdodCkmJmIubWluSGVpZ2h0JiZiLm1pbkhlaWdodD5hLmhlaWdodDtnJiYoYS53 aWR0aD1iLm1pbldpZHRoKSxoJiYoYS5oZWlnaHQ9Yi5taW5IZWlnaHQpLGUmJihh LndpZHRoPWIubWF4V2lkdGgpLGYmJihhLmhlaWdodD1iLm1heEhlaWdodCk7dmFy IGk9dGhpcy5vcmlnaW5hbFBvc2l0aW9uLmxlZnQrdGhpcy5vcmlnaW5hbFNpemUu d2lkdGgsaj10aGlzLnBvc2l0aW9uLnRvcCt0aGlzLnNpemUuaGVpZ2h0LGs9L3N3 fG53fHcvLnRlc3QoZCk7cmV0dXJuIGQ9L253fG5lfG4vLnRlc3QoZCksZyYmayYm KGEubGVmdD1pLWIubWluV2lkdGgpLGUmJmsmJihhLmxlZnQ9aS1iLm1heFdpZHRo KSxoJiZkJiYoYS50b3A9ai1iLm1pbkhlaWdodCksZiYmZCYmKGEudG9wPWotYi5t YXhIZWlnaHQpLChiPSFhLndpZHRoJiYhYS5oZWlnaHQpJiYhYS5sZWZ0JiZhLnRv cD9hLnRvcD1udWxsOmImJiFhLnRvcCYmYS5sZWZ0JiYoYS5sZWZ0PW51bGwpLGF9 LF9wcm9wb3J0aW9uYWxseVJlc2l6ZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Byb3Bv cnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoKWZvcih2YXIgYj10aGlzLmhl bHBlcnx8dGhpcy5lbGVtZW50LGM9MDtjPHRoaXMuX3Byb3BvcnRpb25hbGx5UmVz aXplRWxlbWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy5fcHJvcG9ydGlvbmFs bHlSZXNpemVFbGVtZW50c1tjXTtpZighdGhpcy5ib3JkZXJEaWYpe3ZhciBmPVtk LmNzcygiYm9yZGVyVG9wV2lkdGgiKSxkLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIp LGQuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLGQuY3NzKCJib3JkZXJMZWZ0V2lk dGgiKV0sZz1bZC5jc3MoInBhZGRpbmdUb3AiKSxkLmNzcygicGFkZGluZ1JpZ2h0 IiksZC5jc3MoInBhZGRpbmdCb3R0b20iKSxkLmNzcygicGFkZGluZ0xlZnQiKV07 dGhpcy5ib3JkZXJEaWY9YS5tYXAoZixmdW5jdGlvbihhLGIpe3JldHVybiBhPXBh cnNlSW50KGEsMTApfHwwLGI9cGFyc2VJbnQoZ1tiXSwxMCl8fDAsYStifSl9YS5i cm93c2VyLm1zaWUmJihhKGIpLmlzKCI6aGlkZGVuIil8fGEoYikucGFyZW50cygi OmhpZGRlbiIpLmxlbmd0aCl8fGQuY3NzKHtoZWlnaHQ6Yi5oZWlnaHQoKS10aGlz LmJvcmRlckRpZlswXS10aGlzLmJvcmRlckRpZlsyXXx8MCx3aWR0aDpiLndpZHRo KCktdGhpcy5ib3JkZXJEaWZbMV0tdGhpcy5ib3JkZXJEaWZbM118fDB9KX19LF9y ZW5kZXJQcm94eTpmdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9uczt0aGlzLmVs ZW1lbnRPZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpO2lmKHRoaXMuX2hlbHBl cil7dGhpcy5oZWxwZXI9dGhpcy5oZWxwZXJ8fGEoJzxkaXYgc3R5bGU9Im92ZXJm bG93OmhpZGRlbjsiPjwvZGl2PicpO3ZhciBjPWEuYnJvd3Nlci5tc2llJiZhLmJy b3dzZXIudmVyc2lvbjw3LGQ9Yz8xOjA7Yz1jPzI6LTEsdGhpcy5oZWxwZXIuYWRk Q2xhc3ModGhpcy5faGVscGVyKS5jc3Moe3dpZHRoOnRoaXMuZWxlbWVudC5vdXRl cldpZHRoKCkrYyxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCkrYyxw b3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6dGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQt ZCsicHgiLHRvcDp0aGlzLmVsZW1lbnRPZmZzZXQudG9wLWQrInB4Iix6SW5kZXg6 KytiLnpJbmRleH0pLHRoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5IikuZGlzYWJs ZVNlbGVjdGlvbigpfWVsc2UgdGhpcy5oZWxwZXI9dGhpcy5lbGVtZW50fSxfY2hh bmdlOntlOmZ1bmN0aW9uKGEsYil7cmV0dXJue3dpZHRoOnRoaXMub3JpZ2luYWxT aXplLndpZHRoK2J9fSx3OmZ1bmN0aW9uKGEsYil7cmV0dXJue2xlZnQ6dGhpcy5v cmlnaW5hbFBvc2l0aW9uLmxlZnQrYix3aWR0aDp0aGlzLm9yaWdpbmFsU2l6ZS53 aWR0aC1ifX0sbjpmdW5jdGlvbihhLGIsYyl7cmV0dXJue3RvcDp0aGlzLm9yaWdp bmFsUG9zaXRpb24udG9wK2MsaGVpZ2h0OnRoaXMub3JpZ2luYWxTaXplLmhlaWdo dC1jfX0sczpmdW5jdGlvbihhLGIsYyl7cmV0dXJue2hlaWdodDp0aGlzLm9yaWdp bmFsU2l6ZS5oZWlnaHQrY319LHNlOmZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYS5l eHRlbmQodGhpcy5fY2hhbmdlLnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMu X2NoYW5nZS5lLmFwcGx5KHRoaXMsW2IsYyxkXSkpfSxzdzpmdW5jdGlvbihiLGMs ZCl7cmV0dXJuIGEuZXh0ZW5kKHRoaXMuX2NoYW5nZS5zLmFwcGx5KHRoaXMsYXJn dW1lbnRzKSx0aGlzLl9jaGFuZ2Uudy5hcHBseSh0aGlzLFtiLGMsZF0pKX0sbmU6 ZnVuY3Rpb24oYixjLGQpe3JldHVybiBhLmV4dGVuZCh0aGlzLl9jaGFuZ2Uubi5h cHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLmUuYXBwbHkodGhpcyxb YixjLGRdKSl9LG53OmZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYS5leHRlbmQodGhp cy5fY2hhbmdlLm4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53 LmFwcGx5KHRoaXMsW2IsYyxkXSkpfX0sX3Byb3BhZ2F0ZTpmdW5jdGlvbihiLGMp e2EudWkucGx1Z2luLmNhbGwodGhpcyxiLFtjLHRoaXMudWkoKV0pLGIhPSJyZXNp emUiJiZ0aGlzLl90cmlnZ2VyKGIsYyx0aGlzLnVpKCkpfSxwbHVnaW5zOnt9LHVp OmZ1bmN0aW9uKCl7cmV0dXJue29yaWdpbmFsRWxlbWVudDp0aGlzLm9yaWdpbmFs RWxlbWVudCxlbGVtZW50OnRoaXMuZWxlbWVudCxoZWxwZXI6dGhpcy5oZWxwZXIs cG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXplOnRoaXMuc2l6ZSxvcmlnaW5hbFNp emU6dGhpcy5vcmlnaW5hbFNpemUsb3JpZ2luYWxQb3NpdGlvbjp0aGlzLm9yaWdp bmFsUG9zaXRpb259fX0pLGEuZXh0ZW5kKGEudWkucmVzaXphYmxlLHt2ZXJzaW9u OiIxLjguNiJ9KSxhLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNp emUiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBiPWEodGhpcykuZGF0YSgicmVzaXph YmxlIikub3B0aW9ucyxjPWZ1bmN0aW9uKGIpe2EoYikuZWFjaChmdW5jdGlvbigp e3ZhciBiPWEodGhpcyk7Yi5kYXRhKCJyZXNpemFibGUtYWxzb3Jlc2l6ZSIse3dp ZHRoOnBhcnNlSW50KGIud2lkdGgoKSwxMCksaGVpZ2h0OnBhcnNlSW50KGIuaGVp Z2h0KCksMTApLGxlZnQ6cGFyc2VJbnQoYi5jc3MoImxlZnQiKSwxMCksdG9wOnBh cnNlSW50KGIuY3NzKCJ0b3AiKSwxMCkscG9zaXRpb246Yi5jc3MoInBvc2l0aW9u Iil9KX0pfTt0eXBlb2YgYi5hbHNvUmVzaXplPT0ib2JqZWN0IiYmIWIuYWxzb1Jl c2l6ZS5wYXJlbnROb2RlP2IuYWxzb1Jlc2l6ZS5sZW5ndGg/KGIuYWxzb1Jlc2l6 ZT1iLmFsc29SZXNpemVbMF0sYyhiLmFsc29SZXNpemUpKTphLmVhY2goYi5hbHNv UmVzaXplLGZ1bmN0aW9uKGEpe2MoYSl9KTpjKGIuYWxzb1Jlc2l6ZSl9LHJlc2l6 ZTpmdW5jdGlvbihiLGMpe3ZhciBkPWEodGhpcykuZGF0YSgicmVzaXphYmxlIik7 Yj1kLm9wdGlvbnM7dmFyIGY9ZC5vcmlnaW5hbFNpemUsZz1kLm9yaWdpbmFsUG9z aXRpb24saD17aGVpZ2h0OmQuc2l6ZS5oZWlnaHQtZi5oZWlnaHR8fDAsd2lkdGg6 ZC5zaXplLndpZHRoLWYud2lkdGh8fDAsdG9wOmQucG9zaXRpb24udG9wLWcudG9w fHwwLGxlZnQ6ZC5wb3NpdGlvbi5sZWZ0LWcubGVmdHx8MH0saT1mdW5jdGlvbihi LGYpe2EoYikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEodGhpcyksZz1hKHRoaXMp LmRhdGEoInJlc2l6YWJsZS1hbHNvcmVzaXplIiksaT17fSxrPWYmJmYubGVuZ3Ro P2Y6Yi5wYXJlbnRzKGMub3JpZ2luYWxFbGVtZW50WzBdKS5sZW5ndGg/WyJ3aWR0 aCIsImhlaWdodCJdOlsid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0Il07YS5l YWNoKGssZnVuY3Rpb24oYSxiKXsoYT0oZ1tiXXx8MCkrKGhbYl18fDApKSYmYT49 MCYmKGlbYl09YXx8bnVsbCl9KSxhLmJyb3dzZXIub3BlcmEmJi9yZWxhdGl2ZS8u dGVzdChiLmNzcygicG9zaXRpb24iKSkmJihkLl9yZXZlcnRUb1JlbGF0aXZlUG9z aXRpb249ITAsYi5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiJhdXRvIixs ZWZ0OiJhdXRvIn0pKSxiLmNzcyhpKX0pfTt0eXBlb2YgYi5hbHNvUmVzaXplPT0i b2JqZWN0IiYmIWIuYWxzb1Jlc2l6ZS5ub2RlVHlwZT9hLmVhY2goYi5hbHNvUmVz aXplLGZ1bmN0aW9uKGEsYil7aShhLGIpfSk6aShiLmFsc29SZXNpemUpfSxzdG9w OmZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxjPWIu b3B0aW9ucyxkPWZ1bmN0aW9uKGIpe2EoYikuZWFjaChmdW5jdGlvbigpe3ZhciBi PWEodGhpcyk7Yi5jc3Moe3Bvc2l0aW9uOmIuZGF0YSgicmVzaXphYmxlLWFsc29y ZXNpemUiKS5wb3NpdGlvbn0pfSl9O2IuX3JldmVydFRvUmVsYXRpdmVQb3NpdGlv biYmKGIuX3JldmVydFRvUmVsYXRpdmVQb3NpdGlvbj0hMSx0eXBlb2YgYy5hbHNv UmVzaXplPT0ib2JqZWN0IiYmIWMuYWxzb1Jlc2l6ZS5ub2RlVHlwZT9hLmVhY2go Yy5hbHNvUmVzaXplLGZ1bmN0aW9uKGEpe2QoYSl9KTpkKGMuYWxzb1Jlc2l6ZSkp LGEodGhpcykucmVtb3ZlRGF0YSgicmVzaXphYmxlLWFsc29yZXNpemUiKX19KSxh LnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFuaW1hdGUiLHtzdG9wOmZ1bmN0 aW9uKGIpe3ZhciBjPWEodGhpcykuZGF0YSgicmVzaXphYmxlIiksZD1jLm9wdGlv bnMsZj1jLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGc9Zi5sZW5ndGgm Ji90ZXh0YXJlYS9pLnRlc3QoZlswXS5ub2RlTmFtZSksaD1nJiZhLnVpLmhhc1Nj cm9sbChmWzBdLCJsZWZ0Iik/MDpjLnNpemVEaWZmLmhlaWdodDtnPXt3aWR0aDpj LnNpemUud2lkdGgtKGc/MDpjLnNpemVEaWZmLndpZHRoKSxoZWlnaHQ6Yy5zaXpl LmhlaWdodC1ofSxoPXBhcnNlSW50KGMuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkr KGMucG9zaXRpb24ubGVmdC1jLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGw7 dmFyIGk9cGFyc2VJbnQoYy5lbGVtZW50LmNzcygidG9wIiksMTApKyhjLnBvc2l0 aW9uLnRvcC1jLm9yaWdpbmFsUG9zaXRpb24udG9wKXx8bnVsbDtjLmVsZW1lbnQu YW5pbWF0ZShhLmV4dGVuZChnLGkmJmg/e3RvcDppLGxlZnQ6aH06e30pLHtkdXJh dGlvbjpkLmFuaW1hdGVEdXJhdGlvbixlYXNpbmc6ZC5hbmltYXRlRWFzaW5nLHN0 ZXA6ZnVuY3Rpb24oKXt2YXIgZD17d2lkdGg6cGFyc2VJbnQoYy5lbGVtZW50LmNz cygid2lkdGgiKSwxMCksaGVpZ2h0OnBhcnNlSW50KGMuZWxlbWVudC5jc3MoImhl aWdodCIpLDEwKSx0b3A6cGFyc2VJbnQoYy5lbGVtZW50LmNzcygidG9wIiksMTAp LGxlZnQ6cGFyc2VJbnQoYy5lbGVtZW50LmNzcygibGVmdCIpLDEwKX07ZiYmZi5s ZW5ndGgmJmEoZlswXSkuY3NzKHt3aWR0aDpkLndpZHRoLGhlaWdodDpkLmhlaWdo dH0pLGMuX3VwZGF0ZUNhY2hlKGQpLGMuX3Byb3BhZ2F0ZSgicmVzaXplIixiKX19 KX19KSxhLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImNvbnRhaW5tZW50Iix7 c3RhcnQ6ZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIp LGQ9Yy5lbGVtZW50LGY9Yy5vcHRpb25zLmNvbnRhaW5tZW50O2lmKGQ9ZiBpbnN0 YW5jZW9mIGE/Zi5nZXQoMCk6L3BhcmVudC8udGVzdChmKT9kLnBhcmVudCgpLmdl dCgwKTpmKXtjLmNvbnRhaW5lckVsZW1lbnQ9YShkKTtpZigvZG9jdW1lbnQvLnRl c3QoZil8fGY9PWRvY3VtZW50KWMuY29udGFpbmVyT2Zmc2V0PXtsZWZ0OjAsdG9w OjB9LGMuY29udGFpbmVyUG9zaXRpb249e2xlZnQ6MCx0b3A6MH0sYy5wYXJlbnRE YXRhPXtlbGVtZW50OmEoZG9jdW1lbnQpLGxlZnQ6MCx0b3A6MCx3aWR0aDphKGRv Y3VtZW50KS53aWR0aCgpLGhlaWdodDphKGRvY3VtZW50KS5oZWlnaHQoKXx8ZG9j dW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodH07ZWxzZXt2YXIgZz1h KGQpLGg9W107YShbIlRvcCIsIlJpZ2h0IiwiTGVmdCIsIkJvdHRvbSJdKS5lYWNo KGZ1bmN0aW9uKGEsYyl7aFthXT1iKGcuY3NzKCJwYWRkaW5nIitjKSl9KSxjLmNv bnRhaW5lck9mZnNldD1nLm9mZnNldCgpLGMuY29udGFpbmVyUG9zaXRpb249Zy5w b3NpdGlvbigpLGMuY29udGFpbmVyU2l6ZT17aGVpZ2h0OmcuaW5uZXJIZWlnaHQo KS1oWzNdLHdpZHRoOmcuaW5uZXJXaWR0aCgpLWhbMV19LGY9Yy5jb250YWluZXJP ZmZzZXQ7dmFyIGk9Yy5jb250YWluZXJTaXplLmhlaWdodCxqPWMuY29udGFpbmVy U2l6ZS53aWR0aDtqPWEudWkuaGFzU2Nyb2xsKGQsImxlZnQiKT9kLnNjcm9sbFdp ZHRoOmosaT1hLnVpLmhhc1Njcm9sbChkKT9kLnNjcm9sbEhlaWdodDppLGMucGFy ZW50RGF0YT17ZWxlbWVudDpkLGxlZnQ6Zi5sZWZ0LHRvcDpmLnRvcCx3aWR0aDpq LGhlaWdodDppfX19fSxyZXNpemU6ZnVuY3Rpb24oYil7dmFyIGM9YSh0aGlzKS5k YXRhKCJyZXNpemFibGUiKSxkPWMub3B0aW9ucyxmPWMuY29udGFpbmVyT2Zmc2V0 LGc9Yy5wb3NpdGlvbjtiPWMuX2FzcGVjdFJhdGlvfHxiLnNoaWZ0S2V5O3ZhciBo PXt0b3A6MCxsZWZ0OjB9LGk9Yy5jb250YWluZXJFbGVtZW50O2lbMF0hPWRvY3Vt ZW50JiYvc3RhdGljLy50ZXN0KGkuY3NzKCJwb3NpdGlvbiIpKSYmKGg9ZiksZy5s ZWZ0PChjLl9oZWxwZXI/Zi5sZWZ0OjApJiYoYy5zaXplLndpZHRoKz1jLl9oZWxw ZXI/Yy5wb3NpdGlvbi5sZWZ0LWYubGVmdDpjLnBvc2l0aW9uLmxlZnQtaC5sZWZ0 LGImJihjLnNpemUuaGVpZ2h0PWMuc2l6ZS53aWR0aC9kLmFzcGVjdFJhdGlvKSxj LnBvc2l0aW9uLmxlZnQ9ZC5oZWxwZXI/Zi5sZWZ0OjApLGcudG9wPChjLl9oZWxw ZXI/Zi50b3A6MCkmJihjLnNpemUuaGVpZ2h0Kz1jLl9oZWxwZXI/Yy5wb3NpdGlv bi50b3AtZi50b3A6Yy5wb3NpdGlvbi50b3AsYiYmKGMuc2l6ZS53aWR0aD1jLnNp emUuaGVpZ2h0KmQuYXNwZWN0UmF0aW8pLGMucG9zaXRpb24udG9wPWMuX2hlbHBl cj9mLnRvcDowKSxjLm9mZnNldC5sZWZ0PWMucGFyZW50RGF0YS5sZWZ0K2MucG9z aXRpb24ubGVmdCxjLm9mZnNldC50b3A9Yy5wYXJlbnREYXRhLnRvcCtjLnBvc2l0 aW9uLnRvcCxkPU1hdGguYWJzKChjLl9oZWxwZXI/Yy5vZmZzZXQubGVmdC1oLmxl ZnQ6Yy5vZmZzZXQubGVmdC1oLmxlZnQpK2Muc2l6ZURpZmYud2lkdGgpLGY9TWF0 aC5hYnMoKGMuX2hlbHBlcj9jLm9mZnNldC50b3AtaC50b3A6Yy5vZmZzZXQudG9w LWYudG9wKStjLnNpemVEaWZmLmhlaWdodCksZz1jLmNvbnRhaW5lckVsZW1lbnQu Z2V0KDApPT1jLmVsZW1lbnQucGFyZW50KCkuZ2V0KDApLGg9L3JlbGF0aXZlfGFi c29sdXRlLy50ZXN0KGMuY29udGFpbmVyRWxlbWVudC5jc3MoInBvc2l0aW9uIikp LGcmJmgmJihkLT1jLnBhcmVudERhdGEubGVmdCksZCtjLnNpemUud2lkdGg+PWMu cGFyZW50RGF0YS53aWR0aCYmKGMuc2l6ZS53aWR0aD1jLnBhcmVudERhdGEud2lk dGgtZCxiJiYoYy5zaXplLmhlaWdodD1jLnNpemUud2lkdGgvYy5hc3BlY3RSYXRp bykpLGYrYy5zaXplLmhlaWdodD49Yy5wYXJlbnREYXRhLmhlaWdodCYmKGMuc2l6 ZS5oZWlnaHQ9Yy5wYXJlbnREYXRhLmhlaWdodC1mLGImJihjLnNpemUud2lkdGg9 Yy5zaXplLmhlaWdodCpjLmFzcGVjdFJhdGlvKSl9LHN0b3A6ZnVuY3Rpb24oKXt2 YXIgYj1hKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGM9Yi5vcHRpb25zLGQ9Yi5j b250YWluZXJPZmZzZXQsZj1iLmNvbnRhaW5lclBvc2l0aW9uLGc9Yi5jb250YWlu ZXJFbGVtZW50LGg9YShiLmhlbHBlciksaT1oLm9mZnNldCgpLGo9aC5vdXRlcldp ZHRoKCktYi5zaXplRGlmZi53aWR0aDtoPWgub3V0ZXJIZWlnaHQoKS1iLnNpemVE aWZmLmhlaWdodCxiLl9oZWxwZXImJiFjLmFuaW1hdGUmJi9yZWxhdGl2ZS8udGVz dChnLmNzcygicG9zaXRpb24iKSkmJmEodGhpcykuY3NzKHtsZWZ0OmkubGVmdC1m LmxlZnQtZC5sZWZ0LHdpZHRoOmosaGVpZ2h0Omh9KSxiLl9oZWxwZXImJiFjLmFu aW1hdGUmJi9zdGF0aWMvLnRlc3QoZy5jc3MoInBvc2l0aW9uIikpJiZhKHRoaXMp LmNzcyh7bGVmdDppLmxlZnQtZi5sZWZ0LWQubGVmdCx3aWR0aDpqLGhlaWdodDpo fSl9fSksYS51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJnaG9zdCIse3N0YXJ0 OmZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxjPWIu b3B0aW9ucyxkPWIuc2l6ZTtiLmdob3N0PWIub3JpZ2luYWxFbGVtZW50LmNsb25l KCksYi5naG9zdC5jc3Moe29wYWNpdHk6LjI1LGRpc3BsYXk6ImJsb2NrIixwb3Np dGlvbjoicmVsYXRpdmUiLGhlaWdodDpkLmhlaWdodCx3aWR0aDpkLndpZHRoLG1h cmdpbjowLGxlZnQ6MCx0b3A6MH0pLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtZ2hv c3QiKS5hZGRDbGFzcyh0eXBlb2YgYy5naG9zdD09InN0cmluZyI/Yy5naG9zdDoi IiksYi5naG9zdC5hcHBlbmRUbyhiLmhlbHBlcil9LHJlc2l6ZTpmdW5jdGlvbigp e3ZhciBiPWEodGhpcykuZGF0YSgicmVzaXphYmxlIik7Yi5naG9zdCYmYi5naG9z dC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OmIuc2l6ZS5oZWlnaHQs d2lkdGg6Yi5zaXplLndpZHRofSl9LHN0b3A6ZnVuY3Rpb24oKXt2YXIgYj1hKHRo aXMpLmRhdGEoInJlc2l6YWJsZSIpO2IuZ2hvc3QmJmIuaGVscGVyJiZiLmhlbHBl ci5nZXQoMCkucmVtb3ZlQ2hpbGQoYi5naG9zdC5nZXQoMCkpfX0pLGEudWkucGx1 Z2luLmFkZCgicmVzaXphYmxlIiwiZ3JpZCIse3Jlc2l6ZTpmdW5jdGlvbigpe3Zh ciBiPWEodGhpcykuZGF0YSgicmVzaXphYmxlIiksYz1iLm9wdGlvbnMsZD1iLnNp emUsZj1iLm9yaWdpbmFsU2l6ZSxnPWIub3JpZ2luYWxQb3NpdGlvbixoPWIuYXhp cztjLmdyaWQ9dHlwZW9mIGMuZ3JpZD09Im51bWJlciI/W2MuZ3JpZCxjLmdyaWRd OmMuZ3JpZDt2YXIgaT1NYXRoLnJvdW5kKChkLndpZHRoLWYud2lkdGgpLyhjLmdy aWRbMF18fDEpKSooYy5ncmlkWzBdfHwxKTtjPU1hdGgucm91bmQoKGQuaGVpZ2h0 LWYuaGVpZ2h0KS8oYy5ncmlkWzFdfHwxKSkqKGMuZ3JpZFsxXXx8MSksL14oc2V8 c3xlKSQvLnRlc3QoaCk/KGIuc2l6ZS53aWR0aD1mLndpZHRoK2ksYi5zaXplLmhl aWdodD1mLmhlaWdodCtjKTovXihuZSkkLy50ZXN0KGgpPyhiLnNpemUud2lkdGg9 Zi53aWR0aCtpLGIuc2l6ZS5oZWlnaHQ9Zi5oZWlnaHQrYyxiLnBvc2l0aW9uLnRv cD1nLnRvcC1jKTooL14oc3cpJC8udGVzdChoKT8oYi5zaXplLndpZHRoPWYud2lk dGgraSxiLnNpemUuaGVpZ2h0PWYuaGVpZ2h0K2MpOihiLnNpemUud2lkdGg9Zi53 aWR0aCtpLGIuc2l6ZS5oZWlnaHQ9Zi5oZWlnaHQrYyxiLnBvc2l0aW9uLnRvcD1n LnRvcC1jKSxiLnBvc2l0aW9uLmxlZnQ9Zy5sZWZ0LWkpfX0pO3ZhciBiPWZ1bmN0 aW9uKGEpe3JldHVybiBwYXJzZUludChhLDEwKXx8MH0sYz1mdW5jdGlvbihhKXty ZXR1cm4haXNOYU4ocGFyc2VJbnQoYSwxMCkpfX0oalF1ZXJ5KSxmdW5jdGlvbihh KXthLndpZGdldCgidWkuc2VsZWN0YWJsZSIsYS51aS5tb3VzZSx7b3B0aW9uczp7 YXBwZW5kVG86ImJvZHkiLGF1dG9SZWZyZXNoOiEwLGRpc3RhbmNlOjAsZmlsdGVy OiIqIix0b2xlcmFuY2U6InRvdWNoIn0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBi PXRoaXM7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RhYmxlIiksdGhp cy5kcmFnZ2VkPSExO3ZhciBjO3RoaXMucmVmcmVzaD1mdW5jdGlvbigpe2M9YShi Lm9wdGlvbnMuZmlsdGVyLGIuZWxlbWVudFswXSksYy5lYWNoKGZ1bmN0aW9uKCl7 dmFyIGI9YSh0aGlzKSxjPWIub2Zmc2V0KCk7YS5kYXRhKHRoaXMsInNlbGVjdGFi bGUtaXRlbSIse2VsZW1lbnQ6dGhpcywkZWxlbWVudDpiLGxlZnQ6Yy5sZWZ0LHRv cDpjLnRvcCxyaWdodDpjLmxlZnQrYi5vdXRlcldpZHRoKCksYm90dG9tOmMudG9w K2Iub3V0ZXJIZWlnaHQoKSxzdGFydHNlbGVjdGVkOiExLHNlbGVjdGVkOmIuaGFz Q2xhc3MoInVpLXNlbGVjdGVkIiksc2VsZWN0aW5nOmIuaGFzQ2xhc3MoInVpLXNl bGVjdGluZyIpLHVuc2VsZWN0aW5nOmIuaGFzQ2xhc3MoInVpLXVuc2VsZWN0aW5n Iil9KX0pfSx0aGlzLnJlZnJlc2goKSx0aGlzLnNlbGVjdGVlcz1jLmFkZENsYXNz KCJ1aS1zZWxlY3RlZSIpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuaGVscGVyPWEo IjxkaXYgY2xhc3M9J3VpLXNlbGVjdGFibGUtaGVscGVyJz48L2Rpdj4iKX0sZGVz dHJveTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGVlcy5yZW1vdmVDbGFz cygidWktc2VsZWN0ZWUiKS5yZW1vdmVEYXRhKCJzZWxlY3RhYmxlLWl0ZW0iKSx0 aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGFibGUgdWktc2VsZWN0 YWJsZS1kaXNhYmxlZCIpLnJlbW92ZURhdGEoInNlbGVjdGFibGUiKS51bmJpbmQo Ii5zZWxlY3RhYmxlIiksdGhpcy5fbW91c2VEZXN0cm95KCksdGhpc30sX21vdXNl U3RhcnQ6ZnVuY3Rpb24oYil7dmFyIGM9dGhpczt0aGlzLm9wb3M9W2IucGFnZVgs Yi5wYWdlWV07aWYoIXRoaXMub3B0aW9ucy5kaXNhYmxlZCl7dmFyIGQ9dGhpcy5v cHRpb25zO3RoaXMuc2VsZWN0ZWVzPWEoZC5maWx0ZXIsdGhpcy5lbGVtZW50WzBd KSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsYiksYShkLmFwcGVuZFRvKS5hcHBlbmQo dGhpcy5oZWxwZXIpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDpiLmNsaWVudFgsdG9w OmIuY2xpZW50WSx3aWR0aDowLGhlaWdodDowfSksZC5hdXRvUmVmcmVzaCYmdGhp cy5yZWZyZXNoKCksdGhpcy5zZWxlY3RlZXMuZmlsdGVyKCIudWktc2VsZWN0ZWQi KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YS5kYXRhKHRoaXMsInNlbGVjdGFibGUt aXRlbSIpO2Quc3RhcnRzZWxlY3RlZD0hMCxiLm1ldGFLZXl8fChkLiRlbGVtZW50 LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGQuc2VsZWN0ZWQ9ITEsZC4kZWxl bWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKSxkLnVuc2VsZWN0aW5nPSEw LGMuX3RyaWdnZXIoInVuc2VsZWN0aW5nIixiLHt1bnNlbGVjdGluZzpkLmVsZW1l bnR9KSl9KSxhKGIudGFyZ2V0KS5wYXJlbnRzKCkuYW5kU2VsZigpLmVhY2goZnVu Y3Rpb24oKXt2YXIgZD1hLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7aWYo ZCl7dmFyIGc9IWIubWV0YUtleXx8IWQuJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNl bGVjdGVkIik7cmV0dXJuIGQuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoZz8idWktdW5z ZWxlY3RpbmciOiJ1aS1zZWxlY3RlZCIpLmFkZENsYXNzKGc/InVpLXNlbGVjdGlu ZyI6InVpLXVuc2VsZWN0aW5nIiksZC51bnNlbGVjdGluZz0hZyxkLnNlbGVjdGlu Zz1nLChkLnNlbGVjdGVkPWcpP2MuX3RyaWdnZXIoInNlbGVjdGluZyIsYix7c2Vs ZWN0aW5nOmQuZWxlbWVudH0pOmMuX3RyaWdnZXIoInVuc2VsZWN0aW5nIixiLHt1 bnNlbGVjdGluZzpkLmVsZW1lbnR9KSwhMX19KX19LF9tb3VzZURyYWc6ZnVuY3Rp b24oYil7dmFyIGM9dGhpczt0aGlzLmRyYWdnZWQ9ITA7aWYoIXRoaXMub3B0aW9u cy5kaXNhYmxlZCl7dmFyIGQ9dGhpcy5vcHRpb25zLGY9dGhpcy5vcG9zWzBdLGc9 dGhpcy5vcG9zWzFdLGg9Yi5wYWdlWCxpPWIucGFnZVk7aWYoZj5oKXt2YXIgaj1o O2g9ZixmPWp9cmV0dXJuIGc+aSYmKGo9aSxpPWcsZz1qKSx0aGlzLmhlbHBlci5j c3Moe2xlZnQ6Zix0b3A6Zyx3aWR0aDpoLWYsaGVpZ2h0OmktZ30pLHRoaXMuc2Vs ZWN0ZWVzLmVhY2goZnVuY3Rpb24oKXt2YXIgaj1hLmRhdGEodGhpcywic2VsZWN0 YWJsZS1pdGVtIik7aWYoISFqJiZqLmVsZW1lbnQhPWMuZWxlbWVudFswXSl7dmFy IGs9ITE7ZC50b2xlcmFuY2U9PSJ0b3VjaCI/az0hKGoubGVmdD5ofHxqLnJpZ2h0 PGZ8fGoudG9wPml8fGouYm90dG9tPGcpOmQudG9sZXJhbmNlPT0iZml0IiYmKGs9 ai5sZWZ0PmYmJmoucmlnaHQ8aCYmai50b3A+ZyYmai5ib3R0b208aSksaz8oai5z ZWxlY3RlZCYmKGouJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGVkIiks ai5zZWxlY3RlZD0hMSksai51bnNlbGVjdGluZyYmKGouJGVsZW1lbnQucmVtb3Zl Q2xhc3MoInVpLXVuc2VsZWN0aW5nIiksai51bnNlbGVjdGluZz0hMSksai5zZWxl Y3Rpbmd8fChqLiRlbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RpbmciKSxqLnNl bGVjdGluZz0hMCxjLl90cmlnZ2VyKCJzZWxlY3RpbmciLGIse3NlbGVjdGluZzpq LmVsZW1lbnR9KSkpOihqLnNlbGVjdGluZyYmKGIubWV0YUtleSYmai5zdGFydHNl bGVjdGVkPyhqLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKSxq LnNlbGVjdGluZz0hMSxqLiRlbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RlZCIp LGouc2VsZWN0ZWQ9ITApOihqLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxl Y3RpbmciKSxqLnNlbGVjdGluZz0hMSxqLnN0YXJ0c2VsZWN0ZWQmJihqLiRlbGVt ZW50LmFkZENsYXNzKCJ1aS11bnNlbGVjdGluZyIpLGoudW5zZWxlY3Rpbmc9ITAp LGMuX3RyaWdnZXIoInVuc2VsZWN0aW5nIixiLHt1bnNlbGVjdGluZzpqLmVsZW1l bnR9KSkpLGouc2VsZWN0ZWQmJiFiLm1ldGFLZXkmJiFqLnN0YXJ0c2VsZWN0ZWQm JihqLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGouc2VsZWN0 ZWQ9ITEsai4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKSxqLnVu c2VsZWN0aW5nPSEwLGMuX3RyaWdnZXIoInVuc2VsZWN0aW5nIixiLHt1bnNlbGVj dGluZzpqLmVsZW1lbnR9KSkpfX0pLCExfX0sX21vdXNlU3RvcDpmdW5jdGlvbihi KXt2YXIgYz10aGlzO3JldHVybiB0aGlzLmRyYWdnZWQ9ITEsYSgiLnVpLXVuc2Vs ZWN0aW5nIix0aGlzLmVsZW1lbnRbMF0pLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1h LmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7ZC4kZWxlbWVudC5yZW1vdmVD bGFzcygidWktdW5zZWxlY3RpbmciKSxkLnVuc2VsZWN0aW5nPSExLGQuc3RhcnRz ZWxlY3RlZD0hMSxjLl90cmlnZ2VyKCJ1bnNlbGVjdGVkIixiLHt1bnNlbGVjdGVk OmQuZWxlbWVudH0pfSksYSgiLnVpLXNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBd KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YS5kYXRhKHRoaXMsInNlbGVjdGFibGUt aXRlbSIpO2QuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpLmFk ZENsYXNzKCJ1aS1zZWxlY3RlZCIpLGQuc2VsZWN0aW5nPSExLGQuc2VsZWN0ZWQ9 ITAsZC5zdGFydHNlbGVjdGVkPSEwLGMuX3RyaWdnZXIoInNlbGVjdGVkIixiLHtz ZWxlY3RlZDpkLmVsZW1lbnR9KX0pLHRoaXMuX3RyaWdnZXIoInN0b3AiLGIpLHRo aXMuaGVscGVyLnJlbW92ZSgpLCExfX0pLGEuZXh0ZW5kKGEudWkuc2VsZWN0YWJs ZSx7dmVyc2lvbjoiMS44LjYifSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS53aWRn ZXQoInVpLnNvcnRhYmxlIixhLnVpLm1vdXNlLHt3aWRnZXRFdmVudFByZWZpeDoi c29ydCIsb3B0aW9uczp7YXBwZW5kVG86InBhcmVudCIsYXhpczohMSxjb25uZWN0 V2l0aDohMSxjb250YWlubWVudDohMSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OiEx LGRyb3BPbkVtcHR5OiEwLGZvcmNlUGxhY2Vob2xkZXJTaXplOiExLGZvcmNlSGVs cGVyU2l6ZTohMSxncmlkOiExLGhhbmRsZTohMSxoZWxwZXI6Im9yaWdpbmFsIixp dGVtczoiPiAqIixvcGFjaXR5OiExLHBsYWNlaG9sZGVyOiExLHJldmVydDohMSxz Y3JvbGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Nyb2xsU3BlZWQ6MjAsc2Nv cGU6ImRlZmF1bHQiLHRvbGVyYW5jZToiaW50ZXJzZWN0Iix6SW5kZXg6MWUzfSxf Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLmVs ZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIiksdGhpcy5yZWZyZXNoKCksdGhp cy5mbG9hdGluZz10aGlzLml0ZW1zLmxlbmd0aD8vbGVmdHxyaWdodC8udGVzdCh0 aGlzLml0ZW1zWzBdLml0ZW0uY3NzKCJmbG9hdCIpKTohMSx0aGlzLm9mZnNldD10 aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fbW91c2VJbml0KCl9LGRlc3Ryb3k6 ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxl IHVpLXNvcnRhYmxlLWRpc2FibGVkIikucmVtb3ZlRGF0YSgic29ydGFibGUiKS51 bmJpbmQoIi5zb3J0YWJsZSIpLHRoaXMuX21vdXNlRGVzdHJveSgpO2Zvcih2YXIg YT10aGlzLml0ZW1zLmxlbmd0aC0xO2E+PTA7YS0tKXRoaXMuaXRlbXNbYV0uaXRl bS5yZW1vdmVEYXRhKCJzb3J0YWJsZS1pdGVtIik7cmV0dXJuIHRoaXN9LF9zZXRP cHRpb246ZnVuY3Rpb24oYixjKXtiPT09ImRpc2FibGVkIj8odGhpcy5vcHRpb25z W2JdPWMsdGhpcy53aWRnZXQoKVtjPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0o InVpLXNvcnRhYmxlLWRpc2FibGVkIikpOmEuV2lkZ2V0LnByb3RvdHlwZS5fc2V0 T3B0aW9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX21vdXNlQ2FwdHVyZTpmdW5j dGlvbihiLGMpe2lmKHRoaXMucmV2ZXJ0aW5nKXJldHVybiExO2lmKHRoaXMub3B0 aW9ucy5kaXNhYmxlZHx8dGhpcy5vcHRpb25zLnR5cGU9PSJzdGF0aWMiKXJldHVy biExO3RoaXMuX3JlZnJlc2hJdGVtcyhiKTt2YXIgZT1udWxsLGY9dGhpczthKGIu dGFyZ2V0KS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe2lmKGEuZGF0YSh0aGlz LCJzb3J0YWJsZS1pdGVtIik9PWYpcmV0dXJuIGU9YSh0aGlzKSwhMX0pLGEuZGF0 YShiLnRhcmdldCwic29ydGFibGUtaXRlbSIpPT1mJiYoZT1hKGIudGFyZ2V0KSk7 aWYoIWUpcmV0dXJuITE7aWYodGhpcy5vcHRpb25zLmhhbmRsZSYmIWMpe3ZhciBn PSExO2EodGhpcy5vcHRpb25zLmhhbmRsZSxlKS5maW5kKCIqIikuYW5kU2VsZigp LmVhY2goZnVuY3Rpb24oKXt0aGlzPT1iLnRhcmdldCYmKGc9ITApfSk7aWYoIWcp cmV0dXJuITF9cmV0dXJuIHRoaXMuY3VycmVudEl0ZW09ZSx0aGlzLl9yZW1vdmVD dXJyZW50c0Zyb21JdGVtcygpLCEwfSxfbW91c2VTdGFydDpmdW5jdGlvbihiLGMs ZSl7Yz10aGlzLm9wdGlvbnM7dmFyIGY9dGhpczt0aGlzLmN1cnJlbnRDb250YWlu ZXI9dGhpcyx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKSx0aGlzLmhlbHBlcj10aGlz Ll9jcmVhdGVIZWxwZXIoYiksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygp LHRoaXMuX2NhY2hlTWFyZ2lucygpLHRoaXMuc2Nyb2xsUGFyZW50PXRoaXMuaGVs cGVyLnNjcm9sbFBhcmVudCgpLHRoaXMub2Zmc2V0PXRoaXMuY3VycmVudEl0ZW0u b2Zmc2V0KCksdGhpcy5vZmZzZXQ9e3RvcDp0aGlzLm9mZnNldC50b3AtdGhpcy5t YXJnaW5zLnRvcCxsZWZ0OnRoaXMub2Zmc2V0LmxlZnQtdGhpcy5tYXJnaW5zLmxl ZnR9LHRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLHRoaXMu Y3NzUG9zaXRpb249dGhpcy5oZWxwZXIuY3NzKCJwb3NpdGlvbiIpLGEuZXh0ZW5k KHRoaXMub2Zmc2V0LHtjbGljazp7bGVmdDpiLnBhZ2VYLXRoaXMub2Zmc2V0Lmxl ZnQsdG9wOmIucGFnZVktdGhpcy5vZmZzZXQudG9wfSxwYXJlbnQ6dGhpcy5fZ2V0 UGFyZW50T2Zmc2V0KCkscmVsYXRpdmU6dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQo KX0pLHRoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9u KGIpLHRoaXMub3JpZ2luYWxQYWdlWD1iLnBhZ2VYLHRoaXMub3JpZ2luYWxQYWdl WT1iLnBhZ2VZLGMuY3Vyc29yQXQmJnRoaXMuX2FkanVzdE9mZnNldEZyb21IZWxw ZXIoYy5jdXJzb3JBdCksdGhpcy5kb21Qb3NpdGlvbj17cHJldjp0aGlzLmN1cnJl bnRJdGVtLnByZXYoKVswXSxwYXJlbnQ6dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQo KVswXX0sdGhpcy5oZWxwZXJbMF0hPXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMu Y3VycmVudEl0ZW0uaGlkZSgpLHRoaXMuX2NyZWF0ZVBsYWNlaG9sZGVyKCksYy5j b250YWlubWVudCYmdGhpcy5fc2V0Q29udGFpbm1lbnQoKSxjLmN1cnNvciYmKGEo ImJvZHkiKS5jc3MoImN1cnNvciIpJiYodGhpcy5fc3RvcmVkQ3Vyc29yPWEoImJv ZHkiKS5jc3MoImN1cnNvciIpKSxhKCJib2R5IikuY3NzKCJjdXJzb3IiLGMuY3Vy c29yKSksYy5vcGFjaXR5JiYodGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikmJih0 aGlzLl9zdG9yZWRPcGFjaXR5PXRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIpKSx0 aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLGMub3BhY2l0eSkpLGMuekluZGV4JiYo dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKSYmKHRoaXMuX3N0b3JlZFpJbmRleD10 aGlzLmhlbHBlci5jc3MoInpJbmRleCIpKSx0aGlzLmhlbHBlci5jc3MoInpJbmRl eCIsYy56SW5kZXgpKSx0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJnRo aXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWUhPSJIVE1MIiYmKHRoaXMub3ZlcmZs b3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0KCkpLHRoaXMuX3RyaWdn ZXIoInN0YXJ0IixiLHRoaXMuX3VpSGFzaCgpKSx0aGlzLl9wcmVzZXJ2ZUhlbHBl clByb3BvcnRpb25zfHx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCk7aWYo IWUpZm9yKGU9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMu Y29udGFpbmVyc1tlXS5fdHJpZ2dlcigiYWN0aXZhdGUiLGIsZi5fdWlIYXNoKHRo aXMpKTtyZXR1cm4gYS51aS5kZG1hbmFnZXImJihhLnVpLmRkbWFuYWdlci5jdXJy ZW50PXRoaXMpLGEudWkuZGRtYW5hZ2VyJiYhYy5kcm9wQmVoYXZpb3VyJiZhLnVp LmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGIpLHRoaXMuZHJhZ2dpbmc9 ITAsdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpLHRo aXMuX21vdXNlRHJhZyhiKSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbihiKXt0aGlz LnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYiksdGhpcy5wb3NpdGlv bkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSx0aGlzLmxh c3RQb3NpdGlvbkFic3x8KHRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRp b25BYnMpO2lmKHRoaXMub3B0aW9ucy5zY3JvbGwpe3ZhciBjPXRoaXMub3B0aW9u cyxlPSExO3RoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhpcy5zY3Jv bGxQYXJlbnRbMF0udGFnTmFtZSE9IkhUTUwiPyh0aGlzLm92ZXJmbG93T2Zmc2V0 LnRvcCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRIZWlnaHQtYi5wYWdlWTxj LnNjcm9sbFNlbnNpdGl2aXR5P3RoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRv cD1lPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcCtjLnNjcm9sbFNwZWVk OmIucGFnZVktdGhpcy5vdmVyZmxvd09mZnNldC50b3A8Yy5zY3JvbGxTZW5zaXRp dml0eSYmKHRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1lPXRoaXMuc2Ny b2xsUGFyZW50WzBdLnNjcm9sbFRvcC1jLnNjcm9sbFNwZWVkKSx0aGlzLm92ZXJm bG93T2Zmc2V0LmxlZnQrdGhpcy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0V2lkdGgt Yi5wYWdlWDxjLnNjcm9sbFNlbnNpdGl2aXR5P3RoaXMuc2Nyb2xsUGFyZW50WzBd LnNjcm9sbExlZnQ9ZT10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0K2Mu c2Nyb2xsU3BlZWQ6Yi5wYWdlWC10aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQ8Yy5z Y3JvbGxTZW5zaXRpdml0eSYmKHRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExl ZnQ9ZT10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0LWMuc2Nyb2xsU3Bl ZWQpKTooYi5wYWdlWS1hKGRvY3VtZW50KS5zY3JvbGxUb3AoKTxjLnNjcm9sbFNl bnNpdGl2aXR5P2U9YShkb2N1bWVudCkuc2Nyb2xsVG9wKGEoZG9jdW1lbnQpLnNj cm9sbFRvcCgpLWMuc2Nyb2xsU3BlZWQpOmEod2luZG93KS5oZWlnaHQoKS0oYi5w YWdlWS1hKGRvY3VtZW50KS5zY3JvbGxUb3AoKSk8Yy5zY3JvbGxTZW5zaXRpdml0 eSYmKGU9YShkb2N1bWVudCkuc2Nyb2xsVG9wKGEoZG9jdW1lbnQpLnNjcm9sbFRv cCgpK2Muc2Nyb2xsU3BlZWQpKSxiLnBhZ2VYLWEoZG9jdW1lbnQpLnNjcm9sbExl ZnQoKTxjLnNjcm9sbFNlbnNpdGl2aXR5P2U9YShkb2N1bWVudCkuc2Nyb2xsTGVm dChhKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCktYy5zY3JvbGxTcGVlZCk6YSh3aW5k b3cpLndpZHRoKCktKGIucGFnZVgtYShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpKTxj LnNjcm9sbFNlbnNpdGl2aXR5JiYoZT1hKGRvY3VtZW50KS5zY3JvbGxMZWZ0KGEo ZG9jdW1lbnQpLnNjcm9sbExlZnQoKStjLnNjcm9sbFNwZWVkKSkpLGUhPT0hMSYm YS51aS5kZG1hbmFnZXImJiFjLmRyb3BCZWhhdmlvdXImJmEudWkuZGRtYW5hZ2Vy LnByZXBhcmVPZmZzZXRzKHRoaXMsYil9dGhpcy5wb3NpdGlvbkFicz10aGlzLl9j b252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKTtpZighdGhpcy5vcHRpb25zLmF4 aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieSIpdGhpcy5oZWxwZXJbMF0uc3R5bGUu bGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IjtpZighdGhpcy5vcHRpb25zLmF4 aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieCIpdGhpcy5oZWxwZXJbMF0uc3R5bGUu dG9wPXRoaXMucG9zaXRpb24udG9wKyJweCI7Zm9yKGM9dGhpcy5pdGVtcy5sZW5n dGgtMTtjPj0wO2MtLSl7ZT10aGlzLml0ZW1zW2NdO3ZhciBmPWUuaXRlbVswXSxn PXRoaXMuX2ludGVyc2VjdHNXaXRoUG9pbnRlcihlKTtpZihnJiZmIT10aGlzLmN1 cnJlbnRJdGVtWzBdJiZ0aGlzLnBsYWNlaG9sZGVyW2c9PTE/Im5leHQiOiJwcmV2 Il0oKVswXSE9ZiYmIWEudWkuY29udGFpbnModGhpcy5wbGFjZWhvbGRlclswXSxm KSYmKHRoaXMub3B0aW9ucy50eXBlPT0ic2VtaS1keW5hbWljIj8hYS51aS5jb250 YWlucyh0aGlzLmVsZW1lbnRbMF0sZik6ITApKXt0aGlzLmRpcmVjdGlvbj1nPT0x PyJkb3duIjoidXAiO2lmKHRoaXMub3B0aW9ucy50b2xlcmFuY2U9PSJwb2ludGVy Inx8dGhpcy5faW50ZXJzZWN0c1dpdGhTaWRlcyhlKSl0aGlzLl9yZWFycmFuZ2Uo YixlKTtlbHNlIGJyZWFrO3RoaXMuX3RyaWdnZXIoImNoYW5nZSIsYix0aGlzLl91 aUhhc2goKSk7YnJlYWt9fXJldHVybiB0aGlzLl9jb250YWN0Q29udGFpbmVycyhi KSxhLnVpLmRkbWFuYWdlciYmYS51aS5kZG1hbmFnZXIuZHJhZyh0aGlzLGIpLHRo aXMuX3RyaWdnZXIoInNvcnQiLGIsdGhpcy5fdWlIYXNoKCkpLHRoaXMubGFzdFBv c2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnMsITF9LF9tb3VzZVN0b3A6ZnVuY3Rp b24oYixjKXtpZihiKXthLnVpLmRkbWFuYWdlciYmIXRoaXMub3B0aW9ucy5kcm9w QmVoYXZpb3VyJiZhLnVpLmRkbWFuYWdlci5kcm9wKHRoaXMsYik7aWYodGhpcy5v cHRpb25zLnJldmVydCl7dmFyIGU9dGhpcztjPWUucGxhY2Vob2xkZXIub2Zmc2V0 KCksZS5yZXZlcnRpbmc9ITAsYSh0aGlzLmhlbHBlcikuYW5pbWF0ZSh7bGVmdDpj LmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQtZS5tYXJnaW5zLmxlZnQrKHRo aXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5PzA6dGhpcy5vZmZzZXRQ YXJlbnRbMF0uc2Nyb2xsTGVmdCksdG9wOmMudG9wLXRoaXMub2Zmc2V0LnBhcmVu dC50b3AtZS5tYXJnaW5zLnRvcCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3Vt ZW50LmJvZHk/MDp0aGlzLm9mZnNldFBhcmVudFswXS5zY3JvbGxUb3ApfSxwYXJz ZUludCh0aGlzLm9wdGlvbnMucmV2ZXJ0LDEwKXx8NTAwLGZ1bmN0aW9uKCl7ZS5f Y2xlYXIoYil9KX1lbHNlIHRoaXMuX2NsZWFyKGIsYyk7cmV0dXJuITF9fSxjYW5j ZWw6ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMu X21vdXNlVXAoKSx0aGlzLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiP3RoaXMu Y3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENTUykucmVtb3ZlQ2xhc3MoInVp LXNvcnRhYmxlLWhlbHBlciIpOnRoaXMuY3VycmVudEl0ZW0uc2hvdygpO2Zvcih2 YXIgYz10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7Yz49MDtjLS0pdGhpcy5jb250 YWluZXJzW2NdLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixudWxsLGIuX3VpSGFzaCh0 aGlzKSksdGhpcy5jb250YWluZXJzW2NdLmNvbnRhaW5lckNhY2hlLm92ZXImJih0 aGlzLmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoIm91dCIsbnVsbCxiLl91aUhhc2go dGhpcykpLHRoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTAp fXJldHVybiB0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUmJnRoaXMucGxh Y2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9s ZGVyWzBdKSx0aGlzLm9wdGlvbnMuaGVscGVyIT0ib3JpZ2luYWwiJiZ0aGlzLmhl bHBlciYmdGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSYmdGhpcy5oZWxwZXIucmVt b3ZlKCksYS5leHRlbmQodGhpcyx7aGVscGVyOm51bGwsZHJhZ2dpbmc6ITEscmV2 ZXJ0aW5nOiExLF9ub0ZpbmFsU29ydDpudWxsfSksdGhpcy5kb21Qb3NpdGlvbi5w cmV2P2EodGhpcy5kb21Qb3NpdGlvbi5wcmV2KS5hZnRlcih0aGlzLmN1cnJlbnRJ dGVtKTphKHRoaXMuZG9tUG9zaXRpb24ucGFyZW50KS5wcmVwZW5kKHRoaXMuY3Vy cmVudEl0ZW0pLHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbihiKXt2YXIgYz10aGlz Ll9nZXRJdGVtc0FzalF1ZXJ5KGImJmIuY29ubmVjdGVkKSxlPVtdO3JldHVybiBi PWJ8fHt9LGEoYykuZWFjaChmdW5jdGlvbigpe3ZhciBjPShhKGIuaXRlbXx8dGhp cykuYXR0cihiLmF0dHJpYnV0ZXx8ImlkIil8fCIiKS5tYXRjaChiLmV4cHJlc3Np b258fC8oLispWy09X10oLispLyk7YyYmZS5wdXNoKChiLmtleXx8Y1sxXSsiW10i KSsiPSIrKGIua2V5JiZiLmV4cHJlc3Npb24/Y1sxXTpjWzJdKSl9KSwhZS5sZW5n dGgmJmIua2V5JiZlLnB1c2goYi5rZXkrIj0iKSxlLmpvaW4oIiYiKX0sdG9BcnJh eTpmdW5jdGlvbihiKXt2YXIgYz10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGImJmIu Y29ubmVjdGVkKSxlPVtdO3JldHVybiBiPWJ8fHt9LGMuZWFjaChmdW5jdGlvbigp e2UucHVzaChhKGIuaXRlbXx8dGhpcykuYXR0cihiLmF0dHJpYnV0ZXx8ImlkIil8 fCIiKX0pLGV9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbihhKXt2YXIgYj10aGlz LnBvc2l0aW9uQWJzLmxlZnQsYz1iK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lk dGgsZD10aGlzLnBvc2l0aW9uQWJzLnRvcCxlPWQrdGhpcy5oZWxwZXJQcm9wb3J0 aW9ucy5oZWlnaHQsZj1hLmxlZnQsZz1mK2Eud2lkdGgsaD1hLnRvcCxpPWgrYS5o ZWlnaHQsaj10aGlzLm9mZnNldC5jbGljay50b3Asaz10aGlzLm9mZnNldC5jbGlj ay5sZWZ0O3JldHVybiBqPWQraj5oJiZkK2o8aSYmYitrPmYmJmIrazxnLHRoaXMu b3B0aW9ucwoudG9sZXJhbmNlPT0icG9pbnRlciJ8fHRoaXMub3B0aW9ucy5mb3Jj ZVBvaW50ZXJGb3JDb250YWluZXJzfHx0aGlzLm9wdGlvbnMudG9sZXJhbmNlIT0i cG9pbnRlciImJnRoaXMuaGVscGVyUHJvcG9ydGlvbnNbdGhpcy5mbG9hdGluZz8i d2lkdGgiOiJoZWlnaHQiXT5hW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0 Il0/ajpmPGIrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZjLXRoaXMu aGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMjxnJiZoPGQrdGhpcy5oZWxwZXJQcm9w b3J0aW9ucy5oZWlnaHQvMiYmZS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdo dC8yPGl9LF9pbnRlcnNlY3RzV2l0aFBvaW50ZXI6ZnVuY3Rpb24oYil7dmFyIGM9 YS51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0 LmNsaWNrLnRvcCxiLnRvcCxiLmhlaWdodCk7Yj1hLnVpLmlzT3ZlckF4aXModGhp cy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQsYi5sZWZ0 LGIud2lkdGgpLGM9YyYmYixiPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlv bigpO3ZhciBlPXRoaXMuX2dldERyYWdIb3Jpem9udGFsRGlyZWN0aW9uKCk7cmV0 dXJuIGM/dGhpcy5mbG9hdGluZz9lJiZlPT0icmlnaHQifHxiPT0iZG93biI/Mjox OmImJihiPT0iZG93biI/MjoxKTohMX0sX2ludGVyc2VjdHNXaXRoU2lkZXM6ZnVu Y3Rpb24oYil7dmFyIGM9YS51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMu dG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxiLnRvcCtiLmhlaWdodC8yLGIuaGVp Z2h0KTtiPWEudWkuaXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhp cy5vZmZzZXQuY2xpY2subGVmdCxiLmxlZnQrYi53aWR0aC8yLGIud2lkdGgpO3Zh ciBlPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbigpLGY9dGhpcy5fZ2V0 RHJhZ0hvcml6b250YWxEaXJlY3Rpb24oKTtyZXR1cm4gdGhpcy5mbG9hdGluZyYm Zj9mPT0icmlnaHQiJiZifHxmPT0ibGVmdCImJiFiOmUmJihlPT0iZG93biImJmN8 fGU9PSJ1cCImJiFjKX0sX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbjpmdW5jdGlv bigpe3ZhciBhPXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubGFzdFBvc2l0aW9u QWJzLnRvcDtyZXR1cm4gYSE9MCYmKGE+MD8iZG93biI6InVwIil9LF9nZXREcmFn SG9yaXpvbnRhbERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucG9zaXRp b25BYnMubGVmdC10aGlzLmxhc3RQb3NpdGlvbkFicy5sZWZ0O3JldHVybiBhIT0w JiYoYT4wPyJyaWdodCI6ImxlZnQiKX0scmVmcmVzaDpmdW5jdGlvbihhKXtyZXR1 cm4gdGhpcy5fcmVmcmVzaEl0ZW1zKGEpLHRoaXMucmVmcmVzaFBvc2l0aW9ucygp LHRoaXN9LF9jb25uZWN0V2l0aDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9u cztyZXR1cm4gYS5jb25uZWN0V2l0aC5jb25zdHJ1Y3Rvcj09U3RyaW5nP1thLmNv bm5lY3RXaXRoXTphLmNvbm5lY3RXaXRofSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5j dGlvbihiKXt2YXIgYz1bXSxlPVtdLGY9dGhpcy5fY29ubmVjdFdpdGgoKTtpZihm JiZiKWZvcihiPWYubGVuZ3RoLTE7Yj49MDtiLS0pZm9yKHZhciBnPWEoZltiXSks aD1nLmxlbmd0aC0xO2g+PTA7aC0tKXt2YXIgaT1hLmRhdGEoZ1toXSwic29ydGFi bGUiKTtpJiZpIT10aGlzJiYhaS5vcHRpb25zLmRpc2FibGVkJiZlLnB1c2goW2Eu aXNGdW5jdGlvbihpLm9wdGlvbnMuaXRlbXMpP2kub3B0aW9ucy5pdGVtcy5jYWxs KGkuZWxlbWVudCk6YShpLm9wdGlvbnMuaXRlbXMsaS5lbGVtZW50KS5ub3QoIi51 aS1zb3J0YWJsZS1oZWxwZXIiKS5ub3QoIi51aS1zb3J0YWJsZS1wbGFjZWhvbGRl ciIpLGldKX1lLnB1c2goW2EuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMuaXRlbXMp P3RoaXMub3B0aW9ucy5pdGVtcy5jYWxsKHRoaXMuZWxlbWVudCxudWxsLHtvcHRp b25zOnRoaXMub3B0aW9ucyxpdGVtOnRoaXMuY3VycmVudEl0ZW19KTphKHRoaXMu b3B0aW9ucy5pdGVtcyx0aGlzLmVsZW1lbnQpLm5vdCgiLnVpLXNvcnRhYmxlLWhl bHBlciIpLm5vdCgiLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIiksdGhpc10pO2Zv cihiPWUubGVuZ3RoLTE7Yj49MDtiLS0pZVtiXVswXS5lYWNoKGZ1bmN0aW9uKCl7 Yy5wdXNoKHRoaXMpfSk7cmV0dXJuIGEoYyl9LF9yZW1vdmVDdXJyZW50c0Zyb21J dGVtczpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmN1cnJlbnRJdGVtLmZpbmQo IjpkYXRhKHNvcnRhYmxlLWl0ZW0pIiksYj0wO2I8dGhpcy5pdGVtcy5sZW5ndGg7 YisrKWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWFbY109PXRoaXMuaXRlbXNb Yl0uaXRlbVswXSYmdGhpcy5pdGVtcy5zcGxpY2UoYiwxKX0sX3JlZnJlc2hJdGVt czpmdW5jdGlvbihiKXt0aGlzLml0ZW1zPVtdLHRoaXMuY29udGFpbmVycz1bdGhp c107dmFyIGM9dGhpcy5pdGVtcyxlPVtbYS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9u cy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50WzBd LGIse2l0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmEodGhpcy5vcHRpb25zLml0ZW1z LHRoaXMuZWxlbWVudCksdGhpc11dLGY9dGhpcy5fY29ubmVjdFdpdGgoKTtpZihm KWZvcih2YXIgZz1mLmxlbmd0aC0xO2c+PTA7Zy0tKWZvcih2YXIgaD1hKGZbZ10p LGk9aC5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGo9YS5kYXRhKGhbaV0sInNvcnRh YmxlIik7aiYmaiE9dGhpcyYmIWoub3B0aW9ucy5kaXNhYmxlZCYmKGUucHVzaChb YS5pc0Z1bmN0aW9uKGoub3B0aW9ucy5pdGVtcyk/ai5vcHRpb25zLml0ZW1zLmNh bGwoai5lbGVtZW50WzBdLGIse2l0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmEoai5v cHRpb25zLml0ZW1zLGouZWxlbWVudCksal0pLHRoaXMuY29udGFpbmVycy5wdXNo KGopKX1mb3IoZz1lLmxlbmd0aC0xO2c+PTA7Zy0tKXtiPWVbZ11bMV0sZj1lW2dd WzBdLGk9MDtmb3IoaD1mLmxlbmd0aDtpPGg7aSsrKWo9YShmW2ldKSxqLmRhdGEo InNvcnRhYmxlLWl0ZW0iLGIpLGMucHVzaCh7aXRlbTpqLGluc3RhbmNlOmIsd2lk dGg6MCxoZWlnaHQ6MCxsZWZ0OjAsdG9wOjB9KX19LHJlZnJlc2hQb3NpdGlvbnM6 ZnVuY3Rpb24oYil7dGhpcy5vZmZzZXRQYXJlbnQmJnRoaXMuaGVscGVyJiYodGhp cy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKTtmb3IodmFy IGM9dGhpcy5pdGVtcy5sZW5ndGgtMTtjPj0wO2MtLSl7dmFyIGU9dGhpcy5pdGVt c1tjXSxmPXRoaXMub3B0aW9ucy50b2xlcmFuY2VFbGVtZW50P2EodGhpcy5vcHRp b25zLnRvbGVyYW5jZUVsZW1lbnQsZS5pdGVtKTplLml0ZW07Ynx8KGUud2lkdGg9 Zi5vdXRlcldpZHRoKCksZS5oZWlnaHQ9Zi5vdXRlckhlaWdodCgpKSxmPWYub2Zm c2V0KCksZS5sZWZ0PWYubGVmdCxlLnRvcD1mLnRvcH1pZih0aGlzLm9wdGlvbnMu Y3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXRo aXMub3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMuY2FsbCh0aGlzKTtl bHNlIGZvcihjPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtjPj0wO2MtLSlmPXRo aXMuY29udGFpbmVyc1tjXS5lbGVtZW50Lm9mZnNldCgpLHRoaXMuY29udGFpbmVy c1tjXS5jb250YWluZXJDYWNoZS5sZWZ0PWYubGVmdCx0aGlzLmNvbnRhaW5lcnNb Y10uY29udGFpbmVyQ2FjaGUudG9wPWYudG9wLHRoaXMuY29udGFpbmVyc1tjXS5j b250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbY10uZWxlbWVudC5v dXRlcldpZHRoKCksdGhpcy5jb250YWluZXJzW2NdLmNvbnRhaW5lckNhY2hlLmhl aWdodD10aGlzLmNvbnRhaW5lcnNbY10uZWxlbWVudC5vdXRlckhlaWdodCgpO3Jl dHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oYil7dmFyIGM9 Ynx8dGhpcyxlPWMub3B0aW9ucztpZighZS5wbGFjZWhvbGRlcnx8ZS5wbGFjZWhv bGRlci5jb25zdHJ1Y3Rvcj09U3RyaW5nKXt2YXIgZj1lLnBsYWNlaG9sZGVyO2Uu cGxhY2Vob2xkZXI9e2VsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYj1hKGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoYy5jdXJyZW50SXRlbVswXS5ub2RlTmFtZSkpLmFkZENs YXNzKGZ8fGMuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUt cGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIilb MF07cmV0dXJuIGZ8fChiLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpLGJ9LHVw ZGF0ZTpmdW5jdGlvbihhLGIpe2lmKCFmfHwhIWUuZm9yY2VQbGFjZWhvbGRlclNp emUpYi5oZWlnaHQoKXx8Yi5oZWlnaHQoYy5jdXJyZW50SXRlbS5pbm5lckhlaWdo dCgpLXBhcnNlSW50KGMuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nVG9wIil8fDAs MTApLXBhcnNlSW50KGMuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nQm90dG9tIil8 fDAsMTApKSxiLndpZHRoKCl8fGIud2lkdGgoYy5jdXJyZW50SXRlbS5pbm5lcldp ZHRoKCktcGFyc2VJbnQoYy5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdMZWZ0Iil8 fDAsMTApLXBhcnNlSW50KGMuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nUmlnaHQi KXx8MCwxMCkpfX19Yy5wbGFjZWhvbGRlcj1hKGUucGxhY2Vob2xkZXIuZWxlbWVu dC5jYWxsKGMuZWxlbWVudCxjLmN1cnJlbnRJdGVtKSksYy5jdXJyZW50SXRlbS5h ZnRlcihjLnBsYWNlaG9sZGVyKSxlLnBsYWNlaG9sZGVyLnVwZGF0ZShjLGMucGxh Y2Vob2xkZXIpfSxfY29udGFjdENvbnRhaW5lcnM6ZnVuY3Rpb24oYil7Zm9yKHZh ciBjPW51bGwsZT1udWxsLGY9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2Y+PTA7 Zi0tKWlmKCFhLnVpLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5j b250YWluZXJzW2ZdLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRo KHRoaXMuY29udGFpbmVyc1tmXS5jb250YWluZXJDYWNoZSkpe2lmKCFjfHwhYS51 aS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbZl0uZWxlbWVudFswXSxjLmVsZW1l bnRbMF0pKWM9dGhpcy5jb250YWluZXJzW2ZdLGU9Zn1lbHNlIHRoaXMuY29udGFp bmVyc1tmXS5jb250YWluZXJDYWNoZS5vdmVyJiYodGhpcy5jb250YWluZXJzW2Zd Ll90cmlnZ2VyKCJvdXQiLGIsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRh aW5lcnNbZl0uY29udGFpbmVyQ2FjaGUub3Zlcj0wKTtpZihjKWlmKHRoaXMuY29u dGFpbmVycy5sZW5ndGg9PT0xKXRoaXMuY29udGFpbmVyc1tlXS5fdHJpZ2dlcigi b3ZlciIsYix0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1tlXS5j b250YWluZXJDYWNoZS5vdmVyPTE7ZWxzZSBpZih0aGlzLmN1cnJlbnRDb250YWlu ZXIhPXRoaXMuY29udGFpbmVyc1tlXSl7Yz0xZTQsZj1udWxsO2Zvcih2YXIgZz10 aGlzLnBvc2l0aW9uQWJzW3RoaXMuY29udGFpbmVyc1tlXS5mbG9hdGluZz8ibGVm dCI6InRvcCJdLGg9dGhpcy5pdGVtcy5sZW5ndGgtMTtoPj0wO2gtLSlpZihhLnVp LmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tlXS5lbGVtZW50WzBdLHRoaXMuaXRl bXNbaF0uaXRlbVswXSkpe3ZhciBpPXRoaXMuaXRlbXNbaF1bdGhpcy5jb250YWlu ZXJzW2VdLmZsb2F0aW5nPyJsZWZ0IjoidG9wIl07TWF0aC5hYnMoaS1nKTxjJiYo Yz1NYXRoLmFicyhpLWcpLGY9dGhpcy5pdGVtc1toXSl9aWYoZnx8dGhpcy5vcHRp b25zLmRyb3BPbkVtcHR5KXRoaXMuY3VycmVudENvbnRhaW5lcj10aGlzLmNvbnRh aW5lcnNbZV0sZj90aGlzLl9yZWFycmFuZ2UoYixmLG51bGwsITApOnRoaXMuX3Jl YXJyYW5nZShiLG51bGwsdGhpcy5jb250YWluZXJzW2VdLmVsZW1lbnQsITApLHRo aXMuX3RyaWdnZXIoImNoYW5nZSIsYix0aGlzLl91aUhhc2goKSksdGhpcy5jb250 YWluZXJzW2VdLl90cmlnZ2VyKCJjaGFuZ2UiLGIsdGhpcy5fdWlIYXNoKHRoaXMp KSx0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIudXBkYXRlKHRoaXMuY3VycmVudENv bnRhaW5lcix0aGlzLnBsYWNlaG9sZGVyKSx0aGlzLmNvbnRhaW5lcnNbZV0uX3Ry aWdnZXIoIm92ZXIiLGIsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5l cnNbZV0uY29udGFpbmVyQ2FjaGUub3Zlcj0xfX0sX2NyZWF0ZUhlbHBlcjpmdW5j dGlvbihiKXt2YXIgYz10aGlzLm9wdGlvbnM7cmV0dXJuIGI9YS5pc0Z1bmN0aW9u KGMuaGVscGVyKT9hKGMuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbYix0 aGlzLmN1cnJlbnRJdGVtXSkpOmMuaGVscGVyPT0iY2xvbmUiP3RoaXMuY3VycmVu dEl0ZW0uY2xvbmUoKTp0aGlzLmN1cnJlbnRJdGVtLGIucGFyZW50cygiYm9keSIp Lmxlbmd0aHx8YShjLmFwcGVuZFRvIT0icGFyZW50Ij9jLmFwcGVuZFRvOnRoaXMu Y3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoYlswXSks YlswXT09dGhpcy5jdXJyZW50SXRlbVswXSYmKHRoaXMuX3N0b3JlZENTUz17d2lk dGg6dGhpcy5jdXJyZW50SXRlbVswXS5zdHlsZS53aWR0aCxoZWlnaHQ6dGhpcy5j dXJyZW50SXRlbVswXS5zdHlsZS5oZWlnaHQscG9zaXRpb246dGhpcy5jdXJyZW50 SXRlbS5jc3MoInBvc2l0aW9uIiksdG9wOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJ0 b3AiKSxsZWZ0OnRoaXMuY3VycmVudEl0ZW0uY3NzKCJsZWZ0Iil9KSwoYlswXS5z dHlsZS53aWR0aD09IiJ8fGMuZm9yY2VIZWxwZXJTaXplKSYmYi53aWR0aCh0aGlz LmN1cnJlbnRJdGVtLndpZHRoKCkpLChiWzBdLnN0eWxlLmhlaWdodD09IiJ8fGMu Zm9yY2VIZWxwZXJTaXplKSYmYi5oZWlnaHQodGhpcy5jdXJyZW50SXRlbS5oZWln aHQoKSksYn0sX2FkanVzdE9mZnNldEZyb21IZWxwZXI6ZnVuY3Rpb24oYil7dHlw ZW9mIGI9PSJzdHJpbmciJiYoYj1iLnNwbGl0KCIgIikpLGEuaXNBcnJheShiKSYm KGI9e2xlZnQ6K2JbMF0sdG9wOitiWzFdfHwwfSksImxlZnQiaW4gYiYmKHRoaXMu b2Zmc2V0LmNsaWNrLmxlZnQ9Yi5sZWZ0K3RoaXMubWFyZ2lucy5sZWZ0KSwicmln aHQiaW4gYiYmKHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9dGhpcy5oZWxwZXJQcm9w b3J0aW9ucy53aWR0aC1iLnJpZ2h0K3RoaXMubWFyZ2lucy5sZWZ0KSwidG9wImlu IGImJih0aGlzLm9mZnNldC5jbGljay50b3A9Yi50b3ArdGhpcy5tYXJnaW5zLnRv cCksImJvdHRvbSJpbiBiJiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXRoaXMuaGVs cGVyUHJvcG9ydGlvbnMuaGVpZ2h0LWIuYm90dG9tK3RoaXMubWFyZ2lucy50b3Ap fSxfZ2V0UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5vZmZzZXRQYXJlbnQ9 dGhpcy5oZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGI9dGhpcy5vZmZzZXRQYXJl bnQub2Zmc2V0KCk7dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmdGhpcy5z Y3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZhLnVpLmNvbnRhaW5zKHRoaXMuc2Ny b2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKGIubGVmdCs9dGhp cy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLGIudG9wKz10aGlzLnNjcm9sbFBh cmVudC5zY3JvbGxUb3AoKSk7aWYodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3Vt ZW50LmJvZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJnRoaXMub2Zm c2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09Imh0bWwiJiZhLmJy b3dzZXIubXNpZSliPXt0b3A6MCxsZWZ0OjB9O3JldHVybnt0b3A6Yi50b3ArKHBh cnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyVG9wV2lkdGgiKSwx MCl8fDApLGxlZnQ6Yi5sZWZ0KyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5j c3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCl9fSxfZ2V0UmVsYXRpdmVPZmZz ZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLmNzc1Bvc2l0aW9uPT0icmVsYXRpdmUiKXt2 YXIgYT10aGlzLmN1cnJlbnRJdGVtLnBvc2l0aW9uKCk7cmV0dXJue3RvcDphLnRv cC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSwxMCl8fDApK3RoaXMu c2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLGxlZnQ6YS5sZWZ0LShwYXJzZUludCh0 aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50 LnNjcm9sbExlZnQoKX19cmV0dXJue3RvcDowLGxlZnQ6MH19LF9jYWNoZU1hcmdp bnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmdpbnM9e2xlZnQ6cGFyc2VJbnQodGhpcy5j dXJyZW50SXRlbS5jc3MoIm1hcmdpbkxlZnQiKSwxMCl8fDAsdG9wOnBhcnNlSW50 KHRoaXMuY3VycmVudEl0ZW0uY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDB9fSxfY2Fj aGVIZWxwZXJQcm9wb3J0aW9uczpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9y dGlvbnM9e3dpZHRoOnRoaXMuaGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhp cy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19LF9zZXRDb250YWlubWVudDpmdW5jdGlv bigpe3ZhciBiPXRoaXMub3B0aW9ucztiLmNvbnRhaW5tZW50PT0icGFyZW50IiYm KGIuY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSk7aWYoYi5j b250YWlubWVudD09ImRvY3VtZW50Inx8Yi5jb250YWlubWVudD09IndpbmRvdyIp dGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRo aXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9w LXRoaXMub2Zmc2V0LnBhcmVudC50b3AsYShiLmNvbnRhaW5tZW50PT0iZG9jdW1l bnQiP2RvY3VtZW50OndpbmRvdykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRp b25zLndpZHRoLXRoaXMubWFyZ2lucy5sZWZ0LChhKGIuY29udGFpbm1lbnQ9PSJk b2N1bWVudCI/ZG9jdW1lbnQ6d2luZG93KS5oZWlnaHQoKXx8ZG9jdW1lbnQuYm9k eS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9u cy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF07aWYoIS9eKGRvY3VtZW50fHdpbmRv d3xwYXJlbnQpJC8udGVzdChiLmNvbnRhaW5tZW50KSl7dmFyIGM9YShiLmNvbnRh aW5tZW50KVswXTtiPWEoYi5jb250YWlubWVudCkub2Zmc2V0KCk7dmFyIGU9YShj KS5jc3MoIm92ZXJmbG93IikhPSJoaWRkZW4iO3RoaXMuY29udGFpbm1lbnQ9W2Iu bGVmdCsocGFyc2VJbnQoYShjKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8 MCkrKHBhcnNlSW50KGEoYykuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhp cy5tYXJnaW5zLmxlZnQsYi50b3ArKHBhcnNlSW50KGEoYykuY3NzKCJib3JkZXJU b3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGEoYykuY3NzKCJwYWRkaW5nVG9w IiksMTApfHwwKS10aGlzLm1hcmdpbnMudG9wLGIubGVmdCsoZT9NYXRoLm1heChj LnNjcm9sbFdpZHRoLGMub2Zmc2V0V2lkdGgpOmMub2Zmc2V0V2lkdGgpLShwYXJz ZUludChhKGMpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKS0ocGFyc2VJ bnQoYShjKS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQ cm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxiLnRvcCsoZT9NYXRo Lm1heChjLnNjcm9sbEhlaWdodCxjLm9mZnNldEhlaWdodCk6Yy5vZmZzZXRIZWln aHQpLShwYXJzZUludChhKGMpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDAp LShwYXJzZUludChhKGMpLmNzcygicGFkZGluZ0JvdHRvbSIpLDEwKXx8MCktdGhp cy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF19fSxf Y29udmVydFBvc2l0aW9uVG86ZnVuY3Rpb24oYixjKXtjfHwoYz10aGlzLnBvc2l0 aW9uKSxiPWI9PSJhYnNvbHV0ZSI/MTotMTt2YXIgZT10aGlzLmNzc1Bvc2l0aW9u IT0iYWJzb2x1dGUifHx0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJiEh YS51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBh cmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsZj0v KGh0bWx8Ym9keSkvaS50ZXN0KGVbMF0udGFnTmFtZSk7cmV0dXJue3RvcDpjLnRv cCt0aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AqYit0aGlzLm9mZnNldC5wYXJlbnQu dG9wKmItKGEuYnJvd3Nlci5zYWZhcmkmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhl ZCI/MDoodGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJl bnQuc2Nyb2xsVG9wKCk6Zj8wOmUuc2Nyb2xsVG9wKCkpKmIpLGxlZnQ6Yy5sZWZ0 K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQqYit0aGlzLm9mZnNldC5wYXJlbnQu bGVmdCpiLShhLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4 ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFy ZW50LnNjcm9sbExlZnQoKTpmPzA6ZS5zY3JvbGxMZWZ0KCkpKmIpfX0sX2dlbmVy YXRlUG9zaXRpb246ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5vcHRpb25zLGU9dGhp cy5jc3NQb3NpdGlvbiE9ImFic29sdXRlInx8dGhpcy5zY3JvbGxQYXJlbnRbMF0h PWRvY3VtZW50JiYhIWEudWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0s dGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zm c2V0UGFyZW50LGY9LyhodG1sfGJvZHkpL2kudGVzdChlWzBdLnRhZ05hbWUpO3Ro aXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSImJih0aGlzLnNjcm9sbFBhcmVudFsw XT09ZG9jdW1lbnR8fHRoaXMuc2Nyb2xsUGFyZW50WzBdPT10aGlzLm9mZnNldFBh cmVudFswXSkmJih0aGlzLm9mZnNldC5yZWxhdGl2ZT10aGlzLl9nZXRSZWxhdGl2 ZU9mZnNldCgpKTt2YXIgZz1iLnBhZ2VYLGg9Yi5wYWdlWTtyZXR1cm4gdGhpcy5v cmlnaW5hbFBvc2l0aW9uJiYodGhpcy5jb250YWlubWVudCYmKGIucGFnZVgtdGhp cy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdJiYoZz10aGlz LmNvbnRhaW5tZW50WzBdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQpLGIucGFnZVkt dGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV0mJihoPXRo aXMuY29udGFpbm1lbnRbMV0rdGhpcy5vZmZzZXQuY2xpY2sudG9wKSxiLnBhZ2VY LXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSYmKGc9 dGhpcy5jb250YWlubWVudFsyXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxiLnBh Z2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50WzNdJiYo aD10aGlzLmNvbnRhaW5tZW50WzNdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCkpLGMu Z3JpZCYmKGg9dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGgtdGhpcy5v cmlnaW5hbFBhZ2VZKS9jLmdyaWRbMV0pKmMuZ3JpZFsxXSxoPXRoaXMuY29udGFp bm1lbnQ/aC10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsx XXx8aC10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXT9o LXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdP2grYy5n cmlkWzFdOmgtYy5ncmlkWzFdOmg6aCxnPXRoaXMub3JpZ2luYWxQYWdlWCtNYXRo LnJvdW5kKChnLXRoaXMub3JpZ2luYWxQYWdlWCkvYy5ncmlkWzBdKSpjLmdyaWRb MF0sZz10aGlzLmNvbnRhaW5tZW50P2ctdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0 aGlzLmNvbnRhaW5tZW50WzBdfHxnLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhp cy5jb250YWlubWVudFsyXT9nLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5j b250YWlubWVudFswXT9nK2MuZ3JpZFswXTpnLWMuZ3JpZFswXTpnOmcpKSx7dG9w OmgtdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRv cC10aGlzLm9mZnNldC5wYXJlbnQudG9wKyhhLmJyb3dzZXIuc2FmYXJpJiZ0aGlz LmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6dGhpcy5jc3NQb3NpdGlvbj09ImZpeGVk Ij8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6Zj8wOmUuc2Nyb2xsVG9w KCkpLGxlZnQ6Zy10aGlzLm9mZnNldC5jbGljay5sZWZ0LXRoaXMub2Zmc2V0LnJl bGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQrKGEuYnJvd3Nlci5z YWZhcmkmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDp0aGlzLmNzc1Bvc2l0 aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6Zj8w OmUuc2Nyb2xsTGVmdCgpKX19LF9yZWFycmFuZ2U6ZnVuY3Rpb24oYSxiLGMsZCl7 Yz9jWzBdLmFwcGVuZENoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pOmIuaXRlbVsw XS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLnBsYWNlaG9sZGVyWzBdLHRo aXMuZGlyZWN0aW9uPT0iZG93biI/Yi5pdGVtWzBdOmIuaXRlbVswXS5uZXh0U2li bGluZyksdGhpcy5jb3VudGVyPXRoaXMuY291bnRlcj8rK3RoaXMuY291bnRlcjox O3ZhciBlPXRoaXMsZj10aGlzLmNvdW50ZXI7d2luZG93LnNldFRpbWVvdXQoZnVu Y3Rpb24oKXtmPT1lLmNvdW50ZXImJmUucmVmcmVzaFBvc2l0aW9ucyghZCl9LDAp fSxfY2xlYXI6ZnVuY3Rpb24oYixjKXt0aGlzLnJldmVydGluZz0hMTt2YXIgZT1b XTshdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50 Tm9kZSYmdGhpcy5wbGFjZWhvbGRlci5iZWZvcmUodGhpcy5jdXJyZW50SXRlbSks dGhpcy5fbm9GaW5hbFNvcnQ9bnVsbDtpZih0aGlzLmhlbHBlclswXT09dGhpcy5j dXJyZW50SXRlbVswXSl7Zm9yKHZhciBmIGluIHRoaXMuX3N0b3JlZENTUylpZih0 aGlzLl9zdG9yZWRDU1NbZl09PSJhdXRvInx8dGhpcy5fc3RvcmVkQ1NTW2ZdPT0i c3RhdGljIil0aGlzLl9zdG9yZWRDU1NbZl09IiI7dGhpcy5jdXJyZW50SXRlbS5j c3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVs cGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTt0aGlzLmZyb21PdXRz aWRlJiYhYyYmZS5wdXNoKGZ1bmN0aW9uKGEpe3RoaXMuX3RyaWdnZXIoInJlY2Vp dmUiLGEsdGhpcy5fdWlIYXNoKHRoaXMuZnJvbU91dHNpZGUpKX0pLCh0aGlzLmZy b21PdXRzaWRlfHx0aGlzLmRvbVBvc2l0aW9uLnByZXYhPXRoaXMuY3VycmVudEl0 ZW0ucHJldigpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpWzBdfHx0aGlzLmRv bVBvc2l0aW9uLnBhcmVudCE9dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXSkm JiFjJiZlLnB1c2goZnVuY3Rpb24oYSl7dGhpcy5fdHJpZ2dlcigidXBkYXRlIixh LHRoaXMuX3VpSGFzaCgpKX0pO2lmKCFhLnVpLmNvbnRhaW5zKHRoaXMuZWxlbWVu dFswXSx0aGlzLmN1cnJlbnRJdGVtWzBdKSl7Y3x8ZS5wdXNoKGZ1bmN0aW9uKGEp e3RoaXMuX3RyaWdnZXIoInJlbW92ZSIsYSx0aGlzLl91aUhhc2goKSl9KTtmb3Io Zj10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7Zj49MDtmLS0pYS51aS5jb250YWlu cyh0aGlzLmNvbnRhaW5lcnNbZl0uZWxlbWVudFswXSx0aGlzLmN1cnJlbnRJdGVt WzBdKSYmIWMmJihlLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIp e2EuX3RyaWdnZXIoInJlY2VpdmUiLGIsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNh bGwodGhpcyx0aGlzLmNvbnRhaW5lcnNbZl0pKSxlLnB1c2goZnVuY3Rpb24oYSl7 cmV0dXJuIGZ1bmN0aW9uKGIpe2EuX3RyaWdnZXIoInVwZGF0ZSIsYix0aGlzLl91 aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tmXSkpKX1m b3IoZj10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7Zj49MDtmLS0pY3x8ZS5wdXNo KGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXthLl90cmlnZ2VyKCJkZWFj dGl2YXRlIixiLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5j b250YWluZXJzW2ZdKSksdGhpcy5jb250YWluZXJzW2ZdLmNvbnRhaW5lckNhY2hl Lm92ZXImJihlLnB1c2goZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2Eu X3RyaWdnZXIoIm91dCIsYix0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlz LHRoaXMuY29udGFpbmVyc1tmXSkpLHRoaXMuY29udGFpbmVyc1tmXS5jb250YWlu ZXJDYWNoZS5vdmVyPTApO3RoaXMuX3N0b3JlZEN1cnNvciYmYSgiYm9keSIpLmNz cygiY3Vyc29yIix0aGlzLl9zdG9yZWRDdXJzb3IpLHRoaXMuX3N0b3JlZE9wYWNp dHkmJnRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsdGhpcy5fc3RvcmVkT3BhY2l0 eSksdGhpcy5fc3RvcmVkWkluZGV4JiZ0aGlzLmhlbHBlci5jc3MoInpJbmRleCIs dGhpcy5fc3RvcmVkWkluZGV4PT0iYXV0byI/IiI6dGhpcy5fc3RvcmVkWkluZGV4 KSx0aGlzLmRyYWdnaW5nPSExO2lmKHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbCl7 aWYoIWMpe3RoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLGIsdGhpcy5fdWlIYXNo KCkpO2ZvcihmPTA7ZjxlLmxlbmd0aDtmKyspZVtmXS5jYWxsKHRoaXMsYik7dGhp cy5fdHJpZ2dlcigic3RvcCIsYix0aGlzLl91aUhhc2goKSl9cmV0dXJuITF9Y3x8 dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsYix0aGlzLl91aUhhc2goKSksdGhp cy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxh Y2Vob2xkZXJbMF0pLHRoaXMuaGVscGVyWzBdIT10aGlzLmN1cnJlbnRJdGVtWzBd JiZ0aGlzLmhlbHBlci5yZW1vdmUoKSx0aGlzLmhlbHBlcj1udWxsO2lmKCFjKXtm b3IoZj0wO2Y8ZS5sZW5ndGg7ZisrKWVbZl0uY2FsbCh0aGlzLGIpO3RoaXMuX3Ry aWdnZXIoInN0b3AiLGIsdGhpcy5fdWlIYXNoKCkpfXJldHVybiB0aGlzLmZyb21P dXRzaWRlPSExLCEwfSxfdHJpZ2dlcjpmdW5jdGlvbigpe2EuV2lkZ2V0LnByb3Rv dHlwZS5fdHJpZ2dlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk9PT0hMSYmdGhpcy5j YW5jZWwoKX0sX3VpSGFzaDpmdW5jdGlvbihiKXt2YXIgYz1ifHx0aGlzO3JldHVy bntoZWxwZXI6Yy5oZWxwZXIscGxhY2Vob2xkZXI6Yy5wbGFjZWhvbGRlcnx8YShb XSkscG9zaXRpb246Yy5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9uOmMub3JpZ2lu YWxQb3NpdGlvbixvZmZzZXQ6Yy5wb3NpdGlvbkFicyxpdGVtOmMuY3VycmVudEl0 ZW0sc2VuZGVyOmI/Yi5lbGVtZW50Om51bGx9fX0pLGEuZXh0ZW5kKGEudWkuc29y dGFibGUse3ZlcnNpb246IjEuOC42In0pfShqUXVlcnkpLGZ1bmN0aW9uKGEpe2Eu d2lkZ2V0KCJ1aS5hY2NvcmRpb24iLHtvcHRpb25zOnthY3RpdmU6MCxhbmltYXRl ZDoic2xpZGUiLGF1dG9IZWlnaHQ6ITAsY2xlYXJTdHlsZTohMSxjb2xsYXBzaWJs ZTohMSxldmVudDoiY2xpY2siLGZpbGxTcGFjZTohMSxoZWFkZXI6Ij4gbGkgPiA6 Zmlyc3QtY2hpbGQsPiA6bm90KGxpKTpldmVuIixpY29uczp7aGVhZGVyOiJ1aS1p Y29uLXRyaWFuZ2xlLTEtZSIsaGVhZGVyU2VsZWN0ZWQ6InVpLWljb24tdHJpYW5n bGUtMS1zIn0sbmF2aWdhdGlvbjohMSxuYXZpZ2F0aW9uRmlsdGVyOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuaHJlZi50b0xvd2VyQ2FzZSgpPT09bG9jYXRpb24uaHJl Zi50b0xvd2VyQ2FzZSgpfX0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMs ZD1iLm9wdGlvbnM7Yi5ydW5uaW5nPTAsYi5lbGVtZW50LmFkZENsYXNzKCJ1aS1h Y2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLmNoaWxkcmVuKCJs aSIpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tbGktZml4IiksYi5oZWFkZXJzPWIu ZWxlbWVudC5maW5kKGQuaGVhZGVyKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWhl YWRlciB1aS1oZWxwZXItcmVzZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXIt YWxsIikuYmluZCgibW91c2VlbnRlci5hY2NvcmRpb24iLGZ1bmN0aW9uKCl7ZC5k aXNhYmxlZHx8YSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtaG92ZXIiKX0pLmJp bmQoIm1vdXNlbGVhdmUuYWNjb3JkaW9uIixmdW5jdGlvbigpe2QuZGlzYWJsZWR8 fGEodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5iaW5kKCJm b2N1cy5hY2NvcmRpb24iLGZ1bmN0aW9uKCl7ZC5kaXNhYmxlZHx8YSh0aGlzKS5h ZGRDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pLmJpbmQoImJsdXIuYWNjb3JkaW9u IixmdW5jdGlvbigpe2QuZGlzYWJsZWR8fGEodGhpcykucmVtb3ZlQ2xhc3MoInVp LXN0YXRlLWZvY3VzIil9KSxiLmhlYWRlcnMubmV4dCgpLmFkZENsYXNzKCJ1aS1h Y2NvcmRpb24tY29udGVudCB1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRl bnQgdWktY29ybmVyLWJvdHRvbSIpO2lmKGQubmF2aWdhdGlvbil7dmFyIGU9Yi5l bGVtZW50LmZpbmQoImEiKS5maWx0ZXIoZC5uYXZpZ2F0aW9uRmlsdGVyKS5lcSgw KTtpZihlLmxlbmd0aCl7dmFyIGY9ZS5jbG9zZXN0KCIudWktYWNjb3JkaW9uLWhl YWRlciIpO2IuYWN0aXZlPWYubGVuZ3RoP2Y6ZS5jbG9zZXN0KCIudWktYWNjb3Jk aW9uLWNvbnRlbnQiKS5wcmV2KCl9fWIuYWN0aXZlPWIuX2ZpbmRBY3RpdmUoYi5h Y3RpdmV8fGQuYWN0aXZlKS5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1z dGF0ZS1hY3RpdmUiKS50b2dnbGVDbGFzcygidWktY29ybmVyLWFsbCIpLnRvZ2ds ZUNsYXNzKCJ1aS1jb3JuZXItdG9wIiksYi5hY3RpdmUubmV4dCgpLmFkZENsYXNz KCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSxiLl9jcmVhdGVJY29ucygp LGIucmVzaXplKCksYi5lbGVtZW50LmF0dHIoInJvbGUiLCJ0YWJsaXN0IiksYi5o ZWFkZXJzLmF0dHIoInJvbGUiLCJ0YWIiKS5iaW5kKCJrZXlkb3duLmFjY29yZGlv biIsZnVuY3Rpb24oYSl7cmV0dXJuIGIuX2tleWRvd24oYSl9KS5uZXh0KCkuYXR0 cigicm9sZSIsInRhYnBhbmVsIiksYi5oZWFkZXJzLm5vdChiLmFjdGl2ZXx8IiIp LmF0dHIoeyJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4 dCgpLmhpZGUoKSxiLmFjdGl2ZS5sZW5ndGg/Yi5hY3RpdmUuYXR0cih7ImFyaWEt ZXhwYW5kZWQiOiJ0cnVlIix0YWJJbmRleDowfSk6Yi5oZWFkZXJzLmVxKDApLmF0 dHIoInRhYkluZGV4IiwwKSxhLmJyb3dzZXIuc2FmYXJpfHxiLmhlYWRlcnMuZmlu ZCgiYSIpLmF0dHIoInRhYkluZGV4IiwtMSksZC5ldmVudCYmYi5oZWFkZXJzLmJp bmQoZC5ldmVudC5zcGxpdCgiICIpLmpvaW4oIi5hY2NvcmRpb24gIikrIi5hY2Nv cmRpb24iLGZ1bmN0aW9uKGEpe2IuX2NsaWNrSGFuZGxlci5jYWxsKGIsYSx0aGlz KSxhLnByZXZlbnREZWZhdWx0KCl9KX0sX2NyZWF0ZUljb25zOmZ1bmN0aW9uKCl7 dmFyIGI9dGhpcy5vcHRpb25zO2IuaWNvbnMmJihhKCI8c3Bhbj48L3NwYW4+Iiku YWRkQ2xhc3MoInVpLWljb24gIitiLmljb25zLmhlYWRlcikucHJlcGVuZFRvKHRo aXMuaGVhZGVycyksdGhpcy5hY3RpdmUuY2hpbGRyZW4oIi51aS1pY29uIikudG9n Z2xlQ2xhc3MoYi5pY29ucy5oZWFkZXIpLnRvZ2dsZUNsYXNzKGIuaWNvbnMuaGVh ZGVyU2VsZWN0ZWQpLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYWNjb3JkaW9u LWljb25zIikpfSxfZGVzdHJveUljb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWFkZXJz LmNoaWxkcmVuKCIudWktaWNvbiIpLnJlbW92ZSgpLHRoaXMuZWxlbWVudC5yZW1v dmVDbGFzcygidWktYWNjb3JkaW9uLWljb25zIil9LGRlc3Ryb3k6ZnVuY3Rpb24o KXt2YXIgYj10aGlzLm9wdGlvbnM7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1 aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLnJlbW92ZUF0 dHIoInJvbGUiKSx0aGlzLmhlYWRlcnMudW5iaW5kKCIuYWNjb3JkaW9uIikucmVt b3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktYWNjb3JkaW9uLWRpc2Fi bGVkIHVpLWhlbHBlci1yZXNldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1h bGwgdWktc3RhdGUtYWN0aXZlIHVpLXN0YXRlLWRpc2FibGVkIHVpLWNvcm5lci10 b3AiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS1leHBhbmRl ZCIpLnJlbW92ZUF0dHIoInRhYkluZGV4IiksdGhpcy5oZWFkZXJzLmZpbmQoImEi KS5yZW1vdmVBdHRyKCJ0YWJJbmRleCIpLHRoaXMuX2Rlc3Ryb3lJY29ucygpO3Zh ciBkPXRoaXMuaGVhZGVycy5uZXh0KCkuY3NzKCJkaXNwbGF5IiwiIikucmVtb3Zl QXR0cigicm9sZSIpLnJlbW92ZUNsYXNzKCJ1aS1oZWxwZXItcmVzZXQgdWktd2lk Z2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSB1aS1hY2NvcmRpb24tY29udGVu dCB1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUgdWktYWNjb3JkaW9uLWRpc2Fi bGVkIHVpLXN0YXRlLWRpc2FibGVkIik7cmV0dXJuKGIuYXV0b0hlaWdodHx8Yi5m aWxsSGVpZ2h0KSYmZC5jc3MoImhlaWdodCIsIiIpLGEuV2lkZ2V0LnByb3RvdHlw ZS5kZXN0cm95LmNhbGwodGhpcyl9LF9zZXRPcHRpb246ZnVuY3Rpb24oYixkKXth LldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50 cyksYj09ImFjdGl2ZSImJnRoaXMuYWN0aXZhdGUoZCksYj09Imljb25zIiYmKHRo aXMuX2Rlc3Ryb3lJY29ucygpLGQmJnRoaXMuX2NyZWF0ZUljb25zKCkpLGI9PSJk aXNhYmxlZCImJnRoaXMuaGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSlb ZD8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS1hY2NvcmRpb24tZGlzYWJs ZWQgdWktc3RhdGUtZGlzYWJsZWQiKX0sX2tleWRvd246ZnVuY3Rpb24oYil7aWYo ISh0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fGIuYWx0S2V5fHxiLmN0cmxLZXkpKXt2 YXIgZD1hLnVpLmtleUNvZGUsZT10aGlzLmhlYWRlcnMubGVuZ3RoLGY9dGhpcy5o ZWFkZXJzLmluZGV4KGIudGFyZ2V0KSxnPSExO3N3aXRjaChiLmtleUNvZGUpe2Nh c2UgZC5SSUdIVDpjYXNlIGQuRE9XTjpnPXRoaXMuaGVhZGVyc1soZisxKSVlXTti cmVhaztjYXNlIGQuTEVGVDpjYXNlIGQuVVA6Zz10aGlzLmhlYWRlcnNbKGYtMStl KSVlXTticmVhaztjYXNlIGQuU1BBQ0U6Y2FzZSBkLkVOVEVSOnRoaXMuX2NsaWNr SGFuZGxlcih7dGFyZ2V0OmIudGFyZ2V0fSxiLnRhcmdldCksYi5wcmV2ZW50RGVm YXVsdCgpfXJldHVybiBnPyhhKGIudGFyZ2V0KS5hdHRyKCJ0YWJJbmRleCIsLTEp LGEoZykuYXR0cigidGFiSW5kZXgiLDApLGcuZm9jdXMoKSwhMSk6ITB9fSxyZXNp emU6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMsZDtpZihiLmZpbGxTcGFj ZSl7aWYoYS5icm93c2VyLm1zaWUpe3ZhciBlPXRoaXMuZWxlbWVudC5wYXJlbnQo KS5jc3MoIm92ZXJmbG93Iik7dGhpcy5lbGVtZW50LnBhcmVudCgpLmNzcygib3Zl cmZsb3ciLCJoaWRkZW4iKX1kPXRoaXMuZWxlbWVudC5wYXJlbnQoKS5oZWlnaHQo KSxhLmJyb3dzZXIubXNpZSYmdGhpcy5lbGVtZW50LnBhcmVudCgpLmNzcygib3Zl cmZsb3ciLGUpLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7ZC09YSh0aGlz KS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVu Y3Rpb24oKXthKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLGQtYSh0aGlzKS5pbm5l ckhlaWdodCgpK2EodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJh dXRvIil9ZWxzZSBiLmF1dG9IZWlnaHQmJihkPTAsdGhpcy5oZWFkZXJzLm5leHQo KS5lYWNoKGZ1bmN0aW9uKCl7ZD1NYXRoLm1heChkLGEodGhpcykuaGVpZ2h0KCIi KS5oZWlnaHQoKSl9KS5oZWlnaHQoZCkpO3JldHVybiB0aGlzfSxhY3RpdmF0ZTpm dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vcHRpb25zLmFjdGl2ZT1hLGE9dGhpcy5f ZmluZEFjdGl2ZShhKVswXSx0aGlzLl9jbGlja0hhbmRsZXIoe3RhcmdldDphfSxh KSx0aGlzfSxfZmluZEFjdGl2ZTpmdW5jdGlvbihiKXtyZXR1cm4gYj90eXBlb2Yg Yj09Im51bWJlciI/dGhpcy5oZWFkZXJzLmZpbHRlcigiOmVxKCIrYisiKSIpOnRo aXMuaGVhZGVycy5ub3QodGhpcy5oZWFkZXJzLm5vdChiKSk6Yj09PSExP2EoW10p OnRoaXMuaGVhZGVycy5maWx0ZXIoIjplcSgwKSIpfSxfY2xpY2tIYW5kbGVyOmZ1 bmN0aW9uKGIsZCl7dmFyIGU9dGhpcy5vcHRpb25zO2lmKCFlLmRpc2FibGVkKWlm KGIudGFyZ2V0KWI9YShiLmN1cnJlbnRUYXJnZXR8fGQpLGQ9YlswXT09PXRoaXMu YWN0aXZlWzBdLGUuYWN0aXZlPWUuY29sbGFwc2libGUmJmQ/ITE6dGhpcy5oZWFk ZXJzLmluZGV4KGIpLHRoaXMucnVubmluZ3x8IWUuY29sbGFwc2libGUmJmR8fCh0 aGlzLmFjdGl2ZS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIHVpLWNvcm5l ci10b3AiKS5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxs IikuY2hpbGRyZW4oIi51aS1pY29uIikucmVtb3ZlQ2xhc3MoZS5pY29ucy5oZWFk ZXJTZWxlY3RlZCkuYWRkQ2xhc3MoZS5pY29ucy5oZWFkZXIpLGR8fChiLnJlbW92 ZUNsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKS5hZGRDbGFz cygidWktc3RhdGUtYWN0aXZlIHVpLWNvcm5lci10b3AiKS5jaGlsZHJlbigiLnVp LWljb24iKS5yZW1vdmVDbGFzcyhlLmljb25zLmhlYWRlcikuYWRkQ2xhc3MoZS5p Y29ucy5oZWFkZXJTZWxlY3RlZCksYi5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29y ZGlvbi1jb250ZW50LWFjdGl2ZSIpKSxoPWIubmV4dCgpLGY9dGhpcy5hY3RpdmUu bmV4dCgpLGc9e29wdGlvbnM6ZSxuZXdIZWFkZXI6ZCYmZS5jb2xsYXBzaWJsZT9h KFtdKTpiLG9sZEhlYWRlcjp0aGlzLmFjdGl2ZSxuZXdDb250ZW50OmQmJmUuY29s bGFwc2libGU/YShbXSk6aCxvbGRDb250ZW50OmZ9LGU9dGhpcy5oZWFkZXJzLmlu ZGV4KHRoaXMuYWN0aXZlWzBdKT50aGlzLmhlYWRlcnMuaW5kZXgoYlswXSksdGhp cy5hY3RpdmU9ZD9hKFtdKTpiLHRoaXMuX3RvZ2dsZShoLGYsZyxkLGUpKTtlbHNl IGlmKGUuY29sbGFwc2libGUpe3RoaXMuYWN0aXZlLnJlbW92ZUNsYXNzKCJ1aS1z dGF0ZS1hY3RpdmUgdWktY29ybmVyLXRvcCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1k ZWZhdWx0IHVpLWNvcm5lci1hbGwiKS5jaGlsZHJlbigiLnVpLWljb24iKS5yZW1v dmVDbGFzcyhlLmljb25zLmhlYWRlclNlbGVjdGVkKS5hZGRDbGFzcyhlLmljb25z LmhlYWRlciksdGhpcy5hY3RpdmUubmV4dCgpLmFkZENsYXNzKCJ1aS1hY2NvcmRp b24tY29udGVudC1hY3RpdmUiKTt2YXIgZj10aGlzLmFjdGl2ZS5uZXh0KCksZz17 b3B0aW9uczplLG5ld0hlYWRlcjphKFtdKSxvbGRIZWFkZXI6ZS5hY3RpdmUsbmV3 Q29udGVudDphKFtdKSxvbGRDb250ZW50OmZ9LGg9dGhpcy5hY3RpdmU9YShbXSk7 dGhpcy5fdG9nZ2xlKGgsZixnKX19LF90b2dnbGU6ZnVuY3Rpb24oYixkLGUsZixn KXt2YXIgaD10aGlzLGk9aC5vcHRpb25zO2gudG9TaG93PWIsaC50b0hpZGU9ZCxo LmRhdGE9ZTt2YXIgaj1mdW5jdGlvbigpe2lmKGgpcmV0dXJuIGguX2NvbXBsZXRl ZC5hcHBseShoLGFyZ3VtZW50cyl9O2guX3RyaWdnZXIoImNoYW5nZXN0YXJ0Iixu dWxsLGguZGF0YSksaC5ydW5uaW5nPWQuc2l6ZSgpPT09MD9iLnNpemUoKTpkLnNp emUoKTtpZihpLmFuaW1hdGVkKXtlPXt9LGU9aS5jb2xsYXBzaWJsZSYmZj97dG9T aG93OmEoW10pLHRvSGlkZTpkLGNvbXBsZXRlOmosZG93bjpnLGF1dG9IZWlnaHQ6 aS5hdXRvSGVpZ2h0fHxpLmZpbGxTcGFjZX06e3RvU2hvdzpiLHRvSGlkZTpkLGNv bXBsZXRlOmosZG93bjpnLGF1dG9IZWlnaHQ6aS5hdXRvSGVpZ2h0fHxpLmZpbGxT cGFjZX0saS5wcm94aWVkfHwoaS5wcm94aWVkPWkuYW5pbWF0ZWQpLGkucHJveGll ZER1cmF0aW9ufHwoaS5wcm94aWVkRHVyYXRpb249aS5kdXJhdGlvbiksaS5hbmlt YXRlZD1hLmlzRnVuY3Rpb24oaS5wcm94aWVkKT9pLnByb3hpZWQoZSk6aS5wcm94 aWVkLGkuZHVyYXRpb249YS5pc0Z1bmN0aW9uKGkucHJveGllZER1cmF0aW9uKT9p LnByb3hpZWREdXJhdGlvbihlKTppLnByb3hpZWREdXJhdGlvbixmPWEudWkuYWNj b3JkaW9uLmFuaW1hdGlvbnM7dmFyIGs9aS5kdXJhdGlvbixsPWkuYW5pbWF0ZWQ7 bCYmIWZbbF0mJiFhLmVhc2luZ1tsXSYmKGw9InNsaWRlIiksZltsXXx8KGZbbF09 ZnVuY3Rpb24oYSl7dGhpcy5zbGlkZShhLHtlYXNpbmc6bCxkdXJhdGlvbjprfHw3 MDB9KX0pLGZbbF0oZSl9ZWxzZSBpLmNvbGxhcHNpYmxlJiZmP2IudG9nZ2xlKCk6 KGQuaGlkZSgpLGIuc2hvdygpKSxqKCEwKTtkLnByZXYoKS5hdHRyKHsiYXJpYS1l eHBhbmRlZCI6ImZhbHNlIix0YWJJbmRleDotMX0pLmJsdXIoKSxiLnByZXYoKS5h dHRyKHsiYXJpYS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9KS5mb2N1cygp fSxfY29tcGxldGVkOmZ1bmN0aW9uKGEpe3RoaXMucnVubmluZz1hPzA6LS10aGlz LnJ1bm5pbmcsdGhpcy5ydW5uaW5nfHwodGhpcy5vcHRpb25zLmNsZWFyU3R5bGUm JnRoaXMudG9TaG93LmFkZCh0aGlzLnRvSGlkZSkuY3NzKHtoZWlnaHQ6IiIsb3Zl cmZsb3c6IiJ9KSx0aGlzLnRvSGlkZS5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9u LWNvbnRlbnQtYWN0aXZlIiksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixudWxsLHRo aXMuZGF0YSkpfX0pLGEuZXh0ZW5kKGEudWkuYWNjb3JkaW9uLHt2ZXJzaW9uOiIx LjguNiIsYW5pbWF0aW9uczp7c2xpZGU6ZnVuY3Rpb24oYixkKXtiPWEuZXh0ZW5k KHtlYXNpbmc6InN3aW5nIixkdXJhdGlvbjozMDB9LGIsZCk7aWYoYi50b0hpZGUu c2l6ZSgpKWlmKGIudG9TaG93LnNpemUoKSl7dmFyIGU9Yi50b1Nob3cuY3NzKCJv dmVyZmxvdyIpLGY9MCxnPXt9LGg9e30saTtkPWIudG9TaG93LGk9ZFswXS5zdHls ZS53aWR0aCxkLndpZHRoKHBhcnNlSW50KGQucGFyZW50KCkud2lkdGgoKSwxMCkt cGFyc2VJbnQoZC5jc3MoInBhZGRpbmdMZWZ0IiksMTApLXBhcnNlSW50KGQuY3Nz KCJwYWRkaW5nUmlnaHQiKSwxMCktKHBhcnNlSW50KGQuY3NzKCJib3JkZXJMZWZ0 V2lkdGgiKSwxMCl8fDApLShwYXJzZUludChkLmNzcygiYm9yZGVyUmlnaHRXaWR0 aCIpLDEwKXx8MCkpLGEuZWFjaChbImhlaWdodCIsInBhZGRpbmdUb3AiLCJwYWRk aW5nQm90dG9tIl0sZnVuY3Rpb24oZCxlKXtoW2VdPSJoaWRlIixkPSgiIithLmNz cyhiLnRvU2hvd1swXSxlKSkubWF0Y2goL14oW1xkKy0uXSspKC4qKSQvKSxnW2Vd PXt2YWx1ZTpkWzFdLHVuaXQ6ZFsyXXx8InB4In19KSxiLnRvU2hvdy5jc3Moe2hl aWdodDowLG92ZXJmbG93OiJoaWRkZW4ifSkuc2hvdygpLGIudG9IaWRlLmZpbHRl cigiOmhpZGRlbiIpLmVhY2goYi5jb21wbGV0ZSkuZW5kKCkuZmlsdGVyKCI6dmlz aWJsZSIpLmFuaW1hdGUoaCx7c3RlcDpmdW5jdGlvbihhLGMpe2MucHJvcD09Imhl aWdodCImJihmPWMuZW5kLWMuc3RhcnQ9PT0wPzA6KGMubm93LWMuc3RhcnQpLyhj LmVuZC1jLnN0YXJ0KSksYi50b1Nob3dbMF0uc3R5bGVbYy5wcm9wXT1mKmdbYy5w cm9wXS52YWx1ZStnW2MucHJvcF0udW5pdH0sZHVyYXRpb246Yi5kdXJhdGlvbixl YXNpbmc6Yi5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXtiLmF1dG9IZWlnaHR8 fGIudG9TaG93LmNzcygiaGVpZ2h0IiwiIiksYi50b1Nob3cuY3NzKHt3aWR0aDpp LG92ZXJmbG93OmV9KSxiLmNvbXBsZXRlKCl9fSl9ZWxzZSBiLnRvSGlkZS5hbmlt YXRlKHtoZWlnaHQ6ImhpZGUiLHBhZGRpbmdUb3A6ImhpZGUiLHBhZGRpbmdCb3R0 b206ImhpZGUifSxiKTtlbHNlIGIudG9TaG93LmFuaW1hdGUoe2hlaWdodDoic2hv dyIscGFkZGluZ1RvcDoic2hvdyIscGFkZGluZ0JvdHRvbToic2hvdyJ9LGIpfSxi b3VuY2VzbGlkZTpmdW5jdGlvbihhKXt0aGlzLnNsaWRlKGEse2Vhc2luZzphLmRv d24/ImVhc2VPdXRCb3VuY2UiOiJzd2luZyIsZHVyYXRpb246YS5kb3duPzFlMzoy MDB9KX19fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS53aWRnZXQoInVpLmF1dG9j b21wbGV0ZSIse29wdGlvbnM6e2FwcGVuZFRvOiJib2R5IixkZWxheTozMDAsbWlu TGVuZ3RoOjEscG9zaXRpb246e215OiJsZWZ0IHRvcCIsYXQ6ImxlZnQgYm90dG9t Iixjb2xsaXNpb246Im5vbmUifSxzb3VyY2U6bnVsbH0sX2NyZWF0ZTpmdW5jdGlv bigpe3ZhciBiPXRoaXMsYz10aGlzLmVsZW1lbnRbMF0ub3duZXJEb2N1bWVudCxk O3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlLWlucHV0Iiku YXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIikuYXR0cih7cm9sZToidGV4dGJveCIs ImFyaWEtYXV0b2NvbXBsZXRlIjoibGlzdCIsImFyaWEtaGFzcG9wdXAiOiJ0cnVl In0pLmJpbmQoImtleWRvd24uYXV0b2NvbXBsZXRlIixmdW5jdGlvbihjKXtpZigh Yi5vcHRpb25zLmRpc2FibGVkJiYhYi5lbGVtZW50LmF0dHIoInJlYWRvbmx5Iikp e2Q9ITE7dmFyIGc9YS51aS5rZXlDb2RlO3N3aXRjaChjLmtleUNvZGUpe2Nhc2Ug Zy5QQUdFX1VQOmIuX21vdmUoInByZXZpb3VzUGFnZSIsYyk7YnJlYWs7Y2FzZSBn LlBBR0VfRE9XTjpiLl9tb3ZlKCJuZXh0UGFnZSIsYyk7YnJlYWs7Y2FzZSBnLlVQ OmIuX21vdmUoInByZXZpb3VzIixjKSxjLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7 Y2FzZSBnLkRPV046Yi5fbW92ZSgibmV4dCIsYyksYy5wcmV2ZW50RGVmYXVsdCgp O2JyZWFrO2Nhc2UgZy5FTlRFUjpjYXNlIGcuTlVNUEFEX0VOVEVSOmIubWVudS5h Y3RpdmUmJihkPSEwLGMucHJldmVudERlZmF1bHQoKSk7Y2FzZSBnLlRBQjppZigh Yi5tZW51LmFjdGl2ZSlyZXR1cm47Yi5tZW51LnNlbGVjdChjKTticmVhaztjYXNl IGcuRVNDQVBFOmIuZWxlbWVudC52YWwoYi50ZXJtKSxiLmNsb3NlKGMpO2JyZWFr O2RlZmF1bHQ6Y2xlYXJUaW1lb3V0KGIuc2VhcmNoaW5nKSxiLnNlYXJjaGluZz1z ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi50ZXJtIT1iLmVsZW1lbnQudmFsKCkmJihi LnNlbGVjdGVkSXRlbT1udWxsLGIuc2VhcmNoKG51bGwsYykpfSxiLm9wdGlvbnMu ZGVsYXkpfX19KS5iaW5kKCJrZXlwcmVzcy5hdXRvY29tcGxldGUiLGZ1bmN0aW9u KGEpe2QmJihkPSExLGEucHJldmVudERlZmF1bHQoKSl9KS5iaW5kKCJmb2N1cy5h dXRvY29tcGxldGUiLGZ1bmN0aW9uKCl7Yi5vcHRpb25zLmRpc2FibGVkfHwoYi5z ZWxlY3RlZEl0ZW09bnVsbCxiLnByZXZpb3VzPWIuZWxlbWVudC52YWwoKSl9KS5i aW5kKCJibHVyLmF1dG9jb21wbGV0ZSIsZnVuY3Rpb24oYSl7Yi5vcHRpb25zLmRp c2FibGVkfHwoY2xlYXJUaW1lb3V0KGIuc2VhcmNoaW5nKSxiLmNsb3Npbmc9c2V0 VGltZW91dChmdW5jdGlvbigpe2IuY2xvc2UoYSksYi5fY2hhbmdlKGEpfSwxNTAp KX0pLHRoaXMuX2luaXRTb3VyY2UoKSx0aGlzLnJlc3BvbnNlPWZ1bmN0aW9uKCl7 cmV0dXJuIGIuX3Jlc3BvbnNlLmFwcGx5KGIsYXJndW1lbnRzKX0sdGhpcy5tZW51 PWEoIjx1bD48L3VsPiIpLmFkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUiKS5hcHBl bmRUbyhhKHRoaXMub3B0aW9ucy5hcHBlbmRUb3x8ImJvZHkiLGMpWzBdKS5tb3Vz ZWRvd24oZnVuY3Rpb24oYyl7dmFyIGQ9Yi5tZW51LmVsZW1lbnRbMF07YShjLnRh cmdldCkuY2xvc2VzdCgiLnVpLW1lbnUtaXRlbSIpLmxlbmd0aHx8c2V0VGltZW91 dChmdW5jdGlvbigpe2EoZG9jdW1lbnQpLm9uZSgibW91c2Vkb3duIixmdW5jdGlv bihjKXtjLnRhcmdldCE9PWIuZWxlbWVudFswXSYmYy50YXJnZXQhPT1kJiYhYS51 aS5jb250YWlucyhkLGMudGFyZ2V0KSYmYi5jbG9zZSgpfSl9LDEpLHNldFRpbWVv dXQoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYi5jbG9zaW5nKX0sMTMpfSkubWVu dSh7Zm9jdXM6ZnVuY3Rpb24oYSxjKXtjPWMuaXRlbS5kYXRhKCJpdGVtLmF1dG9j b21wbGV0ZSIpLCExIT09Yi5fdHJpZ2dlcigiZm9jdXMiLGEse2l0ZW06Y30pJiYv XmtleS8udGVzdChhLm9yaWdpbmFsRXZlbnQudHlwZSkmJmIuZWxlbWVudC52YWwo Yy52YWx1ZSl9LHNlbGVjdGVkOmZ1bmN0aW9uKGEsZCl7ZD1kLml0ZW0uZGF0YSgi aXRlbS5hdXRvY29tcGxldGUiKTt2YXIgZT1iLnByZXZpb3VzO2IuZWxlbWVudFsw XSE9PWMuYWN0aXZlRWxlbWVudCYmKGIuZWxlbWVudC5mb2N1cygpLGIucHJldmlv dXM9ZSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5wcmV2aW91cz1lfSwxKSksITEh PT1iLl90cmlnZ2VyKCJzZWxlY3QiLGEse2l0ZW06ZH0pJiZiLmVsZW1lbnQudmFs KGQudmFsdWUpLGIudGVybT1iLmVsZW1lbnQudmFsKCksYi5jbG9zZShhKSxiLnNl bGVjdGVkSXRlbT1kfSxibHVyOmZ1bmN0aW9uKCl7Yi5tZW51LmVsZW1lbnQuaXMo Ijp2aXNpYmxlIikmJmIuZWxlbWVudC52YWwoKSE9PWIudGVybSYmYi5lbGVtZW50 LnZhbChiLnRlcm0pfX0pLnpJbmRleCh0aGlzLmVsZW1lbnQuekluZGV4KCkrMSku Y3NzKHt0b3A6MCxsZWZ0OjB9KS5oaWRlKCkuZGF0YSgibWVudSIpLGEuZm4uYmdp ZnJhbWUmJnRoaXMubWVudS5lbGVtZW50LmJnaWZyYW1lKCl9LGRlc3Ryb3k6ZnVu Y3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0 ZS1pbnB1dCIpLnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpLnJlbW92ZUF0dHIo InJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWF1dG9jb21wbGV0ZSIpLnJlbW92ZUF0 dHIoImFyaWEtaGFzcG9wdXAiKSx0aGlzLm1lbnUuZWxlbWVudC5yZW1vdmUoKSxh LldpZGdldC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpfSxfc2V0T3B0aW9u OmZ1bmN0aW9uKGIsYyl7YS5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBw bHkodGhpcyxhcmd1bWVudHMpLGI9PT0ic291cmNlIiYmdGhpcy5faW5pdFNvdXJj ZSgpLGI9PT0iYXBwZW5kVG8iJiZ0aGlzLm1lbnUuZWxlbWVudC5hcHBlbmRUbyhh KGN8fCJib2R5Iix0aGlzLmVsZW1lbnRbMF0ub3duZXJEb2N1bWVudClbMF0pfSxf aW5pdFNvdXJjZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYyxkO2EuaXNBcnJheSh0 aGlzLm9wdGlvbnMuc291cmNlKT8oYz10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMu c291cmNlPWZ1bmN0aW9uKGIsZCl7ZChhLnVpLmF1dG9jb21wbGV0ZS5maWx0ZXIo YyxiLnRlcm0pKX0pOnR5cGVvZiB0aGlzLm9wdGlvbnMuc291cmNlPT0ic3RyaW5n Ij8oZD10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc291cmNlPWZ1bmN0aW9uKGMs Zyl7Yi54aHImJmIueGhyLmFib3J0KCksYi54aHI9YS5nZXRKU09OKGQsYyxmdW5j dGlvbihhLGMsZCl7ZD09PWIueGhyJiZnKGEpLGIueGhyPW51bGx9KX0pOnRoaXMu c291cmNlPXRoaXMub3B0aW9ucy5zb3VyY2V9LHNlYXJjaDpmdW5jdGlvbihhLGIp e2E9YSE9bnVsbD9hOnRoaXMuZWxlbWVudC52YWwoKSx0aGlzLnRlcm09dGhpcy5l bGVtZW50LnZhbCgpO2lmKGEubGVuZ3RoPHRoaXMub3B0aW9ucy5taW5MZW5ndGgp cmV0dXJuIHRoaXMuY2xvc2UoYik7Y2xlYXJUaW1lb3V0KHRoaXMuY2xvc2luZyk7 aWYodGhpcy5fdHJpZ2dlcigic2VhcmNoIixiKSE9PSExKXJldHVybiB0aGlzLl9z ZWFyY2goYSl9LF9zZWFyY2g6ZnVuY3Rpb24oYSl7dGhpcy5lbGVtZW50LmFkZENs YXNzKCJ1aS1hdXRvY29tcGxldGUtbG9hZGluZyIpLHRoaXMuc291cmNlKHt0ZXJt OmF9LHRoaXMucmVzcG9uc2UpfSxfcmVzcG9uc2U6ZnVuY3Rpb24oYSl7YSYmYS5s ZW5ndGg/KGE9dGhpcy5fbm9ybWFsaXplKGEpLHRoaXMuX3N1Z2dlc3QoYSksdGhp cy5fdHJpZ2dlcigib3BlbiIpKTp0aGlzLmNsb3NlKCksdGhpcy5lbGVtZW50LnJl bW92ZUNsYXNzKCJ1aS1hdXRvY29tcGxldGUtbG9hZGluZyIpfSxjbG9zZTpmdW5j dGlvbihhKXtjbGVhclRpbWVvdXQodGhpcy5jbG9zaW5nKSx0aGlzLm1lbnUuZWxl bWVudC5pcygiOnZpc2libGUiKSYmKHRoaXMuX3RyaWdnZXIoImNsb3NlIixhKSx0 aGlzLm1lbnUuZWxlbWVudC5oaWRlKCksdGhpcy5tZW51LmRlYWN0aXZhdGUoKSl9 LF9jaGFuZ2U6ZnVuY3Rpb24oYSl7dGhpcy5wcmV2aW91cyE9PXRoaXMuZWxlbWVu dC52YWwoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixhLHtpdGVtOnRoaXMuc2Vs ZWN0ZWRJdGVtfSl9LF9ub3JtYWxpemU6ZnVuY3Rpb24oYil7cmV0dXJuIGIubGVu Z3RoJiZiWzBdLmxhYmVsJiZiWzBdLnZhbHVlP2I6YS5tYXAoYixmdW5jdGlvbihi KXtyZXR1cm4gdHlwZW9mIGI9PSJzdHJpbmciP3tsYWJlbDpiLHZhbHVlOmJ9OmEu ZXh0ZW5kKHtsYWJlbDpiLmxhYmVsfHxiLnZhbHVlLHZhbHVlOmIudmFsdWV8fGIu bGFiZWx9LGIpfSl9LF9zdWdnZXN0OmZ1bmN0aW9uKGIpe3RoaXMuX3JlbmRlck1l bnUodGhpcy5tZW51LmVsZW1lbnQuZW1wdHkoKS56SW5kZXgodGhpcy5lbGVtZW50 LnpJbmRleCgpKzEpLGIpLHRoaXMubWVudS5kZWFjdGl2YXRlKCksdGhpcy5tZW51 LnJlZnJlc2goKSx0aGlzLm1lbnUuZWxlbWVudC5zaG93KCkucG9zaXRpb24oYS5l eHRlbmQoe29mOnRoaXMuZWxlbWVudH0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKSks dGhpcy5fcmVzaXplTWVudSgpfSxfcmVzaXplTWVudTpmdW5jdGlvbigpe3ZhciBh PXRoaXMubWVudS5lbGVtZW50O2Eub3V0ZXJXaWR0aChNYXRoLm1heChhLndpZHRo KCIiKS5vdXRlcldpZHRoKCksdGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSkpfSxf cmVuZGVyTWVudTpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXM7YS5lYWNoKGMsZnVu Y3Rpb24oYSxjKXtkLl9yZW5kZXJJdGVtKGIsYyl9KX0sX3JlbmRlckl0ZW06ZnVu Y3Rpb24oYixjKXtyZXR1cm4gYSgiPGxpPjwvbGk+IikuZGF0YSgiaXRlbS5hdXRv Y29tcGxldGUiLGMpLmFwcGVuZChhKCI8YT48L2E+IikudGV4dChjLmxhYmVsKSku YXBwZW5kVG8oYil9LF9tb3ZlOmZ1bmN0aW9uKGEsYil7dGhpcy5tZW51LmVsZW1l bnQuaXMoIjp2aXNpYmxlIik/dGhpcy5tZW51LmZpcnN0KCkmJi9ecHJldmlvdXMv LnRlc3QoYSl8fHRoaXMubWVudS5sYXN0KCkmJi9ebmV4dC8udGVzdChhKT8odGhp cy5lbGVtZW50LnZhbCh0aGlzLnRlcm0pLHRoaXMubWVudS5kZWFjdGl2YXRlKCkp OnRoaXMubWVudVthXShiKTp0aGlzLnNlYXJjaChudWxsLGIpfSx3aWRnZXQ6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51LmVsZW1lbnR9fSksYS5leHRlbmQoYS51 aS5hdXRvY29tcGxldGUse2VzY2FwZVJlZ2V4OmZ1bmN0aW9uKGEpe3JldHVybiBh LnJlcGxhY2UoL1stW1xde30oKSorPy4sXFxeJHwjXHNdL2csIlxcJCYiKX0sZmls dGVyOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9bmV3IFJlZ0V4cChhLnVpLmF1dG9jb21w bGV0ZS5lc2NhcGVSZWdleChjKSwiaSIpO3JldHVybiBhLmdyZXAoYixmdW5jdGlv bihhKXtyZXR1cm4gZC50ZXN0KGEubGFiZWx8fGEudmFsdWV8fGEpfSl9fSl9KGpR dWVyeSksZnVuY3Rpb24oYSl7YS53aWRnZXQoInVpLm1lbnUiLHtfY3JlYXRlOmZ1 bmN0aW9uKCl7dmFyIGI9dGhpczt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLW1l bnUgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5h dHRyKHtyb2xlOiJsaXN0Ym94IiwiYXJpYS1hY3RpdmVkZXNjZW5kYW50IjoidWkt YWN0aXZlLW1lbnVpdGVtIn0pLmNsaWNrKGZ1bmN0aW9uKGMpe2EoYy50YXJnZXQp LmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0gYSIpLmxlbmd0aCYmKGMucHJldmVudERl ZmF1bHQoKSxiLnNlbGVjdChjKSl9KSx0aGlzLnJlZnJlc2goKX0scmVmcmVzaDpm dW5jdGlvbigpe3ZhciBiPXRoaXM7dGhpcy5lbGVtZW50LmNoaWxkcmVuKCJsaTpu b3QoLnVpLW1lbnUtaXRlbSk6aGFzKGEpIikuYWRkQ2xhc3MoInVpLW1lbnUtaXRl bSIpLmF0dHIoInJvbGUiLCJtZW51aXRlbSIpLmNoaWxkcmVuKCJhIikuYWRkQ2xh c3MoInVpLWNvcm5lci1hbGwiKS5hdHRyKCJ0YWJpbmRleCIsLTEpLm1vdXNlZW50 ZXIoZnVuY3Rpb24oYyl7Yi5hY3RpdmF0ZShjLGEodGhpcykucGFyZW50KCkpfSku bW91c2VsZWF2ZShmdW5jdGlvbigpe2IuZGVhY3RpdmF0ZSgpfSl9LGFjdGl2YXRl OmZ1bmN0aW9uKGEsYil7dGhpcy5kZWFjdGl2YXRlKCk7aWYodGhpcy5oYXNTY3Jv bGwoKSl7dmFyIGM9Yi5vZmZzZXQoKS50b3AtdGhpcy5lbGVtZW50Lm9mZnNldCgp LnRvcCxkPXRoaXMuZWxlbWVudC5hdHRyKCJzY3JvbGxUb3AiKSxlPXRoaXMuZWxl bWVudC5oZWlnaHQoKTtjPDA/dGhpcy5lbGVtZW50LmF0dHIoInNjcm9sbFRvcCIs ZCtjKTpjPj1lJiZ0aGlzLmVsZW1lbnQuYXR0cigic2Nyb2xsVG9wIixkK2MtZSti LmhlaWdodCgpKX10aGlzLmFjdGl2ZT1iLmVxKDApLmNoaWxkcmVuKCJhIikuYWRk Q2xhc3MoInVpLXN0YXRlLWhvdmVyIikuYXR0cigiaWQiLCJ1aS1hY3RpdmUtbWVu dWl0ZW0iKS5lbmQoKSx0aGlzLl90cmlnZ2VyKCJmb2N1cyIsYSx7aXRlbTpifSl9 LGRlYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZSYmKHRoaXMuYWN0aXZl LmNoaWxkcmVuKCJhIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIikucmVt b3ZlQXR0cigiaWQiKSx0aGlzLl90cmlnZ2VyKCJibHVyIiksdGhpcy5hY3RpdmU9 bnVsbCl9LG5leHQ6ZnVuY3Rpb24oYSl7dGhpcy5tb3ZlKCJuZXh0IiwiLnVpLW1l bnUtaXRlbTpmaXJzdCIsYSl9LHByZXZpb3VzOmZ1bmN0aW9uKGEpe3RoaXMubW92 ZSgicHJldiIsIi51aS1tZW51LWl0ZW06bGFzdCIsYSl9LGZpcnN0OmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUucHJldkFsbCgiLnVp LW1lbnUtaXRlbSIpLmxlbmd0aH0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlz LmFjdGl2ZSYmIXRoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKS5s ZW5ndGh9LG1vdmU6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYWN0aXZlPyhhPXRoaXMu YWN0aXZlW2ErIkFsbCJdKCIudWktbWVudS1pdGVtIikuZXEoMCksYS5sZW5ndGg/ dGhpcy5hY3RpdmF0ZShjLGEpOnRoaXMuYWN0aXZhdGUoYyx0aGlzLmVsZW1lbnQu Y2hpbGRyZW4oYikpKTp0aGlzLmFjdGl2YXRlKGMsdGhpcy5lbGVtZW50LmNoaWxk cmVuKGIpKX0sbmV4dFBhZ2U6ZnVuY3Rpb24oYil7aWYodGhpcy5oYXNTY3JvbGwo KSlpZighdGhpcy5hY3RpdmV8fHRoaXMubGFzdCgpKXRoaXMuYWN0aXZhdGUoYix0 aGlzLmVsZW1lbnQuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW06Zmlyc3QiKSk7ZWxz ZXt2YXIgYz10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3AsZD10aGlzLmVsZW1lbnQu aGVpZ2h0KCksZj10aGlzLmVsZW1lbnQuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0i KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLm9mZnNldCgpLnRvcC1j LWQrYSh0aGlzKS5oZWlnaHQoKTtyZXR1cm4gYjwxMCYmYj4tMTB9KTtmLmxlbmd0 aHx8KGY9dGhpcy5lbGVtZW50LmNoaWxkcmVuKCIudWktbWVudS1pdGVtOmxhc3Qi KSksdGhpcy5hY3RpdmF0ZShiLGYpfWVsc2UgdGhpcy5hY3RpdmF0ZShiLHRoaXMu ZWxlbWVudC5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbSIpLmZpbHRlcighdGhpcy5h Y3RpdmV8fHRoaXMubGFzdCgpPyI6Zmlyc3QiOiI6bGFzdCIpKX0scHJldmlvdXNQ YWdlOmZ1bmN0aW9uKGIpe2lmKHRoaXMuaGFzU2Nyb2xsKCkpaWYoIXRoaXMuYWN0 aXZlfHx0aGlzLmZpcnN0KCkpdGhpcy5hY3RpdmF0ZShiLHRoaXMuZWxlbWVudC5j aGlsZHJlbigiLnVpLW1lbnUtaXRlbTpsYXN0IikpO2Vsc2V7dmFyIGM9dGhpcy5h Y3RpdmUub2Zmc2V0KCkudG9wLGQ9dGhpcy5lbGVtZW50LmhlaWdodCgpO3Jlc3Vs dD10aGlzLmVsZW1lbnQuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0iKS5maWx0ZXIo ZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLm9mZnNldCgpLnRvcC1jK2QtYSh0aGlz KS5oZWlnaHQoKTtyZXR1cm4gYjwxMCYmYj4tMTB9KSxyZXN1bHQubGVuZ3RofHwo cmVzdWx0PXRoaXMuZWxlbWVudC5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbTpmaXJz dCIpKSx0aGlzLmFjdGl2YXRlKGIscmVzdWx0KX1lbHNlIHRoaXMuYWN0aXZhdGUo Yix0aGlzLmVsZW1lbnQuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0iKS5maWx0ZXIo IXRoaXMuYWN0aXZlfHx0aGlzLmZpcnN0KCk/IjpsYXN0IjoiOmZpcnN0IikpfSxo YXNTY3JvbGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50LmhlaWdodCgp PHRoaXMuZWxlbWVudC5hdHRyKCJzY3JvbGxIZWlnaHQiKX0sc2VsZWN0OmZ1bmN0 aW9uKGEpe3RoaXMuX3RyaWdnZXIoInNlbGVjdGVkIixhLHtpdGVtOnRoaXMuYWN0 aXZlfSl9fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7dmFyIGIsYz1mdW5jdGlvbihi KXthKCI6dWktYnV0dG9uIixiLnRhcmdldC5mb3JtKS5lYWNoKGZ1bmN0aW9uKCl7 dmFyIGI9YSh0aGlzKS5kYXRhKCJidXR0b24iKTtzZXRUaW1lb3V0KGZ1bmN0aW9u KCl7Yi5yZWZyZXNoKCl9LDEpfSl9LGQ9ZnVuY3Rpb24oYil7dmFyIGM9Yi5uYW1l LGQ9Yi5mb3JtLGU9YShbXSk7cmV0dXJuIGMmJihlPWQ/YShkKS5maW5kKCJbbmFt ZT0nIitjKyInXSIpOmEoIltuYW1lPSciK2MrIiddIixiLm93bmVyRG9jdW1lbnQp LmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0aGlzLmZvcm19KSksZX07YS53aWRn ZXQoInVpLmJ1dHRvbiIse29wdGlvbnM6e2Rpc2FibGVkOm51bGwsdGV4dDohMCxs YWJlbDpudWxsLGljb25zOntwcmltYXJ5Om51bGwsc2Vjb25kYXJ5Om51bGx9fSxf Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmNsb3Nlc3QoImZvcm0iKS51 bmJpbmQoInJlc2V0LmJ1dHRvbiIpLmJpbmQoInJlc2V0LmJ1dHRvbiIsYyksdHlw ZW9mIHRoaXMub3B0aW9ucy5kaXNhYmxlZCE9ImJvb2xlYW4iJiYodGhpcy5vcHRp b25zLmRpc2FibGVkPXRoaXMuZWxlbWVudC5hdHRyKCJkaXNhYmxlZCIpKSx0aGlz Ll9kZXRlcm1pbmVCdXR0b25UeXBlKCksdGhpcy5oYXNUaXRsZT0hIXRoaXMuYnV0 dG9uRWxlbWVudC5hdHRyKCJ0aXRsZSIpO3ZhciBlPXRoaXMsZj10aGlzLm9wdGlv bnMsaj10aGlzLnR5cGU9PT0iY2hlY2tib3gifHx0aGlzLnR5cGU9PT0icmFkaW8i LGs9InVpLXN0YXRlLWhvdmVyIisoaj8iIjoiIHVpLXN0YXRlLWFjdGl2ZSIKKTtm LmxhYmVsPT09bnVsbCYmKGYubGFiZWw9dGhpcy5idXR0b25FbGVtZW50Lmh0bWwo KSksdGhpcy5lbGVtZW50LmlzKCI6ZGlzYWJsZWQiKSYmKGYuZGlzYWJsZWQ9ITAp LHRoaXMuYnV0dG9uRWxlbWVudC5hZGRDbGFzcygidWktYnV0dG9uIHVpLXdpZGdl dCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKS5hdHRyKCJyb2xlIiwi YnV0dG9uIikuYmluZCgibW91c2VlbnRlci5idXR0b24iLGZ1bmN0aW9uKCl7Zi5k aXNhYmxlZHx8KGEodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVyIiksdGhp cz09PWImJmEodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpKX0pLmJp bmQoIm1vdXNlbGVhdmUuYnV0dG9uIixmdW5jdGlvbigpe2YuZGlzYWJsZWR8fGEo dGhpcykucmVtb3ZlQ2xhc3Moayl9KS5iaW5kKCJmb2N1cy5idXR0b24iLGZ1bmN0 aW9uKCl7YSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pLmJpbmQo ImJsdXIuYnV0dG9uIixmdW5jdGlvbigpe2EodGhpcykucmVtb3ZlQ2xhc3MoInVp LXN0YXRlLWZvY3VzIil9KSxqJiZ0aGlzLmVsZW1lbnQuYmluZCgiY2hhbmdlLmJ1 dHRvbiIsZnVuY3Rpb24oKXtlLnJlZnJlc2goKX0pLHRoaXMudHlwZT09PSJjaGVj a2JveCI/dGhpcy5idXR0b25FbGVtZW50LmJpbmQoImNsaWNrLmJ1dHRvbiIsZnVu Y3Rpb24oKXtpZihmLmRpc2FibGVkKXJldHVybiExO2EodGhpcykudG9nZ2xlQ2xh c3MoInVpLXN0YXRlLWFjdGl2ZSIpLGUuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlh LXByZXNzZWQiLGUuZWxlbWVudFswXS5jaGVja2VkKX0pOnRoaXMudHlwZT09PSJy YWRpbyI/dGhpcy5idXR0b25FbGVtZW50LmJpbmQoImNsaWNrLmJ1dHRvbiIsZnVu Y3Rpb24oKXtpZihmLmRpc2FibGVkKXJldHVybiExO2EodGhpcykuYWRkQ2xhc3Mo InVpLXN0YXRlLWFjdGl2ZSIpLGUuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXBy ZXNzZWQiLCEwKTt2YXIgYj1lLmVsZW1lbnRbMF07ZChiKS5ub3QoYikubWFwKGZ1 bmN0aW9uKCl7cmV0dXJuIGEodGhpcykuYnV0dG9uKCJ3aWRnZXQiKVswXX0pLnJl bW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQi LCExKX0pOih0aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgibW91c2Vkb3duLmJ1dHRv biIsZnVuY3Rpb24oKXtpZihmLmRpc2FibGVkKXJldHVybiExO2EodGhpcykuYWRk Q2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLGI9dGhpcyxhKGRvY3VtZW50KS5vbmUo Im1vdXNldXAiLGZ1bmN0aW9uKCl7Yj1udWxsfSl9KS5iaW5kKCJtb3VzZXVwLmJ1 dHRvbiIsZnVuY3Rpb24oKXtpZihmLmRpc2FibGVkKXJldHVybiExO2EodGhpcyku cmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSkuYmluZCgia2V5ZG93bi5i dXR0b24iLGZ1bmN0aW9uKGIpe2lmKGYuZGlzYWJsZWQpcmV0dXJuITE7KGIua2V5 Q29kZT09YS51aS5rZXlDb2RlLlNQQUNFfHxiLmtleUNvZGU9PWEudWkua2V5Q29k ZS5FTlRFUikmJmEodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSku YmluZCgia2V5dXAuYnV0dG9uIixmdW5jdGlvbigpe2EodGhpcykucmVtb3ZlQ2xh c3MoInVpLXN0YXRlLWFjdGl2ZSIpfSksdGhpcy5idXR0b25FbGVtZW50LmlzKCJh IikmJnRoaXMuYnV0dG9uRWxlbWVudC5rZXl1cChmdW5jdGlvbihiKXtiLmtleUNv ZGU9PT1hLnVpLmtleUNvZGUuU1BBQ0UmJmEodGhpcykuY2xpY2soKX0pKSx0aGlz Ll9zZXRPcHRpb24oImRpc2FibGVkIixmLmRpc2FibGVkKX0sX2RldGVybWluZUJ1 dHRvblR5cGU6ZnVuY3Rpb24oKXt0aGlzLnR5cGU9dGhpcy5lbGVtZW50LmlzKCI6 Y2hlY2tib3giKT8iY2hlY2tib3giOnRoaXMuZWxlbWVudC5pcygiOnJhZGlvIik/ InJhZGlvIjp0aGlzLmVsZW1lbnQuaXMoImlucHV0Iik/ImlucHV0IjoiYnV0dG9u IjtpZih0aGlzLnR5cGU9PT0iY2hlY2tib3gifHx0aGlzLnR5cGU9PT0icmFkaW8i KXt0aGlzLmJ1dHRvbkVsZW1lbnQ9dGhpcy5lbGVtZW50LnBhcmVudHMoKS5sYXN0 KCkuZmluZCgibGFiZWxbZm9yPSIrdGhpcy5lbGVtZW50LmF0dHIoImlkIikrIl0i KSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNz aWJsZSIpO3ZhciBhPXRoaXMuZWxlbWVudC5pcygiOmNoZWNrZWQiKTthJiZ0aGlz LmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMu YnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLGEpfWVsc2UgdGhpcy5i dXR0b25FbGVtZW50PXRoaXMuZWxlbWVudH0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuYnV0dG9uRWxlbWVudH0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMu ZWxlbWVudC5yZW1vdmVDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxl IiksdGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1idXR0b24gdWkt d2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCB1aS1zdGF0ZS1o b3ZlciB1aS1zdGF0ZS1hY3RpdmUgIHVpLWJ1dHRvbi1pY29ucy1vbmx5IHVpLWJ1 dHRvbi1pY29uLW9ubHkgdWktYnV0dG9uLXRleHQtaWNvbnMgdWktYnV0dG9uLXRl eHQtaWNvbi1wcmltYXJ5IHVpLWJ1dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IHVp LWJ1dHRvbi10ZXh0LW9ubHkiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0 cigiYXJpYS1wcmVzc2VkIikuaHRtbCh0aGlzLmJ1dHRvbkVsZW1lbnQuZmluZCgi LnVpLWJ1dHRvbi10ZXh0IikuaHRtbCgpKSx0aGlzLmhhc1RpdGxlfHx0aGlzLmJ1 dHRvbkVsZW1lbnQucmVtb3ZlQXR0cigidGl0bGUiKSxhLldpZGdldC5wcm90b3R5 cGUuZGVzdHJveS5jYWxsKHRoaXMpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGIsYyl7 YS5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcyxhcmd1bWVu dHMpLGI9PT0iZGlzYWJsZWQiJiYoYz90aGlzLmVsZW1lbnQuYXR0cigiZGlzYWJs ZWQiLCEwKTp0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiZGlzYWJsZWQiKSksdGhp cy5fcmVzZXRCdXR0b24oKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBiPXRoaXMu ZWxlbWVudC5pcygiOmRpc2FibGVkIik7YiE9PXRoaXMub3B0aW9ucy5kaXNhYmxl ZCYmdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsYiksdGhpcy50eXBlPT09InJh ZGlvIj9kKHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe2EodGhpcyku aXMoIjpjaGVja2VkIik/YSh0aGlzKS5idXR0b24oIndpZGdldCIpLmFkZENsYXNz KCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCEwKTphKHRo aXMpLmJ1dHRvbigid2lkZ2V0IikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2 ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsITEpfSk6dGhpcy50eXBlPT09ImNoZWNr Ym94IiYmKHRoaXMuZWxlbWVudC5pcygiOmNoZWNrZWQiKT90aGlzLmJ1dHRvbkVs ZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJl c3NlZCIsITApOnRoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcygidWktc3Rh dGUtYWN0aXZlIikuYXR0cigiYXJpYS1wcmVzc2VkIiwhMSkpfSxfcmVzZXRCdXR0 b246ZnVuY3Rpb24oKXtpZih0aGlzLnR5cGU9PT0iaW5wdXQiKXRoaXMub3B0aW9u cy5sYWJlbCYmdGhpcy5lbGVtZW50LnZhbCh0aGlzLm9wdGlvbnMubGFiZWwpO2Vs c2V7dmFyIGI9dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1idXR0 b24taWNvbnMtb25seSB1aS1idXR0b24taWNvbi1vbmx5IHVpLWJ1dHRvbi10ZXh0 LWljb25zIHVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSB1aS1idXR0b24tdGV4 dC1pY29uLXNlY29uZGFyeSB1aS1idXR0b24tdGV4dC1vbmx5IiksYz1hKCI8c3Bh bj48L3NwYW4+IikuYWRkQ2xhc3MoInVpLWJ1dHRvbi10ZXh0IikuaHRtbCh0aGlz Lm9wdGlvbnMubGFiZWwpLmFwcGVuZFRvKGIuZW1wdHkoKSkudGV4dCgpLGQ9dGhp cy5vcHRpb25zLmljb25zLGU9ZC5wcmltYXJ5JiZkLnNlY29uZGFyeTtkLnByaW1h cnl8fGQuc2Vjb25kYXJ5PyhiLmFkZENsYXNzKCJ1aS1idXR0b24tdGV4dC1pY29u IisoZT8icyI6ZC5wcmltYXJ5PyItcHJpbWFyeSI6Ii1zZWNvbmRhcnkiKSksZC5w cmltYXJ5JiZiLnByZXBlbmQoIjxzcGFuIGNsYXNzPSd1aS1idXR0b24taWNvbi1w cmltYXJ5IHVpLWljb24gIitkLnByaW1hcnkrIic+PC9zcGFuPiIpLGQuc2Vjb25k YXJ5JiZiLmFwcGVuZCgiPHNwYW4gY2xhc3M9J3VpLWJ1dHRvbi1pY29uLXNlY29u ZGFyeSB1aS1pY29uICIrZC5zZWNvbmRhcnkrIic+PC9zcGFuPiIpLHRoaXMub3B0 aW9ucy50ZXh0fHwoYi5hZGRDbGFzcyhlPyJ1aS1idXR0b24taWNvbnMtb25seSI6 InVpLWJ1dHRvbi1pY29uLW9ubHkiKS5yZW1vdmVDbGFzcygidWktYnV0dG9uLXRl eHQtaWNvbnMgdWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5IHVpLWJ1dHRvbi10 ZXh0LWljb24tc2Vjb25kYXJ5IiksdGhpcy5oYXNUaXRsZXx8Yi5hdHRyKCJ0aXRs ZSIsYykpKTpiLmFkZENsYXNzKCJ1aS1idXR0b24tdGV4dC1vbmx5Iil9fX0pLGEu d2lkZ2V0KCJ1aS5idXR0b25zZXQiLHtfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5l bGVtZW50LmFkZENsYXNzKCJ1aS1idXR0b25zZXQiKX0sX2luaXQ6ZnVuY3Rpb24o KXt0aGlzLnJlZnJlc2goKX0sX3NldE9wdGlvbjpmdW5jdGlvbihiLGMpe2I9PT0i ZGlzYWJsZWQiJiZ0aGlzLmJ1dHRvbnMuYnV0dG9uKCJvcHRpb24iLGIsYyksYS5X aWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcyxhcmd1bWVudHMp fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25zPXRoaXMuZWxlbWVudC5m aW5kKCI6YnV0dG9uLCA6c3VibWl0LCA6cmVzZXQsIDpjaGVja2JveCwgOnJhZGlv LCBhLCA6ZGF0YShidXR0b24pIikuZmlsdGVyKCI6dWktYnV0dG9uIikuYnV0dG9u KCJyZWZyZXNoIikuZW5kKCkubm90KCI6dWktYnV0dG9uIikuYnV0dG9uKCkuZW5k KCkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcykuYnV0dG9uKCJ3aWRnZXQi KVswXX0pLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItYWxsIHVpLWNvcm5lci1sZWZ0 IHVpLWNvcm5lci1yaWdodCIpLmZpbHRlcigiOnZpc2libGUiKS5maWx0ZXIoIjpm aXJzdCIpLmFkZENsYXNzKCJ1aS1jb3JuZXItbGVmdCIpLmVuZCgpLmZpbHRlcigi Omxhc3QiKS5hZGRDbGFzcygidWktY29ybmVyLXJpZ2h0IikuZW5kKCkuZW5kKCku ZW5kKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xh c3MoInVpLWJ1dHRvbnNldCIpLHRoaXMuYnV0dG9ucy5tYXAoZnVuY3Rpb24oKXty ZXR1cm4gYSh0aGlzKS5idXR0b24oIndpZGdldCIpWzBdfSkucmVtb3ZlQ2xhc3Mo InVpLWNvcm5lci1sZWZ0IHVpLWNvcm5lci1yaWdodCIpLmVuZCgpLmJ1dHRvbigi ZGVzdHJveSIpLGEuV2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyl9 fSl9KGpRdWVyeSksZnVuY3Rpb24oYSxiKXt2YXIgYz17YnV0dG9uczohMCxoZWln aHQ6ITAsbWF4SGVpZ2h0OiEwLG1heFdpZHRoOiEwLG1pbkhlaWdodDohMCxtaW5X aWR0aDohMCx3aWR0aDohMH0sZD17bWF4SGVpZ2h0OiEwLG1heFdpZHRoOiEwLG1p bkhlaWdodDohMCxtaW5XaWR0aDohMH07YS53aWRnZXQoInVpLmRpYWxvZyIse29w dGlvbnM6e2F1dG9PcGVuOiEwLGJ1dHRvbnM6e30sY2xvc2VPbkVzY2FwZTohMCxj bG9zZVRleHQ6ImNsb3NlIixkaWFsb2dDbGFzczoiIixkcmFnZ2FibGU6ITAsaGlk ZTpudWxsLGhlaWdodDoiYXV0byIsbWF4SGVpZ2h0OiExLG1heFdpZHRoOiExLG1p bkhlaWdodDoxNTAsbWluV2lkdGg6MTUwLG1vZGFsOiExLHBvc2l0aW9uOntteToi Y2VudGVyIixhdDoiY2VudGVyIixvZjp3aW5kb3csY29sbGlzaW9uOiJmaXQiLHVz aW5nOmZ1bmN0aW9uKGIpe3ZhciBjPWEodGhpcykuY3NzKGIpLm9mZnNldCgpLnRv cDtjPDAmJmEodGhpcykuY3NzKCJ0b3AiLGIudG9wLWMpfX0scmVzaXphYmxlOiEw LHNob3c6bnVsbCxzdGFjazohMCx0aXRsZToiIix3aWR0aDozMDAsekluZGV4OjFl M30sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMub3JpZ2luYWxUaXRsZT10aGlzLmVs ZW1lbnQuYXR0cigidGl0bGUiKSx0eXBlb2YgdGhpcy5vcmlnaW5hbFRpdGxlIT0i c3RyaW5nIiYmKHRoaXMub3JpZ2luYWxUaXRsZT0iIiksdGhpcy5vcHRpb25zLnRp dGxlPXRoaXMub3B0aW9ucy50aXRsZXx8dGhpcy5vcmlnaW5hbFRpdGxlO3ZhciBi PXRoaXMsYz1iLm9wdGlvbnMsZD1jLnRpdGxlfHwiJiMxNjA7IixlPWEudWkuZGlh bG9nLmdldFRpdGxlSWQoYi5lbGVtZW50KSxmPShiLnVpRGlhbG9nPWEoIjxkaXY+ PC9kaXY+IikpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLmhpZGUoKS5hZGRDbGFz cygidWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3Ju ZXItYWxsICIrYy5kaWFsb2dDbGFzcykuY3NzKHt6SW5kZXg6Yy56SW5kZXh9KS5h dHRyKCJ0YWJJbmRleCIsLTEpLmNzcygib3V0bGluZSIsMCkua2V5ZG93bihmdW5j dGlvbihkKXtjLmNsb3NlT25Fc2NhcGUmJmQua2V5Q29kZSYmZC5rZXlDb2RlPT09 YS51aS5rZXlDb2RlLkVTQ0FQRSYmKGIuY2xvc2UoZCksZC5wcmV2ZW50RGVmYXVs dCgpKX0pLmF0dHIoe3JvbGU6ImRpYWxvZyIsImFyaWEtbGFiZWxsZWRieSI6ZX0p Lm1vdXNlZG93bihmdW5jdGlvbihhKXtiLm1vdmVUb1RvcCghMSxhKX0pO2IuZWxl bWVudC5zaG93KCkucmVtb3ZlQXR0cigidGl0bGUiKS5hZGRDbGFzcygidWktZGlh bG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiKS5hcHBlbmRUbyhmKTt2YXIg Zz0oYi51aURpYWxvZ1RpdGxlYmFyPWEoIjxkaXY+PC9kaXY+IikpLmFkZENsYXNz KCJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXIt YWxsIHVpLWhlbHBlci1jbGVhcmZpeCIpLnByZXBlbmRUbyhmKSxoPWEoJzxhIGhy ZWY9IiMiPjwvYT4nKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlYmFyLWNsb3Nl IHVpLWNvcm5lci1hbGwiKS5hdHRyKCJyb2xlIiwiYnV0dG9uIikuaG92ZXIoZnVu Y3Rpb24oKXtoLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxmdW5jdGlvbigp e2gucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5mb2N1cyhmdW5jdGlv bigpe2guYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9KS5ibHVyKGZ1bmN0aW9u KCl7aC5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pLmNsaWNrKGZ1bmN0 aW9uKGEpe3JldHVybiBiLmNsb3NlKGEpLCExfSkuYXBwZW5kVG8oZyk7KGIudWlE aWFsb2dUaXRsZWJhckNsb3NlVGV4dD1hKCI8c3Bhbj48L3NwYW4+IikpLmFkZENs YXNzKCJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayIpLnRleHQoYy5jbG9zZVRl eHQpLmFwcGVuZFRvKGgpLGEoIjxzcGFuPjwvc3Bhbj4iKS5hZGRDbGFzcygidWkt ZGlhbG9nLXRpdGxlIikuYXR0cigiaWQiLGUpLmh0bWwoZCkucHJlcGVuZFRvKGcp LGEuaXNGdW5jdGlvbihjLmJlZm9yZWNsb3NlKSYmIWEuaXNGdW5jdGlvbihjLmJl Zm9yZUNsb3NlKSYmKGMuYmVmb3JlQ2xvc2U9Yy5iZWZvcmVjbG9zZSksZy5maW5k KCIqIikuYWRkKGcpLmRpc2FibGVTZWxlY3Rpb24oKSxjLmRyYWdnYWJsZSYmYS5m bi5kcmFnZ2FibGUmJmIuX21ha2VEcmFnZ2FibGUoKSxjLnJlc2l6YWJsZSYmYS5m bi5yZXNpemFibGUmJmIuX21ha2VSZXNpemFibGUoKSxiLl9jcmVhdGVCdXR0b25z KGMuYnV0dG9ucyksYi5faXNPcGVuPSExLGEuZm4uYmdpZnJhbWUmJmYuYmdpZnJh bWUoKX0sX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXV0b09wZW4mJnRo aXMub3BlbigpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztyZXR1cm4g YS5vdmVybGF5JiZhLm92ZXJsYXkuZGVzdHJveSgpLGEudWlEaWFsb2cuaGlkZSgp LGEuZWxlbWVudC51bmJpbmQoIi5kaWFsb2ciKS5yZW1vdmVEYXRhKCJkaWFsb2ci KS5yZW1vdmVDbGFzcygidWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRl bnQiKS5oaWRlKCkuYXBwZW5kVG8oImJvZHkiKSxhLnVpRGlhbG9nLnJlbW92ZSgp LGEub3JpZ2luYWxUaXRsZSYmYS5lbGVtZW50LmF0dHIoInRpdGxlIixhLm9yaWdp bmFsVGl0bGUpLGF9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVpRGlh bG9nfSxjbG9zZTpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ7aWYoITEhPT1jLl90 cmlnZ2VyKCJiZWZvcmVDbG9zZSIsYikpcmV0dXJuIGMub3ZlcmxheSYmYy5vdmVy bGF5LmRlc3Ryb3koKSxjLnVpRGlhbG9nLnVuYmluZCgia2V5cHJlc3MudWktZGlh bG9nIiksYy5faXNPcGVuPSExLGMub3B0aW9ucy5oaWRlP2MudWlEaWFsb2cuaGlk ZShjLm9wdGlvbnMuaGlkZSxmdW5jdGlvbigpe2MuX3RyaWdnZXIoImNsb3NlIixi KX0pOihjLnVpRGlhbG9nLmhpZGUoKSxjLl90cmlnZ2VyKCJjbG9zZSIsYikpLGEu dWkuZGlhbG9nLm92ZXJsYXkucmVzaXplKCksYy5vcHRpb25zLm1vZGFsJiYoZD0w LGEoIi51aS1kaWFsb2ciKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcyE9PWMudWlEaWFs b2dbMF0mJihkPU1hdGgubWF4KGQsYSh0aGlzKS5jc3MoInotaW5kZXgiKSkpfSks YS51aS5kaWFsb2cubWF4Wj1kKSxjfSxpc09wZW46ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5faXNPcGVufSxtb3ZlVG9Ub3A6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlz LGU9ZC5vcHRpb25zO3JldHVybiBlLm1vZGFsJiYhYnx8IWUuc3RhY2smJiFlLm1v ZGFsP2QuX3RyaWdnZXIoImZvY3VzIixjKTooZS56SW5kZXg+YS51aS5kaWFsb2cu bWF4WiYmKGEudWkuZGlhbG9nLm1heFo9ZS56SW5kZXgpLGQub3ZlcmxheSYmKGEu dWkuZGlhbG9nLm1heForPTEsZC5vdmVybGF5LiRlbC5jc3MoInotaW5kZXgiLGEu dWkuZGlhbG9nLm92ZXJsYXkubWF4Wj1hLnVpLmRpYWxvZy5tYXhaKSksYj17c2Ny b2xsVG9wOmQuZWxlbWVudC5hdHRyKCJzY3JvbGxUb3AiKSxzY3JvbGxMZWZ0OmQu ZWxlbWVudC5hdHRyKCJzY3JvbGxMZWZ0Iil9LGEudWkuZGlhbG9nLm1heForPTEs ZC51aURpYWxvZy5jc3MoInotaW5kZXgiLGEudWkuZGlhbG9nLm1heFopLGQuZWxl bWVudC5hdHRyKGIpLGQuX3RyaWdnZXIoImZvY3VzIixjKSxkKX0sb3BlbjpmdW5j dGlvbigpe2lmKCF0aGlzLl9pc09wZW4pe3ZhciBiPXRoaXMsYz1iLm9wdGlvbnMs ZD1iLnVpRGlhbG9nO3JldHVybiBiLm92ZXJsYXk9Yy5tb2RhbD9uZXcgYS51aS5k aWFsb2cub3ZlcmxheShiKTpudWxsLGIuX3NpemUoKSxiLl9wb3NpdGlvbihjLnBv c2l0aW9uKSxkLnNob3coYy5zaG93KSxiLm1vdmVUb1RvcCghMCksYy5tb2RhbCYm ZC5iaW5kKCJrZXlwcmVzcy51aS1kaWFsb2ciLGZ1bmN0aW9uKGIpe2lmKGIua2V5 Q29kZT09PWEudWkua2V5Q29kZS5UQUIpe3ZhciBjPWEoIjp0YWJiYWJsZSIsdGhp cyksZD1jLmZpbHRlcigiOmZpcnN0Iik7Yz1jLmZpbHRlcigiOmxhc3QiKTtpZihi LnRhcmdldD09PWNbMF0mJiFiLnNoaWZ0S2V5KXJldHVybiBkLmZvY3VzKDEpLCEx O2lmKGIudGFyZ2V0PT09ZFswXSYmYi5zaGlmdEtleSlyZXR1cm4gYy5mb2N1cygx KSwhMX19KSxhKGIuZWxlbWVudC5maW5kKCI6dGFiYmFibGUiKS5nZXQoKS5jb25j YXQoZC5maW5kKCIudWktZGlhbG9nLWJ1dHRvbnBhbmUgOnRhYmJhYmxlIikuZ2V0 KCkuY29uY2F0KGQuZ2V0KCkpKSkuZXEoMCkuZm9jdXMoKSxiLl9pc09wZW49ITAs Yi5fdHJpZ2dlcigib3BlbiIpLGJ9fSxfY3JlYXRlQnV0dG9uczpmdW5jdGlvbihi KXt2YXIgYz10aGlzLGQ9ITEsZT1hKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJ1 aS1kaWFsb2ctYnV0dG9ucGFuZSB1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXIt Y2xlYXJmaXgiKSxmPWEoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWRpYWxv Zy1idXR0b25zZXQiKS5hcHBlbmRUbyhlKTtjLnVpRGlhbG9nLmZpbmQoIi51aS1k aWFsb2ctYnV0dG9ucGFuZSIpLnJlbW92ZSgpLHR5cGVvZiBiPT0ib2JqZWN0IiYm YiE9PW51bGwmJmEuZWFjaChiLGZ1bmN0aW9uKCl7cmV0dXJuIShkPSEwKX0pLGQm JihhLmVhY2goYixmdW5jdGlvbihiLGQpe2Q9YS5pc0Z1bmN0aW9uKGQpP3tjbGlj azpkLHRleHQ6Yn06ZCxiPWEoJzxidXR0b24gdHlwZT0iYnV0dG9uIj48L2J1dHRv bj4nKS5hdHRyKGQsITApLnVuYmluZCgiY2xpY2siKS5jbGljayhmdW5jdGlvbigp e2QuY2xpY2suYXBwbHkoYy5lbGVtZW50WzBdLGFyZ3VtZW50cyl9KS5hcHBlbmRU byhmKSxhLmZuLmJ1dHRvbiYmYi5idXR0b24oKX0pLGUuYXBwZW5kVG8oYy51aURp YWxvZykpfSxfbWFrZURyYWdnYWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYSl7 cmV0dXJue3Bvc2l0aW9uOmEucG9zaXRpb24sb2Zmc2V0OmEub2Zmc2V0fX12YXIg Yz10aGlzLGQ9Yy5vcHRpb25zLGU9YShkb2N1bWVudCksZjtjLnVpRGlhbG9nLmRy YWdnYWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQsIC51aS1kaWFsb2ct dGl0bGViYXItY2xvc2UiLGhhbmRsZToiLnVpLWRpYWxvZy10aXRsZWJhciIsY29u dGFpbm1lbnQ6ImRvY3VtZW50IixzdGFydDpmdW5jdGlvbihlLGgpe2Y9ZC5oZWln aHQ9PT0iYXV0byI/ImF1dG8iOmEodGhpcykuaGVpZ2h0KCksYSh0aGlzKS5oZWln aHQoYSh0aGlzKS5oZWlnaHQoKSkuYWRkQ2xhc3MoInVpLWRpYWxvZy1kcmFnZ2lu ZyIpLGMuX3RyaWdnZXIoImRyYWdTdGFydCIsZSxiKGgpKX0sZHJhZzpmdW5jdGlv bihhLGQpe2MuX3RyaWdnZXIoImRyYWciLGEsYihkKSl9LHN0b3A6ZnVuY3Rpb24o aCxpKXtkLnBvc2l0aW9uPVtpLnBvc2l0aW9uLmxlZnQtZS5zY3JvbGxMZWZ0KCks aS5wb3NpdGlvbi50b3AtZS5zY3JvbGxUb3AoKV0sYSh0aGlzKS5yZW1vdmVDbGFz cygidWktZGlhbG9nLWRyYWdnaW5nIikuaGVpZ2h0KGYpLGMuX3RyaWdnZXIoImRy YWdTdG9wIixoLGIoaSkpLGEudWkuZGlhbG9nLm92ZXJsYXkucmVzaXplKCl9fSl9 LF9tYWtlUmVzaXphYmxlOmZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJu e29yaWdpbmFsUG9zaXRpb246YS5vcmlnaW5hbFBvc2l0aW9uLG9yaWdpbmFsU2l6 ZTphLm9yaWdpbmFsU2l6ZSxwb3NpdGlvbjphLnBvc2l0aW9uLHNpemU6YS5zaXpl fX1jPWM9PT1iP3RoaXMub3B0aW9ucy5yZXNpemFibGU6Yzt2YXIgZT10aGlzLGY9 ZS5vcHRpb25zLGc9ZS51aURpYWxvZy5jc3MoInBvc2l0aW9uIik7Yz10eXBlb2Yg Yz09InN0cmluZyI/YzoibixlLHMsdyxzZSxzdyxuZSxudyIsZS51aURpYWxvZy5y ZXNpemFibGUoe2NhbmNlbDoiLnVpLWRpYWxvZy1jb250ZW50Iixjb250YWlubWVu dDoiZG9jdW1lbnQiLGFsc29SZXNpemU6ZS5lbGVtZW50LG1heFdpZHRoOmYubWF4 V2lkdGgsbWF4SGVpZ2h0OmYubWF4SGVpZ2h0LG1pbldpZHRoOmYubWluV2lkdGgs bWluSGVpZ2h0OmUuX21pbkhlaWdodCgpLGhhbmRsZXM6YyxzdGFydDpmdW5jdGlv bihiLGMpe2EodGhpcykuYWRkQ2xhc3MoInVpLWRpYWxvZy1yZXNpemluZyIpLGUu X3RyaWdnZXIoInJlc2l6ZVN0YXJ0IixiLGQoYykpfSxyZXNpemU6ZnVuY3Rpb24o YSxiKXtlLl90cmlnZ2VyKCJyZXNpemUiLGEsZChiKSl9LHN0b3A6ZnVuY3Rpb24o YixjKXthKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctcmVzaXppbmciKSxm LmhlaWdodD1hKHRoaXMpLmhlaWdodCgpLGYud2lkdGg9YSh0aGlzKS53aWR0aCgp LGUuX3RyaWdnZXIoInJlc2l6ZVN0b3AiLGIsZChjKSksYS51aS5kaWFsb2cub3Zl cmxheS5yZXNpemUoKX19KS5jc3MoInBvc2l0aW9uIixnKS5maW5kKCIudWktcmVz aXphYmxlLXNlIikuYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwLWRpYWdv bmFsLXNlIil9LF9taW5IZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlv bnM7cmV0dXJuIGEuaGVpZ2h0PT09ImF1dG8iP2EubWluSGVpZ2h0Ok1hdGgubWlu KGEubWluSGVpZ2h0LGEuaGVpZ2h0KX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKGIpe3Zh ciBjPVtdLGQ9WzAsMF0sZTtpZihiKXtpZih0eXBlb2YgYj09InN0cmluZyJ8fHR5 cGVvZiBiPT0ib2JqZWN0IiYmIjAiaW4gYiljPWIuc3BsaXQ/Yi5zcGxpdCgiICIp OltiWzBdLGJbMV1dLGMubGVuZ3RoPT09MSYmKGNbMV09Y1swXSksYS5lYWNoKFsi bGVmdCIsInRvcCJdLGZ1bmN0aW9uKGEsYil7K2NbYV09PT1jW2FdJiYoZFthXT1j W2FdLGNbYV09Yil9KSxiPXtteTpjLmpvaW4oIiAiKSxhdDpjLmpvaW4oIiAiKSxv ZmZzZXQ6ZC5qb2luKCIgIil9O2I9YS5leHRlbmQoe30sYS51aS5kaWFsb2cucHJv dG90eXBlLm9wdGlvbnMucG9zaXRpb24sYil9ZWxzZSBiPWEudWkuZGlhbG9nLnBy b3RvdHlwZS5vcHRpb25zLnBvc2l0aW9uOyhlPXRoaXMudWlEaWFsb2cuaXMoIjp2 aXNpYmxlIikpfHx0aGlzLnVpRGlhbG9nLnNob3coKSx0aGlzLnVpRGlhbG9nLmNz cyh7dG9wOjAsbGVmdDowfSkucG9zaXRpb24oYiksZXx8dGhpcy51aURpYWxvZy5o aWRlKCl9LF9zZXRPcHRpb25zOmZ1bmN0aW9uKGIpe3ZhciBlPXRoaXMsZj17fSxn PSExO2EuZWFjaChiLGZ1bmN0aW9uKGEsYil7ZS5fc2V0T3B0aW9uKGEsYiksYSBp biBjJiYoZz0hMCksYSBpbiBkJiYoZlthXT1iKX0pLGcmJnRoaXMuX3NpemUoKSx0 aGlzLnVpRGlhbG9nLmlzKCI6ZGF0YShyZXNpemFibGUpIikmJnRoaXMudWlEaWFs b2cucmVzaXphYmxlKCJvcHRpb24iLGYpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGIs Yyl7dmFyIGQ9dGhpcyxlPWQudWlEaWFsb2c7c3dpdGNoKGIpe2Nhc2UiYmVmb3Jl Y2xvc2UiOmI9ImJlZm9yZUNsb3NlIjticmVhaztjYXNlImJ1dHRvbnMiOmQuX2Ny ZWF0ZUJ1dHRvbnMoYyk7YnJlYWs7Y2FzZSJjbG9zZVRleHQiOmQudWlEaWFsb2dU aXRsZWJhckNsb3NlVGV4dC50ZXh0KCIiK2MpO2JyZWFrO2Nhc2UiZGlhbG9nQ2xh c3MiOmUucmVtb3ZlQ2xhc3MoZC5vcHRpb25zLmRpYWxvZ0NsYXNzKS5hZGRDbGFz cygidWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3Ju ZXItYWxsICIrYyk7YnJlYWs7Y2FzZSJkaXNhYmxlZCI6Yz9lLmFkZENsYXNzKCJ1 aS1kaWFsb2ctZGlzYWJsZWQiKTplLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctZGlz YWJsZWQiKTticmVhaztjYXNlImRyYWdnYWJsZSI6dmFyIGY9ZS5pcygiOmRhdGEo ZHJhZ2dhYmxlKSIpO2YmJiFjJiZlLmRyYWdnYWJsZSgiZGVzdHJveSIpLCFmJiZj JiZkLl9tYWtlRHJhZ2dhYmxlKCk7YnJlYWs7Y2FzZSJwb3NpdGlvbiI6ZC5fcG9z aXRpb24oYyk7YnJlYWs7Y2FzZSJyZXNpemFibGUiOihmPWUuaXMoIjpkYXRhKHJl c2l6YWJsZSkiKSkmJiFjJiZlLnJlc2l6YWJsZSgiZGVzdHJveSIpLGYmJnR5cGVv ZiBjPT0ic3RyaW5nIiYmZS5yZXNpemFibGUoIm9wdGlvbiIsImhhbmRsZXMiLGMp LCFmJiZjIT09ITEmJmQuX21ha2VSZXNpemFibGUoYyk7YnJlYWs7Y2FzZSJ0aXRs ZSI6YSgiLnVpLWRpYWxvZy10aXRsZSIsZC51aURpYWxvZ1RpdGxlYmFyKS5odG1s KCIiKyhjfHwiJiMxNjA7IikpfWEuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9u LmFwcGx5KGQsYXJndW1lbnRzKX0sX3NpemU6ZnVuY3Rpb24oKXt2YXIgYj10aGlz Lm9wdGlvbnMsYyxkO3RoaXMuZWxlbWVudC5zaG93KCkuY3NzKHt3aWR0aDoiYXV0 byIsbWluSGVpZ2h0OjAsaGVpZ2h0OjB9KSxiLm1pbldpZHRoPmIud2lkdGgmJihi LndpZHRoPWIubWluV2lkdGgpLGM9dGhpcy51aURpYWxvZy5jc3Moe2hlaWdodDoi YXV0byIsd2lkdGg6Yi53aWR0aH0pLmhlaWdodCgpLGQ9TWF0aC5tYXgoMCxiLm1p bkhlaWdodC1jKSxiLmhlaWdodD09PSJhdXRvIj9hLnN1cHBvcnQubWluSGVpZ2h0 P3RoaXMuZWxlbWVudC5jc3Moe21pbkhlaWdodDpkLGhlaWdodDoiYXV0byJ9KToo dGhpcy51aURpYWxvZy5zaG93KCksYj10aGlzLmVsZW1lbnQuY3NzKCJoZWlnaHQi LCJhdXRvIikuaGVpZ2h0KCksdGhpcy51aURpYWxvZy5oaWRlKCksdGhpcy5lbGVt ZW50LmhlaWdodChNYXRoLm1heChiLGQpKSk6dGhpcy5lbGVtZW50LmhlaWdodChN YXRoLm1heChiLmhlaWdodC1jLDApKSx0aGlzLnVpRGlhbG9nLmlzKCI6ZGF0YShy ZXNpemFibGUpIikmJnRoaXMudWlEaWFsb2cucmVzaXphYmxlKCJvcHRpb24iLCJt aW5IZWlnaHQiLHRoaXMuX21pbkhlaWdodCgpKX19KSxhLmV4dGVuZChhLnVpLmRp YWxvZyx7dmVyc2lvbjoiMS44LjYiLHV1aWQ6MCxtYXhaOjAsZ2V0VGl0bGVJZDpm dW5jdGlvbihhKXtyZXR1cm4gYT1hLmF0dHIoImlkIiksYXx8KHRoaXMudXVpZCs9 MSxhPXRoaXMudXVpZCksInVpLWRpYWxvZy10aXRsZS0iK2F9LG92ZXJsYXk6ZnVu Y3Rpb24oYil7dGhpcy4kZWw9YS51aS5kaWFsb2cub3ZlcmxheS5jcmVhdGUoYil9 fSksYS5leHRlbmQoYS51aS5kaWFsb2cub3ZlcmxheSx7aW5zdGFuY2VzOltdLG9s ZEluc3RhbmNlczpbXSxtYXhaOjAsZXZlbnRzOmEubWFwKCJmb2N1cyxtb3VzZWRv d24sbW91c2V1cCxrZXlkb3duLGtleXByZXNzLGNsaWNrIi5zcGxpdCgiLCIpLGZ1 bmN0aW9uKGEpe3JldHVybiBhKyIuZGlhbG9nLW92ZXJsYXkifSkuam9pbigiICIp LGNyZWF0ZTpmdW5jdGlvbihiKXt0aGlzLmluc3RhbmNlcy5sZW5ndGg9PT0wJiYo c2V0VGltZW91dChmdW5jdGlvbigpe2EudWkuZGlhbG9nLm92ZXJsYXkuaW5zdGFu Y2VzLmxlbmd0aCYmYShkb2N1bWVudCkuYmluZChhLnVpLmRpYWxvZy5vdmVybGF5 LmV2ZW50cyxmdW5jdGlvbihiKXtpZihhKGIudGFyZ2V0KS56SW5kZXgoKTxhLnVp LmRpYWxvZy5vdmVybGF5Lm1heFopcmV0dXJuITF9KX0sMSksYShkb2N1bWVudCku YmluZCgia2V5ZG93bi5kaWFsb2ctb3ZlcmxheSIsZnVuY3Rpb24oYyl7Yi5vcHRp b25zLmNsb3NlT25Fc2NhcGUmJmMua2V5Q29kZSYmYy5rZXlDb2RlPT09YS51aS5r ZXlDb2RlLkVTQ0FQRSYmKGIuY2xvc2UoYyksYy5wcmV2ZW50RGVmYXVsdCgpKX0p LGEod2luZG93KS5iaW5kKCJyZXNpemUuZGlhbG9nLW92ZXJsYXkiLGEudWkuZGlh bG9nLm92ZXJsYXkucmVzaXplKSk7dmFyIGM9KHRoaXMub2xkSW5zdGFuY2VzLnBv cCgpfHxhKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJ1aS13aWRnZXQtb3Zlcmxh eSIpKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KS5jc3Moe3dpZHRoOnRoaXMud2lk dGgoKSxoZWlnaHQ6dGhpcy5oZWlnaHQoKX0pO3JldHVybiBhLmZuLmJnaWZyYW1l JiZjLmJnaWZyYW1lKCksdGhpcy5pbnN0YW5jZXMucHVzaChjKSxjfSxkZXN0cm95 OmZ1bmN0aW9uKGIpe3RoaXMub2xkSW5zdGFuY2VzLnB1c2godGhpcy5pbnN0YW5j ZXMuc3BsaWNlKGEuaW5BcnJheShiLHRoaXMuaW5zdGFuY2VzKSwxKVswXSksdGhp cy5pbnN0YW5jZXMubGVuZ3RoPT09MCYmYShbZG9jdW1lbnQsd2luZG93XSkudW5i aW5kKCIuZGlhbG9nLW92ZXJsYXkiKSxiLnJlbW92ZSgpO3ZhciBjPTA7YS5lYWNo KHRoaXMuaW5zdGFuY2VzLGZ1bmN0aW9uKCl7Yz1NYXRoLm1heChjLHRoaXMuY3Nz KCJ6LWluZGV4IikpfSksdGhpcy5tYXhaPWN9LGhlaWdodDpmdW5jdGlvbigpe3Zh ciBiLGM7cmV0dXJuIGEuYnJvd3Nlci5tc2llJiZhLmJyb3dzZXIudmVyc2lvbjw3 PyhiPU1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWln aHQsZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQpLGM9TWF0aC5tYXgoZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCxkb2N1bWVudC5ib2R5Lm9m ZnNldEhlaWdodCksYjxjP2Eod2luZG93KS5oZWlnaHQoKSsicHgiOmIrInB4Iik6 YShkb2N1bWVudCkuaGVpZ2h0KCkrInB4In0sd2lkdGg6ZnVuY3Rpb24oKXt2YXIg YixjO3JldHVybiBhLmJyb3dzZXIubXNpZSYmYS5icm93c2VyLnZlcnNpb248Nz8o Yj1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgs ZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aCksYz1NYXRoLm1heChkb2N1bWVudC5k b2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgsZG9jdW1lbnQuYm9keS5vZmZzZXRX aWR0aCksYjxjP2Eod2luZG93KS53aWR0aCgpKyJweCI6YisicHgiKTphKGRvY3Vt ZW50KS53aWR0aCgpKyJweCJ9LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciBiPWEoW10p O2EuZWFjaChhLnVpLmRpYWxvZy5vdmVybGF5Lmluc3RhbmNlcyxmdW5jdGlvbigp e2I9Yi5hZGQodGhpcyl9KSxiLmNzcyh7d2lkdGg6MCxoZWlnaHQ6MH0pLmNzcyh7 d2lkdGg6YS51aS5kaWFsb2cub3ZlcmxheS53aWR0aCgpLGhlaWdodDphLnVpLmRp YWxvZy5vdmVybGF5LmhlaWdodCgpfSl9fSksYS5leHRlbmQoYS51aS5kaWFsb2cu b3ZlcmxheS5wcm90b3R5cGUse2Rlc3Ryb3k6ZnVuY3Rpb24oKXthLnVpLmRpYWxv Zy5vdmVybGF5LmRlc3Ryb3kodGhpcy4kZWwpfX0pfShqUXVlcnkpLGZ1bmN0aW9u KGEpe2Eud2lkZ2V0KCJ1aS5zbGlkZXIiLGEudWkubW91c2Use3dpZGdldEV2ZW50 UHJlZml4OiJzbGlkZSIsb3B0aW9uczp7YW5pbWF0ZTohMSxkaXN0YW5jZTowLG1h eDoxMDAsbWluOjAsb3JpZW50YXRpb246Imhvcml6b250YWwiLHJhbmdlOiExLHN0 ZXA6MSx2YWx1ZTowLHZhbHVlczpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFy IGI9dGhpcyxjPXRoaXMub3B0aW9uczt0aGlzLl9tb3VzZVNsaWRpbmc9dGhpcy5f a2V5U2xpZGluZz0hMSx0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2hhbmRsZUlu ZGV4PW51bGwsdGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKSx0aGlzLl9tb3VzZUlu aXQoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXIt Iit0aGlzLm9yaWVudGF0aW9uKyIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50 IHVpLWNvcm5lci1hbGwiKSxjLmRpc2FibGVkJiZ0aGlzLmVsZW1lbnQuYWRkQ2xh c3MoInVpLXNsaWRlci1kaXNhYmxlZCB1aS1kaXNhYmxlZCIpLHRoaXMucmFuZ2U9 YShbXSksYy5yYW5nZSYmKGMucmFuZ2U9PT0hMD8odGhpcy5yYW5nZT1hKCI8ZGl2 PjwvZGl2PiIpLGMudmFsdWVzfHwoYy52YWx1ZXM9W3RoaXMuX3ZhbHVlTWluKCks dGhpcy5fdmFsdWVNaW4oKV0pLGMudmFsdWVzLmxlbmd0aCYmYy52YWx1ZXMubGVu Z3RoIT09MiYmKGMudmFsdWVzPVtjLnZhbHVlc1swXSxjLnZhbHVlc1swXV0pKTp0 aGlzLnJhbmdlPWEoIjxkaXY+PC9kaXY+IiksdGhpcy5yYW5nZS5hcHBlbmRUbyh0 aGlzLmVsZW1lbnQpLmFkZENsYXNzKCJ1aS1zbGlkZXItcmFuZ2UiKSwoYy5yYW5n ZT09PSJtaW4ifHxjLnJhbmdlPT09Im1heCIpJiZ0aGlzLnJhbmdlLmFkZENsYXNz KCJ1aS1zbGlkZXItcmFuZ2UtIitjLnJhbmdlKSx0aGlzLnJhbmdlLmFkZENsYXNz KCJ1aS13aWRnZXQtaGVhZGVyIikpLGEoIi51aS1zbGlkZXItaGFuZGxlIix0aGlz LmVsZW1lbnQpLmxlbmd0aD09PTAmJmEoIjxhIGhyZWY9JyMnPjwvYT4iKS5hcHBl bmRUbyh0aGlzLmVsZW1lbnQpLmFkZENsYXNzKCJ1aS1zbGlkZXItaGFuZGxlIik7 aWYoYy52YWx1ZXMmJmMudmFsdWVzLmxlbmd0aClmb3IoO2EoIi51aS1zbGlkZXIt aGFuZGxlIix0aGlzLmVsZW1lbnQpLmxlbmd0aDxjLnZhbHVlcy5sZW5ndGg7KWEo IjxhIGhyZWY9JyMnPjwvYT4iKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLmFkZENs YXNzKCJ1aS1zbGlkZXItaGFuZGxlIik7dGhpcy5oYW5kbGVzPWEoIi51aS1zbGlk ZXItaGFuZGxlIix0aGlzLmVsZW1lbnQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZh dWx0IHVpLWNvcm5lci1hbGwiKSx0aGlzLmhhbmRsZT10aGlzLmhhbmRsZXMuZXEo MCksdGhpcy5oYW5kbGVzLmFkZCh0aGlzLnJhbmdlKS5maWx0ZXIoImEiKS5jbGlj ayhmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCl9KS5ob3ZlcihmdW5jdGlv bigpe2MuZGlzYWJsZWR8fGEodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVy Iil9LGZ1bmN0aW9uKCl7YSh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92 ZXIiKX0pLmZvY3VzKGZ1bmN0aW9uKCl7Yy5kaXNhYmxlZD9hKHRoaXMpLmJsdXIo KTooYSgiLnVpLXNsaWRlciAudWktc3RhdGUtZm9jdXMiKS5yZW1vdmVDbGFzcygi dWktc3RhdGUtZm9jdXMiKSxhKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1 cyIpKX0pLmJsdXIoZnVuY3Rpb24oKXthKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1z dGF0ZS1mb2N1cyIpfSksdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24oYil7YSh0 aGlzKS5kYXRhKCJpbmRleC51aS1zbGlkZXItaGFuZGxlIixiKX0pLHRoaXMuaGFu ZGxlcy5rZXlkb3duKGZ1bmN0aW9uKGMpe3ZhciBlPSEwLGY9YSh0aGlzKS5kYXRh KCJpbmRleC51aS1zbGlkZXItaGFuZGxlIiksZyxoLGk7aWYoIWIub3B0aW9ucy5k aXNhYmxlZCl7c3dpdGNoKGMua2V5Q29kZSl7Y2FzZSBhLnVpLmtleUNvZGUuSE9N RTpjYXNlIGEudWkua2V5Q29kZS5FTkQ6Y2FzZSBhLnVpLmtleUNvZGUuUEFHRV9V UDpjYXNlIGEudWkua2V5Q29kZS5QQUdFX0RPV046Y2FzZSBhLnVpLmtleUNvZGUu VVA6Y2FzZSBhLnVpLmtleUNvZGUuUklHSFQ6Y2FzZSBhLnVpLmtleUNvZGUuRE9X TjpjYXNlIGEudWkua2V5Q29kZS5MRUZUOmU9ITE7aWYoIWIuX2tleVNsaWRpbmcp e2IuX2tleVNsaWRpbmc9ITAsYSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtYWN0 aXZlIiksZz1iLl9zdGFydChjLGYpO2lmKGc9PT0hMSlyZXR1cm59fWk9Yi5vcHRp b25zLnN0ZXAsZz1iLm9wdGlvbnMudmFsdWVzJiZiLm9wdGlvbnMudmFsdWVzLmxl bmd0aD9oPWIudmFsdWVzKGYpOmg9Yi52YWx1ZSgpO3N3aXRjaChjLmtleUNvZGUp e2Nhc2UgYS51aS5rZXlDb2RlLkhPTUU6aD1iLl92YWx1ZU1pbigpO2JyZWFrO2Nh c2UgYS51aS5rZXlDb2RlLkVORDpoPWIuX3ZhbHVlTWF4KCk7YnJlYWs7Y2FzZSBh LnVpLmtleUNvZGUuUEFHRV9VUDpoPWIuX3RyaW1BbGlnblZhbHVlKGcrKGIuX3Zh bHVlTWF4KCktYi5fdmFsdWVNaW4oKSkvNSk7YnJlYWs7Y2FzZSBhLnVpLmtleUNv ZGUuUEFHRV9ET1dOOmg9Yi5fdHJpbUFsaWduVmFsdWUoZy0oYi5fdmFsdWVNYXgo KS1iLl92YWx1ZU1pbigpKS81KTticmVhaztjYXNlIGEudWkua2V5Q29kZS5VUDpj YXNlIGEudWkua2V5Q29kZS5SSUdIVDppZihnPT09Yi5fdmFsdWVNYXgoKSlyZXR1 cm47aD1iLl90cmltQWxpZ25WYWx1ZShnK2kpO2JyZWFrO2Nhc2UgYS51aS5rZXlD b2RlLkRPV046Y2FzZSBhLnVpLmtleUNvZGUuTEVGVDppZihnPT09Yi5fdmFsdWVN aW4oKSlyZXR1cm47aD1iLl90cmltQWxpZ25WYWx1ZShnLWkpfXJldHVybiBiLl9z bGlkZShjLGYsaCksZX19KS5rZXl1cChmdW5jdGlvbihjKXt2YXIgZT1hKHRoaXMp LmRhdGEoImluZGV4LnVpLXNsaWRlci1oYW5kbGUiKTtiLl9rZXlTbGlkaW5nJiYo Yi5fa2V5U2xpZGluZz0hMSxiLl9zdG9wKGMsZSksYi5fY2hhbmdlKGMsZSksYSh0 aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikpfSksdGhpcy5fcmVm cmVzaFZhbHVlKCksdGhpcy5fYW5pbWF0ZU9mZj0hMX0sZGVzdHJveTpmdW5jdGlv bigpe3JldHVybiB0aGlzLmhhbmRsZXMucmVtb3ZlKCksdGhpcy5yYW5nZS5yZW1v dmUoKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlk ZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwgdWktc2xpZGVyLWRpc2Fi bGVkIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIiku cmVtb3ZlRGF0YSgic2xpZGVyIikudW5iaW5kKCIuc2xpZGVyIiksdGhpcy5fbW91 c2VEZXN0cm95KCksdGhpc30sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihiKXt2YXIg Yz10aGlzLm9wdGlvbnMsZSxmLGcsaCxpO3JldHVybiBjLmRpc2FibGVkPyExOih0 aGlzLmVsZW1lbnRTaXplPXt3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgp LGhlaWdodDp0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKX0sdGhpcy5lbGVtZW50 T2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZzZXQoKSxlPXRoaXMuX25vcm1WYWx1ZUZy b21Nb3VzZSh7eDpiLnBhZ2VYLHk6Yi5wYWdlWX0pLGY9dGhpcy5fdmFsdWVNYXgo KS10aGlzLl92YWx1ZU1pbigpKzEsaD10aGlzLHRoaXMuaGFuZGxlcy5lYWNoKGZ1 bmN0aW9uKGIpe3ZhciBjPU1hdGguYWJzKGUtaC52YWx1ZXMoYikpO2Y+YyYmKGY9 YyxnPWEodGhpcyksaT1iKX0pLGMucmFuZ2U9PT0hMCYmdGhpcy52YWx1ZXMoMSk9 PT1jLm1pbiYmKGkrPTEsZz1hKHRoaXMuaGFuZGxlc1tpXSkpLHRoaXMuX3N0YXJ0 KGIsaSk9PT0hMT8hMToodGhpcy5fbW91c2VTbGlkaW5nPSEwLGguX2hhbmRsZUlu ZGV4PWksZy5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIikuZm9jdXMoKSxjPWcu b2Zmc2V0KCksdGhpcy5fY2xpY2tPZmZzZXQ9YShiLnRhcmdldCkucGFyZW50cygp LmFuZFNlbGYoKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKT97bGVmdDpiLnBhZ2VY LWMubGVmdC1nLndpZHRoKCkvMix0b3A6Yi5wYWdlWS1jLnRvcC1nLmhlaWdodCgp LzItKHBhcnNlSW50KGcuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCktKHBh cnNlSW50KGcuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLDEwKXx8MCkrKHBhcnNl SW50KGcuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDApfTp7bGVmdDowLHRvcDowfSx0 aGlzLl9zbGlkZShiLGksZSksdGhpcy5fYW5pbWF0ZU9mZj0hMCkpfSxfbW91c2VT dGFydDpmdW5jdGlvbigpe3JldHVybiEwfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGEp e3ZhciBiPXRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZSh7eDphLnBhZ2VYLHk6YS5w YWdlWX0pO3JldHVybiB0aGlzLl9zbGlkZShhLHRoaXMuX2hhbmRsZUluZGV4LGIp LCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmhhbmRsZXMu cmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMuX21vdXNlU2xpZGlu Zz0hMSx0aGlzLl9zdG9wKGEsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2NoYW5n ZShhLHRoaXMuX2hhbmRsZUluZGV4KSx0aGlzLl9jbGlja09mZnNldD10aGlzLl9o YW5kbGVJbmRleD1udWxsLHRoaXMuX2FuaW1hdGVPZmY9ITF9LF9kZXRlY3RPcmll bnRhdGlvbjpmdW5jdGlvbigpe3RoaXMub3JpZW50YXRpb249dGhpcy5vcHRpb25z Lm9yaWVudGF0aW9uPT09InZlcnRpY2FsIj8idmVydGljYWwiOiJob3Jpem9udGFs In0sX25vcm1WYWx1ZUZyb21Nb3VzZTpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4g dGhpcy5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj8oYj10aGlzLmVsZW1lbnRT aXplLndpZHRoLGE9YS54LXRoaXMuZWxlbWVudE9mZnNldC5sZWZ0LSh0aGlzLl9j bGlja09mZnNldD90aGlzLl9jbGlja09mZnNldC5sZWZ0OjApKTooYj10aGlzLmVs ZW1lbnRTaXplLmhlaWdodCxhPWEueS10aGlzLmVsZW1lbnRPZmZzZXQudG9wLSh0 aGlzLl9jbGlja09mZnNldD90aGlzLl9jbGlja09mZnNldC50b3A6MCkpLGI9YS9i LGI+MSYmKGI9MSksYjwwJiYoYj0wKSx0aGlzLm9yaWVudGF0aW9uPT09InZlcnRp Y2FsIiYmKGI9MS1iKSxhPXRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4o KSx0aGlzLl90cmltQWxpZ25WYWx1ZSh0aGlzLl92YWx1ZU1pbigpK2IqYSl9LF9z dGFydDpmdW5jdGlvbihhLGIpe3ZhciBjPXtoYW5kbGU6dGhpcy5oYW5kbGVzW2Jd LHZhbHVlOnRoaXMudmFsdWUoKX07cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMm JnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYoYy52YWx1ZT10aGlzLnZhbHVl cyhiKSxjLnZhbHVlcz10aGlzLnZhbHVlcygpKSx0aGlzLl90cmlnZ2VyKCJzdGFy dCIsYSxjKX0sX3NsaWRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDt0aGlzLm9wdGlv bnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aD8oZD10aGlzLnZh bHVlcyhiPzA6MSksdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg9PT0yJiZ0aGlz Lm9wdGlvbnMucmFuZ2U9PT0hMCYmKGI9PT0wJiZjPmR8fGI9PT0xJiZjPGQpJiYo Yz1kKSxjIT09dGhpcy52YWx1ZXMoYikmJihkPXRoaXMudmFsdWVzKCksZFtiXT1j LGE9dGhpcy5fdHJpZ2dlcigic2xpZGUiLGEse2hhbmRsZTp0aGlzLmhhbmRsZXNb Yl0sdmFsdWU6Yyx2YWx1ZXM6ZH0pLHRoaXMudmFsdWVzKGI/MDoxKSxhIT09ITEm JnRoaXMudmFsdWVzKGIsYywhMCkpKTpjIT09dGhpcy52YWx1ZSgpJiYoYT10aGlz Ll90cmlnZ2VyKCJzbGlkZSIsYSx7aGFuZGxlOnRoaXMuaGFuZGxlc1tiXSx2YWx1 ZTpjfSksYSE9PSExJiZ0aGlzLnZhbHVlKGMpKX0sX3N0b3A6ZnVuY3Rpb24oYSxi KXt2YXIgYz17aGFuZGxlOnRoaXMuaGFuZGxlc1tiXSx2YWx1ZTp0aGlzLnZhbHVl KCl9O3RoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVu Z3RoJiYoYy52YWx1ZT10aGlzLnZhbHVlcyhiKSxjLnZhbHVlcz10aGlzLnZhbHVl cygpKSx0aGlzLl90cmlnZ2VyKCJzdG9wIixhLGMpfSxfY2hhbmdlOmZ1bmN0aW9u KGEsYil7aWYoIXRoaXMuX2tleVNsaWRpbmcmJiF0aGlzLl9tb3VzZVNsaWRpbmcp e3ZhciBjPXtoYW5kbGU6dGhpcy5oYW5kbGVzW2JdLHZhbHVlOnRoaXMudmFsdWUo KX07dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5n dGgmJihjLnZhbHVlPXRoaXMudmFsdWVzKGIpLGMudmFsdWVzPXRoaXMudmFsdWVz KCkpLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsYSxjKX19LHZhbHVlOmZ1bmN0aW9u KGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoJiYodGhpcy5vcHRpb25zLnZhbHVl PXRoaXMuX3RyaW1BbGlnblZhbHVlKGEpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRo aXMuX2NoYW5nZShudWxsLDApKSx0aGlzLl92YWx1ZSgpfSx2YWx1ZXM6ZnVuY3Rp b24oYixjKXt2YXIgZSxmLGc7YXJndW1lbnRzLmxlbmd0aD4xJiYodGhpcy5vcHRp b25zLnZhbHVlc1tiXT10aGlzLl90cmltQWxpZ25WYWx1ZShjKSx0aGlzLl9yZWZy ZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCxiKSk7aWYoIWFyZ3VtZW50cy5s ZW5ndGgpcmV0dXJuIHRoaXMuX3ZhbHVlcygpO2lmKCFhLmlzQXJyYXkoYXJndW1l bnRzWzBdKSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25z LnZhbHVlcy5sZW5ndGg/dGhpcy5fdmFsdWVzKGIpOnRoaXMudmFsdWUoKTtlPXRo aXMub3B0aW9ucy52YWx1ZXMsZj1hcmd1bWVudHNbMF07Zm9yKGc9MDtnPGUubGVu Z3RoO2crPTEpZVtnXT10aGlzLl90cmltQWxpZ25WYWx1ZShmW2ddKSx0aGlzLl9j aGFuZ2UobnVsbCxnKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpm dW5jdGlvbihiLGMpe3ZhciBlLGY9MDthLmlzQXJyYXkodGhpcy5vcHRpb25zLnZh bHVlcykmJihmPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSxhLldpZGdldC5w cm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7c3dpdGNo KGIpe2Nhc2UiZGlzYWJsZWQiOmM/KHRoaXMuaGFuZGxlcy5maWx0ZXIoIi51aS1z dGF0ZS1mb2N1cyIpLmJsdXIoKSx0aGlzLmhhbmRsZXMucmVtb3ZlQ2xhc3MoInVp LXN0YXRlLWhvdmVyIiksdGhpcy5oYW5kbGVzLmF0dHIoImRpc2FibGVkIiwiZGlz YWJsZWQiKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRpc2FibGVkIikpOih0 aGlzLmhhbmRsZXMucmVtb3ZlQXR0cigiZGlzYWJsZWQiKSx0aGlzLmVsZW1lbnQu cmVtb3ZlQ2xhc3MoInVpLWRpc2FibGVkIikpO2JyZWFrO2Nhc2Uib3JpZW50YXRp b24iOnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5lbGVtZW50LnJlbW92 ZUNsYXNzKCJ1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwi KS5hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiksdGhpcy5f cmVmcmVzaFZhbHVlKCk7YnJlYWs7Y2FzZSJ2YWx1ZSI6dGhpcy5fYW5pbWF0ZU9m Zj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx0 aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UidmFsdWVzIjp0aGlzLl9hbmlt YXRlT2ZmPSEwLHRoaXMuX3JlZnJlc2hWYWx1ZSgpO2ZvcihlPTA7ZTxmO2UrPTEp dGhpcy5fY2hhbmdlKG51bGwsZSk7dGhpcy5fYW5pbWF0ZU9mZj0hMX19LF92YWx1 ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy52YWx1ZTtyZXR1cm4gYT10 aGlzLl90cmltQWxpZ25WYWx1ZShhKX0sX3ZhbHVlczpmdW5jdGlvbihhKXt2YXIg YixjO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGI9dGhpcy5vcHRpb25zLnZh bHVlc1thXSxiPXRoaXMuX3RyaW1BbGlnblZhbHVlKGIpO2I9dGhpcy5vcHRpb25z LnZhbHVlcy5zbGljZSgpO2ZvcihjPTA7YzxiLmxlbmd0aDtjKz0xKWJbY109dGhp cy5fdHJpbUFsaWduVmFsdWUoYltjXSk7cmV0dXJuIGJ9LF90cmltQWxpZ25WYWx1 ZTpmdW5jdGlvbihhKXtpZihhPHRoaXMuX3ZhbHVlTWluKCkpcmV0dXJuIHRoaXMu X3ZhbHVlTWluKCk7aWYoYT50aGlzLl92YWx1ZU1heCgpKXJldHVybiB0aGlzLl92 YWx1ZU1heCgpO3ZhciBiPXRoaXMub3B0aW9ucy5zdGVwPjA/dGhpcy5vcHRpb25z LnN0ZXA6MSxjPWElYjtyZXR1cm4gYS09YyxNYXRoLmFicyhjKSoyPj1iJiYoYSs9 Yz4wP2I6LWIpLHBhcnNlRmxvYXQoYS50b0ZpeGVkKDUpKX0sX3ZhbHVlTWluOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW59LF92YWx1ZU1heDpmdW5j dGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMubWF4fSxfcmVmcmVzaFZhbHVlOmZ1 bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLnJhbmdlLGM9dGhpcy5vcHRpb25z LGU9dGhpcyxmPXRoaXMuX2FuaW1hdGVPZmY/ITE6Yy5hbmltYXRlLGcsaD17fSxp LGosayxsO3RoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMu bGVuZ3RoP3RoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKGIpe2c9KGUudmFsdWVz KGIpLWUuX3ZhbHVlTWluKCkpLyhlLl92YWx1ZU1heCgpLWUuX3ZhbHVlTWluKCkp KjEwMCxoW2Uub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCI/ImxlZnQiOiJib3R0 b20iXT1nKyIlIixhKHRoaXMpLnN0b3AoMSwxKVtmPyJhbmltYXRlIjoiY3NzIl0o aCxjLmFuaW1hdGUpLGUub3B0aW9ucy5yYW5nZT09PSEwJiYoZS5vcmllbnRhdGlv bj09PSJob3Jpem9udGFsIj8oYj09PTAmJmUucmFuZ2Uuc3RvcCgxLDEpW2Y/ImFu aW1hdGUiOiJjc3MiXSh7bGVmdDpnKyIlIn0sYy5hbmltYXRlKSxiPT09MSYmZS5y YW5nZVtmPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmctaSsiJSJ9LHtxdWV1ZToh MSxkdXJhdGlvbjpjLmFuaW1hdGV9KSk6KGI9PT0wJiZlLnJhbmdlLnN0b3AoMSwx KVtmPyJhbmltYXRlIjoiY3NzIl0oe2JvdHRvbTpnKyIlIn0sYy5hbmltYXRlKSxi PT09MSYmZS5yYW5nZVtmPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDpnLWkrIiUi fSx7cXVldWU6ITEsZHVyYXRpb246Yy5hbmltYXRlfSkpKSxpPWd9KTooaj10aGlz LnZhbHVlKCksaz10aGlzLl92YWx1ZU1pbigpLGw9dGhpcy5fdmFsdWVNYXgoKSxn PWwhPT1rPyhqLWspLyhsLWspKjEwMDowLGhbZS5vcmllbnRhdGlvbj09PSJob3Jp em9udGFsIj8ibGVmdCI6ImJvdHRvbSJdPWcrIiUiLHRoaXMuaGFuZGxlLnN0b3Ao MSwxKVtmPyJhbmltYXRlIjoiY3NzIl0oaCxjLmFuaW1hdGUpLGI9PT0ibWluIiYm dGhpcy5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIiYmdGhpcy5yYW5nZS5zdG9w KDEsMSlbZj8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDpnKyIlIn0sYy5hbmltYXRl KSxiPT09Im1heCImJnRoaXMub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJnRo aXMucmFuZ2VbZj8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDoxMDAtZysiJSJ9LHtx dWV1ZTohMSxkdXJhdGlvbjpjLmFuaW1hdGV9KSxiPT09Im1pbiImJnRoaXMub3Jp ZW50YXRpb249PT0idmVydGljYWwiJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtmPyJh bmltYXRlIjoiY3NzIl0oe2hlaWdodDpnKyIlIn0sYy5hbmltYXRlKSxiPT09Im1h eCImJnRoaXMub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0aGlzLnJhbmdlW2Y/ ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OjEwMC1nKyIlIn0se3F1ZXVlOiExLGR1 cmF0aW9uOmMuYW5pbWF0ZX0pKX19KSxhLmV4dGVuZChhLnVpLnNsaWRlcix7dmVy c2lvbjoiMS44LjYifSl9KGpRdWVyeSksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBj KCl7cmV0dXJuKytlfWZ1bmN0aW9uIGQoKXtyZXR1cm4rK2Z9dmFyIGU9MCxmPTA7 YS53aWRnZXQoInVpLnRhYnMiLHtvcHRpb25zOnthZGQ6bnVsbCxhamF4T3B0aW9u czpudWxsLGNhY2hlOiExLGNvb2tpZTpudWxsLGNvbGxhcHNpYmxlOiExLGRpc2Fi bGU6bnVsbCxkaXNhYmxlZDpbXSxlbmFibGU6bnVsbCxldmVudDoiY2xpY2siLGZ4 Om51bGwsaWRQcmVmaXg6InVpLXRhYnMtIixsb2FkOm51bGwscGFuZWxUZW1wbGF0 ZToiPGRpdj48L2Rpdj4iLHJlbW92ZTpudWxsLHNlbGVjdDpudWxsLHNob3c6bnVs bCxzcGlubmVyOiI8ZW0+TG9hZGluZyYjODIzMDs8L2VtPiIsdGFiVGVtcGxhdGU6 IjxsaT48YSBocmVmPScje2hyZWZ9Jz48c3Bhbj4je2xhYmVsfTwvc3Bhbj48L2E+ PC9saT4ifSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fdGFiaWZ5KCEwKX0sX3Nl dE9wdGlvbjpmdW5jdGlvbihhLGIpe2E9PSJzZWxlY3RlZCI/dGhpcy5vcHRpb25z LmNvbGxhcHNpYmxlJiZiPT10aGlzLm9wdGlvbnMuc2VsZWN0ZWR8fHRoaXMuc2Vs ZWN0KGIpOih0aGlzLm9wdGlvbnNbYV09Yix0aGlzLl90YWJpZnkoKSl9LF90YWJJ ZDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aXRsZSYmYS50aXRsZS5yZXBsYWNlKC9c cy9nLCJfIikucmVwbGFjZSgvW15cd1x1MDBjMC1cdUZGRkYtXS9nLCIiKXx8dGhp cy5vcHRpb25zLmlkUHJlZml4K2MoKX0sX3Nhbml0aXplU2VsZWN0b3I6ZnVuY3Rp b24oYSl7cmV0dXJuIGEucmVwbGFjZSgvOi9nLCJcXDoiKX0sX2Nvb2tpZTpmdW5j dGlvbigpe3ZhciBiPXRoaXMuY29va2llfHwodGhpcy5jb29raWU9dGhpcy5vcHRp b25zLmNvb2tpZS5uYW1lfHwidWktdGFicy0iK2QoKSk7cmV0dXJuIGEuY29va2ll LmFwcGx5KG51bGwsW2JdLmNvbmNhdChhLm1ha2VBcnJheShhcmd1bWVudHMpKSl9 LF91aTpmdW5jdGlvbihhLGIpe3JldHVybnt0YWI6YSxwYW5lbDpiLGluZGV4OnRo aXMuYW5jaG9ycy5pbmRleChhKX19LF9jbGVhbnVwOmZ1bmN0aW9uKCl7dGhpcy5s aXMuZmlsdGVyKCIudWktc3RhdGUtcHJvY2Vzc2luZyIpLnJlbW92ZUNsYXNzKCJ1 aS1zdGF0ZS1wcm9jZXNzaW5nIikuZmluZCgic3BhbjpkYXRhKGxhYmVsLnRhYnMp IikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEodGhpcyk7Yi5odG1sKGIuZGF0YSgi bGFiZWwudGFicyIpKS5yZW1vdmVEYXRhKCJsYWJlbC50YWJzIil9KX0sX3RhYmlm eTpmdW5jdGlvbihjKXtmdW5jdGlvbiBkKGIsYyl7Yi5jc3MoImRpc3BsYXkiLCIi KSwhYS5zdXBwb3J0Lm9wYWNpdHkmJmMub3BhY2l0eSYmYlswXS5zdHlsZS5yZW1v dmVBdHRyaWJ1dGUoImZpbHRlciIpfXZhciBlPXRoaXMsZj10aGlzLm9wdGlvbnMs Zz0vXiMuKy87dGhpcy5saXN0PXRoaXMuZWxlbWVudC5maW5kKCJvbCx1bCIpLmVx KDApLHRoaXMubGlzPWEoIiA+IGxpOmhhcyhhW2hyZWZdKSIsdGhpcy5saXN0KSx0 aGlzLmFuY2hvcnM9dGhpcy5saXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGEoImEi LHRoaXMpWzBdfSksdGhpcy5wYW5lbHM9YShbXSksdGhpcy5hbmNob3JzLmVhY2go ZnVuY3Rpb24oYixjKXt2YXIgZD1hKGMpLmF0dHIoImhyZWYiKSxoPWQuc3BsaXQo IiMiKVswXSxpO2gmJihoPT09bG9jYXRpb24udG9TdHJpbmcoKS5zcGxpdCgiIyIp WzBdfHwoaT1hKCJiYXNlIilbMF0pJiZoPT09aS5ocmVmKSYmKGQ9Yy5oYXNoLGMu aHJlZj1kKSxnLnRlc3QoZCk/ZS5wYW5lbHM9ZS5wYW5lbHMuYWRkKGUuX3Nhbml0 aXplU2VsZWN0b3IoZCkpOmQmJmQhPT0iIyI/KGEuZGF0YShjLCJocmVmLnRhYnMi LGQpLGEuZGF0YShjLCJsb2FkLnRhYnMiLGQucmVwbGFjZSgvIy4qJC8sIiIpKSxk PWUuX3RhYklkKGMpLGMuaHJlZj0iIyIrZCxjPWEoIiMiK2QpLGMubGVuZ3RofHwo Yz1hKGYucGFuZWxUZW1wbGF0ZSkuYXR0cigiaWQiLGQpLmFkZENsYXNzKCJ1aS10 YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5p bnNlcnRBZnRlcihlLnBhbmVsc1tiLTFdfHxlLmxpc3QpLGMuZGF0YSgiZGVzdHJv eS50YWJzIiwhMCkpLGUucGFuZWxzPWUucGFuZWxzLmFkZChjKSk6Zi5kaXNhYmxl ZC5wdXNoKGIpfSksYz8odGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS10YWJzIHVp LXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIiksdGhpcy5s aXN0LmFkZENsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktaGVs cGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCIpLHRo aXMubGlzLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3Ai KSx0aGlzLnBhbmVscy5hZGRDbGFzcygidWktdGFicy1wYW5lbCB1aS13aWRnZXQt Y29udGVudCB1aS1jb3JuZXItYm90dG9tIiksZi5zZWxlY3RlZD09PWI/KGxvY2F0 aW9uLmhhc2gmJnRoaXMuYW5jaG9ycy5lYWNoKGZ1bmN0aW9uKGEsYil7aWYoYi5o YXNoPT1sb2NhdGlvbi5oYXNoKXJldHVybiBmLnNlbGVjdGVkPWEsITF9KSx0eXBl b2YgZi5zZWxlY3RlZCE9Im51bWJlciImJmYuY29va2llJiYoZi5zZWxlY3RlZD1w YXJzZUludChlLl9jb29raWUoKSwxMCkpLHR5cGVvZiBmLnNlbGVjdGVkIT0ibnVt YmVyIiYmdGhpcy5saXMuZmlsdGVyKCIudWktdGFicy1zZWxlY3RlZCIpLmxlbmd0 aCYmKGYuc2VsZWN0ZWQ9dGhpcy5saXMuaW5kZXgodGhpcy5saXMuZmlsdGVyKCIu dWktdGFicy1zZWxlY3RlZCIpKSksZi5zZWxlY3RlZD1mLnNlbGVjdGVkfHwodGhp cy5saXMubGVuZ3RoPzA6LTEpKTpmLnNlbGVjdGVkPT09bnVsbCYmKGYuc2VsZWN0 ZWQ9LTEpLGYuc2VsZWN0ZWQ9Zi5zZWxlY3RlZD49MCYmdGhpcy5hbmNob3JzW2Yu c2VsZWN0ZWRdfHxmLnNlbGVjdGVkPDA/Zi5zZWxlY3RlZDowLGYuZGlzYWJsZWQ9 YS51bmlxdWUoZi5kaXNhYmxlZC5jb25jYXQoYS5tYXAodGhpcy5saXMuZmlsdGVy KCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihhKXtyZXR1cm4gZS5saXMu aW5kZXgoYSl9KSkpLnNvcnQoKSxhLmluQXJyYXkoZi5zZWxlY3RlZCxmLmRpc2Fi bGVkKSE9LTEmJmYuZGlzYWJsZWQuc3BsaWNlKGEuaW5BcnJheShmLnNlbGVjdGVk LGYuZGlzYWJsZWQpLDEpLHRoaXMucGFuZWxzLmFkZENsYXNzKCJ1aS10YWJzLWhp ZGUiKSx0aGlzLmxpcy5yZW1vdmVDbGFzcygidWktdGFicy1zZWxlY3RlZCB1aS1z dGF0ZS1hY3RpdmUiKSxmLnNlbGVjdGVkPj0wJiZ0aGlzLmFuY2hvcnMubGVuZ3Ro JiYoYShlLl9zYW5pdGl6ZVNlbGVjdG9yKGUuYW5jaG9yc1tmLnNlbGVjdGVkXS5o YXNoKSkucmVtb3ZlQ2xhc3MoInVpLXRhYnMtaGlkZSIpLHRoaXMubGlzLmVxKGYu c2VsZWN0ZWQpLmFkZENsYXNzKCJ1aS10YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFj dGl2ZSIpLGUuZWxlbWVudC5xdWV1ZSgidGFicyIsZnVuY3Rpb24oKXtlLl90cmln Z2VyKCJzaG93IixudWxsLGUuX3VpKGUuYW5jaG9yc1tmLnNlbGVjdGVkXSxhKGUu X3Nhbml0aXplU2VsZWN0b3IoZS5hbmNob3JzW2Yuc2VsZWN0ZWRdLmhhc2gpKSkp fSksdGhpcy5sb2FkKGYuc2VsZWN0ZWQpKSxhKHdpbmRvdykuYmluZCgidW5sb2Fk IixmdW5jdGlvbigpe2UubGlzLmFkZChlLmFuY2hvcnMpLnVuYmluZCgiLnRhYnMi KSxlLmxpcz1lLmFuY2hvcnM9ZS5wYW5lbHM9bnVsbH0pKTpmLnNlbGVjdGVkPXRo aXMubGlzLmluZGV4KHRoaXMubGlzLmZpbHRlcigiLnVpLXRhYnMtc2VsZWN0ZWQi KSksdGhpcy5lbGVtZW50W2YuY29sbGFwc2libGU/ImFkZENsYXNzIjoicmVtb3Zl Q2xhc3MiXSgidWktdGFicy1jb2xsYXBzaWJsZSIpLGYuY29va2llJiZ0aGlzLl9j b29raWUoZi5zZWxlY3RlZCxmLmNvb2tpZSksYz0wO2Zvcih2YXIgaDtoPXRoaXMu bGlzW2NdO2MrKylhKGgpW2EuaW5BcnJheShjLGYuZGlzYWJsZWQpIT0tMSYmIWEo aCkuaGFzQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQiKT8iYWRkQ2xhc3MiOiJyZW1v dmVDbGFzcyJdKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpO2YuY2FjaGU9PT0hMSYmdGhp cy5hbmNob3JzLnJlbW92ZURhdGEoImNhY2hlLnRhYnMiKSx0aGlzLmxpcy5hZGQo dGhpcy5hbmNob3JzKS51bmJpbmQoIi50YWJzIik7aWYoZi5ldmVudCE9PSJtb3Vz ZW92ZXIiKXt2YXIgaT1mdW5jdGlvbihhLGIpe2IuaXMoIjpub3QoLnVpLXN0YXRl LWRpc2FibGVkKSIpJiZiLmFkZENsYXNzKCJ1aS1zdGF0ZS0iK2EpfSxqPWZ1bmN0 aW9uKGEsYil7Yi5yZW1vdmVDbGFzcygidWktc3RhdGUtIithKX07dGhpcy5saXMu YmluZCgibW91c2VvdmVyLnRhYnMiLGZ1bmN0aW9uKCl7aSgiaG92ZXIiLGEodGhp cykpfSksdGhpcy5saXMuYmluZCgibW91c2VvdXQudGFicyIsZnVuY3Rpb24oKXtq KCJob3ZlciIsYSh0aGlzKSl9KSx0aGlzLmFuY2hvcnMuYmluZCgiZm9jdXMudGFi cyIsZnVuY3Rpb24oKXtpKCJmb2N1cyIsYSh0aGlzKS5jbG9zZXN0KCJsaSIpKX0p LHRoaXMuYW5jaG9ycy5iaW5kKCJibHVyLnRhYnMiLGZ1bmN0aW9uKCl7aigiZm9j dXMiLGEodGhpcykuY2xvc2VzdCgibGkiKSl9KX12YXIgayxsO2YuZngmJihhLmlz QXJyYXkoZi5meCk/KGs9Zi5meFswXSxsPWYuZnhbMV0pOms9bD1mLmZ4KTt2YXIg bT1sP2Z1bmN0aW9uKGIsYyl7YShiKS5jbG9zZXN0KCJsaSIpLmFkZENsYXNzKCJ1 aS10YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFjdGl2ZSIpLGMuaGlkZSgpLnJlbW92 ZUNsYXNzKCJ1aS10YWJzLWhpZGUiKS5hbmltYXRlKGwsbC5kdXJhdGlvbnx8Im5v cm1hbCIsZnVuY3Rpb24oKXtkKGMsbCksZS5fdHJpZ2dlcigic2hvdyIsbnVsbCxl Ll91aShiLGNbMF0pKX0pfTpmdW5jdGlvbihiLGMpe2EoYikuY2xvc2VzdCgibGki KS5hZGRDbGFzcygidWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUiKSxj LnJlbW92ZUNsYXNzKCJ1aS10YWJzLWhpZGUiKSxlLl90cmlnZ2VyKCJzaG93Iixu dWxsLGUuX3VpKGIsY1swXSkpfSxuPWs/ZnVuY3Rpb24oYSxiKXtiLmFuaW1hdGUo ayxrLmR1cmF0aW9ufHwibm9ybWFsIixmdW5jdGlvbigpe2UubGlzLnJlbW92ZUNs YXNzKCJ1aS10YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFjdGl2ZSIpLGIuYWRkQ2xh c3MoInVpLXRhYnMtaGlkZSIpLGQoYixrKSxlLmVsZW1lbnQuZGVxdWV1ZSgidGFi cyIpfSl9OmZ1bmN0aW9uKGEsYil7ZS5saXMucmVtb3ZlQ2xhc3MoInVpLXRhYnMt c2VsZWN0ZWQgdWktc3RhdGUtYWN0aXZlIiksYi5hZGRDbGFzcygidWktdGFicy1o aWRlIiksZS5lbGVtZW50LmRlcXVldWUoInRhYnMiKX07dGhpcy5hbmNob3JzLmJp bmQoZi5ldmVudCsiLnRhYnMiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWEoYiku Y2xvc2VzdCgibGkiKSxkPWUucGFuZWxzLmZpbHRlcigiOm5vdCgudWktdGFicy1o aWRlKSIpLGc9YShlLl9zYW5pdGl6ZVNlbGVjdG9yKGIuaGFzaCkpO2lmKGMuaGFz Q2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQiKSYmIWYuY29sbGFwc2libGV8fGMuaGFz Q2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIil8fGMuaGFzQ2xhc3MoInVpLXN0YXRl LXByb2Nlc3NpbmciKXx8ZS5wYW5lbHMuZmlsdGVyKCI6YW5pbWF0ZWQiKS5sZW5n dGh8fGUuX3RyaWdnZXIoInNlbGVjdCIsbnVsbCxlLl91aSh0aGlzLGdbMF0pKT09 PSExKXJldHVybiB0aGlzLmJsdXIoKSwhMTtmLnNlbGVjdGVkPWUuYW5jaG9ycy5p bmRleCh0aGlzKSxlLmFib3J0KCk7aWYoZi5jb2xsYXBzaWJsZSl7aWYoYy5oYXND bGFzcygidWktdGFicy1zZWxlY3RlZCIpKXJldHVybiBmLnNlbGVjdGVkPS0xLGYu Y29va2llJiZlLl9jb29raWUoZi5zZWxlY3RlZCxmLmNvb2tpZSksZS5lbGVtZW50 LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigpe24oYixkKX0pLmRlcXVldWUoInRhYnMi KSx0aGlzLmJsdXIoKSwhMTtpZighZC5sZW5ndGgpcmV0dXJuIGYuY29va2llJiZl Ll9jb29raWUoZi5zZWxlY3RlZCxmLmNvb2tpZSksZS5lbGVtZW50LnF1ZXVlKCJ0 YWJzIixmdW5jdGlvbigpe20oYixnKX0pLGUubG9hZChlLmFuY2hvcnMuaW5kZXgo dGhpcykpLHRoaXMuYmx1cigpLCExfWYuY29va2llJiZlLl9jb29raWUoZi5zZWxl Y3RlZCxmLmNvb2tpZSk7aWYoZy5sZW5ndGgpZC5sZW5ndGgmJmUuZWxlbWVudC5x dWV1ZSgidGFicyIsZnVuY3Rpb24oKXtuKGIsZCl9KSxlLmVsZW1lbnQucXVldWUo InRhYnMiLGZ1bmN0aW9uKCl7bShiLGcpfSksZS5sb2FkKGUuYW5jaG9ycy5pbmRl eCh0aGlzKSk7ZWxzZSB0aHJvdyJqUXVlcnkgVUkgVGFiczogTWlzbWF0Y2hpbmcg ZnJhZ21lbnQgaWRlbnRpZmllci4iO2EuYnJvd3Nlci5tc2llJiZ0aGlzLmJsdXIo KX0pLHRoaXMuYW5jaG9ycy5iaW5kKCJjbGljay50YWJzIixmdW5jdGlvbigpe3Jl dHVybiExfSl9LF9nZXRJbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9 PSJzdHJpbmciJiYoYT10aGlzLmFuY2hvcnMuaW5kZXgodGhpcy5hbmNob3JzLmZp bHRlcigiW2hyZWYkPSIrYSsiXSIpKSksYX0sZGVzdHJveTpmdW5jdGlvbigpe3Zh ciBiPXRoaXMub3B0aW9ucztyZXR1cm4gdGhpcy5hYm9ydCgpLHRoaXMuZWxlbWVu dC51bmJpbmQoIi50YWJzIikucmVtb3ZlQ2xhc3MoInVpLXRhYnMgdWktd2lkZ2V0 IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktdGFicy1jb2xsYXBz aWJsZSIpLnJlbW92ZURhdGEoInRhYnMiKSx0aGlzLmxpc3QucmVtb3ZlQ2xhc3Mo InVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXgg dWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiksdGhpcy5hbmNob3JzLmVh Y2goZnVuY3Rpb24oKXt2YXIgYj1hLmRhdGEodGhpcwosImhyZWYudGFicyIpO2Im Jih0aGlzLmhyZWY9Yik7dmFyIGM9YSh0aGlzKS51bmJpbmQoIi50YWJzIik7YS5l YWNoKFsiaHJlZiIsImxvYWQiLCJjYWNoZSJdLGZ1bmN0aW9uKGEsYil7Yy5yZW1v dmVEYXRhKGIrIi50YWJzIil9KX0pLHRoaXMubGlzLnVuYmluZCgiLnRhYnMiKS5h ZGQodGhpcy5wYW5lbHMpLmVhY2goZnVuY3Rpb24oKXthLmRhdGEodGhpcywiZGVz dHJveS50YWJzIik/YSh0aGlzKS5yZW1vdmUoKTphKHRoaXMpLnJlbW92ZUNsYXNz KCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AgdWktdGFicy1zZWxlY3Rl ZCB1aS1zdGF0ZS1hY3RpdmUgdWktc3RhdGUtaG92ZXIgdWktc3RhdGUtZm9jdXMg dWktc3RhdGUtZGlzYWJsZWQgdWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVu dCB1aS1jb3JuZXItYm90dG9tIHVpLXRhYnMtaGlkZSIpfSksYi5jb29raWUmJnRo aXMuX2Nvb2tpZShudWxsLGIuY29va2llKSx0aGlzfSxhZGQ6ZnVuY3Rpb24oYyxk LGUpe2U9PT1iJiYoZT10aGlzLmFuY2hvcnMubGVuZ3RoKTt2YXIgZj10aGlzLGc9 dGhpcy5vcHRpb25zO2Q9YShnLnRhYlRlbXBsYXRlLnJlcGxhY2UoLyNce2hyZWZc fS9nLGMpLnJlcGxhY2UoLyNce2xhYmVsXH0vZyxkKSksYz1jLmluZGV4T2YoIiMi KT90aGlzLl90YWJJZChhKCJhIixkKVswXSk6Yy5yZXBsYWNlKCIjIiwiIiksZC5h ZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItdG9wIikuZGF0YSgi ZGVzdHJveS50YWJzIiwhMCk7dmFyIGg9YSgiIyIrYyk7cmV0dXJuIGgubGVuZ3Ro fHwoaD1hKGcucGFuZWxUZW1wbGF0ZSkuYXR0cigiaWQiLGMpLmRhdGEoImRlc3Ry b3kudGFicyIsITApKSxoLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdl dC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20gdWktdGFicy1oaWRlIiksZT49dGhp cy5saXMubGVuZ3RoPyhkLmFwcGVuZFRvKHRoaXMubGlzdCksaC5hcHBlbmRUbyh0 aGlzLmxpc3RbMF0ucGFyZW50Tm9kZSkpOihkLmluc2VydEJlZm9yZSh0aGlzLmxp c1tlXSksaC5pbnNlcnRCZWZvcmUodGhpcy5wYW5lbHNbZV0pKSxnLmRpc2FibGVk PWEubWFwKGcuZGlzYWJsZWQsZnVuY3Rpb24oYSl7cmV0dXJuIGE+PWU/KythOmF9 KSx0aGlzLl90YWJpZnkoKSx0aGlzLmFuY2hvcnMubGVuZ3RoPT0xJiYoZy5zZWxl Y3RlZD0wLGQuYWRkQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQgdWktc3RhdGUtYWN0 aXZlIiksaC5yZW1vdmVDbGFzcygidWktdGFicy1oaWRlIiksdGhpcy5lbGVtZW50 LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigpe2YuX3RyaWdnZXIoInNob3ciLG51bGws Zi5fdWkoZi5hbmNob3JzWzBdLGYucGFuZWxzWzBdKSl9KSx0aGlzLmxvYWQoMCkp LHRoaXMuX3RyaWdnZXIoImFkZCIsbnVsbCx0aGlzLl91aSh0aGlzLmFuY2hvcnNb ZV0sdGhpcy5wYW5lbHNbZV0pKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oYil7Yj10 aGlzLl9nZXRJbmRleChiKTt2YXIgYz10aGlzLm9wdGlvbnMsZD10aGlzLmxpcy5l cShiKS5yZW1vdmUoKSxlPXRoaXMucGFuZWxzLmVxKGIpLnJlbW92ZSgpO3JldHVy biBkLmhhc0NsYXNzKCJ1aS10YWJzLXNlbGVjdGVkIikmJnRoaXMuYW5jaG9ycy5s ZW5ndGg+MSYmdGhpcy5zZWxlY3QoYisoYisxPHRoaXMuYW5jaG9ycy5sZW5ndGg/ MTotMSkpLGMuZGlzYWJsZWQ9YS5tYXAoYS5ncmVwKGMuZGlzYWJsZWQsZnVuY3Rp b24oYSl7cmV0dXJuIGEhPWJ9KSxmdW5jdGlvbihhKXtyZXR1cm4gYT49Yj8tLWE6 YX0pLHRoaXMuX3RhYmlmeSgpLHRoaXMuX3RyaWdnZXIoInJlbW92ZSIsbnVsbCx0 aGlzLl91aShkLmZpbmQoImEiKVswXSxlWzBdKSksdGhpc30sZW5hYmxlOmZ1bmN0 aW9uKGIpe2I9dGhpcy5fZ2V0SW5kZXgoYik7dmFyIGM9dGhpcy5vcHRpb25zO2lm KGEuaW5BcnJheShiLGMuZGlzYWJsZWQpIT0tMSlyZXR1cm4gdGhpcy5saXMuZXEo YikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIiksYy5kaXNhYmxlZD1h LmdyZXAoYy5kaXNhYmxlZCxmdW5jdGlvbihhKXtyZXR1cm4gYSE9Yn0pLHRoaXMu X3RyaWdnZXIoImVuYWJsZSIsbnVsbCx0aGlzLl91aSh0aGlzLmFuY2hvcnNbYl0s dGhpcy5wYW5lbHNbYl0pKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKGEpe2E9dGhp cy5fZ2V0SW5kZXgoYSk7dmFyIGI9dGhpcy5vcHRpb25zO3JldHVybiBhIT1iLnNl bGVjdGVkJiYodGhpcy5saXMuZXEoYSkuYWRkQ2xhc3MoInVpLXN0YXRlLWRpc2Fi bGVkIiksYi5kaXNhYmxlZC5wdXNoKGEpLGIuZGlzYWJsZWQuc29ydCgpLHRoaXMu X3RyaWdnZXIoImRpc2FibGUiLG51bGwsdGhpcy5fdWkodGhpcy5hbmNob3JzW2Fd LHRoaXMucGFuZWxzW2FdKSkpLHRoaXN9LHNlbGVjdDpmdW5jdGlvbihhKXthPXRo aXMuX2dldEluZGV4KGEpO2lmKGE9PS0xKWlmKHRoaXMub3B0aW9ucy5jb2xsYXBz aWJsZSYmdGhpcy5vcHRpb25zLnNlbGVjdGVkIT0tMSlhPXRoaXMub3B0aW9ucy5z ZWxlY3RlZDtlbHNlIHJldHVybiB0aGlzO3JldHVybiB0aGlzLmFuY2hvcnMuZXEo YSkudHJpZ2dlcih0aGlzLm9wdGlvbnMuZXZlbnQrIi50YWJzIiksdGhpc30sbG9h ZDpmdW5jdGlvbihiKXtiPXRoaXMuX2dldEluZGV4KGIpO3ZhciBjPXRoaXMsZD10 aGlzLm9wdGlvbnMsZT10aGlzLmFuY2hvcnMuZXEoYilbMF0sZj1hLmRhdGEoZSwi bG9hZC50YWJzIik7dGhpcy5hYm9ydCgpO2lmKCFmfHx0aGlzLmVsZW1lbnQucXVl dWUoInRhYnMiKS5sZW5ndGghPT0wJiZhLmRhdGEoZSwiY2FjaGUudGFicyIpKXRo aXMuZWxlbWVudC5kZXF1ZXVlKCJ0YWJzIik7ZWxzZXt0aGlzLmxpcy5lcShiKS5h ZGRDbGFzcygidWktc3RhdGUtcHJvY2Vzc2luZyIpO2lmKGQuc3Bpbm5lcil7dmFy IGc9YSgic3BhbiIsZSk7Zy5kYXRhKCJsYWJlbC50YWJzIixnLmh0bWwoKSkuaHRt bChkLnNwaW5uZXIpfXJldHVybiB0aGlzLnhocj1hLmFqYXgoYS5leHRlbmQoe30s ZC5hamF4T3B0aW9ucyx7dXJsOmYsc3VjY2VzczpmdW5jdGlvbihmLGcpe2EoYy5f c2FuaXRpemVTZWxlY3RvcihlLmhhc2gpKS5odG1sKGYpLGMuX2NsZWFudXAoKSxk LmNhY2hlJiZhLmRhdGEoZSwiY2FjaGUudGFicyIsITApLGMuX3RyaWdnZXIoImxv YWQiLG51bGwsYy5fdWkoYy5hbmNob3JzW2JdLGMucGFuZWxzW2JdKSk7dHJ5e2Qu YWpheE9wdGlvbnMuc3VjY2VzcyhmLGcpfWNhdGNoKGgpe319LGVycm9yOmZ1bmN0 aW9uKGEsZil7Yy5fY2xlYW51cCgpLGMuX3RyaWdnZXIoImxvYWQiLG51bGwsYy5f dWkoYy5hbmNob3JzW2JdLGMucGFuZWxzW2JdKSk7dHJ5e2QuYWpheE9wdGlvbnMu ZXJyb3IoYSxmLGIsZSl9Y2F0Y2goZyl7fX19KSksYy5lbGVtZW50LmRlcXVldWUo InRhYnMiKSx0aGlzfX0sYWJvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVt ZW50LnF1ZXVlKFtdKSx0aGlzLnBhbmVscy5zdG9wKCExLCEwKSx0aGlzLmVsZW1l bnQucXVldWUoInRhYnMiLHRoaXMuZWxlbWVudC5xdWV1ZSgidGFicyIpLnNwbGlj ZSgtMiwyKSksdGhpcy54aHImJih0aGlzLnhoci5hYm9ydCgpLGRlbGV0ZSB0aGlz LnhociksdGhpcy5fY2xlYW51cCgpLHRoaXN9LHVybDpmdW5jdGlvbihhLGIpe3Jl dHVybiB0aGlzLmFuY2hvcnMuZXEoYSkucmVtb3ZlRGF0YSgiY2FjaGUudGFicyIp LmRhdGEoImxvYWQudGFicyIsYiksdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuYW5jaG9ycy5sZW5ndGh9fSksYS5leHRlbmQoYS51aS50YWJzLHt2 ZXJzaW9uOiIxLjguNiJ9KSxhLmV4dGVuZChhLnVpLnRhYnMucHJvdG90eXBlLHty b3RhdGlvbjpudWxsLHJvdGF0ZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD10 aGlzLm9wdGlvbnMsZT1jLl9yb3RhdGV8fChjLl9yb3RhdGU9ZnVuY3Rpb24oYil7 Y2xlYXJUaW1lb3V0KGMucm90YXRpb24pLGMucm90YXRpb249c2V0VGltZW91dChm dW5jdGlvbigpe3ZhciBhPWQuc2VsZWN0ZWQ7Yy5zZWxlY3QoKythPGMuYW5jaG9y cy5sZW5ndGg/YTowKX0sYSksYiYmYi5zdG9wUHJvcGFnYXRpb24oKX0pO3JldHVy biBiPWMuX3Vucm90YXRlfHwoYy5fdW5yb3RhdGU9Yj9mdW5jdGlvbigpe3Q9ZC5z ZWxlY3RlZCxlKCl9OmZ1bmN0aW9uKGEpe2EuY2xpZW50WCYmYy5yb3RhdGUobnVs bCl9KSxhPyh0aGlzLmVsZW1lbnQuYmluZCgidGFic3Nob3ciLGUpLHRoaXMuYW5j aG9ycy5iaW5kKGQuZXZlbnQrIi50YWJzIixiKSxlKCkpOihjbGVhclRpbWVvdXQo Yy5yb3RhdGlvbiksdGhpcy5lbGVtZW50LnVuYmluZCgidGFic3Nob3ciLGUpLHRo aXMuYW5jaG9ycy51bmJpbmQoZC5ldmVudCsiLnRhYnMiLGIpLGRlbGV0ZSB0aGlz Ll9yb3RhdGUsZGVsZXRlIHRoaXMuX3Vucm90YXRlKSx0aGlzfX0pfShqUXVlcnkp LGZ1bmN0aW9uKGQsRyl7ZnVuY3Rpb24gSygpe3RoaXMuZGVidWc9ITEsdGhpcy5f Y3VySW5zdD1udWxsLHRoaXMuX2tleUV2ZW50PSExLHRoaXMuX2Rpc2FibGVkSW5w dXRzPVtdLHRoaXMuX2luRGlhbG9nPXRoaXMuX2RhdGVwaWNrZXJTaG93aW5nPSEx LHRoaXMuX21haW5EaXZJZD0idWktZGF0ZXBpY2tlci1kaXYiLHRoaXMuX2lubGlu ZUNsYXNzPSJ1aS1kYXRlcGlja2VyLWlubGluZSIsdGhpcy5fYXBwZW5kQ2xhc3M9 InVpLWRhdGVwaWNrZXItYXBwZW5kIix0aGlzLl90cmlnZ2VyQ2xhc3M9InVpLWRh dGVwaWNrZXItdHJpZ2dlciIsdGhpcy5fZGlhbG9nQ2xhc3M9InVpLWRhdGVwaWNr ZXItZGlhbG9nIix0aGlzLl9kaXNhYmxlQ2xhc3M9InVpLWRhdGVwaWNrZXItZGlz YWJsZWQiLHRoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzPSJ1aS1kYXRlcGlja2VyLXVu c2VsZWN0YWJsZSIsdGhpcy5fY3VycmVudENsYXNzPSJ1aS1kYXRlcGlja2VyLWN1 cnJlbnQtZGF5Iix0aGlzLl9kYXlPdmVyQ2xhc3M9InVpLWRhdGVwaWNrZXItZGF5 cy1jZWxsLW92ZXIiLHRoaXMucmVnaW9uYWw9W10sdGhpcy5yZWdpb25hbFsiIl09 e2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRUZXh0OiJOZXh0 IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVi cnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1 c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJd LG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIs Ikp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5h bWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRo dXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3Vu IiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNN aW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLHdlZWtIZWFk ZXI6IldrIixkYXRlRm9ybWF0OiJtbS9kZC95eSIsZmlyc3REYXk6MCxpc1JUTDoh MSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0sdGhpcy5fZGVm YXVsdHM9e3Nob3dPbjoiZm9jdXMiLHNob3dBbmltOiJmYWRlSW4iLHNob3dPcHRp b25zOnt9LGRlZmF1bHREYXRlOm51bGwsYXBwZW5kVGV4dDoiIixidXR0b25UZXh0 OiIuLi4iLGJ1dHRvbkltYWdlOiIiLGJ1dHRvbkltYWdlT25seTohMSxoaWRlSWZO b1ByZXZOZXh0OiExLG5hdmlnYXRpb25Bc0RhdGVGb3JtYXQ6ITEsZ290b0N1cnJl bnQ6ITEsY2hhbmdlTW9udGg6ITEsY2hhbmdlWWVhcjohMSx5ZWFyUmFuZ2U6ImMt MTA6YysxMCIsc2hvd090aGVyTW9udGhzOiExLHNlbGVjdE90aGVyTW9udGhzOiEx LHNob3dXZWVrOiExLGNhbGN1bGF0ZVdlZWs6dGhpcy5pc284NjAxV2VlayxzaG9y dFllYXJDdXRvZmY6IisxMCIsbWluRGF0ZTpudWxsLG1heERhdGU6bnVsbCxkdXJh dGlvbjoiZmFzdCIsYmVmb3JlU2hvd0RheTpudWxsLGJlZm9yZVNob3c6bnVsbCxv blNlbGVjdDpudWxsLG9uQ2hhbmdlTW9udGhZZWFyOm51bGwsb25DbG9zZTpudWxs LG51bWJlck9mTW9udGhzOjEsc2hvd0N1cnJlbnRBdFBvczowLHN0ZXBNb250aHM6 MSxzdGVwQmlnTW9udGhzOjEyLGFsdEZpZWxkOiIiLGFsdEZvcm1hdDoiIixjb25z dHJhaW5JbnB1dDohMCxzaG93QnV0dG9uUGFuZWw6ITEsYXV0b1NpemU6ITF9LGQu ZXh0ZW5kKHRoaXMuX2RlZmF1bHRzLHRoaXMucmVnaW9uYWxbIiJdKSx0aGlzLmRw RGl2PWQoJzxkaXYgaWQ9IicrdGhpcy5fbWFpbkRpdklkKyciIGNsYXNzPSJ1aS1k YXRlcGlja2VyIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXIt Y2xlYXJmaXggdWktY29ybmVyLWFsbCB1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2li bGUiPjwvZGl2PicpfWZ1bmN0aW9uIEUoYSxiKXtkLmV4dGVuZChhLGIpO2Zvcih2 YXIgYyBpbiBiKWlmKGJbY109PW51bGx8fGJbY109PUcpYVtjXT1iW2NdO3JldHVy biBhfWQuZXh0ZW5kKGQudWkse2RhdGVwaWNrZXI6e3ZlcnNpb246IjEuOC42In19 KTt2YXIgeT0obmV3IERhdGUpLmdldFRpbWUoKTtkLmV4dGVuZChLLnByb3RvdHlw ZSx7bWFya2VyQ2xhc3NOYW1lOiJoYXNEYXRlcGlja2VyIixsb2c6ZnVuY3Rpb24o KXt0aGlzLmRlYnVnJiZjb25zb2xlLmxvZy5hcHBseSgiIixhcmd1bWVudHMpfSxf d2lkZ2V0RGF0ZXBpY2tlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRwRGl2fSxz ZXREZWZhdWx0czpmdW5jdGlvbihhKXtyZXR1cm4gRSh0aGlzLl9kZWZhdWx0cyxh fHx7fSksdGhpc30sX2F0dGFjaERhdGVwaWNrZXI6ZnVuY3Rpb24oYSxiKXt2YXIg Yz1udWxsO2Zvcih2YXIgZSBpbiB0aGlzLl9kZWZhdWx0cyl7dmFyIGY9YS5nZXRB dHRyaWJ1dGUoImRhdGU6IitlKTtpZihmKXtjPWN8fHt9O3RyeXtjW2VdPWV2YWwo Zil9Y2F0Y2goaCl7Y1tlXT1mfX19ZT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCks Zj1lPT0iZGl2Inx8ZT09InNwYW4iLGEuaWR8fCh0aGlzLnV1aWQrPTEsYS5pZD0i ZHAiK3RoaXMudXVpZCk7dmFyIGk9dGhpcy5fbmV3SW5zdChkKGEpLGYpO2kuc2V0 dGluZ3M9ZC5leHRlbmQoe30sYnx8e30sY3x8e30pLGU9PSJpbnB1dCI/dGhpcy5f Y29ubmVjdERhdGVwaWNrZXIoYSxpKTpmJiZ0aGlzLl9pbmxpbmVEYXRlcGlja2Vy KGEsaSl9LF9uZXdJbnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJue2lkOmFbMF0uaWQu cmVwbGFjZSgvKFteQS1aYS16MC05Xy1dKS9nLCJcXFxcJDEiKSxpbnB1dDphLHNl bGVjdGVkRGF5OjAsc2VsZWN0ZWRNb250aDowLHNlbGVjdGVkWWVhcjowLGRyYXdN b250aDowLGRyYXdZZWFyOjAsaW5saW5lOmIsZHBEaXY6Yj9kKCc8ZGl2IGNsYXNz PSInK3RoaXMuX2lubGluZUNsYXNzKycgdWktZGF0ZXBpY2tlciB1aS13aWRnZXQg dWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci1h bGwiPjwvZGl2PicpOnRoaXMuZHBEaXZ9fSxfY29ubmVjdERhdGVwaWNrZXI6ZnVu Y3Rpb24oYSxiKXt2YXIgYz1kKGEpO2IuYXBwZW5kPWQoW10pLGIudHJpZ2dlcj1k KFtdKSxjLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKXx8KHRoaXMuX2F0 dGFjaG1lbnRzKGMsYiksYy5hZGRDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSku a2V5ZG93bih0aGlzLl9kb0tleURvd24pLmtleXByZXNzKHRoaXMuX2RvS2V5UHJl c3MpLmtleXVwKHRoaXMuX2RvS2V5VXApLmJpbmQoInNldERhdGEuZGF0ZXBpY2tl ciIsZnVuY3Rpb24oYSxjLGQpe2Iuc2V0dGluZ3NbY109ZH0pLmJpbmQoImdldERh dGEuZGF0ZXBpY2tlciIsZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5fZ2V0KGIs Yyl9KSx0aGlzLl9hdXRvU2l6ZShiKSxkLmRhdGEoYSwiZGF0ZXBpY2tlciIsYikp fSxfYXR0YWNobWVudHM6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9nZXQoYiwi YXBwZW5kVGV4dCIpLGU9dGhpcy5fZ2V0KGIsImlzUlRMIik7Yi5hcHBlbmQmJmIu YXBwZW5kLnJlbW92ZSgpLGMmJihiLmFwcGVuZD1kKCc8c3BhbiBjbGFzcz0iJyt0 aGlzLl9hcHBlbmRDbGFzcysnIj4nK2MrIjwvc3Bhbj4iKSxhW2U/ImJlZm9yZSI6 ImFmdGVyIl0oYi5hcHBlbmQpKSxhLnVuYmluZCgiZm9jdXMiLHRoaXMuX3Nob3dE YXRlcGlja2VyKSxiLnRyaWdnZXImJmIudHJpZ2dlci5yZW1vdmUoKSxjPXRoaXMu X2dldChiLCJzaG93T24iKSwoYz09ImZvY3VzInx8Yz09ImJvdGgiKSYmYS5mb2N1 cyh0aGlzLl9zaG93RGF0ZXBpY2tlcik7aWYoYz09ImJ1dHRvbiJ8fGM9PSJib3Ro Iil7Yz10aGlzLl9nZXQoYiwiYnV0dG9uVGV4dCIpO3ZhciBmPXRoaXMuX2dldChi LCJidXR0b25JbWFnZSIpO2IudHJpZ2dlcj1kKHRoaXMuX2dldChiLCJidXR0b25J bWFnZU9ubHkiKT9kKCI8aW1nLz4iKS5hZGRDbGFzcyh0aGlzLl90cmlnZ2VyQ2xh c3MpLmF0dHIoe3NyYzpmLGFsdDpjLHRpdGxlOmN9KTpkKCc8YnV0dG9uIHR5cGU9 ImJ1dHRvbiI+PC9idXR0b24+JykuYWRkQ2xhc3ModGhpcy5fdHJpZ2dlckNsYXNz KS5odG1sKGY9PSIiP2M6ZCgiPGltZy8+IikuYXR0cih7c3JjOmYsYWx0OmMsdGl0 bGU6Y30pKSksYVtlPyJiZWZvcmUiOiJhZnRlciJdKGIudHJpZ2dlciksYi50cmln Z2VyLmNsaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIGQuZGF0ZXBpY2tlci5fZGF0ZXBp Y2tlclNob3dpbmcmJmQuZGF0ZXBpY2tlci5fbGFzdElucHV0PT1hWzBdP2QuZGF0 ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTpkLmRhdGVwaWNrZXIuX3Nob3dEYXRl cGlja2VyKGFbMF0pLCExfSl9fSxfYXV0b1NpemU6ZnVuY3Rpb24oYSl7aWYodGhp cy5fZ2V0KGEsImF1dG9TaXplIikmJiFhLmlubGluZSl7dmFyIGI9bmV3IERhdGUo MjAwOSwxMSwyMCksYz10aGlzLl9nZXQoYSwiZGF0ZUZvcm1hdCIpO2lmKGMubWF0 Y2goL1tETV0vKSl7dmFyIGQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz0wLGQ9 MDtkPGEubGVuZ3RoO2QrKylhW2RdLmxlbmd0aD5iJiYoYj1hW2RdLmxlbmd0aCxj PWQpO3JldHVybiBjfTtiLnNldE1vbnRoKGQodGhpcy5fZ2V0KGEsYy5tYXRjaCgv TU0vKT8ibW9udGhOYW1lcyI6Im1vbnRoTmFtZXNTaG9ydCIpKSksYi5zZXREYXRl KGQodGhpcy5fZ2V0KGEsYy5tYXRjaCgvREQvKT8iZGF5TmFtZXMiOiJkYXlOYW1l c1Nob3J0IikpKzIwLWIuZ2V0RGF5KCkpfWEuaW5wdXQuYXR0cigic2l6ZSIsdGhp cy5fZm9ybWF0RGF0ZShhLGIpLmxlbmd0aCl9fSxfaW5saW5lRGF0ZXBpY2tlcjpm dW5jdGlvbihhLGIpe3ZhciBjPWQoYSk7Yy5oYXNDbGFzcyh0aGlzLm1hcmtlckNs YXNzTmFtZSl8fChjLmFkZENsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS5hcHBl bmQoYi5kcERpdikuYmluZCgic2V0RGF0YS5kYXRlcGlja2VyIixmdW5jdGlvbihh LGMsZCl7Yi5zZXR0aW5nc1tjXT1kfSkuYmluZCgiZ2V0RGF0YS5kYXRlcGlja2Vy IixmdW5jdGlvbihhLGMpe3JldHVybiB0aGlzLl9nZXQoYixjKX0pLGQuZGF0YShh LCJkYXRlcGlja2VyIixiKSx0aGlzLl9zZXREYXRlKGIsdGhpcy5fZ2V0RGVmYXVs dERhdGUoYiksITApLHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIoYiksdGhpcy5fdXBk YXRlQWx0ZXJuYXRlKGIpKX0sX2RpYWxvZ0RhdGVwaWNrZXI6ZnVuY3Rpb24oYSxi LGMsZSxmKXtyZXR1cm4gYT10aGlzLl9kaWFsb2dJbnN0LGF8fCh0aGlzLnV1aWQr PTEsdGhpcy5fZGlhbG9nSW5wdXQ9ZCgnPGlucHV0IHR5cGU9InRleHQiIGlkPSIn KygiZHAiK3RoaXMudXVpZCkrJyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg dG9wOiAtMTAwcHg7IHdpZHRoOiAwcHg7IHotaW5kZXg6IC0xMDsiLz4nKSx0aGlz Ll9kaWFsb2dJbnB1dC5rZXlkb3duKHRoaXMuX2RvS2V5RG93biksZCgiYm9keSIp LmFwcGVuZCh0aGlzLl9kaWFsb2dJbnB1dCksYT10aGlzLl9kaWFsb2dJbnN0PXRo aXMuX25ld0luc3QodGhpcy5fZGlhbG9nSW5wdXQsITEpLGEuc2V0dGluZ3M9e30s ZC5kYXRhKHRoaXMuX2RpYWxvZ0lucHV0WzBdLCJkYXRlcGlja2VyIixhKSksRShh LnNldHRpbmdzLGV8fHt9KSxiPWImJmIuY29uc3RydWN0b3I9PURhdGU/dGhpcy5f Zm9ybWF0RGF0ZShhLGIpOmIsdGhpcy5fZGlhbG9nSW5wdXQudmFsKGIpLHRoaXMu X3Bvcz1mP2YubGVuZ3RoP2Y6W2YucGFnZVgsZi5wYWdlWV06bnVsbCx0aGlzLl9w b3N8fCh0aGlzLl9wb3M9W2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRX aWR0aC8yLTEwMCsoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8 fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCksZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LmNsaWVudEhlaWdodC8yLTE1MCsoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApXSksdGhpcy5fZGlh bG9nSW5wdXQuY3NzKCJsZWZ0Iix0aGlzLl9wb3NbMF0rMjArInB4IikuY3NzKCJ0 b3AiLHRoaXMuX3Bvc1sxXSsicHgiKSxhLnNldHRpbmdzLm9uU2VsZWN0PWMsdGhp cy5faW5EaWFsb2c9ITAsdGhpcy5kcERpdi5hZGRDbGFzcyh0aGlzLl9kaWFsb2dD bGFzcyksdGhpcy5fc2hvd0RhdGVwaWNrZXIodGhpcy5fZGlhbG9nSW5wdXRbMF0p LGQuYmxvY2tVSSYmZC5ibG9ja1VJKHRoaXMuZHBEaXYpLGQuZGF0YSh0aGlzLl9k aWFsb2dJbnB1dFswXSwiZGF0ZXBpY2tlciIsYSksdGhpc30sX2Rlc3Ryb3lEYXRl cGlja2VyOmZ1bmN0aW9uKGEpe3ZhciBiPWQoYSksYz1kLmRhdGEoYSwiZGF0ZXBp Y2tlciIpO2lmKGIuaGFzQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpKXt2YXIg ZT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ZC5yZW1vdmVEYXRhKGEsImRhdGVw aWNrZXIiKSxlPT0iaW5wdXQiPyhjLmFwcGVuZC5yZW1vdmUoKSxjLnRyaWdnZXIu cmVtb3ZlKCksYi5yZW1vdmVDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkudW5i aW5kKCJmb2N1cyIsdGhpcy5fc2hvd0RhdGVwaWNrZXIpLnVuYmluZCgia2V5ZG93 biIsdGhpcy5fZG9LZXlEb3duKS51bmJpbmQoImtleXByZXNzIix0aGlzLl9kb0tl eVByZXNzKS51bmJpbmQoImtleXVwIix0aGlzLl9kb0tleVVwKSk6KGU9PSJkaXYi fHxlPT0ic3BhbiIpJiZiLnJlbW92ZUNsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1l KS5lbXB0eSgpfX0sX2VuYWJsZURhdGVwaWNrZXI6ZnVuY3Rpb24oYSl7dmFyIGI9 ZChhKSxjPWQuZGF0YShhLCJkYXRlcGlja2VyIik7aWYoYi5oYXNDbGFzcyh0aGlz Lm1hcmtlckNsYXNzTmFtZSkpe3ZhciBlPWEubm9kZU5hbWUudG9Mb3dlckNhc2Uo KTtlPT0iaW5wdXQiPyhhLmRpc2FibGVkPSExLGMudHJpZ2dlci5maWx0ZXIoImJ1 dHRvbiIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkPSExfSkuZW5kKCku ZmlsdGVyKCJpbWciKS5jc3Moe29wYWNpdHk6IjEuMCIsY3Vyc29yOiIifSkpOihl PT0iZGl2Inx8ZT09InNwYW4iKSYmYi5jaGlsZHJlbigiLiIrdGhpcy5faW5saW5l Q2xhc3MpLmNoaWxkcmVuKCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVk IiksdGhpcy5fZGlzYWJsZWRJbnB1dHM9ZC5tYXAodGhpcy5fZGlzYWJsZWRJbnB1 dHMsZnVuY3Rpb24oYil7cmV0dXJuIGI9PWE/bnVsbDpifSl9fSxfZGlzYWJsZURh dGVwaWNrZXI6ZnVuY3Rpb24oYSl7dmFyIGI9ZChhKSxjPWQuZGF0YShhLCJkYXRl cGlja2VyIik7aWYoYi5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkpe3Zh ciBlPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtlPT0iaW5wdXQiPyhhLmRpc2Fi bGVkPSEwLGMudHJpZ2dlci5maWx0ZXIoImJ1dHRvbiIpLmVhY2goZnVuY3Rpb24o KXt0aGlzLmRpc2FibGVkPSEwfSkuZW5kKCkuZmlsdGVyKCJpbWciKS5jc3Moe29w YWNpdHk6IjAuNSIsY3Vyc29yOiJkZWZhdWx0In0pKTooZT09ImRpdiJ8fGU9PSJz cGFuIikmJmIuY2hpbGRyZW4oIi4iK3RoaXMuX2lubGluZUNsYXNzKS5jaGlsZHJl bigpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuX2Rpc2FibGVk SW5wdXRzPWQubWFwKHRoaXMuX2Rpc2FibGVkSW5wdXRzLGZ1bmN0aW9uKGIpe3Jl dHVybiBiPT1hP251bGw6Yn0pLHRoaXMuX2Rpc2FibGVkSW5wdXRzW3RoaXMuX2Rp c2FibGVkSW5wdXRzLmxlbmd0aF09YX19LF9pc0Rpc2FibGVkRGF0ZXBpY2tlcjpm dW5jdGlvbihhKXtpZighYSlyZXR1cm4hMTtmb3IodmFyIGI9MDtiPHRoaXMuX2Rp c2FibGVkSW5wdXRzLmxlbmd0aDtiKyspaWYodGhpcy5fZGlzYWJsZWRJbnB1dHNb Yl09PWEpcmV0dXJuITA7cmV0dXJuITF9LF9nZXRJbnN0OmZ1bmN0aW9uKGEpe3Ry eXtyZXR1cm4gZC5kYXRhKGEsImRhdGVwaWNrZXIiKX1jYXRjaChiKXt0aHJvdyJN aXNzaW5nIGluc3RhbmNlIGRhdGEgZm9yIHRoaXMgZGF0ZXBpY2tlciJ9fSxfb3B0 aW9uRGF0ZXBpY2tlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGU9dGhpcy5fZ2V0SW5z dChhKTtpZihhcmd1bWVudHMubGVuZ3RoPT0yJiZ0eXBlb2YgYj09InN0cmluZyIp cmV0dXJuIGI9PSJkZWZhdWx0cyI/ZC5leHRlbmQoe30sZC5kYXRlcGlja2VyLl9k ZWZhdWx0cyk6ZT9iPT0iYWxsIj9kLmV4dGVuZCh7fSxlLnNldHRpbmdzKTp0aGlz Ll9nZXQoZSxiKTpudWxsO3ZhciBmPWJ8fHt9O3R5cGVvZiBiPT0ic3RyaW5nIiYm KGY9e30sZltiXT1jKTtpZihlKXt0aGlzLl9jdXJJbnN0PT1lJiZ0aGlzLl9oaWRl RGF0ZXBpY2tlcigpO3ZhciBnPXRoaXMuX2dldERhdGVEYXRlcGlja2VyKGEsITAp O0UoZS5zZXR0aW5ncyxmKSx0aGlzLl9hdHRhY2htZW50cyhkKGEpLGUpLHRoaXMu X2F1dG9TaXplKGUpLHRoaXMuX3NldERhdGVEYXRlcGlja2VyKGEsZyksdGhpcy5f dXBkYXRlRGF0ZXBpY2tlcihlKX19LF9jaGFuZ2VEYXRlcGlja2VyOmZ1bmN0aW9u KGEsYixjKXt0aGlzLl9vcHRpb25EYXRlcGlja2VyKGEsYixjKX0sX3JlZnJlc2hE YXRlcGlja2VyOmZ1bmN0aW9uKGEpeyhhPXRoaXMuX2dldEluc3QoYSkpJiZ0aGlz Ll91cGRhdGVEYXRlcGlja2VyKGEpfSxfc2V0RGF0ZURhdGVwaWNrZXI6ZnVuY3Rp b24oYSxiKXtpZihhPXRoaXMuX2dldEluc3QoYSkpdGhpcy5fc2V0RGF0ZShhLGIp LHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIoYSksdGhpcy5fdXBkYXRlQWx0ZXJuYXRl KGEpfSxfZ2V0RGF0ZURhdGVwaWNrZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT10 aGlzLl9nZXRJbnN0KGEpKSYmIWEuaW5saW5lJiZ0aGlzLl9zZXREYXRlRnJvbUZp ZWxkKGEsYiksYT90aGlzLl9nZXREYXRlKGEpOm51bGx9LF9kb0tleURvd246ZnVu Y3Rpb24oYSl7dmFyIGI9ZC5kYXRlcGlja2VyLl9nZXRJbnN0KGEudGFyZ2V0KSxj PSEwLGU9Yi5kcERpdi5pcygiLnVpLWRhdGVwaWNrZXItcnRsIik7Yi5fa2V5RXZl bnQ9ITA7aWYoZC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZylzd2l0Y2go YS5rZXlDb2RlKXtjYXNlIDk6ZC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigp LGM9ITE7YnJlYWs7Y2FzZSAxMzpyZXR1cm4gYz1kKCJ0ZC4iK2QuZGF0ZXBpY2tl ci5fZGF5T3ZlckNsYXNzLGIuZHBEaXYpLmFkZChkKCJ0ZC4iK2QuZGF0ZXBpY2tl ci5fY3VycmVudENsYXNzLGIuZHBEaXYpKSxjWzBdP2QuZGF0ZXBpY2tlci5fc2Vs ZWN0RGF5KGEudGFyZ2V0LGIuc2VsZWN0ZWRNb250aCxiLnNlbGVjdGVkWWVhcixj WzBdKTpkLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCksITE7Y2FzZSAyNzpk LmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCk7YnJlYWs7Y2FzZSAzMzpkLmRh dGVwaWNrZXIuX2FkanVzdERhdGUoYS50YXJnZXQsYS5jdHJsS2V5Py1kLmRhdGVw aWNrZXIuX2dldChiLCJzdGVwQmlnTW9udGhzIik6LWQuZGF0ZXBpY2tlci5fZ2V0 KGIsInN0ZXBNb250aHMiKSwiTSIpO2JyZWFrO2Nhc2UgMzQ6ZC5kYXRlcGlja2Vy Ll9hZGp1c3REYXRlKGEudGFyZ2V0LGEuY3RybEtleT8rZC5kYXRlcGlja2VyLl9n ZXQoYiwic3RlcEJpZ01vbnRocyIpOitkLmRhdGVwaWNrZXIuX2dldChiLCJzdGVw TW9udGhzIiksIk0iKTticmVhaztjYXNlIDM1OihhLmN0cmxLZXl8fGEubWV0YUtl eSkmJmQuZGF0ZXBpY2tlci5fY2xlYXJEYXRlKGEudGFyZ2V0KSxjPWEuY3RybEtl eXx8YS5tZXRhS2V5O2JyZWFrO2Nhc2UgMzY6KGEuY3RybEtleXx8YS5tZXRhS2V5 KSYmZC5kYXRlcGlja2VyLl9nb3RvVG9kYXkoYS50YXJnZXQpLGM9YS5jdHJsS2V5 fHxhLm1ldGFLZXk7YnJlYWs7Y2FzZSAzNzooYS5jdHJsS2V5fHxhLm1ldGFLZXkp JiZkLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoYS50YXJnZXQsZT8xOi0xLCJEIiks Yz1hLmN0cmxLZXl8fGEubWV0YUtleSxhLm9yaWdpbmFsRXZlbnQuYWx0S2V5JiZk LmRhdGVwaWNrZXIuX2FkanVzdERhdGUoYS50YXJnZXQsYS5jdHJsS2V5Py1kLmRh dGVwaWNrZXIuX2dldChiLCJzdGVwQmlnTW9udGhzIik6LWQuZGF0ZXBpY2tlci5f Z2V0KGIsInN0ZXBNb250aHMiKSwiTSIpO2JyZWFrO2Nhc2UgMzg6KGEuY3RybEtl eXx8YS5tZXRhS2V5KSYmZC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGEudGFyZ2V0 LC03LCJEIiksYz1hLmN0cmxLZXl8fGEubWV0YUtleTticmVhaztjYXNlIDM5Oihh LmN0cmxLZXl8fGEubWV0YUtleSkmJmQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShh LnRhcmdldCxlPy0xOjEsIkQiKSxjPWEuY3RybEtleXx8YS5tZXRhS2V5LGEub3Jp Z2luYWxFdmVudC5hbHRLZXkmJmQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShhLnRh cmdldCxhLmN0cmxLZXk/K2QuZGF0ZXBpY2tlci5fZ2V0KGIsInN0ZXBCaWdNb250 aHMiKTorZC5kYXRlcGlja2VyLl9nZXQoYiwic3RlcE1vbnRocyIpLCJNIik7YnJl YWs7Y2FzZSA0MDooYS5jdHJsS2V5fHxhLm1ldGFLZXkpJiZkLmRhdGVwaWNrZXIu X2FkanVzdERhdGUoYS50YXJnZXQsNywiRCIpLGM9YS5jdHJsS2V5fHxhLm1ldGFL ZXk7YnJlYWs7ZGVmYXVsdDpjPSExfWVsc2UgYS5rZXlDb2RlPT0zNiYmYS5jdHJs S2V5P2QuZGF0ZXBpY2tlci5fc2hvd0RhdGVwaWNrZXIodGhpcyk6Yz0hMTtjJiYo YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpfSxfZG9LZXlQ cmVzczpmdW5jdGlvbihhKXt2YXIgYj1kLmRhdGVwaWNrZXIuX2dldEluc3QoYS50 YXJnZXQpO2lmKGQuZGF0ZXBpY2tlci5fZ2V0KGIsImNvbnN0cmFpbklucHV0Iikp e2I9ZC5kYXRlcGlja2VyLl9wb3NzaWJsZUNoYXJzKGQuZGF0ZXBpY2tlci5fZ2V0 KGIsImRhdGVGb3JtYXQiKSk7dmFyIGM9U3RyaW5nLmZyb21DaGFyQ29kZShhLmNo YXJDb2RlPT1HP2Eua2V5Q29kZTphLmNoYXJDb2RlKTtyZXR1cm4gYS5jdHJsS2V5 fHxjPCIgInx8IWJ8fGIuaW5kZXhPZihjKT4tMX19LF9kb0tleVVwOmZ1bmN0aW9u KGEpe2E9ZC5kYXRlcGlja2VyLl9nZXRJbnN0KGEudGFyZ2V0KTtpZihhLmlucHV0 LnZhbCgpIT1hLmxhc3RWYWwpdHJ5e2QuZGF0ZXBpY2tlci5wYXJzZURhdGUoZC5k YXRlcGlja2VyLl9nZXQoYSwiZGF0ZUZvcm1hdCIpLGEuaW5wdXQ/YS5pbnB1dC52 YWwoKTpudWxsLGQuZGF0ZXBpY2tlci5fZ2V0Rm9ybWF0Q29uZmlnKGEpKSYmKGQu ZGF0ZXBpY2tlci5fc2V0RGF0ZUZyb21GaWVsZChhKSxkLmRhdGVwaWNrZXIuX3Vw ZGF0ZUFsdGVybmF0ZShhKSxkLmRhdGVwaWNrZXIuX3VwZGF0ZURhdGVwaWNrZXIo YSkpfWNhdGNoKGIpe2QuZGF0ZXBpY2tlci5sb2coYil9cmV0dXJuITB9LF9zaG93 RGF0ZXBpY2tlcjpmdW5jdGlvbihhKXthPWEudGFyZ2V0fHxhLGEubm9kZU5hbWUu dG9Mb3dlckNhc2UoKSE9ImlucHV0IiYmKGE9ZCgiaW5wdXQiLGEucGFyZW50Tm9k ZSlbMF0pO2lmKCFkLmRhdGVwaWNrZXIuX2lzRGlzYWJsZWREYXRlcGlja2VyKGEp JiZkLmRhdGVwaWNrZXIuX2xhc3RJbnB1dCE9YSl7dmFyIGI9ZC5kYXRlcGlja2Vy Ll9nZXRJbnN0KGEpO2QuZGF0ZXBpY2tlci5fY3VySW5zdCYmZC5kYXRlcGlja2Vy Ll9jdXJJbnN0IT1iJiZkLmRhdGVwaWNrZXIuX2N1ckluc3QuZHBEaXYuc3RvcCgh MCwhMCk7dmFyIGM9ZC5kYXRlcGlja2VyLl9nZXQoYiwiYmVmb3JlU2hvdyIpO0Uo Yi5zZXR0aW5ncyxjP2MuYXBwbHkoYSxbYSxiXSk6e30pLGIubGFzdFZhbD1udWxs LGQuZGF0ZXBpY2tlci5fbGFzdElucHV0PWEsZC5kYXRlcGlja2VyLl9zZXREYXRl RnJvbUZpZWxkKGIpLGQuZGF0ZXBpY2tlci5faW5EaWFsb2cmJihhLnZhbHVlPSIi KSxkLmRhdGVwaWNrZXIuX3Bvc3x8KGQuZGF0ZXBpY2tlci5fcG9zPWQuZGF0ZXBp Y2tlci5fZmluZFBvcyhhKSxkLmRhdGVwaWNrZXIuX3Bvc1sxXSs9YS5vZmZzZXRI ZWlnaHQpO3ZhciBlPSExO2QoYSkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXty ZXR1cm4gZXw9ZCh0aGlzKS5jc3MoInBvc2l0aW9uIik9PSJmaXhlZCIsIWV9KSxl JiZkLmJyb3dzZXIub3BlcmEmJihkLmRhdGVwaWNrZXIuX3Bvc1swXS09ZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsZC5kYXRlcGlja2VyLl9wb3Nb MV0tPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApLGM9e2xlZnQ6 ZC5kYXRlcGlja2VyLl9wb3NbMF0sdG9wOmQuZGF0ZXBpY2tlci5fcG9zWzFdfSxk LmRhdGVwaWNrZXIuX3Bvcz1udWxsLGIuZHBEaXYuY3NzKHtwb3NpdGlvbjoiYWJz b2x1dGUiLGRpc3BsYXk6ImJsb2NrIix0b3A6Ii0xMDAwcHgifSksZC5kYXRlcGlj a2VyLl91cGRhdGVEYXRlcGlja2VyKGIpLGM9ZC5kYXRlcGlja2VyLl9jaGVja09m ZnNldChiLGMsZSksYi5kcERpdi5jc3Moe3Bvc2l0aW9uOmQuZGF0ZXBpY2tlci5f aW5EaWFsb2cmJmQuYmxvY2tVST8ic3RhdGljIjplPyJmaXhlZCI6ImFic29sdXRl IixkaXNwbGF5OiJub25lIixsZWZ0OmMubGVmdCsicHgiLHRvcDpjLnRvcCsicHgi fSk7aWYoIWIuaW5saW5lKXtjPWQuZGF0ZXBpY2tlci5fZ2V0KGIsInNob3dBbmlt Iik7dmFyIGY9ZC5kYXRlcGlja2VyLl9nZXQoYiwiZHVyYXRpb24iKSxnPWZ1bmN0 aW9uKCl7ZC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZz0hMDt2YXIgYT1k LmRhdGVwaWNrZXIuX2dldEJvcmRlcnMoYi5kcERpdik7Yi5kcERpdi5maW5kKCJp ZnJhbWUudWktZGF0ZXBpY2tlci1jb3ZlciIpLmNzcyh7bGVmdDotYVswXSx0b3A6 LWFbMV0sd2lkdGg6Yi5kcERpdi5vdXRlcldpZHRoKCksaGVpZ2h0OmIuZHBEaXYu b3V0ZXJIZWlnaHQoKX0pfTtiLmRwRGl2LnpJbmRleChkKGEpLnpJbmRleCgpKzEp LGQuZWZmZWN0cyYmZC5lZmZlY3RzW2NdP2IuZHBEaXYuc2hvdyhjLGQuZGF0ZXBp Y2tlci5fZ2V0KGIsInNob3dPcHRpb25zIiksZixnKTpiLmRwRGl2W2N8fCJzaG93 Il0oYz9mOm51bGwsZyksKCFjfHwhZikmJmcoKSxiLmlucHV0LmlzKCI6dmlzaWJs ZSIpJiYhYi5pbnB1dC5pcygiOmRpc2FibGVkIikmJmIuaW5wdXQuZm9jdXMoKSxk LmRhdGVwaWNrZXIuX2N1ckluc3Q9Yn19fSxfdXBkYXRlRGF0ZXBpY2tlcjpmdW5j dGlvbihhKXt2YXIgYj10aGlzLGM9ZC5kYXRlcGlja2VyLl9nZXRCb3JkZXJzKGEu ZHBEaXYpO2EuZHBEaXYuZW1wdHkoKS5hcHBlbmQodGhpcy5fZ2VuZXJhdGVIVE1M KGEpKS5maW5kKCJpZnJhbWUudWktZGF0ZXBpY2tlci1jb3ZlciIpLmNzcyh7bGVm dDotY1swXSx0b3A6LWNbMV0sd2lkdGg6YS5kcERpdi5vdXRlcldpZHRoKCksaGVp Z2h0OmEuZHBEaXYub3V0ZXJIZWlnaHQoKX0pLmVuZCgpLmZpbmQoImJ1dHRvbiwg LnVpLWRhdGVwaWNrZXItcHJldiwgLnVpLWRhdGVwaWNrZXItbmV4dCwgLnVpLWRh dGVwaWNrZXItY2FsZW5kYXIgdGQgYSIpLmJpbmQoIm1vdXNlb3V0IixmdW5jdGlv bigpe2QodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIiksdGhpcy5j bGFzc05hbWUuaW5kZXhPZigidWktZGF0ZXBpY2tlci1wcmV2IikhPS0xJiZkKHRo aXMpLnJlbW92ZUNsYXNzKCJ1aS1kYXRlcGlja2VyLXByZXYtaG92ZXIiKSx0aGlz LmNsYXNzTmFtZS5pbmRleE9mKCJ1aS1kYXRlcGlja2VyLW5leHQiKSE9LTEmJmQo dGhpcykucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlciIpfSku YmluZCgibW91c2VvdmVyIixmdW5jdGlvbigpe2IuX2lzRGlzYWJsZWREYXRlcGlj a2VyKGEuaW5saW5lP2EuZHBEaXYucGFyZW50KClbMF06YS5pbnB1dFswXSl8fChk KHRoaXMpLnBhcmVudHMoIi51aS1kYXRlcGlja2VyLWNhbGVuZGFyIikuZmluZCgi YSIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLGQodGhpcykuYWRkQ2xh c3MoInVpLXN0YXRlLWhvdmVyIiksdGhpcy5jbGFzc05hbWUuaW5kZXhPZigidWkt ZGF0ZXBpY2tlci1wcmV2IikhPS0xJiZkKHRoaXMpLmFkZENsYXNzKCJ1aS1kYXRl cGlja2VyLXByZXYtaG92ZXIiKSx0aGlzLmNsYXNzTmFtZS5pbmRleE9mKCJ1aS1k YXRlcGlja2VyLW5leHQiKSE9LTEmJmQodGhpcykuYWRkQ2xhc3MoInVpLWRhdGVw aWNrZXItbmV4dC1ob3ZlciIpKX0pLmVuZCgpLmZpbmQoIi4iK3RoaXMuX2RheU92 ZXJDbGFzcysiIGEiKS50cmlnZ2VyKCJtb3VzZW92ZXIiKS5lbmQoKSxjPXRoaXMu X2dldE51bWJlck9mTW9udGhzKGEpO3ZhciBlPWNbMV07ZT4xP2EuZHBEaXYuYWRk Q2xhc3MoInVpLWRhdGVwaWNrZXItbXVsdGktIitlKS5jc3MoIndpZHRoIiwxNypl KyJlbSIpOmEuZHBEaXYucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXItbXVsdGkt MiB1aS1kYXRlcGlja2VyLW11bHRpLTMgdWktZGF0ZXBpY2tlci1tdWx0aS00Iiku d2lkdGgoIiIpLGEuZHBEaXZbKGNbMF0hPTF8fGNbMV0hPTE/ImFkZCI6InJlbW92 ZSIpKyJDbGFzcyJdKCJ1aS1kYXRlcGlja2VyLW11bHRpIiksYS5kcERpdlsodGhp cy5fZ2V0KGEsImlzUlRMIik/ImFkZCI6InJlbW92ZSIpKyJDbGFzcyJdKCJ1aS1k YXRlcGlja2VyLXJ0bCIpLGE9PWQuZGF0ZXBpY2tlci5fY3VySW5zdCYmZC5kYXRl cGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyYmYS5pbnB1dCYmYS5pbnB1dC5pcygi OnZpc2libGUiKSYmIWEuaW5wdXQuaXMoIjpkaXNhYmxlZCIpJiZhLmlucHV0LmZv Y3VzKCl9LF9nZXRCb3JkZXJzOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKGEp e3JldHVybnt0aGluOjEsbWVkaXVtOjIsdGhpY2s6M31bYV18fGF9O3JldHVybltw YXJzZUZsb2F0KGIoYS5jc3MoImJvcmRlci1sZWZ0LXdpZHRoIikpKSxwYXJzZUZs b2F0KGIoYS5jc3MoImJvcmRlci10b3Atd2lkdGgiKSkpXX0sX2NoZWNrT2Zmc2V0 OmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1hLmRwRGl2Lm91dGVyV2lkdGgoKSxmPWEu ZHBEaXYub3V0ZXJIZWlnaHQoKSxnPWEuaW5wdXQ/YS5pbnB1dC5vdXRlcldpZHRo KCk6MCxoPWEuaW5wdXQ/YS5pbnB1dC5vdXRlckhlaWdodCgpOjAsaT1kb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgrZChkb2N1bWVudCkuc2Nyb2xs TGVmdCgpLGo9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCtk KGRvY3VtZW50KS5zY3JvbGxUb3AoKTtyZXR1cm4gYi5sZWZ0LT10aGlzLl9nZXQo YSwiaXNSVEwiKT9lLWc6MCxiLmxlZnQtPWMmJmIubGVmdD09YS5pbnB1dC5vZmZz ZXQoKS5sZWZ0P2QoZG9jdW1lbnQpLnNjcm9sbExlZnQoKTowLGIudG9wLT1jJiZi LnRvcD09YS5pbnB1dC5vZmZzZXQoKS50b3AraD9kKGRvY3VtZW50KS5zY3JvbGxU b3AoKTowLGIubGVmdC09TWF0aC5taW4oYi5sZWZ0LGIubGVmdCtlPmkmJmk+ZT9N YXRoLmFicyhiLmxlZnQrZS1pKTowKSxiLnRvcC09TWF0aC5taW4oYi50b3AsYi50 b3ArZj5qJiZqPmY/TWF0aC5hYnMoZitoKTowKSxifSxfZmluZFBvczpmdW5jdGlv bihhKXtmb3IodmFyIGI9dGhpcy5fZ2V0KHRoaXMuX2dldEluc3QoYSksImlzUlRM Iik7YSYmKGEudHlwZT09ImhpZGRlbiJ8fGEubm9kZVR5cGUhPTEpOylhPWFbYj8i cHJldmlvdXNTaWJsaW5nIjoibmV4dFNpYmxpbmciXTtyZXR1cm4gYT1kKGEpLm9m ZnNldCgpLFthLmxlZnQsYS50b3BdfSxfaGlkZURhdGVwaWNrZXI6ZnVuY3Rpb24o YSl7dmFyIGI9dGhpcy5fY3VySW5zdDtpZighKCFifHxhJiZiIT1kLmRhdGEoYSwi ZGF0ZXBpY2tlciIpKSYmdGhpcy5fZGF0ZXBpY2tlclNob3dpbmcpe2E9dGhpcy5f Z2V0KGIsInNob3dBbmltIik7dmFyIGM9dGhpcy5fZ2V0KGIsImR1cmF0aW9uIiks ZT1mdW5jdGlvbigpe2QuZGF0ZXBpY2tlci5fdGlkeURpYWxvZyhiKSx0aGlzLl9j dXJJbnN0PW51bGx9O2QuZWZmZWN0cyYmZC5lZmZlY3RzW2FdP2IuZHBEaXYuaGlk ZShhLGQuZGF0ZXBpY2tlci5fZ2V0KGIsInNob3dPcHRpb25zIiksYyxlKTpiLmRw RGl2W2E9PSJzbGlkZURvd24iPyJzbGlkZVVwIjphPT0iZmFkZUluIj8iZmFkZU91 dCI6ImhpZGUiXShhP2M6bnVsbCxlKSxhfHxlKCksKGE9dGhpcy5fZ2V0KGIsIm9u Q2xvc2UiKSkmJmEuYXBwbHkoYi5pbnB1dD9iLmlucHV0WzBdOm51bGwsW2IuaW5w dXQ/Yi5pbnB1dC52YWwoKToiIixiXSksdGhpcy5fZGF0ZXBpY2tlclNob3dpbmc9 ITEsdGhpcy5fbGFzdElucHV0PW51bGwsdGhpcy5faW5EaWFsb2cmJih0aGlzLl9k aWFsb2dJbnB1dC5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiMCIsdG9w OiItMTAwcHgifSksZC5ibG9ja1VJJiYoZC51bmJsb2NrVUkoKSxkKCJib2R5Iiku YXBwZW5kKHRoaXMuZHBEaXYpKSksdGhpcy5faW5EaWFsb2c9ITF9fSxfdGlkeURp YWxvZzpmdW5jdGlvbihhKXthLmRwRGl2LnJlbW92ZUNsYXNzKHRoaXMuX2RpYWxv Z0NsYXNzKS51bmJpbmQoIi51aS1kYXRlcGlja2VyLWNhbGVuZGFyIil9LF9jaGVj a0V4dGVybmFsQ2xpY2s6ZnVuY3Rpb24oYSl7ZC5kYXRlcGlja2VyLl9jdXJJbnN0 JiYoYT1kKGEudGFyZ2V0KSxhWzBdLmlkIT1kLmRhdGVwaWNrZXIuX21haW5EaXZJ ZCYmYS5wYXJlbnRzKCIjIitkLmRhdGVwaWNrZXIuX21haW5EaXZJZCkubGVuZ3Ro PT0wJiYhYS5oYXNDbGFzcyhkLmRhdGVwaWNrZXIubWFya2VyQ2xhc3NOYW1lKSYm IWEuaGFzQ2xhc3MoZC5kYXRlcGlja2VyLl90cmlnZ2VyQ2xhc3MpJiZkLmRhdGVw aWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nJiYoIWQuZGF0ZXBpY2tlci5faW5EaWFs b2d8fCFkLmJsb2NrVUkpJiZkLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCkp fSxfYWRqdXN0RGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1kKGEpO3ZhciBlPXRoaXMu X2dldEluc3QoYVswXSk7dGhpcy5faXNEaXNhYmxlZERhdGVwaWNrZXIoYVswXSl8 fCh0aGlzLl9hZGp1c3RJbnN0RGF0ZShlLGIrKGM9PSJNIj90aGlzLl9nZXQoZSwi c2hvd0N1cnJlbnRBdFBvcyIpOjApLGMpLHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIo ZSkpfSxfZ290b1RvZGF5OmZ1bmN0aW9uKGEpe2E9ZChhKTt2YXIgYj10aGlzLl9n ZXRJbnN0KGFbMF0pO2lmKHRoaXMuX2dldChiLCJnb3RvQ3VycmVudCIpJiZiLmN1 cnJlbnREYXkpYi5zZWxlY3RlZERheT1iLmN1cnJlbnREYXksYi5kcmF3TW9udGg9 Yi5zZWxlY3RlZE1vbnRoPWIuY3VycmVudE1vbnRoLGIuZHJhd1llYXI9Yi5zZWxl Y3RlZFllYXI9Yi5jdXJyZW50WWVhcjtlbHNle3ZhciBjPW5ldyBEYXRlO2Iuc2Vs ZWN0ZWREYXk9Yy5nZXREYXRlKCksYi5kcmF3TW9udGg9Yi5zZWxlY3RlZE1vbnRo PWMuZ2V0TW9udGgoKSxiLmRyYXdZZWFyPWIuc2VsZWN0ZWRZZWFyPWMuZ2V0RnVs bFllYXIoKX10aGlzLl9ub3RpZnlDaGFuZ2UoYiksdGhpcy5fYWRqdXN0RGF0ZShh KX0sX3NlbGVjdE1vbnRoWWVhcjpmdW5jdGlvbihhLGIsYyl7YT1kKGEpO3ZhciBl PXRoaXMuX2dldEluc3QoYVswXSk7ZS5fc2VsZWN0aW5nTW9udGhZZWFyPSExLGVb InNlbGVjdGVkIisoYz09Ik0iPyJNb250aCI6IlllYXIiKV09ZVsiZHJhdyIrKGM9 PSJNIj8iTW9udGgiOiJZZWFyIildPXBhcnNlSW50KGIub3B0aW9uc1tiLnNlbGVj dGVkSW5kZXhdLnZhbHVlLDEwKSx0aGlzLl9ub3RpZnlDaGFuZ2UoZSksdGhpcy5f YWRqdXN0RGF0ZShhKX0sX2NsaWNrTW9udGhZZWFyOmZ1bmN0aW9uKGEpe3ZhciBi PXRoaXMuX2dldEluc3QoZChhKVswXSk7Yi5pbnB1dCYmYi5fc2VsZWN0aW5nTW9u dGhZZWFyJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5pbnB1dC5mb2N1cygpfSww KSxiLl9zZWxlY3RpbmdNb250aFllYXI9IWIuX3NlbGVjdGluZ01vbnRoWWVhcn0s X3NlbGVjdERheTpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1kKGEpOyFkKGUpLmhh c0NsYXNzKHRoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzKSYmIXRoaXMuX2lzRGlzYWJs ZWREYXRlcGlja2VyKGZbMF0pJiYoZj10aGlzLl9nZXRJbnN0KGZbMF0pLGYuc2Vs ZWN0ZWREYXk9Zi5jdXJyZW50RGF5PWQoImEiLGUpLmh0bWwoKSxmLnNlbGVjdGVk TW9udGg9Zi5jdXJyZW50TW9udGg9YixmLnNlbGVjdGVkWWVhcj1mLmN1cnJlbnRZ ZWFyPWMsdGhpcy5fc2VsZWN0RGF0ZShhLHRoaXMuX2Zvcm1hdERhdGUoZixmLmN1 cnJlbnREYXksZi5jdXJyZW50TW9udGgsZi5jdXJyZW50WWVhcikpKX0sX2NsZWFy RGF0ZTpmdW5jdGlvbihhKXthPWQoYSksdGhpcy5fZ2V0SW5zdChhWzBdKSx0aGlz Ll9zZWxlY3REYXRlKGEsIiIpfSxfc2VsZWN0RGF0ZTpmdW5jdGlvbihhLGIpe2E9 dGhpcy5fZ2V0SW5zdChkKGEpWzBdKSxiPWIhPW51bGw/Yjp0aGlzLl9mb3JtYXRE YXRlKGEpLGEuaW5wdXQmJmEuaW5wdXQudmFsKGIpLHRoaXMuX3VwZGF0ZUFsdGVy bmF0ZShhKTt2YXIgYz10aGlzLl9nZXQoYSwib25TZWxlY3QiKTtjP2MuYXBwbHko YS5pbnB1dD9hLmlucHV0WzBdOm51bGwsW2IsYV0pOmEuaW5wdXQmJmEuaW5wdXQu dHJpZ2dlcigiY2hhbmdlIiksYS5pbmxpbmU/dGhpcy5fdXBkYXRlRGF0ZXBpY2tl cihhKToodGhpcy5faGlkZURhdGVwaWNrZXIoKSx0aGlzLl9sYXN0SW5wdXQ9YS5p bnB1dFswXSx0eXBlb2YgYS5pbnB1dFswXSE9Im9iamVjdCImJmEuaW5wdXQuZm9j dXMoKSx0aGlzLl9sYXN0SW5wdXQ9bnVsbCl9LF91cGRhdGVBbHRlcm5hdGU6ZnVu Y3Rpb24oYSl7dmFyIGI9dGhpcy5fZ2V0KGEsImFsdEZpZWxkIik7aWYoYil7dmFy IGM9dGhpcy5fZ2V0KGEsImFsdEZvcm1hdCIpfHx0aGlzLl9nZXQoYSwiZGF0ZUZv cm1hdCIpLGU9dGhpcy5fZ2V0RGF0ZShhKSxmPXRoaXMuZm9ybWF0RGF0ZShjLGUs dGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGEpKTtkKGIpLmVhY2goZnVuY3Rpb24oKXtk KHRoaXMpLnZhbChmKX0pfX0sbm9XZWVrZW5kczpmdW5jdGlvbihhKXtyZXR1cm4g YT1hLmdldERheSgpLFthPjAmJmE8NiwiIl19LGlzbzg2MDFXZWVrOmZ1bmN0aW9u KGEpe2E9bmV3IERhdGUoYS5nZXRUaW1lKCkpLGEuc2V0RGF0ZShhLmdldERhdGUo KSs0LShhLmdldERheSgpfHw3KSk7dmFyIGI9YS5nZXRUaW1lKCk7cmV0dXJuIGEu c2V0TW9udGgoMCksYS5zZXREYXRlKDEpLE1hdGguZmxvb3IoTWF0aC5yb3VuZCgo Yi1hKS84NjRlNSkvNykrMX0scGFyc2VEYXRlOmZ1bmN0aW9uKGEsYixjKXtpZihh PT1udWxsfHxiPT1udWxsKXRocm93IkludmFsaWQgYXJndW1lbnRzIjtiPXR5cGVv ZiBiPT0ib2JqZWN0Ij9iLnRvU3RyaW5nKCk6YisiIjtpZihiPT0iIilyZXR1cm4g bnVsbDtmb3IodmFyIGQ9KGM/Yy5zaG9ydFllYXJDdXRvZmY6bnVsbCl8fHRoaXMu X2RlZmF1bHRzLnNob3J0WWVhckN1dG9mZixlPShjP2MuZGF5TmFtZXNTaG9ydDpu dWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXNTaG9ydCxmPShjP2MuZGF5TmFt ZXM6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLmRheU5hbWVzLGc9KGM/Yy5tb250aE5h bWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXNTaG9ydCxo PShjP2MubW9udGhOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMubW9udGhOYW1l cyxpPWM9LTEsaj0tMSxrPS0xLGw9ITEsbT1mdW5jdGlvbihiKXtyZXR1cm4oYj1y KzE8YS5sZW5ndGgmJmEuY2hhckF0KHIrMSk9PWIpJiZyKyssYn0sbj1mdW5jdGlv bihhKXttKGEpLGE9bmV3IFJlZ0V4cCgiXlxcZHsxLCIrKGE9PSJAIj8xNDphPT0i ISI/MjA6YT09InkiPzQ6YT09Im8iPzM6MikrIn0iKSxhPWIuc3Vic3RyaW5nKHEp Lm1hdGNoKGEpO2lmKCFhKXRocm93Ik1pc3NpbmcgbnVtYmVyIGF0IHBvc2l0aW9u ICIrcTtyZXR1cm4gcSs9YVswXS5sZW5ndGgscGFyc2VJbnQoYVswXSwxMCl9LG89 ZnVuY3Rpb24oYSxjLGQpe2E9bShhKT9kOmM7Zm9yKGM9MDtjPGEubGVuZ3RoO2Mr KylpZihiLnN1YnN0cihxLGFbY10ubGVuZ3RoKS50b0xvd2VyQ2FzZSgpPT1hW2Nd LnRvTG93ZXJDYXNlKCkpcmV0dXJuIHErPWFbY10ubGVuZ3RoLGMrMTt0aHJvdyJV bmtub3duIG5hbWUgYXQgcG9zaXRpb24gIitxfSxwPWZ1bmN0aW9uKCl7aWYoYi5j aGFyQXQocSkhPWEuY2hhckF0KHIpKXRocm93IlVuZXhwZWN0ZWQgbGl0ZXJhbCBh dCBwb3NpdGlvbiAiK3E7cSsrfSxxPTAscj0wO3I8YS5sZW5ndGg7cisrKWlmKGwp YS5jaGFyQXQocik9PSInIiYmIW0oIiciKT9sPSExOnAoKTtlbHNlIHN3aXRjaChh LmNoYXJBdChyKSl7Y2FzZSJkIjpqPW4oImQiKTticmVhaztjYXNlIkQiOm8oIkQi LGUsZik7YnJlYWs7Y2FzZSJvIjprPW4oIm8iKTticmVhaztjYXNlIm0iOmk9bigi bSIpO2JyZWFrO2Nhc2UiTSI6aT1vKCJNIixnLGgpO2JyZWFrO2Nhc2UieSI6Yz1u KCJ5Iik7YnJlYWs7Y2FzZSJAIjp2YXIgcz1uZXcgRGF0ZShuKCJAIikpO2M9cy5n ZXRGdWxsWWVhcigpLGk9cy5nZXRNb250aCgpKzEsaj1zLmdldERhdGUoKTticmVh aztjYXNlIiEiOnM9bmV3IERhdGUoKG4oIiEiKS10aGlzLl90aWNrc1RvMTk3MCkv MWU0KSxjPXMuZ2V0RnVsbFllYXIoKSxpPXMuZ2V0TW9udGgoKSsxLGo9cy5nZXRE YXRlKCk7YnJlYWs7Y2FzZSInIjptKCInIik/cCgpOmw9ITA7YnJlYWs7ZGVmYXVs dDpwKCl9Yz09LTE/Yz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk6YzwxMDAmJihj Kz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCktKG5ldyBEYXRlKS5nZXRGdWxsWWVh cigpJTEwMCsoYzw9ZD8wOi0xMDApKTtpZihrPi0xKXtpPTEsaj1rO2Rve2Q9dGhp cy5fZ2V0RGF5c0luTW9udGgoYyxpLTEpO2lmKGo8PWQpYnJlYWs7aSsrLGotPWR9 d2hpbGUoMSl9cz10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShj LGktMSxqKSk7aWYocy5nZXRGdWxsWWVhcigpIT1jfHxzLmdldE1vbnRoKCkrMSE9 aXx8cy5nZXREYXRlKCkhPWopdGhyb3ciSW52YWxpZCBkYXRlIjtyZXR1cm4gc30s QVRPTToieXktbW0tZGQiLENPT0tJRToiRCwgZGQgTSB5eSIsSVNPXzg2MDE6Inl5 LW1tLWRkIixSRkNfODIyOiJELCBkIE0geSIsUkZDXzg1MDoiREQsIGRkLU0teSIs UkZDXzEwMzY6IkQsIGQgTSB5IixSRkNfMTEyMzoiRCwgZCBNIHl5IixSRkNfMjgy MjoiRCwgZCBNIHl5IixSU1M6IkQsIGQgTSB5IixUSUNLUzoiISIsVElNRVNUQU1Q OiJAIixXM0M6Inl5LW1tLWRkIixfdGlja3NUbzE5NzA6KDcxODY4NStNYXRoLmZs b29yKDQ5Mi41KS1NYXRoLmZsb29yKDE5LjcpK01hdGguZmxvb3IoNC45MjUpKSoy NCo2MCo2MCoxZTcsZm9ybWF0RGF0ZTpmdW5jdGlvbihhLGIsYyl7aWYoIWIpcmV0 dXJuIiI7dmFyIGQ9KGM/Yy5kYXlOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZh dWx0cy5kYXlOYW1lc1Nob3J0LGU9KGM/Yy5kYXlOYW1lczpudWxsKXx8dGhpcy5f ZGVmYXVsdHMuZGF5TmFtZXMsZj0oYz9jLm1vbnRoTmFtZXNTaG9ydDpudWxsKXx8 dGhpcy5fZGVmYXVsdHMubW9udGhOYW1lc1Nob3J0O2M9KGM/Yy5tb250aE5hbWVz Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzO3ZhciBnPWZ1bmN0aW9u KGIpe3JldHVybihiPWwrMTxhLmxlbmd0aCYmYS5jaGFyQXQobCsxKT09YikmJmwr KyxifSxoPWZ1bmN0aW9uKGEsYixjKXtiPSIiK2I7aWYoZyhhKSlmb3IoO2IubGVu Z3RoPGM7KWI9IjAiK2I7cmV0dXJuIGJ9LGk9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0 dXJuIGcoYSk/ZFtiXTpjW2JdfSxqPSIiLGs9ITE7aWYoYilmb3IodmFyIGw9MDts PGEubGVuZ3RoO2wrKylpZihrKWEuY2hhckF0KGwpPT0iJyImJiFnKCInIik/az0h MTpqKz1hLmNoYXJBdChsKTtlbHNlIHN3aXRjaChhLmNoYXJBdChsKSl7Y2FzZSJk IjpqKz1oKCJkIixiLmdldERhdGUoKSwyKTticmVhaztjYXNlIkQiOmorPWkoIkQi LGIuZ2V0RGF5KCksZCxlKTticmVhaztjYXNlIm8iOmorPWgoIm8iLChiLmdldFRp bWUoKS0obmV3IERhdGUoYi5nZXRGdWxsWWVhcigpLDAsMCkpLmdldFRpbWUoKSkv ODY0ZTUsMyk7YnJlYWs7Y2FzZSJtIjpqKz1oKCJtIixiLmdldE1vbnRoKCkrMSwy KTticmVhaztjYXNlIk0iOmorPWkoIk0iLGIuZ2V0TW9udGgoKSxmLGMpO2JyZWFr O2Nhc2UieSI6ais9ZygieSIpP2IuZ2V0RnVsbFllYXIoKTooYi5nZXRZZWFyKCkl MTAwPDEwPyIwIjoiIikrYi5nZXRZZWFyKCklMTAwO2JyZWFrO2Nhc2UiQCI6ais9 Yi5nZXRUaW1lKCk7YnJlYWs7Y2FzZSIhIjpqKz1iLmdldFRpbWUoKSoxZTQrdGhp cy5fdGlja3NUbzE5NzA7YnJlYWs7Y2FzZSInIjpnKCInIik/ais9IiciOms9ITA7 YnJlYWs7ZGVmYXVsdDpqKz1hLmNoYXJBdChsKX1yZXR1cm4gan0sX3Bvc3NpYmxl Q2hhcnM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9ITEsZD1mdW5jdGlvbihi KXtyZXR1cm4oYj1lKzE8YS5sZW5ndGgmJmEuY2hhckF0KGUrMSk9PWIpJiZlKyss Yn0sZT0wO2U8YS5sZW5ndGg7ZSsrKWlmKGMpYS5jaGFyQXQoZSk9PSInIiYmIWQo IiciKT9jPSExOmIrPWEuY2hhckF0KGUpO2Vsc2Ugc3dpdGNoKGEuY2hhckF0KGUp KXtjYXNlImQiOmNhc2UibSI6Y2FzZSJ5IjpjYXNlIkAiOmIrPSIwMTIzNDU2Nzg5 IjticmVhaztjYXNlIkQiOmNhc2UiTSI6cmV0dXJuIG51bGw7Y2FzZSInIjpkKCIn Iik/Yis9IiciOmM9ITA7YnJlYWs7ZGVmYXVsdDpiKz1hLmNoYXJBdChlKX1yZXR1 cm4gYn0sX2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnNldHRpbmdzW2JdIT09 Rz9hLnNldHRpbmdzW2JdOnRoaXMuX2RlZmF1bHRzW2JdfSxfc2V0RGF0ZUZyb21G aWVsZDpmdW5jdGlvbihhLGIpe2lmKGEuaW5wdXQudmFsKCkhPWEubGFzdFZhbCl7 dmFyIGM9dGhpcy5fZ2V0KGEsImRhdGVGb3JtYXQiKSxkPWEubGFzdFZhbD1hLmlu cHV0P2EuaW5wdXQudmFsKCk6bnVsbCxlLGY7ZT1mPXRoaXMuX2dldERlZmF1bHRE YXRlKGEpO3ZhciBnPXRoaXMuX2dldEZvcm1hdENvbmZpZyhhKTt0cnl7ZT10aGlz LnBhcnNlRGF0ZShjLGQsZyl8fGZ9Y2F0Y2goaCl7dGhpcy5sb2coaCksZD1iPyIi OmR9YS5zZWxlY3RlZERheT1lLmdldERhdGUoKSxhLmRyYXdNb250aD1hLnNlbGVj dGVkTW9udGg9ZS5nZXRNb250aCgpLGEuZHJhd1llYXI9YS5zZWxlY3RlZFllYXI9 ZS5nZXRGdWxsWWVhcigpLGEuY3VycmVudERheT1kP2UuZ2V0RGF0ZSgpOjAsYS5j dXJyZW50TW9udGg9ZD9lLmdldE1vbnRoKCk6MCxhLmN1cnJlbnRZZWFyPWQ/ZS5n ZXRGdWxsWWVhcigpOjAsdGhpcy5fYWRqdXN0SW5zdERhdGUoYSl9fSxfZ2V0RGVm YXVsdERhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3Jlc3RyaWN0TWluTWF4 KGEsdGhpcy5fZGV0ZXJtaW5lRGF0ZShhLHRoaXMuX2dldChhLCJkZWZhdWx0RGF0 ZSIpLG5ldyBEYXRlKSl9LF9kZXRlcm1pbmVEYXRlOmZ1bmN0aW9uKGEsYixjKXt2 YXIgZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgRGF0ZTtyZXR1cm4gYi5zZXREYXRl KGIuZ2V0RGF0ZSgpK2EpLGJ9LGY9ZnVuY3Rpb24oYil7dHJ5e3JldHVybiBkLmRh dGVwaWNrZXIucGFyc2VEYXRlKGQuZGF0ZXBpY2tlci5fZ2V0KGEsImRhdGVGb3Jt YXQiKSxiLGQuZGF0ZXBpY2tlci5fZ2V0Rm9ybWF0Q29uZmlnKGEpKX1jYXRjaChj KXt9dmFyIGU9KGIudG9Mb3dlckNhc2UoKS5tYXRjaCgvXmMvKT9kLmRhdGVwaWNr ZXIuX2dldERhdGUoYSk6bnVsbCl8fG5ldyBEYXRlLGY9ZS5nZXRGdWxsWWVhcigp LGc9ZS5nZXRNb250aCgpO2U9ZS5nZXREYXRlKCk7Zm9yKHZhciBoPS8oWystXT9b MC05XSspXHMqKGR8RHx3fFd8bXxNfHl8WSk/L2csaT1oLmV4ZWMoYik7aTspe3N3 aXRjaChpWzJdfHwiZCIpe2Nhc2UiZCI6Y2FzZSJEIjplKz1wYXJzZUludChpWzFd LDEwKTticmVhaztjYXNlInciOmNhc2UiVyI6ZSs9cGFyc2VJbnQoaVsxXSwxMCkq NzticmVhaztjYXNlIm0iOmNhc2UiTSI6Zys9cGFyc2VJbnQoaVsxXSwxMCksZT1N YXRoLm1pbihlLGQuZGF0ZXBpY2tlci5fZ2V0RGF5c0luTW9udGgoZixnKSk7YnJl YWs7Y2FzZSJ5IjpjYXNlIlkiOmYrPXBhcnNlSW50KGlbMV0sMTApLGU9TWF0aC5t aW4oZSxkLmRhdGVwaWNrZXIuX2dldERheXNJbk1vbnRoKGYsZykpfWk9aC5leGVj KGIpfXJldHVybiBuZXcgRGF0ZShmLGcsZSl9O2lmKGI9KGI9Yj09bnVsbD9jOnR5 cGVvZiBiPT0ic3RyaW5nIj9mKGIpOnR5cGVvZiBiPT0ibnVtYmVyIj9pc05hTihi KT9jOmUoYik6YikmJmIudG9TdHJpbmcoKT09IkludmFsaWQgRGF0ZSI/YzpiKWIu c2V0SG91cnMoMCksYi5zZXRNaW51dGVzKDApLGIuc2V0U2Vjb25kcygwKSxiLnNl dE1pbGxpc2Vjb25kcygwKTtyZXR1cm4gdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1 c3QoYil9LF9kYXlsaWdodFNhdmluZ0FkanVzdDpmdW5jdGlvbihhKXtyZXR1cm4g YT8oYS5zZXRIb3VycyhhLmdldEhvdXJzKCk+MTI/YS5nZXRIb3VycygpKzI6MCks YSk6bnVsbH0sX3NldERhdGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSFiLGU9YS5z ZWxlY3RlZE1vbnRoLGY9YS5zZWxlY3RlZFllYXI7Yj10aGlzLl9yZXN0cmljdE1p bk1heChhLHRoaXMuX2RldGVybWluZURhdGUoYSxiLG5ldyBEYXRlKSksYS5zZWxl Y3RlZERheT1hLmN1cnJlbnREYXk9Yi5nZXREYXRlKCksYS5kcmF3TW9udGg9YS5z ZWxlY3RlZE1vbnRoPWEuY3VycmVudE1vbnRoPWIuZ2V0TW9udGgoKSxhLmRyYXdZ ZWFyPWEuc2VsZWN0ZWRZZWFyPWEuY3VycmVudFllYXI9Yi5nZXRGdWxsWWVhcigp LChlIT1hLnNlbGVjdGVkTW9udGh8fGYhPWEuc2VsZWN0ZWRZZWFyKSYmIWMmJnRo aXMuX25vdGlmeUNoYW5nZShhKSx0aGlzLl9hZGp1c3RJbnN0RGF0ZShhKSxhLmlu cHV0JiZhLmlucHV0LnZhbChkPyIiOnRoaXMuX2Zvcm1hdERhdGUoYSkpfSxfZ2V0 RGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4hYS5jdXJyZW50WWVhcnx8YS5pbnB1dCYm YS5pbnB1dC52YWwoKT09IiI/bnVsbDp0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVz dChuZXcgRGF0ZShhLmN1cnJlbnRZZWFyLGEuY3VycmVudE1vbnRoLGEuY3VycmVu dERheSkpfSxfZ2VuZXJhdGVIVE1MOmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBEYXRl O2I9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoYi5nZXRGdWxs WWVhcigpLGIuZ2V0TW9udGgoKSxiLmdldERhdGUoKSkpO3ZhciBjPXRoaXMuX2dl dChhLCJpc1JUTCIpLGU9dGhpcy5fZ2V0KGEsInNob3dCdXR0b25QYW5lbCIpLGY9 dGhpcy5fZ2V0KGEsImhpZGVJZk5vUHJldk5leHQiKSxnPXRoaXMuX2dldChhLCJu YXZpZ2F0aW9uQXNEYXRlRm9ybWF0IiksaD10aGlzLl9nZXROdW1iZXJPZk1vbnRo cyhhKSxpPXRoaXMuX2dldChhLCJzaG93Q3VycmVudEF0UG9zIiksaj10aGlzLl9n ZXQoYSwic3RlcE1vbnRocyIpLGs9aFswXSE9MXx8aFsxXSE9MSxsPXRoaXMuX2Rh eWxpZ2h0U2F2aW5nQWRqdXN0KGEuY3VycmVudERheT9uZXcgRGF0ZShhLmN1cnJl bnRZZWFyLGEuY3VycmVudE1vbnRoLGEuY3VycmVudERheSk6bmV3IERhdGUoOTk5 OSw5LDkpKSxtPXRoaXMuX2dldE1pbk1heERhdGUoYSwibWluIiksbj10aGlzLl9n ZXRNaW5NYXhEYXRlKGEsIm1heCIpO2k9YS5kcmF3TW9udGgtaTt2YXIgbz1hLmRy YXdZZWFyO2k8MCYmKGkrPTEyLG8tLSk7aWYobil7dmFyIHA9dGhpcy5fZGF5bGln aHRTYXZpbmdBZGp1c3QobmV3IERhdGUobi5nZXRGdWxsWWVhcigpLG4uZ2V0TW9u dGgoKS1oWzBdKmhbMV0rMSxuLmdldERhdGUoKSkpO2ZvcihwPW0mJnA8bT9tOnA7 dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUobyxpLDEpKT5wOylp LS0saTwwJiYoaT0xMSxvLS0pfWEuZHJhd01vbnRoPWksYS5kcmF3WWVhcj1vLHA9 dGhpcy5fZ2V0KGEsInByZXZUZXh0IikscD1nP3RoaXMuZm9ybWF0RGF0ZShwLHRo aXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKG8saS1qLDEpKSx0aGlz Ll9nZXRGb3JtYXRDb25maWcoYSkpOnAscD10aGlzLl9jYW5BZGp1c3RNb250aChh LC0xLG8saSk/JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXByZXYgdWktY29ybmVy LWFsbCIgb25jbGljaz0iRFBfalF1ZXJ5XycreSsiLmRhdGVwaWNrZXIuX2FkanVz dERhdGUoJyMiK2EuaWQrIicsIC0iK2orIiwgJ00nKTtcIiB0aXRsZT1cIiIrcCsn Ij48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0n KyhjPyJlIjoidyIpKyciPicrcCsiPC9zcGFuPjwvYT4iOmY/IiI6JzxhIGNsYXNz PSJ1aS1kYXRlcGlja2VyLXByZXYgdWktY29ybmVyLWFsbCB1aS1zdGF0ZS1kaXNh YmxlZCIgdGl0bGU9IicrcCsnIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29u LWNpcmNsZS10cmlhbmdsZS0nKyhjPyJlIjoidyIpKyciPicrcCsiPC9zcGFuPjwv YT4iO3ZhciBxPXRoaXMuX2dldChhLCJuZXh0VGV4dCIpO3E9Zz90aGlzLmZvcm1h dERhdGUocSx0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShvLGkr aiwxKSksdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGEpKTpxLGY9dGhpcy5fY2FuQWRq dXN0TW9udGgoYSwxLG8saSk/JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLW5leHQg dWktY29ybmVyLWFsbCIgb25jbGljaz0iRFBfalF1ZXJ5XycreSsiLmRhdGVwaWNr ZXIuX2FkanVzdERhdGUoJyMiK2EuaWQrIicsICsiK2orIiwgJ00nKTtcIiB0aXRs ZT1cIiIrcSsnIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10 cmlhbmdsZS0nKyhjPyJ3IjoiZSIpKyciPicrcSsiPC9zcGFuPjwvYT4iOmY/IiI6 JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLW5leHQgdWktY29ybmVyLWFsbCB1aS1z dGF0ZS1kaXNhYmxlZCIgdGl0bGU9IicrcSsnIj48c3BhbiBjbGFzcz0idWktaWNv biB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0nKyhjPyJ3IjoiZSIpKyciPicrcSsi PC9zcGFuPjwvYT4iLGo9dGhpcy5fZ2V0KGEsImN1cnJlbnRUZXh0IikscT10aGlz Ll9nZXQoYSwiZ290b0N1cnJlbnQiKSYmYS5jdXJyZW50RGF5P2w6YixqPWc/dGhp cy5mb3JtYXREYXRlKGoscSx0aGlzLl9nZXRGb3JtYXRDb25maWcoYSkpOmosZz1h LmlubGluZT8iIjonPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ1aS1kYXRl cGlja2VyLWNsb3NlIHVpLXN0YXRlLWRlZmF1bHQgdWktcHJpb3JpdHktcHJpbWFy eSB1aS1jb3JuZXItYWxsIiBvbmNsaWNrPSJEUF9qUXVlcnlfJyt5KycuZGF0ZXBp Y2tlci5faGlkZURhdGVwaWNrZXIoKTsiPicrdGhpcy5fZ2V0KGEsImNsb3NlVGV4 dCIpKyI8L2J1dHRvbj4iLGU9ZT8nPGRpdiBjbGFzcz0idWktZGF0ZXBpY2tlci1i dXR0b25wYW5lIHVpLXdpZGdldC1jb250ZW50Ij4nKyhjP2c6IiIpKyh0aGlzLl9p c0luUmFuZ2UoYSxxKT8nPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ1aS1k YXRlcGlja2VyLWN1cnJlbnQgdWktc3RhdGUtZGVmYXVsdCB1aS1wcmlvcml0eS1z ZWNvbmRhcnkgdWktY29ybmVyLWFsbCIgb25jbGljaz0iRFBfalF1ZXJ5XycreSsi LmRhdGVwaWNrZXIuX2dvdG9Ub2RheSgnIyIrYS5pZCsiJyk7XCI+IitqKyI8L2J1 dHRvbj4iOiIiKSsoYz8iIjpnKSsiPC9kaXY+IjoiIixnPXBhcnNlSW50KHRoaXMu X2dldChhLCJmaXJzdERheSIpLDEwKSxnPWlzTmFOKGcpPzA6ZyxqPXRoaXMuX2dl dChhLCJzaG93V2VlayIpLHE9dGhpcy5fZ2V0KGEsImRheU5hbWVzIiksdGhpcy5f Z2V0KGEsImRheU5hbWVzU2hvcnQiKTt2YXIgcj10aGlzLl9nZXQoYSwiZGF5TmFt ZXNNaW4iKSxzPXRoaXMuX2dldChhLCJtb250aE5hbWVzIiksdD10aGlzLl9nZXQo YSwibW9udGhOYW1lc1Nob3J0IiksdT10aGlzLl9nZXQoYSwiYmVmb3JlU2hvd0Rh eSIpLHY9dGhpcy5fZ2V0KGEsInNob3dPdGhlck1vbnRocyIpLHc9dGhpcy5fZ2V0 KGEsInNlbGVjdE90aGVyTW9udGhzIik7dGhpcy5fZ2V0KGEsImNhbGN1bGF0ZVdl ZWsiKTtmb3IodmFyIHg9dGhpcy5fZ2V0RGVmYXVsdERhdGUoYSksej0iIixBPTA7 QTxoWzBdO0ErKyl7Zm9yKHZhciBCPSIiLEM9MDtDPGhbMV07QysrKXt2YXIgRD10 aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShvLGksYS5zZWxlY3Rl ZERheSkpLEU9IiB1aS1jb3JuZXItYWxsIixGPSIiO2lmKGspe0YrPSc8ZGl2IGNs YXNzPSJ1aS1kYXRlcGlja2VyLWdyb3VwJztpZihoWzFdPjEpc3dpdGNoKEMpe2Nh c2UgMDpGKz0iIHVpLWRhdGVwaWNrZXItZ3JvdXAtZmlyc3QiLEU9IiB1aS1jb3Ju ZXItIisoYz8icmlnaHQiOiJsZWZ0Iik7YnJlYWs7Y2FzZSBoWzFdLTE6Ris9IiB1 aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QiLEU9IiB1aS1jb3JuZXItIisoYz8ibGVm dCI6InJpZ2h0Iik7YnJlYWs7ZGVmYXVsdDpGKz0iIHVpLWRhdGVwaWNrZXItZ3Jv dXAtbWlkZGxlIixFPSIifUYrPSciPid9Ris9JzxkaXYgY2xhc3M9InVpLWRhdGVw aWNrZXItaGVhZGVyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4 JytFKyciPicrKC9hbGx8bGVmdC8udGVzdChFKSYmQT09MD9jP2Y6cDoiIikrKC9h bGx8cmlnaHQvLnRlc3QoRSkmJkE9PTA/Yz9wOmY6IiIpK3RoaXMuX2dlbmVyYXRl TW9udGhZZWFySGVhZGVyKGEsaSxvLG0sbixBPjB8fEM+MCxzLHQpKyc8L2Rpdj48 dGFibGUgY2xhc3M9InVpLWRhdGVwaWNrZXItY2FsZW5kYXIiPjx0aGVhZD48dHI+ Jzt2YXIgRz1qPyc8dGggY2xhc3M9InVpLWRhdGVwaWNrZXItd2Vlay1jb2wiPicr dGhpcy5fZ2V0KGEsIndlZWtIZWFkZXIiKSsiPC90aD4iOiIiO2ZvcihFPTA7RTw3 O0UrKyl7dmFyIEg9KEUrZyklNztHKz0iPHRoIisoKEUrZys2KSU3Pj01PycgY2xh c3M9InVpLWRhdGVwaWNrZXItd2Vlay1lbmQiJzoiIikrJz48c3BhbiB0aXRsZT0i JytxW0hdKyciPicrcltIXSsiPC9zcGFuPjwvdGg+In1GKz1HKyI8L3RyPjwvdGhl YWQ+PHRib2R5PiIsRz10aGlzLl9nZXREYXlzSW5Nb250aChvLGkpLG89PWEuc2Vs ZWN0ZWRZZWFyJiZpPT1hLnNlbGVjdGVkTW9udGgmJgooYS5zZWxlY3RlZERheT1N YXRoLm1pbihhLnNlbGVjdGVkRGF5LEcpKSxFPSh0aGlzLl9nZXRGaXJzdERheU9m TW9udGgobyxpKS1nKzcpJTcsRz1rPzY6TWF0aC5jZWlsKChFK0cpLzcpLEg9dGhp cy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUobyxpLDEtRSkpO2Zvcih2 YXIgST0wO0k8RztJKyspe0YrPSI8dHI+Ijt2YXIgSj1qPyc8dGQgY2xhc3M9InVp LWRhdGVwaWNrZXItd2Vlay1jb2wiPicrdGhpcy5fZ2V0KGEsImNhbGN1bGF0ZVdl ZWsiKShIKSsiPC90ZD4iOiIiO2ZvcihFPTA7RTw3O0UrKyl7dmFyIEs9dT91LmFw cGx5KGEuaW5wdXQ/YS5pbnB1dFswXTpudWxsLFtIXSk6WyEwLCIiXSxMPUguZ2V0 TW9udGgoKSE9aSxNPUwmJiF3fHwhS1swXXx8bSYmSDxtfHxuJiZIPm47Sis9Jzx0 ZCBjbGFzcz0iJysoKEUrZys2KSU3Pj01PyIgdWktZGF0ZXBpY2tlci13ZWVrLWVu ZCI6IiIpKyhMPyIgdWktZGF0ZXBpY2tlci1vdGhlci1tb250aCI6IiIpKyhILmdl dFRpbWUoKT09RC5nZXRUaW1lKCkmJmk9PWEuc2VsZWN0ZWRNb250aCYmYS5fa2V5 RXZlbnR8fHguZ2V0VGltZSgpPT1ILmdldFRpbWUoKSYmeC5nZXRUaW1lKCk9PUQu Z2V0VGltZSgpPyIgIit0aGlzLl9kYXlPdmVyQ2xhc3M6IiIpKyhNPyIgIit0aGlz Ll91bnNlbGVjdGFibGVDbGFzcysiIHVpLXN0YXRlLWRpc2FibGVkIjoiIikrKEwm JiF2PyIiOiIgIitLWzFdKyhILmdldFRpbWUoKT09bC5nZXRUaW1lKCk/IiAiK3Ro aXMuX2N1cnJlbnRDbGFzczoiIikrKEguZ2V0VGltZSgpPT1iLmdldFRpbWUoKT8i IHVpLWRhdGVwaWNrZXItdG9kYXkiOiIiKSkrJyInKygoIUx8fHYpJiZLWzJdPycg dGl0bGU9IicrS1syXSsnIic6IiIpKyhNPyIiOicgb25jbGljaz0iRFBfalF1ZXJ5 XycreSsiLmRhdGVwaWNrZXIuX3NlbGVjdERheSgnIyIrYS5pZCsiJywiK0guZ2V0 TW9udGgoKSsiLCIrSC5nZXRGdWxsWWVhcigpKycsIHRoaXMpO3JldHVybiBmYWxz ZTsiJykrIj4iKyhMJiYhdj8iJiN4YTA7IjpNPyc8c3BhbiBjbGFzcz0idWktc3Rh dGUtZGVmYXVsdCI+JytILmdldERhdGUoKSsiPC9zcGFuPiI6JzxhIGNsYXNzPSJ1 aS1zdGF0ZS1kZWZhdWx0JysoSC5nZXRUaW1lKCk9PWIuZ2V0VGltZSgpPyIgdWkt c3RhdGUtaGlnaGxpZ2h0IjoiIikrKEguZ2V0VGltZSgpPT1sLmdldFRpbWUoKT8i IHVpLXN0YXRlLWFjdGl2ZSI6IiIpKyhMPyIgdWktcHJpb3JpdHktc2Vjb25kYXJ5 IjoiIikrJyIgaHJlZj0iIyI+JytILmdldERhdGUoKSsiPC9hPiIpKyI8L3RkPiIs SC5zZXREYXRlKEguZ2V0RGF0ZSgpKzEpLEg9dGhpcy5fZGF5bGlnaHRTYXZpbmdB ZGp1c3QoSCl9Ris9SisiPC90cj4ifWkrKyxpPjExJiYoaT0wLG8rKyksRis9Ijwv dGJvZHk+PC90YWJsZT4iKyhrPyI8L2Rpdj4iKyhoWzBdPjAmJkM9PWhbMV0tMT8n PGRpdiBjbGFzcz0idWktZGF0ZXBpY2tlci1yb3ctYnJlYWsiPjwvZGl2Pic6IiIp OiIiKSxCKz1GfXorPUJ9cmV0dXJuIHorPWUrKGQuYnJvd3Nlci5tc2llJiZwYXJz ZUludChkLmJyb3dzZXIudmVyc2lvbiwxMCk8NyYmIWEuaW5saW5lPyc8aWZyYW1l IHNyYz0iamF2YXNjcmlwdDpmYWxzZTsiIGNsYXNzPSJ1aS1kYXRlcGlja2VyLWNv dmVyIiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+JzoiIiksYS5fa2V5RXZlbnQ9 ITEsen0sX2dlbmVyYXRlTW9udGhZZWFySGVhZGVyOmZ1bmN0aW9uKGEsYixjLGQs ZSxmLGcsaCl7dmFyIGk9dGhpcy5fZ2V0KGEsImNoYW5nZU1vbnRoIiksaj10aGlz Ll9nZXQoYSwiY2hhbmdlWWVhciIpLGs9dGhpcy5fZ2V0KGEsInNob3dNb250aEFm dGVyWWVhciIpLGw9JzxkaXYgY2xhc3M9InVpLWRhdGVwaWNrZXItdGl0bGUiPics bT0iIjtpZihmfHwhaSltKz0nPHNwYW4gY2xhc3M9InVpLWRhdGVwaWNrZXItbW9u dGgiPicrZ1tiXSsiPC9zcGFuPiI7ZWxzZXtnPWQmJmQuZ2V0RnVsbFllYXIoKT09 Yzt2YXIgbj1lJiZlLmdldEZ1bGxZZWFyKCk9PWM7bSs9JzxzZWxlY3QgY2xhc3M9 InVpLWRhdGVwaWNrZXItbW9udGgiIG9uY2hhbmdlPSJEUF9qUXVlcnlfJyt5KyIu ZGF0ZXBpY2tlci5fc2VsZWN0TW9udGhZZWFyKCcjIithLmlkKyInLCB0aGlzLCAn TScpO1wiIG9uY2xpY2s9XCJEUF9qUXVlcnlfIit5KyIuZGF0ZXBpY2tlci5fY2xp Y2tNb250aFllYXIoJyMiK2EuaWQrIicpO1wiPiI7Zm9yKHZhciBvPTA7bzwxMjtv KyspKCFnfHxvPj1kLmdldE1vbnRoKCkpJiYoIW58fG88PWUuZ2V0TW9udGgoKSkm JihtKz0nPG9wdGlvbiB2YWx1ZT0iJytvKyciJysobz09Yj8nIHNlbGVjdGVkPSJz ZWxlY3RlZCInOiIiKSsiPiIraFtvXSsiPC9vcHRpb24+Iik7bSs9Ijwvc2VsZWN0 PiJ9a3x8KGwrPW0rKGZ8fCFpfHwhaj8iJiN4YTA7IjoiIikpO2lmKGZ8fCFqKWwr PSc8c3BhbiBjbGFzcz0idWktZGF0ZXBpY2tlci15ZWFyIj4nK2MrIjwvc3Bhbj4i O2Vsc2V7aD10aGlzLl9nZXQoYSwieWVhclJhbmdlIikuc3BsaXQoIjoiKTt2YXIg cD0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7Zz1mdW5jdGlvbihhKXtyZXR1cm4g YT1hLm1hdGNoKC9jWystXS4qLyk/YytwYXJzZUludChhLnN1YnN0cmluZygxKSwx MCk6YS5tYXRjaCgvWystXS4qLyk/cCtwYXJzZUludChhLDEwKTpwYXJzZUludChh LDEwKSxpc05hTihhKT9wOmF9LGI9ZyhoWzBdKSxoPU1hdGgubWF4KGIsZyhoWzFd fHwiIikpLGI9ZD9NYXRoLm1heChiLGQuZ2V0RnVsbFllYXIoKSk6YixoPWU/TWF0 aC5taW4oaCxlLmdldEZ1bGxZZWFyKCkpOmg7Zm9yKGwrPSc8c2VsZWN0IGNsYXNz PSJ1aS1kYXRlcGlja2VyLXllYXIiIG9uY2hhbmdlPSJEUF9qUXVlcnlfJyt5KyIu ZGF0ZXBpY2tlci5fc2VsZWN0TW9udGhZZWFyKCcjIithLmlkKyInLCB0aGlzLCAn WScpO1wiIG9uY2xpY2s9XCJEUF9qUXVlcnlfIit5KyIuZGF0ZXBpY2tlci5fY2xp Y2tNb250aFllYXIoJyMiK2EuaWQrIicpO1wiPiI7Yjw9aDtiKyspbCs9JzxvcHRp b24gdmFsdWU9IicrYisnIicrKGI9PWM/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoi IikrIj4iK2IrIjwvb3B0aW9uPiI7bCs9Ijwvc2VsZWN0PiJ9cmV0dXJuIGwrPXRo aXMuX2dldChhLCJ5ZWFyU3VmZml4IiksayYmKGwrPShmfHwhaXx8IWo/IiYjeGEw OyI6IiIpK20pLGwrPSI8L2Rpdj4iLGx9LF9hZGp1c3RJbnN0RGF0ZTpmdW5jdGlv bihhLGIsYyl7dmFyIGQ9YS5kcmF3WWVhcisoYz09IlkiP2I6MCksZT1hLmRyYXdN b250aCsoYz09Ik0iP2I6MCk7Yj1NYXRoLm1pbihhLnNlbGVjdGVkRGF5LHRoaXMu X2dldERheXNJbk1vbnRoKGQsZSkpKyhjPT0iRCI/YjowKSxkPXRoaXMuX3Jlc3Ry aWN0TWluTWF4KGEsdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUo ZCxlLGIpKSksYS5zZWxlY3RlZERheT1kLmdldERhdGUoKSxhLmRyYXdNb250aD1h LnNlbGVjdGVkTW9udGg9ZC5nZXRNb250aCgpLGEuZHJhd1llYXI9YS5zZWxlY3Rl ZFllYXI9ZC5nZXRGdWxsWWVhcigpLChjPT0iTSJ8fGM9PSJZIikmJnRoaXMuX25v dGlmeUNoYW5nZShhKX0sX3Jlc3RyaWN0TWluTWF4OmZ1bmN0aW9uKGEsYil7dmFy IGM9dGhpcy5fZ2V0TWluTWF4RGF0ZShhLCJtaW4iKTtyZXR1cm4gYT10aGlzLl9n ZXRNaW5NYXhEYXRlKGEsIm1heCIpLGI9YyYmYjxjP2M6YixiPWEmJmI+YT9hOmJ9 LF9ub3RpZnlDaGFuZ2U6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fZ2V0KGEsIm9u Q2hhbmdlTW9udGhZZWFyIik7YiYmYi5hcHBseShhLmlucHV0P2EuaW5wdXRbMF06 bnVsbCxbYS5zZWxlY3RlZFllYXIsYS5zZWxlY3RlZE1vbnRoKzEsYV0pfSxfZ2V0 TnVtYmVyT2ZNb250aHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9dGhpcy5fZ2V0KGEs Im51bWJlck9mTW9udGhzIiksYT09bnVsbD9bMSwxXTp0eXBlb2YgYT09Im51bWJl ciI/WzEsYV06YX0sX2dldE1pbk1heERhdGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g dGhpcy5fZGV0ZXJtaW5lRGF0ZShhLHRoaXMuX2dldChhLGIrIkRhdGUiKSxudWxs KX0sX2dldERheXNJbk1vbnRoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDMyLShuZXcg RGF0ZShhLGIsMzIpKS5nZXREYXRlKCl9LF9nZXRGaXJzdERheU9mTW9udGg6ZnVu Y3Rpb24oYSxiKXtyZXR1cm4obmV3IERhdGUoYSxiLDEpKS5nZXREYXkoKX0sX2Nh bkFkanVzdE1vbnRoOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuX2dldE51 bWJlck9mTW9udGhzKGEpO3JldHVybiBjPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRq dXN0KG5ldyBEYXRlKGMsZCsoYjwwP2I6ZVswXSplWzFdKSwxKSksYjwwJiZjLnNl dERhdGUodGhpcy5fZ2V0RGF5c0luTW9udGgoYy5nZXRGdWxsWWVhcigpLGMuZ2V0 TW9udGgoKSkpLHRoaXMuX2lzSW5SYW5nZShhLGMpfSxfaXNJblJhbmdlOmZ1bmN0 aW9uKGEsYil7dmFyIGM9dGhpcy5fZ2V0TWluTWF4RGF0ZShhLCJtaW4iKTtyZXR1 cm4gYT10aGlzLl9nZXRNaW5NYXhEYXRlKGEsIm1heCIpLCghY3x8Yi5nZXRUaW1l KCk+PWMuZ2V0VGltZSgpKSYmKCFhfHxiLmdldFRpbWUoKTw9YS5nZXRUaW1lKCkp fSxfZ2V0Rm9ybWF0Q29uZmlnOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2dldChh LCJzaG9ydFllYXJDdXRvZmYiKTtyZXR1cm4gYj10eXBlb2YgYiE9InN0cmluZyI/ YjoobmV3IERhdGUpLmdldEZ1bGxZZWFyKCklMTAwK3BhcnNlSW50KGIsMTApLHtz aG9ydFllYXJDdXRvZmY6YixkYXlOYW1lc1Nob3J0OnRoaXMuX2dldChhLCJkYXlO YW1lc1Nob3J0IiksZGF5TmFtZXM6dGhpcy5fZ2V0KGEsImRheU5hbWVzIiksbW9u dGhOYW1lc1Nob3J0OnRoaXMuX2dldChhLCJtb250aE5hbWVzU2hvcnQiKSxtb250 aE5hbWVzOnRoaXMuX2dldChhLCJtb250aE5hbWVzIil9fSxfZm9ybWF0RGF0ZTpm dW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYnx8KGEuY3VycmVudERheT1hLnNlbGVj dGVkRGF5LGEuY3VycmVudE1vbnRoPWEuc2VsZWN0ZWRNb250aCxhLmN1cnJlbnRZ ZWFyPWEuc2VsZWN0ZWRZZWFyKSxiPWI/dHlwZW9mIGI9PSJvYmplY3QiP2I6dGhp cy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoZCxjLGIpKTp0aGlzLl9k YXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShhLmN1cnJlbnRZZWFyLGEuY3Vy cmVudE1vbnRoLGEuY3VycmVudERheSkpLHRoaXMuZm9ybWF0RGF0ZSh0aGlzLl9n ZXQoYSwiZGF0ZUZvcm1hdCIpLGIsdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGEpKX19 KSxkLmZuLmRhdGVwaWNrZXI9ZnVuY3Rpb24oYSl7ZC5kYXRlcGlja2VyLmluaXRp YWxpemVkfHwoZChkb2N1bWVudCkubW91c2Vkb3duKGQuZGF0ZXBpY2tlci5fY2hl Y2tFeHRlcm5hbENsaWNrKS5maW5kKCJib2R5IikuYXBwZW5kKGQuZGF0ZXBpY2tl ci5kcERpdiksZC5kYXRlcGlja2VyLmluaXRpYWxpemVkPSEwKTt2YXIgYj1BcnJh eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIHR5cGVv ZiBhIT0ic3RyaW5nInx8YSE9ImlzRGlzYWJsZWQiJiZhIT0iZ2V0RGF0ZSImJmEh PSJ3aWRnZXQiP2E9PSJvcHRpb24iJiZhcmd1bWVudHMubGVuZ3RoPT0yJiZ0eXBl b2YgYXJndW1lbnRzWzFdPT0ic3RyaW5nIj9kLmRhdGVwaWNrZXJbIl8iK2ErIkRh dGVwaWNrZXIiXS5hcHBseShkLmRhdGVwaWNrZXIsW3RoaXNbMF1dLmNvbmNhdChi KSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHlwZW9mIGE9PSJzdHJpbmciP2QuZGF0 ZXBpY2tlclsiXyIrYSsiRGF0ZXBpY2tlciJdLmFwcGx5KGQuZGF0ZXBpY2tlcixb dGhpc10uY29uY2F0KGIpKTpkLmRhdGVwaWNrZXIuX2F0dGFjaERhdGVwaWNrZXIo dGhpcyxhKX0pOmQuZGF0ZXBpY2tlclsiXyIrYSsiRGF0ZXBpY2tlciJdLmFwcGx5 KGQuZGF0ZXBpY2tlcixbdGhpc1swXV0uY29uY2F0KGIpKX0sZC5kYXRlcGlja2Vy PW5ldyBLLGQuZGF0ZXBpY2tlci5pbml0aWFsaXplZD0hMSxkLmRhdGVwaWNrZXIu dXVpZD0obmV3IERhdGUpLmdldFRpbWUoKSxkLmRhdGVwaWNrZXIudmVyc2lvbj0i MS44LjYiLHdpbmRvd1siRFBfalF1ZXJ5XyIreV09ZH0oalF1ZXJ5KSxmdW5jdGlv bihhLGIpe2Eud2lkZ2V0KCJ1aS5wcm9ncmVzc2JhciIse29wdGlvbnM6e3ZhbHVl OjB9LG1pbjowLG1heDoxMDAsX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVu dC5hZGRDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1j b250ZW50IHVpLWNvcm5lci1hbGwiKS5hdHRyKHtyb2xlOiJwcm9ncmVzc2JhciIs ImFyaWEtdmFsdWVtaW4iOnRoaXMubWluLCJhcmlhLXZhbHVlbWF4Ijp0aGlzLm1h eCwiYXJpYS12YWx1ZW5vdyI6dGhpcy5fdmFsdWUoKX0pLHRoaXMudmFsdWVEaXY9 YSgiPGRpdiBjbGFzcz0ndWktcHJvZ3Jlc3NiYXItdmFsdWUgdWktd2lkZ2V0LWhl YWRlciB1aS1jb3JuZXItbGVmdCc+PC9kaXY+IikuYXBwZW5kVG8odGhpcy5lbGVt ZW50KSx0aGlzLl9yZWZyZXNoVmFsdWUoKX0sZGVzdHJveTpmdW5jdGlvbigpe3Ro aXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0 IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5yZW1vdmVBdHRyKCJy b2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFy aWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy52 YWx1ZURpdi5yZW1vdmUoKSxhLldpZGdldC5wcm90b3R5cGUuZGVzdHJveS5hcHBs eSh0aGlzLGFyZ3VtZW50cyl9LHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09 Yj90aGlzLl92YWx1ZSgpOih0aGlzLl9zZXRPcHRpb24oInZhbHVlIixhKSx0aGlz KX0sX3NldE9wdGlvbjpmdW5jdGlvbihiLGMpe2I9PT0idmFsdWUiJiYodGhpcy5v cHRpb25zLnZhbHVlPWMsdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fdHJpZ2dl cigiY2hhbmdlIiksdGhpcy5fdmFsdWUoKT09PXRoaXMubWF4JiZ0aGlzLl90cmln Z2VyKCJjb21wbGV0ZSIpKSxhLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5h cHBseSh0aGlzLGFyZ3VtZW50cyl9LF92YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRo aXMub3B0aW9ucy52YWx1ZTtyZXR1cm4gdHlwZW9mIGEhPSJudW1iZXIiJiYoYT0w KSxNYXRoLm1pbih0aGlzLm1heCxNYXRoLm1heCh0aGlzLm1pbixhKSl9LF9yZWZy ZXNoVmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnZhbHVlKCk7dGhpcy52YWx1 ZURpdi50b2dnbGVDbGFzcygidWktY29ybmVyLXJpZ2h0IixhPT09dGhpcy5tYXgp LndpZHRoKGErIiUiKSx0aGlzLmVsZW1lbnQuYXR0cigiYXJpYS12YWx1ZW5vdyIs YSl9fSksYS5leHRlbmQoYS51aS5wcm9ncmVzc2Jhcix7dmVyc2lvbjoiMS44LjYi fSl9KGpRdWVyeSksalF1ZXJ5LmVmZmVjdHN8fGZ1bmN0aW9uKGEsYil7ZnVuY3Rp b24gYyhiKXt2YXIgYztyZXR1cm4gYiYmYi5jb25zdHJ1Y3Rvcj09QXJyYXkmJmIu bGVuZ3RoPT0zP2I6KGM9L3JnYlwoXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05 XXsxLDN9KVxzKixccyooWzAtOV17MSwzfSlccypcKS8uZXhlYyhiKSk/W3BhcnNl SW50KGNbMV0sMTApLHBhcnNlSW50KGNbMl0sMTApLHBhcnNlSW50KGNbM10sMTAp XTooYz0vcmdiXChccyooWzAtOV0rKD86XC5bMC05XSspPylcJVxzKixccyooWzAt OV0rKD86XC5bMC05XSspPylcJVxzKixccyooWzAtOV0rKD86XC5bMC05XSspPylc JVxzKlwpLy5leGVjKGIpKT9bcGFyc2VGbG9hdChjWzFdKSoyLjU1LHBhcnNlRmxv YXQoY1syXSkqMi41NSxwYXJzZUZsb2F0KGNbM10pKjIuNTVdOihjPS8jKFthLWZB LUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pLy5leGVj KGIpKT9bcGFyc2VJbnQoY1sxXSwxNikscGFyc2VJbnQoY1syXSwxNikscGFyc2VJ bnQoY1szXSwxNildOihjPS8jKFthLWZBLUYwLTldKShbYS1mQS1GMC05XSkoW2Et ZkEtRjAtOV0pLy5leGVjKGIpKT9bcGFyc2VJbnQoY1sxXStjWzFdLDE2KSxwYXJz ZUludChjWzJdK2NbMl0sMTYpLHBhcnNlSW50KGNbM10rY1szXSwxNildOi9yZ2Jh XCgwLCAwLCAwLCAwXCkvLmV4ZWMoYik/ai50cmFuc3BhcmVudDpqW2EudHJpbShi KS50b0xvd2VyQ2FzZSgpXX1mdW5jdGlvbiBkKGIsZCl7dmFyIGU7ZG97ZT1hLmN1 ckNTUyhiLGQpO2lmKGUhPSIiJiZlIT0idHJhbnNwYXJlbnQifHxhLm5vZGVOYW1l KGIsImJvZHkiKSlicmVhaztkPSJiYWNrZ3JvdW5kQ29sb3IifXdoaWxlKGI9Yi5w YXJlbnROb2RlKTtyZXR1cm4gYyhlKX1mdW5jdGlvbiBlKCl7dmFyIGE9ZG9jdW1l bnQuZGVmYXVsdFZpZXc/ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT dHlsZSh0aGlzLG51bGwpOnRoaXMuY3VycmVudFN0eWxlLGI9e30sYyxkO2lmKGEm JmEubGVuZ3RoJiZhWzBdJiZhW2FbMF1dKWZvcih2YXIgZT1hLmxlbmd0aDtlLS07 KWM9YVtlXSx0eXBlb2YgYVtjXT09InN0cmluZyImJihkPWMucmVwbGFjZSgvXC0o XHcpL2csZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfSksYltk XT1hW2NdKTtlbHNlIGZvcihjIGluIGEpdHlwZW9mIGFbY109PSJzdHJpbmciJiYo YltjXT1hW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBmKGIpe3ZhciBjLGQ7Zm9yKGMg aW4gYilkPWJbY10sKGQ9PW51bGx8fGEuaXNGdW5jdGlvbihkKXx8YyBpbiBsfHwv c2Nyb2xsYmFyLy50ZXN0KGMpfHwhL2NvbG9yL2kudGVzdChjKSYmaXNOYU4ocGFy c2VGbG9hdChkKSkpJiZkZWxldGUgYltjXTtyZXR1cm4gYn1mdW5jdGlvbiBnKGEs Yil7dmFyIGM9e186MH0sZDtmb3IoZCBpbiBiKWFbZF0hPWJbZF0mJihjW2RdPWJb ZF0pO3JldHVybiBjfWZ1bmN0aW9uIGgoYixjLGQsZSl7dHlwZW9mIGI9PSJvYmpl Y3QiJiYoZT1jLGQ9bnVsbCxjPWIsYj1jLmVmZmVjdCksYS5pc0Z1bmN0aW9uKGMp JiYoZT1jLGQ9bnVsbCxjPXt9KTtpZih0eXBlb2YgYz09Im51bWJlciJ8fGEuZngu c3BlZWRzW2NdKWU9ZCxkPWMsYz17fTtyZXR1cm4gYS5pc0Z1bmN0aW9uKGQpJiYo ZT1kLGQ9bnVsbCksYz1jfHx7fSxkPWR8fGMuZHVyYXRpb24sZD1hLmZ4Lm9mZj8w OnR5cGVvZiBkPT0ibnVtYmVyIj9kOmEuZnguc3BlZWRzW2RdfHxhLmZ4LnNwZWVk cy5fZGVmYXVsdCxlPWV8fGMuY29tcGxldGUsW2IsYyxkLGVdfWZ1bmN0aW9uIGko Yil7cmV0dXJuIWJ8fHR5cGVvZiBiPT0ibnVtYmVyInx8YS5meC5zcGVlZHNbYl0/ ITA6dHlwZW9mIGI9PSJzdHJpbmciJiYhYS5lZmZlY3RzW2JdPyEwOiExfWEuZWZm ZWN0cz17fSxhLmVhY2goWyJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJCb3R0b21D b2xvciIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlclJpZ2h0Q29sb3IiLCJib3Jk ZXJUb3BDb2xvciIsImJvcmRlckNvbG9yIiwiY29sb3IiLCJvdXRsaW5lQ29sb3Ii XSxmdW5jdGlvbihiLGUpe2EuZnguc3RlcFtlXT1mdW5jdGlvbihhKXthLmNvbG9y SW5pdHx8KGEuc3RhcnQ9ZChhLmVsZW0sZSksYS5lbmQ9YyhhLmVuZCksYS5jb2xv ckluaXQ9ITApLGEuZWxlbS5zdHlsZVtlXT0icmdiKCIrTWF0aC5tYXgoTWF0aC5t aW4ocGFyc2VJbnQoYS5wb3MqKGEuZW5kWzBdLWEuc3RhcnRbMF0pK2Euc3RhcnRb MF0sMTApLDI1NSksMCkrIiwiK01hdGgubWF4KE1hdGgubWluKHBhcnNlSW50KGEu cG9zKihhLmVuZFsxXS1hLnN0YXJ0WzFdKSthLnN0YXJ0WzFdLDEwKSwyNTUpLDAp KyIsIitNYXRoLm1heChNYXRoLm1pbihwYXJzZUludChhLnBvcyooYS5lbmRbMl0t YS5zdGFydFsyXSkrYS5zdGFydFsyXSwxMCksMjU1KSwwKSsiKSJ9fSk7dmFyIGo9 e2FxdWE6WzAsMjU1LDI1NV0sYXp1cmU6WzI0MCwyNTUsMjU1XSxiZWlnZTpbMjQ1 LDI0NSwyMjBdLGJsYWNrOlswLDAsMF0sYmx1ZTpbMCwwLDI1NV0sYnJvd246WzE2 NSw0Miw0Ml0sY3lhbjpbMCwyNTUsMjU1XSxkYXJrYmx1ZTpbMCwwLDEzOV0sZGFy a2N5YW46WzAsMTM5LDEzOV0sZGFya2dyZXk6WzE2OSwxNjksMTY5XSxkYXJrZ3Jl ZW46WzAsMTAwLDBdLGRhcmtraGFraTpbMTg5LDE4MywxMDddLGRhcmttYWdlbnRh OlsxMzksMCwxMzldLGRhcmtvbGl2ZWdyZWVuOls4NSwxMDcsNDddLGRhcmtvcmFu Z2U6WzI1NSwxNDAsMF0sZGFya29yY2hpZDpbMTUzLDUwLDIwNF0sZGFya3JlZDpb MTM5LDAsMF0sZGFya3NhbG1vbjpbMjMzLDE1MCwxMjJdLGRhcmt2aW9sZXQ6WzE0 OCwwLDIxMV0sZnVjaHNpYTpbMjU1LDAsMjU1XSxnb2xkOlsyNTUsMjE1LDBdLGdy ZWVuOlswLDEyOCwwXSxpbmRpZ286Wzc1LDAsMTMwXSxraGFraTpbMjQwLDIzMCwx NDBdLGxpZ2h0Ymx1ZTpbMTczLDIxNiwyMzBdLGxpZ2h0Y3lhbjpbMjI0LDI1NSwy NTVdLGxpZ2h0Z3JlZW46WzE0NCwyMzgsMTQ0XSxsaWdodGdyZXk6WzIxMSwyMTEs MjExXSxsaWdodHBpbms6WzI1NSwxODIsMTkzXSxsaWdodHllbGxvdzpbMjU1LDI1 NSwyMjRdLGxpbWU6WzAsMjU1LDBdLG1hZ2VudGE6WzI1NSwwLDI1NV0sbWFyb29u OlsxMjgsMCwwXSxuYXZ5OlswLDAsMTI4XSxvbGl2ZTpbMTI4LDEyOCwwXSxvcmFu Z2U6WzI1NSwxNjUsMF0scGluazpbMjU1LDE5MiwyMDNdLHB1cnBsZTpbMTI4LDAs MTI4XSx2aW9sZXQ6WzEyOCwwLDEyOF0scmVkOlsyNTUsMCwwXSxzaWx2ZXI6WzE5 MiwxOTIsMTkyXSx3aGl0ZTpbMjU1LDI1NSwyNTVdLHllbGxvdzpbMjU1LDI1NSww XSx0cmFuc3BhcmVudDpbMjU1LDI1NSwyNTVdfSxrPVsiYWRkIiwicmVtb3ZlIiwi dG9nZ2xlIl0sbD17Ym9yZGVyOjEsYm9yZGVyQm90dG9tOjEsYm9yZGVyQ29sb3I6 MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxib3JkZXJX aWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX07YS5lZmZlY3RzLmFuaW1hdGVDbGFz cz1mdW5jdGlvbihiLGMsZCxoKXtyZXR1cm4gYS5pc0Z1bmN0aW9uKGQpJiYoaD1k LGQ9bnVsbCksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9YSh0aGlzKSxqPWku YXR0cigic3R5bGUiKXx8IiAiLGw9ZihlLmNhbGwodGhpcykpLG0sbj1pLmF0dHIo ImNsYXNzTmFtZSIpO2EuZWFjaChrLGZ1bmN0aW9uKGEsYyl7YltjXSYmaVtjKyJD bGFzcyJdKGJbY10pfSksbT1mKGUuY2FsbCh0aGlzKSksaS5hdHRyKCJjbGFzc05h bWUiLG4pLGkuYW5pbWF0ZShnKGwsbSksYyxkLGZ1bmN0aW9uKCl7YS5lYWNoKGss ZnVuY3Rpb24oYSxjKXtiW2NdJiZpW2MrIkNsYXNzIl0oYltjXSl9KSx0eXBlb2Yg aS5hdHRyKCJzdHlsZSIpPT0ib2JqZWN0Ij8oaS5hdHRyKCJzdHlsZSIpLmNzc1Rl eHQ9IiIsaS5hdHRyKCJzdHlsZSIpLmNzc1RleHQ9aik6aS5hdHRyKCJzdHlsZSIs aiksaCYmaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0pfSxhLmZuLmV4dGVuZCh7 X2FkZENsYXNzOmEuZm4uYWRkQ2xhc3MsYWRkQ2xhc3M6ZnVuY3Rpb24oYixjLGQs ZSl7cmV0dXJuIGM/YS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5hcHBseSh0aGlzLFt7 YWRkOmJ9LGMsZCxlXSk6dGhpcy5fYWRkQ2xhc3MoYil9LF9yZW1vdmVDbGFzczph LmZuLnJlbW92ZUNsYXNzLHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGIsYyxkLGUpe3Jl dHVybiBjP2EuZWZmZWN0cy5hbmltYXRlQ2xhc3MuYXBwbHkodGhpcyxbe3JlbW92 ZTpifSxjLGQsZV0pOnRoaXMuX3JlbW92ZUNsYXNzKGIpfSxfdG9nZ2xlQ2xhc3M6 YS5mbi50b2dnbGVDbGFzcyx0b2dnbGVDbGFzczpmdW5jdGlvbihjLGQsZSxmLGcp e3JldHVybiB0eXBlb2YgZD09ImJvb2xlYW4ifHxkPT09Yj9lP2EuZWZmZWN0cy5h bmltYXRlQ2xhc3MuYXBwbHkodGhpcyxbZD97YWRkOmN9OntyZW1vdmU6Y30sZSxm LGddKTp0aGlzLl90b2dnbGVDbGFzcyhjLGQpOmEuZWZmZWN0cy5hbmltYXRlQ2xh c3MuYXBwbHkodGhpcyxbe3RvZ2dsZTpjfSxkLGUsZl0pfSxzd2l0Y2hDbGFzczpm dW5jdGlvbihiLGMsZCxlLGYpe3JldHVybiBhLmVmZmVjdHMuYW5pbWF0ZUNsYXNz LmFwcGx5KHRoaXMsW3thZGQ6YyxyZW1vdmU6Yn0sZCxlLGZdKX19KSxhLmV4dGVu ZChhLmVmZmVjdHMse3ZlcnNpb246IjEuOC42IixzYXZlOmZ1bmN0aW9uKGEsYil7 Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspYltjXSE9PW51bGwmJmEuZGF0YSgi ZWMuc3RvcmFnZS4iK2JbY10sYVswXS5zdHlsZVtiW2NdXSl9LHJlc3RvcmU6ZnVu Y3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyliW2NdIT09bnVs bCYmYS5jc3MoYltjXSxhLmRhdGEoImVjLnN0b3JhZ2UuIitiW2NdKSl9LHNldE1v ZGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09InRvZ2dsZSImJihiPWEuaXMoIjpo aWRkZW4iKT8ic2hvdyI6ImhpZGUiKSxifSxnZXRCYXNlbGluZTpmdW5jdGlvbihh LGIpe3ZhciBjO3N3aXRjaChhWzBdKXtjYXNlInRvcCI6Yz0wO2JyZWFrO2Nhc2Ui bWlkZGxlIjpjPS41O2JyZWFrO2Nhc2UiYm90dG9tIjpjPTE7YnJlYWs7ZGVmYXVs dDpjPWFbMF0vYi5oZWlnaHR9c3dpdGNoKGFbMV0pe2Nhc2UibGVmdCI6YT0wO2Jy ZWFrO2Nhc2UiY2VudGVyIjphPS41O2JyZWFrO2Nhc2UicmlnaHQiOmE9MTticmVh aztkZWZhdWx0OmE9YVsxXS9iLndpZHRofXJldHVybnt4OmEseTpjfX0sY3JlYXRl V3JhcHBlcjpmdW5jdGlvbihiKXtpZihiLnBhcmVudCgpLmlzKCIudWktZWZmZWN0 cy13cmFwcGVyIikpcmV0dXJuIGIucGFyZW50KCk7dmFyIGM9e3dpZHRoOmIub3V0 ZXJXaWR0aCghMCksaGVpZ2h0OmIub3V0ZXJIZWlnaHQoITApLCJmbG9hdCI6Yi5j c3MoImZsb2F0Iil9LGQ9YSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygidWktZWZm ZWN0cy13cmFwcGVyIikuY3NzKHtmb250U2l6ZToiMTAwJSIsYmFja2dyb3VuZDoi dHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsbWFyZ2luOjAscGFkZGluZzowfSk7 cmV0dXJuIGIud3JhcChkKSxkPWIucGFyZW50KCksYi5jc3MoInBvc2l0aW9uIik9 PSJzdGF0aWMiPyhkLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLGIuY3NzKHtw b3NpdGlvbjoicmVsYXRpdmUifSkpOihhLmV4dGVuZChjLHtwb3NpdGlvbjpiLmNz cygicG9zaXRpb24iKSx6SW5kZXg6Yi5jc3MoInotaW5kZXgiKX0pLGEuZWFjaChb InRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCJdLGZ1bmN0aW9uKGEsZCl7Y1tk XT1iLmNzcyhkKSxpc05hTihwYXJzZUludChjW2RdLDEwKSkmJihjW2RdPSJhdXRv Iil9KSxiLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6MCxsZWZ0OjB9KSks ZC5jc3MoYykuc2hvdygpfSxyZW1vdmVXcmFwcGVyOmZ1bmN0aW9uKGEpe3JldHVy biBhLnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIik/YS5wYXJlbnQo KS5yZXBsYWNlV2l0aChhKTphfSxzZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKGIsYyxk LGUpe3JldHVybiBlPWV8fHt9LGEuZWFjaChjLGZ1bmN0aW9uKGEsYyl7dW5pdD1i LmNzc1VuaXQoYyksdW5pdFswXT4wJiYoZVtjXT11bml0WzBdKmQrdW5pdFsxXSl9 KSxlfX0pLGEuZm4uZXh0ZW5kKHtlZmZlY3Q6ZnVuY3Rpb24oYil7dmFyIGM9aC5h cHBseSh0aGlzLGFyZ3VtZW50cyksZD17b3B0aW9uczpjWzFdLGR1cmF0aW9uOmNb Ml0sY2FsbGJhY2s6Y1szXX07Yz1kLm9wdGlvbnMubW9kZTt2YXIgZT1hLmVmZmVj dHNbYl07cmV0dXJuIGEuZngub2ZmfHwhZT9jP3RoaXNbY10oZC5kdXJhdGlvbixk LmNhbGxiYWNrKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmNhbGxiYWNrJiZkLmNh bGxiYWNrLmNhbGwodGhpcyl9KTplLmNhbGwodGhpcyxkKX0sX3Nob3c6YS5mbi5z aG93LHNob3c6ZnVuY3Rpb24oYSl7aWYoaShhKSlyZXR1cm4gdGhpcy5fc2hvdy5h cHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGI9aC5hcHBseSh0aGlzLGFyZ3VtZW50 cyk7cmV0dXJuIGJbMV0ubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuYXBwbHkodGhp cyxiKX0sX2hpZGU6YS5mbi5oaWRlLGhpZGU6ZnVuY3Rpb24oYSl7aWYoaShhKSly ZXR1cm4gdGhpcy5faGlkZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGI9aC5h cHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGJbMV0ubW9kZT0iaGlkZSIsdGhp cy5lZmZlY3QuYXBwbHkodGhpcyxiKX0sX190b2dnbGU6YS5mbi50b2dnbGUsdG9n Z2xlOmZ1bmN0aW9uKGIpe2lmKGkoYil8fHR5cGVvZiBiPT0iYm9vbGVhbiJ8fGEu aXNGdW5jdGlvbihiKSlyZXR1cm4gdGhpcy5fX3RvZ2dsZS5hcHBseSh0aGlzLGFy Z3VtZW50cyk7dmFyIGM9aC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGNb MV0ubW9kZT0idG9nZ2xlIix0aGlzLmVmZmVjdC5hcHBseSh0aGlzLGMpfSxjc3NV bml0OmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuY3NzKGIpLGQ9W107cmV0dXJuIGEu ZWFjaChbImVtIiwicHgiLCIlIiwicHQiXSxmdW5jdGlvbihhLGIpe2MuaW5kZXhP ZihiKT4wJiYoZD1bcGFyc2VGbG9hdChjKSxiXSl9KSxkfX0pLGEuZWFzaW5nLmpz d2luZz1hLmVhc2luZy5zd2luZyxhLmV4dGVuZChhLmVhc2luZyx7ZGVmOiJlYXNl T3V0UXVhZCIsc3dpbmc6ZnVuY3Rpb24oYixjLGQsZSxmKXtyZXR1cm4gYS5lYXNp bmdbYS5lYXNpbmcuZGVmXShiLGMsZCxlLGYpfSxlYXNlSW5RdWFkOmZ1bmN0aW9u KGEsYixjLGQsZSl7cmV0dXJuIGQqKGIvPWUpKmIrY30sZWFzZU91dFF1YWQ6ZnVu Y3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4tZCooYi89ZSkqKGItMikrY30sZWFzZUlu T3V0UXVhZDpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybihiLz1lLzIpPDE/ZC8y KmIqYitjOi1kLzIqKC0tYiooYi0yKS0xKStjfSxlYXNlSW5DdWJpYzpmdW5jdGlv bihhLGIsYyxkLGUpe3JldHVybiBkKihiLz1lKSpiKmIrY30sZWFzZU91dEN1Ymlj OmZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGQqKChiPWIvZS0xKSpiKmIrMSkr Y30sZWFzZUluT3V0Q3ViaWM6ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4oYi89 ZS8yKTwxP2QvMipiKmIqYitjOmQvMiooKGItPTIpKmIqYisyKStjfSxlYXNlSW5R dWFydDpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBkKihiLz1lKSpiKmIqYitj fSxlYXNlT3V0UXVhcnQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4tZCooKGI9 Yi9lLTEpKmIqYipiLTEpK2N9LGVhc2VJbk91dFF1YXJ0OmZ1bmN0aW9uKGEsYixj LGQsZSl7cmV0dXJuKGIvPWUvMik8MT9kLzIqYipiKmIqYitjOi1kLzIqKChiLT0y KSpiKmIqYi0yKStjfSxlYXNlSW5RdWludDpmdW5jdGlvbihhLGIsYyxkLGUpe3Jl dHVybiBkKihiLz1lKSpiKmIqYipiK2N9LGVhc2VPdXRRdWludDpmdW5jdGlvbihh LGIsYyxkLGUpe3JldHVybiBkKigoYj1iL2UtMSkqYipiKmIqYisxKStjfSxlYXNl SW5PdXRRdWludDpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybihiLz1lLzIpPDE/ ZC8yKmIqYipiKmIqYitjOmQvMiooKGItPTIpKmIqYipiKmIrMikrY30sZWFzZUlu U2luZTpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybi1kKk1hdGguY29zKGIvZSoo TWF0aC5QSS8yKSkrZCtjfSxlYXNlT3V0U2luZTpmdW5jdGlvbihhLGIsYyxkLGUp e3JldHVybiBkKk1hdGguc2luKGIvZSooTWF0aC5QSS8yKSkrY30sZWFzZUluT3V0 U2luZTpmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybi1kLzIqKE1hdGguY29zKE1h dGguUEkqYi9lKS0xKStjfSxlYXNlSW5FeHBvOmZ1bmN0aW9uKGEsYixjLGQsZSl7 cmV0dXJuIGI9PTA/YzpkKk1hdGgucG93KDIsMTAqKGIvZS0xKSkrY30sZWFzZU91 dEV4cG86ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gYj09ZT9jK2Q6ZCooLU1h dGgucG93KDIsLTEwKmIvZSkrMSkrY30sZWFzZUluT3V0RXhwbzpmdW5jdGlvbihh LGIsYyxkLGUpe3JldHVybiBiPT0wP2M6Yj09ZT9jK2Q6KGIvPWUvMik8MT9kLzIq TWF0aC5wb3coMiwxMCooYi0xKSkrYzpkLzIqKC1NYXRoLnBvdygyLC0xMCotLWIp KzIpK2N9LGVhc2VJbkNpcmM6ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4tZCoo TWF0aC5zcXJ0KDEtKGIvPWUpKmIpLTEpK2N9LGVhc2VPdXRDaXJjOmZ1bmN0aW9u KGEsYixjLGQsZSl7cmV0dXJuIGQqTWF0aC5zcXJ0KDEtKGI9Yi9lLTEpKmIpK2N9 LGVhc2VJbk91dENpcmM6ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4oYi89ZS8y KTwxPy1kLzIqKE1hdGguc3FydCgxLWIqYiktMSkrYzpkLzIqKE1hdGguc3FydCgx LShiLT0yKSpiKSsxKStjfSxlYXNlSW5FbGFzdGljOmZ1bmN0aW9uKGEsYixjLGQs ZSl7YT0xLjcwMTU4O3ZhciBmPTAsZz1kO3JldHVybiBiPT0wP2M6KGIvPWUpPT0x P2MrZDooZnx8KGY9ZSouMyksZzxNYXRoLmFicyhkKT8oZz1kLGE9Zi80KTphPWYv KDIqTWF0aC5QSSkqTWF0aC5hc2luKGQvZyksLShnKk1hdGgucG93KDIsMTAqKGIt PTEpKSpNYXRoLnNpbigoYiplLWEpKjIqTWF0aC5QSS9mKSkrYyl9LGVhc2VPdXRF bGFzdGljOmZ1bmN0aW9uKGEsYixjLGQsZSl7YT0xLjcwMTU4O3ZhciBmPTAsZz1k O3JldHVybiBiPT0wP2M6KGIvPWUpPT0xP2MrZDooZnx8KGY9ZSouMyksZzxNYXRo LmFicyhkKT8oZz1kLGE9Zi80KTphPWYvKDIqTWF0aC5QSSkqTWF0aC5hc2luKGQv ZyksZypNYXRoLnBvdygyLC0xMCpiKSpNYXRoLnNpbigoYiplLWEpKjIqTWF0aC5Q SS9mKStkK2MpfSxlYXNlSW5PdXRFbGFzdGljOmZ1bmN0aW9uKGEsYixjLGQsZSl7 YT0xLjcwMTU4O3ZhciBmPTAsZz1kO3JldHVybiBiPT0wP2M6KGIvPWUvMik9PTI/ YytkOihmfHwoZj1lKi4zKjEuNSksZzxNYXRoLmFicyhkKT8oZz1kLGE9Zi80KTph PWYvKDIqTWF0aC5QSSkqTWF0aC5hc2luKGQvZyksYjwxPy0wLjUqZypNYXRoLnBv dygyLDEwKihiLT0xKSkqTWF0aC5zaW4oKGIqZS1hKSoyKk1hdGguUEkvZikrYzpn Kk1hdGgucG93KDIsLTEwKihiLT0xKSkqTWF0aC5zaW4oKGIqZS1hKSoyKk1hdGgu UEkvZikqLjUrZCtjKX0sZWFzZUluQmFjazpmdW5jdGlvbihhLGMsZCxlLGYsZyl7 cmV0dXJuIGc9PWImJihnPTEuNzAxNTgpLGUqKGMvPWYpKmMqKChnKzEpKmMtZykr ZH0sZWFzZU91dEJhY2s6ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3JldHVybiBnPT1i JiYoZz0xLjcwMTU4KSxlKigoYz1jL2YtMSkqYyooKGcrMSkqYytnKSsxKStkfSxl YXNlSW5PdXRCYWNrOmZ1bmN0aW9uKGEsYyxkLGUsZixnKXtyZXR1cm4gZz09YiYm KGc9MS43MDE1OCksKGMvPWYvMik8MT9lLzIqYypjKigoKGcqPTEuNTI1KSsxKSpj LWcpK2Q6ZS8yKigoYy09MikqYyooKChnKj0xLjUyNSkrMSkqYytnKSsyKStkfSxl YXNlSW5Cb3VuY2U6ZnVuY3Rpb24oYixjLGQsZSxmKXtyZXR1cm4gZS1hLmVhc2lu Zy5lYXNlT3V0Qm91bmNlKGIsZi1jLDAsZSxmKStkfSxlYXNlT3V0Qm91bmNlOmZ1 bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuKGIvPWUpPDEvMi43NT9kKjcuNTYyNSpi KmIrYzpiPDIvMi43NT9kKig3LjU2MjUqKGItPTEuNS8yLjc1KSpiKy43NSkrYzpi PDIuNS8yLjc1P2QqKDcuNTYyNSooYi09Mi4yNS8yLjc1KSpiKy45Mzc1KStjOmQq KDcuNTYyNSooYi09Mi42MjUvMi43NSkqYisuOTg0Mzc1KStjfSxlYXNlSW5PdXRC b3VuY2U6ZnVuY3Rpb24oYixjLGQsZSxmKXtyZXR1cm4gYzxmLzI/YS5lYXNpbmcu ZWFzZUluQm91bmNlKGIsYyoyLDAsZSxmKSouNStkOmEuZWFzaW5nLmVhc2VPdXRC b3VuY2UoYixjKjItZiwwLGUsZikqLjUrZSouNStkfX0pfShqUXVlcnkpLGZ1bmN0 aW9uKGEpe2EuZWZmZWN0cy5ibGluZD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5x dWV1ZShmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1bInBvc2l0aW9uIiwidG9w IiwibGVmdCJdLGY9YS5lZmZlY3RzLnNldE1vZGUoZCxjLm9wdGlvbnMubW9kZXx8 ImhpZGUiKSxnPWMub3B0aW9ucy5kaXJlY3Rpb258fCJ2ZXJ0aWNhbCI7YS5lZmZl Y3RzLnNhdmUoZCxlKSxkLnNob3coKTt2YXIgaD1hLmVmZmVjdHMuY3JlYXRlV3Jh cHBlcihkKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksaT1nPT0idmVydGljYWwi PyJoZWlnaHQiOiJ3aWR0aCI7Zz1nPT0idmVydGljYWwiP2guaGVpZ2h0KCk6aC53 aWR0aCgpLGY9PSJzaG93IiYmaC5jc3MoaSwwKTt2YXIgaj17fTtqW2ldPWY9PSJz aG93Ij9nOjAsaC5hbmltYXRlKGosYy5kdXJhdGlvbixjLm9wdGlvbnMuZWFzaW5n LGZ1bmN0aW9uKCl7Zj09ImhpZGUiJiZkLmhpZGUoKSxhLmVmZmVjdHMucmVzdG9y ZShkLGUpLGEuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGQpLGMuY2FsbGJhY2smJmMu Y2FsbGJhY2suYXBwbHkoZFswXSxhcmd1bWVudHMpLGQuZGVxdWV1ZSgpfSl9KX19 KGpRdWVyeSksZnVuY3Rpb24oYSl7YS5lZmZlY3RzLmJvdW5jZT1mdW5jdGlvbihi KXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1b InBvc2l0aW9uIiwidG9wIiwibGVmdCJdLGY9YS5lZmZlY3RzLnNldE1vZGUoYyxi Lm9wdGlvbnMubW9kZXx8ImVmZmVjdCIpLGc9Yi5vcHRpb25zLmRpcmVjdGlvbnx8 InVwIixoPWIub3B0aW9ucy5kaXN0YW5jZXx8MjAsaT1iLm9wdGlvbnMudGltZXN8 fDUsaj1iLmR1cmF0aW9ufHwyNTA7L3Nob3d8aGlkZS8udGVzdChmKSYmZC5wdXNo KCJvcGFjaXR5IiksYS5lZmZlY3RzLnNhdmUoYyxkKSxjLnNob3coKSxhLmVmZmVj dHMuY3JlYXRlV3JhcHBlcihjKTt2YXIgaz1nPT0idXAifHxnPT0iZG93biI/InRv cCI6ImxlZnQiO2c9Zz09InVwInx8Zz09ImxlZnQiPyJwb3MiOiJuZWciLGg9Yi5v cHRpb25zLmRpc3RhbmNlfHwoaz09InRvcCI/Yy5vdXRlckhlaWdodCh7bWFyZ2lu OiEwfSkvMzpjLm91dGVyV2lkdGgoe21hcmdpbjohMH0pLzMpLGY9PSJzaG93IiYm Yy5jc3MoIm9wYWNpdHkiLDApLmNzcyhrLGc9PSJwb3MiPy1oOmgpLGY9PSJoaWRl IiYmKGgvPWkqMiksZiE9ImhpZGUiJiZpLS07aWYoZj09InNob3ciKXt2YXIgbD17 b3BhY2l0eToxfTtsW2tdPShnPT0icG9zIj8iKz0iOiItPSIpK2gsYy5hbmltYXRl KGwsai8yLGIub3B0aW9ucy5lYXNpbmcpLGgvPTIsaS0tfWZvcihsPTA7bDxpO2wr Kyl7dmFyIG09e30sbj17fTttW2tdPShnPT0icG9zIj8iLT0iOiIrPSIpK2gsbltr XT0oZz09InBvcyI/Iis9IjoiLT0iKStoLGMuYW5pbWF0ZShtLGovMixiLm9wdGlv bnMuZWFzaW5nKS5hbmltYXRlKG4sai8yLGIub3B0aW9ucy5lYXNpbmcpLGg9Zj09 ImhpZGUiP2gqMjpoLzJ9Zj09ImhpZGUiPyhsPXtvcGFjaXR5OjB9LGxba109KGc9 PSJwb3MiPyItPSI6Iis9IikraCxjLmFuaW1hdGUobCxqLzIsYi5vcHRpb25zLmVh c2luZyxmdW5jdGlvbigpe2MuaGlkZSgpLGEuZWZmZWN0cy5yZXN0b3JlKGMsZCks YS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIoYyksYi5jYWxsYmFjayYmYi5jYWxsYmFj ay5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSk6KG09e30sbj17fSxtW2tdPShnPT0i cG9zIj8iLT0iOiIrPSIpK2gsbltrXT0oZz09InBvcyI/Iis9IjoiLT0iKStoLGMu YW5pbWF0ZShtLGovMixiLm9wdGlvbnMuZWFzaW5nKS5hbmltYXRlKG4sai8yLGIu b3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXthLmVmZmVjdHMucmVzdG9yZShjLGQp LGEuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGMpLGIuY2FsbGJhY2smJmIuY2FsbGJh Y2suYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGMucXVldWUoImZ4IixmdW5jdGlv bigpe2MuZGVxdWV1ZSgpfSksYy5kZXF1ZXVlKCl9KX19KGpRdWVyeSksZnVuY3Rp b24oYSl7YS5lZmZlY3RzLmNsaXA9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMucXVl dWUoZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGY9WyJwb3NpdGlvbiIsInRvcCIs ImxlZnQiLCJoZWlnaHQiLCJ3aWR0aCJdLGc9YS5lZmZlY3RzLnNldE1vZGUoZCxj Lm9wdGlvbnMubW9kZXx8ImhpZGUiKSxoPWMub3B0aW9ucy5kaXJlY3Rpb258fCJ2 ZXJ0aWNhbCI7YS5lZmZlY3RzLnNhdmUoZCxmKSxkLnNob3coKTt2YXIgaT1hLmVm ZmVjdHMuY3JlYXRlV3JhcHBlcihkKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSk7 aT1kWzBdLnRhZ05hbWU9PSJJTUciP2k6ZDt2YXIgaj17c2l6ZTpoPT0idmVydGlj YWwiPyJoZWlnaHQiOiJ3aWR0aCIscG9zaXRpb246aD09InZlcnRpY2FsIj8idG9w IjoibGVmdCJ9O2g9aD09InZlcnRpY2FsIj9pLmhlaWdodCgpOmkud2lkdGgoKSxn PT0ic2hvdyImJihpLmNzcyhqLnNpemUsMCksaS5jc3Moai5wb3NpdGlvbixoLzIp KTt2YXIgaz17fTtrW2ouc2l6ZV09Zz09InNob3ciP2g6MCxrW2oucG9zaXRpb25d PWc9PSJzaG93Ij8wOmgvMixpLmFuaW1hdGUoayx7cXVldWU6ITEsZHVyYXRpb246 Yy5kdXJhdGlvbixlYXNpbmc6Yy5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5j dGlvbigpe2c9PSJoaWRlIiYmZC5oaWRlKCksYS5lZmZlY3RzLnJlc3RvcmUoZCxm KSxhLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihkKSxjLmNhbGxiYWNrJiZjLmNhbGxi YWNrLmFwcGx5KGRbMF0sYXJndW1lbnRzKSxkLmRlcXVldWUoKX19KX0pfX0oalF1 ZXJ5KSxmdW5jdGlvbihhKXthLmVmZmVjdHMuZHJvcD1mdW5jdGlvbihiKXtyZXR1 cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBlPWEodGhpcyksZj1bInBvc2l0 aW9uIiwidG9wIiwibGVmdCIsIm9wYWNpdHkiXSxnPWEuZWZmZWN0cy5zZXRNb2Rl KGUsYi5vcHRpb25zLm1vZGV8fCJoaWRlIiksaD1iLm9wdGlvbnMuZGlyZWN0aW9u fHwibGVmdCI7YS5lZmZlY3RzLnNhdmUoZSxmKSxlLnNob3coKSxhLmVmZmVjdHMu Y3JlYXRlV3JhcHBlcihlKTt2YXIgaT1oPT0idXAifHxoPT0iZG93biI/InRvcCI6 ImxlZnQiO2g9aD09InVwInx8aD09ImxlZnQiPyJwb3MiOiJuZWciO3ZhciBqPWIu b3B0aW9ucy5kaXN0YW5jZXx8KGk9PSJ0b3AiP2Uub3V0ZXJIZWlnaHQoe21hcmdp bjohMH0pLzI6ZS5vdXRlcldpZHRoKHttYXJnaW46ITB9KS8yKTtnPT0ic2hvdyIm JmUuY3NzKCJvcGFjaXR5IiwwKS5jc3MoaSxoPT0icG9zIj8tajpqKTt2YXIgaz17 b3BhY2l0eTpnPT0ic2hvdyI/MTowfTtrW2ldPShnPT0ic2hvdyI/aD09InBvcyI/ Iis9IjoiLT0iOmg9PSJwb3MiPyItPSI6Iis9IikraixlLmFuaW1hdGUoayx7cXVl dWU6ITEsZHVyYXRpb246Yi5kdXJhdGlvbixlYXNpbmc6Yi5vcHRpb25zLmVhc2lu Zyxjb21wbGV0ZTpmdW5jdGlvbigpe2c9PSJoaWRlIiYmZS5oaWRlKCksYS5lZmZl Y3RzLnJlc3RvcmUoZSxmKSxhLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihlKSxiLmNh bGxiYWNrJiZiLmNhbGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLmRlcXVl dWUoKX19KX0pfX0oalF1ZXJ5KSxmdW5jdGlvbihhKXthLmVmZmVjdHMuZXhwbG9k ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBj PWIub3B0aW9ucy5waWVjZXM/TWF0aC5yb3VuZChNYXRoLnNxcnQoYi5vcHRpb25z LnBpZWNlcykpOjMsZD1iLm9wdGlvbnMucGllY2VzP01hdGgucm91bmQoTWF0aC5z cXJ0KGIub3B0aW9ucy5waWVjZXMpKTozO2Iub3B0aW9ucy5tb2RlPWIub3B0aW9u cy5tb2RlPT0idG9nZ2xlIj9hKHRoaXMpLmlzKCI6dmlzaWJsZSIpPyJoaWRlIjoi c2hvdyI6Yi5vcHRpb25zLm1vZGU7dmFyIGU9YSh0aGlzKS5zaG93KCkuY3NzKCJ2 aXNpYmlsaXR5IiwiaGlkZGVuIiksZj1lLm9mZnNldCgpO2YudG9wLT1wYXJzZUlu dChlLmNzcygibWFyZ2luVG9wIiksMTApfHwwLGYubGVmdC09cGFyc2VJbnQoZS5j c3MoIm1hcmdpbkxlZnQiKSwxMCl8fDA7Zm9yKHZhciBnPWUub3V0ZXJXaWR0aCgh MCksaD1lLm91dGVySGVpZ2h0KCEwKSxpPTA7aTxjO2krKylmb3IodmFyIGs9MDtr PGQ7aysrKWUuY2xvbmUoKS5hcHBlbmRUbygiYm9keSIpLndyYXAoIjxkaXY+PC9k aXY+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6InZpc2li bGUiLGxlZnQ6LWsqKGcvZCksdG9wOi1pKihoL2MpfSkucGFyZW50KCkuYWRkQ2xh c3MoInVpLWVmZmVjdHMtZXhwbG9kZSIpLmNzcyh7cG9zaXRpb246ImFic29sdXRl IixvdmVyZmxvdzoiaGlkZGVuIix3aWR0aDpnL2QsaGVpZ2h0OmgvYyxsZWZ0OmYu bGVmdCtrKihnL2QpKyhiLm9wdGlvbnMubW9kZT09InNob3ciPyhrLU1hdGguZmxv b3IoZC8yKSkqKGcvZCk6MCksdG9wOmYudG9wK2kqKGgvYykrKGIub3B0aW9ucy5t b2RlPT0ic2hvdyI/KGktTWF0aC5mbG9vcihjLzIpKSooaC9jKTowKSxvcGFjaXR5 OmIub3B0aW9ucy5tb2RlPT0ic2hvdyI/MDoxfSkuYW5pbWF0ZSh7bGVmdDpmLmxl ZnQrayooZy9kKSsoYi5vcHRpb25zLm1vZGU9PSJzaG93Ij8wOihrLU1hdGguZmxv b3IoZC8yKSkqKGcvZCkpLHRvcDpmLnRvcCtpKihoL2MpKyhiLm9wdGlvbnMubW9k ZT09InNob3ciPzA6KGktTWF0aC5mbG9vcihjLzIpKSooaC9jKSksb3BhY2l0eTpi Lm9wdGlvbnMubW9kZT09InNob3ciPzE6MH0sYi5kdXJhdGlvbnx8NTAwKTtzZXRU aW1lb3V0KGZ1bmN0aW9uKCl7Yi5vcHRpb25zLm1vZGU9PSJzaG93Ij9lLmNzcyh7 dmlzaWJpbGl0eToidmlzaWJsZSJ9KTplLmNzcyh7dmlzaWJpbGl0eToidmlzaWJs ZSJ9KS5oaWRlKCksYi5jYWxsYmFjayYmYi5jYWxsYmFjay5hcHBseShlWzBdKSxl LmRlcXVldWUoKSxhKCJkaXYudWktZWZmZWN0cy1leHBsb2RlIikucmVtb3ZlKCl9 LGIuZHVyYXRpb258fDUwMCl9KX19KGpRdWVyeSksZnVuY3Rpb24oYSl7YS5lZmZl Y3RzLmZhZGU9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24o KXt2YXIgZD1hKHRoaXMpLGU9YS5lZmZlY3RzLnNldE1vZGUoZCxjLm9wdGlvbnMu bW9kZXx8ImhpZGUiKTtkLmFuaW1hdGUoe29wYWNpdHk6ZX0se3F1ZXVlOiExLGR1 cmF0aW9uOmMuZHVyYXRpb24sZWFzaW5nOmMub3B0aW9ucy5lYXNpbmcsY29tcGxl dGU6ZnVuY3Rpb24oKXtjLmNhbGxiYWNrJiZjLmNhbGxiYWNrLmFwcGx5KHRoaXMs YXJndW1lbnRzKSxkLmRlcXVldWUoKX19KX0pfX0oalF1ZXJ5KSxmdW5jdGlvbihh KXthLmVmZmVjdHMuZm9sZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5xdWV1ZShm dW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1bInBvc2l0aW9uIiwidG9wIiwibGVm dCJdLGY9YS5lZmZlY3RzLnNldE1vZGUoZCxiLm9wdGlvbnMubW9kZXx8ImhpZGUi KSxnPWIub3B0aW9ucy5zaXplfHwxNSxoPSEhYi5vcHRpb25zLmhvcml6Rmlyc3Qs aT1iLmR1cmF0aW9uP2IuZHVyYXRpb24vMjphLmZ4LnNwZWVkcy5fZGVmYXVsdC8y O2EuZWZmZWN0cy5zYXZlKGQsZSksZC5zaG93KCk7dmFyIGo9YS5lZmZlY3RzLmNy ZWF0ZVdyYXBwZXIoZCkuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pLGs9Zj09InNo b3ciIT1oLGw9az9bIndpZHRoIiwiaGVpZ2h0Il06WyJoZWlnaHQiLCJ3aWR0aCJd O2s9az9bai53aWR0aCgpLGouaGVpZ2h0KCldOltqLmhlaWdodCgpLGoud2lkdGgo KV07dmFyIG09LyhbMC05XSspJS8uZXhlYyhnKTttJiYoZz1wYXJzZUludChtWzFd LDEwKS8xMDAqa1tmPT0iaGlkZSI/MDoxXSksZj09InNob3ciJiZqLmNzcyhoP3to ZWlnaHQ6MCx3aWR0aDpnfTp7aGVpZ2h0Omcsd2lkdGg6MH0pLGg9e30sbT17fSxo W2xbMF1dPWY9PSJzaG93Ij9rWzBdOmcsbVtsWzFdXT1mPT0ic2hvdyI/a1sxXTow LGouYW5pbWF0ZShoLGksYi5vcHRpb25zLmVhc2luZykuYW5pbWF0ZShtLGksYi5v cHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2Y9PSJoaWRlIiYmZC5oaWRlKCksYS5l ZmZlY3RzLnJlc3RvcmUoZCxlKSxhLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihkKSxi LmNhbGxiYWNrJiZiLmNhbGxiYWNrLmFwcGx5KGRbMF0sYXJndW1lbnRzKSxkLmRl cXVldWUoKX0pfSl9fShqUXVlcnkpLGZ1bmN0aW9uKGEpe2EuZWZmZWN0cy5oaWdo bGlnaHQ9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24oKXt2 YXIgZD1hKHRoaXMpLGU9WyJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kQ29s b3IiLCJvcGFjaXR5Il0sZj1hLmVmZmVjdHMuc2V0TW9kZShkLGMub3B0aW9ucy5t b2RlfHwic2hvdyIpLGc9e2JhY2tncm91bmRDb2xvcjpkLmNzcygiYmFja2dyb3Vu ZENvbG9yIil9O2Y9PSJoaWRlIiYmKGcub3BhY2l0eT0wKSxhLmVmZmVjdHMuc2F2 ZShkLGUpLGQuc2hvdygpLmNzcyh7YmFja2dyb3VuZEltYWdlOiJub25lIixiYWNr Z3JvdW5kQ29sb3I6Yy5vcHRpb25zLmNvbG9yfHwiI2ZmZmY5OSJ9KS5hbmltYXRl KGcse3F1ZXVlOiExLGR1cmF0aW9uOmMuZHVyYXRpb24sZWFzaW5nOmMub3B0aW9u cy5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXtmPT0iaGlkZSImJmQuaGlkZSgp LGEuZWZmZWN0cy5yZXN0b3JlKGQsZSksZj09InNob3ciJiYhYS5zdXBwb3J0Lm9w YWNpdHkmJnRoaXMuc3R5bGUucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSxjLmNh bGxiYWNrJiZjLmNhbGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxkLmRlcXVl dWUoKX19KX0pfX0oalF1ZXJ5KSxmdW5jdGlvbihhKXthLmVmZmVjdHMucHVsc2F0 ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBj PWEodGhpcyksZT1hLmVmZmVjdHMuc2V0TW9kZShjLGIub3B0aW9ucy5tb2RlfHwi c2hvdyIpO3RpbWVzPShiLm9wdGlvbnMudGltZXN8fDUpKjItMSxkdXJhdGlvbj1i LmR1cmF0aW9uP2IuZHVyYXRpb24vMjphLmZ4LnNwZWVkcy5fZGVmYXVsdC8yLGlz VmlzaWJsZT1jLmlzKCI6dmlzaWJsZSIpLGFuaW1hdGVUbz0wLGlzVmlzaWJsZXx8 KGMuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCksYW5pbWF0ZVRvPTEpLChlPT0iaGlk ZSImJmlzVmlzaWJsZXx8ZT09InNob3ciJiYhaXNWaXNpYmxlKSYmdGltZXMtLTtm b3IoZT0wO2U8dGltZXM7ZSsrKWMuYW5pbWF0ZSh7b3BhY2l0eTphbmltYXRlVG99 LGR1cmF0aW9uLGIub3B0aW9ucy5lYXNpbmcpLGFuaW1hdGVUbz0oYW5pbWF0ZVRv KzEpJTI7Yy5hbmltYXRlKHtvcGFjaXR5OmFuaW1hdGVUb30sZHVyYXRpb24sYi5v cHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2FuaW1hdGVUbz09MCYmYy5oaWRlKCks Yi5jYWxsYmFjayYmYi5jYWxsYmFjay5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxj LnF1ZXVlKCJmeCIsZnVuY3Rpb24oKXtjLmRlcXVldWUoKX0pLmRlcXVldWUoKX0p fX0oalF1ZXJ5KSxmdW5jdGlvbihhKXthLmVmZmVjdHMucHVmZj1mdW5jdGlvbihi KXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1h LmVmZmVjdHMuc2V0TW9kZShkLGIub3B0aW9ucy5tb2RlfHwiaGlkZSIpLGY9cGFy c2VJbnQoYi5vcHRpb25zLnBlcmNlbnQsMTApfHwxNTAsZz1mLzEwMCxoPXtoZWln aHQ6ZC5oZWlnaHQoKSx3aWR0aDpkLndpZHRoKCl9O2EuZXh0ZW5kKGIub3B0aW9u cyx7ZmFkZTohMCxtb2RlOmUscGVyY2VudDplPT0iaGlkZSI/ZjoxMDAsZnJvbTpl PT0iaGlkZSI/aDp7aGVpZ2h0OmguaGVpZ2h0Kmcsd2lkdGg6aC53aWR0aCpnfX0p LGQuZWZmZWN0KCJzY2FsZSIsYi5vcHRpb25zLGIuZHVyYXRpb24sYi5jYWxsYmFj ayksZC5kZXF1ZXVlKCl9KX0sYS5lZmZlY3RzLnNjYWxlPWZ1bmN0aW9uKGIpe3Jl dHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWEuZXh0 ZW5kKCEwLHt9LGIub3B0aW9ucyksZj1hLmVmZmVjdHMuc2V0TW9kZShkLGIub3B0 aW9ucy5tb2RlfHwiZWZmZWN0IiksZz1wYXJzZUludChiLm9wdGlvbnMucGVyY2Vu dCwxMCl8fChwYXJzZUludChiLm9wdGlvbnMucGVyY2VudCwxMCk9PTA/MDpmPT0i aGlkZSI/MDoxMDApLGg9Yi5vcHRpb25zLmRpcmVjdGlvbnx8ImJvdGgiLGk9Yi5v cHRpb25zLm9yaWdpbjtmIT0iZWZmZWN0IiYmKGUub3JpZ2luPWl8fFsibWlkZGxl IiwiY2VudGVyIl0sZS5yZXN0b3JlPSEwKSxpPXtoZWlnaHQ6ZC5oZWlnaHQoKSx3 aWR0aDpkLndpZHRoKCl9LGQuZnJvbT1iLm9wdGlvbnMuZnJvbXx8KGY9PSJzaG93 Ij97aGVpZ2h0OjAsd2lkdGg6MH06aSksZz17eTpoIT0iaG9yaXpvbnRhbCI/Zy8x MDA6MSx4OmghPSJ2ZXJ0aWNhbCI/Zy8xMDA6MX0sZC50bz17aGVpZ2h0OmkuaGVp Z2h0KmcueSx3aWR0aDppLndpZHRoKmcueH0sYi5vcHRpb25zLmZhZGUmJihmPT0i c2hvdyImJihkLmZyb20ub3BhY2l0eT0wLGQudG8ub3BhY2l0eT0xKSxmPT0iaGlk ZSImJihkLmZyb20ub3BhY2l0eT0xLGQudG8ub3BhY2l0eT0wKSksZS5mcm9tPWQu ZnJvbSxlLnRvPWQudG8sZS5tb2RlPWYsZC5lZmZlY3QoInNpemUiLGUsYi5kdXJh dGlvbixiLmNhbGxiYWNrKSxkLmRlcXVldWUoKX0pfSxhLmVmZmVjdHMuc2l6ZT1m dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBkPWEo dGhpcyksZT1bInBvc2l0aW9uIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0 Iiwib3ZlcmZsb3ciLCJvcGFjaXR5Il0sZj1bInBvc2l0aW9uIiwidG9wIiwibGVm dCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLGc9WyJ3aWR0aCIsImhlaWdodCIsIm92 ZXJmbG93Il0saD1bImZvbnRTaXplIl0saT1bImJvcmRlclRvcFdpZHRoIiwiYm9y ZGVyQm90dG9tV2lkdGgiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLGo9 WyJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwicGFkZGluZ0xl ZnQiLCJwYWRkaW5nUmlnaHQiXSxrPWEuZWZmZWN0cy5zZXRNb2RlKGQsYi5vcHRp b25zLm1vZGV8fCJlZmZlY3QiKSxsPWIub3B0aW9ucy5yZXN0b3JlfHwhMSxtPWIu b3B0aW9ucy5zY2FsZXx8ImJvdGgiLG49Yi5vcHRpb25zLm9yaWdpbixvPXtoZWln aHQ6ZC5oZWlnaHQoKSx3aWR0aDpkLndpZHRoKCl9O2QuZnJvbT1iLm9wdGlvbnMu ZnJvbXx8byxkLnRvPWIub3B0aW9ucy50b3x8byxuJiYobj1hLmVmZmVjdHMuZ2V0 QmFzZWxpbmUobixvKSxkLmZyb20udG9wPShvLmhlaWdodC1kLmZyb20uaGVpZ2h0 KSpuLnksZC5mcm9tLmxlZnQ9KG8ud2lkdGgtZC5mcm9tLndpZHRoKSpuLngsZC50 by50b3A9KG8uaGVpZ2h0LWQudG8uaGVpZ2h0KSpuLnksZC50by5sZWZ0PShvLndp ZHRoLWQudG8ud2lkdGgpKm4ueCk7dmFyIHA9e2Zyb206e3k6ZC5mcm9tLmhlaWdo dC9vLmhlaWdodCx4OmQuZnJvbS53aWR0aC9vLndpZHRofSx0bzp7eTpkLnRvLmhl aWdodC9vLmhlaWdodCx4OmQudG8ud2lkdGgvby53aWR0aH19O2lmKG09PSJib3gi fHxtPT0iYm90aCIpcC5mcm9tLnkhPXAudG8ueSYmKGU9ZS5jb25jYXQoaSksZC5m cm9tPWEuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGQsaSxwLmZyb20ueSxkLmZyb20p LGQudG89YS5lZmZlY3RzLnNldFRyYW5zaXRpb24oZCxpLHAudG8ueSxkLnRvKSks cC5mcm9tLnghPXAudG8ueCYmKGU9ZS5jb25jYXQoaiksZC5mcm9tPWEuZWZmZWN0 cy5zZXRUcmFuc2l0aW9uKGQsaixwLmZyb20ueCxkLmZyb20pLGQudG89YS5lZmZl Y3RzLnNldFRyYW5zaXRpb24oZCxqLHAudG8ueCxkLnRvKSk7KG09PSJjb250ZW50 Inx8bT09ImJvdGgiKSYmcC5mcm9tLnkhPXAudG8ueSYmKGU9ZS5jb25jYXQoaCks ZC5mcm9tPWEuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGQsaCxwLmZyb20ueSxkLmZy b20pLGQudG89YS5lZmZlY3RzLnNldFRyYW5zaXRpb24oZCxoLHAudG8ueSxkLnRv KSksYS5lZmZlY3RzLnNhdmUoZCxsP2U6ZiksZC5zaG93KCksYS5lZmZlY3RzLmNy ZWF0ZVdyYXBwZXIoZCksZC5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIikuY3NzKGQu ZnJvbSk7aWYobT09ImNvbnRlbnQifHxtPT0iYm90aCIpaT1pLmNvbmNhdChbIm1h cmdpblRvcCIsIm1hcmdpbkJvdHRvbSJdKS5jb25jYXQoaCksaj1qLmNvbmNhdChb Im1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCJdKSxnPWUuY29uY2F0KGkpLmNvbmNh dChqKSxkLmZpbmQoIipbd2lkdGhdIikuZWFjaChmdW5jdGlvbigpe2NoaWxkPWEo dGhpcyksbCYmYS5lZmZlY3RzLnNhdmUoY2hpbGQsZyk7dmFyIGQ9e2hlaWdodDpj aGlsZC5oZWlnaHQoKSx3aWR0aDpjaGlsZC53aWR0aCgpfTtjaGlsZC5mcm9tPXto ZWlnaHQ6ZC5oZWlnaHQqcC5mcm9tLnksd2lkdGg6ZC53aWR0aCpwLmZyb20ueH0s Y2hpbGQudG89e2hlaWdodDpkLmhlaWdodCpwLnRvLnksd2lkdGg6ZC53aWR0aCpw LnRvLnh9LHAuZnJvbS55IT1wLnRvLnkmJihjaGlsZC5mcm9tPWEuZWZmZWN0cy5z ZXRUcmFuc2l0aW9uKGNoaWxkLGkscC5mcm9tLnksY2hpbGQuZnJvbSksY2hpbGQu dG89YS5lZmZlY3RzLnNldFRyYW5zaXRpb24oY2hpbGQsaSxwLnRvLnksY2hpbGQu dG8pKSxwLmZyb20ueCE9cC50by54JiYoY2hpbGQuZnJvbT1hLmVmZmVjdHMuc2V0 VHJhbnNpdGlvbihjaGlsZCxqLHAuZnJvbS54LGNoaWxkLmZyb20pLGNoaWxkLnRv PWEuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGNoaWxkLGoscC50by54LGNoaWxkLnRv KSksY2hpbGQuY3NzKGNoaWxkLmZyb20pLGNoaWxkLmFuaW1hdGUoY2hpbGQudG8s Yi5kdXJhdGlvbixiLm9wdGlvbnMuZWFzaW5nLGZ1bmN0aW9uKCl7bCYmYS5lZmZl Y3RzLnJlc3RvcmUoY2hpbGQsZyl9KX0pO2QuYW5pbWF0ZShkLnRvLHtxdWV1ZToh MSxkdXJhdGlvbjpiLmR1cmF0aW9uLGVhc2luZzpiLm9wdGlvbnMuZWFzaW5nLGNv bXBsZXRlOmZ1bmN0aW9uKCl7ZC50by5vcGFjaXR5PT09MCYmZC5jc3MoIm9wYWNp dHkiLGQuZnJvbS5vcGFjaXR5KSxrPT0iaGlkZSImJmQuaGlkZSgpLGEuZWZmZWN0 cy5yZXN0b3JlKGQsbD9lOmYpLGEuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGQpLGIu Y2FsbGJhY2smJmIuY2FsbGJhY2suYXBwbHkodGhpcyxhcmd1bWVudHMpLGQuZGVx dWV1ZSgpfX0pfSl9fShqUXVlcnkpLGZ1bmN0aW9uKGEpe2EuZWZmZWN0cy5zaGFr ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBj PWEodGhpcyksZT1bInBvc2l0aW9uIiwidG9wIiwibGVmdCJdO2EuZWZmZWN0cy5z ZXRNb2RlKGMsYi5vcHRpb25zLm1vZGV8fCJlZmZlY3QiKTt2YXIgZj1iLm9wdGlv bnMuZGlyZWN0aW9ufHwibGVmdCIsZz1iLm9wdGlvbnMuZGlzdGFuY2V8fDIwLGg9 Yi5vcHRpb25zLnRpbWVzfHwzLGk9Yi5kdXJhdGlvbnx8Yi5vcHRpb25zLmR1cmF0 aW9ufHwxNDA7YS5lZmZlY3RzLnNhdmUoYyxlKSxjLnNob3coKSxhLmVmZmVjdHMu Y3JlYXRlV3JhcHBlcihjKTt2YXIgaj1mPT0idXAifHxmPT0iZG93biI/InRvcCI6 ImxlZnQiLGs9Zj09InVwInx8Zj09ImxlZnQiPyJwb3MiOiJuZWciO2Y9e307dmFy IGw9e30sbT17fTtmW2pdPShrPT0icG9zIj8iLT0iOiIrPSIpK2csbFtqXT0oaz09 InBvcyI/Iis9IjoiLT0iKStnKjIsbVtqXT0oaz09InBvcyI/Ii09IjoiKz0iKStn KjIsYy5hbmltYXRlKGYsaSxiLm9wdGlvbnMuZWFzaW5nKTtmb3IoZz0xO2c8aDtn KyspYy5hbmltYXRlKGwsaSxiLm9wdGlvbnMuZWFzaW5nKS5hbmltYXRlKG0saSxi Lm9wdGlvbnMuZWFzaW5nKTtjLmFuaW1hdGUobCxpLGIub3B0aW9ucy5lYXNpbmcp LmFuaW1hdGUoZixpLzIsYi5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2EuZWZm ZWN0cy5yZXN0b3JlKGMsZSksYS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIoYyksYi5j YWxsYmFjayYmYi5jYWxsYmFjay5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxjLnF1 ZXVlKCJmeCIsZnVuY3Rpb24oKXtjLmRlcXVldWUoKX0pLGMuZGVxdWV1ZSgpfSl9 fShqUXVlcnkpLGZ1bmN0aW9uKGEpe2EuZWZmZWN0cy5zbGlkZT1mdW5jdGlvbihi KXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBlPWEodGhpcyksZj1b InBvc2l0aW9uIiwidG9wIiwibGVmdCJdLGc9YS5lZmZlY3RzLnNldE1vZGUoZSxi Lm9wdGlvbnMubW9kZXx8InNob3ciKSxoPWIub3B0aW9ucy5kaXJlY3Rpb258fCJs ZWZ0IjthLmVmZmVjdHMuc2F2ZShlLGYpLGUuc2hvdygpLGEuZWZmZWN0cy5jcmVh dGVXcmFwcGVyKGUpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KTt2YXIgaT1oPT0i dXAifHxoPT0iZG93biI/InRvcCI6ImxlZnQiO2g9aD09InVwInx8aD09ImxlZnQi PyJwb3MiOiJuZWciO3ZhciBqPWIub3B0aW9ucy5kaXN0YW5jZXx8KGk9PSJ0b3Ai P2Uub3V0ZXJIZWlnaHQoe21hcmdpbjohMH0pOmUub3V0ZXJXaWR0aCh7bWFyZ2lu OiEwfSkpO2c9PSJzaG93IiYmZS5jc3MoaSxoPT0icG9zIj8tajpqKTt2YXIgaz17 fTtrW2ldPShnPT0ic2hvdyI/aD09InBvcyI/Iis9IjoiLT0iOmg9PSJwb3MiPyIt PSI6Iis9IikraixlLmFuaW1hdGUoayx7cXVldWU6ITEsZHVyYXRpb246Yi5kdXJh dGlvbixlYXNpbmc6Yi5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigp e2c9PSJoaWRlIiYmZS5oaWRlKCksYS5lZmZlY3RzLnJlc3RvcmUoZSxmKSxhLmVm ZmVjdHMucmVtb3ZlV3JhcHBlcihlKSxiLmNhbGxiYWNrJiZiLmNhbGxiYWNrLmFw cGx5KHRoaXMsYXJndW1lbnRzKSxlLmRlcXVldWUoKX19KX0pfX0oalF1ZXJ5KSxm dW5jdGlvbihhKXthLmVmZmVjdHMudHJhbnNmZXI9ZnVuY3Rpb24oYil7cmV0dXJu IHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGQ9YShiLm9wdGlv bnMudG8pLGY9ZC5vZmZzZXQoKTtkPXt0b3A6Zi50b3AsbGVmdDpmLmxlZnQsaGVp Z2h0OmQuaW5uZXJIZWlnaHQoKSx3aWR0aDpkLmlubmVyV2lkdGgoKX0sZj1jLm9m ZnNldCgpO3ZhciBnPWEoJzxkaXYgY2xhc3M9InVpLWVmZmVjdHMtdHJhbnNmZXIi PjwvZGl2PicpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKGIub3B0 aW9ucy5jbGFzc05hbWUpLmNzcyh7dG9wOmYudG9wLGxlZnQ6Zi5sZWZ0LGhlaWdo dDpjLmlubmVySGVpZ2h0KCksd2lkdGg6Yy5pbm5lcldpZHRoKCkscG9zaXRpb246 ImFic29sdXRlIn0pLmFuaW1hdGUoZCxiLmR1cmF0aW9uLGIub3B0aW9ucy5lYXNp bmcsZnVuY3Rpb24oKXtnLnJlbW92ZSgpLGIuY2FsbGJhY2smJmIuY2FsbGJhY2su YXBwbHkoY1swXSxhcmd1bWVudHMpLGMuZGVxdWV1ZSgpfSl9KX19KGpRdWVyeSks InVzZSBzdHJpY3QiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7KHR5cGVvZiBj b25zb2xlIT0idW5kZWZpbmVkInx8dHlwZW9mIGNvbnNvbGUubG9nIT0idW5kZWZp bmVkIikmJmNvbnNvbGUubG9nKCJjdXN0b20gZmlsZSBpbnB1dDogIithKX1mdW5j dGlvbiBjKGIpe3ZhciBjPWEoYikub2Zmc2V0KCk7cmV0dXJue2xlZnQ6Yy5sZWZ0 LHJpZ2h0OmIub2Zmc2V0TGVmdCtiLm9mZnNldFdpZHRoLHRvcDpjLnRvcCxib3R0 b206Yi5vZmZzZXRUb3ArYi5vZmZzZXRIZWlnaHR9fWZ1bmN0aW9uIGQoKXtyZXR1 cm4gdHlwZW9mIGQuaWQ9PSJ1bmRlZmluZWQiJiYoZC5pZD0wKSwrK2QuaWR9YS5m bi5jdXN0b21JbnB1dEZpbGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gaihhKXtmLnBh cmVudCgpLmNzcygidmlzaWJpbGl0eSIsYT8idmlzaWJsZSI6ImhpZGRlbiIpfWZ1 bmN0aW9uIGsoYSl7Zy50b2dnbGVDbGFzcyhlLnJlcGxhY2VtZW50Q2xhc3NIb3Zl cixhKX1mdW5jdGlvbiBsKGEpe2cudG9nZ2xlQ2xhc3MoZS5yZXBsYWNlbWVudENs YXNzQWN0aXZlLGEpfWZ1bmN0aW9uIG0oKXtmdW5jdGlvbiBiKCl7dmFyIGI9YSh0 aGlzKS52YWwoKS5yZXBsYWNlKC8uKihcL3xcXCkvLCIiKTtoLmdldCgwKS5ub2Rl TmFtZS50b1VwcGVyQ2FzZSgpPT09IklOUFVUIj9oLnZhbChiKTpoLnRleHQoYiks Yj9oLnNob3coKTpoLmhpZGUoKSxsKGIhPT0iIiksZS5jaGFuZ2VDYWxsYmFjayhi KX1mdW5jdGlvbiBjKCl7dmFyIGQ9Zi5nZXQoMCksZz17fTtmb3IodmFyIGg9MDto PGQuYXR0cmlidXRlcy5sZW5ndGg7aCs9MSl7dmFyIGk9ZC5hdHRyaWJ1dGVzW2hd O2kuc3BlY2lmaWVkPT09ITAmJmkubmFtZSE9PSJ2YWx1ZSImJihnW2kubmFtZV09 aS52YWx1ZSl9Zy52YWx1ZT0iIixmPWEoIjxpbnB1dCAvPiIsZyksYSh0aGlzKS5y ZXBsYWNlV2l0aChmKSxmLmNzcyhlLmlucHV0Q3NzKS5iaW5kKCJjaGFuZ2UiLGIp LmJpbmQoImNsZWFyIixjKS50cmlnZ2VyKCJjaGFuZ2UiKSxsKCExKX1mLmJpbmQo ImNoYW5nZSIsYikuYmluZCgiY2xlYXIiLGMpfWZ1bmN0aW9uIG4oKXt2YXIgYj1j KGcpLGQ9YSgiPGRpdiAvPiIse2Nzczp7cG9zaXRpb246ImFic29sdXRlIix2aXNp YmlsaXR5OiJoaWRkZW4iLG92ZXJmbG93OiJoaWRkZW4iLHpJbmRleDoxZTcsb3Bh Y2l0eTowLGhlaWdodDpnLmdldCgwKS5vZmZzZXRIZWlnaHQsZGlyZWN0aW9uOiJs dHIifX0pLmFkZENsYXNzKGUud3JhcHBlckNsYXNzKS5iaW5kKCJtb3VzZW91dCIs ZnVuY3Rpb24oKXtqKCExKSxrKCExKX0pO2Yud3JhcChkKS5jc3MoZS5pbnB1dENz cyl9ZnVuY3Rpb24gbygpe3RyeXtpZighalF1ZXJ5LmNvbnRhaW5zKGRvY3VtZW50 LmJvZHksaC5nZXQoMCkpKXRocm93Im5vdCBmb3VuZCJ9Y2F0Y2goYSl7aWYoIWgu bGVuZ3RoKXRocm93ImZpbGVuYW1lIGlzIGVtcHR5IjtnLmFmdGVyKGgpfWguYWRk Q2xhc3MoZS5maWxlbmFtZUNsYXNzKyItIitpKX1mdW5jdGlvbiBwKCl7Zy5hZGRD bGFzcyhlLnJlcGxhY2VtZW50Q2xhc3MrIi0iK2kpLmluc2VydEJlZm9yZShmKS5i aW5kKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2ooITApLGsoITApfSkuYmluZCgi aW5pdCIsZnVuY3Rpb24oKXtuKCksbygpfSkudHJpZ2dlcigiaW5pdCIpfWZ1bmN0 aW9uIHEoYil7aT1kKCksZj1hKGIpLG0oKSxwKCl9dmFyIGU9e3JlcGxhY2VtZW50 Q2xhc3M6ImN1c3RvbUlucHV0RmlsZSIscmVwbGFjZW1lbnRDbGFzc0hvdmVyOiJj dXN0b21JbnB1dEZpbGVIb3ZlciIscmVwbGFjZW1lbnRDbGFzc0FjdGl2ZToiY3Vz dG9tSW5wdXRGaWxlQWN0aXZlIixmaWxlbmFtZUNsYXNzOiJjdXN0b21JbnB1dEZp bGVOYW1lIix3cmFwcGVyQ2xhc3M6ImN1c3RvbUlucHV0RmlsZVdyYXBwZXIiLHJl cGxhY2VtZW50OmEoIjxkaXYgLz4iLHt0ZXh0OiJ1cGxvYWQiLCJjbGFzcyI6ImN1 c3RvbUlucHV0RmlsZSJ9KSxmaWxlbmFtZTphKCI8ZGl2IC8+Iix7ImNsYXNzIjoi Y3VzdG9tSW5wdXRGaWxlTmFtZSJ9KSxpbnB1dENzczp7Zm9udFNpemU6IjYwMHB4 Iixwb3NpdGlvbjoiYWJzb2x1dGUiLHJpZ2h0OjAsbWFyZ2luOjAscGFkZGluZzow fSxjaGFuZ2VDYWxsYmFjazphLm5vb3B9O2ImJmEuZXh0ZW5kKGUsYik7dmFyIGYs Zz1hKGUucmVwbGFjZW1lbnQpLGg9YShlLmZpbGVuYW1lKSxpPTA7cmV0dXJuIHRo aXMuZWFjaChmdW5jdGlvbigpe3RyeXtxKHRoaXMpfWNhdGNoKGEpe319KSx0aGlz fX0oalF1ZXJ5KSxmdW5jdGlvbihhKXthLmZuLmZpbGV1cGxvYWRlcj1mdW5jdGlv bihjKXtpZihiW2NdKXJldHVybiBiW2NdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90 eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzCiwxKSk7aWYodHlwZW9mIGM9PSJvYmpl Y3QifHwhYylyZXR1cm4gYi5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLmVy cm9yKCJNZXRob2QgIitjKyIgZG9lcyBub3QgZXhpc3Qgb24galF1ZXJ5LmZpbGV1 cGxvYWRlciIpfTt2YXIgYj17aW5pdDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5l YWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxkPWMuZGF0YSgiZmlsZXVwbG9h ZGVyIik7aWYoIWQpdHJ5e2IuZWxlbWVudD10aGlzO3ZhciBlPW5ldyBxcS5GaWxl VXBsb2FkZXIoYik7Yy5kYXRhKCJmaWxldXBsb2FkZXIiLGUpfWNhdGNoKGYpe2Eu ZXJyb3IoIkVycm9yIG9uIGluaXQgalF1ZXJ5LmZpbGV1cGxvYWRlcjogIitmKX19 KX19fShqUXVlcnkpO3ZhciBxcT1xcXx8e307cXEuZXh0ZW5kPWZ1bmN0aW9uKGEs Yil7Zm9yKHZhciBjIGluIGIpYVtjXT1iW2NdfSxxcS5pbmRleE9mPWZ1bmN0aW9u KGEsYixjKXtpZihhLmluZGV4T2YpcmV0dXJuIGEuaW5kZXhPZihiLGMpO2M9Y3x8 MDt2YXIgZD1hLmxlbmd0aDtjPDAmJihjKz1kKTtmb3IoO2M8ZDtjKyspaWYoYyBp biBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0scXEuZ2V0VW5pcXVlSWQ9 ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhKyt9 fSgpLHFxLmF0dGFjaD1mdW5jdGlvbihhLGIsYyl7YS5hZGRFdmVudExpc3RlbmVy P2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0 YWNoRXZlbnQoIm9uIitiLGMpfSxxcS5kZXRhY2g9ZnVuY3Rpb24oYSxiLGMpe2Eu cmVtb3ZlRXZlbnRMaXN0ZW5lcj9hLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLCEx KTphLmF0dGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0scXEucHJl dmVudERlZmF1bHQ9ZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVsdD9hLnByZXZl bnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMX0scXEuaW5zZXJ0QmVmb3JlPWZ1 bmN0aW9uKGEsYil7Yi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpfSxxcS5y ZW1vdmU9ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpfSxx cS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiBhPT1iPyEwOmEuY29udGFp bnM/YS5jb250YWlucyhiKTohIShiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEp JjgpfSxxcS50b0VsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZnVuY3Rpb24oYil7YS5pbm5lckhUTUw9 Yjt2YXIgYz1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGEucmVtb3ZlQ2hpbGQoYyksY319 KCkscXEuY3NzPWZ1bmN0aW9uKGEsYil7Yi5vcGFjaXR5IT1udWxsJiZ0eXBlb2Yg YS5zdHlsZS5vcGFjaXR5IT0ic3RyaW5nIiYmdHlwZW9mIGEuZmlsdGVycyE9InVu ZGVmaW5lZCImJihiLmZpbHRlcj0iYWxwaGEob3BhY2l0eT0iK01hdGgucm91bmQo MTAwKmIub3BhY2l0eSkrIikiKSxxcS5leHRlbmQoYS5zdHlsZSxiKX0scXEuaGFz Q2xhc3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgUmVnRXhwKCIoXnwgKSIrYisi KCB8JCkiKTtyZXR1cm4gYy50ZXN0KGEuY2xhc3NOYW1lKX0scXEuYWRkQ2xhc3M9 ZnVuY3Rpb24oYSxiKXtxcS5oYXNDbGFzcyhhLGIpfHwoYS5jbGFzc05hbWUrPSIg IitiKX0scXEucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgUmVn RXhwKCIoXnwgKSIrYisiKCB8JCkiKTthLmNsYXNzTmFtZT1hLmNsYXNzTmFtZS5y ZXBsYWNlKGMsIiAiKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9LHFxLnNldFRl eHQ9ZnVuY3Rpb24oYSxiKXthLmlubmVyVGV4dD1iLGEudGV4dENvbnRlbnQ9Yn0s cXEuY2hpbGRyZW49ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1hLmZpcnN0Q2hpbGQ7 d2hpbGUoYyljLm5vZGVUeXBlPT0xJiZiLnB1c2goYyksYz1jLm5leHRTaWJsaW5n O3JldHVybiBifSxxcS5nZXRCeUNsYXNzPWZ1bmN0aW9uKGEsYil7aWYoYS5xdWVy eVNlbGVjdG9yQWxsKXJldHVybiBhLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK2IpO3Zh ciBjPVtdLGQ9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGU9ZC5sZW5ndGg7 Zm9yKHZhciBmPTA7ZjxlO2YrKylxcS5oYXNDbGFzcyhkW2ZdLGIpJiZjLnB1c2go ZFtmXSk7cmV0dXJuIGN9LHFxLm9iajJ1cmw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBk PVtdLGU9IiYiLGY9ZnVuY3Rpb24oYSxjKXt2YXIgZT1iPy9cW1xdJC8udGVzdChi KT9iOmIrIlsiK2MrIl0iOmM7ZSE9InVuZGVmaW5lZCImJmMhPSJ1bmRlZmluZWQi JiZkLnB1c2godHlwZW9mIGE9PSJvYmplY3QiP3FxLm9iajJ1cmwoYSxlLCEwKTpP YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk9PT0iW29iamVjdCBGdW5j dGlvbl0iP2VuY29kZVVSSUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9u ZW50KGEoKSk6ZW5jb2RlVVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21w b25lbnQoYSkpfTtpZighYyYmYillPS9cPy8udGVzdChiKT8vXD8kLy50ZXN0KGIp PyIiOiImIjoiPyIsZC5wdXNoKGIpLGQucHVzaChxcS5vYmoydXJsKGEpKTtlbHNl IGlmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKT09PSJbb2JqZWN0 IEFycmF5XSImJnR5cGVvZiBhIT0idW5kZWZpbmVkIilmb3IodmFyIGc9MCxoPWEu bGVuZ3RoO2c8aDsrK2cpZihhW2ddLGcpO2Vsc2UgaWYodHlwZW9mIGEhPSJ1bmRl ZmluZWQiJiZhIT09bnVsbCYmdHlwZW9mIGE9PSJvYmplY3QiKWZvcih2YXIgZyBp biBhKWYoYVtnXSxnKTtlbHNlIGQucHVzaChlbmNvZGVVUklDb21wb25lbnQoYikr Ij0iK2VuY29kZVVSSUNvbXBvbmVudChhKSk7cmV0dXJuIGQuam9pbihlKS5yZXBs YWNlKC9eJi8sIiIpLnJlcGxhY2UoLyUyMC9nLCIrIil9O3ZhciBxcT1xcXx8e307 cXEuRmlsZVVwbG9hZGVyQmFzaWM9ZnVuY3Rpb24oYSl7dGhpcy5fb3B0aW9ucz17 ZGVidWc6ITEsYWN0aW9uOiIvc2VydmVyL3VwbG9hZCIscGFyYW1zOnt9LG5hbWU6 ImZpbGUiLGJ1dHRvbjpudWxsLGJ1dHRvbl9sYWJlbDoi0JfQsNCz0YDRg9C30LjR gtGMINC60LDRgNGC0LjQvdC60YMiLG11bHRpcGxlOiEwLG1heENvbm5lY3Rpb25z OjMsb25seU9uZUZpbGU6ITEsaHRtbDVhdXRvOiEwLGFsbG93ZWRFeHRlbnNpb25z OltdLHNpemVMaW1pdDowLG1pblNpemVMaW1pdDowLG9uU3VibWl0OmZ1bmN0aW9u KGEsYil7fSxvblByb2dyZXNzOmZ1bmN0aW9uKGEsYixjLGQpe30sb25Db21wbGV0 ZTpmdW5jdGlvbihhLGIsYyl7fSxvbkNhbmNlbDpmdW5jdGlvbihhLGIpe30sbWVz c2FnZXM6e3R5cGVFcnJvcjoie2ZpbGV9INC40LzQtdC10YIg0L3QtdC00L7Qv9GD 0YHRgtC40LzQvtC1INGA0LDQt9GA0LXRiNC10L3QuNC1LiDQoNCw0LfRgNC10YjQ tdC90Ysg0YTQvtGA0LzQsNGC0Ysge2V4dGVuc2lvbnN9IixzaXplRXJyb3I6Intm aWxlfSDRgdC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QuSwg0LzQsNC60YHQuNC8 0LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCDRhNCw0LnQu9CwOiB7c2l6ZUxpbWl0 fS4iLG1pblNpemVFcnJvcjoie2ZpbGV9INGB0LvQuNGI0LrQvtC8INC80LDQu9C1 0L3RjNC60LjQuSwg0LzQuNC90LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg 0YTQsNC50LvQsDoge21pblNpemVMaW1pdH0uIixlbXB0eUVycm9yOiLQn9C+0YXQ vtC20LUsINGH0YLQviB7ZmlsZX0g0L/Rg9GB0YLQvtC5INGE0LDQudC7LiDQktGL 0LHQtdGA0LjRgtC1INC00YDRg9Cz0L7QuSDRhNCw0LnQuywg0L/QvtC20LDQu9GD 0LnRgdGC0LAiLG9uTGVhdmU6ItCSINC00LDQvdC90YvQuSDQvNC+0LzQtdC90YIg 0LfQsNCz0YDRg9C20LDQtdGC0YHRjyDRhNCw0LnQuywg0LXRgdC70Lgg0LLRiyDR g9C50LTQtdGC0LUg0YEg0Y3RgtC+0Lkg0YHRgtGA0LDQvdC40YbRiywg0LfQsNCz 0YDRg9C30LrQsCDQv9GA0LXQutGA0LDRgtC40YLRgdGPIn0sc2hvd01lc3NhZ2U6 ZnVuY3Rpb24oYSl7YWxlcnQoYSl9fSxxcS5leHRlbmQodGhpcy5fb3B0aW9ucyxh KSx0aGlzLl9maWxlc0luUHJvZ3Jlc3M9MCx0aGlzLl9oYW5kbGVyPXRoaXMuX2Ny ZWF0ZVVwbG9hZEhhbmRsZXIoKSx0aGlzLl9vcHRpb25zLmJ1dHRvbiYmKHRoaXMu X2J1dHRvbj10aGlzLl9jcmVhdGVVcGxvYWRCdXR0b24odGhpcy5fb3B0aW9ucy5i dXR0b24pKSx0aGlzLl9wcmV2ZW50TGVhdmVJblByb2dyZXNzKCl9LHFxLkZpbGVV cGxvYWRlckJhc2ljLnByb3RvdHlwZT17c2V0UGFyYW1zOmZ1bmN0aW9uKGEpe3Ro aXMuX29wdGlvbnMucGFyYW1zPWF9LGdldEluUHJvZ3Jlc3M6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fZmlsZXNJblByb2dyZXNzfSxfY3JlYXRlVXBsb2FkQnV0dG9u OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7cmV0dXJuIG5ldyBxcS5VcGxvYWRCdXR0 b24oe25hbWU6dGhpcy5fb3B0aW9ucy5uYW1lLGVsZW1lbnQ6YSxtdWx0aXBsZTp0 aGlzLl9vcHRpb25zLm11bHRpcGxlJiZxcS5VcGxvYWRIYW5kbGVyWGhyLmlzU3Vw cG9ydGVkKCksb25DaGFuZ2U6ZnVuY3Rpb24oYSl7Yi5fb25JbnB1dENoYW5nZShh KX19KX0sX2NyZWF0ZVVwbG9hZEhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlz LGI7YS5fb3B0aW9ucy5odG1sNWF1dG89PTEmJnFxLlVwbG9hZEhhbmRsZXJYaHIu aXNTdXBwb3J0ZWQoKSYmJC5zdXBwb3J0LmZpbGVTZW5kaW5nP2I9IlVwbG9hZEhh bmRsZXJYaHIiOmI9IlVwbG9hZEhhbmRsZXJGb3JtIjt2YXIgYz1uZXcgcXFbYl0o e2RlYnVnOnRoaXMuX29wdGlvbnMuZGVidWcsYWN0aW9uOnRoaXMuX29wdGlvbnMu YWN0aW9uLG1heENvbm5lY3Rpb25zOnRoaXMuX29wdGlvbnMubWF4Q29ubmVjdGlv bnMsb25Qcm9ncmVzczpmdW5jdGlvbihiLGMsZCxlKXthLl9vblByb2dyZXNzKGIs YyxkLGUpLGEuX29wdGlvbnMub25Qcm9ncmVzcyhiLGMsZCxlKX0sb25Db21wbGV0 ZTpmdW5jdGlvbihiLGMsZCl7YS5fb25Db21wbGV0ZShiLGMsZCksYS5fb3B0aW9u cy5vbkNvbXBsZXRlKGIsYyxkKX0sb25DYW5jZWw6ZnVuY3Rpb24oYixjKXthLl9v bkNhbmNlbChiLGMpLGEuX29wdGlvbnMub25DYW5jZWwoYixjKX19KTtyZXR1cm4g Y30sX3ByZXZlbnRMZWF2ZUluUHJvZ3Jlc3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlz O3FxLmF0dGFjaCh3aW5kb3csImJlZm9yZXVubG9hZCIsZnVuY3Rpb24oYil7aWYo IWEuX2ZpbGVzSW5Qcm9ncmVzcylyZXR1cm47dmFyIGI9Ynx8d2luZG93LmV2ZW50 O3JldHVybiBiLnJldHVyblZhbHVlPWEuX29wdGlvbnMubWVzc2FnZXMub25MZWF2 ZSxhLl9vcHRpb25zLm1lc3NhZ2VzLm9uTGVhdmV9KX0sX29uU3VibWl0OmZ1bmN0 aW9uKGEsYil7dGhpcy5fZmlsZXNJblByb2dyZXNzKyt9LF9vblByb2dyZXNzOmZ1 bmN0aW9uKGEsYixjLGQpe30sX29uQ29tcGxldGU6ZnVuY3Rpb24oYSxiLGMpe3Ro aXMuX2ZpbGVzSW5Qcm9ncmVzcy0tLGMuZXJyb3ImJnRoaXMuX29wdGlvbnMuc2hv d01lc3NhZ2UoYy5lcnJvcil9LF9vbkNhbmNlbDpmdW5jdGlvbihhLGIpe3RoaXMu X2ZpbGVzSW5Qcm9ncmVzcy0tfSxfb25JbnB1dENoYW5nZTpmdW5jdGlvbihhKXt0 aGlzLl9oYW5kbGVyIGluc3RhbmNlb2YgcXEuVXBsb2FkSGFuZGxlclhocj90aGlz Ll91cGxvYWRGaWxlTGlzdChhLmZpbGVzKTp0aGlzLl92YWxpZGF0ZUZpbGUoYSkm JnRoaXMuX3VwbG9hZEZpbGUoYSksdGhpcy5fYnV0dG9uLnJlc2V0KCl9LF91cGxv YWRGaWxlTGlzdDpmdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2Ir KylpZighdGhpcy5fdmFsaWRhdGVGaWxlKGFbYl0pKXJldHVybjtmb3IodmFyIGI9 MDtiPGEubGVuZ3RoO2IrKyl0aGlzLl91cGxvYWRGaWxlKGFbYl0pfSxfdXBsb2Fk RmlsZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9oYW5kbGVyLmFkZChhLHRoaXMu X29wdGlvbnMpLGM9dGhpcy5faGFuZGxlci5nZXROYW1lKGIpO3RoaXMuX29wdGlv bnMub25TdWJtaXQoYixjKSE9PSExJiYodGhpcy5fb25TdWJtaXQoYixjKSx0aGlz Ll9oYW5kbGVyLnVwbG9hZChiLHRoaXMuX29wdGlvbnMucGFyYW1zKSl9LF92YWxp ZGF0ZUZpbGU6ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4gYS52YWx1ZT9iPWEu dmFsdWUucmVwbGFjZSgvLiooXC98XFwpLywiIik6KGI9YS5maWxlTmFtZSE9bnVs bD9hLmZpbGVOYW1lOmEubmFtZSxjPWEuZmlsZVNpemUhPW51bGw/YS5maWxlU2l6 ZTphLnNpemUpLHRoaXMuX2lzQWxsb3dlZEV4dGVuc2lvbihiKT9jPT09MD8odGhp cy5fZXJyb3IoImVtcHR5RXJyb3IiLGIpLCExKTpjJiZ0aGlzLl9vcHRpb25zLnNp emVMaW1pdCYmYz50aGlzLl9vcHRpb25zLnNpemVMaW1pdD8odGhpcy5fZXJyb3Io InNpemVFcnJvciIsYiksITEpOmMmJmM8dGhpcy5fb3B0aW9ucy5taW5TaXplTGlt aXQ/KHRoaXMuX2Vycm9yKCJtaW5TaXplRXJyb3IiLGIpLCExKTohMDoodGhpcy5f ZXJyb3IoInR5cGVFcnJvciIsYiksITEpfSxfZXJyb3I6ZnVuY3Rpb24oYSxiKXtm dW5jdGlvbiBkKGEsYil7Yz1jLnJlcGxhY2UoYSxiKX12YXIgYz10aGlzLl9vcHRp b25zLm1lc3NhZ2VzW2FdO2QoIntmaWxlfSIsdGhpcy5fZm9ybWF0RmlsZU5hbWUo YikpLGQoIntleHRlbnNpb25zfSIsdGhpcy5fb3B0aW9ucy5hbGxvd2VkRXh0ZW5z aW9ucy5qb2luKCIsICIpKSxkKCJ7c2l6ZUxpbWl0fSIsdGhpcy5fZm9ybWF0U2l6 ZSh0aGlzLl9vcHRpb25zLnNpemVMaW1pdCkpLGQoInttaW5TaXplTGltaXR9Iix0 aGlzLl9mb3JtYXRTaXplKHRoaXMuX29wdGlvbnMubWluU2l6ZUxpbWl0KSksdGhp cy5fb3B0aW9ucy5zaG93TWVzc2FnZShjKX0sX2Zvcm1hdEZpbGVOYW1lOmZ1bmN0 aW9uKGEpe3JldHVybiBhLmxlbmd0aD4zMyYmKGE9YS5zbGljZSgwLDE5KSsiLi4u IithLnNsaWNlKC0xMykpLGF9LF9pc0FsbG93ZWRFeHRlbnNpb246ZnVuY3Rpb24o YSl7dmFyIGI9LTEhPT1hLmluZGV4T2YoIi4iKT9hLnJlcGxhY2UoLy4qWy5dLywi IikudG9Mb3dlckNhc2UoKToiIixjPXRoaXMuX29wdGlvbnMuYWxsb3dlZEV4dGVu c2lvbnM7aWYoIWMubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgZD0wO2Q8Yy5sZW5n dGg7ZCsrKWlmKGNbZF0udG9Mb3dlckNhc2UoKT09YilyZXR1cm4hMDtyZXR1cm4h MX0sX2Zvcm1hdFNpemU6ZnVuY3Rpb24oYSl7dmFyIGI9LTE7ZG8gYS89MTAyNCxi Kys7d2hpbGUoYT45OSk7cmV0dXJuIE1hdGgubWF4KGEsLjEpLnRvRml4ZWQoMSkr WyJrQiIsIk1CIiwiR0IiLCJUQiIsIlBCIiwiRUIiXVtiXX19LHFxLkZpbGVVcGxv YWRlcj1mdW5jdGlvbihhKXtxcS5GaWxlVXBsb2FkZXJCYXNpYy5hcHBseSh0aGlz LGFyZ3VtZW50cykscXEuZXh0ZW5kKHRoaXMuX29wdGlvbnMse2VsZW1lbnQ6bnVs bCxsaXN0RWxlbWVudDpudWxsLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJxcS11cGxv YWRlciI+PGRpdiBjbGFzcz0icXEtdXBsb2FkLWRyb3AtYXJlYSI+PHNwYW4+0J/Q tdGA0LXRgtCw0YnQuCDRhNCw0LnQuyDRgdGO0LTQsDwvc3Bhbj48L2Rpdj48ZGl2 IGNsYXNzPSJxcS11cGxvYWQtYnV0dG9uIGJ1dHRvbiI+PHNwYW4gY2xhc3M9InFx LWZpbGVuYW1lIj48L3NwYW4+PHNwYW4gY2xhc3M9ImJ1dHRvbi1jbCI+Jyt0aGlz Ll9vcHRpb25zLmJ1dHRvbl9sYWJlbCsnPC9zcGFuPjxzcGFuIGNsYXNzPSJidXR0 b24tY3IiPjwvc3Bhbj4nKyI8L2Rpdj4iKyc8dWwgY2xhc3M9InFxLXVwbG9hZC1s aXN0Ij48L3VsPicrIjwvZGl2PiIsZmlsZVRlbXBsYXRlOic8bGk+PHNwYW4gY2xh c3M9InFxLXVwbG9hZC1zcGlubmVyIj48L3NwYW4+PHNwYW4gY2xhc3M9InFxLXVw bG9hZC1maWxlIj48L3NwYW4+PHNwYW4gY2xhc3M9InFxLXVwbG9hZC1zaXplIj48 L3NwYW4+PGEgY2xhc3M9InFxLXVwbG9hZC1jYW5jZWwiIGhyZWY9IiMiPtCe0YLQ vNC10L3QuNGC0Yw8L2E+PHNwYW4gY2xhc3M9InFxLXVwbG9hZC1mYWlsZWQtdGV4 dCI+0J7RiNC40LHQutCwPC9zcGFuPjwvbGk+JyxjbGFzc2VzOntidXR0b246InFx LXVwbG9hZC1idXR0b24iLGRyb3A6InFxLXVwbG9hZC1kcm9wLWFyZWEiLGRyb3BB Y3RpdmU6InFxLXVwbG9hZC1kcm9wLWFyZWEtYWN0aXZlIixsaXN0OiJxcS11cGxv YWQtbGlzdCIsZmlsZToicXEtdXBsb2FkLWZpbGUiLHNwaW5uZXI6InFxLXVwbG9h ZC1zcGlubmVyIixzaXplOiJxcS11cGxvYWQtc2l6ZSIsY2FuY2VsOiJxcS11cGxv YWQtY2FuY2VsIixzdWNjZXNzOiJxcS11cGxvYWQtc3VjY2VzcyIsZmFpbDoicXEt dXBsb2FkLWZhaWwifX0pLHFxLmV4dGVuZCh0aGlzLl9vcHRpb25zLGEpLHRoaXMu X2VsZW1lbnQ9dGhpcy5fb3B0aW9ucy5lbGVtZW50LHRoaXMuX2VsZW1lbnQuaW5u ZXJIVE1MPXRoaXMuX29wdGlvbnMudGVtcGxhdGUsdGhpcy5fbGlzdEVsZW1lbnQ9 dGhpcy5fb3B0aW9ucy5saXN0RWxlbWVudHx8dGhpcy5fZmluZCh0aGlzLl9lbGVt ZW50LCJsaXN0IiksdGhpcy5fY2xhc3Nlcz10aGlzLl9vcHRpb25zLmNsYXNzZXMs dGhpcy5fYnV0dG9uPXRoaXMuX2NyZWF0ZVVwbG9hZEJ1dHRvbih0aGlzLl9maW5k KHRoaXMuX2VsZW1lbnQsImJ1dHRvbiIpKSx0aGlzLl9iaW5kQ2FuY2VsRXZlbnQo KSx0aGlzLl9zZXR1cERyYWdEcm9wKCl9LHFxLmV4dGVuZChxcS5GaWxlVXBsb2Fk ZXIucHJvdG90eXBlLHFxLkZpbGVVcGxvYWRlckJhc2ljLnByb3RvdHlwZSkscXEu ZXh0ZW5kKHFxLkZpbGVVcGxvYWRlci5wcm90b3R5cGUse19maW5kOmZ1bmN0aW9u KGEsYil7dmFyIGM9cXEuZ2V0QnlDbGFzcyhhLHRoaXMuX29wdGlvbnMuY2xhc3Nl c1tiXSlbMF07aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJlbGVtZW50IG5vdCBmb3Vu ZCAiK2IpO3JldHVybiBjfSxfc2V0dXBEcmFnRHJvcDpmdW5jdGlvbigpe3ZhciBh PXRoaXMsYj10aGlzLl9maW5kKHRoaXMuX2VsZW1lbnQsImRyb3AiKSxjPW5ldyBx cS5VcGxvYWREcm9wWm9uZSh7ZWxlbWVudDpiLG9uRW50ZXI6ZnVuY3Rpb24oYyl7 cXEuYWRkQ2xhc3MoYixhLl9jbGFzc2VzLmRyb3BBY3RpdmUpLGMuc3RvcFByb3Bh Z2F0aW9uKCl9LG9uTGVhdmU6ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24o KX0sb25MZWF2ZU5vdERlc2NlbmRhbnRzOmZ1bmN0aW9uKGMpe3FxLnJlbW92ZUNs YXNzKGIsYS5fY2xhc3Nlcy5kcm9wQWN0aXZlKX0sb25Ecm9wOmZ1bmN0aW9uKGMp e2Iuc3R5bGUuZGlzcGxheT0ibm9uZSIscXEucmVtb3ZlQ2xhc3MoYixhLl9jbGFz c2VzLmRyb3BBY3RpdmUpLGEuX3VwbG9hZEZpbGVMaXN0KGMuZGF0YVRyYW5zZmVy LmZpbGVzKX19KTtiLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHFxLmF0dGFjaChkb2N1 bWVudCwiZHJhZ2VudGVyIixmdW5jdGlvbihhKXtpZighYy5faXNWYWxpZEZpbGVE cmFnKGEpKXJldHVybjtiLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn0pLHFxLmF0dGFj aChkb2N1bWVudCwiZHJhZ2xlYXZlIixmdW5jdGlvbihhKXtpZighYy5faXNWYWxp ZEZpbGVEcmFnKGEpKXJldHVybjt2YXIgZD1kb2N1bWVudC5lbGVtZW50RnJvbVBv aW50KGEuY2xpZW50WCxhLmNsaWVudFkpO2lmKCFkfHxkLm5vZGVOYW1lPT0iSFRN TCIpYi5zdHlsZS5kaXNwbGF5PSJub25lIn0pfSxfb25TdWJtaXQ6ZnVuY3Rpb24o YSxiKXtxcS5GaWxlVXBsb2FkZXJCYXNpYy5wcm90b3R5cGUuX29uU3VibWl0LmFw cGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9hZGRUb0xpc3QoYSxiKX0sX29uUHJv Z3Jlc3M6ZnVuY3Rpb24oYSxiLGMsZCl7cXEuRmlsZVVwbG9hZGVyQmFzaWMucHJv dG90eXBlLl9vblByb2dyZXNzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgZT10 aGlzLl9nZXRJdGVtQnlGaWxlSWQoYSksZj10aGlzLl9maW5kKGUsInNpemUiKTtm LnN0eWxlLmRpc3BsYXk9ImlubGluZSI7dmFyIGc7YyE9ZD9nPU1hdGgucm91bmQo Yy9kKjEwMCkrIiUgZnJvbSAiK3RoaXMuX2Zvcm1hdFNpemUoZCk6Zz10aGlzLl9m b3JtYXRTaXplKGQpLHFxLnNldFRleHQoZixnKX0sX29uQ29tcGxldGU6ZnVuY3Rp b24oYSxiLGMpe3FxLkZpbGVVcGxvYWRlckJhc2ljLnByb3RvdHlwZS5fb25Db21w bGV0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQ9dGhpcy5fZ2V0SXRlbUJ5 RmlsZUlkKGEpO3FxLnJlbW92ZSh0aGlzLl9maW5kKGQsImNhbmNlbCIpKSxxcS5y ZW1vdmUodGhpcy5fZmluZChkLCJzcGlubmVyIikpO2lmKGMuc3VjY2VzcylxcS5h ZGRDbGFzcyhkLHRoaXMuX2NsYXNzZXMuc3VjY2Vzcyk7ZWxzZXtpZihjLmVycm9y cyl7dmFyIGU9W107JC5lYWNoKGMuZXJyb3JzLGZ1bmN0aW9uKGEsYil7ZS5wdXNo KGIuam9pbigiLCAiKSl9KSwkKCIucXEtdXBsb2FkLWxpc3QtIithKyIgc3Bhbi5x cS11cGxvYWQtZmFpbGVkLXRleHQiKS5odG1sKGUuam9pbigiLCAiKSl9cXEuYWRk Q2xhc3MoZCx0aGlzLl9jbGFzc2VzLmZhaWwpfX0sX2FkZFRvTGlzdDpmdW5jdGlv bihhLGIpe3ZhciBjPXFxLnRvRWxlbWVudCh0aGlzLl9vcHRpb25zLmZpbGVUZW1w bGF0ZSk7Yy5xcUZpbGVJZD1hO3ZhciBkPXRoaXMuX2ZpbmQoYywiZmlsZSIpO3Fx LnNldFRleHQoZCx0aGlzLl9mb3JtYXRGaWxlTmFtZShiKSksdGhpcy5fZmluZChj LCJzaXplIikuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5fb3B0aW9ucy5vbmx5 T25lRmlsZSYmdGhpcy5fbGlzdEVsZW1lbnQuZmlyc3RDaGlsZCYmdGhpcy5fbGlz dEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fbGlzdEVsZW1lbnQuZmlyc3RDaGls ZCkscXEuYWRkQ2xhc3MoYywicXEtdXBsb2FkLWxpc3QtIitjLnFxRmlsZUlkKSx0 aGlzLl9saXN0RWxlbWVudC5hcHBlbmRDaGlsZChjKX0sX2dldEl0ZW1CeUZpbGVJ ZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9saXN0RWxlbWVudC5maXJzdENoaWxk O3doaWxlKGIpe2lmKGIucXFGaWxlSWQ9PWEpcmV0dXJuIGI7Yj1iLm5leHRTaWJs aW5nfX0sX2JpbmRDYW5jZWxFdmVudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10 aGlzLl9saXN0RWxlbWVudDtxcS5hdHRhY2goYiwiY2xpY2siLGZ1bmN0aW9uKGIp e2I9Ynx8d2luZG93LmV2ZW50O3ZhciBjPWIudGFyZ2V0fHxiLnNyY0VsZW1lbnQ7 aWYocXEuaGFzQ2xhc3MoYyxhLl9jbGFzc2VzLmNhbmNlbCkpe3FxLnByZXZlbnRE ZWZhdWx0KGIpO3ZhciBkPWMucGFyZW50Tm9kZTthLl9oYW5kbGVyLmNhbmNlbChk LnFxRmlsZUlkKSxxcS5yZW1vdmUoZCl9fSl9fSkscXEuVXBsb2FkRHJvcFpvbmU9 ZnVuY3Rpb24oYSl7dGhpcy5fb3B0aW9ucz17ZWxlbWVudDpudWxsLG9uRW50ZXI6 ZnVuY3Rpb24oYSl7fSxvbkxlYXZlOmZ1bmN0aW9uKGEpe30sb25MZWF2ZU5vdERl c2NlbmRhbnRzOmZ1bmN0aW9uKGEpe30sb25Ecm9wOmZ1bmN0aW9uKGEpe319LHFx LmV4dGVuZCh0aGlzLl9vcHRpb25zLGEpLHRoaXMuX2VsZW1lbnQ9dGhpcy5fb3B0 aW9ucy5lbGVtZW50LHRoaXMuX2Rpc2FibGVEcm9wT3V0c2lkZSgpLHRoaXMuX2F0 dGFjaEV2ZW50cygpfSxxcS5VcGxvYWREcm9wWm9uZS5wcm90b3R5cGU9e19kaXNh YmxlRHJvcE91dHNpZGU6ZnVuY3Rpb24oYSl7cXEuVXBsb2FkRHJvcFpvbmUuZHJv cE91dHNpZGVEaXNhYmxlZHx8KHFxLmF0dGFjaChkb2N1bWVudCwiZHJhZ292ZXIi LGZ1bmN0aW9uKGEpe2EuZGF0YVRyYW5zZmVyJiYoYS5kYXRhVHJhbnNmZXIuZHJv cEVmZmVjdD0ibm9uZSIsYS5wcmV2ZW50RGVmYXVsdCgpKX0pLHFxLlVwbG9hZERy b3Bab25lLmRyb3BPdXRzaWRlRGlzYWJsZWQ9ITApfSxfYXR0YWNoRXZlbnRzOmZ1 bmN0aW9uKCl7dmFyIGE9dGhpcztxcS5hdHRhY2goYS5fZWxlbWVudCwiZHJhZ292 ZXIiLGZ1bmN0aW9uKGIpe2lmKCFhLl9pc1ZhbGlkRmlsZURyYWcoYikpcmV0dXJu O3ZhciBjPWIuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ7Yz09Im1vdmUifHxj PT0ibGlua01vdmUiP2IuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9Im1vdmUiOmIu ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9ImNvcHkiLGIuc3RvcFByb3BhZ2F0aW9u KCksYi5wcmV2ZW50RGVmYXVsdCgpfSkscXEuYXR0YWNoKGEuX2VsZW1lbnQsImRy YWdlbnRlciIsZnVuY3Rpb24oYil7aWYoIWEuX2lzVmFsaWRGaWxlRHJhZyhiKSly ZXR1cm47YS5fb3B0aW9ucy5vbkVudGVyKGIpfSkscXEuYXR0YWNoKGEuX2VsZW1l bnQsImRyYWdsZWF2ZSIsZnVuY3Rpb24oYil7aWYoIWEuX2lzVmFsaWRGaWxlRHJh ZyhiKSlyZXR1cm47YS5fb3B0aW9ucy5vbkxlYXZlKGIpO3ZhciBjPWRvY3VtZW50 LmVsZW1lbnRGcm9tUG9pbnQoYi5jbGllbnRYLGIuY2xpZW50WSk7aWYocXEuY29u dGFpbnModGhpcyxjKSlyZXR1cm47YS5fb3B0aW9ucy5vbkxlYXZlTm90RGVzY2Vu ZGFudHMoYil9KSxxcS5hdHRhY2goYS5fZWxlbWVudCwiZHJvcCIsZnVuY3Rpb24o Yil7aWYoIWEuX2lzVmFsaWRGaWxlRHJhZyhiKSlyZXR1cm47Yi5wcmV2ZW50RGVm YXVsdCgpLGEuX29wdGlvbnMub25Ecm9wKGIpfSl9LF9pc1ZhbGlkRmlsZURyYWc6 ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhVHJhbnNmZXIsYz1uYXZpZ2F0b3IudXNl ckFnZW50LmluZGV4T2YoIkFwcGxlV2ViS2l0Iik+LTE7cmV0dXJuIGImJmIuZWZm ZWN0QWxsb3dlZCE9Im5vbmUiJiYoYi5maWxlc3x8IWMmJmIudHlwZXMuY29udGFp bnMmJmIudHlwZXMuY29udGFpbnMoIkZpbGVzIikpfX0scXEuVXBsb2FkQnV0dG9u PWZ1bmN0aW9uKGEpe3RoaXMuX29wdGlvbnM9e2VsZW1lbnQ6bnVsbCxtdWx0aXBs ZTohMSxuYW1lOiJmaWxlIixvbkNoYW5nZTpmdW5jdGlvbihhKXt9LGhvdmVyQ2xh c3M6InFxLXVwbG9hZC1idXR0b24taG92ZXIiLGZvY3VzQ2xhc3M6InFxLXVwbG9h ZC1idXR0b24tZm9jdXMifSxxcS5leHRlbmQodGhpcy5fb3B0aW9ucyxhKSx0aGlz Ll9lbGVtZW50PXRoaXMuX29wdGlvbnMuZWxlbWVudCxxcS5jc3ModGhpcy5fZWxl bWVudCx7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiaGlkZGVuIixkaXJl Y3Rpb246Imx0ciJ9KSx0aGlzLl9pbnB1dD10aGlzLl9jcmVhdGVJbnB1dCgpfSxx cS5VcGxvYWRCdXR0b24ucHJvdG90eXBlPXtnZXRJbnB1dDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9pbnB1dH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9pbnB1dC5w YXJlbnROb2RlJiZxcS5yZW1vdmUodGhpcy5faW5wdXQpLHFxLnJlbW92ZUNsYXNz KHRoaXMuX2VsZW1lbnQsdGhpcy5fb3B0aW9ucy5mb2N1c0NsYXNzKSx0aGlzLl9p bnB1dD10aGlzLl9jcmVhdGVJbnB1dCgpfSxfY3JlYXRlSW5wdXQ6ZnVuY3Rpb24o KXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3RoaXMuX29w dGlvbnMubXVsdGlwbGUmJmEuc2V0QXR0cmlidXRlKCJtdWx0aXBsZSIsIm11bHRp cGxlIiksYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJmaWxlIiksYS5zZXRBdHRyaWJ1 dGUoIm5hbWUiLHRoaXMuX29wdGlvbnMubmFtZSkscXEuY3NzKGEse3Bvc2l0aW9u OiJhYnNvbHV0ZSIscmlnaHQ6MCx0b3A6MCxmb250RmFtaWx5OiJBcmlhbCIsZm9u dFNpemU6IjExOHB4IixtYXJnaW46MCxwYWRkaW5nOjAsY3Vyc29yOiJwb2ludGVy IixvcGFjaXR5OjB9KSx0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGEpO3ZhciBi PXRoaXM7cmV0dXJuIHFxLmF0dGFjaChhLCJjaGFuZ2UiLGZ1bmN0aW9uKCl7Yi5f b3B0aW9ucy5vbkNoYW5nZShhKX0pLHFxLmF0dGFjaChhLCJtb3VzZW92ZXIiLGZ1 bmN0aW9uKCl7cXEuYWRkQ2xhc3MoYi5fZWxlbWVudCxiLl9vcHRpb25zLmhvdmVy Q2xhc3MpLCQodGhpcykuY2xvc2VzdCgiLnFxLXVwbG9hZC1idXR0b24iKS5maW5k KCJpbnB1dFt0eXBlPWJ1dHRvbl0iKS5tb3VzZW92ZXIoKX0pLHFxLmF0dGFjaChh LCJtb3VzZW91dCIsZnVuY3Rpb24oKXtxcS5yZW1vdmVDbGFzcyhiLl9lbGVtZW50 LGIuX29wdGlvbnMuaG92ZXJDbGFzcyl9KSxxcS5hdHRhY2goYSwiZm9jdXMiLGZ1 bmN0aW9uKCl7cXEuYWRkQ2xhc3MoYi5fZWxlbWVudCxiLl9vcHRpb25zLmZvY3Vz Q2xhc3MpfSkscXEuYXR0YWNoKGEsImJsdXIiLGZ1bmN0aW9uKCl7cXEucmVtb3Zl Q2xhc3MoYi5fZWxlbWVudCxiLl9vcHRpb25zLmZvY3VzQ2xhc3MpfSksd2luZG93 LmF0dGFjaEV2ZW50JiZhLnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLCItMSIpLGF9 fSxxcS5VcGxvYWRIYW5kbGVyQWJzdHJhY3Q9ZnVuY3Rpb24oYSl7dGhpcy5fb3B0 aW9ucz17ZGVidWc6ITEsYWN0aW9uOiIvdXBsb2FkLnBocCIsbWF4Q29ubmVjdGlv bnM6OTk5LG9uUHJvZ3Jlc3M6ZnVuY3Rpb24oYSxiLGMsZCl7fSxvbkNvbXBsZXRl OmZ1bmN0aW9uKGEsYixjKXt9LG9uQ2FuY2VsOmZ1bmN0aW9uKGEsYil7fX0scXEu ZXh0ZW5kKHRoaXMuX29wdGlvbnMsYSksdGhpcy5fcXVldWU9W10sdGhpcy5fcGFy YW1zPVtdfSxxcS5VcGxvYWRIYW5kbGVyQWJzdHJhY3QucHJvdG90eXBlPXtsb2c6 ZnVuY3Rpb24oYSl7dGhpcy5fb3B0aW9ucy5kZWJ1ZyYmd2luZG93LmNvbnNvbGUm JmNvbnNvbGUubG9nKCJbdXBsb2FkZXJdICIrYSl9LGFkZDpmdW5jdGlvbihhKXt9 LHVwbG9hZDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX3F1ZXVlLnB1c2goYSks ZD17fTtxcS5leHRlbmQoZCxiKSx0aGlzLl9wYXJhbXNbYV09ZCxjPD10aGlzLl9v cHRpb25zLm1heENvbm5lY3Rpb25zJiZ0aGlzLl91cGxvYWQoYSx0aGlzLl9wYXJh bXNbYV0pfSxjYW5jZWw6ZnVuY3Rpb24oYSl7dGhpcy5fY2FuY2VsKGEpLHRoaXMu X2RlcXVldWUoYSl9LGNhbmNlbEFsbDpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8 dGhpcy5fcXVldWUubGVuZ3RoO2ErKyl0aGlzLl9jYW5jZWwodGhpcy5fcXVldWVb YV0pO3RoaXMuX3F1ZXVlPVtdfSxnZXROYW1lOmZ1bmN0aW9uKGEpe30sZ2V0U2l6 ZTpmdW5jdGlvbihhKXt9LGdldFF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu X3F1ZXVlfSxfdXBsb2FkOmZ1bmN0aW9uKGEpe30sX2NhbmNlbDpmdW5jdGlvbihh KXt9LF9kZXF1ZXVlOmZ1bmN0aW9uKGEpe3ZhciBiPXFxLmluZGV4T2YodGhpcy5f cXVldWUsYSk7dGhpcy5fcXVldWUuc3BsaWNlKGIsMSk7dmFyIGM9dGhpcy5fb3B0 aW9ucy5tYXhDb25uZWN0aW9ucztpZih0aGlzLl9xdWV1ZS5sZW5ndGg+PWMpe3Zh ciBkPXRoaXMuX3F1ZXVlW2MtMV07dGhpcy5fdXBsb2FkKGQsdGhpcy5fcGFyYW1z W2RdKX19fSxxcS5VcGxvYWRIYW5kbGVyRm9ybT1mdW5jdGlvbihhKXtxcS5VcGxv YWRIYW5kbGVyQWJzdHJhY3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2lu cHV0cz17fX0scXEuZXh0ZW5kKHFxLlVwbG9hZEhhbmRsZXJGb3JtLnByb3RvdHlw ZSxxcS5VcGxvYWRIYW5kbGVyQWJzdHJhY3QucHJvdG90eXBlKSxxcS5leHRlbmQo cXEuVXBsb2FkSGFuZGxlckZvcm0ucHJvdG90eXBlLHthZGQ6ZnVuY3Rpb24oYSxi KXthLnNldEF0dHJpYnV0ZSgibmFtZSIsYi5uYW1lKTt2YXIgYz0icXEtdXBsb2Fk LWhhbmRsZXItaWZyYW1lIitxcS5nZXRVbmlxdWVJZCgpO3JldHVybiB0aGlzLl9p bnB1dHNbY109YSxhLnBhcmVudE5vZGUmJnFxLnJlbW92ZShhKSxjfSxnZXROYW1l OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9pbnB1dHNbYV0udmFsdWUucmVwbGFj ZSgvLiooXC98XFwpLywiIil9LF9jYW5jZWw6ZnVuY3Rpb24oYSl7dGhpcy5fb3B0 aW9ucy5vbkNhbmNlbChhLHRoaXMuZ2V0TmFtZShhKSksZGVsZXRlIHRoaXMuX2lu cHV0c1thXTt2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiJiYoYi5z ZXRBdHRyaWJ1dGUoInNyYyIsImphdmFzY3JpcHQ6ZmFsc2U7IikscXEucmVtb3Zl KGIpKX0sX3VwbG9hZDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2lucHV0c1th XTtpZighYyl0aHJvdyBuZXcgRXJyb3IoImZpbGUgd2l0aCBwYXNzZWQgaWQgd2Fz IG5vdCBhZGRlZCwgb3IgYWxyZWFkeSB1cGxvYWRlZCBvciBjYW5jZWxsZWQiKTt2 YXIgZD10aGlzLmdldE5hbWUoYSksZT10aGlzLl9jcmVhdGVJZnJhbWUoYSksZj10 aGlzLl9jcmVhdGVGb3JtKGUsYik7Zi5hcHBlbmRDaGlsZChjKTt2YXIgZz10aGlz O3JldHVybiB0aGlzLl9hdHRhY2hMb2FkRXZlbnQoZSxmdW5jdGlvbigpe2cubG9n KCJpZnJhbWUgbG9hZGVkIik7dmFyIGI9Zy5fZ2V0SWZyYW1lQ29udGVudEpTT04o ZSk7Zy5fb3B0aW9ucy5vbkNvbXBsZXRlKGEsZCxiKSxnLl9kZXF1ZXVlKGEpLGRl bGV0ZSBnLl9pbnB1dHNbYV0sc2V0VGltZW91dChmdW5jdGlvbigpe3FxLnJlbW92 ZShlKX0sMSl9KSxmLnN1Ym1pdCgpLHFxLnJlbW92ZShmKSxhfSxfYXR0YWNoTG9h ZEV2ZW50OmZ1bmN0aW9uKGEsYil7cXEuYXR0YWNoKGEsImxvYWQiLGZ1bmN0aW9u KCl7aWYoIWEucGFyZW50Tm9kZSlyZXR1cm47aWYoYS5jb250ZW50RG9jdW1lbnQm JmEuY29udGVudERvY3VtZW50LmJvZHkmJmEuY29udGVudERvY3VtZW50LmJvZHku aW5uZXJIVE1MPT0iZmFsc2UiKXJldHVybjtiKCl9KX0sX2dldElmcmFtZUNvbnRl bnRKU09OOmZ1bmN0aW9uKGlmcmFtZSl7dmFyIGRvYz1pZnJhbWUuY29udGVudERv Y3VtZW50P2lmcmFtZS5jb250ZW50RG9jdW1lbnQ6aWZyYW1lLmNvbnRlbnRXaW5k b3cuZG9jdW1lbnQscmVzcG9uc2U7dGhpcy5sb2coImNvbnZlcnRpbmcgaWZyYW1l J3MgaW5uZXJIVE1MIHRvIEpTT04iKSx0aGlzLmxvZygiaW5uZXJIVE1MID0gIitk b2MuYm9keS5pbm5lckhUTUwpO3RyeXtyZXNwb25zZT1ldmFsKCIoIitkb2MuYm9k eS5pbm5lckhUTUwrIikiKX1jYXRjaChlcnIpe3Jlc3BvbnNlPXt9fXJldHVybiBy ZXNwb25zZX0sX2NyZWF0ZUlmcmFtZTpmdW5jdGlvbihhKXt2YXIgYj1xcS50b0Vs ZW1lbnQoJzxpZnJhbWUgc3JjPSJqYXZhc2NyaXB0OmZhbHNlOyIgbmFtZT0iJyth KyciIC8+Jyk7cmV0dXJuIGIuc2V0QXR0cmlidXRlKCJpZCIsYSksYi5zdHlsZS5k aXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpLGJ9LF9j cmVhdGVGb3JtOmZ1bmN0aW9uKGEsYil7dmFyIGM9cXEudG9FbGVtZW50KCc8Zm9y bSBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPjwv Zm9ybT4nKSxkPXFxLm9iajJ1cmwoYix0aGlzLl9vcHRpb25zLmFjdGlvbik7cmV0 dXJuIGMuc2V0QXR0cmlidXRlKCJhY3Rpb24iLGQpLGMuc2V0QXR0cmlidXRlKCJ0 YXJnZXQiLGEubmFtZSksYy5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5i b2R5LmFwcGVuZENoaWxkKGMpLGN9fSkscXEuVXBsb2FkSGFuZGxlclhocj1mdW5j dGlvbihhKXtxcS5VcGxvYWRIYW5kbGVyQWJzdHJhY3QuYXBwbHkodGhpcyxhcmd1 bWVudHMpLHRoaXMuX2ZpbGVzPVtdLHRoaXMuX3hocnM9W10sdGhpcy5fbG9hZGVk PVtdfSxxcS5VcGxvYWRIYW5kbGVyWGhyLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7 dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyZXR1cm4gYS50 eXBlPSJmaWxlIiwibXVsdGlwbGUiaW4gYSYmdHlwZW9mIEZpbGUhPSJ1bmRlZmlu ZWQiJiZ0eXBlb2YgKG5ldyBYTUxIdHRwUmVxdWVzdCkudXBsb2FkIT0idW5kZWZp bmVkIn0scXEuZXh0ZW5kKHFxLlVwbG9hZEhhbmRsZXJYaHIucHJvdG90eXBlLHFx LlVwbG9hZEhhbmRsZXJBYnN0cmFjdC5wcm90b3R5cGUpLHFxLmV4dGVuZChxcS5V cGxvYWRIYW5kbGVyWGhyLnByb3RvdHlwZSx7YWRkOmZ1bmN0aW9uKGEsYil7aWYo YSBpbnN0YW5jZW9mIEZpbGUpcmV0dXJuIHRoaXMuX2ZpbGVzLnB1c2goYSktMTt0 aHJvdyBuZXcgRXJyb3IoIlBhc3NlZCBvYmogaW4gbm90IGEgRmlsZSAoaW4gcXEu VXBsb2FkSGFuZGxlclhocikiKX0sZ2V0TmFtZTpmdW5jdGlvbihhKXt2YXIgYj10 aGlzLl9maWxlc1thXTtyZXR1cm4gYi5maWxlTmFtZSE9bnVsbD9iLmZpbGVOYW1l OmIubmFtZX0sZ2V0U2l6ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9maWxlc1th XTtyZXR1cm4gYi5maWxlU2l6ZSE9bnVsbD9iLmZpbGVTaXplOmIuc2l6ZX0sZ2V0 TG9hZGVkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9sb2FkZWRbYV18fDB9LF91 cGxvYWQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9maWxlc1thXSxkPXRoaXMu Z2V0TmFtZShhKSxlPXRoaXMuZ2V0U2l6ZShhKTt0aGlzLl9sb2FkZWRbYV09MDt2 YXIgZj10aGlzLl94aHJzW2FdPW5ldyBYTUxIdHRwUmVxdWVzdCxnPXRoaXM7Zi51 cGxvYWQub25wcm9ncmVzcz1mdW5jdGlvbihiKXtiLmxlbmd0aENvbXB1dGFibGUm JihnLl9sb2FkZWRbYV09Yi5sb2FkZWQsZy5fb3B0aW9ucy5vblByb2dyZXNzKGEs ZCxiLmxvYWRlZCxiLnRvdGFsKSl9LGYub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0 aW9uKCl7Zi5yZWFkeVN0YXRlPT00JiZnLl9vbkNvbXBsZXRlKGEsZil9LGI9Ynx8 e30sYi5maWxlbmFtZT1kO3ZhciBoPXFxLm9iajJ1cmwoYix0aGlzLl9vcHRpb25z LmFjdGlvbik7Zi5vcGVuKCJQT1NUIixoKTt2YXIgaT1iLm5hbWU7aWYoJC5zdXBw b3J0LmZpbGVTZW5kaW5nKXt2YXIgaj1uZXcgRm9ybURhdGE7ai5hcHBlbmQoaSxj KSxmLnNlbmQoail9ZWxzZSBpZigkLnN1cHBvcnQuZmlsZVJlYWRpbmcmJmYuc2Vu ZEFzQmluYXJ5KXt2YXIgaz1uZXcgRmlsZVJlYWRlcjtrLm9ubG9hZD1mdW5jdGlv bigpe3ZhciBhPSItLXRvcnJlbnRpbm8tdXBsb2FkLWltYWdlLS0iK01hdGgucmFu ZG9tKCksYj0iIjtiKz0iQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvZm9ybS1kYXRh LCBib3VuZGFyeT0iK2ErIlxyXG5cclxuIixiKz0iLS0iK2ErIlxyXG4iLGIrPSdD b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IicraSsnIjsgZmls ZW5hbWU9IicrYy5uYW1lKyciXHJcbicsYis9IkNvbnRlbnQtVHlwZTogYXBwbGlj YXRpb24vb2N0ZXQtc3RyZWFtXHJcblxyXG4iLGIrPWsucmVzdWx0KyJcclxuIixi Kz0iLS0iK2ErIi0tIixmLnNldFJlcXVlc3RIZWFkZXIoYiksZi5zZW5kQXNCaW5h cnkoYil9LGYucmVhZEFzQmluYXJ5U3RyaW5nKGMpfWVsc2UgZi5zZXRSZXF1ZXN0 SGVhZGVyKCJDb250ZW50LVR5cGUiLCJDb250ZW50LURpc3Bvc2l0aW9uOiBmb3Jt LWRhdGE7IG5hbWU9JyIraSsiJzsgZmlsZW5hbWU9JyIrYy5uYW1lKyInIiksZi5z ZXRSZXF1ZXN0SGVhZGVyKCJVcGxvYWQtRmlsZW5hbWUiLGMubmFtZSksZi5zZXRS ZXF1ZXN0SGVhZGVyKCJVcGxvYWQtU2l6ZSIsYy5zaXplKSxmLnNldFJlcXVlc3RI ZWFkZXIoIlVwbG9hZC1UeXBlIixjLnR5cGUpLGYuc2V0UmVxdWVzdEhlYWRlcigi Q29udGVudC1MZW5ndGgiLDc0MSksZi5zZW5kKGMpfSxfb25Db21wbGV0ZTpmdW5j dGlvbihpZCx4aHIpe2lmKCF0aGlzLl9maWxlc1tpZF0pcmV0dXJuO3ZhciBuYW1l PXRoaXMuZ2V0TmFtZShpZCksc2l6ZT10aGlzLmdldFNpemUoaWQpO3RoaXMuX29w dGlvbnMub25Qcm9ncmVzcyhpZCxuYW1lLHNpemUsc2l6ZSk7aWYoeGhyLnN0YXR1 cz09MjAwKXt0aGlzLmxvZygieGhyIC0gc2VydmVyIHJlc3BvbnNlIHJlY2VpdmVk IiksdGhpcy5sb2coInJlc3BvbnNlVGV4dCA9ICIreGhyLnJlc3BvbnNlVGV4dCk7 dmFyIHJlc3BvbnNlO3RyeXtyZXNwb25zZT1ldmFsKCIoIit4aHIucmVzcG9uc2VU ZXh0KyIpIil9Y2F0Y2goZXJyKXtyZXNwb25zZT17fX10aGlzLl9vcHRpb25zLm9u Q29tcGxldGUoaWQsbmFtZSxyZXNwb25zZSl9ZWxzZSB0aGlzLl9vcHRpb25zLm9u Q29tcGxldGUoaWQsbmFtZSx7fSk7dGhpcy5fZmlsZXNbaWRdPW51bGwsdGhpcy5f eGhyc1tpZF09bnVsbCx0aGlzLl9kZXF1ZXVlKGlkKX0sX2NhbmNlbDpmdW5jdGlv bihhKXt0aGlzLl9vcHRpb25zLm9uQ2FuY2VsKGEsdGhpcy5nZXROYW1lKGEpKSx0 aGlzLl9maWxlc1thXT1udWxsLHRoaXMuX3hocnNbYV0mJih0aGlzLl94aHJzW2Fd LmFib3J0KCksdGhpcy5feGhyc1thXT1udWxsKX19KSxYTUxIdHRwUmVxdWVzdCYm WE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnNlbmRBc0JpbmFyeT09PXVuZGVmaW5l ZCYmdHlwZW9mIFVpbnQ4QXJyYXkhPSJ1bmRlZmluZWQiJiYoWE1MSHR0cFJlcXVl c3QucHJvdG90eXBlLnNlbmRBc0JpbmFyeT1mdW5jdGlvbihhKXt2YXIgYj1uZXcg QmxvYkJ1aWxkZXIsYz1uZXcgQXJyYXlCdWZmZXIoYS5sZW5ndGgpLGQ9bmV3IFVp bnQ4QXJyYXkoYywwKTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKylkW2VdPWEu Y2hhckNvZGVBdChlKSYyNTU7Yi5hcHBlbmQoYyksYj1iLmdldEJsb2IoKSx0aGlz LnNlbmQoYil9KSxmdW5jdGlvbihhKXthLmZuLnd5c2l3eWc9ZnVuY3Rpb24oYil7 dmFyIGM9dGhpczthKHRoaXMpLmhpZGUoKS5wYXJlbnQoKS5wcmVwZW5kKCc8ZGl2 IGNsYXNzPSJ0b3JyZW50aW5vLWVkaXRvciI+JythKHRoaXMpLnRleHQoKSsiPC9k aXY+Iik7dmFyIGQ9YSgiLnRvcnJlbnRpbm8tZWRpdG9yIik7cmV0dXJuIGI9PTA/ ZC5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKTtiLnBhcmVudCgpLmZpbmQo Ii53eXNpd3lnLXRvb2xiYXIiKS5kZXRhY2goKSxiLnVud3JhcCgpLGIucmVtb3Zl Q2xhc3MoImVkaXRvciIpLHRoaXMuY29udGVudEVkaXRhYmxlPSJmYWxzZSJ9KTpk LmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGQ9Yi5hdHRyKCJjbGFzcyIp LnNwbGl0KCIgIik7aWYoYS5pbkFycmF5KCJlZGl0b3IiLGQpPi0xKXJldHVybiEx O2IuYWRkQ2xhc3MoImVkaXRvciIpLGIud3JhcCgnPGRpdiBjbGFzcz0id3lzaXd5 ZyI+PC9kaXY+JyksdGhpcy5jb250ZW50RWRpdGFibGU9InRydWUiLG1ha2VUb29s YmFyKGEodGhpcykpLGEodGhpcykuYmluZCgiYmx1ciIsZnVuY3Rpb24oKXtjLnRl eHQoYSh0aGlzKS5odG1sKCkpLnRyaWdnZXIoImNoYW5nZSIpfSl9KX19KGpRdWVy eSksJChmdW5jdGlvbigpe3ZhciBhPSQoIiNtYWluLXNlYXJjaCIpO2EuZm9jdXMo KX0pLGZ1bmN0aW9uKGEpe2EuZm4ubG9naW5fbGluaz1mdW5jdGlvbihiKXthKHRo aXMpLmNsaWNrKGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiPT11bmRl ZmluZWQmJihiPWRvY3VtZW50LmxvY2F0aW9uKSxhLmZhY2Vib3goe2FqYXg6YSh0 aGlzKS5hdHRyKCJocmVmIikrIj9yZXR1cm5fdG89IitlbmNvZGVVUklDb21wb25l bnQoYil9KX0pfSxhLmZuLnNpZ251cF9saW5rPWZ1bmN0aW9uKGIpe2EodGhpcyku Y2xpY2soZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVsdCgpLGI9PXVuZGVmaW5l ZCYmKGI9ZG9jdW1lbnQubG9jYXRpb24pLGEuZmFjZWJveCh7YWpheDphKHRoaXMp LmF0dHIoImhyZWYiKSsiP3JldHVybl90bz0iK2VuY29kZVVSSUNvbXBvbmVudChi KX0pfSl9LGEuZm4ubG9naW5fY2hlY2s9ZnVuY3Rpb24oYil7dmFyIGM9YShiKTth KHRoaXMpLmtleXVwKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKSxkPWIudmFsKCk7 ZCE9Yi5hdHRyKCJkYXRhLXZhbHVlIikmJihiLmF0dHIoImRhdGEtdmFsdWUiLGQp LGMucmVtb3ZlQ2xhc3MoInVzZWQgYXZhaWxhYmxlIikuYWRkQ2xhc3MoImxvYWRp bmciKS50ZXh0KGMuYXR0cigiZGF0YS1sb2FkaW5nIikpLGEucG9zdCgiL3VzZXJz L2xvZ2luX2NoZWNrIix7bG9naW46ZH0sZnVuY3Rpb24oYSl7Yy5yZW1vdmVDbGFz cygibG9hZGluZyB1c2VkIGF2YWlsYWJsZSIpLmFkZENsYXNzKGEpLnRleHQoYy5h dHRyKCJkYXRhLSIrYSkpfSkpfSl9LGEuZm4ub3Blbl9pZF9zZXJ2aWNlcz1mdW5j dGlvbihiKXt2YXIgYz10aGlzLGQ9YSh0aGlzKSxlPWEoYik7YS5leHRlbmQodGhp cyx7YWN0aXZhdGVfc2VydmljZTpmdW5jdGlvbihiKXtiLmFkZENsYXNzKCJhY3Rp dmUiKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt2YXIgYz1hKGIp LmZpbmQoImlucHV0Iik7Yy5sZW5ndGg+MCYmKGMuYXR0cigiY2hlY2tlZCIsInll cyIpLGUuc2hvdygpKX19KSxkLmF0dHIoInByZXBhcmVkIiwhMCksZC5maW5kKCIu c2VydmljZSBpbnB1dCIpLmhpZGUoKTt2YXIgZj1kLmZpbmQoIi5zZXJ2aWNlOmhh cyhpbnB1dDpjaGVja2VkKSIpO2YubGVuZ3RoPjAmJmMuYWN0aXZhdGVfc2Vydmlj ZShmKSxkLmZpbmQoIi5zZXJ2aWNlIikuY2xpY2soZnVuY3Rpb24oYil7Yy5hY3Rp dmF0ZV9zZXJ2aWNlKGEodGhpcykpLGIudGFyZ2V0LnRhZ05hbWUhPSJBIiYmYSh0 aGlzKS5maW5kKCJhIikuZWFjaChmdW5jdGlvbigpe2RvY3VtZW50LmxvY2F0aW9u PXRoaXMuaHJlZn0pfSkuaG92ZXIoZnVuY3Rpb24oKXthKHRoaXMpLmFkZENsYXNz KCJob3ZlciIpfSxmdW5jdGlvbigpe2EodGhpcykucmVtb3ZlQ2xhc3MoImhvdmVy Iil9KS5wcmVwZW5kKCc8aW1nIGFsdD0iUyIgY2xhc3M9Imljb24iIGhlaWdodD0i MTYiIHNyYz0iaHR0cDovL2Fzc2V0MS50b3JyZW50aW5vLmNvbS9hc3NldHMvY29t L3MtN2I2YTBiZDZkYWY4ZTQzZTM4MDhjNTVlNTg2M2E2ZDYuZ2lmIiB3aWR0aD0i MjMiIC8+Jyl9fShqUXVlcnkpLCQoZnVuY3Rpb24oKXskKCIucXVhbGl0eSAuc3Bh cmsiKS5iaW5kKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLGI9YS5j bG9zZXN0KCIucGFuZWwiKTskKCIuc3BhcmsiLGIpLnJlbW92ZUNsYXNzKCJhY3Rp dmUiKSxhLmFkZENsYXNzKCJhY3RpdmUiKTt2YXIgYz1hLmF0dHIoImNsYXNzIiku bWF0Y2goL1xkKy8pWzBdOyQoImlucHV0OmhpZGRlbiIsYikudmFsKGMpfSksJCgi I2NvbW1lbnRzIC5pdGVtIikubGl2ZSgibW91c2VlbnRlciIsZnVuY3Rpb24oKXsk KCIuZG90cyIsdGhpcykucmVtb3ZlQ2xhc3MoImhpZGRlbiIpLnBhcmVudHMoIi5p dGVtLWhvbGRlciIpLmZpbmQoIi5kb3RzOmZpcnN0IikucmVtb3ZlQ2xhc3MoImhp ZGRlbiIpfSksJCgiI2NvbW1lbnRzIC5pdGVtIikubGl2ZSgibW91c2VsZWF2ZSIs ZnVuY3Rpb24oKXskKCIuZG90cyIsdGhpcykuYWRkQ2xhc3MoImhpZGRlbiIpLnBh cmVudHMoIi5pdGVtLWhvbGRlciIpLmZpbmQoIi5kb3RzOmZpcnN0IikuYWRkQ2xh c3MoImhpZGRlbiIpfSksJCgiI2NvbW1lbnRzIC5wYXJlbnQtbGluayIpLmJpbmQo ImNsaWNrIixmdW5jdGlvbigpe3JldHVybiAkKCJodG1sLCBib2R5IikuYW5pbWF0 ZSh7c2Nyb2xsVG9wOiQoJCh0aGlzKS5hdHRyKCJocmVmIikpLm9mZnNldCgpLnRv cH0sMWUzKSwhMX0pLCQoIi5yZXN1bHRzIC5pdGVtcyBsaSIpLmJpbmQoIm1vdXNl ZW50ZXIiLGZ1bmN0aW9uKCl7JCh0aGlzKS5hZGRDbGFzcygiaG92ZXJlZCIpfSks JCgiLnJlc3VsdHMgLml0ZW1zIGxpIikuYmluZCgibW91c2VsZWF2ZSIsZnVuY3Rp b24oKXskKHRoaXMpLnJlbW92ZUNsYXNzKCJob3ZlcmVkIil9KSwkKCIudG9ycmVu dC1pbnNpZGUgbGkuY2F0IHNwYW4uZGFzaGVkIikuYmluZCgiY2xpY2siLGZ1bmN0 aW9uKCl7dmFyIGE9JCh0aGlzKS5jbG9zZXN0KCJsaSIpOyQoImRpdjpmaXJzdCIs YSkuaGFzQ2xhc3MoIm9wZW5lZCIpPygkKCJ1bDpmaXJzdCIsYSkuaGlkZSgpLCQo ImRpdjpmaXJzdCIsYSkucmVtb3ZlQ2xhc3MoIm9wZW5lZCIpKTooJCgidWw6Zmly c3QiLGEpLnNob3coKSwkKCJkaXY6Zmlyc3QiLGEpLmFkZENsYXNzKCJvcGVuZWQi KSl9KSwkKGRvY3VtZW50KS5iaW5kKCJsb2FkaW5nLmZhY2Vib3giLGZ1bmN0aW9u KCl7JCgib2JqZWN0IikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikuYWRkQ2xh c3MoImhpZGRlbkJ5RmFjZWJveCIpfSksJChkb2N1bWVudCkuYmluZCgiY2xvc2Uu ZmFjZWJveCIsZnVuY3Rpb24oKXskKCJvYmplY3QuaGlkZGVuQnlGYWNlYm94Iiku Y3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpLnJlbW92ZUNsYXNzKCJoaWRkZW5C eUZhY2Vib3giKX0pLCQoIiNuZXdfc2Vzc2lvbiIpLmxvZ2luX2xpbmsoKSwkKCIj bmV3X3VzZXIiKS5zaWdudXBfbGluaygpLCQoIiNjb21tZW50cyAuZXhwYW5kIiku Y2xpY2soZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVsdCgpLCQodGhpcykucGFy ZW50KCIuaXRlbSIpLnJlbW92ZUNsYXNzKCJjb2xsYXBzZWQiKX0pLCQoImEuc2hh cmUiKS5jbGljayhmdW5jdGlvbigpe3ZhciBhPSQoIiNzaGFyZS1wYW5lbCIpLnJl bW92ZUNsYXNzKCJoaWRkZW4iKSxiPWEuaGVpZ2h0KCksYz1wYXJzZUludCgoJCh3 aW5kb3cpLmhlaWdodCgpLWIpLzIsMTApO3JldHVybiBhLmNzcygibWFyZ2luVG9w IixjPjA/YzowKSwhMX0pLCQoIiNzaGFyZS1wYW5lbCAuY2xvc2UiKS5jbGljayhm dW5jdGlvbigpe3ZhciBhPSQoIiNzaGFyZS1wYW5lbCIpLmNzcygicG9zaXRpb24i LCJhYnNvbHV0ZSIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFkZENsYXNzKCJo aWRkZW4iKS5jc3MoInBvc2l0aW9uIiwiIil9LDApfSksJCgiI3NoYXJlLXBhbmVs IC5hZGQiKS5jbGljayhmdW5jdGlvbigpe3ZhciBhPSQodGhpcykucGFyZW50cygi ZGl2LnJvdyIpLmVxKDApLmNsb25lKCk7JCgiLmFkZCIsYSkucmVtb3ZlKCk7dmFy IGI9MCxjOyQoIiNzaGFyZS1wYW5lbCBpbnB1dFtuYW1lXj1mcmllbmRdIikuZWFj aChmdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMubmFtZS5yZXBsYWNlKCJm cmllbmQiLCIiKSwxMCk7YjxhJiYoYj1hLGM9dGhpcyl9KSxiPSJmcmllbmQiKyhi KzEpLCQoImlucHV0IixhKS5hdHRyKHt2YWx1ZToiIixpZDoic2hhcmUtIitiLG5h bWU6Yn0pLCQoImxhYmVsIixhKS5hdHRyKCJmb3IiLCJzaGFyZS0iK2IpLCQoYyku cGFyZW50KCkuYWZ0ZXIoYSl9KSwkKCIjc2VhcmNoLWZvcm0gcC5oZWxwIHNwYW4i KS5iaW5kKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgYT0kLnRyaW0oJCh0aGlzKS50 ZXh0KCkpOyQoIiNzZWFyY2giKS52YWwoYSl9KSwkKCIjY29tbWVudHMgLmNvbW1l bnQtcmF0aW5nIikuaG92ZXIoZnVuY3Rpb24oKXskKHRoaXMpLmFkZENsYXNzKCJj b21tZW50LXJhdGluZy1vdmVyIil9LGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVD bGFzcygiY29tbWVudC1yYXRpbmctb3ZlciIpfSksdHlwZW9mIHVzZXJfZWRpdF9t aXNzaW5nX3VybCE9InVuZGVmaW5lZCImJiQuZ2V0KHVzZXJfZWRpdF9taXNzaW5n X3VybCxmdW5jdGlvbihhLGIpeyQuZmFjZWJveC5sb2FkaW5nKCksJC5mYWNlYm94 LnJldmVhbChhKX0pLCQoIi5mb3J1bS1wb3N0IC5yZXBseSIpLmJpbmQoImNsaWNr IixmdW5jdGlvbigpe3ZhciBhPSQodGhpcykuY2xvc2VzdCgiLmZvcnVtLXBvc3Qi KSxiPSQoIi5hdXRob3IgLm5hbWUiLGEpLnRleHQoKSxjPSQoIi5wb3N0LWRhdGUi LGEpLnRleHQoKSxkPSQoIi5wb3N0LWNvbnRlbnQiLGEpLmh0bWwoKSxlPSc8Ymxv Y2txdW90ZT48c3BhbiBjbGFzcz0icXVvdGUtbmFtZSI+JytiKyc8L3NwYW4+IDxz cGFuIGNsYXNzPSJxdW90ZS1jb250ZW50Ij4nK2QrJzwvc3Bhbj4gPHNwYW4gY2xh c3M9InF1b3RlLWRhdGUiPicrYysiPC9zcGFuPjwvYmxvY2txdW90ZT48YnI+Ijty ZXR1cm4gJCgiI3Bvc3RfY29udGVudCIpLmh0bWxhcmVhKCJwYXN0ZUhUTUwiLGUp LCExfSl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGgoYSl7cmV0dXJuICQudHJpbSgi IithKS50b0xvY2FsZUxvd2VyQ2FzZSgpfXZhciBhPSIvc3VnZ2VzdCIsYj01MCxj PTMwMCxkPTMsZSxmLGc9MCxpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaygpe3ZhciBh PSsobmV3IERhdGUpLGU9YS1qLGY9MCxnO2o9YSxlPGMmJihpLnB1c2goZSksaS5s ZW5ndGg+ZCYmKGk9aS5zbGljZSgxLGQrMSkpKTtmb3IoZz1pLmxlbmd0aDtnLS07 KWYrPWlbZ107cmV0dXJuIGY9aS5sZW5ndGg/TWF0aC5yb3VuZChmL2kubGVuZ3Ro KTowLGY8Yj9iOmZ9dmFyIGU9e30sZj0iIixpPVtiXSxqPSsobmV3IERhdGUpO3Jl dHVybiBmdW5jdGlvbihiLGMpe2I9aChiKTt2YXIgZD1rKCk7YiE9PWYmJihnJiYo Y2xlYXJUaW1lb3V0KGcpLGc9MCksYi5sZW5ndGg+PTMmJihlW2JdP2MoZVtiXSk6 Zz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGQ9e3VybDphLGRhdGFUeXBlOiJq c29uIixjYWNoZTohMCx0aW1lb3V0OjVlMyxkYXRhOnsidGVybXMucHJlZml4Ijpi fSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2VbYl09YSxhLnZhbHVlPWIsYyhhKX0sZXJy b3I6ZnVuY3Rpb24oKXtTLmRlc3Ryb3koKX19OyQuYWpheChkKX0sZCoxLjUpKSks Zj1ifX0oKTtTPXtpbml0OmZ1bmN0aW9uKCl7JChmdW5jdGlvbigpeyQoImlucHV0 LnNlYXJjaC10ZXh0IikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cigiYXV0 b2NvbXBsZXRlIiwib2ZmIiksUy5iaW5kKCQodGhpcykpfSl9KX0sYmluZDpmdW5j dGlvbihhKXtmPWEsZi5iaW5kKCJrZXl1cC5zdWdnZXN0IixmdW5jdGlvbihhKXt2 YXIgYj0kKHRoaXMpLnZhbCgpO2I/YS53aGljaCE9MTMmJmkoYixTLnNob3cpOlMu aGlkZSgpfSkuYmluZCgia2V5ZG93bi5zdWdnZXN0IixmdW5jdGlvbihhKXtzd2l0 Y2goYS53aGljaCl7Y2FzZSAxMzpTLmhhc1NlbGVjdGVkKCkmJlMuc2V0U2VsZWN0 ZWQoKTticmVhaztjYXNlIDI3OlMuaGlkZSgpLGEucHJldmVudERlZmF1bHQoKTti cmVhaztjYXNlIDM4OlMuc2VsZWN0UHJldigpLGEucHJldmVudERlZmF1bHQoKTti cmVhaztjYXNlIDQwOlMuc2VsZWN0TmV4dCgpLGEucHJldmVudERlZmF1bHQoKTti cmVhaztkZWZhdWx0On19KSxmLnNpYmxpbmdzKCJsYWJlbCIpLmVhY2goZnVuY3Rp b24oKXtmdW5jdGlvbiBjKCl7JC5zdXBwb3J0Lm9wYWNpdHk/YVtiLmhhc0NsYXNz KCJmaWxsZWQiKXx8Yi5oYXNDbGFzcygiYWN0aXZlIik/ImZhZGVPdXQiOiJmYWRl SW4iXSgiZmFzdCIpOmEuY3NzKCJkaXNwbGF5IixiLmhhc0NsYXNzKCJmaWxsZWQi KXx8Yi5oYXNDbGFzcygiYWN0aXZlIik/Im5vbmUiOiJibG9jayIpfXZhciBhPSQo dGhpcyksYj1hLmNsb3Nlc3QoImRpdiIpO2EuY3NzKCJkaXNwbGF5Iiwibm9uZSIp LnJlbW92ZUNsYXNzKCJoaWRkZW4iKSxmLmJpbmQoImZvY3VzIixmdW5jdGlvbigp e2IuYWRkQ2xhc3MoImFjdGl2ZSIpLGMoKX0pLmJpbmQoImJsdXIiLGZ1bmN0aW9u KCl7Yi50b2dnbGVDbGFzcygiZmlsbGVkIixmLnZhbCgpIT09IiIpLnJlbW92ZUNs YXNzKCJhY3RpdmUiKSxjKCl9KS50cmlnZ2VySGFuZGxlcigiYmx1ciIpfSksZT0k KCc8ZGl2IGNsYXNzPSJzZWFyY2gtc3VnZ2VzdCI+PGlmcmFtZSBmcmFtZWJvcmRl cj0iMCIgY2xhc3M9InNlYXJjaC1zdWdnZXN0LXNoaW0iIHNyYz0iYWJvdXQ6Ymxh bmsiPjwvaWZyYW1lPjwvZGl2PicpLmFwcGVuZFRvKCJkaXYudG9wLWhlYWRlciIp LCQoImRpdi5zZWFyY2gtc3VnZ2VzdCBsaS5zZWFyY2gtc3VnZ2VzdC1pdGVtIiku bGl2ZSgiY2xpY2suc3VnZ2VzdCIsZnVuY3Rpb24oKXskKHRoaXMpLmFkZENsYXNz KCJzZWFyY2gtc3VnZ2VzdC1pdGVtLWFjdGl2ZSIpLnNpYmxpbmdzKCkucmVtb3Zl Q2xhc3MoInNlYXJjaC1zdWdnZXN0LWl0ZW0tYWN0aXZlIiksUy5maW5kU2VsZWN0 ZWQoKX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7Zi51bmJpbmQoIi5zdWdnZXN0Iiks ZyYmKGNsZWFyVGltZW91dChnKSxnPTApLGUucmVtb3ZlKCl9LHNob3c6ZnVuY3Rp b24oYSl7aWYoYS52YWx1ZSE9PWgoZi52YWwoKSkpcmV0dXJuO3ZhciBiPVtdO2lm KGEmJmEudGVybXMmJmEudGVybXMuY29udGVudF9hdXRvKXt2YXIgYz11bmRlZmlu ZWQsZD1bXTskLmVhY2goYS50ZXJtcy5jb250ZW50X2F1dG8sZnVuY3Rpb24oYSxi KXtjIT11bmRlZmluZWQmJmMud2VpZ2h0PT1iJiZhLmluZGV4T2YoYy50aXApPT0w P2RbZC5sZW5ndGgtMV09YTpkLnB1c2goYSksYz17dGlwOmEsd2VpZ2h0OmJ9fSks ZD1kLnNwbGljZSgwLDEwKSwkLmVhY2goZCxmdW5jdGlvbihhLGMpe2IucHVzaCgn PGxpIGNsYXNzPSJzZWFyY2gtc3VnZ2VzdC1pdGVtIj48ZGl2IGNsYXNzPSJzZWFy Y2gtc3VnZ2VzdC1pdGVtLWJsb2NrIj4nK2MrIjwvZGl2PjwvbGk+Iil9KTtpZihi Lmxlbmd0aCl7JCgidWwuc2VhcmNoLXN1Z2dlc3QtbGlzdCIsZSkucmVtb3ZlKCks ZS5wcmVwZW5kKCc8dWwgY2xhc3M9InNlYXJjaC1zdWdnZXN0LWxpc3QiPicrYi5q b2luKCIiKSsiPC91bD4iKS5jc3MoZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXQo KTtyZXR1cm57bGVmdDpNYXRoLnJvdW5kKGIubGVmdC1lLnBhcmVudCgpLm9mZnNl dCgpLmxlZnQpLHRvcDpNYXRoLnJvdW5kKGIudG9wLWUucGFyZW50KCkub2Zmc2V0 KCkudG9wK2Eub3V0ZXJIZWlnaHQoKSsxKSx3aWR0aDpNYXRoLnJvdW5kKGEub3V0 ZXJXaWR0aCgpLTIpfX0oZi5wYXJlbnQoKSkpLGUuZmluZCgibGkuc2VhcmNoLXN1 Z2dlc3QtaXRlbSIpLmhvdmVyKGZ1bmN0aW9uKCl7JCh0aGlzKS5hZGRDbGFzcygi c2VhcmNoLXN1Z2dlc3QtaXRlbS1ob3ZlciIpfSxmdW5jdGlvbigpeyQodGhpcyku cmVtb3ZlQ2xhc3MoInNlYXJjaC1zdWdnZXN0LWl0ZW0taG92ZXIiKX0pLGUuaGFz Q2xhc3MoInNlYXJjaC1zdWdnZXN0LXZpc2libGUiKXx8JChkb2N1bWVudCkub25l KCJjbGljayIsUy5oaWRlKSxlLmFkZENsYXNzKCJzZWFyY2gtc3VnZ2VzdC12aXNp YmxlIikuZmluZCgiLnNlYXJjaC1zdWdnZXN0LXNoaW0iKS5oZWlnaHQoZS5oZWln aHQoKSk7cmV0dXJufX1TLmhpZGUoKX0saGlkZTpmdW5jdGlvbigpe2UucmVtb3Zl Q2xhc3MoInNlYXJjaC1zdWdnZXN0LXZpc2libGUiKX0sc2VsZWN0TmV4dDpmdW5j dGlvbigpe3ZhciBhPWUuZmluZCgibGkuc2VhcmNoLXN1Z2dlc3QtaXRlbS1hY3Rp dmUiKSxiO2EubGVuZ3RoP2EubmV4dCgibGkiKS5sZW5ndGgmJihiPWEucmVtb3Zl Q2xhc3MoInNlYXJjaC1zdWdnZXN0LWl0ZW0tYWN0aXZlIikubmV4dCgibGkiKSk6 Yj1lLmZpbmQoImxpLnNlYXJjaC1zdWdnZXN0LWl0ZW06Zmlyc3QiKSxiJiZiLmFk ZENsYXNzKCJzZWFyY2gtc3VnZ2VzdC1pdGVtLWFjdGl2ZSIpfSxzZWxlY3RQcmV2 OmZ1bmN0aW9uKCl7dmFyIGE9ZS5maW5kKCJsaS5zZWFyY2gtc3VnZ2VzdC1pdGVt LWFjdGl2ZSIpLGI7YS5sZW5ndGg/YS5wcmV2KCJsaSIpLmxlbmd0aCYmKGI9YS5y ZW1vdmVDbGFzcygic2VhcmNoLXN1Z2dlc3QtaXRlbS1hY3RpdmUiKS5wcmV2KCJs aSIpKTpiPWUuZmluZCgibGkuc2VhcmNoLXN1Z2dlc3QtaXRlbTpsYXN0IiksYiYm Yi5hZGRDbGFzcygic2VhcmNoLXN1Z2dlc3QtaXRlbS1hY3RpdmUiKX0sc2V0U2Vs ZWN0ZWQ6ZnVuY3Rpb24oKXtTLmhpZGUoKSxmLnZhbChlLmZpbmQoImxpLnNlYXJj aC1zdWdnZXN0LWl0ZW0tYWN0aXZlIGRpdi5zZWFyY2gtc3VnZ2VzdC1pdGVtLWJs b2NrIikudGV4dCgpKX0sZmluZFNlbGVjdGVkOmZ1bmN0aW9uKCl7Uy5zZXRTZWxl Y3RlZCgpO3ZhciBhPWYuY2xvc2VzdCgiZm9ybSIpO2EuYXBwZW5kKCc8aW5wdXQg dHlwZT0iaGlkZGVuIiBuYW1lPSJzdWdnZXN0aW9uIiB2YWx1ZT0iMSIgLz4nKSxh LnRyaWdnZXIoInN1Ym1pdCIpfSxoYXNTZWxlY3RlZDpmdW5jdGlvbigpe3JldHVy biBlLmZpbmQoImxpLnNlYXJjaC1zdWdnZXN0LWl0ZW0tYWN0aXZlIikubGVuZ3Ro IT09MH19LFMuaW5pdCgpfSgpLGpRdWVyeS5jb29raWU9ZnVuY3Rpb24oYSxiLGMp e2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkIil7dmFyIGk9bnVsbDtpZihkb2N1bWVu dC5jb29raWUmJmRvY3VtZW50LmNvb2tpZSE9IiIpe3ZhciBqPWRvY3VtZW50LmNv b2tpZS5zcGxpdCgiOyIpO2Zvcih2YXIgaz0wO2s8ai5sZW5ndGg7aysrKXt2YXIg bD1qUXVlcnkudHJpbShqW2tdKTtpZihsLnN1YnN0cmluZygwLGEubGVuZ3RoKzEp PT1hKyI9Iil7aT1kZWNvZGVVUklDb21wb25lbnQobC5zdWJzdHJpbmcoYS5sZW5n dGgrMSkpO2JyZWFrfX19cmV0dXJuIGl9Yz1jfHx7fSxiPT09bnVsbCYmKGI9IiIs Yy5leHBpcmVzPS0xKTt2YXIgZD0iIjtpZihjLmV4cGlyZXMmJih0eXBlb2YgYy5l eHBpcmVzPT0ibnVtYmVyInx8Yy5leHBpcmVzLnRvVVRDU3RyaW5nKSl7dmFyIGU7 dHlwZW9mIGMuZXhwaXJlcz09Im51bWJlciI/KGU9bmV3IERhdGUsZS5zZXRUaW1l KGUuZ2V0VGltZSgpK2MuZXhwaXJlcyoyNCo2MCo2MCoxZTMpKTplPWMuZXhwaXJl cyxkPSI7IGV4cGlyZXM9IitlLnRvVVRDU3RyaW5nKCl9dmFyIGY9Yy5wYXRoPyI7 IHBhdGg9IitjLnBhdGg6IiIsZz1jLmRvbWFpbj8iOyBkb21haW49IitjLmRvbWFp bjoiIixoPWMuc2VjdXJlPyI7IHNlY3VyZSI6IiI7ZG9jdW1lbnQuY29va2llPVth LCI9IixlbmNvZGVVUklDb21wb25lbnQoYiksZCxmLGcsaF0uam9pbigiIil9LGZ1 bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYil7aWYodHlwZW9mIGIuZGF0YSE9InN0cmlu ZyIpcmV0dXJuO3ZhciBjPWIuaGFuZGxlcixkPWIuZGF0YS50b0xvd2VyQ2FzZSgp LnNwbGl0KCIgIik7Yi5oYW5kbGVyPWZ1bmN0aW9uKGIpe2lmKCEodGhpcz09PWIu dGFyZ2V0fHwhL3RleHRhcmVhfHNlbGVjdC9pLnRlc3QoYi50YXJnZXQubm9kZU5h bWUpJiZiLnRhcmdldC50eXBlIT09InRleHQiKSlyZXR1cm47dmFyIGU9Yi50eXBl IT09ImtleXByZXNzIiYmYS5ob3RrZXlzLnNwZWNpYWxLZXlzW2Iud2hpY2hdLGY9 U3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKS50b0xvd2VyQ2FzZSgpLGcsaD0i IixpPXt9O2IuYWx0S2V5JiZlIT09ImFsdCImJihoKz0iYWx0KyIpLGIuY3RybEtl eSYmZSE9PSJjdHJsIiYmKGgrPSJjdHJsKyIpLGIubWV0YUtleSYmIWIuY3RybEtl eSYmZSE9PSJtZXRhIiYmKGgrPSJtZXRhKyIpLGIuc2hpZnRLZXkmJmUhPT0ic2hp ZnQiJiYoaCs9InNoaWZ0KyIpLGU/aVtoK2VdPSEwOihpW2grZl09ITAsaVtoK2Eu aG90a2V5cy5zaGlmdE51bXNbZl1dPSEwLGg9PT0ic2hpZnQrIiYmKGlbYS5ob3Rr ZXlzLnNoaWZ0TnVtc1tmXV09ITApKTtmb3IodmFyIGo9MCxrPWQubGVuZ3RoO2o8 aztqKyspaWYoaVtkW2pdXSlyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9 fWEuaG90a2V5cz17dmVyc2lvbjoiMC44IixzcGVjaWFsS2V5czp7ODoiYmFja3Nw YWNlIiw5OiJ0YWIiLDEzOiJyZXR1cm4iLDE2OiJzaGlmdCIsMTc6ImN0cmwiLDE4 OiJhbHQiLDE5OiJwYXVzZSIsMjA6ImNhcHNsb2NrIiwyNzoiZXNjIiwzMjoic3Bh Y2UiLDMzOiJwYWdldXAiLDM0OiJwYWdlZG93biIsMzU6ImVuZCIsMzY6ImhvbWUi LDM3OiJsZWZ0IiwzODoidXAiLDM5OiJyaWdodCIsNDA6ImRvd24iLDQ1OiJpbnNl cnQiLDQ2OiJkZWwiLDk2OiIwIiw5NzoiMSIsOTg6IjIiLDk5OiIzIiwxMDA6IjQi LDEwMToiNSIsMTAyOiI2IiwxMDM6IjciLDEwNDoiOCIsMTA1OiI5IiwxMDY6Iioi LDEwNzoiKyIsMTA5OiItIiwxMTA6Ii4iLDExMToiLyIsMTEyOiJmMSIsMTEzOiJm MiIsMTE0OiJmMyIsMTE1OiJmNCIsMTE2OiJmNSIsMTE3OiJmNiIsMTE4OiJmNyIs MTE5OiJmOCIsMTIwOiJmOSIsMTIxOiJmMTAiLDEyMjoiZjExIiwxMjM6ImYxMiIs MTQ0OiJudW1sb2NrIiwxNDU6InNjcm9sbCIsMTkxOiIvIiwyMjQ6Im1ldGEifSxz aGlmdE51bXM6eyJgIjoifiIsMToiISIsMjoiQCIsMzoiIyIsNDoiJCIsNToiJSIs NjoiXiIsNzoiJiIsODoiKiIsOToiKCIsMDoiKSIsIi0iOiJfIiwiPSI6IisiLCI7 IjoiOiAiLCInIjonIicsIiwiOiI8IiwiLiI6Ij4iLCIvIjoiPyIsIlxcIjoifCJ9 fSxhLmVhY2goWyJrZXlkb3duIiwia2V5dXAiLCJrZXlwcmVzcyJdLGZ1bmN0aW9u KCl7YS5ldmVudC5zcGVjaWFsW3RoaXNdPXthZGQ6Yn19KX0oalF1ZXJ5KSwidXNl IHN0cmljdCIsZnVuY3Rpb24oKXtpZihqUXVlcnkmJmpRdWVyeS5qc3RyZWUpcmV0 dXJuO3ZhciBhPSExLGI9ITEsYz0hMTsoZnVuY3Rpb24oZCl7ZC52YWthdGE9e30s ZC52YWthdGEuY3NzPXtnZXRfY3NzOmZ1bmN0aW9uKGEsYixjKXthPWEudG9Mb3dl ckNhc2UoKTt2YXIgZD1jLmNzc1J1bGVzfHxjLnJ1bGVzLGU9MDtkb3tpZihkLmxl bmd0aCYmZT5kLmxlbmd0aCs1KXJldHVybiExO2lmKGRbZV0uc2VsZWN0b3JUZXh0 JiZkW2VdLnNlbGVjdG9yVGV4dC50b0xvd2VyQ2FzZSgpPT1hKXJldHVybiBiPT09 ITA/KGMucmVtb3ZlUnVsZSYmYy5yZW1vdmVSdWxlKGUpLGMuZGVsZXRlUnVsZSYm Yy5kZWxldGVSdWxlKGUpLCEwKTpkW2VdfXdoaWxlKGRbKytlXSk7cmV0dXJuITF9 LGFkZF9jc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC5qc3RyZWUuY3NzLmdldF9j c3MoYSwhMSxiKT8hMTooYi5pbnNlcnRSdWxlP2IuaW5zZXJ0UnVsZShhKyIgeyB9 IiwwKTpiLmFkZFJ1bGUoYSxudWxsLDApLGQudmFrYXRhLmNzcy5nZXRfY3NzKGEp KX0scmVtb3ZlX2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBkLnZha2F0YS5jc3Mu Z2V0X2NzcyhhLCEwLGIpfSxhZGRfc2hlZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ITEs Yz0hMDtpZihhLnN0cilyZXR1cm4gYS50aXRsZSYmKGI9ZCgic3R5bGVbaWQ9JyIr YS50aXRsZSsiLXN0eWxlc2hlZXQnXSIpWzBdKSxiP2M9ITE6KGI9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgic3R5bGUiKSxiLnNldEF0dHJpYnV0ZSgidHlwZSIsInRl eHQvY3NzIiksYS50aXRsZSYmYi5zZXRBdHRyaWJ1dGUoImlkIixhLnRpdGxlKyIt c3R5bGVzaGVldCIpKSxiLnN0eWxlU2hlZXQ/Yz8oZG9jdW1lbnQuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChiKSxiLnN0eWxlU2hl ZXQuY3NzVGV4dD1hLnN0cik6Yi5zdHlsZVNoZWV0LmNzc1RleHQ9Yi5zdHlsZVNo ZWV0LmNzc1RleHQrIiAiK2Euc3RyOihiLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy ZWF0ZVRleHROb2RlKGEuc3RyKSksZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h bWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChiKSksYi5zaGVldHx8Yi5zdHlsZVNo ZWV0O2lmKGEudXJsKXtpZighZG9jdW1lbnQuY3JlYXRlU3R5bGVTaGVldClyZXR1 cm4gYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIiksYi5yZWw9InN0eWxl c2hlZXQiLGIudHlwZT0idGV4dC9jc3MiLGIubWVkaWE9ImFsbCIsYi5ocmVmPWEu dXJsLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBw ZW5kQ2hpbGQoYiksYi5zdHlsZVNoZWV0O3RyeXtiPWRvY3VtZW50LmNyZWF0ZVN0 eWxlU2hlZXQoYS51cmwpfWNhdGNoKGUpe319fX07dmFyIGU9W10sZj0tMSxnPXt9 LGg9e307ZC5mbi5qc3RyZWU9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE9PSJz dHJpbmciLGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEp LGY9dGhpcztpZihiKXtpZihhLnN1YnN0cmluZygwLDEpPT0iXyIpcmV0dXJuIGY7 dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZVtkLmRhdGEodGhpcywianN0cmVl X2luc3RhbmNlX2lkIildLGc9YiYmZC5pc0Z1bmN0aW9uKGJbYV0pP2JbYV0uYXBw bHkoYixjKTpiO2lmKHR5cGVvZiBnIT0idW5kZWZpbmVkIiYmKGEuaW5kZXhPZigi aXNfIik9PT0wfHxnIT09ITAmJmchPT0hMSkpcmV0dXJuIGY9ZywhMX0pfWVsc2Ug dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZC5kYXRhKHRoaXMsImpzdHJlZV9p bnN0YW5jZV9pZCIpLGY9W10saD1hP2QuZXh0ZW5kKHt9LCEwLGEpOnt9LGk9ZCh0 aGlzKSxqPSExCixrPVtdO2Y9Zi5jb25jYXQoYyksaS5kYXRhKCJqc3RyZWUiKSYm Zi5wdXNoKGkuZGF0YSgianN0cmVlIikpLGg9Zi5sZW5ndGg/ZC5leHRlbmQuYXBw bHkobnVsbCxbITAsaF0uY29uY2F0KGYpKTpoLHR5cGVvZiBiIT0idW5kZWZpbmVk IiYmZVtiXSYmZVtiXS5kZXN0cm95KCksYj1wYXJzZUludChlLnB1c2goe30pLDEw KS0xLGQuZGF0YSh0aGlzLCJqc3RyZWVfaW5zdGFuY2VfaWQiLGIpLGgucGx1Z2lu cz1kLmlzQXJyYXkoaC5wbHVnaW5zKT9oLnBsdWdpbnM6ZC5qc3RyZWUuZGVmYXVs dHMucGx1Z2lucy5zbGljZSgpLGgucGx1Z2lucy51bnNoaWZ0KCJjb3JlIiksaC5w bHVnaW5zPWgucGx1Z2lucy5zb3J0KCkuam9pbigiLCwiKS5yZXBsYWNlKC8oLHxe KShbXixdKykoLCxcMikrKCx8JCkvZywiJDEkMiQ0IikucmVwbGFjZSgvLCwrL2cs IiwiKS5yZXBsYWNlKC8sJC8sIiIpLnNwbGl0KCIsIiksaj1kLmV4dGVuZCghMCx7 fSxkLmpzdHJlZS5kZWZhdWx0cyxoKSxqLnBsdWdpbnM9aC5wbHVnaW5zLGQuZWFj aChnLGZ1bmN0aW9uKGEsYil7ZC5pbkFycmF5KGEsai5wbHVnaW5zKT09PS0xPyhq W2FdPW51bGwsZGVsZXRlIGpbYV0pOmsucHVzaChhKX0pLGoucGx1Z2lucz1rLGVb Yl09bmV3IGQuanN0cmVlLl9pbnN0YW5jZShiLGQodGhpcykuYWRkQ2xhc3MoImpz dHJlZSBqc3RyZWUtIitiKSxqKSxkLmVhY2goZVtiXS5fZ2V0X3NldHRpbmdzKCku cGx1Z2lucyxmdW5jdGlvbihhLGMpe2VbYl0uZGF0YVtjXT17fX0pLGQuZWFjaChl W2JdLl9nZXRfc2V0dGluZ3MoKS5wbHVnaW5zLGZ1bmN0aW9uKGEsYyl7Z1tjXSYm Z1tjXS5fX2luaXQuYXBwbHkoZVtiXSl9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7 ZVtiXSYmZVtiXS5pbml0KCl9LDApfSk7cmV0dXJuIGZ9LGQuanN0cmVlPXtkZWZh dWx0czp7cGx1Z2luczpbXX0sX2ZvY3VzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtm XXx8bnVsbH0sX3JlZmVyZW5jZTpmdW5jdGlvbihhKXtpZihlW2FdKXJldHVybiBl W2FdO3ZhciBiPWQoYSk7cmV0dXJuIWIubGVuZ3RoJiZ0eXBlb2YgYT09InN0cmlu ZyImJihiPWQoIiMiK2EpKSxiLmxlbmd0aD9lW2IuY2xvc2VzdCgiLmpzdHJlZSIp LmRhdGEoImpzdHJlZV9pbnN0YW5jZV9pZCIpXXx8bnVsbDpudWxsfSxfaW5zdGFu Y2U6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZGF0YT17Y29yZTp7fX0sdGhpcy5nZXRf c2V0dGluZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gZC5leHRlbmQoITAse30sYyl9LHRo aXMuX2dldF9zZXR0aW5ncz1mdW5jdGlvbigpe3JldHVybiBjfSx0aGlzLmdldF9p bmRleD1mdW5jdGlvbigpe3JldHVybiBhfSx0aGlzLmdldF9jb250YWluZXI9ZnVu Y3Rpb24oKXtyZXR1cm4gYn0sdGhpcy5nZXRfY29udGFpbmVyX3VsPWZ1bmN0aW9u KCl7cmV0dXJuIGIuY2hpbGRyZW4oInVsOmVxKDApIil9LHRoaXMuX3NldF9zZXR0 aW5ncz1mdW5jdGlvbihhKXtjPWQuZXh0ZW5kKCEwLHt9LGMsYSl9fSxfZm46e30s cGx1Z2luOmZ1bmN0aW9uKGEsYil7Yj1kLmV4dGVuZCh7fSx7X19pbml0OmQubm9v cCxfX2Rlc3Ryb3k6ZC5ub29wLF9mbjp7fSxkZWZhdWx0czohMX0sYiksZ1thXT1i LGQuanN0cmVlLmRlZmF1bHRzW2FdPWIuZGVmYXVsdHMsZC5lYWNoKGIuX2ZuLGZ1 bmN0aW9uKGIsYyl7Yy5wbHVnaW49YSxjLm9sZD1kLmpzdHJlZS5fZm5bYl0sZC5q c3RyZWUuX2ZuW2JdPWZ1bmN0aW9uKCl7dmFyIGEsZT1jLGY9QXJyYXkucHJvdG90 eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxnPW5ldyBkLkV2ZW50KCJiZWZvcmUu anN0cmVlIiksaD0hMTtpZih0aGlzLmRhdGEuY29yZS5sb2NrZWQ9PT0hMCYmYiE9 PSJ1bmxvY2siJiZiIT09ImlzX2xvY2tlZCIpcmV0dXJuO2Rve2lmKGUmJmUucGx1 Z2luJiZkLmluQXJyYXkoZS5wbHVnaW4sdGhpcy5fZ2V0X3NldHRpbmdzKCkucGx1 Z2lucykhPT0tMSlicmVhaztlPWUub2xkfXdoaWxlKGUpO2lmKCFlKXJldHVybjtp ZihiLmluZGV4T2YoIl8iKT09PTApYT1lLmFwcGx5KHRoaXMsZik7ZWxzZXthPXRo aXMuZ2V0X2NvbnRhaW5lcigpLnRyaWdnZXJIYW5kbGVyKGcse2Z1bmM6YixpbnN0 OnRoaXMsYXJnczpmLHBsdWdpbjplLnBsdWdpbn0pO2lmKGE9PT0hMSlyZXR1cm47 dHlwZW9mIGEhPSJ1bmRlZmluZWQiJiYoZj1hKSxhPWUuYXBwbHkoZC5leHRlbmQo e30sdGhpcyx7X19jYWxsYmFjazpmdW5jdGlvbihhKXt0aGlzLmdldF9jb250YWlu ZXIoKS50cmlnZ2VySGFuZGxlcihiKyIuanN0cmVlIix7aW5zdDp0aGlzLGFyZ3M6 Zixyc2x0OmEscmxiazpofSl9LF9fcm9sbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4g aD10aGlzLmdldF9yb2xsYmFjaygpLGh9LF9fY2FsbF9vbGQ6ZnVuY3Rpb24oYSl7 cmV0dXJuIGUub2xkLmFwcGx5KHRoaXMsYT9BcnJheS5wcm90b3R5cGUuc2xpY2Uu Y2FsbChhcmd1bWVudHMsMSk6Zil9fSksZil9cmV0dXJuIGF9LGQuanN0cmVlLl9m bltiXS5vbGQ9Yy5vbGQsZC5qc3RyZWUuX2ZuW2JdLnBsdWdpbj1hfSl9LHJvbGxi YWNrOmZ1bmN0aW9uKGEpe2EmJihkLmlzQXJyYXkoYSl8fChhPVthXSksZC5lYWNo KGEsZnVuY3Rpb24oYSxiKXtlW2IuaV0uc2V0X3JvbGxiYWNrKGIuaCxiLmQpfSkp fX0sZC5qc3RyZWUuX2ZuPWQuanN0cmVlLl9pbnN0YW5jZS5wcm90b3R5cGU9e30s ZChmdW5jdGlvbigpe3ZhciBlPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNh c2UoKSxmPShlLm1hdGNoKC8uKz8oPzpydnxpdHxyYXxpZSlbXC86IF0oW1xkLl0r KS8pfHxbMCwiMCJdKVsxXSxnPSIuanN0cmVlIHVsLCAuanN0cmVlIGxpIHsgZGlz cGxheTpibG9jazsgbWFyZ2luOjAgMCAwIDA7IHBhZGRpbmc6MCAwIDAgMDsgbGlz dC1zdHlsZS10eXBlOm5vbmU7IH0gLmpzdHJlZSBsaSB7IGRpc3BsYXk6YmxvY2s7 IG1pbi1oZWlnaHQ6MThweDsgbGluZS1oZWlnaHQ6MThweDsgd2hpdGUtc3BhY2U6 bm93cmFwOyBtYXJnaW4tbGVmdDoxOHB4OyBtaW4td2lkdGg6MThweDsgfSAuanN0 cmVlLXJ0bCBsaSB7IG1hcmdpbi1sZWZ0OjA7IG1hcmdpbi1yaWdodDoxOHB4OyB9 IC5qc3RyZWUgPiB1bCA+IGxpIHsgbWFyZ2luLWxlZnQ6MHB4OyB9IC5qc3RyZWUt cnRsID4gdWwgPiBsaSB7IG1hcmdpbi1yaWdodDowcHg7IH0gLmpzdHJlZSBpbnMg eyBkaXNwbGF5OmlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHdp ZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW46MCAwIDAgMDsgcGFkZGluZzow OyB9IC5qc3RyZWUgYSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBsaW5lLWhlaWdo dDoxNnB4OyBoZWlnaHQ6MTZweDsgd2hpdGUtc3BhY2U6bm93cmFwOyB0ZXh0LWRl Y29yYXRpb246bm9uZTsgcGFkZGluZzoxcHggMnB4OyBtYXJnaW46MDsgfSAuanN0 cmVlIGE6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9IC5qc3RyZWUgYSA+IGlucyB7 IGhlaWdodDoxNnB4OyB3aWR0aDoxNnB4OyB9IC5qc3RyZWUgYSA+IC5qc3RyZWUt aWNvbiB7IG1hcmdpbi1yaWdodDozcHg7IH0gLmpzdHJlZS1ydGwgYSA+IC5qc3Ry ZWUtaWNvbiB7IG1hcmdpbi1sZWZ0OjNweDsgbWFyZ2luLXJpZ2h0OjA7IH0gbGku anN0cmVlLW9wZW4gPiB1bCB7IGRpc3BsYXk6YmxvY2s7IH0gbGkuanN0cmVlLWNs b3NlZCA+IHVsIHsgZGlzcGxheTpub25lOyB9ICI7aWYoL21zaWUvLnRlc3QoZSkm JnBhcnNlSW50KGYsMTApPT02KXthPSEwO3RyeXtkb2N1bWVudC5leGVjQ29tbWFu ZCgiQmFja2dyb3VuZEltYWdlQ2FjaGUiLCExLCEwKX1jYXRjaChoKXt9Zys9Ii5q c3RyZWUgbGkgeyBoZWlnaHQ6MThweDsgbWFyZ2luLWxlZnQ6MDsgbWFyZ2luLXJp Z2h0OjA7IH0gLmpzdHJlZSBsaSBsaSB7IG1hcmdpbi1sZWZ0OjE4cHg7IH0gLmpz dHJlZS1ydGwgbGkgbGkgeyBtYXJnaW4tbGVmdDowcHg7IG1hcmdpbi1yaWdodDox OHB4OyB9IGxpLmpzdHJlZS1vcGVuIHVsIHsgZGlzcGxheTpibG9jazsgfSBsaS5q c3RyZWUtY2xvc2VkIHVsIHsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0gLmpz dHJlZSBsaSBhIHsgZGlzcGxheTppbmxpbmU7IGJvcmRlci13aWR0aDowICFpbXBv cnRhbnQ7IHBhZGRpbmc6MHB4IDJweCAhaW1wb3J0YW50OyB9IC5qc3RyZWUgbGkg YSBpbnMgeyBoZWlnaHQ6MTZweDsgd2lkdGg6MTZweDsgbWFyZ2luLXJpZ2h0OjNw eDsgfSAuanN0cmVlLXJ0bCBsaSBhIGlucyB7IG1hcmdpbi1yaWdodDowcHg7IG1h cmdpbi1sZWZ0OjNweDsgfSAifS9tc2llLy50ZXN0KGUpJiZwYXJzZUludChmLDEw KT09NyYmKGI9ITAsZys9Ii5qc3RyZWUgbGkgYSB7IGJvcmRlci13aWR0aDowICFp bXBvcnRhbnQ7IHBhZGRpbmc6MHB4IDJweCAhaW1wb3J0YW50OyB9ICIpLCEvY29t cGF0aWJsZS8udGVzdChlKSYmL21vemlsbGEvLnRlc3QoZSkmJnBhcnNlRmxvYXQo ZiwxMCk8MS45JiYoYz0hMCxnKz0iLmpzdHJlZSBpbnMgeyBkaXNwbGF5Oi1tb3ot aW5saW5lLWJveDsgfSAuanN0cmVlIGxpIHsgbGluZS1oZWlnaHQ6MTJweDsgfSAu anN0cmVlIGEgeyBkaXNwbGF5Oi1tb3otaW5saW5lLWJveDsgfSAuanN0cmVlIC5q c3RyZWUtbm8taWNvbnMgLmpzdHJlZS1jaGVja2JveCB7IGRpc3BsYXk6LW1vei1p bmxpbmUtc3RhY2sgIWltcG9ydGFudDsgfSAiKSxkLnZha2F0YS5jc3MuYWRkX3No ZWV0KHtzdHI6Zyx0aXRsZToianN0cmVlIn0pfSksZC5qc3RyZWUucGx1Z2luKCJj b3JlIix7X19pbml0OmZ1bmN0aW9uKCl7dGhpcy5kYXRhLmNvcmUubG9ja2VkPSEx LHRoaXMuZGF0YS5jb3JlLnRvX29wZW49dGhpcy5nZXRfc2V0dGluZ3MoKS5jb3Jl LmluaXRpYWxseV9vcGVuLHRoaXMuZGF0YS5jb3JlLnRvX2xvYWQ9dGhpcy5nZXRf c2V0dGluZ3MoKS5jb3JlLmluaXRpYWxseV9sb2FkfSxkZWZhdWx0czp7aHRtbF90 aXRsZXM6ITEsYW5pbWF0aW9uOjUwMCxpbml0aWFsbHlfb3BlbjpbXSxpbml0aWFs bHlfbG9hZDpbXSxvcGVuX3BhcmVudHM6ITAsbm90aWZ5X3BsdWdpbnM6ITAscnRs OiExLGxvYWRfb3BlbjohMSxzdHJpbmdzOntsb2FkaW5nOiJMb2FkaW5nIC4uLiIs bmV3X25vZGU6Ik5ldyBub2RlIixtdWx0aXBsZV9zZWxlY3Rpb246Ik11bHRpcGxl IHNlbGVjdGlvbiJ9fSxfZm46e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnNldF9mb2N1 cygpLHRoaXMuX2dldF9zZXR0aW5ncygpLmNvcmUucnRsJiZ0aGlzLmdldF9jb250 YWluZXIoKS5hZGRDbGFzcygianN0cmVlLXJ0bCIpLmNzcygiZGlyZWN0aW9uIiwi cnRsIiksdGhpcy5nZXRfY29udGFpbmVyKCkuaHRtbCgiPHVsPjxsaSBjbGFzcz0n anN0cmVlLWxhc3QganN0cmVlLWxlYWYnPjxpbnM+JiMxNjA7PC9pbnM+PGEgY2xh c3M9J2pzdHJlZS1sb2FkaW5nJyBocmVmPScjJz48aW5zIGNsYXNzPSdqc3RyZWUt aWNvbic+JiMxNjA7PC9pbnM+Iit0aGlzLl9nZXRfc3RyaW5nKCJsb2FkaW5nIikr IjwvYT48L2xpPjwvdWw+IiksdGhpcy5kYXRhLmNvcmUubGlfaGVpZ2h0PXRoaXMu Z2V0X2NvbnRhaW5lcl91bCgpLmZpbmQoImxpLmpzdHJlZS1jbG9zZWQsIGxpLmpz dHJlZS1sZWFmIikuZXEoMCkuaGVpZ2h0KCl8fDE4LHRoaXMuZ2V0X2NvbnRhaW5l cigpLmRlbGVnYXRlKCJsaSA+IGlucyIsImNsaWNrLmpzdHJlZSIsZC5wcm94eShm dW5jdGlvbihhKXt2YXIgYj1kKGEudGFyZ2V0KTt0aGlzLnRvZ2dsZV9ub2RlKGIp fSx0aGlzKSkuYmluZCgibW91c2Vkb3duLmpzdHJlZSIsZC5wcm94eShmdW5jdGlv bigpe3RoaXMuc2V0X2ZvY3VzKCl9LHRoaXMpKS5iaW5kKCJkYmxjbGljay5qc3Ry ZWUiLGZ1bmN0aW9uKGEpe3ZhciBiO2lmKGRvY3VtZW50LnNlbGVjdGlvbiYmZG9j dW1lbnQuc2VsZWN0aW9uLmVtcHR5KWRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgp O2Vsc2UgaWYod2luZG93LmdldFNlbGVjdGlvbil7Yj13aW5kb3cuZ2V0U2VsZWN0 aW9uKCk7dHJ5e2IucmVtb3ZlQWxsUmFuZ2VzKCksYi5jb2xsYXBzZSgpfWNhdGNo KGMpe319fSksdGhpcy5fZ2V0X3NldHRpbmdzKCkuY29yZS5ub3RpZnlfcGx1Z2lu cyYmdGhpcy5nZXRfY29udGFpbmVyKCkuYmluZCgibG9hZF9ub2RlLmpzdHJlZSIs ZC5wcm94eShmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2dldF9ub2RlKGIucnNs dC5vYmopLGU9dGhpcztjPT09LTEmJihjPXRoaXMuZ2V0X2NvbnRhaW5lcl91bCgp KTtpZighYy5sZW5ndGgpcmV0dXJuO2MuZmluZCgibGkiKS5lYWNoKGZ1bmN0aW9u KCl7dmFyIGE9ZCh0aGlzKTthLmRhdGEoImpzdHJlZSIpJiZkLmVhY2goYS5kYXRh KCJqc3RyZWUiKSxmdW5jdGlvbihiLGMpe2UuZGF0YVtiXSYmZC5pc0Z1bmN0aW9u KGVbIl8iK2IrIl9ub3RpZnkiXSkmJmVbIl8iK2IrIl9ub3RpZnkiXS5jYWxsKGUs YSxjKX0pfSl9LHRoaXMpKSx0aGlzLl9nZXRfc2V0dGluZ3MoKS5jb3JlLmxvYWRf b3BlbiYmdGhpcy5nZXRfY29udGFpbmVyKCkuYmluZCgibG9hZF9ub2RlLmpzdHJl ZSIsZC5wcm94eShmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2dldF9ub2RlKGIu cnNsdC5vYmopLGU9dGhpcztjPT09LTEmJihjPXRoaXMuZ2V0X2NvbnRhaW5lcl91 bCgpKTtpZighYy5sZW5ndGgpcmV0dXJuO2MuZmluZCgibGkuanN0cmVlLW9wZW46 bm90KDpoYXModWwpKSIpLmVhY2goZnVuY3Rpb24oKXtlLmxvYWRfbm9kZSh0aGlz LGQubm9vcCxkLm5vb3ApfSl9LHRoaXMpKSx0aGlzLl9fY2FsbGJhY2soKSx0aGlz LmxvYWRfbm9kZSgtMSxmdW5jdGlvbigpe3RoaXMubG9hZGVkKCksdGhpcy5yZWxv YWRfbm9kZXMoKX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLmdl dF9pbmRleCgpLGM9dGhpcy5fZ2V0X3NldHRpbmdzKCksaD10aGlzO2QuZWFjaChj LnBsdWdpbnMsZnVuY3Rpb24oYSxiKXt0cnl7Z1tiXS5fX2Rlc3Ryb3kuYXBwbHko aCl9Y2F0Y2goYyl7fX0pLHRoaXMuX19jYWxsYmFjaygpO2lmKHRoaXMuaXNfZm9j dXNlZCgpKWZvcihhIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShhKSYmYSE9Yil7 ZVthXS5zZXRfZm9jdXMoKTticmVha31iPT09ZiYmKGY9LTEpLHRoaXMuZ2V0X2Nv bnRhaW5lcigpLnVuYmluZCgiLmpzdHJlZSIpLnVuZGVsZWdhdGUoIi5qc3RyZWUi KS5yZW1vdmVEYXRhKCJqc3RyZWVfaW5zdGFuY2VfaWQiKS5maW5kKCJbY2xhc3Ne PSdqc3RyZWUnXSIpLmFuZFNlbGYoKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5jbGFzc05hbWUucmVwbGFjZSgvanN0cmVlW14gXSp8JC9pZywi Iil9KSxkKGRvY3VtZW50KS51bmJpbmQoIi5qc3RyZWUtIitiKS51bmRlbGVnYXRl KCIuanN0cmVlLSIrYiksZVtiXT1udWxsLGRlbGV0ZSBlW2JdfSxfY29yZV9ub3Rp Znk6ZnVuY3Rpb24oYSxiKXtiLm9wZW5lZCYmdGhpcy5vcGVuX25vZGUoYSwhMSwh MCl9LGxvY2s6ZnVuY3Rpb24oKXt0aGlzLmRhdGEuY29yZS5sb2NrZWQ9ITAsdGhp cy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikuYWRkQ2xhc3MoImpzdHJl ZS1sb2NrZWQiKS5jc3MoIm9wYWNpdHkiLCIwLjciKSx0aGlzLl9fY2FsbGJhY2so e30pfSx1bmxvY2s6ZnVuY3Rpb24oKXt0aGlzLmRhdGEuY29yZS5sb2NrZWQ9ITEs dGhpcy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikucmVtb3ZlQ2xhc3Mo ImpzdHJlZS1sb2NrZWQiKS5jc3MoIm9wYWNpdHkiLCIxIiksdGhpcy5fX2NhbGxi YWNrKHt9KX0saXNfbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5j b3JlLmxvY2tlZH0sc2F2ZV9vcGVuZWQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3Ro aXMuZGF0YS5jb3JlLnRvX29wZW49W10sdGhpcy5nZXRfY29udGFpbmVyX3VsKCku ZmluZCgibGkuanN0cmVlLW9wZW4iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZCYm YS5kYXRhLmNvcmUudG9fb3Blbi5wdXNoKCIjIit0aGlzLmlkLnRvU3RyaW5nKCku cmVwbGFjZSgvXiMvLCIiKS5yZXBsYWNlKC9cXFwvL2csIi8iKS5yZXBsYWNlKC9c Ly9nLCJcXC8iKS5yZXBsYWNlKC9cXFwuL2csIi4iKS5yZXBsYWNlKC9cLi9nLCJc XC4iKS5yZXBsYWNlKC9cOi9nLCJcXDoiKSl9KSx0aGlzLl9fY2FsbGJhY2soYS5k YXRhLmNvcmUudG9fb3Blbil9LHNhdmVfbG9hZGVkOmZ1bmN0aW9uKCl7fSxyZWxv YWRfbm9kZXM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPSEwLGU9W10sZj1bXTth fHwodGhpcy5kYXRhLmNvcmUucmVvcGVuPSExLHRoaXMuZGF0YS5jb3JlLnJlZnJl c2hpbmc9ITAsdGhpcy5kYXRhLmNvcmUudG9fb3Blbj1kLm1hcChkLm1ha2VBcnJh eSh0aGlzLmRhdGEuY29yZS50b19vcGVuKSxmdW5jdGlvbihhKXtyZXR1cm4iIyIr YS50b1N0cmluZygpLnJlcGxhY2UoL14jLywiIikucmVwbGFjZSgvXFxcLy9nLCIv IikucmVwbGFjZSgvXC8vZywiXFwvIikucmVwbGFjZSgvXFxcLi9nLCIuIikucmVw bGFjZSgvXC4vZywiXFwuIikucmVwbGFjZSgvXDovZywiXFw6Iil9KSx0aGlzLmRh dGEuY29yZS50b19sb2FkPWQubWFwKGQubWFrZUFycmF5KHRoaXMuZGF0YS5jb3Jl LnRvX2xvYWQpLGZ1bmN0aW9uKGEpe3JldHVybiIjIithLnRvU3RyaW5nKCkucmVw bGFjZSgvXiMvLCIiKS5yZXBsYWNlKC9cXFwvL2csIi8iKS5yZXBsYWNlKC9cLy9n LCJcXC8iKS5yZXBsYWNlKC9cXFwuL2csIi4iKS5yZXBsYWNlKC9cLi9nLCJcXC4i KS5yZXBsYWNlKC9cOi9nLCJcXDoiKX0pLHRoaXMuZGF0YS5jb3JlLnRvX29wZW4u bGVuZ3RoJiYodGhpcy5kYXRhLmNvcmUudG9fbG9hZD10aGlzLmRhdGEuY29yZS50 b19sb2FkLmNvbmNhdCh0aGlzLmRhdGEuY29yZS50b19vcGVuKSkpLHRoaXMuZGF0 YS5jb3JlLnRvX2xvYWQubGVuZ3RoJiYoZC5lYWNoKHRoaXMuZGF0YS5jb3JlLnRv X2xvYWQsZnVuY3Rpb24oYSxiKXtpZihiPT0iIyIpcmV0dXJuITA7ZChiKS5sZW5n dGg/ZS5wdXNoKGIpOmYucHVzaChiKX0pLGUubGVuZ3RoJiYodGhpcy5kYXRhLmNv cmUudG9fbG9hZD1mLGQuZWFjaChlLGZ1bmN0aW9uKGEsZCl7Yi5faXNfbG9hZGVk KGQpfHwoYi5sb2FkX25vZGUoZCxmdW5jdGlvbigpe2IucmVsb2FkX25vZGVzKCEw KX0sZnVuY3Rpb24oKXtiLnJlbG9hZF9ub2RlcyghMCl9KSxjPSExKX0pKSksdGhp cy5kYXRhLmNvcmUudG9fb3Blbi5sZW5ndGgmJmQuZWFjaCh0aGlzLmRhdGEuY29y ZS50b19vcGVuLGZ1bmN0aW9uKGEsYyl7Yi5vcGVuX25vZGUoYywhMSwhMCl9KSxj JiYodGhpcy5kYXRhLmNvcmUucmVvcGVuJiZjbGVhclRpbWVvdXQodGhpcy5kYXRh LmNvcmUucmVvcGVuKSx0aGlzLmRhdGEuY29yZS5yZW9wZW49c2V0VGltZW91dChm dW5jdGlvbigpe2IuX19jYWxsYmFjayh7fSxiKX0sNTApLHRoaXMuZGF0YS5jb3Jl LnJlZnJlc2hpbmc9ITEsdGhpcy5yZW9wZW4oKSl9LHJlb3BlbjpmdW5jdGlvbigp e3ZhciBhPXRoaXM7dGhpcy5kYXRhLmNvcmUudG9fb3Blbi5sZW5ndGgmJmQuZWFj aCh0aGlzLmRhdGEuY29yZS50b19vcGVuLGZ1bmN0aW9uKGIsYyl7YS5vcGVuX25v ZGUoYywhMSwhMCl9KSx0aGlzLl9fY2FsbGJhY2soe30pfSxyZWZyZXNoOmZ1bmN0 aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5zYXZlX29wZW5lZCgpLGF8fChhPS0xKSxh PXRoaXMuX2dldF9ub2RlKGEpLGF8fChhPS0xKSxhIT09LTE/YS5jaGlsZHJlbigi VUwiKS5yZW1vdmUoKTp0aGlzLmdldF9jb250YWluZXJfdWwoKS5lbXB0eSgpLHRo aXMubG9hZF9ub2RlKGEsZnVuY3Rpb24oKXtiLl9fY2FsbGJhY2soe29iajphfSks Yi5yZWxvYWRfbm9kZXMoKX0pfSxsb2FkZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fY2Fs bGJhY2soKX0sc2V0X2ZvY3VzOmZ1bmN0aW9uKCl7aWYodGhpcy5pc19mb2N1c2Vk KCkpcmV0dXJuO3ZhciBhPWQuanN0cmVlLl9mb2N1c2VkKCk7YSYmYS51bnNldF9m b2N1cygpLHRoaXMuZ2V0X2NvbnRhaW5lcigpLmFkZENsYXNzKCJqc3RyZWUtZm9j dXNlZCIpLGY9dGhpcy5nZXRfaW5kZXgoKSx0aGlzLl9fY2FsbGJhY2soKX0saXNf Zm9jdXNlZDpmdW5jdGlvbigpe3JldHVybiBmPT10aGlzLmdldF9pbmRleCgpfSx1 bnNldF9mb2N1czpmdW5jdGlvbigpe3RoaXMuaXNfZm9jdXNlZCgpJiYodGhpcy5n ZXRfY29udGFpbmVyKCkucmVtb3ZlQ2xhc3MoImpzdHJlZS1mb2N1c2VkIiksZj0t MSksdGhpcy5fX2NhbGxiYWNrKCl9LF9nZXRfbm9kZTpmdW5jdGlvbihhKXt2YXIg Yj1kKGEsdGhpcy5nZXRfY29udGFpbmVyKCkpO3JldHVybiBiLmlzKCIuanN0cmVl Iil8fGE9PS0xPy0xOihiPWIuY2xvc2VzdCgibGkiLHRoaXMuZ2V0X2NvbnRhaW5l cigpKSxiLmxlbmd0aD9iOiExKX0sX2dldF9uZXh0OmZ1bmN0aW9uKGEsYil7cmV0 dXJuIGE9dGhpcy5fZ2V0X25vZGUoYSksYT09PS0xP3RoaXMuZ2V0X2NvbnRhaW5l cigpLmZpbmQoIj4gdWwgPiBsaTpmaXJzdC1jaGlsZCIpOmEubGVuZ3RoP2I/YS5u ZXh0QWxsKCJsaSIpLnNpemUoKT4wP2EubmV4dEFsbCgibGk6ZXEoMCkiKTohMTph Lmhhc0NsYXNzKCJqc3RyZWUtb3BlbiIpP2EuZmluZCgibGk6ZXEoMCkiKTphLm5l eHRBbGwoImxpIikuc2l6ZSgpPjA/YS5uZXh0QWxsKCJsaTplcSgwKSIpOmEucGFy ZW50c1VudGlsKCIuanN0cmVlIiwibGkiKS5uZXh0KCJsaSIpLmVxKDApOiExfSxf Z2V0X3ByZXY6ZnVuY3Rpb24oYSxiKXthPXRoaXMuX2dldF9ub2RlKGEpO2lmKGE9 PT0tMSlyZXR1cm4gdGhpcy5nZXRfY29udGFpbmVyKCkuZmluZCgiPiB1bCA+IGxp Omxhc3QtY2hpbGQiKTtpZighYS5sZW5ndGgpcmV0dXJuITE7aWYoYilyZXR1cm4g YS5wcmV2QWxsKCJsaSIpLmxlbmd0aD4wP2EucHJldkFsbCgibGk6ZXEoMCkiKToh MTtpZihhLnByZXYoImxpIikubGVuZ3RoKXthPWEucHJldigibGkiKS5lcSgwKTt3 aGlsZShhLmhhc0NsYXNzKCJqc3RyZWUtb3BlbiIpKWE9YS5jaGlsZHJlbigidWw6 ZXEoMCkiKS5jaGlsZHJlbigibGk6bGFzdCIpO3JldHVybiBhfXZhciBjPWEucGFy ZW50c1VudGlsKCIuanN0cmVlIiwibGk6ZXEoMCkiKTtyZXR1cm4gYy5sZW5ndGg/ YzohMX0sX2dldF9wYXJlbnQ6ZnVuY3Rpb24oYSl7YT10aGlzLl9nZXRfbm9kZShh KTtpZihhPT0tMXx8IWEubGVuZ3RoKXJldHVybiExO3ZhciBiPWEucGFyZW50c1Vu dGlsKCIuanN0cmVlIiwibGk6ZXEoMCkiKTtyZXR1cm4gYi5sZW5ndGg/YjotMX0s X2dldF9jaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gYT10aGlzLl9nZXRfbm9k ZShhKSxhPT09LTE/dGhpcy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsOmVx KDApIikuY2hpbGRyZW4oImxpIik6YS5sZW5ndGg/YS5jaGlsZHJlbigidWw6ZXEo MCkiKS5jaGlsZHJlbigibGkiKTohMX0sZ2V0X3BhdGg6ZnVuY3Rpb24oYSxiKXt2 YXIgYz1bXSxkPXRoaXM7cmV0dXJuIGE9dGhpcy5fZ2V0X25vZGUoYSksYT09PS0x fHwhYXx8IWEubGVuZ3RoPyExOihhLnBhcmVudHNVbnRpbCgiLmpzdHJlZSIsImxp IikuZWFjaChmdW5jdGlvbigpe2MucHVzaChiP3RoaXMuaWQ6ZC5nZXRfdGV4dCh0 aGlzKSl9KSxjLnJldmVyc2UoKSxjLnB1c2goYj9hLmF0dHIoImlkIik6dGhpcy5n ZXRfdGV4dChhKSksYyl9LF9nZXRfc3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiB0 aGlzLl9nZXRfc2V0dGluZ3MoKS5jb3JlLnN0cmluZ3NbYV18fGF9LGlzX29wZW46 ZnVuY3Rpb24oYSl7cmV0dXJuIGE9dGhpcy5fZ2V0X25vZGUoYSksYSYmYSE9PS0x JiZhLmhhc0NsYXNzKCJqc3RyZWUtb3BlbiIpfSxpc19jbG9zZWQ6ZnVuY3Rpb24o YSl7cmV0dXJuIGE9dGhpcy5fZ2V0X25vZGUoYSksYSYmYSE9PS0xJiZhLmhhc0Ns YXNzKCJqc3RyZWUtY2xvc2VkIil9LGlzX2xlYWY6ZnVuY3Rpb24oYSl7cmV0dXJu IGE9dGhpcy5fZ2V0X25vZGUoYSksYSYmYSE9PS0xJiZhLmhhc0NsYXNzKCJqc3Ry ZWUtbGVhZiIpfSxjb3JyZWN0X3N0YXRlOmZ1bmN0aW9uKGEpe2E9dGhpcy5fZ2V0 X25vZGUoYSk7aWYoIWF8fGE9PT0tMSlyZXR1cm4hMTthLnJlbW92ZUNsYXNzKCJq c3RyZWUtY2xvc2VkIGpzdHJlZS1vcGVuIikuYWRkQ2xhc3MoImpzdHJlZS1sZWFm IikuY2hpbGRyZW4oInVsIikucmVtb3ZlKCksdGhpcy5fX2NhbGxiYWNrKHtvYmo6 YX0pfSxvcGVuX25vZGU6ZnVuY3Rpb24oYixjLGQpe2I9dGhpcy5fZ2V0X25vZGUo Yik7aWYoIWIubGVuZ3RoKXJldHVybiExO2lmKCFiLmhhc0NsYXNzKCJqc3RyZWUt Y2xvc2VkIikpcmV0dXJuIGMmJmMuY2FsbCgpLCExO3ZhciBlPWR8fGE/MDp0aGlz Ll9nZXRfc2V0dGluZ3MoKS5jb3JlLmFuaW1hdGlvbixmPXRoaXM7dGhpcy5faXNf bG9hZGVkKGIpPyh0aGlzLl9nZXRfc2V0dGluZ3MoKS5jb3JlLm9wZW5fcGFyZW50 cyYmYi5wYXJlbnRzVW50aWwoIi5qc3RyZWUiLCIuanN0cmVlLWNsb3NlZCIpLmVh Y2goZnVuY3Rpb24oKXtmLm9wZW5fbm9kZSh0aGlzLCExLCEwKX0pLGUmJmIuY2hp bGRyZW4oInVsIikuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLGIucmVtb3ZlQ2xhc3Mo ImpzdHJlZS1jbG9zZWQiKS5hZGRDbGFzcygianN0cmVlLW9wZW4iKS5jaGlsZHJl bigiYSIpLnJlbW92ZUNsYXNzKCJqc3RyZWUtbG9hZGluZyIpLGU/Yi5jaGlsZHJl bigidWwiKS5zdG9wKCEwLCEwKS5zbGlkZURvd24oZSxmdW5jdGlvbigpe3RoaXMu c3R5bGUuZGlzcGxheT0iIixmLmFmdGVyX29wZW4oYil9KTpmLmFmdGVyX29wZW4o YiksdGhpcy5fX2NhbGxiYWNrKHtvYmo6Yn0pLGMmJmMuY2FsbCgpKTooYi5jaGls ZHJlbigiYSIpLmFkZENsYXNzKCJqc3RyZWUtbG9hZGluZyIpLHRoaXMubG9hZF9u b2RlKGIsZnVuY3Rpb24oKXtmLm9wZW5fbm9kZShiLGMsZCl9LGMpKX0sYWZ0ZXJf b3BlbjpmdW5jdGlvbihhKXt0aGlzLl9fY2FsbGJhY2soe29iajphfSl9LGNsb3Nl X25vZGU6ZnVuY3Rpb24oYixjKXtiPXRoaXMuX2dldF9ub2RlKGIpO3ZhciBkPWN8 fGE/MDp0aGlzLl9nZXRfc2V0dGluZ3MoKS5jb3JlLmFuaW1hdGlvbixlPXRoaXM7 aWYoIWIubGVuZ3RofHwhYi5oYXNDbGFzcygianN0cmVlLW9wZW4iKSlyZXR1cm4h MTtkJiZiLmNoaWxkcmVuKCJ1bCIpLmF0dHIoInN0eWxlIiwiZGlzcGxheTpibG9j ayAhaW1wb3J0YW50IiksYi5yZW1vdmVDbGFzcygianN0cmVlLW9wZW4iKS5hZGRD bGFzcygianN0cmVlLWNsb3NlZCIpLGQ/Yi5jaGlsZHJlbigidWwiKS5zdG9wKCEw LCEwKS5zbGlkZVVwKGQsZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9IiIs ZS5hZnRlcl9jbG9zZShiKX0pOmUuYWZ0ZXJfY2xvc2UoYiksdGhpcy5fX2NhbGxi YWNrKHtvYmo6Yn0pfSxhZnRlcl9jbG9zZTpmdW5jdGlvbihhKXt0aGlzLl9fY2Fs bGJhY2soe29iajphfSl9LHRvZ2dsZV9ub2RlOmZ1bmN0aW9uKGEpe2E9dGhpcy5f Z2V0X25vZGUoYSk7aWYoYS5oYXNDbGFzcygianN0cmVlLWNsb3NlZCIpKXJldHVy biB0aGlzLm9wZW5fbm9kZShhKTtpZihhLmhhc0NsYXNzKCJqc3RyZWUtb3BlbiIp KXJldHVybiB0aGlzLmNsb3NlX25vZGUoYSl9LG9wZW5fYWxsOmZ1bmN0aW9uKGEs YixjKXthPWE/dGhpcy5fZ2V0X25vZGUoYSk6LTE7aWYoIWF8fGE9PT0tMSlhPXRo aXMuZ2V0X2NvbnRhaW5lcl91bCgpO2M/YT1hLmZpbmQoImxpLmpzdHJlZS1jbG9z ZWQiKTooYz1hLGEuaXMoIi5qc3RyZWUtY2xvc2VkIik/YT1hLmZpbmQoImxpLmpz dHJlZS1jbG9zZWQiKS5hbmRTZWxmKCk6YT1hLmZpbmQoImxpLmpzdHJlZS1jbG9z ZWQiKSk7dmFyIGQ9dGhpczthLmVhY2goZnVuY3Rpb24oKXt2YXIgYT10aGlzO2Qu X2lzX2xvYWRlZCh0aGlzKT9kLm9wZW5fbm9kZSh0aGlzLCExLCFiKTpkLm9wZW5f bm9kZSh0aGlzLGZ1bmN0aW9uKCl7ZC5vcGVuX2FsbChhLGIsYyl9LCFiKX0pLGMu ZmluZCgibGkuanN0cmVlLWNsb3NlZCIpLmxlbmd0aD09PTAmJnRoaXMuX19jYWxs YmFjayh7b2JqOmN9KX0sY2xvc2VfYWxsOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhp czthPWE/dGhpcy5fZ2V0X25vZGUoYSk6dGhpcy5nZXRfY29udGFpbmVyKCk7aWYo IWF8fGE9PT0tMSlhPXRoaXMuZ2V0X2NvbnRhaW5lcl91bCgpO2EuZmluZCgibGku anN0cmVlLW9wZW4iKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe2MuY2xvc2Vf bm9kZSh0aGlzLCFiKX0pLHRoaXMuX19jYWxsYmFjayh7b2JqOmF9KX0sY2xlYW5f bm9kZTpmdW5jdGlvbihhKXthPWEmJmEhPS0xP2QoYSk6dGhpcy5nZXRfY29udGFp bmVyX3VsKCksYT1hLmlzKCJsaSIpP2EuZmluZCgibGkiKS5hbmRTZWxmKCk6YS5m aW5kKCJsaSIpLGEucmVtb3ZlQ2xhc3MoImpzdHJlZS1sYXN0IikuZmlsdGVyKCJs aTpsYXN0LWNoaWxkIikuYWRkQ2xhc3MoImpzdHJlZS1sYXN0IikuZW5kKCkuZmls dGVyKCI6aGFzKGxpKSIpLm5vdCgiLmpzdHJlZS1vcGVuIikucmVtb3ZlQ2xhc3Mo ImpzdHJlZS1sZWFmIikuYWRkQ2xhc3MoImpzdHJlZS1jbG9zZWQiKSxhLm5vdCgi LmpzdHJlZS1vcGVuLCAuanN0cmVlLWNsb3NlZCIpLmFkZENsYXNzKCJqc3RyZWUt bGVhZiIpLmNoaWxkcmVuKCJ1bCIpLnJlbW92ZSgpLHRoaXMuX19jYWxsYmFjayh7 b2JqOmF9KX0sZ2V0X3JvbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19j YWxsYmFjaygpLHtpOnRoaXMuZ2V0X2luZGV4KCksaDp0aGlzLmdldF9jb250YWlu ZXIoKS5jaGlsZHJlbigidWwiKS5jbG9uZSghMCksZDp0aGlzLmRhdGF9fSxzZXRf cm9sbGJhY2s6ZnVuY3Rpb24oYSxiKXt0aGlzLmdldF9jb250YWluZXIoKS5lbXB0 eSgpLmFwcGVuZChhKSx0aGlzLmRhdGE9Yix0aGlzLl9fY2FsbGJhY2soKX0sbG9h ZF9ub2RlOmZ1bmN0aW9uKGEsYixjKXt0aGlzLl9fY2FsbGJhY2soe29iajphfSl9 LF9pc19sb2FkZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuITB9LGNyZWF0ZV9ub2RlOmZ1 bmN0aW9uKGEsYixjLGUsZil7YT10aGlzLl9nZXRfbm9kZShhKSxiPXR5cGVvZiBi PT0idW5kZWZpbmVkIj8ibGFzdCI6Yjt2YXIgZz1kKCI8bGkgLz4iKSxoPXRoaXMu X2dldF9zZXR0aW5ncygpLmNvcmUsaTtpZihhIT09LTEmJiFhLmxlbmd0aClyZXR1 cm4hMTtpZighZiYmIXRoaXMuX2lzX2xvYWRlZChhKSlyZXR1cm4gdGhpcy5sb2Fk X25vZGUoYSxmdW5jdGlvbigpe3RoaXMuY3JlYXRlX25vZGUoYSxiLGMsZSwhMCl9 KSwhMTt0aGlzLl9fcm9sbGJhY2soKSx0eXBlb2YgYz09InN0cmluZyImJihjPXtk YXRhOmN9KSxjfHwoYz17fSksYy5hdHRyJiZnLmF0dHIoYy5hdHRyKSxjLm1ldGFk YXRhJiZnLmRhdGEoYy5tZXRhZGF0YSksYy5zdGF0ZSYmZy5hZGRDbGFzcygianN0 cmVlLSIrYy5zdGF0ZSksYy5kYXRhfHwoYy5kYXRhPXRoaXMuX2dldF9zdHJpbmco Im5ld19ub2RlIikpLGQuaXNBcnJheShjLmRhdGEpfHwoaT1jLmRhdGEsYy5kYXRh PVtdLGMuZGF0YS5wdXNoKGkpKSxkLmVhY2goYy5kYXRhLGZ1bmN0aW9uKGEsYil7 aT1kKCI8YSAvPiIpLGQuaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKHRoaXMsYykp LHR5cGVvZiBiPT0ic3RyaW5nIj9pLmF0dHIoImhyZWYiLCIjIilbaC5odG1sX3Rp dGxlcz8iaHRtbCI6InRleHQiXShiKTooYi5hdHRyfHwoYi5hdHRyPXt9KSxiLmF0 dHIuaHJlZnx8KGIuYXR0ci5ocmVmPSIjIiksaS5hdHRyKGIuYXR0cilbaC5odG1s X3RpdGxlcz8iaHRtbCI6InRleHQiXShiLnRpdGxlKSxiLmxhbmd1YWdlJiZpLmFk ZENsYXNzKGIubGFuZ3VhZ2UpKSxpLnByZXBlbmQoIjxpbnMgY2xhc3M9J2pzdHJl ZS1pY29uJz4mIzE2MDs8L2lucz4iKSwhYi5pY29uJiZjLmljb24mJihiLmljb249 Yy5pY29uKSxiLmljb24mJihiLmljb24uaW5kZXhPZigiLyIpPT09LTE/aS5jaGls ZHJlbigiaW5zIikuYWRkQ2xhc3MoYi5pY29uKTppLmNoaWxkcmVuKCJpbnMiKS5j c3MoImJhY2tncm91bmQiLCJ1cmwoJyIrYi5pY29uKyInKSBjZW50ZXIgY2VudGVy IG5vLXJlcGVhdCIpKSxnLmFwcGVuZChpKX0pLGcucHJlcGVuZCgiPGlucyBjbGFz cz0nanN0cmVlLWljb24nPiYjMTYwOzwvaW5zPiIpLGE9PT0tMSYmKGE9dGhpcy5n ZXRfY29udGFpbmVyKCksYj09PSJiZWZvcmUiJiYoYj0iZmlyc3QiKSxiPT09ImFm dGVyIiYmKGI9Imxhc3QiKSk7c3dpdGNoKGIpe2Nhc2UiYmVmb3JlIjphLmJlZm9y ZShnKSxpPXRoaXMuX2dldF9wYXJlbnQoYSk7YnJlYWs7Y2FzZSJhZnRlciI6YS5h ZnRlcihnKSxpPXRoaXMuX2dldF9wYXJlbnQoYSk7YnJlYWs7Y2FzZSJpbnNpZGUi OmNhc2UiZmlyc3QiOmEuY2hpbGRyZW4oInVsIikubGVuZ3RofHxhLmFwcGVuZCgi PHVsIC8+IiksYS5jaGlsZHJlbigidWwiKS5wcmVwZW5kKGcpLGk9YTticmVhaztj YXNlImxhc3QiOmEuY2hpbGRyZW4oInVsIikubGVuZ3RofHxhLmFwcGVuZCgiPHVs IC8+IiksYS5jaGlsZHJlbigidWwiKS5hcHBlbmQoZyksaT1hO2JyZWFrO2RlZmF1 bHQ6YS5jaGlsZHJlbigidWwiKS5sZW5ndGh8fGEuYXBwZW5kKCI8dWwgLz4iKSxi fHwoYj0wKSxpPWEuY2hpbGRyZW4oInVsIikuY2hpbGRyZW4oImxpIikuZXEoYiks aS5sZW5ndGg/aS5iZWZvcmUoZyk6YS5jaGlsZHJlbigidWwiKS5hcHBlbmQoZyks aT1hfWlmKGk9PT0tMXx8aS5nZXQoMCk9PT10aGlzLmdldF9jb250YWluZXIoKS5n ZXQoMCkpaT0tMTtyZXR1cm4gdGhpcy5jbGVhbl9ub2RlKGkpLHRoaXMuX19jYWxs YmFjayh7b2JqOmcscGFyZW50Oml9KSxlJiZlLmNhbGwodGhpcyxnKSxnfSxnZXRf dGV4dDpmdW5jdGlvbihhKXthPXRoaXMuX2dldF9ub2RlKGEpO2lmKCFhLmxlbmd0 aClyZXR1cm4hMTt2YXIgYj10aGlzLl9nZXRfc2V0dGluZ3MoKS5jb3JlLmh0bWxf dGl0bGVzO3JldHVybiBhPWEuY2hpbGRyZW4oImE6ZXEoMCkiKSxiPyhhPWEuY2xv bmUoKSxhLmNoaWxkcmVuKCJJTlMiKS5yZW1vdmUoKSxhLmh0bWwoKSk6KGE9YS5j b250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVUeXBl PT0zfSlbMF0sYS5ub2RlVmFsdWUpfSxzZXRfdGV4dDpmdW5jdGlvbihhLGIpe2E9 dGhpcy5fZ2V0X25vZGUoYSk7aWYoIWEubGVuZ3RoKXJldHVybiExO2E9YS5jaGls ZHJlbigiYTplcSgwKSIpO2lmKHRoaXMuX2dldF9zZXR0aW5ncygpLmNvcmUuaHRt bF90aXRsZXMpe3ZhciBjPWEuY2hpbGRyZW4oIklOUyIpLmNsb25lKCk7cmV0dXJu IGEuaHRtbChiKS5wcmVwZW5kKGMpLHRoaXMuX19jYWxsYmFjayh7b2JqOmEsbmFt ZTpifSksITB9cmV0dXJuIGE9YS5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigp e3JldHVybiB0aGlzLm5vZGVUeXBlPT0zfSlbMF0sdGhpcy5fX2NhbGxiYWNrKHtv Ymo6YSxuYW1lOmJ9KSxhLm5vZGVWYWx1ZT1ifSxyZW5hbWVfbm9kZTpmdW5jdGlv bihhLGIpe2E9dGhpcy5fZ2V0X25vZGUoYSksdGhpcy5fX3JvbGxiYWNrKCksYSYm YS5sZW5ndGgmJnRoaXMuc2V0X3RleHQuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5 cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSYmdGhpcy5fX2NhbGxiYWNrKHtvYmo6 YSxuYW1lOmJ9KX0sZGVsZXRlX25vZGU6ZnVuY3Rpb24oYSl7YT10aGlzLl9nZXRf bm9kZShhKTtpZighYS5sZW5ndGgpcmV0dXJuITE7dGhpcy5fX3JvbGxiYWNrKCk7 dmFyIGI9dGhpcy5fZ2V0X3BhcmVudChhKSxjPWQoW10pLGU9dGhpcztyZXR1cm4g YS5lYWNoKGZ1bmN0aW9uKCl7Yz1jLmFkZChlLl9nZXRfcHJldih0aGlzKSl9KSxh PWEuZGV0YWNoKCksYiE9PS0xJiZiLmZpbmQoIj4gdWwgPiBsaSIpLmxlbmd0aD09 PTAmJmIucmVtb3ZlQ2xhc3MoImpzdHJlZS1vcGVuIGpzdHJlZS1jbG9zZWQiKS5h ZGRDbGFzcygianN0cmVlLWxlYWYiKSx0aGlzLmNsZWFuX25vZGUoYiksdGhpcy5f X2NhbGxiYWNrKHtvYmo6YSxwcmV2OmMscGFyZW50OmJ9KSxhfSxwcmVwYXJlX21v dmU6ZnVuY3Rpb24oYSxiLGMsZSxmKXt2YXIgZz17fTtnLm90PWQuanN0cmVlLl9y ZWZlcmVuY2UoYSl8fHRoaXMsZy5vPWcub3QuX2dldF9ub2RlKGEpLGcucj1iPT09 LTE/LTE6dGhpcy5fZ2V0X25vZGUoYiksZy5wPXR5cGVvZiBjPT0idW5kZWZpbmVk Inx8Yz09PSExPyJsYXN0IjpjO2lmKCFmJiZoLm8mJmgub1swXT09PWcub1swXSYm aC5yWzBdPT09Zy5yWzBdJiZoLnA9PT1nLnApe3RoaXMuX19jYWxsYmFjayhoKSxl JiZlLmNhbGwodGhpcyxoKTtyZXR1cm59Zy5vdD1kLmpzdHJlZS5fcmVmZXJlbmNl KGcubyl8fHRoaXMsZy5ydD1kLmpzdHJlZS5fcmVmZXJlbmNlKGcucil8fHRoaXM7 aWYoZy5yPT09LTF8fCFnLnIpe2cuY3I9LTE7c3dpdGNoKGcucCl7Y2FzZSJmaXJz dCI6Y2FzZSJiZWZvcmUiOmNhc2UiaW5zaWRlIjpnLmNwPTA7YnJlYWs7Y2FzZSJh ZnRlciI6Y2FzZSJsYXN0IjpnLmNwPWcucnQuZ2V0X2NvbnRhaW5lcigpLmZpbmQo IiA+IHVsID4gbGkiKS5sZW5ndGg7YnJlYWs7ZGVmYXVsdDpnLmNwPWcucH19ZWxz ZXtpZighL14oYmVmb3JlfGFmdGVyKSQvLnRlc3QoZy5wKSYmIXRoaXMuX2lzX2xv YWRlZChnLnIpKXJldHVybiB0aGlzLmxvYWRfbm9kZShnLnIsZnVuY3Rpb24oKXt0 aGlzLnByZXBhcmVfbW92ZShhLGIsYyxlLCEwKX0pO3N3aXRjaChnLnApe2Nhc2Ui YmVmb3JlIjpnLmNwPWcuci5pbmRleCgpLGcuY3I9Zy5ydC5fZ2V0X3BhcmVudChn LnIpO2JyZWFrO2Nhc2UiYWZ0ZXIiOmcuY3A9Zy5yLmluZGV4KCkrMSxnLmNyPWcu cnQuX2dldF9wYXJlbnQoZy5yKTticmVhaztjYXNlImluc2lkZSI6Y2FzZSJmaXJz dCI6Zy5jcD0wLGcuY3I9Zy5yO2JyZWFrO2Nhc2UibGFzdCI6Zy5jcD1nLnIuZmlu ZCgiID4gdWwgPiBsaSIpLmxlbmd0aCxnLmNyPWcucjticmVhaztkZWZhdWx0Omcu Y3A9Zy5wLGcuY3I9Zy5yfX1nLm5wPWcuY3I9PS0xP2cucnQuZ2V0X2NvbnRhaW5l cigpOmcuY3IsZy5vcD1nLm90Ll9nZXRfcGFyZW50KGcubyksZy5jb3A9Zy5vLmlu ZGV4KCksZy5vcD09PS0xJiYoZy5vcD1nLm90P2cub3QuZ2V0X2NvbnRhaW5lcigp OnRoaXMuZ2V0X2NvbnRhaW5lcigpKSwhL14oYmVmb3JlfGFmdGVyKSQvLnRlc3Qo Zy5wKSYmZy5vcCYmZy5ucCYmZy5vcFswXT09PWcubnBbMF0mJmcuby5pbmRleCgp PGcuY3AmJmcuY3ArKyxnLm9yPWcubnAuZmluZCgiID4gdWwgPiBsaTpudGgtY2hp bGQoIisoZy5jcCsxKSsiKSIpLGg9Zyx0aGlzLl9fY2FsbGJhY2soaCksZSYmZS5j YWxsKHRoaXMsaCl9LGNoZWNrX21vdmU6ZnVuY3Rpb24oKXt2YXIgYT1oLGI9ITAs Yz1hLnI9PT0tMT90aGlzLmdldF9jb250YWluZXIoKTphLnI7cmV0dXJuIWF8fCFh Lm98fGEub3JbMF09PT1hLm9bMF0/ITE6YS5vcCYmYS5ucCYmYS5vcFswXT09PWEu bnBbMF0mJmEuY3AtMT09PWEuby5pbmRleCgpPyExOihhLm8uZWFjaChmdW5jdGlv bigpe2lmKGMucGFyZW50c1VudGlsKCIuanN0cmVlIiwibGkiKS5hbmRTZWxmKCku aW5kZXgodGhpcykhPT0tMSlyZXR1cm4gYj0hMSwhMX0pLGIpfSxtb3ZlX25vZGU6 ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe2lmKCFmKXJldHVybiB0aGlzLnByZXBhcmVf bW92ZShhLGIsYyxmdW5jdGlvbihhKXt0aGlzLm1vdmVfbm9kZShhLCExLCExLGUs ITAsZyl9KTtlJiYoaC5jeT0hMCk7aWYoIWcmJiF0aGlzLmNoZWNrX21vdmUoKSly ZXR1cm4hMTt0aGlzLl9fcm9sbGJhY2soKTt2YXIgaT0hMTtlPyhpPWEuby5jbG9u ZSghMCksaS5maW5kKCIqW2lkXSIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7 dGhpcy5pZCYmKHRoaXMuaWQ9ImNvcHlfIit0aGlzLmlkKX0pKTppPWEubyxhLm9y Lmxlbmd0aD9hLm9yLmJlZm9yZShpKTooYS5ucC5jaGlsZHJlbigidWwiKS5sZW5n dGh8fGQoIjx1bCAvPiIpLmFwcGVuZFRvKGEubnApLGEubnAuY2hpbGRyZW4oInVs OmVxKDApIikuYXBwZW5kKGkpKTt0cnl7YS5vdC5jbGVhbl9ub2RlKGEub3ApLGEu cnQuY2xlYW5fbm9kZShhLm5wKSxhLm9wLmZpbmQoIj4gdWwgPiBsaSIpLmxlbmd0 aHx8YS5vcC5yZW1vdmVDbGFzcygianN0cmVlLW9wZW4ganN0cmVlLWNsb3NlZCIp LmFkZENsYXNzKCJqc3RyZWUtbGVhZiIpLmNoaWxkcmVuKCJ1bCIpLnJlbW92ZSgp fWNhdGNoKGope31yZXR1cm4gZSYmKGguY3k9ITAsaC5vYz1pKSx0aGlzLl9fY2Fs bGJhY2soaCksaH0sX2dldF9tb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGh9fX0pfSko alF1ZXJ5KSxmdW5jdGlvbihhKXt2YXIgYixjLGQ7YShmdW5jdGlvbigpey9tc2ll Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk/KGM9YSgn PHRleHRhcmVhIGNvbHM9IjEwIiByb3dzPSIyIj48L3RleHRhcmVhPicpLmNzcyh7 cG9zaXRpb246ImFic29sdXRlIix0b3A6LTFlMyxsZWZ0OjB9KS5hcHBlbmRUbygi Ym9keSIpLGQ9YSgnPHRleHRhcmVhIGNvbHM9IjEwIiByb3dzPSIyIiBzdHlsZT0i b3ZlcmZsb3c6IGhpZGRlbjsiPjwvdGV4dGFyZWE+JykuY3NzKHtwb3NpdGlvbjoi YWJzb2x1dGUiLHRvcDotMWUzLGxlZnQ6MH0pLmFwcGVuZFRvKCJib2R5IiksYj1j LndpZHRoKCktZC53aWR0aCgpLGMuYWRkKGQpLnJlbW92ZSgpKTooYz1hKCI8ZGl2 IC8+IikuY3NzKHt3aWR0aDoxMDAsaGVpZ2h0OjEwMCxvdmVyZmxvdzoiYXV0byIs cG9zaXRpb246ImFic29sdXRlIix0b3A6LTFlMyxsZWZ0OjB9KS5wcmVwZW5kVG8o ImJvZHkiKS5hcHBlbmQoIjxkaXYgLz4iKS5maW5kKCJkaXYiKS5jc3Moe3dpZHRo OiIxMDAlIixoZWlnaHQ6MjAwfSksYj0xMDAtYy53aWR0aCgpLGMucGFyZW50KCku cmVtb3ZlKCkpfSksYS5qc3RyZWUucGx1Z2luKCJ1aSIse19faW5pdDpmdW5jdGlv bigpe3RoaXMuZGF0YS51aS5zZWxlY3RlZD1hKCksdGhpcy5kYXRhLnVpLmxhc3Rf c2VsZWN0ZWQ9ITEsdGhpcy5kYXRhLnVpLmhvdmVyZWQ9bnVsbCx0aGlzLmRhdGEu dWkudG9fc2VsZWN0PXRoaXMuZ2V0X3NldHRpbmdzKCkudWkuaW5pdGlhbGx5X3Nl bGVjdCx0aGlzLmdldF9jb250YWluZXIoKS5kZWxlZ2F0ZSgiYSIsImNsaWNrLmpz dHJlZSIsYS5wcm94eShmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCksYi5j dXJyZW50VGFyZ2V0LmJsdXIoKSxhKGIuY3VycmVudFRhcmdldCkuaGFzQ2xhc3Mo ImpzdHJlZS1sb2FkaW5nIil8fHRoaXMuc2VsZWN0X25vZGUoYi5jdXJyZW50VGFy Z2V0LCEwLGIpfSx0aGlzKSkuZGVsZWdhdGUoImEiLCJtb3VzZWVudGVyLmpzdHJl ZSIsYS5wcm94eShmdW5jdGlvbihiKXthKGIuY3VycmVudFRhcmdldCkuaGFzQ2xh c3MoImpzdHJlZS1sb2FkaW5nIil8fHRoaXMuaG92ZXJfbm9kZShiLnRhcmdldCl9 LHRoaXMpKS5kZWxlZ2F0ZSgiYSIsIm1vdXNlbGVhdmUuanN0cmVlIixhLnByb3h5 KGZ1bmN0aW9uKGIpe2EoYi5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygianN0cmVl LWxvYWRpbmciKXx8dGhpcy5kZWhvdmVyX25vZGUoYi50YXJnZXQpfSx0aGlzKSku YmluZCgicmVvcGVuLmpzdHJlZSIsYS5wcm94eShmdW5jdGlvbigpe3RoaXMucmVz ZWxlY3QoKX0sdGhpcykpLmJpbmQoImdldF9yb2xsYmFjay5qc3RyZWUiLGEucHJv eHkoZnVuY3Rpb24oKXt0aGlzLmRlaG92ZXJfbm9kZSgpLHRoaXMuc2F2ZV9zZWxl Y3RlZCgpfSx0aGlzKSkuYmluZCgic2V0X3JvbGxiYWNrLmpzdHJlZSIsYS5wcm94 eShmdW5jdGlvbigpe3RoaXMucmVzZWxlY3QoKX0sdGhpcykpLmJpbmQoImNsb3Nl X25vZGUuanN0cmVlIixhLnByb3h5KGZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5f Z2V0X3NldHRpbmdzKCkudWksZT10aGlzLl9nZXRfbm9kZShjLnJzbHQub2JqKSxm PWUmJmUubGVuZ3RoP2UuY2hpbGRyZW4oInVsIikuZmluZCgiYS5qc3RyZWUtY2xp Y2tlZCIpOmEoKSxnPXRoaXM7aWYoZC5zZWxlY3RlZF9wYXJlbnRfY2xvc2U9PT0h MXx8IWYubGVuZ3RoKXJldHVybjtmLmVhY2goZnVuY3Rpb24oKXtnLmRlc2VsZWN0 X25vZGUodGhpcyksZC5zZWxlY3RlZF9wYXJlbnRfY2xvc2U9PT0ic2VsZWN0X3Bh cmVudCImJmcuc2VsZWN0X25vZGUoZSl9KX0sdGhpcykpLmJpbmQoImRlbGV0ZV9u b2RlLmpzdHJlZSIsYS5wcm94eShmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2dl dF9zZXR0aW5ncygpLnVpLnNlbGVjdF9wcmV2X29uX2RlbGV0ZSxkPXRoaXMuX2dl dF9ub2RlKGIucnNsdC5vYmopLGU9ZCYmZC5sZW5ndGg/ZC5maW5kKCJhLmpzdHJl ZS1jbGlja2VkIik6W10sZj10aGlzO2UuZWFjaChmdW5jdGlvbigpe2YuZGVzZWxl Y3Rfbm9kZSh0aGlzKX0pLGMmJmUubGVuZ3RoJiZiLnJzbHQucHJldi5lYWNoKGZ1 bmN0aW9uKCl7aWYodGhpcy5wYXJlbnROb2RlKXJldHVybiBmLnNlbGVjdF9ub2Rl KHRoaXMpLCExfSl9LHRoaXMpKS5iaW5kKCJtb3ZlX25vZGUuanN0cmVlIixhLnBy b3h5KGZ1bmN0aW9uKGEsYil7Yi5yc2x0LmN5JiZiLnJzbHQub2MuZmluZCgiYS5q c3RyZWUtY2xpY2tlZCIpLnJlbW92ZUNsYXNzKCJqc3RyZWUtY2xpY2tlZCIpfSx0 aGlzKSl9LGRlZmF1bHRzOntzZWxlY3RfbGltaXQ6LTEsc2VsZWN0X211bHRpcGxl X21vZGlmaWVyOiJjdHJsIixzZWxlY3RfcmFuZ2VfbW9kaWZpZXI6InNoaWZ0Iixz ZWxlY3RlZF9wYXJlbnRfY2xvc2U6InNlbGVjdF9wYXJlbnQiLHNlbGVjdGVkX3Bh cmVudF9vcGVuOiEwLHNlbGVjdF9wcmV2X29uX2RlbGV0ZTohMCxkaXNhYmxlX3Nl bGVjdGluZ19jaGlsZHJlbjohMSxpbml0aWFsbHlfc2VsZWN0OltdfSxfZm46e19n ZXRfbm9kZTpmdW5jdGlvbihiLGMpe2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkInx8 Yj09PW51bGwpcmV0dXJuIGM/dGhpcy5kYXRhLnVpLnNlbGVjdGVkOnRoaXMuZGF0 YS51aS5sYXN0X3NlbGVjdGVkO3ZhciBkPWEoYix0aGlzLmdldF9jb250YWluZXIo KSk7cmV0dXJuIGQuaXMoIi5qc3RyZWUiKXx8Yj09LTE/LTE6KGQ9ZC5jbG9zZXN0 KCJsaSIsdGhpcy5nZXRfY29udGFpbmVyKCkpLGQubGVuZ3RoP2Q6ITEpfSxfdWlf bm90aWZ5OmZ1bmN0aW9uKGEsYil7Yi5zZWxlY3RlZCYmdGhpcy5zZWxlY3Rfbm9k ZShhLCExKX0sc2F2ZV9zZWxlY3RlZDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhp cy5kYXRhLnVpLnRvX3NlbGVjdD1bXSx0aGlzLmRhdGEudWkuc2VsZWN0ZWQuZWFj aChmdW5jdGlvbigpe3RoaXMuaWQmJmEuZGF0YS51aS50b19zZWxlY3QucHVzaCgi IyIrdGhpcy5pZC50b1N0cmluZygpLnJlcGxhY2UoL14jLywiIikucmVwbGFjZSgv XFxcLy9nLCIvIikucmVwbGFjZSgvXC8vZywiXFwvIikucmVwbGFjZSgvXFxcLi9n LCIuIikucmVwbGFjZSgvXC4vZywiXFwuIikucmVwbGFjZSgvXDovZywiXFw6Iikp fSksdGhpcy5fX2NhbGxiYWNrKHRoaXMuZGF0YS51aS50b19zZWxlY3QpfSxyZXNl bGVjdDpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYz10aGlzLmRhdGEudWkudG9fc2Vs ZWN0O2M9YS5tYXAoYS5tYWtlQXJyYXkoYyksZnVuY3Rpb24oYSl7cmV0dXJuIiMi K2EudG9TdHJpbmcoKS5yZXBsYWNlKC9eIy8sIiIpLnJlcGxhY2UoL1xcXC8vZywi LyIpLnJlcGxhY2UoL1wvL2csIlxcLyIpLnJlcGxhY2UoL1xcXC4vZywiLiIpLnJl cGxhY2UoL1wuL2csIlxcLiIpLnJlcGxhY2UoL1w6L2csIlxcOiIpfSksYS5lYWNo KGMsZnVuY3Rpb24oYSxjKXtjJiZjIT09IiMiJiZiLnNlbGVjdF9ub2RlKGMpfSks dGhpcy5kYXRhLnVpLnNlbGVjdGVkPXRoaXMuZGF0YS51aS5zZWxlY3RlZC5maWx0 ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfSksdGhpcy5fX2Nh bGxiYWNrKCl9LHJlZnJlc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2F2ZV9z ZWxlY3RlZCgpLHRoaXMuX19jYWxsX29sZCgpfSxob3Zlcl9ub2RlOmZ1bmN0aW9u KGEpe2E9dGhpcy5fZ2V0X25vZGUoYSk7aWYoIWEubGVuZ3RoKXJldHVybiExO2Eu aGFzQ2xhc3MoImpzdHJlZS1ob3ZlcmVkIil8fHRoaXMuZGVob3Zlcl9ub2RlKCks dGhpcy5kYXRhLnVpLmhvdmVyZWQ9YS5jaGlsZHJlbigiYSIpLmFkZENsYXNzKCJq c3RyZWUtaG92ZXJlZCIpLnBhcmVudCgpLHRoaXMuX2ZpeF9zY3JvbGwoYSksdGhp cy5fX2NhbGxiYWNrKHtvYmo6YX0pfSxkZWhvdmVyX25vZGU6ZnVuY3Rpb24oKXt2 YXIgYT10aGlzLmRhdGEudWkuaG92ZXJlZCxiO2lmKCFhfHwhYS5sZW5ndGgpcmV0 dXJuITE7Yj1hLmNoaWxkcmVuKCJhIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1ob3Zl cmVkIikucGFyZW50KCksdGhpcy5kYXRhLnVpLmhvdmVyZWRbMF09PT1iWzBdJiYo dGhpcy5kYXRhLnVpLmhvdmVyZWQ9bnVsbCksdGhpcy5fX2NhbGxiYWNrKHtvYmo6 YX0pfSxzZWxlY3Rfbm9kZTpmdW5jdGlvbihhLGIsYyl7YT10aGlzLl9nZXRfbm9k ZShhKTtpZihhPT0tMXx8IWF8fCFhLmxlbmd0aClyZXR1cm4hMTt2YXIgZD10aGlz Ll9nZXRfc2V0dGluZ3MoKS51aSxlPWQuc2VsZWN0X211bHRpcGxlX21vZGlmaWVy PT0ib24ifHxkLnNlbGVjdF9tdWx0aXBsZV9tb2RpZmllciE9PSExJiZjJiZjW2Qu c2VsZWN0X211bHRpcGxlX21vZGlmaWVyKyJLZXkiXSxmPWQuc2VsZWN0X3Jhbmdl X21vZGlmaWVyIT09ITEmJmMmJmNbZC5zZWxlY3RfcmFuZ2VfbW9kaWZpZXIrIktl eSJdJiZ0aGlzLmRhdGEudWkubGFzdF9zZWxlY3RlZCYmdGhpcy5kYXRhLnVpLmxh c3Rfc2VsZWN0ZWRbMF0hPT1hWzBdJiZ0aGlzLmRhdGEudWkubGFzdF9zZWxlY3Rl ZC5wYXJlbnQoKVswXT09PWEucGFyZW50KClbMF0sZz10aGlzLmlzX3NlbGVjdGVk KGEpLGg9ITAsaT10aGlzO2lmKGIpe2lmKGQuZGlzYWJsZV9zZWxlY3RpbmdfY2hp bGRyZW4mJmUmJihhLnBhcmVudHNVbnRpbCgiLmpzdHJlZSIsImxpIikuY2hpbGRy ZW4oImEuanN0cmVlLWNsaWNrZWQiKS5sZW5ndGh8fGEuY2hpbGRyZW4oInVsIiku ZmluZCgiYS5qc3RyZWUtY2xpY2tlZDplcSgwKSIpLmxlbmd0aCkpcmV0dXJuITE7 aD0hMTtzd2l0Y2goITApe2Nhc2UgZjp0aGlzLmRhdGEudWkubGFzdF9zZWxlY3Rl ZC5hZGRDbGFzcygianN0cmVlLWxhc3Qtc2VsZWN0ZWQiKSxhPWFbYS5pbmRleCgp PHRoaXMuZGF0YS51aS5sYXN0X3NlbGVjdGVkLmluZGV4KCk/Im5leHRVbnRpbCI6 InByZXZVbnRpbCJdKCIuanN0cmVlLWxhc3Qtc2VsZWN0ZWQiKS5hbmRTZWxmKCks ZC5zZWxlY3RfbGltaXQ9PS0xfHxhLmxlbmd0aDxkLnNlbGVjdF9saW1pdD8odGhp cy5kYXRhLnVpLmxhc3Rfc2VsZWN0ZWQucmVtb3ZlQ2xhc3MoImpzdHJlZS1sYXN0 LXNlbGVjdGVkIiksdGhpcy5kYXRhLnVpLnNlbGVjdGVkLmVhY2goZnVuY3Rpb24o KXt0aGlzIT09aS5kYXRhLnVpLmxhc3Rfc2VsZWN0ZWRbMF0mJmkuZGVzZWxlY3Rf bm9kZSh0aGlzKX0pLGc9ITEsaD0hMCk6aD0hMTticmVhaztjYXNlIGcmJiFlOnRo aXMuZGVzZWxlY3RfYWxsKCksZz0hMSxoPSEwO2JyZWFrO2Nhc2UhZyYmIWU6aWYo ZC5zZWxlY3RfbGltaXQ9PS0xfHxkLnNlbGVjdF9saW1pdD4wKXRoaXMuZGVzZWxl Y3RfYWxsKCksaD0hMDticmVhaztjYXNlIGcmJmU6dGhpcy5kZXNlbGVjdF9ub2Rl KGEpO2JyZWFrO2Nhc2UhZyYmZTppZihkLnNlbGVjdF9saW1pdD09LTF8fHRoaXMu ZGF0YS51aS5zZWxlY3RlZC5sZW5ndGgrMTw9ZC5zZWxlY3RfbGltaXQpaD0hMH19 aCYmIWcmJihmfHwodGhpcy5kYXRhLnVpLmxhc3Rfc2VsZWN0ZWQ9YSksYS5jaGls ZHJlbigiYSIpLmFkZENsYXNzKCJqc3RyZWUtY2xpY2tlZCIpLGQuc2VsZWN0ZWRf cGFyZW50X29wZW4mJmEucGFyZW50cygiLmpzdHJlZS1jbG9zZWQiKS5lYWNoKGZ1 bmN0aW9uKCl7aS5vcGVuX25vZGUodGhpcywhMSwhMCl9KSx0aGlzLmRhdGEudWku c2VsZWN0ZWQ9dGhpcy5kYXRhLnVpLnNlbGVjdGVkLmFkZChhKSx0aGlzLl9maXhf c2Nyb2xsKGEuZXEoMCkpLHRoaXMuX19jYWxsYmFjayh7b2JqOmEsZTpjfSkpfSxf Zml4X3Njcm9sbDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmdldF9jb250YWluZXIo KVswXSxkO2lmKGMuc2Nyb2xsSGVpZ2h0PmMub2Zmc2V0SGVpZ2h0KXthPXRoaXMu X2dldF9ub2RlKGEpO2lmKCFhfHxhPT09LTF8fCFhLmxlbmd0aHx8IWEuaXMoIjp2 aXNpYmxlIikpcmV0dXJuO2Q9YS5vZmZzZXQoKS50b3AtdGhpcy5nZXRfY29udGFp bmVyKCkub2Zmc2V0KCkudG9wLGQ8MCYmKGMuc2Nyb2xsVG9wPWMuc2Nyb2xsVG9w K2QtMSksZCt0aGlzLmRhdGEuY29yZS5saV9oZWlnaHQrKGMuc2Nyb2xsV2lkdGg+ Yy5vZmZzZXRXaWR0aD9iOjApPmMub2Zmc2V0SGVpZ2h0JiYoYy5zY3JvbGxUb3A9 Yy5zY3JvbGxUb3ArKGQtYy5vZmZzZXRIZWlnaHQrdGhpcy5kYXRhLmNvcmUubGlf aGVpZ2h0KzErKGMuc2Nyb2xsV2lkdGg+Yy5vZmZzZXRXaWR0aD9iOjApKSl9fSxk ZXNlbGVjdF9ub2RlOmZ1bmN0aW9uKGEpe2E9dGhpcy5fZ2V0X25vZGUoYSk7aWYo IWEubGVuZ3RoKXJldHVybiExO3RoaXMuaXNfc2VsZWN0ZWQoYSkmJihhLmNoaWxk cmVuKCJhIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1jbGlja2VkIiksdGhpcy5kYXRh LnVpLnNlbGVjdGVkPXRoaXMuZGF0YS51aS5zZWxlY3RlZC5ub3QoYSksdGhpcy5k YXRhLnVpLmxhc3Rfc2VsZWN0ZWQuZ2V0KDApPT09YS5nZXQoMCkmJih0aGlzLmRh dGEudWkubGFzdF9zZWxlY3RlZD10aGlzLmRhdGEudWkuc2VsZWN0ZWQuZXEoMCkp LHRoaXMuX19jYWxsYmFjayh7b2JqOmF9KSl9LHRvZ2dsZV9zZWxlY3Q6ZnVuY3Rp b24oYSl7YT10aGlzLl9nZXRfbm9kZShhKTtpZighYS5sZW5ndGgpcmV0dXJuITE7 dGhpcy5pc19zZWxlY3RlZChhKT90aGlzLmRlc2VsZWN0X25vZGUoYSk6dGhpcy5z ZWxlY3Rfbm9kZShhKX0saXNfc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRo aXMuZGF0YS51aS5zZWxlY3RlZC5pbmRleCh0aGlzLl9nZXRfbm9kZShhKSk+PTB9 LGdldF9zZWxlY3RlZDpmdW5jdGlvbihiKXtyZXR1cm4gYj9hKGIpLmZpbmQoImEu anN0cmVlLWNsaWNrZWQiKS5wYXJlbnQoKTp0aGlzLmRhdGEudWkuc2VsZWN0ZWR9 LGRlc2VsZWN0X2FsbDpmdW5jdGlvbihiKXt2YXIgYz1iP2EoYikuZmluZCgiYS5q c3RyZWUtY2xpY2tlZCIpLnBhcmVudCgpOnRoaXMuZ2V0X2NvbnRhaW5lcigpLmZp bmQoImEuanN0cmVlLWNsaWNrZWQiKS5wYXJlbnQoKTtjLmNoaWxkcmVuKCJhLmpz dHJlZS1jbGlja2VkIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1jbGlja2VkIiksdGhp cy5kYXRhLnVpLnNlbGVjdGVkPWEoW10pLHRoaXMuZGF0YS51aS5sYXN0X3NlbGVj dGVkPSExLHRoaXMuX19jYWxsYmFjayh7b2JqOmN9KX19fSksYS5qc3RyZWUuZGVm YXVsdHMucGx1Z2lucy5wdXNoKCJ1aSIpfShqUXVlcnkpLGZ1bmN0aW9uKGEpe2Eu anN0cmVlLnBsdWdpbigiY3JybSIse19faW5pdDpmdW5jdGlvbigpe3RoaXMuZ2V0 X2NvbnRhaW5lcigpLmJpbmQoIm1vdmVfbm9kZS5qc3RyZWUiLGEucHJveHkoZnVu Y3Rpb24oYSxiKXtpZih0aGlzLl9nZXRfc2V0dGluZ3MoKS5jcnJtLm1vdmUub3Bl bl9vbm1vdmUpe3ZhciBjPXRoaXM7Yi5yc2x0Lm5wLnBhcmVudHNVbnRpbCgiLmpz dHJlZSIpLmFuZFNlbGYoKS5maWx0ZXIoIi5qc3RyZWUtY2xvc2VkIikuZWFjaChm dW5jdGlvbigpe2Mub3Blbl9ub2RlKHRoaXMsITEsITApfSl9fSx0aGlzKSl9LGRl ZmF1bHRzOntpbnB1dF93aWR0aF9saW1pdDoyMDAsbW92ZTp7YWx3YXlzX2NvcHk6 ITEsb3Blbl9vbm1vdmU6ITAsZGVmYXVsdF9wb3NpdGlvbjoibGFzdCIsY2hlY2tf bW92ZTpmdW5jdGlvbihhKXtyZXR1cm4hMH19fSxfZm46e19zaG93X2lucHV0OmZ1 bmN0aW9uKGIsYyl7Yj10aGlzLl9nZXRfbm9kZShiKTt2YXIgZD10aGlzLl9nZXRf c2V0dGluZ3MoKS5jb3JlLnJ0bCxlPXRoaXMuX2dldF9zZXR0aW5ncygpLmNycm0u aW5wdXRfd2lkdGhfbGltaXQsZj1iLmNoaWxkcmVuKCJpbnMiKS53aWR0aCgpLGc9 Yi5maW5kKCI+IGE6dmlzaWJsZSA+IGlucyIpLndpZHRoKCkqYi5maW5kKCI+IGE6 dmlzaWJsZSA+IGlucyIpLmxlbmd0aCxoPXRoaXMuZ2V0X3RleHQoYiksaT1hKCI8 ZGl2IC8+Iix7Y3NzOntwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiLTIwMHB4Iixs ZWZ0OmQ/IjBweCI6Ii0xMDAwcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9fSkuYXBw ZW5kVG8oImJvZHkiKSxqPWIuY3NzKCJwb3NpdGlvbiIsInJlbGF0aXZlIikuYXBw ZW5kKGEoIjxpbnB1dCAvPiIse3ZhbHVlOmgsImNsYXNzIjoianN0cmVlLXJlbmFt ZS1pbnB1dCIsY3NzOntwYWRkaW5nOiIwIixib3JkZXI6IjFweCBzb2xpZCBzaWx2 ZXIiLHBvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpkPyJhdXRvIjpmK2crNCsicHgi LHJpZ2h0OmQ/ZitnKzQrInB4IjoiYXV0byIsdG9wOiIwcHgiLGhlaWdodDp0aGlz LmRhdGEuY29yZS5saV9oZWlnaHQtMisicHgiLGxpbmVIZWlnaHQ6dGhpcy5kYXRh LmNvcmUubGlfaGVpZ2h0LTIrInB4Iix3aWR0aDoiMTUwcHgifSxibHVyOmEucHJv eHkoZnVuY3Rpb24oKXt2YXIgYT1iLmNoaWxkcmVuKCIuanN0cmVlLXJlbmFtZS1p bnB1dCIpLGQ9YS52YWwoKTtkPT09IiImJihkPWgpLGkucmVtb3ZlKCksYS5yZW1v dmUoKSx0aGlzLnNldF90ZXh0KGIsaCksdGhpcy5yZW5hbWVfbm9kZShiLGQpLGMu Y2FsbCh0aGlzLGIsZCxoKSxiLmNzcygicG9zaXRpb24iLCIiKX0sdGhpcyksa2V5 dXA6ZnVuY3Rpb24oYSl7dmFyIGI9YS5rZXlDb2RlfHxhLndoaWNoO2lmKGI9PTI3 KXt0aGlzLnZhbHVlPWgsdGhpcy5ibHVyKCk7cmV0dXJufWlmKGI9PTEzKXt0aGlz LmJsdXIoKTtyZXR1cm59ai53aWR0aChNYXRoLm1pbihpLnRleHQoInBXIit0aGlz LnZhbHVlKS53aWR0aCgpLGUpKX0sa2V5cHJlc3M6ZnVuY3Rpb24oYSl7dmFyIGI9 YS5rZXlDb2RlfHxhLndoaWNoO2lmKGI9PTEzKXJldHVybiExfX0pKS5jaGlsZHJl bigiLmpzdHJlZS1yZW5hbWUtaW5wdXQiKTt0aGlzLnNldF90ZXh0KGIsIiIpLGku Y3NzKHtmb250RmFtaWx5OmouY3NzKCJmb250RmFtaWx5Iil8fCIiLGZvbnRTaXpl OmouY3NzKCJmb250U2l6ZSIpfHwiIixmb250V2VpZ2h0OmouY3NzKCJmb250V2Vp Z2h0Iil8fCIiLGZvbnRTdHlsZTpqLmNzcygiZm9udFN0eWxlIil8fCIiLGZvbnRT dHJldGNoOmouY3NzKCJmb250U3RyZXRjaCIpfHwiIixmb250VmFyaWFudDpqLmNz cygiZm9udFZhcmlhbnQiKXx8IiIsbGV0dGVyU3BhY2luZzpqLmNzcygibGV0dGVy U3BhY2luZyIpfHwiIix3b3JkU3BhY2luZzpqLmNzcygid29yZFNwYWNpbmciKXx8 IiJ9KSxqLndpZHRoKE1hdGgubWluKGkudGV4dCgicFciK2pbMF0udmFsdWUpLndp ZHRoKCksZSkpWzBdLnNlbGVjdCgpfSxyZW5hbWU6ZnVuY3Rpb24oYSl7YT10aGlz Ll9nZXRfbm9kZShhKSx0aGlzLl9fcm9sbGJhY2soKTt2YXIgYj10aGlzLl9fY2Fs bGJhY2s7dGhpcy5fc2hvd19pbnB1dChhLGZ1bmN0aW9uKGEsYyxkKXtiLmNhbGwo dGhpcyx7b2JqOmEsbmV3X25hbWU6YyxvbGRfbmFtZTpkfSl9KX0sY3JlYXRlOmZ1 bmN0aW9uKGIsYyxkLGUsZil7dmFyIGcsaD10aGlzO3JldHVybiBiPXRoaXMuX2dl dF9ub2RlKGIpLGJ8fChiPS0xKSx0aGlzLl9fcm9sbGJhY2soKSxnPXRoaXMuY3Jl YXRlX25vZGUoYixjLGQsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5fZ2V0X3BhcmVu dChiKSxkPWEoYikuaW5kZXgoKTtlJiZlLmNhbGwodGhpcyxiKSxjLmxlbmd0aCYm Yy5oYXNDbGFzcygianN0cmVlLWNsb3NlZCIpJiZ0aGlzLm9wZW5fbm9kZShjLCEx LCEwKSxmP2guX19jYWxsYmFjayh7b2JqOmIsbmFtZTp0aGlzLmdldF90ZXh0KGIp LHBhcmVudDpjLHBvc2l0aW9uOmR9KTp0aGlzLl9zaG93X2lucHV0KGIsZnVuY3Rp b24oYSxiLGUpe2guX19jYWxsYmFjayh7b2JqOmEsbmFtZTpiLHBhcmVudDpjLHBv c2l0aW9uOmR9KX0pfSksZ30scmVtb3ZlOmZ1bmN0aW9uKGEpe2E9dGhpcy5fZ2V0 X25vZGUoYSwhMCk7dmFyIGI9dGhpcy5fZ2V0X3BhcmVudChhKSxjPXRoaXMuX2dl dF9wcmV2KGEpO3RoaXMuX19yb2xsYmFjaygpLGE9dGhpcy5kZWxldGVfbm9kZShh KSxhIT09ITEmJnRoaXMuX19jYWxsYmFjayh7b2JqOmEscHJldjpjLHBhcmVudDpi fSl9LGNoZWNrX21vdmU6ZnVuY3Rpb24oKXtpZighdGhpcy5fX2NhbGxfb2xkKCkp cmV0dXJuITE7dmFyIGE9dGhpcy5fZ2V0X3NldHRpbmdzKCkuY3JybS5tb3ZlO3Jl dHVybiBhLmNoZWNrX21vdmUuY2FsbCh0aGlzLHRoaXMuX2dldF9tb3ZlKCkpPyEw OiExfSxtb3ZlX25vZGU6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXRoaXMu X2dldF9zZXR0aW5ncygpLmNycm0ubW92ZTtpZighZSlyZXR1cm4gdHlwZW9mIGM9 PSJ1bmRlZmluZWQiJiYoYz1nLmRlZmF1bHRfcG9zaXRpb24pLGM9PT0iaW5zaWRl IiYmIWcuZGVmYXVsdF9wb3NpdGlvbi5tYXRjaCgvXihiZWZvcmV8YWZ0ZXIpJC8p JiYoYz1nLmRlZmF1bHRfcG9zaXRpb24pLHRoaXMuX19jYWxsX29sZCghMCxhLGIs YyxkLCExLGYpO2lmKGcuYWx3YXlzX2NvcHk9PT0hMHx8Zy5hbHdheXNfY29weT09 PSJtdWx0aXRyZWUiJiZhLnJ0LmdldF9pbmRleCgpIT09YS5vdC5nZXRfaW5kZXgo KSlkPSEwO3RoaXMuX19jYWxsX29sZCghMCxhLGIsYyxkLCEwLGYpfSxjdXQ6ZnVu Y3Rpb24oYSl7YT10aGlzLl9nZXRfbm9kZShhLCEwKTtpZighYXx8IWEubGVuZ3Ro KXJldHVybiExO3RoaXMuZGF0YS5jcnJtLmNwX25vZGVzPSExLHRoaXMuZGF0YS5j cnJtLmN0X25vZGVzPWEsdGhpcy5fX2NhbGxiYWNrKHtvYmo6YX0pfSxjb3B5OmZ1 bmN0aW9uKGEpe2E9dGhpcy5fZ2V0X25vZGUoYSwhMCk7aWYoIWF8fCFhLmxlbmd0 aClyZXR1cm4hMTt0aGlzLmRhdGEuY3JybS5jdF9ub2Rlcz0hMSx0aGlzLmRhdGEu Y3JybS5jcF9ub2Rlcz1hLHRoaXMuX19jYWxsYmFjayh7b2JqOmF9KX0scGFzdGU6 ZnVuY3Rpb24oYSl7YT10aGlzLl9nZXRfbm9kZShhKTtpZighYXx8IWEubGVuZ3Ro KXJldHVybiExO3ZhciBiPXRoaXMuZGF0YS5jcnJtLmN0X25vZGVzP3RoaXMuZGF0 YS5jcnJtLmN0X25vZGVzOnRoaXMuZGF0YS5jcnJtLmNwX25vZGVzO2lmKCF0aGlz LmRhdGEuY3JybS5jdF9ub2RlcyYmIXRoaXMuZGF0YS5jcnJtLmNwX25vZGVzKXJl dHVybiExO3RoaXMuZGF0YS5jcnJtLmN0X25vZGVzJiYodGhpcy5tb3ZlX25vZGUo dGhpcy5kYXRhLmNycm0uY3Rfbm9kZXMsYSksdGhpcy5kYXRhLmNycm0uY3Rfbm9k ZXM9ITEpLHRoaXMuZGF0YS5jcnJtLmNwX25vZGVzJiZ0aGlzLm1vdmVfbm9kZSh0 aGlzLmRhdGEuY3JybS5jcF9ub2RlcyxhLCExLCEwKSx0aGlzLl9fY2FsbGJhY2so e29iajphLG5vZGVzOmJ9KX19fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7dmFyIGI9 W107YS5qc3RyZWUuX3RoZW1lcz0hMSxhLmpzdHJlZS5wbHVnaW4oInRoZW1lcyIs e19faW5pdDpmdW5jdGlvbigpe3RoaXMuZ2V0X2NvbnRhaW5lcigpLmJpbmQoImlu aXQuanN0cmVlIixhLnByb3h5KGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fZ2V0X3Nl dHRpbmdzKCkudGhlbWVzO3RoaXMuZGF0YS50aGVtZXMuZG90cz1hLmRvdHMsdGhp cy5kYXRhLnRoZW1lcy5pY29ucz1hLmljb25zLHRoaXMuc2V0X3RoZW1lKGEudGhl bWUsYS51cmwpfSx0aGlzKSkuYmluZCgibG9hZGVkLmpzdHJlZSIsYS5wcm94eShm dW5jdGlvbigpe3RoaXMuZGF0YS50aGVtZXMuZG90cz90aGlzLnNob3dfZG90cygp OnRoaXMuaGlkZV9kb3RzKCksdGhpcy5kYXRhLnRoZW1lcy5pY29ucz90aGlzLnNo b3dfaWNvbnMoKTp0aGlzLmhpZGVfaWNvbnMoKX0sdGhpcykpfSxkZWZhdWx0czp7 dGhlbWU6ImRlZmF1bHQiLHVybDohMSxkb3RzOiEwLGljb25zOiEwfSxfZm46e3Nl dF90aGVtZTpmdW5jdGlvbihjLGQpe2lmKCFjKXJldHVybiExO2R8fChkPWEuanN0 cmVlLl90aGVtZXMrYysiL3N0eWxlLmNzcyIpLGEuaW5BcnJheShkLGIpPT0tMSYm KGEudmFrYXRhLmNzcy5hZGRfc2hlZXQoe3VybDpkfSksYi5wdXNoKGQpKSx0aGlz LmRhdGEudGhlbWVzLnRoZW1lIT1jJiYodGhpcy5nZXRfY29udGFpbmVyKCkucmVt b3ZlQ2xhc3MoImpzdHJlZS0iK3RoaXMuZGF0YS50aGVtZXMudGhlbWUpLHRoaXMu ZGF0YS50aGVtZXMudGhlbWU9YyksdGhpcy5nZXRfY29udGFpbmVyKCkuYWRkQ2xh c3MoImpzdHJlZS0iK2MpLHRoaXMuZGF0YS50aGVtZXMuZG90cz90aGlzLnNob3df ZG90cygpOnRoaXMuaGlkZV9kb3RzKCksdGhpcy5kYXRhLnRoZW1lcy5pY29ucz90 aGlzLnNob3dfaWNvbnMoKTp0aGlzLmhpZGVfaWNvbnMoKSx0aGlzLl9fY2FsbGJh Y2soKX0sZ2V0X3RoZW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS50aGVt ZXMudGhlbWV9LHNob3dfZG90czpmdW5jdGlvbigpe3RoaXMuZGF0YS50aGVtZXMu ZG90cz0hMCx0aGlzLmdldF9jb250YWluZXIoKS5jaGlsZHJlbigidWwiKS5yZW1v dmVDbGFzcygianN0cmVlLW5vLWRvdHMiKX0saGlkZV9kb3RzOmZ1bmN0aW9uKCl7 dGhpcy5kYXRhLnRoZW1lcy5kb3RzPSExLHRoaXMuZ2V0X2NvbnRhaW5lcigpLmNo aWxkcmVuKCJ1bCIpLmFkZENsYXNzKCJqc3RyZWUtbm8tZG90cyIpfSx0b2dnbGVf ZG90czpmdW5jdGlvbigpe3RoaXMuZGF0YS50aGVtZXMuZG90cz90aGlzLmhpZGVf ZG90cygpOnRoaXMuc2hvd19kb3RzKCl9LHNob3dfaWNvbnM6ZnVuY3Rpb24oKXt0 aGlzLmRhdGEudGhlbWVzLmljb25zPSEwLHRoaXMuZ2V0X2NvbnRhaW5lcigpLmNo aWxkcmVuKCJ1bCIpLnJlbW92ZUNsYXNzKCJqc3RyZWUtbm8taWNvbnMiKX0saGlk ZV9pY29uczpmdW5jdGlvbigpe3RoaXMuZGF0YS50aGVtZXMuaWNvbnM9ITEsdGhp cy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikuYWRkQ2xhc3MoImpzdHJl ZS1uby1pY29ucyIpfSx0b2dnbGVfaWNvbnM6ZnVuY3Rpb24oKXt0aGlzLmRhdGEu dGhlbWVzLmljb25zP3RoaXMuaGlkZV9pY29ucygpOnRoaXMuc2hvd19pY29ucygp fX19KSxhKGZ1bmN0aW9uKCl7YS5qc3RyZWUuX3RoZW1lcz09PSExJiZhKCJzY3Jp cHQiKS5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5zcmMudG9TdHJpbmcoKS5tYXRj aCgvanF1ZXJ5XC5qc3RyZWVbXlwvXSo/XC5qcyhcPy4qKT8kLykpcmV0dXJuIGEu anN0cmVlLl90aGVtZXM9dGhpcy5zcmMudG9TdHJpbmcoKS5yZXBsYWNlKC9qcXVl cnlcLmpzdHJlZVteXC9dKj9cLmpzKFw/LiopPyQvLCIiKSsidGhlbWVzLyIsITF9 KSxhLmpzdHJlZS5fdGhlbWVzPT09ITEmJihhLmpzdHJlZS5fdGhlbWVzPSJ0aGVt ZXMvIil9KSxhLmpzdHJlZS5kZWZhdWx0cy5wbHVnaW5zLnB1c2goInRoZW1lcyIp fShqUXVlcnkpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYixjKXt2YXIgZD1hLmpz dHJlZS5fZm9jdXNlZCgpLGU7aWYoZCYmZC5kYXRhJiZkLmRhdGEuaG90a2V5cyYm ZC5kYXRhLmhvdGtleXMuZW5hYmxlZCl7ZT1kLl9nZXRfc2V0dGluZ3MoKQouaG90 a2V5c1tiXTtpZihlKXJldHVybiBlLmNhbGwoZCxjKX19dmFyIGI9W107YS5qc3Ry ZWUucGx1Z2luKCJob3RrZXlzIix7X19pbml0OmZ1bmN0aW9uKCl7aWYodHlwZW9m IGEuaG90a2V5cz09InVuZGVmaW5lZCIpdGhyb3cianNUcmVlIGhvdGtleXM6IGpR dWVyeSBob3RrZXlzIHBsdWdpbiBub3QgaW5jbHVkZWQuIjtpZighdGhpcy5kYXRh LnVpKXRocm93ImpzVHJlZSBob3RrZXlzOiBqc1RyZWUgVUkgcGx1Z2luIG5vdCBp bmNsdWRlZC4iO2EuZWFjaCh0aGlzLl9nZXRfc2V0dGluZ3MoKS5ob3RrZXlzLGZ1 bmN0aW9uKGQsZSl7ZSE9PSExJiZhLmluQXJyYXkoZCxiKT09LTEmJihhKGRvY3Vt ZW50KS5iaW5kKCJrZXlkb3duIixkLGZ1bmN0aW9uKGEpe3JldHVybiBjKGQsYSl9 KSxiLnB1c2goZCkpfSksdGhpcy5nZXRfY29udGFpbmVyKCkuYmluZCgibG9jay5q c3RyZWUiLGEucHJveHkoZnVuY3Rpb24oKXt0aGlzLmRhdGEuaG90a2V5cy5lbmFi bGVkJiYodGhpcy5kYXRhLmhvdGtleXMuZW5hYmxlZD0hMSx0aGlzLmRhdGEuaG90 a2V5cy5yZXZlcnQ9ITApfSx0aGlzKSkuYmluZCgidW5sb2NrLmpzdHJlZSIsYS5w cm94eShmdW5jdGlvbigpe3RoaXMuZGF0YS5ob3RrZXlzLnJldmVydCYmKHRoaXMu ZGF0YS5ob3RrZXlzLmVuYWJsZWQ9ITApfSx0aGlzKSksdGhpcy5lbmFibGVfaG90 a2V5cygpfSxkZWZhdWx0czp7dXA6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRhdGEu dWkuaG92ZXJlZHx8dGhpcy5kYXRhLnVpLmxhc3Rfc2VsZWN0ZWR8fC0xO3JldHVy biB0aGlzLmhvdmVyX25vZGUodGhpcy5fZ2V0X3ByZXYoYSkpLCExfSwiY3RybCt1 cCI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRhdGEudWkuaG92ZXJlZHx8dGhpcy5k YXRhLnVpLmxhc3Rfc2VsZWN0ZWR8fC0xO3JldHVybiB0aGlzLmhvdmVyX25vZGUo dGhpcy5fZ2V0X3ByZXYoYSkpLCExfSwic2hpZnQrdXAiOmZ1bmN0aW9uKCl7dmFy IGE9dGhpcy5kYXRhLnVpLmhvdmVyZWR8fHRoaXMuZGF0YS51aS5sYXN0X3NlbGVj dGVkfHwtMTtyZXR1cm4gdGhpcy5ob3Zlcl9ub2RlKHRoaXMuX2dldF9wcmV2KGEp KSwhMX0sZG93bjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0YS51aS5ob3ZlcmVk fHx0aGlzLmRhdGEudWkubGFzdF9zZWxlY3RlZHx8LTE7cmV0dXJuIHRoaXMuaG92 ZXJfbm9kZSh0aGlzLl9nZXRfbmV4dChhKSksITF9LCJjdHJsK2Rvd24iOmZ1bmN0 aW9uKCl7dmFyIGE9dGhpcy5kYXRhLnVpLmhvdmVyZWR8fHRoaXMuZGF0YS51aS5s YXN0X3NlbGVjdGVkfHwtMTtyZXR1cm4gdGhpcy5ob3Zlcl9ub2RlKHRoaXMuX2dl dF9uZXh0KGEpKSwhMX0sInNoaWZ0K2Rvd24iOmZ1bmN0aW9uKCl7dmFyIGE9dGhp cy5kYXRhLnVpLmhvdmVyZWR8fHRoaXMuZGF0YS51aS5sYXN0X3NlbGVjdGVkfHwt MTtyZXR1cm4gdGhpcy5ob3Zlcl9ub2RlKHRoaXMuX2dldF9uZXh0KGEpKSwhMX0s bGVmdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0YS51aS5ob3ZlcmVkfHx0aGlz LmRhdGEudWkubGFzdF9zZWxlY3RlZDtyZXR1cm4gYSYmKGEuaGFzQ2xhc3MoImpz dHJlZS1vcGVuIik/dGhpcy5jbG9zZV9ub2RlKGEpOnRoaXMuaG92ZXJfbm9kZSh0 aGlzLl9nZXRfcHJldihhKSkpLCExfSwiY3RybCtsZWZ0IjpmdW5jdGlvbigpe3Zh ciBhPXRoaXMuZGF0YS51aS5ob3ZlcmVkfHx0aGlzLmRhdGEudWkubGFzdF9zZWxl Y3RlZDtyZXR1cm4gYSYmKGEuaGFzQ2xhc3MoImpzdHJlZS1vcGVuIik/dGhpcy5j bG9zZV9ub2RlKGEpOnRoaXMuaG92ZXJfbm9kZSh0aGlzLl9nZXRfcHJldihhKSkp LCExfSwic2hpZnQrbGVmdCI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRhdGEudWku aG92ZXJlZHx8dGhpcy5kYXRhLnVpLmxhc3Rfc2VsZWN0ZWQ7cmV0dXJuIGEmJihh Lmhhc0NsYXNzKCJqc3RyZWUtb3BlbiIpP3RoaXMuY2xvc2Vfbm9kZShhKTp0aGlz LmhvdmVyX25vZGUodGhpcy5fZ2V0X3ByZXYoYSkpKSwhMX0scmlnaHQ6ZnVuY3Rp b24oKXt2YXIgYT10aGlzLmRhdGEudWkuaG92ZXJlZHx8dGhpcy5kYXRhLnVpLmxh c3Rfc2VsZWN0ZWQ7cmV0dXJuIGEmJmEubGVuZ3RoJiYoYS5oYXNDbGFzcygianN0 cmVlLWNsb3NlZCIpP3RoaXMub3Blbl9ub2RlKGEpOnRoaXMuaG92ZXJfbm9kZSh0 aGlzLl9nZXRfbmV4dChhKSkpLCExfSwiY3RybCtyaWdodCI6ZnVuY3Rpb24oKXt2 YXIgYT10aGlzLmRhdGEudWkuaG92ZXJlZHx8dGhpcy5kYXRhLnVpLmxhc3Rfc2Vs ZWN0ZWQ7cmV0dXJuIGEmJmEubGVuZ3RoJiYoYS5oYXNDbGFzcygianN0cmVlLWNs b3NlZCIpP3RoaXMub3Blbl9ub2RlKGEpOnRoaXMuaG92ZXJfbm9kZSh0aGlzLl9n ZXRfbmV4dChhKSkpLCExfSwic2hpZnQrcmlnaHQiOmZ1bmN0aW9uKCl7dmFyIGE9 dGhpcy5kYXRhLnVpLmhvdmVyZWR8fHRoaXMuZGF0YS51aS5sYXN0X3NlbGVjdGVk O3JldHVybiBhJiZhLmxlbmd0aCYmKGEuaGFzQ2xhc3MoImpzdHJlZS1jbG9zZWQi KT90aGlzLm9wZW5fbm9kZShhKTp0aGlzLmhvdmVyX25vZGUodGhpcy5fZ2V0X25l eHQoYSkpKSwhMX0sc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLnVp LmhvdmVyZWQmJnRoaXMuZGF0YS51aS5ob3ZlcmVkLmNoaWxkcmVuKCJhOmVxKDAp IikuY2xpY2soKSwhMX0sImN0cmwrc3BhY2UiOmZ1bmN0aW9uKGEpe3JldHVybiBh LnR5cGU9ImNsaWNrIix0aGlzLmRhdGEudWkuaG92ZXJlZCYmdGhpcy5kYXRhLnVp LmhvdmVyZWQuY2hpbGRyZW4oImE6ZXEoMCkiKS50cmlnZ2VyKGEpLCExfSwic2hp ZnQrc3BhY2UiOmZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9ImNsaWNrIix0aGlz LmRhdGEudWkuaG92ZXJlZCYmdGhpcy5kYXRhLnVpLmhvdmVyZWQuY2hpbGRyZW4o ImE6ZXEoMCkiKS50cmlnZ2VyKGEpLCExfSxmMjpmdW5jdGlvbigpe3RoaXMucmVu YW1lKHRoaXMuZGF0YS51aS5ob3ZlcmVkfHx0aGlzLmRhdGEudWkubGFzdF9zZWxl Y3RlZCl9LGRlbDpmdW5jdGlvbigpe3RoaXMucmVtb3ZlKHRoaXMuZGF0YS51aS5o b3ZlcmVkfHx0aGlzLl9nZXRfbm9kZShudWxsKSl9fSxfZm46e2VuYWJsZV9ob3Rr ZXlzOmZ1bmN0aW9uKCl7dGhpcy5kYXRhLmhvdGtleXMuZW5hYmxlZD0hMH0sZGlz YWJsZV9ob3RrZXlzOmZ1bmN0aW9uKCl7dGhpcy5kYXRhLmhvdGtleXMuZW5hYmxl ZD0hMX19fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS5qc3RyZWUucGx1Z2luKCJq c29uX2RhdGEiLHtfX2luaXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9nZXRfc2V0 dGluZ3MoKS5qc29uX2RhdGE7YS5wcm9ncmVzc2l2ZV91bmxvYWQmJnRoaXMuZ2V0 X2NvbnRhaW5lcigpLmJpbmQoImFmdGVyX2Nsb3NlLmpzdHJlZSIsZnVuY3Rpb24o YSxiKXtiLnJzbHQub2JqLmNoaWxkcmVuKCJ1bCIpLnJlbW92ZSgpfSl9LGRlZmF1 bHRzOntkYXRhOiExLGFqYXg6ITEsY29ycmVjdF9zdGF0ZTohMCxwcm9ncmVzc2l2 ZV9yZW5kZXI6ITEscHJvZ3Jlc3NpdmVfdW5sb2FkOiExfSxfZm46e2xvYWRfbm9k ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczt0aGlzLmxvYWRfbm9kZV9qc29u KGEsZnVuY3Rpb24oKXtkLl9fY2FsbGJhY2soe29iajpkLl9nZXRfbm9kZShhKX0p LGIuY2FsbCh0aGlzKX0sYyl9LF9pc19sb2FkZWQ6ZnVuY3Rpb24oYil7dmFyIGM9 dGhpcy5fZ2V0X3NldHRpbmdzKCkuanNvbl9kYXRhO3JldHVybiBiPXRoaXMuX2dl dF9ub2RlKGIpLGI9PS0xfHwhYnx8IWMuYWpheCYmIWMucHJvZ3Jlc3NpdmVfcmVu ZGVyJiYhYS5pc0Z1bmN0aW9uKGMuZGF0YSl8fGIuaXMoIi5qc3RyZWUtb3Blbiwg LmpzdHJlZS1sZWFmIil8fGIuY2hpbGRyZW4oInVsIikuY2hpbGRyZW4oImxpIiku bGVuZ3RoPjB9LHJlZnJlc2g6ZnVuY3Rpb24oYil7Yj10aGlzLl9nZXRfbm9kZShi KTt2YXIgYz10aGlzLl9nZXRfc2V0dGluZ3MoKS5qc29uX2RhdGE7cmV0dXJuIGIm JmIhPT0tMSYmYy5wcm9ncmVzc2l2ZV91bmxvYWQmJihhLmlzRnVuY3Rpb24oYy5k YXRhKXx8ISFjLmFqYXgpJiZiLnJlbW92ZURhdGEoImpzdHJlZV9jaGlsZHJlbiIp LHRoaXMuX19jYWxsX29sZCgpfSxsb2FkX25vZGVfanNvbjpmdW5jdGlvbihiLGMs ZCl7dmFyIGU9dGhpcy5nZXRfc2V0dGluZ3MoKS5qc29uX2RhdGEsZixnPWZ1bmN0 aW9uKCl7fSxoPWZ1bmN0aW9uKCl7fTtiPXRoaXMuX2dldF9ub2RlKGIpO2lmKGIm JmIhPT0tMSYmKGUucHJvZ3Jlc3NpdmVfcmVuZGVyfHxlLnByb2dyZXNzaXZlX3Vu bG9hZCkmJiFiLmlzKCIuanN0cmVlLW9wZW4sIC5qc3RyZWUtbGVhZiIpJiZiLmNo aWxkcmVuKCJ1bCIpLmNoaWxkcmVuKCJsaSIpLmxlbmd0aD09PTAmJmIuZGF0YSgi anN0cmVlX2NoaWxkcmVuIikpe2Y9dGhpcy5fcGFyc2VfanNvbihiLmRhdGEoImpz dHJlZV9jaGlsZHJlbiIpLGIpLGYmJihiLmFwcGVuZChmKSxlLnByb2dyZXNzaXZl X3VubG9hZHx8Yi5yZW1vdmVEYXRhKCJqc3RyZWVfY2hpbGRyZW4iKSksdGhpcy5j bGVhbl9ub2RlKGIpLGMmJmMuY2FsbCh0aGlzKTtyZXR1cm59aWYoYiYmYiE9PS0x KXtpZihiLmRhdGEoImpzdHJlZV9pc19sb2FkaW5nIikpcmV0dXJuO2IuZGF0YSgi anN0cmVlX2lzX2xvYWRpbmciLCEwKX1zd2l0Y2goITApe2Nhc2UhZS5kYXRhJiYh ZS5hamF4OnRocm93Ik5laXRoZXIgZGF0YSBub3IgYWpheCBzZXR0aW5ncyBzdXBw bGllZC4iO2Nhc2UgYS5pc0Z1bmN0aW9uKGUuZGF0YSk6ZS5kYXRhLmNhbGwodGhp cyxiLGEucHJveHkoZnVuY3Rpb24oYSl7YT10aGlzLl9wYXJzZV9qc29uKGEsYiks YT8oYj09PS0xfHwhYj90aGlzLmdldF9jb250YWluZXIoKS5jaGlsZHJlbigidWwi KS5lbXB0eSgpLmFwcGVuZChhLmNoaWxkcmVuKCkpOihiLmFwcGVuZChhKS5jaGls ZHJlbigiYS5qc3RyZWUtbG9hZGluZyIpLnJlbW92ZUNsYXNzKCJqc3RyZWUtbG9h ZGluZyIpLGIucmVtb3ZlRGF0YSgianN0cmVlX2lzX2xvYWRpbmciKSksdGhpcy5j bGVhbl9ub2RlKGIpLGMmJmMuY2FsbCh0aGlzKSk6KGI9PT0tMXx8IWI/ZS5jb3Jy ZWN0X3N0YXRlJiZ0aGlzLmdldF9jb250YWluZXIoKS5jaGlsZHJlbigidWwiKS5l bXB0eSgpOihiLmNoaWxkcmVuKCJhLmpzdHJlZS1sb2FkaW5nIikucmVtb3ZlQ2xh c3MoImpzdHJlZS1sb2FkaW5nIiksYi5yZW1vdmVEYXRhKCJqc3RyZWVfaXNfbG9h ZGluZyIpLGUuY29ycmVjdF9zdGF0ZSYmdGhpcy5jb3JyZWN0X3N0YXRlKGIpKSxk JiZkLmNhbGwodGhpcykpfSx0aGlzKSk7YnJlYWs7Y2FzZSEhZS5kYXRhJiYhZS5h amF4fHwhIWUuZGF0YSYmISFlLmFqYXgmJighYnx8Yj09PS0xKTppZighYnx8Yj09 LTEpZj10aGlzLl9wYXJzZV9qc29uKGUuZGF0YSxiKSxmPyh0aGlzLmdldF9jb250 YWluZXIoKS5jaGlsZHJlbigidWwiKS5lbXB0eSgpLmFwcGVuZChmLmNoaWxkcmVu KCkpLHRoaXMuY2xlYW5fbm9kZSgpKTplLmNvcnJlY3Rfc3RhdGUmJnRoaXMuZ2V0 X2NvbnRhaW5lcigpLmNoaWxkcmVuKCJ1bCIpLmVtcHR5KCk7YyYmYy5jYWxsKHRo aXMpO2JyZWFrO2Nhc2UhZS5kYXRhJiYhIWUuYWpheHx8ISFlLmRhdGEmJiEhZS5h amF4JiZiJiZiIT09LTE6Zz1mdW5jdGlvbihhLGMsZil7dmFyIGc9dGhpcy5nZXRf c2V0dGluZ3MoKS5qc29uX2RhdGEuYWpheC5lcnJvcjtnJiZnLmNhbGwodGhpcyxh LGMsZiksYiE9LTEmJmIubGVuZ3RoPyhiLmNoaWxkcmVuKCJhLmpzdHJlZS1sb2Fk aW5nIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1sb2FkaW5nIiksYi5yZW1vdmVEYXRh KCJqc3RyZWVfaXNfbG9hZGluZyIpLGM9PT0ic3VjY2VzcyImJmUuY29ycmVjdF9z dGF0ZSYmdGhpcy5jb3JyZWN0X3N0YXRlKGIpKTpjPT09InN1Y2Nlc3MiJiZlLmNv cnJlY3Rfc3RhdGUmJnRoaXMuZ2V0X2NvbnRhaW5lcigpLmNoaWxkcmVuKCJ1bCIp LmVtcHR5KCksZCYmZC5jYWxsKHRoaXMpfSxoPWZ1bmN0aW9uKGQsZixoKXt2YXIg aT10aGlzLmdldF9zZXR0aW5ncygpLmpzb25fZGF0YS5hamF4LnN1Y2Nlc3M7aSYm KGQ9aS5jYWxsKHRoaXMsZCxmLGgpfHxkKTtpZihkPT09IiJ8fGQmJmQudG9TdHJp bmcmJmQudG9TdHJpbmcoKS5yZXBsYWNlKC9eW1xzXG5dKyQvLCIiKT09PSIifHwh YS5pc0FycmF5KGQpJiYhYS5pc1BsYWluT2JqZWN0KGQpKXJldHVybiBnLmNhbGwo dGhpcyxoLGYsIiIpO2Q9dGhpcy5fcGFyc2VfanNvbihkLGIpLGQ/KGI9PT0tMXx8 IWI/dGhpcy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikuZW1wdHkoKS5h cHBlbmQoZC5jaGlsZHJlbigpKTooYi5hcHBlbmQoZCkuY2hpbGRyZW4oImEuanN0 cmVlLWxvYWRpbmciKS5yZW1vdmVDbGFzcygianN0cmVlLWxvYWRpbmciKSxiLnJl bW92ZURhdGEoImpzdHJlZV9pc19sb2FkaW5nIikpLHRoaXMuY2xlYW5fbm9kZShi KSxjJiZjLmNhbGwodGhpcykpOmI9PT0tMXx8IWI/ZS5jb3JyZWN0X3N0YXRlJiYo dGhpcy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikuZW1wdHkoKSxjJiZj LmNhbGwodGhpcykpOihiLmNoaWxkcmVuKCJhLmpzdHJlZS1sb2FkaW5nIikucmVt b3ZlQ2xhc3MoImpzdHJlZS1sb2FkaW5nIiksYi5yZW1vdmVEYXRhKCJqc3RyZWVf aXNfbG9hZGluZyIpLGUuY29ycmVjdF9zdGF0ZSYmKHRoaXMuY29ycmVjdF9zdGF0 ZShiKSxjJiZjLmNhbGwodGhpcykpKX0sZS5hamF4LmNvbnRleHQ9dGhpcyxlLmFq YXguZXJyb3I9ZyxlLmFqYXguc3VjY2Vzcz1oLGUuYWpheC5kYXRhVHlwZXx8KGUu YWpheC5kYXRhVHlwZT0ianNvbiIpLGEuaXNGdW5jdGlvbihlLmFqYXgudXJsKSYm KGUuYWpheC51cmw9ZS5hamF4LnVybC5jYWxsKHRoaXMsYikpLGEuaXNGdW5jdGlv bihlLmFqYXguZGF0YSkmJihlLmFqYXguZGF0YT1lLmFqYXguZGF0YS5jYWxsKHRo aXMsYikpLGEuYWpheChlLmFqYXgpfX0sX3BhcnNlX2pzb246ZnVuY3Rpb24oYixj LGQpe3ZhciBlPSExLGY9dGhpcy5fZ2V0X3NldHRpbmdzKCksZz1mLmpzb25fZGF0 YSxoPWYuY29yZS5odG1sX3RpdGxlcyxpLGosayxsLG07aWYoIWIpcmV0dXJuIGU7 Zy5wcm9ncmVzc2l2ZV91bmxvYWQmJmMmJmMhPT0tMSYmYy5kYXRhKCJqc3RyZWVf Y2hpbGRyZW4iLGUpO2lmKGEuaXNBcnJheShiKSl7ZT1hKCk7aWYoIWIubGVuZ3Ro KXJldHVybiExO2ZvcihqPTAsaz1iLmxlbmd0aDtqPGs7aisrKWk9dGhpcy5fcGFy c2VfanNvbihiW2pdLGMsITApLGkubGVuZ3RoJiYoZT1lLmFkZChpKSl9ZWxzZXt0 eXBlb2YgYj09InN0cmluZyImJihiPXtkYXRhOmJ9KTtpZighYi5kYXRhJiZiLmRh dGEhPT0iIilyZXR1cm4gZTtlPWEoIjxsaSAvPiIpLGIuYXR0ciYmZS5hdHRyKGIu YXR0ciksYi5tZXRhZGF0YSYmZS5kYXRhKGIubWV0YWRhdGEpLGIuc3RhdGUmJmUu YWRkQ2xhc3MoImpzdHJlZS0iK2Iuc3RhdGUpLGEuaXNBcnJheShiLmRhdGEpfHwo aT1iLmRhdGEsYi5kYXRhPVtdLGIuZGF0YS5wdXNoKGkpKSxhLmVhY2goYi5kYXRh LGZ1bmN0aW9uKGMsZCl7aT1hKCI8YSAvPiIpLGEuaXNGdW5jdGlvbihkKSYmKGQ9 ZC5jYWxsKHRoaXMsYikpLHR5cGVvZiBkPT0ic3RyaW5nIj9pLmF0dHIoImhyZWYi LCIjIilbaD8iaHRtbCI6InRleHQiXShkKTooZC5hdHRyfHwoZC5hdHRyPXt9KSxk LmF0dHIuaHJlZnx8KGQuYXR0ci5ocmVmPSIjIiksaS5hdHRyKGQuYXR0cilbaD8i aHRtbCI6InRleHQiXShkLnRpdGxlKSxkLmxhbmd1YWdlJiZpLmFkZENsYXNzKGQu bGFuZ3VhZ2UpKSxpLnByZXBlbmQoIjxpbnMgY2xhc3M9J2pzdHJlZS1pY29uJz4m IzE2MDs8L2lucz4iKSwhZC5pY29uJiZiLmljb24mJihkLmljb249Yi5pY29uKSxk Lmljb24mJihkLmljb24uaW5kZXhPZigiLyIpPT09LTE/aS5jaGlsZHJlbigiaW5z IikuYWRkQ2xhc3MoZC5pY29uKTppLmNoaWxkcmVuKCJpbnMiKS5jc3MoImJhY2tn cm91bmQiLCJ1cmwoJyIrZC5pY29uKyInKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVh dCIpKSxlLmFwcGVuZChpKX0pLGUucHJlcGVuZCgiPGlucyBjbGFzcz0nanN0cmVl LWljb24nPiYjMTYwOzwvaW5zPiIpLGIuY2hpbGRyZW4mJihnLnByb2dyZXNzaXZl X3JlbmRlciYmYi5zdGF0ZSE9PSJvcGVuIj9lLmFkZENsYXNzKCJqc3RyZWUtY2xv c2VkIikuZGF0YSgianN0cmVlX2NoaWxkcmVuIixiLmNoaWxkcmVuKTooZy5wcm9n cmVzc2l2ZV91bmxvYWQmJmUuZGF0YSgianN0cmVlX2NoaWxkcmVuIixiLmNoaWxk cmVuKSxhLmlzQXJyYXkoYi5jaGlsZHJlbikmJmIuY2hpbGRyZW4ubGVuZ3RoJiYo aT10aGlzLl9wYXJzZV9qc29uKGIuY2hpbGRyZW4sYywhMCksaS5sZW5ndGgmJiht PWEoIjx1bCAvPiIpLG0uYXBwZW5kKGkpLGUuYXBwZW5kKG0pKSkpKX1yZXR1cm4g ZHx8KGw9YSgiPHVsIC8+IiksbC5hcHBlbmQoZSksZT1sKSxlfSxnZXRfanNvbjpm dW5jdGlvbihiLGMsZCxlKXt2YXIgZj1bXSxnPXRoaXMuX2dldF9zZXR0aW5ncygp LGg9dGhpcyxpLGosayxsLG0sbjtiPXRoaXMuX2dldF9ub2RlKGIpO2lmKCFifHxi PT09LTEpYj10aGlzLmdldF9jb250YWluZXIoKS5maW5kKCI+IHVsID4gbGkiKTty ZXR1cm4gYz1hLmlzQXJyYXkoYyk/YzpbImlkIiwiY2xhc3MiXSwhZSYmdGhpcy5k YXRhLnR5cGVzJiZjLnB1c2goZy50eXBlcy50eXBlX2F0dHIpLGQ9YS5pc0FycmF5 KGQpP2Q6W10sYi5lYWNoKGZ1bmN0aW9uKCl7az1hKHRoaXMpLGk9e2RhdGE6W119 LGMubGVuZ3RoJiYoaS5hdHRyPXt9KSxhLmVhY2goYyxmdW5jdGlvbihhLGIpe2o9 ay5hdHRyKGIpLGomJmoubGVuZ3RoJiZqLnJlcGxhY2UoL2pzdHJlZVteIF0qL2ln LCIiKS5sZW5ndGgmJihpLmF0dHJbYl09KCIgIitqKS5yZXBsYWNlKC8ganN0cmVl W14gXSovaWcsIiIpLnJlcGxhY2UoL1xzKyQvaWcsIiAiKS5yZXBsYWNlKC9eIC8s IiIpLnJlcGxhY2UoLyAkLywiIikpfSksay5oYXNDbGFzcygianN0cmVlLW9wZW4i KSYmKGkuc3RhdGU9Im9wZW4iKSxrLmhhc0NsYXNzKCJqc3RyZWUtY2xvc2VkIikm JihpLnN0YXRlPSJjbG9zZWQiKSxrLmRhdGEoKSYmKGkubWV0YWRhdGE9ay5kYXRh KCkpLGw9ay5jaGlsZHJlbigiYSIpLGwuZWFjaChmdW5jdGlvbigpe209YSh0aGlz KSxkLmxlbmd0aHx8YS5pbkFycmF5KCJsYW5ndWFnZXMiLGcucGx1Z2lucykhPT0t MXx8bS5jaGlsZHJlbigiaW5zIikuZ2V0KDApLnN0eWxlLmJhY2tncm91bmRJbWFn ZS5sZW5ndGh8fG0uY2hpbGRyZW4oImlucyIpLmdldCgwKS5jbGFzc05hbWUmJm0u Y2hpbGRyZW4oImlucyIpLmdldCgwKS5jbGFzc05hbWUucmVwbGFjZSgvanN0cmVl W14gXSp8JC9pZywiIikubGVuZ3RoPyhuPSExLGEuaW5BcnJheSgibGFuZ3VhZ2Vz IixnLnBsdWdpbnMpIT09LTEmJmEuaXNBcnJheShnLmxhbmd1YWdlcykmJmcubGFu Z3VhZ2VzLmxlbmd0aCYmYS5lYWNoKGcubGFuZ3VhZ2VzLGZ1bmN0aW9uKGEsYil7 aWYobS5oYXNDbGFzcyhiKSlyZXR1cm4gbj1iLCExfSksaj17YXR0cjp7fSx0aXRs ZTpoLmdldF90ZXh0KG0sbil9LGEuZWFjaChkLGZ1bmN0aW9uKGEsYil7ai5hdHRy W2JdPSgiICIrKG0uYXR0cihiKXx8IiIpKS5yZXBsYWNlKC8ganN0cmVlW14gXSov aWcsIiIpLnJlcGxhY2UoL1xzKyQvaWcsIiAiKS5yZXBsYWNlKC9eIC8sIiIpLnJl cGxhY2UoLyAkLywiIil9KSxhLmluQXJyYXkoImxhbmd1YWdlcyIsZy5wbHVnaW5z KSE9PS0xJiZhLmlzQXJyYXkoZy5sYW5ndWFnZXMpJiZnLmxhbmd1YWdlcy5sZW5n dGgmJmEuZWFjaChnLmxhbmd1YWdlcyxmdW5jdGlvbihhLGIpe2lmKG0uaGFzQ2xh c3MoYikpcmV0dXJuIGoubGFuZ3VhZ2U9YiwhMH0pLG0uY2hpbGRyZW4oImlucyIp LmdldCgwKS5jbGFzc05hbWUucmVwbGFjZSgvanN0cmVlW14gXSp8JC9pZywiIiku cmVwbGFjZSgvXlxzKyQvaWcsIiIpLmxlbmd0aCYmKGouaWNvbj1tLmNoaWxkcmVu KCJpbnMiKS5nZXQoMCkuY2xhc3NOYW1lLnJlcGxhY2UoL2pzdHJlZVteIF0qfCQv aWcsIiIpLnJlcGxhY2UoL1xzKyQvaWcsIiAiKS5yZXBsYWNlKC9eIC8sIiIpLnJl cGxhY2UoLyAkLywiIikpLG0uY2hpbGRyZW4oImlucyIpLmdldCgwKS5zdHlsZS5i YWNrZ3JvdW5kSW1hZ2UubGVuZ3RoJiYoai5pY29uPW0uY2hpbGRyZW4oImlucyIp LmdldCgwKS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UucmVwbGFjZSgidXJsKCIsIiIp LnJlcGxhY2UoIikiLCIiKSkpOmo9aC5nZXRfdGV4dChtKSxsLmxlbmd0aD4xP2ku ZGF0YS5wdXNoKGopOmkuZGF0YT1qfSksaz1rLmZpbmQoIj4gdWwgPiBsaSIpLGsu bGVuZ3RoJiYoaS5jaGlsZHJlbj1oLmdldF9qc29uKGssYyxkLCEwKSksZi5wdXNo KGkpfSksZn19fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS5qc3RyZWUucGx1Z2lu KCJsYW5ndWFnZXMiLHtfX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLl9sb2FkX2Nzcygp fSxkZWZhdWx0czpbXSxfZm46e3NldF9sYW5nOmZ1bmN0aW9uKGIpe3ZhciBjPXRo aXMuX2dldF9zZXR0aW5ncygpLmxhbmd1YWdlcyxkPSExLGU9Ii5qc3RyZWUtIit0 aGlzLmdldF9pbmRleCgpKyIgYSI7aWYoIWEuaXNBcnJheShjKXx8Yy5sZW5ndGg9 PT0wKXJldHVybiExO2lmKGEuaW5BcnJheShiLGMpPT0tMSl7aWYoIWNbYl0pcmV0 dXJuITE7Yj1jW2JdfXJldHVybiBiPT10aGlzLmRhdGEubGFuZ3VhZ2VzLmN1cnJl bnRfbGFuZ3VhZ2U/ITA6KGQ9YS52YWthdGEuY3NzLmdldF9jc3MoZSsiLiIrdGhp cy5kYXRhLmxhbmd1YWdlcy5jdXJyZW50X2xhbmd1YWdlLCExLHRoaXMuZGF0YS5s YW5ndWFnZXMubGFuZ3VhZ2VfY3NzKSxkIT09ITEmJihkLnN0eWxlLmRpc3BsYXk9 Im5vbmUiKSxkPWEudmFrYXRhLmNzcy5nZXRfY3NzKGUrIi4iK2IsITEsdGhpcy5k YXRhLmxhbmd1YWdlcy5sYW5ndWFnZV9jc3MpLGQhPT0hMSYmKGQuc3R5bGUuZGlz cGxheT0iIiksdGhpcy5kYXRhLmxhbmd1YWdlcy5jdXJyZW50X2xhbmd1YWdlPWIs dGhpcy5fX2NhbGxiYWNrKGIpLCEwKX0sZ2V0X2xhbmc6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5kYXRhLmxhbmd1YWdlcy5jdXJyZW50X2xhbmd1YWdlfSxfZ2V0X3N0 cmluZzpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMuX2dldF9zZXR0aW5ncygpLmxh bmd1YWdlcyxlPXRoaXMuX2dldF9zZXR0aW5ncygpLmNvcmUuc3RyaW5ncztyZXR1 cm4gYS5pc0FycmF5KGQpJiZkLmxlbmd0aCYmKGM9YyYmYS5pbkFycmF5KGMsZCkh PS0xP2M6dGhpcy5kYXRhLmxhbmd1YWdlcy5jdXJyZW50X2xhbmd1YWdlKSxlW2Nd JiZlW2NdW2JdP2VbY11bYl06ZVtiXT9lW2JdOmJ9LGdldF90ZXh0OmZ1bmN0aW9u KGIsYyl7Yj10aGlzLl9nZXRfbm9kZShiKXx8dGhpcy5kYXRhLnVpLmxhc3Rfc2Vs ZWN0ZWQ7aWYoIWIuc2l6ZSgpKXJldHVybiExO3ZhciBkPXRoaXMuX2dldF9zZXR0 aW5ncygpLmxhbmd1YWdlcyxlPXRoaXMuX2dldF9zZXR0aW5ncygpLmNvcmUuaHRt bF90aXRsZXM7cmV0dXJuIGEuaXNBcnJheShkKSYmZC5sZW5ndGg/KGM9YyYmYS5p bkFycmF5KGMsZCkhPS0xP2M6dGhpcy5kYXRhLmxhbmd1YWdlcy5jdXJyZW50X2xh bmd1YWdlLGI9Yi5jaGlsZHJlbigiYS4iK2MpKTpiPWIuY2hpbGRyZW4oImE6ZXEo MCkiKSxlPyhiPWIuY2xvbmUoKSxiLmNoaWxkcmVuKCJJTlMiKS5yZW1vdmUoKSxi Lmh0bWwoKSk6KGI9Yi5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVy biB0aGlzLm5vZGVUeXBlPT0zfSlbMF0sYi5ub2RlVmFsdWUpfSxzZXRfdGV4dDpm dW5jdGlvbihiLGMsZCl7Yj10aGlzLl9nZXRfbm9kZShiKXx8dGhpcy5kYXRhLnVp Lmxhc3Rfc2VsZWN0ZWQ7aWYoIWIuc2l6ZSgpKXJldHVybiExO3ZhciBlPXRoaXMu X2dldF9zZXR0aW5ncygpLmxhbmd1YWdlcyxmPXRoaXMuX2dldF9zZXR0aW5ncygp LmNvcmUuaHRtbF90aXRsZXMsZztyZXR1cm4gYS5pc0FycmF5KGUpJiZlLmxlbmd0 aD8oZD1kJiZhLmluQXJyYXkoZCxlKSE9LTE/ZDp0aGlzLmRhdGEubGFuZ3VhZ2Vz LmN1cnJlbnRfbGFuZ3VhZ2UsYj1iLmNoaWxkcmVuKCJhLiIrZCkpOmI9Yi5jaGls ZHJlbigiYTplcSgwKSIpLGY/KGc9Yi5jaGlsZHJlbigiSU5TIikuY2xvbmUoKSxi Lmh0bWwoYykucHJlcGVuZChnKSx0aGlzLl9fY2FsbGJhY2soe29iajpiLG5hbWU6 YyxsYW5nOmR9KSwhMCk6KGI9Yi5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigp e3JldHVybiB0aGlzLm5vZGVUeXBlPT0zfSlbMF0sdGhpcy5fX2NhbGxiYWNrKHtv Ymo6YixuYW1lOmMsbGFuZzpkfSksYi5ub2RlVmFsdWU9Yyl9LF9sb2FkX2Nzczpm dW5jdGlvbigpe3ZhciBiPXRoaXMuX2dldF9zZXR0aW5ncygpLmxhbmd1YWdlcyxj PSIvKiBsYW5ndWFnZXMgY3NzICovIixkPSIuanN0cmVlLSIrdGhpcy5nZXRfaW5k ZXgoKSsiIGEiLGU7aWYoYS5pc0FycmF5KGIpJiZiLmxlbmd0aCl7dGhpcy5kYXRh Lmxhbmd1YWdlcy5jdXJyZW50X2xhbmd1YWdlPWJbMF07Zm9yKGU9MDtlPGIubGVu Z3RoO2UrKyljKz1kKyIuIitiW2VdKyIgeyIsYltlXSE9dGhpcy5kYXRhLmxhbmd1 YWdlcy5jdXJyZW50X2xhbmd1YWdlJiYoYys9IiBkaXNwbGF5Om5vbmU7ICIpLGMr PSIgfSAiO3RoaXMuZGF0YS5sYW5ndWFnZXMubGFuZ3VhZ2VfY3NzPWEudmFrYXRh LmNzcy5hZGRfc2hlZXQoe3N0cjpjLHRpdGxlOiJqc3RyZWUtbGFuZ3VhZ2VzIn0p fX0sY3JlYXRlX25vZGU6ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGY9dGhpcy5fX2Nh bGxfb2xkKCEwLGIsYyxkLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuX2dldF9zZXR0 aW5ncygpLmxhbmd1YWdlcyxkPWIuY2hpbGRyZW4oImEiKSxmO2lmKGEuaXNBcnJh eShjKSYmYy5sZW5ndGgpe2ZvcihmPTA7ZjxjLmxlbmd0aDtmKyspZC5pcygiLiIr Y1tmXSl8fGIuYXBwZW5kKGQuZXEoMCkuY2xvbmUoKS5yZW1vdmVDbGFzcyhjLmpv aW4oIiAiKSkuYWRkQ2xhc3MoY1tmXSkpO2Qubm90KCIuIitjLmpvaW4oIiwgLiIp KS5yZW1vdmUoKX1lJiZlLmNhbGwodGhpcyxiKX0pO3JldHVybiBmfX19KX0oalF1 ZXJ5KSxmdW5jdGlvbihhKXthLmpzdHJlZS5wbHVnaW4oImNvb2tpZXMiLHtfX2lu aXQ6ZnVuY3Rpb24oKXtpZih0eXBlb2YgYS5jb29raWU9PSJ1bmRlZmluZWQiKXRo cm93ImpzVHJlZSBjb29raWU6IGpRdWVyeSBjb29raWUgcGx1Z2luIG5vdCBpbmNs dWRlZC4iO3ZhciBiPXRoaXMuX2dldF9zZXR0aW5ncygpLmNvb2tpZXMsYzshYi5z YXZlX2xvYWRlZHx8KGM9YS5jb29raWUoYi5zYXZlX2xvYWRlZCksYyYmYy5sZW5n dGgmJih0aGlzLmRhdGEuY29yZS50b19sb2FkPWMuc3BsaXQoIiwiKSkpLCFiLnNh dmVfb3BlbmVkfHwoYz1hLmNvb2tpZShiLnNhdmVfb3BlbmVkKSxjJiZjLmxlbmd0 aCYmKHRoaXMuZGF0YS5jb3JlLnRvX29wZW49Yy5zcGxpdCgiLCIpKSksIWIuc2F2 ZV9zZWxlY3RlZHx8KGM9YS5jb29raWUoYi5zYXZlX3NlbGVjdGVkKSxjJiZjLmxl bmd0aCYmdGhpcy5kYXRhLnVpJiYodGhpcy5kYXRhLnVpLnRvX3NlbGVjdD1jLnNw bGl0KCIsIikpKSx0aGlzLmdldF9jb250YWluZXIoKS5vbmUoKHRoaXMuZGF0YS51 aT8icmVzZWxlY3QiOiJyZW9wZW4iKSsiLmpzdHJlZSIsYS5wcm94eShmdW5jdGlv bigpe3RoaXMuZ2V0X2NvbnRhaW5lcigpLmJpbmQoIm9wZW5fbm9kZS5qc3RyZWUg Y2xvc2Vfbm9kZS5qc3RyZWUgc2VsZWN0X25vZGUuanN0cmVlIGRlc2VsZWN0X25v ZGUuanN0cmVlIixhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMuX2dldF9zZXR0aW5n cygpLmNvb2tpZXMuYXV0b19zYXZlJiZ0aGlzLnNhdmVfY29va2llKChhLmhhbmRs ZU9iai5uYW1lc3BhY2UrYS5oYW5kbGVPYmoudHlwZSkucmVwbGFjZSgianN0cmVl IiwiIikpfSx0aGlzKSl9LHRoaXMpKX0sZGVmYXVsdHM6e3NhdmVfbG9hZGVkOiJq c3RyZWVfbG9hZCIsc2F2ZV9vcGVuZWQ6ImpzdHJlZV9vcGVuIixzYXZlX3NlbGVj dGVkOiJqc3RyZWVfc2VsZWN0IixhdXRvX3NhdmU6ITAsY29va2llX29wdGlvbnM6 e319LF9mbjp7c2F2ZV9jb29raWU6ZnVuY3Rpb24oYil7aWYodGhpcy5kYXRhLmNv cmUucmVmcmVzaGluZylyZXR1cm47dmFyIGM9dGhpcy5fZ2V0X3NldHRpbmdzKCku Y29va2llcztpZighYil7Yy5zYXZlX2xvYWRlZCYmKHRoaXMuc2F2ZV9sb2FkZWQo KSxhLmNvb2tpZShjLnNhdmVfbG9hZGVkLHRoaXMuZGF0YS5jb3JlLnRvX2xvYWQu am9pbigiLCIpLGMuY29va2llX29wdGlvbnMpKSxjLnNhdmVfb3BlbmVkJiYodGhp cy5zYXZlX29wZW5lZCgpLGEuY29va2llKGMuc2F2ZV9vcGVuZWQsdGhpcy5kYXRh LmNvcmUudG9fb3Blbi5qb2luKCIsIiksYy5jb29raWVfb3B0aW9ucykpLGMuc2F2 ZV9zZWxlY3RlZCYmdGhpcy5kYXRhLnVpJiYodGhpcy5zYXZlX3NlbGVjdGVkKCks YS5jb29raWUoYy5zYXZlX3NlbGVjdGVkLHRoaXMuZGF0YS51aS50b19zZWxlY3Qu am9pbigiLCIpLGMuY29va2llX29wdGlvbnMpKTtyZXR1cm59c3dpdGNoKGIpe2Nh c2Uib3Blbl9ub2RlIjpjYXNlImNsb3NlX25vZGUiOiFjLnNhdmVfb3BlbmVkfHwo dGhpcy5zYXZlX29wZW5lZCgpLGEuY29va2llKGMuc2F2ZV9vcGVuZWQsdGhpcy5k YXRhLmNvcmUudG9fb3Blbi5qb2luKCIsIiksYy5jb29raWVfb3B0aW9ucykpLCFj LnNhdmVfbG9hZGVkfHwodGhpcy5zYXZlX2xvYWRlZCgpLGEuY29va2llKGMuc2F2 ZV9sb2FkZWQsdGhpcy5kYXRhLmNvcmUudG9fbG9hZC5qb2luKCIsIiksYy5jb29r aWVfb3B0aW9ucykpO2JyZWFrO2Nhc2Uic2VsZWN0X25vZGUiOmNhc2UiZGVzZWxl Y3Rfbm9kZSI6ISFjLnNhdmVfc2VsZWN0ZWQmJnRoaXMuZGF0YS51aSYmKHRoaXMu c2F2ZV9zZWxlY3RlZCgpLGEuY29va2llKGMuc2F2ZV9zZWxlY3RlZCx0aGlzLmRh dGEudWkudG9fc2VsZWN0LmpvaW4oIiwiKSxjLmNvb2tpZV9vcHRpb25zKSl9fX19 KX0oalF1ZXJ5KSxmdW5jdGlvbihhKXthLmpzdHJlZS5wbHVnaW4oInNvcnQiLHtf X2luaXQ6ZnVuY3Rpb24oKXt0aGlzLmdldF9jb250YWluZXIoKS5iaW5kKCJsb2Fk X25vZGUuanN0cmVlIixhLnByb3h5KGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5f Z2V0X25vZGUoYi5yc2x0Lm9iaik7Yz1jPT09LTE/dGhpcy5nZXRfY29udGFpbmVy KCkuY2hpbGRyZW4oInVsIik6Yy5jaGlsZHJlbigidWwiKSx0aGlzLnNvcnQoYyl9 LHRoaXMpKS5iaW5kKCJyZW5hbWVfbm9kZS5qc3RyZWUgY3JlYXRlX25vZGUuanN0 cmVlIGNyZWF0ZS5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYSxiKXt0aGlzLnNv cnQoYi5yc2x0Lm9iai5wYXJlbnQoKSl9LHRoaXMpKS5iaW5kKCJtb3ZlX25vZGUu anN0cmVlIixhLnByb3h5KGZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5yc2x0Lm5wPT0t MT90aGlzLmdldF9jb250YWluZXIoKTpiLnJzbHQubnA7dGhpcy5zb3J0KGMuY2hp bGRyZW4oInVsIikpfSx0aGlzKSl9LGRlZmF1bHRzOmZ1bmN0aW9uKGEsYil7cmV0 dXJuIHRoaXMuZ2V0X3RleHQoYSk+dGhpcy5nZXRfdGV4dChiKT8xOi0xfSxfZm46 e3NvcnQ6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5fZ2V0X3NldHRpbmdzKCkuc29y dCxkPXRoaXM7Yi5hcHBlbmQoYS5tYWtlQXJyYXkoYi5jaGlsZHJlbigibGkiKSku c29ydChhLnByb3h5KGMsZCkpKSxiLmZpbmQoIj4gbGkgPiB1bCIpLmVhY2goZnVu Y3Rpb24oKXtkLnNvcnQoYSh0aGlzKSl9KSx0aGlzLmNsZWFuX25vZGUoYil9fX0p fShqUXVlcnkpLGZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9ITEsZD0hMSxlPSExLGY9 ITEsZz0hMSxoPSExLGk9ITEsaj0hMTthLnZha2F0YS5kbmQ9e2lzX2Rvd246ITEs aXNfZHJhZzohMSxoZWxwZXI6ITEsc2Nyb2xsX3NwZDoxMCxpbml0X3g6MCxpbml0 X3k6MCx0aHJlc2hvbGQ6NSxoZWxwZXJfbGVmdDo1LGhlbHBlcl90b3A6MTAsdXNl cl9kYXRhOnt9LGRyYWdfc3RhcnQ6ZnVuY3Rpb24oYixjLGQpe2EudmFrYXRhLmRu ZC5pc19kcmFnJiZhLnZha2F0YS5kcmFnX3N0b3Aoe30pO3RyeXtiLmN1cnJlbnRU YXJnZXQudW5zZWxlY3RhYmxlPSJvbiIsYi5jdXJyZW50VGFyZ2V0Lm9uc2VsZWN0 c3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sYi5jdXJyZW50VGFyZ2V0LnN0eWxl JiYoYi5jdXJyZW50VGFyZ2V0LnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1j YXRjaChlKXt9cmV0dXJuIGEudmFrYXRhLmRuZC5pbml0X3g9Yi5wYWdlWCxhLnZh a2F0YS5kbmQuaW5pdF95PWIucGFnZVksYS52YWthdGEuZG5kLnVzZXJfZGF0YT1j LGEudmFrYXRhLmRuZC5pc19kb3duPSEwLGEudmFrYXRhLmRuZC5oZWxwZXI9YSgi PGRpdiBpZD0ndmFrYXRhLWRyYWdnZWQnIC8+IikuaHRtbChkKSxhKGRvY3VtZW50 KS5iaW5kKCJtb3VzZW1vdmUiLGEudmFrYXRhLmRuZC5kcmFnKSxhKGRvY3VtZW50 KS5iaW5kKCJtb3VzZXVwIixhLnZha2F0YS5kbmQuZHJhZ19zdG9wKSwhMX0sZHJh ZzpmdW5jdGlvbihiKXtpZighYS52YWthdGEuZG5kLmlzX2Rvd24pcmV0dXJuO2lm KCFhLnZha2F0YS5kbmQuaXNfZHJhZylpZihNYXRoLmFicyhiLnBhZ2VYLWEudmFr YXRhLmRuZC5pbml0X3gpPjV8fE1hdGguYWJzKGIucGFnZVktYS52YWthdGEuZG5k LmluaXRfeSk+NSlhLnZha2F0YS5kbmQuaGVscGVyLmFwcGVuZFRvKCJib2R5Iiks YS52YWthdGEuZG5kLmlzX2RyYWc9ITAsYShkb2N1bWVudCkudHJpZ2dlckhhbmRs ZXIoImRyYWdfc3RhcnQudmFrYXRhIix7ZXZlbnQ6YixkYXRhOmEudmFrYXRhLmRu ZC51c2VyX2RhdGF9KTtlbHNlIHJldHVybjtpZihiLnR5cGU9PT0ibW91c2Vtb3Zl Iil7dmFyIGM9YShkb2N1bWVudCksZD1jLnNjcm9sbFRvcCgpLGU9Yy5zY3JvbGxM ZWZ0KCk7Yi5wYWdlWS1kPDIwPyhnJiZoPT09ImRvd24iJiYoY2xlYXJJbnRlcnZh bChnKSxnPSExKSxnfHwoaD0idXAiLGc9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXth KGRvY3VtZW50KS5zY3JvbGxUb3AoYShkb2N1bWVudCkuc2Nyb2xsVG9wKCktYS52 YWthdGEuZG5kLnNjcm9sbF9zcGQpfSwxNTApKSk6ZyYmaD09PSJ1cCImJihjbGVh ckludGVydmFsKGcpLGc9ITEpLGEod2luZG93KS5oZWlnaHQoKS0oYi5wYWdlWS1k KTwyMD8oZyYmaD09PSJ1cCImJihjbGVhckludGVydmFsKGcpLGc9ITEpLGd8fCho PSJkb3duIixnPXNldEludGVydmFsKGZ1bmN0aW9uKCl7YShkb2N1bWVudCkuc2Ny b2xsVG9wKGEoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2EudmFrYXRhLmRuZC5zY3Jv bGxfc3BkKX0sMTUwKSkpOmcmJmg9PT0iZG93biImJihjbGVhckludGVydmFsKGcp LGc9ITEpLGIucGFnZVgtZTwyMD8oZiYmaT09PSJyaWdodCImJihjbGVhckludGVy dmFsKGYpLGY9ITEpLGZ8fChpPSJsZWZ0IixmPXNldEludGVydmFsKGZ1bmN0aW9u KCl7YShkb2N1bWVudCkuc2Nyb2xsTGVmdChhKGRvY3VtZW50KS5zY3JvbGxMZWZ0 KCktYS52YWthdGEuZG5kLnNjcm9sbF9zcGQpfSwxNTApKSk6ZiYmaT09PSJsZWZ0 IiYmKGNsZWFySW50ZXJ2YWwoZiksZj0hMSksYSh3aW5kb3cpLndpZHRoKCktKGIu cGFnZVgtZSk8MjA/KGYmJmk9PT0ibGVmdCImJihjbGVhckludGVydmFsKGYpLGY9 ITEpLGZ8fChpPSJyaWdodCIsZj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2EoZG9j dW1lbnQpLnNjcm9sbExlZnQoYShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpK2EudmFr YXRhLmRuZC5zY3JvbGxfc3BkKX0sMTUwKSkpOmYmJmk9PT0icmlnaHQiJiYoY2xl YXJJbnRlcnZhbChmKSxmPSExKX1hLnZha2F0YS5kbmQuaGVscGVyLmNzcyh7bGVm dDpiLnBhZ2VYK2EudmFrYXRhLmRuZC5oZWxwZXJfbGVmdCsicHgiLHRvcDpiLnBh Z2VZK2EudmFrYXRhLmRuZC5oZWxwZXJfdG9wKyJweCJ9KSxhKGRvY3VtZW50KS50 cmlnZ2VySGFuZGxlcigiZHJhZy52YWthdGEiLHtldmVudDpiLGRhdGE6YS52YWth dGEuZG5kLnVzZXJfZGF0YX0pfSxkcmFnX3N0b3A6ZnVuY3Rpb24oYil7ZiYmY2xl YXJJbnRlcnZhbChmKSxnJiZjbGVhckludGVydmFsKGcpLGEoZG9jdW1lbnQpLnVu YmluZCgibW91c2Vtb3ZlIixhLnZha2F0YS5kbmQuZHJhZyksYShkb2N1bWVudCku dW5iaW5kKCJtb3VzZXVwIixhLnZha2F0YS5kbmQuZHJhZ19zdG9wKSxhKGRvY3Vt ZW50KS50cmlnZ2VySGFuZGxlcigiZHJhZ19zdG9wLnZha2F0YSIse2V2ZW50OmIs ZGF0YTphLnZha2F0YS5kbmQudXNlcl9kYXRhfSksYS52YWthdGEuZG5kLmhlbHBl ci5yZW1vdmUoKSxhLnZha2F0YS5kbmQuaW5pdF94PTAsYS52YWthdGEuZG5kLmlu aXRfeT0wLGEudmFrYXRhLmRuZC51c2VyX2RhdGE9e30sYS52YWthdGEuZG5kLmlz X2Rvd249ITEsYS52YWthdGEuZG5kLmlzX2RyYWc9ITF9fSxhKGZ1bmN0aW9uKCl7 dmFyIGI9IiN2YWthdGEtZHJhZ2dlZCB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjow IDAgMCAwOyBwYWRkaW5nOjRweCA0cHggNHB4IDI0cHg7IHBvc2l0aW9uOmFic29s dXRlOyB0b3A6LTIwMDBweDsgbGluZS1oZWlnaHQ6MTZweDsgei1pbmRleDoxMDAw MDsgfSAiO2EudmFrYXRhLmNzcy5hZGRfc2hlZXQoe3N0cjpiLHRpdGxlOiJ2YWth dGEifSl9KSxhLmpzdHJlZS5wbHVnaW4oImRuZCIse19faW5pdDpmdW5jdGlvbigp e3RoaXMuZGF0YS5kbmQ9e2FjdGl2ZTohMSxhZnRlcjohMSxpbnNpZGU6ITEsYmVm b3JlOiExLG9mZjohMSxwcmVwYXJlZDohMSx3OjAsdG8xOiExLHRvMjohMSxjb2Y6 ITEsY3c6ITEsY2g6ITEsaTE6ITEsaTI6ITEsbXRvOiExfSx0aGlzLmdldF9jb250 YWluZXIoKS5iaW5kKCJtb3VzZWVudGVyLmpzdHJlZSIsYS5wcm94eShmdW5jdGlv bihjKXtpZihhLnZha2F0YS5kbmQuaXNfZHJhZyYmYS52YWthdGEuZG5kLnVzZXJf ZGF0YS5qc3RyZWUpe3RoaXMuZGF0YS50aGVtZXMmJihkLmF0dHIoImNsYXNzIiwi anN0cmVlLSIrdGhpcy5kYXRhLnRoZW1lcy50aGVtZSksZSYmZS5hdHRyKCJjbGFz cyIsImpzdHJlZS0iK3RoaXMuZGF0YS50aGVtZXMudGhlbWUpLGEudmFrYXRhLmRu ZC5oZWxwZXIuYXR0cigiY2xhc3MiLCJqc3RyZWUtZG5kLWhlbHBlciBqc3RyZWUt Iit0aGlzLmRhdGEudGhlbWVzLnRoZW1lKSk7aWYoYy5jdXJyZW50VGFyZ2V0PT09 Yy50YXJnZXQmJmEudmFrYXRhLmRuZC51c2VyX2RhdGEub2JqJiZhKGEudmFrYXRh LmRuZC51c2VyX2RhdGEub2JqKS5sZW5ndGgmJmEoYS52YWthdGEuZG5kLnVzZXJf ZGF0YS5vYmopLnBhcmVudHMoIi5qc3RyZWU6ZXEoMCkiKVswXSE9PWMudGFyZ2V0 KXt2YXIgZj1hLmpzdHJlZS5fcmVmZXJlbmNlKGMudGFyZ2V0KSxnO2YuZGF0YS5k bmQuZm9yZWlnbj8oZz1mLl9nZXRfc2V0dGluZ3MoKS5kbmQuZHJhZ19jaGVjay5j YWxsKHRoaXMse286YixyOmYuZ2V0X2NvbnRhaW5lcigpLGlzX3Jvb3Q6ITB9KSwo Zz09PSEwfHxnLmluc2lkZT09PSEwfHxnLmJlZm9yZT09PSEwfHxnLmFmdGVyPT09 ITApJiZhLnZha2F0YS5kbmQuaGVscGVyLmNoaWxkcmVuKCJpbnMiKS5hdHRyKCJj bGFzcyIsImpzdHJlZS1vayIpKTooZi5wcmVwYXJlX21vdmUoYixmLmdldF9jb250 YWluZXIoKSwibGFzdCIpLGYuY2hlY2tfbW92ZSgpJiZhLnZha2F0YS5kbmQuaGVs cGVyLmNoaWxkcmVuKCJpbnMiKS5hdHRyKCJjbGFzcyIsImpzdHJlZS1vayIpKX19 fSx0aGlzKSkuYmluZCgibW91c2V1cC5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24o Yyl7aWYoYS52YWthdGEuZG5kLmlzX2RyYWcmJmEudmFrYXRhLmRuZC51c2VyX2Rh dGEuanN0cmVlJiZjLmN1cnJlbnRUYXJnZXQ9PT1jLnRhcmdldCYmYS52YWthdGEu ZG5kLnVzZXJfZGF0YS5vYmomJmEoYS52YWthdGEuZG5kLnVzZXJfZGF0YS5vYmop Lmxlbmd0aCYmYShhLnZha2F0YS5kbmQudXNlcl9kYXRhLm9iaikucGFyZW50cygi LmpzdHJlZTplcSgwKSIpWzBdIT09Yy50YXJnZXQpe3ZhciBkPWEuanN0cmVlLl9y ZWZlcmVuY2UoYy5jdXJyZW50VGFyZ2V0KSxlO2QuZGF0YS5kbmQuZm9yZWlnbj8o ZT1kLl9nZXRfc2V0dGluZ3MoKS5kbmQuZHJhZ19jaGVjay5jYWxsKHRoaXMse286 YixyOmQuZ2V0X2NvbnRhaW5lcigpLGlzX3Jvb3Q6ITB9KSwoZT09PSEwfHxlLmlu c2lkZT09PSEwfHxlLmJlZm9yZT09PSEwfHxlLmFmdGVyPT09ITApJiZkLl9nZXRf c2V0dGluZ3MoKS5kbmQuZHJhZ19maW5pc2guY2FsbCh0aGlzLHtvOmIscjpkLmdl dF9jb250YWluZXIoKSxpc19yb290OiEwfSkpOmQubW92ZV9ub2RlKGIsZC5nZXRf Y29udGFpbmVyKCksImxhc3QiLGNbZC5fZ2V0X3NldHRpbmdzKCkuZG5kLmNvcHlf bW9kaWZpZXIrIktleSJdKX19LHRoaXMpKS5iaW5kKCJtb3VzZWxlYXZlLmpzdHJl ZSIsYS5wcm94eShmdW5jdGlvbihiKXtpZihiLnJlbGF0ZWRUYXJnZXQmJmIucmVs YXRlZFRhcmdldC5pZCYmYi5yZWxhdGVkVGFyZ2V0LmlkPT09ImpzdHJlZS1tYXJr ZXItbGluZSIpcmV0dXJuITE7YS52YWthdGEuZG5kLmlzX2RyYWcmJmEudmFrYXRh LmRuZC51c2VyX2RhdGEuanN0cmVlJiYodGhpcy5kYXRhLmRuZC5pMSYmY2xlYXJJ bnRlcnZhbCh0aGlzLmRhdGEuZG5kLmkxKSx0aGlzLmRhdGEuZG5kLmkyJiZjbGVh ckludGVydmFsKHRoaXMuZGF0YS5kbmQuaTIpLHRoaXMuZGF0YS5kbmQudG8xJiZj bGVhclRpbWVvdXQodGhpcy5kYXRhLmRuZC50bzEpLHRoaXMuZGF0YS5kbmQudG8y JiZjbGVhclRpbWVvdXQodGhpcy5kYXRhLmRuZC50bzIpLGEudmFrYXRhLmRuZC5o ZWxwZXIuY2hpbGRyZW4oImlucyIpLmhhc0NsYXNzKCJqc3RyZWUtb2siKSYmYS52 YWthdGEuZG5kLmhlbHBlci5jaGlsZHJlbigiaW5zIikuYXR0cigiY2xhc3MiLCJq c3RyZWUtaW52YWxpZCIpKX0sdGhpcykpLmJpbmQoIm1vdXNlbW92ZS5qc3RyZWUi LGEucHJveHkoZnVuY3Rpb24oYil7aWYoYS52YWthdGEuZG5kLmlzX2RyYWcmJmEu dmFrYXRhLmRuZC51c2VyX2RhdGEuanN0cmVlKXt2YXIgYz10aGlzLmdldF9jb250 YWluZXIoKVswXTtiLnBhZ2VYKzI0PnRoaXMuZGF0YS5kbmQuY29mLmxlZnQrdGhp cy5kYXRhLmRuZC5jdz8odGhpcy5kYXRhLmRuZC5pMSYmY2xlYXJJbnRlcnZhbCh0 aGlzLmRhdGEuZG5kLmkxKSx0aGlzLmRhdGEuZG5kLmkxPXNldEludGVydmFsKGEu cHJveHkoZnVuY3Rpb24oKXt0aGlzLnNjcm9sbExlZnQrPWEudmFrYXRhLmRuZC5z Y3JvbGxfc3BkfSxjKSwxMDApKTpiLnBhZ2VYLTI0PHRoaXMuZGF0YS5kbmQuY29m LmxlZnQ/KHRoaXMuZGF0YS5kbmQuaTEmJmNsZWFySW50ZXJ2YWwodGhpcy5kYXRh LmRuZC5pMSksdGhpcy5kYXRhLmRuZC5pMT1zZXRJbnRlcnZhbChhLnByb3h5KGZ1 bmN0aW9uKCl7dGhpcy5zY3JvbGxMZWZ0LT1hLnZha2F0YS5kbmQuc2Nyb2xsX3Nw ZH0sYyksMTAwKSk6dGhpcy5kYXRhLmRuZC5pMSYmY2xlYXJJbnRlcnZhbCh0aGlz LmRhdGEuZG5kLmkxKSxiLnBhZ2VZKzI0PnRoaXMuZGF0YS5kbmQuY29mLnRvcCt0 aGlzLmRhdGEuZG5kLmNoPyh0aGlzLmRhdGEuZG5kLmkyJiZjbGVhckludGVydmFs KHRoaXMuZGF0YS5kbmQuaTIpLHRoaXMuZGF0YS5kbmQuaTI9c2V0SW50ZXJ2YWwo YS5wcm94eShmdW5jdGlvbigpe3RoaXMuc2Nyb2xsVG9wKz1hLnZha2F0YS5kbmQu c2Nyb2xsX3NwZH0sYyksMTAwKSk6Yi5wYWdlWS0yNDx0aGlzLmRhdGEuZG5kLmNv Zi50b3A/KHRoaXMuZGF0YS5kbmQuaTImJmNsZWFySW50ZXJ2YWwodGhpcy5kYXRh LmRuZC5pMiksdGhpcy5kYXRhLmRuZC5pMj1zZXRJbnRlcnZhbChhLnByb3h5KGZ1 bmN0aW9uKCl7dGhpcy5zY3JvbGxUb3AtPWEudmFrYXRhLmRuZC5zY3JvbGxfc3Bk fSxjKSwxMDApKTp0aGlzLmRhdGEuZG5kLmkyJiZjbGVhckludGVydmFsKHRoaXMu ZGF0YS5kbmQuaTIpfX0sdGhpcykpLmJpbmQoInNjcm9sbC5qc3RyZWUiLGEucHJv eHkoZnVuY3Rpb24oYil7YS52YWthdGEuZG5kLmlzX2RyYWcmJmEudmFrYXRhLmRu ZC51c2VyX2RhdGEuanN0cmVlJiZkJiZlJiYoZC5oaWRlKCksZS5oaWRlKCkpfSx0 aGlzKSkuZGVsZWdhdGUoImEiLCJtb3VzZWRvd24uanN0cmVlIixhLnByb3h5KGZ1 bmN0aW9uKGEpe2lmKGEud2hpY2g9PT0xKXJldHVybiB0aGlzLnN0YXJ0X2RyYWco YS5jdXJyZW50VGFyZ2V0LGEpLCExfSx0aGlzKSkuZGVsZWdhdGUoImEiLCJtb3Vz ZWVudGVyLmpzdHJlZSIsYS5wcm94eShmdW5jdGlvbihiKXthLnZha2F0YS5kbmQu aXNfZHJhZyYmYS52YWthdGEuZG5kLnVzZXJfZGF0YS5qc3RyZWUmJnRoaXMuZG5k X2VudGVyKGIuY3VycmVudFRhcmdldCl9LHRoaXMpKS5kZWxlZ2F0ZSgiYSIsIm1v dXNlbW92ZS5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYil7YS52YWthdGEuZG5k LmlzX2RyYWcmJmEudmFrYXRhLmRuZC51c2VyX2RhdGEuanN0cmVlJiYoKCFjfHwh Yy5sZW5ndGh8fGMuY2hpbGRyZW4oImEiKVswXSE9PWIuY3VycmVudFRhcmdldCkm JnRoaXMuZG5kX2VudGVyKGIuY3VycmVudFRhcmdldCksdHlwZW9mIHRoaXMuZGF0 YS5kbmQub2ZmLnRvcD09InVuZGVmaW5lZCImJih0aGlzLmRhdGEuZG5kLm9mZj1h KGIudGFyZ2V0KS5vZmZzZXQoKSksdGhpcy5kYXRhLmRuZC53PShiLnBhZ2VZLSh0 aGlzLmRhdGEuZG5kLm9mZi50b3B8fDApKSV0aGlzLmRhdGEuY29yZS5saV9oZWln aHQsdGhpcy5kYXRhLmRuZC53PDAmJih0aGlzLmRhdGEuZG5kLncrPXRoaXMuZGF0 YS5jb3JlLmxpX2hlaWdodCksdGhpcy5kbmRfc2hvdygpKX0sdGhpcykpLmRlbGVn YXRlKCJhIiwibW91c2VsZWF2ZS5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYil7 aWYoYS52YWthdGEuZG5kLmlzX2RyYWcmJmEudmFrYXRhLmRuZC51c2VyX2RhdGEu anN0cmVlKXtpZihiLnJlbGF0ZWRUYXJnZXQmJmIucmVsYXRlZFRhcmdldC5pZCYm Yi5yZWxhdGVkVGFyZ2V0LmlkPT09ImpzdHJlZS1tYXJrZXItbGluZSIpcmV0dXJu ITE7ZCYmZC5oaWRlKCksZSYmZS5oaWRlKCksdGhpcy5kYXRhLmRuZC5tdG89c2V0 VGltZW91dChmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXthLmRuZF9sZWF2 ZShiKX19KHRoaXMpLDApfX0sdGhpcykpLmRlbGVnYXRlKCJhIiwibW91c2V1cC5q c3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYil7YS52YWthdGEuZG5kLmlzX2RyYWcm JmEudmFrYXRhLmRuZC51c2VyX2RhdGEuanN0cmVlJiZ0aGlzLmRuZF9maW5pc2go Yil9LHRoaXMpKSxhKGRvY3VtZW50KS5iaW5kKCJkcmFnX3N0b3AudmFrYXRhIixh LnByb3h5KGZ1bmN0aW9uKCl7dGhpcy5kYXRhLmRuZC50bzEmJmNsZWFyVGltZW91 dCh0aGlzLmRhdGEuZG5kLnRvMSksdGhpcy5kYXRhLmRuZC50bzImJmNsZWFyVGlt ZW91dCh0aGlzLmRhdGEuZG5kLnRvMiksdGhpcy5kYXRhLmRuZC5pMSYmY2xlYXJJ bnRlcnZhbCh0aGlzLmRhdGEuZG5kLmkxKSx0aGlzLmRhdGEuZG5kLmkyJiZjbGVh ckludGVydmFsKHRoaXMuZGF0YS5kbmQuaTIpLHRoaXMuZGF0YS5kbmQuYWZ0ZXI9 ITEsdGhpcy5kYXRhLmRuZC5iZWZvcmU9ITEsdGhpcy5kYXRhLmRuZC5pbnNpZGU9 ITEsdGhpcy5kYXRhLmRuZC5vZmY9ITEsdGhpcy5kYXRhLmRuZC5wcmVwYXJlZD0h MSx0aGlzLmRhdGEuZG5kLnc9ITEsdGhpcy5kYXRhLmRuZC50bzE9ITEsdGhpcy5k YXRhLmRuZC50bzI9ITEsdGhpcy5kYXRhLmRuZC5pMT0hMSx0aGlzLmRhdGEuZG5k LmkyPSExLHRoaXMuZGF0YS5kbmQuYWN0aXZlPSExLHRoaXMuZGF0YS5kbmQuZm9y ZWlnbj0hMSxkJiZkLmNzcyh7dG9wOiItMjAwMHB4In0pLGUmJmUuY3NzKHt0b3A6 Ii0yMDAwcHgifSl9LHRoaXMpKS5iaW5kKCJkcmFnX3N0YXJ0LnZha2F0YSIsYS5w cm94eShmdW5jdGlvbihiLGMpe2lmKGMuZGF0YS5qc3RyZWUpe3ZhciBkPWEoYy5l dmVudC50YXJnZXQpO2QuY2xvc2VzdCgiLmpzdHJlZSIpLmhhc0NsYXNzKCJqc3Ry ZWUtIit0aGlzLmdldF9pbmRleCgpKSYmdGhpcy5kbmRfZW50ZXIoZCl9fSx0aGlz KSk7dmFyIGY9dGhpcy5fZ2V0X3NldHRpbmdzKCkuZG5kO2YuZHJhZ190YXJnZXQm JmEoZG9jdW1lbnQpLmRlbGVnYXRlKGYuZHJhZ190YXJnZXQsIm1vdXNlZG93bi5q c3RyZWUtIit0aGlzLmdldF9pbmRleCgpLGEucHJveHkoZnVuY3Rpb24oYyl7Yj1j LnRhcmdldCxhLnZha2F0YS5kbmQuZHJhZ19zdGFydChjLHtqc3RyZWU6ITAsb2Jq OmMudGFyZ2V0fSwiPGlucyBjbGFzcz0nanN0cmVlLWljb24nPjwvaW5zPiIrYShj LnRhcmdldCkudGV4dCgpKSx0aGlzLmRhdGEudGhlbWVzJiYoZCYmZC5hdHRyKCJj bGFzcyIsImpzdHJlZS0iK3RoaXMuZGF0YS50aGVtZXMudGhlbWUpLGUmJmUuYXR0 cigiY2xhc3MiLCJqc3RyZWUtIit0aGlzLmRhdGEudGhlbWVzLnRoZW1lKSxhLnZh a2F0YS5kbmQuaGVscGVyLmF0dHIoImNsYXNzIiwianN0cmVlLWRuZC1oZWxwZXIg anN0cmVlLSIrdGhpcy5kYXRhLnRoZW1lcy50aGVtZSkpLGEudmFrYXRhLmRuZC5o ZWxwZXIuY2hpbGRyZW4oImlucyIpLmF0dHIoImNsYXNzIiwianN0cmVlLWludmFs aWQiKTt2YXIgZj10aGlzLmdldF9jb250YWluZXIoKTt0aGlzLmRhdGEuZG5kLmNv Zj1mLm9mZnNldCgpLHRoaXMuZGF0YS5kbmQuY3c9cGFyc2VJbnQoZi53aWR0aCgp LDEwKSx0aGlzLmRhdGEuZG5kLmNoPXBhcnNlSW50KGYuaGVpZ2h0KCksMTApLHRo aXMuZGF0YS5kbmQuZm9yZWlnbj0hMCxjLnByZXZlbnREZWZhdWx0KCl9LHRoaXMp KSxmLmRyb3BfdGFyZ2V0JiZhKGRvY3VtZW50KS5kZWxlZ2F0ZShmLmRyb3BfdGFy Z2V0LCJtb3VzZWVudGVyLmpzdHJlZS0iK3RoaXMuZ2V0X2luZGV4KCksYS5wcm94 eShmdW5jdGlvbihjKXt0aGlzLmRhdGEuZG5kLmFjdGl2ZSYmdGhpcy5fZ2V0X3Nl dHRpbmdzKCkuZG5kLmRyb3BfY2hlY2suY2FsbCh0aGlzLHtvOmIscjphKGMudGFy Z2V0KSxlOmN9KSYmYS52YWthdGEuZG5kLmhlbHBlci5jaGlsZHJlbigiaW5zIiku YXR0cigiY2xhc3MiLCJqc3RyZWUtb2siKX0sdGhpcykpLmRlbGVnYXRlKGYuZHJv cF90YXJnZXQsIm1vdXNlbGVhdmUuanN0cmVlLSIrdGhpcy5nZXRfaW5kZXgoKSxh LnByb3h5KGZ1bmN0aW9uKGIpe3RoaXMuZGF0YS5kbmQuYWN0aXZlJiZhLnZha2F0 YS5kbmQuaGVscGVyLmNoaWxkcmVuKCJpbnMiKS5hdHRyKCJjbGFzcyIsImpzdHJl ZS1pbnZhbGlkIil9LHRoaXMpKS5kZWxlZ2F0ZShmLmRyb3BfdGFyZ2V0LCJtb3Vz ZXVwLmpzdHJlZS0iK3RoaXMuZ2V0X2luZGV4KCksYS5wcm94eShmdW5jdGlvbihj KXt0aGlzLmRhdGEuZG5kLmFjdGl2ZSYmYS52YWthdGEuZG5kLmhlbHBlci5jaGls ZHJlbigiaW5zIikuaGFzQ2xhc3MoImpzdHJlZS1vayIpJiZ0aGlzLl9nZXRfc2V0 dGluZ3MoKS5kbmQuZHJvcF9maW5pc2guY2FsbCh0aGlzLHtvOmIscjphKGMudGFy Z2V0KSxlOmN9KX0sdGhpcykpfSxkZWZhdWx0czp7Y29weV9tb2RpZmllcjoiY3Ry bCIsY2hlY2tfdGltZW91dDoxMDAsb3Blbl90aW1lb3V0OjUwMCxkcm9wX3Rhcmdl dDoiLmpzdHJlZS1kcm9wIixkcm9wX2NoZWNrOmZ1bmN0aW9uKGEpe3JldHVybiEw fSxkcm9wX2ZpbmlzaDphLm5vb3AsZHJhZ190YXJnZXQ6Ii5qc3RyZWUtZHJhZ2dh YmxlIixkcmFnX2ZpbmlzaDphLm5vb3AsZHJhZ19jaGVjazpmdW5jdGlvbihhKXty ZXR1cm57YWZ0ZXI6ITEsYmVmb3JlOiExLGluc2lkZTohMH19fSxfZm46e2RuZF9w cmVwYXJlOmZ1bmN0aW9uKCl7aWYoIWN8fCFjLmxlbmd0aClyZXR1cm47dGhpcy5k YXRhLmRuZC5vZmY9Yy5vZmZzZXQoKSx0aGlzLl9nZXRfc2V0dGluZ3MoKS5jb3Jl LnJ0bCYmKHRoaXMuZGF0YS5kbmQub2ZmLnJpZ2h0PXRoaXMuZGF0YS5kbmQub2Zm LmxlZnQrYy53aWR0aCgpKTtpZih0aGlzLmRhdGEuZG5kLmZvcmVpZ24pe3ZhciBh PXRoaXMuX2dldF9zZXR0aW5ncygpLmRuZC5kcmFnX2NoZWNrLmNhbGwodGhpcyx7 bzpiLHI6Y30pO3JldHVybiB0aGlzLmRhdGEuZG5kLmFmdGVyPWEuYWZ0ZXIsdGhp cy5kYXRhLmRuZC5iZWZvcmU9YS5iZWZvcmUsdGhpcy5kYXRhLmRuZC5pbnNpZGU9 YS5pbnNpZGUsdGhpcy5kYXRhLmRuZC5wcmVwYXJlZD0hMCx0aGlzLmRuZF9zaG93 KCl9cmV0dXJuIHRoaXMucHJlcGFyZV9tb3ZlKGIsYywiYmVmb3JlIiksdGhpcy5k YXRhLmRuZC5iZWZvcmU9dGhpcy5jaGVja19tb3ZlKCksdGhpcy5wcmVwYXJlX21v dmUoYixjLCJhZnRlciIpLHRoaXMuZGF0YS5kbmQuYWZ0ZXI9dGhpcy5jaGVja19t b3ZlKCksdGhpcy5faXNfbG9hZGVkKGMpPyh0aGlzLnByZXBhcmVfbW92ZShiLGMs Imluc2lkZSIpLHRoaXMuZGF0YS5kbmQuaW5zaWRlPXRoaXMuY2hlY2tfbW92ZSgp KTp0aGlzLmRhdGEuZG5kLmluc2lkZT0hMSx0aGlzLmRhdGEuZG5kLnByZXBhcmVk PSEwLHRoaXMuZG5kX3Nob3coKX0sZG5kX3Nob3c6ZnVuY3Rpb24oKXtpZighdGhp cy5kYXRhLmRuZC5wcmVwYXJlZClyZXR1cm47dmFyIGI9WyJiZWZvcmUiLCJpbnNp ZGUiLCJhZnRlciJdLGM9ITEsZj10aGlzLl9nZXRfc2V0dGluZ3MoKS5jb3JlLnJ0 bCxnO3RoaXMuZGF0YS5kbmQudzx0aGlzLmRhdGEuY29yZS5saV9oZWlnaHQvMz9i PVsiYmVmb3JlIiwiaW5zaWRlIiwiYWZ0ZXIiXTp0aGlzLmRhdGEuZG5kLnc8PXRo aXMuZGF0YS5jb3JlLmxpX2hlaWdodCoyLzM/Yj10aGlzLmRhdGEuZG5kLnc8dGhp cy5kYXRhLmNvcmUubGlfaGVpZ2h0LzI/WyJpbnNpZGUiLCJiZWZvcmUiLCJhZnRl ciJdOlsiaW5zaWRlIiwiYWZ0ZXIiLCJiZWZvcmUiXTpiPVsiYWZ0ZXIiLCJpbnNp ZGUiLCJiZWZvcmUiXSxhLmVhY2goYixhLnByb3h5KGZ1bmN0aW9uKGIsZCl7aWYo dGhpcy5kYXRhLmRuZFtkXSlyZXR1cm4gYS52YWthdGEuZG5kLmhlbHBlci5jaGls ZHJlbigiaW5zIikuYXR0cigiY2xhc3MiLCJqc3RyZWUtb2siKSxjPWQsITF9LHRo aXMpKSxjPT09ITEmJmEudmFrYXRhLmRuZC5oZWxwZXIuY2hpbGRyZW4oImlucyIp LmF0dHIoImNsYXNzIiwianN0cmVlLWludmFsaWQiKSxnPWY/dGhpcy5kYXRhLmRu ZC5vZmYucmlnaHQtMTg6dGhpcy5kYXRhLmRuZC5vZmYubGVmdCsxMDtzd2l0Y2go Yyl7Y2FzZSJiZWZvcmUiOmQuY3NzKHtsZWZ0OmcrInB4Iix0b3A6dGhpcy5kYXRh LmRuZC5vZmYudG9wLTYrInB4In0pLnNob3coKSxlJiZlLmNzcyh7bGVmdDpnKzgr InB4Iix0b3A6dGhpcy5kYXRhLmRuZC5vZmYudG9wLTErInB4In0pLnNob3coKTti cmVhaztjYXNlImFmdGVyIjpkLmNzcyh7bGVmdDpnKyJweCIsdG9wOnRoaXMuZGF0 YS5kbmQub2ZmLnRvcCt0aGlzLmRhdGEuY29yZS5saV9oZWlnaHQtNisicHgifSku c2hvdygpLGUmJmUuY3NzKHtsZWZ0OmcrOCsicHgiLHRvcDp0aGlzLmRhdGEuZG5k Lm9mZi50b3ArdGhpcy5kYXRhLmNvcmUubGlfaGVpZ2h0LTErInB4In0pLnNob3co KTticmVhaztjYXNlImluc2lkZSI6ZC5jc3Moe2xlZnQ6ZysoZj8tNDo0KSsicHgi LHRvcDp0aGlzLmRhdGEuZG5kLm9mZi50b3ArdGhpcy5kYXRhLmNvcmUubGlfaGVp Z2h0LzItNSsicHgifSkuc2hvdygpLGUmJmUuaGlkZSgpO2JyZWFrO2RlZmF1bHQ6 ZC5oaWRlKCksZSYmZS5oaWRlKCl9cmV0dXJuIGo9YyxjfSxkbmRfb3BlbjpmdW5j dGlvbigpe3RoaXMuZGF0YS5kbmQudG8yPSExLHRoaXMub3Blbl9ub2RlKGMsYS5w cm94eSh0aGlzLmRuZF9wcmVwYXJlLHRoaXMpLCEwKX0sZG5kX2ZpbmlzaDpmdW5j dGlvbihhKXt0aGlzLmRhdGEuZG5kLmZvcmVpZ24/KHRoaXMuZGF0YS5kbmQuYWZ0 ZXJ8fHRoaXMuZGF0YS5kbmQuYmVmb3JlfHx0aGlzLmRhdGEuZG5kLmluc2lkZSkm JnRoaXMuX2dldF9zZXR0aW5ncygpLmRuZC5kcmFnX2ZpbmlzaC5jYWxsKHRoaXMs e286YixyOmMscDpqfSk6KHRoaXMuZG5kX3ByZXBhcmUoKSx0aGlzLm1vdmVfbm9k ZShiLGMsaixhW3RoaXMuX2dldF9zZXR0aW5ncygpLmRuZC5jb3B5X21vZGlmaWVy KyJLZXkiXSkpLGI9ITEsYz0hMSxkLmhpZGUoKSxlJiZlLmhpZGUoKX0sZG5kX2Vu dGVyOmZ1bmN0aW9uKGIpe3RoaXMuZGF0YS5kbmQubXRvJiYoY2xlYXJUaW1lb3V0 KHRoaXMuZGF0YS5kbmQubXRvKSx0aGlzLmRhdGEuZG5kLm10bz0hMSk7dmFyIGQ9 dGhpcy5fZ2V0X3NldHRpbmdzKCkuZG5kO3RoaXMuZGF0YS5kbmQucHJlcGFyZWQ9 ITEsYz10aGlzLl9nZXRfbm9kZShiKSxkLmNoZWNrX3RpbWVvdXQ/KHRoaXMuZGF0 YS5kbmQudG8xJiZjbGVhclRpbWVvdXQodGhpcy5kYXRhLmRuZC50bzEpLHRoaXMu ZGF0YS5kbmQudG8xPXNldFRpbWVvdXQoYS5wcm94eSh0aGlzLmRuZF9wcmVwYXJl LHRoaXMpLGQuY2hlY2tfdGltZW91dCkpOnRoaXMuZG5kX3ByZXBhcmUoKSxkLm9w ZW5fdGltZW91dD8odGhpcy5kYXRhLmRuZC50bzImJmNsZWFyVGltZW91dCh0aGlz LmRhdGEuZG5kLnRvMiksYyYmYy5sZW5ndGgmJmMuaGFzQ2xhc3MoImpzdHJlZS1j bG9zZWQiKSYmKHRoaXMuZGF0YS5kbmQudG8yPXNldFRpbWVvdXQoYS5wcm94eSh0 aGlzLmRuZF9vcGVuLHRoaXMpLGQub3Blbl90aW1lb3V0KSkpOmMmJmMubGVuZ3Ro JiZjLmhhc0NsYXNzKCJqc3RyZWUtY2xvc2VkIikmJnRoaXMuZG5kX29wZW4oKX0s ZG5kX2xlYXZlOmZ1bmN0aW9uKGIpe3RoaXMuZGF0YS5kbmQuYWZ0ZXI9ITEsdGhp cy5kYXRhLmRuZC5iZWZvcmU9ITEsdGhpcy5kYXRhLmRuZC5pbnNpZGU9ITEsYS52 YWthdGEuZG5kLmhlbHBlci5jaGlsZHJlbigiaW5zIikuYXR0cigiY2xhc3MiLCJq c3RyZWUtaW52YWxpZCIpLGQuaGlkZSgpLGUmJmUuaGlkZSgpLGMmJmNbMF09PT1i LnRhcmdldC5wYXJlbnROb2RlJiYodGhpcy5kYXRhLmRuZC50bzEmJihjbGVhclRp bWVvdXQodGhpcy5kYXRhLmRuZC50bzEpLHRoaXMuZGF0YS5kbmQudG8xPSExKSx0 aGlzLmRhdGEuZG5kLnRvMiYmKGNsZWFyVGltZW91dCh0aGlzLmRhdGEuZG5kLnRv MiksdGhpcy5kYXRhLmRuZC50bzI9ITEpKX0sc3RhcnRfZHJhZzpmdW5jdGlvbihj LGYpe2I9dGhpcy5fZ2V0X25vZGUoYyksdGhpcy5kYXRhLnVpJiZ0aGlzLmlzX3Nl bGVjdGVkKGIpJiYoYj10aGlzLl9nZXRfbm9kZShudWxsLCEwKSk7dmFyIGc9Yi5s ZW5ndGg+MT90aGlzLl9nZXRfc3RyaW5nKCJtdWx0aXBsZV9zZWxlY3Rpb24iKTp0 aGlzLmdldF90ZXh0KGIpLGg9dGhpcy5nZXRfY29udGFpbmVyKCk7dGhpcy5fZ2V0 X3NldHRpbmdzKCkuY29yZS5odG1sX3RpdGxlc3x8KGc9Zy5yZXBsYWNlKC88L2ln LCImbHQ7IikucmVwbGFjZSgvPi9pZywiJmd0OyIpKSxhLnZha2F0YS5kbmQuZHJh Z19zdGFydChmLHtqc3RyZWU6ITAsb2JqOmJ9LCI8aW5zIGNsYXNzPSdqc3RyZWUt aWNvbic+PC9pbnM+IitnKSx0aGlzLmRhdGEudGhlbWVzJiYoZCYmZC5hdHRyKCJj bGFzcyIsImpzdHJlZS0iK3RoaXMuZGF0YS50aGVtZXMudGhlbWUpLGUmJmUuYXR0 cigiY2xhc3MiLCJqc3RyZWUtIit0aGlzLmRhdGEudGhlbWVzLnRoZW1lKSxhLnZh a2F0YS5kbmQuaGVscGVyLmF0dHIoImNsYXNzIiwianN0cmVlLWRuZC1oZWxwZXIg anN0cmVlLSIrdGhpcy5kYXRhLnRoZW1lcy50aGVtZSkpLHRoaXMuZGF0YS5kbmQu Y29mPWgub2Zmc2V0KCksdGhpcy5kYXRhLmRuZC5jdz1wYXJzZUludChoLndpZHRo KCksMTApLHRoaXMuZGF0YS5kbmQuY2g9cGFyc2VJbnQoaC5oZWlnaHQoKSwxMCks dGhpcy5kYXRhLmRuZC5hY3RpdmU9ITB9fX0pLGEoZnVuY3Rpb24oKXt2YXIgYj0i I3Zha2F0YS1kcmFnZ2VkIGlucyB7IGRpc3BsYXk6YmxvY2s7IHRleHQtZGVjb3Jh dGlvbjpub25lOyB3aWR0aDoxNnB4OyBoZWlnaHQ6MTZweDsgbWFyZ2luOjAgMCAw IDA7IHBhZGRpbmc6MDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo0cHg7IGxlZnQ6 NHB4OyAgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7 IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IH0gI3Zha2F0YS1kcmFnZ2VkIC5q c3RyZWUtb2sgeyBiYWNrZ3JvdW5kOmdyZWVuOyB9ICN2YWthdGEtZHJhZ2dlZCAu anN0cmVlLWludmFsaWQgeyBiYWNrZ3JvdW5kOnJlZDsgfSAjanN0cmVlLW1hcmtl ciB7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGZvbnQtc2l6ZToxMnB4OyBvdmVyZmxv dzpoaWRkZW47IGhlaWdodDoxMnB4OyB3aWR0aDo4cHg7IHBvc2l0aW9uOmFic29s dXRlOyB0b3A6LTMwcHg7IHotaW5kZXg6MTAwMDE7IGJhY2tncm91bmQtcmVwZWF0 Om5vLXJlcGVhdDsgZGlzcGxheTpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5z cGFyZW50OyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCB3aGl0ZTsgY29sb3I6Ymxh Y2s7IGxpbmUtaGVpZ2h0OjEwcHg7IH0gI2pzdHJlZS1tYXJrZXItbGluZSB7IHBh ZGRpbmc6MDsgbWFyZ2luOjA7IGxpbmUtaGVpZ2h0OjAlOyBmb250LXNpemU6MXB4 OyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDoxcHg7IHdpZHRoOjEwMHB4OyBwb3Np dGlvbjphYnNvbHV0ZTsgdG9wOi0zMHB4OyB6LWluZGV4OjEwMDAwOyBiYWNrZ3Jv dW5kLXJlcGVhdDpuby1yZXBlYXQ7IGRpc3BsYXk6bm9uZTsgYmFja2dyb3VuZC1j b2xvcjojNDU2YzQzOyAgY3Vyc29yOnBvaW50ZXI7IGJvcmRlcjoxcHggc29saWQg I2VlZWVlZTsgYm9yZGVyLWxlZnQ6MDsgLW1vei1ib3gtc2hhZG93OiAwcHggMHB4 IDJweCAjNjY2OyAtd2Via2l0LWJveC1zaGFkb3c6IDBweCAwcHggMnB4ICM2NjY7 IGJveC1zaGFkb3c6IDBweCAwcHggMnB4ICM2NjY7ICAtbW96LWJvcmRlci1yYWRp dXM6MXB4OyBib3JkZXItcmFkaXVzOjFweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVz OjFweDsgfSI7YS52YWthdGEuY3NzLmFkZF9zaGVldCh7c3RyOmIsdGl0bGU6Impz dHJlZSJ9KSxkPWEoIjxkaXYgLz4iKS5hdHRyKHtpZDoianN0cmVlLW1hcmtlciJ9 KS5oaWRlKCkuaHRtbCgiJnJhcXVvOyIpLmJpbmQoIm1vdXNlbGVhdmUgbW91c2Vl bnRlciIsZnVuY3Rpb24oYSl7cmV0dXJuIGQuaGlkZSgpLGUuaGlkZSgpLGEucHJl dmVudERlZmF1bHQoKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCExfSku YXBwZW5kVG8oImJvZHkiKSxlPWEoIjxkaXYgLz4iKS5hdHRyKHtpZDoianN0cmVl LW1hcmtlci1saW5lIn0pLmhpZGUoKS5iaW5kKCJtb3VzZXVwIixmdW5jdGlvbihh KXtpZihjJiZjLmxlbmd0aClyZXR1cm4gYy5jaGlsZHJlbigiYSIpLnRyaWdnZXIo YSksYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u KCksITF9KS5iaW5kKCJtb3VzZWxlYXZlIixmdW5jdGlvbihiKXt2YXIgZj1hKGIu cmVsYXRlZFRhcmdldCk7aWYoZi5pcygiLmpzdHJlZSIpfHxmLmNsb3Nlc3QoIi5q c3RyZWUiKS5sZW5ndGg9PT0wKWlmKGMmJmMubGVuZ3RoKXJldHVybiBjLmNoaWxk cmVuKCJhIikudHJpZ2dlcihiKSxkLmhpZGUoKSxlLmhpZGUoKSxiLnByZXZlbnRE ZWZhdWx0KCksYi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMX0pLmFwcGVu ZFRvKCJib2R5IiksYShkb2N1bWVudCkuYmluZCgiZHJhZ19zdGFydC52YWthdGEi LGZ1bmN0aW9uKGEsYil7Yi5kYXRhLmpzdHJlZSYmKGQuc2hvdygpLGUmJmUuc2hv dygpKX0pLGEoZG9jdW1lbnQpLmJpbmQoImRyYWdfc3RvcC52YWthdGEiLGZ1bmN0 aW9uKGEsYil7Yi5kYXRhLmpzdHJlZSYmKGQuaGlkZSgpLGUmJmUuaGlkZSgpKX0p fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS5qc3RyZWUucGx1Z2luKCJjaGVja2Jv eCIse19faW5pdDpmdW5jdGlvbigpe3RoaXMuZGF0YS5jaGVja2JveC5ub3VpPXRo aXMuX2dldF9zZXR0aW5ncygpLmNoZWNrYm94Lm92ZXJyaWRlX3VpLHRoaXMuZGF0 YS51aSYmdGhpcy5kYXRhLmNoZWNrYm94Lm5vdWkmJih0aGlzLnNlbGVjdF9ub2Rl PXRoaXMuZGVzZWxlY3Rfbm9kZT10aGlzLmRlc2VsZWN0X2FsbD1hLm5vb3AsdGhp cy5nZXRfc2VsZWN0ZWQ9dGhpcy5nZXRfY2hlY2tlZCksdGhpcy5nZXRfY29udGFp bmVyKCkuYmluZCgib3Blbl9ub2RlLmpzdHJlZSBjcmVhdGVfbm9kZS5qc3RyZWUg Y2xlYW5fbm9kZS5qc3RyZWUgcmVmcmVzaC5qc3RyZWUiLGEucHJveHkoZnVuY3Rp b24oYSxiKXt0aGlzLl9wcmVwYXJlX2NoZWNrYm94ZXMoYi5yc2x0Lm9iail9LHRo aXMpKS5iaW5kKCJsb2FkZWQuanN0cmVlIixhLnByb3h5KGZ1bmN0aW9uKGEpe3Ro aXMuX3ByZXBhcmVfY2hlY2tib3hlcygpfSx0aGlzKSkuZGVsZWdhdGUodGhpcy5k YXRhLnVpJiZ0aGlzLmRhdGEuY2hlY2tib3gubm91aT8iYSI6Imlucy5qc3RyZWUt Y2hlY2tib3giLCJjbGljay5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYSl7YS5w cmV2ZW50RGVmYXVsdCgpLHRoaXMuX2dldF9ub2RlKGEudGFyZ2V0KS5oYXNDbGFz cygianN0cmVlLWNoZWNrZWQiKT90aGlzLnVuY2hlY2tfbm9kZShhLnRhcmdldCk6 dGhpcy5jaGVja19ub2RlKGEudGFyZ2V0KTtpZih0aGlzLmRhdGEudWkmJnRoaXMu ZGF0YS5jaGVja2JveC5ub3VpKXRoaXMuc2F2ZV9zZWxlY3RlZCgpLHRoaXMuZGF0 YS5jb29raWVzJiZ0aGlzLnNhdmVfY29va2llKCJzZWxlY3Rfbm9kZSIpO2Vsc2Ug cmV0dXJuIGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksITF9LHRoaXMpKX0s ZGVmYXVsdHM6e292ZXJyaWRlX3VpOiExLHR3b19zdGF0ZTohMSxyZWFsX2NoZWNr Ym94ZXM6ITEsY2hlY2tlZF9wYXJlbnRfb3BlbjohMCxyZWFsX2NoZWNrYm94ZXNf bmFtZXM6ZnVuY3Rpb24oYSl7cmV0dXJuWyJjaGVja18iKyhhWzBdLmlkfHxNYXRo LmNlaWwoTWF0aC5yYW5kb20oKSoxZTQpKSwxXX19LF9fZGVzdHJveTpmdW5jdGlv bigpe3RoaXMuZ2V0X2NvbnRhaW5lcigpLmZpbmQoImlucHV0LmpzdHJlZS1yZWFs LWNoZWNrYm94IikucmVtb3ZlQ2xhc3MoImpzdHJlZS1yZWFsLWNoZWNrYm94Iiku ZW5kKCkuZmluZCgiaW5zLmpzdHJlZS1jaGVja2JveCIpLnJlbW92ZSgpfSxfZm46 e19jaGVja2JveF9ub3RpZnk6ZnVuY3Rpb24oYSxiKXtiLmNoZWNrZWQmJnRoaXMu Y2hlY2tfbm9kZShhLCExKX0sX3ByZXBhcmVfY2hlY2tib3hlczpmdW5jdGlvbihi KXtiPSFifHxiPT0tMT90aGlzLmdldF9jb250YWluZXIoKS5maW5kKCI+IHVsID4g bGkiKTp0aGlzLl9nZXRfbm9kZShiKTtpZihiPT09ITEpcmV0dXJuO3ZhciBjLGQ9 dGhpcyxlLGY9dGhpcy5fZ2V0X3NldHRpbmdzKCkuY2hlY2tib3gudHdvX3N0YXRl LGc9dGhpcy5fZ2V0X3NldHRpbmdzKCkuY2hlY2tib3gucmVhbF9jaGVja2JveGVz LGg9dGhpcy5fZ2V0X3NldHRpbmdzKCkuY2hlY2tib3gucmVhbF9jaGVja2JveGVz X25hbWVzO2IuZWFjaChmdW5jdGlvbigpe2U9YSh0aGlzKSxjPWUuaXMoImxpIikm JihlLmhhc0NsYXNzKCJqc3RyZWUtY2hlY2tlZCIpfHxnJiZlLmNoaWxkcmVuKCI6 Y2hlY2tlZCIpLmxlbmd0aCk/ImpzdHJlZS1jaGVja2VkIjoianN0cmVlLXVuY2hl Y2tlZCIsZS5maW5kKCJsaSIpLmFuZFNlbGYoKS4KZWFjaChmdW5jdGlvbigpe3Zh ciBiPWEodGhpcyksZTtiLmNoaWxkcmVuKCJhIisoZC5kYXRhLmxhbmd1YWdlcz8i IjoiOmVxKDApIikpLm5vdCgiOmhhcyguanN0cmVlLWNoZWNrYm94KSIpLnByZXBl bmQoIjxpbnMgY2xhc3M9J2pzdHJlZS1jaGVja2JveCc+JiMxNjA7PC9pbnM+Iiku cGFyZW50KCkubm90KCIuanN0cmVlLWNoZWNrZWQsIC5qc3RyZWUtdW5jaGVja2Vk IikuYWRkQ2xhc3MoZj8ianN0cmVlLXVuY2hlY2tlZCI6YyksZyYmKGIuY2hpbGRy ZW4oIjpjaGVja2JveCIpLmxlbmd0aD9iLmNoaWxkcmVuKCI6Y2hlY2tib3giKS5h ZGRDbGFzcygianN0cmVlLXJlYWwtY2hlY2tib3giKTooZT1oLmNhbGwoZCxiKSxi LnByZXBlbmQoIjxpbnB1dCB0eXBlPSdjaGVja2JveCcgY2xhc3M9J2pzdHJlZS1y ZWFsLWNoZWNrYm94JyBpZD0nIitlWzBdKyInIG5hbWU9JyIrZVswXSsiJyB2YWx1 ZT0nIitlWzFdKyInIC8+IikpKSxmPyhiLmhhc0NsYXNzKCJqc3RyZWUtY2hlY2tl ZCIpfHxiLmNoaWxkcmVuKCI6Y2hlY2tlZCIpLmxlbmd0aCkmJmIuYWRkQ2xhc3Mo ImpzdHJlZS1jaGVja2VkIikuY2hpbGRyZW4oIjpjaGVja2JveCIpLnByb3AoImNo ZWNrZWQiLCEwKTooYz09PSJqc3RyZWUtY2hlY2tlZCJ8fGIuaGFzQ2xhc3MoImpz dHJlZS1jaGVja2VkIil8fGIuY2hpbGRyZW4oIjpjaGVja2VkIikubGVuZ3RoKSYm Yi5maW5kKCJsaSIpLmFuZFNlbGYoKS5hZGRDbGFzcygianN0cmVlLWNoZWNrZWQi KS5jaGlsZHJlbigiOmNoZWNrYm94IikucHJvcCgiY2hlY2tlZCIsITApfSl9KSxm fHxiLmZpbmQoIi5qc3RyZWUtY2hlY2tlZCIpLnBhcmVudCgpLnBhcmVudCgpLmVh Y2goZnVuY3Rpb24oKXtkLl9yZXBhaXJfc3RhdGUodGhpcyl9KX0sY2hhbmdlX3N0 YXRlOmZ1bmN0aW9uKGIsYyl7Yj10aGlzLl9nZXRfbm9kZShiKTt2YXIgZD0hMSxl PXRoaXMuX2dldF9zZXR0aW5ncygpLmNoZWNrYm94LnJlYWxfY2hlY2tib3hlcztp ZighYnx8Yj09PS0xKXJldHVybiExO2M9Yz09PSExfHxjPT09ITA/YzpiLmhhc0Ns YXNzKCJqc3RyZWUtY2hlY2tlZCIpO2lmKHRoaXMuX2dldF9zZXR0aW5ncygpLmNo ZWNrYm94LnR3b19zdGF0ZSljPyhiLnJlbW92ZUNsYXNzKCJqc3RyZWUtY2hlY2tl ZCIpLmFkZENsYXNzKCJqc3RyZWUtdW5jaGVja2VkIiksZSYmYi5jaGlsZHJlbigi OmNoZWNrYm94IikucHJvcCgiY2hlY2tlZCIsITEpKTooYi5yZW1vdmVDbGFzcygi anN0cmVlLXVuY2hlY2tlZCIpLmFkZENsYXNzKCJqc3RyZWUtY2hlY2tlZCIpLGUm JmIuY2hpbGRyZW4oIjpjaGVja2JveCIpLnByb3AoImNoZWNrZWQiLCEwKSk7ZWxz ZXtpZihjKXtkPWIuZmluZCgibGkiKS5hbmRTZWxmKCk7aWYoIWQuZmlsdGVyKCIu anN0cmVlLWNoZWNrZWQsIC5qc3RyZWUtdW5kZXRlcm1pbmVkIikubGVuZ3RoKXJl dHVybiExO2QucmVtb3ZlQ2xhc3MoImpzdHJlZS1jaGVja2VkIGpzdHJlZS11bmRl dGVybWluZWQiKS5hZGRDbGFzcygianN0cmVlLXVuY2hlY2tlZCIpLGUmJmQuY2hp bGRyZW4oIjpjaGVja2JveCIpLnByb3AoImNoZWNrZWQiLCExKX1lbHNle2Q9Yi5m aW5kKCJsaSIpLmFuZFNlbGYoKTtpZighZC5maWx0ZXIoIi5qc3RyZWUtdW5jaGVj a2VkLCAuanN0cmVlLXVuZGV0ZXJtaW5lZCIpLmxlbmd0aClyZXR1cm4hMTtkLnJl bW92ZUNsYXNzKCJqc3RyZWUtdW5jaGVja2VkIGpzdHJlZS11bmRldGVybWluZWQi KS5hZGRDbGFzcygianN0cmVlLWNoZWNrZWQiKSxlJiZkLmNoaWxkcmVuKCI6Y2hl Y2tib3giKS5wcm9wKCJjaGVja2VkIiwhMCksdGhpcy5kYXRhLnVpJiYodGhpcy5k YXRhLnVpLmxhc3Rfc2VsZWN0ZWQ9YiksdGhpcy5kYXRhLmNoZWNrYm94Lmxhc3Rf c2VsZWN0ZWQ9Yn1iLnBhcmVudHNVbnRpbCgiLmpzdHJlZSIsImxpIikuZWFjaChm dW5jdGlvbigpe3ZhciBiPWEodGhpcyk7aWYoYyl7aWYoYi5jaGlsZHJlbigidWwi KS5jaGlsZHJlbigibGkuanN0cmVlLWNoZWNrZWQsIGxpLmpzdHJlZS11bmRldGVy bWluZWQiKS5sZW5ndGgpcmV0dXJuIGIucGFyZW50c1VudGlsKCIuanN0cmVlIiwi bGkiKS5hbmRTZWxmKCkucmVtb3ZlQ2xhc3MoImpzdHJlZS1jaGVja2VkIGpzdHJl ZS11bmNoZWNrZWQiKS5hZGRDbGFzcygianN0cmVlLXVuZGV0ZXJtaW5lZCIpLGUm JmIucGFyZW50c1VudGlsKCIuanN0cmVlIiwibGkiKS5hbmRTZWxmKCkuY2hpbGRy ZW4oIjpjaGVja2JveCIpLnByb3AoImNoZWNrZWQiLCExKSwhMTtiLnJlbW92ZUNs YXNzKCJqc3RyZWUtY2hlY2tlZCBqc3RyZWUtdW5kZXRlcm1pbmVkIikuYWRkQ2xh c3MoImpzdHJlZS11bmNoZWNrZWQiKSxlJiZiLmNoaWxkcmVuKCI6Y2hlY2tib3gi KS5wcm9wKCJjaGVja2VkIiwhMSl9ZWxzZXtpZihiLmNoaWxkcmVuKCJ1bCIpLmNo aWxkcmVuKCJsaS5qc3RyZWUtdW5jaGVja2VkLCBsaS5qc3RyZWUtdW5kZXRlcm1p bmVkIikubGVuZ3RoKXJldHVybiBiLnBhcmVudHNVbnRpbCgiLmpzdHJlZSIsImxp IikuYW5kU2VsZigpLnJlbW92ZUNsYXNzKCJqc3RyZWUtY2hlY2tlZCBqc3RyZWUt dW5jaGVja2VkIikuYWRkQ2xhc3MoImpzdHJlZS11bmRldGVybWluZWQiKSxlJiZi LnBhcmVudHNVbnRpbCgiLmpzdHJlZSIsImxpIikuYW5kU2VsZigpLmNoaWxkcmVu KCI6Y2hlY2tib3giKS5wcm9wKCJjaGVja2VkIiwhMSksITE7Yi5yZW1vdmVDbGFz cygianN0cmVlLXVuY2hlY2tlZCBqc3RyZWUtdW5kZXRlcm1pbmVkIikuYWRkQ2xh c3MoImpzdHJlZS1jaGVja2VkIiksZSYmYi5jaGlsZHJlbigiOmNoZWNrYm94Iiku cHJvcCgiY2hlY2tlZCIsITApfX0pfXJldHVybiB0aGlzLmRhdGEudWkmJnRoaXMu ZGF0YS5jaGVja2JveC5ub3VpJiYodGhpcy5kYXRhLnVpLnNlbGVjdGVkPXRoaXMu Z2V0X2NoZWNrZWQoKSksdGhpcy5fX2NhbGxiYWNrKGIpLCEwfSxjaGVja19ub2Rl OmZ1bmN0aW9uKGEpe2lmKHRoaXMuY2hhbmdlX3N0YXRlKGEsITEpKXthPXRoaXMu X2dldF9ub2RlKGEpO2lmKHRoaXMuX2dldF9zZXR0aW5ncygpLmNoZWNrYm94LmNo ZWNrZWRfcGFyZW50X29wZW4pe3ZhciBiPXRoaXM7YS5wYXJlbnRzKCIuanN0cmVl LWNsb3NlZCIpLmVhY2goZnVuY3Rpb24oKXtiLm9wZW5fbm9kZSh0aGlzLCExLCEw KX0pfXRoaXMuX19jYWxsYmFjayh7b2JqOmF9KX19LHVuY2hlY2tfbm9kZTpmdW5j dGlvbihhKXt0aGlzLmNoYW5nZV9zdGF0ZShhLCEwKSYmdGhpcy5fX2NhbGxiYWNr KHtvYmo6dGhpcy5fZ2V0X25vZGUoYSl9KX0sY2hlY2tfYWxsOmZ1bmN0aW9uKCl7 dmFyIGE9dGhpcyxiPXRoaXMuX2dldF9zZXR0aW5ncygpLmNoZWNrYm94LnR3b19z dGF0ZT90aGlzLmdldF9jb250YWluZXJfdWwoKS5maW5kKCJsaSIpOnRoaXMuZ2V0 X2NvbnRhaW5lcl91bCgpLmNoaWxkcmVuKCJsaSIpO2IuZWFjaChmdW5jdGlvbigp e2EuY2hhbmdlX3N0YXRlKHRoaXMsITEpfSksdGhpcy5fX2NhbGxiYWNrKCl9LHVu Y2hlY2tfYWxsOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuX2dldF9zZXR0 aW5ncygpLmNoZWNrYm94LnR3b19zdGF0ZT90aGlzLmdldF9jb250YWluZXJfdWwo KS5maW5kKCJsaSIpOnRoaXMuZ2V0X2NvbnRhaW5lcl91bCgpLmNoaWxkcmVuKCJs aSIpO2IuZWFjaChmdW5jdGlvbigpe2EuY2hhbmdlX3N0YXRlKHRoaXMsITApfSks dGhpcy5fX2NhbGxiYWNrKCl9LGlzX2NoZWNrZWQ6ZnVuY3Rpb24oYSl7cmV0dXJu IGE9dGhpcy5fZ2V0X25vZGUoYSksYS5sZW5ndGg/YS5pcygiLmpzdHJlZS1jaGVj a2VkIik6ITF9LGdldF9jaGVja2VkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9IWF8 fGE9PT0tMT90aGlzLmdldF9jb250YWluZXIoKTp0aGlzLl9nZXRfbm9kZShhKSxi fHx0aGlzLl9nZXRfc2V0dGluZ3MoKS5jaGVja2JveC50d29fc3RhdGU/YS5maW5k KCIuanN0cmVlLWNoZWNrZWQiKTphLmZpbmQoIj4gdWwgPiAuanN0cmVlLWNoZWNr ZWQsIC5qc3RyZWUtdW5kZXRlcm1pbmVkID4gdWwgPiAuanN0cmVlLWNoZWNrZWQi KX0sZ2V0X3VuY2hlY2tlZDpmdW5jdGlvbihhLGIpe3JldHVybiBhPSFhfHxhPT09 LTE/dGhpcy5nZXRfY29udGFpbmVyKCk6dGhpcy5fZ2V0X25vZGUoYSksYnx8dGhp cy5fZ2V0X3NldHRpbmdzKCkuY2hlY2tib3gudHdvX3N0YXRlP2EuZmluZCgiLmpz dHJlZS11bmNoZWNrZWQiKTphLmZpbmQoIj4gdWwgPiAuanN0cmVlLXVuY2hlY2tl ZCwgLmpzdHJlZS11bmRldGVybWluZWQgPiB1bCA+IC5qc3RyZWUtdW5jaGVja2Vk Iil9LHNob3dfY2hlY2tib3hlczpmdW5jdGlvbigpe3RoaXMuZ2V0X2NvbnRhaW5l cigpLmNoaWxkcmVuKCJ1bCIpLnJlbW92ZUNsYXNzKCJqc3RyZWUtbm8tY2hlY2ti b3hlcyIpfSxoaWRlX2NoZWNrYm94ZXM6ZnVuY3Rpb24oKXt0aGlzLmdldF9jb250 YWluZXIoKS5jaGlsZHJlbigidWwiKS5hZGRDbGFzcygianN0cmVlLW5vLWNoZWNr Ym94ZXMiKX0sX3JlcGFpcl9zdGF0ZTpmdW5jdGlvbihhKXthPXRoaXMuX2dldF9u b2RlKGEpO2lmKCFhLmxlbmd0aClyZXR1cm47aWYodGhpcy5fZ2V0X3NldHRpbmdz KCkuY2hlY2tib3gudHdvX3N0YXRlKXthLmZpbmQoImxpIikuYW5kU2VsZigpLm5v dCgiLmpzdHJlZS1jaGVja2VkIikucmVtb3ZlQ2xhc3MoImpzdHJlZS11bmRldGVy bWluZWQiKS5hZGRDbGFzcygianN0cmVlLXVuY2hlY2tlZCIpLmNoaWxkcmVuKCI6 Y2hlY2tib3giKS5wcm9wKCJjaGVja2VkIiwhMCk7cmV0dXJufXZhciBiPXRoaXMu X2dldF9zZXR0aW5ncygpLmNoZWNrYm94LnJlYWxfY2hlY2tib3hlcyxjPWEuZmlu ZCgiPiB1bCA+IC5qc3RyZWUtY2hlY2tlZCIpLmxlbmd0aCxkPWEuZmluZCgiPiB1 bCA+IC5qc3RyZWUtdW5kZXRlcm1pbmVkIikubGVuZ3RoLGU9YS5maW5kKCI+IHVs ID4gbGkiKS5sZW5ndGg7ZT09PTA/YS5oYXNDbGFzcygianN0cmVlLXVuZGV0ZXJt aW5lZCIpJiZ0aGlzLmNoYW5nZV9zdGF0ZShhLCExKTpjPT09MCYmZD09PTA/dGhp cy5jaGFuZ2Vfc3RhdGUoYSwhMCk6Yz09PWU/dGhpcy5jaGFuZ2Vfc3RhdGUoYSwh MSk6KGEucGFyZW50c1VudGlsKCIuanN0cmVlIiwibGkiKS5hbmRTZWxmKCkucmVt b3ZlQ2xhc3MoImpzdHJlZS1jaGVja2VkIGpzdHJlZS11bmNoZWNrZWQiKS5hZGRD bGFzcygianN0cmVlLXVuZGV0ZXJtaW5lZCIpLGImJmEucGFyZW50c1VudGlsKCIu anN0cmVlIiwibGkiKS5hbmRTZWxmKCkuY2hpbGRyZW4oIjpjaGVja2JveCIpLnBy b3AoImNoZWNrZWQiLCExKSl9LHJlc2VsZWN0OmZ1bmN0aW9uKCl7aWYodGhpcy5k YXRhLnVpJiZ0aGlzLmRhdGEuY2hlY2tib3gubm91aSl7dmFyIGI9dGhpcyxjPXRo aXMuZGF0YS51aS50b19zZWxlY3Q7Yz1hLm1hcChhLm1ha2VBcnJheShjKSxmdW5j dGlvbihhKXtyZXR1cm4iIyIrYS50b1N0cmluZygpLnJlcGxhY2UoL14jLywiIiku cmVwbGFjZSgvXFxcLy9nLCIvIikucmVwbGFjZSgvXC8vZywiXFwvIikucmVwbGFj ZSgvXFxcLi9nLCIuIikucmVwbGFjZSgvXC4vZywiXFwuIikucmVwbGFjZSgvXDov ZywiXFw6Iil9KSx0aGlzLmRlc2VsZWN0X2FsbCgpLGEuZWFjaChjLGZ1bmN0aW9u KGEsYyl7Yi5jaGVja19ub2RlKGMpfSksdGhpcy5fX2NhbGxiYWNrKCl9ZWxzZSB0 aGlzLl9fY2FsbF9vbGQoKX0sc2F2ZV9sb2FkZWQ6ZnVuY3Rpb24oKXt2YXIgYT10 aGlzO3RoaXMuZGF0YS5jb3JlLnRvX2xvYWQ9W10sdGhpcy5nZXRfY29udGFpbmVy X3VsKCkuZmluZCgibGkuanN0cmVlLWNsb3NlZC5qc3RyZWUtdW5kZXRlcm1pbmVk IikuZWFjaChmdW5jdGlvbigpe3RoaXMuaWQmJmEuZGF0YS5jb3JlLnRvX2xvYWQu cHVzaCgiIyIrdGhpcy5pZCl9KX19fSksYShmdW5jdGlvbigpe3ZhciBiPSIuanN0 cmVlIC5qc3RyZWUtcmVhbC1jaGVja2JveCB7IGRpc3BsYXk6bm9uZTsgfSAiO2Eu dmFrYXRhLmNzcy5hZGRfc2hlZXQoe3N0cjpiLHRpdGxlOiJqc3RyZWUifSl9KX0o alF1ZXJ5KSxmdW5jdGlvbihhKXthLnZha2F0YS54c2x0PWZ1bmN0aW9uKGIsYyxk KXt2YXIgZT0iIixmLGcsaCxpO3JldHVybiBkb2N1bWVudC5yZWNhbGM/KGY9ZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgieG1sIiksZz1kb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJ4bWwiKSxmLmlubmVySFRNTD1iLGcuaW5uZXJIVE1MPWMsYSgiYm9keSIp LmFwcGVuZChmKS5hcHBlbmQoZyksc2V0VGltZW91dChmdW5jdGlvbihiLGMsZCl7 cmV0dXJuIGZ1bmN0aW9uKCl7ZC5jYWxsKG51bGwsYi50cmFuc2Zvcm1Ob2RlKGMu WE1MRG9jdW1lbnQpKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGZ1 bmN0aW9uKCl7YShiKS5yZW1vdmUoKSxhKGMpLnJlbW92ZSgpfX0oYixjKSwyMDAp fX0oZixnLGQpLDEwMCksITApOih0eXBlb2Ygd2luZG93LkRPTVBhcnNlciE9InVu ZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cuWE1MSHR0cFJlcXVlc3QhPSJ1bmRlZmlu ZWQiJiZ0eXBlb2Ygd2luZG93LlhTTFRQcm9jZXNzb3I9PSJ1bmRlZmluZWQiJiYo Yj0obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGIsInRleHQveG1sIiks Yz0obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGMsInRleHQveG1sIikp LHR5cGVvZiB3aW5kb3cuRE9NUGFyc2VyIT0idW5kZWZpbmVkIiYmdHlwZW9mIHdp bmRvdy5YTUxIdHRwUmVxdWVzdCE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cu WFNMVFByb2Nlc3NvciE9InVuZGVmaW5lZCI/KGg9bmV3IFhTTFRQcm9jZXNzb3Is aT1hLmlzRnVuY3Rpb24oaC50cmFuc2Zvcm1Eb2N1bWVudCk/dHlwZW9mIHdpbmRv dy5YTUxTZXJpYWxpemVyIT0idW5kZWZpbmVkIjohMCxpPyhiPShuZXcgRE9NUGFy c2VyKS5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSxjPShuZXcgRE9NUGFy c2VyKS5wYXJzZUZyb21TdHJpbmcoYywidGV4dC94bWwiKSxhLmlzRnVuY3Rpb24o aC50cmFuc2Zvcm1Eb2N1bWVudCk/KGU9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u Y3JlYXRlRG9jdW1lbnQoIiIsIiIsbnVsbCksaC50cmFuc2Zvcm1Eb2N1bWVudChi LGMsZSxudWxsKSxkLmNhbGwobnVsbCwobmV3IFhNTFNlcmlhbGl6ZXIpLnNlcmlh bGl6ZVRvU3RyaW5nKGUpKSwhMCk6KGguaW1wb3J0U3R5bGVzaGVldChjKSxlPWgu dHJhbnNmb3JtVG9GcmFnbWVudChiLGRvY3VtZW50KSxkLmNhbGwobnVsbCxhKCI8 ZGl2IC8+IikuYXBwZW5kKGUpLmh0bWwoKSksITApKTohMSk6ITEpfTt2YXIgYj17 bmVzdDonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+PHhz bDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJodHRwOi8vd3d3 LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iID48eHNsOm91dHB1dCBtZXRob2Q9 Imh0bWwiIGVuY29kaW5nPSJ1dGYtOCIgb21pdC14bWwtZGVjbGFyYXRpb249Inll cyIgc3RhbmRhbG9uZT0ibm8iIGluZGVudD0ibm8iIG1lZGlhLXR5cGU9InRleHQv aHRtbCIgLz48eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj5cdDx4c2w6Y2FsbC10ZW1w bGF0ZSBuYW1lPSJub2RlcyI+XHRcdDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2Rl IiBzZWxlY3Q9Ii9yb290IiAvPlx0PC94c2w6Y2FsbC10ZW1wbGF0ZT48L3hzbDp0 ZW1wbGF0ZT48eHNsOnRlbXBsYXRlIG5hbWU9Im5vZGVzIj5cdDx4c2w6cGFyYW0g bmFtZT0ibm9kZSIgLz5cdDx1bD5cdDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSIkbm9k ZS9pdGVtIj5cdFx0PHhzbDp2YXJpYWJsZSBuYW1lPSJjaGlsZHJlbiIgc2VsZWN0 PSJjb3VudCguL2l0ZW0pICZndDsgMCIgLz5cdFx0PGxpPlx0XHRcdDx4c2w6YXR0 cmlidXRlIG5hbWU9ImNsYXNzIj5cdFx0XHRcdDx4c2w6aWYgdGVzdD0icG9zaXRp b24oKSA9IGxhc3QoKSI+anN0cmVlLWxhc3QgPC94c2w6aWY+XHRcdFx0XHQ8eHNs OmNob29zZT5cdFx0XHRcdFx0PHhzbDp3aGVuIHRlc3Q9IkBzdGF0ZSA9IFwnb3Bl blwnIj5qc3RyZWUtb3BlbiA8L3hzbDp3aGVuPlx0XHRcdFx0XHQ8eHNsOndoZW4g dGVzdD0iJGNoaWxkcmVuIG9yIEBoYXNDaGlsZHJlbiBvciBAc3RhdGUgPSBcJ2Ns b3NlZFwnIj5qc3RyZWUtY2xvc2VkIDwveHNsOndoZW4+XHRcdFx0XHRcdDx4c2w6 b3RoZXJ3aXNlPmpzdHJlZS1sZWFmIDwveHNsOm90aGVyd2lzZT5cdFx0XHRcdDwv eHNsOmNob29zZT5cdFx0XHRcdDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJAY2xhc3Mi IC8+XHRcdFx0PC94c2w6YXR0cmlidXRlPlx0XHRcdDx4c2w6Zm9yLWVhY2ggc2Vs ZWN0PSJAKiI+XHRcdFx0XHQ8eHNsOmlmIHRlc3Q9Im5hbWUoKSAhPSBcJ2NsYXNz XCcgYW5kIG5hbWUoKSAhPSBcJ3N0YXRlXCcgYW5kIG5hbWUoKSAhPSBcJ2hhc0No aWxkcmVuXCciPlx0XHRcdFx0XHQ8eHNsOmF0dHJpYnV0ZSBuYW1lPSJ7bmFtZSgp fSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iIC8+PC94c2w6YXR0cmlidXRlPlx0 XHRcdFx0PC94c2w6aWY+XHRcdFx0PC94c2w6Zm9yLWVhY2g+XHQ8aW5zIGNsYXNz PSJqc3RyZWUtaWNvbiI+PHhzbDp0ZXh0PiYjeGEwOzwveHNsOnRleHQ+PC9pbnM+ XHRcdFx0PHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImNvbnRlbnQvbmFtZSI+XHRcdFx0 XHQ8YT5cdFx0XHRcdDx4c2w6YXR0cmlidXRlIG5hbWU9ImhyZWYiPlx0XHRcdFx0 XHQ8eHNsOmNob29zZT5cdFx0XHRcdFx0PHhzbDp3aGVuIHRlc3Q9IkBocmVmIj48 eHNsOnZhbHVlLW9mIHNlbGVjdD0iQGhyZWYiIC8+PC94c2w6d2hlbj5cdFx0XHRc dFx0PHhzbDpvdGhlcndpc2U+IzwveHNsOm90aGVyd2lzZT5cdFx0XHRcdFx0PC94 c2w6Y2hvb3NlPlx0XHRcdFx0PC94c2w6YXR0cmlidXRlPlx0XHRcdFx0PHhzbDph dHRyaWJ1dGUgbmFtZT0iY2xhc3MiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJAbGFu ZyIgLz4gPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBjbGFzcyIgLz48L3hzbDphdHRy aWJ1dGU+XHRcdFx0XHQ8eHNsOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSI+PHhzbDp2 YWx1ZS1vZiBzZWxlY3Q9IkBzdHlsZSIgLz48L3hzbDphdHRyaWJ1dGU+XHRcdFx0 XHQ8eHNsOmZvci1lYWNoIHNlbGVjdD0iQCoiPlx0XHRcdFx0XHQ8eHNsOmlmIHRl c3Q9Im5hbWUoKSAhPSBcJ3N0eWxlXCcgYW5kIG5hbWUoKSAhPSBcJ2NsYXNzXCcg YW5kIG5hbWUoKSAhPSBcJ2hyZWZcJyI+XHRcdFx0XHRcdFx0PHhzbDphdHRyaWJ1 dGUgbmFtZT0ie25hbWUoKX0iPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIiAvPjwv eHNsOmF0dHJpYnV0ZT5cdFx0XHRcdFx0PC94c2w6aWY+XHRcdFx0XHQ8L3hzbDpm b3ItZWFjaD5cdFx0XHRcdFx0PGlucz5cdFx0XHRcdFx0XHQ8eHNsOmF0dHJpYnV0 ZSBuYW1lPSJjbGFzcyI+anN0cmVlLWljb24gXHRcdFx0XHRcdFx0XHQ8eHNsOmlm IHRlc3Q9InN0cmluZy1sZW5ndGgoYXR0cmlidXRlOjppY29uKSA+IDAgYW5kIG5v dChjb250YWlucyhAaWNvbixcJy9cJykpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0i QGljb24iIC8+PC94c2w6aWY+XHRcdFx0XHRcdFx0PC94c2w6YXR0cmlidXRlPlx0 XHRcdFx0XHRcdDx4c2w6aWYgdGVzdD0ic3RyaW5nLWxlbmd0aChhdHRyaWJ1dGU6 Omljb24pID4gMCBhbmQgY29udGFpbnMoQGljb24sXCcvXCcpIj48eHNsOmF0dHJp YnV0ZSBuYW1lPSJzdHlsZSI+YmFja2dyb3VuZDp1cmwoPHhzbDp2YWx1ZS1vZiBz ZWxlY3Q9IkBpY29uIiAvPikgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7PC94c2w6 YXR0cmlidXRlPjwveHNsOmlmPlx0XHRcdFx0XHRcdDx4c2w6dGV4dD4mI3hhMDs8 L3hzbDp0ZXh0Plx0XHRcdFx0XHQ8L2lucz5cdFx0XHRcdFx0PHhzbDpjb3B5LW9m IHNlbGVjdD0iLi9jaGlsZDo6bm9kZSgpIiAvPlx0XHRcdFx0PC9hPlx0XHRcdDwv eHNsOmZvci1lYWNoPlx0XHRcdDx4c2w6aWYgdGVzdD0iJGNoaWxkcmVuIG9yIEBo YXNDaGlsZHJlbiI+PHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9Im5vZGVzIj48eHNs OndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSJjdXJyZW50KCkiIC8+PC94 c2w6Y2FsbC10ZW1wbGF0ZT48L3hzbDppZj5cdFx0PC9saT5cdDwveHNsOmZvci1l YWNoPlx0PC91bD48L3hzbDp0ZW1wbGF0ZT48L3hzbDpzdHlsZXNoZWV0PicsZmxh dDonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+PHhzbDpz dHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJodHRwOi8vd3d3Lncz Lm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iID48eHNsOm91dHB1dCBtZXRob2Q9Imh0 bWwiIGVuY29kaW5nPSJ1dGYtOCIgb21pdC14bWwtZGVjbGFyYXRpb249InllcyIg c3RhbmRhbG9uZT0ibm8iIGluZGVudD0ibm8iIG1lZGlhLXR5cGU9InRleHQveG1s IiAvPjx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPlx0PHVsPlx0PHhzbDpmb3ItZWFj aCBzZWxlY3Q9Ii8vaXRlbVtub3QoQHBhcmVudF9pZCkgb3IgQHBhcmVudF9pZD0w IG9yIG5vdChAcGFyZW50X2lkID0gLy9pdGVtL0BpZCldIj5cdFx0PHhzbDpjYWxs LXRlbXBsYXRlIG5hbWU9Im5vZGVzIj5cdFx0XHQ8eHNsOndpdGgtcGFyYW0gbmFt ZT0ibm9kZSIgc2VsZWN0PSIuIiAvPlx0XHRcdDx4c2w6d2l0aC1wYXJhbSBuYW1l PSJpc19sYXN0IiBzZWxlY3Q9Im51bWJlcihwb3NpdGlvbigpID0gbGFzdCgpKSIg Lz5cdFx0PC94c2w6Y2FsbC10ZW1wbGF0ZT5cdDwveHNsOmZvci1lYWNoPlx0PC91 bD48L3hzbDp0ZW1wbGF0ZT48eHNsOnRlbXBsYXRlIG5hbWU9Im5vZGVzIj5cdDx4 c2w6cGFyYW0gbmFtZT0ibm9kZSIgLz5cdDx4c2w6cGFyYW0gbmFtZT0iaXNfbGFz dCIgLz5cdDx4c2w6dmFyaWFibGUgbmFtZT0iY2hpbGRyZW4iIHNlbGVjdD0iY291 bnQoLy9pdGVtW0BwYXJlbnRfaWQ9JG5vZGUvYXR0cmlidXRlOjppZF0pICZndDsg MCIgLz5cdDxsaT5cdDx4c2w6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj5cdFx0PHhz bDppZiB0ZXN0PSIkaXNfbGFzdCA9IHRydWUoKSI+anN0cmVlLWxhc3QgPC94c2w6 aWY+XHRcdDx4c2w6Y2hvb3NlPlx0XHRcdDx4c2w6d2hlbiB0ZXN0PSJAc3RhdGUg PSBcJ29wZW5cJyI+anN0cmVlLW9wZW4gPC94c2w6d2hlbj5cdFx0XHQ8eHNsOndo ZW4gdGVzdD0iJGNoaWxkcmVuIG9yIEBoYXNDaGlsZHJlbiBvciBAc3RhdGUgPSBc J2Nsb3NlZFwnIj5qc3RyZWUtY2xvc2VkIDwveHNsOndoZW4+XHRcdFx0PHhzbDpv dGhlcndpc2U+anN0cmVlLWxlYWYgPC94c2w6b3RoZXJ3aXNlPlx0XHQ8L3hzbDpj aG9vc2U+XHRcdDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJAY2xhc3MiIC8+XHQ8L3hz bDphdHRyaWJ1dGU+XHQ8eHNsOmZvci1lYWNoIHNlbGVjdD0iQCoiPlx0XHQ8eHNs OmlmIHRlc3Q9Im5hbWUoKSAhPSBcJ3BhcmVudF9pZFwnIGFuZCBuYW1lKCkgIT0g XCdoYXNDaGlsZHJlblwnIGFuZCBuYW1lKCkgIT0gXCdjbGFzc1wnIGFuZCBuYW1l KCkgIT0gXCdzdGF0ZVwnIj5cdFx0PHhzbDphdHRyaWJ1dGUgbmFtZT0ie25hbWUo KX0iPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIiAvPjwveHNsOmF0dHJpYnV0ZT5c dFx0PC94c2w6aWY+XHQ8L3hzbDpmb3ItZWFjaD5cdDxpbnMgY2xhc3M9ImpzdHJl ZS1pY29uIj48eHNsOnRleHQ+JiN4YTA7PC94c2w6dGV4dD48L2lucz5cdDx4c2w6 Zm9yLWVhY2ggc2VsZWN0PSJjb250ZW50L25hbWUiPlx0XHQ8YT5cdFx0PHhzbDph dHRyaWJ1dGUgbmFtZT0iaHJlZiI+XHRcdFx0PHhzbDpjaG9vc2U+XHRcdFx0PHhz bDp3aGVuIHRlc3Q9IkBocmVmIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iQGhyZWYi IC8+PC94c2w6d2hlbj5cdFx0XHQ8eHNsOm90aGVyd2lzZT4jPC94c2w6b3RoZXJ3 aXNlPlx0XHRcdDwveHNsOmNob29zZT5cdFx0PC94c2w6YXR0cmlidXRlPlx0XHQ8 eHNsOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9 IkBsYW5nIiAvPiA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iQGNsYXNzIiAvPjwveHNs OmF0dHJpYnV0ZT5cdFx0PHhzbDphdHRyaWJ1dGUgbmFtZT0ic3R5bGUiPjx4c2w6 dmFsdWUtb2Ygc2VsZWN0PSJAc3R5bGUiIC8+PC94c2w6YXR0cmlidXRlPlx0XHQ8 eHNsOmZvci1lYWNoIHNlbGVjdD0iQCoiPlx0XHRcdDx4c2w6aWYgdGVzdD0ibmFt ZSgpICE9IFwnc3R5bGVcJyBhbmQgbmFtZSgpICE9IFwnY2xhc3NcJyBhbmQgbmFt ZSgpICE9IFwnaHJlZlwnIj5cdFx0XHRcdDx4c2w6YXR0cmlidXRlIG5hbWU9Intu YW1lKCl9Ij48eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIgLz48L3hzbDphdHRyaWJ1 dGU+XHRcdFx0PC94c2w6aWY+XHRcdDwveHNsOmZvci1lYWNoPlx0XHRcdDxpbnM+ XHRcdFx0XHQ8eHNsOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+anN0cmVlLWljb24g XHRcdFx0XHRcdDx4c2w6aWYgdGVzdD0ic3RyaW5nLWxlbmd0aChhdHRyaWJ1dGU6 Omljb24pID4gMCBhbmQgbm90KGNvbnRhaW5zKEBpY29uLFwnL1wnKSkiPjx4c2w6 dmFsdWUtb2Ygc2VsZWN0PSJAaWNvbiIgLz48L3hzbDppZj5cdFx0XHRcdDwveHNs OmF0dHJpYnV0ZT5cdFx0XHRcdDx4c2w6aWYgdGVzdD0ic3RyaW5nLWxlbmd0aChh dHRyaWJ1dGU6Omljb24pID4gMCBhbmQgY29udGFpbnMoQGljb24sXCcvXCcpIj48 eHNsOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSI+YmFja2dyb3VuZDp1cmwoPHhzbDp2 YWx1ZS1vZiBzZWxlY3Q9IkBpY29uIiAvPikgY2VudGVyIGNlbnRlciBuby1yZXBl YXQ7PC94c2w6YXR0cmlidXRlPjwveHNsOmlmPlx0XHRcdFx0PHhzbDp0ZXh0PiYj eGEwOzwveHNsOnRleHQ+XHRcdFx0PC9pbnM+XHRcdFx0PHhzbDpjb3B5LW9mIHNl bGVjdD0iLi9jaGlsZDo6bm9kZSgpIiAvPlx0XHQ8L2E+XHQ8L3hzbDpmb3ItZWFj aD5cdDx4c2w6aWYgdGVzdD0iJGNoaWxkcmVuIj5cdFx0PHVsPlx0XHQ8eHNsOmZv ci1lYWNoIHNlbGVjdD0iLy9pdGVtW0BwYXJlbnRfaWQ9JG5vZGUvYXR0cmlidXRl OjppZF0iPlx0XHRcdDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJub2RlcyI+XHRc dFx0XHQ8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSIuIiAvPlx0 XHRcdFx0PHhzbDp3aXRoLXBhcmFtIG5hbWU9ImlzX2xhc3QiIHNlbGVjdD0ibnVt YmVyKHBvc2l0aW9uKCkgPSBsYXN0KCkpIiAvPlx0XHRcdDwveHNsOmNhbGwtdGVt cGxhdGU+XHRcdDwveHNsOmZvci1lYWNoPlx0XHQ8L3VsPlx0PC94c2w6aWY+XHQ8 L2xpPjwveHNsOnRlbXBsYXRlPjwveHNsOnN0eWxlc2hlZXQ+J30sYz1mdW5jdGlv bihhKXtyZXR1cm4gYS50b1N0cmluZygpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5y ZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNl KC8iL2csIiZxdW90OyIpLnJlcGxhY2UoLycvZywiJmFwb3M7Iil9O2EuanN0cmVl LnBsdWdpbigieG1sX2RhdGEiLHtkZWZhdWx0czp7ZGF0YTohMSxhamF4OiExLHhz bDoiZmxhdCIsY2xlYW5fbm9kZTohMSxjb3JyZWN0X3N0YXRlOiEwLGdldF9za2lw X2VtcHR5OiExLGdldF9pbmNsdWRlX3ByZWFtYmxlOiEwfSxfZm46e2xvYWRfbm9k ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczt0aGlzLmxvYWRfbm9kZV94bWwo YSxmdW5jdGlvbigpe2QuX19jYWxsYmFjayh7b2JqOmQuX2dldF9ub2RlKGEpfSks Yi5jYWxsKHRoaXMpfSxjKX0sX2lzX2xvYWRlZDpmdW5jdGlvbihiKXt2YXIgYz10 aGlzLl9nZXRfc2V0dGluZ3MoKS54bWxfZGF0YTtyZXR1cm4gYj10aGlzLl9nZXRf bm9kZShiKSxiPT0tMXx8IWJ8fCFjLmFqYXgmJiFhLmlzRnVuY3Rpb24oYy5kYXRh KXx8Yi5pcygiLmpzdHJlZS1vcGVuLCAuanN0cmVlLWxlYWYiKXx8Yi5jaGlsZHJl bigidWwiKS5jaGlsZHJlbigibGkiKS5zaXplKCk+MH0sbG9hZF9ub2RlX3htbDpm dW5jdGlvbihiLGMsZCl7dmFyIGU9dGhpcy5nZXRfc2V0dGluZ3MoKS54bWxfZGF0 YSxmPWZ1bmN0aW9uKCl7fSxnPWZ1bmN0aW9uKCl7fTtiPXRoaXMuX2dldF9ub2Rl KGIpO2lmKGImJmIhPT0tMSl7aWYoYi5kYXRhKCJqc3RyZWVfaXNfbG9hZGluZyIp KXJldHVybjtiLmRhdGEoImpzdHJlZV9pc19sb2FkaW5nIiwhMCl9c3dpdGNoKCEw KXtjYXNlIWUuZGF0YSYmIWUuYWpheDp0aHJvdyJOZWl0aGVyIGRhdGEgbm9yIGFq YXggc2V0dGluZ3Mgc3VwcGxpZWQuIjtjYXNlIGEuaXNGdW5jdGlvbihlLmRhdGEp OmUuZGF0YS5jYWxsKHRoaXMsYixhLnByb3h5KGZ1bmN0aW9uKGQpe3RoaXMucGFy c2VfeG1sKGQsYS5wcm94eShmdW5jdGlvbihkKXtkJiYoZD1kLnJlcGxhY2UoLyA/ eG1sbnM9IlteIl0qIi9pZywiIiksZC5sZW5ndGg+MTA/KGQ9YShkKSxiPT09LTF8 fCFiP3RoaXMuZ2V0X2NvbnRhaW5lcigpLmNoaWxkcmVuKCJ1bCIpLmVtcHR5KCku YXBwZW5kKGQuY2hpbGRyZW4oKSk6KGIuY2hpbGRyZW4oImEuanN0cmVlLWxvYWRp bmciKS5yZW1vdmVDbGFzcygianN0cmVlLWxvYWRpbmciKSxiLmFwcGVuZChkKSxi LnJlbW92ZURhdGEoImpzdHJlZV9pc19sb2FkaW5nIikpLGUuY2xlYW5fbm9kZSYm dGhpcy5jbGVhbl9ub2RlKGIpLGMmJmMuY2FsbCh0aGlzKSk6YiYmYiE9PS0xPyhi LmNoaWxkcmVuKCJhLmpzdHJlZS1sb2FkaW5nIikucmVtb3ZlQ2xhc3MoImpzdHJl ZS1sb2FkaW5nIiksYi5yZW1vdmVEYXRhKCJqc3RyZWVfaXNfbG9hZGluZyIpLGUu Y29ycmVjdF9zdGF0ZSYmKHRoaXMuY29ycmVjdF9zdGF0ZShiKSxjJiZjLmNhbGwo dGhpcykpKTplLmNvcnJlY3Rfc3RhdGUmJih0aGlzLmdldF9jb250YWluZXIoKS5j aGlsZHJlbigidWwiKS5lbXB0eSgpLGMmJmMuY2FsbCh0aGlzKSkpfSx0aGlzKSl9 LHRoaXMpKTticmVhaztjYXNlISFlLmRhdGEmJiFlLmFqYXh8fCEhZS5kYXRhJiYh IWUuYWpheCYmKCFifHxiPT09LTEpOighYnx8Yj09LTEpJiZ0aGlzLnBhcnNlX3ht bChlLmRhdGEsYS5wcm94eShmdW5jdGlvbihkKXtkPyhkPWQucmVwbGFjZSgvID94 bWxucz0iW14iXSoiL2lnLCIiKSxkLmxlbmd0aD4xMCYmKGQ9YShkKSx0aGlzLmdl dF9jb250YWluZXIoKS5jaGlsZHJlbigidWwiKS5lbXB0eSgpLmFwcGVuZChkLmNo aWxkcmVuKCkpLGUuY2xlYW5fbm9kZSYmdGhpcy5jbGVhbl9ub2RlKGIpLGMmJmMu Y2FsbCh0aGlzKSkpOmUuY29ycmVjdF9zdGF0ZSYmKHRoaXMuZ2V0X2NvbnRhaW5l cigpLmNoaWxkcmVuKCJ1bCIpLmVtcHR5KCksYyYmYy5jYWxsKHRoaXMpKX0sdGhp cykpO2JyZWFrO2Nhc2UhZS5kYXRhJiYhIWUuYWpheHx8ISFlLmRhdGEmJiEhZS5h amF4JiZiJiZiIT09LTE6Zj1mdW5jdGlvbihhLGMsZil7dmFyIGc9dGhpcy5nZXRf c2V0dGluZ3MoKS54bWxfZGF0YS5hamF4LmVycm9yO2cmJmcuY2FsbCh0aGlzLGEs YyxmKSxiIT09LTEmJmIubGVuZ3RoPyhiLmNoaWxkcmVuKCJhLmpzdHJlZS1sb2Fk aW5nIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1sb2FkaW5nIiksYi5yZW1vdmVEYXRh KCJqc3RyZWVfaXNfbG9hZGluZyIpLGM9PT0ic3VjY2VzcyImJmUuY29ycmVjdF9z dGF0ZSYmdGhpcy5jb3JyZWN0X3N0YXRlKGIpKTpjPT09InN1Y2Nlc3MiJiZlLmNv cnJlY3Rfc3RhdGUmJnRoaXMuZ2V0X2NvbnRhaW5lcigpLmNoaWxkcmVuKCJ1bCIp LmVtcHR5KCksZCYmZC5jYWxsKHRoaXMpfSxnPWZ1bmN0aW9uKGQsZyxoKXtkPWgu cmVzcG9uc2VUZXh0O3ZhciBpPXRoaXMuZ2V0X3NldHRpbmdzKCkueG1sX2RhdGEu YWpheC5zdWNjZXNzO2kmJihkPWkuY2FsbCh0aGlzLGQsZyxoKXx8ZCk7aWYoZD09 PSIifHxkJiZkLnRvU3RyaW5nJiZkLnRvU3RyaW5nKCkucmVwbGFjZSgvXltcc1xu XSskLywiIik9PT0iIilyZXR1cm4gZi5jYWxsKHRoaXMsaCxnLCIiKTt0aGlzLnBh cnNlX3htbChkLGEucHJveHkoZnVuY3Rpb24oZCl7ZCYmKGQ9ZC5yZXBsYWNlKC8g P3htbG5zPSJbXiJdKiIvaWcsIiIpLGQubGVuZ3RoPjEwPyhkPWEoZCksYj09PS0x fHwhYj90aGlzLmdldF9jb250YWluZXIoKS5jaGlsZHJlbigidWwiKS5lbXB0eSgp LmFwcGVuZChkLmNoaWxkcmVuKCkpOihiLmNoaWxkcmVuKCJhLmpzdHJlZS1sb2Fk aW5nIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1sb2FkaW5nIiksYi5hcHBlbmQoZCks Yi5yZW1vdmVEYXRhKCJqc3RyZWVfaXNfbG9hZGluZyIpKSxlLmNsZWFuX25vZGUm JnRoaXMuY2xlYW5fbm9kZShiKSxjJiZjLmNhbGwodGhpcykpOmImJmIhPT0tMT8o Yi5jaGlsZHJlbigiYS5qc3RyZWUtbG9hZGluZyIpLnJlbW92ZUNsYXNzKCJqc3Ry ZWUtbG9hZGluZyIpLGIucmVtb3ZlRGF0YSgianN0cmVlX2lzX2xvYWRpbmciKSxl LmNvcnJlY3Rfc3RhdGUmJih0aGlzLmNvcnJlY3Rfc3RhdGUoYiksYyYmYy5jYWxs KHRoaXMpKSk6ZS5jb3JyZWN0X3N0YXRlJiYodGhpcy5nZXRfY29udGFpbmVyKCku Y2hpbGRyZW4oInVsIikuZW1wdHkoKSxjJiZjLmNhbGwodGhpcykpKX0sdGhpcykp fSxlLmFqYXguY29udGV4dD10aGlzLGUuYWpheC5lcnJvcj1mLGUuYWpheC5zdWNj ZXNzPWcsZS5hamF4LmRhdGFUeXBlfHwoZS5hamF4LmRhdGFUeXBlPSJ4bWwiKSxh LmlzRnVuY3Rpb24oZS5hamF4LnVybCkmJihlLmFqYXgudXJsPWUuYWpheC51cmwu Y2FsbCh0aGlzLGIpKSxhLmlzRnVuY3Rpb24oZS5hamF4LmRhdGEpJiYoZS5hamF4 LmRhdGE9ZS5hamF4LmRhdGEuY2FsbCh0aGlzLGIpKSxhLmFqYXgoZS5hamF4KX19 LHBhcnNlX3htbDpmdW5jdGlvbihjLGQpe3ZhciBlPXRoaXMuX2dldF9zZXR0aW5n cygpLnhtbF9kYXRhO2EudmFrYXRhLnhzbHQoYyxiW2UueHNsXSxkKX0sZ2V0X3ht bDpmdW5jdGlvbihiLGQsZSxmLGcpe3ZhciBoPSIiLGk9dGhpcy5fZ2V0X3NldHRp bmdzKCksaj10aGlzLGssbCxtLG4sbztifHwoYj0iZmxhdCIpLGd8fChnPTApLGQ9 dGhpcy5fZ2V0X25vZGUoZCk7aWYoIWR8fGQ9PT0tMSlkPXRoaXMuZ2V0X2NvbnRh aW5lcigpLmZpbmQoIj4gdWwgPiBsaSIpO3JldHVybiBlPWEuaXNBcnJheShlKT9l OlsiaWQiLCJjbGFzcyJdLCFnJiZ0aGlzLmRhdGEudHlwZXMmJmEuaW5BcnJheShp LnR5cGVzLnR5cGVfYXR0cixlKT09PS0xJiZlLnB1c2goaS50eXBlcy50eXBlX2F0 dHIpLGY9YS5pc0FycmF5KGYpP2Y6W10sZ3x8KGkueG1sX2RhdGEuZ2V0X2luY2x1 ZGVfcHJlYW1ibGUmJihoKz0nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i VVRGLTgiPz4nKSxoKz0iPHJvb3Q+IiksZC5lYWNoKGZ1bmN0aW9uKCl7aCs9Ijxp dGVtIixtPWEodGhpcyksYS5lYWNoKGUsZnVuY3Rpb24oYSxiKXt2YXIgZD1tLmF0 dHIoYik7aWYoIWkueG1sX2RhdGEuZ2V0X3NraXBfZW1wdHl8fHR5cGVvZiBkIT0i dW5kZWZpbmVkIiloKz0iICIrYisnPSInK2MoKCIgIisoZHx8IiIpKS5yZXBsYWNl KC8ganN0cmVlW14gXSovaWcsIiIpLnJlcGxhY2UoL1xzKyQvaWcsIiAiKS5yZXBs YWNlKC9eIC8sIiIpLnJlcGxhY2UoLyAkLywiIikpKyciJ30pLG0uaGFzQ2xhc3Mo ImpzdHJlZS1vcGVuIikmJihoKz0nIHN0YXRlPSJvcGVuIicpLG0uaGFzQ2xhc3Mo ImpzdHJlZS1jbG9zZWQiKSYmKGgrPScgc3RhdGU9ImNsb3NlZCInKSxiPT09ImZs YXQiJiYoaCs9JyBwYXJlbnRfaWQ9IicrYyhnKSsnIicpLGgrPSI+IixoKz0iPGNv bnRlbnQ+IixuPW0uY2hpbGRyZW4oImEiKSxuLmVhY2goZnVuY3Rpb24oKXtrPWEo dGhpcyksbz0hMSxoKz0iPG5hbWUiLGEuaW5BcnJheSgibGFuZ3VhZ2VzIixpLnBs dWdpbnMpIT09LTEmJmEuZWFjaChpLmxhbmd1YWdlcyxmdW5jdGlvbihhLGIpe2lm KGsuaGFzQ2xhc3MoYikpcmV0dXJuIGgrPScgbGFuZz0iJytjKGIpKyciJyxvPWIs ITF9KSxmLmxlbmd0aCYmYS5lYWNoKGYsZnVuY3Rpb24oYSxiKXt2YXIgZD1rLmF0 dHIoYik7aWYoIWkueG1sX2RhdGEuZ2V0X3NraXBfZW1wdHl8fHR5cGVvZiBkIT0i dW5kZWZpbmVkIiloKz0iICIrYisnPSInK2MoKCIgIitkfHwiIikucmVwbGFjZSgv IGpzdHJlZVteIF0qL2lnLCIiKS5yZXBsYWNlKC9ccyskL2lnLCIgIikucmVwbGFj ZSgvXiAvLCIiKS5yZXBsYWNlKC8gJC8sIiIpKSsnIid9KSxrLmNoaWxkcmVuKCJp bnMiKS5nZXQoMCkuY2xhc3NOYW1lLnJlcGxhY2UoL2pzdHJlZVteIF0qfCQvaWcs IiIpLnJlcGxhY2UoL15ccyskL2lnLCIiKS5sZW5ndGgmJihoKz0nIGljb249Iicr YyhrLmNoaWxkcmVuKCJpbnMiKS5nZXQoMCkuY2xhc3NOYW1lLnJlcGxhY2UoL2pz dHJlZVteIF0qfCQvaWcsIiIpLnJlcGxhY2UoL1xzKyQvaWcsIiAiKS5yZXBsYWNl KC9eIC8sIiIpLnJlcGxhY2UoLyAkLywiIikpKyciJyksay5jaGlsZHJlbigiaW5z IikuZ2V0KDApLnN0eWxlLmJhY2tncm91bmRJbWFnZS5sZW5ndGgmJihoKz0nIGlj b249IicrYyhrLmNoaWxkcmVuKCJpbnMiKS5nZXQoMCkuc3R5bGUuYmFja2dyb3Vu ZEltYWdlLnJlcGxhY2UoInVybCgiLCIiKS5yZXBsYWNlKCIpIiwiIikucmVwbGFj ZSgvJy9pZywiIikucmVwbGFjZSgvIi9pZywiIikpKyciJyksaCs9Ij4iLGgrPSI8 IVtDREFUQVsiK2ouZ2V0X3RleHQoayxvKSsiXV0+IixoKz0iPC9uYW1lPiJ9KSxo Kz0iPC9jb250ZW50PiIsbD1tWzBdLmlkfHwhMCxtPW0uZmluZCgiPiB1bCA+IGxp IiksbS5sZW5ndGg/bD1qLmdldF94bWwoYixtLGUsZixsKTpsPSIiLGI9PSJuZXN0 IiYmKGgrPWwpLGgrPSI8L2l0ZW0+IixiPT0iZmxhdCImJihoKz1sKX0pLGd8fCho Kz0iPC9yb290PiIpLGh9fX0pfShqUXVlcnkpLGZ1bmN0aW9uKGEpe2EuZXhwclsi OiJdLmpzdHJlZV9jb250YWlucz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKGEudGV4 dENvbnRlbnR8fGEuaW5uZXJUZXh0fHwiIikudG9Mb3dlckNhc2UoKS5pbmRleE9m KGNbM10udG9Mb3dlckNhc2UoKSk+PTB9LGEuZXhwclsiOiJdLmpzdHJlZV90aXRs ZV9jb250YWlucz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKGEuZ2V0QXR0cmlidXRl KCJ0aXRsZSIpfHwiIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKGNbM10udG9Mb3dl ckNhc2UoKSk+PTB9LGEuanN0cmVlLnBsdWdpbigic2VhcmNoIix7X19pbml0OmZ1 bmN0aW9uKCl7dGhpcy5kYXRhLnNlYXJjaC5zdHI9IiIsdGhpcy5kYXRhLnNlYXJj aC5yZXN1bHQ9YSgpLHRoaXMuX2dldF9zZXR0aW5ncygpLnNlYXJjaC5zaG93X29u bHlfbWF0Y2hlcyYmdGhpcy5nZXRfY29udGFpbmVyKCkuYmluZCgic2VhcmNoLmpz dHJlZSIsZnVuY3Rpb24oYixjKXthKHRoaXMpLmNoaWxkcmVuKCJ1bCIpLmZpbmQo ImxpIikuaGlkZSgpLnJlbW92ZUNsYXNzKCJqc3RyZWUtbGFzdCIpLGMucnNsdC5u b2Rlcy5wYXJlbnRzVW50aWwoIi5qc3RyZWUiKS5hbmRTZWxmKCkuc2hvdygpLmZp bHRlcigidWwiKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5jaGlsZHJlbigibGk6 dmlzaWJsZSIpLmVxKC0xKS5hZGRDbGFzcygianN0cmVlLWxhc3QiKX0pfSkuYmlu ZCgiY2xlYXJfc2VhcmNoLmpzdHJlZSIsZnVuY3Rpb24oKXthKHRoaXMpLmNoaWxk cmVuKCJ1bCIpLmZpbmQoImxpIikuY3NzKCJkaXNwbGF5IiwiIikuZW5kKCkuZW5k KCkuanN0cmVlKCJjbGVhbl9ub2RlIiwtMSl9KX0sZGVmYXVsdHM6e2FqYXg6ITEs c2VhcmNoX21ldGhvZDoianN0cmVlX2NvbnRhaW5zIixzaG93X29ubHlfbWF0Y2hl czohMX0sX2ZuOntzZWFyY2g6ZnVuY3Rpb24oYixjKXtpZihhLnRyaW0oYik9PT0i Iil7dGhpcy5jbGVhcl9zZWFyY2goKTtyZXR1cm59dmFyIGQ9dGhpcy5nZXRfc2V0 dGluZ3MoKS5zZWFyY2gsZT10aGlzLGY9ZnVuY3Rpb24oKXt9LGc9ZnVuY3Rpb24o KXt9O3RoaXMuZGF0YS5zZWFyY2guc3RyPWI7aWYoIWMmJmQuYWpheCE9PSExJiZ0 aGlzLmdldF9jb250YWluZXJfdWwoKS5maW5kKCJsaS5qc3RyZWUtY2xvc2VkOm5v dCg6aGFzKHVsKSk6ZXEoMCkiKS5sZW5ndGg+MCl7dGhpcy5zZWFyY2guc3VwcmVz c19jYWxsYmFjaz0hMCxmPWZ1bmN0aW9uKCl7fSxnPWZ1bmN0aW9uKGEsYixjKXt2 YXIgZD10aGlzLmdldF9zZXR0aW5ncygpLnNlYXJjaC5hamF4LnN1Y2Nlc3M7ZCYm KGE9ZC5jYWxsKHRoaXMsYSxiLGMpfHxhKSx0aGlzLmRhdGEuc2VhcmNoLnRvX29w ZW49YSx0aGlzLl9zZWFyY2hfb3BlbigpfSxkLmFqYXguY29udGV4dD10aGlzLGQu YWpheC5lcnJvcj1mLGQuYWpheC5zdWNjZXNzPWcsYS5pc0Z1bmN0aW9uKGQuYWph eC51cmwpJiYoZC5hamF4LnVybD1kLmFqYXgudXJsLmNhbGwodGhpcyxiKSksYS5p c0Z1bmN0aW9uKGQuYWpheC5kYXRhKSYmKGQuYWpheC5kYXRhPWQuYWpheC5kYXRh LmNhbGwodGhpcyxiKSksZC5hamF4LmRhdGF8fChkLmFqYXguZGF0YT17c2VhcmNo X3N0cmluZzpifSk7aWYoIWQuYWpheC5kYXRhVHlwZXx8L15qc29uLy5leGVjKGQu YWpheC5kYXRhVHlwZSkpZC5hamF4LmRhdGFUeXBlPSJqc29uIjthLmFqYXgoZC5h amF4KTtyZXR1cm59dGhpcy5kYXRhLnNlYXJjaC5yZXN1bHQubGVuZ3RoJiZ0aGlz LmNsZWFyX3NlYXJjaCgpLHRoaXMuZGF0YS5zZWFyY2gucmVzdWx0PXRoaXMuZ2V0 X2NvbnRhaW5lcigpLmZpbmQoImEiKyh0aGlzLmRhdGEubGFuZ3VhZ2VzPyIuIit0 aGlzLmdldF9sYW5nKCk6IiIpKyI6IitkLnNlYXJjaF9tZXRob2QrIigiK3RoaXMu ZGF0YS5zZWFyY2guc3RyKyIpIiksdGhpcy5kYXRhLnNlYXJjaC5yZXN1bHQuYWRk Q2xhc3MoImpzdHJlZS1zZWFyY2giKS5wYXJlbnQoKS5wYXJlbnRzKCIuanN0cmVl LWNsb3NlZCIpLmVhY2goZnVuY3Rpb24oKXtlLm9wZW5fbm9kZSh0aGlzLCExLCEw KX0pLHRoaXMuX19jYWxsYmFjayh7bm9kZXM6dGhpcy5kYXRhLnNlYXJjaC5yZXN1 bHQsc3RyOmJ9KX0sY2xlYXJfc2VhcmNoOmZ1bmN0aW9uKGIpe3RoaXMuZGF0YS5z ZWFyY2gucmVzdWx0LnJlbW92ZUNsYXNzKCJqc3RyZWUtc2VhcmNoIiksdGhpcy5f X2NhbGxiYWNrKHRoaXMuZGF0YS5zZWFyY2gucmVzdWx0KSx0aGlzLmRhdGEuc2Vh cmNoLnJlc3VsdD1hKCl9LF9zZWFyY2hfb3BlbjpmdW5jdGlvbihiKXt2YXIgYz10 aGlzLGQ9ITAsZT1bXSxmPVtdO3RoaXMuZGF0YS5zZWFyY2gudG9fb3Blbi5sZW5n dGgmJihhLmVhY2godGhpcy5kYXRhLnNlYXJjaC50b19vcGVuLGZ1bmN0aW9uKGIs Yyl7aWYoYz09IiMiKXJldHVybiEwO2EoYykubGVuZ3RoJiZhKGMpLmlzKCIuanN0 cmVlLWNsb3NlZCIpP2UucHVzaChjKTpmLnB1c2goYyl9KSxlLmxlbmd0aCYmKHRo aXMuZGF0YS5zZWFyY2gudG9fb3Blbj1mLGEuZWFjaChlLGZ1bmN0aW9uKGEsYil7 Yy5vcGVuX25vZGUoYixmdW5jdGlvbigpe2MuX3NlYXJjaF9vcGVuKCEwKX0pfSks ZD0hMSkpLGQmJnRoaXMuc2VhcmNoKHRoaXMuZGF0YS5zZWFyY2guc3RyLCEwKX19 fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS52YWthdGEuY29udGV4dD17aGlkZV9v bl9tb3VzZWxlYXZlOiExLGNudDphKCI8ZGl2IGlkPSd2YWthdGEtY29udGV4dG1l bnUnIC8+IiksdmlzOiExLHRndDohMSxwYXI6ITEsZnVuYzohMSxkYXRhOiExLHJ0 bDohMSxzaG93OmZ1bmN0aW9uKGIsYyxkLGUsZixnLGgpe2EudmFrYXRhLmNvbnRl eHQucnRsPSEhaDt2YXIgaT1hLnZha2F0YS5jb250ZXh0LnBhcnNlKGIpLGosaztp ZighaSlyZXR1cm47YS52YWthdGEuY29udGV4dC52aXM9ITAsYS52YWthdGEuY29u dGV4dC50Z3Q9YyxhLnZha2F0YS5jb250ZXh0LnBhcj1nfHxjfHxudWxsLGEudmFr YXRhLmNvbnRleHQuZGF0YT1mfHxudWxsLGEudmFrYXRhLmNvbnRleHQuY250Lmh0 bWwoaSkuY3NzKHt2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIixs ZWZ0OjAsdG9wOjB9KSxhLnZha2F0YS5jb250ZXh0LmhpZGVfb25fbW91c2VsZWF2 ZSYmYS52YWthdGEuY29udGV4dC5jbnQub25lKCJtb3VzZWxlYXZlIixmdW5jdGlv bihiKXthLnZha2F0YS5jb250ZXh0LmhpZGUoKX0pLGo9YS52YWthdGEuY29udGV4 dC5jbnQuaGVpZ2h0KCksaz1hLnZha2F0YS5jb250ZXh0LmNudC53aWR0aCgpLGQr az5hKGRvY3VtZW50KS53aWR0aCgpJiYoZD1hKGRvY3VtZW50KS53aWR0aCgpLShr KzUpLGEudmFrYXRhLmNvbnRleHQuY250LmZpbmQoImxpID4gdWwiKS5hZGRDbGFz cygicmlnaHQiKSksZStqPmEoZG9jdW1lbnQpLmhlaWdodCgpJiYoZS09aitjWzBd Lm9mZnNldEhlaWdodCxhLnZha2F0YS5jb250ZXh0LmNudC5maW5kKCJsaSA+IHVs IikuYWRkQ2xhc3MoImJvdHRvbSIpKSxhLnZha2F0YS5jb250ZXh0LmNudC5jc3Mo e2xlZnQ6ZCx0b3A6ZX0pLmZpbmQoImxpOmhhcyh1bCkiKS5iaW5kKCJtb3VzZWVu dGVyIixmdW5jdGlvbihiKXt2YXIgYz1hKGRvY3VtZW50KS53aWR0aCgpLGQ9YShk b2N1bWVudCkuaGVpZ2h0KCksZT1hKHRoaXMpLmNoaWxkcmVuKCJ1bCIpLnNob3co KTtjIT09YShkb2N1bWVudCkud2lkdGgoKSYmZS50b2dnbGVDbGFzcygicmlnaHQi KSxkIT09YShkb2N1bWVudCkuaGVpZ2h0KCkmJmUudG9nZ2xlQ2xhc3MoImJvdHRv bSIpfSkuYmluZCgibW91c2VsZWF2ZSIsZnVuY3Rpb24oYil7YSh0aGlzKS5jaGls ZHJlbigidWwiKS5oaWRlKCl9KS5lbmQoKS5jc3Moe3Zpc2liaWxpdHk6InZpc2li bGUifSkuc2hvdygpLGEoZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJjb250ZXh0 X3Nob3cudmFrYXRhIil9LGhpZGU6ZnVuY3Rpb24oKXthLnZha2F0YS5jb250ZXh0 LnZpcz0hMSxhLnZha2F0YS5jb250ZXh0LmNudC5hdHRyKCJjbGFzcyIsIiIpLmNz cyh7dmlzaWJpbGl0eToiaGlkZGVuIn0pLGEoZG9jdW1lbnQpLnRyaWdnZXJIYW5k bGVyKCJjb250ZXh0X2hpZGUudmFrYXRhIil9LHBhcnNlOmZ1bmN0aW9uKGIsYyl7 aWYoIWIpcmV0dXJuITE7dmFyIGQ9IiIsZT0hMSxmPSEwO3JldHVybiBjfHwoYS52 YWthdGEuY29udGV4dC5mdW5jPXt9KSxkKz0iPHVsPiIsYS5lYWNoKGIsZnVuY3Rp b24oYixjKXtpZighYylyZXR1cm4hMDthLnZha2F0YS5jb250ZXh0LmZ1bmNbYl09 Yy5hY3Rpb24sIWYmJmMuc2VwYXJhdG9yX2JlZm9yZSYmKGQrPSI8bGkgY2xhc3M9 J3Zha2F0YS1zZXBhcmF0b3IgdmFrYXRhLXNlcGFyYXRvci1iZWZvcmUnPjwvbGk+ IiksZj0hMSxkKz0iPGxpIGNsYXNzPSciKyhjLl9jbGFzc3x8IiIpKyhjLl9kaXNh YmxlZD8iIGpzdHJlZS1jb250ZXh0bWVudS1kaXNhYmxlZCAiOiIiKSsiJz48aW5z ICIsYy5pY29uJiZjLmljb24uaW5kZXhPZigiLyIpPT09LTEmJihkKz0iIGNsYXNz PSciK2MuaWNvbisiJyAiKSxjLmljb24mJmMuaWNvbi5pbmRleE9mKCIvIikhPT0t MSYmKGQrPSIgc3R5bGU9J2JhY2tncm91bmQ6dXJsKCIrYy5pY29uKyIpIGNlbnRl ciBjZW50ZXIgbm8tcmVwZWF0OycgIiksZCs9Ij4mIzE2MDs8L2lucz48YSBocmVm PScjJyByZWw9JyIrYisiJz4iLGMuc3VibWVudSYmKGQrPSI8c3BhbiBzdHlsZT0n ZmxvYXQ6IisoYS52YWthdGEuY29udGV4dC5ydGw/ImxlZnQiOiJyaWdodCIpKyI7 Jz4mcmFxdW87PC9zcGFuPiIpLGQrPWMubGFiZWwrIjwvYT4iLGMuc3VibWVudSYm KGU9YS52YWthdGEuY29udGV4dC5wYXJzZShjLnN1Ym1lbnUsITApLGUmJihkKz1l KSksZCs9IjwvbGk+IixjLnNlcGFyYXRvcl9hZnRlciYmKGQrPSI8bGkgY2xhc3M9 J3Zha2F0YS1zZXBhcmF0b3IgdmFrYXRhLXNlcGFyYXRvci1hZnRlcic+PC9saT4i LGY9ITApfSksZD1kLnJlcGxhY2UoLzxsaSBjbGFzc1w9J3Zha2F0YS1zZXBhcmF0 b3IgdmFrYXRhLXNlcGFyYXRvci1hZnRlcidcPjxcL2xpXD4kLywiIiksZCs9Ijwv dWw+IixhKGRvY3VtZW50KS50cmlnZ2VySGFuZGxlcigiY29udGV4dF9wYXJzZS52 YWthdGEiKSxkLmxlbmd0aD4xMD9kOiExfSxleGVjOmZ1bmN0aW9uKGIpe3JldHVy biBhLmlzRnVuY3Rpb24oYS52YWthdGEuY29udGV4dC5mdW5jW2JdKT8oYS52YWth dGEuY29udGV4dC5mdW5jW2JdLmNhbGwoYS52YWthdGEuY29udGV4dC5kYXRhLGEu dmFrYXRhLmNvbnRleHQucGFyKSwhMCk6ITF9fSxhKGZ1bmN0aW9uKCl7dmFyIGI9 IiN2YWthdGEtY29udGV4dG1lbnUgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5 OmhpZGRlbjsgbGVmdDowOyB0b3A6LTIwMHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsg bWFyZ2luOjA7IHBhZGRpbmc6MDsgbWluLXdpZHRoOjE4MHB4OyBiYWNrZ3JvdW5k OiNlYmViZWI7IGJvcmRlcjoxcHggc29saWQgc2lsdmVyOyB6LWluZGV4OjEwMDAw OyAqd2lkdGg6MTgwcHg7IH0gI3Zha2F0YS1jb250ZXh0bWVudSB1bCB7IG1pbi13 aWR0aDoxODBweDsgKndpZHRoOjE4MHB4OyB9ICN2YWthdGEtY29udGV4dG1lbnUg dWwsICN2YWthdGEtY29udGV4dG1lbnUgbGkgeyBtYXJnaW46MDsgcGFkZGluZzow OyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgZGlzcGxheTpibG9jazsgfSAjdmFrYXRh LWNvbnRleHRtZW51IGxpIHsgbGluZS1oZWlnaHQ6MjBweDsgbWluLWhlaWdodDoy MHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgcGFkZGluZzowcHg7IH0gI3Zha2F0YS1j b250ZXh0bWVudSBsaSBhIHsgcGFkZGluZzoxcHggNnB4OyBsaW5lLWhlaWdodDox N3B4OyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2lu OjFweCAxcHggMCAxcHg7IH0gI3Zha2F0YS1jb250ZXh0bWVudSBsaSBpbnMgeyBm bG9hdDpsZWZ0OyB3aWR0aDoxNnB4OyBoZWlnaHQ6MTZweDsgdGV4dC1kZWNvcmF0 aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoycHg7IH0gI3Zha2F0YS1jb250ZXh0bWVu dSBsaSBhOmhvdmVyLCAjdmFrYXRhLWNvbnRleHRtZW51IGxpLnZha2F0YS1ob3Zl ciA+IGEgeyBiYWNrZ3JvdW5kOmdyYXk7IGNvbG9yOndoaXRlOyB9ICN2YWthdGEt Y29udGV4dG1lbnUgbGkgdWwgeyBkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmFic29s dXRlOyB0b3A6LTJweDsgbGVmdDoxMDAlOyBiYWNrZ3JvdW5kOiNlYmViZWI7IGJv cmRlcjoxcHggc29saWQgZ3JheTsgfSAjdmFrYXRhLWNvbnRleHRtZW51IC5yaWdo dCB7IHJpZ2h0OjEwMCU7IGxlZnQ6YXV0bzsgfSAjdmFrYXRhLWNvbnRleHRtZW51 IC5ib3R0b20geyBib3R0b206LTFweDsgdG9wOmF1dG87IH0gI3Zha2F0YS1jb250 ZXh0bWVudSBsaS52YWthdGEtc2VwYXJhdG9yIHsgbWluLWhlaWdodDowOyBoZWln aHQ6MXB4OyBsaW5lLWhlaWdodDoxcHg7IGZvbnQtc2l6ZToxcHg7IG92ZXJmbG93 OmhpZGRlbjsgbWFyZ2luOjAgMnB4OyBiYWNrZ3JvdW5kOnNpbHZlcjsgLyogYm9y ZGVyLXRvcDoxcHggc29saWQgI2ZlZmVmZTsgKi8gcGFkZGluZzowOyB9ICI7YS52 YWthdGEuY3NzLmFkZF9zaGVldCh7c3RyOmIsdGl0bGU6InZha2F0YSJ9KSxhLnZh a2F0YS5jb250ZXh0LmNudC5kZWxlZ2F0ZSgiYSIsImNsaWNrIixmdW5jdGlvbihh KXthLnByZXZlbnREZWZhdWx0KCl9KS5kZWxlZ2F0ZSgiYSIsIm1vdXNldXAiLGZ1 bmN0aW9uKGIpeyFhKHRoaXMpLnBhcmVudCgpLmhhc0NsYXNzKCJqc3RyZWUtY29u dGV4dG1lbnUtZGlzYWJsZWQiKSYmYS52YWthdGEuY29udGV4dC5leGVjKGEodGhp cykuYXR0cigicmVsIikpP2EudmFrYXRhLmNvbnRleHQuaGlkZSgpOmEodGhpcyku Ymx1cigpfSkuZGVsZWdhdGUoImEiLCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7YS52 YWthdGEuY29udGV4dC5jbnQuZmluZCgiLnZha2F0YS1ob3ZlciIpLnJlbW92ZUNs YXNzKCJ2YWthdGEtaG92ZXIiKX0pLmFwcGVuZFRvKCJib2R5IiksYShkb2N1bWVu dCkuYmluZCgibW91c2Vkb3duIixmdW5jdGlvbihiKXthLnZha2F0YS5jb250ZXh0 LnZpcyYmIWEuY29udGFpbnMoYS52YWthdGEuY29udGV4dC5jbnRbMF0sYi50YXJn ZXQpJiZhLnZha2F0YS5jb250ZXh0LmhpZGUoKX0pLHR5cGVvZiBhLmhvdGtleXMh PSJ1bmRlZmluZWQiJiZhKGRvY3VtZW50KS5iaW5kKCJrZXlkb3duIiwidXAiLGZ1 bmN0aW9uKGIpe2lmKGEudmFrYXRhLmNvbnRleHQudmlzKXt2YXIgYz1hLnZha2F0 YS5jb250ZXh0LmNudC5maW5kKCJ1bDp2aXNpYmxlIikubGFzdCgpLmNoaWxkcmVu KCIudmFrYXRhLWhvdmVyIikucmVtb3ZlQ2xhc3MoInZha2F0YS1ob3ZlciIpLnBy ZXZBbGwoImxpOm5vdCgudmFrYXRhLXNlcGFyYXRvcikiKS5maXJzdCgpO2MubGVu Z3RofHwoYz1hLnZha2F0YS5jb250ZXh0LmNudC5maW5kKCJ1bDp2aXNpYmxlIiku bGFzdCgpLmNoaWxkcmVuKCJsaTpub3QoLnZha2F0YS1zZXBhcmF0b3IpIikubGFz dCgpKSxjLmFkZENsYXNzKCJ2YWthdGEtaG92ZXIiKSxiLnN0b3BJbW1lZGlhdGVQ cm9wYWdhdGlvbigpLGIucHJldmVudERlZmF1bHQoKX19KS5iaW5kKCJrZXlkb3du IiwiZG93biIsZnVuY3Rpb24oYil7aWYoYS52YWthdGEuY29udGV4dC52aXMpe3Zh ciBjPWEudmFrYXRhLmNvbnRleHQuY250LmZpbmQoInVsOnZpc2libGUiKS5sYXN0 KCkuY2hpbGRyZW4oIi52YWthdGEtaG92ZXIiKS5yZW1vdmVDbGFzcygidmFrYXRh LWhvdmVyIikubmV4dEFsbCgibGk6bm90KC52YWthdGEtc2VwYXJhdG9yKSIpLmZp cnN0KCk7Yy5sZW5ndGh8fChjPWEudmFrYXRhLmNvbnRleHQuY250LmZpbmQoInVs OnZpc2libGUiKS5sYXN0KCkuY2hpbGRyZW4oImxpOm5vdCgudmFrYXRhLXNlcGFy YXRvcikiKS5maXJzdCgpKSxjLmFkZENsYXNzKCJ2YWthdGEtaG92ZXIiKSxiLnN0 b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGIucHJldmVudERlZmF1bHQoKX19KS5i aW5kKCJrZXlkb3duIiwicmlnaHQiLGZ1bmN0aW9uKGIpe2EudmFrYXRhLmNvbnRl eHQudmlzJiYoYS52YWthdGEuY29udGV4dC5jbnQuZmluZCgiLnZha2F0YS1ob3Zl ciIpLmNoaWxkcmVuKCJ1bCIpLnNob3coKS5jaGlsZHJlbigibGk6bm90KC52YWth dGEtc2VwYXJhdG9yKSIpLnJlbW92ZUNsYXNzKCJ2YWthdGEtaG92ZXIiKS5maXJz dCgpLmFkZENsYXNzKCJ2YWthdGEtaG92ZXIiKSxiLnN0b3BJbW1lZGlhdGVQcm9w YWdhdGlvbigpLGIucHJldmVudERlZmF1bHQoKSl9KS5iaW5kKCJrZXlkb3duIiwi bGVmdCIsZnVuY3Rpb24oYil7YS52YWthdGEuY29udGV4dC52aXMmJihhLnZha2F0 YS5jb250ZXh0LmNudC5maW5kKCIudmFrYXRhLWhvdmVyIikuY2hpbGRyZW4oInVs IikuaGlkZSgpLmNoaWxkcmVuKCIudmFrYXRhLXNlcGFyYXRvciIpLnJlbW92ZUNs YXNzKCJ2YWthdGEtaG92ZXIiKSxiLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigp LGIucHJldmVudERlZmF1bHQoKSl9KS5iaW5kKCJrZXlkb3duIiwiZXNjIixmdW5j dGlvbihiKXthLnZha2F0YS5jb250ZXh0LmhpZGUoKSxiLnByZXZlbnREZWZhdWx0 KCl9KS5iaW5kKCJrZXlkb3duIiwic3BhY2UiLGZ1bmN0aW9uKGIpe2EudmFrYXRh LmNvbnRleHQuY250LmZpbmQoIi52YWthdGEtaG92ZXIiKS5sYXN0KCkuY2hpbGRy ZW4oImEiKS5jbGljaygpLGIucHJldmVudERlZmF1bHQoKX0pfSksYS5qc3RyZWUu cGx1Z2luKCJjb250ZXh0bWVudSIse19faW5pdDpmdW5jdGlvbigpe3RoaXMuZ2V0 X2NvbnRhaW5lcigpLmRlbGVnYXRlKCJhIiwiY29udGV4dG1lbnUuanN0cmVlIixh LnByb3h5KGZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKSxhKGIuY3VycmVu dFRhcmdldCkuaGFzQ2xhc3MoImpzdHJlZS1sb2FkaW5nIil8fHRoaXMuc2hvd19j b250ZXh0bWVudShiLmN1cnJlbnRUYXJnZXQsYi5wYWdlWCxiLnBhZ2VZKX0sdGhp cykpLmRlbGVnYXRlKCJhIiwiY2xpY2suanN0cmVlIixhLnByb3h5KGZ1bmN0aW9u KGIpe3RoaXMuZGF0YS5jb250ZXh0bWVudSYmYS52YWthdGEuY29udGV4dC5oaWRl KCl9LHRoaXMpKS5iaW5kKCJkZXN0cm95LmpzdHJlZSIsYS5wcm94eShmdW5jdGlv bigpe3RoaXMuZGF0YS5jb250ZXh0bWVudSYmYS52YWthdGEuY29udGV4dC5oaWRl KCl9LHRoaXMpKSxhKGRvY3VtZW50KS5iaW5kKCJjb250ZXh0X2hpZGUudmFrYXRh IixhLnByb3h5KGZ1bmN0aW9uKCl7dGhpcy5kYXRhLmNvbnRleHRtZW51PSExfSx0 aGlzKSl9LGRlZmF1bHRzOntzZWxlY3Rfbm9kZTohMSxzaG93X2F0X25vZGU6ITAs aXRlbXM6e2NyZWF0ZTp7c2VwYXJhdG9yX2JlZm9yZTohMSxzZXBhcmF0b3JfYWZ0 ZXI6ITAsbGFiZWw6IkNyZWF0ZSIsYWN0aW9uOmZ1bmN0aW9uKGEpe3RoaXMuY3Jl YXRlKGEpfX0scmVuYW1lOntzZXBhcmF0b3JfYmVmb3JlOiExLHNlcGFyYXRvcl9h ZnRlcjohMSxsYWJlbDoiUmVuYW1lIixhY3Rpb246ZnVuY3Rpb24oYSl7dGhpcy5y ZW5hbWUoYSl9fSxyZW1vdmU6e3NlcGFyYXRvcl9iZWZvcmU6ITEsaWNvbjohMSxz ZXBhcmF0b3JfYWZ0ZXI6ITEsbGFiZWw6IkRlbGV0ZSIsYWN0aW9uOmZ1bmN0aW9u KGEpe3RoaXMuaXNfc2VsZWN0ZWQoYSk/dGhpcy5yZW1vdmUoKTp0aGlzLnJlbW92 ZShhKX19LGNjcDp7c2VwYXJhdG9yX2JlZm9yZTohMCxpY29uOiExLHNlcGFyYXRv cl9hZnRlcjohMSxsYWJlbDoiRWRpdCIsYWN0aW9uOiExLHN1Ym1lbnU6e2N1dDp7 c2VwYXJhdG9yX2JlZm9yZTohMSxzZXBhcmF0b3JfYWZ0ZXI6ITEsbGFiZWw6IkN1 dCIsYWN0aW9uOmZ1bmN0aW9uKGEpe3RoaXMuY3V0KGEpfX0sY29weTp7c2VwYXJh dG9yX2JlZm9yZTohMSxpY29uOiExLHNlcGFyYXRvcl9hZnRlcjohMSxsYWJlbDoi Q29weSIsYWN0aW9uOmZ1bmN0aW9uKGEpe3RoaXMuY29weShhKX19LHBhc3RlOntz ZXBhcmF0b3JfYmVmb3JlOiExLGljb246ITEsc2VwYXJhdG9yX2FmdGVyOiExLGxh YmVsOiJQYXN0ZSIsYWN0aW9uOmZ1bmN0aW9uKGEpe3RoaXMucGFzdGUoYSl9fX19 fX0sX2ZuOntzaG93X2NvbnRleHRtZW51OmZ1bmN0aW9uKGIsYyxkKXtiPXRoaXMu X2dldF9ub2RlKGIpO3ZhciBlPXRoaXMuZ2V0X3NldHRpbmdzKCkuY29udGV4dG1l bnUsZj1iLmNoaWxkcmVuKCJhOnZpc2libGU6ZXEoMCkiKSxnPSExLGg9ITE7ZS5z ZWxlY3Rfbm9kZSYmdGhpcy5kYXRhLnVpJiYhdGhpcy5pc19zZWxlY3RlZChiKSYm KHRoaXMuZGVzZWxlY3RfYWxsKCksdGhpcy5zZWxlY3Rfbm9kZShiLCEwKSk7aWYo ZS5zaG93X2F0X25vZGV8fHR5cGVvZiBjPT0idW5kZWZpbmVkInx8dHlwZW9mIGQ9 PSJ1bmRlZmluZWQiKWc9Zi5vZmZzZXQoKSxjPWcubGVmdCxkPWcudG9wK3RoaXMu ZGF0YS5jb3JlLmxpX2hlaWdodDtoPWIuZGF0YSgianN0cmVlIikmJmIuZGF0YSgi anN0cmVlIikuY29udGV4dG1lbnU/Yi5kYXRhKCJqc3RyZWUiKS5jb250ZXh0bWVu dTplLml0ZW1zLGEuaXNGdW5jdGlvbihoKSYmKGg9aC5jYWxsKHRoaXMsYikpLHRo aXMuZGF0YS5jb250ZXh0bWVudT0hMCxhLnZha2F0YS5jb250ZXh0LnNob3coaCxm LGMsZCx0aGlzLGIsdGhpcy5fZ2V0X3NldHRpbmdzKCkuY29yZS5ydGwpLHRoaXMu ZGF0YS50aGVtZXMmJmEudmFrYXRhLmNvbnRleHQuY250LmF0dHIoImNsYXNzIiwi anN0cmVlLSIrdGhpcy5kYXRhLnRoZW1lcy50aGVtZSsiLWNvbnRleHQiKX19fSl9 KGpRdWVyeSksZnVuY3Rpb24oYil7Yi5qc3RyZWUucGx1Z2luKCJ0eXBlcyIse19f aW5pdDpmdW5jdGlvbigpe3ZhciBjPXRoaXMuX2dldF9zZXR0aW5ncygpLnR5cGVz O3RoaXMuZGF0YS50eXBlcy5hdHRhY2hfdG89W10sdGhpcy5nZXRfY29udGFpbmVy KCkuYmluZCgiaW5pdC5qc3RyZWUiLGIucHJveHkoZnVuY3Rpb24oKXt2YXIgYT1j LnR5cGVzLGQ9Yy50eXBlX2F0dHIsZT0iIixmPXRoaXM7Yi5lYWNoKGEsZnVuY3Rp b24oYSxjKXtiLmVhY2goYyxmdW5jdGlvbihhLGIpey9eKG1heF9kZXB0aHxtYXhf Y2hpbGRyZW58aWNvbnx2YWxpZF9jaGlsZHJlbikkLy50ZXN0KGEpfHxmLmRhdGEu dHlwZXMuYXR0YWNoX3RvLnB1c2goYSl9KTtpZighYy5pY29uKXJldHVybiEwO2lm KGMuaWNvbi5pbWFnZXx8Yy5pY29uLnBvc2l0aW9uKWE9PSJkZWZhdWx0Ij9lKz0i LmpzdHJlZS0iK2YuZ2V0X2luZGV4KCkrIiBhID4gLmpzdHJlZS1pY29uIHsgIjpl Kz0iLmpzdHJlZS0iK2YuZ2V0X2luZGV4KCkrIiBsaVsiK2QrJz0iJythKyciXSA+ IGEgPiAuanN0cmVlLWljb24geyAnLGMuaWNvbi5pbWFnZSYmKGUrPSIgYmFja2dy b3VuZC1pbWFnZTp1cmwoIitjLmljb24uaW1hZ2UrIik7ICIpLGMuaWNvbi5wb3Np dGlvbj9lKz0iIGJhY2tncm91bmQtcG9zaXRpb246IitjLmljb24ucG9zaXRpb24r IjsgIjplKz0iIGJhY2tncm91bmQtcG9zaXRpb246MCAwOyAiLGUrPSJ9ICJ9KSxl IT09IiImJmIudmFrYXRhLmNzcy5hZGRfc2hlZXQoe3N0cjplLHRpdGxlOiJqc3Ry ZWUtdHlwZXMifSl9LHRoaXMpKS5iaW5kKCJiZWZvcmUuanN0cmVlIixiLnByb3h5 KGZ1bmN0aW9uKGEsYyl7dmFyIGQsZSxmPXRoaXMuX2dldF9zZXR0aW5ncygpLnR5 cGVzLnVzZV9kYXRhP3RoaXMuX2dldF9ub2RlKGMuYXJnc1swXSk6ITEsZz1mJiZm IT09LTEmJmYubGVuZ3RoP2YuZGF0YSgianN0cmVlIik6ITE7aWYoZyYmZy50eXBl cyYmZy50eXBlc1tjLmZ1bmNdPT09ITEpcmV0dXJuIGEuc3RvcEltbWVkaWF0ZVBy b3BhZ2F0aW9uKCksITE7aWYoYi5pbkFycmF5KGMuZnVuYyx0aGlzLmRhdGEudHlw ZXMuYXR0YWNoX3RvKSE9PS0xKXtpZighYy5hcmdzWzBdfHwhYy5hcmdzWzBdLnRh Z05hbWUmJiFjLmFyZ3NbMF0uanF1ZXJ5KXJldHVybjtkPXRoaXMuX2dldF9zZXR0 aW5ncygpLnR5cGVzLnR5cGVzLGU9dGhpcy5fZ2V0X3R5cGUoYy5hcmdzWzBdKTtp ZigoZFtlXSYmdHlwZW9mIGRbZV1bYy5mdW5jXSE9InVuZGVmaW5lZCJ8fGRbImRl ZmF1bHQiXSYmdHlwZW9mIGRbImRlZmF1bHQiXVtjLmZ1bmNdIT0idW5kZWZpbmVk IikmJnRoaXMuX2NoZWNrKGMuZnVuYyxjLmFyZ3NbMF0pPT09ITEpcmV0dXJuIGEu c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksITF9fSx0aGlzKSksYSYmdGhpcy5n ZXRfY29udGFpbmVyKCkuYmluZCgibG9hZF9ub2RlLmpzdHJlZSBzZXRfdHlwZS5q c3RyZWUiLGIucHJveHkoZnVuY3Rpb24oYSxjKXt2YXIgZD1jJiZjLnJzbHQmJmMu cnNsdC5vYmomJmMucnNsdC5vYmohPT0tMT90aGlzLl9nZXRfbm9kZShjLnJzbHQu b2JqKS5wYXJlbnQoKTp0aGlzLmdldF9jb250YWluZXJfdWwoKSxlPSExLGY9dGhp cy5fZ2V0X3NldHRpbmdzKCkudHlwZXM7Yi5lYWNoKGYudHlwZXMsZnVuY3Rpb24o YSxiKXtiLmljb24mJihiLmljb24uaW1hZ2V8fGIuaWNvbi5wb3NpdGlvbikmJihl PWE9PT0iZGVmYXVsdCI/ZC5maW5kKCJsaSA+IGEgPiAuanN0cmVlLWljb24iKTpk LmZpbmQoImxpWyIrZi50eXBlX2F0dHIrIj0nIithKyInXSA+IGEgPiAuanN0cmVl LWljb24iKSxiLmljb24uaW1hZ2UmJmUuY3NzKCJiYWNrZ3JvdW5kSW1hZ2UiLCJ1 cmwoIitiLmljb24uaW1hZ2UrIikiKSxlLmNzcygiYmFja2dyb3VuZFBvc2l0aW9u IixiLmljb24ucG9zaXRpb258fCIwIDAiKSl9KX0sdGhpcykpfSxkZWZhdWx0czp7 bWF4X2NoaWxkcmVuOi0xLG1heF9kZXB0aDotMSx2YWxpZF9jaGlsZHJlbjoiYWxs Iix1c2VfZGF0YTohMSx0eXBlX2F0dHI6InJlbCIsdHlwZXM6eyJkZWZhdWx0Ijp7 bWF4X2NoaWxkcmVuOi0xLG1heF9kZXB0aDotMSx2YWxpZF9jaGlsZHJlbjoiYWxs In19fSxfZm46e190eXBlc19ub3RpZnk6ZnVuY3Rpb24oYSxiKXtiLnR5cGUmJnRo aXMuX2dldF9zZXR0aW5ncygpLnR5cGVzLnVzZV9kYXRhJiZ0aGlzLnNldF90eXBl KGIudHlwZSxhKX0sX2dldF90eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPXRoaXMu X2dldF9ub2RlKGEpLCFhfHwhYS5sZW5ndGg/ITE6YS5hdHRyKHRoaXMuX2dldF9z ZXR0aW5ncygpLnR5cGVzLnR5cGVfYXR0cil8fCJkZWZhdWx0In0sc2V0X3R5cGU6 ZnVuY3Rpb24oYSxiKXtiPXRoaXMuX2dldF9ub2RlKGIpO3ZhciBjPSFiLmxlbmd0 aHx8IWE/ITE6Yi5hdHRyKHRoaXMuX2dldF9zZXR0aW5ncygpLnR5cGVzLnR5cGVf YXR0cixhKTtyZXR1cm4gYyYmdGhpcy5fX2NhbGxiYWNrKHtvYmo6Yix0eXBlOmF9 KSxjfSxfY2hlY2s6ZnVuY3Rpb24oYSxjLGQpe2M9dGhpcy5fZ2V0X25vZGUoYyk7 dmFyIGU9ITEsZj10aGlzLl9nZXRfdHlwZShjKSxnPTAsaD10aGlzLGk9dGhpcy5f Z2V0X3NldHRpbmdzKCkudHlwZXMsaj0hMTtpZihjPT09LTEpe2lmKCFpW2FdKXJl dHVybjtlPWlbYV19ZWxzZXtpZihmPT09ITEpcmV0dXJuO2o9aS51c2VfZGF0YT9j LmRhdGEoImpzdHJlZSIpOiExLGomJmoudHlwZXMmJnR5cGVvZiBqLnR5cGVzW2Fd IT0idW5kZWZpbmVkIj9lPWoudHlwZXNbYV06IWkudHlwZXNbZl18fHR5cGVvZiBp LnR5cGVzW2ZdW2FdPT0idW5kZWZpbmVkIj8hIWkudHlwZXNbImRlZmF1bHQiXSYm dHlwZW9mIGkudHlwZXNbImRlZmF1bHQiXVthXSE9InVuZGVmaW5lZCImJihlPWku dHlwZXNbImRlZmF1bHQiXVthXSk6ZT1pLnR5cGVzW2ZdW2FdfXJldHVybiBiLmlz RnVuY3Rpb24oZSkmJihlPWUuY2FsbCh0aGlzLGMpKSxhPT09Im1heF9kZXB0aCIm JmMhPT0tMSYmZCE9PSExJiZpLm1heF9kZXB0aCE9PS0yJiZlIT09MCYmYy5jaGls ZHJlbigiYTplcSgwKSIpLnBhcmVudHNVbnRpbCgiLmpzdHJlZSIsImxpIikuZWFj aChmdW5jdGlvbihiKXtpZihpLm1heF9kZXB0aCE9PS0xJiZpLm1heF9kZXB0aC0o YisxKTw9MClyZXR1cm4gZT0wLCExO2c9Yj09PTA/ZTpoLl9jaGVjayhhLHRoaXMs ITEpO2lmKGchPT0tMSYmZy0oYisxKTw9MClyZXR1cm4gZT0wLCExO2c+PTAmJihn LShiKzEpPGV8fGU8MCkmJihlPWctKGIrMSkpLGkubWF4X2RlcHRoPj0wJiYoaS5t YXhfZGVwdGgtKGIrMSk8ZXx8ZTwwKSYmKGU9aS5tYXhfZGVwdGgtKGIrMSkpfSks ZX0sY2hlY2tfbW92ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9fY2FsbF9vbGQoKSly ZXR1cm4hMTt2YXIgYT10aGlzLl9nZXRfbW92ZSgpLGM9YS5ydC5fZ2V0X3NldHRp bmdzKCkudHlwZXMsZD1hLnJ0Ll9jaGVjaygibWF4X2NoaWxkcmVuIixhLmNyKSxl PWEucnQuX2NoZWNrKCJtYXhfZGVwdGgiLGEuY3IpLGY9YS5ydC5fY2hlY2soInZh bGlkX2NoaWxkcmVuIixhLmNyKSxnPTAsaD0xLGk7aWYoZj09PSJub25lIilyZXR1 cm4hMTtpZihiLmlzQXJyYXkoZikmJmEub3QmJmEub3QuX2dldF90eXBlKXthLm8u ZWFjaChmdW5jdGlvbigpe2lmKGIuaW5BcnJheShhLm90Ll9nZXRfdHlwZSh0aGlz KSxmKT09PS0xKXJldHVybiBoPSExLCExfSk7aWYoaD09PSExKXJldHVybiExfWlm KGMubWF4X2NoaWxkcmVuIT09LTImJmQhPT0tMSl7Zz1hLmNyPT09LTE/dGhpcy5n ZXRfY29udGFpbmVyKCkuZmluZCgiPiB1bCA+IGxpIikubm90KGEubykubGVuZ3Ro OmEuY3IuZmluZCgiPiB1bCA+IGxpIikubm90KGEubykubGVuZ3RoO2lmKGcrYS5v Lmxlbmd0aD5kKXJldHVybiExfWlmKGMubWF4X2RlcHRoIT09LTImJmUhPT0tMSl7 aD0wO2lmKGU9PT0wKXJldHVybiExO2lmKHR5cGVvZiBhLm8uZD09InVuZGVmaW5l ZCIpe2k9YS5vO3doaWxlKAppLmxlbmd0aD4wKWk9aS5maW5kKCI+IHVsID4gbGki KSxoKys7YS5vLmQ9aH1pZihlLWEuby5kPDApcmV0dXJuITF9cmV0dXJuITB9LGNy ZWF0ZV9ub2RlOmZ1bmN0aW9uKGEsYyxkLGUsZixnKXtpZighZyYmKGZ8fHRoaXMu X2lzX2xvYWRlZChhKSkpe3ZhciBoPXR5cGVvZiBjPT0ic3RyaW5nIiYmYy5tYXRj aCgvXmJlZm9yZXxhZnRlciQvaSkmJmEhPT0tMT90aGlzLl9nZXRfcGFyZW50KGEp OnRoaXMuX2dldF9ub2RlKGEpLGk9dGhpcy5fZ2V0X3NldHRpbmdzKCkudHlwZXMs aj10aGlzLl9jaGVjaygibWF4X2NoaWxkcmVuIixoKSxrPXRoaXMuX2NoZWNrKCJt YXhfZGVwdGgiLGgpLGw9dGhpcy5fY2hlY2soInZhbGlkX2NoaWxkcmVuIixoKSxt O3R5cGVvZiBkPT0ic3RyaW5nIiYmKGQ9e2RhdGE6ZH0pLGR8fChkPXt9KTtpZihs PT09Im5vbmUiKXJldHVybiExO2lmKGIuaXNBcnJheShsKSlpZighZC5hdHRyfHwh ZC5hdHRyW2kudHlwZV9hdHRyXSlkLmF0dHJ8fChkLmF0dHI9e30pLGQuYXR0cltp LnR5cGVfYXR0cl09bFswXTtlbHNlIGlmKGIuaW5BcnJheShkLmF0dHJbaS50eXBl X2F0dHJdLGwpPT09LTEpcmV0dXJuITE7aWYoaS5tYXhfY2hpbGRyZW4hPT0tMiYm aiE9PS0xKXttPWg9PT0tMT90aGlzLmdldF9jb250YWluZXIoKS5maW5kKCI+IHVs ID4gbGkiKS5sZW5ndGg6aC5maW5kKCI+IHVsID4gbGkiKS5sZW5ndGg7aWYobSsx PmopcmV0dXJuITF9aWYoaS5tYXhfZGVwdGghPT0tMiYmayE9PS0xJiZrLTE8MCly ZXR1cm4hMX1yZXR1cm4gdGhpcy5fX2NhbGxfb2xkKCEwLGEsYyxkLGUsZixnKX19 fSl9KGpRdWVyeSksZnVuY3Rpb24oYSl7YS5qc3RyZWUucGx1Z2luKCJodG1sX2Rh dGEiLHtfX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLmRhdGEuaHRtbF9kYXRhLm9yaWdp bmFsX2NvbnRhaW5lcl9odG1sPXRoaXMuZ2V0X2NvbnRhaW5lcigpLmZpbmQoIiA+ IHVsID4gbGkiKS5jbG9uZSghMCksdGhpcy5kYXRhLmh0bWxfZGF0YS5vcmlnaW5h bF9jb250YWluZXJfaHRtbC5maW5kKCJsaSIpLmFuZFNlbGYoKS5jb250ZW50cygp LmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVUeXBlPT0zfSkucmVt b3ZlKCl9LGRlZmF1bHRzOntkYXRhOiExLGFqYXg6ITEsY29ycmVjdF9zdGF0ZToh MH0sX2ZuOntsb2FkX25vZGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7dGhp cy5sb2FkX25vZGVfaHRtbChhLGZ1bmN0aW9uKCl7ZC5fX2NhbGxiYWNrKHtvYmo6 ZC5fZ2V0X25vZGUoYSl9KSxiLmNhbGwodGhpcyl9LGMpfSxfaXNfbG9hZGVkOmZ1 bmN0aW9uKGIpe3JldHVybiBiPXRoaXMuX2dldF9ub2RlKGIpLGI9PS0xfHwhYnx8 IXRoaXMuX2dldF9zZXR0aW5ncygpLmh0bWxfZGF0YS5hamF4JiYhYS5pc0Z1bmN0 aW9uKHRoaXMuX2dldF9zZXR0aW5ncygpLmh0bWxfZGF0YS5kYXRhKXx8Yi5pcygi LmpzdHJlZS1vcGVuLCAuanN0cmVlLWxlYWYiKXx8Yi5jaGlsZHJlbigidWwiKS5j aGlsZHJlbigibGkiKS5zaXplKCk+MH0sbG9hZF9ub2RlX2h0bWw6ZnVuY3Rpb24o YixjLGQpe3ZhciBlLGY9dGhpcy5nZXRfc2V0dGluZ3MoKS5odG1sX2RhdGEsZz1m dW5jdGlvbigpe30saD1mdW5jdGlvbigpe307Yj10aGlzLl9nZXRfbm9kZShiKTtp ZihiJiZiIT09LTEpe2lmKGIuZGF0YSgianN0cmVlX2lzX2xvYWRpbmciKSlyZXR1 cm47Yi5kYXRhKCJqc3RyZWVfaXNfbG9hZGluZyIsITApfXN3aXRjaCghMCl7Y2Fz ZSBhLmlzRnVuY3Rpb24oZi5kYXRhKTpmLmRhdGEuY2FsbCh0aGlzLGIsYS5wcm94 eShmdW5jdGlvbihkKXtkJiZkIT09IiImJmQudG9TdHJpbmcmJmQudG9TdHJpbmco KS5yZXBsYWNlKC9eW1xzXG5dKyQvLCIiKSE9PSIiPyhkPWEoZCksZC5pcygidWwi KXx8KGQ9YSgiPHVsIC8+IikuYXBwZW5kKGQpKSxiPT0tMXx8IWI/dGhpcy5nZXRf Y29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikuZW1wdHkoKS5hcHBlbmQoZC5jaGls ZHJlbigpKS5maW5kKCJsaSwgYSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0 aGlzLmZpcnN0Q2hpbGR8fCF0aGlzLmZpcnN0Q2hpbGQudGFnTmFtZXx8dGhpcy5m aXJzdENoaWxkLnRhZ05hbWUhPT0iSU5TIn0pLnByZXBlbmQoIjxpbnMgY2xhc3M9 J2pzdHJlZS1pY29uJz4mIzE2MDs8L2lucz4iKS5lbmQoKS5maWx0ZXIoImEiKS5j aGlsZHJlbigiaW5zOmZpcnN0LWNoaWxkIikubm90KCIuanN0cmVlLWljb24iKS5h ZGRDbGFzcygianN0cmVlLWljb24iKTooYi5jaGlsZHJlbigiYS5qc3RyZWUtbG9h ZGluZyIpLnJlbW92ZUNsYXNzKCJqc3RyZWUtbG9hZGluZyIpLGIuYXBwZW5kKGQp LmNoaWxkcmVuKCJ1bCIpLmZpbmQoImxpLCBhIikuZmlsdGVyKGZ1bmN0aW9uKCl7 cmV0dXJuIXRoaXMuZmlyc3RDaGlsZHx8IXRoaXMuZmlyc3RDaGlsZC50YWdOYW1l fHx0aGlzLmZpcnN0Q2hpbGQudGFnTmFtZSE9PSJJTlMifSkucHJlcGVuZCgiPGlu cyBjbGFzcz0nanN0cmVlLWljb24nPiYjMTYwOzwvaW5zPiIpLmVuZCgpLmZpbHRl cigiYSIpLmNoaWxkcmVuKCJpbnM6Zmlyc3QtY2hpbGQiKS5ub3QoIi5qc3RyZWUt aWNvbiIpLmFkZENsYXNzKCJqc3RyZWUtaWNvbiIpLGIucmVtb3ZlRGF0YSgianN0 cmVlX2lzX2xvYWRpbmciKSksdGhpcy5jbGVhbl9ub2RlKGIpLGMmJmMuY2FsbCh0 aGlzKSk6YiYmYiE9PS0xPyhiLmNoaWxkcmVuKCJhLmpzdHJlZS1sb2FkaW5nIiku cmVtb3ZlQ2xhc3MoImpzdHJlZS1sb2FkaW5nIiksYi5yZW1vdmVEYXRhKCJqc3Ry ZWVfaXNfbG9hZGluZyIpLGYuY29ycmVjdF9zdGF0ZSYmKHRoaXMuY29ycmVjdF9z dGF0ZShiKSxjJiZjLmNhbGwodGhpcykpKTpmLmNvcnJlY3Rfc3RhdGUmJih0aGlz LmdldF9jb250YWluZXIoKS5jaGlsZHJlbigidWwiKS5lbXB0eSgpLGMmJmMuY2Fs bCh0aGlzKSl9LHRoaXMpKTticmVhaztjYXNlIWYuZGF0YSYmIWYuYWpheDppZigh Ynx8Yj09LTEpdGhpcy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikuZW1w dHkoKS5hcHBlbmQodGhpcy5kYXRhLmh0bWxfZGF0YS5vcmlnaW5hbF9jb250YWlu ZXJfaHRtbCkuZmluZCgibGksIGEiKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4h dGhpcy5maXJzdENoaWxkfHwhdGhpcy5maXJzdENoaWxkLnRhZ05hbWV8fHRoaXMu Zmlyc3RDaGlsZC50YWdOYW1lIT09IklOUyJ9KS5wcmVwZW5kKCI8aW5zIGNsYXNz PSdqc3RyZWUtaWNvbic+JiMxNjA7PC9pbnM+IikuZW5kKCkuZmlsdGVyKCJhIiku Y2hpbGRyZW4oImluczpmaXJzdC1jaGlsZCIpLm5vdCgiLmpzdHJlZS1pY29uIiku YWRkQ2xhc3MoImpzdHJlZS1pY29uIiksdGhpcy5jbGVhbl9ub2RlKCk7YyYmYy5j YWxsKHRoaXMpO2JyZWFrO2Nhc2UhIWYuZGF0YSYmIWYuYWpheHx8ISFmLmRhdGEm JiEhZi5hamF4JiYoIWJ8fGI9PT0tMSk6aWYoIWJ8fGI9PS0xKWU9YShmLmRhdGEp LGUuaXMoInVsIil8fChlPWEoIjx1bCAvPiIpLmFwcGVuZChlKSksdGhpcy5nZXRf Y29udGFpbmVyKCkuY2hpbGRyZW4oInVsIikuZW1wdHkoKS5hcHBlbmQoZS5jaGls ZHJlbigpKS5maW5kKCJsaSwgYSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0 aGlzLmZpcnN0Q2hpbGR8fCF0aGlzLmZpcnN0Q2hpbGQudGFnTmFtZXx8dGhpcy5m aXJzdENoaWxkLnRhZ05hbWUhPT0iSU5TIn0pLnByZXBlbmQoIjxpbnMgY2xhc3M9 J2pzdHJlZS1pY29uJz4mIzE2MDs8L2lucz4iKS5lbmQoKS5maWx0ZXIoImEiKS5j aGlsZHJlbigiaW5zOmZpcnN0LWNoaWxkIikubm90KCIuanN0cmVlLWljb24iKS5h ZGRDbGFzcygianN0cmVlLWljb24iKSx0aGlzLmNsZWFuX25vZGUoKTtjJiZjLmNh bGwodGhpcyk7YnJlYWs7Y2FzZSFmLmRhdGEmJiEhZi5hamF4fHwhIWYuZGF0YSYm ISFmLmFqYXgmJmImJmIhPT0tMTpiPXRoaXMuX2dldF9ub2RlKGIpLGc9ZnVuY3Rp b24oYSxjLGUpe3ZhciBnPXRoaXMuZ2V0X3NldHRpbmdzKCkuaHRtbF9kYXRhLmFq YXguZXJyb3I7ZyYmZy5jYWxsKHRoaXMsYSxjLGUpLGIhPS0xJiZiLmxlbmd0aD8o Yi5jaGlsZHJlbigiYS5qc3RyZWUtbG9hZGluZyIpLnJlbW92ZUNsYXNzKCJqc3Ry ZWUtbG9hZGluZyIpLGIucmVtb3ZlRGF0YSgianN0cmVlX2lzX2xvYWRpbmciKSxj PT09InN1Y2Nlc3MiJiZmLmNvcnJlY3Rfc3RhdGUmJnRoaXMuY29ycmVjdF9zdGF0 ZShiKSk6Yz09PSJzdWNjZXNzIiYmZi5jb3JyZWN0X3N0YXRlJiZ0aGlzLmdldF9j b250YWluZXIoKS5jaGlsZHJlbigidWwiKS5lbXB0eSgpLGQmJmQuY2FsbCh0aGlz KX0saD1mdW5jdGlvbihkLGUsaCl7dmFyIGk9dGhpcy5nZXRfc2V0dGluZ3MoKS5o dG1sX2RhdGEuYWpheC5zdWNjZXNzO2kmJihkPWkuY2FsbCh0aGlzLGQsZSxoKXx8 ZCk7aWYoZD09PSIifHxkJiZkLnRvU3RyaW5nJiZkLnRvU3RyaW5nKCkucmVwbGFj ZSgvXltcc1xuXSskLywiIik9PT0iIilyZXR1cm4gZy5jYWxsKHRoaXMsaCxlLCIi KTtkPyhkPWEoZCksZC5pcygidWwiKXx8KGQ9YSgiPHVsIC8+IikuYXBwZW5kKGQp KSxiPT0tMXx8IWI/dGhpcy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oInVsIiku ZW1wdHkoKS5hcHBlbmQoZC5jaGlsZHJlbigpKS5maW5kKCJsaSwgYSIpLmZpbHRl cihmdW5jdGlvbigpe3JldHVybiF0aGlzLmZpcnN0Q2hpbGR8fCF0aGlzLmZpcnN0 Q2hpbGQudGFnTmFtZXx8dGhpcy5maXJzdENoaWxkLnRhZ05hbWUhPT0iSU5TIn0p LnByZXBlbmQoIjxpbnMgY2xhc3M9J2pzdHJlZS1pY29uJz4mIzE2MDs8L2lucz4i KS5lbmQoKS5maWx0ZXIoImEiKS5jaGlsZHJlbigiaW5zOmZpcnN0LWNoaWxkIiku bm90KCIuanN0cmVlLWljb24iKS5hZGRDbGFzcygianN0cmVlLWljb24iKTooYi5j aGlsZHJlbigiYS5qc3RyZWUtbG9hZGluZyIpLnJlbW92ZUNsYXNzKCJqc3RyZWUt bG9hZGluZyIpLGIuYXBwZW5kKGQpLmNoaWxkcmVuKCJ1bCIpLmZpbmQoImxpLCBh IikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZmlyc3RDaGlsZHx8IXRo aXMuZmlyc3RDaGlsZC50YWdOYW1lfHx0aGlzLmZpcnN0Q2hpbGQudGFnTmFtZSE9 PSJJTlMifSkucHJlcGVuZCgiPGlucyBjbGFzcz0nanN0cmVlLWljb24nPiYjMTYw OzwvaW5zPiIpLmVuZCgpLmZpbHRlcigiYSIpLmNoaWxkcmVuKCJpbnM6Zmlyc3Qt Y2hpbGQiKS5ub3QoIi5qc3RyZWUtaWNvbiIpLmFkZENsYXNzKCJqc3RyZWUtaWNv biIpLGIucmVtb3ZlRGF0YSgianN0cmVlX2lzX2xvYWRpbmciKSksdGhpcy5jbGVh bl9ub2RlKGIpLGMmJmMuY2FsbCh0aGlzKSk6YiYmYiE9PS0xPyhiLmNoaWxkcmVu KCJhLmpzdHJlZS1sb2FkaW5nIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1sb2FkaW5n IiksYi5yZW1vdmVEYXRhKCJqc3RyZWVfaXNfbG9hZGluZyIpLGYuY29ycmVjdF9z dGF0ZSYmKHRoaXMuY29ycmVjdF9zdGF0ZShiKSxjJiZjLmNhbGwodGhpcykpKTpm LmNvcnJlY3Rfc3RhdGUmJih0aGlzLmdldF9jb250YWluZXIoKS5jaGlsZHJlbigi dWwiKS5lbXB0eSgpLGMmJmMuY2FsbCh0aGlzKSl9LGYuYWpheC5jb250ZXh0PXRo aXMsZi5hamF4LmVycm9yPWcsZi5hamF4LnN1Y2Nlc3M9aCxmLmFqYXguZGF0YVR5 cGV8fChmLmFqYXguZGF0YVR5cGU9Imh0bWwiKSxhLmlzRnVuY3Rpb24oZi5hamF4 LnVybCkmJihmLmFqYXgudXJsPWYuYWpheC51cmwuY2FsbCh0aGlzLGIpKSxhLmlz RnVuY3Rpb24oZi5hamF4LmRhdGEpJiYoZi5hamF4LmRhdGE9Zi5hamF4LmRhdGEu Y2FsbCh0aGlzLGIpKSxhLmFqYXgoZi5hamF4KX19fX0pLGEuanN0cmVlLmRlZmF1 bHRzLnBsdWdpbnMucHVzaCgiaHRtbF9kYXRhIil9KGpRdWVyeSksZnVuY3Rpb24o YSl7YS5qc3RyZWUucGx1Z2luKCJ0aGVtZXJvbGxlciIse19faW5pdDpmdW5jdGlv bigpe3ZhciBiPXRoaXMuX2dldF9zZXR0aW5ncygpLnRoZW1lcm9sbGVyO3RoaXMu Z2V0X2NvbnRhaW5lcigpLmFkZENsYXNzKCJ1aS13aWRnZXQtY29udGVudCIpLmFk ZENsYXNzKCJqc3RyZWUtdGhlbWVyb2xsZXIiKS5kZWxlZ2F0ZSgiYSIsIm1vdXNl ZW50ZXIuanN0cmVlIixmdW5jdGlvbihjKXthKGMuY3VycmVudFRhcmdldCkuaGFz Q2xhc3MoImpzdHJlZS1sb2FkaW5nIil8fGEodGhpcykuYWRkQ2xhc3MoYi5pdGVt X2gpfSkuZGVsZWdhdGUoImEiLCJtb3VzZWxlYXZlLmpzdHJlZSIsZnVuY3Rpb24o KXthKHRoaXMpLnJlbW92ZUNsYXNzKGIuaXRlbV9oKX0pLmJpbmQoImluaXQuanN0 cmVlIixhLnByb3h5KGZ1bmN0aW9uKGEsYil7Yi5pbnN0LmdldF9jb250YWluZXIo KS5maW5kKCI+IHVsID4gbGkgPiAuanN0cmVlLWxvYWRpbmcgPiBpbnMiKS5hZGRD bGFzcygidWktaWNvbi1yZWZyZXNoIiksdGhpcy5fdGhlbWVyb2xsZXIoYi5pbnN0 LmdldF9jb250YWluZXIoKS5maW5kKCI+IHVsID4gbGkiKSl9LHRoaXMpKS5iaW5k KCJvcGVuX25vZGUuanN0cmVlIGNyZWF0ZV9ub2RlLmpzdHJlZSIsYS5wcm94eShm dW5jdGlvbihhLGIpe3RoaXMuX3RoZW1lcm9sbGVyKGIucnNsdC5vYmopfSx0aGlz KSkuYmluZCgibG9hZGVkLmpzdHJlZSByZWZyZXNoLmpzdHJlZSIsYS5wcm94eShm dW5jdGlvbihhKXt0aGlzLl90aGVtZXJvbGxlcigpfSx0aGlzKSkuYmluZCgiY2xv c2Vfbm9kZS5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYSxiKXt0aGlzLl90aGVt ZXJvbGxlcihiLnJzbHQub2JqKX0sdGhpcykpLmJpbmQoImRlbGV0ZV9ub2RlLmpz dHJlZSIsYS5wcm94eShmdW5jdGlvbihhLGIpe3RoaXMuX3RoZW1lcm9sbGVyKGIu cnNsdC5wYXJlbnQpfSx0aGlzKSkuYmluZCgiY29ycmVjdF9zdGF0ZS5qc3RyZWUi LGEucHJveHkoZnVuY3Rpb24oYSxjKXtjLnJzbHQub2JqLmNoaWxkcmVuKCJpbnMu anN0cmVlLWljb24iKS5yZW1vdmVDbGFzcyhiLm9wZW5lZCsiICIrYi5jbG9zZWQr IiB1aS1pY29uIikuZW5kKCkuZmluZCgiPiBhID4gaW5zLnVpLWljb24iKS5maWx0 ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc05hbWUudG9TdHJpbmcoKS5y ZXBsYWNlKGIuaXRlbV9jbHNkLCIiKS5yZXBsYWNlKGIuaXRlbV9vcGVuLCIiKS5y ZXBsYWNlKGIuaXRlbV9sZWFmLCIiKS5pbmRleE9mKCJ1aS1pY29uLSIpPT09LTF9 KS5yZW1vdmVDbGFzcyhiLml0ZW1fb3BlbisiICIrYi5pdGVtX2Nsc2QpLmFkZENs YXNzKGIuaXRlbV9sZWFmfHwianN0cmVlLW5vLWljb24iKX0sdGhpcykpLmJpbmQo InNlbGVjdF9ub2RlLmpzdHJlZSIsYS5wcm94eShmdW5jdGlvbihhLGMpe2MucnNs dC5vYmouY2hpbGRyZW4oImEiKS5hZGRDbGFzcyhiLml0ZW1fYSl9LHRoaXMpKS5i aW5kKCJkZXNlbGVjdF9ub2RlLmpzdHJlZSBkZXNlbGVjdF9hbGwuanN0cmVlIixh LnByb3h5KGZ1bmN0aW9uKGEsYyl7dGhpcy5nZXRfY29udGFpbmVyKCkuZmluZCgi YS4iK2IuaXRlbV9hKS5yZW1vdmVDbGFzcyhiLml0ZW1fYSkuZW5kKCkuZmluZCgi YS5qc3RyZWUtY2xpY2tlZCIpLmFkZENsYXNzKGIuaXRlbV9hKX0sdGhpcykpLmJp bmQoImRlaG92ZXJfbm9kZS5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYSxjKXtj LnJzbHQub2JqLmNoaWxkcmVuKCJhIikucmVtb3ZlQ2xhc3MoYi5pdGVtX2gpfSx0 aGlzKSkuYmluZCgiaG92ZXJfbm9kZS5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24o YSxjKXt0aGlzLmdldF9jb250YWluZXIoKS5maW5kKCJhLiIrYi5pdGVtX2gpLm5v dChjLnJzbHQub2JqKS5yZW1vdmVDbGFzcyhiLml0ZW1faCksYy5yc2x0Lm9iai5j aGlsZHJlbigiYSIpLmFkZENsYXNzKGIuaXRlbV9oKX0sdGhpcykpLmJpbmQoIm1v dmVfbm9kZS5qc3RyZWUiLGEucHJveHkoZnVuY3Rpb24oYSxiKXt0aGlzLl90aGVt ZXJvbGxlcihiLnJzbHQubyksdGhpcy5fdGhlbWVyb2xsZXIoYi5yc2x0Lm9wKX0s dGhpcykpfSxfX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLl9nZXRfc2V0 dGluZ3MoKS50aGVtZXJvbGxlcixjPVsidWktaWNvbiJdO2EuZWFjaChiLGZ1bmN0 aW9uKGEsYil7Yj1iLnNwbGl0KCIgIiksYi5sZW5ndGgmJihjPWMuY29uY2F0KGIp KX0pLHRoaXMuZ2V0X2NvbnRhaW5lcigpLnJlbW92ZUNsYXNzKCJ1aS13aWRnZXQt Y29udGVudCIpLmZpbmQoIi4iK2Muam9pbigiLCAuIikpLnJlbW92ZUNsYXNzKGMu am9pbigiICIpKX0sX2ZuOntfdGhlbWVyb2xsZXI6ZnVuY3Rpb24oYSl7dmFyIGI9 dGhpcy5fZ2V0X3NldHRpbmdzKCkudGhlbWVyb2xsZXI7YT0hYXx8YT09LTE/dGhp cy5nZXRfY29udGFpbmVyX3VsKCk6dGhpcy5fZ2V0X25vZGUoYSkucGFyZW50KCks YS5maW5kKCJsaS5qc3RyZWUtY2xvc2VkIikuY2hpbGRyZW4oImlucy5qc3RyZWUt aWNvbiIpLnJlbW92ZUNsYXNzKGIub3BlbmVkKS5hZGRDbGFzcygidWktaWNvbiAi K2IuY2xvc2VkKS5lbmQoKS5jaGlsZHJlbigiYSIpLmFkZENsYXNzKGIuaXRlbSku Y2hpbGRyZW4oImlucy5qc3RyZWUtaWNvbiIpLmFkZENsYXNzKCJ1aS1pY29uIiku ZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xhc3NOYW1lLnRvU3RyaW5n KCkucmVwbGFjZShiLml0ZW1fY2xzZCwiIikucmVwbGFjZShiLml0ZW1fb3Blbiwi IikucmVwbGFjZShiLml0ZW1fbGVhZiwiIikuaW5kZXhPZigidWktaWNvbi0iKT09 PS0xfSkucmVtb3ZlQ2xhc3MoYi5pdGVtX2xlYWYrIiAiK2IuaXRlbV9vcGVuKS5h ZGRDbGFzcyhiLml0ZW1fY2xzZHx8ImpzdHJlZS1uby1pY29uIikuZW5kKCkuZW5k KCkuZW5kKCkuZW5kKCkuZmluZCgibGkuanN0cmVlLW9wZW4iKS5jaGlsZHJlbigi aW5zLmpzdHJlZS1pY29uIikucmVtb3ZlQ2xhc3MoYi5jbG9zZWQpLmFkZENsYXNz KCJ1aS1pY29uICIrYi5vcGVuZWQpLmVuZCgpLmNoaWxkcmVuKCJhIikuYWRkQ2xh c3MoYi5pdGVtKS5jaGlsZHJlbigiaW5zLmpzdHJlZS1pY29uIikuYWRkQ2xhc3Mo InVpLWljb24iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc05h bWUudG9TdHJpbmcoKS5yZXBsYWNlKGIuaXRlbV9jbHNkLCIiKS5yZXBsYWNlKGIu aXRlbV9vcGVuLCIiKS5yZXBsYWNlKGIuaXRlbV9sZWFmLCIiKS5pbmRleE9mKCJ1 aS1pY29uLSIpPT09LTF9KS5yZW1vdmVDbGFzcyhiLml0ZW1fbGVhZisiICIrYi5p dGVtX2Nsc2QpLmFkZENsYXNzKGIuaXRlbV9vcGVufHwianN0cmVlLW5vLWljb24i KS5lbmQoKS5lbmQoKS5lbmQoKS5lbmQoKS5maW5kKCJsaS5qc3RyZWUtbGVhZiIp LmNoaWxkcmVuKCJpbnMuanN0cmVlLWljb24iKS5yZW1vdmVDbGFzcyhiLmNsb3Nl ZCsiIHVpLWljb24gIitiLm9wZW5lZCkuZW5kKCkuY2hpbGRyZW4oImEiKS5hZGRD bGFzcyhiLml0ZW0pLmNoaWxkcmVuKCJpbnMuanN0cmVlLWljb24iKS5hZGRDbGFz cygidWktaWNvbiIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsYXNz TmFtZS50b1N0cmluZygpLnJlcGxhY2UoYi5pdGVtX2Nsc2QsIiIpLnJlcGxhY2Uo Yi5pdGVtX29wZW4sIiIpLnJlcGxhY2UoYi5pdGVtX2xlYWYsIiIpLmluZGV4T2Yo InVpLWljb24tIik9PT0tMX0pLnJlbW92ZUNsYXNzKGIuaXRlbV9jbHNkKyIgIiti Lml0ZW1fb3BlbikuYWRkQ2xhc3MoYi5pdGVtX2xlYWZ8fCJqc3RyZWUtbm8taWNv biIpfX0sZGVmYXVsdHM6e29wZW5lZDoidWktaWNvbi10cmlhbmdsZS0xLXNlIixj bG9zZWQ6InVpLWljb24tdHJpYW5nbGUtMS1lIixpdGVtOiJ1aS1zdGF0ZS1kZWZh dWx0IixpdGVtX2g6InVpLXN0YXRlLWhvdmVyIixpdGVtX2E6InVpLXN0YXRlLWFj dGl2ZSIsaXRlbV9vcGVuOiJ1aS1pY29uLWZvbGRlci1vcGVuIixpdGVtX2Nsc2Q6 InVpLWljb24tZm9sZGVyLWNvbGxhcHNlZCIsaXRlbV9sZWFmOiJ1aS1pY29uLWRv Y3VtZW50In19KSxhKGZ1bmN0aW9uKCl7dmFyIGI9Ii5qc3RyZWUtdGhlbWVyb2xs ZXIgLnVpLWljb24geyBvdmVyZmxvdzp2aXNpYmxlOyB9IC5qc3RyZWUtdGhlbWVy b2xsZXIgYSB7IHBhZGRpbmc6MCAycHg7IH0gLmpzdHJlZS10aGVtZXJvbGxlciAu anN0cmVlLW5vLWljb24geyBkaXNwbGF5Om5vbmU7IH0iO2EudmFrYXRhLmNzcy5h ZGRfc2hlZXQoe3N0cjpiLHRpdGxlOiJqc3RyZWUifSl9KX0oalF1ZXJ5KSxmdW5j dGlvbihhKXthLmpzdHJlZS5wbHVnaW4oInVuaXF1ZSIse19faW5pdDpmdW5jdGlv bigpe3RoaXMuZ2V0X2NvbnRhaW5lcigpLmJpbmQoImJlZm9yZS5qc3RyZWUiLGEu cHJveHkoZnVuY3Rpb24oYixjKXt2YXIgZD1bXSxlPSEwLGYsZztjLmZ1bmM9PSJt b3ZlX25vZGUiJiZjLmFyZ3NbNF09PT0hMCYmYy5hcmdzWzBdLm8mJmMuYXJnc1sw XS5vLmxlbmd0aCYmKGMuYXJnc1swXS5vLmNoaWxkcmVuKCJhIikuZWFjaChmdW5j dGlvbigpe2QucHVzaChhKHRoaXMpLnRleHQoKS5yZXBsYWNlKC9eXHMrL2csIiIp KX0pLGU9dGhpcy5fY2hlY2tfdW5pcXVlKGQsYy5hcmdzWzBdLm5wLmZpbmQoIj4g dWwgPiBsaSIpLm5vdChjLmFyZ3NbMF0ubyksIm1vdmVfbm9kZSIpKTtpZihjLmZ1 bmM9PSJjcmVhdGVfbm9kZSIpaWYoYy5hcmdzWzRdfHx0aGlzLl9pc19sb2FkZWQo Yy5hcmdzWzBdKSl7Zj10aGlzLl9nZXRfbm9kZShjLmFyZ3NbMF0pO2lmKGMuYXJn c1sxXSYmKGMuYXJnc1sxXT09PSJiZWZvcmUifHxjLmFyZ3NbMV09PT0iYWZ0ZXIi KSl7Zj10aGlzLl9nZXRfcGFyZW50KGMuYXJnc1swXSk7aWYoIWZ8fGY9PT0tMSlm PXRoaXMuZ2V0X2NvbnRhaW5lcigpfXR5cGVvZiBjLmFyZ3NbMl09PSJzdHJpbmci P2QucHVzaChjLmFyZ3NbMl0pOiFjLmFyZ3NbMl18fCFjLmFyZ3NbMl0uZGF0YT9k LnB1c2godGhpcy5fZ2V0X3N0cmluZygibmV3X25vZGUiKSk6ZC5wdXNoKGMuYXJn c1syXS5kYXRhKSxlPXRoaXMuX2NoZWNrX3VuaXF1ZShkLGYuZmluZCgiPiB1bCA+ IGxpIiksImNyZWF0ZV9ub2RlIil9aWYoYy5mdW5jPT0icmVuYW1lX25vZGUiKXtk LnB1c2goYy5hcmdzWzFdKSxnPXRoaXMuX2dldF9ub2RlKGMuYXJnc1swXSksZj10 aGlzLl9nZXRfcGFyZW50KGcpO2lmKCFmfHxmPT09LTEpZj10aGlzLmdldF9jb250 YWluZXIoKTtlPXRoaXMuX2NoZWNrX3VuaXF1ZShkLGYuZmluZCgiPiB1bCA+IGxp Iikubm90KGcpLCJyZW5hbWVfbm9kZSIpfWlmKCFlKXJldHVybiBiLnN0b3BQcm9w YWdhdGlvbigpLCExfSx0aGlzKSl9LGRlZmF1bHRzOntlcnJvcl9jYWxsYmFjazph Lm5vb3B9LF9mbjp7X2NoZWNrX3VuaXF1ZTpmdW5jdGlvbihiLGMsZCl7dmFyIGU9 W107cmV0dXJuIGMuY2hpbGRyZW4oImEiKS5lYWNoKGZ1bmN0aW9uKCl7ZS5wdXNo KGEodGhpcykudGV4dCgpLnJlcGxhY2UoL15ccysvZywiIikpfSksIWUubGVuZ3Ro fHwhYi5sZW5ndGg/ITA6KGU9ZS5zb3J0KCkuam9pbigiLCwiKS5yZXBsYWNlKC8o LHxeKShbXixdKykoLCxcMikrKCx8JCkvZywiJDEkMiQ0IikucmVwbGFjZSgvLCwr L2csIiwiKS5yZXBsYWNlKC8sJC8sIiIpLnNwbGl0KCIsIiksZS5sZW5ndGgrYi5s ZW5ndGghPWUuY29uY2F0KGIpLnNvcnQoKS5qb2luKCIsLCIpLnJlcGxhY2UoLygs fF4pKFteLF0rKSgsLFwyKSsoLHwkKS9nLCIkMSQyJDQiKS5yZXBsYWNlKC8sLCsv ZywiLCIpLnJlcGxhY2UoLywkLywiIikuc3BsaXQoIiwiKS5sZW5ndGg/KHRoaXMu X2dldF9zZXR0aW5ncygpLnVuaXF1ZS5lcnJvcl9jYWxsYmFjay5jYWxsKG51bGws YixjLGQpLCExKTohMCl9LGNoZWNrX21vdmU6ZnVuY3Rpb24oKXtpZighdGhpcy5f X2NhbGxfb2xkKCkpcmV0dXJuITE7dmFyIGI9dGhpcy5fZ2V0X21vdmUoKSxjPVtd O3JldHVybiBiLm8mJmIuby5sZW5ndGg/KGIuby5jaGlsZHJlbigiYSIpLmVhY2go ZnVuY3Rpb24oKXtjLnB1c2goYSh0aGlzKS50ZXh0KCkucmVwbGFjZSgvXlxzKy9n LCIiKSl9KSx0aGlzLl9jaGVja191bmlxdWUoYyxiLm5wLmZpbmQoIj4gdWwgPiBs aSIpLm5vdChiLm8pLCJjaGVja19tb3ZlIikpOiEwfX19KX0oalF1ZXJ5KSxmdW5j dGlvbihkKXtkLmpzdHJlZS5wbHVnaW4oIndob2xlcm93Iix7X19pbml0OmZ1bmN0 aW9uKCl7aWYoIXRoaXMuZGF0YS51aSl0aHJvdyJqc1RyZWUgd2hvbGVyb3c6IGpz VHJlZSBVSSBwbHVnaW4gbm90IGluY2x1ZGVkLiI7dGhpcy5kYXRhLndob2xlcm93 Lmh0bWw9ITEsdGhpcy5kYXRhLndob2xlcm93LnRvPSExLHRoaXMuZ2V0X2NvbnRh aW5lcigpLmJpbmQoImluaXQuanN0cmVlIixkLnByb3h5KGZ1bmN0aW9uKGEsYil7 dGhpcy5fZ2V0X3NldHRpbmdzKCkuY29yZS5hbmltYXRpb249MH0sdGhpcykpLmJp bmQoIm9wZW5fbm9kZS5qc3RyZWUgY3JlYXRlX25vZGUuanN0cmVlIGNsZWFuX25v ZGUuanN0cmVlIGxvYWRlZC5qc3RyZWUiLGQucHJveHkoZnVuY3Rpb24oYSxiKXt0 aGlzLl9wcmVwYXJlX3dob2xlcm93X3NwYW4oYiYmYi5yc2x0JiZiLnJzbHQub2Jq P2IucnNsdC5vYmo6LTEpfSx0aGlzKSkuYmluZCgic2VhcmNoLmpzdHJlZSBjbGVh cl9zZWFyY2guanN0cmVlIHJlb3Blbi5qc3RyZWUgYWZ0ZXJfb3Blbi5qc3RyZWUg YWZ0ZXJfY2xvc2UuanN0cmVlIGNyZWF0ZV9ub2RlLmpzdHJlZSBkZWxldGVfbm9k ZS5qc3RyZWUgY2xlYW5fbm9kZS5qc3RyZWUiLGQucHJveHkoZnVuY3Rpb24oYSxi KXt0aGlzLmRhdGEudG8mJmNsZWFyVGltZW91dCh0aGlzLmRhdGEudG8pLHRoaXMu ZGF0YS50bz1zZXRUaW1lb3V0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9u KCl7YS5fcHJlcGFyZV93aG9sZXJvd191bChiKX19KHRoaXMsYiYmYi5yc2x0JiZi LnJzbHQub2JqP2IucnNsdC5vYmo6LTEpLDApfSx0aGlzKSkuYmluZCgiZGVzZWxl Y3RfYWxsLmpzdHJlZSIsZC5wcm94eShmdW5jdGlvbihhLGIpe3RoaXMuZ2V0X2Nv bnRhaW5lcigpLmZpbmQoIiA+IC5qc3RyZWUtd2hvbGVyb3cgLmpzdHJlZS1jbGlj a2VkIikucmVtb3ZlQ2xhc3MoImpzdHJlZS1jbGlja2VkICIrKHRoaXMuZGF0YS50 aGVtZXJvbGxlcj90aGlzLl9nZXRfc2V0dGluZ3MoKS50aGVtZXJvbGxlci5pdGVt X2E6IiIpKX0sdGhpcykpLmJpbmQoInNlbGVjdF9ub2RlLmpzdHJlZSBkZXNlbGVj dF9ub2RlLmpzdHJlZSAiLGQucHJveHkoZnVuY3Rpb24oYSxiKXtiLnJzbHQub2Jq LmVhY2goZnVuY3Rpb24oKXt2YXIgYT1iLmluc3QuZ2V0X2NvbnRhaW5lcigpLmZp bmQoIiA+IC5qc3RyZWUtd2hvbGVyb3cgbGk6dmlzaWJsZTplcSgiK3BhcnNlSW50 KChkKHRoaXMpLm9mZnNldCgpLnRvcC1iLmluc3QuZ2V0X2NvbnRhaW5lcigpLm9m ZnNldCgpLnRvcCtiLmluc3QuZ2V0X2NvbnRhaW5lcigpWzBdLnNjcm9sbFRvcCkv Yi5pbnN0LmRhdGEuY29yZS5saV9oZWlnaHQsMTApKyIpIik7YS5jaGlsZHJlbigi YSIpLmF0dHIoImNsYXNzIixiLnJzbHQub2JqLmNoaWxkcmVuKCJhIikuYXR0cigi Y2xhc3MiKSl9KX0sdGhpcykpLmJpbmQoImhvdmVyX25vZGUuanN0cmVlIGRlaG92 ZXJfbm9kZS5qc3RyZWUiLGQucHJveHkoZnVuY3Rpb24oYSxiKXt0aGlzLmdldF9j b250YWluZXIoKS5maW5kKCIgPiAuanN0cmVlLXdob2xlcm93IC5qc3RyZWUtaG92 ZXJlZCIpLnJlbW92ZUNsYXNzKCJqc3RyZWUtaG92ZXJlZCAiKyh0aGlzLmRhdGEu dGhlbWVyb2xsZXI/dGhpcy5fZ2V0X3NldHRpbmdzKCkudGhlbWVyb2xsZXIuaXRl bV9oOiIiKSk7aWYoYS50eXBlPT09ImhvdmVyX25vZGUiKXt2YXIgYz10aGlzLmdl dF9jb250YWluZXIoKS5maW5kKCIgPiAuanN0cmVlLXdob2xlcm93IGxpOnZpc2li bGU6ZXEoIitwYXJzZUludCgoYi5yc2x0Lm9iai5vZmZzZXQoKS50b3AtdGhpcy5n ZXRfY29udGFpbmVyKCkub2Zmc2V0KCkudG9wK3RoaXMuZ2V0X2NvbnRhaW5lcigp WzBdLnNjcm9sbFRvcCkvdGhpcy5kYXRhLmNvcmUubGlfaGVpZ2h0LDEwKSsiKSIp O2MuY2hpbGRyZW4oImEiKS5hdHRyKCJjbGFzcyIsYi5yc2x0Lm9iai5jaGlsZHJl bigiLmpzdHJlZS1ob3ZlcmVkIikuYXR0cigiY2xhc3MiKSl9fSx0aGlzKSkuZGVs ZWdhdGUoIi5qc3RyZWUtd2hvbGVyb3ctc3BhbiwgaW5zLmpzdHJlZS1pY29uLCBs aSIsImNsaWNrLmpzdHJlZSIsZnVuY3Rpb24oYSl7dmFyIGI9ZChhLmN1cnJlbnRU YXJnZXQpO2lmKGEudGFyZ2V0LnRhZ05hbWU9PT0iQSJ8fGEudGFyZ2V0LnRhZ05h bWU9PT0iSU5TIiYmYi5jbG9zZXN0KCJsaSIpLmlzKCIuanN0cmVlLW9wZW4sIC5q c3RyZWUtY2xvc2VkIikpcmV0dXJuO2IuY2xvc2VzdCgibGkiKS5jaGlsZHJlbigi YTp2aXNpYmxlOmVxKDApIikuY2xpY2soKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdh dGlvbigpfSkuZGVsZWdhdGUoImxpIiwibW91c2VvdmVyLmpzdHJlZSIsZC5wcm94 eShmdW5jdGlvbihhKXtyZXR1cm4gYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24o KSxkKGEuY3VycmVudFRhcmdldCkuY2hpbGRyZW4oIi5qc3RyZWUtaG92ZXJlZCwg LmpzdHJlZS1jbGlja2VkIikubGVuZ3RoPyExOih0aGlzLmhvdmVyX25vZGUoYS5j dXJyZW50VGFyZ2V0KSwhMSl9LHRoaXMpKS5kZWxlZ2F0ZSgibGkiLCJtb3VzZWxl YXZlLmpzdHJlZSIsZC5wcm94eShmdW5jdGlvbihhKXtpZihkKGEuY3VycmVudFRh cmdldCkuY2hpbGRyZW4oImEiKS5oYXNDbGFzcygianN0cmVlLWhvdmVyZWQiKS5s ZW5ndGgpcmV0dXJuO3RoaXMuZGVob3Zlcl9ub2RlKGEuY3VycmVudFRhcmdldCl9 LHRoaXMpKSwoYnx8YSkmJmQudmFrYXRhLmNzcy5hZGRfc2hlZXQoe3N0cjoiLmpz dHJlZS0iK3RoaXMuZ2V0X2luZGV4KCkrIiB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9 ICIsdGl0bGU6ImpzdHJlZSJ9KX0sZGVmYXVsdHM6e30sX19kZXN0cm95OmZ1bmN0 aW9uKCl7dGhpcy5nZXRfY29udGFpbmVyKCkuY2hpbGRyZW4oIi5qc3RyZWUtd2hv bGVyb3ciKS5yZW1vdmUoKSx0aGlzLmdldF9jb250YWluZXIoKS5maW5kKCIuanN0 cmVlLXdob2xlcm93LXNwYW4iKS5yZW1vdmUoKX0sX2ZuOntfcHJlcGFyZV93aG9s ZXJvd19zcGFuOmZ1bmN0aW9uKGEpe2E9IWF8fGE9PS0xP3RoaXMuZ2V0X2NvbnRh aW5lcigpLmZpbmQoIj4gdWwgPiBsaSIpOnRoaXMuX2dldF9ub2RlKGEpO2lmKGE9 PT0hMSlyZXR1cm47YS5lYWNoKGZ1bmN0aW9uKCl7ZCh0aGlzKS5maW5kKCJsaSIp LmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9ZCh0aGlzKTtpZihhLmNo aWxkcmVuKCIuanN0cmVlLXdob2xlcm93LXNwYW4iKS5sZW5ndGgpcmV0dXJuITA7 YS5wcmVwZW5kKCI8c3BhbiBjbGFzcz0nanN0cmVlLXdob2xlcm93LXNwYW4nIHN0 eWxlPSd3aWR0aDoiK2EucGFyZW50c1VudGlsKCIuanN0cmVlIiwibGkiKS5sZW5n dGgqMTgrInB4Oyc+JiMxNjA7PC9zcGFuPiIpfSl9KX0sX3ByZXBhcmVfd2hvbGVy b3dfdWw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldF9jb250YWluZXIoKS5jaGls ZHJlbigidWwiKS5lcSgwKSxjPWEuaHRtbCgpO2EuYWRkQ2xhc3MoImpzdHJlZS13 aG9sZXJvdy1yZWFsIiksdGhpcy5kYXRhLndob2xlcm93Lmxhc3RfaHRtbCE9PWMm Jih0aGlzLmRhdGEud2hvbGVyb3cubGFzdF9odG1sPWMsdGhpcy5nZXRfY29udGFp bmVyKCkuY2hpbGRyZW4oIi5qc3RyZWUtd2hvbGVyb3ciKS5yZW1vdmUoKSx0aGlz LmdldF9jb250YWluZXIoKS5hcHBlbmQoYS5jbG9uZSgpLnJlbW92ZUNsYXNzKCJq c3RyZWUtd2hvbGVyb3ctcmVhbCIpLndyYXBBbGwoIjxkaXYgY2xhc3M9J2pzdHJl ZS13aG9sZXJvdycgLz4iKS5wYXJlbnQoKS53aWR0aChhLnBhcmVudCgpWzBdLnNj cm9sbFdpZHRoKS5jc3MoInRvcCIsKGEuaGVpZ2h0KCkrKGI/NTowKSkqLTEpLmZp bmQoImxpW2lkXSIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0 ZSgiaWQiKX0pLmVuZCgpKSl9fX0pLGQoZnVuY3Rpb24oKXt2YXIgZT0iLmpzdHJl ZSAuanN0cmVlLXdob2xlcm93LXJlYWwgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgei1p bmRleDoxOyB9IC5qc3RyZWUgLmpzdHJlZS13aG9sZXJvdy1yZWFsIGxpIHsgY3Vy c29yOnBvaW50ZXI7IH0gLmpzdHJlZSAuanN0cmVlLXdob2xlcm93LXJlYWwgYSB7 IGJvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IGJvcmRl ci1yaWdodC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9IC5qc3RyZWUg LmpzdHJlZS13aG9sZXJvdyB7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjA7 IGhlaWdodDowOyB9IC5qc3RyZWUgLmpzdHJlZS13aG9sZXJvdyB1bCwgLmpzdHJl ZSAuanN0cmVlLXdob2xlcm93IGxpIHsgd2lkdGg6MTAwJTsgfSAuanN0cmVlIC5q c3RyZWUtd2hvbGVyb3csIC5qc3RyZWUgLmpzdHJlZS13aG9sZXJvdyB1bCwgLmpz dHJlZSAuanN0cmVlLXdob2xlcm93IGxpLCAuanN0cmVlIC5qc3RyZWUtd2hvbGVy b3cgYSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHBhZGRpbmc6MCAhaW1wb3J0YW50 OyB9IC5qc3RyZWUgLmpzdHJlZS13aG9sZXJvdywgLmpzdHJlZSAuanN0cmVlLXdo b2xlcm93IHVsLCAuanN0cmVlIC5qc3RyZWUtd2hvbGVyb3cgbGkgeyBiYWNrZ3Jv dW5kOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH0uanN0cmVlIC5qc3RyZWUtd2hv bGVyb3cgaW5zLCAuanN0cmVlIC5qc3RyZWUtd2hvbGVyb3cgc3BhbiwgLmpzdHJl ZSAuanN0cmVlLXdob2xlcm93IGlucHV0IHsgZGlzcGxheTpub25lICFpbXBvcnRh bnQ7IH0uanN0cmVlIC5qc3RyZWUtd2hvbGVyb3cgYSwgLmpzdHJlZSAuanN0cmVl LXdob2xlcm93IGE6aG92ZXIgeyB0ZXh0LWluZGVudDotOTk5OXB4OyAhaW1wb3J0 YW50OyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAgIWltcG9ydGFudDsgYm9yZGVyLXJp Z2h0LXdpZHRoOjBweCAhaW1wb3J0YW50OyBib3JkZXItbGVmdC13aWR0aDowcHgg IWltcG9ydGFudDsgfSAuanN0cmVlIC5qc3RyZWUtd2hvbGVyb3ctc3BhbiB7IHBv c2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IG1hcmdpbjowcHg7IHBhZGRpbmc6MDsg aGVpZ2h0OjE4cHg7IGJvcmRlci13aWR0aDowOyBwYWRkaW5nOjA7IHotaW5kZXg6 MDsgfSI7YyYmKGUrPSIuanN0cmVlIC5qc3RyZWUtd2hvbGVyb3cgYSB7IGRpc3Bs YXk6YmxvY2s7IGhlaWdodDoxOHB4OyBtYXJnaW46MDsgcGFkZGluZzowOyBib3Jk ZXI6MDsgfSAuanN0cmVlIC5qc3RyZWUtd2hvbGVyb3ctcmVhbCBhIHsgYm9yZGVy LWNvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH0gIik7aWYoYnx8YSllKz0i LmpzdHJlZSAuanN0cmVlLXdob2xlcm93LCAuanN0cmVlIC5qc3RyZWUtd2hvbGVy b3cgbGksIC5qc3RyZWUgLmpzdHJlZS13aG9sZXJvdyB1bCwgLmpzdHJlZSAuanN0 cmVlLXdob2xlcm93IGEgeyBtYXJnaW46MDsgcGFkZGluZzowOyBsaW5lLWhlaWdo dDoxOHB4OyB9IC5qc3RyZWUgLmpzdHJlZS13aG9sZXJvdyBhIHsgZGlzcGxheTpi bG9jazsgaGVpZ2h0OjE4cHg7IGxpbmUtaGVpZ2h0OjE4cHg7IG92ZXJmbG93Omhp ZGRlbjsgfSAiO2QudmFrYXRhLmNzcy5hZGRfc2hlZXQoe3N0cjplLHRpdGxlOiJq c3RyZWUifSl9KX0oalF1ZXJ5KSxmdW5jdGlvbihhKXt2YXIgYj1bImdldENoaWxk cmVuIiwiZ2V0Q2hpbGRyZW5Db3VudCIsImdldEF0dHIiLCJnZXROYW1lIiwiZ2V0 UHJvcHMiXSxjPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9ITA7cmV0dXJuIGI9Ynx8e30s Yz1bXS5jb25jYXQoYyksYS5lYWNoKGMsZnVuY3Rpb24oYyxlKXtpZighYS5pc0Z1 bmN0aW9uKGJbZV0pKXJldHVybiBkPSExLCExfSksZH07YS5qc3RyZWUucGx1Z2lu KCJtb2RlbCIse19faW5pdDpmdW5jdGlvbigpe2lmKCF0aGlzLmRhdGEuanNvbl9k YXRhKXRocm93ImpzVHJlZSBtb2RlbDoganNUcmVlIGpzb25fZGF0YSBwbHVnaW4g bm90IGluY2x1ZGVkLiI7dGhpcy5fZ2V0X3NldHRpbmdzKCkuanNvbl9kYXRhLmRh dGE9ZnVuY3Rpb24oZCxlKXt2YXIgZj1kPT0tMT90aGlzLl9nZXRfc2V0dGluZ3Mo KS5tb2RlbC5vYmplY3Q6ZC5kYXRhKCJqc3RyZWVfbW9kZWwiKTtpZighYyhmLGIp KXJldHVybiBlLmNhbGwobnVsbCwhMSk7dGhpcy5fZ2V0X3NldHRpbmdzKCkubW9k ZWwuYXN5bmM/Zi5nZXRDaGlsZHJlbihhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMu bW9kZWxfZG9uZShhLGUpfSx0aGlzKSk6dGhpcy5tb2RlbF9kb25lKGYuZ2V0Q2hp bGRyZW4oKSxlKX19LGRlZmF1bHRzOntvYmplY3Q6ITEsaWRfcHJlZml4OiExLGFz eW5jOiExfSxfZm46e21vZGVsX2RvbmU6ZnVuY3Rpb24oYixjKXt2YXIgZD1bXSxl PXRoaXMuX2dldF9zZXR0aW5ncygpLGY9dGhpczthLmlzQXJyYXkoYil8fChiPVti XSksYS5lYWNoKGIsZnVuY3Rpb24oYixjKXt2YXIgZz1jLmdldFByb3BzKCl8fHt9 O2cuYXR0cj1jLmdldEF0dHIoKXx8e30sYy5nZXRDaGlsZHJlbkNvdW50KCkmJihn LnN0YXRlPSJjbG9zZWQiKSxnLmRhdGE9Yy5nZXROYW1lKCksYS5pc0FycmF5KGcu ZGF0YSl8fChnLmRhdGE9W2cuZGF0YV0pLGYuZGF0YS50eXBlcyYmYS5pc0Z1bmN0 aW9uKGMuZ2V0VHlwZSkmJihnLmF0dHJbZS50eXBlcy50eXBlX2F0dHJdPWMuZ2V0 VHlwZSgpKSxnLmF0dHIuaWQmJmUubW9kZWwuaWRfcHJlZml4JiYoZy5hdHRyLmlk PWUubW9kZWwuaWRfcHJlZml4K2cuYXR0ci5pZCksZy5tZXRhZGF0YXx8KGcubWV0 YWRhdGE9e30pLGcubWV0YWRhdGEuanN0cmVlX21vZGVsPWMsZC5wdXNoKGcpfSks Yy5jYWxsKG51bGwsZCl9fX0pfShqUXVlcnkpfSgpLCFmdW5jdGlvbihhKXtmdW5j dGlvbiBjKCl7dmFyIGI9dGhpcyxjPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLiRl bGVtZW50Lm9mZihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpLGQuY2FsbChiKX0s NTAwKTt0aGlzLiRlbGVtZW50Lm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQs ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYyksZC5jYWxsKGIpfSl9ZnVuY3Rpb24g ZChhKXt0aGlzLiRlbGVtZW50LmhpZGUoKS50cmlnZ2VyKCJoaWRkZW4iKSxlLmNh bGwodGhpcyl9ZnVuY3Rpb24gZShiKXt2YXIgYz10aGlzLGQ9dGhpcy4kZWxlbWVu dC5oYXNDbGFzcygiZmFkZSIpPyJmYWRlIjoiIjtpZih0aGlzLmlzU2hvd24mJnRo aXMub3B0aW9ucy5iYWNrZHJvcCl7dmFyIGU9YS5zdXBwb3J0LnRyYW5zaXRpb24m JmQ7dGhpcy4kYmFja2Ryb3A9YSgnPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3Ag JytkKyciIC8+JykuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSksdGhpcy5vcHRpb25z LmJhY2tkcm9wIT0ic3RhdGljIiYmdGhpcy4kYmFja2Ryb3AuY2xpY2soYS5wcm94 eSh0aGlzLmhpZGUsdGhpcykpLGUmJnRoaXMuJGJhY2tkcm9wWzBdLm9mZnNldFdp ZHRoLHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCJpbiIpLGU/dGhpcy4kYmFja2Ry b3Aub25lKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxiKTpiKCl9ZWxzZSF0aGlz LmlzU2hvd24mJnRoaXMuJGJhY2tkcm9wPyh0aGlzLiRiYWNrZHJvcC5yZW1vdmVD bGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5o YXNDbGFzcygiZmFkZSIpP3RoaXMuJGJhY2tkcm9wLm9uZShhLnN1cHBvcnQudHJh bnNpdGlvbi5lbmQsYS5wcm94eShmLHRoaXMpKTpmLmNhbGwodGhpcykpOmImJmIo KX1mdW5jdGlvbiBmKCl7dGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksdGhpcy4kYmFj a2Ryb3A9bnVsbH1mdW5jdGlvbiBnKCl7fSJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5j dGlvbihiLGMpe3RoaXMub3B0aW9ucz1jLHRoaXMuJGVsZW1lbnQ9YShiKS5kZWxl Z2F0ZSgnW2RhdGEtZGlzbWlzcz0ibW9kYWwiXScsImNsaWNrLmRpc21pc3MubW9k YWwiLGEucHJveHkodGhpcy5oaWRlLHRoaXMpKX07Yi5wcm90b3R5cGU9e2NvbnN0 cnVjdG9yOmIsdG9nZ2xlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdGhpcy5pc1No b3duPyJoaWRlIjoic2hvdyJdKCl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYj10aGlz O2lmKHRoaXMuaXNTaG93bilyZXR1cm47YSgiYm9keSIpLmFkZENsYXNzKCJtb2Rh bC1vcGVuIiksdGhpcy5pc1Nob3duPSEwLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigi c2hvdyIpLGcuY2FsbCh0aGlzKSxlLmNhbGwodGhpcyxmdW5jdGlvbigpe3ZhciBj PWEuc3VwcG9ydC50cmFuc2l0aW9uJiZiLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRl Iik7IWIuJGVsZW1lbnQucGFyZW50KCkubGVuZ3RoJiZiLiRlbGVtZW50LmFwcGVu ZFRvKGRvY3VtZW50LmJvZHkpLGIuJGVsZW1lbnQuc2hvdygpLGMmJmIuJGVsZW1l bnRbMF0ub2Zmc2V0V2lkdGgsYi4kZWxlbWVudC5hZGRDbGFzcygiaW4iKSxjP2Iu JGVsZW1lbnQub25lKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxmdW5jdGlvbigp e2IuJGVsZW1lbnQudHJpZ2dlcigic2hvd24iKX0pOmIuJGVsZW1lbnQudHJpZ2dl cigic2hvd24iKX0pfSxoaWRlOmZ1bmN0aW9uKGIpe2ImJmIucHJldmVudERlZmF1 bHQoKTtpZighdGhpcy5pc1Nob3duKXJldHVybjt2YXIgZT10aGlzO3RoaXMuaXNT aG93bj0hMSxhKCJib2R5IikucmVtb3ZlQ2xhc3MoIm1vZGFsLW9wZW4iKSxnLmNh bGwodGhpcyksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJoaWRlIikucmVtb3ZlQ2xh c3MoImluIiksYS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFz Q2xhc3MoImZhZGUiKT9jLmNhbGwodGhpcyk6ZC5jYWxsKHRoaXMpfX0sYS5mbi5t b2RhbD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFy IGQ9YSh0aGlzKSxlPWQuZGF0YSgibW9kYWwiKSxmPWEuZXh0ZW5kKHt9LGEuZm4u bW9kYWwuZGVmYXVsdHMsZC5kYXRhKCksdHlwZW9mIGM9PSJvYmplY3QiJiZjKTtl fHxkLmRhdGEoIm1vZGFsIixlPW5ldyBiKHRoaXMsZikpLHR5cGVvZiBjPT0ic3Ry aW5nIj9lW2NdKCk6Zi5zaG93JiZlLnNob3coKX0pfSxhLmZuLm1vZGFsLmRlZmF1 bHRzPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxhLmZuLm1vZGFs LkNvbnN0cnVjdG9yPWJ9KHdpbmRvdy5qUXVlcnkpLGZ1bmN0aW9uKCl7ZnVuY3Rp b24gYyhhKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIil0aHJvdyJTd2ZTdG9yZSBF cnJvcjogRnVuY3Rpb25zIGNhbm5vdCBiZSB1c2VkIGFzIGtleXMgb3IgdmFsdWVz LiJ9InVzZSBzdHJpY3QiO3ZhciBhPTAsYj0vW15hLXowLTlfXS9pZzt3aW5kb3cu U3dmU3RvcmU9ZnVuY3Rpb24oYyl7ZnVuY3Rpb24gZigpe3JldHVybiJTd2ZTdG9y ZV8iK2MubmFtZXNwYWNlKyJfIithKyt9ZnVuY3Rpb24gZyhhKXt2YXIgYj1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZG9jdW1lbnQuYm9keS5h cHBlbmRDaGlsZChiKSxiLmlkPWYoKSxhfHwoYi5zdHlsZS5wb3NpdGlvbj0iYWJz b2x1dGUiLGIuc3R5bGUudG9wPSItMjAwMHB4IixiLnN0eWxlLmxlZnQ9Ii0yMDAw cHgiKSxifWM9Y3x8e307dmFyIGQ9e3N3Zl91cmw6InN0b3JhZ2Uuc3dmIixuYW1l c3BhY2U6InN3ZnN0b3JlIixwYXRoOm51bGwsZGVidWc6ITEsdGltZW91dDoxMCxv bnJlYWR5Om51bGwsb25lcnJvcjpudWxsfSxlO2ZvcihlIGluIGQpZC5oYXNPd25Q cm9wZXJ0eShlKSYmKGMuaGFzT3duUHJvcGVydHkoZSl8fChjW2VdPWRbZV0pKTtj Lm5hbWVzcGFjZT1jLm5hbWVzcGFjZS5yZXBsYWNlKGIsIl8iKTtpZih3aW5kb3cu U3dmU3RvcmVbYy5uYW1lc3BhY2VdKXRocm93IlRoZXJlIGlzIGFscmVhZHkgYW4g aW5zdGFuY2Ugb2YgU3dmU3RvcmUgdXNpbmcgdGhlICciK2MubmFtZXNwYWNlKyIn IG5hbWVzcGFjZS4gVXNlIHRoYXQgaW5zdGFuY2Ugb3Igc3BlY2lmeSBhbiBhbHRl cm5hdGUgbmFtZXNwYWNlIGluIHRoZSBjb25maWcuIjt0aGlzLmNvbmZpZz1jO2lm KGMuZGVidWcpe2lmKHR5cGVvZiBjb25zb2xlPT0idW5kZWZpbmVkIil7dmFyIGg9 ZyghMCk7d2luZG93LmNvbnNvbGU9e2xvZzpmdW5jdGlvbihhKXt2YXIgYj1nKCEw KTtiLmlubmVySFRNTD1hLGguYXBwZW5kQ2hpbGQoYil9fX10aGlzLmxvZz1mdW5j dGlvbihhLGIsZCl7Yj1iPT09InN3ZlN0b3JlIj8ic3dmIjpiLHR5cGVvZiBjb25z b2xlW2FdIT0idW5kZWZpbmVkIj9jb25zb2xlW2FdKCJTd2ZTdG9yZSAtICIrYy5u YW1lc3BhY2UrIiAoIitiKyIpOiAiK2QpOmNvbnNvbGUubG9nKCJTd2ZTdG9yZSAt ICIrYy5uYW1lc3BhY2UrIjogIithKyIgKCIrYisiKTogIitkKX19ZWxzZSB0aGlz LmxvZz1mdW5jdGlvbigpe307dGhpcy5sb2coImluZm8iLCJqcyIsIkluaXRpYWxp emluZy4uLiIpLFN3ZlN0b3JlW2MubmFtZXNwYWNlXT10aGlzO3ZhciBpPWcoYy5k ZWJ1Zyksaj1mKCksaz0ibG9nZm49U3dmU3RvcmUuIitjLm5hbWVzcGFjZSsiLmxv ZyZhbXA7Iisib25sb2FkPVN3ZlN0b3JlLiIrYy5uYW1lc3BhY2UrIi5vbmxvYWQm YW1wOyIrIm9uZXJyb3I9U3dmU3RvcmUuIitjLm5hbWVzcGFjZSsiLm9uZXJyb3Im YW1wOyIrKGMucGF0aD8iTFNPUGF0aD0iK2MucGF0aCsiJmFtcDsiOiIiKSsiTFNP TmFtZT0iK2MubmFtZXNwYWNlO2kuaW5uZXJIVE1MPSc8b2JqZWN0IGhlaWdodD0i MTAwIiB3aWR0aD0iNTAwIiBjb2RlYmFzZT0iaHR0cHM6Ly9kb3dubG9hZC5tYWNy b21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIi IGlkPSInK2orJyIgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2 QjgtNDQ0NTUzNTQwMDAwIj4nKydcdDxwYXJhbSB2YWx1ZT0iJytjLnN3Zl91cmwr JyIgbmFtZT0ibW92aWUiPicrJ1x0PHBhcmFtIHZhbHVlPSInK2srJyIgbmFtZT0i Rmxhc2hWYXJzIj4nKydcdDxwYXJhbSB2YWx1ZT0iYWx3YXlzIiBuYW1lPSJhbGxv d1NjcmlwdEFjY2VzcyI+JysnXHQ8ZW1iZWQgaGVpZ2h0PSIzNzUiIGFsaWduPSJt aWRkbGUiIHdpZHRoPSI1MDAiIHBsdWdpbnNwYWdlPSJodHRwczovL3d3dy5tYWNy b21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciIgJysnZmxhc2h2YXJzPSInK2sr JyIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93c2Ny aXB0YWNjZXNzPSJhbHdheXMiIHF1YWxpdHk9ImhpZ2giIGxvb3A9ImZhbHNlIiBw bGF5PSJ0cnVlIiAnKyduYW1lPSInK2orJyIgYmdjb2xvcj0iI2ZmZmZmZiIgc3Jj PSInK2Muc3dmX3VybCsnIj4nKyI8L29iamVjdD4iLHRoaXMuc3dmPWRvY3VtZW50 W2pdfHx3aW5kb3dbal0sdGhpcy5fdGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9u KCl7U3dmU3RvcmVbYy5uYW1lc3BhY2VdLmxvZygiZXJyb3IiLCJqcyIsIlRpbWVv dXQgcmVhY2hlZCwgYXNzdW1pbmcgIitjLnN3Zl91cmwrIiBmYWlsZWQgdG8gbG9h ZCBhbmQgZmlyaW5nIHRoZSBvbmVycm9yIGNhbGxiYWNrLiIpLGMub25lcnJvciYm Yy5vbmVycm9yKCl9LGMudGltZW91dCoxZTMpfSxTd2ZTdG9yZS5wcm90b3R5cGU9 e3ZlcnNpb246IjEuNyIscmVhZHk6ITEsc2V0OmZ1bmN0aW9uKGEsYil7dGhpcy5f Y2hlY2tSZWFkeSgpLGMoYSksYyhiKSx0aGlzLnN3Zi5zZXQoYSxiKX0sZ2V0OmZ1 bmN0aW9uKGEpe3JldHVybiB0aGlzLl9jaGVja1JlYWR5KCksYyhhKSx0aGlzLnN3 Zi5nZXQoYSl9LGdldEFsbDpmdW5jdGlvbigpe3RoaXMuX2NoZWNrUmVhZHkoKTt2 YXIgYT10aGlzLnN3Zi5nZXRBbGwoKTtyZXR1cm4gYS5fX2ZsYXNoQnVnRml4JiZk ZWxldGUgYS5fX2ZsYXNoQnVnRml4LGF9LGNsZWFyOmZ1bmN0aW9uKGEpe3RoaXMu X2NoZWNrUmVhZHkoKSxjKGEpLHRoaXMuc3dmLmNsZWFyKGEpfSxfY2hlY2tSZWFk eTpmdW5jdGlvbigpe2lmKCF0aGlzLnJlYWR5KXRocm93IlN3ZlN0b3JlIGlzIG5v dCB5ZXQgZmluaXNoZWQgaW5pdGlhbGl6aW5nLiBQYXNzIGEgY29uZmlnLm9ucmVh ZHkgY2FsbGJhY2sgb3Igd2FpdCB1bnRpbCB0aGlzLnJlYWR5IGlzIHRydWUgYmVm b3JlIHRyeWluZyB0byB1c2UgYSBTd2ZTdG9yZSBpbnN0YW5jZS4ifSxvbmxvYWQ6 ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVh clRpbWVvdXQoYS5fdGltZW91dCksYS5yZWFkeT0hMCxhLmNvbmZpZy5vbnJlYWR5 JiZhLmNvbmZpZy5vbnJlYWR5KCl9LDApfSxvbmVycm9yOmZ1bmN0aW9uKCl7Y2xl YXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLHRoaXMuY29uZmlnLm9uZXJyb3ImJnRo aXMuY29uZmlnLm9uZXJyb3IoKX19fSgp ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=share.js Content-Type: application/x-javascript; name=share.js Content-Location: http://yandex.st/share/share.js Content-Transfer-Encoding: Base64 IWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSBpbiBXfHwoV1tl XT1uZXcgUmVnRXhwKCIoXnxcXHMrKSIrZSsiKFxccyt8JCkiLCIiKSksV1tlXX1m dW5jdGlvbiByKGUsdCl7cmV0dXJuIG8odCkudGVzdChlLmNsYXNzTmFtZXx8IiIp fWZ1bmN0aW9uIGEoZSx0KXtyKGUsdCl8fChlLmNsYXNzTmFtZSs9IiAiK3QpfWZ1 bmN0aW9uIG4oZSx0KXtlJiYoZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUucmVwbGFj ZShuZXcgUmVnRXhwKCIoKD86XnxcXHMrKSIrdCsifCIrdCsiKD86XFxzK3wkKSki LCJnIiksIiIpKX1mdW5jdGlvbiBpKGUsdCl7cihlLHQpP24oZSx0KTphKGUsdCl9 ZnVuY3Rpb24gcChlLHQpe3ZhciBvPWU7ZG8gaWYocihvLHQpKXJldHVybiBvO3do aWxlKG89by5wYXJlbnROb2RlKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBzKGUsdCl7 dmFyIG89ZS5yZWxhdGVkVGFyZ2V0O3RyeXtmb3IoO28mJm8hPT10OylvPW8ucGFy ZW50Tm9kZTtpZihvIT09dClyZXR1cm4hMH1jYXRjaChyKXt9fWZ1bmN0aW9uIGIo ZSl7dHJ5e2UucHJldmVudERlZmF1bHQoKX1jYXRjaCh0KXtlLnJldHVyblZhbHVl PSExfX1mdW5jdGlvbiB1KGUpe3RyeXtlLnN0b3BQcm9wYWdhdGlvbigpfWNhdGNo KHQpe2UuY2FuY2VsQnViYmxlPSEwfX1mdW5jdGlvbiBsKCl7dmFyIGU9ZnVuY3Rp b24oZSl7ZT1lLnRvTG93ZXJDYXNlKCk7dmFyIHQ9Lyh3ZWJraXQpWyBcL10oW1x3 Ll0rKS8uZXhlYyhlKXx8LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5d KykvLmV4ZWMoZSl8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMoZSl8fCEvY29tcGF0 aWJsZS8udGVzdChlKSYmLyhtb3ppbGxhKSg/Oi4qPyBydjooW1x3Ll0rKSk/Ly5l eGVjKGUpfHxbXTtyZXR1cm57YnJvd3Nlcjp0WzFdfHwiIix2ZXJzaW9uOnRbMl18 fCIwIn19KG5hdmlnYXRvci51c2VyQWdlbnQpLG89Jy5iLXNoYXJlLXBvcHVwLXdy YXB7ei1pbmRleDoxMDczNzQxODIzO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjUw MHB4fS5iLXNoYXJlLXBvcHVwe3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA3 Mzc0MTgyMztib3JkZXI6MXB4IHNvbGlkICM4ODg7YmFja2dyb3VuZDojRkZGO2Nv bG9yOiMwMDB9LmItc2hhcmUtcG9wdXAtd3JhcCAuYi1zaGFyZS1wb3B1cF9kb3du e3RvcDowfS5iLXNoYXJlLXBvcHVwLXdyYXAgLmItc2hhcmUtcG9wdXBfdXB7Ym90 dG9tOjB9LmItc2hhcmUtcG9wdXAtd3JhcF9zdGF0ZV9oaWRkZW57cG9zaXRpb246 YWJzb2x1dGUhaW1wb3J0YW50O3RvcDotOTk5OXB4IWltcG9ydGFudDtyaWdodDph dXRvIWltcG9ydGFudDtib3R0b206YXV0byFpbXBvcnRhbnQ7bGVmdDotOTk5OXB4 IWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnR9LmItc2hhcmUt cG9wdXAseDpudGgtY2hpbGQoMSl7Ym9yZGVyOjA7cGFkZGluZzoxcHghaW1wb3J0 YW50fUBtZWRpYSBhbGwgYW5kIChyZXNvbHV0aW9uPTApey5iLXNoYXJlLXBvcHVw LHg6bnRoLWNoaWxkKDEpLHg6LW8tcHJlZm9jdXN7cGFkZGluZzowIWltcG9ydGFu dDtib3JkZXI6MXB4IHNvbGlkICM4ODh9fS5iLXNoYXJlLXBvcHVwX19pe2Rpc3Bs YXk6LW1vei1pbmxpbmUtYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6 NXB4IDAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbjt2ZXJ0aWNhbC1hbGlnbjp0 b3A7d2hpdGUtc3BhY2U6bm93cmFwO3Zpc2liaWxpdHk6dmlzaWJsZTtiYWNrZ3Jv dW5kOiNGRkY7LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDlweCByZ2JhKDAsMCww LC42KTstbW96LWJveC1zaGFkb3c6MCAycHggOXB4IHJnYmEoMCwwLDAsLjYpO2Jv eC1zaGFkb3c6MCAycHggOXB4IHJnYmEoMCwwLDAsLjYpfS5iLXNoYXJlLXBvcHVw X19pdGVte2ZvbnQ6MWVtLzEuMjVlbSBBcmlhbCxzYW5zLXNlcmlmO2Rpc3BsYXk6 YmxvY2s7cGFkZGluZzo1cHggMTVweCFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm93 cmFwO2JhY2tncm91bmQ6I0ZGRn0uYi1zaGFyZS1wb3B1cF9faXRlbSxhLmItc2hh cmUtcG9wdXBfX2l0ZW06bGluayxhLmItc2hhcmUtcG9wdXBfX2l0ZW06dmlzaXRl ZHt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0 YW50fWEuYi1zaGFyZS1wb3B1cF9faXRlbXtjdXJzb3I6cG9pbnRlcn1hLmItc2hh cmUtcG9wdXBfX2l0ZW0gLmItc2hhcmUtcG9wdXBfX2l0ZW1fX3RleHR7ZGlzcGxh eTppbmxpbmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMUEzREMx fWEuYi1zaGFyZS1wb3B1cF9faXRlbTpob3Zlcnt3b3JkLXNwYWNpbmc6MH1hLmIt c2hhcmUtcG9wdXBfX2l0ZW06aG92ZXIgLmItc2hhcmUtcG9wdXBfX2l0ZW1fX3Rl eHR7Y29sb3I6cmVkO2N1cnNvcjpwb2ludGVyfS5iLXNoYXJlLXBvcHVwX19pY29u e2Rpc3BsYXk6LW1vei1pbmxpbmUtYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21h cmdpbjotM3B4IDAgMDtwYWRkaW5nOjAgNXB4IDAgMCFpbXBvcnRhbnQ7dmVydGlj YWwtYWxpZ246bWlkZGxlfS5iLXNoYXJlLXBvcHVwX19pY29uX2lucHV0e3dpZHRo OjIxcHg7aGVpZ2h0OjE2cHg7bWFyZ2luLXRvcDotNnB4O3BhZGRpbmc6MCFpbXBv cnRhbnR9LmItc2hhcmUtcG9wdXBfX2ljb25fX2lucHV0e21hcmdpbi1yaWdodDow O21hcmdpbi1sZWZ0OjJweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmItc2hhcmUtcG9w dXBfX3NwYWNlcntkaXNwbGF5OmJsb2NrO3BhZGRpbmctdG9wOjEwcHghaW1wb3J0 YW50fS5iLXNoYXJlLXBvcHVwX19oZWFkZXJ7Zm9udDo4NiUvMWVtIFZlcmRhbmEs c2Fucy1zZXJpZjtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTBweCAxNXB4IDVweCFp bXBvcnRhbnQ7Y29sb3I6Izk5OX0uYi1zaGFyZS1wb3B1cF9faGVhZGVyX2ZpcnN0 e3BhZGRpbmctdG9wOjVweCFpbXBvcnRhbnR9LmItc2hhcmUtcG9wdXBfX2lucHV0 e2ZvbnQ6ODYlLzFlbSBWZXJkYW5hLHNhbnMtc2VyaWY7ZGlzcGxheTpibG9jaztw YWRkaW5nOjVweCAxNXB4IWltcG9ydGFudDtjb2xvcjojOTk5O3RleHQtYWxpZ246 bGVmdH0uYi1zaGFyZS1wb3B1cF9faW5wdXRfX2lucHV0e2ZvbnQ6MWVtLzFlbSBW ZXJkYW5hLHNhbnMtc2VyaWY7ZGlzcGxheTpibG9jazt3aWR0aDoxMHB4O21hcmdp bjo1cHggMCAwOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94 LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtyZXNpemU6 bm9uZTt0ZXh0LWFsaWduOmxlZnQ7ZGlyZWN0aW9uOmx0cn0uYi1zaGFyZS1wb3B1 cF9kb3duIC5iLXNoYXJlLXBvcHVwX3dpdGgtbGluayAuYi1zaGFyZS1wb3B1cF9f aW5wdXRfbGlua3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6NXB4O3JpZ2h0OjA7bGVm dDowfS5iLXNoYXJlLXBvcHVwX3VwIC5iLXNoYXJlLXBvcHVwX3dpdGgtbGluayAu Yi1zaGFyZS1wb3B1cF9faW5wdXRfbGlua3twb3NpdGlvbjphYnNvbHV0ZTtyaWdo dDowO2JvdHRvbTo1cHg7bGVmdDowfS5iLXNoYXJlLXBvcHVwX2Rvd24gLmItc2hh cmUtcG9wdXBfd2l0aC1saW5re3BhZGRpbmctdG9wOjU1cHghaW1wb3J0YW50fS5i LXNoYXJlLXBvcHVwX3VwIC5iLXNoYXJlLXBvcHVwX3dpdGgtbGlua3twYWRkaW5n LWJvdHRvbTo1NXB4IWltcG9ydGFudH0uYi1zaGFyZS1wb3B1cF9kb3duIC5iLXNo YXJlLXBvcHVwX2V4cGFuZGFibGUgLmItc2hhcmUtcG9wdXBfX21haW57cGFkZGlu Zy1ib3R0b206MjVweCFpbXBvcnRhbnR9LmItc2hhcmUtcG9wdXBfdXAgLmItc2hh cmUtcG9wdXBfZXhwYW5kYWJsZSAuYi1zaGFyZS1wb3B1cF9fbWFpbntwYWRkaW5n LXRvcDoyNXB4IWltcG9ydGFudH0uYi1zaGFyZS1wb3B1cF9kb3duIC5iLXNoYXJl LXBvcHVwX3lhbmRleGVke3BhZGRpbmctYm90dG9tOjEwcHghaW1wb3J0YW50fS5i LXNoYXJlLXBvcHVwX3VwIC5iLXNoYXJlLXBvcHVwX3lhbmRleGVke3BhZGRpbmct dG9wOjEwcHghaW1wb3J0YW50fS5iLXNoYXJlLXBvcHVwX195YW5kZXh7cG9zaXRp b246YWJzb2x1dGU7cmlnaHQ6NHB4O2JvdHRvbToycHg7Zm9udDo3OC4xMjUlLzFl bSBWZXJkYW5hLHNhbnMtc2VyaWY7cGFkZGluZzozcHghaW1wb3J0YW50O2JhY2tn cm91bmQ6MCAwfWEuYi1zaGFyZS1wb3B1cF9feWFuZGV4OmxpbmssYS5iLXNoYXJl LXBvcHVwX195YW5kZXg6dmlzaXRlZHtjb2xvcjojQzZDNUM1O3RleHQtZGVjb3Jh dGlvbjpub25lfWEuYi1zaGFyZS1wb3B1cF9feWFuZGV4Omxpbms6aG92ZXIsYS5i LXNoYXJlLXBvcHVwX195YW5kZXg6dmlzaXRlZDpob3Zlcntjb2xvcjpyZWQ7dGV4 dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uYi1zaGFyZS1wb3B1cF91cCAuYi1zaGFy ZS1wb3B1cF9feWFuZGV4e3RvcDoycHg7Ym90dG9tOmF1dG99LmItc2hhcmUtcG9w dXBfZXhwYW5kYWJsZSAuYi1zaGFyZS1wb3B1cF9feWFuZGV4e3JpZ2h0OmF1dG87 bGVmdDo0cHh9LmItc2hhcmUtcG9wdXBfdG8tcmlnaHQgLmItc2hhcmUtcG9wdXBf ZXhwYW5kYWJsZSAuYi1zaGFyZS1wb3B1cF9feWFuZGV4e3JpZ2h0OjRweDtsZWZ0 OmF1dG99LmItc2hhcmUtcG9wdXBfX2V4cGFuZGVyIC5iLXNoYXJlLXBvcHVwX19p dGVte3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTo1cHg7Zm9udDo4NiUvMWVtIFZl cmRhbmEsc2Fucy1zZXJpZjttYXJnaW46MTBweCAwIDA7cGFkZGluZzo1cHggMTBw eCFpbXBvcnRhbnQ7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Izk5OTtiYWNrZ3JvdW5k OjAgMH0uYi1zaGFyZS1wb3B1cF90by1yaWdodCwuYi1zaGFyZS1wb3B1cF90by1y aWdodCAuYi1zaGFyZS1wb3B1cF9fZXhwYW5kZXJ7ZGlyZWN0aW9uOnJ0bH0uYi1z aGFyZS1wb3B1cF90by1yaWdodCAuYi1zaGFyZS1wb3B1cF9fZXhwYW5kZXIgLmIt c2hhcmUtcG9wdXBfX2ljb257cGFkZGluZzowIDAgMCA1cHghaW1wb3J0YW50fS5i LXNoYXJlLXBvcHVwX3VwIC5iLXNoYXJlLXBvcHVwX19leHBhbmRlciAuYi1zaGFy ZS1wb3B1cF9faXRlbXt0b3A6LTVweDtib3R0b206YXV0b30uYi1zaGFyZS1wb3B1 cF9fZXhwYW5kZXIgLmItc2hhcmUtcG9wdXBfX2l0ZW06aG92ZXIgLmItc2hhcmUt cG9wdXBfX2l0ZW1fX3RleHR7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uYi1z aGFyZS1wb3B1cF9fZXhwYW5kZXIgLmItaWNvX2FjdGlvbl9yYXJyLC5iLXNoYXJl LXBvcHVwX3RvLXJpZ2h0IC5iLXNoYXJlLXBvcHVwX19leHBhbmRlciAuYi1pY29f YWN0aW9uX2xhcnIsLmItc2hhcmUtcG9wdXBfZnVsbCAuYi1zaGFyZS1wb3B1cF9f ZXhwYW5kZXIgLmItaWNvX2FjdGlvbl9sYXJyLC5iLXNoYXJlLXBvcHVwX3RvLXJp Z2h0IC5iLXNoYXJlLXBvcHVwX2Z1bGwgLmItc2hhcmUtcG9wdXBfX2V4cGFuZGVy IC5iLWljb19hY3Rpb25fcmFyciwuYi1zaGFyZS1wb3B1cF9fZXhwYW5kZXIgLmIt c2hhcmUtcG9wdXBfX2l0ZW1fX3RleHRfY29sbGFwc2UsLmItc2hhcmUtcG9wdXBf ZnVsbCAuYi1zaGFyZS1wb3B1cF9faXRlbV9fdGV4dF9leHBhbmR7ZGlzcGxheTpu b25lfS5iLXNoYXJlLXBvcHVwX3RvLXJpZ2h0IC5iLXNoYXJlLXBvcHVwX19leHBh bmRlciAuYi1pY29fYWN0aW9uX3JhcnIsLmItc2hhcmUtcG9wdXBfZnVsbCAuYi1z aGFyZS1wb3B1cF9faXRlbV9fdGV4dF9jb2xsYXBzZSwuYi1zaGFyZS1wb3B1cF9m dWxsIC5iLXNoYXJlLXBvcHVwX19leHBhbmRlciAuYi1pY29fYWN0aW9uX3JhcnIs LmItc2hhcmUtcG9wdXBfdG8tcmlnaHQgLmItc2hhcmUtcG9wdXBfZnVsbCAuYi1z aGFyZS1wb3B1cF9fZXhwYW5kZXIgLmItaWNvX2FjdGlvbl9sYXJye2Rpc3BsYXk6 aW5saW5lfS5iLWljb19hY3Rpb25fcmFyciwuYi1pY29fYWN0aW9uX2xhcnJ7d2lk dGg6OHB4O2hlaWdodDo3cHg7Ym9yZGVyOjB9LmItc2hhcmUtcG9wdXBfX21haW4s LmItc2hhcmUtcG9wdXBfX2V4dHJhe2RpcmVjdGlvbjpsdHI7dmVydGljYWwtYWxp Z246Ym90dG9tO3RleHQtYWxpZ246bGVmdH0uYi1zaGFyZS1wb3B1cF9kb3duIC5i LXNoYXJlLXBvcHVwX19tYWluLC5iLXNoYXJlLXBvcHVwX2Rvd24gLmItc2hhcmUt cG9wdXBfX2V4dHJhe3ZlcnRpY2FsLWFsaWduOnRvcH0uYi1zaGFyZS1wb3B1cF9f bWFpbntkaXNwbGF5Oi1tb3otaW5saW5lLXN0YWNrO2Rpc3BsYXk6aW5saW5lLWJs b2NrfS5iLXNoYXJlLXBvcHVwX19leHRyYXtkaXNwbGF5Om5vbmU7bWFyZ2luOjAg LTEwcHggMCAwfS5iLXNoYXJlLXBvcHVwX2Z1bGwgLmItc2hhcmUtcG9wdXBfX2V4 dHJhe2Rpc3BsYXk6LW1vei1pbmxpbmUtc3RhY2s7ZGlzcGxheTppbmxpbmUtYmxv Y2t9LmItc2hhcmUtcG9wdXBfdG8tcmlnaHQgLmItc2hhcmUtcG9wdXBfX2V4dHJh e21hcmdpbjowIDAgMCAtMTBweH0uYi1zaGFyZS1wb3B1cF9fdGFpbHtwb3NpdGlv bjphYnNvbHV0ZTt3aWR0aDoyMXB4O2hlaWdodDoxMHB4O21hcmdpbjowIDAgMCAt MTFweH0uYi1zaGFyZS1wb3B1cF9kb3duIC5iLXNoYXJlLXBvcHVwX190YWlse3Rv cDotMTBweDtiYWNrZ3JvdW5kOnVybCgiLy95YXN0YXRpYy5uZXQvc2hhcmUvc3Rh dGljL2Itc2hhcmUtcG9wdXBfZG93bl9fdGFpbC5naWYiKSAwIDAgbm8tcmVwZWF0 fS5iLXNoYXJlLXBvcHVwX3VwIC5iLXNoYXJlLXBvcHVwX190YWlse2JvdHRvbTot MTBweDtiYWNrZ3JvdW5kOnVybCgiLy95YXN0YXRpYy5uZXQvc2hhcmUvc3RhdGlj L2Itc2hhcmUtcG9wdXBfdXBfX3RhaWwuZ2lmIikgMCAwIG5vLXJlcGVhdH0uYi1z aGFyZS1wb3B1cF9kb3duIC5iLXNoYXJlLXBvcHVwX190YWlsLHg6bnRoLWNoaWxk KDEpe3RvcDotOXB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKCIvL3lhc3RhdGljLm5l dC9zaGFyZS9zdGF0aWMvYi1zaGFyZS1wb3B1cF9kb3duX190YWlsLnBuZyIpfS5i LXNoYXJlLXBvcHVwX3VwIC5iLXNoYXJlLXBvcHVwX190YWlsLHg6bnRoLWNoaWxk KDEpe2JvdHRvbTotOXB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKCIvL3lhc3RhdGlj Lm5ldC9zaGFyZS9zdGF0aWMvYi1zaGFyZS1wb3B1cF91cF9fdGFpbC5wbmciKX1A bWVkaWEgYWxsIGFuZCAocmVzb2x1dGlvbj0wKXsuYi1zaGFyZS1wb3B1cF9kb3du IC5iLXNoYXJlLXBvcHVwX190YWlsLHg6bnRoLWNoaWxkKDEpLHg6LW8tcHJlZm9j dXN7dG9wOi0xMHB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKCIvL3lhc3RhdGljLm5l dC9zaGFyZS9zdGF0aWMvYi1zaGFyZS1wb3B1cF9kb3duX190YWlsLmdpZiIpfS5i LXNoYXJlLXBvcHVwX3VwIC5iLXNoYXJlLXBvcHVwX190YWlsLHg6bnRoLWNoaWxk KDEpLHg6LW8tcHJlZm9jdXN7Ym90dG9tOi0xMHB4O2JhY2tncm91bmQtaW1hZ2U6 dXJsKCIvL3lhc3RhdGljLm5ldC9zaGFyZS9zdGF0aWMvYi1zaGFyZS1wb3B1cF91 cF9fdGFpbC5naWYiKX19LmItc2hhcmUtcG9wdXAgLmItc2hhcmUtcG9wdXBfc2hv d19mb3JtX21haWwsLmItc2hhcmUtcG9wdXAgLmItc2hhcmUtcG9wdXBfc2hvd19m b3JtX2h0bWx7cGFkZGluZzowIWltcG9ydGFudH0uYi1zaGFyZS1wb3B1cCAuYi1z aGFyZS1wb3B1cF9zaG93X2Zvcm1fbWFpbCAuYi1zaGFyZS1wb3B1cF9fbWFpbiwu Yi1zaGFyZS1wb3B1cCAuYi1zaGFyZS1wb3B1cF9zaG93X2Zvcm1faHRtbCAuYi1z aGFyZS1wb3B1cF9fbWFpbiwuYi1zaGFyZS1wb3B1cCAuYi1zaGFyZS1wb3B1cF9z aG93X2Zvcm0gLmItc2hhcmUtcG9wdXBfX21haW4sLmItc2hhcmUtcG9wdXAgLmIt c2hhcmUtcG9wdXBfc2hvd19mb3JtX21haWwgLmItc2hhcmUtcG9wdXBfX2V4dHJh LC5iLXNoYXJlLXBvcHVwIC5iLXNoYXJlLXBvcHVwX3Nob3dfZm9ybV9odG1sIC5i LXNoYXJlLXBvcHVwX19leHRyYSwuYi1zaGFyZS1wb3B1cCAuYi1zaGFyZS1wb3B1 cF9zaG93X2Zvcm0gLmItc2hhcmUtcG9wdXBfX2V4dHJhe2hlaWdodDoxNXB4O3Bh ZGRpbmc6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuO3Zpc2liaWxpdHk6aGlk ZGVufS5iLXNoYXJlLXBvcHVwX3Nob3dfZm9ybV9tYWlsIC5iLXNoYXJlLXBvcHVw X19leHBhbmRlciwuYi1zaGFyZS1wb3B1cF9zaG93X2Zvcm1faHRtbCAuYi1zaGFy ZS1wb3B1cF9fZXhwYW5kZXIsLmItc2hhcmUtcG9wdXBfc2hvd19mb3JtIC5iLXNo YXJlLXBvcHVwX19leHBhbmRlciwuYi1zaGFyZS1wb3B1cF9zaG93X2Zvcm1fbWFp bCAuYi1zaGFyZS1wb3B1cF9faW5wdXRfbGluaywuYi1zaGFyZS1wb3B1cF9zaG93 X2Zvcm1faHRtbCAuYi1zaGFyZS1wb3B1cF9faW5wdXRfbGluaywuYi1zaGFyZS1w b3B1cF9zaG93X2Zvcm0gLmItc2hhcmUtcG9wdXBfX2lucHV0X2xpbmt7ZGlzcGxh eTpub25lfS5iLXNoYXJlLXBvcHVwX19mb3Jte3Bvc2l0aW9uOnJlbGF0aXZlO2Rp c3BsYXk6bm9uZTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo1cHggMCAwIWltcG9y dGFudDttYXJnaW46MCAwIC0xNXB4O3doaXRlLXNwYWNlOm5vcm1hbH0uYi1zaGFy ZS1wb3B1cF9zaG93X2Zvcm1fbWFpbCAuYi1zaGFyZS1wb3B1cF9fZm9ybV9tYWls LC5iLXNoYXJlLXBvcHVwX3Nob3dfZm9ybV9odG1sIC5iLXNoYXJlLXBvcHVwX19m b3JtX2h0bWwsLmItc2hhcmUtcG9wdXBfc2hvd19mb3JtIC5iLXNoYXJlLXBvcHVw X19mb3Jte2Rpc3BsYXk6YmxvY2t9LmItc2hhcmUtcG9wdXBfX2Zvcm1fX2xpbmt7 cGFkZGluZzo1cHghaW1wb3J0YW50O21hcmdpbjowIDAgNXB4IDEwcHg7dGV4dC1k ZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjojMUEzREMx fS5iLXNoYXJlLXBvcHVwX19mb3JtX19saW5rLC5iLXNoYXJlLXBvcHVwX19mb3Jt X19idXR0b257Zm9udDo4NiUvMS40NTQ1ZW0gVmVyZGFuYSxzYW5zLXNlcmlmO2Zs b2F0OmxlZnQ7ZGlzcGxheTppbmxpbmV9LmItc2hhcmUtcG9wdXBfX2Zvcm1fX2J1 dHRvbnttYXJnaW46NXB4IDAgMCAxNXB4fS5iLXNoYXJlLXBvcHVwX19mb3JtX19j bG9zZXtmb250Ojg2JS8xLjQ1NDVlbSBWZXJkYW5hLHNhbnMtc2VyaWY7ZmxvYXQ6 cmlnaHQ7ZGlzcGxheTppbmxpbmU7cGFkZGluZzo1cHghaW1wb3J0YW50O21hcmdp bjowIDEwcHggNXB4IDA7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Izk5OX1hLmItc2hh cmUtcG9wdXBfX2Zvcm1fX2xpbms6aG92ZXIsYS5iLXNoYXJlLXBvcHVwX19mb3Jt X19jbG9zZTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2NvbG9yOnJl ZH0uYi1zaGFyZS1wb3B1cF9mb250X2ZpeGVkIC5iLXNoYXJlLXBvcHVwX19pdGVt e2ZvbnQtc2l6ZToxMi44cHh9LmItc2hhcmUtcG9wdXBfZm9udF9maXhlZCAuYi1z aGFyZS1wb3B1cF9faGVhZGVyLC5iLXNoYXJlLXBvcHVwX2ZvbnRfZml4ZWQgLmIt c2hhcmUtcG9wdXBfX2lucHV0LC5iLXNoYXJlLXBvcHVwX2ZvbnRfZml4ZWQgLmIt c2hhcmUtcG9wdXBfX2V4cGFuZGVyIC5iLXNoYXJlLXBvcHVwX19pdGVtLC5iLXNo YXJlLXBvcHVwX2ZvbnRfZml4ZWQgLmItc2hhcmUtcG9wdXBfX2Zvcm1fX2xpbmss LmItc2hhcmUtcG9wdXBfZm9udF9maXhlZCAuYi1zaGFyZS1wb3B1cF9fZm9ybV9f YnV0dG9uLC5iLXNoYXJlLXBvcHVwX2ZvbnRfZml4ZWQgLmItc2hhcmUtcG9wdXBf X2Zvcm1fX2Nsb3Nle2ZvbnQtc2l6ZToxMXB4fS5iLXNoYXJlLXBvcHVwX2ZvbnRf Zml4ZWQgLmItc2hhcmUtcG9wdXBfX3lhbmRleHtmb250LXNpemU6MTBweH0uYi1z aGFyZS1mb3JtLWJ1dHRvbntmb250Ojg2JS8xN3B4IFZlcmRhbmEsQXJpYWwsc2Fu cy1zZXJpZjtkaXNwbGF5Oi1tb3otaW5saW5lLWJveDtkaXNwbGF5OmlubGluZS1i bG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTlweDttYXJnaW46MCAzcHg7 cGFkZGluZzowIDRweDtjdXJzb3I6ZGVmYXVsdDt3aGl0ZS1zcGFjZTpub3dyYXA7 dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O2NvbG9yOiMwMDAhaW1wb3J0 YW50O2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtiYWNrZ3JvdW5kOnVybCgiLy95 YXN0YXRpYy5uZXQvc2hhcmUvc3RhdGljL2Itc2hhcmUtZm9ybS1idXR0b24ucG5n IikgMCAtMjBweCByZXBlYXQteH0uYi1zaGFyZS1mb3JtLWJ1dHRvbjpsaW5rOmhv dmVyLC5iLXNoYXJlLWZvcm0tYnV0dG9uOnZpc2l0ZWQ6aG92ZXJ7Y29sb3I6IzAw MCFpbXBvcnRhbnR9LmItc2hhcmUtZm9ybS1idXR0b25fX2JlZm9yZSwuYi1zaGFy ZS1mb3JtLWJ1dHRvbl9fYWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6M3B4 O2hlaWdodDoxOXB4O2JhY2tncm91bmQ6dXJsKCIvL3lhc3RhdGljLm5ldC9zaGFy ZS9zdGF0aWMvYi1zaGFyZS1mb3JtLWJ1dHRvbi5wbmciKX0uYi1zaGFyZS1mb3Jt LWJ1dHRvbl9fYmVmb3Jle21hcmdpbi1sZWZ0Oi03cHh9LmItc2hhcmUtZm9ybS1i dXR0b25fX2FmdGVye21hcmdpbi1sZWZ0OjRweDtiYWNrZ3JvdW5kLXBvc2l0aW9u Oi0zcHggMH0uYi1zaGFyZS1mb3JtLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcnti b3JkZXI6bm9uZX1idXR0b24uYi1zaGFyZS1mb3JtLWJ1dHRvbiAuYi1zaGFyZS1m b3JtLWJ1dHRvbl9fYmVmb3JlLGJ1dHRvbi5iLXNoYXJlLWZvcm0tYnV0dG9uIC5i LXNoYXJlLWZvcm0tYnV0dG9uX19hZnRlcnttYXJnaW4tdG9wOi0xcHh9QC1tb3ot ZG9jdW1lbnQgdXJsLXByZWZpeCgpe2J1dHRvbi5iLXNoYXJlLWZvcm0tYnV0dG9u IC5iLXNoYXJlLWZvcm0tYnV0dG9uX19hZnRlcnttYXJnaW4tdG9wOi0ycHg7bWFy Z2luLWxlZnQ6NnB4fWJ1dHRvbi5iLXNoYXJlLWZvcm0tYnV0dG9uIC5iLXNoYXJl LWZvcm0tYnV0dG9uX19iZWZvcmV7bWFyZ2luLXRvcDotMnB4O21hcmdpbi1sZWZ0 Oi05cHh9fVNQQU4uYi1zaGFyZS1mb3JtLWJ1dHRvbjpob3ZlciwuYi1zaGFyZS1m b3JtLWJ1dHRvbl9zdGF0ZV9ob3ZlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTYw cHh9U1BBTi5iLXNoYXJlLWZvcm0tYnV0dG9uOmhvdmVyIC5iLXNoYXJlLWZvcm0t YnV0dG9uX19iZWZvcmUsLmItc2hhcmUtZm9ybS1idXR0b25fc3RhdGVfaG92ZXIg LmItc2hhcmUtZm9ybS1idXR0b25fX2JlZm9yZXtiYWNrZ3JvdW5kLXBvc2l0aW9u OjAgLTQwcHh9U1BBTi5iLXNoYXJlLWZvcm0tYnV0dG9uOmhvdmVyIC5iLXNoYXJl LWZvcm0tYnV0dG9uX19hZnRlciwuYi1zaGFyZS1mb3JtLWJ1dHRvbl9zdGF0ZV9o b3ZlciAuYi1zaGFyZS1mb3JtLWJ1dHRvbl9fYWZ0ZXJ7YmFja2dyb3VuZC1wb3Np dGlvbjotM3B4IC00MHB4fS5iLXNoYXJlLWZvcm0tYnV0dG9uX3N0YXRlX3ByZXNz ZWQsLmItc2hhcmUtZm9ybS1idXR0b25fc3RhdGVfcHJlc3NlZCAuYi1zaGFyZS1m b3JtLWJ1dHRvbl9zaGFyZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTEwMHB4IWlt cG9ydGFudH0uYi1zaGFyZS1mb3JtLWJ1dHRvbl9zdGF0ZV9wcmVzc2VkIC5iLXNo YXJlLWZvcm0tYnV0dG9uX19iZWZvcmV7YmFja2dyb3VuZC1wb3NpdGlvbjowIC04 MHB4IWltcG9ydGFudH0uYi1zaGFyZS1mb3JtLWJ1dHRvbl9zdGF0ZV9wcmVzc2Vk IC5iLXNoYXJlLWZvcm0tYnV0dG9uX19hZnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9u Oi0zcHggLTgwcHghaW1wb3J0YW50fWJ1dHRvbi5iLXNoYXJlLWZvcm0tYnV0dG9u X3N0YXRlX3ByZXNzZWR7b3ZlcmZsb3c6dmlzaWJsZX0uYi1zaGFyZS1mb3JtLWJ1 dHRvbl9pY29uc3twb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjA7YmFja2dyb3Vu ZC1wb3NpdGlvbjowIC0yMHB4IWltcG9ydGFudH0uYi1zaGFyZS1mb3JtLWJ1dHRv bl9pY29ucyAuYi1zaGFyZS1mb3JtLWJ1dHRvbl9fYmVmb3Jle2xlZnQ6MDttYXJn aW4tbGVmdDotM3B4O2JhY2tncm91bmQtcG9zaXRpb246MCAwIWltcG9ydGFudH0u Yi1zaGFyZS1mb3JtLWJ1dHRvbl9pY29ucyAuYi1zaGFyZS1mb3JtLWJ1dHRvbl9f YWZ0ZXJ7ei1pbmRleDotMTttYXJnaW4tbGVmdDowO2JhY2tncm91bmQtcG9zaXRp b246LTNweCAwIWltcG9ydGFudH0uYi1zaGFyZS1mb3JtLWJ1dHRvbl9pY29ucyAu Yi1zaGFyZV9faGFuZGxle3BhZGRpbmc6MnB4IWltcG9ydGFudH0uYi1zaGFyZS1m b3JtLWJ1dHRvbl9pY29ucyAuYi1zaGFyZV9faGFuZGxlX21vcmV7cG9zaXRpb246 cmVsYXRpdmU7cGFkZGluZy1yaWdodDo2cHghaW1wb3J0YW50O21hcmdpbi1yaWdo dDotNHB4fS5iLXNoYXJlLWZvcm0tYnV0dG9uX2ljb25zIC5iLXNoYXJlLWljb257 b3BhY2l0eTouNTtiYWNrZ3JvdW5kLWltYWdlOnVybCgiLy95YXN0YXRpYy5uZXQv c2hhcmUvc3RhdGljL2Itc2hhcmUtaWNvbl9zaXplXzE0LnBuZyIpfS5iLXNoYXJl LWZvcm0tYnV0dG9uX2ljb25zIEEuYi1zaGFyZV9faGFuZGxlOmhvdmVyIC5iLXNo YXJlLWljb257b3BhY2l0eToxfS5iLXNoYXJle2ZvbnQ6ODYlLzEuNDU0NWVtIEFy aWFsLHNhbnMtc2VyaWY7ZGlzcGxheTotbW96LWlubGluZS1ib3g7ZGlzcGxheTpp bmxpbmUtYmxvY2s7cGFkZGluZzoxcHggM3B4IDFweCA0cHghaW1wb3J0YW50O3Zl cnRpY2FsLWFsaWduOm1pZGRsZX0uYi1zaGFyZSAuYi1zaGFyZS1mb3JtLWJ1dHRv bntmb250LXNpemU6MWVtfS5iLXNoYXJlX190ZXh0IC5iLXNoYXJlLWljb257bWFy Z2luOjAgNXB4IDAgMDtib3JkZXI6bm9uZX0uYi1zaGFyZV9fdGV4dHttYXJnaW4t cmlnaHQ6NXB4fS5iLXNoYXJlX19oYW5kbGV7ZmxvYXQ6bGVmdDtoZWlnaHQ6MTZw eDtwYWRkaW5nOjVweCAzcHggNXB4IDJweCFpbXBvcnRhbnQ7Y3Vyc29yOnBvaW50 ZXI7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFu dH0uYi1zaGFyZV9faGFuZGxlX2N1cnNvcl9kZWZhdWx0e2N1cnNvcjpkZWZhdWx0 fS5iLXNoYXJlX19oYW5kbGUgLmItc2hhcmUtZm9ybS1idXR0b257bWFyZ2luLXRv cDotMnB4fS5iLXNoYXJlX19ocntkaXNwbGF5Om5vbmU7ZmxvYXQ6bGVmdDt3aWR0 aDoxcHg7aGVpZ2h0OjI2cHg7bWFyZ2luOjAgM3B4IDAgMnB4fWEuYi1zaGFyZV9f aGFuZGxlOmhvdmVyIC5iLXNoYXJlX190ZXh0e3RleHQtZGVjb3JhdGlvbjp1bmRl cmxpbmU7Y29sb3I6cmVkfS5iLXNoYXJlX2JvcmRlcmVke3BhZGRpbmc6MCAycHgg MCAzcHghaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgI0U0RTRFNDstbW96LWJv cmRlci1yYWRpdXM6NXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7Ym9yZGVy LXJhZGl1czo1cHh9LmItc2hhcmVfYm9yZGVyZWQgLmItc2hhcmVfX2hye2Rpc3Bs YXk6aW5saW5lO2JhY2tncm91bmQ6I0U0RTRFNH0uYi1zaGFyZV9saW5re21hcmdp bjotOHB4IDB9YS5iLXNoYXJlX2xpbmt7bWFyZ2luOjB9LmItc2hhcmVfbGluayAu Yi1zaGFyZV9fdGV4dHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2NvbG9yOiMx QTNEQzF9LmItc2hhcmUtZm9ybS1idXR0b25fc2hhcmV7cGFkZGluZy1sZWZ0OjI2 cHghaW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOnRvcH0uYi1zaGFyZS1mb3JtLWJ1 dHRvbl9zaGFyZSAuYi1zaGFyZS1mb3JtLWJ1dHRvbl9fYmVmb3Jle21hcmdpbi1s ZWZ0Oi0yOXB4fS5iLXNoYXJlLWZvcm0tYnV0dG9uX3NoYXJlIC5iLXNoYXJlLWZv cm0tYnV0dG9uX19pY29ue3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwcHg7aGVp Z2h0OjE3cHg7bWFyZ2luOjFweCAwIDAgLTIzcHg7YmFja2dyb3VuZDp1cmwoIi8v eWFzdGF0aWMubmV0L3NoYXJlL3N0YXRpYy9iLXNoYXJlLWZvcm0tYnV0dG9uX3No YXJlX19pY29uLnBuZyIpIDAgMCBuby1yZXBlYXR9LmItc2hhcmUtcHNldWRvLWxp bmt7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkO2N1cnNvcjpwb2ludGVyO3RleHQt ZGVjb3JhdGlvbjpub25lIWltcG9ydGFudH0uYi1zaGFyZV9mb250X2ZpeGVke2Zv bnQtc2l6ZToxMXB4fS5iLXNoYXJlX19oYW5kbGVfbW9yZXtmb250LXNpemU6OXB4 O21hcmdpbi10b3A6LTFweDtjb2xvcjojN0I3QjdCfUEuYi1zaGFyZV9faGFuZGxl X21vcmU6aG92ZXJ7Y29sb3I6IzAwMH0uYi1zaGFyZV9fZ3JvdXB7ZmxvYXQ6bGVm dH0uYi1zaGFyZS1pY29ue2Zsb2F0OmxlZnQ7ZGlzcGxheTppbmxpbmU7b3ZlcmZs b3c6aGlkZGVuO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7cGFkZGluZzowIWltcG9y dGFudDt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym9yZGVyOjA7YmFja2dyb3VuZDp1cmwo Ii8veWFzdGF0aWMubmV0L3NoYXJlL3N0YXRpYy9iLXNoYXJlLWljb24ucG5nIikg MCA5OXB4IG5vLXJlcGVhdH0uYi1zaGFyZS1pY29uX3Zrb250YWt0ZSwuYi1zaGFy ZS1pY29uX2N1c3RvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0uYi1zaGFyZS1p Y29uX3lhcnUsLmItc2hhcmUtaWNvbl95YXJ1X3Bob3RvLC5iLXNoYXJlLWljb25f eWFydV93aXNobGlzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE3cHh9LmItc2hh cmUtaWNvbl9santiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTM0cHh9LmItc2hhcmUt aWNvbl90d2l0dGVye2JhY2tncm91bmQtcG9zaXRpb246MCAtNTFweH0uYi1zaGFy ZS1pY29uX2ZhY2Vib29re2JhY2tncm91bmQtcG9zaXRpb246MCAtNjhweH0uYi1z aGFyZS1pY29uX21vaW1pcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTg1cHh9LmIt c2hhcmUtaWNvbl9mcmllbmRmZWVke2JhY2tncm91bmQtcG9zaXRpb246MCAtMTAy cHh9LmItc2hhcmUtaWNvbl9tYWlse2JhY2tncm91bmQtcG9zaXRpb246MCAtMTE5 cHh9LmItc2hhcmUtaWNvbl9odG1se2JhY2tncm91bmQtcG9zaXRpb246MCAtMTM2 cHh9LmItc2hhcmUtaWNvbl9wb3N0Y2FyZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAg LTE1M3B4fS5iLXNoYXJlLWljb25fb2Rub2tsYXNzbmlraXtiYWNrZ3JvdW5kLXBv c2l0aW9uOjAgLTE3MHB4fS5iLXNoYXJlLWljb25fYmxvZ2dlcntiYWNrZ3JvdW5k LXBvc2l0aW9uOjAgLTE4N3B4fS5iLXNoYXJlLWljb25fZGVsaWNpb3Vze2JhY2tn cm91bmQtcG9zaXRpb246MCAtMjIxcHh9LmItc2hhcmUtaWNvbl9nYnV6entiYWNr Z3JvdW5kLXBvc2l0aW9uOjAgLTIzOHB4fS5iLXNoYXJlLWljb25fbGlua2VkaW57 YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yNTVweH0uYi1zaGFyZS1pY29uX215c3Bh Y2V7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yNzJweH0uYi1zaGFyZS1pY29uX2V2 ZXJub3Rle2JhY2tncm91bmQtcG9zaXRpb246MCAtMjg5cHh9LmItc2hhcmUtaWNv bl9kaWdne2JhY2tncm91bmQtcG9zaXRpb246MCAtMzA2cHh9LmItc2hhcmUtaWNv bl9qdWlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTMyNHB4fS5iLXNoYXJlLWlj b25fbW9pa3J1Z3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTM0MXB4fS5iLXNoYXJl LWljb25feWF6YWtsYWRraXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTM1OHB4fS5i LXNoYXJlLWljb25fbGl2ZWludGVybmV0e2JhY2tncm91bmQtcG9zaXRpb246MCAt Mzc1cHh9LmItc2hhcmUtaWNvbl90dXRieXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAg LTM5MnB4fS5iLXNoYXJlLWljb25fZGlhcnl7YmFja2dyb3VuZC1wb3NpdGlvbjow IC00MDlweH0uYi1zaGFyZS1pY29uX2dwbHVze2JhY2tncm91bmQtcG9zaXRpb246 MCAtNDI2cHh9LmItc2hhcmUtaWNvbl9wb2NrZXR7YmFja2dyb3VuZC1wb3NpdGlv bjowIC00NDNweH0uYi1zaGFyZS1pY29uX3N1cmZpbmdiaXJke2JhY2tncm91bmQt cG9zaXRpb246MCAtNDYwcHh9LmItc2hhcmUtaWNvbl9waW50ZXJlc3R7YmFja2dy b3VuZC1wb3NpdGlvbjowIC00NzdweH0uYi1zaGFyZS1pY29uX3JlbnJlbntiYWNr Z3JvdW5kLXBvc2l0aW9uOjAgMH0uYi1zaGFyZS1pY29uX3JlbnJlbiwuYi1zaGFy ZS1pY29uX3NpbmFfd2VpYm97YmFja2dyb3VuZDp1cmwoIi8veWFzdGF0aWMubmV0 L3NoYXJlL3N0YXRpYy9iLXNoYXJlLWljb25fX2NoaW5hLnBuZyIpIG5vLXJlcGVh dH0uYi1zaGFyZS1pY29uX3NpbmFfd2VpYm97YmFja2dyb3VuZC1wb3NpdGlvbjot MThweCAwfS5iLXNoYXJlLWljb25fcXpvbmV7YmFja2dyb3VuZC1wb3NpdGlvbjot MzZweCAwfS5iLXNoYXJlLWljb25fcXpvbmUsLmItc2hhcmUtaWNvbl90ZW5jZW50 X3dlaWJve2JhY2tncm91bmQ6dXJsKCIvL3lhc3RhdGljLm5ldC9zaGFyZS9zdGF0 aWMvYi1zaGFyZS1pY29uX19jaGluYS5wbmciKSBuby1yZXBlYXR9LmItc2hhcmUt aWNvbl90ZW5jZW50X3dlaWJve2JhY2tncm91bmQtcG9zaXRpb246LTU0cHggMH0u Yi1zaGFyZV90aGVtZV9kYXJrIC5iLXNoYXJlLWljb257YmFja2dyb3VuZDp1cmwo Ii8veWFzdGF0aWMubmV0L3NoYXJlL3N0YXRpYy9iLXNoYXJlLWljb25zX190aGVt ZV9kYXJrLnBuZyIpIDk5cHggMCBuby1yZXBlYXR9LmItc2hhcmVfdGhlbWVfZGFy ayAuYi1zaGFyZS1pY29uX29kbm9rbGFzc25pa2l7YmFja2dyb3VuZC1wb3NpdGlv bjotNHB4IC0zcHh9LmItc2hhcmVfdGhlbWVfZGFyayAuYi1zaGFyZS1pY29uX3Zr b250YWt0ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IC0zcHh9LmItc2hhcmVf dGhlbWVfZGFyayAuYi1zaGFyZS1pY29uX3R3aXR0ZXJ7YmFja2dyb3VuZC1wb3Np dGlvbjotNDRweCAtM3B4fS5iLXNoYXJlX3RoZW1lX2RhcmsgLmItc2hhcmUtaWNv bl9mYWNlYm9va3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0zcHh9LmItc2hh cmVfdGhlbWVfZGFyayAuYi1zaGFyZS1pY29uX2xqe2JhY2tncm91bmQtcG9zaXRp b246LTg1cHggLTNweH0uYi1zaGFyZV90aGVtZV9kYXJrIC5iLXNoYXJlLWljb25f eWFydXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMDVweCAtM3B4fS5iLXNoYXJlX3Ro ZW1lX2RhcmsgLmItc2hhcmUtcG9wdXAgLmItc2hhcmUtaWNvbl9vZG5va2xhc3Nu aWtpLC5iLXNoYXJlX3RoZW1lX2RhcmsgLmItc2hhcmUtaWNvbl9vZG5va2xhc3Nu aWtpOmhvdmVye2JhY2tncm91bmQtcG9zaXRpb246LTRweCAtMjhweH0uYi1zaGFy ZV90aGVtZV9kYXJrIC5iLXNoYXJlLXBvcHVwIC5iLXNoYXJlLWljb25fdmtvbnRh a3RlLC5iLXNoYXJlX3RoZW1lX2RhcmsgLmItc2hhcmUtaWNvbl92a29udGFrdGU6 aG92ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAtMjhweH0uYi1zaGFyZV90 aGVtZV9kYXJrIC5iLXNoYXJlLXBvcHVwIC5iLXNoYXJlLWljb25fdHdpdHRlciwu Yi1zaGFyZV90aGVtZV9kYXJrIC5iLXNoYXJlLWljb25fdHdpdHRlcjpob3Zlcnti YWNrZ3JvdW5kLXBvc2l0aW9uOi00NHB4IC0yOHB4fS5iLXNoYXJlX3RoZW1lX2Rh cmsgLmItc2hhcmUtcG9wdXAgLmItc2hhcmUtaWNvbl9mYWNlYm9vaywuYi1zaGFy ZV90aGVtZV9kYXJrIC5iLXNoYXJlLWljb25fZmFjZWJvb2s6aG92ZXJ7YmFja2dy b3VuZC1wb3NpdGlvbjotNjRweCAtMjhweH0uYi1zaGFyZV90aGVtZV9kYXJrIC5i LXNoYXJlLXBvcHVwIC5iLXNoYXJlLWljb25fbGosLmItc2hhcmVfdGhlbWVfZGFy ayAuYi1zaGFyZS1pY29uX2xqOmhvdmVye2JhY2tncm91bmQtcG9zaXRpb246LTg1 cHggLTI4cHh9LmItc2hhcmVfdGhlbWVfZGFyayAuYi1zaGFyZS1wb3B1cCAuYi1z aGFyZS1pY29uX3lhcnUsLmItc2hhcmVfdGhlbWVfZGFyayAuYi1zaGFyZS1pY29u X3lhcnU6aG92ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTA1cHggLTI4cHh9LmIt c2hhcmVfdGhlbWVfZGFyayAuYi1zaGFyZS1mb3JtLWJ1dHRvbl9zaGFyZSAuYi1z aGFyZS1mb3JtLWJ1dHRvbl9faWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiLy95 YXN0YXRpYy5uZXQvc2hhcmUvc3RhdGljL2Itc2hhcmUtZm9ybS1idXR0b25fc2hh cmVfX2ljb25fZGFyay5wbmciKX0uYi1zaGFyZV90aGVtZV9kYXJrIC5iLXNoYXJl LWZvcm0tYnV0dG9ue2NvbG9yOiNmZmYhaW1wb3J0YW50O29wYWNpdHk6Ljh9LmIt c2hhcmVfdGhlbWVfZGFyayAuYi1zaGFyZV9faGFuZGxlOmhvdmVyIC5iLXNoYXJl LWZvcm0tYnV0dG9uLC5iLXNoYXJlX3RoZW1lX2RhcmsgLmItc2hhcmUtZm9ybS1i dXR0b246aG92ZXJ7b3BhY2l0eToxO2N1cnNvcjpwb2ludGVyfS5iLXNoYXJlX3Ro ZW1lX2RhcmsgLmItc2hhcmUtZm9ybS1idXR0b24sLmItc2hhcmVfdGhlbWVfZGFy ayAuYi1zaGFyZS1mb3JtLWJ1dHRvbl9fYmVmb3JlLC5iLXNoYXJlX3RoZW1lX2Rh cmsgLmItc2hhcmUtZm9ybS1idXR0b25fX2FmdGVye2JhY2tncm91bmQ6MCAwfS5i LXNoYXJlX3RoZW1lX2RhcmsgLmItc2hhcmUtcG9wdXBfX2l7YmFja2dyb3VuZC1j b2xvcjojMzMzO2JvcmRlci1yYWRpdXM6MTBweDstd2Via2l0LWJveC1zaGFkb3c6 MCAycHggOXB4IHJnYmEoMjU1LDI1NSwyNTUsLjYpOy1tb3otYm94LXNoYWRvdzow IDJweCA5cHggcmdiYSgyNTUsMjU1LDI1NSwuNik7Ym94LXNoYWRvdzowIDJweCA5 cHggcmdiYSgyNTUsMjU1LDI1NSwuNil9LmItc2hhcmVfdGhlbWVfZGFyayAuYi1z aGFyZV9fdGV4dHtjb2xvcjojQUFBfS5iLXNoYXJlX3RoZW1lX2RhcmsgLmItc2hh cmUtcG9wdXB7Y29sb3I6I0FBQTtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3Vu ZC1jb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6cmdiYSg1MCw1MCw1MCwuMyl9 LmItc2hhcmVfdGhlbWVfZGFyayAuYi1zaGFyZS1wb3B1cF9faXRlbXtiYWNrZ3Jv dW5kOjAgMDtjb2xvcjojY2NjfS5iLXNoYXJlX3RoZW1lX2RhcmsgLmItc2hhcmUt cG9wdXAgLmItc2hhcmUtcG9wdXBfX2l0ZW1fX3RleHR7Y29sb3I6I2NjY30uYi1z aGFyZV90aGVtZV9jb3VudGVyIC5iLXNoYXJle2Rpc3BsYXk6aW5saW5lLWJsb2Nr O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXB9LmItc2hh cmUtY291bnRlcntmb250OjE0cHggQXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhlaWdo dDoxOHB4O2Rpc3BsYXk6bm9uZTtmbG9hdDpsZWZ0O21hcmdpbjozcHggNnB4IDNw eCAzcHg7Y29sb3I6I2ZmZn0uYi1zaGFyZV90aGVtZV9jb3VudGVyIC5iLXNoYXJl X3R5cGVfc21hbGwgLmItc2hhcmUtY291bnRlcntmb250LXNpemU6MTFweDtsaW5l LWhlaWdodDoxNHB4O21hcmdpbjoycHggNnB4IDJweCAxcHh9LmItc2hhcmVfdGhl bWVfY291bnRlciAuYi1zaGFyZS1idG5fX2NvdW50ZXIgLmItc2hhcmUtY291bnRl cntkaXNwbGF5OmJsb2NrfS5iLXNoYXJlLWJ0bl9fY291bnRlcnt0ZXh0LWRlY29y YXRpb246bm9uZX0uYi1zaGFyZV90aGVtZV9jb3VudGVyIC5iLXNoYXJlLWJ0bl9f d3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjVw eH0uYi1zaGFyZV90aGVtZV9jb3VudGVyIC5iLXNoYXJlX3R5cGVfc21hbGwgLmIt c2hhcmUtYnRuX193cmFwe21hcmdpbi1sZWZ0OjRweH0uYi1zaGFyZV90aGVtZV9j b3VudGVyIC5iLXNoYXJlLWJ0bl9fd3JhcDpmaXJzdC1jaGlsZHttYXJnaW4tbGVm dDowfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmVfX2xpbmt7ZGlzcGxh eTppbmxpbmUtYmxvY2s7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC1ib3JkZXItcmFk aXVzOjNweDtib3JkZXItcmFkaXVzOjNweH0uYi1zaGFyZV90aGVtZV9jb3VudGVy IC5iLXNoYXJlX3R5cGVfc21hbGwgLmItc2hhcmVfX2xpbmt7LXdlYmtpdC1ib3Jk ZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweH0uYi1zaGFyZV90aGVtZV9j b3VudGVyIC5iLXNoYXJlLWljb257ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3dp ZHRoOjI0cHg7aGVpZ2h0OjI0cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoIi8veWFz dGF0aWMubmV0L3NoYXJlL3N0YXRpYy9iLXNoYXJlX2NvdW50ZXJfbGFyZ2UucG5n Iik7YmFja2dyb3VuZC1wb3NpdGlvbjotMjBweCAwfS5iLXNoYXJlX3RoZW1lX2Nv dW50ZXIgLmItc2hhcmVfdHlwZV9zbWFsbCAuYi1zaGFyZS1pY29ue3dpZHRoOjE4 cHg7aGVpZ2h0OjE4cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoIi8veWFzdGF0aWMu bmV0L3NoYXJlL3N0YXRpYy9iLXNoYXJlX2NvdW50ZXJfc21hbGwucG5nIil9LmIt c2hhcmVfdGhlbWVfY291bnRlciAuYi1zaGFyZS1pY29uX2ZhY2Vib29re2JhY2tn cm91bmQtcG9zaXRpb246MCAwfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hh cmUtYnRuX19mYWNlYm9va3tiYWNrZ3JvdW5kLWNvbG9yOiMzYzVhOTh9LmItc2hh cmVfdGhlbWVfY291bnRlciAuYi1zaGFyZS1idG5fX2ZhY2Vib29rOmhvdmVye2Jh Y2tncm91bmQtY29sb3I6IzMwNDg3YX0uYi1zaGFyZV90aGVtZV9jb3VudGVyIC5i LXNoYXJlLWJ0bl9fZmFjZWJvb2s6YWN0aXZle2JvcmRlci10b3A6MnB4IHNvbGlk ICMyNDM2NWE7YmFja2dyb3VuZC1jb2xvcjojMzM0ZDgxfS5iLXNoYXJlX3RoZW1l X2NvdW50ZXIgLmItc2hhcmUtaWNvbl9tb2ltaXJ7YmFja2dyb3VuZC1wb3NpdGlv bjowIC0yOXB4fS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX19t b2ltaXJ7YmFja2dyb3VuZC1jb2xvcjojMjI2ZWI3fS5iLXNoYXJlX3RoZW1lX2Nv dW50ZXIgLmItc2hhcmUtYnRuX19tb2ltaXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xv cjojMWI1ODkyfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX19t b2ltaXI6YWN0aXZle2JvcmRlci10b3A6MnB4IHNvbGlkICMxNDQyNmQ7YmFja2dy b3VuZC1jb2xvcjojMWQ1ZTljfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hh cmUtaWNvbl92a29udGFrdGV7YmFja2dyb3VuZC1wb3NpdGlvbjowIC01OHB4fS5i LXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX192a29udGFrdGV7YmFj a2dyb3VuZC1jb2xvcjojNDg3MjllfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmIt c2hhcmUtYnRuX192a29udGFrdGU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojM2E1 YjdlfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX192a29udGFr dGU6YWN0aXZle2JvcmRlci10b3A6MnB4IHNvbGlkICMyYjQ0NWU7YmFja2dyb3Vu ZC1jb2xvcjojM2Q2MTg2fS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUt aWNvbl90d2l0dGVye2JhY2tncm91bmQtcG9zaXRpb246MCAtODdweH0uYi1zaGFy ZV90aGVtZV9jb3VudGVyIC5iLXNoYXJlLWJ0bl9fdHdpdHRlcntiYWNrZ3JvdW5k LWNvbG9yOiMwMGFjZWR9LmItc2hhcmVfdGhlbWVfY291bnRlciAuYi1zaGFyZS1i dG5fX3R3aXR0ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA4YWJlfS5iLXNo YXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX190d2l0dGVyOmFjdGl2ZXti b3JkZXItdG9wOjJweCBzb2xpZCAjMDA2NjhkO2JhY2tncm91bmQtY29sb3I6IzAw OTJjYX0uYi1zaGFyZV90aGVtZV9jb3VudGVyIC5iLXNoYXJlLWljb25fb2Rub2ts YXNzbmlraXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTExNnB4fS5iLXNoYXJlX3Ro ZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX19vZG5va2xhc3NuaWtpe2JhY2tncm91 bmQtY29sb3I6I2ZmOWY0ZH0uYi1zaGFyZV90aGVtZV9jb3VudGVyIC5iLXNoYXJl LWJ0bl9fb2Rub2tsYXNzbmlraTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjYzdm M2V9LmItc2hhcmVfdGhlbWVfY291bnRlciAuYi1zaGFyZS1idG5fX29kbm9rbGFz c25pa2k6YWN0aXZle2JvcmRlci10b3A6MnB4IHNvbGlkICM5NzVlMmU7YmFja2dy b3VuZC1jb2xvcjojZDk4NzQyfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hh cmUtaWNvbl9ncGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE0NXB4fS5iLXNo YXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX19ncGx1c3tiYWNrZ3JvdW5k LWNvbG9yOiNjMjUyMzR9LmItc2hhcmVfdGhlbWVfY291bnRlciAuYi1zaGFyZS1i dG5fX2dwbHVzOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzliNDIyYX0uYi1zaGFy ZV90aGVtZV9jb3VudGVyIC5iLXNoYXJlLWJ0bl9fZ3BsdXM6YWN0aXZle2JvcmRl ci10b3A6MnB4IHNvbGlkICM3MzMxMWY7YmFja2dyb3VuZC1jb2xvcjojYTU0NjJj fS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtaWNvbl95YXJ1e2JhY2tn cm91bmQtcG9zaXRpb246MCAtMTc0cHh9LmItc2hhcmVfdGhlbWVfY291bnRlciAu Yi1zaGFyZS1idG5fX3lhcnV7YmFja2dyb3VuZC1jb2xvcjojZDgzOTMzfS5iLXNo YXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX195YXJ1OmhvdmVye2JhY2tn cm91bmQtY29sb3I6I2FkMmUyOX0uYi1zaGFyZV90aGVtZV9jb3VudGVyIC5iLXNo YXJlLWJ0bl9feWFydTphY3RpdmV7Ym9yZGVyLXRvcDoycHggc29saWQgIzgwMjIx ZTtiYWNrZ3JvdW5kLWNvbG9yOiNiODMxMmJ9LmItc2hhcmVfdGhlbWVfY291bnRl ciAuYi1zaGFyZS1pY29uX3BpbnRlcmVzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAg LTIwM3B4fS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRuX19waW50 ZXJlc3R7YmFja2dyb3VuZC1jb2xvcjojY2QxZTI3fS5iLXNoYXJlX3RoZW1lX2Nv dW50ZXIgLmItc2hhcmUtYnRuX19waW50ZXJlc3Q6aG92ZXJ7YmFja2dyb3VuZC1j b2xvcjojYTQxODFmfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hhcmUtYnRu X19waW50ZXJlc3Q6YWN0aXZle2JvcmRlci10b3A6MnB4IHNvbGlkICM3YjEyMTc7 YmFja2dyb3VuZC1jb2xvcjojYWUxOTIxfS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIg LmItc2hhcmVfX2xpbms6YWN0aXZle2hlaWdodDoyMnB4fS5iLXNoYXJlX3RoZW1l X2NvdW50ZXIgLmItc2hhcmVfdHlwZV9zbWFsbCAuYi1zaGFyZV9fbGluazphY3Rp dmV7aGVpZ2h0OjE2cHh9LmItc2hhcmVfdGhlbWVfY291bnRlciAuYi1zaGFyZV9f bGluazphY3RpdmUgLmItc2hhcmUtaWNvbiwuYi1zaGFyZV90aGVtZV9jb3VudGVy IC5iLXNoYXJlX19saW5rOmFjdGl2ZSAuYi1zaGFyZS1jb3VudGVye3Bvc2l0aW9u OnJlbGF0aXZlO3RvcDotMXB4fS5iLXNoYXJlX3RoZW1lX2NvdW50ZXIgLmItc2hh cmVfX2xpbms6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7 Ym90dG9tOjA7bGVmdDowO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1pbWFnZTp1cmwo ZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBUC8vL3dBQUFD SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUNSQUVBT3c9PSl9LmItc2hhcmVfdGhl bWVfY291bnRlciAuYi1zaGFyZV9faGFuZGxle2hlaWdodDphdXRvO3BhZGRpbmc6 MCFpbXBvcnRhbnR9JyxyPScuYi1zaGFyZS1wb3B1cF9faSwuYi1zaGFyZS1wb3B1 cF9faWNvbiwuYi1zaGFyZS1wb3B1cF9fbWFpbiwuYi1zaGFyZS1wb3B1cF9mdWxs IC5iLXNoYXJlLXBvcHVwX19leHRyYXt6b29tOjE7ZGlzcGxheTppbmxpbmV9LmIt c2hhcmUtcG9wdXBfdG8tbGVmdHtsZWZ0OjB9LmItc2hhcmUtcG9wdXBfdG8tcmln aHQgLmItc2hhcmUtcG9wdXBfX2V4cGFuZGVye2RpcmVjdGlvbjpsdHJ9LmItc2hh cmUtcG9wdXBfdG8tcmlnaHQgLmItc2hhcmUtcG9wdXBfX2V4cGFuZGVyIC5iLXNo YXJlLXBvcHVwX19pdGVte2RpcmVjdGlvbjpydGx9LmItc2hhcmUtcG9wdXBfX2lj b257bWFyZ2luLXRvcDotMXB4fS5iLXNoYXJlLXBvcHVwX19pY29uX2lucHV0e21h cmdpbi10b3A6LTRweH0uYi1zaGFyZS1wb3B1cF9faWNvbl9faW5wdXR7d2lkdGg6 MTRweH0uYi1zaGFyZS1wb3B1cF9fc3BhY2Vye292ZXJmbG93OmhpZGRlbjtmb250 OjFweC8xIEFyaWFsfS5iLXNoYXJlLXBvcHVwX19pbnB1dF9faW5wdXR7d2lkdGg6 MTAwcHg7ZGlyZWN0aW9uOmx0cn0uYi1zaGFyZS1wb3B1cF9mdWxsIC5iLXNoYXJl LXBvcHVwX19pbnB1dF9saW5rIC5iLXNoYXJlLXBvcHVwX19pbnB1dF9faW5wdXQs LmItc2hhcmUtcG9wdXBfZnVsbCAuYi1zaGFyZS1wb3B1cF9fZm9ybSAuYi1zaGFy ZS1wb3B1cF9faW5wdXRfX2lucHV0e3dpZHRoOjIwMHB4fS5iLXNoYXJlLXBvcHVw LXdyYXB7bWFyZ2luLWJvdHRvbToyNXB4fS5iLXNoYXJlLXBvcHVwX19mb3Jte2Rp cmVjdGlvbjpsdHJ9LmItc2hhcmUtcG9wdXBfX2Zvcm1fX2J1dHRvbiwuYi1zaGFy ZS1wb3B1cF9fZm9ybV9fY2xvc2UsLmItc2hhcmUtcG9wdXBfX2Zvcm1fX2xpbmt7 ZmxvYXQ6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9ja30uYi1zaGFyZS1wb3B1cF9m dWxsIC5iLXNoYXJlLXBvcHVwX19mb3JtX19jbG9zZXttYXJnaW4tbGVmdDo3MHB4 fSogSFRNTCAuYi1zaGFyZS1wb3B1cF91cCAuYi1zaGFyZS1wb3B1cF9fdGFpbHtv dmVyZmxvdzpoaWRkZW47Ym90dG9tOi0xMHB4fSogaHRtbCAuYi1zaGFyZS1mb3Jt LWJ1dHRvbnt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnR9LmItc2hhcmUt Zm9ybS1idXR0b257cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6dmlzaWJsZX0u Yi1zaGFyZS1mb3JtLWJ1dHRvbl9fYmVmb3JlLC5iLXNoYXJlLWZvcm0tYnV0dG9u X19hZnRlcnt0b3A6MH1idXR0b24uYi1zaGFyZS1mb3JtLWJ1dHRvbiAuYi1zaGFy ZS1mb3JtLWJ1dHRvbl9fYmVmb3JlLGJ1dHRvbi5iLXNoYXJlLWZvcm0tYnV0dG9u IC5iLXNoYXJlLWZvcm0tYnV0dG9uX19hZnRlcnttYXJnaW4tdG9wOmF1dG99LmIt c2hhcmUtZm9ybS1idXR0b25fX2ljb257dG9wOjB9LmItc2hhcmV7em9vbToxO2Rp c3BsYXk6aW5saW5lfSogSFRNTCAuYi1zaGFyZS1mb3JtLWJ1dHRvbl9zaGFyZSAu Yi1zaGFyZS1mb3JtLWJ1dHRvbl9faWNvbnttYXJnaW4tdG9wOi0xcHg7YmFja2dy b3VuZC1pbWFnZTp1cmwoIi8veWFzdGF0aWMubmV0L3NoYXJlL3N0YXRpYy9iLXNo YXJlLWZvcm0tYnV0dG9uX3NoYXJlX19pY29uLmdpZiIpfScsYT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJzdHlsZSIpO2EudHlwZT0idGV4dC9jc3MiLGEuaWQ9Inlh X3NoYXJlX3N0eWxlIixhLnN0eWxlU2hlZXQ/YS5zdHlsZVNoZWV0LmNzc1RleHQ9 Im1zaWUiPT09ZS5icm93c2VyJiYoZS52ZXJzaW9uPDh8fHQuZG9jdW1lbnRNb2Rl PDgpP28rcjpvOmEuYXBwZW5kQ2hpbGQodC5jcmVhdGVUZXh0Tm9kZShvKSksbz1y PSIiLFguYXBwZW5kQ2hpbGQoYSksbD1mdW5jdGlvbigpe319ZnVuY3Rpb24gaChl KXt2YXIgbz17Y291bnRlcjpbImJ1dHRvbiIsInNtYWxsIl0sImRlZmF1bHQiOlsi YnV0dG9uIiwiYmxvY2siLCJsaW5rIiwiaWNvbiIsIm5vbmUiXX0scj0oZS50aGVt ZSYmb1tlLnRoZW1lXXx8b1siZGVmYXVsdCJdKS5qb2luKCIgIik7aWYoIWV8fCFl LmVsZW1lbnQmJiFlLmVsZW1lbnRJRCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQg cGFyYW1ldGVycyIpO2UuZWxlbWVudD1lLmVsZW1lbnR8fGUuZWxlbWVudElELCJz dHJpbmciPT10eXBlb2YgZS5lbGVtZW50P2UuZWxlbWVudD10LmdldEVsZW1lbnRC eUlkKGUuZWxlbWVudCk6MT09PSFlLmVsZW1lbnQubm9kZVR5cGUmJihlLmVsZW1l bnQ9bnVsbCksZS5lbGVtZW50U3R5bGV8fChlLmVsZW1lbnRTdHlsZT17fSxlLnN0 eWxlJiYoZS5lbGVtZW50U3R5bGUudHlwZT1lLnN0eWxlLmJ1dHRvbj09PSExPyJs aW5rIjoiYnV0dG9uIixlLmVsZW1lbnRTdHlsZS5saW5rVW5kZXJsaW5lPWUuc3R5 bGUubGluayxlLmVsZW1lbnRTdHlsZS5ib3JkZXI9ZS5zdHlsZS5ib3JkZXIsZS5l bGVtZW50U3R5bGUubGlua0ljb249ZS5zdHlsZS5pY29uKSksZS5lbGVtZW50U3R5 bGU9ZS5lbGVtZW50U3R5bGUsZS5lbGVtZW50U3R5bGUudHlwZSYmLTEhPT1yLmlu ZGV4T2YoZS5lbGVtZW50U3R5bGUudHlwZSl8fChlLmVsZW1lbnRTdHlsZS50eXBl PSJidXR0b24iKX1mdW5jdGlvbiBjKCl7dmFyIGU9bG9jYXRpb24uaG9zdG5hbWUu c3BsaXQoIi4iKS5zcGxpY2UoLTEsMSlbMF07c3dpdGNoKGUpe2Nhc2UiYnkiOmU9 ImJlIjticmVhaztjYXNlImt6IjplPSJrayI7YnJlYWs7Y2FzZSJ1YSI6ZT0idWsi O2JyZWFrO2RlZmF1bHQ6ZT0icnUifXJldHVybiBlfWZ1bmN0aW9uIF8oZSl7dmFy IHQsbztmb3IodCBpbiBlKWlmKG89ZVt0XSxlLmhhc093blByb3BlcnR5KHQpJiYh KHQgaW4gdHQuY3VzdG9tfHx0IGluIHR0LnJ1KSl7aWYoIShvJiZvLnVybCYmby50 aXRsZSYmKG8uaWNvbl8xNnx8by5pY29uX2Zyb20pKSl0aHJvdyBuZXcgRXJyb3Io IkludmFsaWQgbmV3IHNlcnZpY2UgZGVjbGFyYXRpb24iKTt0dC5jdXN0b21bdF09 b319ZnVuY3Rpb24gZChvLHIpe2lmKGwoKSxoKG8pLG8uZWxlbWVudCYmIW8uZWxl bWVudC55YXNoYXJlSW5pdGVkKXtvLmVsZW1lbnQueWFzaGFyZUluaXRlZD0hMDt2 YXIgbixpLHA9by5lbGVtZW50LHM9by5sMTBuLGI9KG8ubGlua3x8ZS5sb2NhdGlv bikrIiIsdT1vLmVsZW1lbnRTdHlsZSxkPXUucXVpY2tTZXJ2aWNlc3x8by5zZXJ2 aWNlc3x8WyJ8IiwieWFydSIsInZrb250YWt0ZSIsIm9kbm9rbGFzc25pa2kiLCJ0 d2l0dGVyIiwiZmFjZWJvb2siLCJtb2ltaXIiLCJsaiJdLG09by50aXRsZXx8dC50 aXRsZSxnPW8uc2VydmljZVNwZWNpZmljfHxvLm92ZXJyaWRlfHx7fSxrPW8ucG9w dXBTdHlsZXx8by5wb3B1cHx8e30seD1rLmNvZGVGb3JCbG9nLHk9ay5ibG9ja3N8 fFsieWFydSIsInZrb250YWt0ZSIsIm9kbm9rbGFzc25pa2kiLCJ0d2l0dGVyIiwi ZmFjZWJvb2siLCJtb2ltaXIiLCJsaiIsImdwbHVzIl0sej1rLmNvcHlQYXN0ZUZp ZWxkfHxrLmlucHV0LFQ9InlhLXNoYXJlLSIrTWF0aC5yYW5kb20oKSsiLSIrICtu ZXcgRGF0ZSxMPSEvKD86bW9pa3J1Z1wucnV8eWFcLnJ1fHlhbmRleFwuYnl8eWFu ZGV4XC5jb218eWFuZGV4XC5jb21cLnRyfHlhbmRleFwua3p8eWFuZGV4XC5uZXR8 eWFuZGV4XC5ydXx5YW5kZXhcLnVhfHlhbmRleC10ZWFtXC5ydSkkLy50ZXN0KGxv Y2F0aW9uLmhvc3RuYW1lKSxNPW8uc2VydmljZXNEZWNsYXJhdGlvbjtzJiZzIGlu IG90fHwocz1jKCkpLGk9b3Rbc10sIUwmJk0mJl8oTSk7dmFyIEM9dS5hZnRlcklj b25zVGV4dDtpZihDJiYodS50eXBlPSJ0ZXh0Iiksbj11LnRleHR8fG8udGV4dHx8 aS5zaGFyZSsoImJ1dHRvbiI9PXUudHlwZT8i4oCmIjoiIiksbj1qKG4pLCJbb2Jq ZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeSkp e3ZhciBFPXk7eT17fSx5W2lbInNoYXJlIHdpdGggZnJpZW5kcyJdXT1FLEU9bnVs bH1zd2l0Y2godHlwZW9mIHgpe2Nhc2Uic3RyaW5nIjp2YXIgUD14O3g9e30seFtp WyJjb2RlIGJsb2ciXV09UDticmVhaztjYXNlIm9iamVjdCI6Zm9yKHZhciBCIGlu IHgpYnJlYWs7Qnx8KHg9bnVsbCk7YnJlYWs7ZGVmYXVsdDp4PW51bGx9dmFyIEY9 JyBpZD0iJytUKyciIGRhdGEtaGRpcmVjdGlvbj0iJysoay5oRGlyZWN0aW9ufHwi IikrJyIgZGF0YS12ZGlyZWN0aW9uPSInKyhrLnZEaXJlY3Rpb258fCIiKSsnIic7 aWYoImNvdW50ZXIiPT1vLnRoZW1lKXt2YXIgRCxJLE4sTz1bJzxzcGFuIGNsYXNz PSJiLXNoYXJlJysoInNtYWxsIj09dS50eXBlPyIgYi1zaGFyZV90eXBlX3NtYWxs IjoiIikrJyI+J107Zm9yKEQ9MCxJPWQubGVuZ3RoO0k+RDtEKyspTj1kW0RdLE49 dih7c2VydmljZU5hbWU6TixzZXJ2aWNlVGl0bGU6ZihOLCJzZXJ2aWNlVGl0bGUi LCIiLGcpLGxpbms6ZihOLCJsaW5rIixiLGcpLHRpdGxlOmYoTiwidGl0bGUiLG0s ZyksZGVzY3JpcHRpb246ZihOLCJkZXNjcmlwdGlvbiIsby5kZXNjcmlwdGlvbnx8 IiIsZyksaW1hZ2U6ZihOLCJpbWFnZSIsby5pbWFnZXx8IiIsZyksbGFuZzpzLHRo ZW1lOiJjb3VudGVyIn0pLE4mJk8ucHVzaCgnPHNwYW4gY2xhc3M9ImItc2hhcmUt YnRuX193cmFwIj4nK04rIjwvc3Bhbj4iKTt3aW5kb3cucG9zdE1lc3NhZ2UmJk8u cHVzaCgnPGlmcmFtZSBzdHlsZT0iZGlzcGxheTogbm9uZSIgc3JjPSInK1orIi95 YS1zaGFyZS1jbnQuaHRtbD91cmw9IitlbmNvZGVVUklDb21wb25lbnQoYikrIiZz ZXJ2aWNlcz0iK2Quam9pbigiLCIpKyciPjwvaWZyYW1lPicpLFYoZSwibWVzc2Fn ZSIsci5vbk1lc3NhZ2UpLHAuc2V0QXR0cmlidXRlKCJkYXRhLXlhc2hhcmVsaW5r IixwLmdldEF0dHJpYnV0ZSgiZGF0YS15YXNoYXJlbGluayIpfHxiKX1lbHNle3Zh ciBELEksTixPPVsnPHNwYW4gY2xhc3M9ImItc2hhcmUnKygiYmxvY2siPT11LnR5 cGU/IiBiLXNoYXJlLWZvcm0tYnV0dG9uIGItc2hhcmUtZm9ybS1idXR0b25faWNv bnMiOiIiKSsodS5ib3JkZXI/IiBiLXNoYXJlX2JvcmRlcmVkIjoiIikrKHUubGlu a1VuZGVybGluZT8iIGItc2hhcmVfbGluayI6IiIpKyciJysodS5iYWNrZ3JvdW5k Pycgc3R5bGU9ImJhY2tncm91bmQ6Jyt1LmJhY2tncm91bmQrJyInOiIiKSsiPiIr KCJub25lIiE9PXUudHlwZSYmInRleHQiIT09dS50eXBlPyc8YSBjbGFzcz0iYi1z aGFyZV9faGFuZGxlIicrRisiPiI6IiIpXTtmb3IoImJsb2NrIj09dS50eXBlP089 Wyc8ZGl2IGNsYXNzPSJiLXNoYXJlIj48c3BhbiBjbGFzcz0iYi1zaGFyZS1mb3Jt LWJ1dHRvbiBiLXNoYXJlLWZvcm0tYnV0dG9uX2ljb25zIj48aSBjbGFzcz0iYi1z aGFyZS1mb3JtLWJ1dHRvbl9fYmVmb3JlIj48L2k+J106ImJ1dHRvbiI9PXUudHlw ZT9PLnB1c2goJzxzcGFuIGNsYXNzPSJiLXNoYXJlLWZvcm0tYnV0dG9uIGItc2hh cmUtZm9ybS1idXR0b25fc2hhcmUiPjxpIGNsYXNzPSJiLXNoYXJlLWZvcm0tYnV0 dG9uX19iZWZvcmUiPjwvaT48aSBjbGFzcz0iYi1zaGFyZS1mb3JtLWJ1dHRvbl9f aWNvbiI+PC9pPicrbisnPGkgY2xhc3M9ImItc2hhcmUtZm9ybS1idXR0b25fX2Fm dGVyIj48L2k+PC9zcGFuPicpOigoImxpbmsiPT09dS50eXBlfHwidGV4dCI9PT11 LnR5cGUpJiZPLnB1c2goJzxzcGFuIGNsYXNzPSJiLXNoYXJlX190ZXh0JysoInRl eHQiPT09dS50eXBlPyIgYi1zaGFyZV9faGFuZGxlIGItc2hhcmVfX2hhbmRsZV9j dXJzb3JfZGVmYXVsdCI6IiIpKygiZG90dGVkIj09PXUubGlua1VuZGVybGluZT8i IGItc2hhcmUtcHNldWRvLWxpbmsiOiIiKSsnIj4nKSwoKCJsaW5rIj09PXUudHlw ZXx8InRleHQiPT09dS50eXBlKSYmdS5saW5rSWNvbnx8Imljb24iPT09dS50eXBl KSYmTy5wdXNoKCc8aW1nIGFsdD0iIiBjbGFzcz0iYi1zaGFyZS1pY29uIiBzcmM9 IicrWisnL3N0YXRpYy9iLXNoYXJlLnBuZyIvPicpLCgibGluayI9PT11LnR5cGV8 fCJ0ZXh0Ij09PXUudHlwZSkmJk8ucHVzaChuKyI8L3NwYW4+IikpLCJub25lIiE9 PXUudHlwZSYmInRleHQiIT09dS50eXBlJiZPLnB1c2goIjwvYT4iKSx1Lmdyb3Vw JiZPLnB1c2goJzxzcGFuIGNsYXNzPSJiLXNoYXJlX19ncm91cCI+JyksRD0wLEk9 ZC5sZW5ndGg7ST5EO0QrKylOPWRbRF0sTy5wdXNoKHYoe3NlcnZpY2VOYW1lOk4s c2VydmljZVRpdGxlOmYoTiwic2VydmljZVRpdGxlIiwiIixnKSxsaW5rOmYoTiwi bGluayIsYixnKSx0aXRsZTpmKE4sInRpdGxlIixtLGcpLGRlc2NyaXB0aW9uOmYo TiwiZGVzY3JpcHRpb24iLG8uZGVzY3JpcHRpb258fCIiLGcpLGltYWdlOmYoTiwi aW1hZ2UiLG8uaW1hZ2V8fCIiLGcpLGxhbmc6c30pKTt1Lmdyb3VwJiZPLnB1c2go Ijwvc3Bhbj4iKSwiYmxvY2siPT11LnR5cGU/KEM9ItCOIixPLnB1c2goJzxhIGNs YXNzPSJiLXNoYXJlX19oYW5kbGUgYi1zaGFyZV9faGFuZGxlX21vcmUiIHRpdGxl PSLQldGJ0ZEiICcrRisnPjxzcGFuIGNsYXNzPSJfX2Itc2hhcmVfX2hhbmRsZV9t b3JlIj4nK0MrIjwvc3Bhbj48L2E+IiksTy5wdXNoKCc8aSBjbGFzcz0iYi1zaGFy ZS1mb3JtLWJ1dHRvbl9fYWZ0ZXIiPjwvaT4nKSk6QyYmTy5wdXNoKCc8YSBjbGFz cz0iYi1zaGFyZV9faGFuZGxlIGItc2hhcmVfbGluayInK0YrJz48c3BhbiBjbGFz cz0iYi1zaGFyZV9fdGV4dCBiLXNoYXJlLXBzZXVkby1saW5rIj4nK0MrIjwvc3Bh bj48L2E+IiksTy5wdXNoKCI8L3NwYW4+IiksImJsb2NrIj09dS50eXBlJiZPLnB1 c2goIjwvZGl2PiIpfWlmKHAuaW5uZXJIVE1MPU8uam9pbigiIiksby50aGVtZSYm YShwLCJiLXNoYXJlX3RoZW1lXyIrby50aGVtZS5yZXBsYWNlKC9cIi9nLCIiKSks QShwLHIsQywibm9uZSI9PT11LnR5cGV8fCJjb3VudGVyIj09PW8udGhlbWUpLCJj b3VudGVyIiE9by50aGVtZSYmIm5vbmUiIT09dS50eXBlKXt2YXIgVz1bJzxkaXYg Y2xhc3M9ImItc2hhcmUtcG9wdXAtd3JhcCBiLXNoYXJlLXBvcHVwLXdyYXBfc3Rh dGVfaGlkZGVuJysoby50aGVtZT8iIGItc2hhcmVfdGhlbWVfIitvLnRoZW1lLnJl cGxhY2UoL1wiL2csIiIpOiIiKSsnIiBpZD0iJytUKyctcG9wdXAiPjxkaXYgY2xh c3M9ImItc2hhcmUtcG9wdXAgYi1zaGFyZS1wb3B1cF9kb3duIGItc2hhcmUtcG9w dXBfdG8tcmlnaHQiPjxkaXYgY2xhc3M9ImItc2hhcmUtcG9wdXBfX2knKyh6PyIg Yi1zaGFyZS1wb3B1cF93aXRoLWxpbmsiOiIiKSsnIj4nXTtpZih4KXtXLnB1c2go JzxkaXYgY2xhc3M9ImItc2hhcmUtcG9wdXBfX2Zvcm0gYi1zaGFyZS1wb3B1cF9f Zm9ybV9odG1sIj4nKTtmb3IodmFyIHEgaW4geCl4Lmhhc093blByb3BlcnR5KHEp JiZXLnB1c2goJzxsYWJlbCBjbGFzcz0iYi1zaGFyZS1wb3B1cF9faW5wdXQiPicr cSsnPHRleHRhcmVhIGNsYXNzPSJiLXNoYXJlLXBvcHVwX19pbnB1dF9faW5wdXQi IGNvbHM9IjEwIiByb3dzPSI1Ij4nK3hbcV0rIjwvdGV4dGFyZWE+PC9sYWJlbD4i KTtXLnB1c2goJzxhIGNsYXNzPSJiLXNoYXJlLXBvcHVwX19mb3JtX19jbG9zZSI+ JytpLmNsb3NlKyI8L2E+PC9kaXY+Iil9Vy5wdXNoKCc8ZGl2IGNsYXNzPSJiLXNo YXJlLXBvcHVwX19tYWluICcrKEw/IiBiLXNoYXJlLXBvcHVwX3lhbmRleGVkIjoi IikrJyI+JykseiYmVy5wdXNoKCc8bGFiZWwgY2xhc3M9ImItc2hhcmUtcG9wdXBf X2lucHV0IGItc2hhcmUtcG9wdXBfX2lucHV0X2xpbmsiPicraS5saW5rKyc8aW5w dXQgY2xhc3M9ImItc2hhcmUtcG9wdXBfX2lucHV0X19pbnB1dCIgcmVhZG9ubHk9 InJlYWRvbmx5IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJytqKGIpKyciIC8+PC9sYWJl bD4nKTtmb3IodmFyIEcgaW4geSlpZih5Lmhhc093blByb3BlcnR5KEcpKXt2YXIg Sj15W0ddO2lmKEk9Si5sZW5ndGgpZm9yKEcmJlcucHVzaCgnPGRpdiBjbGFzcz0i Yi1zaGFyZS1wb3B1cF9faGVhZGVyIGItc2hhcmUtcG9wdXBfX2hlYWRlcl9maXJz dCI+JytHKyI8L2Rpdj4iKSxEPTA7ST5EO0QrKylOPUpbRF0sVy5wdXNoKHcoe3Nl cnZpY2VOYW1lOk4sc2VydmljZVRpdGxlOmYoTiwic2VydmljZVRpdGxlIiwiIixn KSxsaW5rOmYoTiwibGluayIsYixnKSx0aXRsZTpmKE4sInRpdGxlIixtLGcpLGRl c2NyaXB0aW9uOmYoTiwiZGVzY3JpcHRpb24iLG8uZGVzY3JpcHRpb258fCIiLGcp LGltYWdlOmYoTiwiaW1hZ2UiLG8uaW1hZ2V8fCIiLGcpLGxhbmc6c30pKX14JiZX LnB1c2goJzxkaXYgY2xhc3M9ImItc2hhcmUtcG9wdXBfX3NwYWNlciI+PC9kaXY+ PGEgY2xhc3M9ImItc2hhcmUtcG9wdXBfX2l0ZW0gYi1zaGFyZS1wb3B1cF9faXRl bV90eXBlX2NvZGUiPjxzcGFuIGNsYXNzPSJiLXNoYXJlLXBvcHVwX19pY29uIj48 c3BhbiBjbGFzcz0iYi1zaGFyZS1pY29uIGItc2hhcmUtaWNvbl9odG1sIj48L3Nw YW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJiLXNoYXJlLXBvcHVwX19pdGVtX190ZXh0 Ij4nK2lbImNvZGUgYmxvZyJdKyI8L3NwYW4+PC9hPiIpLEwmJlcucHVzaCgnPGEg aHJlZj0iaHR0cDovL2FwaS55YW5kZXgucnUvc2hhcmUvIiBjbGFzcz0iYi1zaGFy ZS1wb3B1cF9feWFuZGV4Ij7Qr9C90LTQtdC60YE8L2E+JyksVy5wdXNoKCI8L2Rp dj4iKSxXLnB1c2goJzwvZGl2PjxkaXYgY2xhc3M9ImItc2hhcmUtcG9wdXBfX3Rh aWwiPjwvZGl2PjwvZGl2PjwvZGl2PicpO3ZhciBZLFI9dC5jcmVhdGVFbGVtZW50 KCJkaXYiKTtSLmlubmVySFRNTD1XLmpvaW4oIiIpLFk9Ui5maXJzdENoaWxkLHQu Ym9keS5hcHBlbmRDaGlsZChZKSxSPW51bGwsUyhZLHIpfXJldHVybltwLFldfX1m dW5jdGlvbiBtKGUpe3ZhciBvPXQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7by5z ZXRBdHRyaWJ1dGUoInNyYyIsbG9jYXRpb24ucHJvdG9jb2wrIi8vY2xjay55YW5k ZXgucnUvamNsY2svZHR5cGU9c3RyZWQvcGlkPTUyL2NpZD03MDY4NS9wYXRoPSIr ZSsiL3JuZD0iK01hdGgucm91bmQoMWU1Kk1hdGgucmFuZG9tKCkpKyIvKiIrZW5j b2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYpKSxYLmFwcGVuZENoaWxkKG8p fWZ1bmN0aW9uIGYoZSx0LG8scil7dmFyIGE9byxuPXJbZV07cmV0dXJuIG4mJnQg aW4gbiYmKGE9blt0XSksImRlc2NyaXB0aW9uIj09dHx8ImltYWdlIj09dHx8InNl cnZpY2VUaXRsZSI9PXQ/YTokKGEpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIEJvb2xl YW4odHQuY3VzdG9tW2VdJiZ0dC5jdXN0b21bZV0udGl0bGUpfWZ1bmN0aW9uIGso ZSx0KXt2YXIgbz10dC5jdXN0b21bZV18fHgoZSx0KSxyPSIiLGE9IiI7cmV0dXJu IGcoZSk/by5pY29uX2Zyb20/cis9by5pY29uX2Zyb206KHIrPSJjdXN0b20iLGE9 JyBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTp1cmwoJytvLmljb25fMTYrIik7Iiso by5pY29uXzE2X2Nzcz9vLmljb25fMTZfY3NzOiIiKSsnIicpOnIrPWUsJzxzcGFu IGNsYXNzPSJiLXNoYXJlLWljb24gYi1zaGFyZS1pY29uXycrcisnIicrYSsiPjwv c3Bhbj4iCn1mdW5jdGlvbiB4KGUsdCl7cmV0dXJuIHQ9dHx8InJ1Iix0dC5jdXN0 b21bZV0/dHQuY3VzdG9tW2VdLnRpdGxlOnR0W3RdJiZ0dFt0XVtlXX1mdW5jdGlv biB5KGUsdCxvLHIsYSl7YT1hPyQoYSk6IiIscj1yPyQocik6IiI7dmFyIG49ZXQr Ii9nby54bWw/c2VydmljZT0iK2U7aWYoZyhlKSl7dmFyIGk9dHQuY3VzdG9tW2Vd LHA9aS51cmwucmVwbGFjZSgie2xpbmt9Iix0KS5yZXBsYWNlKCJ7dGl0bGV9Iixv KS5yZXBsYWNlKCJ7ZGVzY3JpcHRpb259IixyKS5yZXBsYWNlKCJ7aW1hZ2V9Iixh KTtyZXR1cm4gaS5kaXJlY3RMaW5rP3A6bisiJmFtcDtnb3RvPSIrJChwKX1yZXR1 cm4gbisiJmFtcDt1cmw9Iit0KyImYW1wO3RpdGxlPSIrbysocj8iJmFtcDtkZXNj cmlwdGlvbj0iK3I6IiIpKyhhPyImYW1wO2ltYWdlPSIrYToiIil9ZnVuY3Rpb24g dihlLHQsbyxyLGEpe3ZhciBuLGkscDtpZigxPT1hcmd1bWVudHMubGVuZ3RoJiYi b2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1swXSl7dmFyIHM9YXJndW1lbnRzWzBd O2k9cy5sYW5nLG49cy5zZXJ2aWNlVGl0bGUsZT1zLnNlcnZpY2VOYW1lLHQ9cy5s aW5rLG89cy50aXRsZSxyPXMuZGVzY3JpcHRpb24sYT1zLmltYWdlLHA9cy50aGVt ZX1yZXR1cm4icGludGVyZXN0IiE9ZXx8YT9lIGluIHR0W2l8fCJydSJdfHxlIGlu IHR0LmN1c3RvbT8nPGEgcmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfYmxhbmsiIHRp dGxlPSInKyhufHx4KGUsaSkpKyciIGNsYXNzPSJiLXNoYXJlX19oYW5kbGUgYi1z aGFyZV9fbGluayBiLXNoYXJlLWJ0bl9fJytlKyciIGhyZWY9IicreShlLHQsbyxy LGEpKyciIGRhdGEtc2VydmljZT0iJytlKyciPicrayhlKSsoImNvdW50ZXIiPT1w Pyc8c3BhbiBjbGFzcz0iYi1zaGFyZS1jb3VudGVyIj48L3NwYW4+JzoiIikrIjwv YT4iOiJ8Ij09ZT8nPHNwYW4gY2xhc3M9ImItc2hhcmVfX2hyIj48L3NwYW4+Jzp2 b2lkIDA6IiJ9ZnVuY3Rpb24gdyhlLHQsbyxyLGEpe3ZhciBuLGk7aWYoMT09YXJn dW1lbnRzLmxlbmd0aCYmIm9iamVjdCI9PXR5cGVvZiBhcmd1bWVudHNbMF0pe3Zh ciBwPWFyZ3VtZW50c1swXTtpPXAubGFuZyxuPXAuc2VydmljZVRpdGxlLGU9cC5z ZXJ2aWNlTmFtZSx0PXAubGluayxvPXAudGl0bGUscj1wLmRlc2NyaXB0aW9uLGE9 cC5pbWFnZX1yZXR1cm4icGludGVyZXN0IiE9ZXx8YT9lIGluIHR0W2l8fCJydSJd fHxlIGluIHR0LmN1c3RvbT8nPGEgcmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfYmxh bmsiIGhyZWY9IicreShlLHQsbyxyLGEpKyciIGNsYXNzPSJiLXNoYXJlLXBvcHVw X19pdGVtIiBkYXRhLXNlcnZpY2U9IicrZSsnIj48c3BhbiBjbGFzcz0iYi1zaGFy ZS1wb3B1cF9faWNvbiI+JytrKGUpKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImItc2hh cmUtcG9wdXBfX2l0ZW1fX3RleHQiPicrKG58fHgoZSxpKSkrIjwvc3Bhbj48L2E+ IjoifCI9PWU/JzxkaXYgY2xhc3M9ImItc2hhcmUtcG9wdXBfX3NwYWNlciI+PC9k aXY+Jzp2b2lkIDA6IiJ9ZnVuY3Rpb24geigpe2UuY2xlYXJUaW1lb3V0KHJ0KX1m dW5jdGlvbiBUKHQpe3J0PWUuc2V0VGltZW91dCh0Lm9uRG9jdW1lbnRDbGljaywy ZTMpfWZ1bmN0aW9uIFMoZSx0KXt2YXIgbyxyLGk9SShlLCJiLXNoYXJlLXBvcHVw X19leHBhbmRlciIpWzBdLHA9SShlLCJiLXNoYXJlLXBvcHVwX19pdGVtIik7Zm9y KGkmJlYoaS5maXJzdENoaWxkLCJjbGljayIsRSksbz0wLHI9cC5sZW5ndGg7cj5v O28rKylWKHBbb10sImNsaWNrIix0Lm9uc2hhcmUpO0woZVtVXSgiaW5wdXQiKSks TChlW1VdKCJ0ZXh0YXJlYSIpKTt2YXIgcz1JKGUsImItc2hhcmUtcG9wdXBfX2l0 ZW1fdHlwZV9jb2RlIilbMF07aWYocyl7dmFyIHU9SShlLCJiLXNoYXJlLXBvcHVw X19pIilbMF07VihzLCJjbGljayIsZnVuY3Rpb24oZSl7YSh1LCJiLXNoYXJlLXBv cHVwX3Nob3dfZm9ybV9odG1sIiksYihlKX0pLFYoSShlLCJiLXNoYXJlLXBvcHVw X19mb3JtX19jbG9zZSIpWzBdLCJjbGljayIsZnVuY3Rpb24oZSl7bih1LCJiLXNo YXJlLXBvcHVwX3Nob3dfZm9ybV9odG1sIiksYihlKX0pfUcoZSx6KSxKKGUsdC5z ZXRQb3B1cENsb3NlVGltZW91dCl9ZnVuY3Rpb24gTChlKXtmb3IodmFyIHQsbz0w LHI9ZS5sZW5ndGg7cj5vO28rKyl0PWVbb10sVih0LCJjbGljayIsZnVuY3Rpb24o ZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5zZWxlY3QoKX19KHQpKX1mdW5jdGlvbiBB KGUsdCxvLHIpe3ZhciBhLG49MSxpPUkoZSwiYi1zaGFyZV9faGFuZGxlIikscD1p Lmxlbmd0aCxzPXA7aWYociluPTA7ZWxzZXt2YXIgYj1pWzBdO28mJihiPWlbcC0x XSxzLS0pLFYoYiwiY2xpY2siLHQudG9nZ2xlT3Blbk1vZGUpLEcoYix6KSxKKGIs dC5zZXRQb3B1cENsb3NlVGltZW91dCl9Zm9yKGE9czthPm47bisrKVYoaVtuXSwi Y2xpY2siLHQub25zaGFyZSl9ZnVuY3Rpb24gTShlKXt2YXIgdCxvLHI7aWYoKHQ9 ZS5jdXJyZW50VGFyZ2V0KXx8KHI9ZS50YXJnZXR8fGUuc3JjRWxlbWVudCwodD1w KHIsImItc2hhcmVfX2hhbmRsZSIpKXx8KHQ9cChyLCJiLXNoYXJlLXBvcHVwX19p dGVtIikpKSx0JiYobz10LmdldEF0dHJpYnV0ZSgiZGF0YS1zZXJ2aWNlIikpKXN3 aXRjaChtKG8pLG8pe2Nhc2UiZmFjZWJvb2siOkMoZSx0LDgwMCw1MjApO2JyZWFr O2Nhc2UibW9pbWlyIjpDKGUsdCw1NjAsNDAwKTticmVhaztjYXNlInR3aXR0ZXIi OkMoZSx0LDY1MCw1MjApO2JyZWFrO2Nhc2UidmtvbnRha3RlIjpDKGUsdCw1NTAs NDIwKTticmVhaztjYXNlIm9kbm9rbGFzc25pa2kiOkMoZSx0LDU2MCwzNzApO2Jy ZWFrO2Nhc2UiZ3BsdXMiOkMoZSx0LDU2MCwzNzApO2JyZWFrO2Nhc2Uic3VyZmlu Z2JpcmQiOkMoZSx0LDUwMCwxNzApfXJldHVybiBvfWZ1bmN0aW9uIEMoZSx0LG8s cil7YihlKSx3aW5kb3cub3Blbih0LmhyZWYsInlhc2hhcmVfcG9wdXAiLCJzY3Jv bGxiYXJzPTEscmVzaXphYmxlPTEsbWVudWJhcj0wLHRvb2xiYXI9MCxzdGF0dXM9 MCxsZWZ0PSIrKHNjcmVlbi53aWR0aC1vKS8yKyIsdG9wPSIrKHNjcmVlbi5oZWln aHQtcikvMisiLHdpZHRoPSIrbysiLGhlaWdodD0iK3IpLmZvY3VzKCl9ZnVuY3Rp b24gRSgpe3ZhciBlPXAodGhpcywiYi1zaGFyZS1wb3B1cF9faSIpO2koZSwiYi1z aGFyZS1wb3B1cF9mdWxsIil9ZnVuY3Rpb24gUChlLHQpe2lmKGUmJiJudW1iZXIi IT10eXBlb2YgZSl7dmFyIG89ZS53aGljaD9lLndoaWNoOjE7aWYoMSE9PW98fHAo ZS50YXJnZXR8fGUuc3JjRWxlbWVudCwiYi1zaGFyZS1wb3B1cC13cmFwIikpcmV0 dXJufUsmJnQuY2xvc2VQb3B1cChLLmlkKX1mdW5jdGlvbiBCKGUsbyl7ZT1lLnJl cGxhY2UoIi1wb3B1cCIsIiIpO3ZhciByPXQuZ2V0RWxlbWVudEJ5SWQoZSksaT10 LmdldEVsZW1lbnRCeUlkKGUrIi1wb3B1cCIpLHA9SShpLCJiLXNoYXJlLXBvcHVw X19pbnB1dF9faW5wdXQiKTtpZihuKHIsImItc2hhcmUtcG9wdXBfb3BlbmVkIiks bihyLCJiLXNoYXJlLWZvcm0tYnV0dG9uX3N0YXRlX3ByZXNzZWQiKSxhKGksImIt c2hhcmUtcG9wdXAtd3JhcF9zdGF0ZV9oaWRkZW4iKSxuKGksImItc2hhcmUtcG9w dXAtd3JhcF9zdGF0ZV92aXNpYmFsZSIpLGkuc3R5bGUuY3NzVGV4dD0iIixwKWZv cih2YXIgcz0wLGI9cC5sZW5ndGg7Yj5zO3MrKylwW3NdLnN0eWxlLmNzc1RleHQ9 IiI7aS5maXJzdENoaWxkLmNsYXNzTmFtZT0iYi1zaGFyZS1wb3B1cCIsWSh0LCJj bGljayIsby5vbkRvY3VtZW50Q2xpY2spLEs9bnVsbCxvLm9uY2xvc2Uoby5fdGhp cyl9ZnVuY3Rpb24gRihvLHIsaSl7aT1pfHx7fTt2YXIgcCxzLGI9aS5oRGlyZWN0 aW9ufHxvLmdldEF0dHJpYnV0ZSgiZGF0YS1oZGlyZWN0aW9uIiksdT1pLnZEaXJl Y3Rpb258fG8uZ2V0QXR0cmlidXRlKCJkYXRhLXZkaXJlY3Rpb24iKSxsPXQuZ2V0 RWxlbWVudEJ5SWQoby5pZCsiLXBvcHVwIiksaD1sLmZpcnN0Q2hpbGQsYz1JKGws ImItc2hhcmUtcG9wdXBfX2lucHV0X19pbnB1dCIpLF89TigpLGQ9UihvKTtwPSJs ZWZ0Ij09PWJ8fCJyaWdodCI9PT1iP2I6ZC5sZWZ0LU1hdGgubWF4KE8uc2Nyb2xs TGVmdCx0LmJvZHkuc2Nyb2xsTGVmdCk+PV8ud2lkdGgvMj8ibGVmdCI6InJpZ2h0 IixzPSJ1cCI9PT11fHwiZG93biI9PT11P3U6ZC50b3AtTWF0aC5tYXgoTy5zY3Jv bGxUb3AsdC5ib2R5LnNjcm9sbFRvcCk+PV8uaGVpZ2h0LzI/InVwIjoiZG93biIs ci5vbkRvY3VtZW50Q2xpY2soKTt2YXIgZj1JKGwsImItc2hhcmUtcG9wdXBfX3Rh aWwiKVswXSxnPU1hdGgucm91bmQoby5vZmZzZXRXaWR0aC8yKSxrPWkud2lkdGh8 fGgub2Zmc2V0V2lkdGgseD1NYXRoLnJvdW5kKGsvMik7aWYoZC5sZWZ0LSh4LWcp PjUpe2QubGVmdC09TWF0aC5yb3VuZCh4LWcpO3ZhciB5PU1hdGgubWF4KGQubGVm dCtrLXQuYm9keS5vZmZzZXRXaWR0aCwwKTtkLmxlZnQtPXksZz14LTEwK3l9aWYo ZC50b3ArPSJ1cCI9PT1zPy05Ojkrby5vZmZzZXRIZWlnaHQsbC5zdHlsZS5jc3NU ZXh0PSJ0b3A6IisoaS50b3B8fGQudG9wKSsicHg7bGVmdDoiKyhpLmxlZnR8fGQu bGVmdCkrInB4O3dpZHRoOiIraysicHgiLGYuc3R5bGUuY3NzVGV4dD0ibGVmdDog IitnKyJweCIsYylmb3IodmFyIHY9MCx3PWMubGVuZ3RoO3c+djt2KyspY1t2XS5z dHlsZS53aWR0aD1rLTMwKyJweCI7aC5jbGFzc05hbWU9ImItc2hhcmUtcG9wdXAg Yi1zaGFyZS1wb3B1cF8iK3MrIiBiLXNoYXJlLXBvcHVwX3RvLSIrcCxhKGwsImIt c2hhcmUtcG9wdXAtd3JhcF9zdGF0ZV92aXNpYmFsZSIpLG4obCwiYi1zaGFyZS1w b3B1cC13cmFwX3N0YXRlX2hpZGRlbiIpLGEobywiYi1zaGFyZS1wb3B1cF9vcGVu ZWQiKSxhKG8sImItc2hhcmUtZm9ybS1idXR0b25fc3RhdGVfcHJlc3NlZCIpLGgu Zmlyc3RDaGlsZC5zdHlsZS56b29tPTEsZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7 Vih0LCJjbGljayIsci5vbkRvY3VtZW50Q2xpY2spfSw1MCksbSgic2hhcmUiKSxL PWwsci5vbm9wZW4oci5fdGhpcyl9ZnVuY3Rpb24gRChlLHQpe3ZhciBvPWUuY3Vy cmVudFRhcmdldHx8cChlLnRhcmdldHx8ZS5zcmNFbGVtZW50LCJiLXNoYXJlX19o YW5kbGUiKTtyKG8sImItc2hhcmUtcG9wdXBfb3BlbmVkIik/dC5jbG9zZVBvcHVw KG8uaWQsdCk6dC5vbmJlZm9yZW9wZW4odC5fdGhpcykhPT0hMSYmdC5vcGVuUG9w dXAobyx0KSxiKGUpLHUoZSl9ZnVuY3Rpb24gaihlKXtyZXR1cm4oZXx8IiIpLnJl cGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9dmFyIEks TixPPXQuZG9jdW1lbnRFbGVtZW50LFc9e30scT1JPWZ1bmN0aW9uKGUsbyl7ZT1l fHx0O2Zvcih2YXIgYT1lW1VdJiZlW1VdKCIqIiksbj1bXSxpPTAscD1hLmxlbmd0 aDtwPmk7aSsrKXIoYVtpXSxvKSYmbi5wdXNoKGFbaV0pO3JldHVybiBufTt0LnF1 ZXJ5U2VsZWN0b3JBbGw/ST1mdW5jdGlvbihlLHQpe3JldHVybiBlLnF1ZXJ5U2Vs ZWN0b3JBbGwoIi4iK3QpfTp0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJihJPWZ1 bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT9lLmdl dEVsZW1lbnRzQnlDbGFzc05hbWUodCk6cShlLHQpfSksTj1lLmlubmVySGVpZ2h0 P2Z1bmN0aW9uKCl7cmV0dXJue3dpZHRoOmUuaW5uZXJXaWR0aCxoZWlnaHQ6ZS5p bm5lckhlaWdodH19Ok8mJk8uY2xpZW50SGVpZ2h0P2Z1bmN0aW9uKCl7cmV0dXJu e3dpZHRoOk8uY2xpZW50V2lkdGgsaGVpZ2h0Ok8uY2xpZW50SGVpZ2h0fX06ZnVu Y3Rpb24oKXt2YXIgZT10LmJvZHk7cmV0dXJue3dpZHRoOmUuY2xpZW50V2lkdGgs aGVpZ2h0OmUuY2xpZW50SGVpZ2h0fX07dmFyIEcsSixWPXQuYWRkRXZlbnRMaXN0 ZW5lcj9mdW5jdGlvbihlLHQsbyl7ZS5hZGRFdmVudExpc3RlbmVyKHQsbywhMSl9 OmZ1bmN0aW9uKGUsdCxvKXtlLmF0dGFjaEV2ZW50KCJvbiIrdCxvKX0sWT10LnJl bW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oZSx0LG8pe2UucmVtb3ZlRXZlbnRM aXN0ZW5lcih0LG8sITEpfTpmdW5jdGlvbihlLHQsbyl7ZS5kZXRhY2hFdmVudCgi b24iK3Qsbyl9OyJvbm1vdXNlZW50ZXIiaW4gTz8oRz1mdW5jdGlvbihlLHQpe1Yo ZSwibW91c2VlbnRlciIsdCl9LEo9ZnVuY3Rpb24oZSx0KXtWKGUsIm1vdXNlbGVh dmUiLHQpfSk6KEc9ZnVuY3Rpb24oZSx0KXtWKGUsIm1vdXNlb3ZlciIsZnVuY3Rp b24oZSl7cyhlLHRoaXMpJiZ0KGUpfSl9LEo9ZnVuY3Rpb24oZSx0KXtWKGUsIm1v dXNlb3V0IixmdW5jdGlvbihlKXtzKGUsdGhpcykmJnQoZSl9KX0pO3ZhciBSPWZ1 bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbyhlLHQsbyl7dmFyIHIsYT1lLnN0eWxlO2lm KCFvJiZhJiZhW3RdKXI9YVt0XTtlbHNlIGlmKGkpe3Q9dC5yZXBsYWNlKHAsIi0k MSIpLnRvTG93ZXJDYXNlKCk7dmFyIG49ZS5vd25lckRvY3VtZW50LmRlZmF1bHRW aWV3O2lmKCFuKXJldHVybiBudWxsO3ZhciBoPW4uZ2V0Q29tcHV0ZWRTdHlsZShl LG51bGwpO2gmJihyPWguZ2V0UHJvcGVydHlWYWx1ZSh0KSl9ZWxzZSBpZihlLmN1 cnJlbnRTdHlsZSl7dmFyIGM9dC5yZXBsYWNlKHMsYik7aWYocj1lLmN1cnJlbnRT dHlsZVt0XXx8ZS5jdXJyZW50U3R5bGVbY10sIXUudGVzdChyKSYmbC50ZXN0KHIp KXt2YXIgXz1hLmxlZnQsZD1lLnJ1bnRpbWVTdHlsZS5sZWZ0O2UucnVudGltZVN0 eWxlLmxlZnQ9ZS5jdXJyZW50U3R5bGUubGVmdCxhLmxlZnQ9ImZvbnRTaXplIj09 PWM/IjFlbSI6cnx8MCxyPWEucGl4ZWxMZWZ0KyJweCIsYS5sZWZ0PV8sZS5ydW50 aW1lU3R5bGUubGVmdD1kfX1yZXR1cm4gcn1mdW5jdGlvbiByKCl7dmFyIGU9dC5j cmVhdGVFbGVtZW50KCJkaXYiKTtlLnN0eWxlLndpZHRoPWUuc3R5bGUucGFkZGlu Z0xlZnQ9IjFweCIsdC5ib2R5LmFwcGVuZENoaWxkKGUpLG4uYm94TW9kZWw9Mj09 PWUub2Zmc2V0V2lkdGgsdC5ib2R5LnJlbW92ZUNoaWxkKGUpLnN0eWxlLmRpc3Bs YXk9Im5vbmUiLGU9bnVsbCxyPWh9ZnVuY3Rpb24gYSgpe3ZhciBlLGkscCxzLGI9 dC5ib2R5LHU9dC5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPXBhcnNlRmxvYXQobyhi LCJtYXJnaW5Ub3AiLCEwKSwxMCl8fDAsYz0iPGRpdiBzdHlsZT0ncG9zaXRpb246 YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQg IzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Jz48ZGl2PjwvZGl2 PjwvZGl2Pjx0YWJsZSBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVm dDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lk dGg6MXB4O2hlaWdodDoxcHg7JyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9 JzAnPjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+Ijt1LnN0eWxlLmNzc1RleHQ9 InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnRvOjA7bWFyZ2luOjA7Ym9yZGVy OjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7dmlzaWJpbGl0eTpoaWRkZW47Iix1Lmlu bmVySFRNTD1jLGIuaW5zZXJ0QmVmb3JlKHUsYi5maXJzdENoaWxkKSxlPXUuZmly c3RDaGlsZCxpPWUuZmlyc3RDaGlsZCxzPWUubmV4dFNpYmxpbmcuZmlyc3RDaGls ZC5maXJzdENoaWxkLG4uZG9lc05vdEFkZEJvcmRlcj01IT09aS5vZmZzZXRUb3As bi5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxscz01PT09cy5vZmZzZXRUb3As aS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGkuc3R5bGUudG9wPSIyMHB4IixuLnN1 cHBvcnRzRml4ZWRQb3NpdGlvbj0yMD09PWkub2Zmc2V0VG9wfHwxNT09PWkub2Zm c2V0VG9wLGkuc3R5bGUucG9zaXRpb249aS5zdHlsZS50b3A9IiIsZS5zdHlsZS5v dmVyZmxvdz0iaGlkZGVuIixlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsbi5z dWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9LTU9PT1pLm9mZnNl dFRvcCxuLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PWIub2Zmc2V0 VG9wIT09bCxiLnJlbW92ZUNoaWxkKHUpLGI9dT1lPWk9cD1zPW51bGwscigpLGE9 aH12YXIgbj17Ym94TW9kZWw6bnVsbH0saT10LmRlZmF1bHRWaWV3JiZ0LmRlZmF1 bHRWaWV3LmdldENvbXB1dGVkU3R5bGUscD0vKFtBLVpdKS9nLHM9Ly0oW2Etel0p L2dpLGI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSx1PS9e LT9cZCsoPzpweCk/JC9pLGw9L14tP1xkLyxoPWZ1bmN0aW9uKCl7fTtyZXR1cm4i Z2V0Qm91bmRpbmdDbGllbnRSZWN0ImluIE8/ZnVuY3Rpb24odCl7aWYoIXR8fCF0 Lm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7cigpO3ZhciBvPXQuZ2V0Qm91bmRp bmdDbGllbnRSZWN0KCksYT10Lm93bmVyRG9jdW1lbnQsaT1hLmJvZHkscD0oTy5j bGllbnRUb3B8fGkuY2xpZW50VG9wfHwwKSsocGFyc2VJbnQoaS5zdHlsZS5tYXJn aW5Ub3AsMTApfHwwKSxzPShPLmNsaWVudExlZnR8fGkuY2xpZW50TGVmdHx8MCkr KHBhcnNlSW50KGkuc3R5bGUubWFyZ2luTGVmdCwxMCl8fDApLGI9by50b3ArKGUu cGFnZVlPZmZzZXR8fG4uYm94TW9kZWwmJk8uc2Nyb2xsVG9wfHxpLnNjcm9sbFRv cCktcCx1PW8ubGVmdCsoZS5wYWdlWE9mZnNldHx8bi5ib3hNb2RlbCYmTy5zY3Jv bGxMZWZ0fHxpLnNjcm9sbExlZnQpLXM7cmV0dXJue3RvcDpiLGxlZnQ6dX19OmZ1 bmN0aW9uKGUpe2lmKCFlfHwhZS5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2Eo KTtmb3IodmFyIHQsbz1lLm9mZnNldFBhcmVudCxyPWUsaT1lLm93bmVyRG9jdW1l bnQscD1pLmJvZHkscz1pLmRlZmF1bHRWaWV3LGI9cz9zLmdldENvbXB1dGVkU3R5 bGUoZSxudWxsKTplLmN1cnJlbnRTdHlsZSx1PWUub2Zmc2V0VG9wLGw9ZS5vZmZz ZXRMZWZ0OyhlPWUucGFyZW50Tm9kZSkmJmUhPT1wJiZlIT09TyYmKCFuLnN1cHBv cnRzRml4ZWRQb3NpdGlvbnx8ImZpeGVkIiE9PWIucG9zaXRpb24pOyl0PXM/cy5n ZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk6ZS5jdXJyZW50U3R5bGUsdS09ZS5zY3Jv bGxUb3AsbC09ZS5zY3JvbGxMZWZ0LGU9PT1vJiYodSs9ZS5vZmZzZXRUb3AsbCs9 ZS5vZmZzZXRMZWZ0LCFuLmRvZXNOb3RBZGRCb3JkZXJ8fG4uZG9lc0FkZEJvcmRl ckZvclRhYmxlQW5kQ2VsbHMmJi9edChhYmxlfGR8aCkkL2kudGVzdChlLm5vZGVO YW1lKXx8KHUrPXBhcnNlRmxvYXQodC5ib3JkZXJUb3BXaWR0aCwxMCl8fDAsbCs9 cGFyc2VGbG9hdCh0LmJvcmRlckxlZnRXaWR0aCwxMCl8fDApLHI9byxvPWUub2Zm c2V0UGFyZW50KSxuLnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJs ZSYmInZpc2libGUiIT09dC5vdmVyZmxvdyYmKHUrPXBhcnNlRmxvYXQodC5ib3Jk ZXJUb3BXaWR0aCwxMCl8fDAsbCs9cGFyc2VGbG9hdCh0LmJvcmRlckxlZnRXaWR0 aCwxMCl8fDApLGI9dDtyZXR1cm4oInJlbGF0aXZlIj09PWIucG9zaXRpb258fCJz dGF0aWMiPT09Yi5wb3NpdGlvbikmJih1Kz1wLm9mZnNldFRvcCxsKz1wLm9mZnNl dExlZnQpLG4uc3VwcG9ydHNGaXhlZFBvc2l0aW9uJiYiZml4ZWQiPT09Yi5wb3Np dGlvbiYmKHUrPU1hdGgubWF4KE8uc2Nyb2xsVG9wLHAuc2Nyb2xsVG9wKSxsKz1N YXRoLm1heChPLnNjcm9sbExlZnQscC5zY3JvbGxMZWZ0KSkse3RvcDp1LGxlZnQ6 bH19fShlLHQpLEg9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBvKCl7aWYoIWkpe2lm KCF0LmJvZHkpcmV0dXJuIHNldFRpbWVvdXQobywxMyk7aWYoaT0hMCxzKXtmb3Io dmFyIGUscj0wO2U9c1tyKytdOyllLmNhbGwobnVsbCk7cz1udWxsfX19ZnVuY3Rp b24gcigpe2lmKCFwKXtpZihwPSEwLCJjb21wbGV0ZSI9PT10LnJlYWR5U3RhdGUp cmV0dXJuIG8oKTtpZih0LmFkZEV2ZW50TGlzdGVuZXIpdC5hZGRFdmVudExpc3Rl bmVyKCJET01Db250ZW50TG9hZGVkIixuLCExKSxlLmFkZEV2ZW50TGlzdGVuZXIo ImxvYWQiLG8sITEpO2Vsc2UgaWYodC5hdHRhY2hFdmVudCl7dC5hdHRhY2hFdmVu dCgib25yZWFkeXN0YXRlY2hhbmdlIixuKSxlLmF0dGFjaEV2ZW50KCJvbmxvYWQi LG8pO3ZhciByPSExO3RyeXtyPW51bGw9PWUuZnJhbWVFbGVtZW50fWNhdGNoKGkp e31PLmRvU2Nyb2xsJiZyJiZhKCl9fX1mdW5jdGlvbiBhKCl7aWYoIWkpe3RyeXtP LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgc2V0VGltZW91 dChhLDEpfW8oKX19dmFyIG4saT0hMSxwPSExLHM9W107cmV0dXJuIHQuYWRkRXZl bnRMaXN0ZW5lcj9uPWZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJE T01Db250ZW50TG9hZGVkIixuLCExKSxvKCl9OnQuYXR0YWNoRXZlbnQmJihuPWZ1 bmN0aW9uKCl7ImNvbXBsZXRlIj09PXQucmVhZHlTdGF0ZSYmKHQuZGV0YWNoRXZl bnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsbiksbygpKX0pLGZ1bmN0aW9uKGUpe3Io KSxpP2UuY2FsbChudWxsKTpzLnB1c2goZSl9fShlLHQpLFE9ZnVuY3Rpb24oKXt9 LEs9bnVsbCxVPSJnZXRFbGVtZW50c0J5VGFnTmFtZSIsJD1lbmNvZGVVUklDb21w b25lbnQsWD10W1VdKCJoZWFkIilbMF18fHQuYm9keSxaPSIvL3lhc3RhdGljLm5l dC9zaGFyZSIsZXQ9Imh0dHBzOi8vc2hhcmUueWFuZGV4Lm5ldCIsdHQ9e2F6Onti bG9nZ2VyOiJCbG9nZ2VyIixkZWxpY2lvdXM6ImRlbGljaW91cyIsZGlhcnk6IkRp YXJ5IixkaWdnOiJEaWdnIixldmVybm90ZToiRXZlcm5vdGUiLGZhY2Vib29rOiJG YWNlYm9vayIsZnJpZW5kZmVlZDoiRnJpZW5kRmVlZCIsZ2J1eno6Ikdvb2dsZSBC dXp6IixncGx1czoiR29vZ2xlIFBsdXMiLGp1aWNrOiJKdWljayIsbGlua2VkaW46 IkxpbmtlZEluIixsaXZlaW50ZXJuZXQ6IkxpdmVJbnRlcm5ldCIsbGo6IkxpdmVK b3VybmFsIixtb2lrcnVnOiJNb3kgS3J1cSIsbW9pbWlyOiJNb3kgTWlyIixteXNw YWNlOiJNeVNwYWNlIixvZG5va2xhc3NuaWtpOiJPZG5va2xhc3NuaWtpIixwaW50 ZXJlc3Q6IlBpbnRlcmVzdCIscG9ja2V0OiJQb2NrZXQiLHF6b25lOiJRem9uZSIs cmVucmVuOiJSZW5yZW4iLHNpbmFfd2VpYm86IlNpbmEgV2VpYm8iLHN1cmZpbmdi aXJkOiJTdXJmaW5nYmlyZCIsdGVuY2VudF93ZWlibzoiVGVuY2VudCBXZWlibyIs dHV0Ynk6IllBIFRVVCEiLHR3aXR0ZXI6IlR3aXR0ZXIiLHZrb250YWt0ZToi0JLQ mtC+0L3RgtCw0LrRgtC1Iix5YXpha2xhZGtpOiJZYW5kZXguxo9sZsmZY2lubMmZ ciJ9LGJlOntibG9nZ2VyOiJCbG9nZ2VyIixkZWxpY2lvdXM6ImRlbGljaW91cyIs ZGlhcnk6IkRpYXJ5IixkaWdnOiJEaWdnIixldmVybm90ZToiRXZlcm5vdGUiLGZh Y2Vib29rOiJGYWNlYm9vayIsZnJpZW5kZmVlZDoiRnJpZW5kRmVlZCIsZ2J1eno6 Ikdvb2dsZSBCdXp6IixncGx1czoiR29vZ2xlIFBsdXMiLGp1aWNrOiJKdWljayIs bGlua2VkaW46IkxpbmtlZEluIixsaXZlaW50ZXJuZXQ6IkxpdmVJbnRlcm5ldCIs bGo6IkxpdmVKb3VybmFsIixtb2lrcnVnOiLQnNC+0Lkg0JrRgNGD0LMiLG1vaW1p cjoi0JzQvtC5INCc0LjRgCIsbXlzcGFjZToiTXlTcGFjZSIsb2Rub2tsYXNzbmlr aToi0J7QtNC90L7QutC70LDRgdGB0L3QuNC60LgiLHBpbnRlcmVzdDoiUGludGVy ZXN0Iixwb2NrZXQ6IlBvY2tldCIscXpvbmU6IlF6b25lIixyZW5yZW46IlJlbnJl biIsc2luYV93ZWlibzoiU2luYSBXZWlibyIsc3VyZmluZ2JpcmQ6IlN1cmZpbmdi aXJkIix0ZW5jZW50X3dlaWJvOiJUZW5jZW50IFdlaWJvIix0dXRieToi0K8g0KLQ o9CiISIsdHdpdHRlcjoiVHdpdHRlciIsdmtvbnRha3RlOiLQktCa0L7QvdGC0LDQ utGC0LUiLHlhemFrbGFka2k6ItCv0L3QtNC10LrRgS7Ql9Cw0LrQu9Cw0LTQutGW In0sZW46e2Jsb2dnZXI6IkJsb2dnZXIiLGRlbGljaW91czoiZGVsaWNpb3VzIixk aWFyeToiRGlhcnkiLGRpZ2c6IkRpZ2ciLGV2ZXJub3RlOiJFdmVybm90ZSIsZmFj ZWJvb2s6IkZhY2Vib29rIixmcmllbmRmZWVkOiJGcmllbmRGZWVkIixnYnV6ejoi R29vZ2xlIEJ1enoiLGdwbHVzOiJHb29nbGUgUGx1cyIsanVpY2s6Ikp1aWNrIixs aW5rZWRpbjoiTGlua2VkSW4iLGxpdmVpbnRlcm5ldDoiTGl2ZUludGVybmV0Iixs ajoiTGl2ZUpvdXJuYWwiLG1vaWtydWc6Ik1vaSBLcnVnIixtb2ltaXI6Ik1vaSBN aXIiLG15c3BhY2U6Ik15U3BhY2UiLG9kbm9rbGFzc25pa2k6Ik9kbm9rbGFzc25p a2kiLHBpbnRlcmVzdDoiUGludGVyZXN0Iixwb2NrZXQ6IlBvY2tldCIscXpvbmU6 IlF6b25lIixyZW5yZW46IlJlbnJlbiIsc2luYV93ZWlibzoiU2luYSBXZWlibyIs c3VyZmluZ2JpcmQ6IlN1cmZpbmdiaXJkIix0ZW5jZW50X3dlaWJvOiJUZW5jZW50 IFdlaWJvIix0dXRieToiVHV0LmJ5Iix0d2l0dGVyOiJUd2l0dGVyIix2a29udGFr dGU6IlZLb250YWt0ZSIseWF6YWtsYWRraToiWWFuZGV4LkJvb2ttYXJrcyJ9LGh5 OntibG9nZ2VyOiJCbG9nZ2VyIixkZWxpY2lvdXM6ImRlbGljaW91cyIsZGlhcnk6 IkRpYXJ5IixkaWdnOiJEaWdnIixldmVybm90ZToiRXZlcm5vdGUiLGZhY2Vib29r OiJGYWNlYm9vayIsZnJpZW5kZmVlZDoiRnJpZW5kRmVlZCIsZ2J1eno6Ikdvb2ds ZSBCdXp6IixncGx1czoiR29vZ2xlIFBsdXMiLGp1aWNrOiJKdWljayIsbGlua2Vk aW46IkxpbmtlZEluIixsaXZlaW50ZXJuZXQ6IkxpdmVJbnRlcm5ldCIsbGo6Ikxp dmVKb3VybmFsIixtb2lrcnVnOiJNb2kgS3J1ZyIsbW9pbWlyOiJNb2kgTWlyIixt eXNwYWNlOiJNeVNwYWNlIixvZG5va2xhc3NuaWtpOiJPZG5va2xhc3NuaWtpIixw aW50ZXJlc3Q6IlBpbnRlcmVzdCIscG9ja2V0OiJQb2NrZXQiLHF6b25lOiIiLHJl bnJlbjoiIixzaW5hX3dlaWJvOiIiLHN1cmZpbmdiaXJkOiJTdXJmaW5nYmlyZCIs dGVuY2VudF93ZWlibzoiIix0dXRieToiWUEgVFVUIix0d2l0dGVyOiJUd2l0dGVy Iix2a29udGFrdGU6IlZLb250YWt0ZSIseWF6YWtsYWRraToiWWFuZGV4LtS31bvV odW21avVt9W21aXWgCJ9LGthOntibG9nZ2VyOiJCbG9nZ2VyIixkZWxpY2lvdXM6 ImRlbGljaW91cyIsZGlhcnk6IkRpYXJ5IixkaWdnOiJEaWdnIixldmVybm90ZToi RXZlcm5vdGUiLGZhY2Vib29rOiJGYWNlYm9vayIsZnJpZW5kZmVlZDoiRnJpZW5k RmVlZCIsZ2J1eno6Ikdvb2dsZSBCdXp6IixncGx1czoiR29vZ2xlIFBsdXMiLGp1 aWNrOiJKdWljayIsbGlua2VkaW46IkxpbmtlZEluIixsaXZlaW50ZXJuZXQ6Ikxp dmVJbnRlcm5ldCIsbGo6IkxpdmVKb3VybmFsIixtb2lrcnVnOiJNb2kgS3J1ZyIs bW9pbWlyOiJNb2kgTWlyIixteXNwYWNlOiJNeVNwYWNlIixvZG5va2xhc3NuaWtp OiJPZG5va2xhc25pa2kiLHBpbnRlcmVzdDoiUGludGVyZXN0Iixwb2NrZXQ6IlBv Y2tldCIscXpvbmU6IiIscmVucmVuOiIiLHNpbmFfd2VpYm86IiIsc3VyZmluZ2Jp cmQ6IlN1cmZpbmdiaXJkIix0ZW5jZW50X3dlaWJvOiIiLHR1dGJ5OiJZYSBUdXQh Iix0d2l0dGVyOiJUd2l0dGVyIix2a29udGFrdGU6IlZLb250YWt0ZSIseWF6YWts YWRraToiWWFuZGV4IOGDqeGDkOGDnOGDkOGDoOGDl+GDlOGDkeGDmCJ9LGtrOnti bG9nZ2VyOiJCbG9nZ2VyIixkZWxpY2lvdXM6ImRlbGljaW91cyIsZGlhcnk6IkRp YXJ5IixkaWdnOiJEaWdnIixldmVybm90ZToiRXZlcm5vdGUiLGZhY2Vib29rOiJG YWNlYm9vayIsZnJpZW5kZmVlZDoiRnJpZW5kZmVlZCIsZ2J1eno6Ikdvb2dsZSBC dXp6IixncGx1czoiR29vZ2xlIFBsdXMiLGp1aWNrOiJKdWljayIsbGlua2VkaW46 IkxpbmtlZEluIixsaXZlaW50ZXJuZXQ6IkxpdmVJbnRlcm5ldCIsbGo6IkxpdmVK b3VybmFsIixtb2lrcnVnOiLQnNC+0Lkg0JrRgNGD0LMiLG1vaW1pcjoi0JzQvtC5 INCc0LjRgCIsbXlzcGFjZToiTXlTcGFjZSIsb2Rub2tsYXNzbmlraToi0J7QtNC9 0L7QutC70LDRgdGB0L3QuNC60LgiLHBpbnRlcmVzdDoiUGludGVyZXN0Iixwb2Nr ZXQ6IlBvY2tldCIscXpvbmU6IlF6b25lIixyZW5yZW46IlJlbnJlbiIsc2luYV93 ZWlibzoiU2luYSBXZWlibyIsc3VyZmluZ2JpcmQ6IlN1cmZpbmdiaXJkIix0ZW5j ZW50X3dlaWJvOiJUZW5jZW50IFdlaWJvIix0dXRieToi0K8g0KLQo9CiISIsdHdp dHRlcjoiVHdpdHRlciIsdmtvbnRha3RlOiLQktCa0L7QvdGC0LDQutGC0LUiLHlh emFrbGFka2k6ItCv0L3QtNC10LrRgS7QkdC10YLQsdC10LvQs9GW0LvQtdGAIn0s cm86e2Jsb2dnZXI6IkJsb2dnZXIiLGRlbGljaW91czoiZGVsaWNpb3VzIixkaWFy eToiRGlhcnkiLGRpZ2c6IkRpZ2ciLGV2ZXJub3RlOiJFdmVybm90ZSIsZmFjZWJv b2s6IkZhY2Vib29rIixmcmllbmRmZWVkOiJGcmllbmRGZWVkIixnYnV6ejoiR29v Z2xlIEJ1enoiLGdwbHVzOiJHb29nbGUgUGx1cyIsanVpY2s6Ikp1aWNrIixsaW5r ZWRpbjoiTGlua2VkSW4iLGxpdmVpbnRlcm5ldDoiTGl2ZUludGVybmV0Iixsajoi TGl2ZUpvdXJuYWwiLG1vaWtydWc6Ik1vaSBLcnVnIixtb2ltaXI6Ik1vaSBNaXIi LG15c3BhY2U6Ik15U3BhY2UiLG9kbm9rbGFzc25pa2k6Ik9kbm9rbGFzc25pa2ki LHBpbnRlcmVzdDoiUGludGVyZXN0Iixwb2NrZXQ6IlBvY2tldCIscXpvbmU6IiIs cmVucmVuOiIiLHNpbmFfd2VpYm86IiIsc3VyZmluZ2JpcmQ6IlN1cmZpbmdiaXJk Iix0ZW5jZW50X3dlaWJvOiIiLHR1dGJ5OiJZQSBUVVQhIix0d2l0dGVyOiJUd2l0 dGVyIix2a29udGFrdGU6IlZLb250YWt0ZSIseWF6YWtsYWRraToiWWFuZGV4Lk5v dGnFo2UifSxydTp7YmxvZ2dlcjoiQmxvZ2dlciIsZGVsaWNpb3VzOiJkZWxpY2lv dXMiLGRpYXJ5OiJEaWFyeSIsZGlnZzoiRGlnZyIsZXZlcm5vdGU6IkV2ZXJub3Rl IixmYWNlYm9vazoiRmFjZWJvb2siLGZyaWVuZGZlZWQ6IkZyaWVuZEZlZWQiLGdi dXp6OiJHb29nbGUgQnV6eiIsZ3BsdXM6Ikdvb2dsZSBQbHVzIixqdWljazoiSnVp Y2siLGxpbmtlZGluOiJMaW5rZWRJbiIsbGl2ZWludGVybmV0OiJMaXZlSW50ZXJu ZXQiLGxqOiJMaXZlSm91cm5hbCIsbW9pa3J1Zzoi0JzQvtC5INCa0YDRg9CzIixt b2ltaXI6ItCc0L7QuSDQnNC40YAiLG15c3BhY2U6Ik15U3BhY2UiLG9kbm9rbGFz c25pa2k6ItCe0LTQvdC+0LrQu9Cw0YHRgdC90LjQutC4IixwaW50ZXJlc3Q6IlBp bnRlcmVzdCIscG9ja2V0OiJQb2NrZXQiLHF6b25lOiJRem9uZSIscmVucmVuOiJS ZW5yZW4iLHNpbmFfd2VpYm86IlNpbmEgV2VpYm8iLHN1cmZpbmdiaXJkOiJTdXJm aW5nYmlyZCIsdGVuY2VudF93ZWlibzoiVGVuY2VudCBXZWlibyIsdHV0Ynk6ItCv INCi0KPQoiEiLHR3aXR0ZXI6IlR3aXR0ZXIiLHZrb250YWt0ZToi0JLQmtC+0L3R gtCw0LrRgtC1Iix5YXpha2xhZGtpOiLQr9C90LTQtdC60YEu0JfQsNC60LvQsNC0 0LrQuCJ9LHRyOntibG9nZ2VyOiJCbG9nZ2VyIixkZWxpY2lvdXM6ImRlbGljaW91 cyIsZGlhcnk6IkRpYXJ5IixkaWdnOiJEaWdnIixldmVybm90ZToiRXZlcm5vdGUi LGZhY2Vib29rOiJGYWNlYm9vayAiLGZyaWVuZGZlZWQ6IkZyaWVuZEZlZWQiLGdi dXp6OiJHb29nbGUgQnV6eiIsZ3BsdXM6Ikdvb2dsZSBQbHVzIixqdWljazoiSnVp Y2siLGxpbmtlZGluOiJMaW5rZWRJbiIsbGl2ZWludGVybmV0OiJMaXZlSW50ZXJu ZXQiLGxqOiJMaXZlSm91cm5hbCAiLG1vaWtydWc6Ik1veSBLcnVnIixtb2ltaXI6 Ik1vaSBNaXIiLG15c3BhY2U6Ik15U3BhY2UiLG9kbm9rbGFzc25pa2k6Ik9kbm9r bGFzbmlraSIscGludGVyZXN0OiJQaW50ZXJlc3QiLHBvY2tldDoiUG9ja2V0Iixx em9uZToiIixyZW5yZW46IiIsc2luYV93ZWlibzoiIixzdXJmaW5nYmlyZDoiU3Vy ZmluZ2JpcmQiLHRlbmNlbnRfd2VpYm86IiIsdHV0Ynk6IlR1dC5ieSEiLHR3aXR0 ZXI6IlR3aXR0ZXIgIix2a29udGFrdGU6IlZLb250YWt0ZSAiLHlhemFrbGFka2k6 IllhbmRleC5GYXZvcmlsZXIifSx0dDp7YmxvZ2dlcjoiQmxvZ2dlciIsZGVsaWNp b3VzOiJkZWxpY2lvdXMiLGRpYXJ5OiJEaWFyeSIsZGlnZzoiRGlnZyIsZXZlcm5v dGU6IkV2ZXJub3RlIixmYWNlYm9vazoiRmFjZWJvb2siLGZyaWVuZGZlZWQ6IkZy aWVuZEZlZWQiLGdidXp6OiJHb29nbGUgQnV6eiIsZ3BsdXM6Ikdvb2dsZSBQbHVz IixqdWljazoiSnVpY2siLGxpbmtlZGluOiJMaW5rZWRJbiIsbGl2ZWludGVybmV0 OiJMaXZlSW50ZXJuZXQiLGxqOiJMaXZlSm91cm5hbCIsbW9pa3J1Zzoi0JzQvtC5 INCa0YDRg9CzIixtb2ltaXI6ItCc0L7QuSDQnNC40YAiLG15c3BhY2U6Ik15U3Bh Y2UiLG9kbm9rbGFzc25pa2k6ItCe0LTQvdC+0LrQu9Cw0YHRgdC90LjQutC4Iixw aW50ZXJlc3Q6IlBpbnRlcmVzdCIscG9ja2V0OiJQb2NrZXQiLHF6b25lOiJRem9u ZSIscmVucmVuOiJSZW5yZW4iLHNpbmFfd2VpYm86IlNpbmEgV2VpYm8iLHN1cmZp bmdiaXJkOiJTdXJmaW5nYmlyZCIsdGVuY2VudF93ZWlibzoiVGVuY2VudCBXZWli byIsdHV0Ynk6ItCvINCi0KPQoiEiLHR3aXR0ZXI6IlR3aXR0ZXIiLHZrb250YWt0 ZToi0JLQmtC+0L3RgtCw0LrRgtC1Iix5YXpha2xhZGtpOiLQr9C90LTQtdC60YEu 0JrRi9GB0YLRi9GA0LPRi9GH0LvQsNGAIn0sdWs6e2Jsb2dnZXI6IkJsb2dnZXIi LGRlbGljaW91czoiZGVsaWNpb3VzIixkaWFyeToiRGlhcnkiLGRpZ2c6IkRpZ2ci LGV2ZXJub3RlOiJFdmVybm90ZSIsZmFjZWJvb2s6IkZhY2Vib29rIixmcmllbmRm ZWVkOiJGcmllbmRGZWVkIixnYnV6ejoiR29vZ2xlIEJ1enoiLGdwbHVzOiJHb29n bGUgUGx1cyIsanVpY2s6Ikp1aWNrIixsaW5rZWRpbjoiTGlua2VkSW4iLGxpdmVp bnRlcm5ldDoiTGl2ZUludGVybmV0IixsajoiTGl2ZUpvdXJuYWwiLG1vaWtydWc6 ItCc0L7QuSDQmtGA0YPQsyIsbW9pbWlyOiLQnNC+0Lkg0JzQuNGAIixteXNwYWNl OiJNeVNwYWNlIixvZG5va2xhc3NuaWtpOiLQntC00L3QvtC60LvQsNGB0L3QuNC6 0LgiLHBpbnRlcmVzdDoiUGludGVyZXN0Iixwb2NrZXQ6IlBvY2tldCIscXpvbmU6 IlF6b25lIixyZW5yZW46IlJlbnJlbiIsc2luYV93ZWlibzoiU2luYSBXZWlibyIs c3VyZmluZ2JpcmQ6IlN1cmZpbmdiaXJkIix0ZW5jZW50X3dlaWJvOiJUZW5jZW50 IFdlaWJvIix0dXRieToi0K8g0KLQo9CiISIsdHdpdHRlcjoiVHdpdHRlciIsdmtv bnRha3RlOiLQktCa0L7QvdGC0LDQutGC0ZYiLHlhemFrbGFka2k6ItCv0L3QtNC1 0LrRgS7Ql9Cw0LrQu9Cw0LTQutC4In19LG90PXthejp7Y2xvc2U6ImJhxJ9sYSIs ImNvZGUgYmxvZyI6IkJsb3Egw7zDp8O8biBrb2QiLGxpbms6IsaPbGFxyZkiLHNo YXJlOiJQYXlsYcWfIiwic2hhcmUgd2l0aCBmcmllbmRzIjoiRG9zdGxhcmxhIHBh eWxhxZ8ifSxiZTp7Y2xvc2U6ItC30LDQutGA0YvRhtGMIiwiY29kZSBibG9nIjoi 0JrQvtC0INC00LvRjyDQsdC70L7Qs9CwIixsaW5rOiJD0L/QsNGB0YvQu9C60LAi LHNoYXJlOiLQn9Cw0LTQt9GP0LvRltGG0YbQsCIsInNoYXJlIHdpdGggZnJpZW5k cyI6ItCf0LDQtNC30Y/Qu9GW0YbRhtCwINC3INGB0Y/QsdGA0LDQvGkifSxlbjp7 Y2xvc2U6ImNsb3NlIiwiY29kZSBibG9nIjoiQmxvZyBjb2RlIixsaW5rOiJMaW5r IixzaGFyZToiU2hhcmUiLCJzaGFyZSB3aXRoIGZyaWVuZHMiOiJTaGFyZSB3aXRo IGZyaWVuZHMifSxoeTp7Y2xvc2U6ItWT1aHVr9Wl1awiLCJjb2RlIGJsb2ciOiLV ldaA1aHVo9aA1asg1a/VuNWkIixsaW5rOiLVgNWy1bjWgtW0IixzaGFyZToi1L/V q9W91b7VpdWsIiwic2hhcmUgd2l0aCBmcmllbmRzIjoi1L/Vq9W91b7VpdaEINWo 1bbVr9Wl1oDVttWl1oDVqyDVsNWl1b8ifSxrYTp7Y2xvc2U6IuGDk+GDkOGDruGD o+GDoOGDleGDkCIsImNvZGUgYmxvZyI6IuGDkeGDmuGDneGDkuGDmOGDoSDhg5nh g53hg5Phg5giLGxpbms6IuGDkeGDm+GDo+GDmuGDmCIsc2hhcmU6IuGDkuGDkOGD luGDmOGDkOGDoOGDlOGDkeGDkCIsInNoYXJlIHdpdGggZnJpZW5kcyI6IuGDm+GD lOGDkuGDneGDkeGDoOGDlOGDkeGDl+GDkOGDnCDhg5Lhg5Dhg5bhg5jhg5Dhg6Dh g5Thg5Hhg5AifSxrazp7Y2xvc2U6ItC20LDQsdGDIiwiY29kZSBibG9nIjoi0JHQ u9C+0LMg0q/RiNGW0L0g0LrQvtC0IixsaW5rOiLQodGW0LvRgtC10LzQtSIsc2hh cmU6ItCR06nQu9GW0YHRgyIsInNoYXJlIHdpdGggZnJpZW5kcyI6ItCU0L7RgdGC 0LDRgNGL0qPRi9C30LHQtdC9INCx06nQu9GW0YHRltKj0ZbQtyJ9LHJvOntjbG9z ZToiw65uY2hpZGUiLCJjb2RlIGJsb2ciOiJDb2QgcGVudHJ1IGJsb2ciLGxpbms6 IkxpbmsiLHNoYXJlOiJEaXN0cmlidWllIiwic2hhcmUgd2l0aCBmcmllbmRzIjoi RGlzdHJpYnVpZSBwcmlldGVuaWxvciJ9LHJ1OntjbG9zZToi0LfQsNC60YDRi9GC 0YwiLCJjb2RlIGJsb2ciOiLQmtC+0LQg0LTQu9GPINCx0LvQvtCz0LAiLGxpbms6 ItCh0YHRi9C70LrQsCIsc2hhcmU6ItCf0L7QtNC10LvQuNGC0YzRgdGPIiwic2hh cmUgd2l0aCBmcmllbmRzIjoi0J/QvtC00LXQu9C40YLQtdGB0Ywg0YEg0LTRgNGD 0LfRjNGP0LzQuCJ9LHRyOntjbG9zZToia2FwYXQiLCJjb2RlIGJsb2ciOiJCbG9n IGnDp2luIGtvZCIsbGluazoiQmHEn2xhbnTEsSIsc2hhcmU6IlBheWxhxZ8iLCJz aGFyZSB3aXRoIGZyaWVuZHMiOiJBcmthZGHFn2xhcmxhIHBheWxhxZ8ifSx0dDp7 Y2xvc2U6ItGP0LHRgyIsImNvZGUgYmxvZyI6ItCR0LvQvtCzINOp0YfQtdC9INC6 0L7QtCIsbGluazoi0KHRi9C70YLQsNC80LAiLHNoYXJlOiLQkdKv0LvQtdGI0q8i LCJzaGFyZSB3aXRoIGZyaWVuZHMiOiLQlNGD0YHQu9Cw0YDQs9GL0Lcg0LHQtdC7 05nQvSDQsdKv0LvQtdGI0LXQs9C10LcifSx1azp7Y2xvc2U6ItC30LDQutGA0LjR gtC4IiwiY29kZSBibG9nIjoi0JrQvtC0INC00LvRjyDQsdC70L7Qs9GDIixsaW5r OiLQn9C+0YHQuNC70LDQvdC90Y8iLHNoYXJlOiLQn9C+0LTRltC70LjRgtC40YHR jyIsInNoYXJlIHdpdGggZnJpZW5kcyI6ItCf0L7QtNGW0LvRltGC0YzRgdGPINC3 INC00YDRg9C30Y/QvNC4In19O3R0LmN1c3RvbT17fTt2YXIgcnQ7IllhImluIGV8 fChlLllhPXt9KSxZYS5zaGFyZT1mdW5jdGlvbihvKXtmdW5jdGlvbiByKGUpe3Jl dHVybiBlPSgiIitlKS5yZXBsYWNlKC9ccy9nLCIiKS5tYXRjaCgvXlwtP1xkK1wr Py8pLGUmJmVbMF19ZnVuY3Rpb24gaShlKXt2YXIgdD1uZXcgUmVnRXhwKCIoXFxk KShcXGR7M30pKCB8XFwrfCQpIiwiZyIpO3JldHVybiB0LnRlc3QoIiIrZSk/aSgo IiIrZSkucmVwbGFjZSh0LGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c1sxXSsi ICIrYXJndW1lbnRzWzJdK2FyZ3VtZW50c1szXX0pKTplfWlmKCEodGhpcyBpbnN0 YW5jZW9mIFlhLnNoYXJlKSlyZXR1cm4gbmV3IFlhLnNoYXJlKG8pO28mJihaPW8u U1RBVElDX0hPU1R8fFosZXQ9by5TSEFSRV9IT1NUfHxldCksdGhpcy5fbG9hZGVk PSExO3ZhciBwPXRoaXMscz1vLm9uc2hhcmV8fFEsYj1vLm9uQmVmb3JlU2hhcmV8 fG51bGwsdT17b25yZWFkeTpvLm9ucmVhZHl8fG8ub25sb2FkfHxRLG9uYmVmb3Jl Y2xvc2U6by5vbmJlZm9yZWNsb3NlfHxRLG9uY2xvc2U6by5vbmNsb3NlfHxRLG9u YmVmb3Jlb3BlbjpvLm9uYmVmb3Jlb3Blbnx8USxvbm9wZW46by5vbm9wZW58fFEs b25zaGFyZTpmdW5jdGlvbihlKXtpZihiKXRyeXtpZihiKHApPT09ITEpcmV0dXJu IGUucHJldmVudERlZmF1bHQoKSwhMX1jYXRjaCh0KXtyZXR1cm4gZS5wcmV2ZW50 RGVmYXVsdCgpLCExfXZhciBvPU0oZSk7byYmKHAuaW5jcmVtZW50Q291bnRlcihv KSxzKG8scCkpfSxfdGhpczpwfTt1Lm9uTWVzc2FnZT1mdW5jdGlvbihlKXtwLm9u TWVzc2FnZShlKX0sdGhpcy5vbk1lc3NhZ2U9ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0 PVoubWF0Y2goL1wvXC8oW15cL10rKShcL3wkKS8pO2lmKGUmJmUuZGF0YSYmKGUu b3JpZ2luLm1hdGNoKFJlZ0V4cCgiLy8iKyh0JiZ0WzFdLnJlcGxhY2UoIi4iLCJc XC4iKSsiJCIpKSl8fGUub3JpZ2luPT13aW5kb3cubG9jYXRpb24ub3JpZ2luKSl7 dmFyIG89KCIiK2UuZGF0YSkuc3BsaXQoInwiKSxhPXt9O2lmKDMhPW8ubGVuZ3Ro KXJldHVybjthLnNlcnZpY2U9by5zaGlmdCgpLGEuY291bnRlcj1yKG8uc2hpZnQo KSksYS51cmw9by5qb2luKCJ8IiksYS51cmwubGVuZ3RoJiZhLnNlcnZpY2UmJnAu c2hvd0NvdW50ZXIoYSl9fWNhdGNoKGUpe319LHRoaXMuaW5jcmVtZW50Q291bnRl cj1mdW5jdGlvbihlKXtpZighd2luZG93LnBvc3RNZXNzYWdlKXJldHVybiExO3Zh ciB0PUkocC5fYmxvY2ssImItc2hhcmUtYnRuX18iK2UpWzBdLG89dD9JKHQsImIt c2hhcmUtY291bnRlciIpWzBdOiExLG49byYmcihvLmlubmVySFRNTHx8IjAiKTtv JiZuJiYvXltcZCBdKyQvLnRlc3QobikmJihuPXBhcnNlSW50KHIobil8fDAsMTAp KzEsby5pbm5lckhUTUw9aSgiIituKSxhKHQsImItc2hhcmUtYnRuX19jb3VudGVy IikpfSx0aGlzLnNob3dDb3VudGVyPWZ1bmN0aW9uKGUpe3ZhciB0PUkocC5fYmxv Y2ssImItc2hhcmUtYnRuX18iK2Uuc2VydmljZSlbMF0sbz10P0kodCwiYi1zaGFy ZS1jb3VudGVyIilbMF06ITE7byYmcC5fYmxvY2suZ2V0QXR0cmlidXRlKCJkYXRh LXlhc2hhcmVsaW5rIik9PWUudXJsJiYoby5pbm5lckhUTUw9aShlLmNvdW50ZXIp fHwiIixlLmNvdW50ZXI8MD9vLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobyk6ZS5j b3VudGVyJiYiMCIhPWUuY291bnRlcj9hKHQsImItc2hhcmUtYnRuX19jb3VudGVy Iik6bih0LCJiLXNoYXJlLWJ0bl9fY291bnRlciIpKX0sdS50b2dnbGVPcGVuTW9k ZT1mdW5jdGlvbihlKXtEKGUsdSl9LHUuY2xvc2VQb3B1cD1mdW5jdGlvbihlKXt6 KCksdS5vbmJlZm9yZWNsb3NlKHApIT09ITEmJkIoZSx1KX0sdS5vcGVuUG9wdXA9 ZnVuY3Rpb24oZSx0KXtGKGUsdCl9LHUub25Eb2N1bWVudENsaWNrPWZ1bmN0aW9u KGUpe1AoZSx1KX0sdS5zZXRQb3B1cENsb3NlVGltZW91dD1mdW5jdGlvbigpe1Qo dSl9LHRoaXMuY2xvc2VQb3B1cD1mdW5jdGlvbigpe0IodGhpcy5fcG9wdXAuaWQs dSl9LHRoaXMub3BlblBvcHVwPWZ1bmN0aW9uKGUpe0YoSSh0aGlzLl9ibG9jaywi Yi1zaGFyZV9faGFuZGxlIilbMF0sdSxlKX0sdGhpcy5hcHBlbmRNZXRyaWthPWZ1 bmN0aW9uKCl7aWYoIWUuWWEuX2dsb2JhbFNoYXJlTG9hZGVkKXt2YXIgbz10Lmdl dEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSxyPXQuY3JlYXRlRWxlbWVu dCgic2NyaXB0IiksYT1mdW5jdGlvbigpe28ucGFyZW50Tm9kZS5pbnNlcnRCZWZv cmUocixvKX07ci50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHIuYXN5bmM9ITAsci5z cmM9KCJodHRwczoiPT10LmxvY2F0aW9uLnByb3RvY29sPyJodHRwczoiOiJodHRw OiIpKyIvL21jLnlhbmRleC5ydS9tZXRyaWthL3dhdGNoLmpzIiwiW29iamVjdCBP cGVyYV0iPT1lLm9wZXJhP3QuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExv YWRlZCIsYSwhMSk6YSgpLChlLnlhbmRleF9tZXRyaWthX2NhbGxiYWNrcz1lLnlh bmRleF9tZXRyaWthX2NhbGxiYWNrc3x8W10pLnB1c2goZnVuY3Rpb24oKXt0cnl7 ZS55YUNvdW50ZXIyNjgxMjY1Mz1uZXcgWWEuTWV0cmlrYSh7aWQ6MjY4MTI2NTMs dHJhY2tMaW5rczohMCxhY2N1cmF0ZVRyYWNrQm91bmNlOiEwLHBhcmFtczp7anF1 ZXJ5OiJmdW5jdGlvbiI9PXR5cGVvZiBlLmpRdWVyeSx2ZXJzaW9uOiJmdW5jdGlv biI9PXR5cGVvZiBlLmpRdWVyeSYmZS5qUXVlcnkoKS5qcXVlcnl9fSksci5yZW1v dmUoKX1jYXRjaCh0KXt9fSksZS5ZYS5fZ2xvYmFsU2hhcmVMb2FkZWQ9ITB9fSxI KGZ1bmN0aW9uKCl7dmFyIGU9ZChvLHUpO289bnVsbCxlJiYocC5fYmxvY2s9ZVsw XSxwLl9wb3B1cD1lWzFdLHAuX2xvYWRlZD0hMCx1Lm9ucmVhZHkocCkscC5hcHBl bmRNZXRyaWthKCkpfSl9LFlhLnNoYXJlLnByb3RvdHlwZT17dXBkYXRlU2hhcmVM aW5rOmZ1bmN0aW9uKG8scixhKXtpZighdGhpcy5fbG9hZGVkKXJldHVybiB0aGlz O3ZhciBuLGkscCxzLGI9IiIsdT0iIjtpZigxPT1hcmd1bWVudHMubGVuZ3RoJiYi b2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1swXSl7dmFyIGw9YXJndW1lbnRzWzBd O289bC5saW5rfHxlLmxvY2F0aW9uLnRvU3RyaW5nKCkscj1sLnRpdGxlfHx0LnRp dGxlLGI9bC5kZXNjcmlwdGlvbnx8IiIsdT1sLmltYWdlfHwiIixhPWwuc2Vydmlj ZVNwZWNpZmljfHx7fX1lbHNlIG89b3x8ZS5sb2NhdGlvbi50b1N0cmluZygpLHI9 cnx8dC50aXRsZSxhPWF8fHt9O2ZvcihwPUkodGhpcy5fYmxvY2ssImItc2hhcmVf X2xpbmsiKSxuPTAsaT1wLmxlbmd0aDtpPm47bisrKXM9cFtuXS5nZXRBdHRyaWJ1 dGUoImRhdGEtc2VydmljZSIpLHBbbl0uaHJlZj15KHMsZihzLCJsaW5rIixvLGEp LGYocywidGl0bGUiLHIsYSksZihzLCJkZXNjcmlwdGlvbiIsYixhKSxmKHMsImlt YWdlIix1LGEpKTtpZih0aGlzLl9wb3B1cCl7Zm9yKHA9SSh0aGlzLl9wb3B1cCwi Yi1zaGFyZS1wb3B1cF9faXRlbSIpLG49MCxpPXAubGVuZ3RoO2k+bjtuKyspcz1w W25dLmdldEF0dHJpYnV0ZSgiZGF0YS1zZXJ2aWNlIikscyYmKHBbbl0uaHJlZj15 KHMsZihzLCJsaW5rIixvLGEpLGYocywidGl0bGUiLHIsYSksZihzLCJkZXNjcmlw dGlvbiIsYixhKSxmKHMsImltYWdlIix1LGEpKSk7cD1JKHRoaXMuX3BvcHVwLCJi LXNoYXJlLXBvcHVwX19pbnB1dF9faW5wdXQiKTtmb3IodmFyIG49cC5sZW5ndGgt MTtuPj0wO24tLSlwW25dJiYidGV4dGFyZWEiIT09cFtuXS50YWdOYW1lLnRvTG93 ZXJDYXNlKCkmJihwW25dLnZhbHVlPW8pfXJldHVybiB0aGlzfSx1cGRhdGVDdXN0 b21TZXJ2aWNlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR0LmN1c3RvbVtlXSYmdHQu Y3VzdG9tW2VdLnVybD8odHQuY3VzdG9tW2VdLnVybD10LHRoaXMudXBkYXRlU2hh cmVMaW5rKCksITApOiExfX0sSChmdW5jdGlvbigpe2Zvcih2YXIgZSxvLHIsYSxu PUkodC5ib2R5LCJ5YXNoYXJlLWF1dG8taW5pdCIpLGk9MCxwPW4ubGVuZ3RoO3A+ aTtpKyspZT1uW2ldLG89ZS5nZXRBdHRyaWJ1dGUoImRhdGEteWFzaGFyZVF1aWNr U2VydmljZXMiKSxyPWUuZ2V0QXR0cmlidXRlKCJkYXRhLXlhc2hhcmVQb3B1cFNl cnZpY2VzIiksbz0ic3RyaW5nIj09dHlwZW9mIG8/by5zcGxpdCgiLCIpOm51bGws YT17ZWxlbWVudDplLHRoZW1lOmUuZ2V0QXR0cmlidXRlKCJkYXRhLXlhc2hhcmVU aGVtZSIpLGwxMG46ZS5nZXRBdHRyaWJ1dGUoImRhdGEteWFzaGFyZUwxMG4iKSxp bWFnZTplLmdldEF0dHJpYnV0ZSgiZGF0YS15YXNoYXJlSW1hZ2UiKSxsaW5rOmUu Z2V0QXR0cmlidXRlKCJkYXRhLXlhc2hhcmVMaW5rIiksdGl0bGU6ZS5nZXRBdHRy aWJ1dGUoImRhdGEteWFzaGFyZVRpdGxlIiksZGVzY3JpcHRpb246ZS5nZXRBdHRy aWJ1dGUoImRhdGEteWFzaGFyZURlc2NyaXB0aW9uIiksZWxlbWVudFN0eWxlOnt0 eXBlOmUuZ2V0QXR0cmlidXRlKCJkYXRhLXlhc2hhcmVUeXBlIikscXVpY2tTZXJ2 aWNlczpvfX0sciYmInN0cmluZyI9PXR5cGVvZiByJiYocj1yLnNwbGl0KCIsIiks YS5wb3B1cFN0eWxlPXtibG9ja3M6cn0pLG5ldyBZYS5zaGFyZShhKX0pfSh3aW5k b3csZG9jdW1lbnQpOw== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=cIE_X.jpeg Content-Type: image/jpeg; name=cIE_X.jpeg Content-Location: http://i1.x8.net/T/cIE_X.jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEASABIAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NzApLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUI BwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8n OT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAsQC0AwEiAAIRAQMR Af/EABwAAAICAwEBAAAAAAAAAAAAAAUGBAcAAgMBCP/EAEcQAAIBAwMCAwUECAMF BgcAAAECAwAEEQUSIQYxE0FRFCJhcYEjMpGxBxU1QnKhwdEWM3MkNDZSkhc3Q2Lh 8EVTdIKTo7L/xAAbAQABBQEBAAAAAAAAAAAAAAABAAIDBAYHBf/EADYRAAIBAgQC CAQFBAMAAAAAAAABAgMRBBIhMROxBSIyQVFhcYEGcpGhFSMzUsEUFjRCYtHh/9oA DAMBAAIRAxEAPwCJYadeagdllbvMyqCwXGRXGaJreeSCVSrxsVcHuCDzWac0iaxp xEhCm4iG0fxCiV1ZrqXW09g7tHDPqEokYcHbvPArwaeAjUjGSlve/sbGr0lKlUlF x0S0BImjPuhlzUiC1kuGG0EjOCaLT22lXMF1bLonsNxEcQNHuZmwcYfPn55ol05p DGxiku4WVwxOD54Peq2OpU6FPPTbfdbvG0+kZWaqJJ7ok6PpMcEas45+VGknhMjR pIpZPvKD2rrtAAGMClCS+e21i9SFC08pCRj4+tZZU5V5SzbojzSrttsaTeW4Vy0y AIcN72MV4l7ayb9k8bbRk4YcCkySF4bG/imbe4lj3H1pgk022ttLuJoYlRmtyCR8 qdPDU4WTb1f/AECdGMe/f/wJR6hazOEjniZj+6GBNbPPhxHHhn889gKTLWBriC1S 2tJEmVstP2GM00x3cMYKtIvjuzEJnk4JwP5UqmGVN9XUbOnldkdLi6ktYzI8kZA4 2gEEn4VvFqNvJD43iqqg87j2pehvLjVJhbTFCJA3uoMNCR6mp1loyWaLbTOJklzu QjgedGVGEVab1/gMqcYrrbhJdRs3O1bqIk+QYVtHqNnI4RLmJmPYBhS7plpbm2v5 fBTdG7KjegxWuhQk+FIbJNm1j4+7nz8qMsJT1d3p6DnSir67DMLu3aJpRMhjXuwP ArY3MKw+MZVEeM788YpHt5Cxit7hmjtHmYlh+83oaM9QXEMVta2asEjkYFiPJBSl g0pKN9+QJUbSUb7jAk0ciK6OGVhkEedc7u9t7K3ae4kCRLjLGhPTd2kttNbhgwhc 7D/5T2rTrL/hqfGPvL+dDD4WMsVGlO9m7exWxF6UZNdx1m6msXtZjYzLcXKrlIuc sfhWlj1HDHpsMuryJa3UmSYiCDjPBx5UBl0fTI7yeez9w2oUFPEOQ+Vww/nW95Ya fqer3tzPz7LO4mG/HiJt9wD68VpfwzCNZMssu7fffZL0PN4873ur7eXqMB6s0Xzv l/6TUqz1mx1BytrNvIXd90jjOKUJun9L/wBmRfD8aKRPagJMkq3f5YyBUrpS1ls+ oNQtnVkhSPMKFs4UvxiqeL6LwkcPKpTzKUVez9beBJSxFR1FGdrPwHIOPWsr3HwF ZWV0PRKqt38G9spyCVhnSRgO+AQTUu4D6lqdzdWu5GkuHmiY8EZYkVGt4XndVHbz JovqVo1h0jd3kEpSRYgySIee47Vtf62pDJTg0ney9/Ev4unRgpVJ6trl/JNhuOty g23DMo7Euv8AauvtfXQP+b/+xf7VUq9V6+qjGq3ePhIa8l6r6hX/AOL3ePL7Q16r oYx98foZWVWk3s/qi79HfW5XmfWjubCiL3wfXPb6VJi0y3ivpboKTM/m3O35VRFn 1N1JeXsNrFrF34krhFzIe5pqOldagndrzKAu45mOfvbe2K8it0HiatSU3JJy8Eyx Sx0KccsU7FkS6NbTrOH3/bOHbB8xU2SBZbZoGzsZdnHfFVWmldayRmRdePhgj3jO cYLhc9vU0Nv5uq9Osfa5tckKNIqoFnJJDZw3yODUT+HcS7XqLT1JH0in3MuS1to7 S3SGPdsQYGTQjVNILXiXURIOe/ofU0gz6f1lbRl5teZFXIYtOQFxjv8AiK3k07rG LcG185DbMLcMcnj+9Gn8P4mMs2dfRhj0koyvZ/Ys+J7eJAQ6s5HvEDlq3jVnlMzg rxhF8wKqyfTusoFRm11l3uUGZyORj+9c47PrCSGKQa9IPFUMqmZgeSRg8cHimv4b r9019xr6RhvlZaNvpsFtDPGm/bOxZsn1HlUW10K3tJVeOa44zhC/H4UgR6Z1hIqe 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 HZfuL8h+VZWVlEmP/9k= ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=XnLZ_y.jpeg Content-Type: image/jpeg; name=XnLZ_y.jpeg Content-Location: http://i1.x8.net/T/XnLZ_y.jpeg Content-Transfer-Encoding: Base64 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 ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=UxGv_y.jpeg Content-Type: image/jpeg; name=UxGv_y.jpeg Content-Location: http://i0.x8.net/T/UxGv_y.jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjL/wAARCABcAHoDASIAAhEBAxEB/8QAGwAAAgMBAQEAAAAA AAAAAAAABAUAAgMBBgf/xAA9EAACAQMCAwMICAUEAwAAAAABAgMABBESIQUTMUFR YRQiUnGBkZKhBhUjMlNyseEkQlRV8DSCk8E1Q9H/xAAYAQADAQEAAAAAAAAAAAAA AAAAAQIDBP/EAB0RAQEAAgIDAQAAAAAAAAAAAAABERICURMhYTH/2gAMAwEAAhED EQA/APj3OlaeQapCNR1EZON/lXVadGwTLpOwJ1Deu2fFb7hN3cSWU3KeQlXOkNkA 57QaMH0l4u1zb3Xlr823ZmiIVQELDDHGMbgmtJWPoBMtyRr+1GO3cZoZZZO2R8+L GnLfSDiwtTbLeScl0xpZVPZpx06YJHtNJZFKPhjgju7aLAvz5h/7XH+41tDLKwZd MkxO+FZtXyqlpZy3cojhXWxo2e8j4YV4dw6UG5dgs1yB036L4f56lnAkyiRzhcrb 3ee5gxrsi34I128wz0JVzRUMHGbiDnw3N88WoLrULjJOAPXms73624bMsN7d30Ej LrCyKASMkZ94I9lVLfzB6shBeFwxiuVx2KjYq6rfK4IFyp7wjZzWP1hd/wBzuvcK 55fd/wBzu/lTxy6LE7dkjvyzFhcFs5OzVTRehM6Ln3NVvL7vH/lLv5VPL7v+6Xnv FGOXQxO3GivpAg0XBC56q1YiK/iYNy7nH5Wo+34lcqG18Qun32yRW44nMxC+V3G/ jS1vQxOwcb3sjBAk6f7SMfKtvJr/APqX+Jv/AJQfEOMXqRsI7uYENjIalv17xX+v uPjNLZWhzFem9klMXB7I6XIPmMe3wrUtOiF/qSz9kb5oHhV9Ba85Z3QYn1hXzhhv 3U3PH+HYbENhqPRtL+b6hRMYOz4Wy8Ynt4w0vA7aNM4y0ZFCnj0J68IsvhNX43f2 tzAwgZMvLrEcerSgx40hpcri+qck6On+kLi3kitbSC1Mgwzwggkd1LLM5vYfzj9a wrez/wBbD+cfrUnjBx5RMmUWaRVBPmhyB17qpJJJK2qWR3bGMuxJ+dcf77es1Wuy RglSpUoCVKlSgLpsK0jb7VPWKyHSuxn7VPWKKC68k1SSDP8AOf1oStbg/wATL+c/ rWVcddD0HB7O2nlme6jBTnhC2ktoXO5Cg708HBuB6GZriHUFyEW1kJJ7s9K85aSS IsoSRlHNJIBxms5OJHViSS5Vh1AYj/urlkibLkXxyztbe2YwRx4WYKsiKV1DBPQ/ 5tXn6Onu45kAczSEbjW5IHzoSRkZgUTQO7OanlZb6OKVvZf62D84/WsKLbh19Byn a2lTmECMkYyT0xUmZNG5YnQ3U9lV5UnoN7qEns+K20TyzRXMcaEKzNkBSew0J5TP +NJ8RrbzfGehtypPQb3VOU/oN7qU+Uz/AI0nxGp5TP8AjSfEaPN8GhvypPQb3Vzl Seg3upT5TP8AjSfEanlM/wCNJ8Ro83waHAjfH3G91djifmKdDdR2UsglmdT9tJ19 I1rqm/Fk+I0/LehoEuB/Ey/nP61lREyaY8+NYVjhoZxsUSVsFsSMdI9dYtKG3azY ntPh7u6t4TpDkDUea3mjtoSWeeNxjKjGADg7U8+g408DAgW+M9x/amNpDci0j0R8 PZT5wMhXUd+hzQFk9ubnF3GHRts6ioXx2FNufY20NwtrPEhdSVKu59Q3Hsp8ew0g gVph5RHaCUltAQx6MYwQcnvxirTIOZZN9jpFwq4ymT69+nr2om3voJrmJIpi8wDa CjyEqO0YxvsKpcmVDZa+Yq+Vqy6tY9o2+Y3q7JikV8T4vHdWwhihjBcZlPJC4bOf NwelJqJvIIYTGYbpJ9Yy2lSNJ7t6GrE0qVKlASpUqUAfYKGR894ovlr3UPw8AROS e0USGB7RW3H8TQ14gFuSO8UtprfEG0PfqFKqjn+nDBOUTIGjLNrbcJms+ZBv50f/ AA/vTPhdgvEBdIZZFKPkKmgasnHViPlV7j6PQ2t28U00iqw+xOYzqYDJDYbC1OTK 1tzdBuSYvNxkkBO/vNa2/CmbLTyKIxqHmSKTkeGfA1tc8Dc3aQ2LGRWTVmVkQ5zg j73qpOQQSD1G1GQ9HBBFahE+zzqwhIQtuMnUc+B+XfW14EMtqxKMTcISPMKjPZgM dvA15WpVbesA6i4XaywcQkMrgwMwjAkjwcAnfff2VpDwazkuGQzSADl78yP+br2/ 520hzUzUA/Xg1mb2OEzSaGRmJ5kechsDtxSniFvHa30sMTFkRsAkgk7d42obNa21 vLdzpDChd2OABQGVSvUaYODxciCCK7uhvPI6alXwH+ftWHjGqTTJZ2IU9CIP3p4T sSW8miMjI99QT79RXoX4iw1CKzsWAxu0GOvhmr29651NLY2JGwUCHBJ99XrU7x52 eXXbkZ7RQVeqk4v5x02Fkq9xhz/3VfrY/wBFYf8AD+9KzJ7xpFxDh3D3mFvHeKHY hvOQ538a6eK2F2FglS8KkaNzH091KSA9y4YZGo7e2scLHcbKGCt0boaRZr1Nzd2b Qusxu2SbZhiPfsPZn3VivF7SRBGoviNIQDTH0xju7qH4idcIX7u4OVPhS/l4ONb9 PSq7JE7USbPggBxb35I7MitouFcIlUsLa/AHUlgAPbQEmUk0qzYx6RrvPmJRTK5X 0SdvdSxBtRRseBJKFkjvQp/nDKQankPAjKEEd5533W1rg0PMxYANggd9SNyFYYGk EkDuPhRiDatfJOB8oScq837Na1Be2lhC8XDYZI5ZNmllILAdy46eugwzGYb7Nkke NZkecTS9HbREeFiYEbd/TFYPAypzBsAeyr8xyArMWHcagY8srnYMMCncVMGu+q31 HUZNPngjdTnp865b3sdu8TyW6XAG5ilOzbEb9vbn2VF3tiO4KfX66HdQisVG5yM9 3SqpDbziVrPbPEvCLa2kfdJIy2VywOw7RgY9RNLA4wPMNRySck9laDiFwoABXA2+ 6KnB25f/2Q== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=qzs1_y.jpeg Content-Type: image/jpeg; name=qzs1_y.jpeg Content-Location: http://i0.x8.net/T/qzs1_y.jpeg Content-Transfer-Encoding: Base64 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 ySck91EGoXCgAFcDj7oqaG3Z/9k= ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=nI2F_y.jpeg Content-Type: image/jpeg; name=nI2F_y.jpeg Content-Location: http://i0.x8.net/T/nI2F_y.jpeg Content-Transfer-Encoding: Base64 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 ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=comment-3fbf25beb3589d923b6cc9a770f07b00.gif Content-Type: image/gif; name=comment-3fbf25beb3589d923b6cc9a770f07b00.gif Content-Location: http://asset1.torrentino.com/assets/com/comment-3fbf25beb3589d923b6cc9a770f07b00.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKAKIAADMzM//M/93d3WZmZu7u7v///wAAAAAAACH5BAEHAAEALAAA AAAKAAoAAAMjGLoc8/C5Qit9Rehd3v7CQ4ACIRKohg4B4ALjADStSSuukgAAOw== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=noposter.png Content-Type: image/png; name=noposter.png Content-Location: http://asset1.torrentino.com/images/noposter.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv YmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu aWlkOjA1NjgwNkIwNUFBODExRTBCM0Y5Q0Y0M0I3MDczN0Q4IiB4bXBNTTpEb2N1 bWVudElEPSJ4bXAuZGlkOjA1NjgwNkIxNUFBODExRTBCM0Y5Q0Y0M0I3MDczN0Q4 Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 MDU2ODA2QUU1QUE4MTFFMEIzRjlDRjQzQjcwNzM3RDgiIHN0UmVmOmRvY3VtZW50 SUQ9InhtcC5kaWQ6MDU2ODA2QUY1QUE4MTFFMEIzRjlDRjQzQjcwNzM3RDgiLz4g PC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBh Y2tldCBlbmQ9InIiPz4wFW5PAAAD6klEQVR42qRZWZJiMQxrQoDi/nfiREAVNMsY zBgjy066Ox/UWxM9WV5iFrvd7n6/f32O1tpisbBTeEBO7W58V8dyuey9293iIJ7K 5P12u8WpdWEdfiJDI2995UNfvF6v9G58F7A+YOnCq+ewSYE2A5RxA5Ou1+uMCT22 X7j1/RwPWHpJJtputx6Q/3SzqSePrqRTyfN2q7Ca3bVbx+NRYMlpiwYCWyjt9oBd 9I/ZsVDuMdldqqQ4lQHt9Upe2qIVZS5bTDQuSs/kAsTUuBu1WqTBg7Mp1Lg6BJCp k04SiQGz+CudYqIiswf0fcOkpypz+3RY1U71OLOpnfZ5TGBrEZxRJeYrTBO9BOJO XKvPYIri8woVnurwAQzR4Fdp60eYLJp79djDMTTEtEFTxYv+em3zdipBzTA0Q1AO KG00YfTMdhQoEEMxeQQ+Q0QE5jpgzTdbQ0zRzwFTDEj+eSXJUAI+QMbjViQvxnfB 5JWUCSVDSe3wEbdimvN6osGQRnO/JORju2uUgOdGD2gFTzRSL59jRoJAJ6Rd77Ok cvm7zOvE8rsnW00VEEYxFZ/krQPMZcEMYWWYbDqVeR1gi5one4BmyVaHeB/NraSJ s2TMRd1khR28mxY2/rc9R12dRqUDqXHa4vPakCr1vlgSxW+1jUkmOJuBuipWEIWH q/mG/pVVLxmjj8j0P7LT/UurJWnRfOh9lM6orSz5wvWqaLaipSgmaY1Q6KlIQb4E b5mwzPWiOeottSYZzxNELL/PyyTRC5lHf87KhGzbCGgiwZk8WhalattlgIrypo6L QC2BpTLPxJsFG3oR2hAxnmVYO63NC9tNRge7IjqjGsoSKDGiRvNsi5fhq+s+3fEW 0R+aHa8DkDm1nW9jxOvDPlG0Js1UXPK+uKNQZpanF3WSrN1Fg1l7ba6fhRS1V8YT QL89R60/b80s8b/Z8i1JWoYPI1YByD8sj10ul6LcMBhNI8JqtdpsNvKr0QF6VLS9 Nu+nIAxtSNGy7F0G+4hi8jJ6jQbNJ4Zs2NItOFbO/FqQ1t7b1yx4Gm0+9ng9ZcUq bUl6xzRBz+bEGEuzrga0uP2AVhGVo3CmM8Qw1rPSgEKBDSftOEJnq/BiFZkGS+zL 10mjbo5l+TtiihtuPda+srfmRyOpVhjUKlRJcNF8ZejLYkr1fcyJRZQaduGH5Q28 SOGez2ff8nzAKlwm2oKGeBgzHxMpOJ1OPia3+n8ievDT+DnEZMjegamufqj3zWys s+oDchG15itAyNF+vxewM3XtTKe0dp2CcoElviny7xpzD4fDTIfjF7gngQK4HvuW wz8N/sIo7K0p03LxnwADALiI3bagGQC0AAAAAElFTkSuQmCC ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=tnVG_p.jpeg Content-Type: image/jpeg; name=tnVG_p.jpeg Content-Location: http://i1.x8.net/T/tnVG_p.jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjL/wAARCAAyADIDASIAAhEBAxEB/8QAHAAAAgIDAQEAAAAA AAAAAAAAAAYFBwEDBAII/8QANBAAAgECBQMDAgUBCQAAAAAAAQIDBBEABRIhMQYT USJBYQdxFCOBkbEVMjRCUmKhwdHh/8QAGgEAAgMBAQAAAAAAAAAAAAAABAUBAgMA Bv/EADURAAEDAQQFBw0AAAAAAAAAAAEAAgMRBAUhMRIUQVGxMjRhcZHh8AYTFRYz QlJTYmOBodH/2gAMAwEAAhEDEQA/AIOClp+1rlZ5S5UIsIuWbnRe3pPH6E2vh3yL pd8siXMJI4v6gzXESkEQKb3Av/i43xXkclTS5tFJTTqkUcfckYj1cHYf9/OJjL9I s0UxNbI19SsWOm9jYfPP2wlfYn2uIBjg0bcK1Xr71vR8MjodImue7qpx3qyTPmht aw2Pst722vv55++MpPmbMg0EKGGo2WxFxf8A2v8AtitaGqrKtqgtUSFi5RE5IFiT 8+Bv846Iepa6itSJmki0qLreIW9YsSN/bYLx7nAo8nPrHZ3pHr7djVZLmueaTQ/b RX9BIUgr584097MSnGl7bXC2vb+MIrdb5q9IIY8zk9RIC612FhybeTcfbA+e5p2H mXN5HEjCPtBlvYG1+PA3++O9XS33x2d6q23ja1WWrppF3W9vODFRCozCVRIKuVQ3 qAHAvgxh6A+5+lprHQUzdF5fR1MlbNXQU7RRQRMZJlFl9JJN/bzjTllfR0WeyV9J GYqDQwjV/WWsf7QANwCbb+364kuisvps6ynOMrqWZY6iCFW7ZswBQi4+cK9V0Bm/ TlRUUsbTVLSt34a2CmZwEFwUdRsCdv8AgjDy7mxNGm9tSVpfEkpncxrqZcES9c10 lRWzQQKSke5AGlV4DffGnIHqM1y3XFJA6qdN1AuPg/8AuEnOKjMaemnpZKcrFPKX 7irsxBsd+RY+xx4+n+Zy0PVkMZIeln9E4vYMBc6j4t58YNdBHUkDBBRWt4o0q16r ow1dDDUOyxvESbqouy/5TieynpnLocogamhHcZ9TzMtzzx8YXcz6hhNDSzZXWmtm p2eVmMepoiSBYaQoYWvz45G+OaLP+r8pnSWskaqopLErFJGG0+ze6lTwSMDPi0hg jJS4ENGJPQfBVsx0NEkaqDBsAP7uuDCNH9Q6pokPYRLgHS1VCCPgjVscGKaJ3Ibz Mu4pMyvMq7L+oKZaGRllmpY0FkLX9N+BiTzLrrN4PwkmYVDQxT6JojTqoZLggNpJ O1weT4J8Yicpy6DNs80nMpaER0EYWeCZY2ux0uoLf6Tvax/jC5nPSoy0UKzyKYau WbsziZmdo1YKrN4P22tibDZw4Mqc9m/P+Iy8nF1pe0DEU4Bd0NTS9X1cq1sUmVtD F3njo3vrPvuQTudx4F/GOacJl4f+kUSd+QSPAwkDExEkbWF2K8Hg3N+MKtG82Xxi Wme8sgaNrNbg/H6/viz8qn6ey/pCPMp4qiNVfv0060xleGa1pEJGwBvcXsCCbe+N 5AIgBQ0qlWkXmpzSFT5xUx66KoigSZkCISzJoAFrXBPPJvcXJ4w6fTSkdp6imlq6 KOva6fgaoyISq2bUpS4bnjcbXtwcJfUOY5LnWa9/LYJoFZdX5qaRq9wNzfE/9Oq2 tyzqRWhaKalcXqFmN7FRZSp5HI39gd8XmoGEhdDI9r8E+O3TyyMHrcu1gkN6UO/3 sP4GDDTFnuQ1ESTzZd+bIod9VKjnUdzdr7/f3wYXawfllMdetPxKtOiFV+rKdHAZ GiIZSLg7HnGzM0SpznpGGdFliM+ko41KQXa4sfY2H7YMGC4M4vGxy1vfncv44BVf lqKeou2VGjvuNNtravGPorpxVTqfMadAFh/Ax/lgWXZ7cccHBgxF682clEPKVSdR 0tPFnGbxR08SRpWnSioAF2HA9sJ9fLJT1waB2iYSEAodJAsdtsGDGzPZjqVX8pZk mkeV2aRyxYkksbk4MGDEqq//2Q== ------------g4QYkLs0brU8yo6UeYwHBy Content-Disposition: inline; filename=ga.js Content-Type: text/javascript; name=ga.js Content-Location: http://www.google-analytics.com/ga.js Content-Transfer-Encoding: Quoted-Printable (function(){var aa=3DencodeURIComponent,ba=3DInfinity,ca=3DsetTimeout,da= =3DisNaN,m=3DMath,ea=3DdecodeURIComponent;function Ie(a,b){return a.onlo= ad=3Db}function Je(a,b){return a.onerror=3Db}function ha(a,b){return a.n= ame=3Db} var p=3D"replace",la=3D"floor",ma=3D"charAt",oa=3D"match",pa=3D"port",qa= =3D"createElement",g=3D"getTime",u=3D"host",v=3D"toString",y=3D"split",t= a=3D"stopPropagation",z=3D"location",va=3D"search",A=3D"protocol",xa=3D"= href",ya=3D"apply",n=3D"push",ia=3D"test",ja=3D"slice",ka=3D"load",na=3D= "value",q=3D"indexOf",ra=3D"path",r=3D"name",w=3D"length",x=3D"prototype= ",sa=3D"clientWidth",ua=3D"scope",wa=3D"clientHeight",B=3D"substring",za= =3D"navigator",C=3D"join",D=3D"toLowerCase",E;function Aa(a,b){switch(b)= {case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*= a}return a}function Ba(a){return"function"=3D=3Dtypeof a}function Ca(a){= return void 0!=3Da&&-1<(a.constructor+"")[q]("String")}function F(a,b){r= eturn void 0=3D=3Da||"-"=3D=3Da&&!b||""=3D=3Da}function Da(a){if(!a||""=3D= =3Da)return"";for(;a&&-1<" \n\r\t"[q](a[ma](0));)a=3Da[B](1);for(;a&&-1<= " \n\r\t"[q](a[ma](a[w]-1));)a=3Da[B](0,a[w]-1);return a}function Ea(){r= eturn m.round(2147483647*m.random())}function Fa(){} function G(a,b){if(aa instanceof Function)return b?encodeURI(a):aa(a);H(= 68);return escape(a)}function I(a){a=3Da[y]("+")[C](" ");if(ea instanceo= f Function)try{return ea(a)}catch(b){H(17)}else H(68);return unescape(a)= }var Ga=3Dfunction(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!= d):a.attachEvent&&a.attachEvent("on"+b,c)}; function Ia(a,b){if(a){var c=3DJ[qa]("script");c.type=3D"text/javascript= ";c.async=3D!0;c.src=3Da;c.id=3Db;var d=3DJ.getElementsByTagName("script= ")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0= a[y]("/")[0][q](":")&&(a= =3Dk+f[2][B](0,f[2].lastIndexOf("/"))+"/"+a):a=3Dk+f[2]+(a||Be);d.href=3D= a;e=3Dc(d);return{protocol:(d[A]||"")[D](),host:e[0], port:e[1],path:e[2],Oa:d[va]||"",url:a||""}}function Na(a,b){function c(= b,c){a.contains(b)||a.set(b,[]);a.get(b)[n](c)}for(var d=3DDa(b)[y]("&")= ,e=3D0;ef?c(d[e],"1"):c(d[e]= [B](0,f),d[e][B](f+1))}}function Pa(a,b){if(F(a)||"["=3D=3Da[ma](0)&&"]"= =3D=3Da[ma](a[w]-1))return"-";var c=3DJ.domain;return a[q](c+(b&&"/"!=3D= b?b:""))=3D=3D(0=3D=3Da[q]("http://")?7:0=3D=3Da[q]("https://")?8:0)?"0"= :a};var Qa=3D0;function Ra(a,b,c){1<=3DQa||1<=3D100*m.random()||ld()||(a= =3D["utmt=3Derror","utmerr=3D"+a,"utmwv=3D5.6.4","utmn=3D"+Ea(),"utmsp=3D= 1"],b&&a[n]("api=3D"+b),c&&a[n]("msg=3D"+G(c[B](0,100))),M.w&&a[n]("aip=3D= 1"),Sa(a[C]("&")),Qa++)};var Ta=3D0,Ua=3D{};function N(a){return Va("x"+= Ta++,a)}function Va(a,b){Ua[a]=3D!!b;return a} var Wa=3DN(),Xa=3DVa("anonymizeIp"),Ya=3DN(),$a=3DN(),ab=3DN(),bb=3DN(),= O=3DN(),P=3DN(),cb=3DN(),db=3DN(),eb=3DN(),fb=3DN(),gb=3DN(),hb=3DN(),ib= =3DN(),jb=3DN(),kb=3DN(),lb=3DN(),nb=3DN(),ob=3DN(),pb=3DN(),qb=3DN(),rb= =3DN(),sb=3DN(),tb=3DN(),ub=3DN(),vb=3DN(),wb=3DN(),xb=3DN(),yb=3DN(),zb= =3DN(),Ab=3DN(),Bb=3DN(),Cb=3DN(),Db=3DN(),Eb=3DN(),Fb=3DN(!0),Gb=3DVa("= currencyCode"),Hb=3DVa("page"),Ib=3DVa("title"),Jb=3DN(),Kb=3DN(),Lb=3DN= (),Mb=3DN(),Nb=3DN(),Ob=3DN(),Pb=3DN(),Qb=3DN(),Rb=3DN(),Q=3DN(!0),Sb=3D= N(!0),Tb=3DN(!0),Ub=3DN(!0),Vb=3DN(!0),Wb=3DN(!0),Zb=3DN(!0),$b=3DN(!0),= ac=3DN(!0),bc=3DN(!0),cc=3DN(!0),R=3DN(!0),dc=3DN(!0), ec=3DN(!0),fc=3DN(!0),gc=3DN(!0),hc=3DN(!0),ic=3DN(!0),jc=3DN(!0),S=3DN(= !0),kc=3DN(!0),lc=3DN(!0),mc=3DN(!0),nc=3DN(!0),oc=3DN(!0),pc=3DN(!0),qc= =3DN(!0),rc=3DVa("campaignParams"),sc=3DN(),tc=3DVa("hitCallback"),uc=3D= N();N();var vc=3DN(),wc=3DN(),xc=3DN(),yc=3DN(),zc=3DN(),Ac=3DN(),Bc=3DN= (),Cc=3DN(),Dc=3DN(),Ec=3DN(),Fc=3DN(),Gc=3DN(),Hc=3DN(),Ic=3DN();N();va= r Mc=3DN(),Nc=3DN(),Yb=3DN(),Jc=3DN(),Kc=3DN(),Lc=3DVa("utmtCookieName")= ,Cd=3DVa("displayFeatures"),Oc=3DN(),of=3DVa("gtmid"),Oe=3DVa("uaName"),= Pe=3DVa("uaDomain"),Qe=3DVa("uaPath"),pf=3DVa("linkid");var Re=3Dfunctio= n(){function a(a,c,d){T(qf[x],a,c,d)}a("_createTracker",qf[x].r,55);a("_= getTracker",qf[x].oa,0);a("_getTrackerByName",qf[x].u,51);a("_getTracker= s",qf[x].pa,130);a("_anonymizeIp",qf[x].aa,16);a("_forceSSL",qf[x].la,12= 5);a("_getPlugin",Pc,120)},Se=3Dfunction(){function a(a,c,d){T(U[x],a,c,= d)}Qc("_getName",$a,58);Qc("_getAccount",Wa,64);Qc("_visitCode",Q,54);Qc= ("_getClientInfo",ib,53,1);Qc("_getDetectTitle",lb,56,1);Qc("_getDetectF= lash",jb,65,1);Qc("_getLocalGifPath",wb,57);Qc("_getServiceMode", xb,59);V("_setClientInfo",ib,66,2);V("_setAccount",Wa,3);V("_setNamespac= e",Ya,48);V("_setAllowLinker",fb,11,2);V("_setDetectFlash",jb,61,2);V("_= setDetectTitle",lb,62,2);V("_setLocalGifPath",wb,46,0);V("_setLocalServe= rMode",xb,92,void 0,0);V("_setRemoteServerMode",xb,63,void 0,1);V("_setL= ocalRemoteServerMode",xb,47,void 0,2);V("_setSampleRate",vb,45,1);V("_se= tCampaignTrack",kb,36,2);V("_setAllowAnchor",gb,7,2);V("_setCampNameKey"= ,ob,41);V("_setCampContentKey",tb,38);V("_setCampIdKey",nb,39);V("_setCa= mpMediumKey", rb,40);V("_setCampNOKey",ub,42);V("_setCampSourceKey",qb,43);V("_setCamp= TermKey",sb,44);V("_setCampCIdKey",pb,37);V("_setCookiePath",P,9,0);V("_= setMaxCustomVariables",yb,0,1);V("_setVisitorCookieTimeout",cb,28,1);V("= _setSessionCookieTimeout",db,26,1);V("_setCampaignCookieTimeout",eb,29,1= );V("_setReferrerOverride",Jb,49);V("_setSiteSpeedSampleRate",Dc,132);a(= "_trackPageview",U[x].Fa,1);a("_trackEvent",U[x].F,4);a("_trackPageLoadT= ime",U[x].Ea,100);a("_trackSocial",U[x].Ga,104);a("_trackTrans",U[x].Ia,= 18);a("_sendXEvent",U[x].t,78);a("_createEventTracker",U[x].ia,74);a("_g= etVersion",U[x].qa,60);a("_setDomainName",U[x].B,6);a("_setAllowHash",U[= x].va,8);a("_getLinkerUrl",U[x].na,52);a("_link",U[x].link,101);a("_link= ByPost",U[x].ua,102);a("_setTrans",U[x].za,20);a("_addTrans",U[x].$,21);= a("_addItem",U[x].Y,19);a("_clearTrans",U[x].ea,105);a("_setTransactionD= elim",U[x].Aa,82);a("_setCustomVar",U[x].wa,10);a("_deleteCustomVar",U[x= ].ka,35);a("_getVisitorCustomVar",U[x].ra,50);a("_setXKey",U[x].Ca,83); a("_setXValue",U[x].Da,84);a("_getXKey",U[x].sa,76);a("_getXValue",U[x].= ta,77);a("_clearXKey",U[x].fa,72);a("_clearXValue",U[x].ga,73);a("_creat= eXObj",U[x].ja,75);a("_addIgnoredOrganic",U[x].W,15);a("_clearIgnoredOrg= anic",U[x].ba,97);a("_addIgnoredRef",U[x].X,31);a("_clearIgnoredRef",U[x= ].ca,32);a("_addOrganic",U[x].Z,14);a("_clearOrganic",U[x].da,70);a("_co= okiePathCopy",U[x].ha,30);a("_get",U[x].ma,106);a("_set",U[x].xa,107);a(= "_addEventListener",U[x].addEventListener,108);a("_removeEventListener",= U[x].removeEventListener,109);a("_addDevId",U[x].V);a("_getPlugin",Pc,12= 2);a("_setPageGroup",U[x].ya,126);a("_trackTiming",U[x].Ha,124);a("_init= Data",U[x].v,2);a("_setVar",U[x].Ba,22);V("_setSessionTimeout",db,27,3);= V("_setCookieTimeout",eb,25,3);V("_setCookiePersistence",cb,24,1);a("_se= tAutoTrackOutbound",Fa,79);a("_setTrackOutboundSubdomains",Fa,81);a("_se= tHrefExamineLimit",Fa,80)};function Pc(a){var b=3Dthis.plugins_;if(b)ret= urn b.get(a)} var T=3Dfunction(a,b,c,d){a[b]=3Dfunction(){try{return void 0!=3Dd&&H(d)= ,c[ya](this,arguments)}catch(a){throw Ra("exc",b,a&&a[r]),a;}}},Qc=3Dfun= ction(a,b,c,d){U[x][a]=3Dfunction(){try{return H(c),Aa(this.a.get(b),d)}= catch(e){throw Ra("exc",a,e&&e[r]),e;}}},V=3Dfunction(a,b,c,d,e){U[x][a]= =3Dfunction(f){try{H(c),void 0=3D=3De?this.a.set(b,Aa(f,d)):this.a.set(b= ,e)}catch(Be){throw Ra("exc",a,Be&&Be[r]),Be;}}},Te=3Dfunction(a,b){retu= rn{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Rc=3D= new RegExp(/(^|\.)doubleclick\.net$/i),Sc=3Dfunction(a,b){return Rc[ia](= J[z].hostname)?!0:"/"!=3D=3Db?!1:0!=3Da[q]("www.google.")&&0!=3Da[q](".g= oogle.")&&0!=3Da[q]("google.")||-1b[w]||ad(b[0],c))return!1;b=3Db[ja](1)[C](".")[y]("|");0=3Db[w])return!0; b=3Db[1][y](-1=3D=3Db[1][q](",")?"^":",");for(c=3D0;cb[w]||ad(b[0],c))retu= rn a.set(ec,void 0),a.set(fc,void 0),a.set(gc,void 0),a.set(ic,void 0),a= .set(jc,void 0),a.set(nc,void 0),a.set(oc,void 0),a.set(pc,void 0),a.set= (qc,void 0),a.set(S,void 0),a.set(kc,void 0),a.set(lc,void 0),a.set(mc,v= oid 0),!1;a.set(ec,1*b[1]);a.set(fc,1*b[2]);a.set(gc,1*b[3]);Ve(a,b[ja](= 4)[C]("."));return!0},Ve=3Dfunction(a,b){function c(a){return(a=3Db[oa](= a+"=3D(.*?)(?:\\|utm|$)"))&& 2=3D=3Da[w]?a[1]:void 0}function d(b,c){c?(c=3De?I(c):c[y]("%20")[C](" "= ),a.set(b,c)):a.set(b,void 0)}-1=3D=3Db[q]("=3D")&&(b=3DI(b));var e=3D"2= "=3D=3Dc("utmcvr");d(ic,c("utmcid"));d(jc,c("utmccn"));d(nc,c("utmcsr"))= ;d(oc,c("utmcmd"));d(pc,c("utmctr"));d(qc,c("utmcct"));d(S,c("utmgclid")= );d(kc,c("utmgclsrc"));d(lc,c("utmdclid"));d(mc,c("utmdsid"))},ad=3Dfunc= tion(a,b){return b?a!=3Db:!/^\d+$/[ia](a)};var Uc=3Dfunction(){this.filt= ers=3D[]};Uc[x].add=3Dfunction(a,b){this.filters[n]({name:a,s:b})};Uc[x]= .cb=3Dfunction(a){try{for(var b=3D0;b= =3D100*a.get(vb)&&a[ta]()}function kd(a){ld(a.get(Wa))&&a[ta]()}function= md(a){"file:"=3D=3DJ[z][A]&&a[ta]()}function Ge(a){He()&&a[ta]()}functi= on nd(a){a.get(Ib)||a.set(Ib,J.title,!0);a.get(Hb)||a.set(Hb,J[z].pathna= me+J[z][va],!0)} function lf(a){a.get(Wa)&&"UA-XXXXX-X"!=3Da.get(Wa)||a[ta]()};var od=3Dn= ew function(){var a=3D[];this.set=3Dfunction(b){a[b]=3D!0};this.encode=3D= function(){for(var b=3D[],c=3D0;c=3D= b[0]||0>=3Db[1]?"":b[C]("x");a.Wa=3Dd}catch(k){H(135)}qd=3Da}},td=3Dfunc= tion(){sd();for(var a=3D qd,b=3DW[za],a=3Db.appName+b.version+a.language+b.platform+b.userAgent+a= .javaEnabled+a.Q+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b= =3Da[w],c=3DW.history[w];0d?(this.i=3Db[B](0,d),this.l=3Db[B](d+1,c),this.h=3Db[B= ](c+1)):(this.i=3Db[B](0,d),this.h=3Db[B](d+1));this.k=3Da[ja](1);this.M= a=3D!this.l&&"_require"=3D=3Dthis.h;this.J=3D!this.i&&!this.l&&"_provide= "=3D=3Dthis.h}},Y=3Dfunction(){T(Y[x],"push",Y[x][n],5);T(Y[x],"_getPlug= in",Pc,121);T(Y[x], "_createAsyncTracker",Y[x].Sa,33);T(Y[x],"_getAsyncTracker",Y[x].Ta,34);= this.I=3Dnew nf;this.p=3D[]};E=3DY[x];E.Na=3Dfunction(a,b,c){var d=3Dthi= s.I.get(a);if(!Ba(d))return!1;b.plugins_=3Db.plugins_||new nf;b.plugins_= .set(a,new d(b,c||{}));return!0};E.push=3Dfunction(a){var b=3DZ.Va[ya](t= his,arguments),b=3DZ.p.concat(b);for(Z.p=3D[];0e?b+"#"+d:b+"&"+d;c=3D= "";f=3Db[q]("?");0f?b+"?"+d+c:b= +"&"+d+c},$d=3Dfunction(a,b,c,d){for(var e=3D0;3>e;e++){for(var f=3D0;3>= f;f++){if(d=3D=3DYc(a+b+c))return H(127),[b,c]; var Be=3Db[p](/ /g,"%20"),k=3Dc[p](/ /g,"%20");if(d=3D=3DYc(a+Be+k))retu= rn H(128),[Be,k];Be=3DBe[p](/\+/g,"%20");k=3Dk[p](/\+/g,"%20");if(d=3D=3D= Yc(a+Be+k))return H(129),[Be,k];try{var Ja=3Db[oa]("utmctr=3D(.*?)(?:\\|= utm|$)");if(Ja&&2=3D=3DJa[w]&&(Be=3Db[p](Ja[1],G(I(Ja[1]))),d=3D=3DYc(a+= Be+c)))return H(139),[Be,c]}catch(t){}b=3DI(b)}c=3DI(c)}};var de=3D"|",f= e=3Dfunction(a,b,c,d,e,f,Be,k,Ja){var t=3Dee(a,b);t||(t=3D{},a.get(Cb)[n= ](t));t.id_=3Db;t.affiliation_=3Dc;t.total_=3Dd;t.tax_=3De;t.shipping_=3D= f;t.city_=3DBe;t.state_=3Dk;t.country_=3DJa;t.items_=3Dt.items_||[];retu= rn t},ge=3Dfunction(a,b,c,d,e,f,Be){a=3Dee(a,b)||fe(a,b,"",0,0,0,"","","= ");var k;a:{if(a&&a.items_){k=3Da.items_;for(var Ja=3D0;Jab[w]||!/^\d+$/[ia](b[0= ])||(b[0]=3D""+c,Fd(a,"__utmx",b[C]("."),void 0))},be=3Dfunction(a,b){va= r c=3D$c(a.get(O),pd("__utmx"));"-"=3D=3Dc&&(c=3D"");return b?G(c):c},Ye= =3Dfunction(a){try{var b=3DLa(J[z][xa],!1),c=3Dea(L(b.d.get("utm_referre= r")))||"";c&&a.set(Jb,c);var d=3Dea(K(b.d.get("utm_expid")))||"";d&&(d=3D= d[y](".")[0],a.set(Oc,""+d))}catch(e){H(146)}},l=3Dfunction(a){var b=3DW= .gaData&&W.gaData.expId;b&&a.set(Oc,""+b)};var ke=3Dfunction(a,b){var c=3D= m.min(a.b(Dc,0),100);if(a.b(Q,0)%100>=3Dc)return!1;c=3DZe()||$e();if(voi= d 0=3D=3Dc)return!1;var d=3Dc[0];if(void 0=3D=3Dd||d=3D=3Dba||da(d))retu= rn!1;0a[b])return!1;return!0},le=3Dfunction(= a){return da(a)|| 0>a?0:5E3>a?10*m[la](a/10):5E4>a?100*m[la](a/100):41E5>a?1E3*m[la](a/1E3= ):41E5},je=3Dfunction(a){for(var b=3Dnew yd,c=3D0;cc[w])= ){for(var d=3D[],e=3D0;e