Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@云盘君@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5ZCbIiwiYXV0aG9yIjoi5bCP5qOJ6KKE8J+MniIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2Z5cGFnZSIsInZlcnNpb24iOjIzLCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xuYWRkTGlzdGVuZXIoXG4gICAgJ29uUmVmcmVzaCcsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICBjbGVhck15VmFyKCdzJylcbiAgICB9KVxuKVxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL3NvdVwiKSkucnVsZSk7XG5sZXQgcyA9IGdldE15VmFyKCdzJywgJycpO1xuaWYgKHMgPT0gXCJcIikge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcblxuICAgICAgICAgICAgaGVhZGVyID0ge1xuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA2LjA7IE5leHVzIDUgQnVpbGQvTVJBNThOKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTkuMC40ODQ0LjUxIE1vYmlsZSBTYWZhcmkvNTM3LjM2JyxcbiAgICAgICAgICAgICAgICAnSG9zdCc6ICd0b3AuYmFpZHUuY29tJyxcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKicsXG4gICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICd6aC1DTix6aDtxPTAuOSxlbi1VUztxPTAuOCxlbjtxPTAuNycsXG4gICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwLCBkZWZsYXRlLCBicicsXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly90b3AuYmFpZHUuY29tL2JvYXJkP3RhYj1ub3ZlbCcsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBqc29uID0gcmVxdWVzdCgnaHR0cHM6Ly90b3AuYmFpZHUuY29tL2FwaS9ib2FyZD9wbGF0Zm9ybT13aXNlJnRhYj10ZWxlcGxheSZ0YWc9JTdCJTIyY2F0ZWdvcnklMjI6JTIyJUU1JTg1JUE4JUU5JTgzJUE4JUU3JUIxJUJCJUU1JTlFJThCJTIyLCUyMmNvdW50cnklMjI6JTIyJUU2JUFDJUE3JUU3JUJFJThFJTIyJTdEJywge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlclxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShqc29uKS5kYXRhLmNhcmRzWzBdLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gbGlzdFtpXS53b3JkICsgJyAgICAoJyArIGxpc3RbaV0uc2hvd1syXSArICcpJztcbiAgICAgICAgICAgICAgICBsZXQgZGVzID0gbGlzdFtpXS5kZXNjO1xuICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpID09IFwiMFwiID8gJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmMzMwMFwiPicgKyAocGFyc2VJbnQoaSkgKyAxKS50b1N0cmluZygpICsgJzwvc3Bhbj4nICsgXCJcXHRcXHRcXHRcIiArIG5hbWUgOiBpID09IFwiMVwiID8gJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmNjYwMFwiPicgKyAocGFyc2VJbnQoaSkgKyAxKS50b1N0cmluZygpICsgJzwvc3Bhbj4nICsgXCJcXHRcXHRcXHRcIiArIG5hbWUgOiBpID09IFwiMlwiID8gJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmOTkwMFwiPicgKyAocGFyc2VJbnQoaSkgKyAxKS50b1N0cmluZygpICsgJzwvc3Bhbj4nICsgXCJcXHRcXHRcXHRcIiArIG5hbWUgOiAn4oCc4oCc4oCd4oCdPHNwYW4+JyArIChwYXJzZUludChpKSArIDEpLnRvU3RyaW5nKCkgKyAnPC9zcGFuPicgKyBcIlxcdFxcdFxcdFwiICsgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnICAgICgnKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzJywgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xuICAgICAgICAgICAgICAgICAgICB9LCBuYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzLFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXCJ0ZXh0XzFcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICBzZXRSZXN1bHQoZCk7XG59Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkjIyoqIiwiZ3JvdXAiOiLikaDnvZHnm5giLCJzZWFyY2hGaW5kIjoianM6XG52YXIgZCA9IFtdO1xubGV0IGtleSA9IE1ZX1VSTC5zcGxpdChcIiMjXCIpWzFdO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogXCLngrnmiJHlvIDlp4vogZrlkIjmkJzntKJcIiArIGtleSxcbiAgICB1cmw6IFwiaGlrZXI6Ly9wYWdlL3NvdXA/cD1meXBhZ2VcIixcbiAgICBleHRyYToge1xuICAgICAgICBwYWdlVGl0bGU6IFwi5pCc57SiXCIgKyBrZXksXG4gICAgICAgIGtleToga2V5XG4gICAgfVxufSk7XG5cbnNldFJlc3VsdChkKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6KeE5YiZ5YiX6KGoXCIsXCJwYXRoXCI6XCJkYXRhXCIsXCJydWxlXCI6XCJ2YXIgd3JhcHUgPSAodSkgPT4ge1xcbiAgICBpZihjb25maWcubW9kZSA9PSBcXFwi5pys5Zyw6L2s56CBXFxcIil7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZSdcXG4gICAgfVxcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gXFxcIuS6keebmOaxh+W9sVxcXCIpIHtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnO1xcbiAgICB9XFxuICAgIGlmICgvYWxpeXVuZHJpdmUvLnRlc3QodSkpIHtcXG4gICAgICAgIGNvbnN0IFtsaW5rLCBfc2hhcmVfcHdkXSA9IHUuc3BsaXQoJz9zaGFyZV9wd2Q9Jyk7XFxuICAgICAgICBjb25zdCBbX2xpbmssIF9mb2xkZXJJRF0gPSBsaW5rLnNwbGl0KCcvZm9sZGVyLycpO1xcbiAgICAgICAgbGV0IHNoYXJlX3B3ZCA9IChfc2hhcmVfcHdkIHx8ICcnKS5zcGxpdCgnI25hbWU9JylbMF0gfHwgJyc7XFxuICAgICAgICBsZXQgc2hhcmVJZCA9IF9saW5rLnNwbGl0KCdjb20vcy8nKVsxXTtcXG4gICAgICAgIHJldHVybiAnc21hcnRkcml2ZTovL3NoYXJlL2Jyb3dzZT9zaGFyZUlkPScgKyBzaGFyZUlkICsgJyZzaGFyZVB3ZD0nICsgc2hhcmVfcHdkO1xcbiAgICB9XFxuICAgIHJldHVybiBcXFwid2ViOi8vXFxcIiArIHU7XFxufTtcXG5sZXQgcnVsZXMgPSBbe1xcbiAgICBuYW1lOiBcXFwi5LqR55uY6LWE5rqQXFxcIixcXG4gICAgcGFnZTogdHJ1ZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IHVybCA9IFxcXCJodHRwczovL3Jlcy55dW5wYW4ud2luLz9QYWdlSW5kZXg9XFxcIiArIHBhZ2UgKyBcXFwiJlBhZ2VTaXplPTEyJktleXdvcmQ9XFxcIiArIHMgKyBcXFwiJlR5cGU9JlRhZz1cXFwiO1xcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly9yZXMueXVucGFuLndpbi9cXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFwibWFpbiYmLmNhcmRcXFwiKTtcXG4gICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcblxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgbGV0IHUgPSBwZGZoKGl0LCBcXFwiLmNhcmQtbGluaywxJiZvbmNsaWNrXFxcIikubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgdSA9IHUubGVuZ3RoID4gMCA/IHVbMF0gOiB1cmw7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsIFxcXCIuY2FyZC10aXRsZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwZChpdCwgXFxcImltZyYmc3JjXFxcIiwgdXJsKSxcXG4gICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuS6keebmOi1hOa6kDwvZm9udD4mbmJzcDtcXFwiICsgKHBkZmgoaXQsIFxcXCIuY2FyZC10ZXh0LC0xJiZUZXh0XFxcIikpLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLnjKvni7jnm5jmkJxcXFwiLFxcbiAgICBwYWdlOiBmYWxzZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tL3NlYXJjaD9rPVxcXCIgKyBzLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tL3NlYXJjaD9rPVxcXCIgKyBzXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFwiI2FwcCYmYVxcXCIpO1xcbiAgICAgICAgLy9sb2coYXJyKTtcXG4gICAgICAgIGxldCBkID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdCA9IFxcXCI8ZGl2PlxcXCIgKyBhcnJbaV0gKyBcXFwiPC9kaXY+XFxcIjtcXG4gICAgICAgICAgICBsZXQgdSA9IHBkZmgoaXQsIFxcXCJhJiZocmVmXFxcIik7XFxuICAgICAgICAgICAgLy9sb2codSk7XFxuICAgICAgICAgICAgaWYgKCF1LmluY2x1ZGVzKFxcXCIvcy9cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdSA9IFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tXFxcIiArIHUucmVwbGFjZShcXFwiL3MvXFxcIiwgXFxcIi9jdi9cXFwiKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgXFxcInRlbXBsYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgIHVybDogJCh1KS5sYXp5UnVsZSgod3JhcHUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJub19zaG93X2RvbmF0ZT0xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBpbnB1dC5yZXBsYWNlKFxcXCIvY3YvXFxcIiwgXFxcIi9zL1xcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9saW5rcyA9IGh0bWwubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhfbGlua3MpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9saW5rcy5sZW5ndGggPiAxICYmIF9saW5rc1sxXS5yZXBsYWNlKF9saW5rc1swXSwgXFxcIlxcXCIpLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzBdKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB3cmFwdSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7njKvni7jnm5jmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIHBkZmgoaXQsIFxcXCJ0ZW1wbGF0ZSwxJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZDtcXG4gICAgfVxcbn0sIHtcXG4gICAgbmFtZTogXFxcIuaYk+aQnFxcXCIsXFxuICAgIHBhZ2U6IHRydWUsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFwiaHR0cHM6Ly95aXNvLmZ1bi9hcGkvc2VhcmNoP25hbWU9XFxcIiArIHMgKyBcXFwiJnBhZ2VObz1cXFwiICsgcGFnZSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly95aXNvLmZ1bi9pbmZvP3NlYXJjaEtleT1cXFwiICsgc1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5saXN0O1xcbiAgICAgICAgbG9nKGFycik7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgbGV0IHUgPSBpdC51cmw7XFxuICAgICAgICAgICAgaWYgKHUgPT0gbnVsbCB8fCAhdS5pbmNsdWRlcyhcXFwiYWxpeXVuXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIGl0Lm5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7mmJPmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIChpdC5nbXRTaGFyZSB8fCBpdC5nbXRDcmVhdGUpLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLlsI/nurjmnaFcXFwiLFxcbiAgICBwYWdlOiBmYWxzZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgZnVuY3Rpb24gY2F0X2NvZGUoYSkge1xcbiAgICAgICAgICAgIHZhciBkLCBlLCBiID0gW1xcXCLljY7or63nlLXop4ZcXFwiLCBcXFwi5pel6Z+p55S16KeGXFxcIiwgXFxcIuasp+e+jueUteinhlxcXCIsIFxcXCLlhbbku5bnlLXop4ZcXFwiLCBcXFwi5Y2O6K+t55S15b2xXFxcIiwgXFxcIuaXpemfqeeUteW9sVxcXCIsIFxcXCLmrKfnvo7nlLXlvbFcXFwiLCBcXFwi5YW25LuW55S15b2xXFxcIiwgXFxcIuWNjuivreWKqOa8q1xcXCIsIFxcXCLml6Xpn6nliqjmvKtcXFwiLCBcXFwi5qyn576O5Yqo5ryrXFxcIiwgXFxcIue6quW9leeJh1xcXCIsIFxcXCLnu7zoibrniYdcXFwiLCBcXFwi5pWZ6IKy5Z+56K6tXFxcIiwgXFxcIuWFtuS7luinhumikVxcXCIsIFxcXCLljY7or63pn7PkuZBcXFwiLCBcXFwi5pel6Z+p6Z+z5LmQXFxcIiwgXFxcIuasp+e+jumfs+S5kFxcXCIsIFxcXCLlhbbku5bpn7PkuZBcXFwiLCBcXFwi5aix5LmQ6L2v5Lu2XFxcIiwgXFxcIuezu+e7n+i9r+S7tlxcXCIsIFxcXCLnvZHnu5zova/ku7ZcXFwiLCBcXFwi5Yqe5YWs6L2v5Lu2XFxcIiwgXFxcIuWFtuS7lui9r+S7tlxcXCIsIFxcXCLmvKvnlLtcXFwiLCBcXFwi5bCP6K+0XFxcIiwgXFxcIuWHuueJiOS5plxcXCIsIFxcXCLnn6Xor4bln7norq1cXFwiLCBcXFwi5YW25LuW5paH5qGjXFxcIiwgXFxcIuWjgee6uFxcXCIsIFxcXCLkurrnialcXFwiLCBcXFwi6aOO5pmvXFxcIiwgXFxcIuWFtuS7luWbvueJh1xcXCIsIFxcXCLlhbbku5ZcXFwiXSxcXG4gICAgICAgICAgICAgICAgYyA9IFtcXFwiaHlkc1xcXCIsIFxcXCJyaGRzXFxcIiwgXFxcIm9tZHNcXFwiLCBcXFwicXRkc1xcXCIsIFxcXCJoeWR5XFxcIiwgXFxcInJoZHlcXFwiLCBcXFwib21keVxcXCIsIFxcXCJxdGR5XFxcIiwgXFxcImh5ZG1cXFwiLCBcXFwicmhkbVxcXCIsIFxcXCJvbWRtXFxcIiwgXFxcImpscFxcXCIsIFxcXCJ6eXBcXFwiLCBcXFwianlweFxcXCIsIFxcXCJxdHNwXFxcIiwgXFxcImh5eXlcXFwiLCBcXFwicmh5eVxcXCIsIFxcXCJvbXl5XFxcIiwgXFxcInF0eXlcXFwiLCBcXFwia2ZyalxcXCIsIFxcXCJ4dHJqXFxcIiwgXFxcIndscmpcXFwiLCBcXFwiYmdyalxcXCIsIFxcXCJxdHJqXFxcIiwgXFxcIm1oXFxcIiwgXFxcInhzXFxcIiwgXFxcImNic1xcXCIsIFxcXCJ6c3B4XFxcIiwgXFxcInF0d2RcXFwiLCBcXFwiYnpcXFwiLCBcXFwicndcXFwiLCBcXFwiZmpcXFwiLCBcXFwicXR0cFxcXCIsIFxcXCJxdFxcXCJdO1xcbiAgICAgICAgICAgIGZvciAoZCA9IDAsIGUgPSBjLmxlbmd0aDsgZSA+IGQ7IGQrKylcXG4gICAgICAgICAgICAgICAgaWYgKGNbZF0gPT0gYSkgcmV0dXJuIGJbZF07XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgbGV0IGh0bWwgPSBwb3N0KFxcXCJodHRwczovL2dpdGNhZmUubmV0L3Rvb2wvYWxpcGFwZXIvXFxcIiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly91LmdpdGNhZmUubmV0LydcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBcXFwic2VhcmNoXFxcIixcXG4gICAgICAgICAgICAgICAga2V5d29yZDogc1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICBsZXQgbGlzdCA9IEpTT04ucGFyc2UoaHRtbCk7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBsaXN0W2ldXFxuICAgICAgICAgICAgbGV0IHRpdGxlID0gaXQudGl0bGU7XFxuICAgICAgICAgICAgbGV0IG11cmwgPSBpdC5rZXlcXG4gICAgICAgICAgICBpZiAodGl0bGUuaW5jbHVkZXMocykpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7lsI/nurjmnaE8L2ZvbnQ+Jm5ic3A7XFxcIiArIGNhdF9jb2RlKGl0LmNhdCksXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlczogaXQuZGVzXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdSgnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvJyArIG11cmwpLFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZDtcXG4gICAgfVxcbn0sIHtcXG4gICAgbmFtZTogXFxcIuW/heW6lFxcXCIsXFxuICAgIHBhZ2U6IHRydWUsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGxldCB1cmwgPSBcXFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9zZWFyY2g/cT1cXFwiICsgcyArIFxcXCIrYWxpeXVuZHJpdmUmcXM9ZHMmZm9ybT1RQlJFXFxcIjtcXG4gICAgICAgIGlmIChwYWdlICE9IDEpIHtcXG4gICAgICAgICAgICB1cmwgPSBnZXRNeVZhcihcXFwiYmluZ1xcXCIsIHVybCk7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL2NuLmJpbmcuY29tL1xcXCIsXFxuICAgICAgICAgICAgICAgIC8vXFxcIlgtUmVxdWVzdGVkLVdpdGhcXFwiOiBcXFwiY29tLmV4YW1wbGUuaGlrZXJ2aWV3XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIkFjY2VwdFxcXCI6IFxcXCJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjlcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFwiYm9keSYmYVxcXCIpO1xcbiAgICAgICAgLy9sb2coYXJyKTtcXG4gICAgICAgIGxldCBkID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgICAgICAgICBsZXQgdSA9IHBkKGl0LCBcXFwiYSYmaHJlZlxcXCIsIHVybCk7XFxuICAgICAgICAgICAgbGV0IHQgPSBwZGZoKGl0LCBcXFwiYSYmVGV4dFxcXCIpO1xcbiAgICAgICAgICAgIGlmIChpdC5pbmNsdWRlcyhcXFwiTmV4dCBwYWdlXFxcIikgfHwgaXQuaW5jbHVkZXMoXFxcIuS4i+S4gOmhtVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGxldCB1MiA9IHBkKGl0LCBcXFwiYSYmaHJlZlxcXCIsIHVybCk7XFxuICAgICAgICAgICAgICAgIGxvZyhcXFwibmV4dCBwYWdlXFxcIik7XFxuICAgICAgICAgICAgICAgIGxvZyh1Mik7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJiaW5nXFxcIiwgdTIpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodSA9PSBudWxsIHx8IHQgPT0gbnVsbCB8fCAhaXQuaW5jbHVkZXMocykpIHtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmICghaXQuaW5jbHVkZXMoXFxcIue9keebmFxcXCIpICYmICFpdC5pbmNsdWRlcyhcXFwi5LqR55uYXFxcIikgJiZcXG4gICAgICAgICAgICAgICAgIWl0LmluY2x1ZGVzKFxcXCJhbGl5dW5kcml2ZVxcXCIpICYmICFpdC5pbmNsdWRlcyhcXFwieXVucGFuXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmICh1LnN0YXJ0c1dpdGgoXFxcImh0dHBzOi8vY24uYmluZy5jb20vXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBkb20gPSBnZXRIb21lKHUpLnJlcGxhY2UoXFxcImh0dHA6Ly9cXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiaHR0cHM6Ly9cXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgbGV0IF9saW5rcyA9IHQubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgbG9nKF9saW5rcyk7XFxuICAgICAgICAgICAgbGV0IGMgPSBudWxsO1xcbiAgICAgICAgICAgIGlmIChfbGlua3MubGVuZ3RoID4gMSAmJiBfbGlua3NbMV0ucmVwbGFjZShfbGlua3NbMF0sIFxcXCJcXFwiKS5yZXBsYWNlKC9bYS16QS1aMC05XSsvZywgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGMgPSB3cmFwdShfbGlua3NbMV0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgYyA9IHdyYXB1KF9saW5rc1swXSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0LFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5b+F5bqUPC9mb250PiZuYnNwO1xcXCIgKyBkb20sXFxuICAgICAgICAgICAgICAgIHVybDogYyAhPSBudWxsID8gYyA6ICQodSkubGF6eVJ1bGUoKHdyYXB1LCBtb2RlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9saW5rcyA9IGh0bWwubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgICAgICAgICBsb2coX2xpbmtzKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChfbGlua3MubGVuZ3RoID4gMSAmJiBfbGlua3NbMV0ucmVwbGFjZShfbGlua3NbMF0sIFxcXCJcXFwiKS5yZXBsYWNlKC9bYS16QS1aMC05XSsvZywgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXB1KF9saW5rc1sxXSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXB1KF9saW5rc1swXSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlID0gTVlfUlVMRS50aXRsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS95c2Z4P3J1bGU9XFxcIiArIHJ1bGUgKyBcXFwiJnI9XFxcIiArIHJ1bGUgKyBcXFwiJm1vZGU9XFxcIiArIG1vZGUgKyBcXFwiIyNcXFwiICsgaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIHdyYXB1LCBjb25maWcubW9kZSlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkO1xcbiAgICB9XFxufV07XFxuXFxubGV0IGNjb2YgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9jY29mJylcXG5ydWxlcy5wdXNoKGNjb2YpXFxuLy/lubblj5Hop4TliJnmlbBcXG5sZXQgc2l6ZSA9IDEwO1xcblxcbiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHBhZ2UsIHJ1bGUpIHtcXG4gICAgaWYgKCFwYWdlICYmICFydWxlKSB7XFxuICAgICAgICByZXR1cm4gcnVsZXMubWFwKGl0ID0+IGl0Lm5hbWUpO1xcbiAgICB9XFxuICAgIGlmIChydWxlICE9IG51bGwpIHtcXG4gICAgICAgIGlmIChwYWdlICE9IG51bGwgJiYgcGFnZSA+IDEpIHtcXG4gICAgICAgICAgICByZXR1cm4gcnVsZXMuZmlsdGVyKGkgPT4gaS5uYW1lID09IHJ1bGUgJiYgaS5wYWdlKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIoaSA9PiBpLm5hbWUgPT0gcnVsZSk7XFxuICAgIH1cXG4gICAgbGV0IHN0YXJ0ID0gKHBhZ2UgLSAxKSAqIHNpemU7XFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBzdGFydCArIDEpIHtcXG4gICAgICAgIHJldHVybiBbXTtcXG4gICAgfVxcbiAgICBsZXQgbGVuID0gc2l6ZTtcXG4gICAgaWYgKHJ1bGVzLmxlbmd0aCA8IHBhZ2UgKiBzaXplKSB7XFxuICAgICAgICBsZW4gPSBydWxlcy5sZW5ndGggLSBzdGFydFxcbiAgICB9XFxuICAgIHJldHVybiBydWxlcy5zbGljZShzdGFydCwgc3RhcnQgKyBsZW4pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0olwiLFwicGF0aFwiOlwic291XCIsXCJydWxlXCI6XCJsZXQgciA9IGdldEl0ZW0oXFxcInJcXFwiLCBcXFwiXFxcIik7XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBsZXQgcjEgPSBmZXRjaChcXFwiaGlrZXI6Ly9ob21lQOS6keebmOaxh+W9sVxcXCIpO1xcbiAgICBpZiAoIXIxIHx8IHIxLmxlbmd0aCA8PSA1KSB7XFxuICAgICAgICBsZXQgcnUgPSAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcIua1t+mYlOinhueVjOinhOWImeWIhuS6q++8jOW9k+WJjeWIhuS6q+eahOaYr++8muWwj+eoi+W6j++/pWhvbWVfcnVsZV92Mu+/pWJhc2U2NDovL0DkupHnm5jmsYflvbFAZXlKc1lYTjBYMk5vWVhCMFpYSmZjblZzWlNJNklpSXNJblJwZEd4bElqb2k1THFSNTV1WTVyR0g1YjJ4SWl3aVlYVjBhRzl5SWpvaVRYSkdiSGtpTENKMWNtd2lPaUpvYVd0bGNqb3ZMMlZ0Y0hSNUpDUWtabmx3WVdkbElpd2lkbVZ5YzJsdmJpSTZOaXdpWTI5c1gzUjVjR1VpT2lKMFpYaDBYekVpTENKamJHRnpjMTl1WVcxbElqb2lJaXdpZEhsd1pTSTZJbUZzYkNJc0ltTnNZWE56WDNWeWJDSTZJaUlzSW1GeVpXRmZibUZ0WlNJNklpSXNJbUZ5WldGZmRYSnNJam9pSWl3aWMyOXlkRjl1WVcxbElqb2lJaXdpZVdWaGNsOXVZVzFsSWpvaUlpd2ljMjl5ZEY5MWNtd2lPaUlpTENKNVpXRnlYM1Z5YkNJNklpSXNJbVpwYm1SZmNuVnNaU0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExtaHZiV1ZRWVdkbEtDazdJaXdpYzJWaGNtTm9YM1Z5YkNJNkltaHBhMlZ5T2k4dlpXMXdkSGtrSkNRcUtpUWtKR1o1Y0dGblpTUWtKQ0lzSW1keWIzVndJam9pNHBHZzU3MlI1NXVZSWl3aWMyVmhjbU5vUm1sdVpDSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG5ObFlYSmphRkJoWjJVb2RISjFaU2s3WEc0aUxDSmtaWFJoYVd4ZlkyOXNYM1I1Y0dVaU9pSnRiM1pwWlY4eElpd2laR1YwWVdsc1gyWnBibVJmY25Wc1pTSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG1SbGRHRnBiRkJoWjJVb0tUc2lMQ0p6WkdWMFlXbHNYMk52YkY5MGVYQmxJam9pYlc5MmFXVmZNU0lzSW5Oa1pYUmhhV3hmWm1sdVpGOXlkV3hsSWpvaUlpd2lkV0VpT2lKdGIySnBiR1VpTENKd2NtVlNkV3hsSWpvaWRtRnlJR0ZzYVdweklEMGdabVYwWTJoRFlXTm9aU2duYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2Wm14NU1UTTVOeTlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHa3Vhbk1uS1R0Y2JtbG1JQ2doWVd4cGFuTWdmSHdnSVdGc2FXcHpMbWx1WTJ4MVpHVnpLQ2RoYkdrdUp5a3BJSHRjYmlBZ0lDQmhiR2xxY3lBOUlHWmxkR05vUTJGamFHVW9KMmgwZEhCek9pOHZZMlJ1TG1welpHVnNhWFp5TG01bGRDOW5hQzltYkhreE16azNMMmhwYTJWeUxXbGplUzloYkdrdWFuTW5LVnh1ZlZ4dWFXWWdLQ0ZoYkdscWN5QjhmQ0FoWVd4cGFuTXVhVzVqYkhWa1pYTW9KMkZzYVM0bktTa2dlMXh1SUNBZ0lHRnNhV3B6SUQwZ1ptVjBZMmhEWVdOb1pTZ25hSFIwY0RvdkwyeG1hV041TG1OdmJUb3pNREF3TUM5dGNtWnNlUzlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHa3Vhbk1uS1Z4dWZWeHVhV1lnS0dGc2FXcHpLU0I3WEc0Z0lDQWdkM0pwZEdWR2FXeGxLRndpYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1welhDSXNJR0ZzYVdwektUdGNiaUFnSUNCbGRtRnNLR0ZzYVdwektUdGNiaUFnSUNCaGJHa3VjSEpsVW5Wc1pTZ3BPMXh1ZlNJc0luQmhaMlZ6SWpvaVczdGNJbU52YkY5MGVYQmxYQ0k2WENKdGIzWnBaVjh6WENJc1hDSnVZVzFsWENJNlhDTG52WkhubTVqb3I2Ym1nNFZjSWl4Y0luQmhkR2hjSWpwY0ltUmxkR0ZwYkZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtRnNhVkoxYkdVb0tUdGNJbjBzZTF3aVkyOXNYM1I1Y0dWY0lqcGNJbTF2ZG1sbFh6RmZiR1ZtZEY5d2FXTmNJaXhjSW01aGJXVmNJanBjSXVpMWhPYTZrT2U5a2VtaHRlaXZwdWFEaFZ3aUxGd2ljR0YwYUZ3aU9sd2ljMmwwWlMxa1pYUmhhV3hjSWl4Y0luSjFiR1ZjSWpwY0ltcHpPbHhjYm1WMllXd29abVYwWTJnb0oyaHBhMlZ5T2k4dlptbHNaWE12Y25Wc1pYTXZhV041TDJGc2FTNXFjeWNwS1R0Y1hHNWhiR2t1WkdWMFlXbHNVR0ZuWlNncE8xd2lmU3g3WENKamIyeGZkSGx3WlZ3aU9sd2liVzkyYVdWZk0xd2lMRndpYm1GdFpWd2lPbHdpNUxpcTVMcTY1NzJSNTV1WTZLK201b09GWENJc1hDSndZWFJvWENJNlhDSmtjbWwyWlZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1cGJtbDBRMjl1Wm1sbktDazdYRnh1WVd4cExtMTVRV3hwVW5Wc1pTZ3BPMXdpZlYwaUxDSnBZMjl1SWpvaWFIUjBjSE02THk5bmFYUmxaUzVqYjIwdlpteDVNVE01Tnk5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2w1ZFc0dWNHNW5JaXdpY0hKdmVIa2lPaUlpZlE9PVxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgdGl0bGU6IE1ZX1JVTEUudGl0bGUgKyAn5o+Q56S6JyxcXG4gICAgICAgICAgICBjb250ZW50OiAn5pys6KeE5YiZ5L6d6LWW5LqR55uY5rGH5b2x6KeE5YiZ77yM54K55Ye75LiL6Z2i55qE56Gu5a6a5oyJ6ZKu5a+85YWl77yM5rOo5oSP5a+85YWl5ZCO5LiA5a6a6KaB5Zyo5LqR55uY5rGH5b2x55m75b2V6Zi/6YeM5LqR55uY6LSm5Y+377yM5ZCm5YiZ5LiN6IO955SoJyxcXG4gICAgICAgICAgICBjb25maXJtOiBydSxcXG4gICAgICAgICAgICBjYW5jZWw6IHJ1XFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzXFxcIik7XFxuICAgIH0pKTtcXG4gICAgbGV0IHRpcCA9IFxcXCLkupHnm5jmkJzntKLlkJsg5qOA57Si5Yqf6IO955Sx5a+55bqU572R56uZ5o+Q5L6b77yM5pys6KeE5YiZ5LiN5o+Q5L6b5Lu75L2V5YaF5a65XFxcIjtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXAsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHRpcCkgPT4ge1xcbiAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuS9v+eUqOivtOaYjlxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRpcCArIFxcXCLvvIzmnKzop4TliJnku6PnoIHlrozlhajlvIDmupDvvIzku4XkvpvlrabkuaDlkoznoJTnqbbvvJvngrnlh7vkuIvmlrnnoa7lrprmjInpkq7ot7PovazkupHnm5jmsYflvbHlsI/nqIvluo9cXFwiLFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiBcXFwiJ2hpa2VyOi8vaG9tZUDkupHnm5jmsYflvbEnXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0sIHRpcCksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImljb25fMl9yb3VuZFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJoaWtlcjovL2ltYWdlcy9pY29uMlxcXCJcXG4gICAgfSk7XFxuICAgIGxldCBkbW9kZSA9IGdldEl0ZW0oXFxcImRtb2RlXFxcIiwgXFxcIuS6keebmOaxh+W9sVxcXCIpO1xcbiAgICBpbml0Q29uZmlnKHtcXG4gICAgICAgIG1vZGU6IGRtb2RlXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmqKHlvI/vvJpcXFwiICsgZG1vZGUsXFxuICAgICAgICB1cmw6IFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi6YCJ5oup5qih5byPXFxcIixcXG4gICAgICAgICAgICBvcHRpb25zOiBbXFxcIuS6keebmOaxh+W9sVxcXCIsIFxcXCLmnKzlnLDovaznoIFcXFwiLCBcXFwi5a6Y5pa5QVBQXFxcIl0sXFxuICAgICAgICAgICAgY29sOiAxLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZG1vZGVcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5a6Y5pa5QVBQXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/ruaUueaIkOWKn++8jOivt+ehruS/neaJi+acuuacieWuieijhemYv+mHjOS6keebmOWumOaWuUFQUFxcXCI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L+u5pS55oiQ5Yqf77yM5rOo5oSP6KaB5Zyo5LqR55uY5rGH5b2x6K6+572u6YeM6Z2i55m75b2V6LSm5Y+3XFxcIlxcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb24xXFxcIlxcbiAgICB9KTtcXG5cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pCc57SiJyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXlhbPplK7or40nLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdzJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSksXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ3MnLCAnJylcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGxldCBydWxlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKSgpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCJcXFwiID09IHIgPyBcXFwi4oCc4oCc5YWo6YOo4oCd4oCdXFxcIiA6IFxcXCLlhajpg6hcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhckl0ZW0oXFxcInJcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcIlxcXCJcXG4gICAgfSk7XFxuICAgIGZvciAobGV0IGl0IG9mIHJ1bGVzKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpdCA9PSByID8gXFxcIuKAnOKAnFxcXCIgKyBpdCArIFxcXCLigJ3igJ1cXFwiIDogaXQsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChyKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcInJcXFwiLCByKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGl0KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIHBpY191cmw6IFxcXCJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6ICd5cGotbCdcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcbmxldCBzID0gZ2V0TXlWYXIoJ3MnLCAnJyk7XFxuaWYgKHMgIT0gXFxcIlxcXCIpIHtcXG4gICAgbGV0IHAgPSBNWV9QQUdFO1xcbiAgICBsZXQgZGF0YSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKShwLCByICE9IFxcXCJcXFwiID8gciA6IG51bGwpO1xcblxcbiAgICBsZXQgcGFnZWlkID0gXFxcInlwai1wYWdlXFxcIiArIHA7XFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLliqDovb3nrKxcXFwiICsgcCArIFxcXCLpobXkuK3vvIzov5vluqbvvJoxL1xcXCIgKyBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChkKTtcXG4gICAgbG9nKGRhdGEubGVuZ3RoKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgLy/lpJrnur/nqIvliqDovb0gICAgICAgIFxcbiAgICAgICAgbGV0IHJlYWxQYWdlID0gXFxcIlxcXCIgPT0gciA/IDEgOiBwO1xcbiAgICAgICAgbGV0IHRhc2tzID0gZGF0YS5tYXAoaXQgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIGZ1bmM6IGZ1bmN0aW9uKHJ1bGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmZpbmQocywgcmVhbFBhZ2UpO1xcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBwYXJhbTogaXQsXFxuICAgICAgICAgICAgICAgIGlkOiBcXFwicnVsZUBcXFwiICsgaXQubmFtZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgYmF0Y2hFeGVjdXRlKHRhc2tzLCB7XFxuICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgIC8vbG9nKFxcXCJsaXN0ZW5lcjogXFxcIiArIChyZXN1bHQgfHwgW10pLmxlbmd0aClcXG4gICAgICAgICAgICAgICAgcGFyYW0uaSA9IHBhcmFtLmkgKyAxO1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIHJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5qID0gcGFyYW0uaiArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1CZWZvcmUocGFnZWlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXQudGl0bGUuaW5jbHVkZXMoXFxcIuKAnOKAnOKAneKAnVxcXCIpID8gaXQudGl0bGUgOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIGl0LnRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cChcXFwiPGVtPnw8L2VtPlxcXCIsIFxcXCJnXFxcIiksIFxcXCJcXFwiKS5yZXBsYWNlKG5ldyBSZWdFeHAocywgXFxcImdcXFwiKSwgXFxcIjxzdHJvbmc+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogIzFFOTBGRlxcXFxcXFwiPlxcXCIgKyBzICsgXFxcIjwvc3Bhbj48L3N0cm9uZz5cXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0LmRlc2MsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0LnVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGl0LnBpY191cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogaXQucGljX3VybCA/ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycgOiBcXFwidGV4dF8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJfX2FwcFxcXCIgKyBNWV9QQUdFICsgXFxcIkBcXFwiICsgcGFyYW0uaixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAocGFyYW0uaSA+PSBwYXJhbS5hbGwpIHtcXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0ocGFnZWlkKVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLliqDovb3nrKxcXFwiICsgTVlfUEFHRSArIFxcXCLpobXkuK3vvIzov5vluqbvvJpcXFwiICsgKHBhcmFtLmkgKyAxKSArIFxcXCIvXFxcIiArIHBhcmFtLmFsbCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHBhcmFtOiB7XFxuICAgICAgICAgICAgICAgIGFsbDogZGF0YS5sZW5ndGgsXFxuICAgICAgICAgICAgICAgIGk6IDAsXFxuICAgICAgICAgICAgICAgIGo6IC0xXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0oumhtemdolwiLFwicGF0aFwiOlwic291cFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfUEFSQU1TLmtleSkge1xcbiAgICBwdXRNeVZhcihcXFwic1xcXCIsIE1ZX1BBUkFNUy5rZXkpO1xcbn1cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zb3VcXFwiKSkucnVsZSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJDQ09GXCIsXCJwYXRoXCI6XCJjY29mXCIsXCJydWxlXCI6XCJ2YXIgd3JhcHUgPSAodSkgPT4ge1xcbiAgICBpZihjb25maWcubW9kZSA9PSBcXFwi5pys5Zyw6L2s56CBXFxcIil7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZSdcXG4gICAgfVxcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gXFxcIuS6keebmOaxh+W9sVxcXCIpIHtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnO1xcbiAgICB9XFxuICAgIGlmICgvYWxpeXVuZHJpdmUvLnRlc3QodSkpIHtcXG4gICAgICAgIGNvbnN0IFtsaW5rLCBfc2hhcmVfcHdkXSA9IHUuc3BsaXQoJz9zaGFyZV9wd2Q9Jyk7XFxuICAgICAgICBjb25zdCBbX2xpbmssIF9mb2xkZXJJRF0gPSBsaW5rLnNwbGl0KCcvZm9sZGVyLycpO1xcbiAgICAgICAgbGV0IHNoYXJlX3B3ZCA9IChfc2hhcmVfcHdkIHx8ICcnKS5zcGxpdCgnI25hbWU9JylbMF0gfHwgJyc7XFxuICAgICAgICBsZXQgc2hhcmVJZCA9IF9saW5rLnNwbGl0KCdjb20vcy8nKVsxXTtcXG4gICAgICAgIHJldHVybiAnc21hcnRkcml2ZTovL3NoYXJlL2Jyb3dzZT9zaGFyZUlkPScgKyBzaGFyZUlkICsgJyZzaGFyZVB3ZD0nICsgc2hhcmVfcHdkO1xcbiAgICB9XFxuICAgIHJldHVybiBcXFwid2ViOi8vXFxcIiArIHU7XFxufTtcXG4kLmV4cG9ydHMgPSB7XFxuICAgIG5hbWU6ICdDQ09GJyxcXG4gICAgcGFnZTogdHJ1ZSxcXG4gICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgbGV0IGQgPSBbXVxcbiAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgIGJ5dGVzVG9TaXplLFxcbiAgICAgICAgICAgIGNvbG9yXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdG9vbHMnKTtcXG4gICAgICAgIGxldCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vcGFuLmNjb2YuY2MvYXBpL3NlYXJjaCcsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJjb250ZW50LXR5cGVcXFwiOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vcGFuLmNjb2YuY2Mvc2VhcmNoP2tleXdvcmQ9JyArIHNcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgXFxcInBhZ2VTaXplXFxcIjogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlTnVtXFxcIjogcGFnZSxcXG4gICAgICAgICAgICAgICAgXFxcImtleXdvcmRcXFwiOiBzLFxcbiAgICAgICAgICAgICAgICBcXFwiZnJvbU1vYmlsZVxcXCI6IHRydWVcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KVxcbiAgICAgICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGh0bWwpXFxuICAgICAgICAgICAgLmRhdGEucm93c1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ID0gbGlzdFtpXVxcbiAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0LmZpbGVOYW1lXFxuICAgICAgICAgICAgbGV0IG11cmwgPSBpdC51cmxcXG4gICAgICAgICAgICBsZXQgdHlwZSA9IGl0LnR5cGUucmVwbGFjZSgvZm9sZGVyLywgJ+aWh+S7tuWkuScpLnJlcGxhY2UoL2ZpbGUvLCAn5paH5Lu2JylcXG4gICAgICAgICAgICBpZiAodGl0bGUuaW5jbHVkZXMocykpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5DQ09GPC9mb250PiZuYnNwOycgKyAn5paH5Lu257G75Z6L77yaJyArIHR5cGUgKyAn77yM5paH5Lu25aSn5bCP77yaJyArIGJ5dGVzVG9TaXplKGl0LnNpemUpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdShtdXJsKVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlt6XlhbdcIixcInBhdGhcIjpcInRvb2xzXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBieXRlc1RvU2l6ZShzaXplKSB7XFxuICAgIGlmIChzaXplIDwgMC4xICogMTAyNCkge1xcbiAgICAgICAgLy/lsI/kuo4wLjFLQu+8jOWImei9rOWMluaIkEJcXG4gICAgICAgIHNpemUgPSBzaXplLnRvRml4ZWQoMikgKyBcXFwiQlxcXCI7XFxuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDAuMSAqIDEwMjQgKiAxMDI0KSB7XFxuICAgICAgICAvLyDlsI/kuo4wLjFNQu+8jOWImei9rOWMluaIkEtCXFxuICAgICAgICBzaXplID0gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDIpICsgXFxcIktCXFxcIjtcXG4gICAgfSBlbHNlIGlmIChzaXplIDwgMC4xICogMTAyNCAqIDEwMjQgKiAxMDI0KSB7XFxuICAgICAgICAvLyDlsI/kuo4wLjFHQu+8jOWImei9rOWMluaIkE1CXFxuICAgICAgICBzaXplID0gKHNpemUgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDIpICsgXFxcIk1CXFxcIjtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIC8vIOWFtuS7lui9rOWMluaIkEdCXFxuICAgICAgICBzaXplID0gKHNpemUgLyAoMTAyNCAqIDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArIFxcXCJHQlxcXCI7XFxuICAgIH1cXG4gICAgLy8g6L2s5oiQ5a2X56ym5LiyXFxuICAgIGxldCBzaXplU3RyID0gc2l6ZSArIFxcXCJcXFwiLFxcbiAgICAgICAgLy8g6I635Y+W5bCP5pWw54K55aSE55qE57Si5byVXFxuICAgICAgICBpbmRleCA9IHNpemVTdHIuaW5kZXhPZihcXFwiLlxcXCIpLFxcbiAgICAgICAgLy8g6I635Y+W5bCP5pWw54K55ZCO5Lik5L2N55qE5YC8XFxuICAgICAgICBkb3UgPSBzaXplU3RyLnN1YnN0cihpbmRleCArIDEsIDIpO1xcbiAgICAvLyDliKTmlq3lkI7kuKTkvY3mmK/lkKbkuLowMO+8jOWmguaenOaYr+WImeWIoOmZpDAwXFxuICAgIGlmIChkb3UgPT09IFxcXCIwMFxcXCIpIHJldHVybiBzaXplU3RyLnN1YnN0cmluZygwLCBpbmRleCkgKyBzaXplU3RyLnN1YnN0cihpbmRleCArIDMsIDIpO1xcbiAgICByZXR1cm4gc2l6ZTtcXG59XFxuJC5leHBvcnRzLmJ5dGVzVG9TaXplID0gYnl0ZXNUb1NpemU7XFxuJC5leHBvcnRzLmNvbG9yID0gZnVuY3Rpb24odGV4dCwgY29sb3IpIHtcXG4gICAgdGV4dCArPSBcXFwiXFxcIjtcXG4gICAgaWYgKHRleHQuaW5kZXhPZihcXFwi4oCc4oCc4oCd4oCdXFxcIikgPT09IDApIHtcXG4gICAgICAgIHRleHQucmVwbGFjZShcXFwi4oCc4oCc4oCd4oCdXFxcIiwgXFxcIlxcXCIpO1xcbiAgICB9XFxuICAgIHJldHVybiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9J1xcXCIgKyBjb2xvciArIFxcXCInPlxcXCIgKyB0ZXh0ICsgXFxcIjwvZm9udD5cXFwiO1xcbn1cXG5cXG4kLmV4cG9ydHMuc2xlZXAgPSBmdW5jdGlvbih0aW1lb3V0KSB7XFxuICAgIGphdmEubGFuZy5UaHJlYWQuc2xlZXAodGltZW91dCk7XFxufVxcblxcbmZ1bmN0aW9uIGh0bWxUYWcodGFnLCB0ZXh0KSB7XFxuICAgIHRleHQgKz0gXFxcIlxcXCI7XFxuICAgIGlmICh0ZXh0LmluZGV4T2YoXFxcIuKAnOKAnOKAneKAnVxcXCIpID09PSAwKSB7XFxuICAgICAgICB0ZXh0LnJlcGxhY2UoXFxcIuKAnOKAnOKAneKAnVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBcXFwiPFxcXCIgKyB0YWcgKyBcXFwiPlxcXCIgKyB0ZXh0ICsgXFxcIjwvXFxcIiArIHRhZyArIFxcXCI+XFxcIjtcXG5cXG59XFxuJC5leHBvcnRzLmh0bWxUYWcgPSBodG1sVGFnO1xcbiQuZXhwb3J0cy5zbWFsbCA9IGZ1bmN0aW9uKHRleHQpIHtcXG4gICAgcmV0dXJuIGh0bWxUYWcoXFxcInNtYWxsXFxcIiwgdGV4dCk7XFxufVxcblxcbmZ1bmN0aW9uIGdldFRpbWUoZmlsZSxpc1N0YW5kYXJkKSB7XFxuICAgIGlzU3RhbmRhcmQgPSBpc1N0YW5kYXJkfHxmYWxzZTtcXG4gICAgbGV0IHRUaW1lID0gZmlsZS51cGRhdGVkX2F0IHx8IGZpbGUudGltZV9zdHIgfHwgXFxcIlxcXCI7XFxuICAgIHRUaW1lID0gdFRpbWUuc3BsaXQoXFxcIlRcXFwiKTtcXG4gICAgbGV0IGRhdGUgPSB0VGltZVswXTtcXG4gICAgaWYoaXNTdGFuZGFyZCl7XFxuICAgICAgICBkYXRlID0gZGF0ZS5yZXBsYWNlKC8tL2csXFxcIi9cXFwiKTtcXG4gICAgfVxcbiAgICB0VGltZSA9IHRUaW1lWzFdLnNwbGl0KC9afFxcXFwuLyk7XFxuICAgIGRhdGUgKz0gXFxcIiBcXFwiICsgdFRpbWVbMF07XFxuICAgIHJldHVybiBkYXRlO1xcbn1cXG5mdW5jdGlvbiBnZXRUaW1lSW50KHRpbWVTdHIpe1xcbiAgICByZXR1cm4gKG5ldyBEYXRlKHRpbWVTdHIpKS5nZXRUaW1lKClcXG59XFxuJC5leHBvcnRzLmdldFRpbWUgPSBnZXRUaW1lO1xcblxcbmxldCBjaG5OdW1DaGFyID0ge1xcbiAgICDpm7Y6IDAsXFxuICAgIOS4gDogMSxcXG4gICAg5LqMOiAyLFxcbiAgICDkuIk6IDMsXFxuICAgIOWbmzogNCxcXG4gICAg5LqUOiA1LFxcbiAgICDlha06IDYsXFxuICAgIOS4gzogNyxcXG4gICAg5YWrOiA4LFxcbiAgICDkuZ06IDlcXG59O1xcblxcbmxldCBjaG5OYW1lVmFsdWUgPSB7XFxuICAgIOWNgToge1xcbiAgICAgICAgdmFsdWU6IDEwLFxcbiAgICAgICAgc2VjVW5pdDogZmFsc2VcXG4gICAgfSxcXG4gICAg55m+OiB7XFxuICAgICAgICB2YWx1ZTogMTAwLFxcbiAgICAgICAgc2VjVW5pdDogZmFsc2VcXG4gICAgfSxcXG4gICAg5Y2DOiB7XFxuICAgICAgICB2YWx1ZTogMTAwMCxcXG4gICAgICAgIHNlY1VuaXQ6IGZhbHNlXFxuICAgIH0sXFxuICAgIOS4hzoge1xcbiAgICAgICAgdmFsdWU6IDEwMDAwLFxcbiAgICAgICAgc2VjVW5pdDogdHJ1ZVxcbiAgICB9LFxcbiAgICDkur86IHtcXG4gICAgICAgIHZhbHVlOiAxMDAwMDAwMDAsXFxuICAgICAgICBzZWNVbml0OiB0cnVlXFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gQ2hpbmVzZVRvTnVtYmVyKGNoblN0cikge1xcbiAgICBsZXQgcnRuID0gMDtcXG4gICAgbGV0IHNlY3Rpb24gPSAwO1xcbiAgICBsZXQgbnVtYmVyID0gMDtcXG4gICAgbGV0IHNlY1VuaXQgPSBmYWxzZTtcXG4gICAgbGV0IHN0ciA9IGNoblN0ci5zcGxpdCgnJyk7XFxuXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBsZXQgbnVtID0gY2huTnVtQ2hhcltzdHJbaV1dO1xcbiAgICAgICAgaWYgKHR5cGVvZiBudW0gIT09ICd1bmRlZmluZWQnKSB7XFxuICAgICAgICAgICAgbnVtYmVyID0gbnVtO1xcbiAgICAgICAgICAgIGlmIChpID09PSBzdHIubGVuZ3RoIC0gMSkge1xcbiAgICAgICAgICAgICAgICBzZWN0aW9uICs9IG51bWJlcjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGxldCB1bml0ID0gY2huTmFtZVZhbHVlW3N0cltpXV0udmFsdWU7XFxuICAgICAgICAgICAgc2VjVW5pdCA9IGNobk5hbWVWYWx1ZVtzdHJbaV1dLnNlY1VuaXQ7XFxuICAgICAgICAgICAgaWYgKHNlY1VuaXQpIHtcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9IChzZWN0aW9uICsgbnVtYmVyKSAqIHVuaXQ7XFxuICAgICAgICAgICAgICAgIHJ0biArPSBzZWN0aW9uO1xcbiAgICAgICAgICAgICAgICBzZWN0aW9uID0gMDtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBzZWN0aW9uICs9IChudW1iZXIgKiB1bml0KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbnVtYmVyID0gMDtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gcnRuICsgc2VjdGlvbjtcXG59XFxuXFxuZnVuY3Rpb24gbmFtZUNvbXBhcmUoYSwgYikge1xcbiAgICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbClcXG4gICAgICAgIHJldHVybiBhID09IG51bGwgPyBiID09IG51bGwgPyAwIDogLTEgOiAxO1xcblxcbiAgICBhID0gYS5yZXBsYWNlKC8oW+mbtuS4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5neWNgeeZvuWNg+S4h+S6v10pL2csIGZ1bmN0aW9uKG1hdGNoLCBwMSwgcDIsIHAzLCBvZmZzZXQsIHN0cmluZykge1xcbiAgICAgICAgLy8gcDEgaXMgbm9uZGlnaXRzLCBwMiBkaWdpdHMsIGFuZCBwMyBub24tYWxwaGFudW1lcmljc1xcbiAgICAgICAgcmV0dXJuIENoaW5lc2VUb051bWJlcihwMSk7XFxuICAgIH0pXFxuICAgIGIgPSBiLnJlcGxhY2UoLyhb6Zu25LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2B55m+5Y2D5LiH5Lq/XSkvZywgZnVuY3Rpb24obWF0Y2gsIHAxLCBwMiwgcDMsIG9mZnNldCwgc3RyaW5nKSB7XFxuICAgICAgICAvLyBwMSBpcyBub25kaWdpdHMsIHAyIGRpZ2l0cywgYW5kIHAzIG5vbi1hbHBoYW51bWVyaWNzXFxuICAgICAgICByZXR1cm4gQ2hpbmVzZVRvTnVtYmVyKHAxKTtcXG4gICAgfSlcXG5cXG4gICAgbGV0IE5VTUJFUlMgPSBqYXZhLnV0aWwucmVnZXguUGF0dGVybi5jb21waWxlKFxcXCIoPzw9XFxcXFxcXFxEKSg/PVxcXFxcXFxcZCl8KD88PVxcXFxcXFxcZCkoPz1cXFxcXFxcXEQpXFxcIilcXG4gICAgbGV0IHNwbGl0MSA9IE5VTUJFUlMuc3BsaXQobmV3IGphdmEubGFuZy5TdHJpbmcoYSkpO1xcbiAgICBsZXQgc3BsaXQyID0gTlVNQkVSUy5zcGxpdChuZXcgamF2YS5sYW5nLlN0cmluZyhiKSk7XFxuXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4oc3BsaXQxLmxlbmd0aCwgc3BsaXQyLmxlbmd0aCk7IGkrKykge1xcbiAgICAgICAgbGV0IGMxID0gc3BsaXQxW2ldLmNoYXJDb2RlQXQoMCk7XFxuICAgICAgICBsZXQgYzIgPSBzcGxpdDJbaV0uY2hhckNvZGVBdCgwKTtcXG4gICAgICAgIGxldCBjbXAgPSAwO1xcbiAgICAgICAgbGV0IHplcm9DaGFyQ29kZSA9ICcwJy5jaGFyQ29kZUF0KDApO1xcbiAgICAgICAgbGV0IG5pbmVDaGFyQ29kZSA9ICc5Jy5jaGFyQ29kZUF0KDApO1xcblxcbiAgICAgICAgaWYgKGMxID49IHplcm9DaGFyQ29kZSAmJiBjMSA8PSBuaW5lQ2hhckNvZGUgJiYgYzIgPj0gemVyb0NoYXJDb2RlICYmIGMyIDw9IG5pbmVDaGFyQ29kZSkge1xcbiAgICAgICAgICAgIGNtcCA9IG5ldyBqYXZhLm1hdGguQmlnSW50ZWdlcihzcGxpdDFbaV0pLmNvbXBhcmVUbyhuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoc3BsaXQyW2ldKSk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICBpZiAoY21wID09PSAwKSB7XFxuICAgICAgICAgICAgbGV0IHJlZ2V4ID0gL1thLXpBLVowLTldL1xcbiAgICAgICAgICAgIGxldCBzMSA9IFN0cmluZyhzcGxpdDFbaV0pXFxuICAgICAgICAgICAgbGV0IHMyID0gU3RyaW5nKHNwbGl0MltpXSlcXG4gICAgICAgICAgICBpZiAocmVnZXgudGVzdChzMSkgfHwgcmVnZXgudGVzdChzMikpIHtcXG4gICAgICAgICAgICAgICAgY21wID0gbmV3IGphdmEubGFuZy5TdHJpbmcoc3BsaXQxW2ldKS5jb21wYXJlVG8obmV3IGphdmEubGFuZy5TdHJpbmcoc3BsaXQyW2ldKSk7XFxuICAgICAgICAgICAgICAgIC8vIGNtcCA9IHMxLmxvY2FsZUNvbXBhcmUoczIsICdlbicpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgY21wID0gczEubG9jYWxlQ29tcGFyZShzMiwgJ3poJylcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuXFxuICAgICAgICBpZiAoY21wICE9PSAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGNtcDtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBsZXQgbGVuZ3RoQ21wID0gc3BsaXQxLmxlbmd0aCAtIHNwbGl0Mi5sZW5ndGg7XFxuICAgIC8vIGlmIChsZW5ndGhDbXAgIT09IDApIGxlbmd0aENtcCA9IGxlbmd0aENtcCA+IDAgPyAtMSA6IDE7XFxuICAgIHJldHVybiBsZW5ndGhDbXA7XFxufVxcblxcbiQuZXhwb3J0cy5zb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIHNvcnQpIHtcXG4gICAgaWYgKHNvcnQgPT09IFxcXCLnsbvlnotcXFwiKSB7XFxuICAgICAgICAvLyBsb2coXFxcIuexu+Wei+aOkuW6j1xcXCIpO1xcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlXFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIGlmIChzb3J0ID09PSBcXFwi5ZCN56ewXFxcIikge1xcbiAgICAgICAgLy8gbG9nKFxcXCLlkI3np7DmjpLluo9cXFwiKTtcXG4gICAgICAgIC8vIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAvLyAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSwgXFxcInpoXFxcIilcXG4gICAgICAgIC8vIH0pO1xcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gbmFtZUNvbXBhcmUoYS5uYW1lfHxhLnRpdGxlLCBiLm5hbWV8fGIudGl0bGUpO1xcbiAgICAgICAgfSk7XFxuICAgIH0gZWxzZSBpZiAoc29ydCA9PT0gXFxcIuWkp+Wwj1xcXCIpIHtcXG4gICAgICAgIC8vIGxvZyhcXFwi5aSn5bCP5o6S5bqPXFxcIik7XFxuICAgICAgICBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiAoYS5zaXplIHx8IE51bWJlcihhLnNpemVfc3RyKSB8fCAwKSAtIChiLnNpemUgfHwgTnVtYmVyKGIuc2l6ZV9zdHIpIHx8IDApO1xcbiAgICAgICAgfSk7XFxuICAgIH1lbHNlIGlmIChzb3J0ID09PSBcXFwi5pe26Ze0XFxcIikge1xcbiAgICAgICAgLy8gbG9nKFxcXCLml7bpl7TmjpLluo9cXFwiKTtcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGdldFRpbWVJbnQoZ2V0VGltZShhLHRydWUpKSAtIGdldFRpbWVJbnQoZ2V0VGltZShiLHRydWUpKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcmV0dXJuIGxpc3RcXG59XFxuXFxuZnVuY3Rpb24gc2ltaWxhcihzLCB0LCBmKSB7Ly/liKTmlq3kuKTkuKrlrZfnrKbkuLLkuYvpl7TnmoTnm7jkvLzluqZcXG4gICAgaWYgKCFzIHx8ICF0KSB7XFxuICAgICAgICByZXR1cm4gMFxcbiAgICB9XFxuICAgIGlmKHMgPT09IHQpe1xcbiAgICAgICAgcmV0dXJuIDEwMDtcXG4gICAgfVxcbiAgICB2YXIgbCA9IHMubGVuZ3RoID4gdC5sZW5ndGggPyBzLmxlbmd0aCA6IHQubGVuZ3RoXFxuICAgIHZhciBuID0gcy5sZW5ndGhcXG4gICAgdmFyIG0gPSB0Lmxlbmd0aFxcbiAgICB2YXIgZCA9IFtdXFxuICAgIGYgPSBmIHx8IDJcXG4gICAgdmFyIG1pbiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XFxuICAgICAgICByZXR1cm4gYSA8IGIgPyAoYSA8IGMgPyBhIDogYykgOiAoYiA8IGMgPyBiIDogYylcXG4gICAgfVxcbiAgICB2YXIgaSwgaiwgc2ksIHRqLCBjb3N0XFxuICAgIGlmIChuID09PSAwKSByZXR1cm4gbVxcbiAgICBpZiAobSA9PT0gMCkgcmV0dXJuIG5cXG4gICAgZm9yIChpID0gMDsgaSA8PSBuOyBpKyspIHtcXG4gICAgICAgIGRbaV0gPSBbXVxcbiAgICAgICAgZFtpXVswXSA9IGlcXG4gICAgfVxcbiAgICBmb3IgKGogPSAwOyBqIDw9IG07IGorKykge1xcbiAgICAgICAgZFswXVtqXSA9IGpcXG4gICAgfVxcbiAgICBmb3IgKGkgPSAxOyBpIDw9IG47IGkrKykge1xcbiAgICAgICAgc2kgPSBzLmNoYXJBdChpIC0gMSlcXG4gICAgICAgIGZvciAoaiA9IDE7IGogPD0gbTsgaisrKSB7XFxuICAgICAgICAgICAgdGogPSB0LmNoYXJBdChqIC0gMSlcXG4gICAgICAgICAgICBpZiAoc2kgPT09IHRqKSB7XFxuICAgICAgICAgICAgICAgIGNvc3QgPSAwXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgY29zdCA9IDFcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZFtpXVtqXSA9IG1pbihkW2kgLSAxXVtqXSArIDEsIGRbaV1baiAtIDFdICsgMSwgZFtpIC0gMV1baiAtIDFdICsgY29zdClcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBsZXQgcmVzID0gKDEgLSBkW25dW21dIC8gbCkgKjEwMFxcbiAgICByZXR1cm4gcmVzLnRvRml4ZWQoZilcXG59XFxuXFxuJC5leHBvcnRzLnNpbWlsYXIgPSBzaW1pbGFyO1xcbiQuZXhwb3J0cy5yZW1vdmVFeHQgPSBmdW5jdGlvbiAoZmlsZSl7XFxuICAgIHJldHVybiBmaWxlLnNwbGl0KCcuJykuc2xpY2UoMCwtMSkuam9pbignLicpXFxufTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInVcIixcInBhdGhcIjpcInVcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHJ1bGUsIG9yaWdpbiwgbW9kZSkge1xcbiAgICByZXR1cm4gJC50b1N0cmluZygocnVsZSwgb3JpZ2luLCBtb2RlKSA9PiB7XFxuICAgICAgICBsZXQgaG9zdCA9IG9yaWdpbi5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcImh0dHA6Ly98aHR0cHM6Ly9cXFwiKSwgXFxcIlxcXCIpLnNwbGl0KFxcXCIvXFxcIilbMF07XFxuICAgICAgICBsZXQgaG9zdHMgPSBob3N0LnNwbGl0KFxcXCIuXFxcIik7XFxuICAgICAgICBpZiAoaG9zdHMubGVuZ3RoID4gMikge1xcbiAgICAgICAgICAgIGhvc3QgPSBob3N0c1tob3N0cy5sZW5ndGggLSAyXSArIFxcXCIuXFxcIiArIGhvc3RzW2hvc3RzLmxlbmd0aCAtIDFdO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcIm1hZ25ldFxcXCIpKSB7XFxuICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5rip6aao5o+Q56S6XFxcIixcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcIuajgOa1i+WIsOaWsOeahOejgemTvuWcsOWdgO+8jOeCueWHu+ehruWumuaMiemSruWNs+WPr+aSreaUvu+8jOeCueWHu+WPlua2iOaMiemSruWPr+S7peWkjeWItumTvuaOpVxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKG1hZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hZztcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpLFxcbiAgICAgICAgICAgICAgICBjYW5jZWw6ICQudG9TdHJpbmcoKG1hZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIG1hZ1xcbiAgICAgICAgICAgICAgICB9LCBpbnB1dClcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmNsdWRlcyhcXFwiYWxpeXVuZHJpdmUuY29tXFxcIikgJiYgbW9kZSAhPSBcXFwi5a6Y5pa5QVBQXFxcIikge1xcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLpmL/ph4zkupHnm5hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9XFxcIiArIHVybCArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcbiAgICAgICAgfSBlbHNlIGlmICgvXFxcXC4obXAzfGZsYWN8bTRhKSQvLnRlc3QoaW5wdXQpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGxheVZpZGVvKHVybCk7XFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpXFxuICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5pbmNsdWRlcyhob3N0KSAmJiBpbnB1dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUsIG1vZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6K+m5oOFXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS95c2Z4P3J1bGU9XFxcIiArIHJ1bGUgKyBcXFwiJnI9XFxcIiArIHJ1bGUgKyBcXFwiJm1vZGU9XFxcIiArIG1vZGUgKyBcXFwiIyNcXFwiICsgdXJsLFxcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSwgbW9kZSk7XFxuICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIC8v6IO95ZSk6LW3QVBQ55qE55m95ZCN5Y2VXFxuICAgICAgICAgICAgbGV0IHdoaXRlID0gW1xcbiAgICAgICAgICAgICAgICBcXFwicWtsaW5rXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImJkbmV0ZGlza1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJ4dW5sZWlhcHBcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwic21hcnRkcml2ZVxcXCJcXG4gICAgICAgICAgICBdO1xcbiAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IGlucHV0LnN0YXJ0c1dpdGgoaXQpKS5sZW5ndGggPiAwO1xcbiAgICAgICAgICAgIGlmICghaW5XaGl0ZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAgJiYgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAodXJsKTtcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSB7XFxuXFxuICAgICAgICB9XFxuICAgIH0sIHJ1bGUsIG9yaWdpbiwgbW9kZSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwieXNmeFwiLFwicGF0aFwiOlwieXNmeFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgcnVsZSA9IGdldFBhcmFtKFxcXCJyXFxcIikuc3BsaXQoXFxcIiMjXFxcIilbMF07XFxubGV0IG1vZGUgPSAoZ2V0UGFyYW0oXFxcIm1vZGVcXFwiKSB8fCBcXFwiXFxcIikuc3BsaXQoXFxcIiMjXFxcIilbMF07XFxubGV0IHVybCA9IE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXTtcXG5sZXQgaXRlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdVxcXCIpKHJ1bGUsIGdldEhvbWUodXJsKSwgbW9kZSk7XFxubGV0IGpzID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgIHRyeSB7XFxuICAgICAgICBpZiAoZG9jdW1lbnQudGl0bGUgJiYgZG9jdW1lbnQudGl0bGUubGVuZ3RoKSB7XFxuICAgICAgICAgICAgbGV0IHIgPSAkJCQoKS5sYXp5UnVsZSgodCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUodCk7XFxuICAgICAgICAgICAgfSwgZG9jdW1lbnQudGl0bGUpO1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGFyc2VMYXp5UnVsZShyKTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZnlfYnJpZGdlX2FwcC5sb2coZS50b1N0cmluZygpKTtcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICBkZXNjOiBcXFwiMTAwJSYmZmxvYXRcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHVybEludGVyY2VwdG9yOiBpdGUsXFxuICAgICAgICBqczoganMsXFxuICAgICAgICBjYW5CYWNrOiB0cnVlLFxcbiAgICAgICAganNMb2FkaW5nSW5qZWN0OiB0cnVlLFxcbiAgICAgICAgZmxvYXRWaWRlbzogdHJ1ZVxcbiAgICB9XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiB1cmxcXG4gICAgfVxcbn0pO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumYv+mHjGxhenlcIixcInBhdGhcIjpcImFsaWxhenlcIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoXFxcInJPKzM3dUcrYjJKYmw5MUpYZTFBTGFjQWNSSzF4aWtLTlNmeDNPSk52OU1BS3Bjd0ZLRUxxdjJGUUVxNTE4L1psWkNkek05dkduemMvcEkzTHpmT3lhQlZ3TXorZEFjWi9zamd3ZHI5K2FoTjJ6cHpIbzhkRE9kNks5eGFSV01mREN6eTczZ1JQdGFrQUhKQTNtTlJXMnB1UFNyU1RCTUIya1VHcUVHdVVOV2tNMXBIQTFqb3VTV3JyQU1ia09FSVVLYjJZUUozZUlyVVMyc3NUNzRXd2VqdjBpcnhWWjhSVGhVZ3B6QVNZNTV1UHQ3VmdpVlZpaUVYRmNKL3ZwOXhld1lXNUtFdGdjM3ZFeGNUVjh6dlA4Y3lIMDFwZEYyS1BHc2cwSEx3QkU0STlROXUxVGdDT0ZqYU5mWk5rYXhaUVoyVm5QbFoxck55dExjcGFEY2YyTS9qclRkLytubXNtV3Jraml0dXE4eEk2ZkNUbDBKNmUwSHdIemZ0UThYRmRVRmVqS3hXREZwaTEwempRNG4vckNRKzRTN09OWlpUcllkaVh5UGU0UTNtZ3pKN1FaNDc1UDNOcEtPNmdMbGlKdnA3TkhzUFcvQUgrcGZYQlhCd2RSaXZDNmhORzV1UDZCZzhnbWlOMUdUc1JNWHc3TGhvckZKd1dEWlJBOVlMbFh2S1JidjVZWXRwRk1UNU9aQ2c5cHJFamFnWVovL3VkS3p5K3hCU2hBMTMzRDVSYW0rUDN5cUtxakxrd3RRVVpKeXhaRTg2YjY2MHZYMkNiaGJ4U1k4SkZFM2cxWHM0dmdXMFdDNThhRFJPTEF5aFpwMGVpN25tS2tQRmxhUVk4dWpNd3RkOCtVWlRWMTNZT2lpZG9Lc2hYcXZISlZJZkU1cS8yN2Z2eUd1MmhLZkoybkphYXR3cG5pWHFSSXU0OWMwZmxSUk92VU1tMUxIVytUb0pRczBLMHBaTXd4M0pKRnkrYUptbDRUTlViOE1MVDhXS2crWlpMcTZtMFBBV3c4Z2RnSXRMRGEyYURUL1FzK0F3d1N2azFRK0NHclFEc3pveG5xR3BkSml6YkRWVFFrSmNXNTNJZEoraVNVUVFIQ011TTFVWWZwZEFKd2M0RDMrajMwU2NIdW5IMy9iTkJmWXduMDQvS0h2N3laU3lGYzA2UjJ3OG5nRE1SbmNmSVByak42YnN6QkVBY0swcFY0QXRnaHJKQWRwQ3JQUkN3NE1mVUxKZzY2cXhWNEtWMUZrYk9IWTZnMDZDcXpkaTl0QmdmZDM0THpmZEtkSDFWb2R0NEs2N2dQbnRYbWJVOENVVHMySFJGbHdmQ2ZxQm1RdEZEaVQzRnFOUEZIWGszb0pFK3NPSXRTcnZVZHUrYnQ0cEZ5bG5lZUdsSVNzWDZtSE9IZms1QlpwOUVXT01rakE2RG1icFpmcUJvajQvckprMWNIYnZmTUxKL25XN0h4a3ZkYndqZmVIcjlyTG5FckQ4K09oTVByMkZDbHVDWEs4czhmUkx2blZWUnVMODNjZDVNSkRlUEdYbmhIZkppY004ZThzcnkwaldWblA3Q0ovNzFrZ0IxUFlPb09hNlljQm5kL0Vvc3Q5U09lc25lK1lrdG5QYUhQeGZ2Mi9Hd2JaczdRS2d0elovVm5jdHA4MGpSTEJ3Q050RFpOQXp3M3Z4MXl2TDZ5NFBQTGUzc1F3MHRiUnhQcC8vTnEwdFZITmxTYXNFbVBEM0d3KytqazU0VnVSZWJ5U0hrWWxTR082Q3FENGM2Z3p3MWJHUllERG5FK2hDZHVJL2d4bExmc3NTWjIyVm0ySGtWeGd2UUc4L2NOd25BSVZYRGNEOXBwYWZNK0lzdXZDRFo0VWRTczdLMnV6SjRiVWk5UE9xMEFScjZyRU1OTFcwY1Q2Zi96YXRMVlJ6WlVsZEdVQSt0QXdCWGVBeEpSenV3UStRNVJvbzdzTndXajlTdDc2SWFPd09ZSktrYVFwNVZ5TGRhMHN4d1NvNXcrZHdHZCtjbWU5UlRETWIvZUNCV1FmeVdtVGNTay82VUxuUHdOVkZuVVhORmsyUFBQS1NSVWZNeUs3eHlWOG1PK3VhY0pMMlBpSmpsNW56Q0tiSnoxd2FDbm8rZjJMNFE1Vy8xWEsvOGpVNTdXVGszcmlXaTJ1T1dRV1lQcFY1dm1GL1l6VHVXWHhOYjZ6V3FiYjlqN2k5cFY0L3l4OE50L2FPVUZ1ZEpGaVR2OG04cVpsc0tyV0R3SDdIK3owRWhSOFV4WDVaQ0w1TU16UnViUjhsRFJFUk1SbzRROXdnSXZueFl2ZGNVMEF3djZIYk9ubGNObHFBRUtreEVSTG9xVHltdmErakhCM2ZLeWNUcm9JWFVuUWtINGhwM0lpRVRhdHUxMXp6YS84eld6bFhDbGxKSVRSSTVwQisvYzh6cytTMlErZ1NqZUJRcGpKcHprbzJCSlI3eHBOTHIzR3VDVWJXNTlDTURwdFRtWEd0bE1qNU8yc1F2ajBBNldlNEd6cjJ4NGY5dE5ab1NnRXg2ektQL0grSGFpU1gzcnNHQ3VQcnB0Q0FPTkZiYnhwQlpacnVNbmNFbUtuV21XK09OQjMxVjdoWWlVYVc1Sm5VcVk5aHo4Q1FBVkFkZFBqWFBNSUFQVitCTkNmbnNORlhXdjhld2FuUEl6ZTM3QVM5MzRpQmdsNEdPV2J0NHNuL0ZGR0hPN0lkWFc0Zk9Xa24xdTVRQnVZcy9VM0I0NEgyN05JZ1R1T2MvS2NhRDE0ODdmcFZ2dDdPZnNPblV6OXQwTWxzVWRsTUpGM2poK3czcEVMZXhYOWNTUXpvMmNzcnkwaldWblA3Q0ovNzFrZ0IxUFlGeGZkTnRKOTNuQXRRQjJWVk9FWDdjUEk3VytLSDc4M1hvV3I0bXdqQTJTdk5EQWZBTTV3ajI0VUlMWElOUjJNVHdiT0padDdPencvSXRaMHN1VkJ6WTUwTFhSMHM4TGV1NDFOT0xpMjNPWEpuYTU2TWhIdGpIaFQzWHJ1NDB3c2tWeG11cS9tbS9wcWxYWk5uV3VNek8rUlQ0UDlObVNQNVZtTXdKai9xRkhUb1FxbXRzclQvaHllOUJvcGcrZWY5b0pNUFV2OStvRzRxTElyaENxT3VvMVBmVExrMmFTS3lrbk13Y3hzZlA5MHVaZ0FxUzIxLy9RK2dKYVR4R1B6dm5TSkhNeHR3K2JhWXZsTEpFdENzeGk3VXRWbzQ3QVR3dDR0S1NsY1J4bVJPNy9BNUhidjEzYXIvVUtqWkpJOTJXQ0svcEQvQWhzMmVpQ0M5WHp5WTBGaElQTWhiODlWNUVzeUhFTU16ZEx6Ukx4N1lkcldINTNmZVZ3S0RYY1o4c29Va2xyQ0NqKzdZZ3Vwc1hhOE9DSWc4SStpSWQ0c2ZENGNBVllFbW5GNzV0d1ZKTW5ZU0pqbE1rMEYzUnJ4bDhnbFU0bllTdGRlUW94OGNtTUZwSy9oaVAvNUJDTmpxZ3I5ZkZHdFFFUDE5ZWIrVkxBNnFQNENPajNjWnFWNCtyLzlRMXhKYmdZQUJyUi81dFhpaHBLTGNkeDN3MHNtTVNiZHJEcVdaclhtdG5VcGo3YTNRQzRZRkM0T0lVUUJ5ZnBYSVZoenl3Skw2MFpaTFJhdmhsdHAvRytyMHY1RDk2dlJqMkQrM3BkdWdhKzRBdmFYUTllOGQ4bkE5MW5IQkpCSEx1V1Axa3ArUWJ2cmY1RENiUDhOb1JYZ1M1WWpRYnNxem4xQ0NmU2ptWnZzdmVQaTZCQUViUUR0SDliWGZFR01RY1dHcmRjVEMzWExvc2lLblJDSWRkSGR2cFgvbUxxbXl0Wkx5R3pnR3NYc0VTTFFzdDRyNXNSVmVPZ2lFbVo4QmY1YlhhZVJqMnh5bmRESXUzV2VuMVMralAvUmJrQjNVaFFYdk1NaGE5T2JGMC9hQm9ONGt6ZCtBbzdnU3FPOHpzYXgyRzJqdXBKNkdjZTNTUkpaOEpJS3F6MlVheXJmZDl1dnM5TjdkRjVzTGNHTUpUYjhjWFZxdDhtSXRLZFd1SjBTT084bHMvdE5WMUN4ZmZWVkVGWUpXTUw5TmwxMmxqS1lhTVJsQ0MxUU5nVUxxMjdKRVoyUTdLMHVEQnlSNElTMlhXOGlhZEdQdnBCS3FJWmNmVDllN0FReTU0Q1ErVEw0MGE5aFBSUWxnazZEWkVxSENwd0tJTmROZEZWRFlFVTZxQTBab1BQVVh3WWs0d0k5N044L2ZQUlJRUTBzQ2ZIa1ZveTFYUmFQWDdPSHpVWTZKTHo1MlV1SEpqOGhqWW45WnVlUytMV2ZVS1hBQWpGb2NndlI0Vk1YWTBTazZTV2VYd1JvaDh1T1plYzhmUklsK1B6NitFY1VtRnI1SDRxOTNNTGErUlZvTE56Sy9Bc05hemMyUnJmZTh1ejJablhJV2FUbFhDbGxKSVRSSTVwQisvYzh6cytTMjU5TkdMQWozdDFRTWVHN1pzVVNRR3pMbnBQTkRYbUY3Y2RialBwRXh0c3NyeTBqV1ZuUDdDSi83MWtnQjFQWTNXYkhrOHpsTGt5b0pPcmtqL2NjNTZOZmt2R0lHSUMvYXIxU3VvSEgyY01zcnkwaldWblA3Q0ovNzFrZ0IxUFp4clpUSStUdHJFTDQ5QU9sbnVCczYvWHFFQmxsN2Jkbkx3dDlZT0NEcTl1ZXliajAvUEZYWUIxYzBaY245K1NPVVZzcGpNRDdOWWMrRFdqVUwyYjJzcThRNTJVb3p3TnNPQUl0N2lNY2ZZWithMFdHYXZ5T0RUTTNUM25VZ0o4TjI4YUVxc3NpUEpyWFhJR25Zc3kzTThrbytVQU16TGxvR05ZdTA4aTBPdUoxVHhEbGZkVTFPRkM5WlcvUUQwYnFIZ3F4K3U3YnYvNjFLMzAyb1FSK01tcUVucmlzT09OTTY5bXdWUDhpR3BWS25RSHAralh2K2s1R1VCWFpVQ2tEcCsrK0NNTUVSRWJMbHVzc3VhSVdHWHNDeXFSVm4vQXpEeVRveTI4YU1lTUlCQnViQWFVTVFCODZMS3Eyb3REMmtZV1hLbWc3clE0V0lmZmZlajJweGs4VkNMSXpxWTFhM3BTcDdkVEpsdTZjTEVVWmIxVFc1Wk9lS25qNTQwV0JZMC94UGpJOHNjd3hvQlJid0ErbFdVejBHNWtQWmhtL3lwMVp1YXlHOGErbFVCc3M5Tm81T1c2T0Z6SC93S05pYjRzdkV1QmFKUldRU2ZhelFQelgvbUNhekJOakhqWjBNYXpPWTNhOEV0WWhRaG5wbUxzOWxxc1RIaUU0TXlYQUdscjJKT3VvQzljVTBqRXgrSHpMeTRGcHNYbUE3STIyWXFuekY2dGtmb3huNzdTY2IrTytFeXNaMjhXekNhVE1haHZaMmVWV3RQbm9zdmdGV1BEaHZOQisvdVZIRXZSQmpkT0tjWmE5b2h1MnlLUG1tTzFoaEJZeFhaT3pzQ2hnUDNBcEFFT05ERDhtdkdkQTFENHMxenhrY3ZWYSt0a05peVlLUEJNWWRuQXVzSUlRVHdtd1Z2WCtQd1N4bFBWOGc1ZHlydXh2cFRmZWsrRFRqM3IzK05pNW44a1MrYmRSYVdpdi9JVFdVblZNOUJ1WkQyWVp2OHFkV2Jtc2h2R3RrV0U5dHJmVXVCa2xia2s3bWIzLzRJTHk0UjZqWUd0RXZJaDZXQjdGc1h2T0VjelRuYUZDdlU0K09iSGFUUXJoVFBRYm1ROW1HYi9LblZtNXJJYnhybDR2NmJoaDJrbWZPNDl0RExVc2J3a2pMRzRaWUlzVWliV0JheE5EdEk4VE1HdkpHVVFRT3hGa05FQzUrMWw5bi8wTmZXdlFRaklOaWFBQ2FxdmVwM1R6dmN1WElFcmdyMUQvUHVnRm1oT1ZpVUxZVmcreTErSlI5TlNuNGc2eGZCVkE0SStiT0x6bFhzTDRIeWMxR0Q4Q1BlemZQM3owVVVFTkxBbng1RmFObmtyZlIyZmI0YTIySW9TeFRqYW00MTd3cU9XMU12SVAxVkNFaXp0OHdpRjhqV0kwU3JGK29nMlRIK2dtUEhsZjhnTVFVVDRzK0NWZWxyOWFJMEtTL1g3UjloL1NoTTVZM1hkUThoT2puNjhzcnkwaldWblA3Q0ovNzFrZ0IxUGFOMHlYNG00WlQ0TW84MFM0dEIwN29jMzIyNHVUaEtCRDNseGp3c1k2aG5pZGNyODAyd1h5bnA5YzFSZE5ncytrd1FYMFROdUJxOUQvTlRISXloZVR1U0V4Q2ZaenZEaHYvd053RDgvbzZWODZVTXZzTy9QT3c1Q2NyNzlzSnppZVdMTVZhT1ZHNC9lMVZQVFNBelk5SDg3T0NKWGV4K2lBT29XK0tBbnJpQjNKbmE1Nk1oSHRqSGhUM1hydTQwd3ZBV0swZEtINFFva1lJeWhTNFVqYlVzdzhPZGphalRTZFM1S2hxTG9CbFJnSlVXWk5SUjJqRlY5YXdlOEtWQklpZUJGSi9qTjBiaWNxMjdpRHZtTVVWeXl2TFNOWldjL3NJbi92V1NBSFU5aEw3ZkRUUlpSOWRhTTFrMDYwMFZ4cUFyeFAvT1U5ZUdnVHRYU1plMU5GNXl5dkxTTlpXYy9zSW4vdldTQUhVOWpoMGZTdkdNYUxrMW5TU2FRSHdyTDhMNVcvYUZBMDV2K0gzNlVxMlR0ZnV6cFF5K3c3ODg3RGtKeXZ2MnduT0ovMnRTdXZZQlR2ak1XL1pmbEVLUlhpakwzV281U21pam9WQVJLQU05dDlNeXl2TFNOWldjL3NJbi92V1NBSFU5dmJPNUh4SWVSaC9wbGVCTisrOWFlcTlaUDJjUENYQXBqeGYrS21wSmZKMEwvbkZyOWFXeHlUSURoN1dRdVphM25NRkloN3g5WU91RkhvMHhGUlJNMUhRUmxuTDg3SWtDS2FyeEM4elRoMXFWOTkyekVZa1JITHkwM3Q5dC9jbzFQSG51UEhLN2xJUndYOVYyV2NZL1VBR1U1eTBYeDlYdkxNWXR2SUgyQ2FmZE9Md0IwN0c2dkVOV0UzQTZhejJPc3lYZ2FwUUhvcHROZGloaWQ1QW5Yajllb1FHV1h0dDJjdkMzMWc0SU9yMkptN2tTV0YxK3luYVZYS3Noa2NkUlZHTVJWVU13TC90RlF3NHZndlVwQkNzaE9JRkFrS1lGQ1lvYXV2bGVhK3IvOXViOWNUMzVBR1V4WGhUeGdqcGtRTEg0NThXNUxwSDJ0V3NrSDNWRTlEY2JmZy8yVHVqZUphTEMzSElLSzNTVWlaZ2FIek56cUM5LzBIZnlTMDNpZE8zUnVpTTdBd0dIaDh3bEZ5ZnBlWCtiT2lzc01rRExXNDN4VUNFMG01V1lhVWJqbFJhM2x4VXFpdDRPMmJEWEJBek8zL2RUampYZFVLZDE2RjJzWjZnZ0NZYTBVa1BmT0tsL1ZLenltL01yTzlyZEhtd2xESWJwbEs4djlpS005bzJZM0Jvd3lXYzB3RVl4TC8vUGtLNDhMaHRoYWNkbWtKazBZdTFMczdxcmV2VFlOaVFVMHo5SGR0VUs2Y3Y0TkR5YWNIVlhRUC9DOFpzQWMxN21tSHdDejExc3YyZkZWTytiQk5QVzJmZzg2YnJGQ0lGb3pKdHZGUkRDb3BSRWtLNHJXYVN3RjRQbUtYOW8xcktaTlpKdEtObVhPbDREZUlneGtmS1BjZmFNSFAwOHRkOWNSY20zUHJMcjI0WEQwRXR3c0ROVnpsNVhabVhDWElxTklXNEs3ekQ0MVM5NlNuOTVCYmtraTNETlM4cjVQckF3NlpKKzlHdE85cSthZExMM1FXTHhWak13Y0VwcXFNNWlBZjZwTHBuUW5ONTY1ZGp2TERBUU02NkE5UnBXeExwNzJ1YW4xQ2ZxSEgxTTJTNFRLWmpCdTdsOHV1d3lFa1o4RW5Mc1NmUENTVW1oZ1dBRWZxWEd3RUNOcGhrVllpNEVqVnRBK0lDVG1HZytWdlRZb0dYamM3WWo2aEhHdWQ0ZHVKYlZCTGxUS0RjWWxGUlhmZVhKb3dGalRjN2tUOUdTZk9SaWt0Wm5wems1RTNyQXZtUWJkMUdzckxNdGF4a1VPZ1Foby9QRDljek41RlVlcVByQmpxekgvSjFBNG9SZ1RBS2FaVkg2a3hRb3VaVmdhY212QUMxN1hhZGlYODljSXR3WTYzMWJWdEJUU09Icm1yRnpQSjhIUndxM0hkME1RK0s0eU94UVdnNnQzZ01NbjVQQTRpbVh1cVZWV0FVQVhGMUNLdUl6b0hzUkliaWZiZGRxdW5tSlJaNmhJcGY5a0Qva1ZmRzdoS3hySXhhSElMMGVGVEYyTkVwT2tsbmw4RWRIbTFsVHdXNWZlQVozY3pYWkZIcGU2dXpabzFGVUp1R2FucFBkWmlmcnRTWHZQQnR6bE82ZkJMM0tqZlUyeGxUcHREWnUzc2pWZE9FeENHOVMrN3JPaXkrTzV6NjlmaUwya1F0RldqVmJ0WHpicnB6R3ArQmY2UmxucUhMRE1Va2txRDhiSFJwaDlFMEZ4UHJzM0pnNFlRZnBmQnJETWsrODJqd3YxRHBDZEZYV3Y4ZXdhblBJemUzN0FTOTM0ZzhWUGExVHdRcERwYmJpaVZ6MUt6QndlWFZoODM0N2ZDbXZpa1F1RE9obzlGOTFTSk5MZEpJZURFUHUxU1c5ck9yY1QvQVVPMnZrb3NvbHBFdUs3M0FzQjUweDRkdTJJSDRYUFBndy9BM3FxWXZ4eGdCQlhOQ3BuR2FpSnZYbTFNaUtRVXQwdXg4T0lHVThNelk5UGhFdzFPVVJ2Y2h0MHZMQXVoUUtkTmFXQnlzdHB5ZTd6Zms5WXFWb1hIOU95U3ZhRUNXVFR4NWYzK0d6T0ErQ2dieG4za3FVZGk1NEM2bVdNK1FXNDFBbmh0OHU4eXZLaUlLcTZsdjZaY1VxVlRLVStIeUhRWWJyVS9Eam1CTTVtK2MxbHFLV0tIcmU1UVc1UytoMWhLWmEvcjBYL1E4emNQSU5RSVBXUklsbWVpbk9QQ3ZsQnlubEd2VzUwaDJLSFRJYytnN21rUUc0RHNYZ3lMTXNSVThGTmxZb2VLSXhyb2Z0NXpGT1JOVjJyaUZnN0lFYWpPbk1QZy9aQVNJVGdjNEhJemNNS0lZK1d2UXVrRnhMMld6dnNRcFJWQzVHMWhXQVNYR1MzcDN0d3lWN1g0aWxYMHYyRFAwWUUxcXE0UGJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlnL3VZNHgzQldYQS84RGJPaGxnckxBYmFZZGpwSXQ2bXZVL2xYNFBRd1c0QitLK0h0STlTUkVzTnY3NjdadDczN3dVT29DTWZqN2JtSzVmWXZPazFNb2FRV1dhN2pKM0JKaXAxcGx2ampRZDlWZTRXSWxHbHVTWjFLbVBZYy9Ba0tNOThVNkZWeHNkc2d0OUttbmhWeXBEa1lXdjdTcnNORXFpeUlTRjhRbE11MFp6dG9ZQmh0Sm5iOExaN2JEWFg4c3J5MGpXVm5QN0NKLzcxa2dCMVBaNmpRQ3kxTVhHWW5HWFU3VmZITGNkUGlScm9IWnZWckF1a1BTSzZQRFdEcytTVy9UWTZLSUord21Gam9ib0Y4R0pWS2ZaZm80cjNSRjhTcU9RTCtzaG4xV1RVdEM0M2h1Q3hJK3QvVWlpK2U1Mk5KY1J1bG1KZ21KSlkwMmFqcTRQNy9DbmlNMEdOQ0c3TEdiUmt2L2VQSXRlQUR4dTlPWW9hcDJ6M0YxQ3pZS3pqY3RKRnJSNlltZ0dhOVc1NjBKb0Z4TWIrRlpPbzczRTdJWWNEVFRpbkVCK2tkK1NmVXRXd0hpb0dQblRjY3NyeTBqV1ZuUDdDSi83MWtnQjFQWWRkM2NIWnZKWXExRWVDbzh5SFU5Y0JZb1JkWVFGTnQvV0E0a3MrZnVqUjhzcnkwaldWblA3Q0ovNzFrZ0IxUFlMTnlRaFFiTW5JM3pXbzVtNFhYK1A0T0FhY1JRcnFsY1lkQ0FpdE9VQ05jc3J5MGpXVm5QN0NKLzcxa2dCMVBaM3dXU3p3c3l5djQ5KzljSTVTNlpmUU5RVzUzbXBxV3Iwc29IQjN1N3Nlc3NyeTBqV1ZuUDdDSi83MWtnQjFQYVpkZ0g2dVlWR1pkZ0kxZkRJTjBUcXVkcWE5T0hRZG5pOWRCRk5KQnp5c3JEYkVpQXpKUTNPMGhiVVpLU09ORHd6Qis0OFJNTFVjVTNMM0ppTXBuYkc2cmtMZlJWby9xRlM3T281V3lhYlVsU3RuVW5tNlBrdjQ5MWk1b2Y0NHl5d081c2xGZm9nTmsvT1B5M0JEcEp5Snkyc3dqUVpWaW80cm5iWFl5SDZnazdFUU1HanpwTDI1aWxTRmRtQXZtTU5lWERvczRCQStFekZQcm1MU3VHVjR0U0wrNFNkS0dObTRhbG5kYnFSdVZ1ZEpVYWd2UWhQenBzcFo4UGlSNmZVUkl4bi9EVTRxWi9WRlM0QXVuSzg0elptV2NqNzhqV0FUWGlJUVl4c2tjc3J5MGpXVm5QN0NKLzcxa2dCMVBhWFRMQTUwU3Q0M2R2cXNZYTRxUWszNHJQeFhrNkJxYlFhZzdwMnduVzQ0U1lXdmtmaXIzY3d0cjVGV2dzM01yOHRJZnFDU0xHUk1qZTBNTzBsYVZYa3l5dkxTTlpXYy9zSW4vdldTQUhVOW0rV3JFbDVOVmtua0c4RS9Ed3BGQ25BV0swZEtINFFva1lJeWhTNFVqYlV4V3QwVkRpVkFFeisybExCWWN2cngvZHd3L2pZTlgxMjVCUmJ4T3gxMy9pZm10RmhtcjhqZzB6TjA5NTFJQ2ZEZHZHaEtyTElqeWExMXlCcDJMTXR6RXNZbDkwN0lmblk0bjA3QnMxcHA1ZHpKUzRPem9zOHhiRGovajlqVnRmbFc4dzJlR0ZqSENKYndjbXZGdDFkNXVDaGZaZDBJWDI3cWNYcVRRTElGN1pNR21vM083MCtHZWR0cFd2RDFIczJCUkNpZ205aXNKczRCc0wwMm8wbTE5NldETVdvT2J1KzhaYWVZQm1Ed3g3bDNacWkyaEZraVpKOGd4UEMwUFk3QkVMQnBKWTVLMGd3Z09UV1U2R25QWnNIajN1TlIweU9qSVNaUUZYZmhkVzNTalFvYkxBQm1XRTl1UEpTSHBsdkpYVVprZkM4ejIyZ3VrYVEwVHJBUTZYQk5zZGV2RURRelRTM3ZxbDR6R2hrd3c4UnA5MkRwc3YvQzR4dW5OaHQ3cnZQTVdIejRIYVFRZ3p1OENad3Yrc3plMDJMMnJVZzhrY2l1ekt6dmFPaUtnOFhsUk4yb3RoalZFcU8vMUJ3bzNSaDVVUHVCdXlYK1N4WmtRRGtrMmJWTzRka0x2TmRDenNjRzJxQ29vS0ZuQWlWK1k0ZUFEb1JDc3NhV09qNTBrSzYvZXd5eFBJOU1vOVd4ZCt1d2MrbFVpY2phdmtLTDJUdkJubFlrUC9tS3JEd2l2MExvU1BVV3ZZbjZBS0lkS3QyUjBTdDM1VUJySmU4dm5QdWUxTTlCdVpEMlladjhxZFdibXNodkd1bmFpd1JGdDJCSHVqOWdsWnhhRStMWHRJTUE0WnFTc21PbzdwR2pjTStJUmR6NitEUDRVYVFuQmdOREQ5WDlwRk0reUVWUWd5UFRtNnhuS2RiSjF1bFE4b0Q2dWpyVVliOWt4TlJxQ0FhbWc4aXVrV0RRWVJLaVFDZnpyMTRIaUpmeFJTTUpwU2RSQkdjOWsxRzFjanlaeUIvTWtQZ3ltVGZBYmZCZXdnZXdKWit6NDR0dW51Z3BZNndsdFZOZmJZL2JFSG43OE13SEt4VU1CNlVqaWxoOHBaT3o2cWtxSjE4b0RBVGZHYk9LRXk1OG1la1BlVGVHYlliVHpYcVlTUkdXM0VKS1JLTER6WmNXYUEwWVB0c3lWUnMwd016WHZXZkhvbHpIaXQ2MG54ZEd1ekVvVm5XSWE2VEFicm9zclJGOHgvVUFxVEZxMjN1TmE2alFmMmpCcnB5aXQxMGJaZHZZSGtaTVN0MG9RVUttT3l3OUtzTzJ0MWJDOGNpM0trVC94eDcxZVdaeEZhT3VuNVlaZWV1eXl2TFNOWldjL3NJbi92V1NBSFU5cUREZVNFeHMyM3RZcFdjNTRidmpMdjE0OElKRHhwbWJESk9rZEpOSTc1SDZ0ajlEeTdXSy9RZjJ0RWQ0dkNNaldqa2RTamNOZFdyTDFXRGtUZmw0bGM3Nkd5NWF4cjZvK21QR2xnSW81Z0h3emtUcmlvNGpBUkg2WndUWHBSbEgzZ20vUk9NMjdNUHFUdkM4QWJmZ3piYTVnelZ3cjRWNjFOT3phUUsxTTdwdk90M1BJVFlvRnZtQ2ZkaGI3U1FpamZkbDlPeE5jb052TVpZV2crMXpMbkxLOHRJMWxaeit3aWYrOVpJQWRUMndFclVKa2tBTE5INVBZdGlIUEdBOG1jMTZhRzhxbTRuV1ZSUkVmNCthSmV4REF2SDNQeVV4V0QxRUZzQjc5NXZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlwbDkzWWMvcTFKRnNwNTBRRmIvQkRNaTQyTHdGSGt5ZEJzOUR4b1k0cEh2VE01YjZpZTRPRVJ3Q1U2SmdqVWRMOHNyeTBqV1ZuUDdDSi83MWtnQjFQYU1XaHlDOUhoVXhkalJLVHBKWjVmQjNWd1VmR0NVbElqcytYS2VIWVFScjhzcnkwaldWblA3Q0ovNzFrZ0IxUFlYZXd4SDEzZ092dFQ1UmhDWWVIY1cvYVVGaVRWWlRZNG9DeTl2bzkxNXBzQ1BlemZQM3owVVVFTkxBbng1RmFNb0tpSGxQQTJSRUpKbnR4VjNoVXkreXl2TFNOWldjL3NJbi92V1NBSFU5cU5WNEc2RUpMcEo2cktnK0hsR2JSUExLOHRJMWxaeit3aWYrOVpJQWRUMmlQZVZRb2ZidEZFWHkwSU1KWmdnYWFQWkYwazdnOVJHU1NMZ2tsamNLRTNMSzh0STFsWnord2lmKzlaSUFkVDJIbFNYUFJtQ0NaeWJYcXBUSHRoK1g3RTJEa2ZCZ0dNa2Njb2kwbVYwaEduTEs4dEkxbFp6K3dpZis5WklBZFQyRUlCL296VTYyTGw2M1J2VmxtWDc1VnNoY0x1VWFYdm1YUlJoTFl4bllabkxLOHRJMWxaeit3aWYrOVpJQWRUMlF4YjFLbEF3c2pMdVZrUXUveXBuUnBEUmRRVDVZUEQ5ODhmdkE2a1AxNnZMSzh0STFsWnord2lmKzlaSUFkVDJCRUxCcEpZNUswZ3dnT1RXVTZHblBhdmtHODRZQldsTHY1cmE3aVpIOVJmTEs4dEkxbFp6K3dpZis5WklBZFQySVNsRmZqYVNaREw2MXlodko1bFBCcDdFZHZXRTlNY1VoYTZZUWYvcEZPNHFjbGkxU3pQNjU0QlVGbzEzazdLcDE1Rm9rbEx5emRDZmlDVGJ0WGtRaGtrYm8wQytEVTlremYyRnJONGZnUDlMQTlCRVlsMWxkeHYxNTEyNkxLRFF5eXZMU05aV2Mvc0luL3ZXU0FIVTl0eUlsUGJHckN6c2VidW0yNlgzVGJ1dHlWOVM4ZUg3TGdoM0JnSURrUmswUnJuNVFDSTR2Z1dmUjBiOFdpcXczWmpqQWZWLzcvcGUxTU9LMUpCdXFaRStLZ1Azb0UwVHRNd01lK1NUQUt4bllydGJTMDFPeXJ4OS9zMHpWSkEvbW5IT3FEa1VveXdIZnZ0LzRzejJpWUZ3QkcxWVRCWnh4ZXA0VmNaK0hjT0N5eXZMU05aV2Mvc0luL3ZXU0FIVTlxTys1ek90QkJUUWpaUUJyeFFsMCs0emdrMS9pTkpINFFFMzBjcDlDSlkwSGVGVUI4NVpQaHJTZm4ycXROOXNNTXNyeTBqV1ZuUDdDSi83MWtnQjFQWjR2SDN0NjhjckZtQ0trMUZFYkVycnl5dkxTTlpXYy9zSW4vdldTQUhVOWpid3NKaE5CTGpKRmUvVE5VWWxUVlhMSzh0STFsWnord2lmKzlaSUFkVDJuTjFrM2VXeXVudXFuN2gyQ1hES2JDZ2VJUnorT0htbktMbS8rV0NQYTA1Q3U3WVhEeUZUZlZiaHNoT3ZPZi9WUXA5UVc3ZGg2OWJ5eUlmNzAxYkdQTXNyeTBqV1ZuUDdDSi83MWtnQjFQWnlrZG9Ca2ZTN1I2RVhOTG11NSt1cm4ybEVFb1JMN283MS95VVVwc3FwTWh4YU5tcnp6Vm04SHp1TkJ6MmNIbWpMSzh0STFsWnord2lmKzlaSUFkVDI0ZTA5WHRXN1lRNkxiaUZOYkxMb2krQXBFQmFxVTVqajBLK21TUkkwNHR6SWtXN2pzVlh3ZHZ5NnJQZ3ZENTFjZHZHaEtyTElqeWExMXlCcDJMTXR6TUIzcFE5WmFCSHJBc2crZE5SKzBXUExLOHRJMWxaeit3aWYrOVpJQWRUMjlFVzg0N1A0dFZ5NGUyOEo5OFVTNXNzcnkwaldWblA3Q0ovNzFrZ0IxUFp4YWFRUzJzV2w3ZjlPYjR3RGN0OUpkdkdoS3JMSWp5YTExeUJwMkxNdHpLLy9kRmRDZ3Brd1FVeFVDb2ZWT052cjhsai9WWFFSdGsrTWZnOTh1d0xEeXl2TFNOWldjL3NJbi92V1NBSFU5aGszS2RjdVhXMStnTmpjZG1BOXFSOHFXZ0ZqZFhGWGhYQTZoWW5DTmFQclZqemJGUWJQa0ZCN0dQcVNPQ01qNmtqN0xTeWYxL3lZdnNyN2ZMbWlJYWZXK0lqbStWNE90bjM1Sk5GUG9IWkhsWHMxcjZENHNKSFloNis3eDNrUFFrNWpQTUx3K1Zoc29Nd25WK0toMUxNNnBadFQyZUZDTjB4V3Z0citMdzcvV1FwSW5GOTc3WkdpV1AySXFlOURqZUtoakV4dXFGYWNHaW0rNEc4dWpyRkRnWkhyZFdIdENybUlrWktzeG1zSURTcjR1aTRRc2pJUUV1S2VXV3dNOHg3MWprYmdrQUIvbkhoenNobW5xWURGdXRnbURSVmdhVGVnTHMrVzlrQ2FtT01COVgvditsN1V3NHJVa0c2cGtZSkZpNjBhTngzdURqOFR1NS9JcXVONHpaU3Jpb3JTRkRxZ0NDRFRrTWpSVDFEVEljWnpZYjFqbE5GbGp4ZjFpNjNyMDJEWWtGTk0vUjNiVkN1bkwrQ2RIakdvL3hSNWdLRjF6UmZjQ01ZTzllT1BkNExQbkJ4dUJoWjJldTFJWFBOZEtlU1Z6dFMveTRaUHdPTmhSK2tjeGJUWUdmanVzNGlsK2pEd1dsQnlxSjFRV0RCaEhYUE1nNlpvb2VlZENaTVdhTEZmRnRUcDMzUTFRaEhCbEdyRWZadllod3NpTWgvS3BXVy9Nb0FrVVZmVXZxdEIrcFg0NXdVNTJWYlVQWm92dzN5RHRmazV6WnE1eWJEK3hDdWtzSisrQy9vNkJIa1k1ZGpPcis3Y3l5dkxTTlpXYy9zSW4vdldTQUhVOW9sZTh5RGRIamM0OFBiZGFLeDJZbEFLZjAvenNOeFZ3SFJTUUN0Q3k1Mkl2MUlQRExDS1hUSTEvY1BWcXBPcWxjc3J5MGpXVm5QN0NKLzcxa2dCMVBZM1JmMzRhZ2d6TjJiMXZKQkJaOU1xOUxHbzd5ZlZLaTZ2VVZRS2pxMEZFNDZXZzZrYmttb1FEbTBualhTcUlUb1ZPSEswMkszVnhRa0drM1lqUHdVdWR2R2hLckxJanlhMTF5QnAyTE10ekVnUHBvbTVFNlhzcVlFaC9RRllLVnRjOE5oMzhDeTBadjFhdUZNRnBpcE1peUJLbTcwK2xDSVJYNFZPbXRYMDhmVjZPaGc0RWhWbzZ2VVRkMlROK1dFT1NCa0t2WVo0Mnh1VndBaElSOVhVQ05yMDlaOWwvaVhld0lxOFpiUys5VlBvbERnVklVbzI2MXYwRy81RElscHUzb2ZidWdyRVNISmlUUXJ0dGhXRFpQdFU4RER3T1VRQTFhOHZZbS9LWk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJKU2pEWnMxZmpqaU1JWGlURzN6dmRrT0RLSnRxTXVhSlBndmhTc2RGTW44c3J5MGpXVm5QN0NKLzcxa2dCMVBZYjJudUJBejVCN0hxRnpUTytjVFp5d2dFRzVzQnBReEFIem9zcXJhaTBQY3NyeTBqV1ZuUDdDSi83MWtnQjFQWXBOSmlvR1pIYUlscTBFVGlyVWpSWnJzWVk1alNhTnNKT205UGJ4OS9HZnJoMHBmQ0o4M1NKNmF2ck1yd0RJSDBRc1FUSGRsYWlhRy9Ba0o4YUIvZWErUm9nNUFDYUVOejJHTiszU3RraVExSGJOZWJpNkc4bnlkWDZyUDVCTHhiQ1BKUkZGTmlzNUlaNW1taURpNG40UG1iZWVMc1grZEJwdnBoNHNTakVOOGlyZm5HQVp2eGlQYnpTMGVNTlFuWCtiYlJkZys2RjAyMWROYlNLYXBUYXl5dkxTTlpXYy9zSW4vdldTQUhVOXB1TEsvaW8zVk1GSEI3d1B3dlBWaGR2dC9acDdpdmQyNTR0dVRjMVVMZUh5eXZMU05aV2Mvc0luL3ZXU0FIVTltcUJwZ0d0WEdVaVpvRXd3T0hOU1F1UXJVOFQycDQrS0FNNHNCTFdDTGU5c0R1YkpSWDZJRFpQemo4dHdRNlNjbG0zVlF2Q29uL2lLZDNqNC9TaUFPQW1TeklxempWYW0wSGh4MG1UanhBYkxFaVVTRHJLRm5NMlEyT0NxNXlBYlRlMi9neFd6WEFBWURJWVhadkZ1REU5RFczeFZHbU9rRHB2VUNRdVBRemVUNEZMRXQ0OC9oRVVBZzZRWDg1MXB2Wm5rNmFERjJLaXNmb01PNmU5RGNEK0ozeThneFV5cHdGdWg2YTYweG9YcGdZY3FrQXJiUlZ3eWQ4VGdwNmtyTXNyeTBqV1ZuUDdDSi83MWtnQjFQWmJGV2k5bERLV3plREVFMWxCRGdlV0g3d2xUeW5CWThzbnVERGxtSEpySnVCRmM4T3J3dWp5L3dRV2VUbVljaGJMSzh0STFsWnord2lmKzlaSUFkVDJNL1BYcitaTzdmM1dKVE5HSEhaWVNLZWVVT3JwU0NzbllhNU9Vd0U4ek5yTEs4dEkxbFp6K3dpZis5WklBZFQyWTBHYW9Wc2lEREZXL1ZsWTRlYkQ0ZnIyZDZOcXArT05jb0xKN0J0Z2gwcnJ0ZzN2RkR3QVBwaXBadzBTcW5pWHl5dkxTTlpXYy9zSW4vdldTQUhVOW8vT1pFTVpjdU9XYjlOUnV6WXBxL1VIcXN6bG1KeTZ6RXBkWXF0VVAwNzlBYmdvNDdENjZZUnEwZE9HcCsvM0U4dlQzenVrRllUeHVJbnF6QUVpajI3MTQ0OTNncytjSEc0R0ZuWjY3VWhjeXl2TFNOWldjL3NJbi92V1NBSFU5cFJ3N04wci8xWFJlQU95cWtneDhlYnBRYmI4UUZUaDlIL1dVMS81T2xIRmV0Qi9qbm0zT09xYTduUXNqSnBOYU1IZlhPR21vUG43cmhVa3Z2QXd3QTA4SG4rT3hSeEZsS2hJZjJmczEzb3dEUW1zNWM5SEROcFdvS3VZUzZKQ21LMysvdk53a2QrQTZZcmNvamRhc0d5bHMwYldmb0lpLzRhNE0yYjhoVm0yeXl2TFNOWldjL3NJbi92V1NBSFU5c3NyeTBqV1ZuUDdDSi83MWtnQjFQWTVJZWN1Qzc0RVVVY3pGTkh4L0taR3l5dkxTTlpXYy9zSW4vdldTQUhVOXFJVEk1TlB5UGtTbll0UFBRNEtERy9MSzh0STFsWnord2lmKzlaSUFkVDIxeVJXMWU5Z1VKWThGQ3ZlaGxkMmtNc3J5MGpXVm5QN0NKLzcxa2dCMVBiTENGZzZNMWxaNXA1TUdMTkZIaE9QaWpCMkFOTzJ6ZWZqTTV0YU9nUlBuTHBiNU1jMnZrMXVER3JkSWNiV0E2eXQ2OU5nMkpCVFRQMGQyMVFycHkvZ0pVZ29FVWFmalZqZWd2dERlWEJhdmhHU2F3Yk9RZkdRd1pJMm4wT0xFYVVJYXNtdG1qYTNBdEdaNm5GNzYwMWlKL09rdWRZbEVNcUExL080dlcycGpBTlVaWTI1NkdhQ1N0b2pyaFQ5N3NqQWQ2VVBXV2dSNndMSVBuVFVmdEZqeXl2TFNOWldjL3NJbi92V1NBSFU5aGpZWTJuWUUzWnJNMDhPTkhPbC82RWFSUkRxeS9lbXRURGZ4ck1tSC9qRXl5dkxTTlpXYy9zSW4vdldTQUhVOW45bmZIbFpUcUxyMGRWdHpzUXZiUHZPbERMN0R2enpzT1FuSysvYkNjNG5qRm9jZ3ZSNFZNWFkwU2s2U1dlWHdkMWNGSHhnbEpTSTdQbHluaDJFRWEvTEs4dEkxbFp6K3dpZis5WklBZFQyR2hobW1NNDBJclk4dG02eEV2dFdITTZVTXZzTy9QT3c1Q2NyNzlzSnppZnk1MnVWckM4V1RYSW9LNmRHMUFUb012a3pGTnVKNVlBYzhxQmJDV0FXWCtldmNXQmlzN1hvZFBTZVhFL0FBTGhWWEZHcmdPdXI5aTRORmsraHcxNEVtcHVhbmZpbm9KSkJFamh2SkVFSHFjNlVNdnNPL1BPdzVDY3I3OXNKemlkNU5GdEd6UTFCTThUOTN0RlhaVmo5R050OXIyYVcrUTg1cUhGSnRpOUFmVHp2Y3VYSUVyZ3IxRC9QdWdGbWhPWGFYRVQrcnRCOU9KaWtyN01YRm5RK0t4TWZ0RTZESEtEUlZCb1o2ckdSNHNzcnkwaldWblA3Q0ovNzFrZ0IxUFpHYnYzUXBVUlM5TmFDZHNjRU5sQXoxeG0xL0FrSFNVUFNwNlRGQlV6Wkdjc3J5MGpXVm5QN0NKLzcxa2dCMVBiRC8ybzhMbzFQcmhFbnpmeUMxRm13cFdvbWZmOUpMN0JHeXlLNVVZN1VzSGJ4b1NxeXlJOG10ZGNnYWRpekxjeTRYMDNxczNCL3cycGpqbUluNmJ2eXpwUXkrdzc4ODdEa0p5dnYyd25PSjJtTHdUTkxMZmROdUNiSUU0dmFTSVY2YlVzTXFoOGlLWHpxNE5qVGNQSUVXSExMU2V6bEM4K3NKS3pSaEtUTU4xQmZYekJncmZSejc2WExSU2ozampMUlYxci9Ic0dwenlNM3Qrd0V2ZCtJR2ljNXpIVmVxOWJLUzBHSnVLcDNTMjBPN3BydjVObit0THdwaGlvc0tqQXJmeWhBcU14NW1oVDdOSzRKK01nMnVnMjJZU05QaHRCdHdsV2M1WFVMc0JCRXY4cmtRUWE1M0hFRVVzUmk4NTFWeEZlUWVhTjVHcnYyakV4cFpGQm10cGhuWExjRnJIR3NWeWZJblR3ckRhQ29LUGNUbHkwSmFoV2FJcjRXbWl4VXRiVi9wdjJsYkZISDZFQXJOZkVuSFR4bEpwNHU3YzhMajgrbzdrYlk2TXNyeTBqV1ZuUDdDSi83MWtnQjFQYU9vQmVLaGFPbEdxTU1TcWRIU0RSeUYyUzNPaTRBNEw2QmhscmpMalUydTVUVWVGOWRNT3ZORkh1WlNRM1dUQ25zcktMeHQvelF6Zzlnb29wNk4vQ3RHN3NOeGk4NmtrOVN2QSs0bUljUk1lOUhFZGpEais0UTRONnh2NnIwVi9GS2pIenVZakVBdG5kSU9pNmNNUDFjYk54cW5SZUxudmFrRzRRZGJXNHNZZDlTQUxHdDJXUVVFdk5ja1Q1NHh3SVBQcHR2RkJsaVRYcnJzQXRYdUgvcTMxSUFzYTNaWkJRUzgxeVJQbmpIQWhYcE1PWThJWDlsTzlLWVMxQ3EyUmxLYVhTdUJ2VVh0cG5XYWlDQVlzMnd5eXZMU05aV2Mvc0luL3ZXU0FIVTlveDZNWjRsSk53L3hKMHhCWTdPN3N6TEs4dEkxbFp6K3dpZis5WklBZFQyTFV6bFZ1S2xlMERaKzVWMDlkWXNiTUhNeFB5NTZuQXhiSTZtSkpXNHdsbG9QK3pHbk9hT0Zpck9LNVNscFhvRXl5dkxTTlpXYy9zSW4vdldTQUhVOXJ0MnFXbkVZQmpEYzl3Y3BLY1M3UE5VZUdJQ2xRa1RnVmNaVGZJTjExaXBsWHMxcjZENHNKSFloNis3eDNrUFFsakFNTWFhbkYxMzNQNmkvbGVOaXExUlZqZ0l6SzhIYkNzR00zYjJ1NVJVbTZwSVFzRTR4dEN4TWZGamdCNzIxeFlxS0YzOW1rYlJmU2lyQlpIdWVZZ0JBbkpzZi9FM3hiVHFhZi8yMGZ5MUNPSTNHS0hzcEJTTTI0azhFdlNtRW8wZ0UwUjJFNEZoQ2VmWEVSUjJOOWR1K0RtWWJIRCtNaDBmU3BnOEZrNzRKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemllTVZ4SDhKMUVsN1doWUV6TUZ0dThtTCt0NHJUYWd5bFNVTEk1d2pNbkl6Q0dldGRZKzdRL2N2T2ZhUTFraldlYlVjOUtXK3V4MmpVcURCTFoyKzhlZWVCQnlVVDdaejFNWEt1RkFuNmVRSE5TK3lLWENVeW1Sb2ZLUUNmcVZYSXpYSkZiVjcyQlFsandVSzk2R1YzYVF4RDNZWk10VEtKODBSaW5XNHd5Q1ppck5XUmNQOVZMM1RkOEhhVU82ZlNsbXl2aFZqTlpPQ1FOZmxWTm9NM212RnRFYWh3c25zYVJoTUFmMDdwVWl6KzFmSTZzL3AyRXc0dDV0SjBwdWc5a2tHbjhCTnVZVVpicmNOR0c1TlJwTHdxMEF4NlQ1NG5IZUpSamZMRVBXdUFhaW54ei9PdWhZR2czOXBVcWFmeXhPbGlIRm5XRm1QUFIwNmNpRG90UHRhM01MQnZ2OGhsb0RQZXVzbVVNbHpLeUFZRDVDeVNNajZUUVlTcmFjWU9pVG9KNWpnNE5xa25xN2NxTzBNbERPR2dWTGIyM0tzcTVPRFhrUzlhMjU5VGVWNDRXbFhoQURWclJmZkdJUXpYeHpvMmpFdFhySmNqZ0JhR1RnVjRGeXdmZUVKMUdGNGJpYkZEMGZLcXZyNDhJS3hEeE1Wbk5UaFk3Qk1ha3BTOGF0NndqdDBxSWhtTEtTSkFSbjF3djMvYnNiUGgyNWlBZEk1U3Z2eFdpVHBLR0hCN2puaFFORG10SWZYNlJYSEdQSU9xRXEvQTVHakF0RnpzYTE4V09vQTBMa2ZqOUxyREpJM0dnRUpYeGp4YWM4VktSSkMrZCtDKzNpZ1JaajQ4MDFkSDVlVUNKUE5JeDFGeUlLTDg5NGkyYm1MeUNSZHNNYyttUk5MRVZaUFprNlJ2ZU5OYWRUaXBCakxrck5HeUU9XFxcIilcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumYv+mHjOS4gOe6p1wiLFwicGF0aFwiOlwic2hhcmlkXCIsXCJydWxlXCI6XCJqczpcXG4vL3ZhciBpdGVtcyA9IFtdO1xcbmZ1bmN0aW9uIGZvcm1hdERhdGUoX2RhdGUsIF9mbXQpIHtcXG4gICAgbGV0IGZtdCA9IF9mbXQgfHwgXFxcInl5eXktTU0tZGQgSEg6bW06c3NcXFwiO1xcbiAgICBjb25zdCBkYXRlID0gIWlzTmFOKF9kYXRlKSA/IG5ldyBEYXRlKF9kYXRlICogMTAwMCkgOiBuZXcgRGF0ZShfZGF0ZSk7XFxuICAgIGNvbnN0IG8gPSB7XFxuICAgICAgICBcXFwiTStcXFwiOiBkYXRlLmdldE1vbnRoKCkgKyAxLCAvL+aciOS7vSBcXG4gICAgICAgIFxcXCJkK1xcXCI6IGRhdGUuZ2V0RGF0ZSgpLCAvL+aXpSBcXG4gICAgICAgIFxcXCJoK1xcXCI6IGRhdGUuZ2V0SG91cnMoKSAlIDEyID09IDAgPyAxMiA6IGRhdGUuZ2V0SG91cnMoKSAlIDEyLFxcbiAgICAgICAgXFxcIkgrXFxcIjogZGF0ZS5nZXRIb3VycygpLCAvL+Wwj+aXtiBcXG4gICAgICAgIFxcXCJtK1xcXCI6IGRhdGUuZ2V0TWludXRlcygpLCAvL+WIhiBcXG4gICAgICAgIFxcXCJzK1xcXCI6IGRhdGUuZ2V0U2Vjb25kcygpLCAvL+enkiBcXG4gICAgICAgIFxcXCJxK1xcXCI6IE1hdGguZmxvb3IoKGRhdGUuZ2V0TW9udGgoKSArIDMpIC8gMyksIC8v5a2j5bqmIFxcbiAgICAgICAgXFxcIlNcXFwiOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC8v5q+r56eSIFxcbiAgICB9O1xcbiAgICBpZiAoLyh5KykvLnRlc3QoZm10KSkge1xcbiAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoZGF0ZS5nZXRGdWxsWWVhcigpICsgXFxcIlxcXCIpLnN1YnN0cig0IC0gUmVnRXhwLiQxLmxlbmd0aCkpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IGsgaW4gbykge1xcbiAgICAgICAgaWYgKG5ldyBSZWdFeHAoXFxcIihcXFwiICsgayArIFxcXCIpXFxcIikudGVzdChmbXQpKSB7XFxuICAgICAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoUmVnRXhwLiQxLmxlbmd0aCA9PSAxKSA/IChvW2tdKSA6ICgoXFxcIjAwXFxcIiArIG9ba10pLnN1YnN0cigoXFxcIlxcXCIgKyBvW2tdKS5sZW5ndGgpKSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIGZtdDtcXG59O1xcblxcbmZ1bmN0aW9uIGZvcm1hdFNpemUoc2l6ZSkge1xcbiAgICBpZiAoIXNpemUpIHtcXG4gICAgICAgIHJldHVybiAnJztcXG4gICAgfVxcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xcbiAgICBsZXQgaSA9IDA7XFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXG4gICAgICAgIHNpemUgLz0gMTAyNDtcXG4gICAgICAgIGkrKztcXG4gICAgfVxcbiAgICBzaXplID0gaSA/IE51bWJlcihzaXplLnRvRml4ZWQoMikpIDogc2l6ZTtcXG4gICAgcmV0dXJuIGAke3NpemV9ICR7dW5pdHNbaV19YDtcXG59XFxuLy9sb2cocmVhbHVybCk7XFxuXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbn1cXG5pZiAoTVlfUEFHRSA+IDEgJiYgZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpID09ICcnKSB7XFxuICAgIGxvZygn5rKh5pyJ5LiL5LiA6aG1Jyk7XFxufSBlbHNlIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIC8vdmFyIHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy94eXEvYWxpdG9rZW4uanNvbicsIHt9KSkucmVmcmVzaF90b2tlbjtcXG4gICAgICAgIHZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG4gICAgICAgIHZhciBzaGFyZUlkID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLnNwbGl0KCdjb20vcy8nKVsxXS5zdWJzdHJpbmcoMCwgMTEpO1xcbiAgICAgICAgbGV0IGdldHNoYXIgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9zaGFyZV9saW5rL2dldF9zaGFyZV9ieV9hbm9ueW1vdXMnLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCJ9JyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgcHVzaG5hbWUgPSBKU09OLnBhcnNlKGdldHNoYXIpLmZpbGVfaW5mb3NbMF0uZmlsZV9uYW1lO1xcbiAgICAgICAgLy92YXIgbGlzdHlwID0gSlNPTi5wYXJzZShnZXRzaGFyKS5maWxlX2luZm9zWzBdLnR5cGU7XFxuICAgICAgICAvL3ZhciBwZmlsZWlkID0gSlNPTi5wYXJzZShnZXRzaGFyKS5maWxlX2luZm9zWzBdLmZpbGVfaWQ7XFxuXFxuICAgICAgICB2YXIgc2hhcmV0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9zaGFyZV9saW5rL2dldF9zaGFyZV90b2tlbicsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX3B3ZFxcXCI6XFxcIlxcXCIsXFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIn0nLFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KSkuc2hhcmVfdG9rZW47XFxuICAgICAgICAvL2xvZyhzaGFyZXRva2VuKTtcXG5cXG4gICAgICAgIGxldCBuZXh0ID0gZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpICE9ICcnID8gJyxcXFwibWFya2VyXFxcIjpcXFwiJyArIGdldE15VmFyKCduZXh0cGFnZScpICsgJ1xcXCInIDogJyc7XFxuICAgICAgICBpZiAoIWRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnL2ZvbGRlci8nKSkge1xcbiAgICAgICAgICAgIC8vaWYoIWxpc3R5cCA9PSAnZm9sZGVyJyl7XFxuICAgICAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwicm9vdFxcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAvL2xvZyhyZXNjb2QpO1xcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0udHlwZTtcXG4gICAgICAgICAgICB2YXIgcGZpbGVpZCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS5maWxlX2lkO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgbGlzdHlwID0gJ2ZvbGRlcic7XFxuICAgICAgICAgICAgdmFyIHBmaWxlaWQgPSBkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuc3BsaXQoJ2ZvbGRlci8nKVsxXVxcblxcbiAgICAgICAgfVxcbiAgICAgICAgLy9sb2coaHRtbCk7XFxuICAgICAgICBpZiAobGlzdHlwID09ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwiJyArIHBmaWxlaWQgKyAnXFxcIixcXFwibGltaXRcXFwiOjEwMCxcXFwiaW1hZ2VfdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXCI6XFxcImltYWdlXFxcXC9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgIH0gLy/lj5bmlofku7blpLlcXG4gICAgICAgIC8vbG9nKHJlc2NvZCk7XFxuXFxuICAgICAgICBpZiAoSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyKSB7XFxuICAgICAgICAgICAgbGV0IG1hcmtlciA9IEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcjtcXG4gICAgICAgICAgICBpZiAobWFya2VyLmxlbmd0aCA+IDEwKSB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCduZXh0cGFnZScsIG1hcmtlcik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgY29udHMgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXM7ICAgICAgICBcXG4gICAgICAgIHZhciB0dWlzb25nID0gW107XFxuICAgICAgICBmb3IgKHZhciBpIGluIGNvbnRzKSB7XFxuICAgICAgICAgICAgdmFyIGxpc3R5cCA9IGNvbnRzW2ldLnR5cGU7XFxuICAgICAgICAgICAgaWYgKGxpc3R5cCAhPSAnZm9sZGVyJykge1xcbiAgICAgICAgICAgICAgICB2YXIgY2F0ZSA9IGNvbnRzW2ldLmNhdGVnb3J5O1xcbiAgICAgICAgICAgICAgICB2YXIgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TuicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2RvYycpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5OWJyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnaW1hZ2UnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+WvCcgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ3ppcCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5OmJyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBjb250c1tpXS5uYW1lXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoY29udHNbaV0uZmlsZV9pZCkubGF6eVJ1bGUoKHNoYXJlSWQsIHNoYXJldG9rZW4sIGNhdGUsIGZuYW1lLCByZWZ0b2tlbikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hbGlsYXp5XFxcIikoc2hhcmVJZCwgaW5wdXQsIGNhdGUpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoY29udHNbaV0udXBkYXRlZF9hdCkgKyAnICAnICsgZm9ybWF0U2l6ZShjb250c1tpXS5zaXplKSxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRzW2ldLmZpbGVfaWRcXG4gICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG5cXG4gICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5OCJyArIGNvbnRzW2ldLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgY29udHNbaV0uZmlsZV9pZCArICc/Pz9meXBhZ2UnKS5ydWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBwdXNobmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3J1bGVsb29wJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNvbnRzW2ldLm5hbWUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgfSAvL2VuZCBpZlxcbiAgICAgICAgfSAvL2VuZCBmb3IgaVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+asp+asp++8jOaKpemUmeS6huOAgicsXFxuICAgICAgICAgICAgdXJsOiBkZWNvZGVVUklDb21wb25lbnQoZ2V0UmVzQ29kZSgpLnNwbGl0KCcjIycpWzFdKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG4vKlxcbnNldEhvbWVSZXN1bHQoe1xcbiAgICBkYXRhOiBpdGVtc1xcbn0pO1xcbiovXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpmL/ph4zltYzlpZdcIixcInBhdGhcIjpcInJ1bGVsb29wXCIsXCJydWxlXCI6XCJ2YXIgaXRlbXMgPSBbXTtcXG5cXG5mdW5jdGlvbiBmb3JtYXREYXRlKF9kYXRlLCBfZm10KSB7XFxuICAgIGxldCBmbXQgPSBfZm10IHx8IFxcXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXFxcIjtcXG4gICAgY29uc3QgZGF0ZSA9ICFpc05hTihfZGF0ZSkgPyBuZXcgRGF0ZShfZGF0ZSAqIDEwMDApIDogbmV3IERhdGUoX2RhdGUpO1xcbiAgICBjb25zdCBvID0ge1xcbiAgICAgICAgXFxcIk0rXFxcIjogZGF0ZS5nZXRNb250aCgpICsgMSwgLy/mnIjku70gXFxuICAgICAgICBcXFwiZCtcXFwiOiBkYXRlLmdldERhdGUoKSwgLy/ml6UgXFxuICAgICAgICBcXFwiaCtcXFwiOiBkYXRlLmdldEhvdXJzKCkgJSAxMiA9PSAwID8gMTIgOiBkYXRlLmdldEhvdXJzKCkgJSAxMixcXG4gICAgICAgIFxcXCJIK1xcXCI6IGRhdGUuZ2V0SG91cnMoKSwgLy/lsI/ml7YgXFxuICAgICAgICBcXFwibStcXFwiOiBkYXRlLmdldE1pbnV0ZXMoKSwgLy/liIYgXFxuICAgICAgICBcXFwicytcXFwiOiBkYXRlLmdldFNlY29uZHMoKSwgLy/np5IgXFxuICAgICAgICBcXFwicStcXFwiOiBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgKyAzKSAvIDMpLCAvL+Wto+W6piBcXG4gICAgICAgIFxcXCJTXFxcIjogZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAvL+avq+enkiBcXG4gICAgfTtcXG4gICAgaWYgKC8oeSspLy50ZXN0KGZtdCkpIHtcXG4gICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKGRhdGUuZ2V0RnVsbFllYXIoKSArIFxcXCJcXFwiKS5zdWJzdHIoNCAtIFJlZ0V4cC4kMS5sZW5ndGgpKTtcXG4gICAgfVxcbiAgICBmb3IgKGxldCBrIGluIG8pIHtcXG4gICAgICAgIGlmIChuZXcgUmVnRXhwKFxcXCIoXFxcIiArIGsgKyBcXFwiKVxcXCIpLnRlc3QoZm10KSkge1xcbiAgICAgICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKFJlZ0V4cC4kMS5sZW5ndGggPT0gMSkgPyAob1trXSkgOiAoKFxcXCIwMFxcXCIgKyBvW2tdKS5zdWJzdHIoKFxcXCJcXFwiICsgb1trXSkubGVuZ3RoKSkpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBmbXQ7XFxufTtcXG5cXG5mdW5jdGlvbiBmb3JtYXRTaXplKHNpemUpIHtcXG4gICAgaWYgKCFzaXplKSB7XFxuICAgICAgICByZXR1cm4gJyc7XFxuICAgIH1cXG4gICAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcXG4gICAgbGV0IGkgPSAwO1xcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0KSB7XFxuICAgICAgICBzaXplIC89IDEwMjQ7XFxuICAgICAgICBpKys7XFxuICAgIH1cXG4gICAgc2l6ZSA9IGkgPyBOdW1iZXIoc2l6ZS50b0ZpeGVkKDIpKSA6IHNpemU7XFxuICAgIHJldHVybiBgJHtzaXplfSAke3VuaXRzW2ldfWA7XFxufVxcbi8vbGV0IHR2aXAgPSBnZXRJdGVtKCdoaWtlcnR2Ym94c2V0JywgJycpO1xcblxcbi8vbG9nKGdldFJlc0NvZGUoKSk7XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbn1cXG5pZiAoTVlfUEFHRSA+IDEgJiYgZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpID09ICcnKSB7XFxuICAgIGxvZygn5rKh5pyJ5LiL5LiA6aG1Jyk7XFxufSBlbHNlIHtcXG4gICAgbGV0IHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcblxcbiAgICBsZXQgbmV4dCA9IGdldE15VmFyKCduZXh0cGFnZScsICcnKSAhPSAnJyA/ICcsXFxcIm1hcmtlclxcXCI6XFxcIicgKyBnZXRNeVZhcignbmV4dHBhZ2UnKSArICdcXFwiJyA6ICcnO1xcblxcbiAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwiLFxcXCJwYXJlbnRfZmlsZV9pZFxcXCI6XFxcIicgKyBnZXRSZXNDb2RlKCkuc3BsaXQoJz8/PycpWzBdICsgJ1xcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZVxcXFwvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXCIsXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcXCJvcmRlcl9ieVxcXCI6XFxcIm5hbWVcXFwiLFxcXCJvcmRlcl9kaXJlY3Rpb25cXFwiOlxcXCJBU0NcXFwiJyArIG5leHQgKyAnfScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgLy9sb2cocmVzY29kKTtcXG4gICAgaWYgKEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcikge1xcbiAgICAgICAgbGV0IG1hcmtlciA9IEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcjtcXG4gICAgICAgIGlmIChtYXJrZXIubGVuZ3RoID4gMTApIHtcXG4gICAgICAgICAgICBwdXRNeVZhcignbmV4dHBhZ2UnLCBtYXJrZXIpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciBjb250cyA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtcztcXG4gICAgdmFyIHR1aXNvbmcgPSBbXTtcXG4gICAgZm9yICh2YXIgaSBpbiBjb250cykge1xcblxcbiAgICAgICAgdmFyIGxpc3R5cCA9IGNvbnRzW2ldLnR5cGU7XFxuICAgICAgICBpZiAobGlzdHlwICE9ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXG4gICAgICAgICAgICB2YXIgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2RvYycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk5YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+WvCcgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnemlwJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGNvbnRzW2ldLm5hbWVcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hbGlsYXp5XFxcIikoc2hhcmVJZCwgaW5wdXQsIGNhdGUpO1xcbiAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKGNvbnRzW2ldLnVwZGF0ZWRfYXQpICsgJyAgJyArIGZvcm1hdFNpemUoY29udHNbaV0uc2l6ZSksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogY29udHNbaV0uZmlsZV9pZFxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG5cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+TgicgKyBjb250c1tpXS5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgY29udHNbaV0uZmlsZV9pZCArICc/Pz9meXBhZ2UnKS5ydWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBwdXNobmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcnVsZWxvb3AnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjb250c1tpXS5uYW1lKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgIH0gLy9lbmQgaWZcXG5cXG4gICAgfVxcbn1cXG5zZXRSZXN1bHQoaXRlbXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Zi/6YeM5o6o6YCBXCIsXCJwYXRoXCI6XCJwdXNoXCIsXCJydWxlXCI6XCJqczpcXG4vL2xvZyhNWV9VUkwpO1xcbnZhciBpdGVtcyA9IFtdO1xcbnZhciByZWFsdXJsID0gTVlfVVJMLnNwbGl0KCcjIycpWzFdLnNwbGl0KCc/Pz8nKVswXTtcXG5pZiAoZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLmluY2x1ZGVzKCd3d3cuYWxpeXVuZHJpdmUnKSAmJiAhcmVhbHVybC5pbmNsdWRlcygnJTNCJTdCJykpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2Uvc2hhcmlkJywge30pKS5ydWxlKVxcbn1cXG5zZXRSZXN1bHQoaXRlbXMpO1wifV0iLCJpY29uIjoiIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment