Advertisement
xiaomianao666

邀您一起看:三体 电视剧

Jan 16th, 2023
538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥三体 电视剧@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaOqOmAgVwiLFwicGF0aFwiOlwicHVzaFwiLFwicnVsZVwiOlwianM6XFxuLy9sb2coTVlfVVJMKTtcXG52YXIgaXRlbXMgPSBbXTtcXG52YXIgcmVhbHVybCA9IE1ZX1VSTC5zcGxpdCgnIyMnKVsxXS5zcGxpdCgnPz8/JylbMF07XFxudmFyIHR2aXAgPSBnZXRJdGVtKCdoaWtlcnR2Ym94c2V0JywgJycpO1xcbnZhciBjbHRleHQgPSBnZXRNeVZhcihcXFwibmFtZVxcXCIsIHJlYWx1cmwpO1xcbi8vbG9nKHJlYWx1cmwpO1xcbml0ZW1zLnB1c2goe1xcbiAgICB0aXRsZTogZGVjb2RlVVJJQ29tcG9uZW50KGNsdGV4dCksXFxuICAgIHVybDogXFxcImlucHV0Oi8vXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgIHZhbHVlOiBcXFwiXFxcIixcXG4gICAgICAgIGhpbnQ6IFxcXCLor7fovpPlhaV0dmJveOaOqOmAgeWGheWuuVxcXCIsXFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcignbmFtZScpO1xcbiAgICAgICAgICAgIHZhciBudW0gPSBlbmNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xcbiAgICAgICAgICAgIGlmIChudW0gPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeeahOWAvOaYr+epuueahOOAgic7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ25hbWUnLCBudW0pO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSksXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMV9zZWFyY2gnXFxufSk7XFxuXFxuaWYgKGdldE15VmFyKCduYW1lJywgJycpICE9ICcnKSB7XFxuICAgIHJlYWx1cmwgPSBnZXRNeVZhcignbmFtZScpO1xcbn1cXG4vL2xvZyhcXFwi5a6e6ZmFXFxcIityZWFsdXJsKTtcXG5pZiAodHZpcC5pbmNsdWRlcygnaHR0cCcpKSB7XFxuICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLwn5O9IOaOqOmAgeWIsFRWQm94IPCfk7pcXFwiLFxcbiAgICAgICAgdXJsOiAkKHJlYWx1cmwpLmxhenlSdWxlKCh0dmlwKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcignbmFtZScpO1xcbiAgICAgICAgICAgIGlucHV0ID0gZGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KTtcXG4gICAgICAgICAgICB2YXIgcHVybCA9IGlucHV0LnNwbGl0KFxcXCI7XFxcIilbMF07XFxuICAgICAgICAgICAgaWYgKHB1cmwuaW5jbHVkZXMoXFxcIlxcXFxuXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgcHVybCA9IHB1cmwucmVwbGFjZShcXFwiXFxcXG5cXFwiLCAnJCcpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgaGVhZCA9IGlucHV0LnNwbGl0KFxcXCI7XFxcIilbMV07XFxuICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcIntcXFwiKSAmJiBpbnB1dC5lbmRzV2l0aChcXFwifVxcXCIpKSB7XFxuXFxuICAgICAgICAgICAgICAgIHB1cmwgPSBpbnB1dC5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJyk7XFxuICAgICAgICAgICAgICAgIC8vbG9nKHB1cmwpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGVhZCAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGhlYWQgPSBpbnB1dC5zcGxpdChcXFwiO3tcXFwiKVsxXS5zcGxpdChcXFwifVxcXCIpWzBdLnNwbGl0KFxcXCImJlxcXCIpO1xcbiAgICAgICAgICAgICAgICB2YXIgcHVybCA9IGlucHV0LnNwbGl0KFxcXCI7e1xcXCIpWzBdLnJlcGxhY2UoL1xcXFwmL2csICfvvIbvvIYnKTtcXG5cXG4gICAgICAgICAgICAgICAgdmFyIGFhYSA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWQubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBoZWFkW2ldLnNwbGl0KFxcXCJAXFxcIilbMF07XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gaGVhZFtpXS5zcGxpdChcXFwiQFxcXCIpWzFdLnJlcGxhY2UoL1xcXFzvvJtcXFxc77ybL2csICc7Jyk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdnZ2ID0ga2V5ICsgXFxcIj1cXFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbCk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhYWEgPSB2dnY7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFhYSArPSBcXFwiJlxcXCIgKyB2dnZcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBwdXJsID0gcHVybCArIFxcXCJ8XFxcIiArIGFhYTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBwdXJsID0gcHVybC5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG5cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy9sb2cocHVybCk7XFxuICAgICAgICAgICAgLy9sb2codHZpcCk7XFxuICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycpKSB7XFxuICAgICAgICAgICAgICAgIGxldCByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG4gICAgICAgICAgICAgICAgcHVybCA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiBpbnB1dCxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZWZyZXNoX3Rva2VuXFxcIjogcmVmdG9rZW5cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgdmFyIHN0YXRlID0gcmVxdWVzdCh0dmlwICsgJy9hY3Rpb24nLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXG4gICAgICAgICAgICAgICAgICAgIC8vJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxcbiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiB0dmlwXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDIwMDAsXFxuICAgICAgICAgICAgICAgIGJvZHk6ICdkbz1wdXNoJnVybD0nICsgcHVybCxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBsb2coc3RhdGUpO1xcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnb2snKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjqjpgIHmiJDlip/vvIzlpoLmnpx0dmJveOaYvuekuuKAnOayoeaJvuWIsOaVsOaNruKAneWPr+iDveaYr+ivpemTvuaOpemcgOimgeWvhueggeaIluiAheW9k+WJjeeahGphcuS4jeaUr+aMgeOAgic7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aOqOmAgeWksei0pSdcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB0dmlwKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJcXFwiXFxuICAgIH0pO1xcbn0gZWxzZSB7XFxuICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmjqjpgIHlpLHotKXvvIxJUOWcsOWdgOiuvue9ruS4jeato+ehruOAgicsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5pZiAoZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLmluY2x1ZGVzKCd3d3cuYWxpeXVuZHJpdmUnKSAmJiAhcmVhbHVybC5pbmNsdWRlcygnJTNCJTdCJykpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2Uvc2hhcmlkJywge30pKS5ydWxlKVxcbn1cXG5zZXRSZXN1bHQoaXRlbXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiG5Lqr6LWE5rqQ5LiA57qnXCIsXCJwYXRoXCI6XCJzaGFyaWRcIixcInJ1bGVcIjpcImpzOlxcbi8vdmFyIGl0ZW1zID0gW107XFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShfZGF0ZSwgX2ZtdCkge1xcbiAgICBsZXQgZm10ID0gX2ZtdCB8fCBcXFwieXl5eS1NTS1kZCBISDptbTpzc1xcXCI7XFxuICAgIGNvbnN0IGRhdGUgPSAhaXNOYU4oX2RhdGUpID8gbmV3IERhdGUoX2RhdGUgKiAxMDAwKSA6IG5ldyBEYXRlKF9kYXRlKTtcXG4gICAgY29uc3QgbyA9IHtcXG4gICAgICAgIFxcXCJNK1xcXCI6IGRhdGUuZ2V0TW9udGgoKSArIDEsIC8v5pyI5Lu9IFxcbiAgICAgICAgXFxcImQrXFxcIjogZGF0ZS5nZXREYXRlKCksIC8v5pelIFxcbiAgICAgICAgXFxcImgrXFxcIjogZGF0ZS5nZXRIb3VycygpICUgMTIgPT0gMCA/IDEyIDogZGF0ZS5nZXRIb3VycygpICUgMTIsXFxuICAgICAgICBcXFwiSCtcXFwiOiBkYXRlLmdldEhvdXJzKCksIC8v5bCP5pe2IFxcbiAgICAgICAgXFxcIm0rXFxcIjogZGF0ZS5nZXRNaW51dGVzKCksIC8v5YiGIFxcbiAgICAgICAgXFxcInMrXFxcIjogZGF0ZS5nZXRTZWNvbmRzKCksIC8v56eSIFxcbiAgICAgICAgXFxcInErXFxcIjogTWF0aC5mbG9vcigoZGF0ZS5nZXRNb250aCgpICsgMykgLyAzKSwgLy/lraPluqYgXFxuICAgICAgICBcXFwiU1xcXCI6IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLy/mr6vnp5IgXFxuICAgIH07XFxuICAgIGlmICgvKHkrKS8udGVzdChmbXQpKSB7XFxuICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChkYXRlLmdldEZ1bGxZZWFyKCkgKyBcXFwiXFxcIikuc3Vic3RyKDQgLSBSZWdFeHAuJDEubGVuZ3RoKSk7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgayBpbiBvKSB7XFxuICAgICAgICBpZiAobmV3IFJlZ0V4cChcXFwiKFxcXCIgKyBrICsgXFxcIilcXFwiKS50ZXN0KGZtdCkpIHtcXG4gICAgICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChSZWdFeHAuJDEubGVuZ3RoID09IDEpID8gKG9ba10pIDogKChcXFwiMDBcXFwiICsgb1trXSkuc3Vic3RyKChcXFwiXFxcIiArIG9ba10pLmxlbmd0aCkpKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gZm10O1xcbn07XFxuXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShzaXplKSB7XFxuICAgIGlmICghc2l6ZSkge1xcbiAgICAgICAgcmV0dXJuICcnO1xcbiAgICB9XFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxuICAgIGxldCBpID0gMDtcXG4gICAgd2hpbGUgKHNpemUgPj0gMTAyNCkge1xcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgaSsrO1xcbiAgICB9XFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcbn1cXG4vL2xvZyhyZWFsdXJsKTtcXG50cnkge1xcbiAgICAvL3ZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMveHlxL2FsaXRva2VuLmpzb24nLCB7fSkpLnJlZnJlc2hfdG9rZW47XFxuICAgIHZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG4gICAgdmFyIHNoYXJlSWQgPSBkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuc3BsaXQoJ2NvbS9zLycpWzFdLnN1YnN0cmluZygwLCAxMSk7XFxuICAgIGxldCBwdXNobmFtZSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvc2hhcmVfbGluay9nZXRfc2hhcmVfYnlfYW5vbnltb3VzJywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXG4gICAgICAgIH0sXFxuICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCJ9JyxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgIH0pKS5zaGFyZV9uYW1lO1xcbiAgICB2YXIgc2hhcmV0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9zaGFyZV9saW5rL2dldF9zaGFyZV90b2tlbicsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfcHdkXFxcIjpcXFwiXFxcIixcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KSkuc2hhcmVfdG9rZW47XFxuICAgIC8vbG9nKHNoYXJldG9rZW4pO1xcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbiAgICB9XFxuICAgIGxldCBuZXh0ID0gZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpICE9ICcnID8gJyxcXFwibWFya2VyXFxcIjpcXFwiJyArIGdldE15VmFyKCduZXh0cGFnZScpICsgJ1xcXCInIDogJyc7XFxuICAgIGlmICghZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLmluY2x1ZGVzKCcvZm9sZGVyLycpKSB7XFxuICAgICAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwicm9vdFxcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICAvL2xvZyhyZXNjb2QpO1xcbiAgICAgICAgdmFyIGxpc3R5cCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS50eXBlO1xcbiAgICAgICAgdmFyIHBmaWxlaWQgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0uZmlsZV9pZDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciBsaXN0eXAgPSAnZm9sZGVyJztcXG4gICAgICAgIHZhciBwZmlsZWlkID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLnNwbGl0KCdmb2xkZXIvJylbMV1cXG5cXG4gICAgfVxcbiAgICAvL2xvZyhodG1sKTtcXG4gICAgaWYgKGxpc3R5cCA9PSAnZm9sZGVyJykge1xcbiAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwiLFxcXCJwYXJlbnRfZmlsZV9pZFxcXCI6XFxcIicgKyBwZmlsZWlkICsgJ1xcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZVxcXFwvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXCIsXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcXCJvcmRlcl9ieVxcXCI6XFxcIm5hbWVcXFwiLFxcXCJvcmRlcl9kaXJlY3Rpb25cXFwiOlxcXCJBU0NcXFwiJyArIG5leHQgKyAnfScsXFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgIH0pO1xcblxcbiAgICB9IC8v5Y+W5paH5Lu25aS5XFxuICAgIC8vbG9nKHJlc2NvZCk7XFxuXFxuICAgIGlmIChKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXIpIHtcXG4gICAgICAgIGxldCBtYXJrZXIgPSBKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXI7XFxuICAgICAgICBpZiAobWFya2VyLmxlbmd0aCA+IDEwKSB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ25leHRwYWdlJywgbWFya2VyKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICB2YXIgY29udHMgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXM7XFxuICAgIHZhciBkb25ndGFpID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenl1cmwnLCB7fSkpLnJ1bGUudG9TdHJpbmcoKTtcXG4gICAgdmFyIHR1aXNvbmcgPSBbXTtcXG4gICAgZm9yICh2YXIgaSBpbiBjb250cykge1xcbiAgICAgICAgdmFyIGxpc3R5cCA9IGNvbnRzW2ldLnR5cGU7XFxuICAgICAgICBpZiAobGlzdHlwICE9ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXG4gICAgICAgICAgICB2YXIgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2RvYycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk5YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+WvCcgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnemlwJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGNvbnRzW2ldLm5hbWVcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBkb25ndGFpLCBjYXRlLCBmbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChkb25ndGFpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwbGF5XFxuICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGRvbmd0YWksIGNhdGUsIGZuYW1lKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogZm9ybWF0RGF0ZShjb250c1tpXS51cGRhdGVkX2F0KSArICcgICcgKyBmb3JtYXRTaXplKGNvbnRzW2ldLnNpemUpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG5cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nIHx8IGNhdGUgPT0gJ2F1ZGlvJykge1xcbiAgICAgICAgICAgICAgICB0dWlzb25nLnB1c2goXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZS5yZXBsYWNlKC9cXFxcIy9nLCAnXycpLnJlcGxhY2UoL1xcXFwkL2csICdfJykgKyAnJCcgKyBjYXRlICsgJ3wnICsgY29udHNbaV0uZmlsZV9pZFxcbiAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+TgicgKyBjb250c1tpXS5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgY29udHNbaV0uZmlsZV9pZCArICc/Pz9meXBhZ2UnKS5ydWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBwdXNobmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcnVsZWxvb3AnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjb250c1tpXS5uYW1lKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgIH0gLy9lbmQgaWZcXG4gICAgfSAvL2VuZCBmb3IgaVxcbiAgICAvL2xvZyh0dWlzb25nKTtcXG4gICAgLy9sZXQgcHVzaG5hbWUgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0ubmFtZTtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcHVzaGNvZGUnLCB7fSkpLnJ1bGUpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgaXRlbXMucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+asp+asp++8jOaKpemUmeS6huOAgicsXFxuICAgICAgICB1cmw6IGRlY29kZVVSSUNvbXBvbmVudChnZXRSZXNDb2RlKCkuc3BsaXQoJyMjJylbMV0pLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XFxuLypcXG5zZXRIb21lUmVzdWx0KHtcXG4gICAgZGF0YTogaXRlbXNcXG59KTtcXG4qL1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiG5Lqr6LWE5rqQ5bWM5aWXXCIsXCJwYXRoXCI6XCJydWxlbG9vcFwiLFwicnVsZVwiOlwidmFyIGl0ZW1zID0gW107XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShfZGF0ZSwgX2ZtdCkge1xcbiAgICBsZXQgZm10ID0gX2ZtdCB8fCBcXFwieXl5eS1NTS1kZCBISDptbTpzc1xcXCI7XFxuICAgIGNvbnN0IGRhdGUgPSAhaXNOYU4oX2RhdGUpID8gbmV3IERhdGUoX2RhdGUgKiAxMDAwKSA6IG5ldyBEYXRlKF9kYXRlKTtcXG4gICAgY29uc3QgbyA9IHtcXG4gICAgICAgIFxcXCJNK1xcXCI6IGRhdGUuZ2V0TW9udGgoKSArIDEsIC8v5pyI5Lu9IFxcbiAgICAgICAgXFxcImQrXFxcIjogZGF0ZS5nZXREYXRlKCksIC8v5pelIFxcbiAgICAgICAgXFxcImgrXFxcIjogZGF0ZS5nZXRIb3VycygpICUgMTIgPT0gMCA/IDEyIDogZGF0ZS5nZXRIb3VycygpICUgMTIsXFxuICAgICAgICBcXFwiSCtcXFwiOiBkYXRlLmdldEhvdXJzKCksIC8v5bCP5pe2IFxcbiAgICAgICAgXFxcIm0rXFxcIjogZGF0ZS5nZXRNaW51dGVzKCksIC8v5YiGIFxcbiAgICAgICAgXFxcInMrXFxcIjogZGF0ZS5nZXRTZWNvbmRzKCksIC8v56eSIFxcbiAgICAgICAgXFxcInErXFxcIjogTWF0aC5mbG9vcigoZGF0ZS5nZXRNb250aCgpICsgMykgLyAzKSwgLy/lraPluqYgXFxuICAgICAgICBcXFwiU1xcXCI6IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLy/mr6vnp5IgXFxuICAgIH07XFxuICAgIGlmICgvKHkrKS8udGVzdChmbXQpKSB7XFxuICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChkYXRlLmdldEZ1bGxZZWFyKCkgKyBcXFwiXFxcIikuc3Vic3RyKDQgLSBSZWdFeHAuJDEubGVuZ3RoKSk7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgayBpbiBvKSB7XFxuICAgICAgICBpZiAobmV3IFJlZ0V4cChcXFwiKFxcXCIgKyBrICsgXFxcIilcXFwiKS50ZXN0KGZtdCkpIHtcXG4gICAgICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChSZWdFeHAuJDEubGVuZ3RoID09IDEpID8gKG9ba10pIDogKChcXFwiMDBcXFwiICsgb1trXSkuc3Vic3RyKChcXFwiXFxcIiArIG9ba10pLmxlbmd0aCkpKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gZm10O1xcbn07XFxuXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShzaXplKSB7XFxuICAgIGlmICghc2l6ZSkge1xcbiAgICAgICAgcmV0dXJuICcnO1xcbiAgICB9XFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxuICAgIGxldCBpID0gMDtcXG4gICAgd2hpbGUgKHNpemUgPj0gMTAyNCkge1xcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgaSsrO1xcbiAgICB9XFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcbn1cXG5sZXQgdHZpcCA9IGdldEl0ZW0oJ2hpa2VydHZib3hzZXQnLCAnJyk7XFxuXFxubGV0IHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcbiAgICAgICAgICAgIFxcbi8vbG9nKGdldFJlc0NvZGUoKSk7XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbiAgICBpdGVtcy51bnNoaWZ0KHtcXG4gICAgICAgIHRpdGxlOiBcXFwi8J+TveaOqOmAgeW9k+WJjeaWh+S7tuWkufCfk7pcXFwiLFxcbiAgICAgICAgdXJsOiAkKCdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy8nICsgc2hhcmVJZCArICcvZm9sZGVyLycgKyBnZXRSZXNDb2RlKCkuc3BsaXQoJz8/PycpWzBdKS5sYXp5UnVsZSgodHZpcCkgPT4ge1xcbiAgICAgICAgICAgIGlmICghdHZpcC5pbmNsdWRlcygnOjk5NycpKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly9JUOS4uuepuuaIluS4jeato+ehru+8jOivt+WFiOiuvue9ruOAgidcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGxldCByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG4gICAgICAgICAgICBsZXQgcHVybCA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgXFxcInVybFxcXCI6IGlucHV0LFxcbiAgICAgICAgICAgICAgICBcXFwicmVmcmVzaF90b2tlblxcXCI6IHJlZnRva2VuXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgdmFyIHN0YXRlID0gcmVxdWVzdCh0dmlwICsgJy9hY3Rpb24nLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXG4gICAgICAgICAgICAgICAgICAgIC8vJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxcbiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiB0dmlwXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDIwMDAsXFxuICAgICAgICAgICAgICAgIGJvZHk6ICdkbz1wdXNoJnVybD0nICsgcHVybCxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBsb2coc3RhdGUpO1xcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnb2snKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjqjpgIHmiJDlip/vvIzlpoLmnpx0dmJveOaYvuekuuKAnOayoeaJvuWIsOaVsOaNruKAneWPr+iDveaYr+W9k+WJjeeahGphcuS4jeaUr+aMgeOAgic7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aOqOmAgeWksei0pSdcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB0dmlwKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgfSk7XFxufVxcbmxldCBuZXh0ID0gZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpICE9ICcnID8gJyxcXFwibWFya2VyXFxcIjpcXFwiJyArIGdldE15VmFyKCduZXh0cGFnZScpICsgJ1xcXCInIDogJyc7XFxuXFxudmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICB9LFxcbiAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwiJyArIGdldFJlc0NvZGUoKS5zcGxpdCgnPz8/JylbMF0gKyAnXFxcIixcXFwibGltaXRcXFwiOjEwMCxcXFwiaW1hZ2VfdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXCI6XFxcImltYWdlXFxcXC9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgbWV0aG9kOiAnUE9TVCdcXG59KTtcXG4vL2xvZyhyZXNjb2QpO1xcbmlmIChKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXIpIHtcXG4gICAgbGV0IG1hcmtlciA9IEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcjtcXG4gICAgaWYgKG1hcmtlci5sZW5ndGggPiAxMCkge1xcbiAgICAgICAgcHV0TXlWYXIoJ25leHRwYWdlJywgbWFya2VyKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxuICAgIH1cXG59XFxudmFyIGNvbnRzID0gSlNPTi5wYXJzZShyZXNjb2QpLml0ZW1zO1xcbnZhciBkb25ndGFpID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenl1cmwnLCB7fSkpLnJ1bGUudG9TdHJpbmcoKTtcXG52YXIgdHVpc29uZyA9IFtdO1xcbmZvciAodmFyIGkgaW4gY29udHMpIHtcXG5cXG4gICAgdmFyIGxpc3R5cCA9IGNvbnRzW2ldLnR5cGU7XFxuICAgIGlmIChsaXN0eXAgIT0gJ2ZvbGRlcicpIHtcXG4gICAgICAgIHZhciBjYXRlID0gY29udHNbaV0uY2F0ZWdvcnk7XFxuICAgICAgICB2YXIgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgaWYgKGNhdGUgPT0gJ3ZpZGVvJykge1xcbiAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5O6JyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2RvYycpIHtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TlicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdpbWFnZScpIHtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+WvCcgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICd6aXAnKSB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk6YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gY29udHNbaV0ubmFtZVxcbiAgICAgICAgfVxcbiAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgIHVybDogJChjb250c1tpXS5maWxlX2lkKS5sYXp5UnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgZG9uZ3RhaSwgY2F0ZSwgZm5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChkb25ndGFpKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBsYXlcXG4gICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBkb25ndGFpLCBjYXRlLCBmbmFtZSksXFxuICAgICAgICAgICAgZGVzYzogZm9ybWF0RGF0ZShjb250c1tpXS51cGRhdGVkX2F0KSArICcgICcgKyBmb3JtYXRTaXplKGNvbnRzW2ldLnNpemUpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcblxcbiAgICAgICAgfSk7XFxuICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nIHx8IGNhdGUgPT0gJ2F1ZGlvJykge1xcbiAgICAgICAgICAgIHR1aXNvbmcucHVzaChcXG4gICAgICAgICAgICAgICAgdGl0bGUucmVwbGFjZSgvXFxcXCMvZywgJ18nKS5yZXBsYWNlKC9cXFxcJC9nLCAnXycpICsgJyQnICsgY2F0ZSArICd8JyArIGNvbnRzW2ldLmZpbGVfaWRcXG4gICAgICAgICAgICApO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfwn5OCJyArIGNvbnRzW2ldLm5hbWUsXFxuICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGNvbnRzW2ldLmZpbGVfaWQgKyAnPz8/ZnlwYWdlJykucnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgcHVzaG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvcnVsZWxvb3AnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNvbnRzW2ldLm5hbWUpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICB9KTtcXG5cXG4gICAgfSAvL2VuZCBpZlxcblxcblxcbn1cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9wdXNoY29kZScsIHt9KSkucnVsZSk7XFxuc2V0SG9tZVJlc3VsdCh7XFxuICAgIGRhdGE6IGl0ZW1zXFxufSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliIbkuqvotYTmupDliqjmgIHop6PmnpBcIixcInBhdGhcIjpcImxhenl1cmxcIixcInJ1bGVcIjpcImZ1bmN0aW9uIGFjY2Vzc1RrKCkge1xcbiAgICBsZXQgbnRva2VuID0gW107XFxuICAgIC8vbGV0IHJlZnRva2VuID0gcmVxdWVzdCgnaHR0cDovL2hvbWUuanVuZGllLnRvcDo4MS9qYXIvdG9rZW42NjYudHh0Jywge30pO1xcbiAgICAvL3ZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMveHlxL2FsaXRva2VuLmpzb24nLCB7fSkpLnJlZnJlc2hfdG9rZW47XFxuICAgIHZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG4gICAgbGV0IGFjY2Vzc1RrID0gXFxcIlxcXCI7XFxuICAgIGxldCByZWZyZXNoID0gZmV0Y2goJ2h0dHBzOi8vYXV0aC5hbGl5dW5kcml2ZS5jb20vdjIvYWNjb3VudC90b2tlbicsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keTogJ3tcXFwicmVmcmVzaF90b2tlblxcXCI6XFxcIicgKyByZWZ0b2tlbiArICdcXFwiLFxcXCJncmFudF90eXBlXFxcIjpcXFwicmVmcmVzaF90b2tlblxcXCJ9JyxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgIH0pO1xcbiAgICBudG9rZW4ucHVzaChKU09OLnBhcnNlKHJlZnJlc2gpKTtcXG4gICAgaWYgKCFmaWxlRXhpc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvblxcXCIpIHx8IHJlZnJlc2gubGVuZ3RoID4gMzAwKSB7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KG50b2tlbikpO1xcbiAgICB9XFxuICAgIGFjY2Vzc1RrID0gSlNPTi5wYXJzZShyZWZyZXNoKS50b2tlbl90eXBlICsgJyAnICsgSlNPTi5wYXJzZShyZWZyZXNoKS5hY2Nlc3NfdG9rZW47XFxuICAgIHB1dE15VmFyKFxcXCJhbGlhY2Nlc3NUa1xcXCIsIGFjY2Vzc1RrKTtcXG4gICAgcmV0dXJuIGFjY2Vzc1RrXFxuICAgIC8vcHV0VmFyKFxcXCJhbGlhY2Nlc3NUa1xcXCIsIGFjY2Vzc1RrKTtcXG59XFxuXFxuaWYgKGNhdGUgPT0gJ3ZpZGVvJ3x8Y2F0ZSA9PSAnYXVkaW8nKSB7XFxuICAgIC8v5aSE55CG6KeG6aKRICBcXG4gICAgdmFyIGRzaWQgPSBzaGFyZUlkO1xcbiAgICB2YXIgZGZpZCA9IGlucHV0O1xcbiAgICBpZihjYXRlID09ICd2aWRlbycpe1xcbiAgICB2YXIganNvbiA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvZmlsZS9nZXRfc2hhcmVfbGlua192aWRlb19wcmV2aWV3X3BsYXlfaW5mbycsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYWNjZXNzVGsoKSxcXG4gICAgICAgICAgICAnWC1TaGFyZS1Ub2tlbic6IHNoYXJldG9rZW5cXG4gICAgICAgIH0sXFxuICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcImNhdGVnb3J5XFxcIjpcXFwibGl2ZV90cmFuc2NvZGluZ1xcXCIsXFxcImZpbGVfaWRcXFwiOlxcXCInICsgaW5wdXQgKyAnXFxcIixcXFwidGVtcGxhdGVfaWRcXFwiOlxcXCJcXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgLy9sb2coanNvbik7XFxuICAgIFxcbiAgICB2YXIgZHNpZCA9IEpTT04ucGFyc2UoanNvbikuc2hhcmVfaWQ7XFxuICAgIHZhciBkZmlkID0gSlNPTi5wYXJzZShqc29uKS5maWxlX2lkO1xcbiAgICB9XFxuICAgIGlmKGNhdGUgPT0gJ3ZpZGVvJyl7XFxuICAgICAgIHZhciBib2R5PSd7XFxcImV4cGlyZV9zZWNcXFwiOjYwMCxcXFwiZmlsZV9pZFxcXCI6XFxcIicgKyBkZmlkICsgJ1xcXCIsXFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIGRzaWQgKyAnXFxcIn0nO1xcbiAgICAgICAgXFxuICAgIH1lbHNle1xcbiAgICAgIHZhciBib2R5PSd7XFxcImZpbGVfaWRcXFwiOlxcXCInICsgZGZpZCArICdcXFwiLFxcXCJnZXRfYXVkaW9fcGxheV9pbmZvXFxcIjp0cnVlLFxcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBkc2lkICsgJ1xcXCJ9JzsgICBcXG4gICAgfVxcbiAgICB2YXIgZGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL2ZpbGUvZ2V0X3NoYXJlX2xpbmtfZG93bmxvYWRfdXJsJywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBhY2Nlc3NUaygpLFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6IGJvZHksXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgdmFyIGxpbmsgPSBKU09OLnBhcnNlKGRqc29uKS5kb3dubG9hZF91cmw7XFxuICAgIFxcbiAgICBcXG4gICAgLy9sb2cobGluayk7XFxuICAgIHZhciBwbGF5ID0gSlNPTi5wYXJzZShmZXRjaChsaW5rLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBNT0JJTEVfVUEsXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxcbiAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nXFxuICAgICAgICB9LFxcbiAgICAgICAgcmVkaXJlY3Q6IGZhbHNlLFxcbiAgICAgICAgd2l0aFN0YXR1c0NvZGU6IHRydWVcXG4gICAgfSkpLmhlYWRlcnMubG9jYXRpb25bMF0gKyAoY2F0ZSA9PSAndmlkZW8nPyc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL30nOicjaXNNdXNpYz10cnVlIzt7UmVmZXJlckBodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vfScpO1xcbn0gZWxzZSBpZiAoY2F0ZSA9PSAnaW1hZ2UnKSB7XFxuICAgIC8v5aSE55CG5paH5qGjXFxuICAgIHZhciBqc29uID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9maWxlL2dldF9zaGFyZV9saW5rX2Rvd25sb2FkX3VybCcsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYWNjZXNzVGsoKSxcXG4gICAgICAgICAgICAnWC1TaGFyZS1Ub2tlbic6IHNoYXJldG9rZW5cXG4gICAgICAgIH0sXFxuICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcImV4cGlyZV9zZWNcXFwiOiA2MDAsXFxcImZpbGVfaWRcXFwiOlxcXCInICsgaW5wdXQgKyAnXFxcIn0nLFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgfSk7XFxuXFxuICAgIC8vbG9nKGpzb24pO1xcblxcbiAgICB2YXIgbG9jbGluayA9IEpTT04ucGFyc2UoZmV0Y2goSlNPTi5wYXJzZShqc29uKS51cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6IE1PQklMRV9VQSxcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXFxuICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tLydcXG4gICAgICAgIH0sXFxuICAgICAgICByZWRpcmVjdDogZmFsc2UsXFxuICAgICAgICB3aXRoU3RhdHVzQ29kZTogdHJ1ZVxcbiAgICB9KSkuaGVhZGVycy5sb2NhdGlvblswXTtcXG5cXG4gICAgLy9sb2cobG9jbGluayk7XFxuICAgIGlmIChjYXRlID09ICdpbWFnZScpIHtcXG4gICAgICAgIHZhciBwbGF5ID0gJ3BpY3M6Ly8nICsgbG9jbGluayArICdAUmVmZXJlcj1odHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJztcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciBwbGF5ID0gbG9jbGluayArICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL30nO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIHBsYXkgPSAndG9hc3Q6Ly/or6XmoLzlvI/mmoLmnKrmlK/mjIHvvIznm67liY3lj6rmlK/mjIHpn7Pop4bpopHlkozlm77niYfjgIInXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5o6o6YCB5Luj56CBXCIsXCJwYXRoXCI6XCJwdXNoY29kZVwiLFwicnVsZVwiOlwianM6XFxuLy/mjqjpgIHku6PnoIFcXG5sZXQgcHVzaCA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgXFxcIm5hbWVcXFwiOnB1c2huYW1lLFxcbiAgICBcXFwidXJsXFxcIjogdHVpc29uZy5qb2luKCcjJyksXFxuICAgIFxcXCJzaGFyZV9pZFxcXCI6IHNoYXJlSWQsXFxuICAgIFxcXCJyZWZyZXNoX3Rva2VuXFxcIjogcmVmdG9rZW5cXG59KS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJyk7XFxuLy9sb2cocHVzaCk7XFxuLy9sZXQgdHZpcCA9IGdldEl0ZW0oJ2hpa2VydHZib3hzZXQnLCAnJyk7XFxuLy9sb2codHVpc29uZy5sZW5ndGgpO1xcbmlmKHR1aXNvbmcubGVuZ3RoPjApe1xcbml0ZW1zLnVuc2hpZnQoe1xcbiAgICB0aXRsZTogXFxcIvCfk73mjqjpgIHlvZPliY3pobXpn7Pop4bpopHwn5O6XFxcIixcXG4gICAgdXJsOiAkKHB1c2gpLmxhenlSdWxlKCh0dmlwKSA9PiB7XFxuICAgICAgICBpZiAoIXR2aXAuaW5jbHVkZXMoJzo5OTcnKSkge1xcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly9JUOS4uuepuuaIluS4jeato+ehru+8jOivt+WFiOiuvue9ruOAgidcXG4gICAgICAgIH07XFxuICAgICAgICB2YXIgc3RhdGUgPSByZXF1ZXN0KHR2aXAgKyAnL2FjdGlvbicsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXG4gICAgICAgICAgICAgICAgLy8nWC1SZXF1ZXN0ZWQtV2l0aCc6ICdYTUxIdHRwUmVxdWVzdCcsXFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogdHZpcFxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgdGltZW91dDogMjAwMCxcXG4gICAgICAgICAgICBib2R5OiAnZG89cHVzaCZ1cmw9JyArIGlucHV0LFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxvZyhzdGF0ZSk7XFxuICAgICAgICBpZiAoc3RhdGUgPT0gJ29rJykge1xcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjqjpgIHmiJDlip/vvIzlpoLmnpx0dmJveOaYvuekuuKAnOayoeaJvuWIsOaVsOaNruKAneWPr+iDveaYr+W9k+WJjeeahGphcuS4jeaUr+aMgeOAgic7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjqjpgIHlpLHotKUnXFxuICAgICAgICB9XFxuICAgIH0sIHR2aXApLFxcbiAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxufSk7XFxufVxcbi8vXCJ9XSxcInBhcmFtc1wiOlwie1xcXCJpZFxcXCI6XFxcIl9fYXBwMUAxXFxcIn1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwidHZib3jkupHnm5jmjqjpgIFcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5IyNodHRwcyUzQSUyRiUyRnd3dy5hbGl5dW5kcml2ZS5jb20lMkZzJTJGd2lTdWoxcUNoeDQlMkZmb2xkZXIlMkY2M2M0OWU2OGIyMDk1YjEwNDlhZjQwNGY4NjBhMWJlMzY3MzY1YTBhPz8/ZnlwYWdlXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG4vL2xvZyhNWV9VUkwpO1xcbnZhciBpdGVtcyA9IFtdO1xcbnZhciByZWFsdXJsID0gTVlfVVJMLnNwbGl0KCcjIycpWzFdLnNwbGl0KCc/Pz8nKVswXTtcXG52YXIgdHZpcCA9IGdldEl0ZW0oJ2hpa2VydHZib3hzZXQnLCAnJyk7XFxudmFyIGNsdGV4dCA9IGdldE15VmFyKFxcXCJuYW1lXFxcIiwgcmVhbHVybCk7XFxuLy9sb2cocmVhbHVybCk7XFxuaXRlbXMucHVzaCh7XFxuICAgIHRpdGxlOiBkZWNvZGVVUklDb21wb25lbnQoY2x0ZXh0KSxcXG4gICAgdXJsOiBcXFwiaW5wdXQ6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgdmFsdWU6IFxcXCJcXFwiLFxcbiAgICAgICAgaGludDogXFxcIuivt+i+k+WFpXR2Ym945o6o6YCB5YaF5a65XFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKCduYW1lJyk7XFxuICAgICAgICAgICAgdmFyIG51bSA9IGVuY29kZVVSSUNvbXBvbmVudChpbnB1dCk7XFxuICAgICAgICAgICAgaWYgKG51bSA9PSAnJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6L6T5YWl55qE5YC85piv56m655qE44CCJztcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignbmFtZScsIG51bSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSxcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAnaWNvbl8xX3NlYXJjaCdcXG59KTtcXG5cXG5pZiAoZ2V0TXlWYXIoJ25hbWUnLCAnJykgIT0gJycpIHtcXG4gICAgcmVhbHVybCA9IGdldE15VmFyKCduYW1lJyk7XFxufVxcbi8vbG9nKFxcXCLlrp7pmYVcXFwiK3JlYWx1cmwpO1xcbmlmICh0dmlwLmluY2x1ZGVzKCdodHRwJykpIHtcXG4gICAgaXRlbXMucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIvCfk70g5o6o6YCB5YiwVFZCb3gg8J+TulxcXCIsXFxuICAgICAgICB1cmw6ICQocmVhbHVybCkubGF6eVJ1bGUoKHR2aXApID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKCduYW1lJyk7XFxuICAgICAgICAgICAgaW5wdXQgPSBkZWNvZGVVUklDb21wb25lbnQoaW5wdXQpO1xcbiAgICAgICAgICAgIHZhciBwdXJsID0gaW5wdXQuc3BsaXQoXFxcIjtcXFwiKVswXTtcXG4gICAgICAgICAgICBpZiAocHVybC5pbmNsdWRlcyhcXFwiXFxcXG5cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBwdXJsID0gcHVybC5yZXBsYWNlKFxcXCJcXFxcblxcXCIsICckJyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBoZWFkID0gaW5wdXQuc3BsaXQoXFxcIjtcXFwiKVsxXTtcXG4gICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChcXFwie1xcXCIpICYmIGlucHV0LmVuZHNXaXRoKFxcXCJ9XFxcIikpIHtcXG5cXG4gICAgICAgICAgICAgICAgcHVybCA9IGlucHV0LnJlcGxhY2UoL1xcXFwmL2csICfvvIbvvIYnKTtcXG4gICAgICAgICAgICAgICAgLy9sb2cocHVybCk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFkICE9IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgICAgICB2YXIgaGVhZCA9IGlucHV0LnNwbGl0KFxcXCI7e1xcXCIpWzFdLnNwbGl0KFxcXCJ9XFxcIilbMF0uc3BsaXQoXFxcIiYmXFxcIik7XFxuICAgICAgICAgICAgICAgIHZhciBwdXJsID0gaW5wdXQuc3BsaXQoXFxcIjt7XFxcIilbMF0ucmVwbGFjZSgvXFxcXCYvZywgJ++8hu+8hicpO1xcblxcbiAgICAgICAgICAgICAgICB2YXIgYWFhID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGhlYWRbaV0uc3BsaXQoXFxcIkBcXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSBoZWFkW2ldLnNwbGl0KFxcXCJAXFxcIilbMV0ucmVwbGFjZSgvXFxcXO+8m1xcXFzvvJsvZywgJzsnKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB2dnYgPSBrZXkgKyBcXFwiPVxcXCIgKyBlbmNvZGVVUklDb21wb25lbnQodmFsKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpIDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFhYSA9IHZ2djtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWFhICs9IFxcXCImXFxcIiArIHZ2dlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHB1cmwgPSBwdXJsICsgXFxcInxcXFwiICsgYWFhO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHB1cmwgPSBwdXJsLnJlcGxhY2UoL1xcXFwmL2csICfvvIbvvIYnKVxcblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAvL2xvZyhwdXJsKTtcXG4gICAgICAgICAgICAvL2xvZyh0dmlwKTtcXG4gICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aCgnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvJykpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcbiAgICAgICAgICAgICAgICBwdXJsID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInVybFxcXCI6IGlucHV0LFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInJlZnJlc2hfdG9rZW5cXFwiOiByZWZ0b2tlblxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICB2YXIgc3RhdGUgPSByZXF1ZXN0KHR2aXAgKyAnL2FjdGlvbicsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxcbiAgICAgICAgICAgICAgICAgICAgLy8nWC1SZXF1ZXN0ZWQtV2l0aCc6ICdYTUxIdHRwUmVxdWVzdCcsXFxuICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHR2aXBcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgdGltZW91dDogMjAwMCxcXG4gICAgICAgICAgICAgICAgYm9keTogJ2RvPXB1c2gmdXJsPScgKyBwdXJsLFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGxvZyhzdGF0ZSk7XFxuICAgICAgICAgICAgaWYgKHN0YXRlID09ICdvaycpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aOqOmAgeaIkOWKn++8jOWmguaenHR2Ym945pi+56S64oCc5rKh5om+5Yiw5pWw5o2u4oCd5Y+v6IO95piv6K+l6ZO+5o6l6ZyA6KaB5a+G56CB5oiW6ICF5b2T5YmN55qEamFy5LiN5pSv5oyB44CCJztcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5o6o6YCB5aSx6LSlJ1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIHR2aXApLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcIlxcXCJcXG4gICAgfSk7XFxufSBlbHNlIHtcXG4gICAgaXRlbXMucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aOqOmAgeWksei0pe+8jElQ5Zyw5Z2A6K6+572u5LiN5q2j56Gu44CCJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbmlmIChkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuaW5jbHVkZXMoJ3d3dy5hbGl5dW5kcml2ZScpICYmICFyZWFsdXJsLmluY2x1ZGVzKCclM0IlN0InKSkge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9zaGFyaWQnLCB7fSkpLnJ1bGUpXFxufVxcbnNldFJlc3VsdChpdGVtcyk7XCIsXCJncm91cFwiOlwi4pGm5bel5YW3XCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcXG5pZiAoIWdldE15VmFyKFxcXCJhbGlhY2Nlc3NUa1xcXCIpKSB7XFxuICAgIGxldCBudG9rZW49W107XFxuICAgIGlmICghZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb25cXFwiKSkge1xcbiAgICAgICAgdmFyIHJlZnRva2VuID0gXFxcIlxcXCI7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB2YXIgcmVmdG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb24nLCB7fSkpWzBdLnJlZnJlc2hfdG9rZW47XFxuICAgIH1cXG4gICAgdmFyIHJlZnJlc2ggPSBmZXRjaCgnaHR0cHM6Ly9hdXRoLmFsaXl1bmRyaXZlLmNvbS92Mi9hY2NvdW50L3Rva2VuJywge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQSxcXG4gICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6ICd7XFxcInJlZnJlc2hfdG9rZW5cXFwiOlxcXCInICsgcmVmdG9rZW4gKyAnXFxcIixcXFwiZ3JhbnRfdHlwZVxcXCI6XFxcInJlZnJlc2hfdG9rZW5cXFwifScsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgLy9sb2cocmVmcmVzaCk7XFxuICAgIGlmICghZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb25cXFwiKSB8fCByZWZyZXNoLmxlbmd0aCA+IDMwMCkge1xcbiAgICAgICAgbnRva2VuLnB1c2goSlNPTi5wYXJzZShyZWZyZXNoKSk7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KG50b2tlbikpO1xcbiAgICB9XFxuICAgIFxcbiAgICB2YXIgcmVmcmVzaCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb24nLCB7fSk7XFxuICAgIHZhciBhY2Nlc3NUayA9IEpTT04ucGFyc2UocmVmcmVzaClbMF0udG9rZW5fdHlwZSArICcgJyArIEpTT04ucGFyc2UocmVmcmVzaClbMF0uYWNjZXNzX3Rva2VuO1xcbiAgICBwdXRNeVZhcihcXFwiYWxpYWNjZXNzVGtcXFwiLCBhY2Nlc3NUayk7XFxufVxcblxcblxcblwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmjqjpgIFcXFwiLFxcXCJwYXRoXFxcIjpcXFwicHVzaFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbi8vbG9nKE1ZX1VSTCk7XFxcXG52YXIgaXRlbXMgPSBbXTtcXFxcbnZhciByZWFsdXJsID0gTVlfVVJMLnNwbGl0KCcjIycpWzFdLnNwbGl0KCc/Pz8nKVswXTtcXFxcbnZhciB0dmlwID0gZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICcnKTtcXFxcbnZhciBjbHRleHQgPSBnZXRNeVZhcihcXFxcXFxcIm5hbWVcXFxcXFxcIiwgcmVhbHVybCk7XFxcXG4vL2xvZyhyZWFsdXJsKTtcXFxcbml0ZW1zLnB1c2goe1xcXFxuICAgIHRpdGxlOiBkZWNvZGVVUklDb21wb25lbnQoY2x0ZXh0KSxcXFxcbiAgICB1cmw6IFxcXFxcXFwiaW5wdXQ6Ly9cXFxcXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgdmFsdWU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgIGhpbnQ6IFxcXFxcXFwi6K+36L6T5YWldHZib3jmjqjpgIHlhoXlrrlcXFxcXFxcIixcXFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgY2xlYXJNeVZhcignbmFtZScpO1xcXFxuICAgICAgICAgICAgdmFyIG51bSA9IGVuY29kZVVSSUNvbXBvbmVudChpbnB1dCk7XFxcXG4gICAgICAgICAgICBpZiAobnVtID09ICcnKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeeahOWAvOaYr+epuueahOOAgic7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCduYW1lJywgbnVtKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pLFxcXFxuICAgIH0pLFxcXFxuICAgIGNvbF90eXBlOiAnaWNvbl8xX3NlYXJjaCdcXFxcbn0pO1xcXFxuXFxcXG5pZiAoZ2V0TXlWYXIoJ25hbWUnLCAnJykgIT0gJycpIHtcXFxcbiAgICByZWFsdXJsID0gZ2V0TXlWYXIoJ25hbWUnKTtcXFxcbn1cXFxcbi8vbG9nKFxcXFxcXFwi5a6e6ZmFXFxcXFxcXCIrcmVhbHVybCk7XFxcXG5pZiAodHZpcC5pbmNsdWRlcygnaHR0cCcpKSB7XFxcXG4gICAgaXRlbXMucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIvCfk70g5o6o6YCB5YiwVFZCb3gg8J+TulxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQocmVhbHVybCkubGF6eVJ1bGUoKHR2aXApID0+IHtcXFxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ25hbWUnKTtcXFxcbiAgICAgICAgICAgIGlucHV0ID0gZGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KTtcXFxcbiAgICAgICAgICAgIHZhciBwdXJsID0gaW5wdXQuc3BsaXQoXFxcXFxcXCI7XFxcXFxcXCIpWzBdO1xcXFxuICAgICAgICAgICAgaWYgKHB1cmwuaW5jbHVkZXMoXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBwdXJsID0gcHVybC5yZXBsYWNlKFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIsICckJyk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB2YXIgaGVhZCA9IGlucHV0LnNwbGl0KFxcXFxcXFwiO1xcXFxcXFwiKVsxXTtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXFxcXFwie1xcXFxcXFwiKSAmJiBpbnB1dC5lbmRzV2l0aChcXFxcXFxcIn1cXFxcXFxcIikpIHtcXFxcblxcXFxuICAgICAgICAgICAgICAgIHB1cmwgPSBpbnB1dC5yZXBsYWNlKC9cXFxcXFxcXCYvZywgJ++8hu+8hicpO1xcXFxuICAgICAgICAgICAgICAgIC8vbG9nKHB1cmwpO1xcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFkICE9IHVuZGVmaW5lZCkge1xcXFxuICAgICAgICAgICAgICAgIHZhciBoZWFkID0gaW5wdXQuc3BsaXQoXFxcXFxcXCI7e1xcXFxcXFwiKVsxXS5zcGxpdChcXFxcXFxcIn1cXFxcXFxcIilbMF0uc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcHVybCA9IGlucHV0LnNwbGl0KFxcXFxcXFwiO3tcXFxcXFxcIilbMF0ucmVwbGFjZSgvXFxcXFxcXFwmL2csICfvvIbvvIYnKTtcXFxcblxcXFxuICAgICAgICAgICAgICAgIHZhciBhYWEgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gaGVhZFtpXS5zcGxpdChcXFxcXFxcIkBcXFxcXFxcIilbMF07XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSBoZWFkW2ldLnNwbGl0KFxcXFxcXFwiQFxcXFxcXFwiKVsxXS5yZXBsYWNlKC9cXFxcXFxcXO+8m1xcXFxcXFxc77ybL2csICc7Jyk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCB2dnYgPSBrZXkgKyBcXFxcXFxcIj1cXFxcXFxcIiArIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IDEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFhYSA9IHZ2djtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFhYSArPSBcXFxcXFxcIiZcXFxcXFxcIiArIHZ2dlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHB1cmwgPSBwdXJsICsgXFxcXFxcXCJ8XFxcXFxcXCIgKyBhYWE7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHB1cmwgPSBwdXJsLnJlcGxhY2UoL1xcXFxcXFxcJi9nLCAn77yG77yGJylcXFxcblxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgLy9sb2cocHVybCk7XFxcXG4gICAgICAgICAgICAvL2xvZyh0dmlwKTtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy8nKSkge1xcXFxuICAgICAgICAgICAgICAgIGxldCByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXFxcbiAgICAgICAgICAgICAgICBwdXJsID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInVybFxcXFxcXFwiOiBpbnB1dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJyZWZyZXNoX3Rva2VuXFxcXFxcXCI6IHJlZnRva2VuXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIH1cXFxcblxcXFxuICAgICAgICAgICAgdmFyIHN0YXRlID0gcmVxdWVzdCh0dmlwICsgJy9hY3Rpb24nLCB7XFxcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXFxcXG4gICAgICAgICAgICAgICAgICAgIC8vJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxcXFxuICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHR2aXBcXFxcbiAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDIwMDAsXFxcXG4gICAgICAgICAgICAgICAgYm9keTogJ2RvPXB1c2gmdXJsPScgKyBwdXJsLFxcXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGxvZyhzdGF0ZSk7XFxcXG4gICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ29rJykge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjqjpgIHmiJDlip/vvIzlpoLmnpx0dmJveOaYvuekuuKAnOayoeaJvuWIsOaVsOaNruKAneWPr+iDveaYr+ivpemTvuaOpemcgOimgeWvhueggeaIluiAheW9k+WJjeeahGphcuS4jeaUr+aMgeOAgic7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjqjpgIHlpLHotKUnXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0sIHR2aXApLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgICAgIGRlc2M6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcbn0gZWxzZSB7XFxcXG4gICAgaXRlbXMucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn5o6o6YCB5aSx6LSl77yMSVDlnLDlnYDorr7nva7kuI3mraPnoa7jgIInLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG59XFxcXG5pZiAoZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLmluY2x1ZGVzKCd3d3cuYWxpeXVuZHJpdmUnKSAmJiAhcmVhbHVybC5pbmNsdWRlcygnJTNCJTdCJykpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9zaGFyaWQnLCB7fSkpLnJ1bGUpXFxcXG59XFxcXG5zZXRSZXN1bHQoaXRlbXMpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuWIhuS6q+i1hOa6kOS4gOe6p1xcXCIsXFxcInBhdGhcXFwiOlxcXCJzaGFyaWRcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG4vL3ZhciBpdGVtcyA9IFtdO1xcXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShfZGF0ZSwgX2ZtdCkge1xcXFxuICAgIGxldCBmbXQgPSBfZm10IHx8IFxcXFxcXFwieXl5eS1NTS1kZCBISDptbTpzc1xcXFxcXFwiO1xcXFxuICAgIGNvbnN0IGRhdGUgPSAhaXNOYU4oX2RhdGUpID8gbmV3IERhdGUoX2RhdGUgKiAxMDAwKSA6IG5ldyBEYXRlKF9kYXRlKTtcXFxcbiAgICBjb25zdCBvID0ge1xcXFxuICAgICAgICBcXFxcXFxcIk0rXFxcXFxcXCI6IGRhdGUuZ2V0TW9udGgoKSArIDEsIC8v5pyI5Lu9IFxcXFxuICAgICAgICBcXFxcXFxcImQrXFxcXFxcXCI6IGRhdGUuZ2V0RGF0ZSgpLCAvL+aXpSBcXFxcbiAgICAgICAgXFxcXFxcXCJoK1xcXFxcXFwiOiBkYXRlLmdldEhvdXJzKCkgJSAxMiA9PSAwID8gMTIgOiBkYXRlLmdldEhvdXJzKCkgJSAxMixcXFxcbiAgICAgICAgXFxcXFxcXCJIK1xcXFxcXFwiOiBkYXRlLmdldEhvdXJzKCksIC8v5bCP5pe2IFxcXFxuICAgICAgICBcXFxcXFxcIm0rXFxcXFxcXCI6IGRhdGUuZ2V0TWludXRlcygpLCAvL+WIhiBcXFxcbiAgICAgICAgXFxcXFxcXCJzK1xcXFxcXFwiOiBkYXRlLmdldFNlY29uZHMoKSwgLy/np5IgXFxcXG4gICAgICAgIFxcXFxcXFwicStcXFxcXFxcIjogTWF0aC5mbG9vcigoZGF0ZS5nZXRNb250aCgpICsgMykgLyAzKSwgLy/lraPluqYgXFxcXG4gICAgICAgIFxcXFxcXFwiU1xcXFxcXFwiOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC8v5q+r56eSIFxcXFxuICAgIH07XFxcXG4gICAgaWYgKC8oeSspLy50ZXN0KGZtdCkpIHtcXFxcbiAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoZGF0ZS5nZXRGdWxsWWVhcigpICsgXFxcXFxcXCJcXFxcXFxcIikuc3Vic3RyKDQgLSBSZWdFeHAuJDEubGVuZ3RoKSk7XFxcXG4gICAgfVxcXFxuICAgIGZvciAobGV0IGsgaW4gbykge1xcXFxuICAgICAgICBpZiAobmV3IFJlZ0V4cChcXFxcXFxcIihcXFxcXFxcIiArIGsgKyBcXFxcXFxcIilcXFxcXFxcIikudGVzdChmbXQpKSB7XFxcXG4gICAgICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChSZWdFeHAuJDEubGVuZ3RoID09IDEpID8gKG9ba10pIDogKChcXFxcXFxcIjAwXFxcXFxcXCIgKyBvW2tdKS5zdWJzdHIoKFxcXFxcXFwiXFxcXFxcXCIgKyBvW2tdKS5sZW5ndGgpKSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGZtdDtcXFxcbn07XFxcXG5cXFxcbmZ1bmN0aW9uIGZvcm1hdFNpemUoc2l6ZSkge1xcXFxuICAgIGlmICghc2l6ZSkge1xcXFxuICAgICAgICByZXR1cm4gJyc7XFxcXG4gICAgfVxcXFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxcXG4gICAgbGV0IGkgPSAwO1xcXFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXFxcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcXFxuICAgICAgICBpKys7XFxcXG4gICAgfVxcXFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcXFxuICAgIHJldHVybiBgJHtzaXplfSAke3VuaXRzW2ldfWA7XFxcXG59XFxcXG4vL2xvZyhyZWFsdXJsKTtcXFxcbnRyeSB7XFxcXG4gICAgLy92YXIgcmVmdG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL3h5cS9hbGl0b2tlbi5qc29uJywge30pKS5yZWZyZXNoX3Rva2VuO1xcXFxuICAgIHZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXFxcbiAgICB2YXIgc2hhcmVJZCA9IGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5zcGxpdCgnY29tL3MvJylbMV0uc3Vic3RyaW5nKDAsIDExKTtcXFxcbiAgICBsZXQgcHVzaG5hbWUgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL3NoYXJlX2xpbmsvZ2V0X3NoYXJlX2J5X2Fub255bW91cycsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBib2R5OiAne1xcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjpcXFxcXFxcIicgKyBzaGFyZUlkICsgJ1xcXFxcXFwifScsXFxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgfSkpLnNoYXJlX25hbWU7XFxcXG4gICAgdmFyIHNoYXJldG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvc2hhcmVfbGluay9nZXRfc2hhcmVfdG9rZW4nLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXFxcbiAgICAgICAgfSxcXFxcbiAgICAgICAgYm9keTogJ3tcXFxcXFxcInNoYXJlX3B3ZFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIHNoYXJlSWQgKyAnXFxcXFxcXCJ9JyxcXFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICB9KSkuc2hhcmVfdG9rZW47XFxcXG4gICAgLy9sb2coc2hhcmV0b2tlbik7XFxcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcXFxuICAgIH1cXFxcbiAgICBsZXQgbmV4dCA9IGdldE15VmFyKCduZXh0cGFnZScsICcnKSAhPSAnJyA/ICcsXFxcXFxcXCJtYXJrZXJcXFxcXFxcIjpcXFxcXFxcIicgKyBnZXRNeVZhcignbmV4dHBhZ2UnKSArICdcXFxcXFxcIicgOiAnJztcXFxcbiAgICBpZiAoIWRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnL2ZvbGRlci8nKSkge1xcXFxuICAgICAgICB2YXIgcmVzY29kID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvZmlsZS9saXN0Jywge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxcXG4gICAgICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgYm9keTogJ3tcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCI6XFxcXFxcXCInICsgc2hhcmVJZCArICdcXFxcXFxcIixcXFxcXFxcInBhcmVudF9maWxlX2lkXFxcXFxcXCI6XFxcXFxcXCJyb290XFxcXFxcXCIsXFxcXFxcXCJsaW1pdFxcXFxcXFwiOjEwMCxcXFxcXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFxcXFxcIixcXFxcXFxcImltYWdlX3VybF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJpbWFnZS9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcXFxcXCIsXFxcXFxcXCJ2aWRlb190aHVtYm5haWxfcHJvY2Vzc1xcXFxcXFwiOlxcXFxcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFxcXFxcIixcXFxcXFxcIm9yZGVyX2J5XFxcXFxcXCI6XFxcXFxcXCJuYW1lXFxcXFxcXCIsXFxcXFxcXCJvcmRlcl9kaXJlY3Rpb25cXFxcXFxcIjpcXFxcXFxcIkFTQ1xcXFxcXFwiJyArIG5leHQgKyAnfScsXFxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgLy9sb2cocmVzY29kKTtcXFxcbiAgICAgICAgdmFyIGxpc3R5cCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS50eXBlO1xcXFxuICAgICAgICB2YXIgcGZpbGVpZCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS5maWxlX2lkO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIHZhciBsaXN0eXAgPSAnZm9sZGVyJztcXFxcbiAgICAgICAgdmFyIHBmaWxlaWQgPSBkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuc3BsaXQoJ2ZvbGRlci8nKVsxXVxcXFxuXFxcXG4gICAgfVxcXFxuICAgIC8vbG9nKGh0bWwpO1xcXFxuICAgIGlmIChsaXN0eXAgPT0gJ2ZvbGRlcicpIHtcXFxcbiAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcXFxuICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIGJvZHk6ICd7XFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIHNoYXJlSWQgKyAnXFxcXFxcXCIsXFxcXFxcXCJwYXJlbnRfZmlsZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIHBmaWxlaWQgKyAnXFxcXFxcXCIsXFxcXFxcXCJsaW1pdFxcXFxcXFwiOjEwMCxcXFxcXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFxcXFxcIixcXFxcXFxcImltYWdlX3VybF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJpbWFnZVxcXFxcXFxcL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFxcXFxcIixcXFxcXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXFxcXFwiLFxcXFxcXFwib3JkZXJfYnlcXFxcXFxcIjpcXFxcXFxcIm5hbWVcXFxcXFxcIixcXFxcXFxcIm9yZGVyX2RpcmVjdGlvblxcXFxcXFwiOlxcXFxcXFwiQVNDXFxcXFxcXCInICsgbmV4dCArICd9JyxcXFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgfSAvL+WPluaWh+S7tuWkuVxcXFxuICAgIC8vbG9nKHJlc2NvZCk7XFxcXG5cXFxcbiAgICBpZiAoSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyKSB7XFxcXG4gICAgICAgIGxldCBtYXJrZXIgPSBKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXI7XFxcXG4gICAgICAgIGlmIChtYXJrZXIubGVuZ3RoID4gMTApIHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKCduZXh0cGFnZScsIG1hcmtlcik7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHZhciBjb250cyA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtcztcXFxcbiAgICB2YXIgZG9uZ3RhaSA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9sYXp5dXJsJywge30pKS5ydWxlLnRvU3RyaW5nKCk7XFxcXG4gICAgdmFyIHR1aXNvbmcgPSBbXTtcXFxcbiAgICBmb3IgKHZhciBpIGluIGNvbnRzKSB7XFxcXG4gICAgICAgIHZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcXFxuICAgICAgICBpZiAobGlzdHlwICE9ICdmb2xkZXInKSB7XFxcXG4gICAgICAgICAgICB2YXIgY2F0ZSA9IGNvbnRzW2ldLmNhdGVnb3J5O1xcXFxuICAgICAgICAgICAgdmFyIGZuYW1lID0gY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TuicgKyBjb250c1tpXS5uYW1lO1xcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdkb2MnKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk5YnICsgY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnaW1hZ2UnKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/CflrwnICsgY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnemlwJykge1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5OmJyArIGNvbnRzW2ldLm5hbWU7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGNvbnRzW2ldLm5hbWVcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29udHNbaV0uZmlsZV9pZCkubGF6eVJ1bGUoKHNoYXJlSWQsIHNoYXJldG9rZW4sIGRvbmd0YWksIGNhdGUsIGZuYW1lKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoZG9uZ3RhaSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwbGF5XFxcXG4gICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgZG9uZ3RhaSwgY2F0ZSwgZm5hbWUpLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoY29udHNbaV0udXBkYXRlZF9hdCkgKyAnICAnICsgZm9ybWF0U2l6ZShjb250c1tpXS5zaXplKSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcblxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nIHx8IGNhdGUgPT0gJ2F1ZGlvJykge1xcXFxuICAgICAgICAgICAgICAgIHR1aXNvbmcucHVzaChcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUucmVwbGFjZSgvXFxcXFxcXFwjL2csICdfJykucmVwbGFjZSgvXFxcXFxcXFwkL2csICdfJykgKyAnJCcgKyBjYXRlICsgJ3wnICsgY29udHNbaV0uZmlsZV9pZFxcXFxuICAgICAgICAgICAgICAgICk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ/Cfk4InICsgY29udHNbaV0ubmFtZSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgY29udHNbaV0uZmlsZV9pZCArICc/Pz9meXBhZ2UnKS5ydWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBwdXNobmFtZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9ydWxlbG9vcCcsIHt9KSkucnVsZSk7XFxcXG4gICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgY29udHNbaV0ubmFtZSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIH0gLy9lbmQgaWZcXFxcbiAgICB9IC8vZW5kIGZvciBpXFxcXG4gICAgLy9sb2codHVpc29uZyk7XFxcXG4gICAgLy9sZXQgcHVzaG5hbWUgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0ubmFtZTtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9wdXNoY29kZScsIHt9KSkucnVsZSk7XFxcXG59IGNhdGNoIChlKSB7XFxcXG4gICAgaXRlbXMucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn5qyn5qyn77yM5oql6ZSZ5LqG44CCJyxcXFxcbiAgICAgICAgdXJsOiBkZWNvZGVVUklDb21wb25lbnQoZ2V0UmVzQ29kZSgpLnNwbGl0KCcjIycpWzFdKSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgIH0pO1xcXFxufVxcXFxuLypcXFxcbnNldEhvbWVSZXN1bHQoe1xcXFxuICAgIGRhdGE6IGl0ZW1zXFxcXG59KTtcXFxcbiovXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5YiG5Lqr6LWE5rqQ5bWM5aWXXFxcIixcXFwicGF0aFxcXCI6XFxcInJ1bGVsb29wXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciBpdGVtcyA9IFtdO1xcXFxuXFxcXG5mdW5jdGlvbiBmb3JtYXREYXRlKF9kYXRlLCBfZm10KSB7XFxcXG4gICAgbGV0IGZtdCA9IF9mbXQgfHwgXFxcXFxcXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXFxcXFxcXCI7XFxcXG4gICAgY29uc3QgZGF0ZSA9ICFpc05hTihfZGF0ZSkgPyBuZXcgRGF0ZShfZGF0ZSAqIDEwMDApIDogbmV3IERhdGUoX2RhdGUpO1xcXFxuICAgIGNvbnN0IG8gPSB7XFxcXG4gICAgICAgIFxcXFxcXFwiTStcXFxcXFxcIjogZGF0ZS5nZXRNb250aCgpICsgMSwgLy/mnIjku70gXFxcXG4gICAgICAgIFxcXFxcXFwiZCtcXFxcXFxcIjogZGF0ZS5nZXREYXRlKCksIC8v5pelIFxcXFxuICAgICAgICBcXFxcXFxcImgrXFxcXFxcXCI6IGRhdGUuZ2V0SG91cnMoKSAlIDEyID09IDAgPyAxMiA6IGRhdGUuZ2V0SG91cnMoKSAlIDEyLFxcXFxuICAgICAgICBcXFxcXFxcIkgrXFxcXFxcXCI6IGRhdGUuZ2V0SG91cnMoKSwgLy/lsI/ml7YgXFxcXG4gICAgICAgIFxcXFxcXFwibStcXFxcXFxcIjogZGF0ZS5nZXRNaW51dGVzKCksIC8v5YiGIFxcXFxuICAgICAgICBcXFxcXFxcInMrXFxcXFxcXCI6IGRhdGUuZ2V0U2Vjb25kcygpLCAvL+enkiBcXFxcbiAgICAgICAgXFxcXFxcXCJxK1xcXFxcXFwiOiBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgKyAzKSAvIDMpLCAvL+Wto+W6piBcXFxcbiAgICAgICAgXFxcXFxcXCJTXFxcXFxcXCI6IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLy/mr6vnp5IgXFxcXG4gICAgfTtcXFxcbiAgICBpZiAoLyh5KykvLnRlc3QoZm10KSkge1xcXFxuICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChkYXRlLmdldEZ1bGxZZWFyKCkgKyBcXFxcXFxcIlxcXFxcXFwiKS5zdWJzdHIoNCAtIFJlZ0V4cC4kMS5sZW5ndGgpKTtcXFxcbiAgICB9XFxcXG4gICAgZm9yIChsZXQgayBpbiBvKSB7XFxcXG4gICAgICAgIGlmIChuZXcgUmVnRXhwKFxcXFxcXFwiKFxcXFxcXFwiICsgayArIFxcXFxcXFwiKVxcXFxcXFwiKS50ZXN0KGZtdCkpIHtcXFxcbiAgICAgICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKFJlZ0V4cC4kMS5sZW5ndGggPT0gMSkgPyAob1trXSkgOiAoKFxcXFxcXFwiMDBcXFxcXFxcIiArIG9ba10pLnN1YnN0cigoXFxcXFxcXCJcXFxcXFxcIiArIG9ba10pLmxlbmd0aCkpKTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gZm10O1xcXFxufTtcXFxcblxcXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShzaXplKSB7XFxcXG4gICAgaWYgKCFzaXplKSB7XFxcXG4gICAgICAgIHJldHVybiAnJztcXFxcbiAgICB9XFxcXG4gICAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcXFxcbiAgICBsZXQgaSA9IDA7XFxcXG4gICAgd2hpbGUgKHNpemUgPj0gMTAyNCkge1xcXFxuICAgICAgICBzaXplIC89IDEwMjQ7XFxcXG4gICAgICAgIGkrKztcXFxcbiAgICB9XFxcXG4gICAgc2l6ZSA9IGkgPyBOdW1iZXIoc2l6ZS50b0ZpeGVkKDIpKSA6IHNpemU7XFxcXG4gICAgcmV0dXJuIGAke3NpemV9ICR7dW5pdHNbaV19YDtcXFxcbn1cXFxcbmxldCB0dmlwID0gZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICcnKTtcXFxcblxcXFxubGV0IHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcXFxuICAgICAgICAgICAgXFxcXG4vL2xvZyhnZXRSZXNDb2RlKCkpO1xcXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxcXG4gICAgaXRlbXMudW5zaGlmdCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIvCfk73mjqjpgIHlvZPliY3mlofku7blpLnwn5O6XFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogJCgnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvJyArIHNoYXJlSWQgKyAnL2ZvbGRlci8nICsgZ2V0UmVzQ29kZSgpLnNwbGl0KCc/Pz8nKVswXSkubGF6eVJ1bGUoKHR2aXApID0+IHtcXFxcbiAgICAgICAgICAgIGlmICghdHZpcC5pbmNsdWRlcygnOjk5NycpKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL0lQ5Li656m65oiW5LiN5q2j56Gu77yM6K+35YWI6K6+572u44CCJ1xcXFxuICAgICAgICAgICAgfTtcXFxcbiAgICAgICAgICAgIGxldCByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXFxcbiAgICAgICAgICAgIGxldCBwdXJsID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwidXJsXFxcXFxcXCI6IGlucHV0LFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFwiOiByZWZ0b2tlblxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB2YXIgc3RhdGUgPSByZXF1ZXN0KHR2aXAgKyAnL2FjdGlvbicsIHtcXFxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgLy8nWC1SZXF1ZXN0ZWQtV2l0aCc6ICdYTUxIdHRwUmVxdWVzdCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogdHZpcFxcXFxuICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgdGltZW91dDogMjAwMCxcXFxcbiAgICAgICAgICAgICAgICBib2R5OiAnZG89cHVzaCZ1cmw9JyArIHB1cmwsXFxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgbG9nKHN0YXRlKTtcXFxcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnb2snKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aOqOmAgeaIkOWKn++8jOWmguaenHR2Ym945pi+56S64oCc5rKh5om+5Yiw5pWw5o2u4oCd5Y+v6IO95piv5b2T5YmN55qEamFy5LiN5pSv5oyB44CCJztcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aOqOmAgeWksei0pSdcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSwgdHZpcCksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgIH0pO1xcXFxufVxcXFxubGV0IG5leHQgPSBnZXRNeVZhcignbmV4dHBhZ2UnLCAnJykgIT0gJycgPyAnLFxcXFxcXFwibWFya2VyXFxcXFxcXCI6XFxcXFxcXCInICsgZ2V0TXlWYXIoJ25leHRwYWdlJykgKyAnXFxcXFxcXCInIDogJyc7XFxcXG5cXFxcbnZhciByZXNjb2QgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9maWxlL2xpc3QnLCB7XFxcXG4gICAgaGVhZGVyczoge1xcXFxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcXFxuICAgICAgICAnWC1TaGFyZS1Ub2tlbic6IHNoYXJldG9rZW5cXFxcbiAgICB9LFxcXFxuICAgIGJvZHk6ICd7XFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIHNoYXJlSWQgKyAnXFxcXFxcXCIsXFxcXFxcXCJwYXJlbnRfZmlsZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIGdldFJlc0NvZGUoKS5zcGxpdCgnPz8/JylbMF0gKyAnXFxcXFxcXCIsXFxcXFxcXCJsaW1pdFxcXFxcXFwiOjEwMCxcXFxcXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFxcXFxcIixcXFxcXFxcImltYWdlX3VybF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJpbWFnZVxcXFxcXFxcL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFxcXFxcIixcXFxcXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcXFxcXCI6XFxcXFxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXFxcXFwiLFxcXFxcXFwib3JkZXJfYnlcXFxcXFxcIjpcXFxcXFxcIm5hbWVcXFxcXFxcIixcXFxcXFxcIm9yZGVyX2RpcmVjdGlvblxcXFxcXFwiOlxcXFxcXFwiQVNDXFxcXFxcXCInICsgbmV4dCArICd9JyxcXFxcbiAgICBtZXRob2Q6ICdQT1NUJ1xcXFxufSk7XFxcXG4vL2xvZyhyZXNjb2QpO1xcXFxuaWYgKEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcikge1xcXFxuICAgIGxldCBtYXJrZXIgPSBKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXI7XFxcXG4gICAgaWYgKG1hcmtlci5sZW5ndGggPiAxMCkge1xcXFxuICAgICAgICBwdXRNeVZhcignbmV4dHBhZ2UnLCBtYXJrZXIpO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxcXG4gICAgfVxcXFxufVxcXFxudmFyIGNvbnRzID0gSlNPTi5wYXJzZShyZXNjb2QpLml0ZW1zO1xcXFxudmFyIGRvbmd0YWkgPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eXVybCcsIHt9KSkucnVsZS50b1N0cmluZygpO1xcXFxudmFyIHR1aXNvbmcgPSBbXTtcXFxcbmZvciAodmFyIGkgaW4gY29udHMpIHtcXFxcblxcXFxuICAgIHZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcXFxuICAgIGlmIChsaXN0eXAgIT0gJ2ZvbGRlcicpIHtcXFxcbiAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXFxcbiAgICAgICAgdmFyIGZuYW1lID0gY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgaWYgKGNhdGUgPT0gJ3ZpZGVvJykge1xcXFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdkb2MnKSB7XFxcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TlicgKyBjb250c1tpXS5uYW1lO1xcXFxuICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcXFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/CflrwnICsgY29udHNbaV0ubmFtZTtcXFxcbiAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICd6aXAnKSB7XFxcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gY29udHNbaV0ubmFtZVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGl0ZW1zLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBkb25ndGFpLCBjYXRlLCBmbmFtZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoZG9uZ3RhaSk7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBsYXlcXFxcbiAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGRvbmd0YWksIGNhdGUsIGZuYW1lKSxcXFxcbiAgICAgICAgICAgIGRlc2M6IGZvcm1hdERhdGUoY29udHNbaV0udXBkYXRlZF9hdCkgKyAnICAnICsgZm9ybWF0U2l6ZShjb250c1tpXS5zaXplKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcXFxuXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nIHx8IGNhdGUgPT0gJ2F1ZGlvJykge1xcXFxuICAgICAgICAgICAgdHVpc29uZy5wdXNoKFxcXFxuICAgICAgICAgICAgICAgIHRpdGxlLnJlcGxhY2UoL1xcXFxcXFxcIy9nLCAnXycpLnJlcGxhY2UoL1xcXFxcXFxcJC9nLCAnXycpICsgJyQnICsgY2F0ZSArICd8JyArIGNvbnRzW2ldLmZpbGVfaWRcXFxcbiAgICAgICAgICAgICk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpdGVtcy5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn8J+TgicgKyBjb250c1tpXS5uYW1lLFxcXFxuICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGNvbnRzW2ldLmZpbGVfaWQgKyAnPz8/ZnlwYWdlJykucnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgcHVzaG5hbWUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9ydWxlbG9vcCcsIHt9KSkucnVsZSk7XFxcXG4gICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjb250c1tpXS5uYW1lKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgfSAvL2VuZCBpZlxcXFxuXFxcXG5cXFxcbn1cXFxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3B1c2hjb2RlJywge30pKS5ydWxlKTtcXFxcbnNldEhvbWVSZXN1bHQoe1xcXFxuICAgIGRhdGE6IGl0ZW1zXFxcXG59KTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLliIbkuqvotYTmupDliqjmgIHop6PmnpBcXFwiLFxcXCJwYXRoXFxcIjpcXFwibGF6eXVybFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJmdW5jdGlvbiBhY2Nlc3NUaygpIHtcXFxcbiAgICBsZXQgbnRva2VuID0gW107XFxcXG4gICAgLy9sZXQgcmVmdG9rZW4gPSByZXF1ZXN0KCdodHRwOi8vaG9tZS5qdW5kaWUudG9wOjgxL2phci90b2tlbjY2Ni50eHQnLCB7fSk7XFxcXG4gICAgLy92YXIgcmVmdG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL3h5cS9hbGl0b2tlbi5qc29uJywge30pKS5yZWZyZXNoX3Rva2VuO1xcXFxuICAgIHZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXFxcbiAgICBsZXQgYWNjZXNzVGsgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgIGxldCByZWZyZXNoID0gZmV0Y2goJ2h0dHBzOi8vYXV0aC5hbGl5dW5kcml2ZS5jb20vdjIvYWNjb3VudC90b2tlbicsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXFxcbiAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS8nXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIGJvZHk6ICd7XFxcXFxcXCJyZWZyZXNoX3Rva2VuXFxcXFxcXCI6XFxcXFxcXCInICsgcmVmdG9rZW4gKyAnXFxcXFxcXCIsXFxcXFxcXCJncmFudF90eXBlXFxcXFxcXCI6XFxcXFxcXCJyZWZyZXNoX3Rva2VuXFxcXFxcXCJ9JyxcXFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICB9KTtcXFxcbiAgICBudG9rZW4ucHVzaChKU09OLnBhcnNlKHJlZnJlc2gpKTtcXFxcbiAgICBpZiAoIWZpbGVFeGlzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvblxcXFxcXFwiKSB8fCByZWZyZXNoLmxlbmd0aCA+IDMwMCkge1xcXFxuICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb25cXFxcXFxcIiwgSlNPTi5zdHJpbmdpZnkobnRva2VuKSk7XFxcXG4gICAgfVxcXFxuICAgIGFjY2Vzc1RrID0gSlNPTi5wYXJzZShyZWZyZXNoKS50b2tlbl90eXBlICsgJyAnICsgSlNPTi5wYXJzZShyZWZyZXNoKS5hY2Nlc3NfdG9rZW47XFxcXG4gICAgcHV0TXlWYXIoXFxcXFxcXCJhbGlhY2Nlc3NUa1xcXFxcXFwiLCBhY2Nlc3NUayk7XFxcXG4gICAgcmV0dXJuIGFjY2Vzc1RrXFxcXG4gICAgLy9wdXRWYXIoXFxcXFxcXCJhbGlhY2Nlc3NUa1xcXFxcXFwiLCBhY2Nlc3NUayk7XFxcXG59XFxcXG5cXFxcbmlmIChjYXRlID09ICd2aWRlbyd8fGNhdGUgPT0gJ2F1ZGlvJykge1xcXFxuICAgIC8v5aSE55CG6KeG6aKRICBcXFxcbiAgICB2YXIgZHNpZCA9IHNoYXJlSWQ7XFxcXG4gICAgdmFyIGRmaWQgPSBpbnB1dDtcXFxcbiAgICBpZihjYXRlID09ICd2aWRlbycpe1xcXFxuICAgIHZhciBqc29uID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9maWxlL2dldF9zaGFyZV9saW5rX3ZpZGVvX3ByZXZpZXdfcGxheV9pbmZvJywge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcXFxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBhY2Nlc3NUaygpLFxcXFxuICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIGJvZHk6ICd7XFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIHNoYXJlSWQgKyAnXFxcXFxcXCIsXFxcXFxcXCJjYXRlZ29yeVxcXFxcXFwiOlxcXFxcXFwibGl2ZV90cmFuc2NvZGluZ1xcXFxcXFwiLFxcXFxcXFwiZmlsZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIGlucHV0ICsgJ1xcXFxcXFwiLFxcXFxcXFwidGVtcGxhdGVfaWRcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwifScsXFxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgfSk7XFxcXG4gICAgLy9sb2coanNvbik7XFxcXG4gICAgXFxcXG4gICAgdmFyIGRzaWQgPSBKU09OLnBhcnNlKGpzb24pLnNoYXJlX2lkO1xcXFxuICAgIHZhciBkZmlkID0gSlNPTi5wYXJzZShqc29uKS5maWxlX2lkO1xcXFxuICAgIH1cXFxcbiAgICBpZihjYXRlID09ICd2aWRlbycpe1xcXFxuICAgICAgIHZhciBib2R5PSd7XFxcXFxcXCJleHBpcmVfc2VjXFxcXFxcXCI6NjAwLFxcXFxcXFwiZmlsZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIGRmaWQgKyAnXFxcXFxcXCIsXFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIGRzaWQgKyAnXFxcXFxcXCJ9JztcXFxcbiAgICAgICAgXFxcXG4gICAgfWVsc2V7XFxcXG4gICAgICB2YXIgYm9keT0ne1xcXFxcXFwiZmlsZV9pZFxcXFxcXFwiOlxcXFxcXFwiJyArIGRmaWQgKyAnXFxcXFxcXCIsXFxcXFxcXCJnZXRfYXVkaW9fcGxheV9pbmZvXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCI6XFxcXFxcXCInICsgZHNpZCArICdcXFxcXFxcIn0nOyAgIFxcXFxuICAgIH1cXFxcbiAgICB2YXIgZGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL3YyL2ZpbGUvZ2V0X3NoYXJlX2xpbmtfZG93bmxvYWRfdXJsJywge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcXFxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBhY2Nlc3NUaygpLFxcXFxuICAgICAgICAgICAgJ1gtU2hhcmUtVG9rZW4nOiBzaGFyZXRva2VuXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIGJvZHk6IGJvZHksXFxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgfSk7XFxcXG4gICAgdmFyIGxpbmsgPSBKU09OLnBhcnNlKGRqc29uKS5kb3dubG9hZF91cmw7XFxcXG4gICAgXFxcXG4gICAgXFxcXG4gICAgLy9sb2cobGluayk7XFxcXG4gICAgdmFyIHBsYXkgPSBKU09OLnBhcnNlKGZldGNoKGxpbmssIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBNT0JJTEVfVUEsXFxcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXFxcXG4gICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vJ1xcXFxuICAgICAgICB9LFxcXFxuICAgICAgICByZWRpcmVjdDogZmFsc2UsXFxcXG4gICAgICAgIHdpdGhTdGF0dXNDb2RlOiB0cnVlXFxcXG4gICAgfSkpLmhlYWRlcnMubG9jYXRpb25bMF0gKyAoY2F0ZSA9PSAndmlkZW8nPyc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL30nOicjaXNNdXNpYz10cnVlIzt7UmVmZXJlckBodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vfScpO1xcXFxufSBlbHNlIGlmIChjYXRlID09ICdpbWFnZScpIHtcXFxcbiAgICAvL+WkhOeQhuaWh+aho1xcXFxuICAgIHZhciBqc29uID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9maWxlL2dldF9zaGFyZV9saW5rX2Rvd25sb2FkX3VybCcsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXFxcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYWNjZXNzVGsoKSxcXFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcXFxuICAgICAgICB9LFxcXFxuICAgICAgICBib2R5OiAne1xcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjpcXFxcXFxcIicgKyBzaGFyZUlkICsgJ1xcXFxcXFwiLFxcXFxcXFwiZXhwaXJlX3NlY1xcXFxcXFwiOiA2MDAsXFxcXFxcXCJmaWxlX2lkXFxcXFxcXCI6XFxcXFxcXCInICsgaW5wdXQgKyAnXFxcXFxcXCJ9JyxcXFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIC8vbG9nKGpzb24pO1xcXFxuXFxcXG4gICAgdmFyIGxvY2xpbmsgPSBKU09OLnBhcnNlKGZldGNoKEpTT04ucGFyc2UoanNvbikudXJsLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBLFxcXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxcXFxuICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tLydcXFxcbiAgICAgICAgfSxcXFxcbiAgICAgICAgcmVkaXJlY3Q6IGZhbHNlLFxcXFxuICAgICAgICB3aXRoU3RhdHVzQ29kZTogdHJ1ZVxcXFxuICAgIH0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xcXFxuXFxcXG4gICAgLy9sb2cobG9jbGluayk7XFxcXG4gICAgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcXFxuICAgICAgICB2YXIgcGxheSA9ICdwaWNzOi8vJyArIGxvY2xpbmsgKyAnQFJlZmVyZXI9aHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tLyc7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgdmFyIHBsYXkgPSBsb2NsaW5rICsgJzt7UmVmZXJlckBodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vfSc7XFxcXG4gICAgfVxcXFxufSBlbHNlIHtcXFxcbiAgICB2YXIgcGxheSA9ICd0b2FzdDovL+ivpeagvOW8j+aaguacquaUr+aMge+8jOebruWJjeWPquaUr+aMgemfs+inhumikeWSjOWbvueJh+OAgidcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmjqjpgIHku6PnoIFcXFwiLFxcXCJwYXRoXFxcIjpcXFwicHVzaGNvZGVcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG4vL+aOqOmAgeS7o+eggVxcXFxubGV0IHB1c2ggPSBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgXFxcXFxcXCJuYW1lXFxcXFxcXCI6cHVzaG5hbWUsXFxcXG4gICAgXFxcXFxcXCJ1cmxcXFxcXFxcIjogdHVpc29uZy5qb2luKCcjJyksXFxcXG4gICAgXFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiOiBzaGFyZUlkLFxcXFxuICAgIFxcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFwiOiByZWZ0b2tlblxcXFxufSkucmVwbGFjZSgvXFxcXFxcXFwmL2csICfvvIbvvIYnKTtcXFxcbi8vbG9nKHB1c2gpO1xcXFxuLy9sZXQgdHZpcCA9IGdldEl0ZW0oJ2hpa2VydHZib3hzZXQnLCAnJyk7XFxcXG4vL2xvZyh0dWlzb25nLmxlbmd0aCk7XFxcXG5pZih0dWlzb25nLmxlbmd0aD4wKXtcXFxcbml0ZW1zLnVuc2hpZnQoe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIvCfk73mjqjpgIHlvZPliY3pobXpn7Pop4bpopHwn5O6XFxcXFxcXCIsXFxcXG4gICAgdXJsOiAkKHB1c2gpLmxhenlSdWxlKCh0dmlwKSA9PiB7XFxcXG4gICAgICAgIGlmICghdHZpcC5pbmNsdWRlcygnOjk5NycpKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vSVDkuLrnqbrmiJbkuI3mraPnoa7vvIzor7flhYjorr7nva7jgIInXFxcXG4gICAgICAgIH07XFxcXG4gICAgICAgIHZhciBzdGF0ZSA9IHJlcXVlc3QodHZpcCArICcvYWN0aW9uJywge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXFxcbiAgICAgICAgICAgICAgICAvLydYLVJlcXVlc3RlZC1XaXRoJzogJ1hNTEh0dHBSZXF1ZXN0JyxcXFxcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHR2aXBcXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICB0aW1lb3V0OiAyMDAwLFxcXFxuICAgICAgICAgICAgYm9keTogJ2RvPXB1c2gmdXJsPScgKyBpbnB1dCxcXFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBsb2coc3RhdGUpO1xcXFxuICAgICAgICBpZiAoc3RhdGUgPT0gJ29rJykge1xcXFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aOqOmAgeaIkOWKn++8jOWmguaenHR2Ym945pi+56S64oCc5rKh5om+5Yiw5pWw5o2u4oCd5Y+v6IO95piv5b2T5YmN55qEamFy5LiN5pSv5oyB44CCJztcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjqjpgIHlpLHotKUnXFxcXG4gICAgICAgIH1cXFxcbiAgICB9LCB0dmlwKSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJcXFxcbn0pO1xcXFxufVxcXFxuLy9cXFwifV1cIixcInByb3h5XCI6XCJcIn0iLCJ0aXRsZSI6IuS4ieS9kyDnlLXop4bliacifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement