<?php

###############################################################################
# PHP Suchscript - Version vom 03.11.2011                                     #
# copyright webdesign weisshart                                               #
# http://webdesign.weisshart.de                                               #
# dieser copyright Hinweis darf nicht entfernt werden!                        #
#                                                                             #
# Sie können dieses Script kostenlos einsetzen,                               #
# solange Sie die Links auf webdesign.weisshart.de unverändert intakt lassen. #
# Wenn Sie die Links auf webdesign.weisshart.de entfernen wollen,             #
# können Sie eine Lizenz erwerben bei                                         #
# http://webdesign.weisshart.de/suchen-lizenz.php                             #
###############################################################################
include("search_config.php");

$NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ="Ly8gTmV0dCwgZGFzcyBTaWUgc2ljaCBmdWVyIG1laW5lbiBzb3VyY2Vjb2RlIGludGVyZXNzaWVyZW4uIERlciBMaW5rIGF1ZiB3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIGRhcmYgbnVyIG5hY2ggRXJ3ZXJiIGVpbmVyIExpemVueiBlbnRmZXJudCB3ZXJkZW4hDS8vIEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsICcxJyk7DQ1zZXRsb2NhbGUgKExDX0NUWVBFLCAnZGVfREUnKTsgLy8gc3RydG9sb3dlciBhdWNoIG1pdCBVbWxhdXRlbg0NaWYgKCFAaW5pX2dldCgnc2FmZV9tb2RlJykpIEBzZXRfdGltZV9saW1pdCg0NSk7DSRtdGltZSA9IG1pY3JvdGltZSgpOyAkbXRpbWUgPSBleHBsb2RlKCAnICcsICRtdGltZSk7ICRtdGltZSA9ICRtdGltZVsxXSArICRtdGltZVswXTsNJHN1Y2hfc3RhcnQgPSAkbXRpbWU7DQ0kdmVyc2lvbj0gJzwhLS0gVmVyc2lvbiAwMy4xMS4xMSAtLT4nOw0NDWlmIChwaHB2ZXJzaW9uKCkgPCAnNC4zLjAnKSB7DQllY2hvICI8cD5EaWVzZXMgU2NyaXB0IGVyZm9yZGVydCBQSFAgVmVyc2lvbiA0LjMuMCBvZGVyIGgmb3VtbDtoZXIhPGJyIC8+IjsNCWVjaG8gImF1ZiBJaHJlbSBTZXJ2ZXIgbCZhdW1sO3VmdCBhYmVyIFBIUCBWZXJzaW9uICIucGhwdmVyc2lvbigpLiIuPC9wPiI7DQlleGl0Ow19DQ0kbWV0aG9kID0gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107DQ0kYXJyYXkgPSAiIjsNJGF1c2dhYmUgPSIiOw0kZm91bmQgPSAwOw0kZSA9ICIiOw0kc29ydGhpbndlaXMgPSAiIjsNJGxpbmsgPSAiIjsNJGR1cmNoc3VjaHQgPSAwOw0NaWYgKCFpc3NldCgkcGx1cmFsKSl7DQkkcGx1cmFsID0gIm4iOw19DQ1pZiAoIWlzc2V0KCRwdW5jdCkpew0JJHB1bmN0ID0gIm5vIjsNfQ0NaWYgKCFpc3NldCgkbWF4bXNnKSl7DQkkbWF4bXNnID0gMTAwOw19DQ1pZiAoIWlzc2V0KCRkYXRlZm9ybSkpew0JJGRhdGVmb3JtID0gImRlIjsNfQ0NaWYgKCFpc3NldCgkc3VjaGRhdWVyKSl7DQkkc3VjaGRhdWVyID0gIlNla3VuZGVuIjsNfQ0NaWYgKCFpc3NldCgkYmVzY2hyZWliKSl7DQkkYmVzY2hyZWliID0gIkJlc2NocmVpYnVuZzogIjsNfQ0NaWYgKCFpc3NldCgkdHJlZmYpKXsNCSR0cmVmZiA9ICJUcmVmZmVyIjsNfQ0NaWYgKCFpc3NldCgkZmlsZWRhdGUpKXsNCSRmaWxlZGF0ZSA9ICJ6dWxldHp0IGdlJmF1bWw7bmRlcnQgYW0gIjsNfQ0NaWYgKCFpc3NldCgkbm9yZXN1bHQpKXsNCSRub3Jlc3VsdCA9ICI8cD48YnIgLz5FcyB3dXJkZW4gbGVpZGVyIGtlaW5lIGV4YWt0ZW4gJlV1bWw7YmVyZWluc3RpbW11bmdlbiBtaXQgZGVtIGVpbmdlZ2ViZW5lbiBTdWNoYmVncmlmZiBnZWZ1bmRlbi48YnIgLz5WaWVsbGVpY2h0IHdvbGxlbiBTaWUgZXMgbWl0IGVpbmVtIGFsbGdlbWVpbmVyZW4gU3VjaGJlZ3JpZmYgdmVyc3VjaGVuLjwvcD4iOw19DQ1pZiAoIWlzc2V0KCR2b3JzY2hsYWcpKXsNCSR2b3JzY2hsYWcgPSAiT2RlciBTaWUgdmVyc3VjaGVuIGVzIGVpbmZhY2ggbWFsIG1pdCI7DX0NDWlmICghaXNzZXQoJG1pbmxlbmd0aCkpew0JJG1pbmxlbmd0aCA9ICI8cD48YnIgLz5HZWJlbiBTaWUgYml0dGUgZWluZW4gU3VjaGJlZ3JpZmYgdm9uIG1pbmRlc3RlbnMmbmJzcDsiLiRsZW5ndGguIiZuYnNwO0J1Y2hzdGFiZW4gTCZhdW1sO25nZSBlaW4uPC9wPiI7DX0NDQ1pZiAoIWlzc2V0KCRleGNsdWRlX3N0cmluZ3MpKXsNICAgJGV4Y2x1ZGVfc3RyaW5ncyA9IGFycmF5KCk7DX0NDWlmICghaXNzZXQoJGlmcmFtZSkpew0gICAkaWZyYW1lPWZhbHNlOw19DQ1pZiAoIWlzc2V0KCR0YXJnZXR3YWhsKSl7DSAgICR0YXJnZXR3YWhsPWZhbHNlOw19DQ0vLyB2ZXJib3RlbmUgWmVpY2hlbg0kZXhjbHVkZV9zdHJpbmdzMiA9IGFycmF5KA0gICAnXFwnLCAvLyBkYXMgXCBkaWVudCB6dW0gTWFza2llcmVuIHZvbiByZXNlcnZpZXJ0ZW4gWmVpY2hlbiANCSJcJyIsDSAgICcqJywNICAgJysnLA0gICAnLycNKTsNDSRleGNsdWRlX3N0cmluZ3NfbWVyZ2UgPSBhcnJheV9tZXJnZSgkZXhjbHVkZV9zdHJpbmdzLCAkZXhjbHVkZV9zdHJpbmdzMik7DQ0NaWYgKGlzc2V0KCRzdWNodGlwMCkpew0JJHNlYXJjaHRpcDAgPSAiXG4kc3VjaHRpcDBcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDAgPSAiXG48aDM+U3VjaHRpcHBzOjwvaDM+XG4iOw19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAxKSl7DQkkc2VhcmNodGlwMSA9ICI8dWw+XG4kc3VjaHRpcDFcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDEgPSAiPHVsPlxuPGxpPkRpZSBFaW5nYWJlIHZvbiBQbGF0emhhbHRlcnplaWNoZW4gKCopIGlzdCBuaWNodCBlcmZvcmRlcmxpY2guPC9saT5cbiI7DX0NDWlmIChpc3NldCgkc3VjaHRpcDIpKXsNCSRzZWFyY2h0aXAyID0gIiRzdWNodGlwMlxuIjsNCX0gZWxzZSB7DQkkc2VhcmNodGlwMiA9ICI8bGk+V2VubiBTaWUgSWhyZSBTdWNoZSBhdWYgZ2FuemUgV/ZydGVyIGVpbnNjaHImYXVtbDtua2VuIHdvbGxlbiwgZiZ1dW1sO2dlbiBTaWUgdm9yIHVuZCBuYWNoIGRlbSBTdWNoYmVncmlmZiBqZXdlaWxzIGVpbiBMZWVyemVpY2hlbiBlaW4uPC9saT4iOw19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAzKSl7DQkkc2VhcmNodGlwMyA9ICIkc3VjaHRpcDNcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDMgPSAiPGxpPk1laHJlcmUgV/ZydGVyIHdlcmRlbiBhdXRvbWF0aXNjaCBtaXQgVU5EIHZlcmtu/HBmdC48L2xpPiI7DX0NDWlmIChpc3NldCgkc3VjaHRpcDNvcikpew0JJHNlYXJjaHRpcDNvciA9ICIkc3VjaHRpcDNvclxuIjsNCX0gZWxzZSB7DQkkc2VhcmNodGlwM29yID0gIiI7DX0NDWlmICghaXNzZXQoJHdlaXRlcnR4dCkpew0JJHdlaXRlcnR4dCA9ICJ3ZWl0ZXJlIFRyZWZmZXIgemVpZ2VuIjsNfQ0NDWlmICghaXNzZXQoJHNlYXJjaCkpIHskc2VhcmNoID0gJHZhbHVlO30NDQ0NDQ0kc2VhcmNodGlwNCA9ICIiOw1pZiAoJGp1bXAgPT0gdHJ1ZSAmJiAkdGFyZ2V0ID09ICIiKSB7DQ0JaWYgKGlzc2V0KCRzdWNodGlwNCkpew0JCSRzZWFyY2h0aXA0ID0gIiRzdWNodGlwNFxuIjsNCQl9IGVsc2Ugew0JCSRzZWFyY2h0aXA0ID0gIjxsaT5GYWxscyBkaWUgU3VjaGUgbnVyIGVpbmVuIGVpbnppZ2VuIFRyZWZmZXIgZXJnaWJ0LCB3aXJkIGRpZSBUcmVmZmVyc2VpdGUgZGlyZWt0IGFuZ2VzcHJ1bmdlbi48L2xpPlxuIjsNCX0NfQ0NJHNlYXJjaHRpcDUgPSAiPC91bD5cbiI7DQ1pZiAoJHRpcHBzKSB7JHNlYXJjaHRpcCA9ICRzZWFyY2h0aXAwLiRzZWFyY2h0aXAxLiRzZWFyY2h0aXAyLiRzZWFyY2h0aXAzLiRzZWFyY2h0aXAzb3IuJHNlYXJjaHRpcDQuJHNlYXJjaHRpcDU7IH1lbHNlIHskc2VhcmNodGlwID0iIjt9DQ0vLyBiZyBmdWVyIENyZWRpdC1MaW5rOg1pZiAoIWlzc2V0KCRiZykpICRiZyA9ICIjRkZGRkZGIjsNaWYgKHN0cnBvcygkYmcsJyMnKSA9PT0gZmFsc2UpICRiZyA9ICcjJy4kYmc7DQ1pZiAocHJlZ19tYXRjaCgnL14jWzAtOUEtRl17MSw2fSQvaScsICRiZykgJiYgc3RybGVuKCRiZykgPT0gNykgew0NICAgICAgJHJlZEggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgMSwgMiksIDE2LCAxMCk7DSAgICAgICRncmVlbkggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgMywgMiksICAxNiwgMTApOw0gICAgICAkYmx1ZUggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgNSwgMiksICAxNiwgMTApOw0NICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQUVSVCNjb2xvci1jb250cmFzdA0gICAgICAkc3VtID0gJHJlZEgqMjk5ICsgJGdyZWVuSCo1ODcgKyAkYmx1ZUgqMTE0Ow0gICAgICBpZiAoJHN1bSA8IDEyNzAwMCApIHsNICAgICAgICAgICAkY29tcCA9ICIjRkZGRkZGIjsNICAgICAgfSBlbHNlIHsNICAgICAgICAgICAkY29tcCA9IiMwMDAwMDAiOw0gICAgICB9DX0gZWxzZSB7DSAgICAgICRmZWhsZXIgPSAxOw0gICAgICAkYmcgPSAiI0ZGRkZGRiI7DSAgICAgICRjb21wID0gIiMwMDAwMDAiOw19DQ0kd2R3ID0gJzxwIHN0eWxlPSJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OyBjb2xvcjonLiRjb21wLicgIWltcG9ydGFudDsgYmFja2dyb3VuZDonLiRiZy4nICFpbXBvcnRhbnQiPnNjcmlwdCZuYnNwOyZjb3B5OyZuYnNwOzIwMTEmbmJzcDtieSZuYnNwOzxhIHN0eWxlPSJjb2xvcjonLiRjb21wLicgIWltcG9ydGFudDsgZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDsgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50IiBocmVmPSJodHRwOi8vd2ViZGVzaWduLndlaXNzaGFydC5kZSI+d2ViZGVzaWduJm5ic3A7d2Vpc3NoYXJ0PC9hPjwvcD4nOw0NaWYgKGlzc2V0KCRwd2QpKSB7DQkkc2VydmVyID0gc3RyX3JlcGxhY2UgKCJ3d3cuIiwiIiwgJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10gKTsNCSRzZXJ2ZXIgPSBzdHJfcmVwbGFjZSAoIisiLCIiLCAkc2VydmVyKTsNCSRzZXJ2ZXIgPSBzdHJfcmVwbGFjZSAoIi0iLCIiLCAkc2VydmVyKTsNCSRkb20gPSBjcmMzMigkc2VydmVyKTsNICAgICAgJGNoYXZlID0gJHB3ZCAvIHNwcmludGYoIiV1IiwgJGRvbSk7DX0NaWYgKGlzc2V0KCRjaGF2ZSkgJiYgJGNoYXZlID09ICIzMjEiKXsNCSR3ZHcgPScnOw19DQ0kdGltZV9vbGQgPSAwOyAvLyBmw7xyIGRpZSBGb3J0c2Nocml0dHNhbnplaWdlDQ0NLy8gbmV1ZXMgRmVuc3Rlcg1lY2hvJw08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DS8qIDwhW0NEQVRBWyAqLw0vLyBodHRwOi8vd3d3LmRyd2ViLmRlL3RyaWNra2lzdGUvdHJpY2tzMjE0LnNodG1sDWZ1bmN0aW9uIGxpbmtvcGVuZXIoYSkgew0gICB2YXIgYj1hPyJfYmxhbmsiOiJfc2VsZiI7DSAgIHZhciBjPWRvY3VtZW50LmxpbmtzOw0gICBmb3IodmFyIGk9MDtpPGMubGVuZ3RoO2krKykgew0gICAJY1tpXS50YXJnZXQ9YjsNICAgfQ19DQ1mdW5jdGlvbiBsaW5rY29va2llKCkgew0gICBpZihkb2N1bWVudC5jb29raWUuaW5kZXhPZigic3VjaG9lZmZuZW4iKSAhPT0gLTEpew0gICAgICBkb2N1bWVudC5jb29raWUgPSAic3VjaD0wO3BhdGg9LztleHBpcmVzPVRodSwgMDEtSmFuLTcwIDAwOjAwOjAxIEdNVCI7DSAgIH0gZWxzZSB7DSAgICAgZG9jdW1lbnQuY29va2llPSJzdWNoPXN1Y2hvZWZmbmVuOyBwYXRoID0vIjsNICAgfQ19DQ0vLyBodHRwOi8vaWNod2lsbC5uZXQvY2hhcHRlcjQuaHRtbA1mdW5jdGlvbiBhZGRFdmVudChvYmosIGV2VHlwZSwgZm4pew0gaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKXsNICAgb2JqLmFkZEV2ZW50TGlzdGVuZXIoZXZUeXBlLCBmbiwgZmFsc2UpOw0gICByZXR1cm4gdHJ1ZTsNIH0gZWxzZSBpZiAob2JqLmF0dGFjaEV2ZW50KXsNICAgdmFyIHIgPSBvYmouYXR0YWNoRXZlbnQoIm9uIitldlR5cGUsIGZuKTsNICAgcmV0dXJuIHI7DSB9IGVsc2Ugew0gICByZXR1cm4gZmFsc2U7DSB9DX0NDS8qIF1dPiAqLw08L3NjcmlwdD4NJzsNDQ1pZihpc3NldCgkX0dFVFsicSJdKSB8fCBpc3NldCgkX1BPU1RbInEiXSkpIHsNICAgICAgaWYgKGlzc2V0KCRfR0VUWyJxIl0pICYmICRfR0VUWyJxIl0gIT0gIiIpICRzZWFyY2ggPSAkX0dFVFsicSJdOw0gICAgICBpZiAoaXNzZXQoJF9QT1NUWyJxIl0pICYmICRfUE9TVFsicSJdICE9ICIiKSAkc2VhcmNoID0gJF9QT1NUWyJxIl07DQ0NCWlmIChzdHJpc3RyKCRzZWFyY2gsICJDb250ZW50LVR5cGUiKSkkc2VhcmNoID0gIm5vIHNwYW0gaGVyZSEiOw0NCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJmF1bWw7IiwgIuQiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJm91bWw7IiwgIvYiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJnV1bWw7IiwgIvwiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJkF1bWw7IiwgIsQiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJk91bWw7IiwgItYiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJlV1bWw7IiwgItwiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJnN6bGlnOyIsICLfIiwgJHNlYXJjaCk7DQ0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImIzIyODsiLCAi5CIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImIzI0NjsiLCAi9iIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImIzI1MjsiLCAi/CIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImIzE5NjsiLCAixCIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImIzIxNDsiLCAi1iIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImIzIyMDsiLCAi3CIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImIzIyMzsiLCAi3yIsICRzZWFyY2gpOw0NICAgJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCciJywiICIsJHNlYXJjaCk7DQ0gICBpZiAoZmlsZV9leGlzdHMoInNlYXJjaF9yZXBsYWNlLnBocCIpKSB7aW5jbHVkZSAoInNlYXJjaF9yZXBsYWNlLnBocCIpO30NDQkvLyB1bmVyd3VlbnNjaHRlIFN0cmluZ3Mgdm9uIGRlciBTdWNoZSBhdXNzY2hsaWVzc2VuDQlmb3JlYWNoKCRleGNsdWRlX3N0cmluZ3NfbWVyZ2UgYXMgJGspIHsNICAgICAgJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCRrLCIiLCRzZWFyY2gpOw0gICB9DQ0NICAgICAgJHNlYXJjaCA9IGh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UgKCAnJmFtcDsnLCAnJicsICRzZWFyY2ggKTsgLy8gbGFlc3N0IGh0bWwgZW50aXRpZXMgd2llICYjMzUxOyB6dSAoei5CLiB0dWVya2lzY2hlIFNvbmRlcnplaWNoZW4pDQkvL2RpZSBnbGVpY2hlIFplaWxlIGF1Y2ggaW4gZGllIHN1Y2hlbi5waHAsIGF1c3NlcmRlbSBaZWlsZSA0OCBoaWVyIHdlZ2tvbW1lbnRpZXJlbi4NDQ1pZihlbXB0eSgkc2VhcmNoKSkgeyRzZWFyY2g9IiI7fQ0NaWYoc3RybGVuKCRzZWFyY2gpID49ICRsZW5ndGggJiYgJHNlYXJjaCAhPSAkdmFsdWUpIHsNDQ0JaWYgKGlzc2V0KCRzdWNoaGlud2VpcykgJiYgJHN1Y2hoaW53ZWlzICE9ICIiKXsNCQkkc2VhcmNoaGlud2VpcyA9ICRzdWNoaGlud2VpczsNCQl9IGVsc2Ugew0JCSRzZWFyY2hoaW53ZWlzID0gIlNpZSBzdWNoZW4gbmFjaCI7DQl9DQllY2hvICc8cD4nLiRzZWFyY2hoaW53ZWlzLicgPGVtPiZyYXF1bzsnLiRzZWFyY2guJyZsYXF1bzs8L2VtPic7DQ0vKg0JLy9maXggZnVlciBkaWUgZm9sZ2VuZGUgRm9ydHNjaHJpdHRzYW56ZWlnZSBpLlYubXYgZ3ppcCENCSRlbmNvZGU9JF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0VOQ09ESU5HJ107DSAgIAlpZiAoc3RycG9zKCRlbmNvZGUsJ2d6aXAnKSA9PT0gZmFsc2UpIHsNCQkkZ3ppcCA9IHRydWU7DQl9DQlpZigkanVtcCAhPT0gdHJ1ZSAmJiAhJGd6aXApIHsNCQlvYl9lbmRfZmx1c2goKTsgb2Jfc3RhcnQoKTsgZWNobyAiIjsgb2JfZmx1c2goKTsgZmx1c2goKTsNCX0NKi8NDQ0NDSAgICAgICAgLy8gZGllIEZ1bmt0aW9uIHp1bSBleHRyYWhpZXJlbiB2b24gVGVpbHN0cmluZ3MNICAgICAgICBmdW5jdGlvbiBhdXNsZXNlbigkYWxsLCAkc3RhcnQsICRlbmQpIHsNICAgICAgICAgICAgICAgIGlmIChzdHJpc3RyKCRhbGwsJHN0YXJ0KSkgew0gICAgICAgICAgICAgICAgICAgICAgICAkc3RhcnRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRhbGwpLHN0cnRvbG93ZXIoJHN0YXJ0KSkgKyBzdHJsZW4oJHN0YXJ0KTsNICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3QgPSBzdWJzdHIoJGFsbCwkc3RhcnRfcG9zKTsNICAgICAgICAgICAgICAgICAgICAgICAgJGVuZF9wb3M9c3RycG9zKHN0cnRvbG93ZXIoJHJlc3QpLHN0cnRvbG93ZXIoJGVuZCkpOw0gICAgICAgICAgICAgICAgICAgICAgICAkZXJnID0gc3Vic3RyKCRyZXN0LDAsJGVuZF9wb3MpOw0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVyZzsNICAgICAgICAgICAgICAgIH0NICAgICAgICB9DQ0NCS8vIGRpZSBGdW5rdGlvbiB6dW0gRHVyY2hzdWNoZW4gZGVzIFZlcnplaWNobmlzYmF1bXM6DQlpZiAoIWlzc2V0KCRleGNsdWRlX2RpcnMpKSAkZXhjbHVkZV9kaXJzID0gYXJyYXkoIiIpOw0NCWZ1bmN0aW9uIHRyZWUoJG9yZG5lciwgJHN1YiA9IEZBTFNFKSB7DQkJIGdsb2JhbCAkZXJnZWI7DQkJICRoYW5kbGUgPSBvcGVuZGlyKCRvcmRuZXIpOw0JCSB3aGlsZSAoZmFsc2UgIT09ICgkZmlsZSA9IHJlYWRkaXIgKCRoYW5kbGUpKSkgew0JCSAgICAgICBpZigkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIiAmJiBpc19kaXIoJG9yZG5lci4iLyIuJGZpbGUpKSB7DQkgICAgICAgCQkkY29tcGwgPSAkb3JkbmVyLiIvIi4kZmlsZS4iLyI7DQkgICAgICAgCQkvL2VjaG8gJGNvbXBsLiI8YnI+IjsNCQkJJGVyZ2ViID0gJGVyZ2ViLiIsIi4kY29tcGw7DSAgICAgICAgCQl0cmVlKCRvcmRuZXIuIi8iLiRmaWxlLCBUUlVFKTsNCQkJfQ0JCX0NCSAgCWNsb3NlZGlyKCRoYW5kbGUpOw0JfQ0NCWlmICgkYWxsZWRpcnMpIHsNCSAgIHRyZWUoIi4iKTsNCSAgICRlcmdlYiA9ICIuLyIuJGVyZ2ViOw0JICAgJGRpcnMgPSBleHBsb2RlICgiLCIsICRlcmdlYik7DQl9DQ0JZm9yZWFjaCgkZGlycyBhcyAkZGlyKSB7DSAgICAgICAgICAgaWYoIWluX2FycmF5KCRkaXIsJGV4Y2x1ZGVfZGlycykpIHsNCQkvL2VjaG8gJGRpci4iPGJyPiI7DQkJJHZlcnogPSBvcGVuZGlyKCRkaXIpOw0NCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoJHZlcnopKSB7DQkJJGR1cmNoc3VjaHQgPSAkZHVyY2hzdWNodCArIDE7DQkJCS8vIGVpbnplbG5lIERhdGVpZW4gdm9uIGRlciBTdWNoZSBhdXNzY2hsaWVzc2VuDQ0JCQkvLyBkaWUgZm9sZ2VuZGVuIDggWmVpbGVuIGVybGF1YmVuIEF1c2NobHVzcyB2b24gU3Vic3RyaW5ncyBpbiAkZXhjbHVkZV9maWxlcw0JCQkkbm9saXN0PWZhbHNlOw0JCQlmb3IgKCRlPTA7JGU8Y291bnQoJGV4Y2x1ZGVfZmlsZXMpOyRlKyspIHsNCQkJICAgICRwb3MgPSBzdHJwb3MoJGZpbGUsJGV4Y2x1ZGVfZmlsZXNbJGVdKTsNCQkJICAgIGlmICgkcG9zICE9PSBmYWxzZSkgew0JCQkgICAgICAgJG5vbGlzdCA9IHRydWU7DQkJCSAgICB9DQkJCX0gDQkJCWlmKCRub2xpc3QgIT09IHRydWUgJiYgcHJlZ19tYXRjaCgiPShcLiRkYXRfdHlwZSkkPSIsJGZpbGUpKSB7DS8vCQkJaWYoIWluX2FycmF5KCRmaWxlLCRleGNsdWRlX2ZpbGVzKSAmJiBwcmVnX21hdGNoKCI9KFwuJGRhdF90eXBlKSQ9IiwkZmlsZSkpIHsNDQkJCQkvLyBNZXRhLUFuZ2FiZW4gZXJtaXR0ZWxuDQkJCQkkdGl0ZWwgPSAiIjsNCQkJCSRrZXl3b3JkcyA9ICIiOw0JCQkJJGRlc2NyaXB0aW9uID0gIiI7DQkJCQkkZ210YXJyYXk9Z2V0X21ldGFfdGFncygkZGlyLiRmaWxlKTsNCQkJCXdoaWxlKGxpc3QoJGtleTEsJHZhbCk9ZWFjaCgkZ210YXJyYXkpKXsNCQkJCQlzd2l0Y2goc3RydG9sb3dlcigka2V5MSkpew0JCQkJICAgICAgCWNhc2UgInRpdGxlIjogJHRpdGVsPSR2YWw7IGJyZWFrOw0JCQkJICAgICAgCWNhc2UgImtleXdvcmRzIjogJGtleXdvcmRzPSR2YWw7IGJyZWFrOw0JCQkJICAgICAgCWNhc2UgImRlc2NyaXB0aW9uIjogJGRlc2NyaXB0aW9uPSR2YWw7IGJyZWFrOw0JCQkJCX0NCQkJCX0NDQkJCQkkc3RyaW5nMSA9ICRzdHJpbmcgPSBmaWxlX2dldF9jb250ZW50cygkZGlyLiRmaWxlKTsNCQkJCQ0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImbmJzcDsiLCIgIiwkc3RyaW5nKTsgLy8gd2VpbCBzb25zdCAmbHQ7Jm5ic3A7IGFscyBsaW1pdC1lbmQgd2lya3Q/Pz8NCQkJCQ0NCQkJCS8vIGRhbWl0IHdlcmRlbiBnYW56ZSBXb2VydGVyIGdlZnVuZGVuLCBhdWNoIHdlbm4gc2llIGluIFRhZ3MgZWluZ2VzY2hsb3NzZW4gc2luZDoNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiPCIsIiA8Iiwkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiPiIsIj4gIiwkc3RyaW5nKTsNDQkJCQkvLyBodG1sIHRhZ3MgbWl0IGVpbmdlc2NobG9zc2VuZW4gcGhwIHRhZ3MgcmF1cyAtIHdlaWwgc29uc3QgZWluIGVpbnplbG5lcyA8IG9kZXIgJmx0OyBhbHMgZW5kIHdpcmt0DSAgCQkJCSRzdWNobXVzdGVyID0gIi88XD9bXj5dK1w/Pi8iOyANICAJCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwiIiwkc3RyaW5nKTsNDQkJCQkkc3RyaW5nID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzdHJpbmcpOw0NDSAgICAgICAgICAgIC8vIG51ciBmdWVyIHdkdyBkeW4uIGRlc2NyaXB0aW9uczoNICAgICAgICAgICAgaWYgKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddID09ICJ3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIikgew0gICAJCQkJaWYgKCRkZXNjcmlwdGlvbiA9PSAiIil7DSAgIAkJCQkJJGRlc2NyaXB0aW9uID0gYXVzbGVzZW4oJHN0cmluZzEsICJkZXNjcmlwdGlvbiIsICI+Iik7DSAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkZGVzY3JpcHRpb24gPSBzdHJpcF90YWdzKCRkZXNjcmlwdGlvbik7DSAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkZGVzY3JpcHRpb24gPSBwcmVnX3JlcGxhY2UoIi9cbnxccnxjb250ZW50fFwifD18XC98XD8vIiwgIiIsICRkZXNjcmlwdGlvbik7DSAgIAkJCQl9DSAgICAgICAgICAgIH0NDQkJCQkvLyB1bmQgd2VpbCA8dGl0bGU+IG5pY2h0IGltbWVyIGFscyBNZXRhLXRhZyBjb2RpZXJ0IHdpcmQ6DQkJCQlpZiAoJHRpdGVsID09ICIiKSAkdGl0ZWwgPSBhdXNsZXNlbigkc3RyaW5nLCAiPHRpdGxlPiIsICI8L3RpdGxlPiIpOw0NCQkJCS8vIHdlaWwgZXMgTGV1dGUgZ2lidCwgZGllIG1ldGEgVGFncyBtaXQgWmVpbGVudW1icnVjaCBzY2hyZWliZW46DQkJCQkkZGVzY3JpcHRpb24gPSBzdHJfcmVwbGFjZSgiXG4iLCIiLCRkZXNjcmlwdGlvbik7DQkJCQkka2V5d29yZHMgPSBzdHJfcmVwbGFjZSgiXG4iLCIiLCRrZXl3b3Jkcyk7DQkJCQkkdGl0ZWwgPSBzdHJfcmVwbGFjZSgiXG4iLCIiLCR0aXRlbCk7DQ0NDQkJCQkvLyBEYXRlaWVuIG51ciB6d2lzY2hlbiBkZW4gYmVpZGVuIGxpbWl0ZXIgdGFncyBhdXN3ZXJ0ZW46DQkJCQlpZiAoJGxpbWl0X3N0YXJ0ICE9ICIiKSB7DQkJCQkJJHBvcz1zdHJwb3Moc3RydG9sb3dlcigkc3RyaW5nKSxzdHJ0b2xvd2VyKCRsaW1pdF9zdGFydCkpICsgc3RybGVuKCRsaW1pdF9zdGFydCk7DQkJCQkJJHN1YnN0cmluZ19yZXN0ID0gc3Vic3RyKCRzdHJpbmcsJHBvcyk7DQkJCQl9DQkJCQllbHNlIHsNCQkJCQkkc3Vic3RyaW5nX3Jlc3QgPSAkc3RyaW5nOw0JCQkJfQ0NDQkJCQkvLyB3ZW5uICRsaW1pdF9lbmQgZ2VzZXR6dDoNCQkJCWlmICgkbGltaXRfZW5kICE9ICIiKSB7DQkJCQkJJGVuZF9wb3M9c3RycG9zKHN0cnRvbG93ZXIoJHN1YnN0cmluZ19yZXN0KSxzdHJ0b2xvd2VyKCRsaW1pdF9lbmQpKTsNCQkJCQlpZiAoJGVuZF9wb3MgIT09IGZhbHNlKSB7DSAgICAgICAgICAgICAgICAgICAgCQkJJHN0cmluZyA9IHN1YnN0cigkc3Vic3RyaW5nX3Jlc3QsMCwkZW5kX3Bvcyk7DQkJCQkgICAgICB9IGVsc2Ugew0JCQkJCSAgICAgJHN0cmluZyA9ICRzdWJzdHJpbmdfcmVzdDsNCQkJCSAgIAl9DSAgICAgICAgICAgICAJCX0gZWxzZSB7DSAgICAgICAgICAgICAgICAJCQkkc3RyaW5nID0gJHN1YnN0cmluZ19yZXN0Ow0gICAgICAgICAgICAgCQl9DQ0NDQkJCQkvL0luaGFsdCB2b24gdGFncyBhdXN3ZXJ0ZW46DQkJCQlpZiAoJHRhZ3M9PT1mYWxzZSkgCSRzdHJpbmcgPSBzdHJpcF90YWdzKCRzdHJpbmcpOw0NDQkJCQkvLyBkaWUgbWV0YSB0YWdzIGluIGRpZSBTdWNoZSBlaW5zY2hsaWVzc2VuIGdlbWFlc3MgY29uZmlnOg0gICAgICAgICAgICAJCWlmICgkdGFncyA9PT0gdHJ1ZSkgeyRrZXk9dHJ1ZTsgJGRlc2M9dHJ1ZTsgJHRpdD10cnVlO30NCQkJCWlmICgka2V5ID09PSB0cnVlKSAkc3RyaW5nPSRzdHJpbmcuJGtleXdvcmRzOw0JCQkJaWYgKCRkZXNjID09PSB0cnVlKSAkc3RyaW5nPSRzdHJpbmcuJGRlc2NyaXB0aW9uOw0JCQkJaWYgKCR0aXQgPT09IHRydWUpICRzdHJpbmc9JHN0cmluZy4kdGl0ZWw7DQ0NCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiXG4iLCAiICIsICRzdHJpbmcpOw0NDQkJCQkvLyBqZXR6dCBkaWUgQXVzZ2FiZSBkZXMgS29udGV4dCB2b3JiZXJlaXRlbjoNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJmF1bWw7IiwgIuQiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJm91bWw7IiwgIvYiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJnV1bWw7IiwgIvwiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJkF1bWw7IiwgIsQiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJk91bWw7IiwgItYiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJlV1bWw7IiwgItwiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJnN6bGlnOyIsICLfIiwgJHN0cmluZyk7DQ0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzIyODsiLCAi5CIsICRzdHJpbmcpOw0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzI0NjsiLCAi9iIsICRzdHJpbmcpOw0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzI1MjsiLCAi/CIsICRzdHJpbmcpOw0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzE5NjsiLCAixCIsICRzdHJpbmcpOw0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzIxNDsiLCAi1iIsICRzdHJpbmcpOw0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzIyMDsiLCAi3CIsICRzdHJpbmcpOw0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzIyMzsiLCAi3yIsICRzdHJpbmcpOw0NICAgICAgICAgICAgLy8gZnVlciBkaWUgS29tbWVudGFyZQ0JCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCJ8IiwgIiAiLCAkc3RyaW5nKTsNDSAgICAgICAgICAgIC8vIERhdHVtIHZvbiBLb21tZW50YXJlbiBpbiBkZXV0c2NoZXMgRm9ybWF0Og0gICAgICAgICAgICAkc3VjaG11c3RlciA9ICcvWzAtOV1bMC05XS1bMC0xXVswLTJdLVswLTNdWzAtOV0vJzsNICAgICAgICAgICAgcHJlZ19tYXRjaCgkc3VjaG11c3RlciwgJHN0cmluZywgJHRyZWZmZXIxKTsNICAgICAgICAgICAgJGNvbW1lbnRfZGF0ZSA9IGltcGxvZGUoIiwiLCR0cmVmZmVyMSk7DSAgICAgICAgICAgICRnZXJfZGF0ZSA9IHN1YnN0cigkY29tbWVudF9kYXRlLDYsMikuJy4nLnN1YnN0cigkY29tbWVudF9kYXRlLDMsMikuJy4nLnN1YnN0cigkY29tbWVudF9kYXRlLDAsMik7DSAgICAgICAgICAgICRzdHJpbmcgPSBzdHJfcmVwbGFjZSgkY29tbWVudF9kYXRlLCRnZXJfZGF0ZSwgJHN0cmluZyk7DQ0gICAgICAgICAgICAvLyBFLU1haWxzIHJhdXM6IGh0dHA6Ly93d3cucmVndWxhci1leHByZXNzaW9ucy5pbmZvL2VtYWlsLmh0bWwNICAgICAgICAgICAgJHN1Y2htdXN0ZXIgPSAnL1xiW0EtWjAtOS5fJSstXStAW0EtWjAtOS4tXStcLltBLVpdezIsNH1cYi9pJzsNICAgICAgICAgICAgJHN0cmluZyA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwnJywgJHN0cmluZyk7DQ0JCQkJJHN0cmluZ2xvdyA9IHN0cnRvbG93ZXIoJHN0cmluZyk7DQkJCQkkc2VhcmNobG93ID0gc3RydG9sb3dlcigkc2VhcmNoKTsNCQkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnRvbG93ZXInKSkgeyANCQkJCQkkc3RyaW5nbG93ID0gbWJfc3RydG9sb3dlcigkc3RyaW5nbG93LCdVVEYtOCcpOw0JCQkJCSRzZWFyY2hsb3cgPSBtYl9zdHJ0b2xvd2VyKCRzZWFyY2hsb3csJ1VURi04Jyk7DQkJCQl9DQkJCQkNDQkJCQkjIGRpZSB1bmQtVmVya251ZXBmdW5nOg0JCQkJJG9yID0gZmFsc2U7IA0NCQkJCWlmICgoc3RycG9zKCRzZWFyY2hsb3csIiBvciAiKSAhPT0gZmFsc2UgfHwgc3RycG9zKCRzZWFyY2hsb3csIiBvZGVyICIpICE9PSBmYWxzZSkgJiYgIGlzc2V0KCRzdWNodGlwM29yKSkgeyAvLyBVbXNjaGFsdGVuIHZvbiB1bmQgYXVmIG9yIC0gZGFzIG1pdCBkZW0gS29udGV4dCBpc3Qgbm9jaCBwcm9ibGVtYXRpc2NoDQkJCQkJJG9yID0gdHJ1ZTsNCQkJCQkkc2VhcmNobG93ID0gc3RyX3JlcGxhY2UoIiBvciAiLCAiICIsICRzZWFyY2hsb3cpOw0JCQkJCSRzZWFyY2hsb3cgPSBzdHJfcmVwbGFjZSgiIG9kZXIgIiwgIiAiLCAkc2VhcmNobG93KTsNCQkJCX0NDQkJCQkkc2VhcmNoX2FyciA9IGV4cGxvZGUoIiAiLHRyaW0oJHNlYXJjaGxvdykpOw0JCQkJJHNlYXJjaF9jb3VudCA9IGNvdW50KCRzZWFyY2hfYXJyKTsNDQ0JCQkJIyBkYW1pdCBmdWVocmVuZGUgdW5kIHNjaGxpZXNzZW5kZSBMZWVyemVpY2hlbiBiZWkgZGVyIFN1Y2hlIG5hY2ggZ2FuemVuIFdvZXJ0ZXJuIGJlcnVlY2tzaWNodGlndCBibGVpYmVuDQkJCQlpZiAoJHNlYXJjaF9jb3VudCA9PSAxKSB7DQkJCQkJJHNlYXJjaF9hcnJbMF0gPSAkc2VhcmNobG93Ow0gICAgICAgICAgICAgICAgICAgICAgICAgICAkc3VjaG11c3RlciA9ICcvOnxcO3whfFw/fFwufCx8XCh8XCkvJzsNICAgICAgICAgICAgICAgICAgICAgICAgCSRzdHJpbmdsb3cgPSBwcmVnX3JlcGxhY2UoJHN1Y2htdXN0ZXIsICIgIiwgJHN0cmluZ2xvdyk7IC8vIGF1Y2ggZ2FuemUgV29lcnRlciBhbSBTYXR6ZW5kZSBmaW5kZW4sIGFiZXIgb2huZSA7IGRhIHNvbnN0IGVudGl0aWVzIG5pY2h0IGdlZnVuZGVuIHdlcmRlbi4NCQkJCX0NDQkJCQkkdGVzdCA9IHN1YnN0cl9jb3VudCgkc3RyaW5nbG93LCAkc2VhcmNobG93KTsNDQkJCQkkaT0wOw0JCQkJZm9yZWFjaCAoJHNlYXJjaF9hcnIgYXMgJHNlYXJjaF93b3JkKSB7DQkJCQlpZiAocHJlZ19tYXRjaCgiLygkc2VhcmNoX3dvcmQpL2kiLCAkc3RyaW5nbG93KSkgewkJLy8gd2VubiBTdWNoYmVncmlmZiB2b3Jrb21tdA0JCQkJCSRpKys7DQ0JCQkJCWlmICgkb3IgPT09IHRydWUpIHskaSA9ICRzZWFyY2hfY291bnQgPSAxO30gLy8gZGVyIEhhY2ssIHVtIGJlaSBPUiBuaWNodCB6dSB3YXJ0ZW4sIGJpcyBhbGxlIFN1Y2hiZWdyaWZmZSBnZWZ1bmRlbiB3ZXJkZW4NDQkJCQkJaWYgKCRpPT0kc2VhcmNoX2NvdW50KSB7CQkvLyBzb2JhbGQgYWxsZSBTdWNoYmVncmlmZmUgZ2VmdW5kZW4gd3VyZGVuLi4uDQ0JCQkJCQkvLyBoaWdobGlnaHRpbmcgd2lyZCB2b24gc2VhcmNoaGkuanMgZXJsZWRpZ3Q6DQkJCQkJCWlmICgkc2VhcmNoX2NvdW50ID4gMSl7DQkJCQkJCQkkcG9zPXN0cnBvcygkc3RyaW5nbG93LCRzZWFyY2hfd29yZCk7DQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkkcG9zPXN0cnBvcygkc3RyaW5nbG93LCRzZWFyY2hsb3cpOw0JCQkJCQl9DQ0JCQkJCQlpZiAoJHZvciA+PSAkcG9zKSB7DS8vCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLCRwb3MsJG5hY2gpKTsNCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLDAsJG5hY2gpKTsNCQkJCQkJfSBlbHNlIHsNCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLCRwb3MtJHZvciwkdm9yKyRuYWNoKSk7DQkJCQkJCQkkcGllY2UxID0gc3Ryc3RyICgkcGllY2UxLCIgIik7IC8vIHZlcm1laWRldCBCcnVjaHN0dWVja2Ugdm9uIFdvZXJ0ZXJuIGFtIEFuZmFuZyBkZXMgS29udGV4dA0JCQkJCQl9DQ0JCQkJCQkkcGllY2UxID0gc3Vic3RyKCRwaWVjZTEsIDAsIHN0cmxlbihzdHJyY2hyKCRwaWVjZTEsMzIpKSooLTEpKS4iIC4uLiI7IC8vIHZlcm1laWRldCBCcnVjaHN0dWVja2Ugdm9uIFdvZXJ0ZXJuIGFtIEVuZGUgZGVzIEtvbnRleHQNCQkJCQkJJHJlc3QgPSAiPGJyIC8+JHBpZWNlMSI7DQ0NDQkJCQkJCWlmKCR2b3I9PSIwIiAmJiAkbmFjaD09IjAiKSAkcmVzdCA9ICIiOw0NCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighJGRlc2NyaXB0aW9uID09ICIiICYmICRzaG93X2Rlc2MgPT0gdHJ1ZSkgJHJlc3QgPSAiPGJyIC8+PHN0cm9uZz4kYmVzY2hyZWliPC9zdHJvbmc+ICRkZXNjcmlwdGlvbiI7DQ0JCQkJCQlpZigkZmlsZW5hbWUpICR0aXRlbCA9ICRmaWxlOw0JCQkJCQlpZigkdGl0ZWwgPT0gIiIpICR0aXRlbCA9ICRmaWxlOw0NDQ0NCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxZGlyID0gc3RyX3JlcGxhY2UoIi4vIiwiIiwkZGlyKTsgLy8gZW50ZmVybnQgZGFzIGZ1ZWhyZW5kZSAuLyBiZWltIHF1ZXJ5IHN0cmluZw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkcXVlcnlfZW5kdW5nKSAmJiAkcXVlcnlfZW5kdW5nID09ICJubyIpIHsNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZleHQgID0gYXJyYXlfcG9wKGV4cGxvZGUoJy4nLCAkZmlsZSkpOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm5hbWUgPSBiYXNlbmFtZSgkZmlsZSwgJy4nLiRmZXh0KTsNCQkJCQkJCSAgICAgICAkbGluayA9ICRxdWVyeS4kcWRpci4kZm5hbWU7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCQkJCQkJCSAgICAgICAkbGluayA9ICRxdWVyeS4kcWRpci4kZmlsZTsNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQ0JCQkJCQl9IGVsc2Ugew0JCQkJCQkJJGxpbmsgPSAkZGlyLiRmaWxlOw0JCQkJCQl9DQ0gICAgICAgICAgICAgICAgICAvLyBKZXR6dCBVbWxlaXRlbiB2b24gS29tbWVudGFyZW4gYXVmIGRlbiBBcnRpa2VsOg0gICAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRsaW5rLCdjb21tZW50JykgIT09IGZhbHNlKSB7DSAgICAgICAgICAgICAgICAgICAgICR0aXRlbCA9IHN0cl9yZXBsYWNlKCJjb21tZW50XyIsIiIsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgJHRpdGVsID0gc3RyX3JlcGxhY2UoIi54bWwiLCIucGhwIiwkdGl0ZWwpOw0gICAgICAgICAgICAgICAgICAgICAkdGl0ZWwgPSAnS29tbWVudGFyIGF1ZiBkZXIgU2VpdGUgJy4kdGl0ZWw7DSAgICAgICAgICAgICAgICAgIA0gICAgICAgICAgICAgICAgICAgICAkbGluayA9IHN0cl9yZXBsYWNlKCJjb21tZW50XyIsIiIsJGxpbmspOw0gICAgICAgICAgICAgICAgICAgICAkbGluayA9IHN0cl9yZXBsYWNlKCIueG1sIiwiLnBocCIsJGxpbmspOw0gICAgICAgICAgICAgICAgICB9DQ0gICAgICAgICAgICAgICAgICAvLyBKZXR6dCBVbWxlaXRlbiB2b24gbWQtVGV4dGZpbGVzIGF1ZiBkZW4gQXJ0aWtlbDoNICAgICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkbGluaywnL21hcmtkb3duLycpICE9PSBmYWxzZSkgew0gICAgICAgICAgICAgICAgICANICAgICAgICAgICAgICAgICAgICAgJGxpbmsgPSBzdHJfcmVwbGFjZSgibWFya2Rvd24vIiwiIiwkbGluayk7DSAgICAgICAgICAgICAgICAgICAgICRsaW5rID0gc3RyX3JlcGxhY2UoIl90ZXh0LnR4dCIsIi5waHAiLCRsaW5rKTsNICAgICAgICAgICAgICAgICAgICAgJGxpbmsgPSBzdHJfcmVwbGFjZSgicGJfIiwiIiwkbGluayk7DQkJCSAgICR0aXRlbCA9IHN0cl9yZXBsYWNlKCIuLyIsIiIsJGxpbmspOyANICAgICAgICAgICAgICAgICAgfQ0NDQ0JCQkJICAvLyBVbWxlaXRlbiB2b24gSW5jbHVkZS1EYXRlaWVuOg0JCQkJICBpZiAoaXNzZXQoJHJlZGlyX3N1ZmZpeCkgJiYgaXNzZXQoJHJlZGlyX3JlcGxhY2UpKSB7DSAgICAgICAgICAgICAgICAgICAgICR0aXRlbCA9IHN0cl9yZXBsYWNlKCRyZWRpcl9zdWZmaXgsJHJlZGlyX3JlcGxhY2UsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgJGxpbmsgPSBzdHJfcmVwbGFjZSgkcmVkaXJfc3VmZml4LCRyZWRpcl9yZXBsYWNlLCRsaW5rKTsNCQkJCSAgfQ0NDQkJCQkJCWlmKCR0aXRlbCAhPSAiIikgew0NCQkJCQkJCWlmICgkdGFyZ2V0ID09ICJibGFuayIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSJfYmxhbmsiJzsNCQkJCQkJCQkkanVtcCA9IGZhbHNlOw0JCQkJCQkJfSBlbHNlaWYgKCR0YXJnZXQgIT0gIiIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSInLiR0YXJnZXQuJyInOw0JCQkJCQkJCSRqdW1wID0gZmFsc2U7DQkJCQkJCQl9IGVsc2Ugew0JCQkJCQkJCSR6aWVsID0gJyc7DQkJCQkJCQl9DQ0JCQkJCQkJaWYgKCRwZmFkID09IHRydWUpIHsNCQkJCQkJCQlpZiAoaXNzZXQoJHF1ZXJ5KSl7DQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSR1cmwgPSAiVVJMOiZuYnNwOzxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj5odHRwOi8vIi4kcGZhZGluZm8uJGxpbmsuIjwvYT4iOw0JCQkJCQkJCX0gZWxzZSB7DQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSR1cmwgPSAiVVJMOiZuYnNwOzxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj5odHRwOi8vIi4kcGZhZGluZm8uc3Vic3RyKCRsaW5rLDEpLiI8L2E+IjsNCQkJCQkJCQl9DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkdXJsID0gIiI7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQ0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhZW5kX2RhdCA9PSB0cnVlKSB7DQkJCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0JCQkJCQkJCQlpZiAoJGRhdGVmb3JtID09ICJlbiIpIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoIm0vZC95IiwgZmlsZW10aW1lKCRkaXIuJGZpbGUpKTsNCQkJCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoImQubS55IiwgZmlsZW10aW1lKCRkaXIuJGZpbGUpKTsNCQkJCQkJCQkJfQ0JCQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkJCWlmICgkZGF0ZWZvcm0gPT0gImVuIikgew0JCQkJCQkJCQkJQCRtb2QgPSAkZmlsZWRhdGUuZGF0ZSgibS9kL3kiLCBmaWxlbXRpbWUoJGxpbmspKTsNCQkJCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoImQubS55IiwgZmlsZW10aW1lKCRsaW5rKSk7DQkJCQkJCQkJCX0NCQkJCQkJCQl9DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2Ugew0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRtb2QgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFlbmRfZGF0ICYmICRwZmFkKSB7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRyZW5uZXIgPSAiIC0gIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRyZW5uZXIgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJlZmZfYW56PSIiOw0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHRyZWZmZXIgJiYgJHRlc3Q+PTEpICR0cmVmZl9hbno9IlsiLiR0ZXN0LiImbmJzcDsiLiR0cmVmZi4iXSI7DQ0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBmYWQgfHwgJGFlbmRfZGF0KSB7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJyYXkgLj0gJHRlc3QuIjxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj4iLiR0aXRlbC4iPC9hPiAiLiR0cmVmZl9hbnouJHJlc3QuIjxzcGFuIGNsYXNzPSdtb2QnPiIuJHVybC4kdHJlbm5lci4kbW9kLiI8L3NwYW4+XG4iOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJyYXkgLj0gIiRsaW5rXG4iOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlmcmFtZSAhPT0gdHJ1ZSkgeyANICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFycmF5IC49ICR0ZXN0LiI8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kdGl0ZWwuIjwvYT4gIi4kdHJlZmZfYW56LiRyZXN0LiJcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJheSAuPSAiJGxpbmtcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmQgKys7DQ0JCQkJCQl9DQkJCQkJfQ0JCQkJfQ0JCQl9DQkJfQ0JICAgIH0NICAgICAgICB9DQkJQGNsb3NlZGlyKCR2ZXJ6KTsNDQl9DQllY2hvICc8L3A+JzsNCWlmICgkc2VhcmNoID09ICKnZm91bmQiKSB7ZWNobyAnJiM4Mzt1JiM5OTtoJiMxMTU7YyYjMTE0O2kmIzExMjt0ICYjMTY5OyAyJiM0ODswNSAmIzExOTtlJiM5ODtkJiMxMDE7cyYjMTA1O2duJiM0NjsmIzExOWUmIzEwNTtzJiMxMTU7aCYjOTc7ciYjMTE2OyYjNDY7JiMxMDA7ZSc7ZXhpdDt9DQ0NLy8gTG9nZGF0ZWkgc2NocmVpYmVuIHVuZCBCZW5hY2hyaWNodGlndW5ncy1NYWlsIG1pdCBpcCAtIFNwZXJyZToNLy8gYmFzZTY0IHNjaHJlaWJ0IDIgTG9nZWludHLDpGdlIQ0NZnVuY3Rpb24gc2NocmVpYmVuKCRkYXRlaSwkbW9kZSl7DQlnbG9iYWwgJHNlYXJjaDsNCSRmcCA9IEBmb3BlbigkZGF0ZWksJG1vZGUpOw0JZmxvY2soJGZwLExPQ0tfRVgpOw0JZndyaXRlKCRmcCwkX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4ifCIudGltZSgpLiJ8Ii4kc2VhcmNoLiJcbiIpOw0JZmxvY2soJGZwLExPQ0tfVU4pOw0JZmNsb3NlKCRmcCk7DX0NDQ1mdW5jdGlvbiBpcF9zcGVycmUoKSB7DWdsb2JhbCAkc2VhcmNoOw1nbG9iYWwgJHJlbG9hZGxpbWl0Ow0NJHJlbG9hZGxvZ2RhdGVpID0gInJlbG9hZC50eHQiOw0kYW56YWhsZWludHJhZWdlID0gMTAwOw0NLy8gUHJ1ZWZlbiwgb2IgcmVsb2FkZGF0ZWkgZXhpc3RpZXJ0ID0+IGFuc29uc3RlbiBFcnN0ZWxsZW4NDWlmKCFmaWxlX2V4aXN0cygkcmVsb2FkbG9nZGF0ZWkpKSB7DQkkZGF0ZWkgPSBmb3BlbigkcmVsb2FkbG9nZGF0ZWksIncrIik7DQlmY2xvc2UoJGRhdGVpKTsNfQ0NJGZwID0gZmlsZSgkcmVsb2FkbG9nZGF0ZWkpOw0kc2l6ZSA9IHNpemVvZigkZnApOw0kYXVzZ2FiZSA9IGZhbHNlOw0vLyBEYXRlaSBzY2hyZWliZW4sIHdlbm4gTGlzdGUgdm9sbDoNaWYoJHNpemUgPj0gJGFuemFobGVpbnRyYWVnZSl7DQlzY2hyZWliZW4oJHJlbG9hZGxvZ2RhdGVpLCJ3Iik7DQ0vLyBQcnVlZmVuLCBvYiBlaW5lIElQIGluIGRlciBMaXN0ZSBzdGVodA19IGVsc2Ugew0JZm9yICgkaT0wOyRpPD0kc2l6ZTskaSsrKSB7DSAgICAgIAlAJHplaWxlID0gZXhwbG9kZSgifCIsJGZwWyRpXSk7DSAgICAgIAkvLyBJUCB3aXJkIGdlZnVuZGVuDSAgICAgIAlpZiAoJHplaWxlWzBdID09ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdIEFORCAkemVpbGVbMV0gPiAodGltZSgpLSRyZWxvYWRsaW1pdCkgJiYgdHJpbSgkemVpbGVbMl0pID09IHRyaW0oJHNlYXJjaCkpew0JCQkkYXVzZ2FiZSA9IHRydWU7DQkJLy8gSVAgd2lyZCBuaWNodCBnZWZ1bmRlbg0JCS8vfSBlbHNlICB7DSAgICAgICAgCS8vCSRhdXNnYWJlID0gZmFsc2U7DSAgICAgIAl9DQl9DQkvLyBQcm90b2tvbGxpZXJ0IGRpZSBJUC1BZHJlc3NlIChzY2hyZWlidCk6DQlzY2hyZWliZW4oJHJlbG9hZGxvZ2RhdGVpLCJhKyIpOw0JfQ0JcmV0dXJuIEAkYXVzZ2FiZTsNfQ0NLy8gamV0enQgTG9nZmlsZSB1bmQgQmVuYWNocmljaHRpZ3VuZ3MtTWFpbCBzY2hyZWliZW46DQ1pZihpcF9zcGVycmUoKT09ZmFsc2UpIHsNDQkvLyBCZW5hY2hyaWNodGlndW5ncyBNYWlsOg0JaWYoJG1haWwgPT0gdHJ1ZSAmJiAkc2VhcmNoICE9ICR2YWx1ZSkgew0gICAgICBpZiAoISRzZW5kZXIpICRzZW5kZXIgPSAiU3VjaHNjcmlwdCI7DQkJbWFpbCgkYWRtaW5hZGRyZXNzLCJTdWNoZSBhdWYgJHNlaXRlIiwiRm9sZ2VuZGVyIEJlZ3JpZmYgd3VyZGUgc29lYmVuIGF1ZiBkZXIgU2VpdGUgJHNlaXRlIGdlc3VjaHQ6IFxuJHNlYXJjaFxuVHJlZmZlcjogJGZvdW5kIiwNICAgICAgIkZyb206ICRzZW5kZXIiICk7DQl9DQ0JLy8gTG9nZmlsZSBzY2hyZWliZW46DQkkdG9kYXkgPSBkYXRlKCJkLm0uIEg6aSAiKTsNCSRubCA9IGh0bWxfZW50aXR5X2RlY29kZSgkdG9kYXkuJHNlYXJjaCkuIigiLiRmb3VuZC4iKVxuIjsNCSRsaW5lcyA9IGZpbGUoJ3NlYXJjaGxvZy50eHQnKTsNCSRsaW5lcyA9IGFycmF5X3VuaXF1ZSgkbGluZXMpOyAvLyBEdXBsaWthdGUgbG9lc2NoZW4NDQ0JLy8gV2VubiBtZWhyIGFscyAkbWF4bXNnIChkZWZhdWx0OjEwMCkgTG9nZWludHJhZWdlIGFlbHRlc3RlIGxvZXNjaGVuOg0JLy8gJG1heG1zZyA9IDEwMDsNCWlmKGNvdW50KCRsaW5lcykgPiAkbWF4bXNnKSB1bnNldCgkbGluZXNbMF0pOw0NCSRubCA9IGltcGxvZGUoIiIsICRsaW5lcykuJG5sOw0JJGZwID0gZm9wZW4oJ3NlYXJjaGxvZy50eHQnLCAndycpOw0JZndyaXRlKCRmcCwgJG5sKTsNCWZjbG9zZSgkZnApOw19DQ0NDQlpZigkZm91bmQgPT0gIjAiKQl7DQkJZWNobyAkbm9yZXN1bHQ7DQkJLy8gU3lub255bWRhdGVpIGFubGVnZW4sIHdlbm4gJHNlYXJjaCBkcmluc3RlaHQsIGluIGFycmF5IGxlc2VuIHVuZCBhdXNnZWJlbjoNCQkvLyBhbGxlIFN5bm9ueW1lIGluIGVpbmUgWmVpbGUsIGFsbGUgYXVzd2VydGVuDQkJLy8gd2VubiBuaWNodDoNCQlpZiAoc3RybGVuKCRzZWFyY2gpID4gJGxlbmd0aCAmJiAkdm9yc2NobGFnICE9ICIiKSB7DQkJCSRzeW4gPSBzdWJzdHIoJHNlYXJjaCwwLCRsZW5ndGgpOw0JCQllY2hvICI8cD4kdm9yc2NobGFnIDxhIGhyZWYgPVwiIi4gYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pLiI/cT0kc3luJmFtcDtnZWdlbj1cIj4kc3luPC9hPi48L3A+IjsNCQl9DQl9DQ0JaWYoJGZvdW5kID09ICIxIiAmJiAkanVtcCA9PSB0cnVlICYmICRfU0VSVkVSWydQSFBfU0VMRiddICE9IHN1YnN0cigkbGluaywxKSkJeyAvL2RhcyBTdWNoc2NyaXB0IHNlbGJzdCBkYXJmIG5pY2h0IGFuZ2VzcHJ1bmdlbiB3ZXJkZW46IEVuZGxvc3NjaGxlaWZlDSAgCQkkbGluayA9IHN1YnN0cigkbGluaywxKTsJLy9kZW4gUHVua3Qgdm9yIGRlbSBkaXIgd2VnDQ0JCS8vIGRvcHBlbHRlIHNsYXNoIHZvciBEYXRlaW5hbWVuIHVudGVyZHLDvGNrZW4NCQkkZGlybmFtZSA9IGRpcm5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOw0JCWlmKCRkaXJuYW1lID09ICIvIikgJGRpcm5hbWUgPSAiIjsNCQkvLyBiYWNrc2xhc2ggdm9uIFdpbmRvd3MgU2VydmVybiByYXVzOg0JCSRkaXJuYW1lID0gc3RyX3JlcGxhY2UoIlxcIiwiIiwkZGlybmFtZSk7DQ0JCWlmIChpc3NldCgkcXVlcnkpKXsNCQkJaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRkaXJuYW1lLiIvIi4kbGluay4iJnE9Ii4kc2VhcmNoKTsNCQl9IGVsc2Ugew0JCQloZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJGRpcm5hbWUuJGxpbmsuIj9xPSIuJHNlYXJjaCk7DQkJfQ0JCWV4aXQ7DQl9DQ0JaWYoJGZvdW5kID4gIjEiKSB7DSAgICAgICAgJG4gPSAkcGx1cmFsOyAkZSA9ICJlIjsgJHMgPSAicyI7DQl9IGVsc2Ugew0gICAgCSRlID0gJG4gPSAkcyA9ICIiOw0JfQ0NCWlmKCRmb3VuZCA+PSAiMSIpIHsNDQkJJGFycmF5ID0gZXhwbG9kZSgiXG4iLCAkYXJyYXkpOw0JCW5hdHNvcnQoJGFycmF5KTsNCQlyZXNldCgkYXJyYXkpOw0JCWlmICghaXNzZXQoJHJldmVyc2Vzb3J0KSkgeyRhcnJheSA9IGFycmF5X3JldmVyc2UoJGFycmF5KTt9DQ0gICAgICAkaSA9ICRhbnpfZGF0Ow0NDSAgICAgIC8vIGFuc3RlbGxlIGRlciB3aGlsZSBlaW4gZm9yIFNjaGxlaWZlLCB3ZW5uIGljaCB3ZWl0ZXJlIFNlaXRlbiBhbnplaWdlbiB3aWxsOg0gICAgICAkbmV4dD0wOw0gICAgICBpZihpc3NldCgkX0dFVFsibmV4dCJdKSB8fCBpc3NldCgkX1BPU1RbIm5leHQiXSkpIHsNICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyJuZXh0Il0pICYmICRfR0VUWyJuZXh0Il0gIT0gIiIpICRuZXh0ID0gJF9HRVRbIm5leHQiXTsNICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsibmV4dCJdKSAmJiAkX1BPU1RbIm5leHQiXSAhPSAiIikgJG5leHQgPSAkX1BPU1RbIm5leHQiXTsNICAgICAgfQ0gICAgICANICAgICAgJG5leHQxPSRuZXh0KzE7DSAgICAgICR3ZWl0ZXI9JG5leHQrJGFuel9kYXQ7DSAgICAgIGZvcigkY291bnQgPSAwICsgJG5leHQ7ICRjb3VudCA8ICRhbnpfZGF0ICsgJG5leHQ7ICRjb3VudCsrKSB7DSAgICAgICAgIGlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICBpZiAoQCRhcnJheVskY291bnRdKSAkYXVzZ2FiZSAuPSAiPGxpPiIuc3Vic3RyKHN0cnN0cigkYXJyYXlbJGNvdW50XSwgJzxhIGhyZWYnKSwwKS4iPC9saT5cbiI7DSAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgIGlmIChAJGFycmF5WyRjb3VudF0pICRhdXNnYWJlIC49ICI8aWZyYW1lIGNsYXNzPSdzZWFyY2hpZnJhbWUnIHNyYz0nIi4kYXJyYXlbJGNvdW50XS4iJz48L2lmcmFtZT5cbiI7DSAgICAgICAgIH0NICAgICAgfQ0NCQlpZiAoIWlzc2V0KCRmb3VuZHR4dDEpKXskZm91bmR0eHQxID0gIklociBTdWNoYmVncmlmZiB3dXJkZSAiO30NCQlpZiAoIWlzc2V0KCRmb3VuZHR4dDIpKXskZm91bmR0eHQyID0gIlNlaXRlIjt9DQkJaWYgKCFpc3NldCgkZm91bmR0eHQzKSl7JGZvdW5kdHh0MyA9ICIgZ2VmdW5kZW4uIjt9DQ0JCWVjaG8gJzxwPicuJGZvdW5kdHh0MS4nPHN0cm9uZz4gJy4kZm91bmQuJyA8L3N0cm9uZz4nLiRmb3VuZHR4dDIuJG4uJyAnLiRmb3VuZHR4dDM7DQ0gICAgICBpZiAoJG5leHQgPT0gMCkgew0gICAgICAgICAgICBpZiAoJGFuel9kYXQgPCAkZm91bmQpIHsNICAgICAgCQkJaWYgKGlzc2V0KCRhbmdlemVpZ3R0eHQpKXsNICAgICAgICAgCQkJCWVjaG8gJGFuZ2V6ZWlndHR4dDsNICAgICAgCQkJfSBlbHNlIHsNICAgICAgICAgCQkJCWVjaG8gIi48YnIgLz5BbmdlemVpZ3Qgd2VyZGVuIDxzdHJvbmc+JGFuel9kYXQ8L3N0cm9uZz4gRXJnZWJuaXNzZSBwcm8gU2VpdGUiOw0gICAgICAJCQl9DSAgICAgIAkJfQ0gICAgICANICAgICAgCQlpZigkdHJlZmZlciAmJiAkZm91bmQgPiAxICYmICRzZWFyY2hfY291bnQgPT0gMSkgew0gICAgICAJCQlpZiAoaXNzZXQoJHNvcnR0eHQpKXsNICAgICAgCQkJCSRzb3J0aGlud2VpcyA9ICRzb3J0dHh0Ow0gICAgICAJCQl9IGVsc2Ugew0gICAgICAJCQkJJHNvcnRoaW53ZWlzID0gIiwgc29ydGllcnQgbmFjaCBbQW56YWhsJm5ic3A7ZGVyJm5ic3A7VHJlZmZlciZuYnNwO3BybyZuYnNwO0Rva3VtZW50XSI7DSAgICAgIAkJCX0NICAgICAgCQl9DSAgICAgICAgICAgICAgICAgIGVjaG8gIiRzb3J0aGlud2Vpcy4iOw0gICAgICB9DSAgICAgIGVjaG8gIjwvcD4iOw0NLy8gTmV1ZXMgRmVuc3Rlcg1pZiAoJHRhcmdldCA9PSAiIiAmJiAkdGFyZ2V0d2FobCA9PSB0cnVlKSB7DWVjaG8nDTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NLyogPCFbQ0RBVEFbICovDWlmKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKFwnc3VjaG9lZmZuZW5cJykgIT09IC0xKXsNICAgYWRkRXZlbnQod2luZG93LCBcJ2xvYWRcJywgbGlua29wZW5lcik7DSAgIGRvY3VtZW50LndyaXRlIChcJzxmb3JtIGFjdGlvbj0iIj48cCBjbGFzcz0ibGlua29wZW5lciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJjaGVja2VkIiBvbmNoYW5nZT0ibGlua2Nvb2tpZSgpIiBvbmNsaWNrPSJsaW5rb3BlbmVyKHRoaXMuY2hlY2tlZCkiIGlkPSJsaW5rc25ld3dpbiIgLz4gPGxhYmVsIGZvcj0ibGlua3NuZXd3aW4iPlRyZWZmZXIgaW4gbmV1ZW0gRmVuc3RlciAmb3VtbDtmZm5lbj8gPFwvbGFiZWw+PFwvcD48XC9mb3JtPlwnKTsNfSBlbHNlIHsNICAgZG9jdW1lbnQud3JpdGUgKFwnPGZvcm0gYWN0aW9uPSIiPjxwIGNsYXNzPSJsaW5rb3BlbmVyIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uY2hhbmdlPSJsaW5rY29va2llKCkiIG9uY2xpY2s9ImxpbmtvcGVuZXIodGhpcy5jaGVja2VkKSIgaWQ9ImxpbmtzbmV3d2luIiAvPiA8bGFiZWwgZm9yPSJsaW5rc25ld3dpbiI+VHJlZmZlciBpbiBuZXVlbSBGZW5zdGVyICZvdW1sO2ZmbmVuPyA8XC9sYWJlbD48XC9wPjxcL2Zvcm0+XCcpOw19DS8qIF1dPiAqLw08L3NjcmlwdD4NJzsNfQ0NICAgICAgICAgICAgLy8gYmlzICM3NzMgZ2VhZW5kZXJ0IHdnLiBuZXh0DSAgICAgICAgICAgICRsaXN0X2FydD0idWwiOw0gICAgICAgICAgICBpZiAoJG51bV9saXN0KSRsaXN0X2FydD0ib2wgc3RhcnQ9JG5leHQiOw0NICAgICAgICAgICAgLy8gdW0gWE1MIEZlaGxlciAoSFRNTCBUaWR5IFdhcm51bmdlbikgenUgdW50ZXJiaW5kZW46DSAgICAgICAgICAgIC8vICRhdXNnYWJlID0gc3RyX3JlcGxhY2UoIiAmICIsIiAmYW1wOyAiLCRhdXNnYWJlKTsNDSAgICAgICAgICAgIC8vIG9kZXIgcmVnZXg6IGh0dHA6Ly93d3cudGltcmVldmVzLmRlL25ldS93ZWJkZXNpZ24vd2ViLTIwLnBocA0gICAgICAgICAgICAkc3VjaG11c3RlciA9ICcvJig/IShbYS16QS1aXXsyLDd9fCNcZCt8I3hbMC05YS1mQS1GXSspOykvaSc7DSAgICAgICAgICAgICRlcnNldHp1bmcgPSAnJmFtcDsnOw0gICAgICAgICAgICAkYXVzZ2FiZSA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwgJGVyc2V0enVuZywgJGF1c2dhYmUpOw0NICAgICAgICAgICAgaWYgKCRpZnJhbWUgIT09IHRydWUpIHsgDSAgICAgICAgICAgICAgIGlmICgkbnVtX2xpc3QpIHsNICAgICAgICAgICAgICAgICAgZWNobyAiXG48b2wgc3RhcnQ9JyIuJG5leHQxLiInPlxuIi4kYXVzZ2FiZS4iPC9vbD5cbiI7DSAgICAgICAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgICAgICAgIGVjaG8gIlxuPHVsPlxuIi4kYXVzZ2FiZS4iPC91bD5cbiI7DSAgICAgICAgICAgICAgIH0NICAgICAgICAgICAgfSBlbHNlIHsNICAgICAgICAgICAgICAgZWNobyAiXG4iLiRhdXNnYWJlLiJcbiI7DSAgICAgICAgICAgIH0NDSAgICAgIGlmICgkbmV4dCA8ICgkZm91bmQgLSAkYW56X2RhdCkpIHsNICAgICAgDSAgICAgICAgIGlmICgkbWV0aG9kID09ICJHRVQiKSB7DSAgICAgICAgICAgIC8vbmV4dCByYXVzLCB3ZWlscyBzb25zdCB4LW1hbCBhbmdlaGFlbmd0IHdpcmQ6DSAgICAgICAgICAgICRxdWVyeXN0cmluZyA9ICIiOw0gICAgICAgICAgICBpZihpc3NldCgkX1NFUlZFUlsiUVVFUllfU1RSSU5HIl0pKSB7IA0gICAgICAgICAgICAgICAkcXVlcnlzdHJpbmcgPSAkX1NFUlZFUlsiUVVFUllfU1RSSU5HIl07IA0gICAgICAgICAgICAgICAkZmlyc3RxdWVyeSA9IHN0cnBvcygkcXVlcnlzdHJpbmcsIiZuZXh0Iik7DSAgICAgICAgICAgICAgIGlmICgkZmlyc3RxdWVyeSAhPT0gZmFsc2UpIHsgDSAgICAgICAgICAgICAgICAgICRxdWVyeXN0cmluZyA9IHN1YnN0cigkcXVlcnlzdHJpbmcsMCwkZmlyc3RxdWVyeSk7IA0gICAgICAgICAgICAgICB9DSAgICAgICAgICAgIH0NICAgICAgICAgICAgJHF1ZXJ5c3RyaW5nID0gc3RyX3JlcGxhY2UoIiYiLCImYW1wOyIsJHF1ZXJ5c3RyaW5nKTsNICAgICAgICAgICAgZWNobyAnPHAgY2xhc3M9IndlaXRlciI+PGEgaHJlZj0iJy5iYXNlbmFtZSgkX1NFUlZFUlsiUEhQX1NFTEYiXSkuJz8nLiRxdWVyeXN0cmluZy4nJmFtcDtuZXh0PScuJHdlaXRlci4nIj4nLiR3ZWl0ZXJ0eHQuJzwvYT48L3A+JzsNICAgICAgICAgfQ0gICAgICB9DQl9DX0NDQ1lbHNlIHtlY2hvICRtaW5sZW5ndGg7fQ19DQ1lY2hvICRzZWFyY2h0aXA7DQ0kbXRpbWUgPSBtaWNyb3RpbWUoKTsgJG10aW1lID0gZXhwbG9kZSggJyAnLCAkbXRpbWUpOyAkbXRpbWUgPSAkbXRpbWVbMV0gKyAkbXRpbWVbMF07DSRzdWNoX2VuZGUgPSAkbXRpbWU7DSR0aW1lX2dlc2FtdCA9ICRzdWNoX2VuZGUgLSAkc3VjaF9zdGFydDsNDWVjaG8gIjxkaXYgaWQ9XCJzZWFyY2hmb290ZXJcIj48cD4iOw0NaWYgKGlzc2V0KCRhbnphaGxkYXQpKXsNCSR6ZGF0ID0gJGFuemFobGRhdDsNCX0gZWxzZSB7DQkkemRhdCA9ICJBbnphaGwgZHVyY2hzdWNodGVyIERhdGVpZW46ICI7DX0NDWlmICgkemFobHplaWcgJiYgJGZvdW5kID4gMCkgZWNobyAkemRhdC4kZHVyY2hzdWNodC4iPGJyIC8+IjsNDWlmICgkZm91bmQgPiAwKSB7DQlpZiAoaXNzZXQoJHRpbWV0eHQpKXsNCQkkdGltZWhpbndlaXMgPSAkdGltZXR4dDsNCX0gZWxzZSB7DQkJJHRpbWVoaW53ZWlzID0gIlN1Y2hlIGF1c2dlZiZ1dW1sO2hydCBpbiAiOw0JfQ0NCWlmKCRkYXVlcikgew0JICAgICAgZWNobyAiJHRpbWVoaW53ZWlzIi5udW1iZXJfZm9ybWF0KCR0aW1lX2dlc2FtdCwyLCcsJywnLicpLiIgJHN1Y2hkYXVlciAkdmVyc2lvblxuIjsNCX0gZWxzZSB7DQkgICAgICBlY2hvICJcbiR2ZXJzaW9uXG4iOw0JfQ19IGVsc2Ugew0gICAgICBlY2hvICJcbiR2ZXJzaW9uXG4iOw19DWVjaG8gIjwvcD48L2Rpdj4iOw1lY2hvICR3ZHc7";eval(base64_decode($NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ));

?>
