xiaomianao666

小程序:轻合集.app

Nov 2nd, 2022
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@轻合集.app@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6L275ZCI6ZuGLmFwcCIsImF1dGhvciI6Ikpva2VyIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSIsInZlcnNpb24iOjEwMTA3LCJjb2xfdHlwZSI6Imljb25fcm91bmRfc21hbGxfNCIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoiYWxsIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG5jb25zdCBRSU5HX1RJVExFID0gZ2V0TXlWYXIoJ215Q29sbGVjdGlvbicpLFxuICAgIG5ld1dpbmRvdyA9IHJlYWRGaWxlKCduZXdXaW5kb3cnKSxcbiAgICB0eXBlU2hvdyA9IGdldE15VmFyKCd0eXBlU2hvdycsICdmaW5kOicpO1xubGV0IHR5cGVzID0ge31cbmxldCBlbCA9IFt7XG4gICAgICAgIHRpdGxlOiAnICcgKyBRSU5HX1RJVExFLmJvbGQoKSArICcgJm5ic3AgJm5ic3AgJyArICfimpkg6L275ZCI6ZuG6K6+572uIOKamScuc21hbGwoKSxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbmZpZz9ydWxlPScgKyBRSU5HX1RJVExFICsgJyYjbm9SZWNvcmRIaXN0b3J5IycsXG4gICAgICAgIGltZzogTVlfUlVMRS5pY29uIHx8ICdoaWtlcjovL2ltYWdlcy9pY29uMScsXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xuICAgIH0sIHtcbiAgICAgICAgdXJsOiAnXCJoaWtlcjovL3NlYXJjaD9zPVwiK2lucHV0JyxcbiAgICAgICAgZGVzYzogJ+aQnOS9oOaDs+imgeeahC4uLicsXG4gICAgICAgIHRpdGxlOiAn5pCc57SiJyxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBydWxlczogJC50b1N0cmluZygoUUlOR19USVRMRSwgdHlwZVNob3cpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcnVsZXMgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9kYXRhTG9hZD9ydWxlPScgKyBRSU5HX1RJVExFKSgpXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVTaG93LnN0YXJ0c1dpdGgoJ2ZpbmQ6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlcktleSA9IHR5cGVTaG93LnNsaWNlKDUpXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJLZXkpIHJ1bGVzID0gcnVsZXMuZmlsdGVyKCh2KSA9PiB2LnRpdGxlLmluY2x1ZGVzKGZpbHRlcktleSkpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHJ1bGVzID0gcnVsZXMuZmlsdGVyKCh2KSA9PiB2LnR5cGUgPT0gdHlwZVNob3cpXG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJ1bGVzKVxuICAgICAgICAgICAgfSwgUUlOR19USVRMRSwgdHlwZVNob3cpLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcignc2VhcmNoS2V5JywgJycpLFxuICAgICAgICAgICAgb25DaGFuZ2U6IFwicHV0TXlWYXIoJ3NlYXJjaEtleScsaW5wdXQpXCJcbiAgICAgICAgfVxuICAgIH1dLFxuICAgIHJ1bGVzID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvZGF0YUxvYWQ/cnVsZT0nICsgUUlOR19USVRMRSkoKTtcbkFycmF5LmZyb20obmV3IFNldChydWxlcy5tYXAoZSA9PiBlLnR5cGUpKSkuZm9yRWFjaCh0ID0+IHR5cGVzW3RdID0gdCk7XG5lbC5wdXNoKHR5cGVTaG93LnN0YXJ0c1dpdGgoJ2ZpbmQ6JykgPyB7XG4gICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgKCflhajpg6gnICsgKHR5cGVTaG93WzVdID8gJ1snICsgdHlwZVNob3cuc2xpY2UoNSkgKyAnXScgOiBydWxlcy5sZW5ndGgpKS5ib2xkKCkuZm9udGNvbG9yKCcjMTJiNjY4JyksXG4gICAgdXJsOiAkKHR5cGVTaG93LnNsaWNlKDUpLCAn5p+l5om+5bCP56iL5bqP5YWz6ZSu6K+NJykuaW5wdXQoKCkgPT4ge1xuICAgICAgICBwdXRNeVZhcigndHlwZVNob3cnLCAnZmluZDonICsgaW5wdXQpXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXG4gICAgfSksXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xufSA6IHtcbiAgICB0aXRsZTogJ+WFqOmDqCcgKyBydWxlcy5sZW5ndGgsXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgcHV0TXlWYXIoJ3R5cGVTaG93JywgJ2ZpbmQ6JylcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcbiAgICB9KSxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXG59KVxuZm9yIChsZXQgayBpbiB0eXBlcykge1xuICAgIGlmIChydWxlcy5maW5kKCh2KSA9PiB2LnR5cGUgPT0gaykpIHtcbiAgICAgICAgbGV0IGNvdW50ID0gcnVsZXMuZmlsdGVyKGl0ID0+ICFrIHx8IGl0LnR5cGUgPT09IGspLmxlbmd0aDtcbiAgICAgICAgZWwucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyAoayA9PSB0eXBlU2hvdyA/ICh0eXBlc1trXSArIGNvdW50KS5ib2xkKCkuZm9udGNvbG9yKCcjMTJiNjY4JykgOiB0eXBlc1trXSArIGNvdW50KSxcbiAgICAgICAgICAgIHVybDogayA9PSB0eXBlU2hvdyA/ICdoaWtlcjovL2VtcHR5JyA6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGspID0+IHtcbiAgICAgICAgICAgICAgICBwdXRNeVZhcigndHlwZVNob3cnLCBrKVxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcbiAgICAgICAgICAgIH0sIGspLFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xuICAgICAgICB9KVxuICAgIH1cbn1cblxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvdXJsUGFyc2U/cnVsZT0nICsgUUlOR19USVRMRSkpLnJ1bGUpXG5pZiAodHlwZVNob3cuc3RhcnRzV2l0aCgnZmluZDonKSkge1xuICAgIGxldCBmaWx0ZXJLZXkgPSB0eXBlU2hvdy5zbGljZSg1KVxuICAgIGlmIChmaWx0ZXJLZXkpIHJ1bGVzID0gcnVsZXMuZmlsdGVyKCh2KSA9PiB2LnRpdGxlLmluY2x1ZGVzKGZpbHRlcktleSkpXG59IGVsc2UgcnVsZXMgPSBydWxlcy5maWx0ZXIoKHYpID0+IHYudHlwZSA9PSB0eXBlU2hvdylcbnJ1bGVzLmZvckVhY2goKHYpID0+IHtcbiAgICBsZXQgdXJsUGFyYW0gPSB2LnVybC5zcGxpdCgnOycpLFxuICAgICAgICBydWxlVG1wID0ge1xuICAgICAgICAgICAgdGl0bGU6IHYudGl0bGUsXG4gICAgICAgICAgICB1cmw6IHVybFBhcmFtLnNoaWZ0KCksXG4gICAgICAgICAgICBjbGFzc19uYW1lOiB2LmNsYXNzX25hbWUsXG4gICAgICAgICAgICBjbGFzc191cmw6IHYuY2xhc3NfdXJsLFxuICAgICAgICAgICAgYXJlYV9uYW1lOiB2LmFyZWFfbmFtZSxcbiAgICAgICAgICAgIGFyZWFfdXJsOiB2LmFyZWFfdXJsLFxuICAgICAgICAgICAgeWVhcl9uYW1lOiB2LnllYXJfbmFtZSxcbiAgICAgICAgICAgIHllYXJfdXJsOiB2LnllYXJfdXJsLFxuICAgICAgICAgICAgc29ydF9uYW1lOiB2LnNvcnRfbmFtZSxcbiAgICAgICAgICAgIHNvcnRfdXJsOiB2LnNvcnRfdXJsXG4gICAgICAgIH0sXG4gICAgICAgIGZ5cGFnZSA9IHJ1bGVUbXAudXJsLmluY2x1ZGVzKCdmeXBhZ2UnKSA/ICdmeXBhZ2UnIDogJzEnLFxuICAgICAgICBkb21haW4gPSAoL14oaHR0cHM/OlxcL1xcLy4rPykoPzojfFxcP3xcXC98JCkvaS5leGVjKHJ1bGVUbXAudXJsKSB8fCBbLCAnaGlrZXI6Ly9lbXB0eSddKVsxXSxcbiAgICAgICAgZCA9IHtcbiAgICAgICAgICAgIHRpdGxlOiB2LnRpdGxlLFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2ZyYW1lTG9hZCcsXG4gICAgICAgICAgICBpbWc6IHYuaWNvbiB8fCAnaGlrZXI6Ly9pbWFnZXMvaWNvbjEnLFxuICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICB1cmw6IGRvbWFpbiArICcvI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyMjIycgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIFJVTEU6IGJhc2U2NEVuY29kZShKU09OLnN0cmluZ2lmeShydWxlVG1wKSksXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VOdW06IGZ5cGFnZSxcbiAgICAgICAgICAgICAgICAgICAgUUlOR19USVRMRTogZ2V0TXlWYXIoJ215Q29sbGVjdGlvbicpXG4gICAgICAgICAgICAgICAgfSkgKyAnLmpzOmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS91cmxQYXJzZe+8n++8n3J1bGU9JyArIFFJTkdfVElUTEUgKyAnXCIpKS5ydWxlKe+8m++8m2luZGV4VXJsKGlucHV0KTsnICsgcGFyYW1IYW5kbGUodXJsUGFyYW0sIHYudWEpLFxuICAgICAgICAgICAgICAgIFJVTEU6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHYudGl0bGVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlzSW5kZXg6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIGlmIChuZXdXaW5kb3cpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkLmV4dHJhLCB7XG4gICAgICAgICAgICBuZXdXaW5kb3c6IHRydWUsXG4gICAgICAgICAgICB3aW5kb3dJZDogUUlOR19USVRMRSArICdfJyArIGQudGl0bGVcbiAgICAgICAgfSlcbiAgICB9XG4gICAgZWwucHVzaChkKVxufSlcbnNldFJlc3VsdChlbCkiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eT9rZXl3b3JkPSoqIiwiZ3JvdXAiOiLikaDovbvlkIjpm4YiLCJzZWFyY2hGaW5kIjoianM6XG5zZXRSZXN1bHQoW3tcbiAgICB0aXRsZTogXCLngrnmiJHlvIDlp4vovbvlkIjpm4bigKLop4bnlYzogZrmkJxcIixcbiAgICB1cmw6IFwiaGlrZXI6Ly9zZWFyY2g/cz1cIiArIGdldFBhcmFtKFwia2V5d29yZFwiKSxcbiAgICBleHRyYToge1xuICAgICAgICBydWxlczogJC50b1N0cmluZygoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBRSU5HX1RJVExFID0gZ2V0TXlWYXIoJ215Q29sbGVjdGlvbicpLFxuICAgICAgICAgICAgICAgIHR5cGVTaG93ID0gZ2V0TXlWYXIoJ3R5cGVTaG93JywgJycpXG4gICAgICAgICAgICBsZXQgcnVsZXMgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9kYXRhTG9hZD9ydWxlPScgKyBRSU5HX1RJVExFKSgpXG4gICAgICAgICAgICBpZiAodHlwZVNob3cpIHJ1bGVzID0gcnVsZXMuZmlsdGVyKCh2KSA9PiB2LnR5cGUgPT0gdHlwZVNob3cpXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocnVsZXMpXG4gICAgICAgIH0pXG4gICAgfVxufV0pXG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6ImF1dG8iLCJwcmVSdWxlIjoicHV0TXlWYXIoJ215Q29sbGVjdGlvbicsIE1ZX1JVTEUudGl0bGUpO1xucHV0TXlWYXIoJ3JlbW90ZVVybCcsICdhcHDlvbHop4YnKTtcbnB1dE15VmFyKCdzdWJzY3JpcHRpb24nLCdodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQVBQLmpzb24nKTsiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwidGV4dF8xXCIsXCJuYW1lXCI6XCJDbGFzc1RhYlwiLFwicGF0aFwiOlwiQ2xhc3NUYWJcIixcInJ1bGVcIjpcImNvbnN0IENsYXNzVGFiID0gZnVuY3Rpb24oY2xhc3NBcnJheSwgcGFyYW1zKSB7XFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKVxcbiAgICB0aGlzLmFyciA9IGNsYXNzQXJyYXkubWFwKHYgPT4gdGhpcy5pbml0KHYpKVxcbiAgICB0aGlzLnNpZ24gPSAnJCcgKyBRSU5HX1RJVExFICsgJ18nICsgKHRoaXMubmFtZSB8fCAnJykgKyAnXydcXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29sb3IgfHwgJyMxMmI2NjgnXFxuICAgIHRoaXMuYm91bmRhcnkgPSB0aGlzLmJvdW5kYXJ5IHx8ICdibGFua19ibG9jaydcXG59XFxuQ2xhc3NUYWIucHJvdG90eXBlID0ge1xcbiAgICBjb25zdHJ1Y3RvcjogQ2xhc3NUYWIsXFxuICAgIGxvYWQoZWwpIHtcXG4gICAgICAgIGxldCBmb2xkZWQgPSB0aGlzLmZvbGQgJiYgZ2V0VmFyKCdmb2xkXycgKyB0aGlzLnNpZ24sICcnKVxcbiAgICAgICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA+IDEgJiYgdGhpcy5mb2xkKSBlbC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyAoZm9sZGVkID8gJ+KWticgOiAn4pa8JykuZm9udGNvbG9yKCcjMDQ5ZWZmJyksXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWduLCBmb2xkZWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdmb2xkXycgKyBzaWduLCB7ICcnOiAnVCcsICdUJzogJycgfSBbZm9sZGVkXSlcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB0aGlzLnNpZ24sIGZvbGRlZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGxldCBhcnIgPSBmb2xkZWQgPyBbdGhpcy5hcnJbMF1dIDogdGhpcy5hcnJcXG4gICAgICAgIGFyci5mb3JFYWNoKCh2KSA9PiB7XFxuICAgICAgICAgICAgbGV0IHsgaWQsIGNsYXNzX25hbWUsIGNsYXNzX3VybCB9ID0gdixcXG4gICAgICAgICAgICBzZWxlY3RlZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0Q2xhc3MoaWQpKVxcbiAgICAgICAgICAgIGNsYXNzX25hbWUuZm9yRWFjaCgobmFtZSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gY2xhc3NfdXJsW2ldLFxcbiAgICAgICAgICAgICAgICAgICAgbm93ID0gSlNPTi5zdHJpbmdpZnkoeyBuYW1lOiBuYW1lLCB1cmw6IHVybCB9KVxcbiAgICAgICAgICAgICAgICBlbC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWxlY3RlZCA9PSBub3cgPyAn4oCc4oCc4oCd4oCdJyArIG5hbWUuZm9udGNvbG9yKHRoaXMuY29sb3IpLmJvbGQoKSA6IG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkID09IG5vdyA/ICdoaWtlcjovL2VtcHR5JyA6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZ24sIGlkLCBub3cpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoc2lnbiArIGlkLCBub3cpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5zaWduLCBpZCwgbm93KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGVsLnB1c2goeyBjb2xfdHlwZTogdGhpcy5ib3VuZGFyeSB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgaW5pdChjbGFzc09iamVjdCkge1xcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc09iamVjdC5jbGFzc19uYW1lID09ICdzdHJpbmcnKVxcbiAgICAgICAgICAgIGNsYXNzT2JqZWN0LmNsYXNzX25hbWUgPSBjbGFzc09iamVjdC5jbGFzc19uYW1lLnNwbGl0KCcmJylcXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NPYmplY3QuY2xhc3NfdXJsID09ICdzdHJpbmcnKVxcbiAgICAgICAgICAgIGNsYXNzT2JqZWN0LmNsYXNzX3VybCA9IGNsYXNzT2JqZWN0LmNsYXNzX3VybC5zcGxpdCgnJicpLm1hcCgodikgPT4gdi50cmltKCkpXFxuICAgICAgICByZXR1cm4gY2xhc3NPYmplY3RcXG4gICAgfSxcXG4gICAgcHVzaChjbGFzc09iamVjdCkge1xcbiAgICAgICAgdGhpcy5hcnIucHVzaCh0aGlzLmluaXQoY2xhc3NPYmplY3QpKVxcbiAgICB9LFxcbiAgICBnZXRDbGFzcyhpZCkge1xcbiAgICAgICAgbGV0IGRlZmF1bHRDbGFzcyA9IHRoaXMuYXJyLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IGlkKVxcbiAgICAgICAgZGVmYXVsdENsYXNzID0gSlNPTi5zdHJpbmdpZnkoZGVmYXVsdENsYXNzID8ge1xcbiAgICAgICAgICAgIG5hbWU6IGRlZmF1bHRDbGFzcy5jbGFzc19uYW1lWzBdLFxcbiAgICAgICAgICAgIHVybDogZGVmYXVsdENsYXNzLmNsYXNzX3VybFswXVxcbiAgICAgICAgfSA6IHsgbmFtZTogICdjYW5ub3QgZmluZCBpZDogJyArIGlkICsgJyBpbiBjbGFzc1RhYjogJyArIHRoaXMuc2lnbiwgdXJsOiAnJ30pXFxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShnZXRWYXIodGhpcy5zaWduICsgaWQsIGRlZmF1bHRDbGFzcykpXFxuICAgIH0sXFxuICAgIHNldFVybCh1cmwpIHtcXG4gICAgICAgIHJldHVybiB1cmwucmVwbGFjZSgvXFxcXCRcXFxceyhbXn1dKilcXFxcfS9nLCAoXywgaWQpID0+IHRoaXMuZ2V0Q2xhc3MoaWQpLnVybClcXG4gICAgfVxcbn1cXG4vLyDnlJ/miJDlpLTpg6jliIbnsbtcXG5jb25zdCBmeUFsbCA9IFJVTEUudXJsLmluY2x1ZGVzKCdmeUFsbCcpXFxubGV0IHRhYkhlYWRlciA9IFtdXFxuaWYgKFJVTEUuY2xhc3NfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5Y2xhc3MnLFxcbiAgICBjbGFzc19uYW1lOiBSVUxFLmNsYXNzX25hbWUsXFxuICAgIGNsYXNzX3VybDogUlVMRS5jbGFzc191cmxcXG59KVxcbmlmIChSVUxFLmFyZWFfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5YXJlYScsXFxuICAgIGNsYXNzX25hbWU6IFJVTEUuYXJlYV9uYW1lLFxcbiAgICBjbGFzc191cmw6IFJVTEUuYXJlYV91cmxcXG59KVxcbmlmIChSVUxFLnllYXJfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5eWVhcicsXFxuICAgIGNsYXNzX25hbWU6IFJVTEUueWVhcl9uYW1lLFxcbiAgICBjbGFzc191cmw6IFJVTEUueWVhcl91cmxcXG59KVxcbmlmIChSVUxFLnNvcnRfbmFtZSkgdGFiSGVhZGVyLnB1c2goe1xcbiAgICBpZDogZnlBbGwgPyAnZnlBbGwnIDogJ2Z5c29ydCcsXFxuICAgIGNsYXNzX25hbWU6IFJVTEUuc29ydF9uYW1lLFxcbiAgICBjbGFzc191cmw6IFJVTEUuc29ydF91cmxcXG59KVxcbnRhYkhlYWRlciA9IG5ldyBDbGFzc1RhYih0YWJIZWFkZXIsIHsgbmFtZTogUlVMRS50aXRsZSwgZm9sZDogcmVhZEZpbGUoJ3RhYkZvbGQnKSwgfSlcXG5cIn0se1wiY29sX3R5cGVcIjpcImljb25fMl9yb3VuZFwiLFwibmFtZVwiOlwi6K6+572uXCIsXCJwYXRoXCI6XCJDb25maWdcIixcInJ1bGVcIjpcImpzOlxcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJ2NsZWFyTXlWYXIoXFxcInNvcnRGbGFnXFxcIik7cmVmcmVzaFBhZ2UoKScpXFxuc2V0UGFnZVRpdGxlKCfimpkg6L275ZCI6ZuG6K6+572uIOKamScpXFxuY29uc3QgUUlOR19USVRMRSA9IGdldE15VmFyKCdteUNvbGxlY3Rpb24nKSxcXG4gICAgICAgICAgdXJsID0gZ2V0TXlWYXIoJ3JlbW90ZVVybCcpO1xcbmxldCBkYXRhID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvZGF0YUxvYWQ/cnVsZT0nICsgUUlOR19USVRMRSkodHJ1ZSksXFxuICAgIGVsID0gW3tcXG4gICAgICAgIHRpdGxlOiAnPGI+IOa4hemZpOe8k+WtmO+8jOeri+WNs+abtOaWsCA8c21hbGw+IO+8iOWfuuS6jui/nOeoi+S7k+W6k++8jOS4jeimgemikee5geeCueWHu++8iScsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGxldCB1cmwgPSBnZXRNeVZhcigncmVtb3RlVXJsJylcXG4gICAgICAgICAgICBpZih1cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly8nKSB8fCB1cmwuc3RhcnRzV2l0aCgnZmlsZTovLycpKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5LuT5bqT5Li65pys5Zyw5paH5Lu277yM5LiN5Lya6L+b6KGM57yT5a2Y77yM5pys5Yqf6IO95Lmf5peg5pWIJ1xcbiAgICAgICAgICAgIGRlbGV0ZUZpbGUoJ3VwZGF0ZVRpbWUnKVxcbiAgICAgICAgICAgIGJhY2soZmFsc2UpXFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suabtOaWsCdcXG4gICAgICAgIH0pLFxcbiAgICAgICAgaW1nOiAnaGlrZXI6Ly9pbWFnZXMvaWNvbjQnLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH1dLFxcbiAgICB1cGRhdGVJbnRlcnZhbCA9IHJlYWRGaWxlKCd1cGRhdGVJbnRlcnZhbCcpIHx8ICcxJyxcXG4gICAgbmV3V2luZG93ID0gcmVhZEZpbGUoJ25ld1dpbmRvdycpLFxcbiAgICB0YWJGb2xkID0gcmVhZEZpbGUoJ3RhYkZvbGQnKSxcXG4gICAgZGlzYWJsZUN1c3RvbSA9IHJlYWRGaWxlKCdkaXNhYmxlQ3VzdG9tJyksXFxuICAgIGVkaXRNb2RlID0gZ2V0TXlWYXIoJ2VkaXRNb2RlJywgJ+WQr+eUqC/npoHnlKgnKVxcblxcbmVsLnB1c2goe1xcbiAgICB0aXRsZTogJyAg8J+SoSDmm7TmlrDpopHnjoc6ICcgKyAodXBkYXRlSW50ZXJ2YWwgPT0gMCA/ICfmiYvliqgnIDogdXBkYXRlSW50ZXJ2YWwgKyAn5aSpJykgKyAnICAnLFxcbiAgICB1cmw6ICQodXBkYXRlSW50ZXJ2YWwsICfovpPlhaXmm7TmlrDpl7TpmpTvvIjlpKnvvInvvIzkuLow5YiZ5omL5Yqo5pu05pawXFxcXG7mnKzlnLDmlofku7bpk77mjqXml6DmlYgnKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICBzYXZlRmlsZSgndXBkYXRlSW50ZXJ2YWwnLCBpbnB1dClcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG59LCB7XFxuICAgIHRpdGxlOiAnICDwn5alIOeLrOeri+mmlumhtTogJyArIChuZXdXaW5kb3cgPyAn5pivJyA6ICflkKYnKSArICcgICcsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobmV3V2luZG93KSA9PiB7XFxuICAgICAgICBzYXZlRmlsZSgnbmV3V2luZG93JywgbmV3V2luZG93ID8gJycgOiAnMScpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH0sIG5ld1dpbmRvdyksXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG59LCAvKntcXG4gICAgdGl0bGU6ICcgIPCfkqAg5YiG57G75oqY5Y+gOiAnICsgKHRhYkZvbGQgPyAn5pivJyA6ICflkKYnKSArICcgICcsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodGFiRm9sZCkgPT4ge1xcbiAgICAgICAgc2F2ZUZpbGUoJ3RhYkZvbGQnLCB0YWJGb2xkID8gJycgOiAnMScpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH0sIHRhYkZvbGQpLFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxufSwgKi97XFxuICAgIHRpdGxlOiAnICDwn5K8IOWkh+S7veaBouWkjSAgJyxcXG4gICAgdXJsOiAkKFsn5aSH5Lu9JywgJ+aBouWkjSddLCAxKS5zZWxlY3QoKFFJTkdfVElUTEUsIHVwZGF0ZUludGVydmFsLCBuZXdXaW5kb3csIHRhYkZvbGQsIGRpc2FibGVDdXN0b20pID0+IHtcXG4gICAgICAgIGxldCB1cmwgPSBnZXRNeVZhcigncmVtb3RlVXJsJylcXG4gICAgICAgIGlmICghdXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vJykgJiYgIXVybC5zdGFydHNXaXRoKCdmaWxlOi8vJykpXFxuICAgICAgICAgICAgdXJsID0gJ2hpa2VyOi8vZmlsZXMvbGlicy8nICsgbWQ1KHVybCkgKyAnLmpzJ1xcbiAgICAgICAgZWxzZSBpZih1cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly9wYWdlLycpKSB1cmwgPSAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIGlmIChpbnB1dCA9PSAn5aSH5Lu9JykgcmV0dXJuICQoJ2hpa2VyOi8vZmlsZXMvdG1wLycgKyBRSU5HX1RJVExFICsgJ19iYWNrdXAuanNvbicsICfovpPlhaXlpIfku73ot6/lvoQnKVxcbiAgICAgICAgICAgIC5pbnB1dCgodXJsLCB1cGRhdGVJbnRlcnZhbCwgbmV3V2luZG93LCB0YWJGb2xkLCBkaXNhYmxlQ3VzdG9tKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IHJlcXVlc3QodXJsKSxcXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbURhdGEgPSByZWFkRmlsZSgnY3VzdG9tRGF0YScpXFxuICAgICAgICAgICAgICAgIHdyaXRlRmlsZShpbnB1dCwgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSW50ZXJ2YWw6IHVwZGF0ZUludGVydmFsLFxcbiAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93OiBuZXdXaW5kb3csXFxuICAgICAgICAgICAgICAgICAgICB0YWJGb2xkOiB0YWJGb2xkLFxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUN1c3RvbTogZGlzYWJsZUN1c3RvbSxcXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbURhdGE6IGN1c3RvbURhdGEsXFxuICAgICAgICAgICAgICAgICAgICBydWxlczogcnVsZXNcXG4gICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LlpIfku73vvIzms6jmhI/oi6Xku5PlupPkuLrlrZDpobXpnaLliJnkuI3lpIfku70nXFxuICAgICAgICAgICAgfSwgdXJsLCB1cGRhdGVJbnRlcnZhbCwgbmV3V2luZG93LCB0YWJGb2xkLCBkaXNhYmxlQ3VzdG9tKVxcbiAgICAgICAgZWxzZSByZXR1cm4gJCgnaGlrZXI6Ly9maWxlcy90bXAvJyArIFFJTkdfVElUTEUgKyAnX2JhY2t1cC5qc29uJywgJ+i+k+WFpeWkh+S7vei3r+W+hCcpLmlucHV0KCh1cmwpID0+IHtcXG4gICAgICAgICAgICBsZXQgeyB1cGRhdGVJbnRlcnZhbCwgbmV3V2luZG93LCB0YWJGb2xkLCBkaXNhYmxlQ3VzdG9tLCBjdXN0b21EYXRhLCBydWxlcyB9ID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KSlcXG4gICAgICAgICAgICBzYXZlRmlsZSgndXBkYXRlSW50ZXJ2YWwnLCB1cGRhdGVJbnRlcnZhbClcXG4gICAgICAgICAgICBzYXZlRmlsZSgnbmV3V2luZG93JywgbmV3V2luZG93KVxcbiAgICAgICAgICAgIHNhdmVGaWxlKCd0YWJGb2xkJywgdGFiRm9sZClcXG4gICAgICAgICAgICBzYXZlRmlsZSgnZGlzYWJsZUN1c3RvbScsIGRpc2FibGVDdXN0b20pXFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2N1c3RvbURhdGEnLCBjdXN0b21EYXRhKVxcbiAgICAgICAgICAgIGlmKHJ1bGVzKSB3cml0ZUZpbGUodXJsLCBydWxlcylcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suaBouWkje+8jOWmguaenOS4jeaDs+WQjOatpei/nOeoi+S7k+W6k++8jOWPr+S7peiuvue9ruabtOaWsOmikeeOh+S4uuaJi+WKqCdcXG4gICAgICAgIH0sIHVybClcXG4gICAgfSwgUUlOR19USVRMRSwgdXBkYXRlSW50ZXJ2YWwsIG5ld1dpbmRvdywgdGFiRm9sZCwgZGlzYWJsZUN1c3RvbSksXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG59LCB7XFxuICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcIiM2NjY2NjZcXFwiPjxzbWFsbD7nibnliKvpuKPosKLvvIzlsI/nqIvluo/mj5DkvpvogIXvvJpcXFxcbicgK1xcbiAgICAgICAgZGF0YS5yZWR1Y2UoKHNlbGYsIHYpID0+IHYuYXV0aG9yID8gc2VsZi5jb25jYXQodi5hdXRob3Iuc3BsaXQoJyYnKSkgOiBzZWxmLCBbXSlcXG4gICAgICAgIC5maWx0ZXIoKHYsIGksIGFycikgPT4gdiAmJiBhcnIuaW5kZXhPZih2KSA9PSBpKS5qb2luKCfjgIEnKSxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG59KVxcblxcbmVsLnB1c2goeyBjb2xfdHlwZTogJ2xpbmUnIH0sIHtcXG4gICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgJ/Cfk50nLnNtYWxsKCkgKyAnJm5ic3Ag6L275ZCI6ZuG6Ieq5a6a5LmJICZuYnNwJy5ib2xkKCkuZm9udGNvbG9yKCcjNzU3NTc1JykgKyAoZGlzYWJsZUN1c3RvbSA/ICfinYwnIDogJ+KtlScpLnNtYWxsKCksXFxuICAgIHVybDogJChbKGRpc2FibGVDdXN0b20gPyAn5ZCv55SoJyA6ICfnpoHnlKgnKSArICflkIjpm4boh6rlrprkuYknLCAn5riF6Zmk6Ieq5a6a5LmJ5pWw5o2uJ10sIDEpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICBpZiAoaW5wdXQgPT0gJ+a4hemZpOiHquWumuS5ieaVsOaNricpIHtcXG4gICAgICAgICAgICBkZWxldGVGaWxlKCdjdXN0b21EYXRhJylcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+WQr+eUqOWQiOmbhuiHquWumuS5iScpIHtcXG4gICAgICAgICAgICBzYXZlRmlsZSgnZGlzYWJsZUN1c3RvbScsICcnKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBzYXZlRmlsZSgnZGlzYWJsZUN1c3RvbScsICcxJylcXG4gICAgICAgICAgICBpbnB1dCArPSAnXFxcXG7lsI/nqIvluo/lkK/nlKgv56aB55So44CB6YeN5paw5o6S5bqP562J5pON5L2c5Z2H5LiN5Lya5L2T546w5Zyo6aaW6aG15bCP56iL5bqP5YiX6KGo5LitJ1xcbiAgICAgICAgfVxcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5beyJyArIGlucHV0XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfVxcbn0pO1xcbihkaXNhYmxlQ3VzdG9tID8gWyflr7zlhaXmtbfpmJQnXSA6IFsn5ZCv55SoL+emgeeUqCcsICfph43mlrDmjpLluo8nLCAn5pu05pS55Zu+5qCHJywgJ+WvvOWFpea1t+mYlCddKS5mb3JFYWNoKCh2KSA9PiB7XFxuICAgIGVsLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHYgPT0gZWRpdE1vZGUgPyAn4oCc4oCc4oCd4oCdJyArIHYuYm9sZCgpLmZvbnRjb2xvcignIzEyYjY2OCcpIDogdixcXG4gICAgICAgIHVybDogdiA9PSBlZGl0TW9kZSA/ICdoaWtlcjovL2VtcHR5JyA6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHYpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignZWRpdE1vZGUnLCB2KVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0sIHYpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KVxcbn0pO1xcbmlmKGVkaXRNb2RlID09ICflr7zlhaXmtbfpmJQnKSBlbC5wdXNoKHtcXG4gICAgdGl0bGU6ICflhajpg6jlr7zlhaUnLFxcbiAgICB1cmw6ICfmtbfpmJTop4bnlYzvv6Vob21lX3J1bGVfdXJs77+lJyArICdoaWtlcjovL2ZpbGVzL2xpYnMvJyArIG1kNSh1cmwpICsgJy5qcycsXFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgIGV4dHJhOiB7IGxpbmVWaXNpYmxlOiBmYWxzZSB9XFxufSk7XFxuKGRpc2FibGVDdXN0b20gPyBkYXRhIDogSlNPTi5wYXJzZShyZWFkRmlsZSgnY3VzdG9tRGF0YScpIHx8ICdbXScpKS5mb3JFYWNoKCh2LCBpKSA9PiB7XFxuICAgIGxldCBkID0geyB0aXRsZTogdi50aXRsZSwgaW1nOiBkYXRhW2ldLmljb24gfVxcbiAgICBzd2l0Y2ggKGVkaXRNb2RlKSB7XFxuICAgICAgICBjYXNlICflkK/nlKgv56aB55SoJzpcXG4gICAgICAgICAgICBkLnRpdGxlID0gKHYudmlzaWJsZSA/ICfwn5+iICAnIDogJ/CflLQgICcpICsgZC50aXRsZVxcbiAgICAgICAgICAgIGQudXJsID0gJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgcnVsZXMgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdjdXN0b21EYXRhJykgfHwgJ1tdJylcXG4gICAgICAgICAgICAgICAgcnVsZXNbaV0udmlzaWJsZSA9ICFydWxlc1tpXS52aXNpYmxlXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdjdXN0b21EYXRhJywgSlNPTi5zdHJpbmdpZnkocnVsZXMpKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGkpXFxuICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgIGNhc2UgJ+mHjeaWsOaOkuW6jyc6XFxuICAgICAgICAgICAgbGV0IHNvcnRGbGFnID0gcGFyc2VJbnQoZ2V0TXlWYXIoJ3NvcnRGbGFnJywgJy0xJykpXFxuICAgICAgICAgICAgZC50aXRsZSA9IChzb3J0RmxhZyA9PSBpID8gJ/CflIMgICcgOiAnJykgKyBkLnRpdGxlXFxuICAgICAgICAgICAgaWYgKHNvcnRGbGFnID09IC0xKVxcbiAgICAgICAgICAgICAgICBkLnVybCA9ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0RmxhZycsIGkudG9TdHJpbmcoKSlcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+mAieaLqeimgeenu+WKqOWIsOeahOS9jee9ridcXG4gICAgICAgICAgICAgICAgfSwgaSlcXG4gICAgICAgICAgICBlbHNlXFxuICAgICAgICAgICAgICAgIGQudXJsID0gJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgob2xkSW5kZXgsIG5ld0luZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZXMgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdjdXN0b21EYXRhJykgfHwgJ1tdJylcXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzLnNwbGljZShuZXdJbmRleCwgMCwgcnVsZXMuc3BsaWNlKG9sZEluZGV4LCAxKVswXSlcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdjdXN0b21EYXRhJywgSlNPTi5zdHJpbmdpZnkocnVsZXMpKVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnRGbGFnJywgJy0xJylcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9LCBzb3J0RmxhZywgaSlcXG4gICAgICAgICAgICBicmVha1xcbiAgICAgICAgY2FzZSAn5pu05pS55Zu+5qCHJzpcXG4gICAgICAgICAgICBkLnVybCA9ICQodi5pY29uIHx8ICcnLCAn6L6T5YWl5paw5Zu+5qCH5Zyw5Z2A5oiW6aKc6Imy5Luj56CB77yaJykuaW5wdXQoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHJ1bGVzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnY3VzdG9tRGF0YScpIHx8ICdbXScpXFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzW2ldLmljb24gPSBpbnB1dFxcbiAgICAgICAgICAgICAgICBlbHNlXFxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcnVsZXNbaV0uaWNvblxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnY3VzdG9tRGF0YScsIEpTT04uc3RyaW5naWZ5KHJ1bGVzKSlcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBpKVxcbiAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICBjYXNlICflr7zlhaXmtbfpmJQnOlxcbiAgICAgICAgICAgIGQudXJsID0gJ3J1bGU6Ly8nICsgYmFzZTY0RW5jb2RlKEpTT04uc3RyaW5naWZ5KGRhdGFbaV0pKVxcbiAgICAgICAgICAgIGJyZWFrXFxuICAgIH1cXG4gICAgZWwucHVzaChkKVxcbn0pXFxuc2V0UmVzdWx0KGVsKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2i6L295YWlXCIsXCJwYXRoXCI6XCJmcmFtZUxvYWRcIixcInJ1bGVcIjpcImpzOlxcbmNvbnN0IFFJTkdfVElUTEUgPSBnZXRNeVZhcignbXlDb2xsZWN0aW9uJylcXG5sZXQgbXlDb2xsZWN0aW9uX2VsID0gW10sXFxuICAgIHsgUlVMRSwgaXNJbmRleCwgcGFnZVRpdGxlIH0gPSBNWV9QQVJBTVMsXFxuICAgIHRoaXNSVUxFID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvZGF0YUxvYWQ/cnVsZT0nICsgUUlOR19USVRMRSkoKS5maW5kKCh2KSA9PiB2LnRpdGxlID09IFJVTEUudGl0bGUpXFxuaWYgKGlzSW5kZXgpIHtcXG4gICAgUlVMRSA9IHRoaXNSVUxFXFxufSBlbHNlIHtcXG4gICAgUlVMRS5wYWdlcyA9IHRoaXNSVUxFLnBhZ2VzXFxufVxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3ByZUZ1bmM/cnVsZT0nICsgUUlOR19USVRMRSkpLnJ1bGUpXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvdXJsUGFyc2U/cnVsZT0nICsgUUlOR19USVRMRSkpLnJ1bGUpXFxuXFxuaWYgKGlzSW5kZXgpIHtcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgLy8g5Yqg6L29Q2xhc3NUYWLnu4Tku7ZcXG4gICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL0NsYXNzVGFiP3J1bGU9JyArIFFJTkdfVElUTEUpKS5ydWxlKVxcbiAgICAgICAgdGFiSGVhZGVyLmxvYWQobXlDb2xsZWN0aW9uX2VsKVxcbiAgICAgICAgaWYgKFJVTEUuc2VhcmNoX3VybCkgbXlDb2xsZWN0aW9uX2VsLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5pCc57SiXFxcIixcXG4gICAgICAgICAgICBkZXNjOiBcXFwi5pCc5L2g5oOz6KaB55qELi4uXFxcIixcXG4gICAgICAgICAgICB1cmw6ICdcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiK2lucHV0JyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBydWxlczogJC50b1N0cmluZygoUUlOR19USVRMRSwgdGl0bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBydWxlcyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2RhdGFMb2FkP3J1bGU9JyArIFFJTkdfVElUTEUpKClcXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW3J1bGVzLmZpbmQoKHYpID0+IHYudGl0bGUgPT0gdGl0bGUpXVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJ1bGVzKVxcbiAgICAgICAgICAgICAgICB9LCBRSU5HX1RJVExFLCBSVUxFLnRpdGxlKSxcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcignc2VhcmNoS2V5JywgJycpLFxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCdzZWFyY2hLZXknLGlucHV0KVxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICAvLyDlpITnkIZNWV9SVUxFXFxuICAgIE1ZX1JVTEUudXJsID0gUlVMRS51cmxcXG4gICAgTVlfUlVMRS5jb2xfdHlwZSA9IFJVTEUuY29sX3R5cGVcXG4gICAgTVlfUlVMRS5kZXRhaWxfY29sX3R5cGUgPSBSVUxFLmRldGFpbF9jb2xfdHlwZVxcbiAgICBNWV9SVUxFLmZpbmRfcnVsZSA9IFJVTEUuZmluZF9ydWxlXFxuICAgIE1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcbiAgICBNWV9SVUxFLnBhcmFtcyA9IHt9XFxufSBlbHNlIHtcXG4gICAgTVlfUlVMRS51cmwgPSBNWV9QQVJBTVMudXJsXFxuICAgIE1ZX1JVTEUuY29sX3R5cGUgPSBSVUxFLmRldGFpbF9jb2xfdHlwZVxcbiAgICBNWV9SVUxFLmZpbmRfcnVsZSA9IFJVTEUuZGV0YWlsX2ZpbmRfcnVsZVxcbiAgICBNWV9SVUxFLnBhcmFtcyA9IFJVTEUucGFyYW1zXFxufVxcbk1ZX1JVTEUucGFnZXMgPSBSVUxFLnBhZ2VzXFxuTVlfUlVMRS5wYWdlTGlzdCA9IEpTT04ucGFyc2UoTVlfUlVMRS5wYWdlcyB8fCAnW10nKVxcbk1ZX1JVTEUudGl0bGUgPSBSVUxFLnRpdGxlXFxuXFxuaWYgKCFpc0luZGV4KSB7XFxuICAgIGlmIChwYWdlVGl0bGUpIHNldFBhZ2VUaXRsZShwYWdlVGl0bGUpXFxuICAgIHNldExhc3RDaGFwdGVyUnVsZSh0aGlzUlVMRS5sYXN0X2NoYXB0ZXJfcnVsZSlcXG4gICAgTVlfUEFSQU1TID0gTVlfUlVMRS5wYXJhbXNcXG59XFxuLy8g6aKE5aSE55CG5bm25Yid5aeL5YyWY29uZmlnXFxuaWYgKGlzSW5kZXggJiYgTVlfUEFHRSA9PSAxKSBldmFsKHRoaXNSVUxFLnByZVJ1bGUpXFxubGV0IF9jZmcgPSBnZXRNeVZhcignaW5pdENvbmZpZycsICd7fScpXFxuaWYgKF9jZmcgJiYgX2NmZy5sZW5ndGggPiAwKSB7XFxuICAgIGNvbmZpZyA9IEpTT04ucGFyc2UoX2NmZylcXG59XFxuXFxuLy8g5q2j5paH6Kej5p6Q6YCa55So5Y+Y6YePXFxubGV0IGFzc2lnbkxhenlSdWxlID0gJC50b1N0cmluZygoUUlOR19USVRMRSwgdGl0bGUsIHVybCkgPT4ge1xcbiAgICBsZXQgUlVMRSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFMb2FkP3J1bGU9XFxcIiArIFFJTkdfVElUTEUpKCkuZmluZCgodikgPT4gdi50aXRsZSA9PSB0aXRsZSlcXG4gICAgcmV0dXJuIHsgdGl0bGU6dGl0bGUsIHVybDogdXJsLCBwYWdlczogUlVMRS5wYWdlcywgcGFnZUxpc3Q6IEpTT04ucGFyc2UoUlVMRS5wYWdlcyB8fCAnW10nKSB9XFxufSwgUUlOR19USVRMRSwgTVlfUlVMRS50aXRsZSwgTVlfUlVMRS51cmwpXFxuZnVuY3Rpb24gZ2VuTXlSdWxlKCkge1xcbiAgICBsZXQgcnVsZSA9IE9iamVjdC5hc3NpZ24oe30sIE1ZX1JVTEUpXFxuICAgIGRlbGV0ZSBydWxlLmxhc3RfY2hhcHRlcl9ydWxlXFxuICAgIGRlbGV0ZSBydWxlLnByZVJ1bGVcXG4gICAgZGVsZXRlIHJ1bGUucGFnZUxpc3RcXG4gICAgZGVsZXRlIHJ1bGUucGFnZXNcXG4gICAgcmV0dXJuIHJ1bGVcXG59XFxuZnVuY3Rpb24gcnVuQ29kZShydWxlKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICBsZXQgW2lucHV0LCBjb2RlXSA9IHJ1bGUuc3BsaXQoJy5qczonKVxcbiAgICAgICAgcmV0dXJuIGNvZGUgPyBldmFsKGNvZGUpIDogcnVsZVxcbiAgICB9IGNhdGNoIChlKSB7IHJldHVybiBydWxlIH1cXG59XFxuZnVuY3Rpb24gZ2VuRXhVcmwodXJsKSB7XFxuICAgIHVybCA9IHVybC5zcGxpdCgnOycpXFxuICAgIHJldHVybiB1cmwuc2hpZnQoKSArICc7JyArIHBhcmFtSGFuZGxlKHVybCwgdGhpc1JVTEUudWEsIE1ZX1JVTEUudXJsKVxcbn1cXG4vLyDmraPmlofop6PmnpBcXG5pZiAoTVlfUlVMRS5maW5kX3J1bGUuc3RhcnRzV2l0aCgnanM6JykpIHtcXG4gICAgc2V0UmVzdWx0ID0gZnVuY3Rpb24oZWwsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpIHtcXG4gICAgICAgIHBhcmFtMSA9IENBTExCQUNLX0tFWVxcbiAgICAgICAgcGFyYW0yID0gTVlfUlVMRVxcbiAgICAgICAgcGFyYW0zID0gTVlfVFlQRVxcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWwuZGF0YSkpIGVsID0gZWwuZGF0YVxcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobXlDb2xsZWN0aW9uX2VsLCBlbC5tYXAoKHYpID0+IHtcXG4gICAgICAgICAgICBpZighdi5leHRyYSkgdi5leHRyYSA9IHt9XFxuICAgICAgICAgICAgdi5jb2xfdHlwZSA9IHYuY29sX3R5cGUgfHwgTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIGxldCBNWV9fUlVMRSA9IE9iamVjdC5hc3NpZ24oZ2VuTXlSdWxlKCksIHsgcGFyYW1zOiB2LmV4dHJhIH0pXFxuXFxuICAgICAgICAgICAgaWYgKCF2LnVybCB8fCBbJ3J1bGUnLCAncGljcycsICd0b2FzdCcsICdpbnB1dCcsICdjb25maXJtJywgJ2NvcHknLCAnZWRpdEZpbGUnLCAneDUnLCAneDVXZWJWaWV3JywgJ3g1UGxheScsICd3ZWInLCAnc2VsZWN0JywgJ3g1UnVsZScsICd3ZWJSdWxlJywgJ2Rvd25sb2FkJywgJ3NoYXJlJ10uZmluZCgodnYpID0+IHYudXJsLnN0YXJ0c1dpdGgodnYgKyAnOi8vJykpIHx8IFsneDVfd2Vidmlld19zaW5nbGUnLCAnaW5wdXQnXS5maW5kKCh2dikgPT4gdi5jb2xfdHlwZSA9PSB2dikpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAcnVsZT0nKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgW18sIHVybCwgcnVsZV0gPSB2LnVybC5tYXRjaCgvXihbXFxcXHNcXFxcU10qPylAcnVsZT0oW1xcXFxzXFxcXFNdKikkLylcXG4gICAgICAgICAgICAgICAgdi51cmwgPSB1cmxcXG4gICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSA9IHJ1bGVcXG4gICAgICAgICAgICAgICAgTVlfX1JVTEUuZGV0YWlsX2NvbF90eXBlID0gTVlfUlVMRS5jb2xfdHlwZVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly9wYWdlLycpKSB7XFxuICAgICAgICAgICAgICAgIGlmICh2LnVybC5pbmNsdWRlcygncnVsZT0nKSB8fCB2LmV4dHJhLnJ1bGUpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgICAgICBsZXQgW18sIHBhdGgsIGZsYWcsIHBhcmFtc10gPSB2LnVybC5tYXRjaCgvXmhpa2VyOlxcXFwvXFxcXC9wYWdlXFxcXC8oLis/KSgjLio/KT8oPzpcXFxcPyguKikpPyQvKSxcXG4gICAgICAgICAgICAgICAgICAgIHN1YlBhZ2UgPSBNWV9SVUxFLnBhZ2VMaXN0LmZpbmQoKHYpID0+IHYucGF0aCA9PSBwYXRoKSxcXG4gICAgICAgICAgICAgICAgICAgIHN1YlVybCA9IChwYXJhbXMgfHwgJycpLnNwbGl0KCcmJykuZmluZCgodikgPT4gdi5zdGFydHNXaXRoKCd1cmw9JykpXFxuICAgICAgICAgICAgICAgIHYudXJsID0gKHN1YlVybCA/IHN1YlVybC5zbGljZSg0KS5yZXBsYWNlKC/vvJ/vvJ8vZywgJz8nKS5yZXBsYWNlKC/vvIbvvIYvZywgJyYnKSA6ICh2LmV4dHJhIHx8IHt9KS51cmwpIHx8ICdoaWtlcjovL2VtcHR5JyArIGZsYWcgKyAnPycgKyAocGFyYW1zIHx8ICcnKVxcbiAgICAgICAgICAgICAgICBNWV9fUlVMRS5kZXRhaWxfZmluZF9ydWxlID0gc3ViUGFnZS5ydWxlXFxuICAgICAgICAgICAgICAgIE1ZX19SVUxFLmRldGFpbF9jb2xfdHlwZSA9IHN1YlBhZ2UuY29sX3R5cGVcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudXJsLmluY2x1ZGVzKCdAbGF6eVJ1bGU9JykpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHJlSW5kZXggPSB2LnVybC5pbmRleE9mKCcuanM6JylcXG4gICAgICAgICAgICAgICAgaWYgKHJlSW5kZXggPj0gMCkgdi51cmwgPSB2LnVybC5zbGljZSgwLCByZUluZGV4KSArICcuanM6XFxcXG5pZihNWV9SVUxFKU9iamVjdC5hc3NpZ24oTVlfUlVMRSwgJyArIGFzc2lnbkxhenlSdWxlICsgJyk7JyArIHYudXJsLnNsaWNlKHJlSW5kZXggKyA0KVxcbiAgICAgICAgICAgICAgICByZXR1cm4gdlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbmRleCkge1xcbiAgICAgICAgICAgICAgICBpZiAoIU1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSB8fCAvaGlrZXI6XFxcXC9cXFxcLyg/IWVtcHR5LiskKS8udGVzdCh2LnVybCkpIHJldHVybiB2XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdi5leHRyYSA9IE9iamVjdC5hc3NpZ24oe30sIHYuZXh0cmEsIHtcXG4gICAgICAgICAgICAgICAgdXJsOiBnZW5FeFVybCh2LnVybCksXFxuICAgICAgICAgICAgICAgIFJVTEU6IE1ZX19SVUxFLFxcbiAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGlzSW5kZXggJiYgdi50aXRsZVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgdi51cmwgPSAnaGlrZXI6Ly9wYWdlL2ZyYW1lTG9hZD9ydWxlPScgKyBRSU5HX1RJVExFXFxuICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgIH0pKVxcbiAgICAgICAgbWV0aG9kX3NldFJlc3VsdC5pbnZva2UoamF2YUNvbnRleHQsIG15Q29sbGVjdGlvbl9lbCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMylcXG4gICAgfVxcbiAgICBzZXRIb21lUmVzdWx0ID0gc2V0UmVzdWx0XFxuICAgIHNldFNlYXJjaFJlc3VsdCA9IHNldFJlc3VsdFxcblxcbiAgICBldmFsKE1ZX1JVTEUuZmluZF9ydWxlLnNsaWNlKDMpKVxcbn0gZWxzZSB7XFxuICAgIGxldCBbXywgZmluZFJ1bGUsIGRldGFpbEZpbmRSdWxlXSA9IE1ZX1JVTEUuZmluZF9ydWxlLm1hdGNoKC9eKFtcXFxcc1xcXFxTXSo/KSg/Oj09PihbXFxcXHNcXFxcU10qKSk/JC8pXFxuICAgIGZpbmRSdWxlID0gZmluZFJ1bGUuc3BsaXQoJzsnKVxcbiAgICBwYXJzZURvbUZvckFycmF5KGdldFJlc0NvZGUoKSwgZmluZFJ1bGUuc2hpZnQoKSkuZm9yRWFjaCgoZGF0YSkgPT4ge1xcbiAgICAgICAgbGV0IFt0aXRsZSwgaW1nLCBkZXNjLCB1cmxdID0gZmluZFJ1bGUubWFwKCh2LCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSAnKicpIHJldHVybiAnJ1xcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB2ID0gKGkgPT0gMSB8fCBpID09IDMpID9cXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZURvbShkYXRhLCB2KSA6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEb21Gb3JIdG1sKGRhdGEsIHYpXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAzKSB2ID0gcnVuQ29kZSh2KVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gJycgfVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIHJlcyA9IHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLCB1cmw6IHVybCxcXG4gICAgICAgICAgICAgICAgZGVzYzogZGVzYywgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBNWV9SVUxFLmNvbF90eXBlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgaWYgKHJlcy51cmwpIHtcXG4gICAgICAgICAgICBpZiAocmVzLnVybC5pbmNsdWRlcygnQGxhenlSdWxlPScpKSB7XFxuICAgICAgICAgICAgICAgIGxldCByZUluZGV4ID0gcmVzLnVybC5pbmRleE9mKCcuanM6JylcXG4gICAgICAgICAgICAgICAgaWYgKHJlSW5kZXggPj0gMCkgcmVzLnVybCA9IHJlcy51cmwuc2xpY2UoMCwgcmVJbmRleCkgKyAnLmpzOlxcXFxuaWYoTVlfUlVMRSlPYmplY3QuYXNzaWduKE1ZX1JVTEUsICcgKyBhc3NpZ25MYXp5UnVsZSArICcpOycgKyByZXMudXJsLnNsaWNlKHJlSW5kZXggKyA0KVxcbiAgICAgICAgICAgIH0gZWxzZSAgaWYgKGRldGFpbEZpbmRSdWxlKSB7XFxuICAgICAgICAgICAgICAgIHJlcy5leHRyYSA9IHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZ2VuRXhVcmwodXJsKSxcXG4gICAgICAgICAgICAgICAgICAgIFJVTEU6IE9iamVjdC5hc3NpZ24oZ2VuTXlSdWxlKCksIHsgZGV0YWlsX2ZpbmRfcnVsZTogZGV0YWlsRmluZFJ1bGUgfSksXFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGlzSW5kZXggJiYgdGl0bGVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXMudXJsID0gJ2hpa2VyOi8vcGFnZS9mcmFtZUxvYWQ/cnVsZT0nICsgUUlOR19USVRMRVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTVlfUlVMRS5kZXRhaWxfZmluZF9ydWxlKSB7XFxuICAgICAgICAgICAgICAgIHJlcy5leHRyYSA9IHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZ2VuRXhVcmwodXJsKSxcXG4gICAgICAgICAgICAgICAgICAgIFJVTEU6IGdlbk15UnVsZSgpLFxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpc0luZGV4ICYmIHRpdGxlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmVzLnVybCA9ICdoaWtlcjovL3BhZ2UvZnJhbWVMb2FkP3J1bGU9JyArIFFJTkdfVElUTEVcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBteUNvbGxlY3Rpb25fZWwucHVzaChyZXMpXFxuICAgIH0pXFxuICAgIHNldFJlc3VsdChteUNvbGxlY3Rpb25fZWwpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pWw5o2u6L295YWlXCIsXCJwYXRoXCI6XCJkYXRhTG9hZFwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24oc2hvd0FsbCkge1xcbiAgICBsZXQgdXJsID0gZ2V0TXlWYXIoJ3JlbW90ZVVybCcpLFxcbiAgICAgICAgaW50ZXJ2YWwgPSBwYXJzZUludChyZWFkRmlsZSgndXBkYXRlSW50ZXJ2YWwnKSB8fCAnMScpLFxcbiAgICAgICAgdGltZSA9IHBhcnNlSW50KHJlYWRGaWxlKCd1cGRhdGVUaW1lJykpIHx8IDAsXFxuICAgICAgICBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcXG4gICAgICAgIGRhdGEgPSBbXTtcXG4gICAgaWYgKHRpbWUgPT0gMCB8fCBpbnRlcnZhbCA+IDAgJiYgbm93IC0gdGltZSA+IDEwMDAgKiA2MCAqIDYwICogMjQgKiBpbnRlcnZhbCkge1xcbiAgICAgICAgLy8g6I635Y+W6L+c56iL5pWw5o2uXFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGRhdGEgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jcmVhdG9yXFxcIik7XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICAgICAgaWYoZGF0YS5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL2xpYnMvJyArIG1kNSh1cmwpICsgJy5qcycpIHx8ICdbXScpXFxuICAgICAgICAgICAgbG9nKCfmsqHmnInojrflj5bliLDmm7TmlrDmlbDmja4nKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvbGlicy8nICsgbWQ1KHVybCkgKyAnLmpzJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xcbiAgICAgICAgICAgIHNhdmVGaWxlKCd1cGRhdGVUaW1lJywgbm93LnRvU3RyaW5nKCkpXFxuICAgICAgICAgICAgbG9nKCfmm7TmlrDmlbDmja7lt7LlhpnlhaXmnKzlnLAnKVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvbGlicy8nICsgbWQ1KHVybCkgKyAnLmpzJykgfHwgJ1tdJylcXG4gICAgfVxcbiAgICBcXG4gICAgLy9kYXRhID0gZGF0YS5maWx0ZXIoKHYpID0+IHsgcmV0dXJuIHYudGl0bGUgIT0gZ2V0TXlWYXIoJ215Q29sbGVjdGlvbicpICYmICEodi5hdXRob3IgfHwgJycpLmluY2x1ZGVzKCfovbvlkIjpm4bnlJ/miJDlmagnKSB9KVxcbiAgICAgICAgaWYgKHJlYWRGaWxlKCdkaXNhYmxlQ3VzdG9tJykpIHJldHVybiBkYXRhXFxuICAgICAgICBlbHNlIHsgLy8g5YaZ5YWl6Ieq5a6a5LmJ5pWw5o2uXFxuICAgICAgICBsZXQgY3VzdG9tRGF0YSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2N1c3RvbURhdGEnKSB8fCAnW10nKSxcXG4gICAgICAgICAgICByZXdyaXRlRGF0YSA9IFtdXFxuICAgICAgICBjdXN0b21EYXRhID0gY3VzdG9tRGF0YS5yZWR1Y2UoKHNlbGYsIHYpID0+IHtcXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBkYXRhLmZpbmRJbmRleCgodnYpID0+IHYudGl0bGUgPT0gdnYudGl0bGUpXFxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcXG4gICAgICAgICAgICAgICAgc2VsZi5wdXNoKHYpXFxuICAgICAgICAgICAgICAgIGxldCBydWxlID0gZGF0YS5zcGxpY2UoaW5kZXgsIDEpWzBdXFxuICAgICAgICAgICAgICAgIGlmIChzaG93QWxsIHx8IHYudmlzaWJsZSlcXG4gICAgICAgICAgICAgICAgICAgIHJld3JpdGVEYXRhLnB1c2goT2JqZWN0LmFzc2lnbihydWxlLCB2KSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHNlbGZcXG4gICAgICAgIH0sIFtdKVxcbiAgICAgICAgZGF0YS5mb3JFYWNoKCh2KSA9PiBjdXN0b21EYXRhLnB1c2goeyB0aXRsZTogdi50aXRsZSwgdmlzaWJsZTogdHJ1ZSB9KSlcXG4gICAgICAgIHNhdmVGaWxlKCdjdXN0b21EYXRhJywgSlNPTi5zdHJpbmdpZnkoY3VzdG9tRGF0YSkpXFxuICAgICAgICByZXR1cm4gcmV3cml0ZURhdGEuY29uY2F0KGRhdGEpXFxuICAgIH1cXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlh73mlbDph43lhplcIixcInBhdGhcIjpcInByZUZ1bmNcIixcInJ1bGVcIjpcIi8vIOmYsuatonJlcXVpcmXlpJrmrKHov5DooYxcXG5sZXQgckNhY2hlID0ge31cXG5yZXF1aXJlID0gZnVuY3Rpb24ocGFyYW0wLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0zLCBwYXJhbTQpIHtcXG4gICAgaWYgKCFwYXJhbTAgfHwgckNhY2hlW3BhcmFtMF0gIT0gbnVsbCkge1xcbiAgICAgICAgcmV0dXJuXFxuICAgIH1cXG4gICAgckNhY2hlW3BhcmFtMF0gPSAxXFxuICAgIHBhcmFtMiA9IHBhcmFtMiB8fCAwXFxuICAgIHBhcmFtMyA9IE1ZX1RJQ0tFVFxcbiAgICBwYXJhbTQgPSBldmFsXFxuICAgIHJldHVybiBtZXRob2RfcmVxdWlyZS5pbnZva2UoamF2YUNvbnRleHQsIHBhcmFtMCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMywgcGFyYW00KVxcbn1cXG5yZXF1aXJlQ2FjaGUgPSBmdW5jdGlvbihwYXJhbTAsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMsIHBhcmFtNCwgcGFyYW01KSB7XFxuICAgIGlmICghcGFyYW0wIHx8IHJDYWNoZVtwYXJhbTBdICE9IG51bGwpIHtcXG4gICAgICAgIHJldHVyblxcbiAgICB9XFxuICAgIHJDYWNoZVtwYXJhbTBdID0gMVxcbiAgICBwYXJhbTMgPSBwYXJhbTMgfHwgMFxcbiAgICBwYXJhbTQgPSBNWV9USUNLRVRcXG4gICAgcGFyYW01ID0gZXZhbFxcbiAgICByZXR1cm4gbWV0aG9kX3JlcXVpcmVDYWNoZS5pbnZva2UoamF2YUNvbnRleHQsIHBhcmFtMCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMywgcGFyYW00LCBwYXJhbTUpXFxufVxcbnJjID0gcmVxdWlyZUNhY2hlXFxuXFxuLy8g5pyA5paw56ug6IqC6KeE5YiZ5rOo5YWl6aKE5aSE55CG5Luj56CBXFxuc2V0TGFzdENoYXB0ZXJSdWxlID0gZnVuY3Rpb24ocGFyYW0wKSB7XFxuICAgIGlmICghcGFyYW0wKSByZXR1cm5cXG4gICAgaWYgKHBhcmFtMC5zdGFydHNXaXRoKFxcXCJqczpcXFwiKSAmJiB0aGlzUlVMRS5wcmVSdWxlKSB7XFxuICAgICAgICBwYXJhbTAgPSAnanM6XFxcXG50cnl7ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcHJlRnVuYz9ydWxlPScgKyBRSU5HX1RJVExFICsgJ1xcXCIpKS5ydWxlKTtcXFxcXFxuICAgICAgICAgICAgZXZhbChiYXNlNjREZWNvZGUoXFxcIicgKyBiYXNlNjRFbmNvZGUodGhpc1JVTEUucHJlUnVsZSkgKyAnXFxcIikpO1xcXFxcXG4gICAgICAgICAgICBsZXQgX2NmZyA9IGdldE15VmFyKFxcXCJpbml0Q29uZmlnXFxcIiwgXFxcInt9XFxcIik7XFxcXFxcbiAgICAgICAgICAgIGlmIChfY2ZnICYmIF9jZmcubGVuZ3RoPjApIHtjb25maWcgPSBKU09OLnBhcnNlKF9jZmcpfX1jYXRjaChlKXtsb2coZS5tZXNzYWdlKX1cXFxcbjsnICtcXG4gICAgICAgICAgICBwYXJhbTAuc2xpY2UoMylcXG4gICAgfVxcbiAgICBtZXRob2Rfc2V0TGFzdENoYXB0ZXJSdWxlLmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wKTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpk77mjqXlpITnkIZcIixcInBhdGhcIjpcInVybFBhcnNlXCIsXCJydWxlXCI6XCIvLyDpppbpobXpk77mjqXmm7/mjaLliIbnsbtcXG5mdW5jdGlvbiBpbmRleFVybChwYXJhbSkge1xcbiAgICBmdW5jdGlvbiBydW5Db2RlKHJ1bGUpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgbGV0IFtpbnB1dCwgY29kZV0gPSBydWxlLnNwbGl0KCcuanM6JylcXG4gICAgICAgICAgICByZXR1cm4gY29kZSA/IGV2YWwoY29kZSkgOiBydWxlXFxuICAgICAgICB9IGNhdGNoIChlKSB7IHJldHVybiBydWxlIH1cXG4gICAgfVxcbiAgICBsZXQgeyBSVUxFLCBwYWdlTnVtLCBRSU5HX1RJVExFIH0gPSBKU09OLnBhcnNlKHBhcmFtLnNwbGl0KCcjIyMnKVsxXSlcXG4gICAgUlVMRSA9IEpTT04ucGFyc2UoYmFzZTY0RGVjb2RlKFJVTEUpKVxcbiAgICBwYWdlTnVtID0gcGFyc2VJbnQocGFnZU51bSlcXG4gICAgbGV0IHVybCA9IFJVTEUudXJsXFxuXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL0NsYXNzVGFiP3J1bGU9JyArIFFJTkdfVElUTEUpKS5ydWxlKVxcbiAgICB1cmwgPSB0YWJIZWFkZXIuc2V0VXJsKGZ5QWxsID8gdXJsLnJlcGxhY2UoL2Z5QWxsL2csICckJHtmeUFsbH0nKSA6IHVybC5yZXBsYWNlKC9meShjbGFzc3xhcmVhfHllYXJ8c29ydCkvZywgJyQke2Z5JDF9JykpXFxuICAgIHVybCA9IHVybC5yZXBsYWNlKC9meXBhZ2UoPzpAKC0/XFxcXGQrKUApPyg/OlxcXFwqKFxcXFxkKylAKT8vZywgKF8sIHN0YXJ0LCBzcGFjZSkgPT4gcGFyc2VJbnQoc3RhcnQgfHwgMCkgKyAxICsgKHBhZ2VOdW0gLSAxKSAqIHBhcnNlSW50KHNwYWNlIHx8IDEpKVxcbiAgICB1cmwgPSAvXihbXFxcXHNcXFxcU10qPykoPzpcXFxcW2ZpcnN0UGFnZT0oW1xcXFxzXFxcXFNdKj8pXFxcXF0pPyg/OihcXFxcLmpzOltcXFxcc1xcXFxTXSo/KSk/JC8uZXhlYyh1cmwpXFxuICAgIGlmIChwYWdlTnVtID09IDEgJiYgdXJsWzJdKSB1cmxbMV0gPSB1cmxbMl1cXG4gICAgaWYgKHVybFszXSAmJiAhdXJsWzFdLmluY2x1ZGVzKCcuanM6JykpIHVybFsxXSArPSB1cmxbM11cXG4gICAgcmV0dXJuIHJ1bkNvZGUodXJsWzFdKVxcbn1cXG4vLyDpk77mjqXlj4LmlbDlpITnkIZcXG5mdW5jdGlvbiBwYXJhbUhhbmRsZSh1cmxQYXJhbSwgdWEsIHVybFRtcCkge1xcbiAgICBsZXQgY2hhcnNldCwgVXNlckFnZW50XFxuICAgIHRyeSB7IC8vIOmTvuaOpeeahOe8lueggeWSjHVh5bqU6K+l5piv6aaW5YWI57un5om/6aaW6aG16ZO+5o6lXFxuICAgICAgICBbLCAsIGNoYXJzZXQsIFVzZXJBZ2VudF0gPSB1cmxUbXAuc3BsaXQoJzsnKVxcbiAgICAgICAgVXNlckFnZW50ID0gVXNlckFnZW50Lm1hdGNoKC9eeyguKil9JC8pWzFdLnNwbGl0KCcmJicpLmZpbmQoKHYpID0+IHYuc3RhcnRzV2l0aCgnVXNlci1BZ2VudEAnKSlcXG4gICAgfSBjYXRjaCAoZSkge31cXG4gICAgdXJsUGFyYW1bMF0gPSB1cmxQYXJhbVswXSB8fCAnR0VUJ1xcbiAgICB1cmxQYXJhbVsxXSA9IHVybFBhcmFtWzFdIHx8IGNoYXJzZXQgfHwgJ1VURi04J1xcbiAgICB0cnkge1xcbiAgICAgICAgdXJsUGFyYW1bMl0gPSB1cmxQYXJhbVsyXS5tYXRjaCgvXnsoLiopfSQvKVsxXS5zcGxpdCgnJiYnKVxcbiAgICB9IGNhdGNoIChlKSB7IHVybFBhcmFtWzJdID0gW10gfVxcbiAgICAvLyDmt7vliqDlhajlsYBVQVxcbiAgICBpZiAoIXVybFBhcmFtWzJdLnNvbWUoKHYpID0+IHYuc3RhcnRzV2l0aCgnVXNlci1BZ2VudEAnKSkpIHtcXG4gICAgICAgIGlmIChVc2VyQWdlbnQpIHVybFBhcmFtWzJdLnB1c2goVXNlckFnZW50KVxcbiAgICAgICAgZWxzZSBpZiAodWEgPT0gJ3BjJylcXG4gICAgICAgICAgICB1cmxQYXJhbVsyXS5wdXNoKCdVc2VyLUFnZW50QCcgKyBQQ19VQS5yZXBsYWNlKC87L2csICfvvJvvvJsnKS5yZXBsYWNlKC9cXFxcPy8sICfvvJ/vvJ8nKSlcXG4gICAgICAgIGVsc2UgaWYgKHVhID09ICdtb2JpbGUnKVxcbiAgICAgICAgICAgIHVybFBhcmFtWzJdLnB1c2goJ1VzZXItQWdlbnRAJyArIE1PQklMRV9VQS5yZXBsYWNlKC87L2csICfvvJvvvJsnKS5yZXBsYWNlKC9cXFxcPy8sICfvvJ/vvJ8nKSlcXG4gICAgfVxcbiAgICB1cmxQYXJhbVsyXSA9ICd7JyArIHVybFBhcmFtWzJdLmpvaW4oJyYmJykgKyAnfSdcXG4gICAgcmV0dXJuIHVybFBhcmFtLmpvaW4oJzsnKVxcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueUn+aIkOinhOWImembhlwiLFwicGF0aFwiOlwiY3JlYXRvclwiLFwicnVsZVwiOlwibGV0IGFwcGpzb24gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcHBKc29uJyk7XFxuXFxuZnVuY3Rpb24gcmFuZG9tU29ydDMoYXJyKSB7XFxuICAgIC8qYXJyLnNvcnQoZnVuY3Rpb24oKSB7XFxuICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAtIDAuNTtcXG4gICAgfSk7Ki9cXG4gICAgcmV0dXJuIGFycjtcXG59XFxuXFxubGV0IGFwcGNvbnRzID0gYXBwanNvbi5kYXRhLFxcbiAgICBydWxlcyA9IFtdLFxcbiAgICB0eXBlcyA9IHsgXFxcIlxcXCI6IFxcXCLlhajpg6hcXFwiIH07XFxuZm9yIChsZXQgaSA9IDA7IGkgPCBhcHBjb250cy5sZW5ndGg7IGkrKykge1xcbiAgICBsZXQgYXBwbGlzdCA9IHJhbmRvbVNvcnQzKGFwcGNvbnRzW2ldLmxpc3QpLFxcbiAgICAgICAgYXBwdHlwZSA9IGFwcGNvbnRzW2ldLnRpdGxlIC8qICsgYXBwbGlzdC5sZW5ndGgqLyA7XFxuICAgIHR5cGVzW2FwcHR5cGVdID0gYXBwdHlwZTtcXG4gICAgaWYgKGFwcHR5cGUuaW5jbHVkZXMoXFxcIuS4quS6uuaUtumbhlxcXCIpKSBjb250aW51ZTtcXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBhcHBsaXN0Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICBsZXQgYXBwdGl0bGUgPSBhcHBsaXN0W2pdLnRpdGxlLFxcbiAgICAgICAgICAgIGFwcGljb24gPSBhcHBsaXN0W2pdLmltZyxcXG4gICAgICAgICAgICBhcHBVcmwgPSBhcHBsaXN0W2pdLnVybCxcXG4gICAgICAgICAgICBob21lX3VybCA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGZpbmRfcnVsZSA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIHNlYXJjaF91cmwgPSBcXFwiXFxcIixcXG4gICAgICAgICAgICBzZWFyY2hGaW5kID0gXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGFnZXMgPSBbXSxcXG4gICAgICAgICAgICBsYXN0X2NoYXB0ZXJfcnVsZSA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGFwcFVhID0gXFxcIlxcXCI7XFxuICAgICAgICAvL+WkhOeQhumHjeWQjeeahFxcbiAgICAgICAgbGV0IG51bSA9IDEsXFxuICAgICAgICAgICAgdGVtcCA9IGFwcHRpdGxlO1xcbiAgICAgICAgd2hpbGUgKHJ1bGVzLnNvbWUoY3VyID0+IGN1ci50aXRsZSA9PSBhcHB0aXRsZSkpIHtcXG4gICAgICAgICAgICBudW0gPSBudW0gKyAxO1xcbiAgICAgICAgICAgIGFwcHRpdGxlID0gdGVtcCArIG51bTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8v6KeE5YiZ6ZO+5o6l5ZKM5pCc57Si6ZO+5o6lXFxuICAgICAgICBpZiAoL+elnumprHxUVi8udGVzdChhcHB0eXBlKSkge1xcbiAgICAgICAgICAgIGhvbWVfdXJsID0gXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIgKyBhcHBVcmwgKyBcXFwiP2FjPWxpc3QmcGFnZT1meXBhZ2VcXFwiO1xcbiAgICAgICAgICAgIGlmICgvMTlqeHwyOTN5c3x6aGFpa2FueXN8amlcXFxcLWRpbmdcXFxcLWhlfHBob2ViZXx5dW5ib1xcXFwuYnhpbnxsYW5yZW50a3xoZXRhb3lzfHB4dW58MTM5XFxcXC4xNTV8ZmtrZHl8MDU2MTU4fGFpeGl4aXxydW94aW5ld3xmZWlmYW4xMjN8c2lxaXR2Ly50ZXN0KGFwcFVybCkpIHtcXG4gICAgICAgICAgICAgICAgc2VhcmNoX3VybCA9IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgYXBwVXJsICsgJz9hYz1saXN0JnBhZ2U9ZnlwYWdlJnptPSoqJztcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBzZWFyY2hfdXJsID0gXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIgKyBhcHBVcmwgKyAnP2FjPWxpc3QmcGFnZT1meXBhZ2Umd2Q9KionO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBob21lX3VybCA9IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgYXBwVXJsICsgXFxcImluZGV4X3ZpZGVvP3Rva2VuPVxcXCI7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgaG9tZV91cmwgPSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIGFwcFVybCArIFxcXCJpbmRleF92aWRlbz90b2tlbj1cXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGhvbWVfdXJsID0gXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIgKyBhcHBVcmwgKyBcXFwiL3ZvZFBoYkFsbFxcXCI7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoJ2FwaS5waHAvYXBwJykpIHtcXG4gICAgICAgICAgICAgICAgc2VhcmNoX3VybCA9IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgYXBwVXJsICsgJ3NlYXJjaD9wZz1meXBhZ2UmdG9rZW49JnRleHQ9KionO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwVXJsLmluY2x1ZGVzKCd4Z2FwcCcpKSB7XFxuICAgICAgICAgICAgICAgIHNlYXJjaF91cmwgPSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIGFwcFVybCArICdzZWFyY2g/cGc9ZnlwYWdlJnRleHQ9KionO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGlmICgvaW9wZW55dW4vLnRlc3QoYXBwVXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX3VybCA9IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgYXBwVXJsICsgJy9saXN0P3BhZ2U9ZnlwYWdlJmxpbWl0PTEwJndkPSoqJztcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF91cmwgPSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIGFwcFVybCArICc/cGFnZT1meXBhZ2UmbGltaXQ9MTAmd2Q9KionO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgLy/pnIDopoHnibnmrorlpITnkIbnmoTpk77mjqVcXG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZVVybCh1cmwpIHtcXG4gICAgICAgICAgICBsZXQgbmV3VXJsID0gdXJsO1xcbiAgICAgICAgICAgIGlmICh1cmwuaW5jbHVkZXMoXFxcIm9tb2Z1blxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIG5ld1VybCA9IHVybCArIFxcXCImY3NyZj1hJTJCSUtHTHVuSkNadWFkJTJCeEVUTHJadUJvcWhsdUZDRDBkSDg2RThJRU52QnpNZkJMYTZkQjhSem94eEl2dkJFTWVKekpuVVN0NTFGaGxQQmQ0S3I1eWhHWGx5TnZEa0p5Tk1EZ0RaMWIlMkZzalhBZU10ajE3WHRlTThwdVRZMlBRblF3WU95aiUyRkhVQ0FWUlprcmZsc2s4N1lHMVZlU3duRVQ4VHByREQ4dDZ1ZyUzREBzaWduYXR1cmU9RkVENEEwOTJENUJCQkUxODExN0EzQjU1OEVCNjQ2MUE5MkE1MkNGN1xcXCI7XFxuICAgICAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5jbHVkZXMoXFxcInhpbmx1YW5cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBuZXdVcmwgPSB1cmwgKyBcXFwiJmNzcmY9U1JFUUFQWDh0RkVLcFYyZExEakxaaEtrOEl4SmZEV2hOJTJCbWtzV0olMkZrZFJWd2dVaCUyRlFrVERaRW9RQVNhQXA3SHpVaXg4N1QlMkJQTGtBSXc2eUglMkI2TXJ2YXFKTTlySjVsMmI4NUlRUmJCYlclMkJEYlNZUk84Ym1Uc0tkTFlEVFZ0UkhoejVueWxSV2xHVWlkeEhmVnlMTzl0WlVpQmsxWTJBd28lMkZ6c2EydEgydTglM0RAc2lnbmF0dXJlPUZCQzcwODhDNjc3RDI5N0U2QkJCQzg1ODRBOTMzNzJEREUxMEZEOTZcXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsLmluY2x1ZGVzKFxcXCJzeGJyZFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIG5ld1VybCA9IHVybCArIFxcXCImY3NyZj1yMk5ETHRwUzhFdXFoJTJGJTJGOFk5NnljT1VPS1M5SUN6Tll6eWF3NUMyVWZFZ29ERkRIWCUyRnJxaiUyQlljTFdRekg1JTJCUjZtb1VPbHdPQW9KUkV0VWEzNzZ1ZDc0NjI3VUR6TlExc1JHZFREOGtiMzZzMWVUTWVtY244ZDBpN1dKNms5aWg1SVA0QWQ3ZnBhNiUyRjNEc3Qxam9HbmN5cjcxNmRSSERNZmN2cnMzUzI5akklM0RAY2xpZW50X25hbWU9NTVXRjU1eUw1YjJ4NktlR1xcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBuZXdVcmw7XFxuICAgICAgICB9XFxuICAgICAgICAvL+ivt+axglVBXFxuICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCJhcGkucGhwL2FwcFxcXCIpIHx8IGFwcFVybC5pbmNsdWRlcyhcXFwieGdhcHBcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcImZyZWVrYW5cXFwiKSkge1xcbiAgICAgICAgICAgIGFwcFVhID0gXFxcIkRhcnQvMi4xNCAoZGFydDppbylcXFwiO1xcbiAgICAgICAgfSBlbHNlIGlmICgvenNifGZreHN8eGF5c3x4Y3lzfHN6eXN8ZHh5c3x5dHlzfHFueXMvLnRlc3QoYXBwVXJsKSkge1xcbiAgICAgICAgICAgIGFwcFVhID0gXFxcIkRhcnQvMi4xNSAoZGFydDppbylcXFwiO1xcbiAgICAgICAgfSBlbHNlIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcIi52b2RcXFwiKSkge1xcbiAgICAgICAgICAgIGFwcFVhID0gXFxcIm9raHR0cC80LjEuMFxcXCI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGFwcFVhID0gXFxcIkRhbHZpay8yLjEuMFxcXCI7IC8vVFZcXG4gICAgICAgIH1cXG4gICAgICAgIC8v6aaW6aG16KeE5YiZ44CB5YiG57G76KeE5YiZ44CB5LqM57qn6KeE5YiZ5ZKM6KeG6aKR6Kej5p6QXFxuICAgICAgICBpZiAoL+elnumprHxUVi8udGVzdChhcHB0eXBlKSkge1xcbiAgICAgICAgICAgIGZpbmRfcnVsZSA9IFxcXCJqczpcXFwiICsgJC50b1N0cmluZyhmdW5jdGlvbihhcHBVcmwsIGFwcFVhKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlSnNvbiA9IEpTT04ucGFyc2UoZmV0Y2goYXBwVXJsICsgXFxcIj9hYz1mbGl0dGVyXFxcIiksIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIHR5cGVKc29uKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgYXBwVXJsICsgXFxcIj9hYz1saXN0JnBhZ2U9ZnlwYWdlJmNsYXNzPVxcXCIgKyBrZXkpLnJ1bGUoKHR5cGVKc29uLCBhcHBVYSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgXFxcImNsZWFyVmFyKCdmaWx0ZXInKVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IFtdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0ge30sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5a2V5cyA9IFtdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSB7fSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggaW4gdHlwZUpzb24pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVKc29uW2luZGV4XS52YWx1ZXMubGVuZ3RoID09IDEpIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gdHlwZUpzb25baW5kZXhdLmZpZWxkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTmFtZSA9IFxcXCLlhajpg6hcXFwiICsgdHlwZUpzb25baW5kZXhdLm5hbWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5a2V5cy5wdXNoKGtleSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXNbXFxcImZcXFwiICsga2V5XSA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJbXFxcImZcXFwiICsga2V5XSA9IFtmaWx0ZXJOYW1lXS5jb25jYXQodHlwZUpzb25baW5kZXhdLnZhbHVlcyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2V0VmFyKFxcXCJmaWx0ZXJcXFwiLCBcXFwiXFxcIikpIHsgcHV0VmFyKFxcXCJmaWx0ZXJcXFwiLCBKU09OLnN0cmluZ2lmeShrZXlzKSkgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gSlNPTi5wYXJzZShnZXRWYXIoXFxcImZpbHRlclxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gaW4gZmlsdGVyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmlsdGVyW2l0ZW1dLmxlbmd0aDsgaW5kZXgrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGVtcFtpdGVtXSA9PSBcXFwiXFxcIiA/IChpbmRleCA9PT0gMCA/IFxcXCLigJzigJzigJ3igJ1cXFwiICsgZmlsdGVyW2l0ZW1dWzBdLmJvbGQoKS5mb250Y29sb3IoY29sb3IpIDogZmlsdGVyW2l0ZW1dW2luZGV4XSkgOiAodGVtcFtpdGVtXSA9PSBmaWx0ZXJbaXRlbV1baW5kZXhdID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBmaWx0ZXJbaXRlbV1baW5kZXhdLmJvbGQoKS5mb250Y29sb3IoY29sb3IpIDogZmlsdGVyW2l0ZW1dW2luZGV4XSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChkZXMsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gSlNPTi5wYXJzZShnZXRWYXIoXFxcImZpbHRlclxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBbbmFtZV0gPSBkZXMuaW5kZXhPZihcXFwi5YWo6YOoXFxcIikgIT0gLTEgPyBcXFwiXFxcIiA6IGRlcztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiZmlsdGVyXFxcIiwgSlNPTi5zdHJpbmdpZnkodGVtcCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmaWx0ZXJbaXRlbV1baW5kZXhdLCBpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHsgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCIgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdICsgXFxcIiZcXFwiICsgdHlrZXlzLm1hcChjdXIgPT4gY3VyICsgXFxcIj1mXFxcIiArIGN1cikuam9pbihcXFwiJlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gaW4gdGVtcCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShpdGVtLCB0ZW1wW2l0ZW1dKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc2NvZGUgPSBmZXRjaCh1cmwsIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2NvZGUuaW5kZXhPZign5qOA5rWL5LitJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzY29kZSA9IGZldGNoKHVybCArICcmYnR3YWYnICsgcmVzY29kZS5tYXRjaCgvYnR3YWYoLio/KVxcXFxcXFwiLylbMV0sIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gSlNPTi5wYXJzZShyZXNjb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS90dmxpc3RkYXRhJykpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLop4bpopHliJfooajlh7rplJk6XFxcIiArIGUubWVzc2FnZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChpdGVtcyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0eXBlSnNvbltrZXldLCBhcHBVYSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLpppbpobXliIbnsbvlh7rplJk6XFxcIiArIGUubWVzc2FnZSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBNWV9VUkwuc3BsaXQoJyMjJylbMV0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2godXJsKSk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS90dmxpc3RkYXRhJykpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICBsb2coXFxcIummlumhteaOqOiNkOWHuumUmTpcXFwiICsgZS5tZXNzYWdlKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoaXRlbXMpO1xcbiAgICAgICAgICAgIH0sIGFwcFVybCwgYXBwVWEpXFxuICAgICAgICAgICAgbGV0IHJ1bGVfdHZsaXN0ZGF0YSA9ICQudG9TdHJpbmcoZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gaHRtbC5kYXRhO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB7IHRpdGxlLCBwaWMsIG5leHRsaW5rLCBzdGF0ZSB9ID0gbGlzdFtpXTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBuZXh0bGluay5zdGFydHNXaXRoKCdodHRwJykgPyBuZXh0bGluayA6IGFwcFVybCArICc/YWM9ZGV0YWlsJmlkcz0nICsgbmV4dGxpbms7XFxuICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogc3RhdGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI2ltbWVyc2l2ZVRoZW1lI2hpa2VyOi8vZW1wdHkjI1xcXCIgKyB1cmwpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvdHZtb3ZsaXN0JykpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuW9seeJh+ivpuaDheWHuumUmTpcXFwiICsgZS5tZXNzYWdlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBsZXQgcnVsZV90dm1vdmxpc3QgPSAkLnRvU3RyaW5nKGZ1bmN0aW9uKGFwcFVybCwgYXBwVWEpIHtcXG4gICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdub3cnKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdqaWV4aScpO1xcbiAgICAgICAgICAgICAgICB9LCBNWV9VUkwpKTtcXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gW10sXFxuICAgICAgICAgICAgICAgICAgICBodG1sID0gZ2V0VmFyKE1ZX1VSTCwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAvL2RvbWluID0gTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdLm1hdGNoKC8oW1xcXFxTXSo/OlxcXFwvXFxcXC9bXFxcXFNdKj8pXFxcXC8vKVsxXTtcXG4gICAgICAgICAgICAgICAgaWYgKGh0bWwgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIGh0bWwgPSBmZXRjaChNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV0sIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfVVJMLCBodG1sKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKTtcXG5cXG4gICAgICAgICAgICAgICAgLy/nroDku4tcXG4gICAgICAgICAgICAgICAgbGV0IHsgdGl0bGUsIHB1YnRpbWUsIHRydW5rLCBhcmVhLCB0eXBlLCBkaXJlY3RvciwgYWN0b3IsIGltZ191cmwsIGludHJvIH0gPSBodG1sO1xcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSArIFxcXCIoXFxcIiArIHB1YnRpbWUgKyBcXFwiKVxcXCIgKyBcXFwiXFxcXG5cXFwiICsgYXJlYS5qb2luKFxcXCIvXFxcIikgKyBcXFwiL1xcXCIgKyB0eXBlLmpvaW4oXFxcIi9cXFwiKSArIFxcXCIvXFxcIiArIHRydW5rLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuWvvOa8lDpcXFwiICsgZGlyZWN0b3Iuam9pbihcXFwiLFxcXCIpICsgXFxcIlxcXFxuXFxcIiArIFxcXCLkuLvmvJQ6XFxcIiArIGFjdG9yLmpvaW4oXFxcIixcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGltZ191cmwsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1JvdXRlLnNldFBhcnNlKCk7c2V0UmVzdWx0KGQpO1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Ymn5oOF566A5LuLOicsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBpbnRybyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoZGVzYykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsb25nX3RleHQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfV0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaW50cm8pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgbGluZVZpc2libGU6IGZhbHNlIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIC8v5pat5o+SXFxuICAgICAgICAgICAgICAgIC8qbGV0IGRuZW4gPSBnZXRNeVZhcihcXFwiZG5lblxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmlq3mj5I6JyArIChkbmVuID09ICcxJyA/ICfigJzigJzinIXigJ3igJ0nIDogJ+KdjicpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcnKS5sYXp5UnVsZSgoZG5lbikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkbmVuID09ICcxJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiZG5lblxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suemgeeUqOaWreaPkuiwg+eUqCEnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJkbmVuXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5byA5ZCv5pat5o+S6LCD55SoISdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBkbmVuKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+e6v+i3r+mFjee9ricsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1JvdXRlLnNldFBhcnNlKCk7c2V0UmVzdWx0KGQpO1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAvL3VybDpcXFwiaGlrZXI6Ly9wYWdlL1JvdXRlP3J1bGU9TXlGaWVsZOG0sOKBvyZ0eXBlPeiuvue9riNub1JlY29yZEhpc3RvcnkjXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICB9KTsqL1xcbiAgICAgICAgICAgICAgICAvL+e6v+i3r+WIl+ihqFxcbiAgICAgICAgICAgICAgICBsZXQgdGFicyA9IE9iamVjdC5rZXlzKGh0bWwudmlkZW9saXN0KTtcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcihcXFwibm93XFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7IHB1dFZhcihcXFwibm93XFxcIiwgdGFic1swXSkgfVxcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oaT4oaR4oCd4oCdXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignYXBwbXR2c29ydCcsIGdldFZhcignYXBwbXR2c29ydCcsJzEnKT09JzEnPycwJzonMScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8hJ1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpIGluIHRhYnMpIHtcXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIoXFxcIm5vd1xcXCIpID09IHRhYnNbaV0gPyBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIHRhYnNbaV0uYm9sZCgpLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpIDogdGFic1tpXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ25vdycsJ1xcXCIgKyB0YWJzW2ldICsgXFxcIicpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8hJ1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiflvZPliY3op6PmnpA6JyArIGdldE15VmFyKCdqaWV4aScsJ+m7mOiupOino+aekCcpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFtcXFwi6buY6K6k6Kej5p6QXFxcIixcXFwi5pat5o+S6Kej5p6QXFxcIl0sMSkuc2VsZWN0KCgpPT57XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2ppZXhpJyxpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lmm7TmlLnop6PmnpAnXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7IGxpbmVWaXNpYmxlOiBmYWxzZSB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIC8v6KeG6aKR5YiX6KGoXFxuICAgICAgICAgICAgICAgIGxldCBwdGFiID0gZ2V0VmFyKFxcXCJub3dcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLnZpZGVvbGlzdFtwdGFiXTtcXG4gICAgICAgICAgICAgICAgLy9sb2coJ+W9k+WJjee6v+i3rzonICsgcHRhYik7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2FwcG10dnNvcnQnLCAnMScpID09ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5yZXZlcnNlKCk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNyY3VybCA9IGxpc3Rbal0udXJsO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKC8yOTNqeDEvLnRlc3Qoc3JjdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyY3VybCA9IHNyY3VybC5yZXBsYWNlKCcyOTNqeDEnLCAnangnKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoLzhkOHF8ZGlsaWt0dnxoYW9rYW5qdTF8Y3p0dnxmaXRcXFxcOjh8cHB6aHUvLnRlc3QoYXBwVXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyY3VybCA9IHNyY3VybCArICcmYXBwPTEwMDAwJmFjY291bnQ9MjcyNzc1MDI4JnBhc3N3b3JkPXFxMjcyNzc1MDI4JztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGxpc3Rbal0udGl0bGU7XFxuICAgICAgICAgICAgICAgICAgICAvL3RpdGxlID0gdGl0bGUubWF0Y2goLyjnrKx8XFxcXGR8LSkqKOmbhnzor5185pyfKS9nKSA/IHRpdGxlLnJlcGxhY2UoL+esrHzpm4Z86K+dfOacny9nLCAnJykgOiB0aXRsZTtcXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfNFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9sYXp5UGFyc2VcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChpdGVtcyk7XFxuICAgICAgICAgICAgfSwgYXBwVXJsLCBhcHBVYSk7XFxuICAgICAgICAgICAgbGV0IGxhenlQYXJzZSA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdmxpbmsgPSBzcmN1cmw7XFxuICAgICAgICAgICAgICAgIGlmICgvKHVybHx2aWR8dilcXFxcPS8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICB2bGluayA9IHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLnNlYXJjaCgvKHVybHx2aWR8dilcXFxcPS8pKS5zcGxpdCgnPScpWzFdLnNwbGl0KCcmJylbMF07XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgbGV0IGVuRG4gPSBnZXRNeVZhcihcXFwiamlleGlcXFwiLCBcXFwi6buY6K6k6Kej5p6QXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICB0ZXN0MSA9IHZsaW5rLnNlYXJjaCgveW91a3V8bWd0dnxpeGlndWF8cXEuY29tfHFpeWl8bWlndXxiaWxpYmlsaXxzb2h1fHBwdHZ8bGV8MTkwNS5jb20vKSAhPSAtMSxcXG4gICAgICAgICAgICAgICAgICAgIHRlc3QyID0gdmxpbmsuc2VhcmNoKC9MVFxcXFwtfFJvbmdYaW5nVlJcXFxcLXxyZW5yZW5taVxcXFwtfHhmeVxcXFwtfHN1b3lvXFxcXC5jY3xmZW5cXFxcLmxhb2RpfHh1ZXJlblxcXFwtLykgIT0gLTE7XFxuICAgICAgICAgICAgICAgIGlmICgodGVzdDEgfHwgdGVzdDIpICYmIGVuRG4gPT0gJ+aWreaPkuino+aekCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykubGF6eVJ1bGUoKHZsaW5rKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLosIPnlKjmlq3mj5Lop6PmnpAs6KeG6aKR6ZO+5o6lOlxcXCIgKyB2bGluayk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwibGV0IGNvbmZpZyA9XFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKGZldGNoKGNvbmZpZy5jaikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UodmxpbmspO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgdmxpbmspXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eVxcXCIpLmxhenlSdWxlKChwdGFiLCBzcmN1cmwsIGFwcFVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFwi5L2/55So6buY6K6k6Kej5p6QLOinhumikemTvuaOpTpcXFwiICsgc3JjdXJsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WKqOaAgeino+aekOS7o+eggeW8gOWni1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZVZpZGVvVXJsKHVybCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+aUueWPmOeJueWumuWcsOWdgOeahFJlZmVyZXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFwid2tmaWxlXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybCArICc7e1JlZmVyZXJAaHR0cHM6Ly9mYW50dWFuLndrZmlsZS5jb20vfSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHRhYiA9PSAnYmlsaWJpbGknKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8mJlVzZXItQWdlbnRATW96aWxsYS81LjB9JztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwdGFiID09ICdtZ3R2Jykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJzt7UmVmZXJlckB3d3cubWd0di5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9JztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5jbHVkZXMoXFxcIm9qYmtcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJzt7UmVmZXJlckBodHRwczovL2Jhay5vamJranguY29tL30nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v6L+U5Zue6KeG6aKR6ZO+5o6lXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXJsLmluY2x1ZGVzKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6ZO+5o6l5LiN5piv5LulaHR0cOW8gOWktCjlj6/og73liqDlr4bkuoYpXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFwubTN1OC8udGVzdCh1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlTTN1OCh1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsICsgJyNpc1ZpZGVvPXRydWUjJztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFwubTN1OHxcXFxcLm1wNHxvYmpcXFxcL3Rvc3xuZXRlYXNlXFxcXC5jb20vLnRlc3Qoc3JjdXJsKSAmJiAvaHR0cC8udGVzdChzcmN1cmwpICYmICEvXFxcXC5odG1sLy50ZXN0KHNyY3VybCkgJiYgIS8odXJsfHZ8dmlkKVxcXFw9Ly50ZXN0KHNyY3VybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghL2ZlblxcXFwubGFvZGl8c3VveW9cXFxcLmNjLy50ZXN0KHNyY3VybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuajgOa1i+WIsOi1hOa6kOWcsOWdgOWPr+iDveaYr+inhumikemTvuaOpVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChzcmN1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLeWIhuWJsue6vy0tLS0vL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvZGUgPSBKU09OLnBhcnNlKGZldGNoKHNyY3VybCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogTU9CSUxFX1VBXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFN0YXR1c0NvZGU6IHRydWVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+i/lOWbnumHjeWumuWQkeeahOmTvuaOpSBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb2RlLnN0YXR1c0NvZGUgPT0gJzMwMicgfHwgc2NvZGUuc3RhdHVzQ29kZSA9PSAnMzAxJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZHVybCA9IHNjb2RlLmhlYWRlcnMubG9jYXRpb25bMF0ucmVwbGFjZSgvXFxcXFxcXFwvZywgJycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCfph43lrprlkJE6JyArIHJlZHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIS8odXJsfHZpZHx2KVxcXFw9Ly50ZXN0KHJlZHVybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlVmlkZW9VcmwocmVkdXJsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZWxzZSBpZiAoL1xcXFw9aHR0cC8udGVzdChyZWR1cmwpICYmIC9cXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHYvLnRlc3QocmVkdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmwgPSByZWR1cmwuc3Vic3RyaW5nKHJlZHVybC5pbmRleE9mKCc9aHR0cCcpICsgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb2RlLmJvZHkgPSBmZXRjaChyZWR1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5byA5aeL5ZeF5o6iXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gc2NvZGUuYm9keTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC80MDQgTm90IEZvdW5kfOWkh+ahiOWQjuWPr+e7p+e7reiuv+mXri8udGVzdChodG1sKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCI0MDTkuoZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgvXFxcXDxib2R5Ly50ZXN0KGh0bWwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIuW8gOWni+inhumikeWXheaOolxcXCIsIFxcXCLmiZPlvIDop6PmnpDnvZHpobVcXFwiLCBcXFwi5L2/55So5YaF572u6Kej5p6QXFxcIl0sIDEsIFxcXCLmo4DmtYvliLDop6PmnpDkuLrnvZHpobXmlbDmja5cXFwiKS5zZWxlY3QoKHB0YWIsIHNyY3VybCwgYXBwVXJsKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLlvIDlp4vop4bpopHll4XmjqJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVDYWNoZSgnaHR0cHM6Ly9jb2RlLmFsaXl1bi5jb20vbHprMjM1NTkvUHVibGljUnVsZS9yYXcvbWFzdGVyL3g1cnVsZS5qcycsIDI0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHg1cnVsZShzcmN1cmwsIHNyY3VybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFwi5omT5byA6Kej5p6Q572R6aG1XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyBzcmN1cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFwi5L2/55So5YaF572u6Kej5p6QXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmxpbmsgPSBzcmN1cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvKHVybHx2aWR8dilcXFxcPS8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bGluayA9IHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLnNlYXJjaCgvKHVybHx2aWR8dilcXFxcPS8pKS5zcGxpdCgnPScpWzFdLnNwbGl0KCcmJylbMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLkvb/nlKjlhoXnva7op6PmnpAs6KeG6aKR6ZO+5o6lOlxcXCIgKyB2bGluayk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMb2FkaW5nKFxcXCLmraPlnKjov5vooYzop6PmnpAuLi5cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL215UGFyc2VcXFwiKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcHRhYiwgc3JjdXJsLCBhcHBVcmwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvZygn5bCd6K+V5LuOanNvbuaVsOaNruiOt+WPlicpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHVybCA9IEpTT04ucGFyc2UoaHRtbCkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChwdXJsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmxldCBwdXJsID0gaHRtbC5tYXRjaCgvW1xcXFwnXFxcXFxcXCJddXJsW1xcXFwnXFxcXFxcXCJdOi4qP1tcXFxcJ1xcXFxcXFwiXSguKj8pW1xcXFwnXFxcXFxcXCJdLylbMV0ucmVwbGFjZSgvXFxcXFxcXFwvZywgJycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChwdXJsKTsqL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign6Kej5p6Q5Y+v6IO95Yqg5a+G5LqGJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZygn5pyq6IO95oiQ5Yqf6I635Y+W6KeG6aKR5Zyw5Z2AOicgKyBlLm1lc3NhZ2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmxpbmsgPSBzcmN1cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvKHVybHx2aWR8dilcXFxcPS8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bGluayA9IHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLnNlYXJjaCgvKHVybHx2aWR8dilcXFxcPS8pKS5zcGxpdCgnPScpWzFdLnNwbGl0KCcmJylbMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLlsJ3or5Xkvb/nlKjlhoXnva7op6PmnpAs6KeG6aKR6ZO+5o6lOlxcXCIgKyB2bGluayk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9teVBhcnNlXFxcIikpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WKqOaAgeino+aekOS7o+eggee7k+adn1xcbiAgICAgICAgICAgICAgICAgICAgfSwgcHRhYiwgc3JjdXJsLCBhcHBVcmwpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcGFnZXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIG5hbWU6IFxcXCJUVuWIl+ihqFxcXCIsXFxuICAgICAgICAgICAgICAgIHBhdGg6IFxcXCJ0dmxpc3RkYXRhXFxcIixcXG4gICAgICAgICAgICAgICAgcnVsZTogcnVsZV90dmxpc3RkYXRhXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICBuYW1lOiBcXFwiVFbpgInpm4ZcXFwiLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBcXFwidHZtb3ZsaXN0XFxcIixcXG4gICAgICAgICAgICAgICAgcnVsZTogcnVsZV90dm1vdmxpc3RcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLop4bpopHop6PmnpBcXFwiLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBcXFwibGF6eVBhcnNlXFxcIixcXG4gICAgICAgICAgICAgICAgcnVsZTogbGF6eVBhcnNlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGZpbmRfcnVsZSA9IFxcXCJqczpcXFwiICsgJC50b1N0cmluZyhmdW5jdGlvbihjaGFuZ2VVcmwsIGFwcFVybCwgYXBwVWEpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gW107XFxuICAgICAgICAgICAgICAgIC8v6I635Y+W5YiG57G75YaF5a65XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZUpzb24gPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcImFwaS5waHAvYXBwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZVVybCA9IGNoYW5nZVVybChhcHBVcmwgKyBcXFwibmF2P3Rva2VuPVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBjb2RlID0gcmVxdWVzdCh0eXBlVXJsLCB7IGhlYWRlcnM6IHsgXFxcIlVzZXItQWdlbnRcXFwiOiBhcHBVYSB9IH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBjb2RlLmluZGV4T2YoJ+ajgOa1i+S4rScpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGNvZGUgPSBmZXRjaCh0eXBlVXJsICsgJyZidHdhZicgKyB0eXBjb2RlLm1hdGNoKC9idHdhZiguKj8pXFxcXFxcXCIvKVsxXSwgeyBoZWFkZXJzOiB7IFxcXCJVc2VyLUFnZW50XFxcIjogYXBwVWEgfSB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZUpzb24gPSBKU09OLnBhcnNlKHR5cGNvZGUpLmxpc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwieGdhcHBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlVXJsID0gY2hhbmdlVXJsKGFwcFVybCArIFxcXCJuYXY/dG9rZW49XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGNvZGUgPSByZXF1ZXN0KHR5cGVVcmwsIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGNvZGUuaW5kZXhPZign5qOA5rWL5LitJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwY29kZSA9IGZldGNoKHR5cGVVcmwgKyAnJmJ0d2FmJyArIHR5cGNvZGUubWF0Y2goL2J0d2FmKC4qPylcXFxcXFxcIi8pWzFdLCB7IGhlYWRlcnM6IHsgXFxcIlVzZXItQWdlbnRcXFwiOiBhcHBVYSB9IH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlSnNvbiA9IEpTT04ucGFyc2UodHlwY29kZSkuZGF0YTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCIudm9kXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZVVybCA9IGNoYW5nZVVybChhcHBVcmwgKyBcXFwiL3R5cGVzXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGNvZGUgPSByZXF1ZXN0KHR5cGVVcmwsIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGNvZGUuaW5kZXhPZign5qOA5rWL5LitJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwY29kZSA9IGZldGNoKHR5cGVVcmwgKyAnP2J0d2FmJyArIHR5cGNvZGUubWF0Y2goL2J0d2FmKC4qPylcXFxcXFxcIi8pWzFdLCB7IGhlYWRlcnM6IHsgXFxcIlVzZXItQWdlbnRcXFwiOiBhcHBVYSB9IH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlSnNvbiA9IEpTT04ucGFyc2UodHlwY29kZSkuZGF0YS5saXN0O1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLy/ojrflj5bliIbnsbvliJfooahcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZUpzb24ubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WIhuexu+inhumikeWcsOWdgFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXVybCA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQXJyYXkgPSBPYmplY3Qua2V5cyh0eXBlSnNvbltpXS50eXBlX2V4dGVuZCkuZmlsdGVyKGN1ciA9PiBbXFxcImNsYXNzXFxcIiwgXFxcImFyZWFcXFwiLCBcXFwibGFuZ1xcXCIsIFxcXCJ5ZWFyXFxcIl0uaW5jbHVkZXMoY3VyKSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVVcmwgPSB0eXBlQXJyYXkubWFwKGN1ciA9PiBjdXIgKyBcXFwiPWZcXFwiICsgY3VyKS5qb2luKFxcXCImXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcygnYXBpLnBocC9hcHAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXVybCA9IGFwcFVybCArICd2aWRlbz90aWQ9JyArIHR5cGVKc29uW2ldLnR5cGVfaWQgKyAnJnBhZ2U9ZnlwYWdlJnRva2VuPSYnICsgdHlwZVVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFwcFVybC5pbmNsdWRlcygneGdhcHAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXVybCA9IGFwcFVybCArICd2aWRlbz90aWQ9JyArIHR5cGVKc29uW2ldLnR5cGVfaWQgKyAnJnBhZ2U9ZnlwYWdlJicgKyB0eXBlVXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCIudm9kXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9pb3Blbnl1bi8udGVzdChhcHBVcmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXVybCA9IGFwcFVybCArICcvbGlzdD90eXBlPScgKyB0eXBlSnNvbltpXS50eXBlX2lkICsgJyZwYWdlPWZ5cGFnZSZieT1mYnkmbGltaXQ9OSYnICsgdHlwZVVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5dXJsID0gYXBwVXJsICsgJz90eXBlPScgKyB0eXBlSnNvbltpXS50eXBlX2lkICsgJyZwYWdlPWZ5cGFnZSZieT1mYnkmbGltaXQ9OSYnICsgdHlwZVVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+aehOW7uuWKqOaAgeWIhuexu1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdHlwZUpzb25baV0udHlwZV9uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIgKyB0eXVybCkucnVsZSgoYXBwVXJsLCB0eXBlX2V4dGVuZCwgY2hhbmdlVXJsLCBhcHBVYSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCBcXFwiY2xlYXJWYXIoJ2ZpbHRlcicpXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgLy/liqjmgIHliIbnsbtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5cyA9IHt9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSB7fSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTmFtZXMgPSB7IGNsYXNzOiBcXFwi57G75Z6LXFxcIiwgYXJlYTogXFxcIuWcsOWMulxcXCIsIGxhbmc6IFxcXCLor63oqIBcXFwiLCB5ZWFyOiBcXFwi5bm05Lu9XFxcIiwgc3RhcjogXFxcIuaYjuaYn1xcXCIsIGRpcmVjdG9yOiBcXFwi5a+85ryUXFxcIiwgc3RhdGU6IFxcXCLnirbmgIFcXFwiLCB2ZXJzaW9uOiBcXFwi54mI5pysXFxcIiB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsYXNzOiBbXFxcIuWFqOmDqOexu+Wei1xcXCIsIFxcXCLllpzliadcXFwiLCBcXFwi54ix5oOFXFxcIiwgXFxcIuaBkOaAllxcXCIsIFxcXCLliqjkvZxcXFwiLCBcXFwi56eR5bm7XFxcIiwgXFxcIuWJp+aDhVxcXCIsIFxcXCLmiJjkuolcXFwiLCBcXFwi6K2m5YyqXFxcIiwgXFxcIueKr+e9qlxcXCIsIFxcXCLliqjnlLtcXFwiLCBcXFwi5aWH5bm7XFxcIiwgXFxcIuatpuS+oFxcXCIsIFxcXCLlhpLpmalcXFwiLCBcXFwi5p6q5oiYXFxcIiwgXFxcIuaCrOeWkVxcXCIsIFxcXCLmg4rmgppcXFwiLCBcXFwi57uP5YW4XFxcIiwgXFxcIumdkuaYpVxcXCIsIFxcXCLmlofoibpcXFwiLCBcXFwi5b6u55S15b2xXFxcIiwgXFxcIuWPpOijhVxcXCIsIFxcXCLljoblj7JcXFwiLCBcXFwi6L+Q5YqoXFxcIiwgXFxcIuWGnOadkVxcXCIsIFxcXCLlhL/nq6VcXFwiLCBcXFwi572R57uc55S15b2xXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJlYTogW1xcXCLlhajpg6jlnLDljLpcXFwiLCBcXFwi5YaF5ZywXFxcIiwgXFxcIummmea4r1xcXCIsIFxcXCLlj7Dmub5cXFwiLCBcXFwi576O5Zu9XFxcIiwgXFxcIuiLseWbvVxcXCIsIFxcXCLms5Xlm71cXFwiLCBcXFwi5pel5pysXFxcIiwgXFxcIumfqeWbvVxcXCIsIFxcXCLlvrflm71cXFwiLCBcXFwi5rOw5Zu9XFxcIiwgXFxcIuWNsOW6plxcXCIsIFxcXCLopb/nj63niZlcXFwiLCBcXFwi5Yqg5ou/5aSnXFxcIiwgXFxcIuWFtuS7llxcXCJdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnllYXI6IFtcXFwi5YWo6YOo5bm05Lu9XFxcIiwgXFxcIjIwMjJcXFwiLCBcXFwiMjAyMVxcXCIsIFxcXCIyMDIwXFxcIiwgXFxcIjIwMTlcXFwiLCBcXFwiMjAxOFxcXCIsIFxcXCIyMDE3XFxcIiwgXFxcIjIwMTZcXFwiLCBcXFwiMjAxNVxcXCIsIFxcXCIyMDE0XFxcIiwgXFxcIjIwMTNcXFwiLCBcXFwiMjAxMlxcXCIsIFxcXCIyMDExXFxcIiwgXFxcIjIwMTBcXFwiLCBcXFwiMjAwOVxcXCIsIFxcXCIyMDA4XFxcIiwgXFxcIjIwMDdcXFwiLCBcXFwiMjAwNlxcXCIsIFxcXCIyMDA1XFxcIiwgXFxcIjIwMDRcXFwiLCBcXFwiMjAwM1xcXCIsIFxcXCIyMDAyXFxcIiwgXFxcIjIwMDFcXFwiLCBcXFwiMjAwMFxcXCJdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhbmc6IFtcXFwi5YWo6YOo6K+t6KiAXFxcIiwgXFxcIuWbveivrVxcXCIsIFxcXCLoi7Hor61cXFwiLCBcXFwi57Kk6K+tXFxcIiwgXFxcIumXveWNl+ivrVxcXCIsIFxcXCLpn6nor61cXFwiLCBcXFwi5pel6K+tXFxcIiwgXFxcIuazleivrVxcXCIsIFxcXCLlvrfor61cXFwiLCBcXFwi5YW25LuWXFxcIl1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gdHlwZV9leHRlbmQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFbXFxcImNsYXNzXFxcIiwgXFxcImFyZWFcXFwiLCBcXFwibGFuZ1xcXCIsIFxcXCJ5ZWFyXFxcIl0uaW5jbHVkZXMoa2V5KSkgY29udGludWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXNbXFxcImZcXFwiICsga2V5XSA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzW1xcXCJmYnlcXFwiXSA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyTmFtZSA9IFxcXCLlhajpg6hcXFwiICsgZmlsdGVyTmFtZXNba2V5XTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW1xcXCJmXFxcIiArIGtleV0gPSBbZmlsdGVyTmFtZV0uY29uY2F0KHR5cGVfZXh0ZW5kW2tleV0uc3BsaXQoXFxcIixcXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbXFxcImZcXFwiICsga2V5XS5sZW5ndGggPT0gMikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW1xcXCJmXFxcIiArIGtleV0gPSBkZWZhdWx0RmlsdGVyW1xcXCJmXFxcIiArIGtleV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdldFZhcihcXFwiZmlsdGVyXFxcIiwgXFxcIlxcXCIpKSB7IHB1dFZhcihcXFwiZmlsdGVyXFxcIiwgSlNPTi5zdHJpbmdpZnkoa2V5cykpIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IEpTT04ucGFyc2UoZ2V0VmFyKFxcXCJmaWx0ZXJcXFwiKSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gaW4gZmlsdGVyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWx0ZXJbaXRlbV0ubGVuZ3RoOyBpbmRleCsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGVtcFtpdGVtXSA9PSBcXFwiXFxcIiA/IChpbmRleCA9PT0gMCA/IFxcXCLigJzigJzigJ3igJ1cXFwiICsgZmlsdGVyW2l0ZW1dWzBdLmJvbGQoKS5mb250Y29sb3IoY29sb3IpIDogZmlsdGVyW2l0ZW1dW2luZGV4XSkgOiAodGVtcFtpdGVtXSA9PSBmaWx0ZXJbaXRlbV1baW5kZXhdID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBmaWx0ZXJbaXRlbV1baW5kZXhdLmJvbGQoKS5mb250Y29sb3IoY29sb3IpIDogZmlsdGVyW2l0ZW1dW2luZGV4XSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoZGVzLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gSlNPTi5wYXJzZShnZXRWYXIoXFxcImZpbHRlclxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFtuYW1lXSA9IGRlcy5pbmRleE9mKFxcXCLlhajpg6hcXFwiKSAhPSAtMSA/IFxcXCJcXFwiIDogZGVzO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImZpbHRlclxcXCIsIEpTT04uc3RyaW5naWZ5KHRlbXApKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZmlsdGVyW2l0ZW1dW2luZGV4XSwgaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7IGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBieSA9IHsg6buY6K6k6aG65bqPOiBcXFwiXFxcIiwg5pyA5pawOiBcXFwidGltZVxcXCIsIOacgOeDrTogXFxcImhpdHNcXFwiLCDor4TliIY6IFxcXCJzY29yZVxcXCIgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwVXJsLmluZGV4T2YoJ2FwaS5waHAvYXBwJykgPT0gLTEgJiYgYXBwVXJsLmluZGV4T2YoJ3hnYXBwJykgPT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBpbiBieSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRlbXBbXFxcImZieVxcXCJdID09IGJ5W2l0ZW1dID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBpdGVtLmJvbGQoKS5mb250Y29sb3IoY29sb3IpIDogaXRlbSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChkZXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBKU09OLnBhcnNlKGdldFZhcihcXFwiZmlsdGVyXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW1xcXCJmYnlcXFwiXSA9IGRlcztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJmaWx0ZXJcXFwiLCBKU09OLnN0cmluZ2lmeSh0ZW1wKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGJ5W2l0ZW1dKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBKU09OLnBhcnNlKGdldFZhcihcXFwiZmlsdGVyXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gaW4gdGVtcCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGl0ZW0sIHRlbXBbaXRlbV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gY2hhbmdlVXJsKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzY29kZSA9IGZldGNoKHVybCwgeyBoZWFkZXJzOiB7IFxcXCJVc2VyLUFnZW50XFxcIjogYXBwVWEgfSB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNjb2RlLmluZGV4T2YoJ+ajgOa1i+S4rScpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzY29kZSA9IGZldGNoKHVybCArICcmYnR3YWYnICsgcmVzY29kZS5tYXRjaCgvYnR3YWYoLio/KVxcXFxcXFwiLylbMV0sIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UocmVzY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2FwcGxpc3RkYXRhJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuinhumikeWIl+ihqOWHuumUmTpcXFwiICsgZS5tZXNzYWdlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChpdGVtcyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFwcFVybCwgdHlwZUpzb25baV0udHlwZV9leHRlbmQsIGNoYW5nZVVybCwgYXBwVWEpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZygn6aaW6aG15YiG57G75Ye66ZSZOicgKyBlLm1lc3NhZ2UpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIC8v6I635Y+W5o6o6I2Q6KeG6aKR5YiX6KGoXFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gTVlfVVJMLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gY2hhbmdlVXJsKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsLCB7IGhlYWRlcnM6IHsgXFxcIlVzZXItQWdlbnRcXFwiOiBhcHBVYSB9IH0pO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0bWwuaW5kZXhPZign5qOA5rWL5LitJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sID0gZmV0Y2godXJsICsgJyZidHdhZicgKyBodG1sLm1hdGNoKC9idHdhZiguKj8pXFxcXFxcXCIvKVsxXSwgeyBoZWFkZXJzOiB7IFxcXCJVc2VyLUFnZW50XFxcIjogYXBwVWEgfSB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGh0bWwgPSBKU09OLnBhcnNlKGh0bWwpO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvYXBwaW5kZXhkYXRhJykpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICBsb2coJ+mmlumhteaOqOiNkOWHuumUmTonICsgZS5tZXNzYWdlKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoaXRlbXMpO1xcbiAgICAgICAgICAgIH0sIGNoYW5nZVVybCwgYXBwVXJsLCBhcHBVYSlcXG5cXG4gICAgICAgICAgICBsZXQgcnVsZV9hcHBsaXN0ZGF0YSA9ICQudG9TdHJpbmcoZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gW107XFxuICAgICAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoJ2FwaS5waHAvYXBwJykpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLmxpc3Q7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwVXJsLmluY2x1ZGVzKCd4Z2FwcCcpKSB7XFxuICAgICAgICAgICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiLnZvZFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhLmxpc3Q7XFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgeyB2b2RfbmFtZSwgdm9kX3BpYywgdm9kX2lkLCB2b2RfcmVtYXJrcyB9ID0gbGlzdFtpXTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaW5rID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKCdhcGkucGhwL2FwcCcpIHx8IGFwcFVybC5pbmNsdWRlcygneGdhcHAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyAndmlkZW9fZGV0YWlsP2lkPScgKyB2b2RfaWQgKyAnJnRva2VuPSc7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiLnZvZFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyAnL2RldGFpbD92b2RfaWQ9JyArIHZvZF9pZCArICcmcmVsX2xpbWl0PTEwJmtleT0nICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpICsgKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuXFxuICAgICAgICAgICAgICAgICAgICBpZiAoL2lvcGVueXVuLy50ZXN0KGFwcFVybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rID0gYXBwVXJsICsgJy9kZXRhaWxJRD92b2RfaWQ9JyArIHZvZF9pZCArICcmcmVsX2xpbWl0PTEwJztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB2b2RfbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiB2b2RfcGljICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogdm9kX3JlbWFya3MsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI2ltbWVyc2l2ZVRoZW1lI2hpa2VyOi8vZW1wdHkjI1xcXCIgKyBsaW5rKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2FwcG1vdmxpc3QnKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFwi5b2x54mH6K+m5oOF5Ye66ZSZOlxcXCIgKyBlLm1lc3NhZ2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KFtdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgbGV0IHJ1bGVfYXBwaW5kZXhkYXRhID0gJC50b1N0cmluZyhmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBbXTtcXG4gICAgICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcygnYXBpLnBocC9hcHAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGh0bWwubGlzdDtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcHBVcmwuaW5jbHVkZXMoJ3hnYXBwJykpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLmRhdGE7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCIudm9kXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLmRhdGEubGlzdDtcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0cyA9IFtdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKCdhcGkucGhwL2FwcCcpIHx8IGFwcFVybC5pbmNsdWRlcygneGdhcHAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52bGlzdDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSA9IGxpc3RbaV0udHlwZV9uYW1lO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcIi52b2RcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52b2RfbGlzdDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSA9IGxpc3RbaV0udm9kX3R5cGVfbmFtZTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0eXBlbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0cy5sZW5ndGg7IGorKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7IHZvZF9uYW1lLCB2b2RfcGljLCB2b2RfaWQsIHZvZF9yZW1hcmtzIH0gPSBsaXN0c1tqXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluayA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoJ2FwaS5waHAvYXBwJykgfHwgYXBwVXJsLmluY2x1ZGVzKCd4Z2FwcCcpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyAndmlkZW9fZGV0YWlsP2lkPScgKyB2b2RfaWQgKyAnJnRva2VuPSZrZXk9JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiLnZvZFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IGFwcFVybCArICcvZGV0YWlsP3ZvZF9pZD0nICsgdm9kX2lkICsgJyZyZWxfbGltaXQ9MTAma2V5PScgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgKyAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9pb3Blbnl1bi8udGVzdChhcHBVcmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBhcHBVcmwgKyAnL2RldGFpbElEP3ZvZF9pZD0nICsgdm9kX2lkICsgJyZyZWxfbGltaXQ9MTAnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHZvZF9uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiB2b2RfcGljICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHZvZF9yZW1hcmtzLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI2ltbWVyc2l2ZVRoZW1lI2hpa2VyOi8vZW1wdHkjI1xcXCIgKyBsaW5rKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvYXBwbW92bGlzdCcpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuW9seeJh+ivpuaDheWHuumUmTpcXFwiICsgZS5tZXNzYWdlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW10pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBsZXQgcnVsZV9hcHBtb3ZsaXN0ID0gJC50b1N0cmluZyhmdW5jdGlvbihjaGFuZ2VVcmwsIGFwcFVybCwgYXBwVWEpIHtcXG4gICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdhcHBub3cnKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdqaWV4aScpO1xcbiAgICAgICAgICAgICAgICB9LCBNWV9VUkwpKTtcXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gW10sXFxuICAgICAgICAgICAgICAgICAgICBodG1sID0gZ2V0VmFyKE1ZX1VSTCwgXFxcIlxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHt9O1xcbiAgICAgICAgICAgICAgICBpZiAoaHRtbCA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IGNoYW5nZVVybCh1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgaHRtbCA9IGZldGNoKHVybCwgeyBoZWFkZXJzOiB7IFxcXCJVc2VyLUFnZW50XFxcIjogYXBwVWEgfSB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9VUkwsIGh0bWwpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGEudm9kX2luZm87XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShodG1sKS5kYXRhO1xcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIC8v566A5LuLXFxuICAgICAgICAgICAgICAgIGxldCB7IHZvZF9uYW1lLCB2b2RfcGljLCB2b2RfY29udGVudCwgdm9kX2NsYXNzLCB2b2RfcmVtYXJrcywgdm9kX2RpcmVjdG9yLCB2b2RfYWN0b3IsIHZvZF9hcmVhLCB2b2RfbGFuZywgdm9kX3llYXIgfSA9IGRhdGE7XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHZvZF9uYW1lICsgJ1xcXFxuJyArIHZvZF9jbGFzcyArIFxcXCIsXFxcIiArIHZvZF9yZW1hcmtzICsgXFxcIlxcXFxuXFxcIiArIHZvZF9hcmVhICsgXFxcIi9cXFwiICsgdm9kX2xhbmcgKyBcXFwiL1xcXCIgKyB2b2RfeWVhcixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLlr7zmvJQ6XFxcIiArIHZvZF9kaXJlY3RvciArIFxcXCJcXFxcbuS4u+a8lDpcXFwiICsgdm9kX2FjdG9yLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogdm9kX3BpYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfliafmg4XnroDku4s6JyxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IHZvZF9jb250ZW50LFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKChkZXNjKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCB2b2RfY29udGVudCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgLy/mlq3mj5JcXG4gICAgICAgICAgICAgICAgLypsZXQgZG5lbiA9IGdldE15VmFyKFxcXCJkbmVuXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aWreaPkjonICsgKGRuZW4gPT0gJzEnID8gJ+KAnOKAnOKcheKAneKAnScgOiAn4p2OJyksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGRuZW4pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG5lbiA9PSAnMScpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImRuZW5cXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LnpoHnlKjmlq3mj5LosIPnlKghJztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiZG5lblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suW8gOWQr+aWreaPkuiwg+eUqCEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgZG5lbiksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnur/ot6/phY3nva4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnKTtSb3V0ZS5zZXRQYXJzZSgpO3NldFJlc3VsdChkKTtcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6IFxcXCJoaWtlcjovL3BhZ2UvUm91dGU/cnVsZT1NeUZpZWxk4bSw4oG/JnR5cGU96K6+572uI25vUmVjb3JkSGlzdG9yeSNcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgICAgIH0pOyovXFxuICAgICAgICAgICAgICAgIC8v57q/6Lev5YiX6KGoXFxuXFxuICAgICAgICAgICAgICAgIGxldCBjb250cyA9IFtdLFxcbiAgICAgICAgICAgICAgICAgICAgdGFicyA9IFtdO1xcbiAgICAgICAgICAgICAgICBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCJhcGkucGhwL2FwcFxcXCIpIHx8IGFwcFVybC5pbmNsdWRlcyhcXFwieGdhcHBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY29udHMgPSBkYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250cyA9IGRhdGEudm9kX3BsYXlfbGlzdDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoY29udHMubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgY29udHMgPSBkYXRhLnZvZF9wbGF5X3VybC5zcGxpdCgnJCQkJyk7XFxuICAgICAgICAgICAgICAgICAgICB0YWJzID0gZGF0YS52b2RfcGxheV9mcm9tLnNwbGl0KCckJCQnKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvL+e6v+i3r+WQjeensFxcbiAgICAgICAgICAgICAgICBsZXQgcHRhYiA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgcHRhYm5hbWUgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcihcXFwiYXBwbm93XFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7IHB1dFZhcihcXFwiYXBwbm93XFxcIiwgXFxcIjBcXFwiKSB9XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBzcHRhYiA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYm5hbWUgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcImFwaS5waHAvYXBwXFxcIikgfHwgYXBwVXJsLmluY2x1ZGVzKFxcXCJ4Z2FwcFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3B0YWIgPSBjb250c1tpXS5jb2RlID8gY29udHNbaV0uY29kZSA6IHRhYnNbaV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibmFtZSA9IGNvbnRzW2ldLm5hbWUgfHwgc3B0YWI7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uZnJvbSA/IGNvbnRzW2ldLmZyb20gOiB0YWJzW2ldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYm5hbWUgPSBjb250c1tpXS5wbGF5ZXJfaW5mbyA/IGNvbnRzW2ldLnBsYXllcl9pbmZvLnNob3cgOiBzcHRhYjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIoXFxcImFwcG5vd1xcXCIpID09IGkgPyBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIHRhYm5hbWUuYm9sZCgpLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpIDogdGFibmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I25vTG9hZGluZyNAbGF6eVJ1bGU9LmpzOnB1dFZhcignYXBwbm93JywnXFxcIiArIGkgKyBcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKnyEnXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcihcXFwiYXBwbm93XFxcIikgPT0gaSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0YWIgPSBzcHRhYjtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdGFibmFtZSA9IHRhYm5hbWU7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKGk+KGkeKAneKAnVxcXCIgKyBwdGFibmFtZSArICctJyArIHB0YWIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2FwcG1hcHBzb3J0JywgZ2V0VmFyKCdhcHBtYXBwc29ydCcsJzEnKT09JzEnPycwJzonMScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8hJ1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgLy/pk77mjqXliJfooahcXG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBbXSxcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gZ2V0VmFyKFxcXCJhcHBub3dcXFwiKTtcXG4gICAgICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcyhcXFwiYXBpLnBocC9hcHBcXFwiKSB8fCBhcHBVcmwuaW5jbHVkZXMoXFxcInhnYXBwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBjb250c1tpbmRleF0udXJsLnNwbGl0KFxcXCIjXFxcIik7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsaXN0ID0gY29udHNbaW5kZXhdLnVybHMgPyBjb250c1tpbmRleF0udXJscyA6IGNvbnRzW2luZGV4XS51cmwuc3BsaXQoXFxcIiNcXFwiKTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcignYXBwbWFwcHNvcnQnLCAnMScpID09ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5yZXZlcnNlKCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLy/op6PmnpDmjqXlj6NcXG4gICAgICAgICAgICAgICAgbGV0IGppZWsgPSBbXTtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcImFwaS5waHAvYXBwXFxcIikgfHwgYXBwVXJsLmluY2x1ZGVzKFxcXCJ4Z2FwcFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgamllay5wdXNoKGNvbnRzW2luZGV4XS5wYXJzZV9hcGkgfHwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBqaWVrID0gKGNvbnRzW2luZGV4XS5wbGF5ZXJfaW5mby5wYXJzZTIgfHwgXFxcIlxcXCIpLnNwbGl0KFxcXCIsXFxcIikuY29uY2F0KChjb250c1tpbmRleF0ucGxheWVyX2luZm8ucGFyc2UgfHwgXFxcIlxcXCIpLnNwbGl0KFxcXCIsXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGppZWsgPSBqaWVrLm1hcChjdXIgPT4gY3VyLnJlcGxhY2UoXFxcIi4uXFxcIiwgXFxcIi5cXFwiKS5yZXBsYWNlKCdqc29uYnMnLCAnJykpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICAgICAgICAgICAgICBqaWVrID0gQXJyYXkuZnJvbShuZXcgU2V0KGppZWsuZmlsdGVyKGN1ciA9PiAhIWN1cikpKTtcXG4gICAgICAgICAgICAgICAgamllay5wdXNoKCfmlq3mj5Lop6PmnpAnKTtcXG4gICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTon5b2T5YmN6Kej5p6QOicgKyBnZXRNeVZhcignamlleGknLGppZWtbMF0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChqaWVrLDEpLnNlbGVjdCgoKT0+e1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpbnB1dCA9PSAn5pat5o+S6Kej5p6QJyl7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZG5lbicsJzEnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignamlleGknLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suabtOaUueino+aekCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgbGluZVZpc2libGU6IGZhbHNlIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBsZXQganhVcmwgPSBnZXRNeVZhcignamlleGknLCBqaWVrWzBdKSB8fCBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgLyppZiAoanhVcmwuc3Vic3RyaW5nKDAsIDIpID09ICdcXFxcL1xcXFwvJykge1xcbiAgICAgICAgICAgICAgICAgICAganhVcmwgPSAnaHR0cHM6JyArIGp4VXJsO1xcbiAgICAgICAgICAgICAgICB9Ki9cXG4gICAgICAgICAgICAgICAgLy/miZPljbDmjqXlj6NcXG4gICAgICAgICAgICAgICAgLy9sb2coJ1xcXFxu5b2T5YmN57q/6LevOicgKyBwdGFiICsgJ1xcXFxu6Kej5p6Q5YiX6KGoOicgKyAkLnN0cmluZ2lmeShqaWVrKSk7XFxuICAgICAgICAgICAgICAgIC8v6KeG6aKR5YiX6KGoXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZsaW5rID0gXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChsaXN0W2pdLnVybCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZsaW5rID0gbGlzdFtqXS51cmwucmVwbGFjZSgvIzQ1NiMvZywgJ2h0dHAnKS5yZXBsYWNlKC8jMTIzIy9nLCAnLicpLnJlcGxhY2UoLyM3ODkjL2csICc6Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBsaXN0W2pdLm5hbWU7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZsaW5rID0gbGlzdFtqXS5zcGxpdChcXFwiJFxcXCIpWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gbGlzdFtqXS5zcGxpdChcXFwiJFxcXCIpWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLy90aXRsZSA9IHRpdGxlLm1hdGNoKC8o56ysfFxcXFxkfC0pKijpm4Z86K+dfOacnykvZykgPyB0aXRsZS5yZXBsYWNlKC/nrKx86ZuGfOivnXzmnJ8vZywgJycpIDogdGl0bGU7XFxuICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbGF6eVBhcnNlXFxcIikpLnJ1bGUpXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoaXRlbXMpO1xcbiAgICAgICAgICAgIH0sIGNoYW5nZVVybCwgYXBwVXJsLCBhcHBVYSk7XFxuXFxuICAgICAgICAgICAgbGV0IGxhenlQYXJzZSA9ICQudG9TdHJpbmcoZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgIGxldCBlbkRuID0gZ2V0TXlWYXIoXFxcImRuZW5cXFwiLCBcXFwiMFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgdGVzdDEgPSB2bGluay5zZWFyY2goL3lvdWt1fG1ndHZ8aXhpZ3VhfHFxLmNvbXxxaXlpfG1pZ3V8YmlsaWJpbGl8c29odXxwcHR2fGxlfDE5MDUuY29tLykgIT0gLTEsXFxuICAgICAgICAgICAgICAgICAgICB0ZXN0MiA9IHZsaW5rLnNlYXJjaCgvTFRcXFxcLXxSb25nWGluZ1ZSXFxcXC18cmVucmVubWlcXFxcLXx4ZnlcXFxcLXxzdW95b1xcXFwuY2N8ZmVuXFxcXC5sYW9kaXx4dWVyZW5cXFxcLS8pICE9IC0xO1xcbiAgICAgICAgICAgICAgICBpZiAoKHRlc3QxIHx8IHRlc3QyKSAmJiBlbkRuID09ICcxJykge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5sYXp5UnVsZSgodmxpbmspID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFxu6LCD55So5pat5o+S6Kej5p6QLOinhumikemTvuaOpTpcXFwiICsgdmxpbmspO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImxldCBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChmZXRjaChjb25maWcuY2opKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKHZsaW5rKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHZsaW5rKVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5sYXp5UnVsZSgocHRhYiwgdmxpbmssIGp4VXJsLCBhcHBVcmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFxu5L2/55So6buY6K6k6Kej5p6QLOinhumikemTvuaOpTpcXFwiICsgdmxpbmspO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v6KeG6aKR6ZO+5o6l5aSE55CGXFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hhbmdlVmlkZW9VcmwodXJsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5pS55Y+Y54m55a6a5Zyw5Z2A55qEUmVmZXJlclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJ3a2ZpbGVcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgJzt7UmVmZXJlckBodHRwczovL2ZhbnR1YW4ud2tmaWxlLmNvbS99JztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwdGFiID09ICdiaWxpYmlsaScpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybCArICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLyYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH0nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHB0YWIgPT0gJ21ndHYnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tSZWZlcmVyQHd3dy5tZ3R2LmNvbSYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH0nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVybC5pbmNsdWRlcyhcXFwib2pia1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tSZWZlcmVyQGh0dHBzOi8vYmFrLm9qYmtqeC5jb20vfSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/ov5Tlm57op4bpopHpk77mjqVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1cmwuaW5jbHVkZXMoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLpk77mjqXkuI3mmK/ku6VodHRw5byA5aS0KOWPr+iDveWKoOWvhuS6hilcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFxcXC5tM3U4Ly50ZXN0KHVybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVNM3U4KHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmwgKyAnI2lzVmlkZW89dHJ1ZSMnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5Yqo5oCB6Kej5p6Q5Luj56CB5byA5aeLXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lpITnkIbop4bpopHmoLflvI/nmoTotYTmupDpk77mjqVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcLm0zdTh8XFxcXC5tcDR8b2JqXFxcXC90b3N8bmV0ZWFzZVxcXFwuY29tLy50ZXN0KHZsaW5rKSAmJiAvaHR0cC8udGVzdCh2bGluaykgJiYgIS9cXFxcLmh0bWwvLnRlc3QodmxpbmspKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIS9mZW5cXFxcLmxhb2RpfHN1b3lvXFxcXC5jYy8udGVzdCh2bGluaykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuajgOa1i+WIsOi1hOa6kOWcsOWdgOWPr+iDveaYr+inhumikemTvuaOpVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybCh2bGluayk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/ml6Dlj6/nlKjop6PmnpDnm7TmjqXmiqXplJlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFqeFVybCB8fCAveFxcXFwtblxcXFwuY2MvLnRlc3QoanhVcmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuaXoOWPr+eUqOino+aekFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5L2/55So6Kej5p6QXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFwi5L2/55So6Kej5p6QOlxcXCIgKyBqeFVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaW5rID0ganhVcmwgKyB2bGluayxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb2RlID0gSlNPTi5wYXJzZShmZXRjaChsaW5rLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJEYXJ0LzIuMTMgKGRhcnQ6aW8pXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhTdGF0dXNDb2RlOiB0cnVlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v6L+U5Zue6YeN5a6a5ZCR55qE6ZO+5o6lIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvZGUuc3RhdHVzQ29kZSA9PSAnMzAyJyB8fCBzY29kZS5zdGF0dXNDb2RlID09ICczMDEnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVkdXJsID0gc2NvZGUuaGVhZGVycy5sb2NhdGlvblswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coJ+mHjeWumuWQkTonICsgcmVkdXJsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghLyh1cmx8dmlkfHYpXFxcXD0vLnRlc3QocmVkdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChyZWR1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyplbHNlIGlmICgvXFxcXD1odHRwLy50ZXN0KHJlZHVybCkgJiYgL1xcXFwubTN1OHxcXFxcLm1wNHxcXFxcLmZsdi8udGVzdChyZWR1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVybCA9IHJlZHVybC5zdWJzdHJpbmcocmVkdXJsLmluZGV4T2YoJz1odHRwJykgKyAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvZGUuYm9keSA9IGZldGNoKHJlZHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lvIDlp4vll4XmjqJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBzY29kZS5ib2R5O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLzQwNCBOb3QgRm91bmR85aSH5qGI5ZCO5Y+v57un57ut6K6/6ZeuLy50ZXN0KGh0bWwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIjQwNOS6hlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKC9cXFxcPGJvZHkvLnRlc3QoaHRtbCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFtcXFwi5byA5aeL6KeG6aKR5ZeF5o6iXFxcIiwgXFxcIuaJk+W8gOino+aekOe9kemhtVxcXCIsIFxcXCLkvb/nlKjlhoXnva7op6PmnpBcXFwiXSwgMSwgXFxcIuajgOa1i+WIsOino+aekOS4uue9kemhteaVsOaNrlxcXCIpLnNlbGVjdCgobGluaywgcHRhYiwgdmxpbmssIGFwcFVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5byA5aeL6KeG6aKR5ZeF5o6iXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlQ2FjaGUoJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL2x6azIzNTU5L1B1YmxpY1J1bGUvcmF3L21hc3Rlci94NXJ1bGUuanMnLCAyNCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4NXJ1bGUobGluaywgbGluayk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFwi5omT5byA6Kej5p6Q572R6aG1XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyBsaW5rO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gXFxcIuS9v+eUqOWGhee9ruino+aekFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLkvb/nlKjlhoXnva7op6PmnpBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvYWRpbmcoXFxcIuato+WcqOi/m+ihjOino+aekC4uLlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbXlQYXJzZVxcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBsaW5rLCBwdGFiLCB2bGluaywgYXBwVXJsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKCflsJ3or5Xku45qc29u5pWw5o2u6I635Y+WJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwdXJsID0gSlNPTi5wYXJzZShodG1sKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHB1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbGV0IHB1cmwgPSBodG1sLm1hdGNoKC9bXFxcXCdcXFxcXFxcIl11cmxbXFxcXCdcXFxcXFxcIl06Lio/W1xcXFwnXFxcXFxcXCJdKC4qPylbXFxcXCdcXFxcXFxcIl0vKVsxXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHB1cmwpOyovXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfop6PmnpDlj6/og73liqDlr4bkuoYnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCdcXFxcbuacquiDveaIkOWKn+iOt+WPluinhumikeWcsOWdgDonICsgZS5tZXNzYWdlICsgXFxcIlxcXFxu5bCd6K+V5L2/55So6KeE5YiZ5YaF572u6Kej5p6QXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9teVBhcnNlXFxcIikpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WKqOaAgeino+aekOS7o+eggee7k+adn1xcbiAgICAgICAgICAgICAgICAgICAgfSwgcHRhYiwgdmxpbmssIGp4VXJsLCBhcHBVcmwpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcGFnZXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIG5hbWU6IFxcXCJBUFDliIbnsbvliJfooahcXFwiLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBcXFwiYXBwbGlzdGRhdGFcXFwiLFxcbiAgICAgICAgICAgICAgICBydWxlOiBydWxlX2FwcGxpc3RkYXRhXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICBuYW1lOiBcXFwiQVBQ6aaW6aG15YiX6KGoXFxcIixcXG4gICAgICAgICAgICAgICAgcGF0aDogXFxcImFwcGluZGV4ZGF0YVxcXCIsXFxuICAgICAgICAgICAgICAgIHJ1bGU6IHJ1bGVfYXBwaW5kZXhkYXRhXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICBuYW1lOiBcXFwiQVBQ6YCJ6ZuGXFxcIixcXG4gICAgICAgICAgICAgICAgcGF0aDogXFxcImFwcG1vdmxpc3RcXFwiLFxcbiAgICAgICAgICAgICAgICBydWxlOiBydWxlX2FwcG1vdmxpc3RcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLop4bpopHop6PmnpBcXFwiLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBcXFwibGF6eVBhcnNlXFxcIixcXG4gICAgICAgICAgICAgICAgcnVsZTogbGF6eVBhcnNlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICBsZXQgbXlQYXJzZSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9teVBhcnNlXFxcIikpLnJ1bGU7XFxuICAgICAgICBwYWdlcy5wdXNoKHtcXG4gICAgICAgICAgICBuYW1lOiBcXFwi5YaF572u6Kej5p6QXFxcIixcXG4gICAgICAgICAgICBwYXRoOiBcXFwibXlQYXJzZVxcXCIsXFxuICAgICAgICAgICAgcnVsZTogbXlQYXJzZVxcbiAgICAgICAgfSlcXG5cXG4gICAgICAgIHNlYXJjaEZpbmQgPSBcXFwianM6XFxcIiArICQudG9TdHJpbmcoZnVuY3Rpb24oY2hhbmdlVXJsLCBhcHB0eXBlLCBhcHBVcmwsIGFwcFVhKSB7XFxuICAgICAgICAgICAgbGV0IGl0ZW1zID0gW10sXFxuICAgICAgICAgICAgICAgIHNlYXJjaF91cmwgPSBjaGFuZ2VVcmwoTVlfVVJMLnNwbGl0KCcjIycpWzFdKSxcXG4gICAgICAgICAgICAgICAgYmh0bWwgPSBcXFwiXFxcIjtcXG5cXG4gICAgICAgICAgICBiaHRtbCA9IGZldGNoKHNlYXJjaF91cmwsIHsgaGVhZGVyczogeyBcXFwiVXNlci1BZ2VudFxcXCI6IGFwcFVhIH0gfSk7XFxuXFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgYmh0bWwgPSBiaHRtbC5zdGFydHNXaXRoKCdcXFxcclxcXFxuJykgPyBiaHRtbC5yZXBsYWNlKCdcXFxcclxcXFxuJywgJycpIDogYmh0bWw7XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgICAgICAgICBpZiAoL2J0d2FmLy50ZXN0KGJodG1sKSkge1xcbiAgICAgICAgICAgICAgICBiaHRtbCA9IGZldGNoKHNlYXJjaF91cmwgKyAnJmJ0d2FmJyArIGJodG1sLm1hdGNoKC9idHdhZiguKj8pXFxcXFxcXCIvKVsxXSwgeyBoZWFkZXJzOiB7IFxcXCJVc2VyLUFnZW50XFxcIjogYXBwVWEgfSB9KTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKGJodG1sKSxcXG4gICAgICAgICAgICAgICAgbGlzdCA9IFtdO1xcbiAgICAgICAgICAgIGlmICgv56We6amsfFRWLy50ZXN0KGFwcHR5cGUpKSB7XFxuICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLmRhdGE7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKGFwcFVybC5pbmNsdWRlcygnYXBpLnBocC9hcHAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGh0bWwubGlzdDtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcHBVcmwuaW5jbHVkZXMoJ3hnYXBwJykpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLmRhdGE7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhLmxpc3Q7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGlmICgv56We6amsfFRWLy50ZXN0KGFwcHR5cGUpKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgeyB0aXRsZSwgcGljLCBuZXh0bGluazogdXJsLCBzdGF0ZTogZGVzYyB9ID0gbGlzdFtpXTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBVcmwuaW5jbHVkZXMoJ2FwaS5waHAvYXBwJykgfHwgYXBwVXJsLmluY2x1ZGVzKCd4Z2FwcCcpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHsgdm9kX25hbWU6IHRpdGxlLCB2b2RfcGljOiBwaWMsIHZvZF9yZW1hcmtzOiBkZXNjIH0gPSBsaXN0W2ldLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSBhcHBVcmwgKyAndmlkZW9fZGV0YWlsP2lkPScgKyBsaXN0W2ldLnZvZF9pZCArICcmdG9rZW49JztcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHsgdm9kX25hbWU6IHRpdGxlLCB2b2RfcGljOiBwaWMsIHZvZF9yZW1hcmtzOiBkZXNjIH0gPSBsaXN0W2ldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvaW9wZW55dW4vLnRlc3QoYXBwVXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gYXBwVXJsICsgJy9kZXRhaWxJRD92b2RfaWQ9JyArIGxpc3RbaV0udm9kX2lkICsgJyZ0b2tlbj0nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBhcHBVcmwgKyAnL2RldGFpbD92b2RfaWQ9JyArIGxpc3RbaV0udm9kX2lkICsgJyZ0b2tlbj0nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjaW1tZXJzaXZlVGhlbWUjaGlrZXI6Ly9lbXB0eSMjXFxcIiArIHVybCkucnVsZSgoYXBwdHlwZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgv56We6amsfFRWLy50ZXN0KGFwcHR5cGUpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3R2bW92bGlzdCcpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9hcHBtb3ZsaXN0JykpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIGFwcHR5cGUpXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBzZXRSZXN1bHQoaXRlbXMpO1xcbiAgICAgICAgfSwgY2hhbmdlVXJsLCBhcHB0eXBlLCBhcHBVcmwsIGFwcFVhKVxcblxcbiAgICAgICAgbGFzdF9jaGFwdGVyX3J1bGUgPSBcXFwianM6XFxcIiArICQudG9TdHJpbmcoZnVuY3Rpb24oYXBwdHlwZSwgYXBwVXJsLCBhcHBVYSkge1xcbiAgICAgICAgICAgIGxldCBjaHAgPSBbXTtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBsZXQgY29udHMgPSBbXSxcXG4gICAgICAgICAgICAgICAgICAgIGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXSwgeyBoZWFkZXJzOiB7IFxcXCJVc2VyLUFnZW50XFxcIjogYXBwVWEgfSB9KSk7XFxuICAgICAgICAgICAgICAgIGlmICgv56We6amsfFRWLy50ZXN0KGFwcHR5cGUpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250cyA9IE9iamVjdC5rZXlzKGh0bWwudmlkZW9saXN0KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcHBVcmwuaW5jbHVkZXMoXFxcImFwaS5waHAvYXBwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXI7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHMubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9wbGF5X3VybC5zcGxpdCgnJCQkJyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwVXJsLmluY2x1ZGVzKFxcXCJ4Z2FwcFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGxheV91cmwuc3BsaXQoJyQkJCcpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfbGlzdDtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfdXJsLnNwbGl0KCckJCQnKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFtdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoL+elnumprHxUVi8udGVzdChhcHB0eXBlKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLnZpZGVvbGlzdFtjb250c1tpXV07XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRzW2ldLnVybHMpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gY29udHNbaV0udXJscztcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udHNbaV0udXJsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnVybC5zcGxpdChcXFwiI1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gY29udHNbaV0uc3BsaXQoXFxcIiNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNocC5wdXNoKGxpc3QubGVuZ3RoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICAgICAgc2V0UmVzdWx0KCfmm7TmlrDoh7M6JyArIChNYXRoLm1heC5hcHBseShNYXRoLCBjaHApKSk7XFxuICAgICAgICB9LCBhcHB0eXBlLCBhcHBVcmwsIGFwcFVhKTtcXG5cXG4gICAgICAgIHJ1bGVzLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBhcHB0aXRsZSxcXG4gICAgICAgICAgICBhdXRob3I6IGdldE15VmFyKCdyZW1vdGVVcmwnKSxcXG4gICAgICAgICAgICB0eXBlOiBhcHB0eXBlLFxcbiAgICAgICAgICAgIHVybDogaG9tZV91cmwsXFxuICAgICAgICAgICAgZmluZF9ydWxlOiBmaW5kX3J1bGUsXFxuICAgICAgICAgICAgc2VhcmNoX3VybDogc2VhcmNoX3VybCxcXG4gICAgICAgICAgICBzZWFyY2hGaW5kOiBzZWFyY2hGaW5kLFxcbiAgICAgICAgICAgIHBhZ2VzOiBKU09OLnN0cmluZ2lmeShwYWdlcyksXFxuICAgICAgICAgICAgbGFzdF9jaGFwdGVyX3J1bGU6IGxhc3RfY2hhcHRlcl9ydWxlLFxcbiAgICAgICAgICAgIGljb246IGFwcGljb25cXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbi8qJC5leHBvcnRzID0ge1xcbiAgICBydWxlczogcnVsZXMsXFxuICAgIHR5cGVzOiB0eXBlc1xcbn0qL1xcbiQuZXhwb3J0cyA9IHJ1bGVzO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YaF572u5pWw5o2uXCIsXCJwYXRoXCI6XCJSZXNDb2RlXCIsXCJydWxlXCI6XCJ7XFxuICAgIFxcXCJkYXRhXFxcIjpbXFxuICAgICAgICB7XFxuICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLkvJjotKhcXFwiLFxcbiAgICAgICAgXFxcImxpc3RcXFwiOltcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiMTA4MHBcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovLzEwODBwLm9uZS9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uLzEwODBwLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCIxMjMxRFxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vdnVlLmFwcC55dW5ib3lzLmNuL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24vMTIzMUQucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIjMwMOeci+S4lueVjFxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vMzAweXMueHl6L2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24vMzAw55yL5LiW55WMLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCI0S+W9semZolxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly8xYXBpLjRrZHl0di5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi80S+W9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiODBL5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly8xMDgwcC50di9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uLzgwS+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiQ0pU5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cuY2p0NTIxLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL0NKVOW9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiREPlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vY2hhb3JlbmJiLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL0RD5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCJGN+mrmOa4hVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9iYy5oYW9rYW5qdTEuY2MvbHZkb3VfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi9GN+mrmOa4hS5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiSEflvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vaGd5eC52aXAvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi9IR+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwibDBs5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9sMGwudHYvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi9sMGzlvbHpmaIucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueIseeci+e+juWJp1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3LnV1bWp3LmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+eIseeci+e+juWJpy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi54ix6YW35b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cuemhhbmxhbmdidS5jb20vcnVpZmVuZ2xiX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54ix6YW35b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLoj5zpuJ/ov73liadcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vODEuNzEuMTguOTU6NTU1NS9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+iPnOm4n+i/veWJpy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi55m95auW5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3pnanhkdGcuY24vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nmb3lq5blvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueIseeci+W9semZolxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly93d3cuYTkxLmNtL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6YCa55So5Zu+5qCHLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLliJ3lv4PlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3d3dy4xOG12LmNsdWIvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/liJ3lv4PlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueLrOaSreekvlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly8zNXlzLmNjL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54us5pKt56S+LnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlj67lvZPlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3R2LjA1NzN3bC5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lj67lvZPlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuauteWPi+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly8xMjEuMjA0LjI0OS4xMzU6NDQzMy9ydWlmZW5nbGJfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mrrXlj4vlvbHop4YzLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmrrXlj4vlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3NoYW5namlodW9rZS5jb20vYXBpLnBocC90di52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mrrXlj4vlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIumlreWQjueUteW9sVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9zdW1tLnZpcC9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+mlreWQjueUteW9sS5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6aOe5o235b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cuZmo2MDgwLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+mjnuaNt+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi55av54uC55yLXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2FwcC5ma2tkeS52aXAvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nlq/ni4LnnIvnlLXlvbEucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueyieixoeinhueVjFxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly80Mi4xNTcuMTI5LjE1OjM0NDQ0L2x2ZG91X2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v57KJ6LGh6KeG55WMLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmsYfogZrlupNUVlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3Lnp6Y2xvdmU2NjYuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5rGH6IGa5bqTVFYucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuiZjueMq+inhumikVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vaHVtYW9zcC5jb20vbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/omY7njKvop4bpopEucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWPr+exs+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly93d3cua215cy52aXAvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lj6/nsbPlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuW6t+iAgOW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hcHAueWJ5eWRzLmNuL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5bq36ICA5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnu7/nrq3lvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd3d3LjY5dHkuY2MvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nu7/nrq3lvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuaHkueMq+eUteW9sVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly93d3cuZXNlbGxhdXRvLmNvbS9ydWlmZW5nbGJfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mh5LnjKvnlLXlvbEucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuicnOicguW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hcHAuZjh0cC5jb20vbHZkb3VfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/onJzonILlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIum6u+eTnOinhumikVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hbGl5dW4uazhhYS5jb20vbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/purvnk5zop4bpopExLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnvo7liafomatcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL21laWp1Y2hvbmcuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v576O5Ymn6JmrLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmnKjlrZDnlLXlvbFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd3d3Lm11emlkeS50b3AvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mnKjlrZDnlLXlvbEucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWliOmdnui/t1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vYXBwLm5ldGZsaXhtaS5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lpYjpnZ7ov7flvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWNl+W6nOW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9pYXBwLm5mdXhzLmNsdWIvZG5tYi5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5Y2X5bqc5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmmpblhYnlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL2FwcC5ibDIxMC5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mmpblhYnlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuW/teW/teW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vOTk4Lnl1YW5tYWpzLmNuL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5b+15b+15b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmn6Dmn5rlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vbnUuZTR0di5jbi9sdmRvdV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+afoOafmuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5aWH5oCq6KeG6aKRXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9naWd1YWkubmV0L2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6YCa55So5Zu+5qCHLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLkuIPpm7bliqjmvKtcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL2NmLjcweXUuY24vbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/kuIPpm7bliqjmvKsucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueRnuS4sOi1hOa6kFxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vdHYueWpoYW4uY29tOjQ0MzMvcnVpZmVuZ2xiX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v55Ge5LiwLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLpl6rlhYnlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vMTAxLjM1LjEyOC4xOTIvbXViYWlfYXBpLnBocC9tMi52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/pl6rlhYnlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuaAneS5kOW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3Lmh1YW5kaWFuLnRvcC9ydWlmZW5nbGJfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mgJ3kuZDlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWkqeivmuW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly90Y3NwdmlwLmNuL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5aSp6K+a5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlpKnlpKnlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL2FwcC5kYWlzaHVzYy5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lpKnlpKnlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIua4qeWmruW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3Lndlbm5peXMuY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5rip5aau5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlsI/nmb3liqjmvKtcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vMTIxLjYyLjYwLjIyMjoyMDIyMi9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+Wwj+eZveWKqOa8qy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5pif6L6w6KeG6aKRXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9tLmhqMDk5OS5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mmJ/ovrDop4bpopEucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWwj+aegeW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hcHAuOGQ4cS5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lsI/mnoHlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuW/g+m4vuW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly96aGl5dXR2Lnh5ei9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+W/g+m4vuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6Zuq5Lq65b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly96eS5xZDIzNC5jbi9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+mbquS6uuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi55uK6L6+5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2x1b2J1LnlzczYwODAuY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v55uK6L6+5b2x6ZmiLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLpm6jmnpzlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vMi55aHlzNjMuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6Zuo5p6c5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlvbHop4blpKflhahcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vYXBwLjI2OXcuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5b2x6KeG5aSn5YWoLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmnIjoibLlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vNjl0eS5jYy9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+aciOiJsuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5LyY6KeG5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2NjLnlzeXMuYXNpYS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+S8mOinhuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5b2x6ZiF6ZiBXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovLzIyMS4yMzYuMTguMTI6NjY1L2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5b2x6ZiF6ZiBLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLov73liaflkKdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vemh1aWp1OC52aXAvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/ov73liaflkKflvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIF1cXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmma7pgJpcXFwiLFxcbiAgICAgICAgXFxcImxpc3RcXFwiOltcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiNTHop4bpopFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vNTFzaGlwaW4uY2MvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi81MeinhumikS5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiODDlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd3d3LmNjYzgubmV0L2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24vODDlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIkpET0RPXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9hcHB5cy5qZG9kby54eXovbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi9KRE9ET+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiUUPlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3d3dy5xY3N2aXAuY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24vUUPlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIlU15b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9hcHB4LnV5MDcuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24vVTXlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIlhH5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2Ntcy54Z2dtLnRvcC9ydWlmZW5nbGJfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi9YR+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwieW95b1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9qeC53bnZvZC5uZXQvcnVpZmVuZ2xiX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24veW95b+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6Zi/6YeM5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2FsaXlzLmNuOjkwL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6Zi/6YeM5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLll7flkZzlvbHpmaJcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vYW93dS5wcm8vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/ll7flkZzlvbHpmaIucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueIseW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3Lmh6bGZmLmNuL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54ix5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLniLHov73liadcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vODEuNzEuMTguOTU6NTIwL2x2ZG91X2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54ix6L+95YmnLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLoib7nibnlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3d3dy5haXRlZS5jYy9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+iJvueJueW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi55m96I+c6L+95YmnXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2xiYXBwLmh1aW1hb2ppYS5jb206MzAxMTkvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nmb3oj5zov73liacucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuavlOmCu+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly8waHp5LmNuOjk5OTAvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mr5TpgrvlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueZvuiur+inhumikVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vei5pb3Blbnl1bi5jb206OTkvYXBwX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v55m+6K6v6KeG6aKRLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLoj5zpuJ/liqjmvKtcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vdGFpa29uZy5odWFuZ2d1YXkuY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6I+c6bif5Yqo5ryrLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlpKflpLTlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vZHkuaWRzYW8uY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5aSn5aS05b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmrrXlj4vlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vanMuNjZhcHAubWUvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mrrXlj4vlvbHop4YyLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLosYbmuKPlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vZG91emhheXNzLmNjL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6LGG5rij5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLkuozkuZ3lvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL2FwcC4xOWtwLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+S6jOS5neW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6aOO5ZCv5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3lzdy5lZS9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+mjjuWQr+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6L6J5ZOl5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9hcHAueS5oZ3l1bGU4LmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+i+ieWTpeW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6buE5rKz5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2kubGVkdTguY24vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/pu4TmsrPlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueBq+aYn+S6ulxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3Lmh1b3hpbmc5LmNvbS9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+eBq+aYn+S6uuW9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5pmX5YWI5qOuXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9oYW50di50b3AvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mmZflhYjmo67lvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuebkuWtkOW9semZolxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9pLm5paGFvaGV6aS5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nm5LlrZDlvbHpmaIucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueti+aWl+S6kVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vdHYuamluZGNsb3VkLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+eti+aWl+S6keW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5p6B5YWJ5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2FwcC53aW54ei5jYy9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+aegeWFieW9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6IGa5ZCI6KeG6aKRXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9hcHAuamh5c3R2LmNvbS9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+iBmuWQiOinhumikS5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5LmF5LmF5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3M5dDkuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5LmF5LmF5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLliafov7fop4bpopFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vcGFuLmh6YWZ3LmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WJp+i/t+inhumikS5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5qmY5a2Q5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2p6Lmp1emlkeS52aXAvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mqZjlrZDlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuW/q+aSreWQp1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hcHAuaGQ4LnB3L2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5b+r5pKt5ZCnLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnnIvliaflkKdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vYXBwLmlzaGVuNTIwLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+eci+WJp+WQpy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi55yL55yL5YmnXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cua2Fua2FuanUuY24vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nnIvnnIvliacucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIumFt+mFt+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly93d3cuY2NjOC5uZXQvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/phbfphbflvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWPr+exs+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9zai5rbXlzLnZpcC9ydWlmZW5nbGJfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lj6/nsbPlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIue7v+ixhuinhumikVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vdi5sdmRvdWkuY24vbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nu7/osYblvbHpn7MucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuiTneWFieinhumikVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly92aXAuOTFpcWl5aS5jb20vbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/ok53lhYnop4bpopEucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuael+iwt+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly95cy5saW5ndXl5Lnh5ei9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+ael+iwt+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5Ya36KeGVFZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL2xlbi50di9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WGt+inhlRWLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnvo7liafojINcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vdHR6bXoubmV0L2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v576O5Ymn6IyDLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLllrXkuZDlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vbWlhb2xleXMuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5Za15LmQ5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlkI3op4blvbFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vYXBwLnFxY2N2LmNvbS9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WQjeinhuW9sS5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6bq75a2Q6L+95YmnXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2IuMm1hei5jbi9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+m6u+WtkOi/veWJpy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5aWI6aOe5Lit5paHXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cubmFpZmVpLm9yZy9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WliOmjnuS4reaWhy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6Iu55p6c5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9hcHBsZTY3OC54eXovYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/oi7nmnpzlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuearuearuWKqOa8q1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9kbS5tdXlpbmcubWUvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nmq7nmq7liqjmvKsucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWlh+i2o+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vYXBwLnFpcXUubWUvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lpYfotqPlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuS7u+aAp+eci1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vcmVueGluZ2thbi5uZXQvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/ku7vmgKfnnIsucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuaAneWlh+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hcHAuc2lxaXR2LnZpcC9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+aAneWlh+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5LiJ5pel5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cuM3JpLm5ldC9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+S4ieaXpeW9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi56We6ams5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3hzLjc4dHYuY2MvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/npZ7pqazlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuinhuWQrOaYn+eQg1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly96anlhcGlqenlzLnNoeW53bGtqLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+inhuWQrOaYn+eQgy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5Zyf6LGGVFZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8veGl1eGlhbi5xZDIzNC5jbi9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+Wcn+ixhlRWLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmt5jliafnpL5cXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL2FwcC5zaHVoYWk5OS5jb20vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mt5jliafnpL4ucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWkqeepuuW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vdHYuNTFhaXpuLmNvbS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WkqeepuuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5aSp5aSp6KeG6aKRXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2FwcC5xaWFuanUuY2MvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lpKnlpKnop4bpopEucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWFlOWtkOeqnVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9jai5odWltYW9qaWEuY29tOjEyMzQ1L21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5YWU5a2Q56qdLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmiJHniLHot5/liadcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3d3dy5nZW5tb3YuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5oiR54ix6Lef5YmnLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlkL7niLHlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vYXBwLjVscC5uZXQvYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lkL7niLHlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWQvueIseW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly81Mnlzdy54eXovbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lkL7niLHlvbHop4YxLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlkLvnl5Xop4bpopFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd3d3Lmtpc3NvbmUuY24vcnVpZmVuZ2xiX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5ZC755eV6KeG6aKRLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLonJfniZvliqjmvKtcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd29uaXVkbS53b25pdS5jeW91OjIwMDAwL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6JyX54mb5Yqo5ryrLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlr7vluLjlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vdHYuOTF5bXouY24vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lr7vluLjlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueGiueMq+WKqOa8q1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9kb25nbWFuLms4YWEuY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54aK54yr5Yqo5ryrLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnhornjKvop4bpopFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vYW5lZ2guY29tL2x2ZG91X2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54aK54yr6KeG6aKRLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnjrrlqJzlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3BwLnd4aW5hLmNuL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54665aic5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlsI/onLvonJNcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vM2tldHYuY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5bCP6Jy76JyT6KeG6aKRLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmmJ/nkIPop4bpopFcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vMTE5LjI5LjEyMS40ODo4MDg4L2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5pif55CD6KeG6aKRLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnjrrlv4PlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3R2LmFyYmQuY24vYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/njrrlv4PlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuaWsOS6q+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vYXBwLmppYWdhbi5jeC9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+aWsOS6q+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5pif5b2x55u46ZqPXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2FwcC5yb290dGhyZWUudG9wL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5pif5b2x55u46ZqPLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlsI/mmJPlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8veHkuaXJvcC5jbi9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+Wwj+aYk+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5LqR5Z+O5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly9heXlmLmNuL211YmFpX2FwaS5waHAvbTIudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5LqR5Z+O5b2x6ZmiLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmnIjlhL/lvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwczovL3l1ZTUyLnh5ei9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+mAmueUqOWbvuaghy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5qix6Iqx5Yqo5ryrXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cuZG13dS5jYy9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+aoseiKseWKqOa8qy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5pyI5Lqu5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3lzLjEzdHYudG9wL2Fjal9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+aciOS6ruW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5b2x6KeG5aSn5YWoXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly94Yy54aXhpMnl5Lnh5ei9tb2dhaV9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+W9seinhuWkp+WFqEhELnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlvbHop4bng63liadcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vbGIuMjZ5cy5jbi9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+W9seinhueDreWJpy5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5riU5riU5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2x1b2JvLnl1Z2VueWUuc2l0ZS9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+a4lOa4lOW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5LyY5LyY5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3hpbi5qanN2aXAuY2MvbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/kvJjkvJjlvbHpmaIucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuafmuWtkOinhumikVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly95ei4yNnlzLmNuL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5p+a5a2Q6KeG6aKRLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLpsbzku5TlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8veXV6YWlvLnRvcC9hcGkucGhwL3YxLnZvZFxcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+mxvOS7lOW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6L+95Ymn6L6+5Lq6XFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cHM6Ly93d3cuemh1aWp1ZGFyZW4uY29tL21vZ2FpX2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6L+95Ymn6L6+5Lq6LnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLov73liafnjKtcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vdHYua210dmIuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6L+95Ymn54yrMS5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpBUFDlvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5L6m5o6i5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3lzLmh1YW5nZ3VheS5jb20vbW9nYWlfYXBpLnBocC92MS52b2RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/kvqbmjqLlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6QVBQ5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIueMqueMquW9semZolxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hcHAuMnpkeXkuY29tL2FwaS5waHAvdjEudm9kXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54yq54yq5b2x6ZmiLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOkFQUOW9seinhlxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICBdXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiSVBUVlxcXCIsXFxuICAgICAgICBcXFwibGlzdFxcXCI6W1xcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCIy5Y+35biBXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3Bob2ViZS5jZi9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uLzLlj7fluIHlvbHpmaIucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwiQ1blvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd3d3LmNjY3Z2di50b3AvYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi9DVuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCJIR+W9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9hcGkuaGd5eC52aXAvYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi9IR+W9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlgrLop4blvbHpmaJcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vai56amoubGlmZTo4OC9tdi9hcGkucGhwL0NoZW5nY2hlbmcvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WCsuinhuW9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLniLHopb/opb9UVlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly90di5haXhpeGkudmlwL2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v54ix6KW/6KW/VFYucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi55m954aK5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3F0LnloenkueHl6L2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v55m954aK5b2x6ZmiLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWIuuahkOW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly90di5jdHR2LnZpcC9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WIuuahkOW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlsJjmopNUVlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9jenR2LnZpcDo4My9hcGkucGhwL2NoZW56aXlzdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WwmOaik1RWLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWYgOWTqeWYgOWTqVxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vYXBpLmRpbGlrdHYueHl6L2FwaS5waHAvQ2hlbmdjaGVuZy92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5ZiA5ZOp5ZiA5ZOpVFYucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5Yqo5Yqb5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3d3dy5sb3ZlOTk4OS5jb20vYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/liqjlipvlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5aSn5biI5YWEXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2RzeHR2LnR2LmNpL2FwaS5waHAvZHN4L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lpKfluIjlhYTlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5LqM6LSn5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2QuempqLmxpZmU6ODgvbXYvYXBpLnBocC9DaGVuZ2NoZW5nL3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/kuozotKflvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6Z2e5Yeh5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2Ntcy5mZWlmYW4xMi54eXovYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/pnZ7lh6HlvbHpmaIucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6aOe5omsVFZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vZGlhbmNqLnpoZW5meS5jbi9hcGkucGhwL0NoZW5nY2hlbmcvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+mjnuaJrFRWLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWYv+iNvOmUi1xcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly90di5oZnlzOC52aXAvYXBpLnBocC9TbnR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lmL/ojbzplIsucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6buR6b6Z5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3ZpcC5qaS1kaW5nLWhlLnNpdGUvYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/pu5HpvpnlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5rKz6ams5b2x6ZmiXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovLzEuMTQuNjMuMTAxL2FwaS5waHAvQ2hlbmdjaGVuZy92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5rKz6ams5b2x6ZmiLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuiBmuWkmuW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9qZHl5LndlZXRhaS5jbi9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+iBmuWkmuW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLkuYXkuYXlvbHpmaJcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vbC5iaHR2Lm9yZy5jbi9tdi9hcGkucGhwL0NoZW5nY2hlbmcvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+S5heS5heW9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLkuZDphbdUVlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly8xNTAuMTM4Ljc4LjE3NzoyMDIxL2FwaS5waHAvQ2hlbmdjaGVuZy92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5LmQ6YW3VFYucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5oeS54yrVFZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd3d3LmVzZWxsYXV0by5jb20vYXBpLnBocC9saC92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5oeS54yrVFYucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi5YWt57u05b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2xpdXdlaWlwdHYuZ3E6MTM1Ny9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WFree7tOW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLmtYHmmJ/pm6hcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vbm4ubHh5eXkueHl6OjgvYy9hcGkucGhwL1dBaUxhb3dhbmcvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+a1geaYn+mbqOW9semZoi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlhrfmnIhUVlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHBzOi8vdHYuNTIxeDUuY29tL2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5Ya35pyIVFYucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6I2U5p6d5b2x6KeGXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2FwaS56anlzLnZpcC9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+iNlOaeneW9seinhlRWLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWFjei0ueeci1RWXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3d3dy5mcmVla2FuLnZpcC9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WFjei0ueeci1RWLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuicnOaenFRWXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3Z2Lm1pZ3VvdHYubmV0L20vYXBpLnBocC9DaGVuZ2NoZW5nL3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/onJzmnpxUVi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLnsbPmnaXlvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vNDIuNTEuMzcuMTYxOjIzNDYvYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/nsbPmnaXlvbHop4YucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi57Gz5aWHVFZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vd3d3LnM2ZXAzLnRvcC9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+exs+Wlh1RWLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuS4g+enkeW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly90di43a2ZtLmNuL2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5LiD56eR5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuiLpeaDnOW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9yeHcucnVveGluZXcuY29tL2FwaS5waHAvU250di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6Iul5oOc5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuaAneWlh1RWXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3R2LnNpcWl0di52aXAvYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/mgJ3lpYdUVi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlj4zlrZDmmJ9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vdHYuZGl5b3VpLmNjL2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5Y+M5a2Q5pifLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWxsealguW9seinhlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly9keTYuZGNkMS5jbi9hcGkucGhwL2lwdHYvdm9kL1xcXCIsXFxuICAgICAgICAgICAgXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vaW5tZW1vcnkuY29kaW5nLm5ldC9wL0luTWVtb3J5L2QvTUJyb3dzZXIvZ2l0L3Jhdy9tYXN0ZXIvQXBwRmlsZS9BcHBJY29uL+WxsealguW9seinhi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlpKnnqbpUVlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly90di50a3lzLnR2L2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v5aSp56m6VFYucG5nXFxcIixcXG4gICAgICAgICAgICBcXFwibXVybFxcXCI6XFxcInE6VFblvbHop4ZcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB7XFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjpcXFwi6Jm+55qu6KeG6aKRXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL3R2LmNtdDgueHl6L2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v6Jm+55qu6KeG6aKRLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAge1xcbiAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6XFxcIuWwj+aegVRWXFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjpcXFwiaHR0cDovL2FwaS44ZDhxLmNvbS9tbXYvYXBpLnBocC9DaGVuZ2NoZW5nL3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lsI/mnoFUVi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLlsI/nhornjKtUVlxcXCIsXFxuICAgICAgICAgICAgXFxcInVybFxcXCI6XFxcImh0dHA6Ly90djIuaGV0YW95cy52aXAvYXBpLnBocC9pcHR2L3ZvZC9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJpbWdcXFwiOlxcXCJodHRwczovL2lubWVtb3J5LmNvZGluZy5uZXQvcC9Jbk1lbW9yeS9kL01Ccm93c2VyL2dpdC9yYXcvbWFzdGVyL0FwcEZpbGUvQXBwSWNvbi/lsI/nhornjKtUVi5wbmdcXFwiLFxcbiAgICAgICAgICAgIFxcXCJtdXJsXFxcIjpcXFwicTpUVuW9seinhlxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHtcXG4gICAgICAgICAgICBcXFwidGl0bGVcXFwiOlxcXCLntKvmm6blvbHop4ZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOlxcXCJodHRwOi8vYXBweXMuYXp4LnRvb2xzOjg4L2FwaS5waHAvaXB0di92b2QvXFxcIixcXG4gICAgICAgICAgICBcXFwiaW1nXFxcIjpcXFwiaHR0cHM6Ly9pbm1lbW9yeS5jb2RpbmcubmV0L3AvSW5NZW1vcnkvZC9NQnJvd3Nlci9naXQvcmF3L21hc3Rlci9BcHBGaWxlL0FwcEljb24v57Sr5pum5b2x6KeGLnBuZ1xcXCIsXFxuICAgICAgICAgICAgXFxcIm11cmxcXFwiOlxcXCJxOlRW5b2x6KeGXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIF1cXG4gICAgICAgIH1cXG4gICAgXVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuiOt+WPlmFwcOWIl+ihqFwiLFwicGF0aFwiOlwiYXBwSnNvblwiLFwicnVsZVwiOlwibGV0IGFwcGZpbGUgPSBcXFwiXFxcIjtcXG50cnkge1xcbiAgICBhcHBmaWxlID0gZmV0Y2goZ2V0TXlWYXIoXFxcInN1YnNjcmlwdGlvblxcXCIpKTtcXG59IGNhdGNoIChlKSB7fVxcblxcbmxldCBhcHBqc29uID0ge307XFxuaWYgKC9Jbk1lbW9yeS8udGVzdChhcHBmaWxlKSkge1xcbiAgICBhcHBqc29uID0gSlNPTi5wYXJzZShhcHBmaWxlKTtcXG59IGVsc2Uge1xcbiAgICBhcHBqc29uID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvUmVzQ29kZVxcXCIsIHt9KSkucnVsZSk7XFxufVxcblxcbiQuZXhwb3J0cyA9IGFwcGpzb247XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlhoXnva7mlbDmja4yXCIsXCJwYXRoXCI6XCJteVBhcnNlXCIsXCJydWxlXCI6XCIoKCkgPT4ge1xcbiAgICBmdW5jdGlvbiBjaGFuZ2VWaWRlb1VybCh1cmwpIHtcXG4gICAgICAgIC8v5pS55Y+Y54m55a6a5Zyw5Z2A55qEUmVmZXJlclxcbiAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFwid2tmaWxlXFxcIikpIHtcXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tSZWZlcmVyQGh0dHBzOi8vZmFudHVhbi53a2ZpbGUuY29tL30nO1xcbiAgICAgICAgfSBlbHNlIGlmIChwdGFiID09ICdiaWxpYmlsaScpIHtcXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8mJlVzZXItQWdlbnRATW96aWxsYS81LjB9JztcXG4gICAgICAgIH0gZWxzZSBpZiAocHRhYiA9PSAnbWd0dicpIHtcXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tSZWZlcmVyQHd3dy5tZ3R2LmNvbSYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH0nO1xcbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5jbHVkZXMoXFxcIm9qYmtcXFwiKSkge1xcbiAgICAgICAgICAgIHVybCA9IHVybCArICc7e1JlZmVyZXJAaHR0cHM6Ly9iYWsub2pia2p4LmNvbS99JztcXG4gICAgICAgIH1cXG4gICAgICAgIC8v6L+U5Zue6KeG6aKR6ZO+5o6lXFxuICAgICAgICBpZiAoIXVybC5pbmNsdWRlcyhcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLpk77mjqXkuI3mmK/ku6VodHRw5byA5aS0KOWPr+iDveWKoOWvhuS6hilcXFwiKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKC9cXFxcLm0zdTgvLnRlc3QodXJsKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVNM3U4KHVybCk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybCArICcjaXNWaWRlbz10cnVlIyc7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIC8vYWVz6Kej5a+GXFxuICAgIGZ1bmN0aW9uIERlKGRhdGEsIHRva2VuX2tleSwgdG9rZW5faXYpIHtcXG4gICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7XFxuICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UodG9rZW5fa2V5KTtcXG4gICAgICAgIHZhciBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHRva2VuX2l2KTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdChkYXRhLCBrZXksIHtcXG4gICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgIH07XFxuICAgIGlmICh2bGluay5pbmNsdWRlcygnbTN1OC5jYWNoZS5zdW95by5jYycpKSB7XFxuICAgICAgICBsZXQgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9qaHBjLm1hbmR1aHUuY29tL2R1b2R1by9hcGkucGhwJywgeyBib2R5OiAndXJsPScgKyB2bGluaywgbWV0aG9kOiAnUE9TVCcgfSkpLnVybDtcXG4gICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChEZSh1cmwsIG1kNSgnclhqV3ZYbDYnKSwgJ05YYkhvV0picHNFT2luOGInKSk7XFxuICAgIH0gZWxzZSBpZiAodmxpbmsuaW5jbHVkZXMoJ3J1aWZlbmdsYicpKSB7XFxuICAgICAgICBsZXQgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cDovL3RzLnlqaGFuLmNvbTo4MDkwL2FwaS8/a2V5PURTUUZnWGRtajl4a0R5aVhkciZ1cmw9JyArIHZsaW5rKSkudXJsO1xcbiAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHVybCk7XFxuICAgICAgICAvKmxldCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vdHYueWpoYW4uY29tOjQ0MjMvQ0w0Sy8/dXJsPScgKyB2bGluayksXFxuICAgICAgICAgICAgbGVfdG9rZW4gPSBodG1sLm1hdGNoKC9sZV90b2tlbi4qPS4qXFxcIiguKilcXFwiLylbMV0sXFxuICAgICAgICAgICAgdXJsID0gaHRtbC5tYXRjaCgvXFxcInVybFxcXCIuKjouKlxcXCIoLiopXFxcIi8pWzFdO1xcbiAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKERlKHVybCwgXFxcIkE0MkVBQzBDMkI0MDg0NzJcXFwiLCBsZV90b2tlbikpOyovXFxuICAgIH0gZWxzZSBpZiAodmxpbmsuaW5jbHVkZXMoXFxcInh1ZXJlbi1cXFwiKSkge1xcbiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly9kaWFveW9uZy5xZDIzNC5jbi8/dXJsPScgKyB2bGluayksXFxuICAgICAgICAgICAgbGVfdG9rZW4gPSBodG1sLm1hdGNoKC9sZV90b2tlblxcXFxzKj1cXFxccypcXFwiKC4qKVxcXCIvKVsxXSxcXG4gICAgICAgICAgICB1cmwgPSBodG1sLm1hdGNoKC9cXFwidXJsXFxcIlxcXFxzKjpcXFxccypcXFwiKC4qKVxcXCIvKVsxXTtcXG4gICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChEZSh1cmwsICdBNDJFQUMwQzJCNDA4NDczJywgbGVfdG9rZW4pKTtcXG4gICAgfSBlbHNlIGlmICh2bGluay5pbmNsdWRlcyhcXFwibmV0ZmxpeG1vbS1cXFwiKSkge1xcbiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly9wbGF5ZXIuNGt5YS5jb20vP3VybD0nICsgdmxpbmssIHsgaGVhZGVyczogeyByZWZlcmVyOiAnaHR0cHM6Ly9uZXRmbGl4Lm1vbScgfSB9KSxcXG4gICAgICAgICAgICBsZV90b2tlbiA9IGh0bWwubWF0Y2goL2xlX3Rva2VuXFxcXHMqPVxcXFxzKlxcXCIoLiopXFxcIi8pWzFdLFxcbiAgICAgICAgICAgIHVybCA9IGh0bWwubWF0Y2goL1xcXCJ1cmxcXFwiXFxcXHMqOlxcXFxzKlxcXCIoLiopXFxcIi8pWzFdO1xcbiAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKERlKHVybCwgJzMzMzE4MEIzRUYwRUQ5RDAnLCBsZV90b2tlbikpO1xcbiAgICB9IGVsc2UgaWYgKHB0YWIuaW5jbHVkZXMoJ25mdXhzJykpIHtcXG4gICAgICAgIGxldCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vYXBpLnhrdmlkZW8uZGVzaWduL20zdTgucGhwP3VybD0nICsgdmxpbmspLFxcbiAgICAgICAgICAgIGJ0X3Rva2VuID0gaHRtbC5tYXRjaCgvYnRfdG9rZW5cXFxccyo9XFxcXHMqXFxcIiguKilcXFwiLylbMV0sXFxuICAgICAgICAgICAgdXJsID0gaHRtbC5tYXRjaCgvXFxcInVybFxcXCJcXFxccyo6XFxcXHMqZ2V0VmlkZW9JbmZvXFxcXChcXFwiKC4qKVxcXCIvKVsxXTtcXG4gICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChEZSh1cmwsICd6c2RyZjg4MDIwM2dodXJkJywgYnRfdG9rZW4pKTtcXG4gICAgfSBlbHNlIGlmICgvcWl5aXx5b3VrdXxxcS5jb218bWd0dnxiaWxpYmlsaXxpeGlndWF8bWlndXxzb2h1fHBwdHZ8bGV8MTkwNVxcXFwuY29tfGZ1blxcXFwudHYvLnRlc3QodmxpbmspKSB7XFxuICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoXFxcImh0dHBzOi8vanhxZC50a3lzLnR2L2RubWEucGhwP3VybD1cXFwiICsgdmxpbmspLFxcbiAgICAgICAgICAgIGJ0X3Rva2VuID0gaHRtbC5tYXRjaCgvYnRfdG9rZW5cXFxccyo9XFxcXHMqXFxcIiguKilcXFwiLylbMV0sXFxuICAgICAgICAgICAgdXJsID0gaHRtbC5tYXRjaCgvXFxcInVybFxcXCJcXFxccyo6XFxcXHMqZ2V0VmlkZW9JbmZvXFxcXChcXFwiKC4qKVxcXCIvKVsxXTtcXG4gICAgICAgIHJldHVybiBjaGFuZ2VWaWRlb1VybChEZSh1cmwsIFxcXCI3NjkyQUE3MEVFRjkyQjQyXFxcIiwgYnRfdG9rZW4pKTtcXG4gICAgfSBlbHNlIGlmICh2bGluay5pbmNsdWRlcyhcXFwiTFQtXFxcIikpIHtcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFwiaHR0cHM6Ly9qeHFkLnRreXMudHYvZG5tYS5waHA/dXJsPVxcXCIgKyB2bGluayksXFxuICAgICAgICAgICAgYnRfdG9rZW4gPSBodG1sLm1hdGNoKC9idF90b2tlblxcXFxzKj1cXFxccypcXFwiKC4qKVxcXCIvKVsxXSxcXG4gICAgICAgICAgICB1cmwgPSBodG1sLm1hdGNoKC9cXFwidXJsXFxcIlxcXFxzKjpcXFxccypnZXRWaWRlb0luZm9cXFxcKFxcXCIoLiopXFxcIi8pWzFdO1xcbiAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKERlKHVybCwgXFxcIjc2OTJBQTcwRUVGOTJCNDJcXFwiLCBidF90b2tlbikpO1xcbiAgICB9IGVsc2UgaWYgKHZsaW5rLmluY2x1ZGVzKFxcXCJyZW5yZW5taS1cXFwiKSkge1xcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KFxcXCJodHRwczovL2p4cWQudGt5cy50di9kbm1hLnBocD91cmw9XFxcIiArIHZsaW5rKSxcXG4gICAgICAgICAgICBidF90b2tlbiA9IGh0bWwubWF0Y2goL2J0X3Rva2VuXFxcXHMqPVxcXFxzKlxcXCIoLiopXFxcIi8pWzFdLFxcbiAgICAgICAgICAgIHVybCA9IGh0bWwubWF0Y2goL1xcXCJ1cmxcXFwiXFxcXHMqOlxcXFxzKmdldFZpZGVvSW5mb1xcXFwoXFxcIiguKilcXFwiLylbMV07XFxuICAgICAgICByZXR1cm4gY2hhbmdlVmlkZW9VcmwoRGUodXJsLCBcXFwiNzY5MkFBNzBFRUY5MkI0MlxcXCIsIGJ0X3Rva2VuKSk7XFxuICAgIH0gZWxzZSBpZiAodmxpbmsuaW5jbHVkZXMoXFxcIlJvbmdYaW5nVlItXFxcIikpIHtcXG4gICAgICAgIGxldCB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImh0dHBzOi8vdnZpcC5mdW5zbGluZS5jbjo4ODY2L2FwaS8/a2V5PWZLNngwNzZrMThMVTM0eDAyTiZ1cmw9XFxcIiArIHZsaW5rKSkudXJsO1xcbiAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHVybCk7XFxuICAgIH0gZWxzZSBpZiAodmxpbmsuaW5jbHVkZXMoXFxcInhmeS1cXFwiKSkge1xcbiAgICAgICAgbGV0IHVybCA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaHR0cHM6Ly92aXAueGZ5dW4ub25lL2hvbWUvYXBpP3R5cGU9eXMmdWlkPTI1ODE5MjMma2V5PWFlZmlrbG90d3pDRUZISk80OCZ1cmw9XFxcIiArIHZsaW5rKSkudXJsO1xcbiAgICAgICAgcmV0dXJuIGNoYW5nZVZpZGVvVXJsKHVybCk7XFxuICAgIH0gZWxzZSBpZiAodmxpbmsuaW5jbHVkZXMoXFxcImZlbi5sYW9kaVxcXCIpKSB7XFxuICAgICAgICBsZXQgaHRtbCA9IGZldGNoKFxcXCJodHRwczovL3BsYXkudGt5cy50di9sYW9kaS5waHAvP3VybD1cXFwiICsgdmxpbmspLFxcbiAgICAgICAgICAgIHVybCA9IGh0bWwubWF0Y2goL3Z1cmxcXFxccyo9XFxcXHMqJyguKiknLylbMV07XFxuICAgICAgICByZXR1cm4gY2hhbmdlVmlkZW9VcmwodXJsKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHJldHVybiB2bGluaztcXG4gICAgfVxcbn0pKCk7XCJ9XSIsImljb24iOiJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS81Mi5wbmcifQ==
Add Comment
Please, Sign In to add comment