xiaomianao666

小程序:搜图神器

Feb 10th, 2023
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@搜图神器@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5pCc5Zu+56We5ZmoIiwiYXV0aG9yIjoi5pen5be36ZmM5Lq6IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJwaWN0dXJlIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvQ29uZmlnLnZpZXcnKVxuZ2V0QmFzZVBhcnNlKCkiLCJzZWFyY2hfdXJsIjoiIiwiZ3JvdXAiOiLlhbblroMiLCJzZWFyY2hGaW5kIjoiIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0olwiLFwicGF0aFwiOlwiU2VhcmNoLnZpZXdcIixcInJ1bGVcIjpcInJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9Db25maWcudmlldz9ydWxlPScgKyBNWV9SVUxFLl90aXRsZSlcXG5jb25zdCBrZXl3b3JkID0gZ2V0UGFyYW0oXFxcInNlYXJjaFRlcm1zXFxcIikgfHwgXFxcIlxcXCI7XFxuY29uc3QgaW5kZXggPSBOdW1iZXIoZ2V0UGFyYW0oXFxcImluZGV4XFxcIikgfHwgXFxcIjBcXFwiKTtcXG5cXG5jb25zdCBnZXRDb25maWcgPSAocGF0aCkgPT4ge1xcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KHBhdGgsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCdcXG4gICAgICAgIH1cXG4gICAgfSkpXFxufVxcblxcbmNvbnN0IGQgPSBbXVxcblxcbnN3aXRjaCAoaW5kZXgpIHtcXG4gICAgY2FzZSAwOlxcbiAgICAgICAgcGF0aCA9ICdodHRwOi8vYXBpLmh1YWJhbi5jb20vc2VhcmNoP3E9JyArIGtleXdvcmQgKyAnJnBlcl9wYWdlPTM2JnBhZ2U9JyArIHBhZ2UgKyAnJnNvcnQ9YWxsJ1xcbiAgICAgICAgZ2V0Q29uZmlnKHBhdGgpLnBpbnMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBmaWxlID0gaXRlbS5maWxlXFxuICAgICAgICAgICAgaW1nID0gJ2h0dHBzOi8vJyArIGZpbGUuYnVja2V0ICsgJy5odWFiYW4uY29tLycgKyBmaWxlLmtleVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnJhd190ZXh0LFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5Zu+6ZuG77yaJyArIGl0ZW0uYm9hcmQudGl0bGUsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZpbGUud2lkdGggKyAnw5cnICsgZmlsZS5oZWlnaHQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGltZyxcXG4gICAgICAgICAgICAgICAgdXJsOiAncGljczovLycgKyBpbWdcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDE6XFxuICAgICAgICBwYXRoID0gJ2h0dHA6Ly93d3cuZHVpdGFuZy5jb20vbmFwaS9ibG9nL2xpc3QvYnlfc2VhcmNoLz9pbmNsdWRlX2ZpZWxkcz1hbGJ1bSZrdz0nICsga2V5d29yZCArICcmc3RhcnQ9JyArIChwYWdlIC0gMSkgKiAyNCArICcmbG9jYWxlPXpoJmFwcF92ZXJzaW9uPTExMCZwbGF0Zm9ybV9uYW1lPUFuZHJvaWQmX19kb21haW49d3d3LmR1aXRhbmcuY29tJ1xcbiAgICAgICAgZ2V0Q29uZmlnKHBhdGgpLmRhdGEub2JqZWN0X2xpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBwaG90byA9IGl0ZW0ucGhvdG9cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5tc2csXFxuICAgICAgICAgICAgICAgIGRlc2M6ICflm77pm4bvvJonICsgaXRlbS5hbGJ1bS5uYW1lLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBwaG90by53aWR0aCArICfDlycgKyBwaG90by5oZWlnaHQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBob3RvLnBhdGgsXFxuICAgICAgICAgICAgICAgIHVybDogJ3BpY3M6Ly8nICsgcGhvdG8ucGF0aFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMjpcXG4gICAgICAgIHBhdGggPSAnL3YxL3dhbGxwYXBlci9saXN0J1xcbiAgICAgICAgc2lnbiA9ICdwYWdlPScgKyAocGFnZSAtIDEpICsgJyZwYWdlX3NpemU9MjAmcGxhdGZvcm09MCZwcm9kdWN0X2lkPTE2JnNlYXJjaF93b3JkPScgKyBrZXl3b3JkICsgJyZ0aW1lPScgKyBnZXRUaW1lICsgJyZ2ZXJzaW9uX2NvZGU9NDc1JmtleT1kOWZkM2VjMzk0J1xcbiAgICAgICAgYm9keSA9ICdwcm9kdWN0X2lkPTE2JnZlcnNpb25fY29kZT00NzUmc2lnbj0nICsgbWQ1KHNpZ24pLnRvVXBwZXJDYXNlKCkgKyAnJnBhZ2U9JyArIChwYWdlIC0gMSkgKyAnJnRpbWU9JyArIGdldFRpbWUgKyAnJnNlYXJjaF93b3JkPScgKyBrZXl3b3JkICsgJyZwbGF0Zm9ybT0wJnBhZ2Vfc2l6ZT0yMCdcXG4gICAgICAgIGxheW91dFBhcnNlKGQsIGdldENvbmZpZ0RlKHBhdGgsIGJvZHkpKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMzpcXG4gICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgXFxcImRhdGFcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJ3aGVyZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIkb3JcXFwiOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJib2FyZE5hbWVcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkcmVnZXhcXFwiOiBcXFwiXFxcXFxcXFxRXFxcIiArIGtleXdvcmQgKyBcXFwiXFxcXFxcXFxFXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiY29udGVudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfV0sXFxuICAgICAgICAgICAgICAgICAgICBcXFwicmVwb3J0Q291bnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRsdFxcXCI6IDJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgXFxcImxpbWl0XFxcIjogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJza2lwXFxcIjogKHBhZ2UgLSAxKSAqIDIwLFxcbiAgICAgICAgICAgICAgICBcXFwib3JkZXJcXFwiOiBcXFwiLXVwZGF0ZWRBdFxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJjXFxcIjogXFxcIlBob25lV3JhcHBlclxcXCIsXFxuICAgICAgICAgICAgXFxcImFwcFNpZ25cXFwiOiBcXFwiZWE0NTdhY2Y0NWM1ZmQ5ZmQzZWMzOTQ0MzEyNWYzOGZcXFxcLzFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJjbGllbnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJjYWxsZXJcXFwiOiBcXFwiQW5kcm9pZFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJleFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjEwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJwYWNrYWdlXFxcIjogXFxcImNvbS5leGFtcGxlLmFkbWluaXN0cmF0b3Iuc2VhcmNocGljdHVyZXRvb2xcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInV1aWRcXFwiOiBcXFwiNDQ3NzEwNjUyOTdBMDAyOTI3QjRFMDI2ODkwNEZFMTZcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJ2XFxcIjogXFxcInYzLjguNFxcXCIsXFxuICAgICAgICAgICAgXFxcInRpbWVzdGFtcFxcXCI6IGdldFRpbWUgLyAxMDAwXFxuICAgICAgICB9XFxuICAgICAgICBsYXlvdXRQYXJzZShkLCBnZXRDb25maWdFbihib2R5KSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDQ6XFxuICAgICAgICBib2R5ID0ge1xcbiAgICAgICAgICAgIFxcXCJkYXRhXFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwid2hlcmVcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiJG9yXFxcIjogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiYm9hcmROYW1lXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiJHJlZ2V4XFxcIjogXFxcIlxcXFxcXFxcUVxcXCIgKyBrZXl3b3JkICsgXFxcIlxcXFxcXFxcRVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNvbnRlbnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkcmVnZXhcXFwiOiBcXFwiXFxcXFxcXFxRXFxcIiArIGtleXdvcmQgKyBcXFwiXFxcXFxcXFxFXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1dLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInJlcG9ydENvdW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkbHRcXFwiOiAyXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIFxcXCJsaW1pdFxcXCI6IDIwLFxcbiAgICAgICAgICAgICAgICBcXFwic2tpcFxcXCI6IChwYWdlIC0gMSkgKiAyMCxcXG4gICAgICAgICAgICAgICAgXFxcIm9yZGVyXFxcIjogXFxcIi11cGRhdGVkQXRcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwiY1xcXCI6IFxcXCJGdWxsU2NyZWVuSW1hZ2VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJhcHBTaWduXFxcIjogXFxcImVhNDU3YWNmNDVjNWZkOWZkM2VjMzk0NDMxMjVmMzhmXFxcXC8xXFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiY2FsbGVyXFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZXhcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxMFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFja2FnZVxcXCI6IFxcXCJjb20uZXhhbXBsZS5hZG1pbmlzdHJhdG9yLnNlYXJjaHBpY3R1cmV0b29sXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogXFxcIjQ0NzcxMDY1Mjk3QTAwMjkyN0I0RTAyNjg5MDRGRTE2XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwidlxcXCI6IFxcXCJ2My44LjRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiBnZXRUaW1lIC8gMTAwMFxcbiAgICAgICAgfVxcbiAgICAgICAgbGF5b3V0UGFyc2UoZCwgZ2V0Q29uZmlnRW4oYm9keSkpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSA1OlxcbiAgICAgICAgYm9keSA9IHtcXG4gICAgICAgICAgICBcXFwiZGF0YVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgXFxcIndoZXJlXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIiRvclxcXCI6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImJvYXJkTmFtZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb250ZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiJHJlZ2V4XFxcIjogXFxcIlxcXFxcXFxcUVxcXCIgKyBrZXl3b3JkICsgXFxcIlxcXFxcXFxcRVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZXBvcnRDb3VudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiJGx0XFxcIjogMlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBcXFwibGltaXRcXFwiOiAyMCxcXG4gICAgICAgICAgICAgICAgXFxcInNraXBcXFwiOiAocGFnZSAtIDEpICogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJvcmRlclxcXCI6IFxcXCItdXBkYXRlZEF0XFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcImNcXFwiOiBcXFwiSGlnblBob25lV3JhcHBlclxcXCIsXFxuICAgICAgICAgICAgXFxcImFwcFNpZ25cXFwiOiBcXFwiZWE0NTdhY2Y0NWM1ZmQ5ZmQzZWMzOTQ0MzEyNWYzOGZcXFxcLzFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJjbGllbnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJjYWxsZXJcXFwiOiBcXFwiQW5kcm9pZFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJleFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjEwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJwYWNrYWdlXFxcIjogXFxcImNvbS5leGFtcGxlLmFkbWluaXN0cmF0b3Iuc2VhcmNocGljdHVyZXRvb2xcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInV1aWRcXFwiOiBcXFwiNDQ3NzEwNjUyOTdBMDAyOTI3QjRFMDI2ODkwNEZFMTZcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJ2XFxcIjogXFxcInYzLjguNFxcXCIsXFxuICAgICAgICAgICAgXFxcInRpbWVzdGFtcFxcXCI6IGdldFRpbWUgLyAxMDAwXFxuICAgICAgICB9XFxuICAgICAgICBsYXlvdXRQYXJzZShkLCBnZXRDb25maWdFbihib2R5KSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDY6XFxuICAgICAgICBwYXRoID0gJ2h0dHBzOi8vcGljLnNvZ291LmNvbS9uYXBpL3BjL3NlYXJjaExpc3Q/cXVlcnk9JyArIGtleXdvcmQgKyAnJnN0YXJ0PScgKyAocGFnZSAtIDEpICogNDhcXG4gICAgICAgIGdldENvbmZpZyhwYXRoKS5kYXRhLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICflm77pm4bvvJonICsgaXRlbS5jaF9zaXRlX25hbWUsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0udGh1bWJXaWR0aCArICfDlycgKyBpdGVtLnRodW1iSGVpZ2h0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdGVtLnBpY1VybCxcXG4gICAgICAgICAgICAgICAgdXJsOiAncGljczovLycgKyBpdGVtLnBpY1VybFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgNzpcXG4gICAgICAgIHBhdGggPSAnaHR0cHM6Ly9tLndlaWJvLmNuL2FwaS9jb250YWluZXIvZ2V0SW5kZXg/cGFnZV90eXBlPXNlYXJjaGFsbCZwYWdlPScgKyBwYWdlICsgJyZjb250YWluZXJpZD0nICsgZXNjYXBlKCcxMDAxMDN0eXBlPTYzJnE9JykgKyBrZXl3b3JkICsgZXNjYXBlKCcmdD0wJylcXG4gICAgICAgIGdldENvbmZpZyhwYXRoKS5kYXRhLmNhcmRzWzBdLmNhcmRfZ3JvdXAuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBsZWZ0ID0gaXRlbS5sZWZ0X2VsZW1lbnRcXG4gICAgICAgICAgICBpbWcgPSBsZWZ0Lm1ibG9nLmJtaWRkbGVfcGljICsgJ0BVc2VyLUFnZW50PURhbHZpay8yLjEuMCdcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbGVmdC5kZXNjMSxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaW1nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdwaWNzOi8vJyArIGltZ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgODpcXG4gICAgICAgIHBhdGggPSAnaHR0cHM6Ly9tLmJhaWR1LmNvbS9zZi92c2VhcmNoL2ltYWdlL3NlYXJjaC93aXNlc2VhcmNocmVzdWx0P3RuPXdpc2Vqc29uYWxhJno9MCZpZT11dGYtOCZxdWVyeVdvcmQ9JyArIGtleXdvcmQgKyAnJnJuPTMwJndvcmQ9JyArIGtleXdvcmQgKyAnJnBuPScgKyAocGFnZSAtIDEpICogMzBcXG4gICAgICAgIGdldENvbmZpZyhwYXRoKS5saW5rRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5Zu+6ZuG77yaJyArIGl0ZW0uZnJvbVVybEhvc3QsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0ub3JpV2lkdGggKyAnw5cnICsgaXRlbS5vcmlIZWlnaHQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGl0ZW0uaG92ZXJVcmwsXFxuICAgICAgICAgICAgICAgIHVybDogJ3BpY3M6Ly8nICsgaXRlbS5ob3ZlclVybFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgOTpcXG4gICAgICAgIHBhdGggPSAnaHR0cHM6Ly92dC5zbS5jbi9hcGkvcGljL2xpc3Q/cXVlcnk9JyArIGtleXdvcmQgKyAnJnN0YXJ0PScgKyAocGFnZSAtIDEpICogMjAgKyAnJmxpbWl0PTIwJnNpemU9MCZsYXRlc3Q9MCdcXG4gICAgICAgIGdldENvbmZpZyhwYXRoKS5kYXRhLmhpdC5pbWdJbmZvLml0ZW0uZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+Wbvumbhu+8micgKyBpdGVtLmZpcnN0Q2F0ZU5ldyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogaXRlbS53aWR0aCArICfDlycgKyBpdGVtLmhlaWdodCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaXRlbS5pbWcsXFxuICAgICAgICAgICAgICAgIHVybDogJ3BpY3M6Ly8nICsgaXRlbS5pbWdcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDEwOlxcbiAgICAgICAgYm9keSA9IHtcXG4gICAgICAgICAgICBcXFwiZGF0YVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgXFxcIndoZXJlXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIiRvclxcXCI6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImJvYXJkTmFtZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb250ZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiJHJlZ2V4XFxcIjogXFxcIlxcXFxcXFxcUVxcXCIgKyBrZXl3b3JkICsgXFxcIlxcXFxcXFxcRVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZXBvcnRDb3VudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiJGx0XFxcIjogMlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBcXFwibGltaXRcXFwiOiAyMCxcXG4gICAgICAgICAgICAgICAgXFxcInNraXBcXFwiOiAocGFnZSAtIDEpICogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJvcmRlclxcXCI6IFxcXCItdXBkYXRlZEF0XFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcImNcXFwiOiBcXFwiU3F1YXJlSW1hZ2VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJhcHBTaWduXFxcIjogXFxcImVhNDU3YWNmNDVjNWZkOWZkM2VjMzk0NDMxMjVmMzhmXFxcXC8xXFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiY2FsbGVyXFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZXhcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxMFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFja2FnZVxcXCI6IFxcXCJjb20uZXhhbXBsZS5hZG1pbmlzdHJhdG9yLnNlYXJjaHBpY3R1cmV0b29sXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogXFxcIjQ0NzcxMDY1Mjk3QTAwMjkyN0I0RTAyNjg5MDRGRTE2XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwidlxcXCI6IFxcXCJ2My44LjRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiBnZXRUaW1lIC8gMTAwMFxcbiAgICAgICAgfVxcbiAgICAgICAgbGF5b3V0UGFyc2UoZCwgZ2V0Q29uZmlnRW4oYm9keSkpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAxMTpcXG4gICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgXFxcImRhdGFcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJ3aGVyZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIkb3JcXFwiOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJib2FyZE5hbWVcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkcmVnZXhcXFwiOiBcXFwiXFxcXFxcXFxRXFxcIiArIGtleXdvcmQgKyBcXFwiXFxcXFxcXFxFXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiY29udGVudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfV0sXFxuICAgICAgICAgICAgICAgICAgICBcXFwicmVwb3J0Q291bnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRsdFxcXCI6IDJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgXFxcImxpbWl0XFxcIjogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJza2lwXFxcIjogKHBhZ2UgLSAxKSAqIDIwLFxcbiAgICAgICAgICAgICAgICBcXFwib3JkZXJcXFwiOiBcXFwiLXVwZGF0ZWRBdFxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJjXFxcIjogXFxcIlRvdVhpYW5nSW1hZ2VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJhcHBTaWduXFxcIjogXFxcImVhNDU3YWNmNDVjNWZkOWZkM2VjMzk0NDMxMjVmMzhmXFxcXC8xXFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiY2FsbGVyXFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZXhcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxMFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFja2FnZVxcXCI6IFxcXCJjb20uZXhhbXBsZS5hZG1pbmlzdHJhdG9yLnNlYXJjaHBpY3R1cmV0b29sXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogXFxcIjQ0NzcxMDY1Mjk3QTAwMjkyN0I0RTAyNjg5MDRGRTE2XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwidlxcXCI6IFxcXCJ2My44LjRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiBnZXRUaW1lIC8gMTAwMFxcbiAgICAgICAgfVxcbiAgICAgICAgbGF5b3V0UGFyc2UoZCwgZ2V0Q29uZmlnRW4oYm9keSkpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAxMjpcXG4gICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgXFxcImRhdGFcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJ3aGVyZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIkb3JcXFwiOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJib2FyZE5hbWVcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkcmVnZXhcXFwiOiBcXFwiXFxcXFxcXFxRXFxcIiArIGtleXdvcmQgKyBcXFwiXFxcXFxcXFxFXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiY29udGVudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfV0sXFxuICAgICAgICAgICAgICAgICAgICBcXFwicmVwb3J0Q291bnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRsdFxcXCI6IDJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgXFxcImxpbWl0XFxcIjogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJza2lwXFxcIjogKHBhZ2UgLSAxKSAqIDIwLFxcbiAgICAgICAgICAgICAgICBcXFwib3JkZXJcXFwiOiBcXFwiLXVwZGF0ZWRBdFxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJjXFxcIjogXFxcIkJpYW9RaW5nQmFvSW1hZ2VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJhcHBTaWduXFxcIjogXFxcImVhNDU3YWNmNDVjNWZkOWZkM2VjMzk0NDMxMjVmMzhmXFxcXC8xXFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiY2FsbGVyXFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZXhcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxMFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFja2FnZVxcXCI6IFxcXCJjb20uZXhhbXBsZS5hZG1pbmlzdHJhdG9yLnNlYXJjaHBpY3R1cmV0b29sXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogXFxcIjQ0NzcxMDY1Mjk3QTAwMjkyN0I0RTAyNjg5MDRGRTE2XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwidlxcXCI6IFxcXCJ2My44LjRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiBnZXRUaW1lIC8gMTAwMFxcbiAgICAgICAgfVxcbiAgICAgICAgbGF5b3V0UGFyc2UoZCwgZ2V0Q29uZmlnRW4oYm9keSkpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAxMzpcXG4gICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgXFxcImRhdGFcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJ3aGVyZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIkb3JcXFwiOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJib2FyZE5hbWVcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkcmVnZXhcXFwiOiBcXFwiXFxcXFxcXFxRXFxcIiArIGtleXdvcmQgKyBcXFwiXFxcXFxcXFxFXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiY29udGVudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfV0sXFxuICAgICAgICAgICAgICAgICAgICBcXFwicmVwb3J0Q291bnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRsdFxcXCI6IDJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgXFxcImxpbWl0XFxcIjogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJza2lwXFxcIjogKHBhZ2UgLSAxKSAqIDIwLFxcbiAgICAgICAgICAgICAgICBcXFwib3JkZXJcXFwiOiBcXFwiLXVwZGF0ZWRBdFxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJjXFxcIjogXFxcIkNvbXB1dGVySW1hZ2VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJhcHBTaWduXFxcIjogXFxcImVhNDU3YWNmNDVjNWZkOWZkM2VjMzk0NDMxMjVmMzhmXFxcXC8xXFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiY2FsbGVyXFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZXhcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxMFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFja2FnZVxcXCI6IFxcXCJjb20uZXhhbXBsZS5hZG1pbmlzdHJhdG9yLnNlYXJjaHBpY3R1cmV0b29sXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogXFxcIjQ0NzcxMDY1Mjk3QTAwMjkyN0I0RTAyNjg5MDRGRTE2XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwidlxcXCI6IFxcXCJ2My44LjRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiBnZXRUaW1lIC8gMTAwMFxcbiAgICAgICAgfVxcbiAgICAgICAgbGF5b3V0UGFyc2UoZCwgZ2V0Q29uZmlnRW4oYm9keSkpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAxNDpcXG4gICAgICAgIHBhdGggPSAnaHR0cHM6Ly9pbWFnZS5zby5jb20vaj9xPScgKyBrZXl3b3JkICsgJyZwbj02MCZzbj0nICsgKHBhZ2UgLSAxKSAqIDYwICsgJyZ6b29tPTQmdD0wJ1xcbiAgICAgICAgZ2V0Q29uZmlnKHBhdGgpLmxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgY29udGVudDogaXRlbS53aWR0aCArICfDlycgKyBpdGVtLmhlaWdodCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaXRlbS5pbWcsXFxuICAgICAgICAgICAgICAgIHVybDogJ3BpY3M6Ly8nICsgaXRlbS5pbWdcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDE1OlxcbiAgICAgICAgYm9keSA9IHtcXG4gICAgICAgICAgICBcXFwiZGF0YVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgXFxcIndoZXJlXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIiRvclxcXCI6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImJvYXJkTmFtZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb250ZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiJHJlZ2V4XFxcIjogXFxcIlxcXFxcXFxcUVxcXCIgKyBrZXl3b3JkICsgXFxcIlxcXFxcXFxcRVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZXBvcnRDb3VudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiJGx0XFxcIjogMlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBcXFwibGltaXRcXFwiOiAyMCxcXG4gICAgICAgICAgICAgICAgXFxcInNraXBcXFwiOiAocGFnZSAtIDEpICogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJvcmRlclxcXCI6IFxcXCItdXBkYXRlZEF0XFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcImNcXFwiOiBcXFwiQ292ZXJJbWFnZVxcXCIsXFxuICAgICAgICAgICAgXFxcImFwcFNpZ25cXFwiOiBcXFwiZWE0NTdhY2Y0NWM1ZmQ5ZmQzZWMzOTQ0MzEyNWYzOGZcXFxcLzFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJjbGllbnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJjYWxsZXJcXFwiOiBcXFwiQW5kcm9pZFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJleFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjEwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJwYWNrYWdlXFxcIjogXFxcImNvbS5leGFtcGxlLmFkbWluaXN0cmF0b3Iuc2VhcmNocGljdHVyZXRvb2xcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInV1aWRcXFwiOiBcXFwiNDQ3NzEwNjUyOTdBMDAyOTI3QjRFMDI2ODkwNEZFMTZcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJ2XFxcIjogXFxcInYzLjguNFxcXCIsXFxuICAgICAgICAgICAgXFxcInRpbWVzdGFtcFxcXCI6IGdldFRpbWUgLyAxMDAwXFxuICAgICAgICB9XFxuICAgICAgICBsYXlvdXRQYXJzZShkLCBnZXRDb25maWdFbihib2R5KSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDE2OlxcbiAgICAgICAgcGF0aCA9ICdodHRwczovL2ltYWdlLnNvLmNvbS9qP3E9JyArIGtleXdvcmQgKyAnJnBuPTYwJnNuPScgKyAocGFnZSAtIDEpICogNjAgKyAnJnpvb209MCZ0PTAnXFxuICAgICAgICBnZXRDb25maWcocGF0aCkubGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLndpZHRoICsgJ8OXJyArIGl0ZW0uaGVpZ2h0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdGVtLmltZyxcXG4gICAgICAgICAgICAgICAgdXJsOiAncGljczovLycgKyBpdGVtLmltZ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMTc6XFxuICAgICAgICBwYXRoID0gJ2h0dHBzOi8vY24uYmluZy5jb20vYXBpL2N1c3RvbS9vcGFsL2ltYWdlL3NlYXJjaD9xPScgKyBrZXl3b3JkICsgJyZvZmZzZXQ9JyArIChwYWdlIC0gMSkgKiAzMSArICcmY291bnQ9MzAmc2V0bWt0PXpoLWNuJ1xcbiAgICAgICAgZ2V0Q29uZmlnKHBhdGgpLmFuc3dlcnNbMF0uaW1hZ2VzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgY29udGVudDogaXRlbS53aWR0aCArICfDlycgKyBpdGVtLmhlaWdodCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaXRlbS5jb250ZW50VXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdwaWNzOi8vJyArIGl0ZW0uY29udGVudFVybFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMTg6XFxuICAgICAgICBib2R5ID0ge1xcbiAgICAgICAgICAgIFxcXCJkYXRhXFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwid2hlcmVcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiJG9yXFxcIjogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiYm9hcmROYW1lXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiJHJlZ2V4XFxcIjogXFxcIlxcXFxcXFxcUVxcXCIgKyBrZXl3b3JkICsgXFxcIlxcXFxcXFxcRVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNvbnRlbnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkcmVnZXhcXFwiOiBcXFwiXFxcXFxcXFxRXFxcIiArIGtleXdvcmQgKyBcXFwiXFxcXFxcXFxFXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1dLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInJlcG9ydENvdW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkbHRcXFwiOiAyXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIFxcXCJsaW1pdFxcXCI6IDIwLFxcbiAgICAgICAgICAgICAgICBcXFwic2tpcFxcXCI6IChwYWdlIC0gMSkgKiAyMCxcXG4gICAgICAgICAgICAgICAgXFxcIm9yZGVyXFxcIjogXFxcIi11cGRhdGVkQXRcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwiY1xcXCI6IFxcXCJUcmFuc3BhcmVudEJhY2tJbWFnZVxcXCIsXFxuICAgICAgICAgICAgXFxcImFwcFNpZ25cXFwiOiBcXFwiZWE0NTdhY2Y0NWM1ZmQ5ZmQzZWMzOTQ0MzEyNWYzOGZcXFxcLzFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJjbGllbnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJjYWxsZXJcXFwiOiBcXFwiQW5kcm9pZFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJleFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjEwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJwYWNrYWdlXFxcIjogXFxcImNvbS5leGFtcGxlLmFkbWluaXN0cmF0b3Iuc2VhcmNocGljdHVyZXRvb2xcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInV1aWRcXFwiOiBcXFwiNDQ3NzEwNjUyOTdBMDAyOTI3QjRFMDI2ODkwNEZFMTZcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJ2XFxcIjogXFxcInYzLjguNFxcXCIsXFxuICAgICAgICAgICAgXFxcInRpbWVzdGFtcFxcXCI6IGdldFRpbWUgLyAxMDAwXFxuICAgICAgICB9XFxuICAgICAgICBsYXlvdXRQYXJzZShkLCBnZXRDb25maWdFbihib2R5KSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDE5OlxcbiAgICAgICAgYm9keSA9IHtcXG4gICAgICAgICAgICBcXFwiZGF0YVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgXFxcIndoZXJlXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIiRvclxcXCI6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImJvYXJkTmFtZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb250ZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiJHJlZ2V4XFxcIjogXFxcIlxcXFxcXFxcUVxcXCIgKyBrZXl3b3JkICsgXFxcIlxcXFxcXFxcRVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZXBvcnRDb3VudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiJGx0XFxcIjogMlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBcXFwibGltaXRcXFwiOiAyMCxcXG4gICAgICAgICAgICAgICAgXFxcInNraXBcXFwiOiAocGFnZSAtIDEpICogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJvcmRlclxcXCI6IFxcXCItdXBkYXRlZEF0XFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcImNcXFwiOiBcXFwiR2lmSW1hZ2VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJhcHBTaWduXFxcIjogXFxcImVhNDU3YWNmNDVjNWZkOWZkM2VjMzk0NDMxMjVmMzhmXFxcXC8xXFxcIixcXG4gICAgICAgICAgICBcXFwiY2xpZW50XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiY2FsbGVyXFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZXhcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxMFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFja2FnZVxcXCI6IFxcXCJjb20uZXhhbXBsZS5hZG1pbmlzdHJhdG9yLnNlYXJjaHBpY3R1cmV0b29sXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogXFxcIjQ0NzcxMDY1Mjk3QTAwMjkyN0I0RTAyNjg5MDRGRTE2XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwidlxcXCI6IFxcXCJ2My44LjRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiBnZXRUaW1lIC8gMTAwMFxcbiAgICAgICAgfVxcbiAgICAgICAgbGF5b3V0UGFyc2UoZCwgZ2V0Q29uZmlnRW4oYm9keSkpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAyMDpcXG4gICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgXFxcImRhdGFcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJ3aGVyZVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIkb3JcXFwiOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJib2FyZE5hbWVcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCIkcmVnZXhcXFwiOiBcXFwiXFxcXFxcXFxRXFxcIiArIGtleXdvcmQgKyBcXFwiXFxcXFxcXFxFXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiY29udGVudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRyZWdleFxcXCI6IFxcXCJcXFxcXFxcXFFcXFwiICsga2V5d29yZCArIFxcXCJcXFxcXFxcXEVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfV0sXFxuICAgICAgICAgICAgICAgICAgICBcXFwicmVwb3J0Q291bnRcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIiRsdFxcXCI6IDJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgXFxcImxpbWl0XFxcIjogMjAsXFxuICAgICAgICAgICAgICAgIFxcXCJza2lwXFxcIjogKHBhZ2UgLSAxKSAqIDIwLFxcbiAgICAgICAgICAgICAgICBcXFwib3JkZXJcXFwiOiBcXFwiLXVwZGF0ZWRBdFxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIFxcXCJjXFxcIjogXFxcIlBhZEltYWdlXFxcIixcXG4gICAgICAgICAgICBcXFwiYXBwU2lnblxcXCI6IFxcXCJlYTQ1N2FjZjQ1YzVmZDlmZDNlYzM5NDQzMTI1ZjM4ZlxcXFwvMVxcXCIsXFxuICAgICAgICAgICAgXFxcImNsaWVudFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgXFxcImNhbGxlclxcXCI6IFxcXCJBbmRyb2lkXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImV4XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInZlcnNpb25cXFwiOiBcXFwiMTBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInBhY2thZ2VcXFwiOiBcXFwiY29tLmV4YW1wbGUuYWRtaW5pc3RyYXRvci5zZWFyY2hwaWN0dXJldG9vbFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwidXVpZFxcXCI6IFxcXCI0NDc3MTA2NTI5N0EwMDI5MjdCNEUwMjY4OTA0RkUxNlxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcInZcXFwiOiBcXFwidjMuOC40XFxcIixcXG4gICAgICAgICAgICBcXFwidGltZXN0YW1wXFxcIjogZ2V0VGltZSAvIDEwMDBcXG4gICAgICAgIH1cXG4gICAgICAgIGxheW91dFBhcnNlKGQsIGdldENvbmZpZ0VuKGJvZHkpKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMjE6XFxuICAgICAgICBwYXRoID0gJ2h0dHBzOi8vdW5zcGxhc2guY29tL25hcGkvc2VhcmNoP3F1ZXJ5PScgKyBrZXl3b3JkICsgJyZwYWdlPScgKyBwYWdlICsgJyZwZXJfcGFnZT0yMCdcXG4gICAgICAgIGdldENvbmZpZyhwYXRoKS5waG90b3MucmVzdWx0cy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLmRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLndpZHRoICsgJ8OXJyArIGl0ZW0uaGVpZ2h0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdGVtLnVybHMuc21hbGwsXFxuICAgICAgICAgICAgICAgIHVybDogJ3BpY3M6Ly8nICsgaXRlbS51cmxzLmZ1bGxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGJyZWFrO1xcbn1cXG5cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdolwiLFwicGF0aFwiOlwiQ29uZmlnLnZpZXdcIixcInJ1bGVcIjpcImNvbnN0IGVtcHR5ID0gJ2hpa2VyOi8vZW1wdHknXFxuY29uc3QgcGFnZSA9IE1ZX1BBR0U7XFxuXFxuY29uc3QgQ29sb3IgPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gJzxmb250IGNvbG9yPVxcXCIjRkE3Mjk4XFxcIj4nICsgdGVzdCArICc8L2Zyb250Pic7XFxufVxcblxcbmNvbnN0IFN0cm9uZyA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPHN0cm9uZz4nICsgdGVzdCArICc8L3N0cm9uZz4nO1xcbn1cXG5cXG5jb25zdCBTbWFsbCA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPHNtYWxsPicgKyB0ZXN0ICsgJzwvc21hbGw+JztcXG59XFxuXFxuY29uc3QgR3JheSA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiBcXFwiPGZvbnQgY29sb3I9J2dyYXknPlxcXCIgKyB0ZXN0ICsgXFxcIjwvZm9udD5cXFwiO1xcbn1cXG5cXG5jb25zdCBSaWNoID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuIFxcXCLigJjigJjigJnigJlcXFwiICsgdGVzdDtcXG59XFxuXFxuY29uc3QgZ2V0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXFxuXFxuaWYgKGdldE15VmFyKCdzZWNyZXRLZXknLCAnJykgPT0gJycpIHtcXG4gICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXG4gICAgY29uc3QgZGVjcnlwdCA9IChzdHIsIHRva2VuX2l2KSA9PiB7XFxuICAgICAgICBsZXQgdG9rZW5fa2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UodG9rZW5faXYpO1xcbiAgICAgICAgbGV0IGRlY3J5cHQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChzdHIsIHRva2VuX2tleSwge1xcbiAgICAgICAgICAgIGl2OiB0b2tlbl9rZXksXFxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBkZWNyeXB0LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcXG4gICAgfVxcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwcC5zb3V0dXNoZW5xaS5jb20vOC9zZWNyZXQnLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnY29tLmV4YW1wbGUuYWRtaW5pc3RyYXRvci5zZWFyY2hwaWN0dXJldG9vbC80NzUxNjY1OTkzNzY4NTg0QW5kcm9pZHYzLjguNCcsXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04J1xcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6IFxcXCJVQnZleEdxamRHQStHTjFLendYOWpqWVljY3Q5d1NCTTJMMXNtNHozTWRiNU9GS0NlaGlsRytUQTQ4WTdRTkhZc2tsQUNzaTZyTEFJOGp1WFAzNXMyaW9ZQ3ZNMHMxMGJhOGdXNU5rRXk3Rjdram5jTXNEQXhhaG5oSENtbmRreTEvK1lMaVVGdUJMVEpFcVRyS3NaUE54dVJ2SXlLcjRnZm9jOVg5cUJoZDhudDhvcVdIV3hGcnBzQWo0RGRkdGREclVscUN0elhXVG16U3VnazQ1SFpMMEw3MG9IUitxYTBSVFEyaHVnWHRjZ3Z2VVpwRHdiSlkxTlpsK2EwUjhnNGN5ZmFLSHZOMnNGaUdEbWEyWHhJUjZHTWcrY2hZTFlJNnRwYTdxNEVZS3VDMEZ3b1FZd3J3emh4MWtjaVNTRTUydVJzV0tmVHZPb0hWdURTdjJycXdhdEJvRWJUajBndmg0MTdWTjdzeG1LTXRuRXNHM3NFVFRqckZmQ2VUTkNcXFwiLFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXFxuICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZVxcbiAgICB9KSk7XFxuICAgIGxldCB2dGFnID0gZGF0YS5oZWFkZXJzWydyZXNwb25zZS1pZCddWzBdLnN1YnN0cig4KTtcXG4gICAgbGV0IGRhdGUgPSBkZWNyeXB0KGRhdGEuYm9keSwgdnRhZyk7XFxuICAgIGxldCBzZWNyZXRLZXkgPSBKU09OLnBhcnNlKGRhdGUpLmRhdGEuc2VjcmV0S2V5XFxuICAgIHB1dE15VmFyKCdzZWNyZXRLZXknLCBzZWNyZXRLZXkpO1xcbn1cXG5cXG5jb25zdCBEZWNvZGUgPSAoc3RyKSA9PiB7XFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7XFxuICAgIGxldCB0b2tlbl9rZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShnZXRNeVZhcignc2VjcmV0S2V5JykpO1xcbiAgICBsZXQgZGVjcnlwdCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHN0ciwgdG9rZW5fa2V5LCB7XFxuICAgICAgICBpdjogdG9rZW5fa2V5LFxcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgfSk7XFxuICAgIHJldHVybiBkZWNyeXB0LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcXG59XFxuXFxuY29uc3QgRW5jb2RlID0gKHN0cikgPT4ge1xcbiAgICBldmFsKGdldENyeXB0b0pTKCkpXFxuICAgIGxldCB0b2tlbl9rZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShnZXRNeVZhcignc2VjcmV0S2V5JykpO1xcbiAgICBsZXQgZW5jcnlwdCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHN0ciwgdG9rZW5fa2V5LCB7XFxuICAgICAgICBpdjogdG9rZW5fa2V5LFxcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgfSlcXG4gICAgcmV0dXJuIGVuY3J5cHQudG9TdHJpbmcoKVxcbn07XFxuXFxuY29uc3QgZ2V0Q29uZmlnRGUgPSAocGF0aCwgYm9keSkgPT4ge1xcbiAgICBjb25zdCBob3N0ID0gJ2h0dHA6Ly93YWxscGFwZXIuc291dHVzaGVucWkuY29tJyArIHBhdGhcXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChob3N0LCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2todHRwLzMuMTIuMydcXG4gICAgICAgIH0sXFxuICAgICAgICBib2R5OiBib2R5LFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgfSkpLmRhdGFcXG4gICAgdHJ5IHtcXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpXFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHJldHVybiBkYXRhXFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0Q29uZmlnRW4gPSAoYm9keSkgPT4ge1xcbiAgICBjb25zdCBob3N0ID0gJ2h0dHBzOi8vYXBwLnNvdXR1c2hlbnFpLmNvbS84L2ZpbmQ/aWQ9NDBjYjlhJ1xcbiAgICBjb25zdCBkYXRhID0gRGVjb2RlKHJlcXVlc3QoaG9zdCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ2NvbS5leGFtcGxlLmFkbWluaXN0cmF0b3Iuc2VhcmNocGljdHVyZXRvb2wvNDc1MTY2NjAwNTU1NzQwOUFuZHJvaWR2My44LjQnLFxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCcsXFxuICAgICAgICAgICAgJ0FjY2VwdC1JZCc6ICdwU1RyK0lDUEJHV2JOcTNrUWRMYzZUQ3RoVzN2TjFvVDliZVhTUEw0ZU1waktWeGw4a0dvZ3liMHRsczFtWnBkJ1xcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6IEVuY29kZShKU09OLnN0cmluZ2lmeShib2R5KSksXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSkuZGF0YS5yZXN1bHRzXFxufVxcblxcbmNvbnN0IGdldEJhc2VQYXJzZSA9ICgpID0+IHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGNvbnN0IHRhYnMgPSBbJ+aJi+acuuWjgee6uCcsICfliqjmgIHlo4HnurgnLCAn55S16ISR5aOB57q4J107XFxuICAgICAgICBjb25zdCBkID0gW11cXG4gICAgICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgICAgICB0YWJzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbSA9PSBnZXRNeVZhcign5YiG57uEJywgdGFic1swXSkgPyBSaWNoKFN0cm9uZyhDb2xvcihpdGVtKSkpIDogaXRlbSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaXRlbSwgZW1wdHkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5YiG57uEJywgaXRlbSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBpdGVtLCBlbXB0eSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICBzd2l0Y2ggKGdldE15VmFyKCfliIbnu4QnLCB0YWJzWzBdKSkge1xcbiAgICAgICAgICAgIGNhc2UgdGFic1swXTpcXG4gICAgICAgICAgICAgICAgZ2V0Q2xhc3Nyb29tUGFyc2UoZCwgdGFicylcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSB0YWJzWzFdOlxcbiAgICAgICAgICAgICAgICBrZXkgPSAneXFiel9hbmRyb2lkX3ZpZGVvX2NhdGVnb3J5X2xpc3RfdjInXFxuICAgICAgICAgICAgICAgIGdldENsYXNzaW5nUGFyc2UoZCwgdGFicywga2V5KVxcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIHRhYnNbMl06XFxuICAgICAgICAgICAgICAgIGtleSA9ICd5cWJ6X2FuZHJvaWRfY29tcHV0ZXJfd2FsbHBhcGVyX3RhYnMnXFxuICAgICAgICAgICAgICAgIGdldENsYXNzaW5nUGFyc2UoZCwgdGFicywga2V5KVxcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICAgIHNldFJlc3VsdChkKVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICB0aXRsZTogUmljaChHcmF5KFNtYWxsKCd+fn7lvZPliY3nvZHnu5zlvILluLjvvIzor7fliLfmlrDph43or5V+fn4nKSkpLFxcbiAgICAgICAgICAgIHVybDogZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XSlcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRDbGFzc3Jvb21QYXJzZSA9IChkLCB0YWJzKSA9PiB7XFxuICAgIGJvZHkgPSB7XFxuICAgICAgICBcXFwiY1xcXCI6IFxcXCJDb29sV3JhcGVyVGFiXFxcIixcXG4gICAgICAgIFxcXCJkYXRhXFxcIjoge1xcbiAgICAgICAgICAgIFxcXCJsaW1pdFxcXCI6IDUwMCxcXG4gICAgICAgICAgICBcXFwib3JkZXJcXFwiOiBcXFwib3JkZXJcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgXFxcImFwcFNpZ25cXFwiOiBcXFwiZWE0NTdhY2Y0NWM1ZmQ5ZmQzZWMzOTQ0MzEyNWYzOGZcXFxcLzFcXFwiLFxcbiAgICAgICAgXFxcImNsaWVudFxcXCI6IHtcXG4gICAgICAgICAgICBcXFwiY2FsbGVyXFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJleFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgXFxcInZlcnNpb25cXFwiOiBcXFwiMTBcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwicGFja2FnZVxcXCI6IFxcXCJjb20uZXhhbXBsZS5hZG1pbmlzdHJhdG9yLnNlYXJjaHBpY3R1cmV0b29sXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInV1aWRcXFwiOiBcXFwiNDQ3NzEwNjUyOTdBMDAyOTI3QjRFMDI2ODkwNEZFMTZcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSxcXG4gICAgICAgIFxcXCJ2XFxcIjogXFxcInYzLjguNFxcXCIsXFxuICAgICAgICBcXFwidGltZXN0YW1wXFxcIjogZ2V0VGltZSAvIDEwMDBcXG4gICAgfVxcbiAgICBpVGFnID0gZ2V0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgXFxcIjppVGFnXFxcIiwgXFxcIlxcXCIpO1xcbiAgICBpZiAoaVRhZykge1xcbiAgICAgICAgaVRhZyA9IEpTT04ucGFyc2UoaVRhZyk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGlUYWcgPSBnZXRDb25maWdFbihib2R5KTtcXG4gICAgICAgICAgICBpVGFnID0gaVRhZy5maWx0ZXIoaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnRhZykge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcHV0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgXFxcIjppVGFnXFxcIiwgSlNPTi5zdHJpbmdpZnkoaVRhZykpO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGlUYWcgPSBbXTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICBpVGFnLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgdGFnID0gaXRlbS50YWdcXG4gICAgICAgICAgICBuYW1lID0gaXRlbS50YWJOYW1lXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRhZyA9PSBnZXRNeVZhcihnZXRNeVZhcign5YiG57uEJywgdGFic1swXSkgKyAn5YiG57G7JywgaVRhZ1swXS50YWcpID8gUmljaChTdHJvbmcoQ29sb3IobmFtZSkpKSA6IG5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodGFnLCBlbXB0eSwgdGFicykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgJ+WIhuexuycsIHRhZyk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCB0YWcsIGVtcHR5LCB0YWJzKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICBvcmRlcnMgPSBbJ+acgOaWsCcsICfmnIDng60nXTtcXG4gICAgaWYgKHBhZ2UgPT0gMSkge1xcbiAgICAgICAgb3JkZXJzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0gPT0gZ2V0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgJ+aOkuW6jycsIG9yZGVyc1swXSkgPyBSaWNoKFN0cm9uZyhDb2xvcihpdGVtKSkpIDogaXRlbSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpdGVtLCBlbXB0eSwgdGFicykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgJ+aOkuW6jycsIGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgaXRlbSwgZW1wdHksIHRhYnMpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgc3dpdGNoIChnZXRNeVZhcihnZXRNeVZhcign5YiG57uEJywgdGFic1swXSkgKyAn5o6S5bqPJywgb3JkZXJzWzBdKSkge1xcbiAgICAgICAgY2FzZSBvcmRlcnNbMF06XFxuICAgICAgICAgICAgb3JkZXIgPSAnLWNyZWF0ZWRBdCdcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2Ugb3JkZXJzWzFdOlxcbiAgICAgICAgICAgIG9yZGVyID0gJy11cGRhdGVkQXQnXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgIH1cXG4gICAgdGFncyA9IGdldE15VmFyKGdldE15VmFyKCfliIbnu4QnLCB0YWJzWzBdKSArICfliIbnsbsnLCBpVGFnWzBdLnRhZylcXG4gICAgYm9keSA9IHtcXG4gICAgICAgIFxcXCJjXFxcIjogXFxcIk5ld1dhbGxwYXBlclxcXCIsXFxuICAgICAgICBcXFwiZGF0YVxcXCI6IHtcXG4gICAgICAgICAgICBcXFwid2hlcmVcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJ0YWdcXFwiOiB0YWdzID09ICdhbGwnID8ge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIiRleGlzdHNcXFwiOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9IDogdGFnc1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcImxpbWl0XFxcIjogMjAsXFxuICAgICAgICAgICAgXFxcInNraXBcXFwiOiAocGFnZSAtIDEpICogMjAsXFxuICAgICAgICAgICAgXFxcIm9yZGVyXFxcIjogb3JkZXJcXG4gICAgICAgIH0sXFxuICAgICAgICBcXFwiYXBwU2lnblxcXCI6IFxcXCJlYTQ1N2FjZjQ1YzVmZDlmZDNlYzM5NDQzMTI1ZjM4ZlxcXFwvMVxcXCIsXFxuICAgICAgICBcXFwiY2xpZW50XFxcIjoge1xcbiAgICAgICAgICAgIFxcXCJjYWxsZXJcXFwiOiBcXFwiQW5kcm9pZFxcXCIsXFxuICAgICAgICAgICAgXFxcImV4XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxMFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJwYWNrYWdlXFxcIjogXFxcImNvbS5leGFtcGxlLmFkbWluaXN0cmF0b3Iuc2VhcmNocGljdHVyZXRvb2xcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwidXVpZFxcXCI6IFxcXCI0NDc3MTA2NTI5N0EwMDI5MjdCNEUwMjY4OTA0RkUxNlxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LFxcbiAgICAgICAgXFxcInZcXFwiOiBcXFwidjMuOC40XFxcIixcXG4gICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiBnZXRUaW1lIC8gMTAwMFxcbiAgICB9XFxuICAgIGdldFNlYXJjaFBhcnNlKGQpXFxuICAgIGNvbnN0IGRhdGEgPSBnZXRDb25maWdFbihib2R5KVxcbiAgICBsYXlvdXRQYXJzZShkLCBkYXRhKVxcbn1cXG5cXG5jb25zdCBnZXRDbGFzc2luZ1BhcnNlID0gKGQsIHRhYnMsIGtleSkgPT4ge1xcbiAgICBpVGFnID0gZ2V0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgXFxcIjppVGFnXFxcIiwgXFxcIlxcXCIpO1xcbiAgICBpZiAoaVRhZykge1xcbiAgICAgICAgaVRhZyA9IEpTT04ucGFyc2UoaVRhZyk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHNpZ24gPSAnY29uZmlnX2tleT0nICsga2V5ICsgJyZwbGF0Zm9ybT0wJnByb2R1Y3RfaWQ9MTYmdGltZT0nICsgZ2V0VGltZSArICcmdmVyc2lvbl9jb2RlPTQ3NSZrZXk9ZDlmZDNlYzM5NCdcXG4gICAgICAgICAgICBwYXRoID0gJy92MS9jb25maWcvcXVlcnlDb25maWcnXFxuICAgICAgICAgICAgYm9keSA9ICdjb25maWdfa2V5PScgKyBrZXkgKyAnJnByb2R1Y3RfaWQ9MTYmdmVyc2lvbl9jb2RlPTQ3NSZzaWduPScgKyBtZDUoc2lnbikudG9VcHBlckNhc2UoKSArICcmdGltZT0nICsgZ2V0VGltZSArICcmcGxhdGZvcm09MCdcXG4gICAgICAgICAgICBpVGFnID0gZ2V0Q29uZmlnRGUocGF0aCwgYm9keSk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgXFxcIjppVGFnXFxcIiwgSlNPTi5zdHJpbmdpZnkoaVRhZykpO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGlUYWcgPSBbXTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICBpVGFnLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgdGFncyA9IGl0ZW0ucmVxdWVzdF9wYXJhbXMuc2l6ZV90eXBlIHx8IGl0ZW0uY2F0ZWdvcnlfbmFtZVxcbiAgICAgICAgICAgIG5hbWUgPSBpdGVtLm5hbWUgfHwgaXRlbS5jYXRlZ29yeV9uYW1lXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRhZ3MgPT0gZ2V0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgJ+WIhuexuycsICcnICsgKGlUYWdbMF0ucmVxdWVzdF9wYXJhbXMuc2l6ZV90eXBlIHx8IGlUYWdbMF0uY2F0ZWdvcnlfbmFtZSkgKyAnJykgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh0YWdzLCBlbXB0eSwgdGFicykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgJ+WIhuexuycsIHRhZ3MpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgdGFncywgZW1wdHksIHRhYnMpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIG9yZGVycyA9IFsn5pyA5pawJywgJ+eDremXqCcsICfmnIDng60nLCAn5Y+R546wJ107XFxuICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgIG9yZGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtID09IGdldE15VmFyKGdldE15VmFyKCfliIbnu4QnLCB0YWJzWzBdKSArICfmjpLluo8nLCBvcmRlcnNbMV0pID8gUmljaChTdHJvbmcoQ29sb3IoaXRlbSkpKSA6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaXRlbSwgZW1wdHksIHRhYnMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKGdldE15VmFyKCfliIbnu4QnLCB0YWJzWzBdKSArICfmjpLluo8nLCBpdGVtKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0sIGVtcHR5LCB0YWJzKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIHN3aXRjaCAoZ2V0TXlWYXIoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pICsgJ+aOkuW6jycsIG9yZGVyc1sxXSkpIHtcXG4gICAgICAgIGNhc2Ugb3JkZXJzWzBdOlxcbiAgICAgICAgICAgIG9yZGVyID0gMVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBvcmRlcnNbMV06XFxuICAgICAgICAgICAgb3JkZXIgPSAwXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIG9yZGVyc1syXTpcXG4gICAgICAgICAgICBvcmRlciA9IDJcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2Ugb3JkZXJzWzNdOlxcbiAgICAgICAgICAgIG9yZGVyID0gM1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxuICAgIHRhZ3MgPSBnZXRNeVZhcihnZXRNeVZhcign5YiG57uEJywgdGFic1swXSkgKyAn5YiG57G7JywgJycgKyAoaVRhZ1swXS5yZXF1ZXN0X3BhcmFtcy5zaXplX3R5cGUgfHwgaVRhZ1swXS5jYXRlZ29yeV9uYW1lKSArICcnKVxcbiAgICBpZiAoZ2V0TXlWYXIoJ+WIhue7hCcsIHRhYnNbMF0pID09IHRhYnNbMV0pIHtcXG4gICAgICAgIHN3aXRjaCAodGFncykge1xcbiAgICAgICAgICAgIGNhc2UgJ+WFqOmDqCc6XFxuICAgICAgICAgICAgICAgIHNpZ24gPSAncGFnZT0nICsgKHBhZ2UgLSAxKSArICcmcGxhdGZvcm09MCZwcm9kdWN0X2lkPTE2JnNvcnRfdHlwZT0nICsgb3JkZXIgKyAnJnRpbWU9JyArIGdldFRpbWUgKyAnJnR5cGU9MCZ2ZXJzaW9uX2NvZGU9NDc1JmtleT1kOWZkM2VjMzk0J1xcbiAgICAgICAgICAgICAgICBib2R5ID0gJ3BhZ2U9JyArIChwYWdlIC0gMSkgKyAnJnR5cGU9MCZzb3J0X3R5cGU9JyArIG9yZGVyICsgJyZwcm9kdWN0X2lkPTE2JnZlcnNpb25fY29kZT00NzUmdGltZT0nICsgZ2V0VGltZSArICcmcGxhdGZvcm09MCZzaWduPScgKyBtZDUoc2lnbikudG9VcHBlckNhc2UoKVxcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlICfpq5jmuIUnOlxcbiAgICAgICAgICAgICAgICBzaWduID0gJ2lzX3ZpcD0xJnBhZ2U9JyArIChwYWdlIC0gMSkgKyAnJnBsYXRmb3JtPTAmcHJvZHVjdF9pZD0xNiZzb3J0X3R5cGU9JyArIG9yZGVyICsgJyZ0aW1lPScgKyBnZXRUaW1lICsgJyZ0eXBlPTAmdmVyc2lvbl9jb2RlPTQ3NSZrZXk9ZDlmZDNlYzM5NCdcXG4gICAgICAgICAgICAgICAgYm9keSA9ICdpc192aXA9MSZwYWdlPScgKyAocGFnZSAtIDEpICsgJyZ0eXBlPTAmc29ydF90eXBlPScgKyBvcmRlciArICcmcHJvZHVjdF9pZD0xNiZ2ZXJzaW9uX2NvZGU9NDc1JnRpbWU9JyArIGdldFRpbWUgKyAnJnBsYXRmb3JtPTAmc2lnbj0nICsgbWQ1KHNpZ24pLnRvVXBwZXJDYXNlKClcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgc2lnbiA9ICdwYWdlPScgKyAocGFnZSAtIDEpICsgJyZwbGF0Zm9ybT0wJnByb2R1Y3RfaWQ9MTYmc29ydF90eXBlPScgKyBvcmRlciArICcmdGFnPScgKyB0YWdzICsgJyZ0aW1lPScgKyBnZXRUaW1lICsgJyZ0eXBlPTAmdmVyc2lvbl9jb2RlPTQ3NSZrZXk9ZDlmZDNlYzM5NCdcXG4gICAgICAgICAgICAgICAgYm9keSA9ICd0YWc9JyArIHRhZ3MgKyAnJnBhZ2U9JyArIChwYWdlIC0gMSkgKyAnJnR5cGU9MCZzb3J0X3R5cGU9JyArIG9yZGVyICsgJyZwcm9kdWN0X2lkPTE2JnZlcnNpb25fY29kZT00NzUmdGltZT0nICsgZ2V0VGltZSArICcmcGxhdGZvcm09MCZzaWduPScgKyBtZDUoc2lnbikudG9VcHBlckNhc2UoKVxcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICAgIHBhdGggPSAnL2FwaS92Mi9saXZlV3AvbGlzdCdcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHNpZ24gPSAncGFnZT0nICsgKHBhZ2UgLSAxKSArICcmcGFnZV9zaXplPTIwJnBsYXRmb3JtPTAmcHJvZHVjdF9pZD0xNiZzaXplX3R5cGU9JyArIHRhZ3MgKyAnJnNvcnRfdHlwZT0nICsgb3JkZXIgKyAnJnRpbWU9JyArIGdldFRpbWUgKyAnJnZlcnNpb25fY29kZT00NzUma2V5PWQ5ZmQzZWMzOTQnXFxuICAgICAgICBib2R5ID0gJ3NvcnRfdHlwZT0nICsgb3JkZXIgKyAnJnNpemVfdHlwZT0nICsgdGFncyArICcmcHJvZHVjdF9pZD0xNiZ2ZXJzaW9uX2NvZGU9NDc1JnNpZ249JyArIG1kNShzaWduKS50b1VwcGVyQ2FzZSgpICsgJyZwYWdlPScgKyAocGFnZSAtIDEpICsgJyZ0aW1lPScgKyBnZXRUaW1lICsgJyZwbGF0Zm9ybT0wJnBhZ2Vfc2l6ZT0yMCdcXG4gICAgICAgIHBhdGggPSAnL3YxL3NlYXJjaC9wY1NjcmVlbidcXG4gICAgfVxcbiAgICBnZXRTZWFyY2hQYXJzZShkKVxcbiAgICBjb25zdCBkYXRhID0gZ2V0Q29uZmlnRGUocGF0aCwgYm9keSlcXG4gICAgbGF5b3V0UGFyc2UoZCwgZGF0YSlcXG59XFxuXFxuY29uc3QgbGF5b3V0UGFyc2UgPSAoZCwgZGF0YSkgPT4ge1xcbiAgICBpZiAoZGF0YS5sZW5ndGgpIHtcXG4gICAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBwaWNVcmwgPSBpdGVtLmxhcmdlVXJsIHx8IGl0ZW0uY292ZXJVcmwgfHwgaXRlbS5sYXJnZUltYWdlVXJsXFxuICAgICAgICAgICAgaXRlbVVybCA9ICdwaWNzOi8vJyArIHBpY1VybFxcbiAgICAgICAgICAgIGlmIChpdGVtLnZpZGVvVXJsKSB7XFxuICAgICAgICAgICAgICAgIGl0ZW1VcmwgPSBpdGVtLnZpZGVvVXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHR5cGUgPSAncGljXzJfY2FyZCdcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ+WIhue7hCcpID09ICfnlLXohJHlo4HnurgnKSB7XFxuICAgICAgICAgICAgICAgIHR5cGUgPSAncGljXzFfY2FyZCdcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uY29udGVudCB8fCBpdGVtLnRpdGxlIHx8IGl0ZW0uZGV0YWlsSW5mbyxcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS53aWR0aCArICfDlycgKyBpdGVtLmhlaWdodCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljVXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6IGl0ZW1VcmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiB0eXBlXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0U2VhcmNoUGFyc2UgPSAoZCkgPT4ge1xcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHVybDogJ1xcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIraW5wdXQnLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCLmkJzkvaDmg7PopoHnmoQuLi4uLi5cXFwiLFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi8J+UjVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgcnVsZXM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hNYXAgPSBbJ+iKseeToycsICfloIbns5YnLCAn54Ot6Zeo5o6o6I2QJywgJ+aJi+acuuWjgee6uCcsICflhajpnaLlsY8nLCAnMkvlo4HnurgnLCAn5pCc54uXJywgJ+W+ruWNmicsICfnmb7luqYnLCAn5aS45YWLJywgJ+aci+WPi+WciOiDjOaZrycsICflpLTlg48nLCAn6KGo5oOF5YyFJywgJzRL5aOB57q4JywgJ+mFjeWbvicsICfphY3lm77nsr7pgIknLCAnMzYwJywgJ+W/heW6lCcsICflhY3miqDlm74nLCAnR0lG57K+6YCJJywgJ+W5s+adv+Wjgee6uCcsICflhY3niYjmnYMnXTtcXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaE1hcC5mb3JFYWNoKChNYXAsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidGl0bGVcXFwiOiBNYXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzZWFyY2hfdXJsXFxcIjogXFxcImhpa2VyOi8vZW1wdHk/c2VhcmNoVGVybXM9KiomcGFnZT1meXBhZ2UmaW5kZXg9XFxcIiArIGksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImpzOiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9TZWFyY2gudmlldz9ydWxlPScrTVlfUlVMRS5fdGl0bGUpO1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCJzZWFyY2hLZXlcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ3NlYXJjaEtleScsaW5wdXQpXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifV0iLCJpY29uIjoiIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment