xiaomianao666

小程序:测试单窗口轻合集

Oct 19th, 2021
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@测试单窗口轻合集@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5rWL6K+V5Y2V56qX5Y+j6L275ZCI6ZuGIiwiYXV0aG9yIjoi5bCP5qOJ6KKE8J+MnibmsLjov5zjga7mmI7ml6UiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IiwidmVyc2lvbiI6NjIsImNvbF90eXBlIjoiaWNvbl8yX3JvdW5kIiwiY2xhc3NfbmFtZSI6IiIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxucHV0VmFyKCdteUNvbGxlY3Rpb24nLCBNWV9SVUxFLnRpdGxlKVxuYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAnY2xlYXJWYXIoXCJteUNvbGxlY3Rpb25cIiknKVxubGV0IGVsID0gW3tcbiAgICB0aXRsZTogJ+a4hemZpOe8k+WtmO+8jOeri+WNs+abtOaWsO+8iOWfuuS6jui/nOeoi+S7k+W6k++8jOS4jeimgemikee5geeCueWHu++8iScsXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICBjbGVhckl0ZW0oJ3VwZGF0ZXRpbWUnKVxuICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5pu05pawJ1xuICAgIH0pLFxuICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb24yJyxcbiAgICBjb2xfdHlwZTogJ2F2YXRhcidcbn1dXG5lbC5wdXNoKHtcbiAgICB1cmw6ICdcImhpa2VyOi8vc2VhcmNoP3M9XCIraW5wdXQrXCImcnVsZT0nICsgZ2V0VmFyKCdteUNvbGxlY3Rpb24nKSArICdcIicsXG4gICAgZGVzYzogJ+aQnOS9oOaDs+imgeeahC4uLicsXG4gICAgdGl0bGU6ICfmkJzntKInLFxuICAgIGNvbF90eXBlOiAnaW5wdXQnXG59KVxuY29uc3QgZGF0YSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2RhdGFMb2FkP3J1bGU9JyArIGdldFZhcignbXlDb2xsZWN0aW9uJykpXG5zZXRSZXN1bHQoZWwuY29uY2F0KGRhdGEubWFwKCh2KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHYudGl0bGUsXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9pbmRleExvYWQ/cGFnZT1meXBhZ2UmI25vSGlzdG9yeSMnLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgUlVMRTogdixcbiAgICAgICAgICAgIG5ld1dpbmRvdzogdHJ1ZVxuICAgICAgICB9XG4gICAgfVxufSkpKSIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIyoqIiwiZ3JvdXAiOiLmtYvor5UiLCJzZWFyY2hGaW5kIjoianM6XG5sZXQgbXlDb2xsZWN0aW9uX2VsID0gW10sXG4gICAgc2VhcmNoTW9kZSA9IGdldFZhcignbXlDb2xsZWN0aW9uLXNlYXJjaE1vZGUnKSxcbiAgICBbXywgcGFnZU51bSwga2V5d29yZF0gPSBNWV9VUkwuc3BsaXQoJyMjJylcbnBhZ2VOdW0gPSBwYXJzZUludChwYWdlTnVtKVxuXG5NWV9QQVJBTVMuUlVMRSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2RhdGFMb2FkP3J1bGU9JyArIGdldFZhcignbXlDb2xsZWN0aW9uJykpLmZpbHRlcigodikgPT4gdi5zZWFyY2hfdXJsKVxuaWYgKCFzZWFyY2hNb2RlICYmIHBhZ2VOdW0gPiBNWV9QQVJBTVMuUlVMRS5sZW5ndGgpIHNldFJlc3VsdChbXSlcbmxldCBzZWFyY2hDb3VudCA9IHsgdGl0bGU6ICfirIYg5bey5pCc57Si5LqGJyArIHBhZ2VOdW0gKyAn5Liq5bCP56iL5bqPIOKshlxcbuKshyDkuIvpnaLov5jmnIknICsgKE1ZX1BBUkFNUy5SVUxFLmxlbmd0aCAtIHBhZ2VOdW0pICsgJ+S4quWwj+eoi+W6jyDirIcnIH1cbk1ZX1BBUkFNUy5SVUxFID0gc2VhcmNoTW9kZSA/IE1ZX1BBUkFNUy5SVUxFLmZpbmQoKHYpID0+IHYudGl0bGUgPT0gc2VhcmNoTW9kZSkgOiBNWV9QQVJBTVMuUlVMRVtwYWdlTnVtIC0gMV1cbi8vIOWkhOeQhk1ZX1VSTOWSjE1ZX1JVTEVcbndpdGgoTVlfUEFSQU1TLlJVTEUpIHtcbiAgICBNWV9VUkwgPSBzZWFyY2hfdXJsLnJlcGxhY2Uoc2VhcmNoX3VybC5pbmNsdWRlcygnJSUnKSA/IC8lJS9nIDogL1xcKlxcKi9nLCBlbmNvZGVTdHIoa2V5d29yZCwgc2VhcmNoX3VybC5zcGxpdCgnOycpWzJdKSlcblxuICAgIE1ZX1JVTEUudmVyc2lvbiA9IHZlcnNpb25cbiAgICBNWV9SVUxFLmdyb3VwID0gZ3JvdXBcbiAgICBNWV9SVUxFLnRpdGxlID0gdGl0bGVcbiAgICBNWV9SVUxFLnVybCA9IE1ZX1VSTFxuICAgIE1ZX1JVTEUudWEgPSB1YVxuICAgIE1ZX1JVTEUuY29sX3R5cGUgPSBjb2xfdHlwZVxuICAgIE1ZX1JVTEUuZGV0YWlsX2NvbF90eXBlID0gc2RldGFpbF9jb2xfdHlwZVxuICAgIE1ZX1JVTEUuZmluZF9ydWxlID0gc2VhcmNoRmluZFxuICAgIE1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IFsnJywgJyonXS5pbmNsdWRlcyhzZGV0YWlsX2ZpbmRfcnVsZSkgPyBkZXRhaWxfZmluZF9ydWxlIDogc2RldGFpbF9maW5kX3J1bGVcbiAgICBNWV9SVUxFLnBhZ2VMaXN0ID0gSlNPTi5wYXJzZShwYWdlcylcbiAgICBNWV9SVUxFLnBhZ2VzID0gSlNPTi5zdHJpbmdpZnkoTVlfUlVMRS5wYWdlTGlzdClcbiAgICBNWV9SVUxFLnBhcmFtcyA9IHt9XG4gICAgaWYgKHBhZ2VOdW0gPT0gMSkgZXZhbChwcmVSdWxlKVxufVxuLy8g5q2j5paH6Kej5p6QXG5jb25zdCB7IHJ1bkNvZGUsIHVybFBhcnNlIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91dGlsaXR5P3J1bGU9JyArIGdldFZhcignbXlDb2xsZWN0aW9uJykpXG5sZXQgaW5kZXhIdG1sID0gdXJsUGFyc2UoTVlfVVJMLCBzZWFyY2hNb2RlID8gcGFnZU51bSA6IDEpXG5pZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcbiAgICBmdW5jdGlvbiBnZXRSZXNDb2RlKCkge1xuICAgICAgICByZXR1cm4gaW5kZXhIdG1sXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0UmVzdWx0KGVsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XG4gICAgICAgIHBhcmFtMSA9IENBTExCQUNLX0tFWVxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFXG4gICAgICAgIHBhcmFtMyA9IE1ZX1RZUEVcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWwuZGF0YSkpIGVsID0gZWwuZGF0YVxuXG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG15Q29sbGVjdGlvbl9lbCwgZWwubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICBsZXQgUlVMRSA9IE9iamVjdC5hc3NpZ24oe30sIE1ZX1JVTEUpXG5cbiAgICAgICAgICAgIGlmICghdi51cmwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5pbmNsdWRlcygnQHJ1bGU9JykpIHtcbiAgICAgICAgICAgICAgICBsZXQgW2lucHV0LCBjb2RlXSA9IHVybC5zcGxpdCgnQHJ1bGU9JylcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBjb2RlLnJlcGxhY2UoL15qczovLCAnanM6dmFyIGlucHV0PVwiJyArIGlucHV0ICsgJ1wiOycpXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBNWV9SVUxFLmNvbF90eXBlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSkge1xuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gdi51cmwubWF0Y2goL15oaWtlcjpcXC9cXC9wYWdlXFwvKC4rPykoPzpcXD8uKik/JC8pWzFdLFxuICAgICAgICAgICAgICAgICAgICBzdWJQYWdlID0gTVlfUlVMRS5wYWdlTGlzdC5maW5kKHYgPT4gdi5wYXRoID09IHBhdGgpXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXG4gICAgICAgICAgICAgICAgUlVMRS5wYXJhbXMgPSB2LmV4dHJhIHx8IHt9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUpIHsgcmV0dXJuIHYgfVxuICAgICAgICAgICAgdi5leHRyYSA9IHsgdXJsOiB2LnVybCwgUlVMRTogUlVMRSB9XG4gICAgICAgICAgICB2LnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRWYXIoJ215Q29sbGVjdGlvbicpXG4gICAgICAgICAgICByZXR1cm4gdlxuICAgICAgICB9KSlcbiAgICAgICAgaWYgKCFzZWFyY2hNb2RlKSBteUNvbGxlY3Rpb25fZWwucHVzaChzZWFyY2hDb3VudClcbiAgICAgICAgbWV0aG9kX3NldFJlc3VsdC5pbnZva2UoamF2YUNvbnRleHQsIG15Q29sbGVjdGlvbl9lbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRIb21lUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0U2VhcmNoUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXG4gICAgfVxuXG4gICAgZXZhbChNWV9SVUxFLmZpbmRfcnVsZS5zbGljZSgzKSlcbn0gZWxzZSB7XG4gICAgbGV0IGZpbmRSdWxlID0gTVlfUlVMRS5maW5kX3J1bGUuc3BsaXQoJzsnKVxuICAgIHBhcnNlRG9tRm9yQXJyYXkoaW5kZXhIdG1sLCBmaW5kUnVsZS5zaGlmdCgpKS5mb3JFYWNoKChkYXRhKSA9PiB7XG4gICAgICAgIGxldCBbdGl0bGUsIHVybCwgZGVzYywgY29udGVudCwgaW1nXSA9IGZpbmRSdWxlLm1hcCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKHYgPT0gJyonKSByZXR1cm4gJydcbiAgICAgICAgICAgIGVsc2UgdiA9IChpID09IDEgfHwgaSA9PSA0KSA/XG4gICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxuICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChkYXRhLCB2KVxuICAgICAgICAgICAgaWYgKGkgIT0gMSkgdiA9IHJ1bkNvZGUodilcbiAgICAgICAgICAgIHJldHVybiB2XG4gICAgICAgIH0pLFxuICAgICAgICAgICAgcmVzID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgaW1nOiBpbWdcbiAgICAgICAgICAgIH1cbiAgICAgICAgaWYgKHJlcy51cmwpIHtcbiAgICAgICAgICAgIGlmIChyZXMudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcbiAgICAgICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXG5PYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KE1ZX1JVTEUpICsgJyk7JylcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTVlfUlVMRS5kZXRhaWxfZmluZF9ydWxlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRWYXIoJ215Q29sbGVjdGlvbicpXG4gICAgICAgICAgICAgICAgcmVzLmV4dHJhID0geyB1cmw6IHVybCwgUlVMRTogTVlfUlVMRSB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbXlDb2xsZWN0aW9uX2VsLnB1c2gocmVzKVxuICAgICAgICBpZiAoIXNlYXJjaE1vZGUpIG15Q29sbGVjdGlvbl9lbC5wdXNoKHNlYXJjaENvdW50KVxuICAgIH0pXG4gICAgc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcbn1cbiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJ0ZXh0XzFcIixcIm5hbWVcIjpcIkNsYXNzVGFiXCIsXCJwYXRoXCI6XCJDbGFzc1RhYlwiLFwicnVsZVwiOlwiZnVuY3Rpb24gQ2xhc3NUYWIoY2xhc3NBcnJheSwgcGFyYW1zKSB7XFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKVxcbiAgICB0aGlzLmFyciA9IGNsYXNzQXJyYXkubWFwKHYgPT4gdGhpcy5pbml0KHYpKVxcbiAgICB0aGlzLnNpZ24gPSAnJCcgKyBNWV9SVUxFLnRpdGxlICsgJ18nICsgKHRoaXMubmFtZSB8fCAnJykgKyAnXydcXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29sb3IgfHwgJyMxMmI2NjgnXFxuICAgIHRoaXMuYm91bmRhcnkgPSB0aGlzLmJvdW5kYXJ5IHx8ICdibGFua19ibG9jaydcXG59XFxuQ2xhc3NUYWIucHJvdG90eXBlID0ge1xcbiAgICBjb25zdHJ1Y3RvcjogQ2xhc3NUYWIsXFxuICAgIGxvYWQoZWwpIHtcXG4gICAgICAgIGxldCBmb2xkZWQgPSBnZXRWYXIoJ2ZvbGRfJyArIHRoaXMuc2lnbiwgJycpXFxuICAgICAgICBpZiAodGhpcy5mb2xkKSBlbC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojMDQ5ZWZmXFxcIj4nICsgKGZvbGRlZCA/ICfilrYnIDogJ+KWvCcpLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc2lnbiwgZm9sZGVkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignZm9sZF8nICsgc2lnbiwgeyAnJzogJ1QnLCAnVCc6ICcnIH0gW2ZvbGRlZF0pXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgdGhpcy5zaWduLCBmb2xkZWQpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pXFxuICAgICAgICBsZXQgYXJyID0gZm9sZGVkID8gW3RoaXMuYXJyWzBdXSA6IHRoaXMuYXJyXFxuICAgICAgICBhcnIuZm9yRWFjaCgodikgPT4ge1xcbiAgICAgICAgICAgIGxldCB7IGlkLCBjbGFzc19uYW1lLCBjbGFzc191cmwgfSA9IHYsXFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRDbGFzcyhpZCkpXFxuICAgICAgICAgICAgY2xhc3NfbmFtZS5mb3JFYWNoKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBjbGFzc191cmxbaV0sXFxuICAgICAgICAgICAgICAgICAgICBub3cgPSBKU09OLnN0cmluZ2lmeSh7IG5hbWU6IG5hbWUsIHVybDogdXJsIH0pXFxuICAgICAgICAgICAgICAgIGVsLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChzZWxlY3RlZCA9PSBub3cgPyAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcImNvbG9yOicgKyB0aGlzLmNvbG9yICsgJ1xcXCI+PGI+JyA6ICcnKSArIG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZ24sIGlkLCBub3cpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoc2lnbiArIGlkLCBub3cpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKHNpZ24sIG5vdylcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnNpZ24sIGlkLCBub3cpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgZWwucHVzaCh7IGNvbF90eXBlOiB0aGlzLmJvdW5kYXJ5IH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBpbml0KGNsYXNzT2JqZWN0KSB7XFxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzT2JqZWN0LmNsYXNzX25hbWUgPT0gJ3N0cmluZycpXFxuICAgICAgICAgICAgY2xhc3NPYmplY3QuY2xhc3NfbmFtZSA9IGNsYXNzT2JqZWN0LmNsYXNzX25hbWUuc3BsaXQoJyYnKVxcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc09iamVjdC5jbGFzc191cmwgPT0gJ3N0cmluZycpXFxuICAgICAgICAgICAgY2xhc3NPYmplY3QuY2xhc3NfdXJsID0gY2xhc3NPYmplY3QuY2xhc3NfdXJsLnNwbGl0KCcmJylcXG4gICAgICAgIHJldHVybiBjbGFzc09iamVjdFxcbiAgICB9LFxcbiAgICBwdXNoKGNsYXNzT2JqZWN0KSB7XFxuICAgICAgICB0aGlzLmFyci5wdXNoKHRoaXMuaW5pdChjbGFzc09iamVjdCkpXFxuICAgIH0sXFxuICAgIGdldENsYXNzKGlkKSB7XFxuICAgICAgICBsZXQgZGVmYXVsdENsYXNzID0gdGhpcy5hcnIuZmluZChpdGVtID0+IGl0ZW0uaWQgPT0gaWQpXFxuICAgICAgICBpZiAoZGVmYXVsdENsYXNzKSBkZWZhdWx0Q2xhc3MgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgbmFtZTogZGVmYXVsdENsYXNzLmNsYXNzX25hbWVbMF0sXFxuICAgICAgICAgICAgdXJsOiBkZWZhdWx0Q2xhc3MuY2xhc3NfdXJsWzBdXFxuICAgICAgICB9KVxcbiAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmaW5kIGlkOiAnICsgaWQgKyAnIGluIGNsYXNzVGFiOiAnICsgdGhpcy5zaWduKVxcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZ2V0VmFyKHRoaXMuc2lnbiArIGlkLCBkZWZhdWx0Q2xhc3MpKVxcbiAgICB9LFxcbiAgICBnZXRMYXN0Q2xpY2soKSB7XFxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShnZXRWYXIodGhpcy5zaWduLCAne30nKSlcXG4gICAgfSxcXG4gICAgc2V0VXJsKHVybCkge1xcbiAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKC9cXFxcJFxcXFx7KFtefV0qKVxcXFx9L2csIChfLCBpZCkgPT4gdGhpcy5nZXRDbGFzcyhpZCkudXJsKVxcbiAgICB9XFxufVxcbiQuZXhwb3J0cyA9IENsYXNzVGFiXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobVcIixcInBhdGhcIjpcImluZGV4TG9hZFwiLFwicnVsZVwiOlwianM6XFxucHV0VmFyKCdteUNvbGxlY3Rpb24tc2VhcmNoTW9kZScsIE1ZX1BBUkFNUy5SVUxFLnRpdGxlKVxcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJ2NsZWFyVmFyKFxcXCJteUNvbGxlY3Rpb24tc2VhcmNoTW9kZVxcXCIpJylcXG5sZXQgbXlDb2xsZWN0aW9uX2VsID0gW10sXFxuICAgIHBhZ2VOdW0gPSBwYXJzZUludChnZXRQYXJhbSgncGFnZScpKSxcXG4gICAgZnlBbGwgPSBNWV9QQVJBTVMuUlVMRS51cmwuaW5jbHVkZXMoJ2Z5QWxsJylcXG4vLyDliqDovb1DbGFzc1RhYue7hOS7tlxcbmNvbnN0IENsYXNzVGFiID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvQ2xhc3NUYWI/cnVsZT0nICsgZ2V0VmFyKCdteUNvbGxlY3Rpb24nKSlcXG5sZXQgdGFiSGVhZGVyID0gW11cXG53aXRoKE1ZX1BBUkFNUy5SVUxFKSB7XFxuICAgIGlmIChjbGFzc19uYW1lKSB0YWJIZWFkZXIucHVzaCh7XFxuICAgICAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5Y2xhc3MnLFxcbiAgICAgICAgY2xhc3NfbmFtZTogY2xhc3NfbmFtZSxcXG4gICAgICAgIGNsYXNzX3VybDogY2xhc3NfdXJsXFxuICAgIH0pXFxuICAgIGlmIChhcmVhX25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXG4gICAgICAgIGlkOiBmeUFsbCA/ICdmeUFsbCcgOiAnZnlhcmVhJyxcXG4gICAgICAgIGNsYXNzX25hbWU6IGFyZWFfbmFtZSxcXG4gICAgICAgIGNsYXNzX3VybDogYXJlYV91cmxcXG4gICAgfSlcXG4gICAgaWYgKHllYXJfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICAgICAgaWQ6IGZ5QWxsID8gJ2Z5QWxsJyA6ICdmeXllYXInLFxcbiAgICAgICAgY2xhc3NfbmFtZTogeWVhcl9uYW1lLFxcbiAgICAgICAgY2xhc3NfdXJsOiB5ZWFyX3VybFxcbiAgICB9KVxcbiAgICBpZiAoc29ydF9uYW1lKSB0YWJIZWFkZXIucHVzaCh7XFxuICAgICAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5c29ydCcsXFxuICAgICAgICBjbGFzc19uYW1lOiBzb3J0X25hbWUsXFxuICAgICAgICBjbGFzc191cmw6IHNvcnRfdXJsXFxuICAgIH0pXFxufVxcbnRhYkhlYWRlciA9IG5ldyBDbGFzc1RhYih0YWJIZWFkZXIpXFxuaWYgKHBhZ2VOdW0gPT0gMSkgdGFiSGVhZGVyLmxvYWQobXlDb2xsZWN0aW9uX2VsKVxcbi8vIOWkhOeQhk1ZX1VSTOWSjE1ZX1JVTEVcXG53aXRoKE1ZX1BBUkFNUy5SVUxFKSB7XFxuICAgIE1ZX1VSTCA9IGZ5QWxsID8gdXJsLnJlcGxhY2UoL2Z5QWxsL2csICckJHtmeUFsbH0nKSA6XFxuICAgICAgICB1cmwucmVwbGFjZSgvZnkoY2xhc3N8YXJlYXx5ZWFyfHNvcnQpL2csICckJHtmeSQxfScpXFxuICAgIE1ZX1VSTCA9IHRhYkhlYWRlci5zZXRVcmwoTVlfVVJMKVxcblxcbiAgICBNWV9SVUxFLnZlcnNpb24gPSB2ZXJzaW9uXFxuICAgIE1ZX1JVTEUuZ3JvdXAgPSBncm91cFxcbiAgICBNWV9SVUxFLnRpdGxlID0gdGl0bGVcXG4gICAgTVlfUlVMRS51cmwgPSBNWV9VUkxcXG4gICAgTVlfUlVMRS51YSA9IHVhXFxuICAgIE1ZX1JVTEUuY29sX3R5cGUgPSBjb2xfdHlwZVxcbiAgICBNWV9SVUxFLmRldGFpbF9jb2xfdHlwZSA9IGRldGFpbF9jb2xfdHlwZVxcbiAgICBNWV9SVUxFLmZpbmRfcnVsZSA9IGZpbmRfcnVsZVxcbiAgICBNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUgPSBkZXRhaWxfZmluZF9ydWxlXFxuICAgIE1ZX1JVTEUucGFnZUxpc3QgPSBKU09OLnBhcnNlKHBhZ2VzKVxcbiAgICBNWV9SVUxFLnBhZ2VzID0gSlNPTi5zdHJpbmdpZnkoTVlfUlVMRS5wYWdlTGlzdClcXG4gICAgTVlfUlVMRS5wYXJhbXMgPSB7fVxcbn1cXG5pZiAocGFnZU51bSA9PSAxKSB7XFxuICAgIGV2YWwoTVlfUEFSQU1TLlJVTEUucHJlUnVsZSlcXG4gICAgaWYoTVlfUEFSQU1TLlJVTEUuc2VhcmNoX3VybCkgbXlDb2xsZWN0aW9uX2VsLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmkJzntKJcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIuaQnOS9oOaDs+imgeeahC4uLlxcXCIsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9zZWFyY2g/cz0nK2lucHV0KycmcnVsZT0nK2dldFZhcignbXlDb2xsZWN0aW9uJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIH0pXFxufVxcbi8vIOato+aWh+ino+aekFxcbmNvbnN0IHsgcnVuQ29kZSwgdXJsUGFyc2UgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3V0aWxpdHk/cnVsZT0nICsgZ2V0VmFyKCdteUNvbGxlY3Rpb24nKSlcXG5sZXQgaW5kZXhIdG1sID0gdXJsUGFyc2UoTVlfVVJMLCBwYWdlTnVtKVxcbmlmIChNWV9SVUxFLmZpbmRfcnVsZS5zdGFydHNXaXRoKCdqczonKSkge1xcbiAgICBmdW5jdGlvbiBnZXRSZXNDb2RlKCkge1xcbiAgICAgICAgcmV0dXJuIGluZGV4SHRtbFxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHNldFJlc3VsdChlbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgcGFyYW0xID0gQ0FMTEJBQ0tfS0VZXFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFXFxuICAgICAgICBwYXJhbTMgPSBNWV9UWVBFXFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbC5kYXRhKSkgZWwgPSBlbC5kYXRhXFxuXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShteUNvbGxlY3Rpb25fZWwsIGVsLm1hcCgodikgPT4ge1xcbiAgICAgICAgICAgIGxldCBSVUxFID0gT2JqZWN0LmFzc2lnbih7fSwgTVlfUlVMRSlcXG4gICAgICAgICAgICB2LmNvbF90eXBlID0gdi5jb2xfdHlwZSB8fCBNWV9SVUxFLmNvbF90eXBlXFxuXFxuICAgICAgICAgICAgaWYgKCF2LnVybCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBbaW5wdXQsIGNvZGVdID0gdXJsLnNwbGl0KCdAcnVsZT0nKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBjb2RlLnJlcGxhY2UoL15qczovLCAnanM6dmFyIGlucHV0PVxcXCInICsgaW5wdXQgKyAnXFxcIjsnKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9jb2xfdHlwZSA9IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHYudXJsLm1hdGNoKC9eaGlrZXI6XFxcXC9cXFxcL3BhZ2VcXFxcLyguKz8pKD86XFxcXD8uKik/JC8pWzFdLFxcbiAgICAgICAgICAgICAgICAgICAgc3ViUGFnZSA9IE1ZX1JVTEUucGFnZUxpc3QuZmluZCh2ID0+IHYucGF0aCA9PSBwYXRoKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBzdWJQYWdlLnJ1bGVcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXFxuICAgICAgICAgICAgICAgIFJVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIU1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSkgeyByZXR1cm4gdiB9XFxuICAgICAgICAgICAgdi5leHRyYSA9IHsgdXJsOiB2LnVybCwgUlVMRTogUlVMRSB9XFxuICAgICAgICAgICAgdi51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0VmFyKCdteUNvbGxlY3Rpb24nKVxcbiAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICB9KSlcXG4gICAgICAgIG1ldGhvZF9zZXRSZXN1bHQuaW52b2tlKGphdmFDb250ZXh0LCBteUNvbGxlY3Rpb25fZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0SG9tZVJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxuICAgICAgICBzZXRSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBzZXRTZWFyY2hSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZXZhbChNWV9SVUxFLmZpbmRfcnVsZS5zbGljZSgzKSlcXG59IGVsc2Uge1xcbiAgICBsZXQgZmluZFJ1bGUgPSBNWV9SVUxFLmZpbmRfcnVsZS5zcGxpdCgnOycpXFxuICAgIHBhcnNlRG9tRm9yQXJyYXkoaW5kZXhIdG1sLCBmaW5kUnVsZS5zaGlmdCgpKS5mb3JFYWNoKChkYXRhKSA9PiB7XFxuICAgICAgICBsZXQgW3RpdGxlLCBpbWcsIGRlc2MsIHVybF0gPSBmaW5kUnVsZS5tYXAoKHYsIGkpID0+IHtcXG4gICAgICAgICAgICBpZiAodiA9PSAnKicpIHJldHVybiAnJ1xcbiAgICAgICAgICAgIGVsc2UgdiA9IChpID09IDEgfHwgaSA9PSAzKSA/XFxuICAgICAgICAgICAgICAgIHBhcnNlRG9tKGRhdGEsIHYpIDpcXG4gICAgICAgICAgICAgICAgcGFyc2VEb21Gb3JIdG1sKGRhdGEsIHYpXFxuICAgICAgICAgICAgaWYgKGkgIT0gMykgdiA9IHJ1bkNvZGUodilcXG4gICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgfSksXFxuICAgICAgICAgICAgcmVzID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9XFxuICAgICAgICBpZiAocmVzLnVybCkge1xcbiAgICAgICAgICAgIGlmIChyZXMudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcXG4gICAgICAgICAgICAgICAgcmVzLnVybCA9IHJlcy51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXG5PYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KE1ZX1JVTEUpICsgJyk7JylcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKE1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSkge1xcbiAgICAgICAgICAgICAgICByZXMudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWxMb2FkP3J1bGU9JyArIGdldFZhcignbXlDb2xsZWN0aW9uJylcXG4gICAgICAgICAgICAgICAgcmVzLmV4dHJhID0geyB1cmw6IHVybCwgUlVMRTogTVlfUlVMRSB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgbXlDb2xsZWN0aW9uX2VsLnB1c2gocmVzKVxcbiAgICB9KVxcbiAgICBzZXRSZXN1bHQobXlDb2xsZWN0aW9uX2VsKVxcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsTG9hZFwiLFwicnVsZVwiOlwianM6XFxubGV0IG15Q29sbGVjdGlvbl9lbCA9IFtdXFxuLy8g5aSE55CGTVlfVVJM5ZKMTVlfUlVMRVxcbndpdGgoTVlfUEFSQU1TLlJVTEUpIHtcXG4gICAgTVlfUlVMRS52ZXJzaW9uID0gdmVyc2lvblxcbiAgICBNWV9SVUxFLmdyb3VwID0gZ3JvdXBcXG4gICAgTVlfUlVMRS50aXRsZSA9IHRpdGxlXFxuICAgIE1ZX1JVTEUudWEgPSB1YVxcbiAgICBNWV9SVUxFLmNvbF90eXBlID0gZGV0YWlsX2NvbF90eXBlXFxuICAgIE1ZX1JVTEUuZmluZF9ydWxlID0gZGV0YWlsX2ZpbmRfcnVsZVxcbiAgICBNWV9SVUxFLnBhZ2VMaXN0ID0gcGFnZUxpc3RcXG4gICAgTVlfUlVMRS5wYWdlcyA9IHBhZ2VzXFxuICAgIE1ZX1JVTEUucGFyYW1zID0gcGFyYW1zXFxufVxcbk1ZX1BBUkFNUyA9IE1ZX1JVTEUucGFyYW1zXFxuLy8g6Kej5p6Q5q2j5paHXFxuaWYgKE1ZX1JVTEUuZmluZF9ydWxlLnN0YXJ0c1dpdGgoJ2pzOicpKSB7XFxuICAgIGZ1bmN0aW9uIHNldFJlc3VsdChlbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgcGFyYW0xID0gQ0FMTEJBQ0tfS0VZXFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFXFxuICAgICAgICBwYXJhbTMgPSBNWV9UWVBFXFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbC5kYXRhKSkgZWwgPSBlbC5kYXRhXFxuXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShteUNvbGxlY3Rpb25fZWwsIGVsLm1hcCgodikgPT4ge1xcbiAgICAgICAgICAgIGxldCBSVUxFID0gT2JqZWN0LmFzc2lnbih7fSwgTVlfUlVMRSlcXG4gICAgICAgICAgICB2LmNvbF90eXBlID0gdi5jb2xfdHlwZSB8fCBNWV9SVUxFLmNvbF90eXBlXFxuXFxuICAgICAgICAgICAgaWYgKCF2LnVybCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBbaW5wdXQsIGNvZGVdID0gdXJsLnNwbGl0KCdAcnVsZT0nKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBjb2RlLnJlcGxhY2UoL15qczovLCAnanM6dmFyIGlucHV0PVxcXCInICsgaW5wdXQgKyAnXFxcIjsnKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9jb2xfdHlwZSA9IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHYudXJsLm1hdGNoKC9eaGlrZXI6XFxcXC9cXFxcL3BhZ2VcXFxcLyguKz8pKD86XFxcXD8uKik/JC8pWzFdLFxcbiAgICAgICAgICAgICAgICAgICAgc3ViUGFnZSA9IE1ZX1JVTEUucGFnZUxpc3QuZmluZCh2ID0+IHYucGF0aCA9PSBwYXRoKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBzdWJQYWdlLnJ1bGVcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXFxuICAgICAgICAgICAgICAgIFJVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxcbiAgICAgICAgICAgIH0gZWxzZSB7IHJldHVybiB2IH1cXG4gICAgICAgICAgICB2LmV4dHJhID0geyB1cmw6IHYudXJsLCBSVUxFOiBSVUxFIH1cXG4gICAgICAgICAgICB2LnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRWYXIoJ215Q29sbGVjdGlvbicpXFxuICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgIH0pKVxcbiAgICAgICAgbWV0aG9kX3NldFJlc3VsdC5pbnZva2UoamF2YUNvbnRleHQsIG15Q29sbGVjdGlvbl9lbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBzZXRIb21lUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXG4gICAgICAgIHNldFJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHNldFNlYXJjaFJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxuICAgICAgICBzZXRSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXG4gICAgfVxcblxcbiAgICBldmFsKE1ZX1JVTEUuZmluZF9ydWxlLnNsaWNlKDMpKVxcbn0gZWxzZSB7XFxuICAgIGxldCBmaW5kUnVsZSA9IE1ZX1JVTEUuZmluZF9ydWxlLnNwbGl0KCc7JylcXG4gICAgcGFyc2VEb21Gb3JBcnJheShpbmRleEh0bWwsIGZpbmRSdWxlLnNoaWZ0KCkpLmZvckVhY2goKGRhdGEpID0+IHtcXG4gICAgICAgIGxldCBbdGl0bGUsIGltZywgZGVzYywgdXJsXSA9IGZpbmRSdWxlLm1hcCgodiwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAodiA9PSAnKicpIHJldHVybiAnJ1xcbiAgICAgICAgICAgICAgICBlbHNlIHYgPSAoaSA9PSAxIHx8IGkgPT0gMykgP1xcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VEb21Gb3JIdG1sKGRhdGEsIHYpXFxuICAgICAgICAgICAgICAgIGlmIChpICE9IDMpIHYgPSBydW5Db2RlKHYpXFxuICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgcmVzID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9XFxuICAgICAgICBpZiAocmVzLnVybCAmJiByZXMudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpXFxuICAgICAgICAgICAgcmVzLnVybCA9IHJlcy51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXG5PYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KE1ZX1JVTEUpICsgJyk7JylcXG4gICAgICAgIG15Q29sbGVjdGlvbl9lbC5wdXNoKHJlcylcXG4gICAgfSlcXG4gICAgc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlbDmja7ovb3lhaVcIixcInBhdGhcIjpcImRhdGFMb2FkXCIsXCJydWxlXCI6XCIvL+ecn+ato+iOt+WPluaVsOaNrueahOmAu+i+kVxcbmZ1bmN0aW9uIGxvYWQoKSB7XFxuICAgIGxldCBkID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbG9jYWxEYXRhJykpLnJ1bGUpXFxuICAgIHJldHVybiBkLmZpbHRlcigodikgPT4geyByZXR1cm4gdi50aXRsZSAhPSBNWV9SVUxFLnRpdGxlICYmIHYuYXV0aG9yIT1cXFwi6L275ZCI6ZuG55Sf5oiQ5ZmoXFxcIiB9KVxcbn1cXG4vL+ajgOafpemXtOmalO+8jOm7mOiupOS4gOWkqVxcbmxldCBtaW4gPSA2MCAqIDI0ICogMVxcblxcblxcbmxldCBkYXRhID0gW11cXG5sZXQgdGltZSA9IGdldEl0ZW0oXFxcInVwZGF0ZXRpbWVcXFwiLCBcXFwiMFxcXCIpXFxudGltZSA9IHBhcnNlSW50KHRpbWUpXFxubGV0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXFxuaWYgKG5vdyAtIHRpbWUgPiAxMDAwICogNjAgKiBtaW4pIHtcXG4gICAgbG9nKFxcXCLmm7TmlrDkuobmlbDmja5cXFwiKVxcbiAgICBzZXRJdGVtKFxcXCJ1cGRhdGV0aW1lXFxcIiwgXFxcIlxcXCIgKyBub3cpXFxuICAgIGRhdGEgPSBsb2FkKClcXG4gICAgc2F2ZUZpbGUoXFxcImRhdGEuanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KGRhdGEpKVxcbn0gZWxzZSB7XFxuICAgIGxvZyhcXFwi5rKh5pyJ5pu05paw5pWw5o2uXFxcIilcXG4gICAgZGF0YSA9IEpTT04ucGFyc2UocmVhZEZpbGUoXFxcImRhdGEuanNvblxcXCIpKVxcbn1cXG4kLmV4cG9ydHMgPSBkYXRhXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmnKzlnLDmlbDmja5cIixcInBhdGhcIjpcImxvY2FsRGF0YVwiLFwicnVsZVwiOlwiW3tcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLlvbHop4ZcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIuemu+WIq1xcXCIsXFxuICAgIFxcXCJ1cmxcXFwiOiBcXFwiaHR0cDovLzA3eXMuY24vaW5kZXgucGhwL3ZvZC9zaG93L2FyZWEvZnlhcmVhL2J5L2Z5c29ydC9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlL3llYXIvZnl5ZWFyLmh0bWxcXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IDAsXFxuICAgIFxcXCJjb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8zXFxcIixcXG4gICAgXFxcImNsYXNzX25hbWVcXFwiOiBcXFwi55S15b2xJueUteinhuWJpybnu7zoibom5Yqo5ryrJnx8JuWKqOS9nOeJhybllpzliafniYcm54ix5oOF54mHJuenkeW5u+eJhybmgZDmgJbniYcm5Ymn5oOF54mHJuaImOS6ieeJhyZ8fCblm73kuqfliacm5riv5Y+w5YmnJuaXpemfqeWJpybmrKfnvo7liadcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcIjEmMiYzJjQmfHwmNiY3JjgmOSYxMCYxMSYxMiZ8fCYxMyYxNCYxNSYxNlxcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwi5Zyw5Yy6JuWkp+mZhibpppnmuK8m5Y+w5rm+Jue+juWbvSbms5Xlm70m6Iux5Zu9JuaXpeacrCbpn6nlm70m5b635Zu9JuazsOWbvSbljbDluqYm5oSP5aSn5YipJuilv+ePreeJmSbliqDmi7/lpKcm5YW25LuWXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIjAm5aSn6ZmGJummmea4ryblj7Dmub4m576O5Zu9JuazleWbvSboi7Hlm70m5pel5pysJumfqeWbvSblvrflm70m5rOw5Zu9JuWNsOW6pibmhI/lpKfliKkm6KW/54+t54mZJuWKoOaLv+Wkpyblhbbku5ZcXFwiLFxcbiAgICBcXFwic29ydF9uYW1lXFxcIjogXFxcIuaXtumXtCbng63pl6gm6K+E5YiGJuaOqOiNkFxcXCIsXFxuICAgIFxcXCJ5ZWFyX25hbWVcXFwiOiBcXFwi5bm05LujJjIwMjEmMjAyMCYyMDE5JjIwMTgmMjAxNyYyMDE2JjIwMTUmMjAxNCYyMDEzJjIwMTImMjAxMSYyMDEwJjIwMDkmMjAwOCYyMDA3JjIwMDYmMjAwNSbmm7Tml6lcXFwiLFxcbiAgICBcXFwic29ydF91cmxcXFwiOiBcXFwidGltZSZoaXRzJnNjb3JlJmNvbW1lbmRcXFwiLFxcbiAgICBcXFwieWVhcl91cmxcXFwiOiBcXFwiJnllYXIvMjAyMSZ5ZWFyLzIwMjAmeWVhci8yMDE5JnllYXIvMjAxOCZ5ZWFyLzIwMTcmeWVhci8yMDE2JnllYXIvMjAxNSZ5ZWFyLzIwMTQmeWVhci8yMDEzJnllYXIvMjAxMiZ5ZWFyLzIwMTEmeWVhci8yMDEwJnllYXIvMjAwOSZ5ZWFyLzIwMDgmeWVhci8yMDA3JnllYXIvMjAwNiZ5ZWFyLzIwMDUmeWVhci8yMDA0XFxcIixcXG4gICAgXFxcImZpbmRfcnVsZVxcXCI6IFxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG50cnkge1xcXFxuICAgIC8v5a6a5L2N5YiX6KGoXFxcXG4gICAgdmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgJ2JvZHkmJi5mZWQtbGlzdC1pbmZvJiZsaScpO1xcXFxuICAgIGZvciAodmFyIGogaW4gbGlzdCkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgLy/lrprkvY3moIfpophcXFxcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJy5mZWQtbGlzdC10aXRsZSYmVGV4dCcpLFxcXFxuICAgICAgICAgICAgLy/lrprkvY3mj4/ov7BcXFxcbiAgICAgICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnLmZlZC1saXN0LXJlbWFya3MmJlRleHQnKSxcXFxcbiAgICAgICAgICAgIC8v5a6a5L2N5Zu+54mHXFxcXG4gICAgICAgICAgICBwaWNfdXJsOiBwYXJzZURvbShsaXN0W2pdLCAnLmZlZC1saXN0LXBpY3MmJmRhdGEtb3JpZ2luYWwnKSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAvL+WumuS9jemTvuaOpVxcXFxuICAgICAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpICsgXFxcXFxcXCIjaW1tZXJzaXZlVGhlbWUjXFxcXFxcXCJcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufSBjYXRjaCAoZSkge31cXFxcbnNldFJlc3VsdChkKTtcXFwiLFxcbiAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJodHRwOi8vMDd5cy5jbi9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sXFxcIixcXG4gICAgXFxcInRpdGxlQ29sb3JcXFwiOiBcXFwiI2ZmMjI4YmU2XFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuKRouWFjeWXheaOolxcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcblxcXFxuLy/lrprkvY3liJfooahcXFxcbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksICcuZmVkLW1haW4taW5mbyYmZGwnKTtcXFxcbmZvciAodmFyIGogaW4gbGlzdCkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIC8v5a6a5L2N5qCH6aKYXFxcXG4gICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ2gxJiZUZXh0JyksXFxcXG4gICAgICAgIC8v5a6a5L2N5o+P6L+wXFxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnLmZlZC1saXN0LXJlbWFya3MmJlRleHQnKSxcXFxcbiAgICAgICAgLy/lrprkvY3nrZLku4tcXFxcbiAgICAgICAgY29udGVudDogcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICcuZmVkLXBhcnQtZXNhbiYmVGV4dCcpLFxcXFxuICAgICAgICAvL+WumuS9jeWbvueJh1xcXFxuICAgICAgICBpbWc6IHBhcnNlRG9tKGxpc3Rbal0sICcuZmVkLWxpc3QtcGljcyYmZGF0YS1vcmlnaW5hbCcpICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcbiAgICAgICAgLy/lrprkvY3pk77mjqVcXFxcbiAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2pdLCAnaDEmJmEmJmhyZWYnKSArIFxcXFxcXFwiI2ltbWVyc2l2ZVRoZW1lI1xcXFxcXFwiXFxcXG4gICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRTZWFyY2hSZXN1bHQocmVzKTtcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcInRleHRfM1xcXCIsXFxuICAgIFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcXFxuXFxcXG4vL+aWreW/teaPkuS7ti/lhY3ll4VcXFxcbmQucHVzaCh7XFxcXG4gICAgZGVzYzogJzEwMCUmJmZsb2F0JyxcXFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcXFxufSk7XFxcXG5cXFxcblxcXFxudmFyIF94NSA9ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgIGZiYS5sb2coZmJhLmdldFVybHMoKSlcXFxcbiAgICB2YXIgdXJscyA9IF9nZXRVcmxzKClcXFxcbiAgICBmb3IgKHZhciBpIGluIHVybHMpIHtcXFxcbiAgICAgICAgaWYgKHVybHNbaV0ubWF0Y2goL1xcXFxcXFxcLm1wM3xcXFxcXFxcXC5tcDR8XFxcXFxcXFwubTN1OC8pKSB7XFxcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmxvZyh1cmxzW2ldKVxcXFxuICAgICAgICAgICAgcmV0dXJuIHVybHNbaV07XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59KTtcXFxcblxcXFxudmFyIGFydHMgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsJ2JvZHkmJi5mZWQtZHJvcC10b3BzJiZ1bCYmbGknKTtcXFxcbnZhciB0YWJzID0gW107XFxcXG5mb3IgKHZhciBpIGluIGFydHMpIHtcXFxcbiAgICB0YWJzLnB1c2gocGFyc2VEb21Gb3JIdG1sKGFydHNbaV0sICdUZXh0JykpXFxcXG59XFxcXG5cXFxcbnZhciBjb250cyA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwgJ2JvZHkmJi5mZWQtZHJvcC1idG1zJiYuZmVkLXBsYXktaXRlbScpO1xcXFxudmFyIGxpc3RzID1bXTtcXFxcbmZvciAodmFyIGkgaW4gY29udHMpIHtcXFxcbiAgICBsaXN0cy5wdXNoKHBhcnNlRG9tRm9yQXJyYXkoY29udHNbaV0sICd1bDpub3QoLmZlZC1kcm9wLWhlYWQpJiZsaScpKVxcXFxufVxcXFxuXFxcXG5cXFxcbi8v5Lul5LiL5aS05qGGXFxcXG5kLnB1c2goe1xcXFxuICAgIC8v5a6a5L2N5qCH6aKYXFxcXG4gICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLmZlZC1jb2wteHMxMiYmbGksMCYmVGV4dCcpLnN1YnN0cmluZygwLCAxNSkgKyAnXFxcXFxcXFxuJyArIHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLmZlZC1jb2wteHMxMiYmbGksMSYmVGV4dCcpLnN1YnN0cmluZygwLCAxNSkgKyAnXFxcXFxcXFxuJyArIHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLmZlZC1jb2wteHMxMiYmbGksMiYmVGV4dCcpLnN1YnN0cmluZygwLCAxNSksXFxcXG4gICAgLy/lrprkvY3mj4/ov7BcXFxcbiAgICBkZXNjOnBhcnNlRG9tRm9ySHRtbChodG1sLCAnLmZlZC1wYXJ0LWVzYW4mJlRleHQnKS5yZXBsYWNlKCcg44CA44CAJywnJykuc3Vic3RyaW5nKDAsIDIwKSsnXFxcXFxcXFxuJytwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5mZWQtcGFydC1lc2FuJiZUZXh0JykucmVwbGFjZSgnIOOAgOOAgCcsJycpLnN1YnN0cmluZygyMCwgMzUpKyfigKYnLFxcXFxuICAgIC8v5a6a5L2N5Zu+54mHXFxcXG4gICAgcGljX3VybDogcGFyc2VEb20oaHRtbCwgJy5mZWQtbGlzdC1waWNzJiZkYXRhLW9yaWdpbmFsJykgKyAnQFJlZmVyZXI9JyxcXFxcbiAgICB1cmw6IE1ZX1VSTCxcXFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxcXG59KTtcXFxcblxcXFxuXFxcXG4vKiAgIPCfmJwgIOi/memHjOaYr+e6v+i3r+WSjOmAiembhu+8jOWPr+S7peS4jeeUqOS/ruaUue+8ge+8ge+8gSovXFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6ICNGRjAwMDBcXFxcXFxcIj7pgIbluo88L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogIzFhYWQxOVxcXFxcXFwiPuato+W6jzwvc3Bhbj48L2I+JyxcXFxcbiAgICB1cmw6IGBAbGF6eVJ1bGU9LmpzOmxldCBjb25mID0gZ2V0VmFyKCdzaHNvcnQnKTtpZihjb25mPT0nMScpe3B1dFZhcih7a2V5OidzaHNvcnQnLCB2YWx1ZTonMCd9KTt9ZWxzZXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzEnfSl9O3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5o6S5bqP5oiQ5YqfJ2AsXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxufSlcXFxcblxcXFxuZnVuY3Rpb24gc2V0VGFicyh0YWJzLCB2YXJpKSB7XFxcXG4gICAgZm9yICh2YXIgaSBpbiB0YWJzKSB7XFxcXG4gICAgICAgIHZhciB1cmwgPSBcXFxcXFxcIiNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpwdXRWYXIoJ1xcXFxcXFwiICsgdmFyaSArIFxcXFxcXFwiJywgJ1xcXFxcXFwiICsgaSArIFxcXFxcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdcXFxcXFxcIjtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIodmFyaSwgJzAnKSA9PSBpID8gJ+KAnOKAnCcgKyB0YWJzW2ldICsgJ+KAneKAnScgOiB0YWJzW2ldLFxcXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBzZXRMaXN0cyhsaXN0cywgaW5kZXgpIHtcXFxcbiAgICB2YXIgbGlzdCA9IGxpc3RzW2luZGV4XTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snXFxcXG4gICAgfSk7XFxcXG4gICAgaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxcXG4gICAgICAgIGZvciAodmFyIGogPSBsaXN0Lmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XFxcXG4gICAgICAgICAgICB2YXIgam0gPSBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ2EmJlRleHQnKS5yZXBsYWNlKC/nrKx86ZuGfOivnXzmnJ8vZywnJyk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBqbSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXFxcXFwieDVSdWxlOi8vXFxcXFxcXCIrcGFyc2VEb20obGlzdFtqXSwgJ2EmJmhyZWYnKSAgKyAnQCcgKyBfeDUsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IGptLmxlbmd0aCA+IDUgPyAndGV4dF8yJyA6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xcXFxuICAgICAgICAgICAgdmFyIGptID0gcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICdhJiZUZXh0JykucmVwbGFjZSgv56ysfOmbhnzor5185pyfL2csJycpO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogam0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcIng1UnVsZTovL1xcXFxcXFwiK3BhcnNlRG9tKGxpc3Rbal0sICdhJiZocmVmJykgICsgJ0AnICsgX3g1LFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBqbS5sZW5ndGggPiA1ID8gJ3RleHRfMicgOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59XFxcXG5zZXRUYWJzKHRhYnMsIE1ZX1VSTCk7XFxcXG5zZXRMaXN0cyhsaXN0cywgZ2V0VmFyKE1ZX1VSTCwgJzAnKSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAnPGJyPicsXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFwiLFxcbiAgICBcXFwic2RldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcIipcXFwiLFxcbiAgICBcXFwidWFcXFwiOiBcXFwiYXV0b1xcXCIsXFxuICAgIFxcXCJwcmVSdWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJwYWdlc1xcXCI6IFxcXCJbXVxcXCJcXG59LHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJwYWdlTGlzdFxcXCI6IFtdLFxcbiAgICBcXFwidGl0bGVcXFwiOiBcXFwi54mb6YC85b2x6KeGXFxcIixcXG4gICAgXFxcImF1dGhvclxcXCI6IFxcXCJzeHRcXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IDEsXFxuICAgIFxcXCJ1cmxcXFwiOiBcXFwiaHR0cHM6Ly92LmxyZWUuY24vZnljbGFzcy5odG1sP2NhdD1hbGwmYXJlYT1hbGwmeWVhcj1meXllYXImYWN0PWFsbCZyYW5rPWZ5c29ydCZwYWdlbm89ZnlwYWdlXFxcIixcXG4gICAgXFxcImNvbF90eXBlXFxcIjogXFxcIm1vdmllXzNcXFwiLFxcbiAgICBcXFwiY2xhc3NfbmFtZVxcXCI6IFxcXCLnlLXlvbEm55S16KeG5YmnJuWKqOa8qybnu7zoibpcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcIm1vdmllJnR2JmNhcnRvb24mdmFyaWV0eVxcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X25hbWVcXFwiOiBcXFwi5pyA6L+R54Ot5pigJuacgOi/keS4iuaYoCbmnIDlj5flpb3or4RcXFwiLFxcbiAgICBcXFwieWVhcl9uYW1lXFxcIjogXFxcIuWFqOmDqCYyMDIxJjIwMjAmMjAxOSYyMDE4JjIwMTcmMjAxNiYyMDE1JjIwMTQmMjAxMyYyMDEyJjIwMTEmMjAxMCYyMDA5JjIwMDgmMjAwNybmm7Tml6lcXFwiLFxcbiAgICBcXFwic29ydF91cmxcXFwiOiBcXFwicmFua2hvdCZjcmVhdGV0aW1lJnJhbmtwb2ludFxcXCIsXFxuICAgIFxcXCJ5ZWFyX3VybFxcXCI6IFxcXCJhbGwmMjAyMSYyMDIwJjIwMTkmMjAxOCYyMDE3JjIwMTYmMjAxNSYyMDE0JjIwMTMmMjAxMiYyMDExJjIwMTAmMjAwOSYyMDA4JjIwMDcmb3RoZXJcXFwiLFxcbiAgICBcXFwiZmluZF9ydWxlXFxcIjogXFxcIi5zLXRhYi1tYWluJiZsaTsudGl0bGUmJnNwYW4mJlRleHQ7aW1nJiZkYXRhLW9yaWdpbmFsO3NwYW4mJlRleHQ7YSYmaHJlZi5qczonaHR0cHM6Ly92LmxyZWUuY24vJytpbnB1dFxcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcIi5hbS1saXN0JiZsaTtoMyYmVGV4dDthJiZocmVmO3NwYW4mJlRleHQ7LmFtLWxpc3QtbWFpbi0taDMmJlRleHQ7aW1nJiZkYXRhLW9yaWdpbmFsXFxcIixcXG4gICAgXFxcInNlYXJjaF91cmxcXFwiOiBcXFwiaHR0cHM6Ly92LmxyZWUuY24vc2VhcmNoLnBocD93ZD0qKlxcXCIsXFxuICAgIFxcXCJ0aXRsZUNvbG9yXFxcIjogXFxcIiNmZjIyOGJlNlxcXCIsXFxuICAgIFxcXCJncm91cFxcXCI6IFxcXCLovbvlkIjpm4ZcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJqczpcXFxcbnZhciByZXMgPXt9O1xcXFxudmFyIGQ9W107XFxcXG52YXIgaHRtbD1nZXRSZXNDb2RlKCk7XFxcXG5cXFxcblxcXFxucHV0VmFyKFxcXFxcXFwiX3g1XFxcXFxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgIHZhciB1cmxzID0gX2dldFVybHMoKVxcXFxuICAgIGZvciAodmFyIGkgaW4gdXJscykge1xcXFxuICAgICAgICBpZiAodXJsc1tpXS5tYXRjaCgvXFxcXFxcXFwubXAzfFxcXFxcXFxcLm1wNHxcXFxcXFxcXC5tM3U4LykpIHtcXFxcbiAgICAgICAgICAgXFxcXG5pZighdXJsc1tpXS5tYXRjaCgvXFxcXFxcXFwuY3NzfFxcXFxcXFxcLmpzfE0zVThcXFxcXFxcXC5UVi8pKXtcXFxcbiAgICAgICAgICAgIHJldHVybiB1cmxzW2ldXFxcXG59XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59KSlcXFxcbnZhciBsYXp5MiA9IFxcXFxcXFwiQGxhenlSdWxlPS5qczpzaG93TG9hZGluZygn5Yqo5oCB6Kej5p6Q5Lit77yM6K+356iN5YCZJyk7dmFyIGp4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvanhfY2FjaGUudHh0Jyx7fSk7J3g1UnVsZTovLycrangraW5wdXQrJ0AnICsgZ2V0VmFyKCdfeDUnKVxcXFxcXFwiO1xcXFxuLy8uLi4uLi5cXFxcbmQucHVzaCh7XFxcXG4gICAgZGVzYzogJzIyNCYmZmxvYXQnLFxcXFxuICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxcXG59KTtcXFxcblxcXFxuLy9YNeino+aekFxcXFxudmFyIGxhenkxPWBAbGF6eVJ1bGU9LmpzOnZhciBqeCA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9qeF9jYWNoZS50eHRcXFxcXFxcIix7fSk7angraW5wdXQ7YDtcXFxcblxcXFxuaWYgKGdldFZhcigncGxheWVyJywgJzEnKSA9PSAnMScpIHtcXFxcbiAgICB2YXIgbGF6eSA9IGxhenkxO1xcXFxufSBlbHNlIHtcXFxcbiAgICB2YXIgbGF6eSA9IGxhenkyO1xcXFxufVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+WJp+aDheeugOS7iycsXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcXFxufSk7XFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChodG1sLCdib2R5JiYuYW0tcGFuZWwtYmQsLTEmJlRleHQnKS5zdWJzdHIoMCwgMTAwKSsnLi4uLi4nLFxcXFxuICAgIGNvbF90eXBlOiAnbG9uZ190ZXh0JyxcXFxcbn0pO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojMDk4QUMxXFxcXFxcXCI+6Kej5p6Q77yaXFxcXHQ8c3BhbiBzdHlsZT1cXFxcXFxcImZsb2F0OnJpZ2h0XFxcXFxcXCI+4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcXFxcXCIjMGFhMzQ0XFxcXFxcXCI+JyArIGdldFZhcihcXFxcXFxcInNlbFxcXFxcXFwiLCBcXFxcXFxcIuacquefpVxcXFxcXFwiKSArICc8L2ZvbnQ+JyxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwic2VsZWN0Oi8vXFxcXFxcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgIG9wdGlvbnM6IFtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwi6Kej5p6QMSYmaHR0cHM6Ly92aXAucGFyd2l4LmNvbTo0NDMzL3BsYXllci8/dXJsPVxcXFxcXFwiLFxcXFxuXFxcXG4gICAgICAgICAgICBcXFxcXFxcIuino+aekDImJmh0dHBzOi8vangucmVucmVubWkuY2MvP3VybD1cXFxcXFxcIixcXFxcblxcXFxuICAgICAgICAgICAgXFxcXFxcXCLop6PmnpA0JiZodHRwOi8vYnAudHY3NTguY29tOjU0Ny8/dXJsPVxcXFxcXFwiLFxcXFxuXFxcXG4gICAgICAgICAgICBcXFxcXFxcIuino+aekDMmJmh0dHBzOi8vangueG1mbHYuY29tLz91cmw9XFxcXFxcXCIsXFxcXG5cXFxcbiAgICAgICAgXSxcXFxcbiAgICAgICAgY29sOiAxLFxcXFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJzZWxcXFxcXFxcIiwgaW5wdXQuc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKVswXSlcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvanhfY2FjaGUudHh0XFxcXFxcXCIsIGlucHV0LnNwbGl0KFxcXFxcXFwiJiZcXFxcXFxcIilbMV0pO1xcXFxuICAgICAgICB9KVxcXFxuICAgIH0pXFxcXG59KTtcXFxcbmFkZExpc3RlbmVyKFxcXFxcXFwib25DbG9zZVxcXFxcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICBjbGVhclZhcihcXFxcXFxcInNlbFxcXFxcXFwiKVxcXFxufSkpO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn5pKt5pS+5ZmoJyxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyArIGBAbGF6eVJ1bGU9LmpzOnB1dFZhcigncGxheWVyJywgJzEnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3suiuvue9ruS4uum7mOiupOaSreaUvuWZqCdgLFxcXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXFxcbn0pO1xcXFxuXFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICfpu5jorqTmkq3mlL7lmagnLFxcXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknICsgYEBsYXp5UnVsZT0uanM6cHV0VmFyKCdwbGF5ZXInLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey6K6+572u5Li66buY6K6k5pKt5ZmoJ2AsXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcXFxufSk7XFxcXG5cXFxcblxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn5pKt5pS+5YiX6KGoJyxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxcXG59KTtcXFxcblxcXFxudmFyIGxpc3Q9cGFyc2VEb21Gb3JBcnJheShodG1sLCdib2R5JiYuYnRuLXBsYXktc291cmNlJyk7XFxcXG5cXFxcblxcXFx0XFxcXHRmb3IodmFyIGogPSAwOyBqPGxpc3QubGVuZ3RoOyBqKyspe1xcXFxuXFxcXHRcXFxcdFxcXFx0ZC5wdXNoKHtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGl0bGU6cGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sIFxcXFxcXFwiYnV0dG9uJiZUZXh0XFxcXFxcXCIpLFxcXFxuICAgICAgICAgdXJsOnBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCBcXFxcXFxcImJ1dHRvbiYmZGF0YS11cmxcXFxcXFxcIikrbGF6eSxcXFxcbiAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4yPyd0ZXh0XzMnOid0ZXh0XzInLFxcXFxuXFxcXHRcXFxcdFxcXFx0fSk7XFxcXG4gICB9XFxcXG5yZXMuZGF0YT1kO1xcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzNcXFwiLFxcbiAgICBcXFwic2RldGFpbF9maW5kX3J1bGVcXFwiOiBcXFwiKlxcXCIsXFxuICAgIFxcXCJ1YVxcXCI6IFxcXCJhdXRvXFxcIixcXG4gICAgXFxcInByZVJ1bGVcXFwiOiBcXFwiXFxcXG5cXFwiLFxcbiAgICBcXFwicGFnZXNcXFwiOiBcXFwiW11cXFwiLFxcbiAgICBcXFwiaWNvblxcXCI6IFxcXCLwn5GNXFxcIlxcbn1dXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlt6Xlhbfpm4ZcIixcInBhdGhcIjpcInV0aWxpdHlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IHtcXG4gICAgcnVuQ29kZTogZnVuY3Rpb24ocnVsZSkge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgW2lucHV0LCBjb2RlXSA9IHJ1bGUuc3BsaXQoJy5qczonKVxcbiAgICAgICAgICAgIHJldHVybiBjb2RlID8gZXZhbChjb2RlKSA6IHJ1bGVcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIHJ1bGUgfVxcbiAgICB9LFxcbiAgICB1cmxQYXJzZTogZnVuY3Rpb24odXJsLCBwYWdlTnVtKSB7XFxuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJzsnKS5tYXAoKHYpID0+IHYucmVwbGFjZSgv77yb77ybL2csICc7JykpXFxuICAgICAgICB1cmxbMF0gPSB1cmxbMF0ucmVwbGFjZSgvZnlwYWdlKD86QCgtP1xcXFxkKylAKT8oPzpcXFxcKihcXFxcZCspQCk/LywgKF8sIHN0YXJ0LCBzcGFjZSkgPT4gcGFyc2VJbnQoc3RhcnQgfHwgMCkgKyAxICsgKHBhZ2VOdW0gLSAxKSAqIHBhcnNlSW50KHNwYWNlIHx8IDEpKVxcbiAgICAgICAgdXJsWzBdID0gL14oLio/KSg/OlxcXFxbZmlyc3RQYWdlPSguKj8pXFxcXF0pPyQvLmV4ZWModXJsWzBdKVxcbiAgICAgICAgdXJsWzBdID0gcnVuQ29kZSh1cmxbMF1bMl0gJiYgcGFnZU51bSA9PSAxID8gdXJsWzBdWzJdIDogdXJsWzBdWzFdKVxcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluOyBjaGFyc3Q9VVRGLTgnIH0sIG1ldGhvZDogdXJsWzFdIH1cXG4gICAgICAgIC8vIHBvc3Tmlrnms5Xml7bovazmjaLlj4LmlbBcXG4gICAgICAgIGlmICgvXnBvc3QkL2kudGVzdChvcHRpb25zWydtZXRob2QnXSkpIHtcXG4gICAgICAgICAgICBsZXQgW29yaVVybCwgYm9keV0gPSB1cmxbMF0uc3BsaXQoJz8nKVxcbiAgICAgICAgICAgIHVybFswXSA9IG9yaVVybC5yZXBsYWNlKC/vvJ/vvJ8vZywgJz8nKVxcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXJ0c1dpdGgoJ0pzb25Cb2R5PScpKSBib2R5ID0gYm9keS5zbGljZSg5KVxcbiAgICAgICAgICAgIG9wdGlvbnNbJ2JvZHknXSA9IGJvZHlcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmxbMl0pIG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddLnNsaWNlKDAsIDE5KSArIHVybFsyXVxcbiAgICAgICAgaWYgKHVybFszXSkgdXJsWzNdLm1hdGNoKC97KC4qKX0vKVsxXS5zcGxpdCgnJiYnKS5mb3JFYWNoKCh2KSA9PiB7XFxuICAgICAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IHYuc3BsaXQoJ0AnKVxcbiAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1trZXldID0gcnVuQ29kZSh2YWx1ZSlcXG4gICAgICAgIH0pXFxuICAgICAgICAvLyDmt7vliqDlhajlsYBVQVxcbiAgICAgICAgaWYgKCFvcHRpb25zLmhlYWRlcnNbJ1VzZXItQWdlbnQnXSkge1xcbiAgICAgICAgICAgIGlmIChNWV9SVUxFLnVhID09ICdwYycpXFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1snVXNlci1BZ2VudCddID0gUENfVUFcXG4gICAgICAgICAgICBlbHNlIGlmIChNWV9SVUxFLnVhID09ICdtb2JpbGUnKVxcbiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ1VzZXItQWdlbnQnXSA9IE1PQklMRV9VQVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGZldGNoKHVybFswXSwgb3B0aW9ucylcXG4gICAgfVxcbn1cXG5cIn1dIiwiaWNvbiI6IiJ9
Add Comment
Please, Sign In to add comment