Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥恒星播放器_「快播」再生的影视资源看片神器!@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwiQ2xhc3NUYWJcIixcInBhdGhcIjpcIkNsYXNzVGFiXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBDbGFzc1RhYihjbGFzc0FycmF5LCBwYXJhbXMpIHtcXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBwYXJhbXMpXFxuICAgIHRoaXMuYXJyID0gY2xhc3NBcnJheS5tYXAodiA9PiB0aGlzLmluaXQodikpXFxuICAgIHRoaXMuc2lnbiA9ICckJyArIE1ZX1JVTEUudGl0bGUgKyAnXycgKyAodGhpcy5uYW1lIHx8ICcnKSArICdfJ1xcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5jb2xvciB8fCAnIzEyYjY2OCdcXG4gICAgdGhpcy5ib3VuZGFyeSA9IHRoaXMuYm91bmRhcnkgfHwgJ2JsYW5rX2Jsb2NrJ1xcbn1cXG5DbGFzc1RhYi5wcm90b3R5cGUgPSB7XFxuICAgIGNvbnN0cnVjdG9yOiBDbGFzc1RhYixcXG4gICAgbG9hZChlbCkge1xcbiAgICAgICAgbGV0IGZvbGRlZCA9IGdldFZhcignZm9sZF8nICsgdGhpcy5zaWduLCAnJylcXG4gICAgICAgIGlmICh0aGlzLmZvbGQpIGVsLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcImNvbG9yOiMwNDllZmZcXFwiPicgKyAoZm9sZGVkID8gJ+KWticgOiAn4pa8JyksXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWduLCBmb2xkZWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdmb2xkXycgKyBzaWduLCB7ICcnOiAnVCcsICdUJzogJycgfSBbZm9sZGVkXSlcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB0aGlzLnNpZ24sIGZvbGRlZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGxldCBhcnIgPSBmb2xkZWQgPyBbdGhpcy5hcnJbMF1dIDogdGhpcy5hcnJcXG4gICAgICAgIGFyci5mb3JFYWNoKCh2KSA9PiB7XFxuICAgICAgICAgICAgbGV0IHsgaWQsIGNsYXNzX25hbWUsIGNsYXNzX3VybCB9ID0gdixcXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmdldENsYXNzKGlkKSlcXG4gICAgICAgICAgICBjbGFzc19uYW1lLmZvckVhY2goKG5hbWUsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9IGNsYXNzX3VybFtpXSxcXG4gICAgICAgICAgICAgICAgICAgIG5vdyA9IEpTT04uc3RyaW5naWZ5KHsgbmFtZTogbmFtZSwgdXJsOiB1cmwgfSlcXG4gICAgICAgICAgICAgICAgZWwucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogKHNlbGVjdGVkID09IG5vdyA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFwiY29sb3I6JyArIHRoaXMuY29sb3IgKyAnXFxcIj48Yj4nIDogJycpICsgbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc2lnbiwgaWQsIG5vdykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihzaWduICsgaWQsIG5vdylcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoc2lnbiwgbm93KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuc2lnbiwgaWQsIG5vdyksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBlbC5wdXNoKHsgY29sX3R5cGU6IHRoaXMuYm91bmRhcnkgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIGluaXQoY2xhc3NPYmplY3QpIHtcXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NPYmplY3QuY2xhc3NfbmFtZSA9PSAnc3RyaW5nJylcXG4gICAgICAgICAgICBjbGFzc09iamVjdC5jbGFzc19uYW1lID0gY2xhc3NPYmplY3QuY2xhc3NfbmFtZS5zcGxpdCgnJicpXFxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzT2JqZWN0LmNsYXNzX3VybCA9PSAnc3RyaW5nJylcXG4gICAgICAgICAgICBjbGFzc09iamVjdC5jbGFzc191cmwgPSBjbGFzc09iamVjdC5jbGFzc191cmwuc3BsaXQoJyYnKVxcbiAgICAgICAgcmV0dXJuIGNsYXNzT2JqZWN0XFxuICAgIH0sXFxuICAgIHB1c2goY2xhc3NPYmplY3QpIHtcXG4gICAgICAgIHRoaXMuYXJyLnB1c2godGhpcy5pbml0KGNsYXNzT2JqZWN0KSlcXG4gICAgfSxcXG4gICAgZ2V0Q2xhc3MoaWQpIHtcXG4gICAgICAgIGxldCBkZWZhdWx0Q2xhc3MgPSB0aGlzLmFyci5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PSBpZClcXG4gICAgICAgIGlmIChkZWZhdWx0Q2xhc3MpIGRlZmF1bHRDbGFzcyA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBuYW1lOiBkZWZhdWx0Q2xhc3MuY2xhc3NfbmFtZVswXSxcXG4gICAgICAgICAgICB1cmw6IGRlZmF1bHRDbGFzcy5jbGFzc191cmxbMF1cXG4gICAgICAgIH0pXFxuICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZpbmQgaWQ6ICcgKyBpZCArICcgaW4gY2xhc3NUYWI6ICcgKyB0aGlzLnNpZ24pXFxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShnZXRWYXIodGhpcy5zaWduICsgaWQsIGRlZmF1bHRDbGFzcykpXFxuICAgIH0sXFxuICAgIGdldExhc3RDbGljaygpIHtcXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGdldFZhcih0aGlzLnNpZ24sICd7fScpKVxcbiAgICB9LFxcbiAgICBzZXRVcmwodXJsKSB7XFxuICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoL1xcXFwkXFxcXHsoW159XSopXFxcXH0vZywgKF8sIGlkKSA9PiB0aGlzLmdldENsYXNzKGlkKS51cmwpXFxuICAgIH1cXG59XFxuJC5leHBvcnRzID0gQ2xhc3NUYWJcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIummlumhtVwiLFwicGF0aFwiOlwiaW5kZXhMb2FkXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgbXlDb2xsZWN0aW9uX2VsID0gW10sXFxuICAgIHBhZ2VOdW0gPSBwYXJzZUludChNWV9VUkwuc3BsaXQoJyMnKVsxXSksXFxuICAgIFJVTEUgPSBNWV9QQVJBTVMuUlVMRSxcXG4gICAgZnlBbGwgPSBSVUxFLnVybC5pbmNsdWRlcygnZnlBbGwnKSxcXG4gICAgLy8g5Yqg6L29Q2xhc3NUYWLnu4Tku7ZcXG4gICAgQ2xhc3NUYWIgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9DbGFzc1RhYj9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSksXFxuICAgIHRhYkhlYWRlciA9IFtdXFxuXFxuaWYgKFJVTEUuY2xhc3NfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5Y2xhc3MnLFxcbiAgICBjbGFzc19uYW1lOiBSVUxFLmNsYXNzX25hbWUsXFxuICAgIGNsYXNzX3VybDogUlVMRS5jbGFzc191cmxcXG59KVxcbmlmIChSVUxFLmFyZWFfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5YXJlYScsXFxuICAgIGNsYXNzX25hbWU6IFJVTEUuYXJlYV9uYW1lLFxcbiAgICBjbGFzc191cmw6IFJVTEUuYXJlYV91cmxcXG59KVxcbmlmIChSVUxFLnllYXJfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5eWVhcicsXFxuICAgIGNsYXNzX25hbWU6IFJVTEUueWVhcl9uYW1lLFxcbiAgICBjbGFzc191cmw6IFJVTEUueWVhcl91cmxcXG59KVxcbmlmIChSVUxFLnNvcnRfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5c29ydCcsXFxuICAgIGNsYXNzX25hbWU6IFJVTEUuc29ydF9uYW1lLFxcbiAgICBjbGFzc191cmw6IFJVTEUuc29ydF91cmxcXG59KVxcbnRhYkhlYWRlciA9IG5ldyBDbGFzc1RhYih0YWJIZWFkZXIsIHsgbmFtZTogUlVMRS50aXRsZSB9KVxcbmlmIChwYWdlTnVtID09IDEpIHtcXG4gICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAnY2xlYXJWYXIoXFxcIm15Q29sbGVjdGlvbi1zZWFyY2hNb2RlXFxcIiknKVxcbiAgICBwdXRWYXIoJ215Q29sbGVjdGlvbi1zZWFyY2hNb2RlJywgUlVMRS50aXRsZSlcXG4gICAgdGFiSGVhZGVyLmxvYWQobXlDb2xsZWN0aW9uX2VsKVxcbiAgICBpZiAoUlVMRS5zZWFyY2hfdXJsKSBteUNvbGxlY3Rpb25fZWwucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi5pCc5L2g5oOz6KaB55qELi4uXFxcIixcXG4gICAgICAgIHVybDogJ1xcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIraW5wdXQrXFxcIiZydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSArICdcXFwiJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICB9KVxcbn1cXG4vLyDlpITnkIZNWV9VUkzlkoxNWV9SVUxFXFxuTVlfUlVMRS52ZXJzaW9uID0gUlVMRS52ZXJzaW9uXFxuTVlfUlVMRS5ncm91cCA9IFJVTEUuZ3JvdXBcXG5NWV9SVUxFLnRpdGxlID0gUlVMRS50aXRsZVxcbk1ZX1JVTEUudWEgPSBSVUxFLnVhXFxuTVlfUlVMRS5jb2xfdHlwZSA9IFJVTEUuY29sX3R5cGVcXG5NWV9SVUxFLmRldGFpbF9jb2xfdHlwZSA9IFJVTEUuZGV0YWlsX2NvbF90eXBlXFxuTVlfUlVMRS5maW5kX3J1bGUgPSBSVUxFLmZpbmRfcnVsZVxcbk1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcbk1ZX1JVTEUucHJlUnVsZSA9IFJVTEUucHJlUnVsZVxcbk1ZX1JVTEUucGFnZUxpc3QgPSBKU09OLnBhcnNlKFJVTEUucGFnZXMgfHwgJ1tdJylcXG5NWV9SVUxFLnBhZ2VzID0gSlNPTi5zdHJpbmdpZnkoTVlfUlVMRS5wYWdlTGlzdClcXG5NWV9SVUxFLmxhc3RfY2hhcHRlcl9ydWxlID0gUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZVxcbk1ZX1JVTEUucGFyYW1zID0ge31cXG5cXG5jb25zdCB7IHJ1bkNvZGUsIHVybFBhcnNlIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91dGlsaXR5P3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpKVxcbnZhciB7IE1ZX1VSTCwgaW5kZXhIdG1sIH0gPSB1cmxQYXJzZShSVUxFLnVybCwgcGFnZU51bSwgKHVybCkgPT4ge1xcbiAgICB1cmxbMF0gPSBmeUFsbCA/IHVybFswXS5yZXBsYWNlKC9meUFsbC9nLCAnJCR7ZnlBbGx9JykgOiB1cmxbMF0ucmVwbGFjZSgvZnkoY2xhc3N8YXJlYXx5ZWFyfHNvcnQpL2csICckJHtmeSQxfScpXFxuICAgIHVybFswXSA9IHRhYkhlYWRlci5zZXRVcmwodXJsWzBdKVxcbn0pXFxuTVlfUlVMRS51cmwgPSBNWV9VUkxcXG4vLyDmraPmlofop6PmnpBcXG5pZiAocGFnZU51bSA9PSAxKSBldmFsKE1ZX1JVTEUucHJlUnVsZSlcXG5pZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcXG4gICAgZnVuY3Rpb24gZ2V0VXJsKCkge1xcbiAgICAgICAgcmV0dXJuIE1ZX1VSTFxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGdldFJlc0NvZGUoKSB7XFxuICAgICAgICByZXR1cm4gaW5kZXhIdG1sXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0UmVzdWx0KGVsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxuICAgICAgICBwYXJhbTEgPSBDQUxMQkFDS19LRVlcXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEVcXG4gICAgICAgIHBhcmFtMyA9IE1ZX1RZUEVcXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsLmRhdGEpKSBlbCA9IGVsLmRhdGFcXG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG15Q29sbGVjdGlvbl9lbCwgZWwubWFwKCh2KSA9PiB7XFxuICAgICAgICAgICAgbGV0IFJVTEUgPSBPYmplY3QuYXNzaWduKHt9LCBNWV9SVUxFKVxcbiAgICAgICAgICAgIHYuY29sX3R5cGUgPSB2LmNvbF90eXBlIHx8IE1ZX1JVTEUuY29sX3R5cGVcXG5cXG4gICAgICAgICAgICBpZiAoIXYudXJsKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5pbmNsdWRlcygnQGxhenlSdWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIHYudXJsID0gdi51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyB0aXRsZTogTVlfUlVMRS50aXRsZSwgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7JylcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAcnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgW18sIHVybCwgcnVsZV0gPSB2LnVybC5tYXRjaCgvXihbXFxcXHNcXFxcU10qPylAcnVsZT0oW1xcXFxzXFxcXFNdKikkLylcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB1cmxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gcnVsZVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9jb2xfdHlwZSA9IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSkge1xcbiAgICAgICAgICAgICAgICBpZiAodi51cmwuaW5jbHVkZXMoJ3J1bGU9JykgfHwgKHYuZXh0cmEgfHwge30pLnJ1bGUpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHYudXJsLnNwbGl0KCcjJylbMF0ubWF0Y2goL15oaWtlcjpcXFxcL1xcXFwvcGFnZVxcXFwvKC4rPykoPzpcXFxcPy4qKT8kLylbMV0sXFxuICAgICAgICAgICAgICAgICAgICBzdWJQYWdlID0gTVlfUlVMRS5wYWdlTGlzdC5maW5kKCh2KSA9PiB2LnBhdGggPT0gcGF0aClcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2NvbF90eXBlID0gc3ViUGFnZS5jb2xfdHlwZVxcbiAgICAgICAgICAgICAgICBSVUxFLnBhcmFtcyA9IHYuZXh0cmEgfHwge31cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUpIHsgcmV0dXJuIHYgfVxcbiAgICAgICAgICAgIHYuZXh0cmEgPSB7IHVybDogdi51cmwsIFJVTEU6IFJVTEUsIHBhZ2VUaXRsZTogdi50aXRsZSB9XFxuICAgICAgICAgICAgdi51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcXG4gICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgfSkpXFxuICAgICAgICBtZXRob2Rfc2V0UmVzdWx0Lmludm9rZShqYXZhQ29udGV4dCwgbXlDb2xsZWN0aW9uX2VsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHNldEhvbWVSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0U2VhcmNoUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXG4gICAgICAgIHNldFJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcbiAgICB9XFxuXFxuICAgIGV2YWwoTVlfUlVMRS5maW5kX3J1bGUuc2xpY2UoMykpXFxufSBlbHNlIHtcXG4gICAgbGV0IGZpbmRSdWxlID0gTVlfUlVMRS5maW5kX3J1bGUuc3BsaXQoJzsnKVxcbiAgICBwYXJzZURvbUZvckFycmF5KGluZGV4SHRtbCwgZmluZFJ1bGUuc2hpZnQoKSkuZm9yRWFjaCgoZGF0YSkgPT4ge1xcbiAgICAgICAgbGV0IFt0aXRsZSwgaW1nLCBkZXNjLCB1cmxdID0gZmluZFJ1bGUubWFwKCh2LCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSAnKicpIHJldHVybiAnJ1xcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB2ID0gKGkgPT0gMSB8fCBpID09IDMpID9cXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZURvbShkYXRhLCB2KSA6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb21Gb3JIdG1sKGRhdGEsIHYpXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAzKSB2ID0gcnVuQ29kZSh2KVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICByZXMgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIGlmIChyZXMudXJsKSB7XFxuICAgICAgICAgICAgaWYgKHJlcy51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHRpdGxlOiBNWV9SVUxFLnRpdGxlLCBwYWdlczogTVlfUlVMRS5wYWdlcywgcGFnZUxpc3Q6IE1ZX1JVTEUucGFnZUxpc3QsIGZpbmRfcnVsZTogJycsIHBhcmFtczogJycgfSkgKyAnKTsnKVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTVlfUlVMRS5kZXRhaWxfZmluZF9ydWxlKSB7XFxuICAgICAgICAgICAgICAgIHJlcy51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcXG4gICAgICAgICAgICAgICAgcmVzLmV4dHJhID0geyB1cmw6IHVybCwgUlVMRTogTVlfUlVMRSwgcGFnZVRpdGxlOiB0aXRsZSAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIG15Q29sbGVjdGlvbl9lbC5wdXNoKHJlcylcXG4gICAgfSlcXG4gICAgc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLor6bmg4VcIixcInBhdGhcIjpcImRldGFpbExvYWRcIixcInJ1bGVcIjpcImpzOlxcbnZhciBteUNvbGxlY3Rpb25fZWwgPSBbXVxcblxcbi8vIOWkhOeQhk1ZX1VSTOWSjE1ZX1JVTEVcXG5sZXQgUlVMRSA9IE1ZX1BBUkFNUy5SVUxFXFxuTVlfUlVMRS52ZXJzaW9uID0gUlVMRS52ZXJzaW9uXFxuTVlfUlVMRS5ncm91cCA9IFJVTEUuZ3JvdXBcXG5NWV9SVUxFLnRpdGxlID0gUlVMRS50aXRsZVxcbk1ZX1JVTEUudXJsID0gTVlfVVJMXFxuTVlfUlVMRS51YSA9IFJVTEUudWFcXG5NWV9SVUxFLmNvbF90eXBlID0gUlVMRS5kZXRhaWxfY29sX3R5cGVcXG5NWV9SVUxFLmZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcbk1ZX1JVTEUucHJlUnVsZSA9IFJVTEUucHJlUnVsZVxcbk1ZX1JVTEUucGFnZUxpc3QgPSBSVUxFLnBhZ2VMaXN0XFxuTVlfUlVMRS5wYWdlcyA9IFJVTEUucGFnZXNcXG5NWV9SVUxFLmxhc3RfY2hhcHRlcl9ydWxlID0gUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZVxcbk1ZX1JVTEUucGFyYW1zID0gUlVMRS5wYXJhbXNcXG4vLyDop6PmnpDmraPmlodcXG5pZihNWV9QQVJBTVMucGFnZVRpdGxlKSBzZXRQYWdlVGl0bGUoTVlfUEFSQU1TLnBhZ2VUaXRsZSlcXG5ldmFsKE1ZX1JVTEUucHJlUnVsZSlcXG5zZXRMYXN0Q2hhcHRlclJ1bGUoTVlfUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSlcXG5NWV9QQVJBTVMgPSBNWV9SVUxFLnBhcmFtc1xcbmlmIChNWV9SVUxFLmZpbmRfcnVsZS5zdGFydHNXaXRoKCdqczonKSkge1xcbiAgICBmdW5jdGlvbiBzZXRSZXN1bHQoZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXG4gICAgICAgIHBhcmFtMSA9IENBTExCQUNLX0tFWVxcbiAgICAgICAgcGFyYW0yID0gTVlfUlVMRVxcbiAgICAgICAgcGFyYW0zID0gTVlfVFlQRVxcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWwuZGF0YSkpIGVsID0gZWwuZGF0YVxcblxcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobXlDb2xsZWN0aW9uX2VsLCBlbC5tYXAoKHYpID0+IHtcXG4gICAgICAgICAgICBsZXQgUlVMRSA9IE9iamVjdC5hc3NpZ24oe30sIE1ZX1JVTEUpXFxuICAgICAgICAgICAgdi5jb2xfdHlwZSA9IHYuY29sX3R5cGUgfHwgTVlfUlVMRS5jb2xfdHlwZVxcblxcbiAgICAgICAgICAgIGlmICghdi51cmwpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB2LnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHRpdGxlOiBNWV9SVUxFLnRpdGxlLCBwYWdlczogTVlfUlVMRS5wYWdlcywgcGFnZUxpc3Q6IE1ZX1JVTEUucGFnZUxpc3QsIGZpbmRfcnVsZTogJycsIHBhcmFtczogJycgfSkgKyAnKTsnKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBbXywgdXJsLCBydWxlXSA9IHYudXJsLm1hdGNoKC9eKFtcXFxcc1xcXFxTXSo/KUBydWxlPShbXFxcXHNcXFxcU10qKSQvKVxcbiAgICAgICAgICAgICAgICB2LnVybCA9IHVybFxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBydWxlXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2NvbF90eXBlID0gTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly9wYWdlLycpKSB7XFxuICAgICAgICAgICAgICAgIGlmICh2LnVybC5pbmNsdWRlcygncnVsZT0nKSB8fCAodi5leHRyYSB8fCB7fSkucnVsZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gdi51cmwuc3BsaXQoJyMnKVswXS5tYXRjaCgvXmhpa2VyOlxcXFwvXFxcXC9wYWdlXFxcXC8oLis/KSg/OlxcXFw/LiopPyQvKVsxXSxcXG4gICAgICAgICAgICAgICAgICAgIHN1YlBhZ2UgPSBNWV9SVUxFLnBhZ2VMaXN0LmZpbmQoKHYpID0+IHYucGF0aCA9PSBwYXRoKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBzdWJQYWdlLnJ1bGVcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXFxuICAgICAgICAgICAgICAgIFJVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxcbiAgICAgICAgICAgIH0gZWxzZSB7IHJldHVybiB2IH1cXG4gICAgICAgICAgICB2LmV4dHJhID0geyB1cmw6IHYudXJsLCBSVUxFOiBSVUxFIH1cXG4gICAgICAgICAgICB2LnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKVxcbiAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICB9KSlcXG4gICAgICAgIG1ldGhvZF9zZXRSZXN1bHQuaW52b2tlKGphdmFDb250ZXh0LCBteUNvbGxlY3Rpb25fZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0SG9tZVJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxuICAgICAgICBzZXRSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBzZXRTZWFyY2hSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZXZhbChNWV9SVUxFLmZpbmRfcnVsZS5zbGljZSgzKSlcXG59IGVsc2Uge1xcbiAgICBjb25zdCB7IHJ1bkNvZGUgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3V0aWxpdHk/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykpXFxuICAgIGxldCBmaW5kUnVsZSA9IE1ZX1JVTEUuZmluZF9ydWxlLnNwbGl0KCc7JylcXG4gICAgcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksIGZpbmRSdWxlLnNoaWZ0KCkpLmZvckVhY2goKGRhdGEpID0+IHtcXG4gICAgICAgIGxldCBbdGl0bGUsIGltZywgZGVzYywgdXJsXSA9IGZpbmRSdWxlLm1hcCgodiwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gJyonKSByZXR1cm4gJydcXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdiA9IChpID09IDEgfHwgaSA9PSAzKSA/XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChkYXRhLCB2KVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gMykgdiA9IHJ1bkNvZGUodilcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgcmVzID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9XFxuICAgICAgICBpZiAocmVzLnVybCAmJiByZXMudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpXFxuICAgICAgICAgICAgcmVzLnVybCA9IHJlcy51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyB0aXRsZTogTVlfUlVMRS50aXRsZSwgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7JylcXG4gICAgICAgIG15Q29sbGVjdGlvbl9lbC5wdXNoKHJlcylcXG4gICAgfSlcXG4gICAgc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlbDmja7ovb3lhaVcIixcInBhdGhcIjpcImRhdGFMb2FkXCIsXCJydWxlXCI6XCIvL+ecn+ato+iOt+WPluaVsOaNrueahOmAu+i+kVxcbmZ1bmN0aW9uIGxvYWQoKSB7XFxuICAgIGxldCB1cmwgPSAnaGlrZXI6Ly9wYWdlL2RhdGEnLFxcbiAgICAgICAgZCA9IFtdXFxuICAgIHRyeSB7XFxuICAgICAgICBkID0gZmV0Y2godXJsKVxcbiAgICAgICAgaWYgKHVybC5zdGFydHNXaXRoKCdoaWtlcjovL3BhZ2UvJykpXFxuICAgICAgICAgICAgZCA9IEpTT04ucGFyc2UoZCkucnVsZVxcbiAgICAgICAgZCA9IEpTT04ucGFyc2UoZClcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZCA9IFtdXFxuICAgIH1cXG4gICAgcmV0dXJuIGQuZmlsdGVyKCh2KSA9PiB7IHJldHVybiB2LnRpdGxlICE9IE1ZX1JVTEUudGl0bGUgJiYgdi5hdXRob3IgIT0gJ+i9u+WQiOmbhueUn+aIkOWZqCcgfSlcXG59XFxuLy/mo4Dmn6Xpl7TpmpTvvIzpu5jorqTkuIDlpKlcXG5sZXQgbWluID0gNjAgKiAyNCAqIDFcXG5cXG5sZXQgZGF0YSA9IFtdXFxubGV0IHRpbWUgPSBnZXRJdGVtKCd1cGRhdGV0aW1lJywgJzAnKVxcbnRpbWUgPSBwYXJzZUludCh0aW1lKVxcbmxldCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxcbmlmIChub3cgLSB0aW1lID4gMTAwMCAqIDYwICogbWluKSB7XFxuICAgIGxvZygn5pu05paw5LqG5pWw5o2uJylcXG4gICAgc2V0SXRlbSgndXBkYXRldGltZScsICcnICsgbm93KVxcbiAgICBkYXRhID0gbG9hZCgpXFxuICAgIHNhdmVGaWxlKCdkYXRhLmpzb24nLCBKU09OLnN0cmluZ2lmeShkYXRhKSlcXG59IGVsc2Uge1xcbiAgICBsb2coJ+ayoeacieabtOaWsOaVsOaNricpXFxuICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdkYXRhLmpzb24nKSlcXG59XFxuJC5leHBvcnRzID0gZGF0YVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5bel5YW36ZuGXCIsXCJwYXRoXCI6XCJ1dGlsaXR5XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSB7XFxuICAgIHJ1bkNvZGU6IGZ1bmN0aW9uKHJ1bGUpIHtsb2cocnVsZSlcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgbGV0IFtpbnB1dCwgY29kZV0gPSBydWxlLnNwbGl0KCcuanM6JylcXG4gICAgICAgICAgICByZXR1cm4gY29kZSA/IGV2YWwoY29kZSkgOiBydWxlXFxuICAgICAgICB9IGNhdGNoIChlKSB7IHJldHVybiBydWxlIH1cXG4gICAgfSxcXG4gICAgdXJsUGFyc2U6IGZ1bmN0aW9uKHVybCwgcGFnZU51bSwgZnVuYykge1xcbiAgICAgICAgdXJsID0gdXJsLnNwbGl0KCc7JykubWFwKCh2KSA9PiB2LnJlcGxhY2UoL++8m++8my9nLCAnOycpKVxcbiAgICAgICAgaWYgKGZ1bmMpIGZ1bmModXJsKVxcbiAgICAgICAgdXJsWzBdID0gdXJsWzBdLnJlcGxhY2UoL2Z5cGFnZSg/OkAoLT9cXFxcZCspQCk/KD86XFxcXCooXFxcXGQrKUApPy8sIChfLCBzdGFydCwgc3BhY2UpID0+IHBhcnNlSW50KHN0YXJ0IHx8IDApICsgMSArIChwYWdlTnVtIC0gMSkgKiBwYXJzZUludChzcGFjZSB8fCAxKSlcXG4gICAgICAgIHVybFswXSA9IC9eKC4qPykoPzpcXFxcW2ZpcnN0UGFnZT0oLio/KVxcXFxdKT8kLy5leGVjKHVybFswXSlcXG4gICAgICAgIHVybFswXSA9IHJ1bkNvZGUodXJsWzBdWzJdICYmIHBhZ2VOdW0gPT0gMSA/IHVybFswXVsyXSA6IHVybFswXVsxXSlcXG4gICAgICAgIGxldCBvcHRpb25zID0geyBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbjsgY2hhcnN0PVVURi04JyB9LCBtZXRob2Q6IHVybFsxXSB9XFxuICAgICAgICAvLyBwb3N05pa55rOV5pe26L2s5o2i5Y+C5pWwXFxuICAgICAgICBpZiAoL15wb3N0JC9pLnRlc3Qob3B0aW9uc1snbWV0aG9kJ10pKSB7XFxuICAgICAgICAgICAgbGV0IFtvcmlVcmwsIGJvZHldID0gdXJsWzBdLnNwbGl0KCc/JylcXG4gICAgICAgICAgICB1cmxbMF0gPSBvcmlVcmwucmVwbGFjZSgv77yf77yfL2csICc/JylcXG4gICAgICAgICAgICBpZiAoYm9keS5zdGFydHNXaXRoKCdKc29uQm9keT0nKSkgYm9keSA9IGJvZHkuc2xpY2UoOSlcXG4gICAgICAgICAgICBvcHRpb25zWydib2R5J10gPSBib2R5XFxuICAgICAgICB9XFxuICAgICAgICBpZiAodXJsWzJdKSBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gb3B0aW9ucy5oZWFkZXJzWydDb250ZW50LVR5cGUnXS5zbGljZSgwLCAxOSkgKyB1cmxbMl1cXG4gICAgICAgIC8vbG9nKG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1UeXBlJ10pXFxuICAgICAgICBpZiAodXJsWzNdKSB1cmxbM10ubWF0Y2goL3soLiopfS8pWzFdLnNwbGl0KCcmJicpLmZvckVhY2goKHYpID0+IHtcXG4gICAgICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gdi5zcGxpdCgnQCcpXFxuICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzW2tleV0gPSBydW5Db2RlKHZhbHVlKVxcbiAgICAgICAgfSlcXG4gICAgICAgIC8vIOa3u+WKoOWFqOWxgFVBXFxuICAgICAgICBpZiAoIW9wdGlvbnMuaGVhZGVyc1snVXNlci1BZ2VudCddKSB7XFxuICAgICAgICAgICAgaWYgKE1ZX1JVTEUudWEgPT0gJ3BjJylcXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzWydVc2VyLUFnZW50J10gPSBQQ19VQVxcbiAgICAgICAgICAgIGVsc2UgaWYgKE1ZX1JVTEUudWEgPT0gJ21vYmlsZScpXFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1snVXNlci1BZ2VudCddID0gTU9CSUxFX1VBXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4geyBNWV9VUkw6IHVybFswXSwgaW5kZXhIdG1sOiBmZXRjaCh1cmxbMF0sIG9wdGlvbnMpIH1cXG4gICAgfVxcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuinhOWImeWIl+ihqFwiLFwicGF0aFwiOlwiZGF0YVwiLFwicnVsZVwiOlwiW3tcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLlkL7niLHnoLTop6PwnZSlXFxcIixcXG4gICAgXFxcImF1dGhvclxcXCI6IFxcXCJIb29kXFxcIixcXG4gICAgXFxcInVybFxcXCI6IFxcXCJodHRwczovL3d3dy41MnBvamllLmNuL2ZvcnVtLnBocD9tb2Q9Z3VpZGUmdmlldz1meWNsYXNzJnBhZ2U9ZnlwYWdlO2dldDtHQktcXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IDQsXFxuICAgIFxcXCJjb2xfdHlwZVxcXCI6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICBcXFwiY2xhc3NfbmFtZVxcXCI6IFxcXCLmnIDmlrDng63pl6gm5pyA5paw57K+5Y2OJuacgOaWsOWbnuWkjSbmnIDmlrDlj5HooahcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcImhvdCZkaWdlc3QmbmV3Jm5ld3RocmVhZFxcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwic29ydF91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJmaW5kX3J1bGVcXFwiOiBcXFwianM6XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxcXG5cXFxcbi8v5YiX6KGoXFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwnYm9keSYmdGJvZHlbaWRdJyk7XFxcXG5cXFxcbmZvcih2YXIgaT0xO2k8bGlzdC5sZW5ndGgrMTtpKyspe1xcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOiAoaSkrICcuICcgK3BhcnNlRG9tRm9ySHRtbChsaXN0W2ktMV0sJy54c3QmJlRleHQnKSxcXFxcbnVybDoneDU6Ly9odHRwczovL3d3dy41MnBvamllLmNuLycrcGFyc2VEb21Gb3JIdG1sKGxpc3RbaS0xXSwnYSYmaHJlZicpLFxcXFxuY29sX3R5cGU6ICd0ZXh0XzEnfSk7XFxcXG59XFxcXG5cXFxcclxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxuICAgIFxcXCJzZWFyY2hfdXJsXFxcIjogXFxcImh0dHA6Ly96aGFubmVpLmJhaWR1LmNvbS9jc2Uvc2l0ZT9xPSoqJnA9ZnlwYWdlJmNjPTUycG9qaWUuY25cXFwiLFxcbiAgICBcXFwiZ3JvdXBcXFwiOiBcXFwi4pGg5o6o6I2QXFxcIixcXG4gICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwiYm9keSYmLnJlc3VsdDtcXFxcbmgzJiZUZXh0O1xcXFxuYSYmaHJlZjtcXFxcbio7XFxcXG4uYy1hYnN0cmFjdCYmVGV4dDtcXFxcbipcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwic2RldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ1YVxcXCI6IFxcXCJwY1xcXCIsXFxuICAgIFxcXCJwcmVSdWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJwYWdlc1xcXCI6IFxcXCJbXVxcXCIsXFxuICAgIFxcXCJpY29uXFxcIjogXFxcImh0dHBzOi8vd3d3LjUycG9qaWUuY24vZmF2aWNvbi5pY29cXFwiXFxufSwge1xcbiAgICBcXFwibGFzdF9jaGFwdGVyX3J1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInRpdGxlXFxcIjogXFxcIlpENDIz8J+HqPCfh7NcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIk5hbW9cXFwiLFxcbiAgICBcXFwidXJsXFxcIjogXFxcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL3BhZ2UvZnlwYWdlXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiAwLFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCIsXFxuICAgIFxcXCJjbGFzc19uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJjbGFzc191cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImFyZWFfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiYXJlYV91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNvcnRfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImZpbmRfcnVsZVxcXCI6IFxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoZ2V0UmVzQ29kZSgpLCAnLmNvbnRlbnQtd3JhcCYmLmV4Y2VycHQmJmxpJyk7XFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICdoMiYmVGV4dCcpLFxcXFxuICAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5pbmZvJiZUZXh0JyksXFxcXG5cXFxcdCAgICAgIHBpY191cmw6cGFyc2VEb20obGlzdFtpXSwnaW1nJiZzcmMnKSxcXFxcbiAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2ldLCAnYSYmaHJlZicpLFxcXFxuICAgIH0pXFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRIb21lUmVzdWx0KHJlcyk7XFxcIixcXG4gICAgXFxcInNlYXJjaF91cmxcXFwiOiBcXFwiaHR0cHM6Ly93d3cuNDIzZG93bi5jb20vcGFnZS9meXBhZ2U/cz0qKlxcXCIsXFxuICAgIFxcXCJncm91cFxcXCI6IFxcXCLlhbblroNcXFwiLFxcbiAgICBcXFwic2VhcmNoRmluZFxcXCI6IFxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoZ2V0UmVzQ29kZSgpLCAnLmNvbnRlbnQtd3JhcCYmLmV4Y2VycHQmJmxpJyk7XFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICdoMiYmVGV4dCcpLFxcXFxuICAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5pbmZvJiZUZXh0JyksICAgICAgICBcXFxcbiAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2ldLCAnYSYmaHJlZicpLFxcXFxuICAgIH0pXFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRIb21lUmVzdWx0KHJlcyk7XFxcIixcXG4gICAgXFxcImRldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcImRldGFpbF9maW5kX3J1bGVcXFwiOiBcXFwianM6dmFyIHJlcz17fTtcXFxcbnZhciBkID0gW107XFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxiaWc+XFxcXFxcXCIgKyBwYXJzZURvbUZvckh0bWwoZ2V0UmVzQ29kZSgpLCBcXFxcXFxcImgxJiZUZXh0XFxcXFxcXCIpICsgXFxcXFxcXCI8L2JpZz5cXFxcXFxcIixcXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGdldFJlc0NvZGUoKSwgXFxcXFxcXCIuZW50cnkmJkh0bWxcXFxcXFxcIiksXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHRleHRTaXplOiAxNixcXFxcbiAgICAgICAgY2xpY2s6IHRydWVcXFxcbiAgICB9XFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFwiLFxcbiAgICBcXFwic2RldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcIipcXFwiLFxcbiAgICBcXFwidWFcXFwiOiBcXFwicGNcXFwiLFxcbiAgICBcXFwicHJlUnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwicGFnZXNcXFwiOiBcXFwiW11cXFwiLFxcbiAgICBcXFwiaWNvblxcXCI6IFxcXCJcXFwiXFxufSwge1xcbiAgICBcXFwibGFzdF9jaGFwdGVyX3J1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInRpdGxlXFxcIjogXFxcIuiQveWwmOS5i+acqPCfh6jwn4ezXFxcIixcXG4gICAgXFxcImF1dGhvclxcXCI6IFxcXCJOYW1vXFxcIixcXG4gICAgXFxcInVybFxcXCI6IFxcXCJodHRwczovL3d3dy5sdW9jaGVuemhpbXUuY29tL3BhZ2UvZnlwYWdlXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiAxLFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCIsXFxuICAgIFxcXCJjbGFzc19uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJjbGFzc191cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImFyZWFfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiYXJlYV91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNvcnRfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImZpbmRfcnVsZVxcXCI6IFxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoZ2V0UmVzQ29kZSgpLCAnLmNvbnRlbnQmJi5leGNlcnB0Jyk7XFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICdoMiYmVGV4dCcpLFxcXFxuICAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5tZXRhJiZUZXh0JyksXFxcXG4gICAgICAgIHBpY191cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdpbWcmJmRhdGEtc3JjJyksXFxcXG4gICAgICAgIHVybDogcGFyc2VEb20obGlzdFtpXSwgJ2EmJmhyZWYnKSArIFxcXFxcXFwiO2dldDtVVEYtODt7VXNlci1BZ2VudEBcXFxcXFxcIiArIFBDX1VBICsgXFxcXFxcXCJ9XFxcXFxcXCIsXFxcXG4gICAgfSlcXFxcbn1cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldEhvbWVSZXN1bHQocmVzKTtcXFwiLFxcbiAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJodHRwczovL3d3dy40MjNkb3duLmNvbS9wYWdlL2Z5cGFnZT9zPSoqXFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuWFtuWug1xcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksICcuY29udGVudC13cmFwJiYuZXhjZXJwdCYmbGknKTtcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJ2gyJiZUZXh0JyksXFxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLmluZm8mJlRleHQnKSwgICAgICAgIFxcXFxuICAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdhJiZocmVmJyksXFxcXG4gICAgfSlcXFxcbn1cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldEhvbWVSZXN1bHQocmVzKTtcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJqczp2YXIgcmVzPXt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbmQucHVzaCh7XFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsXFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPGJpZz5cXFxcXFxcIiArIHBhcnNlRG9tRm9ySHRtbChnZXRSZXNDb2RlKCksIFxcXFxcXFwiaDEmJlRleHRcXFxcXFxcIikgKyBcXFxcXFxcIjwvYmlnPlxcXFxcXFwiLFxcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwoZ2V0UmVzQ29kZSgpLCBcXFxcXFxcIi5hcnRpY2xlLWNvbnRlbnQmJkh0bWxcXFxcXFxcIikuc3BsaXQoJ3B1c2goe30pOycpWzFdLFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICB0ZXh0U2l6ZTogMTYsXFxcXG4gICAgICAgIGNsaWNrOiB0cnVlXFxcXG4gICAgfVxcXFxufSk7XFxcXG5zZXRSZXN1bHQoZCk7XFxcIixcXG4gICAgXFxcInNkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCIqXFxcIixcXG4gICAgXFxcInVhXFxcIjogXFxcInBjXFxcIixcXG4gICAgXFxcInByZVJ1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInBhZ2VzXFxcIjogXFxcIltdXFxcIixcXG4gICAgXFxcImljb25cXFwiOiBcXFwiXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLliIbkuqvogIVcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIuWwj/CflKXmmJ9cXFwiLFxcbiAgICBcXFwidXJsXFxcIjogXFxcImh0dHBzOi8vc2hhcmVydy5jb20vYS9meUFsbC9meXBhZ2UvXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiA5LFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiLFxcbiAgICBcXFwiY2xhc3NfbmFtZVxcXCI6IFxcXCLmiYvmnLrova/ku7Ym6L2m5py66L2v5Lu2JueUteiEkei9r+S7tiZcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcImdhbmh1byZxaWNoZSZqaW5neWFuJlxcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwi55uS5a2Q6L2v5Lu2JlRW6LWE6K6vJueyvumAiVRWXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcInppeXVhbiZ0dnp4Jmp4dHZcXFwiLFxcbiAgICBcXFwic29ydF9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNvcnRfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiZmluZF9ydWxlXFxcIjogXFxcImJvZHkmJi5hcnRpY2xlLWxpc3Q7aW1nJiZhbHQ7aW1nJiZzcmM7LnRpbWUmJlRleHQ7YSYmaHJlZlxcXCIsXFxuICAgIFxcXCJzZWFyY2hfdXJsXFxcIjogXFxcImh0dHBzOi8vc2hhcmVydy5jb20vc2VhcmNoLnBocD9xPSoqJnBhZ2U9ZnlwYWdlXFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuWFtuWug1xcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImJvZHkmJi5hcnRpY2xlLWxpc3Q7aW1nJiZhbHQ7YSYmaHJlZjsudGltZSYmVGV4dDtwLDEmJlRleHQ7aW1nJiZzcmNcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJqczp2YXIgcmVzPXt9O3ZhciBkPVtdO2h0bWw9Z2V0UmVzQ29kZSgpO3RleHQ9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcXFxcXCIuYXJ0LWNvbnRlbnQmJkh0bWxcXFxcXFxcIik7ZC5wdXNoKHt0aXRsZTp0ZXh0LGNvbF90eXBlOidyaWNoX3RleHQnfSk7cmVzLmRhdGE9ZDtzZXRIb21lUmVzdWx0KHJlcyk7XFxcIixcXG4gICAgXFxcInNkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCIqXFxcIixcXG4gICAgXFxcInVhXFxcIjogXFxcIm1vYmlsZVxcXCIsXFxuICAgIFxcXCJwcmVSdWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJwYWdlc1xcXCI6IFxcXCJbXVxcXCIsXFxuICAgIFxcXCJpY29uXFxcIjogXFxcImh0dHBzOi8vejMuYXgxeC5jb20vMjAyMS8xMS8wNS9JbXpTdmQucG5nXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLlj5HnjrDlsI/ova/ku7ZcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIuWxheeEtlxcXCIsXFxuICAgIFxcXCJ1cmxcXFwiOiBcXFwiaHR0cHM6Ly93d3cueDZnLmNvbS9odG1sLzIzLWZ5cGFnZS5odG1sXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiAzLFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiLFxcbiAgICBcXFwiY2xhc3NfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwic29ydF91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJmaW5kX3J1bGVcXFwiOiBcXFwiLmxpc3Qtc29mdCYmbGk7Lmxpc3QtaW5mbyYmYSYmVGV4dDsubGF5dWktY2xlYXImJmltZyYmc3JjOy5saXN0LWNhJiZUZXh0Oy5saXN0LWluZm8mJmEmJmhyZWZcXFwiLFxcbiAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiZ3JvdXBcXFwiOiBcXFwi5YW25a6DXFxcIixcXG4gICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImRldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJ0ZXh0XzNcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJib2R5JiYuYXJ0aWNsZS1kb3duO2EmJlRleHQ7KjsqO2EmJmRhdGEtdXJsXFxcIixcXG4gICAgXFxcInNkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwidWFcXFwiOiBcXFwibW9iaWxlXFxcIixcXG4gICAgXFxcInByZVJ1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInBhZ2VzXFxcIjogXFxcIltdXFxcIixcXG4gICAgXFxcImljb25cXFwiOiBcXFwiXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCJWWEFUXFxcIixcXG4gICAgXFxcImF1dGhvclxcXCI6IFxcXCLlsI/wn5Sl5pifXFxcIixcXG4gICAgXFxcInVybFxcXCI6IFxcXCJodHRwczovL3d3dy52eGF0LmNvbS9meUFsbF9meXBhZ2UuaHRtbFxcXCIsXFxuICAgIFxcXCJ2ZXJzaW9uXFxcIjogMSxcXG4gICAgXFxcImNvbF90eXBlXFxcIjogXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIixcXG4gICAgXFxcImNsYXNzX25hbWVcXFwiOiBcXFwi6L2v5Lu25LiL6L29JldpbmRvd3MmQW5kcm9pZCbnlLXop4bova/ku7YmXFxcIixcXG4gICAgXFxcImNsYXNzX3VybFxcXCI6IFxcXCJSdWFuSmlhblhpYVphaSZXaW5kb3dzJkFuZHJvaWQmVFYmXFxcIixcXG4gICAgXFxcImFyZWFfbmFtZVxcXCI6IFxcXCLkvJjmg6DmtLvliqgm572R56uZ5rqQ56CBJuacjeWKoeWZqCbmioDmnK/mlZnnqIsmXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIllvdUh1aUh1b0RvbmcmV2FuZ1poYW5ZdWFuTWEmVlBTJkppU2h1Smlhb0NoZW5nJlxcXCIsXFxuICAgIFxcXCJzb3J0X25hbWVcXFwiOiBcXFwi5LiA57qn6aG16Z2i5o+Q56S66ZSZ6K+v5Li65rKh5pyJ5LiL5LiA6aG177yBXFxcIixcXG4gICAgXFxcInllYXJfbmFtZVxcXCI6IFxcXCLlhbbku5Ym5ri45oiPJue9keWPi+WIhuS6qyYmXFxcIixcXG4gICAgXFxcInNvcnRfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX3VybFxcXCI6IFxcXCJRaVRhJllvdVhpJldhbmdZb3VGZW5YaWFuZyYmXFxcIixcXG4gICAgXFxcImZpbmRfcnVsZVxcXCI6IFxcXCJib2R5JiYucG9zdDthJiZ0aXRsZTtpbWcmJnNyYzsudGltZSYmVGV4dDthJiZocmVmXFxcIixcXG4gICAgXFxcInNlYXJjaF91cmxcXFwiOiBcXFwiaHR0cHM6Ly93d3cudnhhdC5jb20vc2VhcmNoLnBocD9xPSoqJnBhZ2U9ZnlwYWdlXFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuWFtuWug1xcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImJvZHkmJi5wb3N0O2EmJnRpdGxlO2EmJmhyZWY7LnRpbWUmJlRleHQ7LnBvc3QmJlRleHQ7aW1nJiZzcmNcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJqczp2YXIgcmVzPXt9O3ZhciBkPVtdO2h0bWw9Z2V0UmVzQ29kZSgpO3RleHQ9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcXFxcXCIuYXJ0aWNsZS1jb250ZW50JiZIdG1sXFxcXFxcXCIpO2QucHVzaCh7dGl0bGU6dGV4dCxjb2xfdHlwZToncmljaF90ZXh0J30pO3Jlcy5kYXRhPWQ7c2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwic2RldGFpbF9maW5kX3J1bGVcXFwiOiBcXFwiKlxcXCIsXFxuICAgIFxcXCJ1YVxcXCI6IFxcXCJtb2JpbGVcXFwiLFxcbiAgICBcXFwicHJlUnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwicGFnZXNcXFwiOiBcXFwiW11cXFwiLFxcbiAgICBcXFwiaWNvblxcXCI6IFxcXCJcXFwiXFxufV1cIn1dLFwicGFyYW1zXCI6XCJ7XFxcIlJVTEVcXFwiOntcXFwiYXJlYV91cmxcXFwiOlxcXCJcXFwiLFxcXCJjbGFzc191cmxcXFwiOlxcXCJcXFwiLFxcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzFfbGVmdF9waWNcXFwiLFxcXCJkZXRhaWxfY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8xXFxcIixcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6XFxcImpzOnZhciByZXM9e307XFxcXG52YXIgZCA9IFtdO1xcXFxuZC5wdXNoKHtcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJzigJ3igJ08YmlnPlxcXFxcXFwiICsgcGFyc2VEb21Gb3JIdG1sKGdldFJlc0NvZGUoKSwgXFxcXFxcXCJoMSYmVGV4dFxcXFxcXFwiKSArIFxcXFxcXFwiPC9iaWc+XFxcXFxcXCIsXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChnZXRSZXNDb2RlKCksIFxcXFxcXFwiLmVudHJ5JiZIdG1sXFxcXFxcXCIpLFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICB0ZXh0U2l6ZTogMTYsXFxcXG4gICAgICAgIGNsaWNrOiB0cnVlXFxcXG4gICAgfVxcXFxufSk7XFxcXG5zZXRSZXN1bHQoZCk7XFxcIixcXFwiZmluZF9ydWxlXFxcIjpcXFwianM6XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgJy5jb250ZW50LXdyYXAmJi5leGNlcnB0JiZsaScpO1xcXFxuZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaDImJlRleHQnKSxcXFxcbiAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICcuaW5mbyYmVGV4dCcpLFxcXFxuXFxcXHQgICAgICBwaWNfdXJsOnBhcnNlRG9tKGxpc3RbaV0sJ2ltZyYmc3JjJyksXFxcXG4gICAgICAgIHVybDogcGFyc2VEb20obGlzdFtpXSwgJ2EmJmhyZWYnKSxcXFxcbiAgICB9KVxcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxcImZpcnN0SGVhZGVyXFxcIjpcXFwiY2xhc3NcXFwiLFxcXCJncm91cFxcXCI6XFxcIuWFtuWug1xcXCIsXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjpcXFwiXFxcIixcXFwicGFnZUxpc3RcXFwiOltdLFxcXCJwYWdlc1xcXCI6XFxcIltdXFxcIixcXFwicGFyYW1zXFxcIjp7fSxcXFwicHJlUnVsZVxcXCI6XFxcIlxcXCIsXFxcInNvcnRfdXJsXFxcIjpcXFwiXFxcIixcXFwidGl0bGVcXFwiOlxcXCJaRDQyM/Cfh6jwn4ezXFxcIixcXFwidWFcXFwiOlxcXCJwY1xcXCIsXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL3BhZ2UvMVxcXCIsXFxcInZlcnNpb25cXFwiOjAsXFxcInllYXJfdXJsXFxcIjpcXFwiXFxcIn0sXFxcInBhZ2VUaXRsZVxcXCI6XFxcIuaBkuaYn+aSreaUvuWZqF/jgIzlv6vmkq3jgI3lho3nlJ/nmoTlvbHop4botYTmupDnnIvniYfnpZ7lmaghXFxcIixcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cuNDIzZG93bi5jb20vMTI0NjMuaHRtbFxcXCJ9XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIui1hOa6kOi9u+WQiOmbhlwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tLzEyNDYzLmh0bWxcIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOlxcbnZhciBteUNvbGxlY3Rpb25fZWwgPSBbXVxcblxcbi8vIOWkhOeQhk1ZX1VSTOWSjE1ZX1JVTEVcXG5sZXQgUlVMRSA9IE1ZX1BBUkFNUy5SVUxFXFxuTVlfUlVMRS52ZXJzaW9uID0gUlVMRS52ZXJzaW9uXFxuTVlfUlVMRS5ncm91cCA9IFJVTEUuZ3JvdXBcXG5NWV9SVUxFLnRpdGxlID0gUlVMRS50aXRsZVxcbk1ZX1JVTEUudXJsID0gTVlfVVJMXFxuTVlfUlVMRS51YSA9IFJVTEUudWFcXG5NWV9SVUxFLmNvbF90eXBlID0gUlVMRS5kZXRhaWxfY29sX3R5cGVcXG5NWV9SVUxFLmZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcbk1ZX1JVTEUucHJlUnVsZSA9IFJVTEUucHJlUnVsZVxcbk1ZX1JVTEUucGFnZUxpc3QgPSBSVUxFLnBhZ2VMaXN0XFxuTVlfUlVMRS5wYWdlcyA9IFJVTEUucGFnZXNcXG5NWV9SVUxFLmxhc3RfY2hhcHRlcl9ydWxlID0gUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZVxcbk1ZX1JVTEUucGFyYW1zID0gUlVMRS5wYXJhbXNcXG4vLyDop6PmnpDmraPmlodcXG5pZihNWV9QQVJBTVMucGFnZVRpdGxlKSBzZXRQYWdlVGl0bGUoTVlfUEFSQU1TLnBhZ2VUaXRsZSlcXG5ldmFsKE1ZX1JVTEUucHJlUnVsZSlcXG5zZXRMYXN0Q2hhcHRlclJ1bGUoTVlfUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSlcXG5NWV9QQVJBTVMgPSBNWV9SVUxFLnBhcmFtc1xcbmlmIChNWV9SVUxFLmZpbmRfcnVsZS5zdGFydHNXaXRoKCdqczonKSkge1xcbiAgICBmdW5jdGlvbiBzZXRSZXN1bHQoZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXG4gICAgICAgIHBhcmFtMSA9IENBTExCQUNLX0tFWVxcbiAgICAgICAgcGFyYW0yID0gTVlfUlVMRVxcbiAgICAgICAgcGFyYW0zID0gTVlfVFlQRVxcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWwuZGF0YSkpIGVsID0gZWwuZGF0YVxcblxcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobXlDb2xsZWN0aW9uX2VsLCBlbC5tYXAoKHYpID0+IHtcXG4gICAgICAgICAgICBsZXQgUlVMRSA9IE9iamVjdC5hc3NpZ24oe30sIE1ZX1JVTEUpXFxuICAgICAgICAgICAgdi5jb2xfdHlwZSA9IHYuY29sX3R5cGUgfHwgTVlfUlVMRS5jb2xfdHlwZVxcblxcbiAgICAgICAgICAgIGlmICghdi51cmwpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB2LnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHRpdGxlOiBNWV9SVUxFLnRpdGxlLCBwYWdlczogTVlfUlVMRS5wYWdlcywgcGFnZUxpc3Q6IE1ZX1JVTEUucGFnZUxpc3QsIGZpbmRfcnVsZTogJycsIHBhcmFtczogJycgfSkgKyAnKTsnKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBbXywgdXJsLCBydWxlXSA9IHYudXJsLm1hdGNoKC9eKFtcXFxcc1xcXFxTXSo/KUBydWxlPShbXFxcXHNcXFxcU10qKSQvKVxcbiAgICAgICAgICAgICAgICB2LnVybCA9IHVybFxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBydWxlXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2NvbF90eXBlID0gTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly9wYWdlLycpKSB7XFxuICAgICAgICAgICAgICAgIGlmICh2LnVybC5pbmNsdWRlcygncnVsZT0nKSB8fCAodi5leHRyYSB8fCB7fSkucnVsZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gdi51cmwuc3BsaXQoJyMnKVswXS5tYXRjaCgvXmhpa2VyOlxcXFwvXFxcXC9wYWdlXFxcXC8oLis/KSg/OlxcXFw/LiopPyQvKVsxXSxcXG4gICAgICAgICAgICAgICAgICAgIHN1YlBhZ2UgPSBNWV9SVUxFLnBhZ2VMaXN0LmZpbmQoKHYpID0+IHYucGF0aCA9PSBwYXRoKVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBzdWJQYWdlLnJ1bGVcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXFxuICAgICAgICAgICAgICAgIFJVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxcbiAgICAgICAgICAgIH0gZWxzZSB7IHJldHVybiB2IH1cXG4gICAgICAgICAgICB2LmV4dHJhID0geyB1cmw6IHYudXJsLCBSVUxFOiBSVUxFIH1cXG4gICAgICAgICAgICB2LnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKVxcbiAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICB9KSlcXG4gICAgICAgIG1ldGhvZF9zZXRSZXN1bHQuaW52b2tlKGphdmFDb250ZXh0LCBteUNvbGxlY3Rpb25fZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0SG9tZVJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxuICAgICAgICBzZXRSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBzZXRTZWFyY2hSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZXZhbChNWV9SVUxFLmZpbmRfcnVsZS5zbGljZSgzKSlcXG59IGVsc2Uge1xcbiAgICBjb25zdCB7IHJ1bkNvZGUgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3V0aWxpdHk/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykpXFxuICAgIGxldCBmaW5kUnVsZSA9IE1ZX1JVTEUuZmluZF9ydWxlLnNwbGl0KCc7JylcXG4gICAgcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksIGZpbmRSdWxlLnNoaWZ0KCkpLmZvckVhY2goKGRhdGEpID0+IHtcXG4gICAgICAgIGxldCBbdGl0bGUsIGltZywgZGVzYywgdXJsXSA9IGZpbmRSdWxlLm1hcCgodiwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gJyonKSByZXR1cm4gJydcXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdiA9IChpID09IDEgfHwgaSA9PSAzKSA/XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChkYXRhLCB2KVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gMykgdiA9IHJ1bkNvZGUodilcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgcmVzID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9XFxuICAgICAgICBpZiAocmVzLnVybCAmJiByZXMudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpXFxuICAgICAgICAgICAgcmVzLnVybCA9IHJlcy51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyB0aXRsZTogTVlfUlVMRS50aXRsZSwgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7JylcXG4gICAgICAgIG15Q29sbGVjdGlvbl9lbC5wdXNoKHJlcylcXG4gICAgfSlcXG4gICAgc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcXG59XFxuXCIsXCJncm91cFwiOlwi4pGg6L275ZCI6ZuGXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJzZXRJdGVtKCdteUNvbGxlY3Rpb24nLCBNWV9SVUxFLnRpdGxlKVwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwidGV4dF8xXFxcIixcXFwibmFtZVxcXCI6XFxcIkNsYXNzVGFiXFxcIixcXFwicGF0aFxcXCI6XFxcIkNsYXNzVGFiXFxcIixcXFwicnVsZVxcXCI6XFxcImZ1bmN0aW9uIENsYXNzVGFiKGNsYXNzQXJyYXksIHBhcmFtcykge1xcXFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKVxcXFxuICAgIHRoaXMuYXJyID0gY2xhc3NBcnJheS5tYXAodiA9PiB0aGlzLmluaXQodikpXFxcXG4gICAgdGhpcy5zaWduID0gJyQnICsgTVlfUlVMRS50aXRsZSArICdfJyArICh0aGlzLm5hbWUgfHwgJycpICsgJ18nXFxcXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29sb3IgfHwgJyMxMmI2NjgnXFxcXG4gICAgdGhpcy5ib3VuZGFyeSA9IHRoaXMuYm91bmRhcnkgfHwgJ2JsYW5rX2Jsb2NrJ1xcXFxufVxcXFxuQ2xhc3NUYWIucHJvdG90eXBlID0ge1xcXFxuICAgIGNvbnN0cnVjdG9yOiBDbGFzc1RhYixcXFxcbiAgICBsb2FkKGVsKSB7XFxcXG4gICAgICAgIGxldCBmb2xkZWQgPSBnZXRWYXIoJ2ZvbGRfJyArIHRoaXMuc2lnbiwgJycpXFxcXG4gICAgICAgIGlmICh0aGlzLmZvbGQpIGVsLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiMwNDllZmZcXFxcXFxcIj4nICsgKGZvbGRlZCA/ICfilrYnIDogJ+KWvCcpLFxcXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWduLCBmb2xkZWQpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ2ZvbGRfJyArIHNpZ24sIHsgJyc6ICdUJywgJ1QnOiAnJyB9IFtmb2xkZWRdKVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgICAgIH0sIHRoaXMuc2lnbiwgZm9sZGVkKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgbGV0IGFyciA9IGZvbGRlZCA/IFt0aGlzLmFyclswXV0gOiB0aGlzLmFyclxcXFxuICAgICAgICBhcnIuZm9yRWFjaCgodikgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IHsgaWQsIGNsYXNzX25hbWUsIGNsYXNzX3VybCB9ID0gdixcXFxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0Q2xhc3MoaWQpKVxcXFxuICAgICAgICAgICAgY2xhc3NfbmFtZS5mb3JFYWNoKChuYW1lLCBpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9IGNsYXNzX3VybFtpXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgbm93ID0gSlNPTi5zdHJpbmdpZnkoeyBuYW1lOiBuYW1lLCB1cmw6IHVybCB9KVxcXFxuICAgICAgICAgICAgICAgIGVsLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogKHNlbGVjdGVkID09IG5vdyA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOicgKyB0aGlzLmNvbG9yICsgJ1xcXFxcXFwiPjxiPicgOiAnJykgKyBuYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZ24sIGlkLCBub3cpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihzaWduICsgaWQsIG5vdylcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihzaWduLCBub3cpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5zaWduLCBpZCwgbm93KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgZWwucHVzaCh7IGNvbF90eXBlOiB0aGlzLmJvdW5kYXJ5IH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICBpbml0KGNsYXNzT2JqZWN0KSB7XFxcXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NPYmplY3QuY2xhc3NfbmFtZSA9PSAnc3RyaW5nJylcXFxcbiAgICAgICAgICAgIGNsYXNzT2JqZWN0LmNsYXNzX25hbWUgPSBjbGFzc09iamVjdC5jbGFzc19uYW1lLnNwbGl0KCcmJylcXFxcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc09iamVjdC5jbGFzc191cmwgPT0gJ3N0cmluZycpXFxcXG4gICAgICAgICAgICBjbGFzc09iamVjdC5jbGFzc191cmwgPSBjbGFzc09iamVjdC5jbGFzc191cmwuc3BsaXQoJyYnKVxcXFxuICAgICAgICByZXR1cm4gY2xhc3NPYmplY3RcXFxcbiAgICB9LFxcXFxuICAgIHB1c2goY2xhc3NPYmplY3QpIHtcXFxcbiAgICAgICAgdGhpcy5hcnIucHVzaCh0aGlzLmluaXQoY2xhc3NPYmplY3QpKVxcXFxuICAgIH0sXFxcXG4gICAgZ2V0Q2xhc3MoaWQpIHtcXFxcbiAgICAgICAgbGV0IGRlZmF1bHRDbGFzcyA9IHRoaXMuYXJyLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IGlkKVxcXFxuICAgICAgICBpZiAoZGVmYXVsdENsYXNzKSBkZWZhdWx0Q2xhc3MgPSBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICBuYW1lOiBkZWZhdWx0Q2xhc3MuY2xhc3NfbmFtZVswXSxcXFxcbiAgICAgICAgICAgIHVybDogZGVmYXVsdENsYXNzLmNsYXNzX3VybFswXVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZpbmQgaWQ6ICcgKyBpZCArICcgaW4gY2xhc3NUYWI6ICcgKyB0aGlzLnNpZ24pXFxcXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGdldFZhcih0aGlzLnNpZ24gKyBpZCwgZGVmYXVsdENsYXNzKSlcXFxcbiAgICB9LFxcXFxuICAgIGdldExhc3RDbGljaygpIHtcXFxcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZ2V0VmFyKHRoaXMuc2lnbiwgJ3t9JykpXFxcXG4gICAgfSxcXFxcbiAgICBzZXRVcmwodXJsKSB7XFxcXG4gICAgICAgIHJldHVybiB1cmwucmVwbGFjZSgvXFxcXFxcXFwkXFxcXFxcXFx7KFtefV0qKVxcXFxcXFxcfS9nLCAoXywgaWQpID0+IHRoaXMuZ2V0Q2xhc3MoaWQpLnVybClcXFxcbiAgICB9XFxcXG59XFxcXG4kLmV4cG9ydHMgPSBDbGFzc1RhYlxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aaW6aG1XFxcIixcXFwicGF0aFxcXCI6XFxcImluZGV4TG9hZFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbmxldCBteUNvbGxlY3Rpb25fZWwgPSBbXSxcXFxcbiAgICBwYWdlTnVtID0gcGFyc2VJbnQoTVlfVVJMLnNwbGl0KCcjJylbMV0pLFxcXFxuICAgIFJVTEUgPSBNWV9QQVJBTVMuUlVMRSxcXFxcbiAgICBmeUFsbCA9IFJVTEUudXJsLmluY2x1ZGVzKCdmeUFsbCcpLFxcXFxuICAgIC8vIOWKoOi9vUNsYXNzVGFi57uE5Lu2XFxcXG4gICAgQ2xhc3NUYWIgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9DbGFzc1RhYj9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSksXFxcXG4gICAgdGFiSGVhZGVyID0gW11cXFxcblxcXFxuaWYgKFJVTEUuY2xhc3NfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcXFxuICAgIGlkOiBmeUFsbCA/ICdmeUFsbCcgOiAnZnljbGFzcycsXFxcXG4gICAgY2xhc3NfbmFtZTogUlVMRS5jbGFzc19uYW1lLFxcXFxuICAgIGNsYXNzX3VybDogUlVMRS5jbGFzc191cmxcXFxcbn0pXFxcXG5pZiAoUlVMRS5hcmVhX25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXFxcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5YXJlYScsXFxcXG4gICAgY2xhc3NfbmFtZTogUlVMRS5hcmVhX25hbWUsXFxcXG4gICAgY2xhc3NfdXJsOiBSVUxFLmFyZWFfdXJsXFxcXG59KVxcXFxuaWYgKFJVTEUueWVhcl9uYW1lKSB0YWJIZWFkZXIucHVzaCh7XFxcXG4gICAgaWQ6IGZ5QWxsID8gJ2Z5QWxsJyA6ICdmeXllYXInLFxcXFxuICAgIGNsYXNzX25hbWU6IFJVTEUueWVhcl9uYW1lLFxcXFxuICAgIGNsYXNzX3VybDogUlVMRS55ZWFyX3VybFxcXFxufSlcXFxcbmlmIChSVUxFLnNvcnRfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcXFxuICAgIGlkOiBmeUFsbCA/ICdmeUFsbCcgOiAnZnlzb3J0JyxcXFxcbiAgICBjbGFzc19uYW1lOiBSVUxFLnNvcnRfbmFtZSxcXFxcbiAgICBjbGFzc191cmw6IFJVTEUuc29ydF91cmxcXFxcbn0pXFxcXG50YWJIZWFkZXIgPSBuZXcgQ2xhc3NUYWIodGFiSGVhZGVyLCB7IG5hbWU6IFJVTEUudGl0bGUgfSlcXFxcbmlmIChwYWdlTnVtID09IDEpIHtcXFxcbiAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICdjbGVhclZhcihcXFxcXFxcIm15Q29sbGVjdGlvbi1zZWFyY2hNb2RlXFxcXFxcXCIpJylcXFxcbiAgICBwdXRWYXIoJ215Q29sbGVjdGlvbi1zZWFyY2hNb2RlJywgUlVMRS50aXRsZSlcXFxcbiAgICB0YWJIZWFkZXIubG9hZChteUNvbGxlY3Rpb25fZWwpXFxcXG4gICAgaWYgKFJVTEUuc2VhcmNoX3VybCkgbXlDb2xsZWN0aW9uX2VsLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLmkJzntKJcXFxcXFxcIixcXFxcbiAgICAgICAgZGVzYzogXFxcXFxcXCLmkJzkvaDmg7PopoHnmoQuLi5cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAnXFxcXFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXFxcXFwiK2lucHV0K1xcXFxcXFwiJnJ1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpICsgJ1xcXFxcXFwiJyxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiaW5wdXRcXFxcXFxcIixcXFxcbiAgICB9KVxcXFxufVxcXFxuLy8g5aSE55CGTVlfVVJM5ZKMTVlfUlVMRVxcXFxuTVlfUlVMRS52ZXJzaW9uID0gUlVMRS52ZXJzaW9uXFxcXG5NWV9SVUxFLmdyb3VwID0gUlVMRS5ncm91cFxcXFxuTVlfUlVMRS50aXRsZSA9IFJVTEUudGl0bGVcXFxcbk1ZX1JVTEUudWEgPSBSVUxFLnVhXFxcXG5NWV9SVUxFLmNvbF90eXBlID0gUlVMRS5jb2xfdHlwZVxcXFxuTVlfUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBSVUxFLmRldGFpbF9jb2xfdHlwZVxcXFxuTVlfUlVMRS5maW5kX3J1bGUgPSBSVUxFLmZpbmRfcnVsZVxcXFxuTVlfUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gUlVMRS5kZXRhaWxfZmluZF9ydWxlXFxcXG5NWV9SVUxFLnByZVJ1bGUgPSBSVUxFLnByZVJ1bGVcXFxcbk1ZX1JVTEUucGFnZUxpc3QgPSBKU09OLnBhcnNlKFJVTEUucGFnZXMgfHwgJ1tdJylcXFxcbk1ZX1JVTEUucGFnZXMgPSBKU09OLnN0cmluZ2lmeShNWV9SVUxFLnBhZ2VMaXN0KVxcXFxuTVlfUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSA9IFJVTEUubGFzdF9jaGFwdGVyX3J1bGVcXFxcbk1ZX1JVTEUucGFyYW1zID0ge31cXFxcblxcXFxuY29uc3QgeyBydW5Db2RlLCB1cmxQYXJzZSB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdXRpbGl0eT9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSlcXFxcbnZhciB7IE1ZX1VSTCwgaW5kZXhIdG1sIH0gPSB1cmxQYXJzZShSVUxFLnVybCwgcGFnZU51bSwgKHVybCkgPT4ge1xcXFxuICAgIHVybFswXSA9IGZ5QWxsID8gdXJsWzBdLnJlcGxhY2UoL2Z5QWxsL2csICckJHtmeUFsbH0nKSA6IHVybFswXS5yZXBsYWNlKC9meShjbGFzc3xhcmVhfHllYXJ8c29ydCkvZywgJyQke2Z5JDF9JylcXFxcbiAgICB1cmxbMF0gPSB0YWJIZWFkZXIuc2V0VXJsKHVybFswXSlcXFxcbn0pXFxcXG5NWV9SVUxFLnVybCA9IE1ZX1VSTFxcXFxuLy8g5q2j5paH6Kej5p6QXFxcXG5pZiAocGFnZU51bSA9PSAxKSBldmFsKE1ZX1JVTEUucHJlUnVsZSlcXFxcbmlmIChNWV9SVUxFLmZpbmRfcnVsZS5zdGFydHNXaXRoKCdqczonKSkge1xcXFxuICAgIGZ1bmN0aW9uIGdldFVybCgpIHtcXFxcbiAgICAgICAgcmV0dXJuIE1ZX1VSTFxcXFxuICAgIH1cXFxcblxcXFxuICAgIGZ1bmN0aW9uIGdldFJlc0NvZGUoKSB7XFxcXG4gICAgICAgIHJldHVybiBpbmRleEh0bWxcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBmdW5jdGlvbiBzZXRSZXN1bHQoZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXFxcbiAgICAgICAgcGFyYW0xID0gQ0FMTEJBQ0tfS0VZXFxcXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEVcXFxcbiAgICAgICAgcGFyYW0zID0gTVlfVFlQRVxcXFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbC5kYXRhKSkgZWwgPSBlbC5kYXRhXFxcXG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG15Q29sbGVjdGlvbl9lbCwgZWwubWFwKCh2KSA9PiB7XFxcXG4gICAgICAgICAgICBsZXQgUlVMRSA9IE9iamVjdC5hc3NpZ24oe30sIE1ZX1JVTEUpXFxcXG4gICAgICAgICAgICB2LmNvbF90eXBlID0gdi5jb2xfdHlwZSB8fCBNWV9SVUxFLmNvbF90eXBlXFxcXG5cXFxcbiAgICAgICAgICAgIGlmICghdi51cmwpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5pbmNsdWRlcygnQGxhenlSdWxlPScpKSB7XFxcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB2LnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcXFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyB0aXRsZTogTVlfUlVMRS50aXRsZSwgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7JylcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5pbmNsdWRlcygnQHJ1bGU9JykpIHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgW18sIHVybCwgcnVsZV0gPSB2LnVybC5tYXRjaCgvXihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KUBydWxlPShbXFxcXFxcXFxzXFxcXFxcXFxTXSopJC8pXFxcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB1cmxcXFxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBydWxlXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBNWV9SVUxFLmNvbF90eXBlXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSkge1xcXFxuICAgICAgICAgICAgICAgIGlmICh2LnVybC5pbmNsdWRlcygncnVsZT0nKSB8fCAodi5leHRyYSB8fCB7fSkucnVsZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcXFxcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHYudXJsLnNwbGl0KCcjJylbMF0ubWF0Y2goL15oaWtlcjpcXFxcXFxcXC9cXFxcXFxcXC9wYWdlXFxcXFxcXFwvKC4rPykoPzpcXFxcXFxcXD8uKik/JC8pWzFdLFxcXFxuICAgICAgICAgICAgICAgICAgICBzdWJQYWdlID0gTVlfUlVMRS5wYWdlTGlzdC5maW5kKCh2KSA9PiB2LnBhdGggPT0gcGF0aClcXFxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9maW5kX3J1bGUgPSBzdWJQYWdlLnJ1bGVcXFxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9jb2xfdHlwZSA9IHN1YlBhZ2UuY29sX3R5cGVcXFxcbiAgICAgICAgICAgICAgICBSVUxFLnBhcmFtcyA9IHYuZXh0cmEgfHwge31cXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIU1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSkgeyByZXR1cm4gdiB9XFxcXG4gICAgICAgICAgICB2LmV4dHJhID0geyB1cmw6IHYudXJsLCBSVUxFOiBSVUxFLCBwYWdlVGl0bGU6IHYudGl0bGUgfVxcXFxuICAgICAgICAgICAgdi51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcXFxcbiAgICAgICAgICAgIHJldHVybiB2XFxcXG4gICAgICAgIH0pKVxcXFxuICAgICAgICBtZXRob2Rfc2V0UmVzdWx0Lmludm9rZShqYXZhQ29udGV4dCwgbXlDb2xsZWN0aW9uX2VsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcXFxuICAgIH1cXFxcblxcXFxuICAgIGZ1bmN0aW9uIHNldEhvbWVSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcXFxuICAgICAgICBzZXRSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBmdW5jdGlvbiBzZXRTZWFyY2hSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcXFxuICAgICAgICBzZXRSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBldmFsKE1ZX1JVTEUuZmluZF9ydWxlLnNsaWNlKDMpKVxcXFxufSBlbHNlIHtcXFxcbiAgICBsZXQgZmluZFJ1bGUgPSBNWV9SVUxFLmZpbmRfcnVsZS5zcGxpdCgnOycpXFxcXG4gICAgcGFyc2VEb21Gb3JBcnJheShpbmRleEh0bWwsIGZpbmRSdWxlLnNoaWZ0KCkpLmZvckVhY2goKGRhdGEpID0+IHtcXFxcbiAgICAgICAgbGV0IFt0aXRsZSwgaW1nLCBkZXNjLCB1cmxdID0gZmluZFJ1bGUubWFwKCh2LCBpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gJyonKSByZXR1cm4gJydcXFxcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB2ID0gKGkgPT0gMSB8fCBpID09IDMpID9cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tKGRhdGEsIHYpIDpcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChkYXRhLCB2KVxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAzKSB2ID0gcnVuQ29kZSh2KVxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG4gICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgIHJlcyA9IHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogTVlfUlVMRS5jb2xfdHlwZVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICBpZiAocmVzLnVybCkge1xcXFxuICAgICAgICAgICAgaWYgKHJlcy51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcXFxuICAgICAgICAgICAgICAgIHJlcy51cmwgPSByZXMudXJsLnJlcGxhY2UoJy5qczonLCAnLmpzOlxcXFxcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHRpdGxlOiBNWV9SVUxFLnRpdGxlLCBwYWdlczogTVlfUlVMRS5wYWdlcywgcGFnZUxpc3Q6IE1ZX1JVTEUucGFnZUxpc3QsIGZpbmRfcnVsZTogJycsIHBhcmFtczogJycgfSkgKyAnKTsnKVxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUpIHtcXFxcbiAgICAgICAgICAgICAgICByZXMudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWxMb2FkP3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpXFxcXG4gICAgICAgICAgICAgICAgcmVzLmV4dHJhID0geyB1cmw6IHVybCwgUlVMRTogTVlfUlVMRSwgcGFnZVRpdGxlOiB0aXRsZSAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIG15Q29sbGVjdGlvbl9lbC5wdXNoKHJlcylcXFxcbiAgICB9KVxcXFxuICAgIHNldFJlc3VsdChteUNvbGxlY3Rpb25fZWwpXFxcXG59XFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLor6bmg4VcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZGV0YWlsTG9hZFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBteUNvbGxlY3Rpb25fZWwgPSBbXVxcXFxuXFxcXG4vLyDlpITnkIZNWV9VUkzlkoxNWV9SVUxFXFxcXG5sZXQgUlVMRSA9IE1ZX1BBUkFNUy5SVUxFXFxcXG5NWV9SVUxFLnZlcnNpb24gPSBSVUxFLnZlcnNpb25cXFxcbk1ZX1JVTEUuZ3JvdXAgPSBSVUxFLmdyb3VwXFxcXG5NWV9SVUxFLnRpdGxlID0gUlVMRS50aXRsZVxcXFxuTVlfUlVMRS51cmwgPSBNWV9VUkxcXFxcbk1ZX1JVTEUudWEgPSBSVUxFLnVhXFxcXG5NWV9SVUxFLmNvbF90eXBlID0gUlVMRS5kZXRhaWxfY29sX3R5cGVcXFxcbk1ZX1JVTEUuZmluZF9ydWxlID0gUlVMRS5kZXRhaWxfZmluZF9ydWxlXFxcXG5NWV9SVUxFLnByZVJ1bGUgPSBSVUxFLnByZVJ1bGVcXFxcbk1ZX1JVTEUucGFnZUxpc3QgPSBSVUxFLnBhZ2VMaXN0XFxcXG5NWV9SVUxFLnBhZ2VzID0gUlVMRS5wYWdlc1xcXFxuTVlfUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSA9IFJVTEUubGFzdF9jaGFwdGVyX3J1bGVcXFxcbk1ZX1JVTEUucGFyYW1zID0gUlVMRS5wYXJhbXNcXFxcbi8vIOino+aekOato+aWh1xcXFxuaWYoTVlfUEFSQU1TLnBhZ2VUaXRsZSkgc2V0UGFnZVRpdGxlKE1ZX1BBUkFNUy5wYWdlVGl0bGUpXFxcXG5ldmFsKE1ZX1JVTEUucHJlUnVsZSlcXFxcbnNldExhc3RDaGFwdGVyUnVsZShNWV9SVUxFLmxhc3RfY2hhcHRlcl9ydWxlKVxcXFxuTVlfUEFSQU1TID0gTVlfUlVMRS5wYXJhbXNcXFxcbmlmIChNWV9SVUxFLmZpbmRfcnVsZS5zdGFydHNXaXRoKCdqczonKSkge1xcXFxuICAgIGZ1bmN0aW9uIHNldFJlc3VsdChlbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcXFxuICAgICAgICBwYXJhbTEgPSBDQUxMQkFDS19LRVlcXFxcbiAgICAgICAgcGFyYW0yID0gTVlfUlVMRVxcXFxuICAgICAgICBwYXJhbTMgPSBNWV9UWVBFXFxcXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsLmRhdGEpKSBlbCA9IGVsLmRhdGFcXFxcblxcXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShteUNvbGxlY3Rpb25fZWwsIGVsLm1hcCgodikgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IFJVTEUgPSBPYmplY3QuYXNzaWduKHt9LCBNWV9SVUxFKVxcXFxuICAgICAgICAgICAgdi5jb2xfdHlwZSA9IHYuY29sX3R5cGUgfHwgTVlfUlVMRS5jb2xfdHlwZVxcXFxuXFxcXG4gICAgICAgICAgICBpZiAoIXYudXJsKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcXFxuICAgICAgICAgICAgICAgIHYudXJsID0gdi51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXFxcXFxuaWYoTVlfUlVMRSlPYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KHsgdGl0bGU6IE1ZX1JVTEUudGl0bGUsIHBhZ2VzOiBNWV9SVUxFLnBhZ2VzLCBwYWdlTGlzdDogTVlfUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpOycpXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IFtfLCB1cmwsIHJ1bGVdID0gdi51cmwubWF0Y2goL14oW1xcXFxcXFxcc1xcXFxcXFxcU10qPylAcnVsZT0oW1xcXFxcXFxcc1xcXFxcXFxcU10qKSQvKVxcXFxuICAgICAgICAgICAgICAgIHYudXJsID0gdXJsXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gcnVsZVxcXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2NvbF90eXBlID0gTVlfUlVMRS5jb2xfdHlwZVxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5zdGFydHNXaXRoKCdoaWtlcjovL3BhZ2UvJykpIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAodi51cmwuaW5jbHVkZXMoJ3J1bGU9JykgfHwgKHYuZXh0cmEgfHwge30pLnJ1bGUpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSB2LnVybC5zcGxpdCgnIycpWzBdLm1hdGNoKC9eaGlrZXI6XFxcXFxcXFwvXFxcXFxcXFwvcGFnZVxcXFxcXFxcLyguKz8pKD86XFxcXFxcXFw/LiopPyQvKVsxXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgc3ViUGFnZSA9IE1ZX1JVTEUucGFnZUxpc3QuZmluZCgodikgPT4gdi5wYXRoID09IHBhdGgpXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5wYXJhbXMgPSB2LmV4dHJhIHx8IHt9XFxcXG4gICAgICAgICAgICB9IGVsc2UgeyByZXR1cm4gdiB9XFxcXG4gICAgICAgICAgICB2LmV4dHJhID0geyB1cmw6IHYudXJsLCBSVUxFOiBSVUxFIH1cXFxcbiAgICAgICAgICAgIHYudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWxMb2FkP3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpXFxcXG4gICAgICAgICAgICByZXR1cm4gdlxcXFxuICAgICAgICB9KSlcXFxcbiAgICAgICAgbWV0aG9kX3NldFJlc3VsdC5pbnZva2UoamF2YUNvbnRleHQsIG15Q29sbGVjdGlvbl9lbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBmdW5jdGlvbiBzZXRIb21lUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXFxcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZnVuY3Rpb24gc2V0U2VhcmNoUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXFxcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZXZhbChNWV9SVUxFLmZpbmRfcnVsZS5zbGljZSgzKSlcXFxcbn0gZWxzZSB7XFxcXG4gICAgY29uc3QgeyBydW5Db2RlIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91dGlsaXR5P3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpKVxcXFxuICAgIGxldCBmaW5kUnVsZSA9IE1ZX1JVTEUuZmluZF9ydWxlLnNwbGl0KCc7JylcXFxcbiAgICBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgZmluZFJ1bGUuc2hpZnQoKSkuZm9yRWFjaCgoZGF0YSkgPT4ge1xcXFxuICAgICAgICBsZXQgW3RpdGxlLCBpbWcsIGRlc2MsIHVybF0gPSBmaW5kUnVsZS5tYXAoKHYsIGkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSAnKicpIHJldHVybiAnJ1xcXFxuICAgICAgICAgICAgICAgICAgICBlbHNlIHYgPSAoaSA9PSAxIHx8IGkgPT0gMykgP1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb21Gb3JIdG1sKGRhdGEsIHYpXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9IDMpIHYgPSBydW5Db2RlKHYpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXFxcbiAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgcmVzID0ge1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBNWV9SVUxFLmNvbF90eXBlXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIGlmIChyZXMudXJsICYmIHJlcy51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSlcXFxcbiAgICAgICAgICAgIHJlcy51cmwgPSByZXMudXJsLnJlcGxhY2UoJy5qczonLCAnLmpzOlxcXFxcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHRpdGxlOiBNWV9SVUxFLnRpdGxlLCBwYWdlczogTVlfUlVMRS5wYWdlcywgcGFnZUxpc3Q6IE1ZX1JVTEUucGFnZUxpc3QsIGZpbmRfcnVsZTogJycsIHBhcmFtczogJycgfSkgKyAnKTsnKVxcXFxuICAgICAgICBteUNvbGxlY3Rpb25fZWwucHVzaChyZXMpXFxcXG4gICAgfSlcXFxcbiAgICBzZXRSZXN1bHQobXlDb2xsZWN0aW9uX2VsKVxcXFxufVxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pWw5o2u6L295YWlXFxcIixcXFwicGF0aFxcXCI6XFxcImRhdGFMb2FkXFxcIixcXFwicnVsZVxcXCI6XFxcIi8v55yf5q2j6I635Y+W5pWw5o2u55qE6YC76L6RXFxcXG5mdW5jdGlvbiBsb2FkKCkge1xcXFxuICAgIGxldCB1cmwgPSAnaGlrZXI6Ly9wYWdlL2RhdGEnLFxcXFxuICAgICAgICBkID0gW11cXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBkID0gZmV0Y2godXJsKVxcXFxuICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSlcXFxcbiAgICAgICAgICAgIGQgPSBKU09OLnBhcnNlKGQpLnJ1bGVcXFxcbiAgICAgICAgZCA9IEpTT04ucGFyc2UoZClcXFxcbiAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgIGQgPSBbXVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gZC5maWx0ZXIoKHYpID0+IHsgcmV0dXJuIHYudGl0bGUgIT0gTVlfUlVMRS50aXRsZSAmJiB2LmF1dGhvciAhPSAn6L275ZCI6ZuG55Sf5oiQ5ZmoJyB9KVxcXFxufVxcXFxuLy/mo4Dmn6Xpl7TpmpTvvIzpu5jorqTkuIDlpKlcXFxcbmxldCBtaW4gPSA2MCAqIDI0ICogMVxcXFxuXFxcXG5sZXQgZGF0YSA9IFtdXFxcXG5sZXQgdGltZSA9IGdldEl0ZW0oJ3VwZGF0ZXRpbWUnLCAnMCcpXFxcXG50aW1lID0gcGFyc2VJbnQodGltZSlcXFxcbmxldCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxcXFxuaWYgKG5vdyAtIHRpbWUgPiAxMDAwICogNjAgKiBtaW4pIHtcXFxcbiAgICBsb2coJ+abtOaWsOS6huaVsOaNricpXFxcXG4gICAgc2V0SXRlbSgndXBkYXRldGltZScsICcnICsgbm93KVxcXFxuICAgIGRhdGEgPSBsb2FkKClcXFxcbiAgICBzYXZlRmlsZSgnZGF0YS5qc29uJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXFxcXG59IGVsc2Uge1xcXFxuICAgIGxvZygn5rKh5pyJ5pu05paw5pWw5o2uJylcXFxcbiAgICBkYXRhID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnZGF0YS5qc29uJykpXFxcXG59XFxcXG4kLmV4cG9ydHMgPSBkYXRhXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlt6Xlhbfpm4ZcXFwiLFxcXCJwYXRoXFxcIjpcXFwidXRpbGl0eVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIkLmV4cG9ydHMgPSB7XFxcXG4gICAgcnVuQ29kZTogZnVuY3Rpb24ocnVsZSkge2xvZyhydWxlKVxcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgbGV0IFtpbnB1dCwgY29kZV0gPSBydWxlLnNwbGl0KCcuanM6JylcXFxcbiAgICAgICAgICAgIHJldHVybiBjb2RlID8gZXZhbChjb2RlKSA6IHJ1bGVcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gcnVsZSB9XFxcXG4gICAgfSxcXFxcbiAgICB1cmxQYXJzZTogZnVuY3Rpb24odXJsLCBwYWdlTnVtLCBmdW5jKSB7XFxcXG4gICAgICAgIHVybCA9IHVybC5zcGxpdCgnOycpLm1hcCgodikgPT4gdi5yZXBsYWNlKC/vvJvvvJsvZywgJzsnKSlcXFxcbiAgICAgICAgaWYgKGZ1bmMpIGZ1bmModXJsKVxcXFxuICAgICAgICB1cmxbMF0gPSB1cmxbMF0ucmVwbGFjZSgvZnlwYWdlKD86QCgtP1xcXFxcXFxcZCspQCk/KD86XFxcXFxcXFwqKFxcXFxcXFxcZCspQCk/LywgKF8sIHN0YXJ0LCBzcGFjZSkgPT4gcGFyc2VJbnQoc3RhcnQgfHwgMCkgKyAxICsgKHBhZ2VOdW0gLSAxKSAqIHBhcnNlSW50KHNwYWNlIHx8IDEpKVxcXFxuICAgICAgICB1cmxbMF0gPSAvXiguKj8pKD86XFxcXFxcXFxbZmlyc3RQYWdlPSguKj8pXFxcXFxcXFxdKT8kLy5leGVjKHVybFswXSlcXFxcbiAgICAgICAgdXJsWzBdID0gcnVuQ29kZSh1cmxbMF1bMl0gJiYgcGFnZU51bSA9PSAxID8gdXJsWzBdWzJdIDogdXJsWzBdWzFdKVxcXFxuICAgICAgICBsZXQgb3B0aW9ucyA9IHsgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW47IGNoYXJzdD1VVEYtOCcgfSwgbWV0aG9kOiB1cmxbMV0gfVxcXFxuICAgICAgICAvLyBwb3N05pa55rOV5pe26L2s5o2i5Y+C5pWwXFxcXG4gICAgICAgIGlmICgvXnBvc3QkL2kudGVzdChvcHRpb25zWydtZXRob2QnXSkpIHtcXFxcbiAgICAgICAgICAgIGxldCBbb3JpVXJsLCBib2R5XSA9IHVybFswXS5zcGxpdCgnPycpXFxcXG4gICAgICAgICAgICB1cmxbMF0gPSBvcmlVcmwucmVwbGFjZSgv77yf77yfL2csICc/JylcXFxcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXJ0c1dpdGgoJ0pzb25Cb2R5PScpKSBib2R5ID0gYm9keS5zbGljZSg5KVxcXFxuICAgICAgICAgICAgb3B0aW9uc1snYm9keSddID0gYm9keVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmICh1cmxbMl0pIG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddLnNsaWNlKDAsIDE5KSArIHVybFsyXVxcXFxuICAgICAgICAvL2xvZyhvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKVxcXFxuICAgICAgICBpZiAodXJsWzNdKSB1cmxbM10ubWF0Y2goL3soLiopfS8pWzFdLnNwbGl0KCcmJicpLmZvckVhY2goKHYpID0+IHtcXFxcbiAgICAgICAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSB2LnNwbGl0KCdAJylcXFxcbiAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1trZXldID0gcnVuQ29kZSh2YWx1ZSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgLy8g5re75Yqg5YWo5bGAVUFcXFxcbiAgICAgICAgaWYgKCFvcHRpb25zLmhlYWRlcnNbJ1VzZXItQWdlbnQnXSkge1xcXFxuICAgICAgICAgICAgaWYgKE1ZX1JVTEUudWEgPT0gJ3BjJylcXFxcbiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ1VzZXItQWdlbnQnXSA9IFBDX1VBXFxcXG4gICAgICAgICAgICBlbHNlIGlmIChNWV9SVUxFLnVhID09ICdtb2JpbGUnKVxcXFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1snVXNlci1BZ2VudCddID0gTU9CSUxFX1VBXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIHsgTVlfVVJMOiB1cmxbMF0sIGluZGV4SHRtbDogZmV0Y2godXJsWzBdLCBvcHRpb25zKSB9XFxcXG4gICAgfVxcXFxufVxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6KeE5YiZ5YiX6KGoXFxcIixcXFwicGF0aFxcXCI6XFxcImRhdGFcXFwiLFxcXCJydWxlXFxcIjpcXFwiW3tcXFxcbiAgICBcXFxcXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOiBcXFxcXFxcIuWQvueIseegtOino/CdlKVcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImF1dGhvclxcXFxcXFwiOiBcXFxcXFxcIkhvb2RcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInVybFxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LjUycG9qaWUuY24vZm9ydW0ucGhwP21vZD1ndWlkZSZ2aWV3PWZ5Y2xhc3MmcGFnZT1meXBhZ2U7Z2V0O0dCS1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiA0LFxcXFxuICAgIFxcXFxcXFwiY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX25hbWVcXFxcXFxcIjogXFxcXFxcXCLmnIDmlrDng63pl6gm5pyA5paw57K+5Y2OJuacgOaWsOWbnuWkjSbmnIDmlrDlj5HooahcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX3VybFxcXFxcXFwiOiBcXFxcXFxcImhvdCZkaWdlc3QmbmV3Jm5ld3RocmVhZFxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic29ydF9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfdXJsXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwianM6XFxcXFxcXFxudmFyIHJlcyA9IHt9O1xcXFxcXFxcbnZhciBkID0gW107XFxcXFxcXFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxcXFxcXFxuXFxcXFxcXFxuLy/liJfooahcXFxcXFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwnYm9keSYmdGJvZHlbaWRdJyk7XFxcXFxcXFxuXFxcXFxcXFxuZm9yKHZhciBpPTE7aTxsaXN0Lmxlbmd0aCsxO2krKyl7XFxcXFxcXFxuZC5wdXNoKHtcXFxcXFxcXG50aXRsZTogKGkpKyAnLiAnICtwYXJzZURvbUZvckh0bWwobGlzdFtpLTFdLCcueHN0JiZUZXh0JyksXFxcXFxcXFxudXJsOid4NTovL2h0dHBzOi8vd3d3LjUycG9qaWUuY24vJytwYXJzZURvbUZvckh0bWwobGlzdFtpLTFdLCdhJiZocmVmJyksXFxcXFxcXFxuY29sX3R5cGU6ICd0ZXh0XzEnfSk7XFxcXFxcXFxufVxcXFxcXFxcblxcXFxcXFxcclxcXFxcXFxcbnJlcy5kYXRhID0gZDtcXFxcXFxcXG5zZXRIb21lUmVzdWx0KHJlcyk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hfdXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cDovL3poYW5uZWkuYmFpZHUuY29tL2NzZS9zaXRlP3E9KiomcD1meXBhZ2UmY2M9NTJwb2ppZS5jblxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZ3JvdXBcXFxcXFxcIjogXFxcXFxcXCLikaDmjqjojZBcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNlYXJjaEZpbmRcXFxcXFxcIjogXFxcXFxcXCJib2R5JiYucmVzdWx0O1xcXFxcXFxcbmgzJiZUZXh0O1xcXFxcXFxcbmEmJmhyZWY7XFxcXFxcXFxuKjtcXFxcXFxcXG4uYy1hYnN0cmFjdCYmVGV4dDtcXFxcXFxcXG4qXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInVhXFxcXFxcXCI6IFxcXFxcXFwicGNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInByZVJ1bGVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInBhZ2VzXFxcXFxcXCI6IFxcXFxcXFwiW11cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImljb25cXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy41MnBvamllLmNuL2Zhdmljb24uaWNvXFxcXFxcXCJcXFxcbn0sIHtcXFxcbiAgICBcXFxcXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOiBcXFxcXFxcIlpENDIz8J+HqPCfh7NcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImF1dGhvclxcXFxcXFwiOiBcXFxcXFxcIk5hbW9cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInVybFxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL3BhZ2UvZnlwYWdlXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IDAsXFxcXG4gICAgXFxcXFxcXCJjb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFfbGVmdF9waWNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic29ydF9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfdXJsXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwianM6XFxcXFxcXFxudmFyIHJlcyA9IHt9O1xcXFxcXFxcbnZhciBkID0gW107XFxcXFxcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgJy5jb250ZW50LXdyYXAmJi5leGNlcnB0JiZsaScpO1xcXFxcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxcXFxcbiAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaDImJlRleHQnKSxcXFxcXFxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLmluZm8mJlRleHQnKSxcXFxcXFxcXG5cXFxcXFxcXHQgICAgICBwaWNfdXJsOnBhcnNlRG9tKGxpc3RbaV0sJ2ltZyYmc3JjJyksXFxcXFxcXFxuICAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdhJiZocmVmJyksXFxcXFxcXFxuICAgIH0pXFxcXFxcXFxufVxcXFxcXFxcbnJlcy5kYXRhID0gZDtcXFxcXFxcXG5zZXRIb21lUmVzdWx0KHJlcyk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hfdXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuNDIzZG93bi5jb20vcGFnZS9meXBhZ2U/cz0qKlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZ3JvdXBcXFxcXFxcIjogXFxcXFxcXCLlhbblroNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNlYXJjaEZpbmRcXFxcXFxcIjogXFxcXFxcXCJqczpcXFxcXFxcXG52YXIgcmVzID0ge307XFxcXFxcXFxudmFyIGQgPSBbXTtcXFxcXFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoZ2V0UmVzQ29kZSgpLCAnLmNvbnRlbnQtd3JhcCYmLmV4Y2VycHQmJmxpJyk7XFxcXFxcXFxuZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXFxcXFxuICAgIGQucHVzaCh7XFxcXFxcXFxuICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICdoMiYmVGV4dCcpLFxcXFxcXFxcbiAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICcuaW5mbyYmVGV4dCcpLCAgICAgICAgXFxcXFxcXFxuICAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdhJiZocmVmJyksXFxcXFxcXFxuICAgIH0pXFxcXFxcXFxufVxcXFxcXFxcbnJlcy5kYXRhID0gZDtcXFxcXFxcXG5zZXRIb21lUmVzdWx0KHJlcyk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwianM6dmFyIHJlcz17fTtcXFxcXFxcXG52YXIgZCA9IFtdO1xcXFxcXFxcbmQucHVzaCh7XFxcXFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcXFxcXFxcXFwidGV4dF8xXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXG4gICAgdGl0bGU6IFxcXFxcXFxcXFxcXFxcXCLigJzigJzigJ3igJ08YmlnPlxcXFxcXFxcXFxcXFxcXCIgKyBwYXJzZURvbUZvckh0bWwoZ2V0UmVzQ29kZSgpLCBcXFxcXFxcXFxcXFxcXFwiaDEmJlRleHRcXFxcXFxcXFxcXFxcXFwiKSArIFxcXFxcXFxcXFxcXFxcXCI8L2JpZz5cXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcbn0pO1xcXFxcXFxcbmQucHVzaCh7XFxcXFxcXFxuICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwoZ2V0UmVzQ29kZSgpLCBcXFxcXFxcXFxcXFxcXFwiLmVudHJ5JiZIdG1sXFxcXFxcXFxcXFxcXFxcIiksXFxcXFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcXFxcXG4gICAgZXh0cmE6IHtcXFxcXFxcXG4gICAgICAgIHRleHRTaXplOiAxNixcXFxcXFxcXG4gICAgICAgIGNsaWNrOiB0cnVlXFxcXFxcXFxuICAgIH1cXFxcXFxcXG59KTtcXFxcXFxcXG5zZXRSZXN1bHQoZCk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCIqXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1YVxcXFxcXFwiOiBcXFxcXFxcInBjXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwcmVSdWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwYWdlc1xcXFxcXFwiOiBcXFxcXFxcIltdXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJpY29uXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCJcXFxcbn0sIHtcXFxcbiAgICBcXFxcXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOiBcXFxcXFxcIuiQveWwmOS5i+acqPCfh6jwn4ezXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhdXRob3JcXFxcXFxcIjogXFxcXFxcXCJOYW1vXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1cmxcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy5sdW9jaGVuemhpbXUuY29tL3BhZ2UvZnlwYWdlXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IDEsXFxcXG4gICAgXFxcXFxcXCJjb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFfbGVmdF9waWNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic29ydF9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfdXJsXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwianM6XFxcXFxcXFxudmFyIHJlcyA9IHt9O1xcXFxcXFxcbnZhciBkID0gW107XFxcXFxcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgJy5jb250ZW50JiYuZXhjZXJwdCcpO1xcXFxcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxcXFxcbiAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaDImJlRleHQnKSxcXFxcXFxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLm1ldGEmJlRleHQnKSxcXFxcXFxcXG4gICAgICAgIHBpY191cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdpbWcmJmRhdGEtc3JjJyksXFxcXFxcXFxuICAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdhJiZocmVmJykgKyBcXFxcXFxcXFxcXFxcXFwiO2dldDtVVEYtODt7VXNlci1BZ2VudEBcXFxcXFxcXFxcXFxcXFwiICsgUENfVUEgKyBcXFxcXFxcXFxcXFxcXFwifVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxuICAgIH0pXFxcXFxcXFxufVxcXFxcXFxcbnJlcy5kYXRhID0gZDtcXFxcXFxcXG5zZXRIb21lUmVzdWx0KHJlcyk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hfdXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuNDIzZG93bi5jb20vcGFnZS9meXBhZ2U/cz0qKlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZ3JvdXBcXFxcXFxcIjogXFxcXFxcXCLlhbblroNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNlYXJjaEZpbmRcXFxcXFxcIjogXFxcXFxcXCJqczpcXFxcXFxcXG52YXIgcmVzID0ge307XFxcXFxcXFxudmFyIGQgPSBbXTtcXFxcXFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoZ2V0UmVzQ29kZSgpLCAnLmNvbnRlbnQtd3JhcCYmLmV4Y2VycHQmJmxpJyk7XFxcXFxcXFxuZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXFxcXFxuICAgIGQucHVzaCh7XFxcXFxcXFxuICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICdoMiYmVGV4dCcpLFxcXFxcXFxcbiAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICcuaW5mbyYmVGV4dCcpLCAgICAgICAgXFxcXFxcXFxuICAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdhJiZocmVmJyksXFxcXFxcXFxuICAgIH0pXFxcXFxcXFxufVxcXFxcXFxcbnJlcy5kYXRhID0gZDtcXFxcXFxcXG5zZXRIb21lUmVzdWx0KHJlcyk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwianM6dmFyIHJlcz17fTtcXFxcXFxcXG52YXIgZCA9IFtdO1xcXFxcXFxcbmQucHVzaCh7XFxcXFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcXFxcXFxcXFwidGV4dF8xXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXG4gICAgdGl0bGU6IFxcXFxcXFxcXFxcXFxcXCLigJzigJzigJ3igJ08YmlnPlxcXFxcXFxcXFxcXFxcXCIgKyBwYXJzZURvbUZvckh0bWwoZ2V0UmVzQ29kZSgpLCBcXFxcXFxcXFxcXFxcXFwiaDEmJlRleHRcXFxcXFxcXFxcXFxcXFwiKSArIFxcXFxcXFxcXFxcXFxcXCI8L2JpZz5cXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcbn0pO1xcXFxcXFxcbmQucHVzaCh7XFxcXFxcXFxuICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwoZ2V0UmVzQ29kZSgpLCBcXFxcXFxcXFxcXFxcXFwiLmFydGljbGUtY29udGVudCYmSHRtbFxcXFxcXFxcXFxcXFxcXCIpLnNwbGl0KCdwdXNoKHt9KTsnKVsxXSxcXFxcXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcXFxcXFxcbiAgICBleHRyYToge1xcXFxcXFxcbiAgICAgICAgdGV4dFNpemU6IDE2LFxcXFxcXFxcbiAgICAgICAgY2xpY2s6IHRydWVcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn0pO1xcXFxcXFxcbnNldFJlc3VsdChkKTtcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNkZXRhaWxfY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIipcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInVhXFxcXFxcXCI6IFxcXFxcXFwicGNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInByZVJ1bGVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInBhZ2VzXFxcXFxcXCI6IFxcXFxcXFwiW11cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImljb25cXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIlxcXFxufSwge1xcXFxuICAgIFxcXFxcXFwibGFzdF9jaGFwdGVyX3J1bGVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInRpdGxlXFxcXFxcXCI6IFxcXFxcXFwi5YiG5Lqr6ICFXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhdXRob3JcXFxcXFxcIjogXFxcXFxcXCLlsI/wn5Sl5pifXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1cmxcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3NoYXJlcncuY29tL2EvZnlBbGwvZnlwYWdlL1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiA5LFxcXFxuICAgIFxcXFxcXFwiY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiY2xhc3NfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIuaJi+acuui9r+S7tibovabmnLrova/ku7Ym55S16ISR6L2v5Lu2JlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiY2xhc3NfdXJsXFxcXFxcXCI6IFxcXFxcXFwiZ2FuaHVvJnFpY2hlJmppbmd5YW4mXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX25hbWVcXFxcXFxcIjogXFxcXFxcXCLnm5LlrZDova/ku7YmVFbotYTorq8m57K+6YCJVFZcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImFyZWFfdXJsXFxcXFxcXCI6IFxcXFxcXFwieml5dWFuJnR2engmanh0dlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic29ydF9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfdXJsXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiYm9keSYmLmFydGljbGUtbGlzdDtpbWcmJmFsdDtpbWcmJnNyYzsudGltZSYmVGV4dDthJiZocmVmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hfdXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly9zaGFyZXJ3LmNvbS9zZWFyY2gucGhwP3E9KiomcGFnZT1meXBhZ2VcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImdyb3VwXFxcXFxcXCI6IFxcXFxcXFwi5YW25a6DXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hGaW5kXFxcXFxcXCI6IFxcXFxcXFwiYm9keSYmLmFydGljbGUtbGlzdDtpbWcmJmFsdDthJiZocmVmOy50aW1lJiZUZXh0O3AsMSYmVGV4dDtpbWcmJnNyY1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcImpzOnZhciByZXM9e307dmFyIGQ9W107aHRtbD1nZXRSZXNDb2RlKCk7dGV4dD1wYXJzZURvbUZvckh0bWwoaHRtbCxcXFxcXFxcXFxcXFxcXFwiLmFydC1jb250ZW50JiZIdG1sXFxcXFxcXFxcXFxcXFxcIik7ZC5wdXNoKHt0aXRsZTp0ZXh0LGNvbF90eXBlOidyaWNoX3RleHQnfSk7cmVzLmRhdGE9ZDtzZXRIb21lUmVzdWx0KHJlcyk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCIqXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1YVxcXFxcXFwiOiBcXFxcXFxcIm1vYmlsZVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicHJlUnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicGFnZXNcXFxcXFxcIjogXFxcXFxcXCJbXVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiaWNvblxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vejMuYXgxeC5jb20vMjAyMS8xMS8wNS9JbXpTdmQucG5nXFxcXFxcXCJcXFxcbn0sIHtcXFxcbiAgICBcXFxcXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOiBcXFxcXFxcIuWPkeeOsOWwj+i9r+S7tlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXV0aG9yXFxcXFxcXCI6IFxcXFxcXFwi5bGF54S2XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1cmxcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy54NmcuY29tL2h0bWwvMjMtZnlwYWdlLmh0bWxcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInZlcnNpb25cXFxcXFxcIjogMyxcXFxcbiAgICBcXFxcXFxcImNvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic29ydF9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX25hbWVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfdXJsXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiLmxpc3Qtc29mdCYmbGk7Lmxpc3QtaW5mbyYmYSYmVGV4dDsubGF5dWktY2xlYXImJmltZyYmc3JjOy5saXN0LWNhJiZUZXh0Oy5saXN0LWluZm8mJmEmJmhyZWZcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNlYXJjaF91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImdyb3VwXFxcXFxcXCI6IFxcXFxcXFwi5YW25a6DXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hGaW5kXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJ0ZXh0XzNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImRldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCJib2R5JiYuYXJ0aWNsZS1kb3duO2EmJlRleHQ7KjsqO2EmJmRhdGEtdXJsXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInVhXFxcXFxcXCI6IFxcXFxcXFwibW9iaWxlXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwcmVSdWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwYWdlc1xcXFxcXFwiOiBcXFxcXFxcIltdXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJpY29uXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCJcXFxcbn0sIHtcXFxcbiAgICBcXFxcXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOiBcXFxcXFxcIlZYQVRcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImF1dGhvclxcXFxcXFwiOiBcXFxcXFxcIuWwj/CflKXmmJ9cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInVybFxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LnZ4YXQuY29tL2Z5QWxsX2Z5cGFnZS5odG1sXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IDEsXFxcXG4gICAgXFxcXFxcXCJjb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc19uYW1lXFxcXFxcXCI6IFxcXFxcXFwi6L2v5Lu25LiL6L29JldpbmRvd3MmQW5kcm9pZCbnlLXop4bova/ku7YmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc191cmxcXFxcXFxcIjogXFxcXFxcXCJSdWFuSmlhblhpYVphaSZXaW5kb3dzJkFuZHJvaWQmVFYmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX25hbWVcXFxcXFxcIjogXFxcXFxcXCLkvJjmg6DmtLvliqgm572R56uZ5rqQ56CBJuacjeWKoeWZqCbmioDmnK/mlZnnqIsmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX3VybFxcXFxcXFwiOiBcXFxcXFxcIllvdUh1aUh1b0RvbmcmV2FuZ1poYW5ZdWFuTWEmVlBTJkppU2h1Smlhb0NoZW5nJlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic29ydF9uYW1lXFxcXFxcXCI6IFxcXFxcXFwi5LiA57qn6aG16Z2i5o+Q56S66ZSZ6K+v5Li65rKh5pyJ5LiL5LiA6aG177yBXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ5ZWFyX25hbWVcXFxcXFxcIjogXFxcXFxcXCLlhbbku5Ym5ri45oiPJue9keWPi+WIhuS6qyYmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzb3J0X3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl91cmxcXFxcXFxcIjogXFxcXFxcXCJRaVRhJllvdVhpJldhbmdZb3VGZW5YaWFuZyYmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJmaW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCJib2R5JiYucG9zdDthJiZ0aXRsZTtpbWcmJnNyYzsudGltZSYmVGV4dDthJiZocmVmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hfdXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cudnhhdC5jb20vc2VhcmNoLnBocD9xPSoqJnBhZ2U9ZnlwYWdlXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJncm91cFxcXFxcXFwiOiBcXFxcXFxcIuWFtuWug1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoRmluZFxcXFxcXFwiOiBcXFxcXFxcImJvZHkmJi5wb3N0O2EmJnRpdGxlO2EmJmhyZWY7LnRpbWUmJlRleHQ7LnBvc3QmJlRleHQ7aW1nJiZzcmNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImRldGFpbF9jb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImRldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCJqczp2YXIgcmVzPXt9O3ZhciBkPVtdO2h0bWw9Z2V0UmVzQ29kZSgpO3RleHQ9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcXFxcXFxcXFxcXFxcIi5hcnRpY2xlLWNvbnRlbnQmJkh0bWxcXFxcXFxcXFxcXFxcXFwiKTtkLnB1c2goe3RpdGxlOnRleHQsY29sX3R5cGU6J3JpY2hfdGV4dCd9KTtyZXMuZGF0YT1kO3NldEhvbWVSZXN1bHQocmVzKTtcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNkZXRhaWxfY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIipcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInVhXFxcXFxcXCI6IFxcXFxcXFwibW9iaWxlXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwcmVSdWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwYWdlc1xcXFxcXFwiOiBcXFxcXFxcIltdXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJpY29uXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCJcXFxcbn1dXFxcIn1dXCJ9IiwicGljVXJsIjoiaHR0cHM6Ly93d3cuNDIzZG93bi5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMTAvMjAyMTEwMTIwMTEwNDIxMi5wbmciLCJ0aXRsZSI6IuaBkuaYn+aSreaUvuWZqF/jgIzlv6vmkq3jgI3lho3nlJ/nmoTlvbHop4botYTmupDnnIvniYfnpZ7lmaghIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement