Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@资源轻合集@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6LWE5rqQ6L275ZCI6ZuGIiwiYXV0aG9yIjoi5bCP5qOJ6KKE8J+MnibmsLjov5zjga7mmI7ml6UiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IiwidmVyc2lvbiI6NzYsImNvbF90eXBlIjoiaWNvbl8yX3JvdW5kIiwiY2xhc3NfbmFtZSI6IiIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuY29uc3QgeyBkYXRhTG9hZCB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdXRpbGl0eT9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSlcbmxldCBlbCA9IFt7XG4gICAgdGl0bGU6ICcgJyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpLmJvbGQoKSArICcgJm5ic3AgJm5ic3AgJyArICfimpkg6L275ZCI6ZuG6K6+572uIOKamScuc21hbGwoKSxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2UvQ29uZmlnP3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpLFxuICAgIGltZzogTVlfUlVMRS5pY29uIHx8ICdoaWtlcjovL2ltYWdlcy9pY29uMScsXG4gICAgY29sX3R5cGU6ICdhdmF0YXInXG59LCB7XG4gICAgdXJsOiAnXCJoaWtlcjovL3NlYXJjaD9zPVwiK2lucHV0K1wiJnJ1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpICsgJ1wiJyxcbiAgICBkZXNjOiAn5pCc5L2g5oOz6KaB55qELi4uJyxcbiAgICB0aXRsZTogJ+aQnOe0oicsXG4gICAgY29sX3R5cGU6ICdpbnB1dCdcbn1dXG5cbmxldCBuZXdXaW5kb3cgPSByZWFkRmlsZSgnbmV3V2luZG93JylcbmRhdGFMb2FkKCkuZm9yRWFjaCgodikgPT4ge1xuICAgIGxldCBmeXBhZ2UgPSAvXlteO10qP2Z5cGFnZS4qPyg7LiopPyQvLnRlc3Qodi51cmwpID8gJ2Z5cGFnZScgOiAnMScsXG4gICAgICAgIGQgPSB7XG4gICAgICAgICAgICB0aXRsZTogdi50aXRsZSxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9pbmRleExvYWQ/IycgKyBmeXBhZ2UgKyAnI25vSGlzdG9yeSMnLFxuICAgICAgICAgICAgaW1nOiB2Lmljb24sXG4gICAgICAgICAgICBleHRyYTogeyBSVUxFOiB2IH1cbiAgICAgICAgfVxuICAgIGlmKG5ld1dpbmRvdykgT2JqZWN0LmFzc2lnbihkLmV4dHJhLCB7IG5ld1dpbmRvdzogdHJ1ZSwgd2luZG93SWQ6IGdldEl0ZW0oJ215Q29sbGVjdGlvbicpICsgZC50aXRsZSB9KVxuICAgIGVsLnB1c2goZClcbn0pXG5zZXRSZXN1bHQoZWwpIiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHk/a2V5d29yZD0qKiZwYWdlPWZ5cGFnZSIsImdyb3VwIjoi4pGg6L275ZCI6ZuGIiwic2VhcmNoRmluZCI6ImpzOlxuY29uc3QgeyBkYXRhTG9hZCwgcnVuQ29kZSwgdXJsUGFyc2UgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3V0aWxpdHk/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykpXG5sZXQgbXlDb2xsZWN0aW9uX2VsID0gW10sXG4gICAgc2VhcmNoVGhkID0gcGFyc2VJbnQocmVhZEZpbGUoJ3NlYXJjaFRoZCcpIHx8ICc1JyksXG4gICAga2V5d29yZCA9IGdldFBhcmFtKCdrZXl3b3JkJyksXG4gICAgcGFnZU51bSA9IHBhcnNlSW50KGdldFBhcmFtKCdwYWdlJykpLFxuICAgIFJVTEVTID0gZGF0YUxvYWQoKS5maWx0ZXIoKHYpID0+IHYuc2VhcmNoX3VybClcbmlmIChzZWFyY2hUaGQgPT0gMCkge1xuICAgIG15Q29sbGVjdGlvbl9lbC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICgn4qyHIOmAieaLqeS4gOS4quWwj+eoi+W6j+afpeeciycgKyBrZXl3b3JkICsgJ+eahOaQnOe0oue7k+aenCDirIcnKS5zbWFsbCgpLFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5J1xuICAgIH0pXG4gICAgUlVMRVMuZm9yRWFjaCgodikgPT4gbXlDb2xsZWN0aW9uX2VsLnB1c2goe1xuICAgICAgICB0aXRsZTogdi50aXRsZSxcbiAgICAgICAgdXJsOiBcImhpa2VyOi8vcGFnZS9zaW5nbGVTZWFyY2g/a2V5d29yZD1cIiArIGtleXdvcmQgKyBcIiZwYWdlPWZ5cGFnZVwiLFxuICAgICAgICBleHRyYTogeyBydWxlOiBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSwgUlVMRTogdiB9LFxuICAgIH0pKVxufSBlbHNlIGlmIChzZWFyY2hUaGQgPiAwKSB7XG4gICAgbGV0IHNlYXJjaENvdW50ID0gcGFnZU51bSAqIHNlYXJjaFRoZCxcbiAgICAgICAgc2VhcmNoVGFnID0geyB0aXRsZTogJ+KshiDlt7LmkJzntKLkuoYnICsgc2VhcmNoQ291bnQgKyAn5Liq5bCP56iL5bqPIOKshlxcbuKshyDkuIvpnaLov5jmnIknICsgUlVMRVMuc2xpY2Uoc2VhcmNoQ291bnQpLmxlbmd0aCArICfkuKrlsI/nqIvluo8g4qyHJyB9XG4gICAgUlVMRVMgPSBSVUxFUy5zbGljZShzZWFyY2hDb3VudCAtIHNlYXJjaFRoZCwgc2VhcmNoQ291bnQpXG4gICAgaWYgKCFSVUxFUy5sZW5ndGgpIHNldFJlc3VsdChbXSlcblxuICAgIGxldCBVUkxTID0gUlVMRVMubWFwKChSVUxFKSA9PiB7XG4gICAgICAgIE1ZX1JVTEUudWEgPSBSVUxFLnVhXG4gICAgICAgIGxldCB1cmxSZXEgPSB1cmxQYXJzZShSVUxFLnNlYXJjaF91cmwsIHt9LCAxLCAodXJsKSA9PiB7XG4gICAgICAgICAgICB1cmxbMF0gPSB1cmxbMF0ucmVwbGFjZSh1cmxbMF0uaW5jbHVkZXMoJyUlJykgPyAvJSUvZyA6IC9cXCpcXCovZywgZW5jb2RlU3RyKGtleXdvcmQsIHVybFsyXSkpXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiB7IHVybDogdXJsUmVxLk1ZX1VSTCwgb3B0aW9uczogdXJsUmVxLk1ZX1VSTF9PcHRpb25zIH1cbiAgICB9KVxuICAgIGJhdGNoRmV0Y2goVVJMUykuZm9yRWFjaCgoaW5kZXhIdG1sLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyDlpITnkIZNWV9VUkzlkoxNWV9SVUxFXG4gICAgICAgIGxldCBSVUxFID0gUlVMRVNbaW5kZXhdXG4gICAgICAgIE1ZX1VSTCA9IFVSTFNbaW5kZXhdLnVybFxuICAgICAgICBNWV9SVUxFLnVhID0gUlVMRS51YVxuICAgICAgICBNWV9SVUxFLmNvbF90eXBlID0gUlVMRS5jb2xfdHlwZVxuICAgICAgICBNWV9SVUxFLmRldGFpbF9jb2xfdHlwZSA9IFsnJywgJyonXS5pbmNsdWRlcyhSVUxFLnNkZXRhaWxfZmluZF9ydWxlKSA/IFJVTEUuZGV0YWlsX2NvbF90eXBlIDogUlVMRS5zZGV0YWlsX2NvbF90eXBlXG4gICAgICAgIE1ZX1JVTEUuZmluZF9ydWxlID0gUlVMRS5zZWFyY2hGaW5kXG4gICAgICAgIE1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IFsnJywgJyonXS5pbmNsdWRlcyhSVUxFLnNkZXRhaWxfZmluZF9ydWxlKSA/IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZSA6IFJVTEUuc2RldGFpbF9maW5kX3J1bGVcbiAgICAgICAgTVlfUlVMRS5wcmVSdWxlID0gUlVMRS5wcmVSdWxlXG4gICAgICAgIE1ZX1JVTEUucGFnZUxpc3QgPSBKU09OLnBhcnNlKFJVTEUucGFnZXMgfHwgJ1tdJylcbiAgICAgICAgTVlfUlVMRS5wYWdlcyA9IEpTT04uc3RyaW5naWZ5KE1ZX1JVTEUucGFnZUxpc3QpXG4gICAgICAgIE1ZX1JVTEUubGFzdF9jaGFwdGVyX3J1bGUgPSBSVUxFLmxhc3RfY2hhcHRlcl9ydWxlXG4gICAgICAgIE1ZX1JVTEUucGFyYW1zID0ge31cbiAgICAgICAgTVlfUlVMRS51cmwgPSBNWV9VUkxcbiAgICAgICAgTVlfUlVMRS51cmxIZWFkZXJzID0gVVJMU1tpbmRleF0ub3B0aW9ucy5oZWFkZXJzXG5cbiAgICAgICAgLy8g5q2j5paH6Kej5p6QXG4gICAgICAgIGV2YWwoTVlfUlVMRS5wcmVSdWxlKVxuICAgICAgICBpZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFVybCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTVlfVVJMXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFJlc0NvZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4SHRtbFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBzZXRSZXN1bHQoZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbC5kYXRhKSkgZWwgPSBlbC5kYXRhXG4gICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobXlDb2xsZWN0aW9uX2VsLCBlbC5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IE1ZX19SVUxFID0gT2JqZWN0LmFzc2lnbih7fSwgTVlfUlVMRSwgeyB0aXRsZTogUlVMRS50aXRsZSB9KVxuICAgICAgICAgICAgICAgICAgICB2LmRlc2MgPSBSVUxFLnRpdGxlICsgJyDilqogJyArICh2LmRlc2MgfHwgJycpXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2LnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5pbmNsdWRlcygnQHJ1bGU9JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbXywgdXJsLCBydWxlXSA9IHYudXJsLm1hdGNoKC9eKFtcXHNcXFNdKj8pQHJ1bGU9KFtcXHNcXFNdKikkLylcbiAgICAgICAgICAgICAgICAgICAgICAgIHYudXJsID0gdXJsXG4gICAgICAgICAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gcnVsZVxuICAgICAgICAgICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2NvbF90eXBlID0gTVlfUlVMRS5jb2xfdHlwZVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYudXJsLmluY2x1ZGVzKCdydWxlPScpIHx8ICh2LmV4dHJhIHx8IHt9KS5ydWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgW18sIHBhdGgsIHBhcmFtc10gPSB2LnVybC5zcGxpdCgnIycpWzBdLm1hdGNoKC9eaGlrZXI6XFwvXFwvcGFnZVxcLyguKz8pKD86XFw/KC4qKSk/JC8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlBhZ2UgPSBNWV9SVUxFLnBhZ2VMaXN0LmZpbmQoKHYpID0+IHYucGF0aCA9PSBwYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJVcmwgPSAocGFyYW1zIHx8ICcnKS5zcGxpdCgnJicpLmZpbmQoKHYpID0+IHYuc3RhcnRzV2l0aCgndXJsPScpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdi51cmwgPSBzdWJVcmwgPyBzdWJVcmwuc2xpY2UoNCkucmVwbGFjZSgv77yf77yfL2csICc/JykucmVwbGFjZSgv77yG77yGL2csICcmJykgOiAodi5leHRyYSB8fCB7fSkudXJsIHx8ICdoaWtlcjovL2VtcHR5PycgKyAocGFyYW1zIHx8ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IHN1YlBhZ2UucnVsZVxuICAgICAgICAgICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2NvbF90eXBlID0gc3ViUGFnZS5jb2xfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgTVlfX1JVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHYudXJsID0gdi51cmwucmVwbGFjZSgnLmpzOicsICcuanM6XFxuaWYoTVlfUlVMRSlPYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KHsgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7TVlfVVJMPVwiJyArIE1ZX1VSTCArICdcIjsnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghTVlfUlVMRS5kZXRhaWxfZmluZF9ydWxlIHx8IHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vJykpIHsgcmV0dXJuIHYgfVxuICAgICAgICAgICAgICAgICAgICB2LmV4dHJhID0geyB1cmw6IHYudXJsLCBSVUxFOiBNWV9fUlVMRSwgcGFnZVRpdGxlOiB2LnRpdGxlIH1cbiAgICAgICAgICAgICAgICAgICAgdi51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYuZXh0cmEuUlVMRS51cmwuaW5jbHVkZXMoJyNpbW1lcnNpdmVUaGVtZSMnKSkgdi51cmwgKz0gJyYjaW1tZXJzaXZlVGhlbWUjJ1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRIb21lUmVzdWx0ID0gc2V0UmVzdWx0XG4gICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHQgPSBzZXRSZXN1bHRcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBldmFsKE1ZX1JVTEUuZmluZF9ydWxlLnNsaWNlKDMpKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBmaW5kUnVsZSA9IE1ZX1JVTEUuZmluZF9ydWxlLnNwbGl0KCc7JylcbiAgICAgICAgICAgIHBhcnNlRG9tRm9yQXJyYXkoaW5kZXhIdG1sLCBmaW5kUnVsZS5zaGlmdCgpKS5mb3JFYWNoKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IFt0aXRsZSwgdXJsLCBkZXNjLCBjb250ZW50LCBpbWddID0gZmluZFJ1bGUubWFwKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09ICcqJykgcmV0dXJuICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB2ID0gKGkgPT0gMSB8fCBpID09IDQpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZURvbUZvckh0bWwoZGF0YSwgdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAxKSB2ID0gcnVuQ29kZSh2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IHJldHVybiAnJyB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICByZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFJVTEUudGl0bGUgKyAnIOKWqiAnICsgZGVzYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGltZ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IE1ZX19SVUxFID0gT2JqZWN0LmFzc2lnbih7fSwgTVlfUlVMRSwgeyB0aXRsZTogUlVMRS50aXRsZSB9KVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnVybC5pbmNsdWRlcygnQGxhenlSdWxlPScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwnICsgJC5zdHJpbmdpZnkoeyBwYWdlczogTVlfX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9fUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpO01ZX1VSTD1cIicgKyBNWV9VUkwgKyAnXCI7JylcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5leHRyYSA9IHsgdXJsOiB1cmwsIFJVTEU6IE1ZX19SVUxFLCBwYWdlVGl0bGU6IHRpdGxlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZXh0cmEuUlVMRS51cmwuaW5jbHVkZXMoJyNpbW1lcnNpdmVUaGVtZSMnKSkgcmVzLnVybCArPSAnJiNpbW1lcnNpdmVUaGVtZSMnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbXlDb2xsZWN0aW9uX2VsLnB1c2gocmVzKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH0pXG4gICAgbXlDb2xsZWN0aW9uX2VsLnB1c2goc2VhcmNoVGFnKVxufVxuc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcbiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6InNldEl0ZW0oJ215Q29sbGVjdGlvbicsIE1ZX1JVTEUudGl0bGUpXG5zZXRJdGVtKCdyZW1vdGVVcmwnLCAnaGlrZXI6Ly9wYWdlL2RhdGEnKSIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJ0ZXh0XzFcIixcIm5hbWVcIjpcIkNsYXNzVGFiXCIsXCJwYXRoXCI6XCJDbGFzc1RhYlwiLFwicnVsZVwiOlwiZnVuY3Rpb24gQ2xhc3NUYWIoY2xhc3NBcnJheSwgcGFyYW1zKSB7XFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKVxcbiAgICB0aGlzLmFyciA9IGNsYXNzQXJyYXkubWFwKHYgPT4gdGhpcy5pbml0KHYpKVxcbiAgICB0aGlzLnNpZ24gPSAnJCcgKyBNWV9SVUxFLnRpdGxlICsgJ18nICsgKHRoaXMubmFtZSB8fCAnJykgKyAnXydcXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29sb3IgfHwgJyMxMmI2NjgnXFxuICAgIHRoaXMuYm91bmRhcnkgPSB0aGlzLmJvdW5kYXJ5IHx8ICdibGFua19ibG9jaydcXG59XFxuQ2xhc3NUYWIucHJvdG90eXBlID0ge1xcbiAgICBjb25zdHJ1Y3RvcjogQ2xhc3NUYWIsXFxuICAgIGxvYWQoZWwpIHtcXG4gICAgICAgIGxldCBmb2xkZWQgPSBnZXRWYXIoJ2ZvbGRfJyArIHRoaXMuc2lnbiwgJycpXFxuICAgICAgICBpZiAodGhpcy5mb2xkKSBlbC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojMDQ5ZWZmXFxcIj4nICsgKGZvbGRlZCA/ICfilrYnIDogJ+KWvCcpLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc2lnbiwgZm9sZGVkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignZm9sZF8nICsgc2lnbiwgeyAnJzogJ1QnLCAnVCc6ICcnIH0gW2ZvbGRlZF0pXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgdGhpcy5zaWduLCBmb2xkZWQpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pXFxuICAgICAgICBsZXQgYXJyID0gZm9sZGVkID8gW3RoaXMuYXJyWzBdXSA6IHRoaXMuYXJyXFxuICAgICAgICBhcnIuZm9yRWFjaCgodikgPT4ge1xcbiAgICAgICAgICAgIGxldCB7IGlkLCBjbGFzc19uYW1lLCBjbGFzc191cmwgfSA9IHYsXFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRDbGFzcyhpZCkpXFxuICAgICAgICAgICAgY2xhc3NfbmFtZS5mb3JFYWNoKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBjbGFzc191cmxbaV0sXFxuICAgICAgICAgICAgICAgICAgICBub3cgPSBKU09OLnN0cmluZ2lmeSh7IG5hbWU6IG5hbWUsIHVybDogdXJsIH0pXFxuICAgICAgICAgICAgICAgIGVsLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChzZWxlY3RlZCA9PSBub3cgPyAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcImNvbG9yOicgKyB0aGlzLmNvbG9yICsgJ1xcXCI+PGI+JyA6ICcnKSArIG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZ24sIGlkLCBub3cpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoc2lnbiArIGlkLCBub3cpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKHNpZ24sIG5vdylcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnNpZ24sIGlkLCBub3cpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgZWwucHVzaCh7IGNvbF90eXBlOiB0aGlzLmJvdW5kYXJ5IH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBpbml0KGNsYXNzT2JqZWN0KSB7XFxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzT2JqZWN0LmNsYXNzX25hbWUgPT0gJ3N0cmluZycpXFxuICAgICAgICAgICAgY2xhc3NPYmplY3QuY2xhc3NfbmFtZSA9IGNsYXNzT2JqZWN0LmNsYXNzX25hbWUuc3BsaXQoJyYnKVxcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc09iamVjdC5jbGFzc191cmwgPT0gJ3N0cmluZycpXFxuICAgICAgICAgICAgY2xhc3NPYmplY3QuY2xhc3NfdXJsID0gY2xhc3NPYmplY3QuY2xhc3NfdXJsLnNwbGl0KCcmJylcXG4gICAgICAgIHJldHVybiBjbGFzc09iamVjdFxcbiAgICB9LFxcbiAgICBwdXNoKGNsYXNzT2JqZWN0KSB7XFxuICAgICAgICB0aGlzLmFyci5wdXNoKHRoaXMuaW5pdChjbGFzc09iamVjdCkpXFxuICAgIH0sXFxuICAgIGdldENsYXNzKGlkKSB7XFxuICAgICAgICBsZXQgZGVmYXVsdENsYXNzID0gdGhpcy5hcnIuZmluZChpdGVtID0+IGl0ZW0uaWQgPT0gaWQpXFxuICAgICAgICBpZiAoZGVmYXVsdENsYXNzKSBkZWZhdWx0Q2xhc3MgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgbmFtZTogZGVmYXVsdENsYXNzLmNsYXNzX25hbWVbMF0sXFxuICAgICAgICAgICAgdXJsOiBkZWZhdWx0Q2xhc3MuY2xhc3NfdXJsWzBdXFxuICAgICAgICB9KVxcbiAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmaW5kIGlkOiAnICsgaWQgKyAnIGluIGNsYXNzVGFiOiAnICsgdGhpcy5zaWduKVxcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZ2V0VmFyKHRoaXMuc2lnbiArIGlkLCBkZWZhdWx0Q2xhc3MpKVxcbiAgICB9LFxcbiAgICBnZXRMYXN0Q2xpY2soKSB7XFxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShnZXRWYXIodGhpcy5zaWduLCAne30nKSlcXG4gICAgfSxcXG4gICAgc2V0VXJsKHVybCkge1xcbiAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKC9cXFxcJFxcXFx7KFtefV0qKVxcXFx9L2csIChfLCBpZCkgPT4gdGhpcy5nZXRDbGFzcyhpZCkudXJsKVxcbiAgICB9XFxufVxcbiQuZXhwb3J0cyA9IENsYXNzVGFiXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobVcIixcInBhdGhcIjpcImluZGV4TG9hZFwiLFwicnVsZVwiOlwianM6XFxubGV0IG15Q29sbGVjdGlvbl9lbCA9IFtdLFxcbiAgICBwYWdlTnVtID0gcGFyc2VJbnQoTVlfVVJMLnNwbGl0KCcjJylbMV0pLFxcbiAgICBSVUxFID0gTVlfUEFSQU1TLlJVTEUsXFxuICAgIGZ5QWxsID0gUlVMRS51cmwuaW5jbHVkZXMoJ2Z5QWxsJyksXFxuICAgIC8vIOWKoOi9vUNsYXNzVGFi57uE5Lu2XFxuICAgIENsYXNzVGFiID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvQ2xhc3NUYWI/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykpLFxcbiAgICB0YWJIZWFkZXIgPSBbXVxcblxcbmlmIChSVUxFLmNsYXNzX25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXG4gICAgaWQ6IGZ5QWxsID8gJ2Z5QWxsJyA6ICdmeWNsYXNzJyxcXG4gICAgY2xhc3NfbmFtZTogUlVMRS5jbGFzc19uYW1lLFxcbiAgICBjbGFzc191cmw6IFJVTEUuY2xhc3NfdXJsXFxufSlcXG5pZiAoUlVMRS5hcmVhX25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXG4gICAgaWQ6IGZ5QWxsID8gJ2Z5QWxsJyA6ICdmeWFyZWEnLFxcbiAgICBjbGFzc19uYW1lOiBSVUxFLmFyZWFfbmFtZSxcXG4gICAgY2xhc3NfdXJsOiBSVUxFLmFyZWFfdXJsXFxufSlcXG5pZiAoUlVMRS55ZWFyX25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXG4gICAgaWQ6IGZ5QWxsID8gJ2Z5QWxsJyA6ICdmeXllYXInLFxcbiAgICBjbGFzc19uYW1lOiBSVUxFLnllYXJfbmFtZSxcXG4gICAgY2xhc3NfdXJsOiBSVUxFLnllYXJfdXJsXFxufSlcXG5pZiAoUlVMRS5zb3J0X25hbWUpIHRhYkhlYWRlci5wdXNoKHtcXG4gICAgaWQ6IGZ5QWxsID8gJ2Z5QWxsJyA6ICdmeXNvcnQnLFxcbiAgICBjbGFzc19uYW1lOiBSVUxFLnNvcnRfbmFtZSxcXG4gICAgY2xhc3NfdXJsOiBSVUxFLnNvcnRfdXJsXFxufSlcXG50YWJIZWFkZXIgPSBuZXcgQ2xhc3NUYWIodGFiSGVhZGVyLCB7IG5hbWU6IFJVTEUudGl0bGUgfSlcXG5pZiAocGFnZU51bSA9PSAxKSB7XFxuICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJ2NsZWFyVmFyKFxcXCJteUNvbGxlY3Rpb24tc2VhcmNoTW9kZVxcXCIpJylcXG4gICAgcHV0VmFyKCdteUNvbGxlY3Rpb24tc2VhcmNoTW9kZScsIFJVTEUudGl0bGUpXFxuICAgIHRhYkhlYWRlci5sb2FkKG15Q29sbGVjdGlvbl9lbClcXG4gICAgaWYgKFJVTEUuc2VhcmNoX3VybCkgbXlDb2xsZWN0aW9uX2VsLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmkJzntKJcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIuaQnOS9oOaDs+imgeeahC4uLlxcXCIsXFxuICAgICAgICB1cmw6ICdcXFwiaGlrZXI6Ly9wYWdlL3NpbmdsZVNlYXJjaD9rZXl3b3JkPVxcXCIraW5wdXQrXFxcIiZwYWdlPWZ5cGFnZVxcXCInLFxcbiAgICAgICAgZXh0cmE6IHsgcnVsZTogZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJyksIFJVTEU6IFJVTEUgfSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICB9KVxcbn1cXG4vLyDlpITnkIZNWV9VUkzlkoxNWV9SVUxFXFxuTVlfUlVMRS51YSA9IFJVTEUudWFcXG5NWV9SVUxFLnRpdGxlID0gUlVMRS50aXRsZVxcbk1ZX1JVTEUuY29sX3R5cGUgPSBSVUxFLmNvbF90eXBlXFxuTVlfUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBSVUxFLmRldGFpbF9jb2xfdHlwZVxcbk1ZX1JVTEUuZmluZF9ydWxlID0gUlVMRS5maW5kX3J1bGVcXG5NWV9SVUxFLmRldGFpbF9maW5kX3J1bGUgPSBSVUxFLmRldGFpbF9maW5kX3J1bGVcXG5NWV9SVUxFLnByZVJ1bGUgPSBSVUxFLnByZVJ1bGVcXG5NWV9SVUxFLnBhZ2VMaXN0ID0gSlNPTi5wYXJzZShSVUxFLnBhZ2VzIHx8ICdbXScpXFxuTVlfUlVMRS5wYWdlcyA9IEpTT04uc3RyaW5naWZ5KE1ZX1JVTEUucGFnZUxpc3QpXFxuTVlfUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSA9IFJVTEUubGFzdF9jaGFwdGVyX3J1bGVcXG5NWV9SVUxFLnBhcmFtcyA9IHt9XFxuXFxuY29uc3QgeyBydW5Db2RlLCB1cmxQYXJzZSB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdXRpbGl0eT9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKSlcXG52YXIgeyBNWV9VUkwsIE1ZX1VSTF9PcHRpb25zIH0gPSB1cmxQYXJzZShSVUxFLnVybCwge30sIHBhZ2VOdW0sICh1cmwpID0+IHtcXG4gICAgdXJsWzBdID0gZnlBbGwgPyB1cmxbMF0ucmVwbGFjZSgvZnlBbGwvZywgJyQke2Z5QWxsfScpIDogdXJsWzBdLnJlcGxhY2UoL2Z5KGNsYXNzfGFyZWF8eWVhcnxzb3J0KS9nLCAnJCR7ZnkkMX0nKVxcbiAgICB1cmxbMF0gPSB0YWJIZWFkZXIuc2V0VXJsKHVybFswXSlcXG59KSxcXG4gICAgaW5kZXhIdG1sID0gZmV0Y2goTVlfVVJMLCBNWV9VUkxfT3B0aW9ucylcXG5NWV9SVUxFLnVybCA9IE1ZX1VSTFxcbk1ZX1JVTEUudXJsSGVhZGVycyA9IE1ZX1VSTF9PcHRpb25zLmhlYWRlcnNcXG4vLyDmraPmlofop6PmnpBcXG5pZiAocGFnZU51bSA9PSAxKSBldmFsKE1ZX1JVTEUucHJlUnVsZSlcXG5pZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcXG4gICAgZnVuY3Rpb24gZ2V0VXJsKCkge1xcbiAgICAgICAgcmV0dXJuIE1ZX1VSTFxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGdldFJlc0NvZGUoKSB7XFxuICAgICAgICByZXR1cm4gaW5kZXhIdG1sXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0UmVzdWx0KGVsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKSB7XFxuICAgICAgICBwYXJhbTEgPSBDQUxMQkFDS19LRVlcXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEVcXG4gICAgICAgIHBhcmFtMyA9IE1ZX1RZUEVcXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsLmRhdGEpKSBlbCA9IGVsLmRhdGFcXG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG15Q29sbGVjdGlvbl9lbCwgZWwubWFwKCh2KSA9PiB7XFxuICAgICAgICAgICAgbGV0IE1ZX19SVUxFID0gT2JqZWN0LmFzc2lnbih7fSwgTVlfUlVMRSlcXG4gICAgICAgICAgICB2LmNvbF90eXBlID0gdi5jb2xfdHlwZSB8fCBNWV9SVUxFLmNvbF90eXBlXFxuXFxuICAgICAgICAgICAgaWYgKCF2LnVybCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBbXywgdXJsLCBydWxlXSA9IHYudXJsLm1hdGNoKC9eKFtcXFxcc1xcXFxTXSo/KUBydWxlPShbXFxcXHNcXFxcU10qKSQvKVxcbiAgICAgICAgICAgICAgICB2LnVybCA9IHVybFxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gcnVsZVxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBNWV9SVUxFLmNvbF90eXBlXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5zdGFydHNXaXRoKCdoaWtlcjovL3BhZ2UvJykpIHtcXG4gICAgICAgICAgICAgICAgaWYgKHYudXJsLmluY2x1ZGVzKCdydWxlPScpIHx8ICh2LmV4dHJhIHx8IHt9KS5ydWxlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICAgICAgbGV0IFtfLCBwYXRoLCBwYXJhbXNdID0gdi51cmwuc3BsaXQoJyMnKVswXS5tYXRjaCgvXmhpa2VyOlxcXFwvXFxcXC9wYWdlXFxcXC8oLis/KSg/OlxcXFw/KC4qKSk/JC8pLFxcbiAgICAgICAgICAgICAgICAgICAgc3ViUGFnZSA9IE1ZX1JVTEUucGFnZUxpc3QuZmluZCgodikgPT4gdi5wYXRoID09IHBhdGgpLFxcbiAgICAgICAgICAgICAgICAgICAgc3ViVXJsID0gKHBhcmFtcyB8fCAnJykuc3BsaXQoJyYnKS5maW5kKCh2KSA9PiB2LnN0YXJ0c1dpdGgoJ3VybD0nKSlcXG4gICAgICAgICAgICAgICAgdi51cmwgPSBzdWJVcmwgPyBzdWJVcmwuc2xpY2UoNCkucmVwbGFjZSgv77yf77yfL2csICc/JykucmVwbGFjZSgv77yG77yGL2csICcmJykgOiAodi5leHRyYSB8fCB7fSkudXJsIHx8ICdoaWtlcjovL2VtcHR5PycgKyAocGFyYW1zIHx8ICcnKVxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXFxuICAgICAgICAgICAgICAgIE1ZX19SVUxFLmRldGFpbF9jb2xfdHlwZSA9IHN1YlBhZ2UuY29sX3R5cGVcXG4gICAgICAgICAgICAgICAgTVlfX1JVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICB2LnVybCA9IHYudXJsLnJlcGxhY2UoJy5qczonLCAnLmpzOlxcXFxuaWYoTVlfUlVMRSlPYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KHsgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7TVlfVVJMPVxcXCInICsgTVlfVVJMICsgJ1xcXCI7JylcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUgfHwgdi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly8nKSkgeyByZXR1cm4gdiB9XFxuICAgICAgICAgICAgdi5leHRyYSA9IHsgdXJsOiB2LnVybCwgUlVMRTogTVlfX1JVTEUsIHBhZ2VUaXRsZTogdi50aXRsZSB9XFxuICAgICAgICAgICAgdi51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcXG4gICAgICAgICAgICBpZiAodi5leHRyYS5SVUxFLnVybC5pbmNsdWRlcygnI2ltbWVyc2l2ZVRoZW1lIycpKSB2LnVybCArPSAnJiNpbW1lcnNpdmVUaGVtZSMnXFxuICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgIH0pKVxcbiAgICAgICAgbWV0aG9kX3NldFJlc3VsdC5pbnZva2UoamF2YUNvbnRleHQsIG15Q29sbGVjdGlvbl9lbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXG4gICAgfVxcbiAgICBzZXRIb21lUmVzdWx0ID0gc2V0UmVzdWx0XFxuICAgIHNldFNlYXJjaFJlc3VsdCA9IHNldFJlc3VsdFxcblxcbiAgICBldmFsKE1ZX1JVTEUuZmluZF9ydWxlLnNsaWNlKDMpKVxcbn0gZWxzZSB7XFxuICAgIGxldCBmaW5kUnVsZSA9IE1ZX1JVTEUuZmluZF9ydWxlLnNwbGl0KCc7JylcXG4gICAgcGFyc2VEb21Gb3JBcnJheShpbmRleEh0bWwsIGZpbmRSdWxlLnNoaWZ0KCkpLmZvckVhY2goKGRhdGEpID0+IHtcXG4gICAgICAgIGxldCBbdGl0bGUsIGltZywgZGVzYywgdXJsXSA9IGZpbmRSdWxlLm1hcCgodiwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gJyonKSByZXR1cm4gJydcXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdiA9IChpID09IDEgfHwgaSA9PSAzKSA/XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChkYXRhLCB2KVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gMykgdiA9IHJ1bkNvZGUodilcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuICcnIH1cXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICByZXMgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIGlmIChyZXMudXJsKSB7XFxuICAgICAgICAgICAgaWYgKHJlcy51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHBhZ2VzOiBNWV9SVUxFLnBhZ2VzLCBwYWdlTGlzdDogTVlfUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpO01ZX1VSTD1cXFwiJyArIE1ZX1VSTCArICdcXFwiOycpXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUpIHtcXG4gICAgICAgICAgICAgICAgcmVzLmV4dHJhID0geyB1cmw6IHVybCwgUlVMRTogTVlfUlVMRSwgcGFnZVRpdGxlOiB0aXRsZSB9XFxuICAgICAgICAgICAgICAgIHJlcy51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5leHRyYS5SVUxFLnVybC5pbmNsdWRlcygnI2ltbWVyc2l2ZVRoZW1lIycpKSByZXMudXJsICs9ICcmI2ltbWVyc2l2ZVRoZW1lIydcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBteUNvbGxlY3Rpb25fZWwucHVzaChyZXMpXFxuICAgIH0pXFxuICAgIHNldFJlc3VsdChteUNvbGxlY3Rpb25fZWwpXFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6K+m5oOFXCIsXCJwYXRoXCI6XCJkZXRhaWxMb2FkXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgbXlDb2xsZWN0aW9uX2VsID0gW11cXG5cXG4vLyDlpITnkIZNWV9VUkzlkoxNWV9SVUxFXFxubGV0IFJVTEUgPSBNWV9QQVJBTVMuUlVMRVxcbk1ZX1JVTEUudWEgPSBSVUxFLnVhXFxuTVlfUlVMRS50aXRsZSA9IFJVTEUudGl0bGVcXG5NWV9SVUxFLmNvbF90eXBlID0gUlVMRS5kZXRhaWxfY29sX3R5cGVcXG5NWV9SVUxFLmZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcbk1ZX1JVTEUucHJlUnVsZSA9IFJVTEUucHJlUnVsZVxcbk1ZX1JVTEUucGFnZUxpc3QgPSBSVUxFLnBhZ2VMaXN0XFxuTVlfUlVMRS5wYWdlcyA9IFJVTEUucGFnZXNcXG5NWV9SVUxFLmxhc3RfY2hhcHRlcl9ydWxlID0gUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZVxcbk1ZX1JVTEUucGFyYW1zID0gUlVMRS5wYXJhbXNcXG5cXG5jb25zdCB7IHJ1bkNvZGUsIHVybFBhcnNlIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91dGlsaXR5P3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpKVxcbnZhciB7IE1ZX1VSTCwgTVlfVVJMX09wdGlvbnMgfSA9IHVybFBhcnNlKE1ZX1BBUkFNUy51cmwsIFJVTEUudXJsSGVhZGVycywgMSksXFxuICAgIGluZGV4SHRtbCA9IGZldGNoKE1ZX1VSTCwgTVlfVVJMX09wdGlvbnMpXFxuTVlfUlVMRS51cmwgPSBNWV9VUkxcXG5NWV9SVUxFLnVybEhlYWRlcnMgPSBNWV9VUkxfT3B0aW9ucy5oZWFkZXJzXFxuLy8g6Kej5p6Q5q2j5paHXFxuaWYgKE1ZX1BBUkFNUy5wYWdlVGl0bGUpIHNldFBhZ2VUaXRsZShNWV9QQVJBTVMucGFnZVRpdGxlKVxcbmV2YWwoTVlfUlVMRS5wcmVSdWxlKVxcbnNldExhc3RDaGFwdGVyUnVsZShNWV9SVUxFLmxhc3RfY2hhcHRlcl9ydWxlKVxcbk1ZX1BBUkFNUyA9IE1ZX1JVTEUucGFyYW1zXFxuaWYgKE1ZX1JVTEUuZmluZF9ydWxlLnN0YXJ0c1dpdGgoJ2pzOicpKSB7XFxuICAgIGZ1bmN0aW9uIGdldFVybCgpIHtcXG4gICAgICAgIHJldHVybiBNWV9VUkxcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRSZXNDb2RlKCkge1xcbiAgICAgICAgcmV0dXJuIGluZGV4SHRtbFxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHNldFJlc3VsdChlbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgcGFyYW0xID0gQ0FMTEJBQ0tfS0VZXFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFXFxuICAgICAgICBwYXJhbTMgPSBNWV9UWVBFXFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbC5kYXRhKSkgZWwgPSBlbC5kYXRhXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShteUNvbGxlY3Rpb25fZWwsIGVsLm1hcCgodikgPT4ge1xcbiAgICAgICAgICAgIGxldCBNWV9fUlVMRSA9IE9iamVjdC5hc3NpZ24oe30sIE1ZX1JVTEUpXFxuICAgICAgICAgICAgdi5jb2xfdHlwZSA9IHYuY29sX3R5cGUgfHwgTVlfUlVMRS5jb2xfdHlwZVxcblxcbiAgICAgICAgICAgIGlmICghdi51cmwpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAcnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgW18sIHVybCwgcnVsZV0gPSB2LnVybC5tYXRjaCgvXihbXFxcXHNcXFxcU10qPylAcnVsZT0oW1xcXFxzXFxcXFNdKikkLylcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB1cmxcXG4gICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IHJ1bGVcXG4gICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2NvbF90eXBlID0gTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly9wYWdlLycpKSB7XFxuICAgICAgICAgICAgICAgIGlmICh2LnVybC5pbmNsdWRlcygncnVsZT0nKSB8fCAodi5leHRyYSB8fCB7fSkucnVsZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgICAgIGxldCBbXywgcGF0aCwgcGFyYW1zXSA9IHYudXJsLnNwbGl0KCcjJylbMF0ubWF0Y2goL15oaWtlcjpcXFxcL1xcXFwvcGFnZVxcXFwvKC4rPykoPzpcXFxcPyguKikpPyQvKSxcXG4gICAgICAgICAgICAgICAgICAgIHN1YlBhZ2UgPSBNWV9SVUxFLnBhZ2VMaXN0LmZpbmQoKHYpID0+IHYucGF0aCA9PSBwYXRoKSxcXG4gICAgICAgICAgICAgICAgICAgIHN1YlVybCA9IChwYXJhbXMgfHwgJycpLnNwbGl0KCcmJykuZmluZCgodikgPT4gdi5zdGFydHNXaXRoKCd1cmw9JykpXFxuICAgICAgICAgICAgICAgIHYudXJsID0gc3ViVXJsID8gc3ViVXJsLnNsaWNlKDQpLnJlcGxhY2UoL++8n++8ny9nLCAnPycpLnJlcGxhY2UoL++8hu+8hi9nLCAnJicpIDogKHYuZXh0cmEgfHwge30pLnVybCB8fCAnaGlrZXI6Ly9lbXB0eT8nICsgKHBhcmFtcyB8fCAnJylcXG4gICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IHN1YlBhZ2UucnVsZVxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBzdWJQYWdlLmNvbF90eXBlXFxuICAgICAgICAgICAgICAgIE1ZX19SVUxFLnBhcmFtcyA9IHYuZXh0cmEgfHwge31cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB2LnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHBhZ2VzOiBNWV9SVUxFLnBhZ2VzLCBwYWdlTGlzdDogTVlfUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpO01ZX1VSTD1cXFwiJyArIE1ZX1VSTCArICdcXFwiOycpXFxuICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgfSBlbHNlIHsgcmV0dXJuIHYgfVxcbiAgICAgICAgICAgIHYuZXh0cmEgPSB7IHVybDogdi51cmwsIFJVTEU6IE1ZX19SVUxFIH1cXG4gICAgICAgICAgICB2LnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKVxcbiAgICAgICAgICAgIGlmICh2LmV4dHJhLlJVTEUudXJsLmluY2x1ZGVzKCcjaW1tZXJzaXZlVGhlbWUjJykpIHYudXJsICs9ICcmI2ltbWVyc2l2ZVRoZW1lIydcXG4gICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgfSkpXFxuICAgICAgICBtZXRob2Rfc2V0UmVzdWx0Lmludm9rZShqYXZhQ29udGV4dCwgbXlDb2xsZWN0aW9uX2VsLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zKVxcbiAgICB9XFxuICAgIHNldEhvbWVSZXN1bHQgPSBzZXRSZXN1bHRcXG4gICAgc2V0U2VhcmNoUmVzdWx0ID0gc2V0UmVzdWx0XFxuXFxuICAgIGV2YWwoTVlfUlVMRS5maW5kX3J1bGUuc2xpY2UoMykpXFxufSBlbHNlIHtcXG4gICAgbGV0IFtfLCBmaW5kUnVsZSwgZGV0YWlsRmluZFJ1bGVdID0gTVlfUlVMRS5maW5kX3J1bGUubWF0Y2goL14oLio/KSg/Oj09PiguKikpPyQvKVxcbiAgICBmaW5kUnVsZSA9IGZpbmRSdWxlLnNwbGl0KCc7JylcXG4gICAgcGFyc2VEb21Gb3JBcnJheShpbmRleEh0bWwsIGZpbmRSdWxlLnNoaWZ0KCkpLmZvckVhY2goKGRhdGEpID0+IHtcXG4gICAgICAgIGxldCBbdGl0bGUsIGltZywgZGVzYywgdXJsXSA9IGZpbmRSdWxlLm1hcCgodiwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gJyonKSByZXR1cm4gJydcXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdiA9IChpID09IDEgfHwgaSA9PSAzKSA/XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb20oZGF0YSwgdikgOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tRm9ySHRtbChkYXRhLCB2KVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gMykgdiA9IHJ1bkNvZGUodilcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuICcnIH1cXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICByZXMgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIGlmIChyZXMudXJsKSB7XFxuICAgICAgICAgICAgaWYgKHJlcy51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHBhZ2VzOiBNWV9SVUxFLnBhZ2VzLCBwYWdlTGlzdDogTVlfUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpO01ZX1VSTD1cXFwiJyArIE1ZX1VSTCArICdcXFwiOycpXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChkZXRhaWxGaW5kUnVsZSkge1xcbiAgICAgICAgICAgICAgICByZXMuZXh0cmEgPSB7IHVybDogdXJsLCBSVUxFOiBPYmplY3QuYXNzaWduKHt9LCBNWV9SVUxFLCB7IGRldGFpbF9maW5kX3J1bGU6IGRldGFpbEZpbmRSdWxlIH0pIH1cXG4gICAgICAgICAgICAgICAgcmVzLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsTG9hZD9ydWxlPScgKyBnZXRJdGVtKCdteUNvbGxlY3Rpb24nKVxcbiAgICAgICAgICAgICAgICBpZiAocmVzLmV4dHJhLlJVTEUudXJsLmluY2x1ZGVzKCcjaW1tZXJzaXZlVGhlbWUjJykpIHJlcy51cmwgKz0gJyYjaW1tZXJzaXZlVGhlbWUjJ1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIG15Q29sbGVjdGlvbl9lbC5wdXNoKHJlcylcXG4gICAgfSlcXG4gICAgc2V0UmVzdWx0KG15Q29sbGVjdGlvbl9lbClcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlt6Xlhbfpm4ZcIixcInBhdGhcIjpcInV0aWxpdHlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IHtcXG4gICAgZGF0YUxvYWQ6IGZ1bmN0aW9uKHNob3dBbGwpIHtcXG4gICAgICAgIC8v5qOA5p+l6Ze06ZqU77yM6buY6K6k5LiA5aSpXFxuICAgICAgICBsZXQgbWluID0gNjAgKiAyNCAqIDEsXFxuICAgICAgICAgICAgZGF0YSA9IFtdLFxcbiAgICAgICAgICAgIHRpbWUgPSBwYXJzZUludChyZWFkRmlsZSgndXBkYXRldGltZScpKSB8fCAwLFxcbiAgICAgICAgICAgIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXFxuICAgICAgICBpZiAobm93IC0gdGltZSA+IDEwMDAgKiA2MCAqIG1pbikge1xcbiAgICAgICAgICAgIGxvZygn5pu05paw5LqG5pWw5o2uJylcXG4gICAgICAgICAgICAvLyDojrflj5bov5znqIvmlbDmja5cXG4gICAgICAgICAgICBsZXQgdXJsID0gZ2V0SXRlbSgncmVtb3RlVXJsJylcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBkYXRhID0gZmV0Y2godXJsKVxcbiAgICAgICAgICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vcGFnZS8nKSlcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpLnJ1bGVcXG4gICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSlcXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgIGRhdGEgPSBbXVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoKHYpID0+IHsgcmV0dXJuIHYudGl0bGUgIT0gZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykgJiYgIXYuYXV0aG9yLmluY2x1ZGVzKCfovbvlkIjpm4bnlJ/miJDlmagnKSB9KVxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdkYXRhQ2FjaGUnLCBKU09OLnN0cmluZ2lmeShkYXRhKSlcXG4gICAgICAgICAgICBzYXZlRmlsZSgndXBkYXRldGltZScsICcnICsgbm93KVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsb2coJ+ayoeacieabtOaWsOaVsOaNricpXFxuICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2RhdGFDYWNoZScpKVxcbiAgICAgICAgfVxcbiAgICAgICAgLy8g5YaZ5YWl6Ieq5a6a5LmJ5pWw5o2uXFxuICAgICAgICBsZXQgY3VzdG9tRGF0YSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2N1c3RvbURhdGEnKSB8fCAnW10nKSxcXG4gICAgICAgICAgICByZXdyaXRlRGF0YSA9IFtdXFxuICAgICAgICBjdXN0b21EYXRhID0gY3VzdG9tRGF0YS5yZWR1Y2UoKHNlbGYsIHYpID0+IHtcXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBkYXRhLmZpbmRJbmRleCgodnYpID0+IHYudGl0bGUgPT0gdnYudGl0bGUpXFxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcXG4gICAgICAgICAgICAgICAgc2VsZi5wdXNoKHYpXFxuICAgICAgICAgICAgICAgIGxldCBydWxlID0gZGF0YS5zcGxpY2UoaW5kZXgsIDEpWzBdXFxuICAgICAgICAgICAgICAgIGlmKHNob3dBbGwgfHwgdi52aXNpYmxlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV3cml0ZURhdGEucHVzaChPYmplY3QuYXNzaWduKHJ1bGUsIHYpKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gc2VsZlxcbiAgICAgICAgfSwgW10pXFxuICAgICAgICBkYXRhLmZvckVhY2goKHYpID0+IGN1c3RvbURhdGEucHVzaCh7IHRpdGxlOiB2LnRpdGxlLCB2aXNpYmxlOiB0cnVlIH0pKVxcbiAgICAgICAgc2F2ZUZpbGUoJ2N1c3RvbURhdGEnLCBKU09OLnN0cmluZ2lmeShjdXN0b21EYXRhKSlcXG4gICAgICAgIHJldHVybiByZXdyaXRlRGF0YS5jb25jYXQoZGF0YSlcXG4gICAgfSxcXG4gICAgcnVuQ29kZTogZnVuY3Rpb24ocnVsZSkge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgW2lucHV0LCBjb2RlXSA9IHJ1bGUuc3BsaXQoJy5qczonKVxcbiAgICAgICAgICAgIHJldHVybiBjb2RlID8gZXZhbChjb2RlKSA6IHJ1bGVcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIHJ1bGUgfVxcbiAgICB9LFxcbiAgICB1cmxQYXJzZTogZnVuY3Rpb24odXJsLCBoZWFkZXJzLCBwYWdlTnVtLCBmdW5jKSB7XFxuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJzsnKS5tYXAoKHYpID0+IHYucmVwbGFjZSgv77yb77ybL2csICc7JykpXFxuICAgICAgICBpZiAoZnVuYykgZnVuYyh1cmwpXFxuICAgICAgICB1cmxbMF0gPSB1cmxbMF0ucmVwbGFjZSgvZnlwYWdlKD86QCgtP1xcXFxkKylAKT8oPzpcXFxcKihcXFxcZCspQCk/LywgKF8sIHN0YXJ0LCBzcGFjZSkgPT4gcGFyc2VJbnQoc3RhcnQgfHwgMCkgKyAxICsgKHBhZ2VOdW0gLSAxKSAqIHBhcnNlSW50KHNwYWNlIHx8IDEpKVxcbiAgICAgICAgdXJsWzBdID0gL14oLio/KSg/OlxcXFxbZmlyc3RQYWdlPSguKj8pXFxcXF0pPyQvLmV4ZWModXJsWzBdKVxcbiAgICAgICAgdXJsWzBdID0gcnVuQ29kZSh1cmxbMF1bMl0gJiYgcGFnZU51bSA9PSAxID8gdXJsWzBdWzJdIDogdXJsWzBdWzFdKVxcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMsIG1ldGhvZDogdXJsWzFdIH1cXG4gICAgICAgIC8vIHBvc3Tmlrnms5Xml7bovazmjaLlj4LmlbBcXG4gICAgICAgIGlmICgvXnBvc3QkL2kudGVzdChvcHRpb25zWydtZXRob2QnXSkpIHtcXG4gICAgICAgICAgICBsZXQgW29yaVVybCwgYm9keV0gPSB1cmxbMF0uc3BsaXQoJz8nKVxcbiAgICAgICAgICAgIHVybFswXSA9IG9yaVVybC5yZXBsYWNlKC/vvJ/vvJ8vZywgJz8nKVxcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXJ0c1dpdGgoJ0pzb25Cb2R5PScpKSBib2R5ID0gYm9keS5zbGljZSg5KVxcbiAgICAgICAgICAgIG9wdGlvbnNbJ2JvZHknXSA9IGJvZHlcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmxbMl0pIG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAndGV4dC9wbGFpbjtjaGFyc3Q9JyArIHVybFsyXVxcbiAgICAgICAgaWYgKHVybFszXSkgdXJsWzNdLm1hdGNoKC97KC4qKX0vKVsxXS5zcGxpdCgnJiYnKS5mb3JFYWNoKCh2KSA9PiB7XFxuICAgICAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IHYuc3BsaXQoJ0AnKVxcbiAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1trZXldID0gcnVuQ29kZSh2YWx1ZSlcXG4gICAgICAgIH0pXFxuICAgICAgICAvLyDmt7vliqDlhajlsYBVQVxcbiAgICAgICAgaWYgKCFvcHRpb25zLmhlYWRlcnNbJ1VzZXItQWdlbnQnXSkge1xcbiAgICAgICAgICAgIGlmIChNWV9SVUxFLnVhID09ICdwYycpXFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1snVXNlci1BZ2VudCddID0gUENfVUFcXG4gICAgICAgICAgICBlbHNlIGlmIChNWV9SVUxFLnVhID09ICdtb2JpbGUnKVxcbiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ1VzZXItQWdlbnQnXSA9IE1PQklMRV9VQVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHsgTVlfVVJMOiB1cmxbMF0sIE1ZX1VSTF9PcHRpb25zOiBvcHRpb25zIH1cXG4gICAgfVxcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzFfdmVydGljYWxfcGljXCIsXCJuYW1lXCI6XCLljZXmkJxcIixcInBhdGhcIjpcInNpbmdsZVNlYXJjaFwiLFwicnVsZVwiOlwianM6XFxubGV0IG15Q29sbGVjdGlvbl9lbCA9IFtdLFxcbiAgICBSVUxFID0gTVlfUEFSQU1TLlJVTEUsXFxuICAgIGtleXdvcmQgPSBnZXRQYXJhbSgna2V5d29yZCcpLFxcbiAgICBwYWdlTnVtID0gcGFyc2VJbnQoZ2V0UGFyYW0oJ3BhZ2UnKSlcXG5cXG4vLyDlpITnkIZNWV9VUkzlkoxNWV9SVUxFXFxuTVlfUlVMRS51YSA9IFJVTEUudWFcXG5NWV9SVUxFLnRpdGxlID0gUlVMRS50aXRsZVxcbk1ZX1JVTEUuY29sX3R5cGUgPSBSVUxFLmNvbF90eXBlXFxuTVlfUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBbJycsICcqJ10uaW5jbHVkZXMoUlVMRS5zZGV0YWlsX2ZpbmRfcnVsZSkgPyBSVUxFLmRldGFpbF9jb2xfdHlwZSA6IFJVTEUuc2RldGFpbF9jb2xfdHlwZVxcbk1ZX1JVTEUuZmluZF9ydWxlID0gUlVMRS5zZWFyY2hGaW5kXFxuTVlfUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gWycnLCAnKiddLmluY2x1ZGVzKFJVTEUuc2RldGFpbF9maW5kX3J1bGUpID8gUlVMRS5kZXRhaWxfZmluZF9ydWxlIDogUlVMRS5zZGV0YWlsX2ZpbmRfcnVsZVxcbk1ZX1JVTEUucHJlUnVsZSA9IFJVTEUucHJlUnVsZVxcbk1ZX1JVTEUucGFnZUxpc3QgPSBKU09OLnBhcnNlKFJVTEUucGFnZXMgfHwgJ1tdJylcXG5NWV9SVUxFLnBhZ2VzID0gSlNPTi5zdHJpbmdpZnkoTVlfUlVMRS5wYWdlTGlzdClcXG5NWV9SVUxFLmxhc3RfY2hhcHRlcl9ydWxlID0gUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZVxcbk1ZX1JVTEUucGFyYW1zID0ge31cXG5cXG5jb25zdCB7IHJ1bkNvZGUsIHVybFBhcnNlIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91dGlsaXR5P3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpKVxcbnZhciB7IE1ZX1VSTCwgTVlfVVJMX09wdGlvbnMgfSA9IHVybFBhcnNlKFJVTEUuc2VhcmNoX3VybCwge30sIHBhZ2VOdW0sICh1cmwpID0+IHtcXG4gICAgdXJsWzBdID0gdXJsWzBdLnJlcGxhY2UodXJsWzBdLmluY2x1ZGVzKCclJScpID8gLyUlL2cgOiAvXFxcXCpcXFxcKi9nLCBlbmNvZGVTdHIoa2V5d29yZCwgdXJsWzJdKSlcXG59KSxcXG4gICAgaW5kZXhIdG1sID0gZmV0Y2goTVlfVVJMLCBNWV9VUkxfT3B0aW9ucylcXG5NWV9SVUxFLnVybCA9IE1ZX1VSTFxcbk1ZX1JVTEUudXJsSGVhZGVycyA9IE1ZX1VSTF9PcHRpb25zLmhlYWRlcnNcXG4vLyDmraPmlofop6PmnpBcXG5pZiAocGFnZU51bSA9PSAxKSBzZXRQYWdlVGl0bGUoJ+KAnCcgKyBrZXl3b3JkICsgJ+KAneeahOaQnOe0oue7k+aenCcpXFxuaWYgKE1ZX1JVTEUuZmluZF9ydWxlLnN0YXJ0c1dpdGgoJ2pzOicpKSB7XFxuICAgIGZ1bmN0aW9uIGdldFVybCgpIHtcXG4gICAgICAgIHJldHVybiBNWV9VUkxcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRSZXNDb2RlKCkge1xcbiAgICAgICAgcmV0dXJuIGluZGV4SHRtbFxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHNldFJlc3VsdChlbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMykge1xcbiAgICAgICAgcGFyYW0xID0gQ0FMTEJBQ0tfS0VZXFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFXFxuICAgICAgICBwYXJhbTMgPSBNWV9UWVBFXFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbC5kYXRhKSkgZWwgPSBlbC5kYXRhXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShteUNvbGxlY3Rpb25fZWwsIGVsLm1hcCgodikgPT4ge1xcbiAgICAgICAgICAgIGxldCBNWV9fUlVMRSA9IE9iamVjdC5hc3NpZ24oe30sIE1ZX1JVTEUpLFxcbiAgICAgICAgICAgICAgICBzdWJUaXRsZSA9IHYudGl0bGVcXG4gICAgICAgICAgICB2LnRpdGxlICs9ICfigJzigJzigJ3igJ08YnI+JyArIChSVUxFLnRpdGxlLmZvbnRjb2xvcignIzEyYjY2OCcpICsgJyDilqogJyArICh2LmRlc2MgfHwgJycpLmZvbnRjb2xvcignIzY2NjY2NicpKS5zbWFsbCgpXFxuICAgICAgICAgICAgdi5kZXNjID0gdi5jb250ZW50IHx8ICcnXFxuICAgICAgICAgICAgaWYoIXYuaW1nKSB2LmNvbF90eXBlID0gJ3RleHRfMSdcXG4gICAgICAgICAgICBkZWxldGUgdi5jb250ZW50XFxuXFxuICAgICAgICAgICAgaWYgKCF2LnVybCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BydWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBbXywgdXJsLCBydWxlXSA9IHYudXJsLm1hdGNoKC9eKFtcXFxcc1xcXFxTXSo/KUBydWxlPShbXFxcXHNcXFxcU10qKSQvKVxcbiAgICAgICAgICAgICAgICB2LnVybCA9IHVybFxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gcnVsZVxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBNWV9SVUxFLmNvbF90eXBlXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnVybC5zdGFydHNXaXRoKCdoaWtlcjovL3BhZ2UvJykpIHtcXG4gICAgICAgICAgICAgICAgaWYgKHYudXJsLmluY2x1ZGVzKCdydWxlPScpIHx8ICh2LmV4dHJhIHx8IHt9KS5ydWxlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICAgICAgbGV0IFtfLCBwYXRoLCBwYXJhbXNdID0gdi51cmwuc3BsaXQoJyMnKVswXS5tYXRjaCgvXmhpa2VyOlxcXFwvXFxcXC9wYWdlXFxcXC8oLis/KSg/OlxcXFw/KC4qKSk/JC8pLFxcbiAgICAgICAgICAgICAgICAgICAgc3ViUGFnZSA9IE1ZX1JVTEUucGFnZUxpc3QuZmluZCgodikgPT4gdi5wYXRoID09IHBhdGgpLFxcbiAgICAgICAgICAgICAgICAgICAgc3ViVXJsID0gKHBhcmFtcyB8fCAnJykuc3BsaXQoJyYnKS5maW5kKCh2KSA9PiB2LnN0YXJ0c1dpdGgoJ3VybD0nKSlcXG4gICAgICAgICAgICAgICAgdi51cmwgPSBzdWJVcmwgPyBzdWJVcmwuc2xpY2UoNCkucmVwbGFjZSgv77yf77yfL2csICc/JykucmVwbGFjZSgv77yG77yGL2csICcmJykgOiAodi5leHRyYSB8fCB7fSkudXJsIHx8ICdoaWtlcjovL2VtcHR5PycgKyAocGFyYW1zIHx8ICcnKVxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXFxuICAgICAgICAgICAgICAgIE1ZX19SVUxFLmRldGFpbF9jb2xfdHlwZSA9IHN1YlBhZ2UuY29sX3R5cGVcXG4gICAgICAgICAgICAgICAgTVlfX1JVTEUucGFyYW1zID0gdi5leHRyYSB8fCB7fVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICB2LnVybCA9IHYudXJsLnJlcGxhY2UoJy5qczonLCAnLmpzOlxcXFxuaWYoTVlfUlVMRSlPYmplY3QuYXNzaWduKE1ZX1JVTEUsJyArICQuc3RyaW5naWZ5KHsgcGFnZXM6IE1ZX1JVTEUucGFnZXMsIHBhZ2VMaXN0OiBNWV9SVUxFLnBhZ2VMaXN0LCBmaW5kX3J1bGU6ICcnLCBwYXJhbXM6ICcnIH0pICsgJyk7TVlfVVJMPVxcXCInICsgTVlfVVJMICsgJ1xcXCI7JylcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUgfHwgdi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly8nKSkgeyByZXR1cm4gdiB9XFxuICAgICAgICAgICAgdi5leHRyYSA9IHsgdXJsOiB2LnVybCwgUlVMRTogTVlfX1JVTEUsIHBhZ2VUaXRsZTogc3ViVGl0bGUgfVxcbiAgICAgICAgICAgIHYudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWxMb2FkP3J1bGU9JyArIGdldEl0ZW0oJ215Q29sbGVjdGlvbicpXFxuICAgICAgICAgICAgaWYgKHYuZXh0cmEuUlVMRS51cmwuaW5jbHVkZXMoJyNpbW1lcnNpdmVUaGVtZSMnKSkgdi51cmwgKz0gJyYjaW1tZXJzaXZlVGhlbWUjJ1xcbiAgICAgICAgICAgIHJldHVybiB2XFxuICAgICAgICB9KSlcXG4gICAgICAgIG1ldGhvZF9zZXRSZXN1bHQuaW52b2tlKGphdmFDb250ZXh0LCBteUNvbGxlY3Rpb25fZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXFxuICAgIH1cXG4gICAgc2V0SG9tZVJlc3VsdCA9IHNldFJlc3VsdFxcbiAgICBzZXRTZWFyY2hSZXN1bHQgPSBzZXRSZXN1bHRcXG5cXG4gICAgZXZhbChNWV9SVUxFLmZpbmRfcnVsZS5zbGljZSgzKSlcXG59IGVsc2Uge1xcbiAgICBsZXQgZmluZFJ1bGUgPSBNWV9SVUxFLmZpbmRfcnVsZS5zcGxpdCgnOycpXFxuICAgIHBhcnNlRG9tRm9yQXJyYXkoaW5kZXhIdG1sLCBmaW5kUnVsZS5zaGlmdCgpKS5mb3JFYWNoKChkYXRhKSA9PiB7XFxuICAgICAgICBsZXQgW3RpdGxlLCB1cmwsIGRlc2MsIGNvbnRlbnQsIGltZ10gPSBmaW5kUnVsZS5tYXAoKHYsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh2ID09ICcqJykgcmV0dXJuICcnXFxuICAgICAgICAgICAgICAgICAgICBlbHNlIHYgPSAoaSA9PSAxIHx8IGkgPT0gNCkgP1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRG9tKGRhdGEsIHYpIDpcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZURvbUZvckh0bWwoZGF0YSwgdilcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9IDEpIHYgPSBydW5Db2RlKHYpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IHJldHVybiAnJyB9XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgcmVzID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUgKyAn4oCc4oCc4oCd4oCdPGJyPicgKyAoUlVMRS50aXRsZS5mb250Y29sb3IoJyMxMmI2NjgnKSArICcg4paqICcgKyBkZXNjLmZvbnRjb2xvcignIzY2NjY2NicpKS5zbWFsbCgpLFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICAgICAgZGVzYzogY29udGVudCxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWdcXG4gICAgICAgICAgICB9XFxuICAgICAgICBpZighcmVzLmltZykgcmVzLmNvbF90eXBlID0gJ3RleHRfMSdcXG4gICAgICAgIGlmIChyZXMudXJsKSB7XFxuICAgICAgICAgICAgaWYgKHJlcy51cmwuaW5jbHVkZXMoJ0BsYXp5UnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICByZXMudXJsID0gcmVzLnVybC5yZXBsYWNlKCcuanM6JywgJy5qczpcXFxcbmlmKE1ZX1JVTEUpT2JqZWN0LmFzc2lnbihNWV9SVUxFLCcgKyAkLnN0cmluZ2lmeSh7IHBhZ2VzOiBNWV9SVUxFLnBhZ2VzLCBwYWdlTGlzdDogTVlfUlVMRS5wYWdlTGlzdCwgZmluZF9ydWxlOiAnJywgcGFyYW1zOiAnJyB9KSArICcpO01ZX1VSTD1cXFwiJyArIE1ZX1VSTCArICdcXFwiOycpXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUpIHtcXG4gICAgICAgICAgICAgICAgcmVzLmV4dHJhID0geyB1cmw6IHVybCwgUlVMRTogTVlfUlVMRSwgcGFnZVRpdGxlOiB0aXRsZSB9XFxuICAgICAgICAgICAgICAgIHJlcy51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbExvYWQ/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJylcXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5leHRyYS5SVUxFLnVybC5pbmNsdWRlcygnI2ltbWVyc2l2ZVRoZW1lIycpKSByZXMudXJsICs9ICcmI2ltbWVyc2l2ZVRoZW1lIydcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBteUNvbGxlY3Rpb25fZWwucHVzaChyZXMpXFxuICAgIH0pXFxuICAgIHNldFJlc3VsdChteUNvbGxlY3Rpb25fZWwpXFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwiaWNvbl8yX3JvdW5kXCIsXCJuYW1lXCI6XCLorr7nva5cIixcInBhdGhcIjpcIkNvbmZpZ1wiLFwicnVsZVwiOlwianM6XFxuYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAnY2xlYXJWYXIoXFxcIm15Q29sbGVjdGlvbi1zb3J0RmxhZ1xcXCIpO3JlZnJlc2hQYWdlKCknKVxcbnNldFBhZ2VUaXRsZSgn4pqZIOi9u+WQiOmbhuiuvue9riDimpknKVxcbmxldCBlbCA9IFt7XFxuICAgICAgICB0aXRsZTogJ+a4hemZpOe8k+WtmCznq4vljbPmm7TmlrAgPHNtYWxsPiDvvIjln7rkuo7ov5znqIvku5PlupMs5LiN6KaB6aKR57mB54K55Ye777yJJyxcXG4gICAgICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBkZWxldGVGaWxlKCd1cGRhdGV0aW1lJylcXG4gICAgICAgICAgICBiYWNrKHRydWUpXFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suabtOaWsCdcXG4gICAgICAgIH0pLFxcbiAgICAgICAgaW1nOiAnaGlrZXI6Ly9pbWFnZXMvaWNvbjEnLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH1dLFxcbiAgICBzZWFyY2hUaGQgPSBwYXJzZUludChyZWFkRmlsZSgnc2VhcmNoVGhkJykgfHwgJzUnKSxcXG4gICAgbmV3V2luZG93ID0gcmVhZEZpbGUoJ25ld1dpbmRvdycpLFxcbiAgICBlZGl0TW9kZSA9IGdldFZhcignbXlDb2xsZWN0aW9uLWVkaXRNb2RlJywgJ+WQr+eUqC/npoHnlKgnKVxcblxcbmVsLnB1c2goe1xcbiAgICB0aXRsZTogJ/CflI0g5pCc57Si5qih5byPOiAnICsgKHNlYXJjaFRoZCA9PSAwID8gJ+WIlycgOiAn6IGaJyArIHNlYXJjaFRoZCksXFxuICAgIHVybDogJChbJ+WIl+ihqOaQnOe0oicsICfogZrlkIjmkJzntKInXSwgMSkuc2VsZWN0KChzZWFyY2hUaGQpID0+IHtcXG4gICAgICAgIGlmIChpbnB1dCA9PSAn5YiX6KGo5pCc57SiJykge1xcbiAgICAgICAgICAgIHNhdmVGaWxlKCdzZWFyY2hUaGQnLCAnMCcpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoc2VhcmNoVGhkID09IDApIHNlYXJjaFRoZCA9IDVcXG4gICAgICAgICAgICByZXR1cm4gJChzZWFyY2hUaGQsICfovpPlhaXmkJzntKLnur/nqIvvvIzmnIDlpb3kuI3opoHotoXov4cxNicpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ3NlYXJjaFRoZCcsIGlucHV0KVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfSwgc2VhcmNoVGhkKSxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSwge1xcbiAgICB0aXRsZTogJ/CflqUg54us56uL6aaW6aG1OiAnICsgKG5ld1dpbmRvdyA/ICfmmK8nIDogJ+WQpicpLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKG5ld1dpbmRvdykgPT4ge1xcbiAgICAgICAgc2F2ZUZpbGUoJ25ld1dpbmRvdycsIG5ld1dpbmRvdyA/ICcnIDogJzEnKVxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICB9LCBuZXdXaW5kb3cpLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KVxcblxcbmVsLnB1c2goeyBjb2xfdHlwZTogJ2xpbmUnIH0sIHsgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snIH0pO1xcblsn5ZCv55SoL+emgeeUqCcsICfph43mlrDmjpLluo8nLCAn5pu05pS55Zu+5qCHJywgJ+WvvOWFpea1t+mYlCddLmZvckVhY2goKHYpID0+IHtcXG4gICAgZWwucHVzaCh7XFxuICAgICAgICB0aXRsZTogdiA9PSBlZGl0TW9kZSA/ICfigJzigJzigJ3igJ0nICsgdi5ib2xkKCkuZm9udGNvbG9yKCcjMTJiNjY4JykgOiB2LFxcbiAgICAgICAgdXJsOiB2ID09IGVkaXRNb2RlID8gJ2hpa2VyOi8vZW1wdHknIDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodikgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcignbXlDb2xsZWN0aW9uLWVkaXRNb2RlJywgdilcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LCB2KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSlcXG59KVxcbmVsLnB1c2goe1xcbiAgICB0aXRsZTogJ+aBouWkjeWHuuWOguaVsOaNricsXFxuICAgIHVybDogJCgn56Gu5a6a6KaB5oGi5aSN5Ye65Y6C77yM5riF5qWa6Ieq5a6a5LmJ5pWw5o2u5ZCX77yfJykuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICBkZWxldGVGaWxlKCdjdXN0b21EYXRhJylcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suaBouWkjeWHuuWOguaVsOaNridcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG59KVxcblxcbmNvbnN0IHsgZGF0YUxvYWQgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3V0aWxpdHk/cnVsZT0nICsgZ2V0SXRlbSgnbXlDb2xsZWN0aW9uJykpXFxubGV0IGRhdGEgPSBkYXRhTG9hZCh0cnVlKVxcbkpTT04ucGFyc2UocmVhZEZpbGUoJ2N1c3RvbURhdGEnKSB8fCAnW10nKS5mb3JFYWNoKCh2LCBpKSA9PiB7XFxuICAgIGxldCBkID0geyB0aXRsZTogdi50aXRsZSwgaW1nOiBkYXRhW2ldLmljb24gfVxcbiAgICBzd2l0Y2ggKGVkaXRNb2RlKSB7XFxuICAgICAgICBjYXNlICflkK/nlKgv56aB55SoJzpcXG4gICAgICAgICAgICBkLnRpdGxlID0gKHYudmlzaWJsZSA/ICfwn5+iICcgOiAn8J+UtCAnKSArIGQudGl0bGVcXG4gICAgICAgICAgICBkLnVybCA9ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHJ1bGVzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnY3VzdG9tRGF0YScpIHx8ICdbXScpLFxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBydWxlcy5maW5kSW5kZXgoKHYpID0+IHYudGl0bGUgPT0gcnVsZS50aXRsZSlcXG4gICAgICAgICAgICAgICAgcnVsZXNbaW5kZXhdLnZpc2libGUgPSAhcnVsZXNbaW5kZXhdLnZpc2libGVcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2N1c3RvbURhdGEnLCBKU09OLnN0cmluZ2lmeShydWxlcykpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgdilcXG4gICAgICAgICAgICBicmVha1xcbiAgICAgICAgY2FzZSAn6YeN5paw5o6S5bqPJzpcXG4gICAgICAgICAgICBsZXQgc29ydEZsYWcgPSBwYXJzZUludChnZXRWYXIoJ215Q29sbGVjdGlvbi1zb3J0RmxhZycsICctMScpKVxcbiAgICAgICAgICAgIGQudGl0bGUgPSAoc29ydEZsYWcgPT0gaSA/ICfwn5SEICcgOiAnJykgKyBkLnRpdGxlXFxuICAgICAgICAgICAgaWYgKHNvcnRGbGFnID09IC0xKVxcbiAgICAgICAgICAgICAgICBkLnVybCA9ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcignbXlDb2xsZWN0aW9uLXNvcnRGbGFnJywgaS50b1N0cmluZygpKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6YCJ5oup6KaB56e75Yqo5Yiw55qE5L2N572uJ1xcbiAgICAgICAgICAgICAgICB9LCBpKVxcbiAgICAgICAgICAgIGVsc2VcXG4gICAgICAgICAgICAgICAgZC51cmwgPSAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChvbGRJbmRleCwgbmV3SW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2N1c3RvbURhdGEnKSB8fCAnW10nKVxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXMuc3BsaWNlKG5ld0luZGV4LCAwLCBydWxlcy5zcGxpY2Uob2xkSW5kZXgsIDEpWzBdKVxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2N1c3RvbURhdGEnLCBKU09OLnN0cmluZ2lmeShydWxlcykpXFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ215Q29sbGVjdGlvbi1zb3J0RmxhZycsICctMScpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSwgc29ydEZsYWcsIGkpXFxuICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgIGNhc2UgJ+abtOaUueWbvuaghyc6XFxuICAgICAgICAgICAgZC51cmwgPSAkKHYuaWNvbiB8fCAnJywgJ+i+k+WFpeaWsOWbvuagh+WcsOWdgOaIluminOiJsuS7o+egge+8micpLmlucHV0KChydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2N1c3RvbURhdGEnKSB8fCAnW10nKSxcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcnVsZXMuZmluZEluZGV4KCh2KSA9PiB2LnRpdGxlID09IHJ1bGUudGl0bGUpXFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzW2luZGV4XS5pY29uID0gaW5wdXRcXG4gICAgICAgICAgICAgICAgZWxzZVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJ1bGVzW2luZGV4XS5pY29uXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdjdXN0b21EYXRhJywgSlNPTi5zdHJpbmdpZnkocnVsZXMpKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHYpXFxuICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgIGNhc2UgJ+WvvOWFpea1t+mYlCc6XFxuICAgICAgICAgICAgZC51cmwgPSAncnVsZTovLycgKyBiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoZGF0YVtpXSkpXFxuICAgICAgICAgICAgYnJlYWtcXG4gICAgfVxcbiAgICBlbC5wdXNoKGQpXFxufSlcXG5zZXRSZXN1bHQoZWwpXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop4TliJnliJfooahcIixcInBhdGhcIjpcImRhdGFcIixcInJ1bGVcIjpcIlt7XFxuICAgIFxcXCJsYXN0X2NoYXB0ZXJfcnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwidGl0bGVcXFwiOiBcXFwi5ZC+54ix56C06Kej8J2UpVxcXCIsXFxuICAgIFxcXCJhdXRob3JcXFwiOiBcXFwiSG9vZFxcXCIsXFxuICAgIFxcXCJ1cmxcXFwiOiBcXFwiaHR0cHM6Ly93d3cuNTJwb2ppZS5jbi9mb3J1bS5waHA/bW9kPWd1aWRlJnZpZXc9ZnljbGFzcyZwYWdlPWZ5cGFnZTtnZXQ7R0JLXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiA0LFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwidGV4dF8xXFxcIixcXG4gICAgXFxcImNsYXNzX25hbWVcXFwiOiBcXFwi5pyA5paw54Ot6ZeoJuacgOaWsOeyvuWNjibmnIDmlrDlm57lpI0m5pyA5paw5Y+R6KGoXFxcIixcXG4gICAgXFxcImNsYXNzX3VybFxcXCI6IFxcXCJob3QmZGlnZXN0Jm5ldyZuZXd0aHJlYWRcXFwiLFxcbiAgICBcXFwiYXJlYV9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJhcmVhX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwic29ydF9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNvcnRfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiZmluZF9ydWxlXFxcIjogXFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcXFxuXFxcXG4vL+WIl+ihqFxcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsJ2JvZHkmJnRib2R5W2lkXScpO1xcXFxuXFxcXG5mb3IodmFyIGk9MTtpPGxpc3QubGVuZ3RoKzE7aSsrKXtcXFxcbmQucHVzaCh7XFxcXG50aXRsZTogKGkpKyAnLiAnICtwYXJzZURvbUZvckh0bWwobGlzdFtpLTFdLCcueHN0JiZUZXh0JyksXFxcXG51cmw6J3g1Oi8vaHR0cHM6Ly93d3cuNTJwb2ppZS5jbi8nK3BhcnNlRG9tRm9ySHRtbChsaXN0W2ktMV0sJ2EmJmhyZWYnKSxcXFxcbmNvbF90eXBlOiAndGV4dF8xJ30pO1xcXFxufVxcXFxuXFxcXHJcXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldEhvbWVSZXN1bHQocmVzKTtcXFwiLFxcbiAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJodHRwOi8vemhhbm5laS5iYWlkdS5jb20vY3NlL3NpdGU/cT0qKiZwPWZ5cGFnZSZjYz01MnBvamllLmNuXFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuKRoOaOqOiNkFxcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImJvZHkmJi5yZXN1bHQ7XFxcXG5oMyYmVGV4dDtcXFxcbmEmJmhyZWY7XFxcXG4qO1xcXFxuLmMtYWJzdHJhY3QmJlRleHQ7XFxcXG4qXFxcIixcXG4gICAgXFxcImRldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcImRldGFpbF9maW5kX3J1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwidWFcXFwiOiBcXFwicGNcXFwiLFxcbiAgICBcXFwicHJlUnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwicGFnZXNcXFwiOiBcXFwiW11cXFwiLFxcbiAgICBcXFwiaWNvblxcXCI6IFxcXCJodHRwczovL3d3dy41MnBvamllLmNuL2Zhdmljb24uaWNvXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCI0MjNEb3duXFxcIixcXG4gICAgXFxcImF1dGhvclxcXCI6IFxcXCLpppnpm4Xmg4VcXFwiLFxcbiAgICBcXFwidXJsXFxcIjogXFxcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL2Z5QWxscGFnZS9meXBhZ2U7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDEwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODAuMC4zOTg3LjEzMiBNb2JpbGUgU2FmYXJpLzUzNy4zNn1cXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IDEsXFxuICAgIFxcXCJjb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcImNsYXNzX25hbWVcXFwiOiBcXFwi6aaW6aG1JuWuieWNk+i9r+S7tlxcXCIsXFxuICAgIFxcXCJjbGFzc191cmxcXFwiOiBcXFwiJmFway9cXFwiLFxcbiAgICBcXFwiYXJlYV9uYW1lXFxcIjogXFxcIuWOn+WIm+i9r+S7tiblqpLkvZPmkq3mlL4m572R6aG15rWP6KeIJuWbvuW9ouWbvuWDjybogYrlpKnova/ku7Ym5Yqe5YWs6L2v5Lu2JuS4iuS8oOS4i+i9vSblrp7nlKjova/ku7Ym57O757uf6L6F5YqpJuezu+e7n+W/heWkhyblronlhajova/ku7Ym6KGl5LiB55u45YWzJuehrOS7tuebuOWFsybmuLjmiI/ova/ku7ZcXFwiLFxcbiAgICBcXFwiYXJlYV91cmxcXFwiOiBcXFwiemQ0MjMvJm11bHRpbWVkaWEvJmJyb3dzZXIvJmltYWdlLyZpbS8md29yay8mZG93bi8mc2FmZXdvcmUvJnN5c3RlbXNvZnQvJnN5c3RlbXBsdXMvJnNlY3VyaXR5LyZwYXRjaC8maGFyZHdhcmUvJmdhbWUvXFxcIixcXG4gICAgXFxcInNvcnRfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImZpbmRfcnVsZVxcXCI6IFxcXCJqczpcXFxcbnZhciBpdGVtcyA9IFtdO3ZhciBodG1sPWdldFJlc0NvZGUoKTtcXFxcbi8vbG9nKGh0bWwpO1xcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsJy5hcmNoaXZlLWxpc3QmJmxpOm5vdCg6Y29udGFpbnMo5LyY5oOg5o6o6I2QKSknKTtcXFxcblxcXFxyXFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XFxcXHJcXFxcbiAgICAgICAgdmFyIHRpdGxlID0gcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICdoMiYmVGV4dCcpO1xcXFxuICAgICAgICB2YXIgaW1nID0gcGFyc2VEb20obGlzdFtpXSwgJ2ltZyYmc3JjJyk7XFxcXHJcXFxcbiAgICAgICAgdmFyIHVybCA9IHBhcnNlRG9tKGxpc3RbaV0sICdhJiZocmVmJyk7XFxcXG4gICAgICAgIHZhciBkZXNjID0gcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICcuaXRlbS1tZXRhJiZUZXh0Jyk7XFxcXHJcXFxcbiAgICAgICAgaXRlbXMucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgICAgIHBpY191cmw6IGltZyxcXFxcclxcXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxcXG4gICAgICAgICAgICBkZXNjOiBkZXNjXFxcXHJcXFxcbiAgICAgICAgfSk7XFxcXHJcXFxcbiAgICB9XFxcXG5cXFxcbnNldEhvbWVSZXN1bHQoe2RhdGE6aXRlbXN9KTtcXFwiLFxcbiAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJodHRwczovL3d3dy40MjNkb3duLmNvbS9wYWdlL2Z5cGFnZT9zPSoqO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxMCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgwLjAuMzk4Ny4xMzIgTW9iaWxlIFNhZmFyaS81MzcuMzZ9XFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuWFtuWug1xcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcIi5hcmNoaXZlLWxpc3QmJmxpO2gyJiZUZXh0O2EmJmhyZWY7Lml0ZW0tY2F0ZWdvcnkmJlRleHQ7Lml0ZW0tbWV0YSYmVGV4dDtpbWcmJnNyY1xcXCIsXFxuICAgIFxcXCJkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcImpzOlxcXFxudmFyIGQ9W107XFxcXG52YXIgaHRtbD1nZXRSZXNDb2RlKCk7XFxcXG52YXIgdGFicz1wYXJzZURvbUZvckh0bWwoaHRtbCwnYm9keSYmLmVudHJ5JiZIdG1sJyk7XFxcXG5cXFxcbmQucHVzaCh7XFxcXG5cXFxcdFxcXFx0XFxcXHR0aXRsZTogdGFicyxcXFxcbiAgICBkZXNjOicnLFxcXFxuICAgIHBpY191cmw6JycsXFxcXG4gICAgdXJsOicnLFxcXFxuXFxcXHRcXFxcdGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxufSk7XFxcXG5cXFxcbnNldEhvbWVSZXN1bHQoe2RhdGE6ZH0pO1xcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwic2RldGFpbF9maW5kX3J1bGVcXFwiOiBcXFwiKlxcXCIsXFxuICAgIFxcXCJ1YVxcXCI6IFxcXCJhdXRvXFxcIixcXG4gICAgXFxcInByZVJ1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInBhZ2VzXFxcIjogXFxcIltdXFxcIixcXG4gICAgXFxcImljb25cXFwiOiBcXFwiXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLokL3lsJjkuYvmnKjhtLrhtZBcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIk5hbW9cXFwiLFxcbiAgICBcXFwidXJsXFxcIjogXFxcImh0dHBzOi8vd3d3Lmx1b2NoZW56aGltdS5jb20vcGFnZS9meXBhZ2VcXFwiLFxcbiAgICBcXFwidmVyc2lvblxcXCI6IDEsXFxuICAgIFxcXCJjb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIixcXG4gICAgXFxcImNsYXNzX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImNsYXNzX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiYXJlYV9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJhcmVhX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwic29ydF9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNvcnRfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiZmluZF9ydWxlXFxcIjogXFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksICcuY29udGVudCYmLmV4Y2VycHQnKTtcXFxcbmZvciAodmFyIGkgaW4gbGlzdCkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtpXSwgJ2gyJiZUZXh0JyksXFxcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnLm1ldGEmJlRleHQnKSxcXFxcbiAgICAgICAgcGljX3VybDogcGFyc2VEb20obGlzdFtpXSwgJ2ltZyYmZGF0YS1zcmMnKSArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogcGFyc2VEb20obGlzdFtpXSwgJ2EmJmhyZWYnKSxcXFxcbiAgICB9KVxcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxuICAgIFxcXCJzZWFyY2hfdXJsXFxcIjogXFxcImh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL3BhZ2UvZnlwYWdlP3M9KipcXFwiLFxcbiAgICBcXFwiZ3JvdXBcXFwiOiBcXFwi5YW25a6DXFxcIixcXG4gICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwianM6XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgJy5jb250ZW50LXdyYXAmJi5leGNlcnB0JiZsaScpO1xcXFxuZm9yICh2YXIgaSBpbiBsaXN0KSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2ldLCAnaDImJlRleHQnKSxcXFxcbiAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpc3RbaV0sICcuaW5mbyYmVGV4dCcpLCAgICAgICAgXFxcXG4gICAgICAgIHVybDogcGFyc2VEb20obGlzdFtpXSwgJ2EmJmhyZWYnKSxcXFxcbiAgICB9KVxcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxuICAgIFxcXCJkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcImpzOnZhciByZXM9e307XFxcXG52YXIgZCA9IFtdO1xcXFxuZC5wdXNoKHtcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJzigJ3igJ08YmlnPlxcXFxcXFwiICsgcGFyc2VEb21Gb3JIdG1sKGdldFJlc0NvZGUoKSwgXFxcXFxcXCJoMSYmVGV4dFxcXFxcXFwiKSArIFxcXFxcXFwiPC9iaWc+XFxcXFxcXCIsXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChnZXRSZXNDb2RlKCksIFxcXFxcXFwiLmFydGljbGUtY29udGVudCYmSHRtbFxcXFxcXFwiKS5zcGxpdCgncHVzaCh7fSk7JylbMV0sXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHRleHRTaXplOiAxNixcXFxcbiAgICAgICAgY2xpY2s6IHRydWVcXFxcbiAgICB9XFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFwiLFxcbiAgICBcXFwic2RldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcIipcXFwiLFxcbiAgICBcXFwidWFcXFwiOiBcXFwicGNcXFwiLFxcbiAgICBcXFwicHJlUnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwicGFnZXNcXFwiOiBcXFwiW11cXFwiLFxcbiAgICBcXFwiaWNvblxcXCI6IFxcXCJodHRwczovL2ltZy5sdW9jaGVuemhpbXUuY29tL3B1YmxpYy8yMDIwLzAxL2hvbWUucG5nXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLliIbkuqvogIVcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIuWwj/CflKXmmJ9cXFwiLFxcbiAgICBcXFwidXJsXFxcIjogXFxcImh0dHBzOi8vc2hhcmVydy5jb20vYS9meUFsbC9meXBhZ2UvXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiA5LFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiLFxcbiAgICBcXFwiY2xhc3NfbmFtZVxcXCI6IFxcXCLmiYvmnLrova/ku7Ym6L2m5py66L2v5Lu2JueUteiEkei9r+S7tiZcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcImdhbmh1byZxaWNoZSZqaW5neWFuJlxcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwi55uS5a2Q6L2v5Lu2JlRW6LWE6K6vJueyvumAiVRWXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcInppeXVhbiZ0dnp4Jmp4dHZcXFwiLFxcbiAgICBcXFwic29ydF9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNvcnRfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiZmluZF9ydWxlXFxcIjogXFxcImJvZHkmJi5hcnRpY2xlLWxpc3Q7aW1nJiZhbHQ7aW1nJiZzcmM7LnRpbWUmJlRleHQ7YSYmaHJlZlxcXCIsXFxuICAgIFxcXCJzZWFyY2hfdXJsXFxcIjogXFxcImh0dHBzOi8vc2hhcmVydy5jb20vc2VhcmNoLnBocD9xPSoqJnBhZ2U9ZnlwYWdlXFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuWFtuWug1xcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImJvZHkmJi5hcnRpY2xlLWxpc3Q7aW1nJiZhbHQ7YSYmaHJlZjsudGltZSYmVGV4dDtwLDEmJlRleHQ7aW1nJiZzcmNcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJqczp2YXIgcmVzPXt9O3ZhciBkPVtdO2h0bWw9Z2V0UmVzQ29kZSgpO3RleHQ9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcXFxcXCIuYXJ0LWNvbnRlbnQmJkh0bWxcXFxcXFxcIik7ZC5wdXNoKHt0aXRsZTp0ZXh0LGNvbF90eXBlOidyaWNoX3RleHQnfSk7cmVzLmRhdGE9ZDtzZXRIb21lUmVzdWx0KHJlcyk7XFxcIixcXG4gICAgXFxcInNkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCIqXFxcIixcXG4gICAgXFxcInVhXFxcIjogXFxcIm1vYmlsZVxcXCIsXFxuICAgIFxcXCJwcmVSdWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJwYWdlc1xcXCI6IFxcXCJbXVxcXCIsXFxuICAgIFxcXCJpY29uXFxcIjogXFxcImh0dHBzOi8vejMuYXgxeC5jb20vMjAyMS8xMS8wNS9JbXpTdmQucG5nXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLlj5HnjrDlsI/ova/ku7ZcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIuWxheeEtlxcXCIsXFxuICAgIFxcXCJ1cmxcXFwiOiBcXFwiaHR0cHM6Ly93d3cueDZnLmNvbS9odG1sLzIzLWZ5cGFnZS5odG1sXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiAzLFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiLFxcbiAgICBcXFwiY2xhc3NfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwic29ydF91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJmaW5kX3J1bGVcXFwiOiBcXFwiLmxpc3Qtc29mdCYmbGk7Lmxpc3QtaW5mbyYmYSYmVGV4dDsubGF5dWktY2xlYXImJmltZyYmc3JjOy5saXN0LWNhJiZUZXh0Oy5saXN0LWluZm8mJmEmJmhyZWZcXFwiLFxcbiAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiZ3JvdXBcXFwiOiBcXFwi5YW25a6DXFxcIixcXG4gICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImRldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJ0ZXh0XzNcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJib2R5JiYuYXJ0aWNsZS1kb3duO2EmJlRleHQ7KjsqO2EmJmRhdGEtdXJsXFxcIixcXG4gICAgXFxcInNkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwidWFcXFwiOiBcXFwibW9iaWxlXFxcIixcXG4gICAgXFxcInByZVJ1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInBhZ2VzXFxcIjogXFxcIltdXFxcIixcXG4gICAgXFxcImljb25cXFwiOiBcXFwiXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCJWWEFUXFxcIixcXG4gICAgXFxcImF1dGhvclxcXCI6IFxcXCLlsI/wn5Sl5pifXFxcIixcXG4gICAgXFxcInVybFxcXCI6IFxcXCJodHRwczovL3d3dy52eGF0LmNvbS9meUFsbF9meXBhZ2UuaHRtbFxcXCIsXFxuICAgIFxcXCJ2ZXJzaW9uXFxcIjogMSxcXG4gICAgXFxcImNvbF90eXBlXFxcIjogXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIixcXG4gICAgXFxcImNsYXNzX25hbWVcXFwiOiBcXFwi6L2v5Lu25LiL6L29JldpbmRvd3MmQW5kcm9pZCbnlLXop4bova/ku7YmXFxcIixcXG4gICAgXFxcImNsYXNzX3VybFxcXCI6IFxcXCJSdWFuSmlhblhpYVphaSZXaW5kb3dzJkFuZHJvaWQmVFYmXFxcIixcXG4gICAgXFxcImFyZWFfbmFtZVxcXCI6IFxcXCLkvJjmg6DmtLvliqgm572R56uZ5rqQ56CBJuacjeWKoeWZqCbmioDmnK/mlZnnqIsmXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIllvdUh1aUh1b0RvbmcmV2FuZ1poYW5ZdWFuTWEmVlBTJkppU2h1Smlhb0NoZW5nJlxcXCIsXFxuICAgIFxcXCJzb3J0X25hbWVcXFwiOiBcXFwi5LiA57qn6aG16Z2i5o+Q56S66ZSZ6K+v5Li65rKh5pyJ5LiL5LiA6aG177yBXFxcIixcXG4gICAgXFxcInllYXJfbmFtZVxcXCI6IFxcXCLlhbbku5Ym5ri45oiPJue9keWPi+WIhuS6qyYmXFxcIixcXG4gICAgXFxcInNvcnRfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ5ZWFyX3VybFxcXCI6IFxcXCJRaVRhJllvdVhpJldhbmdZb3VGZW5YaWFuZyYmXFxcIixcXG4gICAgXFxcImZpbmRfcnVsZVxcXCI6IFxcXCJib2R5JiYucG9zdDthJiZ0aXRsZTtpbWcmJnNyYzsudGltZSYmVGV4dDthJiZocmVmXFxcIixcXG4gICAgXFxcInNlYXJjaF91cmxcXFwiOiBcXFwiaHR0cHM6Ly93d3cudnhhdC5jb20vc2VhcmNoLnBocD9xPSoqJnBhZ2U9ZnlwYWdlXFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuWFtuWug1xcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImJvZHkmJi5wb3N0O2EmJnRpdGxlO2EmJmhyZWY7LnRpbWUmJlRleHQ7LnBvc3QmJlRleHQ7aW1nJiZzcmNcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiZGV0YWlsX2ZpbmRfcnVsZVxcXCI6IFxcXCJqczp2YXIgcmVzPXt9O3ZhciBkPVtdO2h0bWw9Z2V0UmVzQ29kZSgpO3RleHQ9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcXFxcXCIuYXJ0aWNsZS1jb250ZW50JiZIdG1sXFxcXFxcXCIpO2QucHVzaCh7dGl0bGU6dGV4dCxjb2xfdHlwZToncmljaF90ZXh0J30pO3Jlcy5kYXRhPWQ7c2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwic2RldGFpbF9maW5kX3J1bGVcXFwiOiBcXFwiKlxcXCIsXFxuICAgIFxcXCJ1YVxcXCI6IFxcXCJtb2JpbGVcXFwiLFxcbiAgICBcXFwicHJlUnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwicGFnZXNcXFwiOiBcXFwiW11cXFwiLFxcbiAgICBcXFwiaWNvblxcXCI6IFxcXCJcXFwiXFxufSwge1xcbiAgICBcXFwibGFzdF9jaGFwdGVyX3J1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInRpdGxlXFxcIjogXFxcIuWGsOWwgeWoseS5kOe9keaUuVxcXCIsXFxuICAgIFxcXCJhdXRob3JcXFwiOiBcXFwi6aaZ6ZuF5oOFXFxcIixcXG4gICAgXFxcInVybFxcXCI6IFxcXCJodHRwczovL3d3dy5iaW5nZmVuZ3lsLmNvbS9jYXRlZ29yeS1meWNsYXNzX2Z5cGFnZS5odG1sXFxcIixcXG4gICAgXFxcInZlcnNpb25cXFwiOiAzLFxcbiAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwidGV4dF8xXFxcIixcXG4gICAgXFxcImNsYXNzX25hbWVcXFwiOiBcXFwi5a6J5Y2T5bqU55SoJuWFtuWug+i1hOa6kCbmioDmnK/mlZnnqIsm55S16ISR6L2v5Lu2XFxcIixcXG4gICAgXFxcImNsYXNzX3VybFxcXCI6IFxcXCI3JjYmMyY1XFxcIixcXG4gICAgXFxcImFyZWFfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwiYXJlYV91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInNvcnRfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl9uYW1lXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X3VybFxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwieWVhcl91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImZpbmRfcnVsZVxcXCI6IFxcXCIuY2F0ZWxpc3QmJmxpO2gzJiZUZXh0O2ltZyYmc3JjOy5pbmZvJiZUZXh0LmpzOmlucHV0LnJlcGxhY2UoJ+6agycsJ+KPsCcpLnJlcGxhY2UoJ+6ZsCcsJ/Cfk5knKS5yZXBsYWNlKCfumagnLCfwn5OdJyk7YSYmaHJlZlxcXCIsXFxuICAgIFxcXCJzZWFyY2hfdXJsXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbmdmZW5neWwuY29tL3NlYXJjaC5waHA/cT0qKiZwYWdlPWZ5cGFnZVxcXCIsXFxuICAgIFxcXCJncm91cFxcXCI6IFxcXCLlhbblroNcXFwiLFxcbiAgICBcXFwic2VhcmNoRmluZFxcXCI6IFxcXCIuY2F0ZWxpc3QmJmxpO2gzJiZUZXh0O2EmJmhyZWY7LmluZm8mJlRleHQ7cCwtMSYmVGV4dFxcXCIsXFxuICAgIFxcXCJkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcImpzOnZhciByZXM9e307dmFyIGQ9W107aHRtbD1nZXRSZXNDb2RlKCk7dGV4dD1wYXJzZURvbUZvckh0bWwoaHRtbCxcXFxcXFxcIi5hcnRpY2xlJiZIdG1sXFxcXFxcXCIpO2QucHVzaCh7dGl0bGU6dGV4dCxjb2xfdHlwZToncmljaF90ZXh0J30pO3Jlcy5kYXRhPWQ7c2V0SG9tZVJlc3VsdChyZXMpO1xcXCIsXFxuICAgIFxcXCJzZGV0YWlsX2NvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwic2RldGFpbF9maW5kX3J1bGVcXFwiOiBcXFwiKlxcXCIsXFxuICAgIFxcXCJ1YVxcXCI6IFxcXCJhdXRvXFxcIixcXG4gICAgXFxcInByZVJ1bGVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInBhZ2VzXFxcIjogXFxcIltdXFxcIixcXG4gICAgXFxcImljb25cXFwiOiBcXFwiXFxcIlxcbn0sIHtcXG4gICAgXFxcImxhc3RfY2hhcHRlcl9ydWxlXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJ0aXRsZVxcXCI6IFxcXCLlvILmmJ/ova/ku7ZcXFwiLFxcbiAgICBcXFwiYXV0aG9yXFxcIjogXFxcIummmembheaDhVxcXCIsXFxuICAgIFxcXCJ1cmxcXFwiOiBcXFwiaHR0cDovL3d3dy55eHNzcC5jb20vZnljbGFzcy9wYWdlL2Z5cGFnZVxcXCIsXFxuICAgIFxcXCJ2ZXJzaW9uXFxcIjogMSxcXG4gICAgXFxcImNvbF90eXBlXFxcIjogXFxcIm1vdmllXzFcXFwiLFxcbiAgICBcXFwiY2xhc3NfbmFtZVxcXCI6IFxcXCJBbmRyb2lkJldpbmRvd3NcXFwiLFxcbiAgICBcXFwiY2xhc3NfdXJsXFxcIjogXFxcIm9zL2FuZHJvaWQmb3Mvd2luZG93c1xcXCIsXFxuICAgIFxcXCJhcmVhX25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcImFyZWFfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJzb3J0X25hbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfbmFtZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwic29ydF91cmxcXFwiOiBcXFwiXFxcIixcXG4gICAgXFxcInllYXJfdXJsXFxcIjogXFxcIlxcXCIsXFxuICAgIFxcXCJmaW5kX3J1bGVcXFwiOiBcXFwiLnRkLXNzLW1haW4tY29udGVudCYmLnRkX21vZHVsZV93cmFwO2gzJiZUZXh0O2ltZyYmc3JjOy50ZC1tb2R1bGUtbWV0YS1pbmZvJiZUZXh0O2EmJmhyZWZcXFwiLFxcbiAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJodHRwOi8vd3d3Lnl4c3NwLmNvbS9wYWdlL2Z5cGFnZT9zPSoqXFxcIixcXG4gICAgXFxcImdyb3VwXFxcIjogXFxcIuWFtuWug1xcXCIsXFxuICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcIi50ZC1zcy1tYWluLWNvbnRlbnQmJi50ZF9tb2R1bGVfd3JhcDtoMyYmVGV4dDthJiZocmVmOzsudGQtbW9kdWxlLW1ldGEtaW5mbyYmVGV4dDtpbWcmJnNyY1xcXCIsXFxuICAgIFxcXCJkZXRhaWxfY29sX3R5cGVcXFwiOiBcXFwibW92aWVfMVxcXCIsXFxuICAgIFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcImpzOlxcXFxudmFyIGQ9W107XFxcXG52YXIgaHRtbD1nZXRSZXNDb2RlKCk7XFxcXG52YXIgdGFicz1wYXJzZURvbUZvckh0bWwoaHRtbCwnYm9keSYmLnRkLXBvc3QtY29udGVudCYmSHRtbCcpLnJlcGxhY2UoL1xcXFxcXFxcPHNjcmlwdFtcXFxcXFxcXFNcXFxcXFxcXHNdKj88XFxcXFxcXFwvc2NyaXB0XFxcXFxcXFw+L2csJycpO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuXFxcXHRcXFxcdFxcXFx0dGl0bGU6IHRhYnMsXFxcXG4gICAgZGVzYzonJyxcXFxcbiAgICBwaWNfdXJsOicnLFxcXFxuICAgIHVybDonJyxcXFxcblxcXFx0XFxcXHRjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbn0pO1xcXFxuXFxcXG5zZXRIb21lUmVzdWx0KHtkYXRhOmR9KTtcXFwiLFxcbiAgICBcXFwic2RldGFpbF9jb2xfdHlwZVxcXCI6IFxcXCJtb3ZpZV8xXFxcIixcXG4gICAgXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcIjogXFxcIipcXFwiLFxcbiAgICBcXFwidWFcXFwiOiBcXFwicGNcXFwiLFxcbiAgICBcXFwicHJlUnVsZVxcXCI6IFxcXCJcXFwiLFxcbiAgICBcXFwicGFnZXNcXFwiOiBcXFwiW11cXFwiLFxcbiAgICBcXFwiaWNvblxcXCI6IFxcXCJcXFwiXFxufV1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vaW1nMi5iYWlkdS5jb20vaXQvdT0yNTEwNzgxMzM3LDM4ODE2MzYwMTUmZm09MTE3JmZtdD1hdXRvJmdwPTAuanBnIn0=
Add Comment
Please, Sign In to add comment