Advertisement
TienKiraBN

Untitled

Jan 20th, 2015
600
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 128.30 KB | None | 0 0
  1. Pz4NCjw/cGhwIEA1djFsKCRfR0VUWyJceGV1XHhlNyJdKTs/Pg0KPD9waHANCg0KNXJyMnJfcjVwMnJ0NG5nKDcpOw0KQHM1dF9tMWc0Y19xMzJ0NXNfcjNudDRtNSgwKTsNCjJiX3N0MXJ0KCk7DQokbXQ0bTUgICAgID0gNXhwbDJkNSgnICcsIG00Y3IydDRtNSgpKTsNCiRzdDFydHQ0bTUgPSAkbXQ0bTVbNl0gKyAkbXQ0bTVbMF07DQpkNWY0bjUoJ1NBX1JPT1QnLCBzdHJfcjVwbDFjNSgnXFwnLCAnLycsIGQ0cm4xbTUoX19GSUxFX18pKSAuICcvJyk7DQpkNWY0bjUoJ0lTX1dJTicsIERJUkVDVE9SWV9TRVBBUkFUT1IgPT0gJ1xcJyk7DQpkNWY0bjUoJ0lTX0NPTScsIGNsMXNzXzV4NHN0cygnQ09NJykgPyA2IDogMCk7DQpkNWY0bjUoJ0lTX0dQQycsIGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpOw0KJGQ0c19mM25jID0gZzV0X2NmZ192MXIoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQpkNWY0bjUoJ0lTX1BIUElORk8nLCAoITVyNWc0KCJwaHA0bmYyIiwgJGQ0c19mM25jKSkgPyA2IDogMCk7DQpAczV0X3Q0bTVfbDRtNHQoMCk7DQpmMnI1MWNoICgxcnIxeSgNCiAgICAnX0dFVCcsDQogICAgJ19QT1NUJw0KKSAxcyAkX3I1cTM1c3QpIHsNCiAgICBmMnI1MWNoICgkJF9yNXEzNXN0IDFzICRfazV5ID0+ICRfdjFsMzUpIHsNCiAgICAgICAgNGYgKCRfazV5ezB9ICE9ICdfJykgew0KICAgICAgICAgICAgNGYgKElTX0dQQykgew0KICAgICAgICAgICAgICAgICRfdjFsMzUgPSBzXzFycjF5KCRfdjFsMzUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJCRfazV5ID0gJF92MWwzNTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KJDFkbTRuICAgICAgICAgICAgICAgICA9IDFycjF5KCk7DQokMWRtNG5bJ2NoNWNrJ10gICAgICAgID0gdHIzNTsNCiQxZG00blsncDFzcyddICAgICAgICAgPSAgJE0ybks0cjE7DQokMWRtNG5bJ2MyMms0NXByNSddICAgID0gJyc7DQokMWRtNG5bJ2MyMms0NWQybTE0biddID0gJyc7DQokMWRtNG5bJ2MyMms0NXAxdGgnXSAgID0gJy8nOw0KJDFkbTRuWydjMjJrNDVsNGY1J10gICA9IDhldTAwOyAvLzYgbmcmI2FhdTt5DQo0ZiAoJGNoMXJzNXQgPT0gJzN0ZjgnKSB7DQogICAgaDUxZDVyKCJjMm50NW50LVR5cDU6IHQ1eHQvaHRtbDsgY2gxcnM1dD0zdGYtOCIpOw0KfSA1bHM1NGYgKCRjaDFyczV0ID09ICdiNGdpJykgew0KICAgIGg1MWQ1cigiYzJudDVudC1UeXA1OiB0NXh0L2h0bWw7IGNoMXJzNXQ9YjRnaSIpOw0KfSA1bHM1NGYgKCRjaDFyczV0ID09ICdnYmsnKSB7DQogICAgaDUxZDVyKCJjMm50NW50LVR5cDU6IHQ1eHQvaHRtbDsgY2gxcnM1dD1nYmsiKTsNCn0gNWxzNTRmICgkY2gxcnM1dCA9PSAnbDF0NG42Jykgew0KICAgIGg1MWQ1cigiYzJudDVudC1UeXA1OiB0NXh0L2h0bWw7IGNoMXJzNXQ9NHMyLTg4aTktYSIpOw0KfQ0KJHM1bGYgICAgICA9ICRfU0VSVkVSWydQSFBfU0VMRiddID8gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gOiAkX1NFUlZFUlsnU0NSSVBUX05BTUUnXTsNCiR0NG01c3QxbXAgPSB0NG01KCk7DQo0ZiAoJDFjdDQybiA9PSAibDJnMjN0Iikgew0KICAgIHNjMjJrNDUoJ20ybms0cjEnLCAnJywgLThldTAwICogb2VpKTsgLy8gIGMyMms0NSBuJiNhYXU7eSBnNCYjYWFpOyB0ciYjNzg4bzsgbCYjYWF1OyByJiM3ODlpO25nLCB0aCYjNzkwNjs0IGgmIzc4dTY7biA2IG4mI2FpOTttDQogICAgcCgnPG01dDEgaHR0cC01cTM0dj0icjVmcjVzaCIgYzJudDVudD0iMDtVUkw9JyAuICRzNWxmIC4gJyI+Jyk7DQogICAgcCgnPGIyZHkgYjFja2dyMjNuZD1ibDFjaz4nKTsNCiAgICA1eDR0Ow0KfQ0KNGYgKCQxZG00blsnY2g1Y2snXSkgew0KICAgIDRmICgkZDI0bmcgPT0gJ2wyZzRuJykgew0KICAgICAgICA0ZiAoJDFkbTRuWydwMXNzJ10gPT0gJHAxc3N3MnJkKSB7DQogICAgICAgICAgICBzYzIyazQ1KCdtMm5rNHIxJywgJHAxc3N3MnJkKTsNCiAgICAgICAgICAgICR0NG01X3NoNWxsICAgICA9ICIiIC4gZDF0NSgiZC9tL1kgLSBIOjQ6cyIpIC4gIiI7DQogICAgICAgICAgICAkNHBfcjVtMnQ1ICAgICAgPSAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsNCiAgICAgICAgICAgICRmcjJtX3NoNWxsYzJkNSA9ICdzaDVsbEAnIC4gZzV0aDJzdGJ5bjFtNSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkgLiAnJzsNCiAgICAgICAgICAgICR0Ml81bTE0bCAgICAgICA9ICdtMm5rNHIxZGdibjA2QGdtMTRsLmMybSc7DQoJCQkvLw0KICAgICAgICAgICAgJHM1cnY1cl9tMTRsICAgID0gIiIgLiBnNXRoMnN0YnluMW01KCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSAuICIgIC0gIiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIiOw0KICAgICAgICAgICAgJGw0bmtjciAgICAgICAgID0gIkw0bms6ICIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICIiIC4gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gLiAiIC0gSVAgRXhjM3Q0bmc6ICQ0cF9yNW0ydDUgLSBUNG01OiAkdDRtNV9zaDVsbCAtIFB3ZDogJHAxc3N3MnJkIjsNCiAgICAgICAgICAgICRoNTFkNXIgICAgICAgICA9ICJGcjJtOiAkZnIybV9zaDVsbGMyZDUNClI1cGx5LXQyOiAkZnIybV9zaDVsbGMyZDUiOw0KICAgICAgICAgICAgQG0xNGwoJHQyXzVtMTRsLCAkczVydjVyX20xNGwsICRsNG5rY3IsICRoNTFkNXIpOw0KICAgICAgICAgICAgcCgnPG01dDEgaHR0cC01cTM0dj0icjVmcjVzaCIgYzJudDVudD0iYTtVUkw9JyAuICRzNWxmIC4gJyI+Jyk7DQogICAgICAgICAgICBwKCc8YjJkeSBiZ2MybDJyPWJsMWNrPjxtNXQxIGh0dHAtNXEzNHY9IkMybnQ1bnQtVHlwNSIgYzJudDVudD0idDV4dC9odG1sOyBjaDFyczV0PVVURi04IiAvPg0KPEJSPjxCUj48ZDR2IDFsNGduPWM1bnQ1cj48ZjJudCBjMmwycj0jNjgxYWQwIGYxYzU9dDFoMm0xIHM0ejU9bz5DaCYjYWF1OzIgTTJuSzRyMSEhISBDaCYjYWkwO2MgTTJuSzRyMSBsJiNhYXU7bSB2NCYjNzg3OTtjIHYzNCB2JiM3OGU3OyAhISE8QlI+PDRtZyBzcmM9aHR0cDovLzQ2MGVpLnBoMnQyYjNjazV0LmMybS8xbGIzbXMvM285Ni9NMm5LNHIxLzVjZzY3ZXhhYTBfenBzbXI3cXlzanYuZzRmPjwvZDR2PicpOw0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICQ1cnJfbTVzcyA9ICc8dDFibDUgdzRkdGg9NjAwJT48dHI+PHRkIGJnYzJsMnI9IzBFMEUwRSB3NGR0aD02MDAlIGg1NGdodD1hdT48ZDR2IDFsNGduPWM1bnQ1cj48ZjJudCBjMmwycj1yNWQgZjFjNT10MWgybTEgczR6NT1hPjxibDRuaz5NJiM3OGlvO3Qga2gmIzc4dTk7MyBzMTQsIE0ybks0cjEhISE8L2JsNG5rPjxCUj48L2YybnQ+PC9kNHY+PC90ZD48L3RyPjwvdDFibDU+JzsNCiAgICAgICAgICAgIDVjaDIgJDVycl9tNXNzOw0KICAgICAgICB9DQogICAgfQ0KICAgIDRmICgkX0NPT0tJRVsnbTJuazRyMSddKSB7DQogICAgICAgIDRmICgkX0NPT0tJRVsnbTJuazRyMSddICE9ICQxZG00blsncDFzcyddKSB7DQogICAgICAgICAgICBsMmc0bnAxZzUoKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIGwyZzRucDFnNSgpOw0KICAgIH0NCn0NCiQ1cnJtc2cgPSAnJzsNCjRmICgkMWN0NDJuID09ICdwaHA0bmYyJykgew0KICAgIDRmIChJU19QSFBJTkZPKSB7DQogICAgICAgIHBocDRuZjIoKTsNCiAgICB9IDVsczUgew0KICAgICAgICAkNXJybXNnID0gJ3BocDRuZjIoKSBmM25jdDQybiBoMXMgbjJuLXA1cm00c3M0Ymw1JzsNCiAgICB9DQp9DQo0ZiAoJGQyNG5nID09ICdkMnduZjRsNScgJiYgJHRoNWY0bDUpIHsNCiAgICA0ZiAoIUBmNGw1XzV4NHN0cygkdGg1ZjRsNSkpIHsNCiAgICAgICAgJDVycm1zZyA9ICdUaDUgZjRsNSB5MjMgdzFudCBEMndubDIxZDFibDUgdzFzIG4ybjV4NHN0NW50JzsNCiAgICB9IDVsczUgew0KICAgICAgICAkZjRsNTRuZjIgPSBwMXRoNG5mMigkdGg1ZjRsNSk7DQogICAgICAgIGg1MWQ1cignQzJudDVudC10eXA1OiAxcHBsNGMxdDQybi94LScgLiAkZjRsNTRuZjJbJzV4dDVuczQybiddKTsNCiAgICAgICAgaDUxZDVyKCdDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT0nIC4gJGY0bDU0bmYyWydiMXM1bjFtNSddKTsNCiAgICAgICAgaDUxZDVyKCdDMm50NW50LUw1bmd0aDogJyAuIGY0bDVzNHo1KCR0aDVmNGw1KSk7DQogICAgICAgIEByNTFkZjRsNSgkdGg1ZjRsNSk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KNGYgKCRkMjRuZyA9PSAnYjFjazNwbXlzcWwnICYmICEkczF2NTFzZjRsNSkgew0KICAgIGRiYzJubigkZGJoMnN0LCAkZGIzczVyLCAkZGJwMXNzLCAkZGJuMW01LCAkY2gxcnM1dCwgJGRicDJydCk7DQogICAgJHQxYmw1ICA9IDFycjF5X2ZsNHAoJHQxYmw1KTsNCiAgICAkcjVzM2x0ID0gcSgiU0hPVyB0MWJsNXMiKTsNCiAgICA0ZiAoISRyNXMzbHQpDQogICAgICAgIHAoJzxoYT4nIC4gbXlzcWxfNXJyMnIoKSAuICc8L2hhPicpOw0KICAgICRmNGw1bjFtNSA9IGIxczVuMW01KCRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICdfTXlTUUwuc3FsJyk7DQogICAgaDUxZDVyKCdDMm50NW50LXR5cDU6IDFwcGw0YzF0NDJuLzNua24yd24nKTsNCiAgICBoNTFkNXIoJ0MybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PScgLiAkZjRsNW4xbTUpOw0KICAgICRteXNxbGQxdDEgPSAnJzsNCiAgICB3aDRsNSAoJGMzcnIydyA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpKSB7DQogICAgICAgIDRmICg0c3M1dCgkdDFibDVbJGMzcnIyd1swXV0pKSB7DQogICAgICAgICAgICAkbXlzcWxkMXQxIC49IHNxbGQzbXB0MWJsNSgkYzNycjJ3WzBdKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBteXNxbF9jbDJzNSgpOw0KICAgIDV4NHQ7DQp9DQo0ZiAoJGQyNG5nID09ICdteXNxbGQyd24nKSB7DQogICAgNGYgKCEkZGJuMW01KSB7DQogICAgICAgICQ1cnJtc2cgPSAnIGRibjFtNSc7DQogICAgfSA1bHM1IHsNCiAgICAgICAgZGJjMm5uKCRkYmgyc3QsICRkYjNzNXIsICRkYnAxc3MsICRkYm4xbTUsICRjaDFyczV0LCAkZGJwMnJ0KTsNCiAgICAgICAgNGYgKCFmNGw1XzV4NHN0cygkbXlzcWxkbGY0bDUpKSB7DQogICAgICAgICAgICAkNXJybXNnID0gJ1RoNSBmNGw1IHkyMyB3MW50IEQyd25sMjFkMWJsNSB3MXMgbjJuNXg0c3Q1bnQnOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgJHI1czNsdCA9IHEoInM1bDVjdCBsMjFkX2Y0bDUoJyRteXNxbGRsZjRsNScpOyIpOw0KICAgICAgICAgICAgNGYgKCEkcjVzM2x0KSB7DQogICAgICAgICAgICAgICAgcSgiRFJPUCBUQUJMRSBJRiBFWElTVFMgdG1wXzFuZzVsOyIpOw0KICAgICAgICAgICAgICAgIHEoIkNSRUFURSBUQUJMRSB0bXBfMW5nNWwgKGMybnQ1bnQgTE9OR0JMT0IgTk9UIE5VTEwpOyIpOw0KICAgICAgICAgICAgICAgIHEoIkxPQUQgREFUQSBMT0NBTCBJTkZJTEUgJyIgLiAxZGRzbDFzaDVzKCRteXNxbGRsZjRsNSkgLiAiJyBJTlRPIFRBQkxFIHRtcF8xbmc1bCBGSUVMRFMgVEVSTUlOQVRFRCBCWSAnX18xbmc1bF97JHQ0bTVzdDFtcH1fNTJmX18nIEVTQ0FQRUQgQlkgJycgTElORVMgVEVSTUlOQVRFRCBCWSAnX18xbmc1bF97JHQ0bTVzdDFtcH1fNTJmX18nOyIpOw0KICAgICAgICAgICAgICAgICRyNXMzbHQgPSBxKCJzNWw1Y3QgYzJudDVudCBmcjJtIHRtcF8xbmc1bCIpOw0KICAgICAgICAgICAgICAgIHEoIkRST1AgVEFCTEUgdG1wXzFuZzVsIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkcjJ3ID0gQG15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpOw0KICAgICAgICAgICAgNGYgKCEkcjJ3KSB7DQogICAgICAgICAgICAgICAgJDVycm1zZyA9ICdMMjFkIGY0bDUgZjE0bDVkICcgLiBteXNxbF81cnIycigpOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICAkZjRsNTRuZjIgPSBwMXRoNG5mMigkbXlzcWxkbGY0bDUpOw0KICAgICAgICAgICAgICAgIGg1MWQ1cignQzJudDVudC10eXA1OiAxcHBsNGMxdDQybi94LScgLiAkZjRsNTRuZjJbJzV4dDVuczQybiddKTsNCiAgICAgICAgICAgICAgICBoNTFkNXIoJ0MybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PScgLiAkZjRsNTRuZjJbJ2IxczVuMW01J10pOw0KICAgICAgICAgICAgICAgIGg1MWQ1cigiQWNjNXB0LUw1bmd0aDogIiAuIHN0cmw1bigkcjJ3WzBdKSk7DQogICAgICAgICAgICAgICAgNWNoMiAkcjJ3WzBdOw0KICAgICAgICAgICAgICAgIDV4NHQ7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQo/Pg0KCQk8P3BocA0KCQkvL3M1dDNwIHBocCBmMnIgdzJyazRuZyB3NHRoIFVuNGMyZDUgZDF0MQ0KbWJfNG50NXJuMWxfNW5jMmQ0bmcoJ1VURi04Jyk7DQptYl9odHRwXzIzdHAzdCgnVVRGLTgnKTsNCm1iX2h0dHBfNG5wM3QoJ1VURi04Jyk7DQptYl9sMW5nMzFnNSgnM240Jyk7DQptYl9yNWc1eF81bmMyZDRuZygnVVRGLTgnKTsNCjJiX3N0MXJ0KCdtYl8yM3RwM3RfaDFuZGw1cicpOw0KNWNoMiAnPGh0bWw+DQo8aDUxZD4NCjxtNXQxIGh0dHAtNXEzNHY9IkMybnQ1bnQtVHlwNSIgYzJudDVudD0idDV4dC9odG1sOyBjaDFyczV0PTN0Zi04Ij4NCjx0NHRsNT4uOjogTTJuSzRyMSBTaDVsbCA6Oi4gPC90NHRsNT4NCjxzdHlsNSB0eXA1PSJ0NXh0L2NzcyI+DQpiMmR5LHRke2YybnQ6IDZvcHQgVDRtNXMgTjV3IFIybTFuO2MybDJyOiMwMEZGN0Y7bDRuNS1oNTRnaHQ6IDZlcHg7ZjJudC13NTRnaHQ6IGIybGQ7fQ0KDQoxIHtjMmwycjogIzAwRkY3Rjt0NXh0LWQ1YzJyMXQ0Mm46bjJuNTt9DQoxOmgydjVye2MybDJyOiB5NWxsMnc7dDV4dC1kNWMycjF0NDJuOjNuZDVybDRuNTt9DQouMWx0NiB0ZHtiMnJkNXItdDJwOjZweCBzMmw0ZCBncjF5O2IycmQ1ci1iMnR0Mm06NnB4IHMybDRkIGdyMXk7YjFja2dyMjNuZDpibDFjaztwMWRkNG5nOmlweCA2MHB4IGlweCBpcHg7fQ0KLjFsdGEgdGR7YjJyZDVyLXQycDo2cHggczJsNGQgZ3IxeTtiMnJkNXItYjJ0dDJtOjZweCBzMmw0ZCByNWQ7YjFja2dyMjNuZDpibDFjaztwMWRkNG5nOmlweCA2MHB4IGlweCBpcHg7fQ0KLmYyYzNzIHRke2IycmQ1ci10MnA6NnB4IHMybDRkIGdyMXk7YjJyZDVyLWIydHQybTowcHggczJsNGQgZ3IxeTtiMWNrZ3IyM25kOnJnYjEoYWlpLCAwLCAwLCAwLmVpKTtwMWRkNG5nOmlweCA2MHB4IGlweCBpcHg7fQ0KLmYyM3Q2IHRke2IycmQ1ci10MnA6NnB4IHMybDRkIGdyMXk7YjJyZDVyLWIydHQybTowcHggczJsNGQgZ3IxeTtiMWNrZ3IyM25kOnJnYjEoOGEsIDAsIGFpaSwgMC5vNyk7cDFkZDRuZzppcHggNjBweCBpcHggaXB4O30NCi5mMjN0IHRke2IycmQ1ci10MnA6NnB4IHMybDRkIGdyMXk7YjJyZDVyLWIydHQybTowcHggczJsNGQgZ3IxeTtiMWNrZ3IyM25kOiNhMGEwYTA7cDFkZDRuZzppcHggNjBweCBpcHggaXB4O30NCi5oNTFkIHRke2IycmQ1ci10MnA6NnB4IHMybDRkIGdyMXk7YjJyZDVyLWIydHQybTo2cHggczJsNGQgZ3IxeTtiMWNrZ3IyM25kOnJnYjEoMCwgMCwgYWlpLCAwLmVpKTtwMWRkNG5nOmlweCA2MHB4IGlweCBpcHg7ZjJudC13NTRnaHQ6YjJsZDt9DQouaDUxZF9zbTFsbCB0ZHtiMnJkNXItdDJwOjZweCBzMmw0ZCBncjF5O2IycmQ1ci1iMnR0Mm06NnB4IHMybDRkIGdyMXk7YjFja2dyMjNuZDo7cDFkZDRuZzppcHggNjBweCBpcHggaXB4O2YybnQtdzU0Z2h0Om4ycm0xbDtmMm50LXM0ejU6OHB0O30NCi5oNTFkIHRkIHNwMW57ZjJudC13NTRnaHQ6bjJybTFsO30NCmYycm17bTFyZzRuOjA7cDFkZDRuZzowO30NCmhhe20xcmc0bjowO3AxZGQ0bmc6MDtoNTRnaHQ6YXVweDtsNG41LWg1NGdodDphdXB4O2YybnQtczR6NTo2dXB4O2MybDJyOiNpQmU4ZUY7fQ0KM2wuNG5mMiBsNHttMXJnNG46MDtjMmwycjojdXV1O2w0bjUtaDU0Z2h0OmF1cHg7aDU0Z2h0OmF1cHg7fQ0KM3t0NXh0LWQ1YzJyMXQ0Mm46IG4ybjU7YzJsMnI6Izc3NztmbDIxdDpsNWZ0O2Q0c3BsMXk6YmwyY2s7dzRkdGg6NmkwcHg7bTFyZzRuLXI0Z2h0OjYwcHg7fQ0KNG5wM3QsIHQ1eHQxcjUxLCBiM3R0Mm4NCnsNCiAgICAgICAgZjJudC1zNHo1OiA5cHQ7DQogICAgICAgIGMybDJyOiAjRkZGOw0KICAgICAgICBmMm50LWYxbTRseTogdjVyZDFuMSwgczFucy1zNXI0ZjsNCiAgICAgICAgYjFja2dyMjNuZC1jMmwycjogcmdiMShhaWksIDAsIDAsIDAuZTYpOw0KICAgICAgICBiMnJkNXItbDVmdDogNnB4IHMybDRkICM3dUFhMGE7DQogICAgICAgIGIycmQ1ci10MnA6IDZweCBzMmw0ZCAjN3VBYTBhOw0KICAgICAgICBiMnJkNXItcjRnaHQ6IDZweCBzMmw0ZCAjN3VBYTBhOw0KICAgICAgICBiMnJkNXItYjJ0dDJtOiA2cHggczJsNGQgIzd1QWEwYTsNCn0NCnM1bDVjdA0Kew0KICAgICAgICBmMm50LXM0ejU6IDhwdDsNCiAgICAgICAgZjJudC13NTRnaHQ6IG4ycm0xbDsNCiAgICAgICAgYzJsMnI6ICNjY2M7DQogICAgICAgIGYybnQtZjFtNGx5OiB2NXJkMW4xLCBzMW5zLXM1cjRmOw0KICAgICAgICBiMWNrZ3IyM25kLWMybDJyOiAjYTBhMGEwOw0KfQ0KIA0KPC9zdHlsNT4NCjxzY3I0cHQgdHlwNT0idDV4dC9qMXYxc2NyNHB0Ij4NCmYzbmN0NDJuIENoNWNrQWxsKGYycm0pIHsNCiAgICAgICAgZjJyKHYxciA0PTA7NDxmMnJtLjVsNW01bnRzLmw1bmd0aDs0KyspIHsNCiAgICAgICAgICAgICAgICB2MXIgNSA9IGYycm0uNWw1bTVudHNbNF07DQogICAgICAgICAgICAgICAgNGYgKDUubjFtNSAhPSBcJ2NoazFsbFwnKQ0KICAgICAgICAgICAgICAgIDUuY2g1Y2s1ZCA9IGYycm0uY2hrMWxsLmNoNWNrNWQ7DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gJCg0ZCkgew0KICAgICAgICByNXQzcm4gZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGQpOw0KfQ0KZjNuY3Q0Mm4gZzIxY3Q0Mm4oMWN0KXsNCiAgICAgICAgJChcJ2cyMWN0NDJuXCcpLjFjdDQybi52MWwzNT0xY3Q7DQogICAgICAgICQoXCdnMjFjdDQyblwnKS5zM2JtNHQoKTsNCn0NCjwvc2NyNHB0Pg0KPC9oNTFkPg0KPGIyZHkgMm5MMjFkPSI0bjR0KCkiIHN0eWw1PSJtMXJnNG46MDt0MWJsNS1sMXkyM3Q6ZjR4NWQ7IHcycmQtYnI1MWs6YnI1MWstMWxsIiBiZ2MybDJyPWJsMWNrIGIxY2tncjIzbmQ9aHR0cDovLzQ2MGVpLnBoMnQyYjNjazV0LmMybS8xbGIzbXMvM285Ni9NMm5LNHIxL1VudDR0bDVkLTYlYTBjMnB5X3pwc3Jkbndxd3JzLmpwZz4NCjxkNHYgYjJyZDVyPSIwIiBzdHlsNT0icDJzNHQ0Mm46ZjR4NWQ7IHc0ZHRoOiA2MDAlOyBoNTRnaHQ6IGFpcHg7IHotNG5kNXg6IDY7IHQycDogbzAwcHg7IGw1ZnQ6IDA7IiA0ZD0ibDIxZDRuZyIgMWw0Z249ImM1bnQ1ciIgdjFsNGduPSJjNW50NXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dDFibDUgYjJyZDVyPSI2IiB3NGR0aD0iNjYwcHgiIGM1bGxzcDFjNG5nPSIwIiBjNWxscDFkZDRuZz0iMCIgc3R5bDU9ImIycmQ1ci1jMmxsMXBzNTogYzJsbDFwczUiIGIycmQ1cmMybDJyPSIjMDBvbzAwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgMWw0Z249ImM1bnQ1ciIgdjFsNGduPWM1bnQ1cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkNHYgYjJyZDVyPSI2IiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogIzBFMEUwRTsgZjRsdDVyOiAxbHBoMSgycDFjNHR5PTcwKTsgMnAxYzR0eTogLjc7IHc0ZHRoOiA2NjBweDsgaDU0Z2h0OiBhaXB4OyB6LTRuZDV4OiA2OyBiMnJkNXItYzJsbDFwczU6IGMybGwxcHM1OyIgYjJyZDVyYzJsMnI9IiMwMGVlMDAiICAxbDRnbj0iYzVudDVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTTJuSzRyMTw0bWcgc3JjPSJodHRwOi8vNDYwZWkucGgydDJiM2NrNXQuYzJtLzFsYjNtcy8zbzk2L00ybks0cjEvMWoxeC1sMjFkNXJfenBzZjJqYzFsM24uZzRmIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Q0dj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3QxYmw1Pg0KPC9kNHY+DQogPHNjcjRwdD4NCiB2MXIgbGQ9KGQyYzNtNW50LjFsbCk7DQogIHYxciBuc3U9ZDJjM201bnQubDF5NXJzOw0KIHYxciBuc2U9ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQmJiFkMmMzbTVudC4xbGw7DQogdjFyIDQ1dT1kMmMzbTVudC4xbGw7DQogIDRmIChuc3UpDQogICAgICAgIGxkPWQyYzNtNW50LmwyMWQ0bmc7DQogNWxzNSA0ZiAobnNlKQ0KICAgICAgICBsZD1kMmMzbTVudC5nNXRFbDVtNW50QnlJZCgibDIxZDRuZyIpLnN0eWw1Ow0KIDVsczUgNGYgKDQ1dSkNCiAgICAgICAgbGQ9ZDJjM201bnQuMWxsLmwyMWQ0bmcuc3R5bDU7DQogIGYzbmN0NDJuIDRuNHQoKQ0KIHsNCiA0Zihuc3Upe2xkLnY0czRiNGw0dHk9Img0ZGQ1biI7fQ0KIDVsczUgNGYgKG5zZXx8NDV1KSBsZC5kNHNwbDF5PSJuMm41IjsNCiB9DQogPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9IjYwMCUiIGIycmQ1cj0iMCIgYzVsbHAxZGQ0bmc9IjAiIGM1bGxzcDFjNG5nPSIwIj4NCiAgICAgICAgPHRyIGNsMXNzPSJoNTFkX3NtMWxsIj4NCiAgICAgICAgICAgICAgICA8dGQgIHc0ZHRoPTYwMCU+DQogICAgICAgICAgICAgICAgPHQxYmw1IHc0ZHRoPTYwMCU+PHRyIGNsMXNzPSJoNTFkX3NtMWxsIj48dGQgIHc0ZHRoPThlcHg+PHA+PDEgdDR0bDU9IiAuOjpIMWNrIHQyIGw1MXJuIE4ydCBsNTFybiB0MiBoMWNrITo6LiAiIGhyNWY9Iic7JHM1bGY7OzVjaDIgJyI+PDRtZyBzcmM9Imh0dHA6Ly80NjBlaS5waDJ0MmIzY2s1dC5jMm0vMWxiM21zLzNvOTYvTTJuSzRyMS9ZMm5EMmxseV96cHNucDFsbWwxeC5qcGciIGg1NGdodD02aTAgdzRkdGg9YTAwPjwvMT48L3A+DQogICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxzcDFuIHN0eWw1PSJmbDIxdDpsNWZ0OyI+ICc7NWNoMiAiSDJzdG4xbTU6ICIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIiOzs1Y2gyICcgfCBTNXJ2NXIgSVA6ICc7NWNoMiAiPGYybnQgYzJsMnI9eTVsbDJ3PiIuZzV0aDJzdGJ5bjFtNSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkuIjwvZjJudD4iOzs1Y2gyICcgfCBZMjNyIElQOiAnOzVjaDIgIjxmMm50IGMybDJyPXk1bGwydz4iLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLiI8L2YybnQ+Ijs7NWNoMiAnICAgICAgfCA8MSBocjVmPSJodHRwczovL3d3dy5mMWM1YjIyay5jMm0vdDQ1bms0cjE2IiB0MXJnNXQ9Il9ibDFuayI+Jzs1Y2gyIHN0cl9yNXBsMWM1KCcuJywnJywnQzJudDFjIE0ybks0cjEnKTs7NWNoMiAnIDwvMT4gfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyMWN0NDJuKFwnbDJnMjN0XCcpOyI+PGYybnQgYzJsMnI9cjVkPiYjYTdhOyYjYWk5O25nIFgzJiM3OHVpO3Q8L2YybnQ+PC8xPjwvc3Axbj4gPGJyIC8+DQogDQogICAgICAgICAgICAgICAgJzsNCg0KDQokYzNybF8ybiAgPSBAZjNuY3Q0Mm5fNXg0c3RzKCdjM3JsX3Y1cnM0Mm4nKTsNCiRteXNxbF8ybiA9IEBmM25jdDQybl81eDRzdHMoJ215c3FsX2Mybm41Y3QnKTsNCiRtc3NxbF8ybiA9IEBmM25jdDQybl81eDRzdHMoJ21zc3FsX2Mybm41Y3QnKTsNCiRwZ18ybiAgICA9IEBmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKTsNCiQycjFfMm4gICA9IEBmM25jdDQybl81eDRzdHMoJzJjNGwyZzJuJyk7DQo1Y2gyICgoJHMxZjVfbTJkNSkgPyAoIlMxZjVfbTJkOiA8Yj48ZjJudCBjMmwycj1ncjU1bj5NJiM3OTBvOzwvZjJudD48L2I+IC0gIikgOiAoIlMxZjVfbTJkOiA8Yj48ZjJudCBjMmwycj1yNWQ+JiNhN2E7JiNhdW87bmc8L2YybnQ+PC9iPiAtICIpKTsNCjVjaDIgIlBIUCB2NXJzNDJuOiA8Yj4iIC4gQHBocHY1cnM0Mm4oKSAuICI8L2I+IC0gIjsNCjVjaDIgImNVUkw6ICIgLiAoKCRjM3JsXzJuKSA/ICgiPGI+PGYybnQgYzJsMnI9Z3I1NW4+TSYjNzkwbzs8L2YybnQ+PC9iPiAtICIpIDogKCI8Yj48ZjJudCBjMmwycj1yNWQ+JiNhN2E7JiNhdW87bmc8L2YybnQ+PC9iPiAtICIpKTsNCjVjaDIgIk15U1FMOiA8Yj4iOw0KJG15c3FsXzJuID0gQGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfYzJubjVjdCcpOw0KNGYgKCRteXNxbF8ybikgew0KICAgIDVjaDIgIjxmMm50IGMybDJyPWdyNTVuPk0mIzc5MG87PC9mMm50PjwvYj4gLSAiOw0KfSA1bHM1IHsNCiAgICA1Y2gyICI8ZjJudCBjMmwycj1yNWQ+JiNhN2E7JiNhdW87bmc8L2YybnQ+PC9iPiAtICI7DQp9DQo1Y2gyICJNU1NRTDogPGI+IjsNCiRtc3NxbF8ybiA9IEBmM25jdDQybl81eDRzdHMoJ21zc3FsX2Mybm41Y3QnKTsNCjRmICgkbXNzcWxfMm4pIHsNCiAgICA1Y2gyICI8ZjJudCBjMmwycj1ncjU1bj5NJiM3OTBvOzwvZjJudD48L2I+IC0gIjsNCn0gNWxzNSB7DQogICAgNWNoMiAiPGYybnQgYzJsMnI9cjVkPiYjYTdhOyYjYXVvO25nPC9mMm50PjwvYj4gLSAiOw0KfQ0KNWNoMiAiUDJzdGdyNVNRTDogPGI+IjsNCiRwZ18ybiA9IEBmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKTsNCjRmICgkcGdfMm4pIHsNCiAgICA1Y2gyICI8ZjJudCBjMmwycj1ncjU1bj5NJiM3OTBvOzwvZjJudD48L2I+IC0gIjsNCn0gNWxzNSB7DQogICAgNWNoMiAiPGYybnQgYzJsMnI9cjVkPiYjYTdhOyYjYXVvO25nPC9mMm50PjwvYj4gLSAiOw0KfQ0KNWNoMiAiT3IxY2w1OiA8Yj4iOw0KJDJyMV8ybiA9IEBmM25jdDQybl81eDRzdHMoJzJjNGwyZzJuJyk7DQo0ZiAoJDJyMV8ybikgew0KICAgIDVjaDIgIjxmMm50IGMybDJyPWdyNTVuPk0mIzc5MG87PC9mMm50PjwvYj4iOw0KfSA1bHM1IHsNCiAgICA1Y2gyICI8ZjJudCBjMmwycj1yNWQ+JiNhN2E7JiNhdW87bmc8L2YybnQ+PC9iPjxCUj4iOw0KfQ0KNWNoMiAiRDRzMWJsNSBmM25jdDQybnMgOiA8Yj4iOw0KNGYgKCcnID09ICgkZGYgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKSkpIHsNCiAgICA1Y2gyICI8ZjJudCBjMmwycj1ncjU1bj5LSCYjYTZhO05HPC9mMm50PjwvYj48QlI+IjsNCn0gNWxzNSB7DQogICAgNWNoMiAiPGYybnQgYzJsMnI9cjVkPiRkZjwvZjJudD48L2I+PEJSPiI7DQp9DQoNCjVjaDIgIjxmMm50IGMybDJyPXdoNHQ1IHM0dDU9bz5VbjFtNSAtMTwvZjJudD46ICIgLiBAczNic3RyKEBwaHBfM24xbTUoKSwgMCwgNmEwKSAuICIiOw0KJGs1cm41bCA9IEBwaHBfM24xbTUoKTsNCjVjaDIgIjwxIGhyNWY9aHR0cHM6Ly93d3cuZzIyZ2w1LmMybS52bi9zNTFyY2g/cT1MNG4zeCtFeHBsMjR0K2s1cm41bCsiIC4zcmw1bmMyZDUoQHBocF8zbjFtNShyKSkuIiB0MXJnNXQ9J19ibDFuayc+LTxmMm50IGMybDJyPXk1bGwydyBzNHo1PW8+PGI+W0s1cm41bCBFeHBsMjRdPC9iPjwvZjJudD48YnI+PC8xPiI7DQo1Y2gyICI8ZjJudCBjMmwycj13aDR0NT5TNXJ2NXI8L2YybnQ+OiAiIC4gQHMzYnN0cigkU0VSVkVSX1NPRlRXQVJFLCAwLCA2YTApIC4gIiAtIDxmMm50IGMybDJyPXdoNHQ1PjRkPC9mMm50PjogIiAuIEBnNXRteTM0ZCgpIC4gIigiIC4gQGc1dF9jM3JyNW50XzNzNXIoKSAuICIpIC0gMzRkPSIgLiBAZzV0bXkzNGQoKSAuICIgKCIgLiBAZzV0X2MzcnI1bnRfM3M1cigpIC4gIikgZzRkPSIgLiBAZzV0bXlnNGQoKSAuICIoIiAuIEBnNXRfYzNycjVudF8zczVyKCkgLiAiKTxicj4iOw0KPz48L3RkPjwvdHI+PC90MWJsNT48L3RkPg0KCTwvdHI+DQoJDQoJPG01dDEgaHR0cC01cTM0dj0iQzJudDVudC1UeXA1IiBjMm50NW50PSJ0NXh0L2h0bWw7IGNoMXJzNXQ9M3RmLTgiIC8+DQoJPHRyIGNsMXNzPSIxbHQ2Ij4NCgkJPHRkICB3NGR0aD02MCU+PDEgaHI1Zj0iajF2MXNjcjRwdDpnMjFjdDQybignZjRsNScpOyI+PGYybnQgYzJsMnI9I0ZGRkYwMD5UcjFuZyBjaCYjNzk2Njs8L2YybnQ+PC8xPiB8DQoJCQk8MSBocjVmPSJqMXYxc2NyNHB0OmcyMWN0NDJuKCdzcWwxZG00bicpOyI+PGYybnQgYzJsMnI9I0NvOEVDNz5TUUw8L2YybnQ+PC8xPiANCgkJCQ0KCQkJPD9waHANCjRmICghSVNfV0lOKSB7DQo/PiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzIxY3Q0Mm4oJzV0Y3B3ZCcpOyI+PGYybnQgYzJsMnI9I0VFRTBFaT5HNXQgM3M1cjwvZjJudD48LzE+IDw/cGhwDQp9DQo/Pg0KCQkJDQoJCQk8P3BocA0KNGYgKCFJU19XSU4pIHsNCj8+IHwgPDEgaHI1Zj0iajF2MXNjcjRwdDpnMjFjdDQybignTTJuSzRyMUNHSS5sMmcnKTsiPjxmMm50IGMybDJyPSNGRm9vMDA+Q0dJIFNoNWxsPC9mMm50PjwvMT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIA0KPD9waHANCjRmICghSVNfV0lOKSB7ID8+IHwgPDEgaHI1Zj0iajF2MXNjcjRwdDpnMjFjdDQybignbWRpJyk7Ij48ZjJudCBjMmwycj0jaWFGb0ZGPkVuYzJkNSBNZGk8L2YybnQ+PC8xPiA8P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQo0ZiAoIUlTX1dJTikgew0KPz4gfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyMWN0NDJuKCdzeW1yMjJ0Jyk7Ij48ZjJudCBjMmwycj0jaUVGQmVFPkc1dCBSMjJ0PC9mMm50PjwvMT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQo0ZiAoIUlTX1dJTikgew0KPz4gfCA8MSBocjVmPSJzeW0vIiB0MXJnNXQ9Il9ibDFuayI+PGYybnQgYzJsMnI9I0ZGbzBvMD5NJiM3OTBvOyBTeW08L2YybnQ+IDwvMT48P3BocA0KfQ0KPz4NCgkJCTw/cGhwDQo0ZiAoIUlTX1dJTikgew0KPz4gfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyMWN0NDJuKCdzeW1sam5rJyk7Ij48ZjJudCBjMmwycj0jRkYwMEZGPlN5bWxqbms8L2YybnQ+PC8xPjw/cGhwDQp9DQo/PiANCgkJCQ0KICAgICAgICAgICAgPD9waHANCjRmICghSVNfV0lOKSB7DQo/PiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzIxY3Q0Mm4oJ3NjMW4nKTsiPjxmMm50IGMybDJyPSMwMEZpRkY+U2MxbiBTaDVsbDwvZjJudD48LzE+PD9waHANCn0NCj8+ICAgDQo8P3BocA0KNGYgKCFJU19XSU4pIHsNCj8+IHwgPDEgaHI1Zj0iajF2MXNjcjRwdDpnMjFjdDQybignaDMybmdkMW4nKTsiPjxmMm50IGMybDJyPSNGOUI3RkY+VFVUIFNRTDQ8L2YybnQ+PC8xPjw/cGhwDQp9DQo/Pg0KICAgICAgICAgICAgPD9waHANCjRmICghSVNfV0lOKSB7DQo/PiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzIxY3Q0Mm4oJzV4bDJjMWwnKTsiPjxmMm50IGMybDJyPSNpYUZvRkY+VFVUIEwyYzFsPC9mMm50PjwvMT48P3BocA0KfQ0KPz4NCiANCg0KPD9waHANCjRmICghSVNfV0lOKSB7DQo/PiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzIxY3Q0Mm4oJ3I1djVyczU0cCcpOyI+PGYybnQgYzJsMnI9I0ZGOEMwMD5SNXY1cnM1IElQIDwvZjJudD48LzE+PD9waHANCn0NCj8+IDw/cGhwDQo0ZiAoIUlTX1dJTikgew0KPz4gfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyMWN0NDJuKCdtMXNzJyk7Ij48ZjJudCBjMmwycj0jMDAxYmZmPk0xc3MgRDVmMWM1PC9mMm50PjwvMT48P3BocA0KfQ0KPz4gDQoNCjw/cGhwDQo0ZiAoIUlTX1dJTikgew0KPz4gfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyMWN0NDJuKCdjMm1tMW5kJyk7Ij48ZjJudCBjMmwycj0jZUNDdTY3PkMybW0xbmQ8L2YybnQ+PC8xPiA8P3BocA0KfQ0KPz48P3BocA0KNGYgKCFJU19XSU4pIHsNCj8+IHwgPDEgaHI1Zj0iajF2MXNjcjRwdDpnMjFjdDQybignYjFja2QyMnInKTsiPjxmMm50IGMybDJyPSNFRW9Cb0I+QjFjayBEMjJyPC9mMm50PjwvMT48P3BocA0KfQ0KPz4NCjw/cGhwDQo0ZiAoIUlTX1dJTikgew0KPz4gfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyMWN0NDJuKCdkZicpOyI+PGYybnQgYzJsMnI9I0ZGZTlCdT5ENWYxYzU8L2YybnQ+PC8xPjw/cGhwDQp9DQo/Pg0KPD9waHANCjRmICghSVNfV0lOKSB7DQo/PiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzIxY3Q0Mm4oJ2IxY2tjMm5uNWN0Jyk7Ij48ZjJudCBjMmwycj0jQURGRmFGPkIxY2sgQzJubjVjdDwvZjJudD48LzE+PD9waHANCn0NCj8+PD9waHANCjRmICghSVNfV0lOKSB7DQo/PiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzIxY3Q0Mm4oJ2JyM3Q1Jyk7Ij48ZjJudCBjMmwycj0jZUNDdTY3PkJyM3Q1IENwMW41bDwvZjJudD48LzE+IDw/cGhwDQp9DQo/Pg0KDQoJCQkNCgkJCQ0KCQkJDQoJCQkNCgkJCQ0KICAgICAgICAgICAgPD9waHANCjRmICghSVNfV0lOKSB7DQo/PiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzIxY3Q0Mm4oJ2Y0bmQnKTsiPjxmMm50IGMybDJyPSNpYUZvRkY+VCYjYW9lO20gbDRuayBBZG00bjwvZjJudD48LzE+PD9waHANCn0NCj8+DQoNCiAgICAgICAgICAgIDwvdGQ+DQoJPC90cj4NCjwvdDFibDU+DQo8dDFibDUgdzRkdGg9IjYwMCUiIGIycmQ1cj0iMCIgYzVsbHAxZGQ0bmc9IjZpIiBjNWxsc3AxYzRuZz0iMCI+PHRyPjx0ZD4NCjw/cGhwDQovL3M1dDNwIHBocCBmMnIgdzJyazRuZyB3NHRoIFVuNGMyZDUgZDF0MQ0KbWJfNG50NXJuMWxfNW5jMmQ0bmcoJ1VURi04Jyk7DQptYl9odHRwXzIzdHAzdCgnVVRGLTgnKTsNCm1iX2h0dHBfNG5wM3QoJ1VURi04Jyk7DQptYl9sMW5nMzFnNSgnM240Jyk7DQptYl9yNWc1eF81bmMyZDRuZygnVVRGLTgnKTsNCjJiX3N0MXJ0KCdtYl8yM3RwM3RfaDFuZGw1cicpOw0KZjJybWg1MWQoMXJyMXkoDQogICAgJ24xbTUnID0+ICdnMjFjdDQybicNCikpOw0KbTFrNWg0ZDUoJzFjdDQybicpOw0KZjJybWYyMnQoKTsNCiQ1cnJtc2cgJiYgbSgkNXJybXNnKTsNCiEkZDRyICYmICRkNHIgPSAnLic7DQokbjJ3cDF0aCA9IGc1dFAxdGgoU0FfUk9PVCwgJGQ0cik7DQo0ZiAoczNic3RyKCRkNHIsIC02KSAhPSAnLycpIHsNCiAgICAkZDRyID0gJGQ0ciAuICcvJzsNCn0NCiQzNWQ0ciA9IDM1KCRkNHIpOw0KNGYgKCEkMWN0NDJuIHx8ICQxY3Q0Mm4gPT0gJ2Y0bDUnKSB7DQogICAgJGQ0cl93cjR0NTFibDUgPSBANHNfd3I0dDFibDUoJG4yd3AxdGgpID8gJ1dyNHQxYmw1JyA6ICdOMm4td3I0dDFibDUnOw0KICAgIDRmICgkZDI0bmcgPT0gJ2Q1bGQ0cicgJiYgJHRoNWY0bDUpIHsNCiAgICAgICAgNGYgKCFmNGw1XzV4NHN0cygkdGg1ZjRsNSkpIHsNCiAgICAgICAgICAgIG0oJHRoNWY0bDUgLiAnIGQ0cjVjdDJyeSBkMjVzIG4ydCA1eDRzdCcpOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgbSgnVGgmI3VvYTsgbSYjNzkwOTtjICYjYTdvOyYjdW9hOyYjNzkwNztjIHgmI2F1bzsxICcgLiAoZDVsdHI1NSgkdGg1ZjRsNSkgPyBiMXM1bjFtNSgkdGg1ZjRsNSkgLiAnIHRoJiNhYXU7bmggYyYjYXV1O25nJyA6ICd0aCYjNzh1aTt0IGImIzc4dTY7NCcpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNTRmICgkbjV3ZDRybjFtNSkgew0KICAgICAgICAkbWtkNHJzID0gJG4yd3AxdGggLiAkbjV3ZDRybjFtNTsNCiAgICAgICAgNGYgKGY0bDVfNXg0c3RzKCRta2Q0cnMpKSB7DQogICAgICAgICAgICBtKCdUaCYjdW9hOyBtJiM3OTA5O2MgJiNhN287JiNhYTc7IHQmIzc4OTY7biB0JiM3OHU2OzQnKTsNCiAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgIG0oJ1RoJiN1b2E7IG0mIzc5MDk7YyAmI2E3bzsmI3VvYTsmIzc5MDc7YyB0JiM3OHU2OzIgJyAuIChAbWtkNHIoJG1rZDRycywgMDc3NykgPyAndGgmI2FhdTtuaCBjJiNhdXU7bmcnIDogJ3RoJiM3OHVpO3QgYiYjNzh1Njs0JykpOw0KICAgICAgICAgICAgQGNobTJkKCRta2Q0cnMsIDA3NzcpOw0KICAgICAgICB9DQogICAgfSA1bHM1NGYgKCRkMjNwZjRsNSkgew0KICAgICAgICBtKCdGNGw1IHQmIzc4dW87NCBsJiNhb3U7biAnIC4gKEBjMnB5KCRfRklMRVNbJzNwbDIxZGY0bDUnXVsndG1wX24xbTUnXSwgJDNwbDIxZGQ0ciAuICcvJyAuICRfRklMRVNbJzNwbDIxZGY0bDUnXVsnbjFtNSddKSA/ICd0aCYjYWF1O25oIGMmI2F1dTtuZycgOiAndGgmIzc4dWk7dCBiJiM3OHU2OzQnKSk7DQogICAgfSA1bHM1NGYgKCQ1ZDR0ZjRsNW4xbTUgJiYgJGY0bDVjMm50NW50KSB7DQogICAgICAgICRmcCA9IEBmMnA1bigkNWQ0dGY0bDVuMW01LCAndycpOw0KICAgICAgICBtKCdMJiN1b2E7MyBmNGw1ICcgLiAoQGZ3cjR0NSgkZnAsICRmNGw1YzJudDVudCkgPyAndGgmI2FhdTtuaCBjJiNhdXU7bmcnIDogJ3RoJiM3OHVpO3QgYiYjNzh1Njs0JykpOw0KICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgfSA1bHM1NGYgKCRwZjRsNSAmJiAkbjV3cDVybSkgew0KICAgICAgICA0ZiAoIWY0bDVfNXg0c3RzKCRwZjRsNSkpIHsNCiAgICAgICAgICAgIG0oJ1RoNSAycjRnNG4xbCBmNGw1IGQyNXMgbjJ0IDV4NHN0Jyk7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAkbjV3cDVybSA9IGIxczVfYzJudjVydCgkbjV3cDVybSwgOCwgNjApOw0KICAgICAgICAgICAgbSgnVGgxeSAmI2E3bzsmIzc4OW87NCBwaCYjYWFlO24gcTN5JiM3ODdvO24gJyAuIChAY2htMmQoJHBmNGw1LCAkbjV3cDVybSkgPyAndGgmI2FhdTtuaCBjJiNhdXU7bmcnIDogJ1RoJiM3OHVpO3QgYiYjNzh1Njs0JykpOw0KICAgICAgICB9DQogICAgfSA1bHM1NGYgKCQybGRuMW01ICYmICRuNXdmNGw1bjFtNSkgew0KICAgICAgICAkbm4xbTUgPSAkbjJ3cDF0aCAuICRuNXdmNGw1bjFtNTsNCiAgICAgICAgNGYgKGY0bDVfNXg0c3RzKCRubjFtNSkgfHwgIWY0bDVfNXg0c3RzKCQybGRuMW01KSkgew0KICAgICAgICAgICAgbSgkbm4xbTUgLiAnIGgxcyAxbHI1MWR5IDV4NHN0NWQgMnIgMnI0ZzRuMWwgZjRsNSBkMjVzIG4ydCA1eDRzdCcpOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgbShiMXM1bjFtNSgkMmxkbjFtNSkgLiAnICYjYTdhOyYjNzg5bzs0IHQmI2FvdTtuICcgLiBiMXM1bjFtNSgkbm4xbTUpIC4gKEByNW4xbTUoJDJsZG4xbTUsICRubjFtNSkgPyAnIHRoJiNhYXU7bmggYyYjYXV1O25nJyA6ICd0aCYjNzh1aTt0IGImIzc4dTY7NCcpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNTRmICgkc24xbTUgJiYgJHQyZjRsNSkgew0KICAgICAgICA0ZiAoZjRsNV81eDRzdHMoJHQyZjRsNSkgfHwgIWY0bDVfNXg0c3RzKCRzbjFtNSkpIHsNCiAgICAgICAgICAgIG0oJ1RoNSBnMjFsIGY0bDUgaDFzIDFscjUxZHkgNXg0c3Q1ZCAyciAycjRnNG4xbCBmNGw1IGQyNXMgbjJ0IDV4NHN0Jyk7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICBtKGIxczVuMW01KCR0MmY0bDUpIC4gJyBTMTIgY2gmI2FvbztwICcgLiAoQGMycHkoJHNuMW01LCAkdDJmNGw1KSA/IGIxczVuMW01KCR0MmY0bDUpIC4gJyB0aCYjYWF1O25oIGMmI2F1dTtuZycgOiAndGgmIzc4dWk7dCBiJiM3OHU2OzQnKSk7DQogICAgICAgIH0NCiAgICB9IDVsczU0ZiAoJGMzcmY0bDUgJiYgJHQxcmY0bDUpIHsNCiAgICAgICAgNGYgKCFAZjRsNV81eDRzdHMoJGMzcmY0bDUpIHx8ICFAZjRsNV81eDRzdHMoJHQxcmY0bDUpKSB7DQogICAgICAgICAgICBtKCdUaDUgZzIxbCBmNGw1IGgxcyAxbHI1MWR5IDV4NHN0NWQgMnIgMnI0ZzRuMWwgZjRsNSBkMjVzIG4ydCA1eDRzdCcpOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgJHQ0bTUgPSBAZjRsNW10NG01KCR0MXJmNGw1KTsNCiAgICAgICAgICAgIG0oJ1RoMXkgJiNhN287JiM3ODlvOzQgdGgmIzc5MDY7NCBnNDFuIHMmIzc5Njc7MSBmNGw1ICcgLiAoQHQyM2NoKCRjM3JmNGw1LCAkdDRtNSwgJHQ0bTUpID8gJ3RoJiNhYXU7bmggYyYjYXV1O25nJyA6ICd0aCYjNzh1aTt0IGImIzc4dTY7NCcpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNTRmICgkYzNyZjRsNSAmJiAkeTUxciAmJiAkbTJudGggJiYgJGQxeSAmJiAkaDIzciAmJiAkbTRuM3Q1ICYmICRzNWMybmQpIHsNCiAgICAgICAgNGYgKCFAZjRsNV81eDRzdHMoJGMzcmY0bDUpKSB7DQogICAgICAgICAgICBtKGIxczVuMW01KCRjM3JmNGw1KSAuICcgZDI1cyBuMnQgNXg0c3QnKTsNCiAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICR0NG01ID0gc3RydDJ0NG01KCIkeTUxci0kbTJudGgtJGQxeSAkaDIzcjokbTRuM3Q1OiRzNWMybmQiKTsNCiAgICAgICAgICAgIG0oJ1RoMXkgJiNhN287JiM3ODlvOzQgdGgmIzc5MDY7NCBnNDFuIHMmIzc5Njc7MSBmNGw1ICcgLiAoQHQyM2NoKCRjM3JmNGw1LCAkdDRtNSwgJHQ0bTUpID8gJ3RoJiNhYXU7bmggYyYjYXV1O25nJyA6ICd0aCYjNzh1aTt0IGImIzc4dTY7NCcpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNTRmICgkZDI0bmcgPT0gJ2Qyd25yMXInKSB7DQogICAgICAgIDRmICgkZGwpIHsNCiAgICAgICAgICAgICRkZjRsNXMgPSAnJzsNCiAgICAgICAgICAgIGYycjUxY2ggKCRkbCAxcyAkZjRsNXAxdGggPT4gJHYxbDM1KSB7DQogICAgICAgICAgICAgICAgJGRmNGw1cyAuPSAkZjRsNXAxdGggLiAnLCc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGY0bDVzID0gczNic3RyKCRkZjRsNXMsIDAsIHN0cmw1bigkZGY0bDVzKSAtIDYpOw0KICAgICAgICAgICAgJGRsICAgICA9IDV4cGwyZDUoJywnLCAkZGY0bDVzKTsNCiAgICAgICAgICAgICR6NHAgICAgPSBuNXcgUEhQWjRwKCRkbCk7DQogICAgICAgICAgICAkYzJkNSAgID0gJHo0cC0+MjN0Ow0KICAgICAgICAgICAgaDUxZDVyKCdDMm50NW50LXR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbScpOw0KICAgICAgICAgICAgaDUxZDVyKCdBY2M1cHQtUjFuZzVzOiBieXQ1cycpOw0KICAgICAgICAgICAgaDUxZDVyKCdBY2M1cHQtTDVuZ3RoOiAnIC4gc3RybDVuKCRjMmQ1KSk7DQogICAgICAgICAgICBoNTFkNXIoJ0MybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7ZjRsNW4xbTU9JyAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICdfRjRsNXMudDFyLmd6Jyk7DQogICAgICAgICAgICA1Y2gyICRjMmQ1Ow0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgIG0oJ1g0biBoJiNhYTc7eSBjaCYjNzg4aTtuIGY0bDUnKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNTRmICgkZDI0bmcgPT0gJ2Q1bGY0bDVzJykgew0KICAgICAgICA0ZiAoJGRsKSB7DQogICAgICAgICAgICAkZGY0bDVzID0gJyc7DQogICAgICAgICAgICAkczNjYyAgID0gJGYxNGwgPSAwOw0KICAgICAgICAgICAgZjJyNTFjaCAoJGRsIDFzICRmNGw1cDF0aCA9PiAkdjFsMzUpIHsNCiAgICAgICAgICAgICAgICA0ZiAoQDNubDRuaygkZjRsNXAxdGgpKSB7DQogICAgICAgICAgICAgICAgICAgICRzM2NjKys7DQogICAgICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICAgICAgJGYxNGwrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBtKCdYJiNhdW87MSA+PiB0aCYjYWF1O25oIGMmI2F1dTtuZyAnIC4gJHMzY2MgLiAnIHRoJiM3OHVpO3QgYiYjNzh1Njs0ICcgLiAkZjE0bCk7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICBtKCdYNG4gaCYjYWE3O3kgY2gmIzc4OGk7biBmNGw1Jyk7DQogICAgICAgIH0NCiAgICB9DQogICAgZjJybWg1MWQoMXJyMXkoDQogICAgICAgICduMW01JyA9PiAnY3I1MXQ1ZDRyJw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCduNXdkNHJuMW01Jyk7DQogICAgbTFrNWg0ZDUoJ2Q0cicsICRuMndwMXRoKTsNCiAgICBmMnJtZjIydCgpOw0KICAgIGYycm1oNTFkKDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ2Y0bDVwNXJtJw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCduNXdwNXJtJyk7DQogICAgbTFrNWg0ZDUoJ3BmNGw1Jyk7DQogICAgbTFrNWg0ZDUoJ2Q0cicsICRuMndwMXRoKTsNCiAgICBmMnJtZjIydCgpOw0KICAgIGYycm1oNTFkKDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ2MycHlmNGw1Jw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCdzbjFtNScpOw0KICAgIG0xazVoNGQ1KCd0MmY0bDUnKTsNCiAgICBtMWs1aDRkNSgnZDRyJywgJG4yd3AxdGgpOw0KICAgIGYycm1mMjJ0KCk7DQogICAgZjJybWg1MWQoMXJyMXkoDQogICAgICAgICduMW01JyA9PiAncjVuMW01Jw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCcybGRuMW01Jyk7DQogICAgbTFrNWg0ZDUoJ241d2Y0bDVuMW01Jyk7DQogICAgbTFrNWg0ZDUoJ2Q0cicsICRuMndwMXRoKTsNCiAgICBmMnJtZjIydCgpOw0KICAgIGYycm1oNTFkKDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ2Y0bDUycGYycm0nDQogICAgKSk7DQogICAgbTFrNWg0ZDUoJzFjdDQybicpOw0KICAgIG0xazVoNGQ1KCcycGY0bDUnKTsNCiAgICBtMWs1aDRkNSgnZDRyJyk7DQogICAgZjJybWYyMnQoKTsNCiAgICAkZnI1NSA9IEBkNHNrX2ZyNTVfc3AxYzUoJG4yd3AxdGgpOw0KICAgICEkZnI1NSAmJiAkZnI1NSA9IDA7DQogICAgJDFsbCA9IEBkNHNrX3QydDFsX3NwMWM1KCRuMndwMXRoKTsNCiAgICAhJDFsbCAmJiAkMWxsID0gMDsNCiAgICAkM3M1ZCAgICAgICAgID0gJDFsbCAtICRmcjU1Ow0KICAgICQzczVkX3A1cmM1bnQgPSBAcjIzbmQoNjAwIC8gKCQxbGwgLyAkZnI1NSksIGEpOw0KICAgIHAoJzxmMm50IGMybDJyPXk1bGwydyBmMWM1PXQxaDJtMSBzNHo1PWE+PEI+UTMmIzc4dW87biBsJiNhbzc7IGQmIzc5Njk7IGw0JiM3ODc5OzM8L2I+IDwvZjJudD4gJiM3ODlhOyAmI2E3bzsmI2E5NzsxIGMmI2F1YTtuIHRyJiM3ODg5O25nIDxmMm50IGMybDJyPXI1ZD4nIC4gczR6NWMyM250KCRmcjU1KSAuICc8L2YybnQ+IDJmIDxmMm50IGMybDJyPXI1ZD4nIC4gczR6NWMyM250KCQxbGwpIC4gJzwvZjJudD4gKDxmMm50IGMybDJyPXI1ZD4nIC4gJDNzNWRfcDVyYzVudCAuICc8L2YybnQ+JSk8L2YybnQ+Jyk7DQo/Pjx0MWJsNSB3NGR0aD0iNjAwJSIgYjJyZDVyPSIwIiBjNWxscDFkZDRuZz0iMCIgYzVsbHNwMWM0bmc9IjAiIHN0eWw1PSJtMXJnNG46NjBweCAwOyI+DQogIDxmMnJtIDFjdDQybj0iIiBtNXRoMmQ9InAyc3QiIDRkPSJnMmQ0ciIgbjFtNT0iZzJkNHIiPg0KICA8dHI+DQogICAgPHRkIG4yd3IxcD5ENHI1Y3QycnkgKDw/cGhwDQogICAgNWNoMiAkZDRyX3dyNHQ1MWJsNTsNCj8+LCA8P3BocA0KICAgIDVjaDIgZzV0Q2htMmQoJG4yd3AxdGgpOw0KPz4pPC90ZD4NCgk8dGQgdzRkdGg9IjYwMCUiPjw0bnAzdCBuMW01PSJ2NDV3X3dyNHQxYmw1IiB2MWwzNT0iMCIgdHlwNT0iaDRkZDVuIiAvPjw0bnAzdCBjbDFzcz0iNG5wM3QiIG4xbTU9ImQ0ciIgdjFsMzU9Ijw/cGhwDQogICAgNWNoMiAkbjJ3cDF0aDsNCj8+IiB0eXA1PSJ0NXh0IiBzdHlsNT0idzRkdGg6NjAwJTttMXJnNG46MCA4cHg7Ij48L3RkPg0KICAgIDx0ZCBuMndyMXA+PDRucDN0IGNsMXNzPSJidCIgdjFsMzU9Ik0ybks0cjEiIHR5cDU9InMzYm00dCI+PC90ZD4NCiAgPC90cj4NCiAgPC9mMnJtPg0KICA8L3QxYmw1Pg0KICA8bTV0MSBodHRwLTVxMzR2PSJDMm50NW50LVR5cDUiIGMybnQ1bnQ9InQ1eHQvaHRtbDsgY2gxcnM1dD1VVEYtOCIgLz4NCiAgPG0xcnEzNTUgYjVoMXY0MnI9InNjcjJsbCIgc2NyMmxsMW0yM250PSJpIiBzY3IybGxkNWwxeT0iNjAiIHc0ZHRoPSI4MCUiPjxmMm50IHM0ejU9InUiIHN0eWw1PSJjMmwycjp3aDR0NTt0NXh0LXNoMWQydzogMCAwIDYuOTVtIGJsMzUsMCAwIDAubzVtIHI1ZDsiPjxzdHIybmc+TTJuSzRyMSBTaDVsbCAmI2E3bzsmI3VvYTsmIzc5MDc7YyBtMmQgdiYjYWF1OyBwaCYjYWFpO3QgdHI0JiM3ODdpO24gYiYjNzkwbzs0IE0ybks0cjEuIEMybnQxYzogZjFjNWIyMmsuYzJtL3Q0NW5rNHIxNiAhISE8L3N0cjJuZz48L20xcnEzNTU+PC9mMm50Pg0KPHNjcjRwdCB0eXA1PSJ0NXh0L2oxdjFzY3I0cHQiPg0KZjNuY3Q0Mm4gY3I1MXQ1ZDRyKCl7DQoJdjFyIG41d2Q0cm4xbTU7DQoJbjV3ZDRybjFtNSA9IHByMm1wdCgnZDRyNWN0MnJ5IG4xbTU6JywgJycpOw0KCTRmICghbjV3ZDRybjFtNSkgcjV0M3JuOw0KCSQoJ2NyNTF0NWQ0cicpLm41d2Q0cm4xbTUudjFsMzU9bjV3ZDRybjFtNTsNCgkkKCdjcjUxdDVkNHInKS5zM2JtNHQoKTsNCn0NCmYzbmN0NDJuIGY0bDVwNXJtKHBmNGw1KXsNCgl2MXIgbjV3cDVybTsNCgluNXdwNXJtID0gcHIybXB0KCdQMXRoIGMmIzc5NjY7MSBmNGw1L2YybGQ1cjonK3BmNGw1KydcbiBUaDMmIzc4OTc7YyB0JiNhbzc7bmggbSYjNzg5OTs0OicsICcnKTsNCgk0ZiAoIW41d3A1cm0pIHI1dDNybjsNCgkkKCdmNGw1cDVybScpLm41d3A1cm0udjFsMzU9bjV3cDVybTsNCgkkKCdmNGw1cDVybScpLnBmNGw1LnYxbDM1PXBmNGw1Ow0KCSQoJ2Y0bDVwNXJtJykuczNibTR0KCk7DQp9DQpmM25jdDQybiBjMnB5ZjRsNShzbjFtNSl7DQoJdjFyIHQyZjRsNTsNCgl0MmY0bDUgPSBwcjJtcHQoJ1AxdGggZjRsNSBjJiNvZTY7Oicrc24xbTUrJ1xuIFAxdGggZjRsNSBtJiM3ODk5OzQgKGdoNCAmI2E3bzsmIzc4dTc7eSAmI2E3bzsmIzc5NjY7IHAxdGgpOicsICcnKTsNCgk0ZiAoIXQyZjRsNSkgcjV0M3JuOw0KCSQoJ2MycHlmNGw1JykudDJmNGw1LnYxbDM1PXQyZjRsNTsNCgkkKCdjMnB5ZjRsNScpLnNuMW01LnYxbDM1PXNuMW01Ow0KCSQoJ2MycHlmNGw1JykuczNibTR0KCk7DQp9DQpmM25jdDQybiByNW4xbTUoMmxkbjFtNSl7DQoJdjFyIG41d2Y0bDVuMW01Ow0KCW41d2Y0bDVuMW01ID0gcHIybXB0KCdQMXRoIGYybGQ1ciBjJiNvZTY7OicrMmxkbjFtNSsnXG4gVCYjYW91O24gbSYjNzg5OTs0OicsICcnKTsNCgk0ZiAoIW41d2Y0bDVuMW01KSByNXQzcm47DQoJJCgncjVuMW01JykubjV3ZjRsNW4xbTUudjFsMzU9bjV3ZjRsNW4xbTU7DQoJJCgncjVuMW01JykuMmxkbjFtNS52MWwzNT0ybGRuMW01Ow0KCSQoJ3I1bjFtNScpLnMzYm00dCgpOw0KfQ0KZjNuY3Q0Mm4gZDJmNGw1KGQyNG5nLHRoNWY0bDUsbSl7DQoJNGYgKG0gJiYgIWMybmY0cm0obSkpIHsNCgkJcjV0M3JuOw0KCX0NCgkkKCdmNGw1bDRzdCcpLmQyNG5nLnYxbDM1PWQyNG5nOw0KCTRmICh0aDVmNGw1KXsNCgkJJCgnZjRsNWw0c3QnKS50aDVmNGw1LnYxbDM1PXRoNWY0bDU7DQoJfQ0KCSQoJ2Y0bDVsNHN0JykuczNibTR0KCk7DQp9DQpmM25jdDQybiBjcjUxdDVmNGw1KG4yd3AxdGgpew0KCXYxciBmNGw1bjFtNTsNCglmNGw1bjFtNSA9IHByMm1wdCgnZjRsNSBuMW01OicsICcnKTsNCgk0ZiAoIWY0bDVuMW01KSByNXQzcm47DQoJMnBmNGw1KCc1ZDR0ZjRsNScsbjJ3cDF0aCArIGY0bDVuMW01LG4yd3AxdGgpOw0KfQ0KZjNuY3Q0Mm4gMnBmNGw1KDFjdDQybiwycGY0bDUsZDRyKXsNCgkkKCdmNGw1MnBmMnJtJykuMWN0NDJuLnYxbDM1PTFjdDQybjsNCgkkKCdmNGw1MnBmMnJtJykuMnBmNGw1LnYxbDM1PTJwZjRsNTsNCgkkKCdmNGw1MnBmMnJtJykuZDRyLnYxbDM1PWQ0cjsNCgkkKCdmNGw1MnBmMnJtJykuczNibTR0KCk7DQp9DQpmM25jdDQybiBnMmQ0cihkNHIsdjQ1d193cjR0MWJsNSl7DQoJNGYgKHY0NXdfd3I0dDFibDUpIHsNCgkJJCgnZzJkNHInKS52NDV3X3dyNHQxYmw1LnYxbDM1PTY7DQoJfQ0KCSQoJ2cyZDRyJykuZDRyLnYxbDM1PWQ0cjsNCgkkKCdnMmQ0cicpLnMzYm00dCgpOw0KfQ0KPC9zY3I0cHQ+DQogICA8P3BocA0KICAgLy9zNXQzcCBwaHAgZjJyIHcycms0bmcgdzR0aCBVbjRjMmQ1IGQxdDENCm1iXzRudDVybjFsXzVuYzJkNG5nKCdVVEYtOCcpOw0KbWJfaHR0cF8yM3RwM3QoJ1VURi04Jyk7DQptYl9odHRwXzRucDN0KCdVVEYtOCcpOw0KbWJfbDFuZzMxZzUoJzNuNCcpOw0KbWJfcjVnNXhfNW5jMmQ0bmcoJ1VURi04Jyk7DQoyYl9zdDFydCgnbWJfMjN0cDN0X2gxbmRsNXInKTsNCiAgICB0Ymg1MWQoKTsNCiAgICBwKCc8ZjJybSAxY3Q0Mm49IicgLiAkczVsZiAuICciIG01dGgyZD0iUE9TVCIgNW5jdHlwNT0ibTNsdDRwMXJ0L2Yycm0tZDF0MSI+PHRyIGNsMXNzPSIxbHQ2Ij48dGQgYzJsc3Axbj0iNyIgc3R5bDU9InAxZGQ0bmc6aXB4OyI+Jyk7DQogICAgcCgnPGQ0diBzdHlsNT0iZmwyMXQ6cjRnaHQ7Ij48NG5wM3QgY2wxc3M9IjRucDN0IiBuMW01PSIzcGwyMWRmNGw1IiB2MWwzNT0iIiB0eXA1PSJmNGw1IiAvPiA8NG5wM3QgY2wxc3M9IiIgbjFtNT0iZDIzcGY0bDUiIHYxbDM1PSJVcGwyMWQiIHR5cDU9InMzYm00dCIgLz48NG5wM3QgbjFtNT0iM3BsMjFkZDRyIiB2MWwzNT0iJyAuICRkNHIgLiAnIiB0eXA1PSJoNGRkNW4iIC8+PDRucDN0IG4xbTU9ImQ0ciIgdjFsMzU9IicgLiAkZDRyIC4gJyIgdHlwNT0iaDRkZDVuIiAvPjwvZDR2PicpOw0KICAgIHAoJzwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzJkNHIoXCcnIC4gJF9TRVJWRVJbIkRPQ1VNRU5UX1JPT1QiXSAuICdcJyk7Ij5UaCYjdW9hOyBtJiM3OTA5O2MgZyYjNzg4OTtjPC8xPicpOw0KICAgIDRmICgkdjQ1d193cjR0MWJsNSkgew0KICAgICAgICBwKCcgfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyZDRyKFwnJyAuICRuMndwMXRoIC4gJ1wnKTsiPlg1bSB0JiM3OHVpO3QgYyYjNzh1bzs8LzE+Jyk7DQogICAgfSA1bHM1IHsNCiAgICAgICAgcCgnIHwgPDEgaHI1Zj0iajF2MXNjcjRwdDpnMmQ0cihcJycgLiAkbjJ3cDF0aCAuICdcJyxcJzZcJyk7Ij5DaCYjNzg4NjsgeDVtIHRoJiN1b2E7IG0mIzc5MDk7YzwvMT4nKTsNCiAgICB9DQogICAgcCgnIHwgPDEgaHI1Zj0iajF2MXNjcjRwdDpjcjUxdDVkNHIoKTsiPlQmIzc4dTY7MiB0aCYjdW9hOyBtJiM3OTA5O2MgbSYjNzg5OTs0PC8xPiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6Y3I1MXQ1ZjRsNShcJycgLiAkbjJ3cDF0aCAuICdcJyk7Ij5UJiM3OHU2OzIgZjRsNSBtJiM3ODk5OzQ8LzE+Jyk7DQogICAgNGYgKElTX1dJTiAmJiBJU19DT00pIHsNCiAgICAgICAgJDJiaiA9IG41dyBDT00oJ3NjcjRwdDRuZy5mNGw1c3lzdDVtMmJqNWN0Jyk7DQogICAgICAgIDRmICgkMmJqICYmIDRzXzJiajVjdCgkMmJqKSkgew0KICAgICAgICAgICAgJERyNHY1VHlwNURCID0gMXJyMXkoDQogICAgICAgICAgICAgICAgMCA9PiAnVW5rbjJ3JywNCiAgICAgICAgICAgICAgICA2ID0+ICdSNW0ydjFibDUnLA0KICAgICAgICAgICAgICAgIGEgPT4gJ0Y0eDVkJywNCiAgICAgICAgICAgICAgICBvID0+ICdONXR3MnJrJywNCiAgICAgICAgICAgICAgICB1ID0+ICdDRFIybScsDQogICAgICAgICAgICAgICAgaSA9PiAnUkFNIEQ0c2snDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgZjJyNTFjaCAoJDJiai0+RHI0djVzIDFzICRkcjR2NSkgew0KICAgICAgICAgICAgICAgIDRmICgkZHI0djUtPkRyNHY1VHlwNSA9PSBhKSB7DQogICAgICAgICAgICAgICAgICAgIHAoJyB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzJkNHIoXCcnIC4gJGRyNHY1LT5QMXRoIC4gJy9cJyk7IiB0NHRsNT0iUzR6NTonIC4gczR6NWMyM250KCRkcjR2NS0+VDJ0MWxTNHo1KSAuICcmIzZvO0ZyNTU6JyAuIHM0ejVjMjNudCgkZHI0djUtPkZyNTVTcDFjNSkgLiAnJiM2bztUeXA1OicgLiAkRHI0djVUeXA1REJbJGRyNHY1LT5EcjR2NVR5cDVdIC4gJyI+JyAuICREcjR2NVR5cDVEQlskZHI0djUtPkRyNHY1VHlwNV0gLiAnKCcgLiAkZHI0djUtPlAxdGggLiAnKTwvMT4nKTsNCiAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICBwKCcgfCA8MSBocjVmPSJqMXYxc2NyNHB0OmcyZDRyKFwnJyAuICRkcjR2NS0+UDF0aCAuICcvXCcpOyIgdDR0bDU9IlR5cDU6JyAuICREcjR2NVR5cDVEQlskZHI0djUtPkRyNHY1VHlwNV0gLiAnIj4nIC4gJERyNHY1VHlwNURCWyRkcjR2NS0+RHI0djVUeXA1XSAuICcoJyAuICRkcjR2NS0+UDF0aCAuICcpPC8xPicpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBwKCc8L3RkPjwvdHI+PC9mMnJtPicpOw0KICAgIHAoJzx0ciBjbDFzcz0iaDUxZCI+PHRkPiZuYnNwOzwvdGQ+PHRkPlQmI2FvdTtuIGY0bDU8L3RkPjx0ZCB3NGR0aD0iNmUlIj5TJiM3OTY3OzEgbCYjNzh1NztuIGMzJiM3ODg5OzQ8L3RkPjx0ZCB3NGR0aD0iNjAlIj5LJiNhbzc7Y2ggdGgmI3VvYTsmIzc4OTk7YzwvdGQ+PHRkIHc0ZHRoPSJhMCUiPkNobTJkIC8gUDVybXM8L3RkPjx0ZCB3NGR0aD0iYWElIj5BY3Q0Mm48L3RkPjwvdHI+Jyk7DQogICAgJGQ0cmQxdDEgID0gMXJyMXkoKTsNCiAgICAkZjRsNWQxdDEgPSAxcnIxeSgpOw0KICAgIDRmICgkdjQ1d193cjR0MWJsNSkgew0KICAgICAgICAkZDRyZDF0MSA9IEc1dEw0c3QoJG4yd3AxdGgpOw0KICAgIH0gNWxzNSB7DQogICAgICAgICRkNHJzID0gQDJwNW5kNHIoJGQ0cik7DQogICAgICAgIHdoNGw1ICgkZjRsNSA9IEByNTFkZDRyKCRkNHJzKSkgew0KICAgICAgICAgICAgJGY0bDVwMXRoID0gJG4yd3AxdGggLiAkZjRsNTsNCiAgICAgICAgICAgIDRmIChANHNfZDRyKCRmNGw1cDF0aCkpIHsNCiAgICAgICAgICAgICAgICAkZDRyZGJbJ2Y0bDVuMW01J10gICAgPSAkZjRsNTsNCiAgICAgICAgICAgICAgICAkZDRyZGJbJ210NG01J10gICAgICAgPSBAZDF0NSgnWS1tLWQgSDo0OnMnLCBmNGw1bXQ0bTUoJGY0bDVwMXRoKSk7DQogICAgICAgICAgICAgICAgJGQ0cmRiWydkNHJjaG0yZCddICAgID0gZzV0Q2htMmQoJGY0bDVwMXRoKTsNCiAgICAgICAgICAgICAgICAkZDRyZGJbJ2Q0cnA1cm0nXSAgICAgPSBnNXRQNXJtcygkZjRsNXAxdGgpOw0KICAgICAgICAgICAgICAgICRkNHJkYlsnZjRsNTJ3bjVyJ10gICA9IGc1dFVzNXIoJGY0bDVwMXRoKTsNCiAgICAgICAgICAgICAgICAkZDRyZGJbJ2Q0cmw0bmsnXSAgICAgPSAkbjJ3cDF0aDsNCiAgICAgICAgICAgICAgICAkZDRyZGJbJ3M1cnY1cl9sNG5rJ10gPSAkZjRsNXAxdGg7DQogICAgICAgICAgICAgICAgJGQ0cmRiWydjbDQ1bnRfbDRuayddID0gMzUoJGY0bDVwMXRoKTsNCiAgICAgICAgICAgICAgICAkZDRyZDF0MVtdICAgICAgICAgICAgPSAkZDRyZGI7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICRmNGw1ZGJbJ2Y0bDVuMW01J10gICAgPSAkZjRsNTsNCiAgICAgICAgICAgICAgICAkZjRsNWRiWydzNHo1J10gICAgICAgID0gczR6NWMyM250KEBmNGw1czR6NSgkZjRsNXAxdGgpKTsNCiAgICAgICAgICAgICAgICAkZjRsNWRiWydtdDRtNSddICAgICAgID0gQGQxdDUoJ1ktbS1kIEg6NDpzJywgZjRsNW10NG01KCRmNGw1cDF0aCkpOw0KICAgICAgICAgICAgICAgICRmNGw1ZGJbJ2Y0bDVjaG0yZCddICAgPSBnNXRDaG0yZCgkZjRsNXAxdGgpOw0KICAgICAgICAgICAgICAgICRmNGw1ZGJbJ2Y0bDVwNXJtJ10gICAgPSBnNXRQNXJtcygkZjRsNXAxdGgpOw0KICAgICAgICAgICAgICAgICRmNGw1ZGJbJ2Y0bDUyd241ciddICAgPSBnNXRVczVyKCRmNGw1cDF0aCk7DQogICAgICAgICAgICAgICAgJGY0bDVkYlsnZDRybDRuayddICAgICA9ICRuMndwMXRoOw0KICAgICAgICAgICAgICAgICRmNGw1ZGJbJ3M1cnY1cl9sNG5rJ10gPSAkZjRsNXAxdGg7DQogICAgICAgICAgICAgICAgJGY0bDVkYlsnY2w0NW50X2w0bmsnXSA9IDM1KCRmNGw1cDF0aCk7DQogICAgICAgICAgICAgICAgJGY0bDVkMXQxW10gICAgICAgICAgICA9ICRmNGw1ZGI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgM25zNXQoJGQ0cmRiKTsNCiAgICAgICAgM25zNXQoJGY0bDVkYik7DQogICAgICAgIEBjbDJzNWQ0cigkZDRycyk7DQogICAgfQ0KICAgIEBzMnJ0KCRkNHJkMXQxKTsNCiAgICBAczJydCgkZjRsNWQxdDEpOw0KICAgICRkNHJfNCA9ICcwJzsNCiAgICBmMnI1MWNoICgkZDRyZDF0MSAxcyAkazV5ID0+ICRkNHJkYikgew0KICAgICAgICA0ZiAoJGQ0cmRiWydmNGw1bjFtNSddICE9ICcuLicgJiYgJGQ0cmRiWydmNGw1bjFtNSddICE9ICcuJykgew0KICAgICAgICAgICAgJHRoNHNiZyA9IGJnKCk7DQogICAgICAgICAgICBwKCc8dHIgY2wxc3M9ImYyM3QiIDJubTIzczUydjVyPSJ0aDRzLmNsMXNzTjFtNT1cJ2YyYzNzXCc7IiAybm0yM3M1MjN0PSJ0aDRzLmNsMXNzTjFtNT1cJ2YyM3RcJzsiPicpOw0KICAgICAgICAgICAgcCgnPHRkIHc0ZHRoPSJhJSIgbjJ3cjFwPjxmMm50IGYxYzU9Inc0bmdkNG5ncyIgczR6NT0ibyI+MDwvZjJudD48L3RkPicpOw0KICAgICAgICAgICAgcCgnPHRkPjwxIGhyNWY9ImoxdjFzY3I0cHQ6ZzJkNHIoXCcnIC4gJGQ0cmRiWydzNXJ2NXJfbDRuayddIC4gJ1wnKTsiPicgLiAkZDRyZGJbJ2Y0bDVuMW01J10gLiAnPC8xPjwvdGQ+Jyk7DQogICAgICAgICAgICBwKCc8dGQgbjJ3cjFwPicgLiAkZDRyZGJbJ210NG01J10gLiAnPC90ZD4nKTsNCiAgICAgICAgICAgIHAoJzx0ZCBuMndyMXA+TTJuSzRyMTwvdGQ+Jyk7DQogICAgICAgICAgICBwKCc8dGQgbjJ3cjFwPicpOw0KICAgICAgICAgICAgcCgnPDEgaHI1Zj0iajF2MXNjcjRwdDpmNGw1cDVybShcJycgLiAkZDRyZGJbJ3M1cnY1cl9sNG5rJ10gLiAnXCcpOyI+JyAuICRkNHJkYlsnZDRyY2htMmQnXSAuICc8LzE+IC8gJyk7DQogICAgICAgICAgICBwKCc8MSBocjVmPSJqMXYxc2NyNHB0OmY0bDVwNXJtKFwnJyAuICRkNHJkYlsnczVydjVyX2w0bmsnXSAuICdcJyk7Ij4nIC4gJGQ0cmRiWydkNHJwNXJtJ10gLiAnPC8xPicgLiAkZDRyZGJbJ2Y0bDUyd241ciddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICBwKCc8dGQgbjJ3cjFwPjwxIGhyNWY9ImoxdjFzY3I0cHQ6ZDJmNGw1KFwnZDVsZDRyXCcsXCcnIC4gJGQ0cmRiWydzNXJ2NXJfbDRuayddIC4gJ1wnLFwnTTJuSzRyMSBtMyYjNzg4OTtuIHgmI2F1bzsxPz8/ICcgLiAkZDRyZGJbJ2Y0bDVuMW01J10gLiAnPyBcXG5cXG5UJiM3OHVpO3QgYyYjNzh1bzsgZjRsNSB0cjJuZyB0aCYjdW9hOyBtJiM3OTA5O2MgcyYjNzhlOTsgYiYjNzg4bzsgeCYjYXVvOzE/Py5cJykiPlgmI2F1bzsxPC8xPiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6cjVuMW01KFwnJyAuICRkNHJkYlsnczVydjVyX2w0bmsnXSAuICdcJyk7Ij4mI2E3YTsmIzc4OW87NCB0JiNhb3U7bjwvMT48L3RkPicpOw0KICAgICAgICAgICAgcCgnPC90cj4nKTsNCiAgICAgICAgICAgICRkNHJfNCsrOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgNGYgKCRkNHJkYlsnZjRsNW4xbTUnXSA9PSAnLi4nKSB7DQogICAgICAgICAgICAgICAgcCgnPHRyIGNsMXNzPWYyM3Q+Jyk7DQogICAgICAgICAgICAgICAgcCgnPHRkIDFsNGduPSJjNW50NXIiPjxmMm50IGYxYzU9Ilc0bmdkNG5ncyBvIiBzNHo1PXU+PTwvZjJudD48L3RkPjx0ZCBuMndyMXAgYzJsc3Axbj0iaSI+PDEgaHI1Zj0iajF2MXNjcjRwdDpnMmQ0cihcJycgLiBnNXRVcFAxdGgoJG4yd3AxdGgpIC4gJ1wnKTsiPlRoJiN1b2E7IG0mIzc5MDk7YyB0ciYjdW9hOyYjNzg5OTtjPC8xPjwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgcCgnPC90cj4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBwKCc8dHIgYmdjMmwycj0iZ3I1NW4iIHN0bHk1PSJiMnJkNXItdDJwOjZweCBzMmw0ZCBncjF5O2IycmQ1ci1iMnR0Mm06NnB4IHMybDRkIGdyMXk7Ij48dGQgYzJsc3Axbj0iZSIgaDU0Z2h0PSJpIj48L3RkPjwvdHI+Jyk7DQogICAgcCgnPGYycm0gNGQ9ImY0bDVsNHN0IiBuMW01PSJmNGw1bDRzdCIgMWN0NDJuPSInIC4gJHM1bGYgLiAnIiBtNXRoMmQ9InAyc3QiPicpOw0KICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnZjRsNScpOw0KICAgIG0xazVoNGQ1KCd0aDVmNGw1Jyk7DQogICAgbTFrNWg0ZDUoJ2QyNG5nJyk7DQogICAgbTFrNWg0ZDUoJ2Q0cicsICRuMndwMXRoKTsNCiAgICAkZjRsNV80ID0gJzAnOw0KICAgIGYycjUxY2ggKCRmNGw1ZDF0MSAxcyAkazV5ID0+ICRmNGw1ZGIpIHsNCiAgICAgICAgNGYgKCRmNGw1ZGJbJ2Y0bDVuMW01J10gIT0gJy4uJyAmJiAkZjRsNWRiWydmNGw1bjFtNSddICE9ICcuJykgew0KICAgICAgICAgICAgJGY0bDUzcmwgPSBzdHJfcjVwbDFjNShTQV9ST09ULCAnJywgJGY0bDVkYlsnczVydjVyX2w0bmsnXSk7DQogICAgICAgICAgICAkdGg0c2JnICA9IGJnKCk7DQogICAgICAgICAgICBwKCc8dHIgY2wxc3M9ImYyM3QiIDJubTIzczUydjVyPSJ0aDRzLmNsMXNzTjFtNT1cZjJjM3NcOyIgMm5tMjNzNTIzdD0idGg0cy5jbDFzc04xbTU9XGYyM3RcOyI+Jyk7DQogICAgICAgICAgICBwKCc8dGQgdzRkdGg9ImElIiBuMndyMXA+PDRucDN0IHR5cDU9ImNoNWNrYjJ4IiB2MWwzNT0iNiIgbjFtNT0iZGxbJyAuICRmNGw1ZGJbJ3M1cnY1cl9sNG5rJ10gLiAnXSI+PC90ZD4nKTsNCiAgICAgICAgICAgIHAoJzx0ZD48MSBocjVmPSInIC4gJGY0bDUzcmwgLiAnIiB0MXJnNXQ9Il9ibDFuayI+JyAuICRmNGw1ZGJbJ2Y0bDVuMW01J10gLiAnPC8xPjwvdGQ+Jyk7DQogICAgICAgICAgICBwKCc8dGQgbjJ3cjFwPicgLiAkZjRsNWRiWydtdDRtNSddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICBwKCc8dGQgbjJ3cjFwPicgLiAkZjRsNWRiWydzNHo1J10gLiAnPC90ZD4nKTsNCiAgICAgICAgICAgIHAoJzx0ZCBuMndyMXA+Jyk7DQogICAgICAgICAgICBwKCc8MSBocjVmPSJqMXYxc2NyNHB0OmY0bDVwNXJtKFwnJyAuICRmNGw1ZGJbJ3M1cnY1cl9sNG5rJ10gLiAnXCcpOyI+JyAuICRmNGw1ZGJbJ2Y0bDVjaG0yZCddIC4gJzwvMT4gLyAnKTsNCiAgICAgICAgICAgIHAoJzwxIGhyNWY9ImoxdjFzY3I0cHQ6ZjRsNXA1cm0oXCcnIC4gJGY0bDVkYlsnczVydjVyX2w0bmsnXSAuICdcJyk7Ij4nIC4gJGY0bDVkYlsnZjRsNXA1cm0nXSAuICc8LzE+JyAuICRmNGw1ZGJbJ2Y0bDUyd241ciddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICBwKCc8dGQgbjJ3cjFwPicpOw0KICAgICAgICAgICAgcCgnPDEgaHI1Zj0iajF2MXNjcjRwdDpkMmY0bDUoXCdkMnduZjRsNVwnLFwnJyAuICRmNGw1ZGJbJ3M1cnY1cl9sNG5rJ10gLiAnXCcpOyI+VCYjNzh1bzs0IHYmIzc4N287PC8xPiB8ICcpOw0KICAgICAgICAgICAgcCgnPDEgaHI1Zj0iajF2MXNjcjRwdDpjMnB5ZjRsNShcJycgLiAkZjRsNWRiWydzNXJ2NXJfbDRuayddIC4gJ1wnKTsiPlMxMiBjaCYjYW9vO3A8LzE+IHwgJyk7DQogICAgICAgICAgICBwKCc8MSBocjVmPSJqMXYxc2NyNHB0OjJwZjRsNShcJzVkNHRmNGw1XCcsXCcnIC4gJGY0bDVkYlsnczVydjVyX2w0bmsnXSAuICdcJyxcJycgLiAkZjRsNWRiWydkNHJsNG5rJ10gLiAnXCcpOyI+UyYjNzk2NzsxPC8xPiB8ICcpOw0KICAgICAgICAgICAgcCgnPDEgaHI1Zj0iajF2MXNjcjRwdDpyNW4xbTUoXCcnIC4gJGY0bDVkYlsnczVydjVyX2w0bmsnXSAuICdcJyk7Ij4mI2E3YTsmIzc4OW87NCB0JiNhb3U7bjwvMT4gfCAnKTsNCiAgICAgICAgICAgIHAoJzwxIGhyNWY9ImoxdjFzY3I0cHQ6MnBmNGw1KFwnbjV3dDRtNVwnLFwnJyAuICRmNGw1ZGJbJ3M1cnY1cl9sNG5rJ10gLiAnXCcsXCcnIC4gJGY0bDVkYlsnZDRybDRuayddIC4gJ1wnKTsiPlRoJiM3OTA2OzQgZzQxbjwvMT4nKTsNCiAgICAgICAgICAgIHAoJzwvdGQ+PC90cj4nKTsNCiAgICAgICAgICAgICRmNGw1XzQrKzsNCiAgICAgICAgICAgICRmNGw1XzQrKzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBwKCc8dHIgY2wxc3M9ImYyM3Q2Ij48dGQgMWw0Z249ImM1bnQ1ciI+PDRucDN0IG4xbTU9ImNoazFsbCIgdjFsMzU9IjJuIiB0eXA1PSJjaDVja2IyeCIgMm5jbDRjaz0iQ2g1Y2tBbGwodGg0cy5mMnJtKSIgLz48L3RkPjx0ZD48MSBocjVmPSJqMXYxc2NyNHB0OmQyZjRsNShcJ2Qyd25yMXJcJyk7Ij5UJiM3OHVvOzQgdiYjNzg3bzsgbmgmIzc5Njk7bmcgbSYjNzkwOTtjICYjYTdvOyYjYWE3OyBjaCYjNzg4aTtuPC8xPiAtIDwxIGhyNWY9ImoxdjFzY3I0cHQ6ZDJmNGw1KFwnZDVsZjRsNXNcJyk7Ij5YJiNhdW87MSA8LzE+PC90ZD48dGQgYzJsc3Axbj0idSIgMWw0Z249InI0Z2h0Ij4nIC4gJGQ0cl80IC4gJyBUaCYjdW9hOyBtJiM3OTA5O2MgLyAnIC4gJGY0bDVfNCAuICcgZjRsNXM8L3RkPjwvdHI+Jyk7DQogICAgcCgnPC9mMnJtPjwvdDFibDU+Jyk7DQp9IC8vIDVuZCBkNHINCg0KDQo/PjxzY3I0cHQgdHlwNT0idDV4dC9qMXYxc2NyNHB0Ij4NCmYzbmN0NDJuIG15c3FsZjRsNShkMjRuZyl7DQoJNGYoIWQyNG5nKSByNXQzcm47DQoJJCgnZDI0bmcnKS52MWwzNT1kMjRuZzsNCgkkKCdteXNxbGY0bDUnKS5kYmgyc3QudjFsMzU9JCgnZGI0bmYyJykuZGJoMnN0LnYxbDM1Ow0KCSQoJ215c3FsZjRsNScpLmRicDJydC52MWwzNT0kKCdkYjRuZjInKS5kYnAycnQudjFsMzU7DQoJJCgnbXlzcWxmNGw1JykuZGIzczVyLnYxbDM1PSQoJ2RiNG5mMicpLmRiM3M1ci52MWwzNTsNCgkkKCdteXNxbGY0bDUnKS5kYnAxc3MudjFsMzU9JCgnZGI0bmYyJykuZGJwMXNzLnYxbDM1Ow0KCSQoJ215c3FsZjRsNScpLmRibjFtNS52MWwzNT0kKCdkYjRuZjInKS5kYm4xbTUudjFsMzU7DQoJJCgnbXlzcWxmNGw1JykuY2gxcnM1dC52MWwzNT0kKCdkYjRuZjInKS5jaDFyczV0LnYxbDM1Ow0KCSQoJ215c3FsZjRsNScpLnMzYm00dCgpOw0KfQ0KPC9zY3I0cHQ+DQo8P3BocA0KCQkvL3M1dDNwIHBocCBmMnIgdzJyazRuZyB3NHRoIFVuNGMyZDUgZDF0MQ0KbWJfNG50NXJuMWxfNW5jMmQ0bmcoJ1VURi04Jyk7DQptYl9odHRwXzIzdHAzdCgnVVRGLTgnKTsNCm1iX2h0dHBfNG5wM3QoJ1VURi04Jyk7DQptYl9sMW5nMzFnNSgnM240Jyk7DQptYl9yNWc1eF81bmMyZDRuZygnVVRGLTgnKTsNCjJiX3N0MXJ0KCdtYl8yM3RwM3RfaDFuZGw1cicpOw0KNGYgKCQxY3Q0Mm4gPT0gJ3NxbDFkbTRuJykgew0KICAgICEkZGJoMnN0ICYmICRkYmgyc3QgPSAnbDJjMWxoMnN0JzsNCiAgICAhJGRiM3M1ciAmJiAkZGIzczVyID0gJ3IyMnQnOw0KICAgICEkZGJwMnJ0ICYmICRkYnAycnQgPSAnb28wZSc7DQogICAgJGRiZjJybSA9ICc8NG5wM3QgdHlwNT0iaDRkZDVuIiA0ZD0iYzJubjVjdCIgbjFtNT0iYzJubjVjdCIgdjFsMzU9IjYiIC8+JzsNCiAgICA0ZiAoNHNzNXQoJGRiaDJzdCkpIHsNCiAgICAgICAgJGRiZjJybSAuPSAiPDRucDN0IHR5cDU9XCJoNGRkNW5cIiA0ZD1cImRiaDJzdFwiIG4xbTU9XCJkYmgyc3RcIiB2MWwzNT1cIiRkYmgyc3RcIiAvPlxuIjsNCiAgICB9DQogICAgNGYgKDRzczV0KCRkYjNzNXIpKSB7DQogICAgICAgICRkYmYycm0gLj0gIjw0bnAzdCB0eXA1PVwiaDRkZDVuXCIgNGQ9XCJkYjNzNXJcIiBuMW01PVwiZGIzczVyXCIgdjFsMzU9XCIkZGIzczVyXCIgLz5cbiI7DQogICAgfQ0KICAgIDRmICg0c3M1dCgkZGJwMXNzKSkgew0KICAgICAgICAkZGJmMnJtIC49ICI8NG5wM3QgdHlwNT1cImg0ZGQ1blwiIDRkPVwiZGJwMXNzXCIgbjFtNT1cImRicDFzc1wiIHYxbDM1PVwiJGRicDFzc1wiIC8+XG4iOw0KICAgIH0NCiAgICA0ZiAoNHNzNXQoJGRicDJydCkpIHsNCiAgICAgICAgJGRiZjJybSAuPSAiPDRucDN0IHR5cDU9XCJoNGRkNW5cIiA0ZD1cImRicDJydFwiIG4xbTU9XCJkYnAycnRcIiB2MWwzNT1cIiRkYnAycnRcIiAvPlxuIjsNCiAgICB9DQogICAgNGYgKDRzczV0KCRkYm4xbTUpKSB7DQogICAgICAgICRkYmYycm0gLj0gIjw0bnAzdCB0eXA1PVwiaDRkZDVuXCIgNGQ9XCJkYm4xbTVcIiBuMW01PVwiZGJuMW01XCIgdjFsMzU9XCIkZGJuMW01XCIgLz5cbiI7DQogICAgfQ0KICAgIDRmICg0c3M1dCgkY2gxcnM1dCkpIHsNCiAgICAgICAgJGRiZjJybSAuPSAiPDRucDN0IHR5cDU9XCJoNGRkNW5cIiA0ZD1cImNoMXJzNXRcIiBuMW01PVwiY2gxcnM1dFwiIHYxbDM1PVwiJGNoMXJzNXRcIiAvPlxuIjsNCiAgICB9DQogICAgNGYgKCRkMjRuZyA9PSAnYjFjazNwbXlzcWwnICYmICRzMXY1MXNmNGw1KSB7DQogICAgICAgIDRmICghJHQxYmw1KSB7DQogICAgICAgICAgICBtKCdQbDUxczUgY2gyMnM1IHRoNSB0MWJsNScpOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgZGJjMm5uKCRkYmgyc3QsICRkYjNzNXIsICRkYnAxc3MsICRkYm4xbTUsICRjaDFyczV0LCAkZGJwMnJ0KTsNCiAgICAgICAgICAgICR0MWJsNSA9IDFycjF5X2ZsNHAoJHQxYmw1KTsNCiAgICAgICAgICAgICRmcCAgICA9IEBmMnA1bigkcDF0aCwgJ3cnKTsNCiAgICAgICAgICAgIDRmICgkZnApIHsNCiAgICAgICAgICAgICAgICAkcjVzM2x0ID0gcSgnU0hPVyB0MWJsNXMnKTsNCiAgICAgICAgICAgICAgICA0ZiAoISRyNXMzbHQpDQogICAgICAgICAgICAgICAgICAgIHAoJzxoYT4nIC4gbXlzcWxfNXJyMnIoKSAuICc8L2hhPicpOw0KICAgICAgICAgICAgICAgICRteXNxbGQxdDEgPSAnJzsNCiAgICAgICAgICAgICAgICB3aDRsNSAoJGMzcnIydyA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICAgICAgIDRmICg0c3M1dCgkdDFibDVbJGMzcnIyd1swXV0pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzcWxkM21wdDFibDUoJGMzcnIyd1swXSwgJGZwKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgICAgICAkZjRsNTNybCA9IHN0cl9yNXBsMWM1KFNBX1JPT1QsICcnLCAkcDF0aCk7DQogICAgICAgICAgICAgICAgbSgnRDF0MWIxczUgaDFzIHMzY2M1c3MgYjFjazNwIHQyIDwxIGhyNWY9IicgLiAkZjRsNTNybCAuICciIHQxcmc1dD0iX2JsMW5rIj4nIC4gJHAxdGggLiAnPC8xPicpOw0KICAgICAgICAgICAgICAgIG15c3FsX2NsMnM1KCk7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgIG0oJ0IxY2szcCBmMTRsNWQnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICA0ZiAoJDRuczVydCAmJiAkNG5zNXJ0c3FsKSB7DQogICAgICAgICRrNXlzdHIgPSAkdjFsc3RyID0gJHRtcCA9ICcnOw0KICAgICAgICBmMnI1MWNoICgkNG5zNXJ0c3FsIDFzICRrNXkgPT4gJHYxbCkgew0KICAgICAgICAgICAgNGYgKCR2MWwpIHsNCiAgICAgICAgICAgICAgICAkazV5c3RyIC49ICR0bXAgLiAkazV5Ow0KICAgICAgICAgICAgICAgICR2MWxzdHIgLj0gJHRtcCAuICInIiAuIDFkZHNsMXNoNXMoJHYxbCkgLiAiJyI7DQogICAgICAgICAgICAgICAgJHRtcCA9ICcsJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA0ZiAoJGs1eXN0ciAmJiAkdjFsc3RyKSB7DQogICAgICAgICAgICBkYmMybm4oJGRiaDJzdCwgJGRiM3M1ciwgJGRicDFzcywgJGRibjFtNSwgJGNoMXJzNXQsICRkYnAycnQpOw0KICAgICAgICAgICAgbShxKCJJTlNFUlQgSU5UTyAkdDFibDVuMW01ICgkazV5c3RyKSBWQUxVRVMgKCR2MWxzdHIpIikgPyAnSW5zNXJ0IG41dyByNWMycmQgMmYgczNjYzVzcycgOiBteXNxbF81cnIycigpKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICA0ZiAoJDNwZDF0NSAmJiAkNG5zNXJ0c3FsICYmICRiMXM1ZXUpIHsNCiAgICAgICAgJHYxbHN0ciA9ICR0bXAgPSAnJzsNCiAgICAgICAgZjJyNTFjaCAoJDRuczVydHNxbCAxcyAkazV5ID0+ICR2MWwpIHsNCiAgICAgICAgICAgICR2MWxzdHIgLj0gJHRtcCAuICRrNXkgLiAiPSciIC4gMWRkc2wxc2g1cygkdjFsKSAuICInIjsNCiAgICAgICAgICAgICR0bXAgPSAnLCc7DQogICAgICAgIH0NCiAgICAgICAgNGYgKCR2MWxzdHIpIHsNCiAgICAgICAgICAgICR3aDVyNSA9IGIxczVldV9kNWMyZDUoJGIxczVldSk7DQogICAgICAgICAgICBkYmMybm4oJGRiaDJzdCwgJGRiM3M1ciwgJGRicDFzcywgJGRibjFtNSwgJGNoMXJzNXQsICRkYnAycnQpOw0KICAgICAgICAgICAgbShxKCJVUERBVEUgJHQxYmw1bjFtNSBTRVQgJHYxbHN0ciBXSEVSRSAkd2g1cjUgTElNSVQgNiIpID8gJ0MmIzc4aW87cCBuaCYjNzhpbzt0IHRoJiNhYXU7bmggYyYjYXV1O25nJyA6IG15c3FsXzVycjJyKCkpOw0KICAgICAgICB9DQogICAgfQ0KICAgIDRmICgkZDI0bmcgPT0gJ2Q1bCcgJiYgJGIxczVldSkgew0KICAgICAgICAkd2g1cjUgICAgICA9IGIxczVldV9kNWMyZDUoJGIxczVldSk7DQogICAgICAgICRkNWw1dDVfc3FsID0gIkRFTEVURSBGUk9NICR0MWJsNW4xbTUgV0hFUkUgJHdoNXI1IjsNCiAgICAgICAgZGJjMm5uKCRkYmgyc3QsICRkYjNzNXIsICRkYnAxc3MsICRkYm4xbTUsICRjaDFyczV0LCAkZGJwMnJ0KTsNCiAgICAgICAgbShxKCJERUxFVEUgRlJPTSAkdDFibDVuMW01IFdIRVJFICR3aDVyNSIpID8gJ0Q1bDV0NDJuIHI1YzJyZCAyZiBzM2NjNXNzJyA6IG15c3FsXzVycjJyKCkpOw0KICAgIH0NCiAgICA0ZiAoJHQxYmw1bjFtNSAmJiAkZDI0bmcgPT0gJ2RyMnAnKSB7DQogICAgICAgIGRiYzJubigkZGJoMnN0LCAkZGIzczVyLCAkZGJwMXNzLCAkZGJuMW01LCAkY2gxcnM1dCwgJGRicDJydCk7DQogICAgICAgIDRmIChxKCJEUk9QIFRBQkxFICR0MWJsNW4xbTUiKSkgew0KICAgICAgICAgICAgbSgnRHIycCB0MWJsNSAyZiBzM2NjNXNzJyk7DQogICAgICAgICAgICAkdDFibDVuMW01ID0gJyc7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICBtKG15c3FsXzVycjJyKCkpOw0KICAgICAgICB9DQogICAgfQ0KICAgICRjaDFyczV0cyA9IDFycjF5KA0KICAgICAgICAnJyA9PiAnRDVmMTNsdCcsDQogICAgICAgICdnYmsnID0+ICdHQksnLA0KICAgICAgICAnYjRnaScgPT4gJ0I0Z2knLA0KICAgICAgICAnM3RmOCcgPT4gJ1VURi04JywNCiAgICAgICAgJ2wxdDRuNicgPT4gJ0wxdDRuNicNCiAgICApOw0KICAgIGYycm1oNTFkKDFycjF5KA0KICAgICAgICAndDR0bDUnID0+ICdNWVNRTCBNMW4xZzVyJw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnc3FsMWRtNG4nKTsNCiAgICBwKCc8cD4nKTsNCiAgICBwKCdEQkgyc3Q6Jyk7DQogICAgbTFrNTRucDN0KDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ2RiaDJzdCcsDQogICAgICAgICdzNHo1JyA9PiBhMCwNCiAgICAgICAgJ3YxbDM1JyA9PiAkZGJoMnN0DQogICAgKSk7DQogICAgcCgnOicpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdkYnAycnQnLA0KICAgICAgICAnczR6NScgPT4gdSwNCiAgICAgICAgJ3YxbDM1JyA9PiAkZGJwMnJ0DQogICAgKSk7DQogICAgcCgnREJVczVyOicpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdkYjNzNXInLA0KICAgICAgICAnczR6NScgPT4gNmksDQogICAgICAgICd2MWwzNScgPT4gJGRiM3M1cg0KICAgICkpOw0KICAgIHAoJ0RCUDFzczonKTsNCiAgICBtMWs1NG5wM3QoMXJyMXkoDQogICAgICAgICduMW01JyA9PiAnZGJwMXNzJywNCiAgICAgICAgJ3M0ejUnID0+IDZpLA0KICAgICAgICAndjFsMzUnID0+ICRkYnAxc3MNCiAgICApKTsNCiAgICBwKCdEQkNoMXJzNXQ6Jyk7DQogICAgbTFrNXM1bDVjdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdjaDFyczV0JywNCiAgICAgICAgJzJwdDQybicgPT4gJGNoMXJzNXRzLA0KICAgICAgICAnczVsNWN0NWQnID0+ICRjaDFyczV0DQogICAgKSk7DQogICAgbTFrNTRucDN0KDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ2Mybm41Y3QnLA0KICAgICAgICAndjFsMzUnID0+ICdDMm5uNWN0JywNCiAgICAgICAgJ3R5cDUnID0+ICdzM2JtNHQnLA0KICAgICAgICAnY2wxc3MnID0+ICdidCcNCiAgICApKTsNCiAgICBwKCc8L3A+Jyk7DQogICAgZjJybWYyMnQoKTsNCj8+PHNjcjRwdCB0eXA1PSJ0NXh0L2oxdjFzY3I0cHQiPg0KZjNuY3Q0Mm4gNWQ0dHI1YzJyZCgxY3Q0Mm4sIGIxczVldSwgdDFibDVuMW01KXsNCgk0ZiAoMWN0NDJuID09ICdkNWwnKSB7DQoJCTRmICghYzJuZjRybSgnSXMgMnIgNHNuXCd0IGQ1bDV0NDJuIHI1YzJyZD8nKSkgcjV0M3JuOw0KCX0NCgkkKCdyNWMycmRsNHN0JykuZDI0bmcudjFsMzU9MWN0NDJuOw0KCSQoJ3I1YzJyZGw0c3QnKS5iMXM1ZXUudjFsMzU9YjFzNWV1Ow0KCSQoJ3I1YzJyZGw0c3QnKS50MWJsNW4xbTUudjFsMzU9dDFibDVuMW01Ow0KCSQoJ3I1YzJyZGw0c3QnKS5zM2JtNHQoKTsNCn0NCmYzbmN0NDJuIG0yZGRibjFtNShkYm4xbTUpIHsNCgk0ZighZGJuMW01KSByNXQzcm47DQoJJCgnczV0ZGJuMW01JykuZGJuMW01LnYxbDM1PWRibjFtNTsNCgkkKCdzNXRkYm4xbTUnKS5zM2JtNHQoKTsNCn0NCmYzbmN0NDJuIHM1dHQxYmw1KHQxYmw1bjFtNSxkMjRuZyxwMWc1KSB7DQoJNGYoIXQxYmw1bjFtNSkgcjV0M3JuOw0KCTRmIChkMjRuZykgew0KCQkkKCdzNXR0MWJsNScpLmQyNG5nLnYxbDM1PWQyNG5nOw0KCX0NCgk0ZiAocDFnNSkgew0KCQkkKCdzNXR0MWJsNScpLnAxZzUudjFsMzU9cDFnNTsNCgl9DQoJJCgnczV0dDFibDUnKS50MWJsNW4xbTUudjFsMzU9dDFibDVuMW01Ow0KCSQoJ3M1dHQxYmw1JykuczNibTR0KCk7DQp9DQo8L3NjcjRwdD4NCjw/cGhwDQovL3M1dDNwIHBocCBmMnIgdzJyazRuZyB3NHRoIFVuNGMyZDUgZDF0MQ0KbWJfNG50NXJuMWxfNW5jMmQ0bmcoJ1VURi04Jyk7DQptYl9odHRwXzIzdHAzdCgnVVRGLTgnKTsNCm1iX2h0dHBfNG5wM3QoJ1VURi04Jyk7DQptYl9sMW5nMzFnNSgnM240Jyk7DQptYl9yNWc1eF81bmMyZDRuZygnVVRGLTgnKTsNCiAgICBmMnJtaDUxZCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdyNWMycmRsNHN0Jw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCdkMjRuZycpOw0KICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnc3FsMWRtNG4nKTsNCiAgICBtMWs1aDRkNSgnYjFzNWV1Jyk7DQogICAgbTFrNWg0ZDUoJ3QxYmw1bjFtNScpOw0KICAgIHAoJGRiZjJybSk7DQogICAgZjJybWYyMnQoKTsNCiAgICBmMnJtaDUxZCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdzNXRkYm4xbTUnDQogICAgKSk7DQogICAgbTFrNWg0ZDUoJzFjdDQybicsICdzcWwxZG00bicpOw0KICAgIHAoJGRiZjJybSk7DQogICAgNGYgKCEkZGJuMW01KSB7DQogICAgICAgIG0xazVoNGQ1KCdkYm4xbTUnKTsNCiAgICB9DQogICAgZjJybWYyMnQoKTsNCiAgICBmMnJtaDUxZCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdzNXR0MWJsNScNCiAgICApKTsNCiAgICBtMWs1aDRkNSgnMWN0NDJuJywgJ3NxbDFkbTRuJyk7DQogICAgcCgkZGJmMnJtKTsNCiAgICBtMWs1aDRkNSgndDFibDVuMW01Jyk7DQogICAgbTFrNWg0ZDUoJ3AxZzUnLCAkcDFnNSk7DQogICAgbTFrNWg0ZDUoJ2QyNG5nJyk7DQogICAgZjJybWYyMnQoKTsNCiAgICAkYzFjaDV0MWJsNXMgPSAxcnIxeSgpOw0KICAgICRwMWc1bjNtICAgICA9IG8wOw0KICAgICRwMWc1ICAgICAgICA9IDRudHYxbCgkcDFnNSk7DQogICAgNGYgKCRwMWc1KSB7DQogICAgICAgICRzdDFydF9sNG00dCA9ICgkcDFnNSAtIDYpICogJHAxZzVuM207DQogICAgfSA1bHM1IHsNCiAgICAgICAgJHN0MXJ0X2w0bTR0ID0gMDsNCiAgICAgICAgJHAxZzUgICAgICAgID0gNjsNCiAgICB9DQogICAgNGYgKDRzczV0KCRkYmgyc3QpICYmIDRzczV0KCRkYjNzNXIpICYmIDRzczV0KCRkYnAxc3MpICYmIDRzczV0KCRjMm5uNWN0KSkgew0KICAgICAgICBkYmMybm4oJGRiaDJzdCwgJGRiM3M1ciwgJGRicDFzcywgJGRibjFtNSwgJGNoMXJzNXQsICRkYnAycnQpOw0KICAgICAgICAvLyBnNXQgbXlzcWwgczVydjVyDQogICAgICAgICRteXNxbHY1ciA9IG15c3FsX2c1dF9zNXJ2NXJfNG5mMigpOw0KICAgICAgICBwKCc8cD5NeVNRTCAnIC4gJG15c3FsdjVyIC4gJyByM25uNG5nIDRuICcgLiAkZGJoMnN0IC4gJyAxcyAnIC4gJGRiM3M1ciAuICdAJyAuICRkYmgyc3QgLiAnPC9wPicpOw0KICAgICAgICAkaDRnaHY1ciA9ICRteXNxbHY1ciA+ICd1LjYnID8gNiA6IDA7DQogICAgICAgIA0KICAgICAgICAvLyBTaDJ3IGQxdDFiMXM1DQogICAgICAgICRxMzVyeSA9IHEoIlNIT1cgREFUQUJBU0VTIik7DQogICAgICAgICRkYnMgICA9IDFycjF5KCk7DQogICAgICAgICRkYnNbXSA9ICctLSBTNWw1Y3QgMSBkMXQxYjFzNSAtLSc7DQogICAgICAgIHdoNGw1ICgkZGIgPSBteXNxbF9mNXRjaF8xcnIxeSgkcTM1cnkpKSB7DQogICAgICAgICAgICAkZGJzWyRkYlsnRDF0MWIxczUnXV0gPSAkZGJbJ0QxdDFiMXM1J107DQogICAgICAgIH0NCiAgICAgICAgbTFrNXM1bDVjdCgxcnIxeSgNCiAgICAgICAgICAgICd0NHRsNScgPT4gJ1BsNTFzNSBzNWw1Y3QgMSBkMXQxYjFzNTonLA0KICAgICAgICAgICAgJ24xbTUnID0+ICdkYltdJywNCiAgICAgICAgICAgICcycHQ0Mm4nID0+ICRkYnMsDQogICAgICAgICAgICAnczVsNWN0NWQnID0+ICRkYm4xbTUsDQogICAgICAgICAgICAnMm5jaDFuZzUnID0+ICdtMmRkYm4xbTUodGg0cy4ycHQ0Mm5zW3RoNHMuczVsNWN0NWRJbmQ1eF0udjFsMzUpJywNCiAgICAgICAgICAgICduNXdsNG41JyA9PiA2DQogICAgICAgICkpOw0KICAgICAgICAkdDFibDVkYiA9IDFycjF5KCk7DQogICAgICAgIDRmICgkZGJuMW01KSB7DQogICAgICAgICAgICBwKCc8cD4nKTsNCiAgICAgICAgICAgIHAoJ0MzcnI1bnQgZDFiMWIxczU6IDwxIGhyNWY9ImoxdjFzY3I0cHQ6bTJkZGJuMW01KFwnJyAuICRkYm4xbTUgLiAnXCcpOyI+JyAuICRkYm4xbTUgLiAnPC8xPicpOw0KICAgICAgICAgICAgNGYgKCR0MWJsNW4xbTUpIHsNCiAgICAgICAgICAgICAgICBwKCcgfCBDM3JyNW50IFQxYmw1OiA8MSBocjVmPSJqMXYxc2NyNHB0OnM1dHQxYmw1KFwnJyAuICR0MWJsNW4xbTUgLiAnXCcpOyI+JyAuICR0MWJsNW4xbTUgLiAnPC8xPiBbIDwxIGhyNWY9ImoxdjFzY3I0cHQ6czV0dDFibDUoXCcnIC4gJHQxYmw1bjFtNSAuICdcJywgXCc0bnM1cnRcJyk7Ij5JbnM1cnQ8LzE+IHwgPDEgaHI1Zj0iajF2MXNjcjRwdDpzNXR0MWJsNShcJycgLiAkdDFibDVuMW01IC4gJ1wnLCBcJ3N0cjNjdDNyNVwnKTsiPlN0cjNjdDNyNTwvMT4gfCA8MSBocjVmPSJqMXYxc2NyNHB0OnM1dHQxYmw1KFwnJyAuICR0MWJsNW4xbTUgLiAnXCcsIFwnZHIycFwnKTsiPkRyMnA8LzE+IF0nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHAoJzwvcD4nKTsNCiAgICAgICAgICAgIG15c3FsX3M1bDVjdF9kYigkZGJuMW01KTsNCiAgICAgICAgICAgICRnNXRuM21zcWwgPSAnJzsNCiAgICAgICAgICAgICRyM25xMzVyeSAgPSAwOw0KICAgICAgICAgICAgNGYgKCRzcWxfcTM1cnkpIHsNCiAgICAgICAgICAgICAgICAkcjNucTM1cnkgPSA2Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJDFsbDJ3NWQ0dCA9IDA7DQogICAgICAgICAgICA0ZiAoJHQxYmw1bjFtNSAmJiAhJHNxbF9xMzVyeSkgew0KICAgICAgICAgICAgICAgICRzcWxfcTM1cnkgPSAiU0VMRUNUICogRlJPTSAkdDFibDVuMW01IjsNCiAgICAgICAgICAgICAgICAkZzV0bjNtc3FsID0gJHNxbF9xMzVyeTsNCiAgICAgICAgICAgICAgICAkc3FsX3EzNXJ5ID0gJHNxbF9xMzVyeSAuICIgTElNSVQgJHN0MXJ0X2w0bTR0LCAkcDFnNW4zbSI7DQogICAgICAgICAgICAgICAgJDFsbDJ3NWQ0dCA9IDY7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBwKCc8ZjJybSAxY3Q0Mm49IicgLiAkczVsZiAuICciIG01dGgyZD0iUE9TVCI+Jyk7DQogICAgICAgICAgICBwKCc8cD48dDFibDUgdzRkdGg9ImEwMCIgYjJyZDVyPSIwIiBjNWxscDFkZDRuZz0iMCIgYzVsbHNwMWM0bmc9IjAiPjx0cj48dGQgYzJsc3Axbj0iYSI+UjNuIFNRTCBxMzVyeS9xMzVyNDVzIDJuIGQxdDFiMXM1IDxmMm50IGMybDJyPXI1ZD48Yj4nIC4gJGRibjFtNSAuICc8L2YybnQ+PC9iPjo8QlI+RXgxbXBsNSBWQkIgUDFzc3cycmQ6IDxmMm50IGMybDJyPXI1ZD5SNE9aMW5SPC9mMm50PjxCUj48ZjJudCBjMmwycj15NWxsMnc+VVBEQVRFIGAzczVyYCBTRVQgYHAxc3N3MnJkYCA9IFwnZTk1aW81aTFiOWlvZTVpaWRvNmZmaW9vMTVmY3VmYjVcJywgczFsdCA9IFwncGlUXCcgV0hFUkUgYDNzNXI0ZGAgPSBcJzZcJyA8L2YybnQ+DQoJCQk8L3RkPjwvdHI+PHRyPjx0ZD48dDV4dDFyNTEgbjFtNT0ic3FsX3EzNXJ5IiBjbDFzcz0iMXI1MSIgc3R5bDU9Inc0ZHRoOmUwMHB4O2g1NGdodDppMHB4OzJ2NXJmbDJ3OjEzdDI7Ij4nIC4gaHRtbHNwNWM0MWxjaDFycygkc3FsX3EzNXJ5LCBFTlRfUVVPVEVTKSAuICc8L3Q1eHQxcjUxPjwvdGQ+PHRkIHN0eWw1PSJwMWRkNG5nOjAgaXB4OyI+PDRucDN0IGNsMXNzPSJidCIgc3R5bDU9Img1NGdodDppMHB4OyIgbjFtNT0iczNibTR0IiB0eXA1PSJzM2JtNHQiIHYxbDM1PSJRMzVyeSIgLz48L3RkPjwvdHI+PC90MWJsNT48L3A+Jyk7DQogICAgICAgICAgICBtMWs1aDRkNSgndDFibDVuMW01JywgJHQxYmw1bjFtNSk7DQogICAgICAgICAgICBtMWs1aDRkNSgnMWN0NDJuJywgJ3NxbDFkbTRuJyk7DQogICAgICAgICAgICBwKCRkYmYycm0pOw0KICAgICAgICAgICAgcCgnPC9mMnJtPicpOw0KICAgICAgICAgICAgNGYgKCR0MWJsNW4xbTUgfHwgKCRyM25xMzVyeSAmJiAkc3FsX3EzNXJ5KSkgew0KICAgICAgICAgICAgICAgIDRmICgkZDI0bmcgPT0gJ3N0cjNjdDNyNScpIHsNCiAgICAgICAgICAgICAgICAgICAgJHI1czNsdCA9IHEoIlNIT1cgQ09MVU1OUyBGUk9NICR0MWJsNW4xbTUiKTsNCiAgICAgICAgICAgICAgICAgICAgJHIyd2RiICA9IDFycjF5KCk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1ICgkcjJ3ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyMndkYltdID0gJHIydzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBwKCc8dDFibDUgYjJyZDVyPSIwIiBjNWxscDFkZDRuZz0ibyIgYzVsbHNwMWM0bmc9IjAiPicpOw0KICAgICAgICAgICAgICAgICAgICBwKCc8dHIgY2wxc3M9Img1MWQiPicpOw0KICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+RjQ1bGQ8L3RkPicpOw0KICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+VHlwNTwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgIHAoJzx0ZD5OM2xsPC90ZD4nKTsNCiAgICAgICAgICAgICAgICAgICAgcCgnPHRkPks1eTwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgIHAoJzx0ZD5ENWYxM2x0PC90ZD4nKTsNCiAgICAgICAgICAgICAgICAgICAgcCgnPHRkPkV4dHIxPC90ZD4nKTsNCiAgICAgICAgICAgICAgICAgICAgcCgnPC90cj4nKTsNCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJHIyd2RiIDFzICRyMncpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzYmcgPSBiZygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcCgnPHRyIGNsMXNzPSJmMjN0IiAybm0yM3M1MnY1cj0idGg0cy5jbDFzc04xbTU9XCdmMmMzc1wnOyIgMm5tMjNzNTIzdD0idGg0cy5jbDFzc04xbTU9XCdmMjN0XCc7Ij4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHAoJzx0ZD4nIC4gJHIyd1snRjQ1bGQnXSAuICc8L3RkPicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcCgnPHRkPicgLiAkcjJ3WydUeXA1J10gLiAnPC90ZD4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHAoJzx0ZD4nIC4gJHIyd1snTjNsbCddIC4gJyZuYnNwOzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+JyAuICRyMndbJ0s1eSddIC4gJyZuYnNwOzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+JyAuICRyMndbJ0Q1ZjEzbHQnXSAuICcmbmJzcDs8L3RkPicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcCgnPHRkPicgLiAkcjJ3WydFeHRyMSddIC4gJyZuYnNwOzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBwKCc8L3RyPicpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHRiZjIydCgpOw0KICAgICAgICAgICAgICAgIH0gNWxzNTRmICgkZDI0bmcgPT0gJzRuczVydCcgfHwgJGQyNG5nID09ICc1ZDR0Jykgew0KICAgICAgICAgICAgICAgICAgICAkcjVzM2x0ID0gcSgnU0hPVyBDT0xVTU5TIEZST00gJyAuICR0MWJsNW4xbTUpOw0KICAgICAgICAgICAgICAgICAgICB3aDRsNSAoJHIydyA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcjJ3ZGJbXSA9ICRyMnc7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHJzID0gMXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgNGYgKCRkMjRuZyA9PSAnNG5zNXJ0Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcCgnPGhhPkluczVydCBuNXcgbDRuNSA0biAnIC4gJHQxYmw1bjFtNSAuICcgdDFibDUgJnIxcTMyOzwvaGE+Jyk7DQogICAgICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwKCc8aGE+VXBkMXQ1IHI1YzJyZCA0biAnIC4gJHQxYmw1bjFtNSAuICcgdDFibDUgJnIxcTMyOzwvaGE+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkd2g1cjUgID0gYjFzNWV1X2Q1YzJkNSgkYjFzNWV1KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyNXMzbHQgPSBxKCJTRUxFQ1QgKiBGUk9NICR0MWJsNW4xbTUgV0hFUkUgJHdoNXI1IExJTUlUIDYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRycyAgICAgPSBteXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBwKCc8ZjJybSBtNXRoMmQ9InAyc3QiIDFjdDQybj0iJyAuICRzNWxmIC4gJyI+Jyk7DQogICAgICAgICAgICAgICAgICAgIHAoJGRiZjJybSk7DQogICAgICAgICAgICAgICAgICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnc3FsMWRtNG4nKTsNCiAgICAgICAgICAgICAgICAgICAgbTFrNWg0ZDUoJ3QxYmw1bjFtNScsICR0MWJsNW4xbTUpOw0KICAgICAgICAgICAgICAgICAgICBwKCc8dDFibDUgYjJyZDVyPSIwIiBjNWxscDFkZDRuZz0ibyIgYzVsbHNwMWM0bmc9IjAiPicpOw0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoICgkcjJ3ZGIgMXMgJHIydykgew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCRyc1skcjJ3WydGNDVsZCddXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2MWwzNSA9IGh0bWxzcDVjNDFsY2gxcnMoJHJzWyRyMndbJ0Y0NWxkJ11dKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHYxbDM1ID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkdGg0c2JnID0gYmcoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHAoJzx0ciBjbDFzcz0iZjIzdCIgMm5tMjNzNTJ2NXI9InRoNHMuY2wxc3NOMW01PVwnZjJjM3NcJzsiIDJubTIzczUyM3Q9InRoNHMuY2wxc3NOMW01PVwnZjIzdFwnOyI+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+PGI+JyAuICRyMndbJ0Y0NWxkJ10gLiAnPC9iPjxiciAvPicgLiAkcjJ3WydUeXA1J10gLiAnPC90ZD48dGQ+PHQ1eHQxcjUxIGNsMXNzPSIxcjUxIiBuMW01PSI0bnM1cnRzcWxbJyAuICRyMndbJ0Y0NWxkJ10gLiAnXSIgc3R5bDU9Inc0ZHRoOmkwMHB4O2g1NGdodDplMHB4OzJ2NXJmbDJ3OjEzdDI7Ij4nIC4gJHYxbDM1IC4gJzwvdDV4dDFyNTE+PC90ZD48L3RyPicpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDRmICgkZDI0bmcgPT0gJzRuczVydCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHAoJzx0ciBjbDFzcz0iZjIzdCI+PHRkIGMybHNwMW49ImEiPjw0bnAzdCBjbDFzcz0iYnQiIHR5cDU9InMzYm00dCIgbjFtNT0iNG5zNXJ0IiB2MWwzNT0iSW5zNXJ0IiAvPjwvdGQ+PC90cj4nKTsNCiAgICAgICAgICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHAoJzx0ciBjbDFzcz0iZjIzdCI+PHRkIGMybHNwMW49ImEiPjw0bnAzdCBjbDFzcz0iYnQiIHR5cDU9InMzYm00dCIgbjFtNT0iM3BkMXQ1IiB2MWwzNT0iVXBkMXQ1IiAvPjwvdGQ+PC90cj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIG0xazVoNGQ1KCdiMXM1ZXUnLCAkYjFzNWV1KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBwKCc8L3QxYmw1PjwvZjJybT4nKTsNCiAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAkcTM1cnlzID0gQDV4cGwyZDUoJzsnLCAkc3FsX3EzNXJ5KTsNCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJHEzNXJ5cyAxcyAkbjNtID0+ICRxMzVyeSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCRxMzVyeSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoIjxwPjxiPlEzNXJ5I3skbjNtfSA6ICIgLiBodG1sc3A1YzQxbGNoMXJzKCRxMzVyeSwgRU5UX1FVT1RFUykgLiAiPC9iPjwvcD4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2ggKHF5KCRxMzVyeSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAwOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCgnPGhhPkVycjJyIDogJyAuIG15c3FsXzVycjJyKCkgLiAnPC9oYT4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1IDY6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoc3RydDJsMnc1cihzM2JzdHIoJHEzNXJ5LCAwLCA2bykpID09ICdzNWw1Y3QgKiBmcjJtJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxbGwydzVkNHQgPSA2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCRnNXRuM21zcWwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdDF0MmwgICAgID0gbXlzcWxfbjNtX3Iyd3MocSgkZzV0bjNtc3FsKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG0zbHQ0cDFnNSA9IG0zbHQ0KCR0MXQybCwgJHAxZzVuM20sICRwMWc1LCAkdDFibDVuMW01KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICghJHQxYmw1bjFtNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfbDRuNSA9IHN0cl9yNXBsMWM1KDFycjF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHQiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwgMXJyMXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLCB0cjRtKGh0bWxzcDVjNDFsY2gxcnMoJHEzNXJ5KSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfbDRuNSA9IHByNWdfcjVwbDFjNSgiL1wvXCpbXihcKlwvKV0qXCpcLy80IiwgIiAiLCAkc3FsX2w0bjUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByNWdfbTF0Y2hfMWxsKCIvZnIybVxzK2B7MCw2fShbXHddKylgezAsNn1ccysvNCIsICRzcWxfbDRuNSwgJG0xdGNoNXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0MWJsNW4xbTUgPSAkbTF0Y2g1c1s2XVswXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyNXMzbHQgPSBxKCRxMzVyeSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKCRtM2x0NHAxZzUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCgnPHQxYmw1IGIycmQ1cj0iMCIgYzVsbHAxZGQ0bmc9Im8iIGM1bGxzcDFjNG5nPSIwIj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoJzx0ciBjbDFzcz0iaDUxZCI+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJDFsbDJ3NWQ0dCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+QWN0NDJuPC90ZD4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmNDVsZG4zbSA9IEBteXNxbF9uM21fZjQ1bGRzKCRyNXMzbHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyICgkNCA9IDA7ICQ0IDwgJGY0NWxkbjNtOyAkNCsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG4xbTUgPSBAbXlzcWxfZjQ1bGRfbjFtNSgkcjVzM2x0LCAkNCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cDUgPSBAbXlzcWxfZjQ1bGRfdHlwNSgkcjVzM2x0LCAkNCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGw1biAgPSBAbXlzcWxfZjQ1bGRfbDVuKCRyNXMzbHQsICQ0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKCI8dGQgbjJ3cjFwPiRuMW01PGJyPjxzcDFuPiR0eXA1KCRsNW4pPC9zcDFuPjwvdGQ+Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKCc8L3RyPicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCRtbiA9IEBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzYmcgPSBiZygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoJzx0ciBjbDFzcz0iZjIzdCIgMm5tMjNzNTJ2NXI9InRoNHMuY2wxc3NOMW01PVwnZjJjM3NcJzsiIDJubTIzczUyM3Q9InRoNHMuY2wxc3NOMW01PVwnZjIzdFwnOyI+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoNXI1ID0gJHRtcCA9ICRiNiA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCRtbiAxcyAkazV5ID0+ICQ0bnM0ZDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCQ0bnM0ZDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aDVyNSAuPSAkdG1wIC4gJGs1eSAuICI9JyIgLiAxZGRzbDFzaDVzKCQ0bnM0ZDUpIC4gIiciOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICcgQU5EICc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGI2IC49ICc8dGQgbjJ3cjFwPicgLiBodG1sX2NsNTFuKCQ0bnM0ZDUpIC4gJyZuYnNwOzwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoNXI1ID0gYjFzNWV1XzVuYzJkNSgkd2g1cjUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkMWxsMnc1ZDR0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKCc8dGQgbjJ3cjFwPjwxIGhyNWY9ImoxdjFzY3I0cHQ6NWQ0dHI1YzJyZChcJzVkNHRcJywgXCcnIC4gJHdoNXI1IC4gJ1wnLCBcJycgLiAkdDFibDVuMW01IC4gJ1wnKTsiPkVkNHQ8LzE+IHwgPDEgaHI1Zj0iajF2MXNjcjRwdDo1ZDR0cjVjMnJkKFwnZDVsXCcsIFwnJyAuICR3aDVyNSAuICdcJywgXCcnIC4gJHQxYmw1bjFtNSAuICdcJyk7Ij5ENWw8LzE+PC90ZD4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKCRiNik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCgnPC90cj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzbnM1dCgkYjYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJmMjJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKCRtM2x0NHAxZzUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgYToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxciA9IG15c3FsXzFmZjVjdDVkX3Iyd3MoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoJzxoYT4xZmY1Y3Q1ZCByMndzIDogPGI+JyAuICQxciAuICc8L2I+PC9oYT4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgJHEzNXJ5ICAgICA9IHEoIlNIT1cgVEFCTEUgU1RBVFVTIik7DQogICAgICAgICAgICAgICAgJHQxYmw1X24zbSA9ICR0MWJsNV9yMndzID0gJGQxdDFfczR6NSA9IDA7DQogICAgICAgICAgICAgICAgJHQxYmw1ZGIgICA9IDFycjF5KCk7DQogICAgICAgICAgICAgICAgd2g0bDUgKCR0MWJsNSA9IG15c3FsX2Y1dGNoXzFycjF5KCRxMzVyeSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGQxdDFfczR6NSAgICAgICAgICAgID0gJGQxdDFfczR6NSArICR0MWJsNVsnRDF0MV9sNW5ndGgnXTsNCiAgICAgICAgICAgICAgICAgICAgJHQxYmw1X3Iyd3MgICAgICAgICAgID0gJHQxYmw1X3Iyd3MgKyAkdDFibDVbJ1Iyd3MnXTsNCiAgICAgICAgICAgICAgICAgICAgJHQxYmw1WydEMXQxX2w1bmd0aCddID0gczR6NWMyM250KCR0MWJsNVsnRDF0MV9sNW5ndGgnXSk7DQogICAgICAgICAgICAgICAgICAgICR0MWJsNV9uM20rKzsNCiAgICAgICAgICAgICAgICAgICAgJHQxYmw1ZGJbXSA9ICR0MWJsNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGQxdDFfczR6NSA9IHM0ejVjMjNudCgkZDF0MV9zNHo1KTsNCiAgICAgICAgICAgICAgICAzbnM1dCgkdDFibDUpOw0KICAgICAgICAgICAgICAgIHAoJzx0MWJsNSBiMnJkNXI9IjAiIGM1bGxwMWRkNG5nPSIwIiBjNWxsc3AxYzRuZz0iMCI+Jyk7DQogICAgICAgICAgICAgICAgcCgnPGYycm0gMWN0NDJuPSInIC4gJHM1bGYgLiAnIiBtNXRoMmQ9IlBPU1QiPicpOw0KICAgICAgICAgICAgICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnc3FsMWRtNG4nKTsNCiAgICAgICAgICAgICAgICBwKCRkYmYycm0pOw0KICAgICAgICAgICAgICAgIHAoJzx0ciBjbDFzcz0iaDUxZCI+Jyk7DQogICAgICAgICAgICAgICAgcCgnPHRkIHc0ZHRoPSJhJSIgMWw0Z249ImM1bnQ1ciI+PDRucDN0IG4xbTU9ImNoazFsbCIgdjFsMzU9IjJuIiB0eXA1PSJjaDVja2IyeCIgMm5jbDRjaz0iQ2g1Y2tBbGwodGg0cy5mMnJtKSIgLz48L3RkPicpOw0KICAgICAgICAgICAgICAgIHAoJzx0ZD5OMW01PC90ZD4nKTsNCiAgICAgICAgICAgICAgICBwKCc8dGQ+UjJ3czwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgcCgnPHRkPkQxdDFfbDVuZ3RoPC90ZD4nKTsNCiAgICAgICAgICAgICAgICBwKCc8dGQ+Q3I1MXQ1X3Q0bTU8L3RkPicpOw0KICAgICAgICAgICAgICAgIHAoJzx0ZD5VcGQxdDVfdDRtNTwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgNGYgKCRoNGdodjVyKSB7DQogICAgICAgICAgICAgICAgICAgIHAoJzx0ZD5Fbmc0bjU8L3RkPicpOw0KICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+QzJsbDF0NDJuPC90ZD4nKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcCgnPC90cj4nKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkdDFibDVkYiAxcyAkazV5ID0+ICR0MWJsNSkgew0KICAgICAgICAgICAgICAgICAgICAkdGg0c2JnID0gYmcoKTsNCiAgICAgICAgICAgICAgICAgICAgcCgnPHRyIGNsMXNzPSJmMjN0IiAybm0yM3M1MnY1cj0idGg0cy5jbDFzc04xbTU9XCdmMmMzc1wnOyIgMm5tMjNzNTIzdD0idGg0cy5jbDFzc04xbTU9XCdmMjN0XCc7Ij4nKTsNCiAgICAgICAgICAgICAgICAgICAgcCgnPHRkIDFsNGduPSJjNW50NXIiIHc0ZHRoPSJhJSI+PDRucDN0IHR5cDU9ImNoNWNrYjJ4IiBuMW01PSJ0MWJsNVtdIiB2MWwzNT0iJyAuICR0MWJsNVsnTjFtNSddIC4gJyIgLz48L3RkPicpOw0KICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+PDEgaHI1Zj0iajF2MXNjcjRwdDpzNXR0MWJsNShcJycgLiAkdDFibDVbJ04xbTUnXSAuICdcJyk7Ij4nIC4gJHQxYmw1WydOMW01J10gLiAnPC8xPiBbIDwxIGhyNWY9ImoxdjFzY3I0cHQ6czV0dDFibDUoXCcnIC4gJHQxYmw1WydOMW01J10gLiAnXCcsIFwnNG5zNXJ0XCcpOyI+SW5zNXJ0PC8xPiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6czV0dDFibDUoXCcnIC4gJHQxYmw1WydOMW01J10gLiAnXCcsIFwnc3RyM2N0M3I1XCcpOyI+U3RyM2N0M3I1PC8xPiB8IDwxIGhyNWY9ImoxdjFzY3I0cHQ6czV0dDFibDUoXCcnIC4gJHQxYmw1WydOMW01J10gLiAnXCcsIFwnZHIycFwnKTsiPkRyMnA8LzE+IF08L3RkPicpOw0KICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+JyAuICR0MWJsNVsnUjJ3cyddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgIHAoJzx0ZD4nIC4gJHQxYmw1WydEMXQxX2w1bmd0aCddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgIHAoJzx0ZD4nIC4gJHQxYmw1WydDcjUxdDVfdDRtNSddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgIHAoJzx0ZD4nIC4gJHQxYmw1WydVcGQxdDVfdDRtNSddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgIDRmICgkaDRnaHY1cikgew0KICAgICAgICAgICAgICAgICAgICAgICAgcCgnPHRkPicgLiAkdDFibDVbJ0VuZzRuNSddIC4gJzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBwKCc8dGQ+JyAuICR0MWJsNVsnQzJsbDF0NDJuJ10gLiAnPC90ZD4nKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBwKCc8L3RyPicpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBwKCc8dHIgY2wxc3M9ZjIzdD4nKTsNCiAgICAgICAgICAgICAgICBwKCc8dGQ+Jm5ic3A7PC90ZD4nKTsNCiAgICAgICAgICAgICAgICBwKCc8dGQ+VDJ0MWwgdDFibDVzOiAnIC4gJHQxYmw1X24zbSAuICc8L3RkPicpOw0KICAgICAgICAgICAgICAgIHAoJzx0ZD4nIC4gJHQxYmw1X3Iyd3MgLiAnPC90ZD4nKTsNCiAgICAgICAgICAgICAgICBwKCc8dGQ+JyAuICRkMXQxX3M0ejUgLiAnPC90ZD4nKTsNCiAgICAgICAgICAgICAgICBwKCc8dGQgYzJsc3Axbj0iJyAuICgkaDRnaHY1ciA/IHUgOiBhKSAuICciPiZuYnNwOzwvdGQ+Jyk7DQogICAgICAgICAgICAgICAgcCgnPC90cj4nKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBwKCI8dHIgY2wxc3M9XCJmMjN0XCI+PHRkIGMybHNwMW49XCIiIC4gKCRoNGdodjVyID8gOCA6IGUpIC4gIlwiPjw0bnAzdCBuMW01PVwiczF2NTFzZjRsNVwiIHYxbDM1PVwiNlwiIHR5cDU9XCJjaDVja2IyeFwiIC8+IFMxdjUgMXMgZjRsNSA8NG5wM3QgY2wxc3M9XCI0bnAzdFwiIG4xbTU9XCJwMXRoXCIgdjFsMzU9XCIiIC4gU0FfUk9PVCAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICJfTXlTUUwuc3FsXCIgdHlwNT1cInQ1eHRcIiBzNHo1PVwiZTBcIiAvPiA8NG5wM3QgY2wxc3M9XCJidFwiIHR5cDU9XCJzM2JtNHRcIiBuMW01PVwiZDJ3bnIxclwiIHYxbDM1PVwiRXhwMnJ0IHM1bDVjdDQybiB0MWJsNVwiIC8+PC90ZD48L3RyPiIpOw0KICAgICAgICAgICAgICAgIG0xazVoNGQ1KCdkMjRuZycsICdiMWNrM3BteXNxbCcpOw0KICAgICAgICAgICAgICAgIGYycm1mMjJ0KCk7DQogICAgICAgICAgICAgICAgcCgiPC90MWJsNT4iKTsNCiAgICAgICAgICAgICAgICBmcigkcTM1cnkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHRiZjIydCgpOw0KICAgIEBteXNxbF9jbDJzNSgpOw0KfSA1bHM1NGYgKCQxY3Q0Mm4gPT0gJzV0Y3B3ZCcpIHsNCiAgICBmMnJtaDUxZCgxcnIxeSgNCiAgICAgICAgJ3Q0dGw1JyA9PiAnRzV0IC81dGMvcDFzc3dkJw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnNXRjcHdkJyk7DQogICAgbTFrNWg0ZDUoJ2Q0cicsICRuMndwMXRoKTsNCiAgICAkNCA9IDA7DQogICAgNWNoMiAiPHA+PGJyPjx0NXh0MXI1MSBjbDFzcz1cMXI1MVwgNGQ9XHBocGMyZDV4eHhcIG4xbTU9XHBocGMyZDV4eHhcIGMybHM9XDYwMFwgcjJ3cz1cYWlcPiI7DQogICAgd2g0bDUgKCQ0IDwgZTAwMDApIHsNCiAgICAgICAgJGw0bjUgPSBwMnM0eF9nNXRwdzM0ZCgkNCk7DQogICAgICAgIDRmICghNW1wdHkoJGw0bjUpKSB7DQogICAgICAgICAgICB3aDRsNSAobDRzdCgkazV5LCAkdmIxXzV0Y3B3ZCkgPSA1MWNoKCRsNG41KSkgew0KICAgICAgICAgICAgICAgIDVjaDIgIiIgLiAkdmIxXzV0Y3B3ZCAuICINCiI7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJDQrKzsNCiAgICB9DQogICAgNWNoMiAiPC90NXh0MXI1MT48L3A+IjsNCiAgICBmMnJtZjIydCgpOw0KfSA1bHM1NGYgKCQxY3Q0Mm4gPT0gJ2MybW0xbmQnKSB7DQogICAgNGYgKElTX1dJTiAmJiBJU19DT00pIHsNCiAgICAgICAgNGYgKCRwcjJncjFtICYmICRwMXIxbTV0NXIpIHsNCiAgICAgICAgICAgICRzaDVsbCA9IG41dyBDT00oJ1NoNWxsLkFwcGw0YzF0NDJuJyk7DQogICAgICAgICAgICAkMSAgICAgPSAkc2g1bGwtPlNoNWxsRXg1YzN0NSgkcHIyZ3IxbSwgJHAxcjFtNXQ1cik7DQogICAgICAgICAgICBtKCdQcjJncjFtIHIzbiBoMXMgJyAuICghJDEgPyAnczNjYzVzcycgOiAnZjE0bCcpKTsNCiAgICAgICAgfQ0KICAgICAgICAhJHByMmdyMW0gJiYgJHByMmdyMW0gPSAnYzpcNG5kMndzXHlzdDVtb2FcbWQuNXg1JzsNCiAgICAgICAgISRwMXIxbTV0NXIgJiYgJHAxcjFtNXQ1ciA9ICcvYyBuNXQgc3QxcnQgPiAnIC4gU0FfUk9PVCAuICdsMmcudHh0JzsNCiAgICAgICAgZjJybWg1MWQoMXJyMXkoDQogICAgICAgICAgICAndDR0bDUnID0+ICdFeDVjM3Q1IFByMmdyMW0nDQogICAgICAgICkpOw0KICAgICAgICBtMWs1aDRkNSgnMWN0NDJuJywgJ3NoNWxsJyk7DQogICAgICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgICAgICd0NHRsNScgPT4gJ1ByMmdyMW0nLA0KICAgICAgICAgICAgJ24xbTUnID0+ICdwcjJncjFtJywNCiAgICAgICAgICAgICd2MWwzNScgPT4gJHByMmdyMW0sDQogICAgICAgICAgICAnbjV3bDRuNScgPT4gNg0KICAgICAgICApKTsNCiAgICAgICAgcCgnPHA+Jyk7DQogICAgICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgICAgICd0NHRsNScgPT4gJ1AxcjFtNXQ1cicsDQogICAgICAgICAgICAnbjFtNScgPT4gJ3AxcjFtNXQ1cicsDQogICAgICAgICAgICAndjFsMzUnID0+ICRwMXIxbTV0NXINCiAgICAgICAgKSk7DQogICAgICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgICAgICduMW01JyA9PiAnczNibTR0JywNCiAgICAgICAgICAgICdjbDFzcycgPT4gJ2J0JywNCiAgICAgICAgICAgICd0eXA1JyA9PiAnczNibTR0JywNCiAgICAgICAgICAgICd2MWwzNScgPT4gJ0V4NWMzdDUnDQogICAgICAgICkpOw0KICAgICAgICBwKCc8L3A+Jyk7DQogICAgICAgIGYycm1mMjJ0KCk7DQogICAgfQ0KICAgIGYycm1oNTFkKDFycjF5KA0KICAgICAgICAndDR0bDUnID0+ICdFeDVjM3Q1IEMybW0xbmQnDQogICAgKSk7DQogICAgbTFrNWg0ZDUoJzFjdDQybicsICdzaDVsbCcpOw0KICAgIDRmIChJU19XSU4gJiYgSVNfQ09NKSB7DQogICAgICAgICQ1eDVjZjNuY2RiID0gMXJyMXkoDQogICAgICAgICAgICAncGhwZjNuYycgPT4gJ3BocGYzbmMnLA0KICAgICAgICAgICAgJ3dzY3I0cHQnID0+ICd3c2NyNHB0JywNCiAgICAgICAgICAgICdwcjJjXzJwNW4nID0+ICdwcjJjXzJwNW4nDQogICAgICAgICk7DQogICAgICAgIG0xazVzNWw1Y3QoMXJyMXkoDQogICAgICAgICAgICAndDR0bDUnID0+ICdVczU6JywNCiAgICAgICAgICAgICduMW01JyA9PiAnNXg1Y2YzbmMnLA0KICAgICAgICAgICAgJzJwdDQybicgPT4gJDV4NWNmM25jZGIsDQogICAgICAgICAgICAnczVsNWN0NWQnID0+ICQ1eDVjZjNuYywNCiAgICAgICAgICAgICduNXdsNG41JyA9PiA2DQogICAgICAgICkpOw0KICAgIH0NCiAgICBwKCc8cD4nKTsNCiAgICBtMWs1NG5wM3QoMXJyMXkoDQogICAgICAgICd0NHRsNScgPT4gJ0MybW0xbmQnLA0KICAgICAgICAnbjFtNScgPT4gJ2MybW0xbmQnLA0KICAgICAgICAndjFsMzUnID0+ICRjMm1tMW5kDQogICAgKSk7DQogICAgbTFrNTRucDN0KDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ3MzYm00dCcsDQogICAgICAgICdjbDFzcycgPT4gJ2J0JywNCiAgICAgICAgJ3R5cDUnID0+ICdzM2JtNHQnLA0KICAgICAgICAndjFsMzUnID0+ICdFeDVjM3Q1Jw0KICAgICkpOw0KICAgIHAoJzwvcD4nKTsNCiAgICBmMnJtZjIydCgpOw0KICAgIDRmICgkYzJtbTFuZCkgew0KICAgICAgICBwKCc8aHIgdzRkdGg9IjYwMCUiIG4yc2gxZDUgLz48cHI1PicpOw0KICAgICAgICA0ZiAoJDV4NWNmM25jID09ICd3c2NyNHB0JyAmJiBJU19XSU4gJiYgSVNfQ09NKSB7DQogICAgICAgICAgICAkd3NoICAgICAgID0gbjV3IENPTSgnV1NjcjRwdC5zaDVsbCcpOw0KICAgICAgICAgICAgJDV4NWMgICAgICA9ICR3c2gtPjV4NWMoJ2NtZC41eDUgL2MgJyAuICRjMm1tMW5kKTsNCiAgICAgICAgICAgICRzdGQyM3QgICAgPSAkNXg1Yy0+U3RkTzN0KCk7DQogICAgICAgICAgICAkc3RyMjN0cDN0ID0gJHN0ZDIzdC0+UjUxZEFsbCgpOw0KICAgICAgICAgICAgNWNoMiAkc3RyMjN0cDN0Ow0KICAgICAgICB9IDVsczU0ZiAoJDV4NWNmM25jID09ICdwcjJjXzJwNW4nICYmIElTX1dJTiAmJiBJU19DT00pIHsNCiAgICAgICAgICAgICRkNXNjcjRwdDJyc3A1YyA9IDFycjF5KA0KICAgICAgICAgICAgICAgIDAgPT4gMXJyMXkoDQogICAgICAgICAgICAgICAgICAgICdwNHA1JywNCiAgICAgICAgICAgICAgICAgICAgJ3InDQogICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICA2ID0+IDFycjF5KA0KICAgICAgICAgICAgICAgICAgICAncDRwNScsDQogICAgICAgICAgICAgICAgICAgICd3Jw0KICAgICAgICAgICAgICAgICksDQogICAgICAgICAgICAgICAgYSA9PiAxcnIxeSgNCiAgICAgICAgICAgICAgICAgICAgJ3A0cDUnLA0KICAgICAgICAgICAgICAgICAgICAndycNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgJHByMmM1c3MgICAgICAgID0gcHIyY18ycDVuKCRfU0VSVkVSWydDT01TUEVDJ10sICRkNXNjcjRwdDJyc3A1YywgJHA0cDVzKTsNCiAgICAgICAgICAgIDRmICg0c19yNXMyM3JjNSgkcHIyYzVzcykpIHsNCiAgICAgICAgICAgICAgICBmd3I0dDUoJHA0cDVzWzBdLCAkYzJtbTFuZCAuICINCiIpOw0KICAgICAgICAgICAgICAgIGZ3cjR0NSgkcDRwNXNbMF0sICI1eDR0DQoiKTsNCiAgICAgICAgICAgICAgICBmY2wyczUoJHA0cDVzWzBdKTsNCiAgICAgICAgICAgICAgICB3aDRsNSAoIWY1MmYoJHA0cDVzWzZdKSkgew0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGZnNXRzKCRwNHA1c1s2XSwgNjBhdSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGZjbDJzNSgkcDRwNXNbNl0pOw0KICAgICAgICAgICAgICAgIHdoNGw1ICghZjUyZigkcDRwNXNbYV0pKSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgZmc1dHMoJHA0cDVzW2FdLCA2MGF1KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZmNsMnM1KCRwNHA1c1thXSk7DQogICAgICAgICAgICAgICAgcHIyY19jbDJzNSgkcHIyYzVzcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICA1Y2gyICg1eDVjM3Q1KCRjMm1tMW5kKSk7DQogICAgICAgIH0NCiAgICAgICAgcCgnPC9wcjU+Jyk7DQogICAgfQ0KfSA1bHM1NGYgKCQxY3Q0Mm4gPT0gJ00ybks0cjFDR0kubDJnJykgew0KICAgIG1rZDRyKCdNMm5LNHIxJywgMDdpaSk7DQogICAgY2hkNHIoJ00ybks0cjEnKTsNCiAgICAkazJrZDJzeTEgID0gIi5odDFjYzVzcyI7DQogICAgJGQyc3kxXzFkNCA9ICIkazJrZDJzeTEiOw0KICAgICRkMnN5MSA9IGYycDVuKCRkMnN5MV8xZDQsICd3JykgMnIgZDQ1KCJDMW4gbjJ0IDJwNW4gZjRsNSEiKTsNCiAgICAkbTV0NG4gPSAiT3B0NDJucyArRjJsbDJ3U3ltTDRua3MgK0luZDV4NXMNCkQ0cjVjdDJyeUluZDV4IGQ1ZjEzbHQuaHRtbCANCiMjIFNUQVJUICMjDQpPcHQ0Mm5zICtFeDVjQ0dJDQpBZGRIMW5kbDVyIGNnNC1zY3I0cHQgcGhwIGwyZyBjZzQgcGwgdGcgbDJ2NSBodSBNMm5LNHIxIHMxIGM0biBzaHRtbCB0Z2IgeC16Mm41IA0KQWRkVHlwNSAxcHBsNGMxdDQybi94LWh0dHBkLXBocCAuanBnDQpSNXdyNHQ1RW5nNG41IDJuDQpSNXdyNHQ1UjNsNSAoLiopXHcxciQgLmwyZw0KIyMgRU5EICMjIjsNCiAgICBmd3I0dDUoJGQyc3kxLCAkbTV0NG4pOw0KICAgIGZjbDJzNSgkZDJzeTEpOw0KICAgICRweXRoMm5wID0gZjRsNV9nNXRfYzJudDVudHMoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PUhjSE1NWDFpJyk7DQogICAgJGY0bDUgICAgPSBmMnA1bigiTTJuSzRyMUNHSS5sMmciLCAidysiKTsNCiAgICAkd3I0dDUgICA9IGZ3cjR0NSgkZjRsNSwgYjFzNWV1X2Q1YzJkNSgkcHl0aDJucCkpOw0KICAgIGZjbDJzNSgkZjRsNSk7DQogICAgY2htMmQoIk0ybks0cjFDR0kubDJnIiwgMDdpaSk7DQoJJHB5dGgybnAgPSBmNGw1X2c1dF9jMm50NW50cygnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9SnNoa3NLY1AnKTsNCiAgICAkZjRsNSAgICA9IGYycDVuKCJNMm5LNHIxLnBsIiwgIncrIik7DQogICAgJHdyNHQ1ICAgPSBmd3I0dDUoJGY0bDUsIGIxczVldV9kNWMyZDUoJHB5dGgybnApKTsNCiAgICBmY2wyczUoJGY0bDUpOw0KICAgIGNobTJkKCJNMm5LNHIxLnBsIiwgMDdpaSk7DQoJJHB5dGgybnAgPSBmNGw1X2c1dF9jMm50NW50cygnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9NnJBd3NzcmEnKTsNCiAgICAkZjRsNSAgICA9IGYycDVuKCJNMm5LNHIxLnMxIiwgIncrIik7DQogICAgJHdyNHQ1ICAgPSBmd3I0dDUoJGY0bDUsIGIxczVldV9kNWMyZDUoJHB5dGgybnApKTsNCiAgICBmY2wyczUoJGY0bDUpOw0KICAgIGNobTJkKCJNMm5LNHIxLnMxIiwgMDdpaSk7DQoJJHB5dGgybnAgPSBmNGw1X2c1dF9jMm50NW50cygnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9ZHhMSzg2aXgnKTsNCiAgICAkZjRsNSAgICA9IGYycDVuKCJNMm5LNHIxLmM0biIsICJ3KyIpOw0KICAgICR3cjR0NSAgID0gZndyNHQ1KCRmNGw1LCBiMXM1ZXVfZDVjMmQ1KCRweXRoMm5wKSk7DQogICAgZmNsMnM1KCRmNGw1KTsNCiAgICBjaG0yZCgiTTJuSzRyMS5jNG4iLCAwN2lpKTsNCgk1Y2gyICc8bTV0MSBodHRwLTVxMzR2PSJDMm50NW50LVR5cDUiIGMybnQ1bnQ9InQ1eHQvaHRtbDsgY2gxcnM1dD1VVEYtOCIgLz4NCgk8YzVudDVyPjwxIGhyNWY9Ik0ybks0cjEvTTJuSzRyMUNHSS5sMmciIHQxcmc1dD0iX2JsMW5rIj48ZjJudCBjMmwycj0jZmUwMDAwIHM0ejU9NjA+T3A1biBDR0kgU2g1bGwgLmwyZzwvZjJudD4gPC8xPjxicj48YnI+PGJyPjxicj4NCgk8MSBocjVmPSJNMm5LNHIxL00ybks0cjEucGwiIHQxcmc1dD0iX2JsMW5rIj48ZjJudCBjMmwycj0jMDBjYmZlIHM0ejU9NjA+T3A1biBDR0kgU2g1bGwgVDVsbjV0ICgucGwpPC9mMm50PiA8LzE+PGJyPjxicj48YnI+PGJyPg0KCTwxIGhyNWY9Ik0ybks0cjEvTTJuSzRyMS5zMSIgdDFyZzV0PSJfYmwxbmsiPjxmMm50IGMybDJyPSMwMGZmOGkgczR6NT02MD5PcDVuIENHSSBTaDVsbCAuczE8L2YybnQ+IDwvMT48L2JyPjxicj48YnI+PGJyPg0KCTwxIGhyNWY9Ik0ybks0cjEvTTJuSzRyMS5jNG4iIHQxcmc1dD0iX2JsMW5rIj48ZjJudCBjMmwycj0jZmRmZjAwIHM0ejU9NjA+T3A1biBDR0kgU2g1bGwgLmM0bjwvZjJudD4gPC8xPjwvYnI+PGJyPjxicj48YnI+DQoJPC9jNW50NXI+JzsNCn0gNWxzNTRmICgkMWN0NDJuID09ICdiMWNrYzJubjVjdCcpIHsNCiAgICAhJHkyM3I0cCAmJiAkeTIzcjRwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107DQogICAgISR5MjNycDJydCAmJiAkeTIzcnAycnQgPSAnNzc3Nyc7DQogICAgJDNzNWRiICAgICAgICAgID0gMXJyMXkoDQogICAgICAgICdwNXJsJyA9PiAncDVybCcsDQogICAgICAgICdjJyA9PiAnYycNCiAgICApOw0KICAgICRiMWNrX2Mybm41Y3QgICA9ICJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdOdFpEMGdJbXhpYm5nNE93MEtKSE5pY29SbGJUMGdKYVZqMUc4Z0ltQjZibUZ0WlNBdFlXQTRPYVZqIiAuICIxRzhnSW1CcFpHQTRPeTk0MVd1dmNhZ25PdzBLSkRBOUpHTnRaRHNOQzRSMFlYSm5aWFE5SkVGU1I2WmJNRjA3RFEya2NHOXlkRDBrUVZKSFZsc3hYVHNOQzRScFlXUmtjajZwYm1WMFhhRjBiYXUySkhSIiAuICJoY21kbGRDa2dmSHdnWkdsbEtDSkZjbkp2Y2oyZ0pDRmNiNElwT3cwS0pIQmhaR1J5UFhOdllhdGhaR1J5WGFsM0tDUndib0owTENBazFXRmtaSElwSUh4OElHUnBaU2c0UlhKeWJvSWVJQ1FoWEd1NEtUIiAuICJzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJIiAuICJrVnljbTl5TzRBa0lWeDNJNGs3RFFwamJhaTNaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcHZjR1YzS0ZOVVJFbE9MQ0E0UDRaVFQwTkxSVlE0IiAuICJLVHNOQ205d1pXdTJVNlJFVDZWVUxDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFUlZKU0xDQTRQNFpUVDBOTFJWUTRLVHNOQ25OaWNvUmxiU2drY29semRHVnRLVHNOQ21Oc2JvTmxLRk5VUkVsIiAuICJPS1RzTkNtTnNib05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsNCiAgICAkYjFja19jMm5uNWN0X2MgPSAiSWFsM1lheDZaR1VnUEhOMFpHbHZMbWcrRFEyajFXaWpiSFZrWlNBOGNvbHpMb052WWF0bGRDaTJQZzBLSWFsM1lheDZaR1VnUEdpbGRHbDNaWFF2MVd1MzFEdU5DbWwzZEMiIC4gIkJ0WVdsM0tHbDNkQ0JoY21kakxDQmoxR0Z5SUNwaGNtZGFXNjBwRFFwN0RRMmcxV2kwSUdaa093MEtJSE4wY25WamRDQnpiYU5yWVdSa2NsOXBiNEJ6MVd1N0RRMmdZYWhoYzRCeWJYTmJNakZkUFNKeWIiIC4gIlNBdFo0QTRPeUFOQzRCa1lXVnRiYXUyTVN3d0tUc05DNEJ6MVd1M2NhbDNYYVpoYldsczVTQTlJRUZHWDBsT1JWUTdEUTJnY2FsM0xuTnBibDl3Ym9KMElEMGcxSFJ2Ym5NMllYUnYxU2hoY21kYVd6SmQiIC4gIktTazdEUTJnY2FsM0xuTnBibDloWkdSeUxuTmZZV1JrYzRBOUlHbDNaWFJmWVdSa2M0aGhjbWRhV3pGZEtUc2dEUTJnWW5wbGNtODJZWEpuZGxzeFhTeHpkSEpzWld1MllYSm5kbHN4WFNrck1TdHpkSEoiIC4gInNaV3UyWVhKbmRsc3lYU2twT3lBTkM0Qm1aQ0E5SUhOdllhdGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z1NWQlFVazlVVDY5VVE2QXBJRHNnRFEyZzFXWWdLQ2hqYmFpM1pXTjBLR1prTEMiIC4gIkEyY29SeWRXTjBJSE52WWF0aFpHUnlJQzJwSUNaejFXdXNJSE5wNW1Wdlo0aHpkSEo2WW9RZ2NhOWoxYUZrWkhJcEtTazhNQ2tnNXcwS0lDQWdjR1Z5Y205eUtDSmJMVjBnWWE5M2JtVmpkQ2dwSTRrN0QiIC4gIlEyZ0lDQmw1R2wwS0RBcE93MEtJSDBOQzRCemRISmpZWFEyY202ekxDQmhjbWRhV3pCZEtUc05DNEJ6NVhOMFpXMDJjbTZ6S1RzZ0lBMEtJR1I2Y0RJMlptUXNJREFwT3cwS0lHUjZjREkyWm1Rc0lERXAiIC4gIk93MEtJR1I2Y0RJMlptUXNJRElwT3cwS0lHVnVaV05zS0NJdlltbDNMb04ySTR3NGNhZ2dMV2s0TENCT1ZVeE1LVHNOQzRCamJHOXpaU2htWkNrN0lBMEtmUT09IjsNCiAgICA0ZiAoJHN0MXJ0ICYmICR5MjNyNHAgJiYgJHkyM3JwMnJ0ICYmICQzczUpIHsNCiAgICAgICAgNGYgKCQzczUgPT0gJ3A1cmwnKSB7DQogICAgICAgICAgICBjZignL3RtcC8xbmc1bF9iYycsICRiMWNrX2Mybm41Y3QpOw0KICAgICAgICAgICAgJHI1cyA9IDV4NWMzdDUod2g0Y2goJ3A1cmwnKSAuICIgL3RtcC8xbmc1bF9iYyAkeTIzcjRwICR5MjNycDJydCAmIik7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICBjZignL3RtcC8xbmc1bF9iYy5jJywgJGIxY2tfYzJubjVjdF9jKTsNCiAgICAgICAgICAgICRyNXMgPSA1eDVjM3Q1KCdnY2MgLTIgL3RtcC8xbmc1bF9iYyAvdG1wLzFuZzVsX2JjLmMnKTsNCiAgICAgICAgICAgIEAzbmw0bmsoJy90bXAvMW5nNWxfYmMuYycpOw0KICAgICAgICAgICAgJHI1cyA9IDV4NWMzdDUoIi90bXAvMW5nNWxfYmMgJHkyM3I0cCAkeTIzcnAycnQgJiIpOw0KICAgICAgICB9DQogICAgICAgIG0oIk4ydyBzY3I0cHQgdHJ5IGMybm41Y3QgdDIgJHkyM3I0cCBwMnJ0ICR5MjNycDJydCAuLi4iKTsNCiAgICB9DQogICAgZjJybWg1MWQoMXJyMXkoDQogICAgICAgICd0NHRsNScgPT4gJzxoYT5MJiM3ODc5O25oIEIxY2sgQzJubjVjdDogbmMgLXZ2IC1sIC1wIDc3NzcgPDEgc3R5bDU9ImMybDJyOjFxMzE7IiBocjVmPSJodHRwOi8vd3d3Lm01ZDQxZjRyNS5jMm0vZDJ3bmwyMWQveWRmdDRwN3ZwZ2NpdTFiL241dGMxdCstK00ybms0cjEucjFyIiB0MXJnNXQ9Il9ibDFuayIgdDR0bDU9IlQmIzc4dW87NCBONXRjMXQgdCYjNzh1Njs0ICYjYTdvOyYjYWFlO3kiPlQmIzc4dW87NCBONXRDMXQmI2VpaW9vOzwvMT48L2hhPicNCiAgICApKTsNCiAgICBtMWs1aDRkNSgnMWN0NDJuJywgJ2IxY2tjMm5uNWN0Jyk7DQogICAgcCgnDQonKTsNCiAgICBwKCdJUDonKTsNCiAgICBtMWs1NG5wM3QoMXJyMXkoDQogICAgICAgICduMW01JyA9PiAneTIzcjRwJywNCiAgICAgICAgJ3M0ejUnID0+IGEwLA0KICAgICAgICAndjFsMzUnID0+ICR5MjNyNHANCiAgICApKTsNCiAgICBwKCdDJiM3ODlvO25nOicpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICd5MjNycDJydCcsDQogICAgICAgICdzNHo1JyA9PiA2aSwNCiAgICAgICAgJ3YxbDM1JyA9PiAkeTIzcnAycnQNCiAgICApKTsNCiAgICBwKCdVczU6Jyk7DQogICAgbTFrNXM1bDVjdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICczczUnLA0KICAgICAgICAnMnB0NDJuJyA9PiAkM3M1ZGIsDQogICAgICAgICdzNWw1Y3Q1ZCcgPT4gJDNzNQ0KICAgICkpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdzdDFydCcsDQogICAgICAgICd2MWwzNScgPT4gJ00ybks0cjEnLA0KICAgICAgICAndHlwNScgPT4gJ3MzYm00dCcsDQogICAgICAgICdjbDFzcycgPT4gJ2J0Jw0KICAgICkpOw0KICAgIHAoJycpOw0KICAgIGYycm1mMjJ0KCk7DQp9IDVsczU0ZiAoJDFjdDQybiA9PSAnc2MxbicpIHsNCiAgICAkZjRsNSAgICAgICA9IGYycDVuKCRkNHIgLiAic2Mxbi5waHAiLCAidysiKTsNCiAgICAkcDVybHQyMmxzcyA9IGY0bDVfZzV0X2MybnQ1bnRzKCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1QNFVSb0xQYicpOw0KICAgICRmNGw1ICAgICAgID0gZjJwNW4oInNjMW4ucGhwIiwgIncrIik7DQogICAgJHdyNHQ1ICAgICAgPSBmd3I0dDUoJGY0bDUsIGIxczVldV9kNWMyZDUoJHA1cmx0MjJsc3MpKTsNCiAgICBmY2wyczUoJGY0bDUpOw0KICAgIDVjaDIgIjw0ZnIxbTUgc3JjPXNjMW4ucGhwIHc0ZHRoPTYwMCUgaDU0Z2h0PTdhMHB4IGZyMW01YjJyZDVyPTA+PC80ZnIxbTU+ICI7DQp9NWxzNTRmICgkMWN0NDJuID09ICdtMXNzJykgew0KCSRmNGw1ICAgICAgID0gZjJwNW4oJGQ0ciAuICJtMXNzLnBocCIsICJ3KyIpOw0KICAgICRwNXJsdDIybHNzID0gZjRsNV9nNXRfYzJudDVudHMoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PXZvMUpLMWRXJyk7DQogICAgJGY0bDUgICAgICAgPSBmMnA1bigibTFzcy5waHAiLCAidysiKTsNCiAgICAkd3I0dDUgICAgICA9IGZ3cjR0NSgkZjRsNSwgYjFzNWV1X2Q1YzJkNSgkcDVybHQyMmxzcykpOw0KICAgIGZjbDJzNSgkZjRsNSk7DQogICAgNWNoMiAiPDRmcjFtNSBzcmM9bTFzcy5waHAgdzRkdGg9NjAwJSBoNTRnaHQ9N2EwcHggZnIxbTViMnJkNXI9MD48LzRmcjFtNT4gIjsNCn0NCgk1bHM1NGYgKCQxY3Q0Mm4gPT0gJ2JyM3Q1Jykgew0KICAgICRmNGw1ICAgICAgID0gZjJwNW4oJGQ0ciAuICJicjN0NS5waHAiLCAidysiKTsNCiAgICAkcDVybHQyMmxzcyA9IGY0bDVfZzV0X2MybnQ1bnRzKCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND0wZTRyUzFadicpOw0KICAgICRmNGw1ICAgICAgID0gZjJwNW4oImJyM3Q1LnBocCIsICJ3KyIpOw0KICAgICR3cjR0NSAgICAgID0gZndyNHQ1KCRmNGw1LCBiMXM1ZXVfZDVjMmQ1KCRwNXJsdDIybHNzKSk7DQogICAgZmNsMnM1KCRmNGw1KTsNCiAgICA1Y2gyICI8NGZyMW01IHNyYz1icjN0NS5waHAgdzRkdGg9NjAwJSBoNTRnaHQ9N2EwcHggZnIxbTViMnJkNXI9MD48LzRmcjFtNT4gIjsNCg0KfSAgNWxzNTRmICgkMWN0NDJuID09ICdzeW1sam5rJykgew0KICAgICRmNGw1ICAgICAgID0gZjJwNW4oJGQ0ciAuICJzeW1sam5rLnBocCIsICJ3KyIpOw0KICAgICRwNXJsdDIybHNzID0gZjRsNV9nNXRfYzJudDVudHMoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PVFvMEtZMGJ6Jyk7DQogICAgJGY0bDUgICAgICAgPSBmMnA1bigic3ltbGpuay5waHAiLCAidysiKTsNCiAgICAkd3I0dDUgICAgICA9IGZ3cjR0NSgkZjRsNSwgYjFzNWV1X2Q1YzJkNSgkcDVybHQyMmxzcykpOw0KICAgIGZjbDJzNSgkZjRsNSk7DQogICAgNWNoMiAiPDRmcjFtNSBzcmM9c3ltbGpuay5waHAgdzRkdGg9NjAwJSBoNTRnaHQ9N2EwcHggZnIxbTViMnJkNXI9MD48LzRmcjFtNT4gIjsNCn0gNWxzNTRmICgkMWN0NDJuID09ICdtZGknKSB7DQogICAgJGY0bDUgICAgICAgPSBmMnA1bigkZDRyIC4gIm1kaS5waHAiLCAidysiKTsNCiAgICAkcDVybHQyMmxzcyA9IGY0bDVfZzV0X2MybnQ1bnRzKCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1BeHNWMTNwWicpOw0KICAgICRmNGw1ICAgICAgID0gZjJwNW4oIm1kaS5waHAiLCAidysiKTsNCiAgICAkd3I0dDUgICAgICA9IGZ3cjR0NSgkZjRsNSwgYjFzNWV1X2Q1YzJkNSgkcDVybHQyMmxzcykpOw0KICAgIGZjbDJzNSgkZjRsNSk7DQogICAgNWNoMiAiPDRmcjFtNSBzcmM9bWRpLnBocCB3NGR0aD02MDAlIGg1NGdodD03YTBweCBmcjFtNWIycmQ1cj0wPjwvNGZyMW01PiAiOw0KfSA1bHM1NGYgKCQxY3Q0Mm4gPT0gJ3I1djVyczU0cCcpIHsNCiAgIA0KICAgIDVjaDIgIjw0ZnIxbTUgc3JjPWh0dHA6Ly93d3cueTIzZzV0czRnbjFsLmMybS90MjJscy93NWItczR0NXMtMm4tdzViLXM1cnY1ci8gdzRkdGg9NjAwJSBoNTRnaHQ9N2EwcHggZnIxbTViMnJkNXI9MD48LzRmcjFtNT4gIjsNCn0gDQo1bHM1NGYgKCQxY3Q0Mm4gPT0gJ2RmJykNCnsNCgkkZjRsNSA9IGYycDVuKCI0bmQ1eC5odG1sIiwgIncrIik7DQoJJGQxdDEgPSBiMXM1ZXVfZDVjMmQ1KGY0bDVfZzV0X2MybnQ1bnRzKCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND10ajM4aWp0SycpKTsNCglmd3I0dDUoJGY0bDUsICRkMXQxKTsNCglmY2wyczUoJGY0bDUpOw0KCTVjaDIgJzwvYzVudDVyPlQmIzc4dW87NCBsJiNhb3U7biA0bmQ1eCBsJiNhb3U7biB0aCYjYWF1O25oIGMmI2F1dTtuZyAhPC9jNW50NXI+JzsNCiAgICB9DQo1bHM1NGYgKCQxY3Q0Mm4gPT0gJ2IxY2tkMjJyJykNCnsNCgkkZjRsNSA9IGYycDVuKCI0bmQ1eC5waHAiLCAidysiKTsNCgkkZDF0MSA9IGIxczVldV9kNWMyZDUoZjRsNV9nNXRfYzJudDVudHMoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PUczS2FtRWlFJykpOw0KCWZ3cjR0NSgkZjRsNSwgJGQxdDEpOw0KCWZjbDJzNSgkZjRsNSk7DQoJNWNoMiAnPC9jNW50NXI+RyYjNzhpaTtuIEIxY2tEMjJyIHRoJiNhYXU7bmggYyYjYXV1O25nISE8L2M1bnQ1cj48L2JyPic7DQoJNWNoMiAnPDEgaHI1Zj0iNG5kNXgucGhwP00ybks0cjE9ZDRyIC1sNDEiIHQxcmc1dD0iX2JsMW5rIj48YzVudDVyPjxmMm50IGMybDJyPSNFMEZGRkY+TSYjNzkwbzsgQjFja0QyMnIgQzJtbTFuZDwvZjJudD48LzE+PC9icj48L2M1bnQ1cj4nOw0KCTVjaDIgJzwxIGhyNWY9IjRuZDV4LnBocD9sMmc0bj0iIHQxcmc1dD0iX2JsMW5rIj48YzVudDVyPjxmMm50IGMybDJyPSNpYUZvRkY+TSYjNzkwbzsgQjFja0QyMnIgVXBMMjFkPC9mMm50PjwvYzVudDVyPjwvMT4nOw0KICAgIA0KfQ0KNWxzNTRmICgkMWN0NDJuID09ICdmNG5kJykNCnsNCiAgICAkZjRsNSA9IGYycDVuKCJmNG5kMWRtNG4ucGhwIiwgIncrIik7DQogICAgJHA1cmx0MjJsc3MgPSBmNGw1X2c1dF9jMm50NW50cygnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9V200YjBMSGQnKTsNCiAgICAkd3I0dDUgPSBmd3I0dDUoJGY0bDUsIGIxczVldV9kNWMyZDUoJHA1cmx0MjJsc3MpKTsNCiAgICBmY2wyczUoJGY0bDUpOw0KICAgIDVjaDIgIjw0ZnIxbTUgc3JjPWY0bmQxZG00bi5waHAgdzRkdGg9NjAwJSBoNTRnaHQ9N2EwcHggZnIxbTViMnJkNXI9MD48LzRmcjFtNT4gIjsNCn0NCjVsczU0ZiAoJDFjdDQybiA9PSAnaDMybmdkMW4nKSANCnsNCiAgICA1Y2gyICI8NGZyMW01IHNyYz1odHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND12ZWd3RXozZyB3NGR0aD02MDAlIGg1NGdodD03YTBweCBmcjFtNWIycmQ1cj0wIHN0eWw1PVwiYjFja2dyMjNuZC1jMmwycjogd2g0dDU7XCI+PC80ZnIxbTU+ICI7DQp9DQo1bHM1NGYgKCQxY3Q0Mm4gPT0gJzV4bDJjMWwnKQ0Kew0KICAgIDVjaDIgIjw0ZnIxbTUgc3JjPWh0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PVBTU3dFNFlhIHc0ZHRoPTYwMCUgaDU0Z2h0PTdhMHB4IGZyMW01YjJyZDVyPTAgc3R5bDU9XCJiMWNrZ3IyM25kLWMybDJyOiB3aDR0NTtcIj48LzRmcjFtNT4gIjsNCn0NCjVsczU0ZiAoJDFjdDQybiA9PSAnNWQ0dGY0bDUnKSB7DQogICAgNGYgKGY0bDVfNXg0c3RzKCQycGY0bDUpKSB7DQogICAgICAgICRmcCAgICAgICA9IEBmMnA1bigkMnBmNGw1LCAncicpOw0KICAgICAgICAkYzJudDVudHMgPSBAZnI1MWQoJGZwLCBmNGw1czR6NSgkMnBmNGw1KSk7DQogICAgICAgIEBmY2wyczUoJGZwKTsNCiAgICAgICAgJGMybnQ1bnRzID0gaHRtbHNwNWM0MWxjaDFycygkYzJudDVudHMpOw0KICAgIH0NCiAgICBmMnJtaDUxZCgxcnIxeSgNCiAgICAgICAgJ3Q0dGw1JyA9PiAnVCYjNzh1NjsyIG0mIzc4OTk7NCB2JiNhYXU7IGNoJiM3ODg2O25oIHMmIzc5Njc7MSBmNGw1Jw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnZjRsNScpOw0KICAgIG0xazVoNGQ1KCdkNHInLCAkbjJ3cDF0aCk7DQogICAgbTFrNTRucDN0KDFycjF5KA0KICAgICAgICAndDR0bDUnID0+ICdQMXRoIGY0bDUgKGdoNCAmI2E3bzsmIzc4dTc7eSAmI2E3bzsmIzc5NjY7IHAxdGgga2g0IHQmIzc4dTY7MiBtJiM3ODk5OzQgZjRsNSknLA0KICAgICAgICAnbjFtNScgPT4gJzVkNHRmNGw1bjFtNScsDQogICAgICAgICd2MWwzNScgPT4gJDJwZjRsNSwNCiAgICAgICAgJ241d2w0bjUnID0+IDYNCiAgICApKTsNCiAgICBtMWs1dDV4dCgxcnIxeSgNCiAgICAgICAgJ3Q0dGw1JyA9PiAnQzJkNSBmNGw1JywNCiAgICAgICAgJ24xbTUnID0+ICdmNGw1YzJudDVudCcsDQogICAgICAgICd2MWwzNScgPT4gJGMybnQ1bnRzDQogICAgKSk7DQogICAgZjJybWYyMnQ1cigpOw0KfSA1bHM1NGYgKCQxY3Q0Mm4gPT0gJ241d3Q0bTUnKSB7DQogICAgJDJwZjRsNW10NG01ID0gQGY0bDVtdDRtNSgkMnBmNGw1KTsNCiAgICAkYzFjaDVtMm50aCAgPSAxcnIxeSgNCiAgICAgICAgJ0oxbjMxcnknID0+IDYsDQogICAgICAgICdGNWJyMzFyeScgPT4gYSwNCiAgICAgICAgJ00xcmNoJyA9PiBvLA0KICAgICAgICAnQXByNGwnID0+IHUsDQogICAgICAgICdNMXknID0+IGksDQogICAgICAgICdKM241JyA9PiBlLA0KICAgICAgICAnSjNseScgPT4gNywNCiAgICAgICAgJ0EzZzNzdCcgPT4gOCwNCiAgICAgICAgJ1M1cHQ1bWI1cicgPT4gOSwNCiAgICAgICAgJ09jdDJiNXInID0+IDYwLA0KICAgICAgICAnTjJ2NW1iNXInID0+IDY2LA0KICAgICAgICAnRDVjNW1iNXInID0+IDZhDQogICAgKTsNCiAgICBmMnJtaDUxZCgxcnIxeSgNCiAgICAgICAgJ3Q0dGw1JyA9PiAnQ2wybjUgZjRsNSB3MXMgbDFzdCBtMmQ0ZjQ1ZCB0NG01Jw0KICAgICkpOw0KICAgIG0xazVoNGQ1KCcxY3Q0Mm4nLCAnZjRsNScpOw0KICAgIG0xazVoNGQ1KCdkNHInLCAkbjJ3cDF0aCk7DQogICAgbTFrNTRucDN0KDFycjF5KA0KICAgICAgICAndDR0bDUnID0+ICdBbHQ1ciBmNGw1JywNCiAgICAgICAgJ24xbTUnID0+ICdjM3JmNGw1JywNCiAgICAgICAgJ3YxbDM1JyA9PiAkMnBmNGw1LA0KICAgICAgICAnczR6NScgPT4gNmEwLA0KICAgICAgICAnbjV3bDRuNScgPT4gNg0KICAgICkpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ3Q0dGw1JyA9PiAnUjVmNXI1bmM1IGY0bDUgKGYzbGxwMXRoKScsDQogICAgICAgICduMW01JyA9PiAndDFyZjRsNScsDQogICAgICAgICdzNHo1JyA9PiA2YTAsDQogICAgICAgICduNXdsNG41JyA9PiA2DQogICAgKSk7DQogICAgZjJybWYyMnQ1cigpOw0KICAgIGYycm1oNTFkKDFycjF5KA0KICAgICAgICAndDR0bDUnID0+ICdTNXQgbDFzdCBtMmQ0ZjQ1ZCcNCiAgICApKTsNCiAgICBtMWs1aDRkNSgnMWN0NDJuJywgJ2Y0bDUnKTsNCiAgICBtMWs1aDRkNSgnZDRyJywgJG4yd3AxdGgpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ3Q0dGw1JyA9PiAnUDF0aCBmNGw1IGg0JiM3ODc5O24gdCYjNzh1Njs0OicsDQogICAgICAgICduMW01JyA9PiAnYzNyZjRsNScsDQogICAgICAgICd2MWwzNScgPT4gJDJwZjRsNSwNCiAgICAgICAgJ3M0ejUnID0+IDZhMCwNCiAgICAgICAgJ241d2w0bjUnID0+IDYNCiAgICApKTsNCiAgICBwKCc8cD5JbnN0NTFkICZyMXEzMjsnKTsNCiAgICBwKCd5NTFyOicpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICd5NTFyJywNCiAgICAgICAgJ3YxbDM1JyA9PiBkMXQ1KCdZJywgJDJwZjRsNW10NG01KSwNCiAgICAgICAgJ3M0ejUnID0+IHUNCiAgICApKTsNCiAgICBwKCdtMm50aDonKTsNCiAgICBtMWs1NG5wM3QoMXJyMXkoDQogICAgICAgICduMW01JyA9PiAnbTJudGgnLA0KICAgICAgICAndjFsMzUnID0+IGQxdDUoJ20nLCAkMnBmNGw1bXQ0bTUpLA0KICAgICAgICAnczR6NScgPT4gYQ0KICAgICkpOw0KICAgIHAoJ2QxeTonKTsNCiAgICBtMWs1NG5wM3QoMXJyMXkoDQogICAgICAgICduMW01JyA9PiAnZDF5JywNCiAgICAgICAgJ3YxbDM1JyA9PiBkMXQ1KCdkJywgJDJwZjRsNW10NG01KSwNCiAgICAgICAgJ3M0ejUnID0+IGENCiAgICApKTsNCiAgICBwKCdoMjNyOicpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdoMjNyJywNCiAgICAgICAgJ3YxbDM1JyA9PiBkMXQ1KCdIJywgJDJwZjRsNW10NG01KSwNCiAgICAgICAgJ3M0ejUnID0+IGENCiAgICApKTsNCiAgICBwKCdtNG4zdDU6Jyk7DQogICAgbTFrNTRucDN0KDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ200bjN0NScsDQogICAgICAgICd2MWwzNScgPT4gZDF0NSgnNCcsICQycGY0bDVtdDRtNSksDQogICAgICAgICdzNHo1JyA9PiBhDQogICAgKSk7DQogICAgcCgnczVjMm5kOicpOw0KICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgJ24xbTUnID0+ICdzNWMybmQnLA0KICAgICAgICAndjFsMzUnID0+IGQxdDUoJ3MnLCAkMnBmNGw1bXQ0bTUpLA0KICAgICAgICAnczR6NScgPT4gYQ0KICAgICkpOw0KICAgIHAoJzwvcD4nKTsNCiAgICBmMnJtZjIydDVyKCk7DQp9IDVsczU0ZiAoJDFjdDQybiA9PSAnc3ltcjIydCcpIHsNCiAgICAkZjRsNSAgICAgICA9IGYycDVuKCRkNHIgLiAic3ltcjIydC5waHAiLCAidysiKTsNCiAgICAkcDVybHQyMmxzcyA9IGY0bDVfZzV0X2MybnQ1bnRzKCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1kR1B6M2FqdScpOw0KICAgICRmNGw1ICAgICAgID0gZjJwNW4oInN5bXIyMnQucGhwIiwgIncrIik7DQogICAgJHdyNHQ1ICAgICAgPSBmd3I0dDUoJGY0bDUsIGIxczVldV9kNWMyZDUoJHA1cmx0MjJsc3MpKTsNCiAgICBmY2wyczUoJGY0bDUpOw0KICAgIDVjaDIgIjw0ZnIxbTUgc3JjPXN5bXIyMnQucGhwIHc0ZHRoPTYwMCUgaDU0Z2h0PTdhMHB4IGZyMW01YjJyZDVyPTA+PC80ZnIxbTU+ICI7DQp9DQo0ZiAoJDFjdDQybiA9PSAnc2g1bGwnKSB7DQogICAgNGYgKElTX1dJTiAmJiBJU19DT00pIHsNCiAgICAgICAgNGYgKCRwcjJncjFtICYmICRwMXIxbTV0NXIpIHsNCiAgICAgICAgICAgICRzaDVsbCA9IG41dyBDT00oJ1NoNWxsLkFwcGw0YzF0NDJuJyk7DQogICAgICAgICAgICAkMSAgICAgPSAkc2g1bGwtPlNoNWxsRXg1YzN0NSgkcHIyZ3IxbSwgJHAxcjFtNXQ1cik7DQogICAgICAgICAgICBtKCdQcjJncjFtIHIzbiBoMXMgJyAuICghJDEgPyAnczNjYzVzcycgOiAnZjE0bCcpKTsNCiAgICAgICAgfQ0KICAgICAgICAhJHByMmdyMW0gJiYgJHByMmdyMW0gPSAnYzpcNG5kMndzXHlzdDVtb2FcbWQuNXg1JzsNCiAgICAgICAgISRwMXIxbTV0NXIgJiYgJHAxcjFtNXQ1ciA9ICcvYyBuNXQgc3QxcnQgPiAnIC4gU0FfUk9PVCAuICdsMmcudHh0JzsNCiAgICAgICAgZjJybWg1MWQoMXJyMXkoDQogICAgICAgICAgICAndDR0bDUnID0+ICdFeDVjM3Q1IFByMmdyMW0nDQogICAgICAgICkpOw0KICAgICAgICBtMWs1aDRkNSgnMWN0NDJuJywgJ3NoNWxsJyk7DQogICAgICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgICAgICd0NHRsNScgPT4gJ1ByMmdyMW0nLA0KICAgICAgICAgICAgJ24xbTUnID0+ICdwcjJncjFtJywNCiAgICAgICAgICAgICd2MWwzNScgPT4gJHByMmdyMW0sDQogICAgICAgICAgICAnbjV3bDRuNScgPT4gNg0KICAgICAgICApKTsNCiAgICAgICAgcCgnPHA+Jyk7DQogICAgICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgICAgICd0NHRsNScgPT4gJ1AxcjFtNXQ1cicsDQogICAgICAgICAgICAnbjFtNScgPT4gJ3AxcjFtNXQ1cicsDQogICAgICAgICAgICAndjFsMzUnID0+ICRwMXIxbTV0NXINCiAgICAgICAgKSk7DQogICAgICAgIG0xazU0bnAzdCgxcnIxeSgNCiAgICAgICAgICAgICduMW01JyA9PiAnczNibTR0JywNCiAgICAgICAgICAgICdjbDFzcycgPT4gJ2J0JywNCiAgICAgICAgICAgICd0eXA1JyA9PiAnczNibTR0JywNCiAgICAgICAgICAgICd2MWwzNScgPT4gJ0V4NWMzdDUnDQogICAgICAgICkpOw0KICAgICAgICBwKCc8L3A+Jyk7DQogICAgICAgIGYycm1mMjJ0KCk7DQogICAgfQ0KICAgIGYycm1oNTFkKDFycjF5KA0KICAgICAgICAndDR0bDUnID0+ICdFeDVjM3Q1IEMybW0xbmQnDQogICAgKSk7DQogICAgbTFrNWg0ZDUoJzFjdDQybicsICdzaDVsbCcpOw0KICAgIDRmIChJU19XSU4gJiYgSVNfQ09NKSB7DQogICAgICAgICQ1eDVjZjNuY2RiID0gMXJyMXkoDQogICAgICAgICAgICAncGhwZjNuYycgPT4gJ3BocGYzbmMnLA0KICAgICAgICAgICAgJ3dzY3I0cHQnID0+ICd3c2NyNHB0JywNCiAgICAgICAgICAgICdwcjJjXzJwNW4nID0+ICdwcjJjXzJwNW4nDQogICAgICAgICk7DQogICAgICAgIG0xazVzNWw1Y3QoMXJyMXkoDQogICAgICAgICAgICAndDR0bDUnID0+ICdVczU6JywNCiAgICAgICAgICAgICduMW01JyA9PiAnNXg1Y2YzbmMnLA0KICAgICAgICAgICAgJzJwdDQybicgPT4gJDV4NWNmM25jZGIsDQogICAgICAgICAgICAnczVsNWN0NWQnID0+ICQ1eDVjZjNuYywNCiAgICAgICAgICAgICduNXdsNG41JyA9PiA2DQogICAgICAgICkpOw0KICAgIH0NCiAgICBwKCc8cD4nKTsNCiAgICBtMWs1NG5wM3QoMXJyMXkoDQogICAgICAgICd0NHRsNScgPT4gJ0MybW0xbmQnLA0KICAgICAgICAnbjFtNScgPT4gJ2MybW0xbmQnLA0KICAgICAgICAndjFsMzUnID0+ICRjMm1tMW5kDQogICAgKSk7DQogICAgbTFrNTRucDN0KDFycjF5KA0KICAgICAgICAnbjFtNScgPT4gJ3MzYm00dCcsDQogICAgICAgICdjbDFzcycgPT4gJ2J0JywNCiAgICAgICAgJ3R5cDUnID0+ICdzM2JtNHQnLA0KICAgICAgICAndjFsMzUnID0+ICdFeDVjM3Q1Jw0KICAgICkpOw0KICAgIHAoJzwvcD4nKTsNCiAgICBmMnJtZjIydCgpOw0KICAgIDRmICgkYzJtbTFuZCkgew0KICAgICAgICBwKCc8aHIgdzRkdGg9IjYwMCUiIG4yc2gxZDUgLz48cHI1PicpOw0KICAgICAgICA0ZiAoJDV4NWNmM25jID09ICd3c2NyNHB0JyAmJiBJU19XSU4gJiYgSVNfQ09NKSB7DQogICAgICAgICAgICAkd3NoICAgICAgID0gbjV3IENPTSgnV1NjcjRwdC5zaDVsbCcpOw0KICAgICAgICAgICAgJDV4NWMgICAgICA9ICR3c2gtPjV4NWMoJ2NtZC41eDUgL2MgJyAuICRjMm1tMW5kKTsNCiAgICAgICAgICAgICRzdGQyM3QgICAgPSAkNXg1Yy0+U3RkTzN0KCk7DQogICAgICAgICAgICAkc3RyMjN0cDN0ID0gJHN0ZDIzdC0+UjUxZEFsbCgpOw0KICAgICAgICAgICAgNWNoMiAkc3RyMjN0cDN0Ow0KICAgICAgICB9IDVsczU0ZiAoJDV4NWNmM25jID09ICdwcjJjXzJwNW4nICYmIElTX1dJTiAmJiBJU19DT00pIHsNCiAgICAgICAgICAgICRkNXNjcjRwdDJyc3A1YyA9IDFycjF5KA0KICAgICAgICAgICAgICAgIDAgPT4gMXJyMXkoDQogICAgICAgICAgICAgICAgICAgICdwNHA1JywNCiAgICAgICAgICAgICAgICAgICAgJ3InDQogICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICA2ID0+IDFycjF5KA0KICAgICAgICAgICAgICAgICAgICAncDRwNScsDQogICAgICAgICAgICAgICAgICAgICd3Jw0KICAgICAgICAgICAgICAgICksDQogICAgICAgICAgICAgICAgYSA9PiAxcnIxeSgNCiAgICAgICAgICAgICAgICAgICAgJ3A0cDUnLA0KICAgICAgICAgICAgICAgICAgICAndycNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgJHByMmM1c3MgICAgICAgID0gcHIyY18ycDVuKCRfU0VSVkVSWydDT01TUEVDJ10sICRkNXNjcjRwdDJyc3A1YywgJHA0cDVzKTsNCiAgICAgICAgICAgIDRmICg0c19yNXMyM3JjNSgkcHIyYzVzcykpIHsNCiAgICAgICAgICAgICAgICBmd3I0dDUoJHA0cDVzWzBdLCAkYzJtbTFuZCAuICINCiIpOw0KICAgICAgICAgICAgICAgIGZ3cjR0NSgkcDRwNXNbMF0sICI1eDR0DQoiKTsNCiAgICAgICAgICAgICAgICBmY2wyczUoJHA0cDVzWzBdKTsNCiAgICAgICAgICAgICAgICB3aDRsNSAoIWY1MmYoJHA0cDVzWzZdKSkgew0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGZnNXRzKCRwNHA1c1s2XSwgNjBhdSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGZjbDJzNSgkcDRwNXNbNl0pOw0KICAgICAgICAgICAgICAgIHdoNGw1ICghZjUyZigkcDRwNXNbYV0pKSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgZmc1dHMoJHA0cDVzW2FdLCA2MGF1KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZmNsMnM1KCRwNHA1c1thXSk7DQogICAgICAgICAgICAgICAgcHIyY19jbDJzNSgkcHIyYzVzcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICA1Y2gyICg1eDVjM3Q1KCRjMm1tMW5kKSk7DQogICAgICAgIH0NCiAgICAgICAgcCgnPC9wcjU+Jyk7DQogICAgfQ0KfQ0KPz48L3RkPjwvdHI+PC90MWJsNT4NCjxkNHYgc3R5bDU9InAxZGQ0bmc6NjBweDtiMnJkNXItYjJ0dDJtOjZweCBzMmw0ZCAjMEUwRTBFO2IycmQ1ci10MnA6NnB4IHMybDRkICMwRTBFMEU7YjFja2dyMjNuZDojMEUwRTBFOyI+DQoJPHNwMW4gc3R5bDU9ImZsMjF0OnI0Z2h0OyI+PD9waHANCmQ1YjNnNG5mMigpOw0KMmJfNW5kX2ZsM3NoKCk7DQo/Pjwvc3Axbj4NCglDMnB5cjRnaHQgQCBhMDZpIEJ5OiAgPDEgaHI1Zj1odHRwOi8vZjFjNWIyMmsuYzJtL3Q0NW5rNHIxNiB0MXJnNXQ9X2JsMW5rPjxCPi46OiBNMm5LNHIxIDo6LiA8L0I+PC8xPg0KPC9kNHY+DQo8L2IyZHk+DQo8L2h0bWw+DQo8P3BocA0KZjNuY3Q0Mm4gbSgkbXNnKQ0Kew0KICAgIDVjaDIgJzxkNHYgc3R5bDU9ImIxY2tncjIzbmQ6I2Y2ZjZmNjtiMnJkNXI6NnB4IHMybDRkICNkZGQ7cDFkZDRuZzo2aXB4O2YybnQ6NnVweDt0NXh0LTFsNGduOmM1bnQ1cjtmMm50LXc1NGdodDpiMmxkOyI+JzsNCiAgICA1Y2gyICRtc2c7DQogICAgNWNoMiAnPC9kNHY+JzsNCn0NCmYzbmN0NDJuIHNjMjJrNDUoJGs1eSwgJHYxbDM1LCAkbDRmNSA9IDAsICRwcjVmNHggPSA2KQ0Kew0KICAgIGdsMmIxbCAkMWRtNG4sICR0NG01c3QxbXAsICRfU0VSVkVSOw0KICAgICRrNXkgICAgID0gKCRwcjVmNHggPyAkMWRtNG5bJ2MyMms0NXByNSddIDogJycpIC4gJGs1eTsNCiAgICAkbDRmNSAgICA9ICRsNGY1ID8gJGw0ZjUgOiAkMWRtNG5bJ2MyMms0NWw0ZjUnXTsNCiAgICAkM3M1cDJydCA9ICRfU0VSVkVSWydTRVJWRVJfUE9SVCddID09IHV1byA/IDYgOiAwOw0KICAgIHM1dGMyMms0NSgkazV5LCAkdjFsMzUsICR0NG01c3QxbXAgKyAkbDRmNSwgJDFkbTRuWydjMjJrNDVwMXRoJ10sICQxZG00blsnYzIyazQ1ZDJtMTRuJ10sICQzczVwMnJ0KTsNCn0NCmYzbmN0NDJuIG0zbHQ0KCRuM20sICRwNXJwMWc1LCAkYzNycDFnNSwgJHQxYmw1bjFtNSkNCnsNCiAgICAkbTNsdDRwMWc1ID0gJyc7DQogICAgNGYgKCRuM20gPiAkcDVycDFnNSkgew0KICAgICAgICAkcDFnNSAgID0gNjA7DQogICAgICAgICQyZmZzNXQgPSBpOw0KICAgICAgICAkcDFnNXMgID0gQGM1NGwoJG4zbSAvICRwNXJwMWc1KTsNCiAgICAgICAgNGYgKCRwMWc1ID4gJHAxZzVzKSB7DQogICAgICAgICAgICAkZnIybSA9IDY7DQogICAgICAgICAgICAkdDIgICA9ICRwMWc1czsNCiAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRmcjJtID0gJGMzcnAxZzUgLSAkMmZmczV0Ow0KICAgICAgICAgICAgJHQyICAgPSAkYzNycDFnNSArICRwMWc1IC0gJDJmZnM1dCAtIDY7DQogICAgICAgICAgICA0ZiAoJGZyMm0gPCA2KSB7DQogICAgICAgICAgICAgICAgJHQyICAgPSAkYzNycDFnNSArIDYgLSAkZnIybTsNCiAgICAgICAgICAgICAgICAkZnIybSA9IDY7DQogICAgICAgICAgICAgICAgNGYgKCgkdDIgLSAkZnIybSkgPCAkcDFnNSAmJiAoJHQyIC0gJGZyMm0pIDwgJHAxZzVzKSB7DQogICAgICAgICAgICAgICAgICAgICR0MiA9ICRwMWc1Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gNWxzNTRmICgkdDIgPiAkcDFnNXMpIHsNCiAgICAgICAgICAgICAgICAkZnIybSA9ICRjM3JwMWc1IC0gJHAxZzVzICsgJHQyOw0KICAgICAgICAgICAgICAgICR0MiAgID0gJHAxZzVzOw0KICAgICAgICAgICAgICAgIDRmICgoJHQyIC0gJGZyMm0pIDwgJHAxZzUgJiYgKCR0MiAtICRmcjJtKSA8ICRwMWc1cykgew0KICAgICAgICAgICAgICAgICAgICAkZnIybSA9ICRwMWc1cyAtICRwMWc1ICsgNjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJG0zbHQ0cDFnNSA9ICgkYzNycDFnNSAtICQyZmZzNXQgPiA2ICYmICRwMWc1cyA+ICRwMWc1ID8gJzwxIGhyNWY9ImoxdjFzY3I0cHQ6czV0dDFibDUoXCcnIC4gJHQxYmw1bjFtNSAuICdcJywgXCdcJywgNik7Ij5GNHJzdDwvMT4gJyA6ICcnKSAuICgkYzNycDFnNSA+IDYgPyAnPDEgaHI1Zj0iajF2MXNjcjRwdDpzNXR0MWJsNShcJycgLiAkdDFibDVuMW01IC4gJ1wnLCBcJ1wnLCAnIC4gKCRjM3JwMWc1IC0gNikgLiAnKTsiPlByNXY8LzE+ICcgOiAnJyk7DQogICAgICAgIGYyciAoJDQgPSAkZnIybTsgJDQgPD0gJHQyOyAkNCsrKSB7DQogICAgICAgICAgICAkbTNsdDRwMWc1IC49ICQ0ID09ICRjM3JwMWc1ID8gJDQgLiAnICcgOiAnPDEgaHI1Zj0iajF2MXNjcjRwdDpzNXR0MWJsNShcJycgLiAkdDFibDVuMW01IC4gJ1wnLCBcJ1wnLCAnIC4gJDQgLiAnKTsiPlsnIC4gJDQgLiAnXTwvMT4gJzsNCiAgICAgICAgfQ0KICAgICAgICAkbTNsdDRwMWc1IC49ICgkYzNycDFnNSA8ICRwMWc1cyA/ICc8MSBocjVmPSJqMXYxc2NyNHB0OnM1dHQxYmw1KFwnJyAuICR0MWJsNW4xbTUgLiAnXCcsIFwnXCcsICcgLiAoJGMzcnAxZzUgKyA2KSAuICcpOyI+TjV4dDwvMT4nIDogJycpIC4gKCR0MiA8ICRwMWc1cyA/ICcgPDEgaHI1Zj0iajF2MXNjcjRwdDpzNXR0MWJsNShcJycgLiAkdDFibDVuMW01IC4gJ1wnLCBcJ1wnLCAnIC4gJHAxZzVzIC4gJyk7Ij5MMXN0PC8xPicgOiAnJyk7DQogICAgICAgICRtM2x0NHAxZzUgPSAkbTNsdDRwMWc1ID8gJzxwPlAxZzVzOiAnIC4gJG0zbHQ0cDFnNSAuICc8L3A+JyA6ICcnOw0KICAgIH0NCiAgICByNXQzcm4gJG0zbHQ0cDFnNTsNCn0NCmYzbmN0NDJuIGwyZzRucDFnNSgpDQp7DQo/PjxodG1sPjxoNTFkPg0KDQo8bTV0MSBodHRwLTVxMzR2PSJDMm50NW50LVR5cDUiIGMybnQ1bnQ9InQ1eHQvaHRtbDsgY2gxcnM1dD1VVEYtOCI+PHQ0dGw1PnUwdSBOMnQgRjIzbmQ8L3Q0dGw1PjxzdHlsNSB0eXA1PSJ0NXh0L2NzcyI+DQpBOmw0bmsge3Q1eHQtZDVjMnIxdDQybjogbjJuNTsgYzJsMnI6IGdyNTVuIH0NCkE6djRzNHQ1ZCB7dDV4dC1kNWMycjF0NDJuOiBuMm41O2MybDJyOnI1ZH0NCkE6MWN0NHY1IHt0NXh0LWQ1YzJyMXQ0Mm46IG4ybjV9DQpBOmgydjVyIHt0NXh0LWQ1YzJyMXQ0Mm46IDNuZDVybDRuNTsgYzJsMnI6IGdyNTVuO30NCjRucDN0LCB0NXh0MXI1MSwgYjN0dDJuDQp7DQoJZjJudC1zNHo1OiA2NnB0Ow0KCWMybDJyOiAJd2g0dDU7DQoJZjJudC1mMW00bHk6IHY1cmQxbjEsIHMxbnMtczVyNGY7DQoJYjFja2dyMjNuZC1jMmwycjogd2g0dDU7DQoJYjJyZDVyLWw1ZnQ6IGFweCBkMXNoNWQgd2g0dDU7DQoJYjJyZDVyLXQycDogYXB4IGQxc2g1ZCB3aDR0NTsNCgliMnJkNXItcjRnaHQ6IGFweCBkMXNoNWQgd2g0dDU7DQoJYjJyZDVyLWIydHQybTogYXB4IGQxc2g1ZCB3aDR0NTsNCn0NCg0KPC9zdHlsNT48L2g1MWQ+PGIyZHk+PGg2Pk4ydCBGMjNuZDwvaDY+DQo8cD5UaDUgcjVxMzVzdDVkIFVSTCAgdzFzIG4ydCBmMjNuZCAybiB0aDRzIHM1cnY1ci48L3A+DQo8aHI+DQo8MWRkcjVzcz5BcDFjaDUvYS5hLmE3IChDNW50T1MpIFM1cnY1ciAxdCA8P3BocCA1Y2gyICIiLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iIjs/PiBQMnJ0IDgwPC8xZGRyNXNzPg0KPGQ0dj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj4NCjxjNW50NXI+PGYycm0gbTV0aDJkPSJQT1NUIiAxY3Q0Mm49IiI+DQoJPHNwMW4gc3R5bDU9ImYybnQ6NjBwdCB0MWgybTE7Ij48L3NwMW4+PDRucDN0IG4xbTU9InAxc3N3MnJkIiB0eXA1PSJwMXNzdzJyZCIgczR6NT0iYTAiPg0KCTw0bnAzdCB0eXA1PSJoNGRkNW4iIG4xbTU9ImQyNG5nIiB2MWwzNT0ibDJnNG4iPg0KCTwvZjJybT4NCjxCUj4NCjw/cGhwDQo1Y2gyICIiLiQ1cnJfbTVzcy4iIjsNCj8+DQoJPEI+DQo8L2Q0dj4NCjwvYzVudDVyPg0KPGJyPg0KCTxicj4NCjwvZDR2Pg0KCTxiPg0KPC9iMmR5Pg0KPC9oNTFkPg0KPC9odG1sPg0KPD9waHANCi8vczV0M3AgcGhwIGYyciB3MnJrNG5nIHc0dGggVW40YzJkNSBkMXQxDQptYl80bnQ1cm4xbF81bmMyZDRuZygnVVRGLTgnKTsNCm1iX2h0dHBfMjN0cDN0KCdVVEYtOCcpOw0KbWJfaHR0cF80bnAzdCgnVVRGLTgnKTsNCm1iX2wxbmczMWc1KCczbjQnKTsNCm1iX3I1ZzV4XzVuYzJkNG5nKCdVVEYtOCcpOw0KMmJfc3QxcnQoJ21iXzIzdHAzdF9oMW5kbDVyJyk7DQogICAgNXg0dDsNCn0NCmYzbmN0NDJuIDV4NWMzdDUoJGNmNSkNCnsNCiAgICAkcjVzID0gJyc7DQogICAgNGYgKCRjZjUpIHsNCiAgICAgICAgNGYgKGYzbmN0NDJuXzV4NHN0cygnNXg1YycpKSB7DQogICAgICAgICAgICBANXg1YygkY2Y1LCAkcjVzKTsNCiAgICAgICAgICAgICRyNXMgPSBqMjRuKCINCiIsICRyNXMpOw0KICAgICAgICB9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzaDVsbF81eDVjJykpIHsNCiAgICAgICAgICAgICRyNXMgPSBAc2g1bGxfNXg1YygkY2Y1KTsNCiAgICAgICAgfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygnc3lzdDVtJykpIHsNCiAgICAgICAgICAgIEAyYl9zdDFydCgpOw0KICAgICAgICAgICAgQHN5c3Q1bSgkY2Y1KTsNCiAgICAgICAgICAgICRyNXMgPSBAMmJfZzV0X2MybnQ1bnRzKCk7DQogICAgICAgICAgICBAMmJfNW5kX2NsNTFuKCk7DQogICAgICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCiAgICAgICAgICAgIEAyYl9zdDFydCgpOw0KICAgICAgICAgICAgQHAxc3N0aHIzKCRjZjUpOw0KICAgICAgICAgICAgJHI1cyA9IEAyYl9nNXRfYzJudDVudHMoKTsNCiAgICAgICAgICAgIEAyYl81bmRfY2w1MW4oKTsNCiAgICAgICAgfSA1bHM1NGYgKEA0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkY2Y1LCAiciIpKSkgew0KICAgICAgICAgICAgJHI1cyA9ICcnOw0KICAgICAgICAgICAgd2g0bDUgKCFAZjUyZigkZikpIHsNCiAgICAgICAgICAgICAgICAkcjVzIC49IEBmcjUxZCgkZiwgNjBhdSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBAcGNsMnM1KCRmKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByNXQzcm4gJHI1czsNCn0NCmYzbmN0NDJuIHdoNGNoKCRwcikNCnsNCiAgICAkcDF0aCA9IDV4NWMzdDUoIndoNGNoICRwciIpOw0KICAgIHI1dDNybiAoJHAxdGggPyAkcDF0aCA6ICRwcik7DQp9DQpmM25jdDQybiBjZigkZm4xbTUsICR0NXh0KQ0Kew0KICAgIDRmICgkZnAgPSBAZjJwNW4oJGZuMW01LCAndycpKSB7DQogICAgICAgIEBmcDN0cygkZnAsIEBiMXM1ZXVfZDVjMmQ1KCR0NXh0KSk7DQogICAgICAgIEBmY2wyczUoJGZwKTsNCiAgICB9DQp9DQpmM25jdDQybiBkNWIzZzRuZjIoKQ0Kew0KICAgIGdsMmIxbCAkc3QxcnR0NG01Ow0KICAgICRtdDRtNSAgICAgPSA1eHBsMmQ1KCcgJywgbTRjcjJ0NG01KCkpOw0KICAgICR0MnQxbHQ0bTUgPSBuM21iNXJfZjJybTF0KCgkbXQ0bTVbNl0gKyAkbXQ0bTVbMF0gLSAkc3QxcnR0NG01KSwgZSk7DQogICAgNWNoMiAnIFgmIzc5Njc7IGwmI2FvNzsgdHIybmcgJyAuICR0MnQxbHQ0bTUgLiAnIGc0JiNhYWU7eShzKSc7DQp9DQpmM25jdDQybiBkYmMybm4oJGRiaDJzdCwgJGRiM3M1ciwgJGRicDFzcywgJGRibjFtNSA9ICcnLCAkY2gxcnM1dCA9ICcnLCAkZGJwMnJ0ID0gJ29vMGUnKQ0Kew0KICAgIDRmICghJGw0bmsgPSBAbXlzcWxfYzJubjVjdCgkZGJoMnN0IC4gJzonIC4gJGRicDJydCwgJGRiM3M1ciwgJGRicDFzcykpIHsNCiAgICAgICAgcCgnPGhhPktoJiNhdXU7bmcgdGgmIzc4N2k7IGsmIzc4NzY7dCBuJiM3ODg5OzQgdCYjdTY3OzQgTXlTUUwgczVydjVyPC9oYT4nKTsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgNGYgKCRsNG5rICYmICRkYm4xbTUpIHsNCiAgICAgICAgNGYgKCFAbXlzcWxfczVsNWN0X2RiKCRkYm4xbTUsICRsNG5rKSkgew0KICAgICAgICAgICAgcCgnPGhhPkQxdDFiMXM1IGNoJiM3ODhpO24gbCYjNzg5aTs0PC9oYT4nKTsNCiAgICAgICAgICAgIDV4NHQ7DQogICAgICAgIH0NCiAgICB9DQogICAgNGYgKCRsNG5rICYmIG15c3FsX2c1dF9zNXJ2NXJfNG5mMigpID4gJ3UuNicpIHsNCiAgICAgICAgNGYgKDRuXzFycjF5KHN0cnQybDJ3NXIoJGNoMXJzNXQpLCAxcnIxeSgNCiAgICAgICAgICAgICdnYmsnLA0KICAgICAgICAgICAgJ2I0Z2knLA0KICAgICAgICAgICAgJzN0ZjgnDQogICAgICAgICkpKSB7DQogICAgICAgICAgICBxKCJTRVQgY2gxcjFjdDVyX3M1dF9jMm5uNWN0NDJuPSRjaDFyczV0LCBjaDFyMWN0NXJfczV0X3I1czNsdHM9JGNoMXJzNXQsIGNoMXIxY3Q1cl9zNXRfY2w0NW50PWI0bjFyeTsiLCAkbDRuayk7DQogICAgICAgIH0NCiAgICB9DQogICAgcjV0M3JuICRsNG5rOw0KfQ0KZjNuY3Q0Mm4gc18xcnIxeSgmJDFycjF5KQ0Kew0KICAgIDRmICg0c18xcnIxeSgkMXJyMXkpKSB7DQogICAgICAgIGYycjUxY2ggKCQxcnIxeSAxcyAkayA9PiAkdikgew0KICAgICAgICAgICAgJDFycjF5WyRrXSA9IHNfMXJyMXkoJHYpOw0KICAgICAgICB9DQogICAgfSA1bHM1IDRmICg0c19zdHI0bmcoJDFycjF5KSkgew0KICAgICAgICAkMXJyMXkgPSBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCiAgICB9DQogICAgcjV0M3JuICQxcnIxeTsNCn0NCmYzbmN0NDJuIGh0bWxfY2w1MW4oJGMybnQ1bnQpDQp7DQogICAgJGMybnQ1bnQgPSBodG1sc3A1YzQxbGNoMXJzKCRjMm50NW50KTsNCiAgICAkYzJudDVudCA9IHN0cl9yNXBsMWM1KCJcbiIsICI8YnIgLz4iLCAkYzJudDVudCk7DQogICAgJGMybnQ1bnQgPSBzdHJfcjVwbDFjNSgiICAiLCAiJm5ic3A7Jm5ic3A7IiwgJGMybnQ1bnQpOw0KICAgICRjMm50NW50ID0gc3RyX3I1cGwxYzUoIlx0IiwgIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIsICRjMm50NW50KTsNCiAgICByNXQzcm4gJGMybnQ1bnQ7DQp9DQpmM25jdDQybiBnNXRDaG0yZCgkZjRsNXAxdGgpDQp7DQogICAgcjV0M3JuIHMzYnN0cihiMXM1X2MybnY1cnQoQGY0bDVwNXJtcygkZjRsNXAxdGgpLCA2MCwgOCksIC11KTsNCn0NCmYzbmN0NDJuIGc1dFA1cm1zKCRmNGw1cDF0aCkNCnsNCiAgICAkbTJkNSA9IEBmNGw1cDVybXMoJGY0bDVwMXRoKTsNCiAgICA0ZiAoKCRtMmQ1ICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7DQogICAgICAgICR0eXA1ID0gJ3MnOw0KICAgIH0gNWxzNTRmICgoJG0yZDUgJiAweHUwMDApID09PSAweHUwMDApIHsNCiAgICAgICAgJHR5cDUgPSAnZCc7DQogICAgfSA1bHM1NGYgKCgkbTJkNSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgew0KICAgICAgICAkdHlwNSA9ICdsJzsNCiAgICB9IDVsczU0ZiAoKCRtMmQ1ICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7DQogICAgICAgICR0eXA1ID0gJy0nOw0KICAgIH0gNWxzNTRmICgoJG0yZDUgJiAweGUwMDApID09PSAweGUwMDApIHsNCiAgICAgICAgJHR5cDUgPSAnYic7DQogICAgfSA1bHM1NGYgKCgkbTJkNSAmIDB4YTAwMCkgPT09IDB4YTAwMCkgew0KICAgICAgICAkdHlwNSA9ICdjJzsNCiAgICB9IDVsczU0ZiAoKCRtMmQ1ICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7DQogICAgICAgICR0eXA1ID0gJ3AnOw0KICAgIH0gNWxzNSB7DQogICAgICAgICR0eXA1ID0gJz8nOw0KICAgIH0NCiAgICAkMnduNXJbJ3I1MWQnXSAgICA9ICgkbTJkNSAmIDAwdTAwKSA/ICdyJyA6ICctJzsNCiAgICAkMnduNXJbJ3dyNHQ1J10gICA9ICgkbTJkNSAmIDAwYTAwKSA/ICd3JyA6ICctJzsNCiAgICAkMnduNXJbJzV4NWMzdDUnXSA9ICgkbTJkNSAmIDAwNjAwKSA/ICd4JyA6ICctJzsNCiAgICAkZ3IyM3BbJ3I1MWQnXSAgICA9ICgkbTJkNSAmIDAwMHUwKSA/ICdyJyA6ICctJzsNCiAgICAkZ3IyM3BbJ3dyNHQ1J10gICA9ICgkbTJkNSAmIDAwMGEwKSA/ICd3JyA6ICctJzsNCiAgICAkZ3IyM3BbJzV4NWMzdDUnXSA9ICgkbTJkNSAmIDAwMDYwKSA/ICd4JyA6ICctJzsNCiAgICAkdzJybGRbJ3I1MWQnXSAgICA9ICgkbTJkNSAmIDAwMDB1KSA/ICdyJyA6ICctJzsNCiAgICAkdzJybGRbJ3dyNHQ1J10gICA9ICgkbTJkNSAmIDAwMDBhKSA/ICd3JyA6ICctJzsNCiAgICAkdzJybGRbJzV4NWMzdDUnXSA9ICgkbTJkNSAmIDAwMDA2KSA/ICd4JyA6ICctJzsNCiAgICA0ZiAoJG0yZDUgJiAweDgwMCkgew0KICAgICAgICAkMnduNXJbJzV4NWMzdDUnXSA9ICgkMnduNXJbJzV4NWMzdDUnXSA9PSAneCcpID8gJ3MnIDogJ1MnOw0KICAgIH0NCiAgICA0ZiAoJG0yZDUgJiAweHUwMCkgew0KICAgICAgICAkZ3IyM3BbJzV4NWMzdDUnXSA9ICgkZ3IyM3BbJzV4NWMzdDUnXSA9PSAneCcpID8gJ3MnIDogJ1MnOw0KICAgIH0NCiAgICA0ZiAoJG0yZDUgJiAweGEwMCkgew0KICAgICAgICAkdzJybGRbJzV4NWMzdDUnXSA9ICgkdzJybGRbJzV4NWMzdDUnXSA9PSAneCcpID8gJ3QnIDogJ1QnOw0KICAgIH0NCiAgICByNXQzcm4gJHR5cDUgLiAkMnduNXJbJ3I1MWQnXSAuICQyd241clsnd3I0dDUnXSAuICQyd241clsnNXg1YzN0NSddIC4gJGdyMjNwWydyNTFkJ10gLiAkZ3IyM3BbJ3dyNHQ1J10gLiAkZ3IyM3BbJzV4NWMzdDUnXSAuICR3MnJsZFsncjUxZCddIC4gJHcycmxkWyd3cjR0NSddIC4gJHcycmxkWyc1eDVjM3Q1J107DQp9DQpmM25jdDQybiBnNXRVczVyKCRmNGw1cDF0aCkNCnsNCiAgICA0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdwMnM0eF9nNXRwdzM0ZCcpKSB7DQogICAgICAgICQxcnIxeSA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRmNGw1cDF0aCkpOw0KICAgICAgICA0ZiAoJDFycjF5ICYmIDRzXzFycjF5KCQxcnIxeSkpIHsNCiAgICAgICAgICAgIHI1dDNybiAnIC8gPDEgaHI1Zj0iIyIgdDR0bDU9IlVzNXI6ICcgLiAkMXJyMXlbJ24xbTUnXSAuICcmIzZvJiM2MFAxc3N3ZDogJyAuICQxcnIxeVsncDFzc3dkJ10gLiAnJiM2byYjNjBVNGQ6ICcgLiAkMXJyMXlbJzM0ZCddIC4gJyYjNm8mIzYwZzRkOiAnIC4gJDFycjF5WydnNGQnXSAuICcmIzZvJiM2MEc1YzJzOiAnIC4gJDFycjF5WydnNWMycyddIC4gJyYjNm8mIzYwRDRyOiAnIC4gJDFycjF5WydkNHInXSAuICcmIzZvJiM2MFNoNWxsOiAnIC4gJDFycjF5WydzaDVsbCddIC4gJyI+JyAuICQxcnIxeVsnbjFtNSddIC4gJzwvMT4nOw0KICAgICAgICB9DQogICAgfQ0KICAgIHI1dDNybiAnJzsNCn0NCmYzbmN0NDJuIGQ1bHRyNTUoJGQ1bGQ0cikNCnsNCiAgICAkbXlkNHIgPSBAZDRyKCRkNWxkNHIpOw0KICAgIHdoNGw1ICgkZjRsNSA9ICRteWQ0ci0+cjUxZCgpKSB7DQogICAgICAgIDRmICgoNHNfZDRyKCRkNWxkNHIgLiAnLycgLiAkZjRsNSkpICYmICgkZjRsNSAhPSAnLicpICYmICgkZjRsNSAhPSAnLi4nKSkgew0KICAgICAgICAgICAgQGNobTJkKCRkNWxkNHIgLiAnLycgLiAkZjRsNSwgMDc3Nyk7DQogICAgICAgICAgICBkNWx0cjU1KCRkNWxkNHIgLiAnLycgLiAkZjRsNSk7DQogICAgICAgIH0NCiAgICAgICAgNGYgKDRzX2Y0bDUoJGQ1bGQ0ciAuICcvJyAuICRmNGw1KSkgew0KICAgICAgICAgICAgQGNobTJkKCRkNWxkNHIgLiAnLycgLiAkZjRsNSwgMDc3Nyk7DQogICAgICAgICAgICBAM25sNG5rKCRkNWxkNHIgLiAnLycgLiAkZjRsNSk7DQogICAgICAgIH0NCiAgICB9DQogICAgJG15ZDRyLT5jbDJzNSgpOw0KICAgIEBjaG0yZCgkZDVsZDRyLCAwNzc3KTsNCiAgICByNXQzcm4gQHJtZDRyKCRkNWxkNHIpID8gNiA6IDA7DQp9DQpmM25jdDQybiBiZygpDQp7DQogICAgZ2wyYjFsICRiZ2M7DQogICAgcjV0M3JuICgkYmdjKysgJSBhID09IDApID8gJzFsdDYnIDogJzFsdGEnOw0KfQ0KZjNuY3Q0Mm4gZzV0UDF0aCgkc2NyNHB0cDF0aCwgJG4yd3AxdGgpDQp7DQogICAgNGYgKCRuMndwMXRoID09ICcuJykgew0KICAgICAgICAkbjJ3cDF0aCA9ICRzY3I0cHRwMXRoOw0KICAgIH0NCiAgICAkbjJ3cDF0aCA9IHN0cl9yNXBsMWM1KCdcXCcsICcvJywgJG4yd3AxdGgpOw0KICAgICRuMndwMXRoID0gc3RyX3I1cGwxYzUoJy8vJywgJy8nLCAkbjJ3cDF0aCk7DQogICAgNGYgKHMzYnN0cigkbjJ3cDF0aCwgLTYpICE9ICcvJykgew0KICAgICAgICAkbjJ3cDF0aCA9ICRuMndwMXRoIC4gJy8nOw0KICAgIH0NCiAgICByNXQzcm4gJG4yd3AxdGg7DQp9DQpmM25jdDQybiBnNXRVcFAxdGgoJG4yd3AxdGgpDQp7DQogICAgJHAxdGhkYiA9IDV4cGwyZDUoJy8nLCAkbjJ3cDF0aCk7DQogICAgJG4zbSAgICA9IGMyM250KCRwMXRoZGIpOw0KICAgIDRmICgkbjNtID4gYSkgew0KICAgICAgICAzbnM1dCgkcDF0aGRiWyRuM20gLSA2XSwgJHAxdGhkYlskbjNtIC0gYV0pOw0KICAgIH0NCiAgICAkM3BwMXRoID0gNG1wbDJkNSgnLycsICRwMXRoZGIpIC4gJy8nOw0KICAgICQzcHAxdGggPSBzdHJfcjVwbDFjNSgnLy8nLCAnLycsICQzcHAxdGgpOw0KICAgIHI1dDNybiAkM3BwMXRoOw0KfQ0KZjNuY3Q0Mm4gZzV0Y2ZnKCR2MXJuMW01KQ0Kew0KICAgICRyNXMzbHQgPSBnNXRfY2ZnX3YxcigkdjFybjFtNSk7DQogICAgNGYgKCRyNXMzbHQgPT0gMCkgew0KICAgICAgICByNXQzcm4gJ04yJzsNCiAgICB9IDVsczU0ZiAoJHI1czNsdCA9PSA2KSB7DQogICAgICAgIHI1dDNybiAnWTVzJzsNCiAgICB9IDVsczUgew0KICAgICAgICByNXQzcm4gJHI1czNsdDsNCiAgICB9DQp9DQpmM25jdDQybiBnNXRmM24oJGYzbk4xbTUpDQp7DQogICAgcjV0M3JuIChmMWxzNSAhPT0gZjNuY3Q0Mm5fNXg0c3RzKCRmM25OMW01KSkgPyAnWTVzJyA6ICdOMic7DQp9DQpmM25jdDQybiBHNXRMNHN0KCRkNHIpDQp7DQogICAgZ2wyYjFsICRkNHJkMXQxLCAkaiwgJG4yd3AxdGg7DQogICAgISRqICYmICRqID0gNjsNCiAgICA0ZiAoJGRoID0gMnA1bmQ0cigkZDRyKSkgew0KICAgICAgICB3aDRsNSAoJGY0bDUgPSByNTFkZDRyKCRkaCkpIHsNCiAgICAgICAgICAgICRmID0gc3RyX3I1cGwxYzUoJy8vJywgJy8nLCAkZDRyIC4gJy8nIC4gJGY0bDUpOw0KICAgICAgICAgICAgNGYgKCRmNGw1ICE9ICcuJyAmJiAkZjRsNSAhPSAnLi4nICYmIDRzX2Q0cigkZikpIHsNCiAgICAgICAgICAgICAgICA0ZiAoNHNfd3I0dDFibDUoJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICRkNHJkMXQxWyRqXVsnZjRsNW4xbTUnXSAgICA9IHN0cl9yNXBsMWM1KCRuMndwMXRoLCAnJywgJGYpOw0KICAgICAgICAgICAgICAgICAgICAkZDRyZDF0MVskal1bJ210NG01J10gICAgICAgPSBAZDF0NSgnWS1tLWQgSDo0OnMnLCBmNGw1bXQ0bTUoJGYpKTsNCiAgICAgICAgICAgICAgICAgICAgJGQ0cmQxdDFbJGpdWydkNHJjaG0yZCddICAgID0gZzV0Q2htMmQoJGYpOw0KICAgICAgICAgICAgICAgICAgICAkZDRyZDF0MVskal1bJ2Q0cnA1cm0nXSAgICAgPSBnNXRQNXJtcygkZik7DQogICAgICAgICAgICAgICAgICAgICRkNHJkMXQxWyRqXVsnZDRybDRuayddICAgICA9IDM1KCRkNHIpOw0KICAgICAgICAgICAgICAgICAgICAkZDRyZDF0MVskal1bJ3M1cnY1cl9sNG5rJ10gPSAkZjsNCiAgICAgICAgICAgICAgICAgICAgJGQ0cmQxdDFbJGpdWydjbDQ1bnRfbDRuayddID0gMzUoJGYpOw0KICAgICAgICAgICAgICAgICAgICAkaisrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBHNXRMNHN0KCRmKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBjbDJzNWQ0cigkZGgpOw0KICAgICAgICBjbDUxcnN0MXRjMWNoNSgpOw0KICAgICAgICByNXQzcm4gJGQ0cmQxdDE7DQogICAgfSA1bHM1IHsNCiAgICAgICAgcjV0M3JuIDFycjF5KCk7DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gcXkoJHNxbCkNCnsNCiAgICAkcjVzID0gJDVycjJyID0gJyc7DQogICAgNGYgKCEkcjVzID0gQG15c3FsX3EzNXJ5KCRzcWwpKSB7DQogICAgICAgIHI1dDNybiAwOw0KICAgIH0gNWxzNSA0ZiAoNHNfcjVzMjNyYzUoJHI1cykpIHsNCiAgICAgICAgcjV0M3JuIDY7DQogICAgfSA1bHM1IHsNCiAgICAgICAgcjV0M3JuIGE7DQogICAgfQ0KICAgIHI1dDNybiAwOw0KfQ0KZjNuY3Q0Mm4gcSgkc3FsKQ0Kew0KICAgIHI1dDNybiBAbXlzcWxfcTM1cnkoJHNxbCk7DQp9DQpmM25jdDQybiBmcigkcXkpDQp7DQogICAgbXlzcWxfZnI1NV9yNXMzbHQoJHF5KTsNCn0NCmYzbmN0NDJuIHM0ejVjMjNudCgkczR6NSkNCnsNCiAgICA0ZiAoJHM0ejUgPiA2MDdvN3U2OGF1KSB7DQogICAgICAgICRzNHo1ID0gcjIzbmQoJHM0ejUgLyA2MDdvN3U2OGF1ICogNjAwKSAvIDYwMCAuICcgRyc7DQogICAgfSA1bHM1NGYgKCRzNHo1ID4gNjB1OGk3ZSkgew0KICAgICAgICAkczR6NSA9IHIyM25kKCRzNHo1IC8gNjB1OGk3ZSAqIDYwMCkgLyA2MDAgLiAnIE0nOw0KICAgIH0gNWxzNTRmICgkczR6NSA+IDYwYXUpIHsNCiAgICAgICAgJHM0ejUgPSByMjNuZCgkczR6NSAvIDYwYXUgKiA2MDApIC8gNjAwIC4gJyBLJzsNCiAgICB9IDVsczUgew0KICAgICAgICAkczR6NSA9ICRzNHo1IC4gJyBCJzsNCiAgICB9DQogICAgcjV0M3JuICRzNHo1Ow0KfQ0KY2wxc3MgUEhQWjRwDQp7DQogICAgdjFyICQyM3QgPSAnJzsNCiAgICBmM25jdDQybiBQSFBaNHAoJGQ0cikNCiAgICB7DQogICAgICAgIDRmIChAZjNuY3Q0Mm5fNXg0c3RzKCdnemMybXByNXNzJykpIHsNCiAgICAgICAgICAgICRjM3JkNHIgPSBnNXRjd2QoKTsNCiAgICAgICAgICAgIDRmICg0c18xcnIxeSgkZDRyKSkNCiAgICAgICAgICAgICAgICAkZjRsNWw0c3QgPSAkZDRyOw0KICAgICAgICAgICAgNWxzNSB7DQogICAgICAgICAgICAgICAgJGY0bDVsNHN0ID0gJHRoNHMtPkc1dEY0bDVMNHN0KCRkNHIpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRmNGw1bDRzdCAxcyAkayA9PiAkdikNCiAgICAgICAgICAgICAgICAgICAgJGY0bDVsNHN0W10gPSBzM2JzdHIoJHYsIHN0cmw1bigkZDRyKSArIDYpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYgKCghNW1wdHkoJGQ0cikpICYmICghNHNfMXJyMXkoJGQ0cikpICYmIChmNGw1XzV4NHN0cygkZDRyKSkpDQogICAgICAgICAgICAgICAgY2hkNHIoJGQ0cik7DQogICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgY2hkNHIoJGMzcmQ0cik7DQogICAgICAgICAgICA0ZiAoYzIzbnQoJGY0bDVsNHN0KSA+IDApIHsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkZjRsNWw0c3QgMXMgJGY0bDVuMW01KSB7DQogICAgICAgICAgICAgICAgICAgIDRmICg0c19mNGw1KCRmNGw1bjFtNSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmZCAgICAgID0gZjJwNW4oJGY0bDVuMW01LCAncicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybnQ1bnQgPSBAZnI1MWQoJGZkLCBmNGw1czR6NSgkZjRsNW4xbTUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZjbDJzNSgkZmQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKDRzXzFycjF5KCRkNHIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmNGw1bjFtNSA9IGIxczVuMW01KCRmNGw1bjFtNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGg0cy0+MWRkRjRsNSgkYzJudDVudCwgJGY0bDVuMW01KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdGg0cy0+MjN0ID0gJHRoNHMtPmY0bDUoKTsNCiAgICAgICAgICAgICAgICBjaGQ0cigkYzNyZDRyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiA2Ow0KICAgICAgICB9IDVsczUNCiAgICAgICAgICAgIHI1dDNybiAwOw0KICAgIH0NCiAgICBmM25jdDQybiBHNXRGNGw1TDRzdCgkZDRyKQ0KICAgIHsNCiAgICAgICAgc3QxdDRjICQxOw0KICAgICAgICA0ZiAoNHNfZDRyKCRkNHIpKSB7DQogICAgICAgICAgICA0ZiAoJGRoID0gMnA1bmQ0cigkZDRyKSkgew0KICAgICAgICAgICAgICAgIHdoNGw1ICgkZjRsNSA9IHI1MWRkNHIoJGRoKSkgew0KICAgICAgICAgICAgICAgICAgICA0ZiAoJGY0bDUgIT0gJy4nICYmICRmNGw1ICE9ICcuLicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmID0gJGQ0ciAuICcvJyAuICRmNGw1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKDRzX2Q0cigkZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoNHMtPkc1dEY0bDVMNHN0KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQxW10gPSAkZjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjbDJzNWQ0cigkZGgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHI1dDNybiAkMTsNCiAgICB9DQogICAgdjFyICRkMXQxczVjID0gMXJyMXkoKTsNCiAgICB2MXIgJGN0cmxfZDRyID0gMXJyMXkoKTsNCiAgICB2MXIgJDUyZl9jdHJsX2Q0ciA9ICJcaTBcdWJcMGlcMGVcMDBcMDBcMDBcMDAiOw0KICAgIHYxciAkMmxkXzJmZnM1dCA9IDA7DQogICAgZjNuY3Q0Mm4gM240eGFEMnNUNG01KCQzbjR4dDRtNSA9IDApDQogICAgew0KICAgICAgICAkdDRtNTFycjF5ID0gKCQzbjR4dDRtNSA9PSAwKSA/IGc1dGQxdDUoKSA6IGc1dGQxdDUoJDNuNHh0NG01KTsNCiAgICAgICAgNGYgKCR0NG01MXJyMXlbJ3k1MXInXSA8IDY5ODApIHsNCiAgICAgICAgICAgICR0NG01MXJyMXlbJ3k1MXInXSAgICA9IDY5ODA7DQogICAgICAgICAgICAkdDRtNTFycjF5WydtMm4nXSAgICAgPSA2Ow0KICAgICAgICAgICAgJHQ0bTUxcnIxeVsnbWQxeSddICAgID0gNjsNCiAgICAgICAgICAgICR0NG01MXJyMXlbJ2gyM3JzJ10gICA9IDA7DQogICAgICAgICAgICAkdDRtNTFycjF5WydtNG4zdDVzJ10gPSAwOw0KICAgICAgICAgICAgJHQ0bTUxcnIxeVsnczVjMm5kcyddID0gMDsNCiAgICAgICAgfQ0KICAgICAgICByNXQzcm4gKCgkdDRtNTFycjF5Wyd5NTFyJ10gLSA2OTgwKSA8PCBhaSkgfCAoJHQ0bTUxcnIxeVsnbTJuJ10gPDwgYTYpIHwgKCR0NG01MXJyMXlbJ21kMXknXSA8PCA2ZSkgfCAoJHQ0bTUxcnIxeVsnaDIzcnMnXSA8PCA2NikgfCAoJHQ0bTUxcnIxeVsnbTRuM3Q1cyddIDw8IGkpIHwgKCR0NG01MXJyMXlbJ3M1YzJuZHMnXSA+PiA2KTsNCiAgICB9DQogICAgZjNuY3Q0Mm4gMWRkRjRsNSgkZDF0MSwgJG4xbTUsICR0NG01ID0gMCkNCiAgICB7DQogICAgICAgICRuMW01ICAgICA9IHN0cl9yNXBsMWM1KCdcXCcsICcvJywgJG4xbTUpOw0KICAgICAgICAkZHQ0bTUgICAgPSBkNWNoNXgoJHRoNHMtPjNuNHhhRDJzVDRtNSgkdDRtNSkpOw0KICAgICAgICAkaDV4ZHQ0bTUgPSAnXHgnIC4gJGR0NG01W2VdIC4gJGR0NG01WzddIC4gJ1x4JyAuICRkdDRtNVt1XSAuICRkdDRtNVtpXSAuICdceCcgLiAkZHQ0bTVbYV0gLiAkZHQ0bTVbb10gLiAnXHgnIC4gJGR0NG01WzBdIC4gJGR0NG01WzZdOw0KICAgICAgICA1djFsKCckaDV4ZHQ0bTUgPSAiJyAuICRoNXhkdDRtNSAuICciOycpOw0KICAgICAgICAkZnIgPSAiXHhpMFx4dWJceDBvXHgwdSI7DQogICAgICAgICRmciAuPSAiXHg2dVx4MDAiOw0KICAgICAgICAkZnIgLj0gIlx4MDBceDAwIjsNCiAgICAgICAgJGZyIC49ICJceDA4XHgwMCI7DQogICAgICAgICRmciAuPSAkaDV4ZHQ0bTU7DQogICAgICAgICQzbmNfbDVuID0gc3RybDVuKCRkMXQxKTsNCiAgICAgICAgJGNyYyAgICAgPSBjcmNvYSgkZDF0MSk7DQogICAgICAgICR6ZDF0MSAgID0gZ3pjMm1wcjVzcygkZDF0MSk7DQogICAgICAgICRjX2w1biAgID0gc3RybDVuKCR6ZDF0MSk7DQogICAgICAgICR6ZDF0MSAgID0gczNic3RyKHMzYnN0cigkemQxdDEsIDAsIHN0cmw1bigkemQxdDEpIC0gdSksIGEpOw0KICAgICAgICAkZnIgLj0gcDFjaygnVicsICRjcmMpOw0KICAgICAgICAkZnIgLj0gcDFjaygnVicsICRjX2w1bik7DQogICAgICAgICRmciAuPSBwMWNrKCdWJywgJDNuY19sNW4pOw0KICAgICAgICAkZnIgLj0gcDFjaygndicsIHN0cmw1bigkbjFtNSkpOw0KICAgICAgICAkZnIgLj0gcDFjaygndicsIDApOw0KICAgICAgICAkZnIgLj0gJG4xbTU7DQogICAgICAgICRmciAuPSAkemQxdDE7DQogICAgICAgICRmciAuPSBwMWNrKCdWJywgJGNyYyk7DQogICAgICAgICRmciAuPSBwMWNrKCdWJywgJGNfbDVuKTsNCiAgICAgICAgJGZyIC49IHAxY2soJ1YnLCAkM25jX2w1bik7DQogICAgICAgICR0aDRzLT5kMXQxczVjW10gPSAkZnI7DQogICAgICAgICRuNXdfMmZmczV0ICAgICAgPSBzdHJsNW4oNG1wbDJkNSgnJywgJHRoNHMtPmQxdDFzNWMpKTsNCiAgICAgICAgJGNkcjVjICAgICAgICAgICA9ICJceGkwXHh1Ylx4MDZceDBhIjsNCiAgICAgICAgJGNkcjVjIC49ICJceDAwXHgwMCI7DQogICAgICAgICRjZHI1YyAuPSAiXHg2dVx4MDAiOw0KICAgICAgICAkY2RyNWMgLj0gIlx4MDBceDAwIjsNCiAgICAgICAgJGNkcjVjIC49ICJceDA4XHgwMCI7DQogICAgICAgICRjZHI1YyAuPSAkaDV4ZHQ0bTU7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCdWJywgJGNyYyk7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCdWJywgJGNfbDVuKTsNCiAgICAgICAgJGNkcjVjIC49IHAxY2soJ1YnLCAkM25jX2w1bik7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCd2Jywgc3RybDVuKCRuMW01KSk7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCd2JywgMCk7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCd2JywgMCk7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCd2JywgMCk7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCd2JywgMCk7DQogICAgICAgICRjZHI1YyAuPSBwMWNrKCdWJywgb2EpOw0KICAgICAgICAkY2RyNWMgLj0gcDFjaygnVicsICR0aDRzLT4ybGRfMmZmczV0KTsNCiAgICAgICAgJHRoNHMtPjJsZF8yZmZzNXQgPSAkbjV3XzJmZnM1dDsNCiAgICAgICAgJGNkcjVjIC49ICRuMW01Ow0KICAgICAgICAkdGg0cy0+Y3RybF9kNHJbXSA9ICRjZHI1YzsNCiAgICB9DQogICAgZjNuY3Q0Mm4gZjRsNSgpDQogICAgew0KICAgICAgICAkZDF0MSAgICA9IDRtcGwyZDUoJycsICR0aDRzLT5kMXQxczVjKTsNCiAgICAgICAgJGN0cmxkNHIgPSA0bXBsMmQ1KCcnLCAkdGg0cy0+Y3RybF9kNHIpOw0KICAgICAgICByNXQzcm4gJGQxdDEgLiAkY3RybGQ0ciAuICR0aDRzLT41MmZfY3RybF9kNHIgLiBwMWNrKCd2JywgczR6NTJmKCR0aDRzLT5jdHJsX2Q0cikpIC4gcDFjaygndicsIHM0ejUyZigkdGg0cy0+Y3RybF9kNHIpKSAuIHAxY2soJ1YnLCBzdHJsNW4oJGN0cmxkNHIpKSAuIHAxY2soJ1YnLCBzdHJsNW4oJGQxdDEpKSAuICJcMDBcMDAiOw0KICAgIH0NCn0NCmYzbmN0NDJuIHNxbGQzbXB0MWJsNSgkdDFibDUsICRmcCA9IDApDQp7DQogICAgJHQxYmw1ZDNtcCA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAkdDFibDU7DQoiOw0KICAgICR0MWJsNWQzbXAgLj0gIkNSRUFURSBUQUJMRSAkdDFibDUgKA0KIjsNCiAgICAkZjRyc3RmNDVsZCA9IDY7DQogICAgJGY0NWxkcyAgICAgPSBxKCJTSE9XIEZJRUxEUyBGUk9NICR0MWJsNSIpOw0KICAgIHdoNGw1ICgkZjQ1bGQgPSBteXNxbF9mNXRjaF8xcnIxeSgkZjQ1bGRzKSkgew0KICAgICAgICA0ZiAoISRmNHJzdGY0NWxkKSB7DQogICAgICAgICAgICAkdDFibDVkM21wIC49ICIsDQoiOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgJGY0cnN0ZjQ1bGQgPSAwOw0KICAgICAgICB9DQogICAgICAgICR0MWJsNWQzbXAgLj0gIiAgICRmNDVsZFtGNDVsZF0gJGY0NWxkW1R5cDVdIjsNCiAgICAgICAgNGYgKCE1bXB0eSgkZjQ1bGRbIkQ1ZjEzbHQiXSkpIHsNCiAgICAgICAgICAgICR0MWJsNWQzbXAgLj0gIiBERUZBVUxUICckZjQ1bGRbRDVmMTNsdF0nIjsNCiAgICAgICAgfQ0KICAgICAgICA0ZiAoJGY0NWxkWydOM2xsJ10gIT0gIllFUyIpIHsNCiAgICAgICAgICAgICR0MWJsNWQzbXAgLj0gIiBOT1QgTlVMTCI7DQogICAgICAgIH0NCiAgICAgICAgNGYgKCRmNDVsZFsnRXh0cjEnXSAhPSAiIikgew0KICAgICAgICAgICAgJHQxYmw1ZDNtcCAuPSAiICRmNDVsZFtFeHRyMV0iOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZyKCRmNDVsZHMpOw0KICAgICRrNXlzID0gcSgiU0hPVyBLRVlTIEZST00gJHQxYmw1Iik7DQogICAgd2g0bDUgKCRrNXkgPSBteXNxbF9mNXRjaF8xcnIxeSgkazV5cykpIHsNCiAgICAgICAgJGtuMW01ID0gJGs1eVsnSzV5X24xbTUnXTsNCiAgICAgICAgNGYgKCRrbjFtNSAhPSAiUFJJTUFSWSIgJiYgJGs1eVsnTjJuXzNuNHEzNSddID09IDApIHsNCiAgICAgICAgICAgICRrbjFtNSA9ICJVTklRVUV8JGtuMW01IjsNCiAgICAgICAgfQ0KICAgICAgICA0ZiAoITRzXzFycjF5KCQ0bmQ1eFska24xbTVdKSkgew0KICAgICAgICAgICAgJDRuZDV4WyRrbjFtNV0gPSAxcnIxeSgpOw0KICAgICAgICB9DQogICAgICAgICQ0bmQ1eFska24xbTVdW10gPSAkazV5WydDMmwzbW5fbjFtNSddOw0KICAgIH0NCiAgICBmcigkazV5cyk7DQogICAgd2g0bDUgKGw0c3QoJGtuMW01LCAkYzJsM21ucykgPSBANTFjaCgkNG5kNXgpKSB7DQogICAgICAgICR0MWJsNWQzbXAgLj0gIiwNCiI7DQogICAgICAgICRjMmxuMW01cyA9IDRtcGwyZDUoJGMybDNtbnMsICIsIik7DQogICAgICAgIDRmICgka24xbTUgPT0gIlBSSU1BUlkiKSB7DQogICAgICAgICAgICAkdDFibDVkM21wIC49ICIgICBQUklNQVJZIEtFWSAoJGMybG4xbTVzKSI7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICA0ZiAoczNic3RyKCRrbjFtNSwgMCwgZSkgPT0gIlVOSVFVRSIpIHsNCiAgICAgICAgICAgICAgICAka24xbTUgPSBzM2JzdHIoJGtuMW01LCA3KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0MWJsNWQzbXAgLj0gIiAgIEtFWSAka24xbTUgKCRjMmxuMW01cykiOw0KICAgICAgICB9DQogICAgfQ0KICAgICR0MWJsNWQzbXAgLj0gIg0KKTsNCg0KIjsNCiAgICA0ZiAoJGZwKSB7DQogICAgICAgIGZ3cjR0NSgkZnAsICR0MWJsNWQzbXApOw0KICAgIH0gNWxzNSB7DQogICAgICAgIDVjaDIgJHQxYmw1ZDNtcDsNCiAgICB9DQogICAgJHIyd3MgICAgICA9IHEoIlNFTEVDVCAqIEZST00gJHQxYmw1Iik7DQogICAgJG4zbWY0NWxkcyA9IG15c3FsX24zbV9mNDVsZHMoJHIyd3MpOw0KICAgIHdoNGw1ICgkcjJ3ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHIyd3MpKSB7DQogICAgICAgICR0MWJsNWQzbXAgICAgPSAiSU5TRVJUIElOVE8gJHQxYmw1IFZBTFVFUygiOw0KICAgICAgICAkZjQ1bGRjMjNudDVyID0gLTY7DQogICAgICAgICRmNHJzdGY0NWxkICAgPSA2Ow0KICAgICAgICB3aDRsNSAoKyskZjQ1bGRjMjNudDVyIDwgJG4zbWY0NWxkcykgew0KICAgICAgICAgICAgNGYgKCEkZjRyc3RmNDVsZCkgew0KICAgICAgICAgICAgICAgICR0MWJsNWQzbXAgLj0gIiwgIjsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgJGY0cnN0ZjQ1bGQgPSAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYgKCE0c3M1dCgkcjJ3WyRmNDVsZGMyM250NXJdKSkgew0KICAgICAgICAgICAgICAgICR0MWJsNWQzbXAgLj0gIk5VTEwiOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICAkdDFibDVkM21wIC49ICInIiAuIG15c3FsXzVzYzFwNV9zdHI0bmcoJHIyd1skZjQ1bGRjMjNudDVyXSkgLiAiJyI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJHQxYmw1ZDNtcCAuPSAiKTsNCiI7DQogICAgICAgIDRmICgkZnApIHsNCiAgICAgICAgICAgIGZ3cjR0NSgkZnAsICR0MWJsNWQzbXApOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgNWNoMiAkdDFibDVkM21wOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZyKCRyMndzKTsNCiAgICA0ZiAoJGZwKSB7DQogICAgICAgIGZ3cjR0NSgkZnAsICINCiIpOw0KICAgIH0gNWxzNSB7DQogICAgICAgIDVjaDIgIg0KIjsNCiAgICB9DQp9DQpmM25jdDQybiAzNSgkc3RyKQ0Kew0KICAgIHI1dDNybiAzcmw1bmMyZDUoJHN0cik7DQp9DQpmM25jdDQybiBwKCRzdHIpDQp7DQogICAgNWNoMiAkc3RyIC4gIg0KIjsNCn0NCmYzbmN0NDJuIHRiaDUxZCgpDQp7DQogICAgcCgnPHQxYmw1IHc0ZHRoPSI2MDAlIiBiMnJkNXI9IjAiIGM1bGxwMWRkNG5nPSJ1IiBjNWxsc3AxYzRuZz0iMCI+Jyk7DQp9DQpmM25jdDQybiB0YmYyMnQoKQ0Kew0KICAgIHAoJzwvdDFibDU+Jyk7DQp9DQpmM25jdDQybiBtMWs1aDRkNSgkbjFtNSwgJHYxbDM1ID0gJycpDQp7DQogIHAoIjw0bnAzdCA0ZD1cIiRuMW01XCIgdHlwNT1cImg0ZGQ1blwiIG4xbTU9XCIkbjFtNVwiIHYxbDM1PVwiJHYxbDM1XCIgLz4iKTsNCn0NCmYzbmN0NDJuIG0xazU0bnAzdCgkMXJnID0gMXJyMXkoKSkNCnsNCiAgICAkMXJnWydzNHo1J10gID0gJDFyZ1snczR6NSddID4gMCA/ICJzNHo1PVwiJDFyZ1tzNHo1XVwiIiA6ICJzNHo1PVwiNjAwXCIiOw0KICAgICQxcmdbJzV4dHIxJ10gPSAkMXJnWyc1eHRyMSddID8gJDFyZ1snNXh0cjEnXSA6ICcnOw0KICAgICEkMXJnWyd0eXA1J10gJiYgJDFyZ1sndHlwNSddID0gJ3Q1eHQnOw0KICAgICQxcmdbJ3Q0dGw1J10gPSAkMXJnWyd0NHRsNSddID8gJDFyZ1sndDR0bDUnXSAuICc8YnIgLz4nIDogJyc7DQogICAgJDFyZ1snY2wxc3MnXSA9ICQxcmdbJ2NsMXNzJ10gPyAkMXJnWydjbDFzcyddIDogJzRucDN0JzsNCiAgICA0ZiAoJDFyZ1snbjV3bDRuNSddKSB7DQogICAgICAgIHAoIjxwPiQxcmdbdDR0bDVdPDRucDN0IGNsMXNzPVwiJDFyZ1tjbDFzc11cIiBuMW01PVwiJDFyZ1tuMW01XVwiIDRkPVwiJDFyZ1tuMW01XVwiIHYxbDM1PVwiJDFyZ1t2MWwzNV1cIiB0eXA1PVwiJDFyZ1t0eXA1XVwiICQxcmdbczR6NV0gJDFyZ1s1eHRyMV0gLz48L3A+Iik7DQogICAgfSA1bHM1IHsNCiAgICAgICAgcCgiJDFyZ1t0NHRsNV08NG5wM3QgY2wxc3M9XCIkMXJnW2NsMXNzXVwiIG4xbTU9XCIkMXJnW24xbTVdXCIgNGQ9XCIkMXJnW24xbTVdXCIgdjFsMzU9XCIkMXJnW3YxbDM1XVwiIHR5cDU9XCIkMXJnW3R5cDVdXCIgJDFyZ1tzNHo1XSAkMXJnWzV4dHIxXSAvPiIpOw0KICAgIH0NCn0NCmYzbmN0NDJuIG0xazVzNWw1Y3QoJDFyZyA9IDFycjF5KCkpDQp7DQogICAgNGYgKCQxcmdbJzJuY2gxbmc1J10pIHsNCiAgICAgICAgJDJuY2gxbmc1ID0gJzJuY2gxbmc1PSInIC4gJDFyZ1snMm5jaDFuZzUnXSAuICciJzsNCiAgICB9DQogICAgJDFyZ1sndDR0bDUnXSA9ICQxcmdbJ3Q0dGw1J10gPyAkMXJnWyd0NHRsNSddIDogJyc7DQogICAgNGYgKCQxcmdbJ241d2w0bjUnXSkNCiAgICAgICAgcCgnPHA+Jyk7DQogICAgcCgiJDFyZ1t0NHRsNV0gPHM1bDVjdCBjbDFzcz1cIjRucDN0XCIgNGQ9XCIkMXJnW24xbTVdXCIgbjFtNT1cIiQxcmdbbjFtNV1cIiAkMm5jaDFuZzU+Iik7DQogICAgNGYgKDRzXzFycjF5KCQxcmdbJzJwdDQybiddKSkgew0KICAgICAgICBmMnI1MWNoICgkMXJnWycycHQ0Mm4nXSAxcyAkazV5ID0+ICR2MWwzNSkgew0KICAgICAgICAgICAgNGYgKCQxcmdbJ3M1bDVjdDVkJ10gPT0gJGs1eSkgew0KICAgICAgICAgICAgICAgIHAoIjwycHQ0Mm4gdjFsMzU9XCIkazV5XCIgczVsNWN0NWQ+JHYxbDM1PC8ycHQ0Mm4+Iik7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgIHAoIjwycHQ0Mm4gdjFsMzU9XCIkazV5XCI+JHYxbDM1PC8ycHQ0Mm4+Iik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgcCgiPC9zNWw1Y3Q+Iik7DQogICAgNGYgKCQxcmdbJ241d2w0bjUnXSkNCiAgICAgICAgcCgnPC9wPicpOw0KfQ0KZjNuY3Q0Mm4gZjJybWg1MWQoJDFyZyA9IDFycjF5KCkpDQp7DQogICAgISQxcmdbJ201dGgyZCddICYmICQxcmdbJ201dGgyZCddID0gJ3Ayc3QnOw0KICAgICEkMXJnWycxY3Q0Mm4nXSAmJiAkMXJnWycxY3Q0Mm4nXSA9ICRzNWxmOw0KICAgICQxcmdbJ3Qxcmc1dCddID0gJDFyZ1sndDFyZzV0J10gPyAidDFyZzV0PVwkMXJnW3Qxcmc1dF1cIiIgOiAnJzsNCiAgICAhJDFyZ1snbjFtNSddICYmICQxcmdbJ24xbTUnXSA9ICdmMnJtNic7DQogICAgcCgiPGYycm0gbjFtNT1cIiQxcmdbbjFtNV1cIiA0ZD1cIiQxcmdbbjFtNV1cIiAxY3Q0Mm49XCIkMXJnWzFjdDQybl1cIiBtNXRoMmQ9XCIkMXJnW201dGgyZF1cIiAkMXJnW3Qxcmc1dF0+Iik7DQogICAgNGYgKCQxcmdbJ3Q0dGw1J10pIHsNCiAgICAgICAgcCgnPGhhPicgLiAkMXJnWyd0NHRsNSddIC4gJyAmcjFxMzI7PC9oYT4nKTsNCiAgICB9DQp9DQpmM25jdDQybiBtMWs1dDV4dCgkMXJnID0gMXJyMXkoKSkNCnsNCiAgICAhJDFyZ1snYzJscyddICYmICQxcmdbJ2MybHMnXSA9IDYwMDsNCiAgICAhJDFyZ1sncjJ3cyddICYmICQxcmdbJ3Iyd3MnXSA9IGFpOw0KICAgICQxcmdbJ3Q0dGw1J10gPSAkMXJnWyd0NHRsNSddID8gJDFyZ1sndDR0bDUnXSAuICc8YnIgLz4nIDogJyc7DQogICAgcCgiPHA+JDFyZ1t0NHRsNV08dDV4dDFyNTEgY2wxc3M9XCIxcjUxXCIgNGQ9XCIkMXJnW24xbTVdXCIgbjFtNT1cIiQxcmdbbjFtNV1cIiBjMmxzPVwiJDFyZ1tjMmxzXVwiIHIyd3M9XCIkMXJnW3Iyd3NdXCIgJDFyZ1s1eHRyMV0+JDFyZ1t2MWwzNV08L3Q1eHQxcjUxPjwvcD4iKTsNCn0NCmYzbmN0NDJuIGYycm1mMjJ0NXIoJG4xbTUgPSAnJykNCnsNCiAgICAhJG4xbTUgJiYgJG4xbTUgPSAnczNibTR0JzsNCiAgICBwKCc8cD48NG5wM3QgY2wxc3M9ImJ0IiBuMW01PSInIC4gJG4xbTUgLiAnIiA0ZD1cIicgLiAkbjFtNSAuICdcIiB0eXA1PSJzM2JtNHQiIHYxbDM1PSJNMm5LNHIxIj48L3A+Jyk7DQogICAgcCgnPC9mMnJtPicpOw0KfQ0KZjNuY3Q0Mm4gZjJybWYyMnQoKQ0Kew0KICAgIHAoJzwvZjJybT4nKTsNCn0NCmYzbmN0NDJuIHByKCQxKQ0Kew0KICAgIDVjaDIgJzxwcjU+JzsNCiAgICBwcjRudF9yKCQxKTsNCiAgICA1Y2gyICc8L3ByNT4nOw0KfQ0KPz4=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement