xiaomianao666

小程序:网盘合集

May 29th, 2024
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@网盘合集@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi572R55uY5ZCI6ZuGIiwiYXV0aG9yIjoiIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSIsInZlcnNpb24iOjYsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBkID0gW107XG5pZiAoZ2V0SXRlbShcImZcIiwgXCIwXCIpID09IFwiMFwiKSB7XG4gICAgZC5wdXNoKCQucmVxdWlyZShcImhpa2VyOi8vcGFnZS9hYm91dDJcIikpO1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIuehruWumlwiLFxuICAgICAgICB1cmw6ICQoXCIjbm9Mb2FkaW5nI1wiKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICBzZXRJdGVtKFwiZlwiLCBcIjFcIik7XG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9lbXB0eVwiO1xuICAgICAgICB9KSxcbiAgICAgICAgY29sX3R5cGU6IFwidGV4dF9jZW50ZXJfMVwiLFxuICAgICAgICBkZXNjOiBcIlwiLFxuICAgICAgICBwaWNfdXJsOiBcIlwiXG4gICAgfSk7XG59IGVsc2Uge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cIiNGRkI2QzFcIj7lhbPkuo48L2Zyb250Pjwvc3Ryb25nPicsXG4gICAgICAgIHVybDogXCJoaWtlcjovL3BhZ2UvYWJvdXRcIixcbiAgICAgICAgY29sX3R5cGU6IFwidGV4dF9jZW50ZXJfMVwiXG4gICAgfSlcbiAgICBsZXQgcGFucyA9IFt7XG4gICAgICAgIG5hbWU6IFwiMTIzcGFuXCIsXG4gICAgICAgIHBpYzogXCJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9ydWxlcy9sb2dvbG9naW4uNjkyOTg1MzFfZWRpdF81OTQ0MjAwNDQ3NTMwLnBuZ1wiXG4gICAgfSwge1xuICAgICAgICBuYW1lOiBcIuWkuOWFi+e9keebmFwiLFxuICAgICAgICBwaWM6IFwiaHR0cDovL2FsaXN0LmpvZWd1LnRrL2QvcnVsZXMvJUU1JUE0JUI4JUU1JTg1JThCXzUuOC42LjIyMy5wbmdcIlxuICAgIH0sIHtcbiAgICAgICAgbmFtZTogXCLlpKnnv7zkupHnm5hcIixcbiAgICAgICAgcGljOiBcImh0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjAvMDcvMjgvOC8xMTBfMmYzNTllNWE0OWU2OWQ4YWVhMDc0MjEyMTk4YjkzODNfY29uLnBuZ1wiXG4gICAgfSwge1xuICAgICAgICBuYW1lOiBcIlBpa3Bha1wiLFxuICAgICAgICBwaWM6IFwiaHR0cDovL2FsaXN0LmpvZWd1LnRrL2QvcnVsZXMvUGlrUGFrXzEuMjIuNS5wbmdcIlxuICAgIH1dO1xuICAgIGlmIChnZXRJdGVtKFwiZGV2XCIsIFwiMFwiKSA9PSBcIjFcIikge1xuICAgICAgICBwYW5zLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogXCLnmb7luqbnvZHnm5hcIixcbiAgICAgICAgICAgIHBpYzogXCJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9ydWxlcy8lRTclOTklQkUlRTUlQkElQTYlRTclQkQlOTElRTclOUIlOThfMTEuMzAuMi5wbmdcIlxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcGFucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcImljb25fMl9yb3VuZFwiLFxuICAgICAgICAgICAgaW1nOiBpdGVtLnBpYyxcbiAgICAgICAgICAgIHVybDogXCJoaWtlcjovL3BhZ2UvXCIgKyBpdGVtLm5hbWUgKyAoaXRlbS5uYW1lID09IFwi5aS45YWL572R55uYXCIgPyBcIj9wYWdlPWZ5cGFnZVwiOiBcIlwiKSxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgLy9uZXdXaW5kb3c6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KVxufVxuc2V0UmVzdWx0KGQpOyIsInNlYXJjaF91cmwiOiIiLCJncm91cCI6IuinhumikSIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIkLmV4dGVuZCh7XG4gICAgYXVkaW86IFtcIm1wM1wiLCBcImZsYWNcIiwgXCJvZ2dcIiwgXCJtNGFcIiwgXCJ3YXZcIiwgXCJvcHVzXCJdLFxuICAgIG1vdmllOiBbXCJtcDRcIiwgXCJta3ZcIiwgXCJhdmlcIiwgXCJtb3ZcIiwgXCJybXZiXCIsIFwid2VibVwiLCBcImZsdlwiLCBcIm00dlwiLCBcIm0zdThcIiwgXCJ0c1wiXSxcbiAgICBpbWc6IFtcImpwZ1wiLCBcInBuZ1wiLCBcImpwZWdcIiwgXCJnaWZcIiwgXCJzdmdcIiwgXCJyYXdcIl1cbn0pIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIjEyM3BhblwiLFwicGF0aFwiOlwiMTIzcGFuXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnRyeSB7XFxuICAgIGNvbnN0IHtcXG4gICAgICAgIGZpbGVMaXN0LFxcbiAgICAgICAgZ2V0SWNvblxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY29kZVxcXCIpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKame+4j+iuvue9rlxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uvc2V0dGluZ3NcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICB9KVxcbiAgICBpZiAoZ2V0SXRlbShcXFwidG9rZW5cXFwiLCBcXFwiXFxcIikgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHZhciBwYXRocyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJwYXRoczEyM1xcXCIsIFt7XFxuICAgICAgICAgICAgbmFtZTogXFxcIuagueebruW9lVxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCIwXFxcIlxcbiAgICAgICAgfV0pXFxuICAgICAgICBpZiAocGF0aHMubGVuZ3RoID4gMSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiPFxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChwYXRocykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcGF0aHMucG9wKClcXG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJwYXRoczEyM1xcXCIsIHBhdGhzKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICB9LCBwYXRocylcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICAgICAgcGF0aHMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaXRlbSwgcGF0aHMsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiaWRcXFwiLCBpdGVtLmlkKVxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcInBhdGhzMTIzXFxcIiwgcGF0aHMuc2xpY2UoMCwgaW5kZXggKyAxKSlcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgfSwgaXRlbSwgcGF0aHMsIGluZGV4KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgZmlsZUxpc3QocGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0uaWQpLmRhdGEuSW5mb0xpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICB2YXIgaW1nID0gZ2V0SWNvbihpdGVtKVxcbiAgICAgICAgICAgIGlmIChpdGVtLlR5cGUgPT0gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gJCgpLmxhenlSdWxlKChpZCwgbmFtZSwgcGF0aHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHBhdGhzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcInBhdGhzMTIzXFxcIiwgcGF0aHMpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uRmlsZUlkLCBpdGVtLkZpbGVOYW1lLCBwYXRocylcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlbS5Eb3dubG9hZFVybFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5GaWxlTmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmnKrnmbvlvZVcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxufSBjYXRjaCAoZSkge1xcbiAgICBsb2coZS5tZXNzYWdlKVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJjb2RlXCIsXCJwYXRoXCI6XCJjb2RlXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMuZmlsZUxpc3QgPSBmdW5jdGlvbihpZCkge1xcbiAgICBsZXQgbGlzdCA9IHJlcXVlc3QoYnVpbGRVcmwoXFxcImh0dHBzOi8vd3d3LjEyM3Bhbi5jb20vYXBpL2ZpbGUvbGlzdC9uZXdcXFwiLCB7XFxuICAgICAgICBcXFwiZHJpdmVJZFxcXCI6IDAsXFxuICAgICAgICBcXFwibGltaXRcXFwiOiAxMDAsXFxuICAgICAgICBcXFwib3JkZXJCeVxcXCI6IFxcXCJmaWxlSWRcXFwiLFxcbiAgICAgICAgXFxcIk9yZGVyRGlyZWN0aW9uXFxcIjogXFxcImFzY1xcXCIsXFxuICAgICAgICBcXFwiUGFyZW50RmlsZUlkXFxcIjogaWQsXFxuICAgICAgICBcXFwidHJhc2hlZFxcXCI6IGZhbHNlXFxuICAgIH0pLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIkF1dGhvcml6YXRpb25cXFwiOiBcXFwiQmVhcmVyIFxcXCIgKyBnZXRJdGVtKFxcXCJ0b2tlblxcXCIpXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKGxpc3QpXFxufVxcbiQuZXhwb3J0cy5nZXRJY29uID0gZnVuY3Rpb24oY29udGVudCkge1xcbiAgICBsZXQge1xcbiAgICAgICAgZ2V0SHptXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jb2RlXFxcIilcXG4gICAgbGV0IHJvb3QgPSBcXFwiaHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8zMjM5NDM1MS9kci8tL3Jhdy9tYXN0ZXIvaW1nL+aWh+S7tuexu+WeizIvXFxcIjtcXG4gICAgaWYgKGNvbnRlbnQuVHlwZSA9PSAxKSB7XFxuICAgICAgICBpbWcgPSByb290ICsgXFxcIuaWh+S7tuWkuS5zdmdcXFwiXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBsZXQgZmlsZXMgPSAnYWl8YXBrfGF2aXxjc3N8ZG1nfGV4ZXxmbHZ8Z2lmfGhpa2VyfGh0bWx8aXNvfGpwZ3xqc3xqc29ufGxvZ3xtb3Z8bXAzfG1wNHxvdGZ8cGhwfHBuZ3xwcHR8cHNkfHRhYmxlfHR4dHx3YXZ8eGxzfHppcHxjc3N8ZG9jfGVwdWJ8ZXhjfGh0bXx4bHN4Jy5zcGxpdCgnfCcpO1xcbiAgICAgICAgbGV0IGZpbGVOYW1lID0gY29udGVudC5GaWxlTmFtZVxcbiAgICAgICAgbGV0IGh6bSA9IGdldEh6bShmaWxlTmFtZSlcXG4gICAgICAgIGlmIChmaWxlcy5pbmNsdWRlcyhoem0pKSB7XFxuICAgICAgICAgICAgaW1nID0gcm9vdCArIGh6bSArICcuc3ZnJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaW1nID0gcm9vdCArIFxcXCLmlofku7Yuc3ZnXFxcIlxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBpbWdcXG59XFxuJC5leHBvcnRzLmdldEh6bSA9IGZ1bmN0aW9uKGZpbGVOYW1lKSB7XFxuICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGFzdEluZGV4T2YoXFxcIi5cXFwiKSArIDEpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwidGV4dF8yXCIsXCJuYW1lXCI6XCJzZXR0aW5nc1wiLFwicGF0aFwiOlwic2V0dGluZ3NcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLotKblj7co5omL5py65Y+3KVxcXCIsXFxuICAgIHVybDogJChnZXRJdGVtKFxcXCJ1c2VybmFtZVxcXCIsIFxcXCJcXFwiKSkuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgc2V0SXRlbShcXFwidXNlcm5hbWVcXFwiLCBpbnB1dClcXG4gICAgfSlcXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5a+G56CBXFxcIixcXG4gICAgdXJsOiAkKGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIsIFxcXCJcXFwiKSkuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgc2V0SXRlbShcXFwicGFzc3dkXFxcIiwgaW5wdXQpXFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIueZu+mZhlxcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGxldCByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vd3d3LjEyM3Bhbi5jb20vYXBpL3VzZXIvc2lnbl9pblxcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIFxcXCJwYXNzcG9ydFxcXCI6IGdldEl0ZW0oXFxcInVzZXJuYW1lXFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgICAgICAgICBcXFwicGFzc3dvcmRcXFwiOiBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiLCBcXFwiXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSlcXG4gICAgICAgIGlmIChyZXMubWVzc2FnZSA9PSBcXFwic3VjY2Vzc1xcXCIpIHtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJ0b2tlblxcXCIsIHJlcy5kYXRhLnRva2VuKVxcbiAgICAgICAgICAgIGJhY2soKVxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvpmYbmiJDlip9cXFwiXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFwiICsgcmVzLm1lc3NhZ2VcXG4gICAgICAgIH1cXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG59KVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55m+5bqm572R55uYXCIsXCJwYXRoXCI6XCLnmb7luqbnvZHnm5hcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLorr7nva5cXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvbG9naW4xXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxufSlcXG5pZiAoZ2V0SXRlbShcXFwiYWNjZXNzX3Rva2VuXFxcIiwgXFxcIlxcXCIpICE9IFxcXCJcXFwiKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICBjb25zdCB7XFxuICAgICAgICAgICAgZ2V0SWNvbixcXG4gICAgICAgICAgICBnZXRIem0sXFxuICAgICAgICAgICAgZ2V0TGlua1xcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGUxXFxcIilcXG4gICAgICAgIGxldCBwYXRocyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJwYXRoc2JhaWR1XFxcIiwgW3tcXG4gICAgICAgICAgICBwYXRoOiBcXFwiL1xcXCIsXFxuICAgICAgICAgICAgbmFtZTogXFxcIuWutlxcXCJcXG4gICAgICAgIH1dKVxcbiAgICAgICAgcGF0aHMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChwYXRocywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcInBhdGhzYmFpZHVcXFwiLCBwYXRocy5zbGljZSgwLCBpICsgMSkpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0sIHBhdGhzLCBpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybChcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3Jlc3QvMi4wL3hwYW4vZmlsZVxcXCIsIHtcXG4gICAgICAgICAgICBcXFwiYWNjZXNzX3Rva2VuXFxcIjogZ2V0SXRlbShcXFwiYWNjZXNzX3Rva2VuYmFpZHVcXFwiKSxcXG4gICAgICAgICAgICBcXFwibWV0aG9kXFxcIjogXFxcImxpc3RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJkaXJcXFwiOiBwYXRoc1twYXRocy5sZW5ndGggLSAxXS5wYXRoLFxcbiAgICAgICAgICAgIFxcXCJ3ZWJcXFwiOiBcXFwid2ViXFxcIixcXG4gICAgICAgICAgICBcXFwibGltaXRcXFwiOiAwLFxcbiAgICAgICAgICAgIFxcXCJsaW1pdFxcXCI6IDIwMFxcbiAgICAgICAgfSkpKVxcbiAgICAgICAgcmVzLmxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBpZiAoaXRlbS5pc2RpciA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIHZhciB1cmwgPSAkKCkubGF6eVJ1bGUoKGl0ZW0sIHBhdGhzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpdGVtLnBhdGgsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5zZXJ2ZXJfZmlsZW5hbWVcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwicGF0aHNiYWlkdVxcXCIsIHBhdGhzKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLCBwYXRocylcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCQubW92aWUuaW5jbHVkZXMoZ2V0SHptKGl0ZW0uc2VydmVyX2ZpbGVuYW1lKSkpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IGdldExpbmsoXFxcIm1vdmllXFxcIiwgaXRlbS5mc19pZCwgaXRlbS5wYXRoKVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJC5hdWRpby5pbmNsdWRlcyhnZXRIem0oaXRlbS5zZXJ2ZXJfZmlsZW5hbWUpKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gZ2V0TGluayhcXFwiYXVkaW9cXFwiLCBpdGVtLmZzX2lkLCBpdGVtLnBhdGgpXFxuICAgICAgICAgICAgfSBlbHNlIGlmICgkLmltZy5pbmNsdWRlcyhnZXRIem0oaXRlbS5zZXJ2ZXJfZmlsZW5hbWUpKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gZ2V0TGluayhcXFwiaW1nXFxcIiwgaXRlbS5mc19pZCwgaXRlbS5wYXRoKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB1cmwgPSBnZXRMaW5rKFxcXCJcXFwiLCBpdGVtLmZzX2lkLCBpdGVtLnBhdGgpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnNlcnZlcl9maWxlbmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBnZXRJY29uKGl0ZW0pLFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgICAgICB0b2FzdChcXFwi5Ye6546w6ZSZ6K+v77yM6K+35p+l55yL5pel5b+XXFxcIikgICAgICAgIFxcbiAgICB9XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImNvZGUxXCIsXCJwYXRoXCI6XCJjb2RlMVwiLFwicnVsZVwiOlwiJC5leHBvcnRzLmdldEljb24gPSBmdW5jdGlvbihjb250ZW50KSB7XFxuICAgIGxldCB7XFxuICAgICAgICBnZXRIem1cXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGVcXFwiKVxcbiAgICBsZXQgcm9vdCA9IFxcXCJodHRwczovL2dpdGNvZGUubmV0L3FxXzMyMzk0MzUxL2RyLy0vcmF3L21hc3Rlci9pbWcv5paH5Lu257G75Z6LMi9cXFwiO1xcbiAgICBpZiAoY29udGVudC5pc2RpciA9PSAxKSB7XFxuICAgICAgICBpbWcgPSByb290ICsgXFxcIuaWh+S7tuWkuS5zdmdcXFwiXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBsZXQgZmlsZXMgPSAnYWl8YXBrfGF2aXxjc3N8ZG1nfGV4ZXxmbHZ8Z2lmfGhpa2VyfGh0bWx8aXNvfGpwZ3xqc3xqc29ufGxvZ3xtb3Z8bXAzfG1wNHxvdGZ8cGhwfHBuZ3xwcHR8cHNkfHRhYmxlfHR4dHx3YXZ8eGxzfHppcHxjc3N8ZG9jfGVwdWJ8ZXhjfGh0bXx4bHN4Jy5zcGxpdCgnfCcpO1xcbiAgICAgICAgbGV0IGZpbGVOYW1lID0gY29udGVudC5zZXJ2ZXJfZmlsZW5hbWVcXG4gICAgICAgIGxldCBoem0gPSBnZXRIem0oZmlsZU5hbWUpXFxuICAgICAgICBpZiAoZmlsZXMuaW5jbHVkZXMoaHptKSkge1xcbiAgICAgICAgICAgIGltZyA9IHJvb3QgKyBoem0gKyAnLnN2Zyc7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGltZyA9IHJvb3QgKyBcXFwi5paH5Lu2LnN2Z1xcXCJcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gaW1nXFxufVxcbiQuZXhwb3J0cy5nZXRIem0gPSBmdW5jdGlvbihmaWxlTmFtZSkge1xcbiAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKFxcXCIuXFxcIikgKyAxKVxcbn1cXG4kLmV4cG9ydHMuZ2V0TGluayA9IGZ1bmN0aW9uKGV4dCwgaWQsIHBhdGgpIHtcXG4gICAgcmV0dXJuICQoKS5sYXp5UnVsZSgoZXh0LCBpZCwgcGF0aCkgPT4ge1xcbiAgICAgICAgaWYgKGdldEl0ZW0oXFxcImprXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1aWxkVXJsKFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vYXBpL2ZpbGVtZXRhc1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgXFxcImFjY2Vzc190b2tlblxcXCI6IGdldEl0ZW0oXFxcImFjY2Vzc190b2tlblxcXCIpLFxcbiAgICAgICAgICAgICAgICBcXFwiZGxpbmtcXFwiOiBcXFwiMVxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJ3ZWJcXFwiOiBcXFwiNVxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJvcmlnaW5cXFwiOiBcXFwiZGxuYVxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJ0YXJnZXRcXFwiOiBgW1xcXFxcXFwiJHtwYXRofVxcXFxcXFwiXWBcXG4gICAgICAgICAgICB9KSkpLmluZm9bMF0uZGxpbmtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybChcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3Jlc3QvMi4wL3hwYW4vbXVsdGltZWRpYVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgXFxcImFjY2Vzc190b2tlblxcXCI6IGdldEl0ZW0oXFxcImFjY2Vzc190b2tlblxcXCIpLFxcbiAgICAgICAgICAgICAgICBcXFwibWV0aG9kXFxcIjogXFxcImZpbGVtZXRhc1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJmc2lkc1xcXCI6IGBbJHtpZH1dYCxcXG4gICAgICAgICAgICAgICAgXFxcImRsaW5rXFxcIjogXFxcIjFcXFwiXFxuICAgICAgICAgICAgfSksIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwicGFuLmJhaWR1LmNvbVxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKS5saXN0WzBdLmRsaW5rICsgXFxcIiZhY2Nlc3NfdG9rZW49XFxcIiArIGdldEl0ZW0oXFxcImFjY2Vzc190b2tlblxcXCIpXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoZXh0ID09IFxcXCJtb3ZpZVxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICB1cmxzOiBbcmVzICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIl0sXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcInBhbi5iYWlkdS5jb21cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSBlbHNlIGlmIChleHQgPT0gXFxcImF1ZGlvXFxcIikge1xcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIHVybHM6IFtyZXMgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXSxcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwicGFuLmJhaWR1LmNvbVxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9IGVsc2UgaWYgKGV4dCA9PSBcXFwiaW1nXFxcIikge1xcbiAgICAgICAgICAgIHJldHVybiByZXMgKyBgIy5qcGc7e1VzZXItQWdlbnRAcGFuLmJhaWR1LmNvbX1gXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgcmVzICsgYDt7VXNlci1BZ2VudEBwYW4uYmFpZHUuY29tfWBcXG4gICAgICAgIH1cXG4gICAgfSwgZXh0LCBpZCwgcGF0aClcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJ0ZXh0XzJcIixcIm5hbWVcIjpcImxvZ2luMVwiLFwicGF0aFwiOlwibG9naW4xXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi6I635Y+WdG9rZW5cXFwiLFxcbiAgICB1cmw6IFxcXCJodHRwczovL29wZW5hcGkuYmFpZHUuY29tL29hdXRoLzIuMC9hdXRob3JpemU/cmVzcG9uc2VfdHlwZT1jb2RlJmNsaWVudF9pZD1pWUNlQzlnMDhoNXZ1UDlVcXZQSEtLU1ZyS0ZYR2ExdiZyZWRpcmVjdF91cmk9aHR0cHM6Ly90b29sLm5uLmNpL2JhaWR1L2NhbGxiYWNrJnNjb3BlPWJhc2ljLG5ldGRpc2smcXJjb2RlPTFcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIueZu+mZhlxcXCIsXFxuICAgIHVybDogJChcXFwiXFxcIiwgXFxcIuWhq+WGmeiOt+WPluWIsOeahHRva2VuXFxcIikuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybChcXFwiaHR0cHM6Ly9vcGVuYXBpLmJhaWR1LmNvbS9vYXV0aC8yLjAvdG9rZW5cXFwiLCB7XFxuICAgICAgICAgICAgXFxcImdyYW50X3R5cGVcXFwiOiBcXFwicmVmcmVzaF90b2tlblxcXCIsXFxuICAgICAgICAgICAgXFxcInJlZnJlc2hfdG9rZW5cXFwiOiBpbnB1dCxcXG4gICAgICAgICAgICBcXFwiY2xpZW50X2lkXFxcIjogXFxcImlZQ2VDOWcwOGg1dnVQOVVxdlBIS0tTVnJLRlhHYTF2XFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50X3NlY3JldFxcXCI6IFxcXCJqWGlGTU9QVlBDV2xPMk01Q3dXUXpmZnBOUGFHVFJCR1xcXCJcXG4gICAgICAgIH0pKSlcXG4gICAgICAgIGlmICghcmVzLmFjY2Vzc190b2tlbikge1xcbiAgICAgICAgICAgIGxvZyhyZXMpXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+mUmeivr++8ge+8ge+8gVxcXCJcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgc2V0SXRlbShcXFwiYWNjZXNzX3Rva2VuYmFpZHVcXFwiLCByZXMuYWNjZXNzX3Rva2VuKVxcbiAgICAgICAgICAgLy8gc2V0SXRlbShcXFwicmVmcmVzaF90b2tlblxcXCIsIHJlcy5yZWZyZXNoX3Rva2VuKVxcbiAgICAgICAgICAgIGJhY2soKVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldEl0ZW0oXFxcImprXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMFxcXCIgPyBcXFwi5a6Y5pa55o6l5Y+j77ya5LiN5pivdmlw5Lya6ZmQ6YCf77yM56iz5a6aXFxcIiA6IFxcXCLpnZ7lrpjmlrnmjqXlj6PvvJrlj6/og73kuI3pmZDpgJ/vvIzkuI3nqLPlrppcXFwiLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBzZXRJdGVtKFxcXCJqa1xcXCIsIGdldEl0ZW0oXFxcImprXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMFxcXCIgPyBcXFwiMVxcXCIgOiBcXFwiMFxcXCIpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxufSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJQaWtwYWtcIixcInBhdGhcIjpcIlBpa3Bha1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIueZu+mZhlxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3NldHRpbmdzMlxcXCJcXG59KVxcbmlmIChnZXRJdGVtKFxcXCJhY2Nlc3NfdG9rZW5cXFwiLCBcXFwiXFxcIikgIT0gXFxcIlxcXCIpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICBnZXRIem1cXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jb2RlMlxcXCIpXFxuICAgICAgICBsZXQgcGF0aHMgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwicGF0aHNwaWtwYWtcXFwiLCBbe1xcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWutlxcXCJcXG4gICAgICAgIH1dKVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIua3u+WKoOejgemTvlxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiXFxcIiwgXFxcIui+k+WFpeejgeWKm+mTvuaOpVxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJwaWtwYWthcHA6Ly9teXBpa3Bhay5jb20veHBhbi9tYWluX3RhYj90YWI9MSZhZGRfdXJsPVxcXCIgKyBlbmNvZGVVUklDb21wb25lbnQoaW5wdXQpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICBwYXRocy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHBhdGhzLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwicGF0aHNwaWtwYWtcXFwiLCBwYXRocy5zbGljZSgwLCBpICsgMSkpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0sIHBhdGhzLCBpKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QoYnVpbGRVcmwoXFxcImh0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS9kcml2ZS92MS9maWxlc1xcXCIsIHtcXG4gICAgICAgICAgICBcXFwicGFyZW50X2lkXFxcIjogcGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0uaWQsXFxuICAgICAgICAgICAgXFxcInRodW1ibmFpbF9zaXplXFxcIjogXFxcIlNJWkVfTEFSR0VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ3aXRoX2F1ZGl0XFxcIjogXFxcInRydWVcXFwiLFxcbiAgICAgICAgICAgIFxcXCJsaW1pdFxcXCI6IFxcXCIxMDAwXFxcIixcXG4gICAgICAgICAgICBcXFwiZmlsdGVyc1xcXCI6ICd7XFxcInBoYXNlXFxcIjp7XFxcImVxXFxcIjpcXFwiUEhBU0VfVFlQRV9DT01QTEVURVxcXCJ9LFxcXCJ0cmFzaGVkXFxcIjp7XFxcImVxXFxcIjpmYWxzZX19JyxcXG4gICAgICAgICAgICBcXFwicGFnZV90b2tlblxcXCI6IFxcXCJcXFwiXFxuICAgICAgICB9KSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIkF1dGhvcml6YXRpb25cXFwiOiBcXFwiQmVhcmVyIFxcXCIgKyBnZXRJdGVtKFxcXCJhY2Nlc3NfdG9rZW5cXFwiKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pKVxcbiAgICAgICAgbGlzdC5maWxlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGlmIChpdGVtLmtpbmQgPT0gXFxcImRyaXZlI2ZvbGRlclxcXCIpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybGwgPSAkKCkubGF6eVJ1bGUoKHBhdGhzLCBpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWVcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwicGF0aHNwaWtwYWtcXFwiLCBwYXRocylcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgfSwgcGF0aHMsIGl0ZW0pXFxuICAgICAgICAgICAgfSBlbHNlIGlmICgkLm1vdmllLmluY2x1ZGVzKGdldEh6bShpdGVtLm5hbWUpKSkge1xcblxcbiAgICAgICAgICAgICAgICB2YXIgZXh0ID0gXFxcIiNpc1ZpZGVvPXRydWUjXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJC5hdWRpby5pbmNsdWRlcyhnZXRIem0oaXRlbS5uYW1lKSkpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGV4dCA9IFxcXCIjaXNNdXNpYz10cnVlI1xcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCQuaW1nLmluY2x1ZGVzKGdldEh6bShpdGVtLm5hbWUpKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgZXh0ID0gXFxcIiMuanBnXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBleHQgPSBcXFwiXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgdXJsID0gJCgpLmxhenlSdWxlKChpdGVtLCBleHQpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHUgPSBgaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL2RyaXZlL3YxL2ZpbGVzLyR7aXRlbS5pZH0/X21hZ2ljPTIwMjEmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRWBcXG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdCh1LCB7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkF1dGhvcml6YXRpb25cXFwiOiBcXFwiQmVhcmVyIFxcXCIgKyBnZXRJdGVtKFxcXCJhY2Nlc3NfdG9rZW5cXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgIC8vbG9nKHJlcyk7XFxuICAgICAgICAgICAgICAgIGlmIChyZXMubGlua3MgJiYgcmVzLmxpbmtzW1xcXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cXFwiXSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHJlcy5saW5rc1tcXFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXFxcIl0udXJsO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmwgKyBleHRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBmb3IgKGl0ZW0gb2YgcmVzLm1lZGlhcykge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0gaXRlbS5saW5rXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC51cmwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRtcC51cmwgKyBleHRcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgaXRlbSwgZXh0KVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5pY29uX2xpbmssXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBpdGVtLmtpbmQgPT0gXFxcImRyaXZlI2ZvbGRlclxcXCIgPyB1cmxsIDogdXJsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHRvYXN0KFxcXCLmo4DmtYvliLDplJnor69cXFwiKVxcbiAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgfVxcbn1cXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJjb2RlMlwiLFwicGF0aFwiOlwiY29kZTJcIixcInJ1bGVcIjpcIiQuZXhwb3J0cy5sb2dpbiA9IGZ1bmN0aW9uKHVzZXJuYW1lLCBwYXNzd29yZCkge1xcbiAgICBsZXQgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL3VzZXIubXlwaWtwYWsuY29tL3YxL2F1dGgvc2lnbmluXFxcIiwge1xcbiAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgIFxcXCJjYXB0Y2hhX3Rva2VuXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgXFxcImNsaWVudF9pZFxcXCI6IFxcXCJZTnhUOXc3R01kV3ZFT0thXFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50X3NlY3JldFxcXCI6IFxcXCJkYncyT3RtVkVldVV2SXB0YjFDb3lnXFxcIixcXG4gICAgICAgICAgICBcXFwidXNlcm5hbWVcXFwiOiB1c2VybmFtZSxcXG4gICAgICAgICAgICBcXFwicGFzc3dvcmRcXFwiOiBwYXNzd29yZFxcbiAgICAgICAgfVxcbiAgICB9KSlcXG4gICAgaWYgKHJlcy5hY2Nlc3NfdG9rZW4pIHtcXG4gICAgICAgIHNldEl0ZW0oXFxcImFjY2Vzc190b2tlblxcXCIsIHJlcy5hY2Nlc3NfdG9rZW4pXFxuICAgICAgICBzZXRJdGVtKFxcXCJyZWZyZXNoX3Rva2VuXFxcIiwgcmVzLnJlZnJlc2hfdG9rZW4pXFxuICAgICAgICByZXR1cm4gdHJ1ZVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgbG9nKHJlcylcXG4gICAgICAgIHJldHVybiBmYWxzZVxcbiAgICB9XFxufVxcbiQuZXhwb3J0cy5nZXRIem0gPSBmdW5jdGlvbihmaWxlTmFtZSkge1xcbiAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKFxcXCIuXFxcIikgKyAxKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcInRleHRfMlwiLFwibmFtZVwiOlwic2V0dGluZ3MyXCIsXCJwYXRoXCI6XCJzZXR0aW5nczJcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLotKblj7co6YKu566xKVxcXCIsXFxuICAgIHVybDogJChnZXRJdGVtKFxcXCJ1c2VybmFtZVxcXCIsIFxcXCJcXFwiKSkuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgc2V0SXRlbShcXFwidXNlcm5hbWVcXFwiLCBpbnB1dClcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgfSlcXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5a+G56CBXFxcIixcXG4gICAgdXJsOiAkKGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIsIFxcXCJcXFwiKSkuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgc2V0SXRlbShcXFwicGFzc3dkXFxcIiwgaW5wdXQpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIueZu+mZhlxcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICBsb2dpblxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGUyXFxcIilcXG4gICAgICAgIGxvZyhnZXRJdGVtKFxcXCJ1c2VybmFtZVxcXCIpKVxcbiAgICAgICAgaWYgKGxvZ2luKGdldEl0ZW0oXFxcInVzZXJuYW1lXFxcIiksIGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIpKSkge1xcbiAgICAgICAgICAgIGJhY2soKVxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvpmYbmiJDlip9cXFwiXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvpmYblpLHotKVcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxufSlcXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWkqee/vOS6keebmFwiLFwicGF0aFwiOlwi5aSp57+85LqR55uYXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnRyeSB7XFxuICAgIGlmIChmaWxlRXhpc3QoXFxcIjE4OS50eHRcXFwiKSkge1xcbiAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgIGdldEZpbGVzLFxcbiAgICAgICAgICAgIGdldEljb25cXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jb2RlM1xcXCIpXFxuICAgICAgICB2YXIgcGF0aHMgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwicGF0aHN0eVxcXCIsIFt7XFxuICAgICAgICAgICAgXFxcImlkXFxcIjogLTExLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWutlxcXCJcXG4gICAgICAgIH1dKVxcbiAgICAgICAgcGF0aHMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChwYXRocywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcInBhdGhzdHlcXFwiLCBwYXRocy5zbGljZSgwLCBpICsgMSkpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0sIHBhdGhzLCBpKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgbGV0IGxpc3QgPSBnZXRGaWxlcyhwYXRoc1twYXRocy5sZW5ndGggLSAxXS5pZClcXG4gICAgICAgIGxpc3QuZmlsZUxpc3RBTy5mb2xkZXJMaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICBpbWc6IFxcXCJodHRwczovL2dpdGNvZGUubmV0L3FxXzMyMzk0MzUxL2RyLy0vcmF3L21hc3Rlci9pbWcv5paH5Lu257G75Z6LMi/mlofku7blpLkuc3ZnXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHBhdGhzLCBpZCwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWVcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwicGF0aHN0eVxcXCIsIHBhdGhzKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICB9LCBwYXRocywgaXRlbS5pZCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgbGlzdC5maWxlTGlzdEFPLmZpbGVMaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgdmFyIGltZyA9IGdldEljb24oaXRlbS5uYW1lKVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEh6bVxcbiAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGVcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvb2tpZSA9IHJlYWRGaWxlKFxcXCIxODkudHh0XFxcIilcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1ID0gXFxcImh0dHBzOi8vY2xvdWQuMTg5LmNuL2FwaS9wb3J0YWwvZ2V0RmlsZUluZm8uYWN0aW9uXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybCh1LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImZpbGVJZFxcXCI6IGlkXFxuICAgICAgICAgICAgICAgICAgICB9KSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkFjY2VwdFxcXCI6IFxcXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICBpZiAoJC5tb3ZpZS5pbmNsdWRlcyhnZXRIem0obmFtZSkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogW1xcXCJodHRwczpcXFwiICsgcmVzLmRvd25sb2FkVXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBjb29raWUucmVwbGFjZSgvOy9nLCBcXFwi77yb77ybXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLnJlcGxhY2UoLzsvZywgXFxcIu+8m++8m1xcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkLmF1ZGlvLmluY2x1ZGVzKGdldEh6bShuYW1lKSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiBbXFxcImh0dHBzOlxcXCIgKyByZXMuZG93bmxvYWRVcmwgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZS5yZXBsYWNlKC87L2csIFxcXCLvvJvvvJtcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEucmVwbGFjZSgvOy9nLCBcXFwi77yb77ybXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQuaW1nLmluY2x1ZGVzKGdldEh6bShuYW1lKSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImh0dHBzOlxcXCIgKyByZXMuZG93bmxvYWRVcmwgKyBgIy5qcGdAVXNlci1BZ2VudD0ke1BDX1VBfUBDb29raWU9JHtjb29raWV9YFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vaHR0cHM6XFxcIiArIHJlcy5kb3dubG9hZFVybCArIGBAVXNlci1BZ2VudD0ke1BDX1VBfUBDb29raWU9JHtjb29raWV9YFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkLCBpdGVtLm5hbWUpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBkLnVuc2hpZnQoe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi55m76ZmGXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvbG9naW4zXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxufSBjYXRjaCAoZSkge1xcbiAgICBkLnVuc2hpZnQoe1xcbiAgICAgICAgdGl0bGU6IFxcXCLnmbvpmYZcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2xvZ2luM1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgIH0pXFxuICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgIHRvYXN0KFxcXCLnqIvluo/lj6/og73lh7rplJnkuobvvIzor7fmn6XnnIvml6Xlv5dcXFwiKVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJjb2RlM1wiLFwicGF0aFwiOlwiY29kZTNcIixcInJ1bGVcIjpcIiQuZXhwb3J0cy5nZXRGaWxlcyA9IGZ1bmN0aW9uKGlkKSB7XFxuICAgIGxldCB1ID0gXFxcImh0dHBzOi8vY2xvdWQuMTg5LmNuL2FwaS9vcGVuL2ZpbGUvbGlzdEZpbGVzLmFjdGlvblxcXCJcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcbiAgICAgICAgXFxcInBhZ2VTaXplXFxcIjogMTAwMCxcXG4gICAgICAgIFxcXCJwYWdlTnVtXFxcIjogMSxcXG4gICAgICAgIFxcXCJtZWRpYVR5cGVcXFwiOiAwLFxcbiAgICAgICAgXFxcImZvbGRlcklkXFxcIjogaWQsXFxuICAgICAgICBcXFwiaWNvbk9wdGlvblxcXCI6IDUsXFxuICAgICAgICBcXFwib3JkZXJCeVxcXCI6IFxcXCJsYXN0T3BUaW1lXFxcIixcXG4gICAgICAgIFxcXCJkZXNjZW5kaW5nXFxcIjogXFxcInRydWVcXFwiLFxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiByZWFkRmlsZShcXFwiMTg5LnR4dFxcXCIpLFxcbiAgICAgICAgICAgIFxcXCJBY2NlcHRcXFwiOiBcXFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XFxcIixcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIHZhciBqc29uID0gcmVzLnJlcGxhY2UoL1xcXFxcXFwiaWRcXFxcXFxcIjooXFxcXGQrKS9nLCAnXFxcImlkXFxcIjpcXFwiJDFcXFwiJykgLy/op6PlhrNqc+eahOeyvuW6pumXrumimFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKVxcbn1cXG4kLmV4cG9ydHMuZ2V0SWNvbiA9IGZ1bmN0aW9uKGZpbGVOYW1lKSB7XFxuICAgIGxldCB7XFxuICAgICAgICBnZXRIem1cXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGVcXFwiKVxcbiAgICBsZXQgcm9vdCA9IFxcXCJodHRwczovL2dpdGNvZGUubmV0L3FxXzMyMzk0MzUxL2RyLy0vcmF3L21hc3Rlci9pbWcv5paH5Lu257G75Z6LMi9cXFwiO1xcbiAgICBsZXQgZmlsZXMgPSAnYWl8YXBrfGF2aXxjc3N8ZG1nfGV4ZXxmbHZ8Z2lmfGhpa2VyfGh0bWx8aXNvfGpwZ3xqc3xqc29ufGxvZ3xtb3Z8bXAzfG1wNHxvdGZ8cGhwfHBuZ3xwcHR8cHNkfHRhYmxlfHR4dHx3YXZ8eGxzfHppcHxjc3N8ZG9jfGVwdWJ8ZXhjfGh0bXx4bHN4Jy5zcGxpdCgnfCcpO1xcbiAgICBsZXQgaHptID0gZ2V0SHptKGZpbGVOYW1lKVxcbiAgICBpZiAoZmlsZXMuaW5jbHVkZXMoaHptKSkge1xcbiAgICAgICAgaW1nID0gcm9vdCArIGh6bSArICcuc3ZnJztcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGltZyA9IHJvb3QgKyBcXFwi5paH5Lu2LnN2Z1xcXCJcXG4gICAgfVxcbiAgICByZXR1cm4gaW1nXFxufVxcbiQuZXhwb3J0cy5nZXRIem0gPSBmdW5jdGlvbihmaWxlTmFtZSkge1xcbiAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKFxcXCIuXFxcIikgKyAxKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImxvZ2luM1wiLFwicGF0aFwiOlwibG9naW4zXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgKCkgPT4ge1xcbiAgICBsZXQgYyA9IGdldFZhcihcXFwiaHR0cHM6Ly9jbG91ZC4xODkuY24vd2ViL21haW5cXFwiKTtcXG4gICAgbG9nKGMpO1xcbiAgICBzYXZlRmlsZShcXFwiMTg5LnR4dFxcXCIsIGMpO1xcbiAgICBjbGVhclZhcihcXFwiaHR0cHM6Ly9jbG91ZC4xODkuY24vd2ViL21haW5cXFwiKTtcXG59KVxcbmQucHVzaCh7XFxuICAgIHVybDogXFxcImh0dHBzOi8vY2xvdWQuMTg5LmNuL3dlYi9sb2dpbi5odG1sXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IGxvY2F0aW9uLmhyZWZcXG4gICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJodHRwczovL2Nsb3VkLjE4OS5jbi93ZWIvbWFpblxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBjb29raWUgPSBmYmEuZ2V0Q29va2llKHVybCk7XFxuICAgICAgICAgICAgICAgIGlmIChjb29raWUgIT0gbnVsbCAmJiBjb29raWUubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgZmJhLnB1dFZhcihcXFwiaHR0cHM6Ly9jbG91ZC4xODkuY24vd2ViL21haW5cXFwiLCBjb29raWUpO1xcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoXFxcIuW3suiOt+WPluWIsGNvb2tpZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgZmJhLmJhY2soKTsgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pLFxcbiAgICAgICAgdWE6IFBDX1VBLFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZVxcbiAgICB9XFxufSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlpLjlhYvnvZHnm5hcIixcInBhdGhcIjpcIuWkuOWFi+e9keebmFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG50cnkge1xcbiAgICBpZiAoZmlsZUV4aXN0KFxcXCJxdWFyay50eHRcXFwiKSkge1xcbiAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgIGdldEljb24sXFxuICAgICAgICAgICAgZ2V0SHptLFxcbiAgICAgICAgICAgIGdldExpbmtcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jb2RlNFxcXCIpXFxuICAgICAgICB2YXIgY29va2llID0gcmVhZEZpbGUoXFxcInF1YXJrLnR4dFxcXCIpXFxuICAgICAgICBsZXQgdXNlcmluZm8gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImh0dHBzOi8vcGFuLnF1YXJrLmNuL2FjY291bnQvaW5mb1xcXCIsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSlcXG4gICAgICAgIGxldCBwYXRocyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJwYXRoc1xcXCIsIFt7XFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjBcXFwiLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuagueebruW9lVxcXCJcXG4gICAgICAgIH1dKVxcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB1c2VyaW5mby5kYXRhLm5pY2tuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IHVzZXJpbmZvLmRhdGEuYXZhdGFyVXJpLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uvc2V0dGluZ3M0XFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwYXRocy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChwYXRocywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJwYXRoc1xcXCIsIHBhdGhzLnNsaWNlKDAsIGkgKyAxKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSwgcGF0aHMsIGkpXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYnVpbGRVcmwoXFxcImh0dHBzOi8vZHJpdmUucXVhcmsuY24vMS9jbG91ZGRyaXZlL2ZpbGUvc29ydFxcXCIsIHtcXG4gICAgICAgICAgICBcXFwicGRpcl9maWRcXFwiOiBwYXRoc1twYXRocy5sZW5ndGggLSAxXS5pZCxcXG4gICAgICAgICAgICBcXFwiZnJcXFwiOiBcXFwicGNcXFwiLFxcbiAgICAgICAgICAgIFxcXCJwclxcXCI6IFxcXCJ1Y3Byb1xcXCIsXFxuICAgICAgICAgICAgXFxcIl9zaXplXFxcIjogMTAsXFxuICAgICAgICAgICAgXFxcIl9mZXRjaF90b3RhbFxcXCI6IFxcXCIxXFxcIixcXG4gICAgICAgICAgICBcXFwiX3NvcnRcXFwiOiBcXFwiZmlsZV90eXBlOmFzYyxmaWxlX25hbWU6YXNjXFxcIixcXG4gICAgICAgICAgICBcXFwiX3BhZ2VcXFwiOiBnZXRQYXJhbShcXFwicGFnZVxcXCIpXFxuICAgICAgICB9KSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZSxcXG4gICAgICAgICAgICAgICAgXFxcIkFjY2VwdFxcXCI6IFxcXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLypcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3Bhbi5xdWFyay5jbi9cXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpXFxuICAgICAgICByZXMuZGF0YS5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgaWYgKCFpdGVtLmZpbGUpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9ICQoKS5sYXp5UnVsZSgoaXRlbSwgcGF0aHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHBhdGhzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmZpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLmZpbGVfbmFtZVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJwYXRoc1xcXCIsIHBhdGhzKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLCBwYXRocylcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCQubW92aWUuaW5jbHVkZXMoZ2V0SHptKGl0ZW0uZmlsZV9uYW1lKSkpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IGdldExpbmsoaXRlbSwgY29va2llLCBcXFwibW92aWVcXFwiKVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJC5hdWRpby5pbmNsdWRlcyhnZXRIem0oaXRlbS5maWxlX25hbWUpKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gZ2V0TGluayhpdGVtLCBjb29raWUsIFxcXCJhdWRpb1xcXCIpXFxuICAgICAgICAgICAgfSBlbHNlIGlmICgkLmltZy5pbmNsdWRlcyhnZXRIem0oaXRlbS5maWxlX25hbWUpKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gZ2V0TGluayhpdGVtLCBjb29raWUsIFxcXCJpbWdcXFwiKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB1cmwgPSBnZXRMaW5rKGl0ZW0sIGNvb2tpZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uZmlsZV9uYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IGdldEljb24oaXRlbSksXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIueZu+mZhlxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3NldHRpbmdzNFxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxufSBjYXRjaCAoZSkge1xcbiAgICBsb2coZS5tZXNzYWdlKVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJjb2RlNFwiLFwicGF0aFwiOlwiY29kZTRcIixcInJ1bGVcIjpcIiQuZXhwb3J0cy5nZXRJY29uID0gZnVuY3Rpb24oY29udGVudCkge1xcbiAgICBsZXQge1xcbiAgICAgICAgZ2V0SHptXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jb2RlXFxcIilcXG4gICAgbGV0IHJvb3QgPSBcXFwiaHR0cHM6Ly9naXRjb2RlLm5ldC9xcV8zMjM5NDM1MS9kci8tL3Jhdy9tYXN0ZXIvaW1nL+aWh+S7tuexu+WeizIvXFxcIjtcXG4gICAgaWYgKCFjb250ZW50LmZpbGUpIHtcXG4gICAgICAgIGltZyA9IHJvb3QgKyBcXFwi5paH5Lu25aS5LnN2Z1xcXCJcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGxldCBmaWxlcyA9ICdhaXxhcGt8YXZpfGNzc3xkbWd8ZXhlfGZsdnxnaWZ8aGlrZXJ8aHRtbHxpc298anBnfGpzfGpzb258bG9nfG1vdnxtcDN8bXA0fG90ZnxwaHB8cG5nfHBwdHxwc2R8dGFibGV8dHh0fHdhdnx4bHN8emlwfGNzc3xkb2N8ZXB1YnxleGN8aHRtfHhsc3gnLnNwbGl0KCd8Jyk7XFxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBjb250ZW50LmZpbGVfbmFtZVxcbiAgICAgICAgbGV0IGh6bSA9IGdldEh6bShmaWxlTmFtZSlcXG4gICAgICAgIGlmIChmaWxlcy5pbmNsdWRlcyhoem0pKSB7XFxuICAgICAgICAgICAgaW1nID0gcm9vdCArIGh6bSArICcuc3ZnJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaW1nID0gcm9vdCArIFxcXCLmlofku7Yuc3ZnXFxcIlxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBpbWdcXG59XFxuJC5leHBvcnRzLmdldEh6bSA9IGZ1bmN0aW9uKGZpbGVOYW1lKSB7XFxuICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGFzdEluZGV4T2YoXFxcIi5cXFwiKSArIDEpXFxufVxcbiQuZXhwb3J0cy5nZXRMaW5rID0gZnVuY3Rpb24oaXRlbSwgY29va2llLCBleHQpIHtcXG4gICAgdmFyIHVybCA9ICQoKS5sYXp5UnVsZSgoZmlkLCBjb29raWUsIGV4dCkgPT4ge1xcbiAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9kcml2ZS5xdWFyay5jbi8xL2Nsb3VkZHJpdmUvZmlsZS9kb3dubG9hZD9wcj11Y3BybyZmcj1wY1xcXCIsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBjb29raWUsXFxuICAgICAgICAgICAgICAgIFxcXCJBY2NlcHRcXFwiOiBcXFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly9wYW4ucXVhcmsuY24vXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICBcXFwiZmlkc1xcXCI6IFtmaWRdXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pKVxcbiAgICAgICAgaWYgKGV4dCA9PSBcXFwibW92aWVcXFwiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgdXJsczogW3Jlcy5kYXRhWzBdLmRvd25sb2FkX3VybCArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCJdLFxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogY29va2llLnJlcGxhY2UoLzsvZywgXFxcIu+8m++8m1xcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly9wYW4ucXVhcmsuY24vXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0gZWxzZSBpZiAoZXh0ID09IFxcXCJhdWRpb1xcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICB1cmxzOiBbcmVzLmRhdGFbMF0uZG93bmxvYWRfdXJsICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl0sXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBjb29raWUucmVwbGFjZSgvOy9nLCBcXFwi77yb77ybXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3Bhbi5xdWFyay5jbi9cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSBlbHNlIGlmIChleHQgPT0gXFxcImltZ1xcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gcmVzLmRhdGFbMF0uZG93bmxvYWRfdXJsICsgYEBSZWZlcmVyPWh0dHBzOi8vcGFuLnF1YXJrLmNuL0BDb29raWU9JHtjb29raWV9YFxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIHJlcy5kYXRhWzBdLmRvd25sb2FkX3VybCArIGBAUmVmZXJlcj1odHRwczovL3Bhbi5xdWFyay5jbi9AQ29va2llPSR7Y29va2llfWBcXG4gICAgICAgIH1cXG4gICAgfSwgaXRlbS5maWQsIGNvb2tpZSwgZXh0KVxcbiAgICByZXR1cm4gdXJsXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwic2V0dGluZ3M0XCIsXCJwYXRoXCI6XCJzZXR0aW5nczRcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAoKSA9PiB7XFxuICAgIHNhdmVGaWxlKFxcXCJxdWFyay50eHRcXFwiLCBnZXRWYXIoXFxcImh0dHBzOi8vcGFuLnF1YXJrLmNuL2xpc3QjL2xpc3QvYWxsXFxcIikpXFxuICAgIGNsZWFyVmFyKFxcXCJodHRwczovL3Bhbi5xdWFyay5jbi9saXN0Iy9saXN0L2FsbFxcXCIpO1xcbn0pXFxuZC5wdXNoKHtcXG4gICAgdXJsOiBcXFwiaHR0cHM6Ly9wYW4ucXVhcmsuY24vXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IGxvY2F0aW9uLmhyZWZcXG4gICAgICAgICAgICBpZiAodXJsID09IFxcXCJodHRwczovL3Bhbi5xdWFyay5jbi9saXN0Iy9saXN0L2FsbFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGNvb2tpZSA9IGZiYS5nZXRDb29raWUodXJsKTtcXG4gICAgICAgICAgICAgICAgaWYgKGNvb2tpZSAhPSBudWxsICYmIGNvb2tpZS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBmYmEucHV0VmFyKHVybCwgY29va2llKTtcXG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0KFxcXCLlt7Lojrflj5bliLBjb29raWVcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5iYWNrKCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSxcXG4gICAgICAgIHVhOiBQQ19VQSxcXG4gICAgICAgIGNhbkJhY2s6IHRydWVcXG4gICAgfVxcbn0pXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YWz5LqOXCIsXCJwYXRoXCI6XCJhYm91dFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKFxcXCJjXFxcIik7XFxufSkpO1xcbmQucHVzaCgkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hYm91dDJcXFwiKSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgbGV0IGMgPSBwYXJzZUludChnZXRNeVZhcihcXFwiY1xcXCIsIFxcXCIxXFxcIikpXFxuICAgICAgICBpZiAoYyA+PSA1KSB7XFxuICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5rip6aao5o+Q56S6XFxcIixcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcIuehruWumuimgeW8gOWQr+W8gOWPkeiAheaooeW8j+WQl++8n+azqOaEj+W8gOWQr+ivpeaooeW8j+WImeihqOekuuWQjue7reaCqOeahOaJgOacieaTjeS9nOWdh+S4uuS4u+inguiDveWKqOaTjeS9nO+8jOaJgOS6p+eUn+eahOS4gOWIh+mXrumimOS4jui0o+S7u+Wdh+eUseaCqOiHquW3seaJv+aLhVxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZGV2XFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7LlvIDlkK/lvIDlj5HogIXmqKHlvI9cXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiY1xcXCIsIGMgKyAxICsgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pO1xcblxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWFs+S6jjJcIixcInBhdGhcIjpcImFib3V0MlwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0ge1xcbiAgICB0aXRsZTogXFxcIuacrOinhOWImeWfuuS6juW8gOa6kOmhueebru+8mjxhIGhyZWY9XFxcXFxcXCJodHRwczovL2dpdGh1Yi5jb20vYWxpc3Qtb3JnL2FsaXN0XFxcXFxcXCI+QWxpc3Q8L2E+77yM5o6i57Si5LiN5L2/55So5pyN5Yqh5Zmo5a6e546wQWxpc3TpgLvovpHvvIzmnKzop4TliJnmiYDmnInku6PnoIHlhajpg6jlvIDmupDvvIzku4XpmZDkuKrkurrkvb/nlKjvvIzku4XkvpvnoJTnqbbjgIHlrabkuaDlkozmtYvor5XvvIznpoHmraLovazovb3liIbkuqvliLDnrKzkuInmlrnlubPlj7BcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiLFxcbiAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCJcXG59XCJ9XSIsImljb24iOiJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS81NS5wbmciLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment