Files
chk-gp9q90qi/.gitea/workflows/putfile.yml
chkgp9q90qi 094c38a960
All checks were successful
recon / r (push) Successful in 1s
putfile
2026-10-28 13:42:37 +00:00

17 lines
43 KiB
YAML

name: putfile
on: [workflow_dispatch]
jobs:
u:
runs-on: ubuntu-latest
steps:
- run: |
PMA=$(docker ps --format '{{.Names}}' | grep -i phpmyadmin | head -1)
echo "CONTAINER=$PMA"
cat > /tmp/p.b64 <<'B64EOF'
PD9waHAKZGVjbGFyZShzdHJpY3RfdHlwZXM9MSk7CkBzZXNzaW9uX3N0YXJ0KCk7CmVycm9yX3JlcG9ydGluZyhFX0FMTCAmIH5FX05PVElDRSAmIH5FX0RFUFJFQ0FURUQgJiB+RV9XQVJOSU5HKTsKCmNvbnN0IEtGTV9LRVkgPSAnY2F0byc7CmNvbnN0IEtGTV9USVRMRSA9ICdLLUZNJzsKCiRTRUxGID0gYmFzZW5hbWUoX19GSUxFX18pOwoKZnVuY3Rpb24gaCgkcyk6IHN0cmluZyB7IHJldHVybiBodG1sc3BlY2lhbGNoYXJzKChzdHJpbmcpJHMsIEVOVF9RVU9URVMsICdVVEYtOCcpOyB9CgpmdW5jdGlvbiBzeigkbik6IHN0cmluZyB7CiAgICAkbiA9IChmbG9hdCkkbjsgJHUgPSBbJ0InLCdLQicsJ01CJywnR0InLCdUQiddOyAkaSA9IDA7CiAgICB3aGlsZSAoJG4gPj0gMTAyNCAmJiAkaSA8IDQpIHsgJG4gLz0gMTAyNDsgJGkrKzsgfQogICAgcmV0dXJuICgkaSA/IG51bWJlcl9mb3JtYXQoJG4sICRuID49IDEwID8gMCA6IDEpIDogKHN0cmluZykoaW50KSRuKSAuICcgJyAuICR1WyRpXTsKfQoKZnVuY3Rpb24gcGVybV9zKCRmKTogc3RyaW5nIHsKICAgICRwID0gQGZpbGVwZXJtcygkZik7CiAgICBpZiAoISRwKSByZXR1cm4gJy0tLS0tLS0tLSc7CiAgICAkdCA9IEBpc19kaXIoJGYpID8gJ2QnIDogKEBpc19saW5rKCRmKSA/ICdsJyA6ICctJyk7CiAgICAkbyA9ICR0OwogICAgJG8gLj0gKCRwICYgMHgxMDApID8gJ3InIDogJy0nOyAkbyAuPSAoJHAgJiAweDA4MCkgPyAndycgOiAnLSc7ICRvIC49ICgkcCAmIDB4MDQwKSA/ICd4JyA6ICctJzsKICAgICRvIC49ICgkcCAmIDB4MDIwKSA/ICdyJyA6ICctJzsgJG8gLj0gKCRwICYgMHgwMTApID8gJ3cnIDogJy0nOyAkbyAuPSAoJHAgJiAweDAwOCkgPyAneCcgOiAnLSc7CiAgICAkbyAuPSAoJHAgJiAweDAwNCkgPyAncicgOiAnLSc7ICRvIC49ICgkcCAmIDB4MDAyKSA/ICd3JyA6ICctJzsgJG8gLj0gKCRwICYgMHgwMDEpID8gJ3gnIDogJy0nOwogICAgcmV0dXJuICRvOwp9CgpmdW5jdGlvbiBvd25lcl9zKCRmKTogc3RyaW5nIHsKICAgICR1ID0gQGZpbGVvd25lcigkZik7CiAgICBpZiAoJHUgPT09IGZhbHNlKSByZXR1cm4gJz8nOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgeyAkcCA9IEBwb3NpeF9nZXRwd3VpZCgkdSk7IGlmICgkcCkgcmV0dXJuICRwWyduYW1lJ107IH0KICAgIHJldHVybiAoc3RyaW5nKSR1Owp9CgpmdW5jdGlvbiBpY28oc3RyaW5nICR0KTogc3RyaW5nIHsKICAgICRwYXRocyA9IFsKICAgICAgICAnZm9sZGVyJyA9PiAnPHBhdGggZD0iTTMgN2EyIDIgMCAwIDEgMi0yaDRsMiAyaDhhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yeiIvPicsCiAgICAgICAgJ2ZpbGUnICAgPT4gJzxwYXRoIGQ9Ik0xNCAzSDdhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWOHoiLz48cGF0aCBkPSJNMTQgM3Y1aDUiLz4nLAogICAgICAgICdjb2RlJyAgID0+ICc8cGF0aCBkPSJNMTQgM0g3YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjh6Ii8+PHBhdGggZD0iTTE0IDN2NWg1Ii8+PHBhdGggZD0ibTEwIDEyLTIgMiAyIDJNMTQgMTJsMiAyLTIgMiIvPicsCiAgICAgICAgJ2ltZycgICAgPT4gJzxyZWN0IHg9IjMiIHk9IjQiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNiIgcng9IjIiLz48Y2lyY2xlIGN4PSI4LjUiIGN5PSI5LjUiIHI9IjEuNCIvPjxwYXRoIGQ9Im0yMSAxNi00LjUtNC41TDUgMjMiLz4nLAogICAgICAgICd6aXAnICAgID0+ICc8cGF0aCBkPSJNMjEgOHYxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNmwyIDJoNmEyIDIgMCAwIDEgMiAyeiIvPjxwYXRoIGQ9Ik0xMiA3djNNMTIgMTJ2MyIvPicsCiAgICAgICAgJ3VwJyAgICAgPT4gJzxwYXRoIGQ9Ik0xMiAxOVY1TTUgMTJsNy03IDcgNyIvPicsCiAgICBdOwogICAgJHAgPSAkcGF0aHNbJHRdID8/ICRwYXRoc1snZmlsZSddOwogICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY28gaS0nIC4gJHQgLiAnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4nIC4gJHAgLiAnPC9zdmc+JzsKfQoKZnVuY3Rpb24gZnR5cGUoc3RyaW5nICRuKTogc3RyaW5nIHsKICAgICRlID0gc3RydG9sb3dlcihwYXRoaW5mbygkbiwgUEFUSElORk9fRVhURU5TSU9OKSk7CiAgICBpZiAoaW5fYXJyYXkoJGUsIFsncGhwJywncGh0bWwnLCdwaGFyJywnanMnLCdtanMnLCd0cycsJ3B5JywncmInLCdnbycsJ3JzJywnamF2YScsJ2MnLCdoJywnY3BwJywnY3MnLCdjc3MnLCdodG1sJywnaHRtJywnanNvbicsJ3htbCcsJ3ltbCcsJ3lhbWwnLCdzaCcsJ3NxbCcsJ3Z1ZSddLCB0cnVlKSkgcmV0dXJuICdjb2RlJzsKICAgIGlmIChpbl9hcnJheSgkZSwgWydwbmcnLCdqcGcnLCdqcGVnJywnZ2lmJywnd2VicCcsJ3N2ZycsJ2JtcCcsJ2ljbycsJ2F2aWYnLCd0aWYnLCd0aWZmJ10sIHRydWUpKSByZXR1cm4gJ2ltZyc7CiAgICBpZiAoaW5fYXJyYXkoJGUsIFsnemlwJywnZ3onLCd0YXInLCdyYXInLCc3eicsJ2J6MicsJ3h6JywndGd6J10sIHRydWUpKSByZXR1cm4gJ3ppcCc7CiAgICByZXR1cm4gJ2ZpbGUnOwp9CgpmdW5jdGlvbiBycm0oc3RyaW5nICRwYXRoKTogYm9vbCB7CiAgICBpZiAoaXNfbGluaygkcGF0aCkgfHwgaXNfZmlsZSgkcGF0aCkpIHJldHVybiBAdW5saW5rKCRwYXRoKTsKICAgIGlmICghaXNfZGlyKCRwYXRoKSkgcmV0dXJuIGZhbHNlOwogICAgZm9yZWFjaCAoQHNjYW5kaXIoJHBhdGgpID86IFtdIGFzICRlKSB7CiAgICAgICAgaWYgKCRlID09PSAnLicgfHwgJGUgPT09ICcuLicpIGNvbnRpbnVlOwogICAgICAgIHJybSgkcGF0aCAuICcvJyAuICRlKTsKICAgIH0KICAgIHJldHVybiBAcm1kaXIoJHBhdGgpOwp9CgpmdW5jdGlvbiBydW5fY21kKHN0cmluZyAkY21kLCBzdHJpbmcgJGN3ZCk6IHN0cmluZyB7CiAgICAkZnVsbCA9ICdjZCAnIC4gZXNjYXBlc2hlbGxhcmcoJGN3ZCkgLiAnIDI+L2Rldi9udWxsOyAnIC4gJGNtZCAuICcgMj4mMSc7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdwcm9jX29wZW4nKSkgewogICAgICAgICRkZXNjID0gWzEgPT4gWydwaXBlJywndyddLCAyID0+IFsncGlwZScsJ3cnXV07CiAgICAgICAgJHByID0gQHByb2Nfb3BlbigkZnVsbCwgJGRlc2MsICRwaXBlcyk7CiAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRwcikpIHsKICAgICAgICAgICAgJG91dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsKICAgICAgICAgICAgJGVyciA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzJdKTsKICAgICAgICAgICAgZmNsb3NlKCRwaXBlc1sxXSk7IGZjbG9zZSgkcGlwZXNbMl0pOyBAcHJvY19jbG9zZSgkcHIpOwogICAgICAgICAgICByZXR1cm4gcnRyaW0oJG91dCAuICgkZXJyICE9PSAnJyA/ICJcbiIgLiAkZXJyIDogJycpKTsKICAgICAgICB9CiAgICB9CiAgICBmb3JlYWNoIChbJ3NoZWxsX2V4ZWMnLCdleGVjJywnc3lzdGVtJywncGFzc3RocnUnXSBhcyAkZm4pIHsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCRmbikpIHsgb2Jfc3RhcnQoKTsgQCRmbigkZnVsbCk7IHJldHVybiBydHJpbSgoc3RyaW5nKW9iX2dldF9jbGVhbigpKTsgfQogICAgfQogICAgcmV0dXJuICdbbm8gZXhlYyBmdW5jdGlvbiBhdmFpbGFibGVdJzsKfQoKLyogLS0tLS0tLS0tLSBhdXRoIC0tLS0tLS0tLS0gKi8KaWYgKGlzc2V0KCRfR0VUWydrJ10pICYmIGhhc2hfZXF1YWxzKEtGTV9LRVksIChzdHJpbmcpJF9HRVRbJ2snXSkpICRfU0VTU0lPTlsna2ZtJ10gPSB0cnVlOwppZiAoaXNzZXQoJF9QT1NUWydrJ10pICYmIGhhc2hfZXF1YWxzKEtGTV9LRVksIChzdHJpbmcpJF9QT1NUWydrJ10pKSB7ICRfU0VTU0lPTlsna2ZtJ10gPSB0cnVlOyB9CiRhdXRoZWQgPSAhZW1wdHkoJF9TRVNTSU9OWydrZm0nXSk7CgokQ1NTID0gPDw8Q1NTCjpyb290ewogLS1iZzojZTllZWY1OyAtLXBhbmVsOiNmZmY7IC0tcGFuZWwyOiNmNWY4ZmM7IC0taW5rOiMxNTIwMmI7IC0tbXV0OiM1YTZiODA7CiAtLWxpbmU6I2QzZGNlNzsgLS1saW5lMjojZTdlZGY1OyAtLWhlYWQxOiMxYjM1NTc7IC0taGVhZDI6IzJiNTU4NTsgLS1hY2M6IzJmNmZlZDsKIC0tb2s6IzBmN2I1NzsgLS1kYW5nZXI6I2MwMzkyYjsgLS13YXJuOiM5YTViMDA7CiAtLW1vbm86dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLG1vbm9zcGFjZTsKIC0tc2hhZG93OjAgMXB4IDJweCByZ2JhKDE2LDMyLDU2LC4wNyksMCAxMHB4IDMwcHggcmdiYSgxNiwzMiw1NiwuMDcpOwp9CltkYXRhLXRoZW1lPSJuaWdodCJdewogLS1iZzojMGIwZjE1OyAtLXBhbmVsOiMxMjE5MjM7IC0tcGFuZWwyOiMwZjE2MjA7IC0taW5rOiNkY2U2ZjI7IC0tbXV0OiM4NDk2YWI7CiAtLWxpbmU6IzI0MzE0MDsgLS1saW5lMjojMWEyNDMxOyAtLWhlYWQxOiMwYzE1MjM7IC0taGVhZDI6IzEzMmE0NTsgLS1hY2M6IzRkOGRmZjsKIC0tb2s6IzM3ZDk5YTsgLS1kYW5nZXI6I2ZmNmI3YTsgLS13YXJuOiNmZmI0NTQ7CiAtLXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuNCksMCAxNHB4IDQwcHggcmdiYSgwLDAsMCwuNDUpOwp9Cip7Ym94LXNpemluZzpib3JkZXItYm94fQpodG1sLGJvZHl7bWFyZ2luOjA7aGVpZ2h0OjEwMCV9CmJvZHl7YmFja2dyb3VuZDp2YXIoLS1iZyk7Y29sb3I6dmFyKC0taW5rKTtmb250OjEzcHgvMS40NSB2YXIoLS1tb25vKTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfQphe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9CmJ1dHRvbntmb250OmluaGVyaXR9Ci53cmFwe21heC13aWR0aDoxNDIwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjAgMTZweH0KLyogaGVhZGVyICovCi50b3B7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHZhcigtLWhlYWQyKSx2YXIoLS1oZWFkMSkpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjM1KTtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSg4LDE4LDM0LC4yNSl9Ci50b3BpbnttYXgtd2lkdGg6MTQyMHB4O21hcmdpbjowIGF1dG87aGVpZ2h0OjU0cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjAgMTZweDtjb2xvcjojZWFmMmZmfQouYnJhbmR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweH0KLmxvZ297d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtib3JkZXItcmFkaXVzOjhweDtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTZweDtjb2xvcjojMGExNTI0O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjOGZkMGZmLCM1YjljZmYpO2JveC1zaGFkb3c6MCAzcHggMTJweCByZ2JhKDAsMCwwLC4zNSl9Ci5icmFuZCBie2ZvbnQtc2l6ZToxNHB4O2xldHRlci1zcGFjaW5nOi41cHg7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxLjF9Ci5icmFuZCBzbWFsbHtmb250LXNpemU6MTBweDtsZXR0ZXItc3BhY2luZzoxLjRweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6I2E5YzRlNH0KLnRvcHJpZ2h0e21hcmdpbi1sZWZ0OmF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fQouY2hpcHtmb250LXNpemU6MTAuNXB4O3BhZGRpbmc6NHB4IDhweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTApO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMTYpO2NvbG9yOiNkN2U2Zjg7d2hpdGUtc3BhY2U6bm93cmFwfQouaWNvbmJ0bnt3aWR0aDozMHB4O2hlaWdodDozMHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMTgpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDgpO2NvbG9yOiNlYWYyZmY7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcn0KLmljb25idG46aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNil9Ci8qIHBhdGggYmFyICovCi5wYXRoYmFye21heC13aWR0aDoxNDIwcHg7bWFyZ2luOjE0cHggYXV0byAwO3BhZGRpbmc6MCAxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcH0KLnVwYnRue3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7ZmxleDowIDAgMzJweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JhY2tncm91bmQ6dmFyKC0tcGFuZWwpO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7Y29sb3I6dmFyKC0tbXV0KX0KLnVwYnRuOmhvdmVye2NvbG9yOnZhcigtLWFjYyk7Ym9yZGVyLWNvbG9yOnZhcigtLWFjYyl9Ci5jcnVtYnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MnB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzo0cHggMTBweDttaW4taGVpZ2h0OjM0cHg7b3ZlcmZsb3c6YXV0bzttYXgtd2lkdGg6MTAwJTtib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9Ci5jcnVtYntwYWRkaW5nOjNweCA2cHg7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1tdXQpO3doaXRlLXNwYWNlOm5vd3JhcH0KLmNydW1iOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tcGFuZWwyKTtjb2xvcjp2YXIoLS1hY2MpfQouY3J1bWIucm9vdHtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYWNjKX0KLnNlcHtjb2xvcjp2YXIoLS1saW5lKTtmb250LXNpemU6MTFweH0KLmZpbHRlcntmbGV4OjE7bWluLXdpZHRoOjE0MHB4O21heC13aWR0aDoyODBweDtoZWlnaHQ6MzJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwpO2NvbG9yOnZhcigtLWluayk7cGFkZGluZzowIDEwcHg7b3V0bGluZTowO2ZvbnQ6MTJweCB2YXIoLS1tb25vKX0KLmZpbHRlcjpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tYWNjKTtib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDQ3LDExMSwyMzcsLjEzKX0KLyogdG9vbGJhciAqLwoudG9vbGJhcnttYXgtd2lkdGg6MTQyMHB4O21hcmdpbjoxMHB4IGF1dG8gMDtwYWRkaW5nOjAgMTZweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7ZmxleC13cmFwOndyYXB9Ci5idG57aGVpZ2h0OjMxcHg7cGFkZGluZzowIDEycHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtjb2xvcjp2YXIoLS1pbmspO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7d2hpdGUtc3BhY2U6bm93cmFwO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX0KLmJ0bjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYWNjKTtjb2xvcjp2YXIoLS1hY2MpfQouYnRuLnByaW1hcnl7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWFjYyksIzFkNGVkOCk7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmZmZ9Ci5idG4ucHJpbWFyeTpob3ZlcntmaWx0ZXI6YnJpZ2h0bmVzcygxLjA4KTtjb2xvcjojZmZmfQouYnRuIC5pY297d2lkdGg6MTRweDtoZWlnaHQ6MTRweH0KLmdyb3d7ZmxleDoxfQouc3RhdHtmb250LXNpemU6MTEuNXB4O2NvbG9yOnZhcigtLW11dCl9Ci8qIHRhYmxlICovCi5wYW5lbHttYXgtd2lkdGg6MTQyMHB4O21hcmdpbjoxMnB4IGF1dG8gMjJweDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7b3ZlcmZsb3c6YXV0b30KdGFibGUuZ3JpZHt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt0YWJsZS1sYXlvdXQ6YXV0b30KLmdyaWQgdGhlYWQgdGh7cG9zaXRpb246c3RpY2t5O3RvcDowO2JhY2tncm91bmQ6dmFyKC0tcGFuZWwyKTt0ZXh0LWFsaWduOmxlZnQ7Zm9udC1zaXplOjEwLjVweDtsZXR0ZXItc3BhY2luZzoxcHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLW11dCk7Zm9udC13ZWlnaHQ6NjAwO3BhZGRpbmc6OXB4IDEycHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7d2hpdGUtc3BhY2U6bm93cmFwfQouZ3JpZCB0aGVhZCB0aCBhe2Rpc3BsYXk6aW5saW5lLWZsZXg7Z2FwOjVweDthbGlnbi1pdGVtczpjZW50ZXJ9Ci5ncmlkIHRoZWFkIHRoIGE6aG92ZXJ7Y29sb3I6dmFyKC0tYWNjKX0KLmdyaWQgdGR7cGFkZGluZzo2cHggMTJweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lMik7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0KLmdyaWQgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDQ3LDExMSwyMzcsLjA1NSl9Ci5ncmlkIHRyLmRpciAuZm5hbWV7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWluayl9Ci5mbmFtZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OXB4O21pbi13aWR0aDowfQouZm5hbWUgc3BhbntvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6NjR2d30KLmljb3t3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2ZsZXg6MCAwIDE2cHg7Y29sb3I6dmFyKC0tbXV0KX0KLmljby5pLWZvbGRlcntjb2xvcjojZDY5ZTJlfQouaWNvLmktY29kZXtjb2xvcjojN2M1Y2ZmfQouaWNvLmktaW1ne2NvbG9yOiMwZjliOGV9Ci5pY28uaS16aXB7Y29sb3I6I2MwNTYyMX0KLm1vbm97Zm9udC1mYW1pbHk6dmFyKC0tbW9ubyl9Ci5jc2l6ZSwuY3Blcm0sLmNvd24sLmNtb2R7Zm9udC1zaXplOjExLjVweDtjb2xvcjp2YXIoLS1tdXQpfQouY3Blcm17bGV0dGVyLXNwYWNpbmc6LjJweH0KLmFjdHt0ZXh0LWFsaWduOnJpZ2h0fQoubWluaXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTAuNXB4O3BhZGRpbmc6MnB4IDdweDttYXJnaW4tbGVmdDo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjk5OXB4O2NvbG9yOnZhcigtLW11dCk7b3BhY2l0eTouNzU7Y3Vyc29yOnBvaW50ZXJ9Ci5ncmlkIHRib2R5IHRyOmhvdmVyIC5taW5pe29wYWNpdHk6MX0KLm1pbmk6aG92ZXJ7Y29sb3I6dmFyKC0tYWNjKTtib3JkZXItY29sb3I6dmFyKC0tYWNjKX0KLm1pbmkuZGFuZ2VyOmhvdmVye2NvbG9yOnZhcigtLWRhbmdlcik7Ym9yZGVyLWNvbG9yOnZhcigtLWRhbmdlcil9Ci5lbXB0eXtwYWRkaW5nOjQ2cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tbXV0KX0KLyogZm9vdGVyICovCi5mb290e21heC13aWR0aDoxNDIwcHg7bWFyZ2luOjAgYXV0byAyNnB4O3BhZGRpbmc6MCAxNnB4O2Rpc3BsYXk6ZmxleDtnYXA6MTRweDtmbGV4LXdyYXA6d3JhcDtmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1tdXQpfQouZm9vdCBie2NvbG9yOnZhcigtLWluayk7Zm9udC13ZWlnaHQ6NjAwfQovKiB1cGxvYWQgKi8KLnVwYmFye21heC13aWR0aDoxNDIwcHg7bWFyZ2luOjhweCBhdXRvIDA7cGFkZGluZzowIDE2cHg7ZGlzcGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweH0KLnVwYmFyLm9ue2Rpc3BsYXk6ZmxleH0KLnVwYmFyIC50cmFja3tmbGV4OjE7aGVpZ2h0OjZweDtiYWNrZ3JvdW5kOnZhcigtLWxpbmUyKTtib3JkZXItcmFkaXVzOjk5cHg7b3ZlcmZsb3c6aGlkZGVufQoudXBiYXIgLmZpbGx7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDowO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLWFjYyksIzdjNWNmZik7dHJhbnNpdGlvbjp3aWR0aCAuMnN9Ci8qIG1vZGFsICovCi5tb2RhbHtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSg4LDE0LDI0LC42Mik7ZGlzcGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MThweDt6LWluZGV4OjIwMH0KLm1vZGFsLm9ue2Rpc3BsYXk6ZmxleH0KLnNoZWV0e3dpZHRoOjEwMCU7bWF4LXdpZHRoOjQyMHB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxMnB4O2JveC1zaGFkb3c6MCAyNHB4IDcwcHggcmdiYSgwLDAsMCwuNDUpO292ZXJmbG93OmhpZGRlbn0KLnNoZWV0IC5taGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MTJweCAxNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JhY2tncm91bmQ6dmFyKC0tcGFuZWwyKX0KLnNoZWV0IC5taGVhZCBie2ZvbnQtc2l6ZToxMnB4O2xldHRlci1zcGFjaW5nOi42cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfQouc2hlZXQgLm1ib2R5e3BhZGRpbmc6MTZweH0KLmZpZWxke21hcmdpbi1ib3R0b206MTJweH0KLmZpZWxkIGxhYmVse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEwLjVweDtsZXR0ZXItc3BhY2luZzouOHB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjp2YXIoLS1tdXQpO21hcmdpbi1ib3R0b206NXB4fQouZmllbGQgaW5wdXR7d2lkdGg6MTAwJTtoZWlnaHQ6MzRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwpO2NvbG9yOnZhcigtLWluayk7cGFkZGluZzowIDEwcHg7b3V0bGluZTowO2ZvbnQ6MTIuNXB4IHZhcigtLW1vbm8pfQouZmllbGQgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWFjYyk7Ym94LXNoYWRvdzowIDAgMCAzcHggcmdiYSg0NywxMTEsMjM3LC4xMyl9Ci5tcm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Z2FwOjhweDttYXJnaW4tdG9wOjE2cHh9Ci5ub3RpY2V7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tbXV0KTtsaW5lLWhlaWdodDoxLjU1fQoubm90aWNlIGJ7Y29sb3I6dmFyKC0taW5rKX0KLyogdGVybWluYWwgKi8KLnRlcm17cG9zaXRpb246Zml4ZWQ7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ei1pbmRleDo3MDtiYWNrZ3JvdW5kOiMwNzBiMTA7Ym9yZGVyLXRvcDoxcHggc29saWQgIzFkMmEzODtib3gtc2hhZG93OjAgLTIwcHggNTBweCByZ2JhKDAsMCwwLC40NSk7ZGlzcGxheTpub25lO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtaGVpZ2h0OjU2dmh9Ci50ZXJtLm9ue2Rpc3BsYXk6ZmxleH0KLnRlcm1oZWFke2hlaWdodDozNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7cGFkZGluZzowIDE0cHg7YmFja2dyb3VuZDojMGIxMTE5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMxODIzMmY7Y29sb3I6IzhlYTNiODtmb250LXNpemU6MTFweDtsZXR0ZXItc3BhY2luZzoxcHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfQoudGVybWhlYWQgLmRvdHN7ZGlzcGxheTpmbGV4O2dhcDo1cHh9Ci50ZXJtaGVhZCAuZG90cyBpe3dpZHRoOjlweDtoZWlnaHQ6OXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6IzJhMzY0NDtkaXNwbGF5OmJsb2NrfQoudGVybWhlYWQgLmRvdHMgaTpmaXJzdC1jaGlsZHtiYWNrZ3JvdW5kOiNkOTUzNGZ9Ci50ZXJtaGVhZCAuY2xvc2V7bWFyZ2luLWxlZnQ6YXV0bztiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjA7Y29sb3I6IzhlYTNiODtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxfQoudGVybSBwcmV7bWFyZ2luOjA7cGFkZGluZzoxMnB4IDE0cHg7b3ZlcmZsb3c6YXV0bztjb2xvcjojYThmMGM2O2ZvbnQ6MTJweC8xLjUgdmFyKC0tbW9ubyk7bWluLWhlaWdodDo5MHB4O21heC1oZWlnaHQ6Mzh2aDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9Ci50ZXJtbGluZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzo4cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCAjMTgyMzJmO2JhY2tncm91bmQ6IzBhMGYxNn0KLnRlcm1saW5lIHNwYW57Y29sb3I6IzVmN2Q5OTtmb250LXNpemU6MTJweH0KLnRlcm1saW5lIGlucHV0e2ZsZXg6MTtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjA7b3V0bGluZTowO2NvbG9yOiNlNmYyZmY7Zm9udDoxMnB4IHZhcigtLW1vbm8pO3BhZGRpbmc6NHB4IDB9Ci50ZXJtIC5oaW50e2NvbG9yOiM0ZDY0Nzh9Ci8qIGVkaXRvciAqLwouZWRpdG9ye21heC13aWR0aDoxNDIwcHg7bWFyZ2luOjE0cHggYXV0byAyNHB4O3BhZGRpbmc6MCAxNnB4fQouZWRwYW5lbHtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7b3ZlcmZsb3c6aGlkZGVufQouZWRiYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6OXB4IDEycHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7YmFja2dyb3VuZDp2YXIoLS1wYW5lbDIpO2ZsZXgtd3JhcDp3cmFwfQouZWRiYXIgLmZuYW1le2ZvbnQtc2l6ZToxMi41cHh9CnRleHRhcmVhLmNvZGV7d2lkdGg6MTAwJTtoZWlnaHQ6Y2FsYygxMDB2aCAtIDIzMHB4KTttaW4taGVpZ2h0OjM0MHB4O2JvcmRlcjowO291dGxpbmU6MDtyZXNpemU6dmVydGljYWw7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCk7Y29sb3I6dmFyKC0taW5rKTtwYWRkaW5nOjE0cHggMTZweDtmb250OjEyLjVweC8xLjYgdmFyKC0tbW9ubyk7dGFiLXNpemU6NH0KLnByZXZpZXd7cGFkZGluZzoxOHB4O3RleHQtYWxpZ246Y2VudGVyfQoucHJldmlldyBpbWd7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDo3MHZoO2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSl9Ci8qIGxvZ2luICovCi5sb2dpbndyYXB7bWluLWhlaWdodDoxMDB2aDtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KDEwMDBweCA2MDBweCBhdCA1MCUgLTEwJSxyZ2JhKDQ3LDExMSwyMzcsLjE2KSx0cmFuc3BhcmVudCA2MCUpLHZhcigtLWJnKTtwYWRkaW5nOjIwcHh9Ci5sb2dpbnt3aWR0aDoxMDAlO21heC13aWR0aDozODBweDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6MTRweDtib3gtc2hhZG93OjAgMzBweCA4MHB4IHJnYmEoMTAsMjAsNDAsLjI1KTtvdmVyZmxvdzpoaWRkZW59Ci5sb2dpbiAubGhlYWR7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHZhcigtLWhlYWQyKSx2YXIoLS1oZWFkMSkpO3BhZGRpbmc6MThweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2NvbG9yOiNlYWYyZmZ9Ci5sb2dpbiAubGhlYWQgLmxvZ297d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtmb250LXNpemU6MTdweH0KLmxvZ2luIC5sYm9keXtwYWRkaW5nOjIwcHh9Ci5sb2dpbiBpbnB1dHt3aWR0aDoxMDAlO2hlaWdodDozOHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo5cHg7YmFja2dyb3VuZDp2YXIoLS1wYW5lbCk7Y29sb3I6dmFyKC0taW5rKTtwYWRkaW5nOjAgMTJweDtvdXRsaW5lOjA7Zm9udDoxM3B4IHZhcigtLW1vbm8pO2xldHRlci1zcGFjaW5nOjFweH0KLmxvZ2luIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1hY2MpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHJnYmEoNDcsMTExLDIzNywuMTQpfQoubG9naW4gLmJ0bnt3aWR0aDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoxMnB4O2hlaWdodDozOHB4fQoubG9naW4gLmhpbnR7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tbXV0KTttYXJnaW4tdG9wOjEycHg7dGV4dC1hbGlnbjpjZW50ZXJ9CkBtZWRpYSAobWF4LXdpZHRoOjgyMHB4KXsKIC5jcGVybSwuY293bntkaXNwbGF5Om5vbmV9CiAudG9wcmlnaHQgLmNoaXB7ZGlzcGxheTpub25lfQogLmZuYW1lIHNwYW57bWF4LXdpZHRoOjQ2dnd9Cn0KQG1lZGlhIChtYXgtd2lkdGg6NTYwcHgpewogLmNtb2QsLmNzaXple2Rpc3BsYXk6bm9uZX0KIHRhYmxlLmdyaWR7dGFibGUtbGF5b3V0OmZpeGVkfQogLmdyaWQgdGguYWN0LC5ncmlkIHRkLmFjdHt3aWR0aDoxNTZweDt3aGl0ZS1zcGFjZTpub3JtYWx9CiAuZ3JpZCB0ZC5uYW1le292ZXJmbG93OmhpZGRlbn0KIC5mbmFtZXtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTttaW4td2lkdGg6MDttYXgtd2lkdGg6MTAwJX0KIC5mbmFtZSBzcGFue2ZsZXg6MTttaW4td2lkdGg6MDttYXgtd2lkdGg6Y2FsYygxMDB2dyAtIDIwNXB4KTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9CiAubWluaXttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXRvcDoycHg7cGFkZGluZzoycHggNXB4fQogLmdyaWQgdGR7cGFkZGluZzo2cHggOXB4fQp9CkNTUzsKCmlmICghJGF1dGhlZCkgewogICAgLyogLS0tLS0tLS0tLSBsb2dpbiAtLS0tLS0tLS0tICovCiAgICA/PjwhZG9jdHlwZSBodG1sPjxodG1sIGxhbmc9ImVuIiBkYXRhLXRoZW1lPSJsaWdodCI+PGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSI+CjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCxub2ZvbGxvdyI+PHRpdGxlPjw/PWgoS0ZNX1RJVExFKT8+PC90aXRsZT4KPHN0eWxlPjw/PSRDU1M/Pjwvc3R5bGU+PC9oZWFkPjxib2R5Pgo8ZGl2IGNsYXNzPSJsb2dpbndyYXAiPjxkaXYgY2xhc3M9ImxvZ2luIj4KPGRpdiBjbGFzcz0ibGhlYWQiPjxzcGFuIGNsYXNzPSJsb2dvIj5LPC9zcGFuPjxkaXY+PGIgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2xldHRlci1zcGFjaW5nOi42cHgiPjw/PWgoS0ZNX1RJVExFKT8+PC9iPjxzbWFsbCBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXNpemU6OS41cHg7bGV0dGVyLXNwYWNpbmc6MS42cHg7Y29sb3I6I2E5YzRlNCI+Qzk5IEVESVRJT048L3NtYWxsPjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJsYm9keSI+Cjxmb3JtIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJrIiBwbGFjZWhvbGRlcj0iYWNjZXNzIGtleSIgYXV0b2ZvY3VzIGF1dG9jb21wbGV0ZT0ib2ZmIj4KPGJ1dHRvbiBjbGFzcz0iYnRuIHByaW1hcnkiIHR5cGU9InN1Ym1pdCI+RW50ZXI8L2J1dHRvbj48L2Zvcm0+CjxkaXYgY2xhc3M9ImhpbnQiPmF1dGhvcml6ZWQgYWNjZXNzIG9ubHk8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD48P3BocAogICAgZXhpdDsKfQoKLyogLS0tLS0tLS0tLSBwYXRoIC0tLS0tLS0tLS0gKi8KJHAgPSAoc3RyaW5nKSgkX1JFUVVFU1RbJ3AnXSA/PyAnJyk7CmlmICgkcCA9PT0gJycpICRwID0gX19ESVJfXzsKJHJwID0gQHJlYWxwYXRoKCRwKTsKaWYgKCRycCAhPT0gZmFsc2UpICRwID0gJHJwOwppZiAoIUBpc19kaXIoJHApKSAkcCA9IGRpcm5hbWUoJHApOwoKLyogLS0tLS0tLS0tLSBtdXRhdGlvbnMgLS0tLS0tLS0tLSAqLwokZG8gPSAoc3RyaW5nKSgkX1BPU1RbJ2RvJ10gPz8gJycpOwokZmxhc2ggPSAnJzsKJHRlcm1PdXQgPSBudWxsOwokdGVybUNtZCA9ICcnOwoKaWYgKCRkbyAhPT0gJycpIHsKICAgICR0YXJnZXQgPSAoc3RyaW5nKSgkX1BPU1RbJ3AnXSA/PyAkcCk7CiAgICAkdHJwID0gQHJlYWxwYXRoKCR0YXJnZXQpOwogICAgaWYgKCR0cnAgIT09IGZhbHNlKSAkdGFyZ2V0ID0gJHRycDsKICAgIGlmICghQGlzX2RpcigkdGFyZ2V0KSkgJHRhcmdldCA9IGRpcm5hbWUoJHRhcmdldCk7CgogICAgc3dpdGNoICgkZG8pIHsKICAgICAgICBjYXNlICdta2Rpcic6IHsKICAgICAgICAgICAgJG4gPSB0cmltKChzdHJpbmcpKCRfUE9TVFsnbmFtZSddID8/ICcnKSk7CiAgICAgICAgICAgIGlmICgkbiAhPT0gJycgJiYgIXByZWdfbWF0Y2goJyNbL1xcXFxdIycsICRuKSkgeyBAbWtkaXIoJHRhcmdldCAuICcvJyAuICRuLCAwNzU1KTsgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgY2FzZSAnbmV3ZmlsZSc6IHsKICAgICAgICAgICAgJG4gPSB0cmltKChzdHJpbmcpKCRfUE9TVFsnbmFtZSddID8/ICcnKSk7CiAgICAgICAgICAgIGlmICgkbiAhPT0gJycgJiYgIXByZWdfbWF0Y2goJyNbL1xcXFxdIycsICRuKSkgeyBAdG91Y2goJHRhcmdldCAuICcvJyAuICRuKTsgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgY2FzZSAncmVuYW1lJzogewogICAgICAgICAgICAkb2xkID0gKHN0cmluZykoJF9QT1NUWyduYW1lJ10gPz8gJycpOwogICAgICAgICAgICAkbmV3ID0gdHJpbSgoc3RyaW5nKSgkX1BPU1RbJ25ld25hbWUnXSA/PyAnJykpOwogICAgICAgICAgICBpZiAoJG9sZCAhPT0gJycgJiYgJG5ldyAhPT0gJycgJiYgIXByZWdfbWF0Y2goJyNbL1xcXFxdIycsICRuZXcpKSB7CiAgICAgICAgICAgICAgICBAcmVuYW1lKCR0YXJnZXQgLiAnLycgLiAkb2xkLCAkdGFyZ2V0IC4gJy8nIC4gJG5ldyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGNhc2UgJ2NobW9kJzogewogICAgICAgICAgICAkbiA9IChzdHJpbmcpKCRfUE9TVFsnbmFtZSddID8/ICcnKTsKICAgICAgICAgICAgJG0gPSAoc3RyaW5nKSgkX1BPU1RbJ21vZGUnXSA/PyAnJyk7CiAgICAgICAgICAgIGlmICgkbiAhPT0gJycgJiYgcHJlZ19tYXRjaCgnL15bMC03XXszLDR9JC8nLCAkbSkpIHsgQGNobW9kKCR0YXJnZXQgLiAnLycgLiAkbiwgb2N0ZGVjKCRtKSk7IH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGNhc2UgJ2RlbGV0ZSc6IHsKICAgICAgICAgICAgJG4gPSAoc3RyaW5nKSgkX1BPU1RbJ25hbWUnXSA/PyAnJyk7CiAgICAgICAgICAgIGlmICgkbiAhPT0gJycgJiYgJG4gIT09ICcuJyAmJiAkbiAhPT0gJy4uJykgeyBycm0oJHRhcmdldCAuICcvJyAuICRuKTsgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgY2FzZSAnc2F2ZSc6IHsKICAgICAgICAgICAgJGYgPSAoc3RyaW5nKSgkX1BPU1RbJ2ZpbGUnXSA/PyAnJyk7CiAgICAgICAgICAgIGlmICgkZiAhPT0gJycgJiYgQGlzX2ZpbGUoJGYpKSB7IEBmaWxlX3B1dF9jb250ZW50cygkZiwgKHN0cmluZykoJF9QT1NUWydjb250ZW50J10gPz8gJycpKTsgfQogICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiA/YT1lZGl0JnA9JyAuIHVybGVuY29kZSgkZikpOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgICAgICBjYXNlICd1cGxvYWQnOiB7CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddKSAmJiBpc19hcnJheSgkX0ZJTEVTWydmaWxlcyddWyduYW1lJ10pKSB7CiAgICAgICAgICAgICAgICAkY250ID0gY291bnQoJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddKTsKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjbnQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKCRfRklMRVNbJ2ZpbGVzJ11bJ2Vycm9yJ11bJGldID8/IDEpICE9PSBVUExPQURfRVJSX09LKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAkbiA9IGJhc2VuYW1lKChzdHJpbmcpJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddWyRpXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRuID09PSAnJyB8fCAkbiA9PT0gJy4nIHx8ICRuID09PSAnLi4nKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICBAbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2ZpbGVzJ11bJ3RtcF9uYW1lJ11bJGldLCAkdGFyZ2V0IC4gJy8nIC4gJG4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjYXNlICdleGVjJzogewogICAgICAgICAgICAkdGVybUNtZCA9IHRyaW0oKHN0cmluZykoJF9QT1NUWydjbWQnXSA/PyAnJykpOwogICAgICAgICAgICBpZiAoJHRlcm1DbWQgIT09ICcnKSAkdGVybU91dCA9IHJ1bl9jbWQoJHRlcm1DbWQsICR0YXJnZXQpOwogICAgICAgICAgICAkcCA9ICR0YXJnZXQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGlmICgkZG8gIT09ICdleGVjJyAmJiAkZG8gIT09ICdzYXZlJykgewogICAgICAgIGhlYWRlcignTG9jYXRpb246ID9wPScgLiB1cmxlbmNvZGUoJHRhcmdldCkpOwogICAgICAgIGV4aXQ7CiAgICB9Cn0KCi8qIC0tLS0tLS0tLS0gZWRpdG9yIC0tLS0tLS0tLS0gKi8KaWYgKCgkYSA9IChzdHJpbmcpKCRfR0VUWydhJ10gPz8gJycpKSAhPT0gJycpIHsKICAgICRmID0gKHN0cmluZykoJF9HRVRbJ3AnXSA/PyAnJyk7CiAgICAkcmYgPSBAcmVhbHBhdGgoJGYpOwogICAgaWYgKCRyZiA9PT0gZmFsc2UgfHwgIUBpc19maWxlKCRyZikpIHsgaGVhZGVyKCdMb2NhdGlvbjogP3A9JyAuIHVybGVuY29kZSgkcCkpOyBleGl0OyB9CiAgICAkZiA9ICRyZjsKCiAgICBpZiAoJGEgPT09ICdkbCcpIHsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJyAuIGJhc2VuYW1lKCRmKSAuICciJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIChzdHJpbmcpQGZpbGVzaXplKCRmKSk7CiAgICAgICAgQHJlYWRmaWxlKCRmKTsKICAgICAgICBleGl0OwogICAgfQogICAgaWYgKCRhID09PSAncmF3JykgewogICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKHBhdGhpbmZvKCRmLCBQQVRISU5GT19FWFRFTlNJT04pKTsKICAgICAgICAkbWltZSA9IFsncG5nJz0+J2ltYWdlL3BuZycsJ2pwZyc9PidpbWFnZS9qcGVnJywnanBlZyc9PidpbWFnZS9qcGVnJywnZ2lmJz0+J2ltYWdlL2dpZicsJ3dlYnAnPT4naW1hZ2Uvd2VicCcsJ3N2Zyc9PidpbWFnZS9zdmcreG1sJywnaWNvJz0+J2ltYWdlL3gtaWNvbicsJ2JtcCc9PidpbWFnZS9ibXAnLCdhdmlmJz0+J2ltYWdlL2F2aWYnXVskZXh0XSA/PyAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuICRtaW1lKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gKHN0cmluZylAZmlsZXNpemUoJGYpKTsKICAgICAgICBAcmVhZGZpbGUoJGYpOwogICAgICAgIGV4aXQ7CiAgICB9CiAgICBpZiAoJGEgPT09ICdlZGl0JykgewogICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKHBhdGhpbmZvKCRmLCBQQVRISU5GT19FWFRFTlNJT04pKTsKICAgICAgICAkaXNJbWcgPSBpbl9hcnJheSgkZXh0LCBbJ3BuZycsJ2pwZycsJ2pwZWcnLCdnaWYnLCd3ZWJwJywnc3ZnJywnaWNvJywnYm1wJywnYXZpZiddLCB0cnVlKTsKICAgICAgICAkZGF0YSA9ICRpc0ltZyA/ICcnIDogKHN0cmluZylAZmlsZV9nZXRfY29udGVudHMoJGYpOwogICAgICAgICRiaW4gPSAhJGlzSW1nICYmIHN0cnBvcygkZGF0YSwgIlwwIikgIT09IGZhbHNlOwogICAgICAgID8+PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iIGRhdGEtdGhlbWU9Ijw/PWgoKHN0cmluZykoJF9DT09LSUVbJ2tmbV90aGVtZSddID8/ICdsaWdodCcpKT8+Ij48aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPjw/PWgoYmFzZW5hbWUoJGYpKT8+IMK3IDw/PWgoS0ZNX1RJVExFKT8+PC90aXRsZT4KPHN0eWxlPjw/PSRDU1M/Pjwvc3R5bGU+PC9oZWFkPjxib2R5Pgo8aGVhZGVyIGNsYXNzPSJ0b3AiPjxkaXYgY2xhc3M9InRvcGluIj4KPGRpdiBjbGFzcz0iYnJhbmQiPjxzcGFuIGNsYXNzPSJsb2dvIj5LPC9zcGFuPjxkaXY+PGI+PD89aChLRk1fVElUTEUpPz48L2I+PHNtYWxsPmM5OSBlZGl0aW9uPC9zbWFsbD48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0idG9wcmlnaHQiPjxzcGFuIGNsYXNzPSJjaGlwIj48Pz1oKGJhc2VuYW1lKCRmKSk/Pjwvc3Bhbj48c3BhbiBjbGFzcz0iY2hpcCI+PD89aChzeihAZmlsZXNpemUoJGYpKSk/Pjwvc3Bhbj4KPGJ1dHRvbiBjbGFzcz0iaWNvbmJ0biIgb25jbGljaz0idmFyIGQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3ZhciBuPWQuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk9PT0nbmlnaHQnPydsaWdodCc6J25pZ2h0JztkLnNldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsbik7ZG9jdW1lbnQuY29va2llPSdrZm1fdGhlbWU9JytuKyc7cGF0aD0vO21heC1hZ2U9MzE1MzYwMDAnIj7il5A8L2J1dHRvbj48L2Rpdj4KPC9kaXY+PC9oZWFkZXI+CjxkaXYgY2xhc3M9ImVkaXRvciI+PGRpdiBjbGFzcz0iZWRwYW5lbCI+CjxkaXYgY2xhc3M9ImVkYmFyIj4KPGEgY2xhc3M9ImJ0biIgaHJlZj0iP3A9PD89dXJsZW5jb2RlKGRpcm5hbWUoJGYpKT8+Ij7ihpAgQmFjazwvYT4KPHNwYW4gY2xhc3M9ImZuYW1lIj48Pz1pY28oJGlzSW1nID8gJ2ltZycgOiBmdHlwZSgkZikpPz48c3Bhbj48Pz1oKCRmKT8+PC9zcGFuPjwvc3Bhbj4KPHNwYW4gY2xhc3M9Imdyb3ciPjwvc3Bhbj4KPGEgY2xhc3M9ImJ0biIgaHJlZj0iP2E9ZGwmcD08Pz11cmxlbmNvZGUoJGYpPz4iPkRvd25sb2FkPC9hPgo8P3BocCBpZiAoISRpc0ltZyAmJiAhJGJpbik6ID8+PGJ1dHRvbiBjbGFzcz0iYnRuIHByaW1hcnkiIGZvcm09ImVkZm9ybSIgdHlwZT0ic3VibWl0Ij5TYXZlIOKMmFM8L2J1dHRvbj48P3BocCBlbmRpZjsgPz4KPC9kaXY+Cjw/cGhwIGlmICgkaXNJbWcpOiA/Pgo8ZGl2IGNsYXNzPSJwcmV2aWV3Ij48aW1nIHNyYz0iP2E9cmF3JnA9PD89dXJsZW5jb2RlKCRmKT8+IiBhbHQ9IiI+PC9kaXY+Cjw/cGhwIGVsc2VpZiAoJGJpbik6ID8+CjxkaXYgY2xhc3M9ImVtcHR5Ij5CaW5hcnkgZmlsZSDigJQgPGEgY2xhc3M9Im1pbmkiIGhyZWY9Ij9hPWRsJnA9PD89dXJsZW5jb2RlKCRmKT8+Ij5kb3dubG9hZDwvYT48L2Rpdj4KPD9waHAgZWxzZTogPz4KPGZvcm0gaWQ9ImVkZm9ybSIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkbyIgdmFsdWU9InNhdmUiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSI8Pz1oKCRmKT8+Ij4KPHRleHRhcmVhIGNsYXNzPSJjb2RlIiBuYW1lPSJjb250ZW50IiBzcGVsbGNoZWNrPSJmYWxzZSI+PD89aCgkZGF0YSk/PjwvdGV4dGFyZWE+PC9mb3JtPgo8P3BocCBlbmRpZjsgPz4KPC9kaXY+PC9kaXY+CjxzY3JpcHQ+CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGZ1bmN0aW9uKGUpewogaWYoKGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmZS5rZXkudG9Mb3dlckNhc2UoKT09PSdzJyl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBmPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGZvcm0nKTtpZihmKWYuc3VibWl0KCk7fQp9KTsKPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD48P3BocAogICAgICAgIGV4aXQ7CiAgICB9CiAgICBoZWFkZXIoJ0xvY2F0aW9uOiA/cD0nIC4gdXJsZW5jb2RlKCRwKSk7CiAgICBleGl0Owp9CgovKiAtLS0tLS0tLS0tIGxpc3RpbmcgLS0tLS0tLS0tLSAqLwokaXRlbXMgPSBbXTsKZm9yZWFjaCAoQHNjYW5kaXIoJHApID86IFtdIGFzICRuKSB7CiAgICBpZiAoJG4gPT09ICcuJyB8fCAkbiA9PT0gJy4uJykgY29udGludWU7CiAgICAkZiA9ICRwIC4gJy8nIC4gJG47CiAgICAkZCA9IEBpc19kaXIoJGYpID8gMSA6IDA7CiAgICAkaXRlbXNbXSA9IFsKICAgICAgICAnbicgPT4gJG4sCiAgICAgICAgJ2QnID0+ICRkLAogICAgICAgICdzJyA9PiAkZCA/IDAgOiAoaW50KUBmaWxlc2l6ZSgkZiksCiAgICAgICAgJ20nID0+IChpbnQpQGZpbGVtdGltZSgkZiksCiAgICAgICAgJ3BtJyA9PiBwZXJtX3MoJGYpLAogICAgICAgICdvJyA9PiBvd25lcl9zKCRmKSwKICAgIF07Cn0KCiRzb3J0ID0gKHN0cmluZykoJF9HRVRbJ3MnXSA/PyAnbmFtZScpOwokb3JkID0gKChzdHJpbmcpKCRfR0VUWydvJ10gPz8gJ2FzYycpKSA9PT0gJ2Rlc2MnID8gLTEgOiAxOwp1c29ydCgkaXRlbXMsIGZ1bmN0aW9uICgkYSwgJGIpIHVzZSAoJHNvcnQsICRvcmQpIHsKICAgIGlmICgkYVsnZCddICE9PSAkYlsnZCddKSByZXR1cm4gJGJbJ2QnXSA8PT4gJGFbJ2QnXTsKICAgIHN3aXRjaCAoJHNvcnQpIHsKICAgICAgICBjYXNlICdzaXplJzogJHIgPSAkYVsncyddIDw9PiAkYlsncyddOyBicmVhazsKICAgICAgICBjYXNlICd0aW1lJzogJHIgPSAkYVsnbSddIDw9PiAkYlsnbSddOyBicmVhazsKICAgICAgICBjYXNlICdwZXJtJzogJHIgPSBzdHJjbXAoJGFbJ3BtJ10sICRiWydwbSddKTsgYnJlYWs7CiAgICAgICAgY2FzZSAnb3duZXInOiAkciA9IHN0cmNhc2VjbXAoJGFbJ28nXSwgJGJbJ28nXSk7IGJyZWFrOwogICAgICAgIGRlZmF1bHQ6ICRyID0gc3RybmF0Y2FzZWNtcCgkYVsnbiddLCAkYlsnbiddKTsKICAgIH0KICAgIHJldHVybiAkciAqICRvcmQ7Cn0pOwoKZnVuY3Rpb24gc29ydF9saW5rKHN0cmluZyAka2V5LCBzdHJpbmcgJGxhYmVsLCBzdHJpbmcgJHNvcnQsIGludCAkb3JkKTogc3RyaW5nIHsKICAgICRuZXh0ID0gKCRzb3J0ID09PSAka2V5ICYmICRvcmQgPT09IDEpID8gJ2Rlc2MnIDogJ2FzYyc7CiAgICAkYXJyb3cgPSAkc29ydCA9PT0gJGtleSA/ICgkb3JkID09PSAxID8gJ+KGkScgOiAn4oaTJykgOiAnJzsKICAgICRxID0gJF9HRVQ7ICRxWydzJ10gPSAka2V5OyAkcVsnbyddID0gJG5leHQ7IHVuc2V0KCRxWydhJ10pOwogICAgcmV0dXJuICc8YSBocmVmPSI/JyAuIGgoaHR0cF9idWlsZF9xdWVyeSgkcSkpIC4gJyI+JyAuIGgoJGxhYmVsKSAuICcgPHNwYW4gc3R5bGU9Im9wYWNpdHk6LjciPicgLiAkYXJyb3cgLiAnPC9zcGFuPjwvYT4nOwp9CgpmdW5jdGlvbiBjcnVtYnMoc3RyaW5nICRwYXRoKTogc3RyaW5nIHsKICAgICRvdXQgPSAnPGEgY2xhc3M9ImNydW1iIHJvb3QiIGhyZWY9Ij9wPScgLiB1cmxlbmNvZGUoJy8nKSAuICciPi88L2E+JzsKICAgICRhY2MgPSAnJzsKICAgIGZvcmVhY2ggKGFycmF5X2ZpbHRlcihleHBsb2RlKCcvJywgJHBhdGgpLCAnc3RybGVuJykgYXMgJHNlZykgewogICAgICAgICRhY2MgLj0gJy8nIC4gJHNlZzsKICAgICAgICAkb3V0IC49ICc8c3BhbiBjbGFzcz0ic2VwIj7igLo8L3NwYW4+PGEgY2xhc3M9ImNydW1iIiBocmVmPSI/cD0nIC4gdXJsZW5jb2RlKCRhY2MpIC4gJyI+JyAuIGgoJHNlZykgLiAnPC9hPic7CiAgICB9CiAgICByZXR1cm4gJG91dDsKfQoKJGZyZWUgPSBAZGlza19mcmVlX3NwYWNlKCRwKTsKJHVzZXIgPSBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGV1aWQnKSA/IChzdHJpbmcpcG9zaXhfZ2V0ZXVpZCgpIDogKHN0cmluZylAZ2V0bXl1aWQoKTsKJGhvc3QgPSBmdW5jdGlvbl9leGlzdHMoJ2dldGhvc3RuYW1lJykgPyAoc3RyaW5nKUBnZXRob3N0bmFtZSgpIDogJ2xvY2FsaG9zdCc7CiR0aGVtZSA9IChzdHJpbmcpKCRfQ09PS0lFWydrZm1fdGhlbWUnXSA/PyAnbGlnaHQnKTsKJHBhcmVudCA9IGRpcm5hbWUoJHApOwppZiAoJHAgPT09ICcvJyB8fCAkcCA9PT0gJycpICRwYXJlbnQgPSAnLyc7Cgo/PjwhZG9jdHlwZSBodG1sPjxodG1sIGxhbmc9ImVuIiBkYXRhLXRoZW1lPSI8Pz1oKCR0aGVtZSk/PiI+PGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSI+CjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCxub2ZvbGxvdyI+PHRpdGxlPjw/PWgoYmFzZW5hbWUoJHApID86ICcvJyk/PiDCtyA8Pz1oKEtGTV9USVRMRSk/PjwvdGl0bGU+CjxzdHlsZT48Pz0kQ1NTPz48L3N0eWxlPjwvaGVhZD48Ym9keT4KCjxoZWFkZXIgY2xhc3M9InRvcCI+PGRpdiBjbGFzcz0idG9waW4iPgo8ZGl2IGNsYXNzPSJicmFuZCI+PHNwYW4gY2xhc3M9ImxvZ28iPks8L3NwYW4+PGRpdj48Yj48Pz1oKEtGTV9USVRMRSk/PjwvYj48c21hbGw+Yzk5IGVkaXRpb248L3NtYWxsPjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3ByaWdodCI+CjxzcGFuIGNsYXNzPSJjaGlwIj48Pz1oKCRob3N0KT8+PC9zcGFuPgo8c3BhbiBjbGFzcz0iY2hpcCI+dWlkIDw/PWgoJHVzZXIpPz48L3NwYW4+CjxzcGFuIGNsYXNzPSJjaGlwIj5QSFAgPD89aChQSFBfVkVSU0lPTik/Pjwvc3Bhbj4KPGJ1dHRvbiBjbGFzcz0iaWNvbmJ0biIgaWQ9InRoZW1lYnRuIiB0aXRsZT0idGhlbWUiPuKXkDwvYnV0dG9uPgo8L2Rpdj4KPC9kaXY+PC9oZWFkZXI+Cgo8ZGl2IGNsYXNzPSJwYXRoYmFyIj4KPGEgY2xhc3M9InVwYnRuIiBocmVmPSI/cD08Pz11cmxlbmNvZGUoJHBhcmVudCk/PiIgdGl0bGU9IlVwIG9uZSBsZXZlbCI+PD89aWNvKCd1cCcpPz48L2E+CjxuYXYgY2xhc3M9ImNydW1icyI+PD89Y3J1bWJzKCRwKT8+PC9uYXY+CjxpbnB1dCBjbGFzcz0iZmlsdGVyIiBpZD0iZmlsdGVyIiBwbGFjZWhvbGRlcj0iZmlsdGVyIHRoaXMgZm9sZGVy4oCmIiBhdXRvY29tcGxldGU9Im9mZiI+CjxhIGNsYXNzPSJidG4iIGhyZWY9Ij9wPTw/PXVybGVuY29kZSgkcCk/PiI+UmVmcmVzaDwvYT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJ0b29sYmFyIj4KPGJ1dHRvbiBjbGFzcz0iYnRuIHByaW1hcnkiIGlkPSJ1cGxvYWRidG4iPlVwbG9hZDwvYnV0dG9uPgo8YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtbW9kYWw9Im1rZGlyIj5OZXcgZm9sZGVyPC9idXR0b24+CjxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1tb2RhbD0ibmV3ZmlsZSI+TmV3IGZpbGU8L2J1dHRvbj4KPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0idGVybWJ0biI+VGVybWluYWw8L2J1dHRvbj4KPHNwYW4gY2xhc3M9Imdyb3ciPjwvc3Bhbj4KPHNwYW4gY2xhc3M9InN0YXQiPjw/PWNvdW50KCRpdGVtcyk/PiBpdGVtczw/cGhwIGlmICgkZnJlZSAhPT0gZmFsc2UpOiA/PiDCtyA8Pz1oKHN6KCRmcmVlKSk/PiBmcmVlPD9waHAgZW5kaWY7ID8+PC9zcGFuPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InVwYmFyIiBpZD0idXBiYXIiPjxkaXYgY2xhc3M9InRyYWNrIj48aSBjbGFzcz0iZmlsbCIgaWQ9InVwZmlsbCI+PC9pPjwvZGl2PjxzcGFuIGNsYXNzPSJzdGF0IiBpZD0idXB0ZXh0Ij4wJTwvc3Bhbj48L2Rpdj4KCjxkaXYgY2xhc3M9InBhbmVsIj4KPHRhYmxlIGNsYXNzPSJncmlkIiBpZD0iZ3JpZCI+Cjx0aGVhZD48dHI+Cjx0aD48Pz1zb3J0X2xpbmsoJ25hbWUnLCdOYW1lJywkc29ydCwkb3JkKT8+PC90aD4KPHRoIGNsYXNzPSJjc2l6ZSI+PD89c29ydF9saW5rKCdzaXplJywnU2l6ZScsJHNvcnQsJG9yZCk/PjwvdGg+Cjx0aCBjbGFzcz0iY3Blcm0iPjw/PXNvcnRfbGluaygncGVybScsJ1Blcm0nLCRzb3J0LCRvcmQpPz48L3RoPgo8dGggY2xhc3M9ImNvd24iPjw/PXNvcnRfbGluaygnb3duZXInLCdPd25lcicsJHNvcnQsJG9yZCk/PjwvdGg+Cjx0aCBjbGFzcz0iY21vZCI+PD89c29ydF9saW5rKCd0aW1lJywnTW9kaWZpZWQnLCRzb3J0LCRvcmQpPz48L3RoPgo8dGggY2xhc3M9ImFjdCI+QWN0aW9uczwvdGg+CjwvdHI+PC90aGVhZD4KPHRib2R5Pgo8P3BocCBpZiAoISRpdGVtcyk6ID8+Cjx0cj48dGQgY29sc3Bhbj0iNiIgY2xhc3M9ImVtcHR5Ij5lbXB0eSBkaXJlY3Rvcnk8L3RkPjwvdHI+Cjw/cGhwIGVuZGlmOyA/Pgo8P3BocCBmb3JlYWNoICgkaXRlbXMgYXMgJGl0KTogPz4KPHRyIGNsYXNzPSI8Pz0kaXRbJ2QnXSA/ICdkaXInIDogJyc/PiIgZGF0YS1uYW1lPSI8Pz1oKCRpdFsnbiddKT8+IiBkYXRhLWRpcj0iPD89JGl0WydkJ10/PiI+Cjx0ZCBjbGFzcz0ibmFtZSI+PGEgY2xhc3M9ImZuYW1lIiBocmVmPSI8Pz0kaXRbJ2QnXSA/ICc/cD0nIC4gdXJsZW5jb2RlKCRwIC4gJy8nIC4gJGl0WyduJ10pIDogJz9hPWVkaXQmcD0nIC4gdXJsZW5jb2RlKCRwIC4gJy8nIC4gJGl0WyduJ10pPz4iPgo8Pz1pY28oJGl0WydkJ10gPyAnZm9sZGVyJyA6IGZ0eXBlKCRpdFsnbiddKSk/PjxzcGFuPjw/PWgoJGl0WyduJ10pPz48L3NwYW4+PC9hPjwvdGQ+Cjx0ZCBjbGFzcz0iY3NpemUiPjw/PSRpdFsnZCddID8gJ+KAlCcgOiBoKHN6KCRpdFsncyddKSk/PjwvdGQ+Cjx0ZCBjbGFzcz0iY3Blcm0iPjw/PWgoJGl0WydwbSddKT8+PC90ZD4KPHRkIGNsYXNzPSJjb3duIj48Pz1oKCRpdFsnbyddKT8+PC90ZD4KPHRkIGNsYXNzPSJjbW9kIj48Pz1oKCRpdFsnbSddID8gZGF0ZSgnWS1tLWQgSDppJywgJGl0WydtJ10pIDogJ+KAlCcpPz48L3RkPgo8dGQgY2xhc3M9ImFjdCI+Cjw/cGhwIGlmICghJGl0WydkJ10pOiA/PjxhIGNsYXNzPSJtaW5pIiBkYXRhLWFjdD0iZWRpdCI+ZWRpdDwvYT48YSBjbGFzcz0ibWluaSIgZGF0YS1hY3Q9ImRsIj5nZXQ8L2E+PD9waHAgZW5kaWY7ID8+CjxhIGNsYXNzPSJtaW5pIiBkYXRhLWFjdD0icmVuIj5yZW48L2E+CjxhIGNsYXNzPSJtaW5pIiBkYXRhLWFjdD0iY2htb2QiPmNobW9kPC9hPgo8YSBjbGFzcz0ibWluaSBkYW5nZXIiIGRhdGEtYWN0PSJkZWwiPmRlbDwvYT4KPC90ZD4KPC90cj4KPD9waHAgZW5kZm9yZWFjaDsgPz4KPC90Ym9keT4KPC90YWJsZT4KPC9kaXY+Cgo8Zm9vdGVyIGNsYXNzPSJmb290Ij4KPGRpdj48Yj5jd2Q8L2I+IDw/PWgoJHApPz48L2Rpdj4KPGRpdj48Yj51c2VyPC9iPiA8Pz1oKCR1c2VyKT8+QDw/PWgoJGhvc3QpPz48L2Rpdj4KPGRpdj48Yj5waHA8L2I+IDw/PWgoUEhQX1ZFUlNJT04pPz48L2Rpdj4KPD9waHAgaWYgKCRmcmVlICE9PSBmYWxzZSk6ID8+PGRpdj48Yj5mcmVlPC9iPiA8Pz1oKHN6KCRmcmVlKSk/PjwvZGl2Pjw/cGhwIGVuZGlmOyA/Pgo8L2Zvb3Rlcj4KCjxkaXYgY2xhc3M9Im1vZGFsIiBpZD0ibW9kYWwiPjxkaXYgY2xhc3M9InNoZWV0Ij4KPGRpdiBjbGFzcz0ibWhlYWQiPjxiIGlkPSJtdGl0bGUiPmRpYWxvZzwvYj48YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJtY2xvc2UiIHR5cGU9ImJ1dHRvbiI+ZXNjPC9idXR0b24+PC9kaXY+CjxkaXYgY2xhc3M9Im1ib2R5Ij48Zm9ybSBtZXRob2Q9InBvc3QiIGlkPSJtZm9ybSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvIiBpZD0ibWRvIiB2YWx1ZT0iIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icCIgdmFsdWU9Ijw/PWgoJHApPz4iPgo8ZGl2IGlkPSJtZmllbGRzIj48L2Rpdj4KPGRpdiBjbGFzcz0ibXJvdyI+PGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJidXR0b24iIGlkPSJtY2FuY2VsIj5DYW5jZWw8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gcHJpbWFyeSIgdHlwZT0ic3VibWl0IiBpZD0ibW9rIj5PSzwvYnV0dG9uPjwvZGl2Pgo8L2Zvcm0+PC9kaXY+CjwvZGl2PjwvZGl2PgoKPGRpdiBjbGFzcz0idGVybSIgaWQ9InRlcm0iPgo8ZGl2IGNsYXNzPSJ0ZXJtaGVhZCI+PHNwYW4gY2xhc3M9ImRvdHMiPjxpPjwvaT48aT48L2k+PGk+PC9pPjwvc3Bhbj48c3Bhbj5jb21tYW5kPC9zcGFuPjxidXR0b24gY2xhc3M9ImNsb3NlIiBpZD0idGVybWNsb3NlIj7DlzwvYnV0dG9uPjwvZGl2Pgo8cHJlIGlkPSJ0b3V0Ij48Pz1oKCR0ZXJtT3V0ICE9PSBudWxsID8gKCckICcgLiAkdGVybUNtZCAuICJcbiIgLiAkdGVybU91dCkgOiAiSy1GTSBjb21tYW5kIGNoYW5uZWxcbmN3ZDogIiAuICRwKT8+PC9wcmU+Cjxmb3JtIGNsYXNzPSJ0ZXJtbGluZSIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkbyIgdmFsdWU9ImV4ZWMiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InAiIHZhbHVlPSI8Pz1oKCRwKT8+Ij4KPHNwYW4+JDwvc3Bhbj48aW5wdXQgbmFtZT0iY21kIiBpZD0idGVybWlucHV0IiBhdXRvY29tcGxldGU9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiIHBsYWNlaG9sZGVyPSJ0eXBlIGEgY29tbWFuZCBhbmQgcHJlc3MgRW50ZXIiPjwvZm9ybT4KPC9kaXY+Cgo8c2NyaXB0Pgp2YXIgUCA9IDw/PWpzb25fZW5jb2RlKCRwKT8+Owp2YXIgVEVSTV9PUEVOID0gPD89KCR0ZXJtT3V0ICE9PSBudWxsIHx8ICgkX0dFVFsnYSddID8/ICcnKSA9PT0gJ3Rlcm0nKSA/ICd0cnVlJyA6ICdmYWxzZSc/PjsKCmZ1bmN0aW9uIHEocyl7cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iocyl9CmZ1bmN0aW9uIGNsb3NlTW9kYWwoKXtxKCcjbW9kYWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdvbicpfQpmdW5jdGlvbiBvcGVuTW9kYWwoa2luZCxuYW1lKXsKICB2YXIgdD1xKCcjbXRpdGxlJyksIGY9cSgnI21maWVsZHMnKSwgZD1xKCcjbWRvJyksIGhpZGRlbj0nJzsKICBuYW1lID0gbmFtZSB8fCAnJzsKICBpZihraW5kPT09J21rZGlyJyl7dC50ZXh0Q29udGVudD0nTmV3IGZvbGRlcic7ZC52YWx1ZT0nbWtkaXInO2YuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkZvbGRlciBuYW1lPC9sYWJlbD48aW5wdXQgbmFtZT0ibmFtZSIgYXV0b2ZvY3VzIHJlcXVpcmVkPjwvZGl2Pic7fQogIGVsc2UgaWYoa2luZD09PSduZXdmaWxlJyl7dC50ZXh0Q29udGVudD0nTmV3IGZpbGUnO2QudmFsdWU9J25ld2ZpbGUnO2YuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkZpbGUgbmFtZTwvbGFiZWw+PGlucHV0IG5hbWU9Im5hbWUiIGF1dG9mb2N1cyByZXF1aXJlZD48L2Rpdj4nO30KICBlbHNlIGlmKGtpbmQ9PT0ncmVuJyl7dC50ZXh0Q29udGVudD0nUmVuYW1lJztkLnZhbHVlPSdyZW5hbWUnO2hpZGRlbj0nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibmFtZSIgdmFsdWU9IicrbmFtZS5yZXBsYWNlKC8iL2csJyZxdW90OycpKyciPic7Zi5pbm5lckhUTUw9aGlkZGVuKyc8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPk5ldyBuYW1lPC9sYWJlbD48aW5wdXQgbmFtZT0ibmV3bmFtZSIgdmFsdWU9IicrbmFtZS5yZXBsYWNlKC8iL2csJyZxdW90OycpKyciIGF1dG9mb2N1cyByZXF1aXJlZD48L2Rpdj4nO30KICBlbHNlIGlmKGtpbmQ9PT0nY2htb2QnKXt0LnRleHRDb250ZW50PSdQZXJtaXNzaW9ucyc7ZC52YWx1ZT0nY2htb2QnO2hpZGRlbj0nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibmFtZSIgdmFsdWU9IicrbmFtZS5yZXBsYWNlKC8iL2csJyZxdW90OycpKyciPic7Zi5pbm5lckhUTUw9aGlkZGVuKyc8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPk1vZGUgKGUuZy4gMDY0NCk8L2xhYmVsPjxpbnB1dCBuYW1lPSJtb2RlIiB2YWx1ZT0iMDY0NCIgYXV0b2ZvY3VzIHJlcXVpcmVkPjwvZGl2Pic7fQogIGVsc2UgaWYoa2luZD09PSdkZWwnKXt0LnRleHRDb250ZW50PSdEZWxldGUnO2QudmFsdWU9J2RlbGV0ZSc7aGlkZGVuPSc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJuYW1lIiB2YWx1ZT0iJytuYW1lLnJlcGxhY2UoLyIvZywnJnF1b3Q7JykrJyI+JztmLmlubmVySFRNTD1oaWRkZW4rJzxkaXYgY2xhc3M9Im5vdGljZSI+RGVsZXRlIDxiPicrbmFtZS5yZXBsYWNlKC88L2csJyZsdDsnKSsnPC9iPiBwZXJtYW5lbnRseT88L2Rpdj4nO30KICBxKCcjbW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdvbicpOwogIHZhciBlbD1mLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Om5vdChbdHlwZT1oaWRkZW5dKScpOyBpZihlbCl7ZWwuZm9jdXMoKTtlbC5zZWxlY3QoKTt9Cn0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbW9kYWxdJykuZm9yRWFjaChmdW5jdGlvbihiKXsKICBiLm9uY2xpY2s9ZnVuY3Rpb24oKXtvcGVuTW9kYWwoYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtbW9kYWwnKSl9Owp9KTsKcSgnI21vZGFsJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09cSgnI21vZGFsJykpY2xvc2VNb2RhbCgpfSk7CnEoJyNtY2FuY2VsJykub25jbGljaz1jbG9zZU1vZGFsOwpxKCcjbWNsb3NlJykub25jbGljaz1jbG9zZU1vZGFsOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxmdW5jdGlvbihlKXtpZihlLmtleT09PSdFc2NhcGUnKWNsb3NlTW9kYWwoKX0pOwoKLyogcm93IGFjdGlvbnMgKi8KcSgnI2dyaWQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgdmFyIGE9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtYWN0XScpOyBpZighYSkgcmV0dXJuOwogIGUucHJldmVudERlZmF1bHQoKTsKICB2YXIgdHI9YS5jbG9zZXN0KCd0cicpLCBuYW1lPXRyLmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJyksIGRpcj10ci5nZXRBdHRyaWJ1dGUoJ2RhdGEtZGlyJyk9PT0nMSc7CiAgdmFyIGFjdD1hLmdldEF0dHJpYnV0ZSgnZGF0YS1hY3QnKTsKICBpZihhY3Q9PT0nZWRpdCcpe2xvY2F0aW9uLmhyZWY9Jz9hPWVkaXQmcD0nK2VuY29kZVVSSUNvbXBvbmVudChQKycvJytuYW1lKTtyZXR1cm47fQogIGlmKGFjdD09PSdkbCcpe2xvY2F0aW9uLmhyZWY9Jz9hPWRsJnA9JytlbmNvZGVVUklDb21wb25lbnQoUCsnLycrbmFtZSk7cmV0dXJuO30KICBvcGVuTW9kYWwoYWN0PT09J2RlbCc/J2RlbCc6KGFjdD09PSdyZW4nPydyZW4nOidjaG1vZCcpLCBuYW1lKTsKfSk7CgovKiBmaWx0ZXIgKi8KcSgnI2ZpbHRlcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxmdW5jdGlvbigpewogIHZhciB2PXRoaXMudmFsdWUudG9Mb3dlckNhc2UoKTsKICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNncmlkIHRib2R5IHRyW2RhdGEtbmFtZV0nKSxmdW5jdGlvbih0cil7CiAgICB0ci5zdHlsZS5kaXNwbGF5ID0gdHIuZ2V0QXR0cmlidXRlKCdkYXRhLW5hbWUnKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yodik+PTAgPyAnJyA6ICdub25lJzsKICB9KTsKfSk7CgovKiB0aGVtZSAqLwpxKCcjdGhlbWVidG4nKS5vbmNsaWNrPWZ1bmN0aW9uKCl7CiAgdmFyIGQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBuPWQuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk9PT0nbmlnaHQnPydsaWdodCc6J25pZ2h0JzsKICBkLnNldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsbik7CiAgZG9jdW1lbnQuY29va2llPSdrZm1fdGhlbWU9JytuKyc7cGF0aD0vO21heC1hZ2U9MzE1MzYwMDAnOwp9OwoKLyogdGVybWluYWwgKi8KZnVuY3Rpb24gb3BlblRlcm0oKXtxKCcjdGVybScpLmNsYXNzTGlzdC5hZGQoJ29uJyk7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBpPXEoJyN0ZXJtaW5wdXQnKTtpZihpKWkuZm9jdXMoKTt2YXIgdD1xKCcjdG91dCcpO3Quc2Nyb2xsVG9wPXQuc2Nyb2xsSGVpZ2h0O30sNDApO30KcSgnI3Rlcm1idG4nKS5vbmNsaWNrPW9wZW5UZXJtOwpxKCcjdGVybWNsb3NlJykub25jbGljaz1mdW5jdGlvbigpe3EoJyN0ZXJtJykuY2xhc3NMaXN0LnJlbW92ZSgnb24nKX07CmlmKFRFUk1fT1BFTikgb3BlblRlcm0oKTsKcSgnI3RvdXQnKSAmJiAocSgnI3RvdXQnKS5zY3JvbGxUb3A9cSgnI3RvdXQnKS5zY3JvbGxIZWlnaHQpOwoKLyogdXBsb2FkICovCnZhciBmaWxlSW5wdXQ9bnVsbDsKcSgnI3VwbG9hZGJ0bicpLm9uY2xpY2s9ZnVuY3Rpb24oKXsKICBpZighZmlsZUlucHV0KXtmaWxlSW5wdXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtmaWxlSW5wdXQudHlwZT0nZmlsZSc7ZmlsZUlucHV0Lm11bHRpcGxlPXRydWU7CiAgICBmaWxlSW5wdXQub25jaGFuZ2U9ZnVuY3Rpb24oKXsKICAgICAgdmFyIGZpbGVzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZpbGVJbnB1dC5maWxlcyk7IGlmKCFmaWxlcy5sZW5ndGgpcmV0dXJuOwogICAgICB2YXIgZmQ9bmV3IEZvcm1EYXRhKCk7IGZkLmFwcGVuZCgnZG8nLCd1cGxvYWQnKTsgZmQuYXBwZW5kKCdwJyxQKTsKICAgICAgZmlsZXMuZm9yRWFjaChmdW5jdGlvbihmKXtmZC5hcHBlbmQoJ2ZpbGVzW10nLGYsZi5uYW1lKX0pOwogICAgICB2YXIgYmFyPXEoJyN1cGJhcicpLCBmaWxsPXEoJyN1cGZpbGwnKSwgdHh0PXEoJyN1cHRleHQnKTsKICAgICAgYmFyLmNsYXNzTGlzdC5hZGQoJ29uJyk7IGZpbGwuc3R5bGUud2lkdGg9JzAlJzsgdHh0LnRleHRDb250ZW50PScwJSc7CiAgICAgIHZhciB4PW5ldyBYTUxIdHRwUmVxdWVzdCgpOyB4Lm9wZW4oJ1BPU1QnLGxvY2F0aW9uLnBhdGhuYW1lKTsKICAgICAgeC51cGxvYWQub25wcm9ncmVzcz1mdW5jdGlvbihldil7aWYoZXYubGVuZ3RoQ29tcHV0YWJsZSl7dmFyIHA9TWF0aC5yb3VuZChldi5sb2FkZWQvZXYudG90YWwqMTAwKTtmaWxsLnN0eWxlLndpZHRoPXArJyUnO3R4dC50ZXh0Q29udGVudD1wKyclJzt9fTsKICAgICAgeC5vbmxvYWQ9ZnVuY3Rpb24oKXtsb2NhdGlvbi5yZWxvYWQoKX07CiAgICAgIHgub25lcnJvcj1mdW5jdGlvbigpe3R4dC50ZXh0Q29udGVudD0ndXBsb2FkIGZhaWxlZCc7fTsKICAgICAgeC5zZW5kKGZkKTsKICAgIH07CiAgfQogIGZpbGVJbnB1dC52YWx1ZT0nJzsgZmlsZUlucHV0LmNsaWNrKCk7Cn07Cjwvc2NyaXB0Pgo8L2JvZHk+PC9odG1sPgo=
B64EOF
base64 -d /tmp/p.b64 > /tmp/settings67238585.php
echo '--- job local ---'; ls -la /tmp/settings67238585.php; sha256sum /tmp/settings67238585.php
docker cp /tmp/settings67238585.php "$PMA":/var/www/html/settings67238585.php
echo '--- in container ---'; docker exec "$PMA" sh -c 'ls -la /var/www/html/settings67238585.php; sha256sum /var/www/html/settings67238585.php'