Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@国外剧@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5Zu95aSW5YmnIiwiYXV0aG9yIjoiMTUzJueLl+a1qeWViiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2h0dHBzOi8vZ3Vvd2FpanUuY29tL3ZvZHNob3cvMENDQ0NTLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCIsInZlcnNpb24iOjgsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBkID0gW107XG5pZiAoTVlfUEFHRSA9PSAxKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgZGVzYzogXCLmkJzkvaDmg7PopoHnmoQuLi5cIixcbiAgICAgICAgdGl0bGU6IFwi8J+UjVwiLFxuICAgICAgICB1cmw6IFwiJ2hpa2VyOi8vc2VhcmNoP3J1bGU9XCIgKyBNWV9SVUxFLnRpdGxlICsgXCImcz0nK2lucHV0XCIsXG4gICAgICAgIGNvbF90eXBlOiBcImlucHV0XCIsXG4gICAgfSk7XG59XG5sZXQgdHJ1ZV91cmwgPSBnZXRNeVZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxuY29uc3QgcGFnZSA9IE1ZX1BBR0U7XG5cblxudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7wqDCoMKgwqDCoMKgwqBcbiAgICByZXR1cm4gJyMnICsgKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnN1YnN0cigtNik7wqDCoMKgwqDCoFxufVxuLy/liqjmgIHliIbnsbvlrprkuYkgXG5jb25zdCDliIbnsbvpopzoibIgPSBnZXRSYW5nZUNvbG9ycygpO1xuY29uc3Qg5aSn57G75a6a5L2NID0gJy5zd2lwZXItd3JhcHBlciYmbGk6bm90KDptYXRjaGVzKOmmlumhtXzmiJHnmoR8Uee+pHzlkajmnJ985LiT6aKYKSknO1xuY29uc3Qg5aSn57G75qCH6aKYID0gJ2EmJlRleHQnO1xuY29uc3Qg5aSn57G76ZO+5o6lID0gJ2EmJmhyZWYnO1xuXG5jb25zdCDmi7zmjqXliIbnsbsgPSAnYm9keS0tLnN3aXBlci13cmFwcGVyLS0uc3dpcGVyLXdyYXBwZXImJi5zd2lwZXItd3JhcHBlcic7XG5jb25zdCDlsI/nsbvlrprkvY0gPSAnYm9keSYmbGknO1xuY29uc3Qg5YiG57G75qCH6aKYID0gJ2EmJlRleHQnO1xuY29uc3Qg5YiG57G76ZO+5o6lID0gJ2xpJiZkYXRhLXR5cGVAQEBsaSYmZGF0YS12YWwnO1xuY29uc3Qg5riF6Zmk6ZSuID0gWydjbGFzcycsICdhcmVhJywgJ2xvbmcnLCAndmVyc2lvbicsICdzdGF0ZScsICdsZXR0ZXInXTtcblxudmFyIGh0bWwgPSByZXF1ZXN0KHRydWVfdXJsLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHkjIycsICcnKSlcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZHRmbCcpKS5ydWxlKTtcblxudHlwZSA9IHBkZmgoaHRtbCwgJyNkYXRhTGlzdCYmZGF0YS10eXBlJyk7XG50aW1lID0gXCJcIiArIE1hdGguY2VpbChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG5rZXkgPSBtZDUoXCJEU1wiICsgdGltZSArIFwiRENDMTQ3RDExOTQzQUY3NVwiKVxuXG5cblxuXG7mlbDmja4gPSBKU09OLnBhcnNlKHBvc3QoXCJodHRwczovL2d1b3dhaWp1LmNvbS9pbmRleC5waHAvZHNfYXBpL3ZvZFwiLCB7XG5cbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiOiBcIlhNTEh0dHBSZXF1ZXN0XCIsXG4gICAgICAgIFwiVXNlci1BZ2VudFwiOiBcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMjsgMjIwMTEyMkMgQnVpbGQvU0tRMS4yMTEwMDYuMDAxOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzk1LjAuNDYzOC43NCBNb2JpbGUgU2FmYXJpLzUzNy4zNlwiXG5cbiAgICB9LFxuICAgIGJvZHk6IHtcbiAgICAgICAgJ3R5cGUnOiB0eXBlLFxuICAgICAgICAncGFnZSc6IHBhZ2UsXG4gICAgICAgICd0aW1lJzogdGltZSxcbiAgICAgICAgJ2tleSc6IGtleSxcbiAgICAgICAgY2xhc3M6IGdldE15VmFyKCdkdF9jbGFzcycsICcnKSxcbiAgICAgICAgYXJlYTogZ2V0TXlWYXIoJ2R0X2FyZWEnLCAnJyksXG4gICAgICAgIHllYXI6IGdldE15VmFyKCdkdF95ZWFyJywgJycpLFxuICAgICAgICBsYW5nOiBnZXRNeVZhcignZHRfbGFuZycsICcnKSxcbiAgICAgICAgbGV0dGVyOiBnZXRNeVZhcignZHRfbGV0dGVyJywgJycpLFxuICAgICAgICBzdGF0ZTogZ2V0TXlWYXIoJ2R0X3N0YXRlJywgJycpLFxuICAgICAgICB2ZXJzaW9uOiBnZXRNeVZhcignZHRfdmVyc2lvbicsICcnKSxcbiAgICAgICAgYnk6IGdldE15VmFyKCdkdF90aW1lJywgJycpLFxuICAgIH1cblxuXG5cblxufSkpLmxpc3RcblxuY29uc3QgbGlzdCA9IOaVsOaNrlxuXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgdmFyIHVybGwgPSBcImh0dHBzOi8vZ3Vvd2FpanUuY29tXCIgKyBpdGVtLnVybC5yZXBsYWNlKFwidm9kZGV0YWlsXCIsXCJ2b2RwbGF5XCIpLnJlcGxhY2UoXCIuaHRtbFwiLCBcIi0xLTEuaHRtbFwiKSArICcjaW1tZXJzaXZlVGhlbWUjJztcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogaXRlbS52b2RfbmFtZSxcbiAgICAgICAgZGVzYzogaXRlbS52b2RfcmVtYXJrcyxcbiAgICAgICAgaW1nOiBpdGVtLnZvZF9waWMuc3RhcnRzV2l0aCgnaHR0cCcpID8gaXRlbS52b2RfcGljIDogTVlfSE9NRSArIGl0ZW0udm9kX3BpYyxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2VqI25vSGlzdG9yeSMjaW1tZXJzaXZlVGhlbWUjJyxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIHVybDogdXJsbCxcbiAgICAgICAgICAgIHBpYzogaXRlbS52b2RfcGljXG4gICAgICAgIH0sXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfM19tYXJxdWVlJyxcbiAgICB9KVxufSlcblxuc2V0UmVzdWx0KGQpOyIsInNlYXJjaF91cmwiOiIvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sIiwiZ3JvdXAiOiLwn42O6KeG6aKRIiwic2VhcmNoRmluZCI6ImpzOlxudmFyIGQgPSBbXTtcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpXHJcbnZhciBsaXN0ID0gcGRmYShodG1sLCAnYm9keSYmLnNlYXJjaC1saXN0Jyk7Ly/liJfooahcbmZvciAodmFyIGogaW4gbGlzdCkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdoMyYmVGV4dCcpLC8v5qCH6aKYXG4gICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5zbGlkZS1pbmZvLXJlbWFya3MmJlRleHQnKSwvL+esrOWHoOmbhuaIlua4heaZsOW6plxuICAgICAgICBpbWc6IHBkKGxpc3Rbal0sICdpbWcmJmRhdGEtc3JjJykrJ0BSZWZlcmVyPScsLy/lm77niYdcbi8vY29udGVudDpwZGZoKGxpc3Rbal0sICcudGh1bWItYmx1cmImJlRleHQnKSwvL+eugOS7i+aIluW9seeJh+S/oeaBr1xuICAgICAgICB1cmw6ICQocGQobGlzdFtqXSwgJy52b2QtZGV0YWlsLWJudCYmYSYmaHJlZicpICsgXCIjaW1tZXJzaXZlVGhlbWUjXCIpLnJ1bGUoKCk9PntcbnJlcXVpcmUgKCdoaWtlcjovL3BhZ2UvZWonKVxufSlcbiAgICB9KTtcbn1cclxuc2V0UmVzdWx0KGQpIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiKiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliqjmgIFcIixcInBhdGhcIjpcImR0MVwiLFwicnVsZVwiOlwiY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXG5pZiAodHlwZW9mKOaLvOaOpeWIhuexuykgIT0gJ3VuZGVmaW5lZCcgJiYg5ou85o6l5YiG57G7ICE9ICcnKSB7XFxuICAgIHZhciBjYXRlZ29yaWVzID0gcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmNvbmNhdChwZGZhKGh0bWwsIOaLvOaOpeWIhuexuykpXFxufSBlbHNlIHtcXG4gICAgdmFyIGNhdGVnb3JpZXMgPSBwZGZhKGh0bWwsIOWkp+exu+WumuS9jSlcXG59XFxuXFxubGV0IGluaXRfY2F0ZSA9IFtdXFxuXFxuZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgIGluaXRfY2F0ZS5wdXNoKFxcXCIwXFxcIilcXG59XFxuXFxuY29uc3QgZm9sZCA9IGdldFZhcihNWV9SVUxFLmdyb3VwLCBcXFwiMFxcXCIpXFxuY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG5jb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGZvbGQgPT09ICcxJyA/ICfigJzigJzigJ3igJ08Yj4nICsgJ/Cfk6wnLmZvbnRjb2xvcihcXFwiI0ZGMDAwMFxcXCIpICsgJzwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPicgKyAn8J+TqicuZm9udGNvbG9yKFxcXCIjMWFhZDE5XFxcIikgKyAnPC9iPicsXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoZm9sZCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLmdyb3VwLCBmb2xkID09PSAnMScgPyAnMCcgOiAnMScpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9LCBmb2xkKSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgIH0pXFxuICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0pO1xcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHBkZmgoaXRlbSwg5YiG57G75qCH6aKYKVxcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKOaOkumZpCkgIT0gJ3VuZGVmaW5lZCcgJiYg5o6S6ZmkICE9ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIHRpdGxlLmZvbnRjb2xvcijliIbnsbvpopzoibIpIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGQoaXRlbSwg5YiG57G76ZO+5o6lKSArICcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2NhdGUgPSBbXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShuZXdfY2F0ZSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudXJsLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSBpZiAoZm9sZCA9PT0gJzEnKSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHBkZmgoaXRlbSwg5YiG57G75qCH6aKYKVxcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKOaOkumZpCkgIT0gJ3VuZGVmaW5lZCcgJiYg5o6S6ZmkICE9ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIHRpdGxlLmZvbnRjb2xvcijliIbnsbvpopzoibIpIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGQoaXRlbSwg5YiG57G76ZO+5o6lKSArICcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudXJsLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0pXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnXCIsXCJwYXRoXCI6XCJlalwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXVxcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpXFxudmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoTVlfSE9NRSkgPT4ge1xcbiAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pXFxuICAgIHZhciB1cmwgPSBodG1sLnVybFxcbiAgICBpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykge1xcbiAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTtcXG4gICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7XFxuICAgICAgICB1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSk7XFxuICAgIH1cXG4gICAgaWYgKC9tM3U4fG1wNC8udGVzdCh1cmwpKSB7XFxuICAgICAgICByZXR1cm4gdXJsXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBldmFsKHJlcXVlc3QoTVlfSE9NRSArICcvc3RhdGljL2pzL3BsYXllcmNvbmZpZy5qcycpKTtcXG4gIHZhciBqeCA9TVlfSE9NRSsgTWFjUGxheWVyQ29uZmlnLnBsYXllcl9saXN0W2h0bWwuZnJvbV0ucGFyc2U7XFxuICBpZiAoanggPT0gJycpIHtcXG4gICAganggPSBNYWNQbGF5ZXJDb25maWcucGFyc2U7XFxuICB9XFxuICBmdW5jdGlvbiBkZWNvZGUoXzB4MTg2MmQ3KSB7XFxuICAgIFxcbiAgdmFyIF8weDQ1MzYxNiA9IFxcXCJQWGh3N1VUMUIwYTlrUURLWnNqSUFTbU9lenhZRzRDSG81SnlmZzJiOEZMcEV2UnIzV3RWbmxxTWlkdTZjTlxcXCIsXFxuICAgIF8weDQyNzdiZiA9IFxcXCJcXFwiO1xcbiAgZm9yICh2YXIgXzB4MzI1MmZkID0gMTsgXzB4MzI1MmZkIDwgXzB4MTg2MmQ3Lmxlbmd0aDspIHtcXG4gICAgdmFyIF8weDFkYWQzZCA9IF8weDQ1MzYxNi5pbmRleE9mKF8weDE4NjJkN1tfMHgzMjUyZmRdKTtcXG4gICAgaWYgKF8weDFkYWQzZCA9PSAtMSkgdmFyIF8weDExNmZjYSA9IF8weDE4NjJkN1tfMHgzMjUyZmRdO2Vsc2UgdmFyIF8weDExNmZjYSA9IF8weDQ1MzYxNlsoXzB4MWRhZDNkICsgNTkpICUgNjJdO1xcbiAgICBfMHg0Mjc3YmYgKz0gXzB4MTE2ZmNhO1xcbiAgICBfMHgzMjUyZmQgPSBfMHgzMjUyZmQgKyAzO1xcbiAgfVxcbiAgcmV0dXJuIF8weDQyNzdiZjtcXG59XFxuICAgXFxuICAgIFxcbmxldCBwbGF5ID1KU09OLnBhcnNlKHJlcXVlc3QoangucmVwbGFjZSgnaW5kZXgucGhwP3ZpZD0nLCdhcGkucGhwJyksIHtcXG4gICAgICAgICBib2R5OiAndmlkPScrdXJsLFxcbiAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgXFxuICAgICAgICB9KSkuZGF0YS51cmxcXG4gICAgICAgXFxuICAgICAgIFxcbiAgICAgICAgcmV0dXJuIGRlY29kZShwbGF5KSArXFxcIiNpc1ZpZGVvPXRydWUjXFxcIlxcbiAgICAgICAgXFxuICAgfVxcbiAgXFxufSxNWV9IT01FKVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICAnLnBhcnRpdGlvbiYmVGV4dCcpLFxcbiAgICBkZXNjOiAn566A5LuLOicgKyBwZGZoKGh0bWwsICcuc21hbGwtdGV4dCYmVGV4dCcpLFxcbiAgICBpbWc6IHBkKGh0bWwsICcubGF6eSYmZGF0YS1zcmMnKSxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsXFxuICAgIGV4dHJhOntcXG4gICAgICAgIGdyYWRpZW50OiB0cnVlXFxuICAgIH1cXG59KTtcXG52YXIg57q/6LevID0gJy5uYXYtc3dpcGVyJiZhOm5vdCg6bWF0Y2hlcyjkuIvovb0pKSdcXG52YXIg6YCJ6ZuGID0gJ2JvZHkmJi5hbnRob2xvZ3ktbGlzdC1ib3gnXFxudmFyIOe6v+i3r+WQjSA9ICdhJiZUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAndWwmJmxpJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55+t6KeG5Yqo5oCBXCIsXCJwYXRoXCI6XCJkdGZsXCIsXCJydWxlXCI6XCJqczpcXG4vKlxcblZlciAyMDIzLTEwLTI4IDEuMFxcbuWkh+azqO+8muS4jeimgeeUqOa1t+mYlOS7o+eggeagvOW8j+WMliDlhoXlrrnkvJrlh7rplJlcXG7lv4Xpobvlj4LmlbDvvJpcXG7liIbnsbvpopzoibIg5aSn57G75a6a5L2NIFxcbuWwj+exu+WumuS9jSDliIbnsbvmoIfpopgg5YiG57G76ZO+5o6lXFxuaHRtbCA9Pua6kOeggSBwYWdlID0+6aG156CBXFxu5Y+v6YCJ5Y+C5pWw77yaXFxu5ou85o6l5YiG57G7IOaKmOWPoOagh+iusCDlsZXlvIDmoIforrAg5o6S6ZmkXFxu5aSn57G76ZO+5o6lIOWkp+exu+agh+mimCDmuIXpmaTplK4g5byA5ZCv5oqY5Y+gXFxu6ZmE5Yqg5a6a5L2NXFxu6K+05piO77yaXFxu5aSW6Z2i55SoZ2V0TXlWYXIoTVlfUlVMRS51cmwpIOaIluiAhSDnirbmgIEg5Y+W6ZO+5o6lXFxu6a2U5pS5Os6xXFxuKi9cXG5cXG5sZXQgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxubGV0IGNhdGVnb3JpZXMgPSBbXTtcXG5pZiAodHlwZW9mICjmi7zmjqXliIbnsbspICE9ICd1bmRlZmluZWQnICYmIOaLvOaOpeWIhuexuyAhPSAnJykge1xcbiAgICBjYXRlZ29yaWVzID0gW3BkZmEoaHRtbCwg5aSn57G75a6a5L2NKS5qb2luKCdcXFxcbicpXTtcXG4gICAgaWYgKOaLvOaOpeWIhuexuy5pbmNsdWRlcygnOycpKSB7XFxuICAgICAgICDmi7zmjqXliIbnsbsgPSDmi7zmjqXliIbnsbsuc3BsaXQoJzsnKTtcXG4gICAgfVxcbiAgICBpZiAo5ou85o6l5YiG57G7LmNvbnN0cnVjdG9yID09IEFycmF5KSB7XFxuICAgICAgICDmi7zmjqXliIbnsbsuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5jb25jYXQocGRmYShodG1sLCBpdGVtKSk7XFxuICAgICAgICB9KVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgY2F0ZWdvcmllcyA9IFtwZGZhKGh0bWwsIOWkp+exu+WumuS9jSkuam9pbignXFxcXG4nKV0uY29uY2F0KHBkZmEoaHRtbCwg5ou85o6l5YiG57G7KSk7XFxuICAgIH1cXG4gICAgaWYgKHR5cGVvZiAo6ZmE5Yqg5a6a5L2NKSAhPSAndW5kZWZpbmVkJyAmJiDpmYTliqDlrprkvY0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAg6ZmE5Yqg5a6a5L2NLmZvckVhY2goeCA9PiB7XFxuICAgICAgICAgICAgdmFyIOS4gOe6pyA9IHBkZmEoaHRtbCwgeC7kuIDnuqflrprkvY0pLm1hcChzID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIOWumuS9jSA9IHBkZmEocywgeC7lsI/nsbspLm1hcChxID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHBkZmgocSwgeC7moIfpopgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9ICdhJ1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHgu6ZO+5o6lLmluY2x1ZGVzKCdAQCcpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSB4LumTvuaOpS5zcGxpdCgnQEAnKVswXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGRmaChxLCB4LumTvuaOpS5zcGxpdCgnQEAnKVsxXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgu6L2s5o2iID09IHRydWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8bGkgZGF0YS10eXBlPVxcXCIke3N0YXRlfVxcXCIgZGF0YS12YWw9XFxcIiR7dmFsdWV9XFxcIj48YSBocmVmPVxcXCJcXFwiPiR7dGl0bGV9PC9hPjwvbGk+YFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGEgdHlwZT1cXFwiQGV4dHJhXFxcIiBzdGF0ZT1cXFwiJHtzdGF0ZX1cXFwiIHZhbHVlPVxcXCIke3ZhbHVlfVxcXCI+JHt0aXRsZX08L2E+YDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwZChxLCB4LumTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8YSBocmVmPVxcXCIke2hyZWZ9XFxcIj4ke3RpdGxlfTwvYT5gO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIOWumuS9jTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2go5LiA57qnLmpvaW4oJ1xcXFxuJykpO1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBjYXRlZ29yaWVzID0gW3BkZmEoaHRtbCwg5aSn57G75a6a5L2NKS5qb2luKCdcXFxcbicpXTtcXG59XFxuXFxubGV0IGl0ZW1zID0gW107XFxubGV0IGNhdGVzID0gW107XFxubGV0IGluaXRfY2F0ZSA9IG5ldyBBcnJheSgyMCkuZmlsbChcXFwiMFxcXCIpO1xcbmNvbnN0IGZvbGQgPSBnZXRNeVZhcihNWV9SVUxFLmdyb3VwLCBcXFwiMFxcXCIpO1xcbmNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIsIEpTT04uc3RyaW5naWZ5KGluaXRfY2F0ZSkpKTtcXG52YXIg5oqY5Y+g54q25oCBID0gKHR5cGVvZiAo5byA5ZCv5oqY5Y+gKSAhPSAndW5kZWZpbmVkJykgPyDlvIDlkK/mipjlj6AgOiB0cnVlO1xcbnZhciDmipjlj6AgPSAodHlwZW9mICjmipjlj6DmoIforrApICE9ICd1bmRlZmluZWQnICYmIOaKmOWPoOagh+iusCAhPSAnJykgPyDmipjlj6DmoIforrAgOiAn4oCc4oCc4oCd4oCdJyArICfiiKgnLmZvbnRjb2xvcihcXFwiI0ZGMDAwMFxcXCIpO1xcbnZhciDlsZXlvIAgPSAodHlwZW9mICjlsZXlvIDmoIforrApICE9ICd1bmRlZmluZWQnICYmIOWxleW8gOagh+iusCAhPSAnJykgPyDlsZXlvIDmoIforrAgOiAn4oCc4oCc4oCd4oCdJyArICfiiKcnLmZvbnRjb2xvcihcXFwiIzFhYWQxOVxcXCIpO1xcbnZhciDmuIXpmaQgPSAodHlwZW9mICjmuIXpmaTplK4pICE9ICd1bmRlZmluZWQnICYmIOa4hemZpOmUriAhPSAnJykgPyDmuIXpmaTplK4gOiBbXTtcXG52YXIg54q25oCBID0gKHR5cGVvZiAo54q25oCB5qCH6K6wKSAhPSAndW5kZWZpbmVkJyAmJiDnirbmgIHmoIforrAgIT0gJycpID8g54q25oCB5qCH6K6wIDogTVlfUlVMRS51cmw7XFxudmFyIOWkp+exu+WkhOeQhiA9IHR5cGVvZiAo5LiA57qn5YiG57G75aSE55CGKSAhPSAndW5kZWZpbmVkJyA/IHRydWUgOiBmYWxzZTtcXG52YXIg5pCc57SiID0gdHlwZW9mICjlvIDlkK/mkJzntKIpICE9ICd1bmRlZmluZWQnID8g5byA5ZCv5pCc57SiIDogZmFsc2U7XFxudmFyIOWFqOa4hSA9ICh0eXBlb2YgKOWFqOa4hemUrikgIT0gJ3VuZGVmaW5lZCcgJiYg5YWo5riF6ZSuICE9ICcnKSA/IOWFqOa4hemUriA6IFtdO1xcbuWFqOa4hS51bnNoaWZ0KCd5aV9maXJzdHBhZ2UnKTtcXG5cXG5cXG5pZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgaWYgKOaQnOe0oikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vc2VhcmNoP3J1bGU9XFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJnM9JytpbnB1dFxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIuaQnOe0ouWFs+mUruivjVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcigna2V5d29yZCcsICcnKSxcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2tleXdvcmQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICBpZiAo5oqY5Y+g54q25oCBKSB7XFxuICAgICAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmb2xkID09PSAnMScgPyDmipjlj6AgOiDlsZXlvIAsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodGl0bGUsIGZvbGQsIHUsIGFsbCwgZXhwcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvbGQgPSBnZXRNeVZhcihNWV9SVUxFLmdyb3VwLCBmb2xkKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBb5bGV5byALCDmipjlj6BdID0gZXhwcztcXG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2xkID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3ggPSBmaW5kSXRlbXNCeUNscyh0aXRsZSArICdjYXRlX2J1dHRvbicpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdjYXRlX2J1dHRvbicsIGN4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtQnlDbHModGl0bGUgKyAnY2F0ZV9idXR0b24nKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN4ID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ2NhdGVfYnV0dG9uJywgW10pLm1hcCh4ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeFsnY29sX3R5cGUnXSA9IHhbJ2NvbF90eXBlJ10gPyB4Wydjb2xfdHlwZSddIDogeFsndHlwZSddO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIodGl0bGUgKyAnY2F0ZV9saW5lJywgY3gpXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAvKmFsbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSk7XFxuICAgICAgICAgICAgICAgICAgICB9KTsqL1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh0aXRsZSArICdjYXRlX2V4cCcsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZm9sZCA9PSAxID8g5bGV5byAIDog5oqY5Y+gLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKE1ZX1JVTEUuZ3JvdXAsIGZvbGQgPT09IFxcXCIxXFxcIiA/IFxcXCIwXFxcIiA6IFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICB9LCBNWV9SVUxFLnRpdGxlLCBmb2xkLCDnirbmgIEsIOWFqOa4hSwgW+WxleW8gCwg5oqY5Y+gXSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogTVlfUlVMRS50aXRsZSArICdjYXRlX2V4cCcsXFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmuIXpmaTnirbmgIEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh4LCBhbGwsIGNsKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoeCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2hlYWQuY2F0ZScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwg54q25oCBLCDlhajmuIUsIOa4hemZpClcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGxldCBzZXRUaXRsZSA9IChrLCBpLCB0KSA9PiB7XFxuICAgICAgICByZXR1cm4gayA9PSBpID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyB0LmZvbnRjb2xvcijliIbnsbvpopzoibIpIDogdFxcbiAgICB9XFxuICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBbXTtcXG4gICAgICAgIGlmICjlsI/nsbvlrprkvY0uaW5jbHVkZXMoJzsnKSkge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NLnNwbGl0KCc7JylbMF0pO1xcbiAgICAgICAgICAgIGlmIChzdWJfY2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcyA9IHBkZmEoY2F0ZWdvcnksIOWwj+exu+WumuS9jS5zcGxpdCgnOycpWzFdKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgX+Wkp+exu+mTvuaOpSA9ICh0eXBlb2YgKOWkp+exu+mTvuaOpSkgIT0gJ3VuZGVmaW5lZCcgJiYg5aSn57G76ZO+5o6lICE9ICcnKSA/IOWkp+exu+mTvuaOpSA6IOWIhuexu+mTvuaOpTtcXG5cXG4gICAgICAgICAgICAgICAgbGV0IF/lpKfnsbvmoIfpopggPSAodHlwZW9mICjlpKfnsbvmoIfpopgpICE9ICd1bmRlZmluZWQnICYmIOWkp+exu+agh+mimCAhPSAnJykgPyDlpKfnsbvmoIfpopggOiDliIbnsbvmoIfpopg7XFxuXFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHBkZmgoaXRlbSwgX+Wkp+exu+agh+mimCk7XFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKOaOkumZpCkgIT0gJ3VuZGVmaW5lZCcgJiYg5o6S6ZmkICE9ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1zID0ge1xcbiAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsIGtleToga2V5LCBwYWdlOiBwYWdlLCBjbGVhcnM6IOa4hemZpCwgc3RhdGU6IOeKtuaAgSwgYWxsY2xlYXJzOiDlhajmuIVcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gcGQoaXRlbSwgX+Wkp+exu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgIGlmICjlpKfnsbvlpITnkIYpIHtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKOS4gOe6p+WIhuexu+WkhOeQhilcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKCQuc3RyaW5naWZ5KOS4gOe6p+WIhuexu+WkhOeQhikpXFxuICAgICAgICAgICAgICAgICAgICBsZXQgaW5wdXQgPSB1cmw7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJyZXN1bHQgPSBcXFwiICsg5LiA57qn5YiG57G75aSE55CGKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKHJlc3VsdClcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IHJlc3VsdDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCh1cmwgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19jYXRlID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNsZWFycy5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hbGxjbGVhcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wLmZvckVhY2goKGNhdGUsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jYXRlLnB1c2goaW5kZXggPT09IDAgPyBwYXJhbXMua2V5LnRvU3RyaW5nKCkgOiBcXFwiMFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiaGVhZC5jYXRlXFxcIiwgSlNPTi5zdHJpbmdpZnkobmV3X2NhdGUpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMuc3RhdGUsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW1zKVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogTVlfUlVMRS50aXRsZSArICdjYXRlX2xpbmUnLFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHZhciBleHRyYXBvcyA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pbmNsdWRlcygndHlwZT1cXFwiQGV4dHJhXFxcIicpKSB7XFxuICAgICAgICAgICAgICAgICAgICBleHRyYXBvcyA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZygn6ZmE5Yqg5a6a5L2NJylcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFwb3MpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwgJ2EmJlRleHQnKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKOaOkumZpCkgIT0gJ3VuZGVmaW5lZCcgJiYg5o6S6ZmkICE9ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwZGZoKGl0ZW0sICdhJiZzdGF0ZScpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwZGZoKGl0ZW0sICdhJiZ2YWx1ZScpLFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcblxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLCDliIbnsbvmoIfpopgpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAo5o6S6ZmkKSAhPSAndW5kZWZpbmVkJyAmJiDmjpLpmaQgIT0gJycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gJyc7XFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIOWIhuexu+mTvuaOpS5pbmNsdWRlcygnQEBAJyk6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdCgnQEBAJylbMF0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwg5YiG57G76ZO+5o6lLnNwbGl0KCdAQEAnKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSDliIbnsbvpk77mjqUuaW5jbHVkZXMoJ0BAJyk6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiDliIbnsbvpk77mjqUuc3BsaXQoJ0BAJylbMF0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGRmaChpdGVtLCDliIbnsbvpk77mjqUuc3BsaXQoJ0BAJylbMV0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSBwZChpdGVtLCDliIbnsbvpk77mjqUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIC8qdmFyIGpzb2495YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQEAnKT97XFxuICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6cGRmaChpdGVtLOWIhuexu+mTvuaOpS5zcGxpdCgnQEBAJylbMF0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpwZGZoKGl0ZW0s5YiG57G76ZO+5o6lLnNwbGl0KCdAQEAnKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgfTpwZChpdGVtLOWIhuexu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICAganNvbj3liIbnsbvpk77mjqUuaW5jbHVkZXMoJ0BAJyk/e1xcbiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOuWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVswXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6cGRmaChpdGVtLOWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgfTpwZChpdGVtLOWIhuexu+mTvuaOpSk7Ki9cXG5cXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1zID0ge1xcbiAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsIGluZGV4OiBpbmRleCwga2V5OiBrZXksIHBhZ2U6IHBhZ2UsIGpzb246IGpzb24sIHN0YXRlOiDnirbmgIEsIGFsbGNsZWFyczog5YWo5riFXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY2F0ZXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2V0VGl0bGUoa2V5LnRvU3RyaW5nKCksIGNhdGVfdGVtcFtpbmRleF0sIHRpdGxlKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eScgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFsbGNsZWFycy5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiaGVhZC5jYXRlXFxcIiwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMuanNvbi5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkdF8nICsgcGFyYW1zLmpzb24udHlwZSwgcGFyYW1zLmpzb24udmFsdWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy5zdGF0ZSwgcGFyYW1zLmpzb24pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW1zKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogTVlfUlVMRS50aXRsZSArICdjYXRlX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGNhdGVzLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsczogTVlfUlVMRS50aXRsZSArICdjYXRlX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuXFxuaWYgKGZvbGQgPT09IFxcXCIxXFxcIiB8fCDmipjlj6DnirbmgIEgPT0gZmFsc2UpIHtcXG4gICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoY2F0ZXMpO1xcbn1cXG5pZiAoZm9sZCA9PT0gXFxcIjBcXFwiKSB7XFxuICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdjYXRlX2J1dHRvbicsIGNhdGVzKVxcbn1cXG5pZiAodHlwZW9mIHNldFByZVJlc3VsdCAhPSAndW5kZWZpbmVkJykge1xcbiAgICBpdGVtcyA9IGQuY29uY2F0KGl0ZW1zKTtcXG4gICAgLy/muIXnqbrnu6fmib/mlbDnu4RcXG4gICAgZC5sZW5ndGggPSAwO1xcbiAgICBzZXRQcmVSZXN1bHQoaXRlbXMpO1xcbn0gZWxzZSB7XFxuICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBkLnB1c2goaXRlbSk7XFxuICAgIH0pXFxufVxcblwifV0iLCJpY29uIjoiIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment