Content-Type: multipart/related; start=; boundary=----------tUrVNUfUjqVQwhOvap9OYZ Content-Location: http://radnice.litomerice.cz/dokument-1007796.html Subject: =?utf-8?Q?Harmonogram=20=C4=8Di=C5=A1t=C4=9Bn=C3=AD=20komunikac=C3=AD=202013?= MIME-Version: 1.0 ------------tUrVNUfUjqVQwhOvap9OYZ Content-Disposition: inline; filename=dokument-1007796.html Content-Type: text/html; charset=windows-1250; name=dokument-1007796.html Content-ID: Content-Location: http://radnice.litomerice.cz/dokument-1007796.html Content-Transfer-Encoding: 8bit Harmonogram čištění komunikací 2013
Městský úřad Litoměřice
Mírové náměstí 15/7
412 01 Litoměřice
tel: 416 916 111
e-mail: podatelna@litomerice.cz
datová schránka: tpebfnu
kategorie: Územní rozvoj
datum vzniku: 04.01.2013
Vyvěsil: Václav Blecha
časové razítko: 1364931737
adresa dokumentu http://radnice.litomerice.cz/dokument-1007796.html
 

Harmonogram čištění komunikací a chodníků pro rok 2013 v katastrálním území Litoměřice - podle bloků.

Název bloku

č. bloku

1. termín

2. termín

3. termín

4. termín

5. termín

6. termín

7. termín

průjezdní úseky

Střed

1

7.4.2013

-

-

-

-

22.9.2013

-

Mezibraní, Tyršův most

Kocanda

2

2.4. - 3.4.

6.5. - 7.5.

7.6. - 10.6.

10.7. - 11.7.

19.8. - 20.8.

23.9. - 24.9.

-

Daliborova, Žitenická

Dalimilova - Pod Mostkou

3

4.4. - 5.4.

9.5. - 10.5.

11.6. - 12.6.

15.7. - 16.7.

21.8. - 22.8.

25.9. - 26.9.

-

 

Kozinova

4

8.4. - 9.4.

13.5. - 14.5.

13.6. - 14.6.

17.7. - 18.7.

26.8. - 27.8.

30.9. - 1.10.

-

 

Revoluční

5

10.4. - 11.4.

15.5. - 16.5.

17.6. - 18.6.

22.7. - 23.7.

28.8. - 29.8.

2.10. - 3.10.

-

Mlékojedská, Želetice

A. Muchy

6

15.4. - 16.4.

20.5. - 21.5.

19.6. - 20.6.

24.7. - 25.7.

4.9. - 5.9.

7.10. - 8.10.

-

 

Pokratice

7

17.4. - 18.4.

22.5. - 23.5.

24.6. - 25.6.

29.7. - 30.7.

2.9. - 3.9.

9.10. - 10.10.

-

Pokratická

Bojská

8

22.4. - 23.4.

27.5. - 28.5.

26.6. - 27.6.

31.7. - 1.8.

9.9. - 10.9.

14.10. - 15.10.

-

Plešivecká, Kamýcká

Štursova

9

24.4. - 25.4.

29.5. - 30.5.

1.7. - 2.7.

5.8. - 6.8.

11.9. - 12.9.

16.10. - 17.10.

-

 

Stránského

10

26.4. - 29.4.

3.6. - 4.6.

3.7. - 4.7.

7.8. - 8.8.

16.9. - 17.9.

21.10. - 22.10.

-

Michalovická,Mrázova,

Žernosecká

Palachova

11

2.5. - 3.5.

5.6. - 6.6.

8.7. - 9.7.

12.8. - 13.8.

18.9. - 19.9.

23.10. - 24.10.

-

Masarykova

Pražská

12

12.4.2013

24.5.2013

21.6.2013

15.8.2013

13.9.2013

25.10.2013

-

Na Valech, Komenského

Pobřežní

13

19.4.2013

17.5.2013

28.6.2013

14.8.2013

6.9.2013

18.10.2013

-

Nádražní, Na Kocandě,

Českolipská

Úklid listí : č.2 – 29.10. a 6.11., č.3 – 30.10. a 7.11., č.4 – 31.10. a 8.11., č.9 – 1.11., č.4.11., č.12 – 5.11.

Každý pátek bude provedeno čištění cyklostezky.

Seznam bloků pro čištění s výčtem jednotlivých komunikací je uveden na internetových stránkách města (vybrané dokumenty).

Úklid průjezdních úseků komunikací po zimním období je povinna provést, od 1.4. do 30. 4. 2012, v souladu se zákonem č.13/1997 Sb., o pozemních komunikacích, SÚS ÚK a ŘSD.

 
©  Městský úřad Litoměřice | webmaster@litomerice.cz | Stránky jsou vytvořeny redakčním systémem vismo e106
------------tUrVNUfUjqVQwhOvap9OYZ Content-Disposition: inline; filename=css-dokument.css Content-Type: text/css; name=css-dokument.css Content-Location: http://radnice.litomerice.cz/css-dokument.css Content-Transfer-Encoding: 8bit body { font-family: Tahoma,Arial ,Sans-Serif; font-size: .8em; margin: 0; padding: .5em; background: rgb(255,255,255); color: rgb(0,0,0); } .clear { clear: both; margin: 0; } #popis, #pata { padding: .2em; background: rgb(255,255,255); border: 2px solid rgb(121,119,94); background-color: rgb(255,250,225); } #pata { text-align: center; border: none; background: rgb(102,102,102); color: rgb(255,255,255); padding: 5px; } #pata a:visited, #pata a:link, #pata a:hover { color: rgb(255,255,255); } #popis {padding-top: .2em;} #popis div.left { float:left; margin: 0; padding: 5px; width: 45%; } #popis div.right { float:right; margin: 0; padding: 5px; width: 45%; text-align: right; } #popis h2 ,#popis h1 { font-family: Tahoma,Arial ,Sans-Serif; background: rgb(121,119,94); text-align: center; margin: 0; margin-bottom: .3em; padding: .2em; font-size: 150%; font-weight: bold; color: rgb(255,255,255); } #telo-dokumentu { padding-top: .5em; margin: 1em; margin-top: .1em; } /* clear float */ .odkazy, .odkazy_pod { border-bottom: 1px solid rgb(102,102,102); padding: .3em; margin: 0; padding-top: 0; } .odkazy_pod {border-top: 1px solid rgb(102,102,102);} .odkazy h3, .odkazy_pod h3 { margin: 0; padding-top: 0; } ------------tUrVNUfUjqVQwhOvap9OYZ Content-Disposition: inline; filename=znak_png_pruhledny.png Content-Type: image/png; name=znak_png_pruhledny.png Content-Location: http://radnice.litomerice.cz/images/znak_png_pruhledny.png Content-Transfer-Encoding: Base64 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 PS8vr3TNmjUBskdiKs0jcQIR1ebm5lDYQSMiKhJtgV7tPleZGRlUnYQEnRQrmBUw DOuqwn3GdYS1MXGx3jpro3LogeRNCgoK0G4YdGRUlE6IQn7D/iBBvBNHJomUETkc Dp1kGv0J5z+RpNwoKDiYJltG+VX0G8h8HE4wj6dWWlqqREdHC9UxGdlwxmF3GPn5 +dCwUUNKU6vN+jHJFy8yPM/rdevWpSoxWnlwEbHMpdRUjaZo+23bkOiw8OE9unY7 W1RYZCCldWLg/U/CZou++15ZvWq1g3Br1d/JiQM1npnxtBMHgGOVzWvI3yqn+s3C r4vcbjd5TtXfTH27ZctWJ3IUSRBVfE+kw/84euSojn6H3f87QjTC7eQkx9YtW3Ov X88hdrHie3KS68hBiuS2bv0tpzbdf/HiReXzufPU2q5ZumSJ8vNPPzvKu1H1JOPs d/c9V6LCwqfcvg2hINVut6dput7StzvCTdcglKREi6VcL1arPK1WK4VgiOK8lXzV XiMgSiO/+6diq+rcciDtawdQGtSjR4/q9jK7gqrKk5F+OdDhdMJvW38rkGTJFhUZ xXTs1JHB6ysaZc1n0BUSUx0yY+jawRFyNVQ3F5VEhGZQadFUTRFEl8tF9tW6jA9M uW2VxTJsVklx8cmszIzhERHh1buoRBffwgHCa2r3FE0bQRu3gIEVORmn06n//vvv nktpl1C1RHH39O1LBwQG2dSevUj1CYdXMoUF+caO7Ts0JJi7ZcuWfO+7egukCI6o 11pzdai+0M4YtRefG7XaTL95qbEdoqKLigpPYI9unyCoAx0oWidWIxa/fv26RlSK x+2hLVaL7vsdzp87r5P4FBoxzadeyOIY2mqz6j6OowryC6hNP/9kiIJoKlNZkYlh BdEiGr49gPXDhw4JLqeEhl3H3yktMTEWBVNliOOJnjV14fwFiuVYA+2Edvr0GWe3 7t2YZ597NiAtPUv7bu1a9ezxfVCQeQ1IYCG8bjwk9egNIwcNY+rGx9uWLvlO2rlj h6dtu7aWK1lXhKyMDOJvaER5YB8ot1tTc3JyOJbhaVVzswUFuRZ7aanqNcgU8cWI dBs02ePdtJu5+uXLl3BMPxuyJHvD804XcTx1YmMEXoCLFy7oomihUBdqOF6DjFeS ZdqK1xBpP3joIItzeRg/5982QXxI4vK1K1ddXbp2FdEO6N99/a323IvPMz6dDJ07 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 /ruO/yfAAMrfZgijt05yAAAAAElFTkSuQmCC ------------tUrVNUfUjqVQwhOvap9OYZ Content-Disposition: inline; filename=dokument.gif Content-Type: image/gif; name=dokument.gif Content-Location: http://radnice.litomerice.cz/images/dokument.gif Content-Transfer-Encoding: Base64 R0lGODlhDwAQALMAAPLp2vPq2+TbzfT09ODYyfPq2sbDxvfu3bAoHP///wAAAPfu 3gAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAPABAAAAQ4cMlJq71V6a2vOmDYZaF4 KGR5btRnvPBhoNOngnN747Tkwi9Zb2G75Wo7oQ4YPPqSTiITOORYOxEAOw== ------------tUrVNUfUjqVQwhOvap9OYZ Content-Disposition: inline; filename=FB.js Content-Type: application/x-javascript; charset=utf-8; name=FB.js Content-Location: http://static.ak.fbcdn.net/connect.php/js/FB.Share Content-Transfer-Encoding: Base64 LyoxMzY0ODY5NzMzLDE3ODU3OTQ3NyxKSVQgQ29uc3RydWN0aW9uOiB2NzcyNDI5 LGVuX1VTKi8KCi8qKgogKiBDb3B5cmlnaHQgRmFjZWJvb2sgSW5jLgogKgogKiBM aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAq IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKi8K dHJ5IHt3aW5kb3cuRkIgfHwgKGZ1bmN0aW9uKHdpbmRvdykgewp2YXIgc2VsZiA9 IHdpbmRvdywgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7CnZhciBzZXRUaW1l b3V0ID0gd2luZG93LnNldFRpbWVvdXQsIHNldEludGVydmFsID0gd2luZG93LnNl dEludGVydmFsO3ZhciBfX0RFVl9fID0gMDsKZnVuY3Rpb24gZW1wdHlGdW5jdGlv bigpIHt9OwoKdmFyIHJlcXVpcmUsX19kOyhmdW5jdGlvbihhKXt2YXIgYj17fSxj PXt9LGQ9WydnbG9iYWwnLCdyZXF1aXJlJywncmVxdWlyZUR5bmFtaWMnLCdyZXF1 aXJlTGF6eScsJ21vZHVsZScsJ2V4cG9ydHMnXTtyZXF1aXJlPWZ1bmN0aW9uKGUs Zil7aWYoYy5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gY1tlXTtpZighYi5oYXNP d25Qcm9wZXJ0eShlKSl7aWYoZilyZXR1cm4gbnVsbDt0aHJvdyBuZXcgRXJyb3Io J01vZHVsZSAnK2UrJyBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO312YXIgZz1iW2Vd LGg9Zy5kZXBzLGk9aC5sZW5ndGgsaixrPVtdO2Zvcih2YXIgbD0wO2w8aTtsKysp e3N3aXRjaChoW2xdKXtjYXNlICdtb2R1bGUnOmo9ZzticmVhaztjYXNlICdleHBv cnRzJzpqPWcuZXhwb3J0czticmVhaztjYXNlICdnbG9iYWwnOmo9YTticmVhaztj YXNlICdyZXF1aXJlJzpqPXJlcXVpcmU7YnJlYWs7Y2FzZSAncmVxdWlyZUR5bmFt aWMnOmo9cmVxdWlyZTticmVhaztjYXNlICdyZXF1aXJlTGF6eSc6aj1udWxsO2Jy ZWFrO2RlZmF1bHQ6aj1yZXF1aXJlKGhbbF0pO31rLnB1c2goaik7fWcuZmFjdG9y eS5hcHBseShhLGspO2NbZV09Zy5leHBvcnRzO3JldHVybiBnLmV4cG9ydHM7fTtf X2Q9ZnVuY3Rpb24oZSxmLGcsaCl7c3dpdGNoKHR5cGVvZiBnKXtjYXNlICdmdW5j dGlvbic6YltlXT17ZmFjdG9yeTpnLGRlcHM6ZC5jb25jYXQoZiksZXhwb3J0czp7 fX07aWYoaD09PTMpcmVxdWlyZShlKTticmVhaztjYXNlICdvYmplY3QnOmNbZV09 ZzticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoJ1dyb25nIHR5cGUg Zm9yIGZhY3Rvcnkgb2JqZWN0Jyk7fX07fSkodGhpcyk7CnZhciBFUzUgPSBmdW5j dGlvbigpewpfX2QoIkVTNUFycmF5UHJvdG90eXBlIixbXSxmdW5jdGlvbihhLGIs YyxkLGUsZil7dmFyIGc9e307Zy5tYXA9ZnVuY3Rpb24oaCxpKXtpZih0eXBlb2Yg aCE9J2Z1bmN0aW9uJyl0aHJvdyBuZXcgVHlwZUVycm9yKCk7dmFyIGosaz10aGlz Lmxlbmd0aCxsPW5ldyBBcnJheShrKTtmb3Ioaj0wO2o8azsrK2opaWYoaiBpbiB0 aGlzKWxbal09aC5jYWxsKGksdGhpc1tqXSxqLHRoaXMpO3JldHVybiBsO307Zy5m b3JFYWNoPWZ1bmN0aW9uKGgsaSl7Zy5tYXAuY2FsbCh0aGlzLGgsaSk7fTtnLmZp bHRlcj1mdW5jdGlvbihoLGkpe2lmKHR5cGVvZiBoIT0nZnVuY3Rpb24nKXRocm93 IG5ldyBUeXBlRXJyb3IoKTt2YXIgaixrLGw9dGhpcy5sZW5ndGgsbT1bXTtmb3Io aj0wO2o8bDsrK2opaWYoaiBpbiB0aGlzKXtrPXRoaXNbal07aWYoaC5jYWxsKGks ayxqLHRoaXMpKW0ucHVzaChrKTt9cmV0dXJuIG07fTtnLmV2ZXJ5PWZ1bmN0aW9u KGgsaSl7aWYodHlwZW9mIGghPSdmdW5jdGlvbicpdGhyb3cgbmV3IFR5cGVFcnJv cigpO3ZhciBqPW5ldyBPYmplY3QodGhpcyksaz1qLmxlbmd0aDtmb3IodmFyIGw9 MDtsPGs7bCsrKWlmKGwgaW4gailpZighaC5jYWxsKGksaltsXSxsLGopKXJldHVy biBmYWxzZTtyZXR1cm4gdHJ1ZTt9O2cuc29tZT1mdW5jdGlvbihoLGkpe2lmKHR5 cGVvZiBoIT0nZnVuY3Rpb24nKXRocm93IG5ldyBUeXBlRXJyb3IoKTt2YXIgaj1u ZXcgT2JqZWN0KHRoaXMpLGs9ai5sZW5ndGg7Zm9yKHZhciBsPTA7bDxrO2wrKylp ZihsIGluIGopaWYoaC5jYWxsKGksaltsXSxsLGopKXJldHVybiB0cnVlO3JldHVy biBmYWxzZTt9O2cuaW5kZXhPZj1mdW5jdGlvbihoLGkpe3ZhciBqPXRoaXMubGVu Z3RoO2l8PTA7aWYoaTwwKWkrPWo7Zm9yKDtpPGo7aSsrKWlmKGkgaW4gdGhpcyYm dGhpc1tpXT09PWgpcmV0dXJuIGk7cmV0dXJuIC0xO307ZS5leHBvcnRzPWc7fSk7 Cl9fZCgiRVM1RnVuY3Rpb25Qcm90b3R5cGUiLFtdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz17fTtnLmJpbmQ9ZnVuY3Rpb24oaCl7aWYodHlwZW9mIHRoaXMh PSdmdW5jdGlvbicpdGhyb3cgbmV3IFR5cGVFcnJvcignQmluZCBtdXN0IGJlIGNh bGxlZCBvbiBhIGZ1bmN0aW9uJyk7dmFyIGk9dGhpcyxqPUFycmF5LnByb3RvdHlw ZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmdW5jdGlvbiBrKCl7cmV0dXJuIGku YXBwbHkoaCxqLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1 bWVudHMpKSk7fWsuZGlzcGxheU5hbWU9J2JvdW5kOicrKGkuZGlzcGxheU5hbWV8 fGkubmFtZXx8Jyg/KScpO2sudG9TdHJpbmc9ZnVuY3Rpb24gbCgpe3JldHVybiAn Ym91bmQ6ICcraTt9O3JldHVybiBrO307ZS5leHBvcnRzPWc7fSk7Cl9fZCgiRVM1 U3RyaW5nUHJvdG90eXBlIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 e307Zy50cmltPWZ1bmN0aW9uKCl7aWYodGhpcz09bnVsbCl0aHJvdyBuZXcgVHlw ZUVycm9yKCdTdHJpbmcucHJvdG90eXBlLnRyaW0gY2FsbGVkIG9uIG51bGwgb3Ig dW5kZWZpbmVkJyk7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZS5jYWxs KHRoaXMsL15ccyt8XHMrJC9nLCcnKTt9O2UuZXhwb3J0cz1nO30pOwpfX2QoIkVT NUFycmF5IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9e307Zy5pc0Fy cmF5PWZ1bmN0aW9uKGgpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n LmNhbGwoaCk9PSdbb2JqZWN0IEFycmF5XSc7fTtlLmV4cG9ydHM9Zzt9KTsKX19k KCJFUzVPYmplY3QiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz17fTtn LmNyZWF0ZT1mdW5jdGlvbihoKXt2YXIgaT10eXBlb2YgaDtpZihpIT0nb2JqZWN0 JyYmaSE9J2Z1bmN0aW9uJyl0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QgcHJv dG90eXBlIG1heSBvbmx5IGJlIGEgT2JqZWN0IG9yIG51bGwnKTt2YXIgaj1uZXcg RnVuY3Rpb24oKTtqLnByb3RvdHlwZT1oO3JldHVybiBuZXcgaigpO307Zy5rZXlz PWZ1bmN0aW9uKGgpe3ZhciBpPXR5cGVvZiBoO2lmKGkhPSdvYmplY3QnJiZpIT0n ZnVuY3Rpb24nfHxoPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3Qu a2V5cyBjYWxsZWQgb24gbm9uLW9iamVjdCcpO3ZhciBqPVtdO2Zvcih2YXIgayBp biBoKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLGsp KWoucHVzaChrKTt2YXIgbD0hKHt0b1N0cmluZzp0cnVlfSkucHJvcGVydHlJc0Vu dW1lcmFibGUoJ3RvU3RyaW5nJyksbT1bJ3RvU3RyaW5nJywndG9Mb2NhbGVTdHJp bmcnLCd2YWx1ZU9mJywnaGFzT3duUHJvcGVydHknLCdpc1Byb3RvdHlwZU9mJywn cHJvdG90eXBlSXNFbnVtZXJhYmxlJywnY29uc3RydWN0b3InXTtpZihsKWZvcih2 YXIgbj0wO248bS5sZW5ndGg7bisrKXt2YXIgbz1tW25dO2lmKE9iamVjdC5wcm90 b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLG8pKWoucHVzaChvKTt9cmV0dXJu IGo7fTtlLmV4cG9ydHM9Zzt9KTsKX19kKCJFUzVEYXRlIixbXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7dmFyIGc9e307Zy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3 IERhdGUoKS5nZXRUaW1lKCk7fTtlLmV4cG9ydHM9Zzt9KTsKLyoqCiAqIEBwcm92 aWRlc01vZHVsZSBKU09OMwogKiBAb3B0aW9uIHByZXNlcnZlLWhlYWRlcgogKgog KiEgSlNPTiB2My4yLjMgfCBodHRwOi8vYmVzdGllanMuZ2l0aHViLmNvbS9qc29u MyB8IENvcHlyaWdodCAyMDEyLCBLaXQgQ2FtYnJpZGdlIHwgaHR0cDovL2tpdC5t aXQtbGljZW5zZS5vcmcKICovX19kKCJKU09OMyIsW10sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpeyhmdW5jdGlvbigpe3ZhciBnPXt9LnRvU3RyaW5nLGgsaSxqLGs9ZS5l eHBvcnRzPXt9LGw9J3siQSI6WzEsdHJ1ZSxmYWxzZSxudWxsLCJcXHUwMDAwXFxi XFxuXFxmXFxyXFx0Il19JyxtLG4sbyxwLHEscixzLHQsdSx2LHcseCx5LHosYWEs YmE9bmV3IERhdGUoLTM1MDk4MjczMzQ1NzMyOTIpLGNhLGRhLGVhO3RyeXtiYT1i YS5nZXRVVENGdWxsWWVhcigpPT0tMTA5MjUyJiZiYS5nZXRVVENNb250aCgpPT09 MCYmYmEuZ2V0VVRDRGF0ZSgpPT0xJiZiYS5nZXRVVENIb3VycygpPT0xMCYmYmEu Z2V0VVRDTWludXRlcygpPT0zNyYmYmEuZ2V0VVRDU2Vjb25kcygpPT02JiZiYS5n ZXRVVENNaWxsaXNlY29uZHMoKT09NzA4O31jYXRjaChmYSl7fWlmKCFiYSl7Y2E9 TWF0aC5mbG9vcjtkYT1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3 MywzMDQsMzM0XTtlYT1mdW5jdGlvbihnYSxoYSl7cmV0dXJuIGRhW2hhXSszNjUq KGdhLTE5NzApK2NhKChnYS0xOTY5KyhoYT0rKGhhPjEpKSkvNCktY2EoKGdhLTE5 MDEraGEpLzEwMCkrY2EoKGdhLTE2MDEraGEpLzQwMCk7fTt9aWYodHlwZW9mIEpT T049PSJvYmplY3QiJiZKU09OKXtrLnN0cmluZ2lmeT1KU09OLnN0cmluZ2lmeTtr LnBhcnNlPUpTT04ucGFyc2U7fWlmKChtPXR5cGVvZiBrLnN0cmluZ2lmeT09ImZ1 bmN0aW9uIiYmIWVhKSl7KGJhPWZ1bmN0aW9uKCl7cmV0dXJuIDE7fSkudG9KU09O PWJhO3RyeXttPWsuc3RyaW5naWZ5KDApPT09IjAiJiZrLnN0cmluZ2lmeShuZXcg TnVtYmVyKCkpPT09IjAiJiZrLnN0cmluZ2lmeShuZXcgU3RyaW5nKCkpPT0nIiIn JiZrLnN0cmluZ2lmeShnKT09PWomJmsuc3RyaW5naWZ5KGopPT09aiYmay5zdHJp bmdpZnkoKT09PWomJmsuc3RyaW5naWZ5KGJhKT09PSIxIiYmay5zdHJpbmdpZnko W2JhXSk9PSJbMV0iJiZrLnN0cmluZ2lmeShbal0pPT0iW251bGxdIiYmay5zdHJp bmdpZnkobnVsbCk9PSJudWxsIiYmay5zdHJpbmdpZnkoW2osZyxudWxsXSk9PSJb bnVsbCxudWxsLG51bGxdIiYmay5zdHJpbmdpZnkoe3Jlc3VsdDpbYmEsdHJ1ZSxm YWxzZSxudWxsLCJcMFxiXG5cZlxyXHQiXX0pPT1sJiZrLnN0cmluZ2lmeShudWxs LGJhKT09PSIxIiYmay5zdHJpbmdpZnkoWzEsMl0sbnVsbCwxKT09IltcbiAxLFxu IDJcbl0iJiZrLnN0cmluZ2lmeShuZXcgRGF0ZSgtOC42NGUrMTUpKT09JyItMjcx ODIxLTA0LTIwVDAwOjAwOjAwLjAwMFoiJyYmay5zdHJpbmdpZnkobmV3IERhdGUo OC42NGUrMTUpKT09JyIrMjc1NzYwLTA5LTEzVDAwOjAwOjAwLjAwMFoiJyYmay5z dHJpbmdpZnkobmV3IERhdGUoLTYyMTk4NzU1MjAwMDAwKSk9PSciLTAwMDAwMS0w MS0wMVQwMDowMDowMC4wMDBaIicmJmsuc3RyaW5naWZ5KG5ldyBEYXRlKC0xKSk9 PSciMTk2OS0xMi0zMVQyMzo1OTo1OS45OTlaIic7fWNhdGNoKGZhKXttPWZhbHNl O319aWYodHlwZW9mIGsucGFyc2U9PSJmdW5jdGlvbiIpdHJ5e2lmKGsucGFyc2Uo IjAiKT09PTAmJiFrLnBhcnNlKGZhbHNlKSl7YmE9ay5wYXJzZShsKTtpZigocj1i YS5BLmxlbmd0aD09NSYmYmEuQVswXT09MSkpe3RyeXtyPSFrLnBhcnNlKCciXHQi Jyk7fWNhdGNoKGZhKXt9aWYocil0cnl7cj1rLnBhcnNlKCIwMSIpIT0xO31jYXRj aChmYSl7fX19fWNhdGNoKGZhKXtyPWZhbHNlO31iYT1sPW51bGw7aWYoIW18fCFy KXtpZighKGg9e30uaGFzT3duUHJvcGVydHkpKWg9ZnVuY3Rpb24oZ2Epe3ZhciBo YT17fSxpYTtpZigoaGEuX19wcm90b19fPW51bGwsaGEuX19wcm90b19fPXt0b1N0 cmluZzoxfSxoYSkudG9TdHJpbmchPWcpe2g9ZnVuY3Rpb24oamEpe3ZhciBrYT10 aGlzLl9fcHJvdG9fXyxsYT1qYSBpbiAodGhpcy5fX3Byb3RvX189bnVsbCx0aGlz KTt0aGlzLl9fcHJvdG9fXz1rYTtyZXR1cm4gbGE7fTt9ZWxzZXtpYT1oYS5jb25z dHJ1Y3RvcjtoPWZ1bmN0aW9uKGphKXt2YXIga2E9KHRoaXMuY29uc3RydWN0b3J8 fGlhKS5wcm90b3R5cGU7cmV0dXJuIGphIGluIHRoaXMmJiEoamEgaW4ga2EmJnRo aXNbamFdPT09a2FbamFdKTt9O31oYT1udWxsO3JldHVybiBoLmNhbGwodGhpcyxn YSk7fTtpPWZ1bmN0aW9uKGdhLGhhKXt2YXIgaWE9MCxqYSxrYSxsYSxtYTsoamE9 ZnVuY3Rpb24oKXt0aGlzLnZhbHVlT2Y9MDt9KS5wcm90b3R5cGUudmFsdWVPZj0w O2thPW5ldyBqYSgpO2ZvcihsYSBpbiBrYSlpZihoLmNhbGwoa2EsbGEpKWlhKys7 amE9a2E9bnVsbDtpZighaWEpe2thPVsidmFsdWVPZiIsInRvU3RyaW5nIiwidG9M b2NhbGVTdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImlzUHJvdG90eXBl T2YiLCJoYXNPd25Qcm9wZXJ0eSIsImNvbnN0cnVjdG9yIl07bWE9ZnVuY3Rpb24o bmEsb2Epe3ZhciBwYT1nLmNhbGwobmEpPT0iW29iamVjdCBGdW5jdGlvbl0iLHFh LHJhO2ZvcihxYSBpbiBuYSlpZighKHBhJiZxYT09InByb3RvdHlwZSIpJiZoLmNh bGwobmEscWEpKW9hKHFhKTtmb3IocmE9a2EubGVuZ3RoO3FhPWthWy0tcmFdO2gu Y2FsbChuYSxxYSkmJm9hKHFhKSk7fTt9ZWxzZSBpZihpYT09Mil7bWE9ZnVuY3Rp b24obmEsb2Epe3ZhciBwYT17fSxxYT1nLmNhbGwobmEpPT0iW29iamVjdCBGdW5j dGlvbl0iLHJhO2ZvcihyYSBpbiBuYSlpZighKHFhJiZyYT09InByb3RvdHlwZSIp JiYhaC5jYWxsKHBhLHJhKSYmKHBhW3JhXT0xKSYmaC5jYWxsKG5hLHJhKSlvYShy YSk7fTt9ZWxzZSBtYT1mdW5jdGlvbihuYSxvYSl7dmFyIHBhPWcuY2FsbChuYSk9 PSJbb2JqZWN0IEZ1bmN0aW9uXSIscWEscmE7Zm9yKHFhIGluIG5hKWlmKCEocGEm JnFhPT0icHJvdG90eXBlIikmJmguY2FsbChuYSxxYSkmJiEocmE9cWE9PT0iY29u c3RydWN0b3IiKSlvYShxYSk7aWYocmF8fGguY2FsbChuYSwocWE9ImNvbnN0cnVj dG9yIikpKW9hKHFhKTt9O3JldHVybiBtYShnYSxoYSk7fTtpZighbSl7bj17Ilxc IjoiXFxcXCIsJyInOidcXCInLCJcYiI6IlxcYiIsIlxmIjoiXFxmIiwiXG4iOiJc XG4iLCJcciI6IlxcciIsIlx0IjoiXFx0In07bz1mdW5jdGlvbihnYSxoYSl7cmV0 dXJuICgiMDAwMDAwIisoaGF8fDApKS5zbGljZSgtZ2EpO307cD1mdW5jdGlvbihn YSl7dmFyIGhhPSciJyxpYT0wLGphO2Zvcig7amE9Z2EuY2hhckF0KGlhKTtpYSsr KWhhKz0nXFwiXGJcZlxuXHJcdCcuaW5kZXhPZihqYSk+LTE/bltqYV06amE8IiAi PyJcXHUwMCIrbygyLGphLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKTpqYTty ZXR1cm4gaGErJyInO307cT1mdW5jdGlvbihnYSxoYSxpYSxqYSxrYSxsYSxtYSl7 dmFyIG5hPWhhW2dhXSxvYSxwYSxxYSxyYSxzYSx0YSx1YSx2YSx3YSx4YSx5YSx6 YSxhYixiYixjYjtpZih0eXBlb2YgbmE9PSJvYmplY3QiJiZuYSl7b2E9Zy5jYWxs KG5hKTtpZihvYT09IltvYmplY3QgRGF0ZV0iJiYhaC5jYWxsKG5hLCJ0b0pTT04i KSl7aWYobmE+LTEvMCYmbmE8MS8wKXtpZihlYSl7cmE9Y2EobmEvODY0MDAwMDAp O2ZvcihwYT1jYShyYS8zNjUuMjQyNSkrMTk3MC0xO2VhKHBhKzEsMCk8PXJhO3Bh KyspO2ZvcihxYT1jYSgocmEtZWEocGEsMCkpLzMwLjQyKTtlYShwYSxxYSsxKTw9 cmE7cWErKyk7cmE9MStyYS1lYShwYSxxYSk7c2E9KG5hJTg2NDAwMDAwKzg2NDAw MDAwKSU4NjQwMDAwMDt0YT1jYShzYS8zNjAwMDAwKSUyNDt1YT1jYShzYS82MDAw MCklNjA7dmE9Y2Eoc2EvMTAwMCklNjA7d2E9c2ElMTAwMDt9ZWxzZXtwYT1uYS5n ZXRVVENGdWxsWWVhcigpO3FhPW5hLmdldFVUQ01vbnRoKCk7cmE9bmEuZ2V0VVRD RGF0ZSgpO3RhPW5hLmdldFVUQ0hvdXJzKCk7dWE9bmEuZ2V0VVRDTWludXRlcygp O3ZhPW5hLmdldFVUQ1NlY29uZHMoKTt3YT1uYS5nZXRVVENNaWxsaXNlY29uZHMo KTt9bmE9KHBhPD0wfHxwYT49MTAwMDA/KHBhPDA/Ii0iOiIrIikrbyg2LHBhPDA/ LXBhOnBhKTpvKDQscGEpKSsiLSIrbygyLHFhKzEpKyItIitvKDIscmEpKyJUIitv KDIsdGEpKyI6IitvKDIsdWEpKyI6IitvKDIsdmEpKyIuIitvKDMsd2EpKyJaIjt9 ZWxzZSBuYT1udWxsO31lbHNlIGlmKHR5cGVvZiBuYS50b0pTT049PSJmdW5jdGlv biImJigob2EhPSJbb2JqZWN0IE51bWJlcl0iJiZvYSE9IltvYmplY3QgU3RyaW5n XSImJm9hIT0iW29iamVjdCBBcnJheV0iKXx8aC5jYWxsKG5hLCJ0b0pTT04iKSkp bmE9bmEudG9KU09OKGdhKTt9aWYoaWEpbmE9aWEuY2FsbChoYSxnYSxuYSk7aWYo bmE9PT1udWxsKXJldHVybiAibnVsbCI7b2E9Zy5jYWxsKG5hKTtpZihvYT09Iltv YmplY3QgQm9vbGVhbl0iKXtyZXR1cm4gIiIrbmE7fWVsc2UgaWYob2E9PSJbb2Jq ZWN0IE51bWJlcl0iKXtyZXR1cm4gbmE+LTEvMCYmbmE8MS8wPyIiK25hOiJudWxs Ijt9ZWxzZSBpZihvYT09IltvYmplY3QgU3RyaW5nXSIpcmV0dXJuIHAobmEpO2lm KHR5cGVvZiBuYT09Im9iamVjdCIpe2ZvcihhYj1tYS5sZW5ndGg7YWItLTspaWYo bWFbYWJdPT09bmEpdGhyb3cgVHlwZUVycm9yKCk7bWEucHVzaChuYSk7eGE9W107 YmI9bGE7bGErPWthO2lmKG9hPT0iW29iamVjdCBBcnJheV0iKXtmb3IoemE9MCxh Yj1uYS5sZW5ndGg7emE8YWI7Y2J8fChjYj10cnVlKSx6YSsrKXt5YT1xKHphLG5h LGlhLGphLGthLGxhLG1hKTt4YS5wdXNoKHlhPT09aj8ibnVsbCI6eWEpO31yZXR1 cm4gY2I/KGthPyJbXG4iK2xhK3hhLmpvaW4oIixcbiIrbGEpKyJcbiIrYmIrIl0i OigiWyIreGEuam9pbigiLCIpKyJdIikpOiJbXSI7fWVsc2V7aShqYXx8bmEsZnVu Y3Rpb24oZGIpe3ZhciBlYj1xKGRiLG5hLGlhLGphLGthLGxhLG1hKTtpZihlYiE9 PWopeGEucHVzaChwKGRiKSsiOiIrKGthPyIgIjoiIikrZWIpO2NifHwoY2I9dHJ1 ZSk7fSk7cmV0dXJuIGNiPyhrYT8ie1xuIitsYSt4YS5qb2luKCIsXG4iK2xhKSsi XG4iK2JiKyJ9IjooInsiK3hhLmpvaW4oIiwiKSsifSIpKToie30iO31tYS5wb3Ao KTt9fTtrLnN0cmluZ2lmeT1mdW5jdGlvbihnYSxoYSxpYSl7dmFyIGphLGthLGxh LG1hLG5hLG9hO2lmKHR5cGVvZiBoYT09ImZ1bmN0aW9uInx8dHlwZW9mIGhhPT0i b2JqZWN0IiYmaGEpaWYoZy5jYWxsKGhhKT09IltvYmplY3QgRnVuY3Rpb25dIil7 a2E9aGE7fWVsc2UgaWYoZy5jYWxsKGhhKT09IltvYmplY3QgQXJyYXldIil7bGE9 e307Zm9yKG1hPTAsbmE9aGEubGVuZ3RoO21hPG5hO29hPWhhW21hKytdLCgoZy5j YWxsKG9hKT09IltvYmplY3QgU3RyaW5nXSJ8fGcuY2FsbChvYSk9PSJbb2JqZWN0 IE51bWJlcl0iKSYmKGxhW29hXT0xKSkpO31pZihpYSlpZihnLmNhbGwoaWEpPT0i W29iamVjdCBOdW1iZXJdIil7aWYoKGlhLT1pYSUxKT4wKWZvcihqYT0iIixpYT4x MCYmKGlhPTEwKTtqYS5sZW5ndGg8aWE7amErPSIgIik7fWVsc2UgaWYoZy5jYWxs KGlhKT09IltvYmplY3QgU3RyaW5nXSIpamE9aWEubGVuZ3RoPD0xMD9pYTppYS5z bGljZSgwLDEwKTtyZXR1cm4gcSgiIiwob2E9e30sb2FbIiJdPWdhLG9hKSxrYSxs YSxqYSwiIixbXSk7fTt9aWYoIXIpe3M9U3RyaW5nLmZyb21DaGFyQ29kZTt0PXsi XFwiOiJcXCIsJyInOiciJywiLyI6Ii8iLGI6IlxiIix0OiJcdCIsbjoiXG4iLGY6 IlxmIixyOiJcciJ9O3U9ZnVuY3Rpb24oKXt6PWFhPW51bGw7dGhyb3cgU3ludGF4 RXJyb3IoKTt9O3Y9ZnVuY3Rpb24oKXt2YXIgZ2E9YWEsaGE9Z2EubGVuZ3RoLGlh LGphLGthLGxhLG1hO3doaWxlKHo8aGEpe2lhPWdhLmNoYXJBdCh6KTtpZigiXHRc clxuICIuaW5kZXhPZihpYSk+LTEpe3orKzt9ZWxzZSBpZigie31bXTosIi5pbmRl eE9mKGlhKT4tMSl7eisrO3JldHVybiBpYTt9ZWxzZSBpZihpYT09JyInKXtmb3Io amE9IkAiLHorKzt6PGhhOyl7aWE9Z2EuY2hhckF0KHopO2lmKGlhPCIgIil7dSgp O31lbHNlIGlmKGlhPT0iXFwiKXtpYT1nYS5jaGFyQXQoKyt6KTtpZignXFwiL2J0 bmZyJy5pbmRleE9mKGlhKT4tMSl7amErPXRbaWFdO3orKzt9ZWxzZSBpZihpYT09 InUiKXtrYT0rK3o7Zm9yKGxhPXorNDt6PGxhO3orKyl7aWE9Z2EuY2hhckF0KHop O2lmKCEoaWE+PSIwIiYmaWE8PSI5Inx8aWE+PSJhIiYmaWE8PSJmInx8aWE+PSJB IiYmaWE8PSJGIikpdSgpO31qYSs9cygiMHgiK2dhLnNsaWNlKGthLHopKTt9ZWxz ZSB1KCk7fWVsc2V7aWYoaWE9PSciJylicmVhaztqYSs9aWE7eisrO319aWYoZ2Eu Y2hhckF0KHopPT0nIicpe3orKztyZXR1cm4gamE7fXUoKTt9ZWxzZXtrYT16O2lm KGlhPT0iLSIpe21hPXRydWU7aWE9Z2EuY2hhckF0KCsreik7fWlmKGlhPj0iMCIm JmlhPD0iOSIpe2lmKGlhPT0iMCImJihpYT1nYS5jaGFyQXQoeisxKSxpYT49IjAi JiZpYTw9IjkiKSl1KCk7bWE9ZmFsc2U7Zm9yKDt6PGhhJiYoaWE9Z2EuY2hhckF0 KHopLGlhPj0iMCImJmlhPD0iOSIpO3orKyk7aWYoZ2EuY2hhckF0KHopPT0iLiIp e2xhPSsrejtmb3IoO2xhPGhhJiYoaWE9Z2EuY2hhckF0KGxhKSxpYT49IjAiJiZp YTw9IjkiKTtsYSsrKTtpZihsYT09eil1KCk7ej1sYTt9aWE9Z2EuY2hhckF0KHop O2lmKGlhPT0iZSJ8fGlhPT0iRSIpe2lhPWdhLmNoYXJBdCgrK3opO2lmKGlhPT0i KyJ8fGlhPT0iLSIpeisrO2ZvcihsYT16O2xhPGhhJiYoaWE9Z2EuY2hhckF0KGxh KSxpYT49IjAiJiZpYTw9IjkiKTtsYSsrKTtpZihsYT09eil1KCk7ej1sYTt9cmV0 dXJuICtnYS5zbGljZShrYSx6KTt9aWYobWEpdSgpO2lmKGdhLnNsaWNlKHoseis0 KT09InRydWUiKXt6Kz00O3JldHVybiB0cnVlO31lbHNlIGlmKGdhLnNsaWNlKHos eis1KT09ImZhbHNlIil7eis9NTtyZXR1cm4gZmFsc2U7fWVsc2UgaWYoZ2Euc2xp Y2Uoeix6KzQpPT0ibnVsbCIpe3orPTQ7cmV0dXJuIG51bGw7fXUoKTt9fXJldHVy biAiJCI7fTt3PWZ1bmN0aW9uKGdhKXt2YXIgaGEsaWEsamE7aWYoZ2E9PSIkIil1 KCk7aWYodHlwZW9mIGdhPT0ic3RyaW5nIil7aWYoZ2EuY2hhckF0KDApPT0iQCIp cmV0dXJuIGdhLnNsaWNlKDEpO2lmKGdhPT0iWyIpe2hhPVtdO2Zvcig7O2lhfHwo aWE9dHJ1ZSkpe2dhPXYoKTtpZihnYT09Il0iKWJyZWFrO2lmKGlhKWlmKGdhPT0i LCIpe2dhPXYoKTtpZihnYT09Il0iKXUoKTt9ZWxzZSB1KCk7aWYoZ2E9PSIsIil1 KCk7aGEucHVzaCh3KGdhKSk7fXJldHVybiBoYTt9ZWxzZSBpZihnYT09InsiKXto YT17fTtmb3IoOztpYXx8KGlhPXRydWUpKXtnYT12KCk7aWYoZ2E9PSJ9IilicmVh aztpZihpYSlpZihnYT09IiwiKXtnYT12KCk7aWYoZ2E9PSJ9Iil1KCk7fWVsc2Ug dSgpO2lmKGdhPT0iLCJ8fHR5cGVvZiBnYSE9InN0cmluZyJ8fGdhLmNoYXJBdCgw KSE9IkAifHx2KCkhPSI6Iil1KCk7aGFbZ2Euc2xpY2UoMSldPXcodigpKTt9cmV0 dXJuIGhhO311KCk7fXJldHVybiBnYTt9O3k9ZnVuY3Rpb24oZ2EsaGEsaWEpe3Zh ciBqYT14KGdhLGhhLGlhKTtpZihqYT09PWope2RlbGV0ZSBnYVtoYV07fWVsc2Ug Z2FbaGFdPWphO307eD1mdW5jdGlvbihnYSxoYSxpYSl7dmFyIGphPWdhW2hhXSxr YTtpZih0eXBlb2YgamE9PSJvYmplY3QiJiZqYSlpZihnLmNhbGwoamEpPT0iW29i amVjdCBBcnJheV0iKXtmb3Ioa2E9amEubGVuZ3RoO2thLS07KXkoamEsa2EsaWEp O31lbHNlIGkoamEsZnVuY3Rpb24obGEpe3koamEsbGEsaWEpO30pO3JldHVybiBp YS5jYWxsKGdhLGhhLGphKTt9O2sucGFyc2U9ZnVuY3Rpb24oZ2EsaGEpe3o9MDth YT1nYTt2YXIgaWE9dyh2KCkpO2lmKHYoKSE9IiQiKXUoKTt6PWFhPW51bGw7cmV0 dXJuIGhhJiZnLmNhbGwoaGEpPT0iW29iamVjdCBGdW5jdGlvbl0iP3goKGJhPXt9 LGJhWyIiXT1pYSxiYSksIiIsaGEpOmlhO307fX19KS5jYWxsKHRoaXMpO30pOwpf X2QoIkVTNSIsWyJFUzVBcnJheVByb3RvdHlwZSIsIkVTNUZ1bmN0aW9uUHJvdG90 eXBlIiwiRVM1U3RyaW5nUHJvdG90eXBlIiwiRVM1QXJyYXkiLCJFUzVPYmplY3Qi LCJFUzVEYXRlIiwiSlNPTjMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 YignRVM1QXJyYXlQcm90b3R5cGUnKSxoPWIoJ0VTNUZ1bmN0aW9uUHJvdG90eXBl JyksaT1iKCdFUzVTdHJpbmdQcm90b3R5cGUnKSxqPWIoJ0VTNUFycmF5Jyksaz1i KCdFUzVPYmplY3QnKSxsPWIoJ0VTNURhdGUnKSxtPWIoJ0pTT04zJyksbj1BcnJh eS5wcm90b3R5cGUuc2xpY2Usbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHA9 eydKU09OLnN0cmluZ2lmeSc6bS5zdHJpbmdpZnksJ0pTT04ucGFyc2UnOm0ucGFy c2V9LHE9e2FycmF5OmcsJ2Z1bmN0aW9uJzpoLHN0cmluZzppLE9iamVjdDprLEFy cmF5OmosRGF0ZTpsfTtmb3IodmFyIHIgaW4gcSl7aWYoIXEuaGFzT3duUHJvcGVy dHkocikpY29udGludWU7dmFyIHM9cVtyXSx0PXI9PT1yLnRvTG93ZXJDYXNlKCk/ d2luZG93W3IucmVwbGFjZSgvXlx3LyxmdW5jdGlvbih4KXtyZXR1cm4geC50b1Vw cGVyQ2FzZSgpO30pXS5wcm90b3R5cGU6d2luZG93W3JdO2Zvcih2YXIgdSBpbiBz KXtpZighcy5oYXNPd25Qcm9wZXJ0eSh1KSljb250aW51ZTt2YXIgdj10W3VdO3Bb cisnLicrdV09diYmL1x7XHMrXFtuYXRpdmUgY29kZVxdXHNcfS8udGVzdCh2KT92 OnNbdV07fX1mdW5jdGlvbiB3KHgseSx6KXt2YXIgYWE9bi5jYWxsKGFyZ3VtZW50 cywzKSxiYT16Py9ccyguKilcXS8uZXhlYyhvLmNhbGwoeCkudG9Mb3dlckNhc2Uo KSlbMV06eCxjYT1wW2JhKycuJyt5XXx8eFt5XTtpZih0eXBlb2YgY2E9PT0nZnVu Y3Rpb24nKXJldHVybiBjYS5hcHBseSh4LGFhKTt9ZS5leHBvcnRzPXc7fSk7RVM1 ID0gcmVxdWlyZSgnRVM1Jyk7CnJldHVybiBFUzUuYXBwbHkobnVsbCwgYXJndW1l bnRzKTsKfTsKCl9fZCgic2RrLlJ1bnRpbWVDb25maWciLFtdLHsibG9jYWxlIjoi ZW5fVVMiLCJydGwiOmZhbHNlfSk7X19kKCJVcmxNYXBDb25maWciLFtdLHsid3d3 Ijoid3d3LmZhY2Vib29rLmNvbSIsIm0iOiJtLmZhY2Vib29rLmNvbSIsImNvbm5l Y3QiOiJjb25uZWN0LmZhY2Vib29rLm5ldCIsImFwaV9odHRwcyI6ImFwaS5mYWNl Ym9vay5jb20iLCJhcGlfcmVhZF9odHRwcyI6ImFwaS1yZWFkLmZhY2Vib29rLmNv bSIsImdyYXBoX2h0dHBzIjoiZ3JhcGguZmFjZWJvb2suY29tIiwiZmJjZG5faHR0 cCI6InN0YXRpYy5hay5mYmNkbi5uZXQiLCJmYmNkbl9odHRwcyI6ImZic3RhdGlj LWEuYWthbWFpaGQubmV0IiwiY2RuX2h0dHAiOiJzdGF0aWMuYWsuZmFjZWJvb2su Y29tIiwiY2RuX2h0dHBzIjoicy1zdGF0aWMuYWsuZmFjZWJvb2suY29tIn0pO19f ZCgiWERDb25maWciLFtdLHsiWGRVcmwiOiJjb25uZWN0XC94ZF9hcmJpdGVyLnBo cD92ZXJzaW9uPTIwIiwiRmxhc2giOnsicGF0aCI6Imh0dHBzOlwvXC9jb25uZWN0 LmZhY2Vib29rLm5ldFwvcnNyYy5waHBcL3YxXC95MlwvclwvNFNxTFdIMERRdE4u c3dmIn0sInVzZUNkbiI6dHJ1ZX0pO19fZCgiU0RLQ29uZmlnIixbXSx7ImJ1c3RD YWNoZSI6dHJ1ZSwidGFnQ291bnRMb2dSYXRlIjowLjAxLCJlcnJvckhhbmRsaW5n Ijp7InJhdGUiOjR9LCJ1c2VQbHVnaW5QaXBlIjp0cnVlLCJhcGkiOnsibW9kZSI6 Indhcm4iLCJ3aGl0ZWxpc3QiOlsiQ2FudmFzIiwiQ2FudmFzLlByZWZldGNoZXIi LCJDYW52YXMuUHJlZmV0Y2hlci5hZGRTdGF0aWNSZXNvdXJjZSIsIkNhbnZhcy5Q cmVmZXRjaGVyLnNldENvbGxlY3Rpb25Nb2RlIiwiQ2FudmFzLmdldFBhZ2VJbmZv IiwiQ2FudmFzLmhpZGVGbGFzaEVsZW1lbnQiLCJDYW52YXMuc2Nyb2xsVG8iLCJD YW52YXMuc2V0QXV0b0dyb3ciLCJDYW52YXMuc2V0RG9uZUxvYWRpbmciLCJDYW52 YXMuc2V0U2l6ZSIsIkNhbnZhcy5zZXRVcmxIYW5kbGVyIiwiQ2FudmFzLnNob3dG bGFzaEVsZW1lbnQiLCJDYW52YXMuc3RhcnRUaW1lciIsIkNhbnZhcy5zdG9wVGlt ZXIiLCJEYXRhIiwiRGF0YS5wcm9jZXNzIiwiRGF0YS5xdWVyeSIsIkRhdGEucXVl cnk6d2FpdCIsIkRhdGEud2FpdE9uIiwiRGF0YS53YWl0T246d2FpdCIsIkV2ZW50 IiwiRXZlbnQuc3Vic2NyaWJlIiwiRXZlbnQudW5zdWJzY3JpYmUiLCJNdXNpYy5m bGFzaENhbGxiYWNrIiwiTXVzaWMuaW5pdCIsIk11c2ljLnNlbmQiLCJQYXltZW50 IiwiUGF5bWVudC5pbml0IiwiUGF5bWVudC5zZXRTaXplIiwiVGhpcmRQYXJ0eVBy b3ZpZGVyIiwiVGhpcmRQYXJ0eVByb3ZpZGVyLmluaXQiLCJUaGlyZFBhcnR5UHJv dmlkZXIuc2VuZERhdGEiLCJVQSIsIlVBLm5hdGl2ZUFwcCIsIlhGQk1MIiwiWEZC TUwuUmVjb21tZW5kYXRpb25zQmFyIiwiWEZCTUwuUmVjb21tZW5kYXRpb25zQmFy Lm1hcmtSZWFkIiwiWEZCTUwucGFyc2UiLCJhZGRGcmllbmQiLCJhcGkiLCJnZXRB Y2Nlc3NUb2tlbiIsImdldEF1dGhSZXNwb25zZSIsImdldExvZ2luU3RhdHVzIiwi Z2V0VXNlcklEIiwiaW5pdCIsImxvZ2luIiwibG9nb3V0IiwicHVibGlzaCIsInNo YXJlIiwidWkiLCJ1aTpzdWJzY3JpYmUiXX0sImluaXRTaXRldmFycyI6eyJlbmFi bGVNb2JpbGVDb21tZW50cyI6MSwiaWZyYW1lUGVybWlzc2lvbnMiOnsicmVhZF9z dHJlYW0iOmZhbHNlLCJtYW5hZ2VfbWFpbGJveCI6ZmFsc2UsIm1hbmFnZV9mcmll bmRsaXN0cyI6ZmFsc2UsInJlYWRfbWFpbGJveCI6ZmFsc2UsInB1Ymxpc2hfY2hl Y2tpbnMiOnRydWUsInN0YXR1c191cGRhdGUiOnRydWUsInBob3RvX3VwbG9hZCI6 dHJ1ZSwidmlkZW9fdXBsb2FkIjp0cnVlLCJzbXMiOmZhbHNlLCJjcmVhdGVfZXZl bnQiOnRydWUsInJzdnBfZXZlbnQiOnRydWUsIm9mZmxpbmVfYWNjZXNzIjp0cnVl LCJlbWFpbCI6dHJ1ZSwieG1wcF9sb2dpbiI6ZmFsc2UsImNyZWF0ZV9ub3RlIjp0 cnVlLCJzaGFyZV9pdGVtIjp0cnVlLCJleHBvcnRfc3RyZWFtIjpmYWxzZSwicHVi bGlzaF9zdHJlYW0iOnRydWUsInB1Ymxpc2hfbGlrZXMiOnRydWUsImFkc19tYW5h Z2VtZW50IjpmYWxzZSwiY29udGFjdF9lbWFpbCI6dHJ1ZSwiYWNjZXNzX3ByaXZh dGVfZGF0YSI6ZmFsc2UsInJlYWRfaW5zaWdodHMiOmZhbHNlLCJyZWFkX3JlcXVl c3RzIjpmYWxzZSwicmVhZF9mcmllbmRsaXN0cyI6dHJ1ZSwibWFuYWdlX3BhZ2Vz IjpmYWxzZSwicGh5c2ljYWxfbG9naW4iOmZhbHNlLCJtYW5hZ2VfZ3JvdXBzIjpm YWxzZSwicmVhZF9kZWFscyI6ZmFsc2V9fX0pO19fZCgiQ3NzQ29uZmlnIixbXSx7 InJ1bGVzIjoiLmZiX2hpZGRlbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwMDAw cHg7ei1pbmRleDoxMDAwMX1cbi5mYl9pbnZpc2libGV7ZGlzcGxheTpub25lfVxu LmZiX3Jlc2V0e2JhY2tncm91bmQ6bm9uZTtib3JkZXItc3BhY2luZzowO2JvcmRl cjowO2NvbG9yOiMwMDA7Y3Vyc29yOmF1dG87ZGlyZWN0aW9uOmx0cjtmb250LWZh bWlseTpcImx1Y2lkYSBncmFuZGVcIiwgdGFob21hLCB2ZXJkYW5hLCBhcmlhbCwg c2Fucy1zZXJpZjtmb250LXNpemU6MTFweDtmb250LXN0eWxlOm5vcm1hbDtmb250 LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtsZXR0ZXItc3BhY2lu Zzpub3JtYWw7bGluZS1oZWlnaHQ6MTttYXJnaW46MDtvdmVyZmxvdzp2aXNpYmxl O3BhZGRpbmc6MDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7 dGV4dC1pbmRlbnQ6MDt0ZXh0LXNoYWRvdzpub25lO3RleHQtdHJhbnNmb3JtOm5v bmU7dmlzaWJpbGl0eTp2aXNpYmxlO3doaXRlLXNwYWNlOm5vcm1hbDt3b3JkLXNw YWNpbmc6bm9ybWFsfVxuLmZiX2xpbmsgaW1ne2JvcmRlcjpub25lfVxuLmZiX2Rp YWxvZ3tiYWNrZ3JvdW5kOnJnYmEoODIsIDgyLCA4MiwgLjcpO3Bvc2l0aW9uOmFi c29sdXRlO3RvcDotMTAwMDBweDt6LWluZGV4OjEwMDAxfVxuLmZiX2RpYWxvZ19h ZHZhbmNlZHtwYWRkaW5nOjEwcHg7LW1vei1ib3JkZXItcmFkaXVzOjhweDstd2Vi a2l0LWJvcmRlci1yYWRpdXM6OHB4O2JvcmRlci1yYWRpdXM6OHB4fVxuLmZiX2Rp YWxvZ19jb250ZW50e2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMzMzfVxuLmZiX2Rp YWxvZ19jbG9zZV9pY29ue2JhY2tncm91bmQ6dXJsKGh0dHA6XC9cL3N0YXRpYy5h ay5mYmNkbi5uZXRcL3JzcmMucGhwXC92MlwveXFcL3JcL0lFOUpJSTZaMVlzLnBu Zykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgdHJhbnNwYXJlbnQ7X2JhY2tncm91bmQt aW1hZ2U6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhw XC92MlwveUxcL3JcL3M4MTZlV0MtMnNsLmdpZik7Y3Vyc29yOnBvaW50ZXI7ZGlz cGxheTpibG9jaztoZWlnaHQ6MTVweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDox OHB4O3RvcDoxN3B4O3dpZHRoOjE1cHg7dG9wOjhweFxcOTtyaWdodDo3cHhcXDl9 XG4uZmJfZGlhbG9nX21vYmlsZSAuZmJfZGlhbG9nX2Nsb3NlX2ljb257dG9wOjVw eDtsZWZ0OjVweDtyaWdodDphdXRvfVxuLmZiX2RpYWxvZ19wYWRkaW5ne2JhY2tn cm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6 MXB4O3otaW5kZXg6LTF9XG4uZmJfZGlhbG9nX2Nsb3NlX2ljb246aG92ZXJ7YmFj a2dyb3VuZDp1cmwoaHR0cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5ldFwvcnNyYy5w aHBcL3YyXC95cVwvclwvSUU5SklJNloxWXMucG5nKSBuby1yZXBlYXQgc2Nyb2xs IDAgLTE1cHggdHJhbnNwYXJlbnQ7X2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHA6 XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92MlwveUxcL3JcL3M4 MTZlV0MtMnNsLmdpZil9XG4uZmJfZGlhbG9nX2Nsb3NlX2ljb246YWN0aXZle2Jh Y2tncm91bmQ6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMu cGhwXC92MlwveXFcL3JcL0lFOUpJSTZaMVlzLnBuZykgbm8tcmVwZWF0IHNjcm9s bCAwIC0zMHB4IHRyYW5zcGFyZW50O19iYWNrZ3JvdW5kLWltYWdlOnVybChodHRw OlwvXC9zdGF0aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBocFwvdjJcL3lMXC9yXC9z ODE2ZVdDLTJzbC5naWYpfVxuLmZiX2RpYWxvZ19sb2FkZXJ7YmFja2dyb3VuZC1j b2xvcjojZjJmMmYyO2JvcmRlcjoxcHggc29saWQgIzYwNjA2MDtmb250LXNpemU6 MjRweDtwYWRkaW5nOjIwcHh9XG4uZmJfZGlhbG9nX3RvcF9sZWZ0LFxuLmZiX2Rp YWxvZ190b3BfcmlnaHQsXG4uZmJfZGlhbG9nX2JvdHRvbV9sZWZ0LFxuLmZiX2Rp YWxvZ19ib3R0b21fcmlnaHR7aGVpZ2h0OjEwcHg7d2lkdGg6MTBweDtvdmVyZmxv dzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGV9XG5cLyogXHUwMDQwbm9mbGlwICpc L1xuLmZiX2RpYWxvZ190b3BfbGVmdHtiYWNrZ3JvdW5kOnVybChodHRwOlwvXC9z dGF0aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBocFwvdjJcL3llXC9yXC84WWVUTkls VFpqbS5wbmcpIG5vLXJlcGVhdCAwIDA7bGVmdDotMTBweDt0b3A6LTEwcHh9XG5c LyogXHUwMDQwbm9mbGlwICpcL1xuLmZiX2RpYWxvZ190b3BfcmlnaHR7YmFja2dy b3VuZDp1cmwoaHR0cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5ldFwvcnNyYy5waHBc L3YyXC95ZVwvclwvOFllVE5JbFRaam0ucG5nKSBuby1yZXBlYXQgMCAtMTBweDty aWdodDotMTBweDt0b3A6LTEwcHh9XG5cLyogXHUwMDQwbm9mbGlwICpcL1xuLmZi X2RpYWxvZ19ib3R0b21fbGVmdHtiYWNrZ3JvdW5kOnVybChodHRwOlwvXC9zdGF0 aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBocFwvdjJcL3llXC9yXC84WWVUTklsVFpq bS5wbmcpIG5vLXJlcGVhdCAwIC0yMHB4O2JvdHRvbTotMTBweDtsZWZ0Oi0xMHB4 fVxuXC8qIFx1MDA0MG5vZmxpcCAqXC9cbi5mYl9kaWFsb2dfYm90dG9tX3JpZ2h0 e2JhY2tncm91bmQ6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3Jz cmMucGhwXC92MlwveWVcL3JcLzhZZVROSWxUWmptLnBuZykgbm8tcmVwZWF0IDAg LTMwcHg7cmlnaHQ6LTEwcHg7Ym90dG9tOi0xMHB4fVxuLmZiX2RpYWxvZ192ZXJ0 X2xlZnQsXG4uZmJfZGlhbG9nX3ZlcnRfcmlnaHQsXG4uZmJfZGlhbG9nX2hvcml6 X3RvcCxcbi5mYl9kaWFsb2dfaG9yaXpfYm90dG9te3Bvc2l0aW9uOmFic29sdXRl O2JhY2tncm91bmQ6IzUyNTI1MjtmaWx0ZXI6YWxwaGEob3BhY2l0eT03MCk7b3Bh Y2l0eTouN31cbi5mYl9kaWFsb2dfdmVydF9sZWZ0LFxuLmZiX2RpYWxvZ192ZXJ0 X3JpZ2h0e3dpZHRoOjEwcHg7aGVpZ2h0OjEwMFx1MDAyNX1cbi5mYl9kaWFsb2df dmVydF9sZWZ0e21hcmdpbi1sZWZ0Oi0xMHB4fVxuLmZiX2RpYWxvZ192ZXJ0X3Jp Z2h0e3JpZ2h0OjA7bWFyZ2luLXJpZ2h0Oi0xMHB4fVxuLmZiX2RpYWxvZ19ob3Jp el90b3AsXG4uZmJfZGlhbG9nX2hvcml6X2JvdHRvbXt3aWR0aDoxMDBcdTAwMjU7 aGVpZ2h0OjEwcHh9XG4uZmJfZGlhbG9nX2hvcml6X3RvcHttYXJnaW4tdG9wOi0x MHB4fVxuLmZiX2RpYWxvZ19ob3Jpel9ib3R0b217Ym90dG9tOjA7bWFyZ2luLWJv dHRvbTotMTBweH1cbi5mYl9kaWFsb2dfaWZyYW1le2xpbmUtaGVpZ2h0OjB9XG4u ZmJfZGlhbG9nX2NvbnRlbnQgLmRpYWxvZ190aXRsZXtiYWNrZ3JvdW5kOiM2ZDg0 YjQ7Ym9yZGVyOjFweCBzb2xpZCAjM2I1OTk4O2NvbG9yOiNmZmY7Zm9udC1zaXpl OjE0cHg7Zm9udC13ZWlnaHQ6Ym9sZDttYXJnaW46MH1cbi5mYl9kaWFsb2dfY29u dGVudCAuZGlhbG9nX3RpdGxlID4gc3BhbntiYWNrZ3JvdW5kOnVybChodHRwOlwv XC9zdGF0aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBocFwvdjJcL3lkXC9yXC9Db3U3 bi1ucUs1Mi5naWYpXG5uby1yZXBlYXQgNXB4IDUwXHUwMDI1O2Zsb2F0OmxlZnQ7 cGFkZGluZzo1cHggMCA3cHggMjZweH1cbmJvZHkuZmJfaGlkZGVuey13ZWJraXQt dHJhbnNmb3JtOm5vbmU7aGVpZ2h0OjEwMFx1MDAyNTttYXJnaW46MDtsZWZ0Oi0x MDAwMHB4O292ZXJmbG93OnZpc2libGU7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0x MDAwMHB4O3dpZHRoOjEwMFx1MDAyNVxufVxuLmZiX2RpYWxvZy5mYl9kaWFsb2df bW9iaWxlLmxvYWRpbmd7YmFja2dyb3VuZDp1cmwoaHR0cDpcL1wvc3RhdGljLmFr LmZiY2RuLm5ldFwvcnNyYy5waHBcL3YyXC95YVwvclwvM3JoU3Y1VjhqM28uZ2lm KVxud2hpdGUgbm8tcmVwZWF0IDUwXHUwMDI1IDUwXHUwMDI1O21pbi1oZWlnaHQ6 MTAwXHUwMDI1O21pbi13aWR0aDoxMDBcdTAwMjU7b3ZlcmZsb3c6aGlkZGVuO3Bv c2l0aW9uOmFic29sdXRlO3RvcDowO3otaW5kZXg6MTAwMDF9XG4uZmJfZGlhbG9n LmZiX2RpYWxvZ19tb2JpbGUubG9hZGluZy5jZW50ZXJlZHttYXgtaGVpZ2h0OjU5 MHB4O21pbi1oZWlnaHQ6NTkwcHg7bWF4LXdpZHRoOjUwMHB4O21pbi13aWR0aDo1 MDBweH1cbiNmYi1yb290ICNmYl9kaWFsb2dfaXBhZF9vdmVybGF5e2JhY2tncm91 bmQ6cmdiYSgwLCAwLCAwLCAuNDUpO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0 b3A6MDt3aWR0aDoxMDBcdTAwMjU7bWluLWhlaWdodDoxMDBcdTAwMjU7ei1pbmRl eDoxMDAwMH1cbiNmYi1yb290ICNmYl9kaWFsb2dfaXBhZF9vdmVybGF5LmhpZGRl bntkaXNwbGF5Om5vbmV9XG4uZmJfZGlhbG9nLmZiX2RpYWxvZ19tb2JpbGUubG9h ZGluZyBpZnJhbWV7dmlzaWJpbGl0eTpoaWRkZW59XG4uZmJfZGlhbG9nX2NvbnRl bnQgLmRpYWxvZ19oZWFkZXJ7LXdlYmtpdC1ib3gtc2hhZG93OndoaXRlIDAgMXB4 IDFweCAtMXB4IGluc2V0O2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5l YXIsIDAgMCwgMCAxMDBcdTAwMjUsIGZyb20oIzczOEFCQSksIHRvKCMyQzQ5ODcp KTtib3JkZXItYm90dG9tOjFweCBzb2xpZDtib3JkZXItY29sb3I6IzFkNDA4ODtj b2xvcjojZmZmO2ZvbnQ6MTRweCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Zm9udC13 ZWlnaHQ6Ym9sZDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3RleHQtc2hhZG93OnJn YmEoMCwgMzAsIDg0LCAuMjk2ODc1KSAwIC0xcHggMDt2ZXJ0aWNhbC1hbGlnbjpt aWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwfVxuLmZiX2RpYWxvZ19jb250ZW50IC5k aWFsb2dfaGVhZGVyIHRhYmxley13ZWJraXQtZm9udC1zbW9vdGhpbmc6c3VicGl4 ZWwtYW50aWFsaWFzZWQ7aGVpZ2h0OjQzcHg7d2lkdGg6MTAwXHUwMDI1XG59XG4u ZmJfZGlhbG9nX2NvbnRlbnQgLmRpYWxvZ19oZWFkZXIgdGQuaGVhZGVyX2xlZnR7 Zm9udC1zaXplOjEycHg7cGFkZGluZy1sZWZ0OjVweDt2ZXJ0aWNhbC1hbGlnbjpt aWRkbGU7d2lkdGg6NjBweFxufVxuLmZiX2RpYWxvZ19jb250ZW50IC5kaWFsb2df aGVhZGVyIHRkLmhlYWRlcl9yaWdodHtmb250LXNpemU6MTJweDtwYWRkaW5nLXJp Z2h0OjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6NjBweFxufVxuLmZi X2RpYWxvZ19jb250ZW50IC50b3VjaGFibGVfYnV0dG9ue2JhY2tncm91bmQ6LXdl YmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDBcdTAwMjUsIGZyb20oIzQ5 NjZBNiksXG5jb2xvci1zdG9wKDAuNSwgIzM1NTQ5MiksIHRvKCMyQTQ4ODcpKTti b3JkZXI6MXB4IHNvbGlkICMyOTQ0N2U7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6 cGFkZGluZy1ib3g7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDstd2Via2l0LWJv eC1zaGFkb3c6cmdiYSgwLCAwLCAwLCAuMTE3MTg4KSAwIDFweCAxcHggaW5zZXQs XG5yZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNjc5NjkpIDAgMXB4IDA7ZGlzcGxheTpp bmxpbmUtYmxvY2s7bWFyZ2luLXRvcDozcHg7bWF4LXdpZHRoOjg1cHg7bGluZS1o ZWlnaHQ6MThweDtwYWRkaW5nOjRweCAxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlfVxu LmZiX2RpYWxvZ19jb250ZW50IC5kaWFsb2dfaGVhZGVyIC50b3VjaGFibGVfYnV0 dG9uIGlucHV0e2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTtjb2xvcjojZmZm O2ZvbnQ6MTJweCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6Ym9s ZDttYXJnaW46MnB4IC0xMnB4O3BhZGRpbmc6MnB4IDZweCAzcHggNnB4O3RleHQt c2hhZG93OnJnYmEoMCwgMzAsIDg0LCAuMjk2ODc1KSAwIC0xcHggMH1cbi5mYl9k aWFsb2dfY29udGVudCAuZGlhbG9nX2hlYWRlciAuaGVhZGVyX2NlbnRlcntjb2xv cjojZmZmO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWln aHQ6MThweDt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9 XG4uZmJfZGlhbG9nX2NvbnRlbnQgLmRpYWxvZ19jb250ZW50e2JhY2tncm91bmQ6 dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92Mlwv eTlcL3JcL2pLRWNWUFpGay0yLmdpZikgbm8tcmVwZWF0IDUwXHUwMDI1IDUwXHUw MDI1O2JvcmRlcjoxcHggc29saWQgIzU1NTtib3JkZXItYm90dG9tOjA7Ym9yZGVy LXRvcDowO2hlaWdodDoxNTBweH1cbi5mYl9kaWFsb2dfY29udGVudCAuZGlhbG9n X2Zvb3RlcntiYWNrZ3JvdW5kOiNmMmYyZjI7Ym9yZGVyOjFweCBzb2xpZCAjNTU1 O2JvcmRlci10b3AtY29sb3I6I2NjYztoZWlnaHQ6NDBweH1cbiNmYl9kaWFsb2df bG9hZGVyX2Nsb3Nle2Zsb2F0OmxlZnR9XG4uZmJfZGlhbG9nLmZiX2RpYWxvZ19t b2JpbGUgLmZiX2RpYWxvZ19jbG9zZV9idXR0b257dGV4dC1zaGFkb3c6cmdiYSgw LCAzMCwgODQsIC4yOTY4NzUpIDAgLTFweCAwfVxuLmZiX2RpYWxvZy5mYl9kaWFs b2dfbW9iaWxlIC5mYl9kaWFsb2dfY2xvc2VfaWNvbnt2aXNpYmlsaXR5OmhpZGRl bn1cbi5mYl9pZnJhbWVfd2lkZ2V0e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6 LW1vei1pbmxpbmUtYmxvY2s7ZGlzcGxheTppbmxpbmUtYmxvY2t9XG4uZmJfaWZy YW1lX3dpZGdldCBpZnJhbWV7cG9zaXRpb246YWJzb2x1dGV9XG4uZmJfaWZyYW1l X3dpZGdldF9saWZ0e3otaW5kZXg6MX1cbi5mYl9pZnJhbWVfd2lkZ2V0IHNwYW57 ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGln bjpqdXN0aWZ5O3ZlcnRpY2FsLWFsaWduOnRleHQtYm90dG9tfVxuLmZiX2hpZGVf aWZyYW1lcyBpZnJhbWV7cG9zaXRpb246cmVsYXRpdmU7bGVmdDotMTAwMDBweH1c bi5mYl9pZnJhbWVfd2lkZ2V0X2xvYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNw bGF5OmlubGluZS1ibG9ja31cbi5mYl9pZnJhbWVfd2lkZ2V0X2ZsdWlke2Rpc3Bs YXk6aW5saW5lfVxuLmZiX2lmcmFtZV93aWRnZXRfZmx1aWQgc3Bhbnt3aWR0aDox MDBcdTAwMjV9XG4uZmJfaWZyYW1lX3dpZGdldF9sb2FkZXIgaWZyYW1le21pbi1o ZWlnaHQ6MzJweDt6LWluZGV4OjI7em9vbToxfVxuLmZiX2lmcmFtZV93aWRnZXRf bG9hZGVyIC5GQl9Mb2FkZXJ7YmFja2dyb3VuZDp1cmwoaHR0cDpcL1wvc3RhdGlj LmFrLmZiY2RuLm5ldFwvcnNyYy5waHBcL3YyXC95OVwvclwvaktFY1ZQWkZrLTIu Z2lmKSBuby1yZXBlYXQ7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDttYXJnaW4tbGVm dDotMTZweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwXHUwMDI1O3otaW5kZXg6 NH1cbi5mYl9idXR0b25fc2ltcGxlLFxuLmZiX2J1dHRvbl9zaW1wbGVfcnRse2Jh Y2tncm91bmQtaW1hZ2U6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRc L3JzcmMucGhwXC92MlwveUhcL3JcL2VJcGJuVktJOWxSLnBuZyk7YmFja2dyb3Vu ZC1yZXBlYXQ6bm8tcmVwZWF0O2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTt0 ZXh0LWRlY29yYXRpb246bm9uZX1cbi5mYl9idXR0b25fc2ltcGxlX3J0bHtiYWNr Z3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDB9XG4uZmJfYnV0dG9uX3NpbXBsZSAuZmJf YnV0dG9uX3RleHR7bWFyZ2luOjAgMCAwIDIwcHg7cGFkZGluZy1ib3R0b206MXB4 fVxuLmZiX2J1dHRvbl9zaW1wbGVfcnRsIC5mYl9idXR0b25fdGV4dHttYXJnaW46 MCAxMHB4IDAgMH1cbmEuZmJfYnV0dG9uX3NpbXBsZTpob3ZlciAuZmJfYnV0dG9u X3RleHQsXG5hLmZiX2J1dHRvbl9zaW1wbGVfcnRsOmhvdmVyIC5mYl9idXR0b25f dGV4dCxcbi5mYl9idXR0b25fc2ltcGxlOmhvdmVyIC5mYl9idXR0b25fdGV4dCxc bi5mYl9idXR0b25fc2ltcGxlX3J0bDpob3ZlciAuZmJfYnV0dG9uX3RleHR7dGV4 dC1kZWNvcmF0aW9uOnVuZGVybGluZX1cbi5mYl9idXR0b24sXG4uZmJfYnV0dG9u X3J0bHtiYWNrZ3JvdW5kOiMyOTQ0N2UgdXJsKGh0dHA6XC9cL3N0YXRpYy5hay5m YmNkbi5uZXRcL3JzcmMucGhwXC92MlwveUxcL3JcL0ZHRmJjODBkVUtqLnBuZyk7 YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2N1cnNvcjpwb2ludGVyO2Rpc3Bs YXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCAwIDAgMXB4O3RleHQtZGVjb3JhdGlv bjpub25lO291dGxpbmU6bm9uZX1cbi5mYl9idXR0b24gLmZiX2J1dHRvbl90ZXh0 LFxuLmZiX2J1dHRvbl9ydGwgLmZiX2J1dHRvbl90ZXh0e2JhY2tncm91bmQ6IzVm NzhhYiB1cmwoaHR0cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5ldFwvcnNyYy5waHBc L3YyXC95TFwvclwvRkdGYmM4MGRVS2oucG5nKTtib3JkZXItdG9wOnNvbGlkIDFw eCAjODc5YWMwO2JvcmRlci1ib3R0b206c29saWQgMXB4ICMxYTM1NmU7Y29sb3I6 I2ZmZjtkaXNwbGF5OmJsb2NrO2ZvbnQtZmFtaWx5OlwibHVjaWRhIGdyYW5kZVwi LHRhaG9tYSx2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6Ym9s ZDtwYWRkaW5nOjJweCA2cHggM3B4IDZweDttYXJnaW46MXB4IDFweCAwIDIxcHg7 dGV4dC1zaGFkb3c6bm9uZX1cbmEuZmJfYnV0dG9uLFxuYS5mYl9idXR0b25fcnRs LFxuLmZiX2J1dHRvbixcbi5mYl9idXR0b25fcnRse3RleHQtZGVjb3JhdGlvbjpu b25lfVxuYS5mYl9idXR0b246YWN0aXZlIC5mYl9idXR0b25fdGV4dCxcbmEuZmJf YnV0dG9uX3J0bDphY3RpdmUgLmZiX2J1dHRvbl90ZXh0LFxuLmZiX2J1dHRvbjph Y3RpdmUgLmZiX2J1dHRvbl90ZXh0LFxuLmZiX2J1dHRvbl9ydGw6YWN0aXZlIC5m Yl9idXR0b25fdGV4dHtib3JkZXItYm90dG9tOnNvbGlkIDFweCAjMjk0NDdlO2Jv cmRlci10b3A6c29saWQgMXB4ICM0NTYxOWQ7YmFja2dyb3VuZDojNGY2YWEzO3Rl eHQtc2hhZG93Om5vbmV9XG4uZmJfYnV0dG9uX3hsYXJnZSxcbi5mYl9idXR0b25f eGxhcmdlX3J0bHtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTYwcHg7Zm9udC1z aXplOjI0cHg7bGluZS1oZWlnaHQ6MzBweH1cbi5mYl9idXR0b25feGxhcmdlIC5m Yl9idXR0b25fdGV4dHtwYWRkaW5nOjNweCA4cHggM3B4IDEycHg7bWFyZ2luLWxl ZnQ6MzhweH1cbmEuZmJfYnV0dG9uX3hsYXJnZTphY3RpdmV7YmFja2dyb3VuZC1w b3NpdGlvbjpsZWZ0IC05OXB4fVxuLmZiX2J1dHRvbl94bGFyZ2VfcnRse2JhY2tn cm91bmQtcG9zaXRpb246cmlnaHQgLTI2OHB4fVxuLmZiX2J1dHRvbl94bGFyZ2Vf cnRsIC5mYl9idXR0b25fdGV4dHtwYWRkaW5nOjNweCA4cHggM3B4IDEycHg7bWFy Z2luLXJpZ2h0OjM5cHh9XG5hLmZiX2J1dHRvbl94bGFyZ2VfcnRsOmFjdGl2ZXti YWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC0zMDdweH1cbi5mYl9idXR0b25fbGFy Z2UsXG4uZmJfYnV0dG9uX2xhcmdlX3J0bHtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxl ZnQgLTEzOHB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjE2cHh9XG4uZmJf YnV0dG9uX2xhcmdlIC5mYl9idXR0b25fdGV4dHttYXJnaW4tbGVmdDoyNHB4O3Bh ZGRpbmc6MnB4IDZweCA0cHggNnB4fVxuYS5mYl9idXR0b25fbGFyZ2U6YWN0aXZl e2JhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMTYzcHh9XG4uZmJfYnV0dG9uX2xh cmdlX3J0bHtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC0zNDZweH1cbi5mYl9i dXR0b25fbGFyZ2VfcnRsIC5mYl9idXR0b25fdGV4dHttYXJnaW4tcmlnaHQ6MjVw eH1cbmEuZmJfYnV0dG9uX2xhcmdlX3J0bDphY3RpdmV7YmFja2dyb3VuZC1wb3Np dGlvbjpyaWdodCAtMzcxcHh9XG4uZmJfYnV0dG9uX21lZGl1bSxcbi5mYl9idXR0 b25fbWVkaXVtX3J0bHtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTE4OHB4O2Zv bnQtc2l6ZToxMXB4O2xpbmUtaGVpZ2h0OjE0cHh9XG5hLmZiX2J1dHRvbl9tZWRp dW06YWN0aXZle2JhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMjEwcHh9XG4uZmJf YnV0dG9uX21lZGl1bV9ydGx7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAtMzk2 cHh9XG4uZmJfYnV0dG9uX3RleHRfcnRsLFxuLmZiX2J1dHRvbl9tZWRpdW1fcnRs IC5mYl9idXR0b25fdGV4dHtwYWRkaW5nOjJweCA2cHggM3B4IDZweDttYXJnaW4t cmlnaHQ6MjJweH1cbmEuZmJfYnV0dG9uX21lZGl1bV9ydGw6YWN0aXZle2JhY2tn cm91bmQtcG9zaXRpb246cmlnaHQgLTQxOHB4fVxuLmZiX2J1dHRvbl9zbWFsbCxc bi5mYl9idXR0b25fc21hbGxfcnRse2JhY2tncm91bmQtcG9zaXRpb246bGVmdCAt MjMycHg7Zm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweH1cbi5mYl9idXR0 b25fc21hbGwgLmZiX2J1dHRvbl90ZXh0e3BhZGRpbmc6MnB4IDZweCAzcHg7bWFy Z2luLWxlZnQ6MTdweH1cbmEuZmJfYnV0dG9uX3NtYWxsOmFjdGl2ZSxcbi5mYl9i dXR0b25fc21hbGw6YWN0aXZle2JhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMjUw cHh9XG4uZmJfYnV0dG9uX3NtYWxsX3J0bHtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJp Z2h0IC00NDBweH1cbi5mYl9idXR0b25fc21hbGxfcnRsIC5mYl9idXR0b25fdGV4 dHtwYWRkaW5nOjJweCA2cHg7bWFyZ2luLXJpZ2h0OjE4cHh9XG5hLmZiX2J1dHRv bl9zbWFsbF9ydGw6YWN0aXZle2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgLTQ1 OHB4fVxuLmZiX3NoYXJlX2NvdW50X3dyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7 ZmxvYXQ6bGVmdH1cbi5mYl9zaGFyZV9jb3VudHtiYWNrZ3JvdW5kOiNiMGI5ZWMg bm9uZSByZXBlYXQgc2Nyb2xsIDAgMDtjb2xvcjojMzMzO2ZvbnQtZmFtaWx5Olwi bHVjaWRhIGdyYW5kZVwiLCB0YWhvbWEsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNl cmlmO3RleHQtYWxpZ246Y2VudGVyfVxuLmZiX3NoYXJlX2NvdW50X2lubmVye2Jh Y2tncm91bmQ6I2U4ZWJmMjtkaXNwbGF5OmJsb2NrfVxuLmZiX3NoYXJlX2NvdW50 X3JpZ2h0e21hcmdpbi1sZWZ0Oi0xcHg7ZGlzcGxheTppbmxpbmUtYmxvY2t9XG4u ZmJfc2hhcmVfY291bnRfcmlnaHQgLmZiX3NoYXJlX2NvdW50X2lubmVye2JvcmRl ci10b3A6c29saWQgMXB4ICNlOGViZjI7Ym9yZGVyLWJvdHRvbTpzb2xpZCAxcHgg I2IwYjllYzttYXJnaW46MXB4IDFweCAwIDFweDtmb250LXNpemU6MTBweDtsaW5l LWhlaWdodDoxMHB4O3BhZGRpbmc6MnB4IDZweCAzcHg7Zm9udC13ZWlnaHQ6Ym9s ZH1cbi5mYl9zaGFyZV9jb3VudF90b3B7ZGlzcGxheTpibG9jaztsZXR0ZXItc3Bh Y2luZzotMXB4O2xpbmUtaGVpZ2h0OjM0cHg7bWFyZ2luLWJvdHRvbTo3cHg7Zm9u dC1zaXplOjIycHg7Ym9yZGVyOnNvbGlkIDFweCAjYjBiOWVjfVxuLmZiX3NoYXJl X2NvdW50X251Yl90b3B7Ym9yZGVyOm5vbmU7ZGlzcGxheTpibG9jaztwb3NpdGlv bjphYnNvbHV0ZTtsZWZ0OjdweDt0b3A6MzVweDttYXJnaW46MDtwYWRkaW5nOjA7 d2lkdGg6NnB4O2hlaWdodDo3cHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0 O2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5u ZXRcL3JzcmMucGhwXC92MlwveVVcL3JcL2JTT0h0S2JDR1lJLnBuZyl9XG4uZmJf c2hhcmVfY291bnRfbnViX3JpZ2h0e2JvcmRlcjpub25lO2Rpc3BsYXk6aW5saW5l LWJsb2NrO3BhZGRpbmc6MDt3aWR0aDo1cHg7aGVpZ2h0OjEwcHg7YmFja2dyb3Vu ZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHA6XC9c L3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92MlwveVhcL3JcL2lfb0lW VEtNWXNMLnBuZyk7dmVydGljYWwtYWxpZ246dG9wO2JhY2tncm91bmQtcG9zaXRp b246cmlnaHQgNXB4O3otaW5kZXg6MTA7bGVmdDoycHg7bWFyZ2luOjAgMnB4IDAg MDtwb3NpdGlvbjpyZWxhdGl2ZX1cbi5mYl9zaGFyZV9ub19jb3VudHtkaXNwbGF5 Om5vbmV9XG4uZmJfc2hhcmVfc2l6ZV9TbWFsbCAuZmJfc2hhcmVfY291bnRfcmln aHQgLmZiX3NoYXJlX2NvdW50X2lubmVye2ZvbnQtc2l6ZToxMHB4fVxuLmZiX3No YXJlX3NpemVfTWVkaXVtIC5mYl9zaGFyZV9jb3VudF9yaWdodCAuZmJfc2hhcmVf Y291bnRfaW5uZXJ7Zm9udC1zaXplOjExcHg7cGFkZGluZzoycHggNnB4IDNweDts ZXR0ZXItc3BhY2luZzotMXB4O2xpbmUtaGVpZ2h0OjE0cHh9XG4uZmJfc2hhcmVf c2l6ZV9MYXJnZSAuZmJfc2hhcmVfY291bnRfcmlnaHQgLmZiX3NoYXJlX2NvdW50 X2lubmVye2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjE2cHg7cGFkZGluZzoy cHggNnB4IDRweDtmb250LXdlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6LTFw eH1cbi5mYl9zaGFyZV9jb3VudF9oaWRkZW4gLmZiX3NoYXJlX2NvdW50X251Yl90 b3AsXG4uZmJfc2hhcmVfY291bnRfaGlkZGVuIC5mYl9zaGFyZV9jb3VudF90b3As XG4uZmJfc2hhcmVfY291bnRfaGlkZGVuIC5mYl9zaGFyZV9jb3VudF9udWJfcmln aHQsXG4uZmJfc2hhcmVfY291bnRfaGlkZGVuIC5mYl9zaGFyZV9jb3VudF9yaWdo dHt2aXNpYmlsaXR5OmhpZGRlbn1cbi5mYl9jb25uZWN0X2Jhcl9jb250YWluZXIg ZGl2LFxuLmZiX2Nvbm5lY3RfYmFyX2NvbnRhaW5lciBzcGFuLFxuLmZiX2Nvbm5l Y3RfYmFyX2NvbnRhaW5lciBhLFxuLmZiX2Nvbm5lY3RfYmFyX2NvbnRhaW5lciBp bWcsXG4uZmJfY29ubmVjdF9iYXJfY29udGFpbmVyIHN0cm9uZ3tiYWNrZ3JvdW5k Om5vbmU7Ym9yZGVyLXNwYWNpbmc6MDtib3JkZXI6MDtkaXJlY3Rpb246bHRyO2Zv bnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7bGV0dGVyLXNwYWNp bmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjE7bWFyZ2luOjA7b3ZlcmZsb3c6dmlzaWJs ZTtwYWRkaW5nOjA7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25l O3RleHQtaW5kZW50OjA7dGV4dC1zaGFkb3c6bm9uZTt0ZXh0LXRyYW5zZm9ybTpu b25lO3Zpc2liaWxpdHk6dmlzaWJsZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1z cGFjaW5nOm5vcm1hbDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1cbi5mYl9jb25u ZWN0X2Jhcl9jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7bGVmdDowICFpbXBvcnRh bnQ7cmlnaHQ6MCAhaW1wb3J0YW50O2hlaWdodDo0MnB4ICFpbXBvcnRhbnQ7cGFk ZGluZzowIDI1cHggIWltcG9ydGFudDttYXJnaW46MCAhaW1wb3J0YW50O3ZlcnRp Y2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MXB4IHNv bGlkICMzMzMgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiMzYjU5OTggIWltcG9ydGFu dDt6LWluZGV4Ojk5OTk5OTk5ICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFp bXBvcnRhbnR9XG4uZmJfY29ubmVjdF9iYXJfY29udGFpbmVyX2llNntwb3NpdGlv bjphYnNvbHV0ZTt0b3A6ZXhwcmVzc2lvbihkb2N1bWVudC5jb21wYXRNb2RlPT1c IkNTUzFDb21wYXRcIj8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv cCtcInB4XCI6Ym9keS5zY3JvbGxUb3ArXCJweFwiKX1cbi5mYl9jb25uZWN0X2Jh cntwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46YXV0bztoZWlnaHQ6MTAwXHUwMDI1 O3dpZHRoOjEwMFx1MDAyNTtwYWRkaW5nOjZweCAwIDAgMCAhaW1wb3J0YW50O2Jh Y2tncm91bmQ6bm9uZTtjb2xvcjojZmZmICFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6 XCJsdWNpZGEgZ3JhbmRlXCIsIHRhaG9tYSwgdmVyZGFuYSwgYXJpYWwsIHNhbnMt c2VyaWYgIWltcG9ydGFudDtmb250LXNpemU6MTNweCAhaW1wb3J0YW50O2ZvbnQt c3R5bGU6bm9ybWFsICFpbXBvcnRhbnQ7Zm9udC12YXJpYW50Om5vcm1hbCAhaW1w b3J0YW50O2ZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50O2xldHRlci1zcGFj aW5nOm5vcm1hbCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEgIWltcG9ydGFudDt0 ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50O3RleHQtaW5kZW50OjAgIWlt cG9ydGFudDt0ZXh0LXNoYWRvdzpub25lICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zv cm06bm9uZSAhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vcm1hbCAhaW1wb3J0YW50 O3dvcmQtc3BhY2luZzpub3JtYWwgIWltcG9ydGFudH1cbi5mYl9jb25uZWN0X2Jh ciBhOmhvdmVye2NvbG9yOiNmZmZ9XG4uZmJfY29ubmVjdF9iYXIgLmZiX3Byb2Zp bGUgaW1ne2hlaWdodDozMHB4O3dpZHRoOjMwcHg7dmVydGljYWwtYWxpZ246bWlk ZGxlO21hcmdpbjowIDZweCA1cHggMH1cbi5mYl9jb25uZWN0X2JhciBkaXYgYSxc bi5mYl9jb25uZWN0X2JhciBzcGFuLFxuLmZiX2Nvbm5lY3RfYmFyIHNwYW4gYXtj b2xvcjojYmFjNmRhO2ZvbnQtc2l6ZToxMXB4O3RleHQtZGVjb3JhdGlvbjpub25l fVxuLmZiX2Nvbm5lY3RfYmFyIC5mYl9idXR0b25ze2Zsb2F0OnJpZ2h0O21hcmdp bi10b3A6N3B4fVxuLmZiX2VkZ2Vfd2lkZ2V0X3dpdGhfY29tbWVudHtwb3NpdGlv bjpyZWxhdGl2ZTsqei1pbmRleDoxMDAwfVxuLmZiX2VkZ2Vfd2lkZ2V0X3dpdGhf Y29tbWVudCBzcGFuLmZiX2VkZ2VfY29tbWVudF93aWRnZXR7cG9zaXRpb246YWJz b2x1dGV9XG4uZmJfZWRnZV93aWRnZXRfd2l0aF9jb21tZW50IHNwYW4uZmJfc2Vu ZF9idXR0b25fZm9ybV93aWRnZXR7ei1pbmRleDoxfVxuLmZiX2VkZ2Vfd2lkZ2V0 X3dpdGhfY29tbWVudCBzcGFuLmZiX3NlbmRfYnV0dG9uX2Zvcm1fd2lkZ2V0IC5G Ql9Mb2FkZXJ7bGVmdDowO3RvcDoxcHg7bWFyZ2luLXRvcDo2cHg7bWFyZ2luLWxl ZnQ6MDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwXHUwMDI1IDUwXHUwMDI1O2JhY2tn cm91bmQtY29sb3I6I2ZmZjtoZWlnaHQ6MTUwcHg7d2lkdGg6Mzk0cHg7Ym9yZGVy OjFweCAjNjY2IHNvbGlkO2JvcmRlci1ib3R0b206MnB4IHNvbGlkICMyODNlNmM7 ei1pbmRleDoxfVxuLmZiX2VkZ2Vfd2lkZ2V0X3dpdGhfY29tbWVudCBzcGFuLmZi X3NlbmRfYnV0dG9uX2Zvcm1fd2lkZ2V0LmRhcmsgLkZCX0xvYWRlcntiYWNrZ3Jv dW5kLWNvbG9yOiMwMDA7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2NjY31cbi5m Yl9lZGdlX3dpZGdldF93aXRoX2NvbW1lbnQgc3Bhbi5mYl9zZW5kX2J1dHRvbl9m b3JtX3dpZGdldC5zaWRlcmVuZGVyXG4uRkJfTG9hZGVye21hcmdpbi10b3A6MH1c bi5mYnBsdWdpbnJlY29tbWVuZGF0aW9uc2JhcmxlZnQsXG4uZmJwbHVnaW5yZWNv bW1lbmRhdGlvbnNiYXJyaWdodHtwb3NpdGlvbjpmaXhlZCAhaW1wb3J0YW50O2Jv dHRvbTowO3otaW5kZXg6OTk5fVxuXC8qIFx1MDA0MG5vZmxpcCAqXC9cbi5mYnBs dWdpbnJlY29tbWVuZGF0aW9uc2JhcmxlZnR7bGVmdDoxMHB4fVxuXC8qIFx1MDA0 MG5vZmxpcCAqXC9cbi5mYnBsdWdpbnJlY29tbWVuZGF0aW9uc2JhcnJpZ2h0e3Jp Z2h0OjEwcHh9IiwiY29tcG9uZW50cyI6WyJmYi5jc3MuYmFzZSIsImZiLmNzcy5k aWFsb2ciLCJmYi5jc3MuaWZyYW1ld2lkZ2V0IiwiZmIuY3NzLmJ1dHRvbiIsImZi LmNzcy5zaGFyZWJ1dHRvbiIsImZiLmNzcy5jb25uZWN0YmFyd2lkZ2V0IiwiZmIu Y3NzLmVkZ2Vjb21tZW50d2lkZ2V0IiwiZmIuY3NzLnNlbmRidXR0b25mb3Jtd2lk Z2V0IiwiZmIuY3NzLnBsdWdpbi5yZWNvbW1lbmRhdGlvbnNiYXIiXX0pO19fZCgi Q2FudmFzUHJlZmV0Y2hlckNvbmZpZyIsW10seyJibGFja2xpc3QiOlsxNDQ5NTk2 MTU1NzY0NjZdLCJzYW1wbGVSYXRlIjo1MDB9KTtfX2QoIlBsdWdpblBpcGVDb25m aWciLFtdLHsidGhyZXNob2xkIjowLCJlbmFibGVkQXBwcyI6eyIyMDk3NTM4MjU4 MTA2NjMiOjEsIjE4NzI4ODY5NDY0MzcxOCI6MX19KTtfX2QoIkNvbm5lY3RCYXJD b25maWciLFtdLHsiaW1ncyI6eyJidXR0b25VcmwiOiJyc3JjLnBocFwvdjJcL3lZ XC9yXC9oX1k2dTF3clpQVy5wbmciLCJtaXNzaW5nUHJvZmlsZVVybCI6InJzcmMu cGhwXC92MlwveW9cL3JcL1VsSXFtSEpuLVNLLmdpZiJ9fSk7X19kKCJQcm9maWxl UGljQ29uZmlnIixbXSx7ImRlZlBpY01hcCI6eyJwaWMiOiJyc3JjLnBocFwvdjFc L3loXC9yXC9DNXl0N0NxZjN6VS5qcGciLCJwaWNfYmlnIjoicnNyYy5waHBcL3Yy XC95TFwvclwvSHNUWlNEdzRhdnguZ2lmIiwicGljX2JpZ193aXRoX2xvZ28iOiJy c3JjLnBocFwvdjJcL3k1XC9yXC9TUkRDYWVDTDdoTS5naWYiLCJwaWNfc21hbGwi OiJyc3JjLnBocFwvdjFcL3lpXC9yXC9vZEE5c05MckU4Ni5qcGciLCJwaWNfc21h bGxfd2l0aF9sb2dvIjoicnNyYy5waHBcL3YyXC95RFwvclwvazF4aVJYS25sR2Qu Z2lmIiwicGljX3NxdWFyZSI6InJzcmMucGhwXC92MlwveW9cL3JcL1VsSXFtSEpu LVNLLmdpZiIsInBpY19zcXVhcmVfd2l0aF9sb2dvIjoicnNyYy5waHBcL3YyXC95 WFwvclwvOWRZSkJQREhYd1ouZ2lmIiwicGljX3dpdGhfbG9nbyI6InJzcmMucGhw XC92MlwveXVcL3JcL2ZQUFI5ZjJGSjN0LmdpZiJ9fSk7X19kKCJFZGdhckNvbmZp ZyIsW10seyJzdHVicyI6WyJDb25uZWN0Ll9zaW5nbGV0b24uX3N0YXR1cy5yZXN1 bHQiLCJDb25uZWN0LnNob3dQZXJtaXNzaW9uRGlhbG9nIiwiRkJEZWJ1Zy5kdW1w Il19KTtfX2QoIkFwaUNsaWVudENvbmZpZyIsW10seyJGbGFzaFJlcXVlc3QiOnsi c3dmVXJsIjoiaHR0cHM6XC9cL2Nvbm5lY3QuZmFjZWJvb2submV0XC9yc3JjLnBo cFwvdjFcL3lyXC9yXC9TYThHSEpxZHFKbi5zd2YifX0pOwpfX2QoIlF1ZXJ5U3Ry aW5nIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhrKXt2YXIg bD1bXTtFUzUoRVM1KCdPYmplY3QnLCdrZXlzJyxmYWxzZSxrKSwnZm9yRWFjaCcs dHJ1ZSxmdW5jdGlvbihtKXt2YXIgbj1rW21dO2lmKHR5cGVvZiBuPT09J3VuZGVm aW5lZCcpcmV0dXJuO2lmKG49PT1udWxsKXtsLnB1c2gobSk7cmV0dXJuO31sLnB1 c2goZW5jb2RlVVJJQ29tcG9uZW50KG0pKyc9JytlbmNvZGVVUklDb21wb25lbnQo bikpO30pO3JldHVybiBsLmpvaW4oJyYnKTt9ZnVuY3Rpb24gaChrLGwpe3ZhciBt PXt9O2lmKGs9PT0nJylyZXR1cm4gbTt2YXIgbj1rLnNwbGl0KCcmJyk7Zm9yKHZh ciBvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBwPW5bb10uc3BsaXQoJz0nLDIpLHE9 ZGVjb2RlVVJJQ29tcG9uZW50KHBbMF0pO2lmKGwmJm0uaGFzT3duUHJvcGVydHko cSkpdGhyb3cgbmV3IFVSSUVycm9yKCdEdXBsaWNhdGUga2V5OiAnK3EpO21bcV09 cC5sZW5ndGg9PT0yP2RlY29kZVVSSUNvbXBvbmVudChwWzFdKTpudWxsO31yZXR1 cm4gbTt9ZnVuY3Rpb24gaShrLGwpe3JldHVybiBrKyh+RVM1KGssJ2luZGV4T2Yn LHRydWUsJz8nKT8nJic6Jz8nKSsodHlwZW9mIGw9PT0nc3RyaW5nJz9sOmouZW5j b2RlKGwpKTt9dmFyIGo9e2VuY29kZTpnLGRlY29kZTpoLGFwcGVuZFRvVXJsOml9 O2UuZXhwb3J0cz1qO30pOwpfX2QoImNvcHlQcm9wZXJ0aWVzIixbXSxmdW5jdGlv bihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoLGksaixrLGwsbSxuKXtoPWh8fHt9 O3ZhciBvPVtpLGosayxsLG1dLHA9MCxxO3doaWxlKG9bcF0pe3E9b1twKytdO2Zv cih2YXIgciBpbiBxKWhbcl09cVtyXTtpZihxLmhhc093blByb3BlcnR5JiZxLmhh c093blByb3BlcnR5KCd0b1N0cmluZycpJiYodHlwZW9mIHEudG9TdHJpbmchPSd1 bmRlZmluZWQnKSYmKGgudG9TdHJpbmchPT1xLnRvU3RyaW5nKSloLnRvU3RyaW5n PXEudG9TdHJpbmc7fXJldHVybiBoO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJNYW5h Z2VkRXJyb3IiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgs aSl7RXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxoKTt0aGlz Lm1lc3NhZ2U9aDt0aGlzLmlubmVyRXJyb3I9aTt9Zy5wcm90b3R5cGU9bmV3IEVy cm9yKCk7Zy5wcm90b3R5cGUuY29uc3RydWN0b3I9ZztlLmV4cG9ydHM9Zzt9KTsK X19kKCJBc3NlcnRpb25FcnJvciIsWyJNYW5hZ2VkRXJyb3IiXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7dmFyIGc9YignTWFuYWdlZEVycm9yJyk7ZnVuY3Rpb24gaChp KXtnLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7 fWgucHJvdG90eXBlPW5ldyBnKCk7aC5wcm90b3R5cGUuY29uc3RydWN0b3I9aDtl LmV4cG9ydHM9aDt9KTsKX19kKCJzcHJpbnRmIixbXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7ZnVuY3Rpb24gZyhoLGkpe2k9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNh bGwoYXJndW1lbnRzLDEpO3ZhciBqPTA7cmV0dXJuIGgucmVwbGFjZSgvJXMvZyxm dW5jdGlvbihrKXtyZXR1cm4gaVtqKytdO30pO31lLmV4cG9ydHM9Zzt9KTsKX19k KCJBc3NlcnQiLFsiQXNzZXJ0aW9uRXJyb3IiLCJzcHJpbnRmIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0Fzc2VydGlvbkVycm9yJyksaD1iKCdzcHJp bnRmJyk7ZnVuY3Rpb24gaShuLG8pe2lmKCFuKXRocm93IG5ldyBnKG8pO3JldHVy biBuO31mdW5jdGlvbiBqKG4sbyxwKXt2YXIgcTtpZihvPT09dW5kZWZpbmVkKXtx PSd1bmRlZmluZWQnO31lbHNlIGlmKG89PT1udWxsKXtxPSdudWxsJzt9ZWxzZXt2 YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7cT0vXHMoXHcq KS8uZXhlYyhyKVsxXS50b0xvd2VyQ2FzZSgpO31pKEVTNShuLCdpbmRleE9mJyx0 cnVlLHEpIT09LTEscHx8aCgnRXhwcmVzc2lvbiBpcyBvZiB0eXBlICVzLCBub3Qg JXMnLHEsbikpO3JldHVybiBvO31mdW5jdGlvbiBrKG4sbyxwKXtpKG8gaW5zdGFu Y2VvZiBuLHB8fCdFeHByZXNzaW9uIG5vdCBpbnN0YW5jZSBvZiB0eXBlJyk7cmV0 dXJuIG87fWZ1bmN0aW9uIGwobixvKXttWydpcycrbl09bzttWydtYXliZScrbl09 ZnVuY3Rpb24ocCxxKXtpZihwIT1udWxsKW8ocCxxKTt9O312YXIgbT17aXNJbnN0 YW5jZU9mOmssaXNUcnVlOmksaXNUcnV0aHk6ZnVuY3Rpb24obixvKXtyZXR1cm4g aSghIW4sbyk7fSx0eXBlOmosZGVmaW5lOmZ1bmN0aW9uKG4sbyl7bj1uLnN1YnN0 cmluZygwLDEpLnRvVXBwZXJDYXNlKCkrbi5zdWJzdHJpbmcoMSkudG9Mb3dlckNh c2UoKTtsKG4sZnVuY3Rpb24ocCxxKXtpKG8ocCkscSk7fSk7fX07RVM1KFsnQXJy YXknLCdCb29sZWFuJywnRGF0ZScsJ0Z1bmN0aW9uJywnTnVsbCcsJ051bWJlcics J09iamVjdCcsJ1JlZ2V4cCcsJ1N0cmluZycsJ1VuZGVmaW5lZCddLCdmb3JFYWNo Jyx0cnVlLGZ1bmN0aW9uKG4pe2wobixFUzUoaiwnYmluZCcsdHJ1ZSxudWxsLG4u dG9Mb3dlckNhc2UoKSkpO30pO2UuZXhwb3J0cz1tO30pOwpfX2QoIlR5cGUiLFsi Y29weVByb3BlcnRpZXMiLCJBc3NlcnQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9YignY29weVByb3BlcnRpZXMnKSxoPWIoJ0Fzc2VydCcpO2Z1bmN0aW9u IGkoKXt2YXIgbT10aGlzLl9fbWl4aW5zO2lmKG0pZm9yKHZhciBuPTA7bjxtLmxl bmd0aDtuKyspbVtuXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fWZ1bmN0aW9uIGoo bSxuKXtpZihuIGluc3RhbmNlb2YgbSlyZXR1cm4gdHJ1ZTtpZihuIGluc3RhbmNl b2YgaSlmb3IodmFyIG89MDtvPG4uX19taXhpbnMubGVuZ3RoO28rKylpZihuLl9f bWl4aW5zW29dPT1tKXJldHVybiB0cnVlO3JldHVybiBmYWxzZTt9ZnVuY3Rpb24g ayhtLG4pe3ZhciBvPW0ucHJvdG90eXBlO2lmKCFFUzUoJ0FycmF5JywnaXNBcnJh eScsZmFsc2Usbikpbj1bbl07Zm9yKHZhciBwPTA7cDxuLmxlbmd0aDtwKyspe3Zh ciBxPW5bcF07aWYodHlwZW9mIHE9PSdmdW5jdGlvbicpe28uX19taXhpbnMucHVz aChxKTtxPXEucHJvdG90eXBlO31FUzUoRVM1KCdPYmplY3QnLCdrZXlzJyxmYWxz ZSxxKSwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlvbihyKXtvW3JdPXFbcl07fSk7fX1m dW5jdGlvbiBsKG0sbixvKXt2YXIgcD1uJiZuLmhhc093blByb3BlcnR5KCdjb25z dHJ1Y3RvcicpP24uY29uc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5h cHBseSh0aGlzLGFyZ3VtZW50cyk7fTtoLmlzRnVuY3Rpb24ocCk7aWYobSYmbS5w cm90b3R5cGUgaW5zdGFuY2VvZiBpPT09ZmFsc2UpdGhyb3cgbmV3IEVycm9yKCdw YXJlbnQgdHlwZSBkb2VzIG5vdCBpbmhlcml0IGZyb20gVHlwZScpO209bXx8aTt2 YXIgcT1uZXcgRnVuY3Rpb24oKTtxLnByb3RvdHlwZT1tLnByb3RvdHlwZTtwLnBy b3RvdHlwZT1uZXcgcSgpO2cocC5wcm90b3R5cGUsbik7cC5wcm90b3R5cGUuX19t aXhpbnM9bS5wcm90b3R5cGUuX19taXhpbnM/QXJyYXkucHJvdG90eXBlLnNsaWNl LmNhbGwobS5wcm90b3R5cGUuX19taXhpbnMpOltdO2lmKG8payhwLG8pO3AucHJv dG90eXBlLnBhcmVudD1mdW5jdGlvbigpe3RoaXMucGFyZW50PW0ucHJvdG90eXBl LnBhcmVudDttLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9O3AucHJvdG90eXBlLnBh cmVudENhbGw9ZnVuY3Rpb24ocil7cmV0dXJuIG0ucHJvdG90eXBlW3JdLmFwcGx5 KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTt9 O3AuZXh0ZW5kPWZ1bmN0aW9uKHIscyl7cmV0dXJuIGwodGhpcyxyLHMpO307cmV0 dXJuIHA7fWcoaS5wcm90b3R5cGUse2luc3RhbmNlT2Y6ZnVuY3Rpb24obSl7cmV0 dXJuIGoobSx0aGlzKTt9fSk7ZyhpLHtleHRlbmQ6ZnVuY3Rpb24obSxuKXtyZXR1 cm4gdHlwZW9mIG09PT0nZnVuY3Rpb24nP2wuYXBwbHkobnVsbCxhcmd1bWVudHMp OmwobnVsbCxtLG4pO30saW5zdGFuY2VPZjpqfSk7ZS5leHBvcnRzPWk7fSk7Cl9f ZCgiT2JzZXJ2YWJsZU1peGluIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVu Y3Rpb24gZygpe3RoaXMuX19vYnNlcnZhYmxlRXZlbnRzPXt9O31nLnByb3RvdHlw ZT17aW5mb3JtOmZ1bmN0aW9uKGgpe3ZhciBpPUFycmF5LnByb3RvdHlwZS5zbGlj ZS5jYWxsKGFyZ3VtZW50cywxKSxqPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs KHRoaXMuZ2V0U3Vic2NyaWJlcnMoaCkpO2Zvcih2YXIgaz0wO2s8ai5sZW5ndGg7 aysrKXtpZihqW2tdPT09bnVsbCljb250aW51ZTt0cnl7altrXS5hcHBseSh0aGlz LGkpO31jYXRjaChsKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgbDt9LDAp O319cmV0dXJuIHRoaXM7fSxnZXRTdWJzY3JpYmVyczpmdW5jdGlvbihoKXtyZXR1 cm4gdGhpcy5fX29ic2VydmFibGVFdmVudHNbaF18fCh0aGlzLl9fb2JzZXJ2YWJs ZUV2ZW50c1toXT1bXSk7fSxjbGVhclN1YnNjcmliZXJzOmZ1bmN0aW9uKGgpe2lm KGgpdGhpcy5fX29ic2VydmFibGVFdmVudHNbaF09W107cmV0dXJuIHRoaXM7fSxj bGVhckFsbFN1YnNjcmliZXJzOmZ1bmN0aW9uKCl7dGhpcy5fX29ic2VydmFibGVF dmVudHM9e307cmV0dXJuIHRoaXM7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oaCxpKXt2 YXIgaj10aGlzLmdldFN1YnNjcmliZXJzKGgpO2oucHVzaChpKTtyZXR1cm4gdGhp czt9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKGgsaSl7dmFyIGo9dGhpcy5nZXRTdWJz Y3JpYmVycyhoKTtmb3IodmFyIGs9MDtrPGoubGVuZ3RoO2srKylpZihqW2tdPT09 aSl7ai5zcGxpY2UoaywxKTticmVhazt9cmV0dXJuIHRoaXM7fSxtb25pdG9yOmZ1 bmN0aW9uKGgsaSl7aWYoIWkoKSl7dmFyIGo9RVM1KGZ1bmN0aW9uKGspe2lmKGku YXBwbHkoaSxhcmd1bWVudHMpKXRoaXMudW5zdWJzY3JpYmUoaCxqKTt9LCdiaW5k Jyx0cnVlLHRoaXMpO3RoaXMuc3Vic2NyaWJlKGgsaik7fXJldHVybiB0aGlzO319 O2UuZXhwb3J0cz1nO30pOwpfX2QoInNkay5Nb2RlbCIsWyJUeXBlIiwiT2JzZXJ2 YWJsZU1peGluIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ1R5cGUn KSxoPWIoJ09ic2VydmFibGVNaXhpbicpLGk9Zy5leHRlbmQoe2NvbnN0cnVjdG9y OmZ1bmN0aW9uKGope3RoaXMucGFyZW50KCk7dmFyIGs9e30sbD10aGlzO0VTNShF UzUoJ09iamVjdCcsJ2tleXMnLGZhbHNlLGopLCdmb3JFYWNoJyx0cnVlLGZ1bmN0 aW9uKG0pe2tbbV09alttXTtsWydzZXQnK21dPWZ1bmN0aW9uKG4pe2lmKG49PT1r W21dKXJldHVybiB0aGlzO2tbbV09bjtsLmluZm9ybShtKycuY2hhbmdlJyxuKTty ZXR1cm4gbDt9O2xbJ2dldCcrbV09ZnVuY3Rpb24oKXtyZXR1cm4ga1ttXTt9O30p O319LGgpO2UuZXhwb3J0cz1pO30pOwpfX2QoInNkay5SdW50aW1lIixbInNkay5N b2RlbCIsImNvcHlQcm9wZXJ0aWVzIiwic2RrLlJ1bnRpbWVDb25maWciXSxmdW5j dGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yignc2RrLk1vZGVsJyksaD1jKCdzZGsu UnVudGltZUNvbmZpZycpLGk9YignY29weVByb3BlcnRpZXMnKSxqPXtVTktOT1dO OjAsUEFHRVRBQjoxLENBTlZBUzoyLFBMQVRGT1JNOjR9LGs9bmV3IGcoe0FjY2Vz c1Rva2VuOicnLENsaWVudElEOicnLEVudmlyb25tZW50OmouVU5LTk9XTixJbml0 aWFsaXplZDpmYWxzZSxMb2NhbGU6aC5sb2NhbGUsTG9naW5TdGF0dXM6dW5kZWZp bmVkLFJ0bDpoLnJ0bCxTY29wZTp1bmRlZmluZWQsU2VjdXJlOnVuZGVmaW5lZCxV c2VDb29raWU6ZmFsc2UsVXNlcklEOicnLENvb2tpZVVzZXJJRDonJ30pO2koayx7 RU5WSVJPTk1FTlRTOmosaXNFbnZpcm9ubWVudDpmdW5jdGlvbihsKXt2YXIgbT10 aGlzLmdldEVudmlyb25tZW50KCk7cmV0dXJuIChsfG0pPT09bTt9fSk7KGZ1bmN0 aW9uKCl7dmFyIGw9L2FwcF9ydW5uZXIvLnRlc3Qod2luZG93Lm5hbWUpP2ouUEFH RVRBQjovaWZyYW1lX2NhbnZhcy8udGVzdCh3aW5kb3cubmFtZSk/ai5DQU5WQVM6 ai5VTktOT1dOO2lmKChsfGouUEFHRVRBQik9PT1sKWw9bHxqLkNBTlZBUztrLnNl dEVudmlyb25tZW50KGwpO30pKCk7ZS5leHBvcnRzPWs7fSk7Cl9fZCgic2RrLkNv b2tpZSIsWyJRdWVyeVN0cmluZyIsInNkay5SdW50aW1lIl0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWIoJ1F1ZXJ5U3RyaW5nJyksaD1iKCdzZGsuUnVudGlt ZScpLGk9bnVsbDtmdW5jdGlvbiBqKG0sbixvKXttPW0raC5nZXRDbGllbnRJRCgp O3ZhciBwPWkmJmkhPT0nLic7aWYocCl7ZG9jdW1lbnQuY29va2llPW0rJz07IGV4 cGlyZXM9V2VkLCAwNCBGZWIgMjAwNCAwODowMDowMCBHTVQ7Jztkb2N1bWVudC5j b29raWU9bSsnPTsgZXhwaXJlcz1XZWQsIDA0IEZlYiAyMDA0IDA4OjAwOjAwIEdN VDsnKydkb21haW49Jytsb2NhdGlvbi5ob3N0bmFtZSsnOyc7fXZhciBxPW5ldyBE YXRlKG8pLnRvR01UU3RyaW5nKCk7ZG9jdW1lbnQuY29va2llPW0rJz0nK24rKG4m Jm89PT0wPycnOic7IGV4cGlyZXM9JytxKSsnOyBwYXRoPS8nKyhwPyc7IGRvbWFp bj0nK2k6JycpO31mdW5jdGlvbiBrKG0pe209bStoLmdldENsaWVudElEKCk7dmFy IG49bmV3IFJlZ0V4cCgnXFxiJyttKyc9KFteO10qKVxcYicpO3JldHVybiBuLnRl c3QoZG9jdW1lbnQuY29va2llKT9SZWdFeHAuJDE6bnVsbDt9dmFyIGw9e3NldERv bWFpbjpmdW5jdGlvbihtKXtpPW07dmFyIG49Zy5lbmNvZGUoe2Jhc2VfZG9tYWlu OmkmJmkhPT0nLic/aTonJ30pLG89bmV3IERhdGUoKTtvLnNldEZ1bGxZZWFyKG8u Z2V0RnVsbFllYXIoKSsxKTtqKCdmYm1fJyxuLG8uZ2V0VGltZSgpKTt9LGdldERv bWFpbjpmdW5jdGlvbigpe3JldHVybiBpO30sbG9hZE1ldGE6ZnVuY3Rpb24oKXt2 YXIgbT1rKCdmYm1fJyk7aWYobSl7dmFyIG49Zy5kZWNvZGUobSk7aWYoIWkpaT1u LmJhc2VfZG9tYWluO3JldHVybiBuO319LGxvYWRTaWduZWRSZXF1ZXN0OmZ1bmN0 aW9uKCl7cmV0dXJuIGsoJ2Zic3JfJyk7fSxzZXRTaWduZWRSZXF1ZXN0Q29va2ll OmZ1bmN0aW9uKG0sbil7aWYoIW0pdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBwYXNz ZWQgdG8gQ29va2llLnNldFNpZ25lZFJlcXVlc3RDb29raWUgJysnd2FzIGVtcHR5 LicpO2ooJ2Zic3JfJyxtLG4pO30sY2xlYXJTaWduZWRSZXF1ZXN0Q29va2llOmZ1 bmN0aW9uKCl7aignZmJzcl8nLCcnLDApO30sc2V0UmF3Omp9O2UuZXhwb3J0cz1s O30pOwpfX2QoImd1aWQiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlv biBnKCl7cmV0dXJuICdmJysoTWF0aC5yYW5kb20oKSooMTw8MzApKS50b1N0cmlu ZygxNikucmVwbGFjZSgnLicsJycpO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJoYXNO YW1lUHJvcGVydHlCdWciLFsiZ3VpZCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2 YXIgZz1iKCdndWlkJyksaDtmdW5jdGlvbiBpKCl7dmFyIGs9ZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgiZm9ybSIpLGw9ay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh dGVFbGVtZW50KCJpbnB1dCIpKTtsLm5hbWU9ZygpO2g9bCE9PWsuZWxlbWVudHNb bC5uYW1lXTtrPWw9bnVsbDtyZXR1cm4gaDt9ZnVuY3Rpb24gaigpe3JldHVybiB0 eXBlb2YgaD09PSd1bmRlZmluZWQnP2koKTpoO31lLmV4cG9ydHM9ajt9KTsKX19k KCJ3cmFwRnVuY3Rpb24iLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz17 fTtmdW5jdGlvbiBoKGksaixrKXtqPWp8fCdkZWZhdWx0JztyZXR1cm4gZnVuY3Rp b24oKXt2YXIgbD1qIGluIGc/Z1tqXShpLGspOmk7cmV0dXJuIGwuYXBwbHkodGhp cyxhcmd1bWVudHMpO307fWguc2V0V3JhcHBlcj1mdW5jdGlvbihpLGope2o9anx8 J2RlZmF1bHQnO2dbal09aTt9O2UuZXhwb3J0cz1oO30pOwpfX2QoIkRPTUV2ZW50 TGlzdGVuZXIiLFsid3JhcEZ1bmN0aW9uIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYp e3ZhciBnPWIoJ3dyYXBGdW5jdGlvbicpLGgsaTtpZih3aW5kb3cuYWRkRXZlbnRM aXN0ZW5lcil7aD1mdW5jdGlvbihrLGwsbSl7bS53cmFwcGVyPWcobSwnZW50cnkn LGsrJzonK2wpO2suYWRkRXZlbnRMaXN0ZW5lcihsLG0ud3JhcHBlcixmYWxzZSk7 fTtpPWZ1bmN0aW9uKGssbCxtKXtrLnJlbW92ZUV2ZW50TGlzdGVuZXIobCxtLndy YXBwZXIsZmFsc2UpO307fWVsc2UgaWYod2luZG93LmF0dGFjaEV2ZW50KXtoPWZ1 bmN0aW9uKGssbCxtKXttLndyYXBwZXI9ZyhtLCdlbnRyeScsaysnOicrbCk7ay5h dHRhY2hFdmVudCgnb24nK2wsbS53cmFwcGVyKTt9O2k9ZnVuY3Rpb24oayxsLG0p e2suZGV0YWNoRXZlbnQoJ29uJytsLG0ud3JhcHBlcik7fTt9dmFyIGo9e2FkZDpm dW5jdGlvbihrLGwsbSl7aChrLGwsbSk7cmV0dXJuIHtyZW1vdmU6ZnVuY3Rpb24o KXtpKGssbCxtKTtrPW51bGw7fX07fSxyZW1vdmU6aX07ZS5leHBvcnRzPWo7fSk7 Cl9fZCgic2RrLmNyZWF0ZUlmcmFtZSIsWyJjb3B5UHJvcGVydGllcyIsImd1aWQi LCJoYXNOYW1lUHJvcGVydHlCdWciLCJET01FdmVudExpc3RlbmVyIl0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaD1iKCdn dWlkJyksaT1iKCdoYXNOYW1lUHJvcGVydHlCdWcnKSxqPWIoJ0RPTUV2ZW50TGlz dGVuZXInKTtmdW5jdGlvbiBrKGwpe2w9Zyh7fSxsKTt2YXIgbSxuPWwubmFtZXx8 aCgpLG89bC5yb290LHA9bC5zdHlsZXx8e2JvcmRlcjonbm9uZSd9LHE9bC51cmws cj1sLm9ubG9hZDtpZihpKCkpe209ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnPGlm cmFtZSBuYW1lPSInK24rJyIvPicpO31lbHNle209ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgiaWZyYW1lIik7bS5uYW1lPW47fWRlbGV0ZSBsLnN0eWxlO2RlbGV0ZSBs Lm5hbWU7ZGVsZXRlIGwudXJsO2RlbGV0ZSBsLnJvb3Q7ZGVsZXRlIGwub25sb2Fk O3ZhciBzPWcoe2ZyYW1lQm9yZGVyOjAsYWxsb3dUcmFuc3BhcmVuY3k6dHJ1ZSxz Y3JvbGxpbmc6J25vJ30sbCk7aWYocy53aWR0aCltLndpZHRoPXMud2lkdGgrJ3B4 JztpZihzLmhlaWdodCltLmhlaWdodD1zLmhlaWdodCsncHgnO2RlbGV0ZSBzLmhl aWdodDtkZWxldGUgcy53aWR0aDtmb3IodmFyIHQgaW4gcylpZihzLmhhc093blBy b3BlcnR5KHQpKW0uc2V0QXR0cmlidXRlKHQsc1t0XSk7ZyhtLnN0eWxlLHApO20u c3JjPSJqYXZhc2NyaXB0OmZhbHNlIjtvLmFwcGVuZENoaWxkKG0pO2lmKHIpdmFy IHU9ai5hZGQobSwnbG9hZCcsZnVuY3Rpb24oKXt1LnJlbW92ZSgpO3IoKTt9KTtt LnNyYz1xO3JldHVybiBtO31lLmV4cG9ydHM9azt9KTsKX19kKCJET01XcmFwcGVy IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGcsaCxpPXtzZXRSb290OmZ1 bmN0aW9uKGope2c9ajt9LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8ZG9j dW1lbnQuYm9keTt9LHNldFdpbmRvdzpmdW5jdGlvbihqKXtoPWo7fSxnZXRXaW5k b3c6ZnVuY3Rpb24oKXtyZXR1cm4gaHx8c2VsZjt9fTtlLmV4cG9ydHM9aTt9KTsK X19kKCJVc2VyQWdlbnQiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1m YWxzZSxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7ZnVuY3Rpb24gdigpe2lm KGcpcmV0dXJuO2c9dHJ1ZTt2YXIgeD1uYXZpZ2F0b3IudXNlckFnZW50LHk9Lyg/ Ok1TSUUuKFxkK1wuXGQrKSl8KD86KD86RmlyZWZveHxHcmFuUGFyYWRpc298SWNl d2Vhc2VsKS4oXGQrXC5cZCspKXwoPzpPcGVyYSg/Oi4rVmVyc2lvbi58LikoXGQr XC5cZCspKXwoPzpBcHBsZVdlYktpdC4oXGQrKD86XC5cZCspPykpLy5leGVjKHgp LHo9LyhNYWMgT1MgWCl8KFdpbmRvd3MpfChMaW51eCkvLmV4ZWMoeCk7cj0vXGIo aVBob25lfGlQW2FvXWQpLy5leGVjKHgpO3M9L1xiKGlQW2FvXWQpLy5leGVjKHgp O3A9L0FuZHJvaWQvaS5leGVjKHgpO3Q9L0ZCQU5cL1x3KzsvaS5leGVjKHgpO3U9 L01vYmlsZS9pLmV4ZWMoeCk7cT0hISgvV2luNjQvLmV4ZWMoeCkpO2lmKHkpe2g9 eVsxXT9wYXJzZUZsb2F0KHlbMV0pOk5hTjtpZihoJiZkb2N1bWVudC5kb2N1bWVu dE1vZGUpaD1kb2N1bWVudC5kb2N1bWVudE1vZGU7aT15WzJdP3BhcnNlRmxvYXQo eVsyXSk6TmFOO2o9eVszXT9wYXJzZUZsb2F0KHlbM10pOk5hTjtrPXlbNF0/cGFy c2VGbG9hdCh5WzRdKTpOYU47aWYoayl7eT0vKD86Q2hyb21lXC8oXGQrXC5cZCsp KS8uZXhlYyh4KTtsPXkmJnlbMV0/cGFyc2VGbG9hdCh5WzFdKTpOYU47fWVsc2Ug bD1OYU47fWVsc2UgaD1pPWo9bD1rPU5hTjtpZih6KXtpZih6WzFdKXt2YXIgYWE9 Lyg/Ok1hYyBPUyBYIChcZCsoPzpbLl9dXGQrKT8pKS8uZXhlYyh4KTttPWFhP3Bh cnNlRmxvYXQoYWFbMV0ucmVwbGFjZSgnXycsJy4nKSk6dHJ1ZTt9ZWxzZSBtPWZh bHNlO249ISF6WzJdO289ISF6WzNdO31lbHNlIG09bj1vPWZhbHNlO312YXIgdz17 aWU6ZnVuY3Rpb24oKXtyZXR1cm4gdigpfHxoO30saWU2NDpmdW5jdGlvbigpe3Jl dHVybiB3LmllKCkmJnE7fSxmaXJlZm94OmZ1bmN0aW9uKCl7cmV0dXJuIHYoKXx8 aTt9LG9wZXJhOmZ1bmN0aW9uKCl7cmV0dXJuIHYoKXx8ajt9LHdlYmtpdDpmdW5j dGlvbigpe3JldHVybiB2KCl8fGs7fSxzYWZhcmk6ZnVuY3Rpb24oKXtyZXR1cm4g dy53ZWJraXQoKTt9LGNocm9tZTpmdW5jdGlvbigpe3JldHVybiB2KCl8fGw7fSx3 aW5kb3dzOmZ1bmN0aW9uKCl7cmV0dXJuIHYoKXx8bjt9LG9zeDpmdW5jdGlvbigp e3JldHVybiB2KCl8fG07fSxsaW51eDpmdW5jdGlvbigpe3JldHVybiB2KCl8fG87 fSxpcGhvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdigpfHxyO30sbW9iaWxlOmZ1bmN0 aW9uKCl7cmV0dXJuIHYoKXx8KHJ8fHN8fHB8fHUpO30sbmF0aXZlQXBwOmZ1bmN0 aW9uKCl7cmV0dXJuIHYoKXx8dDt9LGFuZHJvaWQ6ZnVuY3Rpb24oKXtyZXR1cm4g digpfHxwO30saXBhZDpmdW5jdGlvbigpe3JldHVybiB2KCl8fHM7fX07ZS5leHBv cnRzPXc7fSk7Cl9fZCgic2RrLmdldENvbnRleHRUeXBlIixbIlVzZXJBZ2VudCIs InNkay5SdW50aW1lIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ1Vz ZXJBZ2VudCcpLGg9Yignc2RrLlJ1bnRpbWUnKTtmdW5jdGlvbiBpKCl7aWYoZy5u YXRpdmVBcHAoKSlyZXR1cm4gMztpZihnLm1vYmlsZSgpKXJldHVybiAyO2lmKGgu aXNFbnZpcm9ubWVudChoLkVOVklST05NRU5UUy5DQU5WQVMpKXJldHVybiA1O3Jl dHVybiAxO31lLmV4cG9ydHM9aTt9KTsKX19kKCJMb2ciLFsic3ByaW50ZiJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdzcHJpbnRmJyksaD17REVCVUc6 MyxJTkZPOjIsV0FSTklORzoxLEVSUk9SOjB9O2Z1bmN0aW9uIGkoayxsKXt2YXIg bT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMiksbj1nLmFw cGx5KG51bGwsbSksbz13aW5kb3cuY29uc29sZTtpZihvJiZqLmxldmVsPj1rKW9b bCBpbiBvP2w6J2xvZyddKG4pO312YXIgaj17bGV2ZWw6LTEsTGV2ZWw6aCxkZWJ1 ZzpFUzUoaSwnYmluZCcsdHJ1ZSxudWxsLGguREVCVUcsJ2RlYnVnJyksaW5mbzpF UzUoaSwnYmluZCcsdHJ1ZSxudWxsLGguSU5GTywnZGVidWcnKSx3YXJuOkVTNShp LCdiaW5kJyx0cnVlLG51bGwsaC5XQVJOSU5HLCdkZWJ1ZycpLGVycm9yOkVTNShp LCdiaW5kJyx0cnVlLG51bGwsaC5FUlJPUiwnZGVidWcnKX07ZS5leHBvcnRzPWo7 fSk7Cl9fZCgiQmFzZTY0IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1 dnd4eXowMTIzNDU2Nzg5Ky8nO2Z1bmN0aW9uIGgobCl7bD0obC5jaGFyQ29kZUF0 KDApPDwxNil8KGwuY2hhckNvZGVBdCgxKTw8OCl8bC5jaGFyQ29kZUF0KDIpO3Jl dHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGcuY2hhckNvZGVBdChsPj4+MTgpLGcu Y2hhckNvZGVBdCgobD4+PjEyKSY2MyksZy5jaGFyQ29kZUF0KChsPj4+NikmNjMp LGcuY2hhckNvZGVBdChsJjYzKSk7fXZhciBpPSc+X19fPzQ1Njc4OTo7PD1fX19f X19fJysnXDBcMVwyXDNcNFw1XDZcN1xiXHRcblwxM1xmXHJcMTZcMTdcMjBcMjFc MjJcMjNcMjRcMjVcMjZcMjdcMzBcMzEnKydfX19fX19cMzJcMzNcMzRcMzVcMzZc MzcgISIjJCUmXCcoKSorLC0uLzAxMjMnO2Z1bmN0aW9uIGoobCl7bD0oaS5jaGFy Q29kZUF0KGwuY2hhckNvZGVBdCgwKS00Myk8PDE4KXwoaS5jaGFyQ29kZUF0KGwu Y2hhckNvZGVBdCgxKS00Myk8PDEyKXwoaS5jaGFyQ29kZUF0KGwuY2hhckNvZGVB dCgyKS00Myk8PDYpfGkuY2hhckNvZGVBdChsLmNoYXJDb2RlQXQoMyktNDMpO3Jl dHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGw+Pj4xNiwobD4+PjgpJjI1NSxsJjI1 NSk7fXZhciBrPXtlbmNvZGU6ZnVuY3Rpb24obCl7bD11bmVzY2FwZShlbmNvZGVV UkkobCkpO3ZhciBtPShsLmxlbmd0aCsyKSUzO2w9KGwrJ1wwXDAnLnNsaWNlKG0p KS5yZXBsYWNlKC9bXHNcU117M30vZyxoKTtyZXR1cm4gbC5zbGljZSgwLGwubGVu Z3RoK20tMikrJz09Jy5zbGljZShtKTt9LGRlY29kZTpmdW5jdGlvbihsKXtsPWwu cmVwbGFjZSgvW15BLVphLXowLTkrXC9dL2csJycpO3ZhciBtPShsLmxlbmd0aCsz KSYzO2w9KGwrJ0FBQScuc2xpY2UobSkpLnJlcGxhY2UoLy4uLi4vZyxqKTtsPWwu c2xpY2UoMCxsLmxlbmd0aCttLTMpO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9u ZW50KGVzY2FwZShsKSk7fWNhdGNoKG4pe3Rocm93IG5ldyBFcnJvcignTm90IHZh bGlkIFVURi04Jyk7fX0sZW5jb2RlT2JqZWN0OmZ1bmN0aW9uKGwpe3JldHVybiBr LmVuY29kZShFUzUoJ0pTT04nLCdzdHJpbmdpZnknLGZhbHNlLGwpKTt9LGRlY29k ZU9iamVjdDpmdW5jdGlvbihsKXtyZXR1cm4gRVM1KCdKU09OJywncGFyc2UnLGZh bHNlLGsuZGVjb2RlKGwpKTt9LGVuY29kZU51bXM6ZnVuY3Rpb24obCl7cmV0dXJu IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLEVTNShsLCdtYXAnLHRy dWUsZnVuY3Rpb24obSl7cmV0dXJuIGcuY2hhckNvZGVBdCgobXwtKG0+NjMpKSYt KG0+MCkmNjMpO30pKTt9fTtlLmV4cG9ydHM9azt9KTsKX19kKCJzZGsuU2lnbmVk UmVxdWVzdCIsWyJCYXNlNjQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 YignQmFzZTY0Jyk7ZnVuY3Rpb24gaChqKXtpZighailyZXR1cm4gbnVsbDt2YXIg az1qLnNwbGl0KCcuJywyKVsxXS5yZXBsYWNlKC9cLS9nLCcrJykucmVwbGFjZSgv XF8vZywnLycpO3JldHVybiBnLmRlY29kZU9iamVjdChrKTt9dmFyIGk9e3BhcnNl Omh9O2UuZXhwb3J0cz1pO30pOwpfX2QoIlVybE1hcCIsWyJVcmxNYXBDb25maWci XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignVXJsTWFwQ29uZmlnJyks aD17cmVzb2x2ZTpmdW5jdGlvbihpLGope3ZhciBrPXR5cGVvZiBqPT0ndW5kZWZp bmVkJz9sb2NhdGlvbi5wcm90b2NvbC5yZXBsYWNlKCc6JywnJyk6aj8naHR0cHMn OidodHRwJztpZihpIGluIGcpcmV0dXJuIGsrJzovLycrZ1tpXTtpZih0eXBlb2Yg aj09J3VuZGVmaW5lZCcmJmkrJ18nK2sgaW4gZylyZXR1cm4gaysnOi8vJytnW2kr J18nK2tdO2lmKGohPT10cnVlJiZpKydfaHR0cCcgaW4gZylyZXR1cm4gJ2h0dHA6 Ly8nK2dbaSsnX2h0dHAnXTtpZihqIT09ZmFsc2UmJmkrJ19odHRwcycgaW4gZyly ZXR1cm4gJ2h0dHBzOi8vJytnW2krJ19odHRwcyddO319O2UuZXhwb3J0cz1oO30p OwpfX2QoIlVSTCIsWyJBc3NlcnQiLCJjb3B5UHJvcGVydGllcyIsIlF1ZXJ5U3Ry aW5nIiwiTG9nIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0Fzc2Vy dCcpLGg9YignY29weVByb3BlcnRpZXMnKSxpPWIoJ1F1ZXJ5U3RyaW5nJyksaj1i KCdMb2cnKSxrPW5ldyBSZWdFeHAoJygnKycoKChcXHcrKTopPy8vKScrJyguKj9A KT8nKycoW15+Lz8jOl0rKScrJyg6KFxcZCspKT8nKycpPycrJyhbXlxcPyQjXSsp PycrJyhcXD8oW14kI10rKSk/JysnKCMoW14kXSspKT8nKSxsPS9bXDBcXF0vLG09 L1teXHdcLVwuLDtcLz86QD0mJSMkfishKidcW1xdKCldKy9nLG49L15bYS16MC05 Ll1bYS16MC05XC1cLl0rW2EtejAtOS5dJC8sbz0vXC5mYWNlYm9va1wuY29tJC87 ZnVuY3Rpb24gcChxKXtnLmlzU3RyaW5nKHEsJ1RoZSBwYXNzZWQgYXJndW1lbnQg d2FzIG9mIGludmFsaWQgdHlwZS4nKTtpZihsLnRlc3QocSkpdGhyb3cgbmV3IFVS SUVycm9yKCdUaGUgcGFzc2VkIGFyZ3VtZW50IGNvdWxkIG5vdCBiZSBwYXJzZWQg YXMgYSB1cmwuJyk7aWYodGhpcyBpbnN0YW5jZW9mIHA9PT1mYWxzZSlyZXR1cm4g bmV3IHAocSk7dmFyIHI9cS5yZXBsYWNlKG0sZnVuY3Rpb24odCl7ai53YXJuKCdF c2NhcGluZyB1bmVzY2FwZWQgY2hhcmFjdGVyIFxceCVzIGZyb20gIiVzIicsdC5j aGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSxxKTtyZXR1cm4gZW5jb2RlVVJJQ29t cG9uZW50KHQpO30pLm1hdGNoKGspO2lmKCFxfHwhcil0aHJvdyBuZXcgVVJJRXJy b3IoJ1RoZSBwYXNzZWQgYXJndW1lbnQgY291bGQgbm90IGJlIHBhcnNlZCBhcyBh IHVybC4nKTt2YXIgcz0hIWxvY2F0aW9uLmhvc3RuYW1lO3RoaXMuc2V0UHJvdG9j b2wocls0XXx8KHM/bG9jYXRpb24ucHJvdG9jb2wucmVwbGFjZSgvOi8sJycpOicn KSk7dGhpcy5zZXREb21haW4ocls2XXx8bG9jYXRpb24uaG9zdG5hbWUpO3RoaXMu c2V0UG9ydChyWzhdfHwocyYmIXJbNl0/bG9jYXRpb24ucG9ydDonJykpO3RoaXMu c2V0UGF0aChyWzldfHwnJyk7dGhpcy5zZXRTZWFyY2goclsxMV18fCcnKTt0aGlz LnNldEZyYWdtZW50KHJbMTNdfHwnJyk7aWYodGhpcy5fcGF0aC5zdWJzdHJpbmco MCwxKSE9Jy8nKXRoaXMuX3BhdGg9Jy8nK3RoaXMuX3BhdGg7aWYodGhpcy5fZG9t YWluJiYhbi50ZXN0KGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLl9kb21haW4udG9M b3dlckNhc2UoKSkpKXtqLmVycm9yKCdJbnZhbGlkIGNoYXJhY3RlcnMgZm91bmQg aW4gZG9tYWluIG5hbWU6ICVzJyx0aGlzLl9kb21haW4pO3Rocm93IG5ldyBVUklF cnJvcignRG9tYWluIGNvbnRhaW5lZCBpbnZhbGlkIGNoYXJhY3RlcnMuJyk7fX1o KHAucHJvdG90eXBlLHtjb25zdHJ1Y3RvcjpwLGdldFByb3RvY29sOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX3Byb3RvY29sO30sc2V0UHJvdG9jb2w6ZnVuY3Rpb24o cSl7dGhpcy5fcHJvdG9jb2w9cTtyZXR1cm4gdGhpczt9LGdldERvbWFpbjpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9kb21haW47fSxzZXREb21haW46ZnVuY3Rpb24o cSl7dGhpcy5fZG9tYWluPXE7cmV0dXJuIHRoaXM7fSxnZXRQb3J0OmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX3BvcnQ7fSxzZXRQb3J0OmZ1bmN0aW9uKHEpe3RoaXMu X3BvcnQ9cTtyZXR1cm4gdGhpczt9LGdldFBhdGg6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fcGF0aDt9LHNldFBhdGg6ZnVuY3Rpb24ocSl7dGhpcy5fcGF0aD1xO3Jl dHVybiB0aGlzO30sZ2V0U2VhcmNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nl YXJjaDt9LHNldFNlYXJjaDpmdW5jdGlvbihxKXt0aGlzLl9zZWFyY2g9cTtyZXR1 cm4gdGhpczt9LGdldEZyYWdtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zy YWdtZW50O30sc2V0RnJhZ21lbnQ6ZnVuY3Rpb24ocSl7dGhpcy5fZnJhZ21lbnQ9 cTtyZXR1cm4gdGhpczt9LGdldFBhcnNlZFNlYXJjaDpmdW5jdGlvbigpe3JldHVy biBpLmRlY29kZSh0aGlzLl9zZWFyY2gpO30sZ2V0UGFyc2VkRnJhZ21lbnQ6ZnVu Y3Rpb24oKXtyZXR1cm4gaS5kZWNvZGUodGhpcy5fZnJhZ21lbnQpO30saXNGYWNl Ym9va1VSTDpmdW5jdGlvbigpe3JldHVybiBvLnRlc3QodGhpcy5fZG9tYWluKTt9 LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICh0aGlzLl9wcm90b2NvbD90aGlz Ll9wcm90b2NvbCsnOic6JycpKyh0aGlzLl9kb21haW4/Jy8vJyt0aGlzLl9kb21h aW46JycpKyh0aGlzLl9wb3J0Pyc6Jyt0aGlzLl9wb3J0OicnKSt0aGlzLl9wYXRo Kyh0aGlzLl9zZWFyY2g/Jz8nK3RoaXMuX3NlYXJjaDonJykrKHRoaXMuX2ZyYWdt ZW50PycjJyt0aGlzLl9mcmFnbWVudDonJyk7fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMudG9TdHJpbmcoKTt9fSk7aChwLHtnZXRDdXJyZW50OmZ1bmN0 aW9uKCl7cmV0dXJuIG5ldyBwKGxvY2F0aW9uLmhyZWYpO30sZ2V0UmVmZXJyZXI6 ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQucmVmZXJyZXI/bmV3IHAoZG9jdW1l bnQucmVmZXJyZXIpOm51bGw7fX0pO2UuZXhwb3J0cz1wO30pOwpfX2QoInNkay5k b21SZWFkeSIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnLGg9InJlYWR5 U3RhdGUiIGluIGRvY3VtZW50Py9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1l bnQucmVhZHlTdGF0ZSk6ISFkb2N1bWVudC5ib2R5O2Z1bmN0aW9uIGkoKXtpZigh ZylyZXR1cm47dmFyIGw7d2hpbGUobD1nLnNoaWZ0KCkpbCgpO2c9bnVsbDt9ZnVu Y3Rpb24gaihsKXtpZihnKXtnLnB1c2gobCk7cmV0dXJuO31lbHNlIGwoKTt9aWYo IWgpe2c9W107aWYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcil7ZG9jdW1lbnQu YWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsaSxmYWxzZSk7d2lu ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGksZmFsc2UpO31lbHNlIGlmKGRv Y3VtZW50LmF0dGFjaEV2ZW50KXtkb2N1bWVudC5hdHRhY2hFdmVudCgnb25yZWFk eXN0YXRlY2hhbmdlJyxpKTt3aW5kb3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsaSk7 fWlmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmd2luZG93PT13 aW5kb3cudG9wKXt2YXIgaz1mdW5jdGlvbigpe3RyeXtkb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQuZG9TY3JvbGwoJ2xlZnQnKTt9Y2F0Y2gobCl7c2V0VGltZW91dChr LDApO3JldHVybjt9aSgpO307aygpO319ZS5leHBvcnRzPWo7fSwzKTsKX19kKCJz ZGsuQ29udGVudCIsWyJzZGsuZG9tUmVhZHkiLCJMb2ciLCJVc2VyQWdlbnQiXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yignc2RrLmRvbVJlYWR5JyksaD1i KCdMb2cnKSxpPWIoJ1VzZXJBZ2VudCcpLGosayxsPXthcHBlbmQ6ZnVuY3Rpb24o bSxuKXtpZighbilpZighail7aj1uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdm Yi1yb290Jyk7aWYoIW4pe2gud2FybignVGhlICJmYi1yb290IiBkaXYgaGFzIG5v dCBiZWVuIGNyZWF0ZWQsIGF1dG8tY3JlYXRpbmcnKTtqPW49ZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgnZGl2Jyk7bi5pZD0nZmItcm9vdCc7aWYoaS5pZSgpfHwhZG9j dW1lbnQuYm9keSl7ZyhmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp bGQobik7fSk7fWVsc2UgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKTt9bi5j bGFzc05hbWUrPScgZmJfcmVzZXQnO31lbHNlIG49ajtpZih0eXBlb2YgbT09J3N0 cmluZycpe3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO24uYXBw ZW5kQ2hpbGQobykuaW5uZXJIVE1MPW07cmV0dXJuIG87fWVsc2UgcmV0dXJuIG4u YXBwZW5kQ2hpbGQobSk7fSxhcHBlbmRIaWRkZW46ZnVuY3Rpb24obSl7aWYoIW4p e3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLG89bi5zdHlsZTtv LnBvc2l0aW9uPSdhYnNvbHV0ZSc7by50b3A9Jy0xMDAwMHB4JztvLndpZHRoPW8u aGVpZ2h0PTA7bj1sLmFwcGVuZChuKTt9cmV0dXJuIGwuYXBwZW5kKG0sbik7fSxz dWJtaXRUb1RhcmdldDpmdW5jdGlvbihtLG4pe3ZhciBvPWRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoJ2Zvcm0nKTtvLmFjdGlvbj1tLnVybDtvLnRhcmdldD1tLnRhcmdl dDtvLm1ldGhvZD0obik/J0dFVCc6J1BPU1QnO2wuYXBwZW5kSGlkZGVuKG8pO2Zv cih2YXIgcCBpbiBtLnBhcmFtcylpZihtLnBhcmFtcy5oYXNPd25Qcm9wZXJ0eShw KSl7dmFyIHE9bS5wYXJhbXNbcF07aWYocSE9PW51bGwmJnEhPT11bmRlZmluZWQp e3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7ci5uYW1lPXA7 ci52YWx1ZT1xO28uYXBwZW5kQ2hpbGQocik7fX1vLnN1Ym1pdCgpO28ucGFyZW50 Tm9kZS5yZW1vdmVDaGlsZChvKTt9fTtlLmV4cG9ydHM9bDt9KTsKX19kKCJzZGsu RXZlbnQiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz17c3Vic2NyaWJl cnM6ZnVuY3Rpb24oKXtpZighdGhpcy5fc3Vic2NyaWJlcnNNYXApdGhpcy5fc3Vi c2NyaWJlcnNNYXA9e307cmV0dXJuIHRoaXMuX3N1YnNjcmliZXJzTWFwO30sc3Vi c2NyaWJlOmZ1bmN0aW9uKGgsaSl7dmFyIGo9dGhpcy5zdWJzY3JpYmVycygpO2lm KCFqW2hdKXtqW2hdPVtpXTt9ZWxzZSBqW2hdLnB1c2goaSk7fSx1bnN1YnNjcmli ZTpmdW5jdGlvbihoLGkpe3ZhciBqPXRoaXMuc3Vic2NyaWJlcnMoKVtoXTtpZihq KUVTNShqLCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKGssbCl7aWYoaz09aSlqW2xd PW51bGw7fSk7fSxtb25pdG9yOmZ1bmN0aW9uKGgsaSl7aWYoIWkoKSl7dmFyIGo9 dGhpcyxrPWZ1bmN0aW9uKCl7aWYoaS5hcHBseShpLGFyZ3VtZW50cykpai51bnN1 YnNjcmliZShoLGspO307dGhpcy5zdWJzY3JpYmUoaCxrKTt9fSxjbGVhcjpmdW5j dGlvbihoKXtkZWxldGUgdGhpcy5zdWJzY3JpYmVycygpW2hdO30sZmlyZTpmdW5j dGlvbigpe3ZhciBoPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50 cyksaT1oLnNoaWZ0KCksaj10aGlzLnN1YnNjcmliZXJzKClbaV07aWYoailFUzUo aiwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlvbihrKXtpZihrKWsuYXBwbHkodGhpcyxo KTt9KTt9fTtlLmV4cG9ydHM9Zzt9KTsKX19kKCJRdWV1ZSIsWyJjb3B5UHJvcGVy dGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdjb3B5UHJvcGVy dGllcycpLGg9e307ZnVuY3Rpb24gaShqKXt0aGlzLl9vcHRzPWcoe2ludGVydmFs OjAscHJvY2Vzc29yOm51bGx9LGopO3RoaXMuX3F1ZXVlPVtdO3RoaXMuX3N0b3Bw ZWQ9dHJ1ZTt9ZyhpLnByb3RvdHlwZSx7X2Rpc3BhdGNoOmZ1bmN0aW9uKGope2lm KHRoaXMuX3N0b3BwZWR8fHRoaXMuX3F1ZXVlLmxlbmd0aD09PTApcmV0dXJuO2lm KCF0aGlzLl9vcHRzLnByb2Nlc3Nvcil7dGhpcy5fc3RvcHBlZD10cnVlO3Rocm93 IG5ldyBFcnJvcignTm8gcHJvY2Vzc29yIGF2YWlsYWJsZScpO31pZih0aGlzLl9v cHRzLmludGVydmFsKXt0aGlzLl9vcHRzLnByb2Nlc3Nvci5jYWxsKHRoaXMsdGhp cy5fcXVldWUuc2hpZnQoKSk7dGhpcy5fdGltZW91dD1zZXRUaW1lb3V0KEVTNSh0 aGlzLl9kaXNwYXRjaCwnYmluZCcsdHJ1ZSx0aGlzKSx0aGlzLl9vcHRzLmludGVy dmFsKTt9ZWxzZSB3aGlsZSh0aGlzLl9xdWV1ZS5sZW5ndGgpdGhpcy5fb3B0cy5w cm9jZXNzb3IuY2FsbCh0aGlzLHRoaXMuX3F1ZXVlLnNoaWZ0KCkpO30sZW5xdWV1 ZTpmdW5jdGlvbihqKXtpZih0aGlzLl9vcHRzLnByb2Nlc3NvciYmIXRoaXMuX3N0 b3BwZWQpe3RoaXMuX29wdHMucHJvY2Vzc29yLmNhbGwodGhpcyxqKTt9ZWxzZSB0 aGlzLl9xdWV1ZS5wdXNoKGopO3JldHVybiB0aGlzO30sc3RhcnQ6ZnVuY3Rpb24o ail7aWYoail0aGlzLl9vcHRzLnByb2Nlc3Nvcj1qO3RoaXMuX3N0b3BwZWQ9ZmFs c2U7dGhpcy5fZGlzcGF0Y2goKTtyZXR1cm4gdGhpczt9LGRpc3BhdGNoOmZ1bmN0 aW9uKCl7dGhpcy5fZGlzcGF0Y2godHJ1ZSk7fSxzdG9wOmZ1bmN0aW9uKGope3Ro aXMuX3N0b3BwZWQ9dHJ1ZTtpZihqKWNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0 KTtyZXR1cm4gdGhpczt9LG1lcmdlOmZ1bmN0aW9uKGosayl7dGhpcy5fcXVldWVb az8ndW5zaGlmdCc6J3B1c2gnXS5hcHBseSh0aGlzLl9xdWV1ZSxqLl9xdWV1ZSk7 ai5fcXVldWU9W107dGhpcy5fZGlzcGF0Y2goKTtyZXR1cm4gdGhpczt9LGdldExl bmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9xdWV1ZS5sZW5ndGg7fX0pO2co aSx7Z2V0OmZ1bmN0aW9uKGosayl7dmFyIGw7aWYoaiBpbiBoKXtsPWhbal07fWVs c2UgbD1oW2pdPW5ldyBpKGspO3JldHVybiBsO30sZXhpc3RzOmZ1bmN0aW9uKGop e3JldHVybiBqIGluIGg7fSxyZW1vdmU6ZnVuY3Rpb24oail7cmV0dXJuIGRlbGV0 ZSBoW2pdO319KTtlLmV4cG9ydHM9aTt9KTsKX19kKCJyZXNvbHZlVVJJIixbXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoKXtpZighaClyZXR1cm4g d2luZG93LmxvY2F0aW9uLmhyZWY7aD1oLnJlcGxhY2UoLyYvZywnJmFtcDsnKS5y ZXBsYWNlKC8iL2csJyZxdW90OycpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoJ2RpdicpO2kuaW5uZXJIVE1MPSc8YSBocmVmPSInK2grJyI+PC9hPic7cmV0 dXJuIGkuZmlyc3RDaGlsZC5ocmVmO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJyZXNv bHZlV2luZG93IixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyho KXt2YXIgaT13aW5kb3csaj1oLnNwbGl0KCcuJyk7dHJ5e2Zvcih2YXIgbD0wO2w8 ai5sZW5ndGg7bCsrKXt2YXIgbT1qW2xdLG49L15mcmFtZXNcW1snIl0/KFthLXpB LVowLTlcLV9dKylbJyJdP1xdJC8uZXhlYyhtKTtpZihuKXtpPWkuZnJhbWVzW25b MV1dO31lbHNlIGlmKG09PT0nb3BlbmVyJ3x8bT09PSdwYXJlbnQnfHxtPT09J3Rv cCcpe2k9aVttXTt9ZWxzZSByZXR1cm4gbnVsbDt9fWNhdGNoKGspe3JldHVybiBu dWxsO31yZXR1cm4gaTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiSlNPTlJQQyIsWyJj b3B5UHJvcGVydGllcyIsIkxvZyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIg Zz1iKCdjb3B5UHJvcGVydGllcycpLGg9YignTG9nJyk7ZnVuY3Rpb24gaShqKXt0 aGlzLl9jb3VudGVyPTA7dGhpcy5fY2FsbGJhY2tzPXt9O3RoaXMucmVtb3RlPXt9 O3RoaXMubG9jYWw9e307dGhpcy5fd3JpdGU9ajt9ZyhpLnByb3RvdHlwZSx7c3R1 YjpmdW5jdGlvbihqKXt0aGlzLnJlbW90ZVtqXT1FUzUoZnVuY3Rpb24oKXt2YXIg az1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGw9e2pzb25y cGM6JzIuMCcsbWV0aG9kOmp9O2lmKHR5cGVvZiBrW2subGVuZ3RoLTFdPT0nZnVu Y3Rpb24nKXtsLmlkPSsrdGhpcy5fY291bnRlcjt0aGlzLl9jYWxsYmFja3NbbC5p ZF09ay5wb3AoKTt9bC5wYXJhbXM9azt0aGlzLl93cml0ZShFUzUoJ0pTT04nLCdz dHJpbmdpZnknLGZhbHNlLGwpLHttZXRob2Q6an0pO30sJ2JpbmQnLHRydWUsdGhp cyk7fSxyZWFkOmZ1bmN0aW9uKGosayl7dmFyIGw9RVM1KCdKU09OJywncGFyc2Un LGZhbHNlLGopLG09bC5pZDtpZighbC5tZXRob2Qpe2lmKCF0aGlzLl9jYWxsYmFj a3NbbV0pe2gud2FybignQ291bGQgbm90IGZpbmQgY2FsbGJhY2sgJXMnLG0pO3Jl dHVybjt9dmFyIG49dGhpcy5fY2FsbGJhY2tzW21dO2RlbGV0ZSB0aGlzLl9jYWxs YmFja3NbbV07ZGVsZXRlIGwuaWQ7ZGVsZXRlIGwuanNvbnJwYztuKGwpO3JldHVy bjt9dmFyIG89dGhpcyxwPXRoaXMubG9jYWxbbC5tZXRob2RdLHE7aWYobSl7cT1m dW5jdGlvbih0LHUpe3ZhciB2PXtqc29ucnBjOicyLjAnLGlkOm19O3ZbdF09dTtz ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5fd3JpdGUoRVM1KCdKU09OJywnc3RyaW5n aWZ5JyxmYWxzZSx2KSxrKTt9LDApO307fWVsc2UgcT1mdW5jdGlvbigpe307aWYo IXApe2guZXJyb3IoJ01ldGhvZCAiJXMiIGhhcyBub3QgYmVlbiBkZWZpbmVkJyxs Lm1ldGhvZCk7cSgnZXJyb3InLHtjb2RlOi0zMjYwMSxtZXNzYWdlOidNZXRob2Qg bm90IGZvdW5kJyxkYXRhOmwubWV0aG9kfSk7cmV0dXJuO31sLnBhcmFtcy5wdXNo KEVTNShxLCdiaW5kJyx0cnVlLG51bGwsJ3Jlc3VsdCcpKTtsLnBhcmFtcy5wdXNo KEVTNShxLCdiaW5kJyx0cnVlLG51bGwsJ2Vycm9yJykpO3RyeXt2YXIgcz1wLmFw cGx5KGt8fG51bGwsbC5wYXJhbXMpO2lmKHR5cGVvZiBzIT09J3VuZGVmaW5lZCcp cSgncmVzdWx0JyxzKTt9Y2F0Y2gocil7aC5lcnJvcignSW52b2thdGlvbiBvZiBS UEMgbWV0aG9kICVzIHJlc3VsdGVkIGluIHRoZSBlcnJvcjogJXMnLGwubWV0aG9k LHIubWVzc2FnZSk7cSgnZXJyb3InLHtjb2RlOi0zMjYwMyxtZXNzYWdlOidJbnRl cm5hbCBlcnJvcicsZGF0YTpyLm1lc3NhZ2V9KTt9fX0pO2UuZXhwb3J0cz1pO30p OwpfX2QoInNkay5SUEMiLFsiQXNzZXJ0IiwiSlNPTlJQQyIsIlF1ZXVlIl0sZnVu Y3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0Fzc2VydCcpLGg9YignSlNPTlJQ QycpLGk9YignUXVldWUnKSxqPW5ldyBpKCksaz1uZXcgaChmdW5jdGlvbihtKXtq LmVucXVldWUobSk7fSksbD17bG9jYWw6ay5sb2NhbCxyZW1vdGU6ay5yZW1vdGUs c3R1YjpFUzUoay5zdHViLCdiaW5kJyx0cnVlLGspLHNldEluUXVldWU6ZnVuY3Rp b24obSl7Zy5pc0luc3RhbmNlT2YoaSxtKTttLnN0YXJ0KGZ1bmN0aW9uKG4pe2su cmVhZChuKTt9KTt9LGdldE91dFF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIGo7fX07 ZS5leHBvcnRzPWw7fSk7Cl9fZCgiZW1wdHlGdW5jdGlvbiIsWyJjb3B5UHJvcGVy dGllcyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdjb3B5UHJvcGVy dGllcycpO2Z1bmN0aW9uIGgoail7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGo7 fTt9ZnVuY3Rpb24gaSgpe31nKGkse3RoYXRSZXR1cm5zOmgsdGhhdFJldHVybnNG YWxzZTpoKGZhbHNlKSx0aGF0UmV0dXJuc1RydWU6aCh0cnVlKSx0aGF0UmV0dXJu c051bGw6aChudWxsKSx0aGF0UmV0dXJuc1RoaXM6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpczt9LHRoYXRSZXR1cm5zQXJndW1lbnQ6ZnVuY3Rpb24oail7cmV0dXJuIGo7 fX0pO2UuZXhwb3J0cz1pO30pOwpfX2QoIkZsYXNoIixbIkRPTVdyYXBwZXIiLCJR dWVyeVN0cmluZyIsIlVzZXJBZ2VudCIsImNvcHlQcm9wZXJ0aWVzIiwiZ3VpZCJd LGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET01XcmFwcGVyJyksaD1i KCdRdWVyeVN0cmluZycpLGk9YignVXNlckFnZW50Jyksaj1iKCdjb3B5UHJvcGVy dGllcycpLGs9YignZ3VpZCcpLGw9e30sbSxuPWcuZ2V0V2luZG93KCkuZG9jdW1l bnQ7ZnVuY3Rpb24gbyh0KXt2YXIgdT1uLmdldEVsZW1lbnRCeUlkKHQpO2lmKHUp dS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHUpO2RlbGV0ZSBsW3RdO31mdW5jdGlv biBwKCl7Zm9yKHZhciB0IGluIGwpaWYobC5oYXNPd25Qcm9wZXJ0eSh0KSlvKHQp O31mdW5jdGlvbiBxKHQpe3JldHVybiB0LnJlcGxhY2UoL1xkKy9nLGZ1bmN0aW9u KHUpe3JldHVybiAnMDAwJy5zdWJzdHJpbmcodS5sZW5ndGgpK3U7fSk7fWZ1bmN0 aW9uIHIodCl7aWYoIW0pe2lmKGkuaWUoKT49OSl3aW5kb3cuYXR0YWNoRXZlbnQo J29udW5sb2FkJyxwKTttPXRydWU7fWxbdF09dDt9dmFyIHM9e2VtYmVkOmZ1bmN0 aW9uKHQsdSx2LHcpe3ZhciB4PWsoKTt0PWVuY29kZVVSSSh0KTt2PWooe2FsbG93 c2NyaXB0YWNjZXNzOidhbHdheXMnLGZsYXNodmFyczp3LG1vdmllOnR9LHZ8fHt9 KTtpZih0eXBlb2Ygdi5mbGFzaHZhcnM9PSdvYmplY3QnKXYuZmxhc2h2YXJzPWgu ZW5jb2RlKHYuZmxhc2h2YXJzKTt2YXIgeT1bXTtmb3IodmFyIHogaW4gdilpZih2 Lmhhc093blByb3BlcnR5KHopJiZ2W3pdKXkucHVzaCgnPHBhcmFtIG5hbWU9Iicr ZW5jb2RlVVJJKHopKyciIHZhbHVlPSInK2VuY29kZVVSSSh2W3pdKSsnIj4nKTt2 YXIgYWE9bi5jcmVhdGVFbGVtZW50KCdkaXYnKSxiYT0nPG9iamVjdCAnKyhpLmll KCk/J2NsYXNzaWQ9ImNsc2lkOmQyN2NkYjZlLWFlNmQtMTFjZi05NmI4LTQ0NDU1 MzU0MDAwMCIgJzondHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gi JykrJ2RhdGE9IicrdCsnIiAnKydpZD0iJyt4KyciPicreS5qb2luKCcnKSsnPC9v YmplY3Q+JzthYS5pbm5lckhUTUw9YmE7dmFyIGNhPXUuYXBwZW5kQ2hpbGQoYWEu Zmlyc3RDaGlsZCk7cih4KTtyZXR1cm4gY2E7fSxyZW1vdmU6byxnZXRWZXJzaW9u OmZ1bmN0aW9uKCl7dmFyIHQ9J1Nob2Nrd2F2ZSBGbGFzaCcsdT0nYXBwbGljYXRp b24veC1zaG9ja3dhdmUtZmxhc2gnLHY9J1Nob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2 ZUZsYXNoJyx3O2lmKG5hdmlnYXRvci5wbHVnaW5zJiZ0eXBlb2YgbmF2aWdhdG9y LnBsdWdpbnNbdF09PSdvYmplY3QnKXt2YXIgeD1uYXZpZ2F0b3IucGx1Z2luc1t0 XS5kZXNjcmlwdGlvbjtpZih4JiZuYXZpZ2F0b3IubWltZVR5cGVzJiZuYXZpZ2F0 b3IubWltZVR5cGVzW3VdJiZuYXZpZ2F0b3IubWltZVR5cGVzW3VdLmVuYWJsZWRQ bHVnaW4pdz14Lm1hdGNoKC9cZCsvZyk7fWlmKCF3KXRyeXt3PShuZXcgQWN0aXZl WE9iamVjdCh2KSkuR2V0VmFyaWFibGUoJyR2ZXJzaW9uJykubWF0Y2goLyhcZCsp LChcZCspLChcZCspLChcZCspLyk7dz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs bCh3LDEpO31jYXRjaCh5KXt9cmV0dXJuIHc7fSxjaGVja01pblZlcnNpb246ZnVu Y3Rpb24odCl7dmFyIHU9cy5nZXRWZXJzaW9uKCk7aWYoIXUpcmV0dXJuIGZhbHNl O3JldHVybiBxKHUuam9pbignLicpKT49cSh0KTt9LGlzQXZhaWxhYmxlOmZ1bmN0 aW9uKCl7cmV0dXJuICEhcy5nZXRWZXJzaW9uKCk7fX07ZS5leHBvcnRzPXM7fSk7 Cl9fZCgiZG90QWNjZXNzIixbXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rp b24gZyhoLGksail7dmFyIGs9aS5zcGxpdCgnLicpO2Rve3ZhciBsPWsuc2hpZnQo KTtoPWhbbF18fGomJihoW2xdPXt9KTt9d2hpbGUoay5sZW5ndGgmJmgpO3JldHVy biBoO31lLmV4cG9ydHM9Zzt9KTsKX19kKCJHbG9iYWxDYWxsYmFjayIsWyJET01X cmFwcGVyIiwiZG90QWNjZXNzIiwiZ3VpZCIsIndyYXBGdW5jdGlvbiJdLGZ1bmN0 aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdET01XcmFwcGVyJyksaD1iKCdkb3RB Y2Nlc3MnKSxpPWIoJ2d1aWQnKSxqPWIoJ3dyYXBGdW5jdGlvbicpLGssbCxtPXtz ZXRQcmVmaXg6ZnVuY3Rpb24obil7az1oKGcuZ2V0V2luZG93KCksbix0cnVlKTts PW47fSxjcmVhdGU6ZnVuY3Rpb24obixvKXtpZighayl0aGlzLnNldFByZWZpeCgn X19nbG9iYWxDYWxsYmFja3MnKTt2YXIgcD1pKCk7a1twXT1qKG4sJ2VudHJ5Jyxv fHwnR2xvYmFsQ2FsbGJhY2snKTtyZXR1cm4gbCsnLicrcDt9LHJlbW92ZTpmdW5j dGlvbihuKXt2YXIgbz1uLnN1YnN0cmluZyhsLmxlbmd0aCsxKTtkZWxldGUga1tv XTt9fTtlLmV4cG9ydHM9bTt9KTsKX19kKCJYRE0iLFsiRE9NRXZlbnRMaXN0ZW5l ciIsIkRPTVdyYXBwZXIiLCJlbXB0eUZ1bmN0aW9uIiwiRmxhc2giLCJHbG9iYWxD YWxsYmFjayIsImd1aWQiLCJMb2ciLCJVc2VyQWdlbnQiLCJ3cmFwRnVuY3Rpb24i XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignRE9NRXZlbnRMaXN0ZW5l cicpLGg9YignRE9NV3JhcHBlcicpLGk9YignZW1wdHlGdW5jdGlvbicpLGo9Yign Rmxhc2gnKSxrPWIoJ0dsb2JhbENhbGxiYWNrJyksbD1iKCdndWlkJyksbT1iKCdM b2cnKSxuPWIoJ1VzZXJBZ2VudCcpLG89Yignd3JhcEZ1bmN0aW9uJykscD17fSxx PXt0cmFuc3BvcnRzOltdfSxyPWguZ2V0V2luZG93KCk7ZnVuY3Rpb24gcyh1KXt2 YXIgdj17fSx3PXUubGVuZ3RoLHg9cS50cmFuc3BvcnRzO3doaWxlKHctLSl2W3Vb d11dPTE7dz14Lmxlbmd0aDt3aGlsZSh3LS0pe3ZhciB5PXhbd10sej1wW3ldO2lm KCF2W3ldJiZ6LmlzQXZhaWxhYmxlKCkpcmV0dXJuIHk7fX12YXIgdD17cmVnaXN0 ZXI6ZnVuY3Rpb24odSx2KXttLmRlYnVnKCdSZWdpc3RlcmluZyAlcyBhcyBYRE0g cHJvdmlkZXInLHUpO3EudHJhbnNwb3J0cy5wdXNoKHUpO3BbdV09djt9LGNyZWF0 ZTpmdW5jdGlvbih1KXtpZighdS53aGVuUmVhZHkmJiF1Lm9uTWVzc2FnZSl7bS5l cnJvcignQW4gaW5zdGFuY2Ugd2l0aG91dCB3aGVuUmVhZHkgb3Igb25NZXNzYWdl IG1ha2VzIG5vIHNlbnNlJyk7dGhyb3cgbmV3IEVycm9yKCdBbiBpbnN0YW5jZSB3 aXRob3V0IHdoZW5SZWFkeSBvciAnKydvbk1lc3NhZ2UgbWFrZXMgbm8gc2Vuc2Un KTt9aWYoIXUuY2hhbm5lbCl7bS53YXJuKCdNaXNzaW5nIGNoYW5uZWwgbmFtZSwg c2VsZWN0aW5nIGF0IHJhbmRvbScpO3UuY2hhbm5lbD1sKCk7fWlmKCF1LndoZW5S ZWFkeSl1LndoZW5SZWFkeT1pO2lmKCF1Lm9uTWVzc2FnZSl1Lm9uTWVzc2FnZT1p O3ZhciB2PXUudHJhbnNwb3J0fHxzKHUuYmxhY2tsaXN0fHxbXSksdz1wW3ZdO2lm KHcmJncuaXNBdmFpbGFibGUoKSl7bS5kZWJ1ZygnJXMgaXMgYXZhaWxhYmxlJyx2 KTt3LmluaXQodSk7cmV0dXJuIHY7fX19O3QucmVnaXN0ZXIoJ2ZyYWdtZW50Jywo ZnVuY3Rpb24oKXt2YXIgdT1mYWxzZSx2LHc9bG9jYXRpb24ucHJvdG9jb2wrJy8v Jytsb2NhdGlvbi5ob3N0O2Z1bmN0aW9uIHgoeSl7dmFyIHo9ZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgnaWZyYW1lJyk7ei5zcmM9J2phdmFzY3JpcHQ6ZmFsc2UnO3Zh ciBhYT1nLmFkZCh6LCdsb2FkJyxmdW5jdGlvbigpe2FhLnJlbW92ZSgpO3NldFRp bWVvdXQoZnVuY3Rpb24oKXt6LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoeik7fSw1 MDAwKTt9KTt2LmFwcGVuZENoaWxkKHopO3ouc3JjPXk7fXJldHVybiB7aXNBdmFp bGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZTt9LGluaXQ6ZnVuY3Rpb24oeSl7 bS5kZWJ1ZygnaW5pdCBmcmFnbWVudCcpO3ZhciB6PXtzZW5kOmZ1bmN0aW9uKGFh LGJhLGNhLGRhKXttLmRlYnVnKCdzZW5kaW5nIHRvOiAlcyAoJXMpJyxiYSt5LmNo YW5uZWxQYXRoLGRhKTt4KGJhK3kuY2hhbm5lbFBhdGgrYWErJyZ4ZF9yZWw9cGFy ZW50LnBhcmVudCZyZWxhdGlvbj1wYXJlbnQucGFyZW50JnhkX29yaWdpbj0nK2Vu Y29kZVVSSUNvbXBvbmVudCh3KSk7fX07aWYodSl7eS53aGVuUmVhZHkoeik7cmV0 dXJuO312PXkucm9vdDt1PXRydWU7eS53aGVuUmVhZHkoeik7fX07fSkoKSk7dC5y ZWdpc3RlcignZmxhc2gnLChmdW5jdGlvbigpe3ZhciB1PWZhbHNlLHYsdz1mYWxz ZSx4PTE1MDAwLHk7cmV0dXJuIHtpc0F2YWlsYWJsZTpmdW5jdGlvbigpe3JldHVy biBqLmNoZWNrTWluVmVyc2lvbignOC4wLjI0Jyk7fSxpbml0OmZ1bmN0aW9uKHop e20uZGVidWcoJ2luaXQgZmxhc2g6ICcrei5jaGFubmVsKTt2YXIgYWE9e3NlbmQ6 ZnVuY3Rpb24oZGEsZWEsZmEsZ2Epe20uZGVidWcoJ3NlbmRpbmcgdG86ICVzICgl cyknLGVhLGdhKTt2LnBvc3RNZXNzYWdlKGRhLGVhLGdhKTt9fTtpZih1KXt6Lndo ZW5SZWFkeShhYSk7cmV0dXJuO312YXIgYmE9ei5yb290LmFwcGVuZENoaWxkKHIu ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLGNhPWsuY3JlYXRlKGZ1bmN0 aW9uKCl7ay5yZW1vdmUoY2EpO2NsZWFyVGltZW91dCh5KTttLmluZm8oJ3hkbS5z d2YgY2FsbGVkIHRoZSBjYWxsYmFjaycpO3ZhciBkYT1rLmNyZWF0ZShmdW5jdGlv bihlYSxmYSl7ZWE9ZGVjb2RlVVJJQ29tcG9uZW50KGVhKTttLmRlYnVnKCdyZWNl aXZlZCBtZXNzYWdlICVzIGZyb20gJXMnLGVhLGZhKTt6Lm9uTWVzc2FnZShlYSxm YSk7fSwneGRtLnN3Zjpvbk1lc3NhZ2UnKTt2LmluaXQoei5jaGFubmVsLGRhKTt6 LndoZW5SZWFkeShhYSk7fSwneGRtLnN3Zjpsb2FkJyk7dj1qLmVtYmVkKHouZmxh c2hVcmwsYmEsbnVsbCx7cHJvdG9jb2w6bG9jYXRpb24ucHJvdG9jb2wucmVwbGFj ZSgnOicsJycpLGhvc3Q6bG9jYXRpb24uaG9zdCxjYWxsYmFjazpjYSxsb2c6d30p O3k9c2V0VGltZW91dChmdW5jdGlvbigpe20ud2FybignVGhlIEZsYXNoIGNvbXBv bmVudCBkaWQgbm90IGxvYWQgd2l0aGluICVzIG1zIC0gJysndmVyaWZ5IHRoYXQg dGhlIGNvbnRhaW5lciBpcyBub3Qgc2V0IHRvIGhpZGRlbiBvciBpbnZpc2libGUg JysndXNpbmcgQ1NTIGFzIHRoaXMgd2lsbCBjYXVzZSBzb21lIGJyb3dzZXJzIHRv IG5vdCBsb2FkICcrJ3RoZSBjb21wb25lbnRzJyx4KTt9LHgpO3U9dHJ1ZTt9fTt9 KSgpKTt0LnJlZ2lzdGVyKCdwb3N0bWVzc2FnZScsKGZ1bmN0aW9uKCl7dmFyIHU9 ZmFsc2U7cmV0dXJuIHtpc0F2YWlsYWJsZTpmdW5jdGlvbigpe3JldHVybiAhIXIu cG9zdE1lc3NhZ2U7fSxpbml0OmZ1bmN0aW9uKHYpe20uZGVidWcoJ2luaXQgcG9z dE1lc3NhZ2U6ICcrdi5jaGFubmVsKTt2YXIgdz0nX0ZCXycrdi5jaGFubmVsLHg9 e3NlbmQ6ZnVuY3Rpb24oeSx6LGFhLGJhKXtpZihyPT09YWEpe20uZXJyb3IoJ0lu dmFsaWQgd2luZG93cmVmLCBlcXVhbCB0byB3aW5kb3cgKHNlbGYpJyk7dGhyb3cg bmV3IEVycm9yKCk7fW0uZGVidWcoJ3NlbmRpbmcgdG86ICVzICglcyknLHosYmEp O3ZhciBjYT1mdW5jdGlvbigpe2FhLnBvc3RNZXNzYWdlKCdfRkJfJytiYSt5LHop O307aWYobi5pZSgpPT04KXtzZXRUaW1lb3V0KGNhLDApO31lbHNlIGNhKCk7fX07 aWYodSl7di53aGVuUmVhZHkoeCk7cmV0dXJuO31nLmFkZChyLCdtZXNzYWdlJyxv KGZ1bmN0aW9uKGV2ZW50KXt2YXIgeT1ldmVudC5kYXRhLHo9ZXZlbnQub3JpZ2lu fHwnbmF0aXZlJztpZih0eXBlb2YgeSE9J3N0cmluZycpe20ud2FybignUmVjZWl2 ZWQgbWVzc2FnZSBvZiB0eXBlICVzIGZyb20gJXMsIGV4cGVjdGVkIGEgc3RyaW5n Jyx0eXBlb2YgeSx6KTtyZXR1cm47fW0uZGVidWcoJ3JlY2VpdmVkIG1lc3NhZ2Ug JXMgZnJvbSAlcycseSx6KTtpZih5LnN1YnN0cmluZygwLHcubGVuZ3RoKT09dyl5 PXkuc3Vic3RyaW5nKHcubGVuZ3RoKTt2Lm9uTWVzc2FnZSh5LHopO30sJ2VudHJ5 Jywnb25NZXNzYWdlJykpO3Yud2hlblJlYWR5KHgpO3U9dHJ1ZTt9fTt9KSgpKTtl LmV4cG9ydHM9dDt9KTsKX19kKCJzZGsuWEQiLFsic2RrLkNvbnRlbnQiLCJzZGsu Y3JlYXRlSWZyYW1lIiwic2RrLkV2ZW50IiwiZ3VpZCIsIkxvZyIsIlF1ZXJ5U3Ry aW5nIiwiUXVldWUiLCJyZXNvbHZlVVJJIiwicmVzb2x2ZVdpbmRvdyIsInNkay5S UEMiLCJzZGsuUnVudGltZSIsIlVybE1hcCIsIlVSTCIsIndyYXBGdW5jdGlvbiIs IlhETSIsIlhEQ29uZmlnIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J3Nkay5Db250ZW50JyksaD1iKCdzZGsuY3JlYXRlSWZyYW1lJyksaT1iKCdzZGsu RXZlbnQnKSxqPWIoJ2d1aWQnKSxrPWIoJ0xvZycpLGw9YignUXVlcnlTdHJpbmcn KSxtPWIoJ1F1ZXVlJyksbj1iKCdyZXNvbHZlVVJJJyksbz1iKCdyZXNvbHZlV2lu ZG93JykscD1iKCdzZGsuUlBDJykscT1iKCdzZGsuUnVudGltZScpLHI9YignVXJs TWFwJykscz1iKCdVUkwnKSx0PWIoJ3dyYXBGdW5jdGlvbicpLHU9YygnWERDb25m aWcnKSx2PWIoJ1hETScpLHc9bmV3IG0oKSx4PW5ldyBtKCkseT1uZXcgbSgpLHos YWEsYmE9aigpLGNhPWooKSxkYT1sb2NhdGlvbi5wcm90b2NvbCsnLy8nK2xvY2F0 aW9uLmhvc3QsZWEsZmE9ZmFsc2UsZ2E9J0ZhY2Vib29rIENyb3NzIERvbWFpbiBD b21tdW5pY2F0aW9uIEZyYW1lJyxoYT17fSxpYT1uZXcgbSgpO3Auc2V0SW5RdWV1 ZShpYSk7ZnVuY3Rpb24gamEocGEpe2suaW5mbygnUmVtb3RlIFhEIGNhbiB0YWxr IHRvIGZhY2Vib29rLmNvbSAoJXMpJyxwYSk7cS5zZXRFbnZpcm9ubWVudChwYT09 PSdjYW52YXMnP3EuRU5WSVJPTk1FTlRTLkNBTlZBUzpxLkVOVklST05NRU5UUy5Q QUdFVEFCKTt9ZnVuY3Rpb24ga2EocGEscWEpe2lmKCFxYSl7ay5lcnJvcignTm8g c2VuZGVyT3JpZ2luJyk7dGhyb3cgbmV3IEVycm9yKCk7fXZhciByYT0vXmh0dHBz Py8uZXhlYyhxYSlbMF07c3dpdGNoKHBhLnhkX2FjdGlvbil7Y2FzZSAncHJveHlf cmVhZHknOnZhciBzYSx0YTtpZihyYT09J2h0dHBzJyl7c2E9eTt0YT1hYTt9ZWxz ZXtzYT14O3RhPXo7fWlmKHBhLnJlZ2lzdGVyZWQpe2phKHBhLnJlZ2lzdGVyZWQp O3c9c2EubWVyZ2Uodyk7fWsuaW5mbygnUHJveHkgcmVhZHksIHN0YXJ0aW5nIHF1 ZXVlICVzIGNvbnRhaW5pbmcgJXMgbWVzc2FnZXMnLHJhKydQcm94eVF1ZXVlJyxz YS5nZXRMZW5ndGgoKSk7c2Euc3RhcnQoZnVuY3Rpb24odmEpe2VhLnNlbmQodHlw ZW9mIHZhPT09J3N0cmluZyc/dmE6bC5lbmNvZGUodmEpLHFhLHRhLmNvbnRlbnRX aW5kb3csY2ErJ18nK3JhKTt9KTticmVhaztjYXNlICdwbHVnaW5fcmVhZHknOmsu aW5mbygnUGx1Z2luICVzIHJlYWR5LCBwcm90b2NvbDogJXMnLHBhLm5hbWUscmEp O2hhW3BhLm5hbWVdPXtwcm90b2NvbDpyYX07aWYobS5leGlzdHMocGEubmFtZSkp e3ZhciB1YT1tLmdldChwYS5uYW1lKTtrLmRlYnVnKCdFbnF1ZXVpbmcgJXMgbWVz c2FnZXMgZm9yICVzIGluICVzJyx1YS5nZXRMZW5ndGgoKSxwYS5uYW1lLHJhKydQ cm94eVF1ZXVlJyk7KHJhPT0naHR0cHMnP3k6eCkubWVyZ2UodWEpO31icmVhazt9 aWYocGEuZGF0YSlsYShwYS5kYXRhLHFhKTt9ZnVuY3Rpb24gbGEocGEscWEpe2lm KHFhJiZxYSE9PSduYXRpdmUnJiYhcyhxYSkuaXNGYWNlYm9va1VSTCgpKXJldHVy bjtpZih0eXBlb2YgcGE9PSdzdHJpbmcnKXtpZigvXkZCX1JQQzovLnRlc3QocGEp KXtpYS5lbnF1ZXVlKHBhLnN1YnN0cmluZyg3KSk7cmV0dXJuO31pZihwYS5zdWJz dHJpbmcoMCwxKT09J3snKXt0cnl7cGE9RVM1KCdKU09OJywncGFyc2UnLGZhbHNl LHBhKTt9Y2F0Y2gocmEpe2sud2FybignRmFpbGVkIHRvIGRlY29kZSAlcyBhcyBK U09OJyxwYSk7cmV0dXJuO319ZWxzZSBwYT1sLmRlY29kZShwYSk7fWlmKCFxYSlp ZihwYS54ZF9zaWc9PWJhKXFhPXBhLnhkX29yaWdpbjtpZihwYS54ZF9hY3Rpb24p e2thKHBhLHFhKTtyZXR1cm47fWlmKHBhLmFjY2Vzc190b2tlbilxLnNldFNlY3Vy ZSgvXmh0dHBzLy50ZXN0KGRhKSk7aWYocGEuY2Ipe3ZhciBzYT1vYS5fY2FsbGJh Y2tzW3BhLmNiXTtpZighb2EuX2ZvcmV2ZXJbcGEuY2JdKWRlbGV0ZSBvYS5fY2Fs bGJhY2tzW3BhLmNiXTtpZihzYSlzYShwYSk7fX1mdW5jdGlvbiBtYShwYSxxYSl7 aWYocGE9PSdmYWNlYm9vaycpe3FhLnJlbGF0aW9uPSdwYXJlbnQucGFyZW50Jzt3 LmVucXVldWUocWEpO31lbHNle3FhLnJlbGF0aW9uPSdwYXJlbnQuZnJhbWVzWyIn K3BhKyciXSc7dmFyIHJhPWhhW3BhXTtpZihyYSl7ay5kZWJ1ZygnRW5xdWV1aW5n IG1lc3NhZ2UgZm9yIHBsdWdpbiAlcyBpbiAlcycscGEscmEucHJvdG9jb2wrJ1By b3h5UXVldWUnKTsocmEucHJvdG9jb2w9PSdodHRwcyc/eTp4KS5lbnF1ZXVlKHFh KTt9ZWxzZXtrLmRlYnVnKCdCdWZmZXJpbmcgbWVzc2FnZSBmb3IgcGx1Z2luICVz JyxwYSk7bS5nZXQocGEpLmVucXVldWUocWEpO319fXAuZ2V0T3V0UXVldWUoKS5z dGFydChmdW5jdGlvbihwYSl7bWEoJ2ZhY2Vib29rJywnRkJfUlBDOicrcGEpO30p O2Z1bmN0aW9uIG5hKHBhLHFhKXtpZihmYSlyZXR1cm47dmFyIHJhPXBhPy9cL1wv Lio/KFwvW14jXSopLy5leGVjKHBhKVsxXTpsb2NhdGlvbi5wYXRobmFtZStsb2Nh dGlvbi5zZWFyY2g7cmErPSh+RVM1KHJhLCdpbmRleE9mJyx0cnVlLCc/Jyk/JyYn Oic/JykrJ2ZiX3hkX2ZyYWdtZW50I3hkX3NpZz0nK2JhKycmJzt2YXIgc2E9Zy5h cHBlbmRIaWRkZW4oZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpLHRhPXYu Y3JlYXRlKHtyb290OnNhLGNoYW5uZWw6Y2EsY2hhbm5lbFBhdGg6Jy8nK3UuWGRV cmwrJyMnLGZsYXNoVXJsOnUuRmxhc2gucGF0aCx3aGVuUmVhZHk6ZnVuY3Rpb24o dWEpe2VhPXVhO3ZhciB2YT17Y2hhbm5lbDpjYSxvcmlnaW46bG9jYXRpb24ucHJv dG9jb2wrJy8vJytsb2NhdGlvbi5ob3N0LGNoYW5uZWxfcGF0aDpyYSx0cmFuc3Bv cnQ6dGEseGRfbmFtZTpxYX0sd2E9Jy8nK3UuWGRVcmwrJyMnK2wuZW5jb2RlKHZh KSx4YT11LnVzZUNkbj9yLnJlc29sdmUoJ2NkbicsZmFsc2UpOidodHRwOi8vd3d3 LmZhY2Vib29rLmNvbScseWE9dS51c2VDZG4/ci5yZXNvbHZlKCdjZG4nLHRydWUp OidodHRwczovL3d3dy5mYWNlYm9vay5jb20nO2lmKHEuZ2V0U2VjdXJlKCkhPT10 cnVlKXo9aCh7dXJsOnhhK3dhLG5hbWU6J2ZiX3hkbV9mcmFtZV9odHRwJyxpZDon ZmJfeGRtX2ZyYW1lX2h0dHAnLHJvb3Q6c2EsJ2FyaWEtaGlkZGVuJzp0cnVlLHRp dGxlOmdhLCd0YWItaW5kZXgnOi0xfSk7YWE9aCh7dXJsOnlhK3dhLG5hbWU6J2Zi X3hkbV9mcmFtZV9odHRwcycsaWQ6J2ZiX3hkbV9mcmFtZV9odHRwcycscm9vdDpz YSwnYXJpYS1oaWRkZW4nOnRydWUsdGl0bGU6Z2EsJ3RhYi1pbmRleCc6LTF9KTt9 LG9uTWVzc2FnZTpsYX0pO2lmKHRhPT09J2ZyYWdtZW50Jyl3aW5kb3cuRkJfWERf b25NZXNzYWdlPXQobGEsJ2VudHJ5JywnWEQ6ZnJhZ21lbnQnKTtmYT10cnVlO312 YXIgb2E9e3JwYzpwLF9jYWxsYmFja3M6e30sX2ZvcmV2ZXI6e30sX2NoYW5uZWw6 Y2EsX29yaWdpbjpkYSxvbk1lc3NhZ2U6bGEscmVjdjpsYSxpbml0Om5hLHNlbmRU b0ZhY2Vib29rOm1hLGluZm9ybTpmdW5jdGlvbihwYSxxYSxyYSxzYSl7bWEoJ2Zh Y2Vib29rJyx7bWV0aG9kOnBhLHBhcmFtczpFUzUoJ0pTT04nLCdzdHJpbmdpZnkn LGZhbHNlLHFhfHx7fSksYmVoYXZpb3I6c2F8fCdwJyxyZWxhdGlvbjpyYX0pO30s aGFuZGxlcjpmdW5jdGlvbihwYSxxYSxyYSxzYSl7dmFyIHRhPXUudXNlQ2RuP3Iu cmVzb2x2ZSgnY2RuJyxsb2NhdGlvbi5wcm90b2NvbD09J2h0dHBzOicpOmxvY2F0 aW9uLnByb3RvY29sKycvL3d3dy5mYWNlYm9vay5jb20nO3JldHVybiB0YSsnLycr dS5YZFVybCsnIycrbC5lbmNvZGUoe2NiOnRoaXMucmVnaXN0ZXJDYWxsYmFjayhw YSxyYSxzYSksb3JpZ2luOmRhKycvJytjYSxkb21haW46bG9jYXRpb24uaG9zdG5h bWUscmVsYXRpb246cWF8fCdvcGVuZXInfSk7fSxyZWdpc3RlckNhbGxiYWNrOmZ1 bmN0aW9uKHBhLHFhLHJhKXtyYT1yYXx8aigpO2lmKHFhKW9hLl9mb3JldmVyW3Jh XT10cnVlO29hLl9jYWxsYmFja3NbcmFdPXBhO3JldHVybiByYTt9fTsoZnVuY3Rp b24oKXt2YXIgcGE9bG9jYXRpb24uaHJlZi5tYXRjaCgvWz8mXWZiX3hkX2ZyYWdt ZW50IyguKikkLyk7aWYocGEpe2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHls ZS5kaXNwbGF5PSdub25lJzt2YXIgcWE9bC5kZWNvZGUocGFbMV0pLHJhPW8ocWEu eGRfcmVsKTtrLmRlYnVnKCdQYXNzaW5nIGZyYWdtZW50IGJhc2VkIG1lc3NhZ2U6 ICVzJyxwYVsxXSk7cmEuRkJfWERfb25NZXNzYWdlKHFhKTtkb2N1bWVudC5vcGVu KCk7ZG9jdW1lbnQuY2xvc2UoKTt9fSkoKTtpLnN1YnNjcmliZSgnaW5pdDpwb3N0 JyxmdW5jdGlvbihwYSl7bmEocGEuY2hhbm5lbFVybD9uKHBhLmNoYW5uZWxVcmwp Om51bGwscGEueGRQcm94eU5hbWUpO30pO2UuZXhwb3J0cz1vYTt9KTsKX19kKCJz ZGsuQXV0aCIsWyJzZGsuQ29va2llIiwiY29weVByb3BlcnRpZXMiLCJzZGsuY3Jl YXRlSWZyYW1lIiwiRE9NV3JhcHBlciIsInNkay5nZXRDb250ZXh0VHlwZSIsImd1 aWQiLCJMb2ciLCJPYnNlcnZhYmxlTWl4aW4iLCJRdWVyeVN0cmluZyIsInNkay5S dW50aW1lIiwic2RrLlNpZ25lZFJlcXVlc3QiLCJVcmxNYXAiLCJVUkwiLCJzZGsu WEQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yignc2RrLkNvb2tpZScp LGg9YignY29weVByb3BlcnRpZXMnKSxpPWIoJ3Nkay5jcmVhdGVJZnJhbWUnKSxq PWIoJ0RPTVdyYXBwZXInKSxrPWIoJ3Nkay5nZXRDb250ZXh0VHlwZScpLGw9Yign Z3VpZCcpLG09YignTG9nJyksbj1iKCdPYnNlcnZhYmxlTWl4aW4nKSxvPWIoJ1F1 ZXJ5U3RyaW5nJykscD1iKCdzZGsuUnVudGltZScpLHE9Yignc2RrLlNpZ25lZFJl cXVlc3QnKSxyPWIoJ1VybE1hcCcpLHM9YignVVJMJyksdD1iKCdzZGsuWEQnKSx1 LHYsdz1uZXcgbigpO2Z1bmN0aW9uIHgoZGEsZWEpe3ZhciBmYT1wLmdldFVzZXJJ RCgpLGdhPScnO2lmKGRhKWlmKGRhLnVzZXJJRCl7Z2E9ZGEudXNlcklEO31lbHNl IGlmKGRhLnNpZ25lZFJlcXVlc3Qpe3ZhciBoYT1xLnBhcnNlKGRhLnNpZ25lZFJl cXVlc3QpO2lmKGhhJiZoYS51c2VyX2lkKWdhPWhhLnVzZXJfaWQ7fXZhciBpYT1w LmdldExvZ2luU3RhdHVzKCksamE9KGlhPT09J3Vua25vd24nJiZkYSl8fChwLmdl dFVzZUNvb2tpZSgpJiZwLmdldENvb2tpZVVzZXJJRCgpIT09Z2EpLGthPWZhJiYh ZGEsbGE9ZGEmJmZhJiZmYSE9Z2EsbWE9ZGEhPXUsbmE9ZWEhPShpYXx8J3Vua25v d24nKTtwLnNldExvZ2luU3RhdHVzKGVhKTtwLnNldEFjY2Vzc1Rva2VuKGRhJiZk YS5hY2Nlc3NUb2tlbnx8bnVsbCk7cC5zZXRVc2VySUQoZ2EpO3U9ZGE7dmFyIG9h PXthdXRoUmVzcG9uc2U6ZGEsc3RhdHVzOmVhfTtpZihrYXx8bGEpdy5pbmZvcm0o J2xvZ291dCcsb2EpO2lmKGphfHxsYSl3LmluZm9ybSgnbG9naW4nLG9hKTtpZiht YSl3LmluZm9ybSgnYXV0aHJlc3BvbnNlLmNoYW5nZScsb2EpO2lmKG5hKXcuaW5m b3JtKCdzdGF0dXMuY2hhbmdlJyxvYSk7cmV0dXJuIG9hO31mdW5jdGlvbiB5KCl7 cmV0dXJuIHU7fWZ1bmN0aW9uIHooZGEsZWEsZmEpe3JldHVybiBmdW5jdGlvbihn YSl7dmFyIGhhO2lmKGdhJiZnYS5hY2Nlc3NfdG9rZW4pe3ZhciBpYT1xLnBhcnNl KGdhLnNpZ25lZF9yZXF1ZXN0KTtlYT17YWNjZXNzVG9rZW46Z2EuYWNjZXNzX3Rv a2VuLHVzZXJJRDppYS51c2VyX2lkLGV4cGlyZXNJbjpwYXJzZUludChnYS5leHBp cmVzX2luLDEwKSxzaWduZWRSZXF1ZXN0OmdhLnNpZ25lZF9yZXF1ZXN0fTtpZihw LmdldFVzZUNvb2tpZSgpKXt2YXIgamE9ZWEuZXhwaXJlc0luPT09MD8wOkVTNSgn RGF0ZScsJ25vdycsZmFsc2UpK2VhLmV4cGlyZXNJbioxMDAwLGthPWcuZ2V0RG9t YWluKCk7aWYoIWthJiZnYS5iYXNlX2RvbWFpbilnLnNldERvbWFpbignLicrZ2Eu YmFzZV9kb21haW4pO2cuc2V0U2lnbmVkUmVxdWVzdENvb2tpZShnYS5zaWduZWRf cmVxdWVzdCxqYSk7fWhhPSdjb25uZWN0ZWQnO3goZWEsaGEpO31lbHNlIGlmKGZh PT09J2xvZ291dCd8fGZhPT09J2xvZ2luX3N0YXR1cycpe2lmKGdhLmVycm9yJiZn YS5lcnJvcj09PSdub3RfYXV0aG9yaXplZCcpe2hhPSdub3RfYXV0aG9yaXplZCc7 fWVsc2UgaGE9J3Vua25vd24nO3gobnVsbCxoYSk7aWYocC5nZXRVc2VDb29raWUo KSlnLmNsZWFyU2lnbmVkUmVxdWVzdENvb2tpZSgpO31pZihnYSYmZ2EuaHR0cHM9 PTEpcC5zZXRTZWN1cmUodHJ1ZSk7aWYoZGEpZGEoe2F1dGhSZXNwb25zZTplYSxz dGF0dXM6cC5nZXRMb2dpblN0YXR1cygpfSk7cmV0dXJuIGVhO307fWZ1bmN0aW9u IGFhKGRhKXt2YXIgZWE7aWYodil7Y2xlYXJUaW1lb3V0KHYpO3Y9bnVsbDt9dmFy IGZhPXooZGEsdSwnbG9naW5fc3RhdHVzJyksZ2E9cyhyLnJlc29sdmUoJ3d3dycs dHJ1ZSkrJy9kaWFsb2cvb2F1dGgnKS5zZXRTZWFyY2goby5lbmNvZGUoe2NsaWVu dF9pZDpwLmdldENsaWVudElEKCkscmVzcG9uc2VfdHlwZTondG9rZW4sc2lnbmVk X3JlcXVlc3QsY29kZScsZGlzcGxheTonbm9uZScsZG9tYWluOmxvY2F0aW9uLmhv c3RuYW1lLG9yaWdpbjprKCkscmVkaXJlY3RfdXJpOnQuaGFuZGxlcihmdW5jdGlv bihoYSl7ZWEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlYSk7aWYoZmEoaGEpKXY9 c2V0VGltZW91dChmdW5jdGlvbigpe2FhKGZ1bmN0aW9uKCl7fSk7fSwxMjAwMDAw KTt9LCdwYXJlbnQnKSxzZGs6J2pvZXknfSkpO2VhPWkoe3Jvb3Q6ai5nZXRSb290 KCksbmFtZTpsKCksdXJsOmdhLnRvU3RyaW5nKCksc3R5bGU6e2Rpc3BsYXk6J25v bmUnfX0pO312YXIgYmE7ZnVuY3Rpb24gY2EoZGEsZWEpe2lmKCFwLmdldENsaWVu dElEKCkpe20ud2FybignRkIuZ2V0TG9naW5TdGF0dXMoKSBjYWxsZWQgYmVmb3Jl IGNhbGxpbmcgRkIuaW5pdCgpLicpO3JldHVybjt9aWYoZGEpaWYoIWVhJiZiYT09 J2xvYWRlZCcpe2RhKHtzdGF0dXM6cC5nZXRMb2dpblN0YXR1cygpLGF1dGhSZXNw b25zZTp5KCl9KTtyZXR1cm47fWVsc2Ugdy5zdWJzY3JpYmUoJ0ZCLmxvZ2luU3Rh dHVzJyxkYSk7aWYoIWVhJiZiYT09J2xvYWRpbmcnKXJldHVybjtiYT0nbG9hZGlu Zyc7dmFyIGZhPWZ1bmN0aW9uKGdhKXtiYT0nbG9hZGVkJzt3LmluZm9ybSgnRkIu bG9naW5TdGF0dXMnLGdhKTt3LmNsZWFyU3Vic2NyaWJlcnMoJ0ZCLmxvZ2luU3Rh dHVzJyk7fTthYShmYSk7fWgodyx7Z2V0TG9naW5TdGF0dXM6Y2EsZmV0Y2hMb2dp blN0YXR1czphYSxzZXRBdXRoUmVzcG9uc2U6eCxnZXRBdXRoUmVzcG9uc2U6eSxw YXJzZVNpZ25lZFJlcXVlc3Q6cS5wYXJzZSx4ZFJlc3BvbnNlV3JhcHBlcjp6fSk7 ZS5leHBvcnRzPXc7fSk7Cl9fZCgiaGFzQXJyYXlOYXR1cmUiLFtdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGgpe3JldHVybiAoISFoJiYodHlwZW9m IGg9PSdvYmplY3QnfHx0eXBlb2YgaD09J2Z1bmN0aW9uJykmJignbGVuZ3RoJyBp biBoKSYmISgnc2V0SW50ZXJ2YWwnIGluIGgpJiYoT2JqZWN0LnByb3RvdHlwZS50 b1N0cmluZy5jYWxsKGgpPT09IltvYmplY3QgQXJyYXldInx8KCdjYWxsZWUnIGlu IGgpfHwoJ2l0ZW0nIGluIGgpKSk7fWUuZXhwb3J0cz1nO30pOwpfX2QoImNyZWF0 ZUFycmF5RnJvbSIsWyJoYXNBcnJheU5hdHVyZSJdLGZ1bmN0aW9uKGEsYixjLGQs ZSxmKXt2YXIgZz1iKCdoYXNBcnJheU5hdHVyZScpO2Z1bmN0aW9uIGgoaSl7aWYo IWcoaSkpcmV0dXJuIFtpXTtpZihpLml0ZW0pe3ZhciBqPWkubGVuZ3RoLGs9bmV3 IEFycmF5KGopO3doaWxlKGotLSlrW2pdPWlbal07cmV0dXJuIGs7fXJldHVybiBB cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpKTt9ZS5leHBvcnRzPWg7fSk7Cl9f ZCgic2RrLkRPTSIsWyJBc3NlcnQiLCJjcmVhdGVBcnJheUZyb20iLCJzZGsuZG9t UmVhZHkiLCJVc2VyQWdlbnQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 YignQXNzZXJ0JyksaD1iKCdjcmVhdGVBcnJheUZyb20nKSxpPWIoJ3Nkay5kb21S ZWFkeScpLGo9YignVXNlckFnZW50Jyksaz17fTtmdW5jdGlvbiBsKHosYWEpe3Zh ciBiYT0oei5nZXRBdHRyaWJ1dGUoYWEpfHx6LmdldEF0dHJpYnV0ZShhYS5yZXBs YWNlKC9fL2csJy0nKSl8fHouZ2V0QXR0cmlidXRlKGFhLnJlcGxhY2UoLy0vZywn XycpKXx8ei5nZXRBdHRyaWJ1dGUoYWEucmVwbGFjZSgvLS9nLCcnKSl8fHouZ2V0 QXR0cmlidXRlKGFhLnJlcGxhY2UoL18vZywnJykpfHx6LmdldEF0dHJpYnV0ZSgn ZGF0YS0nK2FhKXx8ei5nZXRBdHRyaWJ1dGUoJ2RhdGEtJythYS5yZXBsYWNlKC9f L2csJy0nKSl8fHouZ2V0QXR0cmlidXRlKCdkYXRhLScrYWEucmVwbGFjZSgvLS9n LCdfJykpfHx6LmdldEF0dHJpYnV0ZSgnZGF0YS0nK2FhLnJlcGxhY2UoLy0vZywn JykpfHx6LmdldEF0dHJpYnV0ZSgnZGF0YS0nK2FhLnJlcGxhY2UoL18vZywnJykp KTtyZXR1cm4gYmE/U3RyaW5nKGJhKTpudWxsO31mdW5jdGlvbiBtKHosYWEpe3Zh ciBiYT1sKHosYWEpO3JldHVybiBiYT8vXih0cnVlfDF8eWVzfG9uKSQvLnRlc3Qo YmEpOm51bGw7fWZ1bmN0aW9uIG4oeixhYSl7Zy5pc1RydXRoeSh6LCdlbGVtZW50 IG5vdCBzcGVjaWZpZWQnKTtnLmlzU3RyaW5nKGFhKTt0cnl7cmV0dXJuIFN0cmlu Zyh6W2FhXSk7fWNhdGNoKGJhKXt0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBy ZWFkIHByb3BlcnR5ICcrYWErJyA6ICcrYmEubWVzc2FnZSk7fX1mdW5jdGlvbiBv KHosYWEpe2cuaXNUcnV0aHkoeiwnZWxlbWVudCBub3Qgc3BlY2lmaWVkJyk7Zy5p c1N0cmluZyhhYSk7dHJ5e3ouaW5uZXJIVE1MPWFhO31jYXRjaChiYSl7dGhyb3cg bmV3IEVycm9yKCdDb3VsZCBub3Qgc2V0IGlubmVySFRNTCA6ICcrYmEubWVzc2Fn ZSk7fX1mdW5jdGlvbiBwKHosYWEpe2cuaXNUcnV0aHkoeiwnZWxlbWVudCBub3Qg c3BlY2lmaWVkJyk7Zy5pc1N0cmluZyhhYSk7dmFyIGJhPScgJytuKHosJ2NsYXNz TmFtZScpKycgJztyZXR1cm4gRVM1KGJhLCdpbmRleE9mJyx0cnVlLCcgJythYSsn ICcpPj0wO31mdW5jdGlvbiBxKHosYWEpe2cuaXNUcnV0aHkoeiwnZWxlbWVudCBu b3Qgc3BlY2lmaWVkJyk7Zy5pc1N0cmluZyhhYSk7aWYoIXAoeixhYSkpei5jbGFz c05hbWU9bih6LCdjbGFzc05hbWUnKSsnICcrYWE7fWZ1bmN0aW9uIHIoeixhYSl7 Zy5pc1RydXRoeSh6LCdlbGVtZW50IG5vdCBzcGVjaWZpZWQnKTtnLmlzU3RyaW5n KGFhKTt2YXIgYmE9bmV3IFJlZ0V4cCgnXFxzKicrYWEsJ2cnKTt6LmNsYXNzTmFt ZT1FUzUobih6LCdjbGFzc05hbWUnKS5yZXBsYWNlKGJhLCcnKSwndHJpbScsdHJ1 ZSk7fWZ1bmN0aW9uIHMoeixhYSxiYSl7Zy5pc1N0cmluZyh6KTthYT1hYXx8ZG9j dW1lbnQuYm9keTtiYT1iYXx8JyonO2lmKGFhLnF1ZXJ5U2VsZWN0b3JBbGwpcmV0 dXJuIGgoYWEucXVlcnlTZWxlY3RvckFsbChiYSsnLicreikpO3ZhciBjYT1hYS5n ZXRFbGVtZW50c0J5VGFnTmFtZShiYSksZGE9W107Zm9yKHZhciBlYT0wLGZhPWNh Lmxlbmd0aDtlYTxmYTtlYSsrKWlmKHAoY2FbZWFdLHopKWRhW2RhLmxlbmd0aF09 Y2FbZWFdO3JldHVybiBkYTt9ZnVuY3Rpb24gdCh6LGFhKXtnLmlzVHJ1dGh5KHos J2VsZW1lbnQgbm90IHNwZWNpZmllZCcpO2cuaXNTdHJpbmcoYWEpO2FhPWFhLnJl cGxhY2UoLy0oXHcpL2csZnVuY3Rpb24oZGEsZWEpe3JldHVybiBlYS50b1VwcGVy Q2FzZSgpO30pO3ZhciBiYT16LmN1cnJlbnRTdHlsZXx8ZG9jdW1lbnQuZGVmYXVs dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh6LG51bGwpLGNhPWJhW2FhXTtpZigvYmFj a2dyb3VuZFBvc2l0aW9uPy8udGVzdChhYSkmJi90b3B8bGVmdC8udGVzdChjYSkp Y2E9JzAlJztyZXR1cm4gY2E7fWZ1bmN0aW9uIHUoeixhYSxiYSl7Zy5pc1RydXRo eSh6LCdlbGVtZW50IG5vdCBzcGVjaWZpZWQnKTtnLmlzU3RyaW5nKGFhKTthYT1h YS5yZXBsYWNlKC8tKFx3KS9nLGZ1bmN0aW9uKGNhLGRhKXtyZXR1cm4gZGEudG9V cHBlckNhc2UoKTt9KTt6LnN0eWxlW2FhXT1iYTt9ZnVuY3Rpb24gdih6LGFhKXt2 YXIgYmE9dHJ1ZTtmb3IodmFyIGNhPTAsZGE7ZGE9YWFbY2ErK107KWlmKCEoZGEg aW4gaykpe2JhPWZhbHNlO2tbZGFdPXRydWU7fWlmKGJhKXJldHVybjtpZighai5p ZSgpKXt2YXIgZWE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtlYS50 eXBlPSd0ZXh0L2Nzcyc7ZWEudGV4dENvbnRlbnQ9ejtkb2N1bWVudC5nZXRFbGVt ZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKGVhKTt9ZWxzZSB0 cnl7ZG9jdW1lbnQuY3JlYXRlU3R5bGVTaGVldCgpLmNzc1RleHQ9ejt9Y2F0Y2go ZmEpe2lmKGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdKWRvY3VtZW50LnN0eWxlU2hl ZXRzWzBdLmNzc1RleHQrPXo7fX1mdW5jdGlvbiB3KCl7dmFyIHo9KGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuY29tcGF0TW9kZT09J0NTUzFDb21w YXQnKT9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6ZG9jdW1lbnQuYm9keTtyZXR1 cm4ge3Njcm9sbFRvcDp6LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxU b3Asc2Nyb2xsTGVmdDp6LnNjcm9sbExlZnR8fGRvY3VtZW50LmJvZHkuc2Nyb2xs TGVmdCx3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aD93aW5kb3cuaW5uZXJXaWR0aDp6 LmNsaWVudFdpZHRoLGhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHQ/d2luZG93Lmlu bmVySGVpZ2h0OnouY2xpZW50SGVpZ2h0fTt9ZnVuY3Rpb24geCh6KXtnLmlzVHJ1 dGh5KHosJ2VsZW1lbnQgbm90IHNwZWNpZmllZCcpO3ZhciBhYT0wLGJhPTA7ZG97 YWErPXoub2Zmc2V0TGVmdDtiYSs9ei5vZmZzZXRUb3A7fXdoaWxlKHo9ei5vZmZz ZXRQYXJlbnQpO3JldHVybiB7eDphYSx5OmJhfTt9dmFyIHk9e2NvbnRhaW5zQ3Nz OnAsYWRkQ3NzOnEscmVtb3ZlQ3NzOnIsZ2V0QnlDbGFzczpzLGdldFN0eWxlOnQs c2V0U3R5bGU6dSxnZXRBdHRyOmwsZ2V0Qm9vbEF0dHI6bSxnZXRQcm9wOm4saHRt bDpvLGFkZENzc1J1bGVzOnYsZ2V0Vmlld3BvcnRJbmZvOncsZ2V0UG9zaXRpb246 eCxyZWFkeTppfTtlLmV4cG9ydHM9eTt9KTsKX19kKCJzZGsuU2NyaWJlIixbIlVy bE1hcCIsIlF1ZXJ5U3RyaW5nIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBn PWIoJ1VybE1hcCcpLGg9YignUXVlcnlTdHJpbmcnKTtmdW5jdGlvbiBpKGssbCl7 KG5ldyBJbWFnZSgpKS5zcmM9aC5hcHBlbmRUb1VybChnLnJlc29sdmUoJ3d3dycs dHJ1ZSkrJy9jb21tb24vc2NyaWJlX2VuZHBvaW50LnBocCcse2M6ayxtOkVTNSgn SlNPTicsJ3N0cmluZ2lmeScsZmFsc2UsbCl9KTt9dmFyIGo9e2xvZzppfTtlLmV4 cG9ydHM9ajt9KTsKX19kKCJzZGsuRXJyb3JIYW5kbGluZyIsWyJVc2VyQWdlbnQi LCJzZGsuU2NyaWJlIiwic2RrLlJ1bnRpbWUiLCJ3cmFwRnVuY3Rpb24iLCJNYW5h Z2VkRXJyb3IiLCJTREtDb25maWciXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9YignVXNlckFnZW50JyksaD1iKCdzZGsuU2NyaWJlJyksaT1jKCdTREtDb25m aWcnKSxqPWIoJ3Nkay5SdW50aW1lJyksaz1iKCd3cmFwRnVuY3Rpb24nKSxsPWIo J01hbmFnZWRFcnJvcicpLG09ZmFsc2Usbj0nJztmdW5jdGlvbiBvKHYpe3ZhciB3 PXYuX29yaWdpbmFsRXJyb3I7ZGVsZXRlIHYuX29yaWdpbmFsRXJyb3I7aC5sb2co J2pzc2RrX2Vycm9yJyx7YXBwSWQ6ai5nZXRDbGllbnRJRCgpLGVycm9yOnYubmFt ZXx8di5tZXNzYWdlLGV4dHJhOnZ9KTt0aHJvdyB3O31mdW5jdGlvbiBwKHYpe3Zh ciB3PXtsaW5lOnYubGluZU51bWJlcnx8di5saW5lLG1lc3NhZ2U6di5tZXNzYWdl LG5hbWU6di5uYW1lLHNjcmlwdDp2LmZpbGVOYW1lfHx2LnNvdXJjZVVSTHx8di5z Y3JpcHQsc3RhY2s6di5zdGFja1RyYWNlfHx2LnN0YWNrfTt3Ll9vcmlnaW5hbEVy cm9yPXY7aWYoZy5jaHJvbWUoKSYmLyhbXHc6XC5cL10rXC5qcyk6KFxkKykvLnRl c3Qodi5zdGFjaykpe3cuc2NyaXB0PVJlZ0V4cC4kMTt3LmxpbmU9cGFyc2VJbnQo UmVnRXhwLiQyLDEwKTt9Zm9yKHZhciB4IGluIHcpKHdbeF09PW51bGwmJmRlbGV0 ZSB3W3hdKTtyZXR1cm4gdzt9ZnVuY3Rpb24gcSh2LHcpe3JldHVybiBmdW5jdGlv bigpe2lmKCFtKXJldHVybiB2LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0cnl7bj13 O3JldHVybiB2LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9Y2F0Y2goeCl7aWYoeCBp bnN0YW5jZW9mIGwpdGhyb3cgeDt2YXIgeT1wKHgpO3kuZW50cnk9dzt2YXIgej1F UzUoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwnbWFwJyx0 cnVlLGZ1bmN0aW9uKGFhKXt2YXIgYmE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu Zy5jYWxsKGFhKTtyZXR1cm4gKC9eXFtvYmplY3QgKFN0cmluZ3xOdW1iZXJ8Qm9v bGVhbnxPYmplY3R8RGF0ZSlcXSQvKS50ZXN0KGJhKT9hYTphYS50b1N0cmluZygp O30pO3kuYXJncz1FUzUoJ0pTT04nLCdzdHJpbmdpZnknLGZhbHNlLHopLnN1YnN0 cmluZygwLDIwMCk7byh5KTt9ZmluYWxseXtuPScnO319O31mdW5jdGlvbiByKHYp e2lmKCF2Ll9fd3JhcHBlcil2Ll9fd3JhcHBlcj1mdW5jdGlvbigpe3RyeXtyZXR1 cm4gdi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fWNhdGNoKHcpe3dpbmRvdy5zZXRU aW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdzt9LDApO3JldHVybiBmYWxzZTt9fTty ZXR1cm4gdi5fX3dyYXBwZXI7fWZ1bmN0aW9uIHModix3KXtyZXR1cm4gZnVuY3Rp b24oeCx5KXt2YXIgej13Kyc6Jysobnx8J1tnbG9iYWxdJykrJzonKyh4Lm5hbWV8 fCdbYW5vbnltb3VzXScrKGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLm5hbWU/Jygn K2FyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLm5hbWUrJyknOicnKSk7cmV0dXJuIHYo ayh4LCdlbnRyeScseikseSk7fTt9dmFyIHQ9aS5lcnJvckhhbmRsaW5nLnJhdGU7 aWYodCYmTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMTw9dCltPXRydWU7 aWYobSl7c2V0VGltZW91dD1zKHNldFRpbWVvdXQsJ3NldFRpbWVvdXQnKTtzZXRJ bnRlcnZhbD1zKHNldEludGVydmFsLCdzZXRJbnRlcnZhbCcpO2suc2V0V3JhcHBl cihxLCdlbnRyeScpO312YXIgdT17Z3VhcmQ6cSx1bmd1YXJkOnJ9O2UuZXhwb3J0 cz11O30pOwpfX2QoInNkay5JbXByZXNzaW9ucyIsWyJndWlkIiwiUXVlcnlTdHJp bmciLCJzZGsuUnVudGltZSIsIlVybE1hcCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz1iKCdndWlkJyksaD1iKCdRdWVyeVN0cmluZycpLGk9Yignc2RrLlJ1 bnRpbWUnKSxqPWIoJ1VybE1hcCcpO2Z1bmN0aW9uIGsobSl7dmFyIG49aS5nZXRD bGllbnRJRCgpO2lmKCFtLmFwaV9rZXkmJm4pbS5hcGlfa2V5PW47dmFyIG89bmV3 IEltYWdlKCk7by5zcmM9aC5hcHBlbmRUb1VybChqLnJlc29sdmUoJ3d3dycsdHJ1 ZSkrJy9pbXByZXNzaW9uLnBocC8nK2coKSsnLycsbSk7fXZhciBsPXtsb2c6ZnVu Y3Rpb24obSxuKXtpZighbi5zb3VyY2Upbi5zb3VyY2U9J2pzc2RrJztrKHtsaWQ6 bSxwYXlsb2FkOkVTNSgnSlNPTicsJ3N0cmluZ2lmeScsZmFsc2Usbil9KTt9LGlt cHJlc3Npb246a307ZS5leHBvcnRzPWw7fSk7Cl9fZCgic2RrLkluc2lnaHRzIixb InNkay5JbXByZXNzaW9ucyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCdzZGsuSW1wcmVzc2lvbnMnKSxoPXtUWVBFOntOT1RJQ0U6J25vdGljZScsV0FS TklORzond2FybicsRVJST1I6J2Vycm9yJ30sQ0FURUdPUlk6e0RFUFJFQ0FURUQ6 J2RlcHJlY2F0ZWQnLEFQSUVSUk9SOidhcGllcnJvcid9LGxvZzpmdW5jdGlvbihp LGosayl7dmFyIGw9e3NvdXJjZTonanNzZGsnLHR5cGU6aSxjYXRlZ29yeTpqLHBh eWxvYWQ6a307Zy5sb2coMTEzLGwpO30saW1wcmVzc2lvbjpnLmltcHJlc3Npb259 O2UuZXhwb3J0cz1oO30pOwpfX2QoIkZCIixbInNkay5BdXRoIiwiY29weVByb3Bl cnRpZXMiLCJkb3RBY2Nlc3MiLCJzZGsuZG9tUmVhZHkiLCJzZGsuRE9NIiwic2Rr LkVycm9ySGFuZGxpbmciLCJzZGsuQ29udGVudCIsIkRPTVdyYXBwZXIiLCJHbG9i YWxDYWxsYmFjayIsInNkay5JbnNpZ2h0cyIsIkxvZyIsInNkay5SdW50aW1lIiwi c2RrLlNjcmliZSIsIkNzc0NvbmZpZyIsIlNES0NvbmZpZyJdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz1iKCdzZGsuQXV0aCcpLGg9YignY29weVByb3BlcnRp ZXMnKSxpPWMoJ0Nzc0NvbmZpZycpLGo9YignZG90QWNjZXNzJyksaz1iKCdzZGsu ZG9tUmVhZHknKSxsPWIoJ3Nkay5ET00nKSxtPWIoJ3Nkay5FcnJvckhhbmRsaW5n Jyksbj1iKCdzZGsuQ29udGVudCcpLG89YignRE9NV3JhcHBlcicpLHA9YignR2xv YmFsQ2FsbGJhY2snKSxxPWIoJ3Nkay5JbnNpZ2h0cycpLHI9YignTG9nJykscz1i KCdzZGsuUnVudGltZScpLHQ9Yignc2RrLlNjcmliZScpLHU9YygnU0RLQ29uZmln Jyksdix3LHg9aih1LCdhcGkubW9kZScpLHk9e307dj13aW5kb3cuRkI9e307dmFy IHo9e307ci5sZXZlbD0xO3Auc2V0UHJlZml4KCdGQi5fX2dsb2JhbENhbGxiYWNr cycpO3ZhciBhYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtvLnNldFJv b3QoYWEpO2soZnVuY3Rpb24oKXtyLmluZm8oJ2RvbVJlYWR5Jyk7bi5hcHBlbmRI aWRkZW4oYWEpO2lmKGkucnVsZXMpbC5hZGRDc3NSdWxlcyhpLnJ1bGVzLGkuY29t cG9uZW50cyk7fSk7cy5zdWJzY3JpYmUoJ0FjY2Vzc1Rva2VuLmNoYW5nZScsZnVu Y3Rpb24oZGEpe2lmKCFkYSYmcy5nZXRMb2dpblN0YXR1cygpPT09J2Nvbm5lY3Rl ZCcpZy5nZXRMb2dpblN0YXR1cyhudWxsLHRydWUpO30pO2lmKGoodSwnYXBpLndo aXRlbGlzdC5sZW5ndGgnKSl7dz17fTtFUzUodS5hcGkud2hpdGVsaXN0LCdmb3JF YWNoJyx0cnVlLGZ1bmN0aW9uKGRhKXt3W2RhXT0xO30pO31mdW5jdGlvbiBiYShk YSxlYSxmYSxnYSl7dmFyIGhhO2lmKC9eXy8udGVzdChmYSkpe2hhPSdoaWRlJzt9 ZWxzZSBpZih3JiYhd1tlYV0paGE9eDtzd2l0Y2goaGEpe2Nhc2UgJ2hpZGUnOnJl dHVybjtjYXNlICdzdHViJzpyZXR1cm4gZnVuY3Rpb24oKXtyLndhcm4oJ1RoZSBt ZXRob2QgRkIuJXMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBKUyBTREsuJyxl YSk7fTticmVhaztkZWZhdWx0OnJldHVybiBtLmd1YXJkKGZ1bmN0aW9uKCl7aWYo aGE9PT0nd2Fybicpe3Iud2FybignVGhlIG1ldGhvZCBGQi4lcyBpcyBub3Qgb2Zm aWNpYWxseSBzdXBwb3J0ZWQgYnkgJysnRmFjZWJvb2sgYW5kIGFjY2VzcyB0byBp dCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4nLGVhKTtpZigheS5oYXNPd25Qcm9wZXJ0 eShlYSkpe3EubG9nKHEuVFlQRS5XQVJOSU5HLHEuQ0FURUdPUlkuREVQUkVDQVRF RCwnRkIuJytlYSk7dC5sb2coJ2pzc2RrX2Vycm9yJyx7YXBwSWQ6cy5nZXRDbGll bnRJRCgpLGVycm9yOidQcml2YXRlIG1ldGhvZCB1c2VkJyxleHRyYTp7YXJnczpl YX19KTt5W2VhXT10cnVlO319ZnVuY3Rpb24gaWEocWEpe2lmKEVTNSgnQXJyYXkn LCdpc0FycmF5JyxmYWxzZSxxYSkpcmV0dXJuIEVTNShxYSwnbWFwJyx0cnVlLGlh KTtpZihxYSYmdHlwZW9mIHFhPT09J29iamVjdCcmJnFhLl9fd3JhcHBlZClyZXR1 cm4gcWEuX193cmFwcGVkO3JldHVybiB0eXBlb2YgcWE9PT0nZnVuY3Rpb24nJiYv XmZ1bmN0aW9uLy50ZXN0KHFhLnRvU3RyaW5nKCkpP20udW5ndWFyZChxYSk6cWE7 fXZhciBqYT1FUzUoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRz KSwnbWFwJyx0cnVlLGlhKSxrYT1kYS5hcHBseShnYSxqYSksbGEsbWE9dHJ1ZTtp ZihrYSYmdHlwZW9mIGthPT09J29iamVjdCcpe3ZhciBuYT1GdW5jdGlvbigpO25h LnByb3RvdHlwZT1rYTtsYT1uZXcgbmEoKTtsYS5fX3dyYXBwZWQ9a2E7Zm9yKHZh ciBvYSBpbiBrYSl7dmFyIHBhPWthW29hXTtpZih0eXBlb2YgcGEhPT0nZnVuY3Rp b24nfHxvYT09PSdjb25zdHJ1Y3RvcicpY29udGludWU7bWE9ZmFsc2U7bGFbb2Fd PWJhKHBhLGVhKyc6JytvYSxvYSxrYSk7fX1pZighbWEpcmV0dXJuIGxhO3JldHVy biBtYT9rYTpsYTt9LGVhKTt9fWZ1bmN0aW9uIGNhKGRhLGVhKXt2YXIgZmE9ZGE/ aih2LGRhLHRydWUpOnY7RVM1KEVTNSgnT2JqZWN0Jywna2V5cycsZmFsc2UsZWEp LCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKGdhKXt2YXIgaGE9ZWFbZ2FdO2lmKHR5 cGVvZiBoYT09PSdmdW5jdGlvbicpe3ZhciBpYT0oZGE/ZGErJy4nOicnKStnYSxq YT1iYShoYSxpYSxnYSxlYSk7aWYoamEpZmFbZ2FdPWphO319KTt9cy5zZXRTZWN1 cmUoKGZ1bmN0aW9uKCl7dmFyIGRhPS9pZnJhbWVfY2FudmFzfGFwcF9ydW5uZXIv LnRlc3Qod2luZG93Lm5hbWUpLGVhPS9kaWFsb2cvLnRlc3Qod2luZG93Lm5hbWUp O2lmKGxvY2F0aW9uLnByb3RvY29sPT0naHR0cHM6JyYmKHdpbmRvdz09dG9wfHwh KGRhfHxlYSkpKXJldHVybiB0cnVlO2lmKC9fZmJfaHR0cHM/Ly50ZXN0KHdpbmRv dy5uYW1lKSlyZXR1cm4gRVM1KHdpbmRvdy5uYW1lLCdpbmRleE9mJyx0cnVlLCdf ZmJfaHR0cHMnKSE9LTE7fSkoKSk7aCh6LHtwcm92aWRlOmNhfSk7ZS5leHBvcnRz PXo7fSk7Cl9fZCgiZmxhdHRlbk9iamVjdCIsW10sZnVuY3Rpb24oYSxiLGMsZCxl LGYpe2Z1bmN0aW9uIGcoaCl7dmFyIGk9e307Zm9yKHZhciBqIGluIGgpaWYoaC5o YXNPd25Qcm9wZXJ0eShqKSl7dmFyIGs9aFtqXTtpZihudWxsPT09a3x8dW5kZWZp bmVkPT09ayl7Y29udGludWU7fWVsc2UgaWYodHlwZW9mIGs9PSdzdHJpbmcnKXtp W2pdPWs7fWVsc2UgaVtqXT1FUzUoJ0pTT04nLCdzdHJpbmdpZnknLGZhbHNlLGsp O31yZXR1cm4gaTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiQ09SU1JlcXVlc3QiLFsi d3JhcEZ1bmN0aW9uIiwiUXVlcnlTdHJpbmciXSxmdW5jdGlvbihhLGIsYyxkLGUs Zil7dmFyIGc9Yignd3JhcEZ1bmN0aW9uJyksaD1iKCdRdWVyeVN0cmluZycpO2Z1 bmN0aW9uIGkobCxtKXtpZighc2VsZi5YTUxIdHRwUmVxdWVzdClyZXR1cm4gbnVs bDt2YXIgbj1uZXcgWE1MSHR0cFJlcXVlc3QoKSxvPWZ1bmN0aW9uKCl7fTtpZign d2l0aENyZWRlbnRpYWxzJyBpbiBuKXtuLm9wZW4obCxtLHRydWUpO24uc2V0UmVx dWVzdEhlYWRlcignQ29udGVudC10eXBlJywnYXBwbGljYXRpb24veC13d3ctZm9y bS11cmxlbmNvZGVkJyk7fWVsc2UgaWYoc2VsZi5YRG9tYWluUmVxdWVzdCl7bj1u ZXcgWERvbWFpblJlcXVlc3QoKTt0cnl7bi5vcGVuKGwsbSk7bi5vbnByb2dyZXNz PW4ub250aW1lb3V0PW87fWNhdGNoKHApe3JldHVybiBudWxsO319ZWxzZSByZXR1 cm4gbnVsbDt2YXIgcT17c2VuZDpmdW5jdGlvbih0KXtuLnNlbmQodCk7fX0scj1n KGZ1bmN0aW9uKCl7cj1vO2lmKCdvbmxvYWQnIGluIHEpcS5vbmxvYWQobik7fSwn ZW50cnknLCdYTUxIdHRwUmVxdWVzdDpsb2FkJykscz1nKGZ1bmN0aW9uKCl7cz1v O2lmKCdvbmVycm9yJyBpbiBxKXEub25lcnJvcihuKTt9LCdlbnRyeScsJ1hNTEh0 dHBSZXF1ZXN0OmVycm9yJyk7bi5vbmxvYWQ9ZnVuY3Rpb24oKXtyKCk7fTtuLm9u ZXJyb3I9ZnVuY3Rpb24oKXtzKCk7fTtuLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5j dGlvbigpe2lmKG4ucmVhZHlTdGF0ZT09NClpZihuLnN0YXR1cz09MjAwKXtyKCk7 fWVsc2UgcygpO307cmV0dXJuIHE7fWZ1bmN0aW9uIGoobCxtLG4sbyl7bi5zdXBw cmVzc19odHRwX2NvZGU9MTt2YXIgcD1oLmVuY29kZShuKTtpZihtIT0ncG9zdCcp e2w9aC5hcHBlbmRUb1VybChsLHApO3A9Jyc7fXZhciBxPWkobSxsKTtpZighcSly ZXR1cm4gZmFsc2U7cS5vbmxvYWQ9ZnVuY3Rpb24ocil7byhFUzUoJ0pTT04nLCdw YXJzZScsZmFsc2Usci5yZXNwb25zZVRleHQpKTt9O3Eub25lcnJvcj1mdW5jdGlv bihyKXtpZihyLnJlc3BvbnNlVGV4dCl7byhFUzUoJ0pTT04nLCdwYXJzZScsZmFs c2Usci5yZXNwb25zZVRleHQpKTt9ZWxzZSBvKHtlcnJvcjp7dHlwZTonaHR0cCcs bWVzc2FnZTondW5rbm93biBlcnJvcicsc3RhdHVzOnIuc3RhdHVzfX0pO307cS5z ZW5kKHApO3JldHVybiB0cnVlO312YXIgaz17ZXhlY3V0ZTpqfTtlLmV4cG9ydHM9 azt9KTsKX19kKCJGbGFzaFJlcXVlc3QiLFsiRE9NV3JhcHBlciIsIkZsYXNoIiwi R2xvYmFsQ2FsbGJhY2siLCJRdWVyeVN0cmluZyIsIlF1ZXVlIl0sZnVuY3Rpb24o YSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTVdyYXBwZXInKSxoPWIoJ0ZsYXNoJyks aT1iKCdHbG9iYWxDYWxsYmFjaycpLGo9YignUXVlcnlTdHJpbmcnKSxrPWIoJ1F1 ZXVlJyksbCxtPXt9LG4sbztmdW5jdGlvbiBwKCl7aWYoIW4pdGhyb3cgbmV3IEVy cm9yKCdzd2ZVcmwgaGFzIG5vdCBiZWVuIHNldCcpO3ZhciBzPWkuY3JlYXRlKGZ1 bmN0aW9uKCl7bC5zdGFydChmdW5jdGlvbih1KXt2YXIgdj1vLmV4ZWN1dGUodS5t ZXRob2QsdS51cmwsdS5ib2R5KTtpZighdil0aHJvdyBuZXcgRXJyb3IoJ0NvdWxk IGNyZWF0ZSByZXF1ZXN0Jyk7bVt2XT11LmNhbGxiYWNrO30pO30pLHQ9aS5jcmVh dGUoZnVuY3Rpb24odSx2LHcpe3ZhciB4O3RyeXt4PUVTNSgnSlNPTicsJ3BhcnNl JyxmYWxzZSxkZWNvZGVVUklDb21wb25lbnQodykpO31jYXRjaCh5KXt4PXtlcnJv cjp7dHlwZTonU3ludGF4RXJyb3InLG1lc3NhZ2U6eS5tZXNzYWdlLHN0YXR1czp2 LHJhdzp3fX07fW1bdV0oeCk7ZGVsZXRlIG1bdV07fSk7bz1oLmVtYmVkKG4sZy5n ZXRSb290KCksbnVsbCx7bG9nOmZhbHNlLGluaXRDYWxsYmFjazpzLHJlcXVlc3RD YWxsYmFjazp0fSk7fWZ1bmN0aW9uIHEocyx0LHUsdil7dS5zdXBwcmVzc19odHRw X2NvZGU9MTtpZighdS5tZXRob2QpdS5tZXRob2Q9dDt2YXIgdz1qLmVuY29kZSh1 KTtpZih0PT09J2dldCcmJnMubGVuZ3RoK3cubGVuZ3RoPDIwMDApe3M9ai5hcHBl bmRUb1VybChzLHcpO3c9Jyc7fWVsc2UgdD0ncG9zdCc7aWYoIWwpe2lmKCFoLmlz QXZhaWxhYmxlKCkpcmV0dXJuIGZhbHNlO2w9bmV3IGsoKTtwKCk7fWwuZW5xdWV1 ZSh7bWV0aG9kOnQsdXJsOnMsYm9keTp3LGNhbGxiYWNrOnZ9KTtyZXR1cm4gdHJ1 ZTt9dmFyIHI9e3NldFN3ZlVybDpmdW5jdGlvbihzKXtuPXM7fSxleGVjdXRlOnF9 O2UuZXhwb3J0cz1yO30pOwpfX2QoIkpTT05QUmVxdWVzdCIsWyJET01XcmFwcGVy IiwiR2xvYmFsQ2FsbGJhY2siLCJRdWVyeVN0cmluZyJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdET01XcmFwcGVyJyksaD1iKCdHbG9iYWxDYWxsYmFj aycpLGk9YignUXVlcnlTdHJpbmcnKTtmdW5jdGlvbiBqKGwsbSxuLG8pe3ZhciBw PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLHE9ZnVuY3Rpb24ocyl7 cT1mdW5jdGlvbigpe307aC5yZW1vdmUobi5jYWxsYmFjayk7byhzKTtwLnBhcmVu dE5vZGUucmVtb3ZlQ2hpbGQocCk7fTtuLmNhbGxiYWNrPWguY3JlYXRlKHEpO2lm KCFuLm1ldGhvZCluLm1ldGhvZD1tO2w9aS5hcHBlbmRUb1VybChsLG4pO2lmKGwu bGVuZ3RoPjIwMDApe2gucmVtb3ZlKG4uY2FsbGJhY2spO3JldHVybiBmYWxzZTt9 cC5vbmVycm9yPWZ1bmN0aW9uKCl7cSh7ZXJyb3I6e3R5cGU6J2h0dHAnLG1lc3Nh Z2U6J3Vua25vd24gZXJyb3InfX0pO307dmFyIHI9ZnVuY3Rpb24oKXtzZXRUaW1l b3V0KGZ1bmN0aW9uKCl7cSh7ZXJyb3I6e3R5cGU6J2h0dHAnLG1lc3NhZ2U6J3Vu a25vd24gZXJyb3InfX0pO30sMCk7fTtpZihwLmFkZEV2ZW50TGlzdGVuZXIpe3Au YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcscixmYWxzZSk7fWVsc2UgcC5vbnJlYWR5 c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZigvbG9hZGVkfGNvbXBsZXRlLy50ZXN0 KHRoaXMucmVhZHlTdGF0ZSkpcigpO307cC5zcmM9bDtnLmdldFJvb3QoKS5hcHBl bmRDaGlsZChwKTtyZXR1cm4gdHJ1ZTt9dmFyIGs9e2V4ZWN1dGU6an07ZS5leHBv cnRzPWs7fSk7Cl9fZCgiQXJndW1lbnRFcnJvciIsWyJNYW5hZ2VkRXJyb3IiXSxm dW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignTWFuYWdlZEVycm9yJyk7ZnVu Y3Rpb24gaChpLGope2cucHJvdG90eXBlLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMs YXJndW1lbnRzKTt9aC5wcm90b3R5cGU9bmV3IGcoKTtoLnByb3RvdHlwZS5jb25z dHJ1Y3Rvcj1oO2UuZXhwb3J0cz1oO30pOwpfX2QoIkFwaUNsaWVudCIsWyJjb3B5 UHJvcGVydGllcyIsImZsYXR0ZW5PYmplY3QiLCJzcHJpbnRmIiwiQ09SU1JlcXVl c3QiLCJGbGFzaFJlcXVlc3QiLCJKU09OUFJlcXVlc3QiLCJMb2ciLCJVcmxNYXAi LCJVUkwiLCJBcmd1bWVudEVycm9yIiwiQXNzZXJ0IiwiQXBpQ2xpZW50Q29uZmln Il0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2NvcHlQcm9wZXJ0aWVz JyksaD1iKCdmbGF0dGVuT2JqZWN0JyksaT1iKCdzcHJpbnRmJyksaj1iKCdDT1JT UmVxdWVzdCcpLGs9YignRmxhc2hSZXF1ZXN0JyksbD1iKCdKU09OUFJlcXVlc3Qn KSxtPWIoJ0xvZycpLG49YignVXJsTWFwJyksbz1iKCdVUkwnKSxwPWIoJ0FyZ3Vt ZW50RXJyb3InKSxxPWIoJ0Fzc2VydCcpLHI9YignQXBpQ2xpZW50Q29uZmlnJyks cyx0LHUsdix3PXtnZXQ6dHJ1ZSxwb3N0OnRydWUsJ2RlbGV0ZSc6dHJ1ZSxwdXQ6 dHJ1ZX0seD17ZnFsX3F1ZXJ5OnRydWUsZnFsX211bHRpcXVlcnk6dHJ1ZSxmcmll bmRzX2dldDp0cnVlLG5vdGlmaWNhdGlvbnNfZ2V0OnRydWUsc3RyZWFtX2dldDp0 cnVlLHVzZXJzX2dldGluZm86dHJ1ZX07ZnVuY3Rpb24geShjYSxkYSxlYSxmYSl7 aWYoIWVhLmFjY2Vzc190b2tlbillYS5hY2Nlc3NfdG9rZW49cztlYS5wcmV0dHk9 MDtpZih2KWcoZWEsdik7ZWE9aChlYSk7aWYoIWZhKXttLndhcm4oJ05vIGNhbGxi YWNrIHBhc3NlZCB0byB0aGUgQXBpQ2xpZW50IGZvciAlcycsY2EpO2ZhPWZ1bmN0 aW9uKCl7fTt9dmFyIGdhPXtqc29ucDpsLGNvcnM6aixmbGFzaDprfSxoYTtpZihl YS50cmFuc3BvcnQpe2hhPVtlYS50cmFuc3BvcnRdO2RlbGV0ZSBlYS50cmFuc3Bv cnQ7fWVsc2UgaGE9Wydqc29ucCcsJ2NvcnMnLCdmbGFzaCddO3ZhciBpYT1mdW5j dGlvbihtYSl7dmFyIG5hPWZhbHNlO2lmKHQmJm1hJiZ0eXBlb2YgbWE9PSdvYmpl Y3QnKXtpZihtYS5lcnJvcil7aWYobWEuZXJyb3I9PSdpbnZhbGlkX3Rva2VuJ3x8 KG1hLmVycm9yLnR5cGU9PSdPQXV0aEV4Y2VwdGlvbicmJm1hLmVycm9yLmNvZGU9 PTE5MCkpbmE9dHJ1ZTt9ZWxzZSBpZihtYS5lcnJvcl9jb2RlKWlmKG1hLmVycm9y X2NvZGU9PScxOTAnKW5hPXRydWU7aWYobmEpdCgpO31mYShtYSk7fTtmb3IodmFy IGphPTA7amE8aGEubGVuZ3RoO2phKyspe3ZhciBrYT1nYVtoYVtqYV1dLGxhPWco e30sZWEpO2lmKGthLmV4ZWN1dGUoY2EsZGEsbGEsaWEpKXJldHVybjt9ZmEoe2Vy cm9yOnt0eXBlOiduby10cmFuc3BvcnQnLG1lc3NhZ2U6J0NvdWxkIG5vdCBmaW5k IGEgdXNhYmxlIHRyYW5zcG9ydCBmb3IgcmVxdWVzdCd9fSk7fWZ1bmN0aW9uIHoo Y2Epe3EuaXNTdHJpbmcoY2EsJ0ludmFsaWQgcGF0aCcpO3ZhciBkYSxlYT17fTt0 cnl7ZGE9bmV3IG8oY2EpO31jYXRjaChmYSl7dGhyb3cgbmV3IHAoZmEubWVzc2Fn ZSxmYSk7fUVTNShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMs MSksJ2ZvckVhY2gnLHRydWUsZnVuY3Rpb24oamEpe2VhW3R5cGVvZiBqYV09amE7 fSk7dmFyIGdhPShlYS5zdHJpbmd8fCdnZXQnKS50b0xvd2VyQ2FzZSgpLGhhPWco ZWEub2JqZWN0fHx7fSxkYS5nZXRQYXJzZWRTZWFyY2goKSksaWE9ZWFbJ2Z1bmN0 aW9uJ107cS5pc1RydWUoZ2EgaW4gdyxpKCdJbnZhbGlkIG1ldGhvZCBwYXNzZWQg dG8gQXBpQ2xpZW50OiAlcycsZ2EpKTtoYS5tZXRob2Q9Z2E7ZGE9bi5yZXNvbHZl KCdncmFwaCcpK2RhLmdldFBhdGgoKTt5KGRhLGdhPT0nZ2V0Jz8nZ2V0JzoncG9z dCcsaGEsaWEpO31mdW5jdGlvbiBhYShjYSxkYSl7cS5pc09iamVjdChjYSk7cS5p c1N0cmluZyhjYS5tZXRob2QsJ21ldGhvZCBtaXNzaW5nJyk7dmFyIGVhPWNhLm1l dGhvZC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJy4nLCdfJyk7Y2EuZm9ybWF0PSdq c29uLXN0cmluZ3MnO2NhLmFwaV9rZXk9dTt2YXIgZmE9ZWEgaW4geD8nYXBpX3Jl YWQnOidhcGknLGdhPW4ucmVzb2x2ZShmYSkrJy9yZXN0c2VydmVyLnBocCc7eShn YSwnZ2V0JyxjYSxkYSk7fXZhciBiYT17c2V0QWNjZXNzVG9rZW46ZnVuY3Rpb24o Y2Epe3M9Y2E7fSxzZXRJbnZhbGlkQWNjZXNzVG9rZW5IYW5kbGVyOmZ1bmN0aW9u KGNhKXt0PWNhO30sc2V0Q2xpZW50SUQ6ZnVuY3Rpb24oY2Epe3U9Y2E7fSxzZXRE ZWZhdWx0UGFyYW1zOmZ1bmN0aW9uKGNhKXt2PWNhO30scmVzdDphYSxncmFwaDp6 fTtrLnNldFN3ZlVybChyLkZsYXNoUmVxdWVzdC5zd2ZVcmwpO2UuZXhwb3J0cz1i YTt9KTsKX19kKCJzZGsuYXBpIixbIkFwaUNsaWVudCIsInNkay5SdW50aW1lIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0FwaUNsaWVudCcpLGg9Yign c2RrLlJ1bnRpbWUnKSxpO2guc3Vic2NyaWJlKCdDbGllbnRJRC5jaGFuZ2UnLGZ1 bmN0aW9uKGspe2cuc2V0Q2xpZW50SUQoayk7fSk7aC5zdWJzY3JpYmUoJ0FjY2Vz c1Rva2VuLmNoYW5nZScsZnVuY3Rpb24oayl7aT1rO2cuc2V0QWNjZXNzVG9rZW4o ayk7fSk7Zy5zZXREZWZhdWx0UGFyYW1zKHtzZGs6J2pvZXknfSk7Zy5zZXRJbnZh bGlkQWNjZXNzVG9rZW5IYW5kbGVyKGZ1bmN0aW9uKCl7aWYoaT09PWguZ2V0QWNj ZXNzVG9rZW4oKSloLnNldEFjY2Vzc1Rva2VuKG51bGwpO30pO2Z1bmN0aW9uIGoo KXtpZih0eXBlb2YgYXJndW1lbnRzWzBdPT09J3N0cmluZycpe2cuZ3JhcGguYXBw bHkoZyxhcmd1bWVudHMpO31lbHNlIGcucmVzdC5hcHBseShnLGFyZ3VtZW50cyk7 fWUuZXhwb3J0cz1qO30pOwpfX2QoImxlZ2FjeTpmYi5hcGkiLFsiRkIiLCJzZGsu YXBpIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YignRkInKSxmPWIoJ3Nkay5h cGknKTtlLnByb3ZpZGUoJycse2FwaTpmfSk7fSwzKTsKX19kKCJzZGsuQ2FudmFz LkVudmlyb25tZW50IixbInNkay5SUEMiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9Yignc2RrLlJQQycpO2Z1bmN0aW9uIGgoayl7Zy5yZW1vdGUuZ2V0UGFn ZUluZm8oZnVuY3Rpb24obCl7ayhsLnJlc3VsdCk7fSk7fWZ1bmN0aW9uIGkoayxs KXtnLnJlbW90ZS5zY3JvbGxUbyh7eDprfHwwLHk6bHx8MH0pO31nLnN0dWIoJ2dl dFBhZ2VJbmZvJyk7Zy5zdHViKCdzY3JvbGxUbycpO3ZhciBqPXtnZXRQYWdlSW5m bzpoLHNjcm9sbFRvOml9O2UuZXhwb3J0cz1qO30pOwpfX2QoInNkay5JbnRsIixb IkxvZyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdMb2cnKSxoPSgn WycrJy4hPycrJ1x1MzAwMicrJ1x1RkYwMScrJ1x1RkYxRicrJ1x1MDk2NCcrJ1x1 MjAyNicrJ1x1MEVBRicrJ1x1MTgwMScrJ1x1MEUyRicrJ1x1RkYwRScrJ10nKTtm dW5jdGlvbiBpKGwpe2lmKHR5cGVvZiBsIT0nc3RyaW5nJylyZXR1cm4gZmFsc2U7 cmV0dXJuICEhbC5tYXRjaChuZXcgUmVnRXhwKGgrJ1snKycpIicrIiciKydcdTAw QkInKydcdTBGM0InKydcdTBGM0QnKydcdTIwMTknKydcdTIwMUQnKydcdTIwM0En KydcdTMwMDknKydcdTMwMEInKydcdTMwMEQnKydcdTMwMEYnKydcdTMwMTEnKydc dTMwMTUnKydcdTMwMTcnKydcdTMwMTknKydcdTMwMUInKydcdTMwMUUnKydcdTMw MUYnKydcdUZEM0YnKydcdUZGMDcnKydcdUZGMDknKydcdUZGM0QnKydcXHMnKydd KiQnKSk7fWZ1bmN0aW9uIGoobCxtKXtpZihtIT09dW5kZWZpbmVkKWlmKHR5cGVv ZiBtIT0nb2JqZWN0Jyl7Zy5lcnJvcignVGhlIHNlY29uZCBhcmcgdG8gRkIuSW50 bC50eCgpIG11c3QgYmUgYW4gT2JqZWN0IGZvciAnKydGQi5JbnRsLnR4KCcrbCsn LCAuLi4pJyk7fWVsc2V7dmFyIG47Zm9yKHZhciBvIGluIG0paWYobS5oYXNPd25Q cm9wZXJ0eShvKSl7aWYoaShtW29dKSl7bj1uZXcgUmVnRXhwKCdcXHsnK28rJ1xc fScraCsnKicsJ2cnKTt9ZWxzZSBuPW5ldyBSZWdFeHAoJ1xceycrbysnXFx9Jywn ZycpO2w9bC5yZXBsYWNlKG4sbVtvXSk7fX1yZXR1cm4gbDt9ZnVuY3Rpb24gaygp e3Rocm93IG5ldyBFcnJvcignUGxhY2Vob2xkZXIgZnVuY3Rpb24nKTt9ay5fPWo7 ZS5leHBvcnRzPXt0eDprfTt9KTsKX19kKCJzZGsuRGlhbG9nIixbInNkay5DYW52 YXMuRW52aXJvbm1lbnQiLCJzZGsuQ29udGVudCIsInNkay5ET00iLCJET01FdmVu dExpc3RlbmVyIiwic2RrLkludGwiLCJPYnNlcnZhYmxlTWl4aW4iLCJzZGsuUnVu dGltZSIsIlR5cGUiLCJVc2VyQWdlbnQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9Yignc2RrLkNhbnZhcy5FbnZpcm9ubWVudCcpLGg9Yignc2RrLkNvbnRl bnQnKSxpPWIoJ3Nkay5ET00nKSxqPWIoJ0RPTUV2ZW50TGlzdGVuZXInKSxrPWIo J3Nkay5JbnRsJyksbD1iKCdPYnNlcnZhYmxlTWl4aW4nKSxtPWIoJ3Nkay5SdW50 aW1lJyksbj1iKCdUeXBlJyksbz1iKCdVc2VyQWdlbnQnKSxwPW4uZXh0ZW5kKHtj b25zdHJ1Y3RvcjpmdW5jdGlvbihyLHMpe3RoaXMucGFyZW50KCk7dGhpcy5pZD1y O3RoaXMuZGlzcGxheT1zO2lmKCFxLl9kaWFsb2dzKXtxLl9kaWFsb2dzPXt9O3Eu X2FkZE9yaWVudGF0aW9uSGFuZGxlcigpO31xLl9kaWFsb2dzW3JdPXRoaXM7fX0s bCkscT17bmV3SW5zdGFuY2U6ZnVuY3Rpb24ocixzKXtyZXR1cm4gbmV3IHAocixz KTt9LF9kaWFsb2dzOm51bGwsX2xhc3RZT2Zmc2V0OjAsX2xvYWRlckVsOm51bGws X292ZXJsYXlFbDpudWxsLF9zdGFjazpbXSxfYWN0aXZlOm51bGwsZ2V0OmZ1bmN0 aW9uKHIpe3JldHVybiBxLl9kaWFsb2dzW3JdO30sX2ZpbmRSb290OmZ1bmN0aW9u KHIpe3doaWxlKHIpe2lmKGkuY29udGFpbnNDc3MociwnZmJfZGlhbG9nJykpcmV0 dXJuIHI7cj1yLnBhcmVudE5vZGU7fX0sX2NyZWF0ZVdXV0xvYWRlcjpmdW5jdGlv bihyKXtyPXI/cjo0NjA7cmV0dXJuIHEuY3JlYXRlKHtjb250ZW50OignPGRpdiBj bGFzcz0iZGlhbG9nX3RpdGxlIj4nKycgIDxhIGlkPSJmYl9kaWFsb2dfbG9hZGVy X2Nsb3NlIj4nKycgICAgPGRpdiBjbGFzcz0iZmJfZGlhbG9nX2Nsb3NlX2ljb24i PjwvZGl2PicrJyAgPC9hPicrJyAgPHNwYW4+RmFjZWJvb2s8L3NwYW4+JysnICA8 ZGl2IHN0eWxlPSJjbGVhcjpib3RoOyI+PC9kaXY+JysnPC9kaXY+JysnPGRpdiBj bGFzcz0iZGlhbG9nX2NvbnRlbnQiPjwvZGl2PicrJzxkaXYgY2xhc3M9ImRpYWxv Z19mb290ZXIiPjwvZGl2PicpLHdpZHRoOnJ9KTt9LF9jcmVhdGVNb2JpbGVMb2Fk ZXI6ZnVuY3Rpb24oKXt2YXIgcj1vLm5hdGl2ZUFwcCgpPycnOignPHRhYmxlPicr JyAgPHRib2R5PicrJyAgICA8dHI+JysnICAgICAgPHRkIGNsYXNzPSJoZWFkZXJf bGVmdCI+JysnICAgICAgICA8bGFiZWwgY2xhc3M9InRvdWNoYWJsZV9idXR0b24i PicrJyAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJytrLnR4 Ll8oIkNhbmNlbCIpKyciJysnICAgICAgICAgICAgaWQ9ImZiX2RpYWxvZ19sb2Fk ZXJfY2xvc2UiLz4nKycgICAgICAgIDwvbGFiZWw+JysnICAgICAgPC90ZD4nKycg ICAgICA8dGQgY2xhc3M9ImhlYWRlcl9jZW50ZXIiPicrJyAgICAgICAgPGRpdj4n K2sudHguXygiTG9hZGluZy4uLiIpKyc8L2Rpdj4nKycgICAgICA8L3RkPicrJyAg ICAgIDx0ZCBjbGFzcz0iaGVhZGVyX3JpZ2h0Ij4nKycgICAgICA8L3RkPicrJyAg ICA8L3RyPicrJyAgPC90Ym9keT4nKyc8L3RhYmxlPicpO3JldHVybiBxLmNyZWF0 ZSh7Y2xhc3NlczonbG9hZGluZycrKG8uaXBhZCgpPycgY2VudGVyZWQnOicnKSxj b250ZW50OignPGRpdiBjbGFzcz0iZGlhbG9nX2hlYWRlciI+JytyKyc8L2Rpdj4n KX0pO30sX3Jlc3RvcmVCb2R5UG9zaXRpb246ZnVuY3Rpb24oKXtpZighby5pcGFk KCkpe3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5Jylb MF07aS5yZW1vdmVDc3MociwnZmJfaGlkZGVuJyk7fX0sX3Nob3dJUGFkT3Zlcmxh eTpmdW5jdGlvbigpe2lmKCFvLmlwYWQoKSlyZXR1cm47aWYoIXEuX292ZXJsYXlF bCl7cS5fb3ZlcmxheUVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3Eu X292ZXJsYXlFbC5zZXRBdHRyaWJ1dGUoJ2lkJywnZmJfZGlhbG9nX2lwYWRfb3Zl cmxheScpO2guYXBwZW5kKHEuX292ZXJsYXlFbCxudWxsKTt9cS5fb3ZlcmxheUVs LmNsYXNzTmFtZT0nJzt9LF9oaWRlSVBhZE92ZXJsYXk6ZnVuY3Rpb24oKXtpZihv LmlwYWQoKSlxLl9vdmVybGF5RWwuY2xhc3NOYW1lPSdoaWRkZW4nO30sc2hvd0xv YWRlcjpmdW5jdGlvbihyLHMpe3EuX3Nob3dJUGFkT3ZlcmxheSgpO2lmKCFxLl9s b2FkZXJFbClxLl9sb2FkZXJFbD1xLl9maW5kUm9vdChvLm1vYmlsZSgpP3EuX2Ny ZWF0ZU1vYmlsZUxvYWRlcigpOnEuX2NyZWF0ZVdXV0xvYWRlcihzKSk7aWYoIXIp cj1mdW5jdGlvbigpe307dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zi X2RpYWxvZ19sb2FkZXJfY2xvc2UnKTtpLnJlbW92ZUNzcyh0LCdmYl9oaWRkZW4n KTt0Lm9uY2xpY2s9ZnVuY3Rpb24oKXtxLl9oaWRlTG9hZGVyKCk7cS5fcmVzdG9y ZUJvZHlQb3NpdGlvbigpO3EuX2hpZGVJUGFkT3ZlcmxheSgpO3IoKTt9O3ZhciB1 PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYl9kaWFsb2dfaXBhZF9vdmVybGF5 Jyk7aWYodSl1Lm9udG91Y2hzdGFydD10Lm9uY2xpY2s7cS5fbWFrZUFjdGl2ZShx Ll9sb2FkZXJFbCk7fSxfaGlkZUxvYWRlcjpmdW5jdGlvbigpe2lmKHEuX2xvYWRl ckVsJiZxLl9sb2FkZXJFbD09cS5fYWN0aXZlKXEuX2xvYWRlckVsLnN0eWxlLnRv cD0nLTEwMDAwcHgnO30sX21ha2VBY3RpdmU6ZnVuY3Rpb24ocil7cS5fc2V0RGlh bG9nU2l6ZXMoKTtxLl9sb3dlckFjdGl2ZSgpO3EuX2FjdGl2ZT1yO2lmKG0uaXNF bnZpcm9ubWVudChtLkVOVklST05NRU5UUy5DQU5WQVMpKWcuZ2V0UGFnZUluZm8o ZnVuY3Rpb24ocyl7cS5fY2VudGVyQWN0aXZlKHMpO30pO3EuX2NlbnRlckFjdGl2 ZSgpO30sX2xvd2VyQWN0aXZlOmZ1bmN0aW9uKCl7aWYoIXEuX2FjdGl2ZSlyZXR1 cm47cS5fYWN0aXZlLnN0eWxlLnRvcD0nLTEwMDAwcHgnO3EuX2FjdGl2ZT1udWxs O30sX3JlbW92ZVN0YWNrZWQ6ZnVuY3Rpb24ocil7cS5fc3RhY2s9RVM1KHEuX3N0 YWNrLCdmaWx0ZXInLHRydWUsZnVuY3Rpb24ocyl7cmV0dXJuIHMhPXI7fSk7fSxf Y2VudGVyQWN0aXZlOmZ1bmN0aW9uKHIpe3ZhciBzPXEuX2FjdGl2ZTtpZighcyly ZXR1cm47dmFyIHQ9aS5nZXRWaWV3cG9ydEluZm8oKSx1PXBhcnNlSW50KHMub2Zm c2V0V2lkdGgsMTApLHY9cGFyc2VJbnQocy5vZmZzZXRIZWlnaHQsMTApLHc9dC5z Y3JvbGxMZWZ0Kyh0LndpZHRoLXUpLzIseD0odC5oZWlnaHQtdikvMi41O2lmKHc8 eCl4PXc7dmFyIHk9dC5oZWlnaHQtdi14LHo9KHQuaGVpZ2h0LXYpLzI7aWYocil6 PXIuc2Nyb2xsVG9wLXIub2Zmc2V0VG9wKyhyLmNsaWVudEhlaWdodC12KS8yO2lm KHo8eCl7ej14O31lbHNlIGlmKHo+eSl6PXk7eis9dC5zY3JvbGxUb3A7aWYoby5t b2JpbGUoKSl7dmFyIGFhPTEwMDtpZihvLmlwYWQoKSl7YWErPSh0LmhlaWdodC12 KS8yO31lbHNle3ZhciBiYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn Ym9keScpWzBdO2kuYWRkQ3NzKGJhLCdmYl9oaWRkZW4nKTt3PTEwMDAwO3o9MTAw MDA7fXZhciBjYT1pLmdldEJ5Q2xhc3MoJ2ZiX2RpYWxvZ19wYWRkaW5nJyxzKTtp ZihjYS5sZW5ndGgpY2FbMF0uc3R5bGUuaGVpZ2h0PWFhKydweCc7fXMuc3R5bGUu bGVmdD0odz4wP3c6MCkrJ3B4JztzLnN0eWxlLnRvcD0oej4wP3o6MCkrJ3B4Jzt9 LF9zZXREaWFsb2dTaXplczpmdW5jdGlvbigpe2lmKCFvLm1vYmlsZSgpfHxvLmlw YWQoKSlyZXR1cm47Zm9yKHZhciByIGluIHEuX2RpYWxvZ3MpaWYocS5fZGlhbG9n cy5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIHM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQocik7aWYocyl7cy5zdHlsZS53aWR0aD1xLmdldERlZmF1bHRTaXplKCkud2lk dGgrJ3B4JztzLnN0eWxlLmhlaWdodD1xLmdldERlZmF1bHRTaXplKCkuaGVpZ2h0 KydweCc7fX19LGdldERlZmF1bHRTaXplOmZ1bmN0aW9uKCl7aWYoby5tb2JpbGUo KSlpZihvLmlwYWQoKSl7cmV0dXJuIHt3aWR0aDo1MDAsaGVpZ2h0OjU5MH07fWVs c2UgaWYoby5hbmRyb2lkKCkpe3JldHVybiB7d2lkdGg6c2NyZWVuLmF2YWlsV2lk dGgsaGVpZ2h0OnNjcmVlbi5hdmFpbEhlaWdodH07fWVsc2V7dmFyIHI9d2luZG93 LmlubmVyV2lkdGgscz13aW5kb3cuaW5uZXJIZWlnaHQsdD1yL3M+MS4yO3JldHVy biB7d2lkdGg6cixoZWlnaHQ6TWF0aC5tYXgocywodD9zY3JlZW4ud2lkdGg6c2Ny ZWVuLmhlaWdodCkpfTt9cmV0dXJuIHt3aWR0aDo1NzUsaGVpZ2h0OjI0MH07fSxf aGFuZGxlT3JpZW50YXRpb25DaGFuZ2U6ZnVuY3Rpb24ocil7aWYoby5hbmRyb2lk KCkmJnNjcmVlbi5hdmFpbFdpZHRoPT1xLl9hdmFpbFNjcmVlbldpZHRoKXtzZXRU aW1lb3V0KHEuX2hhbmRsZU9yaWVudGF0aW9uQ2hhbmdlLDUwKTtyZXR1cm47fXEu X2F2YWlsU2NyZWVuV2lkdGg9c2NyZWVuLmF2YWlsV2lkdGg7aWYoby5pcGFkKCkp e3EuX2NlbnRlckFjdGl2ZSgpO31lbHNle3ZhciBzPXEuZ2V0RGVmYXVsdFNpemUo KS53aWR0aDtmb3IodmFyIHQgaW4gcS5fZGlhbG9ncylpZihxLl9kaWFsb2dzLmhh c093blByb3BlcnR5KHQpKXt2YXIgdT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0 KTtpZih1KXUuc3R5bGUud2lkdGg9cysncHgnO319fSxfYWRkT3JpZW50YXRpb25I YW5kbGVyOmZ1bmN0aW9uKCl7aWYoIW8ubW9iaWxlKCkpcmV0dXJuO3ZhciByPSJv bm9yaWVudGF0aW9uY2hhbmdlIiBpbiB3aW5kb3c/J29yaWVudGF0aW9uY2hhbmdl JzoncmVzaXplJztxLl9hdmFpbFNjcmVlbldpZHRoPXNjcmVlbi5hdmFpbFdpZHRo O2ouYWRkKHdpbmRvdyxyLHEuX2hhbmRsZU9yaWVudGF0aW9uQ2hhbmdlKTt9LGNy ZWF0ZTpmdW5jdGlvbihyKXtyPXJ8fHt9O3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ2RpdicpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksdT0n ZmJfZGlhbG9nJztpZihyLmNsb3NlSWNvbiYmci5vbkNsb3NlKXt2YXIgdj1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7di5jbGFzc05hbWU9J2ZiX2RpYWxvZ19j bG9zZV9pY29uJzt2Lm9uY2xpY2s9ci5vbkNsb3NlO3MuYXBwZW5kQ2hpbGQodik7 fXUrPScgJysoci5jbGFzc2VzfHwnJyk7aWYoby5pZSgpKXt1Kz0nIGZiX2RpYWxv Z19sZWdhY3knO0VTNShbJ3ZlcnRfbGVmdCcsJ3ZlcnRfcmlnaHQnLCdob3Jpel90 b3AnLCdob3Jpel9ib3R0b20nLCd0b3BfbGVmdCcsJ3RvcF9yaWdodCcsJ2JvdHRv bV9sZWZ0JywnYm90dG9tX3JpZ2h0J10sJ2ZvckVhY2gnLHRydWUsZnVuY3Rpb24o eSl7dmFyIHo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3ouY2xhc3NO YW1lPSdmYl9kaWFsb2dfJyt5O3MuYXBwZW5kQ2hpbGQoeik7fSk7fWVsc2UgdSs9 by5tb2JpbGUoKT8nIGZiX2RpYWxvZ19tb2JpbGUnOicgZmJfZGlhbG9nX2FkdmFu Y2VkJztpZihyLmNvbnRlbnQpaC5hcHBlbmQoci5jb250ZW50LHQpO3MuY2xhc3NO YW1lPXU7dmFyIHc9cGFyc2VJbnQoci53aWR0aCwxMCk7aWYoIWlzTmFOKHcpKXMu c3R5bGUud2lkdGg9dysncHgnO3QuY2xhc3NOYW1lPSdmYl9kaWFsb2dfY29udGVu dCc7cy5hcHBlbmRDaGlsZCh0KTtpZihvLm1vYmlsZSgpKXt2YXIgeD1kb2N1bWVu dC5jcmVhdGVFbGVtZW50KCdkaXYnKTt4LmNsYXNzTmFtZT0nZmJfZGlhbG9nX3Bh ZGRpbmcnO3MuYXBwZW5kQ2hpbGQoeCk7fWguYXBwZW5kKHMpO2lmKHIudmlzaWJs ZSlxLnNob3cocyk7cmV0dXJuIHQ7fSxzaG93OmZ1bmN0aW9uKHIpe3ZhciBzPXEu X2ZpbmRSb290KHIpO2lmKHMpe3EuX3JlbW92ZVN0YWNrZWQocyk7cS5faGlkZUxv YWRlcigpO3EuX21ha2VBY3RpdmUocyk7cS5fc3RhY2sucHVzaChzKTtpZignZmJD YWxsSUQnIGluIHIpcS5nZXQoci5mYkNhbGxJRCkuaW5mb3JtKCdpZnJhbWVfc2hv dycpO319LGhpZGU6ZnVuY3Rpb24ocil7dmFyIHM9cS5fZmluZFJvb3Qocik7cS5f aGlkZUxvYWRlcigpO2lmKHM9PXEuX2FjdGl2ZSl7cS5fbG93ZXJBY3RpdmUoKTtx Ll9yZXN0b3JlQm9keVBvc2l0aW9uKCk7cS5faGlkZUlQYWRPdmVybGF5KCk7aWYo J2ZiQ2FsbElEJyBpbiByKXEuZ2V0KHIuZmJDYWxsSUQpLmluZm9ybSgnaWZyYW1l X2hpZGUnKTt9fSxyZW1vdmU6ZnVuY3Rpb24ocil7cj1xLl9maW5kUm9vdChyKTtp ZihyKXt2YXIgcz1xLl9hY3RpdmU9PXI7cS5fcmVtb3ZlU3RhY2tlZChyKTtpZihz KXtxLl9oaWRlTG9hZGVyKCk7aWYocS5fc3RhY2subGVuZ3RoPjApe3Euc2hvdyhx Ll9zdGFjay5wb3AoKSk7fWVsc2V7cS5fbG93ZXJBY3RpdmUoKTtxLl9yZXN0b3Jl Qm9keVBvc2l0aW9uKCk7cS5faGlkZUlQYWRPdmVybGF5KCk7fX1lbHNlIGlmKHEu X2FjdGl2ZT09PW51bGwmJnEuX3N0YWNrLmxlbmd0aD4wKXEuc2hvdyhxLl9zdGFj ay5wb3AoKSk7c2V0VGltZW91dChmdW5jdGlvbigpe3IucGFyZW50Tm9kZS5yZW1v dmVDaGlsZChyKTt9LDMwMDApO319LGlzQWN0aXZlOmZ1bmN0aW9uKHIpe3ZhciBz PXEuX2ZpbmRSb290KHIpO3JldHVybiBzJiZzPT09cS5fYWN0aXZlO319O2UuZXhw b3J0cz1xO30pOwpfX2QoInNkay5GcmljdGlvbmxlc3MiLFsic2RrLkF1dGgiLCJz ZGsuYXBpIiwic2RrLkV2ZW50Iiwic2RrLkRpYWxvZyJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdzZGsuQXV0aCcpLGg9Yignc2RrLmFwaScpLGk9Yign c2RrLkV2ZW50Jyksaj1iKCdzZGsuRGlhbG9nJyksaz17X2FsbG93ZWRSZWNpcGll bnRzOnt9LF91c2VGcmljdGlvbmxlc3M6ZmFsc2UsX3VwZGF0ZVJlY2lwaWVudHM6 ZnVuY3Rpb24oKXtrLl9hbGxvd2VkUmVjaXBpZW50cz17fTtoKCcvbWUvYXBwcmVx dWVzdGZvcm1lcnJlY2lwaWVudHMnLGZ1bmN0aW9uKGwpe2lmKCFsfHxsLmVycm9y KXJldHVybjtFUzUobC5kYXRhLCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKG0pe2su X2FsbG93ZWRSZWNpcGllbnRzW20ucmVjaXBpZW50X2lkXT10cnVlO30pO30pO30s aW5pdDpmdW5jdGlvbigpe2suX3VzZUZyaWN0aW9ubGVzcz10cnVlO2cuZ2V0TG9n aW5TdGF0dXMoZnVuY3Rpb24obCl7aWYobC5zdGF0dXM9PSdjb25uZWN0ZWQnKWsu X3VwZGF0ZVJlY2lwaWVudHMoKTt9KTtpLnN1YnNjcmliZSgnYXV0aC5sb2dpbics ZnVuY3Rpb24obCl7aWYobC5hdXRoUmVzcG9uc2Upay5fdXBkYXRlUmVjaXBpZW50 cygpO30pO30sX3Byb2Nlc3NSZXF1ZXN0UmVzcG9uc2U6ZnVuY3Rpb24obCxtKXty ZXR1cm4gZnVuY3Rpb24obil7dmFyIG89biYmbi51cGRhdGVkX2ZyaWN0aW9ubGVz cztpZihrLl91c2VGcmljdGlvbmxlc3MmJm8pay5fdXBkYXRlUmVjaXBpZW50cygp O2lmKG4pe2lmKCFtJiZuLmZyaWN0aW9ubGVzcyl7ai5faGlkZUxvYWRlcigpO2ou X3Jlc3RvcmVCb2R5UG9zaXRpb24oKTtqLl9oaWRlSVBhZE92ZXJsYXkoKTt9ZGVs ZXRlIG4uZnJpY3Rpb25sZXNzO2RlbGV0ZSBuLnVwZGF0ZWRfZnJpY3Rpb25sZXNz O31sJiZsKG4pO307fSxpc0FsbG93ZWQ6ZnVuY3Rpb24obCl7aWYoIWwpcmV0dXJu IGZhbHNlO2lmKHR5cGVvZiBsPT09J251bWJlcicpcmV0dXJuIGwgaW4gay5fYWxs b3dlZFJlY2lwaWVudHM7aWYodHlwZW9mIGw9PT0nc3RyaW5nJylsPWwuc3BsaXQo JywnKTtsPUVTNShsLCdtYXAnLHRydWUsZnVuY3Rpb24obyl7cmV0dXJuIEVTNShT dHJpbmcobyksJ3RyaW0nLHRydWUpO30pO3ZhciBtPXRydWUsbj1mYWxzZTtFUzUo bCwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlvbihvKXttPW0mJm8gaW4gay5fYWxsb3dl ZFJlY2lwaWVudHM7bj10cnVlO30pO3JldHVybiBtJiZuO319O2kuc3Vic2NyaWJl KCdpbml0OnBvc3QnLGZ1bmN0aW9uKGwpe2lmKGwuZnJpY3Rpb25sZXNzUmVxdWVz dHMpay5pbml0KCk7fSk7ZS5leHBvcnRzPWs7fSk7Cl9fZCgiaW5zZXJ0SWZyYW1l IixbImd1aWQiLCJHbG9iYWxDYWxsYmFjayJdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXt2YXIgZz1iKCdndWlkJyksaD1iKCdHbG9iYWxDYWxsYmFjaycpO2Z1bmN0aW9u IGkoail7ai5pZD1qLmlkfHxnKCk7ai5uYW1lPWoubmFtZXx8ZygpO3ZhciBrPWZh bHNlLGw9ZmFsc2UsbT1mdW5jdGlvbigpe2lmKGsmJiFsKXtsPXRydWU7ai5vbmxv YWQmJmoub25sb2FkKGoucm9vdC5maXJzdENoaWxkKTt9fSxuPWguY3JlYXRlKG0p O2lmKGRvY3VtZW50LmF0dGFjaEV2ZW50KXt2YXIgbz0oJzxpZnJhbWUnKycgaWQ9 Iicrai5pZCsnIicrJyBuYW1lPSInK2oubmFtZSsnIicrKGoudGl0bGU/JyB0aXRs ZT0iJytqLnRpdGxlKyciJzonJykrKGouY2xhc3NOYW1lPycgY2xhc3M9Iicrai5j bGFzc05hbWUrJyInOicnKSsnIHN0eWxlPSJib3JkZXI6bm9uZTsnKyhqLndpZHRo Pyd3aWR0aDonK2oud2lkdGgrJ3B4Oyc6JycpKyhqLmhlaWdodD8naGVpZ2h0Oicr ai5oZWlnaHQrJ3B4Oyc6JycpKyciJysnIHNyYz0iamF2YXNjcmlwdDpmYWxzZTsi JysnIGZyYW1lYm9yZGVyPSIwIicrJyBzY3JvbGxpbmc9Im5vIicrJyBhbGxvd3Ry YW5zcGFyZW5jeT0idHJ1ZSInKycgb25sb2FkPSInK24rJygpIicrJz48L2lmcmFt ZT4nKTtqLnJvb3QuaW5uZXJIVE1MPSgnPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6 ZmFsc2UiJysnIGZyYW1lYm9yZGVyPSIwIicrJyBzY3JvbGxpbmc9Im5vIicrJyBz dHlsZT0iaGVpZ2h0OjFweCI+PC9pZnJhbWU+Jyk7az10cnVlO3NldFRpbWVvdXQo ZnVuY3Rpb24oKXtqLnJvb3QuaW5uZXJIVE1MPW87ai5yb290LmZpcnN0Q2hpbGQu c3JjPWoudXJsO2oub25JbnNlcnQmJmoub25JbnNlcnQoai5yb290LmZpcnN0Q2hp bGQpO30sMCk7fWVsc2V7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy YW1lJyk7cC5pZD1qLmlkO3AubmFtZT1qLm5hbWU7cC5vbmxvYWQ9bTtwLnNjcm9s bGluZz0nbm8nO3Auc3R5bGUuYm9yZGVyPSdub25lJztwLnN0eWxlLm92ZXJmbG93 PSdoaWRkZW4nO2lmKGoudGl0bGUpcC50aXRsZT1qLnRpdGxlO2lmKGouY2xhc3NO YW1lKXAuY2xhc3NOYW1lPWouY2xhc3NOYW1lO2lmKGouaGVpZ2h0IT09dW5kZWZp bmVkKXAuc3R5bGUuaGVpZ2h0PWouaGVpZ2h0KydweCc7aWYoai53aWR0aCE9PXVu ZGVmaW5lZClpZihqLndpZHRoPT0nMTAwJScpe3Auc3R5bGUud2lkdGg9ai53aWR0 aDt9ZWxzZSBwLnN0eWxlLndpZHRoPWoud2lkdGgrJ3B4JztqLnJvb3QuYXBwZW5k Q2hpbGQocCk7az10cnVlO3Auc3JjPWoudXJsO2oub25JbnNlcnQmJmoub25JbnNl cnQocCk7fX1lLmV4cG9ydHM9aTt9KTsKX19kKCJzZGsuTmF0aXZlIixbImNvcHlQ cm9wZXJ0aWVzIiwiTG9nIiwiVXNlckFnZW50Il0sZnVuY3Rpb24oYSxiLGMsZCxl LGYpe3ZhciBnPWIoJ2NvcHlQcm9wZXJ0aWVzJyksaD1iKCdMb2cnKSxpPWIoJ1Vz ZXJBZ2VudCcpLGo9J2ZiTmF0aXZlUmVhZHknLGs9e29ucmVhZHk6ZnVuY3Rpb24o bCl7aWYoIWkubmF0aXZlQXBwKCkpe2guZXJyb3IoJ0ZCLk5hdGl2ZS5vbnJlYWR5 IG9ubHkgd29ya3Mgd2hlbiB0aGUgcGFnZSBpcyByZW5kZXJlZCAnKydpbiBhIFdl YlZpZXcgb2YgdGhlIG5hdGl2ZSBGYWNlYm9vayBhcHAuIFRlc3QgaWYgdGhpcyBp cyB0aGUgJysnY2FzZSBjYWxsaW5nIEZCLlVBLm5hdGl2ZUFwcCgpJyk7cmV0dXJu O31pZih3aW5kb3cuX19mYk5hdGl2ZSYmIXRoaXMubmF0aXZlUmVhZHkpZyh0aGlz LHdpbmRvdy5fX2ZiTmF0aXZlKTtpZih0aGlzLm5hdGl2ZVJlYWR5KXtsKCk7fWVs c2V7dmFyIG09ZnVuY3Rpb24obil7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIo aixtKTt0aGlzLm9ucmVhZHkobCk7fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihq LG0sZmFsc2UpO319fTtlLmV4cG9ydHM9azt9KTsKX19kKCJzZGsuVUlTZXJ2ZXIi LFsic2RrLkF1dGgiLCJzZGsuQ29udGVudCIsImNvcHlQcm9wZXJ0aWVzIiwic2Rr LkRpYWxvZyIsInNkay5ET00iLCJzZGsuRXZlbnQiLCJmbGF0dGVuT2JqZWN0Iiwi c2RrLkZyaWN0aW9ubGVzcyIsInNkay5nZXRDb250ZXh0VHlwZSIsImd1aWQiLCJp bnNlcnRJZnJhbWUiLCJMb2ciLCJzZGsuTmF0aXZlIiwiUXVlcnlTdHJpbmciLCJy ZXNvbHZlVVJJIiwic2RrLlJQQyIsInNkay5SdW50aW1lIiwiVXJsTWFwIiwiVXNl ckFnZW50Iiwic2RrLlhEIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J3Nkay5BdXRoJyksaD1iKCdzZGsuQ29udGVudCcpLGk9YignY29weVByb3BlcnRp ZXMnKSxqPWIoJ3Nkay5EaWFsb2cnKSxrPWIoJ3Nkay5ET00nKSxsPWIoJ3Nkay5F dmVudCcpLG09YignZmxhdHRlbk9iamVjdCcpLG49Yignc2RrLkZyaWN0aW9ubGVz cycpLG89Yignc2RrLmdldENvbnRleHRUeXBlJykscD1iKCdndWlkJykscT1iKCdp bnNlcnRJZnJhbWUnKSxyPWIoJ0xvZycpLHM9Yignc2RrLk5hdGl2ZScpLHQ9Yign UXVlcnlTdHJpbmcnKSx1PWIoJ3Jlc29sdmVVUkknKSx2PWIoJ3Nkay5SUEMnKSx3 PWIoJ3Nkay5SdW50aW1lJykseD1iKCdVcmxNYXAnKSx5PWIoJ1VzZXJBZ2VudCcp LHo9Yignc2RrLlhEJyksYWE9e3RyYW5zZm9ybTpmdW5jdGlvbihkYSl7aWYoZGEu cGFyYW1zLmRpc3BsYXk9PT0ndG91Y2gnJiZkYS5wYXJhbXMuYWNjZXNzX3Rva2Vu JiZ3aW5kb3cucG9zdE1lc3NhZ2Upe2RhLnBhcmFtcy5jaGFubmVsPWNhLl94ZENo YW5uZWxIYW5kbGVyKGRhLmlkLCdwYXJlbnQnKTtpZigheS5uYXRpdmVBcHAoKSlk YS5wYXJhbXMuaW5faWZyYW1lPTE7cmV0dXJuIGRhO31lbHNlIHJldHVybiBjYS5n ZW5lcmljVHJhbnNmb3JtKGRhKTt9LGdldFhkUmVsYXRpb246ZnVuY3Rpb24oZGEp e3ZhciBlYT1kYS5kaXNwbGF5O2lmKGVhPT09J3RvdWNoJyYmd2luZG93LnBvc3RN ZXNzYWdlJiZkYS5pbl9pZnJhbWUpcmV0dXJuICdwYXJlbnQnO3JldHVybiBjYS5n ZXRYZFJlbGF0aW9uKGRhKTt9fSxiYT17J3N0cmVhbS5zaGFyZSc6e3NpemU6e3dp ZHRoOjY3MCxoZWlnaHQ6MzQwfSx1cmw6J3NoYXJlci5waHAnLHRyYW5zZm9ybTpm dW5jdGlvbihkYSl7aWYoIWRhLnBhcmFtcy51KWRhLnBhcmFtcy51PXdpbmRvdy5s b2NhdGlvbi50b1N0cmluZygpO2RhLnBhcmFtcy5kaXNwbGF5PSdwb3B1cCc7cmV0 dXJuIGRhO319LGFwcHJlcXVlc3RzOnt0cmFuc2Zvcm06ZnVuY3Rpb24oZGEpe2Rh PWFhLnRyYW5zZm9ybShkYSk7ZGEucGFyYW1zLmZyaWN0aW9ubGVzcz1uJiZuLl91 c2VGcmljdGlvbmxlc3M7aWYoZGEucGFyYW1zLmZyaWN0aW9ubGVzcyl7aWYobi5p c0FsbG93ZWQoZGEucGFyYW1zLnRvKSl7ZGEucGFyYW1zLmRpc3BsYXk9J2lmcmFt ZSc7ZGEucGFyYW1zLmluX2lmcmFtZT10cnVlO2RhLmhpZGVMb2FkZXI9dHJ1ZTt9 ZGEuY2I9bi5fcHJvY2Vzc1JlcXVlc3RSZXNwb25zZShkYS5jYixkYS5oaWRlTG9h ZGVyKTt9cmV0dXJuIGRhO30sZ2V0WGRSZWxhdGlvbjphYS5nZXRYZFJlbGF0aW9u fSxmZWVkOmFhLCdwZXJtaXNzaW9ucy5vYXV0aCc6e3VybDonZGlhbG9nL29hdXRo JyxzaXplOnt3aWR0aDooeS5tb2JpbGUoKT9udWxsOjQ0MCksaGVpZ2h0Oih5Lm1v YmlsZSgpP251bGw6MTgzKX0sdHJhbnNmb3JtOmZ1bmN0aW9uKGRhKXtpZighdy5n ZXRDbGllbnRJRCgpKXtyLmVycm9yKCdGQi5sb2dpbigpIGNhbGxlZCBiZWZvcmUg RkIuaW5pdCgpLicpO3JldHVybjt9aWYoZy5nZXRBdXRoUmVzcG9uc2UoKSYmIWRh LnBhcmFtcy5zY29wZSl7ci5lcnJvcignRkIubG9naW4oKSBjYWxsZWQgd2hlbiB1 c2VyIGlzIGFscmVhZHkgY29ubmVjdGVkLicpO2RhLmNiJiZkYS5jYih7c3RhdHVz OncuZ2V0TG9naW5TdGF0dXMoKSxhdXRoUmVzcG9uc2U6Zy5nZXRBdXRoUmVzcG9u c2UoKX0pO3JldHVybjt9dmFyIGVhPWRhLmNiLGZhPWRhLmlkO2RlbGV0ZSBkYS5j YjtpZihkYS5wYXJhbXMuZGlzcGxheT09PSdhc3luYycpe2koZGEucGFyYW1zLHtj bGllbnRfaWQ6dy5nZXRDbGllbnRJRCgpLG9yaWdpbjpvKCkscmVzcG9uc2VfdHlw ZTondG9rZW4sc2lnbmVkX3JlcXVlc3QnLGRvbWFpbjpsb2NhdGlvbi5ob3N0bmFt ZX0pO2RhLmNiPWcueGRSZXNwb25zZVdyYXBwZXIoZWEsZy5nZXRBdXRoUmVzcG9u c2UoKSwncGVybWlzc2lvbnMub2F1dGgnKTt9ZWxzZSBpKGRhLnBhcmFtcyx7Y2xp ZW50X2lkOncuZ2V0Q2xpZW50SUQoKSxyZWRpcmVjdF91cmk6dShjYS54ZEhhbmRs ZXIoZWEsZmEsJ29wZW5lcicsZy5nZXRBdXRoUmVzcG9uc2UoKSwncGVybWlzc2lv bnMub2F1dGgnKSksb3JpZ2luOm8oKSxyZXNwb25zZV90eXBlOid0b2tlbixzaWdu ZWRfcmVxdWVzdCcsZG9tYWluOmxvY2F0aW9uLmhvc3RuYW1lfSk7cmV0dXJuIGRh O319LCdhdXRoLmxvZ291dCc6e3VybDonbG9nb3V0LnBocCcsdHJhbnNmb3JtOmZ1 bmN0aW9uKGRhKXtpZighdy5nZXRDbGllbnRJRCgpKXtyLmVycm9yKCdGQi5sb2dv dXQoKSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgRkIuaW5pdCgpLicpO31lbHNlIGlm KCFnLmdldEF1dGhSZXNwb25zZSgpKXtyLmVycm9yKCdGQi5sb2dvdXQoKSBjYWxs ZWQgd2l0aG91dCBhbiBhY2Nlc3MgdG9rZW4uJyk7fWVsc2V7ZGEucGFyYW1zLm5l eHQ9Y2EueGRIYW5kbGVyKGRhLmNiLGRhLmlkLCdwYXJlbnQnLGcuZ2V0QXV0aFJl c3BvbnNlKCksJ2xvZ291dCcpO3JldHVybiBkYTt9fX0sJ2xvZ2luLnN0YXR1cyc6 e3VybDonZGlhbG9nL29hdXRoJyx0cmFuc2Zvcm06ZnVuY3Rpb24oZGEpe3ZhciBl YT1kYS5jYixmYT1kYS5pZDtkZWxldGUgZGEuY2I7aShkYS5wYXJhbXMse2NsaWVu dF9pZDp3LmdldENsaWVudElEKCkscmVkaXJlY3RfdXJpOmNhLnhkSGFuZGxlcihl YSxmYSwncGFyZW50JyxnLmdldEF1dGhSZXNwb25zZSgpLCdsb2dpbl9zdGF0dXMn KSxvcmlnaW46bygpLHJlc3BvbnNlX3R5cGU6J3Rva2VuLHNpZ25lZF9yZXF1ZXN0 LGNvZGUnLGRvbWFpbjpsb2NhdGlvbi5ob3N0bmFtZX0pO3JldHVybiBkYTt9fX0s Y2E9e01ldGhvZHM6YmEsX2xvYWRlZE5vZGVzOnt9LF9kZWZhdWx0Q2I6e30sX3Jl c3VsdFRva2VuOicieHhSRVNVTFRUT0tFTnh4IicsZ2VuZXJpY1RyYW5zZm9ybTpm dW5jdGlvbihkYSl7aWYoZGEucGFyYW1zLmRpc3BsYXk9PSdkaWFsb2cnfHxkYS5w YXJhbXMuZGlzcGxheT09J2lmcmFtZScpaShkYS5wYXJhbXMse2Rpc3BsYXk6J2lm cmFtZScsY2hhbm5lbDpjYS5feGRDaGFubmVsSGFuZGxlcihkYS5pZCwncGFyZW50 LnBhcmVudCcpfSx0cnVlKTtyZXR1cm4gZGE7fSxwcmVwYXJlQ2FsbDpmdW5jdGlv bihkYSxlYSl7dmFyIGZhPWRhLm1ldGhvZC50b0xvd2VyQ2FzZSgpLGdhPWkoe30s Y2EuTWV0aG9kc1tmYV0pLGhhPXAoKSxpYT13LmdldFNlY3VyZSgpfHwoZmEhPT0n YXV0aC5zdGF0dXMnJiZmYSE9J2xvZ2luLnN0YXR1cycpO2koZGEse2FwaV9rZXk6 dy5nZXRDbGllbnRJRCgpLGFwcF9pZDp3LmdldENsaWVudElEKCksbG9jYWxlOncu Z2V0TG9jYWxlKCksc2RrOidqb2V5JyxhY2Nlc3NfdG9rZW46aWEmJncuZ2V0QWNj ZXNzVG9rZW4oKXx8dW5kZWZpbmVkfSk7ZGEuZGlzcGxheT1jYS5nZXREaXNwbGF5 TW9kZShnYSxkYSk7aWYoIWdhLnVybClnYS51cmw9J2RpYWxvZy8nK2ZhO3ZhciBq YT17Y2I6ZWEsaWQ6aGEsc2l6ZTpnYS5zaXplfHxjYS5nZXREZWZhdWx0U2l6ZSgp LHVybDp4LnJlc29sdmUoZGEuZGlzcGxheT09J3RvdWNoJz8nbSc6J3d3dycsaWEp KycvJytnYS51cmwsZm9yY2VIVFRQUzppYSxwYXJhbXM6ZGEsbmFtZTpmYSxkaWFs b2c6ai5uZXdJbnN0YW5jZShoYSxkYS5kaXNwbGF5KX0sa2E9Z2EudHJhbnNmb3Jt P2dhLnRyYW5zZm9ybTpjYS5nZW5lcmljVHJhbnNmb3JtO2lmKGthKXtqYT1rYShq YSk7aWYoIWphKXJldHVybjt9dmFyIGxhPWdhLmdldFhkUmVsYXRpb258fGNhLmdl dFhkUmVsYXRpb24sbWE9bGEoamEucGFyYW1zKTtpZighKGphLmlkIGluIGNhLl9k ZWZhdWx0Q2IpJiYhKCduZXh0JyBpbiBqYS5wYXJhbXMpJiYhKCdyZWRpcmVjdF91 cmknIGluIGphLnBhcmFtcykpamEucGFyYW1zLm5leHQ9Y2EuX3hkUmVzdWx0KGph LmNiLGphLmlkLG1hLHRydWUpO2lmKG1hPT09J3BhcmVudCcpaShqYS5wYXJhbXMs e2NoYW5uZWxfdXJsOmNhLl94ZENoYW5uZWxIYW5kbGVyKGhhLCdwYXJlbnQucGFy ZW50Jyl9LHRydWUpO2phPWNhLnByZXBhcmVQYXJhbXMoamEpO3JldHVybiBqYTt9 LHByZXBhcmVQYXJhbXM6ZnVuY3Rpb24oZGEpe3ZhciBlYT1kYS5wYXJhbXMubWV0 aG9kO2lmKGRhLnBhcmFtcy5kaXNwbGF5IT09J2FzeW5jJylkZWxldGUgZGEucGFy YW1zLm1ldGhvZDtkYS5wYXJhbXM9bShkYS5wYXJhbXMpO3ZhciBmYT10LmVuY29k ZShkYS5wYXJhbXMpO2lmKCF5Lm5hdGl2ZUFwcCgpJiZjYS51cmxUb29Mb25nRm9y SUUoZGEudXJsKyc/JytmYSkpe2RhLnBvc3Q9dHJ1ZTt9ZWxzZSBpZihmYSlkYS51 cmwrPSc/JytmYTtyZXR1cm4gZGE7fSx1cmxUb29Mb25nRm9ySUU6ZnVuY3Rpb24o ZGEpe3JldHVybiBkYS5sZW5ndGg+MjAwMDt9LGdldERpc3BsYXlNb2RlOmZ1bmN0 aW9uKGRhLGVhKXtpZihlYS5kaXNwbGF5PT09J2hpZGRlbid8fGVhLmRpc3BsYXk9 PT0nbm9uZScpcmV0dXJuIGVhLmRpc3BsYXk7dmFyIGZhPXcuaXNFbnZpcm9ubWVu dCh3LkVOVklST05NRU5UUy5DQU5WQVMpfHx3LmlzRW52aXJvbm1lbnQody5FTlZJ Uk9OTUVOVFMuUEFHRVRBQik7aWYoZmEmJiFlYS5kaXNwbGF5KXJldHVybiAnYXN5 bmMnO2lmKHkubW9iaWxlKCl8fGVhLmRpc3BsYXk9PT0ndG91Y2gnKXJldHVybiAn dG91Y2gnO2lmKCF3LmdldEFjY2Vzc1Rva2VuKCkmJmVhLmRpc3BsYXk9PSdkaWFs b2cnJiYhZGEubG9nZ2VkT3V0SWZyYW1lKXtyLmVycm9yKCciZGlhbG9nIiBtb2Rl IGNhbiBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgdXNlciBpcyBjb25uZWN0ZWQuJyk7 cmV0dXJuICdwb3B1cCc7fWlmKGRhLmNvbm5lY3REaXNwbGF5JiYhZmEpcmV0dXJu IGRhLmNvbm5lY3REaXNwbGF5O3JldHVybiBlYS5kaXNwbGF5fHwody5nZXRBY2Nl c3NUb2tlbigpPydkaWFsb2cnOidwb3B1cCcpO30sZ2V0WGRSZWxhdGlvbjpmdW5j dGlvbihkYSl7dmFyIGVhPWRhLmRpc3BsYXk7aWYoZWE9PT0ncG9wdXAnfHxlYT09 PSd0b3VjaCcpcmV0dXJuICdvcGVuZXInO2lmKGVhPT09J2RpYWxvZyd8fGVhPT09 J2lmcmFtZSd8fGVhPT09J2hpZGRlbid8fGVhPT09J25vbmUnKXJldHVybiAncGFy ZW50JztpZihlYT09PSdhc3luYycpcmV0dXJuICdwYXJlbnQuZnJhbWVzWycrd2lu ZG93Lm5hbWUrJ10nO30scG9wdXA6ZnVuY3Rpb24oZGEpe3ZhciBlYT10eXBlb2Yg d2luZG93LnNjcmVlblghPSd1bmRlZmluZWQnP3dpbmRvdy5zY3JlZW5YOndpbmRv dy5zY3JlZW5MZWZ0LGZhPXR5cGVvZiB3aW5kb3cuc2NyZWVuWSE9J3VuZGVmaW5l ZCc/d2luZG93LnNjcmVlblk6d2luZG93LnNjcmVlblRvcCxnYT10eXBlb2Ygd2lu ZG93Lm91dGVyV2lkdGghPSd1bmRlZmluZWQnP3dpbmRvdy5vdXRlcldpZHRoOmRv Y3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCxoYT10eXBlb2Ygd2lu ZG93Lm91dGVySGVpZ2h0IT0ndW5kZWZpbmVkJz93aW5kb3cub3V0ZXJIZWlnaHQ6 KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQtMjIpLGlhPXku bW9iaWxlKCk/bnVsbDpkYS5zaXplLndpZHRoLGphPXkubW9iaWxlKCk/bnVsbDpk YS5zaXplLmhlaWdodCxrYT0oZWE8MCk/d2luZG93LnNjcmVlbi53aWR0aCtlYTpl YSxsYT1wYXJzZUludChrYSsoKGdhLWlhKS8yKSwxMCksbWE9cGFyc2VJbnQoZmEr KChoYS1qYSkvMi41KSwxMCksbmE9W107aWYoaWEhPT1udWxsKW5hLnB1c2goJ3dp ZHRoPScraWEpO2lmKGphIT09bnVsbCluYS5wdXNoKCdoZWlnaHQ9JytqYSk7bmEu cHVzaCgnbGVmdD0nK2xhKTtuYS5wdXNoKCd0b3A9JyttYSk7bmEucHVzaCgnc2Ny b2xsYmFycz0xJyk7aWYoZGEubmFtZT09J3Blcm1pc3Npb25zLnJlcXVlc3QnfHxk YS5uYW1lPT0ncGVybWlzc2lvbnMub2F1dGgnKW5hLnB1c2goJ2xvY2F0aW9uPTEs dG9vbGJhcj0wJyk7bmE9bmEuam9pbignLCcpO3ZhciBvYTtpZihkYS5wb3N0KXtv YT13aW5kb3cub3BlbignYWJvdXQ6YmxhbmsnLGRhLmlkLG5hKTtpZihvYSl7Y2Eu c2V0TG9hZGVkTm9kZShkYSxvYSwncG9wdXAnKTtoLnN1Ym1pdFRvVGFyZ2V0KHt1 cmw6ZGEudXJsLHRhcmdldDpkYS5pZCxwYXJhbXM6ZGEucGFyYW1zfSk7fX1lbHNl e29hPXdpbmRvdy5vcGVuKGRhLnVybCxkYS5pZCxuYSk7aWYob2EpY2Euc2V0TG9h ZGVkTm9kZShkYSxvYSwncG9wdXAnKTt9aWYoIW9hKXJldHVybjtpZihkYS5pZCBp biBjYS5fZGVmYXVsdENiKWNhLl9wb3B1cE1vbml0b3IoKTt9LHNldExvYWRlZE5v ZGU6ZnVuY3Rpb24oZGEsZWEsZmEpe2lmKGRhLnBhcmFtcyYmZGEucGFyYW1zLmRp c3BsYXkhPSdwb3B1cCcpZWEuZmJDYWxsSUQ9ZGEuaWQ7ZWE9e25vZGU6ZWEsdHlw ZTpmYSxmYkNhbGxJRDpkYS5pZH07Y2EuX2xvYWRlZE5vZGVzW2RhLmlkXT1lYTt9 LGdldExvYWRlZE5vZGU6ZnVuY3Rpb24oZGEpe3ZhciBlYT10eXBlb2YgZGE9PSdv YmplY3QnP2RhLmlkOmRhLGZhPWNhLl9sb2FkZWROb2Rlc1tlYV07cmV0dXJuIGZh P2ZhLm5vZGU6bnVsbDt9LGhpZGRlbjpmdW5jdGlvbihkYSl7ZGEuY2xhc3NOYW1l PSdGQl9VSV9IaWRkZW4nO2RhLnJvb3Q9aC5hcHBlbmRIaWRkZW4oJycpO2NhLl9p bnNlcnRJZnJhbWUoZGEpO30saWZyYW1lOmZ1bmN0aW9uKGRhKXtkYS5jbGFzc05h bWU9J0ZCX1VJX0RpYWxvZyc7dmFyIGVhPWZ1bmN0aW9uKCl7Y2EuX3RyaWdnZXJE ZWZhdWx0KGRhLmlkKTt9O2RhLnJvb3Q9ai5jcmVhdGUoe29uQ2xvc2U6ZWEsY2xv c2VJY29uOnRydWUsY2xhc3NlczooeS5pcGFkKCk/J2NlbnRlcmVkJzonJyl9KTtp ZighZGEuaGlkZUxvYWRlcilqLnNob3dMb2FkZXIoZWEsZGEuc2l6ZS53aWR0aCk7 ay5hZGRDc3MoZGEucm9vdCwnZmJfZGlhbG9nX2lmcmFtZScpO2NhLl9pbnNlcnRJ ZnJhbWUoZGEpO30sdG91Y2g6ZnVuY3Rpb24oZGEpe2lmKGRhLnBhcmFtcyYmZGEu cGFyYW1zLmluX2lmcmFtZSl7aWYoZGEudWlfY3JlYXRlZCl7ai5zaG93TG9hZGVy KGZ1bmN0aW9uKCl7Y2EuX3RyaWdnZXJEZWZhdWx0KGRhLmlkKTt9LDApO31lbHNl IGNhLmlmcmFtZShkYSk7fWVsc2UgaWYoeS5uYXRpdmVBcHAoKSYmIWRhLnVpX2Ny ZWF0ZWQpe2RhLmZyYW1lPWRhLmlkO3Mub25yZWFkeShmdW5jdGlvbigpe2NhLnNl dExvYWRlZE5vZGUoZGEscy5vcGVuKGRhLnVybCsnI2NiPScrZGEuZnJhbWVOYW1l KSwnbmF0aXZlJyk7fSk7Y2EuX3BvcHVwTW9uaXRvcigpO31lbHNlIGlmKCFkYS51 aV9jcmVhdGVkKWNhLnBvcHVwKGRhKTt9LGFzeW5jOmZ1bmN0aW9uKGRhKXtkYS5w YXJhbXMucmVkaXJlY3RfdXJpPWxvY2F0aW9uLnByb3RvY29sKycvLycrbG9jYXRp b24uaG9zdCtsb2NhdGlvbi5wYXRobmFtZTt2LnJlbW90ZS5zaG93RGlhbG9nKGRh LnBhcmFtcyxmdW5jdGlvbihlYSl7ZGEuY2IoZWEucmVzdWx0KTt9KTt9LGdldERl ZmF1bHRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGouZ2V0RGVmYXVsdFNpemUoKTt9 LF9pbnNlcnRJZnJhbWU6ZnVuY3Rpb24oZGEpe2NhLl9sb2FkZWROb2Rlc1tkYS5p ZF09ZmFsc2U7dmFyIGVhPWZ1bmN0aW9uKGZhKXtpZihkYS5pZCBpbiBjYS5fbG9h ZGVkTm9kZXMpY2Euc2V0TG9hZGVkTm9kZShkYSxmYSwnaWZyYW1lJyk7fTtpZihk YS5wb3N0KXtxKHt1cmw6J2Fib3V0OmJsYW5rJyxyb290OmRhLnJvb3QsY2xhc3NO YW1lOmRhLmNsYXNzTmFtZSx3aWR0aDpkYS5zaXplLndpZHRoLGhlaWdodDpkYS5z aXplLmhlaWdodCxpZDpkYS5pZCxvbkluc2VydDplYSxvbmxvYWQ6ZnVuY3Rpb24o ZmEpe2guc3VibWl0VG9UYXJnZXQoe3VybDpkYS51cmwsdGFyZ2V0OmZhLm5hbWUs cGFyYW1zOmRhLnBhcmFtc30pO319KTt9ZWxzZSBxKHt1cmw6ZGEudXJsLHJvb3Q6 ZGEucm9vdCxjbGFzc05hbWU6ZGEuY2xhc3NOYW1lLHdpZHRoOmRhLnNpemUud2lk dGgsaGVpZ2h0OmRhLnNpemUuaGVpZ2h0LGlkOmRhLmlkLG5hbWU6ZGEuZnJhbWVO YW1lLG9uSW5zZXJ0OmVhfSk7fSxfaGFuZGxlUmVzaXplTWVzc2FnZTpmdW5jdGlv bihkYSxlYSl7dmFyIGZhPWNhLmdldExvYWRlZE5vZGUoZGEpO2lmKCFmYSlyZXR1 cm47aWYoZWEuaGVpZ2h0KWZhLnN0eWxlLmhlaWdodD1lYS5oZWlnaHQrJ3B4Jztp ZihlYS53aWR0aClmYS5zdHlsZS53aWR0aD1lYS53aWR0aCsncHgnO3ouaW5mb3Jt KCdyZXNpemUuYWNrJyxlYXx8e30sJ3BhcmVudC5mcmFtZXNbJytmYS5uYW1lKydd Jyk7aWYoIWouaXNBY3RpdmUoZmEpKWouc2hvdyhmYSk7fSxfdHJpZ2dlckRlZmF1 bHQ6ZnVuY3Rpb24oZGEpe2NhLl94ZFJlY3Yoe2ZyYW1lOmRhfSxjYS5fZGVmYXVs dENiW2RhXXx8ZnVuY3Rpb24oKXt9KTt9LF9wb3B1cE1vbml0b3I6ZnVuY3Rpb24o KXt2YXIgZGE7Zm9yKHZhciBlYSBpbiBjYS5fbG9hZGVkTm9kZXMpaWYoY2EuX2xv YWRlZE5vZGVzLmhhc093blByb3BlcnR5KGVhKSYmZWEgaW4gY2EuX2RlZmF1bHRD Yil7dmFyIGZhPWNhLl9sb2FkZWROb2Rlc1tlYV07aWYoZmEudHlwZSE9J3BvcHVw JyYmZmEudHlwZSE9J25hdGl2ZScpY29udGludWU7dmFyIGdhPWZhLm5vZGU7dHJ5 e2lmKGdhLmNsb3NlZCl7Y2EuX3RyaWdnZXJEZWZhdWx0KGVhKTt9ZWxzZSBkYT10 cnVlO31jYXRjaChoYSl7fX1pZihkYSYmIWNhLl9wb3B1cEludGVydmFsKXtjYS5f cG9wdXBJbnRlcnZhbD1zZXRJbnRlcnZhbChjYS5fcG9wdXBNb25pdG9yLDEwMCk7 fWVsc2UgaWYoIWRhJiZjYS5fcG9wdXBJbnRlcnZhbCl7Y2xlYXJJbnRlcnZhbChj YS5fcG9wdXBJbnRlcnZhbCk7Y2EuX3BvcHVwSW50ZXJ2YWw9bnVsbDt9fSxfeGRD aGFubmVsSGFuZGxlcjpmdW5jdGlvbihkYSxlYSl7cmV0dXJuIHouaGFuZGxlcihm dW5jdGlvbihmYSl7dmFyIGdhPWNhLmdldExvYWRlZE5vZGUoZGEpO2lmKCFnYSly ZXR1cm47aWYoZmEudHlwZT09J3Jlc2l6ZScpe2NhLl9oYW5kbGVSZXNpemVNZXNz YWdlKGRhLGZhKTt9ZWxzZSBpZihmYS50eXBlPT0naGlkZScpe2ouaGlkZShnYSk7 fWVsc2UgaWYoZmEudHlwZT09J3JlbmRlcmVkJyl7dmFyIGhhPWouX2ZpbmRSb290 KGdhKTtqLnNob3coaGEpO31lbHNlIGlmKGZhLnR5cGU9PSdmaXJlZXZlbnQnKWwu ZmlyZShmYS5ldmVudCk7fSxlYSx0cnVlLG51bGwpO30sX3hkTmV4dEhhbmRsZXI6 ZnVuY3Rpb24oZGEsZWEsZmEsZ2Epe2lmKGdhKWNhLl9kZWZhdWx0Q2JbZWFdPWRh O3JldHVybiB6LmhhbmRsZXIoZnVuY3Rpb24oaGEpe2NhLl94ZFJlY3YoaGEsZGEp O30sZmEpKycmZnJhbWU9JytlYTt9LF94ZFJlY3Y6ZnVuY3Rpb24oZGEsZWEpe3Zh ciBmYT1jYS5nZXRMb2FkZWROb2RlKGRhLmZyYW1lKTtpZihmYSl7dHJ5e2lmKGsu Y29udGFpbnNDc3MoZmEsJ0ZCX1VJX0hpZGRlbicpKXtzZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7ZmEucGFyZW50Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZhLnBh cmVudE5vZGUpO30sMzAwMCk7fWVsc2UgaWYoay5jb250YWluc0NzcyhmYSwnRkJf VUlfRGlhbG9nJykpai5yZW1vdmUoZmEpO31jYXRjaChnYSl7fXRyeXtpZihmYS5j bG9zZSl7ZmEuY2xvc2UoKTtpZih5LmlwaG9uZSgpKXt2YXIgaWE9L1ZlcnNpb25c LyhbXGRcLl0rKS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KT9wYXJzZUZsb2F0 KFJlZ0V4cC4kMSwxMCk6bnVsbDtpZihpYT49Nil3aW5kb3cuZm9jdXMoKTt9Y2Eu X3BvcHVwQ291bnQtLTt9fWNhdGNoKGhhKXt9fWRlbGV0ZSBjYS5fbG9hZGVkTm9k ZXNbZGEuZnJhbWVdO2RlbGV0ZSBjYS5fZGVmYXVsdENiW2RhLmZyYW1lXTtlYShk YSk7fSxfeGRSZXN1bHQ6ZnVuY3Rpb24oZGEsZWEsZmEsZ2Epe3JldHVybiAoY2Eu X3hkTmV4dEhhbmRsZXIoZnVuY3Rpb24oaGEpe2RhJiZkYShoYS5yZXN1bHQmJmhh LnJlc3VsdCE9Y2EuX3Jlc3VsdFRva2VuJiZFUzUoJ0pTT04nLCdwYXJzZScsZmFs c2UsaGEucmVzdWx0KSk7fSxlYSxmYSxnYSkrJyZyZXN1bHQ9JytlbmNvZGVVUklD b21wb25lbnQoY2EuX3Jlc3VsdFRva2VuKSk7fSx4ZEhhbmRsZXI6ZnVuY3Rpb24o ZGEsZWEsZmEsZ2EsaGEpe3JldHVybiBjYS5feGROZXh0SGFuZGxlcihnLnhkUmVz cG9uc2VXcmFwcGVyKGRhLGdhLGhhKSxlYSxmYSx0cnVlKTt9fTt2LnN0dWIoJ3No b3dEaWFsb2cnKTtlLmV4cG9ydHM9Y2E7fSk7Cl9fZCgic2RrLnVpIixbIkFzc2Vy dCIsImNvcHlQcm9wZXJ0aWVzIiwiTG9nIiwic2RrLlJ1bnRpbWUiLCJzZGsuVUlT ZXJ2ZXIiLCJTREtDb25maWciXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 YignQXNzZXJ0JyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9YignTG9nJyksaj1i KCdzZGsuUnVudGltZScpLGs9YygnU0RLQ29uZmlnJyksbD1iKCdzZGsuVUlTZXJ2 ZXInKTtmdW5jdGlvbiBtKG4sbyl7Zy5pc09iamVjdChuKTtnLm1heWJlRnVuY3Rp b24obyk7bj1oKHt9LG4pO2lmKCFuLm1ldGhvZCl7aS5lcnJvcignIm1ldGhvZCIg aXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIEZCLnVpKCkuJyk7cmV0dXJuIG51 bGw7fWlmKChuLm1ldGhvZD09J3Blcm1pc3Npb25zLnJlcXVlc3QnfHxuLm1ldGhv ZD09J3Blcm1pc3Npb25zLm9hdXRoJykmJihuLmRpc3BsYXk9PSdpZnJhbWUnfHxu LmRpc3BsYXk9PSdkaWFsb2cnKSl7dmFyIHA9J3Njb3BlJyBpbiBuP24uc2NvcGU6 ai5nZXRTY29wZSgpO2lmKHApe3ZhciBxPXAuc3BsaXQoL1xzfCwvZyk7Zm9yKHZh ciByPTA7cjxxLmxlbmd0aDtyKyspe3ZhciBzPUVTNShxW3JdLCd0cmltJyx0cnVl KTtpZihzJiYhay5pbml0U2l0ZXZhcnMuaWZyYW1lUGVybWlzc2lvbnNbc10pe24u ZGlzcGxheT0ncG9wdXAnO2JyZWFrO319fX12YXIgdD1sLnByZXBhcmVDYWxsKG4s b3x8ZnVuY3Rpb24oKXt9KTtpZighdClyZXR1cm4gbnVsbDt2YXIgdT10LnBhcmFt cy5kaXNwbGF5O2lmKHU9PT0nZGlhbG9nJyl7dT0naWZyYW1lJzt9ZWxzZSBpZih1 PT09J25vbmUnKXU9J2hpZGRlbic7dmFyIHY9bFt1XTtpZighdil7aS5lcnJvcign ImRpc3BsYXkiIG11c3QgYmUgb25lIG9mICJwb3B1cCIsICcrJyJkaWFsb2ciLCAi aWZyYW1lIiwgInRvdWNoIiwgImFzeW5jIiwgImhpZGRlbiIsIG9yICJub25lIicp O3JldHVybiBudWxsO312KHQpO3JldHVybiB0LmRpYWxvZzt9ZS5leHBvcnRzPW07 fSk7Cl9fZCgibGVnYWN5OmZiLmF1dGgiLFsic2RrLkF1dGgiLCJzZGsuQ29va2ll IiwiY29weVByb3BlcnRpZXMiLCJzZGsuRXZlbnQiLCJGQiIsIkxvZyIsInNkay5S dW50aW1lIiwic2RrLlNpZ25lZFJlcXVlc3QiLCJzZGsudWkiXSxmdW5jdGlvbihh LGIsYyxkKXt2YXIgZT1iKCdzZGsuQXV0aCcpLGY9Yignc2RrLkNvb2tpZScpLGc9 YignY29weVByb3BlcnRpZXMnKSxoPWIoJ3Nkay5FdmVudCcpLGk9YignRkInKSxq PWIoJ0xvZycpLGs9Yignc2RrLlJ1bnRpbWUnKSxsPWIoJ3Nkay5TaWduZWRSZXF1 ZXN0JyksbT1iKCdzZGsudWknKTtpLnByb3ZpZGUoJycse2dldExvZ2luU3RhdHVz OmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0TG9naW5TdGF0dXMuYXBwbHkoZSxhcmd1 bWVudHMpO30sZ2V0QXV0aFJlc3BvbnNlOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0 QXV0aFJlc3BvbnNlKCk7fSxnZXRBY2Nlc3NUb2tlbjpmdW5jdGlvbigpe3JldHVy biBrLmdldEFjY2Vzc1Rva2VuKCl8fG51bGw7fSxnZXRVc2VySUQ6ZnVuY3Rpb24o KXtyZXR1cm4gay5nZXRVc2VySUQoKXx8ay5nZXRDb29raWVVc2VySUQoKTt9LGxv Z2luOmZ1bmN0aW9uKG4sbyl7aWYobyYmby5wZXJtcyYmIW8uc2NvcGUpe28uc2Nv cGU9by5wZXJtcztkZWxldGUgby5wZXJtcztqLndhcm4oJ09BdXRoMiBzcGVjaWZp Y2F0aW9uIHN0YXRlcyB0aGF0IFwncGVybXNcJyAnKydzaG91bGQgbm93IGJlIGNh bGxlZCBcJ3Njb3BlXCcuICBQbGVhc2UgdXBkYXRlLicpO312YXIgcD1rLmlzRW52 aXJvbm1lbnQoay5FTlZJUk9OTUVOVFMuQ0FOVkFTKXx8ay5pc0Vudmlyb25tZW50 KGsuRU5WSVJPTk1FTlRTLlBBR0VUQUIpO20oZyh7bWV0aG9kOidwZXJtaXNzaW9u cy5vYXV0aCcsZGlzcGxheTpwPydhc3luYyc6J3BvcHVwJyxkb21haW46bG9jYXRp b24uaG9zdG5hbWV9LG98fHt9KSxuKTt9LGxvZ291dDpmdW5jdGlvbihuKXttKHtt ZXRob2Q6J2F1dGgubG9nb3V0JyxkaXNwbGF5OidoaWRkZW4nfSxuKTt9fSk7ZS5z dWJzY3JpYmUoJ2xvZ291dCcsRVM1KGguZmlyZSwnYmluZCcsdHJ1ZSxoLCdhdXRo LmxvZ291dCcpKTtlLnN1YnNjcmliZSgnbG9naW4nLEVTNShoLmZpcmUsJ2JpbmQn LHRydWUsaCwnYXV0aC5sb2dpbicpKTtlLnN1YnNjcmliZSgnYXV0aHJlc3BvbnNl LmNoYW5nZScsRVM1KGguZmlyZSwnYmluZCcsdHJ1ZSxoLCdhdXRoLmF1dGhSZXNw b25zZUNoYW5nZScpKTtlLnN1YnNjcmliZSgnc3RhdHVzLmNoYW5nZScsRVM1KGgu ZmlyZSwnYmluZCcsdHJ1ZSxoLCdhdXRoLnN0YXR1c0NoYW5nZScpKTtoLnN1YnNj cmliZSgnaW5pdDpwb3N0JyxmdW5jdGlvbihuKXtpZihuLnN0YXR1cyllLmdldExv Z2luU3RhdHVzKCk7aWYoay5nZXRDbGllbnRJRCgpKWlmKG4uYXV0aFJlc3BvbnNl KXtlLnNldEF1dGhSZXNwb25zZShuLmF1dGhSZXNwb25zZSwnY29ubmVjdGVkJyk7 fWVsc2UgaWYoay5nZXRVc2VDb29raWUoKSl7dmFyIG89Zi5sb2FkU2lnbmVkUmVx dWVzdCgpLHA7aWYobyl7dHJ5e3A9bC5wYXJzZShvKTt9Y2F0Y2gocSl7Zi5jbGVh clNpZ25lZFJlcXVlc3RDb29raWUoKTt9aWYocCYmcC51c2VyX2lkKWsuc2V0Q29v a2llVXNlcklEKHAudXNlcl9pZCk7fWYubG9hZE1ldGEoKTt9fSk7fSwzKTsKX19k KCJzZGsuQ2FudmFzLkZsYXNoIixbInNkay5hcGkiLCJzZGsuUlBDIiwiTG9nIiwi c2RrLlJ1bnRpbWUiLCJjcmVhdGVBcnJheUZyb20iXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7dmFyIGc9Yignc2RrLmFwaScpLGg9Yignc2RrLlJQQycpLGk9YignTG9n Jyksaj1iKCdzZGsuUnVudGltZScpLGs9YignY3JlYXRlQXJyYXlGcm9tJyksbD0n Q0xTSUQ6RDI3Q0RCNkUtQUU2RC0xMUNGLTk2QjgtNDQ0NTUzNTQwMDAwJyxtPW51 bGw7ZnVuY3Rpb24gbihyKXtyLnN0eWxlLnZpc2liaWxpdHk9J2hpZGRlbic7fWZ1 bmN0aW9uIG8ocil7ci5zdHlsZS52aXNpYmlsaXR5PScnO31mdW5jdGlvbiBwKHIp e2kuaW5mbygnaGlkZUZsYXNoQ2FsbGJhY2sgY2FsbGVkIHdpdGggJXMnLHIuc3Rh dGUpO3ZhciBzPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn b2JqZWN0Jyk7RVM1KGsocyksJ2ZvckVhY2gnLHRydWUsZnVuY3Rpb24odCl7aWYo dC50eXBlLnRvTG93ZXJDYXNlKCkhPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m bGFzaCImJighdC5jbGFzc2lkfHx0LmNsYXNzaWQudG9VcHBlckNhc2UoKSE9bCkp cmV0dXJuO2Zvcih2YXIgdT0wO3U8dC5jaGlsZE5vZGVzLmxlbmd0aDt1Kyspe3Zh ciB2PXQuY2hpbGROb2Rlc1t1XTtpZigvcGFyYW0vaS50ZXN0KHYubm9kZU5hbWUp JiYvd21vZGUvaS50ZXN0KHYubmFtZSkmJi9vcGFxdWV8dHJhbnNwYXJlbnQvaS50 ZXN0KHYudmFsdWUpKXJldHVybjt9aWYobSl7aS5pbmZvKCdDYWxsaW5nIGRldmVs b3BlciBzcGVjaWZpZWQgY2FsbGJhY2snKTt2YXIgdz17c3RhdGU6ci5zdGF0ZSxl bGVtOnR9O20odyk7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHcuc3RhdGU9PSdv cGVuZWQnKXtuKHQpO31lbHNlIG8odCk7fSwyMDApO31lbHNlIGlmKHIuc3RhdGU9 PSdvcGVuZWQnKXt0Ll9vbGRfdmlzaWJpbGl0eT10LnN0eWxlLnZpc2liaWxpdHk7 dC5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nO31lbHNlIGlmKHIuc3RhdGU9PSdj bG9zZWQnKXt0LnN0eWxlLnZpc2liaWxpdHk9dC5fb2xkX3Zpc2liaWxpdHl8fCcn O2RlbGV0ZSB0Ll9vbGRfdmlzaWJpbGl0eTt9aWYoTWF0aC5yYW5kb20oKTw9MS8x MDAwKWcoai5nZXRDbGllbnRJRCgpKycvb2NjbHVkZXNwb3B1cHMnLCdwb3N0Jyx7 fSk7fSk7fWgubG9jYWwuaGlkZUZsYXNoT2JqZWN0cz1mdW5jdGlvbigpe3Aoe3N0 YXRlOidvcGVuZWQnfSk7fTtoLmxvY2FsLnNob3dGbGFzaE9iamVjdHM9ZnVuY3Rp b24oKXtwKHtzdGF0ZTonY2xvc2VkJ30pO307dmFyIHE9e19zZXRIaWRlRmxhc2hD YWxsYmFjazpmdW5jdGlvbihyKXttPXI7fSxoaWRlRmxhc2hFbGVtZW50Om4sc2hv d0ZsYXNoRWxlbWVudDpvfTtlLmV4cG9ydHM9cTt9KTsKX19kKCJzZGsuQ2FudmFz LklmcmFtZUhhbmRsaW5nIixbIkRPTVdyYXBwZXIiLCJzZGsuUlBDIl0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ0RPTVdyYXBwZXInKSxoPWIoJ3Nkay5S UEMnKSxpPW51bGwsajtmdW5jdGlvbiBrKCl7dmFyIG89Zy5nZXRXaW5kb3coKS5k b2N1bWVudCxwPW8uYm9keSxxPW8uZG9jdW1lbnRFbGVtZW50LHI9TWF0aC5tYXgo cC5vZmZzZXRUb3AsMCkscz1NYXRoLm1heChxLm9mZnNldFRvcCwwKSx0PXAuc2Ny b2xsSGVpZ2h0K3IsdT1wLm9mZnNldEhlaWdodCtyLHY9cS5zY3JvbGxIZWlnaHQr cyx3PXEub2Zmc2V0SGVpZ2h0K3M7cmV0dXJuIE1hdGgubWF4KHQsdSx2LHcpO31m dW5jdGlvbiBsKG8pe2lmKHR5cGVvZiBvIT0nb2JqZWN0JylvPXt9O3ZhciBwPTAs cT0wO2lmKCFvLmhlaWdodCl7by5oZWlnaHQ9aygpO3A9MTY7cT00O31pZighby5m cmFtZSlvLmZyYW1lPXdpbmRvdy5uYW1lfHwnaWZyYW1lX2NhbnZhcyc7aWYoail7 dmFyIHI9ai5oZWlnaHQscz1vLmhlaWdodC1yO2lmKHM8PXEmJnM+PS1wKXJldHVy biBmYWxzZTt9aj1vO2gucmVtb3RlLnNldFNpemUobyk7cmV0dXJuIHRydWU7fWZ1 bmN0aW9uIG0obyxwKXtpZihwPT09dW5kZWZpbmVkJiZ0eXBlb2Ygbz09PSdudW1i ZXInKXtwPW87bz10cnVlO31pZihvfHxvPT09dW5kZWZpbmVkKXtpZihpPT09bnVs bClpPXNldEludGVydmFsKGZ1bmN0aW9uKCl7bCgpO30scHx8MTAwKTtsKCk7fWVs c2UgaWYoaSE9PW51bGwpe2NsZWFySW50ZXJ2YWwoaSk7aT1udWxsO319aC5zdHVi KCdzZXRTaXplJyk7dmFyIG49e3NldFNpemU6bCxzZXRBdXRvR3JvdzptfTtlLmV4 cG9ydHM9bjt9KTsKX19kKCJzZGsuQ2FudmFzLk5hdmlnYXRpb24iLFsic2RrLlJQ QyJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdzZGsuUlBDJyk7ZnVu Y3Rpb24gaChqKXtnLmxvY2FsLm5hdmlnYXRlPWZ1bmN0aW9uKGspe2ooe3BhdGg6 a30pO307Zy5yZW1vdGUuc2V0TmF2aWdhdGlvbkVuYWJsZWQodHJ1ZSk7fWcuc3R1 Yignc2V0TmF2aWdhdGlvbkVuYWJsZWQnKTt2YXIgaT17c2V0VXJsSGFuZGxlcjpo fTtlLmV4cG9ydHM9aTt9KTsKX19kKCJzZGsuQ2FudmFzLlR0aSIsWyJzZGsuUlBD Iiwic2RrLlJ1bnRpbWUiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign c2RrLlJQQycpLGg9Yignc2RrLlJ1bnRpbWUnKTtmdW5jdGlvbiBpKG4sbyl7dmFy IHA9e2FwcElkOmguZ2V0Q2xpZW50SUQoKSx0aW1lOkVTNSgnRGF0ZScsJ25vdycs ZmFsc2UpLG5hbWU6b30scT1bcF07aWYobilxLnB1c2goZnVuY3Rpb24ocil7bihy LnJlc3VsdCk7fSk7Zy5yZW1vdGUubG9nVHRpTWVzc2FnZS5hcHBseShudWxsLHEp O31mdW5jdGlvbiBqKCl7aShudWxsLCdTdGFydElmcmFtZUFwcFR0aVRpbWVyJyk7 fWZ1bmN0aW9uIGsobil7aShuLCdTdG9wSWZyYW1lQXBwVHRpVGltZXInKTt9ZnVu Y3Rpb24gbChuKXtpKG4sJ1JlY29yZElmcmFtZUFwcFR0aScpO31nLnN0dWIoJ2xv Z1R0aU1lc3NhZ2UnKTt2YXIgbT17c2V0RG9uZUxvYWRpbmc6bCxzdGFydFRpbWVy Omosc3RvcFRpbWVyOmt9O2UuZXhwb3J0cz1tO30pOwpfX2QoImxlZ2FjeTpmYi5j YW52YXMiLFsiQXNzZXJ0Iiwic2RrLkNhbnZhcy5FbnZpcm9ubWVudCIsInNkay5F dmVudCIsIkZCIiwic2RrLkNhbnZhcy5GbGFzaCIsInNkay5DYW52YXMuSWZyYW1l SGFuZGxpbmciLCJMb2ciLCJzZGsuQ2FudmFzLk5hdmlnYXRpb24iLCJzZGsuUnVu dGltZSIsInNkay5DYW52YXMuVHRpIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9 YignQXNzZXJ0JyksZj1iKCdzZGsuQ2FudmFzLkVudmlyb25tZW50JyksZz1iKCdz ZGsuRXZlbnQnKSxoPWIoJ0ZCJyksaT1iKCdzZGsuQ2FudmFzLkZsYXNoJyksaj1i KCdzZGsuQ2FudmFzLklmcmFtZUhhbmRsaW5nJyksaz1iKCdMb2cnKSxsPWIoJ3Nk ay5DYW52YXMuTmF2aWdhdGlvbicpLG09Yignc2RrLlJ1bnRpbWUnKSxuPWIoJ3Nk ay5DYW52YXMuVHRpJyk7aC5wcm92aWRlKCdDYW52YXMnLHtzZXRTaXplOmZ1bmN0 aW9uKG8pe2UubWF5YmVPYmplY3QobywnSW52YWxpZCBhcmd1bWVudCcpO3JldHVy biBqLnNldFNpemUuYXBwbHkobnVsbCxhcmd1bWVudHMpO30sc2V0QXV0b0dyb3c6 ZnVuY3Rpb24oKXtyZXR1cm4gai5zZXRBdXRvR3Jvdy5hcHBseShudWxsLGFyZ3Vt ZW50cyk7fSxnZXRQYWdlSW5mbzpmdW5jdGlvbihvKXtlLmlzRnVuY3Rpb24obywn SW52YWxpZCBhcmd1bWVudCcpO3JldHVybiBmLmdldFBhZ2VJbmZvLmFwcGx5KG51 bGwsYXJndW1lbnRzKTt9LHNjcm9sbFRvOmZ1bmN0aW9uKG8scCl7ZS5tYXliZU51 bWJlcihvLCdJbnZhbGlkIGFyZ3VtZW50Jyk7ZS5tYXliZU51bWJlcihwLCdJbnZh bGlkIGFyZ3VtZW50Jyk7cmV0dXJuIGYuc2Nyb2xsVG8uYXBwbHkobnVsbCxhcmd1 bWVudHMpO30sc2V0RG9uZUxvYWRpbmc6ZnVuY3Rpb24obyl7ZS5tYXliZUZ1bmN0 aW9uKG8sJ0ludmFsaWQgYXJndW1lbnQnKTtyZXR1cm4gbi5zZXREb25lTG9hZGlu Zy5hcHBseShudWxsLGFyZ3VtZW50cyk7fSxzdGFydFRpbWVyOmZ1bmN0aW9uKCl7 cmV0dXJuIG4uc3RhcnRUaW1lci5hcHBseShudWxsLGFyZ3VtZW50cyk7fSxzdG9w VGltZXI6ZnVuY3Rpb24obyl7ZS5tYXliZUZ1bmN0aW9uKG8sJ0ludmFsaWQgYXJn dW1lbnQnKTtyZXR1cm4gbi5zdG9wVGltZXIuYXBwbHkobnVsbCxhcmd1bWVudHMp O30sZ2V0SGFzaDpmdW5jdGlvbihvKXtlLmlzRnVuY3Rpb24obywnSW52YWxpZCBh cmd1bWVudCcpO3JldHVybiBsLmdldEhhc2guYXBwbHkobnVsbCxhcmd1bWVudHMp O30sc2V0SGFzaDpmdW5jdGlvbihvKXtlLmlzU3RyaW5nKG8sJ0ludmFsaWQgYXJn dW1lbnQnKTtyZXR1cm4gbC5zZXRIYXNoLmFwcGx5KG51bGwsYXJndW1lbnRzKTt9 LHNldFVybEhhbmRsZXI6ZnVuY3Rpb24obyl7ZS5pc0Z1bmN0aW9uKG8sJ0ludmFs aWQgYXJndW1lbnQnKTtyZXR1cm4gbC5zZXRVcmxIYW5kbGVyLmFwcGx5KG51bGws YXJndW1lbnRzKTt9fSk7aC5wcm92aWRlKCdDYW52YXNJbnNpZ2h0cycse3NldERv bmVMb2FkaW5nOmZ1bmN0aW9uKG8pe2sud2FybignRGVwcmVjYXRlZDogdXNlIEZC LkNhbnZhcy5zZXREb25lTG9hZGluZycpO2UubWF5YmVGdW5jdGlvbihvLCdJbnZh bGlkIGFyZ3VtZW50Jyk7cmV0dXJuIG4uc2V0RG9uZUxvYWRpbmcuYXBwbHkobnVs bCxhcmd1bWVudHMpO319KTtnLnN1YnNjcmliZSgnaW5pdDpwb3N0JyxmdW5jdGlv bihvKXtpZihtLmlzRW52aXJvbm1lbnQobS5FTlZJUk9OTUVOVFMuQ0FOVkFTKSlp Ll9zZXRIaWRlRmxhc2hDYWxsYmFjayhvLmhpZGVGbGFzaENhbGxiYWNrKTt9KTt9 LDMpOwpfX2QoInNkay5DYW52YXMuUHJlZmV0Y2hlciIsWyJzZGsuYXBpIiwiY3Jl YXRlQXJyYXlGcm9tIiwic2RrLlJ1bnRpbWUiLCJDYW52YXNQcmVmZXRjaGVyQ29u ZmlnIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ3Nkay5hcGknKSxo PWIoJ2NyZWF0ZUFycmF5RnJvbScpLGk9YygnQ2FudmFzUHJlZmV0Y2hlckNvbmZp ZycpLGo9Yignc2RrLlJ1bnRpbWUnKSxrPXtBVVRPTUFUSUM6MCxNQU5VQUw6MX0s bD1pLnNhbXBsZVJhdGUsbT1pLmJsYWNrbGlzdCxuPWsuQVVUT01BVElDLG89W107 ZnVuY3Rpb24gcCgpe3ZhciB1PXtvYmplY3Q6J2RhdGEnLGxpbms6J2hyZWYnLHNj cmlwdDonc3JjJ307aWYobj09ay5BVVRPTUFUSUMpRVM1KEVTNSgnT2JqZWN0Jywn a2V5cycsZmFsc2UsdSksJ2ZvckVhY2gnLHRydWUsZnVuY3Rpb24odil7dmFyIHc9 dVt2XTtFUzUoaChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh2KSksJ2Zv ckVhY2gnLHRydWUsZnVuY3Rpb24oeCl7aWYoeFt3XSlvLnB1c2goeFt3XSk7fSk7 fSk7aWYoby5sZW5ndGg9PT0wKXJldHVybjtnKGouZ2V0Q2xpZW50SUQoKSsnL3N0 YXRpY3Jlc291cmNlcycsJ3Bvc3QnLHt1cmxzOkVTNSgnSlNPTicsJ3N0cmluZ2lm eScsZmFsc2UsbyksaXNfaHR0cHM6bG9jYXRpb24ucHJvdG9jb2w9PT0naHR0cHM6 J30pO289W107fWZ1bmN0aW9uIHEoKXtpZighai5pc0Vudmlyb25tZW50KGouRU5W SVJPTk1FTlRTLkNBTlZBUyl8fCFqLmdldENsaWVudElEKCl8fCFsKXJldHVybjtp ZihNYXRoLnJhbmRvbSgpPjEvbHx8bT09JyonfHx+RVM1KG0sJ2luZGV4T2YnLHRy dWUsai5nZXRDbGllbnRJRCgpKSlyZXR1cm47c2V0VGltZW91dChwLDMwMDAwKTt9 ZnVuY3Rpb24gcih1KXtuPXU7fWZ1bmN0aW9uIHModSl7by5wdXNoKHUpO312YXIg dD17Q09MTEVDVF9BVVRPTUFUSUM6ay5BVVRPTUFUSUMsQ09MTEVDVF9NQU5VQUw6 ay5NQU5VQUwsYWRkU3RhdGljUmVzb3VyY2U6cyxzZXRDb2xsZWN0aW9uTW9kZTpy LF9tYXliZVNhbXBsZTpxfTtlLmV4cG9ydHM9dDt9KTsKX19kKCJsZWdhY3k6ZmIu Y2FudmFzLnByZWZldGNoZXIiLFsiRkIiLCJzZGsuQ2FudmFzLlByZWZldGNoZXIi LCJzZGsuRXZlbnQiLCJzZGsuUnVudGltZSJdLGZ1bmN0aW9uKGEsYixjLGQpe3Zh ciBlPWIoJ0ZCJyksZj1iKCdzZGsuQ2FudmFzLlByZWZldGNoZXInKSxnPWIoJ3Nk ay5FdmVudCcpLGg9Yignc2RrLlJ1bnRpbWUnKTtlLnByb3ZpZGUoJ0NhbnZhcy5Q cmVmZXRjaGVyJyxmKTtnLnN1YnNjcmliZSgnaW5pdDpwb3N0JyxmdW5jdGlvbihp KXtpZihoLmlzRW52aXJvbm1lbnQoaC5FTlZJUk9OTUVOVFMuQ0FOVkFTKSlmLl9t YXliZVNhbXBsZSgpO30pO30sMyk7Cl9fZCgibGVnYWN5OmZiLmNvbXBhdC51aSIs WyJjb3B5UHJvcGVydGllcyIsIkZCIiwiTG9nIiwic2RrLnVpIiwic2RrLlVJU2Vy dmVyIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YignY29weVByb3BlcnRpZXMn KSxmPWIoJ0ZCJyksZz1iKCdMb2cnKSxoPWIoJ3Nkay51aScpLGk9Yignc2RrLlVJ U2VydmVyJyk7Zi5wcm92aWRlKCcnLHtzaGFyZTpmdW5jdGlvbihqKXtnLmVycm9y KCdzaGFyZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgRkIudWko KSBpbnN0ZWFkLicpO2goe2Rpc3BsYXk6J3BvcHVwJyxtZXRob2Q6J3N0cmVhbS5z aGFyZScsdTpqfSk7fSxwdWJsaXNoOmZ1bmN0aW9uKGosayl7Zy5lcnJvcigncHVi bGlzaCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgRkIudWkoKSBp bnN0ZWFkLicpO2o9anx8e307aChlKHtkaXNwbGF5Oidwb3B1cCcsbWV0aG9kOidz dHJlYW0ucHVibGlzaCcscHJldmlldzoxfSxqfHx7fSksayk7fSxhZGRGcmllbmQ6 ZnVuY3Rpb24oaixrKXtnLmVycm9yKCdhZGRGcmllbmQoKSBoYXMgYmVlbiBkZXBy ZWNhdGVkLiBQbGVhc2UgdXNlIEZCLnVpKCkgaW5zdGVhZC4nKTtoKHtkaXNwbGF5 Oidwb3B1cCcsaWQ6aixtZXRob2Q6J2ZyaWVuZC5hZGQnfSxrKTt9fSk7aS5NZXRo b2RzWydhdXRoLmxvZ2luJ109aS5NZXRob2RzWydwZXJtaXNzaW9ucy5yZXF1ZXN0 J107fSwzKTsKX19kKCJtZXJnZUFycmF5cyIsW10sZnVuY3Rpb24oYSxiLGMsZCxl LGYpe2Z1bmN0aW9uIGcoaCxpKXtmb3IodmFyIGo9MDtqPGkubGVuZ3RoO2orKylp ZihFUzUoaCwnaW5kZXhPZicsdHJ1ZSxpW2pdKTwwKWgucHVzaChpW2pdKTtyZXR1 cm4gaDt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgiZm9ybWF0IixbXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhoLGkpe2k9QXJyYXkucHJvdG90eXBlLnNs aWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBoLnJlcGxhY2UoL1x7KFxkKylc fS9nLGZ1bmN0aW9uKGosayl7dmFyIGw9aVtOdW1iZXIoayldO3JldHVybiAobD09 PW51bGx8fGw9PT11bmRlZmluZWQpPycnOmwudG9TdHJpbmcoKTt9KTt9ZS5leHBv cnRzPWc7fSk7Cl9fZCgic2FmZUV2YWwiLFtdLGZ1bmN0aW9uKGEsYixjLGQsZSxm KXtmdW5jdGlvbiBnKGgsaSl7aWYoaD09PW51bGx8fHR5cGVvZiBoPT09J3VuZGVm aW5lZCcpcmV0dXJuO2lmKHR5cGVvZiBoIT09J3N0cmluZycpcmV0dXJuIGg7aWYo L15cdyskLy50ZXN0KGgpJiZ0eXBlb2Ygd2luZG93W2hdPT09J2Z1bmN0aW9uJyly ZXR1cm4gd2luZG93W2hdLmFwcGx5KG51bGwsaXx8W10pO3JldHVybiBGdW5jdGlv bigncmV0dXJuIGV2YWwoIicraC5yZXBsYWNlKC8iL2csJ1xcIicpKyciKTsnKS5h cHBseShudWxsLGl8fFtdKTt9ZS5leHBvcnRzPWc7fSk7Cl9fZCgic2RrLldhaXRh YmxlIixbInNkay5Nb2RlbCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1i KCdzZGsuTW9kZWwnKSxoPWcuZXh0ZW5kKHtjb25zdHJ1Y3RvcjpmdW5jdGlvbigp e3RoaXMucGFyZW50KHtWYWx1ZTp1bmRlZmluZWR9KTt9LGVycm9yOmZ1bmN0aW9u KGkpe3RoaXMuaW5mb3JtKCJlcnJvciIsaSk7fSx3YWl0OmZ1bmN0aW9uKGksail7 aWYoail0aGlzLnN1YnNjcmliZSgnZXJyb3InLGopO3RoaXMubW9uaXRvcignVmFs dWUuY2hhbmdlJyxFUzUoZnVuY3Rpb24oKXt2YXIgaz10aGlzLmdldFZhbHVlKCk7 aWYoayE9PXVuZGVmaW5lZCl7dGhpcy52YWx1ZT1rO2koayk7cmV0dXJuIHRydWU7 fX0sJ2JpbmQnLHRydWUsdGhpcykpO319KTtlLmV4cG9ydHM9aDt9KTsKX19kKCJz ZGsuUXVlcnkiLFsiZm9ybWF0Iiwic2FmZUV2YWwiLCJUeXBlIiwic2RrLldhaXRh YmxlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ2Zvcm1hdCcpLGg9 Yignc2FmZUV2YWwnKSxpPWIoJ1R5cGUnKSxqPWIoJ3Nkay5XYWl0YWJsZScpO2Z1 bmN0aW9uIGsocCl7cmV0dXJuIEVTNShwLnNwbGl0KCcsJyksJ21hcCcsdHJ1ZSxm dW5jdGlvbihxKXtyZXR1cm4gRVM1KHEsJ3RyaW0nLHRydWUpO30pO31mdW5jdGlv biBsKHApe3ZhciBxPSgvXlxzKihcdyspXHMqPVxzKiguKilccyokL2kpLmV4ZWMo cCkscixzLHQ9J3Vua25vd24nO2lmKHEpe3M9cVsyXTtpZigvXihbIiddKSg/Olxc Py4pKj9cMSQvLnRlc3Qocykpe3M9aChzKTt0PSdpbmRleCc7fWVsc2UgaWYoL15c ZCtcLj9cZCokLy50ZXN0KHMpKXQ9J2luZGV4Jzt9aWYodD09J2luZGV4Jyl7cj17 dHlwZTonaW5kZXgnLGtleTpxWzFdLHZhbHVlOnN9O31lbHNlIHI9e3R5cGU6J3Vu a25vd24nLHZhbHVlOnB9O3JldHVybiByO31mdW5jdGlvbiBtKHApe3JldHVybiB0 eXBlb2YgcD09PSdzdHJpbmcnP0VTNSgnSlNPTicsJ3N0cmluZ2lmeScsZmFsc2Us cCk6cDt9dmFyIG49MSxvPWouZXh0ZW5kKHtjb25zdHJ1Y3RvcjpmdW5jdGlvbigp e3RoaXMucGFyZW50KCk7dGhpcy5uYW1lPSd2XycrbisrO30saGFzRGVwZW5kZW5j eTpmdW5jdGlvbihwKXtpZihhcmd1bWVudHMubGVuZ3RoKXRoaXMuX2hhc0RlcGVu ZGVuY3k9cDtyZXR1cm4gISF0aGlzLl9oYXNEZXBlbmRlbmN5O30scGFyc2U6ZnVu Y3Rpb24ocCl7dmFyIHE9Zy5hcHBseShudWxsLHApLHI9KC9ec2VsZWN0ICguKj8p IGZyb20gKFx3Kylccyt3aGVyZSAoLiopJC9pKS5leGVjKHEpO3RoaXMuZmllbGRz PWsoclsxXSk7dGhpcy50YWJsZT1yWzJdO3RoaXMud2hlcmU9bChyWzNdKTtmb3Io dmFyIHM9MTtzPHAubGVuZ3RoO3MrKylpZihpLmluc3RhbmNlT2YobyxwW3NdKSlw W3NdLmhhc0RlcGVuZGVuY3kodHJ1ZSk7cmV0dXJuIHRoaXM7fSx0b0ZxbDpmdW5j dGlvbigpe3ZhciBwPSdzZWxlY3QgJyt0aGlzLmZpZWxkcy5qb2luKCcsJykrJyBm cm9tICcrdGhpcy50YWJsZSsnIHdoZXJlICc7c3dpdGNoKHRoaXMud2hlcmUudHlw ZSl7Y2FzZSAndW5rbm93bic6cCs9dGhpcy53aGVyZS52YWx1ZTticmVhaztjYXNl ICdpbmRleCc6cCs9dGhpcy53aGVyZS5rZXkrJz0nK20odGhpcy53aGVyZS52YWx1 ZSk7YnJlYWs7Y2FzZSAnaW4nOmlmKHRoaXMud2hlcmUudmFsdWUubGVuZ3RoPT0x KXtwKz10aGlzLndoZXJlLmtleSsnPScrbSh0aGlzLndoZXJlLnZhbHVlWzBdKTt9 ZWxzZSBwKz10aGlzLndoZXJlLmtleSsnIGluICgnK0VTNSh0aGlzLndoZXJlLnZh bHVlLCdtYXAnLHRydWUsbSkuam9pbignLCcpKycpJzticmVhazt9cmV0dXJuIHA7 fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAnIycrdGhpcy5uYW1lO319KTtl LmV4cG9ydHM9bzt9KTsKX19kKCJzZGsuRGF0YSIsWyJzZGsuYXBpIiwic2RrLkVy cm9ySGFuZGxpbmciLCJtZXJnZUFycmF5cyIsInNkay5RdWVyeSIsInNhZmVFdmFs Iiwic2RrLldhaXRhYmxlIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIo J3Nkay5hcGknKSxoPWIoJ3Nkay5FcnJvckhhbmRsaW5nJyksaT1iKCdtZXJnZUFy cmF5cycpLGo9Yignc2RrLlF1ZXJ5Jyksaz1iKCdzYWZlRXZhbCcpLGw9Yignc2Rr LldhaXRhYmxlJyksbT17cXVlcnk6ZnVuY3Rpb24obixvKXt2YXIgcD1uZXcgaigp LnBhcnNlKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO20u cXVldWUucHVzaChwKTttLl93YWl0VG9Qcm9jZXNzKCk7cmV0dXJuIHA7fSx3YWl0 T246ZnVuY3Rpb24obixvKXt2YXIgcD1uZXcgbCgpLHE9bi5sZW5ndGg7aWYodHlw ZW9mKG8pPT0nc3RyaW5nJyl7dmFyIHI9bztvPWgudW5ndWFyZChmdW5jdGlvbigp e3JldHVybiBrKHIpO30pO31FUzUobiwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlvbihz KXtzLm1vbml0b3IoJ1ZhbHVlLmNoYW5nZScsZnVuY3Rpb24oKXt2YXIgdD1mYWxz ZTtpZihtLl9nZXRWYWx1ZShzKSE9PXVuZGVmaW5lZCl7cy52YWx1ZT1zLmdldFZh bHVlKCk7cS0tO3Q9dHJ1ZTt9aWYocT09PTApe3ZhciB1PW8oRVM1KG4sJ21hcCcs dHJ1ZSxtLl9nZXRWYWx1ZSkpO3Auc2V0VmFsdWUodSE9PXVuZGVmaW5lZD91OnRy dWUpO31yZXR1cm4gdDt9KTt9KTtyZXR1cm4gcDt9LHByb2Nlc3M6ZnVuY3Rpb24o bil7bS5fcHJvY2VzcyhuKTt9LF9nZXRWYWx1ZTpmdW5jdGlvbihuKXtyZXR1cm4g biBpbnN0YW5jZW9mIGw/bi5nZXRWYWx1ZSgpOm47fSxfc2VsZWN0QnlJbmRleDpm dW5jdGlvbihuLG8scCxxKXt2YXIgcj1uZXcgaigpO3IuZmllbGRzPW47ci50YWJs ZT1vO3Iud2hlcmU9e3R5cGU6J2luZGV4JyxrZXk6cCx2YWx1ZTpxfTttLnF1ZXVl LnB1c2gocik7bS5fd2FpdFRvUHJvY2VzcygpO3JldHVybiByO30sX3dhaXRUb1By b2Nlc3M6ZnVuY3Rpb24oKXtpZihtLnRpbWVyPDApbS50aW1lcj1zZXRUaW1lb3V0 KGZ1bmN0aW9uKCl7bS5fcHJvY2VzcygpO30sMTApO30sX3Byb2Nlc3M6ZnVuY3Rp b24obil7bS50aW1lcj0tMTt2YXIgbz17fSxwPW0ucXVldWU7aWYoIXAubGVuZ3Ro KXJldHVybjttLnF1ZXVlPVtdO2Zvcih2YXIgcT0wO3E8cC5sZW5ndGg7cSsrKXt2 YXIgcj1wW3FdO2lmKHIud2hlcmUudHlwZT09J2luZGV4JyYmIXIuaGFzRGVwZW5k ZW5jeSgpKXttLl9tZXJnZUluZGV4UXVlcnkocixvKTt9ZWxzZSBvW3IubmFtZV09 cjt9dmFyIHM9e3E6e319O2Zvcih2YXIgdCBpbiBvKWlmKG8uaGFzT3duUHJvcGVy dHkodCkpcy5xW3RdPW9bdF0udG9GcWwoKTtpZihuKXMuYWNjZXNzX3Rva2VuPW47 ZygnL2ZxbCcsJ0dFVCcscyxmdW5jdGlvbih1KXtpZih1LmVycm9yKXtFUzUoRVM1 KCdPYmplY3QnLCdrZXlzJyxmYWxzZSxvKSwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlv bih2KXtvW3ZdLmVycm9yKG5ldyBFcnJvcih1LmVycm9yLm1lc3NhZ2UpKTt9KTt9 ZWxzZSBFUzUodS5kYXRhLCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKHYpe29bdi5u YW1lXS5zZXRWYWx1ZSh2LmZxbF9yZXN1bHRfc2V0KTt9KTt9KTt9LF9tZXJnZUlu ZGV4UXVlcnk6ZnVuY3Rpb24obixvKXt2YXIgcD1uLndoZXJlLmtleSxxPW4ud2hl cmUudmFsdWUscj0naW5kZXhfJytuLnRhYmxlKydfJytwLHM9b1tyXTtpZighcyl7 cz1vW3JdPW5ldyBqKCk7cy5maWVsZHM9W3BdO3MudGFibGU9bi50YWJsZTtzLndo ZXJlPXt0eXBlOidpbicsa2V5OnAsdmFsdWU6W119O31pKHMuZmllbGRzLG4uZmll bGRzKTtpKHMud2hlcmUudmFsdWUsW3FdKTtzLndhaXQoZnVuY3Rpb24odCl7bi5z ZXRWYWx1ZShFUzUodCwnZmlsdGVyJyx0cnVlLGZ1bmN0aW9uKHUpe3JldHVybiB1 W3BdPT1xO30pKTt9KTt9LHRpbWVyOi0xLHF1ZXVlOltdfTtlLmV4cG9ydHM9bTt9 KTsKX19kKCJsZWdhY3k6ZmIuZGF0YSIsWyJGQiIsInNkay5EYXRhIl0sZnVuY3Rp b24oYSxiLGMsZCl7dmFyIGU9YignRkInKSxmPWIoJ3Nkay5EYXRhJyk7ZS5wcm92 aWRlKCdEYXRhJyxmKTt9LDMpOwpfX2QoImxlZ2FjeTpmYi5ldmVudCIsWyJGQiIs InNkay5FdmVudCJdLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIoJ0ZCJyksZj1i KCdzZGsuRXZlbnQnKTtlLnByb3ZpZGUoJ0V2ZW50JyxmKTtlLnByb3ZpZGUoJ0V2 ZW50UHJvdmlkZXInLGYpO30sMyk7Cl9fZCgibGVnYWN5OmZiLmZyaWN0aW9ubGVz cyIsWyJGQiIsInNkay5GcmljdGlvbmxlc3MiXSxmdW5jdGlvbihhLGIsYyxkKXt2 YXIgZT1iKCdGQicpLGY9Yignc2RrLkZyaWN0aW9ubGVzcycpO2UucHJvdmlkZSgn RnJpY3Rpb25sZXNzJyxmKTt9LDMpOwpfX2QoInNkay5pbml0IixbInNkay5Db29r aWUiLCJjb3B5UHJvcGVydGllcyIsImNyZWF0ZUFycmF5RnJvbSIsInNkay5FcnJv ckhhbmRsaW5nIiwic2RrLkV2ZW50IiwiTG9nIiwiUXVlcnlTdHJpbmciLCJzZGsu UnVudGltZSIsIndyYXBGdW5jdGlvbiJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2 YXIgZz1iKCdzZGsuQ29va2llJyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9Yign Y3JlYXRlQXJyYXlGcm9tJyksaj1iKCdzZGsuRXJyb3JIYW5kbGluZycpLGs9Yign c2RrLkV2ZW50JyksbD1iKCdMb2cnKSxtPWIoJ1F1ZXJ5U3RyaW5nJyksbj1iKCdz ZGsuUnVudGltZScpLG89Yignd3JhcEZ1bmN0aW9uJyk7ZnVuY3Rpb24gcChxKXtp ZihuLmdldEluaXRpYWxpemVkKCkpbC53YXJuKCdGQi5pbml0IGhhcyBhbHJlYWR5 IGJlZW4gY2FsbGVkIC0gdGhpcyBjb3VsZCBpbmRpY2F0ZSBhIHByb2JsZW0nKTtp ZigvbnVtYmVyfHN0cmluZy8udGVzdCh0eXBlb2YgcSkpe2wud2FybignRkIuaW5p dCBjYWxsZWQgd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMnKTtxPXthcGlLZXk6cX07 fXE9aCh7bG9nZ2luZzp0cnVlLHN0YXR1czp0cnVlfSxxfHx7fSk7dmFyIHI9cS5h cHBJZHx8cS5hcGlLZXk7aWYoL251bWJlcnxzdHJpbmcvLnRlc3QodHlwZW9mIHIp KW4uc2V0Q2xpZW50SUQoci50b1N0cmluZygpKTtpZignc2NvcGUnIGluIHEpbi5z ZXRTY29wZShxLnNjb3BlKTtpZihxLmNvb2tpZSl7bi5zZXRVc2VDb29raWUodHJ1 ZSk7aWYodHlwZW9mIHEuY29va2llPT09J3N0cmluZycpZy5zZXREb21haW4ocS5j b29raWUpO31uLnNldEluaXRpYWxpemVkKHRydWUpO2suZmlyZSgnaW5pdDpwb3N0 JyxxKTt9c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBxPS8oY29ubmVjdFwuZmFj ZWJvb2tcLm5ldHxcLmZhY2Vib29rXC5jb21cL2Fzc2V0cy5waHApLio/IyguKikv O0VTNShpKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKSks J2ZvckVhY2gnLHRydWUsZnVuY3Rpb24ocil7aWYoci5zcmMpe3ZhciBzPXEuZXhl YyhyLnNyYyk7aWYocyl7dmFyIHQ9bS5kZWNvZGUoc1syXSk7Zm9yKHZhciB1IGlu IHQpaWYodC5oYXNPd25Qcm9wZXJ0eSh1KSl7dmFyIHY9dFt1XTtpZih2PT0nMCcp dFt1XT0wO31wKHQpO319fSk7aWYod2luZG93LmZiQXN5bmNJbml0JiYhd2luZG93 LmZiQXN5bmNJbml0Lmhhc1J1bil7d2luZG93LmZiQXN5bmNJbml0Lmhhc1J1bj10 cnVlO2oudW5ndWFyZCh3aW5kb3cuZmJBc3luY0luaXQpKCk7fX0sMCk7ZS5leHBv cnRzPXA7fSk7Cl9fZCgibGVnYWN5OmZiLmluaXQiLFsiRkIiLCJzZGsuaW5pdCJd LGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIoJ0ZCJyksZj1iKCdzZGsuaW5pdCcp O2UucHJvdmlkZSgnJyx7aW5pdDpmfSk7fSwzKTsKX19kKCJsZWdhY3k6ZmIuanNv biIsWyJGQiIsIk1hbmFnZWRFcnJvciJdLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBl PWIoJ0ZCJyksZj1iKCdNYW5hZ2VkRXJyb3InKTtlLnByb3ZpZGUoJ0pTT04nLHtz dHJpbmdpZnk6ZnVuY3Rpb24oZyl7dHJ5e3JldHVybiBFUzUoJ0pTT04nLCdzdHJp bmdpZnknLGZhbHNlLGcpO31jYXRjaChoKXt0aHJvdyBuZXcgZihoLm1lc3NhZ2Us aCk7fX0scGFyc2U6ZnVuY3Rpb24oZyl7dHJ5e3JldHVybiBFUzUoJ0pTT04nLCdw YXJzZScsZmFsc2UsZyk7fWNhdGNoKGgpe3Rocm93IG5ldyBmKGgubWVzc2FnZSxo KTt9fX0pO30sMyk7Cl9fZCgibGVnYWN5OmZiLnBheSIsWyJGQiIsImNvcHlQcm9w ZXJ0aWVzIiwic2RrLlJ1bnRpbWUiLCJzZGsuVUlTZXJ2ZXIiLCJzZGsuWEQiXSxm dW5jdGlvbihhLGIsYyxkKXtiKCdGQicpO3ZhciBlPWIoJ2NvcHlQcm9wZXJ0aWVz JyksZj1iKCdzZGsuUnVudGltZScpLGc9Yignc2RrLlVJU2VydmVyJyksaD1iKCdz ZGsuWEQnKSxpPXtlcnJvcl9jb2RlOjEzODMwMDEsZXJyb3JfbWVzc2FnZTonQW4g dW5rbm93biBlcnJvciBjYXVzZWQgdGhlIGRpYWxvZyB0byBiZSBjbG9zZWQnfSxq PWZ1bmN0aW9uKGspe3JldHVybiBmdW5jdGlvbihsKXtrKGwmJmwucmVzcG9uc2U/ RVM1KCdKU09OJywncGFyc2UnLGZhbHNlLGwucmVzcG9uc2UpOmkpO307fTtlKGcu TWV0aG9kcyx7J3BheS5wcm9tcHQnOnt0cmFuc2Zvcm06ZnVuY3Rpb24oayl7dmFy IGw9aC5oYW5kbGVyKGooay5jYiksJ3BhcmVudC5mcmFtZXNbJysod2luZG93Lm5h bWV8fCdpZnJhbWVfY2FudmFzJykrJ10nKTtrLnBhcmFtcy5jaGFubmVsPWw7aC5p bmZvcm0oJ1BheS5Qcm9tcHQnLGsucGFyYW1zKTt9fSxwYXk6e3NpemU6e3dpZHRo OjU1NSxoZWlnaHQ6MTIwfSxjb25uZWN0RGlzcGxheToncG9wdXAnLHRyYW5zZm9y bTpmdW5jdGlvbihrKXtrLmNiPWooay5jYik7aWYoIWYuaXNFbnZpcm9ubWVudChm LkVOVklST05NRU5UUy5DQU5WQVMpKXtrLnBhcmFtcy5vcmRlcl9pbmZvPUVTNSgn SlNPTicsJ3N0cmluZ2lmeScsZmFsc2Usay5wYXJhbXMub3JkZXJfaW5mbyk7cmV0 dXJuIGs7fXZhciBsPWguaGFuZGxlcihrLmNiLCdwYXJlbnQuZnJhbWVzWycrKHdp bmRvdy5uYW1lfHwnaWZyYW1lX2NhbnZhcycpKyddJyk7ay5wYXJhbXMuY2hhbm5l bD1sO2sucGFyYW1zLnVpc2VydmVyPXRydWU7aC5pbmZvcm0oJ1BheS5Qcm9tcHQn LGsucGFyYW1zKTt9fX0pO30sMyk7Cl9fZCgibGVnYWN5OmZiLnVhIixbIkZCIiwi VXNlckFnZW50Il0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YignRkInKSxmPWIo J1VzZXJBZ2VudCcpO2UucHJvdmlkZSgnVUEnLHtuYXRpdmVBcHA6Zi5uYXRpdmVB cHB9KTt9LDMpOwpfX2QoImxlZ2FjeTpmYi51aSIsWyJGQiIsInNkay51aSJdLGZ1 bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIoJ0ZCJyksZj1iKCdzZGsudWknKTtlLnBy b3ZpZGUoJycse3VpOmZ9KTt9LDMpOwpfX2QoIk1pbnkiLFtdLGZ1bmN0aW9uKGEs YixjLGQsZSxmKXt2YXIgZz0nTWlueTEnLGg9e2VuY29kZTpbXSxkZWNvZGU6e319 LGk9J3d4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fJy5zcGxpdCgnJyk7 ZnVuY3Rpb24gaihuKXtmb3IodmFyIG89aC5lbmNvZGUubGVuZ3RoO288bjtvKysp e3ZhciBwPW8udG9TdHJpbmcoMzIpLnNwbGl0KCcnKTtwW3AubGVuZ3RoLTFdPWlb cGFyc2VJbnQocFtwLmxlbmd0aC0xXSwzMildO3A9cC5qb2luKCcnKTtoLmVuY29k ZVtvXT1wO2guZGVjb2RlW3BdPW87fXJldHVybiBoO31mdW5jdGlvbiBrKG4pe3Zh ciBvPW4ubWF0Y2goL1x3K3xcVysvZykscD17fTtmb3IodmFyIHE9MDtxPG8ubGVu Z3RoO3ErKylwW29bcV1dPShwW29bcV1dfHwwKSsxO3ZhciByPUVTNSgnT2JqZWN0 Jywna2V5cycsZmFsc2UscCk7ci5zb3J0KGZ1bmN0aW9uKHUsdil7cmV0dXJuIHBb dV08cFt2XT8xOihwW3ZdPHBbdV0/LTE6MCk7fSk7dmFyIHM9aihyLmxlbmd0aCku ZW5jb2RlO2ZvcihxPTA7cTxyLmxlbmd0aDtxKyspcFtyW3FdXT1zW3FdO3ZhciB0 PVtdO2ZvcihxPTA7cTxvLmxlbmd0aDtxKyspdFtxXT1wW29bcV1dO2ZvcihxPTA7 cTxyLmxlbmd0aDtxKyspcltxXT1yW3FdLnJlcGxhY2UoLyd+Jy9nLCdcXH4nKTty ZXR1cm4gW2csci5sZW5ndGhdLmNvbmNhdChyKS5jb25jYXQodC5qb2luKCcnKSku am9pbignficpO31mdW5jdGlvbiBsKG4pe3ZhciBvPW4uc3BsaXQoJ34nKTtpZihv LnNoaWZ0KCkhPWcpdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBNaW55IHN0cmVhbScp O3ZhciBwPXBhcnNlSW50KG8uc2hpZnQoKSwxMCkscT1vLnBvcCgpO3E9cS5tYXRj aCgvWzAtOWEtdl0qW1wtdy16QS1aX10vZyk7dmFyIHI9byxzPWoocCkuZGVjb2Rl LHQ9W107Zm9yKHZhciB1PTA7dTxxLmxlbmd0aDt1KyspdFt1XT1yW3NbcVt1XV1d O3JldHVybiB0LmpvaW4oJycpO312YXIgbT17ZW5jb2RlOmssZGVjb2RlOmx9O2Uu ZXhwb3J0cz1tO30pOwpfX2QoInNkay5mZWF0dXJlIixbIlNES0NvbmZpZyJdLGZ1 bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1jKCdTREtDb25maWcnKTtmdW5jdGlv biBoKGksail7aWYoZy5mZWF0dXJlcyYmaSBpbiBnLmZlYXR1cmVzKXJldHVybiBn LmZlYXR1cmVzW2ldO3JldHVybiB0eXBlb2YgaiE9PSd1bmRlZmluZWQnP2o6bnVs bDt9ZS5leHBvcnRzPWg7fSk7Cl9fZCgicnVuT25jZSIsW10sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe2Z1bmN0aW9uIGcoaCl7dmFyIGksajtyZXR1cm4gZnVuY3Rpb24o KXtpZighaSl7aT10cnVlO2o9aCgpO31yZXR1cm4gajt9O31lLmV4cG9ydHM9Zzt9 KTsKX19kKCJYRkJNTCIsWyJBc3NlcnQiLCJjb3B5UHJvcGVydGllcyIsImNyZWF0 ZUFycmF5RnJvbSIsInNkay5ET00iLCJzZGsuZmVhdHVyZSIsInNkay5JbXByZXNz aW9ucyIsIkxvZyIsIk9ic2VydmFibGVNaXhpbiIsInJ1bk9uY2UiLCJVc2VyQWdl bnQiLCJTREtDb25maWciXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign QXNzZXJ0JyksaD1iKCdjb3B5UHJvcGVydGllcycpLGk9YignY3JlYXRlQXJyYXlG cm9tJyksaj1iKCdzZGsuRE9NJyksaz1iKCdzZGsuZmVhdHVyZScpLGw9Yignc2Rr LkltcHJlc3Npb25zJyksbT1iKCdMb2cnKSxuPWIoJ09ic2VydmFibGVNaXhpbicp LG89YigncnVuT25jZScpLHA9YygnU0RLQ29uZmlnJykscT1iKCdVc2VyQWdlbnQn KSxyPXt9LHM9e30sdD0wLHU9bmV3IG4oKTtmdW5jdGlvbiB2KGNhLGRhKXtyZXR1 cm4gY2FbZGFdKycnO31mdW5jdGlvbiB3KGNhKXtyZXR1cm4gY2Euc2NvcGVOYW1l PyhjYS5zY29wZU5hbWUrJzonK2NhLm5vZGVOYW1lKTonJzt9ZnVuY3Rpb24geChj YSl7cmV0dXJuIHJbdihjYSwnbm9kZU5hbWUnKS50b0xvd2VyQ2FzZSgpXXx8clt3 KGNhKS50b0xvd2VyQ2FzZSgpXTt9ZnVuY3Rpb24geShjYSl7dmFyIGRhPUVTNShF UzUodihjYSwnY2xhc3NOYW1lJyksJ3RyaW0nLHRydWUpLnNwbGl0KC9ccysvKSwn ZmlsdGVyJyx0cnVlLGZ1bmN0aW9uKGVhKXtyZXR1cm4gcy5oYXNPd25Qcm9wZXJ0 eShlYSk7fSk7aWYoZGEubGVuZ3RoPT09MClyZXR1cm4gdW5kZWZpbmVkO2lmKCFj YS5jaGlsZE5vZGVzfHxjYS5jaGlsZE5vZGVzLmxlbmd0aD09PTB8fChjYS5jaGls ZE5vZGVzLmxlbmd0aD09MSYmY2EuY2hpbGROb2Rlc1swXS5ub2RlVHlwZT09Myl8 fGNhLmdldEF0dHJpYnV0ZSgnZmIteGZibWwtc3RhdGUnKSlyZXR1cm4gc1tkYVsw XV07fWZ1bmN0aW9uIHooY2Epe3ZhciBkYT17fTtFUzUoaShjYS5hdHRyaWJ1dGVz KSwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlvbihlYSl7ZGFbdihlYSwnbmFtZScpXT12 KGVhLCd2YWx1ZScpO30pO3JldHVybiBkYTt9ZnVuY3Rpb24gYWEoY2EsZGEsZWEp e2cuaXNUcnVlKGNhJiZjYS5ub2RlVHlwZSYmY2Eubm9kZVR5cGU9PT0xJiYhIWNh LmdldEVsZW1lbnRzQnlUYWdOYW1lLCdJbnZhbGlkIERPTSBub2RlIHBhc3NlZCB0 byBGQi5YRkJNTC5wYXJzZSgpJyk7Zy5pc0Z1bmN0aW9uKGRhLCdJbnZhbGlkIGNh bGxiYWNrIHBhc3NlZCB0byBGQi5YRkJNTC5wYXJzZSgpJyk7dmFyIGZhPSsrdDtt LmluZm8oJ1hGQk1MIFBhcnNpbmcgU3RhcnQgJXMnLGZhKTt2YXIgZ2E9MSxoYT0w LGlhPWZ1bmN0aW9uKCl7Z2EtLTtpZihnYT09PTApe20uaW5mbygnWEZCTUwgUGFy c2luZyBGaW5pc2ggJXMsICVzIHRhZ3MgZm91bmQnLGZhLGhhKTtkYSgpO3UuaW5m b3JtKCdyZW5kZXInLGZhLGhhKTt9Zy5pc1RydWUoZ2E+PTAsJ29ucmVuZGVyKCkg aGFzIGJlZW4gY2FsbGVkIHRvbyBtYW55IHRpbWVzJyk7fTtFUzUoaShjYS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnKicpKSwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlvbihr YSl7aWYoIWVhJiZrYS5nZXRBdHRyaWJ1dGUoJ2ZiLXhmYm1sLXN0YXRlJykpcmV0 dXJuO2lmKGthLm5vZGVUeXBlIT09MSlyZXR1cm47dmFyIGxhPXkoa2EpLG1hPXoo a2EpO2lmKCFsYSl7bGE9eChrYSk7aWYoIWxhKXJldHVybjtpZihrKCdjb252ZXJ0 X3hmYm1sJyx0cnVlKSYmcS5pZSgpPDkpe3ZhciBuYT1rYTtrYT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCdkaXYnKTtqLmFkZENzcyhrYSxsYS54bWxucysnLScrbGEu bG9jYWxOYW1lKTtFUzUoaShuYS5jaGlsZE5vZGVzKSwnZm9yRWFjaCcsdHJ1ZSxm dW5jdGlvbihyYSl7a2EuYXBwZW5kQ2hpbGQocmEpO30pO2Zvcih2YXIgb2EgaW4g bWEpaWYobWEuaGFzT3duUHJvcGVydHkob2EpKWthLnNldEF0dHJpYnV0ZShvYSxt YVtvYV0pO25hLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGthLG5hKTt9fWdhKys7 aGErKzt2YXIgcGE9bmV3IGxhLmN0b3Ioa2EsbGEueG1sbnMsbGEubG9jYWxOYW1l LG1hKTtwYS5zdWJzY3JpYmUoJ3JlbmRlcicsbyhmdW5jdGlvbigpe2thLnNldEF0 dHJpYnV0ZSgnZmIteGZibWwtc3RhdGUnLCdyZW5kZXJlZCcpO2lhKCk7fSkpO3Zh ciBxYT1mdW5jdGlvbigpe2lmKGthLmdldEF0dHJpYnV0ZSgnZmIteGZibWwtc3Rh dGUnKT09J3BhcnNlZCcpe3Uuc3Vic2NyaWJlKCdyZW5kZXIucXVldWUnLHFhKTt9 ZWxzZXtrYS5zZXRBdHRyaWJ1dGUoJ2ZiLXhmYm1sLXN0YXRlJywncGFyc2VkJyk7 cGEucHJvY2VzcygpO319O3FhKCk7fSk7dS5pbmZvcm0oJ3BhcnNlJyxmYSxoYSk7 dmFyIGphPTMwMDAwO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihnYT4wKW0ud2Fy bignJXMgdGFncyBmYWlsZWQgdG8gcmVuZGVyIGluICVzIG1zJyxnYSxqYSk7fSxq YSk7aWEoKTt9dS5zdWJzY3JpYmUoJ3JlbmRlcicsZnVuY3Rpb24oKXt2YXIgY2E9 dS5nZXRTdWJzY3JpYmVycygncmVuZGVyLnF1ZXVlJyk7dS5jbGVhclN1YnNjcmli ZXJzKCdyZW5kZXIucXVldWUnKTtFUzUoY2EsJ2ZvckVhY2gnLHRydWUsZnVuY3Rp b24oZGEpe2RhKCk7fSk7fSk7aCh1LHtyZWdpc3RlclRhZzpmdW5jdGlvbihjYSl7 dmFyIGRhPWNhLnhtbG5zKyc6JytjYS5sb2NhbE5hbWU7Zy5pc1VuZGVmaW5lZChy W2RhXSxkYSsnIGFscmVhZHkgcmVnaXN0ZXJlZCcpO3JbZGFdPWNhO3NbY2EueG1s bnMrJy0nK2NhLmxvY2FsTmFtZV09Y2E7fSxwYXJzZTpmdW5jdGlvbihjYSxkYSl7 YWEoY2F8fGRvY3VtZW50LmJvZHksZGF8fGZ1bmN0aW9uKCl7fSx0cnVlKTt9LHBh cnNlTmV3OmZ1bmN0aW9uKCl7YWEoZG9jdW1lbnQuYm9keSxmdW5jdGlvbigpe30s ZmFsc2UpO319KTt2YXIgYmE9ZnVuY3Rpb24oY2EsZGEpe2lmKE1hdGgucmFuZG9t KCk8cC50YWdDb3VudExvZ1JhdGUpc2V0VGltZW91dChFUzUobC5sb2csJ2JpbmQn LHRydWUsbnVsbCwxMDIse3RhZ19jb3VudDpkYX0pLDUwMDApO3UudW5zdWJzY3Jp YmUoJ3BhcnNlJyxiYSk7fTt1LnN1YnNjcmliZSgncGFyc2UnLGJhKTtlLmV4cG9y dHM9dTt9KTsKX19kKCJQbHVnaW5QaXBlIixbInNkay5Db250ZW50IiwiY29weVBy b3BlcnRpZXMiLCJndWlkIiwiaW5zZXJ0SWZyYW1lIiwiTWlueSIsIk9ic2VydmFi bGVNaXhpbiIsInNkay5SdW50aW1lIiwiVXJsTWFwIiwiVXNlckFnZW50IiwiWEZC TUwiLCJQbHVnaW5QaXBlQ29uZmlnIiwiU0RLQ29uZmlnIl0sZnVuY3Rpb24oYSxi LGMsZCxlLGYpe3ZhciBnPWIoJ3Nkay5Db250ZW50JyksaD1iKCdjb3B5UHJvcGVy dGllcycpLGk9YignZ3VpZCcpLGo9YignaW5zZXJ0SWZyYW1lJyksaz1iKCdNaW55 JyksbD1iKCdPYnNlcnZhYmxlTWl4aW4nKSxtPWMoJ1BsdWdpblBpcGVDb25maWcn KSxuPWIoJ3Nkay5SdW50aW1lJyksbz1jKCdTREtDb25maWcnKSxwPWIoJ1VybE1h cCcpLHE9YignVXNlckFnZW50Jykscj1iKCdYRkJNTCcpLHM9bmV3IGwoKSx0PW0u dGhyZXNob2xkLHU9W107ZnVuY3Rpb24gdigpe3JldHVybiAhIShvLnVzZVBsdWdp blBpcGUmJm4uZ2V0U2VjdXJlKCkhPT11bmRlZmluZWQmJihxLmNocm9tZSgpfHxx LmZpcmVmb3goKSkmJm0uZW5hYmxlZEFwcHNbbi5nZXRDbGllbnRJRCgpXSk7fWZ1 bmN0aW9uIHcoKXt2YXIgeT11O3U9W107aWYoeS5sZW5ndGg8PXQpe0VTNSh5LCdm b3JFYWNoJyx0cnVlLGZ1bmN0aW9uKGJhKXtqKGJhLmNvbmZpZyk7fSk7cmV0dXJu O312YXIgej15Lmxlbmd0aCsxO2Z1bmN0aW9uIGFhKCl7ei0tO2lmKHo9PT0wKXgo eSk7fUVTNSh5LCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKGJhKXt2YXIgY2E9e307 Zm9yKHZhciBkYSBpbiBiYS5jb25maWcpY2FbZGFdPWJhLmNvbmZpZ1tkYV07Y2Eu dXJsPXAucmVzb2x2ZSgnd3d3JyxuLmdldFNlY3VyZSgpKSsnL3BsdWdpbnMvcGx1 Z2luX3BpcGVfc2hlbGwucGhwJztjYS5vbmxvYWQ9YWE7aihjYSk7fSk7YWEoKTt9 ci5zdWJzY3JpYmUoJ3BhcnNlJyx3KTtmdW5jdGlvbiB4KHkpe3ZhciB6PWRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtnLmFwcGVuZEhpZGRlbih6KTt2YXIg YWE9e307RVM1KHksJ2ZvckVhY2gnLHRydWUsZnVuY3Rpb24oZmEpe2FhW2ZhLmNv bmZpZy5uYW1lXT17cGx1Z2luOmZhLnRhZyxwYXJhbXM6ZmEucGFyYW1zfTt9KTt2 YXIgYmE9RVM1KCdKU09OJywnc3RyaW5naWZ5JyxmYWxzZSxhYSksY2E9ay5lbmNv ZGUoYmEpO0VTNSh5LCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKGZhKXt2YXIgZ2E9 ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoZmEuY29uZmlnLm5hbWUpWzBdO2dh Lm9ubG9hZD1mYS5jb25maWcub25sb2FkO30pO3ZhciBkYT1wLnJlc29sdmUoJ3d3 dycsbi5nZXRTZWN1cmUoKSkrJy9wbHVnaW5zL3BpcGUucGhwJyxlYT1pKCk7aih7 dXJsOidhYm91dDpibGFuaycscm9vdDp6LG5hbWU6ZWEsY2xhc3NOYW1lOidmYl9o aWRkZW4gZmJfaW52aXNpYmxlJyxvbmxvYWQ6ZnVuY3Rpb24oKXtnLnN1Ym1pdFRv VGFyZ2V0KHt1cmw6ZGEsdGFyZ2V0OmVhLHBhcmFtczp7cGx1Z2luczpjYS5sZW5n dGg8YmEubGVuZ3RoP2NhOmJhfX0pO319KTt9aChzLHthZGQ6ZnVuY3Rpb24oeSl7 dmFyIHo9digpO3omJnUucHVzaCh7Y29uZmlnOnkuX2NvbmZpZyx0YWc6eS5fdGFn LHBhcmFtczp5Ll9wYXJhbXN9KTtyZXR1cm4gejt9fSk7ZS5leHBvcnRzPXM7fSk7 Cl9fZCgiSWZyYW1lUGx1Z2luIixbInNkay5BdXRoIiwic2RrLmNyZWF0ZUlmcmFt ZSIsInNkay5ET00iLCJzZGsuRXZlbnQiLCJndWlkIiwiTG9nIiwiT2JzZXJ2YWJs ZU1peGluIiwiUGx1Z2luUGlwZSIsIlF1ZXJ5U3RyaW5nIiwicmVzb2x2ZVVSSSIs InNkay5SdW50aW1lIiwiVHlwZSIsIlVybE1hcCIsInNkay5YRCJdLGZ1bmN0aW9u KGEsYixjLGQsZSxmKXt2YXIgZz1iKCdzZGsuQXV0aCcpLGg9Yignc2RrLmNyZWF0 ZUlmcmFtZScpLGk9Yignc2RrLkRPTScpLGo9Yignc2RrLkV2ZW50Jyksaz1iKCdn dWlkJyksbD1iKCdMb2cnKSxtPWIoJ09ic2VydmFibGVNaXhpbicpLG49YignUGx1 Z2luUGlwZScpLG89YignUXVlcnlTdHJpbmcnKSxwPWIoJ3Jlc29sdmVVUkknKSxx PWIoJ3Nkay5SdW50aW1lJykscj1iKCdUeXBlJykscz1iKCdVcmxNYXAnKSx0PWIo J3Nkay5YRCcpLHU9e3NraW46J3N0cmluZycsZm9udDonc3RyaW5nJyx3aWR0aDon cHgnLGhlaWdodDoncHgnLHJlZjonc3RyaW5nJyxjb2xvcl9zY2hlbWU6J3N0cmlu Zyd9O2Z1bmN0aW9uIHYoY2EsZGEsZWEpe2lmKGRhfHxkYT09PTApY2Euc3R5bGUu d2lkdGg9ZGErJ3B4JztpZihlYXx8ZWE9PT0wKWNhLnN0eWxlLmhlaWdodD1lYSsn cHgnO31mdW5jdGlvbiB3KGNhKXtyZXR1cm4gZnVuY3Rpb24oZGEpe3ZhciBlYT17 d2lkdGg6ZGEud2lkdGgsaGVpZ2h0OmRhLmhlaWdodCxwbHVnaW5JRDpjYX07ai5m aXJlKCd4ZmJtbC5yZXNpemUnLGVhKTt9O312YXIgeD17c3RyaW5nOmZ1bmN0aW9u KGNhKXtyZXR1cm4gY2E7fSxib29sOmZ1bmN0aW9uKGNhKXtyZXR1cm4gY2E/KC9e KD86dHJ1ZXwxfHllc3xvbikkL2kpLnRlc3QoY2EpOnVuZGVmaW5lZDt9LHVybDpm dW5jdGlvbihjYSl7cmV0dXJuIHAoY2EpO30sdXJsX21heWJlOmZ1bmN0aW9uKGNh KXtyZXR1cm4gY2E/cChjYSk6Y2E7fSxob3N0bmFtZTpmdW5jdGlvbihjYSl7cmV0 dXJuIGNhfHx3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7fSxweDpmdW5jdGlvbihj YSl7cmV0dXJuICgvXihcZCspKD86cHgpPyQvKS50ZXN0KGNhKT9wYXJzZUludChS ZWdFeHAuJDEsMTApOnVuZGVmaW5lZDt9LHRleHQ6ZnVuY3Rpb24oY2Epe3JldHVy biBjYTt9fTtmdW5jdGlvbiB5KGNhLGRhKXt2YXIgZWE9Y2FbZGFdfHxjYVtkYS5y ZXBsYWNlKC9fL2csJy0nKV18fGNhW2RhLnJlcGxhY2UoL18vZywnJyldfHxjYVsn ZGF0YS0nK2RhXXx8Y2FbJ2RhdGEtJytkYS5yZXBsYWNlKC9fL2csJy0nKV18fGNh WydkYXRhLScrZGEucmVwbGFjZSgvXy9nLCcnKV18fHVuZGVmaW5lZDtyZXR1cm4g ZWE7fWZ1bmN0aW9uIHooY2EsZGEsZWEsZmEpe0VTNShFUzUoJ09iamVjdCcsJ2tl eXMnLGZhbHNlLGNhKSwnZm9yRWFjaCcsdHJ1ZSxmdW5jdGlvbihnYSl7aWYoY2Fb Z2FdPT0ndGV4dCcmJiFlYVtnYV0pe2VhW2dhXT1kYS50ZXh0Q29udGVudHx8ZGEu aW5uZXJUZXh0fHwnJztkYS5zZXRBdHRyaWJ1dGUoZ2EsZWFbZ2FdKTt9ZmFbZ2Fd PXhbY2FbZ2FdXSh5KGVhLGdhKSk7fSk7fWZ1bmN0aW9uIGFhKGNhKXtyZXR1cm4g Y2F8fGNhPT09JzAnfHxjYT09PTA/cGFyc2VJbnQoY2EsMTApOnVuZGVmaW5lZDt9 dmFyIGJhPXIuZXh0ZW5kKHtjb25zdHJ1Y3RvcjpmdW5jdGlvbihjYSxkYSxlYSxm YSl7dGhpcy5wYXJlbnQoKTtlYT1lYS5yZXBsYWNlKC8tL2csJ18nKTt2YXIgZ2E9 eShmYSwncGx1Z2luX2lkJyk7dGhpcy5zdWJzY3JpYmUoJ3hkLnJlc2l6ZScsdyhn YSkpO3RoaXMuc3Vic2NyaWJlKCd4ZC5yZXNpemUuZmxvdycsdyhnYSkpO3RoaXMu c3Vic2NyaWJlKCd4ZC5yZXNpemUuZmxvdycsRVM1KGZ1bmN0aW9uKG5hKXt2KHRo aXMuX2NvbmZpZy5yb290LGFhKG5hLndpZHRoKSxhYShuYS5oZWlnaHQpKTt0aGlz LnVwZGF0ZUxpZnQoKTtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dElEKTt9LCdi aW5kJyx0cnVlLHRoaXMpKTt0aGlzLnN1YnNjcmliZSgneGQucmVzaXplJyxFUzUo ZnVuY3Rpb24obmEpe3YodGhpcy5fY29uZmlnLnJvb3QsYWEobmEud2lkdGgpLGFh KG5hLmhlaWdodCkpO3YodGhpcy5faWZyYW1lLGFhKG5hLndpZHRoKSxhYShuYS5o ZWlnaHQpKTt0aGlzLnVwZGF0ZUxpZnQoKTtjbGVhclRpbWVvdXQodGhpcy5fdGlt ZW91dElEKTt9LCdiaW5kJyx0cnVlLHRoaXMpKTt0aGlzLnN1YnNjcmliZSgneGQu cmVzaXplLmlmcmFtZScsRVM1KGZ1bmN0aW9uKG5hKXt2KHRoaXMuX2lmcmFtZSxh YShuYS53aWR0aCksYWEobmEuaGVpZ2h0KSk7dGhpcy51cGRhdGVMaWZ0KCk7Y2xl YXJUaW1lb3V0KHRoaXMuX3RpbWVvdXRJRCk7fSwnYmluZCcsdHJ1ZSx0aGlzKSk7 dmFyIGhhPXEuZ2V0U2VjdXJlKCl8fHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09 J2h0dHBzOicsaWE9cy5yZXNvbHZlKCd3d3cnLGhhKSsnL3BsdWdpbnMvJytlYSsn LnBocD8nLGphPXt9O3oodGhpcy5nZXRQYXJhbXMoKSxjYSxmYSxqYSk7eih1LGNh LGZhLGphKTtqYS5hcHBfaWQ9cS5nZXRDbGllbnRJRCgpO2phLmxvY2FsZT1xLmdl dExvY2FsZSgpO2phLnNkaz0nam9leSc7dmFyIGthPUVTNShmdW5jdGlvbihuYSl7 dGhpcy5pbmZvcm0oJ3hkLicrbmEudHlwZSxuYSk7fSwnYmluZCcsdHJ1ZSx0aGlz KTtqYS5jaGFubmVsPXQuaGFuZGxlcihrYSwncGFyZW50LnBhcmVudCcsdHJ1ZSk7 aS5hZGRDc3MoY2EsJ2ZiX2lmcmFtZV93aWRnZXQnKTt2YXIgbGE9aygpO3RoaXMu c3Vic2NyaWJlKCd4ZC52ZXJpZnknLGZ1bmN0aW9uKG5hKXt0LnNlbmRUb0ZhY2Vi b29rKGxhLHttZXRob2Q6J3hkL3ZlcmlmeScscGFyYW1zOkVTNSgnSlNPTicsJ3N0 cmluZ2lmeScsZmFsc2UsbmEudG9rZW4pfSk7fSk7dGhpcy5zdWJzY3JpYmUoJ3hk LnJlZnJlc2hMb2dpblN0YXR1cycsRVM1KGcuZ2V0TG9naW5TdGF0dXMsJ2JpbmQn LHRydWUsZyxFUzUodGhpcy5pbmZvcm0sJ2JpbmQnLHRydWUsdGhpcywnbG9naW4u c3RhdHVzJyksdHJ1ZSkpO3ZhciBtYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz cGFuJyk7bWEuc3R5bGUud2lkdGg9JzBweCc7bWEuc3R5bGUuaGVpZ2h0PScwcHgn O3RoaXMuX2VsZW1lbnQ9Y2E7dGhpcy5fbnM9ZGE7dGhpcy5fdGFnPWVhO3RoaXMu X3BhcmFtcz1qYTt0aGlzLl9jb25maWc9e3Jvb3Q6bWEsdXJsOmlhK28uZW5jb2Rl KGphKSxuYW1lOmxhLHdpZHRoOmphLndpZHRofHwxMDAwLGhlaWdodDpqYS5oZWln aHR8fDEwMDAsb25sb2FkOkVTNShmdW5jdGlvbigpe3RoaXMuaW5mb3JtKCdyZW5k ZXInKTt9LCdiaW5kJyx0cnVlLHRoaXMpfTt9LHByb2Nlc3M6ZnVuY3Rpb24oKXt0 aGlzLl9lbGVtZW50LmlubmVySFRNTD0nJzt0aGlzLl9lbGVtZW50LmFwcGVuZENo aWxkKHRoaXMuX2NvbmZpZy5yb290KTt0aGlzLl90aW1lb3V0SUQ9c2V0VGltZW91 dChFUzUoZnVuY3Rpb24oKXt0aGlzLl9pZnJhbWUmJnYodGhpcy5faWZyYW1lLDAs MCk7bC53YXJuKCclczolcyBmYWlsZWQgdG8gcmVzaXplIGluIDQ1cycsdGhpcy5f bnMsdGhpcy5fdGFnKTt9LCdiaW5kJyx0cnVlLHRoaXMpLDQ1KjEwMDApO2lmKCFu LmFkZCh0aGlzKSl0aGlzLl9pZnJhbWU9aCh0aGlzLl9jb25maWcpO30sdXBkYXRl TGlmdDpmdW5jdGlvbigpe3ZhciBjYT10aGlzLl9pZnJhbWUuc3R5bGUud2lkdGg9 PT10aGlzLl9jb25maWcucm9vdC5zdHlsZS53aWR0aCYmdGhpcy5faWZyYW1lLnN0 eWxlLmhlaWdodD09PXRoaXMuX2NvbmZpZy5yb290LnN0eWxlLmhlaWdodDtpW2Nh PydyZW1vdmVDc3MnOidhZGRDc3MnXSh0aGlzLl9pZnJhbWUsJ2ZiX2lmcmFtZV93 aWRnZXRfbGlmdCcpO319LG0pO2JhLmdldFZhbD15O2JhLndpdGhQYXJhbXM9ZnVu Y3Rpb24oY2Epe3JldHVybiBiYS5leHRlbmQoe2dldFBhcmFtczpmdW5jdGlvbigp e3JldHVybiBjYTt9fSk7fTtlLmV4cG9ydHM9YmE7fSk7Cl9fZCgiUGx1Z2luVGFn cyIsW10sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXthY3Rpdml0eTp7Ym9y ZGVyX2NvbG9yOidzdHJpbmcnLGZpbHRlcjonc3RyaW5nJyxhY3Rpb246J3N0cmlu ZycsbWF4X2FnZTonc3RyaW5nJyxsaW5rdGFyZ2V0OidzdHJpbmcnLGhlYWRlcjon Ym9vbCcscmVjb21tZW5kYXRpb25zOidib29sJyxzaXRlOidob3N0bmFtZSd9LGNy ZWF0ZV9ldmVudF9idXR0b246e30sZGVncmVlczp7aHJlZjondXJsJyxsaW1pdF9w cm9maWxlX3Zpc2liaWxpdHk6J2Jvb2wnfSxmYWNlcGlsZTp7aHJlZjonc3RyaW5n JyxhY3Rpb246J3N0cmluZycsc2l6ZTonc3RyaW5nJyxtYXhfcm93czonc3RyaW5n JyxzaG93X2NvdW50Oidib29sJ30sZnJpZW5kcGlsZTp7aHJlZjonc3RyaW5nJyxh Y3Rpb246J3N0cmluZycsc2l6ZTonc3RyaW5nJyxtYXhfcm93czonc3RyaW5nJ30s Zm9sbG93OntocmVmOid1cmwnLGxheW91dDonc3RyaW5nJyxzaG93X2ZhY2VzOidi b29sJ30sb3Blbl9ncmFwaDp7aHJlZjondXJsJyxsYXlvdXQ6J3N0cmluZycsc2hv d19mYWNlczonYm9vbCcsYWN0aW9uX3R5cGU6J3N0cmluZycsYWN0aW9uX3Byb3Bl cnRpZXM6J3N0cmluZyd9LG9wZW5fZ3JhcGhfcHJldmlldzp7aHJlZjondXJsJyxh Y3Rpb25fdHlwZTonc3RyaW5nJyxhY3Rpb25fcHJvcGVydGllczonc3RyaW5nJ30s cGFnZV9ldmVudHM6e2hyZWY6J3VybCd9LHByaXZhY3lfc2VsZWN0b3I6e30scmVj b21tZW5kYXRpb25zOntib3JkZXJfY29sb3I6J3N0cmluZycsZmlsdGVyOidzdHJp bmcnLGFjdGlvbjonc3RyaW5nJyxtYXhfYWdlOidzdHJpbmcnLGxpbmt0YXJnZXQ6 J3N0cmluZycsaGVhZGVyOidib29sJyxzaXRlOidob3N0bmFtZSd9LHNoYXJlX2J1 dHRvbjp7aHJlZjondXJsJyx0eXBlOidzdHJpbmcnfSxzaGFyZWRfYWN0aXZpdHk6 e2hlYWRlcjonYm9vbCd9LHNlbmRfdG9fbW9iaWxlOnttYXhfcm93czonc3RyaW5n JyxzaG93X2ZhY2VzOidib29sJyxzaXplOidzdHJpbmcnfSxzdWJzY3JpYmU6e2hy ZWY6J3VybCcsbGF5b3V0OidzdHJpbmcnLHNob3dfZmFjZXM6J2Jvb2wnfSx3YW50 OntocmVmOid1cmwnLGxheW91dDonc3RyaW5nJyxzaG93X2ZhY2VzOidib29sJ319 O2UuZXhwb3J0cz1nO30pOwpfX2QoInNkay5BcmJpdGVyIixbXSxmdW5jdGlvbihh LGIsYyxkLGUsZil7dmFyIGc9e0JFSEFWSU9SX0VWRU5UOidlJyxCRUhBVklPUl9Q RVJTSVNURU5UOidwJyxCRUhBVklPUl9TVEFURToncyd9O2UuZXhwb3J0cz1nO30p OwpfX2QoInNkay5YRkJNTC5FbGVtZW50IixbInNkay5ET00iLCJUeXBlIiwiT2Jz ZXJ2YWJsZU1peGluIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ3Nk ay5ET00nKSxoPWIoJ1R5cGUnKSxpPWIoJ09ic2VydmFibGVNaXhpbicpLGo9aC5l eHRlbmQoe2NvbnN0cnVjdG9yOmZ1bmN0aW9uKGspe3RoaXMucGFyZW50KCk7dGhp cy5kb209azt9LGZpcmU6ZnVuY3Rpb24oKXt0aGlzLmluZm9ybS5hcHBseSh0aGlz LGFyZ3VtZW50cyk7fSxnZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oayxsLG0pe3ZhciBu PWcuZ2V0QXR0cih0aGlzLmRvbSxrKTtyZXR1cm4gbj9tP20obik6bjpsO30sX2dl dEJvb2xBdHRyaWJ1dGU6ZnVuY3Rpb24oayxsKXt2YXIgbT1nLmdldEJvb2xBdHRy KHRoaXMuZG9tLGspO3JldHVybiBtPT09bnVsbD9sOm07fSxfZ2V0UHhBdHRyaWJ1 dGU6ZnVuY3Rpb24oayxsKXtyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoayxsLGZ1 bmN0aW9uKG0pe3ZhciBuPXBhcnNlSW50KG0ucmVwbGFjZSgncHgnLCcnKSwxMCk7 aWYoaXNOYU4obikpe3JldHVybiBsO31lbHNlIHJldHVybiBuO30pO30sX2dldEF0 dHJpYnV0ZUZyb21MaXN0OmZ1bmN0aW9uKGssbCxtKXtyZXR1cm4gdGhpcy5nZXRB dHRyaWJ1dGUoayxsLGZ1bmN0aW9uKG4pe249bi50b0xvd2VyQ2FzZSgpO3JldHVy biAoRVM1KG0sJ2luZGV4T2YnLHRydWUsbik+LTEpP246bDt9KTt9LGlzVmFsaWQ6 ZnVuY3Rpb24oKXtmb3IodmFyIGs9dGhpcy5kb207aztrPWsucGFyZW50Tm9kZSlp ZihrPT1kb2N1bWVudC5ib2R5KXJldHVybiB0cnVlO30sY2xlYXI6ZnVuY3Rpb24o KXtnLmh0bWwodGhpcy5kb20sJycpO319LGkpO2UuZXhwb3J0cz1qO30pOwpfX2Qo InNkay5YRkJNTC5JZnJhbWVXaWRnZXQiLFsic2RrLkFyYml0ZXIiLCJzZGsuQXV0 aCIsInNkay5Db250ZW50IiwiY29weVByb3BlcnRpZXMiLCJzZGsuRE9NIiwic2Rr LkV2ZW50Iiwic2RrLlhGQk1MLkVsZW1lbnQiLCJndWlkIiwiaW5zZXJ0SWZyYW1l IiwiUXVlcnlTdHJpbmciLCJzZGsuUnVudGltZSIsInNkay51aSIsIlVybE1hcCIs InNkay5YRCJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdzZGsuQXJi aXRlcicpLGg9Yignc2RrLkF1dGgnKSxpPWIoJ3Nkay5Db250ZW50Jyksaj1iKCdj b3B5UHJvcGVydGllcycpLGs9Yignc2RrLkRPTScpLGw9Yignc2RrLkV2ZW50Jyks bT1iKCdzZGsuWEZCTUwuRWxlbWVudCcpLG49YignZ3VpZCcpLG89YignaW5zZXJ0 SWZyYW1lJykscD1iKCdRdWVyeVN0cmluZycpLHE9Yignc2RrLlJ1bnRpbWUnKSxy PWIoJ3Nkay51aScpLHM9YignVXJsTWFwJyksdD1iKCdzZGsuWEQnKSx1PW0uZXh0 ZW5kKHtfaWZyYW1lTmFtZTpudWxsLF9zaG93TG9hZGVyOnRydWUsX3JlZnJlc2hP bkF1dGhDaGFuZ2U6ZmFsc2UsX2FsbG93UmVQcm9jZXNzOmZhbHNlLF9mZXRjaFBy ZUNhY2hlZExvYWRlcjpmYWxzZSxfdmlzaWJsZUFmdGVyOidsb2FkJyxfd2lkZ2V0 UGlwZUVuYWJsZWQ6ZmFsc2UsX2JvcmRlclJlc2V0OmZhbHNlLF9yZXBvc2l0aW9u ZWQ6ZmFsc2UsZ2V0VXJsQml0czpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcign SW5oZXJpdGluZyBjbGFzcyBuZWVkcyB0byBpbXBsZW1lbnQgZ2V0VXJsQml0cygp LicpO30sc2V0dXBBbmRWYWxpZGF0ZTpmdW5jdGlvbigpe3JldHVybiB0cnVlO30s b25lVGltZVNldHVwOmZ1bmN0aW9uKCl7fSxnZXRTaXplOmZ1bmN0aW9uKCl7fSxn ZXRJZnJhbWVOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lmcmFtZU5hbWU7 fSxnZXRJZnJhbWVUaXRsZTpmdW5jdGlvbigpe30sZ2V0Q2hhbm5lbFVybDpmdW5j dGlvbigpe2lmKCF0aGlzLl9jaGFubmVsVXJsKXt2YXIgYWE9dGhpczt0aGlzLl9j aGFubmVsVXJsPXQuaGFuZGxlcihmdW5jdGlvbihiYSl7YWEuZmlyZSgneGQuJyti YS50eXBlLGJhKTt9LCdwYXJlbnQucGFyZW50Jyx0cnVlKTt9cmV0dXJuIHRoaXMu X2NoYW5uZWxVcmw7fSxnZXRJZnJhbWVOb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuZG9tLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXTt9LGFyYml0 ZXJJbmZvcm06ZnVuY3Rpb24oZXZlbnQsYWEsYmEpe3Quc2VuZFRvRmFjZWJvb2so dGhpcy5nZXRJZnJhbWVOYW1lKCkse21ldGhvZDpldmVudCxwYXJhbXM6RVM1KCdK U09OJywnc3RyaW5naWZ5JyxmYWxzZSxhYXx8e30pLGJlaGF2aW9yOmJhfHxnLkJF SEFWSU9SX1BFUlNJU1RFTlR9KTt9LF9hcmJpdGVySW5mb3JtOmZ1bmN0aW9uKGV2 ZW50LGFhLGJhKXt2YXIgY2E9J3BhcmVudC5mcmFtZXNbIicrdGhpcy5nZXRJZnJh bWVOb2RlKCkubmFtZSsnIl0nO3QuaW5mb3JtKGV2ZW50LGFhLGNhLGJhKTt9LGdl dERlZmF1bHRXZWJEb21haW46ZnVuY3Rpb24oKXtyZXR1cm4gcy5yZXNvbHZlKCd3 d3cnKTt9LHByb2Nlc3M6ZnVuY3Rpb24oYWEpe2lmKHRoaXMuX2RvbmUpe2lmKCF0 aGlzLl9hbGxvd1JlUHJvY2VzcyYmIWFhKXJldHVybjt0aGlzLmNsZWFyKCk7fWVs c2UgdGhpcy5fb25lVGltZVNldHVwKCk7dGhpcy5fZG9uZT10cnVlO3RoaXMuX2lm cmFtZU5hbWU9dGhpcy5nZXRJZnJhbWVOYW1lKCl8fHRoaXMuX2lmcmFtZU5hbWV8 fG4oKTtpZighdGhpcy5zZXR1cEFuZFZhbGlkYXRlKCkpe3RoaXMuZmlyZSgncmVu ZGVyJyk7cmV0dXJuO31pZih0aGlzLl9zaG93TG9hZGVyKXRoaXMuX2FkZExvYWRl cigpO2suYWRkQ3NzKHRoaXMuZG9tLCdmYl9pZnJhbWVfd2lkZ2V0Jyk7aWYodGhp cy5fdmlzaWJsZUFmdGVyIT0naW1tZWRpYXRlJyl7ay5hZGRDc3ModGhpcy5kb20s J2ZiX2hpZGVfaWZyYW1lcycpO31lbHNlIHRoaXMuc3Vic2NyaWJlKCdpZnJhbWUu b25sb2FkJyxFUzUodGhpcy5maXJlLCdiaW5kJyx0cnVlLHRoaXMsJ3JlbmRlcicp KTt2YXIgYmE9dGhpcy5nZXRTaXplKCl8fHt9LGNhPXRoaXMuZ2V0RnVsbHlRdWFs aWZpZWRVUkwoKTtpZihiYS53aWR0aD09JzEwMCUnKWsuYWRkQ3NzKHRoaXMuZG9t LCdmYl9pZnJhbWVfd2lkZ2V0X2ZsdWlkJyk7dGhpcy5jbGVhcigpO28oe3VybDpj YSxyb290OnRoaXMuZG9tLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoJ3NwYW4nKSksbmFtZTp0aGlzLl9pZnJhbWVOYW1lLHRpdGxlOnRoaXMuZ2V0 SWZyYW1lVGl0bGUoKSxjbGFzc05hbWU6cS5nZXRSdGwoKT8nZmJfcnRsJzonZmJf bHRyJyxoZWlnaHQ6YmEuaGVpZ2h0LHdpZHRoOmJhLndpZHRoLG9ubG9hZDpFUzUo dGhpcy5maXJlLCdiaW5kJyx0cnVlLHRoaXMsJ2lmcmFtZS5vbmxvYWQnKX0pO3Ro aXMuX3Jlc2l6ZUZsb3coYmEpO3RoaXMubG9hZGVkPWZhbHNlO3RoaXMuc3Vic2Ny aWJlKCdpZnJhbWUub25sb2FkJyxFUzUoZnVuY3Rpb24oKXt0aGlzLmxvYWRlZD10 cnVlO30sJ2JpbmQnLHRydWUsdGhpcykpO30sZ2VuZXJhdGVXaWRnZXRQaXBlSWZy YW1lTmFtZTpmdW5jdGlvbigpe3YrKztyZXR1cm4gJ2ZiX2lmcmFtZV8nK3Y7fSxn ZXRGdWxseVF1YWxpZmllZFVSTDpmdW5jdGlvbigpe3ZhciBhYT10aGlzLl9nZXRV UkwoKTthYSs9Jz8nK3AuZW5jb2RlKHRoaXMuX2dldFFTKCkpO2lmKGFhLmxlbmd0 aD4yMDAwKXthYT0nYWJvdXQ6YmxhbmsnO3ZhciBiYT1FUzUoZnVuY3Rpb24oKXt0 aGlzLl9wb3N0UmVxdWVzdCgpO3RoaXMudW5zdWJzY3JpYmUoJ2lmcmFtZS5vbmxv YWQnLGJhKTt9LCdiaW5kJyx0cnVlLHRoaXMpO3RoaXMuc3Vic2NyaWJlKCdpZnJh bWUub25sb2FkJyxiYSk7fXJldHVybiBhYTt9LF9nZXRXaWRnZXRQaXBlU2hlbGw6 ZnVuY3Rpb24oKXtyZXR1cm4gcy5yZXNvbHZlKCd3d3cnKSsnL2NvbW1vbi93aWRn ZXRfcGlwZV9zaGVsbC5waHAnO30sX29uZVRpbWVTZXR1cDpmdW5jdGlvbigpe3Ro aXMuc3Vic2NyaWJlKCd4ZC5yZXNpemUnLEVTNSh0aGlzLl9oYW5kbGVSZXNpemVN c2csJ2JpbmQnLHRydWUsdGhpcykpO3RoaXMuc3Vic2NyaWJlKCd4ZC5yZXNpemUn LEVTNSh0aGlzLl9idWJibGVSZXNpemVFdmVudCwnYmluZCcsdHJ1ZSx0aGlzKSk7 dGhpcy5zdWJzY3JpYmUoJ3hkLnJlc2l6ZS5pZnJhbWUnLEVTNSh0aGlzLl9yZXNp emVJZnJhbWUsJ2JpbmQnLHRydWUsdGhpcykpO3RoaXMuc3Vic2NyaWJlKCd4ZC5y ZXNpemUuZmxvdycsRVM1KHRoaXMuX3Jlc2l6ZUZsb3csJ2JpbmQnLHRydWUsdGhp cykpO3RoaXMuc3Vic2NyaWJlKCd4ZC5yZXNpemUuZmxvdycsRVM1KHRoaXMuX2J1 YmJsZVJlc2l6ZUV2ZW50LCdiaW5kJyx0cnVlLHRoaXMpKTt0aGlzLnN1YnNjcmli ZSgneGQucmVmcmVzaExvZ2luU3RhdHVzJyxmdW5jdGlvbigpe2guZ2V0TG9naW5T dGF0dXMoZnVuY3Rpb24oKXt9LHRydWUpO30pO3RoaXMuc3Vic2NyaWJlKCd4ZC5s b2dvdXQnLGZ1bmN0aW9uKCl7cih7bWV0aG9kOidhdXRoLmxvZ291dCcsZGlzcGxh eTonaGlkZGVuJ30sZnVuY3Rpb24oKXt9KTt9KTtpZih0aGlzLl9yZWZyZXNoT25B dXRoQ2hhbmdlKXRoaXMuX3NldHVwQXV0aFJlZnJlc2goKTtpZih0aGlzLl92aXNp YmxlQWZ0ZXI9PSdsb2FkJyl0aGlzLnN1YnNjcmliZSgnaWZyYW1lLm9ubG9hZCcs RVM1KHRoaXMuX21ha2VWaXNpYmxlLCdiaW5kJyx0cnVlLHRoaXMpKTt0aGlzLnN1 YnNjcmliZSgneGQudmVyaWZ5JyxFUzUoZnVuY3Rpb24oYWEpe3RoaXMuYXJiaXRl ckluZm9ybSgneGQvdmVyaWZ5JyxhYS50b2tlbik7fSwnYmluZCcsdHJ1ZSx0aGlz KSk7dGhpcy5vbmVUaW1lU2V0dXAoKTt9LF9tYWtlVmlzaWJsZTpmdW5jdGlvbigp e3RoaXMuX3JlbW92ZUxvYWRlcigpO2sucmVtb3ZlQ3NzKHRoaXMuZG9tLCdmYl9o aWRlX2lmcmFtZXMnKTt0aGlzLmZpcmUoJ3JlbmRlcicpO30sX3NldHVwQXV0aFJl ZnJlc2g6ZnVuY3Rpb24oKXtoLmdldExvZ2luU3RhdHVzKEVTNShmdW5jdGlvbihh YSl7dmFyIGJhPWFhLnN0YXR1cztsLnN1YnNjcmliZSgnYXV0aC5zdGF0dXNDaGFu Z2UnLEVTNShmdW5jdGlvbihjYSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybjtp ZihiYT09J3Vua25vd24nfHxjYS5zdGF0dXM9PSd1bmtub3duJyl0aGlzLnByb2Nl c3ModHJ1ZSk7YmE9Y2Euc3RhdHVzO30sJ2JpbmQnLHRydWUsdGhpcykpO30sJ2Jp bmQnLHRydWUsdGhpcykpO30sX2hhbmRsZVJlc2l6ZU1zZzpmdW5jdGlvbihhYSl7 aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybjt0aGlzLl9yZXNpemVJZnJhbWUoYWEp O3RoaXMuX3Jlc2l6ZUZsb3coYWEpO2lmKCF0aGlzLl9ib3JkZXJSZXNldCl7dGhp cy5nZXRJZnJhbWVOb2RlKCkuc3R5bGUuYm9yZGVyPSdub25lJzt0aGlzLl9ib3Jk ZXJSZXNldD10cnVlO310aGlzLl9tYWtlVmlzaWJsZSgpO30sX2J1YmJsZVJlc2l6 ZUV2ZW50OmZ1bmN0aW9uKGFhKXt2YXIgYmE9e2hlaWdodDphYS5oZWlnaHQsd2lk dGg6YWEud2lkdGgscGx1Z2luSUQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ3BsdWdpbi1p ZCcpfTtsLmZpcmUoJ3hmYm1sLnJlc2l6ZScsYmEpO30sX3Jlc2l6ZUlmcmFtZTpm dW5jdGlvbihhYSl7dmFyIGJhPXRoaXMuZ2V0SWZyYW1lTm9kZSgpO2lmKGFhLnJl cG9zaXRpb249PT0idHJ1ZSIpdGhpcy5fcmVwb3NpdGlvbklmcmFtZShhYSk7YWEu aGVpZ2h0JiYoYmEuc3R5bGUuaGVpZ2h0PWFhLmhlaWdodCsncHgnKTthYS53aWR0 aCYmKGJhLnN0eWxlLndpZHRoPWFhLndpZHRoKydweCcpO3RoaXMuX3VwZGF0ZUlm cmFtZVpJbmRleCgpO30sX3Jlc2l6ZUZsb3c6ZnVuY3Rpb24oYWEpe3ZhciBiYT10 aGlzLmRvbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpWzBdO2FhLmhlaWdo dCYmKGJhLnN0eWxlLmhlaWdodD1hYS5oZWlnaHQrJ3B4Jyk7YWEud2lkdGgmJihi YS5zdHlsZS53aWR0aD1hYS53aWR0aCsncHgnKTt0aGlzLl91cGRhdGVJZnJhbWVa SW5kZXgoKTt9LF91cGRhdGVJZnJhbWVaSW5kZXg6ZnVuY3Rpb24oKXt2YXIgYWE9 dGhpcy5kb20uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXSxiYT10aGlz LmdldElmcmFtZU5vZGUoKSxjYT1iYS5zdHlsZS5oZWlnaHQ9PT1hYS5zdHlsZS5o ZWlnaHQmJmJhLnN0eWxlLndpZHRoPT09YWEuc3R5bGUud2lkdGgsZGE9Y2E/J3Jl bW92ZUNzcyc6J2FkZENzcyc7a1tkYV0oYmEsJ2ZiX2lmcmFtZV93aWRnZXRfbGlm dCcpO30sX3JlcG9zaXRpb25JZnJhbWU6ZnVuY3Rpb24oYWEpe3ZhciBiYT10aGlz LmdldElmcmFtZU5vZGUoKSxjYT1wYXJzZUludChrLmdldFN0eWxlKGJhLCd3aWR0 aCcpLDEwKSxkYT1rLmdldFBvc2l0aW9uKGJhKS54LGVhPWsuZ2V0Vmlld3BvcnRJ bmZvKCkud2lkdGgsZmE9cGFyc2VJbnQoYWEud2lkdGgsMTApO2lmKGRhK2ZhPmVh JiZkYT5mYSl7YmEuc3R5bGUubGVmdD1jYS1mYSsncHgnO3RoaXMuYXJiaXRlcklu Zm9ybSgneGQvcmVwb3NpdGlvbicse3R5cGU6J2hvcml6b250YWwnfSk7dGhpcy5f cmVwb3NpdGlvbmVkPXRydWU7fWVsc2UgaWYodGhpcy5fcmVwb3NpdGlvbmVkKXti YS5zdHlsZS5sZWZ0PScwcHgnO3RoaXMuYXJiaXRlckluZm9ybSgneGQvcmVwb3Np dGlvbicse3R5cGU6J3Jlc3RvcmUnfSk7dGhpcy5fcmVwb3NpdGlvbmVkPWZhbHNl O319LF9hZGRMb2FkZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5fbG9hZGVyRGl2KXtr LmFkZENzcyh0aGlzLmRvbSwnZmJfaWZyYW1lX3dpZGdldF9sb2FkZXInKTt0aGlz Ll9sb2FkZXJEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7dGhpcy5f bG9hZGVyRGl2LmNsYXNzTmFtZT0nRkJfTG9hZGVyJzt0aGlzLmRvbS5hcHBlbmRD aGlsZCh0aGlzLl9sb2FkZXJEaXYpO319LF9yZW1vdmVMb2FkZXI6ZnVuY3Rpb24o KXtpZih0aGlzLl9sb2FkZXJEaXYpe2sucmVtb3ZlQ3NzKHRoaXMuZG9tLCdmYl9p ZnJhbWVfd2lkZ2V0X2xvYWRlcicpO2lmKHRoaXMuX2xvYWRlckRpdi5wYXJlbnRO b2RlKXRoaXMuX2xvYWRlckRpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMu X2xvYWRlckRpdik7dGhpcy5fbG9hZGVyRGl2PW51bGw7fX0sX2dldFFTOmZ1bmN0 aW9uKCl7cmV0dXJuIGooe2FwaV9rZXk6cS5nZXRDbGllbnRJRCgpLGxvY2FsZTpx LmdldExvY2FsZSgpLHNkazonam9leScscmVmOnRoaXMuZ2V0QXR0cmlidXRlKCdy ZWYnKX0sdGhpcy5nZXRVcmxCaXRzKCkucGFyYW1zKTt9LF9nZXRVUkw6ZnVuY3Rp b24oKXt2YXIgYWE9dGhpcy5nZXREZWZhdWx0V2ViRG9tYWluKCksYmE9Jyc7cmV0 dXJuIGFhKycvcGx1Z2lucy8nK2JhK3RoaXMuZ2V0VXJsQml0cygpLm5hbWUrJy5w aHAnO30sX3Bvc3RSZXF1ZXN0OmZ1bmN0aW9uKCl7aS5zdWJtaXRUb1RhcmdldCh7 dXJsOnRoaXMuX2dldFVSTCgpLHRhcmdldDp0aGlzLmdldElmcmFtZU5vZGUoKS5u YW1lLHBhcmFtczp0aGlzLl9nZXRRUygpfSk7fX0pLHY9MCx3PW51bGwseD17fTtm dW5jdGlvbiB5KCl7dmFyIGFhPXt9O2Zvcih2YXIgYmEgaW4geCl7dmFyIGNhPXhb YmFdO2FhW2JhXT17d2lkZ2V0OmNhLmdldFVybEJpdHMoKS5uYW1lLHBhcmFtczpj YS5fZ2V0UVMoKX07fXJldHVybiBhYTt9ZnVuY3Rpb24geigpe2lmKCF3KXJldHVy bjt2YXIgYWE9eSgpLGJhPXt3aWRnZXRfcGlwZTpFUzUoJ0pTT04nLCdzdHJpbmdp ZnknLGZhbHNlLGFhKSxocmVmOndpbmRvdy5sb2NhdGlvbixzaXRlOmxvY2F0aW9u Lmhvc3RuYW1lLGNoYW5uZWw6dy5nZXRDaGFubmVsVXJsKCksYXBpX2tleTpxLmdl dENsaWVudElEKCksbG9jYWxlOnEuZ2V0TG9jYWxlKCksc2RrOidqb2V5J30sY2E9 bigpLGRhPXcuZG9tLGVhPWRhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ3NwYW4nKSk7byh7dXJsOidhYm91dDpibGFuaycscm9vdDplYSxuYW1l OmNhLGNsYXNzTmFtZTonZmJfaGlkZGVuIGZiX2ludmlzaWJsZScsb25sb2FkOmZ1 bmN0aW9uKCl7aS5zdWJtaXRUb1RhcmdldCh7dXJsOnMucmVzb2x2ZSgnd3d3Jykr J3BsdWdpbnMvcGlwZS8nLHRhcmdldDpjYSxwYXJhbXM6YmF9LDEpO319KTt9ZS5l eHBvcnRzPXU7fSk7Cl9fZCgic2RrLlhGQk1MLkNvbW1lbnRzIixbInNkay5FdmVu dCIsInNkay5YRkJNTC5JZnJhbWVXaWRnZXQiLCJRdWVyeVN0cmluZyIsInNkay5S dW50aW1lIiwiVXJsTWFwIiwiVXNlckFnZW50IiwiU0RLQ29uZmlnIl0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ3Nkay5FdmVudCcpLGg9Yignc2RrLlhG Qk1MLklmcmFtZVdpZGdldCcpLGk9YignUXVlcnlTdHJpbmcnKSxqPWIoJ3Nkay5S dW50aW1lJyksaz1jKCdTREtDb25maWcnKSxsPWIoJ1VybE1hcCcpLG09YignVXNl ckFnZW50Jyksbj1oLmV4dGVuZCh7X3Zpc2libGVBZnRlcjonaW1tZWRpYXRlJyxf cmVmcmVzaE9uQXV0aENoYW5nZTp0cnVlLHNldHVwQW5kVmFsaWRhdGU6ZnVuY3Rp b24oKXt2YXIgbz17Y2hhbm5lbF91cmw6dGhpcy5nZXRDaGFubmVsVXJsKCksY29s b3JzY2hlbWU6dGhpcy5nZXRBdHRyaWJ1dGUoJ2NvbG9yc2NoZW1lJyksbnVtcG9z dHM6dGhpcy5nZXRBdHRyaWJ1dGUoJ251bS1wb3N0cycsMTApLHdpZHRoOnRoaXMu X2dldFB4QXR0cmlidXRlKCd3aWR0aCcsNTUwKSxocmVmOnRoaXMuZ2V0QXR0cmli dXRlKCdocmVmJykscGVybWFsaW5rOnRoaXMuZ2V0QXR0cmlidXRlKCdwZXJtYWxp bmsnKSxwdWJsaXNoX2ZlZWQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ3B1Ymxpc2hfZmVl ZCcpLG9yZGVyX2J5OnRoaXMuZ2V0QXR0cmlidXRlKCdvcmRlcl9ieScpLG1vYmls ZTp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdtb2JpbGUnKX07aWYoay5pbml0U2l0 ZXZhcnMuZW5hYmxlTW9iaWxlQ29tbWVudHMmJm0ubW9iaWxlKCkmJm8ubW9iaWxl IT09ZmFsc2Upe28ubW9iaWxlPXRydWU7ZGVsZXRlIG8ud2lkdGg7fWlmKCFvLmhy ZWYpe28ubWlncmF0ZWQ9dGhpcy5nZXRBdHRyaWJ1dGUoJ21pZ3JhdGVkJyk7by54 aWQ9dGhpcy5nZXRBdHRyaWJ1dGUoJ3hpZCcpO28udGl0bGU9dGhpcy5nZXRBdHRy aWJ1dGUoJ3RpdGxlJyxkb2N1bWVudC50aXRsZSk7by51cmw9dGhpcy5nZXRBdHRy aWJ1dGUoJ3VybCcsZG9jdW1lbnQuVVJMKTtvLnF1aWV0PXRoaXMuZ2V0QXR0cmli dXRlKCdxdWlldCcpO28ucmV2ZXJzZT10aGlzLmdldEF0dHJpYnV0ZSgncmV2ZXJz ZScpO28uc2ltcGxlPXRoaXMuZ2V0QXR0cmlidXRlKCdzaW1wbGUnKTtvLmNzcz10 aGlzLmdldEF0dHJpYnV0ZSgnY3NzJyk7by5ub3RpZnk9dGhpcy5nZXRBdHRyaWJ1 dGUoJ25vdGlmeScpO2lmKCFvLnhpZCl7dmFyIHA9RVM1KGRvY3VtZW50LlVSTCwn aW5kZXhPZicsdHJ1ZSwnIycpO2lmKHA+MCl7by54aWQ9ZW5jb2RlVVJJQ29tcG9u ZW50KGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCxwKSk7fWVsc2Ugby54aWQ9ZW5j b2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LlVSTCk7fWlmKG8ubWlncmF0ZWQpby5o cmVmPWwucmVzb2x2ZSgnd3d3JykrJy9wbHVnaW5zL2NvbW1lbnRzX3YxLnBocD8n KydhcHBfaWQ9JytqLmdldENsaWVudElEKCkrJyZ4aWQ9JytlbmNvZGVVUklDb21w b25lbnQoby54aWQpKycmdXJsPScrZW5jb2RlVVJJQ29tcG9uZW50KG8udXJsKTt9 ZWxzZXt2YXIgcT10aGlzLmdldEF0dHJpYnV0ZSgnZmJfY29tbWVudF9pZCcpO2lm KCFxKXtxPWkuZGVjb2RlKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoRVM1KGRvY3Vt ZW50LlVSTCwnaW5kZXhPZicsdHJ1ZSwnPycpKzEpKS5mYl9jb21tZW50X2lkO2lm KHEmJkVTNShxLCdpbmRleE9mJyx0cnVlLCcjJyk+MClxPXEuc3Vic3RyaW5nKDAs RVM1KHEsJ2luZGV4T2YnLHRydWUsJyMnKSk7fWlmKHEpe28uZmJfY29tbWVudF9p ZD1xO3RoaXMuc3Vic2NyaWJlKCdyZW5kZXInLEVTNShmdW5jdGlvbigpe2lmKCF3 aW5kb3cubG9jYXRpb24uaGFzaCl3aW5kb3cubG9jYXRpb24uaGFzaD10aGlzLmdl dElmcmFtZU5vZGUoKS5pZDt9LCdiaW5kJyx0cnVlLHRoaXMpKTt9fXRoaXMuX2F0 dHI9bztyZXR1cm4gdHJ1ZTt9LG9uZVRpbWVTZXR1cDpmdW5jdGlvbigpe3RoaXMu c3Vic2NyaWJlKCd4ZC5hZGRDb21tZW50JyxFUzUodGhpcy5faGFuZGxlQ29tbWVu dE1zZywnYmluZCcsdHJ1ZSx0aGlzKSk7dGhpcy5zdWJzY3JpYmUoJ3hkLmNvbW1l bnRDcmVhdGVkJyxFUzUodGhpcy5faGFuZGxlQ29tbWVudENyZWF0ZWRNc2csJ2Jp bmQnLHRydWUsdGhpcykpO3RoaXMuc3Vic2NyaWJlKCd4ZC5jb21tZW50UmVtb3Zl ZCcsRVM1KHRoaXMuX2hhbmRsZUNvbW1lbnRSZW1vdmVkTXNnLCdiaW5kJyx0cnVl LHRoaXMpKTt9LGdldFNpemU6ZnVuY3Rpb24oKXtpZih0aGlzLl9hdHRyLm1vYmls ZSlyZXR1cm4ge3dpZHRoOicxMDAlJyxoZWlnaHQ6MTYwfTtyZXR1cm4ge3dpZHRo OnRoaXMuX2F0dHIud2lkdGgsaGVpZ2h0OjE2MH07fSxnZXRVcmxCaXRzOmZ1bmN0 aW9uKCl7cmV0dXJuIHtuYW1lOidjb21tZW50cycscGFyYW1zOnRoaXMuX2F0dHJ9 O30sZ2V0RGVmYXVsdFdlYkRvbWFpbjpmdW5jdGlvbigpe3JldHVybiBsLnJlc29s dmUodGhpcy5fYXR0ci5tb2JpbGU/J20nOid3d3cnLHRydWUpO30sX2hhbmRsZUNv bW1lbnRNc2c6ZnVuY3Rpb24obyl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybjtn LmZpcmUoJ2NvbW1lbnRzLmFkZCcse3Bvc3Q6by5wb3N0LHVzZXI6by51c2VyLHdp ZGdldDp0aGlzfSk7fSxfaGFuZGxlQ29tbWVudENyZWF0ZWRNc2c6ZnVuY3Rpb24o byl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybjt2YXIgcD17aHJlZjpvLmhyZWYs Y29tbWVudElEOm8uY29tbWVudElELHBhcmVudENvbW1lbnRJRDpvLnBhcmVudENv bW1lbnRJRH07Zy5maXJlKCdjb21tZW50LmNyZWF0ZScscCk7fSxfaGFuZGxlQ29t bWVudFJlbW92ZWRNc2c6ZnVuY3Rpb24obyl7aWYoIXRoaXMuaXNWYWxpZCgpKXJl dHVybjt2YXIgcD17aHJlZjpvLmhyZWYsY29tbWVudElEOm8uY29tbWVudElEfTtn LmZpcmUoJ2NvbW1lbnQucmVtb3ZlJyxwKTt9fSk7ZS5leHBvcnRzPW47fSk7Cl9f ZCgic2RrLlhGQk1MLkNvbW1lbnRzQ291bnQiLFsic2RrLkRhdGEiLCJzZGsuRE9N Iiwic2RrLlhGQk1MLkVsZW1lbnQiLCJzcHJpbnRmIl0sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpe3ZhciBnPWIoJ3Nkay5EYXRhJyksaD1iKCdzZGsuRE9NJyksaT1iKCdz ZGsuWEZCTUwuRWxlbWVudCcpLGo9Yignc3ByaW50ZicpLGs9aS5leHRlbmQoe3By b2Nlc3M6ZnVuY3Rpb24oKXtoLmFkZENzcyh0aGlzLmRvbSwnZmJfY29tbWVudHNf Y291bnRfemVybycpO3ZhciBsPXRoaXMuZ2V0QXR0cmlidXRlKCdocmVmJyx3aW5k b3cubG9jYXRpb24uaHJlZik7Zy5fc2VsZWN0QnlJbmRleChbJ2NvbW1lbnRzYm94 X2NvdW50J10sJ2xpbmtfc3RhdCcsJ3VybCcsbCkud2FpdChFUzUoZnVuY3Rpb24o bSl7dmFyIG49bVswXS5jb21tZW50c2JveF9jb3VudDtoLmh0bWwodGhpcy5kb20s aignPHNwYW4gY2xhc3M9ImZiX2NvbW1lbnRzX2NvdW50Ij4lczwvc3Bhbj4nLG4p KTtpZihuPjApaC5yZW1vdmVDc3ModGhpcy5kb20sJ2ZiX2NvbW1lbnRzX2NvdW50 X3plcm8nKTt0aGlzLmZpcmUoJ3JlbmRlcicpO30sJ2JpbmQnLHRydWUsdGhpcykp O319KTtlLmV4cG9ydHM9azt9KTsKX19kKCJzZGsuQW5pbSIsWyJzZGsuRE9NIl0s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ3Nkay5ET00nKSxoPXthdGU6 ZnVuY3Rpb24oaSxqLGssbCl7az0haXNOYU4ocGFyc2VGbG9hdChrKSkmJms+PTA/ azo3NTA7dmFyIG09NDAsbj17fSxvPXt9LHA9bnVsbCxxPXNldEludGVydmFsKEVT NShmdW5jdGlvbigpe2lmKCFwKXA9RVM1KCdEYXRlJywnbm93JyxmYWxzZSk7dmFy IHI9MTtpZihrIT0wKXI9TWF0aC5taW4oKEVTNSgnRGF0ZScsJ25vdycsZmFsc2Up LXApL2ssMSk7Zm9yKHZhciBzIGluIGopaWYoai5oYXNPd25Qcm9wZXJ0eShzKSl7 dmFyIHQ9altzXTtpZighbltzXSl7dmFyIHU9Zy5nZXRTdHlsZShpLHMpO2lmKHU9 PT1mYWxzZSlyZXR1cm47bltzXT10aGlzLl9wYXJzZUNTUyh1KycnKTt9aWYoIW9b c10pb1tzXT10aGlzLl9wYXJzZUNTUyh0LnRvU3RyaW5nKCkpO3ZhciB2PScnO0VT NShuW3NdLCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKHcseCl7aWYoaXNOYU4ob1tz XVt4XS5udW1QYXJ0KSYmb1tzXVt4XS50ZXh0UGFydD09Jz8nKXt2PXcubnVtUGFy dCt3LnRleHRQYXJ0O31lbHNlIGlmKGlzTmFOKHcubnVtUGFydCkpe3Y9dy50ZXh0 UGFydDt9ZWxzZSB2Kz0ody5udW1QYXJ0K01hdGguY2VpbCgob1tzXVt4XS5udW1Q YXJ0LXcubnVtUGFydCkqTWF0aC5zaW4oTWF0aC5QSS8yKnIpKSkrb1tzXVt4XS50 ZXh0UGFydCsnICc7fSk7Zy5zZXRTdHlsZShpLHMsdik7fWlmKHI9PTEpe2NsZWFy SW50ZXJ2YWwocSk7aWYobClsKGkpO319LCdiaW5kJyx0cnVlLHRoaXMpLG0pO30s X3BhcnNlQ1NTOmZ1bmN0aW9uKGkpe3ZhciBqPVtdO0VTNShpLnNwbGl0KCcgJyks J2ZvckVhY2gnLHRydWUsZnVuY3Rpb24oayl7dmFyIGw9cGFyc2VJbnQoaywxMCk7 ai5wdXNoKHtudW1QYXJ0OmwsdGV4dFBhcnQ6ay5yZXBsYWNlKGwsJycpfSk7fSk7 cmV0dXJuIGo7fX07ZS5leHBvcnRzPWg7fSk7Cl9fZCgiZXNjYXBlSFRNTCIsW10s ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPS9bJjw+IidcL10vZyxoPXsnJic6 JyZhbXA7JywnPCc6JyZsdDsnLCc+JzonJmd0OycsJyInOicmcXVvdDsnLCInIjon JiMwMzk7JywnLyc6JyYjeDJGOyd9O2Z1bmN0aW9uIGkoail7cmV0dXJuIGoucmVw bGFjZShnLGZ1bmN0aW9uKGspe3JldHVybiBoW2tdO30pO31lLmV4cG9ydHM9aTt9 KTsKX19kKCJzZGsuSGVscGVyIixbInNkay5FcnJvckhhbmRsaW5nIiwic2RrLkV2 ZW50Iiwic2FmZUV2YWwiLCJVcmxNYXAiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7 dmFyIGc9Yignc2RrLkVycm9ySGFuZGxpbmcnKSxoPWIoJ3Nkay5FdmVudCcpLGk9 Yignc2FmZUV2YWwnKSxqPWIoJ1VybE1hcCcpLGs9e2lzVXNlcjpmdW5jdGlvbihs KXtyZXR1cm4gbDwyLjJlKzA5fHwobD49MWUrMTQmJmw8PTEwMDA5OTk5OTk4OTk5 OSl8fChsPj04LjllKzEzJiZsPD04OTk5OTk5OTk5OTk5OSk7fSx1cHBlckNhc2VG aXJzdENoYXI6ZnVuY3Rpb24obCl7aWYobC5sZW5ndGg+MCl7cmV0dXJuIGwuc3Vi c3RyKDAsMSkudG9VcHBlckNhc2UoKStsLnN1YnN0cigxKTt9ZWxzZSByZXR1cm4g bDt9LGdldFByb2ZpbGVMaW5rOmZ1bmN0aW9uKGwsbSxuKXtuPW58fChsP2oucmVz b2x2ZSgnd3d3JykrJy9wcm9maWxlLnBocD9pZD0nK2wudWlkOm51bGwpO2lmKG4p bT0nPGEgY2xhc3M9ImZiX2xpbmsiIGhyZWY9IicrbisnIj4nK20rJzwvYT4nO3Jl dHVybiBtO30saW52b2tlSGFuZGxlcjpmdW5jdGlvbihsLG0sbil7aWYobClpZih0 eXBlb2YgbD09PSdzdHJpbmcnKXtnLnVuZ3VhcmQoaSkobCxuKTt9ZWxzZSBpZihs LmFwcGx5KWcudW5ndWFyZChsKS5hcHBseShtLG58fFtdKTt9LGZpcmVFdmVudDpm dW5jdGlvbihsLG0pe3ZhciBuPW0uX2F0dHIuaHJlZjttLmZpcmUobCxuKTtoLmZp cmUobCxuLG0pO30sZXhlY3V0ZUZ1bmN0aW9uQnlOYW1lOmZ1bmN0aW9uKGwpe3Zh ciBtPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuPWwu c3BsaXQoIi4iKSxvPW4ucG9wKCkscD13aW5kb3c7Zm9yKHZhciBxPTA7cTxuLmxl bmd0aDtxKyspcD1wW25bcV1dO3JldHVybiBwW29dLmFwcGx5KHRoaXMsbSk7fX07 ZS5leHBvcnRzPWs7fSk7Cl9fZCgic2RrLlhGQk1MLkNvbm5lY3RCYXIiLFsic2Rr LkFuaW0iLCJzZGsuYXBpIiwic2RrLkF1dGgiLCJjcmVhdGVBcnJheUZyb20iLCJz ZGsuRGF0YSIsInNkay5ET00iLCJzZGsuWEZCTUwuRWxlbWVudCIsImVzY2FwZUhU TUwiLCJzZGsuRXZlbnQiLCJmb3JtYXQiLCJzZGsuSGVscGVyIiwic2RrLkluc2ln aHRzIiwic2RrLkludGwiLCJzZGsuUnVudGltZSIsIlVybE1hcCIsIlVzZXJBZ2Vu dCIsIkNvbm5lY3RCYXJDb25maWciXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFy IGc9Yignc2RrLkFuaW0nKSxoPWIoJ3Nkay5hcGknKSxpPWIoJ3Nkay5BdXRoJyks aj1iKCdjcmVhdGVBcnJheUZyb20nKSxrPWMoJ0Nvbm5lY3RCYXJDb25maWcnKSxs PWIoJ3Nkay5EYXRhJyksbT1iKCdzZGsuRE9NJyksbj1iKCdzZGsuWEZCTUwuRWxl bWVudCcpLG89YignZXNjYXBlSFRNTCcpLHA9Yignc2RrLkV2ZW50JykscT1iKCdm b3JtYXQnKSxyPWIoJ3Nkay5IZWxwZXInKSxzPWIoJ3Nkay5JbnNpZ2h0cycpLHQ9 Yignc2RrLkludGwnKSx1PWIoJ3Nkay5SdW50aW1lJyksdj1iKCdVcmxNYXAnKSx3 PWIoJ1VzZXJBZ2VudCcpLHg9bi5leHRlbmQoe19pbml0aWFsSGVpZ2h0Om51bGws X2luaXRUb3BNYXJnaW46MCxfcGljRmllbGROYW1lOidwaWNfc3F1YXJlJyxfcGFn ZTpudWxsLF9kaXNwbGF5ZWQ6ZmFsc2UsX25vdERpc3BsYXllZDpmYWxzZSxfY29u dGFpbmVyOm51bGwsX2FuaW1hdGlvblNwZWVkOjAscHJvY2VzczpmdW5jdGlvbigp e2kuZ2V0TG9naW5TdGF0dXMoRVM1KGZ1bmN0aW9uKHkpe3AubW9uaXRvcignYXV0 aC5zdGF0dXNDaGFuZ2UnLEVTNShmdW5jdGlvbigpe2lmKHRoaXMuaXNWYWxpZCgp JiZ1LmdldExvZ2luU3RhdHVzKCk9PSdjb25uZWN0ZWQnKXt0aGlzLl91aWQ9dS5n ZXRVc2VySUQoKTtoKHttZXRob2Q6J0Nvbm5lY3Quc2hvdWxkU2hvd0Nvbm5lY3RC YXInfSxFUzUoZnVuY3Rpb24oeil7aWYoeiE9Mil7dGhpcy5fYW5pbWF0aW9uU3Bl ZWQ9KHo9PTApPzc1MDowO3RoaXMuX3Nob3dCYXIoKTt9ZWxzZSB0aGlzLl9ub1Jl bmRlcigpO30sJ2JpbmQnLHRydWUsdGhpcykpO31lbHNlIHRoaXMuX25vUmVuZGVy KCk7cmV0dXJuIGZhbHNlO30sJ2JpbmQnLHRydWUsdGhpcykpO30sJ2JpbmQnLHRy dWUsdGhpcykpO30sX3Nob3dCYXI6ZnVuY3Rpb24oKXt2YXIgeT1sLl9zZWxlY3RC eUluZGV4KFsnZmlyc3RfbmFtZScsJ3Byb2ZpbGVfdXJsJyx0aGlzLl9waWNGaWVs ZE5hbWVdLCd1c2VyJywndWlkJyx0aGlzLl91aWQpLHo9bC5fc2VsZWN0QnlJbmRl eChbJ2Rpc3BsYXlfbmFtZSddLCdhcHBsaWNhdGlvbicsJ2FwaV9rZXknLHUuZ2V0 Q2xpZW50SUQoKSk7bC53YWl0T24oW3ksel0sRVM1KGZ1bmN0aW9uKGFhKXthYVsw XVswXS5zaXRlX25hbWU9YWFbMV1bMF0uZGlzcGxheV9uYW1lO2lmKCF0aGlzLl9k aXNwbGF5ZWQpe3RoaXMuX2Rpc3BsYXllZD10cnVlO3RoaXMuX25vdERpc3BsYXll ZD1mYWxzZTt0aGlzLl9yZW5kZXJDb25uZWN0QmFyKGFhWzBdWzBdKTt0aGlzLmZp cmUoJ3JlbmRlcicpO3MuaW1wcmVzc2lvbih7bGlkOjEwNCxuYW1lOid3aWRnZXRf bG9hZCd9KTt0aGlzLmZpcmUoJ2Nvbm5lY3RiYXIub25kaXNwbGF5Jyk7cC5maXJl KCdjb25uZWN0YmFyLm9uZGlzcGxheScsdGhpcyk7ci5pbnZva2VIYW5kbGVyKHRo aXMuZ2V0QXR0cmlidXRlKCdvbi1kaXNwbGF5JyksdGhpcyk7fX0sJ2JpbmQnLHRy dWUsdGhpcykpO30sX25vUmVuZGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5fZGlzcGxh eWVkKXt0aGlzLl9kaXNwbGF5ZWQ9ZmFsc2U7dGhpcy5fY2xvc2VDb25uZWN0QmFy KCk7fWlmKCF0aGlzLl9ub3REaXNwbGF5ZWQpe3RoaXMuX25vdERpc3BsYXllZD10 cnVlO3RoaXMuZmlyZSgncmVuZGVyJyk7dGhpcy5maXJlKCdjb25uZWN0YmFyLm9u bm90ZGlzcGxheScpO3AuZmlyZSgnY29ubmVjdGJhci5vbm5vdGRpc3BsYXknLHRo aXMpO3IuaW52b2tlSGFuZGxlcih0aGlzLmdldEF0dHJpYnV0ZSgnb24tbm90LWRp c3BsYXknKSx0aGlzKTt9fSxfcmVuZGVyQ29ubmVjdEJhcjpmdW5jdGlvbih5KXt2 YXIgej1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxhYT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCdkaXYnKTt6LmNsYXNzTmFtZT0nZmJfY29ubmVjdF9iYXIn O2FhLmNsYXNzTmFtZT0nZmJfcmVzZXQgZmJfY29ubmVjdF9iYXJfY29udGFpbmVy JzthYS5hcHBlbmRDaGlsZCh6KTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFh KTt0aGlzLl9jb250YWluZXI9YWE7dGhpcy5faW5pdGlhbEhlaWdodD1NYXRoLnJv dW5kKHBhcnNlRmxvYXQobS5nZXRTdHlsZShhYSwnaGVpZ2h0JykpK3BhcnNlRmxv YXQobS5nZXRTdHlsZShhYSwnYm9yZGVyQm90dG9tV2lkdGgnKSkpO20uaHRtbCh6 LHEoJzxkaXYgY2xhc3M9ImZiX2J1dHRvbnMiPicrJzxhIGhyZWY9IiMiIGNsYXNz PSJmYl9iYXJfY2xvc2UiPicrJzxpbWcgc3JjPSJ7MX0iIGFsdD0iezJ9IiB0aXRs ZT0iezJ9Ii8+JysnPC9hPicrJzwvZGl2PicrJzxhIGhyZWY9Ins3fSIgY2xhc3M9 ImZiX3Byb2ZpbGUiIHRhcmdldD0iX2JsYW5rIj4nKyc8aW1nIHNyYz0iezN9IiBh bHQ9Ins0fSIgdGl0bGU9Ins0fSIvPicrJzwvYT4nKyd7NX0nKycgPHNwYW4+Jysn PGEgaHJlZj0iezh9IiBjbGFzcz0iZmJfbGVhcm5fbW9yZSIgdGFyZ2V0PSJfYmxh bmsiPns2fTwvYT4gJm5kYXNoOyAnKyc8YSBocmVmPSIjIiBjbGFzcz0iZmJfbm9f dGhhbmtzIj57MH08L2E+JysnPC9zcGFuPicsdC50eC5fKCJObyBUaGFua3MiKSx2 LnJlc29sdmUoJ2ZiY2RuJykrJy8nK2suaW1ncy5idXR0b25VcmwsdC50eC5fKCJD bG9zZSIpLHlbdGhpcy5fcGljRmllbGROYW1lXXx8di5yZXNvbHZlKCdmYmNkbicp KycvJytrLmltZ3MubWlzc2luZ1Byb2ZpbGVVcmwsbyh5LmZpcnN0X25hbWUpLHQu dHguXygiSGkge2ZpcnN0TmFtZX0uIFx1MDAzQ3N0cm9uZz57c2l0ZU5hbWV9XHUw MDNDXC9zdHJvbmc+IGlzIHVzaW5nIEZhY2Vib29rIHRvIHBlcnNvbmFsaXplIHlv dXIgZXhwZXJpZW5jZS4iLHtmaXJzdE5hbWU6byh5LmZpcnN0X25hbWUpLHNpdGVO YW1lOm8oeS5zaXRlX25hbWUpfSksdC50eC5fKCJMZWFybiBNb3JlIikseS5wcm9m aWxlX3VybCx2LnJlc29sdmUoJ3d3dycpKycvc2l0ZXRvdXIvY29ubmVjdC5waHAn KSk7RVM1KGooei5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpKSwnZm9yRWFjaCcs dHJ1ZSxmdW5jdGlvbihkYSl7ZGEub25jbGljaz1FUzUodGhpcy5fY2xpY2tIYW5k bGVyLCdiaW5kJyx0cnVlLHRoaXMpO30sdGhpcyk7dGhpcy5fcGFnZT1kb2N1bWVu dC5ib2R5O3ZhciBiYT0wO2lmKHRoaXMuX3BhZ2UucGFyZW50Tm9kZSl7YmE9TWF0 aC5yb3VuZCgocGFyc2VGbG9hdChtLmdldFN0eWxlKHRoaXMuX3BhZ2UucGFyZW50 Tm9kZSwnaGVpZ2h0JykpLXBhcnNlRmxvYXQobS5nZXRTdHlsZSh0aGlzLl9wYWdl LCdoZWlnaHQnKSkpLzIpO31lbHNlIGJhPXBhcnNlSW50KG0uZ2V0U3R5bGUodGhp cy5fcGFnZSwnbWFyZ2luVG9wJyksMTApO2JhPWlzTmFOKGJhKT8wOmJhO3RoaXMu X2luaXRUb3BNYXJnaW49YmE7aWYoIXdpbmRvdy5YTUxIdHRwUmVxdWVzdCl7YWEu Y2xhc3NOYW1lKz0iIGZiX2Nvbm5lY3RfYmFyX2NvbnRhaW5lcl9pZTYiO31lbHNl e2FhLnN0eWxlLnRvcD0oLTEqdGhpcy5faW5pdGlhbEhlaWdodCkrJ3B4JztnLmF0 ZShhYSx7dG9wOicwcHgnfSx0aGlzLl9hbmltYXRpb25TcGVlZCk7fXZhciBjYT17 bWFyZ2luVG9wOnRoaXMuX2luaXRUb3BNYXJnaW4rdGhpcy5faW5pdGlhbEhlaWdo dCsncHgnfTtpZih3LmllKCkpe2NhLmJhY2tncm91bmRQb3NpdGlvblk9dGhpcy5f aW5pdGlhbEhlaWdodCsncHgnO31lbHNlIGNhLmJhY2tncm91bmRQb3NpdGlvbj0n PyAnK3RoaXMuX2luaXRpYWxIZWlnaHQrJ3B4JztnLmF0ZSh0aGlzLl9wYWdlLGNh LHRoaXMuX2FuaW1hdGlvblNwZWVkKTt9LF9jbGlja0hhbmRsZXI6ZnVuY3Rpb24o eSl7eT15fHx3aW5kb3cuZXZlbnQ7dmFyIHo9eS50YXJnZXR8fHkuc3JjRWxlbWVu dDt3aGlsZSh6Lm5vZGVOYW1lIT0nQScpej16LnBhcmVudE5vZGU7c3dpdGNoKHou Y2xhc3NOYW1lKXtjYXNlICdmYl9iYXJfY2xvc2UnOmgoe21ldGhvZDonQ29ubmVj dC5jb25uZWN0QmFyTWFya0Fja25vd2xlZGdlZCd9KTtzLmltcHJlc3Npb24oe2xp ZDoxMDQsbmFtZTond2lkZ2V0X3VzZXJfY2xvc2VkJ30pO3RoaXMuX2Nsb3NlQ29u bmVjdEJhcigpO2JyZWFrO2Nhc2UgJ2ZiX2xlYXJuX21vcmUnOmNhc2UgJ2ZiX3By b2ZpbGUnOndpbmRvdy5vcGVuKHouaHJlZik7YnJlYWs7Y2FzZSAnZmJfbm9fdGhh bmtzJzp0aGlzLl9jbG9zZUNvbm5lY3RCYXIoKTtoKHttZXRob2Q6J0Nvbm5lY3Qu Y29ubmVjdEJhck1hcmtBY2tub3dsZWRnZWQnfSk7cy5pbXByZXNzaW9uKHtsaWQ6 MTA0LG5hbWU6J3dpZGdldF91c2VyX25vX3RoYW5rcyd9KTtoKHttZXRob2Q6J2F1 dGgucmV2b2tlQXV0aG9yaXphdGlvbicsYmxvY2s6dHJ1ZX0sRVM1KGZ1bmN0aW9u KCl7dGhpcy5maXJlKCdjb25uZWN0YmFyLm9uZGVhdXRoJyk7cC5maXJlKCdjb25u ZWN0YmFyLm9uZGVhdXRoJyx0aGlzKTtyLmludm9rZUhhbmRsZXIodGhpcy5nZXRB dHRyaWJ1dGUoJ29uLWRlYXV0aCcpLHRoaXMpO2lmKHRoaXMuX2dldEJvb2xBdHRy aWJ1dGUoJ2F1dG8tcmVmcmVzaCcsdHJ1ZSkpd2luZG93LmxvY2F0aW9uLnJlbG9h ZCgpO30sJ2JpbmQnLHRydWUsdGhpcykpO2JyZWFrO31yZXR1cm4gZmFsc2U7fSxf Y2xvc2VDb25uZWN0QmFyOmZ1bmN0aW9uKCl7dGhpcy5fbm90RGlzcGxheWVkPXRy dWU7dmFyIHk9e21hcmdpblRvcDp0aGlzLl9pbml0VG9wTWFyZ2luKydweCd9O2lm KHcuaWUoKSl7eS5iYWNrZ3JvdW5kUG9zaXRpb25ZPScwcHgnO31lbHNlIHkuYmFj a2dyb3VuZFBvc2l0aW9uPSc/IDBweCc7dmFyIHo9KHRoaXMuX2FuaW1hdGlvblNw ZWVkPT0wKT8wOjMwMDtnLmF0ZSh0aGlzLl9wYWdlLHkseik7Zy5hdGUodGhpcy5f Y29udGFpbmVyLHt0b3A6KC0xKnRoaXMuX2luaXRpYWxIZWlnaHQpKydweCd9LHos ZnVuY3Rpb24oYWEpe2FhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYWEpO30pO3Ro aXMuZmlyZSgnY29ubmVjdGJhci5vbmNsb3NlJyk7cC5maXJlKCdjb25uZWN0YmFy Lm9uY2xvc2UnLHRoaXMpO3IuaW52b2tlSGFuZGxlcih0aGlzLmdldEF0dHJpYnV0 ZSgnb24tY2xvc2UnKSx0aGlzKTt9fSk7ZS5leHBvcnRzPXg7fSk7Cl9fZCgic2Rr LlhGQk1MLkVkZ2VDb21tZW50V2lkZ2V0IixbInNkay5YRkJNTC5JZnJhbWVXaWRn ZXQiLCJzZGsuRE9NIl0sZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ3Nk ay5YRkJNTC5JZnJhbWVXaWRnZXQnKSxoPWIoJ3Nkay5ET00nKSxpPTEwMDAwLGo9 Zy5leHRlbmQoe2NvbnN0cnVjdG9yOmZ1bmN0aW9uKGspe3RoaXMucGFyZW50KGsu Y29tbWVudE5vZGUpO3RoaXMuX2lmcmFtZVdpZHRoPWsud2lkdGgrMTt0aGlzLl9p ZnJhbWVIZWlnaHQ9ay5oZWlnaHQ7dGhpcy5fYXR0cj17bWFzdGVyX2ZyYW1lX25h bWU6ay5tYXN0ZXJGcmFtZU5hbWUsb2Zmc2V0WDprLnJlbGF0aXZlV2lkdGhPZmZz ZXQtay5wYWRkaW5nTGVmdH07dGhpcy5kb209ay5jb21tZW50Tm9kZTt0aGlzLmRv bS5zdHlsZS50b3A9ay5yZWxhdGl2ZUhlaWdodE9mZnNldCsncHgnO3RoaXMuZG9t LnN0eWxlLmxlZnQ9ay5yZWxhdGl2ZVdpZHRoT2Zmc2V0KydweCc7dGhpcy5kb20u c3R5bGUuekluZGV4PWkrKztoLmFkZENzcyh0aGlzLmRvbSwnZmJfZWRnZV9jb21t ZW50X3dpZGdldCcpO30sX3Zpc2libGVBZnRlcjonbG9hZCcsX3Nob3dMb2FkZXI6 ZmFsc2UsZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7d2lkdGg6dGhpcy5faWZy YW1lV2lkdGgsaGVpZ2h0OnRoaXMuX2lmcmFtZUhlaWdodH07fSxnZXRVcmxCaXRz OmZ1bmN0aW9uKCl7cmV0dXJuIHtuYW1lOidjb21tZW50X3dpZGdldF9zaGVsbCcs cGFyYW1zOnRoaXMuX2F0dHJ9O319KTtlLmV4cG9ydHM9ajt9KTsKX19kKCJzZGsu WEZCTUwuRWRnZVdpZGdldCIsWyJzZGsuWEZCTUwuSWZyYW1lV2lkZ2V0Iiwic2Rr LlhGQk1MLkVkZ2VDb21tZW50V2lkZ2V0Iiwic2RrLkRPTSIsInNkay5IZWxwZXIi LCJzZGsuUnVudGltZSJdLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iKCdz ZGsuWEZCTUwuSWZyYW1lV2lkZ2V0JyksaD1iKCdzZGsuWEZCTUwuRWRnZUNvbW1l bnRXaWRnZXQnKSxpPWIoJ3Nkay5ET00nKSxqPWIoJ3Nkay5IZWxwZXInKSxrPWIo J3Nkay5SdW50aW1lJyksbD1nLmV4dGVuZCh7X3Zpc2libGVBZnRlcjonaW1tZWRp YXRlJyxfc2hvd0xvYWRlcjpmYWxzZSxfcm9vdFBhZGRpbmc6bnVsbCxzZXR1cEFu ZFZhbGlkYXRlOmZ1bmN0aW9uKCl7aS5hZGRDc3ModGhpcy5kb20sJ2ZiX2VkZ2Vf d2lkZ2V0X3dpdGhfY29tbWVudCcpO3RoaXMuX2F0dHI9e2NoYW5uZWxfdXJsOnRo aXMuZ2V0Q2hhbm5lbFVybCgpLGRlYnVnOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUo J2RlYnVnJyksaHJlZjp0aGlzLmdldEF0dHJpYnV0ZSgnaHJlZicsd2luZG93Lmxv Y2F0aW9uLmhyZWYpLGlzX3Blcm1hbGluazp0aGlzLl9nZXRCb29sQXR0cmlidXRl KCdpcy1wZXJtYWxpbmsnKSxub2RlX3R5cGU6dGhpcy5nZXRBdHRyaWJ1dGUoJ25v ZGUtdHlwZScsJ2xpbmsnKSx3aWR0aDp0aGlzLl9nZXRXaWRnZXRXaWR0aCgpLGZv bnQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ2ZvbnQnKSxsYXlvdXQ6dGhpcy5fZ2V0TGF5 b3V0KCksY29sb3JzY2hlbWU6dGhpcy5nZXRBdHRyaWJ1dGUoJ2NvbG9yLXNjaGVt ZScsJ2xpZ2h0JyksYWN0aW9uOnRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKSxy ZWY6dGhpcy5nZXRBdHRyaWJ1dGUoJ3JlZicpLHNob3dfZmFjZXM6dGhpcy5fc2hv dWxkU2hvd0ZhY2VzKCksbm9fcmVzaXplOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUo J25vX3Jlc2l6ZScpLHNlbmQ6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnc2VuZCcp LHVybF9tYXA6dGhpcy5nZXRBdHRyaWJ1dGUoJ3VybF9tYXAnKSxleHRlbmRlZF9z b2NpYWxfY29udGV4dDp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdleHRlbmRlZF9z b2NpYWxfY29udGV4dCcsZmFsc2UpfTt0aGlzLl9yb290UGFkZGluZz17bGVmdDpw YXJzZUZsb2F0KGkuZ2V0U3R5bGUodGhpcy5kb20sJ3BhZGRpbmdMZWZ0JykpLHRv cDpwYXJzZUZsb2F0KGkuZ2V0U3R5bGUodGhpcy5kb20sJ3BhZGRpbmdUb3AnKSl9 O3JldHVybiB0cnVlO30sb25lVGltZVNldHVwOmZ1bmN0aW9uKCl7dGhpcy5zdWJz Y3JpYmUoJ3hkLmF1dGhQcm9tcHRlZCcsRVM1KHRoaXMuX29uQXV0aFByb21wdCwn YmluZCcsdHJ1ZSx0aGlzKSk7dGhpcy5zdWJzY3JpYmUoJ3hkLmVkZ2VDcmVhdGVk JyxFUzUodGhpcy5fb25FZGdlQ3JlYXRlLCdiaW5kJyx0cnVlLHRoaXMpKTt0aGlz LnN1YnNjcmliZSgneGQuZWRnZVJlbW92ZWQnLEVTNSh0aGlzLl9vbkVkZ2VSZW1v dmUsJ2JpbmQnLHRydWUsdGhpcykpO3RoaXMuc3Vic2NyaWJlKCd4ZC5wcmVzZW50 RWRnZUNvbW1lbnREaWFsb2cnLEVTNSh0aGlzLl9oYW5kbGVFZGdlQ29tbWVudERp YWxvZ1ByZXNlbnRhdGlvbiwnYmluZCcsdHJ1ZSx0aGlzKSk7dGhpcy5zdWJzY3Jp YmUoJ3hkLmRpc21pc3NFZGdlQ29tbWVudERpYWxvZycsRVM1KHRoaXMuX2hhbmRs ZUVkZ2VDb21tZW50RGlhbG9nRGlzbWlzc2FsLCdiaW5kJyx0cnVlLHRoaXMpKTt0 aGlzLnN1YnNjcmliZSgneGQuaGlkZUVkZ2VDb21tZW50RGlhbG9nJyxFUzUodGhp cy5faGFuZGxlRWRnZUNvbW1lbnREaWFsb2dIaWRlLCdiaW5kJyx0cnVlLHRoaXMp KTt0aGlzLnN1YnNjcmliZSgneGQuc2hvd0VkZ2VDb21tZW50RGlhbG9nJyxFUzUo dGhpcy5faGFuZGxlRWRnZUNvbW1lbnREaWFsb2dTaG93LCdiaW5kJyx0cnVlLHRo aXMpKTt9LGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4ge3dpZHRoOnRoaXMuX2dl dFdpZGdldFdpZHRoKCksaGVpZ2h0OnRoaXMuX2dldFdpZGdldEhlaWdodCgpfTt9 LF9nZXRXaWRnZXRIZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgbT10aGlzLl9nZXRMYXlv dXQoKSxuPXRoaXMuX3Nob3VsZFNob3dGYWNlcygpPydzaG93JzonaGlkZScsbz10 aGlzLl9nZXRCb29sQXR0cmlidXRlKCdzZW5kJykscD02NSsobz8yNTowKSxxPXtz dGFuZGFyZDp7c2hvdzo4MCxoaWRlOjM1fSxib3hfY291bnQ6e3Nob3c6cCxoaWRl OnB9LGJ1dHRvbl9jb3VudDp7c2hvdzoyMSxoaWRlOjIxfSxzaW1wbGU6e3Nob3c6 MjAsaGlkZToyMH19O3JldHVybiBxW21dW25dO30sX2dldFdpZGdldFdpZHRoOmZ1 bmN0aW9uKCl7dmFyIG09dGhpcy5fZ2V0TGF5b3V0KCksbj10aGlzLl9nZXRCb29s QXR0cmlidXRlKCdzZW5kJyksbz10aGlzLl9zaG91bGRTaG93RmFjZXMoKT8nc2hv dyc6J2hpZGUnLHA9KHRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKT09PSdyZWNv bW1lbmQnKSxxPShwPzI2NToyMjUpKyhuPzYwOjApLHI9KHA/MTMwOjkwKSsobj82 MDowKSxzPXRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKT09PSdyZWNvbW1lbmQn PzEwMDo1NSx0PXRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKT09PSdyZWNvbW1l bmQnPzkwOjUwLHU9e3N0YW5kYXJkOntzaG93OjQ1MCxoaWRlOjQ1MH0sYm94X2Nv dW50OntzaG93OnMsaGlkZTpzfSxidXR0b25fY291bnQ6e3Nob3c6cixoaWRlOnJ9 LHNpbXBsZTp7c2hvdzp0LGhpZGU6dH19LHY9dVttXVtvXSx3PXRoaXMuX2dldFB4 QXR0cmlidXRlKCd3aWR0aCcsdikseD17c3RhbmRhcmQ6e21pbjpxLG1heDo5MDB9 LGJveF9jb3VudDp7bWluOnMsbWF4OjkwMH0sYnV0dG9uX2NvdW50OnttaW46cixt YXg6OTAwfSxzaW1wbGU6e21pbjo0OSxtYXg6OTAwfX07aWYodzx4W21dLm1pbil7 dz14W21dLm1pbjt9ZWxzZSBpZih3PnhbbV0ubWF4KXc9eFttXS5tYXg7cmV0dXJu IHc7fSxfZ2V0TGF5b3V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldEF0dHJp YnV0ZUZyb21MaXN0KCdsYXlvdXQnLCdzdGFuZGFyZCcsWydzdGFuZGFyZCcsJ2J1 dHRvbl9jb3VudCcsJ2JveF9jb3VudCcsJ3NpbXBsZSddKTt9LF9zaG91bGRTaG93 RmFjZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0TGF5b3V0KCk9PT0nc3Rh bmRhcmQnJiZ0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdzaG93LWZhY2VzJyx0cnVl KTt9LF9oYW5kbGVFZGdlQ29tbWVudERpYWxvZ1ByZXNlbnRhdGlvbjpmdW5jdGlv bihtKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuO3ZhciBuPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ3NwYW4nKTt0aGlzLl9jb21tZW50U2xhdmU9dGhpcy5fY3Jl YXRlRWRnZUNvbW1lbnRXaWRnZXQobSxuKTt0aGlzLmRvbS5hcHBlbmRDaGlsZChu KTt0aGlzLl9jb21tZW50U2xhdmUucHJvY2VzcygpO3RoaXMuX2NvbW1lbnRXaWRn ZXROb2RlPW47fSxfY3JlYXRlRWRnZUNvbW1lbnRXaWRnZXQ6ZnVuY3Rpb24obSxu KXt2YXIgbz17Y29tbWVudE5vZGU6bixleHRlcm5hbFVybDptLmV4dGVybmFsVVJM LG1hc3RlckZyYW1lTmFtZTptLm1hc3RlckZyYW1lTmFtZSxsYXlvdXQ6dGhpcy5f Z2V0TGF5b3V0KCkscmVsYXRpdmVIZWlnaHRPZmZzZXQ6dGhpcy5fZ2V0SGVpZ2h0 T2Zmc2V0KG0pLHJlbGF0aXZlV2lkdGhPZmZzZXQ6dGhpcy5fZ2V0V2lkdGhPZmZz ZXQobSksYW5jaG9yVGFyZ2V0WDpwYXJzZUZsb2F0KG1bJ3F1ZXJ5W2FuY2hvclRh cmdldFhdJ10pK3RoaXMuX3Jvb3RQYWRkaW5nLmxlZnQsYW5jaG9yVGFyZ2V0WTpw YXJzZUZsb2F0KG1bJ3F1ZXJ5W2FuY2hvclRhcmdldFldJ10pK3RoaXMuX3Jvb3RQ YWRkaW5nLnRvcCx3aWR0aDpwYXJzZUZsb2F0KG0ud2lkdGgpLGhlaWdodDpwYXJz ZUZsb2F0KG0uaGVpZ2h0KSxwYWRkaW5nTGVmdDp0aGlzLl9yb290UGFkZGluZy5s ZWZ0fTtyZXR1cm4gbmV3IGgobyk7fSxfZ2V0SGVpZ2h0T2Zmc2V0OmZ1bmN0aW9u KG0pe3JldHVybiBwYXJzZUZsb2F0KG1bJ2FuY2hvckdlb21ldHJ5W3ldJ10pK3Bh cnNlRmxvYXQobVsnYW5jaG9yUG9zaXRpb25beV0nXSkrdGhpcy5fcm9vdFBhZGRp bmcudG9wO30sX2dldFdpZHRoT2Zmc2V0OmZ1bmN0aW9uKG0pe3ZhciBuPXBhcnNl RmxvYXQobVsnYW5jaG9yUG9zaXRpb25beF0nXSkrdGhpcy5fcm9vdFBhZGRpbmcu bGVmdCxvPWkuZ2V0UG9zaXRpb24odGhpcy5kb20pLngscD10aGlzLmRvbS5vZmZz ZXRXaWR0aCxxPWkuZ2V0Vmlld3BvcnRJbmZvKCkud2lkdGgscj1wYXJzZUZsb2F0 KG0ud2lkdGgpLHM9ZmFsc2U7aWYoay5nZXRSdGwoKSl7cz1yPG87fWVsc2UgaWYo KG8rcik+cSlzPXRydWU7aWYocyluKz1wYXJzZUZsb2F0KG1bJ2FuY2hvckdlb21l dHJ5W3hdJ10pLXI7cmV0dXJuIG47fSxfZ2V0Q29tbW9uRWRnZUNvbW1lbnRXaWRn ZXRPcHRzOmZ1bmN0aW9uKG0sbil7cmV0dXJuIHtjb2xvcnNjaGVtZTp0aGlzLl9h dHRyLmNvbG9yc2NoZW1lLGNvbW1lbnROb2RlOm4sY29udHJvbGxlcklEOm0uY29u dHJvbGxlcklELG5vZGVJbWFnZVVSTDptLm5vZGVJbWFnZVVSTCxub2RlUmVmOnRo aXMuX2F0dHIucmVmLG5vZGVUaXRsZTptLm5vZGVUaXRsZSxub2RlVVJMOm0ubm9k ZVVSTCxub2RlU3VtbWFyeTptLm5vZGVTdW1tYXJ5LHdpZHRoOnBhcnNlRmxvYXQo bS53aWR0aCksaGVpZ2h0OnBhcnNlRmxvYXQobS5oZWlnaHQpLHJlbGF0aXZlSGVp Z2h0T2Zmc2V0OnRoaXMuX2dldEhlaWdodE9mZnNldChtKSxyZWxhdGl2ZVdpZHRo T2Zmc2V0OnRoaXMuX2dldFdpZHRoT2Zmc2V0KG0pLGVycm9yOm0uZXJyb3Isc2lk ZXJlbmRlcjptLnNpZGVyZW5kZXIsZXh0ZW5kZWRfc29jaWFsX2NvbnRleHQ6bS5l eHRlbmRlZF9zb2NpYWxfY29udGV4dCxhbmNob3JUYXJnZXRYOnBhcnNlRmxvYXQo bVsncXVlcnlbYW5jaG9yVGFyZ2V0WF0nXSkrdGhpcy5fcm9vdFBhZGRpbmcubGVm dCxhbmNob3JUYXJnZXRZOnBhcnNlRmxvYXQobVsncXVlcnlbYW5jaG9yVGFyZ2V0 WV0nXSkrdGhpcy5fcm9vdFBhZGRpbmcudG9wfTt9LF9oYW5kbGVFZGdlQ29tbWVu dERpYWxvZ0Rpc21pc3NhbDpmdW5jdGlvbihtKXtpZih0aGlzLl9jb21tZW50V2lk Z2V0Tm9kZSl7dGhpcy5kb20ucmVtb3ZlQ2hpbGQodGhpcy5fY29tbWVudFdpZGdl dE5vZGUpO2RlbGV0ZSB0aGlzLl9jb21tZW50V2lkZ2V0Tm9kZTt9fSxfaGFuZGxl RWRnZUNvbW1lbnREaWFsb2dIaWRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fY29tbWVu dFdpZGdldE5vZGUpdGhpcy5fY29tbWVudFdpZGdldE5vZGUuc3R5bGUuZGlzcGxh eT0ibm9uZSI7fSxfaGFuZGxlRWRnZUNvbW1lbnREaWFsb2dTaG93OmZ1bmN0aW9u KCl7aWYodGhpcy5fY29tbWVudFdpZGdldE5vZGUpdGhpcy5fY29tbWVudFdpZGdl dE5vZGUuc3R5bGUuZGlzcGxheT0iYmxvY2siO30sX2ZpcmVFdmVudEFuZEludm9r ZUhhbmRsZXI6ZnVuY3Rpb24obSxuKXtqLmZpcmVFdmVudChtLHRoaXMpO2ouaW52 b2tlSGFuZGxlcih0aGlzLmdldEF0dHJpYnV0ZShuKSx0aGlzLFt0aGlzLl9hdHRy LmhyZWZdKTt9LF9vbkVkZ2VDcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9maXJlRXZl bnRBbmRJbnZva2VIYW5kbGVyKCdlZGdlLmNyZWF0ZScsJ29uLWNyZWF0ZScpO30s X29uRWRnZVJlbW92ZTpmdW5jdGlvbigpe3RoaXMuX2ZpcmVFdmVudEFuZEludm9r ZUhhbmRsZXIoJ2VkZ2UucmVtb3ZlJywnb24tcmVtb3ZlJyk7fSxfb25BdXRoUHJv bXB0OmZ1bmN0aW9uKCl7dGhpcy5fZmlyZUV2ZW50QW5kSW52b2tlSGFuZGxlcign YXV0aC5wcm9tcHQnLCdvbi1wcm9tcHQnKTt9fSk7ZS5leHBvcnRzPWw7fSk7Cl9f ZCgic2RrLlhGQk1MLkxpa2VCb3giLFsic2RrLlhGQk1MLkVkZ2VXaWRnZXQiLCJz ZGsuSGVscGVyIiwiTG9nIiwic2RrLlJ1bnRpbWUiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7dmFyIGc9Yignc2RrLlhGQk1MLkVkZ2VXaWRnZXQnKSxoPWIoJ3Nkay5I ZWxwZXInKSxpPWIoJ0xvZycpLGo9Yignc2RrLlJ1bnRpbWUnKSxrPWcuZXh0ZW5k KHtfdmlzaWJsZUFmdGVyOidsb2FkJyxzZXR1cEFuZFZhbGlkYXRlOmZ1bmN0aW9u KCl7dGhpcy5fYXR0cj17Y2hhbm5lbDp0aGlzLmdldENoYW5uZWxVcmwoKSxhcGlf a2V5OmouZ2V0Q2xpZW50SUQoKSxjb25uZWN0aW9uczp0aGlzLmdldEF0dHJpYnV0 ZSgnY29ubmVjdGlvbnMnKSxjc3M6dGhpcy5nZXRBdHRyaWJ1dGUoJ2NzcycpLGhl aWdodDp0aGlzLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JyksaWQ6dGhpcy5nZXRBdHRy aWJ1dGUoJ3Byb2ZpbGUtaWQnKSxoZWFkZXI6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0 ZSgnaGVhZGVyJyx0cnVlKSxuYW1lOnRoaXMuZ2V0QXR0cmlidXRlKCduYW1lJyks c2hvd19mYWNlczp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdzaG93LWZhY2VzJyx0 cnVlKSxzdHJlYW06dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnc3RyZWFtJyx0cnVl KSx3aWR0aDp0aGlzLl9nZXRQeEF0dHJpYnV0ZSgnd2lkdGgnLDMwMCksaHJlZjp0 aGlzLmdldEF0dHJpYnV0ZSgnaHJlZicpLGNvbG9yc2NoZW1lOnRoaXMuZ2V0QXR0 cmlidXRlKCdjb2xvcnNjaGVtZScsJ2xpZ2h0JyksYm9yZGVyX2NvbG9yOnRoaXMu Z2V0QXR0cmlidXRlKCdib3JkZXJfY29sb3InKSxzaG93X2JvcmRlcjp0aGlzLl9n ZXRCb29sQXR0cmlidXRlKCdzaG93LWJvcmRlcicsdHJ1ZSl9O2lmKHRoaXMuX2dl dEJvb2xBdHRyaWJ1dGUoJ2ZvcmNlX3dhbGwnLGZhbHNlKSl0aGlzLl9hdHRyLmZv cmNlX3dhbGw9dHJ1ZTtpZih0aGlzLl9hdHRyLmNvbm5lY3Rpb25zPT09JzAnKXt0 aGlzLl9hdHRyLnNob3dfZmFjZXM9ZmFsc2U7fWVsc2UgaWYodGhpcy5fYXR0ci5j b25uZWN0aW9ucyl0aGlzLl9hdHRyLnNob3dfZmFjZXM9dHJ1ZTtpZighdGhpcy5f YXR0ci5pZCYmIXRoaXMuX2F0dHIubmFtZSYmIXRoaXMuX2F0dHIuaHJlZil7aS5l cnJvcignPGZiOmxpa2UtYm94PiByZXF1aXJlcyBvbmUgb2YgdGhlICJpZCIgb3Ig Im5hbWUiIGF0dHJpYnV0ZXMuJyk7cmV0dXJuIGZhbHNlO312YXIgbD10aGlzLl9h dHRyLmhlaWdodDtpZighbClpZighdGhpcy5fYXR0ci5zaG93X2ZhY2VzJiYhdGhp cy5fYXR0ci5zdHJlYW0pe2w9NjI7fWVsc2V7bD05NTtpZih0aGlzLl9hdHRyLnNo b3dfZmFjZXMpbCs9MTYzO2lmKHRoaXMuX2F0dHIuc3RyZWFtKWwrPTMwMDtpZih0 aGlzLl9hdHRyLmhlYWRlciYmdGhpcy5fYXR0ci5oZWFkZXIhPT0nMCcpbCs9MzI7 fXRoaXMuX2F0dHIuaGVpZ2h0PWw7dGhpcy5zdWJzY3JpYmUoJ3hkLmxpa2Vib3hM aWtlZCcsRVM1KHRoaXMuX29uTGlrZWQsJ2JpbmQnLHRydWUsdGhpcykpO3RoaXMu c3Vic2NyaWJlKCd4ZC5saWtlYm94VW5saWtlZCcsRVM1KHRoaXMuX29uVW5saWtl ZCwnYmluZCcsdHJ1ZSx0aGlzKSk7cmV0dXJuIHRydWU7fSxnZXRTaXplOmZ1bmN0 aW9uKCl7cmV0dXJuIHt3aWR0aDp0aGlzLl9hdHRyLndpZHRoLGhlaWdodDp0aGlz Ll9hdHRyLmhlaWdodH07fSxnZXRVcmxCaXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHtu YW1lOidsaWtlYm94JyxwYXJhbXM6dGhpcy5fYXR0cn07fSxfb25MaWtlZDpmdW5j dGlvbigpe2guZmlyZUV2ZW50KCdlZGdlLmNyZWF0ZScsdGhpcyk7fSxfb25Vbmxp a2VkOmZ1bmN0aW9uKCl7aC5maXJlRXZlbnQoJ2VkZ2UucmVtb3ZlJyx0aGlzKTt9 fSk7ZS5leHBvcnRzPWs7fSk7Cl9fZCgic2RrLlhGQk1MLlNlbmRCdXR0b25Gb3Jt V2lkZ2V0IixbInNkay5YRkJNTC5FZGdlQ29tbWVudFdpZGdldCIsInNkay5ET00i LCJzZGsuRXZlbnQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yignc2Rr LlhGQk1MLkVkZ2VDb21tZW50V2lkZ2V0JyksaD1iKCdzZGsuRE9NJyksaT1iKCdz ZGsuRXZlbnQnKSxqPWcuZXh0ZW5kKHtjb25zdHJ1Y3RvcjpmdW5jdGlvbihrKXt0 aGlzLnBhcmVudChrKTtoLmFkZENzcyh0aGlzLmRvbSwnZmJfc2VuZF9idXR0b25f Zm9ybV93aWRnZXQnKTtoLmFkZENzcyh0aGlzLmRvbSxrLmNvbG9yc2NoZW1lKTto LmFkZENzcyh0aGlzLmRvbSwodHlwZW9mIGsuc2lkZXJlbmRlciE9J3VuZGVmaW5l ZCcmJmsuc2lkZXJlbmRlcik/J3NpZGVyZW5kZXInOicnKTt0aGlzLl9hdHRyLm5v ZGVJbWFnZVVSTD1rLm5vZGVJbWFnZVVSTDt0aGlzLl9hdHRyLm5vZGVSZWY9ay5u b2RlUmVmO3RoaXMuX2F0dHIubm9kZVRpdGxlPWsubm9kZVRpdGxlO3RoaXMuX2F0 dHIubm9kZVVSTD1rLm5vZGVVUkw7dGhpcy5fYXR0ci5ub2RlU3VtbWFyeT1rLm5v ZGVTdW1tYXJ5O3RoaXMuX2F0dHIub2Zmc2V0WD1rLnJlbGF0aXZlV2lkdGhPZmZz ZXQ7dGhpcy5fYXR0ci5vZmZzZXRZPWsucmVsYXRpdmVIZWlnaHRPZmZzZXQ7dGhp cy5fYXR0ci5hbmNob3JUYXJnZXRYPWsuYW5jaG9yVGFyZ2V0WDt0aGlzLl9hdHRy LmFuY2hvclRhcmdldFk9ay5hbmNob3JUYXJnZXRZO3RoaXMuX2F0dHIuY2hhbm5l bD10aGlzLmdldENoYW5uZWxVcmwoKTt0aGlzLl9hdHRyLmNvbnRyb2xsZXJJRD1r LmNvbnRyb2xsZXJJRDt0aGlzLl9hdHRyLmNvbG9yc2NoZW1lPWsuY29sb3JzY2hl bWU7dGhpcy5fYXR0ci5lcnJvcj1rLmVycm9yO3RoaXMuX2F0dHIuc2lkZXJlbmRl cj1rLnNpZGVyZW5kZXI7dGhpcy5fYXR0ci5leHRlbmRlZF9zb2NpYWxfY29udGV4 dD1rLmV4dGVuZGVkX3NvY2lhbF9jb250ZXh0O30sX3Nob3dMb2FkZXI6dHJ1ZSxn ZXRVcmxCaXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHtuYW1lOidzZW5kX2J1dHRvbl9m b3JtX3NoZWxsJyxwYXJhbXM6dGhpcy5fYXR0cn07fSxvbmVUaW1lU2V0dXA6ZnVu Y3Rpb24oKXt0aGlzLnN1YnNjcmliZSgneGQubWVzc2FnZVNlbnQnLEVTNSh0aGlz Ll9vbk1lc3NhZ2VTZW50LCdiaW5kJyx0cnVlLHRoaXMpKTt9LF9vbk1lc3NhZ2VT ZW50OmZ1bmN0aW9uKCl7aS5maXJlKCdtZXNzYWdlLnNlbmQnLHRoaXMuX2F0dHIu bm9kZVVSTCx0aGlzKTt9fSk7ZS5leHBvcnRzPWo7fSk7Cl9fZCgic2RrLlhGQk1M Lkxpa2UiLFsic2RrLlhGQk1MLkVkZ2VXaWRnZXQiLCJzZGsuWEZCTUwuU2VuZEJ1 dHRvbkZvcm1XaWRnZXQiXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yign c2RrLlhGQk1MLkVkZ2VXaWRnZXQnKSxoPWIoJ3Nkay5YRkJNTC5TZW5kQnV0dG9u Rm9ybVdpZGdldCcpLGk9Zy5leHRlbmQoe2dldFVybEJpdHM6ZnVuY3Rpb24oKXty ZXR1cm4ge25hbWU6J2xpa2UnLHBhcmFtczp0aGlzLl9hdHRyfTt9LF9jcmVhdGVF ZGdlQ29tbWVudFdpZGdldDpmdW5jdGlvbihqLGspe2lmKCdzZW5kJyBpbiB0aGlz Ll9hdHRyJiYnd2lkZ2V0X3R5cGUnIGluIGomJmoud2lkZ2V0X3R5cGU9PSdzZW5k Jyl7dmFyIGw9dGhpcy5fZ2V0Q29tbW9uRWRnZUNvbW1lbnRXaWRnZXRPcHRzKGos ayk7cmV0dXJuIG5ldyBoKGwpO31lbHNlIHJldHVybiB0aGlzLnBhcmVudENhbGwo Il9jcmVhdGVFZGdlQ29tbWVudFdpZGdldCIsaixrKTt9LGdldElmcmFtZVRpdGxl OmZ1bmN0aW9uKCl7cmV0dXJuICdMaWtlIHRoaXMgY29udGVudCBvbiBGYWNlYm9v ay4nO319KTtlLmV4cG9ydHM9aTt9KTsKX19kKCJzZGsuWEZCTUwuTGl2ZVN0cmVh bSIsWyJzZGsuWEZCTUwuSWZyYW1lV2lkZ2V0Il0sZnVuY3Rpb24oYSxiLGMsZCxl LGYpe3ZhciBnPWIoJ3Nkay5YRkJNTC5JZnJhbWVXaWRnZXQnKSxoPWcuZXh0ZW5k KHtfdmlzaWJsZUFmdGVyOidsb2FkJyxzZXR1cEFuZFZhbGlkYXRlOmZ1bmN0aW9u KCl7dGhpcy5fYXR0cj17YXBwX2lkOnRoaXMuZ2V0QXR0cmlidXRlKCdldmVudC1h cHAtaWQnKSxocmVmOnRoaXMuZ2V0QXR0cmlidXRlKCdocmVmJyx3aW5kb3cubG9j YXRpb24uaHJlZiksaGVpZ2h0OnRoaXMuX2dldFB4QXR0cmlidXRlKCdoZWlnaHQn LDUwMCksaGlkZUZyaWVuZHNUYWI6dGhpcy5nZXRBdHRyaWJ1dGUoJ2hpZGUtZnJp ZW5kcy10YWInKSxyZWRlc2lnbmVkOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ3Jl ZGVzaWduZWQtc3RyZWFtJyksd2lkdGg6dGhpcy5fZ2V0UHhBdHRyaWJ1dGUoJ3dp ZHRoJyw0MDApLHhpZDp0aGlzLmdldEF0dHJpYnV0ZSgneGlkJywnZGVmYXVsdCcp LGFsd2F5c19wb3N0X3RvX2ZyaWVuZHM6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgn YWx3YXlzLXBvc3QtdG8tZnJpZW5kcycpLHZpYV91cmw6dGhpcy5nZXRBdHRyaWJ1 dGUoJ3ZpYV91cmwnKX07cmV0dXJuIHRydWU7fSxnZXRTaXplOmZ1bmN0aW9uKCl7 cmV0dXJuIHt3aWR0aDp0aGlzLl9hdHRyLndpZHRoLGhlaWdodDp0aGlzLl9hdHRy LmhlaWdodH07fSxnZXRVcmxCaXRzOmZ1bmN0aW9uKCl7dmFyIGk9dGhpcy5fYXR0 ci5yZWRlc2lnbmVkPydsaXZlX3N0cmVhbV9ib3gnOidsaXZlZmVlZCc7aWYodGhp cy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnbW9kZXJuJyxmYWxzZSkpaT0nbGl2ZV9zdHJl YW0nO3JldHVybiB7bmFtZTppLHBhcmFtczp0aGlzLl9hdHRyfTt9fSk7ZS5leHBv cnRzPWg7fSk7Cl9fZCgic2RrLlhGQk1MLkxvZ2luQnV0dG9uIixbInNkay5IZWxw ZXIiLCJJZnJhbWVQbHVnaW4iXSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9 Yignc2RrLkhlbHBlcicpLGg9YignSWZyYW1lUGx1Z2luJyksaT1oLmV4dGVuZCh7 Y29uc3RydWN0b3I6ZnVuY3Rpb24oaixrLGwsbSl7dGhpcy5wYXJlbnQoaixrLGws bSk7dmFyIG49aC5nZXRWYWwobSwnb25fbG9naW4nKTtpZihuKXRoaXMuc3Vic2Ny aWJlKCdsb2dpbi5zdGF0dXMnLGZ1bmN0aW9uKG8pe2cuaW52b2tlSGFuZGxlcihu LG51bGwsW29dKTt9KTt9LGdldFBhcmFtczpmdW5jdGlvbigpe3JldHVybiB7c2Nv cGU6J3N0cmluZycscGVybXM6J3N0cmluZycsc2l6ZTonc3RyaW5nJyxsb2dpbl90 ZXh0Oid0ZXh0JyxzaG93X2ZhY2VzOidib29sJyxtYXhfcm93czonc3RyaW5nJyxz aG93X2xvZ2luX2ZhY2U6J2Jvb2wnLHJlZ2lzdHJhdGlvbl91cmw6J3VybF9tYXli ZScsYXV0b19sb2dvdXRfbGluazonYm9vbCcsb25lX2NsaWNrOidib29sJ307fX0p O2UuZXhwb3J0cz1pO30pOwpfX2QoInNkay5YRkJNTC5OYW1lIixbImNvcHlQcm9w ZXJ0aWVzIiwic2RrLkRhdGEiLCJlc2NhcGVIVE1MIiwic2RrLkV2ZW50Iiwic2Rr LlhGQk1MLkVsZW1lbnQiLCJzZGsuSGVscGVyIiwiTG9nIiwic2RrLlJ1bnRpbWUi XSxmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YignY29weVByb3BlcnRpZXMn KSxoPWIoJ3Nkay5EYXRhJyksaT1iKCdlc2NhcGVIVE1MJyksaj1iKCdzZGsuRXZl bnQnKSxrPWIoJ3Nkay5YRkJNTC5FbGVtZW50JyksbD1iKCdzZGsuSGVscGVyJyks bT1iKCdMb2cnKSxuPWIoJ3Nkay5SdW50aW1lJyksbz1rLmV4dGVuZCh7cHJvY2Vz czpmdW5jdGlvbigpe2codGhpcyx7X3VpZDp0aGlzLmdldEF0dHJpYnV0ZSgndWlk JyksX2ZpcnN0bmFtZW9ubHk6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnZmlyc3Qt bmFtZS1vbmx5JyksX2xhc3RuYW1lb25seTp0aGlzLl9nZXRCb29sQXR0cmlidXRl KCdsYXN0LW5hbWUtb25seScpLF9wb3NzZXNzaXZlOnRoaXMuX2dldEJvb2xBdHRy aWJ1dGUoJ3Bvc3Nlc3NpdmUnKSxfcmVmbGV4aXZlOnRoaXMuX2dldEJvb2xBdHRy aWJ1dGUoJ3JlZmxleGl2ZScpLF9vYmplY3RpdmU6dGhpcy5fZ2V0Qm9vbEF0dHJp YnV0ZSgnb2JqZWN0aXZlJyksX2xpbmtlZDp0aGlzLl9nZXRCb29sQXR0cmlidXRl KCdsaW5rZWQnLHRydWUpLF9zdWJqZWN0SWQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ3N1 YmplY3QtaWQnKX0pO2lmKCF0aGlzLl91aWQpe20uZXJyb3IoJyJ1aWQiIGlzIGEg cmVxdWlyZWQgYXR0cmlidXRlIGZvciA8ZmI6bmFtZT4nKTt0aGlzLmZpcmUoJ3Jl bmRlcicpO3JldHVybjt9dmFyIHA9W107aWYodGhpcy5fZmlyc3RuYW1lb25seSl7 cC5wdXNoKCdmaXJzdF9uYW1lJyk7fWVsc2UgaWYodGhpcy5fbGFzdG5hbWVvbmx5 KXtwLnB1c2goJ2xhc3RfbmFtZScpO31lbHNlIHAucHVzaCgnbmFtZScpO2lmKHRo aXMuX3N1YmplY3RJZCl7cC5wdXNoKCdzZXgnKTtpZih0aGlzLl9zdWJqZWN0SWQ9 PW4uZ2V0VXNlcklEKCkpdGhpcy5fcmVmbGV4aXZlPXRydWU7fXZhciBxO2oubW9u aXRvcignYXV0aC5zdGF0dXNDaGFuZ2UnLEVTNShmdW5jdGlvbigpe2lmKCF0aGlz LmlzVmFsaWQoKSl7dGhpcy5maXJlKCdyZW5kZXInKTtyZXR1cm4gdHJ1ZTt9aWYo IXRoaXMuX3VpZHx8dGhpcy5fdWlkPT0nbG9nZ2VkaW51c2VyJyl0aGlzLl91aWQ9 bi5nZXRVc2VySUQoKTtpZighdGhpcy5fdWlkKXJldHVybjtpZihsLmlzVXNlcih0 aGlzLl91aWQpKXtxPWguX3NlbGVjdEJ5SW5kZXgocCwndXNlcicsJ3VpZCcsdGhp cy5fdWlkKTt9ZWxzZSBxPWguX3NlbGVjdEJ5SW5kZXgoWyduYW1lJywnaWQnXSwn cHJvZmlsZScsJ2lkJyx0aGlzLl91aWQpO3Eud2FpdChFUzUoZnVuY3Rpb24ocil7 aWYodGhpcy5fc3ViamVjdElkPT10aGlzLl91aWQpe3RoaXMuX3JlbmRlclByb25v dW4oclswXSk7fWVsc2UgdGhpcy5fcmVuZGVyT3RoZXIoclswXSk7dGhpcy5maXJl KCdyZW5kZXInKTt9LCdiaW5kJyx0cnVlLHRoaXMpKTt9LCdiaW5kJyx0cnVlLHRo aXMpKTt9LF9yZW5kZXJQcm9ub3VuOmZ1bmN0aW9uKHApe3ZhciBxPScnLHI9dGhp cy5fb2JqZWN0aXZlO2lmKHRoaXMuX3N1YmplY3RJZCl7cj10cnVlO2lmKHRoaXMu X3N1YmplY3RJZD09PXRoaXMuX3VpZCl0aGlzLl9yZWZsZXhpdmU9dHJ1ZTt9aWYo dGhpcy5fdWlkPT1uLmdldFVzZXJJRCgpJiZ0aGlzLl9nZXRCb29sQXR0cmlidXRl KCd1c2UteW91Jyx0cnVlKSl7aWYodGhpcy5fcG9zc2Vzc2l2ZSl7aWYodGhpcy5f cmVmbGV4aXZlKXtxPSd5b3VyIG93bic7fWVsc2UgcT0neW91cic7fWVsc2UgaWYo dGhpcy5fcmVmbGV4aXZlKXtxPSd5b3Vyc2VsZic7fWVsc2UgcT0neW91Jzt9ZWxz ZSBzd2l0Y2gocC5zZXgpe2Nhc2UgJ21hbGUnOmlmKHRoaXMuX3Bvc3Nlc3NpdmUp e3E9dGhpcy5fcmVmbGV4aXZlPydoaXMgb3duJzonaGlzJzt9ZWxzZSBpZih0aGlz Ll9yZWZsZXhpdmUpe3E9J2hpbXNlbGYnO31lbHNlIGlmKHIpe3E9J2hpbSc7fWVs c2UgcT0naGUnO2JyZWFrO2Nhc2UgJ2ZlbWFsZSc6aWYodGhpcy5fcG9zc2Vzc2l2 ZSl7cT10aGlzLl9yZWZsZXhpdmU/J2hlciBvd24nOidoZXInO31lbHNlIGlmKHRo aXMuX3JlZmxleGl2ZSl7cT0naGVyc2VsZic7fWVsc2UgaWYocil7cT0naGVyJzt9 ZWxzZSBxPSdzaGUnO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5fZ2V0Qm9vbEF0dHJp YnV0ZSgndXNlLXRoZXknLHRydWUpKXtpZih0aGlzLl9wb3NzZXNzaXZlKXtpZih0 aGlzLl9yZWZsZXhpdmUpe3E9J3RoZWlyIG93bic7fWVsc2UgcT0ndGhlaXInO31l bHNlIGlmKHRoaXMuX3JlZmxleGl2ZSl7cT0ndGhlbXNlbHZlcyc7fWVsc2UgaWYo cil7cT0ndGhlbSc7fWVsc2UgcT0ndGhleSc7fWVsc2UgaWYodGhpcy5fcG9zc2Vz c2l2ZSl7aWYodGhpcy5fcmVmbGV4aXZlKXtxPSdoaXMvaGVyIG93bic7fWVsc2Ug cT0naGlzL2hlcic7fWVsc2UgaWYodGhpcy5fcmVmbGV4aXZlKXtxPSdoaW1zZWxm L2hlcnNlbGYnO31lbHNlIGlmKHIpe3E9J2hpbS9oZXInO31lbHNlIHE9J2hlL3No ZSc7YnJlYWs7fWlmKHRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ2NhcGl0YWxpemUn LGZhbHNlKSlxPWwudXBwZXJDYXNlRmlyc3RDaGFyKHEpO3RoaXMuZG9tLmlubmVy SFRNTD1xO30sX3JlbmRlck90aGVyOmZ1bmN0aW9uKHApe3ZhciBxPScnLHI9Jyc7 aWYodGhpcy5fdWlkPT1uLmdldFVzZXJJRCgpJiZ0aGlzLl9nZXRCb29sQXR0cmli dXRlKCd1c2UteW91Jyx0cnVlKSl7aWYodGhpcy5fcmVmbGV4aXZlKXtpZih0aGlz Ll9wb3NzZXNzaXZlKXtxPSd5b3VyIG93bic7fWVsc2UgcT0neW91cnNlbGYnO31l bHNlIGlmKHRoaXMuX3Bvc3Nlc3NpdmUpe3E9J3lvdXInO31lbHNlIHE9J3lvdSc7 fWVsc2UgaWYocCl7aWYobnVsbD09PXAuZmlyc3RfbmFtZSlwLmZpcnN0X25hbWU9 Jyc7aWYobnVsbD09PXAubGFzdF9uYW1lKXAubGFzdF9uYW1lPScnO2lmKHRoaXMu X2ZpcnN0bmFtZW9ubHkmJnAuZmlyc3RfbmFtZSE9PXVuZGVmaW5lZCl7cT1pKHAu Zmlyc3RfbmFtZSk7fWVsc2UgaWYodGhpcy5fbGFzdG5hbWVvbmx5JiZwLmxhc3Rf bmFtZSE9PXVuZGVmaW5lZClxPWkocC5sYXN0X25hbWUpO2lmKCFxKXE9aShwLm5h bWUpO2lmKHEhPT0nJyYmdGhpcy5fcG9zc2Vzc2l2ZSlxKz0nXCdzJzt9aWYoIXEp cT1pKHRoaXMuZ2V0QXR0cmlidXRlKCdpZi1jYW50LXNlZScsJ0ZhY2Vib29rIFVz ZXInKSk7aWYocSl7aWYodGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnY2FwaXRhbGl6 ZScsZmFsc2UpKXE9bC51cHBlckNhc2VGaXJzdENoYXIocSk7aWYocCYmdGhpcy5f bGlua2VkKXtyPWwuZ2V0UHJvZmlsZUxpbmsocCxxLHRoaXMuZ2V0QXR0cmlidXRl KCdocmVmJyxudWxsKSk7fWVsc2Ugcj1xO310aGlzLmRvbS5pbm5lckhUTUw9cjt9 fSk7ZS5leHBvcnRzPW87fSk7Cl9fZCgic2RrLlhGQk1MLlByb2ZpbGVQaWMiLFsi c2RrLkRhdGEiLCJzZGsuRE9NIiwiZXNjYXBlSFRNTCIsInNkay5YRkJNTC5FbGVt ZW50Iiwic2RrLkV2ZW50IiwiZm9ybWF0Iiwic2RrLkhlbHBlciIsInNkay5SdW50 aW1lIiwiVXJsTWFwIiwiUHJvZmlsZVBpY0NvbmZpZyJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdzZGsuRGF0YScpLGg9Yignc2RrLkRPTScpLGk9Yign ZXNjYXBlSFRNTCcpLGo9YygnUHJvZmlsZVBpY0NvbmZpZycpLGs9Yignc2RrLlhG Qk1MLkVsZW1lbnQnKSxsPWIoJ3Nkay5FdmVudCcpLG09YignZm9ybWF0Jyksbj1i KCdzZGsuSGVscGVyJyksbz1iKCdzZGsuUnVudGltZScpLHA9YignVXJsTWFwJyks cT17bjoncGljX2JpZycsbm9ybWFsOidwaWNfYmlnJyxxOidwaWNfc3F1YXJlJyxz OidwaWMnLHNtYWxsOidwaWMnLHNxdWFyZToncGljX3NxdWFyZScsdDoncGljX3Nt YWxsJyx0aHVtYjoncGljX3NtYWxsJ30scj1rLmV4dGVuZCh7cHJvY2VzczpmdW5j dGlvbigpe3ZhciBzPXRoaXMuZ2V0QXR0cmlidXRlKCdzaXplJywndGh1bWInKSx0 PXFbc10sdT10aGlzLl9nZXRQeEF0dHJpYnV0ZSgnd2lkdGgnKSx2PXRoaXMuX2dl dFB4QXR0cmlidXRlKCdoZWlnaHQnKSx3PXRoaXMuZG9tLnN0eWxlLHg9dGhpcy5n ZXRBdHRyaWJ1dGUoJ3VpZCcpO2lmKHRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ2Zh Y2Vib29rLWxvZ28nKSl0Kz0nX3dpdGhfbG9nbyc7aWYodSl7dT11KydweCc7dy53 aWR0aD11O31pZih2KXt2PXYrJ3B4Jzt3LmhlaWdodD12O312YXIgeT1FUzUoZnVu Y3Rpb24oeil7dmFyIGFhPXo/elswXTpudWxsLGJhPWFhP2FhW3RdOm51bGw7aWYo IWJhKWJhPXAucmVzb2x2ZSgnZmJjZG4nKSsnLycrai5kZWZQaWNNYXBbdF07dmFy IGNhPSgodT8nd2lkdGg6Jyt1Kyc7JzonJykrKHY/J2hlaWdodDonK3UrJzsnOicn KSksZGE9bSgnPGltZyBzcmM9InswfSIgYWx0PSJ7MX0iIHRpdGxlPSJ7MX0iIHN0 eWxlPSJ7Mn0iIGNsYXNzPSJ7M30iIC8+JyxiYSxhYT9pKGFhLm5hbWUpOicnLGNh LHRoaXMuZG9tLmNsYXNzTmFtZSk7aWYodGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgn bGlua2VkJyx0cnVlKSlkYT1uLmdldFByb2ZpbGVMaW5rKGFhLGRhLHRoaXMuZ2V0 QXR0cmlidXRlKCdocmVmJyxudWxsKSk7dGhpcy5kb20uaW5uZXJIVE1MPWRhO2gu YWRkQ3NzKHRoaXMuZG9tLCdmYl9wcm9maWxlX3BpY19yZW5kZXJlZCcpO3RoaXMu ZmlyZSgncmVuZGVyJyk7fSwnYmluZCcsdHJ1ZSx0aGlzKTtsLm1vbml0b3IoJ2F1 dGguc3RhdHVzQ2hhbmdlJyxFUzUoZnVuY3Rpb24oKXtpZighdGhpcy5pc1ZhbGlk KCkpe3RoaXMuZmlyZSgncmVuZGVyJyk7cmV0dXJuIHRydWU7fWlmKHRoaXMuZ2V0 QXR0cmlidXRlKCd1aWQnLG51bGwpPT0nbG9nZ2VkaW51c2VyJyl4PW8uZ2V0VXNl cklEKCk7aWYoby5nZXRMb2dpblN0YXR1cygpIT09J3Vua25vd24nJiZ4KXtnLl9z ZWxlY3RCeUluZGV4KFsnbmFtZScsdF0sbi5pc1VzZXIoeCk/J3VzZXInOidwcm9m aWxlJyxuLmlzVXNlcih4KT8ndWlkJzonaWQnLHgpLndhaXQoeSk7fWVsc2UgeSgp O30sJ2JpbmQnLHRydWUsdGhpcykpO319KTtlLmV4cG9ydHM9cjt9KTsKX19kKCJz ZGsuWEZCTUwuUmVjb21tZW5kYXRpb25zQmFyIixbInNkay5BcmJpdGVyIiwiRE9N RXZlbnRMaXN0ZW5lciIsInNkay5FdmVudCIsInNkay5YRkJNTC5JZnJhbWVXaWRn ZXQiLCJyZXNvbHZlVVJJIiwic2RrLlJ1bnRpbWUiXSxmdW5jdGlvbihhLGIsYyxk LGUsZil7dmFyIGc9Yignc2RrLkFyYml0ZXInKSxoPWIoJ0RPTUV2ZW50TGlzdGVu ZXInKSxpPWIoJ3Nkay5FdmVudCcpLGo9Yignc2RrLlhGQk1MLklmcmFtZVdpZGdl dCcpLGs9YigncmVzb2x2ZVVSSScpLGw9Yignc2RrLlJ1bnRpbWUnKSxtPWouZXh0 ZW5kKHtnZXRVcmxCaXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHtuYW1lOidyZWNvbW1l bmRhdGlvbnNfYmFyJyxwYXJhbXM6dGhpcy5fYXR0cn07fSxzZXR1cEFuZFZhbGlk YXRlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih3LHgpe3ZhciB5PTAsej1udWxsO2Z1 bmN0aW9uIGFhKCl7eCgpO3o9bnVsbDt5PUVTNSgnRGF0ZScsJ25vdycsZmFsc2Up O31yZXR1cm4gZnVuY3Rpb24oKXtpZigheil7dmFyIGJhPUVTNSgnRGF0ZScsJ25v dycsZmFsc2UpO2lmKGJhLXk8dyl7ej1zZXRUaW1lb3V0KGFhLHctKGJhLXkpKTt9 ZWxzZSBhYSgpO31yZXR1cm4gdHJ1ZTt9O31mdW5jdGlvbiBvKHcpe2lmKHcubWF0 Y2goL15cZCsoPzpcLlxkKyk/JSQvKSl7dmFyIHg9TWF0aC5taW4oTWF0aC5tYXgo cGFyc2VJbnQodywxMCksMCksMTAwKTt3PXgvMTAwO31lbHNlIGlmKHchPSdtYW51 YWwnJiZ3IT0nb252aXNpYmxlJyl3PSdvbnZpc2libGUnO3JldHVybiB3O31mdW5j dGlvbiBwKHcpe3JldHVybiBNYXRoLm1heChwYXJzZUludCh3LDEwKXx8MzAsMTAp O31mdW5jdGlvbiBxKHcpe2lmKHc9PSdsZWZ0J3x8dz09J3JpZ2h0JylyZXR1cm4g dztyZXR1cm4gbC5nZXRSdGwoKT8nbGVmdCc6J3JpZ2h0Jzt9dGhpcy5fYXR0cj17 Y2hhbm5lbDp0aGlzLmdldENoYW5uZWxVcmwoKSxhcGlfa2V5OmwuZ2V0Q2xpZW50 SUQoKSxmb250OnRoaXMuZ2V0QXR0cmlidXRlKCdmb250JyksY29sb3JzY2hlbWU6 dGhpcy5nZXRBdHRyaWJ1dGUoJ2NvbG9yc2NoZW1lJyksaHJlZjprKHRoaXMuZ2V0 QXR0cmlidXRlKCdocmVmJykpLHNpZGU6cSh0aGlzLmdldEF0dHJpYnV0ZSgnc2lk ZScpKSxzaXRlOnRoaXMuZ2V0QXR0cmlidXRlKCdzaXRlJyksYWN0aW9uOnRoaXMu Z2V0QXR0cmlidXRlKCdhY3Rpb24nKSxyZWY6dGhpcy5nZXRBdHRyaWJ1dGUoJ3Jl ZicpLG1heF9hZ2U6dGhpcy5nZXRBdHRyaWJ1dGUoJ21heF9hZ2UnKSx0cmlnZ2Vy Om8odGhpcy5nZXRBdHRyaWJ1dGUoJ3RyaWdnZXInLCcnKSkscmVhZF90aW1lOnAo dGhpcy5nZXRBdHRyaWJ1dGUoJ3JlYWRfdGltZScpKSxudW1fcmVjb21tZW5kYXRp b25zOnBhcnNlSW50KHRoaXMuZ2V0QXR0cmlidXRlKCdudW1fcmVjb21tZW5kYXRp b25zJyksMTApfHwyfTt0aGlzLl9zaG93TG9hZGVyPWZhbHNlO3RoaXMuc3Vic2Ny aWJlKCdpZnJhbWUub25sb2FkJyxFUzUoZnVuY3Rpb24oKXt2YXIgdz10aGlzLmRv bS5jaGlsZHJlblswXTt3LmNsYXNzTmFtZT0nZmJwbHVnaW5yZWNvbW1lbmRhdGlv bnNiYXInK3RoaXMuX2F0dHIuc2lkZTt9LCdiaW5kJyx0cnVlLHRoaXMpKTt2YXIg cj1FUzUoZnVuY3Rpb24oKXtoLnJlbW92ZSh3aW5kb3csJ3Njcm9sbCcscik7aC5y ZW1vdmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdjbGljaycscik7aC5yZW1v dmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdtb3VzZW1vdmUnLHIpO3NldFRp bWVvdXQoRVM1KHRoaXMuYXJiaXRlckluZm9ybSwnYmluZCcsdHJ1ZSx0aGlzLCdw bGF0Zm9ybS9wbHVnaW5zL3JlY29tbWVuZGF0aW9uc19iYXIvYWN0aW9uJyxudWxs LGcuQkVIQVZJT1JfU1RBVEUpLHRoaXMuX2F0dHIucmVhZF90aW1lKjEwMDApO3Jl dHVybiB0cnVlO30sJ2JpbmQnLHRydWUsdGhpcyk7aC5hZGQod2luZG93LCdzY3Jv bGwnLHIpO2guYWRkKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwnY2xpY2snLHIp O2guYWRkKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwnbW91c2Vtb3ZlJyxyKTtp Zih0aGlzLl9hdHRyLnRyaWdnZXI9PSJtYW51YWwiKXt2YXIgcz1FUzUoZnVuY3Rp b24odyl7aWYodz09dGhpcy5fYXR0ci5ocmVmKXtpLnVuc3Vic2NyaWJlKCd4ZmJt bC5yZWNvbW1lbmRhdGlvbnNiYXIucmVhZCcscyk7dGhpcy5hcmJpdGVySW5mb3Jt KCdwbGF0Zm9ybS9wbHVnaW5zL3JlY29tbWVuZGF0aW9uc19iYXIvdHJpZ2dlcics bnVsbCxnLkJFSEFWSU9SX1NUQVRFKTt9cmV0dXJuIHRydWU7fSwnYmluZCcsdHJ1 ZSx0aGlzKTtpLnN1YnNjcmliZSgneGZibWwucmVjb21tZW5kYXRpb25zYmFyLnJl YWQnLHMpO31lbHNle3ZhciB0PW4oNTAwLEVTNShmdW5jdGlvbigpe2lmKHRoaXMu Y2FsY3VsYXRlVmlzaWJpbGl0eSgpKXtoLnJlbW92ZSh3aW5kb3csJ3Njcm9sbCcs dCk7aC5yZW1vdmUod2luZG93LCdyZXNpemUnLHQpO3RoaXMuYXJiaXRlckluZm9y bSgncGxhdGZvcm0vcGx1Z2lucy9yZWNvbW1lbmRhdGlvbnNfYmFyL3RyaWdnZXIn LG51bGwsZy5CRUhBVklPUl9TVEFURSk7fXJldHVybiB0cnVlO30sJ2JpbmQnLHRy dWUsdGhpcykpO2guYWRkKHdpbmRvdywnc2Nyb2xsJyx0KTtoLmFkZCh3aW5kb3cs J3Jlc2l6ZScsdCk7dCgpO310aGlzLnZpc2libGU9ZmFsc2U7dmFyIHU9big1MDAs RVM1KGZ1bmN0aW9uKCl7aWYoIXRoaXMudmlzaWJsZSYmdGhpcy5jYWxjdWxhdGVW aXNpYmlsaXR5KCkpe3RoaXMudmlzaWJsZT10cnVlO3RoaXMuYXJiaXRlckluZm9y bSgncGxhdGZvcm0vcGx1Z2lucy9yZWNvbW1lbmRhdGlvbnNfYmFyL3Zpc2libGUn KTt9ZWxzZSBpZih0aGlzLnZpc2libGUmJiF0aGlzLmNhbGN1bGF0ZVZpc2liaWxp dHkoKSl7dGhpcy52aXNpYmxlPWZhbHNlO3RoaXMuYXJiaXRlckluZm9ybSgncGxh dGZvcm0vcGx1Z2lucy9yZWNvbW1lbmRhdGlvbnNfYmFyL2ludmlzaWJsZScpO31y ZXR1cm4gdHJ1ZTt9LCdiaW5kJyx0cnVlLHRoaXMpKTtoLmFkZCh3aW5kb3csJ3Nj cm9sbCcsdSk7aC5hZGQod2luZG93LCdyZXNpemUnLHUpO3UoKTt0aGlzLmZvY3Vz ZWQ9dHJ1ZTt2YXIgdj1FUzUoZnVuY3Rpb24oKXt0aGlzLmZvY3VzZWQ9IXRoaXMu Zm9jdXNlZDtyZXR1cm4gdHJ1ZTt9LCdiaW5kJyx0cnVlLHRoaXMpO2guYWRkKHdp bmRvdywnYmx1cicsdik7aC5hZGQod2luZG93LCdmb2N1cycsdik7dGhpcy5yZXNp emVfcnVubmluZz1mYWxzZTt0aGlzLmFuaW1hdGU9ZmFsc2U7dGhpcy5zdWJzY3Jp YmUoJ3hkLnNpZ25hbF9hbmltYXRpb24nLEVTNShmdW5jdGlvbigpe3RoaXMuYW5p bWF0ZT10cnVlO30sJ2JpbmQnLHRydWUsdGhpcykpO3JldHVybiB0cnVlO30sZ2V0 U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7aGVpZ2h0OjI1LHdpZHRoOih0aGlzLl9h dHRyLmFjdGlvbj09J3JlY29tbWVuZCc/MTQwOjk2KX07fSxjYWxjdWxhdGVWaXNp YmlsaXR5OmZ1bmN0aW9uKCl7dmFyIG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmNsaWVudEhlaWdodDtpZighdGhpcy5mb2N1c2VkJiZ3aW5kb3cuY29uc29sZSYm d2luZG93LmNvbnNvbGUuZmlyZWJ1ZylyZXR1cm4gdGhpcy52aXNpYmxlO3N3aXRj aCh0aGlzLl9hdHRyLnRyaWdnZXIpe2Nhc2UgIm1hbnVhbCI6cmV0dXJuIGZhbHNl O2Nhc2UgIm9udmlzaWJsZSI6dmFyIG89dGhpcy5kb20uZ2V0Qm91bmRpbmdDbGll bnRSZWN0KCkudG9wO3JldHVybiBvPD1uO2RlZmF1bHQ6dmFyIHA9d2luZG93LnBh Z2VZT2Zmc2V0fHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCxxPWRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7cmV0dXJuIChwK24pL3E+PXRoaXMu X2F0dHIudHJpZ2dlcjt9fX0pO2UuZXhwb3J0cz1tO30pOwpfX2QoInNkay5YRkJN TC5SZWdpc3RyYXRpb24iLFsic2RrLkF1dGgiLCJzZGsuSGVscGVyIiwic2RrLlhG Qk1MLklmcmFtZVdpZGdldCIsInNkay5SdW50aW1lIiwiVXJsTWFwIl0sZnVuY3Rp b24oYSxiLGMsZCxlLGYpe3ZhciBnPWIoJ3Nkay5BdXRoJyksaD1iKCdzZGsuSGVs cGVyJyksaT1iKCdzZGsuWEZCTUwuSWZyYW1lV2lkZ2V0Jyksaj1iKCdzZGsuUnVu dGltZScpLGs9YignVXJsTWFwJyksbD1pLmV4dGVuZCh7X3Zpc2libGVBZnRlcjon aW1tZWRpYXRlJyxfYmFzZUhlaWdodDoxNjcsX2ZpZWxkSGVpZ2h0OjI4LF9za2lu bnlXaWR0aDo1MjAsX3NraW5ueUJhc2VIZWlnaHQ6MTczLF9za2lubnlGaWVsZEhl aWdodDo1MixzZXR1cEFuZFZhbGlkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fYXR0cj17 YWN0aW9uOnRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKSxib3JkZXJfY29sb3I6 dGhpcy5nZXRBdHRyaWJ1dGUoJ2JvcmRlci1jb2xvcicpLGNoYW5uZWxfdXJsOnRo aXMuZ2V0Q2hhbm5lbFVybCgpLGNsaWVudF9pZDpqLmdldENsaWVudElEKCksZmJf b25seTp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdmYi1vbmx5JyxmYWxzZSksZmJf cmVnaXN0ZXI6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnZmItcmVnaXN0ZXInLGZh bHNlKSxmaWVsZHM6dGhpcy5nZXRBdHRyaWJ1dGUoJ2ZpZWxkcycpLGhlaWdodDp0 aGlzLl9nZXRQeEF0dHJpYnV0ZSgnaGVpZ2h0JykscmVkaXJlY3RfdXJpOnRoaXMu Z2V0QXR0cmlidXRlKCdyZWRpcmVjdC11cmknLHdpbmRvdy5sb2NhdGlvbi5ocmVm KSxub19mb290ZXI6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnbm8tZm9vdGVyJyks bm9faGVhZGVyOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ25vLWhlYWRlcicpLG9u dmFsaWRhdGU6dGhpcy5nZXRBdHRyaWJ1dGUoJ29udmFsaWRhdGUnKSx3aWR0aDp0 aGlzLl9nZXRQeEF0dHJpYnV0ZSgnd2lkdGgnLDYwMCksdGFyZ2V0OnRoaXMuZ2V0 QXR0cmlidXRlKCd0YXJnZXQnKX07aWYodGhpcy5fYXR0ci5vbnZhbGlkYXRlKXRo aXMuc3Vic2NyaWJlKCd4ZC52YWxpZGF0ZScsRVM1KGZ1bmN0aW9uKG0pe3ZhciBu PUVTNSgnSlNPTicsJ3BhcnNlJyxmYWxzZSxtLnZhbHVlKSxvPUVTNShmdW5jdGlv bihxKXt0aGlzLmFyYml0ZXJJbmZvcm0oJ1JlZ2lzdHJhdGlvbi5WYWxpZGF0aW9u Jyx7ZXJyb3JzOnEsaWQ6bS5pZH0pO30sJ2JpbmQnLHRydWUsdGhpcykscD1oLmV4 ZWN1dGVGdW5jdGlvbkJ5TmFtZSh0aGlzLl9hdHRyLm9udmFsaWRhdGUsbixvKTtp ZihwKW8ocCk7fSwnYmluZCcsdHJ1ZSx0aGlzKSk7dGhpcy5zdWJzY3JpYmUoJ3hk LmF1dGhMb2dpbicsRVM1KHRoaXMuX29uQXV0aExvZ2luLCdiaW5kJyx0cnVlLHRo aXMpKTt0aGlzLnN1YnNjcmliZSgneGQuYXV0aExvZ291dCcsRVM1KHRoaXMuX29u QXV0aExvZ291dCwnYmluZCcsdHJ1ZSx0aGlzKSk7cmV0dXJuIHRydWU7fSxnZXRT aXplOmZ1bmN0aW9uKCl7cmV0dXJuIHt3aWR0aDp0aGlzLl9hdHRyLndpZHRoLGhl aWdodDp0aGlzLl9nZXRIZWlnaHQoKX07fSxfZ2V0SGVpZ2h0OmZ1bmN0aW9uKCl7 aWYodGhpcy5fYXR0ci5oZWlnaHQpcmV0dXJuIHRoaXMuX2F0dHIuaGVpZ2h0O3Zh ciBtO2lmKCF0aGlzLl9hdHRyLmZpZWxkcyl7bT1bJ25hbWUnXTt9ZWxzZSB0cnl7 bT1FUzUoJ0pTT04nLCdwYXJzZScsZmFsc2UsdGhpcy5fYXR0ci5maWVsZHMpO31j YXRjaChuKXttPXRoaXMuX2F0dHIuZmllbGRzLnNwbGl0KC8sLyk7fWlmKHRoaXMu X2F0dHIud2lkdGg8dGhpcy5fc2tpbm55V2lkdGgpe3JldHVybiB0aGlzLl9za2lu bnlCYXNlSGVpZ2h0K20ubGVuZ3RoKnRoaXMuX3NraW5ueUZpZWxkSGVpZ2h0O31l bHNlIHJldHVybiB0aGlzLl9iYXNlSGVpZ2h0K20ubGVuZ3RoKnRoaXMuX2ZpZWxk SGVpZ2h0O30sZ2V0VXJsQml0czpmdW5jdGlvbigpe3JldHVybiB7bmFtZToncmVn aXN0cmF0aW9uJyxwYXJhbXM6dGhpcy5fYXR0cn07fSxnZXREZWZhdWx0V2ViRG9t YWluOmZ1bmN0aW9uKCl7cmV0dXJuIGsucmVzb2x2ZSgnd3d3Jyx0cnVlKTt9LF9v bkF1dGhMb2dpbjpmdW5jdGlvbigpe2lmKCFnLmdldEF1dGhSZXNwb25zZSgpKWcu Z2V0TG9naW5TdGF0dXMoKTtoLmZpcmVFdmVudCgnYXV0aC5sb2dpbicsdGhpcyk7 fSxfb25BdXRoTG9nb3V0OmZ1bmN0aW9uKCl7aWYoIWcuZ2V0QXV0aFJlc3BvbnNl KCkpZy5nZXRMb2dpblN0YXR1cygpO2guZmlyZUV2ZW50KCdhdXRoLmxvZ291dCcs dGhpcyk7fX0pO2UuZXhwb3J0cz1sO30pOwpfX2QoInNkay5YRkJNTC5TZW5kIixb InNkay5ET00iLCJzZGsuWEZCTUwuRWRnZVdpZGdldCIsInNkay5SdW50aW1lIiwi c2RrLlhGQk1MLlNlbmRCdXR0b25Gb3JtV2lkZ2V0Il0sZnVuY3Rpb24oYSxiLGMs ZCxlLGYpe3ZhciBnPWIoJ3Nkay5ET00nKSxoPWIoJ3Nkay5YRkJNTC5FZGdlV2lk Z2V0JyksaT1iKCdzZGsuUnVudGltZScpLGo9Yignc2RrLlhGQk1MLlNlbmRCdXR0 b25Gb3JtV2lkZ2V0Jyksaz1oLmV4dGVuZCh7c2V0dXBBbmRWYWxpZGF0ZTpmdW5j dGlvbigpe2cuYWRkQ3NzKHRoaXMuZG9tLCdmYl9lZGdlX3dpZGdldF93aXRoX2Nv bW1lbnQnKTt0aGlzLl9hdHRyPXtjaGFubmVsOnRoaXMuZ2V0Q2hhbm5lbFVybCgp LGFwaV9rZXk6aS5nZXRDbGllbnRJRCgpLGZvbnQ6dGhpcy5nZXRBdHRyaWJ1dGUo J2ZvbnQnKSxjb2xvcnNjaGVtZTp0aGlzLmdldEF0dHJpYnV0ZSgnY29sb3JzY2hl bWUnLCdsaWdodCcpLGhyZWY6dGhpcy5nZXRBdHRyaWJ1dGUoJ2hyZWYnLHdpbmRv dy5sb2NhdGlvbi5ocmVmKSxyZWY6dGhpcy5nZXRBdHRyaWJ1dGUoJ3JlZicpLGV4 dGVuZGVkX3NvY2lhbF9jb250ZXh0OnRoaXMuZ2V0QXR0cmlidXRlKCdleHRlbmRl ZF9zb2NpYWxfY29udGV4dCcsZmFsc2UpfTt0aGlzLl9yb290UGFkZGluZz17bGVm dDpwYXJzZUZsb2F0KGcuZ2V0U3R5bGUodGhpcy5kb20sJ3BhZGRpbmdMZWZ0Jykp LHRvcDpwYXJzZUZsb2F0KGcuZ2V0U3R5bGUodGhpcy5kb20sJ3BhZGRpbmdUb3An KSl9O3JldHVybiB0cnVlO30sZ2V0VXJsQml0czpmdW5jdGlvbigpe3JldHVybiB7 bmFtZTonc2VuZCcscGFyYW1zOnRoaXMuX2F0dHJ9O30sX2NyZWF0ZUVkZ2VDb21t ZW50V2lkZ2V0OmZ1bmN0aW9uKGwsbSl7dmFyIG49dGhpcy5fZ2V0Q29tbW9uRWRn ZUNvbW1lbnRXaWRnZXRPcHRzKGwsbSk7cmV0dXJuIG5ldyBqKG4pO30sZ2V0U2l6 ZTpmdW5jdGlvbigpe3JldHVybiB7d2lkdGg6ODAsaGVpZ2h0OjI1fTt9fSk7ZS5l eHBvcnRzPWs7fSk7Cl9fZCgic2RrLlhGQk1MLlNvY2lhbENvbnRleHQiLFsic2Rr LkV2ZW50Iiwic2RrLlhGQk1MLklmcmFtZVdpZGdldCJdLGZ1bmN0aW9uKGEsYixj LGQsZSxmKXt2YXIgZz1iKCdzZGsuRXZlbnQnKSxoPWIoJ3Nkay5YRkJNTC5JZnJh bWVXaWRnZXQnKSxpPWguZXh0ZW5kKHtzZXR1cEFuZFZhbGlkYXRlOmZ1bmN0aW9u KCl7dmFyIGo9dGhpcy5nZXRBdHRyaWJ1dGUoJ3NpemUnLCdzbWFsbCcpO3RoaXMu X2F0dHI9e2NoYW5uZWw6dGhpcy5nZXRDaGFubmVsVXJsKCksd2lkdGg6dGhpcy5f Z2V0UHhBdHRyaWJ1dGUoJ3dpZHRoJyw0MDApLGhlaWdodDp0aGlzLl9nZXRQeEF0 dHJpYnV0ZSgnaGVpZ2h0JywxMDApLHJlZjp0aGlzLmdldEF0dHJpYnV0ZSgncmVm Jyksc2l6ZTp0aGlzLmdldEF0dHJpYnV0ZSgnc2l6ZScpLGtleXdvcmRzOnRoaXMu Z2V0QXR0cmlidXRlKCdrZXl3b3JkcycpLHVybHM6dGhpcy5nZXRBdHRyaWJ1dGUo J3VybHMnKSxvYmplY3RfaWQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ29iamVjdF9pZCcp fTt0aGlzLnN1YnNjcmliZSgneGQuc29jaWFsX2NvbnRleHRfc3RhdHMnLEVTNSh0 aGlzLl9idWJibGVTb2NpYWxDb250ZXh0U3RhdHMsJ2JpbmQnLHRydWUsdGhpcykp O3JldHVybiB0cnVlO30sX2J1YmJsZVNvY2lhbENvbnRleHRTdGF0czpmdW5jdGlv bihqKXt2YXIgaz17cGx1Z2luSUQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ3BsdWdpbi1p ZCcpLHNvY2lhbENvbnRleHRQYWdlSURzOkVTNSgnSlNPTicsJ3BhcnNlJyxmYWxz ZSxqLnNvY2lhbF9jb250ZXh0X3BhZ2VfaWRzKX07Zy5maXJlKCd4ZmJtbC5zb2Np YWxfY29udGV4dF9zdGF0cycsayk7fSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJu IHt3aWR0aDp0aGlzLl9hdHRyLndpZHRoLGhlaWdodDp0aGlzLl9hdHRyLmhlaWdo dH07fSxnZXRVcmxCaXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHtuYW1lOidzb2NpYWxf Y29udGV4dCcscGFyYW1zOnRoaXMuX2F0dHJ9O319KTtlLmV4cG9ydHM9aTt9KTsK X19kKCJsZWdhY3k6ZmIueGZibWwiLFsiQXNzZXJ0Iiwic2RrLmRvbVJlYWR5Iiwi c2RrLkV2ZW50IiwiRkIiLCJJZnJhbWVQbHVnaW4iLCJQbHVnaW5UYWdzIiwid3Jh cEZ1bmN0aW9uIiwiWEZCTUwiLCJzZGsuWEZCTUwuQ29tbWVudHMiLCJzZGsuWEZC TUwuQ29tbWVudHNDb3VudCIsInNkay5YRkJNTC5Db25uZWN0QmFyIiwic2RrLlhG Qk1MLkxpa2VCb3giLCJzZGsuWEZCTUwuTGlrZSIsInNkay5YRkJNTC5MaXZlU3Ry ZWFtIiwic2RrLlhGQk1MLkxvZ2luQnV0dG9uIiwic2RrLlhGQk1MLk5hbWUiLCJz ZGsuWEZCTUwuUHJvZmlsZVBpYyIsInNkay5YRkJNTC5SZWNvbW1lbmRhdGlvbnNC YXIiLCJzZGsuWEZCTUwuUmVnaXN0cmF0aW9uIiwic2RrLlhGQk1MLlNlbmQiLCJz ZGsuWEZCTUwuU29jaWFsQ29udGV4dCJdLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBl PWIoJ0Fzc2VydCcpLGY9Yignc2RrLmRvbVJlYWR5JyksZz1iKCdzZGsuRXZlbnQn KSxoPWIoJ0ZCJyksaT1iKCdJZnJhbWVQbHVnaW4nKSxqPWIoJ1BsdWdpblRhZ3Mn KSxrPWIoJ3dyYXBGdW5jdGlvbicpLGw9YignWEZCTUwnKSxtPXtjb21tZW50czpi KCdzZGsuWEZCTUwuQ29tbWVudHMnKSxjb21tZW50c19jb3VudDpiKCdzZGsuWEZC TUwuQ29tbWVudHNDb3VudCcpLGNvbm5lY3RfYmFyOmIoJ3Nkay5YRkJNTC5Db25u ZWN0QmFyJyksZmFuOmIoJ3Nkay5YRkJNTC5MaWtlQm94JyksbGlrZTpiKCdzZGsu WEZCTUwuTGlrZScpLGxpa2VfYm94OmIoJ3Nkay5YRkJNTC5MaWtlQm94JyksbGl2 ZV9zdHJlYW06Yignc2RrLlhGQk1MLkxpdmVTdHJlYW0nKSxsb2dpbl9idXR0b246 Yignc2RrLlhGQk1MLkxvZ2luQnV0dG9uJyksbmFtZTpiKCdzZGsuWEZCTUwuTmFt ZScpLHByb2ZpbGVfcGljOmIoJ3Nkay5YRkJNTC5Qcm9maWxlUGljJykscmVjb21t ZW5kYXRpb25zX2JhcjpiKCdzZGsuWEZCTUwuUmVjb21tZW5kYXRpb25zQmFyJyks cmVnaXN0cmF0aW9uOmIoJ3Nkay5YRkJNTC5SZWdpc3RyYXRpb24nKSxzZW5kOmIo J3Nkay5YRkJNTC5TZW5kJyksc29jaWFsX2NvbnRleHQ6Yignc2RrLlhGQk1MLlNv Y2lhbENvbnRleHQnKX07RVM1KEVTNSgnT2JqZWN0Jywna2V5cycsZmFsc2Usaiks J2ZvckVhY2gnLHRydWUsZnVuY3Rpb24obyl7bC5yZWdpc3RlclRhZyh7eG1sbnM6 J2ZiJyxsb2NhbE5hbWU6by5yZXBsYWNlKC9fL2csJy0nKSxjdG9yOmkud2l0aFBh cmFtcyhqW29dKX0pO30pO0VTNShFUzUoJ09iamVjdCcsJ2tleXMnLGZhbHNlLG0p LCdmb3JFYWNoJyx0cnVlLGZ1bmN0aW9uKG8pe2wucmVnaXN0ZXJUYWcoe3htbG5z OidmYicsbG9jYWxOYW1lOm8ucmVwbGFjZSgvXy9nLCctJyksY3RvcjptW29dfSk7 fSk7aC5wcm92aWRlKCdYRkJNTCcse3BhcnNlOmZ1bmN0aW9uKG8pe2UubWF5YmVY ZmJtbChvLCdJbnZhbGlkIGFyZ3VtZW50Jyk7aWYobyYmby5ub2RlVHlwZT09PTkp bz1vLmJvZHk7cmV0dXJuIGwucGFyc2UuYXBwbHkobnVsbCxhcmd1bWVudHMpO319 KTtoLnByb3ZpZGUoJ1hGQk1MLlJlY29tbWVuZGF0aW9uc0Jhcicse21hcmtSZWFk OmZ1bmN0aW9uKG8pe2cuZmlyZSgneGZibWwucmVjb21tZW5kYXRpb25zYmFyLnJl YWQnLG98fHdpbmRvdy5sb2NhdGlvbi5ocmVmKTt9fSk7bC5zdWJzY3JpYmUoJ3Bh cnNlJyxFUzUoZy5maXJlLCdiaW5kJyx0cnVlLGcsJ3hmYm1sLnBhcnNlJykpO2wu c3Vic2NyaWJlKCdyZW5kZXInLEVTNShnLmZpcmUsJ2JpbmQnLHRydWUsZywneGZi bWwucmVuZGVyJykpO2cuc3Vic2NyaWJlKCdpbml0OnBvc3QnLGZ1bmN0aW9uKG8p e2lmKG8ueGZibWwpc2V0VGltZW91dChrKEVTNShmLCdiaW5kJyx0cnVlLG51bGws bC5wYXJzZSksJ2VudHJ5JywnaW5pdDpwb3N0OnhmYm1sLnBhcnNlJyksMCk7fSk7 ZS5kZWZpbmUoJ1hmYm1sJyxmdW5jdGlvbihvKXtyZXR1cm4gKG8ubm9kZVR5cGU9 PT0xfHxvLm5vZGVUeXBlPT09OSkmJnR5cGVvZiBvLm5vZGVOYW1lPT09J3N0cmlu Zyc7fSk7dHJ5e2lmKGRvY3VtZW50Lm5hbWVzcGFjZXMmJiFkb2N1bWVudC5uYW1l c3BhY2VzLml0ZW0uZmIpZG9jdW1lbnQubmFtZXNwYWNlcy5hZGQoJ2ZiJyk7fWNh dGNoKG4pe319LDMpOwp2b2lkKDApOwpfX2QoImxlZ2FjeTpmYi5jb21wYXQuZWRn YXIiLFsic2RrLkNhbnZhcy5JZnJhbWVIYW5kbGluZyIsImNyZWF0ZUFycmF5RnJv bSIsInNkay5ET00iLCJkb3RBY2Nlc3MiLCJGQiIsInNkay5pbml0Iiwic2RrLklu c2lnaHRzIiwiTG9nIiwic2RrLlJ1bnRpbWUiLCJYRkJNTCIsIkVkZ2FyQ29uZmln Il0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Yignc2RrLkNhbnZhcy5JZnJhbWVI YW5kbGluZycpLGY9YignY3JlYXRlQXJyYXlGcm9tJyksZz1iKCdzZGsuRE9NJyks aD1iKCdkb3RBY2Nlc3MnKSxpPWMoJ0VkZ2FyQ29uZmlnJyksaj1iKCdGQicpLGs9 Yignc2RrLmluaXQnKSxsPWIoJ3Nkay5JbnNpZ2h0cycpLG09YignTG9nJyksbj1i KCdzZGsuUnVudGltZScpLG89YignWEZCTUwnKTtmdW5jdGlvbiBwKCl7by5wYXJz ZSgpO31mdW5jdGlvbiBxKHkpe3JldHVybiBmdW5jdGlvbigpe2lmKHk8MClyZXR1 cm47dmFyIHo9YXJndW1lbnRzW3ldO2lmKHopc2V0VGltZW91dCh6LDApO307fWZ1 bmN0aW9uIHIoeSl7ayh7YXBwSWQ6eSx4ZmJtbDp0cnVlLHN0YXR1czpmYWxzZX0p O31mdW5jdGlvbiBzKHkseil7dmFyIGFhPXkuc3BsaXQoJy4nKTt5PWFhLnBvcCgp O3ZhciBiYT1hYS5sZW5ndGg/aCh3aW5kb3cuRkIsYWEuam9pbignLicpLHRydWUp OndpbmRvdy5GQjtyZXR1cm4geSBpbiBiYT9iYVt5XTpiYVt5XT0oenx8e30pO31m dW5jdGlvbiB0KCl7RVM1KGkuc3R1YnMsJ2ZvckVhY2gnLHRydWUsZnVuY3Rpb24o eSl7cyh5LHApO30pO3MoJ2Vuc3VyZUluaXQnLHEoMCkpO3MoJ0ZhY2Vib29rLmlu aXQnLHIpO31mdW5jdGlvbiB1KHkpe3ZhciB6PXl8fGRvY3VtZW50LmJvZHksYWE9 Zih6LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmYjpjb21tZW50cycpKTtFUzUoYWEs J2ZvckVhY2gnLHRydWUsZnVuY3Rpb24oYmEpe2lmKCFiYS5nZXRBdHRyaWJ1dGUo J2hyZWYnKSYmIWJhLmdldEF0dHJpYnV0ZSgneGlkJykpYmEuc2V0QXR0cmlidXRl KCdocmVmJyxsb2NhdGlvbi5ocmVmKTt9KTt9ZnVuY3Rpb24gdigpe3ZhciB5PWYo ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2ZiX3NoYXJlJykpO0VTNSh5LCdm b3JFYWNoJyx0cnVlLGZ1bmN0aW9uKHope3ZhciBhYT1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCdkaXYnKTthYS5jbGFzc05hbWU9J2ZiLXNoYXJlLWJ1dHRvbic7dmFy IGJhPWcuZ2V0QXR0cih6LCdzaGFyZV91cmwnKTtpZihiYSlhYS5zZXRBdHRyaWJ1 dGUoJ2RhdGEtaHJlZicsYmEpO3ZhciBjYT1nLmdldEF0dHIoeiwndHlwZScpO2lm KGNhKWFhLnNldEF0dHJpYnV0ZSgnZGF0YS10eXBlJyxjYSk7Zy5odG1sKGFhLHou aW5uZXJIVE1MKTt6LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGFhLHopO3oucGFy ZW50Tm9kZS5yZW1vdmVDaGlsZCh6KTt9KTt9ZnVuY3Rpb24gdygpe3UoKTt2KCk7 by5wYXJzZSgpO31mdW5jdGlvbiB4KHkpe3UoeSk7by5wYXJzZSh5KTt9ai5wcm92 aWRlKCdYRkJNTC5Ib3N0Jyx7cGFyc2VEb21UcmVlOncscGFyc2VEb21FbGVtZW50 Onh9KTtqLnByb3ZpZGUoJ0NhbnZhc0NsaWVudCcse3NldENhbnZhc0hlaWdodDpm dW5jdGlvbih5LHope2Uuc2V0U2l6ZSh7aGVpZ2h0OnBhcnNlSW50KC9cZCsvLmV4 ZWMoeSlbMF0sMTApfSk7eiYmc2V0VGltZW91dCh6LDApO319KTt3aW5kb3cuRkIu aW5pdD0oZnVuY3Rpb24oKXt2YXIgeT13aW5kb3cuRkIuaW5pdDtyZXR1cm4gZnVu Y3Rpb24oKXt5LmFwcGx5KHdpbmRvdy5GQixhcmd1bWVudHMpO2lmKGFyZ3VtZW50 cy5sZW5ndGgpbC5sb2cobi5nZXRDbGllbnRJRCgpLGwuVFlQRS5XQVJOSU5HLGwu Q0FURUdPUlkuREVQUkVDQVRFRCwnRWRnYXInKTt9O30pKCk7d2luZG93LkZCX1Jl cXVpcmVGZWF0dXJlcz1xKDEpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cu RkIuaW5pdCgpO3QoKTt3KCk7fSwwKTttLmVycm9yKCcjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjI1xuIyAgVGhlIGVuZHBvaW50IHVzZWQgdG8gbG9hZCB0aGlzIHJl c291cmNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuXG4jICBQbGVhc2UgdXBkYXRlIHRv IHRoZSBjdXJyZW50IEZhY2Vib29rIEphdmFTY3JpcHQgU0RLLlxuIyAgaHR0cHM6 Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3JlZmVyZW5jZS9qYXZhc2Ny aXB0L1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMnKTt9LDMpOwp9KS5jYWxs KHt9LCB3aW5kb3cuaW5EYXBJRiA/IHBhcmVudC53aW5kb3cgOiB3aW5kb3cpOwp9 IGNhdGNoIChlKSB7bmV3IEltYWdlKCkuc3JjPSJodHRwOlwvXC93d3cuZmFjZWJv b2suY29tXC8iICsgJ2NvbW1vbi9zY3JpYmVfZW5kcG9pbnQucGhwP2M9anNzZGtf ZXJyb3ImbT0nK2VuY29kZVVSSUNvbXBvbmVudCgneyJlcnJvciI6IkxPQUQiLCAi ZXh0cmEiOiB7Im5hbWUiOiInK2UubmFtZSsnIiwibGluZSI6IicrKGUubGluZU51 bWJlcnx8ZS5saW5lKSsnIiwic2NyaXB0IjoiJysoZS5maWxlTmFtZXx8ZS5zb3Vy Y2VVUkx8fGUuc2NyaXB0KSsnIiwic3RhY2siOiInKyhlLnN0YWNrVHJhY2V8fGUu c3RhY2spKyciLCJtZXNzYWdlIjoiJytlLm1lc3NhZ2UrJyJ9fScpO30= ------------tUrVNUfUjqVQwhOvap9OYZ Content-Disposition: inline; filename=chart.png Content-Type: image/png; name=chart.png Content-Location: http://chart.apis.google.com/chart?chs=80x80&cht=qr&chl=http://radnice.litomerice.cz/dokument-1007796.html Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAABmJLR0QA/wD/AP+g vaeTAAACGUlEQVR4nO2ay3LFIAxDk07//5fTRTYUR4ps6GNAZ9WhDhdQjI3JeV3X sRMffz2A38YTXh1PeHU84dXxhFdnuwl/vlqc5yn2dWeprX2bt8Z21HPMdrNjIFhh AF85pMDdjp5FSqJ3pDaGDitMiavI1eOK1XrWLR+xwpNA3hvb2xb090Ss8DBcVR6B eT9TsMIUZdWj7yGPbVtazbPRO4UVBujZbHxK2YEVm9oYOqxwIOszSKuIYlMbA8EK B5Tzbfyvokm0GX8jfB7uyZ2HY84U4WuPVOL5c4zSZawwgGdCSnYV29uWqFv23OuK xzN1H1Y8EL0XtSqkHi8IVjgQNUH+xvPkGkpcSP3KdgqfrwvDfZX7Lbcfv3ngdx2P bKdwxYe5AllPU3Z1PqrUzm+FBVAONJLl6r6t30I+YoUpeq6TvWFo4bvGYLTfTuFK HOaW/OZh/DwcR+I4zHhX+Jt1ss6oRG99ALW3o8MKc2u5XoWe1f0zu3colseGCtfr 0tFGr2MqJyreQ/usc2lGzoelHktZcdse+0H9K+0d2yk8/1tLJUPWT9dtSzm7arHC AD0S8hMVr4Rlv+tI5Vg3VphSu+9BVWXlKw6lsmkfZvzUl3j8pgLt2KiHbKWaYIWn kr37zcb8Qp3UClOU/RBFReX+Sf/F2m3zYYUhtVsFpe7FW/Q+nWk9M/88/M/ZTmFP eHU84dXxhFfHE16d7Sb8BahvIsQiX9QHAAAAAElFTkSuQmCC ------------tUrVNUfUjqVQwhOvap9OYZ--