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+XFxcXFxcXCIsXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChnZXRSZXNDb2RlKCksIFxcXFxcXFwiLmFydGljbGUtY29udGVudCYmSHRtbFxcXFxcXFwiKS5zcGxpdCgncHVzaCh7fSk7JylbMV0sXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHRleHRTaXplOiAxNixcXFxcbiAgICAgICAgY2xpY2s6IHRydWVcXFxcbiAgICB9XFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFwiLFxcXCJmaW5kX3J1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoZ2V0UmVzQ29kZSgpLCAnLmNvbnRlbnQmJi5leGNlcnB0Jyk7XFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICdoMiYmVGV4dCcpLFxcXFxuICAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5tZXRhJiZUZXh0JyksXFxcXG4gICAgICAgIHBpY191cmw6IHBhcnNlRG9tKGxpc3RbaV0sICdpbWcmJmRhdGEtc3JjJyksXFxcXG4gICAgICAgIHVybDogcGFyc2VEb20obGlzdFtpXSwgJ2EmJmhyZWYnKSArIFxcXFxcXFwiO2dldDtVVEYtODt7VXNlci1BZ2VudEBcXFxcXFxcIiArIFBDX1VBICsgXFxcXFxcXCJ9XFxcXFxcXCIsXFxcXG4gICAgfSlcXFxcbn1cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldEhvbWVSZXN1bHQocmVzKTtcXFwiLFxcXCJmaXJzdEhlYWRlclxcXCI6XFxcImNsYXNzXFxcIixcXFwiZ3JvdXBcXFwiOlxcXCLlhbblroNcXFwiLFxcXCJsYXN0X2NoYXB0ZXJfcnVsZVxcXCI6XFxcIlxcXCIsXFxcInBhZ2VMaXN0XFxcIjpbXSxcXFwicGFnZXNcXFwiOlxcXCJbXVxcXCIsXFxcInBhcmFtc1xcXCI6e30sXFxcInByZVJ1bGVcXFwiOlxcXCJcXFwiLFxcXCJzb3J0X3VybFxcXCI6XFxcIlxcXCIsXFxcInRpdGxlXFxcIjpcXFwi6JC95bCY5LmL5pyo8J+HqPCfh7NcXFwiLFxcXCJ1YVxcXCI6XFxcInBjXFxcIixcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cubHVvY2hlbnpoaW11LmNvbS9wYWdlLzFcXFwiLFxcXCJ2ZXJzaW9uXFxcIjoxLFxcXCJ5ZWFyX3VybFxcXCI6XFxcIlxcXCJ9LFxcXCJwYWdlVGl0bGVcXFwiOlxcXCLmgZLmmJ/mkq3mlL7lmagg5YWN6LS555yL55S15b2x55yL54mH56We5ZmoXFxcIixcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cubHVvY2hlbnpoaW11LmNvbS9hcmNoaXZlcy83MTkzLmh0bWw7Z2V0O1VURi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZ9XFxcIn1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi6LWE5rqQ6L275ZCI6ZuGXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaHR0cHM6Ly93d3cubHVvY2hlbnpoaW11LmNvbS9hcmNoaXZlcy83MTkzLmh0bWw7Z2V0O1VURi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZ9XCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgbXlDb2xsZWN0aW9uX2VsID0gW11cXG5cXG4vLyDlpITnkIZNWV9VUkzlkoxNWV9SVUxFXFxubGV0IFJVTEUgPSBNWV9QQVJBTVMuUlVMRVxcbk1ZX1JVTEUudmVyc2lvbiA9IFJVTEUudmVyc2lvblxcbk1ZX1JVTEUuZ3JvdXAgPSBSVUxFLmdyb3VwXFxuTVlfUlVMRS50aXRsZSA9IFJVTEUudGl0bGVcXG5NWV9SVUxFLnVybCA9IE1ZX1VSTFxcbk1ZX1JVTEUudWEgPSBSVUxFLnVhXFxuTVlfUlVMRS5jb2xfdHlwZSA9IFJVTEUuZGV0YWlsX2NvbF90eXBlXFxuTVlfUlVMRS5maW5kX3J1bGUgPSBSVUxFLmRldGFpbF9maW5kX3J1bGVcXG5NWV9SVUxFLnByZVJ1bGUgPSBSVUxFLnByZVJ1bGVcXG5NWV9SVUxFLnBhZ2VMaXN0ID0gUlVMRS5wYWdlTGlzdFxcbk1ZX1JVTEUucGFnZXMgPSBSVUxFLnBhZ2VzXFxuTVlfUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSA9IFJVTEUubGFzdF9jaGFwdGVyX3J1bGVcXG5NWV9SVUxFLnBhcmFtcyA9IFJVTEUucGFyYW1zXFxuLy8g6Kej5p6Q5q2j5paHXFxuaWYoTVlfUEFSQU1TLnBhZ2VUaXRsZSkgc2V0UGFnZVRpdGxlKE1ZX1BBUkFNUy5wYWdlVGl0bGUpXFxuZXZhbChNWV9SVUxFLnByZVJ1bGUpXFxuc2V0TGFzdENoYXB0ZXJSdWxlKE1ZX1JVTEUubGFzdF9jaGFwdGVyX3J1bGUpXFxuTVlfUEFSQU1TID0gTVlfUlVMRS5wYXJhbXNcXG5pZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcXG4gICAgZnVuY3Rpb24gc2V0UmVzdWx0KGVsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxuICAgICAgICBwYXJhbTEgPSBDQUxMQkFDS19LRVlcXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEVcXG4gICAgICAgIHBhcmFtMyA9IE1ZX1RZUEVcXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsLmRhdGEpKSBlbCA9IGVsLmRhdGFcXG5cXG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG15Q29sbGVjdGlvbl9lbCwgZWwubWFwKCh2KSA9PiB7XFxuICAgICAgICAgICAgbGV0IFJVTEUgPSBPYmplY3QuYXNzaWduKHt9LCBNWV9SVUxFKVxcbiAgICAgICAgICAgIHYuY29sX3R5cGUgPSB2LmNvbF90eXBlIHx8IE1ZX1JVTEUuY29sX3R5cGVcXG5cXG4gICAgICAgICAgICBpZiAoIXYudXJsKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5pbmNsdWRlcygnQGxhenlSdWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIHYudXJsID0gdi51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyB0aXRsZTogTVlfUlVMRS50aXRsZSwgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7JylcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAcnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgW18sIHVybCwgcnVsZV0gPSB2LnVybC5tYXRjaCgvXihbXFxcXHNcXFxcU10qPylAcnVsZT0oW1xcXFxzXFxcXFNdKikkLylcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB1cmxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gcnVsZVxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9jb2xfdHlwZSA9IE1ZX1JVTEUuY29sX3R5cGVcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSkge1xcbiAgICAgICAgICAgICAgICBpZiAodi51cmwuaW5jbHVkZXMoJ3J1bGU9JykgfHwgKHYuZXh0cmEgfHwge30pLnJ1bGUpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHYudXJsLnNwbGl0KCcjJylbMF0ubWF0Y2goL15oaWtlcjpcXFxcL1xcXFwvcGFnZVxcXFwvKC4rPykoPzpcXFxcPy4qKT8kLylbMV0sXFxuICAgICAgICAgICAgICAgICAgICBzdWJQYWdlID0gTVlfUlVMRS5wYWdlTGlzdC5maW5kKCh2KSA9PiB2LnBhdGggPT0gcGF0aClcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2NvbF90eXBlID0gc3ViUGFnZS5jb2xfdHlwZVxcbiAgICAgICAgICAgICAgICBSVUxFLnBhcmFtcyA9IHYuZXh0cmEgfHwge31cXG4gICAgICAgICAgICB9IGVsc2UgeyByZXR1cm4gdiB9XFxuICAgICAgICAgICAgdi5leHRyYSA9IHsgdXJsOiB2LnVybCwgUlVMRTogUlVMRSB9XFxuICAgICAgICAgICAgdi51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcXG4gICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgfSkpXFxuICAgICAgICBtZXRob2Rfc2V0UmVzdWx0Lmludm9rZShqYXZhQ29udGV4dCwgbXlDb2xsZWN0aW9uX2VsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHNldEhvbWVSZXN1bHQoYSwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0U2VhcmNoUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXG4gICAgICAgIHNldFJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcbiAgICB9XFxuXFxuICAgIGV2YWwoTVlfUlVMRS5maW5kX3J1bGUuc2xpY2UoMykpXFxufSBlbHNlIHtcXG4gICAgY29uc3QgeyBydW5Db2RlIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91dGlsaXR5P3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpKVxcbiAgICBsZXQgZmluZFJ1bGUgPSBNWV9SVUxFLmZpbmRfcnVsZS5zcGxpdCgnOycpXFxuICAgIHBhcnNlRG9tRm9yQXJyYXkoZ2V0UmVzQ29kZSgpLCBmaW5kUnVsZS5zaGlmdCgpKS5mb3JFYWNoKChkYXRhKSA9PiB7XFxuICAgICAgICBsZXQgW3RpdGxlLCBpbWcsIGRlc2MsIHVybF0gPSBmaW5kUnVsZS5tYXAoKHYsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh2ID09ICcqJykgcmV0dXJuICcnXFxuICAgICAgICAgICAgICAgICAgICBlbHNlIHYgPSAoaSA9PSAxIHx8IGkgPT0gMykgP1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tKGRhdGEsIHYpIDpcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZURvbUZvckh0bWwoZGF0YSwgdilcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9IDMpIHYgPSBydW5Db2RlKHYpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIHJlcyA9IHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBNWV9SVUxFLmNvbF90eXBlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgaWYgKHJlcy51cmwgJiYgcmVzLnVybC5pbmNsdWRlcygnQGxhenlSdWxlPScpKVxcbiAgICAgICAgICAgIHJlcy51cmwgPSByZXMudXJsLnJlcGxhY2UoJy5qczonLCAnLmpzOlxcXFxuaWYoTVlfUlVMRSlPYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KHsgdGl0bGU6IE1ZX1JVTEUudGl0bGUsIHBhZ2VzOiBNWV9SVUxFLnBhZ2VzLCBwYWdlTGlzdDogTVlfUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpOycpXFxuICAgICAgICBteUNvbGxlY3Rpb25fZWwucHVzaChyZXMpXFxuICAgIH0pXFxuICAgIHNldFJlc3VsdChteUNvbGxlY3Rpb25fZWwpXFxufVxcblwiLFwiZ3JvdXBcIjpcIuKRoOi9u+WQiOmbhlwiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwic2V0SXRlbSgnbXlDb2xsZWN0aW9uJywgTVlfUlVMRS50aXRsZSlcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcInRleHRfMVxcXCIsXFxcIm5hbWVcXFwiOlxcXCJDbGFzc1RhYlxcXCIsXFxcInBhdGhcXFwiOlxcXCJDbGFzc1RhYlxcXCIsXFxcInJ1bGVcXFwiOlxcXCJmdW5jdGlvbiBDbGFzc1RhYihjbGFzc0FycmF5LCBwYXJhbXMpIHtcXFxcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtcylcXFxcbiAgICB0aGlzLmFyciA9IGNsYXNzQXJyYXkubWFwKHYgPT4gdGhpcy5pbml0KHYpKVxcXFxuICAgIHRoaXMuc2lnbiA9ICckJyArIE1ZX1JVTEUudGl0bGUgKyAnXycgKyAodGhpcy5uYW1lIHx8ICcnKSArICdfJ1xcXFxuICAgIHRoaXMuY29sb3IgPSB0aGlzLmNvbG9yIHx8ICcjMTJiNjY4J1xcXFxuICAgIHRoaXMuYm91bmRhcnkgPSB0aGlzLmJvdW5kYXJ5IHx8ICdibGFua19ibG9jaydcXFxcbn1cXFxcbkNsYXNzVGFiLnByb3RvdHlwZSA9IHtcXFxcbiAgICBjb25zdHJ1Y3RvcjogQ2xhc3NUYWIsXFxcXG4gICAgbG9hZChlbCkge1xcXFxuICAgICAgICBsZXQgZm9sZGVkID0gZ2V0VmFyKCdmb2xkXycgKyB0aGlzLnNpZ24sICcnKVxcXFxuICAgICAgICBpZiAodGhpcy5mb2xkKSBlbC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojMDQ5ZWZmXFxcXFxcXCI+JyArIChmb2xkZWQgPyAn4pa2JyA6ICfilrwnKSxcXFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc2lnbiwgZm9sZGVkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdmb2xkXycgKyBzaWduLCB7ICcnOiAnVCcsICdUJzogJycgfSBbZm9sZGVkXSlcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICB9LCB0aGlzLnNpZ24sIGZvbGRlZCksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGxldCBhcnIgPSBmb2xkZWQgPyBbdGhpcy5hcnJbMF1dIDogdGhpcy5hcnJcXFxcbiAgICAgICAgYXJyLmZvckVhY2goKHYpID0+IHtcXFxcbiAgICAgICAgICAgIGxldCB7IGlkLCBjbGFzc19uYW1lLCBjbGFzc191cmwgfSA9IHYsXFxcXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmdldENsYXNzKGlkKSlcXFxcbiAgICAgICAgICAgIGNsYXNzX25hbWUuZm9yRWFjaCgobmFtZSwgaSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBjbGFzc191cmxbaV0sXFxcXG4gICAgICAgICAgICAgICAgICAgIG5vdyA9IEpTT04uc3RyaW5naWZ5KHsgbmFtZTogbmFtZSwgdXJsOiB1cmwgfSlcXFxcbiAgICAgICAgICAgICAgICBlbC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChzZWxlY3RlZCA9PSBub3cgPyAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjonICsgdGhpcy5jb2xvciArICdcXFxcXFxcIj48Yj4nIDogJycpICsgbmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWduLCBpZCwgbm93KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoc2lnbiArIGlkLCBub3cpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoc2lnbiwgbm93KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuc2lnbiwgaWQsIG5vdyksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIGVsLnB1c2goeyBjb2xfdHlwZTogdGhpcy5ib3VuZGFyeSB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0sXFxcXG4gICAgaW5pdChjbGFzc09iamVjdCkge1xcXFxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzT2JqZWN0LmNsYXNzX25hbWUgPT0gJ3N0cmluZycpXFxcXG4gICAgICAgICAgICBjbGFzc09iamVjdC5jbGFzc19uYW1lID0gY2xhc3NPYmplY3QuY2xhc3NfbmFtZS5zcGxpdCgnJicpXFxcXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NPYmplY3QuY2xhc3NfdXJsID09ICdzdHJpbmcnKVxcXFxuICAgICAgICAgICAgY2xhc3NPYmplY3QuY2xhc3NfdXJsID0gY2xhc3NPYmplY3QuY2xhc3NfdXJsLnNwbGl0KCcmJylcXFxcbiAgICAgICAgcmV0dXJuIGNsYXNzT2JqZWN0XFxcXG4gICAgfSxcXFxcbiAgICBwdXNoKGNsYXNzT2JqZWN0KSB7XFxcXG4gICAgICAgIHRoaXMuYXJyLnB1c2godGhpcy5pbml0KGNsYXNzT2JqZWN0KSlcXFxcbiAgICB9LFxcXFxuICAgIGdldENsYXNzKGlkKSB7XFxcXG4gICAgICAgIGxldCBkZWZhdWx0Q2xhc3MgPSB0aGlzLmFyci5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PSBpZClcXFxcbiAgICAgICAgaWYgKGRlZmF1bHRDbGFzcykgZGVmYXVsdENsYXNzID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgbmFtZTogZGVmYXVsdENsYXNzLmNsYXNzX25hbWVbMF0sXFxcXG4gICAgICAgICAgICB1cmw6IGRlZmF1bHRDbGFzcy5jbGFzc191cmxbMF1cXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmaW5kIGlkOiAnICsgaWQgKyAnIGluIGNsYXNzVGFiOiAnICsgdGhpcy5zaWduKVxcXFxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShnZXRWYXIodGhpcy5zaWduICsgaWQsIGRlZmF1bHRDbGFzcykpXFxcXG4gICAgfSxcXFxcbiAgICBnZXRMYXN0Q2xpY2soKSB7XFxcXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGdldFZhcih0aGlzLnNpZ24sICd7fScpKVxcXFxuICAgIH0sXFxcXG4gICAgc2V0VXJsKHVybCkge1xcXFxuICAgICAgICByZXR1cm4gdXJsLnJlcGxhY2UoL1xcXFxcXFxcJFxcXFxcXFxceyhbXn1dKilcXFxcXFxcXH0vZywgKF8sIGlkKSA9PiB0aGlzLmdldENsYXNzKGlkKS51cmwpXFxcXG4gICAgfVxcXFxufVxcXFxuJC5leHBvcnRzID0gQ2xhc3NUYWJcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIummlumhtVxcXCIsXFxcInBhdGhcXFwiOlxcXCJpbmRleExvYWRcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5sZXQgbXlDb2xsZWN0aW9uX2VsID0gW10sXFxcXG4gICAgcGFnZU51bSA9IHBhcnNlSW50KE1ZX1VSTC5zcGxpdCgnIycpWzFdKSxcXFxcbiAgICBSVUxFID0gTVlfUEFSQU1TLlJVTEUsXFxcXG4gICAgZnlBbGwgPSBSVUxFLnVybC5pbmNsdWRlcygnZnlBbGwnKSxcXFxcbiAgICAvLyDliqDovb1DbGFzc1RhYue7hOS7tlxcXFxuICAgIENsYXNzVGFiID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvQ2xhc3NUYWI/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykpLFxcXFxuICAgIHRhYkhlYWRlciA9IFtdXFxcXG5cXFxcbmlmIChSVUxFLmNsYXNzX25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXFxcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5Y2xhc3MnLFxcXFxuICAgIGNsYXNzX25hbWU6IFJVTEUuY2xhc3NfbmFtZSxcXFxcbiAgICBjbGFzc191cmw6IFJVTEUuY2xhc3NfdXJsXFxcXG59KVxcXFxuaWYgKFJVTEUuYXJlYV9uYW1lKSB0YWJIZWFkZXIucHVzaCh7XFxcXG4gICAgaWQ6IGZ5QWxsID8gJ2Z5QWxsJyA6ICdmeWFyZWEnLFxcXFxuICAgIGNsYXNzX25hbWU6IFJVTEUuYXJlYV9uYW1lLFxcXFxuICAgIGNsYXNzX3VybDogUlVMRS5hcmVhX3VybFxcXFxufSlcXFxcbmlmIChSVUxFLnllYXJfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcXFxuICAgIGlkOiBmeUFsbCA/ICdmeUFsbCcgOiAnZnl5ZWFyJyxcXFxcbiAgICBjbGFzc19uYW1lOiBSVUxFLnllYXJfbmFtZSxcXFxcbiAgICBjbGFzc191cmw6IFJVTEUueWVhcl91cmxcXFxcbn0pXFxcXG5pZiAoUlVMRS5zb3J0X25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXFxcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5c29ydCcsXFxcXG4gICAgY2xhc3NfbmFtZTogUlVMRS5zb3J0X25hbWUsXFxcXG4gICAgY2xhc3NfdXJsOiBSVUxFLnNvcnRfdXJsXFxcXG59KVxcXFxudGFiSGVhZGVyID0gbmV3IENsYXNzVGFiKHRhYkhlYWRlciwgeyBuYW1lOiBSVUxFLnRpdGxlIH0pXFxcXG5pZiAocGFnZU51bSA9PSAxKSB7XFxcXG4gICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAnY2xlYXJWYXIoXFxcXFxcXCJteUNvbGxlY3Rpb24tc2VhcmNoTW9kZVxcXFxcXFwiKScpXFxcXG4gICAgcHV0VmFyKCdteUNvbGxlY3Rpb24tc2VhcmNoTW9kZScsIFJVTEUudGl0bGUpXFxcXG4gICAgdGFiSGVhZGVyLmxvYWQobXlDb2xsZWN0aW9uX2VsKVxcXFxuICAgIGlmIChSVUxFLnNlYXJjaF91cmwpIG15Q29sbGVjdGlvbl9lbC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi5pCc57SiXFxcXFxcXCIsXFxcXG4gICAgICAgIGRlc2M6IFxcXFxcXFwi5pCc5L2g5oOz6KaB55qELi4uXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogJ1xcXFxcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFxcXFxcIitpbnB1dCtcXFxcXFxcIiZydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSArICdcXFxcXFxcIicsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgfSlcXFxcbn1cXFxcbi8vIOWkhOeQhk1ZX1VSTOWSjE1ZX1JVTEVcXFxcbk1ZX1JVTEUudmVyc2lvbiA9IFJVTEUudmVyc2lvblxcXFxuTVlfUlVMRS5ncm91cCA9IFJVTEUuZ3JvdXBcXFxcbk1ZX1JVTEUudGl0bGUgPSBSVUxFLnRpdGxlXFxcXG5NWV9SVUxFLnVhID0gUlVMRS51YVxcXFxuTVlfUlVMRS5jb2xfdHlwZSA9IFJVTEUuY29sX3R5cGVcXFxcbk1ZX1JVTEUuZGV0YWlsX2NvbF90eXBlID0gUlVMRS5kZXRhaWxfY29sX3R5cGVcXFxcbk1ZX1JVTEUuZmluZF9ydWxlID0gUlVMRS5maW5kX3J1bGVcXFxcbk1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcXFxuTVlfUlVMRS5wcmVSdWxlID0gUlVMRS5wcmVSdWxlXFxcXG5NWV9SVUxFLnBhZ2VMaXN0ID0gSlNPTi5wYXJzZShSVUxFLnBhZ2VzIHx8ICdbXScpXFxcXG5NWV9SVUxFLnBhZ2VzID0gSlNPTi5zdHJpbmdpZnkoTVlfUlVMRS5wYWdlTGlzdClcXFxcbk1ZX1JVTEUubGFzdF9jaGFwdGVyX3J1bGUgPSBSVUxFLmxhc3RfY2hhcHRlcl9ydWxlXFxcXG5NWV9SVUxFLnBhcmFtcyA9IHt9XFxcXG5cXFxcbmNvbnN0IHsgcnVuQ29kZSwgdXJsUGFyc2UgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3V0aWxpdHk/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykpXFxcXG52YXIgeyBNWV9VUkwsIGluZGV4SHRtbCB9ID0gdXJsUGFyc2UoUlVMRS51cmwsIHBhZ2VOdW0sICh1cmwpID0+IHtcXFxcbiAgICB1cmxbMF0gPSBmeUFsbCA/IHVybFswXS5yZXBsYWNlKC9meUFsbC9nLCAnJCR7ZnlBbGx9JykgOiB1cmxbMF0ucmVwbGFjZSgvZnkoY2xhc3N8YXJlYXx5ZWFyfHNvcnQpL2csICckJHtmeSQxfScpXFxcXG4gICAgdXJsWzBdID0gdGFiSGVhZGVyLnNldFVybCh1cmxbMF0pXFxcXG59KVxcXFxuTVlfUlVMRS51cmwgPSBNWV9VUkxcXFxcbi8vIOato+aWh+ino+aekFxcXFxuaWYgKHBhZ2VOdW0gPT0gMSkgZXZhbChNWV9SVUxFLnByZVJ1bGUpXFxcXG5pZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcXFxcbiAgICBmdW5jdGlvbiBnZXRVcmwoKSB7XFxcXG4gICAgICAgIHJldHVybiBNWV9VUkxcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBmdW5jdGlvbiBnZXRSZXNDb2RlKCkge1xcXFxuICAgICAgICByZXR1cm4gaW5kZXhIdG1sXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZnVuY3Rpb24gc2V0UmVzdWx0KGVsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxcXG4gICAgICAgIHBhcmFtMSA9IENBTExCQUNLX0tFWVxcXFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFXFxcXG4gICAgICAgIHBhcmFtMyA9IE1ZX1RZUEVcXFxcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWwuZGF0YSkpIGVsID0gZWwuZGF0YVxcXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShteUNvbGxlY3Rpb25fZWwsIGVsLm1hcCgodikgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IFJVTEUgPSBPYmplY3QuYXNzaWduKHt9LCBNWV9SVUxFKVxcXFxuICAgICAgICAgICAgdi5jb2xfdHlwZSA9IHYuY29sX3R5cGUgfHwgTVlfUlVMRS5jb2xfdHlwZVxcXFxuXFxcXG4gICAgICAgICAgICBpZiAoIXYudXJsKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcXFxuICAgICAgICAgICAgICAgIHYudXJsID0gdi51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxcXFxcXFxuaWYoTVlfUlVMRSlPYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KHsgdGl0bGU6IE1ZX1JVTEUudGl0bGUsIHBhZ2VzOiBNWV9SVUxFLnBhZ2VzLCBwYWdlTGlzdDogTVlfUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpOycpXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IFtfLCB1cmwsIHJ1bGVdID0gdi51cmwubWF0Y2goL14oW1xcXFxcXFxcc1xcXFxcXFxcU10qPylAcnVsZT0oW1xcXFxcXFxcc1xcXFxcXFxcU10qKSQvKVxcXFxuICAgICAgICAgICAgICAgIHYudXJsID0gdXJsXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gcnVsZVxcXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2NvbF90eXBlID0gTVlfUlVMRS5jb2xfdHlwZVxcXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5zdGFydHNXaXRoKCdoaWtlcjovL3BhZ2UvJykpIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAodi51cmwuaW5jbHVkZXMoJ3J1bGU9JykgfHwgKHYuZXh0cmEgfHwge30pLnJ1bGUpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSB2LnVybC5zcGxpdCgnIycpWzBdLm1hdGNoKC9eaGlrZXI6XFxcXFxcXFwvXFxcXFxcXFwvcGFnZVxcXFxcXFxcLyguKz8pKD86XFxcXFxcXFw/LiopPyQvKVsxXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgc3ViUGFnZSA9IE1ZX1JVTEUucGFnZUxpc3QuZmluZCgodikgPT4gdi5wYXRoID09IHBhdGgpXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXFxcXG4gICAgICAgICAgICAgICAgUlVMRS5wYXJhbXMgPSB2LmV4dHJhIHx8IHt9XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUpIHsgcmV0dXJuIHYgfVxcXFxuICAgICAgICAgICAgdi5leHRyYSA9IHsgdXJsOiB2LnVybCwgUlVMRTogUlVMRSwgcGFnZVRpdGxlOiB2LnRpdGxlIH1cXFxcbiAgICAgICAgICAgIHYudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWxMb2FkP3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpXFxcXG4gICAgICAgICAgICByZXR1cm4gdlxcXFxuICAgICAgICB9KSlcXFxcbiAgICAgICAgbWV0aG9kX3NldFJlc3VsdC5pbnZva2UoamF2YUNvbnRleHQsIG15Q29sbGVjdGlvbl9lbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBmdW5jdGlvbiBzZXRIb21lUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXFxcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZnVuY3Rpb24gc2V0U2VhcmNoUmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXFxcbiAgICAgICAgc2V0UmVzdWx0KGEsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZXZhbChNWV9SVUxFLmZpbmRfcnVsZS5zbGljZSgzKSlcXFxcbn0gZWxzZSB7XFxcXG4gICAgbGV0IGZpbmRSdWxlID0gTVlfUlVMRS5maW5kX3J1bGUuc3BsaXQoJzsnKVxcXFxuICAgIHBhcnNlRG9tRm9yQXJyYXkoaW5kZXhIdG1sLCBmaW5kUnVsZS5zaGlmdCgpKS5mb3JFYWNoKChkYXRhKSA9PiB7XFxcXG4gICAgICAgIGxldCBbdGl0bGUsIGltZywgZGVzYywgdXJsXSA9IGZpbmRSdWxlLm1hcCgodiwgaSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICh2ID09ICcqJykgcmV0dXJuICcnXFxcXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdiA9IChpID09IDEgfHwgaSA9PSAzKSA/XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZURvbShkYXRhLCB2KSA6XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZURvbUZvckh0bWwoZGF0YSwgdilcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gMykgdiA9IHJ1bkNvZGUodilcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcXFxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcXFxuICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICByZXMgPSB7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IE1ZX1JVTEUuY29sX3R5cGVcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgaWYgKHJlcy51cmwpIHtcXFxcbiAgICAgICAgICAgIGlmIChyZXMudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcXFxcbiAgICAgICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcXFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyB0aXRsZTogTVlfUlVMRS50aXRsZSwgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7JylcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTVlfUlVMRS5kZXRhaWxfZmluZF9ydWxlKSB7XFxcXG4gICAgICAgICAgICAgICAgcmVzLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKVxcXFxuICAgICAgICAgICAgICAgIHJlcy5leHRyYSA9IHsgdXJsOiB1cmwsIFJVTEU6IE1ZX1JVTEUsIHBhZ2VUaXRsZTogdGl0bGUgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBteUNvbGxlY3Rpb25fZWwucHVzaChyZXMpXFxcXG4gICAgfSlcXFxcbiAgICBzZXRSZXN1bHQobXlDb2xsZWN0aW9uX2VsKVxcXFxufVxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6K+m5oOFXFxcIixcXFwicGF0aFxcXCI6XFxcImRldGFpbExvYWRcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgbXlDb2xsZWN0aW9uX2VsID0gW11cXFxcblxcXFxuLy8g5aSE55CGTVlfVVJM5ZKMTVlfUlVMRVxcXFxubGV0IFJVTEUgPSBNWV9QQVJBTVMuUlVMRVxcXFxuTVlfUlVMRS52ZXJzaW9uID0gUlVMRS52ZXJzaW9uXFxcXG5NWV9SVUxFLmdyb3VwID0gUlVMRS5ncm91cFxcXFxuTVlfUlVMRS50aXRsZSA9IFJVTEUudGl0bGVcXFxcbk1ZX1JVTEUudXJsID0gTVlfVVJMXFxcXG5NWV9SVUxFLnVhID0gUlVMRS51YVxcXFxuTVlfUlVMRS5jb2xfdHlwZSA9IFJVTEUuZGV0YWlsX2NvbF90eXBlXFxcXG5NWV9SVUxFLmZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcXFxuTVlfUlVMRS5wcmVSdWxlID0gUlVMRS5wcmVSdWxlXFxcXG5NWV9SVUxFLnBhZ2VMaXN0ID0gUlVMRS5wYWdlTGlzdFxcXFxuTVlfUlVMRS5wYWdlcyA9IFJVTEUucGFnZXNcXFxcbk1ZX1JVTEUubGFzdF9jaGFwdGVyX3J1bGUgPSBSVUxFLmxhc3RfY2hhcHRlcl9ydWxlXFxcXG5NWV9SVUxFLnBhcmFtcyA9IFJVTEUucGFyYW1zXFxcXG4vLyDop6PmnpDmraPmlodcXFxcbmlmKE1ZX1BBUkFNUy5wYWdlVGl0bGUpIHNldFBhZ2VUaXRsZShNWV9QQVJBTVMucGFnZVRpdGxlKVxcXFxuZXZhbChNWV9SVUxFLnByZVJ1bGUpXFxcXG5zZXRMYXN0Q2hhcHRlclJ1bGUoTVlfUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSlcXFxcbk1ZX1BBUkFNUyA9IE1ZX1JVTEUucGFyYW1zXFxcXG5pZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcXFxcbiAgICBmdW5jdGlvbiBzZXRSZXN1bHQoZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXFxcbiAgICAgICAgcGFyYW0xID0gQ0FMTEJBQ0tfS0VZXFxcXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEVcXFxcbiAgICAgICAgcGFyYW0zID0gTVlfVFlQRVxcXFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbC5kYXRhKSkgZWwgPSBlbC5kYXRhXFxcXG5cXFxcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobXlDb2xsZWN0aW9uX2VsLCBlbC5tYXAoKHYpID0+IHtcXFxcbiAgICAgICAgICAgIGxldCBSVUxFID0gT2JqZWN0LmFzc2lnbih7fSwgTVlfUlVMRSlcXFxcbiAgICAgICAgICAgIHYuY29sX3R5cGUgPSB2LmNvbF90eXBlIHx8IE1ZX1JVTEUuY29sX3R5cGVcXFxcblxcXFxuICAgICAgICAgICAgaWYgKCF2LnVybCkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiB2XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcXFxcbiAgICAgICAgICAgICAgICB2LnVybCA9IHYudXJsLnJlcGxhY2UoJy5qczonLCAnLmpzOlxcXFxcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHRpdGxlOiBNWV9SVUxFLnRpdGxlLCBwYWdlczogTVlfUlVMRS5wYWdlcywgcGFnZUxpc3Q6IE1ZX1JVTEUucGFnZUxpc3QsIGZpbmRfcnVsZTogJycsIHBhcmFtczogJycgfSkgKyAnKTsnKVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiB2XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAcnVsZT0nKSkge1xcXFxuICAgICAgICAgICAgICAgIGxldCBbXywgdXJsLCBydWxlXSA9IHYudXJsLm1hdGNoKC9eKFtcXFxcXFxcXHNcXFxcXFxcXFNdKj8pQHJ1bGU9KFtcXFxcXFxcXHNcXFxcXFxcXFNdKikkLylcXFxcbiAgICAgICAgICAgICAgICB2LnVybCA9IHVybFxcXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IHJ1bGVcXFxcbiAgICAgICAgICAgICAgICBSVUxFLmRldGFpbF9jb2xfdHlwZSA9IE1ZX1JVTEUuY29sX3R5cGVcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly9wYWdlLycpKSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKHYudXJsLmluY2x1ZGVzKCdydWxlPScpIHx8ICh2LmV4dHJhIHx8IHt9KS5ydWxlKVxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcXFxuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gdi51cmwuc3BsaXQoJyMnKVswXS5tYXRjaCgvXmhpa2VyOlxcXFxcXFxcL1xcXFxcXFxcL3BhZ2VcXFxcXFxcXC8oLis/KSg/OlxcXFxcXFxcPy4qKT8kLylbMV0sXFxcXG4gICAgICAgICAgICAgICAgICAgIHN1YlBhZ2UgPSBNWV9SVUxFLnBhZ2VMaXN0LmZpbmQoKHYpID0+IHYucGF0aCA9PSBwYXRoKVxcXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IHN1YlBhZ2UucnVsZVxcXFxuICAgICAgICAgICAgICAgIFJVTEUuZGV0YWlsX2NvbF90eXBlID0gc3ViUGFnZS5jb2xfdHlwZVxcXFxuICAgICAgICAgICAgICAgIFJVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxcXFxuICAgICAgICAgICAgfSBlbHNlIHsgcmV0dXJuIHYgfVxcXFxuICAgICAgICAgICAgdi5leHRyYSA9IHsgdXJsOiB2LnVybCwgUlVMRTogUlVMRSB9XFxcXG4gICAgICAgICAgICB2LnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKVxcXFxuICAgICAgICAgICAgcmV0dXJuIHZcXFxcbiAgICAgICAgfSkpXFxcXG4gICAgICAgIG1ldGhvZF9zZXRSZXN1bHQuaW52b2tlKGphdmFDb250ZXh0LCBteUNvbGxlY3Rpb25fZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZnVuY3Rpb24gc2V0SG9tZVJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxcXG4gICAgICAgIHNldFJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcXFxuICAgIH1cXFxcblxcXFxuICAgIGZ1bmN0aW9uIHNldFNlYXJjaFJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxcXG4gICAgICAgIHNldFJlc3VsdChhLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcXFxuICAgIH1cXFxcblxcXFxuICAgIGV2YWwoTVlfUlVMRS5maW5kX3J1bGUuc2xpY2UoMykpXFxcXG59IGVsc2Uge1xcXFxuICAgIGNvbnN0IHsgcnVuQ29kZSB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdXRpbGl0eT9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSlcXFxcbiAgICBsZXQgZmluZFJ1bGUgPSBNWV9SVUxFLmZpbmRfcnVsZS5zcGxpdCgnOycpXFxcXG4gICAgcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksIGZpbmRSdWxlLnNoaWZ0KCkpLmZvckVhY2goKGRhdGEpID0+IHtcXFxcbiAgICAgICAgbGV0IFt0aXRsZSwgaW1nLCBkZXNjLCB1cmxdID0gZmluZFJ1bGUubWFwKCh2LCBpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gJyonKSByZXR1cm4gJydcXFxcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB2ID0gKGkgPT0gMSB8fCBpID09IDMpID9cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tKGRhdGEsIHYpIDpcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChkYXRhLCB2KVxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAzKSB2ID0gcnVuQ29kZSh2KVxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG4gICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgIHJlcyA9IHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogTVlfUlVMRS5jb2xfdHlwZVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICBpZiAocmVzLnVybCAmJiByZXMudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpXFxcXG4gICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcXFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyB0aXRsZTogTVlfUlVMRS50aXRsZSwgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7JylcXFxcbiAgICAgICAgbXlDb2xsZWN0aW9uX2VsLnB1c2gocmVzKVxcXFxuICAgIH0pXFxcXG4gICAgc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcXFxcbn1cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaVsOaNrui9veWFpVxcXCIsXFxcInBhdGhcXFwiOlxcXCJkYXRhTG9hZFxcXCIsXFxcInJ1bGVcXFwiOlxcXCIvL+ecn+ato+iOt+WPluaVsOaNrueahOmAu+i+kVxcXFxuZnVuY3Rpb24gbG9hZCgpIHtcXFxcbiAgICBsZXQgdXJsID0gJ2hpa2VyOi8vcGFnZS9kYXRhJyxcXFxcbiAgICAgICAgZCA9IFtdXFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgZCA9IGZldGNoKHVybClcXFxcbiAgICAgICAgaWYgKHVybC5zdGFydHNXaXRoKCdoaWtlcjovL3BhZ2UvJykpXFxcXG4gICAgICAgICAgICBkID0gSlNPTi5wYXJzZShkKS5ydWxlXFxcXG4gICAgICAgIGQgPSBKU09OLnBhcnNlKGQpXFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICBkID0gW11cXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGQuZmlsdGVyKCh2KSA9PiB7IHJldHVybiB2LnRpdGxlICE9IE1ZX1JVTEUudGl0bGUgJiYgdi5hdXRob3IgIT0gJ+i9u+WQiOmbhueUn+aIkOWZqCcgfSlcXFxcbn1cXFxcbi8v5qOA5p+l6Ze06ZqU77yM6buY6K6k5LiA5aSpXFxcXG5sZXQgbWluID0gNjAgKiAyNCAqIDFcXFxcblxcXFxubGV0IGRhdGEgPSBbXVxcXFxubGV0IHRpbWUgPSBnZXRJdGVtKCd1cGRhdGV0aW1lJywgJzAnKVxcXFxudGltZSA9IHBhcnNlSW50KHRpbWUpXFxcXG5sZXQgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcXFxcbmlmIChub3cgLSB0aW1lID4gMTAwMCAqIDYwICogbWluKSB7XFxcXG4gICAgbG9nKCfmm7TmlrDkuobmlbDmja4nKVxcXFxuICAgIHNldEl0ZW0oJ3VwZGF0ZXRpbWUnLCAnJyArIG5vdylcXFxcbiAgICBkYXRhID0gbG9hZCgpXFxcXG4gICAgc2F2ZUZpbGUoJ2RhdGEuanNvbicsIEpTT04uc3RyaW5naWZ5KGRhdGEpKVxcXFxufSBlbHNlIHtcXFxcbiAgICBsb2coJ+ayoeacieabtOaWsOaVsOaNricpXFxcXG4gICAgZGF0YSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2RhdGEuanNvbicpKVxcXFxufVxcXFxuJC5leHBvcnRzID0gZGF0YVxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5bel5YW36ZuGXFxcIixcXFwicGF0aFxcXCI6XFxcInV0aWxpdHlcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzID0ge1xcXFxuICAgIHJ1bkNvZGU6IGZ1bmN0aW9uKHJ1bGUpIHtsb2cocnVsZSlcXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIGxldCBbaW5wdXQsIGNvZGVdID0gcnVsZS5zcGxpdCgnLmpzOicpXFxcXG4gICAgICAgICAgICByZXR1cm4gY29kZSA/IGV2YWwoY29kZSkgOiBydWxlXFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIHJ1bGUgfVxcXFxuICAgIH0sXFxcXG4gICAgdXJsUGFyc2U6IGZ1bmN0aW9uKHVybCwgcGFnZU51bSwgZnVuYykge1xcXFxuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJzsnKS5tYXAoKHYpID0+IHYucmVwbGFjZSgv77yb77ybL2csICc7JykpXFxcXG4gICAgICAgIGlmIChmdW5jKSBmdW5jKHVybClcXFxcbiAgICAgICAgdXJsWzBdID0gdXJsWzBdLnJlcGxhY2UoL2Z5cGFnZSg/OkAoLT9cXFxcXFxcXGQrKUApPyg/OlxcXFxcXFxcKihcXFxcXFxcXGQrKUApPy8sIChfLCBzdGFydCwgc3BhY2UpID0+IHBhcnNlSW50KHN0YXJ0IHx8IDApICsgMSArIChwYWdlTnVtIC0gMSkgKiBwYXJzZUludChzcGFjZSB8fCAxKSlcXFxcbiAgICAgICAgdXJsWzBdID0gL14oLio/KSg/OlxcXFxcXFxcW2ZpcnN0UGFnZT0oLio/KVxcXFxcXFxcXSk/JC8uZXhlYyh1cmxbMF0pXFxcXG4gICAgICAgIHVybFswXSA9IHJ1bkNvZGUodXJsWzBdWzJdICYmIHBhZ2VOdW0gPT0gMSA/IHVybFswXVsyXSA6IHVybFswXVsxXSlcXFxcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluOyBjaGFyc3Q9VVRGLTgnIH0sIG1ldGhvZDogdXJsWzFdIH1cXFxcbiAgICAgICAgLy8gcG9zdOaWueazleaXtui9rOaNouWPguaVsFxcXFxuICAgICAgICBpZiAoL15wb3N0JC9pLnRlc3Qob3B0aW9uc1snbWV0aG9kJ10pKSB7XFxcXG4gICAgICAgICAgICBsZXQgW29yaVVybCwgYm9keV0gPSB1cmxbMF0uc3BsaXQoJz8nKVxcXFxuICAgICAgICAgICAgdXJsWzBdID0gb3JpVXJsLnJlcGxhY2UoL++8n++8ny9nLCAnPycpXFxcXG4gICAgICAgICAgICBpZiAoYm9keS5zdGFydHNXaXRoKCdKc29uQm9keT0nKSkgYm9keSA9IGJvZHkuc2xpY2UoOSlcXFxcbiAgICAgICAgICAgIG9wdGlvbnNbJ2JvZHknXSA9IGJvZHlcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAodXJsWzJdKSBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gb3B0aW9ucy5oZWFkZXJzWydDb250ZW50LVR5cGUnXS5zbGljZSgwLCAxOSkgKyB1cmxbMl1cXFxcbiAgICAgICAgLy9sb2cob3B0aW9ucy5oZWFkZXJzWydDb250ZW50LVR5cGUnXSlcXFxcbiAgICAgICAgaWYgKHVybFszXSkgdXJsWzNdLm1hdGNoKC97KC4qKX0vKVsxXS5zcGxpdCgnJiYnKS5mb3JFYWNoKCh2KSA9PiB7XFxcXG4gICAgICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gdi5zcGxpdCgnQCcpXFxcXG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNba2V5XSA9IHJ1bkNvZGUodmFsdWUpXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIC8vIOa3u+WKoOWFqOWxgFVBXFxcXG4gICAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzWydVc2VyLUFnZW50J10pIHtcXFxcbiAgICAgICAgICAgIGlmIChNWV9SVUxFLnVhID09ICdwYycpXFxcXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzWydVc2VyLUFnZW50J10gPSBQQ19VQVxcXFxuICAgICAgICAgICAgZWxzZSBpZiAoTVlfUlVMRS51YSA9PSAnbW9iaWxlJylcXFxcbiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ1VzZXItQWdlbnQnXSA9IE1PQklMRV9VQVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiB7IE1ZX1VSTDogdXJsWzBdLCBpbmRleEh0bWw6IGZldGNoKHVybFswXSwgb3B0aW9ucykgfVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuinhOWImeWIl+ihqFxcXCIsXFxcInBhdGhcXFwiOlxcXCJkYXRhXFxcIixcXFwicnVsZVxcXCI6XFxcIlt7XFxcXG4gICAgXFxcXFxcXCJsYXN0X2NoYXB0ZXJfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidGl0bGVcXFxcXFxcIjogXFxcXFxcXCLlkL7niLHnoLTop6PwnZSlXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhdXRob3JcXFxcXFxcIjogXFxcXFxcXCJIb29kXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1cmxcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy41MnBvamllLmNuL2ZvcnVtLnBocD9tb2Q9Z3VpZGUmdmlldz1meWNsYXNzJnBhZ2U9ZnlwYWdlO2dldDtHQktcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInZlcnNpb25cXFxcXFxcIjogNCxcXFxcbiAgICBcXFxcXFxcImNvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc19uYW1lXFxcXFxcXCI6IFxcXFxcXFwi5pyA5paw54Ot6ZeoJuacgOaWsOeyvuWNjibmnIDmlrDlm57lpI0m5pyA5paw5Y+R6KGoXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc191cmxcXFxcXFxcIjogXFxcXFxcXCJob3QmZGlnZXN0Jm5ldyZuZXd0aHJlYWRcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImFyZWFfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzb3J0X3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcImpzOlxcXFxcXFxcbnZhciByZXMgPSB7fTtcXFxcXFxcXG52YXIgZCA9IFtdO1xcXFxcXFxcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcXFxcXFxcblxcXFxcXFxcbi8v5YiX6KGoXFxcXFxcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsJ2JvZHkmJnRib2R5W2lkXScpO1xcXFxcXFxcblxcXFxcXFxcbmZvcih2YXIgaT0xO2k8bGlzdC5sZW5ndGgrMTtpKyspe1xcXFxcXFxcbmQucHVzaCh7XFxcXFxcXFxudGl0bGU6IChpKSsgJy4gJyArcGFyc2VEb21Gb3JIdG1sKGxpc3RbaS0xXSwnLnhzdCYmVGV4dCcpLFxcXFxcXFxcbnVybDoneDU6Ly9odHRwczovL3d3dy41MnBvamllLmNuLycrcGFyc2VEb21Gb3JIdG1sKGxpc3RbaS0xXSwnYSYmaHJlZicpLFxcXFxcXFxcbmNvbF90eXBlOiAndGV4dF8xJ30pO1xcXFxcXFxcbn1cXFxcXFxcXG5cXFxcXFxcXHJcXFxcXFxcXG5yZXMuZGF0YSA9IGQ7XFxcXFxcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoX3VybFxcXFxcXFwiOiBcXFxcXFxcImh0dHA6Ly96aGFubmVpLmJhaWR1LmNvbS9jc2Uvc2l0ZT9xPSoqJnA9ZnlwYWdlJmNjPTUycG9qaWUuY25cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImdyb3VwXFxcXFxcXCI6IFxcXFxcXFwi4pGg5o6o6I2QXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hGaW5kXFxcXFxcXCI6IFxcXFxcXFwiYm9keSYmLnJlc3VsdDtcXFxcXFxcXG5oMyYmVGV4dDtcXFxcXFxcXG5hJiZocmVmO1xcXFxcXFxcbio7XFxcXFxcXFxuLmMtYWJzdHJhY3QmJlRleHQ7XFxcXFxcXFxuKlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9jb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1YVxcXFxcXFwiOiBcXFxcXFxcInBjXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwcmVSdWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwYWdlc1xcXFxcXFwiOiBcXFxcXFxcIltdXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJpY29uXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cuNTJwb2ppZS5jbi9mYXZpY29uLmljb1xcXFxcXFwiXFxcXG59LCB7XFxcXG4gICAgXFxcXFxcXCJsYXN0X2NoYXB0ZXJfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidGl0bGVcXFxcXFxcIjogXFxcXFxcXCJaRDQyM/Cfh6jwn4ezXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhdXRob3JcXFxcXFxcIjogXFxcXFxcXCJOYW1vXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1cmxcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy40MjNkb3duLmNvbS9wYWdlL2Z5cGFnZVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiAwLFxcXFxuICAgIFxcXFxcXFwiY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc19uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc191cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImFyZWFfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzb3J0X3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcImpzOlxcXFxcXFxcbnZhciByZXMgPSB7fTtcXFxcXFxcXG52YXIgZCA9IFtdO1xcXFxcXFxcbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksICcuY29udGVudC13cmFwJiYuZXhjZXJwdCYmbGknKTtcXFxcXFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcXFxcXG4gICAgZC5wdXNoKHtcXFxcXFxcXG4gICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJ2gyJiZUZXh0JyksXFxcXFxcXFxuICAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5pbmZvJiZUZXh0JyksXFxcXFxcXFxuXFxcXFxcXFx0ICAgICAgcGljX3VybDpwYXJzZURvbShsaXN0W2ldLCdpbWcmJnNyYycpLFxcXFxcXFxcbiAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2ldLCAnYSYmaHJlZicpLFxcXFxcXFxcbiAgICB9KVxcXFxcXFxcbn1cXFxcXFxcXG5yZXMuZGF0YSA9IGQ7XFxcXFxcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoX3VybFxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL3BhZ2UvZnlwYWdlP3M9KipcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImdyb3VwXFxcXFxcXCI6IFxcXFxcXFwi5YW25a6DXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hGaW5kXFxcXFxcXCI6IFxcXFxcXFwianM6XFxcXFxcXFxudmFyIHJlcyA9IHt9O1xcXFxcXFxcbnZhciBkID0gW107XFxcXFxcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgJy5jb250ZW50LXdyYXAmJi5leGNlcnB0JiZsaScpO1xcXFxcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxcXFxcbiAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaDImJlRleHQnKSxcXFxcXFxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLmluZm8mJlRleHQnKSwgICAgICAgIFxcXFxcXFxcbiAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2ldLCAnYSYmaHJlZicpLFxcXFxcXFxcbiAgICB9KVxcXFxcXFxcbn1cXFxcXFxcXG5yZXMuZGF0YSA9IGQ7XFxcXFxcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcImpzOnZhciByZXM9e307XFxcXFxcXFxudmFyIGQgPSBbXTtcXFxcXFxcXG5kLnB1c2goe1xcXFxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXFxcXFxcXFxcInRleHRfMVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxuICAgIHRpdGxlOiBcXFxcXFxcXFxcXFxcXFwi4oCc4oCc4oCd4oCdPGJpZz5cXFxcXFxcXFxcXFxcXFwiICsgcGFyc2VEb21Gb3JIdG1sKGdldFJlc0NvZGUoKSwgXFxcXFxcXFxcXFxcXFxcImgxJiZUZXh0XFxcXFxcXFxcXFxcXFxcIikgKyBcXFxcXFxcXFxcXFxcXFwiPC9iaWc+XFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXG59KTtcXFxcXFxcXG5kLnB1c2goe1xcXFxcXFxcbiAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGdldFJlc0NvZGUoKSwgXFxcXFxcXFxcXFxcXFxcIi5lbnRyeSYmSHRtbFxcXFxcXFxcXFxcXFxcXCIpLFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXFxcXFxuICAgIGV4dHJhOiB7XFxcXFxcXFxuICAgICAgICB0ZXh0U2l6ZTogMTYsXFxcXFxcXFxuICAgICAgICBjbGljazogdHJ1ZVxcXFxcXFxcbiAgICB9XFxcXFxcXFxufSk7XFxcXFxcXFxuc2V0UmVzdWx0KGQpO1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9jb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiKlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidWFcXFxcXFxcIjogXFxcXFxcXCJwY1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicHJlUnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicGFnZXNcXFxcXFxcIjogXFxcXFxcXCJbXVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiaWNvblxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiXFxcXG59LCB7XFxcXG4gICAgXFxcXFxcXCJsYXN0X2NoYXB0ZXJfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidGl0bGVcXFxcXFxcIjogXFxcXFxcXCLokL3lsJjkuYvmnKjwn4eo8J+Hs1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXV0aG9yXFxcXFxcXCI6IFxcXFxcXFwiTmFtb1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cubHVvY2hlbnpoaW11LmNvbS9wYWdlL2Z5cGFnZVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiAxLFxcXFxuICAgIFxcXFxcXFwiY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc19uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc191cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImFyZWFfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzb3J0X3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcImpzOlxcXFxcXFxcbnZhciByZXMgPSB7fTtcXFxcXFxcXG52YXIgZCA9IFtdO1xcXFxcXFxcbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksICcuY29udGVudCYmLmV4Y2VycHQnKTtcXFxcXFxcXG5mb3IgKHZhciBpIGluIGxpc3QpIHtcXFxcXFxcXG4gICAgZC5wdXNoKHtcXFxcXFxcXG4gICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJ2gyJiZUZXh0JyksXFxcXFxcXFxuICAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJy5tZXRhJiZUZXh0JyksXFxcXFxcXFxuICAgICAgICBwaWNfdXJsOiBwYXJzZURvbShsaXN0W2ldLCAnaW1nJiZkYXRhLXNyYycpLFxcXFxcXFxcbiAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2ldLCAnYSYmaHJlZicpICsgXFxcXFxcXFxcXFxcXFxcIjtnZXQ7VVRGLTg7e1VzZXItQWdlbnRAXFxcXFxcXFxcXFxcXFxcIiArIFBDX1VBICsgXFxcXFxcXFxcXFxcXFxcIn1cXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcbiAgICB9KVxcXFxcXFxcbn1cXFxcXFxcXG5yZXMuZGF0YSA9IGQ7XFxcXFxcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoX3VybFxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL3BhZ2UvZnlwYWdlP3M9KipcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImdyb3VwXFxcXFxcXCI6IFxcXFxcXFwi5YW25a6DXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hGaW5kXFxcXFxcXCI6IFxcXFxcXFwianM6XFxcXFxcXFxudmFyIHJlcyA9IHt9O1xcXFxcXFxcbnZhciBkID0gW107XFxcXFxcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgJy5jb250ZW50LXdyYXAmJi5leGNlcnB0JiZsaScpO1xcXFxcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxcXFxcbiAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaDImJlRleHQnKSxcXFxcXFxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLmluZm8mJlRleHQnKSwgICAgICAgIFxcXFxcXFxcbiAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2ldLCAnYSYmaHJlZicpLFxcXFxcXFxcbiAgICB9KVxcXFxcXFxcbn1cXFxcXFxcXG5yZXMuZGF0YSA9IGQ7XFxcXFxcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcImpzOnZhciByZXM9e307XFxcXFxcXFxudmFyIGQgPSBbXTtcXFxcXFxcXG5kLnB1c2goe1xcXFxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXFxcXFxcXFxcInRleHRfMVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxuICAgIHRpdGxlOiBcXFxcXFxcXFxcXFxcXFwi4oCc4oCc4oCd4oCdPGJpZz5cXFxcXFxcXFxcXFxcXFwiICsgcGFyc2VEb21Gb3JIdG1sKGdldFJlc0NvZGUoKSwgXFxcXFxcXFxcXFxcXFxcImgxJiZUZXh0XFxcXFxcXFxcXFxcXFxcIikgKyBcXFxcXFxcXFxcXFxcXFwiPC9iaWc+XFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXG59KTtcXFxcXFxcXG5kLnB1c2goe1xcXFxcXFxcbiAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGdldFJlc0NvZGUoKSwgXFxcXFxcXFxcXFxcXFxcIi5hcnRpY2xlLWNvbnRlbnQmJkh0bWxcXFxcXFxcXFxcXFxcXFwiKS5zcGxpdCgncHVzaCh7fSk7JylbMV0sXFxcXFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcXFxcXG4gICAgZXh0cmE6IHtcXFxcXFxcXG4gICAgICAgIHRleHRTaXplOiAxNixcXFxcXFxcXG4gICAgICAgIGNsaWNrOiB0cnVlXFxcXFxcXFxuICAgIH1cXFxcXFxcXG59KTtcXFxcXFxcXG5zZXRSZXN1bHQoZCk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCIqXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1YVxcXFxcXFwiOiBcXFxcXFxcInBjXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwcmVSdWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJwYWdlc1xcXFxcXFwiOiBcXFxcXFxcIltdXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJpY29uXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCJcXFxcbn0sIHtcXFxcbiAgICBcXFxcXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOiBcXFxcXFxcIuWIhuS6q+iAhVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXV0aG9yXFxcXFxcXCI6IFxcXFxcXFwi5bCP8J+UpeaYn1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly9zaGFyZXJ3LmNvbS9hL2Z5QWxsL2Z5cGFnZS9cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInZlcnNpb25cXFxcXFxcIjogOSxcXFxcbiAgICBcXFxcXFxcImNvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX25hbWVcXFxcXFxcIjogXFxcXFxcXCLmiYvmnLrova/ku7Ym6L2m5py66L2v5Lu2JueUteiEkei9r+S7tiZcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImNsYXNzX3VybFxcXFxcXFwiOiBcXFxcXFxcImdhbmh1byZxaWNoZSZqaW5neWFuJlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV9uYW1lXFxcXFxcXCI6IFxcXFxcXFwi55uS5a2Q6L2v5Lu2JlRW6LWE6K6vJueyvumAiVRWXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhcmVhX3VybFxcXFxcXFwiOiBcXFxcXFxcInppeXVhbiZ0dnp4Jmp4dHZcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzb3J0X3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcImJvZHkmJi5hcnRpY2xlLWxpc3Q7aW1nJiZhbHQ7aW1nJiZzcmM7LnRpbWUmJlRleHQ7YSYmaHJlZlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoX3VybFxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vc2hhcmVydy5jb20vc2VhcmNoLnBocD9xPSoqJnBhZ2U9ZnlwYWdlXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJncm91cFxcXFxcXFwiOiBcXFxcXFxcIuWFtuWug1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoRmluZFxcXFxcXFwiOiBcXFxcXFxcImJvZHkmJi5hcnRpY2xlLWxpc3Q7aW1nJiZhbHQ7YSYmaHJlZjsudGltZSYmVGV4dDtwLDEmJlRleHQ7aW1nJiZzcmNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImRldGFpbF9jb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImRldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCJqczp2YXIgcmVzPXt9O3ZhciBkPVtdO2h0bWw9Z2V0UmVzQ29kZSgpO3RleHQ9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcXFxcXFxcXFxcXFxcIi5hcnQtY29udGVudCYmSHRtbFxcXFxcXFxcXFxcXFxcXCIpO2QucHVzaCh7dGl0bGU6dGV4dCxjb2xfdHlwZToncmljaF90ZXh0J30pO3Jlcy5kYXRhPWQ7c2V0SG9tZVJlc3VsdChyZXMpO1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9jb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiKlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidWFcXFxcXFxcIjogXFxcXFxcXCJtb2JpbGVcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInByZVJ1bGVcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInBhZ2VzXFxcXFxcXCI6IFxcXFxcXFwiW11cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImljb25cXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3ozLmF4MXguY29tLzIwMjEvMTEvMDUvSW16U3ZkLnBuZ1xcXFxcXFwiXFxcXG59LCB7XFxcXG4gICAgXFxcXFxcXCJsYXN0X2NoYXB0ZXJfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidGl0bGVcXFxcXFxcIjogXFxcXFxcXCLlj5HnjrDlsI/ova/ku7ZcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImF1dGhvclxcXFxcXFwiOiBcXFxcXFxcIuWxheeEtlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidXJsXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93d3cueDZnLmNvbS9odG1sLzIzLWZ5cGFnZS5odG1sXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IDMsXFxcXG4gICAgXFxcXFxcXCJjb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc19uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJjbGFzc191cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImFyZWFfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzb3J0X3VybFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImZpbmRfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIi5saXN0LXNvZnQmJmxpOy5saXN0LWluZm8mJmEmJlRleHQ7LmxheXVpLWNsZWFyJiZpbWcmJnNyYzsubGlzdC1jYSYmVGV4dDsubGlzdC1pbmZvJiZhJiZocmVmXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZWFyY2hfdXJsXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJncm91cFxcXFxcXFwiOiBcXFxcXFxcIuWFtuWug1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoRmluZFxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwidGV4dF8zXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiYm9keSYmLmFydGljbGUtZG93bjthJiZUZXh0Oyo7KjthJiZkYXRhLXVybFxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9jb2xfdHlwZVxcXFxcXFwiOiBcXFxcXFxcIm1vdmllXzFcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1YVxcXFxcXFwiOiBcXFxcXFxcIm1vYmlsZVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicHJlUnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicGFnZXNcXFxcXFxcIjogXFxcXFxcXCJbXVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiaWNvblxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiXFxcXG59LCB7XFxcXG4gICAgXFxcXFxcXCJsYXN0X2NoYXB0ZXJfcnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidGl0bGVcXFxcXFxcIjogXFxcXFxcXCJWWEFUXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJhdXRob3JcXFxcXFxcIjogXFxcXFxcXCLlsI/wn5Sl5pifXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1cmxcXFxcXFxcIjogXFxcXFxcXCJodHRwczovL3d3dy52eGF0LmNvbS9meUFsbF9meXBhZ2UuaHRtbFxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiAxLFxcXFxuICAgIFxcXFxcXFwiY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiY2xhc3NfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIui9r+S7tuS4i+i9vSZXaW5kb3dzJkFuZHJvaWQm55S16KeG6L2v5Lu2JlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiY2xhc3NfdXJsXFxcXFxcXCI6IFxcXFxcXFwiUnVhbkppYW5YaWFaYWkmV2luZG93cyZBbmRyb2lkJlRWJlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV9uYW1lXFxcXFxcXCI6IFxcXFxcXFwi5LyY5oOg5rS75YqoJue9keermea6kOeggSbmnI3liqHlmagm5oqA5pyv5pWZ56iLJlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiYXJlYV91cmxcXFxcXFxcIjogXFxcXFxcXCJZb3VIdWlIdW9Eb25nJldhbmdaaGFuWXVhbk1hJlZQUyZKaVNodUppYW9DaGVuZyZcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNvcnRfbmFtZVxcXFxcXFwiOiBcXFxcXFxcIuS4gOe6p+mhtemdouaPkOekuumUmeivr+S4uuayoeacieS4i+S4gOmhte+8gVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieWVhcl9uYW1lXFxcXFxcXCI6IFxcXFxcXFwi5YW25LuWJua4uOaIjybnvZHlj4vliIbkuqsmJlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic29ydF91cmxcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInllYXJfdXJsXFxcXFxcXCI6IFxcXFxcXFwiUWlUYSZZb3VYaSZXYW5nWW91RmVuWGlhbmcmJlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwiYm9keSYmLnBvc3Q7YSYmdGl0bGU7aW1nJiZzcmM7LnRpbWUmJlRleHQ7YSYmaHJlZlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2VhcmNoX3VybFxcXFxcXFwiOiBcXFxcXFxcImh0dHBzOi8vd3d3LnZ4YXQuY29tL3NlYXJjaC5waHA/cT0qKiZwYWdlPWZ5cGFnZVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiZ3JvdXBcXFxcXFxcIjogXFxcXFxcXCLlhbblroNcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcInNlYXJjaEZpbmRcXFxcXFxcIjogXFxcXFxcXCJib2R5JiYucG9zdDthJiZ0aXRsZTthJiZocmVmOy50aW1lJiZUZXh0Oy5wb3N0JiZUZXh0O2ltZyYmc3JjXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJtb3ZpZV8xXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcXFxcXCI6IFxcXFxcXFwianM6dmFyIHJlcz17fTt2YXIgZD1bXTtodG1sPWdldFJlc0NvZGUoKTt0ZXh0PXBhcnNlRG9tRm9ySHRtbChodG1sLFxcXFxcXFxcXFxcXFxcXCIuYXJ0aWNsZS1jb250ZW50JiZIdG1sXFxcXFxcXFxcXFxcXFxcIik7ZC5wdXNoKHt0aXRsZTp0ZXh0LGNvbF90eXBlOidyaWNoX3RleHQnfSk7cmVzLmRhdGE9ZDtzZXRIb21lUmVzdWx0KHJlcyk7XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwibW92aWVfMVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwic2RldGFpbF9maW5kX3J1bGVcXFxcXFxcIjogXFxcXFxcXCIqXFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJ1YVxcXFxcXFwiOiBcXFxcXFxcIm1vYmlsZVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicHJlUnVsZVxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwicGFnZXNcXFxcXFxcIjogXFxcXFxcXCJbXVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiaWNvblxcXFxcXFwiOiBcXFxcXFxcIlxcXFxcXFwiXFxcXG59XVxcXCJ9XVwifSIsInBpY1VybCI6Imh0dHBzOi8vaW1nLmx1b2NoZW56aGltdS5jb20vcHVibGljLzIwMjEvMTEvMjAyMTExMTEwNy5qcGciLCJ0aXRsZSI6IuaBkuaYn+aSreaUvuWZqCDlhY3otLnnnIvnlLXlvbHnnIvniYfnpZ7lmagifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement