Advertisement
xiaomianao666

邀您一起看:搜索结果

Jul 22nd, 2024
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥搜索结果@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS+nei1llwiLFwicGF0aFwiOlwiZGF0YVwiLFwicnVsZVwiOlwianM6XFxuJC5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbigpIHtcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcXFwiKTtcXG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlVVRGOCgnZjVkOTY1ZGY3NTMzNjI3MCcpO1xcbiAgICBjb25zdCBpdiA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoJzk3YjYwMzk0YWJjMmZiZTEnKTtcXG4gICAgY29uc3QgdGV4dERhdGEgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VJbnB1dFN0cmVhbShpbnB1dCkudG9CYXNlNjQoX2Jhc2U2NC5OT19XUkFQKTtcXG4gICAgY29uc3QgZGVjcnlwdGVkID0gQ3J5cHRvVXRpbC5BRVMuZGVjcnlwdCh0ZXh0RGF0YSwga2V5LCB7XFxuICAgICAgICBpdjogaXYsXFxuICAgICAgICBtb2RlOiBcXFwiQUVTL0NCQy9Ob1BhZGRpbmdcXFwiXFxuICAgIH0pLnRvQmFzZTY0KF9iYXNlNjQuTk9fV1JBUCk7XFxuICAgIGNvbnN0IGRlY3J5cHRlZDAgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VCYXNlNjQoZGVjcnlwdGVkLCBfYmFzZTY0Lk5PX1dSQVApO1xcbiAgICByZXR1cm4gZGVjcnlwdGVkMC50b0lucHV0U3RyZWFtKCk7XFxufVxcblxcbmZ1bmN0aW9uIERlY3J5cHQoZGF0YSkge1xcbiAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICBjb25zdCBfMHg0MDk4MmUgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGRhdGEpLFxcbiAgICAgICAga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoJ2NjODhkZGM5MzU3ZmY0NjFlMDhmMDQ3YWVkZWU2OTJiJyksXFxuICAgICAgICBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKCdlODkyMjVjZmJiaW1na2N1JyksXFxuICAgICAgICBfMHg0MzljYWUgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShfMHg0MDk4MmUpLFxcbiAgICAgICAgXzB4Mzg1ZDM3ID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoXzB4NDM5Y2FlLCBrZXksIHtcXG4gICAgICAgICAgICAnaXYnOiBpdixcXG4gICAgICAgICAgICAnbW9kZSc6IENyeXB0b0pTLm1vZGUuQ0ZCLFxcbiAgICAgICAgICAgICdwYWRkaW5nJzogQ3J5cHRvSlMucGFkLk5vUGFkZGluZ1xcbiAgICAgICAgfSk7XFxuICAgIGNvbnN0IF8weDI3MDU2YiA9IF8weDM4NWQzNy50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgIHJldHVybiBKU09OLnBhcnNlKF8weDI3MDU2Yi50b1N0cmluZygpKTtcXG59XFxuXFxuZnVuY3Rpb24gZGVjcnlwdHNpZ24oZGQpIHtcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcXFwiKTtcXG4gICAgY29uc3QgRGF0YSA9IFxcXCJjbGllbnQ9cHdhJmRhdGE9XFxcIiArIGRkLmRhdGEgKyBcXFwiJnRpbWVzdGFtcD1cXFwiICsgZGQudGltZXN0YW1wICsgXFxcImNjODhkZGM5MzU3ZmY0NjFlMDhmMDQ3YWVkZWU2OTJiXFxcIjtcXG4gICAgY29uc3QgdXR0OERhdGEgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KERhdGEpO1xcbiAgICBjb25zdCBzaGEyNTYgPSB1dHQ4RGF0YS50b0RpZ2VzdCgpLnNoYTI1NigpO1xcbiAgICBjb25zdCBzaWduID0gbWQ1KHNoYTI1Nik7XFxuICAgIHJldHVybiBzaWduO1xcbn1cXG5cXG5mdW5jdGlvbiBlbmNyeXB0KF8weDNhZTlhYykge1xcbiAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICBjb25zdCBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSgnY2M4OGRkYzkzNTdmZjQ2MWUwOGYwNDdhZWRlZTY5MmInKTtcXG4gICAgY29uc3QgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSgnZTg5MjI1Y2ZiYmltZ2tjdScpO1xcbiAgICBfMHgzYWU5YWMgPSBcXFwib2JqZWN0XFxcIiA9PSB0eXBlb2YgXzB4M2FlOWFjID8gSlNPTi5zdHJpbmdpZnkoXzB4M2FlOWFjKSA6IF8weDNhZTlhYztcXG4gICAgbGV0IF8weDc5MjdhZSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKF8weDNhZTlhYyksXFxuICAgICAgICBfMHgyZTI5MTAgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChfMHg3OTI3YWUsIGtleSwge1xcbiAgICAgICAgICAgICdpdic6IGl2LFxcbiAgICAgICAgICAgICdtb2RlJzogQ3J5cHRvSlMubW9kZS5DRkIsXFxuICAgICAgICAgICAgJ3BhZGRpbmcnOiBDcnlwdG9KUy5wYWQuTm9QYWRkaW5nXFxuICAgICAgICB9KTtcXG4gICAgY29uc3QgZGF0YSA9IF8weDJlMjkxMC5jaXBoZXJ0ZXh0LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSxcXG4gICAgICAgIF8weDQ5Y2I1MiA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCxcXG4gICAgICAgIHRpbWVzdGFtcCA9IHBhcnNlSW50KF8weDQ5Y2I1Mi50b1N0cmluZygpKSxcXG4gICAgICAgIHNpZ24gPSBkZWNyeXB0c2lnbih7XFxuICAgICAgICAgICAgJ2NsaWVudCc6IFxcXCJwd2FcXFwiLFxcbiAgICAgICAgICAgICdkYXRhJzogZGF0YSxcXG4gICAgICAgICAgICAndGltZXN0YW1wJzogdGltZXN0YW1wXFxuICAgICAgICB9KTtcXG4gICAgcmV0dXJuIHtcXG4gICAgICAgICdjbGllbnQnOiBcXFwicHdhXFxcIixcXG4gICAgICAgICdzaWduJzogc2lnbixcXG4gICAgICAgICd0aW1lc3RhbXAnOiB0aW1lc3RhbXAsXFxuICAgICAgICAnZGF0YSc6IGRhdGFcXG4gICAgfTtcXG59XFxuXFxuZnVuY3Rpb24gc3Ryb25nKGQsIGMpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPSMnICsgKGMgfHwgJzAwMDAwMCcpICsgJz4nICsgZCArICc8L2ZvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxuZnVuY3Rpb24gc3Ryb25nUihkLCBjKSB7XFxuICAgIHJldHVybiAnPHN0cm9uZz48Zm9udCBjb2xvcj0jJyArIChjIHx8ICcwMDAwMDAnKSArICc+JyArIGQgKyAnPC9mb250Pjwvc3Ryb25nPic7XFxufVxcblxcbmZ1bmN0aW9uIENhdGVnb3J5KGxpc3QsIG1vZGUsIGQpIHtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxuICAgICAgICB2YXIgTGlzdCA9IGxpc3RbaV07XFxuICAgICAgICB2YXIgdGl0bGUgPSBMaXN0LnRpdGxlO1xcbiAgICAgICAgdmFyIFRpdGxlID0gKGdldE15VmFyKCdjb2xvcicsICctMScpID09IGkpID8gc3Ryb25nKHRpdGxlLCAnRkY2Njk5JykgOiB0aXRsZTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFRpdGxlLFxcbiAgICAgICAgICAgIHVybDogJChMaXN0LnR5cGUpLmxhenlSdWxlKChpLCBtb2RlLCBMaXN0KSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChtb2RlID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd0eXBlJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3R5cGVTJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT0gMikge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3R5cGVTUycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignY29sb3InLCBpKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBpLCBtb2RlLCBMaXN0KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snLFxcbiAgICB9KTtcXG4gICAgcmV0dXJuIGQ7XFxufVxcblxcbmZ1bmN0aW9uIGNhdGVnb3J5KGxpc3QsIGQpIHtcXG4gICAgaWYgKGdldEl0ZW0oJ3N3aXRjaCcsICdvZmYnKSA9PSAnb24nKSB7XFxuICAgICAgICBmb3IgKHZhciBpIGluIGxpc3QpIHtcXG4gICAgICAgICAgICB2YXIgTGlzdCA9IGxpc3RbaV07XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gTGlzdC5uYW1lO1xcbiAgICAgICAgICAgIHZhciBUaXRsZSA9IChnZXRNeVZhcignQ29sb3InLCAnLTEnKSA9PSBpKSA/IHN0cm9uZyh0aXRsZSwgJ0ZGNjY5OScpIDogdGl0bGU7XFxuICAgICAgICAgICAgaWYgKExpc3QuaWQgPT0gJzYnIHx8IExpc3QuaWQgPT0gJzInKSB7XFxuXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChMaXN0LmlkID09ICc0JyB8fCBMaXN0LmlkID09ICc3Jykge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKExpc3QuaWQpLmxhenlSdWxlKChpLCBMaXN0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lkJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdDb2xvcicsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvdHlwZTE/ZnlwYWdlJztcXG4gICAgICAgICAgICAgICAgICAgIH0sIGksIExpc3QpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKExpc3QuaWQpLmxhenlSdWxlKChpLCBMaXN0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lkJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdDb2xvcicsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvdHlwZTI/ZnlwYWdlJztcXG4gICAgICAgICAgICAgICAgICAgIH0sIGksIExpc3QpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLypkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfwn5SSJyxcXG4gICAgICAgIHVybDogJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdvbi1vZmYnLCAnb2ZmJylcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgIH0pOyovXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogKGdldEl0ZW0oJ3N3aXRjaCcsICdvZmYnKSA9PSAnb2ZmJykgPyAn8J+TgScgOiAn8J+TgicsXFxuICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBpZiAoZ2V0SXRlbSgnc3dpdGNoJywgJ29mZicpID09ICdvZmYnKSB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3N3aXRjaCcsICdvbicpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3N3aXRjaCcsICdvZmYnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn8J+UjScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc2VhcmNoJyxcXG4gICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgIH0pO1xcbiAgICByZXR1cm4gZDtcXG59XFxuXFxuJC5leHBvcnRzLkNhdGVnb3J5ID0gQ2F0ZWdvcnk7XFxuJC5leHBvcnRzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7XFxuJC5leHBvcnRzLnN0cm9uZ1IgPSBzdHJvbmdSO1xcbiQuZXhwb3J0cy5zdHJvbmcgPSBzdHJvbmc7XFxuJC5leHBvcnRzLmVuY3J5cHQgPSBlbmNyeXB0O1xcbiQuZXhwb3J0cy5EZWNyeXB0ID0gRGVjcnlwdDtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRoOmhtemdoi3nsbvlnovkuIBcIixcInBhdGhcIjpcInR5cGUxXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlID0gTVlfUEFHRTtcXG52YXIgUGFnZSA9IGdldE15VmFyKCdwYWdlJywgJzAnKTtcXG4vL3ZhciBpZCA9IE1ZX1BBUkFNUy5pZDtcXG4vL3ZhciBjb2xfdHlwZSA9IE1ZX1BBUkFNUy5jb2xfdHlwZTtcXG52YXIgaWQgPSBnZXRNeVZhcignaWQnKTtcXG5pZiAoaWQgPT0gJzcnKSB7XFxuICAgIGlkID0gJzIyJztcXG59IGVsc2UgaWYgKGlkID09ICc0Jykge1xcbiAgICBpZCA9ICczMyc7XFxufVxcbnZhciByciA9IHtcXG4gICAgXFxcImNvZGVcXFwiOiBcXFwiZ2V0RWxlbWVudEl0ZW1ieUlkXFxcIixcXG4gICAgXFxcImlkXFxcIjogaWQsXFxuICAgIFxcXCJsaW1pdFxcXCI6IDEyLFxcbiAgICBcXFwibW9kXFxcIjogXFxcImVsZW1lbnRcXFwiLFxcbiAgICBcXFwib2F1dGhfaWRcXFwiOiBcXFwiZ3luVUd0THZTRGhrS0FzZzE3MDQ1MTM3ODkyODZcXFwiLFxcbiAgICBcXFwib2F1dGhfdHlwZVxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICBcXFwicGFnZVxcXCI6IChQYWdlID09IDApID8gcGFnZSA6IFBhZ2UsXFxuICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMixcXG4gICAgXFxcInZlcnNpb25cXFwiOiBcXFwiNC41LjBcXFwiXFxufVxcbmNsZWFyTXlWYXIoJ3BhZ2UnKTtcXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5lbmNyeXB0KHJyKTtcXG5sb2coZW5jcnlwdGRhdGEpXFxudmFyIHRpbWVzdGFtcCA9IGVuY3J5cHRkYXRhLnRpbWVzdGFtcC50b1N0cmluZygpO1xcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxuXFxudmFyIERhdGEgPSBwb3N0KFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcIiwge1xcbiAgICBib2R5OiB7XFxuICAgICAgICBcXFwiY2xpZW50XFxcIjogXFxcInB3YVxcXCIsXFxuICAgICAgICBcXFwidGltZXN0YW1wXFxcIjogdGltZXN0YW1wLFxcbiAgICAgICAgXFxcImRhdGFcXFwiOiBkYXRhLFxcbiAgICAgICAgXFxcInNpZ25cXFwiOiBzaWduXFxuICAgIH1cXG59KVxcbnZhciBoID0gRGF0YTtcXG5cXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXCJkYXRhP3J1bGU9XFxcIiArIE1ZX1RJVExFKS5kZWNyeXB0KCkpO1xcblxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcbnZhciByID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuRGVjcnlwdChkYXRhKTtcXG5cXG52YXIgbGlzdCA9IHIuZGF0YS5saXN0O1xcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcbiAgICB2YXIgcGxheXVybCA9IGxpc3RbaV0ucGxheVVybDtcXG4gICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTtcXG4gICAgdmFyIG5pY2tOYW1lID0gbGlzdFtpXS5uaWNrTmFtZTtcXG4gICAgdmFyIHV1aWQgPSBsaXN0W2ldLnV1aWQ7XFxuICAgIHZhciBkZXNjID0gJ1xcXFx08J+GmScgKyBsaXN0W2ldLmNyZWF0ZWRfYXQgKyAnXFxcXHTwn5SlJyArIGxpc3RbaV0ucGxheV9jb3VudCArICdcXFxcdPCfj7fvuI8nICsgbmlja05hbWUgKyAnXFxcXHTij7HvuI8nICsgbGlzdFtpXS5kdXJhdGlvblN0cjtcXG4gICAgdmFyIGltYWdldXJsID0gbGlzdFtpXS50aHVtYkltZztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxuICAgICAgICBjb2xfdHlwZTogKHN0b3JhZ2UwLmdldEl0ZW0oJ0NvbDEnLCAnJykgPT0gJycpID8gJ3BpY18xX2NhcmQnIDogc3RvcmFnZTAuZ2V0SXRlbSgnQ29sMScsICcnKSxcXG4gICAgICAgIHVybDogcGxheXVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbG9uZ0NsaWNrMScpKS5ydWxlKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pGh6aG16Z2iLeeUqOaIty3lhajpg6jpobVcIixcInBhdGhcIjpcInVzZXJsaXN0XCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlID0gTVlfUEFHRTtcXG52YXIgbW9kID0gTVlfUEFSQU1TLm1vZDtcXG52YXIgY29kZSA9IE1ZX1BBUkFNUy5jb2RlO1xcbnZhciBjb2xfdHlwZSA9IE1ZX1BBUkFNUy5jb2xfdHlwZTtcXG52YXIgcnIgPSB7XFxuICAgIFxcXCJvYXV0aF90eXBlXFxcIjogXFxcInB3YVxcXCIsXFxuICAgIFxcXCJvYXV0aF9pZFxcXCI6IFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXCIsXFxuICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjQuNS4wXFxcIixcXG4gICAgXFxcIm1vZFxcXCI6IG1vZCxcXG4gICAgXFxcImNvZGVcXFwiOiBjb2RlLFxcbiAgICBcXFwicGFnZVxcXCI6IHBhZ2UsXFxuICAgIFxcXCJsaW1pdFxcXCI6IDIxLFxcbiAgICBcXFwidXVpZFxcXCI6IGdldE15VmFyKCd1dWlkJywgJycpLFxcbiAgICBcXFwidGltZXN0YW1wXFxcIjogMS43MDQ1NDY2Njc4MDZFMTJcXG59XFxuXFxudmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZW5jcnlwdChycik7XFxuXFxudmFyIHRpbWVzdGFtcCA9IGVuY3J5cHRkYXRhLnRpbWVzdGFtcC50b1N0cmluZygpO1xcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxuXFxudmFyIERhdGEgPSBwb3N0KFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcIiwge1xcbiAgICBib2R5OiB7XFxuICAgICAgICBcXFwiY2xpZW50XFxcIjogXFxcInB3YVxcXCIsXFxuICAgICAgICBcXFwidGltZXN0YW1wXFxcIjogdGltZXN0YW1wLFxcbiAgICAgICAgXFxcImRhdGFcXFwiOiBkYXRhLFxcbiAgICAgICAgXFxcInNpZ25cXFwiOiBzaWduXFxuICAgIH1cXG59KVxcbnZhciBoID0gRGF0YTtcXG5cXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXCJkYXRhP3J1bGU9XFxcIiArIE1ZX1RJVExFKS5kZWNyeXB0KCkpO1xcblxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcbnZhciByID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuRGVjcnlwdChkYXRhKTtcXG5pZiAobW9kID09IFxcXCJjbHViXFxcIikge1xcbiAgICB2YXIgbGlzdCA9IHIuZGF0YS5pdGVtO1xcbn0gZWxzZSBpZiAobW9kID09IFxcXCJ1c2VyXFxcIikge1xcbiAgICB2YXIgbGlzdCA9IHIuZGF0YTtcXG59XFxuZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxuICAgIHZhciBwbGF5dXJsID0gbGlzdFtpXS5wbGF5VXJsO1xcbiAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLnRpdGxlO1xcbiAgICB2YXIgZGVzYyA9ICdcXFxcdPCflKUnICsgbGlzdFtpXS5wbGF5X2NvdW50O1xcbiAgICB2YXIgaW1hZ2V1cmwgPSBsaXN0W2ldLnRodW1iSW1nO1xcbiAgICB2YXIgbmlja05hbWUgPSBsaXN0W2ldLm5pY2tOYW1lO1xcbiAgICB2YXIgdXVpZCA9IGxpc3RbaV0udXVpZDtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xvbmdDbGljaycpKS5ydWxlKVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgIGltZzogaW1hZ2V1cmwgKyBpbWFnZSxcXG4gICAgICAgIGNvbF90eXBlOiAoc3RvcmFnZTAuZ2V0SXRlbSgnQ29sX21lZGlhJywgJycpID09ICcnKSA/IGNvbF90eXBlIDogc3RvcmFnZTAuZ2V0SXRlbSgnQ29sX21lZGlhJywgJycpLFxcbiAgICAgICAgdXJsOiBwbGF5dXJsLnJlcGxhY2UoJzEwcGxheScsICdsb25nJyksXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxuXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pGh6aG16Z2iLeeUqOaIty3pooTop4jpobVcIixcInBhdGhcIjpcInVzZXJcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuc2V0UGFnZVRpdGxlKCdVUOS4u+mhtScpO1xcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT1cXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxudmFyIGNvbF90eXBlID0gTVlfUEFSQU1TLmNvbF90eXBlO1xcblxcbi8v55So5oi35pWw5o2uK+W4luWtkOadv+Wdl1xcbnZhciByciA9IHtcXG4gICAgXFxcIm9hdXRoX3R5cGVcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgXFxcIm9hdXRoX2lkXFxcIjogXFxcImd5blVHdEx2U0Roa0tBc2cxNzA0NTEzNzg5Mjg2XFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiBcXFwiNC41LjBcXFwiLFxcbiAgICBcXFwibW9kXFxcIjogXFxcInVzZXJcXFwiLFxcbiAgICBcXFwiY29kZVxcXCI6IFxcXCJvdGhlclxcXCIsXFxuICAgIFxcXCJ1dWlkXFxcIjogZ2V0TXlWYXIoJ3V1aWQnLCAnJyksXFxuICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMlxcbn1cXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5lbmNyeXB0KHJyKTtcXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxudmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXG52YXIgRGF0YSA9IHBvc3QoXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFwiLCB7XFxuICAgIGJvZHk6IHtcXG4gICAgICAgIFxcXCJjbGllbnRcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiB0aW1lc3RhbXAsXFxuICAgICAgICBcXFwiZGF0YVxcXCI6IGRhdGEsXFxuICAgICAgICBcXFwic2lnblxcXCI6IHNpZ25cXG4gICAgfVxcbn0pXFxudmFyIGggPSBEYXRhO1xcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcbnZhciByID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuRGVjcnlwdChkYXRhKTtcXG52YXIgbGlzdCA9IHIuZGF0YTtcXG5cXG52YXIgY2x1Yl92aWRlb19jb3VudCA9IGxpc3QuY2x1Yl92aWRlb19jb3VudDtcXG52YXIgdmlkZW9zQ291bnQgPSBsaXN0LnZpZGVvc0NvdW50O1xcbnZhciBsaWtlc0NvdW50ID0gbGlzdC5saWtlc0NvdW50O1xcblxcbmlmIChsaXN0ICE9ICcnICYmIGxpc3QgIT0gbnVsbCAmJiBNWV9QQUdFID09IDEpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsXFxuICAgICAgICB0aXRsZTogJ/Cfkanwn4+/4oCN8J+msicgKyBsaXN0Lm5pY2tuYW1lLFxcbiAgICAgICAgZGVzYzogbGlzdC5mYW5zICsgJ+eyieS4nVxcXFx0XFxcXHQnICsgbGlzdC5mb2xsb3dlZCArICflhbPms6hcXFxcdFxcXFx0JyArIGxpc3QuZmFidWxvdXMgKyAn6KKr6LWeXFxcXG4nICsgJ1xcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHQnICsgbGlzdC5uZXdzX251bSArICfluJblrZBcXFxcbicgKyAnXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdOeCueWHu/CfkYbwn4+/5YmN5b6AJyxcXG4gICAgICAgIGltZzogbGlzdC50aHVtYiArIGltYWdlLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ld3M/ZnlwYWdlJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbW9kOiBcXFwibmV3c1xcXCIsXFxuICAgICAgICAgICAgY29kZTogXFxcInRhcmdldF9uZXdzXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiAn5biW5a2QJ1xcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxuICAgIH0pO1xcbn1cXG5cXG4vL+S7luS6uuS4u+mhteWtkOadv+Wdl1xcbnZhciBUeXBlbGlzdCA9IFtcXG57dGl0bGU6ICfnsonkuJ3lm6LkuJPlsZ4nLCBjb3VudDogY2x1Yl92aWRlb19jb3VudCAsIGNvbF90eXBlOiAgJ3RleHRfaWNvbicsIG1vZDogJ2NsdWInLGNvZGU6ICd2aWRlb3MnfSxcXG57dGl0bGU6ICdUYeeahOS9nOWTgScsIGNvdW50OiB2aWRlb3NDb3VudCAsIGNvbF90eXBlOiAgJ3RleHRfaWNvbicsIG1vZDogJ3VzZXInLCBjb2RlOiAndmlkZW9zJ30sXFxue3RpdGxlOiAnVGHnmoTllpzmrKInLCBjb3VudDogbGlrZXNDb3VudCAsIGNvbF90eXBlOiAgJ3RleHRfaWNvbicsIG1vZDogJ3VzZXInLCBjb2RlOiAnbGlrZXMnfVxcbl07XFxuZm9yICh2YXIgaSBpbiBUeXBlbGlzdCkge1xcbiAgICB2YXIgcnIgPSB7XFxuICAgICAgICBcXFwib2F1dGhfdHlwZVxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICAgICAgXFxcIm9hdXRoX2lkXFxcIjogXFxcImd5blVHdEx2U0Roa0tBc2cxNzA0NTEzNzg5Mjg2XFxcIixcXG4gICAgICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjQuNS4wXFxcIixcXG4gICAgICAgIFxcXCJtb2RcXFwiOiBUeXBlbGlzdFtpXS5tb2QsXFxuICAgICAgICBcXFwiY29kZVxcXCI6IFR5cGVsaXN0W2ldLmNvZGUsXFxuICAgICAgICBcXFwicGFnZVxcXCI6IDEsXFxuICAgICAgICBcXFwibGltaXRcXFwiOiAzLFxcbiAgICAgICAgXFxcInV1aWRcXFwiOiBnZXRNeVZhcigndXVpZCcsICcnKSxcXG4gICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMlxcbiAgICB9XFxuICAgIHZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmVuY3J5cHQocnIpO1xcbiAgICB2YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxuICAgIHZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXG4gICAgdmFyIHNpZ24gPSBlbmNyeXB0ZGF0YS5zaWduO1xcbiAgICB2YXIgRGF0YSA9IHBvc3QoXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFwiLCB7XFxuICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgXFxcImNsaWVudFxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiB0aW1lc3RhbXAsXFxuICAgICAgICAgICAgXFxcImRhdGFcXFwiOiBkYXRhLFxcbiAgICAgICAgICAgIFxcXCJzaWduXFxcIjogc2lnblxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICB2YXIgaCA9IERhdGE7XFxuICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcbiAgICB2YXIgciA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLkRlY3J5cHQoZGF0YSk7XFxuICAgIGlmIChUeXBlbGlzdFtpXS5tb2QgPT0gXFxcImNsdWJcXFwiKSB7XFxuICAgICAgICB2YXIgbGlzdCA9IHIuZGF0YS5pdGVtO1xcbiAgICB9IGVsc2UgaWYgKFR5cGVsaXN0W2ldLm1vZCA9PSBcXFwidXNlclxcXCIpIHtcXG4gICAgICAgIHZhciBsaXN0ID0gci5kYXRhO1xcbiAgICB9XFxuICAgIGlmIChsaXN0ICE9ICcnICYmIGxpc3QgIT0gbnVsbCAmJiBNWV9QQUdFID09IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFR5cGVsaXN0W2ldLmNvbF90eXBlLFxcbiAgICAgICAgICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5zdHJvbmdSKFR5cGVsaXN0W2ldLnRpdGxlICsgVHlwZWxpc3RbaV0uY291bnQgKyAn6YOoJywgJ0ZGNjY5OScpLFxcbiAgICAgICAgICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb25fcmlnaHQ1JyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvdXNlcmxpc3Q/ZnlwYWdlJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBtb2Q6IFR5cGVsaXN0W2ldLm1vZCxcXG4gICAgICAgICAgICAgICAgY29kZTogVHlwZWxpc3RbaV0uY29kZSxcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBUeXBlbGlzdFtpXS50aXRsZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgICAgICAgICAgdmFyIHBsYXl1cmwgPSBsaXN0W2pdLnBsYXlVcmw7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gbGlzdFtqXS50aXRsZTtcXG4gICAgICAgICAgICB2YXIgZGVzYyA9ICdcXFxcdPCflKUnICsgbGlzdFtqXS5wbGF5X2NvdW50O1xcbiAgICAgICAgICAgIHZhciBpbWFnZXVybCA9IGxpc3Rbal0udGh1bWJJbWc7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBjb2xfdHlwZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBwbGF5dXJsLnJlcGxhY2UoJzEwcGxheScsICdsb25nJylcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaHpobXpnaIt55So5oi3LeW4luWtkOWIl+ihqFwiLFwicGF0aFwiOlwibmV3c1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxudmFyIG1vZCA9IE1ZX1BBUkFNUy5tb2Q7XFxudmFyIGNvZGUgPSBNWV9QQVJBTVMuY29kZTtcXG52YXIgY29sX3R5cGUgPSBNWV9QQVJBTVMuY29sX3R5cGU7XFxudmFyIHJyID0ge1xcbiAgICBcXFwib2F1dGhfdHlwZVxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICBcXFwib2F1dGhfaWRcXFwiOiBcXFwiZ3luVUd0THZTRGhrS0FzZzE3MDQ1MTM3ODkyODZcXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IFxcXCI0LjUuMFxcXCIsXFxuICAgIFxcXCJtb2RcXFwiOiBtb2QsXFxuICAgIFxcXCJjb2RlXFxcIjogY29kZSxcXG4gICAgXFxcInBhZ2VcXFwiOiBwYWdlLFxcbiAgICBcXFwibGltaXRcXFwiOiAxNSxcXG4gICAgXFxcInRhcmdldF91dWlkXFxcIjogZ2V0TXlWYXIoJ3V1aWQnLCAnJyksXFxuICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMlxcbn1cXG5cXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5lbmNyeXB0KHJyKTtcXG5cXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxudmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXG5cXG52YXIgRGF0YSA9IHBvc3QoXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFwiLCB7XFxuICAgIGJvZHk6IHtcXG4gICAgICAgIFxcXCJjbGllbnRcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiB0aW1lc3RhbXAsXFxuICAgICAgICBcXFwiZGF0YVxcXCI6IGRhdGEsXFxuICAgICAgICBcXFwic2lnblxcXCI6IHNpZ25cXG4gICAgfVxcbn0pXFxudmFyIGggPSBEYXRhO1xcblxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT1cXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxuXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5EZWNyeXB0KGRhdGEpO1xcbnZhciBsaXN0ID0gci5kYXRhO1xcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcbiAgICB2YXIgaWQgPSBsaXN0W2ldLmlkO1xcbiAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLmNvbnRlbnQ7XFxuICAgIHZhciBkZXNjID0gbGlzdFtpXS5jcmVhdGVkX2F0ICsgJ+WPkeW4g1xcXFx0XFxcXHQnICsgbGlzdFtpXS52aWV3X251bSArICfmtY/op4hcXFxcdFxcXFx0JyArIGxpc3RbaV0ubGlrZV9udW0gKyAn54K56LWeJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICBjb2xfdHlwZTogY29sX3R5cGUsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3c2RldGFpbCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG5ld3NfaWQ6IGlkLFxcbiAgICAgICAgICAgIG1vZDogXFxcIm5ld3NcXFwiLFxcbiAgICAgICAgICAgIGNvZGU6IFxcXCJkZXRhaWxfdjFcXFwiLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogXFxcIuW4luWtkOivpuaDhVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRoemhtemdoi3nlKjmiLct5biW5a2Q6K+m5oOFXCIsXCJwYXRoXCI6XCJuZXdzZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlID0gTVlfUEFHRTtcXG52YXIgbW9kID0gTVlfUEFSQU1TLm1vZDtcXG52YXIgY29kZSA9IE1ZX1BBUkFNUy5jb2RlO1xcbnZhciBuZXdzX2lkID0gTVlfUEFSQU1TLm5ld3NfaWQ7XFxudmFyIHJyID0ge1xcbiAgICBcXFwib2F1dGhfdHlwZVxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICBcXFwib2F1dGhfaWRcXFwiOiBcXFwiZ3luVUd0THZTRGhrS0FzZzE3MDQ1MTM3ODkyODZcXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IFxcXCI0LjUuMFxcXCIsXFxuICAgIFxcXCJtb2RcXFwiOiBtb2QsXFxuICAgIFxcXCJjb2RlXFxcIjogY29kZSxcXG4gICAgXFxcIm5ld3NfaWRcXFwiOiBuZXdzX2lkLFxcbiAgICBcXFwidGltZXN0YW1wXFxcIjogMS43MDQ1NDY2Njc4MDZFMTJcXG59XFxuXFxudmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZW5jcnlwdChycik7XFxuXFxudmFyIHRpbWVzdGFtcCA9IGVuY3J5cHRkYXRhLnRpbWVzdGFtcC50b1N0cmluZygpO1xcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxuXFxudmFyIERhdGEgPSBwb3N0KFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcIiwge1xcbiAgICBib2R5OiB7XFxuICAgICAgICBcXFwiY2xpZW50XFxcIjogXFxcInB3YVxcXCIsXFxuICAgICAgICBcXFwidGltZXN0YW1wXFxcIjogdGltZXN0YW1wLFxcbiAgICAgICAgXFxcImRhdGFcXFwiOiBkYXRhLFxcbiAgICAgICAgXFxcInNpZ25cXFwiOiBzaWduXFxuICAgIH1cXG59KVxcbnZhciBoID0gRGF0YTtcXG5cXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXCJkYXRhP3J1bGU9XFxcIiArIE1ZX1RJVExFKS5kZWNyeXB0KCkpO1xcblxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcbnZhciByID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuRGVjcnlwdChkYXRhKTtcXG52YXIgZGV0YWlsID0gci5kYXRhLmRldGFpbDtcXG52YXIgY29tbWVudF9saXN0ID0gci5kYXRhLmNvbW1lbnRfbGlzdDtcXG52YXIgdGl0bGUgPSBkZXRhaWwudGl0bGU7XFxudmFyIGNyZWF0ZWRfYXQgPSBkZXRhaWwuY3JlYXRlZF9hdDtcXG52YXIgY29udGVudCA9IGRldGFpbC5jb250ZW50O1xcbnZhciBtZWRpYWxpc3QgPSBkZXRhaWwubWVkaWFzO1xcbnZhciBjb21tZW50X251bSA9IGRldGFpbC5jb21tZW50X251bTtcXG52YXIgbmlja05hbWUgPSBkZXRhaWwubmlja25hbWU7XFxudmFyIHV1aWQgPSBkZXRhaWwudXVpZDtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xvbmdDbGljaycpKS5ydWxlKVxcbi8v5qCH6aKYXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICflj5HluIPkuo46JyArIGNyZWF0ZWRfYXQgKyAnXFxcXHTinI3wn4+977iPJyArIHRpdGxlLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcbn0pO1xcblxcbi8v5q2j5paHXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGNvbnRlbnQsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxufSk7XFxuXFxuLy/op4bpopFcXG5mb3IgKHZhciBpIGluIG1lZGlhbGlzdCkge1xcbiAgICB2YXIgaW1hZ2V1cmwgPSBtZWRpYWxpc3RbaV0ubWVkaWFfdXJsO1xcbiAgICBpZiAoaW1hZ2V1cmwuaW5jbHVkZXMoJ20zdTgnKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+inhumikeKWtu+4jycgKyBpLFxcbiAgICAgICAgICAgIHVybDogaW1hZ2V1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnLFxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuXFxuLy/lm77niYdcXG5mb3IgKHZhciBpIGluIG1lZGlhbGlzdCkge1xcbiAgICB2YXIgaW1hZ2V1cmwgPSBtZWRpYWxpc3RbaV0ubWVkaWFfdXJsO1xcbiAgICBpZiAoIWltYWdldXJsLmluY2x1ZGVzKCdtM3U4JykpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiBpbWFnZXVybCArIGltYWdlLFxcbiAgICAgICAgICAgIHVybDogaW1hZ2V1cmwgKyBpbWFnZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogKHN0b3JhZ2UwLmdldEl0ZW0oJ0NvbF90ZXh0JywgJycpID09ICcnKSA/ICdwaWNfMV9mdWxsJyA6IHN0b3JhZ2UwLmdldEl0ZW0oJ0NvbF90ZXh0JywgJycpLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcblxcbi8v6K+E6K665Yy6XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICflhajpg6jor4TorrpcXFxcdCgnICsgY29tbWVudF9udW0gKyAnKScsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxufSk7XFxuZm9yICh2YXIgaSBpbiBjb21tZW50X2xpc3QpIHtcXG4gICAgdmFyIG5pY2tuYW1lID0gY29tbWVudF9saXN0W2ldLm5pY2tuYW1lO1xcbiAgICB2YXIgc2V4VHlwZSA9IGNvbW1lbnRfbGlzdFtpXS5zZXhUeXBlO1xcbiAgICB2YXIgc2V4ID0gKHNleFR5cGUgPT0gJzAnKSA/ICdcXFxcdPCfkanwn4+9XFxcXHQnIDogJ1xcXFx08J+RqPCfj71cXFxcdCc7XFxuICAgIHZhciBjaXR5bmFtZSA9IGNvbW1lbnRfbGlzdFtpXS5jaXR5bmFtZTtcXG4gICAgdmFyIGNyZWF0ZWRfYXQgPSBjb21tZW50X2xpc3RbaV0uY3JlYXRlZF9hdDtcXG4gICAgdmFyIGNvbW1lbnQgPSBjb21tZW50X2xpc3RbaV0uY29tbWVudDtcXG4gICAgdmFyIHRodW1iID0gY29tbWVudF9saXN0W2ldLnRodW1iO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IG5pY2tuYW1lICsgc2V4LFxcbiAgICAgICAgZGVzYzogY2l0eW5hbWUgKyAnwrdcXFxcdCcgKyBjcmVhdGVkX2F0LFxcbiAgICAgICAgaW1nOiB0aHVtYiArIGltYWdlLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogY29tbWVudCxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbn1cXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaDpobXpnaIt57G75Z6L5LqMXCIsXCJwYXRoXCI6XCJ0eXBlMlwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxudmFyIFBhZ2UgPSBnZXRNeVZhcigncGFnZScsICcwJyk7XFxudmFyIGlkID0gZ2V0TXlWYXIoJ2lkJyk7XFxudmFyIHJyID0ge1xcbiAgICBcXFwiY29kZVxcXCI6IFxcXCJnZXRDb25zdHJ1Y3RCeUlkXFxcIixcXG4gICAgXFxcImlkXFxcIjogaWQsXFxuICAgIFxcXCJsaW1pdFxcXCI6IDEyLFxcbiAgICBcXFwibW9kXFxcIjogXFxcImVsZW1lbnRcXFwiLFxcbiAgICBcXFwib2F1dGhfaWRcXFwiOiBcXFwiZ3luVUd0THZTRGhrS0FzZzE3MDQ1MTM3ODkyODZcXFwiLFxcbiAgICBcXFwib2F1dGhfdHlwZVxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICBcXFwicGFnZVxcXCI6IChQYWdlID09IDApID8gcGFnZSA6IFBhZ2UsXFxuICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMixcXG4gICAgXFxcInZlcnNpb25cXFwiOiBcXFwiNC41LjBcXFwiXFxufVxcbmNsZWFyTXlWYXIoJ3BhZ2UnKTtcXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5lbmNyeXB0KHJyKTtcXG5cXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxudmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXG5cXG52YXIgRGF0YSA9IHBvc3QoXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFwiLCB7XFxuICAgIGJvZHk6IHtcXG4gICAgICAgIFxcXCJjbGllbnRcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiB0aW1lc3RhbXAsXFxuICAgICAgICBcXFwiZGF0YVxcXCI6IGRhdGEsXFxuICAgICAgICBcXFwic2lnblxcXCI6IHNpZ25cXG4gICAgfVxcbn0pXFxudmFyIGggPSBEYXRhO1xcblxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT1cXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxuXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5EZWNyeXB0KGRhdGEpO1xcbnZhciBMaXN0ID0gci5kYXRhO1xcbmZvciAodmFyIGkgaW4gTGlzdCkge1xcbiAgICB2YXIgdGl0bGUgPSBMaXN0W2ldLnRpdGxlO1xcbiAgICB2YXIgaWQgPSBMaXN0W2ldLmlkO1xcbiAgICB2YXIgbGlzdCA9IExpc3RbaV0ubGlzdDtcXG4gICAgaWYgKCF0aXRsZS5pbmNsdWRlcygnYmFubmVyJykpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcbiAgICAgICAgICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5zdHJvbmdSKHRpdGxlLCAnRkY2Njk5JyksXFxuICAgICAgICAgICAgaW1nOiAnaGlrZXI6Ly9pbWFnZXMvaWNvbl9yaWdodDUnLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9wbGF5bGlzdD9meXBhZ2UnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTtcXG4gICAgICAgICAgICB2YXIgcGxheVVybCA9IGxpc3RbaV0ucGxheVVybDtcXG4gICAgICAgICAgICB2YXIgbmlja05hbWUgPSBsaXN0W2ldLm5pY2tOYW1lO1xcbiAgICAgICAgICAgIHZhciB1dWlkID0gbGlzdFtpXS51dWlkO1xcbiAgICAgICAgICAgIHZhciBkZXNjID0gJ/CflKUnICsgbGlzdFtpXS5wbGF5X2NvdW50ICsgJ1xcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdOKPse+4jycgKyBsaXN0W2ldLmR1cmF0aW9uU3RyO1xcbiAgICAgICAgICAgIHZhciBpbWFnZXVybCA9IGxpc3RbaV0udGh1bWJJbWc7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAoc3RvcmFnZTAuZ2V0SXRlbSgnQ29sMicsICcnKSA9PSAnJykgPyAnbW92aWVfMicgOiBzdG9yYWdlMC5nZXRJdGVtKCdDb2wyJywgJycpLFxcbiAgICAgICAgICAgICAgICB1cmw6IHBsYXlVcmwucmVwbGFjZSgnMTBwbGF5JywgJ2xvbmcnKSxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9sb25nQ2xpY2syJykpLnJ1bGUpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaDpobXpnaIt57G75Z6L5LqMX+S6jOe6p1wiLFwicGF0aFwiOlwicGxheWxpc3RcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIHBhZ2UgPSBNWV9QQUdFO1xcbnZhciBQYWdlID0gZ2V0TXlWYXIoJ3BhZ2UnLCAnMCcpO1xcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDtcXG52YXIgdHlwZWxpc3QgPSBbe1xcbiAgICB0aXRsZTogJ+acgOaWsCcsXFxuICAgIHR5cGU6ICduZXcnXFxufSwge1xcbiAgICB0aXRsZTogJ+acgOeDrScsXFxuICAgIHR5cGU6ICdob3QnXFxufV07XFxuXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5DYXRlZ29yeSh0eXBlbGlzdCwwLGQpO1xcbn1cXG52YXIgcnIgPSB7XFxuICAgIFxcXCJjb2RlXFxcIjogXFxcImdldEVsZW1lbnRJdGVtYnlJZFxcXCIsXFxuICAgIFxcXCJpZFxcXCI6IGlkLFxcbiAgICBcXFwibGltaXRcXFwiOiAxMixcXG4gICAgXFxcIm1vZFxcXCI6IFxcXCJlbGVtZW50XFxcIixcXG4gICAgXFxcInR5cGVcXFwiOiBnZXRNeVZhcigndHlwZScsICduZXcnKSxcXG4gICAgXFxcIm9hdXRoX2lkXFxcIjogXFxcImd5blVHdEx2U0Roa0tBc2cxNzA0NTEzNzg5Mjg2XFxcIixcXG4gICAgXFxcIm9hdXRoX3R5cGVcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgXFxcInBhZ2VcXFwiOiAoUGFnZSA9PSAwKSA/IHBhZ2UgOiBQYWdlLFxcbiAgICBcXFwidGltZXN0YW1wXFxcIjogMS43MDQ1NDY2Njc4MDZFMTIsXFxuICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjQuNS4wXFxcIlxcbn1cXG5jbGVhck15VmFyKCdwYWdlJyk7XFxudmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZW5jcnlwdChycik7XFxuXFxudmFyIHRpbWVzdGFtcCA9IGVuY3J5cHRkYXRhLnRpbWVzdGFtcC50b1N0cmluZygpO1xcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxuXFxudmFyIERhdGEgPSBwb3N0KFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcIiwge1xcbiAgICBib2R5OiB7XFxuICAgICAgICBcXFwiY2xpZW50XFxcIjogXFxcInB3YVxcXCIsXFxuICAgICAgICBcXFwidGltZXN0YW1wXFxcIjogdGltZXN0YW1wLFxcbiAgICAgICAgXFxcImRhdGFcXFwiOiBkYXRhLFxcbiAgICAgICAgXFxcInNpZ25cXFwiOiBzaWduXFxuICAgIH1cXG59KVxcbnZhciBoID0gRGF0YTtcXG5cXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXCJkYXRhP3J1bGU9XFxcIiArIE1ZX1RJVExFKS5kZWNyeXB0KCkpO1xcblxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcbnZhciByID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuRGVjcnlwdChkYXRhKTtcXG5cXG52YXIgbGlzdCA9IHIuZGF0YS5saXN0O1xcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcbiAgICB2YXIgcGxheXVybCA9IGxpc3RbaV0ucGxheVVybDtcXG4gICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTtcXG4gICAgdmFyIG5pY2tOYW1lID0gbGlzdFtpXS5uaWNrTmFtZTtcXG4gICAgdmFyIHV1aWQgPSBsaXN0W2ldLnV1aWQ7XFxuICAgIHZhciBkZXNjID0gJ1xcXFx08J+UpScgKyBsaXN0W2ldLnBsYXlfY291bnQgKyAnXFxcXHTij7HvuI8nICsgbGlzdFtpXS5kdXJhdGlvblN0cjtcXG4gICAgdmFyIGltYWdldXJsID0gbGlzdFtpXS50aHVtYkltZzsgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9sb25nQ2xpY2snKSkucnVsZSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxuICAgICAgICBjb2xfdHlwZTogKHN0b3JhZ2UwLmdldEl0ZW0oJ0NvbF9tZWRpYScsICcnKSA9PSAnJykgPyAnbW92aWVfMicgOiBzdG9yYWdlMC5nZXRJdGVtKCdDb2xfbWVkaWEnLCAnJyksXFxuICAgICAgICB1cmw6IHBsYXl1cmwucmVwbGFjZSgnMTBwbGF5JywgJ2xvbmcnKSxcXG4gICAgICAgIGV4dHJhOiB7IFxcbiAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxuXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pGo5YWo6YOo6aG1X2xvbmdDbGlja1wiLFwicGF0aFwiOlwibG9uZ0NsaWNrXCIsXCJydWxlXCI6XCIvL2NvbF90eXBl5aqS5L2T5pi+56S65qC35byPXFxudmFyIGxvbmdDbGljazEgPSBbe1xcbiAgICB0aXRsZTogJ+agt+W8jycsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHZhciBUeXBlID0gW1xcXCJtb3ZpZV8xXFxcIiwgXFxcIm1vdmllXzJcXFwiLCBcXFwibW92aWVfM1xcXCIsIFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIiwgXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIiwgXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBcXFwicGljXzFcXFwiLCBcXFwicGljXzJcXFwiLCBcXFwicGljXzNcXFwiLCBcXFwicGljXzFfZnVsbFxcXCIsIFxcXCJwaWNfMV9jZW50ZXJcXFwiLCBcXFwicGljXzFfY2FyZFxcXCIsIFxcXCJwaWNfMl9jYXJkXFxcIiwgXFxcInBpY18zX3NxdWFyZVxcXCIsIFxcXCJjYXJkX3BpY18xXFxcIiwgXFxcImNhcmRfcGljXzJcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIsIFxcXCJjYXJkX3BpY18zX2NlbnRlclxcXCIsIFxcXCJsb25nX3RleHRcXFwiLCBcXFwicmljaF90ZXh0XFxcIiwgXFxcInNjcm9sbF9idXR0b25cXFwiLCBcXFwiZmxleF9idXR0b25cXFwiXTtcXG4gICAgICAgIHZhciBUeXBlMSA9IFtdO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiBUeXBlKSB7XFxuICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxuICAgICAgICAgICAgdmFyIENvbCA9IChjb2wuaW5jbHVkZXMoJ/CfkYnwn4+9JykpID8gY29sLnNwbGl0KCfwn5GJ8J+PvScpWzFdIDogY29sO1xcbiAgICAgICAgICAgIGlmIChUeXBlW2ldID09IENvbCkge1xcbiAgICAgICAgICAgICAgICBUeXBlW2ldID0gJ/CfkYnwn4+9JyArIFR5cGVbaV07XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9IFR5cGVbaV07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFR5cGUxW2ldID0gVHlwZVtpXTtcXG4gICAgICAgIH1cXG4gICAgICAgIHNob3dTZWxlY3RPcHRpb25zKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIumAieaLqeexu+Wei1xcXCIsXFxuICAgICAgICAgICAgY29sOiAyLFxcbiAgICAgICAgICAgIG9wdGlvbnM6IFR5cGUxLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgndHlwZScsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxuICAgICAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnQ29sX21lZGlhJywgQ29sKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0pfSx7XFxuICAgIHRpdGxlOiAn5pCc57SiJyxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc2VhcmNoJztcXG4gICAgfSksXFxufSx7XFxuICAgIHRpdGxlOiAn6aaW6aG1JyxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgIH0pLFxcbn0sIHtcXG4gICAgdGl0bGU6ICfnrKwnICsgTVlfUEFHRSArICfpobUnLFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICB9KSxcXG59LCB7XFxuICAgIHRpdGxlOiAn6Lez6L2sJyxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICQoJycpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0O1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdwYWdlJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICB9KTtcXG4gICAgfSksXFxufSwge1xcbiAgICB0aXRsZTogbmlja05hbWUsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCh1dWlkKSA9PiB7XFxuICAgICAgICBwdXRNeVZhcigndXVpZCcsIHV1aWQpO1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvdXNlciNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICB9LCB1dWlkKSxcXG59XVxcbnN0b3JhZ2UwLmdldEl0ZW0oJ2xvbmdDbGljazEnLCBsb25nQ2xpY2sxKTtcXG5cXG4vL2NvbF90eXBl5paH5pys5pi+56S65qC35byPXFxudmFyIGxvbmdDbGljazIgPSBbe1xcbiAgICB0aXRsZTogJ+agt+W8jycsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHZhciBUeXBlID0gW1xcXCJtb3ZpZV8xXFxcIiwgXFxcIm1vdmllXzJcXFwiLCBcXFwibW92aWVfM1xcXCIsIFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIiwgXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIiwgXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBcXFwicGljXzFcXFwiLCBcXFwicGljXzJcXFwiLCBcXFwicGljXzNcXFwiLCBcXFwicGljXzFfZnVsbFxcXCIsIFxcXCJwaWNfMV9jZW50ZXJcXFwiLCBcXFwicGljXzFfY2FyZFxcXCIsIFxcXCJwaWNfMl9jYXJkXFxcIiwgXFxcInBpY18zX3NxdWFyZVxcXCIsIFxcXCJjYXJkX3BpY18xXFxcIiwgXFxcImNhcmRfcGljXzJcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIsIFxcXCJjYXJkX3BpY18zX2NlbnRlclxcXCIsIFxcXCJsb25nX3RleHRcXFwiLCBcXFwicmljaF90ZXh0XFxcIiwgXFxcInNjcm9sbF9idXR0b25cXFwiLCBcXFwiZmxleF9idXR0b25cXFwiXTtcXG4gICAgICAgIHZhciBUeXBlMSA9IFtdO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiBUeXBlKSB7XFxuICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxuICAgICAgICAgICAgdmFyIENvbCA9IChjb2wuaW5jbHVkZXMoJ/CfkYnwn4+9JykpID8gY29sLnNwbGl0KCfwn5GJ8J+PvScpWzFdIDogY29sO1xcbiAgICAgICAgICAgIGlmIChUeXBlW2ldID09IENvbCkge1xcbiAgICAgICAgICAgICAgICBUeXBlW2ldID0gJ/CfkYnwn4+9JyArIFR5cGVbaV07XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9IFR5cGVbaV07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFR5cGUxW2ldID0gVHlwZVtpXTtcXG4gICAgICAgIH1cXG4gICAgICAgIHNob3dTZWxlY3RPcHRpb25zKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIumAieaLqeexu+Wei1xcXCIsXFxuICAgICAgICAgICAgY29sOiAyLFxcbiAgICAgICAgICAgIG9wdGlvbnM6IFR5cGUxLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgndHlwZScsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxuICAgICAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnQ29sX3RleHQnLCBDb2wpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSlcXG59LHtcXG4gICAgdGl0bGU6IG5pY2tOYW1lLFxcbiAgICBqczogJC50b1N0cmluZygodXVpZCkgPT4ge1xcbiAgICAgICAgcHV0TXlWYXIoJ3V1aWQnLCB1dWlkKTtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3VzZXIjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgfSwgdXVpZCksXFxufV1cXG5zdG9yYWdlMC5zZXRJdGVtKCdsb25nQ2xpY2syJywgbG9uZ0NsaWNrMik7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikajnsbvlnovkuoxfbG9uZ0NsaWNrXCIsXCJwYXRoXCI6XCJsb25nQ2xpY2syXCIsXCJydWxlXCI6XCIvL2NvbF90eXBl5pi+56S65qC35byPXFxuW3tcXG4gICAgdGl0bGU6ICfmoLflvI8nLFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICB2YXIgVHlwZSA9IFtcXFwibW92aWVfMVxcXCIsIFxcXCJtb3ZpZV8yXFxcIiwgXFxcIm1vdmllXzNcXFwiLCBcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCIsIFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXCIsIFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIiwgXFxcInBpY18xXFxcIiwgXFxcInBpY18yXFxcIiwgXFxcInBpY18zXFxcIiwgXFxcInBpY18xX2Z1bGxcXFwiLCBcXFwicGljXzFfY2VudGVyXFxcIiwgXFxcInBpY18xX2NhcmRcXFwiLCBcXFwicGljXzJfY2FyZFxcXCIsIFxcXCJwaWNfM19zcXVhcmVcXFwiLCBcXFwiY2FyZF9waWNfMVxcXCIsIFxcXCJjYXJkX3BpY18yXFxcIiwgXFxcImNhcmRfcGljXzNcXFwiLCBcXFwiY2FyZF9waWNfM19jZW50ZXJcXFwiLCBcXFwibG9uZ190ZXh0XFxcIiwgXFxcInJpY2hfdGV4dFxcXCIsIFxcXCJzY3JvbGxfYnV0dG9uXFxcIiwgXFxcImZsZXhfYnV0dG9uXFxcIl07XFxuICAgICAgICB2YXIgVHlwZTEgPSBbXTtcXG4gICAgICAgIGZvciAodmFyIGkgaW4gVHlwZSkge1xcbiAgICAgICAgICAgIHZhciBjb2wgPSBzdG9yYWdlMC5nZXRJdGVtKCd0eXBlJywgJycpO1xcbiAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXG4gICAgICAgICAgICBpZiAoVHlwZVtpXSA9PSBDb2wpIHtcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9ICfwn5GJ8J+PvScgKyBUeXBlW2ldO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIFR5cGVbaV0gPSBUeXBlW2ldO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBUeXBlMVtpXSA9IFR5cGVbaV07XFxuICAgICAgICB9XFxuICAgICAgICBzaG93U2VsZWN0T3B0aW9ucyh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLpgInmi6nnsbvlnotcXFwiLFxcbiAgICAgICAgICAgIGNvbDogMixcXG4gICAgICAgICAgICBvcHRpb25zOiBUeXBlMSxcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ3R5cGUnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHZhciBjb2wgPSBzdG9yYWdlMC5nZXRJdGVtKCd0eXBlJywgJycpO1xcbiAgICAgICAgICAgICAgICB2YXIgQ29sID0gKGNvbC5pbmNsdWRlcygn8J+RifCfj70nKSkgPyBjb2wuc3BsaXQoJ/CfkYnwn4+9JylbMV0gOiBjb2w7XFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ0NvbDInLCBDb2wpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSksXFxufSwge1xcbiAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NlYXJjaCc7XFxuICAgIH0pLFxcbn0se1xcbiAgICB0aXRsZTogJ+mmlumhtScsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICB9KSxcXG59LCB7XFxuICAgIHRpdGxlOiAn56ysJyArIE1ZX1BBR0UgKyAn6aG1JyxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgfSksXFxufSwge1xcbiAgICB0aXRsZTogJ+i3s+i9rCcsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHJldHVybiAkKCcnKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dDtcXG4gICAgICAgICAgICBwdXRNeVZhcigncGFnZScsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgfSk7XFxuICAgIH0pLFxcbn0sIHtcXG4gICAgdGl0bGU6IG5pY2tOYW1lLFxcbiAgICBqczogJC50b1N0cmluZygodXVpZCkgPT4ge1xcbiAgICAgICAgcHV0TXlWYXIoJ3V1aWQnLCB1dWlkKTtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3VzZXIjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgfSwgdXVpZCksXFxufV1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRqOexu+Wei+S4gF9sb25nQ2xpY2tcIixcInBhdGhcIjpcImxvbmdDbGljazFcIixcInJ1bGVcIjpcIi8vY29sX3R5cGXmmL7npLrmoLflvI9cXG5be1xcbiAgICB0aXRsZTogJ+agt+W8jycsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHZhciBUeXBlID0gW1xcXCJtb3ZpZV8xXFxcIiwgXFxcIm1vdmllXzJcXFwiLCBcXFwibW92aWVfM1xcXCIsIFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIiwgXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIiwgXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBcXFwicGljXzFcXFwiLCBcXFwicGljXzJcXFwiLCBcXFwicGljXzNcXFwiLCBcXFwicGljXzFfZnVsbFxcXCIsIFxcXCJwaWNfMV9jZW50ZXJcXFwiLCBcXFwicGljXzFfY2FyZFxcXCIsIFxcXCJwaWNfMl9jYXJkXFxcIiwgXFxcInBpY18zX3NxdWFyZVxcXCIsIFxcXCJjYXJkX3BpY18xXFxcIiwgXFxcImNhcmRfcGljXzJcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIsIFxcXCJjYXJkX3BpY18zX2NlbnRlclxcXCIsIFxcXCJsb25nX3RleHRcXFwiLCBcXFwicmljaF90ZXh0XFxcIiwgXFxcInNjcm9sbF9idXR0b25cXFwiLCBcXFwiZmxleF9idXR0b25cXFwiXTtcXG4gICAgICAgIHZhciBUeXBlMSA9IFtdO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiBUeXBlKSB7XFxuICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxuICAgICAgICAgICAgdmFyIENvbCA9IChjb2wuaW5jbHVkZXMoJ/CfkYnwn4+9JykpID8gY29sLnNwbGl0KCfwn5GJ8J+PvScpWzFdIDogY29sO1xcbiAgICAgICAgICAgIGlmIChUeXBlW2ldID09IENvbCkge1xcbiAgICAgICAgICAgICAgICBUeXBlW2ldID0gJ/CfkYnwn4+9JyArIFR5cGVbaV07XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9IFR5cGVbaV07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFR5cGUxW2ldID0gVHlwZVtpXTtcXG4gICAgICAgIH1cXG4gICAgICAgIHNob3dTZWxlY3RPcHRpb25zKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIumAieaLqeexu+Wei1xcXCIsXFxuICAgICAgICAgICAgY29sOiAyLFxcbiAgICAgICAgICAgIG9wdGlvbnM6IFR5cGUxLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgndHlwZScsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxuICAgICAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnQ29sMScsIENvbCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9KSxcXG59LCB7XFxuICAgIHRpdGxlOiAn5pCc57SiJyxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc2VhcmNoJztcXG4gICAgfSksXFxufSx7XFxuICAgIHRpdGxlOiAn6aaW6aG1JyxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgIH0pLFxcbn0sIHtcXG4gICAgdGl0bGU6ICfnrKwnICsgTVlfUEFHRSArICfpobUnLFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICB9KSxcXG59LCB7XFxuICAgIHRpdGxlOiAn6Lez6L2sJyxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICQoJycpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0O1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdwYWdlJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICB9KTtcXG4gICAgfSksXFxufSwge1xcbiAgICB0aXRsZTogbmlja05hbWUsXFxuICAgIGpzOiAkLnRvU3RyaW5nKCh1dWlkKSA9PiB7XFxuICAgICAgICBwdXRNeVZhcigndXVpZCcsIHV1aWQpO1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvdXNlciNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICB9LCB1dWlkKSxcXG59XVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pGi6aG16Z2iLeaQnOe0olwiLFwicGF0aFwiOlwic2VhcmNoXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnNldFBhZ2VUaXRsZSgn5pCc57Si6aG1Jyk7XFxudmFyIHJyID0ge1xcbiAgICBcXFwiY29kZVxcXCI6IFxcXCJzZWFyY2hJbmRleFxcXCIsXFxuICAgIFxcXCJtb2RcXFwiOiBcXFwiaW5kZXhcXFwiLFxcbiAgICBcXFwib2F1dGhfaWRcXFwiOiBcXFwiZ3luVUd0THZTRGhrS0FzZzE3MDQ1MTM3ODkyODZcXFwiLFxcbiAgICBcXFwib2F1dGhfdHlwZVxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICBcXFwidGltZXN0YW1wXFxcIjogMS43MDQ1NDY2Njc4MDZFMTIsXFxuICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjQuNS4wXFxcIlxcbn1cXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5lbmNyeXB0KHJyKTtcXG5cXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxudmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXG5cXG52YXIgRGF0YSA9IHBvc3QoXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFwiLCB7XFxuICAgIGJvZHk6IHtcXG4gICAgICAgIFxcXCJjbGllbnRcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiB0aW1lc3RhbXAsXFxuICAgICAgICBcXFwiZGF0YVxcXCI6IGRhdGEsXFxuICAgICAgICBcXFwic2lnblxcXCI6IHNpZ25cXG4gICAgfVxcbn0pXFxudmFyIGggPSBEYXRhO1xcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT1cXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5EZWNyeXB0KGRhdGEpO1xcbnZhciBsaXN0ID0gci5kYXRhLmhvdFNlYXJjaDtcXG52YXIgbGlzdDEgPSByLmRhdGEuaG90VG9waWM7XFxudmFyIGxpc3QyID0gci5kYXRhLmNhdGVnb3J5WzBdLm12bGlzdDtcXG52YXIgdGl0bGUyID0gci5kYXRhLmNhdGVnb3J5WzBdLm5hbWU7XFxudmFyIGRlc2MyID0gci5kYXRhLmNhdGVnb3J5WzBdLmRlc2M7XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfmkJzntKInLFxcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcHV0VmFyKCdrZXl3b3JkJywgaW5wdXQpO1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc2VhcmNoX3Jlc3VsdD9meXBhZ2UnO1xcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcigna2V5d29yZCcsICcnKSxcXG4gICAgICAgIHBhZ2VUaXRsZTogJ+aQnOe0oue7k+aenCdcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSdcXG59KTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuc3Ryb25nUign54Ot5pCc5qacJywgJ0ZGNjY5OScpLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxufSk7XFxuZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxuICAgIHZhciB0aXRsZSA9IGxpc3RbaV07XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiICsgdGl0bGVcXG4gICAgfSk7XFxufVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSdcXG59KTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuc3Ryb25nUignOTHng63ngrknLCAnRkY2Njk5JyksXFxuICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb25fcmlnaHQ1JyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc2VhcmNoX2hvdFRvcGljcydcXG59KTtcXG5mb3IgKHZhciBpIGluIGxpc3QxKSB7XFxuICAgIHZhciB0aXRsZSA9IGxpc3QxW2ldLnRpdGxlO1xcbiAgICB2YXIgaWQgPSBsaXN0MVtpXS52YWx1ZTtcXG4gICAgdmFyIG51bSA9IE51bWJlcihpKSArIDE7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogbnVtICsgJy5cXFxcdCcgKyB0aXRsZSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zZWFyY2hfaG90VG9waWNzX2RldGFpbCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiBpZCxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6ICfor6bmg4UnXFxuICAgICAgfVxcbiAgICB9KTtcXG59XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5J1xcbn0pO1xcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBkZXNjMiArIHRpdGxlMixcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5J1xcbn0pO1xcbmZvciAodmFyIGkgaW4gbGlzdDIpIHtcXG4gICAgdmFyIHRpdGxlID0gbGlzdDJbaV0udGl0bGU7XFxuICAgIHZhciBwbGF5VXJsID0gbGlzdDJbaV0ucGxheVVybDtcXG4gICAgdmFyIG5pY2tOYW1lID0gbGlzdDJbaV0ubmlja05hbWU7XFxuICAgIHZhciB1dWlkID0gbGlzdDJbaV0udXVpZDtcXG4gICAgdmFyIGRlc2MgPSAn8J+UpScgKyBsaXN0MltpXS5wbGF5X2NvdW50ICsgJ1xcXFx0JyArIGxpc3QyW2ldLmR1cmF0aW9uU3RyO1xcbiAgICB2YXIgaW1hZ2V1cmwgPSBsaXN0MltpXS50aHVtYkltZztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnLFxcbiAgICAgICAgdXJsOiBwbGF5VXJsLnJlcGxhY2UoJzEwcGxheScsICdsb25nJyksXFxuICAgIH0pO1xcbn1cXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaLpobXpnaIt5pCc57SiX+e7k+aenFwiLFwicGF0aFwiOlwic2VhcmNoX3Jlc3VsdFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxudmFyIFBhZ2UgPSBnZXRNeVZhcigncGFnZScsICcwJyk7XFxudmFyIHR5cGVTbGlzdCA9IFt7XFxuICAgIHRpdGxlOiAn55+t6KeG6aKRJyxcXG4gICAgdHlwZTogJzEnXFxufSwge1xcbiAgICB0aXRsZTogJ+WQiOmbhicsXFxuICAgIHR5cGU6ICc1J1xcbn0sIHtcXG4gICAgdGl0bGU6ICfluJblrZAnLFxcbiAgICB0eXBlOiAnMydcXG59XTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLkNhdGVnb3J5KHR5cGVTbGlzdCwxLGQpO1xcbn1cXG52YXIgcnIgPSB7XFxuICAgIFxcXCJjb2RlXFxcIjogXFxcInNlYXJjaFxcXCIsXFxuICAgIFxcXCJ0eXBlXFxcIjogZ2V0TXlWYXIoJ3R5cGVTJywgJzEnKSxcXG4gICAgXFxcImtleVxcXCI6IGdldFZhcigna2V5d29yZCcsICcnKSxcXG4gICAgXFxcIm1vZFxcXCI6IFxcXCJpbmRleFxcXCIsXFxuICAgIFxcXCJvYXV0aF9pZFxcXCI6IFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXCIsXFxuICAgIFxcXCJvYXV0aF90eXBlXFxcIjogXFxcInB3YVxcXCIsXFxuICAgIFxcXCJwYWdlXFxcIjogKFBhZ2UgPT0gMCkgPyBwYWdlIDogUGFnZSxcXG4gICAgXFxcInRpbWVzdGFtcFxcXCI6IDEuNzA0NTQ2NjY3ODA2RTEyLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IFxcXCI0LjUuMFxcXCJcXG59XFxuY2xlYXJNeVZhcigncGFnZScpO1xcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmVuY3J5cHQocnIpO1xcblxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXG52YXIgZGF0YSA9IGVuY3J5cHRkYXRhLmRhdGE7XFxudmFyIHNpZ24gPSBlbmNyeXB0ZGF0YS5zaWduO1xcblxcbnZhciBEYXRhID0gcG9zdChcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXCIsIHtcXG4gICAgYm9keToge1xcbiAgICAgICAgXFxcImNsaWVudFxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICAgICAgXFxcInRpbWVzdGFtcFxcXCI6IHRpbWVzdGFtcCxcXG4gICAgICAgIFxcXCJkYXRhXFxcIjogZGF0YSxcXG4gICAgICAgIFxcXCJzaWduXFxcIjogc2lnblxcbiAgICB9XFxufSlcXG52YXIgaCA9IERhdGE7XFxuXFxubGV0IGltYWdlID0gJCgpLmltYWdlKCgpID0+ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPVxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXG5cXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoaCkuZGF0YTtcXG52YXIgciA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLkRlY3J5cHQoZGF0YSk7XFxudmFyIGxpc3QgPSByLmRhdGE7XFxuaWYgKHIuc3RhdHVzID09IDApIHtcXG4gICAgdG9hc3Qoci5tc2cpO1xcbiAgICBiYWNrKCk7XFxufSBlbHNlIGlmIChsaXN0ID09ICcnKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ayoeacieabtOWkmuWGheWuuSEnLFxcbiAgICAgICAgdXJsOiAndG9hc3Q6Ly/wn4+A5L2g5bmy5ZibficsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuXFxufSBlbHNlIGlmKGdldE15VmFyKCd0eXBlUycsICcxJyk9PTEpe1xcbiAgICBmb3IgKHZhciBpIGluIGxpc3QpIHtcXG4gICAgICAgIHZhciBwbGF5dXJsID0gbGlzdFtpXS5wbGF5VXJsO1xcbiAgICAgICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTtcXG4gICAgICAgIHZhciBuaWNrTmFtZSA9IGxpc3RbaV0ubmlja05hbWU7XFxuICAgICAgICB2YXIgdXVpZCA9IGxpc3RbaV0udXVpZDtcXG4gICAgICAgIHZhciBkZXNjID0gJ1xcXFx08J+UpScgKyBsaXN0W2ldLnBsYXlfY291bnQgKyAnXFxcXHTij7HvuI8nICsgbGlzdFtpXS5kdXJhdGlvblN0cjtcXG4gICAgICAgIHZhciBpbWFnZXVybCA9IGxpc3RbaV0udGh1bWJJbWc7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xvbmdDbGljaycpKS5ydWxlKVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxuICAgICAgICAgICAgY29sX3R5cGU6IChzdG9yYWdlMC5nZXRJdGVtKCdDb2xfbWVkaWEnLCAnJykgPT0gJycpID8gJ21vdmllXzInIDogc3RvcmFnZTAuZ2V0SXRlbSgnQ29sX21lZGlhJywgJycpLFxcbiAgICAgICAgICAgIHVybDogcGxheXVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBlbHNlIGlmKGdldE15VmFyKCd0eXBlUycsICczJyk9PTMpe1xcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcbiAgICB2YXIgaWQgPSBsaXN0W2ldLmlkO1xcbiAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLmNvbnRlbnQ7XFxuICAgIHZhciBkZXNjID0gbGlzdFtpXS5jcmVhdGVkX2F0ICsgJ+WPkeW4g1xcXFx0XFxcXHQnICsgbGlzdFtpXS52aWV3X251bSArICfmtY/op4hcXFxcdFxcXFx0JyArIGxpc3RbaV0ubGlrZV9udW0gKyAn54K56LWeJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3c2RldGFpbCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG5ld3NfaWQ6IGlkLFxcbiAgICAgICAgICAgIG1vZDogXFxcIm5ld3NcXFwiLFxcbiAgICAgICAgICAgIGNvZGU6IFxcXCJkZXRhaWxfdjFcXFwiLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogXFxcIuW4luWtkOivpuaDhVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcbn0gZWxzZXtcXG4gICAgICB0b2FzdCgn5aKe5Yqg5Yqf6IO955qE5py65Lya5p2l5LqG77yBJyk7XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRoumhtemdoi3mkJzntKJfOTHng63ngrlcIixcInBhdGhcIjpcInNlYXJjaF9ob3RUb3BpY3NcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIHJyID0ge1xcbiAgICBcXFwib2F1dGhfdHlwZVxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICBcXFwib2F1dGhfaWRcXFwiOiBcXFwiZ3luVUd0THZTRGhrS0FzZzE3MDQ1MTM3ODkyODZcXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IFxcXCI0LjUuMFxcXCIsXFxuICAgIFxcXCJtb2RcXFwiOiBcXFwiY2F0ZWdvcnlcXFwiLFxcbiAgICBcXFwiY29kZVxcXCI6IFxcXCJob3RUb3BpY3NcXFwiLFxcbiAgICBcXFwidGltZXN0YW1wXFxcIjogMS43MDQ1NDY2Njc4MDZFMTJcXG59XFxuXFxudmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZW5jcnlwdChycik7XFxuXFxudmFyIHRpbWVzdGFtcCA9IGVuY3J5cHRkYXRhLnRpbWVzdGFtcC50b1N0cmluZygpO1xcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxuXFxudmFyIERhdGEgPSBwb3N0KFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcIiwge1xcbiAgICBib2R5OiB7XFxuICAgICAgICBcXFwiY2xpZW50XFxcIjogXFxcInB3YVxcXCIsXFxuICAgICAgICBcXFwidGltZXN0YW1wXFxcIjogdGltZXN0YW1wLFxcbiAgICAgICAgXFxcImRhdGFcXFwiOiBkYXRhLFxcbiAgICAgICAgXFxcInNpZ25cXFwiOiBzaWduXFxuICAgIH1cXG59KVxcbnZhciBoID0gRGF0YTtcXG5cXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXCJkYXRhP3J1bGU9XFxcIiArIE1ZX1RJVExFKS5kZWNyeXB0KCkpO1xcblxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcbnZhciByID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuRGVjcnlwdChkYXRhKTtcXG52YXIgbGlzdCA9IHIuZGF0YS5saXN0O1xcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcbiAgICB2YXIgaWQgPSBsaXN0W2ldLnZhbHVlO1xcbiAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLnRpdGxlO1xcbiAgICB2YXIgaW1nID0gbGlzdFtpXS5pbWdfdXJsO1xcbiAgICB2YXIgZGVzYyA9IGxpc3RbaV0udXBkYXRlZF9hdCArICfwn5SlXFxcXHRcXFxcdCcrW2ldLmhvdF9udW0gICsgJ/Cfj7fvuI9cXFxcdFxcXFx0JysgbGlzdFtpXS50YWdzX25hbWU7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICBkZXNjOiAnMCcsXFxuICAgICAgICBpbWc6IGltZyArIGltYWdlLFxcbiAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18xJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zZWFyY2hfaG90VG9waWNzX2RldGFpbCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiBpZCxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IFxcXCLor6bmg4VcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn1cXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaLpobXpnaIt5pCc57SiXzkx54Ot54K5X+S6jOe6p1wiLFwicGF0aFwiOlwic2VhcmNoX2hvdFRvcGljc19kZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIGlkID0gTVlfUEFSQU1TLmlkO1xcbnZhciByciA9IHtcXG4gICAgXFxcIm9hdXRoX3R5cGVcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgXFxcImlkXFxcIjogaWQsXFxuICAgIFxcXCJvYXV0aF9pZFxcXCI6IFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXCIsXFxuICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjQuNS4wXFxcIixcXG4gICAgXFxcIm1vZFxcXCI6IFxcXCJpbmRleFxcXCIsXFxuICAgIFxcXCJjb2RlXFxcIjogXFxcImRldGFpbF92MVxcXCIsXFxuICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMlxcbn1cXG5cXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5lbmNyeXB0KHJyKTtcXG5cXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxudmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXG5cXG52YXIgRGF0YSA9IHBvc3QoXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFwiLCB7XFxuICAgIGJvZHk6IHtcXG4gICAgICAgIFxcXCJjbGllbnRcXFwiOiBcXFwicHdhXFxcIixcXG4gICAgICAgIFxcXCJ0aW1lc3RhbXBcXFwiOiB0aW1lc3RhbXAsXFxuICAgICAgICBcXFwiZGF0YVxcXCI6IGRhdGEsXFxuICAgICAgICBcXFwic2lnblxcXCI6IHNpZ25cXG4gICAgfVxcbn0pXFxudmFyIGggPSBEYXRhO1xcblxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT1cXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxuXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5EZWNyeXB0KGRhdGEpO1xcbnZhciBkYXRhID0gci5kYXRhO1xcbnZhciB0aXRsZSA9IGRhdGEudGl0bGU7XFxudmFyIHBsYXlVcmwgPSBkYXRhLnBsYXlVcmw7XFxudmFyIHByZXZpZXdVcmwgPSBkYXRhLnByZXZpZXdVcmw7XFxudmFyIHBsYXl1cmwgPSAocGxheVVybCE9JycpP3BsYXlVcmw6cHJldmlld1VybDtcXG52YXIgdGh1bWJJbWcgPSBkYXRhLnRodW1iSW1nO1xcbnZhciB0YWdzID0gZGF0YS50YWdzO1xcbnZhciBjcmVhdGVkX2F0ID0gZGF0YS5jcmVhdGVkX2F0O1xcbnZhciBwbGF5X2NvdW50ID0gZGF0YS5wbGF5X2NvdW50O1xcbnZhciBsaWtlID0gZGF0YS5saWtlO3ZhciBsaWtlID0gZGF0YS5saWtlO1xcbnZhciBjb21tZW50ID0gZGF0YS5jb21tZW50O1xcbnZhciBkdXJhdGlvblN0ciA9IGRhdGEuZHVyYXRpb25TdHI7XFxudmFyIG5pY2tOYW1lID0gZGF0YS5uaWNrTmFtZTtcXG52YXIgdXVpZCA9IGRhdGEudXVpZDtcXG52YXIgbWVkaWFsaXN0ID0gZGF0YS5yZWNvbW1lbmQ7IC8v57K+5b2p6KeG6aKRXFxudmFyIGNvbW1lbnRfbGlzdCA9IGRhdGEuY29tbWVudExpc3Q7IC8v6K+E6K66XFxuXFxuZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6ICcwJyxcXG4gICAgICAgIGltZzogdGh1bWJJbWcgKyBpbWFnZSxcXG4gICAgICAgIHVybDogcGxheXVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcbiAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18xJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzbWFsbD4nICsn5Y+R5biD5pe26Ze0OicrY3JlYXRlZF9hdCsnXFxcXHRcXFxcdFVQ5Li7Oicrbmlja05hbWUrJ1xcXFxu8J+Pt++4jycrdGFncysnXFxcXHRcXFxcdOaXtumVvycrZHVyYXRpb25TdHIrJ1xcXFxu8J+UpScrcGxheV9jb3VudCsnXFxcXHRcXFxcdOKdpO+4jycrbGlrZSsnXFxcXHRcXFxcdOKcjfCfj73vuI8nK2NvbW1lbnQrJzwvc21hbGw+JyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9KTtcXG52YXIgdHlwZVNTbGlzdCA9IFt7XFxuICAgIHRpdGxlOiAn57K+5b2p6KeG6aKRJyxcXG4gICAgdHlwZTogJzEnXFxufSwge1xcbiAgICB0aXRsZTogJ+ivhOiuuicrY29tbWVudCxcXG4gICAgdHlwZTogJzAnXFxufV07XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5DYXRlZ29yeSh0eXBlU1NsaXN0LDIsZCk7XFxufVxcbmlmKGdldE15VmFyKCd0eXBlU1MnLCAnMScpPT0wKXtcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICflhajpg6jor4TorrpcXFxcdCgnK2NvbW1lbnQrJyknLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG59KTtcXG5mb3IgKHZhciBpIGluIGNvbW1lbnRfbGlzdCkge1xcbiAgICB2YXIgbmlja25hbWUgPSBjb21tZW50X2xpc3RbaV0ubmlja05hbWU7XFxuICAgIHZhciBzZXhUeXBlID0gY29tbWVudF9saXN0W2ldLnNleFR5cGU7XFxuICAgIHZhciBzZXggPSAoc2V4VHlwZSA9PSAnMCcpID8gJ1xcXFx08J+RqfCfj71cXFxcdCcgOiAnXFxcXHTwn5Go8J+PvVxcXFx0JztcXG4gICAgdmFyIGNyZWF0ZWRfYXQgPSBjb21tZW50X2xpc3RbaV0uY3JlYXRlZF9hdDtcXG4gICAgdmFyIGNvbW1lbnQgPSBjb21tZW50X2xpc3RbaV0uY29tbWVudDtcXG4gICAgdmFyIHRodW1iID0gY29tbWVudF9saXN0W2ldLnRodW1iO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IG5pY2tuYW1lICsgc2V4LFxcbiAgICAgICAgZGVzYzogY3JlYXRlZF9hdCxcXG4gICAgICAgIGltZzogdGh1bWIgKyBpbWFnZSxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGNvbW1lbnQsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICB9KTtcXG59XFxufSBlbHNlIHtcXG5mb3IgKHZhciBpIGluIG1lZGlhbGlzdCkge1xcbiAgICB2YXIgaWQgPSBtZWRpYWxpc3RbaV0uaWQ7XFxuICAgIHZhciB0aXRsZSA9IG1lZGlhbGlzdFtpXS50aXRsZTtcXG4gICAgdmFyIGltZyA9IG1lZGlhbGlzdFtpXS50aHVtYkltZztcXG4gICAgLy92YXIgcGxheVVybCA9IG1lZGlhbGlzdFtpXS5wbGF5VXJsO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgaW1nOiBpbWcgKyBpbWFnZSxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc2VhcmNoX2hvdFRvcGljc19kZXRhaWwnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogaWQsXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBcXFwi6K+m5oOFXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxufVxcbnNldFJlc3VsdChkKTtcIn1dLFwicGFyYW1zXCI6XCJ7XFxcImRlZmF1bHRWYWx1ZVxcXCI6XFxcIlxcXCIsXFxcInBhZ2VUaXRsZVxcXCI6XFxcIuaQnOe0oue7k+aenFxcXCJ9XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIuaRuOmxvOaXpeaKpVwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vcGFnZS9zZWFyY2hfcmVzdWx0P2Z5cGFnZVwiLFwiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcImZpbmRfcnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxudmFyIFBhZ2UgPSBnZXRNeVZhcigncGFnZScsICcwJyk7XFxudmFyIHR5cGVTbGlzdCA9IFt7XFxuICAgIHRpdGxlOiAn55+t6KeG6aKRJyxcXG4gICAgdHlwZTogJzEnXFxufSwge1xcbiAgICB0aXRsZTogJ+WQiOmbhicsXFxuICAgIHR5cGU6ICc1J1xcbn0sIHtcXG4gICAgdGl0bGU6ICfluJblrZAnLFxcbiAgICB0eXBlOiAnMydcXG59XTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLkNhdGVnb3J5KHR5cGVTbGlzdCwxLGQpO1xcbn1cXG52YXIgcnIgPSB7XFxuICAgIFxcXCJjb2RlXFxcIjogXFxcInNlYXJjaFxcXCIsXFxuICAgIFxcXCJ0eXBlXFxcIjogZ2V0TXlWYXIoJ3R5cGVTJywgJzEnKSxcXG4gICAgXFxcImtleVxcXCI6IGdldFZhcigna2V5d29yZCcsICcnKSxcXG4gICAgXFxcIm1vZFxcXCI6IFxcXCJpbmRleFxcXCIsXFxuICAgIFxcXCJvYXV0aF9pZFxcXCI6IFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXCIsXFxuICAgIFxcXCJvYXV0aF90eXBlXFxcIjogXFxcInB3YVxcXCIsXFxuICAgIFxcXCJwYWdlXFxcIjogKFBhZ2UgPT0gMCkgPyBwYWdlIDogUGFnZSxcXG4gICAgXFxcInRpbWVzdGFtcFxcXCI6IDEuNzA0NTQ2NjY3ODA2RTEyLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IFxcXCI0LjUuMFxcXCJcXG59XFxuY2xlYXJNeVZhcigncGFnZScpO1xcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmVuY3J5cHQocnIpO1xcblxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXG52YXIgZGF0YSA9IGVuY3J5cHRkYXRhLmRhdGE7XFxudmFyIHNpZ24gPSBlbmNyeXB0ZGF0YS5zaWduO1xcblxcbnZhciBEYXRhID0gcG9zdChcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXCIsIHtcXG4gICAgYm9keToge1xcbiAgICAgICAgXFxcImNsaWVudFxcXCI6IFxcXCJwd2FcXFwiLFxcbiAgICAgICAgXFxcInRpbWVzdGFtcFxcXCI6IHRpbWVzdGFtcCxcXG4gICAgICAgIFxcXCJkYXRhXFxcIjogZGF0YSxcXG4gICAgICAgIFxcXCJzaWduXFxcIjogc2lnblxcbiAgICB9XFxufSlcXG52YXIgaCA9IERhdGE7XFxuXFxubGV0IGltYWdlID0gJCgpLmltYWdlKCgpID0+ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPVxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXG5cXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoaCkuZGF0YTtcXG52YXIgciA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLkRlY3J5cHQoZGF0YSk7XFxudmFyIGxpc3QgPSByLmRhdGE7XFxuaWYgKHIuc3RhdHVzID09IDApIHtcXG4gICAgdG9hc3Qoci5tc2cpO1xcbiAgICBiYWNrKCk7XFxufSBlbHNlIGlmIChsaXN0ID09ICcnKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ayoeacieabtOWkmuWGheWuuSEnLFxcbiAgICAgICAgdXJsOiAndG9hc3Q6Ly/wn4+A5L2g5bmy5ZibficsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuXFxufSBlbHNlIGlmKGdldE15VmFyKCd0eXBlUycsICcxJyk9PTEpe1xcbiAgICBmb3IgKHZhciBpIGluIGxpc3QpIHtcXG4gICAgICAgIHZhciBwbGF5dXJsID0gbGlzdFtpXS5wbGF5VXJsO1xcbiAgICAgICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTtcXG4gICAgICAgIHZhciBuaWNrTmFtZSA9IGxpc3RbaV0ubmlja05hbWU7XFxuICAgICAgICB2YXIgdXVpZCA9IGxpc3RbaV0udXVpZDtcXG4gICAgICAgIHZhciBkZXNjID0gJ1xcXFx08J+UpScgKyBsaXN0W2ldLnBsYXlfY291bnQgKyAnXFxcXHTij7HvuI8nICsgbGlzdFtpXS5kdXJhdGlvblN0cjtcXG4gICAgICAgIHZhciBpbWFnZXVybCA9IGxpc3RbaV0udGh1bWJJbWc7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xvbmdDbGljaycpKS5ydWxlKVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxuICAgICAgICAgICAgY29sX3R5cGU6IChzdG9yYWdlMC5nZXRJdGVtKCdDb2xfbWVkaWEnLCAnJykgPT0gJycpID8gJ21vdmllXzInIDogc3RvcmFnZTAuZ2V0SXRlbSgnQ29sX21lZGlhJywgJycpLFxcbiAgICAgICAgICAgIHVybDogcGxheXVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBlbHNlIGlmKGdldE15VmFyKCd0eXBlUycsICczJyk9PTMpe1xcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcbiAgICB2YXIgaWQgPSBsaXN0W2ldLmlkO1xcbiAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLmNvbnRlbnQ7XFxuICAgIHZhciBkZXNjID0gbGlzdFtpXS5jcmVhdGVkX2F0ICsgJ+WPkeW4g1xcXFx0XFxcXHQnICsgbGlzdFtpXS52aWV3X251bSArICfmtY/op4hcXFxcdFxcXFx0JyArIGxpc3RbaV0ubGlrZV9udW0gKyAn54K56LWeJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3c2RldGFpbCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG5ld3NfaWQ6IGlkLFxcbiAgICAgICAgICAgIG1vZDogXFxcIm5ld3NcXFwiLFxcbiAgICAgICAgICAgIGNvZGU6IFxcXCJkZXRhaWxfdjFcXFwiLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogXFxcIuW4luWtkOivpuaDhVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcbn0gZWxzZXtcXG4gICAgICB0b2FzdCgn5aKe5Yqg5Yqf6IO955qE5py65Lya5p2l5LqG77yBJyk7XFxufVxcbnNldFJlc3VsdChkKTtcIixcImdyb3VwXCI6XCLikaLmt7HlpJxcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcIlwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkvp3otZZcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZGF0YVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbiQuZXhwb3J0cy5kZWNyeXB0ID0gZnVuY3Rpb24oKSB7XFxcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXFxcXFxcXCIpO1xcXFxuICAgIGNvbnN0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoJ2Y1ZDk2NWRmNzUzMzYyNzAnKTtcXFxcbiAgICBjb25zdCBpdiA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoJzk3YjYwMzk0YWJjMmZiZTEnKTtcXFxcbiAgICBjb25zdCB0ZXh0RGF0YSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZUlucHV0U3RyZWFtKGlucHV0KS50b0Jhc2U2NChfYmFzZTY0Lk5PX1dSQVApO1xcXFxuICAgIGNvbnN0IGRlY3J5cHRlZCA9IENyeXB0b1V0aWwuQUVTLmRlY3J5cHQodGV4dERhdGEsIGtleSwge1xcXFxuICAgICAgICBpdjogaXYsXFxcXG4gICAgICAgIG1vZGU6IFxcXFxcXFwiQUVTL0NCQy9Ob1BhZGRpbmdcXFxcXFxcIlxcXFxuICAgIH0pLnRvQmFzZTY0KF9iYXNlNjQuTk9fV1JBUCk7XFxcXG4gICAgY29uc3QgZGVjcnlwdGVkMCA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZUJhc2U2NChkZWNyeXB0ZWQsIF9iYXNlNjQuTk9fV1JBUCk7XFxcXG4gICAgcmV0dXJuIGRlY3J5cHRlZDAudG9JbnB1dFN0cmVhbSgpO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBEZWNyeXB0KGRhdGEpIHtcXFxcbiAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcXFxuICAgIGNvbnN0IF8weDQwOTgyZSA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2UoZGF0YSksXFxcXG4gICAgICAgIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKCdjYzg4ZGRjOTM1N2ZmNDYxZTA4ZjA0N2FlZGVlNjkyYicpLFxcXFxuICAgICAgICBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKCdlODkyMjVjZmJiaW1na2N1JyksXFxcXG4gICAgICAgIF8weDQzOWNhZSA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KF8weDQwOTgyZSksXFxcXG4gICAgICAgIF8weDM4NWQzNyA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KF8weDQzOWNhZSwga2V5LCB7XFxcXG4gICAgICAgICAgICAnaXYnOiBpdixcXFxcbiAgICAgICAgICAgICdtb2RlJzogQ3J5cHRvSlMubW9kZS5DRkIsXFxcXG4gICAgICAgICAgICAncGFkZGluZyc6IENyeXB0b0pTLnBhZC5Ob1BhZGRpbmdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgY29uc3QgXzB4MjcwNTZiID0gXzB4Mzg1ZDM3LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShfMHgyNzA1NmIudG9TdHJpbmcoKSk7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGRlY3J5cHRzaWduKGRkKSB7XFxcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXFxcXFxcXCIpO1xcXFxuICAgIGNvbnN0IERhdGEgPSBcXFxcXFxcImNsaWVudD1wd2EmZGF0YT1cXFxcXFxcIiArIGRkLmRhdGEgKyBcXFxcXFxcIiZ0aW1lc3RhbXA9XFxcXFxcXCIgKyBkZC50aW1lc3RhbXAgKyBcXFxcXFxcImNjODhkZGM5MzU3ZmY0NjFlMDhmMDQ3YWVkZWU2OTJiXFxcXFxcXCI7XFxcXG4gICAgY29uc3QgdXR0OERhdGEgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KERhdGEpO1xcXFxuICAgIGNvbnN0IHNoYTI1NiA9IHV0dDhEYXRhLnRvRGlnZXN0KCkuc2hhMjU2KCk7XFxcXG4gICAgY29uc3Qgc2lnbiA9IG1kNShzaGEyNTYpO1xcXFxuICAgIHJldHVybiBzaWduO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBlbmNyeXB0KF8weDNhZTlhYykge1xcXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7XFxcXG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoJ2NjODhkZGM5MzU3ZmY0NjFlMDhmMDQ3YWVkZWU2OTJiJyk7XFxcXG4gICAgY29uc3QgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSgnZTg5MjI1Y2ZiYmltZ2tjdScpO1xcXFxuICAgIF8weDNhZTlhYyA9IFxcXFxcXFwib2JqZWN0XFxcXFxcXCIgPT0gdHlwZW9mIF8weDNhZTlhYyA/IEpTT04uc3RyaW5naWZ5KF8weDNhZTlhYykgOiBfMHgzYWU5YWM7XFxcXG4gICAgbGV0IF8weDc5MjdhZSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKF8weDNhZTlhYyksXFxcXG4gICAgICAgIF8weDJlMjkxMCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KF8weDc5MjdhZSwga2V5LCB7XFxcXG4gICAgICAgICAgICAnaXYnOiBpdixcXFxcbiAgICAgICAgICAgICdtb2RlJzogQ3J5cHRvSlMubW9kZS5DRkIsXFxcXG4gICAgICAgICAgICAncGFkZGluZyc6IENyeXB0b0pTLnBhZC5Ob1BhZGRpbmdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgY29uc3QgZGF0YSA9IF8weDJlMjkxMC5jaXBoZXJ0ZXh0LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSxcXFxcbiAgICAgICAgXzB4NDljYjUyID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwLFxcXFxuICAgICAgICB0aW1lc3RhbXAgPSBwYXJzZUludChfMHg0OWNiNTIudG9TdHJpbmcoKSksXFxcXG4gICAgICAgIHNpZ24gPSBkZWNyeXB0c2lnbih7XFxcXG4gICAgICAgICAgICAnY2xpZW50JzogXFxcXFxcXCJwd2FcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICdkYXRhJzogZGF0YSxcXFxcbiAgICAgICAgICAgICd0aW1lc3RhbXAnOiB0aW1lc3RhbXBcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgcmV0dXJuIHtcXFxcbiAgICAgICAgJ2NsaWVudCc6IFxcXFxcXFwicHdhXFxcXFxcXCIsXFxcXG4gICAgICAgICdzaWduJzogc2lnbixcXFxcbiAgICAgICAgJ3RpbWVzdGFtcCc6IHRpbWVzdGFtcCxcXFxcbiAgICAgICAgJ2RhdGEnOiBkYXRhXFxcXG4gICAgfTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gc3Ryb25nKGQsIGMpIHtcXFxcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9IycgKyAoYyB8fCAnMDAwMDAwJykgKyAnPicgKyBkICsgJzwvZm9udD48L3N0cm9uZz4nO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBzdHJvbmdSKGQsIGMpIHtcXFxcbiAgICByZXR1cm4gJzxzdHJvbmc+PGZvbnQgY29sb3I9IycgKyAoYyB8fCAnMDAwMDAwJykgKyAnPicgKyBkICsgJzwvZm9udD48L3N0cm9uZz4nO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBDYXRlZ29yeShsaXN0LCBtb2RlLCBkKSB7XFxcXG4gICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXG4gICAgICAgIHZhciBMaXN0ID0gbGlzdFtpXTtcXFxcbiAgICAgICAgdmFyIHRpdGxlID0gTGlzdC50aXRsZTtcXFxcbiAgICAgICAgdmFyIFRpdGxlID0gKGdldE15VmFyKCdjb2xvcicsICctMScpID09IGkpID8gc3Ryb25nKHRpdGxlLCAnRkY2Njk5JykgOiB0aXRsZTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBUaXRsZSxcXFxcbiAgICAgICAgICAgIHVybDogJChMaXN0LnR5cGUpLmxhenlSdWxlKChpLCBtb2RlLCBMaXN0KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gMCkge1xcXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndHlwZScsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT0gMSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndHlwZVMnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IDIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3R5cGVTUycsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2NvbG9yJywgaSk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgICAgICAgICAgfSwgaSwgbW9kZSwgTGlzdCksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaycsXFxcXG4gICAgfSk7XFxcXG4gICAgcmV0dXJuIGQ7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGNhdGVnb3J5KGxpc3QsIGQpIHtcXFxcbiAgICBpZiAoZ2V0SXRlbSgnc3dpdGNoJywgJ29mZicpID09ICdvbicpIHtcXFxcbiAgICAgICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXG4gICAgICAgICAgICB2YXIgTGlzdCA9IGxpc3RbaV07XFxcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBMaXN0Lm5hbWU7XFxcXG4gICAgICAgICAgICB2YXIgVGl0bGUgPSAoZ2V0TXlWYXIoJ0NvbG9yJywgJy0xJykgPT0gaSkgPyBzdHJvbmcodGl0bGUsICdGRjY2OTknKSA6IHRpdGxlO1xcXFxuICAgICAgICAgICAgaWYgKExpc3QuaWQgPT0gJzYnIHx8IExpc3QuaWQgPT0gJzInKSB7XFxcXG5cXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTGlzdC5pZCA9PSAnNCcgfHwgTGlzdC5pZCA9PSAnNycpIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogVGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChMaXN0LmlkKS5sYXp5UnVsZSgoaSwgTGlzdCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lkJywgaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ0NvbG9yJywgaSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvdHlwZTE/ZnlwYWdlJztcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgaSwgTGlzdCksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoTGlzdC5pZCkubGF6eVJ1bGUoKGksIExpc3QpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpZCcsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdDb2xvcicsIGkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3R5cGUyP2Z5cGFnZSc7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIGksIExpc3QpLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgLypkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ/CflJInLFxcXFxuICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKCdvbi1vZmYnLCAnb2ZmJylcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXFxcbiAgICB9KTsqL1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAoZ2V0SXRlbSgnc3dpdGNoJywgJ29mZicpID09ICdvZmYnKSA/ICfwn5OBJyA6ICfwn5OCJyxcXFxcbiAgICAgICAgdXJsOiAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBpZiAoZ2V0SXRlbSgnc3dpdGNoJywgJ29mZicpID09ICdvZmYnKSB7XFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnc3dpdGNoJywgJ29uJyk7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3N3aXRjaCcsICdvZmYnKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ/CflI0nLFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc2VhcmNoJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXFxcbiAgICB9KTtcXFxcbiAgICByZXR1cm4gZDtcXFxcbn1cXFxcblxcXFxuJC5leHBvcnRzLkNhdGVnb3J5ID0gQ2F0ZWdvcnk7XFxcXG4kLmV4cG9ydHMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcXFxcbiQuZXhwb3J0cy5zdHJvbmdSID0gc3Ryb25nUjtcXFxcbiQuZXhwb3J0cy5zdHJvbmcgPSBzdHJvbmc7XFxcXG4kLmV4cG9ydHMuZW5jcnlwdCA9IGVuY3J5cHQ7XFxcXG4kLmV4cG9ydHMuRGVjcnlwdCA9IERlY3J5cHQ7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi4pGg6aG16Z2iLeexu+Wei+S4gFxcXCIsXFxcInBhdGhcXFwiOlxcXCJ0eXBlMVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxcXG52YXIgUGFnZSA9IGdldE15VmFyKCdwYWdlJywgJzAnKTtcXFxcbi8vdmFyIGlkID0gTVlfUEFSQU1TLmlkO1xcXFxuLy92YXIgY29sX3R5cGUgPSBNWV9QQVJBTVMuY29sX3R5cGU7XFxcXG52YXIgaWQgPSBnZXRNeVZhcignaWQnKTtcXFxcbmlmIChpZCA9PSAnNycpIHtcXFxcbiAgICBpZCA9ICcyMic7XFxcXG59IGVsc2UgaWYgKGlkID09ICc0Jykge1xcXFxuICAgIGlkID0gJzMzJztcXFxcbn1cXFxcbnZhciByciA9IHtcXFxcbiAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogXFxcXFxcXCJnZXRFbGVtZW50SXRlbWJ5SWRcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImlkXFxcXFxcXCI6IGlkLFxcXFxuICAgIFxcXFxcXFwibGltaXRcXFxcXFxcIjogMTIsXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogXFxcXFxcXCJlbGVtZW50XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJvYXV0aF9pZFxcXFxcXFwiOiBcXFxcXFxcImd5blVHdEx2U0Roa0tBc2cxNzA0NTEzNzg5Mjg2XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJvYXV0aF90eXBlXFxcXFxcXCI6IFxcXFxcXFwicHdhXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwYWdlXFxcXFxcXCI6IChQYWdlID09IDApID8gcGFnZSA6IFBhZ2UsXFxcXG4gICAgXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjogMS43MDQ1NDY2Njc4MDZFMTIsXFxcXG4gICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IFxcXFxcXFwiNC41LjBcXFxcXFxcIlxcXFxufVxcXFxuY2xlYXJNeVZhcigncGFnZScpO1xcXFxudmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YVxcXFxcXFwiKS5lbmNyeXB0KHJyKTtcXFxcbmxvZyhlbmNyeXB0ZGF0YSlcXFxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXFxcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXFxcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXFxcblxcXFxudmFyIERhdGEgPSBwb3N0KFxcXFxcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXFxcXFwiLCB7XFxcXG4gICAgYm9keToge1xcXFxuICAgICAgICBcXFxcXFxcImNsaWVudFxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiB0aW1lc3RhbXAsXFxcXG4gICAgICAgIFxcXFxcXFwiZGF0YVxcXFxcXFwiOiBkYXRhLFxcXFxuICAgICAgICBcXFxcXFxcInNpZ25cXFxcXFxcIjogc2lnblxcXFxuICAgIH1cXFxcbn0pXFxcXG52YXIgaCA9IERhdGE7XFxcXG5cXFxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhP3J1bGU9XFxcXFxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXFxcblxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxcXG52YXIgciA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuRGVjcnlwdChkYXRhKTtcXFxcblxcXFxudmFyIGxpc3QgPSByLmRhdGEubGlzdDtcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxuICAgIHZhciBwbGF5dXJsID0gbGlzdFtpXS5wbGF5VXJsO1xcXFxuICAgIHZhciB0aXRsZSA9IGxpc3RbaV0udGl0bGU7XFxcXG4gICAgdmFyIG5pY2tOYW1lID0gbGlzdFtpXS5uaWNrTmFtZTtcXFxcbiAgICB2YXIgdXVpZCA9IGxpc3RbaV0udXVpZDtcXFxcbiAgICB2YXIgZGVzYyA9ICdcXFxcXFxcXHTwn4aZJyArIGxpc3RbaV0uY3JlYXRlZF9hdCArICdcXFxcXFxcXHTwn5SlJyArIGxpc3RbaV0ucGxheV9jb3VudCArICdcXFxcXFxcXHTwn4+377iPJyArIG5pY2tOYW1lICsgJ1xcXFxcXFxcdOKPse+4jycgKyBsaXN0W2ldLmR1cmF0aW9uU3RyO1xcXFxuICAgIHZhciBpbWFnZXVybCA9IGxpc3RbaV0udGh1bWJJbWc7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxcXG4gICAgICAgIGNvbF90eXBlOiAoc3RvcmFnZTAuZ2V0SXRlbSgnQ29sMScsICcnKSA9PSAnJykgPyAncGljXzFfY2FyZCcgOiBzdG9yYWdlMC5nZXRJdGVtKCdDb2wxJywgJycpLFxcXFxuICAgICAgICB1cmw6IHBsYXl1cmwucmVwbGFjZSgnMTBwbGF5JywgJ2xvbmcnKSxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGxvbmdDbGljazogZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9sb25nQ2xpY2sxJykpLnJ1bGUpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbn1cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLikaHpobXpnaIt55So5oi3LeWFqOmDqOmhtVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ1c2VybGlzdFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxcXG52YXIgbW9kID0gTVlfUEFSQU1TLm1vZDtcXFxcbnZhciBjb2RlID0gTVlfUEFSQU1TLmNvZGU7XFxcXG52YXIgY29sX3R5cGUgPSBNWV9QQVJBTVMuY29sX3R5cGU7XFxcXG52YXIgcnIgPSB7XFxcXG4gICAgXFxcXFxcXCJvYXV0aF90eXBlXFxcXFxcXCI6IFxcXFxcXFwicHdhXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJvYXV0aF9pZFxcXFxcXFwiOiBcXFxcXFxcImd5blVHdEx2U0Roa0tBc2cxNzA0NTEzNzg5Mjg2XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IFxcXFxcXFwiNC41LjBcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcIm1vZFxcXFxcXFwiOiBtb2QsXFxcXG4gICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IGNvZGUsXFxcXG4gICAgXFxcXFxcXCJwYWdlXFxcXFxcXCI6IHBhZ2UsXFxcXG4gICAgXFxcXFxcXCJsaW1pdFxcXFxcXFwiOiAyMSxcXFxcbiAgICBcXFxcXFxcInV1aWRcXFxcXFxcIjogZ2V0TXlWYXIoJ3V1aWQnLCAnJyksXFxcXG4gICAgXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjogMS43MDQ1NDY2Njc4MDZFMTJcXFxcbn1cXFxcblxcXFxudmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YVxcXFxcXFwiKS5lbmNyeXB0KHJyKTtcXFxcblxcXFxudmFyIHRpbWVzdGFtcCA9IGVuY3J5cHRkYXRhLnRpbWVzdGFtcC50b1N0cmluZygpO1xcXFxudmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcXFxudmFyIHNpZ24gPSBlbmNyeXB0ZGF0YS5zaWduO1xcXFxuXFxcXG52YXIgRGF0YSA9IHBvc3QoXFxcXFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcXFxcXCIsIHtcXFxcbiAgICBib2R5OiB7XFxcXG4gICAgICAgIFxcXFxcXFwiY2xpZW50XFxcXFxcXCI6IFxcXFxcXFwicHdhXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IHRpbWVzdGFtcCxcXFxcbiAgICAgICAgXFxcXFxcXCJkYXRhXFxcXFxcXCI6IGRhdGEsXFxcXG4gICAgICAgIFxcXFxcXFwic2lnblxcXFxcXFwiOiBzaWduXFxcXG4gICAgfVxcXFxufSlcXFxcbnZhciBoID0gRGF0YTtcXFxcblxcXFxubGV0IGltYWdlID0gJCgpLmltYWdlKCgpID0+ICQucmVxdWlyZShcXFxcXFxcImRhdGE/cnVsZT1cXFxcXFxcIiArIE1ZX1RJVExFKS5kZWNyeXB0KCkpO1xcXFxuXFxcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoaCkuZGF0YTtcXFxcbnZhciByID0gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YVxcXFxcXFwiKS5EZWNyeXB0KGRhdGEpO1xcXFxuaWYgKG1vZCA9PSBcXFxcXFxcImNsdWJcXFxcXFxcIikge1xcXFxuICAgIHZhciBsaXN0ID0gci5kYXRhLml0ZW07XFxcXG59IGVsc2UgaWYgKG1vZCA9PSBcXFxcXFxcInVzZXJcXFxcXFxcIikge1xcXFxuICAgIHZhciBsaXN0ID0gci5kYXRhO1xcXFxufVxcXFxuZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXG4gICAgdmFyIHBsYXl1cmwgPSBsaXN0W2ldLnBsYXlVcmw7XFxcXG4gICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTtcXFxcbiAgICB2YXIgZGVzYyA9ICdcXFxcXFxcXHTwn5SlJyArIGxpc3RbaV0ucGxheV9jb3VudDtcXFxcbiAgICB2YXIgaW1hZ2V1cmwgPSBsaXN0W2ldLnRodW1iSW1nO1xcXFxuICAgIHZhciBuaWNrTmFtZSA9IGxpc3RbaV0ubmlja05hbWU7XFxcXG4gICAgdmFyIHV1aWQgPSBsaXN0W2ldLnV1aWQ7XFxcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xvbmdDbGljaycpKS5ydWxlKVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgZGVzYzogZGVzYyxcXFxcbiAgICAgICAgaW1nOiBpbWFnZXVybCArIGltYWdlLFxcXFxuICAgICAgICBjb2xfdHlwZTogKHN0b3JhZ2UwLmdldEl0ZW0oJ0NvbF9tZWRpYScsICcnKSA9PSAnJykgPyBjb2xfdHlwZSA6IHN0b3JhZ2UwLmdldEl0ZW0oJ0NvbF9tZWRpYScsICcnKSxcXFxcbiAgICAgICAgdXJsOiBwbGF5dXJsLnJlcGxhY2UoJzEwcGxheScsICdsb25nJyksXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IGxvbmdDbGljazFcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxufVxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi4pGh6aG16Z2iLeeUqOaIty3pooTop4jpobVcXFwiLFxcXCJwYXRoXFxcIjpcXFwidXNlclxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5zZXRQYWdlVGl0bGUoJ1VQ5Li76aG1Jyk7XFxcXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YT9ydWxlPVxcXFxcXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxcXG52YXIgY29sX3R5cGUgPSBNWV9QQVJBTVMuY29sX3R5cGU7XFxcXG5cXFxcbi8v55So5oi35pWw5o2uK+W4luWtkOadv+Wdl1xcXFxudmFyIHJyID0ge1xcXFxuICAgIFxcXFxcXFwib2F1dGhfdHlwZVxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfaWRcXFxcXFxcIjogXFxcXFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogXFxcXFxcXCJ1c2VyXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IFxcXFxcXFwib3RoZXJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInV1aWRcXFxcXFxcIjogZ2V0TXlWYXIoJ3V1aWQnLCAnJyksXFxcXG4gICAgXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjogMS43MDQ1NDY2Njc4MDZFMTJcXFxcbn1cXFxcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuZW5jcnlwdChycik7XFxcXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxcXG52YXIgZGF0YSA9IGVuY3J5cHRkYXRhLmRhdGE7XFxcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxcXG52YXIgRGF0YSA9IHBvc3QoXFxcXFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcXFxcXCIsIHtcXFxcbiAgICBib2R5OiB7XFxcXG4gICAgICAgIFxcXFxcXFwiY2xpZW50XFxcXFxcXCI6IFxcXFxcXFwicHdhXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IHRpbWVzdGFtcCxcXFxcbiAgICAgICAgXFxcXFxcXCJkYXRhXFxcXFxcXCI6IGRhdGEsXFxcXG4gICAgICAgIFxcXFxcXFwic2lnblxcXFxcXFwiOiBzaWduXFxcXG4gICAgfVxcXFxufSlcXFxcbnZhciBoID0gRGF0YTtcXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcXFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhXFxcXFxcXCIpLkRlY3J5cHQoZGF0YSk7XFxcXG52YXIgbGlzdCA9IHIuZGF0YTtcXFxcblxcXFxudmFyIGNsdWJfdmlkZW9fY291bnQgPSBsaXN0LmNsdWJfdmlkZW9fY291bnQ7XFxcXG52YXIgdmlkZW9zQ291bnQgPSBsaXN0LnZpZGVvc0NvdW50O1xcXFxudmFyIGxpa2VzQ291bnQgPSBsaXN0Lmxpa2VzQ291bnQ7XFxcXG5cXFxcbmlmIChsaXN0ICE9ICcnICYmIGxpc3QgIT0gbnVsbCAmJiBNWV9QQUdFID09IDEpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLFxcXFxuICAgICAgICB0aXRsZTogJ/Cfkanwn4+/4oCN8J+msicgKyBsaXN0Lm5pY2tuYW1lLFxcXFxuICAgICAgICBkZXNjOiBsaXN0LmZhbnMgKyAn57KJ5LidXFxcXFxcXFx0XFxcXFxcXFx0JyArIGxpc3QuZm9sbG93ZWQgKyAn5YWz5rOoXFxcXFxcXFx0XFxcXFxcXFx0JyArIGxpc3QuZmFidWxvdXMgKyAn6KKr6LWeXFxcXFxcXFxuJyArICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnICsgbGlzdC5uZXdzX251bSArICfluJblrZBcXFxcXFxcXG4nICsgJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOeCueWHu/CfkYbwn4+/5YmN5b6AJyxcXFxcbiAgICAgICAgaW1nOiBsaXN0LnRodW1iICsgaW1hZ2UsXFxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdzP2Z5cGFnZScsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBtb2Q6IFxcXFxcXFwibmV3c1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29kZTogXFxcXFxcXCJ0YXJnZXRfbmV3c1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6ICfluJblrZAnXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaycsXFxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgfSk7XFxcXG59XFxcXG5cXFxcbi8v5LuW5Lq65Li76aG15a2Q5p2/5Z2XXFxcXG52YXIgVHlwZWxpc3QgPSBbXFxcXG57dGl0bGU6ICfnsonkuJ3lm6LkuJPlsZ4nLCBjb3VudDogY2x1Yl92aWRlb19jb3VudCAsIGNvbF90eXBlOiAgJ3RleHRfaWNvbicsIG1vZDogJ2NsdWInLGNvZGU6ICd2aWRlb3MnfSxcXFxcbnt0aXRsZTogJ1Rh55qE5L2c5ZOBJywgY291bnQ6IHZpZGVvc0NvdW50ICwgY29sX3R5cGU6ICAndGV4dF9pY29uJywgbW9kOiAndXNlcicsIGNvZGU6ICd2aWRlb3MnfSxcXFxcbnt0aXRsZTogJ1Rh55qE5Zac5qyiJywgY291bnQ6IGxpa2VzQ291bnQgLCBjb2xfdHlwZTogICd0ZXh0X2ljb24nLCBtb2Q6ICd1c2VyJywgY29kZTogJ2xpa2VzJ31cXFxcbl07XFxcXG5mb3IgKHZhciBpIGluIFR5cGVsaXN0KSB7XFxcXG4gICAgdmFyIHJyID0ge1xcXFxuICAgICAgICBcXFxcXFxcIm9hdXRoX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJwd2FcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJvYXV0aF9pZFxcXFxcXFwiOiBcXFxcXFxcImd5blVHdEx2U0Roa0tBc2cxNzA0NTEzNzg5Mjg2XFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwibW9kXFxcXFxcXCI6IFR5cGVsaXN0W2ldLm1vZCxcXFxcbiAgICAgICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IFR5cGVsaXN0W2ldLmNvZGUsXFxcXG4gICAgICAgIFxcXFxcXFwicGFnZVxcXFxcXFwiOiAxLFxcXFxuICAgICAgICBcXFxcXFxcImxpbWl0XFxcXFxcXCI6IDMsXFxcXG4gICAgICAgIFxcXFxcXFwidXVpZFxcXFxcXFwiOiBnZXRNeVZhcigndXVpZCcsICcnKSxcXFxcbiAgICAgICAgXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjogMS43MDQ1NDY2Njc4MDZFMTJcXFxcbiAgICB9XFxcXG4gICAgdmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YVxcXFxcXFwiKS5lbmNyeXB0KHJyKTtcXFxcbiAgICB2YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxcXG4gICAgdmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcXFxuICAgIHZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXFxcbiAgICB2YXIgRGF0YSA9IHBvc3QoXFxcXFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJjbGllbnRcXFxcXFxcIjogXFxcXFxcXCJwd2FcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IHRpbWVzdGFtcCxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiZGF0YVxcXFxcXFwiOiBkYXRhLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJzaWduXFxcXFxcXCI6IHNpZ25cXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG4gICAgdmFyIGggPSBEYXRhO1xcXFxuICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcXFxuICAgIHZhciByID0gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YVxcXFxcXFwiKS5EZWNyeXB0KGRhdGEpO1xcXFxuICAgIGlmIChUeXBlbGlzdFtpXS5tb2QgPT0gXFxcXFxcXCJjbHViXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgdmFyIGxpc3QgPSByLmRhdGEuaXRlbTtcXFxcbiAgICB9IGVsc2UgaWYgKFR5cGVsaXN0W2ldLm1vZCA9PSBcXFxcXFxcInVzZXJcXFxcXFxcIikge1xcXFxuICAgICAgICB2YXIgbGlzdCA9IHIuZGF0YTtcXFxcbiAgICB9XFxcXG4gICAgaWYgKGxpc3QgIT0gJycgJiYgbGlzdCAhPSBudWxsICYmIE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFR5cGVsaXN0W2ldLmNvbF90eXBlLFxcXFxuICAgICAgICAgICAgdGl0bGU6ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuc3Ryb25nUihUeXBlbGlzdFtpXS50aXRsZSArIFR5cGVsaXN0W2ldLmNvdW50ICsgJ+mDqCcsICdGRjY2OTknKSxcXFxcbiAgICAgICAgICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb25fcmlnaHQ1JyxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS91c2VybGlzdD9meXBhZ2UnLFxcXFxuICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICBtb2Q6IFR5cGVsaXN0W2ldLm1vZCxcXFxcbiAgICAgICAgICAgICAgICBjb2RlOiBUeXBlbGlzdFtpXS5jb2RlLFxcXFxuICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogVHlwZWxpc3RbaV0udGl0bGVcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGZvciAodmFyIGogaW4gbGlzdCkge1xcXFxuICAgICAgICAgICAgdmFyIHBsYXl1cmwgPSBsaXN0W2pdLnBsYXlVcmw7XFxcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBsaXN0W2pdLnRpdGxlO1xcXFxuICAgICAgICAgICAgdmFyIGRlc2MgPSAnXFxcXFxcXFx08J+UpScgKyBsaXN0W2pdLnBsYXlfY291bnQ7XFxcXG4gICAgICAgICAgICB2YXIgaW1hZ2V1cmwgPSBsaXN0W2pdLnRodW1iSW1nO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IGNvbF90eXBlLFxcXFxuICAgICAgICAgICAgICAgIHVybDogcGxheXVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLFxcXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufVxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuKRoemhtemdoi3nlKjmiLct5biW5a2Q5YiX6KGoXFxcIixcXFwicGF0aFxcXCI6XFxcIm5ld3NcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIHBhZ2UgPSBNWV9QQUdFO1xcXFxudmFyIG1vZCA9IE1ZX1BBUkFNUy5tb2Q7XFxcXG52YXIgY29kZSA9IE1ZX1BBUkFNUy5jb2RlO1xcXFxudmFyIGNvbF90eXBlID0gTVlfUEFSQU1TLmNvbF90eXBlO1xcXFxudmFyIHJyID0ge1xcXFxuICAgIFxcXFxcXFwib2F1dGhfdHlwZVxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfaWRcXFxcXFxcIjogXFxcXFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogbW9kLFxcXFxuICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBjb2RlLFxcXFxuICAgIFxcXFxcXFwicGFnZVxcXFxcXFwiOiBwYWdlLFxcXFxuICAgIFxcXFxcXFwibGltaXRcXFxcXFxcIjogMTUsXFxcXG4gICAgXFxcXFxcXCJ0YXJnZXRfdXVpZFxcXFxcXFwiOiBnZXRNeVZhcigndXVpZCcsICcnKSxcXFxcbiAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMlxcXFxufVxcXFxuXFxcXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhXFxcXFxcXCIpLmVuY3J5cHQocnIpO1xcXFxuXFxcXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxcXG52YXIgZGF0YSA9IGVuY3J5cHRkYXRhLmRhdGE7XFxcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxcXG5cXFxcbnZhciBEYXRhID0gcG9zdChcXFxcXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFxcXFxcIiwge1xcXFxuICAgIGJvZHk6IHtcXFxcbiAgICAgICAgXFxcXFxcXCJjbGllbnRcXFxcXFxcIjogXFxcXFxcXCJwd2FcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjogdGltZXN0YW1wLFxcXFxuICAgICAgICBcXFxcXFxcImRhdGFcXFxcXFxcIjogZGF0YSxcXFxcbiAgICAgICAgXFxcXFxcXCJzaWduXFxcXFxcXCI6IHNpZ25cXFxcbiAgICB9XFxcXG59KVxcXFxudmFyIGggPSBEYXRhO1xcXFxuXFxcXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YT9ydWxlPVxcXFxcXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxcXG5cXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcXFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhXFxcXFxcXCIpLkRlY3J5cHQoZGF0YSk7XFxcXG52YXIgbGlzdCA9IHIuZGF0YTtcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxuICAgIHZhciBpZCA9IGxpc3RbaV0uaWQ7XFxcXG4gICAgdmFyIHRpdGxlID0gbGlzdFtpXS5jb250ZW50O1xcXFxuICAgIHZhciBkZXNjID0gbGlzdFtpXS5jcmVhdGVkX2F0ICsgJ+WPkeW4g1xcXFxcXFxcdFxcXFxcXFxcdCcgKyBsaXN0W2ldLnZpZXdfbnVtICsgJ+a1j+iniFxcXFxcXFxcdFxcXFxcXFxcdCcgKyBsaXN0W2ldLmxpa2VfbnVtICsgJ+eCuei1nic7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICBjb2xfdHlwZTogY29sX3R5cGUsXFxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdzZGV0YWlsJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIG5ld3NfaWQ6IGlkLFxcXFxuICAgICAgICAgICAgbW9kOiBcXFxcXFxcIm5ld3NcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvZGU6IFxcXFxcXFwiZGV0YWlsX3YxXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IFxcXFxcXFwi5biW5a2Q6K+m5oOFXFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxufVxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi4pGh6aG16Z2iLeeUqOaIty3luJblrZDor6bmg4VcXFwiLFxcXCJwYXRoXFxcIjpcXFwibmV3c2RldGFpbFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxcXG52YXIgbW9kID0gTVlfUEFSQU1TLm1vZDtcXFxcbnZhciBjb2RlID0gTVlfUEFSQU1TLmNvZGU7XFxcXG52YXIgbmV3c19pZCA9IE1ZX1BBUkFNUy5uZXdzX2lkO1xcXFxudmFyIHJyID0ge1xcXFxuICAgIFxcXFxcXFwib2F1dGhfdHlwZVxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfaWRcXFxcXFxcIjogXFxcXFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogbW9kLFxcXFxuICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBjb2RlLFxcXFxuICAgIFxcXFxcXFwibmV3c19pZFxcXFxcXFwiOiBuZXdzX2lkLFxcXFxuICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IDEuNzA0NTQ2NjY3ODA2RTEyXFxcXG59XFxcXG5cXFxcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuZW5jcnlwdChycik7XFxcXG5cXFxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXFxcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXFxcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXFxcblxcXFxudmFyIERhdGEgPSBwb3N0KFxcXFxcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXFxcXFwiLCB7XFxcXG4gICAgYm9keToge1xcXFxuICAgICAgICBcXFxcXFxcImNsaWVudFxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiB0aW1lc3RhbXAsXFxcXG4gICAgICAgIFxcXFxcXFwiZGF0YVxcXFxcXFwiOiBkYXRhLFxcXFxuICAgICAgICBcXFxcXFxcInNpZ25cXFxcXFxcIjogc2lnblxcXFxuICAgIH1cXFxcbn0pXFxcXG52YXIgaCA9IERhdGE7XFxcXG5cXFxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhP3J1bGU9XFxcXFxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXFxcblxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxcXG52YXIgciA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuRGVjcnlwdChkYXRhKTtcXFxcbnZhciBkZXRhaWwgPSByLmRhdGEuZGV0YWlsO1xcXFxudmFyIGNvbW1lbnRfbGlzdCA9IHIuZGF0YS5jb21tZW50X2xpc3Q7XFxcXG52YXIgdGl0bGUgPSBkZXRhaWwudGl0bGU7XFxcXG52YXIgY3JlYXRlZF9hdCA9IGRldGFpbC5jcmVhdGVkX2F0O1xcXFxudmFyIGNvbnRlbnQgPSBkZXRhaWwuY29udGVudDtcXFxcbnZhciBtZWRpYWxpc3QgPSBkZXRhaWwubWVkaWFzO1xcXFxudmFyIGNvbW1lbnRfbnVtID0gZGV0YWlsLmNvbW1lbnRfbnVtO1xcXFxudmFyIG5pY2tOYW1lID0gZGV0YWlsLm5pY2tuYW1lO1xcXFxudmFyIHV1aWQgPSBkZXRhaWwudXVpZDtcXFxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbG9uZ0NsaWNrJykpLnJ1bGUpXFxcXG4vL+agh+mimFxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+WPkeW4g+S6jjonICsgY3JlYXRlZF9hdCArICdcXFxcXFxcXHTinI3wn4+977iPJyArIHRpdGxlLFxcXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbn0pO1xcXFxuXFxcXG4vL+ato+aWh1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogY29udGVudCxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG59KTtcXFxcblxcXFxuLy/op4bpopFcXFxcbmZvciAodmFyIGkgaW4gbWVkaWFsaXN0KSB7XFxcXG4gICAgdmFyIGltYWdldXJsID0gbWVkaWFsaXN0W2ldLm1lZGlhX3VybDtcXFxcbiAgICBpZiAoaW1hZ2V1cmwuaW5jbHVkZXMoJ20zdTgnKSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfop4bpopHilrbvuI8nICsgaSxcXFxcbiAgICAgICAgICAgIHVybDogaW1hZ2V1cmwsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy/lm77niYdcXFxcbmZvciAodmFyIGkgaW4gbWVkaWFsaXN0KSB7XFxcXG4gICAgdmFyIGltYWdldXJsID0gbWVkaWFsaXN0W2ldLm1lZGlhX3VybDtcXFxcbiAgICBpZiAoIWltYWdldXJsLmluY2x1ZGVzKCdtM3U4JykpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIGltZzogaW1hZ2V1cmwgKyBpbWFnZSxcXFxcbiAgICAgICAgICAgIHVybDogaW1hZ2V1cmwgKyBpbWFnZSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAoc3RvcmFnZTAuZ2V0SXRlbSgnQ29sX3RleHQnLCAnJykgPT0gJycpID8gJ3BpY18xX2Z1bGwnIDogc3RvcmFnZTAuZ2V0SXRlbSgnQ29sX3RleHQnLCAnJyksXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8v6K+E6K665Yy6XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn5YWo6YOo6K+E6K66XFxcXFxcXFx0KCcgKyBjb21tZW50X251bSArICcpJyxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxcXG59KTtcXFxcbmZvciAodmFyIGkgaW4gY29tbWVudF9saXN0KSB7XFxcXG4gICAgdmFyIG5pY2tuYW1lID0gY29tbWVudF9saXN0W2ldLm5pY2tuYW1lO1xcXFxuICAgIHZhciBzZXhUeXBlID0gY29tbWVudF9saXN0W2ldLnNleFR5cGU7XFxcXG4gICAgdmFyIHNleCA9IChzZXhUeXBlID09ICcwJykgPyAnXFxcXFxcXFx08J+RqfCfj71cXFxcXFxcXHQnIDogJ1xcXFxcXFxcdPCfkajwn4+9XFxcXFxcXFx0JztcXFxcbiAgICB2YXIgY2l0eW5hbWUgPSBjb21tZW50X2xpc3RbaV0uY2l0eW5hbWU7XFxcXG4gICAgdmFyIGNyZWF0ZWRfYXQgPSBjb21tZW50X2xpc3RbaV0uY3JlYXRlZF9hdDtcXFxcbiAgICB2YXIgY29tbWVudCA9IGNvbW1lbnRfbGlzdFtpXS5jb21tZW50O1xcXFxuICAgIHZhciB0aHVtYiA9IGNvbW1lbnRfbGlzdFtpXS50aHVtYjtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogbmlja25hbWUgKyBzZXgsXFxcXG4gICAgICAgIGRlc2M6IGNpdHluYW1lICsgJ8K3XFxcXFxcXFx0JyArIGNyZWF0ZWRfYXQsXFxcXG4gICAgICAgIGltZzogdGh1bWIgKyBpbWFnZSxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBjb21tZW50LFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgfSk7XFxcXG59XFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLikaDpobXpnaIt57G75Z6L5LqMXFxcIixcXFwicGF0aFxcXCI6XFxcInR5cGUyXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBwYWdlID0gTVlfUEFHRTtcXFxcbnZhciBQYWdlID0gZ2V0TXlWYXIoJ3BhZ2UnLCAnMCcpO1xcXFxudmFyIGlkID0gZ2V0TXlWYXIoJ2lkJyk7XFxcXG52YXIgcnIgPSB7XFxcXG4gICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IFxcXFxcXFwiZ2V0Q29uc3RydWN0QnlJZFxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgXFxcXFxcXCJsaW1pdFxcXFxcXFwiOiAxMixcXFxcbiAgICBcXFxcXFxcIm1vZFxcXFxcXFwiOiBcXFxcXFxcImVsZW1lbnRcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcIm9hdXRoX2lkXFxcXFxcXCI6IFxcXFxcXFwiZ3luVUd0THZTRGhrS0FzZzE3MDQ1MTM3ODkyODZcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcIm9hdXRoX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJwd2FcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogKFBhZ2UgPT0gMCkgPyBwYWdlIDogUGFnZSxcXFxcbiAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiAxLjcwNDU0NjY2NzgwNkUxMixcXFxcbiAgICBcXFxcXFxcInZlcnNpb25cXFxcXFxcIjogXFxcXFxcXCI0LjUuMFxcXFxcXFwiXFxcXG59XFxcXG5jbGVhck15VmFyKCdwYWdlJyk7XFxcXG52YXIgZW5jcnlwdGRhdGEgPSAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhXFxcXFxcXCIpLmVuY3J5cHQocnIpO1xcXFxuXFxcXG52YXIgdGltZXN0YW1wID0gZW5jcnlwdGRhdGEudGltZXN0YW1wLnRvU3RyaW5nKCk7XFxcXG52YXIgZGF0YSA9IGVuY3J5cHRkYXRhLmRhdGE7XFxcXG52YXIgc2lnbiA9IGVuY3J5cHRkYXRhLnNpZ247XFxcXG5cXFxcbnZhciBEYXRhID0gcG9zdChcXFxcXFxcImh0dHBzOi8vendzZnh2LmJtYWZkeHQuY29tL3B3YS5waHBcXFxcXFxcIiwge1xcXFxuICAgIGJvZHk6IHtcXFxcbiAgICAgICAgXFxcXFxcXCJjbGllbnRcXFxcXFxcIjogXFxcXFxcXCJwd2FcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjogdGltZXN0YW1wLFxcXFxuICAgICAgICBcXFxcXFxcImRhdGFcXFxcXFxcIjogZGF0YSxcXFxcbiAgICAgICAgXFxcXFxcXCJzaWduXFxcXFxcXCI6IHNpZ25cXFxcbiAgICB9XFxcXG59KVxcXFxudmFyIGggPSBEYXRhO1xcXFxuXFxcXG5sZXQgaW1hZ2UgPSAkKCkuaW1hZ2UoKCkgPT4gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YT9ydWxlPVxcXFxcXFwiICsgTVlfVElUTEUpLmRlY3J5cHQoKSk7XFxcXG5cXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcXFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhXFxcXFxcXCIpLkRlY3J5cHQoZGF0YSk7XFxcXG52YXIgTGlzdCA9IHIuZGF0YTtcXFxcbmZvciAodmFyIGkgaW4gTGlzdCkge1xcXFxuICAgIHZhciB0aXRsZSA9IExpc3RbaV0udGl0bGU7XFxcXG4gICAgdmFyIGlkID0gTGlzdFtpXS5pZDtcXFxcbiAgICB2YXIgbGlzdCA9IExpc3RbaV0ubGlzdDtcXFxcbiAgICBpZiAoIXRpdGxlLmluY2x1ZGVzKCdiYW5uZXInKSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcXFxuICAgICAgICAgICAgdGl0bGU6ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuc3Ryb25nUih0aXRsZSwgJ0ZGNjY5OScpLFxcXFxuICAgICAgICAgICAgaW1nOiAnaGlrZXI6Ly9pbWFnZXMvaWNvbl9yaWdodDUnLFxcXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3BsYXlsaXN0P2Z5cGFnZScsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcXFxcbiAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBmb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IGxpc3RbaV0udGl0bGU7XFxcXG4gICAgICAgICAgICB2YXIgcGxheVVybCA9IGxpc3RbaV0ucGxheVVybDtcXFxcbiAgICAgICAgICAgIHZhciBuaWNrTmFtZSA9IGxpc3RbaV0ubmlja05hbWU7XFxcXG4gICAgICAgICAgICB2YXIgdXVpZCA9IGxpc3RbaV0udXVpZDtcXFxcbiAgICAgICAgICAgIHZhciBkZXNjID0gJ/CflKUnICsgbGlzdFtpXS5wbGF5X2NvdW50ICsgJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKPse+4jycgKyBsaXN0W2ldLmR1cmF0aW9uU3RyO1xcXFxuICAgICAgICAgICAgdmFyIGltYWdldXJsID0gbGlzdFtpXS50aHVtYkltZztcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWFnZXVybCArIGltYWdlLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAoc3RvcmFnZTAuZ2V0SXRlbSgnQ29sMicsICcnKSA9PSAnJykgPyAnbW92aWVfMicgOiBzdG9yYWdlMC5nZXRJdGVtKCdDb2wyJywgJycpLFxcXFxuICAgICAgICAgICAgICAgIHVybDogcGxheVVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9sb25nQ2xpY2syJykpLnJ1bGUpXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn1cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLikaDpobXpnaIt57G75Z6L5LqMX+S6jOe6p1xcXCIsXFxcInBhdGhcXFwiOlxcXCJwbGF5bGlzdFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxcXG52YXIgUGFnZSA9IGdldE15VmFyKCdwYWdlJywgJzAnKTtcXFxcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDtcXFxcbnZhciB0eXBlbGlzdCA9IFt7XFxcXG4gICAgdGl0bGU6ICfmnIDmlrAnLFxcXFxuICAgIHR5cGU6ICduZXcnXFxcXG59LCB7XFxcXG4gICAgdGl0bGU6ICfmnIDng60nLFxcXFxuICAgIHR5cGU6ICdob3QnXFxcXG59XTtcXFxcblxcXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuQ2F0ZWdvcnkodHlwZWxpc3QsMCxkKTtcXFxcbn1cXFxcbnZhciByciA9IHtcXFxcbiAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogXFxcXFxcXCJnZXRFbGVtZW50SXRlbWJ5SWRcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImlkXFxcXFxcXCI6IGlkLFxcXFxuICAgIFxcXFxcXFwibGltaXRcXFxcXFxcIjogMTIsXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogXFxcXFxcXCJlbGVtZW50XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0eXBlXFxcXFxcXCI6IGdldE15VmFyKCd0eXBlJywgJ25ldycpLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfaWRcXFxcXFxcIjogXFxcXFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfdHlwZVxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicGFnZVxcXFxcXFwiOiAoUGFnZSA9PSAwKSA/IHBhZ2UgOiBQYWdlLFxcXFxuICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IDEuNzA0NTQ2NjY3ODA2RTEyLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCJcXFxcbn1cXFxcbmNsZWFyTXlWYXIoJ3BhZ2UnKTtcXFxcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuZW5jcnlwdChycik7XFxcXG5cXFxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXFxcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXFxcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXFxcblxcXFxudmFyIERhdGEgPSBwb3N0KFxcXFxcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXFxcXFwiLCB7XFxcXG4gICAgYm9keToge1xcXFxuICAgICAgICBcXFxcXFxcImNsaWVudFxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiB0aW1lc3RhbXAsXFxcXG4gICAgICAgIFxcXFxcXFwiZGF0YVxcXFxcXFwiOiBkYXRhLFxcXFxuICAgICAgICBcXFxcXFxcInNpZ25cXFxcXFxcIjogc2lnblxcXFxuICAgIH1cXFxcbn0pXFxcXG52YXIgaCA9IERhdGE7XFxcXG5cXFxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhP3J1bGU9XFxcXFxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXFxcblxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxcXG52YXIgciA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuRGVjcnlwdChkYXRhKTtcXFxcblxcXFxudmFyIGxpc3QgPSByLmRhdGEubGlzdDtcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxuICAgIHZhciBwbGF5dXJsID0gbGlzdFtpXS5wbGF5VXJsO1xcXFxuICAgIHZhciB0aXRsZSA9IGxpc3RbaV0udGl0bGU7XFxcXG4gICAgdmFyIG5pY2tOYW1lID0gbGlzdFtpXS5uaWNrTmFtZTtcXFxcbiAgICB2YXIgdXVpZCA9IGxpc3RbaV0udXVpZDtcXFxcbiAgICB2YXIgZGVzYyA9ICdcXFxcXFxcXHTwn5SlJyArIGxpc3RbaV0ucGxheV9jb3VudCArICdcXFxcXFxcXHTij7HvuI8nICsgbGlzdFtpXS5kdXJhdGlvblN0cjtcXFxcbiAgICB2YXIgaW1hZ2V1cmwgPSBsaXN0W2ldLnRodW1iSW1nOyBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xvbmdDbGljaycpKS5ydWxlKVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgZGVzYzogZGVzYyxcXFxcbiAgICAgICAgaW1nOiBpbWFnZXVybCArIGltYWdlLFxcXFxuICAgICAgICBjb2xfdHlwZTogKHN0b3JhZ2UwLmdldEl0ZW0oJ0NvbF9tZWRpYScsICcnKSA9PSAnJykgPyAnbW92aWVfMicgOiBzdG9yYWdlMC5nZXRJdGVtKCdDb2xfbWVkaWEnLCAnJyksXFxcXG4gICAgICAgIHVybDogcGxheXVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcXFxuICAgICAgICBleHRyYTogeyBcXFxcbiAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMVxcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG59XFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLikajlhajpg6jpobVfbG9uZ0NsaWNrXFxcIixcXFwicGF0aFxcXCI6XFxcImxvbmdDbGlja1xcXCIsXFxcInJ1bGVcXFwiOlxcXCIvL2NvbF90eXBl5aqS5L2T5pi+56S65qC35byPXFxcXG52YXIgbG9uZ0NsaWNrMSA9IFt7XFxcXG4gICAgdGl0bGU6ICfmoLflvI8nLFxcXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgdmFyIFR5cGUgPSBbXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMlxcXFxcXFwiLCBcXFxcXFxcIm1vdmllXzNcXFxcXFxcIiwgXFxcXFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFxcXFxcIiwgXFxcXFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcXFxcXCIsIFxcXFxcXFwicGljXzFcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMlxcXFxcXFwiLCBcXFxcXFxcInBpY18zXFxcXFxcXCIsIFxcXFxcXFwicGljXzFfZnVsbFxcXFxcXFwiLCBcXFxcXFxcInBpY18xX2NlbnRlclxcXFxcXFwiLCBcXFxcXFxcInBpY18xX2NhcmRcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMl9jYXJkXFxcXFxcXCIsIFxcXFxcXFwicGljXzNfc3F1YXJlXFxcXFxcXCIsIFxcXFxcXFwiY2FyZF9waWNfMVxcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzJcXFxcXFxcIiwgXFxcXFxcXCJjYXJkX3BpY18zXFxcXFxcXCIsIFxcXFxcXFwiY2FyZF9waWNfM19jZW50ZXJcXFxcXFxcIiwgXFxcXFxcXCJsb25nX3RleHRcXFxcXFxcIiwgXFxcXFxcXCJyaWNoX3RleHRcXFxcXFxcIiwgXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCIsIFxcXFxcXFwiZmxleF9idXR0b25cXFxcXFxcIl07XFxcXG4gICAgICAgIHZhciBUeXBlMSA9IFtdO1xcXFxuICAgICAgICBmb3IgKHZhciBpIGluIFR5cGUpIHtcXFxcbiAgICAgICAgICAgIHZhciBjb2wgPSBzdG9yYWdlMC5nZXRJdGVtKCd0eXBlJywgJycpO1xcXFxuICAgICAgICAgICAgdmFyIENvbCA9IChjb2wuaW5jbHVkZXMoJ/CfkYnwn4+9JykpID8gY29sLnNwbGl0KCfwn5GJ8J+PvScpWzFdIDogY29sO1xcXFxuICAgICAgICAgICAgaWYgKFR5cGVbaV0gPT0gQ29sKSB7XFxcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9ICfwn5GJ8J+PvScgKyBUeXBlW2ldO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBUeXBlW2ldID0gVHlwZVtpXTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIFR5cGUxW2ldID0gVHlwZVtpXTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBzaG93U2VsZWN0T3B0aW9ucyh7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLpgInmi6nnsbvlnotcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbDogMixcXFxcbiAgICAgICAgICAgIG9wdGlvbnM6IFR5cGUxLFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ3R5cGUnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxcXG4gICAgICAgICAgICAgICAgdmFyIENvbCA9IChjb2wuaW5jbHVkZXMoJ/CfkYnwn4+9JykpID8gY29sLnNwbGl0KCfwn5GJ8J+PvScpWzFdIDogY29sO1xcXFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ0NvbF9tZWRpYScsIENvbCk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICB9KX0se1xcXFxuICAgIHRpdGxlOiAn5pCc57SiJyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NlYXJjaCc7XFxcXG4gICAgfSksXFxcXG59LHtcXFxcbiAgICB0aXRsZTogJ+mmlumhtScsXFxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiAn56ysJyArIE1ZX1BBR0UgKyAn6aG1JyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgfSksXFxcXG59LCB7XFxcXG4gICAgdGl0bGU6ICfot7PovawnLFxcXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICQoJycpLmlucHV0KCgpID0+IHtcXFxcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQ7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcigncGFnZScsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiBuaWNrTmFtZSxcXFxcbiAgICBqczogJC50b1N0cmluZygodXVpZCkgPT4ge1xcXFxuICAgICAgICBwdXRNeVZhcigndXVpZCcsIHV1aWQpO1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS91c2VyI2ltbWVyc2l2ZVRoZW1lIyc7XFxcXG4gICAgfSwgdXVpZCksXFxcXG59XVxcXFxuc3RvcmFnZTAuZ2V0SXRlbSgnbG9uZ0NsaWNrMScsIGxvbmdDbGljazEpO1xcXFxuXFxcXG4vL2NvbF90eXBl5paH5pys5pi+56S65qC35byPXFxcXG52YXIgbG9uZ0NsaWNrMiA9IFt7XFxcXG4gICAgdGl0bGU6ICfmoLflvI8nLFxcXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgdmFyIFR5cGUgPSBbXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMlxcXFxcXFwiLCBcXFxcXFxcIm1vdmllXzNcXFxcXFxcIiwgXFxcXFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFxcXFxcIiwgXFxcXFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcXFxcXCIsIFxcXFxcXFwicGljXzFcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMlxcXFxcXFwiLCBcXFxcXFxcInBpY18zXFxcXFxcXCIsIFxcXFxcXFwicGljXzFfZnVsbFxcXFxcXFwiLCBcXFxcXFxcInBpY18xX2NlbnRlclxcXFxcXFwiLCBcXFxcXFxcInBpY18xX2NhcmRcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMl9jYXJkXFxcXFxcXCIsIFxcXFxcXFwicGljXzNfc3F1YXJlXFxcXFxcXCIsIFxcXFxcXFwiY2FyZF9waWNfMVxcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzJcXFxcXFxcIiwgXFxcXFxcXCJjYXJkX3BpY18zXFxcXFxcXCIsIFxcXFxcXFwiY2FyZF9waWNfM19jZW50ZXJcXFxcXFxcIiwgXFxcXFxcXCJsb25nX3RleHRcXFxcXFxcIiwgXFxcXFxcXCJyaWNoX3RleHRcXFxcXFxcIiwgXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCIsIFxcXFxcXFwiZmxleF9idXR0b25cXFxcXFxcIl07XFxcXG4gICAgICAgIHZhciBUeXBlMSA9IFtdO1xcXFxuICAgICAgICBmb3IgKHZhciBpIGluIFR5cGUpIHtcXFxcbiAgICAgICAgICAgIHZhciBjb2wgPSBzdG9yYWdlMC5nZXRJdGVtKCd0eXBlJywgJycpO1xcXFxuICAgICAgICAgICAgdmFyIENvbCA9IChjb2wuaW5jbHVkZXMoJ/CfkYnwn4+9JykpID8gY29sLnNwbGl0KCfwn5GJ8J+PvScpWzFdIDogY29sO1xcXFxuICAgICAgICAgICAgaWYgKFR5cGVbaV0gPT0gQ29sKSB7XFxcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9ICfwn5GJ8J+PvScgKyBUeXBlW2ldO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBUeXBlW2ldID0gVHlwZVtpXTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIFR5cGUxW2ldID0gVHlwZVtpXTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBzaG93U2VsZWN0T3B0aW9ucyh7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLpgInmi6nnsbvlnotcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbDogMixcXFxcbiAgICAgICAgICAgIG9wdGlvbnM6IFR5cGUxLFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ3R5cGUnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGNvbCA9IHN0b3JhZ2UwLmdldEl0ZW0oJ3R5cGUnLCAnJyk7XFxcXG4gICAgICAgICAgICAgICAgdmFyIENvbCA9IChjb2wuaW5jbHVkZXMoJ/CfkYnwn4+9JykpID8gY29sLnNwbGl0KCfwn5GJ8J+PvScpWzFdIDogY29sO1xcXFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ0NvbF90ZXh0JywgQ29sKTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgIH0pXFxcXG59LHtcXFxcbiAgICB0aXRsZTogbmlja05hbWUsXFxcXG4gICAganM6ICQudG9TdHJpbmcoKHV1aWQpID0+IHtcXFxcbiAgICAgICAgcHV0TXlWYXIoJ3V1aWQnLCB1dWlkKTtcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvdXNlciNpbW1lcnNpdmVUaGVtZSMnO1xcXFxuICAgIH0sIHV1aWQpLFxcXFxufV1cXFxcbnN0b3JhZ2UwLnNldEl0ZW0oJ2xvbmdDbGljazInLCBsb25nQ2xpY2syKTtcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuKRqOexu+Wei+S6jF9sb25nQ2xpY2tcXFwiLFxcXCJwYXRoXFxcIjpcXFwibG9uZ0NsaWNrMlxcXCIsXFxcInJ1bGVcXFwiOlxcXCIvL2NvbF90eXBl5pi+56S65qC35byPXFxcXG5be1xcXFxuICAgIHRpdGxlOiAn5qC35byPJyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHZhciBUeXBlID0gW1xcXFxcXFwibW92aWVfMVxcXFxcXFwiLCBcXFxcXFxcIm1vdmllXzJcXFxcXFxcIiwgXFxcXFxcXCJtb3ZpZV8zXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMV9sZWZ0X3BpY1xcXFxcXFwiLCBcXFxcXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXFxcXFwiLCBcXFxcXFxcInBpY18xXFxcXFxcXCIsIFxcXFxcXFwicGljXzJcXFxcXFxcIiwgXFxcXFxcXCJwaWNfM1xcXFxcXFwiLCBcXFxcXFxcInBpY18xX2Z1bGxcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMV9jZW50ZXJcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMV9jYXJkXFxcXFxcXCIsIFxcXFxcXFwicGljXzJfY2FyZFxcXFxcXFwiLCBcXFxcXFxcInBpY18zX3NxdWFyZVxcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzFcXFxcXFxcIiwgXFxcXFxcXCJjYXJkX3BpY18yXFxcXFxcXCIsIFxcXFxcXFwiY2FyZF9waWNfM1xcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzNfY2VudGVyXFxcXFxcXCIsIFxcXFxcXFwibG9uZ190ZXh0XFxcXFxcXCIsIFxcXFxcXFwicmljaF90ZXh0XFxcXFxcXCIsIFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiLCBcXFxcXFxcImZsZXhfYnV0dG9uXFxcXFxcXCJdO1xcXFxuICAgICAgICB2YXIgVHlwZTEgPSBbXTtcXFxcbiAgICAgICAgZm9yICh2YXIgaSBpbiBUeXBlKSB7XFxcXG4gICAgICAgICAgICB2YXIgY29sID0gc3RvcmFnZTAuZ2V0SXRlbSgndHlwZScsICcnKTtcXFxcbiAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXFxcbiAgICAgICAgICAgIGlmIChUeXBlW2ldID09IENvbCkge1xcXFxuICAgICAgICAgICAgICAgIFR5cGVbaV0gPSAn8J+RifCfj70nICsgVHlwZVtpXTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9IFR5cGVbaV07XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBUeXBlMVtpXSA9IFR5cGVbaV07XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgc2hvd1NlbGVjdE9wdGlvbnMoe1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6YCJ5oup57G75Z6LXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2w6IDIsXFxcXG4gICAgICAgICAgICBvcHRpb25zOiBUeXBlMSxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCd0eXBlJywgaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgIHZhciBjb2wgPSBzdG9yYWdlMC5nZXRJdGVtKCd0eXBlJywgJycpO1xcXFxuICAgICAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXFxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdDb2wyJywgQ29sKTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiAn5pCc57SiJyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NlYXJjaCc7XFxcXG4gICAgfSksXFxcXG59LHtcXFxcbiAgICB0aXRsZTogJ+mmlumhtScsXFxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiAn56ysJyArIE1ZX1BBR0UgKyAn6aG1JyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgfSksXFxcXG59LCB7XFxcXG4gICAgdGl0bGU6ICfot7PovawnLFxcXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICQoJycpLmlucHV0KCgpID0+IHtcXFxcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQ7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcigncGFnZScsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiBuaWNrTmFtZSxcXFxcbiAgICBqczogJC50b1N0cmluZygodXVpZCkgPT4ge1xcXFxuICAgICAgICBwdXRNeVZhcigndXVpZCcsIHV1aWQpO1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS91c2VyI2ltbWVyc2l2ZVRoZW1lIyc7XFxcXG4gICAgfSwgdXVpZCksXFxcXG59XVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuKRqOexu+Wei+S4gF9sb25nQ2xpY2tcXFwiLFxcXCJwYXRoXFxcIjpcXFwibG9uZ0NsaWNrMVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIvL2NvbF90eXBl5pi+56S65qC35byPXFxcXG5be1xcXFxuICAgIHRpdGxlOiAn5qC35byPJyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHZhciBUeXBlID0gW1xcXFxcXFwibW92aWVfMVxcXFxcXFwiLCBcXFxcXFxcIm1vdmllXzJcXFxcXFxcIiwgXFxcXFxcXCJtb3ZpZV8zXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMV9sZWZ0X3BpY1xcXFxcXFwiLCBcXFxcXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXFxcXFwiLCBcXFxcXFxcInBpY18xXFxcXFxcXCIsIFxcXFxcXFwicGljXzJcXFxcXFxcIiwgXFxcXFxcXCJwaWNfM1xcXFxcXFwiLCBcXFxcXFxcInBpY18xX2Z1bGxcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMV9jZW50ZXJcXFxcXFxcIiwgXFxcXFxcXCJwaWNfMV9jYXJkXFxcXFxcXCIsIFxcXFxcXFwicGljXzJfY2FyZFxcXFxcXFwiLCBcXFxcXFxcInBpY18zX3NxdWFyZVxcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzFcXFxcXFxcIiwgXFxcXFxcXCJjYXJkX3BpY18yXFxcXFxcXCIsIFxcXFxcXFwiY2FyZF9waWNfM1xcXFxcXFwiLCBcXFxcXFxcImNhcmRfcGljXzNfY2VudGVyXFxcXFxcXCIsIFxcXFxcXFwibG9uZ190ZXh0XFxcXFxcXCIsIFxcXFxcXFwicmljaF90ZXh0XFxcXFxcXCIsIFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiLCBcXFxcXFxcImZsZXhfYnV0dG9uXFxcXFxcXCJdO1xcXFxuICAgICAgICB2YXIgVHlwZTEgPSBbXTtcXFxcbiAgICAgICAgZm9yICh2YXIgaSBpbiBUeXBlKSB7XFxcXG4gICAgICAgICAgICB2YXIgY29sID0gc3RvcmFnZTAuZ2V0SXRlbSgndHlwZScsICcnKTtcXFxcbiAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXFxcbiAgICAgICAgICAgIGlmIChUeXBlW2ldID09IENvbCkge1xcXFxuICAgICAgICAgICAgICAgIFR5cGVbaV0gPSAn8J+RifCfj70nICsgVHlwZVtpXTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgVHlwZVtpXSA9IFR5cGVbaV07XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBUeXBlMVtpXSA9IFR5cGVbaV07XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgc2hvd1NlbGVjdE9wdGlvbnMoe1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6YCJ5oup57G75Z6LXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2w6IDIsXFxcXG4gICAgICAgICAgICBvcHRpb25zOiBUeXBlMSxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCd0eXBlJywgaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgIHZhciBjb2wgPSBzdG9yYWdlMC5nZXRJdGVtKCd0eXBlJywgJycpO1xcXFxuICAgICAgICAgICAgICAgIHZhciBDb2wgPSAoY29sLmluY2x1ZGVzKCfwn5GJ8J+PvScpKSA/IGNvbC5zcGxpdCgn8J+RifCfj70nKVsxXSA6IGNvbDtcXFxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdDb2wxJywgQ29sKTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiAn5pCc57SiJyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NlYXJjaCc7XFxcXG4gICAgfSksXFxcXG59LHtcXFxcbiAgICB0aXRsZTogJ+mmlumhtScsXFxcXG4gICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiAn56ysJyArIE1ZX1BBR0UgKyAn6aG1JyxcXFxcbiAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgfSksXFxcXG59LCB7XFxcXG4gICAgdGl0bGU6ICfot7PovawnLFxcXFxuICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICQoJycpLmlucHV0KCgpID0+IHtcXFxcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQ7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcigncGFnZScsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH0pLFxcXFxufSwge1xcXFxuICAgIHRpdGxlOiBuaWNrTmFtZSxcXFxcbiAgICBqczogJC50b1N0cmluZygodXVpZCkgPT4ge1xcXFxuICAgICAgICBwdXRNeVZhcigndXVpZCcsIHV1aWQpO1xcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS91c2VyI2ltbWVyc2l2ZVRoZW1lIyc7XFxcXG4gICAgfSwgdXVpZCksXFxcXG59XVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuKRoumhtemdoi3mkJzntKJcXFwiLFxcXCJwYXRoXFxcIjpcXFwic2VhcmNoXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbnNldFBhZ2VUaXRsZSgn5pCc57Si6aG1Jyk7XFxcXG52YXIgcnIgPSB7XFxcXG4gICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IFxcXFxcXFwic2VhcmNoSW5kZXhcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcIm1vZFxcXFxcXFwiOiBcXFxcXFxcImluZGV4XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJvYXV0aF9pZFxcXFxcXFwiOiBcXFxcXFxcImd5blVHdEx2U0Roa0tBc2cxNzA0NTEzNzg5Mjg2XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJvYXV0aF90eXBlXFxcXFxcXCI6IFxcXFxcXFwicHdhXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjogMS43MDQ1NDY2Njc4MDZFMTIsXFxcXG4gICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IFxcXFxcXFwiNC41LjBcXFxcXFxcIlxcXFxufVxcXFxudmFyIGVuY3J5cHRkYXRhID0gJC5yZXF1aXJlKFxcXFxcXFwiZGF0YVxcXFxcXFwiKS5lbmNyeXB0KHJyKTtcXFxcblxcXFxudmFyIHRpbWVzdGFtcCA9IGVuY3J5cHRkYXRhLnRpbWVzdGFtcC50b1N0cmluZygpO1xcXFxudmFyIGRhdGEgPSBlbmNyeXB0ZGF0YS5kYXRhO1xcXFxudmFyIHNpZ24gPSBlbmNyeXB0ZGF0YS5zaWduO1xcXFxuXFxcXG52YXIgRGF0YSA9IHBvc3QoXFxcXFxcXCJodHRwczovL3p3c2Z4di5ibWFmZHh0LmNvbS9wd2EucGhwXFxcXFxcXCIsIHtcXFxcbiAgICBib2R5OiB7XFxcXG4gICAgICAgIFxcXFxcXFwiY2xpZW50XFxcXFxcXCI6IFxcXFxcXFwicHdhXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IHRpbWVzdGFtcCxcXFxcbiAgICAgICAgXFxcXFxcXCJkYXRhXFxcXFxcXCI6IGRhdGEsXFxcXG4gICAgICAgIFxcXFxcXFwic2lnblxcXFxcXFwiOiBzaWduXFxcXG4gICAgfVxcXFxufSlcXFxcbnZhciBoID0gRGF0YTtcXFxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhP3J1bGU9XFxcXFxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShoKS5kYXRhO1xcXFxudmFyIHIgPSAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhXFxcXFxcXCIpLkRlY3J5cHQoZGF0YSk7XFxcXG52YXIgbGlzdCA9IHIuZGF0YS5ob3RTZWFyY2g7XFxcXG52YXIgbGlzdDEgPSByLmRhdGEuaG90VG9waWM7XFxcXG52YXIgbGlzdDIgPSByLmRhdGEuY2F0ZWdvcnlbMF0ubXZsaXN0O1xcXFxudmFyIHRpdGxlMiA9IHIuZGF0YS5jYXRlZ29yeVswXS5uYW1lO1xcXFxudmFyIGRlc2MyID0gci5kYXRhLmNhdGVnb3J5WzBdLmRlc2M7XFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICfmkJzntKInLFxcXFxuICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIHB1dFZhcigna2V5d29yZCcsIGlucHV0KTtcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc2VhcmNoX3Jlc3VsdD9meXBhZ2UnO1xcXFxuICAgIH0pLFxcXFxuICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdrZXl3b3JkJywgJycpLFxcXFxuICAgICAgICBwYWdlVGl0bGU6ICfmkJzntKLnu5PmnpwnXFxcXG4gICAgfVxcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5J1xcXFxufSk7XFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuc3Ryb25nUign54Ot5pCc5qacJywgJ0ZGNjY5OScpLFxcXFxuICAgIGNvbF90eXBlOiAndGV4dF9pY29uJyxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5J1xcXFxufSk7XFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICB2YXIgdGl0bGUgPSBsaXN0W2ldO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJjb3B5Oi8vXFxcXFxcXCIgKyB0aXRsZVxcXFxuICAgIH0pO1xcXFxufVxcXFxuZC5wdXNoKHtcXFxcbiAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaycsXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSdcXFxcbn0pO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhXFxcXFxcXCIpLnN0cm9uZ1IoJzkx54Ot54K5JywgJ0ZGNjY5OScpLFxcXFxuICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb25fcmlnaHQ1JyxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NlYXJjaF9ob3RUb3BpY3MnXFxcXG59KTtcXFxcbmZvciAodmFyIGkgaW4gbGlzdDEpIHtcXFxcbiAgICB2YXIgdGl0bGUgPSBsaXN0MVtpXS50aXRsZTtcXFxcbiAgICB2YXIgaWQgPSBsaXN0MVtpXS52YWx1ZTtcXFxcbiAgICB2YXIgbnVtID0gTnVtYmVyKGkpICsgMTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogbnVtICsgJy5cXFxcXFxcXHQnICsgdGl0bGUsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NlYXJjaF9ob3RUb3BpY3NfZGV0YWlsJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGlkOiBpZCxcXFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogJ+ivpuaDhSdcXFxcbiAgICAgIH1cXFxcbiAgICB9KTtcXFxcbn1cXFxcbmQucHVzaCh7XFxcXG4gICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLFxcXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxcXG59KTtcXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogZGVzYzIgKyB0aXRsZTIsXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nLFxcXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxcXG59KTtcXFxcbmZvciAodmFyIGkgaW4gbGlzdDIpIHtcXFxcbiAgICB2YXIgdGl0bGUgPSBsaXN0MltpXS50aXRsZTtcXFxcbiAgICB2YXIgcGxheVVybCA9IGxpc3QyW2ldLnBsYXlVcmw7XFxcXG4gICAgdmFyIG5pY2tOYW1lID0gbGlzdDJbaV0ubmlja05hbWU7XFxcXG4gICAgdmFyIHV1aWQgPSBsaXN0MltpXS51dWlkO1xcXFxuICAgIHZhciBkZXNjID0gJ/CflKUnICsgbGlzdDJbaV0ucGxheV9jb3VudCArICdcXFxcXFxcXHQnICsgbGlzdDJbaV0uZHVyYXRpb25TdHI7XFxcXG4gICAgdmFyIGltYWdldXJsID0gbGlzdDJbaV0udGh1bWJJbWc7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICBpbWc6IGltYWdldXJsICsgaW1hZ2UsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMycsXFxcXG4gICAgICAgIHVybDogcGxheVVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcXFxuICAgIH0pO1xcXFxufVxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi4pGi6aG16Z2iLeaQnOe0ol/nu5PmnpxcXFwiLFxcXCJwYXRoXFxcIjpcXFwic2VhcmNoX3Jlc3VsdFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxcXG52YXIgUGFnZSA9IGdldE15VmFyKCdwYWdlJywgJzAnKTtcXFxcbnZhciB0eXBlU2xpc3QgPSBbe1xcXFxuICAgIHRpdGxlOiAn55+t6KeG6aKRJyxcXFxcbiAgICB0eXBlOiAnMSdcXFxcbn0sIHtcXFxcbiAgICB0aXRsZTogJ+WQiOmbhicsXFxcXG4gICAgdHlwZTogJzUnXFxcXG59LCB7XFxcXG4gICAgdGl0bGU6ICfluJblrZAnLFxcXFxuICAgIHR5cGU6ICczJ1xcXFxufV07XFxcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxcXG4gICAgJC5yZXF1aXJlKFxcXFxcXFwiZGF0YVxcXFxcXFwiKS5DYXRlZ29yeSh0eXBlU2xpc3QsMSxkKTtcXFxcbn1cXFxcbnZhciByciA9IHtcXFxcbiAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogXFxcXFxcXCJzZWFyY2hcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInR5cGVcXFxcXFxcIjogZ2V0TXlWYXIoJ3R5cGVTJywgJzEnKSxcXFxcbiAgICBcXFxcXFxcImtleVxcXFxcXFwiOiBnZXRWYXIoJ2tleXdvcmQnLCAnJyksXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogXFxcXFxcXCJpbmRleFxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfaWRcXFxcXFxcIjogXFxcXFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfdHlwZVxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicGFnZVxcXFxcXFwiOiAoUGFnZSA9PSAwKSA/IHBhZ2UgOiBQYWdlLFxcXFxuICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IDEuNzA0NTQ2NjY3ODA2RTEyLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCJcXFxcbn1cXFxcbmNsZWFyTXlWYXIoJ3BhZ2UnKTtcXFxcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuZW5jcnlwdChycik7XFxcXG5cXFxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXFxcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXFxcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXFxcblxcXFxudmFyIERhdGEgPSBwb3N0KFxcXFxcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXFxcXFwiLCB7XFxcXG4gICAgYm9keToge1xcXFxuICAgICAgICBcXFxcXFxcImNsaWVudFxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiB0aW1lc3RhbXAsXFxcXG4gICAgICAgIFxcXFxcXFwiZGF0YVxcXFxcXFwiOiBkYXRhLFxcXFxuICAgICAgICBcXFxcXFxcInNpZ25cXFxcXFxcIjogc2lnblxcXFxuICAgIH1cXFxcbn0pXFxcXG52YXIgaCA9IERhdGE7XFxcXG5cXFxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhP3J1bGU9XFxcXFxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXFxcblxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxcXG52YXIgciA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuRGVjcnlwdChkYXRhKTtcXFxcbnZhciBsaXN0ID0gci5kYXRhO1xcXFxuaWYgKHIuc3RhdHVzID09IDApIHtcXFxcbiAgICB0b2FzdChyLm1zZyk7XFxcXG4gICAgYmFjaygpO1xcXFxufSBlbHNlIGlmIChsaXN0ID09ICcnKSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfmsqHmnInmm7TlpJrlhoXlrrkhJyxcXFxcbiAgICAgICAgdXJsOiAndG9hc3Q6Ly/wn4+A5L2g5bmy5ZibficsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcXFxuICAgIH0pO1xcXFxuXFxcXG59IGVsc2UgaWYoZ2V0TXlWYXIoJ3R5cGVTJywgJzEnKT09MSl7XFxcXG4gICAgZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXG4gICAgICAgIHZhciBwbGF5dXJsID0gbGlzdFtpXS5wbGF5VXJsO1xcXFxuICAgICAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLnRpdGxlO1xcXFxuICAgICAgICB2YXIgbmlja05hbWUgPSBsaXN0W2ldLm5pY2tOYW1lO1xcXFxuICAgICAgICB2YXIgdXVpZCA9IGxpc3RbaV0udXVpZDtcXFxcbiAgICAgICAgdmFyIGRlc2MgPSAnXFxcXFxcXFx08J+UpScgKyBsaXN0W2ldLnBsYXlfY291bnQgKyAnXFxcXFxcXFx04o+x77iPJyArIGxpc3RbaV0uZHVyYXRpb25TdHI7XFxcXG4gICAgICAgIHZhciBpbWFnZXVybCA9IGxpc3RbaV0udGh1bWJJbWc7XFxcXG4gICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbG9uZ0NsaWNrJykpLnJ1bGUpXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICAgICAgaW1nOiBpbWFnZXVybCArIGltYWdlLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IChzdG9yYWdlMC5nZXRJdGVtKCdDb2xfbWVkaWEnLCAnJykgPT0gJycpID8gJ21vdmllXzInIDogc3RvcmFnZTAuZ2V0SXRlbSgnQ29sX21lZGlhJywgJycpLFxcXFxuICAgICAgICAgICAgdXJsOiBwbGF5dXJsLnJlcGxhY2UoJzEwcGxheScsICdsb25nJyksXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ0NsaWNrMVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGVsc2UgaWYoZ2V0TXlWYXIoJ3R5cGVTJywgJzMnKT09Myl7XFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICB2YXIgaWQgPSBsaXN0W2ldLmlkO1xcXFxuICAgIHZhciB0aXRsZSA9IGxpc3RbaV0uY29udGVudDtcXFxcbiAgICB2YXIgZGVzYyA9IGxpc3RbaV0uY3JlYXRlZF9hdCArICflj5HluINcXFxcXFxcXHRcXFxcXFxcXHQnICsgbGlzdFtpXS52aWV3X251bSArICfmtY/op4hcXFxcXFxcXHRcXFxcXFxcXHQnICsgbGlzdFtpXS5saWtlX251bSArICfngrnotZ4nO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgZGVzYzogZGVzYyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3c2RldGFpbCcsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBuZXdzX2lkOiBpZCxcXFxcbiAgICAgICAgICAgIG1vZDogXFxcXFxcXCJuZXdzXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2RlOiBcXFxcXFxcImRldGFpbF92MVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBcXFxcXFxcIuW4luWtkOivpuaDhVxcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbn1cXFxcbn0gZWxzZXtcXFxcbiAgICAgIHRvYXN0KCflop7liqDlip/og73nmoTmnLrkvJrmnaXkuobvvIEnKTtcXFxcbn1cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLikaLpobXpnaIt5pCc57SiXzkx54Ot54K5XFxcIixcXFwicGF0aFxcXCI6XFxcInNlYXJjaF9ob3RUb3BpY3NcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIHJyID0ge1xcXFxuICAgIFxcXFxcXFwib2F1dGhfdHlwZVxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfaWRcXFxcXFxcIjogXFxcXFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogXFxcXFxcXCJjYXRlZ29yeVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBcXFxcXFxcImhvdFRvcGljc1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IDEuNzA0NTQ2NjY3ODA2RTEyXFxcXG59XFxcXG5cXFxcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuZW5jcnlwdChycik7XFxcXG5cXFxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXFxcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXFxcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXFxcblxcXFxudmFyIERhdGEgPSBwb3N0KFxcXFxcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXFxcXFwiLCB7XFxcXG4gICAgYm9keToge1xcXFxuICAgICAgICBcXFxcXFxcImNsaWVudFxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiB0aW1lc3RhbXAsXFxcXG4gICAgICAgIFxcXFxcXFwiZGF0YVxcXFxcXFwiOiBkYXRhLFxcXFxuICAgICAgICBcXFxcXFxcInNpZ25cXFxcXFxcIjogc2lnblxcXFxuICAgIH1cXFxcbn0pXFxcXG52YXIgaCA9IERhdGE7XFxcXG5cXFxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhP3J1bGU9XFxcXFxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXFxcblxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxcXG52YXIgciA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuRGVjcnlwdChkYXRhKTtcXFxcbnZhciBsaXN0ID0gci5kYXRhLmxpc3Q7XFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICB2YXIgaWQgPSBsaXN0W2ldLnZhbHVlO1xcXFxuICAgIHZhciB0aXRsZSA9IGxpc3RbaV0udGl0bGU7XFxcXG4gICAgdmFyIGltZyA9IGxpc3RbaV0uaW1nX3VybDtcXFxcbiAgICB2YXIgZGVzYyA9IGxpc3RbaV0udXBkYXRlZF9hdCArICfwn5SlXFxcXFxcXFx0XFxcXFxcXFx0JytbaV0uaG90X251bSAgKyAn8J+Pt++4j1xcXFxcXFxcdFxcXFxcXFxcdCcrIGxpc3RbaV0udGFnc19uYW1lO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgZGVzYzogJzAnLFxcXFxuICAgICAgICBpbWc6IGltZyArIGltYWdlLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnLFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc2VhcmNoX2hvdFRvcGljc19kZXRhaWwnLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgaWQ6IGlkLFxcXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBcXFxcXFxcIuivpuaDhVxcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbn1cXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuKRoumhtemdoi3mkJzntKJfOTHng63ngrlf5LqM57qnXFxcIixcXFwicGF0aFxcXCI6XFxcInNlYXJjaF9ob3RUb3BpY3NfZGV0YWlsXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDtcXFxcbnZhciByciA9IHtcXFxcbiAgICBcXFxcXFxcIm9hdXRoX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJwd2FcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImlkXFxcXFxcXCI6IGlkLFxcXFxuICAgIFxcXFxcXFwib2F1dGhfaWRcXFxcXFxcIjogXFxcXFxcXCJneW5VR3RMdlNEaGtLQXNnMTcwNDUxMzc4OTI4NlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjQuNS4wXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJtb2RcXFxcXFxcIjogXFxcXFxcXCJpbmRleFxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBcXFxcXFxcImRldGFpbF92MVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidGltZXN0YW1wXFxcXFxcXCI6IDEuNzA0NTQ2NjY3ODA2RTEyXFxcXG59XFxcXG5cXFxcbnZhciBlbmNyeXB0ZGF0YSA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuZW5jcnlwdChycik7XFxcXG5cXFxcbnZhciB0aW1lc3RhbXAgPSBlbmNyeXB0ZGF0YS50aW1lc3RhbXAudG9TdHJpbmcoKTtcXFxcbnZhciBkYXRhID0gZW5jcnlwdGRhdGEuZGF0YTtcXFxcbnZhciBzaWduID0gZW5jcnlwdGRhdGEuc2lnbjtcXFxcblxcXFxudmFyIERhdGEgPSBwb3N0KFxcXFxcXFwiaHR0cHM6Ly96d3NmeHYuYm1hZmR4dC5jb20vcHdhLnBocFxcXFxcXFwiLCB7XFxcXG4gICAgYm9keToge1xcXFxuICAgICAgICBcXFxcXFxcImNsaWVudFxcXFxcXFwiOiBcXFxcXFxcInB3YVxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOiB0aW1lc3RhbXAsXFxcXG4gICAgICAgIFxcXFxcXFwiZGF0YVxcXFxcXFwiOiBkYXRhLFxcXFxuICAgICAgICBcXFxcXFxcInNpZ25cXFxcXFxcIjogc2lnblxcXFxuICAgIH1cXFxcbn0pXFxcXG52YXIgaCA9IERhdGE7XFxcXG5cXFxcbmxldCBpbWFnZSA9ICQoKS5pbWFnZSgoKSA9PiAkLnJlcXVpcmUoXFxcXFxcXCJkYXRhP3J1bGU9XFxcXFxcXCIgKyBNWV9USVRMRSkuZGVjcnlwdCgpKTtcXFxcblxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGgpLmRhdGE7XFxcXG52YXIgciA9ICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuRGVjcnlwdChkYXRhKTtcXFxcbnZhciBkYXRhID0gci5kYXRhO1xcXFxudmFyIHRpdGxlID0gZGF0YS50aXRsZTtcXFxcbnZhciBwbGF5VXJsID0gZGF0YS5wbGF5VXJsO1xcXFxudmFyIHByZXZpZXdVcmwgPSBkYXRhLnByZXZpZXdVcmw7XFxcXG52YXIgcGxheXVybCA9IChwbGF5VXJsIT0nJyk/cGxheVVybDpwcmV2aWV3VXJsO1xcXFxudmFyIHRodW1iSW1nID0gZGF0YS50aHVtYkltZztcXFxcbnZhciB0YWdzID0gZGF0YS50YWdzO1xcXFxudmFyIGNyZWF0ZWRfYXQgPSBkYXRhLmNyZWF0ZWRfYXQ7XFxcXG52YXIgcGxheV9jb3VudCA9IGRhdGEucGxheV9jb3VudDtcXFxcbnZhciBsaWtlID0gZGF0YS5saWtlO3ZhciBsaWtlID0gZGF0YS5saWtlO1xcXFxudmFyIGNvbW1lbnQgPSBkYXRhLmNvbW1lbnQ7XFxcXG52YXIgZHVyYXRpb25TdHIgPSBkYXRhLmR1cmF0aW9uU3RyO1xcXFxudmFyIG5pY2tOYW1lID0gZGF0YS5uaWNrTmFtZTtcXFxcbnZhciB1dWlkID0gZGF0YS51dWlkO1xcXFxudmFyIG1lZGlhbGlzdCA9IGRhdGEucmVjb21tZW5kOyAvL+eyvuW9qeinhumikVxcXFxudmFyIGNvbW1lbnRfbGlzdCA9IGRhdGEuY29tbWVudExpc3Q7IC8v6K+E6K66XFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgZGVzYzogJzAnLFxcXFxuICAgICAgICBpbWc6IHRodW1iSW1nICsgaW1hZ2UsXFxcXG4gICAgICAgIHVybDogcGxheXVybC5yZXBsYWNlKCcxMHBsYXknLCAnbG9uZycpLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPicgKyflj5HluIPml7bpl7Q6JytjcmVhdGVkX2F0KydcXFxcXFxcXHRcXFxcXFxcXHRVUOS4uzonK25pY2tOYW1lKydcXFxcXFxcXG7wn4+377iPJyt0YWdzKydcXFxcXFxcXHRcXFxcXFxcXHTml7bplb8nK2R1cmF0aW9uU3RyKydcXFxcXFxcXG7wn5SlJytwbGF5X2NvdW50KydcXFxcXFxcXHRcXFxcXFxcXHTinaTvuI8nK2xpa2UrJ1xcXFxcXFxcdFxcXFxcXFxcdOKcjfCfj73vuI8nK2NvbW1lbnQrJzwvc21hbGw+JyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgIH0pO1xcXFxudmFyIHR5cGVTU2xpc3QgPSBbe1xcXFxuICAgIHRpdGxlOiAn57K+5b2p6KeG6aKRJyxcXFxcbiAgICB0eXBlOiAnMSdcXFxcbn0sIHtcXFxcbiAgICB0aXRsZTogJ+ivhOiuuicrY29tbWVudCxcXFxcbiAgICB0eXBlOiAnMCdcXFxcbn1dO1xcXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICQucmVxdWlyZShcXFxcXFxcImRhdGFcXFxcXFxcIikuQ2F0ZWdvcnkodHlwZVNTbGlzdCwyLGQpO1xcXFxufVxcXFxuaWYoZ2V0TXlWYXIoJ3R5cGVTUycsICcxJyk9PTApe1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICflhajpg6jor4TorrpcXFxcXFxcXHQoJytjb21tZW50KycpJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcXFxufSk7XFxcXG5mb3IgKHZhciBpIGluIGNvbW1lbnRfbGlzdCkge1xcXFxuICAgIHZhciBuaWNrbmFtZSA9IGNvbW1lbnRfbGlzdFtpXS5uaWNrTmFtZTtcXFxcbiAgICB2YXIgc2V4VHlwZSA9IGNvbW1lbnRfbGlzdFtpXS5zZXhUeXBlO1xcXFxuICAgIHZhciBzZXggPSAoc2V4VHlwZSA9PSAnMCcpID8gJ1xcXFxcXFxcdPCfkanwn4+9XFxcXFxcXFx0JyA6ICdcXFxcXFxcXHTwn5Go8J+PvVxcXFxcXFxcdCc7XFxcXG4gICAgdmFyIGNyZWF0ZWRfYXQgPSBjb21tZW50X2xpc3RbaV0uY3JlYXRlZF9hdDtcXFxcbiAgICB2YXIgY29tbWVudCA9IGNvbW1lbnRfbGlzdFtpXS5jb21tZW50O1xcXFxuICAgIHZhciB0aHVtYiA9IGNvbW1lbnRfbGlzdFtpXS50aHVtYjtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogbmlja25hbWUgKyBzZXgsXFxcXG4gICAgICAgIGRlc2M6IGNyZWF0ZWRfYXQsXFxcXG4gICAgICAgIGltZzogdGh1bWIgKyBpbWFnZSxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBjb21tZW50LFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgfSk7XFxcXG59XFxcXG59IGVsc2Uge1xcXFxuZm9yICh2YXIgaSBpbiBtZWRpYWxpc3QpIHtcXFxcbiAgICB2YXIgaWQgPSBtZWRpYWxpc3RbaV0uaWQ7XFxcXG4gICAgdmFyIHRpdGxlID0gbWVkaWFsaXN0W2ldLnRpdGxlO1xcXFxuICAgIHZhciBpbWcgPSBtZWRpYWxpc3RbaV0udGh1bWJJbWc7XFxcXG4gICAgLy92YXIgcGxheVVybCA9IG1lZGlhbGlzdFtpXS5wbGF5VXJsO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgaW1nOiBpbWcgKyBpbWFnZSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NlYXJjaF9ob3RUb3BpY3NfZGV0YWlsJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGlkOiBpZCxcXFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogXFxcXFxcXCLor6bmg4VcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG59XFxcXG59XFxcXG5zZXRSZXN1bHQoZCk7XFxcIn1dXCIsXCJwcm94eVwiOlwiXCJ9IiwidGl0bGUiOiLmkJzntKLnu5PmnpwifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement