Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_网盘智能识别助手@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICAgICAgIOe9keebmOaZuuiDveivhuWIq+WKqeaJiwovLyBAbmFtZXNwYWNlICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3N5aHl6MTk5MC9wYW5BSQovLyBAdmVyc2lvbiAgICAgICAgICAgMi4wLjEKLy8gQGF1dGhvciAgICAgICAgICAgIFlvdVhpYW9Ib3UsNTJmaXNoZXIKLy8gQGRlc2NyaXB0aW9uICAgICAgIOaZuuiDveivhuWIq+mAieS4reaWh+Wtl+S4reeahPCflJfnvZHnm5jpk77mjqXlkozwn5SR5o+Q5Y+W56CB77yM6K+G5Yir5oiQ5Yqf5omT5byA572R55uY6ZO+5o6l5bm26Ieq5Yqo5aGr5YaZ5o+Q5Y+W56CB77yM55yB5Y675omL5Yqo5aSN5Yi25o+Q5Y+W56CB5Zyo6L6T5YWl55qE54Om5oG844CC5pSv5oyB6K+G5YirIOKcheeZvuW6pue9keebmCDinIXpmL/ph4zkupHnm5gg4pyF6IW+6K6v5b6u5LqRIOKcheiTneWlj+S6kSDinIXlpKnnv7zkupHnm5gg4pyF56e75Yqo5LqR55uYIOKchei/hembt+S6keebmCDinIUxMjPkupHnm5gg4pyFMzYw5LqR55uYIOKchTExNee9keebmCDinIXlpbbniZvlv6vkvKAg4pyF5Z+O6YCa572R55uYIOKcheWkuOWFi+e9keebmCDinIVGbG93VXPmga/mtYEg4pyFQ2hyb21lIOaJqeWxleWVhuW6lyDinIVFZGdlIOaJqeWxleWVhuW6lyDinIVGaXJlZm94IOaJqeWxleWVhuW6lyDinIVXaW5kb3dzIOW6lOeUqOWVhuW6l+OAggovLyBAbGljZW5zZSAgICAgICAgICAgQUdQTC0zLjAtb3ItbGF0ZXIKLy8gQGhvbWVwYWdlICAgICAgICAgIGh0dHBzOi8vd3d3LnlvdXhpYW9ob3UuY29tL3Rvb2wvaW5zdGFsbC1wYW5haS5odG1sCi8vIEBzdXBwb3J0VVJMICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vc3loeXoxOTkwL3BhbkFJCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vKi8qCi8vIEByZXF1aXJlICAgICAgICAgICBodHRwczovL3JlZ2lzdHJ5Lm5wbW1pcnJvci5jb20vc3dlZXRhbGVydDIvMTAuMTYuNi9maWxlcy9kaXN0L3N3ZWV0YWxlcnQyLm1pbi5qcwovLyBAcmVxdWlyZSAgICAgICAgICAgaHR0cHM6Ly9yZWdpc3RyeS5ucG1taXJyb3IuY29tL2hvdGtleXMtanMvMy4xMy4zL2ZpbGVzL2Rpc3QvaG90a2V5cy5taW4uanMKLy8gQHJlc291cmNlICAgICAgICAgIHN3YWxTdHlsZSBodHRwczovL3JlZ2lzdHJ5Lm5wbW1pcnJvci5jb20vc3dlZXRhbGVydDIvMTAuMTYuNi9maWxlcy9kaXN0L3N3ZWV0YWxlcnQyLm1pbi5jc3MKLy8gQHJ1bi1hdCAgICAgICAgICAgIGRvY3VtZW50LWlkbGUKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX29wZW5JblRhYgovLyBAZ3JhbnQgICAgICAgICAgICAgR01fc2V0VmFsdWUKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2dldFZhbHVlCi8vIEBncmFudCAgICAgICAgICAgICBHTV9yZWdpc3Rlck1lbnVDb21tYW5kCi8vIEBncmFudCAgICAgICAgICAgICBHTV9nZXRSZXNvdXJjZVRleHQKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2luZm8KLy8gQGljb24gICAgICAgICAgICAgIGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0F4TWpnZ01USTRJajQ4Y0dGMGFDQmtQU0pOTVRBekxqWWdNVEEzTGpSak15NDFMVEl1TWlBNExqa3ROaTR4SURFekxqZ3RNVEl1TlhNM0xqTXRNVEl1TlNBNExqVXRNVFl1TldNdU5TMHhMamNnTWk0eUxUY3VOU0F5TGpJdE1UUXVOeUF3TFRFd0xqRXRNeTR6TFRJMUxqRXRNVFV1TkMwek5pNDRMVEUwTGpVdE1UUXRNekl1TVMweE5DNHpMVE0xTGpjdE1UUXVNeTA0SURBdE1UVXVOeUF4TGprdE1qSXVOaUExTGpKRE5EUWdNak1nTXpVdU55QXpNUzQwSURNd0xqZ2dOREV1TjJNdE1TNHpJREl1T0MwMElEUXVOeTAzTGpFZ05TMDBJQzR6TFRjdU5TQTBMalF0T0M0NUlEa3VOaTB1TlNBeExqa3RNUzQySURNdU5TMHpMakVnTkM0M1F6UXVOQ0EyTmk0NElEQWdOelV1TnlBd0lEZzFZekFnTmk0NElESXVNeUF4TXk0eElEWXVNU0F4T0M0eUlEVXVOU0EzTGpRZ01UUXVNaUF4TWk0eUlESTBJREV5TGpKb05EY3VNV00wTGpRZ01DQXhNUzB1TlNBeE9DNHpMVE11TlNBekxqSXRNUzQwSURVdU9TMHpJRGd1TVMwMExqVjZJaUJtYVd4c1BTSWpORFEwSWk4K1BIQmhkR2dnWkQwaVRURXhPUzQ0SURZMExqTmpMakV0TVRjdU1TMHhNQzQwTFRJNExURXlMalV0TXpBdU1VTTVOU0F5TWk0eElEYzVMamtnTWpFdU9DQTNOaTQ1SURJeExqaGpMVEUzTGpZZ01DMHpNeTR6SURFd0xqVXRNemt1T1NBeU5pNDNMUzQySURFdU15MHhMamdnTWk0ekxUTXVOQ0F5TGpOb0xTNDBZeTAxTGpnZ01DMHhNQzQySURRdU9DMHhNQzQySURFd0xqZDJMalZqTUNBeExqUXRMamdnTWk0MkxURXVPU0F6TGpORE1UTXVOQ0EyT1NBNExqZ2dOell1T0NBNExqZ2dPRFZqTUNBeE1pNHlJRGt1T1NBeU1pNHpJREl5TGpJZ01qSXVNMmcwTlM0eVl6TXVOaTB1TVNBeE55NDJMUzQ1SURJNUxqWXRNVElnTWk0NUxUSXVPQ0F4TXk0NUxURXpMamNnTVRRdE16RjZJaUJtYVd4c1BTSWpaR0k0TkRFeUlpOCtQSEJoZEdnZ1pEMGlUVEV4TUM0NElEVTNMalJzTGpJZ015NHpZekFnTVM0ekxURXVNU0F5TGpRdE1pNHpJREl1TkMweExqTWdNQzB5TGpNdE1TNHhMVEl1TXkweUxqUnNMUzR4TFRJdU9IWXRMak5qTUMweExqSXVPUzB5TGpJZ01pNHhMVEl1TTJndU0yTXVOeUF3SURFdU15NHpJREV1Tnk0M0xTNHlMakV1TXk0MUxqUWdNUzQwZW0wdE15NHpMVEV3TGpOak1DQXhMakl0TVNBeUxqTXRNaTR5SURJdU0yZ3RMakZqTFM0NElEQXRNUzQyTFM0MUxUSXRNUzR5TFRRdU5pMDRMak10TVRNdU15MHhNeTQxTFRJeUxqZ3RNVE11TlMweExqSWdNQzB5TGpNdE1TMHlMak10TWk0eWRpMHVNV013TFRFdU1pQXhMVEl1TXlBeUxqSXRNaTR6YUM0eFlUTXdMak0zSURNd0xqTTNJREFnTUNBeElERTFMamdnTkM0MFl6UXVOaUF5TGpnZ09DNDBJRFl1T0NBeE1TNHhJREV4TGpVdU1TNHpMakl1Tnk0eUlERXVNWHBOTmprdU1pQTBPV3d4T1M0MElERTBMamhqTVM0NUlERXVOU0F6TGpFZ015NDFJRE11TlNBMUxqZDJMakpqTGpFdU5DNHhMamd1TVNBeExqSWdNQ0F1TmkwdU1TQXhMakV0TGpJZ01TNDJMUzQwSURJdU1pMHhMamNnTkM0eUxUTXVOU0ExTGpaTU5qa3VNeUE1TTJNdE1pNDJJREl0TlM0MElESXVOUzAzTGpjZ01TNDBMUzR4TFM0eExTNHlMUzR4TFM0eUxTNHlMVEl0TVM0eUxUTXVNaTB6TGpVdE15NHlMVFl1TkhZdE5pNDJhQzAxTGpkakxUWXVPQ0F3TFRFeUxUUXVOeTB4TWkweE1DNDVJREF0TkM0NElESXVOaTA0TGpVZ055NHlMVEV3TGpNZ01TNHpMUzQxSURJdU55NHlJRE11TWlBeExqVnpMUzR4SURJdU9DMHhMalFnTXk0ell5MHlMamNnTVM0eExUUWdNaTQ1TFRRZ05TNDFJREFnTXk0MUlETWdOaUEzSURab09DNHhZeTQxSURBZ01TQXVNaUF4TGpRdU5pNDNMallnTVM0eElERXVOeUF4TGpFZ01pNDJkamd1TkdNd0lERXVNeTQwSURJZ0xqY2dNaTR4TGpRdU1pQXhMak1nTUNBeUxqUXRMamxzTVRrdU1pMHhOQzQ1WXpFdU1pMHVPU0F4TGpndE1pNHhJREV1T0MwekxqTnpMUzQyTFRJdU15MHhMamN0TXk0eFREWTJMaklnTlROakxURXVNUzB1T1MweUxURXVNUzB5TGpRdExqa3RMak11TWkwdU55NDVMUzQzSURJdU1YWTNMalpqTUNBdU9TMHVOU0F4TGpjdE1TNHlJREl1TVMwdU5DNHpMUzQ0TGpRdE1TNHpMalF0TVM0MElEQXRNaTQxTFRFdU1TMHlMalV0TWk0MWRpMDNMalpqTUMwekxqRWdNUzR6TFRVdU5TQXpMalV0Tmk0MmJDNDNMUzR6WXpJdU1TMHVOeUEwTGpZdExqRWdOaTQ1SURFdU4zb2lJR1pwYkd3OUlpTTBORFFpTHo0OEwzTjJaejQ9Ci8vIEBkb3dubG9hZFVSTCBodHRwczovL3VwZGF0ZS5ncmVhc3lmb3JrLm9yZy9zY3JpcHRzLzQyMjk2MC8lRTclQkQlOTElRTclOUIlOTglRTYlOTklQkElRTglODMlQkQlRTglQUYlODYlRTUlODglQUIlRTUlOEElQTklRTYlODklOEIudXNlci5qcwovLyBAdXBkYXRlVVJMIGh0dHBzOi8vdXBkYXRlLmdyZWFzeWZvcmsub3JnL3NjcmlwdHMvNDIyOTYwLyVFNyVCRCU5MSVFNyU5QiU5OCVFNiU5OSVCQSVFOCU4MyVCRCVFOCVBRiU4NiVFNSU4OCVBQiVFNSU4QSVBOSVFNiU4OSU4Qi5tZXRhLmpzCi8vID09L1VzZXJTY3JpcHQ9PQoKKGZ1bmN0aW9uICgpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICBjb25zdCBjdXN0b21DbGFzcyA9IHsKICAgICAgICBjb250YWluZXI6ICdwYW5haS1jb250YWluZXInLAogICAgICAgIHBvcHVwOiAncGFuYWktcG9wdXAnLAogICAgfTsKCiAgICBsZXQgdG9hc3QgPSBTd2FsLm1peGluKHsKICAgICAgICB0b2FzdDogdHJ1ZSwKICAgICAgICBwb3NpdGlvbjogJ3RvcCcsCiAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLAogICAgICAgIHRpbWVyOiAzNTAwLAogICAgICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IGZhbHNlLAogICAgICAgIGRpZE9wZW46ICh0b2FzdCkgPT4gewogICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpOwogICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcik7CiAgICAgICAgfQogICAgfSk7CgogICAgbGV0IHV0aWwgPSB7CiAgICAgICAgY2xvZyhjKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoIiVjICVjIFvnvZHnm5jmmbrog73or4bliKvliqnmiYtdIiwgYGJhY2tncm91bmQ6dXJsKCR7R01faW5mby5zY3JpcHQuaWNvbn0pIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZToxMnB4O3BhZGRpbmc6M3B4YCwgIiIpOwogICAgICAgICAgICBjb25zb2xlLmxvZyhjKTsKICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpOwogICAgICAgIH0sCgogICAgICAgIHBhcnNlUXVlcnkobmFtZSkgewogICAgICAgICAgICBsZXQgcmVnID0gbmV3IFJlZ0V4cChgKD88PSg/OiR7bmFtZX0pXFw9KSg/OndzczpbYS16QS1aMC05XSt8W1xcdy1dKylgLCAiaSIpCiAgICAgICAgICAgIGxldCBwZCA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgvJTNBL2csICI6IikubWF0Y2gocmVnKTsKICAgICAgICAgICAgaWYgKHBkKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcGRbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfSwKCiAgICAgICAgZ2V0VmFsdWUobmFtZSkgewogICAgICAgICAgICByZXR1cm4gR01fZ2V0VmFsdWUobmFtZSk7CiAgICAgICAgfSwKCiAgICAgICAgc2V0VmFsdWUobmFtZSwgdmFsdWUpIHsKICAgICAgICAgICAgR01fc2V0VmFsdWUobmFtZSwgdmFsdWUpOwogICAgICAgIH0sCgogICAgICAgIHNsZWVwKHRpbWUpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpKTsKICAgICAgICB9LAoKICAgICAgICBhZGRTdHlsZShpZCwgdGFnLCBjc3MpIHsKICAgICAgICAgICAgdGFnID0gdGFnIHx8ICdzdHlsZSc7CiAgICAgICAgICAgIGxldCBkb2MgPSBkb2N1bWVudCwgc3R5bGVEb20gPSBkb2MuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgICAgICBpZiAoc3R5bGVEb20pIHJldHVybjsKICAgICAgICAgICAgbGV0IHN0eWxlID0gZG9jLmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgICAgICAgICAgc3R5bGUucmVsID0gJ3N0eWxlc2hlZXQnOwogICAgICAgICAgICBzdHlsZS5pZCA9IGlkOwogICAgICAgICAgICB0YWcgPT09ICdzdHlsZScgPyBzdHlsZS5pbm5lckhUTUwgPSBjc3MgOiBzdHlsZS5ocmVmID0gY3NzOwogICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTsKICAgICAgICB9LAoKICAgICAgICBpc0hpZGRlbihlbCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVsLm9mZnNldFBhcmVudCA9PT0gbnVsbDsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgaXNNb2JpbGU6ICgoKSA9PiAhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goLyhwaG9uZXxwYWR8cG9kfGlQaG9uZXxpUG9kfGlvc3xpUGFkfEFuZHJvaWR8TW9iaWxlfEJsYWNrQmVycnl8SUVNb2JpbGV8TVFRQnJvd3NlcnxKVUN8RmVubmVjfHdPU0Jyb3dzZXJ8QnJvd3Nlck5HfFdlYk9TfFN5bWJpYW58V2luZG93cyBQaG9uZXxIYXJtb255T1N8TWljcm9NZXNzZW5nZXIpL2kpKSgpLAoKICAgICAgICBxdWVyeShzZWxlY3RvcikgewogICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgIGxldCBvYmogPSBudWxsOwogICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Rvci5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGxldCBvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcltpXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG9iajsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICAgICAgfQogICAgfTsKCiAgICBsZXQgb3B0ID0gewogICAgICAgICdiYWlkdSc6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT8oPzplP3l1bnxwYW4pXC5iYWlkdVwuY29tXC8oZG9jXC98ZW50ZXJwcmlzZVwvKT8oPzpzXC9bXHd+XSooKCgtKT9cdyopKik/fHNoYXJlXC9cU3s0LH0pKS8sCiAgICAgICAgICAgIGhvc3Q6IC8ocGFufGU/eXVuKVwuYmFpZHVcLmNvbS8sCiAgICAgICAgICAgIGlucHV0OiBbJyNhY2Nlc3NDb2RlJywgJy5zaGFyZS1hY2Nlc3MtY29kZScsICcjd3Bkb2Mtc2hhcmUtcGFnZSA+IC51LWRpYWxvZ19fd3JhcHBlciAudS1pbnB1dF9faW5uZXInXSwKICAgICAgICAgICAgYnV0dG9uOiBbJyNzdWJtaXRCdG4nLCAnLnNoYXJlLWFjY2VzcyAuZy1idXR0b24nLCAnI3dwZG9jLXNoYXJlLXBhZ2UgPiAudS1kaWFsb2dfX3dyYXBwZXIgLnUtYnRuLS1wcmltYXJ5J10sCiAgICAgICAgICAgIG5hbWU6ICfnmb7luqbnvZHnm5gnLAogICAgICAgICAgICBzdG9yYWdlOiAnaGFzaCcKICAgICAgICB9LAogICAgICAgICdhbGl5dW4nOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/KD86KD86d3d3XC4pPyg/OmFsaXl1bmRyaXZlfGFsaXBhbilcLmNvbVwvc3xhbHl3cFwubmV0KVwvW2EtekEtWlxkXSspLywKICAgICAgICAgICAgaG9zdDogL3d3d1wuKGFsaXl1bmRyaXZlfGFsaXBhbilcLmNvbXxhbHl3cFwubmV0LywKICAgICAgICAgICAgaW5wdXQ6IFsnZm9ybSAuYW50LWlucHV0JywgJ2Zvcm0gaW5wdXRbdHlwZT0idGV4dCJdJywgJ2lucHV0W25hbWU9InB3ZCJdJ10sCiAgICAgICAgICAgIGJ1dHRvbjogWydmb3JtIC5idXR0b24tLWZlcDdsJywgJ2Zvcm0gYnV0dG9uW3R5cGU9InN1Ym1pdCJdJ10sCiAgICAgICAgICAgIG5hbWU6ICfpmL/ph4zkupHnm5gnLAogICAgICAgICAgICBzdG9yYWdlOiAnaGFzaCcKICAgICAgICB9LAogICAgICAgICd3ZWl5dW4nOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/c2hhcmVcLndlaXl1blwuY29tXC9bYS16QS1aXGRdKykvLAogICAgICAgICAgICBob3N0OiAvc2hhcmVcLndlaXl1blwuY29tLywKICAgICAgICAgICAgaW5wdXQ6IFsnLm1vZC1jYXJkLXMgaW5wdXRbdHlwZT1wYXNzd29yZF0nLCAnaW5wdXQucHctaW5wdXQnXSwKICAgICAgICAgICAgYnV0dG9uOiBbJy5tb2QtY2FyZC1zIC5idG4tbWFpbicsICIucHctYnRuLXdyYXAgYnV0dG9uLmJ0biJdLAogICAgICAgICAgICBuYW1lOiAn5b6u5LqRJywKICAgICAgICAgICAgc3RvcmFnZTogJ2hhc2gnCiAgICAgICAgfSwKICAgICAgICAnbGFuem91JzogewogICAgICAgICAgICByZWc6IC8oKD86aHR0cHM/OlwvXC8pPyg/OlthLXpBLVowLTlcLS5dKyk/KD86bGFuem91W2Etel18bGFuem4pXC5jb21cL1thLXpBLVpcZF9cLV0rKD86XC9bXHctXSspPykvLAogICAgICAgICAgICBob3N0OiAvKD86W2EtekEtWlxkLS5dKyk/KD86bGFuem91W2Etel18bGFuem4pXC5jb20vLAogICAgICAgICAgICBpbnB1dDogWycjcHdkJ10sCiAgICAgICAgICAgIGJ1dHRvbjogWycucGFzc3dkZGl2LWJ0bicsICcjc3ViJ10sCiAgICAgICAgICAgIG5hbWU6ICfok53lpY/kupEnLAogICAgICAgICAgICBzdG9yYWdlOiAnaGFzaCcKICAgICAgICB9LAogICAgICAgICd0aWFueWknOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/Y2xvdWRcLjE4OVwuY25cLyg/OnRcL3x3ZWJcL3NoYXJlXD9jb2RlPSk/W2EtekEtWlxkXSspLywKICAgICAgICAgICAgaG9zdDogL2Nsb3VkXC4xODlcLmNuLywKICAgICAgICAgICAgaW5wdXQ6IFsnLmFjY2Vzcy1jb2RlLWl0ZW0gI2NvZGVfdHh0JywgImlucHV0LmFjY2Vzcy1jb2RlLWlucHV0Il0sCiAgICAgICAgICAgIGJ1dHRvbjogWycuYWNjZXNzLWNvZGUtaXRlbSAudmlzaXQnLCAiLmJ1dHRvbiJdLAogICAgICAgICAgICBuYW1lOiAn5aSp57+85LqR55uYJywKICAgICAgICAgICAgc3RvcmFnZTogKCgpID0+IHV0aWwuaXNNb2JpbGUgPT09IHRydWUgPyAnbG9jYWwnIDogJ2hhc2gnKSgpLAogICAgICAgICAgICBzdG9yYWdlUHdkTmFtZTogJ3RtcF90aWFueWlfcHdkJwogICAgICAgIH0sCiAgICAgICAgJ2NhaXl1bic6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT9jYWl5dW5cLjEzOVwuY29tXC8oPzptXC9pfHdcL2lcL3x3ZWJcL3xmcm9udFwvI1wvZGV0YWlsKVw/Pyg/OmxpbmtJRD0pP1thLXpBLVpcZF0rKS8sCiAgICAgICAgICAgIGhvc3Q6IC8oPzpjYWkpP3l1blwuMTM5XC5jb20vLAogICAgICAgICAgICBpbnB1dDogWycudG9rZW4tZm9ybSBpbnB1dFt0eXBlPXRleHRdJ10sCiAgICAgICAgICAgIGJ1dHRvbjogWycudG9rZW4tZm9ybSAuYnRuLXRva2VuJ10sCiAgICAgICAgICAgIG5hbWU6ICfnp7vliqjkupHnm5gnLAogICAgICAgICAgICBzdG9yYWdlOiAnbG9jYWwnLAogICAgICAgICAgICBzdG9yYWdlUHdkTmFtZTogJ3RtcF9jYWl5dW5fcHdkJwogICAgICAgIH0sCiAgICAgICAgJ3h1bmxlaSc6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT9wYW5cLnh1bmxlaVwuY29tXC9zXC9bXHctXXsxMCx9KS8sCiAgICAgICAgICAgIGhvc3Q6IC9wYW5cLnh1bmxlaVwuY29tLywKICAgICAgICAgICAgaW5wdXQ6IFsnLnBhc3MtaW5wdXQtd3JhcCAudGQtaW5wdXRfX2lubmVyJ10sCiAgICAgICAgICAgIGJ1dHRvbjogWycucGFzcy1pbnB1dC13cmFwIC50ZC1idXR0b24nXSwKICAgICAgICAgICAgbmFtZTogJ+i/hembt+S6keebmCcsCiAgICAgICAgICAgIHN0b3JhZ2U6ICdoYXNoJwogICAgICAgIH0sCiAgICAgICAgJzEyM3Bhbic6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT93d3dcLjEyM3BhblwuY29tXC9zXC9bXHctXXs2LH0pLywKICAgICAgICAgICAgaG9zdDogL3d3d1wuMTIzcGFuXC5jb20vLAogICAgICAgICAgICBpbnB1dDogWycuY2EtZm90IGlucHV0JywgIi5hcHBpbnB1dCAuYXBwaW5wdXQiXSwKICAgICAgICAgICAgYnV0dG9uOiBbJy5jYS1mb3QgYnV0dG9uJywgIi5hcHBpbnB1dCBidXR0b24iXSwKICAgICAgICAgICAgbmFtZTogJzEyM+S6keebmCcsCiAgICAgICAgICAgIHN0b3JhZ2U6ICdoYXNoJwogICAgICAgIH0sCiAgICAgICAgJzM2MCc6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT8oPzpbYS16QS1aXGRcLS5dKyk/KD86eXVucGFuXC4zNjBcLmNufHl1bnBhblwuY29tKShcL2xrKT9cL3N1cmxfXHd7Nix9KS8sCiAgICAgICAgICAgIGhvc3Q6IC9bXHcuXSs/eXVucGFuXC5jb20vLAogICAgICAgICAgICBpbnB1dDogWycucHdkLWlucHV0J10sCiAgICAgICAgICAgIGJ1dHRvbjogWycuc3VibWl0LWJ0biddLAogICAgICAgICAgICBuYW1lOiAnMzYw5LqR55uYJywKICAgICAgICAgICAgc3RvcmFnZTogJ2xvY2FsJywKICAgICAgICAgICAgc3RvcmFnZVB3ZE5hbWU6ICd0bXBfMzYwX3B3ZCcKICAgICAgICB9LAogICAgICAgICcxMTUnOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/MTE1XC5jb21cL3NcL1thLXpBLVpcZF0rKS8sCiAgICAgICAgICAgIGhvc3Q6IC8xMTVcLmNvbS8sCiAgICAgICAgICAgIGlucHV0OiBbJy5mb3JtLWRlY29kZSBpbnB1dCddLAogICAgICAgICAgICBidXR0b246IFsnLmZvcm0tZGVjb2RlIC5zdWJtaXQgYSddLAogICAgICAgICAgICBuYW1lOiAnMTE1572R55uYJywKICAgICAgICAgICAgc3RvcmFnZTogJ2hhc2gnCiAgICAgICAgfSwKICAgICAgICAnY293dHJhbnNmZXInOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/KD86W2EtekEtWlxkLS5dKyk/Y293dHJhbnNmZXJcLmNvbVwvc1wvW2EtekEtWlxkXSspLywKICAgICAgICAgICAgaG9zdDogLyg/OlthLXpBLVpcZC0uXSspP2Nvd3RyYW5zZmVyXC5jb20vLAogICAgICAgICAgICBpbnB1dDogWycucmVjZWl2ZS1jb2RlLWlucHV0IGlucHV0J10sCiAgICAgICAgICAgIGJ1dHRvbjogWycub3Blbi1idXR0b24nXSwKICAgICAgICAgICAgbmFtZTogJ+WltueJm+W/q+S8oCcsCiAgICAgICAgICAgIHN0b3JhZ2U6ICdoYXNoJwogICAgICAgIH0sCiAgICAgICAgJ2N0ZmlsZSc6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT8oPzpbYS16QS1aXGQtLl0rKT8oPzpjdGZpbGV8NTQ1Y3x1MDYyfGdocHltKVwuY29tXC9cdytcL1thLXpBLVpcZC1dKykvLAogICAgICAgICAgICBob3N0OiAvKD86W2EtekEtWlxkLS5dKyk/KD86Y3RmaWxlfDU0NWN8dTA2MilcLmNvbS8sCiAgICAgICAgICAgIGlucHV0OiBbJyNwYXNzY29kZSddLAogICAgICAgICAgICBidXR0b246IFsnLmNhcmQtYm9keSBidXR0b24nXSwKICAgICAgICAgICAgbmFtZTogJ+WfjumAmue9keebmCcsCiAgICAgICAgICAgIHN0b3JhZ2U6ICdoYXNoJwogICAgICAgIH0sCiAgICAgICAgJ3F1YXJrJzogewogICAgICAgICAgICByZWc6IC8oKD86aHR0cHM/OlwvXC8pP3BhblwucXVhcmtcLmNuXC9zXC9bYS16QS1aXGQtXSspLywKICAgICAgICAgICAgaG9zdDogL3BhblwucXVhcmtcLmNuLywKICAgICAgICAgICAgaW5wdXQ6IFsnLmFudC1pbnB1dCddLAogICAgICAgICAgICBidXR0b246IFsnLmFudC1idG4tcHJpbWFyeSddLAogICAgICAgICAgICBuYW1lOiAn5aS45YWL572R55uYJywKICAgICAgICAgICAgc3RvcmFnZTogJ2xvY2FsJywKICAgICAgICAgICAgc3RvcmFnZVB3ZE5hbWU6ICd0bXBfcXVhcmtfcHdkJwogICAgICAgIH0sCiAgICAgICAgJ3ZkaXNrJzogewogICAgICAgICAgICByZWc6IC8oPzpodHRwcz86XC9cLyk/dmRpc2sud2VpYm8uY29tXC9sY1wvXHcrLywKICAgICAgICAgICAgaG9zdDogL3ZkaXNrXC53ZWlib1wuY29tLywKICAgICAgICAgICAgaW5wdXQ6IFsnI2tleXBhc3MnLCAiI2FjY2Vzc19jb2RlIl0sCiAgICAgICAgICAgIGJ1dHRvbjogWycuc2VhcmNoX2J0bl93cmFwIGEnLCAiI2xpbmtjb21tb25fYnRuIl0sCiAgICAgICAgICAgIG5hbWU6ICflvq7nm5gnLAogICAgICAgICAgICBzdG9yYWdlOiAnaGFzaCcsCiAgICAgICAgfSwKICAgICAgICAnd2Vuc2h1c2h1JzogewogICAgICAgICAgICByZWc6IC8oKD86aHR0cHM/OlwvXC8pPyg/Ond3d1wud2Vuc2h1c2h1fHdzMjgpXC5jblwvKD86a3xib3h8ZilcL1x3KykvLAogICAgICAgICAgICBob3N0OiAvd3d3XC53ZW5zaHVzaHVcLmNuLywKICAgICAgICAgICAgaW5wdXQ6IFsnLnB3ZC1pbnAgLml2dS1pbnB1dCddLAogICAgICAgICAgICBidXR0b246IFsnLnB3ZC1pbnAgLml2dS1idG4nXSwKICAgICAgICAgICAgbmFtZTogJ+aWh+WPlOWPlOe9keebmCcsCiAgICAgICAgICAgIHN0b3JhZ2U6ICdoYXNoJwogICAgICAgIH0sCiAgICAgICAgJ3VjJzogewogICAgICAgICAgICByZWc6IC8oPzpodHRwcz86XC9cLyk/ZHJpdmVcLnVjXC5jblwvc1wvW2EtekEtWlxkXSsvLAogICAgICAgICAgICBob3N0OiAvZHJpdmVcLnVjXC5jbi8sCiAgICAgICAgICAgIGlucHV0OiBbImlucHV0W2NsYXNzKj0nU2hhcmVSZWNlaXZlUEMtLWlucHV0J10iLCAnLmlucHV0LXdyYXAgaW5wdXQnXSwKICAgICAgICAgICAgYnV0dG9uOiBbImJ1dHRvbltjbGFzcyo9J1NoYXJlUmVjZWl2ZVBDLS1zdWJtaXQtYnRuJyIsICcuaW5wdXQtd3JhcCBidXR0b24nXSwKICAgICAgICAgICAgbmFtZTogJ1VD5LqR55uYJywKICAgICAgICAgICAgc3RvcmFnZTogJ2hhc2gnCiAgICAgICAgfSwKICAgICAgICAnamlhbmd1b3l1bic6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT93d3dcLmppYW5ndW95dW5cLmNvbVwvcFwvW1x3LV0rKS8sCiAgICAgICAgICAgIGhvc3Q6IC93d3dcLmppYW5ndW95dW5cLmNvbS8sCiAgICAgICAgICAgIGlucHV0OiBbJ2lucHV0W3R5cGU9cGFzc3dvcmRdJ10sCiAgICAgICAgICAgIGJ1dHRvbjogWycub2stYnV0dG9uJywgJy5jb25maXJtLWJ1dHRvbiddLAogICAgICAgICAgICBuYW1lOiAn5Z2a5p6c5LqRJywKICAgICAgICAgICAgc3RvcmFnZTogJ2hhc2gnCiAgICAgICAgfSwKICAgICAgICAnd28nOiB7CiAgICAgICAgICAgIHJlZzogLyg/Omh0dHBzPzpcL1wvKT9wYW5cLndvXC5jblwvc1wvW1x3X10rLywKICAgICAgICAgICAgaG9zdDogLyhwYW5cLndvXC5jbnxwYW5zZXJ2aWNlXC5tYWlsXC53b1wuY24pLywKICAgICAgICAgICAgaW5wdXQ6IFsnaW5wdXQuZWwtaW5wdXRfX2lubmVyJywgIi52YW4tZmllbGRfX2NvbnRyb2wiXSwKICAgICAgICAgICAgYnV0dG9uOiBbJy5zLWJ1dHRvbicsICIuc2hhcmUtY29kZSBidXR0b24iXSwKICAgICAgICAgICAgbmFtZTogJ+iBlOmAmuS6keebmCcsCiAgICAgICAgICAgIHN0b3JhZ2U6ICgoKSA9PiB1dGlsLmlzTW9iaWxlID09PSB0cnVlID8gJ2xvY2FsJyA6ICdoYXNoJykoKSwKICAgICAgICAgICAgc3RvcmFnZVB3ZE5hbWU6ICd0bXBfd29fcHdkJwogICAgICAgIH0sCiAgICAgICAgJ21lZ2EnOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/KD86bWVnYVwubnp8bWVnYVwuY29cLm56KVwvI0Y/IVtcdyEtXSspLywKICAgICAgICAgICAgaG9zdDogLyg/Om1lZ2FcLm56fG1lZ2FcLmNvXC5ueikvLAogICAgICAgICAgICBpbnB1dDogWycuZGxrZXktZGlhbG9nIGlucHV0J10sCiAgICAgICAgICAgIGJ1dHRvbjogWycuZGxrZXktZGlhbG9nIC5mbS1kaWFsb2ctbmV3LWZvbGRlci1idXR0b24nXSwKICAgICAgICAgICAgbmFtZTogJ01lZ2EnLAogICAgICAgICAgICBzdG9yYWdlOiAnbG9jYWwnCiAgICAgICAgfSwKICAgICAgICAnNTIwdmlwJzogewogICAgICAgICAgICByZWc6IC8oKD86aHR0cHM/OlwvXC8pP3d3d1wuKD86NTIwLXZpcHxlb3MtNTMpXC5jb21cL2ZpbGUtXGQrXC5odG1sKS8sCiAgICAgICAgICAgIGhvc3Q6IC93d3dcLjUyMC12aXBcLmNvbS8sCiAgICAgICAgICAgIG5hbWU6ICc1MjDkupHnm5gnLAogICAgICAgIH0sCiAgICAgICAgJzU2N3Bhbic6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT93d3dcLjU2Nyg/OnBhbnx5dW58ZmlsZXxpbmMpXC4oPzpjb218Y24pXC9maWxlLVxkK1wuaHRtbCkvLAogICAgICAgICAgICBob3N0OiAvd3d3XC41NjdpbmNcLmNuLywKICAgICAgICAgICAgbmFtZTogJzU2N+ebmCcsCiAgICAgICAgICAgIHJlcGxhY2VIb3N0OiAid3d3LjU2N2luYy5jb20iLAogICAgICAgIH0sCiAgICAgICAgJ2F5dW5wYW4nOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/d3d3XC5heXVucGFuXC5jb21cL2ZpbGUtXGQrXC5odG1sKS8sCiAgICAgICAgICAgIGhvc3Q6IC93d3dcLmF5dW5wYW5cLmNvbS8sCiAgICAgICAgICAgIG5hbWU6ICdBWXVuUGFuJywKICAgICAgICB9LAogICAgICAgICdpeWNkbi5jb20nOiB7CiAgICAgICAgICAgIHJlZzogLygoPzpodHRwcz86XC9cLyk/d3d3XC5peWNkblwuY29tXC9maWxlLVxkK1wuaHRtbCkvLAogICAgICAgICAgICBob3N0OiAvd3d3XC5peWNkblwuY29tLywKICAgICAgICAgICAgbmFtZTogJ+eIseS8mOe9keebmCcsCiAgICAgICAgfSwKICAgICAgICAnZmVpbWFveXVuJzogewogICAgICAgICAgICByZWc6IC8oKD86aHR0cHM/OlwvXC8pP3d3d1wuZmVpbWFveXVuXC5jb21cL3NcL1swLTlhLXpBLVpdKykvLAogICAgICAgICAgICBob3N0OiAvd3d3XC5mZWltYW95dW5cLmNvbS8sCiAgICAgICAgICAgIG5hbWU6ICfpo57njKvnm5gnLAogICAgICAgIH0sCiAgICAgICAgJ3V5dW5wLmNvbSc6IHsKICAgICAgICAgICAgcmVnOiAvKCg/Omh0dHBzPzpcL1wvKT9kb3dubG9hZFwudXl1bnBcLmNvbVwvc2hhcmVcL3NcL3Nob3J0XC9cP3N1cmw9WzAtOWEtekEtWl0rKS8sCiAgICAgICAgICAgIGhvc3Q6IC9kb3dubG9hZFwudXl1bnBcLmNvbS8sCiAgICAgICAgICAgIG5hbWU6ICfkvJjkupHkuIvovb0nLAogICAgICAgIH0sCiAgICAgICAgJ2R1ZHVqYic6IHsKICAgICAgICAgICAgcmVnOiAvKD86aHR0cHM/OlwvXC8pP3d3d1wuZHVkdWpiXC5jb21cL2ZpbGUtXGQrXC5odG1sLywKICAgICAgICAgICAgaG9zdDogL3d3d1wuZHVkdWpiXC5jb20vLAogICAgICAgICAgICBuYW1lOiAn6LS15peP572R55uYJywKICAgICAgICB9LAogICAgICAgICd4dW5uaXUnOiB7CiAgICAgICAgICAgIHJlZzogLyg/Omh0dHBzPzpcL1wvKT93d3dcLnh1bm5pdSg/OmZ4cHx3cHxmeClcLmNvbVwvZmlsZS1cZCtcLmh0bWwvLAogICAgICAgICAgICBob3N0OiAvd3d3XC54dW5uaXV3cFwuY29tLywKICAgICAgICAgICAgbmFtZTogJ+i/heeJm+e9keebmCcsCiAgICAgICAgfSwKICAgICAgICAneHVlcWl1cGFuJzogewogICAgICAgICAgICByZWc6IC8oPzpodHRwcz86XC9cLyk/d3d3XC54dWVxaXVwYW5cLmNvbVwvZmlsZS1cZCtcLmh0bWwvLAogICAgICAgICAgICBob3N0OiAvd3d3XC54dWVxaXVwYW5cLmNvbS8sCiAgICAgICAgICAgIG5hbWU6ICfpm6rnkIPkupHnm5gnLAogICAgICAgIH0sCiAgICAgICAgJzc3ZmlsZSc6IHsKICAgICAgICAgICAgcmVnOiAvKD86aHR0cHM/OlwvXC8pP3d3d1wuNzdmaWxlXC5jb21cL3NcL1thLXpBLVpcZF0rLywKICAgICAgICAgICAgaG9zdDogL3d3d1wuNzdmaWxlXC5jb20vLAogICAgICAgICAgICBuYW1lOiAnNzdmaWxlJywKICAgICAgICB9LAogICAgICAgICdvd25maWxlJzogewogICAgICAgICAgICByZWc6IC8oPzpodHRwcz86XC9cLyk/b3duZmlsZVwubmV0XC9maWxlc1wvW2EtekEtWlxkXStcLmh0bWwvLAogICAgICAgICAgICBob3N0OiAvb3duZmlsZVwubmV0LywKICAgICAgICAgICAgbmFtZTogJ093bkZpbGUnLAogICAgICAgIH0sCiAgICAgICAgJ2ZlaXl1bmZpbGUnOiB7CiAgICAgICAgICAgIHJlZzogLyg/Omh0dHBzPzpcL1wvKT93d3dcLmZlaXl1bmZpbGVcLmNvbVwvZmlsZVwvW1x3PV0rXC5odG1sLywKICAgICAgICAgICAgaG9zdDogL3d3d1wuZmVpeXVuZmlsZVwuY29tLywKICAgICAgICAgICAgbmFtZTogJ+mjnuS6kee9keebmCcsCiAgICAgICAgfSwKICAgICAgICAneWlmaWxlJzogewogICAgICAgICAgICByZWc6IC8oPzpodHRwcz86XC9cLyk/d3d3XC55aWZpbGVcLmNvbVwvZlwvXHcrLywKICAgICAgICAgICAgaG9zdDogL3d3d1wueWlmaWxlXC5jb20vLAogICAgICAgICAgICBuYW1lOiAnWWlGaWxlJywKICAgICAgICB9LAogICAgICAgICdkdWZpbGUnOiB7CiAgICAgICAgICAgIHJlZzogLyg/Omh0dHBzPzpcL1wvKT9kdWZpbGVcLmNvbVwvZmlsZVwvXHcrXC5odG1sLywKICAgICAgICAgICAgaG9zdDogL2R1ZmlsZVwuY29tLywKICAgICAgICAgICAgbmFtZTogJ2R1RmlsZScsCiAgICAgICAgfSwKICAgICAgICAnZmxvd3VzJzogewogICAgICAgICAgICByZWc6IC8oKD86aHR0cHM/OlwvXC8pP2Zsb3d1c1wuY25cL1tcUyBeXC9dKlwvP3NoYXJlXC9bYS16XGRdezh9LVthLXpcZF17NH0tW2EtelxkXXs0fS1bYS16XGRdezR9LVthLXpcZF17MTJ9KS8sCiAgICAgICAgICAgIGhvc3Q6IC9mbG93dXNcLmNuLywKICAgICAgICAgICAgbmFtZTogJ0Zsb3dVc+aBr+a1gScsCiAgICAgICAgICAgIHN0b3JhZ2U6ICdoYXNoJwogICAgICAgIH0sCiAgICAgICAgJ2Nocm9tZSc6IHsKICAgICAgICAgICAgcmVnOiAvXmh0dHBzPzpcL1wvY2hyb21lLmdvb2dsZS5jb21cL3dlYnN0b3JlXC8uKz9cLyhbYS16XXszMn0pKD89W1wvIz9dfCQpLywKICAgICAgICAgICAgaG9zdDogL2Nocm9tZVwuZ29vZ2xlXC5jb20vLAogICAgICAgICAgICByZXBsYWNlSG9zdDogImNocm9tZS5jcnhzb3NvLmNvbSIsCiAgICAgICAgICAgIG5hbWU6ICdDaHJvbWXllYblupcnLAogICAgICAgIH0sCiAgICAgICAgJ2VkZ2UnOiB7CiAgICAgICAgICAgIHJlZzogL15odHRwcz86XC9cL21pY3Jvc29mdGVkZ2UubWljcm9zb2Z0LmNvbVwvYWRkb25zXC8uKz9cLyhbYS16XXszMn0pKD89W1wvIz9dfCQpLywKICAgICAgICAgICAgaG9zdDogL21pY3Jvc29mdGVkZ2VcLm1pY3Jvc29mdFwuY29tLywKICAgICAgICAgICAgcmVwbGFjZUhvc3Q6ICJtaWNyb3NvZnRlZGdlLmNyeHNvc28uY29tIiwKICAgICAgICAgICAgbmFtZTogJ0VkZ2XllYblupcnLAogICAgICAgIH0sCiAgICAgICAgJ2ZpcmVmb3gnOiB7CiAgICAgICAgICAgIHJlZzogL15odHRwcz86XC9cLyhyZXZpZXdlcnNcLik/KGFkZG9uc1wubW96aWxsYVwub3JnfGFkZG9ucyg/Oi1kZXYpP1wuYWxsaXpvbVwub3JnKVwvLio/KD86YWRkb258cmV2aWV3KVwvKFteLzw+Iic/I10rKS8sCiAgICAgICAgICAgIGhvc3Q6IC9hZGRvbnNcLm1vemlsbGFcLm9yZy8sCiAgICAgICAgICAgIHJlcGxhY2VIb3N0OiAiYWRkb25zLmNyeHNvc28uY29tIiwKICAgICAgICAgICAgbmFtZTogJ0ZpcmVmb3jllYblupcnLAogICAgICAgIH0sCiAgICAgICAgJ21pY3Jvc29mdCc6IHsKICAgICAgICAgICAgcmVnOiAvXmh0dHBzPzpcL1wvKD86YXBwc3x3d3cpLm1pY3Jvc29mdC5jb21cLyg/OnN0b3JlfHApXC8uKz9cLyhbYS16QS1aXGRdezEwLH0pKD89W1wvIz9dfCQpLywKICAgICAgICAgICAgaG9zdDogLyhhcHBzfHd3dylcLm1pY3Jvc29mdFwuY29tLywKICAgICAgICAgICAgcmVwbGFjZUhvc3Q6ICJhcHBzLmNyeHNvc28uY29tIiwKICAgICAgICAgICAgbmFtZTogJ1dpbmRvd3PllYblupcnLAogICAgICAgIH0KICAgIH07CgogICAgbGV0IG1haW4gPSB7CiAgICAgICAgbGFzdFRleHQ6ICJsb3JlbSYiLAoKICAgICAgICAvL+WIneWni+WMlumFjee9ruaVsOaNrgogICAgICAgIGluaXRWYWx1ZSgpIHsKICAgICAgICAgICAgbGV0IHZhbHVlID0gW3sKICAgICAgICAgICAgICAgIG5hbWU6ICdzZXR0aW5nX3N1Y2Nlc3NfdGltZXMnLAogICAgICAgICAgICAgICAgdmFsdWU6IDAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgbmFtZTogJ3NldHRpbmdfYXV0b19jbGlja19idG4nLAogICAgICAgICAgICAgICAgdmFsdWU6IHRydWUKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgbmFtZTogJ3NldHRpbmdfYWN0aXZlX2luX2Zyb250JywKICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIG5hbWU6ICdzZXR0aW5nX3RpbWVyX29wZW4nLAogICAgICAgICAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIG5hbWU6ICdzZXR0aW5nX3RpbWVyJywKICAgICAgICAgICAgICAgIHZhbHVlOiA1MDAwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIG5hbWU6ICdzZXR0aW5nX2hvdGtleXMnLAogICAgICAgICAgICAgICAgdmFsdWU6ICdGMScKICAgICAgICAgICAgfV07CgogICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7CiAgICAgICAgICAgICAgICBpZiAodXRpbC5nZXRWYWx1ZSh2Lm5hbWUpID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICB1dGlsLnNldFZhbHVlKHYubmFtZSwgdi52YWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIC8vIOebkeWQrOmAieaLqeS6i+S7tgogICAgICAgIGFkZFBhZ2VMaXN0ZW5lcigpIHsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuc21hcnRJZGVudGlmeS5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMucHJlc3NLZXkuYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgICAgfSwKCiAgICAgICAgLy8g4pqg77iP5Y+v6IO95Lya5aKe5Yqg5pe26Ze04pqg77iPIOWmguaenOaciemcgOimgeWPr+S7peWinuWKoOmAiemhuQogICAgICAgIC8vIOiOt+WPlumAieaLqeWGheWuueeahEhUTUzlkozmlofmnKwo5aKe5Yqg5YW85a655oCnKSDmiJYgRE9N77yI6IqC54K56YGN5Y6G77yJCiAgICAgICAgZ2V0U2VsZWN0aW9uSFRNTChzZWxlY3Rpb24sIGlzRE9NID0gZmFsc2UpIHsKICAgICAgICAgICAgY29uc3QgdGVzdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCkgewogICAgICAgICAgICAgICAgLy8gUmFuZ2Ug6L2sIERvY3VtZW50RnJhZ21lbnQKICAgICAgICAgICAgICAgIGNvbnN0IGRvY0ZyYWdtZW50ID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkuY2xvbmVDb250ZW50cygpOwogICAgICAgICAgICAgICAgdGVzdERpdi5hcHBlbmRDaGlsZChkb2NGcmFnbWVudCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8g5ou85o6l6YCJ5Lit5paH5pys77yM5aKe5Yqg5YW85a65CiAgICAgICAgICAgIHJldHVybiBpc0RPTSA/IHRlc3REaXYgOiBzZWxlY3Rpb24udG9TdHJpbmcoKTsKICAgICAgICB9LAoKICAgICAgICBzbWFydElkZW50aWZ5KGV2ZW50LCBzdHIgPSAnJykgewogICAgICAgICAgICBsZXQgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICBsZXQgdGV4dCA9IHN0ciB8fCB0aGlzLmdldFNlbGVjdGlvbkhUTUwoc2VsZWN0aW9uKTsKICAgICAgICAgICAgaWYgKHRleHQgIT09IHRoaXMubGFzdFRleHQgJiYgdGV4dCAhPT0gJycpIHsgLy/pgInmi6nnm7jlkIzmloflrZfmiJbnqbrkuI3or4bliKsKICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpOwogICAgICAgICAgICAgICAgdGhpcy5sYXN0VGV4dCA9IHRleHQ7CiAgICAgICAgICAgICAgICAvL3V0aWwuY2xvZyhg5b2T5YmN6YCJ5Lit5paH5a2X77yaJHt0ZXh0fWApOwogICAgICAgICAgICAgICAgbGV0IGxpbmtPYmogPSB0aGlzLnBhcnNlTGluayh0ZXh0KTsKICAgICAgICAgICAgICAgIGxldCBsaW5rID0gbGlua09iai5saW5rOwogICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBsaW5rT2JqLm5hbWU7CiAgICAgICAgICAgICAgICBsZXQgcHdkID0gdGhpcy5wYXJzZVB3ZCh0ZXh0KTsKICAgICAgICAgICAgICAgIGlmICghbGluaykgewogICAgICAgICAgICAgICAgICAgIGxpbmtPYmogPSB0aGlzLnBhcnNlUGFyZW50TGluayhzZWxlY3Rpb24pOwogICAgICAgICAgICAgICAgICAgIGxpbmsgPSBsaW5rT2JqLmxpbms7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGxpbmtPYmoubmFtZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsaW5rKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEvaHR0cHM/OlwvXC8vLnRlc3QobGluaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9ICdodHRwczovLycgKyBsaW5rOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsZXQgZW5kID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSAoZW5kIC0gc3RhcnQpLnRvRml4ZWQoMyk7CiAgICAgICAgICAgICAgICAgICAgdXRpbC5jbG9nKGDmlofmnKzor4bliKvnu5PmnpzvvJoke25hbWV9IOmTvuaOpe+8miR7bGlua30g5a+G56CB77yaJHtwd2R9IOiAl+aXtu+8miR7dGltZX3mr6vnp5JgKTsKICAgICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uID0gewogICAgICAgICAgICAgICAgICAgICAgICB0b2FzdDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICd0b3AnLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYOWPkeeOsDxzcGFuIHN0eWxlPSJjb2xvcjogIzI3NzhjNDttYXJnaW46IDAgNXB4OyI+JHtuYW1lfTwvc3Bhbj7pk77mjqVgLAogICAgICAgICAgICAgICAgICAgICAgICBodG1sOiBgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMC44ZW07Ij4keyEhcHdkID8gJ+Wvhuegge+8micgKyBwd2QgOiAn5piv5ZCm5omT5byA77yfJ308L3NwYW4+YCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfmiZPlvIAnLAogICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5YWz6ZetJywKICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tQ2xhc3MKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGlmICh1dGlsLmdldFZhbHVlKCdzZXR0aW5nX3RpbWVyX29wZW4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udGltZXIgPSB1dGlsLmdldFZhbHVlKCdzZXR0aW5nX3RpbWVyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi50aW1lclByb2dyZXNzQmFyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdXRpbC5zZXRWYWx1ZSgnc2V0dGluZ19zdWNjZXNzX3RpbWVzJywgdXRpbC5nZXRWYWx1ZSgnc2V0dGluZ19zdWNjZXNzX3RpbWVzJykgKyAxKTsKCiAgICAgICAgICAgICAgICAgICAgU3dhbC5maXJlKG9wdGlvbikudGhlbigocmVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFRleHQgPSAnbG9yZW0mJzsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLmVtcHR5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaXNDb25maXJtZWQgfHwgcmVzLmRpc21pc3MgPT09ICd0aW1lcicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rT2JqLnN0b3JhZ2UgPT0gImxvY2FsIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuc2V0VmFsdWUobGlua09iai5zdG9yYWdlUHdkTmFtZSwgcHdkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3RpdmUgPSB1dGlsLmdldFZhbHVlKCdzZXR0aW5nX2FjdGl2ZV9pbl9mcm9udCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB3ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRyYSA9IGAke2xpbmt9P3B3ZD0ke3B3ZH0jJHtwd2R9YDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAofmxpbmsuaW5kZXhPZignPycpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhID0gYCR7bGlua30mcHdkPSR7cHdkfSMke3B3ZH1gOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTV9vcGVuSW5UYWIoZXh0cmEsIHthY3RpdmV9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR01fb3BlbkluVGFiKGAke2xpbmt9YCwge2FjdGl2ZX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBwcmVzc0tleShldmVudCkgewogICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7CiAgICAgICAgICAgICAgICBsZXQgY29uZmlybUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wYW5haS1jb250YWluZXIgLnN3YWwyLWNvbmZpcm0nKTsKICAgICAgICAgICAgICAgIGNvbmZpcm1CdG4gJiYgY29uZmlybUJ0bi5jbGljaygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7CiAgICAgICAgICAgICAgICBsZXQgY2FuY2VsQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBhbmFpLWNvbnRhaW5lciAuc3dhbDItY2FuY2VsJyk7CiAgICAgICAgICAgICAgICBjYW5jZWxCdG4gJiYgY2FuY2VsQnRuLmNsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBhZGRIb3RLZXkoKSB7CiAgICAgICAgICAgIC8v6I635Y+W6K6+572u5Lit55qE5b+r5o236ZSuCiAgICAgICAgICAgIGxldCBob3RrZXkgPSB1dGlsLmdldFZhbHVlKCdzZXR0aW5nX2hvdGtleXMnKTsKICAgICAgICAgICAgaG90a2V5cyhob3RrZXksIChldmVudCwgaGFuZGxlcikgPT4gewogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lkZW50aWZ5Qm94KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIC8v5q2j5YiZ6Kej5p6Q572R55uY6ZO+5o6lCiAgICAgICAgcGFyc2VMaW5rKHRleHQgPSAnJykgewogICAgICAgICAgICBsZXQgb2JqID0ge25hbWU6ICcnLCBsaW5rOiAnJywgc3RvcmFnZTogJycsIHN0b3JhZ2VQd2ROYW1lOiAnJ307CiAgICAgICAgICAgIGlmICh0ZXh0KSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHRleHQgPSBkZWNvZGVVUklDb21wb25lbnQodGV4dCk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1vngrnpu55dL2csICcuJyk7CiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9bXHU0ZTAwLVx1OWZhNSgp77yI77yJLFx1MjAwQu+8jFx1RDgzQy1cdURCRkZcdURDMDAtXHVERkZGXS9nLCAnJyk7CiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9sYW56b3VzL2csICdsYW56b3V3Jyk7IC8v5L+u5q2jbGFuem91c+aJk+S4jeW8gOeahOmXrumimAogICAgICAgICAgICAgICAgZm9yIChsZXQgbmFtZSBpbiBvcHQpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gb3B0W25hbWVdOwogICAgICAgICAgICAgICAgICAgIGlmICh2YWwucmVnLnRlc3QodGV4dCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSB0ZXh0Lm1hdGNoKHZhbC5yZWcpOwogICAgICAgICAgICAgICAgICAgICAgICBvYmoubmFtZSA9IHZhbC5uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBvYmoubGluayA9IG1hdGNoZXNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5zdG9yYWdlID0gdmFsLnN0b3JhZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5zdG9yYWdlUHdkTmFtZSA9IHZhbC5zdG9yYWdlUHdkTmFtZSB8fCBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLnJlcGxhY2VIb3N0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmoubGluayA9IG9iai5saW5rLnJlcGxhY2UodmFsLmhvc3QsIHZhbC5yZXBsYWNlSG9zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iajsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG9iajsKICAgICAgICB9LAoKICAgICAgICAvL+ato+WImeino+aekOi2hemTvuaOpeexu+Wei+e9keebmOmTvuaOpQogICAgICAgIHBhcnNlUGFyZW50TGluayhzZWxlY3Rpb24pIHsKICAgICAgICAgICAgY29uc3QgZG9tID0gdGhpcy5nZXRTZWxlY3Rpb25IVE1MKHNlbGVjdGlvbiwgdHJ1ZSkucXVlcnlTZWxlY3RvcignKltocmVmXScpOwogICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUxpbmsoZG9tID8gZG9tLmhyZWYgOiAiIik7CiAgICAgICAgfSwKCiAgICAgICAgLy/mraPliJnop6PmnpDmj5Dlj5bnoIEKICAgICAgICBwYXJzZVB3ZCh0ZXh0KSB7CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1x1MjAwQi9nLCAnJykucmVwbGFjZSgnJTNBJywgIjoiKTsKICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvKD865pys5biWKT/pmpDol4/nmoQ/5YaF5a65W++8mjpdPy8sICIiKTsKICAgICAgICAgICAgbGV0IHJlZyA9IC93c3M6W2EtekEtWjAtOV0rfCg/PD1ccyooPzrlr4Z85o+Q5Y+WfOiuv+mXrnzoqKrllY98a2V5fHBhc3N3b3JkfHB3ZHwjfFw/cD0pXHMqW+eggeeivF0/XHMqW++8mjo9XT9ccyopW2EtekEtWjAtOV17Myw4fS9pOwogICAgICAgICAgICBpZiAocmVnLnRlc3QodGV4dCkpIHsKICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHRleHQubWF0Y2gocmVnKTsKICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFswXTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfSwKCiAgICAgICAgLy/moLnmja7ln5/lkI3mo4DmtYvnvZHnm5jnsbvlnosKICAgICAgICBwYW5EZXRlY3QoKSB7CiAgICAgICAgICAgIGxldCBob3N0bmFtZSA9IGxvY2F0aW9uLmhvc3RuYW1lOwogICAgICAgICAgICBmb3IgKGxldCBuYW1lIGluIG9wdCkgewogICAgICAgICAgICAgICAgbGV0IHZhbCA9IG9wdFtuYW1lXTsKICAgICAgICAgICAgICAgIGlmICh2YWwuaG9zdC50ZXN0KGhvc3RuYW1lKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9LAoKICAgICAgICAvL+iHquWKqOWhq+WGmeWvhueggQogICAgICAgIGF1dG9GaWxsUGFzc3dvcmQoKSB7CiAgICAgICAgICAgIGxldCBxdWVyeSA9IHV0aWwucGFyc2VRdWVyeSgncHdkfHAnKTsKICAgICAgICAgICAgbGV0IGhhc2ggPSBsb2NhdGlvbi5oYXNoLnNsaWNlKDEpLnJlcGxhY2UoL1xXL2csICIiKSAvL2hhc2jkuK3lj6/og73lrZjlnKjlr4bnoIHvvIzpnIDopoHov4fmu6TmjonpnZ7lr4bnoIHlrZfnrKYKICAgICAgICAgICAgbGV0IHB3ZCA9IHF1ZXJ5IHx8IGhhc2g7CiAgICAgICAgICAgIGxldCBwYW5UeXBlID0gdGhpcy5wYW5EZXRlY3QoKTsKICAgICAgICAgICAgZm9yIChsZXQgbmFtZSBpbiBvcHQpIHsKICAgICAgICAgICAgICAgIGxldCB2YWwgPSBvcHRbbmFtZV07CiAgICAgICAgICAgICAgICBpZiAocGFuVHlwZSA9PT0gbmFtZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2YWwuc3RvcmFnZSA9PT0gJ2xvY2FsJykgewogICAgICAgICAgICAgICAgICAgICAgICAvL+W9k+WJjWxvY2Fs5a2Y5YKo55qE5a+G56CB5LiN5LiA5a6a5piv5b2T5YmN6ZO+5o6l55qE5a+G56CB77yM55So5oi35Y+v6IO96YCa6L+HdXJs55u05o6l6K6/6Zeu5oiW6ICF5oGi5aSN6aG16Z2i77yM6L+Z5qC35Y+W5Ye65p2l55qE5a+G56CB5Y+v6IO95piv5YW25LuW6ZO+5o6l55qECiAgICAgICAgICAgICAgICAgICAgICAgIC8v5aaC5p6c6IO95LuOdXJs5Lit6I635Y+W5Yiw5a+G56CB77yM5YiZ5bqU6K+l5LyY5YWI5L2/55SodXJs5Lit6I635Y+W55qE5a+G56CBCiAgICAgICAgICAgICAgICAgICAgICAgIC8vdXRpbC5nZXRWYWx1ZeafpeivouS4jeWIsGtleeaXtu+8jOm7mOiupOi/lOWbnnVuZGVmaW5lZO+8jOW3sue7j+W9ouaIkOmAu+i+keefrei3r++8jOatpOWkhOi1i+epuuWAvOaXoOaViOS5n+aXoOmcgOi1i+epuuWAvC7or6bop4FodHRwczovL2dpdGh1Yi5jb20vc3loeXoxOTkwL3BhbkFJL2NvbW1pdC9lZmI2ZmYwYzc3OTcyOTIwYjI2NjE3YmI4MzZhMmUxOWRkMTRhNzQ5CiAgICAgICAgICAgICAgICAgICAgICAgIHB3ZCA9IHB3ZCB8fCB1dGlsLmdldFZhbHVlKHZhbC5zdG9yYWdlUHdkTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHB3ZCAmJiB0aGlzLmRvRmlsbEFjdGlvbih2YWwuaW5wdXQsIHZhbC5idXR0b24sIHB3ZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh2YWwuc3RvcmFnZSA9PT0gJ2hhc2gnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghL14oPzp3c3M6W2EtekEtWlxkXSt8W2EtekEtWjAtOV17Myw4fSkkLy50ZXN0KHB3ZCkpIHsgLy/ov4fmu6TmjonkuI3mraPluLjnmoRIYXNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcHdkICYmIHRoaXMuZG9GaWxsQWN0aW9uKHZhbC5pbnB1dCwgdmFsLmJ1dHRvbiwgcHdkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBkb0ZpbGxBY3Rpb24oaW5wdXRTZWxlY3RvciwgYnV0dG9uU2VsZWN0b3IsIHB3ZCkgewogICAgICAgICAgICBsZXQgbWF4VGltZSA9IDEwOwogICAgICAgICAgICBsZXQgaW5zID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgICAgbWF4VGltZS0tOwogICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gdXRpbC5xdWVyeShpbnB1dFNlbGVjdG9yKTsKICAgICAgICAgICAgICAgIGxldCBidXR0b24gPSB1dGlsLnF1ZXJ5KGJ1dHRvblNlbGVjdG9yKTsKICAgICAgICAgICAgICAgIGlmIChpbnB1dCAmJiAhdXRpbC5pc0hpZGRlbihpbnB1dCkpIHsKICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGlucyk7CiAgICAgICAgICAgICAgICAgICAgU3dhbC5maXJlKHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3Q6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAndG9wJywKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdBSeW3suivhuWIq+WIsOWvhuegge+8geato+iHquWKqOW4ruaCqOWhq+WGmScsCiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdzdWNjZXNzJywKICAgICAgICAgICAgICAgICAgICAgICAgdGltZXI6IDIwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzCiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGxldCBsYXN0VmFsdWUgPSBpbnB1dC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHB3ZDsKICAgICAgICAgICAgICAgICAgICAvL1Z1ZSAmIFJlYWN0IOinpuWPkSBpbnB1dCDkuovku7YKICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQoJ2lucHV0Jywge2J1YmJsZXM6IHRydWV9KTsKICAgICAgICAgICAgICAgICAgICBsZXQgdHJhY2tlciA9IGlucHV0Ll92YWx1ZVRyYWNrZXI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tlci5zZXRWYWx1ZShsYXN0VmFsdWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHV0aWwuZ2V0VmFsdWUoJ3NldHRpbmdfYXV0b19jbGlja19idG4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB1dGlsLnNsZWVwKDEwMDApOyAvLzHnp5LlkI7ngrnlh7vmjInpkq4KICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtYXhUaW1lID09PSAwICYmIGNsZWFySW50ZXJ2YWwoaW5zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgODAwKTsKICAgICAgICB9LAoKICAgICAgICAvL+mHjee9ruivhuWIq+asoeaVsAogICAgICAgIGNsZWFySWRlbnRpZnlUaW1lcygpIHsKICAgICAgICAgICAgbGV0IHJlcyA9IFN3YWwuZmlyZSh7CiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLAogICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7lrpropoHph43nva7or4bliKvmrKHmlbDlkJfvvJ8nLAogICAgICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnLAogICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICBjdXN0b21DbGFzcwogICAgICAgICAgICB9KS50aGVuKHJlcyA9PiB7CiAgICAgICAgICAgICAgICB0aGlzLmxhc3RUZXh0ID0gJ2xvcmVtJic7CiAgICAgICAgICAgICAgICBpZiAocmVzLmlzQ29uZmlybWVkKSB7CiAgICAgICAgICAgICAgICAgICAgdXRpbC5zZXRWYWx1ZSgnc2V0dGluZ19zdWNjZXNzX3RpbWVzJywgMCk7CiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5nbygwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgLy/or4bliKvovpPlhaXmoYbkuK3nmoTlhoXlrrkKICAgICAgICBzaG93SWRlbnRpZnlCb3goKSB7CiAgICAgICAgICAgIFN3YWwuZmlyZSh7CiAgICAgICAgICAgICAgICB0aXRsZTogJ+ivhuWIq+WJquWIh+adv+S4reaWh+WtlycsCiAgICAgICAgICAgICAgICBpbnB1dDogJ3RleHRhcmVhJywKICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6ICfoi6XpgInmlrnlvI/kuIDvvIzor7fmjIkgQ3RybCtWIOeymOi0tOimgeivhuWIq+eahOaWh+WtlycsCiAgICAgICAgICAgICAgICBodG1sOiBgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxMnB4O2NvbG9yOiAjOTk5O21hcmdpbi1ib3R0b206IDhweDt0ZXh0LWFsaWduOiBjZW50ZXI7Ij7mj5DnpLrvvJrlnKjku7vmhI/nvZHpobXmjInkuIsgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiA3MDA7Ij4ke3V0aWwuZ2V0VmFsdWUoInNldHRpbmdfaG90a2V5cyIpfTwvc3Bhbj4g6ZSu5Y+v5b+r6YCf5omT5byA5pys56qX5Y+j44CCPC9kaXY+PGRpdiBzdHlsZT0iZm9udC1zaXplOiAxNHB4O2xpbmUtaGVpZ2h0OiAyMnB4O3BhZGRpbmc6IDEwcHggMCA1cHg7dGV4dC1hbGlnbjogbGVmdDsiPjxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDttYXJnaW4tYm90dG9tOiA4cHg7Zm9udC13ZWlnaHQ6IDcwMDsiPuaUr+aMgeS7peS4i+S4pOenjeaWueW8j++8mjwvZGl2PjxkaXY+PGI+5pa55byP5LiA77yaPC9iPuebtOaOpeeymOi0tOaWh+Wtl+WIsOi+k+WFpeahhu+8jOeCueWHu+KAnOivhuWIq+aWueahhuWGheWuueKAneaMiemSruOAgjwvZGl2PjxkaXY+PGI+5pa55byP5LqM77yaPC9iPueCueWHu+KAnOivu+WPluWJquWIh+adv+KAneaMiemSruOAgjxzcGFuIHN0eWxlPSJjb2xvcjogI2QxNDUyOTtmb250LXNpemU6IDEycHg7Ij7kvJrlvLnlh7rigJzmjojkuojnvZHnq5nor7vlj5bliarliIfmnb/igJ3mnYPpmZDvvIzlkIzmhI/lkI7kvJroh6rliqjor4bliKvliarliIfmnb/kuK3nmoTmloflrZfjgII8L3NwYW4+PC9kaXY+PC9kaXY+YCwKICAgICAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogZmFsc2UsCiAgICAgICAgICAgICAgICBzaG93RGVueUJ1dHRvbjogdHJ1ZSwKICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn6K+G5Yir5pa55qGG5YaF5a65JywKICAgICAgICAgICAgICAgIGRlbnlCdXR0b25UZXh0OiAn6K+75Y+W5Ymq5YiH5p2/JywKICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzCiAgICAgICAgICAgIH0pLnRoZW4ocmVzID0+IHsKICAgICAgICAgICAgICAgIGlmIChyZXMuaXNDb25maXJtZWQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNtYXJ0SWRlbnRpZnkobnVsbCwgcmVzLnZhbHVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyZXMuaXNEZW5pZWQpIHsKICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCkudGhlbih0ZXh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zbWFydElkZW50aWZ5KG51bGwsIHRleHQpOwogICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QuZmlyZSh7dGl0bGU6ICfor7vlj5bliarliIfmnb/lpLHotKXvvIzor7flhYjmjojmnYPmiJbmiYvliqjnspjotLTlkI7or4bliKvvvIEnLCBpY29uOiAnZXJyb3InfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIC8v5pi+56S66K6+572uCiAgICAgICAgc2hvd1NldHRpbmdCb3goKSB7CiAgICAgICAgICAgIGxldCBodG1sID0gYDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMWVtOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0icGFuYWktc2V0dGluZy1sYWJlbCI+5aGr5YaZ5a+G56CB5ZCO6Ieq5Yqo5o+Q5LqkPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iUy1BdXRvIiAke3V0aWwuZ2V0VmFsdWUoJ3NldHRpbmdfYXV0b19jbGlja19idG4nKSA/ICdjaGVja2VkJyA6ICcnfSBjbGFzcz0icGFuYWktc2V0dGluZy1jaGVja2JveCI+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJwYW5haS1zZXR0aW5nLWxhYmVsIj7liY3lj7DmiZPlvIDnvZHnm5jmoIfnrb7pobU8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJTLUFjdGl2ZSIgJHt1dGlsLmdldFZhbHVlKCdzZXR0aW5nX2FjdGl2ZV9pbl9mcm9udCcpID8gJ2NoZWNrZWQnIDogJyd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJwYW5haS1zZXR0aW5nLWNoZWNrYm94Ij48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9InBhbmFpLXNldHRpbmctbGFiZWwiPuWAkuiuoeaXtue7k+adn+iHquWKqOaJk+W8gDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IlMtVGltZXItT3BlbiIgJHt1dGlsLmdldFZhbHVlKCdzZXR0aW5nX3RpbWVyX29wZW4nKSA/ICdjaGVja2VkJyA6ICcnfSBjbGFzcz0icGFuYWktc2V0dGluZy1jaGVja2JveCI+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJwYW5haS1zZXR0aW5nLWxhYmVsIiBpZD0iUGFuYWktUmFuZ2UtV3JhcHBlciIgc3R5bGU9IiR7dXRpbC5nZXRWYWx1ZSgnc2V0dGluZ190aW1lcl9vcGVuJykgPyAnJyA6ICdkaXNwbGF5OiBub25lJ30iPjxzcGFuPuWAkuiuoeaXtiA8c3BhbiBpZD0iVGltZXItVmFsdWUiPu+8iCR7dXRpbC5nZXRWYWx1ZSgnc2V0dGluZ190aW1lcicpIC8gMTAwMH3np5LvvIk8L3NwYW4+PC9zcGFuPjxpbnB1dCB0eXBlPSJyYW5nZSIgaWQ9IlMtVGltZXIiIG1pbj0iMCIgbWF4PSIxMDAwMCIgc3RlcD0iNTAwIiB2YWx1ZT0iJHt1dGlsLmdldFZhbHVlKCdzZXR0aW5nX3RpbWVyJyl9IiBzdHlsZT0id2lkdGg6IDIwMHB4OyI+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJwYW5haS1zZXR0aW5nLWxhYmVsIj7lv6vmjbfplK7orr7nva48aW5wdXQgdHlwZT0idGV4dCIgaWQ9IlMtaG90a2V5cyIgdmFsdWU9IiR7dXRpbC5nZXRWYWx1ZSgnc2V0dGluZ19ob3RrZXlzJyl9IiBzdHlsZT0id2lkdGg6IDEwMHB4OyI+PC9sYWJlbD4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gOwogICAgICAgICAgICBTd2FsLmZpcmUoewogICAgICAgICAgICAgICAgdGl0bGU6ICfor4bliKvliqnmiYvphY3nva4nLAogICAgICAgICAgICAgICAgaHRtbCwKICAgICAgICAgICAgICAgIGljb246ICdpbmZvJywKICAgICAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSwKICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn5L+d5a2YJywKICAgICAgICAgICAgICAgIGZvb3RlcjogJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjtmb250LXNpemU6IDFlbTsiPueCueWHu+afpeeciyA8YSBocmVmPSJodHRwczovL3d3dy55b3V4aWFvaG91LmNvbS90b29sL2luc3RhbGwtcGFuYWkuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPuS9v+eUqOivtOaYjjwvYT7vvIzliqnmiYvlhY3otLnlvIDmupDvvIxQb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXhpYW9ob3UuY29tIj7msrnlsI/njLQ8L2E+PC9kaXY+JywKICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzCiAgICAgICAgICAgIH0pLnRoZW4oKHJlcykgPT4gewogICAgICAgICAgICAgICAgcmVzLmlzQ29uZmlybWVkICYmIGhpc3RvcnkuZ28oMCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1MtQXV0bycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgICAgICAgICAgICB1dGlsLnNldFZhbHVlKCdzZXR0aW5nX2F1dG9fY2xpY2tfYnRuJywgZS50YXJnZXQuY2hlY2tlZCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUy1BY3RpdmUnKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4gewogICAgICAgICAgICAgICAgdXRpbC5zZXRWYWx1ZSgnc2V0dGluZ19hY3RpdmVfaW5fZnJvbnQnLCBlLnRhcmdldC5jaGVja2VkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdTLVRpbWVyLU9wZW4nKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4gewogICAgICAgICAgICAgICAgbGV0IHJhbmdlV3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdQYW5haS1SYW5nZS1XcmFwcGVyJyk7CiAgICAgICAgICAgICAgICBlLnRhcmdldC5jaGVja2VkID8gcmFuZ2VXcmFwcGVyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCcgOiByYW5nZVdyYXBwZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHV0aWwuc2V0VmFsdWUoJ3NldHRpbmdfdGltZXJfb3BlbicsIGUudGFyZ2V0LmNoZWNrZWQpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1MtVGltZXInKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4gewogICAgICAgICAgICAgICAgdXRpbC5zZXRWYWx1ZSgnc2V0dGluZ190aW1lcicsIGUudGFyZ2V0LnZhbHVlKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdUaW1lci1WYWx1ZScpLmlubmVyVGV4dCA9IGDvvIgke2UudGFyZ2V0LnZhbHVlIC8gMTAwMH3np5LvvIlgOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1MtaG90a2V5cycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgICAgICAgICAgICB1dGlsLnNldFZhbHVlKCdzZXR0aW5nX2hvdGtleXMnLCBlLnRhcmdldC52YWx1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIHJlZ2lzdGVyTWVudUNvbW1hbmQoKSB7CiAgICAgICAgICAgIEdNX3JlZ2lzdGVyTWVudUNvbW1hbmQoJ/CfkYAg5bey6K+G5Yir77yaJyArIHV0aWwuZ2V0VmFsdWUoJ3NldHRpbmdfc3VjY2Vzc190aW1lcycpICsgJ+asoScsICgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJZGVudGlmeVRpbWVzKCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBHTV9yZWdpc3Rlck1lbnVDb21tYW5kKGDwn5OL77iPIOivhuWIq+WJquWIh+adv+S4reaWh+Wtl++8iOW/q+aNt+mUriAke3V0aWwuZ2V0VmFsdWUoJ3NldHRpbmdfaG90a2V5cycpfe+8iWAsICgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lkZW50aWZ5Qm94KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBHTV9yZWdpc3Rlck1lbnVDb21tYW5kKCfimpnvuI8g6K6+572uJywgKCkgPT4gewogICAgICAgICAgICAgICAgdGhpcy5zaG93U2V0dGluZ0JveCgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9LAoKICAgICAgICBhZGRQbHVnaW5TdHlsZSgpIHsKICAgICAgICAgICAgbGV0IHN0eWxlID0gYAogICAgICAgICAgICAgICAgLnBhbmFpLWNvbnRhaW5lciB7IHotaW5kZXg6IDk5OTk5IWltcG9ydGFudCB9CiAgICAgICAgICAgICAgICAucGFuYWktcG9wdXAgeyBmb250LXNpemU6IDE0cHggIWltcG9ydGFudCB9CiAgICAgICAgICAgICAgICAucGFuYWktc2V0dGluZy1sYWJlbCB7IGRpc3BsYXk6IGZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47cGFkZGluZy10b3A6IDIwcHg7IH0KICAgICAgICAgICAgICAgIC5wYW5haS1zZXR0aW5nLWNoZWNrYm94IHsgd2lkdGg6IDE2cHg7aGVpZ2h0OiAxNnB4OyB9CiAgICAgICAgICAgIGA7CgogICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGVhZCkgewogICAgICAgICAgICAgICAgdXRpbC5hZGRTdHlsZSgnc3dhbC1wdWItc3R5bGUnLCAnc3R5bGUnLCBHTV9nZXRSZXNvdXJjZVRleHQoJ3N3YWxTdHlsZScpKTsKICAgICAgICAgICAgICAgIHV0aWwuYWRkU3R5bGUoJ3BhbmFpLXN0eWxlJywgJ3N0eWxlJywgc3R5bGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb25zdCBoZWFkT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7CiAgICAgICAgICAgICAgICB1dGlsLmFkZFN0eWxlKCdzd2FsLXB1Yi1zdHlsZScsICdzdHlsZScsIEdNX2dldFJlc291cmNlVGV4dCgnc3dhbFN0eWxlJykpOwogICAgICAgICAgICAgICAgdXRpbC5hZGRTdHlsZSgncGFuYWktc3R5bGUnLCAnc3R5bGUnLCBzdHlsZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBoZWFkT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5oZWFkLCB7Y2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CiAgICAgICAgfSwKCiAgICAgICAgaXNUb3BXaW5kb3coKSB7CiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuc2VsZiA9PT0gd2luZG93LnRvcDsKICAgICAgICB9LAoKICAgICAgICBpbml0KCkgewogICAgICAgICAgICB0aGlzLmluaXRWYWx1ZSgpOwogICAgICAgICAgICB0aGlzLmFkZFBsdWdpblN0eWxlKCk7CiAgICAgICAgICAgIHRoaXMuYWRkSG90S2V5KCk7CiAgICAgICAgICAgIHRoaXMuYXV0b0ZpbGxQYXNzd29yZCgpOwogICAgICAgICAgICB0aGlzLmFkZFBhZ2VMaXN0ZW5lcigpOwogICAgICAgICAgICB0aGlzLmlzVG9wV2luZG93KCkgJiYgdGhpcy5yZWdpc3Rlck1lbnVDb21tYW5kKCk7CiAgICAgICAgfSwKICAgIH07CgogICAgbWFpbi5pbml0KCk7Cn0pKCk7Cg==
Add Comment
Please, Sign In to add comment