Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@福利吧Ⓜ️@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi56aP5Yip5ZCn4pOC77iPIiwiYXV0aG9yIjoiIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSNmeUFsbCNmeXBhZ2UjaHR0cHM6Ly9mdWxpYmEyMDIzLm5ldCIsInZlcnNpb24iOjEsImNvbF90eXBlIjoibW92aWVfMV92ZXJ0aWNhbF9waWMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6Im90aGVyIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG4vL+S7peS4i+aYryDliJfooajop6PmnpDop4TliJnvvIhKU++8iVxudmFyIHJlcyA9IHt9O1xudmFyIGl0ZW0gPSBbXTtcblxuLy8gdmFyIHR5cGU9TVlfVVJMLnNwbGl0KCcjJylbMV07XG52YXIgcGFnZT1NWV9VUkwuc3BsaXQoJyMnKVsyXTtcbnZhciBtVXJsPU1ZX1VSTC5zcGxpdCgnIycpWzNdO1xuXG5pZihnZXRNeVZhcignZnVsaWJhLnRpdGxlQ29sb3InKT09XCJcIikgcHV0TXlWYXIoJ2Z1bGliYS50aXRsZUNvbG9yJyxcIiNGQTcyOThcIik7XG5pZihnZXRNeVZhcignZnVsaWJhLmRlc2NDb2xvcicpPT1cIlwiKSBwdXRNeVZhcignZnVsaWJhLmRlc2NDb2xvcicsXCIjNzA4MDkwXCIpO1xuXG5pZihnZXRNeVZhcignZnVsaWJhLmNhdGVnb3J5TnVtJyk9PVwiXCIpIHB1dE15VmFyKCdmdWxpYmEuY2F0ZWdvcnlOdW0nLCcwJyk7XG5pZihnZXRNeVZhcignZnVsaWJhLnVybCcpPT1cIlwiKSBwdXRNeVZhcignZnVsaWJhLnVybCcsbVVybCk7XG5cbi8v6Ieq5a6a5LmJ6aKc6ImyXG5jb25zdCB0aXRsZUNvbG9yPWdldE15VmFyKCdmdWxpYmEudGl0bGVDb2xvcicpO1xuY29uc3QgZGVzY0NvbG9yID0gZ2V0TXlWYXIoJ2Z1bGliYS5kZXNjQ29sb3InKTtcblxuY29uc3QgY2F0ZWdvcnlOdW0gPSBnZXRNeVZhcignZnVsaWJhLmNhdGVnb3J5TnVtJyk7XG5jb25zdCBjbGlja1VybCA9IGdldE15VmFyKCdmdWxpYmEudXJsJyk7XG5cblxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXCJoaWtlcjovL3BhZ2UvdXNlc1wiKSkucnVsZSk7XG5pZihwYWdlID09PSAnMScpe1xuXG4gICAgdmFyIHRDb2xvciA9IGdldFJhbmdlQ29sb3JzKCk7XG4gICAgdmFyIGRDb2xvciA9IGdldFJhbmdlQ29sb3JzKCk7XG4gICAgdmFyIG1IdG1sID0gcmVxdWVzdChtVXJsLHt9KTtcblxuICAgIHZhciBjYXRlZ29yeU9uZSA9IHBhcnNlRG9tRm9yQXJyYXkobUh0bWwsICcjbWVudS1pdGVtLTIyOTkmJmEnKTtcbiAgICB2YXIgY2F0ZWdvcnlUd28gPSBwYXJzZURvbUZvckFycmF5KG1IdG1sLCAnLml0ZW1zJiZhJyk7XG5cbiAgICB2YXIgY2F0ZWdvcmllcyA9IFtdO1xuICAgIGNhdGVnb3JpZXMucHVzaChnZXRBZGRyZXNzVGFnKG1VcmwsJ+emj+WIqeWQpycpKTtcbiAgICBjYXRlZ29yaWVzLnB1c2guYXBwbHkoY2F0ZWdvcmllcyxjYXRlZ29yeU9uZSk7XG4gICAgY2F0ZWdvcmllcy5wdXNoLmFwcGx5KGNhdGVnb3JpZXMsY2F0ZWdvcnlUd28pO1xuICAgIGNvbnN0IGNhdGVnb3JpZXNBcnJheSA9IGNhdGVnb3JpZXM7XG5cbiAgICBjYXRlZ29yaWVzQXJyYXkuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCB0aXRsZSA9IHBhcnNlRG9tRm9ySHRtbChjYXRlZ29yeSwnYSYmVGV4dCcpO1xuICAgICAgICBsZXQgdGl0bGVOdW0gPSB0aXRsZS5zcGxpdChcIiBcIilbMV07XG4gICAgICAgIGxldCB1cmwgPSBwYXJzZURvbUZvckh0bWwoY2F0ZWdvcnksJ2EmJmhyZWYnKTtcbiAgICAgICAgaWYoaW5kZXggPT0gMSkgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKFwi56aP5Yip5ZCnXCIsXCLmnIDmlrDnpo/liKlcIik7XG4gICAgICAgIGlmKGluZGV4ID4gOSl7XG4gICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnNwbGl0KFwiIFwiKVswXTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aXRsZU51bSA9IFwiKOKInilcIjtcbiAgICAgICAgfVxuICAgICAgICBpZih1cmwuaW5kZXhPZihcIi9cIikgPT0gMCkgdXJsID0gbVVybCArIHVybDtcbiAgICAgICAgaXRlbS5wdXNoKHtcblxuICAgICAgICAgICAgdGl0bGU6IGluZGV4LnRvU3RyaW5nKCk9PT1nZXRNeVZhcignZnVsaWJhLmNhdGVnb3J5TnVtJyk/J+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPScrdGl0bGVDb2xvcisnPicrdGl0bGUrJzwvZm9udD48L2I+Jysn4oCc4oCc4oCd4oCdPHNtYWxsPjxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9JytcIiNGQTcyOThcIisnPicrdGl0bGVOdW0rJyA8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPjwvc21hbGw+Jzp0aXRsZSxcbiAgICAgICAgICAgIHVybDogJCh1cmwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcblxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFwiZnVsaWJhLmNhdGVnb3J5TnVtXCIsIHBhcmFtcy5pbmRleC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignZnVsaWJhLnVybCcscGFyYW1zLnVybCk7XG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2Z1bGliYS50aXRsZUNvbG9yJyxwYXJhbXMudENvbG9yKTtcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignZnVsaWJhLmRlc2NDb2xvcicscGFyYW1zLmRDb2xvcik7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9lbXB0eVwiO1xuICAgICAgICAgICAgfSwge2luZGV4OiBpbmRleCx1cmw6IHVybCx0Q29sb3I6IHRDb2xvcixkQ29sb3I6IGRDb2xvcix9KSxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXG4gICAgICAgIH0pO1xuICAgICAgICBpZihpbmRleCA9PSA0IHx8IGluZGV4ID09IDkgfHwgaW5kZXggPT0gMjEpIGl0ZW0ucHVzaCh7Y29sX3R5cGU6XCJibGFua19ibG9ja1wifSk7XG4gICAgfSlcbiAgICBpdGVtLnB1c2goe2NvbF90eXBlOlwiYmxhbmtfYmxvY2tcIn0pO1xufVxuXG5cbnZhciB1bCA9IGNsaWNrVXJsK1wiL3BhZ2UvXCIrcGFnZTtcbnZhciBzdGF0dXMgPSBKU09OLnBhcnNlKGZldGNoKHVsLCB7aGVhZGVyczp7XCJVc2VyLUFnZW50XCI6TU9CSUxFX1VBLFwiUmVmZXJlclwiOnVsfSwgcmVkaXJlY3Q6ZmFsc2UsIHdpdGhIZWFkZXJzOnRydWV9KSk7XG5cbmlmKHN0YXR1cy5zdGF0dXNDb2RlIT09NDA0KXtcbiAgICB2YXIgaHRtbD1mZXRjaCh1bCx7fSk7XG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXCJoaWtlcjovL3BhZ2Uvb25lXCIpKS5ydWxlKTtcbiAgICBpdGVtLnB1c2guYXBwbHkoaXRlbSxnZXRJdGVtKGh0bWwsZGVzY0NvbG9yKSk7XG59XG5cbnJlcy5kYXRhID0gaXRlbTtcbnNldEhvbWVSZXN1bHQocmVzKTsiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjKiojaHR0cHM6Ly9mdWxpYmEyMDIyLm5ldCIsImdyb3VwIjoi5YW25a6DIiwic2VhcmNoRmluZCI6ImpzOlxuLy/ku6XkuIvmmK8g5YiX6KGo6Kej5p6Q6KeE5YiZ77yISlPvvIlcblxudmFyIHBhZ2U9TVlfVVJMLnNwbGl0KCcjJylbMV07XG52YXIgc2VhcmNobj1NWV9VUkwuc3BsaXQoJyMnKVsyXTtcbnZhciBtVXJsPU1ZX1VSTC5zcGxpdCgnIycpWzNdO1xuXG52YXIgdWwgPSBtVXJsK1wiL3BhZ2UvXCIrIHBhZ2UrXCIvP3M9XCIrc2VhcmNobjtcbnZhciBzdGF0dXMgPSBKU09OLnBhcnNlKGZldGNoKHVsLCB7aGVhZGVyczp7XCJVc2VyLUFnZW50XCI6TU9CSUxFX1VBLFwiUmVmZXJlclwiOnVsfSwgcmVkaXJlY3Q6ZmFsc2UsIHdpdGhIZWFkZXJzOnRydWV9KSk7XG5cbnZhciByZXMgPSB7fTtcbnZhciBpdGVtPVtdO1xuXG5pZihzdGF0dXMuc3RhdHVzQ29kZSE9PTQwNCl7XG4gICAgdmFyIGh0bWw9ZmV0Y2godWwse30pO1xuICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFwiaGlrZXI6Ly9wYWdlL29uZVwiKSkucnVsZSk7XG4gICAgaXRlbT1nZXRTZWFyY2hJdGVtKGh0bWwpO1xufVxuXG5yZXMuZGF0YSA9IGl0ZW07XG5zZXRIb21lUmVzdWx0KHJlcyk7IiwiZGV0YWlsX2NvbF90eXBlIjoicmljaF90ZXh0IiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxudmFyIHJlcz17fTtcbnZhciBkPVtdO1xuXG4vL+ingueci+aWh+eroOaooeW8jyDpu5jorqTmqKHlvI/lm77mloflubbojIIvMCDnnIvlm77mqKHlvI8vMSDnnIHmtYHmqKHlvI8vMiDpmIXor7vmqKHlvI8vM1xuaWYoZ2V0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScpPT0nJykgcHV0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScsJzAnKTtcblxuXG4vL+WbvueJh+aYvuekuuaooeW8jyDnvZHpobXlhoXltYzlm77niYcvMCDpu5jorqTmtbfpmJTmmL7npLrlm77niYcvMVxuaWYoZ2V0TXlWYXIoJ2Z1bGliYS52aWV3UGljTW9kZScpPT0nJykgcHV0TXlWYXIoJ2Z1bGliYS52aWV3UGljTW9kZScsJzEnKTtcbmlmKGdldE15VmFyKCdmdWxpYmEub3BlbkNvbW1lbnQnKT09JycpIHB1dE15VmFyKCdmdWxpYmEub3BlbkNvbW1lbnQnLCcwJyk7XG5cbmlmKGdldE15VmFyKCdmdWxpYmEudmlld1BpY01vZGUnKT09JzAnICYmIGdldE15VmFyKCdmdWxpYmEuaGlkZUltZycpPT0nJykgcHV0TXlWYXIoJ2Z1bGliYS5oaWRlSW1nJywnMScpO1xuXG5pZihnZXRNeVZhcignZnVsaWJhLnZpZXdQaWNNb2RlJyk9PScxJyAmJiBnZXRNeVZhcignZnVsaWJhLmJpZ0ltZycpPT0nJykgcHV0TXlWYXIoJ2Z1bGliYS5iaWdJbWcnLCdwaWNfMV9mdWxsJyk7XG5cblxubGV0IGltYWdlVGV4dEFycmF5ID0gWyfwn4yD5Zu+5paH5bm26IyCJywn8J+Rgeeci+WbvuaooeW8jycsJ/Cfk7HnnIHmtYHmqKHlvI8nLCfwn5Oa6ZiF6K+75qih5byPJ107XG5wdXRNeVZhcignZnVsaWJhLmltYWdlVGV4dE1vZGUnLGltYWdlVGV4dEFycmF5W3BhcnNlSW50KGdldE15VmFyKCdmdWxpYmEuc2hvd01vZGUnKSldKTtcblxubGV0IHZpZXdQaWNBcnJheSA9IFt7MDpcIuaYvuekuuWbvueJh/CfjIxcIiwxOlwi6ZqQ6JeP5Zu+54mH8J+Ul1wifSx7IHBpY18xX2Z1bGw6XCLpu5jorqTlpKflm77wn4yIXCIsIHBpY18zOlwi57K+576O5bCP5Zu+4pyoXCJ9XTtcbmlmKGdldE15VmFyKCdmdWxpYmEudmlld1BpY01vZGUnKT09JzEnKSBwdXRNeVZhcignZnVsaWJhLmltZ01vZGUnLHZpZXdQaWNBcnJheVsxXVtnZXRNeVZhcignZnVsaWJhLmJpZ0ltZycpXSk7XG5pZihnZXRNeVZhcignZnVsaWJhLnZpZXdQaWNNb2RlJyk9PScwJykgcHV0TXlWYXIoJ2Z1bGliYS5pbWdNb2RlJyx2aWV3UGljQXJyYXlbMF1bcGFyc2VJbnQoZ2V0TXlWYXIoJ2Z1bGliYS5oaWRlSW1nJykpXSk7XG5cbnZhciBwaWNUeXBlID0gJyc7XG5pZihnZXRNeVZhcignZnVsaWJhLnZpZXdQaWNNb2RlJyk9PScxJykgcGljVHlwZSA9IGBAbGF6eVJ1bGU9LmpzOnB1dE15VmFyKCdmdWxpYmEuYmlnSW1nJyxnZXRNeVZhcignZnVsaWJhLmJpZ0ltZycpIT09J3BpY18zJz8ncGljXzMnOidwaWNfMV9mdWxsJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LliIfmjaLlm77niYfnsbvlnosnO1wiPmA7XG5pZihnZXRNeVZhcignZnVsaWJhLnZpZXdQaWNNb2RlJyk9PScwJykgcGljVHlwZSA9IGBAbGF6eVJ1bGU9LmpzOnB1dE15VmFyKCdmdWxpYmEuaGlkZUltZycsZ2V0TXlWYXIoJ2Z1bGliYS5oaWRlSW1nJykhPT0nMCc/JzAnOicxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LliIfmjaLlm77niYfnsbvlnosnO1wiPmA7XG5cbnZhciBjb21tZW50QXJyYXkgPSBbJ+W3suWFs+mXreivhOiuuicsJ+W3suW8gOWQr+ivhOiuuiddO1xucHV0TXlWYXIoJ2Z1bGliYS5vcGVuQ29tbWVudFN0cmluZycsY29tbWVudEFycmF5W3BhcnNlSW50KGdldE15VmFyKCdmdWxpYmEub3BlbkNvbW1lbnQnKSldKVxudmFyIGNvbW1lbnRUeXBlID0gYEBsYXp5UnVsZT0uanM6cHV0TXlWYXIoJ2Z1bGliYS5vcGVuQ29tbWVudCcsZ2V0TXlWYXIoJ2Z1bGliYS5vcGVuQ29tbWVudCcpIT09JzAnPycwJzonMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRNeVZhcignZnVsaWJhLm9wZW5Db21tZW50U3RyaW5nJyk7XCI+YDtcblxuLy8gaWYoZ2V0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScpPT0nMCcpIHB1dE15VmFyKCdmdWxpYmEuaW1hZ2VUZXh0TW9kZScsJ/CfjIPlm77mloflubbojIInKTtcbi8vIGlmKGdldE15VmFyKCdmdWxpYmEuc2hvd01vZGUnKT09JzEnKSBwdXRNeVZhcignZnVsaWJhLmltYWdlVGV4dE1vZGUnLCfwn5GB55yL5Zu+5qih5byPJyk7XG4vLyBpZihnZXRNeVZhcignZnVsaWJhLnNob3dNb2RlJyk9PScyJykgcHV0TXlWYXIoJ2Z1bGliYS5pbWFnZVRleHRNb2RlJywn8J+MkOecgea1geaooeW8jycpO1xuLy8gaWYoZ2V0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScpPT0nMycpIHB1dE15VmFyKCdmdWxpYmEuaW1hZ2VUZXh0TW9kZScsJ/Cfk5rpmIXor7vmqKHlvI8nKTtcblxuXG5cbnZhciBnb29kQ29sb3IgPSAnIzQwMDBGRic7XG52YXIgc2l6ZSA9IDE2O1xudmFyIGh0bWw9Z2V0UmVzQ29kZSgpO1xuXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdChcImhpa2VyOi8vcGFnZS9jc3NcIikpLnJ1bGUpO1xuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXCJoaWtlcjovL3BhZ2Uvdmlld1wiKSkucnVsZSk7XG5cblxuZnVuY3Rpb24gZ2V0QmFpZHVZdW5Db2RlKGNvbnRlbnQpe1xuICAgIGlmKGNvbnRlbnQuaW5jbHVkZXMoJ3Bhbi5iYWlkdS5jb20nKSl7XG4gICAgICAgIGxldCBjb2RlID0gY29udGVudC5zcGxpdCgn5o+Q5Y+W56CB77yaJyk7XG4gICAgICAgIGlmKGNvZGUubGVuZ3RoPjEpIGNvcHkoY29kZVsxXS5zdWJzdHJpbmcoMCw0KSk7XG4gICAgfVxufVxuXG52YXIgbWF4UGFnZSA9IDE7XG50cnkge1xuICAgIG1heFBhZ2UgPSAgcGFyc2VJbnQgKHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwnLmFydGljbGUtcGFnaW5nJiZhJykubGVuZ3RoKzEpO1xufSBjYXRjaCAoZSkgeyB9XG5cblxubGV0IGhlYWRlclRpdGxlID0gZ2V0QmlnVGV4dChnZXRTdHJvbmdUZXh0KHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLmFydGljbGUtdGl0bGUmJlRleHQnKSkpICsgJyAnICsgZ2V0U21hbGxUZXh0KGdldEFkZHJlc3NUYWcoTVlfVVJMLCAnW+afpeeci+WOn+aWh/CfkYBdJykpO1xuXG5sZXQgZ29vZENvdW50ID0gJ/CfkY3wn4+754K5JytwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5hY3Rpb24uYWN0aW9uLWxpa2UmJlRleHQnKTtcbmdvb2RDb3VudCA9ICc8Zm9udCBjb2xvcj1cIicgKyBnb29kQ29sb3IgKyAnXCI+JyArIGdvb2RDb3VudCBcbisgYDxzbWFsbD48c21hbGw+PHN1cD48YSBocmVmPVwiaGlrZXI6Ly9lbXB0eWAgKyBjb21tZW50VHlwZSArIGdldE15VmFyKCdmdWxpYmEub3BlbkNvbW1lbnRTdHJpbmcnKS5zdWJzdHJpbmcoMSwyKSArIFwiPC9hPjwvc3VwPjwvc21hbGw+PC9zbWFsbD48L2ZvbnQ+XCI7XG5cbmxldCBicm93ZXIgPSBgPGJpZz48YSBocmVmPVwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0TXlWYXIoJ2Z1bGliYS5icm93c2VyTGluaycsZ2V0TXlWYXIoJ2Z1bGliYS5icm93c2VyTGluaycpIT09Jyc/Jyc6J3dlYjovLycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5YiH5o2i5rWP6KeI5qih5byPJztcIj5gKyhnZXRNeVZhcignZnVsaWJhLmJyb3dzZXJMaW5rJykhPT0nJz9cIvCfjJBcIjpcIvCfjIZcIikrXCI8L2E+PC9iaWc+XCI7XG5cbi8vdmFyIHN1YlRpbWUgPSBnZXRDb2RlVGV4dChwYXJzZURvbUZvckh0bWwoaHRtbCwnLmFydGljbGUtbWV0YS0tYSYmbGksMCYmVGV4dCcpLnJlcGxhY2UoJ+WPkeW4g+S6jicsJ+aXpeacnzonKSk7XG5cbmxldCBzdWJUeXBlID0gW107XG50cnl7XG4gICAgc3ViVHlwZSA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwnLmFydGljbGUtdGFncyYmYScpO1xufWNhdGNoKGUpe31cbmlmKHN1YlR5cGUubGVuZ3RoPT0wKSBzdWJUeXBlID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCcuYXJ0aWNsZS1tZXRhJiZzcGFuLDEmJmEnKTtcblxuXG5sZXQgdHlwZT1nZXRDb2RlVGV4dCgn8J+Pt++4j+agh+etvjogJyk7XG5mb3IobGV0IGk9MDtpPHN1YlR5cGUubGVuZ3RoO2krKyl7XG4gICAgdHlwZSArPSBnZXRDb2RlVGV4dChwYXJzZURvbUZvckh0bWwoc3ViVHlwZVtpXSwnYSYmVGV4dCcpKTtcbn1cblxubGV0IGNvbW1lbnQ9W107XG50cnl7XG4gICAgY29tbWVudCA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwnI3Bvc3Rjb21tZW50cyYmLmRlcHRoLTEnKTtcbn1jYXRjaChlKXt9XG5cbi8vaWYoaGVhZGVyVGl0bGUuaW5jbHVkZXMoJ+Wls+elnicpIHx8IGhlYWRlclRpdGxlLmluY2x1ZGVzKCflhpnnnJ8nKSB8fCBoZWFkZXJUaXRsZS5pbmNsdWRlcygn5aWX5Zu+JykgfHx0eXBlLmluY2x1ZGVzKCflroXnlLflpbPnpZ4nKSB8fCB0eXBlLmluY2x1ZGVzKCflhpnnnJ/lpZflm74nKSkgcHV0TXlWYXIoJ2ltZycsJ3BpY18zJyk7XG5cbmQucHVzaCh7dGl0bGU6IGhlYWRlclRpdGxlKycmbmJzcDsnICtnb29kQ291bnQrJyZuYnNwOycrYnJvd2VyKyc8YnI+Jyt0eXBlLH0pO1xuZC5wdXNoKHtjb2xfdHlwZTonbGluZSd9KTtcblxuLy8gdmFyIHRpcHMgPSBnZXRDb2xvclRleHQoJ+a4qemmqOaPkOekujrlm77niYfmuIXmmbDluqbovoPpq5jvvIzliqDovb3pgJ/luqblj5blhrPkuo7nvZHpgJ/vvIHvvIHvvIEnLCcjRjQ3OTIwJyk7XG4vL2lmKGdldE15VmFyKCdpbWcnKT09J3BpY18zJykgZC5wdXNoKHt0aXRsZTogdGlwcyx9KTtcblxuXG5kLnB1c2goe2NvbF90eXBlOlwicmljaF90ZXh0XCIsdGl0bGU6XG4gICAgYDxzbWFsbD7lvZPliY08YSBocmVmPVwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0TXlWYXIoJ2Z1bGliYS52aWV3UGljTW9kZScsZ2V0TXlWYXIoJ2Z1bGliYS52aWV3UGljTW9kZScpIT09JzAnPycwJzonMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5YiH5o2i5Zu+54mH5pi+56S65qih5byPJztcIj5gKyhnZXRNeVZhcignZnVsaWJhLnZpZXdQaWNNb2RlJykhPT0nMCc/XCLmtbfpmJTmqKHlvI9cIjpcIue9kemhteaooeW8j1wiKStcIjwvYT7wn5GIPC9zbWFsbD5cIlxuICAgICtgPHNtYWxsPuS4uu+8mjxhIGhyZWY9XCJoaWtlcjovL2VtcHR5YCtwaWNUeXBlK2dldE15VmFyKCdmdWxpYmEuaW1nTW9kZScpK1wiPC9hPjwvc21hbGw+XCJcbiAgICArJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOydcbiAgICArYDxzbWFsbD7mqKHlvI/vvJo8YSBocmVmPVwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6aWYoZ2V0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScpPT0nMycpe3B1dE15VmFyKCdmdWxpYmEuc2hvd01vZGUnLCcwJyl9ZWxzZXtwdXRNeVZhcignZnVsaWJhLnNob3dNb2RlJywocGFyc2VJbnQoZ2V0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScpKSsxKS50b1N0cmluZygpKTt9O3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5YiH5o2i5paH56ug5qih5byPJztcIj5gK2dldE15VmFyKCdmdWxpYmEuaW1hZ2VUZXh0TW9kZScpK1wiPC9hPjwvc21hbGw+XCJcbn0pO1xuXG52YXIgY29udGVudCA9ICcnO1xuZm9yIChsZXQgaSA9IDE7IGkgPD0gbWF4UGFnZTsgaSsrKSB7XG4gICAgaWYoaSA+IDEpIGh0bWwgPSBmZXRjaChNWV9VUkwucmVwbGFjZSgnLmh0bWwnLCAnLmh0bWwvJyArIChpKSkse30pO1xuXG4gICAgbGV0IGNvbnRlbnRaZXJvID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcuYXJ0aWNsZS1jb250ZW50JiZIdG1sJyk7XG4gICAgaWYobWF4UGFnZSA+IDEpeyAgICBcbiAgICAgICAgY29udGVudFplcm8gPSBjb250ZW50WmVyby5zcGxpdCgnPHNwYW4gY2xhc3M9XCJ3cF9rZXl3b3JkbGlua1wiPjxhIGhyZWYnKVswXTtcbiAgICB9XG5cbiAgICBpZihpPjEpe1xuICAgICAgICB0cnl7XG4gICAgICAgICAgICBsZXQgbm90X2NvcHkgPSBwYXJzZURvbUZvckh0bWwoY29udGVudFplcm8sICcuYXJ0aWNsZS11cGRhdGUtdGlwcyYmSHRtbCcpO1xuICAgICAgICAgICAgY29udGVudFplcm8gPSBjb250ZW50WmVyby5yZXBsYWNlKG5vdF9jb3B5LCAnJyk7XG4gICAgICAgIH1jYXRjaChlKXt9XG4gICAgfVxuICAgIGNvbnRlbnQgKz0gY29udGVudFplcm87XG59XG5cbi8vIGdldEJhaWR1WXVuQ29kZShjb250ZW50KTtcblxuXG5jb250ZW50ID0gY29udGVudFxuICAgIC5yZXBsYWNlKC/msrnnrqFcXC93YXRjaC9nLCdodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaCcpXG4gICAgLnJlcGxhY2UoLzxicj4vZywgJycpXG4gICAgLnJlcGxhY2UoL1xcbjxwPiZuYnNwOzxcXC9wPi9nLCcnKVxuICAgIC5yZXBsYWNlKC9cXG48cD48XFwvcD4vZywnJylcbiAgICAucmVwbGFjZSgvPHByZT4oW1xcc1xcU10qPyk8XFwvcHJlPi9nLCcnKVxuICAgIC5yZXBsYWNlKC88cD4vZywnJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JylcbiAgICAucmVwbGFjZSgvPFxcL3A+L2csJzxicj4nKVxuICAgIC5yZXBsYWNlKC9hbXA7L2csJycpXG4gICAgLnJlcGxhY2VXaXRoQ2FsbGJhY2soLzxhKC4qPykgaHJlZj1cIiguKj8pYWxpeXVuZHJpdmUoLio/KVwiKC4qPyk8XFwvYT4vZywgJzxhIGRhdGEtdj4nLCBhVGFnUmVwbGFjZW1lbnQyKTtcbiAgICAvL+mdnuW4uOiAl+aXtuWSjOWGheWtmFxuICAgIC8vIC5yZXBsYWNlV2l0aENhbGxiYWNrKC88aW1nKFtcXHNcXFNdKj8pPi9nLCAnJywgZGVsZXRlSW52YWxpZEltZ1RhZyk7XG5cbmlmKGdldE15VmFyKCdmdWxpYmEuc2hvd01vZGUnKT09JzInIHx8IGdldE15VmFyKCdmdWxpYmEuc2hvd01vZGUnKT09JzMnKSBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKC88aW1nKFtcXHNcXFNdKj8pPi9nLCcnKVxuICAucmVwbGFjZSgvXFxuPHA+PHN0cm9uZz48XFwvc3Ryb25nPjxcXC9wPi9nLCcnKTtcblxuaWYoZ2V0TXlWYXIoJ2Z1bGliYS52aWV3UGljTW9kZScpPT0nMScpe1xuICAgIGxldCBjb250ZW50bGlzdCA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgIGxldCBodG1sTGlzdCA9ICcnO1xuICAgIGZvcihsZXQgaj0wO2o8Y29udGVudGxpc3QubGVuZ3RoO2orKyl7XG4gICAgICAgIGxldCBpbWdsaXN0ID0gaW1nVGFnR2V0VXJsQXJyYXkoY29udGVudGxpc3Rbal0sLzxpbWcoW1xcc1xcU10qPyk+L2cpO1xuICAgICAgICBsZXQgcXVvdGVDb250ZW50ID0gY29udGVudGxpc3Rbal07XG4gICAgICAgIC8v5paH56ug5YaF5a65LeeugOWNleaWh+acrFxuICAgICAgICBxdW90ZUNvbnRlbnQgPSBxdW90ZUNvbnRlbnRcbiAgICAgICAgICAgIC5yZXBsYWNlKC88aW1nKFtcXHNcXFNdKj8pPi9nLCcnKVxuICAgICAgICAgICAgLy8gLnJlcGxhY2UoLzwoaWZyYW1lfHNvdXJjZXN8dmlkZW8pKFtcXHNcXFNdKj8pPFxcLyhpZnJhbWV8c291cmNlc3x2aWRlbyk+L2csJycpXG4gICAgICAgICAgICAucmVwbGFjZVdpdGhDYWxsYmFjaygvPChpZnJhbWUpKFtcXHNcXFNdKj8pPFxcLyhpZnJhbWUpPi9nLCAnPGxpbmsgZGF0YS12PicsIGxpbmtUYWdSZXBsYWNlbWVudDIpXG4gICAgICAgICAgICAucmVwbGFjZVdpdGhDYWxsYmFjaygvPChzb3VyY2V8dmlkZW8pKFtcXHNcXFNdKj8pPFxcLyhzb3VyY2V8dmlkZW8pPi9nLCAnPHZpZGVvIGRhdGEtdj4nLCB2aWRlb1RhZ1JlcGxhY2VtZW50Mik7XG4gICAgICAgICAgICAvLyAucmVwbGFjZSgvPHA+PFxcL3A+L2csJycpO1xuXG5cblxuICAgICAgICBsZXQgdGVtcCA9IHBhcnNlRG9tRm9ySHRtbChnZXROZXdUZXh0KHF1b3RlQ29udGVudCwnZGl2JyksICdUZXh0Jyk7XG4gICAgICAgIGlmKGdldE15VmFyKCdmdWxpYmEuc2hvd01vZGUnKT09JzMnKXtcbiAgICAgICAgICAgIGlmKCF0ZW1wLm1hdGNoKC9eXFxzKiQvKSkgaHRtbExpc3QgKz0gJ+KXhyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyB0ZW1wICsgJzxicj4nO1xuICAgICAgICAgICAgaWYoaj09Y29udGVudGxpc3QubGVuZ3RoLTEgJiYgaHRtbExpc3QgIT09ICcnKXtcbiAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBodG1sTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6IHNpemUsXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiB0cnVlXG4gICAgICAgICAgICAgICAgfX0pO1xuICAgICAgICAgICAgICAgIGh0bWxMaXN0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgaWYoIXRlbXAubWF0Y2goL15cXHMqJC8pIHx8IHF1b3RlQ29udGVudC5pbmNsdWRlcygnYmxvY2txdW90ZT4nKSB8fCAocXVvdGVDb250ZW50LmluY2x1ZGVzKCdkaXY+JykgJiYgcXVvdGVDb250ZW50Lm1hdGNoKC88KGRpdikoW1xcc1xcU10qPyk8XFwvKGRpdik+L2cpID09IG51bGwpKSBodG1sTGlzdCArPSBxdW90ZUNvbnRlbnQ7XG4gICAgICAgICAgICBpZihpbWdsaXN0Lmxlbmd0aCA+IDAgfHwgaj09Y29udGVudGxpc3QubGVuZ3RoLTEpe1xuICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gcGFyc2VEb21Gb3JIdG1sKGdldE5ld1RleHQoaHRtbExpc3QsJ2RpdicpLCAnVGV4dCcpO1xuICAgICAgICAgICAgICAgIGlmKCF0ZW1wLm1hdGNoKC9eXFxzKiQvKSAmJiBnZXRNeVZhcignZnVsaWJhLnNob3dNb2RlJykhPT0nMScpIGQucHVzaCh7dGl0bGU6IGh0bWxMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U2l6ZTogc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xuICAgICAgICAgICAgICAgIGh0bWxMaXN0ID0gJyc7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBpbWdsaXN0Lmxlbmd0aDsgaysrKXtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6aW1nbGlzdFtrXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDpnZXRNeVZhcignZnVsaWJhLmJyb3dzZXJMaW5rJykraW1nbGlzdFtrXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOmdldE15VmFyKCdmdWxpYmEuYmlnSW1nJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRTaXplOiBzaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gICBcblxuICAgIC8v5aSN5p2C5paH5pysLeeUsUh0bWzmoLzlvI8t5pu/5o2i5o6J5Zu+54mHLS0t6KeG6aKR6ZO+5o6l5Lmf5pu/5o2i5o6J55So5p+l55yL6KeG6aKR5pu/5LujLS0t572R56uZ5Zyw5Z2A5LiN55So5pu/5o2i77yM55u05o6l55SoXG4gICAgLy8gcXVvdGVDb250ZW50ID0gZ2V0TmV3VGV4dChxdW90ZUNvbnRlbnQsJ2RpdicpO1xuICAgIC8vIGxldCB0ZW1wID0gcGFyc2VEb21Gb3JIdG1sKGdldE5ld1RleHQocXVvdGVDb250ZW50LCdkaXYnKSwgJ1RleHQnKTtcbiAgICAvLyBpZighcXVvdGVDb250ZW50LmluY2x1ZGVzKCc9XCJodHRwJykpIHF1b3RlQ29udGVudCA9IHRlbXA7XG4gICAgLy8gaWYoIXRlbXAubWF0Y2goL15cXHMqJC8pKSBkLnB1c2goe3RpdGxlOiBxdW90ZUNvbnRlbnR9KTtcblxuICAgIC8v5ryr55S75qih5byPXG4gICAgLy8gdmFyIHBpY3M9W107XG4gICAgLy9mb3IgKGxldCBrID0gMDsgayA8IGltZ2xpc3QubGVuZ3RoOyBrKyspe1xuICAgIC8vICAgICBwaWNzLnB1c2goaW1nbGlzdFtrXSk7XG4gICAgLy8gfVxuICAgIC8vIFwicGljczovL1wiK3BpY3Muam9pbihcIiYmXCIpO1xuXG4gICAgLy8gaWYoaW1nbGlzdC5sZW5ndGg9PTApIGNvbnRpbnVlO1xuICAgIC8vIGZvciAobGV0IGsgPSAwOyBrIDwgaW1nbGlzdC5sZW5ndGg7IGsrKyl7XG4gICAgLy8gICAgIGQucHVzaCh7XG4gICAgLy8gICAgICAgICBwaWNfdXJsOmltZ2xpc3Rba10sXG4gICAgLy8gICAgICAgICB1cmw6aW1nbGlzdFtrXSxcbiAgICAvLyAgICAgICAgIGNvbF90eXBlOmdldE15VmFyKCdmdWxpYmEuYmlnSW1nJylcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfVxufWVsc2V7XG4gICAgLy8gaWYoZ2V0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScpPT0nMScpIGNvbnRlbnQgPSBHZXRJbWdUYWdBcnJheShjb250ZW50LC88aW1nKFtcXHNcXFNdKj8pPi9nKTtcbiAgICBpZihnZXRNeVZhcignZnVsaWJhLnNob3dNb2RlJyk9PScxJyl7XG4gICAgICAgIGxldCBtYXRjaEFycmF5ID0gY29udGVudC5tYXRjaCgvPGltZyhbXFxzXFxTXSo/KT4vZyk7XG4gICAgICAgIGxldCBpbWdsaXN0ID0gJyc7XG4gICAgICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBwaWMgPSBtYXRjaEFycmF5W2ldIC5yZXBsYWNlV2l0aENhbGxiYWNrKC88aW1nKFtcXHNcXFNdKj8pPi9nLCAnPGltZyBkYXRhLXY+JywgaW1nVGFnUmVwbGFjZW1lbnRPbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLzxzaG93aW1nL2csICc8aW1nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZihnZXRNeVZhcignZnVsaWJhLmhpZGVJbWcnKSA9PSAnMCcpIGQucHVzaCh7dGl0bGU6IHBpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6IHNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH19KTtcbiAgICAgICAgICAgICAgICBpbWdsaXN0ICs9IHBpYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZihnZXRNeVZhcignZnVsaWJhLmhpZGVJbWcnKSA9PSAnMScpIGQucHVzaCh7dGl0bGU6IGltZ2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRTaXplOiBzaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9fSk7XG4gICAgfWVsc2V7XG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2VXaXRoQ2FsbGJhY2soLzxpbWcoW1xcc1xcU10qPyk+L2csICc8aW1nIGRhdGEtdj4nLCBpbWdUYWdSZXBsYWNlbWVudE9uZSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC88c2hvd2ltZy9nLCAnPGltZycpXG4gICAgICAgICAgICAucmVwbGFjZVdpdGhDYWxsYmFjaygvPChpZnJhbWUpKFtcXHNcXFNdKj8pPFxcLyhpZnJhbWUpPi9nLCAnPGxpbmsgZGF0YS12PicsIGxpbmtUYWdSZXBsYWNlbWVudDIpXG4gICAgICAgICAgICAucmVwbGFjZVdpdGhDYWxsYmFjaygvPChzb3VyY2V8dmlkZW8pKFtcXHNcXFNdKj8pPFxcLyhzb3VyY2V8dmlkZW8pPi9nLCAnPHZpZGVvIGRhdGEtdj4nLCB2aWRlb1RhZ1JlcGxhY2VtZW50Mik7XG5cbiAgICAgICAgbGV0IGNvbnRlbnRsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGxldCBodG1sTGlzdCA9ICcnO1xuICAgICAgICBmb3IobGV0IGo9MDtqPGNvbnRlbnRsaXN0Lmxlbmd0aDtqKyspe1xuICAgICAgICAgICAgbGV0IHF1b3RlQ29udGVudCA9IGNvbnRlbnRsaXN0W2pdO1xuXG4gICAgICAgICAgICBsZXQgdGVtcCA9IHBhcnNlRG9tRm9ySHRtbChnZXROZXdUZXh0KHF1b3RlQ29udGVudCwnZGl2JyksICdUZXh0Jyk7XG4gICAgICAgICAgICBpZihnZXRNeVZhcignZnVsaWJhLnNob3dNb2RlJyk9PSczJyl7XG4gICAgICAgICAgICAgICAgaWYoIXRlbXAubWF0Y2goL15cXHMqJC8pKSBodG1sTGlzdCArPSAnPHA+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JyArIHRlbXAgKyAnPC9wPic7XG4gICAgICAgICAgICAgICAgaWYoaj09Y29udGVudGxpc3QubGVuZ3RoLTEgJiYgaHRtbExpc3QgIT09ICcnKXtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaHRtbExpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6IHNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9fSk7XG4gICAgICAgICAgICAgICAgICAgIGh0bWxMaXN0ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgaWYoIXRlbXAubWF0Y2goL15cXHMqJC8pIHx8IHF1b3RlQ29udGVudC5pbmNsdWRlcygnYmxvY2txdW90ZT4nKSB8fCAocXVvdGVDb250ZW50LmluY2x1ZGVzKCdkaXY+JykgJiYgcXVvdGVDb250ZW50Lm1hdGNoKC88KGRpdikoW1xcc1xcU10qPyk8XFwvKGRpdik+L2cpID09IG51bGwpKSBodG1sTGlzdCArPSBxdW90ZUNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZihxdW90ZUNvbnRlbnQubWF0Y2goLzxpbWcoW1xcc1xcU10qPyk+L2cpICE9PSBudWxsIHx8IGo9PWNvbnRlbnRsaXN0Lmxlbmd0aC0xKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoZ2V0TXlWYXIoJ2Z1bGliYS5zaG93TW9kZScpIT09JzEnICYmIGh0bWxMaXN0ICE9PSAnJykgZC5wdXNoKHt0aXRsZTogaHRtbExpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6IHNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9fSk7XG4gICAgICAgICAgICAgICAgICAgIGh0bWxMaXN0ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHF1b3RlQ29udGVudC5tYXRjaCgvPGltZyhbXFxzXFxTXSo/KT4vZykgIT09IG51bGwpIGQucHVzaCh7dGl0bGU6IHF1b3RlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6IHNpemUsXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiB0cnVlXG4gICAgICAgICAgICAgICAgfX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbmQucHVzaCh7Y29sX3R5cGU6ICdsaW5lX2JsYW5rJ30pO1xubGV0IHRpcHMgPSAn6K+l5paH56ug5p2l5rqQ5LqO56aP5Yip5ZCn77yM5aaC5oKo5Zac5qyi77yM6K+36L+b5YWl56aP5Yip5ZCn572R6aG154mIJztcbmxldCB3YXJuaW5nID0gJ+atpOinhOWImeS7hemZkOWtpuS5oOS9v+eUqO+8jOWmguacieS4jeWmpe+8jOivt+acrOWQp+S4u+iBlOezu+aIkeWIoOmZpCc7XG5cbi8vIGlmKGdldE15VmFyKCdmdWxpYmEuc2hvd01vZGUnKT09JzAnIHx8IGdldE15VmFyKCdmdWxpYmEuc2hvd01vZGUnKT09JzInKXtcbmlmKGdldE15VmFyKCdmdWxpYmEub3BlbkNvbW1lbnQnKT09JzAnKXtcbiAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcImhpa2VyOi8vcGFnZS9jb21tZW50XCIpKS5ydWxlKTtcblxuICAgIGQucHVzaCh7dGl0bGU6IEdldFRpcHModGlwcyx3YXJuaW5nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6IHNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH19KTtcbiAgICBkLnB1c2goe2NvbF90eXBlOiAnbGluZV9ibGFuayd9KTtcblxuICAgIGlmKGNvbW1lbnQubGVuZ3RoID4gMCl7XG4gICAgICAgIGxldCBjb21tZW50TnVtID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsJy5hcnRpY2xlLW1ldGEmJnNwYW4sMiYmVGV4dCcpLnJlcGxhY2UoJ+ivhOiuuicsJ/Cfk6Lng63or4TmlbAnKTtcbiAgICAgICAgY29tbWVudE51bSA9IEdldEhvbWUoMykrZ2V0U3Ryb25nVGV4dChnZXRCaWdUZXh0KGNvbW1lbnROdW0pKTtcbiAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBjb21tZW50Lmxlbmd0aDsgbCsrKXtcbiAgICAgICAgICAgIGxldCBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShjb21tZW50W2xdLCcuY29tbWVudCcpO1xuICAgICAgICAgICAgZC5wdXNoKHtjb2xfdHlwZTogJ2xpbmUnfSk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgbGlzdC5sZW5ndGg7IG0rKykge1xuICAgICAgICAgICAgICAgIGxldCBmbG9vciA9ICcnOyBsZXQgbWFpbiA9ICcnOyAgbGV0IGF1dG9yID0gJyc7IGxldCB0aW1lID0gJyc7XG4gICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICBpZihtPT0wKSBmbG9vciA9ICfwn4+iJyArIHBhcnNlRG9tRm9ySHRtbChsaXN0W21dLCcuY29tdC1mJiZUZXh0JykucmVwbGFjZSgnIycsJycpKyfmpbwnO1xuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgICAgICAgICAgZmxvb3IgPSBsKyfmpbzlsYLplJnor68hISEnK21cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICBtYWluID0gIHBhcnNlRG9tRm9ySHRtbChsaXN0W21dLCcuY29tdC1tYWluJiZwJiZUZXh0Jyk7XG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xuICAgICAgICAgICAgICAgICAgICBtYWluID0gbCsn5Zue5aSN5YaF5a656ZSZ6K+vISEhJyttXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICAgICAgYXV0b3IgPSAn8J+RsScgKyBwYXJzZURvbUZvckh0bWwobGlzdFttXSwnLmNvbXQtYXV0aG9yJiZUZXh0Jyk7XG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xuICAgICAgICAgICAgICAgICAgICBhdXRvciA9IGwrJ+S9nOiAheWQjeensOmUmeivryEhIScrbVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICAgICAgICAgIHRpbWUgPSAn8J+VoicgKyBwYXJzZURvbUZvckh0bWwobGlzdFttXSwnLmNvbXQtbWV0YS0tc3BhbiYmVGV4dCcpLnJlcGxhY2UoJ+WbnuWkjScsJycpO1xuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcbiAgICAgICAgICAgICAgICAgICAgdGltZSA9IGwrJ+aXtumXtOmUmeivryEhIScrbVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBjb21tZW50VGV4dCA9IEdldENvbW1lbnQobWFpbixhdXRvcix0aW1lLGZsb29yKTtcbiAgICAgICAgICAgICAgICBpZihsPT0wICYmIG09PTApIGNvbW1lbnRUZXh0ID0gY29tbWVudE51bSArJzxicj48YnI+JysgY29tbWVudFRleHQ7XG5cbiAgICAgICAgICAgICAgICBjb21tZW50VGV4dD1jb21tZW50VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlV2l0aENhbGxiYWNrKC8oaHR0cDpcXC9cXC98ZnRwOlxcL1xcL3xodHRwczpcXC9cXC98KVtcXHdcXC1fXSsoXFwuW1xcd1xcLV9dKykrKFtcXHdcXC1cXC4sQD9ePSUmYW1wOzovflxcKyNdKltcXHdcXC1cXEA/Xj0lJmFtcDsvflxcKyNdKT8vZywgJzxuIGRhdGEtdj4nLCBudWxsVGFnUmVwbGFjZW1lbnQyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlV2l0aENhbGxiYWNrKC88YSguKj8pIGhyZWY9XCIoLio/KWFsaXl1bmRyaXZlKC4qPylcIiguKj8pPFxcL2E+L2csICc8YSBkYXRhLXY+JywgYVRhZ1JlcGxhY2VtZW50Mik7XG4gICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogY29tbWVudFRleHQsXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHRTaXplOiBzaXplLFxuICAgICAgICAgICAgICAgICAgICBjbGljazogdHJ1ZVxuICAgICAgICAgICAgICAgIH19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxucmVzLmRhdGE9ZDtcbnNldEhvbWVSZXN1bHQocmVzKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiKiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJDU1PmoLzlvI9cIixcInBhdGhcIjpcImNzc1wiLFwicnVsZVwiOlwiZnVuY3Rpb24gZ2V0TmV3VGV4dCh0ZXh0LGNzcyl7XFxuICAgcmV0dXJuICc8Jytjc3MrJz4nICsgdGV4dCArICc8LycrY3NzKyc+JztcXG59XFxuXFxuZnVuY3Rpb24gZ2V0QmlnVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPGJpZz4nICsgdGV4dCArICc8L2JpZz4nO1xcbn1cXG5mdW5jdGlvbiBnZXRTbWFsbFRleHQodGV4dCkge1xcbiAgICByZXR1cm4gJzxzbWFsbD4nICsgdGV4dCArICc8L3NtYWxsPic7XFxufVxcbmZ1bmN0aW9uIGdldFN0cm9uZ1RleHQodGV4dCkge1xcbiAgICByZXR1cm4gJzxzdHJvbmc+JyArIHRleHQgKyAnPC9zdHJvbmc+JztcXG59XFxuZnVuY3Rpb24gZ2V0VGl0bGVUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuIGdldFN0cm9uZ1RleHQodGV4dCk7XFxufVxcbmZ1bmN0aW9uIGdldENvbG9yVGV4dCh0ZXh0LCBjb2xvcikge1xcbiAgICByZXR1cm4gJzxmb250IGNvbG9yPVxcXCInICsgY29sb3IgKyAnXFxcIj4nICsgdGV4dCArICc8L2ZvbnQ+JztcXG59XFxuZnVuY3Rpb24gZ2V0R3JleVRleHQodGV4dCkge1xcbiAgICByZXR1cm4gZ2V0Q29sb3JUZXh0KHRleHQsICdncmV5Jyk7XFxufVxcbmZ1bmN0aW9uIGdldEF1dGhvclRleHQodGV4dCkge1xcbiAgICByZXR1cm4gZ2V0Q29sb3JUZXh0KHRleHQsIHVzZXJDb2xvcik7XFxufVxcbmZ1bmN0aW9uIGdldENvZGVUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuICc8Y29kZT4nICsgdGV4dCArICc8L2NvZGU+JztcXG59XFxuZnVuY3Rpb24gZ2V0QmxvY2txdW90ZVRleHQodGV4dCkge1xcbiAgICByZXR1cm4gJzxibG9ja3F1b3RlPicgKyB0ZXh0ICsgJzwvYmxvY2txdW90ZT4nXFxufVxcbmZ1bmN0aW9uIGdldEFkZHJlc3NUYWcodXJsLCB0ZXh0KSB7XFxuICAgIHJldHVybiAnPGEgaHJlZj1cXFwiJyArIHVybCArICdcXFwiPicgKyB0ZXh0ICsgJzwvYT4nXFxufVxcbmZ1bmN0aW9uIGdldENvbW1lbnRNZXRhKGh0bWwpIHtcXG4gICAgcmV0dXJuIGdldFNtYWxsVGV4dChodG1sKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop4blm77lpITnkIZcIixcInBhdGhcIjpcInZpZXdcIixcInJ1bGVcIjpcIi8v6I635Y+W6YeN5a6a5ZCR5Zyw5Z2AXFxuZnVuY3Rpb24gZ2V0UmVkaXJlY3RBZGRyZXNzKHVybCl7XFxuICAgIGxldCB1cmxSZWRpcmVjdCA9ICcnO1xcbiAgICB0cnl7XFxuICAgICAgICBsZXQgdXJsQ29kZSA9IGZldGNoKHVybCx7cmVkaXJlY3Q6ZmFsc2Usd2l0aEhlYWRlcnM6dHJ1ZX0pO1xcbiAgICAgICAgdXJsUmVkaXJlY3QgPSBKU09OLnBhcnNlKHVybENvZGUpLmhlYWRlcnMubG9jYXRpb25bMF07XFxuICAgIH1jYXRjaChlKXt9XFxuICAgIHJldHVybiB1cmxSZWRpcmVjdDtcXG59XFxuXFxuU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlV2l0aENhbGxiYWNrID0gZnVuY3Rpb24gKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUsIGNhbGxiYWNrKSB7XFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHRoaXM7XFxuICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSB7XFxuICAgICAgICByZXR1cm5WYWx1ZSA9IGNhbGxiYWNrKHRoaXMsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xcbiAgICB9XFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXG59O1xcblxcbi8v5Yig6Zmk6YeN5a6a5ZCR5Zu+54mH6ZO+5o6lXFxuZnVuY3Rpb24gZGVsZXRlSW52YWxpZEltZ1RhZyhjb250ZXh0LCBzZWFyY2hWYWx1ZSxyZXBsYWNlVmFsdWUpIHtcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcbiAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWx8ZGF0YS1zcmN8c3JjKT1cXFwiKC4qPylcXFwiKFtcXFxcc1xcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgbGV0IGltZ1VybCA9IFJlZ0V4cC4kMjtcXG4gICAgICAgICAgICBpZiAoaW1nVXJsLmluZGV4T2YoXFxcInBsYWNlaG9sZGVyXFxcIikgPiAtMSkge1xcbiAgICAgICAgICAgICAgICAvPGltZy4qPyhkYXRhLW9yaWdpbmFsKT1cXFwiKC4qPylcXFwiKFtcXFxcc1xcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgICAgIGltZ1VybCA9IFJlZ0V4cC4kMjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYoaW1nVXJsLmluZGV4T2YoXFxcIi8vXFxcIik9PTApe2ltZ1VybCA9IFxcXCJodHRwczpcXFwiICsgaW1nVXJsO31cXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9ICcnKSB7XFxuICAgICAgICAgICAgICAgIGlmKGdldFJlZGlyZWN0QWRkcmVzcyhpbWdVcmwpICE9ICcnKXtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLHJlcGxhY2VWYWx1ZSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cXG5cXG5mdW5jdGlvbiBHZXRJbWdUYWdBcnJheVN0cmluZyhjb250ZXh0LCBzZWFyY2hWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSAnJztcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgcmV0dXJuVmFsdWUgKz0gbWF0Y2hBcnJheVtpXTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufVxcblxcbmZ1bmN0aW9uIGltZ1RhZ0dldFVybEFycmF5KGNvbnRleHQsIHNlYXJjaFZhbHVlKSB7XFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IFtdO1xcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICBsZXQgaW1nVXJsID0gUmVnRXhwLiQyO1xcbiAgICAgICAgICAgIGlmIChpbWdVcmwuaW5kZXhPZihcXFwicGxhY2Vob2xkZXJcXFwiKSA+IC0xKSB7XFxuICAgICAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWwpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICAgICAgaW1nVXJsID0gUmVnRXhwLiQyO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZihpbWdVcmwuaW5kZXhPZihcXFwiLy9cXFwiKT09MCl7aW1nVXJsID0gXFxcImh0dHBzOlxcXCIgKyBpbWdVcmw7fVxcbiAgICAgICAgICAgIGlmIChpbWdVcmwgIT09ICcnKSB7XFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlLnB1c2goaW1nVXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cXG5cXG5cXG5sZXQgaW1nRXJyb3IgPSAnPHA+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPuWbvueJh+aaguaXtuaXoOazleaYvuekuu+8jOiLpeimgeafpeeci+ivtzxhIGhyZWY9XFxcIicgKyBNWV9VUkwgKyAnXFxcIj7orr/pl67ljp/mloc8L2E+PC9mb250PjwvcD4nO1xcbmZ1bmN0aW9uIGltZ1RhZyhjb250ZXh0LCBpbWdVcmwpIHtcXG4gICAgbGV0IHJlcGxhY2VTdHJpbmcgPSBpbWdVcmwgPT09ICcnID8gaW1nRXJyb3IgOiAnPHA+PHNob3dpbWcgc3JjPVxcXCInICsgKGltZ1VybCArICdAUmVmZXJlcj0nICsgTVlfVVJMKSArICdcXFwiPjwvcD4nO1xcbiAgICBpZiAoZ2V0TXlWYXIoJ2Z1bGliYS5oaWRlSW1nJyk9PScxJykge1xcbiAgICAgICAgcmVwbGFjZVN0cmluZyA9IGltZ1VybCA9PT0gJycgPyBpbWdFcnJvciA6ICc8cD48YSBocmVmPVxcXCInICsgaW1nVXJsICsgJ1xcXCI+W+eCueWHu+afpeeci+Wkp+Wbvl08L2E+PC9wPic7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNvbnRleHQucmVwbGFjZSgvPGltZyBkYXRhLXY+L2csIHJlcGxhY2VTdHJpbmcpO1xcbn1cXG5mdW5jdGlvbiBpbWdUYWdPbmUoY29udGV4dCwgaW1nVXJsKSB7XFxuICAgIGxldCByZXBsYWNlU3RyaW5nID0gaW1nVXJsID09PSAnJyA/IGltZ0Vycm9yIDogJ1xcXFxuPHA+PHNob3dpbWcgc3JjPVxcXCInICsgKGltZ1VybCArICdAUmVmZXJlcj0nICsgTVlfVVJMKSArICdcXFwiPjwvcD4nO1xcbiAgICBpZiAoZ2V0TXlWYXIoJ2Z1bGliYS5oaWRlSW1nJyk9PScxJykge1xcbiAgICAgICAgcmVwbGFjZVN0cmluZyA9IGltZ1VybCA9PT0gJycgPyBpbWdFcnJvciA6ICc8cD48YSBocmVmPVxcXCInICsgaW1nVXJsICsgJ1xcXCI+W+eCueWHu+afpeeci+Wkp+Wbvl08L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj1cXFwid2ViOi8vJyArIGltZ1VybCArICdcXFwiPlvngrnlh7vmn6XnnIvpk77mjqVdPC9hPjwvcD4nO1xcbiAgICB9XFxuICAgIHJldHVybiBjb250ZXh0LnJlcGxhY2UoLzxpbWcgZGF0YS12Pi9nLCByZXBsYWNlU3RyaW5nKTtcXG59XFxuZnVuY3Rpb24gaW1nVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcbiAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWx8ZGF0YS1zcmN8c3JjKT1cXFwiKC4qPylcXFwiKFtcXFxcc1xcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgbGV0IGltZ1VybCA9IFJlZ0V4cC4kMjtcXG4gICAgICAgICAgICBpZiAoaW1nVXJsLmluZGV4T2YoXFxcInBsYWNlaG9sZGVyXFxcIikgPiAtMSkge1xcbiAgICAgICAgICAgICAgICAvPGltZy4qPyhkYXRhLW9yaWdpbmFsKT1cXFwiKC4qPylcXFwiKFtcXFxcc1xcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgICAgIGltZ1VybCA9IFJlZ0V4cC4kMjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYoaW1nVXJsLmluZGV4T2YoXFxcIi8vXFxcIik9PTApe2ltZ1VybCA9IFxcXCJodHRwczpcXFwiICsgaW1nVXJsO31cXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9PSAnJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBpbWdUYWcocmV0dXJuVmFsdWUsIGltZ1VybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXG59XFxuZnVuY3Rpb24gaW1nVGFnUmVwbGFjZW1lbnRPbmUoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICBsZXQgaW1nVXJsID0gUmVnRXhwLiQyO1xcbiAgICAgICAgICAgIGlmIChpbWdVcmwuaW5kZXhPZihcXFwicGxhY2Vob2xkZXJcXFwiKSA+IC0xKSB7XFxuICAgICAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWwpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICAgICAgaW1nVXJsID0gUmVnRXhwLiQyO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZihpbWdVcmwuaW5kZXhPZihcXFwiLy9cXFwiKT09MCl7aW1nVXJsID0gXFxcImh0dHBzOlxcXCIgKyBpbWdVcmw7fVxcbiAgICAgICAgICAgIGlmIChpbWdVcmwgIT09ICcnKSB7XFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLCByZXBsYWNlVmFsdWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGltZ1RhZ09uZShyZXR1cm5WYWx1ZSwgaW1nVXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cXG5cXG5sZXQgdmlkZW9FcnJvciA9ICc8cD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+6KeG6aKR5pqC5pe25peg5rOV5pi+56S677yM6Iul6KaB5p+l55yL6K+3PGEgaHJlZj1cXFwiJyArIE1ZX1VSTCArICdcXFwiPuiuv+mXruWOn+aWhzwvYT48L2ZvbnQ+PC9wPic7XFxuZnVuY3Rpb24gdmlkZW9UYWcoY29udGV4dCwgdmlkZW9VcmwpIHtcXG4gICAgbGV0IHJlcGxhY2VTdHJpbmcgPSB2aWRlb1VybCA9PT0gJycgPyB2aWRlb0Vycm9yIDogJzxwPjxhIGhyZWY9XFxcIicgKyAodmlkZW9VcmwpICsgJ1xcXCI+W+eCueWHu+afpeeci+inhumikV08L2E+PC9wPic7XFxuICAgIGlmIChnZXRNeVZhcignZnVsaWJhLmhpZGVJbWcnKT09JzEnKSB7XFxuICAgICAgICByZXBsYWNlU3RyaW5nID0gdmlkZW9VcmwgPT09ICcnID8gdmlkZW9FcnJvciA6ICc8cD48YSBocmVmPVxcXCInICsgdmlkZW9VcmwgKyAnXFxcIj5b54K55Ye75p+l55yL6KeG6aKRXTwvYT48L3A+JztcXG4gICAgfVxcbiAgICByZXR1cm4gY29udGV4dC5yZXBsYWNlKC88dmlkZW8gZGF0YS12Pi9nLCByZXBsYWNlU3RyaW5nKTtcXG59XFxuZnVuY3Rpb24gdmlkZW9UYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgLzwoc291cmNlfHZpZGVvKS4qPyhkYXRhLW9yaWdpbmFsfGRhdGEtc3JjfHNyYyk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgIGxldCB2aWRlb1VybCA9IFJlZ0V4cC4kMztcXG4gICAgICAgICAgICBpZih2aWRlb1VybC5pbmRleE9mKFxcXCIvL1xcXCIpPT0wKXt2aWRlb1VybCA9IFxcXCJodHRwczpcXFwiICsgdmlkZW9Vcmw7fVxcbiAgICAgICAgICAgIGlmKHZpZGVvVXJsLmluY2x1ZGVzKFxcXCJ6aGFpbmFubWlcXFwiKSkgY29udGludWU7XFxuICAgICAgICAgICAgaWYgKHZpZGVvVXJsICE9PSAnJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB2aWRlb1RhZyhyZXR1cm5WYWx1ZSwgdmlkZW9VcmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufVxcblxcbmxldCBsaW5rRXJyb3IgPSAnPHA+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPumTvuaOpeaaguaXtuaXoOazleaYvuekuu+8jOiLpeimgeafpeeci+ivtzxhIGhyZWY9XFxcIicgKyBNWV9VUkwgKyAnXFxcIj7orr/pl67ljp/mloc8L2E+PC9mb250PjwvcD4nO1xcbmZ1bmN0aW9uIGxpbmtUYWcoY29udGV4dCwgbGlua1VybCkge1xcbiAgICBsZXQgcmVwbGFjZVN0cmluZyA9IGxpbmtVcmwgPT09ICcnID8gbGlua0Vycm9yIDogJzxwPjxhIGhyZWY9XFxcIicgKyAobGlua1VybCkgKyAnXFxcIj5b54K55Ye75p+l55yL6ZO+5o6lXTwvYT48L3A+JztcXG4gICAgaWYgKGdldE15VmFyKCdmdWxpYmEuaGlkZUltZycpPT0nMScpIHtcXG4gICAgICAgIHJlcGxhY2VTdHJpbmcgPSBsaW5rVXJsID09PSAnJyA/IGxpbmtFcnJvciA6ICc8cD48YSBocmVmPVxcXCInICsgbGlua1VybCArICdcXFwiPlvngrnlh7vmn6XnnIvpk77mjqVdPC9hPjwvcD4nO1xcbiAgICB9XFxuICAgIHJldHVybiBjb250ZXh0LnJlcGxhY2UoLzxsaW5rIGRhdGEtdj4vZywgcmVwbGFjZVN0cmluZyk7XFxufVxcbmZ1bmN0aW9uIGxpbmtUYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgLzwoaWZyYW1lKS4qPyhkYXRhLW9yaWdpbmFsfGRhdGEtc3JjfHNyYyk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgIGxldCBsaW5rVXJsID0gUmVnRXhwLiQzO1xcbiAgICAgICAgICAgIGlmKGxpbmtVcmwuaW5kZXhPZihcXFwiLy9cXFwiKT09MCl7bGlua1VybCA9IFxcXCJodHRwczpcXFwiICsgbGlua1VybDt9XFxuICAgICAgICAgICAgaWYgKGxpbmtVcmwgIT09ICcnKSB7XFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLCByZXBsYWNlVmFsdWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGxpbmtUYWcocmV0dXJuVmFsdWUsIGxpbmtVcmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufVxcblxcbmZ1bmN0aW9uIG51bGxUYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcbiAgICAvLyBzZXRFcnJvcihtYXRjaEFycmF5KVxcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgbGV0IGxpbmtVcmwgPSBtYXRjaEFycmF5W2ldO1xcbiAgICAgICAgICAgIGlmKGxpbmtVcmwuaW5kZXhPZihcXFwiLy9cXFwiKT09MCl7bGlua1VybCA9IFxcXCJodHRwczpcXFwiICsgbGlua1VybDt9XFxuICAgICAgICAgICAgaWYgKGxpbmtVcmwgIT09ICcnKSB7XFxuICAgICAgICAgICAgICAgIHJlcGxhY2VWYWx1ZSA9ICc8YSBocmVmPVxcXCInK2xpbmtVcmwrJ1xcXCI+JytsaW5rVXJsKyc8L2E+J1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cXG5cXG5mdW5jdGlvbiBhVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcbiAgICAgICAgICAgIC88YSguKj8pIGhyZWY9XFxcIiguKj8pXFxcIiguKj8pPFxcXFwvYT4vLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgbGV0IGxpbmtVcmwgPSBSZWdFeHAuJDI7XFxuICAgICAgICAgICAgaWYobGlua1VybC5pbmRleE9mKFxcXCIvL1xcXCIpPT0wKXtsaW5rVXJsID0gXFxcImh0dHBzOlxcXCIgKyBsaW5rVXJsO31cXG4gICAgICAgICAgICBpZiAobGlua1VybCAhPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgcmVwbGFjZVZhbHVlID0gJzxhIGhyZWY9XFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScrbGlua1VybCsnPz9meXBhZ2VcXFwiPicrbGlua1VybCsnPC9hPidcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKGl0ZW0sIHJlcGxhY2VWYWx1ZSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXG59XFxuXFxuZnVuY3Rpb24gY3NzVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcbiAgICAgICAgICAgIC88KGRpdnxwfHN0cm9uZyk+Lio/PFxcXFwvKGRpdnxwfHN0cm9uZyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgIGxldCBjc3MgPSBSZWdFeHAuJDI7XFxuICAgICAgICAgICAgaWYgKGNzcy5tYXRjaCgvXlxcXFxzKiQvKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuivhOiuuuaWueazlVwiLFwicGF0aFwiOlwiY29tbWVudFwiLFwicnVsZVwiOlwiXFxuZnVuY3Rpb24gR2V0SG9tZShudW0pe1xcbiAgICBsZXQgcmV0cmFjdCA9ICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnO1xcbiAgICBmb3IobGV0IGk9MTtpPG51bTtpKyspIHJldHJhY3QgKz0gJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyc7XFxuICAgIHJldHVybiAnPHNwYW4+JytyZXRyYWN0Kyc8L3NwYW4+JztcXG59XFxuXFxuZnVuY3Rpb24gR2V0Q29tbWVudChtYWluLGF1dG9yLHRpbWUsZmxvb3Ipe1xcblxcbiAgICBsZXQgZm9udFN0eWxlID0gJzxmb250IGNvbG9yPVxcXCJncmV5XFxcIj48c3BhbiBjbGFzcz1cXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcIj4mbmJzcDsmbmJzcDsnK3RpbWUrJyAmbmJzcDs8L3NwYW4+PC9mb250Pic7XFxuICAgIGxldCBidXR0b25EYXRhID0gZ2V0Q29sb3JUZXh0KGF1dG9yLCcjMjk3OUZGJykrZm9udFN0eWxlK2dldENvbG9yVGV4dChmbG9vciwnIzI5NzlhYScpO1xcbiAgICBsZXQgY29tbWVudCA9ICcnO1xcblxcbiAgICBpZihmbG9vcj09Jycpe1xcbiAgICAgICAgY29tbWVudCA9R2V0SG9tZSgxKSttYWluK2dldE5ld1RleHQoJzxicj4nK0dldEhvbWUoMSkrYnV0dG9uRGF0YSwnc21hbGwnKTtcXG4gICAgfWVsc2V7XFxuICAgICAgICBjb21tZW50ID0gbWFpbitnZXROZXdUZXh0KCc8YnI+JysgYnV0dG9uRGF0YSwnc21hbGwnKTtcXG4gICAgfVxcbiAgICByZXR1cm4gY29tbWVudDtcXG59XFxuXFxuZnVuY3Rpb24gR2V0VGlwcyh0aXBzLHdhcm5pbmcpe1xcbiAgICBsZXQgdGlwc1N0eWxlID0gJzxzbWFsbD48c3BhbiBjbGFzcz1cXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcIj4mbmJzcDsnK3RpcHMrJyAmbmJzcDs8L3NwYW4+PC9zbWFsbD4nO1xcbiAgICBsZXQgd2FybmluZ1N0eWxlID0gJzxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+PHNwYW4gY2xhc3M9XFxcIm5vcm1hbC1mb250IGdyYXktZm9udCBhbGlnbi1iYXNlbGluZVxcXCI+Jm5ic3A7Jyt3YXJuaW5nKycgJm5ic3A7PC9zcGFuPjwvZm9udD48L3NtYWxsPic7XFxuICAgIHJldHVybiB0aXBzU3R5bGUrJzxicj4nK3dhcm5pbmdTdHlsZTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop6PmnpDmkJzntKJcIixcInBhdGhcIjpcIm9uZVwiLFwicnVsZVwiOlwiZnVuY3Rpb24gZ2V0SXRlbShodG1sLGNvbG9ycyl7XFxuICAgIHZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmYXJ0aWNsZScpOy8vICAgICAgIOOAkOWIl+ihqOOAkVxcbiAgICB2YXIgaXRlbT1bXTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxuICAgICAgICBsZXQgdGl0bGUgPSBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJ2gyJiZUZXh0Jyk7XFxuICAgICAgICBsZXQgcGljID0gXFxcImh0dHBzOi8vaW1nMC5iYWlkdS5jb20vaXQvdT0xNDIwNzE5NTU2LDI1MDk5MjU0ODYmZm09MjYmZm10PWF1dG8mZ3A9MC5qcGdcXFwiO1xcbiAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgIHBpYyA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaW1nJiZkYXRhLXNyYycpO1xcbiAgICAgICAgfWNhdGNoKGUpe31cXG4gICAgICAgIGxldCBjb21tZW50TnVtID0gJzAnO1xcbiAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgIGNvbW1lbnROdW0gPSBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5wYyYmVGV4dCcpLnNwbGl0KFxcXCIoXFxcIilbMV0uc3BsaXQoXFxcIilcXFwiKVswXTtcXG4gICAgICAgIH1jYXRjaChlKXt9XFxuXFxuICAgICAgICBsZXQgdGltZSA9IFxcXCLwn5Wn5pel5pyfOiBcXFwiICsgJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPScrIGNvbG9ycyArICc+JyArIHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLm1ldGEmJnRpbWUmJlRleHQnKSArJyA8L2ZvbnQ+PC9iPic7XFxuICAgICAgICBsZXQgbGlrZSA9IFxcXCLwn5Kc54K56LWeOiBcXFwiICsgJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPScrIGNvbG9ycyArICc+JyArIHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLnBvc3QtbGlrZSYmc3BhbiYmVGV4dCcpICsnIDwvZm9udD48L2I+JztcXG4gICAgICAgIGxldCBjb21tZW50ID0gIFxcXCIgIPCfkqzor4Torro6IFxcXCIgKyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9JysgY29sb3JzICsgJz4nICsgY29tbWVudE51bSArJyA8L2ZvbnQ+PC9iPic7XFxuXFxuICAgICAgICBsZXQgdGFicz1cXFwiXFxcXG5cXFxcblxcXCI7XFxuXFxuICAgICAgICBpdGVtLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOnRpdGxlLC8v44CQ5qCH6aKY44CRXFxuICAgICAgICAgICAgcGljX3VybDogcGljLCAvL+WbvueJh1xcbiAgICAgICAgICAgIGRlc2M6IHRpbWUrdGFicytsaWtlK2NvbW1lbnQsLy/jgJDmj4/ov7DjgJFcXG4gICAgICAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdoMiYmYSYmaHJlZicpICsnI2Z1bGxUaGVtZSMjbm9SZWNvcmRIaXN0b3J5IyNub0hpc3RvcnkjJywvL+OAkOmTvuaOpeOAkVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcmV0dXJuIGl0ZW07XFxufVxcblxcbmZ1bmN0aW9uIGdldFNlYXJjaEl0ZW0oaHRtbCl7XFxuICAgIHZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmYXJ0aWNsZScpOy8vICAgICAgIOOAkOWIl+ihqOOAkVxcbiAgICB2YXIgaXRlbT1bXTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxuICAgICAgICBsZXQgdGl0bGUgPSBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJ2gyJiZUZXh0Jyk7XFxuICAgICAgICBsZXQgcGljID0gXFxcImh0dHBzOi8vaW1nMC5iYWlkdS5jb20vaXQvdT0xNDIwNzE5NTU2LDI1MDk5MjU0ODYmZm09MjYmZm10PWF1dG8mZ3A9MC5qcGdcXFwiO1xcbiAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgIHBpYyA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaW1nJiZkYXRhLXNyYycpO1xcbiAgICAgICAgfWNhdGNoKGUpe31cXG4gICAgICAgIGxldCBjb21tZW50TnVtID0gJzAnO1xcbiAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgIGNvbW1lbnROdW0gPSBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5wYyYmVGV4dCcpLnNwbGl0KFxcXCIoXFxcIilbMV0uc3BsaXQoXFxcIilcXFwiKVswXTtcXG4gICAgICAgIH1jYXRjaChlKXt9XFxuXFxuICAgICAgICAvLyBsZXQgdGltZSA9IFxcXCLwn5WnOlxcXCIgICsgcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICcubWV0YSYmdGltZSYmVGV4dCcpO1xcbiAgICAgICAgbGV0IGxpa2UgPSBcXFwi8J+SnDogXFxcIiArIHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLnBvc3QtbGlrZSYmc3BhbiYmVGV4dCcpO1xcbiAgICAgICAgbGV0IGNvbW1lbnQgPSAgXFxcIvCfkqw6IFxcXCIgKyBjb21tZW50TnVtO1xcblxcbiAgICAgICAgbGV0IHRhYnM9XFxcIiAgIFxcXCI7XFxuICAgICAgICBcXG4gICAgICAgIGl0ZW0ucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6dGl0bGUsLy/jgJDmoIfpopjjgJFcXG4gICAgICAgICAgICBwaWNfdXJsOiBwaWMsIC8v5Zu+54mHXFxuICAgICAgICAgICAgZGVzYzogbGlrZSt0YWJzK2NvbW1lbnQsLy/jgJDmj4/ov7DjgJFcXG4gICAgICAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdoMiYmYSYmaHJlZicpICsnI2Z1bGxUaGVtZSMjbm9SZWNvcmRIaXN0b3J5IyNub0hpc3RvcnkjJywvL+OAkOmTvuaOpeOAkVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcmV0dXJuIGl0ZW07XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pa55rOV5LqR6ZuGXCIsXCJwYXRoXCI6XCJ1c2VzXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBnZXRBZGRyZXNzVGFnKHVybCwgdGV4dCkge1xcbiAgICByZXR1cm4gJzxhIGhyZWY9XFxcIicgKyB1cmwgKyAnXFxcIj4nICsgdGV4dCArICc8L2E+J1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRSYW5nZUNvbG9ycygpe1xcbiAgICAvL+minOiJsiDku6PnoIHmnaXoh6pSeOWkp+S9rFxcbiAgICBsZXQgQ29sb3JzPVtcXFwiNFxcXCIsXFxcIjVcXFwiLFxcXCIwXFxcIixcXFwiMVxcXCIsXFxcIkFcXFwiLFxcXCIzXFxcIixcXFwiOFxcXCIsXFxcIjlcXFwiLFxcXCJCXFxcIixcXFwiQ1xcXCIsXFxcIkRcXFwiLFxcXCJFXFxcIixcXFwiNlxcXCIsXFxcIjdcXFwiLFxcXCJGXFxcIl07XFxuICAgIGxldCBDb2xvciA9IFxcXCIjXFxcIjtcXG4gICAgZm9yIChsZXQgaT0wO2k8NjtpKyspe1xcbiAgICAgICAgbGV0IG51bT1NYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkqMTUpKS0xO1xcbiAgICAgICAgQ29sb3IrPUNvbG9yc1tudW1dO1xcbiAgICB9XFxuICAgIHJldHVybiBDb2xvcjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0QmFpZHVZdW5Db2RlKGNvbnRlbnQpe1xcbiAgICBpZihjb250ZW50LmluY2x1ZGVzKFxcXCJwYW4uYmFpZHUuY29tXFxcIikpe1xcbiAgICAgICAgdmFyIGNvZGUgPSBjb250ZW50LnNwbGl0KFxcXCLmj5Dlj5bnoIHvvJpcXFwiKTtcXG4gICAgICAgIGlmKGNvZGUubGVuZ3RoPjEpIGNvcHkoY29kZVsxXS5zdWJzdHJpbmcoMCw0KSk7XFxuICAgIH1cXG59XCJ9XSIsImljb24iOiJodHRwczovL3Auc3NsLnFoaW1nLmNvbS90MDExMjdiN2RlYzFmMTAwMDc0LmpwZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment