Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@𝐒𝐮𝐩𝐣𝐚𝐯@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi8J2QkvCdkK7wnZCp8J2Qo/CdkJrwnZCvIiwiYXV0aG9yIjoiUiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2h0dHBzOi8vc3VwamF2LmNvbS96aC8jI2Z5cGFnZSIsInZlcnNpb24iOjIwMjUwMjE1LCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG4gICAgYWRkTGlzdGVuZXIoXCJvbkNsb3NlXCIsICgpID0+IHtcbiAgICAgICAgY2xlYXJNeVZhcihcIm5leHRQYWdlXCIpO1xuICAgIH0pO1xuLypcbmFkZExpc3RlbmVyKFwib25SZWZyZXNoXCIsICgpID0+IHtcbiAgICBjbGVhck15VmFyKFwibmV4dFBhZ2VcIik7XG59KTtcbiovXG52YXIgZCA9IFtdXG52YXIgcmVzID0gW11cbk1ZX1VSTCA9IE1ZX1VSTC5zcGxpdChcIiMjXCIpWzFdXG5sZXQgdHJ1ZV91cmwgPSBnZXRNeVZhcihcInVybFwiLCBNWV9VUkwpO1xubGV0IG5leHRQYWdlID0gZ2V0TXlWYXIoXCJuZXh0UGFnZVwiLCBcIlwiKTtcbmlmIChuZXh0UGFnZSAmJiBNWV9QQUdFID4gMSkge1xuICAgIHRydWVfdXJsID0gbmV4dFBhZ2U7XG59IGVsc2UgaWYgKE1ZX1BBR0UgPiAxKSB7XG4gICAgdHJ1ZV91cmwgPSBcIuayoeacieS4i+S4gOmhteWTpvCfmJFcIlxufVxudmFyIGh0bWwgPSBmZXRjaCh0cnVlX3VybCwgSlNPTi5wYXJzZShnZXRNeVZhcignaGVhZGVycycpKSlcbi8vdmFyIGh0bWwgPSBmZXRjaENvZGVCeVdlYlZpZXcodHJ1ZV91cmwpXG5sb2codHJ1ZV91cmwpXG4vL2xvZyhodG1sKVxudHJ5IHtcbiAgICBsZXQgbmV4dFVybCA9IHBkKGh0bWwsIFwiLnBhZ2luYXRpb24mJi5hY3RpdmUrbGkmJmEmJmhyZWZcIik7XG4gICAgcHV0TXlWYXIoXCJuZXh0UGFnZVwiLCBuZXh0VXJsKTtcbn0gY2F0Y2ggKGUpIHtcbiAgICBjbGVhck15VmFyKFwibmV4dFBhZ2VcIik7XG4gICAgLy8gdG9hc3QoXCLlpb3lg4/msqHmnInkuIvkuIDpobXkuobvvIFcIik7XG59XG5cbmlmIChodG1sLmluY2x1ZGVzKFwi6K+356iN5YCZ4oCmXCIpIHx8IGh0bWwuaW5jbHVkZXMoXCJKdXN0IGEgbW9tZW50XCIpKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJ+eCueWHu+iOt+WPlmNvb2tpZScuZm9udGNvbG9yKCcjRkYwMEZGJykuYmlnKCksXG4gICAgICAgIHVybDogdHJ1ZV91cmwsXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArICfngrnlh7vliLfmlrAnLmZvbnRjb2xvcignI0ZGMDAwMCcpLmJpZygpLFxuICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgICAgICB9KSxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJ+WFjei/h0NG5Lit6L2s5py65Zy6Jy5mb250Y29sb3IoJyNGRjY2OTknKS5iaWcoKS5iaWcoKSxcbiAgICAgICAgZGVzYzogJ+aciemVv+acn+a1gemHjyzliIbmtYFzdXBqYXYuY29t5Z+f5ZCN5LiT55SoLOa1gemHj+WPr+eUqOS4gOi+iOWtkCcsXG4gICAgICAgIHVybDogXCJodHRwczovL3d3dy5uZnNxLnVzLyMvcmVnaXN0ZXI/Y29kZT1jR1Z6Q0ZZcVwiLFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUsIGNvbG9yKSB7XG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVwiJyArIGNvbG9yICsgJ1wiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XG59XG5cbiQucmVxdWlyZShcImNhdGVnb3J5XCIpKClcblxuaWYgKHRydWVfdXJsID09IFwiaHR0cHM6Ly9zdXBqYXYuY29tL3poL1wiKSB7XG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xuICAgICAgICAkLnJlcXVpcmUoXCJob21lXCIpXG4gICAgfVxufSBlbHNlIGlmICgvdGFnfG1ha2VyfGNhc3QvLnRlc3QodHJ1ZV91cmwpKSB7XG4gICAgJC5yZXF1aXJlKFwidGFic1wiKVxufSBlbHNlIHtcbiAgICAkLnJlcXVpcmUoXCJsaXN0XCIpKClcbn1cbnNldFByZVJlc3VsdChyZXMpXG5zZXRSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly9zdXBqYXYuY29tL3poL3BhZ2UvZnlwYWdlP3M9KioiLCJncm91cCI6IuKRoeeUnyIsInNlYXJjaEZpbmQiOiJqczpcbk1ZX1VSTCA9IE1ZX1VSTC5yZXBsYWNlKC9mYzItP3Bwdi0/fGZjMi0/L2ksXCJcIilcbiQucmVxdWlyZShcInlpXCIpIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiaWYgKCFnZXRNeVZhcignaGVhZGVycycpKXtcbnB1dE15VmFyKCdoZWFkZXJzJyx7aGVhZGVyczp7XCJDb29raWVcIjpcImNmX2NsZWFyYW5jZT0zU3duLkl6Y2FRN2dlcGNNSG9La21NM2JzX0oyNnguQldXNkhCVGxVdHowLTE3MDUyNjYwMzAtMC0yLWE2NTliMzhjLjYzOWM4NWRjLmYxNThlYzZjLTE2MC4yLjE3MDUyNjYwMzBcIixcIlVzZXItQWdlbnRcIjpcIk1vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTZfNF8xIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNi40IE1vYmlsZS8xNUUxNDggU2FmYXJpLzYwNC4xXCIsXCJSZWZlcmVyXCI6XCJodHRwczovL3N1cGphdi5jb20vXCJ9fSlcbn0iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiG57G7XCIsXCJwYXRoXCI6XCJjYXRlZ29yeVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gKCkgPT4ge1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwic29ydFxcXCIpO1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwicGFnaVxcXCIpO1xcbiAgICAgICAgLy8gY2xlYXJNeVZhcihcXFwidXJsXFxcIik7ICAgXFxuICAgIH0pKTtcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uUmVmcmVzaFxcXCIsICgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInNvcnRcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInBhZ2lcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInVybFxcXCIpO1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwidGFiXFxcIik7XFxuICAgIH0pO1xcblxcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICByZXMucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLwn5SNXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKHIpID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnRyaW0oKSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2tleXdvcmQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VhcmNoVXJsID0gXFxcImh0dHBzOi8vc3VwamF2LmNvbS96aC8/cz1cXFwiICsgaW5wdXQucmVwbGFjZSgvZmMyLT9wcHYtP3xmYzItPy9pLCBcXFwiXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBzZWFyY2hVcmwpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29uZmlybTovL+aQnOe0ouWGheWuueS4uuepui5qczonaGlrZXI6Ly9lbXB0eSdcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBNWV9SVUxFLnRpdGxlKSxcXG4gICAgICAgICAgICBkZXNjOiAn5pu+57uP5rKn5rW36Zq+5Li65rC0LOmZpOWNtOW3q+WxseS4jeaYr+S6kScsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcigna2V5d29yZCcsICcnKSB8fCBcXFwiXFxcIixcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciB0YWJzID0gcGRmYShodG1sLCBcXFwiLm5hdiYmbGk6bm90KGxpOmhhcyguc3ViLW1lbnUpKTpub3QoOmhhcyhhW3RhcmdldF0pKTpub3QoOmhhcyhhW3RpdGxlXSkpXFxcIik7XFxuICAgICAgICBmb3IgKHZhciBpIGluIHRhYnMpIHtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHRhYnNbaV0sICdUZXh0JylcXG4gICAgICAgICAgICByZXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcigndGFiJywgJzAnKSA9PSBpID8gZ2V0SGVhZCh0aXRsZSwgJyNGRjY2OTknKSA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB1cmw6IHBkKHRhYnNbaV0sICdhJiZocmVmJykgKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndGFiJywgaSlcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGkpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBpZiAoaSA9PSA1KSB7XFxuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmVzLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIHZhciBwYWdpbmF0aW9uID0gcGRmYShodG1sLCBcXFwiLnBhZ2luYXRpb24mJmxpOm5vdCgucHJldi1wYWdlKTpub3QoLm5leHQtcGFnZSlcXFwiKTtcXG4gICAgdmFyIGN1cnJlbnR1ID0gcGRmaChodG1sLCBcXFwibGlua1tocmVmbGFuZz16aF0mJmhyZWZcXFwiKVxcblxcbiAgICB2YXIgZmlyc3R1ID0gY3VycmVudHUgPyBjdXJyZW50dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCJcXFwiKSA6IFxcXCJodHRwczovL3N1cGphdi5jb20vemgvXFxcIlxcbiAgICB2YXIgYWN0aXZlID0gY3VycmVudHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKSA/IGN1cnJlbnR1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLylbMV0gOiAxO1xcbiAgICB2YXIgbGFzdHUgPSBwZGZoKHBhZ2luYXRpb24ucG9wKCksIFxcXCJhJiZocmVmXFxcIikgfHwgY3VycmVudHVcXG4gICAgdmFyIGxhc3RwID0gbGFzdHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKSA/IGxhc3R1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLylbMV0gOiAxO1xcblxcbiAgICBpZiAoIWN1cnJlbnR1LmluY2x1ZGVzKFxcXCJwb3B1bGFyXFxcIikpIHtcXG4gICAgICAgIGxhc3R1ID0gbGFzdHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIChsYXN0cCAtIDApKVxcbiAgICAgICAgbGFzdHAgPSBsYXN0cCAtIDBcXG4gICAgfVxcblxcbiAgICB2YXIgcGFnaTtcXG4gICAgaWYgKGFjdGl2ZSA9PSAxKSB7XFxuICAgICAgICBwYWdpID0gMFxcbiAgICB9IGVsc2UgaWYgKGFjdGl2ZSA9PSBsYXN0cCkge1xcbiAgICAgICAgcGFnaSA9IDJcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHBhZ2kgPSAxXFxuICAgIH1cXG4gICAgdmFyIHRpdGxlID0gW1xcXCLpppZcXFwiLCBcXFwi6Lez6aG1OlxcXCIgKyBhY3RpdmUsIFxcXCLlsL46XFxcIiArIGxhc3RwXVxcbiAgICB2YXIgdXJscyA9IFtmaXJzdHUsIE1ZX1VSTCwgbGFzdHVdXFxuICAgIGlmIChjdXJyZW50dSAhPT0gXFxcImh0dHBzOi8vc3VwamF2LmNvbS96aC9cXFwiKSB7XFxuICAgICAgICBmb3IgKHZhciBqIGluIHRpdGxlKSB7XFxuXFxuICAgICAgICAgICAgdmFyIHVybCA9IHVybHNbal0gKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGopXFxuXFxuICAgICAgICAgICAgaWYgKGogPT0gMSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSAkKCcnLCAn6Zmk6aaW6aG15ZKM5bC+6aG15LmL5aSW55qE6aG156CBJykuaW5wdXQoKGxhc3R1LCBsYXN0cCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGlucHV0KSA+IDEgJiYgcGFyc2VJbnQoaW5wdXQpIDwgcGFyc2VJbnQobGFzdHApICYmIHBhcnNlSW50KGlucHV0KSAlIDEgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqdW1wdSA9IGxhc3R1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIi9wYWdlL1xcXCIgKyBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwganVtcHUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXmraPnoa7nmoTpobXnoIFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIGxhc3R1LCBsYXN0cClcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgcmVzLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGFnaSA9PSBqID8gZ2V0SGVhZCh0aXRsZVtqXSwgJyNGRjY2OTknKSA6IHRpdGxlW2pdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgIHZhciBzb3R0ID0gY3VycmVudHUucmVwbGFjZSgvLio/KD0oLiopfCQpLywgXFxcIiQyXFxcIilcXG4gICAgICAgIHZhciBzb3J0ID0gcGRmYShodG1sLCBcXFwiLnNvcnQmJmFcXFwiKTtcXG4gICAgICAgIHNvdHQgPSBzb3R0ID09PSBcXFwiXFxcIiA/IHBkZmgoc29ydFswXSwgJ1RleHQnKS50b0xvd2VyQ2FzZSgpIDogc290dDtcXG4gICAgICAgIGZvciAodmFyIGogaW4gc29ydCkge1xcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IHBkZmgoc29ydFtqXSwgJ1RleHQnKVxcbiAgICAgICAgICAgIHJlcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNvdHQgPT0gdGl0bGUudG9Mb3dlckNhc2UoKSA/IGdldEhlYWQodGl0bGUsICcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwZChzb3J0W2pdLCAnYSYmaHJlZicpICsgJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSwgailcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcblxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiX6KGoXCIsXCJwYXRoXCI6XCJsaXN0XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSAoKSA9PiB7XFxudmFyIGxpc3QgPSBwZGZhKGh0bWwsIFxcXCIucG9zdHMmJi5wb3N0XFxcIik7XFxubGlzdC5mb3JFYWNoKGl0ZW09PntcXG4gICB2YXIgaW1nID0gcGQoaXRlbSxcXFwiaW1nJiZkYXRhLW9yaWdpbmFsXFxcIik7XFxuICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLFxcXCJhJiZ0aXRsZVxcXCIpLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIixcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsXFxcIvCflKVcXFwiKS5yZXBsYWNlKFxcXCJbNEtdXFxcIixcXFwi8J+WpVxcXCIpLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIixcXFwi8J+HuvCfh7hcXFwiKS5yZXBsYWNlKFxcXCLjgJBTdXBKQVYt54us5a6244CRXFxcIixcXFwiXFxcIik7XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXRlbSxcXFwiLm1ldGEtLS5kYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sXFxcIiQxXFxcIiksXFxuICAgICAgICAgICAgICAgdXJsOiBwZGZoKGl0ZW0sXFxcImEmJmhyZWZcXFwiKSArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImVyXFxcIiknLFxcbiAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICAgICAgICAgZXh0cmE6IHtwYWdlVGl0bGU6dGl0bGV9XFxuICAgICAgICAgfSlcXG59KVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuagh+etvlwiLFwicGF0aFwiOlwidGFic1wiLFwicnVsZVwiOlwidmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XFxuICAgIHJldHVybiAnIycgKyAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTtcXG59XFxudmFyIGxpc3RzID0gcGRmYShodG1sLCBcXFwiLmNhdGVnb3J5cyYmLmNoaWxkXFxcIik7XFxubGlzdHMuZm9yRWFjaChpdGVtPT57XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgcGRmaChpdGVtLFxcXCJhJiZUZXh0XFxcIikuZm9udGNvbG9yKGdldFJhbmdlQ29sb3JzKCkpLCAgICAgICAgIFxcbiAgICAgICAgICAgICAgIHVybDogcGRmaChpdGVtLFxcXCJhJiZocmVmXFxcIikgKyAnIyNmeXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlpXFxcIiknLFxcbiAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcbiAgICAgICAgIH0pXFxufSlcXG5kLnB1c2goe2NvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwifSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIummlumhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwidmFyIHRhYjEgPSBwZGZhKGh0bWwsICdib2R5JiYucmVjb21tZW5kJyk7IFxcbnZhciB0YWIyID0gcGRmYShodG1sLCAnYm9keSYmLmNvbnRlbnRzJiYuY29udGVudCcpOyBcXG52YXIgdGFicyA9IHRhYjEuY29uY2F0KHRhYjIpXFxudmFyIGNvbnRzID0gdGFic1xcblxcbmZvciAodmFyIGkgPSAwOyBpIDwgY29udHMubGVuZ3RoOyBpKyspIHtcXG4gICAgICB2YXIgbGlzdCA9IHBkZmEoY29udHNbaV0sICcucG9zdHMmJi5wb3N0Jyk7IFxcbiAgICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnPG1pZGRsZT48Zm9udCBjb2xvcj0jRkZBNTAwPicrcGRmaCh0YWJzW2ldLCAnLmFyY2hpdmUtdGl0bGUmJlRleHQnKS5yZXBsYWNlKFxcXCIrIE1vcmVcXFwiLFxcXCJcXFwiKSsnPC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICBkZXNjOiAnPG1pZGRsZT48Zm9udCBjb2xvcj1yZWQ+K1xcXFx0XFxcXHRcXFxcdFxcXFx0ICDwnZCM8J2QqPCdkKvwnZCePC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICBpbWc6IFxcXCJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvSUllblgucG5nXFxcIixcXG4gICAgICAgIHVybDogcGQodGFic1tpXSwnYSYmaHJlZicpICsgJyMjZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgIGV4dHJhOiB7bGluZVZpc2libGU6ZmFsc2V9XFxuICAgIH0pO1xcblxcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7ICAgICBcXG4gIHZhciBpbWcgPSAgaSA9PSAwPyBwZChsaXN0W2pdLCdpbWcmJnNyYycpIDogcGQobGlzdFtqXSwnaW1nJiZkYXRhLW9yaWdpbmFsJyk7ICBcXG4gIHZhciB0aXRsZSA9IHBkZmgobGlzdFtqXSwgJ2EmJnRpdGxlJykucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLFxcXCLwn4eo8J+Hs1xcXCIpLnJlcGxhY2UoXFxcIltcXFxcdTY1ZTBcXFxcdTc4MDHnoLTop6NdXFxcIixcXFwi8J+UpVxcXCIpLnJlcGxhY2UoXFxcIls0S11cXFwiLFxcXCLwn5alXFxcIikucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLFxcXCLwn4e68J+HuFxcXCIpO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnLm1ldGEtLS5kYXRlJiZUZXh0JyksXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLnJlcGxhY2UoLyhodHRwLio/XFxcXC4oPzpqcGd8d2VicHxwbmd8anBlZykpLiovLFxcXCIkMVxcXCIpLFxcbiAgICAgICAgICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlclxcXCIpJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtwYWdlVGl0bGU6dGl0bGV9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p1wiLFwicGF0aFwiOlwieWlcIixcInJ1bGVcIjpcImpzOlxcbmFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJ5c29ydFxcXCIpOyAgIFxcbiAgICAgICAgY2xlYXJNeVZhcihcXFwieXVybFxcXCIpOyAgIFxcbiAgICAgICAgY2xlYXJNeVZhcihcXFwibmV4dFBhZ1xcXCIpOyAgIFxcbn0pKTtcXG52YXIgZCA9IFtdXFxuTVlfVVJMID0gZ2V0TXlWYXIoXFxcInl1cmxcXFwiLCBNWV9VUkwucmVwbGFjZSgvIyNcXFxcZCsvLFxcXCJcXFwiKSk7XFxubGV0IG5leHRQYWcgPSBnZXRNeVZhcihcXFwibmV4dFBhZ1xcXCIsIFxcXCJcXFwiKTtcXG5pZiAobmV4dFBhZyAmJiBNWV9QQUdFID4gMSkge1xcbiAgICBNWV9VUkwgPSBuZXh0UGFnO1xcbn0gZWxzZSBpZiAoTVlfUEFHRSA+IDEpIHtcXG4gICAgICAgICAgICBNWV9VUkwgPSBcXFwi5rKh5pyJ5LiL5LiA6aG15ZOm8J+YkVxcXCJcXG4gICAgICAgIH1cXG4vL3ZhciBodG1sID0gZmV0Y2hDb2RlQnlXZWJWaWV3KE1ZX1VSTClcXG52YXIgaHRtbCA9IGZldGNoKE1ZX1VSTClcXG50cnkge1xcbiAgICB2YXIgbmV4dFVybGwgPSBwZChodG1sLCBcXFwiLm5leHQtcGFnZSYmYSYmaHJlZlxcXCIpO1xcbiAgICBwdXRNeVZhcihcXFwibmV4dFBhZ1xcXCIsIG5leHRVcmxsKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIGNsZWFyTXlWYXIoXFxcIm5leHRQYWdcXFwiKTtcXG4gICAvLyB0b2FzdChcXFwi5aW95YOP5rKh5pyJ5LiL5LiA6aG15LqG77yBXFxcIik7XFxufVxcbmxvZyhNWV9VUkwpXFxuXFxuLy9sb2coXFxcIuS4i+S4gOmhtSAg77yaXFxcIituZXh0UGFnKVxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUsY29sb3IpIHtcXG4gICAgICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIGNvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG4gICAgICAgICB9XFxuXFxuaWYoTVlfVFlQRSAhPSBcXFwic2VhcmNoXFxcIikge1xcbiAgICAgdmFyIHBhZ2luYXRpb24gPSBwZGZhKGh0bWwsIFxcXCIucGFnaW5hdGlvbiYmbGk6bm90KC5wcmV2LXBhZ2UpOm5vdCgubmV4dC1wYWdlKVxcXCIpO1xcbiAgICB2YXIgY3VycmVudHUgPSBwZGZoKGh0bWwsXFxcImxpbmtbaHJlZmxhbmc9emhdJiZocmVmXFxcIilcXG5cXG4gICAgdmFyIGZpcnN0dSA9IGN1cnJlbnR1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLyxcXFwiXFxcIilcXG4gICAgdmFyIGFjdGl2ZSA9IGN1cnJlbnR1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLykgPyBjdXJyZW50dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pWzFdIDogMTtcXG4gICAgdmFyIGxhc3R1ID0gcGRmaChwYWdpbmF0aW9uLnBvcCgpLFxcXCJhJiZocmVmXFxcIikgfHwgY3VycmVudHVcXG4gICAgdmFyIGxhc3RwID0gbGFzdHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKSA/IGxhc3R1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLylbMV0gOiAxO1xcblxcbnZhciBwYWdpO1xcbiAgICBpZiAoYWN0aXZlPT0xKSB7XFxuICAgICAgIHBhZ2kgPSAwXFxufSBlbHNlIGlmIChhY3RpdmUgPT0gbGFzdHApIHtcXG4gICAgICAgcGFnaSA9IDJcXG59IGVsc2Uge1xcbiAgICAgICBwYWdpID0gMVxcbn1cXG4gICAgdmFyIHRpdGxlID0gW1xcXCLpppZcXFwiLFxcXCLot7PpobU6XFxcIiArIGFjdGl2ZSxcXFwi5bC+6aG1OlxcXCIgKyBsYXN0cF1cXG4gICAgdmFyIHVybHMgPSBbZmlyc3R1LE1ZX1VSTCxsYXN0dV1cXG5pZiAoIGN1cnJlbnR1ICE9PSBcXFwiaHR0cHM6Ly9zdXBqYXYuY29tL3poL1xcXCIgKXtcXG4gICBmb3IgKHZhciBqIGluIHRpdGxlKSB7XFxuXFxuICAgIHZhciB1cmwgPSB1cmxzW2pdICsgJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaikgPT4geyAgICBcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInl1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGopXFxuXFxuICAgIGlmIChqPT0xKSB7XFxuICAgIHVybCA9ICQoJycsJ+mZpOmmlumhteWSjOWwvumhteS5i+WklueahOmhteeggScpLmlucHV0KChsYXN0dSxsYXN0cCk9PntcXG4gICAgICAgIGlmIChwYXJzZUludChpbnB1dCkgPiAxICYmIHBhcnNlSW50KGlucHV0KSA8IHBhcnNlSW50KGxhc3RwKSAmJiBwYXJzZUludChpbnB1dCkgJSAxID09IDApIHtcXG4gICAgICAgICAgICAgICAgdmFyIGp1bXB1ID0gbGFzdHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIisgaW5wdXQpXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwganVtcHUpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG59IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE6aG156CBXFxcIn1cXG4gICAgICAgICAgIH0sbGFzdHUsbGFzdHApICAgICAgICAgICAgICAgICAgXFxuICAgICAgfVxcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGFnaSA9PSBqID8gZ2V0SGVhZCh0aXRsZVtqXSwnI0ZGNjY5OScpIDogdGl0bGVbal0sICAgICAgICAgICBcXG4gICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLCAgICAgICAgICAgICAgICAgXFxuICAgICAgICB9KVxcbn19XFxufVxcblxcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgIHZhciBzb3J0ID0gcGRmYShodG1sLCBcXFwiLnNvcnQmJmFcXFwiKTtcXG4gICBmb3IgKHZhciBqIGluIHNvcnQpIHtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgoc29ydFtqXSwnVGV4dCcpXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcigneXNvcnQnLCAnMCcpID09IGogPyBnZXRIZWFkKHRpdGxlLCcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIHVybDogcGQoc29ydFtqXSwgJ2EmJmhyZWYnKSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3lzb3J0JywgailcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInl1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGopXFxuICAgICAgICB9KVxcbn1cXG59XFxuXFxudmFyIGxpc3QgPSBwZGZhKGh0bWwsIFxcXCIucG9zdHMmJi5wb3N0XFxcIik7XFxubGlzdC5mb3JFYWNoKGl0ZW09PntcXG4gICB2YXIgaW1nID0gcGQoaXRlbSxcXFwiaW1nJiZkYXRhLW9yaWdpbmFsXFxcIik7XFxuICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLFxcXCJhJiZ0aXRsZVxcXCIpLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIixcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsXFxcIvCflKVcXFwiKS5yZXBsYWNlKFxcXCJbNEtdXFxcIixcXFwi8J+WpVxcXCIpLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIixcXFwi8J+HuvCfh7hcXFwiKTtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgZGVzYzogcGRmaChpdGVtLFxcXCIubWV0YS0tLmRhdGUmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICBpbWc6IGltZy5yZXBsYWNlKC8oaHR0cC4qP1xcXFwuKD86anBnfHdlYnB8cG5nfGpwZWcpKS4qLyxcXFwiJDFcXFwiKSxcXG4gICAgICAgICAgICAgICB1cmw6IHBkZmgoaXRlbSxcXFwiYSYmaHJlZlxcXCIpICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiZXJcXFwiKScsXFxuICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgICAgICAgICBleHRyYToge3BhZ2VUaXRsZTp0aXRsZX1cXG4gICAgICAgICB9KVxcbn0pXFxuXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdcIixcInBhdGhcIjpcImVyXCIsXCJydWxlXCI6XCJqczogdmFyIGQgPSBbXVxcbk1ZX1VSTCA9IE1ZX1VSTC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5IyMnLCAnJyk7XFxubG9nKE1ZX1VSTClcXG4vL3ZhciBodG1sID0gZmV0Y2hDb2RlQnlXZWJWaWV3KE1ZX1VSTCk7XFxudmFyIGh0bWwgPSBmZXRjaChNWV9VUkwpXFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eScsIHt9KSlcXG4gICAgLnJ1bGUpO1xcblxcbnZhciB0aXRsZSA9IHBkZmgoaHRtbCwgJy5hcmNoaXZlLXRpdGxlJiZUZXh0JylcXG4gICAgLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIiwgXFxcIvCfh6jwn4ezXFxcIilcXG4gICAgLnJlcGxhY2UoXFxcIltcXFxcdTY1ZTBcXFxcdTc4MDHnoLTop6NdXFxcIiwgXFxcIvCflKVcXFwiKVxcbiAgICAucmVwbGFjZShcXFwiWzRLXVxcXCIsIFxcXCLwn5alXFxcIilcXG4gICAgLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIiwgXFxcIvCfh7rwn4e4XFxcIik7XFxudmFyIOivhuWIq+eggSA9IHRpdGxlLm1hdGNoKC9cXFxcdysoPzotfF8pXFxcXHcrKD86XFxcXHMrXFxcXGQrKT98XFxcXHcrKD8hXFxcXG4pXFxcXHMrXFxcXHcrLylbMF1cXG5pZiAodGl0bGUgIT09IG51bGwpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPSNlNTdhMWE+JyArIHRpdGxlICsgJzwvZm9udD48L3NtYWxsPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIiArICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHRpdGxlKSA9PiB7XFxudGl0bGUgPSB0aXRsZS5yZXBsYWNlKC9GQzJQUFZcXFxcc1xcXFxkKy8sXFxcIlxcXCIpLnJlcGxhY2UoL1xcXFx3Ky1cXFxcZCtcXFxccy8sXFxcIlxcXCIpXFxuLy/liqjmgIHliLfmlrBcXG52YXIgZGVzYyA9IGZpbmRJdGVtKCd0cmFuc2Rlc2MnKS5kZXNjXFxuICAgICAgICAgIGlmKCFkZXNjKXtcXG4gICAgdmFyIHRyYW5zbGF0ZXMgPSAkLnJlcXVpcmUoXFxcInRyYW5zXFxcIikudHJhbnNsYXRlKHRpdGxlKVxcbiAgICAgIHVwZGF0ZUl0ZW0oXFxcInRyYW5zZGVzY1xcXCIse1xcbiAgICAgICAgICBkZXNjOiAn4oCc4oCc4oCd4oCdJyt0cmFuc2xhdGVzLmZvbnRjb2xvcihcXFwicmVkXFxcIiksXFxufSlcXG59ZWxzZXtcXG51cGRhdGVJdGVtKFxcXCJ0cmFuc2Rlc2NcXFwiLHtcXG4gICAgICAgICAgZGVzYzogJycsXFxufSlcXG59ICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiICAgICAgXFxuLyogICAgICAgXFxuICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gJC5yZXF1aXJlKFxcXCJ0cmFuc1xcXCIpLnRyYW5zbGF0ZSh0aXRsZSkgICBcXG4gICAgICAgICAgcmV0dXJuIFxcXCJjb25maXJtOi8vXFxcIiArIHRyYW5zbGF0ZXMgKyBcXFwiLmpzOidoaWtlcjovL2VtcHR5JyBcXFwiICAgKi9cXG4gICAgICAgICAgICAgICAgfSx0aXRsZSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIGlkOiAndHJhbnNkZXNjJyxcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe3RpdGxlOiAn572R6aG1JywganM6ICQudG9TdHJpbmcoKCk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyBNWV9VUkxcXG4gICAgICAgICAgICAgICAgICAgICAgIH0pfSx7dGl0bGU6ICflpI3liLYnLCBqczogJC50b1N0cmluZygodGl0bGUpPT57IFxcbiAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIHRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9LHt0aXRsZTogJ+eZvuW6pue/u+ivkScsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcIng1Oi8vaHR0cHM6Ly9mYW55aS5iYWlkdS5jb20vI2pwL3poL1xcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9LHt0aXRsZTogJ0RlZXBs57+76K+RJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwieDU6Ly9odHRwczovL3d3dy5kZWVwbC5jb20vemgvdHJhbnNsYXRvci1tb2JpbGUjamEvemgvXFxcIiArIHRpdGxlXFxuICAgICAgICAgICAgICAgICAgICAgICB9LHRpdGxlKX0se3RpdGxlOiAn6LC35q2M57+76K+RJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwieDU6Ly9odHRwczovL3RyYW5zbGF0ZS5nb29nbGUuY29tLz9obD16aC1DTiZzbD1qYSZ0bD16aC1DTiZ0ZXh0PVxcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9XVxcbn1cXG4gICAgfSlcXG59XFxuXFxudmFyIGltZyA9IHBkKGh0bWwsIFxcXCIucG9zdC1tZXRhJiZpbWcmJnNyY1xcXCIpO1xcbmlmIChpbWcgIT09IG51bGwpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi25Zu+54mHJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGltZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIGltZ1xcbiAgICAgICAgICAgICAgICB9LCBpbWcpXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aJk+W8gOWbvueJhycsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpbWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbWdcXG4gICAgICAgICAgICAgICAgfSwgaW1nKVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3lm77niYcnLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaW1nKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGltZ1xcbiAgICAgICAgICAgICAgICB9LCBpbWcpXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcImNvbG9yOiBcXFwiPjxzbWFsbD7wnZCS8J2QhPCdkJHwnZCV8J2QhPCdkJEg77ya5bey5bGP6JS9SlBB562J5peg55So57q/6LevPC9zbWFsbD48L3NwYW4+JyxcXG4gICAgdXJsOiDor4bliKvnoIEgKyAkKCcjbm9Mb2FkaW5nIycpXFxuICAgICAgICAubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UveWo/cnVsZT3wnZCJ8J2QmvCdkK/wnZCD8J2QgSZ1cmw9XFxcIiArIGdldFB1YmxpY0l0ZW0oJ2phdmRiMCcsICdodHRwczovL2phdmRiLmNvbScpICsgXFxcIi9zZWFyY2jvvJ/vvJ9mPWFsbO+8hu+8hnBhZ2U9ZnlwYWdl77yG77yGcT1cXFwiICsgaW5wdXRcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIHBhZ2VUaXRsZTog6K+G5Yir56CBXFxuICAgIH1cXG59KTtcXG5cXG4vL+W3sue7j+ino+aekOeahOe6v+i3r1xcbnZhciBQbGF5bGluZWQgPSBbXFxcIlRWXFxcIiwgXFxcIkZTVFxcXCIsIFxcXCJTVFxcXCIsIFxcXCJWT0VcXFwiLCBcXFwiRFNcXFwiLCBcXFwiU3RyZWFtdGFwZVxcXCIsIFxcXCJWVFVcXFwiXVxcblxcbmxldCBidG5zID0gcGRmYShodG1sLCAnLmJ0bnMmJi5idG5zdCcpXFxuaWYgKGJ0bnMubGVuZ3RoID09IDEpIHtcXG4gICAgYnRuc3QgPSBwZGZhKGJ0bnNbMF0sICdib2R5JiZkaXYnKVxcbn0gZWxzZSB7XFxuICAgIGJ0bnN0ID0gcGRmYShidG5zWzFdLCAnYm9keSYmLmNkLXNlcnZlcicpXFxufVxcbmJ0bnN0LmZvckVhY2goKGNkcywgaW5kZXgpID0+IHtcXG4gICAgbGV0IHNlcnZlciA9IHBkZmEoY2RzLCAnYm9keSYmYTpub3QoOm1hdGNoZXMoSlBBfEpTfFNTQnxOU3xNaXhkcm9wfE5pbmphU3RyZWFtfE1EfEdvVW5saW1pdGVkKSknKTsgLy/lsY/olL3nur/ot6/wn4iy8J+IsvCfiLLwn4iy8J+IsvCfiLJcXG4gICAgaWYgKGJ0bnN0Lmxlbmd0aCA+IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgXFxcIkNEXFxcIi5ib2xkKClcXG4gICAgICAgICAgICAgICAgLmZvbnRjb2xvcihcXFwiIzhBMkJFMlxcXCIpICsgKGluZGV4ICsgMSlcXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcXG4gICAgICAgICAgICAgICAgLmJvbGQoKVxcbiAgICAgICAgICAgICAgICAuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIikgKyBcXFwiOlxcXCIuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIiksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNlcnZlci5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xcbiAgICAgICAgdmFyIHRpdGxlID0gcGRmaChsaXN0LCAnVGV4dCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogUGxheWxpbmVkLmluZGV4T2YodGl0bGUpID49IDAgPyAn4oCc4oCc4oCd4oCdJyArICfwn5evJy5mb250Y29sb3IoXFxcIiMyNzc2ODZcXFwiKSArIHRpdGxlLmJvbGQoKVxcbiAgICAgICAgICAgICAgICAuZm9udGNvbG9yKFxcXCIjMjc3Njg2XFxcIikgKyAn8J+XrycuZm9udGNvbG9yKFxcXCIjMjc3Njg2XFxcIikgOiAn8J+Xr+KAnOKAnOKAneKAnScgKyB0aXRsZS5ib2xkKCkgKyAn8J+XrycsXFxuICAgICAgICAgICAgdXJsOiBwZGZoKGxpc3QsICdhJiZkYXRhLWxpbmsnKSArIGxhenksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSlcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcblxcbmxldCBpbmZvID0gcGRmYShodG1sLCAnLnBvc3QtbWV0YSYmLmNhdHMmJmEnKTtcXG5pbmZvLmZvckVhY2goKGxpc3QsIGluZGV4KSA9PiB7XFxuICAgIHZhciB0aXRsZSA9IHBkZmgobGlzdCwgJ1RleHQnKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmRleCA9PSAxID8gJ+KAmOKAmE1ha2VyOuKAmeKAmScgKyB0aXRsZSA6IChpbmRleCA+IDEgPyAn4oCY4oCYQ2FzdDrigJnigJknICsgdGl0bGUgOiB0aXRsZSksXFxuICAgICAgICB1cmw6IHBkKGxpc3QsICdhJiZocmVmJykgKyAnIyNmeXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlpXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgaWYgKGluZGV4ID09IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG59KVxcbmxldCB0YWdzID0gcGRmYShodG1sLCAnLnBvc3QtbWV0YSYmLnRhZ3MmJmEnKTtcXG50YWdzLmZvckVhY2goKGxpc3QsIGluZGV4KSA9PiB7XFxuICAgIHZhciB0aXRsZSA9IHBkZmgobGlzdCwgJ1RleHQnKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCcJyArIHRpdGxlICsgJ+KAneKAnScsXFxuICAgICAgICB1cmw6IHBkKGxpc3QsICdhJiZocmVmJykgKyAnIyNmeXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlpXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGVcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufSlcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGRkZGRjtcXFwiPvCdkJjwnZCo8J2QriDwnZCM8J2QmvCdkLIg8J2QgPCdkKXwnZCs8J2QqCDwnZCL8J2QovCdkKTwnZCePC9zcGFuPicsXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbn0pO1xcblxcbnZhciBsaXN0ID0gcGRmYShodG1sLCBcXFwiLnBvc3RzJiYucG9zdFxcXCIpO1xcbmxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgdmFyIGltZyA9IHBkKGl0ZW0sIFxcXCJpbWcmJmRhdGEtb3JpZ2luYWxcXFwiKTtcXG4gICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLCBcXFwiYSYmdGl0bGVcXFwiKVxcbiAgICAgICAgLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIiwgXFxcIvCfh6jwn4ezXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJbNEtdXFxcIiwgXFxcIvCflqVcXFwiKVxcbiAgICAgICAgLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIiwgXFxcIvCfh7rwn4e4XFxcIik7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sIFxcXCIubWV0YS0tLmRhdGUmJlRleHRcXFwiKSxcXG4gICAgICAgIGltZzogaW1nLnJlcGxhY2UoLyhodHRwLio/XFxcXC4oPzpqcGd8d2VicHxwbmd8anBlZykpLiovLCBcXFwiJDFcXFwiKSxcXG4gICAgICAgIHVybDogcGRmaChpdGVtLCBcXFwiYSYmaHJlZlxcXCIpICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiZXJcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArIFxcXCLmiJHmmK/mnInlupXnur/nmoRcXFwiLmZvbnRjb2xvcihcXFwiZ3JleVxcXCIpXFxuICAgICAgICAgICAgICAgIC5zbWFsbCgpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop6PmnpBcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAvL0pQQeetiee6v+i3r+aMguS6huW3suWxj+iUve+8jOmcgOimgeWPr+WOu+S6jOe6p+aBouWkjVxcbiAgICAvL1RW57q/6LevLy9GU1Tnur/ot68vL1ZPRee6v+i3ry8vU1Tnur/ot68vL0RT57q/6LevLy9WVFXnur/ot69cXG4gICAgLy8g5a6a5LmJ5LiA5Liq6Kej5p6Q5YiG6L6o546H55qE5Ye95pWwXFxuICAgIGZ1bmN0aW9uIGdldFJlc29sdXRpb24obmFtZSkge1xcbiAgICAgICAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaCgvKFxcXFxkKykvKTsgLy8g5o+Q5Y+W6ZmN57qn5YiG6L6o546HXFxuICAgICAgICByZXR1cm4gbWF0Y2ggPyBwYXJzZUludChtYXRjaFsxXSwgMTApIDogMDsgLy8g5aaC5p6c5rKh5pyJ5Yy56YWN5YiZ6L+U5ZueMFxcbiAgICB9XFxuICAgIHZhciBpZCA9IGlucHV0LnNwbGl0KCcnKS5yZXZlcnNlKCkuam9pbignJyk7XFxuICAgIHZhciB1cmwgPSBgaHR0cHM6Ly9sazEuc3VwcmVtZWphdi5jb20vc3VwamF2LnBocD9jPSR7aWR9YDtcXG4gICAgdmFyIHJlZmVyZXIgPSBgaHR0cHM6Ly9sazEuc3VwcmVtZWphdi5jb20vc3VwamF2LnBocD9sPSR7aW5wdXR9YDtcXG4gICAgdmFyIGxvY2F0aW9uID0gSlNPTi5wYXJzZShmZXRjaCh1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IHJlZmVyZXIsXFxuICAgICAgICB9LFxcbiAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgfSkpLnVybC5yZXBsYWNlKC8jLiovLCBcXFwiXFxcIilcXG4gICAgbG9nKGxvY2F0aW9uKVxcblxcbiAgICBpZiAobG9jYXRpb24uaW5jbHVkZXMoXFxcImVtdHVyYm92aWRcXFwiKSkge1xcblxcbiAgICAgICAgLy/ikaBUVue6v+i3r1xcbiAgICAgICAgdmFyIGRvbWFpbiA9IGdldEhvbWUobG9jYXRpb24pXFxuICAgICAgICB2YXIgcGF0aCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciBwbGF5VXJsID0gcGF0aC5tYXRjaCgvaHR0cHM/Lio/XFxcXC5tM3U4LylbMF07XFxuICAgICAgICB2YXIgZ3JvdXBfcXVhbGl0eSA9IGZldGNoKHBsYXlVcmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogbG9jYXRpb25cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIC8vIGxvZyhncm91cF9xdWFsaXR5KVxcbiAgICAgICAgaGdoZXN0X3F1YWxpdHkgPSBncm91cF9xdWFsaXR5Lm1hdGNoKC9eW14jXFxcXHNdKyQvZ20pLm1hcCh2ID0+IHYuaW5jbHVkZXMoXFxcImh0dHBcXFwiKSA/IHYgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiIDogcGxheVVybC5yZXBsYWNlKC9bXlxcXFwvXSskLywgdikpXFxuICAgICAgICAvL2xvZyhoZ2hlc3RfcXVhbGl0eSlcXG4gICAgICAgIG5hbWVfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkubWF0Y2goL1JFU09MVVRJT049Lio/XFxcXCwvZ20pLm1hcChuID0+IG4ucmVwbGFjZSgvUkVTT0xVVElPTj18XFxcXCwvZywgXFxcIlxcXCIpKVxcblxcbiAgICAgICAgLy8g5oyJ5YiG6L6o546H6ZmN5bqP5o6S5bqPIOWIhui+qOeOhyDmlbDnu4TvvIzlubblkIzml7bosIPmlbQgaGdoZXN0X3F1YWxpdHlcXG4gICAgICAgIHZhciBzb3J0ZWREYXRhID0gbmFtZV9xdWFsaXR5Lm1hcCgobmFtZSwgaW5kZXgpID0+ICh7XFxuICAgICAgICAgICAgICAgIG5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogaGdoZXN0X3F1YWxpdHlbaW5kZXhdXFxuICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGdldFJlc29sdXRpb24oYi5uYW1lKSAtIGdldFJlc29sdXRpb24oYS5uYW1lKSk7XFxuICAgICAgICAvLyDliIblvIDmjpLluo/lkI7nmoQgbmFtZXMg5ZKMIHVybHMg5pWw57uEXFxuICAgICAgICB2YXIgc29ydGVkTmFtZXMgPSBzb3J0ZWREYXRhLm1hcChpdGVtID0+IGl0ZW0ubmFtZSk7XFxuICAgICAgICB2YXIgc29ydGVkVXJscyA9IHNvcnRlZERhdGEubWFwKGl0ZW0gPT4gaXRlbS51cmwpO1xcbiAgICAgICAgbGV0IHBsYXlsaXN0ID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIG5hbWVzOiBzb3J0ZWROYW1lcyxcXG4gICAgICAgICAgICB1cmxzOiBzb3J0ZWRVcmxzLFxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBBcnJheShoZ2hlc3RfcXVhbGl0eS5sZW5ndGgpLmZpbGwoe1xcbiAgICAgICAgICAgICAgICBSZWZlcmVyOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBwbGF5bGlzdDtcXG5cXG4gICAgfSBlbHNlIGlmICgvY2luZHlleWVmaW5hbHxmYzJzdHJlYW18bWljaGFlbGFwcGx5c29tZS8udGVzdChsb2NhdGlvbikpIHtcXG5cXG4gICAgICAgIC8v4pGhRlNU57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciBzY3JpcHQgPSBwZGZoKGh0bWwsIFxcXCJib2R5PnNjcmlwdCYmSHRtbFxcXCIpLnJlcGxhY2UoXFxcImV2YWxcXFwiLCBcXFwiXFxcIilcXG4gICAgICAgIHZhciB1YXMgPSBldmFsKHNjcmlwdClcXG4gICAgICAgIHZhciBwbGF5VXJsID0gdWFzLm1hdGNoKC9cXFwiKGh0dHBzPy4qbTN1OC4qPylcXFwiLylbMV1cXG4gICAgICAgIHZhciBncm91cF9xdWFsaXR5ID0gZmV0Y2gocGxheVVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBsb2NhdGlvblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgZ3JvdXBfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkuc3BsaXQoXFxcIlxcXFxuXFxcXG5cXFwiKVswXVxcbiAgICAgICAgLy8gbG9nKGdyb3VwX3F1YWxpdHkpXFxuICAgICAgICBoZ2hlc3RfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkubWF0Y2goL15bXiNcXFxcc10rJC9nbSkubWFwKHYgPT4gdi5pbmNsdWRlcyhcXFwiaHR0cFxcXCIpID8gdiArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCIgOiBwbGF5VXJsLnJlcGxhY2UoL1teXFxcXC9dKyQvLCB2KSlcXG4gICAgICAgIC8vbG9nKGhnaGVzdF9xdWFsaXR5KVxcbiAgICAgICAgbmFtZV9xdWFsaXR5ID0gZ3JvdXBfcXVhbGl0eS5tYXRjaCgvUkVTT0xVVElPTj0uKj9cXFxcLC9nbSkubWFwKG4gPT4gbi5yZXBsYWNlKC9SRVNPTFVUSU9OPXxcXFxcLC9nLCBcXFwiXFxcIikpXFxuXFxuICAgICAgICAvLyDmjInliIbovqjnjofpmY3luo/mjpLluo8g5YiG6L6o546HIOaVsOe7hO+8jOW5tuWQjOaXtuiwg+aVtCBoZ2hlc3RfcXVhbGl0eVxcbiAgICAgICAgdmFyIHNvcnRlZERhdGEgPSBuYW1lX3F1YWxpdHkubWFwKChuYW1lLCBpbmRleCkgPT4gKHtcXG4gICAgICAgICAgICAgICAgbmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBoZ2hlc3RfcXVhbGl0eVtpbmRleF1cXG4gICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gZ2V0UmVzb2x1dGlvbihiLm5hbWUpIC0gZ2V0UmVzb2x1dGlvbihhLm5hbWUpKTtcXG4gICAgICAgIC8vIOWIhuW8gOaOkuW6j+WQjueahCBuYW1lcyDlkowgdXJscyDmlbDnu4RcXG4gICAgICAgIHZhciBzb3J0ZWROYW1lcyA9IHNvcnRlZERhdGEubWFwKGl0ZW0gPT4gaXRlbS5uYW1lKTtcXG4gICAgICAgIHZhciBzb3J0ZWRVcmxzID0gc29ydGVkRGF0YS5tYXAoaXRlbSA9PiBpdGVtLnVybCk7XFxuICAgICAgICBsZXQgcGxheWxpc3QgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgbmFtZXM6IHNvcnRlZE5hbWVzLFxcbiAgICAgICAgICAgIHVybHM6IHNvcnRlZFVybHMsXFxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEFycmF5KGhnaGVzdF9xdWFsaXR5Lmxlbmd0aCkuZmlsbCh7XFxuICAgICAgICAgICAgICAgIFJlZmVyZXI6IFxcXCJcXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIHBsYXlsaXN0O1xcblxcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJzdHJlYW10YXBlXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGiU1Tnur/ot69cXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmZXJlclxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICB2YXIgcGF0dGVybiA9IGh0bWwubWF0Y2goL1xcXFwoJyMoLiopJ1xcXFwpLylbMV1cXG4gICAgICAgIHZhciBzcmMgPSBcXFwidmFyIHNyY2xpbmsgPSBcXFwiICsgaHRtbC5tYXRjaChuZXcgUmVnRXhwKFxcXCInXFxcIiArIHBhdHRlcm4gKyBcXFwiLio/PShbXjtdKylcXFwiKSlbMV1cXG4gICAgICAgIGV2YWwoc3JjKVxcbiAgICAgICAgdmFyIGxpbmsgPSBcXFwiaHR0cHM6XFxcIiArIHNyY2xpbmsgKyBcXFwiJnN0cmVhbT0xXFxcIlxcbiAgICAgICAgdmFyIHBsYXlVcmwgPSBKU09OLnBhcnNlKGZldGNoKGxpbmssIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogbG9jYXRpb24sXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZVxcbiAgICAgICAgfSkpLnVybFxcbiAgICAgICAgcmV0dXJuIHBsYXlVcmwgKyBcXFwiO3tSZWZlcmVyQFxcXCIgKyBsb2NhdGlvbiArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKC92b2UvLnRlc3QobG9jYXRpb24pKSB7XFxuXFxuICAgICAgICAvL+KRpVZPRee6v+i3r1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgY3VycmVudFVybCA9IGh0bWwubWF0Y2goL2h0dHBzP1teJ10rLylbMF07XFxuICAgICAgICB2YXIgc291cmNlcyA9IGZldGNoKGN1cnJlbnRVcmwpLm1hdGNoKC92YXIgc291cmNlc1teXFxcXDtdKy8pWzBdICAgXFxuICAgICAgICBldmFsKHNvdXJjZXMpICAgXFxuICAgICAgICB2YXIgcGxheVVybCA9IGJhc2U2NERlY29kZShzb3VyY2VzLmhscykgXFxuICAgICAgICByZXR1cm4gcGxheVVybCArIFxcXCI7e1JlZmVyZXJAXFxcIiArIGxvY2F0aW9uICsgXFxcIn1cXFwiXFxuXFxuICAgIH0gZWxzZSBpZiAoL2QwMDAwZHxkb29kfGRzMnBsYXkvLnRlc3QobG9jYXRpb24pKSB7XFxuXFxuICAgICAgICAvL+KRo0RT57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIHBhc3NfbWQ1ID0gZ2V0SG9tZShsb2NhdGlvbikgKyBodG1sLm1hdGNoKC9cXFxcL3Bhc3NfbWQ1W15cXFwiJ10rLylbMF1cXG4gICAgICAgIHZhciB0b2tlbiA9IGh0bWwubWF0Y2goL2Nvb2tpZUluZGV4Lio/XFxcXCcoLio/KVxcXFwnLylbMV1cXG4gICAgICAgIHZhciBkYXRhID0gZmV0Y2gocGFzc19tZDUsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogbG9jYXRpb25cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcblxcbiAgICAgICAgZnVuY3Rpb24gbWFrZVBsYXkodG9rZW4pIHtcXG4gICAgICAgICAgICBmb3IgKHZhciBhID0gXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB0ID0gXFxcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIG4gPSB0Lmxlbmd0aCxcXG4gICAgICAgICAgICAgICAgICAgIG8gPSAwOyAxMCA+IG87IG8rKylcXG4gICAgICAgICAgICAgICAgYSArPSB0LmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuKSk7XFxuICAgICAgICAgICAgcmV0dXJuIGEgKyBcXFwiP3Rva2VuPVxcXCIgKyB0b2tlbiArIFxcXCImZXhwaXJ5PVxcXCIgKyBEYXRlLm5vdygpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHZhciBwbGF5VXJsID0gZGF0YSArIG1ha2VQbGF5KHRva2VuKVxcbiAgICAgICAgcmV0dXJuIHBsYXlVcmwgKyBcXFwiI2lzVmlkZW89dHJ1ZSM7e1JlZmVyZXJAXFxcIiArIGxvY2F0aW9uICsgXFxcIn1cXFwiXFxuXFxuICAgIH0gZWxzZSBpZiAobG9jYXRpb24uaW5jbHVkZXMoXFxcInZ0YmUudG9cXFwiKSkge1xcblxcbiAgICAgICAgLy/ikaRWVFXnur/ot69cXG4gICAgICAgIGZ1bmN0aW9uIGV2YWxkZWNvZGUodGV4dCkge1xcbiAgICAgICAgICAgIHZhciBjb2RlID0gJyc7XFxuICAgICAgICAgICAgdmFyIHMgPSB0ZXh0LnJlcGxhY2UoL15ldmFsLywgJycpXFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdyZXR1cm4gcCcsICdjb2RlKz1wJylcXG4gICAgICAgICAgICBldmFsKHMpO1xcbiAgICAgICAgICAgIHJldHVybiBjb2RlO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgdmFyIGhvc3RSZWdleCA9ICh1cmwpID0+IHtcXG4gICAgICAgICAgICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2goL14oPzpodHRwcz86XFxcXC9cXFxcLyk/KD86d3d3XFxcXC4pPyhbYS16QS1aMC05LV17MSw2M31cXFxcLikrW2EtekEtWl17Miw2fS9pKTtcXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFswXSA6IHVybDtcXG4gICAgICAgIH07XFxuXFxuICAgICAgICBsZXQgaG9zdCA9IGhvc3RSZWdleChyZWZlcmVyKVxcblxcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgUmVmZXJlcjogaG9zdCxcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIGlmcmFtZSA9IHBkZmEoaHRtbCwgXFxcImlmcmFtZVxcXCIpO1xcblxcbiAgICAgICAgaWYgKGlmcmFtZS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgaHRtbCA9IGZldGNoKHBkZmgoaWZyYW1lWzBdLCBcXFwiaWZyYW1lJiZzcmNcXFwiKSwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBSZWZlcmVyOiBob3N0LFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHZhciBzY3JpcHRzID0gcGRmYShodG1sLCBcXFwiYm9keSYmc2NyaXB0XFxcIik7XFxuICAgICAgICBsZXQgc2NyaXB0ID0gc2NyaXB0cy5maWx0ZXIoeCA9PiB4LmluY2x1ZGVzKCdldmFsJykpLm1hcChtID0+IHBkZmgobSwgXFxcInNjcmlwdCYmSHRtbFxcXCIpKVswXTtcXG4gICAgICAgIGlmIChzY3JpcHQgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aXoOaVsOaNridcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGxldCBtM3U4ID0gL2ZpbGU6XFxcIiguKj8pXFxcIi9nLmV4ZWMoZXZhbGRlY29kZShzY3JpcHQpKVsxXTtcXG4gICAgICAgIHJldHVybiBtM3U4O1xcblxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgbG9nKFxcXCLpnanlkb3lsJrmnKrmiJDlip8s5ZCM5b+X5LuN6ZyA5Yqq5YqbIVxcXCIpXFxuICAgICAgICByZXR1cm4gXFxcImNvbmZpcm06Ly/lkrMs5pys57q/6Lev6L+Z5Liq5Zyw5Z2A5bm25rKh5pyJ6Kej5p6Q77yM5pel5b+X5bey5omT5Y2w5Ye677yM5pWs6K+35p+l55yLLmpzOidoaWtlcjovL2VtcHR5JyBcXFwiXFxuICAgIH1cXG59KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi57+76K+RXCIsXCJwYXRoXCI6XCJ0cmFuc1wiLFwicnVsZVwiOlwiICAgIC8v57+76K+RXFxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZSh0ZXh0KSB7XFxuICAgICAgICB2YXIgc3dpdGNodHJhbnMgPSBnZXRJdGVtKCdzd2l0Y2h0cmFucycsICflvankupHlsI/or5EnKTtcXG4gICAgICAgIGlmICggc3dpdGNodHJhbnMgPT0gdHJ1ZSB8fCBzd2l0Y2h0cmFucyA9PSBcXFwi5b2p5LqR5bCP6K+RXFxcIikge1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIHZhciB0byA9ICd6aCdcXG4gICAgICAgICAgICAgICAgdmFyIGZyb20gPSAnYXV0bydcXG5cXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5pdF9kYXRhKHNvdXJjZV9sYW5nLCB0YXJnZXRfbGFuZykge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvc190eXBlOiAnaW9zJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfaWQ6ICdGMUY5MDJGNy0xNzgwLTRDODgtODQ4RC03MUYzNUQ4OEE2MDInLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zX3R5cGU6IHNvdXJjZV9sYW5nICsgJzInICsgdGFyZ2V0X2xhbmcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWE6ICd0ZXh0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2lkOiA0MjQyMzgzMzUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogJycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGljdDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBnZXRSYW5kb21OdW1iZXIoKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByYW5kID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5OTkpICsgMTAwMDAwXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmFuZCAqIDEwMDBcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBjb25zdCBwb3N0X2RhdGEgPSBpbml0X2RhdGEoZnJvbSwgdG8pXFxuICAgICAgICAgICAgICAgIHBvc3RfZGF0YS5zb3VyY2UgPSB0ZXh0XFxuICAgICAgICAgICAgICAgIHBvc3RfZGF0YS5yZXF1ZXN0X2lkID0gZ2V0UmFuZG9tTnVtYmVyKClcXG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IGZldGNoKCdodHRwczovL2ludGVycHJldGVyLmN5YXBpLmNuL3YxL3RyYW5zbGF0b3InLCB7XFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3gtYXV0aG9yaXphdGlvbic6ICd0b2tlbiBzc2RqMjcza3NkaXdpOTIzYnNkOScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXItYWdlbnQnOiAnY2FpeXVuSW50ZXJwcmV0ZXIvNSBDRk5ldHdvcmsvMTQwNC4wLjUgRGFyd2luLzIyLjMuMCcsXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogcG9zdF9kYXRhLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXMpXFxuICAgICAgICAgICAgICAgICAgICAudGFyZ2V0XFxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBcXFwi44CQ4piB77iP44CRXFxcIlxcbiAgICAgICAgICAgIH0gY2F0Y2gge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIue/u+ivkeWksei0pe+8jOS9v+eUqOWOn+aWh1xcXCIpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSBpZiAoc3dpdGNodHJhbnMgPT0gXFxcIuWwj+eJm+e/u+ivkVxcXCIpIHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vYXBpLm5pdXRyYW5zLmNvbS9OaXVUcmFuc1NlcnZlci90cmFuc2xhdGlvblxcXCI7XFxuICAgICAgICAgICAgICAgIHZhciBhcGkgPSBnZXRJdGVtKCdhcGknKTtcXG4gICAgICAgICAgICAgICAgaWYgKGFwaSkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRleHQgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZyA9IFxcXCJodHRwczovL3Rlc3Qubml1dHJhbnMuY29tL05pdVRyYW5zU2VydmVyL2xhbmd1YWdlP3NyY190ZXh0PVxcXCIgKyB0ZXh0ICsgXFxcIiZzb3VyY2U9dGV4dFxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZyb20gPSBKU09OLnBhcnNlKGZldGNoKGxhbmcsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMDBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5sYW5ndWFnZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcG9zdCh1cmwsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3RleHQ6IHRleHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IFxcXCJ6aFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlrZXk6IGFwaSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTIyM1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShyZXN1bHQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEudGd0X3RleHQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEudGd0X3RleHQgKyBcXFwi44CQ8J+QruOAkVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIue/u+ivkeWksei0pe+8jOS9v+eUqOWOn+aWh1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLnv7vor5HlpLHotKXvvIzljp/mlofkuLrnqbpcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIumihOWkhOeQhuivt+Whq+WGmee/u+ivkWFwaVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaCB7XFxuICAgICAgICAgICAgICAgIGxvZyhcXFwi57+76K+R5aSx6LSl77yM5L2/55So5Y6f5paHXFxcIik7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgfVxcbiAgICB9O1xcblxcbiAgICAkLmV4cG9ydHMudHJhbnNsYXRlID0gdHJhbnNsYXRlXCJ9XSIsImljb24iOiJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvenJ3SzQud2VicCIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment