xiaomianao666

插件名:global_vip

Dec 20th, 2023
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_vip@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDlv6vnjKsv57qi5p2PL+WQq+e+nuiNiS/purvosYYvQXZQcm9uL+eah+WutuS8muaJgC85c2V4LzkxVFYv54yr5ZKqL+Wwj+Wkqem5hS/lhY3otLnnnIsKLy8gQG5hbWVzcGFjZSAgICBodHRwOi8vdGFtcGVybW9ua2V5Lm5ldC8KLy8gQHZlcnNpb24gICAgICAwLjM4Ci8vIEBkZXNjcmlwdGlvbiAg5p2l5LiN5Y+K6Kej6YeK5LqG77yM5b+r5LiK6L2m77yB77yB77yBCi8vIEBhdXRob3IgICAgICAgdzJmCiAKLy8gQG1hdGNoICAgICAgICBodHRwczovLyoua21razgwLmNvbS92aWRlb0NvbnRlbnQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5rbWtrODEuY29tL3ZpZGVvQ29udGVudC8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmtta2s4Mi5jb20vdmlkZW9Db250ZW50LyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlkZW9Db250ZW50LyoKLy8gQGluY2x1ZGUgICAgICAvXmh0dHBzOi8vd3d3Lmtta2tcZCtcLmNvbS4rJC8KIAovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi9wbGF5L3ZpZGVvLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyouaHhhYTEzOS5jb20vKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5oeGFhMTQwLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmh4YWExNDEuY29tLyoKLy8gQGluY2x1ZGUgICAgICAvXmh0dHBzOi8vd3d3Lmh4YWFcZCtcLmNvbS4rJC8KIAovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi9wbGF5dmlkZW8vKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi9saXZlLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovbGl2ZQogCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly9tYWRvdS5iZXQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vaW5kZXgKLy8gQG1hdGNoICAgICAgICBodHRwczovLyouY29tL25ldwovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vY2hhbm5lbC92aWRlb0xpc3QqCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmNvbS90YWdzKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vcmFua0xpc3QKLy8gQG1hdGNoICAgICAgICBodHRwczovL21hZG91LnR2LyoKIAovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vYWZrdjI4LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly9hZmt2MjkuY29tLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovL2Fma3YzMC5jb20vKgogCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL3ZpZGVvcy8qCiAKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovaW5kZXgvbW92aWUvcGxheS9pZC8qCiAKLy8gQG1hdGNoICAgICAgICBodHRwczovL2tkdDI5LmNvbS8qCiAKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlwL2luZGV4Lmh0bWwKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlwL2xpc3QtKi5odG1sCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL2luZGV4L2hvbWUuaHRtbAogCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly94dGVmdi54eXovKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8veHRlZXoueHl6LyoKLy8gQG1hdGNoICAgICAgICBodHRwczovL3h0ZWR5Lnh5ei8qCiAKLy8gQGljb24gICAgICAgICBodHRwczovL2luZGV4Lm1hZG91MTkudHYvanNvbi9pY29uLnBuZwovLyBAbGljZW5zZSAgICAgIE1JVAovLyBAZ3JhbnQgbm9uZQovLyA9PS9Vc2VyU2NyaXB0PT0KIAooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwogCiAgICAvKiBub25lIOWmguaenOS4jeS9v+eUqCB1bnNhZmVXaW5kb3cg77yM5b+r54yr5omL5py656uv77yM5ZCr576e6I2JcGPnq6/kvJrmkq3mlL7lpLHotKXvvIzljp/lm6DmnKrnn6XjgIIKICAgIOWOn+WboO+8mumAmui/hyBAcmVxdWlyZSDliqDovb3nmoRobHPmj5DnpLrmib7kuI3liLDvvIzpgJrov4dpbXBvcnRfanPlr7zlhaVvayAqLwogICAgbGV0IGVycl9jbnQgPSAwOwogCiAgICBmdW5jdGlvbiBpbXBvcnRfanMoc3JjKSB7CiAgICAgICAgbGV0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7CiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOwogICAgfQogICAgaW1wb3J0X2pzKCJodHRwczovL2Nkbi5zdGF0aWNmaWxlLm9yZy9qcXVlcnkvMS4xMC4yL2pxdWVyeS5taW4uanMiKTsKICAgIGltcG9ydF9qcygiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaGxzLmpzLzEuMS41L2hscy5taW4uanMiKTsKICAgIGxldCBub3RfbmVlZF9kcGxheWVyID0gbG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly90aGVhdi4qPy5jb20vdmlkZW9zLyIpICE9IG51bGwgfHwKICAgICAgICBsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3RoZS4qPy5mdW4vdmlkZW9zLyIpICE9IG51bGwgOwogICAgaWYgKCFub3RfbmVlZF9kcGxheWVyKSB7CiAgICAgICAgaW1wb3J0X2pzKCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9kcGxheWVyLzEuMjYuMC9EUGxheWVyLm1pbi5qcyIpOwogICAgfQogCiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpOwogICAgbGV0IG1pbiA9IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpOwogICAgbGV0IGNoYXQgPSBg5pyA6L+R5pSv5LuY5a6d5Y+R57qi5YyF5Yqb5bqm5b6I5aSn77yM6K+35aSn5a625omr56CB6aKG57qi5YyF5ZCO5LiA5a6a6KaB55So5o6J77yM5L2g55So5LqG5oiR5omN5pyJ5aWW5Yqx77yM6ISa5pys5YWN6LS577yM57u05oqk5LiN5piT77yM5aSa6LCi5pSv5oyB77yBYDsKICAgIGZ1bmN0aW9uIHNob3dfc3VwcG9ydF9hdXRob3IoKSB7CiAgICAgICAgdmFyIHNlY29uZHNMZWZ0ID0gMTA7CiAgICAgICAgdmFyIG15ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgbXlkaXYuaW5uZXJIVE1MID0gYDxkaXYgaWQ9Im15X2FkZF9kaXpoaTMiIHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7ei1pbmRleDogMTAwMDA7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC44KTsiPgogICAgICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiA1MCU7bGVmdDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO21heC13aWR0aDogOTAlO21heC1oZWlnaHQ6IDkwJTsiPgogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij4ke2NoYXR977yIJHtzZWNvbmRzTGVmdH1z5ZCO6Ieq5Yqo5YWz6Zet77yJPC9wPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pMi4xMDAwMjQueHl6LzIwMjIvMTEvMjMvdmxzbG1vLndlYnAiPjwvZGl2PjwvZGl2PmA7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaGVhZCIpLmFmdGVyKG15ZGl2KTsKIAogICAgICAgIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWNvbmRzTGVmdC0tOwogICAgICAgICAgICB2YXIgeHh4ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI215X2FkZF9kaXpoaTMgcCIpO2lmKHh4eCkgeHh4LmlubmVyVGV4dCA9IGAke2NoYXR977yIJHtzZWNvbmRzTGVmdH1z5ZCO6Ieq5Yqo5YWz6ZetKWA7CiAgICAgICAgICAgIGlmIChzZWNvbmRzTGVmdCA8PSAwKSB7CiAgICAgICAgICAgICAgICB2YXIgeXl5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI215X2FkZF9kaXpoaTMiKTsgaWYoeXl5KSB5eXkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh5eXkpOwogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCAxMDAwKTsKICAgIH0KIAogICAgLyog5Ye95pWw5Yqf6IO977ya5pi+56S66KeG6aKR5Zyw5Z2A77yM5Y+K5o+Q56S65L+h5oGvICovCiAgICBmdW5jdGlvbiBzaG93X3ZpZGVvVXJsKHZpZGVvVXJsLGRpemhpLCBmbGFnID0gMCkgewogICAgICAgIHZhciB4eHggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjbXlfYWRkX2RpemhpIik7CiAgICAgICAgaWYoZmxhZz09MCAmJiB4eHgpewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgaWYgKHh4eCkgeHh4LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoeHh4KTsKICAgICAgICB2YXIgbXlkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBteWRpdi5pbm5lckhUTUwgPSBgPGRpdiBpZD0ibXlfYWRkX2RpemhpIiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij4KICAgICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweDt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d29yZC1icmVhazogYnJlYWstYWxsOyI+6KeG6aKR5Zyw5Z2A77yaPGEgaHJlZj0iJHt2aWRlb1VybH0iIHRhcmdldD0iX2JsYW5rIj4ke3ZpZGVvVXJsfTwvYT48L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPumXrumimOWPjemmiCBvciDmlK/mjIHkvZzogIXor7c8YSBocmVmPSJodHRwczovL3NsZWF6eWZvcmsub3JnL3poLUNOL3NjcmlwdHMvNDU2NDk2IiB0YXJnZXQ9Il9ibGFuayI+44CQ54K55Ye75q2k5aSE44CRPC9hPu+8jOS9v+eUqOaEieW/q++8gTwvcD4KICAgICAgICAgICAgPC9kaXY+YDsKICAgICAgICBkaXpoaS5hZnRlcihteWRpdik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAKICAgIC8qIOWHveaVsOWKn+iDve+8muWKoOi9vURwbGF5ZXLmkq3mlL7op4bpopHjgIIg5Y+C5pWw6K+05piO77yadmlkZW9VcmzvvJrop4bpopHlnLDlnYAgZWzvvJrmkq3mlL7lmajliqDovb3kvY3nva4gZGl6aGk6IOWcsOWdgOaYvuekuuS9jee9riAgZmxhZzrmmK/lkKblvLrliLbliLfmlrAgKi8KICAgIGZ1bmN0aW9uIHBsYXlfdmlkZW8odmlkZW9VcmwsIGVsLCBkaXpoaSwgZmxhZyA9IDApIHsKIAogICAgICAgIGlmICghdmlkZW9VcmwgfHwgIWVsIHx8ICFkaXpoaSkgdGhyb3cgbmV3IEVycm9yKGDpg6jliIblj4LmlbDml6DmlYjvvIzop4bpopHlnLDlnYDvvJoke3ZpZGVvVXJsfeOAgeaSreaUvuWZqOS9jee9ru+8miR7ZWx944CB5o+Q56S65L2N572u77yaJHtkaXpoaX1gKTsKIAogICAgICAgIGxldCByZXQgPSBzaG93X3ZpZGVvVXJsKHZpZGVvVXJsLGRpemhpLGZsYWcpOwogICAgICAgIGlmKHJldCA9PSAwKXsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogCiAgICAgICAgaWYgKHdpbmRvdy5kcCkgewogICAgICAgICAgICB3aW5kb3cuZHAucGF1c2UoKQogICAgICAgICAgICB3aW5kb3cuZHAuZGVzdHJveSgpCiAgICAgICAgICAgIHdpbmRvdy5kcCA9IG51bGw7CiAgICAgICAgfQogCiAgICAgICAgLyogMi4g5paw5aKe5pKt5pS+5ZmoICovCiAgICAgICAgd2luZG93LmRwID0gbmV3IERQbGF5ZXIoewogICAgICAgICAgICBlbGVtZW50OiBlbCwKICAgICAgICAgICAgYXV0b3BsYXk6IHRydWUsCiAgICAgICAgICAgIHRoZW1lOiAnI0ZBREZBMycsCiAgICAgICAgICAgIGxvb3A6IHRydWUsCiAgICAgICAgICAgIGxhbmc6ICd6aCcsCiAgICAgICAgICAgIHNjcmVlbnNob3Q6IHRydWUsCiAgICAgICAgICAgIGhvdGtleTogdHJ1ZSwKICAgICAgICAgICAgcHJlbG9hZDogJ2F1dG8nLAogICAgICAgICAgICB2aWRlbzogewogICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybCwKICAgICAgICAgICAgICAgIHR5cGU6ICdobHMnCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKIAogICAgICAgIC8qIDMuIOiuvue9ruaSreaUvuWZqOa1ruWKqOaYvuekuizlubbmt7vliqDkuIDkuKrlhbfmnInkuIrovrnot53nmoTlhYTlvJ9kaXbpgb/lhY3opobnm5bkuIvpnaLnmoTlhoXlrrkgKi8KICAgICAgICAvL2VsLmNsYXNzTGlzdC5hZGQoIm15X2FkZF9oZWFkZXIiKTsKICAgICAgICAvL2VsLnN0eWxlICs9ICJ6LWluZGV4OiA5OTk7dG9wOiAwOyI7CiAgICAgICAgZWwuc3R5bGUucG9zaXRpb24gPSAnc3RpY2t5JzsKICAgICAgICBlbC5zdHlsZS56SW5kZXggPSAnOTk5JzsKICAgICAgICBlbC5zdHlsZS50b3AgPSAnMCc7CiAgICAgICAgdmFyIHh4eCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNteV9hZGRfc2libGluZyIpOwogICAgICAgIGlmKCF4eHgpewogICAgICAgICAgICB2YXIgc2libGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBzaWJsaW5nLmlkID0gIm15X2FkZF9zaWJsaW5nIjsKICAgICAgICAgICAgLy9zaWJsaW5nLnN0eWxlLm1hcmdpblRvcCA9IGVsLm9mZnNldEhlaWdodCArICdweCc7IC8vIOiuvue9ruWFhOW8n+WFg+e0oOeahOmhtumDqOi+uei3nQogICAgICAgICAgICBlbC5hZnRlcihzaWJsaW5nKTsKICAgICAgICB9CiAgICB9CiAKICAgIC8qIOWHveaVsOWKn+iDve+8muWQjOS4iu+8jOWPr+WIh+aNoua4heaZsOW6piAgKi8KICAgIGZ1bmN0aW9uIHBsYXlfdmlkZW8yKHZpZGVvVXJsLCB2aWRlb1VybDIsIHZpZGVvVXJsMywgdmlkZW9Vcmw0LCBlbCwgZGl6aGkpIHsKICAgICAgICAvKiAxLiDmmL7npLrlnLDlnYAgKi8KICAgICAgICB2YXIgbXlkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBteWRpdi5pbm5lckhUTUwgPSBgPGRpdiBpZD0ibXlfYWRkX2RpemhpIiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7ms6jmhI/vvJrpg6jliIbop4bpopHlj6ozNjBQ77yM5YiH5o2i5ZCO5peg5rOV5pKt5pS+6K+05piO5LiN5a2Y5Zyo6auY5riF5pmw5bqm54mI5pys77yB77yB77yB6KeG6aKR5Zyw5Z2A77yaCiAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweDt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d29yZC1icmVhazogYnJlYWstYWxsOyI+MzYwUO+8mjxhIGhyZWY9IiR7dmlkZW9Vcmx9IiB0YXJnZXQ9Il9ibGFuayI+JHt2aWRlb1VybH08L2E+PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHg7d29yZC13cmFwOiBicmVhay13b3JkO3dvcmQtYnJlYWs6IGJyZWFrLWFsbDsiPjQ4MFDvvJo8YSBocmVmPSIke3ZpZGVvVXJsMn0iIHRhcmdldD0iX2JsYW5rIj4ke3ZpZGVvVXJsMn08L2E+PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHg7d29yZC13cmFwOiBicmVhay13b3JkO3dvcmQtYnJlYWs6IGJyZWFrLWFsbDsiPjcyMFDvvJo8YSBocmVmPSIke3ZpZGVvVXJsM30iIHRhcmdldD0iX2JsYW5rIj4ke3ZpZGVvVXJsM308L2E+PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHg7d29yZC13cmFwOiBicmVhay13b3JkO3dvcmQtYnJlYWs6IGJyZWFrLWFsbDsiPjEwODBQ77yaPGEgaHJlZj0iJHt2aWRlb1VybDR9IiB0YXJnZXQ9Il9ibGFuayI+JHt2aWRlb1VybDR9PC9hPjwvcD4KICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7pl67popjlj43ppoggb3Ig5pSv5oyB5L2c6ICF6K+3PGEgaHJlZj0iaHR0cHM6Ly9zbGVhenlmb3JrLm9yZy96aC1DTi9zY3JpcHRzLzQ1NjQ5NiIgdGFyZ2V0PSJfYmxhbmsiPuOAkOeCueWHu+atpOWkhOOAkTwvYT7vvIzkvb/nlKjmhInlv6vvvIE8L3A+CiAgICAgICAgPC9kaXY+YDsKICAgICAgICBkaXpoaSAmJiBkaXpoaS5hZnRlcihteWRpdik7CiAKICAgICAgICAvKiAyLiDmlrDlop7mkq3mlL7lmaggKi8KICAgICAgICB3aW5kb3cuZHAgPSBuZXcgRFBsYXllcih7CiAgICAgICAgICAgIGVsZW1lbnQ6IGVsLAogICAgICAgICAgICBhdXRvcGxheTogdHJ1ZSwKICAgICAgICAgICAgdGhlbWU6ICcjRkFERkEzJywKICAgICAgICAgICAgbG9vcDogdHJ1ZSwKICAgICAgICAgICAgbGFuZzogJ3poJywKICAgICAgICAgICAgc2NyZWVuc2hvdDogdHJ1ZSwKICAgICAgICAgICAgaG90a2V5OiB0cnVlLAogICAgICAgICAgICBwcmVsb2FkOiAnYXV0bycsCiAgICAgICAgICAgIHZpZGVvOiB7CiAgICAgICAgICAgICAgICBxdWFsaXR5OiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnMzYwUCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdobHMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnNDgwUCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwyLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaGxzJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJzcyMFAnLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHZpZGVvVXJsMywKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2hscycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnMTA4MFAnLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHZpZGVvVXJsNCwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2hscycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBkZWZhdWx0UXVhbGl0eTogMCwKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQogCiAgICAvKiDlh73mlbDlip/og73vvJrlnKjnlYzpnaLkuIrmmL7npLrnqIvluo/plJnor6/vvIzkvr/kuo7liIbmnpAgICovCiAgICBmdW5jdGlvbiBzaG93X2Vycl9sb2coZXJyKSB7CiAgICAgICAgZXJyICYmIGNvbnNvbGUubG9nKGVycik7CiAgICAgICAgZXJyX2NudCsrOwogICAgICAgIGlmIChlcnJfY250ID09IDEwKSB7CiAgICAgICAgICAgIC8vZXJyX2NudCA9IDA7CiAgICAgICAgICAgIHZhciBteWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBteWRpdi5pbm5lckhUTUwgPSBgPGRpdiBpZD0ibXlfYWRkX2Vycl9sb2ciIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPgogICAgICAgICAgICDop6PmnpDlh7rplJnvvIwxLuajgOafpeaYr+WQpueZu+W9le+8gTIu6K+35LuU57uG6ZiF6K+7PGEgaHJlZj0iaHR0cHM6Ly9zbGVhenlmb3JrLm9yZy96aC1DTi9zY3JpcHRzLzQ1NjQ5NiIgdGFyZ2V0PSJfYmxhbmsiPuOAkOiEmuacrOivtOaYjuOAkTwvYT7mn6XnnIvmmK/lkKbmlK/mjIHkvaDnmoTlubPlj7Dnu4TlkIjvvIwKICAgICAgICAgICAg5aaC6ZyA5biu5Yqp6K+35aSN5Yi25Lul5LiL5YaF5a655Yiw6ISa5pys6K+E6K665Yy677yM562J5YCZ5L2c6ICF5aSE55CGISDor7fliqDkuIrkvb/nlKjnmoTlubPlj7Dnu4TlkIjvvIzlpoLvvJpjaHJvbWUgKyB0YW1wZXJtb25rZXkg44CCCiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPumUmeivr+S/oeaBr++8miR7ZXJyIHx8ICLlsJ3or5XlpJrmrKHku43nhLbmnKrojrflj5bliLDlnLDlnYAs5Y+v6IO95piv572R56uZ5bey5pu05pawLi4uIn08L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPuaTjeS9nOezu+e7n++8miR7bmF2aWdhdG9yLnBsYXRmb3JtfTwvcD4KICAgICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+5rWP6KeI5Zmo77yaJHtuYXZpZ2F0b3IudXNlckFnZW50fTwvcD4KICAgICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+5b2T5YmN5Zyw5Z2A77yaJHtsb2NhdGlvbi5ocmVmfTwvcD4KICAgICAgICAgICAgPC9kaXY+YDsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaGVhZCIpLmFmdGVyKG15ZGl2KTsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgfQogICAgfQogCiAgICBmdW5jdGlvbiBkb19sb2dpbigpewogICAgICAgIGxldCBwaG9uZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21vdmUtY2xpZW50LXVzZXItaW5mbycpKT8udXNlcj8udXNlcl9pbmZvPy5waG9uZTsKICAgICAgICBsZXQgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpOwogICAgICAgICAgICBldmVudC5pbml0RXZlbnQoImlucHV0IiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgaWYocGhvbmUpewogICAgICAgICAgICAvKiDoh6rliqjnmbvlvZUgKi8KICAgICAgICAgICAgbGV0IGFjY291bnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC52YW4tZmllbGRfX2NvbnRyb2wnKVswXTsKICAgICAgICAgICAgYWNjb3VudC52YWx1ZSA9IHBob25lOwogICAgICAgICAgICBhY2NvdW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgICAgICAgICBsZXQgcGFzc3dvcmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC52YW4tZmllbGRfX2NvbnRyb2wnKVsxXTsKICAgICAgICAgICAgcGFzc3dvcmQudmFsdWUgPSAiMTIzNDU2IjsKICAgICAgICAgICAgcGFzc3dvcmQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKS5jbGljaygpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAvKiDoh6rliqjms6jlhowgKi8KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LmxvZ2luXzFfMl8xJyk/LmNsaWNrKCk7CiAgICAgICAgICAgIGxldCBhY2NvdW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMF07CiAgICAgICAgICAgIGFjY291bnQudmFsdWUgPSBbIjEzMCIsICIxMzEiLCAiMTMyIiwgIjEzMyIsICIxMzUiLCAiMTM3IiwgIjEzOCIsICIxNzAiLCAiMTg3IiwgIjE4OSJdWyBNYXRoLmZsb29yKDEwICogTWF0aC5yYW5kb20oKSldICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwKTsKICAgICAgICAgICAgYWNjb3VudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgbGV0IHBhc3N3b3JkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMV07ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQudmFsdWUgPSAiMTIzNDU2IjsKICAgICAgICAgICAgcGFzc3dvcmQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgICAgICAgIGxldCBwYXNzd29yZDIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC52YW4tZmllbGRfX2NvbnRyb2wnKVsyXTsKICAgICAgICAgICAgcGFzc3dvcmQyLnZhbHVlID0gIjEyMzQ1NiI7CiAgICAgICAgICAgIHBhc3N3b3JkMi5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uW3R5cGU9c3VibWl0XScpLmNsaWNrKCk7CiAgICAgICAgfQogICAgfQogCiAgICBsZXQgZmxhZyA9IDA7CiAgICBsZXQgbGFzdF92aWRlb1VybCA9IG51bGw7CiAgICBmdW5jdGlvbiBnZXRfdmlkZW91cmwoKSB7CiAgICAgICAgbGV0IHZpZGVvVXJsID0gbnVsbCwgdmlkZW9VcmwyID0gbnVsbCwgdmlkZW9VcmwzID0gbnVsbCwgdmlkZW9Vcmw0ID0gbnVsbDsKICAgICAgICBsZXQgZWwgPSBudWxsOwogICAgICAgIGxldCBkaXpoaSA9IG51bGw7CiAgICAgICAgbGV0IHBsYXllciA9IG51bGw7CiAgICAgICAgbGV0IHNoaWthbiA9IG51bGw7CiAgICAgICAgbGV0IGFkcyA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKCFub3RfbmVlZF9kcGxheWVyICYmIHR5cGVvZihEUGxheWVyKSE9ICdmdW5jdGlvbicgKSB7CiAgICAgICAgICAgICAgICAvKiBEUGxheWVy6L+Y5pyq5Yqg6L295a6M5q+V5pe25bCx6Kej5p6Q5a6M6KeG6aKR5Zyw5Z2A77yM5Lya5a+86Ie05pKt5pS+5pe25oql6ZSZUmVmZXJlbmNlRXJyb3I6IERQbGF5ZXIgaXMgbm90IGRlZmluZWQgKi8KICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLmraPlnKjliqDovb1EUGxheWVyLi4uIik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog5bCP5aSp6bmFIOaUr+aMgeaJi+acuiArIFBDICovCiAgICAgICAgICAgIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3h0ZS4qPy54eXovIy9EZXRhaWxzIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiW+Wwj+Wkqem5hV3op4bpopHpobXpnaLvvIzmraPlnKjop6PmnpAuLi4iKTsKICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5NcHBsYXkiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYucGxheWVyQm94Iik7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ3Zhbi1vdmVyZmxvdy1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5WaXB6Y2VCb3giKTsgaWYgKGFkcykgYWRzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYWRzKTsvKmFwcCovCiAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuZWwtZGlhbG9nX19ib2R5Iik7IGlmIChhZHMpIGFkcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFkcyk7LypwYyovCiAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudi1tb2RhbCIpOyBpZiAoYWRzKSBhZHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhZHMpOy8qcGMqLwogICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIvvvIjkuI3pnIDopoHvvIkgKi8KICAgICAgICAgICAgICAgIC8qIDIu6Kej5p6Q55yf5a6e5Zyw5Z2AICovCiAgICAgICAgICAgICAgICB2aWRlb1VybCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuZGV0YWlsc0JveCIpfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnVzZXIiKSk/Ll9fdnVlX18/LmRldGFpbHNkYXRhPy52b2RfZGlyZWN0X3BsYXlfdXJsOwogICAgICAgICAgICAgICAgaWYocGxheWVyICYmIHZpZGVvVXJsKXsKICAgICAgICAgICAgICAgICAgICBpZih2aWRlb1VybCA9PSBsYXN0X3ZpZGVvVXJsKXsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3ZpZGVvVXJsID0gdmlkZW9Vcmw7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygibGFzdF92aWRlb1VybDoiLCBsYXN0X3ZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAgICAgLyogMy7np7vpmaTlub/lkYogKi8KICAgICAgICAgICAgICAgICAgICAgICAgLy9hZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTXBwbGF5RmgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICAgICAgcGxheV92aWRlbyh2aWRlb1VybCwgcGxheWVyLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuRGV0YWlsc29mVGhlVGl0bGUiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYucGxheVZpZGVvSW5mbyIpLDEpOwogICAgICAgICAgICAgICAgICAgICAgICAvL3BsYXllci5wYXJlbnROb2RlLmJlZm9yZShhZHMpOwogICAgICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgICAgICAvL2NsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlvlsI/lpKnpuYVd6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog54yr5ZKqdmlwICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vd3d3Li4qPy5jb20vdmlwLyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdi5jb250ZW50LWl0ZW0gIGEudmlkZW8tcGljIik/LmZvckVhY2goIGEgPT4ge2EuaHJlZiA9IGEuaHJlZi5yZXBsYWNlKCIvdmlwL3BsYXktIiwiL3NoaXBpbi9kZXRhaWwtIil9KTsKICAgICAgICAgICAgICAgIC8vY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJb54yr5ZKqXeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIDlzZXggKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj8vaW5kZXgvbW92aWUvcGxheS9pZC8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZHBsYXllciIpOwogICAgICAgICAgICAgICAgZGl6aGkgPSBkb2N1bWVudC5ib2R5LmlubmVySFRNTC5tYXRjaCgibW92aWVzLyguKj8pX3ByZXZpZXcuanBnLnR4dCIpWzFdLnNwbGl0KCcvJyk7LyogJCgic2NyaXB0IikudGV4dCgpICovCiAgICAgICAgICAgICAgICAvKiAxLueCueWHu+ivleeci++8iOS4jemcgOimge+8iSAqLwogICAgICAgICAgICAgICAgaWYgKHBsYXllciAmJiBkaXpoaSAmJiBmbGFnID09IDApIHsKICAgICAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gYGh0dHBzOi8vOXMubTMuYmNhODM0ZDYwMjU3LmNvbS8ke2RpemhpWzBdfS8ke2RpemhpWzFdfS8zNjBQLyR7ZGl6aGlbMl19XzM2MFAubTN1OGA7IGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsMiA9IGBodHRwczovLzlzLm0zLmJjYTgzNGQ2MDI1Ny5jb20vJHtkaXpoaVswXX0vJHtkaXpoaVsxXX0vNDgwUC8ke2RpemhpWzJdfV80ODBQLm0zdThgOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AMjoiLCB2aWRlb1VybDIpOwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsMyA9IGBodHRwczovLzlzLm0zLmJjYTgzNGQ2MDI1Ny5jb20vJHtkaXpoaVswXX0vJHtkaXpoaVsxXX0vNzIwUC8ke2RpemhpWzJdfV83MjBQLm0zdThgOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AMzoiLCB2aWRlb1VybDMpOwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsNCA9IGBodHRwczovLzlzLm0zLmJjYTgzNGQ2MDI1Ny5jb20vJHtkaXpoaVswXX0vJHtkaXpoaVsxXX0vMTA4MFAvJHtkaXpoaVsyXX1fMTA4MFAubTN1OGA7IGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA0OiIsIHZpZGVvVXJsNCk7CiAgICAgICAgICAgICAgICAgICAgLyogMy52aXDop4bpopHpnIDopoHnp7vpmaTnmbvlvZXmoYYgKi8KICAgICAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjbG9naW4tdGlwLW1vZGFsIik7IGlmIChhZHMpIGFkcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFkcyk7CiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZpcC10aXAtbW9kYWwiKTsgaWYgKGFkcykgYWRzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYWRzKTsKICAgICAgICAgICAgICAgICAgICAvKiA0LuaSreaUvuato+eJhyAqLwogICAgICAgICAgICAgICAgICAgIHBsYXlfdmlkZW8yKHZpZGVvVXJsLCB2aWRlb1VybDIsIHZpZGVvVXJsMywgdmlkZW9Vcmw0LCBwbGF5ZXIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5ub3RpY2UiKSk7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAvKiAzLjEg5YWN6LS56KeG6aKR6ZyA6KaB5Yqg6L295pKt5pS+5ZCO56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnBhdXNlLWFkLWltZ2JveCIpOyBpZiAoYWRzKSBhZHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhZHMpOwogICAgICAgICAgICAgICAgICAgIC8qIDUu5YGc5q2i5a6a5pe25ZmoICovCiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiWzlzZXhd6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog55qH5a625Lya5omAICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vd3d3LmhqaHMuKj8vdmlkZW9zLyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkcGxheWVyIik7CiAgICAgICAgICAgICAgICAvKiAxLueCueWHu+ivleeci++8iOS4jemcgOimge+8iSAqLwogICAgICAgICAgICAgICAgaWYgKHBsYXllciAmJiB3aW5kb3cuYXBpPy5xdWFsaXR5Py51cmwpIHsKICAgICAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gd2luZG93LmFwaS5xdWFsaXR5LnVybC5yZXBsYWNlKCJzdW8uIiwgIiIpLnJlcGxhY2UoIl9zdW8iLCAiIik7IGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIC8qIDMu56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBwbGF5ZXIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5oZWFkbGluZSIpKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiW+eah+WutuS8muaJgF3op4bpopHpobXpnaLvvIzmnKrojrflj5bliLDlnLDlnYDvvIznu6fnu63lsJ3or5UuLi4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvKiBUaGUgQVYgUHJvbu+8jOWFvOWuueaJi+acuiArIFBDCiAgICAgICAgICAgIOW3suefpee8uumZtzog6Iul5L2/55SoRHBsYXllciwg5YiZIGNocm9tZS9zYWZhcmkg5pKt5pS+5q2j5bi477yI5peg5rOV5paw5qCH562+5pKt5pS+77yM5Y+v6IO95pyJ6ZmQ5Yi277yJ77yMa2l3aSBtM3U45Zyw5Z2A6I635Y+W5oiQ5Yqf77yM5L2G5pKt5pS+5aSx6LSl77yBCiAgICAgICAgICAgIOW3suefpee8uumZtzog5Y+v6IO9572R56uZ5a2Y5Zyo6ZmQ5Yi277yM5o6n5Yi25Y+w5LitcGxheWVyLmFwaSgiaGxzIinmnInlgLzvvIzkvYbohJrmnKzojrflj5bkuLpudWxsIOOAguWPquacieS9v+eUqCB1bnNhZmVXaW5kb3cucGxheWVyLmFwaSgiaGxzIinog73ojrflj5bliLAg77yMCiAgICAgICAgICAgIOS9hueUseS6jnVzZXJzY3JpcHTkuI3mlK/mjIF1bnNhZmVXaW5kb3fvvIzmlYVzYWZhcmnmtY/op4jlmagrdXNlcnNjcmlwdOaXoOaViOOAguaUueS4uuS7jjxzY3JpcHQvPuWGheWuueafpeaJvm0zdTjlnLDlnYAgKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly90aGVhdi4qPy5jb20vdmlkZW9zLyIpICE9IG51bGwgfHwKICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly90aGUuKj8uZnVuL3ZpZGVvcy8iKSAhPSBudWxsICkgewogICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIvvvIjkuI3pnIDopoHvvIkgKi8KICAgICAgICAgICAgICAgIC8qIDIu6Kej5p6Q55yf5a6e5Zyw5Z2AICovCiAgICAgICAgICAgICAgICB2aWRlb1VybCA9IHdpbmRvdy5wbGF5ZXI/LmFwaSgiaGxzIik/LnVybD8uc3BsaXQoJz8nKVswXSB8fCB3aW5kb3cubTNreT8uc3BsaXQoJz8nKVswXTsgLyog6K+l5pa55qGI5Zyoc2FmYXJp5rWP6KeI5ZmoK3VzZXJzY3JpcHTkuIvml6DmlYggKi8KICAgICAgICAgICAgICAgIC8qIHZpZGVvVXJsID0gZG9jdW1lbnQuYm9keS5pbm5lckhUTUwubWF0Y2goImh0dHBzOiguKj8pLm0zdTgiKVswXTsgICQoInNjcmlwdCIpLnRleHQoKSAqLwogICAgICAgICAgICAgICAgaWYgKHZpZGVvVXJsICYmIHR5cGVvZihQbGF5ZXJqcyk9PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIC8qIDMu56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnRhYmxlIik7IGlmIChhZHMpIGFkcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5zcG9uc29yIik7IGlmIChhZHMpIGFkcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5yYXRlX2JveCIpOyBpZiAoYWRzKSBhZHMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZ3JlZW4iKTsgaWYgKGFkcykgYWRzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICAvKiBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucGxheWVyIiksIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImgyLnRpdGxlIikpO+ivpeaWueahiOWcqGtpd2krdGVtcGVybW9ua2V55LiL5peg5pWIICovCiAgICAgICAgICAgICAgICAgICAgUGxheWVyanMoeyBpZDogImxheWVyIiwgZmlsZTogdmlkZW9VcmwsIGF1dG9wbGF5OiAxIH0pOy8vaWQ6ICJwbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgLyogNS7lgZzmraLlrprml7blmaggKi8KICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJbVGhlIEFWIFByb25d6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog5b+r54yr77yM5YW85a655omL5py6ICsgUEMgKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj9rbS4qPy5jb20vdmlkZW9Db250ZW50LyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIC8qIDEu54K55Ye76K+V55yL77yI5LiN6ZyA6KaB77yJICovCiAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgdmlkZW9VcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdmlkZW9Db250ZW50Iik/Ll9fdnVlX18/LmZvcm1hdFVybDsKICAgICAgICAgICAgICAgIGlmICh2aWRlb1VybCkgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIC8qIDMu56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmV4Y2hhbmdlQmciKTsgaWYgKGFkcyAhPSBudWxsKSBhZHMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAvKiA0LuaSreaUvuato+eJhyAqLwogICAgICAgICAgICAgICAgICAgIHBsYXlfdmlkZW8odmlkZW9VcmwsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5iYWNrSW1nIiksIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi52aWRlb1RpdGxlIikgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2IHAubmFtZSIpKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlvlv6vnjKtd6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLyog57qi5p2P77yM5YW85a655omL5py6ICsgUEMgKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj8uaHhhYS4qPy5jb20vIy9tb3Zlcy9wbGF5dmlkZW8vIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgbGV0IGxvZ2luID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnBsYXlfdmlkZW9fd2RsXzJfMiIpOwogICAgICAgICAgICAgICAgc2hpa2FuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnNoaWthbiIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5vbl9wbGF5Iik7CiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIgZGl2I21zZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wbGF5X3ZpZGVvXzEgZGl2Iik7CiAgICAgICAgICAgICAgICBpZihsb2dpbil7CiAgICAgICAgICAgICAgICAgICAgLyogMC7nmbvlvZUgb3Ig5rOo5YaMICovCiAgICAgICAgICAgICAgICAgICAgbG9naW4uY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICBkb19sb2dpbigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hpa2FuKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIsgKi8KICAgICAgICAgICAgICAgICAgICBzaGlrYW4uY2xpY2soKTsgY29uc29sZS5sb2coIueCueWHu+ivleeci++8gSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAocGxheWVyPy5fX3Z1ZV9fPy5wbGF5VXJsKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMi7op6PmnpDnnJ/lrp7lnLDlnYAgKi8KICAgICAgICAgICAgICAgICAgICBsZXQgdmlkZW9VcmwgPSBwbGF5ZXIuX192dWVfXy5wbGF5VXJsLnNwbGl0KCcmdGltZScpWzBdOwogICAgICAgICAgICAgICAgICAgIGxldCByZSA9IHZpZGVvVXJsLnNwbGl0KCIvIilbMl07CiAgICAgICAgICAgICAgICAgICAgdmlkZW9VcmwgPSB2aWRlb1VybC5yZXBsYWNlKHJlICsgJy9zaGlrYW5zaGlwaW4nLCAnanNjZG4ua3Vua3VuaG9tZS54eXonKTsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAvKiAzLuenu+mZpOivleeciyAqLwogICAgICAgICAgICAgICAgICAgIHBsYXllci5fX3Z1ZV9fLnBsYXllcj8uaGxzPy5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIgZGl2I21zZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wbGF5X3ZpZGVvXzEgZGl2LmRwbGF5ZXIiKSwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Lm1vdmVfbmFtZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wbGF5X21haW5fMSIpKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOyBjb25zb2xlLmxvZygi5YGc5q2i5a6a5pe25Zmo77yBIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiW+e6ouadj13op4bpopHpobXpnaLvvIzmnKrojrflj5bliLDlnLDlnYDvvIznu6fnu63lsJ3or5UuLi4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvKiDnuqLmnY/vvIzmiYvmnLrnn63op4bpopEgKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj8vIy9zaG90VmlkZW9MaXN0IikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgcGxheWVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnNob3V0X2xpc3QiKTsKICAgICAgICAgICAgICAgIGlmKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJidXR0b24jcG9qaWUiKSl7CiAgICAgICAgICAgICAgICAgICAgLyogMS4g5pi+56S65Zyw5Z2AICovCiAgICAgICAgICAgICAgICAgICAgdmFyIG15ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgICAgbXlkaXYuaW5uZXJIVE1MID0gYDxwIGlkPSJteV9hZGRfZGl6aGkiIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPjxidXR0b24gaWQ9InBvamllIj7ngrnmraTnoLTop6M8L2J1dHRvbj7lkI7vvIzop4bpopHmoIfpopjliY3kvJrlh7rnjrDigJzinJTigJ3lrZfmoLfvvIzngrnlh7vmoIfpopjlsIbmiZPlvIDmlrDpobXpnaLnnIvop4bpopHvvIE8L3A+YDsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYudmFuLW5hdi1iYXJfX2NvbnRlbnQiKS5hZnRlcihteWRpdik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKHBsYXllciAmJiBwbGF5ZXIuX192dWVfXy5wbGF5TGlzdDEpewogICAgICAgICAgICAgICAgICAgIC8qIDIu54K56Kej56C06KejICovCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYnV0dG9uI3BvamllIikub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2aWRlb1VybF9saXN0ID0gcGxheWVyLl9fdnVlX18ucGxheUxpc3QxOyBjb25zb2xlLmxvZygi55u05pKt5Zyw5Z2AOiIsIHZpZGVvVXJsX2xpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGl2bGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdi5ib3hfbGVmdCBkaXYuYm94X3B1YmxpYyBkaXYuYm94X3B1YmxpY18xXzIgIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZW4gPSAodmlkZW9VcmxfbGlzdC5sZW5ndGggPiBkaXZsaXN0Lmxlbmd0aCkgPyBkaXZsaXN0Lmxlbmd0aCA6IHZpZGVvVXJsX2xpc3QubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZsaXN0W2ldLmlubmVySFRNTCA9IGA8cD48YSBocmVmPSJodHRwczovL2pzY2RuLmxvcmR6aGFuZy54eXovJHt2aWRlb1VybF9saXN0W2ldLnNufS8xMDAwMGtiL2hscy9pbmRleC5tM3U4IiB0YXJnZXQ9Il9ibGFuayI+4pyUJHtkaXZsaXN0W2ldLmlubmVyVGV4dH08L2E+PC9wPmA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLyog5Y+z6L6555qEICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsX2xpc3QgPSBwbGF5ZXIuX192dWVfXy5wbGF5TGlzdDI7IGNvbnNvbGUubG9nKCLnm7Tmkq3lnLDlnYA6IiwgdmlkZW9VcmxfbGlzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpdmxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuYm94X3JpZ2h0IGRpdi5ib3hfcHVibGljIGRpdi5ib3hfcHVibGljXzFfMiAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKHZpZGVvVXJsX2xpc3QubGVuZ3RoID4gZGl2bGlzdC5sZW5ndGgpID8gZGl2bGlzdC5sZW5ndGggOiB2aWRlb1VybF9saXN0Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZsaXN0W2ldLmlubmVySFRNTCA9IGA8cD48YSBocmVmPSJodHRwczovL2pzY2RuLmxvcmR6aGFuZy54eXovJHt2aWRlb1VybF9saXN0W2ldLnNufS8xMDAwMGtiL2hscy9pbmRleC5tM3U4IiB0YXJnZXQ9Il9ibGFuayI+4pyUJHtkaXZsaXN0W2ldLmlubmVyVGV4dH08L2E+PC9wPmA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIC8qIDMu5YGc5q2i5a6a5pe25ZmoICovCiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog5ZCr576e6I2J6KeG6aKRIO+8jOWFvOWuueaJi+acuiArIFBDICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goIi9wbGF5L3ZpZGVvLyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHNoaWthbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52YW4taWNvbi1wbGF5LWNpcmNsZS1vIikgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LmN1cnNvci1wb2ludGVyLmZsZXgtY2VudGVyLnNwYWNlLXgtMSIpOyAvKiDliY3pnaLkuLrmiYvmnLrjgILlkI7pnaLkuLpQQyAqLwogICAgICAgICAgICAgICAgcGxheWVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2I3ZpZGVvQ29udGVudFBsYXllciIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN2X3ByaXNtIik7CiAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZml4ZWRUcnlXYXRjaFNob3dCdXR0b25MaW5lIik7CiAgICAgICAgICAgICAgICBpZiAoc2hpa2FuKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIsgKi8KICAgICAgICAgICAgICAgICAgICBzaGlrYW4uY2xpY2soKTsgY29uc29sZS5sb2coIueCueWHu+ivleeci++8gSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAocGxheWVyPy5fX3Z1ZV9fPy52aWRlb1VybCkgewogICAgICAgICAgICAgICAgICAgIC8qIDIu6Kej5p6Q55yf5a6e5Zyw5Z2AICovCiAgICAgICAgICAgICAgICAgICAgdmlkZW9VcmwgPSBwbGF5ZXIuX192dWVfXy52aWRlb1VybC5zcGxpdCgvc3RhcnQuKj9zaWduLykuam9pbignc2lnbicpOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAvKiAzLuenu+mZpOivleeci+OAgeW5v+WRiiAqLwogICAgICAgICAgICAgICAgICAgIHBsYXllci5fX3Z1ZV9fLnZpZGVvT2JqICYmIHBsYXllci5fX3Z1ZV9fLnZpZGVvT2JqLmhscyAmJiBwbGF5ZXIuX192dWVfXy52aWRlb09iai5obHMuZGVzdHJveSgpOwogICAgICAgICAgICAgICAgICAgIGFkcyAmJiAoYWRzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIpOwogICAgICAgICAgICAgICAgICAgIC8qIDQu5pKt5pS+5q2j54mHICovCiAgICAgICAgICAgICAgICAgICAgcGxheV92aWRlbyh2aWRlb1VybCwgcGxheWVyLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYucHVibGljVmlkZW9JbmZvQm94IHAubmFtZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5pbmZvQXJlYUJveCIpKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOyBjb25zb2xlLmxvZygi5YGc5q2i5a6a5pe25Zmo77yBIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiW+WQq+e+nuiNiV3op4bpopHpobXpnaLvvIzmnKrojrflj5bliLDlnLDlnYDvvIznu6fnu63lsJ3or5UuLi4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvKiDlkKvnvp7ojYnvvIxQQ+err++8jOebtOaSrSAqLwogICAgICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCIvbGl2ZS8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuVmlkZW9BdXRoQWRtaW5CZyIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiNsaXZlUGxheWVyIik7CiAgICAgICAgICAgICAgICB2aWRlb1VybCA9IHBsYXllci5fX3Z1ZV9fLnZpZGVvVXJsIHx8IHBsYXllci5fX3Z1ZV9fLnZpZGVvQ29udGVudC5wdWxsOyBjb25zb2xlLmxvZygi55u05pKt5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgIHBsYXlfdmlkZW8odmlkZW9VcmwsIHBsYXllciwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnVzZXJJbmZvIHAubmFtZSIpKTsKICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOWQq+e+nuiNie+8jOaJi+acuuerr++8jOebtOaSrSAqLwogICAgICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCIvL2g1Lio/L2xpdmUiKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYjcHVibGljTGl2ZUxpc3RNb2R1bGUiKTsKICAgICAgICAgICAgICAgIGxldCB2aWRlb1VybF9saXN0ID0gcGxheWVyLl9fdnVlX18ubGlzdDsgY29uc29sZS5sb2coIuebtOaSreWcsOWdgDoiLCB2aWRlb1VybF9saXN0KTsKICAgICAgICAgICAgICAgIGxldCBkaXZsaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgidWwubGl2ZUxpc3RCZyBsaSAuYm90dG9tIik7CiAgICAgICAgICAgICAgICBsZXQgbGVuID0gKHZpZGVvVXJsX2xpc3QubGVuZ3RoID4gZGl2bGlzdC5sZW5ndGgpID8gZGl2bGlzdC5sZW5ndGggOiB2aWRlb1VybF9saXN0Lmxlbmd0aDsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBkaXZsaXN0W2ldLmlubmVySFRNTCArPSAnPHA+PGEgaHJlZj0iJyArIHZpZGVvVXJsX2xpc3RbaV0ucHVsbCArICciIHRhcmdldD0iX2JsYW5rIj4nICsgdmlkZW9VcmxfbGlzdFtpXS5wdWxsICsgJzwvYT48L3A+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICAvKiAxLiDmmL7npLrlnLDlnYAgKi8KICAgICAgICAgICAgICAgIG15ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICBteWRpdi5pbm5lckhUTUwgPSAnPHAgaWQ9Im15X2FkZF9kaXpoaSIgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+5o+Q56S677ya5b2m56WW5Lus77yM6K+354K55Ye75Zu+54mH5LiL5pa555qE6ZO+5o6l55yL56C06Kej5ZCO55qE55u05pKt6KeG6aKR77yBPC9wPic7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYudG9wQmFubmVyQmciKS5hZnRlcihteWRpdik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvKiDpurvosYZUViAqLyAvKiA5MVRWICovCiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgidmlwX2xldmVsIiwgJzEnKTsvL3RvZG865Yqg5Zyw5Z2A5o+Q56S6CiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCLlnLDlnYDmnKrljLnphY3vvIzlgZzmraLlrprml7blmaghIik7Ly/purvosYZUVuavj+asoeWIt+aWsOWQjuS8muWwhnZpcF9sZXZlbOabtOaWsOS4ujAKICAgICAgICAgICAgICAgIC8vY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggKGVycikgewogICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtlcnJ9YCk7CiAgICAgICAgICAgIHNob3dfZXJyX2xvZyhlcnIpOwogICAgICAgIH0KICAgIH0KIAogICAgbGV0IG15X3RpbWVyID0gc2V0SW50ZXJ2YWwoZ2V0X3ZpZGVvdXJsLCAyMDAwKTsKIAogICAgdmFyIG9sZGhyZWYgPSBsb2NhdGlvbi5ocmVmOwogICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChsb2NhdGlvbi5ocmVmICE9IG9sZGhyZWYpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coIuebkeWQrOWIsOWcsOWdgOWPmOWMlizlho3mrKHlkK/liqjjgJDojrflj5bop4bpopHlrprml7blmajjgJEhIik7CiAgICAgICAgICAgIG9sZGhyZWYgPSBsb2NhdGlvbi5ocmVmOwogICAgICAgICAgICBlcnJfY250ID0gMDsKICAgICAgICAgICAgbXlfdGltZXIgPSBzZXRJbnRlcnZhbChnZXRfdmlkZW91cmwsIDIwMDApOwogICAgICAgIH0KICAgICAgICBpZih0b2RheSAhPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9kYXlfaXNfc2hvdycpICYmIE1hdGguYWJzKG5ldyBEYXRlKCkuZ2V0TWludXRlcygpIC0gbWluKSA+IDMgKXsvL+S7iuWkqeWcqOW9k+WJjeermeeCueayoeW8uei/h++8jOS4lOWcqOW9k+WJjemhtemdouWBnOeVmTPliIbpkp/ku6XkuIrml7YKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oInRvZGF5X2lzX3Nob3ciLCB0b2RheSk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCLmlK/mjIHkvZzogIXlvLnnqpchIik7CiAgICAgICAgICAgIC8vc2hvd19zdXBwb3J0X2F1dGhvcigpOwogICAgICAgIH0KICAgIH0sIDEwMDApOwogCn0pKCk7
Add Comment
Please, Sign In to add comment