Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@𝐒𝐮𝐩𝐣𝐚𝐯@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi8J2QkvCdkK7wnZCp8J2Qo/CdkJrwnZCvIiwiYXV0aG9yIjoiUiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2h0dHBzOi8vc3VwamF2LmNvbS96aC8jI2Z5cGFnZSIsInZlcnNpb24iOjIwMjUwMjIzLCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG4gICAgYWRkTGlzdGVuZXIoXCJvbkNsb3NlXCIsICgpID0+IHtcbiAgICAgICAgY2xlYXJNeVZhcihcIm5leHRQYWdlXCIpO1xuICAgIH0pO1xuLypcbmFkZExpc3RlbmVyKFwib25SZWZyZXNoXCIsICgpID0+IHtcbiAgICBjbGVhck15VmFyKFwibmV4dFBhZ2VcIik7XG59KTtcbiovXG52YXIgZCA9IFtdXG52YXIgcmVzID0gW11cbk1ZX1VSTCA9IE1ZX1VSTC5zcGxpdChcIiMjXCIpWzFdXG5sZXQgdHJ1ZV91cmwgPSBnZXRNeVZhcihcInVybFwiLCBNWV9VUkwpO1xubGV0IG5leHRQYWdlID0gZ2V0TXlWYXIoXCJuZXh0UGFnZVwiLCBcIlwiKTtcbmlmIChuZXh0UGFnZSAmJiBNWV9QQUdFID4gMSkge1xuICAgIHRydWVfdXJsID0gbmV4dFBhZ2U7XG59IGVsc2UgaWYgKE1ZX1BBR0UgPiAxKSB7XG4gICAgdHJ1ZV91cmwgPSBcIuayoeacieS4i+S4gOmhteWTpvCfmJFcIlxufVxudmFyIGh0bWwgPSBmZXRjaCh0cnVlX3VybCwgSlNPTi5wYXJzZShnZXRNeVZhcignaGVhZGVycycpKSlcbi8vdmFyIGh0bWwgPSBmZXRjaENvZGVCeVdlYlZpZXcodHJ1ZV91cmwpXG5sb2codHJ1ZV91cmwpXG4vL2xvZyhodG1sKVxudHJ5IHtcbiAgICBsZXQgbmV4dFVybCA9IHBkKGh0bWwsIFwiLnBhZ2luYXRpb24mJi5hY3RpdmUrbGkmJmEmJmhyZWZcIik7XG4gICAgcHV0TXlWYXIoXCJuZXh0UGFnZVwiLCBuZXh0VXJsKTtcbn0gY2F0Y2ggKGUpIHtcbiAgICBjbGVhck15VmFyKFwibmV4dFBhZ2VcIik7XG4gICAgLy8gdG9hc3QoXCLlpb3lg4/msqHmnInkuIvkuIDpobXkuobvvIFcIik7XG59XG5cbmlmIChodG1sLmluY2x1ZGVzKFwi6K+356iN5YCZ4oCmXCIpIHx8IGh0bWwuaW5jbHVkZXMoXCJKdXN0IGEgbW9tZW50XCIpKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJ+eCueWHu+iOt+WPlmNvb2tpZScuZm9udGNvbG9yKCcjRkYwMEZGJykuYmlnKCksXG4gICAgICAgIHVybDogdHJ1ZV91cmwsXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArICfngrnlh7vliLfmlrAnLmZvbnRjb2xvcignI0ZGMDAwMCcpLmJpZygpLFxuICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgICAgICB9KSxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJ+WFjei/h0NG5Lit6L2s5py65Zy6Jy5mb250Y29sb3IoJyNGRjY2OTknKS5iaWcoKS5iaWcoKSxcbiAgICAgICAgZGVzYzogJ+aciemVv+acn+a1gemHjyzliIbmtYFzdXBqYXYuY29t5Z+f5ZCN5LiT55SoLOa1gemHj+WPr+eUqOS4gOi+iOWtkCcsXG4gICAgICAgIHVybDogXCJodHRwczovL3d3dy5uZnNxLnVzLyMvcmVnaXN0ZXI/Y29kZT1jR1Z6Q0ZZcVwiLFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUsIGNvbG9yKSB7XG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVwiJyArIGNvbG9yICsgJ1wiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XG59XG5cbiQucmVxdWlyZShcImNhdGVnb3J5XCIpKClcblxuaWYgKHRydWVfdXJsID09IFwiaHR0cHM6Ly9zdXBqYXYuY29tL3poL1wiKSB7XG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xuICAgICAgICAkLnJlcXVpcmUoXCJob21lXCIpXG4gICAgfVxufSBlbHNlIGlmICgvdGFnfG1ha2VyfGNhc3QvLnRlc3QodHJ1ZV91cmwpKSB7XG4gICAgJC5yZXF1aXJlKFwidGFic1wiKVxufSBlbHNlIHtcbiAgICAkLnJlcXVpcmUoXCJsaXN0XCIpKClcbn1cbnNldFByZVJlc3VsdChyZXMpXG5zZXRSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly9zdXBqYXYuY29tL3poL3BhZ2UvZnlwYWdlP3M9KioiLCJncm91cCI6IuKRoeeUnyIsInNlYXJjaEZpbmQiOiJqczpcbk1ZX1VSTCA9IE1ZX1VSTC5yZXBsYWNlKC9mYzItP3Bwdi0/fGZjMi0/L2ksXCJcIilcbiQucmVxdWlyZShcInlpXCIpIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiaWYgKCFnZXRNeVZhcignaGVhZGVycycpKXtcbnB1dE15VmFyKCdoZWFkZXJzJyx7aGVhZGVyczp7XCJDb29raWVcIjpcImNmX2NsZWFyYW5jZT0zU3duLkl6Y2FRN2dlcGNNSG9La21NM2JzX0oyNnguQldXNkhCVGxVdHowLTE3MDUyNjYwMzAtMC0yLWE2NTliMzhjLjYzOWM4NWRjLmYxNThlYzZjLTE2MC4yLjE3MDUyNjYwMzBcIixcIlVzZXItQWdlbnRcIjpcIk1vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTZfNF8xIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNi40IE1vYmlsZS8xNUUxNDggU2FmYXJpLzYwNC4xXCIsXCJSZWZlcmVyXCI6XCJodHRwczovL3N1cGphdi5jb20vXCJ9fSlcbn0iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiG57G7XCIsXCJwYXRoXCI6XCJjYXRlZ29yeVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gKCkgPT4ge1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwic29ydFxcXCIpO1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwicGFnaVxcXCIpO1xcbiAgICAgICAgLy8gY2xlYXJNeVZhcihcXFwidXJsXFxcIik7ICAgXFxuICAgIH0pKTtcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uUmVmcmVzaFxcXCIsICgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInNvcnRcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInBhZ2lcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInVybFxcXCIpO1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwidGFiXFxcIik7XFxuICAgIH0pO1xcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3lpeWFuJywge30pKS5ydWxlKTtcXG5cXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgcmVzLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi8J+UjVxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChyKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dC50cmltKCkgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdrZXl3b3JkJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlYXJjaFVybCA9IFxcXCJodHRwczovL3N1cGphdi5jb20vemgvP3M9XFxcIiArIGlucHV0LnJlcGxhY2UoL2ZjMi0/cHB2LT98ZmMyLT8vaSwgXFxcIlxcXCIpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgc2VhcmNoVXJsKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYGNvbmZpcm06Ly8ke3J9LmpzOidoaWtlcjovL2VtcHR5J2BcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGRheV9zYXkpLFxcbiAgICAgICAgICAgIGRlc2M6IGRheV9zYXksLy8gJ+abvue7j+ayp+a1t+mavuS4uuawtCzpmaTljbTlt6vlsbHkuI3mmK/kupEnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ2tleXdvcmQnLCAnJykgfHwgXFxcIlxcXCIsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgdGFicyA9IHBkZmEoaHRtbCwgXFxcIi5uYXYmJmxpOm5vdChsaTpoYXMoLnN1Yi1tZW51KSk6bm90KDpoYXMoYVt0YXJnZXRdKSk6bm90KDpoYXMoYVt0aXRsZV0pKVxcXCIpO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiB0YWJzKSB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaCh0YWJzW2ldLCAnVGV4dCcpXFxuICAgICAgICAgICAgcmVzLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ3RhYicsICcwJykgPT0gaSA/IGdldEhlYWQodGl0bGUsICcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwZCh0YWJzW2ldLCAnYSYmaHJlZicpICsgJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3RhYicsIGkpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9LCBpKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgaWYgKGkgPT0gNSkge1xcbiAgICAgICAgICAgICAgICByZXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJlcy5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICB2YXIgcGFnaW5hdGlvbiA9IHBkZmEoaHRtbCwgXFxcIi5wYWdpbmF0aW9uJiZsaTpub3QoLnByZXYtcGFnZSk6bm90KC5uZXh0LXBhZ2UpXFxcIik7XFxuICAgIHZhciBjdXJyZW50dSA9IHBkZmgoaHRtbCwgXFxcImxpbmtbaHJlZmxhbmc9emhdJiZocmVmXFxcIilcXG5cXG4gICAgdmFyIGZpcnN0dSA9IGN1cnJlbnR1ID8gY3VycmVudHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiXFxcIikgOiBcXFwiaHR0cHM6Ly9zdXBqYXYuY29tL3poL1xcXCJcXG4gICAgdmFyIGFjdGl2ZSA9IGN1cnJlbnR1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLykgPyBjdXJyZW50dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pWzFdIDogMTtcXG4gICAgdmFyIGxhc3R1ID0gcGRmaChwYWdpbmF0aW9uLnBvcCgpLCBcXFwiYSYmaHJlZlxcXCIpIHx8IGN1cnJlbnR1XFxuICAgIHZhciBsYXN0cCA9IGxhc3R1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLykgPyBsYXN0dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pWzFdIDogMTtcXG5cXG4gICAgaWYgKCFjdXJyZW50dS5pbmNsdWRlcyhcXFwicG9wdWxhclxcXCIpKSB7XFxuICAgICAgICBsYXN0dSA9IGxhc3R1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIi9wYWdlL1xcXCIgKyAobGFzdHAgLSAwKSlcXG4gICAgICAgIGxhc3RwID0gbGFzdHAgLSAwXFxuICAgIH1cXG5cXG4gICAgdmFyIHBhZ2k7XFxuICAgIGlmIChhY3RpdmUgPT0gMSkge1xcbiAgICAgICAgcGFnaSA9IDBcXG4gICAgfSBlbHNlIGlmIChhY3RpdmUgPT0gbGFzdHApIHtcXG4gICAgICAgIHBhZ2kgPSAyXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwYWdpID0gMVxcbiAgICB9XFxuICAgIHZhciB0aXRsZSA9IFtcXFwi6aaWXFxcIiwgXFxcIui3s+mhtTpcXFwiICsgYWN0aXZlLCBcXFwi5bC+OlxcXCIgKyBsYXN0cF1cXG4gICAgdmFyIHVybHMgPSBbZmlyc3R1LCBNWV9VUkwsIGxhc3R1XVxcbiAgICBpZiAoY3VycmVudHUgIT09IFxcXCJodHRwczovL3N1cGphdi5jb20vemgvXFxcIikge1xcbiAgICAgICAgZm9yICh2YXIgaiBpbiB0aXRsZSkge1xcblxcbiAgICAgICAgICAgIHZhciB1cmwgPSB1cmxzW2pdICsgJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcblxcbiAgICAgICAgICAgIGlmIChqID09IDEpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gJCgnJywgJ+mZpOmmlumhteWSjOWwvumhteS5i+WklueahOmhteeggScpLmlucHV0KChsYXN0dSwgbGFzdHApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChpbnB1dCkgPiAxICYmIHBhcnNlSW50KGlucHV0KSA8IHBhcnNlSW50KGxhc3RwKSAmJiBwYXJzZUludChpbnB1dCkgJSAxID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganVtcHUgPSBsYXN0dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCIvcGFnZS9cXFwiICsgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE6aG156CBXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBsYXN0dSwgbGFzdHApXFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIHJlcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhZ2kgPT0gaiA/IGdldEhlYWQodGl0bGVbal0sICcjRkY2Njk5JykgOiB0aXRsZVtqXSxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICB2YXIgc290dCA9IGN1cnJlbnR1LnJlcGxhY2UoLy4qPyg9KC4qKXwkKS8sIFxcXCIkMlxcXCIpXFxuICAgICAgICB2YXIgc29ydCA9IHBkZmEoaHRtbCwgXFxcIi5zb3J0JiZhXFxcIik7XFxuICAgICAgICBzb3R0ID0gc290dCA9PT0gXFxcIlxcXCIgPyBwZGZoKHNvcnRbMF0sICdUZXh0JykudG9Mb3dlckNhc2UoKSA6IHNvdHQ7XFxuICAgICAgICBmb3IgKHZhciBqIGluIHNvcnQpIHtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHNvcnRbal0sICdUZXh0JylcXG4gICAgICAgICAgICByZXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzb3R0ID09IHRpdGxlLnRvTG93ZXJDYXNlKCkgPyBnZXRIZWFkKHRpdGxlLCAnI0ZGNjY5OScpIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIHVybDogcGQoc29ydFtqXSwgJ2EmJmhyZWYnKSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGopXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIl+ihqFwiLFwicGF0aFwiOlwibGlzdFwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gKCkgPT4ge1xcbnZhciBsaXN0ID0gcGRmYShodG1sLCBcXFwiLnBvc3RzJiYucG9zdFxcXCIpO1xcbmxpc3QuZm9yRWFjaChpdGVtPT57XFxuICAgdmFyIGltZyA9IHBkKGl0ZW0sXFxcImltZyYmZGF0YS1vcmlnaW5hbFxcXCIpO1xcbiAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSxcXFwiYSYmdGl0bGVcXFwiKS5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsXFxcIvCfh6jwn4ezXFxcIikucmVwbGFjZShcXFwiW1xcXFx1NjVlMFxcXFx1NzgwMeegtOino11cXFwiLFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsXFxcIvCflqVcXFwiKS5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsXFxcIvCfh7rwn4e4XFxcIikucmVwbGFjZShcXFwi44CQU3VwSkFWLeeLrOWutuOAkVxcXCIsXFxcIlxcXCIpO1xcbiAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sXFxcIi5tZXRhLS0uZGF0ZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgIGltZzogaW1nLnJlcGxhY2UoLyhodHRwLio/XFxcXC4oPzpqcGd8d2VicHxwbmd8anBlZykpLiovLFxcXCIkMVxcXCIpLFxcbiAgICAgICAgICAgICAgIHVybDogcGRmaChpdGVtLFxcXCJhJiZocmVmXFxcIikgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlclxcXCIpJyxcXG4gICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgICAgICAgIGV4dHJhOiB7cGFnZVRpdGxlOnRpdGxlfVxcbiAgICAgICAgIH0pXFxufSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmoIfnrb5cIixcInBhdGhcIjpcInRhYnNcIixcInJ1bGVcIjpcInZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCkge1xcbiAgICByZXR1cm4gJyMnICsgKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnN1YnN0cigtNik7XFxufVxcbnZhciBsaXN0cyA9IHBkZmEoaHRtbCwgXFxcIi5jYXRlZ29yeXMmJi5jaGlsZFxcXCIpO1xcbmxpc3RzLmZvckVhY2goaXRlbT0+e1xcbiAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArIHBkZmgoaXRlbSxcXFwiYSYmVGV4dFxcXCIpLmZvbnRjb2xvcihnZXRSYW5nZUNvbG9ycygpKSwgICAgICAgICBcXG4gICAgICAgICAgICAgICB1cmw6IHBkZmgoaXRlbSxcXFwiYSYmaHJlZlxcXCIpICsgJyMjZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgICAgICB9KVxcbn0pXFxuZC5wdXNoKHtjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIn0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobVcIixcInBhdGhcIjpcImhvbWVcIixcInJ1bGVcIjpcInZhciB0YWIxID0gcGRmYShodG1sLCAnYm9keSYmLnJlY29tbWVuZCcpOyBcXG52YXIgdGFiMiA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5jb250ZW50cyYmLmNvbnRlbnQnKTsgXFxudmFyIHRhYnMgPSB0YWIxLmNvbmNhdCh0YWIyKVxcbnZhciBjb250cyA9IHRhYnNcXG5cXG5mb3IgKHZhciBpID0gMDsgaSA8IGNvbnRzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgdmFyIGxpc3QgPSBwZGZhKGNvbnRzW2ldLCAnLnBvc3RzJiYucG9zdCcpOyBcXG4gICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxtaWRkbGU+PGZvbnQgY29sb3I9I0ZGQTUwMD4nK3BkZmgodGFic1tpXSwgJy5hcmNoaXZlLXRpdGxlJiZUZXh0JykucmVwbGFjZShcXFwiKyBNb3JlXFxcIixcXFwiXFxcIikrJzwvZm9udD48L21pZGRsZT4nLFxcbiAgICAgICAgZGVzYzogJzxtaWRkbGU+PGZvbnQgY29sb3I9cmVkPitcXFxcdFxcXFx0XFxcXHRcXFxcdCAg8J2QjPCdkKjwnZCr8J2QnjwvZm9udD48L21pZGRsZT4nLFxcbiAgICAgICAgaW1nOiBcXFwiaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL0lJZW5YLnBuZ1xcXCIsXFxuICAgICAgICB1cmw6IHBkKHRhYnNbaV0sJ2EmJmhyZWYnKSArICcjI2Z5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICBleHRyYToge2xpbmVWaXNpYmxlOmZhbHNlfVxcbiAgICB9KTtcXG5cXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykgeyAgICAgXFxuICB2YXIgaW1nID0gIGkgPT0gMD8gcGQobGlzdFtqXSwnaW1nJiZzcmMnKSA6IHBkKGxpc3Rbal0sJ2ltZyYmZGF0YS1vcmlnaW5hbCcpOyAgXFxuICB2YXIgdGl0bGUgPSBwZGZoKGxpc3Rbal0sICdhJiZ0aXRsZScpLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIixcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsXFxcIvCflKVcXFwiKS5yZXBsYWNlKFxcXCJbNEtdXFxcIixcXFwi8J+WpVxcXCIpLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIixcXFwi8J+HuvCfh7hcXFwiKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5tZXRhLS0uZGF0ZSYmVGV4dCcpLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZy5yZXBsYWNlKC8oaHR0cC4qP1xcXFwuKD86anBnfHdlYnB8cG5nfGpwZWcpKS4qLyxcXFwiJDFcXFwiKSxcXG4gICAgICAgICAgICAgICAgdXJsOiBwZChsaXN0W2pdLCAnYSYmaHJlZicpICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiZXJcXFwiKScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7cGFnZVRpdGxlOnRpdGxlfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdcIixcInBhdGhcIjpcInlpXCIsXCJydWxlXCI6XCJqczpcXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwieXNvcnRcXFwiKTsgICBcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInl1cmxcXFwiKTsgICBcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcIm5leHRQYWdcXFwiKTsgICBcXG59KSk7XFxudmFyIGQgPSBbXVxcbk1ZX1VSTCA9IGdldE15VmFyKFxcXCJ5dXJsXFxcIiwgTVlfVVJMLnJlcGxhY2UoLyMjXFxcXGQrLyxcXFwiXFxcIikpO1xcbmxldCBuZXh0UGFnID0gZ2V0TXlWYXIoXFxcIm5leHRQYWdcXFwiLCBcXFwiXFxcIik7XFxuaWYgKG5leHRQYWcgJiYgTVlfUEFHRSA+IDEpIHtcXG4gICAgTVlfVVJMID0gbmV4dFBhZztcXG59IGVsc2UgaWYgKE1ZX1BBR0UgPiAxKSB7XFxuICAgICAgICAgICAgTVlfVVJMID0gXFxcIuayoeacieS4i+S4gOmhteWTpvCfmJFcXFwiXFxuICAgICAgICB9XFxuLy92YXIgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyhNWV9VUkwpXFxudmFyIGh0bWwgPSBmZXRjaChNWV9VUkwpXFxudHJ5IHtcXG4gICAgdmFyIG5leHRVcmxsID0gcGQoaHRtbCwgXFxcIi5uZXh0LXBhZ2UmJmEmJmhyZWZcXFwiKTtcXG4gICAgcHV0TXlWYXIoXFxcIm5leHRQYWdcXFwiLCBuZXh0VXJsbCk7XFxufSBjYXRjaCAoZSkge1xcbiAgICBjbGVhck15VmFyKFxcXCJuZXh0UGFnXFxcIik7XFxuICAgLy8gdG9hc3QoXFxcIuWlveWDj+ayoeacieS4i+S4gOmhteS6hu+8gVxcXCIpO1xcbn1cXG5sb2coTVlfVVJMKVxcblxcbi8vbG9nKFxcXCLkuIvkuIDpobUgIO+8mlxcXCIrbmV4dFBhZylcXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlLGNvbG9yKSB7XFxuICAgICAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBjb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxuICAgICAgICAgfVxcblxcbmlmKE1ZX1RZUEUgIT0gXFxcInNlYXJjaFxcXCIpIHtcXG4gICAgIHZhciBwYWdpbmF0aW9uID0gcGRmYShodG1sLCBcXFwiLnBhZ2luYXRpb24mJmxpOm5vdCgucHJldi1wYWdlKTpub3QoLm5leHQtcGFnZSlcXFwiKTtcXG4gICAgdmFyIGN1cnJlbnR1ID0gcGRmaChodG1sLFxcXCJsaW5rW2hyZWZsYW5nPXpoXSYmaHJlZlxcXCIpXFxuXFxuICAgIHZhciBmaXJzdHUgPSBjdXJyZW50dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sXFxcIlxcXCIpXFxuICAgIHZhciBhY3RpdmUgPSBjdXJyZW50dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pID8gY3VycmVudHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKVsxXSA6IDE7XFxuICAgIHZhciBsYXN0dSA9IHBkZmgocGFnaW5hdGlvbi5wb3AoKSxcXFwiYSYmaHJlZlxcXCIpIHx8IGN1cnJlbnR1XFxuICAgIHZhciBsYXN0cCA9IGxhc3R1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLykgPyBsYXN0dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pWzFdIDogMTtcXG5cXG52YXIgcGFnaTtcXG4gICAgaWYgKGFjdGl2ZT09MSkge1xcbiAgICAgICBwYWdpID0gMFxcbn0gZWxzZSBpZiAoYWN0aXZlID09IGxhc3RwKSB7XFxuICAgICAgIHBhZ2kgPSAyXFxufSBlbHNlIHtcXG4gICAgICAgcGFnaSA9IDFcXG59XFxuICAgIHZhciB0aXRsZSA9IFtcXFwi6aaWXFxcIixcXFwi6Lez6aG1OlxcXCIgKyBhY3RpdmUsXFxcIuWwvumhtTpcXFwiICsgbGFzdHBdXFxuICAgIHZhciB1cmxzID0gW2ZpcnN0dSxNWV9VUkwsbGFzdHVdXFxuaWYgKCBjdXJyZW50dSAhPT0gXFxcImh0dHBzOi8vc3VwamF2LmNvbS96aC9cXFwiICl7XFxuICAgZm9yICh2YXIgaiBpbiB0aXRsZSkge1xcblxcbiAgICB2YXIgdXJsID0gdXJsc1tqXSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHsgICAgXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcblxcbiAgICBpZiAoaj09MSkge1xcbiAgICB1cmwgPSAkKCcnLCfpmaTpppbpobXlkozlsL7pobXkuYvlpJbnmoTpobXnoIEnKS5pbnB1dCgobGFzdHUsbGFzdHApPT57XFxuICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXQpID4gMSAmJiBwYXJzZUludChpbnB1dCkgPCBwYXJzZUludChsYXN0cCkgJiYgcGFyc2VJbnQoaW5wdXQpICUgMSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIHZhciBqdW1wdSA9IGxhc3R1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIi9wYWdlL1xcXCIrIGlucHV0KVxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwieXVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxufSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOmhteeggVxcXCJ9XFxuICAgICAgICAgICB9LGxhc3R1LGxhc3RwKSAgICAgICAgICAgICAgICAgIFxcbiAgICAgIH1cXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhZ2kgPT0gaiA/IGdldEhlYWQodGl0bGVbal0sJyNGRjY2OTknKSA6IHRpdGxlW2pdLCAgICAgICAgICAgXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJywgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgfSlcXG59fVxcbn1cXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICB2YXIgc29ydCA9IHBkZmEoaHRtbCwgXFxcIi5zb3J0JiZhXFxcIik7XFxuICAgZm9yICh2YXIgaiBpbiBzb3J0KSB7XFxuICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHNvcnRbal0sJ1RleHQnKVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ3lzb3J0JywgJzAnKSA9PSBqID8gZ2V0SGVhZCh0aXRsZSwnI0ZGNjY5OScpIDogdGl0bGUsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICB1cmw6IHBkKHNvcnRbal0sICdhJiZocmVmJykgKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCd5c29ydCcsIGopXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcbiAgICAgICAgfSlcXG59XFxufVxcblxcbnZhciBsaXN0ID0gcGRmYShodG1sLCBcXFwiLnBvc3RzJiYucG9zdFxcXCIpO1xcbmxpc3QuZm9yRWFjaChpdGVtPT57XFxuICAgdmFyIGltZyA9IHBkKGl0ZW0sXFxcImltZyYmZGF0YS1vcmlnaW5hbFxcXCIpO1xcbiAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSxcXFwiYSYmdGl0bGVcXFwiKS5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsXFxcIvCfh6jwn4ezXFxcIikucmVwbGFjZShcXFwiW1xcXFx1NjVlMFxcXFx1NzgwMeegtOino11cXFwiLFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsXFxcIvCflqVcXFwiKS5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsXFxcIvCfh7rwn4e4XFxcIik7XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXRlbSxcXFwiLm1ldGEtLS5kYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sXFxcIiQxXFxcIiksXFxuICAgICAgICAgICAgICAgdXJsOiBwZGZoKGl0ZW0sXFxcImEmJmhyZWZcXFwiKSArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImVyXFxcIiknLFxcbiAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICAgICAgICAgZXh0cmE6IHtwYWdlVGl0bGU6dGl0bGV9XFxuICAgICAgICAgfSlcXG59KVxcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnXCIsXCJwYXRoXCI6XCJlclwiLFwicnVsZVwiOlwianM6IHZhciBkID0gW11cXG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgJycpO1xcbmxvZyhNWV9VUkwpXFxuLy92YXIgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyhNWV9VUkwpO1xcbnZhciBodG1sID0gZmV0Y2goTVlfVVJMKVxcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenknLCB7fSkpXFxuICAgIC5ydWxlKTtcXG5cXG52YXIgdGl0bGUgPSBwZGZoKGh0bWwsICcuYXJjaGl2ZS10aXRsZSYmVGV4dCcpXFxuICAgIC5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsIFxcXCLwn4eo8J+Hs1xcXCIpXFxuICAgIC5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIilcXG4gICAgLnJlcGxhY2UoXFxcIls0S11cXFwiLCBcXFwi8J+WpVxcXCIpXFxuICAgIC5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsIFxcXCLwn4e68J+HuFxcXCIpO1xcbnZhciDor4bliKvnoIEgPSB0aXRsZS5tYXRjaCgvXFxcXHcrKD86LXxfKVxcXFx3Kyg/OlxcXFxzK1xcXFxkKyk/fFxcXFx3Kyg/IVxcXFxuKVxcXFxzK1xcXFx3Ky8pWzBdXFxuaWYgKHRpdGxlICE9PSBudWxsKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj0jZTU3YTFhPicgKyB0aXRsZSArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIgKyAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh0aXRsZSkgPT4ge1xcbnRpdGxlID0gdGl0bGUucmVwbGFjZSgvRkMyUFBWXFxcXHNcXFxcZCsvLFxcXCJcXFwiKS5yZXBsYWNlKC9cXFxcdystXFxcXGQrXFxcXHMvLFxcXCJcXFwiKVxcbi8v5Yqo5oCB5Yi35pawXFxudmFyIGRlc2MgPSBmaW5kSXRlbSgndHJhbnNkZXNjJykuZGVzY1xcbiAgICAgICAgICBpZighZGVzYyl7XFxuICAgIHZhciB0cmFuc2xhdGVzID0gJC5yZXF1aXJlKFxcXCJ0cmFuc1xcXCIpLnRyYW5zbGF0ZSh0aXRsZSlcXG4gICAgICB1cGRhdGVJdGVtKFxcXCJ0cmFuc2Rlc2NcXFwiLHtcXG4gICAgICAgICAgZGVzYzogJ+KAnOKAnOKAneKAnScrdHJhbnNsYXRlcy5mb250Y29sb3IoXFxcInJlZFxcXCIpLFxcbn0pXFxufWVsc2V7XFxudXBkYXRlSXRlbShcXFwidHJhbnNkZXNjXFxcIix7XFxuICAgICAgICAgIGRlc2M6ICcnLFxcbn0pXFxufSAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIiAgICAgIFxcbi8qICAgICAgIFxcbiAgICAgICAgICB2YXIgdHJhbnNsYXRlcyA9ICQucmVxdWlyZShcXFwidHJhbnNcXFwiKS50cmFuc2xhdGUodGl0bGUpICAgXFxuICAgICAgICAgIHJldHVybiBcXFwiY29uZmlybTovL1xcXCIgKyB0cmFuc2xhdGVzICsgXFxcIi5qczonaGlrZXI6Ly9lbXB0eScgXFxcIiAgICovXFxuICAgICAgICAgICAgICAgIH0sdGl0bGUpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBpZDogJ3RyYW5zZGVzYycsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3t0aXRsZTogJ+e9kemhtScsIGpzOiAkLnRvU3RyaW5nKCgpPT57IFxcbiAgICAgICAgcmV0dXJuIFxcXCJ3ZWI6Ly9cXFwiICsgTVlfVVJMXFxuICAgICAgICAgICAgICAgICAgICAgICB9KX0se3RpdGxlOiAn5aSN5Yi2JywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyB0aXRsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgIH0sdGl0bGUpfSx7dGl0bGU6ICfnmb7luqbnv7vor5EnLCBqczogJC50b1N0cmluZygodGl0bGUpPT57IFxcbiAgICAgICAgcmV0dXJuIFxcXCJ4NTovL2h0dHBzOi8vZmFueWkuYmFpZHUuY29tLyNqcC96aC9cXFwiICsgdGl0bGVcXG4gICAgICAgICAgICAgICAgICAgICAgIH0sdGl0bGUpfSx7dGl0bGU6ICdEZWVwbOe/u+ivkScsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcIng1Oi8vaHR0cHM6Ly93d3cuZGVlcGwuY29tL3poL3RyYW5zbGF0b3ItbW9iaWxlI2phL3poL1xcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9LHt0aXRsZTogJ+iwt+atjOe/u+ivkScsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcIng1Oi8vaHR0cHM6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbS8/aGw9emgtQ04mc2w9amEmdGw9emgtQ04mdGV4dD1cXFwiICsgdGl0bGVcXG4gICAgICAgICAgICAgICAgICAgICAgIH0sdGl0bGUpfV1cXG59XFxuICAgIH0pXFxufVxcblxcbnZhciBpbWcgPSBwZChodG1sLCBcXFwiLnBvc3QtbWV0YSYmaW1nJiZzcmNcXFwiKTtcXG5pZiAoaW1nICE9PSBudWxsKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+WkjeWItuWbvueJhycsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpbWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBpbWdcXG4gICAgICAgICAgICAgICAgfSwgaW1nKVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmiZPlvIDlm77niYcnLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaW1nKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW1nXFxuICAgICAgICAgICAgICAgIH0sIGltZylcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL6L295Zu+54mHJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGltZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBpbWdcXG4gICAgICAgICAgICAgICAgfSwgaW1nKVxcbiAgICAgICAgICAgIH1dXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn1cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVxcXCJjb2xvcjogXFxcIj48c21hbGw+8J2QkvCdkITwnZCR8J2QlfCdkITwnZCRIO+8muW3suWxj+iUvUpQQeetieaXoOeUqOe6v+i3rzwvc21hbGw+PC9zcGFuPicsXFxuICAgIHVybDog6K+G5Yir56CBICsgJCgnI25vTG9hZGluZyMnKVxcbiAgICAgICAgLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL3lqP3J1bGU98J2QifCdkJrwnZCv8J2Qg/CdkIEmdXJsPVxcXCIgKyBnZXRQdWJsaWNJdGVtKCdqYXZkYjAnLCAnaHR0cHM6Ly9qYXZkYi5jb20nKSArIFxcXCIvc2VhcmNo77yf77yfZj1hbGzvvIbvvIZwYWdlPWZ5cGFnZe+8hu+8hnE9XFxcIiArIGlucHV0XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICBwYWdlVGl0bGU6IOivhuWIq+eggVxcbiAgICB9XFxufSk7XFxuXFxuLy/lt7Lnu4/op6PmnpDnmoTnur/ot69cXG52YXIgUGxheWxpbmVkID0gW1xcXCJUVlxcXCIsIFxcXCJGU1RcXFwiLCBcXFwiU1RcXFwiLCBcXFwiVk9FXFxcIiwgXFxcIkRTXFxcIiwgXFxcIlN0cmVhbXRhcGVcXFwiLCBcXFwiVlRVXFxcIl1cXG5cXG5sZXQgYnRucyA9IHBkZmEoaHRtbCwgJy5idG5zJiYuYnRuc3QnKVxcbmlmIChidG5zLmxlbmd0aCA9PSAxKSB7XFxuICAgIGJ0bnN0ID0gcGRmYShidG5zWzBdLCAnYm9keSYmZGl2JylcXG59IGVsc2Uge1xcbiAgICBidG5zdCA9IHBkZmEoYnRuc1sxXSwgJ2JvZHkmJi5jZC1zZXJ2ZXInKVxcbn1cXG5idG5zdC5mb3JFYWNoKChjZHMsIGluZGV4KSA9PiB7XFxuICAgIGxldCBzZXJ2ZXIgPSBwZGZhKGNkcywgJ2JvZHkmJmE6bm90KDptYXRjaGVzKEpQQXxKU3xTU0J8TlN8TWl4ZHJvcHxOaW5qYVN0cmVhbXxNRHxHb1VubGltaXRlZCkpJyk7IC8v5bGP6JS957q/6Lev8J+IsvCfiLLwn4iy8J+IsvCfiLLwn4iyXFxuICAgIGlmIChidG5zdC5sZW5ndGggPiAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArIFxcXCJDRFxcXCIuYm9sZCgpXFxuICAgICAgICAgICAgICAgIC5mb250Y29sb3IoXFxcIiM4QTJCRTJcXFwiKSArIChpbmRleCArIDEpXFxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpXFxuICAgICAgICAgICAgICAgIC5ib2xkKClcXG4gICAgICAgICAgICAgICAgLmZvbnRjb2xvcihcXFwiIzhBMkJFMlxcXCIpICsgXFxcIjpcXFwiLmZvbnRjb2xvcihcXFwiIzhBMkJFMlxcXCIpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBzZXJ2ZXIuZm9yRWFjaCgobGlzdCwgaW5kZXgpID0+IHtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgobGlzdCwgJ1RleHQnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFBsYXlsaW5lZC5pbmRleE9mKHRpdGxlKSA+PSAwID8gJ+KAnOKAnOKAneKAnScgKyAn8J+XrycuZm9udGNvbG9yKFxcXCIjMjc3Njg2XFxcIikgKyB0aXRsZS5ib2xkKClcXG4gICAgICAgICAgICAgICAgLmZvbnRjb2xvcihcXFwiIzI3NzY4NlxcXCIpICsgJ/Cfl68nLmZvbnRjb2xvcihcXFwiIzI3NzY4NlxcXCIpIDogJ/Cfl6/igJzigJzigJ3igJ0nICsgdGl0bGUuYm9sZCgpICsgJ/Cfl68nLFxcbiAgICAgICAgICAgIHVybDogcGRmaChsaXN0LCAnYSYmZGF0YS1saW5rJykgKyBsYXp5LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICB9KTtcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5cXG5sZXQgaW5mbyA9IHBkZmEoaHRtbCwgJy5wb3N0LW1ldGEmJi5jYXRzJiZhJyk7XFxuaW5mby5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xcbiAgICB2YXIgdGl0bGUgPSBwZGZoKGxpc3QsICdUZXh0Jyk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaW5kZXggPT0gMSA/ICfigJjigJhNYWtlcjrigJnigJknICsgdGl0bGUgOiAoaW5kZXggPiAxID8gJ+KAmOKAmENhc3Q64oCZ4oCZJyArIHRpdGxlIDogdGl0bGUpLFxcbiAgICAgICAgdXJsOiBwZChsaXN0LCAnYSYmaHJlZicpICsgJyMjZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGVcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGlmIChpbmRleCA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5sZXQgdGFncyA9IHBkZmEoaHRtbCwgJy5wb3N0LW1ldGEmJi50YWdzJiZhJyk7XFxudGFncy5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xcbiAgICB2YXIgdGl0bGUgPSBwZGZoKGxpc3QsICdUZXh0Jyk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnCcgKyB0aXRsZSArICfigJ3igJ0nLFxcbiAgICAgICAgdXJsOiBwZChsaXN0LCAnYSYmaHJlZicpICsgJyMjZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn0pXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6ICNGRkZGRkY7XFxcIj7wnZCY8J2QqPCdkK4g8J2QjPCdkJrwnZCyIPCdkIDwnZCl8J2QrPCdkKgg8J2Qi/CdkKLwnZCk8J2Qnjwvc3Bhbj4nLFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG59KTtcXG5cXG52YXIgbGlzdCA9IHBkZmEoaHRtbCwgXFxcIi5wb3N0cyYmLnBvc3RcXFwiKTtcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIHZhciBpbWcgPSBwZChpdGVtLCBcXFwiaW1nJiZkYXRhLW9yaWdpbmFsXFxcIik7XFxuICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwgXFxcImEmJnRpdGxlXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsIFxcXCLwn4eo8J+Hs1xcXCIpXFxuICAgICAgICAucmVwbGFjZShcXFwiW1xcXFx1NjVlMFxcXFx1NzgwMeegtOino11cXFwiLCBcXFwi8J+UpVxcXCIpXFxuICAgICAgICAucmVwbGFjZShcXFwiWzRLXVxcXCIsIFxcXCLwn5alXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsIFxcXCLwn4e68J+HuFxcXCIpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgZGVzYzogcGRmaChpdGVtLCBcXFwiLm1ldGEtLS5kYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICBpbWc6IGltZy5yZXBsYWNlKC8oaHR0cC4qP1xcXFwuKD86anBnfHdlYnB8cG5nfGpwZWcpKS4qLywgXFxcIiQxXFxcIiksXFxuICAgICAgICB1cmw6IHBkZmgoaXRlbSwgXFxcImEmJmhyZWZcXFwiKSArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImVyXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyBcXFwi5oiR5piv5pyJ5bqV57q/55qEXFxcIi5mb250Y29sb3IoXFxcImdyZXlcXFwiKVxcbiAgICAgICAgICAgICAgICAuc21hbGwoKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Kej5p6QXCIsXCJwYXRoXCI6XCJsYXp5XCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgLy9KUEHnrYnnur/ot6/mjILkuoblt7LlsY/olL3vvIzpnIDopoHlj6/ljrvkuoznuqfmgaLlpI1cXG4gICAgLy9UVue6v+i3ry8vRlNU57q/6LevLy9WT0Xnur/ot68vL1NU57q/6LevLy9EU+e6v+i3ry8vVlRV57q/6LevXFxuICAgIC8vIOWumuS5ieS4gOS4quino+aekOWIhui+qOeOh+eahOWHveaVsFxcbiAgICBmdW5jdGlvbiBnZXRSZXNvbHV0aW9uKG5hbWUpIHtcXG4gICAgICAgIHZhciBtYXRjaCA9IG5hbWUubWF0Y2goLyhcXFxcZCspLyk7IC8vIOaPkOWPlumZjee6p+WIhui+qOeOh1xcbiAgICAgICAgcmV0dXJuIG1hdGNoID8gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSA6IDA7IC8vIOWmguaenOayoeacieWMuemFjeWImei/lOWbnjBcXG4gICAgfVxcbiAgICB2YXIgaWQgPSBpbnB1dC5zcGxpdCgnJykucmV2ZXJzZSgpLmpvaW4oJycpO1xcbiAgICB2YXIgdXJsID0gYGh0dHBzOi8vbGsxLnN1cHJlbWVqYXYuY29tL3N1cGphdi5waHA/Yz0ke2lkfWA7XFxuICAgIHZhciByZWZlcmVyID0gYGh0dHBzOi8vbGsxLnN1cHJlbWVqYXYuY29tL3N1cGphdi5waHA/bD0ke2lucHV0fWA7XFxuICAgIHZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2godXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiByZWZlcmVyLFxcbiAgICAgICAgfSxcXG4gICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlXFxuICAgIH0pKS51cmwucmVwbGFjZSgvIy4qLywgXFxcIlxcXCIpXFxuICAgIGxvZyhsb2NhdGlvbilcXG5cXG4gICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJlbXR1cmJvdmlkXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGgVFbnur/ot69cXG4gICAgICAgIHZhciBkb21haW4gPSBnZXRIb21lKGxvY2F0aW9uKVxcbiAgICAgICAgdmFyIHBhdGggPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgcGxheVVybCA9IHBhdGgubWF0Y2goL2h0dHBzPy4qP1xcXFwubTN1OC8pWzBdO1xcbiAgICAgICAgdmFyIGdyb3VwX3F1YWxpdHkgPSBmZXRjaChwbGF5VXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IGxvY2F0aW9uXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICAvLyBsb2coZ3JvdXBfcXVhbGl0eSlcXG4gICAgICAgIGhnaGVzdF9xdWFsaXR5ID0gZ3JvdXBfcXVhbGl0eS5tYXRjaCgvXlteI1xcXFxzXSskL2dtKS5tYXAodiA9PiB2LmluY2x1ZGVzKFxcXCJodHRwXFxcIikgPyB2ICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIiA6IHBsYXlVcmwucmVwbGFjZSgvW15cXFxcL10rJC8sIHYpKVxcbiAgICAgICAgLy9sb2coaGdoZXN0X3F1YWxpdHkpXFxuICAgICAgICBuYW1lX3F1YWxpdHkgPSBncm91cF9xdWFsaXR5Lm1hdGNoKC9SRVNPTFVUSU9OPS4qP1xcXFwsL2dtKS5tYXAobiA9PiBuLnJlcGxhY2UoL1JFU09MVVRJT049fFxcXFwsL2csIFxcXCJcXFwiKSlcXG5cXG4gICAgICAgIC8vIOaMieWIhui+qOeOh+mZjeW6j+aOkuW6jyDliIbovqjnjocg5pWw57uE77yM5bm25ZCM5pe26LCD5pW0IGhnaGVzdF9xdWFsaXR5XFxuICAgICAgICB2YXIgc29ydGVkRGF0YSA9IG5hbWVfcXVhbGl0eS5tYXAoKG5hbWUsIGluZGV4KSA9PiAoe1xcbiAgICAgICAgICAgICAgICBuYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6IGhnaGVzdF9xdWFsaXR5W2luZGV4XVxcbiAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBnZXRSZXNvbHV0aW9uKGIubmFtZSkgLSBnZXRSZXNvbHV0aW9uKGEubmFtZSkpO1xcbiAgICAgICAgLy8g5YiG5byA5o6S5bqP5ZCO55qEIG5hbWVzIOWSjCB1cmxzIOaVsOe7hFxcbiAgICAgICAgdmFyIHNvcnRlZE5hbWVzID0gc29ydGVkRGF0YS5tYXAoaXRlbSA9PiBpdGVtLm5hbWUpO1xcbiAgICAgICAgdmFyIHNvcnRlZFVybHMgPSBzb3J0ZWREYXRhLm1hcChpdGVtID0+IGl0ZW0udXJsKTtcXG4gICAgICAgIGxldCBwbGF5bGlzdCA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBuYW1lczogc29ydGVkTmFtZXMsXFxuICAgICAgICAgICAgdXJsczogc29ydGVkVXJscyxcXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgQXJyYXkoaGdoZXN0X3F1YWxpdHkubGVuZ3RoKS5maWxsKHtcXG4gICAgICAgICAgICAgICAgUmVmZXJlcjogXFxcIlxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gcGxheWxpc3Q7XFxuXFxuICAgIH0gZWxzZSBpZiAoL2NpbmR5ZXllZmluYWx8ZmMyc3RyZWFtfG1pY2hhZWxhcHBseXNvbWUvLnRlc3QobG9jYXRpb24pKSB7XFxuXFxuICAgICAgICAvL+KRoUZTVOe6v+i3r1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgc2NyaXB0ID0gcGRmaChodG1sLCBcXFwiYm9keT5zY3JpcHQmJkh0bWxcXFwiKS5yZXBsYWNlKFxcXCJldmFsXFxcIiwgXFxcIlxcXCIpXFxuICAgICAgICB2YXIgdWFzID0gZXZhbChzY3JpcHQpXFxuICAgICAgICB2YXIgcGxheVVybCA9IHVhcy5tYXRjaCgvXFxcIihodHRwcz8uKm0zdTguKj8pXFxcIi8pWzFdXFxuICAgICAgICB2YXIgZ3JvdXBfcXVhbGl0eSA9IGZldGNoKHBsYXlVcmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogbG9jYXRpb25cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGdyb3VwX3F1YWxpdHkgPSBncm91cF9xdWFsaXR5LnNwbGl0KFxcXCJcXFxcblxcXFxuXFxcIilbMF1cXG4gICAgICAgIC8vIGxvZyhncm91cF9xdWFsaXR5KVxcbiAgICAgICAgaGdoZXN0X3F1YWxpdHkgPSBncm91cF9xdWFsaXR5Lm1hdGNoKC9eW14jXFxcXHNdKyQvZ20pLm1hcCh2ID0+IHYuaW5jbHVkZXMoXFxcImh0dHBcXFwiKSA/IHYgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiIDogcGxheVVybC5yZXBsYWNlKC9bXlxcXFwvXSskLywgdikpXFxuICAgICAgICAvL2xvZyhoZ2hlc3RfcXVhbGl0eSlcXG4gICAgICAgIG5hbWVfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkubWF0Y2goL1JFU09MVVRJT049Lio/XFxcXCwvZ20pLm1hcChuID0+IG4ucmVwbGFjZSgvUkVTT0xVVElPTj18XFxcXCwvZywgXFxcIlxcXCIpKVxcblxcbiAgICAgICAgLy8g5oyJ5YiG6L6o546H6ZmN5bqP5o6S5bqPIOWIhui+qOeOhyDmlbDnu4TvvIzlubblkIzml7bosIPmlbQgaGdoZXN0X3F1YWxpdHlcXG4gICAgICAgIHZhciBzb3J0ZWREYXRhID0gbmFtZV9xdWFsaXR5Lm1hcCgobmFtZSwgaW5kZXgpID0+ICh7XFxuICAgICAgICAgICAgICAgIG5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogaGdoZXN0X3F1YWxpdHlbaW5kZXhdXFxuICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGdldFJlc29sdXRpb24oYi5uYW1lKSAtIGdldFJlc29sdXRpb24oYS5uYW1lKSk7XFxuICAgICAgICAvLyDliIblvIDmjpLluo/lkI7nmoQgbmFtZXMg5ZKMIHVybHMg5pWw57uEXFxuICAgICAgICB2YXIgc29ydGVkTmFtZXMgPSBzb3J0ZWREYXRhLm1hcChpdGVtID0+IGl0ZW0ubmFtZSk7XFxuICAgICAgICB2YXIgc29ydGVkVXJscyA9IHNvcnRlZERhdGEubWFwKGl0ZW0gPT4gaXRlbS51cmwpO1xcbiAgICAgICAgbGV0IHBsYXlsaXN0ID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIG5hbWVzOiBzb3J0ZWROYW1lcyxcXG4gICAgICAgICAgICB1cmxzOiBzb3J0ZWRVcmxzLFxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBBcnJheShoZ2hlc3RfcXVhbGl0eS5sZW5ndGgpLmZpbGwoe1xcbiAgICAgICAgICAgICAgICBSZWZlcmVyOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBwbGF5bGlzdDtcXG5cXG4gICAgfSBlbHNlIGlmIChsb2NhdGlvbi5pbmNsdWRlcyhcXFwic3RyZWFtdGFwZVxcXCIpKSB7XFxuXFxuICAgICAgICAvL+KRolNU57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIHBhdHRlcm4gPSBodG1sLm1hdGNoKC9cXFxcKCcjKC4qKSdcXFxcKS8pWzFdXFxuICAgICAgICB2YXIgc3JjID0gXFxcInZhciBzcmNsaW5rID0gXFxcIiArIGh0bWwubWF0Y2gobmV3IFJlZ0V4cChcXFwiJ1xcXCIgKyBwYXR0ZXJuICsgXFxcIi4qPz0oW147XSspXFxcIikpWzFdXFxuICAgICAgICBldmFsKHNyYylcXG4gICAgICAgIHZhciBsaW5rID0gXFxcImh0dHBzOlxcXCIgKyBzcmNsaW5rICsgXFxcIiZzdHJlYW09MVxcXCJcXG4gICAgICAgIHZhciBwbGF5VXJsID0gSlNPTi5wYXJzZShmZXRjaChsaW5rLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IGxvY2F0aW9uLFxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgICAgIH0pKS51cmxcXG4gICAgICAgIHJldHVybiBwbGF5VXJsICsgXFxcIjt7UmVmZXJlckBcXFwiICsgbG9jYXRpb24gKyBcXFwifVxcXCJcXG5cXG4gICAgfSBlbHNlIGlmICgvdm9lLy50ZXN0KGxvY2F0aW9uKSkge1xcblxcbiAgICAgICAgLy/ikaVWT0Xnur/ot69cXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmZXJlclxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgdmFyIGN1cnJlbnRVcmwgPSBodG1sLm1hdGNoKC9odHRwcz9bXiddKy8pWzBdO1xcbiAgICAgICAgdmFyIHNvdXJjZXMgPSBmZXRjaChjdXJyZW50VXJsKS5tYXRjaCgvdmFyIHNvdXJjZXNbXlxcXFw7XSsvKVswXSAgIFxcbiAgICAgICAgZXZhbChzb3VyY2VzKSAgIFxcbiAgICAgICAgdmFyIHBsYXlVcmwgPSBiYXNlNjREZWNvZGUoc291cmNlcy5obHMpIFxcbiAgICAgICAgcmV0dXJuIHBsYXlVcmwgKyBcXFwiO3tSZWZlcmVyQFxcXCIgKyBsb2NhdGlvbiArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKC9kMDAwMGR8ZG9vZHxkczJwbGF5Ly50ZXN0KGxvY2F0aW9uKSkge1xcblxcbiAgICAgICAgLy/ikaNEU+e6v+i3r1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBwYXNzX21kNSA9IGdldEhvbWUobG9jYXRpb24pICsgaHRtbC5tYXRjaCgvXFxcXC9wYXNzX21kNVteXFxcIiddKy8pWzBdXFxuICAgICAgICB2YXIgdG9rZW4gPSBodG1sLm1hdGNoKC9jb29raWVJbmRleC4qP1xcXFwnKC4qPylcXFxcJy8pWzFdXFxuICAgICAgICB2YXIgZGF0YSA9IGZldGNoKHBhc3NfbWQ1LCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IGxvY2F0aW9uXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5cXG4gICAgICAgIGZ1bmN0aW9uIG1ha2VQbGF5KHRva2VuKSB7XFxuICAgICAgICAgICAgZm9yICh2YXIgYSA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdCA9IFxcXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGgsXFxuICAgICAgICAgICAgICAgICAgICBvID0gMDsgMTAgPiBvOyBvKyspXFxuICAgICAgICAgICAgICAgIGEgKz0gdC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbikpO1xcbiAgICAgICAgICAgIHJldHVybiBhICsgXFxcIj90b2tlbj1cXFwiICsgdG9rZW4gKyBcXFwiJmV4cGlyeT1cXFwiICsgRGF0ZS5ub3coKTtcXG4gICAgICAgIH07XFxuICAgICAgICB2YXIgcGxheVVybCA9IGRhdGEgKyBtYWtlUGxheSh0b2tlbilcXG4gICAgICAgIHJldHVybiBwbGF5VXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjO3tSZWZlcmVyQFxcXCIgKyBsb2NhdGlvbiArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJ2dGJlLnRvXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGkVlRV57q/6LevXFxuICAgICAgICBmdW5jdGlvbiBldmFsZGVjb2RlKHRleHQpIHtcXG4gICAgICAgICAgICB2YXIgY29kZSA9ICcnO1xcbiAgICAgICAgICAgIHZhciBzID0gdGV4dC5yZXBsYWNlKC9eZXZhbC8sICcnKVxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgncmV0dXJuIHAnLCAnY29kZSs9cCcpXFxuICAgICAgICAgICAgZXZhbChzKTtcXG4gICAgICAgICAgICByZXR1cm4gY29kZTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHZhciBob3N0UmVnZXggPSAodXJsKSA9PiB7XFxuICAgICAgICAgICAgdmFyIG1hdGNoID0gdXJsLm1hdGNoKC9eKD86aHR0cHM/OlxcXFwvXFxcXC8pPyg/Ond3d1xcXFwuKT8oW2EtekEtWjAtOS1dezEsNjN9XFxcXC4pK1thLXpBLVpdezIsNn0vaSk7XFxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMF0gOiB1cmw7XFxuICAgICAgICB9O1xcblxcbiAgICAgICAgbGV0IGhvc3QgPSBob3N0UmVnZXgocmVmZXJlcilcXG5cXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFJlZmVyZXI6IGhvc3QsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBpZnJhbWUgPSBwZGZhKGh0bWwsIFxcXCJpZnJhbWVcXFwiKTtcXG5cXG4gICAgICAgIGlmIChpZnJhbWUubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIGh0bWwgPSBmZXRjaChwZGZoKGlmcmFtZVswXSwgXFxcImlmcmFtZSYmc3JjXFxcIiksIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogaG9zdCxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuXFxuICAgICAgICB2YXIgc2NyaXB0cyA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJnNjcmlwdFxcXCIpO1xcbiAgICAgICAgbGV0IHNjcmlwdCA9IHNjcmlwdHMuZmlsdGVyKHggPT4geC5pbmNsdWRlcygnZXZhbCcpKS5tYXAobSA9PiBwZGZoKG0sIFxcXCJzY3JpcHQmJkh0bWxcXFwiKSlbMF07XFxuICAgICAgICBpZiAoc2NyaXB0ID09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/ml6DmlbDmja4nXFxuICAgICAgICB9XFxuXFxuICAgICAgICBsZXQgbTN1OCA9IC9maWxlOlxcXCIoLio/KVxcXCIvZy5leGVjKGV2YWxkZWNvZGUoc2NyaXB0KSlbMV07XFxuICAgICAgICByZXR1cm4gbTN1ODtcXG5cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGxvZyhcXFwi6Z2p5ZG95bCa5pyq5oiQ5YqfLOWQjOW/l+S7jemcgOWKquWKmyFcXFwiKVxcbiAgICAgICAgcmV0dXJuIFxcXCJjb25maXJtOi8v5ZKzLOacrOe6v+i3r+i/meS4quWcsOWdgOW5tuayoeacieino+aekO+8jOaXpeW/l+W3suaJk+WNsOWHuu+8jOaVrOivt+afpeeciy5qczonaGlrZXI6Ly9lbXB0eScgXFxcIlxcbiAgICB9XFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue/u+ivkVwiLFwicGF0aFwiOlwidHJhbnNcIixcInJ1bGVcIjpcIiAgICAvL+e/u+ivkVxcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUodGV4dCkge1xcbiAgICAgICAgdmFyIHN3aXRjaHRyYW5zID0gZ2V0SXRlbSgnc3dpdGNodHJhbnMnLCAn5b2p5LqR5bCP6K+RJyk7XFxuICAgICAgICBpZiAoIHN3aXRjaHRyYW5zID09IHRydWUgfHwgc3dpdGNodHJhbnMgPT0gXFxcIuW9qeS6keWwj+ivkVxcXCIpIHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICB2YXIgdG8gPSAnemgnXFxuICAgICAgICAgICAgICAgIHZhciBmcm9tID0gJ2F1dG8nXFxuXFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRfZGF0YShzb3VyY2VfbGFuZywgdGFyZ2V0X2xhbmcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3Q6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb3NfdHlwZTogJ2lvcycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX2lkOiAnRjFGOTAyRjctMTc4MC00Qzg4LTg0OEQtNzFGMzVEODhBNjAyJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc190eXBlOiBzb3VyY2VfbGFuZyArICcyJyArIHRhcmdldF9sYW5nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiAndGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9pZDogNDI0MjM4MzM1LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Q6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0UmFuZG9tTnVtYmVyKCkge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFuZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTk5KSArIDEwMDAwMFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmQgKiAxMDAwXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY29uc3QgcG9zdF9kYXRhID0gaW5pdF9kYXRhKGZyb20sIHRvKVxcbiAgICAgICAgICAgICAgICBwb3N0X2RhdGEuc291cmNlID0gdGV4dFxcbiAgICAgICAgICAgICAgICBwb3N0X2RhdGEucmVxdWVzdF9pZCA9IGdldFJhbmRvbU51bWJlcigpXFxuICAgICAgICAgICAgICAgIGxldCByZXMgPSBmZXRjaCgnaHR0cHM6Ly9pbnRlcnByZXRlci5jeWFwaS5jbi92MS90cmFuc2xhdG9yJywge1xcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICd4LWF1dGhvcml6YXRpb24nOiAndG9rZW4gc3NkajI3M2tzZGl3aTkyM2JzZDknLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyLWFnZW50JzogJ2NhaXl1bkludGVycHJldGVyLzUgQ0ZOZXR3b3JrLzE0MDQuMC41IERhcndpbi8yMi4zLjAnLFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IHBvc3RfZGF0YSxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzKVxcbiAgICAgICAgICAgICAgICAgICAgLnRhcmdldFxcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgXFxcIuOAkOKYge+4j+OAkVxcXCJcXG4gICAgICAgICAgICB9IGNhdGNoIHtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCLnv7vor5HlpLHotKXvvIzkvb/nlKjljp/mlodcXFwiKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2UgaWYgKHN3aXRjaHRyYW5zID09IFxcXCLlsI/niZvnv7vor5FcXFwiKSB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL2FwaS5uaXV0cmFucy5jb20vTml1VHJhbnNTZXJ2ZXIvdHJhbnNsYXRpb25cXFwiO1xcbiAgICAgICAgICAgICAgICB2YXIgYXBpID0gZ2V0SXRlbSgnYXBpJyk7XFxuICAgICAgICAgICAgICAgIGlmIChhcGkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0ICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmcgPSBcXFwiaHR0cHM6Ly90ZXN0Lm5pdXRyYW5zLmNvbS9OaXVUcmFuc1NlcnZlci9sYW5ndWFnZT9zcmNfdGV4dD1cXFwiICsgdGV4dCArIFxcXCImc291cmNlPXRleHRcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gSlNPTi5wYXJzZShmZXRjaChsYW5nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAwXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGFuZ3VhZ2U7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBvc3QodXJsLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY190ZXh0OiB0ZXh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogZnJvbSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBcXFwiemhcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpa2V5OiBhcGksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEyMjNcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UocmVzdWx0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRndF90ZXh0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnRndF90ZXh0ICsgXFxcIuOAkPCfkK7jgJFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLnv7vor5HlpLHotKXvvIzkvb/nlKjljp/mlodcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFwi57+76K+R5aSx6LSl77yM5Y6f5paH5Li656m6XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLpooTlpITnkIbor7floavlhpnnv7vor5FhcGlcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gY2F0Y2gge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIue/u+ivkeWksei0pe+8jOS9v+eUqOWOn+aWh1xcXCIpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgIH1cXG4gICAgfTtcXG5cXG4gICAgJC5leHBvcnRzLnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA6KiAXCIsXCJwYXRoXCI6XCJ5aXlhblwiLFwicnVsZVwiOlwiLy9hdXRob3I657KJ5aa5XFxuZnVuY3Rpb24gc2F2ZV9kYXlfc2F5X2NhY2hlKCkge1xcbiAgICBsZXQgZGF5X3NheV9jYWNoZSA9IHt9XFxuICAgIGxldCBkYXlfc2F5X2h0bWwgPSBmZXRjaCgnaHR0cHM6Ly92MS5oaXRva290by5jbicsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6XFxuICAgICAgICAgICAgICAgICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIyLjAuMC4wIFNhZmFyaS81MzcuMzYnLFxcbiAgICAgICAgfSxcXG4gICAgfSlcXG4gICAgZGF5X3NheV9odG1sID0gSlNPTi5wYXJzZShkYXlfc2F5X2h0bWwpXFxuICAgIGRheV9zYXlfY2FjaGVbJ2NvbnRlbnQnXSA9IGRheV9zYXlfaHRtbFsnaGl0b2tvdG8nXVxcbiAgICBkYXlfc2F5X2NhY2hlWyd0aW1lJ10gPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKVxcbiAgICBzdG9yYWdlMC5wdXRNeVZhcignZGF5c2F5JywgZGF5X3NheV9jYWNoZSlcXG4gICAgcmV0dXJuIGRheV9zYXlfaHRtbFsnaGl0b2tvdG8nXVxcbn1cXG5cXG4gICAgbGV0IGRheV9zYXkgPSAnJ1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGRheV9zYXlfY2FjaGUgPSB7fVxcbiAgICAgICAgbGV0IGRheV90aW1lID0gMFxcbiAgICAgICAgaWYgKHN0b3JhZ2UwLmdldE15VmFyKCdkYXlzYXknKSkge1xcbiAgICAgICAgICAgIGRheV9zYXlfY2FjaGUgPSBzdG9yYWdlMC5nZXRNeVZhcignZGF5c2F5Jywge30pXFxuICAgICAgICAgICAgZGF5X3RpbWUgPSBkYXlfc2F5X2NhY2hlWyd0aW1lJ11cXG4gICAgICAgICAgICBpZiAoTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCkgLSBkYXlfdGltZSA+PSAxMCkge1xcbiAgICAgICAgICAgICAgICBkYXlfc2F5ID0gc2F2ZV9kYXlfc2F5X2NhY2hlKClcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBkYXlfc2F5ID0gZGF5X3NheV9jYWNoZVsnY29udGVudCddXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkYXlfc2F5ID0gc2F2ZV9kYXlfc2F5X2NhY2hlKClcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCB7XFxuICAgICAgICBkYXlfc2F5ID0gJydcXG4gICAgfVwifV0iLCJpY29uIjoiaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL3pyd0s0LndlYnAiLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment