xiaomianao666

插件名:global_全网VIP视频免费破解【专注一个脚本只做一件事件】长期更新,放心

Aug 28th, 2023
3,657
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_全网VIP视频免费破解【专注一个脚本只做一件事件】长期更新,放心@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICAgICAgIOWFqOe9kVZJUOinhumikeWFjei0ueegtOino+OAkOS4k+azqOS4gOS4quiEmuacrOWPquWBmuS4gOS7tuS6i+S7tuOAkemVv+acn+abtOaWsO+8jOaUvuW/g+S9v+eUqAovLyBAbmFtZXNwYWNlICAgICAgICAgaHR0cDovL3RhbXBlcm1vbmtleS5uZXQvCi8vIEB2ZXJzaW9uICAgICAgICAgICAxLjYuMQovLyBAZGVzY3JpcHRpb24gICAgICAg5YWo572RVklQ6KeG6aKR5YWN6LS556C06Kej44CQ5LiT5rOo5LiA5Liq6ISa5pys5Y+q5YGa5LiA5Lu25LqL5Lu244CR6ZW/5pyf5pu05paw77yM5pS+5b+D5L2/55So44CC5pSv5oyB77ya6IW+6K6v44CB54ix5aWH6Im644CB5LyY6YW344CB6IqS5p6c44CBQmlsaWJpbGnjgIFwcHR244CB5LmQ6KeG562J5YW25a6D572R56uZ77ybCi8vIEBpY29uICAgICAgICAgICAgICBkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVBa0FDUUFBRC8vZ0FVVTI5bWRIZGhjbVU2SUZOdWFYQmhjM1JsLzlzQVF3QURBZ0lEQWdJREF3TURCQU1EQkFVSUJRVUVCQVVLQndjR0NBd0tEQXdMQ2dzTERRNFNFQTBPRVE0TEN4QVdFQkVURkJVVkZRd1BGeGdXRkJnU0ZCVVUvOXNBUXdFREJBUUZCQVVKQlFVSkZBMExEUlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVS84QUFFUWdBR2dBZUF3RWlBQUlSQVFNUkFmL0VBQjhBQUFFRkFRRUJBUUVCQUFBQUFBQUFBQUFCQWdNRUJRWUhDQWtLQy8vRUFMVVFBQUlCQXdNQ0JBTUZCUVFFQUFBQmZRRUNBd0FFRVFVU0lURkJCaE5SWVFjaWNSUXlnWkdoQ0NOQ3NjRVZVdEh3SkROaWNvSUpDaFlYR0JrYUpTWW5LQ2txTkRVMk56ZzVPa05FUlVaSFNFbEtVMVJWVmxkWVdWcGpaR1ZtWjJocGFuTjBkWFozZUhsNmc0U0Zob2VJaVlxU2s1U1ZscGVZbVpxaW82U2xwcWVvcWFxeXM3UzF0cmU0dWJyQ3c4VEZ4c2ZJeWNyUzA5VFYxdGZZMmRyaDR1UGs1ZWJuNk9ucThmTHo5UFgyOS9qNSt2L0VBQjhCQUFNQkFRRUJBUUVCQVFFQUFBQUFBQUFCQWdNRUJRWUhDQWtLQy8vRUFMVVJBQUlCQWdRRUF3UUhCUVFFQUFFQ2R3QUJBZ01SQkFVaE1RWVNRVkVIWVhFVElqS0JDQlJDa2FHeHdRa2pNMUx3RldKeTBRb1dKRFRoSmZFWEdCa2FKaWNvS1NvMU5qYzRPVHBEUkVWR1IwaEpTbE5VVlZaWFdGbGFZMlJsWm1kb2FXcHpkSFYyZDNoNWVvS0RoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1TGo1T1htNStqcDZ2THo5UFgyOS9qNSt2L2FBQXdEQVFBQ0VRTVJBRDhBOC9zdFRpdlpMaEZWMGVCdHJod0IrUFhwWGMvQmo0YlhYeHkxT2JUZEUxWFRyRFVFM0dPMzFQemtNeXFNc3l0SEU2NEdmNGlENkExNVRyVXgwZlVyaVZRY1hjQlVZL3ZqaXZwYjloR3ordy9HTFRvY1lLNmRjYnZxUUNhL1E2ZWM0NmRXdGgyMXpVRk56ZHQzemZ1dlM4YnRuZzVyd25rdUN5M0RaclNpM0RHeW9xaXVaNkpRZjFtL2ZscTJoRyt5TVBUZjJlOVgxblZQRUZsWmE5b2x4L1lUbU85bkRYS3hvNExCMUc2QU14VW9ja0RCN0UxaStKdmcvcm5oencvcGV1UlNXdXQ2UnFQK3B1OU1NamdIQklESzZLd09BZTNiQndhK2cvaFFFUGlQNDFDVm1TTTZuZGJtUmR4QTN6WklHUm44eFhrbmlQNDJXZHI0QzBEd3A0WGh2UEkwL3dEZVRYMm9Jc2J5dmhzaFVSMkFHV0o1WTloNzErY1V1S3VLOFp4Vmlzcnk2S3FVcUZTa3BKeFNpcWM2RG5LVXA3cVhQeXFLVjdwdjNXdFY4Tld5ekxLR0FoWHJOeGxOVHRaM2ZOR2Rra3UzTGUvNW5qVTF0RGNiZk5pU1hhY3J2VUhCOXEzL0FBLzQzOFIrRW81bzlEMS9WTkdTWWhwVjArOGtnRGtkQ3dSaG44YXhhSy9vZDBhYmJiaXRkOU43YlhQaC9yTmZsaERuZG8zc3J1eXZ2YnRmcmJjNktmNGorTExxNHVKNXZGR3N6VDNDQ09hU1RVSm1hVkJuQ3NTMlNCazhIMU5jN1JSVVU4TlJveWxPbEJSY3JYYVNUZHRGZnZaYkdVNnRTcGJuazNidXovL1oKLy8gQGF1dGhvciAgICAgICAgICAgIHdfX3lpCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vKi55b3VrdS5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovLyouaXFpeWkuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly8qLmlxLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vKi5sZS5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovL3YucXEuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly9tLnYucXEuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly8qLnR1ZG91LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vKi5tZ3R2LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vdHYuc29odS5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovL2ZpbG0uc29odS5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovLyouMTkwNS5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovLyouYmlsaWJpbGkuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly8qLnBwdHYuY29tLyoKCi8vIEByZXF1aXJlICAgICAgICAgICBodHRwczovL2Nkbi5ib290Y2RuLm5ldC9hamF4L2xpYnMvanF1ZXJ5LzMuMi4xL2pxdWVyeS5taW4uanMKLy8gQGNvbm5lY3QgICAgICAgICAgIGFwaS5iaWxpYmlsaS5jb20KLy8gQGdyYW50ICAgICAgICAgICAgIHVuc2FmZVdpbmRvdwovLyBAZ3JhbnQgICAgICAgICAgICAgR01fYWRkU3R5bGUKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX29wZW5JblRhYgovLyBAZ3JhbnQgICAgICAgICAgICAgR01fZ2V0VmFsdWUKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX3NldFZhbHVlCi8vIEBncmFudCAgICAgICAgICAgICBHTV94bWxodHRwUmVxdWVzdAovLyBAZ3JhbnQgICAgICAgICAgICAgR01fbG9nCi8vIEBjaGFyc2V0CQkgICAgICBVVEYtOAovLyBAbGljZW5zZSAgICAgICAgICAgR1BMIExpY2Vuc2UKLy8gPT0vVXNlclNjcmlwdD09Cgpjb25zdCB1dGlsID0gKGZ1bmN0aW9uICgpIHsKCiAgICBmdW5jdGlvbiBmaW5kVGFyZ2V0RWxlbWVudCh0YXJnZXRDb250YWluZXIpIHsKICAgICAgICBjb25zdCBib2R5ID0gd2luZG93LmRvY3VtZW50OwogICAgICAgIGxldCB0YWJDb250YWluZXI7CiAgICAgICAgbGV0IHRyeVRpbWUgPSAwOwogICAgICAgIGNvbnN0IG1heFRyeVRpbWUgPSAxMjA7CiAgICAgICAgbGV0IHN0YXJ0VGltZXN0YW1wOwogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHRyeUZpbmRFbGVtZW50KHRpbWVzdGFtcCkgewogICAgICAgICAgICAgICAgaWYgKCFzdGFydFRpbWVzdGFtcCkgewogICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZXN0YW1wID0gdGltZXN0YW1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgZWxhcHNlZFRpbWUgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWVzdGFtcDsKCiAgICAgICAgICAgICAgICBpZiAoZWxhcHNlZFRpbWUgPj0gNTAwKSB7CiAgICAgICAgICAgICAgICAgICAgR01fbG9nKCLmn6Xmib7lhYPntKDvvJoiICsgdGFyZ2V0Q29udGFpbmVyICsgIu+8jOesrCIgKyB0cnlUaW1lICsgIuasoSIpOwogICAgICAgICAgICAgICAgICAgIHRhYkNvbnRhaW5lciA9IGJvZHkucXVlcnlTZWxlY3Rvcih0YXJnZXRDb250YWluZXIpOwogICAgICAgICAgICAgICAgICAgIGlmICh0YWJDb250YWluZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0YWJDb250YWluZXIpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKyt0cnlUaW1lID09PSBtYXhUcnlUaW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZXN0YW1wID0gdGltZXN0YW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghdGFiQ29udGFpbmVyICYmIHRyeVRpbWUgPCBtYXhUcnlUaW1lKSB7CiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRyeUZpbmRFbGVtZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRyeUZpbmRFbGVtZW50KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiB1cmxDaGFuZ2VSZWxvYWQoKSB7CiAgICAgICAgY29uc3Qgb2xkSHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwogICAgICAgIGxldCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHsKICAgICAgICAgICAgbGV0IG5ld0hyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAgICAgICAgaWYgKG9sZEhyZWYgIT09IG5ld0hyZWYpIHsKICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSwgNTAwKTsKICAgIH0KCiAgICBmdW5jdGlvbiByZW9tdmVWaWRlbygpIHsKICAgICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgICAgICAgIGZvciAobGV0IHZpZGVvIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ2aWRlbyIpKSB7CiAgICAgICAgICAgICAgICBpZiAodmlkZW8uc3JjKSB7CiAgICAgICAgICAgICAgICAgICAgdmlkZW8ucmVtb3ZlQXR0cmlidXRlKCJzcmMiKTsKICAgICAgICAgICAgICAgICAgICB2aWRlby5tdXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgdmlkZW8ubG9hZCgpOwogICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCA1MDApOwogICAgfQoKICAgIGZ1bmN0aW9uIHN5bmNSZXF1ZXN0KG9wdGlvbikgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgICAgIG9wdGlvbi5vbmxvYWQgPSAocmVzKSA9PiB7CiAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIG9wdGlvbi5vbmVycm9yID0gKGVycikgPT4gewogICAgICAgICAgICAgICAgcmVqZWN0KGVycik7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIEdNX3htbGh0dHBSZXF1ZXN0KG9wdGlvbik7CiAgICAgICAgfSk7CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICByZXE6IChvcHRpb24pID0+IHN5bmNSZXF1ZXN0KG9wdGlvbiksCiAgICAgICAgZmluZFRhcmdldEVsZTogKHRhcmdldEVsZSkgPT4gZmluZFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlKSwKICAgICAgICB1cmxDaGFuZ2VSZWxvYWQ6ICgpID0+IHVybENoYW5nZVJlbG9hZCgpLAogICAgICAgIHJlb212ZVZpZGVvOiAoKSA9PiByZW9tdmVWaWRlbygpCiAgICB9Cn0pKCk7CgoKY29uc3Qgc3VwZXJWaXAgPSAoZnVuY3Rpb24gKCkgewoKICAgIGNvbnN0IF9DT05GSUdfID0gewogICAgICAgIGlzTW9iaWxlOiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC8oQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaSkvaSksCiAgICAgICAgY3VycmVudFBsYXllck5vZGU6IG51bGwsCiAgICAgICAgdmlwQm94SWQ6ICd2aXBfanhfYm94JyArIE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwKSwKICAgICAgICBmbGFnOiAiZmxhZ192aXAiLAogICAgICAgIGF1dG9QbGF5ZXJLZXk6ICJhdXRvX3BsYXllcl9rZXkiICsgd2luZG93LmxvY2F0aW9uLmhvc3QsCiAgICAgICAgYXV0b1BsYXllclZhbDogImF1dG9fcGxheWVyX3ZhbHVlXyIgKyB3aW5kb3cubG9jYXRpb24uaG9zdCwKICAgICAgICB2aWRlb1BhcnNlTGlzdDogWwogICAgICAgICAgICB7Im5hbWUiOiAi57u85ZCIL0Lnq5kiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vanguanNvbnBsYXllci5jb20vcGxheWVyLz91cmw9In0sCiAgICAgICAgICAgIC8qeyJuYW1lIjogIlBsYXllci1KWSIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5wbGF5ZXJqeS5jb20vP3VybD0ifSwqLwogICAgICAgICAgICB7Im5hbWUiOiAi6Jm+57GzIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL2p4LnhtZmx2LmNvbS8/dXJsPSJ9LAogICAgICAgICAgICAvKnsibmFtZSI6ICJOTlhWIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL2p4Lm5ueHYuY24vdHYucGhwP3VybD0ifSwqLwogICAgICAgICAgICAvKnsibmFtZSI6ICLlkKzkuZAiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vanguZGo2dS5jb20vP3VybD0ifSwqLwogICAgICAgICAgICAvKnsibmFtZSI6ICJSREhLIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL2p4LnJkaGsubmV0Lz92PSJ9LCovCiAgICAgICAgICAgIHsibmFtZSI6ICJPSyIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9hcGkub2tqeC5jYzozMzg5L2p4LnBocD91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJPS0pYIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL29ranguY2MvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIllUIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL2p4Lnlhbmd0dS50b3AvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIueIseixhiIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5haWRvdWVyLm5ldC8/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAi54yq6LmEIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL2p4Lml6dHl5LmNvbS9CZWkvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogInlwYXJzZSIsICJ0eXBlIjogIjEsMiIsICJ1cmwiOiAiaHR0cHM6Ly9qeC55cGFyc2UuY29tL2luZGV4LnBocD91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLlpJzluZUiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vd3d3LnllbXUueHl6Lz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJtMTkwNyIsICJ0eXBlIjogIjEsMiIsICJ1cmwiOiAiaHR0cHM6Ly9pbTE5MDcudG9wLz9qeD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIk1BTyIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly93d3cubXRvc3ouY29tL20zdTgucGhwP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIk0zVThUViIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5tM3U4LnR2L2ppZXhpLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLpk63kurrkupEiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vcGFyc2UuMTIzbWluZ3Jlbi5jb20vP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIjRrZHYiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vanguNGtkdi5jb20vP3VybD0ifSwKCiAgICAgICAgICAgIHsibmFtZSI6ICIxNzE3IiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL2NrbW92LmNjeWpqZC5jb20vY2ttb3YvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIjgwOTAiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vd3d3LjgwOTBnLmNuLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJxaWFucWkiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vYXBpLnFpYW5xaS5uZXQvdmlwLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJsYW9iYW5kcSIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly92aXAubGFvYmFuZHEuY29tL2ppZXhpLnBocD91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJwbGF5bTN1OCIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly93d3cucGxheW0zdTguY24vamlleGkucGhwP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIuaXoOWQjeWwj+ermSIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly93d3cuYWRtaW5pc3RyYXRvcncuY29tL3ZpZGVvLnBocD91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJDSyIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly93d3cuY2twbGF5ZXIudmlwL2ppZXhpLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLnm5jlj6QiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vZ28ueWgwNTIzLmNuL3kuY3k/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAiQmxibyIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5ibGJvLmNjOjQ0MzMvP3VybD0ifSwKICAgICAgICBdLAogICAgICAgIHBsYXllckNvbnRhaW5lcnM6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaG9zdDogInYucXEuY29tIiwKICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogIiNtb2RfcGxheWVyLCNwbGF5ZXItY29udGFpbmVyLC5jb250YWluZXItcGxheWVyIiwKICAgICAgICAgICAgICAgIG5hbWU6ICJEZWZhdWx0IiwKICAgICAgICAgICAgICAgIGRpc3BsYXlOb2RlczogWyIjbWFza19sYXllciIsICIubW9kX3ZpcF9wb3B1cCIsICIjbWFza19sYXllciIsICIucGFuZWwtdGlwLXBheSJdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGhvc3Q6ICJtLnYucXEuY29tIiwKICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogIi5tb2RfcGxheWVyLCNwbGF5ZXIiLAogICAgICAgICAgICAgICAgbmFtZTogIkRlZmF1bHQiLAogICAgICAgICAgICAgICAgZGlzcGxheU5vZGVzOiBbIi5tb2RfdmlwX3BvcHVwIiwgIltjbGFzc149YXBwX10sW2NsYXNzXj1hcHAtXSxbY2xhc3MqPV9hcHBfXSxbY2xhc3MqPS1hcHAtXSxbY2xhc3MkPV9hcHBdLFtjbGFzcyQ9LWFwcF0iLCAiZGl2W2R0LWVpZD1vcGVuX2FwcF9ib3R0b21dIiwgImRpdi52aWRlb19mdW5jdGlvbi52aWRlb19mdW5jdGlvbl9uZXciLCAiYVtvcGVuLWFwcF0iLCAic2VjdGlvbi5tb2Rfc291cmNlIiwgInNlY3Rpb24ubW9kX2JveC5tb2Rfc2lkZXNsaXBfaC5tb2RfbXVsdGlfZmlndXJlc19oLHNlY3Rpb24ubW9kX3NpZGVzbGlwX3ByaXZpbGVnZXMsc2VjdGlvbi5tb2RfZ2FtZV9yZWMiLCAiLmF0LWFwcC1iYW5uZXIiXQogICAgICAgICAgICB9LAoKICAgICAgICAgICAge2hvc3Q6ICJ3Lm1ndHYuY29tIiwgY29udGFpbmVyOiAiI21ndHYtcGxheWVyLXdyYXAiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInd3dy5tZ3R2LmNvbSIsIGNvbnRhaW5lcjogIiNtZ3R2LXBsYXllci13cmFwIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaG9zdDogIm0ubWd0di5jb20iLAogICAgICAgICAgICAgICAgY29udGFpbmVyOiAiLnZpZGVvLWFyZWEiLAogICAgICAgICAgICAgICAgbmFtZTogIkRlZmF1bHQiLAogICAgICAgICAgICAgICAgZGlzcGxheU5vZGVzOiBbImRpdltjbGFzc149bWctYXBwXSIsICIudmlkZW8tYXJlYS1iYXIiLCAiLm9wZW4tYXBwLXBvcHVwIl0KICAgICAgICAgICAgfSwKICAgICAgICAgICAge2hvc3Q6ICJ3d3cuYmlsaWJpbGkuY29tIiwgY29udGFpbmVyOiAiI3BsYXllcl9tb2R1bGUsI2JpbGliaWxpUGxheWVyLCNiaWxpYmlsaS1wbGF5ZXIiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogIm0uYmlsaWJpbGkuY29tIiwgY29udGFpbmVyOiAiLnBsYXllci13cmFwcGVyLC5wbGF5ZXItY29udGFpbmVyLC5tcGxheWVyIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ3d3cuaXFpeWkuY29tIiwgY29udGFpbmVyOiAiI2ZsYXNoYm94IiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFsiI3BsYXllclBvcHVwIiwgImRpdltjbGFzc149cXktaGVhZGVyLWxvZ2luLXBvcF0iLCAic2VjdGlvbltjbGFzc149bW9kYWwtY292ZXJfXSIgLCIudG9hc3QiXX0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGhvc3Q6ICJtLmlxaXlpLmNvbSIsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICIubS12aWRlby1wbGF5ZXItd3JhcCIsCiAgICAgICAgICAgICAgICBuYW1lOiAiRGVmYXVsdCIsCiAgICAgICAgICAgICAgICBkaXNwbGF5Tm9kZXM6IFsiZGl2Lm0taXF5R3VpZGUtbGF5ZXIiLCAiYVtkb3duLWFwcC1hbmRyb2lkLXVybF0iLCAiW25hbWU9bS1leHRlbmRCYXJdIiwgIltjbGFzcyo9Q2hhbm5lbEhvbWVCYW5uZXJdIiwgInNlY3Rpb24ubS1ob3RXb3Jkcy1ib3R0b20iXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7aG9zdDogInd3dy5pcS5jb20iLCBjb250YWluZXI6ICIuaW50bC12aWRlby13cmFwIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ2LnlvdWt1LmNvbSIsIGNvbnRhaW5lcjogIiNwbGF5ZXIiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogWyIjaWZyYW1hV3JhcHBlciIsICIjY2hlY2tvdXRfY291bnRlcl9tYXNrIiwgIiNjaGVja291dF9jb3VudGVyX3BvcHVwIl19LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBob3N0OiAibS55b3VrdS5jb20iLAogICAgICAgICAgICAgICAgY29udGFpbmVyOiAiI3BsYXllciwuaDUtZGV0YWlsLXBsYXllciIsCiAgICAgICAgICAgICAgICBuYW1lOiAiRGVmYXVsdCIsCiAgICAgICAgICAgICAgICBkaXNwbGF5Tm9kZXM6IFsiLmNhbGxFbmRfYm94IiwgIi5oNS1kZXRhaWwtZ3VpZGUiLCAiLmg1LWRldGFpbC12aXAtZ3VpZGUiXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7aG9zdDogInR2LnNvaHUuY29tIiwgY29udGFpbmVyOiAiI3BsYXllciIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbXX0sCiAgICAgICAgICAgIHtob3N0OiAiZmlsbS5zb2h1LmNvbSIsIGNvbnRhaW5lcjogIiNwbGF5ZXJXcmFwIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ3d3cubGUuY29tIiwgY29udGFpbmVyOiAiI2xlX3BsYXlib3giLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInZpZGVvLnR1ZG91LmNvbSIsIGNvbnRhaW5lcjogIi50ZC1wbGF5Ym94IiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ2LnBwdHYuY29tIiwgY29udGFpbmVyOiAiI3BwdHZfcGxheXBhZ2VfYm94IiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ2aXAucHB0di5jb20iLCBjb250YWluZXI6ICIudy12aWRlbyIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbXX0sCiAgICAgICAgICAgIHtob3N0OiAid3d3Lndhc3UuY24iLCBjb250YWluZXI6ICIjZmxhc2hDb250ZW50IiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ3d3cuYWNmdW4uY24iLCBjb250YWluZXI6ICIjcGxheWVyIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ2aXAuMTkwNS5jb20iLCBjb250YWluZXI6ICIjcGxheWVyLCN2b2RQbGF5ZXIiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInd3dy4xOTA1LmNvbSIsIGNvbnRhaW5lcjogIiNwbGF5ZXIsI3ZvZFBsYXllciIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbXX0sCiAgICAgICAgXQogICAgfTsKCiAgICBjbGFzcyBCYXNlQ29uc3VtZXIgewogICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICB0aGlzLnBhcnNlID0gKCkgPT4gewogICAgICAgICAgICAgICAgdXRpbC5maW5kVGFyZ2V0RWxlKCdib2R5JykKICAgICAgICAgICAgICAgICAgICAudGhlbigoY29udGFpbmVyKSA9PiB0aGlzLnByZUhhbmRsZShjb250YWluZXIpKQogICAgICAgICAgICAgICAgICAgIC50aGVuKChjb250YWluZXIpID0+IHRoaXMuZ2VuZXJhdGVFbGVtZW50KGNvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGNvbnRhaW5lcikgPT4gdGhpcy5iaW5kRXZlbnQoY29udGFpbmVyKSkKICAgICAgICAgICAgICAgICAgICAudGhlbigoY29udGFpbmVyKSA9PiB0aGlzLmF1dG9QbGF5KGNvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGNvbnRhaW5lcikgPT4gdGhpcy5wb3N0SGFuZGxlKGNvbnRhaW5lcikpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwcmVIYW5kbGUoY29udGFpbmVyKSB7CiAgICAgICAgICAgIF9DT05GSUdfLmN1cnJlbnRQbGF5ZXJOb2RlLmRpc3BsYXlOb2Rlcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4gewogICAgICAgICAgICAgICAgdXRpbC5maW5kVGFyZ2V0RWxlKGl0ZW0pCiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKG9iaikgPT4gb2JqLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpCiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4gY29uc29sZS53YXJuKCLkuI3lrZjlnKjlhYPntKAiLCBlKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVzb2x2ZShjb250YWluZXIpKTsKICAgICAgICB9CgogICAgICAgIGdlbmVyYXRlRWxlbWVudChjb250YWluZXIpIHsKICAgICAgICAgICAgR01fYWRkU3R5bGUoYAogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0ge2N1cnNvcjpwb2ludGVyOyBwb3NpdGlvbjpmaXhlZDsgdG9wOjEyMHB4OyBsZWZ0OjBweDsgei1pbmRleDo5OTk5OTk5OyB0ZXh0LWFsaWduOmxlZnQ7fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLmltZ19ib3h7d2lkdGg6MzJweDsgaGVpZ2h0OjMycHg7bGluZS1oZWlnaHQ6MzJweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMxYzg0YzY7bWFyZ2luOjEwcHggMHB4O30KICAgICAgICAgICAgICAgICAgICAgICAgIyR7X0NPTkZJR18udmlwQm94SWR9IC52aXBfbGlzdCB7ZGlzcGxheTpub25lOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1cHg7IGxlZnQ6MzJweDsgdG9wOjA7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y0MTQ5OyBib3JkZXI6MXB4IHNvbGlkIHdoaXRlO3BhZGRpbmc6MTBweCAwcHg7IHdpZHRoOjM4MHB4OyBtYXgtaGVpZ2h0OjQwMHB4OyBvdmVyZmxvdy15OmF1dG87fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLnZpcF9saXN0IGxpe2JvcmRlci1yYWRpdXM6MnB4OyBmb250LXNpemU6MTJweDsgY29sb3I6I0RDRENEQzsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOmNhbGMoMjUlIC0gMTRweCk7IGxpbmUtaGVpZ2h0OjIxcHg7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgZ3JheTsgcGFkZGluZzowIDRweDsgbWFyZ2luOjRweCAycHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOiBub3dyYXA7dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7LW8tdGV4dC1vdmVyZmxvdzplbGxpcHNpczt9CiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSAudmlwX2xpc3QgbGk6aG92ZXJ7Y29sb3I6IzFjODRjNjsgYm9yZGVyOjFweCBzb2xpZCAjMWM4NGM2O30KICAgICAgICAgICAgICAgICAgICAgICAgIyR7X0NPTkZJR18udmlwQm94SWR9IC52aXBfbGlzdCB1bHtwYWRkaW5nLWxlZnQ6IDEwcHg7fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLnZpcF9saXN0Ojotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDo1cHg7IGhlaWdodDoxcHg7fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLnZpcF9saXN0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYntib3gtc2hhZG93Omluc2V0IDAgMCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpOyBiYWNrZ3JvdW5kOiNBOEE4QTg7fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLnZpcF9saXN0Ojotd2Via2l0LXNjcm9sbGJhci10cmFja3tib3gtc2hhZG93Omluc2V0IDAgMCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpOyBiYWNrZ3JvdW5kOiNGMUYxRjE7fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gbGkuc2VsZWN0ZWR7Y29sb3I6IzFjODRjNjsgYm9yZGVyOjFweCBzb2xpZCAjMWM4NGM2O30KCQkJCQkJYCk7CgogICAgICAgICAgICBpZiAoX0NPTkZJR18uaXNNb2JpbGUpIHsKICAgICAgICAgICAgICAgIEdNX2FkZFN0eWxlKGAKICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0ge3RvcDozMDBweDt9CiAgICAgICAgICAgICAgICAgICAgIyR7X0NPTkZJR18udmlwQm94SWR9IC52aXBfbGlzdCB7d2lkdGg6MzAwcHg7fQogICAgICAgICAgICAgICAgICAgIGApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZXQgdHlwZV8xX3N0ciA9ICIiOwogICAgICAgICAgICBsZXQgdHlwZV8yX3N0ciA9ICIiOwogICAgICAgICAgICBsZXQgdHlwZV8zX3N0ciA9ICIiOwogICAgICAgICAgICBfQ09ORklHXy52aWRlb1BhcnNlTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4gewogICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZS5pbmNsdWRlcygiMSIpKSB7CiAgICAgICAgICAgICAgICAgICAgdHlwZV8xX3N0ciArPSBgPGxpIGNsYXNzPSJucS1saSIgdGl0bGU9IiR7aXRlbS5uYW1lfTEiIGRhdGEtaW5kZXg9IiR7aW5kZXh9Ij4ke2l0ZW0ubmFtZX08L2xpPmA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlLmluY2x1ZGVzKCIyIikpIHsKICAgICAgICAgICAgICAgICAgICB0eXBlXzJfc3RyICs9IGA8bGkgY2xhc3M9InRjLWxpIiB0aXRsZT0iJHtpdGVtLm5hbWV9IiBkYXRhLWluZGV4PSIke2luZGV4fSI+JHtpdGVtLm5hbWV9PC9saT5gOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZS5pbmNsdWRlcygiMyIpKSB7CiAgICAgICAgICAgICAgICAgICAgdHlwZV8zX3N0ciArPSBgPGxpIGNsYXNzPSJ0Yy1saSIgdGl0bGU9IiR7aXRlbS5uYW1lfSIgZGF0YS1pbmRleD0iJHtpbmRleH0iPiR7aXRlbS5uYW1lfTwvbGk+YDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBsZXQgYXV0b1BsYXkgPSAhIUdNX2dldFZhbHVlKF9DT05GSUdfLmF1dG9QbGF5ZXJLZXksIG51bGwpID8gIuW8gCIgOiAi5YWzIjsKCiAgICAgICAgICAgICQoY29udGFpbmVyKS5hcHBlbmQoYAogICAgICAgICAgICAgICAgPGRpdiBpZD0iJHtfQ09ORklHXy52aXBCb3hJZH0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZpcF9pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nX2JveCIgdGl0bGU9IumAieaLqeino+aekOa6kCIgc3R5bGU9ImNvbG9yOndoaXRlO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyLXJhZGl1czo1cHg7Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPlY8L3NwYW4+STxzcGFuIHN0eWxlPSJjb2xvcjogeWVsbG93OyI+UDwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlwX2xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiMxYzg0YzY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE2cHg7IHBhZGRpbmc6NXB4IDBweDsiPlvlhoXltYzmkq3mlL5dPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dHlwZV8xX3N0cn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJjb2xvcjojMWM4NGM2OyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxNnB4OyBwYWRkaW5nOjVweCAwcHg7Ij5b5by556qX5pKt5pS+5bim6YCJ6ZuGXTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3R5cGVfMl9zdHJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iY29sb3I6IzFjODRjNjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTZweDsgcGFkZGluZzo1cHggMHB4OyI+W+W8ueeql+aSreaUvuS4jeW4pumAiembhl08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlXzNfc3RyfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJjbGVhcjpib3RoOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiNGRkY7Zm9udC1zaXplOjEwcHg7cGFkZGluZzowcHggMTBweDttYXJnaW4tdG9wOjEwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj7oh6rliqjop6PmnpDlip/og73or7TmmI7vvJo8L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPiZuYnNwOyZuYnNwOzHjgIHoh6rliqjop6PmnpDlip/og73pu5jorqTlhbPpl63vvIjoh6rliqjop6PmnpDlj6rmlK/mjIHlhoXltYzmkq3mlL7mupDvvIkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+Jm5ic3A7Jm5ic3A7MuOAgeW8gOWQr+iHquWKqOino+aekO+8jOe9kemhteaJk+W8gOWQjuiEmuacrOWwhuagueaNruW9k+WJjemAieS4reeahOino+aekOa6kOiHquWKqOino+aekOinhumikeOAguWmguino+aekOWksei0pe+8jOivt+aJi+WKqOmAieaLqeS4jeWQjOeahOino+aekOa6kOWwneivlQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4mbmJzcDsmbmJzcDsz44CB5rKh5pyJ6YCJ5Lit6Kej5p6Q5rqQ5bCG6ZqP5py66YCJ5Y+W5LiA5LiqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPiZuYnNwOyZuYnNwOzTjgIHlpoLmn5DkupvnvZHnq5nmnInkvJrlkZjlj6/ku6XlhbPpl63oh6rliqjop6PmnpDlip/og70KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWdfYm94IiBpZD0idmlwX2F1dG8iIHN0eWxlPSJjb2xvcjp3aGl0ZTtmb250LXNpemU6MTZweDtmb250LXdlaWdodDpib2xkO2JvcmRlci1yYWRpdXM6NXB4OyIgdGl0bGU9IuaYr+WQpuaJk+W8gOiHquWKqOino+aekOOAguiLpeiHquWKqOino+aekOWksei0pe+8jOivt+aJi+WKqOmAieaLqeWFtuWug+aOpeWPo+Wwneivle+8ge+8gSI+JHthdXRvUGxheX08L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PmApOwogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVzb2x2ZShjb250YWluZXIpKTsKICAgICAgICB9CgogICAgICAgIGJpbmRFdmVudChjb250YWluZXIpIHsKICAgICAgICAgICAgY29uc3QgdmlwQm94ID0gJChgIyR7X0NPTkZJR18udmlwQm94SWR9YCk7CiAgICAgICAgICAgIGlmIChfQ09ORklHXy5pc01vYmlsZSkgewogICAgICAgICAgICAgICAgdmlwQm94LmZpbmQoIi52aXBfaWNvbiIpLm9uKCJjbGljayIsICgpID0+IHZpcEJveC5maW5kKCIudmlwX2xpc3QiKS50b2dnbGUoKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2aXBCb3guZmluZCgiLnZpcF9pY29uIikub24oIm1vdXNlb3ZlciIsICgpID0+IHZpcEJveC5maW5kKCIudmlwX2xpc3QiKS5zaG93KCkpOwogICAgICAgICAgICAgICAgdmlwQm94LmZpbmQoIi52aXBfaWNvbiIpLm9uKCJtb3VzZW91dCIsICgpID0+IHZpcEJveC5maW5kKCIudmlwX2xpc3QiKS5oaWRlKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZXQgX3RoaXMgPSB0aGlzOwogICAgICAgICAgICB2aXBCb3guZmluZCgiLnZpcF9saXN0IC5ucS1saSIpLmVhY2goKGxpSW5kZXgsIGl0ZW0pID0+IHsKICAgICAgICAgICAgICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludCgkKGl0ZW0pLmF0dHIoImRhdGEtaW5kZXgiKSk7CiAgICAgICAgICAgICAgICAgICAgR01fc2V0VmFsdWUoX0NPTkZJR18uYXV0b1BsYXllclZhbCwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgIEdNX3NldFZhbHVlKF9DT05GSUdfLmZsYWcsICJ0cnVlIik7CiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2hvd1BsYXllcldpbmRvdyhfQ09ORklHXy52aWRlb1BhcnNlTGlzdFtpbmRleF0pOwogICAgICAgICAgICAgICAgICAgIHZpcEJveC5maW5kKCIudmlwX2xpc3QgbGkiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTsKICAgICAgICAgICAgICAgICAgICAkKGl0ZW0pLmFkZENsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2aXBCb3guZmluZCgiLnZpcF9saXN0IC50Yy1saSIpLmVhY2goKGxpSW5kZXgsIGl0ZW0pID0+IHsKICAgICAgICAgICAgICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludCgkKGl0ZW0pLmF0dHIoImRhdGEtaW5kZXgiKSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmlkZW9PYmogPSBfQ09ORklHXy52aWRlb1BhcnNlTGlzdFtpbmRleF07CiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHZpZGVvT2JqLnVybCArIHdpbmRvdy5sb2NhdGlvbi5ocmVmOwogICAgICAgICAgICAgICAgICAgIEdNX29wZW5JblRhYih1cmwsIHthY3RpdmU6IHRydWUsIGluc2VydDogdHJ1ZSwgc2V0UGFyZW50OiB0cnVlfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvL+WPs+mUruenu+WKqOS9jee9rgogICAgICAgICAgICB2aXBCb3gubW91c2Vkb3duKGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS53aGljaCAhPT0gMykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICAgICAgICAgICAgdmlwQm94LmNzcygiY3Vyc29yIiwgIm1vdmUiKTsKICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uRGl2ID0gJCh0aGlzKS5vZmZzZXQoKTsKICAgICAgICAgICAgICAgIGxldCBkaXN0ZW5jZVggPSBlLnBhZ2VYIC0gcG9zaXRpb25EaXYubGVmdDsKICAgICAgICAgICAgICAgIGxldCBkaXN0ZW5jZVkgPSBlLnBhZ2VZIC0gcG9zaXRpb25EaXYudG9wOwoKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm1vdXNlbW92ZShmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB4ID0gZS5wYWdlWCAtIGRpc3RlbmNlWDsKICAgICAgICAgICAgICAgICAgICBsZXQgeSA9IGUucGFnZVkgLSBkaXN0ZW5jZVk7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCk7CgogICAgICAgICAgICAgICAgICAgIGlmICh4IDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICB4ID0gMDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHggPiB3aW5kb3dXaWR0aCAtIHZpcEJveC5vdXRlcldpZHRoKHRydWUpIC0gMTAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB3aW5kb3dXaWR0aCAtIHZpcEJveC5vdXRlcldpZHRoKHRydWUpIC0gMTAwOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAwOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeSA+IHdpbmRvd0hlaWdodCAtIHZpcEJveC5vdXRlckhlaWdodCh0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICB5ID0gd2luZG93SGVpZ2h0IC0gdmlwQm94Lm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2aXBCb3guY3NzKCJsZWZ0IiwgeCk7CiAgICAgICAgICAgICAgICAgICAgdmlwQm94LmNzcygidG9wIiwgeSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm1vdXNldXAoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZignbW91c2Vtb3ZlJyk7CiAgICAgICAgICAgICAgICAgICAgdmlwQm94LmNzcygiY3Vyc29yIiwgInBvaW50ZXIiKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgJChkb2N1bWVudCkuY29udGV4dG1lbnUoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlc29sdmUoY29udGFpbmVyKSk7CiAgICAgICAgfQoKICAgICAgICBhdXRvUGxheShjb250YWluZXIpIHsKICAgICAgICAgICAgY29uc3QgdmlwQm94ID0gJChgIyR7X0NPTkZJR18udmlwQm94SWR9YCk7CiAgICAgICAgICAgIHZpcEJveC5maW5kKCIjdmlwX2F1dG8iKS5vbigiY2xpY2siLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoISFHTV9nZXRWYWx1ZShfQ09ORklHXy5hdXRvUGxheWVyS2V5LCBudWxsKSkgewogICAgICAgICAgICAgICAgICAgIEdNX3NldFZhbHVlKF9DT05GSUdfLmF1dG9QbGF5ZXJLZXksIG51bGwpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykuaHRtbCgi5YWzIik7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCJ0aXRsZSIsICLmmK/lkKbmiZPlvIDoh6rliqjop6PmnpDjgILoi6Xoh6rliqjop6PmnpDlpLHotKXvvIzor7fmiYvliqjpgInmi6nlhbblroPmjqXlj6PlsJ3or5XvvIHvvIEiKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgR01fc2V0VmFsdWUoX0NPTkZJR18uYXV0b1BsYXllcktleSwgInRydWUiKTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmh0bWwoIuW8gCIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgfSwgMjAwKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoISFHTV9nZXRWYWx1ZShfQ09ORklHXy5hdXRvUGxheWVyS2V5LCBudWxsKSkgewogICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RQbGF5ZXIoY29udGFpbmVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVzb2x2ZShjb250YWluZXIpKTsKICAgICAgICB9CgogICAgICAgIHNlbGVjdFBsYXllcihjb250YWluZXIpIHsKICAgICAgICAgICAgbGV0IGluZGV4ID0gR01fZ2V0VmFsdWUoX0NPTkZJR18uYXV0b1BsYXllclZhbCwgMik7CiAgICAgICAgICAgIGxldCBhdXRvT2JqID0gX0NPTkZJR18udmlkZW9QYXJzZUxpc3RbaW5kZXhdOwogICAgICAgICAgICBsZXQgX3RoID0gdGhpczsKICAgICAgICAgICAgaWYgKGF1dG9PYmoudHlwZS5pbmNsdWRlcygiMSIpKSB7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBfdGguc2hvd1BsYXllcldpbmRvdyhhdXRvT2JqKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXBCb3ggPSAkKGAjJHtfQ09ORklHXy52aXBCb3hJZH1gKTsKICAgICAgICAgICAgICAgICAgICB2aXBCb3guZmluZChgLnZpcF9saXN0IFt0aXRsZT0iJHthdXRvT2JqLm5hbWV9MSJdYCkuYWRkQ2xhc3MoInNlbGVjdGVkIik7CiAgICAgICAgICAgICAgICAgICAgJChjb250YWluZXIpLmZpbmQoIiN2aXBfYXV0byIpLmF0dHIoInRpdGxlIiwgYOiHquWKqOino+aekOa6kO+8miR7YXV0b09iai5uYW1lfWApOwogICAgICAgICAgICAgICAgfSwgMjUwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHNob3dQbGF5ZXJXaW5kb3codmlkZW9PYmopIHsKICAgICAgICAgICAgdXRpbC5maW5kVGFyZ2V0RWxlKF9DT05GSUdfLmN1cnJlbnRQbGF5ZXJOb2RlLmNvbnRhaW5lcikKICAgICAgICAgICAgICAgIC50aGVuKChjb250YWluZXIpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdmlkZW9PYmoudHlwZTsKICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gdmlkZW9PYmoudXJsICsgd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoIjEiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB1dGlsLnJlb212ZVZpZGVvKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoY29udGFpbmVyKS5lbXB0eSgpOwogICAgICAgICAgICAgICAgICAgICAgICAkKGNvbnRhaW5lcikuZW1wdHkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlmcmFtZURpdkNzcyA9ICJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6OTk5OTk5OyI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfQ09ORklHXy5pc01vYmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRGl2Q3NzID0gIndpZHRoOjEwMCU7aGVpZ2h0OjIyMHB4O3otaW5kZXg6OTk5OTk5OyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9DT05GSUdfLmlzTW9iaWxlICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImlxaXlpLmNvbSIpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRGl2Q3NzID0gIndpZHRoOjEwMCU7aGVpZ2h0OjIyMHB4O3otaW5kZXg6OTk5OTk5O21hcmdpbi10b3A6LTU2LjI1JTsiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICQoY29udGFpbmVyKS5hcHBlbmQoYDxkaXYgc3R5bGU9IiR7aWZyYW1lRGl2Q3NzfSI+PGlmcmFtZSBpZD0iaWZyYW1lLXBsYXllci00YTViNmMiIHNyYz0iJHt1cmx9IiBzdHlsZT0iYm9yZGVyOm5vbmU7IiBhbGxvd2Z1bGxzY3JlZW49InRydWUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPjwvaWZyYW1lPjwvZGl2PmApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgcG9zdEhhbmRsZShjb250YWluZXIpIHsKICAgICAgICAgICAgaWYgKCEhR01fZ2V0VmFsdWUoX0NPTkZJR18uYXV0b1BsYXllcktleSwgbnVsbCkpIHsKICAgICAgICAgICAgICAgIHV0aWwudXJsQ2hhbmdlUmVsb2FkKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBsZXQgb2xkSHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwogICAgICAgICAgICAgICAgbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGxldCBuZXdIcmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9sZEhyZWYgIT09IG5ld0hyZWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2xkSHJlZiA9IG5ld0hyZWY7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIUdNX2dldFZhbHVlKF9DT05GSUdfLmZsYWcsIG51bGwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0KCiAgICBjbGFzcyBEZWZhdWx0Q29uc3VtZXIgZXh0ZW5kcyBCYXNlQ29uc3VtZXIgewogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgc3RhcnQ6ICgpID0+IHsKICAgICAgICAgICAgR01fc2V0VmFsdWUoX0NPTkZJR18uZmxhZywgbnVsbCk7CiAgICAgICAgICAgIGxldCBtYWxsQ2FzZSA9ICdEZWZhdWx0JzsKICAgICAgICAgICAgbGV0IHBsYXllck5vZGUgPSBfQ09ORklHXy5wbGF5ZXJDb250YWluZXJzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5ob3N0ID09PSB3aW5kb3cubG9jYXRpb24uaG9zdCk7CiAgICAgICAgICAgIGlmIChwbGF5ZXJOb2RlID09PSBudWxsIHx8IHBsYXllck5vZGUubGVuZ3RoIDw9IDApIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih3aW5kb3cubG9jYXRpb24uaG9zdCArICLor6XnvZHnq5nmmoLkuI3mlK/mjIHvvIzor7fogZTns7vkvZzogIXvvIzkvZzogIXlsIbkvJrnrKzkuIDml7bpl7TlpITnkIbvvIjms6jmhI/vvJror7forrDlvpfmj5DkvpvmnInpl67popjnmoTnvZHlnYDvvIkiKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBfQ09ORklHXy5jdXJyZW50UGxheWVyTm9kZSA9IHBsYXllck5vZGVbMF07CiAgICAgICAgICAgIG1hbGxDYXNlID0gX0NPTkZJR18uY3VycmVudFBsYXllck5vZGUubmFtZTsKICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29uc3VtZXIgPSBldmFsKGBuZXcgJHttYWxsQ2FzZX1Db25zdW1lcmApOwogICAgICAgICAgICB0YXJnZXRDb25zdW1lci5wYXJzZSgpOwogICAgICAgIH0KICAgIH0KCn0pKCk7CgooZnVuY3Rpb24gKCkgewogICAgc3VwZXJWaXAuc3RhcnQoKTsKfSkoKTs=
Add Comment
Please, Sign In to add comment