24-5-4-云简搜索引擎规则「97」条.txt 117 KB

1
  1. 海阔视界云简搜索引擎,共「97」条,复制整条口令打开软件就会自动导入$W3sibmFtZSI6InZpZGVvIiwiYXV0aG9yIjoiIiwiZmluZCI6ImxldCB1cmwgPSBcImh0dHBzOi8vdmlkZW8uNDUxMDI0Lnh5ei9hcGkvbXZcIjtcbmxldCBqc29uID0gcG9zdCh1cmwsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFJlZmVyZXI6IFwiaHR0cHM6Ly92aWRlby40NTEwMjQueHl6L3ZpZGVvP25hbWU9XCIgKyBzXG4gICAgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIFwia1wiOiBzLFxuICAgICAgICBcIm5cIjogKHBhZ2UgLSAxKVxuICAgIH0pXG59KTtcbmpzb24gPSBKU09OLnBhcnNlKGpzb24pO1xubGV0IGxpc3QgPSBqc29uLmRhdGE7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaiBvZiBsaXN0KSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGoudGl0bGUsXG4gICAgICAgIGRlc2M6IGoubGluayxcbiAgICAgICAgLy9waWNfdXJsOiAsXG4gICAgICAgIHVybDogai5saW5rXG4gICAgfSlcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTU2NzQ5MjA1NTEsImdyb3VwIjoi57u85ZCIIiwicnVsZVR5cGUiOiIifSx7Im5hbWUiOiLmh5Lnm5jmkJzntKIiLCJhdXRob3IiOiJ6aGFvIiwiZmluZCI6ImZ1bmN0aW9uIGdldGh0bWwoKSB7XG4gICAgbGV0IGh0bWwgPSByZXF1ZXN0KFwiaHR0cHM6Ly93d3cubHpwYW54LmNvbS9zZWFyY2g/ZXhhY3Q9ZmFsc2UmcGFnZT1cIiArIHBhZ2UgKyBcIiZxPVwiICsgcyArIFwiJnNoYXJlX3RpbWU9JnR5cGU9JnVzZXI9XCIsICk7XG4gICAgcmV0dXJuIGh0bWw7XG59O1xudmFyIGh0bWwgPSBnZXRodG1sKCk7XG5cbmxldCBsaXN0ID0gcGRmYShodG1sLCBcImJvZHkmJi5fc2VhcmNoLWl0ZW0taGVhZF8xMnF0al8yNFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpdCBvZiBsaXN0KSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoaXQsIFwiYSYmdGl0bGVcIiksXG4gICAgICAgIHVybDogYmFzaWNVcmwrcGRmaChpdCwgXCJhJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6IiIsImZpbmRBbGlVcmwiOiJsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xuXG5sZXQgYXJyID0gcGRmYShodG1sLCBcImJvZHkmJi50aHJlYWQtY29udGVudFwiKS5tYXAodiA9PiBwZGZoKHYsIFwiYSYmaHJlZlwiKSkuZmlsdGVyKHYgPT4gdi5pbmNsdWRlcyhcImFsaVwiKSB8fCB2LmluY2x1ZGVzKFwicXVhcmtcIikpO1xuaWYgKGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaW5wdXQ7XG59IGVsc2Uge1xuICAgIHJldHVybiBhcnI7XG59IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMjgxNjMwNDU1NywiZ3JvdXAiOiLnu7zlkIgiLCJydWxlVHlwZSI6IiJ9LHsibmFtZSI6IuWwj+Wuh+aQnOe0oiIsImF1dGhvciI6InpoYW8iLCJmaW5kIjoiZnVuY3Rpb24gZ2V0aHRtbCgpIHtcbiAgICBsZXQgaHRtbCA9IHJlcXVlc3QoXCJodHRwOi8vZG0ueGlhb3VqLmNuLz9zPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpICsgXCImcGFnZWQ9XCIgKyBwYWdlLCApO1xuICAgIHJldHVybiBodG1sO1xufTtcbnZhciBodG1sID0gZ2V0aHRtbCgpO1xuXG5sZXQgbGlzdCA9IHBkZmEoaHRtbCwgXCJib2R5JiYucG9zdFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpdCBvZiBsaXN0KSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoaXQsIFwiaDImJlRleHRcIikgKyBwZGZoKGl0LCBcImgxJiZUZXh0XCIpLFxuICAgICAgICB1cmw6IGJhc2ljVXJsK3BkZmgoaXQsIFwiYSYmaHJlZlwiKSxcbiAgICAgICAgcGljX3VybDogcGRmaChpdCwgXCJpbWcmJnNyY1wiKSxcbiAgICAgICAgZGVzYzogcGRmaChpdCwgXCJwJiZUZXh0XCIpLFxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoibGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcblxubGV0IGFyciA9IHBkZmEoaHRtbCwgJy5lbnRyeS1jb250ZW50JiZhOm5vdChbaHJlZio9XCJkbS54aWFvdWouY25cIl0pJykubWFwKHYgPT4gcGRmaCh2LCBcImEmJmhyZWZcIikpLmZpbHRlcih2ID0+IHYuaW5jbHVkZXMoXCJhbGlcIikgfHwgdi5pbmNsdWRlcyhcInF1YXJrXCIpKTtcbmlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGlucHV0O1xufSBlbHNlIHtcbiAgICByZXR1cm4gYXJyO1xufSIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTI4MTAwMzMwODUsImdyb3VwIjoi57u85ZCIIiwicnVsZVR5cGUiOiIifSx7Im5hbWUiOiLlpYfkuZDmkJwiLCJhdXRob3IiOiJATG95RGdJayIsImZpbmQiOiIubGlzdC1ncm91cCYmLmxpc3QtZ3JvdXAtaXRlbVxuaDImJlRleHRcbmEmJmhyZWYiLCJiYXNpY1VybCI6Imh0dHBzOi8vd3d3LnFpbGVzby5jb20vcGFnZS9meXBhZ2U/cz0qKiIsImZpbmRBbGlVcmwiOiIjYm9keSYmLnRocmVhZC1jb250ZW50JiZwLC0xJiZhJiZocmVmIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMjU4OTI5NzI5MiwiZ3JvdXAiOiLnu7zlkIgiLCJydWxlVHlwZSI6IkhUTUwifSx7Im5hbWUiOiLljYfnu7Tnn63liaciLCJhdXRob3IiOiJATG95RGdJayIsImZpbmQiOiJsZXQgZGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goYmFzaWNVcmwrXCIvYXBpL3NlYXJjaF92aWRlby9cIitlbmNvZGVVUklDb21wb25lbnQocykpKTtcblxucmV0dXJuIGRhdGEuZGF0YS5tYXAodj0+KHtcbiAgICB0aXRsZTogdi5TZXJ2ZXJGaWxlbmFtZSxcbiAgICBkZXNjOiB2LlVwZGF0ZWRBdCxcbiAgICB1cmw6IFN0cmluZyh2LkZJRClcbn0pKTsiLCJiYXNpY1VybCI6Imh0dHA6Ly9kai5zd2tqMjIuY24iLCJmaW5kQWxpVXJsIjoibGV0IGRhdGEgPSBKU09OLnBhcnNlKGZldGNoKGJhc2ljVXJsICsgXCIvYXBpL2dldF92aWRlb19lcGlzb2RlL1wiICsgaW5wdXQpKTtcbnJldHVybiBuZXcgRWFzeU5leHRQYWdlKGRhdGEuZGF0YS5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhLlNlcnZlckZpbGVuYW1lLnJlcGxhY2UoL+inhumikS8sICcnKSkgLSBwYXJzZUludChiLlNlcnZlckZpbGVuYW1lLnJlcGxhY2UoL+inhumikS8sICcnKSkpLm1hcCh2ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlVcmw6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHVybHM6IFtiYXNpY1VybCArIFwiL2FwaS91c2VyL2dldF9tM3U4X2J5X2ZpZC9cIiArIGlucHV0ICsgXCIvXCIgKyB2LkZJRCArIFwiLm0zdThcIl0sXG4gICAgICAgICAgICBoZWFkZXJzOiBbe1xuICAgICAgICAgICAgICAgIFwiQ29va2llXCI6IFwic2Vzc2lvbj1NVGN4TkRZeU16Y3hNWHhFV0RoRlFWRk1YMmRCUVVKRlFVVlJRVUZDT0Y4MFFVRkNRVnA2WkVoS2NHSnRZMDFEVVVGSVl6SXhlbGt5T1d0YVVVNXdZbTVSUlVKQlJDMU1MVUZIWXpOU2VXRlhOVzVFUVd0QlFqSnNlbUpIT1c1aFZ6UkZXVzA1ZG1KQlNVTkJRVVZIWXpOU2VXRlhOVzVFUVZGQlFXMXNhMEpJVm5CaWJsRkhRa0ZFTFVGNk9FZGpNMUo1WVZjMWJrUkJiMEZEU0ZaNldsaEtkVmxYTVd4Q2JrNHdZMjFzZFZwM2QwNUJRWE40VGxSak1rOUVVWGxOUkdjd1RtYzlQWHk2ZElMeXFwRWlPYnJqc1oxLVBXbHdRcnY2VmhZRXp2LWh4QTU1bkJLaWl3PT1cIixcbiAgICAgICAgICAgICAgICBcIlVzZXItQWdlbnRcIjogXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTI7IDIyMDIxMjExUkMgQnVpbGQvU0tRMS4yMTEwMDYuMDAxOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzk5LjAuNDg0NC44OCBNb2JpbGUgU2FmYXJpLzUzNy4zNlwiXG4gICAgICAgICAgICB9XVxuICAgICAgICB9KSxcbiAgICAgICAgdGl0bGU6IHYuU2VydmVyRmlsZW5hbWUucmVwbGFjZSgv6KeG6aKRLywgJycpLFxuICAgIH07XG59KSwgXCJ0ZXh0XzNcIik7XG5cbiIsInBhZ2UiOmZhbHNlLCJsYXN0TW9kaWZ5IjoxNzE0NjM1MTkzMzM1LCJncm91cCI6Iue7vOWQiCIsInJ1bGVUeXBlIjoiIn0seyJuYW1lIjoi56eS5pCcIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoibGV0IGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoYmFzaWNVcmwgKyBcIi9hcGkvc2VjZW5kc2VhcmNoP25hbWU9XCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIiZwYWdlTm89XCIgKyBwYWdlKSk7XG5sZXQgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXCIpO1xubGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXCI0T1RvU2NVRk9hZVZUckhFXCIpO1xubGV0IGl2ID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlVVRGOChcIjlDTEdhbzF2SEtxbTE3T3pcIik7XG5cbmZ1bmN0aW9uIGRlY3J5cHQoZGF0YSkge1xuICAgIHJldHVybiBDcnlwdG9VdGlsLkFFUy5kZWNyeXB0KGRhdGEsIGtleSwge1xuICAgICAgICBpdixcbiAgICAgICAgbW9kZTogXCJBRVMvQ0JDL1BLQ1M3UGFkZGluZ1wiXG4gICAgfSkudG9TdHJpbmcoKTtcbn1cbmxldCBsaXN0ID0ganNvbi5kYXRhLmxpc3Q7XG5yZXR1cm4gbGlzdC5tYXAodiA9PiAoe1xuICAgIHRpdGxlOiB2Lm5hbWUsXG4gICAgdXJsOiBkZWNyeXB0KHYudXJsKSxcbiAgICBkZXNjOiB2LmdtdENyZWF0ZSArIFwiIFwiICsgdi5mcm9tXG59KSk7IiwiYmFzaWNVcmwiOiJodHRwczovL21pYW9zb3UuZnVuIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTEyMDExMzQxMDcsImdyb3VwIjoi57u85ZCIIiwicnVsZVR5cGUiOiIifSx7Im5hbWUiOiI1MXBhbnNvIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoibGV0IGRhdGEgPSBKU09OLnBhcnNlKHBvc3QoYmFzaWNVcmwgKyBcIi92MS9zZWFyY2gvZGlza1wiLCB7XG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBcInBhZ2VcIjogcGFnZSxcbiAgICAgICAgXCJzaXplXCI6IDEwLFxuICAgICAgICBcInFcIjogcyxcbiAgICAgICAgXCJ0eXBlXCI6IFwiXCIsXG4gICAgICAgIFwic2hhcmVfdGltZVwiOiBcIlwiXG4gICAgfSlcbn0pKS5kYXRhLmxpc3Q7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXQgb2YgZGF0YSkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBpdC5kaXNrX25hbWUsXG4gICAgICAgIHVybDogaXQubGluayxcbiAgICAgICAgZGVzYzogaXQuc2hhcmVkX3RpbWUgKyBcIlxcblwiICsgaXQubGlua1xuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwOi8vNTF5dW5wYW4uY29tIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTA3NjQ3MzU0NTQsImdyb3VwIjoi57u85ZCIIn0seyJuYW1lIjoi5LqR55uYNGsiLCJmaW5kIjoibGV0IHVybCA9IFwiaHR0cHM6Ly93d3cuY29kZWxpY2VuY2UuY24vc2VhcmNoXCI7XG5sZXQgcmVkaXJlY3RVcmwgPSBKU09OLnBhcnNlKHBvc3QodXJsLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBSZWZlcmVyOiBcImh0dHBzOi8vd3d3LmNvZGVsaWNlbmNlLmNuXCJcbiAgICB9LFxuICAgIGJvZHk6IHtcbiAgICAgICAgJ2tleWJvYXJkJzogcyxcbiAgICB9LFxuICAgIHJlZGlyZWN0OiBmYWxzZSxcbiAgICB3aXRoSGVhZGVyczogdHJ1ZSxcbn0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xuXG5cbmxldCBzZWFyY2hVcmwgPSByZWRpcmVjdFVybCArIFwiP3A9XCIgKyBwYWdlO1xubGV0IGh0bWwgPSByZXF1ZXN0KHNlYXJjaFVybCk7XG5sZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCBcImJvZHkmJi5saXN0JiZ1bFwiKTtcbmxldCBkID0gW107XG5cbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1dGl0bGUgPSBwYXJzZURvbUZvckh0bWwoaXQsIFwiYSYmVGV4dFwiKTtcbiAgICBsZXQgdXNlcmlhbCA9IHBhcnNlRG9tRm9ySHRtbChpdCwgXCJsaSYmZGF0YV9zaXplXCIpO1xuICAgIGxldCB1ID0gcGFyc2VEb20oaXQsIFwiYSYmaHJlZlwiLCBcImh0dHBzOi8vd3d3LmNvZGVsaWNlbmNlLmNuL1wiKTtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogdXRpdGxlLFxuICAgICAgICB1cmw6IHUsXG4gICAgICAgIGRlc2M6IHVzZXJpYWxcbiAgICB9KTtcbn1cblxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoibGV0IGhvc3Q9Z2V0SG9tZShpbnB1dCk7XG5sZXQgdXJscmVkPWhvc3QrcGRmaChyZXF1ZXN0KGlucHV0KSxcIi5kb3duJiZhJiZocmVmXCIpO1xuXG5sZXQgaGVhZGVycyA9IHtcbiAgICBcInNlYy1jaC11YVwiOiAnQ2hyb21pdW1cIjt2PVwiMTE4XCIsIFwiQW5kcm9pZCBXZWJWaWV3XCI7dj1cIjExOFwiLCBcIk5vdD1BP0JyYW5kXCI7dj1cIjk5XCInLFxuICAgIFwic2VjLWNoLXVhLW1vYmlsZVwiOiBcIj8xXCIsXG4gICAgXCJBY2NlcHRcIjogXCJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjdcIixcbiAgICBcIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHNcIjogXCIxIFwiLFxuICAgIFwic2VjLWNoLXVhLXBsYXRmb3JtXCI6IFwiQW5kcm9pZFwiLFxuICAgIFwiVXNlci1BZ2VudFwiOiBNT0JJTEVfVUEsXG4gICAgXCJIb3N0XCI6IGhvc3Quc3BsaXQoXCIvL1wiKVsxXSxcbiAgICBcIkNvbm5lY3Rpb25cIjogXCJLZWVwLUFsaXZlXCIsXG4gICAgXCJBY2NlcHQtRW5jb2RpbmdcIjogXCJnemlwXCIsXG4gICAgXCJSZWZlcmVyXCI6IHVybHJlZFxufVxuXG5cbmxldCB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJscmVkLCB7XG4gICAgaGVhZGVycyxcbiAgICByZWRpcmVjdDogZmFsc2UsXG4gICAgd2l0aEhlYWRlcnM6IHRydWVcbn0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xucmV0dXJuIHVybDsiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzE0NjQzMDk1NzU1LCJncm91cCI6Iue7vOWQiCIsImF1dGhvciI6IiIsInJ1bGVUeXBlIjoiIn0seyJuYW1lIjoi6L+Q6L6T6L2mIiwiZmluZCI6ImxldCB1cmwgPSBiYXNpY1VybCArIFwiL2luZGV4LnBocC92b2RzZWFyY2gvXCIgKyBzICsgXCItLS0tLS0tLS0tXCIgKyBwYWdlICsgXCItLS0uaHRtbFwiO1xubGV0IGh0bWwgPSByZXF1ZXN0KHVybCk7XG5sZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCBcIi5tb2R1bGUtaXRlbXMmJi5tb2R1bGUtc2VhcmNoLWl0ZW1cIik7XG5cbmxldCBiZXQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1dGl0bGUgPSBwZGZoKGl0LCBcImgzJiZhJiZUZXh0XCIpO1xuICAgIGxldCB1c2VyaWFsID0gcGRmaChpdCwgXCIudmlkZW8tc2VyaWFsJiZUZXh0XCIpO1xuICAgIGxldCB1aW1hZ2UgPSBwZGZoKGl0LCBcImltZyYmZGF0YS1zcmNcIik7XG4gICAgbGV0IHUgPSBwZChpdCwgXCJoMyYmYSYmaHJlZlwiLCBiYXNpY1VybCk7XG4gICAgYmV0LnB1c2goe1xuICAgICAgICB0aXRsZTogdXRpdGxlLFxuICAgICAgICB1cmw6IHUsXG4gICAgICAgIHBpY191cmw6IHVpbWFnZSxcbiAgICAgICAgZGVzYzogdXNlcmlhbFxuICAgIH0pO1xufVxuXG5yZXR1cm4gYmV0OyIsImJhc2ljVXJsIjoiaHR0cDovL3d3dy53ZWl4aW5lLm5ldCIsImZpbmRBbGlVcmwiOiJyZXR1cm4gcGRmYShyZXF1ZXN0KGlucHV0KSwgXCJib2R5JiYubW9kdWxlLXJvdy10ZXh0LmNvcHlcIikubWFwKHY9PnBkZmgodixcImEmJmRhdGEtY2xpcGJvYXJkLXRleHRcIikpOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTAzMzgwMzMzMjUsImdyb3VwIjoi57u85ZCIIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoiODjnvZHnm5jogZrlkIgiLCJmaW5kIjoibGV0IHJlcyA9IHJlcXVlc3QoYmFzaWNVcmwrXCIvYXBpL2dldF96eT9rZXl3b3JkPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpKTtcbnJlcyA9IEpTT04ucGFyc2UocmVzKTtcbnJldHVybiByZXMuZGF0YS5tYXAodiA9PiAoe1xuICAgIHRpdGxlOiB2LnRpdGxlLFxuICAgIGRlc2M6IHYudXJsLFxuICAgIHVybDogdi51cmxcbn0pKTsiLCJiYXNpY1VybCI6Imh0dHA6Ly93d3cuNjYyNjg4Lnh5eiIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjpmYWxzZSwibGFzdE1vZGlmeSI6MTcxMDMzODAyNTQ5OCwiZ3JvdXAiOiLnu7zlkIgiLCJhdXRob3IiOiJATG95RGdJayJ9LHsibmFtZSI6Ijk5OTXkupHnm5giLCJmaW5kIjoidmFyIHNlYXJjaFVybCA9IGJhc2ljVXJsICsgJy9zZWFyY2gucGhwP3E9JyArIGVuY29kZVVSSUNvbXBvbmVudChzKStcIiZwYWdlPVwiK3BhZ2U7XG52YXIgcmVzcCA9IHJlcXVlc3Qoc2VhcmNoVXJsKVxudmFyIGl0ZW1zID0gcGRmYShyZXNwLCBcIi5jb250ZW50JiYucG9zdFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgXCJoMiYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiBwZChpdGVtLCBcImEmJmhyZWZcIiwgYmFzaWNVcmwpLFxuICAgICAgICBkZXNjOiBcIuS4iuS8oOaXtumXtO+8mlwiK3BkZmgoaXRlbSwgXCIuZGF0ZSYmVGV4dFwiKStcIlxcbueugOS7i++8mlwiK3BkZmgoaXRlbSwgXCIuaW50cm8mJlRleHRcIilcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly85OTk1dC5jb20iLCJmaW5kQWxpVXJsIjoicmV0dXJuIHBkZmEocmVxdWVzdChpbnB1dCksIFwiLnBvc3Rjb24mJnA6aGFzKGEpJiZhXCIpLm1hcCgodik9PnBkZmgodiwgXCJhJiZocmVmXCIpKTsiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzEwMzM4MDE3MDY5LCJncm91cCI6Iue7vOWQiCIsImF1dGhvciI6IkBMb3lEZ0lrIn0seyJuYW1lIjoi5re35ZCI55uYIiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCB1cmwgPSBcImh0dHBzOi8vYXBpLmh1bmhlcGFuLmNvbS92MS9zZWFyY2hcIjtcbmxldCBqc29uID0gcG9zdCh1cmwsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFJlZmVyZXI6IFwiaHR0cHM6Ly9odW5oZXBhbi5jb20vXCJcbiAgICB9LFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgXCJxXCI6IHMsXG4gICAgICAgIFwicGFnZVwiOiBwYWdlLFxuICAgICAgICBcInNpemVcIjogMTVcbiAgICB9KVxufSk7XG5qc29uID0gSlNPTi5wYXJzZShqc29uKTtcbmxldCBsaXN0ID0ganNvbi5kYXRhLmxpc3Q7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gbGlzdFtpXTtcbiAgICBpZiAoaXQuZGlza190eXBlICE9PSAnQUxZJyAmJiBpdC5kaXNrX3R5cGUgIT09ICdRVUFSSycgfHwgaXQuc2hhcmVfdXNlciA9PT0gXCJcXHU0ZTM2KioqXFx1NGUzNlwiKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogaXQuZGlza19uYW1lLFxuICAgICAgICBwaWNfdXJsOiBwZChpdCwgXCJpbWcmJnNyY1wiLCB1cmwpLFxuICAgICAgICB1cmw6IGl0LmxpbmssXG4gICAgICAgIGRlc2M6IGl0LnVwZGF0ZV90aW1lICsgXCJcXG5cIiArIGl0LmxpbmtcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiIiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTAzMzg5OTU4ODAsImdyb3VwIjoi57u85ZCIIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLnjqnlgbbooajlk6UiLCJmaW5kIjoibGV0IHVybCA9IGJhc2ljVXJsICsgXCIvaW5kZXgucGhwL3ZvZC9zZWFyY2guaHRtbD93ZD1cIitlbmNvZGVVUklDb21wb25lbnQocykrXCImcGFnZT1cIitwYWdlXG5sZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcbmxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsIFwiLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1zZWFyY2gtaXRlbVwiKTtcblxubGV0IGJldCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXQgPSBhcnJbaV07XG4gICAgbGV0IHV0aXRsZSA9IHBkZmgoaXQsIFwiaDMmJmEmJlRleHRcIik7XG4gICAgbGV0IHVzZXJpYWwgPSBwZGZoKGl0LCBcIi52aWRlby1zZXJpYWwmJlRleHRcIik7XG4gICAgbGV0IHVpbWFnZSA9IHBkZmgoaXQsIFwiaW1nJiZkYXRhLXNyY1wiKS5yZXBsYWNlKFwiL2ltZy5waHA/dXJsPVwiLFwiXCIpO1xuICAgIGxldCB1ID0gcGQoaXQsIFwiaDMmJmEmJmhyZWZcIiwgYmFzaWNVcmwpO1xuICAgIGJldC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHV0aXRsZSxcbiAgICAgICAgdXJsOiB1LFxuICAgICAgICBwaWNfdXJsOiB1aW1hZ2UsXG4gICAgICAgIGRlc2M6IHVzZXJpYWxcbiAgICB9KTtcbn1cblxucmV0dXJuIGJldDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vd29iZ2UucnVuLmdvb3JtLmlvIiwiZmluZEFsaVVybCI6InJldHVybiBwZGZhKHJlcXVlc3QoaW5wdXQpLCBcImJvZHkmJi5tb2R1bGUtcm93LXRleHQuY29weVwiKS5tYXAodj0+cGRmaCh2LFwiYSYmZGF0YS1jbGlwYm9hcmQtdGV4dFwiKSk7IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMDMzODAwOTI3NywiZ3JvdXAiOiLnu7zlkIgiLCJhdXRob3IiOiJATG95RGdJayJ9LHsibmFtZSI6IuWwj+S6kSIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvYXBpL3ZhbGlkYXRlL3NlYXJjaD93ZD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiJm1vZGU9OTAwMDEmc3R5cGU9MjAxMDAmdWs9JnBhZ2U9XCIgKyBwYWdlICsgXCImbGltaXQ9MjAmc2NyZWVuX2ZpbGV0eXBlPXVuZGVmaW5lZFwiO1xubGV0IGpzb24gPSBwb3N0KGJhc2ljVXJsICsgYXBpLCB7XG4gICAgYm9keTogXCJkYXRhPVwiICsgYXBpLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgUmVmZXJlcjogXCJodHRwczovL3d3dy55dW5zby5uZXQvaW5kZXgvdXNlci9zP3dkPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpXG4gICAgfVxufSk7XG5cbmxldCBodG1sID0gSlNPTi5wYXJzZShqc29uKS5kYXRhO1xubGV0IGxpc3QgPSBwZGZhKGh0bWwsIFwiYm9keSYmLmxheXVpLWNhcmQ6aGFzKGJ1dHRvbilcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXRlbSBvZiBsaXN0KSB7XG4gICAgbGV0IHRpdGxlID0gcGRmaChpdGVtLCBcImEmJlRleHRcIikucmVwbGFjZShcIiNcXHU2NTg3XFx1NGVmNlxcdTU5MzkgXCIsIFwiXCIpO1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgdXJsOiBwZGZoKGl0ZW0sIFwiYSYmaWRcIiksXG4gICAgICAgIGRlc2M6IHBkZmgoaXRlbSwgXCIubGF5dWktY2FyZC1ib2R5JiZpbWcmJmFsdFwiKStcIsK3XCIrKHBkZmgoaXRlbSwgXCIubGF5dWktYmFkZ2UmJlRleHRcIil8fFwi5rC45LmFXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJmaW5kQWxpVXJsIjoibGV0IHVybCA9IGJ1aWxkVXJsKGJhc2ljVXJsK1wiL2FwaS92YWxpZGF0ZS9nZXR1cmxcIiwge1xuICAgIHI6IFN0cmluZyhuZXcgamF2YS51dGlsLlJhbmRvbSgpLm5leHRGbG9hdCgpKSxcbiAgICBxaWQ6IGlucHV0XG59KTtcbmxldCBqc29uID0gSlNPTi5wYXJzZShmZXRjaCh1cmwsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFJlZmVyZXI6IGJhc2ljVXJsLFxuICAgICAgICBDb29raWU6IFwiI25vQ29va2llI1wiXG4gICAgfVxufSkpO1xuaWYgKGpzb24uY29kZSA9PSAtMSkge1xuICAgIHJldHVybiBcInRvYXN0Oi8vXCIgKyBqc29uLm1zZztcbn0gZWxzZSB7XG4gICAgcmV0dXJuIGpzb24uZGF0YTtcbn0iLCJsYXN0TW9kaWZ5IjoxNzExMTc4ODYwOTE1LCJiYXNpY1VybCI6Imh0dHBzOi8vd3d3Lnl1bnNvLm5ldCIsImdyb3VwIjoi57u85ZCIIiwiYXV0aG9yIjoiQExveURnSWsiLCJydWxlVHlwZSI6InVuZGVmaW5lZCJ9LHsibmFtZSI6IuaHkumxvOeci+eciyIsImZpbmQiOiJ2YXIgc2VhcmNoVXJsID0gYmFzaWNVcmwgKyAnL3NlYXJjaD9rZXl3b3Jkcz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpO1xudmFyIHJlc3AgPSByZXF1ZXN0KHNlYXJjaFVybClcbnZhciBpdGVtcyA9IHBkZmEocmVzcCwgXCIucHktMTAmJmFcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXRlbSBvZiBpdGVtcykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGl0ZW0sXCIudGV4dC1jZW50ZXImJlRleHRcIiksXG4gICAgICAgIHVybDogcGQoaXRlbSxcImEmJmhyZWZcIiwgYmFzaWNVcmwpLFxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL2x5a2sudG9wIiwiZmluZEFsaVVybCI6ImxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7XG5cbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwidWwmJmFcIikubWFwKHYgPT4gcGRmaCh2LCBcImEmJmhyZWZcIikpLmZpbHRlcih2ID0+IHYuaW5jbHVkZXMoXCJhbGlwYW5cIikgfHwgdi5pbmNsdWRlcyhcInF1YXJrXCIpKTtcbmlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGlucHV0O1xufSBlbHNlIHtcbiAgICByZXR1cm4gYXJyO1xufSIsInBhZ2UiOmZhbHNlLCJsYXN0TW9kaWZ5IjoxNzEwMzM4MTU2NzMzLCJncm91cCI6Iue7vOWQiCIsImF1dGhvciI6IkBMb3lEZ0lrIn0seyJuYW1lIjoi5YWo572R55uY5pCc57SiIiwiZmluZCI6Ii8v5piv5ZCm5byA5ZCv5Y+q5pi+56S66Zi/6YeM6ZO+5o6lXG5sZXQgb25seUFsaSA9IGZhbHNlO1xuXG5jb25zdCBhbGl0ZXN0ID0gJC5yZXF1aXJlKFwiYWxpdGVzdFwiKTtcbmxldCBhcGlzID0gW1wiZ2V0SnV6aVwiLCBcImdldFRvcFwiLCBcImdldER5ZnhcIiwgXCJnZXRUVFpKQlwiLCBcImdldEdpcmxzXCIsIFwiZ2V0WGlhb3lcIiwgXCJnZXRHR2FuZ1wiXTtcbmxldCBmZXRjaFRhc2tzID0gYXBpcy5tYXAoKGFwaSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogYmFzaWNVcmwgKyBcIi92L2FwaS9cIiArIGFwaSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHMsXG4gICAgICAgICAgICAgICAgdG9rZW46IFwiaTY5XCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgICAgICB9XG4gICAgfVxufSk7XG5sZXQgcmVzcG9uc2VzID0gYmF0Y2hGZXRjaChmZXRjaFRhc2tzKTtcblxuXG5sZXQgZCA9IFtdO1xuXG5mb3IgKGxldCByZXMgb2YgcmVzcG9uc2VzKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKHJlcykubGlzdDtcbiAgICAgICAgZm9yIChsZXQgaXQgb2YgbGlzdCkge1xuICAgICAgICAgICAgbGV0IHVybHMgPSBpdC5hbnN3ZXIucmVwbGFjZSgvLio/6ZO+5o6l77yaLywgXCJcIikuc3BsaXQoXCJcXG5cIik7XG5cbiAgICAgICAgICAgIGZvciAobGV0IHVybCBvZiB1cmxzKSB7XG4gICAgICAgICAgICAgICAgbGV0IHIgPSB1cmwuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgIGlmIChvbmx5QWxpICYmICFhbGl0ZXN0LnRlc3QoclswXSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC5xdWVzdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogdXJsLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHJbMF0sXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUlkOiByLmxlbmd0aCA9PT0gMyA/IHJbMl0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9IGNhdGNoIChlKSB7XG5cbiAgICB9XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHA6Ly9ra2tra2RzLmNuIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOmZhbHNlLCJsYXN0TW9kaWZ5IjoxNzEwMzM4NzMyMTIwLCJncm91cCI6Iue7vOWQiCIsImF1dGhvciI6IkBMb3lEZ0lrIn0seyJuYW1lIjoi5pCc5pCcIiwiZmluZCI6ImxldCBkID0gW107XG5cbmxldCB1cmwgPSBcImh0dHBzOi8vd3d3LnNvMXN0LmNvbS9hcGkvdjEvc2VhcmNoL1wiICsgcyArIFwiL2FsbC9cIiArIHBhZ2UgKiAxMFxuXG5sZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcbmxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5pdGVtcztcbmZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpdCA9IGxpc3RbaV07XG4gICAgbGV0IHRpdGxlID0gaXQuZGV0YWlsO1xuICAgIGxldCBtdXJsID0gaXQuc2hhcmVfdXJsO1xuICAgIGxldCBzeiA9IGl0LnNpemU7XG4gICAgLy8kLmRhdGVGb3JtYXTmoLzlvI/ljJbml7bpl7RcbiAgICBsZXQgc2ogPSAkLmRhdGVGb3JtYXQobmV3IERhdGUoaXQuaW5zZXJ0X3RpbWUuc3BsaXQoXCIuXCIpWzBdK1wiWlwiKSwgXCJ5eXl5LU1NLWRkwqBISDptbTpzc1wiKTtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgIHVybDogbXVybCxcbiAgICAgICAgZGVzYzogc3ogKyAnXFx0JyArIHNqICsgJ1xcbicgKyBtdXJsXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6IiIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzEwMzM5MDQ4MDk0LCJncm91cCI6Iue7vOWQiCIsImF1dGhvciI6IiJ9LHsibmFtZSI6IllhUGFuIiwiZmluZCI6ImxldCBkID0gW107XG5sZXQgYWxpVXRpbCA9ICQucmVxdWlyZShcImFsaVV0aWxcIik7XG5sZXQgaHRtbCA9IGZldGNoKFwiaHR0cHM6Ly95YXBhbi5pby9hcGkvc2VhcmNoP2tleXdvcmQ9XCIgKyBzICsgXCImcGFnZV9udW09XCIgKyBwYWdlICsgXCImcGFnZV9zaXplPTIwJmNsaWVudF92ZXJzaW9uPTEuMS4wXCIpO1xuXG5sZXQgbGlzdCA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5yb3dzO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gbGlzdFtpXTtcbiAgICBsZXQgdGl0bGUgPSBpdC5maWxlX25hbWU7XG4gICAgbGV0IG11cmwgPSBpdC51cmw7XG4gICAgbGV0IHR5cGUgPSBpdC51cGRhdGVkX2F0O1xuICAgIGlmICh0aXRsZS5pbmNsdWRlcyhzKSkge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgZGVzYzogdHlwZSxcbiAgICAgICAgICAgIHVybDogbXVybFxuICAgICAgICB9KTtcbiAgICB9XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6IiIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzEwMzM5MDc1NjU3LCJncm91cCI6Iue7vOWQiCIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuearuearuiZvui1hOa6kCIsImZpbmQiOiJ2YXIgc2VhcmNoVXJsID0gYmFzaWNVcmwgKyAnL3BhZ2UvJytwYWdlKyc/cz0nK2VuY29kZVVSSUNvbXBvbmVudChzKTtcbnZhciByZXNwID0gcmVxdWVzdChzZWFyY2hVcmwpXG52YXIgaXRlbXMgPSBwZGZhKHJlc3AsIFwiYm9keSYmLmNvbC1tZC02XCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChpdGVtLCBcIi5lbnRyeS10aXRsZSYmVGV4dFwiKSxcbiAgICAgICAgcGljX3VybDogcGRmaChpdGVtLCBcIi5jb3ZlciYmc3R5bGVcIikubWF0Y2goL2h0dHBzPy4qP1xcLmpwZy8pWzBdK1wiQFJlZmVyZXI9XCIrYmFzaWNVcmwsXG4gICAgICAgIHVybDogcGRmaChpdGVtLCBcIi51LXBlcm1hbGluayYmaHJlZlwiKSxcbiAgICAgICAgZGVzYzogXCLkuIrkvKDml7bpl7TvvJpcIitwZGZoKGl0ZW0sIFwiLmVudHJ5LWFjdGlvbiYmVGV4dFwiKStcIlxcblwiK3BkZmgoaXRlbSwgXCIuZW50cnktY2F0ZWdvcnkmJlRleHRcIiksXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vcHB4enkubmV0IiwiZmluZEFsaVVybCI6ImxldCBsaXN0ID0gcGRmYShmZXRjaChpbnB1dCksIFwiYm9keSYmLmRsaXBwLWRsLWJ0blwiKTtcbmxldCBpZCA9IGlucHV0LnNwbGl0KCduZXQvJylbMV0uc3BsaXQoJy4nKVswXTtcbmxldCBhdXJsID0gSlNPTi5wYXJzZShwb3N0KFwiaHR0cHM6Ly9wcHh6eS5uZXQvd3AtYWRtaW4vYWRtaW4tYWpheC5waHBcIiwge1xuICAgIGJvZHk6IHtcbiAgICAgICAgYWN0aW9uOiBcIndiX2RsaXBwX2Zyb250XCIsXG4gICAgICAgIHBpZDogaWQsXG4gICAgICAgIHJpZDogXCJsb2NhbFwiLFxuICAgIH1cbn0pKS5kYXRhLnVybDtcbmxldCBrdXJsID0gSlNPTi5wYXJzZShwb3N0KFwiaHR0cHM6Ly9wcHh6eS5uZXQvd3AtYWRtaW4vYWRtaW4tYWpheC5waHBcIiwge1xuICAgIGJvZHk6IHtcbiAgICAgICAgYWN0aW9uOiBcIndiX2RsaXBwX2Zyb250XCIsXG4gICAgICAgIHBpZDogaWQsXG4gICAgICAgIHJpZDogXCJ4dW5sZWlcIixcbiAgICB9XG59KSkuZGF0YS51cmxcbnJldHVybiBuZXcgRWFzeU5leHRQYWdlKGxpc3QubWFwKHYgPT4ge1xuICAgIGxldCB0aXRsZSA9IHBkZmgodiwgXCJzcGFuJiZUZXh0XCIpO1xuICAgIGxldCB1cmwgPSAv6Zi/6YeMLy50ZXN0KHRpdGxlKSA/IGF1cmwgOiAv5aS45YWLLy50ZXN0KHRpdGxlKSA/IGt1cmwgOiBpbnB1dDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlVcmw6IHVybCxcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgIH07XG59KSwgXCJ0ZXh0XzFcIik7IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMDMzOTAxNDM4NywiZ3JvdXAiOiLnu7zlkIgiLCJhdXRob3IiOiIifSx7Im5hbWUiOiLlm6Lplb/otYTmupAiLCJmaW5kIjoidmFyIHNlYXJjaFVybCA9IGJhc2ljVXJsK1wiL3BhZ2UvXCIrcGFnZStcIj9zPVwiK2VuY29kZVVSSUNvbXBvbmVudChzKStcIiZ0eXBlPXBvc3RcIjtcbnZhciByZXNwID0gcmVxdWVzdChzZWFyY2hVcmwpXG52YXIgaXRlbXMgPSBwZGZhKHJlc3AsIFwiYm9keSYmLnBvc3QtbGlzdC1pdGVtXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChpdGVtLCBcImgyJiZUZXh0XCIpLFxuICAgICAgICBwaWNfdXJsOiBwZGZoKGl0ZW0sIFwiLmxhenkmJmRhdGEtc3JjXCIpLFxuICAgICAgICB1cmw6IHBkKGl0ZW0sIFwiYSYmaHJlZlwiLCBiYXNpY1VybCksXG4gICAgICAgIC8vZGVzYzogXCLkuIrkvKDml7bpl7TvvJpcIitwZGZoKGl0ZW0sIFwiLmRhdGUmJlRleHRcIikrXCJcXG7nroDku4vvvJpcIitwZGZoKGl0ZW0sIFwiLmludHJvJiZUZXh0XCIpLFxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL3QtcmV4LnR6ZmlsZS5jb20iLCJmaW5kQWxpVXJsIjoibGV0IGlkID0gaW5wdXQuc3BsaXQoJ2NvbS8nKVsxXS5zcGxpdCgnLicpWzBdO1xubGV0IGh0bWwgPSBmZXRjaChpbnB1dCk7XG5pZiAoaHRtbC5pbmNsdWRlcygnZG93bmxvYWQtYnV0dG9uLWJveCcpKSB7XG4gICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKHBvc3QoXCJodHRwczovL3QtcmV4LnR6ZmlsZS5jb20vd3AtanNvbi9iMi92MS9nZXREb3dubG9hZERhdGFcIiwge1xuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICBcInBvc3RfaWRcIjogaWRcbiAgICAgICAgfVxuICAgIH0pKVswXS5idXR0b25cbiAgICByZXR1cm4gbmV3IEVhc3lOZXh0UGFnZShsaXN0Lm1hcCh2ID0+IHtcbiAgICAgICAgbGV0IHRpdGxlID0gdi5uYW1lO1xuICAgICAgICBsZXQgbGluayA9IHYubGluaztcbiAgICAgICAgbGV0IGkgPSBsaW5rLnNwbGl0KCdpPScpWzFdXG4gICAgICAgIGxldCB0b2tlbiA9IEpTT04ucGFyc2UocG9zdChcImh0dHBzOi8vdC1yZXgudHpmaWxlLmNvbS93cC1qc29uL2IyL3YxL2dldERvd25sb2FkUGFnZURhdGFcIiwge1xuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIFwicG9zdF9pZFwiOiBpZCxcbiAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMFwiLFxuICAgICAgICAgICAgICAgIFwiaVwiOiBpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKS5idXR0b24udXJsXG4gICAgICAgIGxldCB1cmwgPSByZXF1ZXN0KFwiaHR0cHM6Ly90LXJleC50emZpbGUuY29tL3JlZGlyZWN0P3Rva2VuPVwiICsgdG9rZW4pLm1hdGNoKC8oaHR0cHM6XFwvXFwvLiopW1wiXS8pWzFdXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbGlVcmw6IHVybCxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgfTtcbiAgICB9KSwgXCJ0ZXh0XzFcIik7XG59IGVsc2Uge1xuICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCBcIi5lbnRyeS1jb250ZW50JiZwOmhhcyhhKVwiKVxuICAgIHJldHVybiBuZXcgRWFzeU5leHRQYWdlKGxpc3QubWFwKHYgPT4ge1xuICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKHYsIFwicCYmVGV4dFwiKTtcbiAgICAgICAgbGV0IHVybCA9IHBkZmgodiwgXCJhJiZocmVmXCIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWxpVXJsOiB1cmwsXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgIH07XG4gICAgfSksIFwidGV4dF8xXCIpO1xufSIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTAzMzkwMTAwNTYsImdyb3VwIjoi57u85ZCIIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi5b2x5pCcIiwiYXV0aG9yIjoiTWlrZSIsImZpbmQiOiJsZXQgYXBpID0gYmFzaWNVcmwgKyBcIi92My9hbGkvc2VhcmNoXCI7XG4vL2xvZyhhcGkpXG5sZXQgcmVzID0gcG9zdChhcGksIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiVXNlci1BZ2VudFwiOiBNT0JJTEVfVUEsXG4gICAgICAgIFwiUmVmZXJlclwiOiAnaHR0cHM6Ly95aW5nc28uZnVuLycsXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ09yaWdpbic6ICdodHRwczovL3lpbmdzby5mdW4nLFxuICAgICAgICAnQWNjZXB0JzogJyovKicsXG4gICAgICAgICdIb3N0JzogJ3lzLmFwaS55aW5nc28uZnVuJyxcbiAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICd6aC1DTix6aDtxPTAuOSxlbi1HQjtxPTAuOCxlbi1VUztxPTAuNyxlbjtxPTAuNidcbiAgICB9LFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgXCJwYWdlTnVtXCI6IDEsXG4gICAgICAgIFwicGFnZVNpemVcIjogMzAsXG4gICAgICAgIFwidGl0bGVcIjogcyxcbiAgICAgICAgXCJyb290XCI6IDAsXG4gICAgICAgIFwiY2F0XCI6IFwiYWxsXCJcbiAgICB9KVxufSk7XG5cbnJlcyA9IEpTT04ucGFyc2UocmVzKVxucmV0dXJuIHJlcy5kYXRhLmZpbHRlcih2ID0+IHYucm9vdCA9PSAxIHx8IHYucm9vdCA9PSAyKS5tYXAodiA9PiAoe1xuICAgIHRpdGxlOiB2LnRpdGxlLFxuICAgIGRlc2M6IHYucm9vdCA9PSAxID8gJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyB2LmtleSA6ICdodHRwczovL3Bhbi5xdWFyay5jbi9zLycgKyB2LmtleSxcbiAgICB1cmw6IHYucm9vdCA9PSAxID8gJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyB2LmtleSA6ICdodHRwczovL3Bhbi5xdWFyay5jbi9zLycgKyB2LmtleVxufSkpOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly95cy5hcGkueWluZ3NvLmZ1biIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzE0NjE3NzU2NDY0LCJncm91cCI6Iue7vOWQiCIsInJ1bGVUeXBlIjoiIn0seyJuYW1lIjoi546p5L2g6ICB5ZOlIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoiLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1zZWFyY2gtaXRlbVxuaDMmJmEmJlRleHRcbmgzJiZhJiZocmVmXG4udmlkZW8tc2VyaWFsJiZUZXh0XG5pbWcmJmRhdGEtc3JjQGpzPWlucHV0LnJlcGxhY2UoXCIvaW1nLnBocD91cmw9XCIsXCJcIik7XG4iLCJiYXNpY1VybCI6Imh0dHBzOi8vdHYueXlkc3lzLnRvcC9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sIiwiZmluZEFsaVVybCI6IkBqcz0gcGRmYShyZXF1ZXN0KGlucHV0KSwgXCJib2R5JiYubW9kdWxlLXJvdy10ZXh0LmNvcHlcIikubWFwKHY9PnBkZmgodixcImEmJmRhdGEtY2xpcGJvYXJkLXRleHRcIikpOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTE1MzIyMzYyMDgsImdyb3VwIjoi6Zi/6YeMIiwicnVsZVR5cGUiOiJIVE1MIn0seyJuYW1lIjoi5Zyf6LGG6Zi/6YeM6LWE5rqQ56uZIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoiLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1zZWFyY2gtaXRlbVxuaDMmJlRleHRcbi52aWRlby1pbmZvLWZvb3RlciYmYSYmaHJlZlxuLnZpZGVvLWluZm8mJlRleHRcbmltZyYmZGF0YS1zcmMiLCJiYXNpY1VybCI6Imh0dHBzOi8vdHVkb3UubHZkb3VpLnRvcC9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sIiwiZmluZEFsaVVybCI6Ii5idG4tcGMuYnRuLWRvd24mJmhyZWYiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzExNDM4MTkxMDU0LCJncm91cCI6IumYv+mHjCIsInJ1bGVUeXBlIjoiSFRNTCJ9LHsibmFtZSI6IlNTR08iLCJhdXRob3IiOiJATG95RGdJayIsImZpbmQiOiJsZXQgZCA9IFtdO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgXCI/cXVlcnk9XCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIiZwYWdlPVwiICsgcGFnZSk7XG5sZXQganNvbiA9IEpTT04ucGFyc2UocGRmaChodG1sLCBcIiNfX05VWFRfREFUQV9fJiZIdG1sXCIpKTtcbmxldCBsaXN0ID0gW107XG5qc29uLmZvckVhY2godiA9PiB7XG4gICAgaWYgKCQudHlwZSh2KSA9PT0gXCJvYmplY3RcIiAmJiB2Lmhhc093blByb3BlcnR5KFwidGl0bGVcIikpIGxpc3QucHVzaCh2KTtcbn0pO1xuXG5mb3IgKGxldCBpdCBvZiBsaXN0KSB7XG4gICAgbGV0IHVybCA9IGpzb25baXQucGFuX3VybF07XG4gICAgaWYgKCF1cmwuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcbiAgICAgICAgdXJsID0gXCJodHRwczovL3d3dy5cIiArIHVybDtcbiAgICB9XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGpzb25baXQudGl0bGVdLFxuICAgICAgICBkZXNjOiB1cmwsXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBzaGFyZVB3ZDogU3RyaW5nKGpzb25baXQuZXh0cmFjdF9jb2RlXSkucmVwbGFjZSgv5o+Q5Y+W56CBOiA/LywgXCJcIiksXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vc3Nnby5hcHAiLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMTE5Nzg3NTUzNCwiZ3JvdXAiOiLpmL/ph4wiLCJydWxlVHlwZSI6IiJ9LHsibmFtZSI6IueMq+eLuOebmOaQnCIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgaHRtbCA9IHJlcXVlc3QoYmFzaWNVcmwgKyBcIi9zZWFyY2g/cGFnZT1cIiArIHBhZ2UgKyBcIiZrPVwiICsgcyArIFwiJnM9MCZ0PS0xXCIsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiUmVmZXJlclwiOiBiYXNpY1VybCArIFwiL3NlYXJjaD9rPVwiICsgc1xuICAgIH1cbn0pO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCIjYXBwJiZhLDI6MTJcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXQgPSBcIjxkaXY+XCIgKyBhcnJbaV0gKyBcIjwvZGl2PlwiO1xuICAgIGxldCB1ID0gcGQoaXQsIFwiYSYmaHJlZlwiLCBiYXNpY1VybClcbiAgICBpZiAoIXUuaW5jbHVkZXMoXCIvcy9cIikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh1LnN0YXJ0c1dpdGgoYmFzaWNVcmwpKSB7XG4gICAgICAgIHUgPSB1LnJlcGxhY2UoXCIvcy9cIiwgXCIvY3YvXCIpO1xuICAgIH1cbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChpdCwgXCJ0ZW1wbGF0ZSYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiB1LFxuICAgICAgICBkZXNjOiBwZGZoKGl0LCBcInRlbXBsYXRlLDEmJlRleHRcIilcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImZpbmRBbGlVcmwiOiJsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29va2llXCI6IFwiSG1fbHZ0XzAyZjY5ZTBiYTY3M2UzMjhlZjQ5YjVmYjk4ZGQ0NjAxPTE3MDkyMTk3MzI7IF9nYT1HQTEuMS4xNTM0OTEzMzYwLjE3MDkyMTk3MzI7IGN0b19idW5kbGU9X1RDRDRGOTRRWG9sTWtadmNsRm9hR2RIUVhkWVpGaHdhbmQwYlVadmVYTXliRlZyZFZkVWFVNXNlRlpxYXpKamFVMUthbk5CZVU5UWJEZDNWMVpzZFdKcE5YY3hSRWxYYVhCVGFERTFkMk5KYlROM1dubFJRbGhoVmtKd1JVRlZXV05KVkdwUVEyUlZTbHBFY2xRMUpUSkNVSG93ZDFsT1dXZFRSR1JNUm5WVFQyaGhSa0pWV2xwS2FEWWxNa0pUT1hCVFdYbE1kRTFrYUZkMWNsRjJOVUVsTTBRbE0wUTsgX2VnZz02YmY1MzBmZjMyN2E0MmM2OWI3MDNlYThkZWQ4NzIyYWU7IF9fZ2Fkcz1JRD1jOGYxMjAzNThlOGRjYmEzOlQ9MTcwOTIxOTczMzpSVD0xNzA5MjIxNzQyOlM9QUxOSV9NYjJ5YTBBb011OUNsQlRLQ0lQWTRkUUI3YXg5UTsgX19ncGk9VUlEPTAwMDAwZDIwNjUzYTJkMmU6VD0xNzA5MjE5NzMzOlJUPTE3MDkyMjE3NDI6Uz1BTE5JX01ia3BWbmRWdTduNnNoQy1rX183eXd2cThURnJROyBfX2VvaT1JRD04MjJlZWQ3ZGIyZmJmZGRjOlQ9MTcwOTIxOTczMzpSVD0xNzA5MjIxNzQyOlM9QUEtQWZqYTZhMEw5a2h5V2NiUEtTRGI0Y0U3XzsgbXlzZXNzaW9uPU1UY3dPVEl5TVRnNU9YeEVkaTFDUWtGRlExODBTVUZCVWtGQ1JVRkJRVXBmTFVOQlFVVkhZek5TZVdGWE5XNUVRWGRCUTI1T2JGbFlTbXBoUmpseVdsaHJSMk16VW5saFZ6VnVSRUZWUVVFdFlVbHJVVDA5Zk11U2Roc1pmbXI0eGlTZEFGUEk2OXJ4cDZuNkVMR0tUSjVCWkFoa1RvaEU7IF9nYV9OWU5DNzkxQlAyPUdTMS4xLjE3MDkyMTk3MzEuMS4xLjE3MDkyMjE5MDMuMC4wLjA7IF9nYV8wQjJORkM3WjA5PUdTMS4xLjE3MDkyMTk3MzEuMS4xLjE3MDkyMjE5MDMuNTYuMC4wOyBIbV9scHZ0XzAyZjY5ZTBiYTY3M2UzMjhlZjQ5YjVmYjk4ZGQ0NjAxPTE3MDkyMjE5MDQ7IF9iaWQ9OTc2MDExZDc3MzU3MTMwOWY3OGNlYzQ3ZjZiMDkwYmZcIixcbiAgICAgICAgXCJSZWZlcmVyXCI6IGlucHV0LnJlcGxhY2UoXCIvY3YvXCIsIFwiL3MvXCIpXG4gICAgfSxcbiAgICByZWRpcmVjdDogZmFsc2Vcbn0pO1xuaHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCBcImEmJmhyZWZcIik7XG5pZiAoaHRtbC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGh0bWw7XG59IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dDtcbn0iLCJiYXNpY1VybCI6Imh0dHBzOi8vd3d3LmFsaXBhbnNvdS5jb20iLCJsYXN0TW9kaWZ5IjoxNzE0NjE3NzY3MDQ0LCJncm91cCI6IumYv+mHjCIsImF1dGhvciI6IkBMb3lEZ0lrIiwicnVsZVR5cGUiOiIifSx7Im5hbWUiOiLnjqnlgbblk6Xlk6UiLCJmaW5kIjoiLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1zZWFyY2gtaXRlbVxuaDMmJmEmJlRleHRcbmgzJiZhJiZocmVmXG4udmlkZW8tc2VyaWFsJiZUZXh0XG5pbWcmJmRhdGEtc3JjQGpzPWlucHV0LnJlcGxhY2UoXCIvaW1nLnBocD91cmw9XCIsXCJcIik7XG4iLCJiYXNpY1VybCI6Imh0dHA6Ly93b2dnLnh5ei9pbmRleC5waHAvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sIiwiZmluZEFsaVVybCI6IkBqcz0gcGRmYShyZXF1ZXN0KGlucHV0KSwgXCJib2R5JiYubW9kdWxlLXJvdy10ZXh0LmNvcHlcIikubWFwKHY9PnBkZmgodixcImEmJmRhdGEtY2xpcGJvYXJkLXRleHRcIikpOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTExNzc2NzEwNjksImdyb3VwIjoi6Zi/6YeMIiwiYXV0aG9yIjoiQExveURnSWsiLCJydWxlVHlwZSI6IkhUTUwifSx7Im5hbWUiOiLlsI/nurjmnaEiLCJwYWdlIjpmYWxzZSwiZmluZCI6ImxldCBhbGlVdGlsID0gJC5yZXF1aXJlKFwiYWxpVXRpbFwiKTtcblxuZnVuY3Rpb24gZ2V0dG9rZW4oKSB7XG4gICAgaWYgKGdldE15VmFyKFwieHp5dG9rZW5cIiwgXCJcIikubGVuZ3RoID09IDApIHtcbiAgICAgICAgbGV0IHRva2VuID0gSlNPTi5wYXJzZShwb3N0KFwiaHR0cHM6Ly9naXRjYWZlLm5ldC90b29sL2FsaXBhcGVyL1wiLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgXCJSZWZlcmVyXCI6IFwiaHR0cHM6Ly91LmdpdGNhZmUuaW5rL1wiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogXCJnZXRfdG9rZW5cIlxuICAgICAgICAgICAgfVxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgcHV0TXlWYXIoXCJ4enR0b2tlblwiLCB0b2tlbik7XG4gICAgfVxuICAgIHJldHVybiBnZXRNeVZhcihcInh6dHRva2VuXCIsIFwiXCIpO1xufVxuXG5mdW5jdGlvbiBjYXRfY29kZShhKSB7XG4gICAgdmFyIGQsIGUsIGIgPSBbXCJcXHU1MzRlXFx1OGJlZFxcdTc1MzVcXHU4OWM2XCIsIFwiXFx1NjVlNVxcdTk3ZTlcXHU3NTM1XFx1ODljNlwiLCBcIlxcdTZiMjdcXHU3ZjhlXFx1NzUzNVxcdTg5YzZcIiwgXCJcXHU1MTc2XFx1NGVkNlxcdTc1MzVcXHU4OWM2XCIsIFwiXFx1NTM0ZVxcdThiZWRcXHU3NTM1XFx1NWY3MVwiLCBcIlxcdTY1ZTVcXHU5N2U5XFx1NzUzNVxcdTVmNzFcIiwgXCJcXHU2YjI3XFx1N2Y4ZVxcdTc1MzVcXHU1ZjcxXCIsIFwiXFx1NTE3NlxcdTRlZDZcXHU3NTM1XFx1NWY3MVwiLCBcIlxcdTUzNGVcXHU4YmVkXFx1NTJhOFxcdTZmMmJcIiwgXCJcXHU2NWU1XFx1OTdlOVxcdTUyYThcXHU2ZjJiXCIsIFwiXFx1NmIyN1xcdTdmOGVcXHU1MmE4XFx1NmYyYlwiLCBcIlxcdTdlYWFcXHU1ZjU1XFx1NzI0N1wiLCBcIlxcdTdlZmNcXHU4MjdhXFx1NzI0N1wiLCBcIlxcdTY1NTlcXHU4MGIyXFx1NTdmOVxcdThiYWRcIiwgXCJcXHU1MTc2XFx1NGVkNlxcdTg5YzZcXHU5ODkxXCIsIFwiXFx1NTM0ZVxcdThiZWRcXHU5N2YzXFx1NGU1MFwiLCBcIlxcdTY1ZTVcXHU5N2U5XFx1OTdmM1xcdTRlNTBcIiwgXCJcXHU2YjI3XFx1N2Y4ZVxcdTk3ZjNcXHU0ZTUwXCIsIFwiXFx1NTE3NlxcdTRlZDZcXHU5N2YzXFx1NGU1MFwiLCBcIlxcdTVhMzFcXHU0ZTUwXFx1OGY2ZlxcdTRlZjZcIiwgXCJcXHU3Y2ZiXFx1N2VkZlxcdThmNmZcXHU0ZWY2XCIsIFwiXFx1N2Y1MVxcdTdlZGNcXHU4ZjZmXFx1NGVmNlwiLCBcIlxcdTUyOWVcXHU1MTZjXFx1OGY2ZlxcdTRlZjZcIiwgXCJcXHU1MTc2XFx1NGVkNlxcdThmNmZcXHU0ZWY2XCIsIFwiXFx1NmYyYlxcdTc1M2JcIiwgXCJcXHU1YzBmXFx1OGJmNFwiLCBcIlxcdTUxZmFcXHU3MjQ4XFx1NGU2NlwiLCBcIlxcdTc3ZTVcXHU4YmM2XFx1NTdmOVxcdThiYWRcIiwgXCJcXHU1MTc2XFx1NGVkNlxcdTY1ODdcXHU2ODYzXCIsIFwiXFx1NThjMVxcdTdlYjhcIiwgXCJcXHU0ZWJhXFx1NzI2OVwiLCBcIlxcdTk4Y2VcXHU2NjZmXCIsIFwiXFx1NTE3NlxcdTRlZDZcXHU1NmZlXFx1NzI0N1wiLCBcIlxcdTUxNzZcXHU0ZWQ2XCJdLFxuICAgICAgICBjID0gW1wiaHlkc1wiLCBcInJoZHNcIiwgXCJvbWRzXCIsIFwicXRkc1wiLCBcImh5ZHlcIiwgXCJyaGR5XCIsIFwib21keVwiLCBcInF0ZHlcIiwgXCJoeWRtXCIsIFwicmhkbVwiLCBcIm9tZG1cIiwgXCJqbHBcIiwgXCJ6eXBcIiwgXCJqeXB4XCIsIFwicXRzcFwiLCBcImh5eXlcIiwgXCJyaHl5XCIsIFwib215eVwiLCBcInF0eXlcIiwgXCJrZnJqXCIsIFwieHRyalwiLCBcIndscmpcIiwgXCJiZ3JqXCIsIFwicXRyalwiLCBcIm1oXCIsIFwieHNcIiwgXCJjYnNcIiwgXCJ6c3B4XCIsIFwicXR3ZFwiLCBcImJ6XCIsIFwicndcIiwgXCJmalwiLCBcInF0dHBcIiwgXCJxdFwiXTtcbiAgICBmb3IgKGQgPSAwLCBlID0gYy5sZW5ndGg7IGUgPiBkOyBkKyspIHtcbiAgICAgICAgaWYgKGNbZF0gPT0gYSkge1xuICAgICAgICAgICAgcmV0dXJuIGJbZF07XG4gICAgICAgIH1cbiAgICB9XG59XG5sZXQgZCA9IFtdO1xubGV0IGh0bWwgPSBwb3N0KFwiaHR0cHM6Ly9naXRjYWZlLm5ldC90b29sL2FsaXBhcGVyL1wiLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBcIlJlZmVyZXJcIjogXCJodHRwczovL3UuZ2l0Y2FmZS5pbmsvXCJcbiAgICB9LFxuICAgIGJvZHk6IHtcbiAgICAgICAgYWN0aW9uOiBcInNlYXJjaFwiLFxuICAgICAgICBmcm9tOiBcIndlYlwiLFxuICAgICAgICB0b2tlbjogZ2V0dG9rZW4oKSxcbiAgICAgICAga2V5d29yZDogc1xuICAgIH1cbn0pO1xubGV0IGxpc3QgPSBKU09OLnBhcnNlKGh0bWwpO1xuaWYgKGxpc3QuZGF0YSkge1xuICAgIGxpc3QgPSBsaXN0LmRhdGE7XG59XG5mb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXQgPSBsaXN0W2ldO1xuICAgIGxldCB0aXRsZSA9IGl0LnRpdGxlO1xuICAgIGxldCBtdXJsID0gXCJodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy9cIiArIGl0LmFsaWtleTtcbiAgICBpZiAoIWFsaVV0aWwuY2hlY2thbGkobXVybCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh0aXRsZS5pbmNsdWRlcyhzKSkge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IFwiXFx1MjIxYSBcIiArIHRpdGxlLFxuICAgICAgICAgICAgZGVzYzogY2F0X2NvZGUoaXQuY2F0KSxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgZGVzOiBpdC5kZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cmw6IG11cmxcbiAgICAgICAgfSk7XG4gICAgfVxufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoiIiwibGFzdE1vZGlmeSI6MTcwNjQyNzY1ODgxNywiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLnmq7ljaEiLCJmaW5kIjoibGV0IGh0bWwgPSByZXF1ZXN0KGJ1aWxkVXJsKGJhc2ljVXJsICsgXCIvc2VhcmNoL1wiLCB7XG4gICAgcGFuOiBcImFsaXl1bmRyaXZlXCIsXG4gICAgcTogZW5jb2RlVVJJQ29tcG9uZW50KHMpLFxuICAgIHBhZ2U6IHBhZ2Vcbn0pKTtcbmxldCBsaXN0ID0gcGRmYShodG1sLCBcImJvZHkmJi5zZWFyY2gtaXRlbTpoYXMoaSlcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXQgb2YgbGlzdCkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGl0LCBcImEmJlRleHRcIiksXG4gICAgICAgIHVybDogcGRmaChpdCwgXCJhJiZocmVmXCIpLFxuICAgICAgICBkZXNjOiBwZGZoKGl0LCBcIi5zZWFyY2gtZmlsZS1kZXMmJmEmJmhyZWZcIiksXG4gICAgfSk7XG59XG5cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly93d3cucGlrYXNvLnRvcCIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzEwMzM3NzQ0NTUyLCJncm91cCI6IumYv+mHjCIsImF1dGhvciI6IkBMb3lEZ0lrIn0seyJuYW1lIjoi55uY5Y+L5ZyIIiwiZmluZCI6ImxldCBhbGlVdGlsID0gJC5yZXF1aXJlKFwiYWxpVXRpbFwiKTtcbi8v6K+35LiN6KaB55u05o6l55So5rW36ZiU55qEZXZhbChnZXRDcnlwdG9KUygpKe+8jOi/m+ihjOaJuemHj+aQnOe0oueahOaXtuWAmeS8mumHjeWkjeWKoOi9veWvvOiHtOaAp+iDvea1qui0uVxubGV0IENyeXB0b0pTID0gYWxpVXRpbC5nZXRDcnlwdG9KUygpO1xuXG5mdW5jdGlvbiBBRVNFbmNyeXB0KGUpIHtcbiAgICBsZXQgbiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFwiUWI4dVRYOTh5RGU0OWZOTFwiKSxcbiAgICAgICAgaSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFwiZ1oyUEVQVGhyV0dlV01FOVwiKTtcblxuICAgIGxldCBsID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoZSk7XG4gICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KGwsIG4sIHtcbiAgICAgICAgaXY6IGksXG4gICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcbiAgICB9KS5jaXBoZXJ0ZXh0LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxufVxubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgXCIvc2VhcmNoL1wiICsgQUVTRW5jcnlwdChcImFsaXxcIiArIHMgKyBcInxcIiArIHBhZ2UpKTtcbi8vbG9nKGh0bWwpO1xubGV0IHNpZ24gPSBodG1sLm1hdGNoKC9cInNpZ25cXFxcXCI6XFxcXFwiKC4qPylcXFxcXCIvKVsxXTtcblxubGV0IGpzb24gPSByZXF1ZXN0KGJhc2ljVXJsICsgXCIvYXBpL3NlYXJjaD9zaWduPVwiICsgc2lnbik7XG5sZXQgbGlzdCA9IEpTT04ucGFyc2UoanNvbikuZGF0YS5oaXRzO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGl0IG9mIGxpc3QpIHtcbiAgICAvL+WGhee9ruW3peWFt++8jOWMuemFjeaWh+acrOS4reeahOmYv+mHjOmTvuaOpe+8jOesrOS6jOS4quWPguaVsOWmguaenOaYr3RydWXkvJrljLnphY3lpJrkuKpcbiAgICBsZXQgdXJsID0gYWxpVXRpbC5tYXRjaEFsaVVybChpdC5kZXNjKTtcbiAgICBpZiAoIXVybCkgYnJlYWs7XG4gICAgbGV0IHRpdGxlID0gaXQuZGVzYy5tYXRjaCgvKOWQjeensO+8mnzil47niYfjgIDjgIDlkI1cXHMqPykoLio/KVxcbi8pO1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiAodGl0bGUgJiYgdGl0bGVbMl0pIHx8IHMsXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBwaWNfdXJsOiBcImh0dHBzOi8vcGFueXEuY29tL19uZXh0L2ltYWdlP3VybD1odHRwcyUzQSUyRiUyRnBhbnlxLmRpZzc3LmNvbSUyRmZpbGUlMkZwYW55cS1pbWFnZXMlMkZcIiArIGVuY29kZVVSSUNvbXBvbmVudChpdC5pbWFnZSkgKyBcIiZ3PTY0MCZxPTc1XCIsXG4gICAgICAgIGRlc2M6IHVybFxuICAgIH0pO1xufVxuXG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vcGFueXEuY29tIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTAzMzc3NTM2OTQsImdyb3VwIjoi6Zi/6YeMIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLlrabpnLjnvZHnm5giLCJmaW5kIjoibGV0IHVybCA9IGJhc2ljVXJsICsgKHBhZ2U+MT9cIi9wYWdlL1wiK3BhZ2U6XCJcIikrXCI/Y2F0JnM9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHMpO1xubGV0IGh0bWwgPSByZXF1ZXN0KHVybCk7XG5sZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCBcIi5wb3N0cy13YXJwJiYuY29sXCIpO1xuXG5sZXQgYmV0ID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpdCA9IGFycltpXTtcbiAgICBsZXQgdXRpdGxlID0gcGRmaChpdCwgXCJoMiYmVGV4dFwiKTtcbiAgICBsZXQgdXNlcmlhbCA9IHBkZmgoaXQsIFwiLnB1Yi1kYXRlJiZUZXh0XCIpO1xuICAgIGxldCB1aW1hZ2UgPSBwZGZoKGl0LCBcImEmJmRhdGEtYmdcIik7XG4gICAgbGV0IHUgPSBwZChpdCwgXCJhJiZocmVmXCIsIGJhc2ljVXJsKTtcbiAgICBiZXQucHVzaCh7XG4gICAgICAgIHRpdGxlOiB1dGl0bGUsXG4gICAgICAgIHVybDogdSxcbiAgICAgICAgcGljX3VybDogdWltYWdlLFxuICAgICAgICBkZXNjOiB1c2VyaWFsXG4gICAgfSk7XG59XG5cbnJldHVybiBiZXQ7IiwiYmFzaWNVcmwiOiJodHRwczovL3d3dy54YndweXMuY29tIiwiZmluZEFsaVVybCI6InJldHVybiAkLnJlcXVpcmUoXCJhbGlVdGlsXCIpLm1hdGNoQWxpVXJsKHBkZmgoZmV0Y2goaW5wdXQpLFwiYm9keSYmLnBvc3QtY29udGVudCYmSHRtbFwiKSl8fGlucHV0OyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTAzMzg3MTQ0NjQsImdyb3VwIjoi6Zi/6YeMIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLnm5jku5bkuIDkuIsiLCJmaW5kIjoidmFyIHJlc3AgPSByZXF1ZXN0KGJ1aWxkVXJsKGJhc2ljVXJsICsgXCIvYXBpL3NlYXJjaFwiLCB7XG4gICAgc2VydmVyOiBcImFsaVwiLFxuICAgIHRpbWU6IFwiYWxsXCIsXG4gICAgY2F0ZWdvcnk6IFwiYWxsXCIsXG4gICAgZmlsdGVyOiBcImV4YWN0XCIsXG4gICAgc29ydDogXCJkZXNjXCIsXG4gICAga2V5d29yZDogZW5jb2RlVVJJQ29tcG9uZW50KHMpLFxuICAgIHBhZ2U6IHBhZ2Vcbn0pKTtcbnZhciBpdGVtcyA9IEpTT04ucGFyc2UocmVzcCkuZGF0YTtcbmxldCBkID0gW107XG5sZXQgYWxpVXRpbCA9ICQucmVxdWlyZShcImFsaVV0aWxcIik7XG5mb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgIHVybDogYmFzaWNVcmwgKyBpdGVtLmxpbmsrXCIjXCIrdXNlci5leHRyYSxcbiAgICAgICAgZGVzYzogXCLml7bpl7Q6XCIgKyAkLmRhdGVGb3JtYXQoKE51bWJlcihpdGVtLnN0aW1lKSB8fCAwKSAqIDEwMDAsIFwieXl5eS1NTS1kZMKgSEg6bW06c3NcIikgKyBcIiDlpKflsI86XCIgKyBhbGlVdGlsLmJ5dGVzVG9TaXplKGl0ZW0uc2l6ZSlcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9wYW5vdGhlcnMuY29tIiwiZmluZEFsaVVybCI6ImlucHV0ID0gaW5wdXQuc3BsaXQoXCIjXCIpO1xubGV0IGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXRbMF0ucmVwbGFjZShcIi9yZXNvdXJjZS9cIiwgXCIvYXBpL3Jlc291cmNlcy9cIiksIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIHJlZmVyZXI6IGlucHV0WzBdLFxuICAgICAgICBhdXRob3JpemF0aW9uOiBcIkJlYXJlciBcIiArIGlucHV0WzFdXG4gICAgfVxufSkpO1xucmV0dXJuIFwiaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvXCIranNvbi5kYXRhLmxpbms7XG4iLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzEwMzM3NzcwMzU3LCJyZWdpc3RlclVybCI6Imh0dHBzOi8vcGFub3RoZXJzLmNvbS9sb2dpbiIsImdyb3VwIjoi6Zi/6YeMIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLkupHnm5jliIbkuqvnpL7ljLoiLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IGhvbWUgPSBcImh0dHBzOi8veXVucGFuMS5jY1wiO1xubGV0IGQgPSBbXTtcbmxldCBodG1sID0gcmVxdWVzdChidWlsZFVybChob21lICsgXCIvYXBpL2Rpc2N1c3Npb25zXCIsIHtcbiAgICBcImluY2x1ZGVcIjogXCJ1c2VyLGxhc3RQb3N0ZWRVc2VyLG1vc3RSZWxldmFudFBvc3QsbW9zdFJlbGV2YW50UG9zdC51c2VyLHRhZ3MsdGFncy5wYXJlbnQsZmlyc3RQb3N0XCIsXG4gICAgXCJmaWx0ZXJbcV1cIjogcyxcbiAgICBcInBhZ2Vbb2Zmc2V0XVwiOiAyMCAqIChwYWdlIC0gMSlcbn0pLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgXCJSZWZlcmVyXCI6IFwiaHR0cHM6Ly9wYW42NjYubmV0Lz9xPVwiICsgc1xuICAgIH1cbn0pO1xubGV0IGxpc3QgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGE7XG5mb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXRlbSA9IGxpc3RbaV0uYXR0cmlidXRlcztcbiAgICBsZXQgdXJsID0gaG9tZSArIFwiL2QvXCIgKyBpdGVtLnNsdWc7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgIGRlc2M6IFwiXFx1NTNkMVxcdTVlMDNcXHU2NWY2XFx1OTVmNFxcdWZmMWFcIiArICQuZGF0ZUZvcm1hdChuZXcgRGF0ZShpdGVtLmNyZWF0ZWRBdCksIFwieXl5eS1NTS1kZCBISDptbTpzc1wiKSxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiXFx1OGZkYlxcdTUxNjVcXHU1ZTE2XFx1NWI1MFwiLFxuICAgICAgICAgICAgICAgIGpzOiBKU09OLnN0cmluZ2lmeShcImhpa2VyOi8vcGFnZS95c2Z4P3dlYlVybD1cIiArIGVuY29kZVVSSUNvbXBvbmVudCh1cmwpKVxuICAgICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiZmluZEFsaVVybCI6ImxldCBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0KSwgXCJUZXh0XCIpO1xubGV0IF9saW5rcyA9IGh0bWwubWF0Y2goL2h0dHBzOlxcL1xcLyh3d3dcXC5hbGl5dW5kcml2ZVxcLmNvbVxcL3N8YWx5d3BcXC5uZXQpXFwvXFx3Ki9nKSB8fCBbXTtcbmxldCBzaGFyZVB3ZCA9IGh0bWwubWF0Y2goL+aPkOWPlueggVs677yaXVxccyo/KFxcd3s0fSkvKTtcbnNoYXJlUHdkID0gQXJyYXkuaXNBcnJheShzaGFyZVB3ZCkgJiYgc2hhcmVQd2QubGVuZ3RoID4gMCA/IHNoYXJlUHdkWzFdIDogXCJcIjtcbmlmIChfbGlua3MubGVuZ3RoID4gMSAmJiBfbGlua3NbMV0ucmVwbGFjZShfbGlua3NbMF0sIFwiXCIpLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCBcIlwiKSA9PSBcIlwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxpVXJsOiBfbGlua3NbMV0sXG4gICAgICAgIHNoYXJlUHdkOiBzaGFyZVB3ZFxuICAgIH07XG59IGVsc2Uge1xuICAgIGlmIChfbGlua3MubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWxpVXJsOiBfbGlua3NbMF0sXG4gICAgICAgICAgICBzaGFyZVB3ZDogc2hhcmVQd2RcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJoaWtlcjovL3BhZ2UveXNmeD93ZWJVcmw9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xuICAgIH1cbn0iLCJiYXNpY1VybCI6IiIsImxhc3RNb2RpZnkiOjE3MDY0Mjc3MTUwMTcsImdyb3VwIjoi6Zi/6YeMIn0seyJuYW1lIjoi6Zi/6YeM5bCP56uZIiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCBob21lID0gXCJodHRwczovL3BhbjY2Ni5uZXRcIjtcbmxldCBkID0gW107XG5sZXQgaHRtbCA9IHJlcXVlc3QoYnVpbGRVcmwoaG9tZSArIFwiL2FwaS9kaXNjdXNzaW9uc1wiLCB7XG4gICAgXCJpbmNsdWRlXCI6IFwidXNlcixsYXN0UG9zdGVkVXNlcixtb3N0UmVsZXZhbnRQb3N0LG1vc3RSZWxldmFudFBvc3QudXNlcix0YWdzLHRhZ3MucGFyZW50LGZpcnN0UG9zdFwiLFxuICAgIFwiZmlsdGVyW3FdXCI6IHMsXG4gICAgXCJwYWdlW29mZnNldF1cIjogMjAgKiAocGFnZSAtIDEpXG59KSwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIFwiUmVmZXJlclwiOiBcImh0dHA6Ly9hbGl4aWFvemhhbi52aXAvP3E9XCIgKyBzXG4gICAgfVxufSk7XG5sZXQgbGlzdCA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YTtcbmZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpdGVtID0gbGlzdFtpXS5hdHRyaWJ1dGVzO1xuICAgIGxldCB1cmwgPSBob21lICsgXCIvZC9cIiArIGl0ZW0uc2x1ZztcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgZGVzYzogXCJcXHU1M2QxXFx1NWUwM1xcdTY1ZjZcXHU5NWY0XFx1ZmYxYVwiICsgJC5kYXRlRm9ybWF0KG5ldyBEYXRlKGl0ZW0uY3JlYXRlZEF0KSwgXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCIpLFxuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGxvbmdDbGljazogW3tcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJcXHU4ZmRiXFx1NTE2NVxcdTVlMTZcXHU1YjUwXCIsXG4gICAgICAgICAgICAgICAganM6IEpTT04uc3RyaW5naWZ5KFwiaGlrZXI6Ly9wYWdlL3lzZng/d2ViVXJsPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHVybCkpXG4gICAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJmaW5kQWxpVXJsIjoibGV0IGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQpLCBcIlRleHRcIik7XG5sZXQgX2xpbmtzID0gaHRtbC5tYXRjaCgvaHR0cHM6XFwvXFwvKHd3d1xcLmFsaXl1bmRyaXZlXFwuY29tXFwvc3xhbHl3cFxcLm5ldClcXC9cXHcqL2cpIHx8IFtdO1xubGV0IHNoYXJlUHdkID0gaHRtbC5tYXRjaCgv5o+Q5Y+W56CBWzrvvJpdXFxzKj8oXFx3ezR9KS8pO1xuc2hhcmVQd2QgPSBBcnJheS5pc0FycmF5KHNoYXJlUHdkKSAmJiBzaGFyZVB3ZC5sZW5ndGggPiAwID8gc2hhcmVQd2RbMV0gOiBcIlwiO1xuaWYgKF9saW5rcy5sZW5ndGggPiAxICYmIF9saW5rc1sxXS5yZXBsYWNlKF9saW5rc1swXSwgXCJcIikucmVwbGFjZSgvW2EtekEtWjAtOV0rL2csIFwiXCIpID09IFwiXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlVcmw6IF9saW5rc1sxXSxcbiAgICAgICAgc2hhcmVQd2Q6IHNoYXJlUHdkXG4gICAgfTtcbn0gZWxzZSB7XG4gICAgaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbGlVcmw6IF9saW5rc1swXSxcbiAgICAgICAgICAgIHNoYXJlUHdkOiBzaGFyZVB3ZFxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcImhpa2VyOi8vcGFnZS95c2Z4P3dlYlVybD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChpbnB1dCk7XG4gICAgfVxufSIsImJhc2ljVXJsIjoiIiwibGFzdE1vZGlmeSI6MTcxNDY0MzIzNTk1NSwiZ3JvdXAiOiLpmL/ph4wiLCJhdXRob3IiOiIiLCJydWxlVHlwZSI6IiJ9LHsibmFtZSI6IuW/heW6lCIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgdXJsID0gXCJodHRwczovL2NuLmJpbmcuY29tL3NlYXJjaD9xPVwiICsgcyArIFwiK2FsaXl1bmRyaXZlJnFzPWRzJmZvcm09UUJSRVwiO1xuaWYgKHBhZ2UgIT0gMSkge1xuICAgIHVybCA9IGdldE15VmFyKFwiYmluZ1wiLCB1cmwpO1xufVxubGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJSZWZlcmVyXCI6IFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9cIixcbiAgICAgICAgXCJBY2NlcHRcIjogXCJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjlcIlxuICAgIH1cbn0pO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCJib2R5JiZhXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1ID0gcGQoaXQsIFwiYSYmaHJlZlwiLCB1cmwpO1xuICAgIGxldCB0ID0gcGRmaChpdCwgXCJhJiZUZXh0XCIpO1xuICAgIGlmIChpdC5pbmNsdWRlcyhcIk5leHQgcGFnZVwiKSB8fCBpdC5pbmNsdWRlcyhcIlxcdTRlMGJcXHU0ZTAwXFx1OTg3NVwiKSkge1xuICAgICAgICBsZXQgdTIgPSBwZChpdCwgXCJhJiZocmVmXCIsIHVybCk7XG4gICAgICAgIHB1dE15VmFyKFwiYmluZ1wiLCB1Mik7XG4gICAgfVxuICAgIGlmICh1ID09IG51bGwgfHwgdCA9PSBudWxsIHx8ICFpdC5pbmNsdWRlcyhzKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFpdC5pbmNsdWRlcyhcIlxcdTdmNTFcXHU3NmQ4XCIpICYmICFpdC5pbmNsdWRlcyhcIlxcdTRlOTFcXHU3NmQ4XCIpICYmICFpdC5pbmNsdWRlcyhcImFsaXl1bmRyaXZlXCIpICYmICFpdC5pbmNsdWRlcyhcInl1bnBhblwiKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHUuc3RhcnRzV2l0aChcImh0dHBzOi8vY24uYmluZy5jb20vXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgZG9tID0gZ2V0SG9tZSh1KS5yZXBsYWNlKFwiaHR0cDovL1wiLCBcIlwiKS5yZXBsYWNlKFwiaHR0cHM6Ly9cIiwgXCJcIik7XG4gICAgbGV0IF9saW5rcyA9IHQubWF0Y2goL2h0dHBzOlxcL1xcLyh3d3dcXC5hbGl5dW5kcml2ZVxcLmNvbVxcL3N8YWx5d3BcXC5uZXQpXFwvXFx3Ki9nKSB8fCBbXTtcbiAgICBsZXQgYyA9IG51bGw7XG4gICAgaWYgKF9saW5rcy5sZW5ndGggPiAxICYmIF9saW5rc1sxXS5yZXBsYWNlKF9saW5rc1swXSwgXCJcIikucmVwbGFjZSgvW2EtekEtWjAtOV0rL2csIFwiXCIpID09IFwiXCIpIHtcbiAgICAgICAgYyA9IF9saW5rc1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGMgPSBfbGlua3NbMF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHQsXG4gICAgICAgIGRlc2M6IGRvbSxcbiAgICAgICAgdXJsOiBjICE9IG51bGwgPyBjIDogdSxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGxvbmdDbGljazogW3tcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJcXHU4ZmRiXFx1NTE2NVxcdTdmNTFcXHU3YWQ5XCIsXG4gICAgICAgICAgICAgICAganM6IEpTT04uc3RyaW5naWZ5KFwiaGlrZXI6Ly9wYWdlL3lzZng/d2ViVXJsPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpKVxuICAgICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiZmluZEFsaVVybCI6ImlmIChpbnB1dC5pbmNsdWRlcyhcImFsaXl1bmRyaXZlXCIpKSB7XG4gICAgcmV0dXJuIGlucHV0O1xufVxubGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcbnZhciBfbGlua3MgPSBodG1sLm1hdGNoKC9odHRwczpcXC9cXC8od3d3XFwuYWxpeXVuZHJpdmVcXC5jb21cXC9zfGFseXdwXFwubmV0KVxcL1xcdyovZykgfHwgW107XG5pZiAoX2xpbmtzLmxlbmd0aCA+IDEgJiYgX2xpbmtzWzFdLnJlcGxhY2UoX2xpbmtzWzBdLCBcIlwiKS5yZXBsYWNlKC9bYS16QS1aMC05XSsvZywgXCJcIikgPT0gXCJcIikge1xuICAgIHJldHVybiBfbGlua3NbMV07XG59IGVsc2Uge1xuICAgIGlmIChfbGlua3MubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gX2xpbmtzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8v5YaF572u5a2Q6aG16Z2i5omT5byA572R6aG177yM572R6aG15omT5byA6Zi/6YeM5LqR55uY5Lya6Ieq5Yqo6Lez6L2s5Yiw5LqR566AXG4gICAgICAgIHJldHVybiBcImhpa2VyOi8vcGFnZS95c2Z4P3dlYlVybD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChpbnB1dCk7XG4gICAgfVxufSIsImJhc2ljVXJsIjoiIiwibGFzdE1vZGlmeSI6MTcwNjQyNzcyNzczNiwiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiJET1ZY5pCcIiwicGFnZSI6ZmFsc2UsImZpbmQiOiJsZXQgdXJsID0gXCJodHRwczovL2FwaS5kb3Z4LnRrL2FsaS9zZWFyY2g/d2Q9XCIgKyBzO1xubGV0IGh0bWwgPSByZXF1ZXN0KHVybCk7XG5sZXQgYXJyID0gSlNPTi5wYXJzZShodG1sKS5saXN0O1xubGV0IGQgPSBbXTtcbmxldCBhbGlVdGlsID0gJC5yZXF1aXJlKFwiYWxpVXRpbFwiKTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1ID0gaXQudm9kX2NvbnRlbnQ7XG4gICAgaWYgKCF1LmluY2x1ZGVzKFwiYWxpeXVuZHJpdmVcIikgfHwgIWFsaVV0aWwuY2hlY2thbGkodSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIlxcdTIyMWEgXCIgKyBpdC52b2RfbmFtZSxcbiAgICAgICAgcGljX3VybDogaXQudm9kX3BpYyxcbiAgICAgICAgdXJsOiB1LFxuICAgICAgICBkZXNjOiBcIlxcblwiICsgdVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoiIiwibGFzdE1vZGlmeSI6MTcwNjQyNzczNDg4MiwiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLnm5jmkJwiLCJwYWdlIjp0cnVlLCJmaW5kIjoicGFnZSA9IChwYWdlIC0gMSkgKiAxMDtcbmxldCB1cmwgPSBiYXNpY1VybCtcIi9zZWFyY2g/a2V5d29yZD1cIiArIHMgKyBcIiZvZmZzZXQ9XCIgKyBwYWdlICsgXCImcGFuPWFsaXl1bmRyaXZlXCI7XG5sZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcbmxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsIFwiLmdyaWQuZ3JpZC1jb2xzLTEmJi5pdGVtcy1zdGFydFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpdCA9IGFycltpXTtcbiAgICBsZXQgdSA9IHBhcnNlRG9tRm9ySHRtbChpdCwgXCJhJiZocmVmXCIpO1xuICAgIGxldCBwaWNfdXJsID0gcGFyc2VEb21Gb3JIdG1sKGl0LCBcImltZyYmc3JjXCIpO1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwoaXQsIFwiLmJyZWFrLWFsbCYmVGV4dFwiKS5zcGxpdChcImh0dHBcIilbMF0sXG4gICAgICAgIHBpY191cmw6IHBpY191cmwgPT09IFwiL2Zhdmljb24ucG5nXCIgPyBcImh0dHBzOi8vd3d3LnBhbnNlYXJjaC5tZS9cIiArIHBpY191cmwgOiBwaWNfdXJsLFxuICAgICAgICB1cmw6IHUsXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChpdCwgXCJwJiZUZXh0XCIpICsgXCJcXG5cIiArIHVcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly93d3cucGFuc2VhcmNoLm1lIiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTAzMzc4NDIzNDIsImdyb3VwIjoi6Zi/6YeMIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLkupHnm5jliIbkuqvnpL4iLCJwYWdlIjpmYWxzZSwiZmluZCI6ImxldCBhbGlVdGlsID0gJC5yZXF1aXJlKFwiYWxpVXRpbFwiKTtcbmxldCBDcnlwdG9KUyA9IGFsaVV0aWwuZ2V0Q3J5cHRvSlMoKTtcblxuZnVuY3Rpb24gZGVjcnkoc3RyKSB7XG4gICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFwiNUY2QjJBSzMzREFTRDEyM1wiKTtcbiAgICB2YXIgZW5jcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoc3RyLCBrZXksIHtcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5FQ0IsXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xuICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcbiAgICByZXR1cm4gZW5jcnlwdGVkO1xufVxubGV0IGh0bWwgPSByZXF1ZXN0KFwiaHR0cHM6Ly93d3cueXVucGFuZmVueGlhbmcuY24vYXBpL2Jicy9hcGkvZ2V0ZGF0YT9rZXk9XCIgKyBzICsgXCImdHlwZT12aWRlb1wiLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBcIlJlZmVyZXJcIjogXCJodHRwczovL3d3dy55dW5wYW5mZW54aWFuZy5jbi9cIlxuICAgIH1cbn0pO1xubGV0IGpzb24gPSBkZWNyeShKU09OLnBhcnNlKGh0bWwpLmRhdGEpO1xubGV0IGFyciA9IEpTT04ucGFyc2UoanNvbik7XG5cbmxldCBiZXQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1cmwgPSBpdC5waWQ7XG4gICAgYmV0LnB1c2goe1xuICAgICAgICB1cmw6IFwiaHR0cHM6Ly93d3cueXVucGFuZmVueGlhbmcuY24vYXBpL2Jicy9hcGkvZ2V0YXJ0aWNsZT9pZD1cIiArIHVybCxcbiAgICAgICAgdGl0bGU6IGl0LnRpdGxlLFxuICAgICAgICBkZXNjOiBpdC5jcmVhdGV0aW1lXG4gICAgfSk7XG59XG5cbnJldHVybiBiZXQ7IiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoibGV0IGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiUmVmZXJlclwiOiBcImh0dHBzOi8vd3d3Lnl1bnBhbmZlbnhpYW5nLmNuL1wiXG4gICAgfVxufSkpLmRhdGE7XG5sZXQgbGlzdCA9IGpzb24uZG93bmxvYWQuc3BsaXQoXCJAXCIpO1xubGV0IGFsaXN0ID0gbmV3IFNldCgpO1xuZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XG4gICAgYWxpc3QuYWRkKFwiaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvXCIrbGlzdFtqXSk7XG59XG5yZXR1cm4gQXJyYXkuZnJvbShhbGlzdCk7IiwibGFzdE1vZGlmeSI6MTcwNjQyNzc0NTU0NywiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLpmL/ph4zmkJwiLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IGQgPSBbXTtcbmxldCBodG1sID0gcmVxdWVzdChcImh0dHBzOi8vYWxpc28uY2Mvcy9cIiArIHMgKyBcIi1cIiArIHBhZ2UgKyBcIi0wLmh0bWxcIiwge30pO1xubGV0IGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsIFwiLnNlYXJjaC1yZXN1bHQmJi5yZXNvdXJjZS1pdGVtXCIpO1xuZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XG4gICAgbGV0IHUgPSBsaXN0W2pdO1xuICAgIGxldCB0aXQgPSBwYXJzZURvbUZvckh0bWwodSwgXCJoMyYmVGV4dFwiKTtcbiAgICBpZiAoIXRpdC5pbmNsdWRlcyhzKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHRpdCxcbiAgICAgICAgdXJsOiBwYXJzZURvbSh1LCBcImgzJiZhJiZocmVmXCIsIFwiaHR0cHM6Ly9hbGlzby5jYy9cIiksXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbCh1LCBcIi50aW1lJiZUZXh0XCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJmaW5kQWxpVXJsIjoiZXZhbChnZXRDcnlwdG9KUygpKTtcblxuZnVuY3Rpb24gZGVjcnkoc3RyKSB7XG4gICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFwiOUVCMjBEREZENkFGQkQ2OFwiKTtcbiAgICB2YXIgZW5jcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoc3RyLCBrZXksIHtcbiAgICAgICAgaXY6IGtleSxcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xuICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcbiAgICByZXR1cm4gZW5jcnlwdGVkO1xufVxubGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcbmxldCBidXQgPSBwYXJzZURvbShodG1sLCBcIi5idXR0b24mJmhyZWZcIiwgXCJodHRwczovL2FsaXNvLmNjL1wiKTtcbmxldCBnb3QgPSByZXF1ZXN0KGJ1dCk7XG5ldmFsKHBhcnNlRG9tRm9ySHRtbChnb3QsIFwiaGVhZCYmc2NyaXB0LDEmJkh0bWxcIikpO1xucmV0dXJuIGRlY3J5KGJhc2U2NC5zcGxpdChcIiFcIilbMF0pOyIsImJhc2ljVXJsIjoiIiwibGFzdE1vZGlmeSI6MTcwNjQyNzc1MTMxNSwiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLpmL/ph4zkupHnm5jnvZEiLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IHVybCA9IGJhc2ljVXJsK1wiL3NlYXJjaC5waHA/cT1cIiArIHMgKyBcIiZwYWdlPVwiICsgcGFnZTtcbmxldCBodG1sID0gcmVxdWVzdCh1cmwsIHt9KTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwiLmxpc3QmJmxpXCIpO1xubGV0IGJldCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXQgPSBhcnJbaV07XG4gICAgbGV0IHV0aXRsZSA9IHBkZmgoaXQsIFwiYSYmdGl0bGVcIik7XG4gICAgbGV0IHVzZXJpYWwgPSBwZGZoKGl0LCBcIi5mYS1jbG9jay1vJiZUZXh0XCIpO1xuICAgIGxldCB1aW1hZ2UgPSBwZGZoKGl0LCBcImltZyYmc3JjXCIpO1xuICAgIGxldCB1ID0gcGQoaXQsIFwiYSYmaHJlZlwiLCBiYXNpY1VybCk7XG4gICAgaWYgKCF1dGl0bGUuaW5jbHVkZXMocykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGJldC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHV0aXRsZSxcbiAgICAgICAgdXJsOiB1LFxuICAgICAgICBwaWNfdXJsOiB1aW1hZ2UsXG4gICAgICAgIGRlc2M6IHVzZXJpYWxcbiAgICB9KTtcbn1cblxucmV0dXJuIGJldDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vd3d3LmFseXB3LmNuIiwiZmluZEFsaVVybCI6ImxldCBhbGl0ZXN0ID0gJC5yZXF1aXJlKFwiYWxpdGVzdFwiKTtcbnJldHVybiBwZGZhKHJlcXVlc3QoaW5wdXQpLCBcIi5hcnRpY2xlX2NvbnRlbnQmJmFcIikubWFwKHYgPT4gcGRmaCh2LCBcImEmJmhyZWZcIikpLmZpbHRlcih2ID0+IGFsaXRlc3QudGVzdCh2KSk7IiwibGFzdE1vZGlmeSI6MTcwNjQyNzgxNDc3MywiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLmmJPmkJwiLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IGFsaVV0aWwgPSAkLnJlcXVpcmUoXCJhbGlVdGlsXCIpO1xubGV0IENyeXB0b0pTID0gYWxpVXRpbC5nZXRDcnlwdG9KUygpO1xuXG5mdW5jdGlvbiBrZXllbihzdHIpIHtcbiAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXCI0T1RvU2NVRk9hZVZUckhFXCIpLFxuICAgICAgICBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFwiOUNMR2FvMXZIS3FtMTdPelwiKTtcbiAgICB2YXIgZW5jcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoe1xuICAgICAgICBjaXBoZXJ0ZXh0OiBDcnlwdG9KUy5lbmMuQmFzZTY0LnBhcnNlKHN0cilcbiAgICB9LCBrZXksIHtcbiAgICAgICAgaXY6IGl2LFxuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcbiAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XG4gICAgfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xuICAgIHJldHVybiBlbmNyeXB0ZWQ7XG59XG5sZXQgaHRtbCA9IHJlcXVlc3QoXCJodHRwczovL3lpc28uZnVuL2FwaS9zZWFyY2g/bmFtZT1cIiArIHMgKyBcIiZwYWdlTm89XCIgKyBwYWdlLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBcIlJlZmVyZXJcIjogXCJodHRwczovL3lpc28uZnVuL2luZm8/c2VhcmNoS2V5PVwiICsgcyxcbiAgICAgICAgXCJDb29raWVcIjogZ2V0SXRlbShcInlpc291Y29va2VcIiwgXCJcIilcbiAgICB9XG59KTtcbmlmIChodG1sLmluY2x1ZGVzKFwiXFx1NzY3YlxcdTVmNTVcXHU3NTI4XFx1NjIzN1xcdTY1ZTBcXHU5NjUwXFx1NTIzNlwiKSkge1xuICAgIHZhciBpID0gMDtcbiAgICBkbyB7XG4gICAgICAgIHZhciB0eWltZ2xpbiA9IFwiaHR0cHM6Ly95aXNvLmZ1bi9hcGkvdXNlci9sb2dpbi9jYXB0Y2hhP3Q9XCIgKyBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgKyBcIlwiO1xuICAgICAgICBsZXQgaW1nID0gY29udmVydEJhc2U2NEltYWdlKHR5aW1nbGluKS5zcGxpdChcIixcIilbMV07XG4gICAgICAgIGxldCBjb2QgPSByZXF1ZXN0KFwiaHR0cHM6Ly9hcGkueGhvZmUudG9wL29jci9iNjQvdGV4dFwiLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L3BsYWluXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBpbWcsXG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdmVyID0gSlNPTi5wYXJzZShyZXF1ZXN0KFwiaHR0cHM6Ly95aXNvLmZ1bi9hcGkvdXNlci9sb2dpblwiLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgXCJyZWZlcmVyXCI6IFwiaHR0cHM6Ly95aXNvLmZ1bi9sb2dpblwiLFxuICAgICAgICAgICAgICAgIFwiQ29va2llXCI6IGdldENvb2tpZSh0eWltZ2xpbilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgXCJ1c2VyTmFtZVwiOiB1c2VyLmFjY291bnQsXG4gICAgICAgICAgICAgICAgXCJwYXNzd29yZFwiOiB1c2VyLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgIFwiY29kZVwiOiBjb2RcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiXG4gICAgICAgIH0pKTtcbiAgICAgICAgaWYgKHZlci5jb2RlID09IDIwMCkge1xuICAgICAgICAgICAgbG9nKFwiXFx1NjYxM1xcdTY0MWNcXHU3NjdiXFx1NTE2NVxcdTlhOGNcXHU4YmMxXFx1NjIxMFxcdTUyOWZcIik7XG4gICAgICAgICAgICBzZXRJdGVtKFwieWlzb3Vjb29rZVwiLCBnZXRDb29raWUoXCJodHRwczovL3lpc28uZnVuXCIpKTtcbiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KFwiaHR0cHM6Ly95aXNvLmZ1bi9hcGkvc2VhcmNoP25hbWU9XCIgKyBzICsgXCImcGFnZU5vPVwiICsgcGFnZSwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJSZWZlcmVyXCI6IFwiaHR0cHM6Ly95aXNvLmZ1bi9pbmZvP3NlYXJjaEtleT1cIiArIHMsXG4gICAgICAgICAgICAgICAgICAgIFwiQ29va2llXCI6IGdldEl0ZW0oXCJ5aXNvdWNvb2tlXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgfSB3aGlsZSAoaSA8IDQpO1xufVxubGV0IGFyciA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5saXN0O1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1ID0ga2V5ZW4oaXQudXJsKTtcbiAgICAvKmlmICh1ID09IG51bGwgfHwgIXUuaW5jbHVkZXMoXCJhbGl5dW5cIikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgfSovXG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0LmZpbGVJbmZvc1swXS5maWxlTmFtZSxcbiAgICAgICAgdXJsOiB1LFxuICAgICAgICBkZXNjOiAoaXQuZ210U2hhcmUgfHwgaXQuZ210Q3JlYXRlKSArIFwiXFxuXCIgKyAodSlcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiIiwiZmluZEFsaVVybCI6IiIsInJlZ2lzdGVyVXJsIjoiaHR0cHM6Ly95aXNvLmZ1biIsImxhc3RNb2RpZnkiOjE3MDY0Mjc4MTAxODAsImdyb3VwIjoi6Zi/6YeMIn0seyJuYW1lIjoiVVDkupHmkJwiLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IHVybCA9IFwiaHR0cHM6Ly9hcGkudXB5dW5zbzIuY29tL3NlYXJjaD9rZXl3b3JkPVwiICsgcyArIFwiJnBhZ2U9XCIgKyBwYWdlICsgXCImc190eXBlPTFcIjtcbmxldCBodG1sID0gcmVxdWVzdCh1cmwsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiUmVmZXJlclwiOiBcImh0dHBzOi8vd3d3LnVweXVuc28uY29tXCIsXG4gICAgICAgIFwiQ29va2llXCI6IFwiY29kZT0xOTE5XCJcbiAgICB9XG59KTtcbmxldCBhcnIgPSBKU09OLnBhcnNlKGJhc2U2NERlY29kZShodG1sKSkucmVzdWx0Lml0ZW1zO1xubGV0IGQgPSBbXTtcbmlmICghYXJyKSB7XG4gICAgcmV0dXJuIFtdO1xufVxuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXQgPSBhcnJbaV07XG4gICAgbGV0IHUgPSBpdC5wYWdlX3VybDtcbiAgICBpZiAoIXUuaW5jbHVkZXMoXCJhbGl5dW5kcml2ZVwiKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0LnRpdGxlLFxuICAgICAgICB1cmw6IHUsXG4gICAgICAgIGRlc2M6IFwiXFxuXCIgKyAodSlcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiIiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MDY0Mjc4MjI1MDEsImdyb3VwIjoi6Zi/6YeMIn0seyJuYW1lIjoi5LqR55uY6LWE5rqQIiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCB1cmwgPSBiYXNpY1VybCArIFwiLz9QYWdlSW5kZXg9XCIgKyBwYWdlICsgXCImUGFnZVNpemU9MTImS2V5d29yZD1cIiArIHMgKyBcIiZUeXBlPSZUYWc9XCI7XG5sZXQgaHRtbCA9IHJlcXVlc3QodXJsLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBcIlJlZmVyZXJcIjogYmFzaWNVcmxcbiAgICB9XG59KTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwibWFpbiYmLmNhcmRcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXQgPSBhcnJbaV07XG4gICAgbGV0IHUgPSAocGRmaChpdCwgXCIuY2FyZC1saW5rLDEmJm9uY2xpY2tcIikuc3BsaXQoXCJ3aW5kb3cub3BlbignXCIpWzFdIHx8IFwiXCIpLnNwbGl0KFwiJylcIilbMF0gfHwgdXJsO1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGl0LCBcIi5jYXJkLXRpdGxlJiZUZXh0XCIpLFxuICAgICAgICBwaWNfdXJsOiBwZChpdCwgXCJpbWcmJnNyY1wiLCB1cmwpLFxuICAgICAgICB1cmw6IHUsXG4gICAgICAgIGRlc2M6IHBkZmgoaXQsIFwiLmNhcmQtdGV4dCwtMSYmVGV4dFwiKSArIFwiXFxuXCIgKyB1XG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vcmVzLnl1bnBhbi53aW4iLCJmaW5kQWxpVXJsIjoiIiwibGFzdE1vZGlmeSI6MTcwNjQyNzc5NDkzOCwiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLotYTmupDluK4iLCJwYWdlIjp0cnVlLCJmaW5kIjoiZnVuY3Rpb24gc2VhcmNoKCkge1xuICAgIGxldCBydG5MaXN0ID0gW107XG4gICAgbGV0IHJlc3AgPSByZXF1ZXN0KFwiaHR0cHM6Ly96eWIudXB5dW5zby5jb20vdjE1L3NlYXJjaD9rZXl3b3JkPVwiICsgZW5fYWVzKHMpICsgXCImc190eXBlPTImcGFnZT1cIiArIHBhZ2UgKyBcIiZhdGs9JmRpZD1cIiArIGdlbmVyYXRlUmFuZG9tSGV4U3RyaW5nKDY0KSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcInVzZXItYWdlbnRcIjogXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IFJlZG1pIE5vdGUgNyBCdWlsZC9RS1ExLjE5MDkxMC4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODEuMC40MDQ0LjEzOCBNb2JpbGUgU2FmYXJpLzUzNy4zNiB1bmktYXBwIEh0bWw1UGx1cy8xLjAgKEltbWVyc2VkLzI5LjA5MDkxKVwiXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgcmVzcERhdGEgPSBkZV9hZXMocmVzcCk7XG4gICAgbGV0IGpzb25EYXRhID0gSlNPTi5wYXJzZShyZXNwRGF0YSkgfHwge307XG4gICAgbGV0IHJlc3VsdCA9IGpzb25EYXRhLnJlc3VsdCB8fCB7fTtcbiAgICBsZXQgaXRlbXMgPSByZXN1bHQuaXRlbXMgfHwgW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICBsZXQgY29udGVudCA9IGl0ZW0uY29udGVudCB8fCBbXTtcbiAgICAgICAgaWYgKGNvbnRlbnQubGVuZ3RoID09IDAgfHwgIWl0ZW0ucGFnZV91cmwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCB1cmwgPSBkZV9hZXMoaXRlbS5wYWdlX3VybCkgfHwgXCJcIjtcbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHJ0bkxpc3QucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogKGl0ZW0udGl0bGUubGVuZ3RoID4gMzAgPyBpdGVtLnRpdGxlLnNsaWNlKDAsIDI3KSArIFwiLi4uXCIgOiBpdGVtLnRpdGxlKSB8fCBcIlwiLFxuICAgICAgICAgICAgZGVzYzogXCJcXHU1MjA2XFx1NGVhYlxcdTY1ZjZcXHU5NWY0XFx1ZmYxYVwiICsgaXRlbS5pbnNlcnRfdGltZSxcbiAgICAgICAgICAgIHVybDogdXJsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcnRuTGlzdDtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21IZXhTdHJpbmcobGVuZ3RoKSB7XG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgY29uc3QgY2hhcmFjdGVycyA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICAgIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5sZXQgYWxpVXRpbCA9ICQucmVxdWlyZShcImFsaVV0aWxcIik7XG5sZXQgQ3J5cHRvSlMgPSBhbGlVdGlsLmdldENyeXB0b0pTKCk7XG5cbmZ1bmN0aW9uIGVuX2FlcyhlKSB7XG4gICAgbGV0IGkgPSBcInFxMTkyMDUyMDQ2MHFxenpcIjtcbiAgICBsZXQga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoaSk7XG4gICAgdmFyIHQgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShlKSxcbiAgICAgICAgciA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHQsIGtleSwge1xuICAgICAgICAgICAgaXY6IGtleSxcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDXG4gICAgICAgIH0pO1xuICAgIHJldHVybiByLmNpcGhlcnRleHQudG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gZGVfYWVzKHZ2KSB7XG4gICAgbGV0IGkgPSBcInFxMTkyMDUyMDQ2MHFxenpcIjtcbiAgICBsZXQga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoaSk7XG4gICAgbGV0IGhleFZhbCA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2UodnYpLFxuICAgICAgICB2YWwgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShoZXhWYWwpLFxuICAgICAgICBkZWNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdCh2YWwsIGtleSwge1xuICAgICAgICAgICAgaXY6IGtleSxcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDXG4gICAgICAgIH0pO1xuICAgIHJldHVybiBkZWNyeXB0ZWQudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xufVxucmV0dXJuIHNlYXJjaCgpOyIsImJhc2ljVXJsIjoiIiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MDY0Mjc4Mjc5MzksImdyb3VwIjoi6Zi/6YeMIn0seyJuYW1lIjoi5om+6LWE5rqQIiwiZmluZCI6ImZ1bmN0aW9uIGdldGh0bWwoKSB7XG4gICAgbGV0IGh0bWwgPSByZXF1ZXN0KFwiaHR0cHM6Ly96aGFveml5dWFuLnB3L3NvP2ZpbGVuYW1lPVwiICsgcyArIFwiJnBhZ2U9XCIgKyBwYWdlLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwiUmVmZXJlclwiOiBcImh0dHBzOi8vemhhb3ppeXVhbi5wdy9zdG9wLmh0bWxcIixcbiAgICAgICAgICAgIFwib3JpZ2luXCI6IFwiaHR0cHM6Ly96aGFveml5dWFuLnB3XCIsXG4gICAgICAgICAgICBcIkNvb2tpZVwiOiBnZXRJdGVtKFwienp5Y29va2VcIiwgXCJcIiksXG4gICAgICAgICAgICBcInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHNcIjogXCIxXCIsXG4gICAgICAgICAgICBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaHRtbDtcbn07XG52YXIgaHRtbCA9IGdldGh0bWwoKTtcbmlmICghaHRtbC5pbmNsdWRlcyhcInNlYXJjaF9ib3hcIikpIHtcbiAgICBpZiAoISh1c2VyLmFjY291bnQgJiYgdXNlci5wYXNzd29yZCkpIHRocm93IG5ldyBFcnJvcihcIuivt+eZu+W9lei0puWPt1wiKTtcbiAgICBsZXQgdXNlcmluZm8gPSAndXNlcm5hbWU9JyArIHVzZXIuYWNjb3VudCArICcmcGFzc3dveHg9JyArIHVzZXIucGFzc3dvcmQ7XG4gICAgbGV0IGNvb2sgPSBKU09OLnBhcnNlKGZldGNoQ29va2llKCdodHRwczovL3poYW96aXl1YW4ucHcvbG9naXUuaHRtbCcsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBNT0JJTEVfVUEsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHBzOi8vemhhb3ppeXVhbi5wdycsXG4gICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3poYW96aXl1YW4ucHcvbG9naXUuaHRtbCcsXG4gICAgICAgICAgICBcInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHNcIjogXCIxXCJcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogdXNlcmluZm8sXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZSxcbiAgICAgICAgd2l0aEhlYWRlcnM6IHRydWVcbiAgICB9KSkuam9pbignOycpO1xuICAgIHNldEl0ZW0oXCJ6enljb29rZVwiLCBjb29rKTtcbiAgICAvL2xvZyhcIuaJvui1hOa6kOeZu+WFpVwiKTtcbiAgICBodG1sID0gZ2V0aHRtbCgpO1xufVxuXG5sZXQgYXJyID0gcGRmYShodG1sLCBcImJvZHkmJi5uZXdzTGlzdCYmbGk6bm90KDpmaXJzdC1jaGlsZClcIik7XG4vL2xvZyhhcnIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1ID0gcGRmaChpdCwgXCJhJiZocmVmXCIpO1xuICAgIGlmICh1ID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHUgPSBcImh0dHBzOi8vemhhb3ppeXVhbi5wdy9cIiArIHU7XG4gICAgLy9sb2codSk7XG4gICAgbGV0IHRpdGxlID0gcGRmaChpdCwgXCIubmV3c190ZXh0JiZoMyYmVGV4dFwiKTtcbiAgICBpZiAoIXRpdGxlKSBjb250aW51ZTtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgIGRlc2M6IHBkZmgoaXQsIFwiLm5ld3NfdGV4dCYmcCYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiB1XG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJmaW5kQWxpVXJsIjoibGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcbnZhciBfbGlua3MgPSBodG1sLm1hdGNoKC9odHRwczpcXC9cXC8od3d3XFwuYWxpeXVuZHJpdmVcXC5jb21cXC9zfGFseXdwXFwubmV0fHd3d1xcLmFsaXBhblxcLmNvbVxcL3MpXFwvXFx3Ki9nKSB8fCBbXTtcblxuaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XG5cbiAgICByZXR1cm4gX2xpbmtzWzBdO1xufSBlbHNlIHtcbiAgICByZXR1cm4gaW5wdXQ7XG59IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcwNjQyNzgwMDE3OSwicmVnaXN0ZXJVcmwiOiJodHRwczovL3poYW96aXl1YW4ucHcvbG9naW4uaHRtbCIsImJhc2ljVXJsIjoiIiwiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLlpKfnm5jmkJwiLCJmaW5kIjoibGV0IGFsaVV0aWwgPSAkLnJlcXVpcmUoXCJhbGlVdGlsXCIpO1xubGV0IENyeXB0b0pTID0gYWxpVXRpbC5nZXRDcnlwdG9KUygpO1xuXG52YXIgc2VhcmNoVXJsID0gYmFzaWNVcmwgKyBcIi9hcGkvcmVzb3VyY2VzL20tc2VhcmNoXCI7XG52YXIgdGltZSA9IERhdGUubm93KCk7XG52YXIgdG9kb1NpZ24gPSBcIi9hcGkvcmVzb3VyY2VzL20tc2VhcmNoS0ROTFwiICsgdGltZTtcbnZhciBwb3N0Qm9keSA9IHtcbiAgICBuYW1lOiBzLFxuICAgIGN1cnJlbnQ6IHBhZ2UsXG4gICAgc2l6ZTogXCIxNVwiLFxufTtcblxudmFyIGNvbmZpZ3MgPSB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBzaWduOiBDcnlwdG9KUy5TSEEyNTYodG9kb1NpZ24pLnRvU3RyaW5nKCksXG4gICAgICAgIHRpbWVzdGFtcDogdGltZS50b1N0cmluZygpLFxuICAgICAgICBcInVzZXItYWdlbnRcIjogTU9CSUxFX1VBLFxuICAgICAgICBvcmlnaW46IFwiaHR0cHM6Ly9kYXBhbnNvLmNvbVwiLFxuICAgICAgICBcIngtcmVxdWVzdGVkLXdpdGhcIjogXCJYTUxIdHRwUmVxdWVzdFwiLFxuICAgIH0sXG4gICAgdGltZW91dDogNDAwMCxcbiAgICBib2R5OiBwb3N0Qm9keSxcbn07XG5cblxubGV0IGpzb24gPSBKU09OLnBhcnNlKHBvc3Qoc2VhcmNoVXJsLCBjb25maWdzKSk7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXQgb2YganNvbi5yZXQucmVjb3Jkcykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBpdC5uYW1lLFxuICAgICAgICB1cmw6IGl0LnVybCxcbiAgICAgICAgZGVzYzogXCLmm7TmlrDml7bpl7RcIiArIGl0LnVwZGF0ZWRBdCxcbiAgICB9KTtcbn1cblxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL2RhcGFuc28uY29tIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTAzMzc4OTk3MjIsImdyb3VwIjoi6Zi/6YeMIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLluJXljaHmkJzntKIiLCJmaW5kIjoidmFyIHNlYXJjaFVybCA9IGJhc2ljVXJsICsgJy9zZWFyY2g/dHlwZT0xJmtleXdvcmQ9JyArIGVuY29kZVVSSUNvbXBvbmVudChzKSArICcmc2VhcmNoVHlwZT0wJnBhZ2U9JyArIHBhZ2U7XG52YXIgcmVzcCA9IHJlcXVlc3Qoc2VhcmNoVXJsKVxudmFyIGl0ZW1zID0gcGRmYShyZXNwLCBcIi5jb2wtbWQtMTImJi5jYXJkLXRpdGxlXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChpdGVtLFwiYSYmVGV4dFwiKS5yZXBsYWNlKFwi6Zi/6YeM5LqR55uYIC0gXCIsXCJcIiksXG4gICAgICAgIHVybDogYmFzaWNVcmwrXCIvXCIrcGRmaChpdGVtLFwiYSYmaHJlZlwiKSxcbiAgICAgICAgLy9kZXNjOiBwZGZoKGl0ZW0sXCIuYWxpZ24taXRlbXMtY2VudGVyJiZUZXh0XCIpLFxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL3d3dy5jdXBwYXNvLmNvbSIsImZpbmRBbGlVcmwiOiJyZXR1cm4gcGRmaChyZXF1ZXN0KGlucHV0KSwgXCIuYnRuLmJ0bi1ncmVlbiYmaHJlZlwiKTsiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzEwMzM3OTA1NjY5LCJncm91cCI6IumYv+mHjCIsImF1dGhvciI6IkBMb3lEZ0lrIn0seyJuYW1lIjoi5pCc57Si55uYIiwiZmluZCI6InZhciBzZWFyY2hVcmwgPVxyXG4gICAgYmFzaWNVcmwgKyBcIi9zZWFyY2g/cGFnZT1cIiArXHJcbiAgICBwYWdlICsgXCImY2F0ZWdvcnk9JnNpdGU96Zi/6YeM5LqR55uYJnNpemU9JnRpbWU9JmtleXdvcmQ9XCIgK1xyXG4gICAgZW5jb2RlVVJJQ29tcG9uZW50KHMpO1xyXG5cclxudmFyIHJlc3AgPSByZXF1ZXN0KHNlYXJjaFVybClcclxudmFyIGl0ZW1zID0gcGRmYShyZXNwLCBcImJvZHkmJi5wb3N0XCIpO1xyXG5sZXQgZCA9IFtdO1xyXG5mb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICBkLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBwZGZoKGl0ZW0sIFwiaDImJlRleHRcIiksXHJcbiAgICAgICAgdXJsOiBiYXNpY1VybCArIHBkZmgoaXRlbSwgXCJhJiZocmVmXCIpLFxyXG4gICAgICAgIGRlc2M6IFwi5pe26Ze077yaXCIrcGRmaChpdGVtLFwiLmZlZWRfdGltZSYmVGV4dFwiKSxcclxuICAgIH0pO1xyXG59XHJcbnJldHVybiBkO1xuIiwiYmFzaWNVcmwiOiJodHRwczovL3d3dy5zb3VzdW9wYW4uY29tIiwiZmluZEFsaVVybCI6InJldHVybiBwZGZoKHJlcXVlc3QoaW5wdXQucmVwbGFjZShcImZpbGVcIixcInJlZGlyZWN0XCIpLHtcbiAgICBoZWFkZXJzOntcbiAgICAgICAgcmVmZXJlcjppbnB1dFxuICAgIH1cbn0pLCBcIiN0aXBfbXNnJiZhJiZocmVmXCIpOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTAzMzc5MTYyMzIsImdyb3VwIjoi6Zi/6YeMIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLpmL/ph4znpZ7lmagiLCJmaW5kIjoibGV0IGpzb24gPSByZXF1ZXN0KGJ1aWxkVXJsKGJhc2ljVXJsICsgXCIvYXBpL3NlYXJjaFwiLCB7XG4gICAgcXVlcnk6IGVuY29kZVVSSUNvbXBvbmVudChzKSxcbiAgICBwYWdlTm86IHBhZ2UsXG4gICAgcGFnZVNpemU6IDEwXG59KSk7XG5sZXQgbGlzdCA9IEpTT04ucGFyc2UoanNvbikuZGF0YTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpdCBvZiBsaXN0KSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0LnRpdGxlLFxuICAgICAgICB1cmw6IFwiaHR0cHM6Ly93d3cuXCIgKyBpdC5wYW5fdXJsLFxuICAgIH0pO1xufVxuXG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vcGFuLmp1c3RpbjNnby5jb20iLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMDMzNzkxMTM2NSwiZ3JvdXAiOiLpmL/ph4wiLCJhdXRob3IiOiJATG95RGdJayJ9LHsibmFtZSI6IuaXoOS4uiIsImZpbmQiOiJsZXQgdXJsID0gXCJodHRwczovL3d1d2VpcGFuc291LnRvcC9hc3NlcnQvc2VhcmNoP3BhZ2VObz1cIitwYWdlK1wiJmtleXdvcmQ9XCIrcytcIiZjYT0wJm9yPTAmZHQ9MVwiXG5sZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcbmxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsIFwiIC5yZXNvdXJjZV9saXN0JiZhXCIpO1xuXG5sZXQgYmV0ID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpdCA9IGFycltpXTtcbiAgICBsZXQgdXRpdGxlID0gcGFyc2VEb21Gb3JIdG1sKGl0LCBcInN0cm9uZyYmVGV4dFwiKTtcbiAgICBsZXQgdXNlcmlhbCA9IHBhcnNlRG9tRm9ySHRtbChpdCwgXCIuY2FyZC1ib3R0b20mJlRleHRcIik7XG4gICAgbGV0IHUgPSBwYXJzZURvbShpdCwgXCJhJiZocmVmXCIsIFwiaHR0cHM6Ly93dXdlaXBhbnNvdS50b3BcIik7XG4gICAgbGV0IHV0ID0gdS5yZXBsYWNlKFwiL2Fzc2VydC9kZXRhaWwvXCIsXCIvdnIvXCIpXG4gICAgYmV0LnB1c2goe1xuICAgICAgICB0aXRsZTogdXRpdGxlLFxuICAgICAgICB1cmw6IHV0LFxuICAgICAgICBkZXNjOiB1c2VyaWFsXG4gICAgfSk7XG59XG5cbnJldHVybiBiZXQ7XG5cblxuIiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoicmV0dXJuICQucmVxdWlyZShcImFsaVV0aWxcIikubWF0Y2hBbGlVcmwocmVxdWVzdChpbnB1dCkpOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MDY0Mjc3NzA3NTIsImdyb3VwIjoi6Zi/6YeMIn0seyJuYW1lIjoiRFZEIiwiZmluZCI6InZhciBzZWFyY2hVcmwgPSBiYXNpY1VybCArICcvcGFnZS8nICsgcGFnZSArICcvP3M9JyArIGVuY29kZVVSSUNvbXBvbmVudChzKTtcbnZhciByZXNwID0gcmVxdWVzdChzZWFyY2hVcmwpO1xudmFyIG1lcyA9IHBkZmgocmVzcCwgJy53cC1kaWUtbWVzc2FnZSYmVGV4dCcpO1xuaWYgKG1lcyAhPSAnJykge1xuICAgIHJldHVybiBbe1xuICAgICAgICB0aXRsZTogbWVzLFxuICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXG4gICAgICAgIH0pXG4gICAgfV1cbn1cbnZhciBpdGVtcyA9IHBkZmEocmVzcCwgXCIuY29udGVudC1saXN0JiYucG9zdFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgXCIuZW50cnktdGl0bGUmJlRleHRcIikucmVwbGFjZShcIumYv+mHjOS6keebmCAtIFwiLCBcIlwiKSxcbiAgICAgICAgdXJsOiBwZGZoKGl0ZW0sIFwiYSYmaHJlZlwiKSxcbiAgICAgICAgZGVzYzogcGRmaChpdGVtLCBcIi5lbnRyeS1zdW1tYXJ5JiZUZXh0XCIpLFxuICAgICAgICBwaWNfdXJsOiBwZGZoKGl0ZW0sIFwiaW1nJiZkYXRhLXNyY1wiKSxcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cDovL3d3dy5keWRoaHkuY29tIiwiZmluZEFsaVVybCI6InJldHVybiBwZGZhKHJlcXVlc3QoaW5wdXQpLCBcImJvZHkmJnA6aGFzKGFbaHJlZn49Ly4qP2FsaSh5dW58cGFuKS4qP2NvbS9dKXx8bGk6aGFzKGFbaHJlZn49Ly4qP2FsaSh5dW58cGFuKS4qP2NvbS9dKVwiKS5tYXAodiA9PiBwZGZoKHYsIFwiYSYmaHJlZlwiKSk7IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcwNjQyNzc2NzAxMywiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLlpYflppnmkJzntKIiLCJmaW5kIjoibGV0IHVybDtcbmlmIChwYWdlID09PSAxKSB7XG4gICAgdXJsID0gYnVpbGRVcmwoXCJodHRwczovL3d3dy5tYWdpY2Fsc2VhcmNoLnRvcC9hcGkvcHNob3UvZ2V0RGF0YVwiLCB7XG4gICAgICAgIHdvcmQ6IHMsXG4gICAgICAgIHR5cGU6IFwi6Zi/6YeM572R55uYXCJcbiAgICB9KTtcbn0gZWxzZSB7XG4gICAgdXJsID0gYnVpbGRVcmwoXCJodHRwczovL3d3dy5tYWdpY2Fsc2VhcmNoLnRvcC9hcGkvcHNob3UvZ2V0TmV4dFBhZ2VcIiwge1xuICAgICAgICB1cmw6IFwiaHR0cHM6Ly9hcGkudXB5dW5zbzIuY29tL3NlYXJjaD9zX3R5cGU9MkBwYWdlPVwiICsgcGFnZSArIFwiQGtleXdvcmQ9XCIgKyBlbmNvZGVVUklDb21wb25lbnQocyksXG4gICAgICAgIHdlYnNpdGU6IFwi6Zi/6YeM572R55uYXCJcbiAgICB9KTtcbn1cbmxldCByZXN1bHQgPSByZXF1ZXN0KHVybCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgUmVmZXJlcjogYnVpbGRVcmwoXCJodHRwczovL3d3dy5tYWdpY2Fsc2VhcmNoLnRvcC9zZWFyY2hcIiwge1xuICAgICAgICAgICAgd29yZDogcyxcbiAgICAgICAgICAgIGNwYWdlOiAwXG4gICAgICAgIH0pXG4gICAgfVxufSk7XG5yZXN1bHQgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UocmVzdWx0KSk7XG5sZXQgbGlzdCA9IHJlc3VsdC5yZXN1bHQuaXRlbXM7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXQgb2YgbGlzdCkge1xuICAgIGlmIChpdC5pZCA9PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0LnRpdGxlLFxuICAgICAgICBkZXNjOiBcIuaXpeacn++8mlwiICsgaXQuaW5zZXJ0X3RpbWUgKyBcIlxcbui3r+W+hO+8mlwiICsgaXQucGF0aCxcbiAgICAgICAgdXJsOiBpdC5wYWdlX3VybFxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcwNjQyNzc1ODgyNiwiZ3JvdXAiOiLpmL/ph4wifSx7Im5hbWUiOiLlpYjmlq/mkJzntKIiLCJhdXRob3IiOiIiLCJmaW5kIjoiZnVuY3Rpb24gZ2V0aHRtbCgpIHtcbiAgICBsZXQgaHRtbCA9IHJlcXVlc3QoXCJodHRwczovL3d3dy5uaWNlc28ubmV0L3NlYXJjaC8/dHlwZT1hbGwmcT1cIiArIHMgKyBcIiZwYWdlPVwiICsgcGFnZSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIkNvb2tpZVwiOiBcIkhtX2x2dF85YzYwMWE0Njc2OTgwNWJiZDRlMTQyMzZkNTBiMDQ4Mz0xNzEyNTE4ODI4O0htX2x2dF9iNzZmZDU2OTQzZGEzN2RjMjIzZWIyODI5ZDRiYjY2Nz0xNzEyNTE4ODU1O2NzcmZ0b2tlbj1MdWpHVXFLREpENHg3anpjVk5EZWgyOTRJRVlzU294M0dQenFsSE8zTXQxNW10R05aZk5xZmxlNGhFaXp1VWd6O05pY2VJRD10M2hjdThjNDZuZHdubXkyODRjMTNrYnM4Y3UwaHYzeTtIbV9scHZ0X2I3NmZkNTY5NDNkYTM3ZGMyMjNlYjI4MjlkNGJiNjY3PTE3MTI1MTg5ODE7SG1fbHB2dF85YzYwMWE0Njc2OTgwNWJiZDRlMTQyMzZkNTBiMDQ4Mz0xNzEyNTE4OTg4XCJcbiAgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGh0bWw7XG59O1xudmFyIGh0bWwgPSBnZXRodG1sKCk7XG5cbmxldCBsaXN0ID0gcGRmYShodG1sLCBcImJvZHkmJi5zZWFyY2gtaXRlbVwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpdCBvZiBsaXN0KSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoaXQsIFwiYSYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiBiYXNpY1VybCtwZGZoKGl0LCBcImEmJmhyZWZcIiksXG4gICAgICAgIGRlc2M6IHBkZmgoaXQsIFwiLnNlYXJjaC1maWxlLXNpemUmJlRleHRcIikrXCIgXCIrcGRmaChpdCwgXCIuc2VhcmNoLWZpbGUtbnVtJiZUZXh0XCIpLFxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL3d3dy5uaWNlc28ubmV0IiwiZmluZEFsaVVybCI6ImxldCBodG1sID0gcmVxdWVzdChpbnB1dCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb29raWVcIjogXCJIbV9sdnRfOWM2MDFhNDY3Njk4MDViYmQ0ZTE0MjM2ZDUwYjA0ODM9MTcxMjUxODgyODtIbV9sdnRfYjc2ZmQ1Njk0M2RhMzdkYzIyM2ViMjgyOWQ0YmI2Njc9MTcxMjUxODg1NTtjc3JmdG9rZW49THVqR1VxS0RKRDR4N2p6Y1ZORGVoMjk0SUVZc1NveDNHUHpxbEhPM010MTVtdEdOWmZOcWZsZTRoRWl6dVVnejtOaWNlSUQ9dDNoY3U4YzQ2bmR3bm15Mjg0YzEza2JzOGN1MGh2M3k7SG1fbHB2dF9iNzZmZDU2OTQzZGEzN2RjMjIzZWIyODI5ZDRiYjY2Nz0xNzEyNTE4OTgxO0htX2xwdnRfOWM2MDFhNDY3Njk4MDViYmQ0ZTE0MjM2ZDUwYjA0ODM9MTcxMjUxODk4OFwiXG4gICAgfVxufSk7XG5sZXQgdXJsID0gcGRmaChodG1sLCBcIi5pdGVtLWRldGFpbC12aXNpdCYmZGF0YS11cmxcIik7XG5cbnJldHVybiBcImh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zL1wiICsgYmFzZTY0RGVjb2RlKHVybCkuc3BsaXQoXCIvcy9cIilbMV07IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMzA5NDA3OTA1MCwiZ3JvdXAiOiLpmL/ph4wiLCJydWxlVHlwZSI6IiJ9LHsibmFtZSI6IuWkuOWFi+aQnCIsImF1dGhvciI6IkBMb3lEZ0lrIiwiZmluZCI6IiN3cmFwJiZhOmhhcyhkaXYpXG4ubWwtMiYmVGV4dFxuYSYmaHJlZlxuc3BhbiYmVGV4dCIsImJhc2ljVXJsIjoiaHR0cHM6Ly93d3cucXVhcmsuc28vcz9xdWVyeT0qKiZwPWZ5cGFnZSIsImZpbmRBbGlVcmwiOiIjX19OVVhUX0RBVEFfXyYmSHRtbEBqcz1pbnB1dC5tYXRjaCgvXCIoaHR0cHM/XFw6XFwvXFwvcGFuLnF1YXJrLmNuLio/KVwiLylbMV07IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxNTY5MTczMDMxMSwiZ3JvdXAiOiLlpLjlhYsiLCJydWxlVHlwZSI6IkhUTUwifSx7Im5hbWUiOiLlpLjlhYvlkKciLCJhdXRob3IiOiJ6aGFvIiwiZmluZCI6ImJvZHkmJi5leGNlcnB0Om5vdCg6bWF0Y2hlcyjlsIrkuqvmnI3liqEpKVxuaDImJlRleHRcbmEmJmhyZWZcblxuaW1nJiZkYXRhLXNyY0Bqcz1pbnB1dC5yZXBsYWNlKFwiL3dwLWNvbnRlbnQvXCIsXCJodHRwczovL3d3dy5rdWFrZWJhLmNvbS93cC1jb250ZW50L1wiKTtcbiIsImJhc2ljVXJsIjoiaHR0cHM6Ly93d3cua3Vha2ViYS5jb20vcGFnZS9meXBhZ2U/cz0qKiIsImZpbmRBbGlVcmwiOiJAanM9IHBkZmEocmVxdWVzdChpbnB1dCksICcuYXJ0aWNsZS1jb250ZW50JiZhW2hyZWYqPVwicGFuLnF1YXJrLmNuXCJdJykubWFwKHY9PnBkZmgodixcImEmJmhyZWZcIikpOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTQ2MTc3MTU2NTUsImdyb3VwIjoi5aS45YWLIiwicnVsZVR5cGUiOiJIVE1MIn0seyJuYW1lIjoi55+t5Ymn5bqTIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoiLnNvdS1jb24tbGlzdCYmbGlcbmEsLTEmJnRpdGxlXG5hLC0xJiZocmVmIiwiYmFzaWNVcmwiOiJodHRwczovL2R1YW5qdWt1LnRvcC9zZWFyY2gucGhwP3E9KiomcGFnZT1meXBhZ2UiLCJmaW5kQWxpVXJsIjoiLnVtQ29weXJpZ2h0JiZhLC0xJiZocmVmIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxNDQwNTg2MzkyMCwiZ3JvdXAiOiLlpLjlhYsiLCJydWxlVHlwZSI6IkhUTUwifSx7Im5hbWUiOiLnn63liafnjKsiLCJhdXRob3IiOiJ6aGFvIiwiZmluZCI6ImxldCBzZWFyY2hVcmwgPSBiYXNpY1VybCArIFwiL2FwaS9tb3ZpZXM/cGFnZT1cIiArIHBhZ2UgKyBcIiZsaW1pdD0xMDAmbmFtZT1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKTtcbmxldCByZXNwb25zZSA9IHJlcXVlc3Qoc2VhcmNoVXJsKTtcbmxldCByZXNwb25zZURhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5kYXRhO1xubGV0IHJvd3MgPSByZXNwb25zZURhdGEucm93czsgLy8g6I635Y+W55S15b2x5L+h5oGv5pWw57uEXG5sZXQgZCA9IFtdO1xuXG5mb3IgKGxldCBqIG9mIHJvd3MpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogai5uYW1lLCAvLyDnlLXlvbHpk77mjqVcbiAgICAgICAgdXJsOiAgai5saW5rLy8g55S15b2x5ZCN56ewXG4gICAgfSk7XG59XG5cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9hcGkuZGpjYXQuc2JzIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTM2MjU0ODg5NDUsImdyb3VwIjoi5aS45YWLIiwicnVsZVR5cGUiOiIifSx7Im5hbWUiOiLkupHmmJ/nn63liafmkJzntKIiLCJhdXRob3IiOiJATG95RGdJayIsImZpbmQiOiJsZXQgZCA9IFtdO1xuXG5sZXQgaHRtbCA9IGZldGNoUEMoYmFzaWNVcmwgKyAnL2FwaS9maWxlcy92YWd1ZVF1ZXJ5Jywge1xuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogc1xuICAgIH0pLFxuICAgIG1ldGhvZDogJ1BPU1QnXG59KTtcbmxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5kYXRhO1xubGlzdC5mb3JFYWNoKChsaXN0KSA9PiB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGxpc3Quc291cmNlLm5hbWUucmVwbGFjZSgv77yILiovLCAnJyksXG4gICAgICAgIGRlc2M6IGxpc3Quc291cmNlLm5hbWUucmVwbGFjZSgvXi4qP++8iC8sICcnKS5yZXBsYWNlKC/vvIkuKi8sICcnKSxcbiAgICAgICAgdXJsOiBsaXN0LnNvdXJjZS51cmxcbiAgICB9KTtcbn0pO1xucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwOi8vZGouaXR2Ym94LmNjIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTI1NjE4NzgxNTAsImdyb3VwIjoi5aS45YWLIiwicnVsZVR5cGUiOiIifSx7Im5hbWUiOiLmmJ/liafnpL4iLCJhdXRob3IiOiLlraPpo44iLCJmaW5kIjoidmFyIHNlYXJjaFVybCA9IGJhc2ljVXJsK1wiL3NlYXJjaC8/a2V5d29yZD1cIitlbmNvZGVVUklDb21wb25lbnQocykrXCImcGFnZT1cIitwYWdlO1xudmFyIHJlc3AgPSByZXF1ZXN0KHNlYXJjaFVybClcbnZhciBpdGVtcyA9IHBkZmEocmVzcCwgXCJib2R5JiYuaXRlbTpoYXMoYVtocmVmXj0vXSlcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXRlbSBvZiBpdGVtcykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGl0ZW0sIFwiYSYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiBwZChpdGVtLCBcImEmJmhyZWZcIiwgYmFzaWNVcmwpLFxuICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sIFwiLmVyeC1udW0tZm9udCYmVGV4dFwiKSxcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly93d3cuc3RhcjIuY24iLCJmaW5kQWxpVXJsIjoicmV0dXJuIHBkZmgoZmV0Y2goaW5wdXQpLFwiLmRsaXBwLWNvbnQtYmQmJmEmJmhyZWZcIikiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzEyNTU3NDIwODUzLCJncm91cCI6IuWkuOWFiyIsInJ1bGVUeXBlIjoiIn0seyJuYW1lIjoiRlJFMTIzIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoibGV0IGQgPSBbXTtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIFwiL3NwP3F1ZXJ5PVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpKTtcbmxldCBqc29uID0gSlNPTi5wYXJzZShwZGZoKGh0bWwsIFwiI19fTlVYVF9EQVRBX18mJkh0bWxcIikpO1xubGV0IGxpc3QgPSBbXTtcbmpzb24uZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAoJC50eXBlKHYpID09PSBcIm9iamVjdFwiICYmIHYuaGFzT3duUHJvcGVydHkoXCJ0aXRsZVwiKSkgbGlzdC5wdXNoKHYpO1xufSk7XG5mb3IgKGxldCBpdCBvZiBsaXN0KSB7XG4gICAgbGV0IHVybCA9IGpzb25baXQudXJsXTtcbiAgICBpZiAoIXVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xuICAgICAgICB1cmwgPSBcImh0dHBzOi8vd3d3LlwiICsgdXJsO1xuICAgIH1cbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZToganNvbltpdC50aXRsZV0sXG4gICAgICAgIGRlc2M6IHVybCxcbiAgICAgICAgdXJsOiB1cmxcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly93d3cuZnJlMTIzLmNvbSIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjpmYWxzZSwibGFzdE1vZGlmeSI6MTcxMTkwOTYwMjM2MCwiZ3JvdXAiOiLlpLjlhYsiLCJydWxlVHlwZSI6IiJ9LHsibmFtZSI6IuefreWJp+aQnCIsImF1dGhvciI6IkBMb3lEZ0lrIiwiZmluZCI6ImxldCBib2R5ID0ge1xuICAgIFwicGFnZVwiOiBwYWdlLFxuICAgIFwicVwiOiBzLFxuICAgIFwidXNlclwiOiBcIlwiLFxuICAgIFwiZm9ybWF0XCI6IFtdLFxuICAgIFwic2hhcmVfdGltZVwiOiBcIlwiLFxuICAgIFwic2l6ZVwiOiAxNSxcbiAgICBcInR5cGVcIjogXCJRVUFSS1wiXG59XG5sZXQgZCA9IFtdO1xubGV0IGxpc3QgPSBKU09OLnBhcnNlKGZldGNoKGJhc2ljVXJsKycvdjEvc2VhcmNoL2Rpc2snLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgYm9keVxufSkpLmRhdGEubGlzdDtcbmZvciAobGV0IF8gb2YgbGlzdCkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBfLmRpc2tfbmFtZSxcbiAgICAgICAgZGVzYzogXCLij7HvuI8gXCIgKyBfLnNoYXJlZF90aW1lICsgXCLjgIDwn5SWIFwiICsgXy5zaGFyZV91c2VyLFxuICAgICAgICB1cmw6IF8ubGlua1xuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL2R1YW5qdXNvLmNvbSIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzExMjY0ODQ5NzM3LCJncm91cCI6IuWkuOWFiyIsInJ1bGVUeXBlIjoiIn0seyJuYW1lIjoi54ix55yL55+t5YmnIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoiZGF0YVxubmFtZVxudXJsXG5AanM9ICQkLmVwaXNvZGVzICsgXCLpm4Yg4o+x77iPXCIgKyAkJC5hZGR0aW1lIiwiYmFzaWNVcmwiOiJodHRwczovL3lzLjExMHQuY24vYXBpL2FqYXgucGhwP2FjdD1zZWFyY2gmbmFtZT0qKiIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjpmYWxzZSwibGFzdE1vZGlmeSI6MTcxMTE3NTQ4NTk5MCwiZ3JvdXAiOiLlpLjlhYsiLCJydWxlVHlwZSI6IkpTT04ifSx7Im5hbWUiOiLnn63liadTIiwiYXV0aG9yIjoiQExveURnSWsiLCJmaW5kIjoiXG5uYW1lXG5jb25uZWN0aW9uX3VybCIsImJhc2ljVXJsIjoiaHR0cHM6Ly9hcGkuc3NsLmdzL2FwaS5waHA/a2V5d29yZD0qKiIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzExMTc5MjIwMDE4LCJncm91cCI6IuWkuOWFiyIsInJ1bGVUeXBlIjoiSlNPTiJ9LHsibmFtZSI6IuS6keaYn+efreWJpyIsImF1dGhvciI6IkBMb3lEZ0lrIiwiZmluZCI6ImxldCBkID0gW107XG5sZXQgbGlzdCA9IHBkZmEoZmV0Y2goYmFzaWNVcmwrXCI/c2VhcmNoPVwiK2VuY29kZVVSSUNvbXBvbmVudChzKSksIFwiYm9keSYmLmNvbnRhaW5lciYmLmNhcmQ6aGFzKC5jYXJkLWhlYWRlcilcIik7XG5mb3IgKGxldCBkaXYgb2YgbGlzdCkge1xuICAgIGxldCBocmVmID0gcGQoZGl2LCBcImEsMCYmaHJlZlwiLCBiYXNpY1VybCkuc3BsaXQoXCJcXG5cIilbMF07XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoZGl2LCBcInN0cm9uZyYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiBocmVmXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHA6Ly9kai5tb2lsLmNjIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOmZhbHNlLCJsYXN0TW9kaWZ5IjoxNzExMDc4MjY4NDM4LCJncm91cCI6IuWkuOWFiyJ9LHsibmFtZSI6IuWkuOWFi+ebmOaQnCIsImZpbmQiOiJsZXQgdXJsID0gJ2h0dHBzOi8vcWtwYW5zby5jb20vc2VhcmNoP3BhZ2U9JysgcGFnZSArJyZxPScgKyBzICsgJyZzaGFyZV90aW1lPXdlZWsmdHlwZT1RVUFSSyZ1c2VyPSc7XG5sZXQganNvbiA9IHBvc3QoJ2h0dHBzOi8vcWtwYW5zby5jb20vdjEvc2VhcmNoL2Rpc2snLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBSZWZlcmVyOiB1cmxcbiAgICB9LFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgXCJwYWdlXCI6cGFnZSxcbiAgICAgICAgXCJxXCI6cyxcbiAgICAgICAgXCJ1c2VyXCI6XCJcIixcbiAgICAgICAgXCJmb3JtYXRcIjpbXCIubXA0XCIsXCIubWt2XCIsXCIuZmx2XCIsXCIucm12YlwiLFwiLndtdlwiLFwiLjNncFwiLFwiLm1vdlwiLFwiLm00dlwiLFwiLnN3ZlwiLFwiLmY0dlwiLFwiLndlYm1cIixcIi5vZ2dcIixcIi5vZ3ZcIixcIi5tM3U4XCIsXCIubXBkXCIsXCIuYXZpXCIsXCIubXBnXCIsXCIubXBlZ1wiLFwiLm1wZVwiLFwiLm1wdlwiLFwiLm0ydlwiLFwiLm14ZlwiLFwiLjNnMlwiLFwiLmY0cFwiLFwiLmY0YVwiLFwiLmY0YlwiXSxcbiAgICAgICAgXCJzaGFyZV90aW1lXCI6XCJ3ZWVrXCIsXG4gICAgICAgIFwic2l6ZVwiOjE1LFxuICAgICAgICBcInR5cGVcIjpcIlFVQVJLXCJcbiAgICB9KVxufSk7XG4vL2xvZyhKU09OKVxuanNvbiA9IEpTT04ucGFyc2UoanNvbik7XG5sZXQgbGlzdCA9IGpzb24uZGF0YS5saXN0O1xubG9nKGxpc3QpXG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gbGlzdFtpXTtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogaXQuZGlza19uYW1lLFxuICAgICAgICAvL3BpY191cmw6IHBkKGl0LCBcImltZyYmc3JjXCIsIHVybCksXG4gICAgICAgIHVybDogaXQubGluayxcbiAgICAgICAgZGVzYzogaXQuc2hhcmVkX3RpbWUgKyBcIlxcblwiICsgaXQubGlua1xuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiIiLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcwNjU5NTgzNjUxNiwiZ3JvdXAiOiLlpLjlhYsifSx7Im5hbWUiOiLnm5jmkJxLSyIsImZpbmQiOiJwYWdlID0gKHBhZ2UgLSAxKSAqIDEwO1xubGV0IHVybCA9IGJhc2ljVXJsK1wiL3NlYXJjaD9rZXl3b3JkPVwiICsgcyArIFwiJm9mZnNldD1cIiArIHBhZ2UgKyBcIiZwYW49cXVhcmtcIjtcbmxldCBodG1sID0gcmVxdWVzdCh1cmwpO1xubGV0IGFyciA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwgXCIuZ3JpZC5ncmlkLWNvbHMtMSYmLml0ZW1zLXN0YXJ0XCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1ID0gcGFyc2VEb21Gb3JIdG1sKGl0LCBcImEmJmhyZWZcIik7XG4gICAgbGV0IHBpY191cmwgPSBwYXJzZURvbUZvckh0bWwoaXQsIFwiaW1nJiZzcmNcIik7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChpdCwgXCIuYnJlYWstYWxsJiZUZXh0XCIpLnNwbGl0KFwiaHR0cFwiKVswXSxcbiAgICAgICAgcGljX3VybDogcGljX3VybCA9PT0gXCIvZmF2aWNvbi5wbmdcIiA/IFwiaHR0cHM6Ly93d3cucGFuc2VhcmNoLm1lL1wiICsgcGljX3VybCA6IHBpY191cmwsXG4gICAgICAgIHVybDogdSxcbiAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGl0LCBcInAmJlRleHRcIikgKyBcIlxcblwiICsgdVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL3d3dy5wYW5zZWFyY2gubWUiLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMDMzNzk2NDMwMiwiZ3JvdXAiOiLlpLjlhYsiLCJhdXRob3IiOiJATG95RGdJayJ9LHsibmFtZSI6Iui2o+ebmOaQnCIsImZpbmQiOiJ2YXIgZCA9IFtdO1xudmFyIGJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgXCJzdHlsZVwiOiBcImdldFwiLFxuICAgIFwiZGF0YXNyY1wiOiBcInNlYXJjaFwiLFxuICAgIFwicXVlcnlcIjoge1xuICAgICAgICBcImlkXCI6IFwiXCIsXG4gICAgICAgIFwiZGF0ZXRpbWVcIjogXCJcIixcbiAgICAgICAgXCJjb21tb25pZFwiOiAxLFxuICAgICAgICBcInBhcm1pZFwiOiBcIlwiLFxuICAgICAgICBcImZpbGVpZFwiOiBcIlwiLFxuICAgICAgICBcInJlcG9ydGlkXCI6IFwiXCIsXG4gICAgICAgIFwidmFsaWRpZFwiOiBcIlwiLFxuICAgICAgICBcInNlYXJjaHRleHRcIjogc1xuICAgIH0sXG4gICAgXCJwYWdlXCI6IHtcbiAgICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcbiAgICAgICAgXCJwYWdlSW5kZXhcIjogcGFnZVxuICAgIH0sXG4gICAgXCJvcmRlclwiOiB7XG4gICAgICAgIFwicHJvcFwiOiBcImlkXCIsXG4gICAgICAgIFwib3JkZXJcIjogXCJkZXNjXCJcbiAgICB9LFxuICAgIFwibWVzc2FnZVwiOiBcIlxcdThiZjdcXHU2YzQyXFx1OGQ0NFxcdTZlOTBcXHU1MjE3XFx1ODg2OFxcdTY1NzBcXHU2MzZlXCJcbn0pO1xuSlNPTi5wYXJzZShwb3N0KFwiaHR0cHM6Ly92LmZ1bmxldHUuY29tL3NlYXJjaFwiLCB7XG4gICAgYm9keTogYm9keVxufSkpLmRhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgZGVzYzogXCJcXHUyMDFjXFx1MjAxY1xcdTIwMWRcXHUyMDFkPGZvbnQgY29sb3I9I2YxM2I2NmE+XFx1OGRhM1xcdTc2ZDhcXHU2NDFjPC9mb250PiZuYnNwO1wiICsgaXRlbS5jYXRlZ29yeSArIFwiIFwiICsgaXRlbS5maWxldHlwZSArIFwiIFwiICsgaXRlbS51cGRhdGV0aW1lLFxuICAgICAgICB1cmw6IGl0ZW0udXJsLFxuICAgICAgICBjb2xfdHlwZTogXCJ0ZXh0XzFcIlxuICAgIH0pO1xufSk7XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6IiIsImZpbmRBbGlVcmwiOiIiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzA2NTk5NDEyOTM5LCJncm91cCI6IuWkuOWFiyJ9LHsibmFtZSI6IuW9seinhuaQnOe0oiIsImF1dGhvciI6IkBMb3lEZ0lrIiwiZmluZCI6ImxldCB1cmwgPSBiYXNpY1VybCArIFwiL3NlYXJjaC5waHA/cT1cIitlbmNvZGVVUklDb21wb25lbnQocykrXCImcGFnZT1cIitwYWdlO1xubGV0IGh0bWwgPSByZXF1ZXN0KHVybCk7XG5sZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCBcIi5saXN0JiZsaTpoYXMoYSlcIik7XG5cbmxldCBiZXQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aC0xOyBpKz0yKSB7XG4gICAgbGV0IGl0ID0gYXJyW2ldO1xuICAgIGxldCB1dGl0bGUgPSBwZGZoKGl0LCBcImEsLTEmJlRleHRcIik7XG4gICAgbGV0IHVzZXJpYWwgPSBwZGZoKGl0LCBcInNwYW4mJlRleHRcIik7XG4gICAgbGV0IGl0dD1hcnJbaSsxXVxuICAgIGxldCB1ID0gcGRmaChpdHQsIFwiYSYmaHJlZlwiKTtcbiAgICB1c2VyaWFsKz1cIsK3XCIrcGRmaChpdHQsIFwiYSYmVGV4dFwiKS5yZXBsYWNlKFwi6ZO+5o6l77yaXCIsXCJcIikucmVwbGFjZShcIu+8iOeCueaIkei3s+i9rO+8iVwiLFwiXCIpO1xuICAgIGJldC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHV0aXRsZSxcbiAgICAgICAgdXJsOiB1LFxuICAgICAgICBkZXNjOiB1c2VyaWFsXG4gICAgfSk7XG59XG5cbnJldHVybiBiZXQ7XG4iLCJiYXNpY1VybCI6Imh0dHA6Ly9jc3NxMS5reHNvdS5uZXQiLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMDQ4ODQwOTMwNCwiZ3JvdXAiOiLlpLjlhYsifSx7Im5hbWUiOiLov4Xpm7fnlLXlvbHlpKnloIIiLCJmaW5kIjoibGV0IHVybCA9IGJhc2ljVXJsICsgXCIvcy9cIiArIHMgKyBcIi5odG1sXCI7XHJcbmxldCBodG1sID0gcmVxdWVzdCh1cmwpO1xyXG5sZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCBcImJvZHkmJi5iMDA3XCIpO1xyXG5sZXQgYmV0ID0gW107XHJcbmZvciAobGV0IGkgaW4gYXJyKSB7XHJcbiAgICBsZXQgaXQgPSBhcnJbaV07XHJcbiAgICBsZXQgdXRpdGxlID0gcGRmaChpdCwgXCJoMiYmYSYmVGV4dFwiKTtcclxuICAgIGxldCB1c2VyaWFsID0gcGRmaChpdCwgXCJwJiZUZXh0XCIpO1xyXG4gICAgbGV0IHVpbWFnZSA9IHBkZmgoaXQsIFwiaW1nJiZzcmNcIik7XHJcbiAgICBsZXQgdSA9IHBkKGl0LCBcImEmJmhyZWZcIiwgYmFzaWNVcmwpO1xyXG4gICAgYmV0LnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiB1dGl0bGUsXHJcbiAgICAgICAgdXJsOiB1LFxyXG4gICAgICAgIHBpY191cmw6IHVpbWFnZSxcclxuICAgICAgICBkZXNjOiB1c2VyaWFsXHJcbiAgICB9KTtcclxufVxyXG5yZXR1cm4gYmV0OyIsImJhc2ljVXJsIjoiaHR0cHM6Ly94dW5sZWk4LmNjIiwiZmluZEFsaVVybCI6InJldHVybiBuZXcgRWFzeU5leHRQYWdlKHBkZmEocmVxdWVzdChpbnB1dCksIFwiYm9keSYmLmJhZjZlOTYwZGRcIikubWFwKHYgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGFsaVVybDogcGRmaCh2LCBcImEmJmhyZWZcIiksXG4gICAgICAgIHRpdGxlOiBwZGZoKHYsIFwiYSYmdGl0bGVcIiksXG4gICAgfTtcbn0pLCBcInRleHRfMVwiKTsiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzA2NTkzNTUxNzc2LCJncm91cCI6IuejgeWKmyJ9LHsibmFtZSI6Ik1pa2FuIiwiZmluZCI6ImxldCBrZXkgPSBzO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsK1wiL0hvbWUvU2VhcmNoP3NlYXJjaHN0cj1cIiArIGtleSk7XG5sZXQgbGlzdCA9IHBkZmEoaHRtbCwgXCIubS1zZWFyY2gtY29udGVudCYmLm0tc2VhcmNoLWl0ZW1cIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXRlbSBvZiBsaXN0KSB7XG4gICAgbGV0IHVybD0gcGRmaChpdGVtLCBcImEmJmhyZWZcIik7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgXCIudGV4dCYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIGNvbF90eXBlOiBcInRleHRfMVwiLFxuICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sIFwiLmRhdGUmJlRleHRcIilcbiAgICB9KTtcbn1cbnJldHVybiBkO1xuIiwiYmFzaWNVcmwiOiJodHRwczovL21pa2FuaW1lLnR2IiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTAzMzc5NDIyNTMsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiQExveURnSWsifSx7Im5hbWUiOiLno4HlipvnjKsiLCJmaW5kIjoibGV0IGFwaSA9IFwiL3NlYXJjaC1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiLTAtMC1cIiArIHBhZ2UgKyBcIi5odG1sXCI7XG5sZXQgaHRtbCA9IHJlcXVlc3QoYmFzaWNVcmwgKyBhcGkpO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCJib2R5JiYuc3Nib3hcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogXCI8c21hbGw+XCIgKyBwZGZoKGFycltpXSwgXCIudGl0bGUmJlRleHRcIikgKyBcIjwvc21hbGw+XCIsXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIi5zYmFyJiZUZXh0XCIpLm1hdGNoKC8o5re75Yqg5pe26Ze0Lio/KeacgOi/kS8pWzFdLFxuICAgICAgICB1cmw6IHBkZmgoYXJyW2ldLCBcIi5zYmFyJiZhJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vY2xtNDM2LmJ1enoiLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcwNjQyNzkyMzk5MSwiZ3JvdXAiOiLno4HlipsifSx7Im5hbWUiOiLnp43lrZDlkKciLCJmaW5kIjoibGV0IGFwaSA9IFwiL3NlYXJjaD93ZD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiJnNvcnQ9cmVsJnBhZ2U9XCIgKyBwYWdlO1xubGV0IGh0bCA9IHBkZmgocmVxdWVzdChiYXNpY1VybCArIGFwaSksIFwic2NyaXB0JiZIdG1sXCIpLnJlcGxhY2UoL2RvY3VtZW50LndyaXRlXFwoKC4qPylcXClcXDsvLCBcIiQxXCIpLnJlcGxhY2UoXCJ3aW5kb3dcIiwgXCJ3aW5kb3cwXCIpO1xubGV0IGh0bWwgPSBldmFsKGh0bCk7XG5sZXQgYXJyID0gcGRmYShodG1sLCBcIi5tZWRpYS1saXN0JiYubWVkaWEtYm9keVwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCJhJiZUZXh0XCIpLFxuICAgICAgICBkZXNjOiBwZGZoKGFycltpXSwgXCIuc2VhcmNoLWluZm8mJlRleHRcIiksXG4gICAgICAgIHVybDogYmFzaWNVcmwgKyBwZGZoKGFycltpXSwgXCJhJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHA6Ly96emIwMC5jbHViIiwiZmluZEFsaVVybCI6ImxldCBodGwgPSBwZGZoKHJlcXVlc3QoaW5wdXQpLCBcInNjcmlwdCYmSHRtbFwiKS5yZXBsYWNlKC9kb2N1bWVudC53cml0ZVxcKCguKj8pXFwpXFw7LywgXCIkMVwiKS5yZXBsYWNlKFwid2luZG93XCIsIFwid2luZG93MFwiKTtcbmxldCBodG1sID0gcGRmaChldmFsKGh0bCksIFwiLmJ0LW9wdCYmYSYmaHJlZlwiKTtcbnJldHVybiBodG1sOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MDY0Mjc2MzQ4NzQsImdyb3VwIjoi56OB5YqbIiwibWFnbmV0VXJsIjoibGV0IGh0bCA9IHBkZmgocmVxdWVzdChpbnB1dCksIFwic2NyaXB0JiZIdG1sXCIpLnJlcGxhY2UoL2RvY3VtZW50LndyaXRlXFwoKC4qPylcXClcXDsvLCBcIiQxXCIpLnJlcGxhY2UoXCJ3aW5kb3dcIiwgXCJ3aW5kb3cwXCIpO1xubGV0IGh0bWwgPSBwZGZoKGV2YWwoaHRsKSwgXCIuYnQtb3B0JiZhJiZocmVmXCIpO1xucmV0dXJuIGh0bWw7In0seyJuYW1lIjoiQlRTT1ciLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IGFwaSA9IFwiL3NlYXJjaC9cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiL3BhZ2UvXCIgKyBwYWdlO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpKTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwiLmRhdGEtbGlzdCYmLnJvdzpub3QoLmhpZGRlbi14cylcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdXJsbCA9IHBkZmgoYXJyW2ldLCBcImEmJmhyZWZcIik7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcImEmJnRpdGxlXCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIi5zaXplLWRhdGUmJlRleHRcIiksXG4gICAgICAgIHVybDogdXJsbC5zdGFydHNXaXRoKFwiaHR0cFwiKSA/IHVybGwgOiBcImh0dHBzOlwiICsgdXJsbFxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwibWFnbmV0VXJsIjoidmFyIGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQsIHt9KSwgXCIjbWFnbmV0T3BlbiYmYSYmaHJlZlwiKTtcbnJldHVybiBodG1sOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9idHNvdy5tb3RvcmN5Y2xlcyIsImZpbmRBbGlVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCwge30pLCBcIiNtYWduZXRPcGVuJiZhJiZocmVmXCIpO1xucmV0dXJuIGh0bWw7IiwibGFzdE1vZGlmeSI6MTcxMDQyNjQ5MTU4OSwiZ3JvdXAiOiLno4HlipsiLCJhdXRob3IiOiIifSx7Im5hbWUiOiJCVOWQg+WKmyIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvc2VhcmNoL1wiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpICsgXCIvcGFnZS1cIiArIHBhZ2UgKyBcIi5odG1sXCI7XG5sZXQgaHRtbCA9IHJlcXVlc3QoYmFzaWNVcmwgKyBhcGkpO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCIubGlzdC12aWV3JiYuaXRlbTpub3QoOm1hdGNoZXMoXFx1NTcyOFxcdTdlYmZcXHU2NGFkXFx1NjUzZSkpXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcImg0LS0ubGFiZWwmJlRleHRcIikuc21hbGwoKSxcbiAgICAgICAgZGVzYzogcGRmaChhcnJbaV0sIFwicCYmVGV4dFwiKS5tYXRjaCgvKOaWh+S7tuWkp+Wwjy4qPynmlofku7bmlbDph48vKVsxXS5zbGljZSgwLCAtOSksXG4gICAgICAgIHVybDogYmFzaWNVcmwgKyBwZGZoKGFycltpXSwgXCJhJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJtYWduZXRVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCksIFwiLmxpc3QtdW5zdHlsZWQmJmEmJmhyZWZcIik7XG5yZXR1cm4gaHRtbDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vMjIzLnNva2syMy5idXp6IiwiZmluZEFsaVVybCI6InZhciBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0KSwgXCIubGlzdC11bnN0eWxlZCYmYSYmaHJlZlwiKTtcbnJldHVybiBodG1sOyIsImxhc3RNb2RpZnkiOjE3MTA0MjY1NzE5NTUsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi56OB5pCcLmNvbSIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvc2VhcmNoLnBocD9rZXk9XCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIiZwPVwiICsgcGFnZTtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIGFwaSk7XG5sZXQgYXJyID0gcGRmYShodG1sLCBcImJvZHkmJi5zc2JveFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCJhJiZUZXh0XCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIi5zYmFyJiZUZXh0XCIpLFxuICAgICAgICB1cmw6IGJhc2ljVXJsICsgcGRmaChhcnJbaV0sIFwiYSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwibWFnbmV0VXJsIjoidmFyIGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQsIHt9KSwgXCJzcGFuJiZocmVmXCIpO1xucmV0dXJuIGh0bWw7IiwiYmFzaWNVcmwiOiJodHRwczovL1xcdTc4YzFcXHU2NDFjLmNvbSIsImZpbmRBbGlVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCwge30pLCBcInNwYW4mJmhyZWZcIik7XG5yZXR1cm4gaHRtbDsiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2ODQzODY0LCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuejgeWKm+aQnOe0oiIsInBhZ2UiOmZhbHNlLCJmaW5kIjoiXG5sZXQgYXBpID0gXCIvc2VhcmNoP3E9XCIgKyBlbmNvZGVVUklDb21wb25lbnQocyk7XG5sZXQgaHRtbCA9IHJlcXVlc3QoYmFzaWNVcmwgKyBhcGkpO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCIubGlzdCYmLml0ZW1cIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChhcnJbaV0sIFwiLmZpbGVuYW1lJiZUZXh0XCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIi5zaXplJiZUZXh0XCIpLFxuICAgICAgICB1cmw6IGJhc2ljVXJsICsgcGRmaChhcnJbaV0sIFwiYSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwibWFnbmV0VXJsIjoidmFyIGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQsIHt9KSwgXCJib2R5JiYubWFnbmV0LWJveCYmaW5wdXQmJnZhbHVlXCIpO1xucmV0dXJuIGh0bWw7IiwiYmFzaWNVcmwiOiJodHRwczovL2NpbGlzb3VzdW8uY29tIiwiZmluZEFsaVVybCI6InZhciBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0LCB7fSksIFwiYm9keSYmLm1hZ25ldC1ib3gmJmlucHV0JiZ2YWx1ZVwiKTtcbnJldHVybiBodG1sOyIsImxhc3RNb2RpZnkiOjE3MTA0MjY0NjA5NzQsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi5Y+j6KKL56OB5YqbIiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCBhcGkgPSBcIi9zZWFyY2gvXCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIi9cIiArIHBhZ2U7XG5sZXQgaHRtbCA9IHJlcXVlc3QoYmFzaWNVcmwgKyBhcGkpO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCJ0Ym9keSYmdHJcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChhcnJbaV0sIFwiYSYmVGV4dFwiKS5zbWFsbCgpLFxuICAgICAgICBkZXNjOiBwZGZoKGFycltpXSwgXCJUZXh0XCIpLm1hdGNoKC9cXGQrXFwtXFxkK1xcLVxcZCsuKi8pWzBdLFxuICAgICAgICB1cmw6IHBkZmgoYXJyW2ldLCBcImEsMSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL2tkLmNsa2QueHl6IiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTA0MjY1ODYyMTYsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi5ru05ru056OB5YqbIiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCBhcGkgPSBcIi9zZWFyY2gvXCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIl9jbGlja19cIiArIHBhZ2UgKyBcIi5odG1sXCI7XG5sZXQgaHRtbCA9IHJlcXVlc3QoYmFzaWNVcmwgKyBhcGkpO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCJib2R5JiYucGFuZWxcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChhcnJbaV0sIFwiYSYmVGV4dFwiKS5zbWFsbCgpLFxuICAgICAgICBkZXNjOiBwZGZoKGFycltpXSwgXCJ0Ym9keSYmVGV4dFwiKSxcbiAgICAgICAgdXJsOiBiYXNpY1VybCArIHBkZmgoYXJyW2ldLCBcImEmJmhyZWZcIilcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsIm1hZ25ldFVybCI6InZhciBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0KSwgXCIuZG93bmJ1dHRvbiYmYSYmaHJlZlwiKTtcbnJldHVybiBodG1sOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9nNzA4MGFwbWd3bzFzNWtuLnh5eiIsImZpbmRBbGlVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCksIFwiLmRvd25idXR0b24mJmEmJmhyZWZcIik7XG5yZXR1cm4gaHRtbDsiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2NjIwMzkyLCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuiIheiIheejgeWKmyIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvc2VhcmNoP3NvcnQ9cmVsZSZ3b3JkPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpICsgXCImcGFnZT1cIiArIHBhZ2U7XG5sZXQgaHRtbCA9IHJlcXVlc3QoYmFzaWNVcmwgKyBhcGkpO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCJib2R5JiYubGlzdC1ncm91cC1pdGVtXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcImEmJlRleHRcIikuc21hbGwoKSxcbiAgICAgICAgZGVzYzogcGRmaChhcnJbaV0sIFwiLmFsaWduLXNlbGYtY2VudGVyJiZUZXh0XCIpLFxuICAgICAgICB1cmw6IGJhc2ljVXJsICsgcGRmaChhcnJbaV0sIFwiYSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwibWFnbmV0VXJsIjoidmFyIGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQpLCBcIi5idC1ib3gmJmEmJmhyZWZcIik7XG5yZXR1cm4gaHRtbDsiLCJiYXNpY1VybCI6Imh0dHA6Ly9qajM0ODgudG9wIiwiZmluZEFsaVVybCI6InZhciBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0KSwgXCIuYnQtYm94JiZhJiZocmVmXCIpO1xucmV0dXJuIGh0bWw7IiwibGFzdE1vZGlmeSI6MTcxMDQyNjY2MjgyOCwiZ3JvdXAiOiLno4HlipsiLCJhdXRob3IiOiIifSx7Im5hbWUiOiLmkJznlaoiLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IGFwaSA9IFwiL3M/d29yZD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiJnBhZ2U9XCIgKyBwYWdlO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBSZWZlcmVyOiBcImh0dHBzOi8vY2RuLnNvZmFuLm9uZS9cIlxuICAgIH1cbn0pO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCJib2R5JiYubGlzdC11bnN0eWxlZFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCJhJiZUZXh0XCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIi5yZXN1bHQtcmVzb3VyY2UtbWV0YS1pbmZvLS0uY29tbW9uLWxpbmsmJlRleHRcIiksXG4gICAgICAgIHVybDogYmFzaWNVcmwgKyBwZGZoKGFycltpXSwgXCJhJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJtYWduZXRVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgUmVmZXJlcjogXCJodHRwczovL2Nkbi5zb2Zhbi5vbmUvXCJcbiAgICB9XG59KSwgXCIjbWFnbmV0LWxpbmsmJmEmJmhyZWZcIik7XG5yZXR1cm4gaHRtbDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vY2RuLnNvZmFuLm9uZTo2NTUzMyIsImZpbmRBbGlVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgUmVmZXJlcjogXCJodHRwczovL2Nkbi5zb2Zhbi5vbmUvXCJcbiAgICB9XG59KSwgXCIjbWFnbmV0LWxpbmsmJmEmJmhyZWZcIik7XG5yZXR1cm4gaHRtbDsiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2NjMzODU1LCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuejgeWKm+aQnCIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvc2VhcmNoLVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpICsgXCItMC0wLVwiICsgcGFnZSArIFwiLmh0bWxcIjtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIGFwaSk7XG5sZXQgYXJyID0gcGRmYShodG1sLCBcImJvZHkmJi5zc2JveFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCIudGl0bGUmJlRleHRcIikuc21hbGwoKSxcbiAgICAgICAgZGVzYzogcGRmaChhcnJbaV0sIFwiLnNiYXImJlRleHRcIikubWF0Y2goLyjmt7vliqDml7bpl7QuKj8p5pyA6L+RLylbMV0sXG4gICAgICAgIHVybDogcGRmaChhcnJbaV0sIFwiLnNiYXImJmEmJmhyZWZcIilcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9jbHMwNzEuYnV6eiIsImZpbmRBbGlVcmwiOiIiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2OTE0MTQ1LCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuejgeWKm+eJhyIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvc28ucGhwP3BhZ2U9XCIgKyBwYWdlICsgXCImd29yZD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKTtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIGFwaSk7XG5sZXQgYXJyID0gcGRmYShodG1sLCBcInRib2R5JiYuZGVmYXVsdDpoYXMoYVtocmVmXj0vXSlcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChhcnJbaV0sIFwiYSYmVGV4dFwiKS5zbWFsbCgpLFxuICAgICAgICBkZXNjOiBwZGZoKGFycltpXSwgXCJUZXh0XCIpLm1hdGNoKC9cXGQrKD86XFwuXFxkKyk/KD86XFxzKyk/W2dta2JdKy4qPyg/OlxcLVxcZCtcXHMpL2kpWzBdLFxuICAgICAgICB1cmw6IGJhc2ljVXJsICsgcGRmaChhcnJbaV0sIFwiYSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwibWFnbmV0VXJsIjoidmFyIGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQsIHt9KSwgXCIjbWFnbmV0JiZ0aXRsZVwiKTtcbnJldHVybiBodG1sOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9tLmJ0YXBwLmNjIiwiZmluZEFsaVVybCI6InZhciBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0LCB7fSksIFwiI21hZ25ldCYmdGl0bGVcIik7XG5yZXR1cm4gaHRtbDsiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2ODg5ODUwLCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuejgeWKm+WkmiIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvc2VhcmNoLVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpICsgXCItcmVsLVwiICsgcGFnZSArIFwiLmh0bWxcIjtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIGFwaSwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgUmVmZXJlcjogXCJodHRwczovL2RvYy5odG1jZG4uY29tXCJcbiAgICB9XG59KTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwiYm9keSYmLnNzYm94OmhhcyhhKVwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCJoMyYmVGV4dFwiKS5zbWFsbCgpLFxuICAgICAgICBkZXNjOiBwZGZoKGFycltpXSwgXCJUZXh0XCIpLm1hdGNoKC/mt7vliqDml7bpl7QuKi8pWzBdLnNwbGl0KFwiXFx1NjU4N1xcdTRlZjZcXHU2NTcwXCIpWzBdLFxuICAgICAgICB1cmw6IHBkZmgoYXJyW2ldLCBcImE6bWF0Y2hlcyhcXHU3OGMxXFx1NTI5YlxcdTk0ZmVcXHU2M2E1KSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL2RvYy5odG1jZG4uY29tIiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTA0MjY3OTQ2NTQsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi56OB5Yqb5rW3IiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCBhcGkgPSBcIi9zZWFyY2gtXCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIi0wLTAtXCIgKyBwYWdlICsgXCIuaHRtbFwiO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpKTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwiLnNlYXJjaF9saXN0JiZkbFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCJhJiZUZXh0XCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIi5pbmZvJiZUZXh0XCIpLm1hdGNoKC8o5pS25b2V5pe26Ze0Lio/KeejgeWKmy8pWzFdLFxuICAgICAgICB1cmw6IHBkZmgoYXJyW2ldLCBcIi5pbmZvJiZhJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vNWV3M2RyYzcudG9wIiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTA0MjY3NzgzMjAsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi56OB5Yqb6YW3IiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCB1cmwgPSBiYXNpY1VybCtcIi90b1NlYXJjaFwiO1xubGV0IGpzb24gPSBwb3N0KHVybCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgb3JpZ2luOiBiYXNpY1VybCxcbiAgICAgICAgUmVmZXJlcjogYmFzaWNVcmxcbiAgICB9LFxuICAgIGJvZHk6IHtcbiAgICAgICAgXCJrZXl3b3JkXCI6IHMsXG4gICAgICAgIFwicGFnZVwiOiBwYWdlIC0gMSxcbiAgICAgICAgXCJzaXplXCI6IDE1XG4gICAgfVxufSk7XG5qc29uID0gSlNPTi5wYXJzZShqc29uKTtcbmxldCBsaXN0ID0ganNvbi5kYXRhLmNvbnRlbnQ7XG5sZXQgZCA9IFtdO1xuXG5mdW5jdGlvbiBmb3JtYXRGaWxlU2l6ZShzaXplKSB7XG4gICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFwiMCBCeXRlc1wiO1xuICAgIH1cbiAgICB2YXIgdW5pdHMgPSBbXCJCeXRlc1wiLCBcIktCXCIsIFwiTUJcIiwgXCJHQlwiLCBcIlRCXCJdO1xuICAgIHZhciBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgICByZXR1cm4gYCR7KHNpemUgLyBNYXRoLnBvdygxMDI0LCBpKSkudG9GaXhlZCgyKX0gJHt1bml0c1tpXX1gO1xufVxuZm9yIChsZXQgaXQgb2YgbGlzdCkge1xuICAgIHZhciBkYXRlID0gbmV3IERhdGUoaXQudGltZXN0YW1wKTtcbiAgICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIHZhciBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICB2YXIgZm9ybWF0dGVkRGF0ZSA9IGAke3llYXJ9LSR7bW9udGggPCAxMCA/IFwiMFwiICsgbW9udGggOiBtb250aH0tJHtkYXkgPCAxMCA/IFwiMFwiICsgZGF5IDogZGF5fWA7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0Lm5hbWUuc21hbGwoKSxcbiAgICAgICAgdXJsOiBcIm1hZ25ldDo/eHQ9dXJuOmJ0aWg6XCIgKyBpdC5idGloLFxuICAgICAgICBkZXNjOiBcIlxcdTY1ODdcXHU0ZWY2XFx1NTkyN1xcdTVjMGZcXHVmZjFhXCIgKyBmb3JtYXRGaWxlU2l6ZShpdC5zaXplKSArIFwiXFx0XFx0XFx1NjUzNlxcdTVmNTVcXHU2NWY2XFx1OTVmNFxcdWZmMWFcIiArIGZvcm1hdHRlZERhdGVcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9jaWxpa3UubmV0IiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTA0MjY5NjA2MzksImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi56OB5Yqb54uQIiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCBhcGkgPSBcIi9zZWFyY2g/d29yZD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiJnBhZ2U9XCIgKyBwYWdlO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBSZWZlcmVyOiBcImh0dHBzOi8vY2FjaGUuZm94cy50b3BcIlxuICAgIH1cbn0pO1xubGV0IGFyciA9IHBkZmEoaHRtbCwgXCJib2R5JiYuc2VhcmNoLWJveFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCJhJiZUZXh0XCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIi5sYXl1aS1zaG93JiZUZXh0XCIpLFxuICAgICAgICB1cmw6IGJhc2ljVXJsICsgcGRmaChhcnJbaV0sIFwiYSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwibWFnbmV0VXJsIjoidmFyIGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFJlZmVyZXI6IFwiaHR0cHM6Ly9jYWNoZS5mb3hzLnRvcFwiXG4gICAgfVxufSksIFwiI2xpbmstdXJsJiZhJiZocmVmXCIpO1xucmV0dXJuIGh0bWw7IiwiYmFzaWNVcmwiOiJodHRwczovL2NhY2hlLmZveHMudG9wIiwiZmluZEFsaVVybCI6InZhciBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0LCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBSZWZlcmVyOiBcImh0dHBzOi8vY2FjaGUuZm94cy50b3BcIlxuICAgIH1cbn0pLCBcIiNsaW5rLXVybCYmYSYmaHJlZlwiKTtcbnJldHVybiBodG1sOyIsImxhc3RNb2RpZnkiOjE3MTA0MjY4MDgyNTksImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi56OB5Yqb54uX54yrIiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCBhcGkgPSBcIi9zZWFyY2gtXCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIi0wLTAtXCIgKyBwYWdlICsgXCIuaHRtbFwiO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpKTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwiYm9keSYmLnNzYm94XCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcIi50aXRsZSYmVGV4dFwiKS5zbWFsbCgpLFxuICAgICAgICBkZXNjOiBwZGZoKGFycltpXSwgXCIuc2JhciYmVGV4dFwiKS5tYXRjaCgvKOa3u+WKoOaXtumXtC4qPynmnIDov5EvKVsxXSxcbiAgICAgICAgdXJsOiBwZGZoKGFycltpXSwgXCIuc2JhciYmYSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL2NsZzE2Mi5idXp6IiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTA0MjY2ODMxNDIsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi56OB5Yqb54yr54uXIiwicGFnZSI6dHJ1ZSwiZmluZCI6InZhciB3b3JkMTExID0gcztcbnZhciBlbmNvZGViZWZvcmUgPSBiYXNlNjRFbmNvZGUod29yZDExMSk7XG5lbmNvZGViZWZvcmUgPSBcIlZqZHd3VzI5XCIgKyBlbmNvZGViZWZvcmUgKyBcIk5qZHd3VzI0XCI7XG52YXIgZW5jb2RlYmVmb3JlMTExMSA9IGVuY29kZWJlZm9yZS5yZXBsYWNlKC9cXCsvZywgXCJqR1lYV2d4MTNcIik7XG5tZDVwd2QgPSBlbmNvZGViZWZvcmUxMTExO1xubGV0IGFwaSA9IFwiL2NsbGoucGhwP25hbWU9XCIgKyBtZDVwd2QgKyBcIiZzb3J0PSZwYWdlPVwiICsgcGFnZTtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIGFwaSk7XG5sZXQgYXJyID0gcGRmYShodG1sLCBcIiNTZWFyY2hfbGlzdF93cmFwcGVyJiZsaTpoYXMoLlNlYXJjaF9saXN0X2luZm8pXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcImEmJlRleHRcIikuc21hbGwoKSxcbiAgICAgICAgZGVzYzogcGRmaChhcnJbaV0sIFwiLlNlYXJjaF9saXN0X2luZm8mJlRleHRcIikubWF0Y2goLyjlpKflsI8uKj8p54Ot5bqmLylbMV0sXG4gICAgICAgIHVybDogYmFzaWNVcmwgKyBwZGZoKGFycltpXSwgXCJhJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJtYWduZXRVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCksIFwiI0luZm9ybWF0aW9uX2NvcHlfdGV4dCYmdmFsdWVcIik7XG5yZXR1cm4gaHRtbDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vY2xtMS5jbG1hcHAxLnh5eiIsImZpbmRBbGlVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCksIFwiI0luZm9ybWF0aW9uX2NvcHlfdGV4dCYmdmFsdWVcIik7XG5yZXR1cm4gaHRtbDsiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2NzA4MzcxLCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuejgeWKm+icmOibmyIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvc28vXCIgKyBlbmNvZGVVUklDb21wb25lbnQocykgKyBcIl9yZWxfXCIgKyBwYWdlICsgXCIuaHRtbFwiO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpKTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwiYm9keSYmLnNlYXJjaC1pdGVtXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcImEmJlRleHRcIikuc21hbGwoKSxcbiAgICAgICAgZGVzYzogcGRmaChhcnJbaV0sIFwiLml0ZW0tYmFyJiZUZXh0XCIpLFxuICAgICAgICB1cmw6IGJhc2ljVXJsICsgcGRmaChhcnJbaV0sIFwiYSYmaHJlZlwiKVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwibWFnbmV0VXJsIjoidmFyIGh0bWwgPSBwZGZoKHJlcXVlc3QoaW5wdXQpLCBcIiNtX2xpbmsmJnZhbHVlXCIpO1xucmV0dXJuIGh0bWw7IiwiYmFzaWNVcmwiOiJodHRwOi8vd3d3LmJ0bW92aS5jbGljayIsImZpbmRBbGlVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCksIFwiI21fbGluayYmdmFsdWVcIik7XG5yZXR1cm4gaHRtbDsiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2OTgzMjgzLCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IuaXoOaegeejgemTviIsInBhZ2UiOmZhbHNlLCJmaW5kIjoibGV0IGFwaSA9IFwiL3NlYXJjaD9xPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpKTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwidGFibGUmJnRyXCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcInAmJlRleHRcIikuc21hbGwoKSxcbiAgICAgICAgZGVzYzogcGRmaChhcnJbaV0sIFwiVGV4dFwiKS5tYXRjaCgvXFxkKyhcXC4/XFxkKyk/W2dta2JdKy9pKVswXSxcbiAgICAgICAgdXJsOiBiYXNpY1VybCArIHBkZmgoYXJyW2ldLCBcImEmJmhyZWZcIilcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsIm1hZ25ldFVybCI6InZhciBodG1sID0gcGRmaChyZXF1ZXN0KGlucHV0KSwgXCIubWFnbmV0LWJveCYmaW5wdXQmJnZhbHVlXCIpO1xucmV0dXJuIGh0bWw7IiwiYmFzaWNVcmwiOiJodHRwczovLzBjaWxpLnRvcCIsImZpbmRBbGlVcmwiOiJ2YXIgaHRtbCA9IHBkZmgocmVxdWVzdChpbnB1dCksIFwiLm1hZ25ldC1ib3gmJmlucHV0JiZ2YWx1ZVwiKTtcbnJldHVybiBodG1sOyIsImxhc3RNb2RpZnkiOjE3MTA0MjY4MjI5OTMsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoiVTNDMyIsInBhZ2UiOnRydWUsImZpbmQiOiJsZXQgYXBpID0gXCIvP3A9XCIgKyBwYWdlICsgXCImc2VhcmNoMj1lZWxqYTNsZmVhJnNlYXJjaD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKTtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIGFwaSk7XG5sZXQgYXJyID0gcGRmYShodG1sLCBcInRib2R5JiYuZGVmYXVsdFwiKTtcbmxldCBkID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGFycltpXSwgXCJhLDEmJnRpdGxlXCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIlRleHRcIikubWF0Y2goLyhcXGQrKD86XFwuXFxkKyk/W2dta2JdKy4qPynmmpfnvZEvaSlbMV0sXG4gICAgICAgIHVybDogcGRmaChhcnJbaV0sIFwiYSwzJiZocmVmXCIpXG4gICAgfSk7XG59XG5yZXR1cm4gZDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vYS51M2MzLmxpZmUiLCJmaW5kQWxpVXJsIjoiIiwibGFzdE1vZGlmeSI6MTcxMDQyNjk5NDc1MiwiZ3JvdXAiOiLno4HlipsiLCJhdXRob3IiOiIifSx7Im5hbWUiOiJVOUE5IiwicGFnZSI6dHJ1ZSwiZmluZCI6ImxldCBhcGkgPSBcIi8/dHlwZT0yJnNlYXJjaD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiJnA9XCIgKyBwYWdlO1xubGV0IGh0bWwgPSByZXF1ZXN0KGJhc2ljVXJsICsgYXBpKTtcbmxldCBhcnIgPSBwZGZhKGh0bWwsIFwidGFibGUmJi5kZWZhdWx0XCIpO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgoYXJyW2ldLCBcImEmJnRpdGxlXCIpLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIlRleHRcIikubWF0Y2goL1xcZCsoXFwuP1xcZCspP1xcc1tnbWtiXSsuKi9pKVswXSxcbiAgICAgICAgdXJsOiBwZGZoKGFycltpXSwgXCJhLDImJmhyZWZcIilcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly91OWE5Lm9uZSIsImZpbmRBbGlVcmwiOiIiLCJsYXN0TW9kaWZ5IjoxNzEwNDI2NzM3ODkxLCJncm91cCI6IuejgeWKmyIsImF1dGhvciI6IiJ9LHsibmFtZSI6IlRvcnJlbnQgS2l0dHkiLCJwYWdlIjp0cnVlLCJmaW5kIjoibGV0IGFwaSA9IFwiL3NlYXJjaC9cIiArIGVuY29kZVVSSUNvbXBvbmVudChzKSArIFwiL1wiICsgcGFnZTtcbmxldCBodG1sID0gcmVxdWVzdChiYXNpY1VybCArIGFwaSk7XG5sZXQgYXJyID0gcGRmYShodG1sLCBcIiNhcmNoaXZlUmVzdWx0JiZ0cjpoYXMoYSlcIik7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGRmaChhcnJbaV0sIFwiVGV4dFwiKS5tYXRjaCgvKC4qPylcXGQrKD86XFwuXFxkKyk/XFxzKz9bZ21rYl0rL2kpWzFdLnNtYWxsKCksXG4gICAgICAgIGRlc2M6IHBkZmgoYXJyW2ldLCBcIlRleHRcIikubWF0Y2goLyhcXGQrKD86XFwuXFxkKyk/XFxzKz9bZ21rYl0rLio/KeivpuaDhS9pKVsxXSxcbiAgICAgICAgdXJsOiBwZGZoKGFycltpXSwgXCJhLDEmJmhyZWZcIilcbiAgICB9KTtcbn1cbnJldHVybiBkOyIsImJhc2ljVXJsIjoiaHR0cHM6Ly9jbi50b3JyZW50a2l0dHkuaW5rIiwiZmluZEFsaVVybCI6IiIsImxhc3RNb2RpZnkiOjE3MTA0MjY3MjQ4OTUsImdyb3VwIjoi56OB5YqbIiwiYXV0aG9yIjoiIn0seyJuYW1lIjoi6JuL6JuLIiwiZmluZCI6ImxldCB1cmwgPSBiYXNpY1VybCtcIi9wYWdlL1wiK3BhZ2UgKyBcIi8/cz1cIiArIHMgO1xyXG5sZXQgaHRtbCA9IGZldGNoUEModXJsKTtcclxubGV0IGFyciA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwgXCIuY29udGVudCYmLmV4Y2VycHRcIik7XHJcbmxldCBiZXQgPSBbXTtcclxuZm9yIChsZXQgaSBpbiBhcnIpIHtcclxuICAgIGxldCBpdCA9IGFycltpXTtcclxuICAgIGxldCB1dGl0bGUgPSBwZGZoKGl0LCBcImgyJiZhJiZ0aXRsZVwiKTtcclxuICAgIGxldCB1c2VyaWFsID0gcGRmaChpdCwgXCJzcGFuJiZhJiZUZXh0XCIpO1xyXG4gICAgbGV0IHVpbWFnZSA9IHBkZmgoaXQsIFwiaW1nJiZzcmNcIik7XHJcbiAgICBsZXQgdSA9IHBkKGl0LCBcImgyJiZhJiZocmVmXCIsIGJhc2ljVXJsKTtcclxuICAgIGJldC5wdXNoKHtcclxuICAgICAgICB0aXRsZTogdXRpdGxlLFxyXG4gICAgICAgIHVybDogdSxcclxuICAgICAgICBwaWNfdXJsOiB1aW1hZ2UsXHJcbiAgICAgICAgZGVzYzogdXNlcmlhbFxyXG4gICAgfSk7XHJcbn1cclxucmV0dXJuIGJldDsiLCJiYXNpY1VybCI6Imh0dHBzOi8vMXRhbmh1YS54eXoiLCJmaW5kQWxpVXJsIjoicmV0dXJuIHBkZmgoZmV0Y2hQQyhpbnB1dCksIFwiLmFydGljbGUtY29udGVudCYmcCwyJiZUZXh0XCIpOyIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MDY2OTA1NDcyODUsImdyb3VwIjoi56OB5YqbIn0seyJuYW1lIjoiVEc66Zi/6YeM5LqR55uY5Y+R5biDIiwiZmluZCI6ImJhc2ljVXJsID0gYmFzaWNVcmwuc3BsaXQoXCIjXCIpO1xuXG5sZXQgYWxpVXRpbCA9ICQucmVxdWlyZShcImFsaVV0aWxcIik7XG5cbmxldCBqc29uID0gcmVxdWVzdChiYXNpY1VybFswXSArIFwiL2FwaS9yZXN1bHRzL3F1ZXJ5U291cmNlP3BlclBhZ2U9MTAmcGFnZT1cIiArIHBhZ2UgKyBcIiZzb3VyY2VOYW1lPVwiICsgYmFzaWNVcmxbMV0gKyBcIiZrZXl3b3JkPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHMpKTtcbmxldCBsaXN0ID0gSlNPTi5wYXJzZShqc29uKS5maW5hbExpc3Q7XG5sZXQgZCA9IFtdO1xuZm9yIChsZXQgaXQgb2YgbGlzdCkge1xuICAgIGl0ID0gaXQucmVzdWx0cztcbiAgICAvL+WGhee9ruW3peWFt++8jOWMuemFjeaWh+acrOS4reeahOmYv+mHjOmTvuaOpe+8jOesrOS6jOS4quWPguaVsOWmguaenOaYr3RydWXkvJrljLnphY3lpJrkuKpcbiAgICBsZXQgdXJsID0gYWxpVXRpbC5tYXRjaEFsaVVybChpdC50ZXh0KTtcbiAgICBpZiAoIXVybCkgYnJlYWs7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0LnRleHQsXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBkZXNjOiB1cmxcbiAgICB9KTtcbn1cblxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL21lb3cudGcjc2hhcmVBbGl5dW4iLCJmaW5kQWxpVXJsIjoiIiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMDMzNzk3MzkzNSwiZ3JvdXAiOiLpmr7nlKgiLCJhdXRob3IiOiJATG95RGdJayJ9LHsibmFtZSI6IuWInemfs+ekviIsImZpbmQiOiJsZXQgdXJsPWJhc2ljVXJsK1wiL3dwLWpzb24vdXRpbHMvdjIvcG9zdF9saXN0P3M9K1wiK2VuY29kZVVSSUNvbXBvbmVudChzKStcIiZwYWdlX3R5cGU9c2VhcmNoJnBhZ2VkPVwiK3BhZ2UrXCImY3VzdG9tX3Bvc3RfYXJyYXlfZG93bl90eXBlJTVCJTVEPXF1YXJrJmN1c3RvbV9wb3N0X2FycmF5X2Rvd25fdHlwZSU1QiU1RD1hbGl5dW5fZHJpdmUmY3VzdG9tX3Bvc3RfYXJyYXlfZG93bl90eXBlJTVCJTVEPW1hZ25ldF9saW5rXCJcbmxldCBqc29uID0gcmVxdWVzdCh1cmwpO1xubGV0IGxpc3QgPSBKU09OLnBhcnNlKGpzb24pLnBvc3RzO1xubGV0IGQgPSBbXTtcbmZvciAobGV0IGl0ZW0gb2YgbGlzdCkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBpdGVtLnBvc3RfdGl0bGUsXG4gICAgICAgIHVybDogaXRlbS5wb3N0X2hyZWYsXG4gICAgICAgIHBpY191cmw6IGl0ZW0ucG9zdF9pbWFnZVxuICAgIH0pO1xufVxucmV0dXJuIGQ7IiwiYmFzaWNVcmwiOiJodHRwczovL3d3dy5taWt1Y2x1Yi53aW4iLCJmaW5kQWxpVXJsIjoibGV0IGh0bWwgPSBmZXRjaChpbnB1dCk7XG5cbmxldCBhY2Nlc3NfcGFzc3dvcmQgPSBwZGZoKGh0bWwsIFwiLmFjY2Vzc19wYXNzd29yZCYmdmFsdWVcIik7XG5sZXQgdW56aXBfcGFzc3dvcmQgPSBwZGZoKGh0bWwsIFwiLnVuemlwX3Bhc3N3b3JkJiZ2YWx1ZVwiKTtcbmxldCB1bnppcF9zdWJfcGFzc3dvcmQgPSBwZGZoKGh0bWwsIFwiLnVuemlwX3N1Yl9wYXNzd29yZCYmdmFsdWVcIik7XG5sZXQgZHVybCA9IHBkZmgoaHRtbCwgXCIuZG93bmxvYWQmJmhyZWZcIik7XG5pZiAodW56aXBfcGFzc3dvcmQgfHwgdW56aXBfc3ViX3Bhc3N3b3JkKSB7XG4gICAgcmV0dXJuIG5ldyBFYXN5TmV4dFBhZ2UoW3tcbiAgICAgICAgYWxpVXJsOiBcImNvcHk6Ly9cIiArIHVuemlwX3Bhc3N3b3JkLFxuICAgICAgICB0aXRsZTogXCLop6Pljovlr4bnoIEx77yaXCIgKyB1bnppcF9wYXNzd29yZCxcbiAgICB9LCB7XG4gICAgICAgIGFsaVVybDogXCJjb3B5Oi8vXCIgKyB1bnppcF9zdWJfcGFzc3dvcmQsXG4gICAgICAgIHRpdGxlOiBcIuino+WOi+WvhueggTJcIiArIHVuemlwX3N1Yl9wYXNzd29yZCxcbiAgICB9LCB7XG4gICAgICAgIGFsaVVybDogZHVybCxcbiAgICAgICAgdGl0bGU6IFwi5YmN5b6A572R55uYXFxuXCIgKyBkdXJsLFxuICAgICAgICBzaGFyZVB3ZDogYWNjZXNzX3Bhc3N3b3JkXG4gICAgfV0sIFwidGV4dF8xXCIpO1xufSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhbGlVcmw6IGR1cmwsXG4gICAgICAgIHRpdGxlOiBcIuino+WOi+WvhueggTJcIixcbiAgICAgICAgc2hhcmVQd2Q6IGFjY2Vzc19wYXNzd29yZFxuICAgIH07XG59IiwicGFnZSI6dHJ1ZSwibGFzdE1vZGlmeSI6MTcxMDMzNzk3NjU4MSwiZ3JvdXAiOiLpmr7nlKgiLCJhdXRob3IiOiJATG95RGdJayJ9LHsibmFtZSI6IkVEMzAwMCIsImF1dGhvciI6IiIsImZpbmQiOiJ2YXIgZCA9IFtdO1xudmFyIHVybCA9IGJhc2ljVXJsICsgYC9hbGl5dW5wYW5fdmlkZW8vJHtzfS0ke3BhZ2V9LTAuaHRtbGA7XG52YXIgbGlzdCA9IHBkZmEoZmV0Y2godXJsKSwgJy5yZXN1bHQtd3JhcCYmLnJlc291cmNlLWl0ZW0td3JhcCcpO1xubGlzdC5mb3JFYWNoKGl0ZW0gPT4ge8KgXG4gICAgZC5wdXNoKHvCoMKgwqBcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgJy5yZXNvdXJjZS10aXRsZSYmVGV4dCcpLFxuICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sICcjbWFpbiwxJiZzcGFuLC0xJiZUZXh0JykgKyAnXFx0JyArIHBkZmgoaXRlbSwgJy5yZXNvdXJjZS1tZXRhJiYubGFiZWwmJlRleHQnKS5yZXBsYWNlKCfmnKonLCAnJyksXG4gICAgICAgIHVybDogYmFzaWNVcmwgKyBwZGZoKGl0ZW0sICdhJiZocmVmJyksXG4gICAgfSk7XG59KVxucmV0dXJuIGQiLCJiYXNpY1VybCI6Imh0dHBzOi8vd3d3LmVkMzAwMC5jb20iLCJmaW5kQWxpVXJsIjoicmV0dXJuIHBkZmgoZmV0Y2goaW5wdXQpLCAnLmJ1dHRvbi13cmFwJiZhJiZocmVmJykiLCJwYWdlIjp0cnVlLCJsYXN0TW9kaWZ5IjoxNzE1NjkxNzU3NjE1LCJncm91cCI6IumYv+mHjCIsInJ1bGVUeXBlIjoiIn0seyJuYW1lIjoi5Y+I5LiA5Liq6LWE5rqQ5pCc57SiIiwiYXV0aG9yIjoiIiwiZmluZCI6InZhciBkID0gW107XG52YXIgdXJsID0gYmFzaWNVcmwgKyBgL2FwaS92MS9zZWFyY2gvJHtzfS9hbGwvJHsocGFnZS0xKSoxMH1gO1xudmFyIGxpc3QgPSBKU09OLnBhcnNlKGZldGNoKHVybCkpLml0ZW1zO1xubGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBpdGVtLmRldGFpbCxcbiAgICAgICAgZGVzYzogaXRlbS5pbnNlcnRfdGltZS5yZXBsYWNlKC9cXC5cXGQrLiovLCAnICcpLnJlcGxhY2UoJ1QnLCAnICcpICsgJ1xcdCcgKyBpdGVtLnNpemUsXG4gICAgICAgIHVybDogaXRlbS5zaGFyZV91cmwsXG4gICAgfSlcbn0pXG5yZXR1cm4gZCIsImJhc2ljVXJsIjoiaHR0cHM6Ly93d3cuc28xc3QuY29tIiwiZmluZEFsaVVybCI6IiIsInBhZ2UiOnRydWUsImxhc3RNb2RpZnkiOjE3MTU2OTE3NzIyMTEsImdyb3VwIjoi57u85ZCIIiwicnVsZVR5cGUiOiIifV0=$a@import=js:$.require('import?rule='+"云盘君.简")(input)