xiaomianao666

小程序:JustLive

Dec 20th, 2023
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@JustLive@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiSnVzdExpdmUiLCJhdXRob3IiOiJKb2UmJumaj+mjjiYm5Y+R57Kq5raC5aKZJiZSeCYmWnJ1aXJ5IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MjAyMzEwMjIsImNvbF90eXBlIjoibW92aWVfMiIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbmxldCBkID0gW107XG5sZXQgYXBpID0gXCJodHRwOi8veWoxMjExLndvcms6ODAxMy9hcGkvbGl2ZS9cIjtcbmxldCB1aWQgPSBnZXRJdGVtKFwidWlkXCIsIFwiXCIpO1xuaWYgKE1ZX1BBR0UgPT0gMSkge1xuICAgIGQudW5zaGlmdCh7XG4gICAgICAgIHRpdGxlOiBnZXRJdGVtKFwibmlja25hbWVcIiwgXCLms6jlhowgLyDnmbvlvZVcIiksXG4gICAgICAgIGRlc2M6IGdldEl0ZW0oXCJ1c2VybmFtZVwiLCBcIlwiKSArIFwiXFx0XFx0XCIsXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICBwdXRNeVZhcihcInNUeXBlXCIsICdsaXZpbmcnKTtcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2hpc3Rvcnkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJztcbiAgICAgICAgfSksXG4gICAgICAgIGltZzogXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL2tlLzczLnBuZ1wiLFxuICAgICAgICBjb2xfdHlwZTogXCJhdmF0YXJcIlxuICAgIH0pO1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIuaQnOe0olwiLFxuICAgICAgICBkZXNjOiBcIuaQnOe0oumcgOWFiOeZu+W9lVwiLFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgcHV0TXlWYXIoXCJNeWtleVwiLCBpbnB1dCk7XG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxuICAgICAgICB9KSxcbiAgICAgICAgY29sX3R5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXCJNeWtleVwiKVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJiaWdfYmxhbmtfYmxvY2tcIlxuICAgIH0sIHtcbiAgICAgICAgY29sX3R5cGU6IFwiYmlnX2JsYW5rX2Jsb2NrXCJcbiAgICB9LCB7XG4gICAgICAgIGNvbF90eXBlOiBcImxpbmVfYmxhbmtcIlxuICAgIH0pO1xuXG4gICAgLy/ng63pl6jnm7Tmkq1cbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogJzxmb250IGNvbG9yPVwiIzBhYTM0NFwiPueDremXqOebtOaSrTwvZm9udD4nLFxuICAgICAgICBkZXNjOiAnPGZvbnQgY29sb3I9XCIjMGFhMzQ0XCI+4p6uXFx0XFx0PC9mb250PicsXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICBwdXRNeVZhcihcInR5cGVOYW1lVmFyXCIsICflhajpg6gnKTtcbiAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vcGFnZS9uZXdDbGFzc1wiICsgJyNub0hpc3RvcnkjJ1xuICAgICAgICB9KSxcbiAgICAgICAgaW1nOiBcImh0dHBzOi8vaW1nMS5iYWlkdS5jb20vaXQvdT0xMTMxMzMxNDE2LDI2NjY0NjczNTQmZm09MjUzJmZtdD1hdXRvJmFwcD0xMjAmZj1QTkc/dz01MDAmaD01MDBAUmVmZXJlcj1cIixcbiAgICAgICAgY29sX3R5cGU6IFwiYXZhdGFyXCJcbiAgICB9KTtcblxuICAgIGxldCBDVCA9IERhdGUubm93KCk7XG4gICAgbGV0IExUID0gXCJcIjtcbiAgICB0cnkge1xuICAgICAgICBldmFsKFwidmFyIGZsYiA9IFwiICsgcmVhZEZpbGUoXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2p1c3RsaXZlLmpzXCIpLCAwKTtcbiAgICAgICAgTFQgPSBmbGIubHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBMVCA9IFwiMFwiO1xuICAgIH07XG4gICAgbGV0IHNhcmVhID0gZ2V0TXlWYXIoXCJzYXJlYVwiLCBcIjBcIik7XG4gICAgaWYgKCFmaWxlRXhpc3QoXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2p1c3RsaXZlLmpzXCIpIHx8IENUID4gKExUICsgMiAqIDI0ICogNjAgKiA2MCAqIDEwMDApIHx8IHNhcmVhICE9PSBcIjBcIikge1xuICAgICAgICBsZXQgeXh1cmwgPSBcImh0dHBzOi8vYXBwLmFsaTIxMy5uZXQvdG9wL2hvdC5odG1sXCI7XG4gICAgICAgIGxldCBhcmVhID0gXCJcIjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFyZWEgPSBzYXJlYSA9PSBcIjBcIiA/IGZsYi5hcmVhIDogZmxiLmFyZWEgKyBcInxcIiArIHNhcmVhO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBhcmVhID0gXCLnlLvnrKbog73miYt85oiR55qE5YuH6ICFfOWkquepuuihjOWKqHzlv5fmiJjnlaV85by55aOz54m5fOWcsOmTgei3kXzlv43ogIXmlrDkuJZ85ouj54ixXCI7XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGxpc2YgPSBwZGZhKGZldGNoKHl4dXJsKSwgXCIubWFpbi1jb250YWluZXImJmltZ1wiKS5maWx0ZXIoZWxlbWVudCA9PiAhbmV3IFJlZ0V4cChhcmVhKS50ZXN0KGVsZW1lbnQpKS5zbGljZSgwLCA4KTtcbiAgICAgICAgbGV0IGxpc3QgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgbGkgb2YgbGlzZikge1xuICAgICAgICAgICAgbGV0IHRpdGxlID0gcGRmaChsaSwgXCJpbWcmJmFsdFwiKTtcbiAgICAgICAgICAgIGxldCBwaWMgPSBwZGZoKGxpLCBcImltZyYmc3JjXCIpO1xuICAgICAgICAgICAgbGlzdC5wdXNoKHRpdGxlICsgXCIkXCIgKyBwaWMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbCA9IHtcbiAgICAgICAgICAgIFwibHRcIjogQ1QsXG4gICAgICAgICAgICBcImxpc3RcIjogbGlzdCxcbiAgICAgICAgICAgIFwiYXJlYVwiOiBhcmVhXG4gICAgICAgIH07XG4gICAgICAgIHNhdmVGaWxlKFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9qdXN0bGl2ZS5qc1wiLCBKU09OLnN0cmluZ2lmeShmbCksIDApO1xuICAgICAgICBjbGVhck15VmFyKFwic2FyZWFcIik7XG4gICAgfTtcbiAgICBsZXQgbGlzdCA9IFwiXCI7XG4gICAgaWYgKGZsKSB7XG4gICAgICAgIGxpc3QgPSBmbC5saXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QgPSBmbGIubGlzdDtcbiAgICB9O1xuICAgIGZvciAobGV0IGxpIG9mIGxpc3QpIHtcbiAgICAgICAgbGV0IHRpdGxlID0gbGkuc3BsaXQoXCIkXCIpWzBdO1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgaW1nOiBsaS5zcGxpdChcIiRcIilbMV0sXG4gICAgICAgICAgICBjb2xfdHlwZTogXCJpY29uX3JvdW5kX3NtYWxsXzRcIixcbiAgICAgICAgICAgIHVybDogJChcIiNub0xvYWRpbmcjXCIpLmxhenlSdWxlKCh0aXRsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHB1dE15VmFyKFwiaG9tZVwiLCBcIjFcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9wYWdlL25ld0NsYXNzTGlzdD90eXBlTmFtZT3miYvmuLgmYXJlYU5hbWU9XCIgKyB0aXRsZSArIFwiJnBhZ2U9ZnlwYWdlI25vSGlzdG9yeSNcIjtcbiAgICAgICAgICAgIH0sIHRpdGxlKSxcbiAgICAgICAgfSlcbiAgICB9O1xuXG4gICAgZC5wdXNoKHtcbiAgICAgICAgY29sX3R5cGU6IFwiYmlnX2JsYW5rX2Jsb2NrXCJcbiAgICB9LCB7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJsaW5lX2JsYW5rXCJcbiAgICB9LCB7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJiaWdfYmxhbmtfYmxvY2tcIlxuICAgIH0pO1xuXG4gICAgLy/lhajpg6jliIbnsbtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoXCJNeWtleVwiKSA/ICfmkJzntKLnm7Tmkq0nIDogXCLlhajpg6jnm7Tmkq1cIixcbiAgICAgICAgZGVzYzogZ2V0TXlWYXIoXCJNeWtleVwiKSA/ICc8Zm9udCBjb2xvcj1cIiMwYWEzNDRcIj7ov5Tlm55cXHQ8L2ZvbnQ+JyA6IFwiXCIsXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXCJNeWtleVwiLCBcIlwiKSA9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcIk15a2V5XCIpO1xuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXCJjbGFzc1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICAgIGltZzogZ2V0TXlWYXIoXCJNeWtleVwiKSA/IFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8yNS5zdmdAUmVmZXJlcj1cIiA6IFwiaHR0cHM6Ly9pbWcyLmJhaWR1LmNvbS9pdC91PTUxNzg5MzAyNywyNDc0NTk2Njk3JmZtPTI1MyZmbXQ9YXV0byZhcHA9MTM4JmY9SlBFRz93PTUwMCZoPTU5NEBSZWZlcmVyPVwiLFxuICAgICAgICBjb2xfdHlwZTogXCJhdmF0YXJcIlxuICAgIH0sIHtcbiAgICAgICAgY29sX3R5cGU6IFwiYmlnX2JsYW5rX2Jsb2NrXCJcbiAgICB9LCB7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSk7XG5cbiAgICBsZXQgbGVpID0gW1wi5YWo6YOoXCIsIFwi6JmO54mZXCIsIFwi5paX6bG8XCIsIFwi5ZOU5ZOpXCIsIFwi5oqW6Z+zXCIsIFwi572R5piTXCJdO1xuICAgIGxldCBsdXJsID0gW1wiYWxsXCIsIFwiaHV5YVwiLCBcImRvdXl1XCIsIFwiYmlsaWJpbGlcIiwgXCJkb3V5aW5cIiwgXCJjY1wiXTtcbiAgICBmb3IgKGxldCBpIGluIGxlaSkge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGx1cmxbaV0gPT0gZ2V0TXlWYXIoXCJjbGFzc1wiLCBcImFsbFwiKSA/IFwi4oCY4oCY4oCZ4oCZPGI+XCIgKyBsZWlbaV0uZm9udGNvbG9yKFwiI0ZBNzI5OFwiKSArIFwiPC9iPlwiIDogbGVpW2ldLFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcImNsYXNzXCIsIHVybCk7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgICAgICAgICAgfSwgbHVybFtpXSksXG4gICAgICAgICAgICBjb2xfdHlwZTogXCJzY3JvbGxfYnV0dG9uXCJcbiAgICAgICAgfSlcbiAgICB9O1xuICAgIGQucHVzaCh7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJiaWdfYmxhbmtfYmxvY2tcIlxuICAgIH0pXG59O1xuXG4vL+aQnOe0ouWIl+ihqFxucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2xhenknKTtcbmlmIChnZXRNeVZhcihcIk15a2V5XCIpKSB7XG4gICAgZnVuY3Rpb24gc28oYXBpLCB1aWQsIGQpIHtcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gJzEnKSB7XG4gICAgICAgICAgICBpZiAodWlkID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCLnmbvlvZXlkI7nu6fnu63mkJzntKJcIixcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXCLngrnlh7vnmbvlvZVcIixcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFwidGV4dF9jZW50ZXJfMVwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXCJzVHlwZVwiLCAnbGl2aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9oaXN0b3J5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IydcblxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzc191cmwgPSBhcGkgKyBcInNlYXJjaD9wbGF0Zm9ybT1cIiArIGdldE15VmFyKFwiY2xhc3NcIiwgXCJhbGxcIikgKyBcIiZrZXlXb3Jkcz1cIiArIGdldE15VmFyKFwiTXlrZXlcIikgKyBcIiZ1aWQ9XCIgKyB1aWQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChzc191cmwpKS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGRhdGEgb2YganNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS5wbGF0Zm9ybS5yZXBsYWNlKCdodXlhJywgJ+iZjueJmScpLnJlcGxhY2UoJ2RvdXl1JywgJ+aWl+mxvCcpLnJlcGxhY2UoJ2NjJywgJ+e9keaYk0NDJykucmVwbGFjZShcImJpbGliaWxpXCIsIFwi5ZOU5ZOpXCIpLnJlcGxhY2UoXCJkb3V5aW5cIiwgXCLmipbpn7NcIikgKyAnwrcnICsgZGF0YS5uaWNrTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAoZGF0YS5pc0xpdmUgPT0gJzEnID8gJ+ebtOaSreS4rScgOiAn5pyq5byA5pKtJykgKyAnwrcnICsgKGRhdGEuZm9sbG93ZXJzID49IFwiMTAwMDBcIiA/IChkYXRhLmZvbGxvd2VycyAvIDEwMDAwKS50b0ZpeGVkKDEpICsgXCLkuIfnsonkuJ1cIiA6IGRhdGEuZm9sbG93ZXJzICsgXCLnsonkuJ1cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAoZGF0YS5oZWFkUGljICE9PSBudWxsICYmIGRhdGEuaGVhZFBpYy5zdGFydHNXaXRoKCcvJykgPyAnaHR0cHM6JyArIGRhdGEuaGVhZFBpYyA6IGRhdGEuaGVhZFBpYykgKyAnQFJlZmVyZXI9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGRhdGEuaXNMaXZlID09ICcxJyAmJiBnZXRJdGVtKCdtdWx0aWxpbmUnLCAnMScpICE9PSBcIjFcIiA/IGFwaSArICdnZXRSZWFsVXJsP3BsYXRmb3JtPScgKyBkYXRhLnBsYXRmb3JtICsgJyZyb29tSWQ9JyArIGRhdGEucm9vbUlkICsgbGF6eSA6IFwiaGlrZXI6Ly9wYWdlL2RldGFpbD8jaW1tZXJzaXZlVGhlbWUjJnJvb21pZD1cIiArIGRhdGEucm9vbUlkICsgXCImcGxhdGZvcm09XCIgKyBkYXRhLnBsYXRmb3JtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcIm1vdmllXzJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwi4oCc4oCc5Yiw5bqV5LqG5ZGi4oCd4oCdXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn54K55Ye76L+U5Zue6aaW6aG1JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFwiTXlrZXlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcInRleHRfY2VudGVyXzFcIlxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuKAnOKAnOaQnOe0ouacquefpemUmeivr+KAneKAnVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+eCueWHu+i/lOWbnummlumhtScsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcIk15a2V5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXCJ0ZXh0X2NlbnRlcl8xXCJcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXCLmkJzntKLlh7rnjrDplJnor69cIik7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBzbyhhcGksIHVpZCwgZCk7XG59IGVsc2Uge1xuICAgIC8v5Li76aG15YiX6KGoXG4gICAgbGV0IGhvbWUgPSBhcGkgKyBcImdldFJlY29tbWVuZD9wYWdlPVwiICsgTVlfUEFHRSArIFwiJnNpemU9MjBcIjtcbiAgICBsZXQgZmVuID0gYXBpICsgXCJnZXRSZWNvbW1lbmRCeVBsYXRmb3JtP3BsYXRmb3JtPVwiICsgZ2V0TXlWYXIoXCJjbGFzc1wiKSArIFwiJnBhZ2U9XCIgKyBNWV9QQUdFICsgXCImc2l6ZT0yMFwiO1xuICAgIGlmIChnZXRNeVZhcihcImNsYXNzXCIsIFwiYWxsXCIpID09IFwiYWxsXCIpIHtcbiAgICAgICAgdmFyIHVybCA9IGhvbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHVybCA9IGZlbjtcbiAgICB9XG4gICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKS5kYXRhO1xuICAgIGZvciAoZGF0YSBvZiByZXMpIHtcbiAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnBsYXRGb3JtLnJlcGxhY2UoJ2h1eWEnLCAn6JmO54mZJykucmVwbGFjZSgnZG91eXUnLCAn5paX6bG8JykucmVwbGFjZSgnY2MnLCAn572R5piTQ0MnKS5yZXBsYWNlKFwiYmlsaWJpbGlcIiwgXCLlk5Tlk6lcIikucmVwbGFjZShcImRvdXlpblwiLCBcIuaKlumfs1wiKSArICfCtycgKyBkYXRhLm93bmVyTmFtZSxcbiAgICAgICAgICAgIGRlc2M6IChkYXRhLmNhdGVnb3J5TmFtZSAhPT0gXCJcIiA/IGRhdGEuY2F0ZWdvcnlOYW1lICsgJ8K3JyA6IFwiXCIpICsgKGRhdGEub25saW5lID49IFwiMTAwMDBcIiA/IChkYXRhLm9ubGluZSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgXCLkuIdcIiA6IGRhdGEub25saW5lICsgXCLkurpcIiksXG4gICAgICAgICAgICBpbWc6IChkYXRhLnJvb21QaWMgIT09IG51bGwgJiYgZGF0YS5yb29tUGljLnN0YXJ0c1dpdGgoJy8nKSA/ICdodHRwczonICsgZGF0YS5yb29tUGljIDogZGF0YS5yb29tUGljKSArICdAUmVmZXJlcj0nLFxuICAgICAgICAgICAgdXJsOiBnZXRJdGVtKCdtdWx0aWxpbmUnLCAnMScpICE9PSBcIjFcIiA/IGFwaSArIFwiZ2V0UmVhbFVybD9wbGF0Zm9ybT1cIiArIGRhdGEucGxhdEZvcm0gKyBcIiZyb29tSWQ9XCIgKyBkYXRhLnJvb21JZCArIGxhenkgOiBcImhpa2VyOi8vcGFnZS9kZXRhaWw/I2ltbWVyc2l2ZVRoZW1lIyZyb29taWQ9XCIgKyBkYXRhLnJvb21JZCArIFwiJnBsYXRmb3JtPVwiICsgZGF0YS5wbGF0Rm9ybSxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oZGF0YS5wbGF0Rm9ybSArIGRhdGEucm9vbUlkLCBcIjBcIikgPT0gMSA/IFwi5bey5YWz5rOoXCIgOiBcIuacquWFs+azqFwiLFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodWlkLCByb29taWQsIHBsYXRmb3JtLCBhcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcIjBcIikgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpICsgXCJmb2xsb3c/cGxhdGZvcm09XCIgKyBwbGF0Zm9ybSArIFwiJnJvb21JZD1cIiArIHJvb21pZCArIFwiJnVpZD1cIiArIHVpZCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcIjFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly9cIiArIHJlcy5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpICsgXCJ1bkZvbGxvdz9wbGF0Zm9ybT1cIiArIHBsYXRmb3JtICsgXCImcm9vbUlkPVwiICsgcm9vbWlkICsgXCImdWlkPVwiICsgdWlkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKHBsYXRmb3JtICsgcm9vbWlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ0b2FzdDovL1wiICsgcmVzLmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdWlkLCBkYXRhLnJvb21JZCwgZGF0YS5wbGF0Rm9ybSwgYXBpKVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwi5a6Y572R6ZO+5o6lXCIsXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChyb29taWQsIHBsYXRmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHBsYXRmb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRvdXl1XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcImh0dHBzOi8vbS5kb3V5dS5jb20vXCIgKyByb29taWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYmlsaWJpbGlcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbS9oNS9cIiArIHJvb21pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJodXlhXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcImh0dHBzOi8vbS5odXlhLmNvbS9cIiArIHJvb21pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkb3V5aW5cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiaHR0cHM6Ly9saXZlLmRvdXlpbi5jb20vXCIgKyByb29taWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2NcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiaHR0cHM6Ly9oNS5jYy4xNjMuY29tL2NjL1wiICsgcm9vbWlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgICAgICAgICAgICAgIH0sIGRhdGEucm9vbUlkLCBkYXRhLnBsYXRGb3JtKVxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxufVxuc2V0UmVzdWx0KGQpOyIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5P2t3PSoqIiwiZ3JvdXAiOiIj77iP4oOj5bi455SoIiwic2VhcmNoRmluZCI6ImpzOlxuaWYgKGdldEl0ZW0oXCJ1aWRcIiwgXCJcIikgPT0gXCJcIikge1xuICAgIHZhciBkID0gW11cbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogXCLor7flhYjnmbvpmYZcIixcbiAgICAgICAgdXJsOiBcImhpa2VyOi8vcGFnZS9oaXN0b3J5XCJcbiAgICB9KVxufSBlbHNlIHtcbiAgICBzZXRSZXN1bHQoW3tcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9zZWFyY2g/cz0nICsgZ2V0UGFyYW0oXCJrd1wiKSxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIHJ1bGVzOiAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgICQucmVxdWlyZShcInNlYXJjaFwiKS5lbmdpbmVzLmZvckVhY2goKE1hcCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBNYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNlYXJjaF91cmxcIjogYnVpbGRVcmwoXCJoaWtlcjovL2VtcHR5XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdzogXCIqKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IFwiZnlwYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lOiBNYXBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWFyY2hGaW5kXCI6IFwianM6JC5yZXF1aXJlKCdoaWtlcjovL3BhZ2Uvc2VhcmNoP3J1bGU9SnVzdExpdmUnKS5zZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IFwi5pCc57Si77yaXCIgKyBnZXRQYXJhbShcImt3XCIpXG4gICAgfV0pXG59XG5zZXRSZXN1bHQoZCkiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnXCIsXCJwYXRoXCI6XCJkZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxubGV0IGFwaSA9IFxcXCJodHRwOi8veWoxMjExLndvcms6ODAxMy9hcGkvbGl2ZS9cXFwiO1xcbmxldCBtdWx0aWxpbmUgPSBnZXRJdGVtKCdtdWx0aWxpbmUnLCAnMScpID09IFxcXCIxXFxcIiA/IFxcXCJnZXRSZWFsVXJsTXVsdGlTb3VyY2VcXFwiIDogXFxcImdldFJlYWxVcmxcXFwiO1xcbmxldCB1aWQgPSBnZXRJdGVtKFxcXCJ1aWRcXFwiLCBcXFwiXFxcIik7XFxubGV0IHBsYXRmb3JtID0gZ2V0UGFyYW0oXFxcInBsYXRmb3JtXFxcIik7XFxudmFyIHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChhcGkgKyBcXFwiZ2V0Um9vbUluZm8/dWlkPVxcXCIgKyB1aWQgKyBcXFwiJnBsYXRmb3JtPVxcXCIgKyBwbGF0Zm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyBnZXRQYXJhbShcXFwicm9vbWlkXFxcIikpKTtcXG4vL+i/meS4pOS4qumTvuaOpeS4jeWQjFxcbnZhciBwbGF5dXJsID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSArIG11bHRpbGluZSArIFxcXCI/cGxhdGZvcm09XFxcIiArIHBsYXRmb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIGdldFBhcmFtKFxcXCJyb29taWRcXFwiKSkpLmRhdGE7XFxuXFxudmFyIGZvbGxvdyA9IHJlcy5kYXRhLmlzRm9sbG93ZWQ7XFxudmFyIHJvb21pZCA9IHJlcy5kYXRhLnJvb21JZDtcXG5pZiAocGxhdGZvcm0gPT0gXFxcImRvdXl1XFxcIikge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbS5kb3V5dS5jb20vXFxcIiArIHJvb21pZDtcXG59IGVsc2UgaWYgKHBsYXRmb3JtID09IFxcXCJodXlhXFxcIikge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbS5odXlhLmNvbS9cXFwiICsgcm9vbWlkO1xcbn0gZWxzZSBpZiAocGxhdGZvcm0gPT0gXFxcImJpbGliaWxpXFxcIikge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbGl2ZS5iaWxpYmlsaS5jb20vaDUvXFxcIiArIHJvb21pZDtcXG59IGVsc2UgaWYgKHBsYXRmb3JtID09IFxcXCJkb3V5aW5cXFwiKSB7XFxuICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9saXZlLmRvdXlpbi5jb20vXFxcIiArIHJvb21pZDtcXG59IGVsc2Uge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vaDUuY2MuMTYzLmNvbS9jYy9cXFwiICsgcm9vbWlkO1xcbn07XFxudHJ5IHtcXG4gICAgdmFyIOW5s+WPsCA9IHJlcy5kYXRhLnBsYXRGb3JtLnJlcGxhY2UoJ2h1eWEnLCAn6JmO54mZJykucmVwbGFjZSgnZG91eXUnLCAn5paX6bG8JykucmVwbGFjZSgnY2MnLCAn572R5piTQ0MnKS5yZXBsYWNlKFxcXCJiaWxpYmlsaVxcXCIsIFxcXCLlk5Tlk6nlk5Tlk6lcXFwiKS5yZXBsYWNlKFxcXCJkb3V5aW5cXFwiLCBcXFwi5oqW6Z+zXFxcIik7XFxufSBjYXRjaCAoZSkge307XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHJlcy5kYXRhLmlzTGl2ZSA9PSAxID8gcmVzLmRhdGEucm9vbU5hbWUgOiByZXMuZGF0YS5vd25lck5hbWUsXFxuICAgIGltZzogcmVzLmRhdGEuaXNMaXZlID09IDEgPyByZXMuZGF0YS5yb29tUGljICsgXFxcIkBSZWZlcmVyPVxcXCIgOiByZXMuZGF0YS5vd25lckhlYWRQaWMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgZGVzYzogXFxcIuWIhuWMuu+8mlxcXCIgKyDlubPlj7AgKyAnwrcnICsgcmVzLmRhdGEuY2F0ZWdvcnlOYW1lICsgKHJlcy5kYXRhLmlzTGl2ZSA9PSAxID8gXFxcIlxcXFxu54q25oCB77ya5q2j5Zyo55u05pKtXFxcIiA6IFxcXCJcXFxcbueKtuaAge+8muacquW8gOaSrVxcXCIpICsgXFxcIlxcXFxu54K55Ye75LiL5pa55Li75pKt5aS05YOP6L+b5YWl5a6Y572RXFxcIixcXG4gICAgdXJsOiByZXMuZGF0YS5pc0xpdmUgPT0gMSA/IHJlcy5kYXRhLnJvb21QaWMgOiByZXMuZGF0YS5vd25lckhlYWRQaWMsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBncmFkaWVudDogdHJ1ZVxcbiAgICB9XFxufSwge1xcbiAgICB0aXRsZTogcmVzLmRhdGEub3duZXJOYW1lLFxcbiAgICBpbWc6IHJlcy5kYXRhLm93bmVySGVhZFBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICB1cmw6IHVybCxcXG4gICAgY29sX3R5cGU6IFxcXCJpY29uXzJfcm91bmRcXFwiXFxufSwge1xcbiAgICB0aXRsZTogcmVzLmRhdGEuaXNGb2xsb3dlZCA9PSAxID8gXFxcIuW3suWFs+azqFxcXCIgOiBcXFwi5pyq5YWz5rOoXFxcIixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh1aWQsIHJvb21pZCwgcGxhdGZvcm0sIGZvbGxvdywgYXBpKSA9PiB7XFxuICAgICAgICBpZiAoZm9sbG93ID09IDApIHtcXG4gICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSArIFxcXCJmb2xsb3c/cGxhdGZvcm09XFxcIiArIHBsYXRmb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIHJvb21pZCArIFxcXCImdWlkPVxcXCIgKyB1aWQpKVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIHJlcy5kYXRhXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpICsgXFxcInVuRm9sbG93P3BsYXRmb3JtPVxcXCIgKyBwbGF0Zm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyByb29taWQgKyBcXFwiJnVpZD1cXFwiICsgdWlkKSlcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXCIgKyByZXMuZGF0YVxcbiAgICAgICAgfVxcbiAgICB9LCB1aWQsIHJvb21pZCwgcGxhdGZvcm0sIGZvbGxvdywgYXBpKSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxufSk7XFxuXFxuZnVuY3Rpb24gbGF6eTEoanNvbikge1xcbiAgICBsZXQgbmFtZSA9IHtcXG4gICAgICAgIFxcXCJPRFxcXCI6IFxcXCLljp/nlLtcXFwiLFxcbiAgICAgICAgXFxcIkZEXFxcIjogXFxcIua1geeVhVxcXCIsXFxuICAgICAgICBcXFwiTERcXFwiOiBcXFwi5qCH5riFXFxcIixcXG4gICAgICAgIFxcXCJTRFxcXCI6IFxcXCLpq5jmuIVcXFwiLFxcbiAgICAgICAgXFxcIkhEXFxcIjogXFxcIui2hea4hVxcXCIsXFxuICAgICAgICBcXFwiMktcXFwiOiBcXFwiMktcXFwiLFxcbiAgICAgICAgXFxcIjRLXFxcIjogXFxcIjRLXFxcIixcXG4gICAgICAgIFxcXCJGSERcXFwiOiBcXFwi5YWo6auY5riFXFxcIixcXG4gICAgICAgIFxcXCJYTERcXFwiOiBcXFwi5p6B6YCfXFxcIixcXG4gICAgICAgIFxcXCJTUVxcXCI6IFxcXCLmma7pgJrpn7PotKhcXFwiLFxcbiAgICAgICAgXFxcIkhRXFxcIjogXFxcIumrmOmfs+i0qFxcXCJcXG4gICAgfTtcXG4gICAgbGV0IHVybHMgPSBbXTtcXG4gICAgbGV0IG5hbWVzID0gW107XFxuICAgIGZvciAodmFyIGtleSBpbiBqc29uKSB7XFxuICAgICAgICBpZiAoIS9heXl1aWR8dG8vLnRlc3Qoa2V5KSkge1xcbiAgICAgICAgICAgIHVybHMucHVzaChqc29uW2tleV0pXFxuICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lW2tleV0pXFxuICAgICAgICB9O1xcbiAgICB9O1xcbiAgICBmb3IgKHZhciBpIGluIG5hbWVzKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBuYW1lc1tpXSxcXG4gICAgICAgICAgICB1cmw6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgbmFtZXM6IG5hbWVzLFxcbiAgICAgICAgICAgICAgICB1cmxzOiB1cmxzXFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxuICAgICAgICB9KVxcbiAgICB9O1xcbn07XFxuXFxuZnVuY3Rpb24gbGF6eTIoanNvbikge1xcbiAgICBmb3IgKGxldCB4bCBpbiBqc29uKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4bCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaXN0KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gW107XFxuICAgICAgICAgICAgICAgIGxldCB1cmxzID0gW11cXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgbGkgPSBsaXN0W2ldO1xcbiAgICAgICAgICAgICAgICAgICAgbmFtZS5wdXNoKGxpLnF1YWxpdHlOYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgdXJscy5wdXNoKGxpLnBsYXlVcmwpXFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lczogbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybHM6IHVybHMsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSwganNvblt4bF0pXFxuICAgICAgICB9KVxcbiAgICB9XFxufTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxufSwge1xcbiAgICB0aXRsZTogZ2V0SXRlbSgnbXVsdGlsaW5lJywgJzEnKSA9PSBcXFwiMVxcXCIgPyBcXFwi6YCJ5oup57q/6LevXFxcIiA6IFxcXCLpgInmi6nnlLvotKhcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbn0pO1xcbmdldEl0ZW0oJ211bHRpbGluZScsICcxJykgPT0gXFxcIjFcXFwiID8gbGF6eTIocGxheXVybCkgOiBsYXp5MShwbGF5dXJsKVxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzJcIixcIm5hbWVcIjpcIuWFs+azqOWIl+ihqFwiLFwicGF0aFwiOlwiaGlzdG9yeVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5zZXRQYWdlVGl0bGUoXFxcIuWFs+azqFxcXCIpO1xcbmxldCBhcGkgPSBcXFwiaHR0cDovL3lqMTIxMS53b3JrOjgwMTMvYXBpL2xpdmUvXFxcIjtcXG5sZXQgdWlkID0gZ2V0SXRlbShcXFwidWlkXFxcIiwgXFxcIlxcXCIpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBnZXRJdGVtKFxcXCJuaWNrbmFtZVxcXCIsIFxcXCLms6gg5YaMXFxcIiksXFxuICAgIGRlc2M6IGdldEl0ZW0oXFxcInVzZXJuYW1lXFxcIiwgXFxcIlxcXCIpICsgXFxcIlxcXFx0XFxcXHRcXFwiLFxcbiAgICB1cmw6IHVpZCA9PSBcXFwiXFxcIiA/IFxcXCJodHRwOi8vbGl2ZS55ajEyMTEud29yay9tb2JpbGUvaW5kZXgvaG9tZS9yZWNvbW1lbmQjXFxcIiA6ICQoXFxcIuaYr+WQpuazqOmUgO+8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgY2xlYXJJdGVtKFxcXCJ1aWRcXFwiKTtcXG4gICAgICAgIGNsZWFySXRlbShcXFwiYWNjb3VudFxcXCIpO1xcbiAgICAgICAgY2xlYXJJdGVtKFxcXCJwYXNzd29yZFxcXCIpO1xcbiAgICAgICAgY2xlYXJJdGVtKFxcXCJuaWNrbmFtZVxcXCIpO1xcbiAgICAgICAgY2xlYXJJdGVtKFxcXCJ1c2VybmFtZVxcXCIpO1xcbiAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ms6jplIDmiJDlip9cXFwiO1xcbiAgICB9KSxcXG4gICAgaW1nOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9rZS83My5wbmdcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG59KVxcbmlmICh1aWQgPT0gXFxcIlxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGRlc2M6IFxcXCLotKblj7dcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInNldEl0ZW0oJ2FjY291bnQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIGRlc2M6IFxcXCLlr4bnoIFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInNldEl0ZW0oJ3Bhc3N3b3JkJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH0sXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIlxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIueZuyAg5b2VXFxcIixcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgbGV0IGFjY291bnQgPSBnZXRJdGVtKFxcXCJhY2NvdW50XFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIGxldCBwYXNzd29yZCA9IGdldEl0ZW0oXFxcInBhc3N3b3JkXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIGlmIChhY2NvdW50ID09IFxcXCJcXFwiIHx8IHBhc3N3b3JkID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/luJDlj7fmiJblr4bnoIHkuI3og73kuLrnqbrvvIFcXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwOi8veWoxMjExLndvcms6ODAxMy9hcGkvbG9naW4/Jywge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogXFxcIm9raHR0cC8zLjEyLjEzXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IFxcXCJ1c2VybmFtZT1cXFwiICsgYWNjb3VudCArIFxcXCImcGFzc3dvcmQ9XFxcIiArIG1kNShwYXNzd29yZCksXFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgLy9sb2coY29va2llcylcXG4gICAgICAgICAgICAgICAgaWYgKGNvb2tpZXMuY29kZSA9PSAyMDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcInVpZFxcXCIsIGNvb2tpZXMuZGF0YS51aWQpXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJuaWNrbmFtZVxcXCIsIGNvb2tpZXMuZGF0YS5uaWNrTmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ1c2VybmFtZVxcXCIsIGNvb2tpZXMuZGF0YS51c2VyTmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICBiYWNrKClcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvlvZXmiJDlip9cXFwiO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJuaWNrbmFtZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJ1c2VybmFtZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJ1aWRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvpmYblpLHotKXvvIzlj6/og73mmK/nlKjmiLflkI3miJblr4bnoIHmnInor69cXFwiO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgfSlcXG59O1xcbmxldCBvZmYgPSBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS82My5zdmdcXFwiO1xcbmxldCBvbiA9IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LzU1LnN2Z1xcXCI7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0sIHtcXG4gICAgdGl0bGU6IFxcXCLlpJrnur/ot69cXFwiLFxcbiAgICBpbWc6IGdldEl0ZW0oXFxcIm11bHRpbGluZVxcXCIsIFxcXCIxXFxcIikgPT0gXFxcIjFcXFwiID8gb24gOiBvZmYsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9pY29uXFxcIixcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGlmIChnZXRJdGVtKFxcXCJtdWx0aWxpbmVcXFwiLCBcXFwiMVxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgICAgIHNldEl0ZW0oXFxcIm11bHRpbGluZVxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGNsZWFySXRlbShcXFwibXVsdGlsaW5lXFxcIik7XFxuICAgICAgICB9O1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgfSlcXG59LCB7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG59LCB7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pO1xcbnZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpICsgXFxcImdldFJvb21zT24/dWlkPVxcXCIgKyB1aWQpKTtcXG52YXIgcmVzID0gcmVzLmRhdGE7XFxuLy9sb2cocmVzKVxcbnZhciBzVHlwZSA9IGdldE15VmFyKFxcXCJzVHlwZVxcXCIpID8gZ2V0TXlWYXIoXFxcInNUeXBlXFxcIikgOiBcXFwibGl2aW5nXFxcIjtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogc1R5cGUgPT0gXFxcImxpdmluZ1xcXCIgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI0ZBNzI5OFxcXCI+5q2j5Zyo55u05pKtPC9mcm9udD48L3N0cm9uZz4nIDogXFxcIuato+WcqOebtOaSrVxcXCIsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc1R5cGUpID0+IHtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJzVHlwZVxcXCIsIHNUeXBlID09ICdsaXZpbmcnID8gJ291dGxpbmUnIDogJ2xpdmluZycpO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgc1R5cGUpLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJcXG59LCB7XFxuICAgIHRpdGxlOiBzVHlwZSA9PSBcXFwib3V0bGluZVxcXCIgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI0ZBNzI5OFxcXCI+5pyq55u05pKtPC9mcm9udD48L3N0cm9uZz4nIDogXFxcIuacquebtOaSrVxcXCIsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc1R5cGUpID0+IHtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJzVHlwZVxcXCIsIHNUeXBlID09ICdvdXRsaW5lJyA/ICdsaXZpbmcnIDogJ291dGxpbmUnKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIHNUeXBlKSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxufSlcXG5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvbGF6eScpO1xcbmlmIChzVHlwZSA9PSBcXFwibGl2aW5nXFxcIikge1xcbiAgICBmb3IgKHZhciBpIGluIHJlcykge1xcbiAgICAgICAgdmFyIHRlbXAgPSByZXNbaV1cXG4gICAgICAgIGlmICh0ZW1wLmlzTGl2ZSA9PSAxKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRlbXAucGxhdEZvcm0ucmVwbGFjZSgnaHV5YScsICfomY7niZknKS5yZXBsYWNlKCdkb3V5dScsICfmlpfpsbwnKS5yZXBsYWNlKCdjYycsICfnvZHmmJNDQycpLnJlcGxhY2UoXFxcImJpbGliaWxpXFxcIiwgXFxcIuWTlOWTqVxcXCIpLnJlcGxhY2UoXFxcImRvdXlpblxcXCIsIFxcXCLmipbpn7NcXFwiKSArICfCtycgKyB0ZW1wLm93bmVyTmFtZSxcXG4gICAgICAgICAgICBkZXNjOiAodGVtcC5jYXRlZ29yeU5hbWUgIT09IFxcXCJcXFwiID8gdGVtcC5jYXRlZ29yeU5hbWUgKyAnwrcnIDogXFxcIlxcXCIpICsgKHRlbXAub25saW5lID49IFxcXCIxMDAwMFxcXCIgPyAodGVtcC5vbmxpbmUgLyAxMDAwMCkudG9GaXhlZCgxKSArIFxcXCLkuIfnsonkuJ1cXFwiIDogdGVtcC5vbmxpbmUgKyBcXFwi57KJ5LidXFxcIiksXFxuICAgICAgICAgICAgICAgIGltZzogdGVtcC5yb29tUGljICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogZ2V0SXRlbSgnbXVsdGlsaW5lJywgJzEnKSAhPT0gXFxcIjFcXFwiID8gYXBpICsgXFxcImdldFJlYWxVcmw/cGxhdGZvcm09XFxcIiArIHRlbXAucGxhdEZvcm0gKyBcXFwiJnJvb21JZD1cXFwiICsgdGVtcC5yb29tSWQgKyBsYXp5IDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/I2ltbWVyc2l2ZVRoZW1lIyZyb29taWQ9XFxcIiArIHRlbXAucm9vbUlkICsgXFxcIiZwbGF0Zm9ybT1cXFwiICsgdGVtcC5wbGF0Rm9ybSxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0SXRlbSh0ZW1wLnBsYXRGb3JtICsgdGVtcC5yb29tSWQsIFxcXCIwXFxcIikgPT0gMSA/IFxcXCLlt7LlhbPms6hcXFwiIDogXFxcIuacquWFs+azqFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHVpZCwgcm9vbWlkLCBwbGF0Zm9ybSwgYXBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcXFwiMFxcXCIpID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpICsgXFxcImZvbGxvdz9wbGF0Zm9ybT1cXFwiICsgcGxhdGZvcm0gKyBcXFwiJnJvb21JZD1cXFwiICsgcm9vbWlkICsgXFxcIiZ1aWQ9XFxcIiArIHVpZCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShwbGF0Zm9ybSArIHJvb21pZCwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFwiICsgcmVzLmRhdGFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpICsgXFxcInVuRm9sbG93P3BsYXRmb3JtPVxcXCIgKyBwbGF0Zm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyByb29taWQgKyBcXFwiJnVpZD1cXFwiICsgdWlkKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShwbGF0Zm9ybSArIHJvb21pZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIHJlcy5kYXRhXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB1aWQsIHRlbXAucm9vbUlkLCB0ZW1wLnBsYXRGb3JtLCBhcGkpXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLlrpjnvZHpk77mjqVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChyb29taWQsIHBsYXRmb3JtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocGxhdGZvcm0pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcImRvdXl1XFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbS5kb3V5dS5jb20vXFxcIiArIHJvb21pZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJiaWxpYmlsaVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL2xpdmUuYmlsaWJpbGkuY29tL2g1L1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwiaHV5YVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL20uaHV5YS5jb20vXFxcIiArIHJvb21pZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJkb3V5aW5cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9saXZlLmRvdXlpbi5jb20vXFxcIiArIHJvb21pZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJjY1xcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL2g1LmNjLjE2My5jb20vY2MvXFxcIiArIHJvb21pZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRlbXAucm9vbUlkLCB0ZW1wLnBsYXRGb3JtKVxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBmb3IgKHZhciBpIGluIHJlcykge1xcbiAgICAgICAgdmFyIHRlbXAgPSByZXNbaV1cXG4gICAgICAgIGlmICh0ZW1wLmlzTGl2ZSA9PSAwICYmIHRlbXAucGxhdEZvcm0gIT09IG51bGwpIHtcXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGVtcC5wbGF0Rm9ybS5yZXBsYWNlKCdodXlhJywgJ+iZjueJmScpLnJlcGxhY2UoJ2RvdXl1JywgJ+aWl+mxvCcpLnJlcGxhY2UoJ2NjJywgJ+e9keaYk0NDJykucmVwbGFjZShcXFwiYmlsaWJpbGlcXFwiLCBcXFwi5ZOU5ZOpXFxcIikucmVwbGFjZShcXFwiZG91eWluXFxcIiwgXFxcIuaKlumfs1xcXCIpICsgJ8K3JyArIHRlbXAub3duZXJOYW1lLFxcbiAgICAgICAgICAgIGRlc2M6IHRlbXAub25saW5lID49IFxcXCIxMDAwMFxcXCIgPyAodGVtcC5vbmxpbmUgLyAxMDAwMCkudG9GaXhlZCgxKSArIFxcXCLkuIfnsonkuJ1cXFwiIDogdGVtcC5vbmxpbmUgKyBcXFwi57KJ5LidXFxcIixcXG4gICAgICAgICAgICAgICAgaW1nOiB0ZW1wLm93bmVySGVhZFBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsPyNpbW1lcnNpdmVUaGVtZSMmcm9vbWlkPVxcXCIgKyB0ZW1wLnJvb21JZCArIFxcXCImcGxhdGZvcm09XFxcIiArIHRlbXAucGxhdEZvcm0sXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0odGVtcC5wbGF0Rm9ybSArIHRlbXAucm9vbUlkLCBcXFwiMFxcXCIpID09IDEgPyBcXFwi5bey5YWz5rOoXFxcIiA6IFxcXCLmnKrlhbPms6hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh1aWQsIHJvb21pZCwgcGxhdGZvcm0sIGFwaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbShwbGF0Zm9ybSArIHJvb21pZCwgXFxcIjBcXFwiKSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSArIFxcXCJmb2xsb3c/cGxhdGZvcm09XFxcIiArIHBsYXRmb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIHJvb21pZCArIFxcXCImdWlkPVxcXCIgKyB1aWQpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0ocGxhdGZvcm0gKyByb29taWQsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIHJlcy5kYXRhXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSArIFxcXCJ1bkZvbGxvdz9wbGF0Zm9ybT1cXFwiICsgcGxhdGZvcm0gKyBcXFwiJnJvb21JZD1cXFwiICsgcm9vbWlkICsgXFxcIiZ1aWQ9XFxcIiArIHVpZCkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0ocGxhdGZvcm0gKyByb29taWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXCIgKyByZXMuZGF0YVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdWlkLCB0ZW1wLnJvb21JZCwgdGVtcC5wbGF0Rm9ybSwgYXBpKVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5a6Y572R6ZO+5o6lXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocm9vbWlkLCBwbGF0Zm9ybSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHBsYXRmb3JtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJkb3V5dVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL20uZG91eXUuY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwiYmlsaWJpbGlcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbS9oNS9cXFwiICsgcm9vbWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcImh1eWFcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9tLmh1eWEuY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwiZG91eWluXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbGl2ZS5kb3V5aW4uY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwiY2NcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9oNS5jYy4xNjMuY29tL2NjL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0ZW1wLnJvb21JZCwgdGVtcC5wbGF0Rm9ybSlcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcInRleHRfM1wiLFwibmFtZVwiOlwi5oC75YiG57G7XCIsXCJwYXRoXCI6XCJuZXdDbGFzc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG4vKmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIGNsZWFyTXlWYXIoJ015ZmwnKVxcbiAgICBjbGVhck15VmFyKCdNeXB0JykgIFxcbiAgICB9KSkqL1xcbmxldCBhcGkgPSBcXFwiaHR0cDovL3lqMTIxMS53b3JrOjgwMTMvYXBpL2xpdmUvXFxcIjtcXG5sZXQgaW1n6YCJ5LitID0gXFxcImh0dHBzOi8vaW1nMi5iYWlkdS5jb20vaXQvdT02MDIzODUwMiw5MzYwODgwMjUmZm09MjUzJmZtdD1hdXRvJmFwcD0xMzgmZj1KUEVHP3c9NTAwJmg9NTgyQFJlZmVyZXI9XFxcIlxcbmxldCBpbWfmnKrpgIkgPSBcXFwiaHR0cHM6Ly9pbWcwLmJhaWR1LmNvbS9pdC91PTk2MDU0OTA4NCwzMjQyNjkyODE3JmZtPTI1MyZmbXQ9YXV0byZhcHA9MTM4JmY9SlBFRz93PTUwMCZoPTUwMEBSZWZlcmVyPVxcXCJcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIueJiOWdl+WIhuexu1xcXCIsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgY2xlYXJNeVZhcignTXlmbCcpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0pLFxcbiAgICBpbWc6IGdldE15VmFyKFxcXCJNeWZsXFxcIikgPT0gJycgPyBpbWfpgInkuK0gOiBpbWfmnKrpgIksXFxuICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yXFxcIlxcbn0sIHtcXG4gICAgdGl0bGU6IFxcXCLlubPlj7DliIbnsbtcXFwiLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJNeWZsXFxcIiwgJ3B0JylcXG4gICAgICAgIC8qY2xlYXJNeVZhcignTXlwdCcpKi9cXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSksXFxuICAgIGltZzogZ2V0TXlWYXIoXFxcIk15ZmxcXFwiKSA9PSAnJyA/IGltZ+acqumAiSA6IGltZ+mAieS4rSxcXG4gICAgY29sX3R5cGU6IFxcXCJpY29uXzJcXFwiXFxufSlcXG5cXG4vL+W5s+WPsOWIhuexu1xcbmlmIChnZXRNeVZhcihcXFwiTXlmbFxcXCIpKSB7XFxuICAgIGxldCB0aXQgPSBbXFxcIuiZjueJmVxcXCIsIFxcXCLmlpfpsbxcXFwiLCBcXFwi5ZOU5ZOpXFxcIiwgXFxcIuaKlumfs1xcXCIsIFxcXCLnvZHmmJNcXFwiXTtcXG4gICAgbGV0IGZ1cmwgPSBbXFxcImh1eWFcXFwiLCBcXFwiZG91eXVcXFwiLCBcXFwiYmlsaWJpbGlcXFwiLCBcXFwiZG91eWluXFxcIiwgXFxcImNjXFxcIl07XFxuICAgIGxldCBwaWMgPSBbXFxcImh0dHBzOi8vbWJzMS5iZHN0YXRpYy5jb20vc2VhcmNoYm94L21hcHBjb25zb2xlL2ltYWdlLzIwMjAwOTE1LzU4ZDNlMzgwLTgxOGItNDkxYS1hOTczLTFlZjQ3YWE1ZTg3Zi5qcGdcXFwiLCBcXFwiaHR0cHM6Ly9iLmJkc3RhdGljLmNvbS9zZWFyY2hib3gvbWFwcGNvbnNvbGUvaW1hZ2UvMjAxODA4MDgvMTUzMzY5ODA0NTEwNTI3Ni5wbmdcXFwiLCBcXFwiaHR0cHM6Ly9iLmJkc3RhdGljLmNvbS9zZWFyY2hib3gvbWFwcGNvbnNvbGUvaW1hZ2UvMjAxODEwMzAvMTU0MDg4OTAzODE1OTg2Mi5wbmdcXFwiLCBcXFwiaHR0cHM6Ly93d3cuZG91eWluLmNvbS9mYXZpY29uLmljb1xcXCIsIFxcXCJodHRwczovL2NjLmZwLnBzLm5ldGVhc2UuY29tL2ZpbGUvNjBhMzFkM2U3ZjlkMmEzOTEyMGJlYTAxNkxwN1pFZTEwM1xcXCJdO1xcbiAgICBmb3IgKGxldCBpIGluIHRpdCkge1xcbiAgICAgICAgbGV0IHRpID0gdGl0W2ldO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZnVybFtpXSA9PSBnZXRNeVZhcihcXFwiTXlwdFxcXCIsIFxcXCJodXlhXFxcIikgPyBcXFwi4oCY4oCY4oCZ4oCZPGI+XFxcIiArIHRpLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIjwvYj5cXFwiIDogdGksXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIk15cHRcXFwiLCB1cmwpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgZnVybFtpXSksXFxuICAgICAgICAgICAgaW1nOiBwaWNbaV0gKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fNVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pXFxuXFxuICAgIC8v5bmz5Y+w5YiX6KGoXFxuICAgIGxldCBwdF91cmwgPSBhcGkgKyBcXFwiZ2V0QXJlYXM/cGxhdGZvcm09XFxcIiArIGdldE15VmFyKFxcXCJNeXB0XFxcIiwgXFxcImh1eWFcXFwiKTtcXG4gICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChwdF91cmwpKS5kYXRhO1xcbiAgICAvL2xvZyhyZXMpXFxuICAgIGZvciAobGV0IGogaW4gcmVzKSB7XFxuICAgICAgICB2YXIgdGVtcCA9IHJlc1tqXVxcbiAgICAgICAgZm9yIChkYXRhIG9mIHRlbXApXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuYXJlYU5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogKGRhdGEuYXJlYVBpYyAhPT0gXFxcIlxcXCIgPyBkYXRhLmFyZWFQaWMgOiBcXFwiaHR0cHM6Ly93d3cuZG91eWluLmNvbS9mYXZpY29uLmljb1xcXCIpICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9uZXdDbGFzc0xpc3Q/cGFnZT1meXBhZ2UmcGxhdGZvcm09XFxcIiArIGRhdGEucGxhdGZvcm0gKyBcXFwiJmFyZWE9XFxcIiArIGRhdGEuYXJlYU5hbWUsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgfSlcXG5cXG4gICAgLy/niYjlnZfliIbnsbtcXG4gICAgdmFyIHVybCA9IGFwaSArICdnZXRBbGxBcmVhcyc7XFxuICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSkuZGF0YTtcXG4gICAgLy9sb2cocmVzKVxcblxcbiAgICB2YXIgdHlwZU5hbWVzID0gW107XFxuICAgIHZhciBiaWdMaXN0ID0gW107XFxuICAgIHZhciBzbWFsbExpc3QgPSBbXTtcXG4gICAgcHV0TXlWYXIoXFxcInR5cGVOYW1lVmFyXFxcIiwgIWdldE15VmFyKCd0eXBlTmFtZVZhcicpID8gJ+WFqOmDqCcgOiBnZXRNeVZhcigndHlwZU5hbWVWYXInKSk7XFxuICAgIHB1dE15VmFyKCdhcmVhJywgJ2FyZWFOYW1lJylcXG4gICAgZm9yIChsZXQgciBvZiByZXMpIHtcXG4gICAgICAgIGZvciAobGV0IHggb2Ygcikge1xcbiAgICAgICAgICAgIGlmICghdHlwZU5hbWVzLmluY2x1ZGVzKHgudHlwZU5hbWUpKSB7XFxuICAgICAgICAgICAgICAgIHR5cGVOYW1lcy5wdXNoKHgudHlwZU5hbWUpO1xcbiAgICAgICAgICAgICAgICBiaWdMaXN0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKFxcXCJ0eXBlTmFtZVZhclxcXCIpID09IHgudHlwZU5hbWUgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI0ZBNzI5OFxcXCI+JyArIHgudHlwZU5hbWUgKyAnPC9mcm9udD48L3N0cm9uZz4nIDogeC50eXBlTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodHlwZU5hbWVWYXIpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidHlwZU5hbWVWYXJcXFwiLCB0eXBlTmFtZVZhcik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB4LnR5cGVOYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgc21hbGxMaXN0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogeC5hcmVhTmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ld0NsYXNzTGlzdD90eXBlTmFtZT0nICsgeC50eXBlTmFtZSArICcmYXJlYU5hbWU9JyArIHguYXJlYU5hbWUgKyBcXFwiJnBhZ2U9ZnlwYWdlXFxcIixcXG4gICAgICAgICAgICAgICAgaW1nOiB4LmFyZWFQaWMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uXzVcXFwiLFxcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTogeC50eXBlTmFtZVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH07XFxuXFxuICAgIGJpZ0xpc3QudW5zaGlmdCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoXFxcInR5cGVOYW1lVmFyXFxcIikgPT0gJ+WFqOmDqCcgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI0ZBNzI5OFxcXCI+5YWo6YOoPC9mcm9udD48L3N0cm9uZz4nIDogJ+WFqOmDqCcsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHR5cGVOYW1lVmFyKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcInR5cGVOYW1lVmFyXFxcIiwgdHlwZU5hbWVWYXIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgJ+WFqOmDqCcpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICB9KVxcbiAgICBkID0gZC5jb25jYXQoYmlnTGlzdCk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgfSlcXG5cXG4gICAgLy9sb2coZ2V0TXlWYXIoJ3R5cGVOYW1lVmFyJykpXFxuICAgIGlmIChnZXRNeVZhcigndHlwZU5hbWVWYXInKSA9PSAn5YWo6YOoJykge1xcbiAgICAgICAgZCA9IGQuY29uY2F0KHNtYWxsTGlzdCk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBkID0gZC5jb25jYXQoc21hbGxMaXN0LmZpbHRlcihzID0+IHMudHlwZU5hbWUgPT0gZ2V0TXlWYXIoJ3R5cGVOYW1lVmFyJykpKTtcXG4gICAgfVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8yXCIsXCJuYW1lXCI6XCLmgLvliJfooahcIixcInBhdGhcIjpcIm5ld0NsYXNzTGlzdFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5hZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKCdNeWZybycpO1xcbiAgICBjbGVhck15VmFyKCdob21lJyk7XFxufSkpO1xcbmxldCBhcGkgPSBcXFwiaHR0cDovL3lqMTIxMS53b3JrOjgwMTMvYXBpL2xpdmUvXFxcIjtcXG4vL+WIh+aNouW5s+WPsFxcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgbGV0IHRpdCA9IFtcXFwi6JmO54mZXFxcIiwgXFxcIuaWl+mxvFxcXCIsIFxcXCLlk5Tlk6lcXFwiLCBcXFwi5oqW6Z+zXFxcIiwgXFxcIue9keaYk1xcXCJdO1xcbiAgICBsZXQgZnVybCA9IFtcXFwiaHV5YVxcXCIsIFxcXCJkb3V5dVxcXCIsIFxcXCJiaWxpYmlsaVxcXCIsIFxcXCJkb3V5aW5cXFwiLCBcXFwiY2NcXFwiXTtcXG4gICAgbGV0IHBpYyA9IFtcXFwiaHR0cHM6Ly9tYnMxLmJkc3RhdGljLmNvbS9zZWFyY2hib3gvbWFwcGNvbnNvbGUvaW1hZ2UvMjAyMDA5MTUvNThkM2UzODAtODE4Yi00OTFhLWE5NzMtMWVmNDdhYTVlODdmLmpwZ1xcXCIsIFxcXCJodHRwczovL2IuYmRzdGF0aWMuY29tL3NlYXJjaGJveC9tYXBwY29uc29sZS9pbWFnZS8yMDE4MDgwOC8xNTMzNjk4MDQ1MTA1Mjc2LnBuZ1xcXCIsIFxcXCJodHRwczovL2IuYmRzdGF0aWMuY29tL3NlYXJjaGJveC9tYXBwY29uc29sZS9pbWFnZS8yMDE4MTAzMC8xNTQwODg5MDM4MTU5ODYyLnBuZ1xcXCIsIFxcXCJodHRwczovL3d3dy5kb3V5aW4uY29tL2Zhdmljb24uaWNvXFxcIiwgXFxcImh0dHBzOi8vY2MuZnAucHMubmV0ZWFzZS5jb20vZmlsZS82MGEzMWQzZTdmOWQyYTM5MTIwYmVhMDE2THA3WkVlMTAzXFxcIl07XFxuICAgIGZvciAobGV0IGkgaW4gdGl0KSB7XFxuICAgICAgICBsZXQgdGkgPSB0aXRbaV07XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBmdXJsW2ldID09IGdldE15VmFyKFxcXCJNeWZyb1xcXCIpID8gXFxcIuKAmOKAmOKAmeKAmTxiPlxcXCIgKyB0aS5mb250Y29sb3IoXFxcIiNGQTcyOThcXFwiKSArIFxcXCI8L2I+XFxcIiA6IHRpLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodXJsKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJNeWZyb1xcXCIsIHVybCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBmdXJsW2ldKSxcXG4gICAgICAgICAgICBpbWc6IHBpY1tpXSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIlxcbiAgICAgICAgfSlcXG4gICAgfTtcXG59O1xcblxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCJcXG59LCB7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0sIHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5cXG4vL+WIl+ihqFxcbmxldCB6b25nID0gYXBpICsgJ2dldFJlY29tbWVuZEJ5QXJlYUFsbD9hcmVhVHlwZT0nICsgZ2V0UGFyYW0oXFxcInR5cGVOYW1lXFxcIikgKyAnJmFyZWE9JyArIGdldFBhcmFtKFxcXCJhcmVhTmFtZVxcXCIpICsgJyZwYWdlPScgKyBnZXRQYXJhbShcXFwicGFnZVxcXCIpO1xcblxcbmxldCB6ZiA9IGFwaSArIFxcXCJnZXRSZWNvbW1lbmRCeVBsYXRmb3JtQXJlYT9wbGF0Zm9ybT1cXFwiICsgZ2V0TXlWYXIoXFxcIk15ZnJvXFxcIikgKyBcXFwiJmFyZWE9XFxcIiArIGdldFBhcmFtKFxcXCJhcmVhTmFtZVxcXCIpICsgXFxcIiZwYWdlPVxcXCIgKyBnZXRQYXJhbShcXFwicGFnZVxcXCIpICsgXFxcIiZzaXplPTIwXFxcIjtcXG5cXG5sZXQgcGluID0gYXBpICsgXFxcImdldFJlY29tbWVuZEJ5UGxhdGZvcm1BcmVhXFxcIiArIE1ZX1VSTC5yZXBsYWNlKFxcXCJoaWtlcjovL3BhZ2UvbmV3Q2xhc3NMaXN0XFxcIiwgXFxcIlxcXCIpICsgXFxcIiZwYWdlPVxcXCIgKyBnZXRQYXJhbShcXFwicGFnZVxcXCIpICsgXFxcIiZzaXplPTIwXFxcIjtcXG4vL2xvZyhwaW4pXFxuXFxubGV0IHBmID0gYXBpICsgXFxcImdldFJlY29tbWVuZEJ5UGxhdGZvcm1BcmVhP3BsYXRmb3JtPVxcXCIgKyBnZXRNeVZhcihcXFwiTXlmcm9cXFwiKSArIFxcXCImYXJlYT1cXFwiICsgZ2V0TXlWYXIoXFxcImFyZWFcXFwiKSArIFxcXCImcGFnZT1cXFwiICsgZ2V0UGFyYW0oXFxcInBhZ2VcXFwiKSArIFxcXCImc2l6ZT0yMFxcXCI7XFxuXFxudHJ5IHtcXG4gICAgbGV0IGFyZWEgPSBwaW4ubWF0Y2goL2FyZWE9KC4qPykmLylbMV07XFxuICAgIC8vbG9nKGFyZWEpXFxuICAgIHB1dE15VmFyKFxcXCJhcmVhXFxcIiwgYXJlYSk7XFxufSBjYXRjaCAoZSkge1xcbiAgICB2YXIgYXJlYSA9ICcnO1xcbn1cXG5pZiAoYXJlYSA9PSAnJykge1xcbiAgICBpZiAoZ2V0TXlWYXIoXFxcIk15ZnJvXFxcIikpIHtcXG4gICAgICAgIHZhciB1cmwgPSB6ZjtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciB1cmwgPSB6b25nO1xcbiAgICB9O1xcbn0gZWxzZSB7XFxuICAgIGlmIChnZXRNeVZhcihcXFwiTXlmcm9cXFwiKSkge1xcbiAgICAgICAgdmFyIHVybCA9IHBmO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIHVybCA9IHBpbjtcXG4gICAgfTtcXG59O1xcbnRyeSB7XFxuICAgIHZhciByZXMgPSAoSlNPTi5wYXJzZShyZXF1ZXN0KHVybCkpLmRhdGEgfHwgW10pO1xcbiAgICBpZiAocmVzID09IChudWxsIHx8IFxcXCJcXFwiKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJzxicj48YnI+JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBkZXNjOiAn5pqC5peg5oi/6Ze0XFxcXG5cXFxcbuivt+WIh+aNouW5s+WPsOingueciycsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfTtcXG4gICAgcmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2xhenknKTtcXG5cXG4gICAgZm9yIChkYXRhIG9mIHJlcykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS5wbGF0Rm9ybS5yZXBsYWNlKCdodXlhJywgJ+iZjueJmScpLnJlcGxhY2UoJ2RvdXl1JywgJ+aWl+mxvCcpLnJlcGxhY2UoJ2NjJywgJ+e9keaYk0NDJykucmVwbGFjZShcXFwiYmlsaWJpbGlcXFwiLCBcXFwi5ZOU5ZOpXFxcIikucmVwbGFjZShcXFwiZG91eWluXFxcIiwgXFxcIuaKlumfs1xcXCIpICsgJ8K3JyArIGRhdGEub3duZXJOYW1lLFxcbiAgICAgICAgICAgIGRlc2M6IChkYXRhLmNhdGVnb3J5TmFtZSAhPT0gXFxcIlxcXCIgPyBkYXRhLmNhdGVnb3J5TmFtZSArICfCtycgOiBcXFwiXFxcIikgKyAoZGF0YS5vbmxpbmUgPj0gXFxcIjEwMDAwXFxcIiA/IChkYXRhLm9ubGluZSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgXFxcIuS4h1xcXCIgOiBkYXRhLm9ubGluZSArIFxcXCLkurpcXFwiKSxcXG4gICAgICAgICAgICBpbWc6IChkYXRhLnJvb21QaWMgIT09IG51bGwgJiYgZGF0YS5yb29tUGljLnN0YXJ0c1dpdGgoJy8nKSA/ICdodHRwczonICsgZGF0YS5yb29tUGljIDogZGF0YS5yb29tUGljKSArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgIHVybDogZ2V0SXRlbSgnbXVsdGlsaW5lJywgJzEnKSAhPT0gXFxcIjFcXFwiID8gYXBpICsgbXVsdGlsaW5lICsgXFxcIj9wbGF0Zm9ybT1cXFwiICsgZGF0YS5wbGF0Rm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyBkYXRhLnJvb21JZCArIGxhenkgOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD8jaW1tZXJzaXZlVGhlbWUjJnJvb21pZD1cXFwiICsgZGF0YS5yb29tSWQgKyBcXFwiJnBsYXRmb3JtPVxcXCIgKyBkYXRhLnBsYXRGb3JtLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oZGF0YS5wbGF0Rm9ybSArIGRhdGEucm9vbUlkLCBcXFwiMFxcXCIpID09IDEgPyBcXFwi5bey5YWz5rOoXFxcIiA6IFxcXCLmnKrlhbPms6hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHVpZCwgcm9vbWlkLCBwbGF0Zm9ybSwgYXBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0ocGxhdGZvcm0gKyByb29taWQsIFxcXCIwXFxcIikgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSArIFxcXCJmb2xsb3c/cGxhdGZvcm09XFxcIiArIHBsYXRmb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIHJvb21pZCArIFxcXCImdWlkPVxcXCIgKyB1aWQpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIHJlcy5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpICsgXFxcInVuRm9sbG93P3BsYXRmb3JtPVxcXCIgKyBwbGF0Zm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyByb29taWQgKyBcXFwiJnVpZD1cXFwiICsgdWlkKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0ocGxhdGZvcm0gKyByb29taWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIHJlcy5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIGdldEl0ZW0oXFxcInVpZFxcXCIpLCBkYXRhLnJvb21JZCwgZGF0YS5wbGF0Rm9ybSwgYXBpKVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWumOe9kemTvuaOpVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocm9vbWlkLCBwbGF0Zm9ybSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocGxhdGZvcm0pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwiZG91eXVcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL20uZG91eXUuY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcImJpbGliaWxpXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbS9oNS9cXFwiICsgcm9vbWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJodXlhXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9tLmh1eWEuY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcImRvdXlpblxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbGl2ZS5kb3V5aW4uY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcImNjXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9oNS5jYy4xNjMuY29tL2NjL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmw7XFxuICAgICAgICAgICAgICAgICAgICB9LCBkYXRhLnJvb21JZCwgZGF0YS5wbGF0Rm9ybSlcXG4gICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufSBjYXRjaCAoZSkge1xcbiAgICBsZXQgYXJlYSA9IHVybC5tYXRjaCgvYXJlYT0oLiopJi8pWzFdO1xcbiAgICBpZiAoZ2V0TXlWYXIoXFxcImhvbWVcXFwiLCBcXFwiMFxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgcHV0TXlWYXIoXFxcInNhcmVhXFxcIiwgYXJlYSk7XFxuICAgIH07XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxicj48YnI+JyxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9LCB7XFxuICAgICAgICBkZXNjOiAn5pqC5peg5oi/6Ze0XFxcXG5cXFxcbuivt+WIh+aNouW5s+WPsOingueciycsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59O1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImxhenlcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICBsZXQganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpLmRhdGE7XFxuICAgIGxldCBuYW1lID0ge1xcbiAgICAgICAgXFxcIk9EXFxcIjogXFxcIuWOn+eUu1xcXCIsXFxuICAgICAgICBcXFwiRkRcXFwiOiBcXFwi5rWB55WFXFxcIixcXG4gICAgICAgIFxcXCJMRFxcXCI6IFxcXCLmoIfmuIVcXFwiLFxcbiAgICAgICAgXFxcIlNEXFxcIjogXFxcIumrmOa4hVxcXCIsXFxuICAgICAgICBcXFwiSERcXFwiOiBcXFwi6LaF5riFXFxcIixcXG4gICAgICAgIFxcXCIyS1xcXCI6IFxcXCIyS1xcXCIsXFxuICAgICAgICBcXFwiNEtcXFwiOiBcXFwiNEtcXFwiLFxcbiAgICAgICAgXFxcIkZIRFxcXCI6IFxcXCLlhajpq5jmuIVcXFwiLFxcbiAgICAgICAgXFxcIlhMRFxcXCI6IFxcXCLmnoHpgJ9cXFwiLFxcbiAgICAgICAgXFxcIlNRXFxcIjogXFxcIuaZrumAmumfs+i0qFxcXCIsXFxuICAgICAgICBcXFwiSFFcXFwiOiBcXFwi6auY6Z+z6LSoXFxcIlxcbiAgICB9O1xcbiAgICBsZXQgdXJscyA9IFtdO1xcbiAgICBsZXQgbmFtZXMgPSBbXTtcXG4gICAgZm9yICh2YXIga2V5IGluIGpzb24pIHtcXG4gICAgICAgIGlmICghL2F5eXVpZHx0by8udGVzdChrZXkpKSB7XFxuICAgICAgICAgICAgdXJscy5wdXNoKGpzb25ba2V5XSlcXG4gICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWVba2V5XSlcXG4gICAgICAgIH07XFxuICAgIH07XFxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICBuYW1lczogbmFtZXMsXFxuICAgICAgICB1cmxzOiB1cmxzLFxcbiAgICB9KTtcXG59KTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0oumhtemdolwiLFwicGF0aFwiOlwic2VhcmNoXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSB7XFxuICAgIGVuZ2luZXM6IFtcXFwi5omA5pyJ5bmz5Y+wXFxcIiwgXFxcIuiZjueJmeebtOaSrVxcXCIsIFxcXCLmlpfpsbznm7Tmkq1cXFwiLCBcXFwi5ZOU5ZOp5ZOU5ZOpXFxcIiwgXFxcIuaKlumfs+ebtOaSrVxcXCIsIFxcXCLnvZHmmJNDQ1xcXCJdLFxcbiAgICBzZWFyY2g6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgLy9sb2coZ2V0UGFyYW0oXFxcImVuZ2luZVxcXCIpKVxcbiAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwOi8veWoxMjExLndvcms6ODAxMy9hcGkvbGl2ZS9zZWFyY2g/a2V5V29yZHM9XFxcIiArIGdldFBhcmFtKFxcXCJrd1xcXCIpICsgXFxcIiZpc0xpdmU9MCZ1aWQ9XFxcIiArIGdldEl0ZW0oXFxcInVpZFxcXCIsIFxcXCJcXFwiKSArIFxcXCImcGxhdGZvcm09XFxcIiArIFtcXFwiYWxsXFxcIiwgXFxcImh1eWFcXFwiLCBcXFwiZG91eXVcXFwiLCBcXFwiYmlsaWJpbGlcXFwiLCBcXFwiZG91eWluXFxcIiwgXFxcImNjXFxcIl1bXFxuICAgICAgICAgICAgW1xcXCLmiYDmnInlubPlj7BcXFwiLCBcXFwi6JmO54mZ55u05pKtXFxcIiwgXFxcIuaWl+mxvOebtOaSrVxcXCIsIFxcXCLlk5Tlk6nlk5Tlk6lcXFwiLCBcXFwi5oqW6Z+z55u05pKtXFxcIiwgXFxcIue9keaYk0NDXFxcIl0uaW5kZXhPZihnZXRQYXJhbShcXFwiZW5naW5lXFxcIikpXFxuICAgICAgICBdXFxuICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKS5kYXRhXFxuICAgICAgICBkID0ganNvbi5tYXAoZGF0YSA9PiAoe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnBsYXRmb3JtLnJlcGxhY2UoJ2h1eWEnLCAn6JmO54mZJykucmVwbGFjZSgnZG91eXUnLCAn5paX6bG8JykucmVwbGFjZSgnY2MnLCAn572R5piTQ0MnKS5yZXBsYWNlKFxcXCJiaWxpYmlsaVxcXCIsIFxcXCLlk5Tlk6lcXFwiKS5yZXBsYWNlKFxcXCJkb3V5aW5cXFwiLCBcXFwi5oqW6Z+zXFxcIikgKyAnwrcnICsgZGF0YS5uaWNrTmFtZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmZvbGxvd2VycyA+PSBcXFwiMTAwMDBcXFwiID8gKGRhdGEuZm9sbG93ZXJzIC8gMTAwMDApLnRvRml4ZWQoMSkgKyBcXFwi5LiH57KJ5LidXFxcIiA6IGRhdGEuZm9sbG93ZXJzICsgXFxcIueyieS4nVxcXCIsXFxuICAgICAgICAgICAgaW1nOiAoZGF0YS5oZWFkUGljICE9PSBudWxsICYmIGRhdGEuaGVhZFBpYy5zdGFydHNXaXRoKCcvJykgPyAnaHR0cHM6JyArIGRhdGEuaGVhZFBpYyA6IGRhdGEuaGVhZFBpYykgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgICAgICBjb250ZW50OiBkYXRhLmlzTGl2ZSA9PSAnMScgPyAn55u05pKt5LitJyA6ICfmnKrlvIDmkq0nLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/I2ltbWVyc2l2ZVRoZW1lIyZydWxlPUp1c3RMaXZlJnJvb21pZD1cXFwiICsgZGF0YS5yb29tSWQgKyBcXFwiJnBsYXRmb3JtPVxcXCIgKyBkYXRhLnBsYXRmb3JtXFxuICAgICAgICB9KSlcXG4gICAgICAgIHNldFJlc3VsdChkKVxcbiAgICB9XFxufVwifV0iLCJpY29uIjoiaHR0cHM6Ly9tLmRpYW5sdXQuY29tL2QvZmlsZS9pbWFnZS8yMDIyMDQxNi8xNjUwMDc5NTUwNTQ0NDYzLmpwZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment