xiaomianao666

邀您一起看:【独家资源】【4K原盘封装】《世界新闻》2160P REMUX【第0925部破解原盘】【外挂中字】

Jul 2nd, 2023
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥【独家资源】【4K原盘封装】《世界新闻》2160P REMUX【第0925部破解原盘】【外挂中字】@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuinhOWImeWIl+ihqFwiLFwicGF0aFwiOlwiZGF0YVwiLFwicnVsZVwiOlwidmFyIHdyYXB1ID0gKHUpID0+IHtcXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXCLmnKzlnLDovaznoIFcXFwiKSB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZSdcXG4gICAgfVxcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gXFxcIkpvZeeJiOmYv+mHjOS6keebmFxcXCIpIHtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NoYXJlP3BhZ2U9ZnlwYWdlJnJ1bGU96Zi/6YeM5LqR55uYJnNoYXJlX3VybD0nICsgdTtcXG4gICAgfVxcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gXFxcIuS6keebmOaxh+W9sVxcXCIpIHtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnO1xcbiAgICB9XFxuICAgIGlmICgvYWxpeXVuZHJpdmUvLnRlc3QodSkpIHtcXG4gICAgICAgIGNvbnN0IFtsaW5rLCBfc2hhcmVfcHdkXSA9IHUuc3BsaXQoJz9zaGFyZV9wd2Q9Jyk7XFxuICAgICAgICBjb25zdCBbX2xpbmssIF9mb2xkZXJJRF0gPSBsaW5rLnNwbGl0KCcvZm9sZGVyLycpO1xcbiAgICAgICAgbGV0IHNoYXJlX3B3ZCA9IChfc2hhcmVfcHdkIHx8ICcnKS5zcGxpdCgnI25hbWU9JylbMF0gfHwgJyc7XFxuICAgICAgICBsZXQgc2hhcmVJZCA9IF9saW5rLnNwbGl0KCdjb20vcy8nKVsxXTtcXG4gICAgICAgIHJldHVybiAnc21hcnRkcml2ZTovL3NoYXJlL2Jyb3dzZT9zaGFyZUlkPScgKyBzaGFyZUlkICsgJyZzaGFyZVB3ZD0nICsgc2hhcmVfcHdkO1xcbiAgICB9XFxuICAgIHJldHVybiBcXFwid2ViOi8vXFxcIiArIHU7XFxufTtcXG5sZXQgcnVsZXMgPSBbe1xcbiAgICBuYW1lOiBcXFwi5LqR55uY6LWE5rqQXFxcIixcXG4gICAgcGFnZTogdHJ1ZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IHVybCA9IFxcXCJodHRwczovL3Jlcy55dW5wYW4ud2luLz9QYWdlSW5kZXg9XFxcIiArIHBhZ2UgKyBcXFwiJlBhZ2VTaXplPTEyJktleXdvcmQ9XFxcIiArIHMgKyBcXFwiJlR5cGU9JlRhZz1cXFwiO1xcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly9yZXMueXVucGFuLndpbi9cXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFwibWFpbiYmLmNhcmRcXFwiKTtcXG4gICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcblxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgbGV0IHUgPSBwZGZoKGl0LCBcXFwiLmNhcmQtbGluaywxJiZvbmNsaWNrXFxcIikubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgdSA9IHUubGVuZ3RoID4gMCA/IHVbMF0gOiB1cmw7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsIFxcXCIuY2FyZC10aXRsZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwZChpdCwgXFxcImltZyYmc3JjXFxcIiwgdXJsKSxcXG4gICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuS6keebmOi1hOa6kDwvZm9udD4mbmJzcDtcXFwiICsgKHBkZmgoaXQsIFxcXCIuY2FyZC10ZXh0LC0xJiZUZXh0XFxcIikpLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLnjKvni7jnm5jmkJxcXFwiLFxcbiAgICBwYWdlOiBmYWxzZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tL3NlYXJjaD9rPVxcXCIgKyBzLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tL3NlYXJjaD9rPVxcXCIgKyBzXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFwiI2FwcCYmYVxcXCIpO1xcbiAgICAgICAgLy9sb2coYXJyKTtcXG4gICAgICAgIGxldCBkID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdCA9IFxcXCI8ZGl2PlxcXCIgKyBhcnJbaV0gKyBcXFwiPC9kaXY+XFxcIjtcXG4gICAgICAgICAgICBsZXQgdSA9IHBkZmgoaXQsIFxcXCJhJiZocmVmXFxcIik7XFxuICAgICAgICAgICAgLy9sb2codSk7XFxuICAgICAgICAgICAgaWYgKCF1LmluY2x1ZGVzKFxcXCIvcy9cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdSA9IFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tXFxcIiArIHUucmVwbGFjZShcXFwiL3MvXFxcIiwgXFxcIi9jdi9cXFwiKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgXFxcInRlbXBsYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgIHVybDogJCh1KS5sYXp5UnVsZSgod3JhcHUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJub19zaG93X2RvbmF0ZT0xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBpbnB1dC5yZXBsYWNlKFxcXCIvY3YvXFxcIiwgXFxcIi9zL1xcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9saW5rcyA9IGh0bWwubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhfbGlua3MpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9saW5rcy5sZW5ndGggPiAxICYmIF9saW5rc1sxXS5yZXBsYWNlKF9saW5rc1swXSwgXFxcIlxcXCIpLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzBdKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB3cmFwdSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7njKvni7jnm5jmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIHBkZmgoaXQsIFxcXCJ0ZW1wbGF0ZSwxJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZDtcXG4gICAgfVxcbn0sIHtcXG4gICAgbmFtZTogXFxcIuaYk+aQnFxcXCIsXFxuICAgIHBhZ2U6IHRydWUsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7XFxuXFxuICAgICAgICBmdW5jdGlvbiBrZXllbihzdHIpIHtcXG4gICAgICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIjRPVG9TY1VGT2FlVlRySEVcXFwiKSxcXG4gICAgICAgICAgICAgICAgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFwiOUNMR2FvMXZIS3FtMTdPelxcXCIpO1xcbiAgICAgICAgICAgIHZhciBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdCh7XFxuICAgICAgICAgICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2Uoc3RyKVxcbiAgICAgICAgICAgIH0sIGtleSwge1xcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgICAgICAgICAgcmV0dXJuIGVuY3J5cHRlZDtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFwiaHR0cHM6Ly95aXNvLmZ1bi9hcGkvc2VhcmNoP25hbWU9XFxcIiArIHMgKyBcXFwiJnBhZ2VObz1cXFwiICsgcGFnZSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly95aXNvLmZ1bi9pbmZvP3NlYXJjaEtleT1cXFwiICsgcyxcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJzYXRva2VuPTI4NTRjYjU4LTM4ODQtNDczYi04NGM0LTM0MTYxZjY3YTQwOVxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIC8vbG9nKGh0bWwpO1xcbiAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5saXN0O1xcbiAgICAgICAgLy9sb2coYXJyKTtcXG4gICAgICAgIGxldCBkID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgICAgICAgICBsZXQgdSA9IGtleWVuKGl0LnVybCk7XFxuICAgICAgICAgICAgLy9sb2codSk7XFxuICAgICAgICAgICAgaWYgKHUgPT0gbnVsbCB8fCAhdS5pbmNsdWRlcyhcXFwiYWxpeXVuXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIGl0Lm5hbWUsXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7mmJPmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIChpdC5nbXRTaGFyZSB8fCBpdC5nbXRDcmVhdGUpLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLlsI/nurjmnaFcXFwiLFxcbiAgICBwYWdlOiBmYWxzZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgZnVuY3Rpb24gY2F0X2NvZGUoYSkge1xcbiAgICAgICAgICAgIHZhciBkLCBlLCBiID0gW1xcXCLljY7or63nlLXop4ZcXFwiLCBcXFwi5pel6Z+p55S16KeGXFxcIiwgXFxcIuasp+e+jueUteinhlxcXCIsIFxcXCLlhbbku5bnlLXop4ZcXFwiLCBcXFwi5Y2O6K+t55S15b2xXFxcIiwgXFxcIuaXpemfqeeUteW9sVxcXCIsIFxcXCLmrKfnvo7nlLXlvbFcXFwiLCBcXFwi5YW25LuW55S15b2xXFxcIiwgXFxcIuWNjuivreWKqOa8q1xcXCIsIFxcXCLml6Xpn6nliqjmvKtcXFwiLCBcXFwi5qyn576O5Yqo5ryrXFxcIiwgXFxcIue6quW9leeJh1xcXCIsIFxcXCLnu7zoibrniYdcXFwiLCBcXFwi5pWZ6IKy5Z+56K6tXFxcIiwgXFxcIuWFtuS7luinhumikVxcXCIsIFxcXCLljY7or63pn7PkuZBcXFwiLCBcXFwi5pel6Z+p6Z+z5LmQXFxcIiwgXFxcIuasp+e+jumfs+S5kFxcXCIsIFxcXCLlhbbku5bpn7PkuZBcXFwiLCBcXFwi5aix5LmQ6L2v5Lu2XFxcIiwgXFxcIuezu+e7n+i9r+S7tlxcXCIsIFxcXCLnvZHnu5zova/ku7ZcXFwiLCBcXFwi5Yqe5YWs6L2v5Lu2XFxcIiwgXFxcIuWFtuS7lui9r+S7tlxcXCIsIFxcXCLmvKvnlLtcXFwiLCBcXFwi5bCP6K+0XFxcIiwgXFxcIuWHuueJiOS5plxcXCIsIFxcXCLnn6Xor4bln7norq1cXFwiLCBcXFwi5YW25LuW5paH5qGjXFxcIiwgXFxcIuWjgee6uFxcXCIsIFxcXCLkurrnialcXFwiLCBcXFwi6aOO5pmvXFxcIiwgXFxcIuWFtuS7luWbvueJh1xcXCIsIFxcXCLlhbbku5ZcXFwiXSxcXG4gICAgICAgICAgICAgICAgYyA9IFtcXFwiaHlkc1xcXCIsIFxcXCJyaGRzXFxcIiwgXFxcIm9tZHNcXFwiLCBcXFwicXRkc1xcXCIsIFxcXCJoeWR5XFxcIiwgXFxcInJoZHlcXFwiLCBcXFwib21keVxcXCIsIFxcXCJxdGR5XFxcIiwgXFxcImh5ZG1cXFwiLCBcXFwicmhkbVxcXCIsIFxcXCJvbWRtXFxcIiwgXFxcImpscFxcXCIsIFxcXCJ6eXBcXFwiLCBcXFwianlweFxcXCIsIFxcXCJxdHNwXFxcIiwgXFxcImh5eXlcXFwiLCBcXFwicmh5eVxcXCIsIFxcXCJvbXl5XFxcIiwgXFxcInF0eXlcXFwiLCBcXFwia2ZyalxcXCIsIFxcXCJ4dHJqXFxcIiwgXFxcIndscmpcXFwiLCBcXFwiYmdyalxcXCIsIFxcXCJxdHJqXFxcIiwgXFxcIm1oXFxcIiwgXFxcInhzXFxcIiwgXFxcImNic1xcXCIsIFxcXCJ6c3B4XFxcIiwgXFxcInF0d2RcXFwiLCBcXFwiYnpcXFwiLCBcXFwicndcXFwiLCBcXFwiZmpcXFwiLCBcXFwicXR0cFxcXCIsIFxcXCJxdFxcXCJdO1xcbiAgICAgICAgICAgIGZvciAoZCA9IDAsIGUgPSBjLmxlbmd0aDsgZSA+IGQ7IGQrKylcXG4gICAgICAgICAgICAgICAgaWYgKGNbZF0gPT0gYSkgcmV0dXJuIGJbZF07XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgbGV0IGh0bWwgPSBwb3N0KFxcXCJodHRwczovL2dpdGNhZmUubmV0L3Rvb2wvYWxpcGFwZXIvXFxcIiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly91LmdpdGNhZmUubmV0LydcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBcXFwic2VhcmNoXFxcIixcXG4gICAgICAgICAgICAgICAgZnJvbTogXFxcIndlYlxcXCIsXFxuICAgICAgICAgICAgICAgIGtleXdvcmQ6IHNcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGh0bWwpO1xcbiAgICAgICAgaWYgKGxpc3QuZGF0YSkge1xcbiAgICAgICAgICAgIGxpc3QgPSBsaXN0LmRhdGE7XFxuICAgICAgICB9XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBsaXN0W2ldXFxuICAgICAgICAgICAgbGV0IHRpdGxlID0gaXQudGl0bGU7XFxuICAgICAgICAgICAgbGV0IG11cmwgPSBpdC5rZXlcXG4gICAgICAgICAgICBpZiAodGl0bGUuaW5jbHVkZXMocykpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7lsI/nurjmnaE8L2ZvbnQ+Jm5ic3A7XFxcIiArIGNhdF9jb2RlKGl0LmNhdCksXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlczogaXQuZGVzXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD1odHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy8nICsgbXVybCArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KCdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy8nICsgbXVybClcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyBtdXJsKSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZDtcXG4gICAgfVxcbn0sIHtcXG4gICAgbmFtZTogXFxcIuebmOaQnFxcXCIsXFxuICAgIHBhZ2U6IHRydWUsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIHBhZ2UgPSAocGFnZSAtIDEpICogMTA7XFxuICAgICAgICBsZXQgdXJsID0gXFxcImh0dHBzOi8vd3d3LnBhbnNlYXJjaC5tZS9fbmV4dC9kYXRhL08xcEtRS3dHclk3TGxXWkh4cHdJdy9zZWFyY2guanNvbj9rZXl3b3JkPVxcXCIgKyBzICsgXFxcIiZvZmZzZXQ9XFxcIiArIHBhZ2UgKyBcXFwiJnBhbj1hbGl5dW5kcml2ZVxcXCI7XFxuICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsLCB7fSk7XFxuXFxuICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShodG1sKS5wYWdlUHJvcHMuZGF0YS5kYXRhO1xcbiAgICAgICAgLy9sb2codXJsKTtcXG4gICAgICAgIGxldCBkID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tRm9ySHRtbChpdC5jb250ZW50LCAnYSYmaHJlZicpO1xcbiAgICAgICAgICAgIC8vbG9nKHUpO1xcbiAgICAgICAgICAgIC8vbGV0IHUgPSBpdC5jb250ZW50Lm1hdGNoKC9ocmVmPVxcXFxcXFwiKC4qPylcXFxcXFxcIi8pWzFdO1xcbiAgICAgICAgICAgIC8vdSA9IHUubGVuZ3RoID4gMTAgPyB1IDogdXJsO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdC5jb250ZW50LnNwbGl0KFxcXCJcXFxcblxcXCIpWzBdLnJlcGxhY2UoXFxcIuWQjeensO+8mlxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaXQuaW1hZ2UsXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7nm5jmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIChpdC50aW1lKSxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkO1xcbiAgICB9XFxufSwge1xcbiAgICBuYW1lOiBcXFwi546p5YG25ZOl5ZOlXFxcIixcXG4gICAgcGFnZTogdHJ1ZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IHVybCA9IFxcXCJodHRwczovL3R2ZmFuLnh4b29vLmNmL2luZGV4LnBocC92b2RzZWFyY2gvXFxcIiArIHMgKyBcXFwiLS0tLS0tLS0tLVxcXCIgKyBwYWdlICsgXFxcIi0tLS5odG1sXFxcIjtcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwsIHt9KTtcXG4gICAgICAgIGxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcubW9kdWxlLWl0ZW1zJiYubW9kdWxlLXNlYXJjaC1pdGVtJyk7XFxuICAgICAgICAvL2xvZyhhcnIpO1xcbiAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgIGxldCBiZXQgPSBbXTtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgICAgIGxldCB1dGl0bGUgPSBwYXJzZURvbUZvckh0bWwoaXQsICdoMyYmYSYmVGV4dCcpO1xcbiAgICAgICAgICAgIGxldCB1c2VyaWFsID0gcGFyc2VEb21Gb3JIdG1sKGl0LCAnLnZpZGVvLXNlcmlhbCYmVGV4dCcpO1xcbiAgICAgICAgICAgIGxldCB1aW1hZ2UgPSBwYXJzZURvbShpdCwgJy5sYXp5bG9hZCYmZGF0YS1zcmMnLCAnaHR0cHM6Ly90dmZhbi54eG9vby5jZi8nKTtcXG4gICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tKGl0LCAnaDMmJmEmJmhyZWYnLCAnaHR0cHM6Ly90dmZhbi54eG9vby5jZi8nKTtcXG4gICAgICAgICAgICAvL2xldCBkZXQgPSByZXF1ZXN0KHUsIHt9KTtcXG4gICAgICAgICAgICBiZXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB1dGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogdSxcXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHVpbWFnZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogdXNlcmlhbFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGJldGggPSBiYXRjaEZldGNoKGJldCk7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJldGgubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoYmV0aFtpXSwgJy5tb2R1bGUtcGxheWVyLWxpc3QmJnAnKVxcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xcbiAgICAgICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAncCYmVGV4dCcpO1xcbiAgICAgICAgICAgICAgICBpZiAoIXUuaW5jbHVkZXMoXFxcIi9zL1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGJldFtpXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGJldFtpXS5pbWFnZSxcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7njqnlgbblk6Xlk6U8L2ZvbnQ+Jm5ic3A7XFxcIiArIChiZXRbaV0uZGVzYykgKyAnXFxcXG4nICsgdSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLlnJ/ni5fmkJxcXFwiLFxcbiAgICBwYWdlOiBmYWxzZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KCdodHRwczovL3d3dy50dWdvdXNvdS5jb20vc2VhcmNoJywge1xcbiAgICAgICAgICAgIGJvZHk6ICdrZXl3b3JkPScgKyBzLFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcubGF5dWktY29udGFpbmVyLDEmJi5sYXl1aS1yb3c6aGFzKGEpJyk7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgbGV0IHUgPSBwYXJzZURvbUZvckh0bWwoaXQsICdhJiZocmVmJyk7XFxuICAgICAgICAgICAgaWYgKCF1LmluY2x1ZGVzKFxcXCIvcy9cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy9sb2codSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChpdCwgJ2EmJlRleHQnKSxcXG4gICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQodSkgKyAnPz8/ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuWcn+eLl+aQnDwvZm9udD4mbmJzcDtcXFwiICsgcGFyc2VEb21Gb3JIdG1sKGl0LCAncCwtMSYmVGV4dCcpLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLkupHnm5jliIbkuqvnpL5cXFwiLFxcbiAgICBwYWdlOiBmYWxzZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KCdodHRwczovL3d3dy55dW5wYW5mZW54aWFuZy5jbi9hcGkvYmJzL2FwaS9nZXRkYXRhMj9rZXk9JyArIHMgKyAnJnR5cGU9dmlkZW8nLCB7fSk7XFxuXFxuICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShodG1sKS5kYXRhWzBdLnJlc3VsdC5pdGVtcztcXG4gICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcblxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgbGV0IHUgPSBpdC5wYWdlX3VybDtcXG4gICAgICAgICAgICAvL2xvZyh1KTtcXG4gICAgICAgICAgICBpZiAoIXUuaW5jbHVkZXMoXFxcIi9zL1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXQudGl0bGUsXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7kupHnm5jliIbkuqvnpL48L2ZvbnQ+Jm5ic3A7XFxcIiArIChpdC5pbnNlcnRfdGltZSksXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICByZXR1cm4gZDtcXG4gICAgfVxcbn0sIHtcXG4gICAgbmFtZTogXFxcIkRPVljmkJxcXFwiLFxcbiAgICBwYWdlOiBmYWxzZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IHVybCA9IFxcXCJodHRwczovL2FwaS5kb3Z4LnRrL2FsaS9zZWFyY2g/d2Q9XFxcIiArIHM7XFxuICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsLCB7fSk7XFxuICAgICAgICAvL2xvZyhiYXNlNjREZWNvZGUoaHRtbCkpO1xcbiAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoaHRtbCkubGlzdDtcXG4gICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgbGV0IHUgPSBpdC52b2RfY29udGVudDtcXG4gICAgICAgICAgICAvL3UgPSB1Lmxlbmd0aCA+IDAgPyB1WzBdIDogdXJsO1xcbiAgICAgICAgICAgIGlmICghdS5pbmNsdWRlcyhcXFwiYWxpeXVuZHJpdmVcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0LnZvZF9uYW1lLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdC52b2RfcGljLFxcbiAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+RE9WWOaQnDwvZm9udD4mbmJzcDtcXFwiICsgKFxcXCJcXFwiKSxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkO1xcbiAgICB9XFxufSwge1xcbiAgICBuYW1lOiBcXFwi5b+F5bqUXFxcIixcXG4gICAgcGFnZTogdHJ1ZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IHVybCA9IFxcXCJodHRwczovL2NuLmJpbmcuY29tL3NlYXJjaD9xPVxcXCIgKyBzICsgXFxcIithbGl5dW5kcml2ZSZxcz1kcyZmb3JtPVFCUkVcXFwiO1xcbiAgICAgICAgaWYgKHBhZ2UgIT0gMSkge1xcbiAgICAgICAgICAgIHVybCA9IGdldE15VmFyKFxcXCJiaW5nXFxcIiwgdXJsKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vY24uYmluZy5jb20vXFxcIixcXG4gICAgICAgICAgICAgICAgLy9cXFwiWC1SZXF1ZXN0ZWQtV2l0aFxcXCI6IFxcXCJjb20uZXhhbXBsZS5oaWtlcnZpZXdcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiQWNjZXB0XFxcIjogXFxcInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuOVxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBhcnIgPSBwZGZhKGh0bWwsIFxcXCJib2R5JiZhXFxcIik7XFxuICAgICAgICAvL2xvZyhhcnIpO1xcbiAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgICAgIGxldCB1ID0gcGQoaXQsIFxcXCJhJiZocmVmXFxcIiwgdXJsKTtcXG4gICAgICAgICAgICBsZXQgdCA9IHBkZmgoaXQsIFxcXCJhJiZUZXh0XFxcIik7XFxuICAgICAgICAgICAgaWYgKGl0LmluY2x1ZGVzKFxcXCJOZXh0IHBhZ2VcXFwiKSB8fCBpdC5pbmNsdWRlcyhcXFwi5LiL5LiA6aG1XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHUyID0gcGQoaXQsIFxcXCJhJiZocmVmXFxcIiwgdXJsKTtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCJuZXh0IHBhZ2VcXFwiKTtcXG4gICAgICAgICAgICAgICAgbG9nKHUyKTtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImJpbmdcXFwiLCB1Mik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmICh1ID09IG51bGwgfHwgdCA9PSBudWxsIHx8ICFpdC5pbmNsdWRlcyhzKSkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKCFpdC5pbmNsdWRlcyhcXFwi572R55uYXFxcIikgJiYgIWl0LmluY2x1ZGVzKFxcXCLkupHnm5hcXFwiKSAmJlxcbiAgICAgICAgICAgICAgICAhaXQuaW5jbHVkZXMoXFxcImFsaXl1bmRyaXZlXFxcIikgJiYgIWl0LmluY2x1ZGVzKFxcXCJ5dW5wYW5cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHUuc3RhcnRzV2l0aChcXFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IGRvbSA9IGdldEhvbWUodSkucmVwbGFjZShcXFwiaHR0cDovL1xcXCIsIFxcXCJcXFwiKS5yZXBsYWNlKFxcXCJodHRwczovL1xcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICBsZXQgX2xpbmtzID0gdC5tYXRjaCgvaHR0cHM6XFxcXC9cXFxcLyh3d3dcXFxcLmFsaXl1bmRyaXZlXFxcXC5jb21cXFxcL3N8YWx5d3BcXFxcLm5ldClcXFxcL1xcXFx3Ki9nKSB8fCBbXTtcXG4gICAgICAgICAgICBsb2coX2xpbmtzKTtcXG4gICAgICAgICAgICBsZXQgYyA9IG51bGw7XFxuICAgICAgICAgICAgaWYgKF9saW5rcy5sZW5ndGggPiAxICYmIF9saW5rc1sxXS5yZXBsYWNlKF9saW5rc1swXSwgXFxcIlxcXCIpLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYyA9IHdyYXB1KF9saW5rc1sxXSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfbGlua3MubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICBjID0gd3JhcHUoX2xpbmtzWzBdKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHQsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7lv4XlupQ8L2ZvbnQ+Jm5ic3A7XFxcIiArIGRvbSxcXG4gICAgICAgICAgICAgICAgdXJsOiBjICE9IG51bGwgPyBjIDogJCh1KS5sYXp5UnVsZSgod3JhcHUsIG1vZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgX2xpbmtzID0gaHRtbC5tYXRjaCgvaHR0cHM6XFxcXC9cXFxcLyh3d3dcXFxcLmFsaXl1bmRyaXZlXFxcXC5jb21cXFxcL3N8YWx5d3BcXFxcLm5ldClcXFxcL1xcXFx3Ki9nKSB8fCBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhfbGlua3MpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9saW5rcy5sZW5ndGggPiAxICYmIF9saW5rc1sxXS5yZXBsYWNlKF9saW5rc1swXSwgXFxcIlxcXCIpLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzBdKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGUgPSBNWV9SVUxFLnRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL3lzZng/cnVsZT1cXFwiICsgcnVsZSArIFxcXCImcj1cXFwiICsgcnVsZSArIFxcXCImbW9kZT1cXFwiICsgbW9kZSArIFxcXCIjI1xcXCIgKyBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgd3JhcHUsIGNvbmZpZy5tb2RlKVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59XTtcXG5cXG5sZXQgY2NvZiA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2Njb2YnKVxcbnJ1bGVzLnB1c2goY2NvZilcXG4vL+W5tuWPkeinhOWImeaVsFxcbmxldCBzaXplID0gMTA7XFxuXFxuJC5leHBvcnRzID0gZnVuY3Rpb24ocGFnZSwgcnVsZSkge1xcbiAgICBpZiAoIXBhZ2UgJiYgIXJ1bGUpIHtcXG4gICAgICAgIHJldHVybiBydWxlcy5tYXAoaXQgPT4gaXQubmFtZSk7XFxuICAgIH1cXG4gICAgaWYgKHJ1bGUgIT0gbnVsbCkge1xcbiAgICAgICAgaWYgKHBhZ2UgIT0gbnVsbCAmJiBwYWdlID4gMSkge1xcbiAgICAgICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIoaSA9PiBpLm5hbWUgPT0gcnVsZSAmJiBpLnBhZ2UpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcihpID0+IGkubmFtZSA9PSBydWxlKTtcXG4gICAgfVxcbiAgICBsZXQgc3RhcnQgPSAocGFnZSAtIDEpICogc2l6ZTtcXG4gICAgaWYgKHJ1bGVzLmxlbmd0aCA8IHN0YXJ0ICsgMSkge1xcbiAgICAgICAgcmV0dXJuIFtdO1xcbiAgICB9XFxuICAgIGxldCBsZW4gPSBzaXplO1xcbiAgICBpZiAocnVsZXMubGVuZ3RoIDwgcGFnZSAqIHNpemUpIHtcXG4gICAgICAgIGxlbiA9IHJ1bGVzLmxlbmd0aCAtIHN0YXJ0XFxuICAgIH1cXG4gICAgcmV0dXJuIHJ1bGVzLnNsaWNlKHN0YXJ0LCBzdGFydCArIGxlbik7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57SiXCIsXCJwYXRoXCI6XCJzb3VcIixcInJ1bGVcIjpcImxldCByID0gZ2V0SXRlbShcXFwiclxcXCIsIFxcXCJcXFwiKTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGxldCByMSA9IGZldGNoKFxcXCJoaWtlcjovL2hvbWVA5LqR55uY5rGH5b2xXFxcIik7XFxuICAgIGlmICghcjEgfHwgcjEubGVuZ3RoIDw9IDUpIHtcXG4gICAgICAgIGxldCBydSA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwi5rW36ZiU6KeG55WM6KeE5YiZ5YiG5Lqr77yM5b2T5YmN5YiG5Lqr55qE5piv77ya5bCP56iL5bqP77+laG9tZV9ydWxlX3Yy77+lYmFzZTY0Oi8vQOS6keebmOaxh+W9sUBleUpzWVhOMFgyTm9ZWEIwWlhKZmNuVnNaU0k2SWlJc0luUnBkR3hsSWpvaTVMcVI1NXVZNXJHSDViMnhJaXdpWVhWMGFHOXlJam9pVFhKR2JIa2lMQ0oxY213aU9pSm9hV3RsY2pvdkwyVnRjSFI1SkNRa1pubHdZV2RsSWl3aWRtVnljMmx2YmlJNk5pd2lZMjlzWDNSNWNHVWlPaUowWlhoMFh6RWlMQ0pqYkdGemMxOXVZVzFsSWpvaUlpd2lkSGx3WlNJNkltRnNiQ0lzSW1Oc1lYTnpYM1Z5YkNJNklpSXNJbUZ5WldGZmJtRnRaU0k2SWlJc0ltRnlaV0ZmZFhKc0lqb2lJaXdpYzI5eWRGOXVZVzFsSWpvaUlpd2llV1ZoY2w5dVlXMWxJam9pSWl3aWMyOXlkRjkxY213aU9pSWlMQ0o1WldGeVgzVnliQ0k2SWlJc0ltWnBibVJmY25Wc1pTSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG1odmJXVlFZV2RsS0NrN0lpd2ljMlZoY21Ob1gzVnliQ0k2SW1ocGEyVnlPaTh2Wlcxd2RIa2tKQ1FxS2lRa0pHWjVjR0ZuWlNRa0pDSXNJbWR5YjNWd0lqb2k0cEdnNTcyUjU1dVlJaXdpYzJWaGNtTm9SbWx1WkNJNkltcHpPbHh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4dVlXeHBMbk5sWVhKamFGQmhaMlVvZEhKMVpTazdYRzRpTENKa1pYUmhhV3hmWTI5c1gzUjVjR1VpT2lKdGIzWnBaVjh4SWl3aVpHVjBZV2xzWDJacGJtUmZjblZzWlNJNkltcHpPbHh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4dVlXeHBMbVJsZEdGcGJGQmhaMlVvS1RzaUxDSnpaR1YwWVdsc1gyTnZiRjkwZVhCbElqb2liVzkyYVdWZk1TSXNJbk5rWlhSaGFXeGZabWx1WkY5eWRXeGxJam9pSWl3aWRXRWlPaUp0YjJKcGJHVWlMQ0p3Y21WU2RXeGxJam9pZG1GeUlHRnNhV3B6SUQwZ1ptVjBZMmhEWVdOb1pTZ25hSFIwY0hNNkx5OW5hWFJsWlM1amIyMHZabXg1TVRNNU55OW9hV3RsY2kxcFkza3ZjbUYzTDIxaGMzUmxjaTloYkdrdWFuTW5LVHRjYmk4dmRtRnlJR0ZzYVdweklEMGdiblZzYkR0Y2JtbG1JQ2doWVd4cGFuTWdmSHdnSVdGc2FXcHpMbWx1WTJ4MVpHVnpLQ2RoYkdrdUp5a3BJSHRjYmlBZ0lDQmhiR2xxY3lBOUlHWmxkR05vUTJGamFHVW9KMmgwZEhCek9pOHZZMlJ1TG1welpHVnNhWFp5TG01bGRDOW5hQzltYkhreE16azNMMmhwYTJWeUxXbGplUzloYkdrdWFuTW5LVnh1ZlZ4dWFXWWdLQ0ZoYkdscWN5QjhmQ0FoWVd4cGFuTXVhVzVqYkhWa1pYTW9KMkZzYVM0bktTa2dlMXh1SUNBZ0lHRnNhV3B6SUQwZ1ptVjBZMmhEWVdOb1pTZ25hSFIwY0RvdkwyeG1hV041TG1OdmJUb3pNREF3TUM5dGNtWnNlUzlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHa3Vhbk1uS1Z4dWZWeHVhV1lnS0dGc2FXcHpLU0I3WEc0Z0lDQWdkM0pwZEdWR2FXeGxLRndpYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1welhDSXNJR0ZzYVdwektUdGNiaUFnSUNCbGRtRnNLR0ZzYVdwektUdGNiaUFnSUNCaGJHa3VjSEpsVW5Wc1pTZ3BPMXh1ZlNJc0luQmhaMlZ6SWpvaVczdGNJbU52YkY5MGVYQmxYQ0k2WENKdGIzWnBaVjh6WENJc1hDSnVZVzFsWENJNlhDTG52WkhubTVqb3I2Ym1nNFZjSWl4Y0luQmhkR2hjSWpwY0ltUmxkR0ZwYkZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtRnNhVkoxYkdVb0tUdGNJbjBzZTF3aVkyOXNYM1I1Y0dWY0lqcGNJbTF2ZG1sbFh6RmZiR1ZtZEY5d2FXTmNJaXhjSW01aGJXVmNJanBjSXVpMWhPYTZrT2U5a2VtaHRlaXZwdWFEaFZ3aUxGd2ljR0YwYUZ3aU9sd2ljMmwwWlMxa1pYUmhhV3hjSWl4Y0luSjFiR1ZjSWpwY0ltcHpPbHhjYm1WMllXd29abVYwWTJnb0oyaHBhMlZ5T2k4dlptbHNaWE12Y25Wc1pYTXZhV041TDJGc2FTNXFjeWNwS1R0Y1hHNWhiR2t1WkdWMFlXbHNVR0ZuWlNncE8xd2lmU3g3WENKamIyeGZkSGx3WlZ3aU9sd2liVzkyYVdWZk0xd2lMRndpYm1GdFpWd2lPbHdpNUxpcTVMcTY1NzJSNTV1WTZLK201b09GWENJc1hDSndZWFJvWENJNlhDSmtjbWwyWlZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtMTVRV3hwVW5Wc1pTZ3BPMXdpZlYwaUxDSnBZMjl1SWpvaWFIUjBjSE02THk5bmFYUmxaUzVqYjIwdlpteDVNVE01Tnk5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2w1ZFc0dWNHNW5JaXdpY0hKdmVIa2lPaUlpZlE9PVxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgdGl0bGU6IE1ZX1JVTEUudGl0bGUgKyAn5o+Q56S6JyxcXG4gICAgICAgICAgICBjb250ZW50OiAn5pys6KeE5YiZ5L6d6LWW5LqR55uY5rGH5b2x6KeE5YiZ77yM54K55Ye75LiL6Z2i55qE56Gu5a6a5oyJ6ZKu5a+85YWl77yM5rOo5oSP5a+85YWl5ZCO5LiA5a6a6KaB5Zyo5LqR55uY5rGH5b2x55m75b2V6Zi/6YeM5LqR55uY6LSm5Y+377yM5ZCm5YiZ5LiN6IO955SoJyxcXG4gICAgICAgICAgICBjb25maXJtOiBydSxcXG4gICAgICAgICAgICBjYW5jZWw6IHJ1XFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzXFxcIik7XFxuICAgIH0pKTtcXG4gICAgbGV0IHRpcCA9IFxcXCLkupHnm5jmkJzntKLlkJsg5qOA57Si5Yqf6IO955Sx5a+55bqU572R56uZ5o+Q5L6b77yM5pys6KeE5YiZ5LiN5o+Q5L6b5Lu75L2V5YaF5a65XFxcIjtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXAsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHRpcCkgPT4ge1xcbiAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuS9v+eUqOivtOaYjlxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRpcCArIFxcXCLvvIzmnKzop4TliJnku6PnoIHlrozlhajlvIDmupDvvIzku4XkvpvlrabkuaDlkoznoJTnqbbvvJvngrnlh7vkuIvmlrnnoa7lrprmjInpkq7ot7PovazkupHnm5jmsYflvbHlsI/nqIvluo9cXFwiLFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiBcXFwiJ2hpa2VyOi8vaG9tZUDkupHnm5jmsYflvbEnXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0sIHRpcCksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImljb25fMl9yb3VuZFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJoaWtlcjovL2ltYWdlcy9pY29uMlxcXCJcXG4gICAgfSk7XFxuICAgIGxldCBkbW9kZSA9IGdldEl0ZW0oXFxcImRtb2RlXFxcIiwgXFxcIuS6keebmOaxh+W9sVxcXCIpO1xcbiAgICBpbml0Q29uZmlnKHtcXG4gICAgICAgIG1vZGU6IGRtb2RlXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmqKHlvI/vvJpcXFwiICsgZG1vZGUsXFxuICAgICAgICB1cmw6IFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi6YCJ5oup5qih5byPXFxcIixcXG4gICAgICAgICAgICBvcHRpb25zOiBbXFxcIuS6keebmOaxh+W9sVxcXCIsIFxcXCLmnKzlnLDovaznoIFcXFwiLCBcXFwiSm9l54mI6Zi/6YeM5LqR55uYXFxcIiwgXFxcIuWumOaWuUFQUFxcXCJdLFxcbiAgICAgICAgICAgIGNvbDogMSxcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImRtb2RlXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuWumOaWuUFQUFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip/vvIzor7fnoa7kv53miYvmnLrmnInlronoo4XpmL/ph4zkupHnm5jlrpjmlrlBUFBcXFwiO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXCJKb2XniYjpmL/ph4zkupHnm5hcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgcjEgPSBmZXRjaChcXFwiaGlrZXI6Ly9ob21lQOmYv+mHjOS6keebmFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyMSB8fCByMS5sZW5ndGggPD0gNSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydSA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIua1t+mYlOinhueVjOmmlumhtemikemBk+inhOWImeOAkOmYv+mHjOS6keebmOOAke+/pWhvbWVfcnVsZV91cmzvv6VodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD01NjU2XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogTVlfUlVMRS50aXRsZSArICfmj5DnpLonLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAn5pys6KeE5YiZ5L6d6LWW6Zi/6YeM5LqR55uY6KeE5YiZ77yM54K55Ye75LiL6Z2i55qE56Gu5a6a5oyJ6ZKu5a+85YWl77yM5rOo5oSP5a+85YWl5ZCO5LiA5a6a6KaB55m75b2V5LqR55uY6LSm5Y+377yM5ZCm5YiZ5LiN6IO955SoJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybTogcnUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbDogcnVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+35a+85YWl57y65aSx55qE6KeE5YiZXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip/vvIzor7fnoa7kv53mnInnmbvlvZXotKblj7dcXFwiO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/ruaUueaIkOWKn++8jOazqOaEj+imgeWcqOS6keebmOaxh+W9seiuvue9rumHjOmdoueZu+W9lei0puWPt1xcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb24xXFxcIlxcbiAgICB9KTtcXG5cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pCc57SiJyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXlhbPplK7or40nLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdzJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSksXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ3MnLCAnJylcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGxldCBydWxlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKSgpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCJcXFwiID09IHIgPyBcXFwi4oCc4oCc5YWo6YOo4oCd4oCdXFxcIiA6IFxcXCLlhajpg6hcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhckl0ZW0oXFxcInJcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcIlxcXCJcXG4gICAgfSk7XFxuICAgIGZvciAobGV0IGl0IG9mIHJ1bGVzKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpdCA9PSByID8gXFxcIuKAnOKAnFxcXCIgKyBpdCArIFxcXCLigJ3igJ1cXFwiIDogaXQsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChyKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcInJcXFwiLCByKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGl0KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIHBpY191cmw6IFxcXCJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6ICd5cGotbCdcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcbmxldCBzID0gZ2V0TXlWYXIoJ3MnLCAnJyk7XFxuaWYgKHMgIT0gXFxcIlxcXCIpIHtcXG4gICAgbGV0IHAgPSBNWV9QQUdFO1xcbiAgICBsZXQgZGF0YSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKShwLCByICE9IFxcXCJcXFwiID8gciA6IG51bGwpO1xcblxcbiAgICBsZXQgcGFnZWlkID0gXFxcInlwai1wYWdlXFxcIiArIHA7XFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLliqDovb3nrKxcXFwiICsgcCArIFxcXCLpobXkuK3vvIzov5vluqbvvJoxL1xcXCIgKyBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChkKTtcXG4gICAgbG9nKGRhdGEubGVuZ3RoKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgLy/lpJrnur/nqIvliqDovb0gICAgICAgIFxcbiAgICAgICAgbGV0IHJlYWxQYWdlID0gXFxcIlxcXCIgPT0gciA/IDEgOiBwO1xcbiAgICAgICAgbGV0IHRhc2tzID0gZGF0YS5tYXAoaXQgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIGZ1bmM6IGZ1bmN0aW9uKHJ1bGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmZpbmQocywgcmVhbFBhZ2UpO1xcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBwYXJhbTogaXQsXFxuICAgICAgICAgICAgICAgIGlkOiBcXFwicnVsZUBcXFwiICsgaXQubmFtZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgYmF0Y2hFeGVjdXRlKHRhc2tzLCB7XFxuICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgIC8vbG9nKFxcXCJsaXN0ZW5lcjogXFxcIiArIChyZXN1bHQgfHwgW10pLmxlbmd0aClcXG4gICAgICAgICAgICAgICAgcGFyYW0uaSA9IHBhcmFtLmkgKyAxO1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIHJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5qID0gcGFyYW0uaiArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1CZWZvcmUocGFnZWlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXQudGl0bGUuaW5jbHVkZXMoXFxcIuKAnOKAnOKAneKAnVxcXCIpID8gaXQudGl0bGUgOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIGl0LnRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cChcXFwiPGVtPnw8L2VtPlxcXCIsIFxcXCJnXFxcIiksIFxcXCJcXFwiKS5yZXBsYWNlKG5ldyBSZWdFeHAocywgXFxcImdcXFwiKSwgXFxcIjxzdHJvbmc+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogIzFFOTBGRlxcXFxcXFwiPlxcXCIgKyBzICsgXFxcIjwvc3Bhbj48L3N0cm9uZz5cXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0LmRlc2MsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0LnVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGl0LnBpY191cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogaXQucGljX3VybCA/ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycgOiBcXFwidGV4dF8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJfX2FwcFxcXCIgKyBNWV9QQUdFICsgXFxcIkBcXFwiICsgcGFyYW0uaixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAocGFyYW0uaSA+PSBwYXJhbS5hbGwpIHtcXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0ocGFnZWlkKVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLliqDovb3nrKxcXFwiICsgTVlfUEFHRSArIFxcXCLpobXkuK3vvIzov5vluqbvvJpcXFwiICsgKHBhcmFtLmkgKyAxKSArIFxcXCIvXFxcIiArIHBhcmFtLmFsbCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHBhcmFtOiB7XFxuICAgICAgICAgICAgICAgIGFsbDogZGF0YS5sZW5ndGgsXFxuICAgICAgICAgICAgICAgIGk6IDAsXFxuICAgICAgICAgICAgICAgIGo6IC0xXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0oumhtemdolwiLFwicGF0aFwiOlwic291cFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfUEFSQU1TLmtleSkge1xcbiAgICBwdXRNeVZhcihcXFwic1xcXCIsIE1ZX1BBUkFNUy5rZXkpO1xcbn1cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zb3VcXFwiKSkucnVsZSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJDQ09GXCIsXCJwYXRoXCI6XCJjY29mXCIsXCJydWxlXCI6XCJ2YXIgd3JhcHUgPSAodSkgPT4ge1xcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gXFxcIuacrOWcsOi9rOeggVxcXCIpIHtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQodSkgKyAnPz8/ZnlwYWdlJ1xcbiAgICB9XFxuICAgIGlmIChjb25maWcubW9kZSA9PSBcXFwiSm9l54mI6Zi/6YeM5LqR55uYXFxcIikge1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc2hhcmU/cGFnZT1meXBhZ2UmcnVsZT3pmL/ph4zkupHnm5gmc2hhcmVfdXJsPScgKyB1O1xcbiAgICB9XFxuICAgIGlmIChjb25maWcubW9kZSA9PSBcXFwi5LqR55uY5rGH5b2xXFxcIikge1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZSc7XFxuICAgIH1cXG4gICAgaWYgKC9hbGl5dW5kcml2ZS8udGVzdCh1KSkge1xcbiAgICAgICAgY29uc3QgW2xpbmssIF9zaGFyZV9wd2RdID0gdS5zcGxpdCgnP3NoYXJlX3B3ZD0nKTtcXG4gICAgICAgIGNvbnN0IFtfbGluaywgX2ZvbGRlcklEXSA9IGxpbmsuc3BsaXQoJy9mb2xkZXIvJyk7XFxuICAgICAgICBsZXQgc2hhcmVfcHdkID0gKF9zaGFyZV9wd2QgfHwgJycpLnNwbGl0KCcjbmFtZT0nKVswXSB8fCAnJztcXG4gICAgICAgIGxldCBzaGFyZUlkID0gX2xpbmsuc3BsaXQoJ2NvbS9zLycpWzFdO1xcbiAgICAgICAgcmV0dXJuICdzbWFydGRyaXZlOi8vc2hhcmUvYnJvd3NlP3NoYXJlSWQ9JyArIHNoYXJlSWQgKyAnJnNoYXJlUHdkPScgKyBzaGFyZV9wd2Q7XFxuICAgIH1cXG4gICAgcmV0dXJuIFxcXCJ3ZWI6Ly9cXFwiICsgdTtcXG59O1xcbiQuZXhwb3J0cyA9IHtcXG4gICAgbmFtZTogJ0NDT0YnLFxcbiAgICBwYWdlOiB0cnVlLFxcbiAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICBsZXQgZCA9IFtdXFxuICAgICAgICBjb25zdCB7XFxuICAgICAgICAgICAgYnl0ZXNUb1NpemUsXFxuICAgICAgICAgICAgY29sb3JcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS90b29scycpO1xcbiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly9wYW4uY2NvZi5jYy9hcGkvc2VhcmNoJywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcImNvbnRlbnQtdHlwZVxcXCI6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly9wYW4uY2NvZi5jYy9zZWFyY2g/a2V5d29yZD0nICsgc1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICBcXFwicGFnZVNpemVcXFwiOiAyMCxcXG4gICAgICAgICAgICAgICAgXFxcInBhZ2VOdW1cXFwiOiBwYWdlLFxcbiAgICAgICAgICAgICAgICBcXFwia2V5d29yZFxcXCI6IHMsXFxuICAgICAgICAgICAgICAgIFxcXCJmcm9tTW9iaWxlXFxcIjogdHJ1ZVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgIH0pXFxuICAgICAgICBsZXQgbGlzdCA9IEpTT04ucGFyc2UoaHRtbClcXG4gICAgICAgICAgICAuZGF0YS5yb3dzXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBsaXN0W2ldXFxuICAgICAgICAgICAgbGV0IHRpdGxlID0gaXQuZmlsZU5hbWVcXG4gICAgICAgICAgICBsZXQgbXVybCA9IGl0LnVybFxcbiAgICAgICAgICAgIGxldCB0eXBlID0gaXQudHlwZS5yZXBsYWNlKC9mb2xkZXIvLCAn5paH5Lu25aS5JykucmVwbGFjZSgvZmlsZS8sICfmlofku7YnKVxcbiAgICAgICAgICAgIGlmICh0aXRsZS5pbmNsdWRlcyhzKSkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPkNDT0Y8L2ZvbnQ+Jm5ic3A7JyArICfmlofku7bnsbvlnovvvJonICsgdHlwZSArICfvvIzmlofku7blpKflsI/vvJonICsgYnl0ZXNUb1NpemUoaXQuc2l6ZSksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KG11cmwpXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGRcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuW3peWFt1wiLFwicGF0aFwiOlwidG9vbHNcIixcInJ1bGVcIjpcImZ1bmN0aW9uIGJ5dGVzVG9TaXplKHNpemUpIHtcXG4gICAgaWYgKHNpemUgPCAwLjEgKiAxMDI0KSB7XFxuICAgICAgICAvL+Wwj+S6jjAuMUtC77yM5YiZ6L2s5YyW5oiQQlxcbiAgICAgICAgc2l6ZSA9IHNpemUudG9GaXhlZCgyKSArIFxcXCJCXFxcIjtcXG4gICAgfSBlbHNlIGlmIChzaXplIDwgMC4xICogMTAyNCAqIDEwMjQpIHtcXG4gICAgICAgIC8vIOWwj+S6jjAuMU1C77yM5YiZ6L2s5YyW5oiQS0JcXG4gICAgICAgIHNpemUgPSAoc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMikgKyBcXFwiS0JcXFwiO1xcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAwLjEgKiAxMDI0ICogMTAyNCAqIDEwMjQpIHtcXG4gICAgICAgIC8vIOWwj+S6jjAuMUdC77yM5YiZ6L2s5YyW5oiQTUJcXG4gICAgICAgIHNpemUgPSAoc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgKyBcXFwiTUJcXFwiO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8g5YW25LuW6L2s5YyW5oiQR0JcXG4gICAgICAgIHNpemUgPSAoc2l6ZSAvICgxMDI0ICogMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDIpICsgXFxcIkdCXFxcIjtcXG4gICAgfVxcbiAgICAvLyDovazmiJDlrZfnrKbkuLJcXG4gICAgbGV0IHNpemVTdHIgPSBzaXplICsgXFxcIlxcXCIsXFxuICAgICAgICAvLyDojrflj5blsI/mlbDngrnlpITnmoTntKLlvJVcXG4gICAgICAgIGluZGV4ID0gc2l6ZVN0ci5pbmRleE9mKFxcXCIuXFxcIiksXFxuICAgICAgICAvLyDojrflj5blsI/mlbDngrnlkI7kuKTkvY3nmoTlgLxcXG4gICAgICAgIGRvdSA9IHNpemVTdHIuc3Vic3RyKGluZGV4ICsgMSwgMik7XFxuICAgIC8vIOWIpOaWreWQjuS4pOS9jeaYr+WQpuS4ujAw77yM5aaC5p6c5piv5YiZ5Yig6ZmkMDBcXG4gICAgaWYgKGRvdSA9PT0gXFxcIjAwXFxcIikgcmV0dXJuIHNpemVTdHIuc3Vic3RyaW5nKDAsIGluZGV4KSArIHNpemVTdHIuc3Vic3RyKGluZGV4ICsgMywgMik7XFxuICAgIHJldHVybiBzaXplO1xcbn1cXG4kLmV4cG9ydHMuYnl0ZXNUb1NpemUgPSBieXRlc1RvU2l6ZTtcXG4kLmV4cG9ydHMuY29sb3IgPSBmdW5jdGlvbih0ZXh0LCBjb2xvcikge1xcbiAgICB0ZXh0ICs9IFxcXCJcXFwiO1xcbiAgICBpZiAodGV4dC5pbmRleE9mKFxcXCLigJzigJzigJ3igJ1cXFwiKSA9PT0gMCkge1xcbiAgICAgICAgdGV4dC5yZXBsYWNlKFxcXCLigJzigJzigJ3igJ1cXFwiLCBcXFwiXFxcIik7XFxuICAgIH1cXG4gICAgcmV0dXJuIFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0nXFxcIiArIGNvbG9yICsgXFxcIic+XFxcIiArIHRleHQgKyBcXFwiPC9mb250PlxcXCI7XFxufVxcblxcbiQuZXhwb3J0cy5zbGVlcCA9IGZ1bmN0aW9uKHRpbWVvdXQpIHtcXG4gICAgamF2YS5sYW5nLlRocmVhZC5zbGVlcCh0aW1lb3V0KTtcXG59XFxuXFxuZnVuY3Rpb24gaHRtbFRhZyh0YWcsIHRleHQpIHtcXG4gICAgdGV4dCArPSBcXFwiXFxcIjtcXG4gICAgaWYgKHRleHQuaW5kZXhPZihcXFwi4oCc4oCc4oCd4oCdXFxcIikgPT09IDApIHtcXG4gICAgICAgIHRleHQucmVwbGFjZShcXFwi4oCc4oCc4oCd4oCdXFxcIiwgXFxcIlxcXCIpO1xcbiAgICB9XFxuICAgIHJldHVybiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCI8XFxcIiArIHRhZyArIFxcXCI+XFxcIiArIHRleHQgKyBcXFwiPC9cXFwiICsgdGFnICsgXFxcIj5cXFwiO1xcblxcbn1cXG4kLmV4cG9ydHMuaHRtbFRhZyA9IGh0bWxUYWc7XFxuJC5leHBvcnRzLnNtYWxsID0gZnVuY3Rpb24odGV4dCkge1xcbiAgICByZXR1cm4gaHRtbFRhZyhcXFwic21hbGxcXFwiLCB0ZXh0KTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0VGltZShmaWxlLGlzU3RhbmRhcmQpIHtcXG4gICAgaXNTdGFuZGFyZCA9IGlzU3RhbmRhcmR8fGZhbHNlO1xcbiAgICBsZXQgdFRpbWUgPSBmaWxlLnVwZGF0ZWRfYXQgfHwgZmlsZS50aW1lX3N0ciB8fCBcXFwiXFxcIjtcXG4gICAgdFRpbWUgPSB0VGltZS5zcGxpdChcXFwiVFxcXCIpO1xcbiAgICBsZXQgZGF0ZSA9IHRUaW1lWzBdO1xcbiAgICBpZihpc1N0YW5kYXJkKXtcXG4gICAgICAgIGRhdGUgPSBkYXRlLnJlcGxhY2UoLy0vZyxcXFwiL1xcXCIpO1xcbiAgICB9XFxuICAgIHRUaW1lID0gdFRpbWVbMV0uc3BsaXQoL1p8XFxcXC4vKTtcXG4gICAgZGF0ZSArPSBcXFwiIFxcXCIgKyB0VGltZVswXTtcXG4gICAgcmV0dXJuIGRhdGU7XFxufVxcbmZ1bmN0aW9uIGdldFRpbWVJbnQodGltZVN0cil7XFxuICAgIHJldHVybiAobmV3IERhdGUodGltZVN0cikpLmdldFRpbWUoKVxcbn1cXG4kLmV4cG9ydHMuZ2V0VGltZSA9IGdldFRpbWU7XFxuXFxubGV0IGNobk51bUNoYXIgPSB7XFxuICAgIOmbtjogMCxcXG4gICAg5LiAOiAxLFxcbiAgICDkuow6IDIsXFxuICAgIOS4iTogMyxcXG4gICAg5ZubOiA0LFxcbiAgICDkupQ6IDUsXFxuICAgIOWFrTogNixcXG4gICAg5LiDOiA3LFxcbiAgICDlhas6IDgsXFxuICAgIOS5nTogOVxcbn07XFxuXFxubGV0IGNobk5hbWVWYWx1ZSA9IHtcXG4gICAg5Y2BOiB7XFxuICAgICAgICB2YWx1ZTogMTAsXFxuICAgICAgICBzZWNVbml0OiBmYWxzZVxcbiAgICB9LFxcbiAgICDnmb46IHtcXG4gICAgICAgIHZhbHVlOiAxMDAsXFxuICAgICAgICBzZWNVbml0OiBmYWxzZVxcbiAgICB9LFxcbiAgICDljYM6IHtcXG4gICAgICAgIHZhbHVlOiAxMDAwLFxcbiAgICAgICAgc2VjVW5pdDogZmFsc2VcXG4gICAgfSxcXG4gICAg5LiHOiB7XFxuICAgICAgICB2YWx1ZTogMTAwMDAsXFxuICAgICAgICBzZWNVbml0OiB0cnVlXFxuICAgIH0sXFxuICAgIOS6vzoge1xcbiAgICAgICAgdmFsdWU6IDEwMDAwMDAwMCxcXG4gICAgICAgIHNlY1VuaXQ6IHRydWVcXG4gICAgfVxcbn1cXG5cXG5mdW5jdGlvbiBDaGluZXNlVG9OdW1iZXIoY2huU3RyKSB7XFxuICAgIGxldCBydG4gPSAwO1xcbiAgICBsZXQgc2VjdGlvbiA9IDA7XFxuICAgIGxldCBudW1iZXIgPSAwO1xcbiAgICBsZXQgc2VjVW5pdCA9IGZhbHNlO1xcbiAgICBsZXQgc3RyID0gY2huU3RyLnNwbGl0KCcnKTtcXG5cXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBudW0gPSBjaG5OdW1DaGFyW3N0cltpXV07XFxuICAgICAgICBpZiAodHlwZW9mIG51bSAhPT0gJ3VuZGVmaW5lZCcpIHtcXG4gICAgICAgICAgICBudW1iZXIgPSBudW07XFxuICAgICAgICAgICAgaWYgKGkgPT09IHN0ci5sZW5ndGggLSAxKSB7XFxuICAgICAgICAgICAgICAgIHNlY3Rpb24gKz0gbnVtYmVyO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgbGV0IHVuaXQgPSBjaG5OYW1lVmFsdWVbc3RyW2ldXS52YWx1ZTtcXG4gICAgICAgICAgICBzZWNVbml0ID0gY2huTmFtZVZhbHVlW3N0cltpXV0uc2VjVW5pdDtcXG4gICAgICAgICAgICBpZiAoc2VjVW5pdCkge1xcbiAgICAgICAgICAgICAgICBzZWN0aW9uID0gKHNlY3Rpb24gKyBudW1iZXIpICogdW5pdDtcXG4gICAgICAgICAgICAgICAgcnRuICs9IHNlY3Rpb247XFxuICAgICAgICAgICAgICAgIHNlY3Rpb24gPSAwO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHNlY3Rpb24gKz0gKG51bWJlciAqIHVuaXQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBudW1iZXIgPSAwO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBydG4gKyBzZWN0aW9uO1xcbn1cXG5cXG5mdW5jdGlvbiBuYW1lQ29tcGFyZShhLCBiKSB7XFxuICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKVxcbiAgICAgICAgcmV0dXJuIGEgPT0gbnVsbCA/IGIgPT0gbnVsbCA/IDAgOiAtMSA6IDE7XFxuXFxuICAgIGEgPSBhLnJlcGxhY2UoLyhb6Zu25LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2B55m+5Y2D5LiH5Lq/XSkvZywgZnVuY3Rpb24obWF0Y2gsIHAxLCBwMiwgcDMsIG9mZnNldCwgc3RyaW5nKSB7XFxuICAgICAgICAvLyBwMSBpcyBub25kaWdpdHMsIHAyIGRpZ2l0cywgYW5kIHAzIG5vbi1hbHBoYW51bWVyaWNzXFxuICAgICAgICByZXR1cm4gQ2hpbmVzZVRvTnVtYmVyKHAxKTtcXG4gICAgfSlcXG4gICAgYiA9IGIucmVwbGFjZSgvKFvpm7bkuIDkuozkuInlm5vkupTlha3kuIPlhavkuZ3ljYHnmb7ljYPkuIfkur9dKS9nLCBmdW5jdGlvbihtYXRjaCwgcDEsIHAyLCBwMywgb2Zmc2V0LCBzdHJpbmcpIHtcXG4gICAgICAgIC8vIHAxIGlzIG5vbmRpZ2l0cywgcDIgZGlnaXRzLCBhbmQgcDMgbm9uLWFscGhhbnVtZXJpY3NcXG4gICAgICAgIHJldHVybiBDaGluZXNlVG9OdW1iZXIocDEpO1xcbiAgICB9KVxcblxcbiAgICBsZXQgTlVNQkVSUyA9IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuLmNvbXBpbGUoXFxcIig/PD1cXFxcXFxcXEQpKD89XFxcXFxcXFxkKXwoPzw9XFxcXFxcXFxkKSg/PVxcXFxcXFxcRClcXFwiKVxcbiAgICBsZXQgc3BsaXQxID0gTlVNQkVSUy5zcGxpdChuZXcgamF2YS5sYW5nLlN0cmluZyhhKSk7XFxuICAgIGxldCBzcGxpdDIgPSBOVU1CRVJTLnNwbGl0KG5ldyBqYXZhLmxhbmcuU3RyaW5nKGIpKTtcXG5cXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihzcGxpdDEubGVuZ3RoLCBzcGxpdDIubGVuZ3RoKTsgaSsrKSB7XFxuICAgICAgICBsZXQgYzEgPSBzcGxpdDFbaV0uY2hhckNvZGVBdCgwKTtcXG4gICAgICAgIGxldCBjMiA9IHNwbGl0MltpXS5jaGFyQ29kZUF0KDApO1xcbiAgICAgICAgbGV0IGNtcCA9IDA7XFxuICAgICAgICBsZXQgemVyb0NoYXJDb2RlID0gJzAnLmNoYXJDb2RlQXQoMCk7XFxuICAgICAgICBsZXQgbmluZUNoYXJDb2RlID0gJzknLmNoYXJDb2RlQXQoMCk7XFxuXFxuICAgICAgICBpZiAoYzEgPj0gemVyb0NoYXJDb2RlICYmIGMxIDw9IG5pbmVDaGFyQ29kZSAmJiBjMiA+PSB6ZXJvQ2hhckNvZGUgJiYgYzIgPD0gbmluZUNoYXJDb2RlKSB7XFxuICAgICAgICAgICAgY21wID0gbmV3IGphdmEubWF0aC5CaWdJbnRlZ2VyKHNwbGl0MVtpXSkuY29tcGFyZVRvKG5ldyBqYXZhLm1hdGguQmlnSW50ZWdlcihzcGxpdDJbaV0pKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGlmIChjbXAgPT09IDApIHtcXG4gICAgICAgICAgICBsZXQgcmVnZXggPSAvW2EtekEtWjAtOV0vXFxuICAgICAgICAgICAgbGV0IHMxID0gU3RyaW5nKHNwbGl0MVtpXSlcXG4gICAgICAgICAgICBsZXQgczIgPSBTdHJpbmcoc3BsaXQyW2ldKVxcbiAgICAgICAgICAgIGlmIChyZWdleC50ZXN0KHMxKSB8fCByZWdleC50ZXN0KHMyKSkge1xcbiAgICAgICAgICAgICAgICBjbXAgPSBuZXcgamF2YS5sYW5nLlN0cmluZyhzcGxpdDFbaV0pLmNvbXBhcmVUbyhuZXcgamF2YS5sYW5nLlN0cmluZyhzcGxpdDJbaV0pKTtcXG4gICAgICAgICAgICAgICAgLy8gY21wID0gczEubG9jYWxlQ29tcGFyZShzMiwgJ2VuJylcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBjbXAgPSBzMS5sb2NhbGVDb21wYXJlKHMyLCAnemgnKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGlmIChjbXAgIT09IDApIHtcXG4gICAgICAgICAgICByZXR1cm4gY21wO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGxldCBsZW5ndGhDbXAgPSBzcGxpdDEubGVuZ3RoIC0gc3BsaXQyLmxlbmd0aDtcXG4gICAgLy8gaWYgKGxlbmd0aENtcCAhPT0gMCkgbGVuZ3RoQ21wID0gbGVuZ3RoQ21wID4gMCA/IC0xIDogMTtcXG4gICAgcmV0dXJuIGxlbmd0aENtcDtcXG59XFxuXFxuJC5leHBvcnRzLnNvcnRzID0gZnVuY3Rpb24obGlzdCwgc29ydCkge1xcbiAgICBpZiAoc29ydCA9PT0gXFxcIuexu+Wei1xcXCIpIHtcXG4gICAgICAgIC8vIGxvZyhcXFwi57G75Z6L5o6S5bqPXFxcIik7XFxuICAgICAgICBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBhLnR5cGUgLSBiLnR5cGVcXG4gICAgICAgIH0pO1xcbiAgICB9IGVsc2UgaWYgKHNvcnQgPT09IFxcXCLlkI3np7BcXFwiKSB7XFxuICAgICAgICAvLyBsb2coXFxcIuWQjeensOaOkuW6j1xcXCIpO1xcbiAgICAgICAgLy8gbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgIC8vICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lLCBcXFwiemhcXFwiKVxcbiAgICAgICAgLy8gfSk7XFxuICAgICAgICBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBuYW1lQ29tcGFyZShhLm5hbWV8fGEudGl0bGUsIGIubmFtZXx8Yi50aXRsZSk7XFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIGlmIChzb3J0ID09PSBcXFwi5aSn5bCPXFxcIikge1xcbiAgICAgICAgLy8gbG9nKFxcXCLlpKflsI/mjpLluo9cXFwiKTtcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIChhLnNpemUgfHwgTnVtYmVyKGEuc2l6ZV9zdHIpIHx8IDApIC0gKGIuc2l6ZSB8fCBOdW1iZXIoYi5zaXplX3N0cikgfHwgMCk7XFxuICAgICAgICB9KTtcXG4gICAgfWVsc2UgaWYgKHNvcnQgPT09IFxcXCLml7bpl7RcXFwiKSB7XFxuICAgICAgICAvLyBsb2coXFxcIuaXtumXtOaOkuW6j1xcXCIpO1xcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gZ2V0VGltZUludChnZXRUaW1lKGEsdHJ1ZSkpIC0gZ2V0VGltZUludChnZXRUaW1lKGIsdHJ1ZSkpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICByZXR1cm4gbGlzdFxcbn1cXG5cXG5mdW5jdGlvbiBzaW1pbGFyKHMsIHQsIGYpIHsvL+WIpOaWreS4pOS4quWtl+espuS4suS5i+mXtOeahOebuOS8vOW6plxcbiAgICBpZiAoIXMgfHwgIXQpIHtcXG4gICAgICAgIHJldHVybiAwXFxuICAgIH1cXG4gICAgaWYocyA9PT0gdCl7XFxuICAgICAgICByZXR1cm4gMTAwO1xcbiAgICB9XFxuICAgIHZhciBsID0gcy5sZW5ndGggPiB0Lmxlbmd0aCA/IHMubGVuZ3RoIDogdC5sZW5ndGhcXG4gICAgdmFyIG4gPSBzLmxlbmd0aFxcbiAgICB2YXIgbSA9IHQubGVuZ3RoXFxuICAgIHZhciBkID0gW11cXG4gICAgZiA9IGYgfHwgMlxcbiAgICB2YXIgbWluID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcXG4gICAgICAgIHJldHVybiBhIDwgYiA/IChhIDwgYyA/IGEgOiBjKSA6IChiIDwgYyA/IGIgOiBjKVxcbiAgICB9XFxuICAgIHZhciBpLCBqLCBzaSwgdGosIGNvc3RcXG4gICAgaWYgKG4gPT09IDApIHJldHVybiBtXFxuICAgIGlmIChtID09PSAwKSByZXR1cm4gblxcbiAgICBmb3IgKGkgPSAwOyBpIDw9IG47IGkrKykge1xcbiAgICAgICAgZFtpXSA9IFtdXFxuICAgICAgICBkW2ldWzBdID0gaVxcbiAgICB9XFxuICAgIGZvciAoaiA9IDA7IGogPD0gbTsgaisrKSB7XFxuICAgICAgICBkWzBdW2pdID0galxcbiAgICB9XFxuICAgIGZvciAoaSA9IDE7IGkgPD0gbjsgaSsrKSB7XFxuICAgICAgICBzaSA9IHMuY2hhckF0KGkgLSAxKVxcbiAgICAgICAgZm9yIChqID0gMTsgaiA8PSBtOyBqKyspIHtcXG4gICAgICAgICAgICB0aiA9IHQuY2hhckF0KGogLSAxKVxcbiAgICAgICAgICAgIGlmIChzaSA9PT0gdGopIHtcXG4gICAgICAgICAgICAgICAgY29zdCA9IDBcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBjb3N0ID0gMVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkW2ldW2pdID0gbWluKGRbaSAtIDFdW2pdICsgMSwgZFtpXVtqIC0gMV0gKyAxLCBkW2kgLSAxXVtqIC0gMV0gKyBjb3N0KVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGxldCByZXMgPSAoMSAtIGRbbl1bbV0gLyBsKSAqMTAwXFxuICAgIHJldHVybiByZXMudG9GaXhlZChmKVxcbn1cXG5cXG4kLmV4cG9ydHMuc2ltaWxhciA9IHNpbWlsYXI7XFxuJC5leHBvcnRzLnJlbW92ZUV4dCA9IGZ1bmN0aW9uIChmaWxlKXtcXG4gICAgcmV0dXJuIGZpbGUuc3BsaXQoJy4nKS5zbGljZSgwLC0xKS5qb2luKCcuJylcXG59O1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwidVwiLFwicGF0aFwiOlwidVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24ocnVsZSwgb3JpZ2luLCBtb2RlKSB7XFxuICAgIHJldHVybiAkLnRvU3RyaW5nKChydWxlLCBvcmlnaW4sIG1vZGUpID0+IHtcXG4gICAgICAgIGxldCBob3N0ID0gb3JpZ2luLnJlcGxhY2UobmV3IFJlZ0V4cChcXFwiaHR0cDovL3xodHRwczovL1xcXCIpLCBcXFwiXFxcIikuc3BsaXQoXFxcIi9cXFwiKVswXTtcXG4gICAgICAgIGxldCBob3N0cyA9IGhvc3Quc3BsaXQoXFxcIi5cXFwiKTtcXG4gICAgICAgIGlmIChob3N0cy5sZW5ndGggPiAyKSB7XFxuICAgICAgICAgICAgaG9zdCA9IGhvc3RzW2hvc3RzLmxlbmd0aCAtIDJdICsgXFxcIi5cXFwiICsgaG9zdHNbaG9zdHMubGVuZ3RoIC0gMV07XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChcXFwibWFnbmV0XFxcIikpIHtcXG4gICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmuKnppqjmj5DnpLpcXFwiLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi5qOA5rWL5Yiw5paw55qE56OB6ZO+5Zyw5Z2A77yM54K55Ye756Gu5a6a5oyJ6ZKu5Y2z5Y+v5pKt5pS+77yM54K55Ye75Y+W5raI5oyJ6ZKu5Y+v5Lul5aSN5Yi26ZO+5o6lXFxcIixcXG4gICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygobWFnKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFnO1xcbiAgICAgICAgICAgICAgICB9LCBpbnB1dCksXFxuICAgICAgICAgICAgICAgIGNhbmNlbDogJC50b1N0cmluZygobWFnKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImNvcHk6Ly9cXFwiICsgbWFnXFxuICAgICAgICAgICAgICAgIH0sIGlucHV0KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmluY2x1ZGVzKFxcXCJhbGl5dW5kcml2ZS5jb21cXFwiKSAmJiBtb2RlICE9IFxcXCLlrpjmlrlBUFBcXFwiKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICBpZiAoaW5wdXQuaW5jbHVkZXMoJ2NoZWNrdXJsP3VybD0nKSAmJiBpbnB1dC5pbmNsdWRlcygnJnVybHJlZmVyJykpIHtcXG4gICAgICAgICAgICAgICAgaW5wdXQgPSBkZWNvZGVVUklDb21wb25lbnQoaW5wdXQuc3BsaXQoJyZ1cmxyZWZlcicpWzBdLnNwbGl0KCdjaGVja3VybD91cmw9JylbMV0pO1xcbiAgICAgICAgICAgICAgICAvL2xvZygn6LS05ZCnJytpbnB1dCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6Zi/6YeM5LqR55uYXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPVxcXCIgKyB1cmwgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcXFwuKG1wM3xmbGFjfG00YSkkLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBsYXlWaWRlbyh1cmwpO1xcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuaW5jbHVkZXMoaG9zdCkgJiYgaW5wdXQuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlLCBtb2RlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlbihKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuivpuaDhVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXCIgKyBydWxlICsgXFxcIiZyPVxcXCIgKyBydWxlICsgXFxcIiZtb2RlPVxcXCIgKyBtb2RlICsgXFxcIiMjXFxcIiArIHVybCxcXG4gICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUsIG1vZGUpO1xcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICAvL+iDveWUpOi1t0FQUOeahOeZveWQjeWNlVxcbiAgICAgICAgICAgIGxldCB3aGl0ZSA9IFtcXG4gICAgICAgICAgICAgICAgXFxcInFrbGlua1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJiZG5ldGRpc2tcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwieHVubGVpYXBwXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInNtYXJ0ZHJpdmVcXFwiXFxuICAgICAgICAgICAgXTtcXG4gICAgICAgICAgICBsZXQgaW5XaGl0ZSA9IHdoaXRlLmZpbHRlcihpdCA9PiBpbnB1dC5zdGFydHNXaXRoKGl0KSkubGVuZ3RoID4gMDtcXG4gICAgICAgICAgICBpZiAoIWluV2hpdGUpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlblRoaXJkQXBwICYmIGZ5X2JyaWRnZV9hcHAub3BlblRoaXJkQXBwKHVybCk7XFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpXFxuICAgICAgICB9IGVsc2Uge1xcblxcbiAgICAgICAgfVxcbiAgICB9LCBydWxlLCBvcmlnaW4sIG1vZGUpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInlzZnhcIixcInBhdGhcIjpcInlzZnhcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxubGV0IHJ1bGUgPSBnZXRQYXJhbShcXFwiclxcXCIpLnNwbGl0KFxcXCIjI1xcXCIpWzBdO1xcbmxldCBtb2RlID0gKGdldFBhcmFtKFxcXCJtb2RlXFxcIikgfHwgXFxcIlxcXCIpLnNwbGl0KFxcXCIjI1xcXCIpWzBdO1xcbmxldCB1cmwgPSBNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV07XFxubGV0IGl0ZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3VcXFwiKShydWxlLCBnZXRIb21lKHVybCksIG1vZGUpO1xcbmxldCBqcyA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKGRvY3VtZW50LnRpdGxlICYmIGRvY3VtZW50LnRpdGxlLmxlbmd0aCkge1xcbiAgICAgICAgICAgIGxldCByID0gJCQkKCkubGF6eVJ1bGUoKHQpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpO1xcbiAgICAgICAgICAgIH0sIGRvY3VtZW50LnRpdGxlKTtcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBhcnNlTGF6eVJ1bGUocik7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKGUudG9TdHJpbmcoKSk7XFxuICAgIH1cXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIHVybDogdXJsLFxcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgZGVzYzogXFxcIjEwMCUmJmZsb2F0XFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB1cmxJbnRlcmNlcHRvcjogaXRlLFxcbiAgICAgICAganM6IGpzLFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXG4gICAgICAgIGpzTG9hZGluZ0luamVjdDogdHJ1ZSxcXG4gICAgICAgIGZsb2F0VmlkZW86IHRydWVcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogdXJsXFxuICAgIH1cXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpmL/ph4xsYXp5XCIsXCJwYXRoXCI6XCJhbGlsYXp5XCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKFxcXCJyTyszN3VHK2IySmJsOTFKWGUxQUxhY0FjUksxeGlrS05TZngzT0pOdjlNQUtwY3dGS0VMcXYyRlFFcTUxOC9abFpDZHpNOXZHbnpjL3BJM0x6Zk95YUJWd016K2RBY1ovc2pnd2RyOSthaE4yenB6SG84ZERPZDZLOXhhUldNZkRDenk3M2dSUHRha0FISkEzbU5SVzJwdVBTclNUQk1CMmtVR3FFR3VVTldrTTFwSEExam91U1dyckFNYmtPRUlVS2IyWVFKM2VJclVTMnNzVDc0V3dlanYwaXJ4Vlo4UlRoVWdwekFTWTU1dVB0N1ZnaVZWaWlFWEZjSi92cDl4ZXdZVzVLRXRnYzN2RXhjVFY4enZQOGN5SDAxcGRGMktQR3NnMEhMd0JFNEk5UTl1MVRnQ09GamFOZlpOa2F4WlFaMlZuUGxaMXJOeXRMY3BhRGNmMk0vanJUZC8rbm1zbVdya2ppdHVxOHhJNmZDVGwwSjZlMEh3SHpmdFE4WEZkVUZlakt4V0RGcGkxMHpqUTRuL3JDUSs0UzdPTlpaVHJZZGlYeVBlNFEzbWd6SjdRWjQ3NVAzTnBLTzZnTGxpSnZwN05Ic1BXL0FIK3BmWEJYQndkUml2QzZoTkc1dVA2Qmc4Z21pTjFHVHNSTVh3N0xob3JGSndXRFpSQTlZTGxYdktSYnY1WVl0cEZNVDVPWkNnOXByRWphZ1laLy91ZEt6eSt4QlNoQTEzM0Q1UmFtK1AzeXFLcWpMa3d0UVVaSnl4WkU4NmI2NjB2WDJDYmhieFNZOEpGRTNnMVhzNHZnVzBXQzU4YURST0xBeWhacDBlaTdubUtrUEZsYVFZOHVqTXd0ZDgrVVpUVjEzWU9paWRvS3NoWHF2SEpWSWZFNXEvMjdmdnlHdTJoS2ZKMm5KYWF0d3BuaVhxUkl1NDljMGZsUlJPdlVNbTFMSFcrVG9KUXMwSzBwWk13eDNKSkZ5K2FKbWw0VE5VYjhNTFQ4V0tnK1paTHE2bTBQQVd3OGdkZ0l0TERhMmFEVC9RcytBd3dTdmsxUStDR3JRRHN6b3hucUdwZEppemJEVlRRa0pjVzUzSWRKK2lTVVFRSENNdU0xVVlmcGRBSndjNEQzK2ozMFNjSHVuSDMvYk5CZll3bjA0L0tIdjd5WlN5RmMwNlIydzhuZ0RNUm5jZklQcmpONmJzekJFQWNLMHBWNEF0Z2hySkFkcENyUFJDdzRNZlVMSmc2NnF4VjRLVjFGa2JPSFk2ZzA2Q3F6ZGk5dEJnZmQzNEx6ZmRLZEgxVm9kdDRLNjdnUG50WG1iVThDVVRzMkhSRmx3ZkNmcUJtUXRGRGlUM0ZxTlBGSFhrM29KRStzT0l0U3J2VWR1K2J0NHBGeWxuZWVHbElTc1g2bUhPSGZrNUJacDlFV09Na2pBNkRtYnBaZnFCb2o0L3JKazFjSGJ2Zk1MSi9uVzdIeGt2ZGJ3amZlSHI5ckxuRXJEOCtPaE1QcjJGQ2x1Q1hLOHM4ZlJMdm5WVlJ1TDgzY2Q1TUpEZVBHWG5oSGZKaWNNOGU4c3J5MGpXVm5QN0NKLzcxa2dCMVBZT29PYTZZY0JuZC9Fb3N0OVNPZXNuZStZa3RuUGFIUHhmdjIvR3diWnM3UUtndHpaL1ZuY3RwODBqUkxCd0NOdERaTkF6dzN2eDF5dkw2eTRQUExlM3NRdzB0YlJ4UHAvL05xMHRWSE5sU2FzRW1QRDNHdysrams1NFZ1UmVieVNIa1lsU0dPNkNxRDRjNmd6dzFiR1JZRERuRStoQ2R1SS9neGxMZnNzU1oyMlZtMkhrVnhndlFHOC9jTnduQUlWWERjRDlwcGFmTStJc3V2Q0RaNFVkU3M3SzJ1eko0YlVpOVBPcTBBUnI2ckVNTkxXMGNUNmYvemF0TFZSelpVbGRHVUErdEF3QlhlQXhKUnp1d1ErUTVSb283c053V2o5U3Q3NklhT3dPWUpLa2FRcDVWeUxkYTBzeHdTbzV3K2R3R2QrY21lOVJURE1iL2VDQldRZnlXbVRjU2svNlVMblB3TlZGblVYTkZrMlBQUEtTUlVmTXlLN3h5VjhtTyt1YWNKTDJQaUpqbDVuekNLYkp6MXdhQ25vK2YyTDRRNVcvMVhLLzhqVTU3V1RrM3JpV2kydU9XUVdZUHBWNXZtRi9ZelR1V1h4TmI2eldxYmI5ajdpOXBWNC95eDhOdC9hT1VGdWRKRmlUdjhtOHFabHNLcldEd0g3SCt6MEVoUjhVeFg1WkNMNU1NelJ1YlI4bERSRVJNUm80UTl3Z0l2bnhZdmRjVTBBd3Y2SGJPbmxjTmxxQUVLa3hFUkxvcVR5bXZhK2pIQjNmS3ljVHJvSVhVblFrSDRocDNJaUVUYXR1MTF6emEvOHpXemxYQ2xsSklUUkk1cEIrL2M4enMrUzJRK2dTamVCUXBqSnB6a28yQkpSN3hwTkxyM0d1Q1ViVzU5Q01EcHRUbVhHdGxNajVPMnNRdmowQTZXZTRHenIyeDRmOXROWm9TZ0V4NnpLUC9IK0hhaVNYM3JzR0N1UHJwdENBT05GYmJ4cEJaWnJ1TW5jRW1LbldtVytPTkIzMVY3aFlpVWFXNUpuVXFZOWh6OENRQVZBZGRQalhQTUlBUFYrQk5DZm5zTkZYV3Y4ZXdhblBJemUzN0FTOTM0aUJnbDRHT1didDRzbi9GRkdITzdJZFhXNGZPV2tuMXU1UUJ1WXMvVTNCNDRIMjdOSWdUdU9jL0tjYUQxNDg3ZnBWdnQ3T2ZzT25Vejl0ME1sc1VkbE1KRjNqaCt3M3BFTGV4WDljU1F6bzJjc3J5MGpXVm5QN0NKLzcxa2dCMVBZRnhmZE50SjkzbkF0UUIyVlZPRVg3Y1BJN1crS0g3ODNYb1dyNG13akEyU3ZOREFmQU01d2oyNFVJTFhJTlIyTVR3Yk9KWnQ3T3p3L0l0WjBzdVZCelk1MExYUjBzOExldTQxTk9MaTIzT1hKbmE1Nk1oSHRqSGhUM1hydTQwd3NrVnhtdXEvbW0vcHFsWFpObld1TXpPK1JUNFA5Tm1TUDVWbU13SmovcUZIVG9RcW10c3JUL2h5ZTlCb3BnK2VmOW9KTVBVdjkrb0c0cUxJcmhDcU91bzFQZlRMazJhU0t5a25Nd2N4c2ZQOTB1WmdBcVMyMS8vUStnSmFUeEdQenZuU0pITXh0dytiYVl2bExKRXRDc3hpN1V0Vm80N0FUd3Q0dEtTbGNSeG1STzcvQTVIYnYxM2FyL1VLalpKSTkyV0NLL3BEL0FoczJlaUNDOVh6eVkwRmhJUE1oYjg5VjVFc3lIRU1NemRMelJMeDdZZHJXSDUzZmVWd0tEWGNaOHNvVWtsckNDais3WWd1cHNYYThPQ0lnOEkraUlkNHNmRDRjQVZZRW1uRjc1dHdWSk1uWVNKamxNazBGM1JyeGw4Z2xVNG5ZU3RkZVFveDhjbU1GcEsvaGlQLzVCQ05qcWdyOWZGR3RRRVAxOWViK1ZMQTZxUDRDT2ozY1pxVjQrci85UTF4SmJnWUFCclIvNXRYaWhwS0xjZHgzdzBzbU1TYmRyRHFXWnJYbXRuVXBqN2EzUUM0WUZDNE9JVVFCeWZwWElWaHp5d0pMNjBaWkxSYXZobHRwL0crcjB2NUQ5NnZSajJEKzNwZHVnYSs0QXZhWFE5ZThkOG5BOTFuSEJKQkhMdVdQMWtwK1FidnJmNURDYlA4Tm9SWGdTNVlqUWJzcXpuMUNDZlNqbVp2c3ZlUGk2QkFFYlFEdEg5YlhmRUdNUWNXR3JkY1RDM1hMb3NpS25SQ0lkZEhkdnBYL21McW15dFpMeUd6Z0dzWHNFU0xRc3Q0cjVzUlZlT2dpRW1aOEJmNWJYYWVSajJ4eW5kREl1M1dlbjFTK2pQL1Jia0IzVWhRWHZNTWhhOU9iRjAvYUJvTjRremQrQW83Z1NxTzh6c2F4MkcyanVwSjZHY2UzU1JKWjhKSUtxejJVYXlyZmQ5dXZzOU43ZEY1c0xjR01KVGI4Y1hWcXQ4bUl0S2RXdUowU09POGxzL3ROVjFDeGZmVlZFRllKV01MOU5sMTJsaktZYU1SbENDMVFOZ1VMcTI3SkVaMlE3SzB1REJ5UjRJUzJYVzhpYWRHUHZwQktxSVpjZlQ5ZTdBUXk1NENRK1RMNDBhOWhQUlFsZ2s2RFpFcUhDcHdLSU5kTmRGVkRZRVU2cUEwWm9QUFVYd1lrNHdJOTdOOC9mUFJSUVEwc0NmSGtWb3kxWFJhUFg3T0h6VVk2Skx6NTJVdUhKajhoalluOVp1ZVMrTFdmVUtYQUFqRm9jZ3ZSNFZNWFkwU2s2U1dlWHdSb2g4dU9aZWM4ZlJJbCtQejYrRWNVbUZyNUg0cTkzTUxhK1JWb0xOeksvQXNOYXpjMlJyZmU4dXoyWm5YSVdhVGxYQ2xsSklUUkk1cEIrL2M4enMrUzI1OU5HTEFqM3QxUU1lRzdac1VTUUd6TG5wUE5EWG1GN2NkYmpQcEV4dHNzcnkwaldWblA3Q0ovNzFrZ0IxUFkzV2JIazh6bExreW9KT3Jrai9jYzU2TmZrdkdJR0lDL2FyMVN1b0hIMmNNc3J5MGpXVm5QN0NKLzcxa2dCMVBaeHJaVEkrVHRyRUw0OUFPbG51QnM2L1hxRUJsbDdiZG5Md3Q5WU9DRHE5dWV5YmowL1BGWFlCMWMwWmNuOStTT1VWc3BqTUQ3TlljK0RXalVMMmIyc3E4UTUyVW96d05zT0FJdDdpTWNmWVorYTBXR2F2eU9EVE0zVDNuVWdKOE4yOGFFcXNzaVBKclhYSUduWXN5M004a28rVUFNekxsb0dOWXUwOGkwT3VKMVR4RGxmZFUxT0ZDOVpXL1FEMGJxSGdxeCt1N2J2LzYxSzMwMm9RUitNbXFFbnJpc09PTk02OW13VlA4aUdwVktuUUhwK2pYditrNUdVQlhaVUNrRHArKytDTU1FUkViTGx1c3N1YUlXR1hzQ3lxUlZuL0F6RHlUb3kyOGFNZU1JQkJ1YkFhVU1RQjg2TEtxMm90RDJrWVdYS21nN3JRNFdJZmZmZWoycHhrOFZDTEl6cVkxYTNwU3A3ZFRKbHU2Y0xFVVpiMVRXNVpPZUtuajU0MFdCWTAveFBqSThzY3d4b0JSYndBK2xXVXowRzVrUFpobS95cDFadWF5RzhhK2xVQnNzOU5vNU9XNk9Gekgvd0tOaWI0c3ZFdUJhSlJXUVNmYXpRUHpYL21DYXpCTmpIalowTWF6T1kzYThFdFloUWhucG1MczlscXNUSGlFNE15WEFHbHIySk91b0M5Y1UwakV4K0h6THk0RnBzWG1BN0kyMllxbnpGNnRrZm94bjc3U2NiK08rRXlzWjI4V3pDYVRNYWh2WjJlVld0UG5vc3ZnRldQRGh2S3pub3R1YXc5d0d1ODd2c252S1dremtySjlsN1dWRTBJV09PclBxb2ZRR0RmU2hIc0Q3TVNIWmEzdVhWNHZLZ0YzK21WY2FtdFhsemZxRVJzY05XdHYxOWViK1ZMQTZxUDRDT2ozY1pxVjRUMnlYd1Zwc0xUSGFEeHo2RmUzbzBzVFRNKy9TQjFDcWg0ZVNEYnhTL0FFN0VRTUdqenBMMjVpbFNGZG1Bdm1NbWxaOERvM00xdGxlWlZpT2N3ZTJnSC9mczQ2dDZnWnRBWldPMk9KbUZlTFFMVC9UbmplanlodlEya0xsNW16M0xLOHRJMWxaeit3aWYrOVpJQWRUMnhDeFVuT2IrbGdCODE5V0ZjWkV3bnBLZ1BhaCtRZjBuNWxLY3Q4TWtUelNQeWNaWktOOGFxYy95YmREdXh5WHlQTzl5NWNnU3VDdlVQOCs2QVdhRTVWbVNLZnRONDkxQzZTRzMvdVcwWlFsNWNDcFpyUlNvcjBqR3ZSMjVka0hWU1FLcTRZOVpCZmZ3OWFDUXc2c0U3Rmp4V002Z25nWFZ6RTN1cUo0QWtVRjVML2ZEQUljK29WNGhGcGhYQXRWUjc4Z3V5Y01sQUI5dS9UMjNxRjloUFpxYm1wMzRwNkNTUVJJNGJ5UkJCNm1HZG9XYy9hV2dBUGV1Y2tRa1UraFVmc2RuTnBmdEFPVnNRYmNJNXpmTXFrOFBvL1Q4QlV6L1JzdlFqVklPMEJLNHNuM29wZEhmckhMS21ZYUtrWE1VNUkva2dZSVRhVXFxd2pQcFlDKzI1THd0UXpyZVN0M0M4a1c1MWtERVY5WUV5WEt5WExJdnFXZjBhRkJnVnYrWUhJQzczVjN3TzRLREZtdGlCb2FZQkpIbjNVY2JRd2Mva2luT2EzU1RsSVRTcEVkQjV4bkdDQlRuLzRMeXJ0YW1ZdkdLKzBxMnJPUGRhRVBndFllTVhzQURIVXNQR0hVVlk4WkNvb0d6WXg1QlkwNDJFd1dWWTI3K09Ic1dGdDRkSlhSTHd1eThHMGNiRFIrYStRaE5FYk5xckNQM25GMjBFWWV4VkV0cFN2MGVCSy9uRGwwUXVxZENpai9ZQlpPWHNNaE9DbnNFVWNSODhHeWxtNWJQNGQ4YjRpYjZ4L2lEQVBjeVRINXg3OGhhTjQ0bG1Pb0Rqa2gvSERhNWR2SUtPOWdQelR5YmJJL3dITnI1b0RLQ2xwNkZvSlZ6ZnpValU3WUJwZFptTTgvWmpMYXRwYVFaR1JlZGx4RzNjdmNVMDBmTVFLS3BOaC9tdEZBcXVqOHFneTE1Mm1SemdOcEd5NzZMVmplcXdxNmpKSEx4c3c5TmtuYkY2cFVJU0ZmSThiL1M2ZlhZL0E1Wmw5WEVmZzY5bFg3eE00SnNnTHA3T2lvaGhxWUhMWHU1dkg3NE9hV3NVYm5uUlhGRHZDN0NlREtqNFFwaVJZUmtxVmZ4T0NwOUdKSk0vVkJEN0hzaVNOSFgybzN6K3RXRXEvUEo0VjBsMmVoRDc5cnhSdm56QWJjVHVIM1NCOFRWQjE2U0NrM0UrTXJ0cmV5bTc0VnRMeWlIbVJCWDRCaXRkS3hsSFRiWUZuZHcxa1R0MGdVbWF2R2dZMnhDNU9mZGdFaURrTGs4M2VuK0Q2eDVIL0pnelFNVy9CYkJzMjErSVk3ekxmWGllYUpubU81L1YwcVVRR29iM2dodTBPWXlGT3V6YS92VkpaZXVVeDgzY2UxdXpOZC8zamtqVGVqTWhvRjkzbUpyK2xud2lSamtEYkcvNEZ4U3RUa3pWQUt3Vmx4RFgrRFoxdVZlemtpNlBjUWxaVVpoTzhFa1FkVUlqUVo3YjErbE02VVVvK3k1Vy8rZFV1eDlseWhwSXZkbmM0MjV3NCttQVhoc0daRVlvRE50RDNrYml6TTdMLy9MSzh0STFsWnord2lmKzlaSUFkVDJZcFRydDZLcFErSVozUG9FN1hYZXVCK2ZNRDA4YmpPZmlEY2UvOG52NUJOWTBMUDgxRzA0a0g1MDc1REtBT0ZqeDZ2QnJiNnE2cVJleXlXdC9nTGV0d3BDMzhCcjB0L2U1YThqOGtoY1JyRk40UElWVEw3UExnamlKUzhpOVBpVWRoTndYdXN2d0NtNzU2SldJWFZlTENFUG1JNFVaQ0hObk1XMGYzcHNpWENTOWQ5cm5rWW9HQXc0eUdjMHVTSkdCcjFxc1R1T1d3V1ZRWTNGY29qNFJwUm90Y0lyVXVjcHdmdGdVZEJGWjRlR2RvV2MvYVdnQVBldWNrUWtVK2hVWG8wTGRpVUF0aVoxVWxsMzRyN2t5OFVVMDNwTW9EMVRZaDdUbkozdklCL0xLOHRJMWxaeit3aWYrOVpJQWRUMmJwOEJOMm5Ud0pBQVBjZ3llOXA1UnY5TkVGbUxkT2tTbHhDVUdXTkYxQ2YzMUdud2RMaWdXNy8vWEFhVEt2QTR6cFF5K3c3ODg3RGtKeXZ2MnduT0p5WEh1RHEwbzF4YWJrSkxYOU9EdnlFWllDQ1VwZ2pHUHpjY0pOOVZ5Q3dTSlpyVlBCazlKWUZTcFZ3QjVyZHc2TXNyeTBqV1ZuUDdDSi83MWtnQjFQWXFOUktrZzhDZDhkdU5Eek4rMnk5dXBxN0xObUQrMWQ3RlVYdkhWcW00d3NzcnkwaldWblA3Q0ovNzFrZ0IxUGFLelI4dE9LZUxTY1hvc09rRFI2bVdDN1psOW1PVWhZQitCS2ptUGJOcmE4c3J5MGpXVm5QN0NKLzcxa2dCMVBZUnlIK1NOYzFYcXhUcGhDbDZvcVk1WFR6NVBjckJDSHVxcEVvaWtleFRQSnFibXAzNHA2Q1NRUkk0YnlSQkI2bUdkb1djL2FXZ0FQZXVja1FrVStoVWl3cEF5VDI3Rk1rOUN5WXl2WXRoeDVaUU9vYllZWFZrK1NOTG1nWVV5WmRlMDMvNytQWVdsakFJMDA1VzhuRENEK204Y0dQY3RSdmhnZktBVXM3K2dyeHhKVE45N0FaUFRoam55R09mQUY5d2JXc3A3UFJQSEhDRVpnaWd2WkpmWXpJa0hQeTFvMGxHYmQzQUtzYlg4SkZoOVlXdktWcXkyWGQ2c3hqaWsrckNXS05SY1V3Uy9GbHNJczZGTG9nSndGaXRIU2grRUtKR0NNb1V1RkkyMVBiSGgvMjAxbWhLQVRIck1vLzhmNGZzamJMTlkyZFUwMnlvSnlWOXBhOUkwMjJjbCt5MGdZVGxBTzh2YU1QcnhsRm5sRUdXamFXbGhnNm53L1dhdXV6UEVvWFBzdnNOaGJQRUVSOUtwQi9yUUEwTEk1VGl2SjhISTRzSWdWZzNCMzMyR2luZ09JU1pFQ3Z2VkRUQXo5Uk42ZmQxR28rcGl2UmQvaG15WERsV2FrUEtzRjlBK01SbVh3NHVGZ1hIV2NzcnkwaldWblA3Q0ovNzFrZ0IxUFk0OTltcDhTcy9DM3g4bVdpamNVZWhVcS9KUUdlTmIwaVBabW1HaU9QV25ibDg2UzVYZGxELzEweEhWRlBLb29JbjE5UVJ4SWRhK1R4K25LZkQ0R1JnbmoyUlREdE1YdUY5b0dWVmJ5YUl5c3NyeTBqV1ZuUDdDSi83MWtnQjFQWUJ0eE80ZmRJSHhOVUhYcElLVGNUNElvSXpPbkdmcXdQRDluWWU1T2Z6L2dheUtyb2pISW9iNjFSTEthYUd3Q3lMbkFweWN1QzVsaEJQTlkzN3k4aHphdkdnWTJ4QzVPZmRnRWlEa0xrODNVQWljbzZiaXdoMFoyRHFhNEx4UDA1MjhhRXFzc2lQSnJYWElHbllzeTNNY3VTUCtsOWYrRXVocW1xZlhCUzJRNU9YK2pYMENiVFpIZFVaK0JZTUN3UkQ3OTNXd0c4UFIzMGQ5dWNTMk14YmR2R2hLckxJanlhMTF5QnAyTE10ek1yU3ZuL2RZK1VsS1g5eS8rdXNTNUY1ZWpTeHQ0R3BrSkxhQ2VJZXNsS3I1RmtkZW5OK1dZZEQ1NmMzbUhncmF6MEp2bGk3ZUE2VkZHWEgyOTJkb2Zpa1N6MzhqUEExOTdvRTJvbi9YOFJidDZLZGc1VVBHMTBMcHNnc05RS2doVFBlWmlZMlowVW05QkNsL1hzTHFRellRRUhjSHpuTlovQkJ0RWlSUXpnNkt1UXY3YzlRWFo3amkvSXZxYXhhV05ZcWVEeVVXRHhEMndBdmVxbVNJL1Fhdk5TV2hqeWc2Rzg5WGcwZ1V4a0FBL1A1QndwQVFrZG9XblgyVlMydnE2TUtjcXpLZXhIdk5jT2J1TEZTUmZEZXlUZkhEZURvcllDV25pWkNTZisyekZWbDdYKzZZV3ZQclN6eThYTkIzdzByMFQ2TEsreTMwQU0rWS9acU5NeklITTJvQXM1K2dsRmx6UTMvdG9GMjhmRUNrQmJvZVE5L3VnRG1GNkdaU05oQVFkd2ZPYzFuOEVHMFNKRkRPRHAxTnpaN0NZa3ovRHZGZWRNcGg3MmxFR2YvZy9PTmtObmdJQ0NadlVGVTJtYTN5My9sRUR6d0FjWm42c1dJSE94SmJGdFUzdW1RbTZwRENYaDVkM216QmN5Y0drVGpuTEdUcjhGbm0wb0ttWTJsK1M3STdCeVRRbFpKMGxRRVRKNy9QaHBMdkhmNFBESDM2cWs3ZzRtQTUyQk1IaTRuaGE1NHRQQ2lGb1JKSUJxbG9obks4MnlSZHFxWEIxaW54bUFQVFk5NGxMZnRvMnFwWnpFaHhnUjFkVnJZYjNnNDdCb3V6Slp3eGNiTTVQRmxUZjVReHVyUmdaWm9CNThUNDJJYWhWcGxheTkvL1dJejh4Mm5UMGlwc3pxOXIwMytpTE9UczFmc1lFRFFRNnJUaWF3Y2Z6RnRJYjZmWXdaZnRMTDJrYzYxUm5lYVdBcjc0Znc4bldFUnVkcWE5T0hRZG5pOWRCRk5KQnp5c3ZlZDFiYitKSk9iZXhDK0l4TVdkV0RyMDJNaFF4R0JTNFJNRzByQi9ybFdaQzBlMTJhNjRWUStxQnFGdzgrZi9xaWQzVkd0RDVRTE8vOG1WQlcrZHVWTktZbVhhRGd6ci9jVnRRMUF1RFFRT3FXYlU5bmhRamRNVnI3YS9pOE8vMjJFNmlyZEdZbFVBOUQxeDJxUkJhMUd6Z0FnQ0VseExmZWd2Mzk2OWM2bDA4VXVrQ0o3Wi9FYlQyYXd1cTV6cmpFSVJ6Nkt3VWFIL0E2LzJnVnhrQTliVlhicWlLVVZqSmNWbjYvc1FjVHduYzk3OGNWTTJxTUV2c0NJam5zY1gvNWVoN3NzdjdabG9PamovTEtlUlZHcVJ6NzV5YmdFV2RIMytVL2pldE1LSmRWQnYzM3JRWnZNTmRhYURkWmdzV2MvbUhJbVBLMmZSNVo3VmNBZTRzNUwwaUZLa1ZRZ3RiZFJvcHlLM3U2MnNzUzFTLzhPcFRZMnhMUjdKRXFpNVFqaU54aWg3S1FVak51SlBCTDBwaElsNGs0Kzl6OG40VUJ6Q2I5b0hZWkV5eXZMU05aV2Mvc0luL3ZXU0FIVTlyZ0x2eGlaTGVtanRESmRxS0pISEtQTEs4dEkxbFp6K3dpZis5WklBZFQycWMzYWJsQlZreEN0TXhyMndCQmlJaURWUURSbXhqQTlXRUphWEtQNjl3UDE0NDkzZ3MrY0hHNEdGblo2N1VoY2NLeE96RFQ1MFJ0bDk2MXZ5ZG9CMFNETzdDSFZ5bXJaeUw2VmlTckZzaGdJNGpjWW9leWtGSXpiaVR3UzlLWVNNNG5WRTQ1Z0RueCs5MGVoMExxbG04QXVkcUNTcGx1bzhONmhJMGVqaTkzT2xETDdEdnp6c09RbksrL2JDYzRuSkJ6M0hPeG9QQzJ1cURoK2w4b2RSODBCVUtoZjUvczc1aWpMQWRMdWFQUE9sREw3RHZ6enNPUW5LKy9iQ2M0bmtPMmhGK2h6VlRJTzNkS2ZUYkEzYU1zcnkwaldWblA3Q0ovNzFrZ0IxUFpZQ0FwSWVwT2o3TUYvRDVSSnlrdVVkNmlIRS83bHdlWWlWMUVxVU5tVFJMVm5DMHdueExldXU2NkRqRW9Sd1dPeWFvcWtDdGtYVFlYNGpCZFVCd1JUS1hmR3FuVVArWXRoM3dMWm5LbmZiSVoyaFp6OXBhQUE5NjV5UkNSVDZGUjdscGZxTjJQNGQrOWVmdXgzSU5SUHJJSXZ2dWFGR1c3WTNkYXVPbXd3TTg3ZFJQM3BZaDRheWVSV1Q0b3N1ODJIWTd0N1J6Smx5M2VuL2lxemhWSGt0T1BVbGdBU1NFdWViY2NjOWYwWDRjNlVNdnNPL1BPdzVDY3I3OXNKemljT1p0dGRtM1VZeVJFb2N2dWRRSTZCVjRDWVJnaDFpdDc1MXo1MUVxWThoTXNyeTBqV1ZuUDdDSi83MWtnQjFQWnFaRHhvU1JreHZmL0xxRW54TDluclByOEF6REhHc3hLTkxXSFJCZkM4NjhzcnkwaldWblA3Q0ovNzFrZ0IxUGFiQjQ5N2pVZE1qb3lFbVVCVjM0WFZOc2Iwc0pSbEpsT1drYU9LcmdwdFljRFovVm9OZFF4N0dvRkg5SHJ3b0RkT3B4UEx3MCt3VjNoTmt5c0cyWVJxS1VzVFVvL24yQ2o2VFpsdFRJUHVGeFhiUlUwQ2dnQXV4MFJYVEFWajg1SGFBM2hOR0xuQVBNTXB5NTEzbTFGNURvd0dBUVhqWDBQNERPa2M5V0dhaTlBRVlEa1hpZmV3SmtSQU5rYlF6blZ4enFnNUZLTXNCMzc3ZitMTTlvbUJwaE1iZEt6Z1JFdG5GNGJpdE1veHNjc3J5MGpXVm5QN0NKLzcxa2dCMVBiVWF0KzhxNDVnVXZGeFpURG4wTVl0Tm80aGlMZjhFdUZLRzlhME4wdHN6OGt1d1lCM2hZUVlYZVJaSlhBVmRldm9CYnlaeERHMml1YUVkTzE2NDNITHl5dkxTTlpXYy9zSW4vdldTQUhVOWhmdE1oeTVlNjRzU2xPTzFvTUVrMXN0OXhZdi9icmV2YThrNFRrc0xWSXYxUVNyT05HUWsrWTFXUVpVSlZBRXJnVVFvb0p2WXJDYk9BYkM5TnFOSnRmZW0vcEs3NnEwakhjK09sU0JYbmM2YkNiS2k5UDk3WjBuVTJGMEt5alIrZUNTU0hPdzlrcVVCZEtDbWdzUHBBeDd4eklWZ3RxRXZBUXVITmlXTVNFcVQ2Smt1cVdVL0IyeHJnSHd2cHBGZjl2ZzhZdG5wak1MNW50OW1oVnp2V1U5T0FENUNDSFBoNUxVZjFIRVlubUtRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzVG1nbEQ4QSszc1RabzJXL1RQTmJydWJFZ2ZhUkdmR0xHdFQ2UFpkY2RUaDVhOUFaY2Nsc1Jjc1BNOS91M2ZFNG5hcmsrUWZ1VDJoMDB1V3NpMG1ndEMwREtXUEd6ZGhRMGttajdQd0ZJK3dZZG5qZHpORE9GQml6a2VRdDlLck84VkNpL2lJSk9JL1pqalFrbzhFaVlGWEk3cnVlQ2hoTmx0RWdQNkVHWUk5T2FDVVB3RDdleE5talpiOU04MXVzZWE5dlIxTDhiMk1Zbm5ScTg5SlVKbXgxVnNNbmM0NVg5RlZhLzh3UWd4M0ZBSEhEK0VCZFBQaGl3N3E5R0M3ZHpONFRRMGp4d2dKVmZ2YlhDdm1nb3p3ZUFxM1o2S0hBYzUyWXIrdXJJR2taV09OSFpBMlRIbnBYb1ZKWjQwR1M5bHowNElaL2NtbWErdC94eGNPTXNFRVMveXVSQkJybmNjUVJTeEdMem5ZbnN2Q3Y1VkRHRk1TeUswbVJabTVsVFBRYm1ROW1HYi9LblZtNXJJYnhyRHQ4OWx0aElkZ3VRQjFhdE0rZTY3dnpRQ0ZyWjlIbnNzTkxwdWNlMmhZcmZIbkRrR1FQTkVJa2ZtaExDYTJSeUlsdzcwQ1p0UzlBdERtTE5VeW1RSTNsMEFRbnowNHFnYlkrek5oMzdEYWJjdHc2ZytsOFdKLzhJdCtnZ0x6RmRaSnJzYkd0QnJRWmx3bkQvZ3ZXeTk4c3J5MGpXVm5QN0NKLzcxa2dCMVBZcUxPdGpac1FCZnRQK1ZBd1NsLytZQTIrMTBsS3NIYUgvVE9IY0xlZGZ3Y3NyeTBqV1ZuUDdDSi83MWtnQjFQYjU1bHY5dUlpK3VhRTlseExyRmhETWxlTk55dUdVelU4OEpOYldKbDU2eGxVSlZCNEhXL3FYVWZCQWY3TFRNMmVsbWY1TFBsbUZSMVhSNTAzNXNFSExMR0FGQTcxL29yMDlaUmMrYzdTSWY4TTVFNjRxT0l3RVIrbWNFMTZVWlI5SnJQOWc4M01UOHRTNjIwSGVYbTJ5RTk0SGdYRGxPSjNmVVNtWDg4ZnZUUG5CSnB5bFluSXFDUjZIdHNyb2ZnVklaaU4vUE9YYnE1bDNvNGg1MFowcGR2R2hLckxJanlhMTF5QnAyTE10ekhqZWllNzFoZ3FobjEyS2ZmWml6QXBxWHhjQ3IzSXhFTHNQdW52bEdCSGlySVRpQlFKQ21CUW1LR3JyNVhtdnE2TXpPMnNha2JqUWQxNzg1NGJtZkpyRE9ST3VLamlNQkVmcG5CTmVsR1VmZUNiOUU0emJzdytwTzhMd0J0K0ROc2RnNmxidGh3Y1c5TlNVMDlUTSs2UmJWWGJxaUtVVmpKY1ZuNi9zUWNUd1VmQW5JelNzb1ZYM20wbmJVV1N5NG5ucDBCQm41c0NYcDBxcXE5a2NyejJJVFFXQ0lvK1ZCcUtqc0FrSkhOVDh5eXZMU05aV2Mvc0luL3ZXU0FIVTl0OTRnR1ZrWlJ2ZUpCc3hOaDFMenA0Q1lrQXVJa1cvMFd4YlJhcE1rSS9qeVZSczB3TXpYdldmSG9sekhpdDYwc3NyeTBqV1ZuUDdDSi83MWtnQjFQWjh0RlVPV3oyS3pUbDVFeHBZY25nYWZRa3ZJdFV5dnJJZ0pkV0gycXFVM3NzcnkwaldWblA3Q0ovNzFrZ0IxUFpsQTB0WGpCTE00UkRRM1JXNmtkU09VSTZScllScFZ2bTlzWlplZ2xwTDRJZHZrYnE0aTdXeEM5ZktMdU91cmtWcGJaaUl4NFVBNmdUcFlRWER3eXFyeXl2TFNOWldjL3NJbi92V1NBSFU5dnJsU2dhRVd0dFVpMFVBNytUbkQ5TmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3l5dkxTTlpXYy9zSW4vdldTQUhVOXN0ckVYam9iWHo4ZjJHWlVVQXJxOTRUVU5FSUtMUXZ1REFsRVJEUFBVWHVjb1VmRFdYdnFBU0RHSjc0QXgwRUcrRVhNd0RxNGp4cnZXTUlUWjY2bVVYTEs4dEkxbFp6K3dpZis5WklBZFQyNWZucmtJaENkd05ia3A5ZFJrczZkc3NyeTBqV1ZuUDdDSi83MWtnQjFQYkxLOHRJMWxaeit3aWYrOVpJQWRUMmpMbmQxTmpWUVB6U3lGZ0xWd1pFRE03ZFJQM3BZaDRheWVSV1Q0b3N1ODNMSzh0STFsWnord2lmKzlaSUFkVDJtajVXTm5xaWN5ZDJzUDlFd0cwT2JwRmlGNTUwRVM5OFJNOFlTQU1DNVZyTEs4dEkxbFp6K3dpZis5WklBZFQybkQyMm0vWk9uNTdYWGJZZWFEeHZYbGhqc3J1elBHR0lqSWk2YmpLUU85WExLOHRJMWxaeit3aWYrOVpJQWRUMldJeWxKclZub2FLNnI1KzZQUFpIYzVIeElES2s2VzhXRk1MU0FwQk9pRmdSaHBWNFdtblV1VFZ4eEQvK0dvMlB5eXZMU05aV2Mvc0luL3ZXU0FIVTlodmFlNEVEUGtIc2VvWE5NNzV4Tm5KNnJpdTVOVzIrdG9yS05LOHIrRnJleXl2TFNOWldjL3NJbi92V1NBSFU5aDVhOUFaY2Nsc1Jjc1BNOS91M2ZFN09sREw3RHZ6enNPUW5LKy9iQ2M0bnZZdTEyRHlYTEdONC96WU5ibFVESm5UbjgyTkpQTzFhemEwR1NzaWlTQmZMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9Ud0JpMmdkWUhqa2FKeXI2YUpGbTJVU0tKejZIbnFSZnlLd0xUNHk4SGEzUEh3UHY1N3hvaW41a2ppVEdDT0srTXNyeTBqV1ZuUDdDSi83MWtnQjFQYVBXb2RwVWhnSDl6M2lTSnNTcnpQOHl1bTBrODZBQ1FvR3ZxNE5HcFFjMmNzcnkwaldWblA3Q0ovNzFrZ0IxUFlDQ2tjaHlpaG9HVi9PbzRjRDB6bE9ibkV0MTNHUkZwR0t4MVFoUjZyWTh4ZEttem4yTitnb1l1cDBYSzRFdjhyTEs4dEkxbFp6K3dpZis5WklBZFQyZVFXT2JTSWp5THV2dTFJQWZkMzF4eTBWcjJoRkVVakxVWmpWUGVaSWZjRExLOHRJMWxaeit3aWYrOVpJQWRUMnd4N0Jia2ZHT1c1Ny8wSWU2OUVKNnNzcnkwaldWblA3Q0ovNzFrZ0IxUFlYZXd4SDEzZ092dFQ1UmhDWWVIY1cvYVVGaVRWWlRZNG9DeTl2bzkxNXBzQ1BlemZQM3owVVVFTkxBbng1RmFNb0tpSGxQQTJSRUpKbnR4VjNoVXkrZWRjOHI1WGZqbXFLYzI0N2tubldjY3NyeTBqV1ZuUDdDSi83MWtnQjFQWUJoa0t5THJyRzUxSnI2NkxYZlJscjVsYzZ6VXJ6WndPditmRWdGV3VCbWFEZktuQnlIU2tpMnBMYlJsS3Y5dFFqbExGMS9CUU1LaXpFbUdELzc0UkxqODVrUXhseTQ1WnYwMUc3TmltcjlSNFBYcFNLdzNvQ0pLcm5WRFJYeENNODczTGx5Qks0SzlRL3o3b0Jab1RsV2JHTlZNTlQ3S1NxM0V2WFlDK21hOW50TkF6ODFkVEtVNnBqMWozc1RuK1lzN1U5UllOVklGZmhrS0JmcWdJOHl5dkxTTlpXYy9zSW4vdldTQUhVOXFGaVlOaTlCQXdNMVpsMGNWT1dxdzRBK2ZUbWVYQkIxTDdpekdmTHZZM2htZXZOeWxLYjNtZXZnSnRZMWRSM3I5aWdWTHc1OGdqelZIQk9JbFVka2paQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFeXl2TFNOWldjL3NJbi92V1NBSFU5dWlacXFKd1llQmh3RmMvV0RiSmFueDI4YUVxc3NpUEpyWFhJR25Zc3kzTVl1bmp2V1R1d0F0MEdtMFNJc05PVUZRVGcxTjlJY1JuNE16RzZUMXk2cFhnbkhDTUFvQVpTNXRWZkdFZThsUG93L21ZKzlDcndDblJWb1FCcEw4Tmtjc3J5MGpXVm5QN0NKLzcxa2dCMVBaSFRyTUJ0RHRSdlRYeE0rT2NiK2lvbEFUNHd1R1puV09FZFRYbVdIVkQ1bWZjRVNGYzVlMkwxaGR2ZXI3dDRLVFJSN21MWGpFNngxcUNKT014WmRqaGRHKzZFMnV1Y1JIUG90VUw2Nks3anVVYUtPN0RjRm8vVXJlK2lHanNEbUR6QWloMzI0cHd5d215b2NncllxUnpWSzJkU2VibytTL2ozV0xtaC9qakxKZ21zd1RZeDQyZERHc3ptTjJ2QkxYMHNhanZKOVVxTHE5UlZBcU9yUVVUWFNBMWpNT2ZaNzJ0NmRteHBSRnJPSGJ4b1NxeXlJOG10ZGNnYWRpekxjd3A3U2MvNjJqSDRad1FaUVFTVG91aytYeXdsSnl2VjAzYk42ZnZmZytWYWNzcnkwaldWblA3Q0ovNzFrZ0IxUGJSTHNIdmJ0emlUNzQ5RjlJemNnU292T0ZVTWh5U09jZy9DT3FZMDRSQ0JxL0VlaE1QNThWMklIcW5OaGFBRWl2TEs4dEkxbFp6K3dpZis5WklBZFQyS1owUFREejk5QjNzalJYSEZDbjZoZHd0UVpnbjZPRVdSMHB4VmkwK2kxVU9ESlJWQnVBbkFSQzZ5OHZaSFdwNnNIc3Q2YllXMUpKZkNxSEJRZDlqNnhweEhYTWVsWFJCSkIxVUJud2xQMk5USzM1T1E5citmdnFnbWxzWGc0OUxFYm5CaWZmdDVDVG9qdFBUTUQ5VTFlUEE0Nk8xTlpyaXJHVGtsQ2JiRGtrM3V1QUpZbFBoVi9UQ2VIWmUveVNSR25BZXRCdkFpNWJreW95Ym5HWXZpTXNyeTBqV1ZuUDdDSi83MWtnQjFQWm4yZDlzSVd6VUFiZFN4Yk9ycEUrc21pTzZQaTlodHB4aW8xSjNNYWQ5SG1RVy93NElYbi9ObUJhK3F3RFRWeVBPbERMN0R2enpzT1FuSysvYkNjNG53emtUcmlvNGpBUkg2WndUWHBSbEg1bFlMMUV1NGJPSkdidzZFRCtwQ05XR0lhWXJkRFJpZUVDSnFlb0UwQmtOYjRqOVc3WkQ2ZmNlRDhSSUlRSkJRd0FLTWtoYzcwQzYxSng3UWppcWZUSExLOHRJMWxaeit3aWYrOVpJQWRUMlNueWlCOUZXWnJSaFRiUGRxdnFUKzhFTFZsaGt6YktvV05sM1llY3NTdkNuaHAvVDVJL3pwS2c0dW5wMmlKMmNqbFo5MW1rMTFQcmFnbGlzK3FFMEFmQjJTUlhYRXFzejUwejA1YlM5dnVKNThGTDB5dm1YdmpWZXpJU1pvelFUS29CTkVFejJLdnVTUXNoclZNOXoyd1E0SGNQU3RRcmNCQVRwQzBCZ25sUExLOHRJMWxaeit3aWYrOVpJQWRUMkQvNzN4bWZUVTlnUFRKdC91K1pxOGFaY0N6TjdVdzAzWUpTUlJxSncvWVBMSzh0STFsWnord2lmKzlaSUFkVDJCRUxCcEpZNUswZ3dnT1RXVTZHblBhSVRJNU5QeVBrU25ZdFBQUTRLREcvTEs4dEkxbFp6K3dpZis5WklBZFQyMG5PS1B0NG1aV2tycDJGS1Z4ajBkZE5Pa3Q2bTA5QkJ5QjMveGQycHZPNFVoekdLalJtK200RjRIcG44WThOVEFvcmFjMW9MSnp1aEtva3UwTDZ3NVNETkI0WWl5aldhNTBPUm5BaDMrVU9tb09jRVY5dDZ1bHJ3VkJTalFYSmdSd1NrTExWYUhWN1ZqRTBwbUZzNjZYakxyemxZbURKZE42eDM2eVBqV2trVnBkaDl4UDVlbWV2b2ZvQ2R1LzZMc2xWUkxxUTI4TEF0TnlRRlllRllhaUZERzJleFlxb0M3a1ZuRzhCbDRXL3VYblc4czZXOG1UUWVkbm0wV29zZCtIb2Jkek5TM09GRW9oRXZrZGFuUnNzcnkwaldWblA3Q0ovNzFrZ0IxUFpnWmc2TDY4KzJLMm1Ka2Joc0d1clRCZzVQSGN2ZWhWUGsrYmdvbzQwVnRzc3J5MGpXVm5QN0NKLzcxa2dCMVBaNkJuYzFiWFdtTkJEMjJ4Y0I1WmJWRk1WTlNNeXYrVzFHRUl6ZStBVXo3VnIyUVYvbGNQV0JEUlNyWmRkUVpNNnl4eEcrR3hTR0FRcWgwNGh3Qk5tb29CeWZKcHJ1WjBoazd3azNUdG1rTmo5MGx3MTcrZ1VIRU02dU9vV0RydFVBTmZ6U1VEUTZhQnc5TURVb0NhMDZRaDVKL05HaTR3NHYveVM0b2xsZFk2eGp4TUs2aUpZU3RlbkZtNzF5U216TEs4dEkxbFp6K3dpZis5WklBZFQyNlUzL0FVZ1J6ckJBWFFIb0c1alR4RGRSaVJhalkvd2ZGUWkwRmt4bEVCUkRnZHBhQUpNU0pOZWQyL0RJalFZRnl5dkxTTlpXYy9zSW4vdldTQUhVOWdQSDVHSUVzZW1kc2pwNnE2bU1XY2ZtWXhLVXBkcWxSVEdqUk1COTlGaFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlvbGU4eURkSGpjNDhQYmRhS3gyWWxBS2YwL3pzTnhWd0hSU1FDdEN5NTJJdjFJUERMQ0tYVEkxL2NQVnFwT3FsY3NyeTBqV1ZuUDdDSi83MWtnQjFQYVk0d0gxZisvNlh0VERpdFNRYnFtUnVFL0xoV1k0a011cStkSGdsdmttUHhYMi9VZHFBVzQ3VW9odFE0Z1lCMDl3RnNnRDNRTU9YUDc4aVNleHhPbXA0VVZrMGdUS2FCTDdwR0xYSDRsSWY4c3J5MGpXVm5QN0NKLzcxa2dCMVBhQTFybnBRS240ek8zd2lYem1yTUVJSkphVmxGTW93TE1LQThPalZ4KzR0RDVjemFxR1JrZzhFeWp3THBzMklSOUZrbklIb3hoYldtbDlsckZURElSWGhvL1R4NkkwTTRUMHY0Y0JkZnZvcGFJR21PWk1YYXl3MUhVN3VQakJNNVdNK3p5c2tQQ284dnM4Sm5NbGQwdkhSUHBuR293d1VBL3hYMi9MZjRiTDU4NlVNdnNPL1BPdzVDY3I3OXNKemlmTEs4dEkxbFp6K3dpZis5WklBZFQySWd5bXRaTndoWnUxTEJZMmRGcHFjODZVTXZzTy9QT3c1Q2NyNzlzSnppZkxLOHRJMWxaeit3aWYrOVpJQWRUMkc5cDdnUU0rUWV4NmhjMHp2bkUyY3BxYm1wMzRwNkNTUVJJNGJ5UkJCNm5PbERMN0R2enpzT1FuSysvYkNjNG51NjJFWFFQdlo0bnhaaTBScGdMRDJjc3J5MGpXVm5QN0NKLzcxa2dCMVBZVFhNT2s3L3hFM3g0Tkh1NG1BdEZHeXl2TFNOWldjL3NJbi92V1NBSFU5bUV3WXBObW1qTmM5SDdmL3NJSnVHN3RXSWdxZ2cwcTNOQlBDM3hmUExObzBPcm1qQ0tWWFEvYmR6bURrL295allrdEhmTDROZk5mUGw5blBUcmZzQnZXUGtjYytxTUlxYndXQ1dVK1l4cVF3Z0VHNXNCcFF4QUh6b3NxcmFpMFBjc3J5MGpXVm5QN0NKLzcxa2dCMVBhZTZPeis0cTZBQTBod2UvaTJXNnV3TjByZWpDVjRnc2xtYWlzVEMrOTZWTXNyeTBqV1ZuUDdDSi83MWtnQjFQYUl6bTZ3N3NLTVlxZ0tKditGM3ZkWGhuYUZuUDJsb0FEM3JuSkVKRlBvVkFqaU54aWg3S1FVak51SlBCTDBwaEpjMVlaTHJkQVN5Sm5lYldUY1VETTJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlqY0J2OVkxdCt4N1U4aTdXM3RHTXVxR2RvV2MvYVdnQVBldWNrUWtVK2hVU2Z1NVJiSWNuTEVHM3llcVVJTitaSjVXcWVUekFObkE5RWU2d2VHMi93MWZwRUJSYlRlWXdDOW90U1JqSVN3aEpqZWgrNEwxaHpiMTZ2ZUUzVlJEWWNzcnkwaldWblA3Q0ovNzFrZ0IxUFk0OTltcDhTcy9DM3g4bVdpamNVZWgwMjJjbCt5MGdZVGxBTzh2YU1QcnhvbVUzS0JqVzlPREdlM2VoNE4yTTcxYlZYYnFpS1VWakpjVm42L3NRY1R3Z09MM25jT2M5T2tSWUV5WER3aXpMQjNUMGtQKzRDZ2MyZkZLcHVSeGgzbXdPNXNsRmZvZ05rL09QeTNCRHBKeVdiZFZDOEtpZitJcDNlUGo5S0lBNEVnZWJoYzM4bHJ0YzJCMGtYRS8wOHZMSzh0STFsWnord2lmKzlaSUFkVDJsZ21JNTAvMXY4RVR0NFJOZDkrVlNZWjl0c20xZFloU1BTbzJUUFhsc0lmT2xETDdEdnp6c09RbksrL2JDYzRuYTdHNVFMVUQ0ZW9HeW5HanhTeFhHc3NyeTBqV1ZuUDdDSi83MWtnQjFQYVJHZHc1bTljU0o1SVNucndHbkdtd2p2QkFyeklkY081aEs3UkRlY1l0L0FlTTVYam9jNklyakNVaDZvRTROTCs4TS9jQStqY1RvVEVTQWZIQzRlK2VsNjVUSHpkeDdXN00xMy9lT1NOTjZFbXMvMkR6Y3hQeTFMcmJRZDVlYmJJVDNnZUJjT1U0bmQ5UktaZnp4KzlNd1NmT0F1bmZFQk9qcFptYUhNbC9hTVVDZlNGWmVkMTZwVGoxZnptVjc0ZmxjVkVseDdsRkpLeEFadUZ5aHAwVFYrSE1hTVFvVWZUcC84WUZjWXVud0pOSGloTW95dUxjTjB4YVhkL0RtM1hhNWd6VndyNFY2MU5PemFRSzFNN3B2T3QzUElUWW9Gdm1DZmRoYjdTUWlqZmRsOU94TmNvTnZNWllXZysxekxuTEs4dEkxbFp6K3dpZis5WklBZFQyM1NnV2wvZ3paODBHSXc4aGFnVG5JZUFwRUJhcVU1amowSyttU1JJMDR0eHVsd3liRGJtU3VwKzVlYmZVQ09BOGtKV0E2L1RaS0wzN3Z2T3k0WW9QaU45R3RGT1B6RTc2cFErYVVSM00rWDh2N2crdkxGWmRORElMcWpRaGJjcitSK2VMQUlMb1ZpOUJJTG1JMWVCK080UnZVSk5ybml4TndZTVJ1QUUzeFo5Rm9aRnlWSEl1MG4yakJsbHJJbjJ0SkN3WDIybGxHN0NvYUZCN2haSnhNRVdoa1hKVWNpN1NmYU1HV1dzaWZhMW5Nc2NtWmpreEFqSlQ1eTZWZ2p4cnQvajZXYTZHQkw2dnpSZXZta3V4RjhzcnkwaldWblA3Q0ovNzFrZ0IxUGJXN0hTRXlmRnhTbjdVUE5pRk11UnJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlxTys1ek90QkJUUWpaUUJyeFFsMCs0emdrMS9pTkpINFFFMzBjcDlDSlkwSGVGVUI4NVpQaHJTZm4ycXROOXNNTXNyeTBqV1ZuUDdDSi83MWtnQjFQYllSaEViM3p4UzhEVVExV1dzME4yTzlES3RzNXUySHo0bFJ6dGoza3JJUHhFYU9ObklWd2xEOURwb2x1L1F1a1JiVlhicWlLVVZqSmNWbjYvc1FjVHdXaFJRYnI0SVZyQTdTb1Azb1l0SEdCdHBoMk9raTNxYTlUK1ZmZzlEQmJqbkV0cnJ6WnFWcEpIQ0VWVXVFaGFsT1BRdit4RzdPcUxDTzVVaVhOL0tiWXhhSElMMGVGVEYyTkVwT2tsbmw4SGFmSnJPT2h1dFYvZU1ORGNJR0ZqSjc3Qis4UURmUEtkQUJVcG1sb2hpdnpGVmNLbS8yN0dibkxBMnBmNlBDYkRMSzh0STFsWnord2lmKzlaSUFkVDJ1Rmt2ZTRTdTVkNGRiVXlrWTBuaWRUYU9rbGI3VExZeU4xNXg2WFN1M2o1OW9IMG1xaWpUNmtmSm9pZ0hTa2EvbnQ1UDhnMVhNWjZZWVk2ZElWSG5SUHpQZFdXK052SlRsaFgxSTdJV0RKT2Yza1lzckpEWHI4bmNzbHdRWmZscndnRUc1c0JwUXhBSHpvc3FyYWkwUGVMSTk5WXJCQkIxcG9vVUR3YnVhUXdyMHFrU2xSV1BZZ1BlUFZqbkJOY2g5NG14NXRUSDJGUXd5V3VRcTN0eVV1N1pSYU1VUHlnVnQ3ZHlaVE9DeVRLd3lIYWNTSU5wUXE2RzVTeldqSisvbUljTnJ3djQyb3QwUWFYdWtKR0t4dFMreUtYQ1V5bVJvZktRQ2ZxVlhJeHVkZ0crU2l6bzJUejJTL04yZEt0OGUxTWdYNzdwM2VKNUNwUFhONlBjQ1pLRUFEVjR6OU8yZWxDL3dtSFVzNi91MVo1V2oxYVVvdnRNTDdKOEgrL0NXMkVKNGF2allYQlArWHBJZHBKcWEwRzllUTI5dTJYREpvRFc0bWx3dGNSMXhKa2VrdmN6Zm5lZnZBQWdYYXpqZk5sWWhoNHJ0RTFYNFFlMm5zclR2RFNLN2lUTE8rZDRnbDM3eXQyNDhFUHlIQVNVM0NYV0dBMG5ZOUUvTi9zK3dIMEJmVjlzUFlFQVZWRytNZ0hMbDM3czYvMmhzQ3RyWXZWWUpLYmdMRVg3N01XVWhzUDdFTk5CMFZaQlVlMWlEeFVJSHRtVERpMGQ0dXVhckFqSFRwcGY1b1ByLzVtNW9TY3dDODNPdnBrakUzM25SS1MzTjRSMVlkeUQzKzF4WkM0VVphYWZGb2gwSnQ3NDlJcXZzVkM2T21lVVNDYWpncUlobmpxb2xvUlY5cWRxR3ovTFNKbkZ4SXZROGtCeFxcXCIpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Zi/6YeM5LiA57qnXCIsXCJwYXRoXCI6XCJzaGFyaWRcIixcInJ1bGVcIjpcImpzOlxcbi8vdmFyIGl0ZW1zID0gW107XFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShfZGF0ZSwgX2ZtdCkge1xcbiAgICBsZXQgZm10ID0gX2ZtdCB8fCBcXFwieXl5eS1NTS1kZCBISDptbTpzc1xcXCI7XFxuICAgIGNvbnN0IGRhdGUgPSAhaXNOYU4oX2RhdGUpID8gbmV3IERhdGUoX2RhdGUgKiAxMDAwKSA6IG5ldyBEYXRlKF9kYXRlKTtcXG4gICAgY29uc3QgbyA9IHtcXG4gICAgICAgIFxcXCJNK1xcXCI6IGRhdGUuZ2V0TW9udGgoKSArIDEsIC8v5pyI5Lu9IFxcbiAgICAgICAgXFxcImQrXFxcIjogZGF0ZS5nZXREYXRlKCksIC8v5pelIFxcbiAgICAgICAgXFxcImgrXFxcIjogZGF0ZS5nZXRIb3VycygpICUgMTIgPT0gMCA/IDEyIDogZGF0ZS5nZXRIb3VycygpICUgMTIsXFxuICAgICAgICBcXFwiSCtcXFwiOiBkYXRlLmdldEhvdXJzKCksIC8v5bCP5pe2IFxcbiAgICAgICAgXFxcIm0rXFxcIjogZGF0ZS5nZXRNaW51dGVzKCksIC8v5YiGIFxcbiAgICAgICAgXFxcInMrXFxcIjogZGF0ZS5nZXRTZWNvbmRzKCksIC8v56eSIFxcbiAgICAgICAgXFxcInErXFxcIjogTWF0aC5mbG9vcigoZGF0ZS5nZXRNb250aCgpICsgMykgLyAzKSwgLy/lraPluqYgXFxuICAgICAgICBcXFwiU1xcXCI6IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLy/mr6vnp5IgXFxuICAgIH07XFxuICAgIGlmICgvKHkrKS8udGVzdChmbXQpKSB7XFxuICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChkYXRlLmdldEZ1bGxZZWFyKCkgKyBcXFwiXFxcIikuc3Vic3RyKDQgLSBSZWdFeHAuJDEubGVuZ3RoKSk7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgayBpbiBvKSB7XFxuICAgICAgICBpZiAobmV3IFJlZ0V4cChcXFwiKFxcXCIgKyBrICsgXFxcIilcXFwiKS50ZXN0KGZtdCkpIHtcXG4gICAgICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChSZWdFeHAuJDEubGVuZ3RoID09IDEpID8gKG9ba10pIDogKChcXFwiMDBcXFwiICsgb1trXSkuc3Vic3RyKChcXFwiXFxcIiArIG9ba10pLmxlbmd0aCkpKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gZm10O1xcbn07XFxuXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShzaXplKSB7XFxuICAgIGlmICghc2l6ZSkge1xcbiAgICAgICAgcmV0dXJuICcnO1xcbiAgICB9XFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxuICAgIGxldCBpID0gMDtcXG4gICAgd2hpbGUgKHNpemUgPj0gMTAyNCkge1xcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgaSsrO1xcbiAgICB9XFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcbn1cXG4vL2xvZyhyZWFsdXJsKTtcXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxufVxcbmlmIChNWV9QQUdFID4gMSAmJiBnZXRNeVZhcignbmV4dHBhZ2UnLCAnJykgPT0gJycpIHtcXG4gICAgbG9nKCfmsqHmnInkuIvkuIDpobUnKTtcXG59IGVsc2Uge1xcbiAgICB0cnkge1xcbiAgICAgICAgLy92YXIgcmVmdG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL3h5cS9hbGl0b2tlbi5qc29uJywge30pKS5yZWZyZXNoX3Rva2VuO1xcbiAgICAgICAgdmFyIHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcbiAgICAgICAgdmFyIHNoYXJlSWQgPSBkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuc3BsaXQoJ2NvbS9zLycpWzFdLnN1YnN0cmluZygwLCAxMSk7XFxuICAgICAgICBsZXQgZ2V0c2hhciA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL3NoYXJlX2xpbmsvZ2V0X3NoYXJlX2J5X2Fub255bW91cycsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIn0nLFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBwdXNobmFtZSA9IEpTT04ucGFyc2UoZ2V0c2hhcikuZmlsZV9pbmZvc1swXS5maWxlX25hbWU7XFxuICAgICAgICAvL3ZhciBsaXN0eXAgPSBKU09OLnBhcnNlKGdldHNoYXIpLmZpbGVfaW5mb3NbMF0udHlwZTtcXG4gICAgICAgIC8vdmFyIHBmaWxlaWQgPSBKU09OLnBhcnNlKGdldHNoYXIpLmZpbGVfaW5mb3NbMF0uZmlsZV9pZDtcXG5cXG4gICAgICAgIHZhciBzaGFyZXRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL3NoYXJlX2xpbmsvZ2V0X3NoYXJlX3Rva2VuJywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfcHdkXFxcIjpcXFwiXFxcIixcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwifScsXFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgIH0pKS5zaGFyZV90b2tlbjtcXG4gICAgICAgIC8vbG9nKHNoYXJldG9rZW4pO1xcblxcbiAgICAgICAgbGV0IG5leHQgPSBnZXRNeVZhcignbmV4dHBhZ2UnLCAnJykgIT0gJycgPyAnLFxcXCJtYXJrZXJcXFwiOlxcXCInICsgZ2V0TXlWYXIoJ25leHRwYWdlJykgKyAnXFxcIicgOiAnJztcXG4gICAgICAgIGlmICghZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLmluY2x1ZGVzKCcvZm9sZGVyLycpKSB7XFxuICAgICAgICAgICAgLy9pZighbGlzdHlwID09ICdmb2xkZXInKXtcXG4gICAgICAgICAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIixcXFwicGFyZW50X2ZpbGVfaWRcXFwiOlxcXCJyb290XFxcIixcXFwibGltaXRcXFwiOjEwMCxcXFwiaW1hZ2VfdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXCI6XFxcImltYWdlL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJ2aWRlb190aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcInZpZGVvL3NuYXBzaG90LHRfMTAwMCxmX2pwZyxhcl9hdXRvLHdfMzAwXFxcIixcXFwib3JkZXJfYnlcXFwiOlxcXCJuYW1lXFxcIixcXFwib3JkZXJfZGlyZWN0aW9uXFxcIjpcXFwiQVNDXFxcIicgKyBuZXh0ICsgJ30nLFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIC8vbG9nKHJlc2NvZCk7XFxuICAgICAgICAgICAgdmFyIGxpc3R5cCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS50eXBlO1xcbiAgICAgICAgICAgIHZhciBwZmlsZWlkID0gSlNPTi5wYXJzZShyZXNjb2QpLml0ZW1zWzBdLmZpbGVfaWQ7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSAnZm9sZGVyJztcXG4gICAgICAgICAgICB2YXIgcGZpbGVpZCA9IGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5zcGxpdCgnZm9sZGVyLycpWzFdXFxuXFxuICAgICAgICB9XFxuICAgICAgICAvL2xvZyhodG1sKTtcXG4gICAgICAgIGlmIChsaXN0eXAgPT0gJ2ZvbGRlcicpIHtcXG4gICAgICAgICAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIixcXFwicGFyZW50X2ZpbGVfaWRcXFwiOlxcXCInICsgcGZpbGVpZCArICdcXFwiLFxcXCJsaW1pdFxcXCI6MTAwLFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcImltYWdlL3Jlc2l6ZSx3XzE2MC9mb3JtYXQsanBlZ1xcXCIsXFxcImltYWdlX3VybF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2VcXFxcL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJ2aWRlb190aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcInZpZGVvL3NuYXBzaG90LHRfMTAwMCxmX2pwZyxhcl9hdXRvLHdfMzAwXFxcIixcXFwib3JkZXJfYnlcXFwiOlxcXCJuYW1lXFxcIixcXFwib3JkZXJfZGlyZWN0aW9uXFxcIjpcXFwiQVNDXFxcIicgKyBuZXh0ICsgJ30nLFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgfSAvL+WPluaWh+S7tuWkuVxcbiAgICAgICAgLy9sb2cocmVzY29kKTtcXG5cXG4gICAgICAgIGlmIChKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXIpIHtcXG4gICAgICAgICAgICBsZXQgbWFya2VyID0gSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyO1xcbiAgICAgICAgICAgIGlmIChtYXJrZXIubGVuZ3RoID4gMTApIHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ25leHRwYWdlJywgbWFya2VyKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBjb250cyA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtczsgICAgICAgIFxcbiAgICAgICAgdmFyIHR1aXNvbmcgPSBbXTtcXG4gICAgICAgIGZvciAodmFyIGkgaW4gY29udHMpIHtcXG4gICAgICAgICAgICB2YXIgbGlzdHlwID0gY29udHNbaV0udHlwZTtcXG4gICAgICAgICAgICBpZiAobGlzdHlwICE9ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgICAgIHZhciBjYXRlID0gY29udHNbaV0uY2F0ZWdvcnk7XFxuICAgICAgICAgICAgICAgIHZhciBmbmFtZSA9IGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5O6JyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnZG9jJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk5YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdpbWFnZScpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5a8JyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnemlwJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk6YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGNvbnRzW2ldLm5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChjb250c1tpXS5maWxlX2lkKS5sYXp5UnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FsaWxhenlcXFwiKShzaGFyZUlkLCBpbnB1dCwgY2F0ZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZm9ybWF0RGF0ZShjb250c1tpXS51cGRhdGVkX2F0KSArICcgICcgKyBmb3JtYXRTaXplKGNvbnRzW2ldLnNpemUpLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogY29udHNbaV0uZmlsZV9pZFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcblxcbiAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ/Cfk4InICsgY29udHNbaV0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eScgKyBjb250c1tpXS5maWxlX2lkICsgJz8/P2Z5cGFnZScpLnJ1bGUoKHNoYXJlSWQsIHNoYXJldG9rZW4sIHB1c2huYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcnVsZWxvb3AnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgY29udHNbaV0ubmFtZSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICB9IC8vZW5kIGlmXFxuICAgICAgICB9IC8vZW5kIGZvciBpXFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5qyn5qyn77yM5oql6ZSZ5LqG44CCJyxcXG4gICAgICAgICAgICB1cmw6IGRlY29kZVVSSUNvbXBvbmVudChnZXRSZXNDb2RlKCkuc3BsaXQoJyMjJylbMV0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbi8qXFxuc2V0SG9tZVJlc3VsdCh7XFxuICAgIGRhdGE6IGl0ZW1zXFxufSk7XFxuKi9cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumYv+mHjOW1jOWll1wiLFwicGF0aFwiOlwicnVsZWxvb3BcIixcInJ1bGVcIjpcInZhciBpdGVtcyA9IFtdO1xcblxcbmZ1bmN0aW9uIGZvcm1hdERhdGUoX2RhdGUsIF9mbXQpIHtcXG4gICAgbGV0IGZtdCA9IF9mbXQgfHwgXFxcInl5eXktTU0tZGQgSEg6bW06c3NcXFwiO1xcbiAgICBjb25zdCBkYXRlID0gIWlzTmFOKF9kYXRlKSA/IG5ldyBEYXRlKF9kYXRlICogMTAwMCkgOiBuZXcgRGF0ZShfZGF0ZSk7XFxuICAgIGNvbnN0IG8gPSB7XFxuICAgICAgICBcXFwiTStcXFwiOiBkYXRlLmdldE1vbnRoKCkgKyAxLCAvL+aciOS7vSBcXG4gICAgICAgIFxcXCJkK1xcXCI6IGRhdGUuZ2V0RGF0ZSgpLCAvL+aXpSBcXG4gICAgICAgIFxcXCJoK1xcXCI6IGRhdGUuZ2V0SG91cnMoKSAlIDEyID09IDAgPyAxMiA6IGRhdGUuZ2V0SG91cnMoKSAlIDEyLFxcbiAgICAgICAgXFxcIkgrXFxcIjogZGF0ZS5nZXRIb3VycygpLCAvL+Wwj+aXtiBcXG4gICAgICAgIFxcXCJtK1xcXCI6IGRhdGUuZ2V0TWludXRlcygpLCAvL+WIhiBcXG4gICAgICAgIFxcXCJzK1xcXCI6IGRhdGUuZ2V0U2Vjb25kcygpLCAvL+enkiBcXG4gICAgICAgIFxcXCJxK1xcXCI6IE1hdGguZmxvb3IoKGRhdGUuZ2V0TW9udGgoKSArIDMpIC8gMyksIC8v5a2j5bqmIFxcbiAgICAgICAgXFxcIlNcXFwiOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC8v5q+r56eSIFxcbiAgICB9O1xcbiAgICBpZiAoLyh5KykvLnRlc3QoZm10KSkge1xcbiAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoZGF0ZS5nZXRGdWxsWWVhcigpICsgXFxcIlxcXCIpLnN1YnN0cig0IC0gUmVnRXhwLiQxLmxlbmd0aCkpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IGsgaW4gbykge1xcbiAgICAgICAgaWYgKG5ldyBSZWdFeHAoXFxcIihcXFwiICsgayArIFxcXCIpXFxcIikudGVzdChmbXQpKSB7XFxuICAgICAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoUmVnRXhwLiQxLmxlbmd0aCA9PSAxKSA/IChvW2tdKSA6ICgoXFxcIjAwXFxcIiArIG9ba10pLnN1YnN0cigoXFxcIlxcXCIgKyBvW2tdKS5sZW5ndGgpKSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIGZtdDtcXG59O1xcblxcbmZ1bmN0aW9uIGZvcm1hdFNpemUoc2l6ZSkge1xcbiAgICBpZiAoIXNpemUpIHtcXG4gICAgICAgIHJldHVybiAnJztcXG4gICAgfVxcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xcbiAgICBsZXQgaSA9IDA7XFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXG4gICAgICAgIHNpemUgLz0gMTAyNDtcXG4gICAgICAgIGkrKztcXG4gICAgfVxcbiAgICBzaXplID0gaSA/IE51bWJlcihzaXplLnRvRml4ZWQoMikpIDogc2l6ZTtcXG4gICAgcmV0dXJuIGAke3NpemV9ICR7dW5pdHNbaV19YDtcXG59XFxuLy9sZXQgdHZpcCA9IGdldEl0ZW0oJ2hpa2VydHZib3hzZXQnLCAnJyk7XFxuXFxuLy9sb2coZ2V0UmVzQ29kZSgpKTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxufVxcbmlmIChNWV9QQUdFID4gMSAmJiBnZXRNeVZhcignbmV4dHBhZ2UnLCAnJykgPT0gJycpIHtcXG4gICAgbG9nKCfmsqHmnInkuIvkuIDpobUnKTtcXG59IGVsc2Uge1xcbiAgICBsZXQgcmVmdG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb24nLCB7fSkpWzBdLnJlZnJlc2hfdG9rZW47XFxuXFxuICAgIGxldCBuZXh0ID0gZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpICE9ICcnID8gJyxcXFwibWFya2VyXFxcIjpcXFwiJyArIGdldE15VmFyKCduZXh0cGFnZScpICsgJ1xcXCInIDogJyc7XFxuXFxuICAgIHZhciByZXNjb2QgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9maWxlL2xpc3QnLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAnWC1TaGFyZS1Ub2tlbic6IHNoYXJldG9rZW5cXG4gICAgICAgIH0sXFxuICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwiJyArIGdldFJlc0NvZGUoKS5zcGxpdCgnPz8/JylbMF0gKyAnXFxcIixcXFwibGltaXRcXFwiOjEwMCxcXFwiaW1hZ2VfdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXCI6XFxcImltYWdlXFxcXC9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgIH0pO1xcbiAgICAvL2xvZyhyZXNjb2QpO1xcbiAgICBpZiAoSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyKSB7XFxuICAgICAgICBsZXQgbWFya2VyID0gSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyO1xcbiAgICAgICAgaWYgKG1hcmtlci5sZW5ndGggPiAxMCkge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCduZXh0cGFnZScsIG1hcmtlcik7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgdmFyIGNvbnRzID0gSlNPTi5wYXJzZShyZXNjb2QpLml0ZW1zO1xcbiAgICB2YXIgdHVpc29uZyA9IFtdO1xcbiAgICBmb3IgKHZhciBpIGluIGNvbnRzKSB7XFxuXFxuICAgICAgICB2YXIgbGlzdHlwID0gY29udHNbaV0udHlwZTtcXG4gICAgICAgIGlmIChsaXN0eXAgIT0gJ2ZvbGRlcicpIHtcXG4gICAgICAgICAgICB2YXIgY2F0ZSA9IGNvbnRzW2ldLmNhdGVnb3J5O1xcbiAgICAgICAgICAgIHZhciBmbmFtZSA9IGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgaWYgKGNhdGUgPT0gJ3ZpZGVvJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TuicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnZG9jJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TlicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnaW1hZ2UnKSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5a8JyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICd6aXAnKSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5OmJyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gY29udHNbaV0ubmFtZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29udHNbaV0uZmlsZV9pZCkubGF6eVJ1bGUoKHNoYXJlSWQsIHNoYXJldG9rZW4sIGNhdGUsIGZuYW1lLCByZWZ0b2tlbikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FsaWxhenlcXFwiKShzaGFyZUlkLCBpbnB1dCwgY2F0ZSk7XFxuICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNhdGUsIGZuYW1lLCByZWZ0b2tlbiksXFxuICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoY29udHNbaV0udXBkYXRlZF9hdCkgKyAnICAnICsgZm9ybWF0U2l6ZShjb250c1tpXS5zaXplKSxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBjb250c1tpXS5maWxlX2lkXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcblxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5OCJyArIGNvbnRzW2ldLm5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eScgKyBjb250c1tpXS5maWxlX2lkICsgJz8/P2Z5cGFnZScpLnJ1bGUoKHNoYXJlSWQsIHNoYXJldG9rZW4sIHB1c2huYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9ydWxlbG9vcCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNvbnRzW2ldLm5hbWUpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgfSAvL2VuZCBpZlxcblxcbiAgICB9XFxufVxcbnNldFJlc3VsdChpdGVtcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpmL/ph4zmjqjpgIFcIixcInBhdGhcIjpcInB1c2hcIixcInJ1bGVcIjpcImpzOlxcbi8vbG9nKE1ZX1VSTCk7XFxudmFyIGl0ZW1zID0gW107XFxudmFyIHJlYWx1cmwgPSBNWV9VUkwuc3BsaXQoJyMjJylbMV0uc3BsaXQoJz8/PycpWzBdO1xcbmlmIChkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuaW5jbHVkZXMoJ3d3dy5hbGl5dW5kcml2ZScpICYmICFyZWFsdXJsLmluY2x1ZGVzKCclM0IlN0InKSkge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9zaGFyaWQnLCB7fSkpLnJ1bGUpXFxufVxcbnNldFJlc3VsdChpdGVtcyk7XCJ9XSxcInBhcmFtc1wiOlwie1xcXCJpZFxcXCI6XFxcIl9fYXBwMUAzXFxcIixcXFwiaW5oZXJpdFRpdGxlXFxcIjpmYWxzZX1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi5LqR55uY5ZCbXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9lbXB0eSMjaHR0cHMlM0ElMkYlMkZ3d3cuYWxpeXVuZHJpdmUuY29tJTJGcyUyRjNGR25DOEt4Wk1qPz8/ZnlwYWdlXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG4vL2xvZyhNWV9VUkwpO1xcbnZhciBpdGVtcyA9IFtdO1xcbnZhciByZWFsdXJsID0gTVlfVVJMLnNwbGl0KCcjIycpWzFdLnNwbGl0KCc/Pz8nKVswXTtcXG5pZiAoZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLmluY2x1ZGVzKCd3d3cuYWxpeXVuZHJpdmUnKSAmJiAhcmVhbHVybC5pbmNsdWRlcygnJTNCJTdCJykpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2Uvc2hhcmlkJywge30pKS5ydWxlKVxcbn1cXG5zZXRSZXN1bHQoaXRlbXMpO1wiLFwiZ3JvdXBcIjpcIuKRoOe9keebmFwiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwiXCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuinhOWImeWIl+ihqFxcXCIsXFxcInBhdGhcXFwiOlxcXCJkYXRhXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciB3cmFwdSA9ICh1KSA9PiB7XFxcXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXFxcXFwi5pys5Zyw6L2s56CBXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnXFxcXG4gICAgfVxcXFxuICAgIGlmIChjb25maWcubW9kZSA9PSBcXFxcXFxcIkpvZeeJiOmYv+mHjOS6keebmFxcXFxcXFwiKSB7XFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NoYXJlP3BhZ2U9ZnlwYWdlJnJ1bGU96Zi/6YeM5LqR55uYJnNoYXJlX3VybD0nICsgdTtcXFxcbiAgICB9XFxcXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXFxcXFwi5LqR55uY5rGH5b2xXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZSc7XFxcXG4gICAgfVxcXFxuICAgIGlmICgvYWxpeXVuZHJpdmUvLnRlc3QodSkpIHtcXFxcbiAgICAgICAgY29uc3QgW2xpbmssIF9zaGFyZV9wd2RdID0gdS5zcGxpdCgnP3NoYXJlX3B3ZD0nKTtcXFxcbiAgICAgICAgY29uc3QgW19saW5rLCBfZm9sZGVySURdID0gbGluay5zcGxpdCgnL2ZvbGRlci8nKTtcXFxcbiAgICAgICAgbGV0IHNoYXJlX3B3ZCA9IChfc2hhcmVfcHdkIHx8ICcnKS5zcGxpdCgnI25hbWU9JylbMF0gfHwgJyc7XFxcXG4gICAgICAgIGxldCBzaGFyZUlkID0gX2xpbmsuc3BsaXQoJ2NvbS9zLycpWzFdO1xcXFxuICAgICAgICByZXR1cm4gJ3NtYXJ0ZHJpdmU6Ly9zaGFyZS9icm93c2U/c2hhcmVJZD0nICsgc2hhcmVJZCArICcmc2hhcmVQd2Q9JyArIHNoYXJlX3B3ZDtcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIFxcXFxcXFwid2ViOi8vXFxcXFxcXCIgKyB1O1xcXFxufTtcXFxcbmxldCBydWxlcyA9IFt7XFxcXG4gICAgbmFtZTogXFxcXFxcXCLkupHnm5jotYTmupBcXFxcXFxcIixcXFxcbiAgICBwYWdlOiB0cnVlLFxcXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXFxcbiAgICAgICAgbGV0IHVybCA9IFxcXFxcXFwiaHR0cHM6Ly9yZXMueXVucGFuLndpbi8/UGFnZUluZGV4PVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiJlBhZ2VTaXplPTEyJktleXdvcmQ9XFxcXFxcXCIgKyBzICsgXFxcXFxcXCImVHlwZT0mVGFnPVxcXFxcXFwiO1xcXFxuICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly9yZXMueXVucGFuLndpbi9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFxcXFxcIm1haW4mJi5jYXJkXFxcXFxcXCIpO1xcXFxuICAgICAgICAvL2xvZyhhcnIpO1xcXFxuICAgICAgICBsZXQgZCA9IFtdO1xcXFxuXFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxcXG4gICAgICAgICAgICBsZXQgdSA9IHBkZmgoaXQsIFxcXFxcXFwiLmNhcmQtbGluaywxJiZvbmNsaWNrXFxcXFxcXCIpLm1hdGNoKC9odHRwczpcXFxcXFxcXC9cXFxcXFxcXC8od3d3XFxcXFxcXFwuYWxpeXVuZHJpdmVcXFxcXFxcXC5jb21cXFxcXFxcXC9zfGFseXdwXFxcXFxcXFwubmV0KVxcXFxcXFxcL1xcXFxcXFxcdyovZykgfHwgW107XFxcXG4gICAgICAgICAgICB1ID0gdS5sZW5ndGggPiAwID8gdVswXSA6IHVybDtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsIFxcXFxcXFwiLmNhcmQtdGl0bGUmJlRleHRcXFxcXFxcIiksXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGQoaXQsIFxcXFxcXFwiaW1nJiZzcmNcXFxcXFxcIiwgdXJsKSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5LqR55uY6LWE5rqQPC9mb250PiZuYnNwO1xcXFxcXFwiICsgKHBkZmgoaXQsIFxcXFxcXFwiLmNhcmQtdGV4dCwtMSYmVGV4dFxcXFxcXFwiKSksXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZDtcXFxcbiAgICB9XFxcXG59LCB7XFxcXG4gICAgbmFtZTogXFxcXFxcXCLnjKvni7jnm5jmkJxcXFxcXFxcIixcXFxcbiAgICBwYWdlOiBmYWxzZSxcXFxcbiAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFxcXFxcImh0dHBzOi8vd3d3LmFsaXBhbnNvdS5jb20vc2VhcmNoP2s9XFxcXFxcXCIgKyBzLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuYWxpcGFuc291LmNvbS9zZWFyY2g/az1cXFxcXFxcIiArIHNcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGxldCBhcnIgPSBwZGZhKGh0bWwsIFxcXFxcXFwiI2FwcCYmYVxcXFxcXFwiKTtcXFxcbiAgICAgICAgLy9sb2coYXJyKTtcXFxcbiAgICAgICAgbGV0IGQgPSBbXTtcXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBpdCA9IFxcXFxcXFwiPGRpdj5cXFxcXFxcIiArIGFycltpXSArIFxcXFxcXFwiPC9kaXY+XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICBsZXQgdSA9IHBkZmgoaXQsIFxcXFxcXFwiYSYmaHJlZlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIC8vbG9nKHUpO1xcXFxuICAgICAgICAgICAgaWYgKCF1LmluY2x1ZGVzKFxcXFxcXFwiL3MvXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB1ID0gXFxcXFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tXFxcXFxcXCIgKyB1LnJlcGxhY2UoXFxcXFxcXCIvcy9cXFxcXFxcIiwgXFxcXFxcXCIvY3YvXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgXFxcXFxcXCJ0ZW1wbGF0ZSYmVGV4dFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQodSkubGF6eVJ1bGUoKHdyYXB1KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwibm9fc2hvd19kb25hdGU9MVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBpbnB1dC5yZXBsYWNlKFxcXFxcXFwiL2N2L1xcXFxcXFwiLCBcXFxcXFxcIi9zL1xcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZVxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9saW5rcyA9IGh0bWwubWF0Y2goL2h0dHBzOlxcXFxcXFxcL1xcXFxcXFxcLyh3d3dcXFxcXFxcXC5hbGl5dW5kcml2ZVxcXFxcXFxcLmNvbVxcXFxcXFxcL3N8YWx5d3BcXFxcXFxcXC5uZXQpXFxcXFxcXFwvXFxcXFxcXFx3Ki9nKSB8fCBbXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coX2xpbmtzKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9saW5rcy5sZW5ndGggPiAxICYmIF9saW5rc1sxXS5yZXBsYWNlKF9saW5rc1swXSwgXFxcXFxcXCJcXFxcXFxcIikucmVwbGFjZSgvW2EtekEtWjAtOV0rL2csIFxcXFxcXFwiXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShfbGlua3NbMV0pO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzBdKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0sIHdyYXB1KSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPueMq+eLuOebmOaQnDwvZm9udD4mbmJzcDtcXFxcXFxcIiArIHBkZmgoaXQsIFxcXFxcXFwidGVtcGxhdGUsMSYmVGV4dFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBkO1xcXFxuICAgIH1cXFxcbn0sIHtcXFxcbiAgICBuYW1lOiBcXFxcXFxcIuaYk+aQnFxcXFxcXFwiLFxcXFxuICAgIHBhZ2U6IHRydWUsXFxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcXFxuICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcXFxuXFxcXG4gICAgICAgIGZ1bmN0aW9uIGtleWVuKHN0cikge1xcXFxuICAgICAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXFxcXFwiNE9Ub1NjVUZPYWVWVHJIRVxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXFxcXFwiOUNMR2FvMXZIS3FtMTdPelxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHZhciBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdCh7XFxcXG4gICAgICAgICAgICAgICAgY2lwaGVydGV4dDogQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZShzdHIpXFxcXG4gICAgICAgICAgICB9LCBrZXksIHtcXFxcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxcXG4gICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxcXG4gICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxcXG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFxcXFxcImh0dHBzOi8veWlzby5mdW4vYXBpL3NlYXJjaD9uYW1lPVxcXFxcXFwiICsgcyArIFxcXFxcXFwiJnBhZ2VObz1cXFxcXFxcIiArIHBhZ2UsIHtcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3lpc28uZnVuL2luZm8/c2VhcmNoS2V5PVxcXFxcXFwiICsgcyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcIkNvb2tpZVxcXFxcXFwiOiBcXFxcXFxcInNhdG9rZW49Mjg1NGNiNTgtMzg4NC00NzNiLTg0YzQtMzQxNjFmNjdhNDA5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIC8vbG9nKGh0bWwpO1xcXFxuICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLmxpc3Q7XFxcXG4gICAgICAgIC8vbG9nKGFycik7XFxcXG4gICAgICAgIGxldCBkID0gW107XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxcXG4gICAgICAgICAgICBsZXQgdSA9IGtleWVuKGl0LnVybCk7XFxcXG4gICAgICAgICAgICAvL2xvZyh1KTtcXFxcbiAgICAgICAgICAgIGlmICh1ID09IG51bGwgfHwgIXUuaW5jbHVkZXMoXFxcXFxcXCJhbGl5dW5cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIgKyBpdC5uYW1lLFxcXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQodSkgKyAnPz8/ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5piT5pCcPC9mb250PiZuYnNwO1xcXFxcXFwiICsgKGl0LmdtdFNoYXJlIHx8IGl0LmdtdENyZWF0ZSksXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZDtcXFxcbiAgICB9XFxcXG59LCB7XFxcXG4gICAgbmFtZTogXFxcXFxcXCLlsI/nurjmnaFcXFxcXFxcIixcXFxcbiAgICBwYWdlOiBmYWxzZSxcXFxcbiAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxcXG4gICAgICAgIGZ1bmN0aW9uIGNhdF9jb2RlKGEpIHtcXFxcbiAgICAgICAgICAgIHZhciBkLCBlLCBiID0gW1xcXFxcXFwi5Y2O6K+t55S16KeGXFxcXFxcXCIsIFxcXFxcXFwi5pel6Z+p55S16KeGXFxcXFxcXCIsIFxcXFxcXFwi5qyn576O55S16KeGXFxcXFxcXCIsIFxcXFxcXFwi5YW25LuW55S16KeGXFxcXFxcXCIsIFxcXFxcXFwi5Y2O6K+t55S15b2xXFxcXFxcXCIsIFxcXFxcXFwi5pel6Z+p55S15b2xXFxcXFxcXCIsIFxcXFxcXFwi5qyn576O55S15b2xXFxcXFxcXCIsIFxcXFxcXFwi5YW25LuW55S15b2xXFxcXFxcXCIsIFxcXFxcXFwi5Y2O6K+t5Yqo5ryrXFxcXFxcXCIsIFxcXFxcXFwi5pel6Z+p5Yqo5ryrXFxcXFxcXCIsIFxcXFxcXFwi5qyn576O5Yqo5ryrXFxcXFxcXCIsIFxcXFxcXFwi57qq5b2V54mHXFxcXFxcXCIsIFxcXFxcXFwi57u86Im654mHXFxcXFxcXCIsIFxcXFxcXFwi5pWZ6IKy5Z+56K6tXFxcXFxcXCIsIFxcXFxcXFwi5YW25LuW6KeG6aKRXFxcXFxcXCIsIFxcXFxcXFwi5Y2O6K+t6Z+z5LmQXFxcXFxcXCIsIFxcXFxcXFwi5pel6Z+p6Z+z5LmQXFxcXFxcXCIsIFxcXFxcXFwi5qyn576O6Z+z5LmQXFxcXFxcXCIsIFxcXFxcXFwi5YW25LuW6Z+z5LmQXFxcXFxcXCIsIFxcXFxcXFwi5aix5LmQ6L2v5Lu2XFxcXFxcXCIsIFxcXFxcXFwi57O757uf6L2v5Lu2XFxcXFxcXCIsIFxcXFxcXFwi572R57uc6L2v5Lu2XFxcXFxcXCIsIFxcXFxcXFwi5Yqe5YWs6L2v5Lu2XFxcXFxcXCIsIFxcXFxcXFwi5YW25LuW6L2v5Lu2XFxcXFxcXCIsIFxcXFxcXFwi5ryr55S7XFxcXFxcXCIsIFxcXFxcXFwi5bCP6K+0XFxcXFxcXCIsIFxcXFxcXFwi5Ye654mI5LmmXFxcXFxcXCIsIFxcXFxcXFwi55+l6K+G5Z+56K6tXFxcXFxcXCIsIFxcXFxcXFwi5YW25LuW5paH5qGjXFxcXFxcXCIsIFxcXFxcXFwi5aOB57q4XFxcXFxcXCIsIFxcXFxcXFwi5Lq654mpXFxcXFxcXCIsIFxcXFxcXFwi6aOO5pmvXFxcXFxcXCIsIFxcXFxcXFwi5YW25LuW5Zu+54mHXFxcXFxcXCIsIFxcXFxcXFwi5YW25LuWXFxcXFxcXCJdLFxcXFxuICAgICAgICAgICAgICAgIGMgPSBbXFxcXFxcXCJoeWRzXFxcXFxcXCIsIFxcXFxcXFwicmhkc1xcXFxcXFwiLCBcXFxcXFxcIm9tZHNcXFxcXFxcIiwgXFxcXFxcXCJxdGRzXFxcXFxcXCIsIFxcXFxcXFwiaHlkeVxcXFxcXFwiLCBcXFxcXFxcInJoZHlcXFxcXFxcIiwgXFxcXFxcXCJvbWR5XFxcXFxcXCIsIFxcXFxcXFwicXRkeVxcXFxcXFwiLCBcXFxcXFxcImh5ZG1cXFxcXFxcIiwgXFxcXFxcXCJyaGRtXFxcXFxcXCIsIFxcXFxcXFwib21kbVxcXFxcXFwiLCBcXFxcXFxcImpscFxcXFxcXFwiLCBcXFxcXFxcInp5cFxcXFxcXFwiLCBcXFxcXFxcImp5cHhcXFxcXFxcIiwgXFxcXFxcXCJxdHNwXFxcXFxcXCIsIFxcXFxcXFwiaHl5eVxcXFxcXFwiLCBcXFxcXFxcInJoeXlcXFxcXFxcIiwgXFxcXFxcXCJvbXl5XFxcXFxcXCIsIFxcXFxcXFwicXR5eVxcXFxcXFwiLCBcXFxcXFxcImtmcmpcXFxcXFxcIiwgXFxcXFxcXCJ4dHJqXFxcXFxcXCIsIFxcXFxcXFwid2xyalxcXFxcXFwiLCBcXFxcXFxcImJncmpcXFxcXFxcIiwgXFxcXFxcXCJxdHJqXFxcXFxcXCIsIFxcXFxcXFwibWhcXFxcXFxcIiwgXFxcXFxcXCJ4c1xcXFxcXFwiLCBcXFxcXFxcImNic1xcXFxcXFwiLCBcXFxcXFxcInpzcHhcXFxcXFxcIiwgXFxcXFxcXCJxdHdkXFxcXFxcXCIsIFxcXFxcXFwiYnpcXFxcXFxcIiwgXFxcXFxcXCJyd1xcXFxcXFwiLCBcXFxcXFxcImZqXFxcXFxcXCIsIFxcXFxcXFwicXR0cFxcXFxcXFwiLCBcXFxcXFxcInF0XFxcXFxcXCJdO1xcXFxuICAgICAgICAgICAgZm9yIChkID0gMCwgZSA9IGMubGVuZ3RoOyBlID4gZDsgZCsrKVxcXFxuICAgICAgICAgICAgICAgIGlmIChjW2RdID09IGEpIHJldHVybiBiW2RdO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCBkID0gW107XFxcXG4gICAgICAgIGxldCBodG1sID0gcG9zdChcXFxcXFxcImh0dHBzOi8vZ2l0Y2FmZS5uZXQvdG9vbC9hbGlwYXBlci9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vdS5naXRjYWZlLm5ldC8nXFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgICAgIGFjdGlvbjogXFxcXFxcXCJzZWFyY2hcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBmcm9tOiBcXFxcXFxcIndlYlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGtleXdvcmQ6IHNcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGh0bWwpO1xcXFxuICAgICAgICBpZiAobGlzdC5kYXRhKSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gbGlzdC5kYXRhO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbGV0IGl0ID0gbGlzdFtpXVxcXFxuICAgICAgICAgICAgbGV0IHRpdGxlID0gaXQudGl0bGU7XFxcXG4gICAgICAgICAgICBsZXQgbXVybCA9IGl0LmtleVxcXFxuICAgICAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKHMpKSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuWwj+e6uOadoTwvZm9udD4mbmJzcDtcXFxcXFxcIiArIGNhdF9jb2RlKGl0LmNhdCksXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXM6IGl0LmRlc1xcXFxuICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPWh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyBtdXJsICsgJz8/ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdSgnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvJyArIG11cmwpXFxcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyBtdXJsKSArICc/Pz9meXBhZ2UnLFxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBkO1xcXFxuICAgIH1cXFxcbn0sIHtcXFxcbiAgICBuYW1lOiBcXFxcXFxcIuebmOaQnFxcXFxcXFwiLFxcXFxuICAgIHBhZ2U6IHRydWUsXFxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcXFxuICAgICAgICBwYWdlID0gKHBhZ2UgLSAxKSAqIDEwO1xcXFxuICAgICAgICBsZXQgdXJsID0gXFxcXFxcXCJodHRwczovL3d3dy5wYW5zZWFyY2gubWUvX25leHQvZGF0YS9PMXBLUUt3R3JZN0xsV1pIeHB3SXcvc2VhcmNoLmpzb24/a2V5d29yZD1cXFxcXFxcIiArIHMgKyBcXFxcXFxcIiZvZmZzZXQ9XFxcXFxcXCIgKyBwYWdlICsgXFxcXFxcXCImcGFuPWFsaXl1bmRyaXZlXFxcXFxcXCI7XFxcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwsIHt9KTtcXFxcblxcXFxuICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShodG1sKS5wYWdlUHJvcHMuZGF0YS5kYXRhO1xcXFxuICAgICAgICAvL2xvZyh1cmwpO1xcXFxuICAgICAgICBsZXQgZCA9IFtdO1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcXFxuICAgICAgICAgICAgbGV0IHUgPSBwYXJzZURvbUZvckh0bWwoaXQuY29udGVudCwgJ2EmJmhyZWYnKTtcXFxcbiAgICAgICAgICAgIC8vbG9nKHUpO1xcXFxuICAgICAgICAgICAgLy9sZXQgdSA9IGl0LmNvbnRlbnQubWF0Y2goL2hyZWY9XFxcXFxcXFxcXFxcXFxcIiguKj8pXFxcXFxcXFxcXFxcXFxcIi8pWzFdO1xcXFxuICAgICAgICAgICAgLy91ID0gdS5sZW5ndGggPiAxMCA/IHUgOiB1cmw7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdC5jb250ZW50LnNwbGl0KFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIpWzBdLnJlcGxhY2UoXFxcXFxcXCLlkI3np7DvvJpcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIiksXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaXQuaW1hZ2UsXFxcXG4gICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZScsXFxcXG4gICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcXFxuICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7nm5jmkJw8L2ZvbnQ+Jm5ic3A7XFxcXFxcXCIgKyAoaXQudGltZSksXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZDtcXFxcbiAgICB9XFxcXG59LCB7XFxcXG4gICAgbmFtZTogXFxcXFxcXCLnjqnlgbblk6Xlk6VcXFxcXFxcIixcXFxcbiAgICBwYWdlOiB0cnVlLFxcXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXFxcbiAgICAgICAgbGV0IHVybCA9IFxcXFxcXFwiaHR0cHM6Ly90dmZhbi54eG9vby5jZi9pbmRleC5waHAvdm9kc2VhcmNoL1xcXFxcXFwiICsgcyArIFxcXFxcXFwiLS0tLS0tLS0tLVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiLS0tLmh0bWxcXFxcXFxcIjtcXFxcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge30pO1xcXFxuICAgICAgICBsZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1zZWFyY2gtaXRlbScpO1xcXFxuICAgICAgICAvL2xvZyhhcnIpO1xcXFxuICAgICAgICBsZXQgZCA9IFtdO1xcXFxuICAgICAgICBsZXQgYmV0ID0gW107XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxcXG4gICAgICAgICAgICBsZXQgdXRpdGxlID0gcGFyc2VEb21Gb3JIdG1sKGl0LCAnaDMmJmEmJlRleHQnKTtcXFxcbiAgICAgICAgICAgIGxldCB1c2VyaWFsID0gcGFyc2VEb21Gb3JIdG1sKGl0LCAnLnZpZGVvLXNlcmlhbCYmVGV4dCcpO1xcXFxuICAgICAgICAgICAgbGV0IHVpbWFnZSA9IHBhcnNlRG9tKGl0LCAnLmxhenlsb2FkJiZkYXRhLXNyYycsICdodHRwczovL3R2ZmFuLnh4b29vLmNmLycpO1xcXFxuICAgICAgICAgICAgbGV0IHUgPSBwYXJzZURvbShpdCwgJ2gzJiZhJiZocmVmJywgJ2h0dHBzOi8vdHZmYW4ueHhvb28uY2YvJyk7XFxcXG4gICAgICAgICAgICAvL2xldCBkZXQgPSByZXF1ZXN0KHUsIHt9KTtcXFxcbiAgICAgICAgICAgIGJldC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogdXRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIHVybDogdSxcXFxcbiAgICAgICAgICAgICAgICBpbWFnZTogdWltYWdlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IHVzZXJpYWxcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCBiZXRoID0gYmF0Y2hGZXRjaChiZXQpO1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJldGgubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShiZXRoW2ldLCAnLm1vZHVsZS1wbGF5ZXItbGlzdCYmcCcpXFxcXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAncCYmVGV4dCcpO1xcXFxuICAgICAgICAgICAgICAgIGlmICghdS5pbmNsdWRlcyhcXFxcXFxcIi9zL1xcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGJldFtpXS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogYmV0W2ldLmltYWdlLFxcXFxuICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPueOqeWBtuWTpeWTpTwvZm9udD4mbmJzcDtcXFxcXFxcIiArIChiZXRbaV0uZGVzYykgKyAnXFxcXFxcXFxuJyArIHUsXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIGQ7XFxcXG4gICAgfVxcXFxufSwge1xcXFxuICAgIG5hbWU6IFxcXFxcXFwi5Zyf54uX5pCcXFxcXFxcXCIsXFxcXG4gICAgcGFnZTogZmFsc2UsXFxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcXFxuICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vd3d3LnR1Z291c291LmNvbS9zZWFyY2gnLCB7XFxcXG4gICAgICAgICAgICBib2R5OiAna2V5d29yZD0nICsgcyxcXFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIGxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcubGF5dWktY29udGFpbmVyLDEmJi5sYXl1aS1yb3c6aGFzKGEpJyk7XFxcXG4gICAgICAgIGxldCBkID0gW107XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxcXG4gICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tRm9ySHRtbChpdCwgJ2EmJmhyZWYnKTtcXFxcbiAgICAgICAgICAgIGlmICghdS5pbmNsdWRlcyhcXFxcXFxcIi9zL1xcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgLy9sb2codSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwoaXQsICdhJiZUZXh0JyksXFxcXG4gICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZScsXFxcXG4gICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcXFxuICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7lnJ/ni5fmkJw8L2ZvbnQ+Jm5ic3A7XFxcXFxcXCIgKyBwYXJzZURvbUZvckh0bWwoaXQsICdwLC0xJiZUZXh0JyksXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZDtcXFxcbiAgICB9XFxcXG59LCB7XFxcXG4gICAgbmFtZTogXFxcXFxcXCLkupHnm5jliIbkuqvnpL5cXFxcXFxcIixcXFxcbiAgICBwYWdlOiBmYWxzZSxcXFxcbiAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdCgnaHR0cHM6Ly93d3cueXVucGFuZmVueGlhbmcuY24vYXBpL2Jicy9hcGkvZ2V0ZGF0YTI/a2V5PScgKyBzICsgJyZ0eXBlPXZpZGVvJywge30pO1xcXFxuXFxcXG4gICAgICAgIGxldCBhcnIgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGFbMF0ucmVzdWx0Lml0ZW1zO1xcXFxuICAgICAgICAvL2xvZyhhcnIpO1xcXFxuICAgICAgICBsZXQgZCA9IFtdO1xcXFxuXFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxcXG4gICAgICAgICAgICBsZXQgdSA9IGl0LnBhZ2VfdXJsO1xcXFxuICAgICAgICAgICAgLy9sb2codSk7XFxcXG4gICAgICAgICAgICBpZiAoIXUuaW5jbHVkZXMoXFxcXFxcXCIvcy9cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0LnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcXFxuICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQodSkgKyAnPz8/ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5LqR55uY5YiG5Lqr56S+PC9mb250PiZuYnNwO1xcXFxcXFwiICsgKGl0Lmluc2VydF90aW1lKSxcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgcmV0dXJuIGQ7XFxcXG4gICAgfVxcXFxufSwge1xcXFxuICAgIG5hbWU6IFxcXFxcXFwiRE9WWOaQnFxcXFxcXFwiLFxcXFxuICAgIHBhZ2U6IGZhbHNlLFxcXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXFxcbiAgICAgICAgbGV0IHVybCA9IFxcXFxcXFwiaHR0cHM6Ly9hcGkuZG92eC50ay9hbGkvc2VhcmNoP3dkPVxcXFxcXFwiICsgcztcXFxcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge30pO1xcXFxuICAgICAgICAvL2xvZyhiYXNlNjREZWNvZGUoaHRtbCkpO1xcXFxuICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShodG1sKS5saXN0O1xcXFxuICAgICAgICAvL2xvZyhhcnIpO1xcXFxuICAgICAgICBsZXQgZCA9IFtdO1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcXFxuICAgICAgICAgICAgbGV0IHUgPSBpdC52b2RfY29udGVudDtcXFxcbiAgICAgICAgICAgIC8vdSA9IHUubGVuZ3RoID4gMCA/IHVbMF0gOiB1cmw7XFxcXG4gICAgICAgICAgICBpZiAoIXUuaW5jbHVkZXMoXFxcXFxcXCJhbGl5dW5kcml2ZVxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXQudm9kX25hbWUsXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaXQudm9kX3BpYyxcXFxcbiAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPkRPVljmkJw8L2ZvbnQ+Jm5ic3A7XFxcXFxcXCIgKyAoXFxcXFxcXCJcXFxcXFxcIiksXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZDtcXFxcbiAgICB9XFxcXG59LCB7XFxcXG4gICAgbmFtZTogXFxcXFxcXCLlv4XlupRcXFxcXFxcIixcXFxcbiAgICBwYWdlOiB0cnVlLFxcXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXFxcbiAgICAgICAgbGV0IHVybCA9IFxcXFxcXFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9zZWFyY2g/cT1cXFxcXFxcIiArIHMgKyBcXFxcXFxcIithbGl5dW5kcml2ZSZxcz1kcyZmb3JtPVFCUkVcXFxcXFxcIjtcXFxcbiAgICAgICAgaWYgKHBhZ2UgIT0gMSkge1xcXFxuICAgICAgICAgICAgdXJsID0gZ2V0TXlWYXIoXFxcXFxcXCJiaW5nXFxcXFxcXCIsIHVybCk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vY24uYmluZy5jb20vXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgLy9cXFxcXFxcIlgtUmVxdWVzdGVkLVdpdGhcXFxcXFxcIjogXFxcXFxcXCJjb20uZXhhbXBsZS5oaWtlcnZpZXdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcIkFjY2VwdFxcXFxcXFwiOiBcXFxcXFxcInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuOVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFxcXFxcImJvZHkmJmFcXFxcXFxcIik7XFxcXG4gICAgICAgIC8vbG9nKGFycik7XFxcXG4gICAgICAgIGxldCBkID0gW107XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxcXG4gICAgICAgICAgICBsZXQgdSA9IHBkKGl0LCBcXFxcXFxcImEmJmhyZWZcXFxcXFxcIiwgdXJsKTtcXFxcbiAgICAgICAgICAgIGxldCB0ID0gcGRmaChpdCwgXFxcXFxcXCJhJiZUZXh0XFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgaWYgKGl0LmluY2x1ZGVzKFxcXFxcXFwiTmV4dCBwYWdlXFxcXFxcXCIpIHx8IGl0LmluY2x1ZGVzKFxcXFxcXFwi5LiL5LiA6aG1XFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHUyID0gcGQoaXQsIFxcXFxcXFwiYSYmaHJlZlxcXFxcXFwiLCB1cmwpO1xcXFxuICAgICAgICAgICAgICAgIGxvZyhcXFxcXFxcIm5leHQgcGFnZVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICBsb2codTIpO1xcXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwiYmluZ1xcXFxcXFwiLCB1Mik7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAodSA9PSBudWxsIHx8IHQgPT0gbnVsbCB8fCAhaXQuaW5jbHVkZXMocykpIHtcXFxcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGlmICghaXQuaW5jbHVkZXMoXFxcXFxcXCLnvZHnm5hcXFxcXFxcIikgJiYgIWl0LmluY2x1ZGVzKFxcXFxcXFwi5LqR55uYXFxcXFxcXCIpICYmXFxcXG4gICAgICAgICAgICAgICAgIWl0LmluY2x1ZGVzKFxcXFxcXFwiYWxpeXVuZHJpdmVcXFxcXFxcIikgJiYgIWl0LmluY2x1ZGVzKFxcXFxcXFwieXVucGFuXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAodS5zdGFydHNXaXRoKFxcXFxcXFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGxldCBkb20gPSBnZXRIb21lKHUpLnJlcGxhY2UoXFxcXFxcXCJodHRwOi8vXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLnJlcGxhY2UoXFxcXFxcXCJodHRwczovL1xcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGxldCBfbGlua3MgPSB0Lm1hdGNoKC9odHRwczpcXFxcXFxcXC9cXFxcXFxcXC8od3d3XFxcXFxcXFwuYWxpeXVuZHJpdmVcXFxcXFxcXC5jb21cXFxcXFxcXC9zfGFseXdwXFxcXFxcXFwubmV0KVxcXFxcXFxcL1xcXFxcXFxcdyovZykgfHwgW107XFxcXG4gICAgICAgICAgICBsb2coX2xpbmtzKTtcXFxcbiAgICAgICAgICAgIGxldCBjID0gbnVsbDtcXFxcbiAgICAgICAgICAgIGlmIChfbGlua3MubGVuZ3RoID4gMSAmJiBfbGlua3NbMV0ucmVwbGFjZShfbGlua3NbMF0sIFxcXFxcXFwiXFxcXFxcXCIpLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCBcXFxcXFxcIlxcXFxcXFwiKSA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgYyA9IHdyYXB1KF9saW5rc1sxXSk7XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XFxcXG4gICAgICAgICAgICAgICAgYyA9IHdyYXB1KF9saW5rc1swXSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0LFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5b+F5bqUPC9mb250PiZuYnNwO1xcXFxcXFwiICsgZG9tLFxcXFxuICAgICAgICAgICAgICAgIHVybDogYyAhPSBudWxsID8gYyA6ICQodSkubGF6eVJ1bGUoKHdyYXB1LCBtb2RlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBfbGlua3MgPSBodG1sLm1hdGNoKC9odHRwczpcXFxcXFxcXC9cXFxcXFxcXC8od3d3XFxcXFxcXFwuYWxpeXVuZHJpdmVcXFxcXFxcXC5jb21cXFxcXFxcXC9zfGFseXdwXFxcXFxcXFwubmV0KVxcXFxcXFxcL1xcXFxcXFxcdyovZykgfHwgW107XFxcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhfbGlua3MpO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoX2xpbmtzLmxlbmd0aCA+IDEgJiYgX2xpbmtzWzFdLnJlcGxhY2UoX2xpbmtzWzBdLCBcXFxcXFxcIlxcXFxcXFwiKS5yZXBsYWNlKC9bYS16QS1aMC05XSsvZywgXFxcXFxcXCJcXFxcXFxcIikgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXB1KF9saW5rc1sxXSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShfbGlua3NbMF0pO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGUgPSBNWV9SVUxFLnRpdGxlO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3lzZng/cnVsZT1cXFxcXFxcIiArIHJ1bGUgKyBcXFxcXFxcIiZyPVxcXFxcXFwiICsgcnVsZSArIFxcXFxcXFwiJm1vZGU9XFxcXFxcXCIgKyBtb2RlICsgXFxcXFxcXCIjI1xcXFxcXFwiICsgaW5wdXQ7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LCB3cmFwdSwgY29uZmlnLm1vZGUpXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZDtcXFxcbiAgICB9XFxcXG59XTtcXFxcblxcXFxubGV0IGNjb2YgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9jY29mJylcXFxcbnJ1bGVzLnB1c2goY2NvZilcXFxcbi8v5bm25Y+R6KeE5YiZ5pWwXFxcXG5sZXQgc2l6ZSA9IDEwO1xcXFxuXFxcXG4kLmV4cG9ydHMgPSBmdW5jdGlvbihwYWdlLCBydWxlKSB7XFxcXG4gICAgaWYgKCFwYWdlICYmICFydWxlKSB7XFxcXG4gICAgICAgIHJldHVybiBydWxlcy5tYXAoaXQgPT4gaXQubmFtZSk7XFxcXG4gICAgfVxcXFxuICAgIGlmIChydWxlICE9IG51bGwpIHtcXFxcbiAgICAgICAgaWYgKHBhZ2UgIT0gbnVsbCAmJiBwYWdlID4gMSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcihpID0+IGkubmFtZSA9PSBydWxlICYmIGkucGFnZSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcihpID0+IGkubmFtZSA9PSBydWxlKTtcXFxcbiAgICB9XFxcXG4gICAgbGV0IHN0YXJ0ID0gKHBhZ2UgLSAxKSAqIHNpemU7XFxcXG4gICAgaWYgKHJ1bGVzLmxlbmd0aCA8IHN0YXJ0ICsgMSkge1xcXFxuICAgICAgICByZXR1cm4gW107XFxcXG4gICAgfVxcXFxuICAgIGxldCBsZW4gPSBzaXplO1xcXFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBwYWdlICogc2l6ZSkge1xcXFxuICAgICAgICBsZW4gPSBydWxlcy5sZW5ndGggLSBzdGFydFxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcnVsZXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuKTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmkJzntKJcXFwiLFxcXCJwYXRoXFxcIjpcXFwic291XFxcIixcXFwicnVsZVxcXCI6XFxcImxldCByID0gZ2V0SXRlbShcXFxcXFxcInJcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxcXG4gICAgbGV0IHIxID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2hvbWVA5LqR55uY5rGH5b2xXFxcXFxcXCIpO1xcXFxuICAgIGlmICghcjEgfHwgcjEubGVuZ3RoIDw9IDUpIHtcXFxcbiAgICAgICAgbGV0IHJ1ID0gJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCLmtbfpmJTop4bnlYzop4TliJnliIbkuqvvvIzlvZPliY3liIbkuqvnmoTmmK/vvJrlsI/nqIvluo/vv6Vob21lX3J1bGVfdjLvv6ViYXNlNjQ6Ly9A5LqR55uY5rGH5b2xQGV5SnNZWE4wWDJOb1lYQjBaWEpmY25Wc1pTSTZJaUlzSW5ScGRHeGxJam9pNUxxUjU1dVk1ckdINWIyeElpd2lZWFYwYUc5eUlqb2lUWEpHYkhraUxDSjFjbXdpT2lKb2FXdGxjam92TDJWdGNIUjVKQ1FrWm5sd1lXZGxJaXdpZG1WeWMybHZiaUk2Tml3aVkyOXNYM1I1Y0dVaU9pSjBaWGgwWHpFaUxDSmpiR0Z6YzE5dVlXMWxJam9pSWl3aWRIbHdaU0k2SW1Gc2JDSXNJbU5zWVhOelgzVnliQ0k2SWlJc0ltRnlaV0ZmYm1GdFpTSTZJaUlzSW1GeVpXRmZkWEpzSWpvaUlpd2ljMjl5ZEY5dVlXMWxJam9pSWl3aWVXVmhjbDl1WVcxbElqb2lJaXdpYzI5eWRGOTFjbXdpT2lJaUxDSjVaV0Z5WDNWeWJDSTZJaUlzSW1acGJtUmZjblZzWlNJNkltcHpPbHh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4dVlXeHBMbWh2YldWUVlXZGxLQ2s3SWl3aWMyVmhjbU5vWDNWeWJDSTZJbWhwYTJWeU9pOHZaVzF3ZEhra0pDUXFLaVFrSkdaNWNHRm5aU1FrSkNJc0ltZHliM1Z3SWpvaTRwR2c1NzJSNTV1WUlpd2ljMlZoY21Ob1JtbHVaQ0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExuTmxZWEpqYUZCaFoyVW9kSEoxWlNrN1hHNGlMQ0prWlhSaGFXeGZZMjlzWDNSNWNHVWlPaUp0YjNacFpWOHhJaXdpWkdWMFlXbHNYMlpwYm1SZmNuVnNaU0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExtUmxkR0ZwYkZCaFoyVW9LVHNpTENKelpHVjBZV2xzWDJOdmJGOTBlWEJsSWpvaWJXOTJhV1ZmTVNJc0luTmtaWFJoYVd4ZlptbHVaRjl5ZFd4bElqb2lJaXdpZFdFaU9pSnRiMkpwYkdVaUxDSndjbVZTZFd4bElqb2lkbUZ5SUdGc2FXcHpJRDBnWm1WMFkyaERZV05vWlNnbmFIUjBjSE02THk5bmFYUmxaUzVqYjIwdlpteDVNVE01Tnk5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2t1YW5NbktUdGNiaTh2ZG1GeUlHRnNhV3B6SUQwZ2JuVnNiRHRjYm1sbUlDZ2hZV3hwYW5NZ2ZId2dJV0ZzYVdwekxtbHVZMngxWkdWektDZGhiR2t1SnlrcElIdGNiaUFnSUNCaGJHbHFjeUE5SUdabGRHTm9RMkZqYUdVb0oyaDBkSEJ6T2k4dlkyUnVMbXB6WkdWc2FYWnlMbTVsZEM5bmFDOW1iSGt4TXprM0wyaHBhMlZ5TFdsamVTOWhiR2t1YW5NbktWeHVmVnh1YVdZZ0tDRmhiR2xxY3lCOGZDQWhZV3hwYW5NdWFXNWpiSFZrWlhNb0oyRnNhUzRuS1NrZ2UxeHVJQ0FnSUdGc2FXcHpJRDBnWm1WMFkyaERZV05vWlNnbmFIUjBjRG92TDJ4bWFXTjVMbU52YlRvek1EQXdNQzl0Y21ac2VTOW9hV3RsY2kxcFkza3ZjbUYzTDIxaGMzUmxjaTloYkdrdWFuTW5LVnh1ZlZ4dWFXWWdLR0ZzYVdwektTQjdYRzRnSUNBZ2QzSnBkR1ZHYVd4bEtGd2lhR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6WENJc0lHRnNhV3B6S1R0Y2JpQWdJQ0JsZG1Gc0tHRnNhV3B6S1R0Y2JpQWdJQ0JoYkdrdWNISmxVblZzWlNncE8xeHVmU0lzSW5CaFoyVnpJam9pVzN0Y0ltTnZiRjkwZVhCbFhDSTZYQ0p0YjNacFpWOHpYQ0lzWENKdVlXMWxYQ0k2WENMbnZaSG5tNWpvcjZibWc0VmNJaXhjSW5CaGRHaGNJanBjSW1SbGRHRnBiRndpTEZ3aWNuVnNaVndpT2x3aWFuTTZYRnh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4Y2JtRnNhUzVwYm1sMFEyOXVabWxuS0NrN1hGeHVZV3hwTG1Gc2FWSjFiR1VvS1R0Y0luMHNlMXdpWTI5c1gzUjVjR1ZjSWpwY0ltMXZkbWxsWHpGZmJHVm1kRjl3YVdOY0lpeGNJbTVoYldWY0lqcGNJdWkxaE9hNmtPZTlrZW1odGVpdnB1YURoVndpTEZ3aWNHRjBhRndpT2x3aWMybDBaUzFrWlhSaGFXeGNJaXhjSW5KMWJHVmNJanBjSW1wek9seGNibVYyWVd3b1ptVjBZMmdvSjJocGEyVnlPaTh2Wm1sc1pYTXZjblZzWlhNdmFXTjVMMkZzYVM1cWN5Y3BLVHRjWEc1aGJHa3VaR1YwWVdsc1VHRm5aU2dwTzF3aWZTeDdYQ0pqYjJ4ZmRIbHdaVndpT2x3aWJXOTJhV1ZmTTF3aUxGd2libUZ0WlZ3aU9sd2k1TGlxNUxxNjU3MlI1NXVZNksrbTVvT0ZYQ0lzWENKd1lYUm9YQ0k2WENKa2NtbDJaVndpTEZ3aWNuVnNaVndpT2x3aWFuTTZYRnh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4Y2JtRnNhUzVwYm1sMFEyOXVabWxuS0NrN1hGeHVZV3hwTG0xNVFXeHBVblZzWlNncE8xd2lmVjBpTENKcFkyOXVJam9pYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2Wm14NU1UTTVOeTlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHbDVkVzR1Y0c1bklpd2ljSEp2ZUhraU9pSWlmUT09XFxcXFxcXCJcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGNvbmZpcm0oe1xcXFxuICAgICAgICAgICAgdGl0bGU6IE1ZX1JVTEUudGl0bGUgKyAn5o+Q56S6JyxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfmnKzop4TliJnkvp3otZbkupHnm5jmsYflvbHop4TliJnvvIzngrnlh7vkuIvpnaLnmoTnoa7lrprmjInpkq7lr7zlhaXvvIzms6jmhI/lr7zlhaXlkI7kuIDlrpropoHlnKjkupHnm5jmsYflvbHnmbvlvZXpmL/ph4zkupHnm5jotKblj7fvvIzlkKbliJnkuI3og73nlKgnLFxcXFxuICAgICAgICAgICAgY29uZmlybTogcnUsXFxcXG4gICAgICAgICAgICBjYW5jZWw6IHJ1XFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxuICAgIGFkZExpc3RlbmVyKFxcXFxcXFwib25DbG9zZVxcXFxcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgY2xlYXJNeVZhcihcXFxcXFxcInNcXFxcXFxcIik7XFxcXG4gICAgfSkpO1xcXFxuICAgIGxldCB0aXAgPSBcXFxcXFxcIuS6keebmOaQnOe0ouWQmyDmo4DntKLlip/og73nlLHlr7nlupTnvZHnq5nmj5DkvpvvvIzmnKzop4TliJnkuI3mj5Dkvpvku7vkvZXlhoXlrrlcXFxcXFxcIjtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogdGlwLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCIjbm9Mb2FkaW5nI1xcXFxcXFwiKS5sYXp5UnVsZSgodGlwKSA9PiB7XFxcXG4gICAgICAgICAgICBjb25maXJtKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLkvb/nlKjor7TmmI5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0aXAgKyBcXFxcXFxcIu+8jOacrOinhOWImeS7o+eggeWujOWFqOW8gOa6kO+8jOS7heS+m+WtpuS5oOWSjOeglOeptu+8m+eCueWHu+S4i+aWueehruWumuaMiemSrui3s+i9rOS6keebmOaxh+W9seWwj+eoi+W6j1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGNvbmZpcm06IFxcXFxcXFwiJ2hpa2VyOi8vaG9tZUDkupHnm5jmsYflvbEnXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgIH0sIHRpcCksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImljb25fMl9yb3VuZFxcXFxcXFwiLFxcXFxuICAgICAgICBkZXNjOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICBwaWNfdXJsOiBcXFxcXFxcImhpa2VyOi8vaW1hZ2VzL2ljb24yXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcbiAgICBsZXQgZG1vZGUgPSBnZXRJdGVtKFxcXFxcXFwiZG1vZGVcXFxcXFxcIiwgXFxcXFxcXCLkupHnm5jmsYflvbFcXFxcXFxcIik7XFxcXG4gICAgaW5pdENvbmZpZyh7XFxcXG4gICAgICAgIG1vZGU6IGRtb2RlXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLmqKHlvI/vvJpcXFxcXFxcIiArIGRtb2RlLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwic2VsZWN0Oi8vXFxcXFxcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLpgInmi6nmqKHlvI9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIG9wdGlvbnM6IFtcXFxcXFxcIuS6keebmOaxh+W9sVxcXFxcXFwiLCBcXFxcXFxcIuacrOWcsOi9rOeggVxcXFxcXFwiLCBcXFxcXFxcIkpvZeeJiOmYv+mHjOS6keebmFxcXFxcXFwiLCBcXFxcXFxcIuWumOaWuUFQUFxcXFxcXFwiXSxcXFxcbiAgICAgICAgICAgIGNvbDogMSxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXFxcXFwiZG1vZGVcXFxcXFxcIiwgaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXFxcXFwi5a6Y5pa5QVBQXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip/vvIzor7fnoa7kv53miYvmnLrmnInlronoo4XpmL/ph4zkupHnm5jlrpjmlrlBUFBcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXFxcXFwiSm9l54mI6Zi/6YeM5LqR55uYXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHIxID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2hvbWVA6Zi/6YeM5LqR55uYXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXIxIHx8IHIxLmxlbmd0aCA8PSA1KSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnUgPSAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCLmtbfpmJTop4bnlYzpppbpobXpopHpgZPop4TliJnjgJDpmL/ph4zkupHnm5jjgJHvv6Vob21lX3J1bGVfdXJs77+laHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NTY1NlxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBNWV9SVUxFLnRpdGxlICsgJ+aPkOekuicsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ+acrOinhOWImeS+nei1lumYv+mHjOS6keebmOinhOWIme+8jOeCueWHu+S4i+mdoueahOehruWumuaMiemSruWvvOWFpe+8jOazqOaEj+WvvOWFpeWQjuS4gOWumuimgeeZu+W9leS6keebmOi0puWPt++8jOWQpuWImeS4jeiDveeUqCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybTogcnUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsOiBydVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+ivt+WvvOWFpee8uuWkseeahOinhOWImVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5L+u5pS55oiQ5Yqf77yM6K+356Gu5L+d5pyJ55m75b2V6LSm5Y+3XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip/vvIzms6jmhI/opoHlnKjkupHnm5jmsYflvbHorr7nva7ph4zpnaLnmbvlvZXotKblj7dcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpY29uXzJfcm91bmRcXFxcXFxcIixcXFxcbiAgICAgICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgcGljX3VybDogXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9pY29uMVxcXFxcXFwiXFxcXG4gICAgfSk7XFxcXG5cXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn5pCc57SiJyxcXFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeWFs+mUruivjScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ3MnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ3MnLCAnJylcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuICAgIGxldCBydWxlcyA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcXFxcXCIpKCk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIgPT0gciA/IFxcXFxcXFwi4oCc4oCc5YWo6YOo4oCd4oCdXFxcXFxcXCIgOiBcXFxcXFxcIuWFqOmDqFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCIjbm9Mb2FkaW5nI1xcXFxcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBjbGVhckl0ZW0oXFxcXFxcXCJyXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiLFxcXFxuICAgICAgICBkZXNjOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiXFxcXG4gICAgfSk7XFxcXG4gICAgZm9yIChsZXQgaXQgb2YgcnVsZXMpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBpdCA9PSByID8gXFxcXFxcXCLigJzigJxcXFxcXFxcIiArIGl0ICsgXFxcXFxcXCLigJ3igJ1cXFxcXFxcIiA6IGl0LFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKHIpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXFxcXFwiclxcXFxcXFwiLCByKTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSwgaXQpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCJcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZScsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBpZDogJ3lwai1sJ1xcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG59XFxcXG5sZXQgcyA9IGdldE15VmFyKCdzJywgJycpO1xcXFxuaWYgKHMgIT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgIGxldCBwID0gTVlfUEFHRTtcXFxcbiAgICBsZXQgZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcXFxcXCIpKHAsIHIgIT0gXFxcXFxcXCJcXFxcXFxcIiA/IHIgOiBudWxsKTtcXFxcblxcXFxuICAgIGxldCBwYWdlaWQgPSBcXFxcXFxcInlwai1wYWdlXFxcXFxcXCIgKyBwO1xcXFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuWKoOi9veesrFxcXFxcXFwiICsgcCArIFxcXFxcXFwi6aG15Lit77yM6L+b5bqm77yaMS9cXFxcXFxcIiArIGRhdGEubGVuZ3RoLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGlkOiBwYWdlaWRcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIHNldFJlc3VsdChkKTtcXFxcbiAgICBsb2coZGF0YS5sZW5ndGgpO1xcXFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgLy/lpJrnur/nqIvliqDovb0gICAgICAgIFxcXFxuICAgICAgICBsZXQgcmVhbFBhZ2UgPSBcXFxcXFxcIlxcXFxcXFwiID09IHIgPyAxIDogcDtcXFxcbiAgICAgICAgbGV0IHRhc2tzID0gZGF0YS5tYXAoaXQgPT4ge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHtcXFxcbiAgICAgICAgICAgICAgICBmdW5jOiBmdW5jdGlvbihydWxlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmZpbmQocywgcmVhbFBhZ2UpO1xcXFxuICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgcGFyYW06IGl0LFxcXFxuICAgICAgICAgICAgICAgIGlkOiBcXFxcXFxcInJ1bGVAXFxcXFxcXCIgKyBpdC5uYW1lXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIGJhdGNoRXhlY3V0ZSh0YXNrcywge1xcXFxuICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxcXG4gICAgICAgICAgICAgICAgLy9sb2coXFxcXFxcXCJsaXN0ZW5lcjogXFxcXFxcXCIgKyAocmVzdWx0IHx8IFtdKS5sZW5ndGgpXFxcXG4gICAgICAgICAgICAgICAgcGFyYW0uaSA9IHBhcmFtLmkgKyAxO1xcXFxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIHJlc3VsdCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmogPSBwYXJhbS5qICsgMTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRJdGVtQmVmb3JlKHBhZ2VpZCwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXQudGl0bGUuaW5jbHVkZXMoXFxcXFxcXCLigJzigJzigJ3igJ1cXFxcXFxcIikgPyBpdC50aXRsZSA6IFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIgKyBpdC50aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcXFxcXCI8ZW0+fDwvZW0+XFxcXFxcXCIsIFxcXFxcXFwiZ1xcXFxcXFwiKSwgXFxcXFxcXCJcXFxcXFxcIikucmVwbGFjZShuZXcgUmVnRXhwKHMsIFxcXFxcXFwiZ1xcXFxcXFwiKSwgXFxcXFxcXCI8c3Ryb25nPjxzcGFuIHN0eWxlPVxcXFxcXFxcXFxcXFxcXCJjb2xvcjogIzFFOTBGRlxcXFxcXFxcXFxcXFxcXCI+XFxcXFxcXCIgKyBzICsgXFxcXFxcXCI8L3NwYW4+PC9zdHJvbmc+XFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdC5kZXNjLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0LnVybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaXQucGljX3VybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0LnBpY191cmwgPyAnbW92aWVfMV92ZXJ0aWNhbF9waWMnIDogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcXFxcXFxcIl9fYXBwXFxcXFxcXCIgKyBNWV9QQUdFICsgXFxcXFxcXCJAXFxcXFxcXCIgKyBwYXJhbS5qLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXFxcblxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBpZiAocGFyYW0uaSA+PSBwYXJhbS5hbGwpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbShwYWdlaWQpXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLliqDovb3nrKxcXFxcXFxcIiArIE1ZX1BBR0UgKyBcXFxcXFxcIumhteS4re+8jOi/m+W6pu+8mlxcXFxcXFwiICsgKHBhcmFtLmkgKyAxKSArIFxcXFxcXFwiL1xcXFxcXFwiICsgcGFyYW0uYWxsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYWdlaWRcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgcGFyYW06IHtcXFxcbiAgICAgICAgICAgICAgICBhbGw6IGRhdGEubGVuZ3RoLFxcXFxuICAgICAgICAgICAgICAgIGk6IDAsXFxcXG4gICAgICAgICAgICAgICAgajogLTFcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pCc57Si6aG16Z2iXFxcIixcXFwicGF0aFxcXCI6XFxcInNvdXBcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuaWYgKE1ZX1BBUkFNUy5rZXkpIHtcXFxcbiAgICBwdXRNeVZhcihcXFxcXFxcInNcXFxcXFxcIiwgTVlfUEFSQU1TLmtleSk7XFxcXG59XFxcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2Uvc291XFxcXFxcXCIpKS5ydWxlKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJDQ09GXFxcIixcXFwicGF0aFxcXCI6XFxcImNjb2ZcXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIHdyYXB1ID0gKHUpID0+IHtcXFxcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gXFxcXFxcXCLmnKzlnLDovaznoIFcXFxcXFxcIikge1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZSdcXFxcbiAgICB9XFxcXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXFxcXFwiSm9l54mI6Zi/6YeM5LqR55uYXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc2hhcmU/cGFnZT1meXBhZ2UmcnVsZT3pmL/ph4zkupHnm5gmc2hhcmVfdXJsPScgKyB1O1xcXFxuICAgIH1cXFxcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gXFxcXFxcXCLkupHnm5jmsYflvbFcXFxcXFxcIikge1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJztcXFxcbiAgICB9XFxcXG4gICAgaWYgKC9hbGl5dW5kcml2ZS8udGVzdCh1KSkge1xcXFxuICAgICAgICBjb25zdCBbbGluaywgX3NoYXJlX3B3ZF0gPSB1LnNwbGl0KCc/c2hhcmVfcHdkPScpO1xcXFxuICAgICAgICBjb25zdCBbX2xpbmssIF9mb2xkZXJJRF0gPSBsaW5rLnNwbGl0KCcvZm9sZGVyLycpO1xcXFxuICAgICAgICBsZXQgc2hhcmVfcHdkID0gKF9zaGFyZV9wd2QgfHwgJycpLnNwbGl0KCcjbmFtZT0nKVswXSB8fCAnJztcXFxcbiAgICAgICAgbGV0IHNoYXJlSWQgPSBfbGluay5zcGxpdCgnY29tL3MvJylbMV07XFxcXG4gICAgICAgIHJldHVybiAnc21hcnRkcml2ZTovL3NoYXJlL2Jyb3dzZT9zaGFyZUlkPScgKyBzaGFyZUlkICsgJyZzaGFyZVB3ZD0nICsgc2hhcmVfcHdkO1xcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gXFxcXFxcXCJ3ZWI6Ly9cXFxcXFxcIiArIHU7XFxcXG59O1xcXFxuJC5leHBvcnRzID0ge1xcXFxuICAgIG5hbWU6ICdDQ09GJyxcXFxcbiAgICBwYWdlOiB0cnVlLFxcXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXFxcbiAgICAgICAgbGV0IGQgPSBbXVxcXFxuICAgICAgICBjb25zdCB7XFxcXG4gICAgICAgICAgICBieXRlc1RvU2l6ZSxcXFxcbiAgICAgICAgICAgIGNvbG9yXFxcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS90b29scycpO1xcXFxuICAgICAgICBsZXQgaHRtbCA9IGZldGNoKCdodHRwczovL3Bhbi5jY29mLmNjL2FwaS9zZWFyY2gnLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJjb250ZW50LXR5cGVcXFxcXFxcIjogJ2FwcGxpY2F0aW9uL2pzb24nLFxcXFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vcGFuLmNjb2YuY2Mvc2VhcmNoP2tleXdvcmQ9JyArIHNcXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBib2R5OiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJwYWdlU2l6ZVxcXFxcXFwiOiAyMCxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VOdW1cXFxcXFxcIjogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImtleXdvcmRcXFxcXFxcIjogcyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImZyb21Nb2JpbGVcXFxcXFxcIjogdHJ1ZVxcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKVxcXFxuICAgICAgICAgICAgLmRhdGEucm93c1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBpdCA9IGxpc3RbaV1cXFxcbiAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0LmZpbGVOYW1lXFxcXG4gICAgICAgICAgICBsZXQgbXVybCA9IGl0LnVybFxcXFxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpdC50eXBlLnJlcGxhY2UoL2ZvbGRlci8sICfmlofku7blpLknKS5yZXBsYWNlKC9maWxlLywgJ+aWh+S7ticpXFxcXG4gICAgICAgICAgICBpZiAodGl0bGUuaW5jbHVkZXMocykpIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5DQ09GPC9mb250PiZuYnNwOycgKyAn5paH5Lu257G75Z6L77yaJyArIHR5cGUgKyAn77yM5paH5Lu25aSn5bCP77yaJyArIGJ5dGVzVG9TaXplKGl0LnNpemUpLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KG11cmwpXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZFxcXFxuICAgIH1cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlt6XlhbdcXFwiLFxcXCJwYXRoXFxcIjpcXFwidG9vbHNcXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gYnl0ZXNUb1NpemUoc2l6ZSkge1xcXFxuICAgIGlmIChzaXplIDwgMC4xICogMTAyNCkge1xcXFxuICAgICAgICAvL+Wwj+S6jjAuMUtC77yM5YiZ6L2s5YyW5oiQQlxcXFxuICAgICAgICBzaXplID0gc2l6ZS50b0ZpeGVkKDIpICsgXFxcXFxcXCJCXFxcXFxcXCI7XFxcXG4gICAgfSBlbHNlIGlmIChzaXplIDwgMC4xICogMTAyNCAqIDEwMjQpIHtcXFxcbiAgICAgICAgLy8g5bCP5LqOMC4xTULvvIzliJnovazljJbmiJBLQlxcXFxuICAgICAgICBzaXplID0gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDIpICsgXFxcXFxcXCJLQlxcXFxcXFwiO1xcXFxuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDAuMSAqIDEwMjQgKiAxMDI0ICogMTAyNCkge1xcXFxuICAgICAgICAvLyDlsI/kuo4wLjFHQu+8jOWImei9rOWMluaIkE1CXFxcXG4gICAgICAgIHNpemUgPSAoc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgKyBcXFxcXFxcIk1CXFxcXFxcXCI7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgLy8g5YW25LuW6L2s5YyW5oiQR0JcXFxcbiAgICAgICAgc2l6ZSA9IChzaXplIC8gKDEwMjQgKiAxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgKyBcXFxcXFxcIkdCXFxcXFxcXCI7XFxcXG4gICAgfVxcXFxuICAgIC8vIOi9rOaIkOWtl+espuS4slxcXFxuICAgIGxldCBzaXplU3RyID0gc2l6ZSArIFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgIC8vIOiOt+WPluWwj+aVsOeCueWkhOeahOe0ouW8lVxcXFxuICAgICAgICBpbmRleCA9IHNpemVTdHIuaW5kZXhPZihcXFxcXFxcIi5cXFxcXFxcIiksXFxcXG4gICAgICAgIC8vIOiOt+WPluWwj+aVsOeCueWQjuS4pOS9jeeahOWAvFxcXFxuICAgICAgICBkb3UgPSBzaXplU3RyLnN1YnN0cihpbmRleCArIDEsIDIpO1xcXFxuICAgIC8vIOWIpOaWreWQjuS4pOS9jeaYr+WQpuS4ujAw77yM5aaC5p6c5piv5YiZ5Yig6ZmkMDBcXFxcbiAgICBpZiAoZG91ID09PSBcXFxcXFxcIjAwXFxcXFxcXCIpIHJldHVybiBzaXplU3RyLnN1YnN0cmluZygwLCBpbmRleCkgKyBzaXplU3RyLnN1YnN0cihpbmRleCArIDMsIDIpO1xcXFxuICAgIHJldHVybiBzaXplO1xcXFxufVxcXFxuJC5leHBvcnRzLmJ5dGVzVG9TaXplID0gYnl0ZXNUb1NpemU7XFxcXG4kLmV4cG9ydHMuY29sb3IgPSBmdW5jdGlvbih0ZXh0LCBjb2xvcikge1xcXFxuICAgIHRleHQgKz0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBpZiAodGV4dC5pbmRleE9mKFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIpID09PSAwKSB7XFxcXG4gICAgICAgIHRleHQucmVwbGFjZShcXFxcXFxcIuKAnOKAnOKAneKAnVxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIFxcXFxcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9J1xcXFxcXFwiICsgY29sb3IgKyBcXFxcXFxcIic+XFxcXFxcXCIgKyB0ZXh0ICsgXFxcXFxcXCI8L2ZvbnQ+XFxcXFxcXCI7XFxcXG59XFxcXG5cXFxcbiQuZXhwb3J0cy5zbGVlcCA9IGZ1bmN0aW9uKHRpbWVvdXQpIHtcXFxcbiAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKHRpbWVvdXQpO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBodG1sVGFnKHRhZywgdGV4dCkge1xcXFxuICAgIHRleHQgKz0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBpZiAodGV4dC5pbmRleE9mKFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIpID09PSAwKSB7XFxcXG4gICAgICAgIHRleHQucmVwbGFjZShcXFxcXFxcIuKAnOKAnOKAneKAnVxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIgKyBcXFxcXFxcIjxcXFxcXFxcIiArIHRhZyArIFxcXFxcXFwiPlxcXFxcXFwiICsgdGV4dCArIFxcXFxcXFwiPC9cXFxcXFxcIiArIHRhZyArIFxcXFxcXFwiPlxcXFxcXFwiO1xcXFxuXFxcXG59XFxcXG4kLmV4cG9ydHMuaHRtbFRhZyA9IGh0bWxUYWc7XFxcXG4kLmV4cG9ydHMuc21hbGwgPSBmdW5jdGlvbih0ZXh0KSB7XFxcXG4gICAgcmV0dXJuIGh0bWxUYWcoXFxcXFxcXCJzbWFsbFxcXFxcXFwiLCB0ZXh0KTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0VGltZShmaWxlLGlzU3RhbmRhcmQpIHtcXFxcbiAgICBpc1N0YW5kYXJkID0gaXNTdGFuZGFyZHx8ZmFsc2U7XFxcXG4gICAgbGV0IHRUaW1lID0gZmlsZS51cGRhdGVkX2F0IHx8IGZpbGUudGltZV9zdHIgfHwgXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICB0VGltZSA9IHRUaW1lLnNwbGl0KFxcXFxcXFwiVFxcXFxcXFwiKTtcXFxcbiAgICBsZXQgZGF0ZSA9IHRUaW1lWzBdO1xcXFxuICAgIGlmKGlzU3RhbmRhcmQpe1xcXFxuICAgICAgICBkYXRlID0gZGF0ZS5yZXBsYWNlKC8tL2csXFxcXFxcXCIvXFxcXFxcXCIpO1xcXFxuICAgIH1cXFxcbiAgICB0VGltZSA9IHRUaW1lWzFdLnNwbGl0KC9afFxcXFxcXFxcLi8pO1xcXFxuICAgIGRhdGUgKz0gXFxcXFxcXCIgXFxcXFxcXCIgKyB0VGltZVswXTtcXFxcbiAgICByZXR1cm4gZGF0ZTtcXFxcbn1cXFxcbmZ1bmN0aW9uIGdldFRpbWVJbnQodGltZVN0cil7XFxcXG4gICAgcmV0dXJuIChuZXcgRGF0ZSh0aW1lU3RyKSkuZ2V0VGltZSgpXFxcXG59XFxcXG4kLmV4cG9ydHMuZ2V0VGltZSA9IGdldFRpbWU7XFxcXG5cXFxcbmxldCBjaG5OdW1DaGFyID0ge1xcXFxuICAgIOmbtjogMCxcXFxcbiAgICDkuIA6IDEsXFxcXG4gICAg5LqMOiAyLFxcXFxuICAgIOS4iTogMyxcXFxcbiAgICDlm5s6IDQsXFxcXG4gICAg5LqUOiA1LFxcXFxuICAgIOWFrTogNixcXFxcbiAgICDkuIM6IDcsXFxcXG4gICAg5YWrOiA4LFxcXFxuICAgIOS5nTogOVxcXFxufTtcXFxcblxcXFxubGV0IGNobk5hbWVWYWx1ZSA9IHtcXFxcbiAgICDljYE6IHtcXFxcbiAgICAgICAgdmFsdWU6IDEwLFxcXFxuICAgICAgICBzZWNVbml0OiBmYWxzZVxcXFxuICAgIH0sXFxcXG4gICAg55m+OiB7XFxcXG4gICAgICAgIHZhbHVlOiAxMDAsXFxcXG4gICAgICAgIHNlY1VuaXQ6IGZhbHNlXFxcXG4gICAgfSxcXFxcbiAgICDljYM6IHtcXFxcbiAgICAgICAgdmFsdWU6IDEwMDAsXFxcXG4gICAgICAgIHNlY1VuaXQ6IGZhbHNlXFxcXG4gICAgfSxcXFxcbiAgICDkuIc6IHtcXFxcbiAgICAgICAgdmFsdWU6IDEwMDAwLFxcXFxuICAgICAgICBzZWNVbml0OiB0cnVlXFxcXG4gICAgfSxcXFxcbiAgICDkur86IHtcXFxcbiAgICAgICAgdmFsdWU6IDEwMDAwMDAwMCxcXFxcbiAgICAgICAgc2VjVW5pdDogdHJ1ZVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gQ2hpbmVzZVRvTnVtYmVyKGNoblN0cikge1xcXFxuICAgIGxldCBydG4gPSAwO1xcXFxuICAgIGxldCBzZWN0aW9uID0gMDtcXFxcbiAgICBsZXQgbnVtYmVyID0gMDtcXFxcbiAgICBsZXQgc2VjVW5pdCA9IGZhbHNlO1xcXFxuICAgIGxldCBzdHIgPSBjaG5TdHIuc3BsaXQoJycpO1xcXFxuXFxcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgbGV0IG51bSA9IGNobk51bUNoYXJbc3RyW2ldXTtcXFxcbiAgICAgICAgaWYgKHR5cGVvZiBudW0gIT09ICd1bmRlZmluZWQnKSB7XFxcXG4gICAgICAgICAgICBudW1iZXIgPSBudW07XFxcXG4gICAgICAgICAgICBpZiAoaSA9PT0gc3RyLmxlbmd0aCAtIDEpIHtcXFxcbiAgICAgICAgICAgICAgICBzZWN0aW9uICs9IG51bWJlcjtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGxldCB1bml0ID0gY2huTmFtZVZhbHVlW3N0cltpXV0udmFsdWU7XFxcXG4gICAgICAgICAgICBzZWNVbml0ID0gY2huTmFtZVZhbHVlW3N0cltpXV0uc2VjVW5pdDtcXFxcbiAgICAgICAgICAgIGlmIChzZWNVbml0KSB7XFxcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9IChzZWN0aW9uICsgbnVtYmVyKSAqIHVuaXQ7XFxcXG4gICAgICAgICAgICAgICAgcnRuICs9IHNlY3Rpb247XFxcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9IDA7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHNlY3Rpb24gKz0gKG51bWJlciAqIHVuaXQpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgbnVtYmVyID0gMDtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcnRuICsgc2VjdGlvbjtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gbmFtZUNvbXBhcmUoYSwgYikge1xcXFxuICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKVxcXFxuICAgICAgICByZXR1cm4gYSA9PSBudWxsID8gYiA9PSBudWxsID8gMCA6IC0xIDogMTtcXFxcblxcXFxuICAgIGEgPSBhLnJlcGxhY2UoLyhb6Zu25LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2B55m+5Y2D5LiH5Lq/XSkvZywgZnVuY3Rpb24obWF0Y2gsIHAxLCBwMiwgcDMsIG9mZnNldCwgc3RyaW5nKSB7XFxcXG4gICAgICAgIC8vIHAxIGlzIG5vbmRpZ2l0cywgcDIgZGlnaXRzLCBhbmQgcDMgbm9uLWFscGhhbnVtZXJpY3NcXFxcbiAgICAgICAgcmV0dXJuIENoaW5lc2VUb051bWJlcihwMSk7XFxcXG4gICAgfSlcXFxcbiAgICBiID0gYi5yZXBsYWNlKC8oW+mbtuS4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5neWNgeeZvuWNg+S4h+S6v10pL2csIGZ1bmN0aW9uKG1hdGNoLCBwMSwgcDIsIHAzLCBvZmZzZXQsIHN0cmluZykge1xcXFxuICAgICAgICAvLyBwMSBpcyBub25kaWdpdHMsIHAyIGRpZ2l0cywgYW5kIHAzIG5vbi1hbHBoYW51bWVyaWNzXFxcXG4gICAgICAgIHJldHVybiBDaGluZXNlVG9OdW1iZXIocDEpO1xcXFxuICAgIH0pXFxcXG5cXFxcbiAgICBsZXQgTlVNQkVSUyA9IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuLmNvbXBpbGUoXFxcXFxcXCIoPzw9XFxcXFxcXFxcXFxcXFxcXEQpKD89XFxcXFxcXFxcXFxcXFxcXGQpfCg/PD1cXFxcXFxcXFxcXFxcXFxcZCkoPz1cXFxcXFxcXFxcXFxcXFxcRClcXFxcXFxcIilcXFxcbiAgICBsZXQgc3BsaXQxID0gTlVNQkVSUy5zcGxpdChuZXcgamF2YS5sYW5nLlN0cmluZyhhKSk7XFxcXG4gICAgbGV0IHNwbGl0MiA9IE5VTUJFUlMuc3BsaXQobmV3IGphdmEubGFuZy5TdHJpbmcoYikpO1xcXFxuXFxcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihzcGxpdDEubGVuZ3RoLCBzcGxpdDIubGVuZ3RoKTsgaSsrKSB7XFxcXG4gICAgICAgIGxldCBjMSA9IHNwbGl0MVtpXS5jaGFyQ29kZUF0KDApO1xcXFxuICAgICAgICBsZXQgYzIgPSBzcGxpdDJbaV0uY2hhckNvZGVBdCgwKTtcXFxcbiAgICAgICAgbGV0IGNtcCA9IDA7XFxcXG4gICAgICAgIGxldCB6ZXJvQ2hhckNvZGUgPSAnMCcuY2hhckNvZGVBdCgwKTtcXFxcbiAgICAgICAgbGV0IG5pbmVDaGFyQ29kZSA9ICc5Jy5jaGFyQ29kZUF0KDApO1xcXFxuXFxcXG4gICAgICAgIGlmIChjMSA+PSB6ZXJvQ2hhckNvZGUgJiYgYzEgPD0gbmluZUNoYXJDb2RlICYmIGMyID49IHplcm9DaGFyQ29kZSAmJiBjMiA8PSBuaW5lQ2hhckNvZGUpIHtcXFxcbiAgICAgICAgICAgIGNtcCA9IG5ldyBqYXZhLm1hdGguQmlnSW50ZWdlcihzcGxpdDFbaV0pLmNvbXBhcmVUbyhuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoc3BsaXQyW2ldKSk7XFxcXG4gICAgICAgIH1cXFxcblxcXFxuICAgICAgICBpZiAoY21wID09PSAwKSB7XFxcXG4gICAgICAgICAgICBsZXQgcmVnZXggPSAvW2EtekEtWjAtOV0vXFxcXG4gICAgICAgICAgICBsZXQgczEgPSBTdHJpbmcoc3BsaXQxW2ldKVxcXFxuICAgICAgICAgICAgbGV0IHMyID0gU3RyaW5nKHNwbGl0MltpXSlcXFxcbiAgICAgICAgICAgIGlmIChyZWdleC50ZXN0KHMxKSB8fCByZWdleC50ZXN0KHMyKSkge1xcXFxuICAgICAgICAgICAgICAgIGNtcCA9IG5ldyBqYXZhLmxhbmcuU3RyaW5nKHNwbGl0MVtpXSkuY29tcGFyZVRvKG5ldyBqYXZhLmxhbmcuU3RyaW5nKHNwbGl0MltpXSkpO1xcXFxuICAgICAgICAgICAgICAgIC8vIGNtcCA9IHMxLmxvY2FsZUNvbXBhcmUoczIsICdlbicpXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGNtcCA9IHMxLmxvY2FsZUNvbXBhcmUoczIsICd6aCcpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcblxcXFxuICAgICAgICBpZiAoY21wICE9PSAwKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gY21wO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGxldCBsZW5ndGhDbXAgPSBzcGxpdDEubGVuZ3RoIC0gc3BsaXQyLmxlbmd0aDtcXFxcbiAgICAvLyBpZiAobGVuZ3RoQ21wICE9PSAwKSBsZW5ndGhDbXAgPSBsZW5ndGhDbXAgPiAwID8gLTEgOiAxO1xcXFxuICAgIHJldHVybiBsZW5ndGhDbXA7XFxcXG59XFxcXG5cXFxcbiQuZXhwb3J0cy5zb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIHNvcnQpIHtcXFxcbiAgICBpZiAoc29ydCA9PT0gXFxcXFxcXCLnsbvlnotcXFxcXFxcIikge1xcXFxuICAgICAgICAvLyBsb2coXFxcXFxcXCLnsbvlnovmjpLluo9cXFxcXFxcIik7XFxcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH0gZWxzZSBpZiAoc29ydCA9PT0gXFxcXFxcXCLlkI3np7BcXFxcXFxcIikge1xcXFxuICAgICAgICAvLyBsb2coXFxcXFxcXCLlkI3np7DmjpLluo9cXFxcXFxcIik7XFxcXG4gICAgICAgIC8vIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxcXG4gICAgICAgIC8vICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lLCBcXFxcXFxcInpoXFxcXFxcXCIpXFxcXG4gICAgICAgIC8vIH0pO1xcXFxuICAgICAgICBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcXFxuICAgICAgICAgICAgcmV0dXJuIG5hbWVDb21wYXJlKGEubmFtZXx8YS50aXRsZSwgYi5uYW1lfHxiLnRpdGxlKTtcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfSBlbHNlIGlmIChzb3J0ID09PSBcXFxcXFxcIuWkp+Wwj1xcXFxcXFwiKSB7XFxcXG4gICAgICAgIC8vIGxvZyhcXFxcXFxcIuWkp+Wwj+aOkuW6j1xcXFxcXFwiKTtcXFxcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiAoYS5zaXplIHx8IE51bWJlcihhLnNpemVfc3RyKSB8fCAwKSAtIChiLnNpemUgfHwgTnVtYmVyKGIuc2l6ZV9zdHIpIHx8IDApO1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9ZWxzZSBpZiAoc29ydCA9PT0gXFxcXFxcXCLml7bpl7RcXFxcXFxcIikge1xcXFxuICAgICAgICAvLyBsb2coXFxcXFxcXCLml7bpl7TmjpLluo9cXFxcXFxcIik7XFxcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gZ2V0VGltZUludChnZXRUaW1lKGEsdHJ1ZSkpIC0gZ2V0VGltZUludChnZXRUaW1lKGIsdHJ1ZSkpXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gbGlzdFxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBzaW1pbGFyKHMsIHQsIGYpIHsvL+WIpOaWreS4pOS4quWtl+espuS4suS5i+mXtOeahOebuOS8vOW6plxcXFxuICAgIGlmICghcyB8fCAhdCkge1xcXFxuICAgICAgICByZXR1cm4gMFxcXFxuICAgIH1cXFxcbiAgICBpZihzID09PSB0KXtcXFxcbiAgICAgICAgcmV0dXJuIDEwMDtcXFxcbiAgICB9XFxcXG4gICAgdmFyIGwgPSBzLmxlbmd0aCA+IHQubGVuZ3RoID8gcy5sZW5ndGggOiB0Lmxlbmd0aFxcXFxuICAgIHZhciBuID0gcy5sZW5ndGhcXFxcbiAgICB2YXIgbSA9IHQubGVuZ3RoXFxcXG4gICAgdmFyIGQgPSBbXVxcXFxuICAgIGYgPSBmIHx8IDJcXFxcbiAgICB2YXIgbWluID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcXFxcbiAgICAgICAgcmV0dXJuIGEgPCBiID8gKGEgPCBjID8gYSA6IGMpIDogKGIgPCBjID8gYiA6IGMpXFxcXG4gICAgfVxcXFxuICAgIHZhciBpLCBqLCBzaSwgdGosIGNvc3RcXFxcbiAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1cXFxcbiAgICBpZiAobSA9PT0gMCkgcmV0dXJuIG5cXFxcbiAgICBmb3IgKGkgPSAwOyBpIDw9IG47IGkrKykge1xcXFxuICAgICAgICBkW2ldID0gW11cXFxcbiAgICAgICAgZFtpXVswXSA9IGlcXFxcbiAgICB9XFxcXG4gICAgZm9yIChqID0gMDsgaiA8PSBtOyBqKyspIHtcXFxcbiAgICAgICAgZFswXVtqXSA9IGpcXFxcbiAgICB9XFxcXG4gICAgZm9yIChpID0gMTsgaSA8PSBuOyBpKyspIHtcXFxcbiAgICAgICAgc2kgPSBzLmNoYXJBdChpIC0gMSlcXFxcbiAgICAgICAgZm9yIChqID0gMTsgaiA8PSBtOyBqKyspIHtcXFxcbiAgICAgICAgICAgIHRqID0gdC5jaGFyQXQoaiAtIDEpXFxcXG4gICAgICAgICAgICBpZiAoc2kgPT09IHRqKSB7XFxcXG4gICAgICAgICAgICAgICAgY29zdCA9IDBcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgY29zdCA9IDFcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGRbaV1bal0gPSBtaW4oZFtpIC0gMV1bal0gKyAxLCBkW2ldW2ogLSAxXSArIDEsIGRbaSAtIDFdW2ogLSAxXSArIGNvc3QpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgbGV0IHJlcyA9ICgxIC0gZFtuXVttXSAvIGwpICoxMDBcXFxcbiAgICByZXR1cm4gcmVzLnRvRml4ZWQoZilcXFxcbn1cXFxcblxcXFxuJC5leHBvcnRzLnNpbWlsYXIgPSBzaW1pbGFyO1xcXFxuJC5leHBvcnRzLnJlbW92ZUV4dCA9IGZ1bmN0aW9uIChmaWxlKXtcXFxcbiAgICByZXR1cm4gZmlsZS5zcGxpdCgnLicpLnNsaWNlKDAsLTEpLmpvaW4oJy4nKVxcXFxufTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJ1XFxcIixcXFwicGF0aFxcXCI6XFxcInVcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzID0gZnVuY3Rpb24ocnVsZSwgb3JpZ2luLCBtb2RlKSB7XFxcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIG9yaWdpbiwgbW9kZSkgPT4ge1xcXFxuICAgICAgICBsZXQgaG9zdCA9IG9yaWdpbi5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcXFxcXCJodHRwOi8vfGh0dHBzOi8vXFxcXFxcXCIpLCBcXFxcXFxcIlxcXFxcXFwiKS5zcGxpdChcXFxcXFxcIi9cXFxcXFxcIilbMF07XFxcXG4gICAgICAgIGxldCBob3N0cyA9IGhvc3Quc3BsaXQoXFxcXFxcXCIuXFxcXFxcXCIpO1xcXFxuICAgICAgICBpZiAoaG9zdHMubGVuZ3RoID4gMikge1xcXFxuICAgICAgICAgICAgaG9zdCA9IGhvc3RzW2hvc3RzLmxlbmd0aCAtIDJdICsgXFxcXFxcXCIuXFxcXFxcXCIgKyBob3N0c1tob3N0cy5sZW5ndGggLSAxXTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChcXFxcXFxcIm1hZ25ldFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgY29uZmlybSh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5rip6aao5o+Q56S6XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcXFxcXCLmo4DmtYvliLDmlrDnmoTno4Hpk77lnLDlnYDvvIzngrnlh7vnoa7lrprmjInpkq7ljbPlj6/mkq3mlL7vvIzngrnlh7vlj5bmtojmjInpkq7lj6/ku6XlpI3liLbpk77mjqVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hZztcXFxcbiAgICAgICAgICAgICAgICB9LCBpbnB1dCksXFxcXG4gICAgICAgICAgICAgICAgY2FuY2VsOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiY29weTovL1xcXFxcXFwiICsgbWFnXFxcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcXFxcXCJhbGl5dW5kcml2ZS5jb21cXFxcXFxcIikgJiYgbW9kZSAhPSBcXFxcXFxcIuWumOaWuUFQUFxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcXFxuICAgICAgICAgICAgaWYgKGlucHV0LmluY2x1ZGVzKCdjaGVja3VybD91cmw9JykgJiYgaW5wdXQuaW5jbHVkZXMoJyZ1cmxyZWZlcicpKSB7XFxcXG4gICAgICAgICAgICAgICAgaW5wdXQgPSBkZWNvZGVVUklDb21wb25lbnQoaW5wdXQuc3BsaXQoJyZ1cmxyZWZlcicpWzBdLnNwbGl0KCdjaGVja3VybD91cmw9JylbMV0pO1xcXFxuICAgICAgICAgICAgICAgIC8vbG9nKCfotLTlkKcnK2lucHV0KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLpmL/ph4zkupHnm5hcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPVxcXFxcXFwiICsgdXJsICsgJz8/ZnlwYWdlJyxcXFxcbiAgICAgICAgICAgICAgICB9KSlcXFxcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcXFxuICAgICAgICB9IGVsc2UgaWYgKC9cXFxcXFxcXC4obXAzfGZsYWN8bTRhKSQvLnRlc3QoaW5wdXQpKSB7XFxcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGxheVZpZGVvKHVybCk7XFxcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXFxcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuaW5jbHVkZXMoaG9zdCkgJiYgaW5wdXQuc3RhcnRzV2l0aChcXFxcXFxcImh0dHBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlLCBtb2RlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6K+m5oOFXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXFxcXFwiICsgcnVsZSArIFxcXFxcXFwiJnI9XFxcXFxcXCIgKyBydWxlICsgXFxcXFxcXCImbW9kZT1cXFxcXFxcIiArIG1vZGUgKyBcXFxcXFxcIiMjXFxcXFxcXCIgKyB1cmwsXFxcXG4gICAgICAgICAgICAgICAgfSkpXFxcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSwgbW9kZSk7XFxcXG4gICAgICAgIH0gZWxzZSBpZiAoIWlucHV0LnN0YXJ0c1dpdGgoXFxcXFxcXCJodHRwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcXFxuICAgICAgICAgICAgLy/og73llKTotbdBUFDnmoTnmb3lkI3ljZVcXFxcbiAgICAgICAgICAgIGxldCB3aGl0ZSA9IFtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInFrbGlua1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiYmRuZXRkaXNrXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJ4dW5sZWlhcHBcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInNtYXJ0ZHJpdmVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgXTtcXFxcbiAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IGlucHV0LnN0YXJ0c1dpdGgoaXQpKS5sZW5ndGggPiAwO1xcXFxuICAgICAgICAgICAgaWYgKCFpbldoaXRlKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlblRoaXJkQXBwICYmIGZ5X2JyaWRnZV9hcHAub3BlblRoaXJkQXBwKHVybCk7XFxcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcblxcXFxuICAgICAgICB9XFxcXG4gICAgfSwgcnVsZSwgb3JpZ2luLCBtb2RlKTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCJ5c2Z4XFxcIixcXFwicGF0aFxcXCI6XFxcInlzZnhcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxubGV0IHJ1bGUgPSBnZXRQYXJhbShcXFxcXFxcInJcXFxcXFxcIikuc3BsaXQoXFxcXFxcXCIjI1xcXFxcXFwiKVswXTtcXFxcbmxldCBtb2RlID0gKGdldFBhcmFtKFxcXFxcXFwibW9kZVxcXFxcXFwiKSB8fCBcXFxcXFxcIlxcXFxcXFwiKS5zcGxpdChcXFxcXFxcIiMjXFxcXFxcXCIpWzBdO1xcXFxubGV0IHVybCA9IE1ZX1VSTC5zcGxpdChcXFxcXFxcIiMjXFxcXFxcXCIpWzFdO1xcXFxubGV0IGl0ZSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS91XFxcXFxcXCIpKHJ1bGUsIGdldEhvbWUodXJsKSwgbW9kZSk7XFxcXG5sZXQganMgPSAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBpZiAoZG9jdW1lbnQudGl0bGUgJiYgZG9jdW1lbnQudGl0bGUubGVuZ3RoKSB7XFxcXG4gICAgICAgICAgICBsZXQgciA9ICQkJCgpLmxhenlSdWxlKCh0KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpO1xcXFxuICAgICAgICAgICAgfSwgZG9jdW1lbnQudGl0bGUpO1xcXFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5wYXJzZUxhenlSdWxlKHIpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICBmeV9icmlkZ2VfYXBwLmxvZyhlLnRvU3RyaW5nKCkpO1xcXFxuICAgIH1cXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICB1cmw6IHVybCxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwiMTAwJSYmZmxvYXRcXFxcXFxcIixcXFxcbiAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHVybEludGVyY2VwdG9yOiBpdGUsXFxcXG4gICAgICAgIGpzOiBqcyxcXFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXFxcbiAgICAgICAganNMb2FkaW5nSW5qZWN0OiB0cnVlLFxcXFxuICAgICAgICBmbG9hdFZpZGVvOiB0cnVlXFxcXG4gICAgfVxcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImxpbmVcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBpZDogdXJsXFxcXG4gICAgfVxcXFxufSk7XFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6Zi/6YeMbGF6eVxcXCIsXFxcInBhdGhcXFwiOlxcXCJhbGlsYXp5XFxcIixcXFwicnVsZVxcXCI6XFxcImV2YWxQcml2YXRlSlMoXFxcXFxcXCJyTyszN3VHK2IySmJsOTFKWGUxQUxhY0FjUksxeGlrS05TZngzT0pOdjlNQUtwY3dGS0VMcXYyRlFFcTUxOC9abFpDZHpNOXZHbnpjL3BJM0x6Zk95YUJWd016K2RBY1ovc2pnd2RyOSthaE4yenB6SG84ZERPZDZLOXhhUldNZkRDenk3M2dSUHRha0FISkEzbU5SVzJwdVBTclNUQk1CMmtVR3FFR3VVTldrTTFwSEExam91U1dyckFNYmtPRUlVS2IyWVFKM2VJclVTMnNzVDc0V3dlanYwaXJ4Vlo4UlRoVWdwekFTWTU1dVB0N1ZnaVZWaWlFWEZjSi92cDl4ZXdZVzVLRXRnYzN2RXhjVFY4enZQOGN5SDAxcGRGMktQR3NnMEhMd0JFNEk5UTl1MVRnQ09GamFOZlpOa2F4WlFaMlZuUGxaMXJOeXRMY3BhRGNmMk0vanJUZC8rbm1zbVdya2ppdHVxOHhJNmZDVGwwSjZlMEh3SHpmdFE4WEZkVUZlakt4V0RGcGkxMHpqUTRuL3JDUSs0UzdPTlpaVHJZZGlYeVBlNFEzbWd6SjdRWjQ3NVAzTnBLTzZnTGxpSnZwN05Ic1BXL0FIK3BmWEJYQndkUml2QzZoTkc1dVA2Qmc4Z21pTjFHVHNSTVh3N0xob3JGSndXRFpSQTlZTGxYdktSYnY1WVl0cEZNVDVPWkNnOXByRWphZ1laLy91ZEt6eSt4QlNoQTEzM0Q1UmFtK1AzeXFLcWpMa3d0UVVaSnl4WkU4NmI2NjB2WDJDYmhieFNZOEpGRTNnMVhzNHZnVzBXQzU4YURST0xBeWhacDBlaTdubUtrUEZsYVFZOHVqTXd0ZDgrVVpUVjEzWU9paWRvS3NoWHF2SEpWSWZFNXEvMjdmdnlHdTJoS2ZKMm5KYWF0d3BuaVhxUkl1NDljMGZsUlJPdlVNbTFMSFcrVG9KUXMwSzBwWk13eDNKSkZ5K2FKbWw0VE5VYjhNTFQ4V0tnK1paTHE2bTBQQVd3OGdkZ0l0TERhMmFEVC9RcytBd3dTdmsxUStDR3JRRHN6b3hucUdwZEppemJEVlRRa0pjVzUzSWRKK2lTVVFRSENNdU0xVVlmcGRBSndjNEQzK2ozMFNjSHVuSDMvYk5CZll3bjA0L0tIdjd5WlN5RmMwNlIydzhuZ0RNUm5jZklQcmpONmJzekJFQWNLMHBWNEF0Z2hySkFkcENyUFJDdzRNZlVMSmc2NnF4VjRLVjFGa2JPSFk2ZzA2Q3F6ZGk5dEJnZmQzNEx6ZmRLZEgxVm9kdDRLNjdnUG50WG1iVThDVVRzMkhSRmx3ZkNmcUJtUXRGRGlUM0ZxTlBGSFhrM29KRStzT0l0U3J2VWR1K2J0NHBGeWxuZWVHbElTc1g2bUhPSGZrNUJacDlFV09Na2pBNkRtYnBaZnFCb2o0L3JKazFjSGJ2Zk1MSi9uVzdIeGt2ZGJ3amZlSHI5ckxuRXJEOCtPaE1QcjJGQ2x1Q1hLOHM4ZlJMdm5WVlJ1TDgzY2Q1TUpEZVBHWG5oSGZKaWNNOGU4c3J5MGpXVm5QN0NKLzcxa2dCMVBZT29PYTZZY0JuZC9Fb3N0OVNPZXNuZStZa3RuUGFIUHhmdjIvR3diWnM3UUtndHpaL1ZuY3RwODBqUkxCd0NOdERaTkF6dzN2eDF5dkw2eTRQUExlM3NRdzB0YlJ4UHAvL05xMHRWSE5sU2FzRW1QRDNHdysrams1NFZ1UmVieVNIa1lsU0dPNkNxRDRjNmd6dzFiR1JZRERuRStoQ2R1SS9neGxMZnNzU1oyMlZtMkhrVnhndlFHOC9jTnduQUlWWERjRDlwcGFmTStJc3V2Q0RaNFVkU3M3SzJ1eko0YlVpOVBPcTBBUnI2ckVNTkxXMGNUNmYvemF0TFZSelpVbGRHVUErdEF3QlhlQXhKUnp1d1ErUTVSb283c053V2o5U3Q3NklhT3dPWUpLa2FRcDVWeUxkYTBzeHdTbzV3K2R3R2QrY21lOVJURE1iL2VDQldRZnlXbVRjU2svNlVMblB3TlZGblVYTkZrMlBQUEtTUlVmTXlLN3h5VjhtTyt1YWNKTDJQaUpqbDVuekNLYkp6MXdhQ25vK2YyTDRRNVcvMVhLLzhqVTU3V1RrM3JpV2kydU9XUVdZUHBWNXZtRi9ZelR1V1h4TmI2eldxYmI5ajdpOXBWNC95eDhOdC9hT1VGdWRKRmlUdjhtOHFabHNLcldEd0g3SCt6MEVoUjhVeFg1WkNMNU1NelJ1YlI4bERSRVJNUm80UTl3Z0l2bnhZdmRjVTBBd3Y2SGJPbmxjTmxxQUVLa3hFUkxvcVR5bXZhK2pIQjNmS3ljVHJvSVhVblFrSDRocDNJaUVUYXR1MTF6emEvOHpXemxYQ2xsSklUUkk1cEIrL2M4enMrUzJRK2dTamVCUXBqSnB6a28yQkpSN3hwTkxyM0d1Q1ViVzU5Q01EcHRUbVhHdGxNajVPMnNRdmowQTZXZTRHenIyeDRmOXROWm9TZ0V4NnpLUC9IK0hhaVNYM3JzR0N1UHJwdENBT05GYmJ4cEJaWnJ1TW5jRW1LbldtVytPTkIzMVY3aFlpVWFXNUpuVXFZOWh6OENRQVZBZGRQalhQTUlBUFYrQk5DZm5zTkZYV3Y4ZXdhblBJemUzN0FTOTM0aUJnbDRHT1didDRzbi9GRkdITzdJZFhXNGZPV2tuMXU1UUJ1WXMvVTNCNDRIMjdOSWdUdU9jL0tjYUQxNDg3ZnBWdnQ3T2ZzT25Vejl0ME1sc1VkbE1KRjNqaCt3M3BFTGV4WDljU1F6bzJjc3J5MGpXVm5QN0NKLzcxa2dCMVBZRnhmZE50SjkzbkF0UUIyVlZPRVg3Y1BJN1crS0g3ODNYb1dyNG13akEyU3ZOREFmQU01d2oyNFVJTFhJTlIyTVR3Yk9KWnQ3T3p3L0l0WjBzdVZCelk1MExYUjBzOExldTQxTk9MaTIzT1hKbmE1Nk1oSHRqSGhUM1hydTQwd3NrVnhtdXEvbW0vcHFsWFpObld1TXpPK1JUNFA5Tm1TUDVWbU13SmovcUZIVG9RcW10c3JUL2h5ZTlCb3BnK2VmOW9KTVBVdjkrb0c0cUxJcmhDcU91bzFQZlRMazJhU0t5a25Nd2N4c2ZQOTB1WmdBcVMyMS8vUStnSmFUeEdQenZuU0pITXh0dytiYVl2bExKRXRDc3hpN1V0Vm80N0FUd3Q0dEtTbGNSeG1STzcvQTVIYnYxM2FyL1VLalpKSTkyV0NLL3BEL0FoczJlaUNDOVh6eVkwRmhJUE1oYjg5VjVFc3lIRU1NemRMelJMeDdZZHJXSDUzZmVWd0tEWGNaOHNvVWtsckNDais3WWd1cHNYYThPQ0lnOEkraUlkNHNmRDRjQVZZRW1uRjc1dHdWSk1uWVNKamxNazBGM1JyeGw4Z2xVNG5ZU3RkZVFveDhjbU1GcEsvaGlQLzVCQ05qcWdyOWZGR3RRRVAxOWViK1ZMQTZxUDRDT2ozY1pxVjQrci85UTF4SmJnWUFCclIvNXRYaWhwS0xjZHgzdzBzbU1TYmRyRHFXWnJYbXRuVXBqN2EzUUM0WUZDNE9JVVFCeWZwWElWaHp5d0pMNjBaWkxSYXZobHRwL0crcjB2NUQ5NnZSajJEKzNwZHVnYSs0QXZhWFE5ZThkOG5BOTFuSEJKQkhMdVdQMWtwK1FidnJmNURDYlA4Tm9SWGdTNVlqUWJzcXpuMUNDZlNqbVp2c3ZlUGk2QkFFYlFEdEg5YlhmRUdNUWNXR3JkY1RDM1hMb3NpS25SQ0lkZEhkdnBYL21McW15dFpMeUd6Z0dzWHNFU0xRc3Q0cjVzUlZlT2dpRW1aOEJmNWJYYWVSajJ4eW5kREl1M1dlbjFTK2pQL1Jia0IzVWhRWHZNTWhhOU9iRjAvYUJvTjRremQrQW83Z1NxTzh6c2F4MkcyanVwSjZHY2UzU1JKWjhKSUtxejJVYXlyZmQ5dXZzOU43ZEY1c0xjR01KVGI4Y1hWcXQ4bUl0S2RXdUowU09POGxzL3ROVjFDeGZmVlZFRllKV01MOU5sMTJsaktZYU1SbENDMVFOZ1VMcTI3SkVaMlE3SzB1REJ5UjRJUzJYVzhpYWRHUHZwQktxSVpjZlQ5ZTdBUXk1NENRK1RMNDBhOWhQUlFsZ2s2RFpFcUhDcHdLSU5kTmRGVkRZRVU2cUEwWm9QUFVYd1lrNHdJOTdOOC9mUFJSUVEwc0NmSGtWb3kxWFJhUFg3T0h6VVk2Skx6NTJVdUhKajhoalluOVp1ZVMrTFdmVUtYQUFqRm9jZ3ZSNFZNWFkwU2s2U1dlWHdSb2g4dU9aZWM4ZlJJbCtQejYrRWNVbUZyNUg0cTkzTUxhK1JWb0xOeksvQXNOYXpjMlJyZmU4dXoyWm5YSVdhVGxYQ2xsSklUUkk1cEIrL2M4enMrUzI1OU5HTEFqM3QxUU1lRzdac1VTUUd6TG5wUE5EWG1GN2NkYmpQcEV4dHNzcnkwaldWblA3Q0ovNzFrZ0IxUFkzV2JIazh6bExreW9KT3Jrai9jYzU2TmZrdkdJR0lDL2FyMVN1b0hIMmNNc3J5MGpXVm5QN0NKLzcxa2dCMVBaeHJaVEkrVHRyRUw0OUFPbG51QnM2L1hxRUJsbDdiZG5Md3Q5WU9DRHE5dWV5YmowL1BGWFlCMWMwWmNuOStTT1VWc3BqTUQ3TlljK0RXalVMMmIyc3E4UTUyVW96d05zT0FJdDdpTWNmWVorYTBXR2F2eU9EVE0zVDNuVWdKOE4yOGFFcXNzaVBKclhYSUduWXN5M004a28rVUFNekxsb0dOWXUwOGkwT3VKMVR4RGxmZFUxT0ZDOVpXL1FEMGJxSGdxeCt1N2J2LzYxSzMwMm9RUitNbXFFbnJpc09PTk02OW13VlA4aUdwVktuUUhwK2pYditrNUdVQlhaVUNrRHArKytDTU1FUkViTGx1c3N1YUlXR1hzQ3lxUlZuL0F6RHlUb3kyOGFNZU1JQkJ1YkFhVU1RQjg2TEtxMm90RDJrWVdYS21nN3JRNFdJZmZmZWoycHhrOFZDTEl6cVkxYTNwU3A3ZFRKbHU2Y0xFVVpiMVRXNVpPZUtuajU0MFdCWTAveFBqSThzY3d4b0JSYndBK2xXVXowRzVrUFpobS95cDFadWF5RzhhK2xVQnNzOU5vNU9XNk9Gekgvd0tOaWI0c3ZFdUJhSlJXUVNmYXpRUHpYL21DYXpCTmpIalowTWF6T1kzYThFdFloUWhucG1MczlscXNUSGlFNE15WEFHbHIySk91b0M5Y1UwakV4K0h6THk0RnBzWG1BN0kyMllxbnpGNnRrZm94bjc3U2NiK08rRXlzWjI4V3pDYVRNYWh2WjJlVld0UG5vc3ZnRldQRGh2S3pub3R1YXc5d0d1ODd2c252S1dremtySjlsN1dWRTBJV09PclBxb2ZRR0RmU2hIc0Q3TVNIWmEzdVhWNHZLZ0YzK21WY2FtdFhsemZxRVJzY05XdHYxOWViK1ZMQTZxUDRDT2ozY1pxVjRUMnlYd1Zwc0xUSGFEeHo2RmUzbzBzVFRNKy9TQjFDcWg0ZVNEYnhTL0FFN0VRTUdqenBMMjVpbFNGZG1Bdm1NbWxaOERvM00xdGxlWlZpT2N3ZTJnSC9mczQ2dDZnWnRBWldPMk9KbUZlTFFMVC9UbmplanlodlEya0xsNW16M0xLOHRJMWxaeit3aWYrOVpJQWRUMnhDeFVuT2IrbGdCODE5V0ZjWkV3bnBLZ1BhaCtRZjBuNWxLY3Q4TWtUelNQeWNaWktOOGFxYy95YmREdXh5WHlQTzl5NWNnU3VDdlVQOCs2QVdhRTVWbVNLZnRONDkxQzZTRzMvdVcwWlFsNWNDcFpyUlNvcjBqR3ZSMjVka0hWU1FLcTRZOVpCZmZ3OWFDUXc2c0U3Rmp4V002Z25nWFZ6RTN1cUo0QWtVRjVML2ZEQUljK29WNGhGcGhYQXRWUjc4Z3V5Y01sQUI5dS9UMjNxRjloUFpxYm1wMzRwNkNTUVJJNGJ5UkJCNm1HZG9XYy9hV2dBUGV1Y2tRa1UraFVmc2RuTnBmdEFPVnNRYmNJNXpmTXFrOFBvL1Q4QlV6L1JzdlFqVklPMEJLNHNuM29wZEhmckhMS21ZYUtrWE1VNUkva2dZSVRhVXFxd2pQcFlDKzI1THd0UXpyZVN0M0M4a1c1MWtERVY5WUV5WEt5WExJdnFXZjBhRkJnVnYrWUhJQzczVjN3TzRLREZtdGlCb2FZQkpIbjNVY2JRd2Mva2luT2EzU1RsSVRTcEVkQjV4bkdDQlRuLzRMeXJ0YW1ZdkdLKzBxMnJPUGRhRVBndFllTVhzQURIVXNQR0hVVlk4WkNvb0d6WXg1QlkwNDJFd1dWWTI3K09Ic1dGdDRkSlhSTHd1eThHMGNiRFIrYStRaE5FYk5xckNQM25GMjBFWWV4VkV0cFN2MGVCSy9uRGwwUXVxZENpai9ZQlpPWHNNaE9DbnNFVWNSODhHeWxtNWJQNGQ4YjRpYjZ4L2lEQVBjeVRINXg3OGhhTjQ0bG1Pb0Rqa2gvSERhNWR2SUtPOWdQelR5YmJJL3dITnI1b0RLQ2xwNkZvSlZ6ZnpValU3WUJwZFptTTgvWmpMYXRwYVFaR1JlZGx4RzNjdmNVMDBmTVFLS3BOaC9tdEZBcXVqOHFneTE1Mm1SemdOcEd5NzZMVmplcXdxNmpKSEx4c3c5TmtuYkY2cFVJU0ZmSThiL1M2ZlhZL0E1Wmw5WEVmZzY5bFg3eE00SnNnTHA3T2lvaGhxWUhMWHU1dkg3NE9hV3NVYm5uUlhGRHZDN0NlREtqNFFwaVJZUmtxVmZ4T0NwOUdKSk0vVkJEN0hzaVNOSFgybzN6K3RXRXEvUEo0VjBsMmVoRDc5cnhSdm56QWJjVHVIM1NCOFRWQjE2U0NrM0UrTXJ0cmV5bTc0VnRMeWlIbVJCWDRCaXRkS3hsSFRiWUZuZHcxa1R0MGdVbWF2R2dZMnhDNU9mZGdFaURrTGs4M2VuK0Q2eDVIL0pnelFNVy9CYkJzMjErSVk3ekxmWGllYUpubU81L1YwcVVRR29iM2dodTBPWXlGT3V6YS92VkpaZXVVeDgzY2UxdXpOZC8zamtqVGVqTWhvRjkzbUpyK2xud2lSamtEYkcvNEZ4U3RUa3pWQUt3Vmx4RFgrRFoxdVZlemtpNlBjUWxaVVpoTzhFa1FkVUlqUVo3YjErbE02VVVvK3k1Vy8rZFV1eDlseWhwSXZkbmM0MjV3NCttQVhoc0daRVlvRE50RDNrYml6TTdMLy9MSzh0STFsWnord2lmKzlaSUFkVDJZcFRydDZLcFErSVozUG9FN1hYZXVCK2ZNRDA4YmpPZmlEY2UvOG52NUJOWTBMUDgxRzA0a0g1MDc1REtBT0ZqeDZ2QnJiNnE2cVJleXlXdC9nTGV0d3BDMzhCcjB0L2U1YThqOGtoY1JyRk40UElWVEw3UExnamlKUzhpOVBpVWRoTndYdXN2d0NtNzU2SldJWFZlTENFUG1JNFVaQ0hObk1XMGYzcHNpWENTOWQ5cm5rWW9HQXc0eUdjMHVTSkdCcjFxc1R1T1d3V1ZRWTNGY29qNFJwUm90Y0lyVXVjcHdmdGdVZEJGWjRlR2RvV2MvYVdnQVBldWNrUWtVK2hVWG8wTGRpVUF0aVoxVWxsMzRyN2t5OFVVMDNwTW9EMVRZaDdUbkozdklCL0xLOHRJMWxaeit3aWYrOVpJQWRUMmJwOEJOMm5Ud0pBQVBjZ3llOXA1UnY5TkVGbUxkT2tTbHhDVUdXTkYxQ2YzMUdud2RMaWdXNy8vWEFhVEt2QTR6cFF5K3c3ODg3RGtKeXZ2MnduT0p5WEh1RHEwbzF4YWJrSkxYOU9EdnlFWllDQ1VwZ2pHUHpjY0pOOVZ5Q3dTSlpyVlBCazlKWUZTcFZ3QjVyZHc2TXNyeTBqV1ZuUDdDSi83MWtnQjFQWXFOUktrZzhDZDhkdU5Eek4rMnk5dXBxN0xObUQrMWQ3RlVYdkhWcW00d3NzcnkwaldWblA3Q0ovNzFrZ0IxUGFLelI4dE9LZUxTY1hvc09rRFI2bVdDN1psOW1PVWhZQitCS2ptUGJOcmE4c3J5MGpXVm5QN0NKLzcxa2dCMVBZUnlIK1NOYzFYcXhUcGhDbDZvcVk1WFR6NVBjckJDSHVxcEVvaWtleFRQSnFibXAzNHA2Q1NRUkk0YnlSQkI2bUdkb1djL2FXZ0FQZXVja1FrVStoVWl3cEF5VDI3Rk1rOUN5WXl2WXRoeDVaUU9vYllZWFZrK1NOTG1nWVV5WmRlMDMvNytQWVdsakFJMDA1VzhuRENEK204Y0dQY3RSdmhnZktBVXM3K2dyeHhKVE45N0FaUFRoam55R09mQUY5d2JXc3A3UFJQSEhDRVpnaWd2WkpmWXpJa0hQeTFvMGxHYmQzQUtzYlg4SkZoOVlXdktWcXkyWGQ2c3hqaWsrckNXS05SY1V3Uy9GbHNJczZGTG9nSndGaXRIU2grRUtKR0NNb1V1RkkyMVBiSGgvMjAxbWhLQVRIck1vLzhmNGZzamJMTlkyZFUwMnlvSnlWOXBhOUkwMjJjbCt5MGdZVGxBTzh2YU1QcnhsRm5sRUdXamFXbGhnNm53L1dhdXV6UEVvWFBzdnNOaGJQRUVSOUtwQi9yUUEwTEk1VGl2SjhISTRzSWdWZzNCMzMyR2luZ09JU1pFQ3Z2VkRUQXo5Uk42ZmQxR28rcGl2UmQvaG15WERsV2FrUEtzRjlBK01SbVh3NHVGZ1hIV2NzcnkwaldWblA3Q0ovNzFrZ0IxUFk0OTltcDhTcy9DM3g4bVdpamNVZWhVcS9KUUdlTmIwaVBabW1HaU9QV25ibDg2UzVYZGxELzEweEhWRlBLb29JbjE5UVJ4SWRhK1R4K25LZkQ0R1JnbmoyUlREdE1YdUY5b0dWVmJ5YUl5c3NyeTBqV1ZuUDdDSi83MWtnQjFQWUJ0eE80ZmRJSHhOVUhYcElLVGNUNElvSXpPbkdmcXdQRDluWWU1T2Z6L2dheUtyb2pISW9iNjFSTEthYUd3Q3lMbkFweWN1QzVsaEJQTlkzN3k4aHphdkdnWTJ4QzVPZmRnRWlEa0xrODNVQWljbzZiaXdoMFoyRHFhNEx4UDA1MjhhRXFzc2lQSnJYWElHbllzeTNNY3VTUCtsOWYrRXVocW1xZlhCUzJRNU9YK2pYMENiVFpIZFVaK0JZTUN3UkQ3OTNXd0c4UFIzMGQ5dWNTMk14YmR2R2hLckxJanlhMTF5QnAyTE10ek1yU3ZuL2RZK1VsS1g5eS8rdXNTNUY1ZWpTeHQ0R3BrSkxhQ2VJZXNsS3I1RmtkZW5OK1dZZEQ1NmMzbUhncmF6MEp2bGk3ZUE2VkZHWEgyOTJkb2Zpa1N6MzhqUEExOTdvRTJvbi9YOFJidDZLZGc1VVBHMTBMcHNnc05RS2doVFBlWmlZMlowVW05QkNsL1hzTHFRellRRUhjSHpuTlovQkJ0RWlSUXpnNkt1UXY3YzlRWFo3amkvSXZxYXhhV05ZcWVEeVVXRHhEMndBdmVxbVNJL1Fhdk5TV2hqeWc2Rzg5WGcwZ1V4a0FBL1A1QndwQVFrZG9XblgyVlMydnE2TUtjcXpLZXhIdk5jT2J1TEZTUmZEZXlUZkhEZURvcllDV25pWkNTZisyekZWbDdYKzZZV3ZQclN6eThYTkIzdzByMFQ2TEsreTMwQU0rWS9acU5NeklITTJvQXM1K2dsRmx6UTMvdG9GMjhmRUNrQmJvZVE5L3VnRG1GNkdaU05oQVFkd2ZPYzFuOEVHMFNKRkRPRHAxTnpaN0NZa3ovRHZGZWRNcGg3MmxFR2YvZy9PTmtObmdJQ0NadlVGVTJtYTN5My9sRUR6d0FjWm42c1dJSE94SmJGdFUzdW1RbTZwRENYaDVkM216QmN5Y0drVGpuTEdUcjhGbm0wb0ttWTJsK1M3STdCeVRRbFpKMGxRRVRKNy9QaHBMdkhmNFBESDM2cWs3ZzRtQTUyQk1IaTRuaGE1NHRQQ2lGb1JKSUJxbG9obks4MnlSZHFxWEIxaW54bUFQVFk5NGxMZnRvMnFwWnpFaHhnUjFkVnJZYjNnNDdCb3V6Slp3eGNiTTVQRmxUZjVReHVyUmdaWm9CNThUNDJJYWhWcGxheTkvL1dJejh4Mm5UMGlwc3pxOXIwMytpTE9UczFmc1lFRFFRNnJUaWF3Y2Z6RnRJYjZmWXdaZnRMTDJrYzYxUm5lYVdBcjc0Znc4bldFUnVkcWE5T0hRZG5pOWRCRk5KQnp5c3ZlZDFiYitKSk9iZXhDK0l4TVdkV0RyMDJNaFF4R0JTNFJNRzByQi9ybFdaQzBlMTJhNjRWUStxQnFGdzgrZi9xaWQzVkd0RDVRTE8vOG1WQlcrZHVWTktZbVhhRGd6ci9jVnRRMUF1RFFRT3FXYlU5bmhRamRNVnI3YS9pOE8vMjJFNmlyZEdZbFVBOUQxeDJxUkJhMUd6Z0FnQ0VseExmZWd2Mzk2OWM2bDA4VXVrQ0o3Wi9FYlQyYXd1cTV6cmpFSVJ6Nkt3VWFIL0E2LzJnVnhrQTliVlhicWlLVVZqSmNWbjYvc1FjVHduYzk3OGNWTTJxTUV2c0NJam5zY1gvNWVoN3NzdjdabG9PamovTEtlUlZHcVJ6NzV5YmdFV2RIMytVL2pldE1LSmRWQnYzM3JRWnZNTmRhYURkWmdzV2MvbUhJbVBLMmZSNVo3VmNBZTRzNUwwaUZLa1ZRZ3RiZFJvcHlLM3U2MnNzUzFTLzhPcFRZMnhMUjdKRXFpNVFqaU54aWg3S1FVak51SlBCTDBwaElsNGs0Kzl6OG40VUJ6Q2I5b0hZWkV5eXZMU05aV2Mvc0luL3ZXU0FIVTlyZ0x2eGlaTGVtanRESmRxS0pISEtQTEs4dEkxbFp6K3dpZis5WklBZFQycWMzYWJsQlZreEN0TXhyMndCQmlJaURWUURSbXhqQTlXRUphWEtQNjl3UDE0NDkzZ3MrY0hHNEdGblo2N1VoY2NLeE96RFQ1MFJ0bDk2MXZ5ZG9CMFNETzdDSFZ5bXJaeUw2VmlTckZzaGdJNGpjWW9leWtGSXpiaVR3UzlLWVNNNG5WRTQ1Z0RueCs5MGVoMExxbG04QXVkcUNTcGx1bzhONmhJMGVqaTkzT2xETDdEdnp6c09RbksrL2JDYzRuSkJ6M0hPeG9QQzJ1cURoK2w4b2RSODBCVUtoZjUvczc1aWpMQWRMdWFQUE9sREw3RHZ6enNPUW5LKy9iQ2M0bmtPMmhGK2h6VlRJTzNkS2ZUYkEzYU1zcnkwaldWblA3Q0ovNzFrZ0IxUFpZQ0FwSWVwT2o3TUYvRDVSSnlrdVVkNmlIRS83bHdlWWlWMUVxVU5tVFJMVm5DMHdueExldXU2NkRqRW9Sd1dPeWFvcWtDdGtYVFlYNGpCZFVCd1JUS1hmR3FuVVArWXRoM3dMWm5LbmZiSVoyaFp6OXBhQUE5NjV5UkNSVDZGUjdscGZxTjJQNGQrOWVmdXgzSU5SUHJJSXZ2dWFGR1c3WTNkYXVPbXd3TTg3ZFJQM3BZaDRheWVSV1Q0b3N1ODJIWTd0N1J6Smx5M2VuL2lxemhWSGt0T1BVbGdBU1NFdWViY2NjOWYwWDRjNlVNdnNPL1BPdzVDY3I3OXNKemljT1p0dGRtM1VZeVJFb2N2dWRRSTZCVjRDWVJnaDFpdDc1MXo1MUVxWThoTXNyeTBqV1ZuUDdDSi83MWtnQjFQWnFaRHhvU1JreHZmL0xxRW54TDluclByOEF6REhHc3hLTkxXSFJCZkM4NjhzcnkwaldWblA3Q0ovNzFrZ0IxUGFiQjQ5N2pVZE1qb3lFbVVCVjM0WFZOc2Iwc0pSbEpsT1drYU9LcmdwdFljRFovVm9OZFF4N0dvRkg5SHJ3b0RkT3B4UEx3MCt3VjNoTmt5c0cyWVJxS1VzVFVvL24yQ2o2VFpsdFRJUHVGeFhiUlUwQ2dnQXV4MFJYVEFWajg1SGFBM2hOR0xuQVBNTXB5NTEzbTFGNURvd0dBUVhqWDBQNERPa2M5V0dhaTlBRVlEa1hpZmV3SmtSQU5rYlF6blZ4enFnNUZLTXNCMzc3ZitMTTlvbUJwaE1iZEt6Z1JFdG5GNGJpdE1veHNjc3J5MGpXVm5QN0NKLzcxa2dCMVBiVWF0KzhxNDVnVXZGeFpURG4wTVl0Tm80aGlMZjhFdUZLRzlhME4wdHN6OGt1d1lCM2hZUVlYZVJaSlhBVmRldm9CYnlaeERHMml1YUVkTzE2NDNITHl5dkxTTlpXYy9zSW4vdldTQUhVOWhmdE1oeTVlNjRzU2xPTzFvTUVrMXN0OXhZdi9icmV2YThrNFRrc0xWSXYxUVNyT05HUWsrWTFXUVpVSlZBRXJnVVFvb0p2WXJDYk9BYkM5TnFOSnRmZW0vcEs3NnEwakhjK09sU0JYbmM2YkNiS2k5UDk3WjBuVTJGMEt5alIrZUNTU0hPdzlrcVVCZEtDbWdzUHBBeDd4eklWZ3RxRXZBUXVITmlXTVNFcVQ2Smt1cVdVL0IyeHJnSHd2cHBGZjl2ZzhZdG5wak1MNW50OW1oVnp2V1U5T0FENUNDSFBoNUxVZjFIRVlubUtRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzVG1nbEQ4QSszc1RabzJXL1RQTmJydWJFZ2ZhUkdmR0xHdFQ2UFpkY2RUaDVhOUFaY2Nsc1Jjc1BNOS91M2ZFNG5hcmsrUWZ1VDJoMDB1V3NpMG1ndEMwREtXUEd6ZGhRMGttajdQd0ZJK3dZZG5qZHpORE9GQml6a2VRdDlLck84VkNpL2lJSk9JL1pqalFrbzhFaVlGWEk3cnVlQ2hoTmx0RWdQNkVHWUk5T2FDVVB3RDdleE5talpiOU04MXVzZWE5dlIxTDhiMk1Zbm5ScTg5SlVKbXgxVnNNbmM0NVg5RlZhLzh3UWd4M0ZBSEhEK0VCZFBQaGl3N3E5R0M3ZHpONFRRMGp4d2dKVmZ2YlhDdm1nb3p3ZUFxM1o2S0hBYzUyWXIrdXJJR2taV09OSFpBMlRIbnBYb1ZKWjQwR1M5bHowNElaL2NtbWErdC94eGNPTXNFRVMveXVSQkJybmNjUVJTeEdMem5ZbnN2Q3Y1VkRHRk1TeUswbVJabTVsVFBRYm1ROW1HYi9LblZtNXJJYnhyRHQ4OWx0aElkZ3VRQjFhdE0rZTY3dnpRQ0ZyWjlIbnNzTkxwdWNlMmhZcmZIbkRrR1FQTkVJa2ZtaExDYTJSeUlsdzcwQ1p0UzlBdERtTE5VeW1RSTNsMEFRbnowNHFnYlkrek5oMzdEYWJjdHc2ZytsOFdKLzhJdCtnZ0x6RmRaSnJzYkd0QnJRWmx3bkQvZ3ZXeTk4c3J5MGpXVm5QN0NKLzcxa2dCMVBZcUxPdGpac1FCZnRQK1ZBd1NsLytZQTIrMTBsS3NIYUgvVE9IY0xlZGZ3Y3NyeTBqV1ZuUDdDSi83MWtnQjFQYjU1bHY5dUlpK3VhRTlseExyRmhETWxlTk55dUdVelU4OEpOYldKbDU2eGxVSlZCNEhXL3FYVWZCQWY3TFRNMmVsbWY1TFBsbUZSMVhSNTAzNXNFSExMR0FGQTcxL29yMDlaUmMrYzdTSWY4TTVFNjRxT0l3RVIrbWNFMTZVWlI5SnJQOWc4M01UOHRTNjIwSGVYbTJ5RTk0SGdYRGxPSjNmVVNtWDg4ZnZUUG5CSnB5bFluSXFDUjZIdHNyb2ZnVklaaU4vUE9YYnE1bDNvNGg1MFowcGR2R2hLckxJanlhMTF5QnAyTE10ekhqZWllNzFoZ3FobjEyS2ZmWml6QXBxWHhjQ3IzSXhFTHNQdW52bEdCSGlySVRpQlFKQ21CUW1LR3JyNVhtdnE2TXpPMnNha2JqUWQxNzg1NGJtZkpyRE9ST3VLamlNQkVmcG5CTmVsR1VmZUNiOUU0emJzdytwTzhMd0J0K0ROc2RnNmxidGh3Y1c5TlNVMDlUTSs2UmJWWGJxaUtVVmpKY1ZuNi9zUWNUd1VmQW5JelNzb1ZYM20wbmJVV1N5NG5ucDBCQm41c0NYcDBxcXE5a2NyejJJVFFXQ0lvK1ZCcUtqc0FrSkhOVDh5eXZMU05aV2Mvc0luL3ZXU0FIVTl0OTRnR1ZrWlJ2ZUpCc3hOaDFMenA0Q1lrQXVJa1cvMFd4YlJhcE1rSS9qeVZSczB3TXpYdldmSG9sekhpdDYwc3NyeTBqV1ZuUDdDSi83MWtnQjFQWjh0RlVPV3oyS3pUbDVFeHBZY25nYWZRa3ZJdFV5dnJJZ0pkV0gycXFVM3NzcnkwaldWblA3Q0ovNzFrZ0IxUFpsQTB0WGpCTE00UkRRM1JXNmtkU09VSTZScllScFZ2bTlzWlplZ2xwTDRJZHZrYnE0aTdXeEM5ZktMdU91cmtWcGJaaUl4NFVBNmdUcFlRWER3eXFyeXl2TFNOWldjL3NJbi92V1NBSFU5dnJsU2dhRVd0dFVpMFVBNytUbkQ5TmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3l5dkxTTlpXYy9zSW4vdldTQUhVOXN0ckVYam9iWHo4ZjJHWlVVQXJxOTRUVU5FSUtMUXZ1REFsRVJEUFBVWHVjb1VmRFdYdnFBU0RHSjc0QXgwRUcrRVhNd0RxNGp4cnZXTUlUWjY2bVVYTEs4dEkxbFp6K3dpZis5WklBZFQyNWZucmtJaENkd05ia3A5ZFJrczZkc3NyeTBqV1ZuUDdDSi83MWtnQjFQYkxLOHRJMWxaeit3aWYrOVpJQWRUMmpMbmQxTmpWUVB6U3lGZ0xWd1pFRE03ZFJQM3BZaDRheWVSV1Q0b3N1ODNMSzh0STFsWnord2lmKzlaSUFkVDJtajVXTm5xaWN5ZDJzUDlFd0cwT2JwRmlGNTUwRVM5OFJNOFlTQU1DNVZyTEs4dEkxbFp6K3dpZis5WklBZFQybkQyMm0vWk9uNTdYWGJZZWFEeHZYbGhqc3J1elBHR0lqSWk2YmpLUU85WExLOHRJMWxaeit3aWYrOVpJQWRUMldJeWxKclZub2FLNnI1KzZQUFpIYzVIeElES2s2VzhXRk1MU0FwQk9pRmdSaHBWNFdtblV1VFZ4eEQvK0dvMlB5eXZMU05aV2Mvc0luL3ZXU0FIVTlodmFlNEVEUGtIc2VvWE5NNzV4Tm5KNnJpdTVOVzIrdG9yS05LOHIrRnJleXl2TFNOWldjL3NJbi92V1NBSFU5aDVhOUFaY2Nsc1Jjc1BNOS91M2ZFN09sREw3RHZ6enNPUW5LKy9iQ2M0bnZZdTEyRHlYTEdONC96WU5ibFVESm5UbjgyTkpQTzFhemEwR1NzaWlTQmZMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9Ud0JpMmdkWUhqa2FKeXI2YUpGbTJVU0tKejZIbnFSZnlLd0xUNHk4SGEzUEh3UHY1N3hvaW41a2ppVEdDT0srTXNyeTBqV1ZuUDdDSi83MWtnQjFQYVBXb2RwVWhnSDl6M2lTSnNTcnpQOHl1bTBrODZBQ1FvR3ZxNE5HcFFjMmNzcnkwaldWblA3Q0ovNzFrZ0IxUFlDQ2tjaHlpaG9HVi9PbzRjRDB6bE9ibkV0MTNHUkZwR0t4MVFoUjZyWTh4ZEttem4yTitnb1l1cDBYSzRFdjhyTEs4dEkxbFp6K3dpZis5WklBZFQyZVFXT2JTSWp5THV2dTFJQWZkMzF4eTBWcjJoRkVVakxVWmpWUGVaSWZjRExLOHRJMWxaeit3aWYrOVpJQWRUMnd4N0Jia2ZHT1c1Ny8wSWU2OUVKNnNzcnkwaldWblA3Q0ovNzFrZ0IxUFlYZXd4SDEzZ092dFQ1UmhDWWVIY1cvYVVGaVRWWlRZNG9DeTl2bzkxNXBzQ1BlemZQM3owVVVFTkxBbng1RmFNb0tpSGxQQTJSRUpKbnR4VjNoVXkrZWRjOHI1WGZqbXFLYzI0N2tubldjY3NyeTBqV1ZuUDdDSi83MWtnQjFQWUJoa0t5THJyRzUxSnI2NkxYZlJscjVsYzZ6VXJ6WndPditmRWdGV3VCbWFEZktuQnlIU2tpMnBMYlJsS3Y5dFFqbExGMS9CUU1LaXpFbUdELzc0UkxqODVrUXhseTQ1WnYwMUc3TmltcjlSNFBYcFNLdzNvQ0pLcm5WRFJYeENNODczTGx5Qks0SzlRL3o3b0Jab1RsV2JHTlZNTlQ3S1NxM0V2WFlDK21hOW50TkF6ODFkVEtVNnBqMWozc1RuK1lzN1U5UllOVklGZmhrS0JmcWdJOHl5dkxTTlpXYy9zSW4vdldTQUhVOXFGaVlOaTlCQXdNMVpsMGNWT1dxdzRBK2ZUbWVYQkIxTDdpekdmTHZZM2htZXZOeWxLYjNtZXZnSnRZMWRSM3I5aWdWTHc1OGdqelZIQk9JbFVka2paQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFeXl2TFNOWldjL3NJbi92V1NBSFU5dWlacXFKd1llQmh3RmMvV0RiSmFueDI4YUVxc3NpUEpyWFhJR25Zc3kzTVl1bmp2V1R1d0F0MEdtMFNJc05PVUZRVGcxTjlJY1JuNE16RzZUMXk2cFhnbkhDTUFvQVpTNXRWZkdFZThsUG93L21ZKzlDcndDblJWb1FCcEw4Tmtjc3J5MGpXVm5QN0NKLzcxa2dCMVBaSFRyTUJ0RHRSdlRYeE0rT2NiK2lvbEFUNHd1R1puV09FZFRYbVdIVkQ1bWZjRVNGYzVlMkwxaGR2ZXI3dDRLVFJSN21MWGpFNngxcUNKT014WmRqaGRHKzZFMnV1Y1JIUG90VUw2Nks3anVVYUtPN0RjRm8vVXJlK2lHanNEbUR6QWloMzI0cHd5d215b2NncllxUnpWSzJkU2VibytTL2ozV0xtaC9qakxKZ21zd1RZeDQyZERHc3ptTjJ2QkxYMHNhanZKOVVxTHE5UlZBcU9yUVVUWFNBMWpNT2ZaNzJ0NmRteHBSRnJPSGJ4b1NxeXlJOG10ZGNnYWRpekxjd3A3U2MvNjJqSDRad1FaUVFTVG91aytYeXdsSnl2VjAzYk42ZnZmZytWYWNzcnkwaldWblA3Q0ovNzFrZ0IxUGJSTHNIdmJ0emlUNzQ5RjlJemNnU292T0ZVTWh5U09jZy9DT3FZMDRSQ0JxL0VlaE1QNThWMklIcW5OaGFBRWl2TEs4dEkxbFp6K3dpZis5WklBZFQyS1owUFREejk5QjNzalJYSEZDbjZoZHd0UVpnbjZPRVdSMHB4VmkwK2kxVU9ESlJWQnVBbkFSQzZ5OHZaSFdwNnNIc3Q2YllXMUpKZkNxSEJRZDlqNnhweEhYTWVsWFJCSkIxVUJud2xQMk5USzM1T1E5citmdnFnbWxzWGc0OUxFYm5CaWZmdDVDVG9qdFBUTUQ5VTFlUEE0Nk8xTlpyaXJHVGtsQ2JiRGtrM3V1QUpZbFBoVi9UQ2VIWmUveVNSR25BZXRCdkFpNWJreW95Ym5HWXZpTXNyeTBqV1ZuUDdDSi83MWtnQjFQWm4yZDlzSVd6VUFiZFN4Yk9ycEUrc21pTzZQaTlodHB4aW8xSjNNYWQ5SG1RVy93NElYbi9ObUJhK3F3RFRWeVBPbERMN0R2enpzT1FuSysvYkNjNG53emtUcmlvNGpBUkg2WndUWHBSbEg1bFlMMUV1NGJPSkdidzZFRCtwQ05XR0lhWXJkRFJpZUVDSnFlb0UwQmtOYjRqOVc3WkQ2ZmNlRDhSSUlRSkJRd0FLTWtoYzcwQzYxSng3UWppcWZUSExLOHRJMWxaeit3aWYrOVpJQWRUMlNueWlCOUZXWnJSaFRiUGRxdnFUKzhFTFZsaGt6YktvV05sM1llY3NTdkNuaHAvVDVJL3pwS2c0dW5wMmlKMmNqbFo5MW1rMTFQcmFnbGlzK3FFMEFmQjJTUlhYRXFzejUwejA1YlM5dnVKNThGTDB5dm1YdmpWZXpJU1pvelFUS29CTkVFejJLdnVTUXNoclZNOXoyd1E0SGNQU3RRcmNCQVRwQzBCZ25sUExLOHRJMWxaeit3aWYrOVpJQWRUMkQvNzN4bWZUVTlnUFRKdC91K1pxOGFaY0N6TjdVdzAzWUpTUlJxSncvWVBMSzh0STFsWnord2lmKzlaSUFkVDJCRUxCcEpZNUswZ3dnT1RXVTZHblBhSVRJNU5QeVBrU25ZdFBQUTRLREcvTEs4dEkxbFp6K3dpZis5WklBZFQyMG5PS1B0NG1aV2tycDJGS1Z4ajBkZE5Pa3Q2bTA5QkJ5QjMveGQycHZPNFVoekdLalJtK200RjRIcG44WThOVEFvcmFjMW9MSnp1aEtva3UwTDZ3NVNETkI0WWl5aldhNTBPUm5BaDMrVU9tb09jRVY5dDZ1bHJ3VkJTalFYSmdSd1NrTExWYUhWN1ZqRTBwbUZzNjZYakxyemxZbURKZE42eDM2eVBqV2trVnBkaDl4UDVlbWV2b2ZvQ2R1LzZMc2xWUkxxUTI4TEF0TnlRRlllRllhaUZERzJleFlxb0M3a1ZuRzhCbDRXL3VYblc4czZXOG1UUWVkbm0wV29zZCtIb2Jkek5TM09GRW9oRXZrZGFuUnNzcnkwaldWblA3Q0ovNzFrZ0IxUFpnWmc2TDY4KzJLMm1Ka2Joc0d1clRCZzVQSGN2ZWhWUGsrYmdvbzQwVnRzc3J5MGpXVm5QN0NKLzcxa2dCMVBaNkJuYzFiWFdtTkJEMjJ4Y0I1WmJWRk1WTlNNeXYrVzFHRUl6ZStBVXo3VnIyUVYvbGNQV0JEUlNyWmRkUVpNNnl4eEcrR3hTR0FRcWgwNGh3Qk5tb29CeWZKcHJ1WjBoazd3azNUdG1rTmo5MGx3MTcrZ1VIRU02dU9vV0RydFVBTmZ6U1VEUTZhQnc5TURVb0NhMDZRaDVKL05HaTR3NHYveVM0b2xsZFk2eGp4TUs2aUpZU3RlbkZtNzF5U216TEs4dEkxbFp6K3dpZis5WklBZFQyNlUzL0FVZ1J6ckJBWFFIb0c1alR4RGRSaVJhalkvd2ZGUWkwRmt4bEVCUkRnZHBhQUpNU0pOZWQyL0RJalFZRnl5dkxTTlpXYy9zSW4vdldTQUhVOWdQSDVHSUVzZW1kc2pwNnE2bU1XY2ZtWXhLVXBkcWxSVEdqUk1COTlGaFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlvbGU4eURkSGpjNDhQYmRhS3gyWWxBS2YwL3pzTnhWd0hSU1FDdEN5NTJJdjFJUERMQ0tYVEkxL2NQVnFwT3FsY3NyeTBqV1ZuUDdDSi83MWtnQjFQYVk0d0gxZisvNlh0VERpdFNRYnFtUnVFL0xoV1k0a011cStkSGdsdmttUHhYMi9VZHFBVzQ3VW9odFE0Z1lCMDl3RnNnRDNRTU9YUDc4aVNleHhPbXA0VVZrMGdUS2FCTDdwR0xYSDRsSWY4c3J5MGpXVm5QN0NKLzcxa2dCMVBhQTFybnBRS240ek8zd2lYem1yTUVJSkphVmxGTW93TE1LQThPalZ4KzR0RDVjemFxR1JrZzhFeWp3THBzMklSOUZrbklIb3hoYldtbDlsckZURElSWGhvL1R4NkkwTTRUMHY0Y0JkZnZvcGFJR21PWk1YYXl3MUhVN3VQakJNNVdNK3p5c2tQQ284dnM4Sm5NbGQwdkhSUHBuR293d1VBL3hYMi9MZjRiTDU4NlVNdnNPL1BPdzVDY3I3OXNKemlmTEs4dEkxbFp6K3dpZis5WklBZFQySWd5bXRaTndoWnUxTEJZMmRGcHFjODZVTXZzTy9QT3c1Q2NyNzlzSnppZkxLOHRJMWxaeit3aWYrOVpJQWRUMkc5cDdnUU0rUWV4NmhjMHp2bkUyY3BxYm1wMzRwNkNTUVJJNGJ5UkJCNm5PbERMN0R2enpzT1FuSysvYkNjNG51NjJFWFFQdlo0bnhaaTBScGdMRDJjc3J5MGpXVm5QN0NKLzcxa2dCMVBZVFhNT2s3L3hFM3g0Tkh1NG1BdEZHeXl2TFNOWldjL3NJbi92V1NBSFU5bUV3WXBObW1qTmM5SDdmL3NJSnVHN3RXSWdxZ2cwcTNOQlBDM3hmUExObzBPcm1qQ0tWWFEvYmR6bURrL295allrdEhmTDROZk5mUGw5blBUcmZzQnZXUGtjYytxTUlxYndXQ1dVK1l4cVF3Z0VHNXNCcFF4QUh6b3NxcmFpMFBjc3J5MGpXVm5QN0NKLzcxa2dCMVBhZTZPeis0cTZBQTBod2UvaTJXNnV3TjByZWpDVjRnc2xtYWlzVEMrOTZWTXNyeTBqV1ZuUDdDSi83MWtnQjFQYUl6bTZ3N3NLTVlxZ0tKditGM3ZkWGhuYUZuUDJsb0FEM3JuSkVKRlBvVkFqaU54aWg3S1FVak51SlBCTDBwaEpjMVlaTHJkQVN5Sm5lYldUY1VETTJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlqY0J2OVkxdCt4N1U4aTdXM3RHTXVxR2RvV2MvYVdnQVBldWNrUWtVK2hVU2Z1NVJiSWNuTEVHM3llcVVJTitaSjVXcWVUekFObkE5RWU2d2VHMi93MWZwRUJSYlRlWXdDOW90U1JqSVN3aEpqZWgrNEwxaHpiMTZ2ZUUzVlJEWWNzcnkwaldWblA3Q0ovNzFrZ0IxUFk0OTltcDhTcy9DM3g4bVdpamNVZWgwMjJjbCt5MGdZVGxBTzh2YU1QcnhvbVUzS0JqVzlPREdlM2VoNE4yTTcxYlZYYnFpS1VWakpjVm42L3NRY1R3Z09MM25jT2M5T2tSWUV5WER3aXpMQjNUMGtQKzRDZ2MyZkZLcHVSeGgzbXdPNXNsRmZvZ05rL09QeTNCRHBKeVdiZFZDOEtpZitJcDNlUGo5S0lBNEVnZWJoYzM4bHJ0YzJCMGtYRS8wOHZMSzh0STFsWnord2lmKzlaSUFkVDJsZ21JNTAvMXY4RVR0NFJOZDkrVlNZWjl0c20xZFloU1BTbzJUUFhsc0lmT2xETDdEdnp6c09RbksrL2JDYzRuYTdHNVFMVUQ0ZW9HeW5HanhTeFhHc3NyeTBqV1ZuUDdDSi83MWtnQjFQYVJHZHc1bTljU0o1SVNucndHbkdtd2p2QkFyeklkY081aEs3UkRlY1l0L0FlTTVYam9jNklyakNVaDZvRTROTCs4TS9jQStqY1RvVEVTQWZIQzRlK2VsNjVUSHpkeDdXN00xMy9lT1NOTjZFbXMvMkR6Y3hQeTFMcmJRZDVlYmJJVDNnZUJjT1U0bmQ5UktaZnp4KzlNd1NmT0F1bmZFQk9qcFptYUhNbC9hTVVDZlNGWmVkMTZwVGoxZnptVjc0ZmxjVkVseDdsRkpLeEFadUZ5aHAwVFYrSE1hTVFvVWZUcC84WUZjWXVud0pOSGloTW95dUxjTjB4YVhkL0RtM1hhNWd6VndyNFY2MU5PemFRSzFNN3B2T3QzUElUWW9Gdm1DZmRoYjdTUWlqZmRsOU94TmNvTnZNWllXZysxekxuTEs4dEkxbFp6K3dpZis5WklBZFQyM1NnV2wvZ3paODBHSXc4aGFnVG5JZUFwRUJhcVU1amowSyttU1JJMDR0eHVsd3liRGJtU3VwKzVlYmZVQ09BOGtKV0E2L1RaS0wzN3Z2T3k0WW9QaU45R3RGT1B6RTc2cFErYVVSM00rWDh2N2crdkxGWmRORElMcWpRaGJjcitSK2VMQUlMb1ZpOUJJTG1JMWVCK080UnZVSk5ybml4TndZTVJ1QUUzeFo5Rm9aRnlWSEl1MG4yakJsbHJJbjJ0SkN3WDIybGxHN0NvYUZCN2haSnhNRVdoa1hKVWNpN1NmYU1HV1dzaWZhMW5Nc2NtWmpreEFqSlQ1eTZWZ2p4cnQvajZXYTZHQkw2dnpSZXZta3V4RjhzcnkwaldWblA3Q0ovNzFrZ0IxUGJXN0hTRXlmRnhTbjdVUE5pRk11UnJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlxTys1ek90QkJUUWpaUUJyeFFsMCs0emdrMS9pTkpINFFFMzBjcDlDSlkwSGVGVUI4NVpQaHJTZm4ycXROOXNNTXNyeTBqV1ZuUDdDSi83MWtnQjFQYllSaEViM3p4UzhEVVExV1dzME4yTzlES3RzNXUySHo0bFJ6dGoza3JJUHhFYU9ObklWd2xEOURwb2x1L1F1a1JiVlhicWlLVVZqSmNWbjYvc1FjVHdXaFJRYnI0SVZyQTdTb1Azb1l0SEdCdHBoMk9raTNxYTlUK1ZmZzlEQmJqbkV0cnJ6WnFWcEpIQ0VWVXVFaGFsT1BRdit4RzdPcUxDTzVVaVhOL0tiWXhhSElMMGVGVEYyTkVwT2tsbmw4SGFmSnJPT2h1dFYvZU1ORGNJR0ZqSjc3Qis4UURmUEtkQUJVcG1sb2hpdnpGVmNLbS8yN0dibkxBMnBmNlBDYkRMSzh0STFsWnord2lmKzlaSUFkVDJ1Rmt2ZTRTdTVkNGRiVXlrWTBuaWRUYU9rbGI3VExZeU4xNXg2WFN1M2o1OW9IMG1xaWpUNmtmSm9pZ0hTa2EvbnQ1UDhnMVhNWjZZWVk2ZElWSG5SUHpQZFdXK052SlRsaFgxSTdJV0RKT2Yza1lzckpEWHI4bmNzbHdRWmZscndnRUc1c0JwUXhBSHpvc3FyYWkwUGVMSTk5WXJCQkIxcG9vVUR3YnVhUXdyMHFrU2xSV1BZZ1BlUFZqbkJOY2g5NG14NXRUSDJGUXd5V3VRcTN0eVV1N1pSYU1VUHlnVnQ3ZHlaVE9DeVRLd3lIYWNTSU5wUXE2RzVTeldqSisvbUljTnJ3djQyb3QwUWFYdWtKR0t4dFMreUtYQ1V5bVJvZktRQ2ZxVlhJeHVkZ0crU2l6bzJUejJTL04yZEt0OGUxTWdYNzdwM2VKNUNwUFhONlBjQ1pLRUFEVjR6OU8yZWxDL3dtSFVzNi91MVo1V2oxYVVvdnRNTDdKOEgrL0NXMkVKNGF2allYQlArWHBJZHBKcWEwRzllUTI5dTJYREpvRFc0bWx3dGNSMXhKa2VrdmN6Zm5lZnZBQWdYYXpqZk5sWWhoNHJ0RTFYNFFlMm5zclR2RFNLN2lUTE8rZDRnbDM3eXQyNDhFUHlIQVNVM0NYV0dBMG5ZOUUvTi9zK3dIMEJmVjlzUFlFQVZWRytNZ0hMbDM3czYvMmhzQ3RyWXZWWUpLYmdMRVg3N01XVWhzUDdFTk5CMFZaQlVlMWlEeFVJSHRtVERpMGQ0dXVhckFqSFRwcGY1b1ByLzVtNW9TY3dDODNPdnBrakUzM25SS1MzTjRSMVlkeUQzKzF4WkM0VVphYWZGb2gwSnQ3NDlJcXZzVkM2T21lVVNDYWpncUlobmpxb2xvUlY5cWRxR3ovTFNKbkZ4SXZROGtCeFxcXFxcXFwiKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpmL/ph4zkuIDnuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwic2hhcmlkXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuLy92YXIgaXRlbXMgPSBbXTtcXFxcbmZ1bmN0aW9uIGZvcm1hdERhdGUoX2RhdGUsIF9mbXQpIHtcXFxcbiAgICBsZXQgZm10ID0gX2ZtdCB8fCBcXFxcXFxcInl5eXktTU0tZGQgSEg6bW06c3NcXFxcXFxcIjtcXFxcbiAgICBjb25zdCBkYXRlID0gIWlzTmFOKF9kYXRlKSA/IG5ldyBEYXRlKF9kYXRlICogMTAwMCkgOiBuZXcgRGF0ZShfZGF0ZSk7XFxcXG4gICAgY29uc3QgbyA9IHtcXFxcbiAgICAgICAgXFxcXFxcXCJNK1xcXFxcXFwiOiBkYXRlLmdldE1vbnRoKCkgKyAxLCAvL+aciOS7vSBcXFxcbiAgICAgICAgXFxcXFxcXCJkK1xcXFxcXFwiOiBkYXRlLmdldERhdGUoKSwgLy/ml6UgXFxcXG4gICAgICAgIFxcXFxcXFwiaCtcXFxcXFxcIjogZGF0ZS5nZXRIb3VycygpICUgMTIgPT0gMCA/IDEyIDogZGF0ZS5nZXRIb3VycygpICUgMTIsXFxcXG4gICAgICAgIFxcXFxcXFwiSCtcXFxcXFxcIjogZGF0ZS5nZXRIb3VycygpLCAvL+Wwj+aXtiBcXFxcbiAgICAgICAgXFxcXFxcXCJtK1xcXFxcXFwiOiBkYXRlLmdldE1pbnV0ZXMoKSwgLy/liIYgXFxcXG4gICAgICAgIFxcXFxcXFwicytcXFxcXFxcIjogZGF0ZS5nZXRTZWNvbmRzKCksIC8v56eSIFxcXFxuICAgICAgICBcXFxcXFxcInErXFxcXFxcXCI6IE1hdGguZmxvb3IoKGRhdGUuZ2V0TW9udGgoKSArIDMpIC8gMyksIC8v5a2j5bqmIFxcXFxuICAgICAgICBcXFxcXFxcIlNcXFxcXFxcIjogZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAvL+avq+enkiBcXFxcbiAgICB9O1xcXFxuICAgIGlmICgvKHkrKS8udGVzdChmbXQpKSB7XFxcXG4gICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKGRhdGUuZ2V0RnVsbFllYXIoKSArIFxcXFxcXFwiXFxcXFxcXCIpLnN1YnN0cig0IC0gUmVnRXhwLiQxLmxlbmd0aCkpO1xcXFxuICAgIH1cXFxcbiAgICBmb3IgKGxldCBrIGluIG8pIHtcXFxcbiAgICAgICAgaWYgKG5ldyBSZWdFeHAoXFxcXFxcXCIoXFxcXFxcXCIgKyBrICsgXFxcXFxcXCIpXFxcXFxcXCIpLnRlc3QoZm10KSkge1xcXFxuICAgICAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoUmVnRXhwLiQxLmxlbmd0aCA9PSAxKSA/IChvW2tdKSA6ICgoXFxcXFxcXCIwMFxcXFxcXFwiICsgb1trXSkuc3Vic3RyKChcXFxcXFxcIlxcXFxcXFwiICsgb1trXSkubGVuZ3RoKSkpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiBmbXQ7XFxcXG59O1xcXFxuXFxcXG5mdW5jdGlvbiBmb3JtYXRTaXplKHNpemUpIHtcXFxcbiAgICBpZiAoIXNpemUpIHtcXFxcbiAgICAgICAgcmV0dXJuICcnO1xcXFxuICAgIH1cXFxcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xcXFxuICAgIGxldCBpID0gMDtcXFxcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0KSB7XFxcXG4gICAgICAgIHNpemUgLz0gMTAyNDtcXFxcbiAgICAgICAgaSsrO1xcXFxuICAgIH1cXFxcbiAgICBzaXplID0gaSA/IE51bWJlcihzaXplLnRvRml4ZWQoMikpIDogc2l6ZTtcXFxcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcXFxufVxcXFxuLy9sb2cocmVhbHVybCk7XFxcXG5cXFxcbmlmIChNWV9QQUdFID09IDEpIHtcXFxcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcXFxufVxcXFxuaWYgKE1ZX1BBR0UgPiAxICYmIGdldE15VmFyKCduZXh0cGFnZScsICcnKSA9PSAnJykge1xcXFxuICAgIGxvZygn5rKh5pyJ5LiL5LiA6aG1Jyk7XFxcXG59IGVsc2Uge1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIC8vdmFyIHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy94eXEvYWxpdG9rZW4uanNvbicsIHt9KSkucmVmcmVzaF90b2tlbjtcXFxcbiAgICAgICAgdmFyIHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcXFxuICAgICAgICB2YXIgc2hhcmVJZCA9IGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5zcGxpdCgnY29tL3MvJylbMV0uc3Vic3RyaW5nKDAsIDExKTtcXFxcbiAgICAgICAgbGV0IGdldHNoYXIgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9zaGFyZV9saW5rL2dldF9zaGFyZV9ieV9hbm9ueW1vdXMnLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIGJvZHk6ICd7XFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIHNoYXJlSWQgKyAnXFxcXFxcXCJ9JyxcXFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBsZXQgcHVzaG5hbWUgPSBKU09OLnBhcnNlKGdldHNoYXIpLmZpbGVfaW5mb3NbMF0uZmlsZV9uYW1lO1xcXFxuICAgICAgICAvL3ZhciBsaXN0eXAgPSBKU09OLnBhcnNlKGdldHNoYXIpLmZpbGVfaW5mb3NbMF0udHlwZTtcXFxcbiAgICAgICAgLy92YXIgcGZpbGVpZCA9IEpTT04ucGFyc2UoZ2V0c2hhcikuZmlsZV9pbmZvc1swXS5maWxlX2lkO1xcXFxuXFxcXG4gICAgICAgIHZhciBzaGFyZXRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL3NoYXJlX2xpbmsvZ2V0X3NoYXJlX3Rva2VuJywge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBib2R5OiAne1xcXFxcXFwic2hhcmVfcHdkXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCI6XFxcXFxcXCInICsgc2hhcmVJZCArICdcXFxcXFxcIn0nLFxcXFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgfSkpLnNoYXJlX3Rva2VuO1xcXFxuICAgICAgICAvL2xvZyhzaGFyZXRva2VuKTtcXFxcblxcXFxuICAgICAgICBsZXQgbmV4dCA9IGdldE15VmFyKCduZXh0cGFnZScsICcnKSAhPSAnJyA/ICcsXFxcXFxcXCJtYXJrZXJcXFxcXFxcIjpcXFxcXFxcIicgKyBnZXRNeVZhcignbmV4dHBhZ2UnKSArICdcXFxcXFxcIicgOiAnJztcXFxcbiAgICAgICAgaWYgKCFkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuaW5jbHVkZXMoJy9mb2xkZXIvJykpIHtcXFxcbiAgICAgICAgICAgIC8vaWYoIWxpc3R5cCA9PSAnZm9sZGVyJyl7XFxcXG4gICAgICAgICAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxcXG4gICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjpcXFxcXFxcIicgKyBzaGFyZUlkICsgJ1xcXFxcXFwiLFxcXFxcXFwicGFyZW50X2ZpbGVfaWRcXFxcXFxcIjpcXFxcXFxcInJvb3RcXFxcXFxcIixcXFxcXFxcImxpbWl0XFxcXFxcXCI6MTAwLFxcXFxcXFwiaW1hZ2VfdGh1bWJuYWlsX3Byb2Nlc3NcXFxcXFxcIjpcXFxcXFxcImltYWdlL3Jlc2l6ZSx3XzE2MC9mb3JtYXQsanBlZ1xcXFxcXFwiLFxcXFxcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFxcXFxcIjpcXFxcXFxcImltYWdlL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFxcXFxcIixcXFxcXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXFxcXFwiLFxcXFxcXFwib3JkZXJfYnlcXFxcXFxcIjpcXFxcXFxcIm5hbWVcXFxcXFxcIixcXFxcXFxcIm9yZGVyX2RpcmVjdGlvblxcXFxcXFwiOlxcXFxcXFwiQVNDXFxcXFxcXCInICsgbmV4dCArICd9JyxcXFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAvL2xvZyhyZXNjb2QpO1xcXFxuICAgICAgICAgICAgdmFyIGxpc3R5cCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS50eXBlO1xcXFxuICAgICAgICAgICAgdmFyIHBmaWxlaWQgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0uZmlsZV9pZDtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSAnZm9sZGVyJztcXFxcbiAgICAgICAgICAgIHZhciBwZmlsZWlkID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLnNwbGl0KCdmb2xkZXIvJylbMV1cXFxcblxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC8vbG9nKGh0bWwpO1xcXFxuICAgICAgICBpZiAobGlzdHlwID09ICdmb2xkZXInKSB7XFxcXG4gICAgICAgICAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxcXG4gICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjpcXFxcXFxcIicgKyBzaGFyZUlkICsgJ1xcXFxcXFwiLFxcXFxcXFwicGFyZW50X2ZpbGVfaWRcXFxcXFxcIjpcXFxcXFxcIicgKyBwZmlsZWlkICsgJ1xcXFxcXFwiLFxcXFxcXFwibGltaXRcXFxcXFxcIjoxMDAsXFxcXFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOlxcXFxcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcXFxcXCIsXFxcXFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXFxcXFwiOlxcXFxcXFwiaW1hZ2VcXFxcXFxcXC9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcXFxcXCIsXFxcXFxcXCJ2aWRlb190aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOlxcXFxcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFxcXFxcIixcXFxcXFxcIm9yZGVyX2J5XFxcXFxcXCI6XFxcXFxcXCJuYW1lXFxcXFxcXCIsXFxcXFxcXCJvcmRlcl9kaXJlY3Rpb25cXFxcXFxcIjpcXFxcXFxcIkFTQ1xcXFxcXFwiJyArIG5leHQgKyAnfScsXFxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIH0gLy/lj5bmlofku7blpLlcXFxcbiAgICAgICAgLy9sb2cocmVzY29kKTtcXFxcblxcXFxuICAgICAgICBpZiAoSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyKSB7XFxcXG4gICAgICAgICAgICBsZXQgbWFya2VyID0gSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyO1xcXFxuICAgICAgICAgICAgaWYgKG1hcmtlci5sZW5ndGggPiAxMCkge1xcXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCduZXh0cGFnZScsIG1hcmtlcik7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIGNvbnRzID0gSlNPTi5wYXJzZShyZXNjb2QpLml0ZW1zOyAgICAgICAgXFxcXG4gICAgICAgIHZhciB0dWlzb25nID0gW107XFxcXG4gICAgICAgIGZvciAodmFyIGkgaW4gY29udHMpIHtcXFxcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcXFxuICAgICAgICAgICAgaWYgKGxpc3R5cCAhPSAnZm9sZGVyJykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBjYXRlID0gY29udHNbaV0uY2F0ZWdvcnk7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGZuYW1lID0gY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5O6JyArIGNvbnRzW2ldLm5hbWU7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdkb2MnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5OWJyArIGNvbnRzW2ldLm5hbWU7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdpbWFnZScpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/CflrwnICsgY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ3ppcCcpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk6YnICsgY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBjb250c1tpXS5uYW1lXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChjb250c1tpXS5maWxlX2lkKS5sYXp5UnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FsaWxhenlcXFxcXFxcIikoc2hhcmVJZCwgaW5wdXQsIGNhdGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKGNvbnRzW2ldLnVwZGF0ZWRfYXQpICsgJyAgJyArIGZvcm1hdFNpemUoY29udHNbaV0uc2l6ZSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogY29udHNbaV0uZmlsZV9pZFxcXFxuICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcblxcXFxuICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+TgicgKyBjb250c1tpXS5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgY29udHNbaV0uZmlsZV9pZCArICc/Pz9meXBhZ2UnKS5ydWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBwdXNobmFtZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcnVsZWxvb3AnLCB7fSkpLnJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjb250c1tpXS5uYW1lKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgfSAvL2VuZCBpZlxcXFxuICAgICAgICB9IC8vZW5kIGZvciBpXFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICBpdGVtcy5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn5qyn5qyn77yM5oql6ZSZ5LqG44CCJyxcXFxcbiAgICAgICAgICAgIHVybDogZGVjb2RlVVJJQ29tcG9uZW50KGdldFJlc0NvZGUoKS5zcGxpdCgnIyMnKVsxXSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn1cXFxcbi8qXFxcXG5zZXRIb21lUmVzdWx0KHtcXFxcbiAgICBkYXRhOiBpdGVtc1xcXFxufSk7XFxcXG4qL1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIumYv+mHjOW1jOWll1xcXCIsXFxcInBhdGhcXFwiOlxcXCJydWxlbG9vcFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgaXRlbXMgPSBbXTtcXFxcblxcXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShfZGF0ZSwgX2ZtdCkge1xcXFxuICAgIGxldCBmbXQgPSBfZm10IHx8IFxcXFxcXFwieXl5eS1NTS1kZCBISDptbTpzc1xcXFxcXFwiO1xcXFxuICAgIGNvbnN0IGRhdGUgPSAhaXNOYU4oX2RhdGUpID8gbmV3IERhdGUoX2RhdGUgKiAxMDAwKSA6IG5ldyBEYXRlKF9kYXRlKTtcXFxcbiAgICBjb25zdCBvID0ge1xcXFxuICAgICAgICBcXFxcXFxcIk0rXFxcXFxcXCI6IGRhdGUuZ2V0TW9udGgoKSArIDEsIC8v5pyI5Lu9IFxcXFxuICAgICAgICBcXFxcXFxcImQrXFxcXFxcXCI6IGRhdGUuZ2V0RGF0ZSgpLCAvL+aXpSBcXFxcbiAgICAgICAgXFxcXFxcXCJoK1xcXFxcXFwiOiBkYXRlLmdldEhvdXJzKCkgJSAxMiA9PSAwID8gMTIgOiBkYXRlLmdldEhvdXJzKCkgJSAxMixcXFxcbiAgICAgICAgXFxcXFxcXCJIK1xcXFxcXFwiOiBkYXRlLmdldEhvdXJzKCksIC8v5bCP5pe2IFxcXFxuICAgICAgICBcXFxcXFxcIm0rXFxcXFxcXCI6IGRhdGUuZ2V0TWludXRlcygpLCAvL+WIhiBcXFxcbiAgICAgICAgXFxcXFxcXCJzK1xcXFxcXFwiOiBkYXRlLmdldFNlY29uZHMoKSwgLy/np5IgXFxcXG4gICAgICAgIFxcXFxcXFwicStcXFxcXFxcIjogTWF0aC5mbG9vcigoZGF0ZS5nZXRNb250aCgpICsgMykgLyAzKSwgLy/lraPluqYgXFxcXG4gICAgICAgIFxcXFxcXFwiU1xcXFxcXFwiOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC8v5q+r56eSIFxcXFxuICAgIH07XFxcXG4gICAgaWYgKC8oeSspLy50ZXN0KGZtdCkpIHtcXFxcbiAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoZGF0ZS5nZXRGdWxsWWVhcigpICsgXFxcXFxcXCJcXFxcXFxcIikuc3Vic3RyKDQgLSBSZWdFeHAuJDEubGVuZ3RoKSk7XFxcXG4gICAgfVxcXFxuICAgIGZvciAobGV0IGsgaW4gbykge1xcXFxuICAgICAgICBpZiAobmV3IFJlZ0V4cChcXFxcXFxcIihcXFxcXFxcIiArIGsgKyBcXFxcXFxcIilcXFxcXFxcIikudGVzdChmbXQpKSB7XFxcXG4gICAgICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChSZWdFeHAuJDEubGVuZ3RoID09IDEpID8gKG9ba10pIDogKChcXFxcXFxcIjAwXFxcXFxcXCIgKyBvW2tdKS5zdWJzdHIoKFxcXFxcXFwiXFxcXFxcXCIgKyBvW2tdKS5sZW5ndGgpKSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGZtdDtcXFxcbn07XFxcXG5cXFxcbmZ1bmN0aW9uIGZvcm1hdFNpemUoc2l6ZSkge1xcXFxuICAgIGlmICghc2l6ZSkge1xcXFxuICAgICAgICByZXR1cm4gJyc7XFxcXG4gICAgfVxcXFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxcXG4gICAgbGV0IGkgPSAwO1xcXFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXFxcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcXFxuICAgICAgICBpKys7XFxcXG4gICAgfVxcXFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcXFxuICAgIHJldHVybiBgJHtzaXplfSAke3VuaXRzW2ldfWA7XFxcXG59XFxcXG4vL2xldCB0dmlwID0gZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICcnKTtcXFxcblxcXFxuLy9sb2coZ2V0UmVzQ29kZSgpKTtcXFxcbmlmIChNWV9QQUdFID09IDEpIHtcXFxcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcXFxufVxcXFxuaWYgKE1ZX1BBR0UgPiAxICYmIGdldE15VmFyKCduZXh0cGFnZScsICcnKSA9PSAnJykge1xcXFxuICAgIGxvZygn5rKh5pyJ5LiL5LiA6aG1Jyk7XFxcXG59IGVsc2Uge1xcXFxuICAgIGxldCByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXFxcblxcXFxuICAgIGxldCBuZXh0ID0gZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpICE9ICcnID8gJyxcXFxcXFxcIm1hcmtlclxcXFxcXFwiOlxcXFxcXFwiJyArIGdldE15VmFyKCduZXh0cGFnZScpICsgJ1xcXFxcXFwiJyA6ICcnO1xcXFxuXFxcXG4gICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBib2R5OiAne1xcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjpcXFxcXFxcIicgKyBzaGFyZUlkICsgJ1xcXFxcXFwiLFxcXFxcXFwicGFyZW50X2ZpbGVfaWRcXFxcXFxcIjpcXFxcXFxcIicgKyBnZXRSZXNDb2RlKCkuc3BsaXQoJz8/PycpWzBdICsgJ1xcXFxcXFwiLFxcXFxcXFwibGltaXRcXFxcXFxcIjoxMDAsXFxcXFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOlxcXFxcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcXFxcXCIsXFxcXFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXFxcXFwiOlxcXFxcXFwiaW1hZ2VcXFxcXFxcXC9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcXFxcXCIsXFxcXFxcXCJ2aWRlb190aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOlxcXFxcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFxcXFxcIixcXFxcXFxcIm9yZGVyX2J5XFxcXFxcXCI6XFxcXFxcXCJuYW1lXFxcXFxcXCIsXFxcXFxcXCJvcmRlcl9kaXJlY3Rpb25cXFxcXFxcIjpcXFxcXFxcIkFTQ1xcXFxcXFwiJyArIG5leHQgKyAnfScsXFxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgfSk7XFxcXG4gICAgLy9sb2cocmVzY29kKTtcXFxcbiAgICBpZiAoSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyKSB7XFxcXG4gICAgICAgIGxldCBtYXJrZXIgPSBKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXI7XFxcXG4gICAgICAgIGlmIChtYXJrZXIubGVuZ3RoID4gMTApIHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKCduZXh0cGFnZScsIG1hcmtlcik7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHZhciBjb250cyA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtcztcXFxcbiAgICB2YXIgdHVpc29uZyA9IFtdO1xcXFxuICAgIGZvciAodmFyIGkgaW4gY29udHMpIHtcXFxcblxcXFxuICAgICAgICB2YXIgbGlzdHlwID0gY29udHNbaV0udHlwZTtcXFxcbiAgICAgICAgaWYgKGxpc3R5cCAhPSAnZm9sZGVyJykge1xcXFxuICAgICAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXFxcbiAgICAgICAgICAgIHZhciBmbmFtZSA9IGNvbnRzW2ldLm5hbWU7XFxcXG4gICAgICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnZG9jJykge1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5OWJyArIGNvbnRzW2ldLm5hbWU7XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5a8JyArIGNvbnRzW2ldLm5hbWU7XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ3ppcCcpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBjb250c1tpXS5uYW1lXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hbGlsYXp5XFxcXFxcXCIpKHNoYXJlSWQsIGlucHV0LCBjYXRlKTtcXFxcbiAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoY29udHNbaV0udXBkYXRlZF9hdCkgKyAnICAnICsgZm9ybWF0U2l6ZShjb250c1tpXS5zaXplKSxcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZDogY29udHNbaV0uZmlsZV9pZFxcXFxuICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG5cXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5OCJyArIGNvbnRzW2ldLm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGNvbnRzW2ldLmZpbGVfaWQgKyAnPz8/ZnlwYWdlJykucnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgcHVzaG5hbWUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcnVsZWxvb3AnLCB7fSkpLnJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNvbnRzW2ldLm5hbWUpLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxcXG4gICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICB9IC8vZW5kIGlmXFxcXG5cXFxcbiAgICB9XFxcXG59XFxcXG5zZXRSZXN1bHQoaXRlbXMpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIumYv+mHjOaOqOmAgVxcXCIsXFxcInBhdGhcXFwiOlxcXCJwdXNoXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuLy9sb2coTVlfVVJMKTtcXFxcbnZhciBpdGVtcyA9IFtdO1xcXFxudmFyIHJlYWx1cmwgPSBNWV9VUkwuc3BsaXQoJyMjJylbMV0uc3BsaXQoJz8/PycpWzBdO1xcXFxuaWYgKGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnd3d3LmFsaXl1bmRyaXZlJykgJiYgIXJlYWx1cmwuaW5jbHVkZXMoJyUzQiU3QicpKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2Uvc2hhcmlkJywge30pKS5ydWxlKVxcXFxufVxcXFxuc2V0UmVzdWx0KGl0ZW1zKTtcXFwifV1cIixcInByb3h5XCI6XCJcIn0iLCJ0aXRsZSI6IuOAkOeLrOWutui1hOa6kOOAkeOAkDRL5Y6f55uY5bCB6KOF44CR44CK5LiW55WM5paw6Ze744CLMjE2MFAgUkVNVVjjgJDnrKwwOTI16YOo56C06Kej5Y6f55uY44CR44CQ5aSW5oyC5Lit5a2X44CRIn0=
Add Comment
Please, Sign In to add comment