xiaomianao666

小程序:集芳阁云搜

Feb 7th, 2025
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@集芳阁云搜@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6ZuG6Iqz6ZiB5LqR5pCcIiwiYXV0aG9yIjoiUiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2h0dHBzOi8veG4tLXNvLWo2ZjZnLWNvbS15cjR2Njg2MWEuZ29ob21lLWppZmFuZ2ctY29tLmNvbS8iLCJ2ZXJzaW9uIjoyMDI0MTIxOSwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiaHR0cHM6Ly9zby5qOGY4Zy5jb20vIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xuTVlfVVJMID0gTVlfVVJMLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHkjIycsICcnKTtcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvcmVwYWlyJykpLnJ1bGUpO1xudmFyIGh0bWwgPSBndWFyZChNWV9VUkwpO1xuXG5cbmQucHVzaCh7XG4gICAgLy90aXRsZTogJzxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmNjYwMFwiPjxiPlxcdOe+juWlveWNs+WIu+W8gOWniy4uLlxcdFxcdFxcdDwvYj48L3NwYW4+JyxcbiAgICB1cmw6IFwiaGlrZXI6Ly9lbXB0eVwiLFxuICAgIHBpY191cmw6ICQucmVxdWlyZShcImltZ1wiKS5pbWcxLFxuICAgIGNvbF90eXBlOiAncGljXzFfY2VudGVyJ1xufSk7XG5cbmlmIChNWV9QQUdFID09IDEpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogXCLwn5SNXCIsXG4gICAgICAgIHVybDogJC50b1N0cmluZygoTVlfSE9NRSkgPT4ge1xuICAgICAgICAgICAgcmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2ppZW1pJylcbiAgICAgICAgICAgIGlucHV0ID0gZW5jcnlwdERhdGEoaW5wdXQpXG4gICAgICAgICAgICBwdXRNeVZhcigna2V5d29yZCcsIGlucHV0KTtcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NzP3VybD0nICsgTVlfSE9NRSArICcvc2VhcmNoLnBocD9rPScgKyBpbnB1dCArICfvvIbvvIZwPWZ5cGFnZSc7XG4gICAgICAgIH0sIE1ZX0hPTUUpLFxuICAgICAgICBkZXNjOiAn576O5aW95Y2z5Yi75byA5aeLLi4uJywvL+aQnOe0ouWFs+mUruivjVxuICAgICAgICBjb2xfdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcigna2V5d29yZCcsICcnKSB8fCBcIlwiLFxuICAgICAgICB9XG4gICAgfSk7XG59XG4vKlxudmFyIGxpbmtzID0gcGRmYShodG1sLCBcImJvZHkmJi5saW5rJiZhXCIpO1xuZm9yICh2YXIgaSBpbiBsaW5rcykge1xuICAgIHZhciB0aXRsZSA9IHBkZmgobGlua3NbaV0sICdhJiZUZXh0Jyk7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9IzFFOTBGRj4nICsgdGl0bGUgKyAnPC9mb250Pjwvc21hbGw+JyxcbiAgICAgICAgZGVzYzogJycsXG4gICAgICAgIHBpY191cmw6ICcnLFxuICAgICAgICB1cmw6IHBkKGxpbmtzW2ldLCAnYSYmaHJlZicpICsgJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodGl0bGUpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0KCdoaWtlcjovL2hvbWVAJyArIHRpdGxlKSA9PSAnbnVsbCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0b2FzdDovL+Wwj+eoi+W6j+S8vOS5juW5tuS4jeWtmOWcqFwiXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vaG9tZS9AXCIgKyB0aXRsZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0aXRsZSksXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcbiAgICB9KTtcbn07XG4qL1xuZC5wdXNoKHtcbmNvbF90eXBlOiAnYmxhbmtfYmxvY2snLFxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48bWlkZGxlPjxmb250IGNvbG9yPVwiIzAwNjBGRlwiPvCfkY3ku4rml6Xng63mkq08L2ZvbnQ+PC9taWRkbGU+PC9iPicsXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD0nICsgTVlfSE9NRSArICcvdG9wbGlzdC5waHDvvJ/vvJ9wPWZ5cGFnZScsXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcbn0pO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XCIjMDA2MEZGXCI+8J+ThuS7iuaXpeabtOaWsDwvZm9udD48L21pZGRsZT48L2I+JyxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPScgKyBNWV9IT01FICsgJy9uZXdsaXN0LnBocO+8n++8n3A9ZnlwYWdlJyxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxufSk7XG5kLnB1c2goe1xuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cIiMwMDYwRkZcIj7wn5Oq55S15oql576kPC9mb250PjwvbWlkZGxlPjwvYj4nLFxuICAgIHVybDogJ2h0dHBzOi8vdC5tZS9qaWZhbmdnZUNPTScsXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcbn0pO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XCIjMDA2MEZGXCI+8J+TrOeUteaKpemikemBkzwvZm9udD48L21pZGRsZT48L2I+JyxcbiAgICB1cmw6ICdodHRwczovL3QubWUvamlmYW5nZ2Vob3QnLFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXG59KTtcblxuZC5wdXNoKHtcbmNvbF90eXBlOiAnYmxhbmtfYmxvY2snLFxufSk7XG4vL+eDremXqOaQnOe0ouivjVxuZC5wdXNoKHtcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XCIjNUI5NUY2XCI+8J+UpeeDreivjeaQnOe0oiDvvJo8L2ZvbnQ+PC9taWRkbGU+PC9iPicsXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2pza2V5I25vSGlzdG9yeSMnLFxuICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxuICAgIGV4dHJhOntcbiAgICAgcGFnZVRpdGxlOiBcIueDreivjeaQnOe0olwiXG59XG59KTtcblxuLy92YXIgYWN0ID0gW1wi54uC6aOZXCIsXCLku5bmmK/osIFcIiwgXCLkurrkuJbpl7RcIl07XG52YXIgYWN0ID0gSlNPTi5wYXJzZShodG1sLm1hdGNoKC92YXIgcmVjb21tYW5kbGlzdCA9KC4qPylcXDsvKVsxXSk7XG5mb3IgKHZhciBpIGluIGFjdCkgeyAgXG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48bWlkZGxlPjxmb250IGNvbG9yPVwiIzAwOEI4QlwiPicgKyBhY3RbaV0gKyAnPC9mb250PjwvbWlkZGxlPjwvYj4nLFxuICAgICAgICB1cmw6IGFjdFtpXSArICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKE1ZX0hPTUUpID0+IHtcbiAgICAgICAgICAgICAgICAgICByZXF1aXJlKCdoaWtlcjovL3BhZ2UvamllbWknKVxuICAgICAgICAgICAgICAgICAgIGxldCAgIGluYSA9IGVuY3J5cHREYXRhKGlucHV0KVxuICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NzP3VybD0nK01ZX0hPTUUrJy9zZWFyY2gucGhwP2s9JyArIGluYSArICfvvIbvvIZwPWZ5cGFnZScgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9LE1ZX0hPTUUpICwgICAgICAgICAgIFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcbiAgICB9KVxufTtcblxuc2V0UmVzdWx0KGQpIiwic2VhcmNoX3VybCI6Ii8jIyoqIyNmeXBhZ2UiLCJncm91cCI6IuiHqueUsSIsInNlYXJjaEZpbmQiOiJqczpcbnZhciBkID0gW107XG5sZXQga2V5ID0gTVlfVVJMLnNwbGl0KFwiIyNcIilbMV07XG5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvamllbWknKVxubGV0ICAgaW5hID0gZW5jcnlwdERhdGEoa2V5KVxuZC5wdXNoKHtcbiAgICB0aXRsZTogXCLngrnmiJHlvIDlp4vogZrlkIjmkJzntKJcIiArIGtleSxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPScrTVlfSE9NRSsnL3NlYXJjaC5waHA/az0nICsgaW5hICsgJ++8hu+8hnA9ZnlwYWdlJyxcbiAgICBleHRyYToge1xuICAgICAgICBwYWdlVGl0bGU6IFwi5pCc57SiXCIgKyBrZXksXG4gICAgICAgIGtleToga2V5XG4gICAgfVxufSk7XG5cbnNldFJlc3VsdChkKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIqIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiLypcbuawuOS5heWfn+WQjVxuaHR0cHM6Ly/pm4boirPpmIEuY29tXG5odHRwczovL2ppZmFuZ2dlLmNsdWJcbmh0dHBzOi8vamZnc291LmNvbVxuXG7lj5HpgIHku7vmhI/pgq7ku7bliLAgamZnZGl6aGlAZ21haWwuY29tIOiOt+WPluacgOaWsOWcsOWdgOOAglxuKi9cbnB1dE15VmFyKFwiaG9tZVwiLE1ZX1JVTEUudXJsLm1hdGNoKC9odHRwLiovKVswXSkiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Kej5p6QXCIsXCJwYXRoXCI6XCJsYXp5XCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHZhciBodG1sID0gcGRmYShyZXF1ZXN0KGlucHV0LCB7fSksICdib2R5JiYucGxheXNvdXJjZSYmYScpO1xcbiAgICAgICAgICAgIHZhciB1cmxzID0gW11cXG4gICAgICAgICAgICB2YXIgbmFtZXMgPSBbXVxcbiAgICAgICAgaWYgKGh0bWwubGVuZ3RoPjApIHtcXG4gICAgICAgICAgaHRtbC5tYXAoZnVuY3Rpb24oaXRlbSl7XFxuICAgICAgICAgICAgICAgICB1cmxzLnB1c2gocGRmaChpdGVtLFxcXCJhJiZwbGF5ZGF0YVxcXCIpKTtcXG4gICAgICAgICAgICAgICAgbmFtZXMucHVzaChwZGZoKGl0ZW0sXFxcImEmJlRleHRcXFwiKSk7ICAgICAgICAgICAgIFxcbn0pXFxuICAgICAgICAgICBwbGF5bGlzdCA9IEpTT04uc3RyaW5naWZ5KHt1cmxzLG5hbWVzfSlcXG4gICAgICAgICAgICByZXR1cm4gcGxheWxpc3Q7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mtJfmtJfnnaHlkKcnO1xcbiAgICAgICAgfSAgXFxufSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8xX2xlZnRfcGljXCIsXCJuYW1lXCI6XCLmkJzntKLpobXpnaLlhoXlrrlcIixcInBhdGhcIjpcInNzXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbi8vY29uc3QgaG9zdCA9ICdodHRwczovL3d3dy5zdXlpbmcubGlmZS9pbmRleC5waHAvdm9kL3Nob3cvaWQvMS5odG1sJztcXG5cXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBsZXQga2V5cyA9IGxpc3RNeVZhcktleXMoKTtcXG4gICAgZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICAgICAgY2xlYXJNeVZhcihpdCk7XFxuICAgIH1cXG59KSk7XFxuXFxudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7wqDCoMKgwqDCoMKgwqBcXG4gICAgcmV0dXJuICcjJyArICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO8KgwqDCoMKgwqBcXG59XFxuY29uc3Qg5LiL5LiA6aG1ID0gXFxcInBkKGh0bWwsICdhOm1hdGNoZXMo5LiL5LiA6aG1KSYmaHJlZicpXFxcIjtcXG5jb25zdCBwYWdlID0gTVlfUEFHRTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2R0ZmwnKSkucnVsZSlcXG5cXG52YXIg5a6a5L2N5L+h5oGvID0gW3tcXG4gICAg5aSn57G75a6a5L2NOiAnLnZmaWx0ZXInLFxcbiAgICDlsI/nsbs6ICdib2R5JiZhOm5vdCg6bWF0Y2hlcyjpppbpobV86LWE6K6vfEFQUHzkuJPpoph856S+576kfOeDreaQnHznlZnoqIB856aP5YipfOi1nuWKqXzlkajooah85o6S6KGMfOaOqOiNkHzmm7TlpJp85pu05pawKSknLFxcbiAgICDpk77mjqXlpITnkIY6ICh1KSA9PiB7XFxuICAgICAgIC8vbGV0IHVybCA9IHUucmVwbGFjZSgvdHlwZShcXFxcL1xcXFxkKylcXFxcLmh0bWwvLCAnc2hvdyQxLS0tLS0tLS0tLS0uaHRtbCcpO1xcbiAgICAgICAgbGV0IHVybCA9IHUucmVwbGFjZSgvdHlwZS8sICdzaG93Jyk7XFxuICAgICAgICByZXR1cm4gdXJsXFxuICAgIH1cXG59LCB7XFxuICAgIOWkp+exu+WumuS9jTogJy52ciYmb3B0aW9uJyxcXG4gICAg5bCP57G7OiAnYm9keSYmb3B0aW9uJyxcXG4gICAgIOmTvuaOpTogJ29wdGlvbiYmdmFsdWUnLFxcbiAgICAg5qCH6aKYOiAnVGV4dCcsXFxuICAgICDpk77mjqXlpITnkIY6ICh1KSA9PiB7ICAgICAgIFxcbiAgICAgICAgbGV0IHVybCA9IHRydWVfdXJsLnJlcGxhY2UoLyZzb3J0PVxcXFxkKy8sXFxcIlxcXCIpICsgXFxcIiZzb3J0PVxcXCIgKyB1LnJlcGxhY2UoL2h0dHBzPzpcXFxcL1xcXFwvLipcXFxcLy8sXFxcIlxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHVybFxcbiAgICB9XFxufV1cXG5cXG4vL01ZX1VSTD0gaG9zdDtcXG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgJycpXFxubGV0IHRydWVfdXJsID0gZ2V0VHJ1ZWxpbmsoTVlfUlVMRS51cmwsIE1ZX1VSTCwgcGFnZSk7XFxubG9nKHRydWVfdXJsKVxcblxcbnZhciBodG1sID0gcmVxdWVzdCh0cnVlX3VybClcXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxudHJ5e1xcbiAgICBkLnB1c2goeyAgICAgXFxuICAgICAgICB0aXRsZTogXFxcIvCflI1cXFwiICsnPG1pZGRsZT48Zm9udCBjb2xvcj0jRkYwMEZGPicrcGRmaChodG1sLFxcXCIjY29udGVudGxpc3QmJnNwYW4mJlRleHRcXFwiKSsnPC9mb250PjwvbWlkZGxlPicsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCIsXFxuICAgIH0pO1xcbn1jYXRjaHt9XFxufVxcblxcbmNvbnN0IGRjID0gZHluYW1pY0NsYXNzKHtcXG4gICAg5YiG57G76aKc6ImyOiBnZXRSYW5nZUNvbG9ycygpXFxufSk7XFxuZGMu5byA5ZCv5oqY5Y+gKGZhbHNlKVxcbmRjLuW8gOWQr+aQnOe0oihmYWxzZSlcXG5kYy7liJvlu7rliqjmgIHliIbnsbso5a6a5L2N5L+h5oGvKVxcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenknLCB7fSkpLnJ1bGUpO1xcblxcbnZhciBwYXJzZVJ1bGUgPSB7XFxuICAgIGxpc3Q6ICdib2R5JiYudWNvbnRlbnQmJmxpJywgLy/nu5/kuIBpdGVtXFxuICAgIHRpdGxlOiAnLmN0aXRsZSYmVGV4dCcsXFxuICAgIGNvbnRlbnQ6ICcudm9kdGltZSYmVGV4dCcsXFxuICAgIGRlc2M6ICcudm9kdGltZSYmVGV4dCcsXFxuICAgIGRlc2MxOiAnLnRpbWUmJlRleHQnLFxcbiAgICBpbWc6ICcuY292ZXImJnN0eWxlJyxcXG4gICAgdXJsOiAnYSYmaHJlZicsXFxuICAgIHJlZjogJ0BSZWZlcmVyPScsXFxuICAgIGltdDogdHJ1ZSxcXG4gICAgYmFja2ltZzogdHJ1ZSxcXG59XFxuXFxuQ3JlYXRlLkxpc3QoZCwgaHRtbCwgcGFyc2VSdWxlKTtcXG5hdXRvUGFnZSgpO1xcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si5YiX6KGo5Yib5bu6XCIsXCJwYXRoXCI6XCJkdGZsXCIsXCJydWxlXCI6XCJqczpcXG4vKlxcbuS4gOe6p+WwgeijhSBcXG7liqjmgIHliIbnsbsg5YiX6KGo5Yib5bu6IOiHquWKqOS4i+S4gOmhtVxcbnZlciAyMDIzMTAwNTAxIDEuMFxcbiovXFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eScsIHt9KSkucnVsZSk7XFxuXFxudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XFxuICAgIHJldHVybiAnIycgKyAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTtcXG59XFxuXFxuZnVuY3Rpb24gZHluYW1pY0NsYXNzKG9wdGlvbnMpIHtcXG4gICAgY29uc3Qgb2JqID0ge1xcbiAgICAgICAgLy/pu5jorqTlgLxcXG4gICAgICAgIGxheW91dDogXFxcInVuZGVmaW5lZFxcXCIsXFxuICAgICAgICBodG1sOiBcXFwiZW1wdHlcXFwiLFxcbiAgICAgICAgcGFnZTogMCxcXG4gICAgICAgIOWIhuexu+minOiJsjogXFxcIiNGQTcyOThcXFwiLFxcbiAgICAgICAg5oqY5Y+gOiBcXFwi4oCc4oCc4oCd4oCdPGI+XFxcIiArIFxcXCLiiKdcXFwiLmZvbnRjb2xvcihcXFwiIzFhYWQxOVxcXCIpICsgXFxcIjwvYj5cXFwiLFxcbiAgICAgICAg5bGV5byAOiBcXFwi4oCc4oCc4oCd4oCdPGI+XFxcIiArIFxcXCLiiKhcXFwiLmZvbnRjb2xvcihcXFwiI0ZGMDAwMFxcXCIpICsgXFxcIjwvYj5cXFwiLFxcbiAgICAgICAgb3BlbjogdHJ1ZSxcXG4gICAgICAgIHN0YXRlOiBNWV9SVUxFLnVybCxcXG4gICAgICAgIHNlYXJjaDogZmFsc2UsXFxuICAgICAgICBjbGVhcnM6IFtdLFxcbiAgICAgICAgY2xlYXJhbGw6IFtcXFwieWlfZmlyc3RwYWdlXFxcIl0sXFxuICAgICAgICBkZWJ1ZzogZmFsc2UsXFxuXFxuICAgICAgICDpooTorr4ocGFyYW0pIHtcXG4gICAgICAgICAgICBpZiAocGFyYW0gPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIHBhcmFtID0gW107XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmFtKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAvLyDlr7nmr4/kuKrlsZ7mgKflkI3miafooYzmk43kvZxcXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbVtwcm9wZXJ0eV07IC8vIOiOt+WPluWxnuaAp+WAvFxcbiAgICAgICAgICAgICAgICAvLyDlnKjov5nph4zmiafooYzmgqjnmoTmk43kvZxcXG4gICAgICAgICAgICAgICAgdGhpc1twcm9wZXJ0eV0gPSB2YWx1ZTtcXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHByb3BlcnR5ICsgXFxcIjpcXFwiICsgdmFsdWUpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgZXZhbEpTUnVsZShpdGVtLCBqc1J1bGUpIHtcXG4gICAgICAgICAgICBsZXQgcnVsZSA9IGpzUnVsZS5yZXBsYWNlKFxcXCJAanM6XFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIHJ1bGUgPSBydWxlLnRyaW0oKTtcXG4gICAgICAgICAgICAvL2xvZygkLnN0cmluZ2lmeShydWxlKSlcXG4gICAgICAgICAgICBsZXQgaW5wdXQgPSBpdGVtO1xcbiAgICAgICAgICAgIGlmIChydWxlLnN0YXJ0c1dpdGgoXFxcIihcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBldmFsKFxcXCJyZXN1bHQgPSBcXFwiICsgcnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICAgICAqIOi/mOWOn+aIkCAkLnRvU3RyaW5nKC4uLikg55qE5pyA57uI57uT5p6c77yM6L6+5Yiw5pyA57uI5aSE55CG5pa55byP6Lef5LiK6Z2i55qEIGlmIOS4gOiHtOeahOebrueahFxcbiAgICAgICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICAgICAgZXZhbChcXFwicmVzdWx0ID0gXFxcIiArIFxcXCIoKCkgPT4ge1xcXCIgKyBydWxlICsgXFxcIn0pKClcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCB8fCBcXFwiXFxcIjtcXG4gICAgICAgIH0sXFxuICAgICAgICBnZXRUaXRsZShzcmMsIGNhdGVnb3J5KSB7XFxuICAgICAgICAgICAgbGV0IHRpdGxlID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgbGV0IHRpdGxlUnVsZSA9IGNhdGVnb3J5IHx8IFxcXCJhJiZUZXh0XFxcIjtcXG4gICAgICAgICAgICBpZiAodGl0bGVSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB0aXRsZSA9IHRoaXMuZXZhbEpTUnVsZShzcmMsIHRpdGxlUnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdGl0bGUgPSBwYXJzZURvbUZvckh0bWwoc3JjLCB0aXRsZVJ1bGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gdGl0bGUgfHwgXFxcIlxcXCI7XFxuICAgICAgICB9LFxcbiAgICAgICAgZ2V0VXJsKHNyYywgY2F0ZWdvcnkpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgbGV0IHVybFJ1bGUgPSBjYXRlZ29yeS7pk77mjqUgfHwgXFxcImEmJmhyZWZcXFwiO1xcbiAgICAgICAgICAgIGlmICh1cmxSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmV2YWxKU1J1bGUoc3JjLCB1cmxSdWxlKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB1cmwgPSBwZChzcmMsIHVybFJ1bGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNhdGVnb3J5LumTvuaOpeWkhOeQhiA9PSBcXFwiZnVuY3Rpb25cXFwiKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9IGNhdGVnb3J5LumTvuaOpeWkhOeQhih1cmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gdXJsIHx8IFxcXCJcXFwiO1xcbiAgICAgICAgfSxcXG4gICAgICAgIGlzTnVsbChwYXJhbSkge1xcbiAgICAgICAgICAgIGlmIChwYXJhbSA9PSBudWxsKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9LFxcbiAgICAgICAgaXNCb29sZWFuKHZhcmlhYmxlKSB7XFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YXJpYWJsZSAhPT0gXFxcImJvb2xlYW5cXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi5byA5ZCv5oqY5Y+g6K+35Lyg5YWl5biD5bCU5YC8XFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSxcXG4gICAgICAgIOa4hemZpChsaXN0KSB7XFxuICAgICAgICAgICAgaWYgKHRoaXMuaXNOdWxsKGxpc3QpKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAobGlzdC5jb25zdHJ1Y3RvciA9PSBTdHJpbmcpIHtcXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLmuIXpmaTmiqXplJk66K+35Lyg5YiX6KGoXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHRoaXMuY2xlYXJzID0gbGlzdDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDlhajmuIUobGlzdCkge1xcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTnVsbChsaXN0KSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLmNsZWFyYWxsO1xcbiAgICAgICAgICAgIGxpc3QgPSBjLmNvbmNhdChsaXN0KTtcXG4gICAgICAgICAgICB0aGlzLmNsZWFyYWxsID0gbGlzdDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDmupDnoIEoaW5wdXQpIHtcXG4gICAgICAgICAgICB0aGlzLmh0bWwgPSBpbnB1dDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDnlYzpnaIoaW5wdXQpIHtcXG4gICAgICAgICAgICB0aGlzLmxheW91dCA9IGlucHV0O1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgfSxcXG4gICAgICAgIOmhteeggShpbnB1dCkge1xcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IGlucHV0O1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgfSxcXG4gICAgICAgIOeKtuaAgShpbnB1dCkge1xcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBpbnB1dDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDlvIDlkK/mkJzntKIoaW5wdXQpIHtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gdHJ1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdGhpcy5zZWFyY2ggPSBpbnB1dDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDlvIDlkK/mipjlj6AoaW5wdXQpIHtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gdHJ1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdGhpcy5pc0Jvb2xlYW4oaW5wdXQpO1xcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGlucHV0O1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgfSxcXG4gICAgICAgIHNldFRpdGxlKGssIGksIHQpIHtcXG4gICAgICAgICAgICByZXR1cm4gayA9PSBpID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyB0LmZvbnRjb2xvcih0aGlzLuWIhuexu+minOiJsikgOiB0O1xcbiAgICAgICAgfSxcXG4gICAgICAgIGFjdGlvbihvYmopIHtcXG4gICAgICAgICAgICByZXR1cm4gW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmuIXpmaTnirbmgIFcXFwiLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygob2JqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsb2cob2JqKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIob2JqLnN0YXRlKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgb2JqLmFsbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKTtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgb2JqLmNsLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICB9LCBvYmopLFxcbiAgICAgICAgICAgIH0sIF07XFxuICAgICAgICB9LFxcbiAgICAgICAgY2hlY2tQYXJhbSgpIHtcXG4gICAgICAgICAgICB2YXIgb2JqID0ge307XFxuICAgICAgICAgICAgaWYgKHRoaXMucGFnZSA9PSAwICYmIHR5cGVvZiBwYWdlID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl6aG156CBXFxcIik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYWdlID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIumhteeggVxcXCJdID0gdGhpcy5wYWdlO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgb2JqW1xcXCLpobXnoIFcXFwiXSA9IHBhZ2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHRoaXMuaHRtbCA9PSBcXFwiZW1wdHlcXFwiICYmIHR5cGVvZiBodG1sID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl5rqQ56CBXFxcIik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBodG1sID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIua6kOeggVxcXCJdID0gdGhpcy5odG1sO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgb2JqW1xcXCLmupDnoIFcXFwiXSA9IGh0bWw7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09IFxcXCJ1bmRlZmluZWRcXFwiICYmIHR5cGVvZiBkID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl55WM6Z2iXFxcIik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIueVjOmdolxcXCJdID0gdGhpcy5sYXlvdXQ7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIueVjOmdolxcXCJdID0gZDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xcbiAgICAgICAgfSxcXG4gICAgICAgIOWIm+W7uuWKqOaAgeWIhuexuyhydWxlT2JqKSB7XFxuICAgICAgICAgICAgaWYgKHJ1bGVPYmogPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIHJ1bGVPYmogPSBbXTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy/liJ3lp4vljJblj5jph4/lvIDlp4tcXG4gICAgICAgICAgICBjb25zdCBwYXJhbSA9IHRoaXMuY2hlY2tQYXJhbSgpO1xcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBwYXJhbS7pobXnoIE7XFxuICAgICAgICAgICAgY29uc3QgaHRtbCA9IHBhcmFtLua6kOeggTtcXG4gICAgICAgICAgICBjb25zdCBkID0gcGFyYW0u55WM6Z2iO1xcbiAgICAgICAgICAgIGNvbnN0IOeKtuaAgSA9IHRoaXMuc3RhdGU7XFxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2g7XFxuICAgICAgICAgICAgY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgY29uc3Qg5oqY5Y+g54q25oCBID0gdGhpcy5vcGVuO1xcbiAgICAgICAgICAgIHZhciDlsZXlvIAgPSB0aGlzLuWxleW8gDtcXG4gICAgICAgICAgICB2YXIg5oqY5Y+gID0gdGhpcy7mipjlj6A7XFxuICAgICAgICAgICAgdmFyIOWFqOa4hSA9IHRoaXMuY2xlYXJhbGw7XFxuICAgICAgICAgICAgdmFyIOa4hemZpCA9IHRoaXMuY2xlYXJzO1xcbiAgICAgICAgICAgIC8v5Yid5aeL5YyW5Y+Y6YeP57uT5p2fXFxuICAgICAgICAgICAgbGV0IGluaXRfY2F0ZSA9IG5ldyBBcnJheSgyMCkuZmlsbChcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgIGNvbnN0IGZvbGQgPSBnZXRNeVZhcihNWV9SVUxFLmdyb3VwLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoXFxuICAgICAgICAgICAgICAgIGdldE15VmFyKFxcXCJoZWFkLmNhdGVcXFwiLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbiAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgaWYgKHNlYXJjaCAmJiBwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcIidoaWtlcjovL3NlYXJjaD9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZzPScraW5wdXRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuaQnOe0ouWFs+mUruivjVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwia2V5d29yZFxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJrZXl3b3JkXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBbXTtcXG4gICAgICAgICAgICBydWxlT2JqLmZvckVhY2goKHgpID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBbXTtcXG4gICAgICAgICAgICAgICAgaWYgKHguanNvbiAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgICAgIHguanNvbi5tYXAoayA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKEpTT04uc3RyaW5naWZ5KGspLnJlcGxhY2UoL15cXFxcW3xcXFxcXSQvZywgJycpKVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoeC7kuIDnuqflrprkvY0pIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh4LuS4gOe6p+WumuS9jS5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gdGhpcy5ldmFsSlNSdWxlKGh0bWwsIHgu5LiA57qn5a6a5L2NKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IHBkZmEoaHRtbCwgeC7kuIDnuqflrprkvY0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmICh4LuWkp+exu+WumuS9jSkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHgu5aSn57G75a6a5L2NLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSB0aGlzLmV2YWxKU1J1bGUoaHRtbCwgeC7lpKfnsbvlrprkvY0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gW3BkZmEoaHRtbCwgeC7lpKfnsbvlrprkvY0pLmpvaW4oJ1xcXFxuJyldO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIC8vLS3pop3lpJblpITnkIYtLVxcbiAgICAgICAgICAgICAgICBpZiAoKCflop7liqAnIGluIHgpKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoeC7lop7liqAuY29uc3RydWN0b3IgPT0gU3RyaW5nKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgeC7lop7liqAgPSBldmFsKHgu5aKe5YqgKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNsaXN0ID0geC7lop7liqAuY29uY2F0KHNsaXN0KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoKCfooaXlhYUnIGluIHgpKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoeC7ooaXlhYUuY29uc3RydWN0b3IgPT0gU3RyaW5nKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgeC7ooaXlhYUgPSBldmFsKHgu6KGl5YWFKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNsaXN0ID0gc2xpc3QuY29uY2F0KHgu6KGl5YWFKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvLy0t6aKd5aSW5aSE55CGLS1cXG4gICAgICAgICAgICAgICAgdmFyIOS4gOe6pyA9IGxpc3QubWFwKChzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpc3QgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICghKFxcXCLlsI/nsbtcXFwiIGluIHgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgeC7lsI/nsbsgPSBcXFwiYm9keSYmYTpub3QoOm1hdGNoZXMo6aaW6aG1KSk6bm90KGE6bm90KFtocmVmXSkpXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGlmICh4LuWwj+exuy5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlzdCA9IHRoaXMuZXZhbEpTUnVsZShzLCB4LuWwj+exuyk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaXN0ID0gcGRmYShzLCB4LuWwj+exuyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB2YXIg5a6a5L2NID0gc2xpc3QubWFwKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gdGhpcy5nZXRUaXRsZShpdGVtLCB4Luagh+mimCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMuZ2V0VXJsKGl0ZW0sIHgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmogPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4g5a6a5L2NO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgLy9sb2co5LiA57qnKVxcbiAgICAgICAgICAgICAgICAvL2xvZyjkuIDnuqcubGVuZ3RoKVxcbiAgICAgICAgICAgICAgICBpZiAo5LiA57qnLmxlbmd0aCA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2go5LiA57qnLmpvaW4oXFxcIlxcXFxuXFxcIikpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAg5LiA57qnLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2goaXRlbS5qb2luKFxcXCIsXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLy9sb2coY2F0ZWdvcmllcylcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAo5oqY5Y+g54q25oCBKSB7XFxuICAgICAgICAgICAgICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvbGQgPT09IFxcXCIxXFxcIiA/IOaKmOWPoCA6IOWxleW8gCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2xkLCB1LCBhbGwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKE1ZX1JVTEUuZ3JvdXAsIGZvbGQgPT09IFxcXCIxXFxcIiA/IFxcXCIwXFxcIiA6IFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmFsbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsqL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg54q25oCBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDlhajmuIVcXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiB0aGlzLmFjdGlvbih7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTog54q25oCBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiDlhajmuIUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbDog5riF6ZmkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coY2F0ZWdvcmllcylcXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgLyppZiAo5bCP57G75a6a5L2NLmluY2x1ZGVzKFxcXCI7XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0uc3BsaXQoXFxcIjtcXFwiKVswXSk7XFxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJfY2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NLnNwbGl0KFxcXCI7XFxcIilbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyovXFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpbmRleClcXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gSlNPTi5wYXJzZShgWyR7Y2F0ZWdvcnl9XWApO1xcbiAgICAgICAgICAgICAgICAgICAgLy8gc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0pO1xcbiAgICAgICAgICAgICAgICAgICAgLy99XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIF/lpKfnsbvmoIfpopgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdGVtLnRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIOaOkumZpCAhPSBcXFwidW5kZWZpbmVkXFxcIiAmJiDmjpLpmaQgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZShuZXdSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gaXRlbS51cmw7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyczog5riF6ZmkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoganNvbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiDnirbmgIEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxjbGVhcnM6IOWFqOa4hSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgdXJsID0gcGQoaXRlbSwgX+Wkp+exu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBpdGVtLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiAo5aSn57G75aSE55CGKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0g5LiA57qn5YiG57G75aSE55CGKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyh1cmwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5zZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfY2F0ZSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jbGVhcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hbGxjbGVhcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIsIEpTT04uc3RyaW5naWZ5KG5ld19jYXRlKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5qc29uLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImR0X1xcXCIgKyBwYXJhbXMuanNvbi50eXBlLCBwYXJhbXMuanNvbi52YWx1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnN0YXRlLCBwYXJhbXMuanNvbik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbXMpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9sZCA9PT0gXFxcIjFcXFwiIHx8IOaKmOWPoOeKtuaAgSA9PSBmYWxzZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXh0cmFwb3MgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiAoaXRlbS5pbmNsdWRlcygndHlwZT1cXFwiQGV4dHJhXFxcIicpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFwb3MgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKCfpmYTliqDlrprkvY0nKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki9cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhcG9zKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKGl0ZW0sIFxcXCJhJiZUZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIOaOkumZpCAhPSBcXFwidW5kZWZpbmVkXFxcIiAmJiDmjpLpmaQgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHBkZmgoaXRlbSwgXFxcImEmJnN0YXRlXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwgXFxcImEmJnZhbHVlXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBpdGVtLnRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiDmjpLpmaQgIT0gXFxcInVuZGVmaW5lZFxcXCIgJiYg5o6S6ZmkICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzd2l0Y2ggKHRydWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSDliIbnsbvpk77mjqUuaW5jbHVkZXMoXFxcIkBAQFxcXCIpOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdChcXFwiQEBAXFxcIilbMF0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwg5YiG57G76ZO+5o6lLnNwbGl0KFxcXCJAQEBcXFwiKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSDliIbnsbvpk77mjqUuaW5jbHVkZXMoXFxcIkBAXFxcIik6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IOWIhuexu+mTvuaOpS5zcGxpdChcXFwiQEBcXFwiKVswXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdChcXFwiQEBcXFwiKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gaXRlbS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ganNvbiA9IHBkKGl0ZW0sIOWIhuexu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSBpdGVtLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdmFyIGpzb2495YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQEAnKT97XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzBdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzFdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTpwZChpdGVtLOWIhuexu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uPeWIhuexu+mTvuaOpS5pbmNsdWRlcygnQEAnKT97XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOuWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVswXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAJylbMV0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OnBkKGl0ZW0s5YiG57G76ZO+5o6lKTsqL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IGpzb24sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTog54q25oCBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsY2xlYXJzOiDlhajmuIUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5zZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5XFxcIiArIFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYWxsY2xlYXJzLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLmpzb24uY29uc3RydWN0b3IgPT09IE9iamVjdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiZHRfXFxcIiArIHBhcmFtcy5qc29uLnR5cGUsIHBhcmFtcy5qc29uLnZhbHVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMuc3RhdGUsIHBhcmFtcy5qc29uKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW1zKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LFxcbiAgICB9O1xcbiAgICBvYmou6aKE6K6+KG9wdGlvbnMpO1xcbiAgICByZXR1cm4gb2JqO1xcbn1cXG5cXG4vLy7nirbmgIEoXFxcInVybFxcXCIpXFxuLy8u55WM6Z2iKGQpXFxuLy8u5rqQ56CBKHhodG1sKVxcbi8vLuWFqOa4hShbXFxcIjFcXFwiLCBcXFwiMlxcXCJdKVxcbi8vLua4hemZpCgpXFxuLy8u5byA5ZCv5oqY5Y+gKClcXG4vLy7pobXnoIEocGFnZSlcXG4vLy7liJvlu7rliqjmgIHliIbnsbso5a6a5L2N5YiX6KGoKTtcXG5cXG5mdW5jdGlvbiBnZXRPYmpmdWMob2JqKSB7XFxuICAgIGNvbnN0IG1ldGhvZHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZpbHRlcihcXG4gICAgICAgIChuYW1lKSA9PiB0eXBlb2Ygb2JqW25hbWVdID09PSBcXFwiZnVuY3Rpb25cXFwiXFxuICAgICk7XFxuICAgIGlmIChtZXRob2RzLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBjb25zb2xlLmxvZyhvYmoudG9TdHJpbmcoKSk7XFxuICAgICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgY29uc3QgZm9ybWF0dGVkU3RyaW5nID0gbWV0aG9kc1xcbiAgICAgICAgLm1hcCgobmFtZSkgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IGZuID0gb2JqW25hbWVdO1xcbiAgICAgICAgICAgIGNvbnN0IGZuU3RyaW5nID0gYCR7bmFtZX06ICR7Zm4udG9TdHJpbmcoKX1gO1xcbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVkRm5TdHJpbmcgPSBmblN0cmluZy5yZXBsYWNlKFxcbiAgICAgICAgICAgICAgICAvXFxcXFxcXFx1KFtcXFxcZFxcXFx3XXs0fSkvZ2ksXFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKG1hdGNoLCBncnApIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGdycCwgMTYpKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgcmV0dXJuIHJlc3RvcmVkRm5TdHJpbmc7XFxuICAgICAgICB9KVxcbiAgICAgICAgLmpvaW4oXFxcIlxcXFxuXFxcIik7XFxuICAgIGNvbnNvbGUubG9nKGZvcm1hdHRlZFN0cmluZyk7XFxufVxcblxcbi8qXFxudmVyIDIwMjMtMDYtMTYgIDEuMFxcbiovXFxudmFyIOeKtuaAgSA9XFxuICAgIHR5cGVvZiDnirbmgIHmoIforrAgIT0gXFxcInVuZGVmaW5lZFxcXCIgJiYg54q25oCB5qCH6K6wICE9IFxcXCJcXFwiID8g54q25oCB5qCH6K6wIDogTVlfUlVMRS51cmw7XFxuXFxubGV0IGR0X2RlYnVnID0gZmFsc2U7XFxuXFxuYWRkTGlzdGVuZXIoXFxuICAgIFxcXCJvbkNsb3NlXFxcIixcXG4gICAgJC50b1N0cmluZygoKSA9PiB7fSlcXG4pO1xcblxcbnZhciBDcmVhdGUgPSB7XFxuICAgIHNwYWdlOiB7XFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgICAgIHJldHVybiBzdG9yYWdlMC5nZXRNeVZhcihcXFwic3BhZ2VcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICB9LFxcbiAgICAgICAgc2V0OiBmdW5jdGlvbih1cmwpIHtcXG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwic3BhZ2VcXFwiLCB1cmwpO1xcbiAgICAgICAgfSxcXG4gICAgfSxcXG4gICAgbmV4dFBhZ2U6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgbmV4dCA9IGV2YWwo5LiL5LiA6aG1KTtcXG4gICAgICAgICAgICAvL2xvZygnbjonK25leHQpXFxuICAgICAgICAgICAgaWYgKG5leHQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfkuIvkuIDpobXpk77mjqXkuLrnqbonKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xcbiAgICAgICAgICAgIGlmICh0cnVlX3VybCA9PSBuZXh0KSB7XFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAvL2xvZyhcXFwi5Y+v6IO95LiN5a2Y5Zyo5LiL5LiA6aG15oiW6ICF5LiL5LiA6aG15a6a5L2N5pyJ6Zeu6aKYXFxcIik7XFxuICAgICAgICAgICAgbG9nKFxcXCLplJnor6/kv6Hmga86XFxcIiArIGUubWVzc2FnZSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoKG5leHQgPT0gXFxcIlxcXCIgfHwgbmV4dCA9PSB1bmRlZmluZWQpICYmIHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIG5leHQgPSB0cnVlX3VybDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgLy9yZXN1bHQ9ZmFsc2U7XFxuICAgICAgICAgICAgbmV4dCA9IGdldE15VmFyKOeKtuaAgSk7XFxuICAgICAgICB9XFxuICAgICAgICAvL2xvZygnbCcrdHJ1ZV91cmwpXFxuICAgICAgICAvL2xvZygnbicrbmV4dClcXG4gICAgICAgIGlmIChwYWdlICE9IDEpIHtcXG4gICAgICAgICAgICBpZiAodHJ1ZV91cmwgPT0gbmV4dCAmJiAhcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcXG4gICAgICAgIC8vcHV0TXlWYXIo54q25oCBLCBuZXh0KTtcXG4gICAgfSxcXG4gICAgZ2V0QmFja0ltYWdlOiBmdW5jdGlvbihpbWd1cmwpIHtcXG4gICAgICAgIHZhciByZXN1bHQgPSBpbWd1cmw7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHJlc3VsdCA9IC91cmwoPzpcXFxccyspP1xcXFwoKC4qPylcXFxcKS9nXFxuICAgICAgICAgICAgICAgIC5leGVjKGltZ3VybClbMV1cXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLygnfFxcXCJ8JnF1b3Q7KS9nbSwgXFxcIlxcXCIpO1xcbiAgICAgICAgfSBjYXRjaCB7fVxcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcXG4gICAgfSxcXG4gICAgaHR0cEhhbmRsZTogZnVuY3Rpb24oaW5wdXQpIHtcXG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XFxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcIi8vXFxcIikpIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImh0dHBzOlxcXCIgKyBpbnB1dDtcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc3RhcnRzV2l0aChcXFwiL1xcXCIpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIE1ZX0hPTUUgKyBpbnB1dDtcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgaW1nSGFuZGxlOiBmdW5jdGlvbihpdGVtLCBydWxlKSB7XFxuICAgICAgICB2YXIgaW1nID0gXFxcIlxcXCI7XFxuICAgICAgICBpZiAocnVsZS5pbWcuc3RhcnRzV2l0aChcXFwicGRcXFwiKSkge1xcbiAgICAgICAgICAgIGltZyA9IGV2YWwocnVsZS5pbWcpO1xcbiAgICAgICAgfSBlbHNlIGlmIChydWxlLmJhY2tpbWcpIHtcXG4gICAgICAgICAgICBpbWcgPSBwZGZoKGl0ZW0sIHJ1bGUuaW1nKTtcXG4gICAgICAgICAgICBpbWcgPSB0aGlzLmdldEJhY2tJbWFnZShpbWcpO1xcbiAgICAgICAgICAgIGltZyA9IHRoaXMuaHR0cEhhbmRsZShpbWcpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpbWcgPSBwZGZoKGl0ZW0sIHJ1bGUuaW1nKTtcXG4gICAgICAgICAgICBpZiAoIWltZy5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgaW1nID0gcGQoaXRlbSwgcnVsZS5pbWcpO1xcbiAgICAgICAgICAgICAgICBpbWcgPSB0aGlzLmh0dHBIYW5kbGUoaW1nKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gaW1nICsgcnVsZS5yZWY7XFxuICAgIH0sXFxuICAgIHVybEhhbmRsZTogZnVuY3Rpb24oaXRlbSwgcnVsZSkge1xcbiAgICAgICAgdmFyIGhyZWYgPSBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChydWxlLnVybC5zdGFydHNXaXRoKFxcXCJwZFxcXCIpKSB7XFxuICAgICAgICAgICAgaHJlZiA9IGV2YWwocnVsZS51cmwpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBocmVmID0gcGQoaXRlbSwgcnVsZS51cmwpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaHJlZiA9IHJ1bGUuaW10ID8gaHJlZiArIFxcXCIjaW1tZXJzaXZlVGhlbWUjXFxcIiA6IGhyZWY7XFxuICAgICAgICByZXR1cm4gaHJlZjtcXG4gICAgfSxcXG4gICAgc2V0Q29udGVudDogZnVuY3Rpb24oaXRlbSwgaW5wdXQpIHtcXG4gICAgICAgIGxldCBvdXRwdXQgPSBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChpbnB1dCA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcInBkXFxcIikpIHtcXG4gICAgICAgICAgICBvdXRwdXQgPSBldmFsKGlucHV0KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgb3V0cHV0ID0gcGRmaChpdGVtLCBpbnB1dCk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gb3V0cHV0O1xcbiAgICB9LFxcbiAgICByZWZyZXNoOiBmdW5jdGlvbigpIHtcXG4gICAgICAgIGFkZExpc3RlbmVyKFxcbiAgICAgICAgICAgIFxcXCJvblJlZnJlc2hcXFwiLFxcbiAgICAgICAgICAgICQudG9TdHJpbmcoKHUpID0+IHtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwieWlsaXN0XFxcIik7XFxuICAgICAgICAgICAgICAgIC8vdmFyIHAgPSBzdG9yYWdlMC5nZXRNeVZhcignc3BhZ2UnLCAnJyk7XFxuICAgICAgICAgICAgICAgIC8vcHV0TXlWYXIodSwgcCk7XFxuICAgICAgICAgICAgfSwg54q25oCBKVxcbiAgICAgICAgKTtcXG4gICAgfSxcXG4gICAganNvbkxpc3Q6IGZ1bmN0aW9uKGFyciwganNvbiwgcnVsZSkge1xcbiAgICAgICAgaWYgKGpzb24uY29uc3RydWN0b3IgIT0gT2JqZWN0KSB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAganNvbiA9IEpTT04ucGFyc2UoanNvbik7XFxuICAgICAgICAgICAgfSBjYXRjaCB7fVxcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGRlYnVnID0gcnVsZS5kZWJ1ZyA/IHJ1bGUuZGVidWcgOiBmYWxzZTtcXG4gICAgICAgIGpzb25bcnVsZS5saXN0XS5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGRlYnVnKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhpdGVtKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgaW1nID0gZXZhbChydWxlLmltZykgKyBydWxlLnJlZjtcXG4gICAgICAgICAgICB2YXIgaHJlZiA9IGV2YWwocnVsZS51cmwpO1xcbiAgICAgICAgICAgIGhyZWYgPSBydWxlLmltdCA/IGhyZWYgKyBcXFwiI2ltbWVyc2l2ZVRoZW1lI1xcXCIgOiBocmVmO1xcbiAgICAgICAgICAgIHZhciBsYXp5ID0gcnVsZS5sYXp5ID8gcnVsZS5sYXp5IDogXFxcIlxcXCI7XFxuICAgICAgICAgICAgdmFyIGRkID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZXZhbChydWxlLnRpdGxlKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogZXZhbChydWxlLmRlc2MpLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBldmFsKHJ1bGUuY29udGVudCksXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGltZyxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIGhyZWYsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBydWxlLmNvbF90eXBlLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgfTtcXG5cXG4gICAgICAgICAgICBpZiAobGF6eSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICBkZFtcXFwidXJsXFxcIl0gPSBocmVmICsgbGF6eTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYXJyLnB1c2goZGQpO1xcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIHJ1bGVMaXN0OiBmdW5jdGlvbihhcnIsIGh0bWwsIHJ1bGUpIHtcXG4gICAgICAgIHZhciBsaXN0ID0gcGRmYShodG1sLCBydWxlLmxpc3QpO1xcbiAgICAgICAgbGlzdC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gdGhpcy5zZXRDb250ZW50KGl0ZW0sIHJ1bGUudGl0bGUpO1xcbiAgICAgICAgICAgIHZhciBkZXNjID0gdGhpcy5zZXRDb250ZW50KGl0ZW0sIHJ1bGUuZGVzYyk7XFxuICAgICAgICAgICAgdmFyIGltZyA9IHRoaXMuaW1nSGFuZGxlKGl0ZW0sIHJ1bGUpO1xcbiAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLnVybEhhbmRsZShpdGVtLCBydWxlKTtcXG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuc2V0Q29udGVudChpdGVtLCBydWxlLmNvbnRlbnQpO1xcbiAgICAgICAgICAgIHZhciBsYXp5ID0gcnVsZS5sYXp5ID8gcnVsZS5sYXp5IDogXFxcIlxcXCI7XFxuICAgICAgICAgICAgdmFyIGRkID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGltZyxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIHVybCxcXG4gICAgICAgICAgICAgICAgY29udGVudDogY29udGVudCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IHJ1bGUuY29sX3R5cGUsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGlmIChsYXp5ICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGRkW1xcXCJ1cmxcXFwiXSA9IHVybCArIGxhenk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGFyci5wdXNoKGRkKTtcXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBMaXN0OiBmdW5jdGlvbihhcnIsIGh0bWwsIHJ1bGUsIHBhcmFtKSB7XFxuICAgICAgICBwYXJhbSA9IHBhcmFtID8gcGFyYW0gOiB7fTtcXG4gICAgICAgIHZhciBhdXRvID0gcGFyYW0uYXV0byA/IHBhcmFtLmF1dG8gOiBmYWxzZTtcXG4gICAgICAgIHZhciBzaG93ID0gcGFyYW0uc2hvdyA/IHBhcmFtLnNob3cgOiBmYWxzZTtcXG4gICAgICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAvL3RoaXMuc3BhZ2Uuc2V0KHRydWVfdXJsKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xcbiAgICAgICAgdmFyIGxpc3QgPSBwZGZhKGh0bWwsIHJ1bGUubGlzdCk7XFxuICAgICAgICAvL2xvZyh0aGlzLm5leHRQYWdlKCkpXFxuICAgICAgICBpZiAoKHN0b3JhZ2UwLmdldE15VmFyKCd5aV9pc25leHQnLCAndCcpID09ICd0JyAmJiBsaXN0Lmxlbmd0aCA+IDApIHx8IHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBkZWxldGVJdGVtKFxcXCJwYWdlbnVtXFxcIik7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oXFxcInBhZ2VsaW5lXFxcIik7XFxuICAgICAgICAgICAgICAgIHZhciBpZCA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICB2YXIgY2xzID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHRoaXMuc2V0Q29udGVudChpdGVtLCBydWxlLnRpdGxlKTtcXG4gICAgICAgICAgICAgICAgdmFyIGRlc2MgPSB0aGlzLnNldENvbnRlbnQoaXRlbSwgcnVsZS5kZXNjKTtcXG4gICAgICAgICAgICAgICAgdmFyIGRlc2MxID0gdGhpcy5zZXRDb250ZW50KGl0ZW0sIHJ1bGUuZGVzYzEpO1xcbnZhciBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7IC8vIOWIm+W7uuS4gOS4qkRhdGXlr7nosaHvvIzooajnpLrlvZPliY3ml6XmnJ/lkozml7bpl7RcXG52YXIgeWVhciA9IGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7IC8vIOiOt+WPluW5tOS7vVxcbnZhciBtb250aCA9IGN1cnJlbnREYXRlLmdldE1vbnRoKCkgKyAxOyAvLyDojrflj5bmnIjku73vvIjms6jmhI/mnIjku73mmK/ku44w5byA5aeL6K6h5pWw77yM5omA5Lul6KaB5YqgMe+8iVxcbnZhciBkYXRlID0gY3VycmVudERhdGUuZ2V0RGF0ZSgpOyAvLyDojrflj5bml6XmnJ9cXG52YXIgZm9ybWF0dGVkRGF0ZSA9IHllYXIgKyBcXFwiLVxcXCIgKyBtb250aCArIFxcXCItXFxcIiArIGRhdGU7IC8vIOeUn+aIkOagvOW8j+WMlueahOaXpeacn+Wtl+espuS4slxcbiAgICAgICAgICAgICAgICB2YXIgZGVzYzIgPSBkZXNjMT9kZXNjMTpmb3JtYXR0ZWREYXRlO1xcbiAgICAgICAgICAgICAgICB2YXIgaW1nID0gdGhpcy5pbWdIYW5kbGUoaXRlbSwgcnVsZSk7XFxuICAgICAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLnVybEhhbmRsZShpdGVtLCBydWxlKTtcXG4gICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLnNldENvbnRlbnQoaXRlbSwgcnVsZS5jb250ZW50KTtcXG4gICAgICAgICAgICAgICAgaWYgKGkgPT0gbGlzdC5sZW5ndGggLSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZCA9IFxcXCJsYXN0aWRfXFxcIiArIHBhZ2U7XFxuICAgICAgICAgICAgICAgICAgICBjbHMgPSBcXFwibGFzdG1hcmtcXFwiO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1ncmV5PicrdGl0bGUrJzwvZm9udD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn4o+wJyArIGRlc2MgKyAnXFxcXHRcXFxcdFxcXFx0XFxcXHTwn5OGJyArIGRlc2MyLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaW1nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29udGVudCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBydWxlLmNvbF90eXBlLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBjbHMsXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgaWYgKGkgPT0gbGlzdC5sZW5ndGggLSAxICYmIHNob3cpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXFxcInBhZ2VsaW5lXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPuWKoOi9veS4rS4uLjwvc21hbGw+XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcXFwicGFnZW51bVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInBhZ2VudW1cXFwiLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPjxzbWFsbD7liLDlupXkuoY8L3NtYWxsPjwvZm9udD4nLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwibGFzdFxcXCIsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT0gMCAmJiBwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPjxzbWFsbD7ml6DlhoXlrrk8L3NtYWxsPjwvZm9udD4nLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHt9LFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHRoaXMubmV4dFBhZ2UoKSkge1xcbiAgICAgICAgICAgIC8vbG9nKCd0Jyk7XFxuICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoJ3lpX2lzbmV4dCcsICd0Jyk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIC8vbG9nKCdmJyk7XFxuICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoJ3lpX2lzbmV4dCcsICdmJyk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoYXV0bykge1xcbiAgICAgICAgICAgIC8vY3JlYXRlTmV4dFBhZ2UoKTtcXG4gICAgICAgICAgICBhdXRvUGFnZSgpO1xcbiAgICAgICAgfVxcbiAgICB9LFxcbn07XFxuXFxudmFyIGV4dE1ldGhvZCA9IHtcXG4gICAgVG9QYXJhbXM6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHNbMF07XFxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoanNvbilcXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IGtleSArIFxcXCI9XFxcIiArIGpzb25ba2V5XSlcXG4gICAgICAgICAgICAuam9pbihcXFwiJlxcXCIpO1xcbiAgICB9LFxcbiAgICB1cmxQYXJzZTogZnVuY3Rpb24odSkge1xcbiAgICAgICAgdmFyIGRpY3QgPSB7fTtcXG4gICAgICAgIGRpY3QuU291cmNlID0gdTtcXG4gICAgICAgIGxldCBwYXJhbXMgPSAodXJsKSA9PiB7XFxuICAgICAgICAgICAgbGV0IHF1ZXJ5UGFyYW1zID0ge307XFxuICAgICAgICAgICAgbGV0IHJlZyA9IC8oW14/PSZdKyk9KFtePz0mXSspL2c7XFxuICAgICAgICAgICAgdXJsLnJlcGxhY2UocmVnLCBmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNbYXJndW1lbnRzWzFdXSA9IGFyZ3VtZW50c1syXTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlQYXJhbXM7XFxuICAgICAgICB9O1xcbiAgICAgICAgdmFyIGphdmFVcmwgPSBKYXZhSW1wb3J0ZXIoamF2YS5uZXQuVVJMKTtcXG4gICAgICAgIHdpdGgoamF2YVVybCkge1xcbiAgICAgICAgICAgIHZhciB1cmwgPSBuZXcgVVJMKHUpO1xcbiAgICAgICAgICAgIGRpY3QuUHJvdG9jb2wgPSB1cmwuZ2V0UHJvdG9jb2woKTtcXG4gICAgICAgICAgICBkaWN0Lkhvc3QgPSB1cmwuZ2V0SG9zdCgpO1xcbiAgICAgICAgICAgIGRpY3QuUG9ydCA9IHVybC5nZXRQb3J0KCk7XFxuICAgICAgICAgICAgZGljdC5GaWxlID0gdXJsLmdldEZpbGUoKTtcXG4gICAgICAgICAgICBkaWN0LlBhdGggPSB1cmwuZ2V0UGF0aCgpO1xcbiAgICAgICAgICAgIGRpY3QuUmVmID0gdXJsLmdldFJlZigpO1xcbiAgICAgICAgICAgIGRpY3QuSG9zdHMgPSBgJHtkaWN0LlByb3RvY29sfTovLyR7dXJsLmdldEhvc3QoKX1gO1xcbiAgICAgICAgfVxcbiAgICAgICAgZGljdC5QYXJhbXMgPSBwYXJhbXModSk7XFxuICAgICAgICByZXR1cm4gZGljdDtcXG4gICAgfSxcXG4gICAgaXNFcXVhbDogZnVuY3Rpb24oeCwgeSkge1xcbiAgICAgICAgY29uc3Qgb2sgPSBPYmplY3Qua2V5cyxcXG4gICAgICAgICAgICB0eCA9IHR5cGVvZiB4LFxcbiAgICAgICAgICAgIHR5ID0gdHlwZW9mIHk7XFxuICAgICAgICByZXR1cm4geCAmJiB5ICYmIHR4ID09PSBcXFwib2JqZWN0XFxcIiAmJiB0eCA9PT0gdHkgP1xcbiAgICAgICAgICAgIG9rKHgpLmxlbmd0aCA9PT0gb2soeSkubGVuZ3RoICYmXFxuICAgICAgICAgICAgb2soeCkuZXZlcnkoKGtleSkgPT4gdGhpcy5pc0VxdWFsKHhba2V5XSwgeVtrZXldKSkgOlxcbiAgICAgICAgICAgIHggPT09IHk7XFxuICAgIH0sXFxuICAgIGZpbmREaWZmZXJlbnRJbmRleDogZnVuY3Rpb24oc3RyMSwgc3RyMikge1xcbiAgICAgICAgY29uc3QgZGlmZkNoYXJzID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cjIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBpZiAoc3RyMVtpXSAhPT0gc3RyMltpXSkge1xcbiAgICAgICAgICAgICAgICBkaWZmQ2hhcnMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcXG4gICAgICAgICAgICAgICAgICAgIHMxOiBzdHIxW2ldLFxcbiAgICAgICAgICAgICAgICAgICAgczI6IHN0cjJbaV0sXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkaWZmQ2hhcnM7XFxuICAgIH0sXFxuICAgIHJlcGxhY2VDaGFyQXQ6IGZ1bmN0aW9uKHN0ciwgaW5kZXgsIHJlcGxhY2VtZW50KSB7XFxuICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHN0ci5sZW5ndGgpIHtcXG4gICAgICAgICAgICByZXR1cm4gc3RyO1xcbiAgICAgICAgfVxcbiAgICAgICAgLy9sb2coaW5kZXgpXFxuICAgICAgICBjb25zdCBhcnIgPSBzdHIuc3BsaXQoXFxcIlxcXCIpO1xcbiAgICAgICAgYXJyW2luZGV4XSA9IHJlcGxhY2VtZW50O1xcbiAgICAgICAgcmV0dXJuIGFyci5qb2luKFxcXCJcXFwiKTtcXG4gICAgfSxcXG4gICAgZ2V0T2JqZWN0S2V5c0RpZmY6IGZ1bmN0aW9uKG9iajEsIG9iajIpIHtcXG4gICAgICAgIGNvbnN0IGRpZmZlcmVudEtleXMgPSBbXTtcXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBvYmoxKSB7XFxuICAgICAgICAgICAgaWYgKCFvYmoyLmhhc093blByb3BlcnR5KGtleSkgfHwgb2JqMVtrZXldICE9PSBvYmoyW2tleV0pIHtcXG4gICAgICAgICAgICAgICAgZGlmZmVyZW50S2V5cy5wdXNoKGtleSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgZm9yIChsZXQga2V5IGluIG9iajIpIHtcXG4gICAgICAgICAgICBpZiAoIW9iajEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xcbiAgICAgICAgICAgICAgICBkaWZmZXJlbnRLZXlzLnB1c2goa2V5KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZGlmZmVyZW50S2V5cztcXG4gICAgfSxcXG4gICAgZ2V0TmV4dFVybDogZnVuY3Rpb24oc291cmNlLCB0YXJnZXQsIHBhcmFtcykge1xcbiAgICAgICAgdmFyIHUxID0gdGhpcy51cmxQYXJzZShzb3VyY2UpO1xcbiAgICAgICAgdmFyIHUyID0gdGhpcy51cmxQYXJzZSh0YXJnZXQpO1xcbiAgICAgICAgdmFyIHBhID0gdW5kZWZpbmVkO1xcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMgPT0gXFxcIm9iamVjdFxcXCIpIHtcXG4gICAgICAgICAgICBwYSA9IHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShcXFwi54m55b6BXFxcIikgPyBwYXJhbXMu54m55b6BIDogdW5kZWZpbmVkO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIG5leHR1cmwgPSBzb3VyY2U7XFxuICAgICAgICB2YXIgY2EgPSBPYmplY3Qua2V5cyh1Mi5QYXJhbXMpLmxlbmd0aCA9PSAwID8gXFxcIlxcXCIgOiBcXFwiP1xcXCI7XFxuICAgICAgICBpZiAocGEgIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgdmFyIHJzID0gU3RyaW5nKHUyLlBhdGgpLnJlcGxhY2UobmV3IFJlZ0V4cChwYSksIFxcXCIkMWZ5cGFnZVxcXCIpO1xcbiAgICAgICAgICAgIG5leHR1cmwgPSB1Mi5Ib3N0cyArIHJzICsgY2EgKyB0aGlzLlRvUGFyYW1zKHUyLlBhcmFtcyk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRXF1YWwodTEuUGFyYW1zLCB1Mi5QYXJhbXMpKSB7XFxuICAgICAgICAgICAgICAgIGlmIChkdF9kZWJ1Zykge1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKHUxLlBhdGgpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKHUyLlBhdGgpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHZhciBkZiA9IHRoaXMuZmluZERpZmZlcmVudEluZGV4KFN0cmluZyh1MS5QYXRoKSwgU3RyaW5nKHUyLlBhdGgpKTtcXG4gICAgICAgICAgICAgICAgaWYgKGR0X2RlYnVnKSB7XFxuICAgICAgICAgICAgICAgICAgICBsb2coZGYpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChkZi5sZW5ndGggPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlID0gZGZbMF0uaW5kZXg7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGRmLmZpbHRlcigoeCkgPT4gL1xcXFxkKy8udGVzdCh4LnMyKSk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcmUgPSBmWzBdLmluZGV4O1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHZhciBlcSA9IHRoaXMucmVwbGFjZUNoYXJBdChTdHJpbmcodTIuUGF0aCksIHJlLCBcXFwiZnlwYWdlXFxcIik7XFxuICAgICAgICAgICAgICAgIG5leHR1cmwgPSB1Mi5Ib3N0cyArIGVxICsgY2EgKyB0aGlzLlRvUGFyYW1zKHUyLlBhcmFtcyk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIGVwID0gdGhpcy5nZXRPYmplY3RLZXlzRGlmZih1MS5QYXJhbXMsIHUyLlBhcmFtcylcXG4gICAgICAgICAgICAgICAgaWYgKGVwLmxlbmd0aCA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICB1MS5QYXJhbXNbZXBbMF1dID0gJ2Z5cGFnZSdcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhlcCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdmFyIGVxID0gU3RyaW5nKHUxLlBhdGgpLnJlcGxhY2UoL1xcXFxkKy8sIFxcXCJmeXBhZ2VcXFwiKTtcXG4gICAgICAgICAgICAgICAgbmV4dHVybCA9IHUxLkhvc3RzICsgZXEgKyBjYSArIHRoaXMuVG9QYXJhbXModTEuUGFyYW1zKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICAvL2xvZygnbmV4dDonK25leHR1cmwpXFxuICAgICAgICByZXR1cm4gbmV4dHVybDtcXG4gICAgfSxcXG59O1xcblxcbmZ1bmN0aW9uIGdldFRydWVsaW5rKG1hcmssIHVybCwgcGFnZSkge1xcbiAgICB2YXIgcCA9IGdldE15VmFyKG1hcmssIHVybCkucmVwbGFjZShcXFwiZnlwYWdlXFxcIiwgcGFnZSk7XFxuICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgIHJldHVybiBnZXRNeVZhcihcXFwieWlfZmlyc3RwYWdlXFxcIiwgcCk7XFxuICAgIH0gZWxzZSBpZiAocCAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgcmV0dXJuIHA7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICByZXR1cm4gdXJsO1xcbiAgICB9XFxufVxcbi8v5p6E5bu6XFxuZnVuY3Rpb24gY3JlYXRlTmV4dFBhZ2UoKSB7XFxuICAgIGxldCBzdGFydG51bSA9IDE7XFxuICAgIHZhciBvYmogPSBhcmd1bWVudHNbMF07XFxuICAgIGlmICh0cnVlX3VybCAhPSBnZXRNeVZhcihcXFwieWlfcGFnZXVybFxcXCIsIFxcXCJcXFwiKSkge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwieWlfcGFnZXVybFxcXCIpO1xcbiAgICB9XFxuICAgIGlmIChwYWdlID09IHN0YXJ0bnVtICYmIGdldE15VmFyKFxcXCJ5aV9wYWdldXJsXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJ5aV9maXJzdHBhZ2VcXFwiLCB0cnVlX3VybCk7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBuZXh0ID0gZXZhbCjkuIvkuIDpobUpO1xcbiAgICAgICAgICAgIC8vbG9nKFxcXCJuZXh0XFxcIik7XFxuICAgICAgICAgICAgLy9sb2cobmV4dCk7XFxuICAgICAgICB9IGNhdGNoIHtcXG4gICAgICAgICAgICBsb2coXFxcIuWPr+iDveS4jeWtmOWcqOS4i+S4gOmhteaIluiAheS4i+S4gOmhteWumuS9jeaciemXrumimFxcXCIpO1xcbiAgICAgICAgICAgIG5leHQgPSBcXFwiXFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChuZXh0ICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgdmFyIG54dXJsID0gZXh0TWV0aG9kLmdldE5leHRVcmwodHJ1ZV91cmwsIG5leHQsIG9iaik7XFxuICAgICAgICAgICAgLy9sb2coXFxcIm54dXJsOlxcXCIgKyBueHVybCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIo54q25oCBLCBueHVybCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcInlpX3BhZ2V1cmxcXFwiLCBueHVybCk7XFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gYXV0b1BhZ2UoKSB7XFxuICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJ5aV9maXJzdHBhZ2VcXFwiLCB0cnVlX3VybCk7XFxuICAgIH1cXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBuZXh0ID0gZXZhbCjkuIvkuIDpobUpO1xcbiAgICAgICAgLy9sb2coXFxcIm5leHRcXFwiKTtcXG4gICAgICAgIC8vbG9nKCduZXh0OicrbmV4dCk7XFxuICAgIH0gY2F0Y2gge1xcbiAgICAgICAgbG9nKFxcXCLlj6/og73kuI3lrZjlnKjkuIvkuIDpobXmiJbogIXkuIvkuIDpobXlrprkvY3mnInpl67pophcXFwiKTtcXG4gICAgICAgIG5leHQgPSBcXFwiXFxcIjtcXG4gICAgfVxcbiAgICBpZiAobmV4dCAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgcHV0TXlWYXIo54q25oCBLCBuZXh0KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWtmOWCqGNvb2tpZVwiLFwicGF0aFwiOlwicmVwYWlyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZG9jdW1lbnQgPSB7fTtcXG52YXIgd2luZG93ID0ge1xcbiAgICBsb2NhdGlvbjoge1xcbiAgICAgICAgcmVsb2FkOiBmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgIH1cXG59O1xcblxcbi8vIOWumuS5ieS4gOS4quWvueixoeeUqOS6juWtmOWCqCBjb29raWUg5ZCN56ew5ZKM5YC855qE6ZSu5YC85a+5XFxudmFyIGNvb2tpZXMgPSB7fTtcXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsICdjb29raWUnLCB7XFxuICAgIGVudW1lcmFibGU6IHRydWUsXFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcXG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjb29raWVzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApLmpvaW4oJzsgJyk7XFxuICAgIH0sXFxuICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcXG4gICAgICAgIHZhciBsaXN0ID0gW107XFxuICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoJzsnKSkge1xcbiAgICAgICAgICAgIGxpc3QgPSB2YWx1ZS5zcGxpdCgnOycpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsaXN0ID0gW3ZhbHVlXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxpc3QuZm9yRWFjaCh4ID0+IHtcXG4gICAgICAgICAgICB2YXIgaW5kZXggPSB4LmluZGV4T2YoXFxcIj1cXFwiKTtcXG4gICAgICAgICAgICB2YXIga2V5ID0geC5zdWJzdHJpbmcoMCwgaW5kZXgpLnRyaW0oKTtcXG4gICAgICAgICAgICB2YXIgdmFsdWUgPSB4LnN1YnN0cmluZyhpbmRleCArIDEpO1xcbiAgICAgICAgICAgIGNvb2tpZXNba2V5XSA9IHZhbHVlO1xcbiAgICAgICAgfSlcXG4gICAgfVxcbn0pO1xcblxcbmZ1bmN0aW9uIGd1YXJkKHVybCwgaGVhZG9iaikge1xcbiAgICB2YXIgaGVhZCA9IGhlYWRvYmogPyBoZWFkb2JqOntcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBDb29raWU6IGdldENvb2tpZSh1cmwpLFxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciBodG1sID0gZmV0Y2godXJsLCBoZWFkKTtcXG4gICAgaWYgKGh0bWwuaW5jbHVkZXMoJ19ndWFyZC9hdXRvLmpzJykpIHtcXG4gICAgICAgIGRvY3VtZW50W1xcXCJjb29raWVcXFwiXSA9IGdldENvb2tpZSh1cmwpO1xcbiAgICAgICAgZXZhbChmZXRjaChnZXRIb21lKHVybCkgKyAnL19ndWFyZC9hdXRvLmpzJykpXFxuICAgICAgICBodG1sID0gZmV0Y2godXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBDb29raWU6IGRvY3VtZW50W1xcXCJjb29raWVcXFwiXSxcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL2xvZyhkb2N1bWVudFtcXFwiY29va2llXFxcIl0pXFxuICAgIHJldHVybiBodG1sO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImltZ1wiLFwicGF0aFwiOlwiaW1nXCIsXCJydWxlXCI6XCJ2YXIgaW1nMSA9IFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlkWFJtTFRnaVB6NE5DandoTFMwZ1IyVnVaWEpoZEc5eU9pQkJaRzlpWlNCSmJHeDFjM1J5WVhSdmNpQXlOaTR3TGpJc0lGTldSeUJGZUhCdmNuUWdVR3gxWnkxSmJpQXVJRk5XUnlCV1pYSnphVzl1T2lBMkxqQXdJRUoxYVd4a0lEQXBJQ0F0TFQ0TkNqeHpkbWNnZG1WeWMybHZiajBpTVM0eElpQnBaRDBpNVp1KzViR0NYekVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElnMEtDU0IyYVdWM1FtOTRQU0l3SURBZ05UQXdJREUxT0M0MklpQnpkSGxzWlQwaVpXNWhZbXhsTFdKaFkydG5jbTkxYm1RNmJtVjNJREFnTUNBMU1EQWdNVFU0TGpZN0lpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJajROQ2p4emRIbHNaU0IwZVhCbFBTSjBaWGgwTDJOemN5SStEUW9KTG5OME1IdG1hV3hzT2lNME1qZzFSalE3ZlEwS0NTNXpkREY3Wm1sc2JEb2pOREkwTWpReU8zME5Dand2YzNSNWJHVStEUW84Wno0TkNnazhjR0YwYUNCamJHRnpjejBpYzNRd0lpQmtQU0pOTXpFc01UVXVOV010TUM0MUxEVXRNUzQ1TERrdU1pMDBMaklzTVRJdU9FZzFNbU10TVM0NUxUVXVNUzAwTGpZdE9DNDVMVGd1TWkweE1TNHpiREF1T0MweUxqTmpNUzQ1TERBc05TNHlMREF1TkN3NUxqZ3NNUzR5RFFvSkNXTTBMamdzTUM0NExEZ3VNaXd5TGpFc01UQXVNaXd6TGpsak1Td3hMaklzTVM0MUxESXVPQ3d4TGpVc05DNDNZeTB3TGpRc01TNDNMVEV1TVN3ekxUSXVNaXd6TGpsSU9EVmpNaTR5TERBc05TNHlMVEV1TVN3NExqa3RNeTR5YkRNdU9TdzJMamRJTmpVdU1uWTNMamhvTVRjdU5RMEtDUWxqTWk0eUxEQXNOUzR5TFRFc09DNDVMVE11TVd3ekxqa3NOaTQyU0RZMUxqSldOVEZvTVRjdU5XTXlMaklzTUN3MUxqSXRNU3c0TGprdE15NHhiRE11T1N3MkxqWklOalV1TW5ZNVNEZzFZekl1TWl3d0xEVXVNaTB4TERndU9TMHpMakZzTXk0NUxEWXVOa2cyTVM0MGRqa3VNMmd4TlM0NURRb0pDV015TGpnc01DdzNMamN0TVM0eUxERTBMamd0TXk0MWJEVXNOMGcyTVM0MFZqRXdPVWcwTlZZM09TNDJTREkwTGpsakxUTXVOU3d3TFRndU5Dd3hMakl0TVRRdU9Dd3pMalZzTFRVdE4wZzBOV010TUM0eUxURXVPQzB4TGpFdE15NHhMVEl1TmkwekxqbDJMVEpzTVRRdU5DMHpMalZJT1M0ekRRb0pDVlkwTUM0MVl5MHhMalVzTUM0MUxUTXVNU3d4TFRRdU55d3hMak5zTFRBdU9DMHhMakZqTkM0MUxUVXNOeTR5TFRFd0xqSXNPQzR5TFRFMUxqWmpNQzB3TGprdE1DNDNMVEV1T0MweUxUSXVOM1l0TVM0MlRETXhMREUxTGpWNklFMHpOaTQxTERneUxqWU5DZ2tKWXkwd0xqY3NOaTQzTFRNdU5Dd3hNaTR4TFRndU1Td3hOaTR5WXkwMExqZ3NOQzR5TFRFeExqVXNOeTR6TFRJd0xqTXNPUzR4YkMweExqSXRNUzQxWXpRdU5TMDBMaklzTnk0eUxUZ3VOU3c0TGpJdE1USXVPR013TFRFdE1DNDJMVEV1T1MweExqa3RNaTQ0ZGkweExqbE1Nell1TlN3NE1pNDJlZzBLQ1FrZ1RUUTRMalVzTXprdU5YWXROeTQ0U0RJMUxqSjJOeTQ0U0RRNExqVjZJRTAwT0M0MUxEVXdMamhXTkROSU1qVXVNblkzTGpoSU5EZ3VOWG9nVFRRNExqVXNOak11TW5ZdE9VZ3lOUzR5ZGpsSU5EZ3VOWG9nVFRjd0xqY3NPRE11TkdNM0xqSXNNaTR5TERFekxqUXNOQzQ1TERFNExqWXNPQzR4RFFvSkNXTTBMalFzTXl3MkxqY3NOaTR6TERZdU55dzVMamhqTFRBdU55dzBMVE11TWl3MkxqRXROeTQxTERZdU1tTXRNaTQzTERBdE5TNHlMVEV1TlMwM0xqUXROQzQyWXkwekxqWXROeTQ0TFRjdU55MHhNeTQzTFRFeUxqUXRNVGN1TlV3M01DNDNMRGd6TGpSNklpOCtEUW9KUEhCaGRHZ2dZMnhoYzNNOUluTjBNQ0lnWkQwaVRURTVNaTR6TERJekxqSnNOUzR4TERVdU9HZ3RNVEl1T0hZM0xqbG9MVEUyTGpOV01qbG9MVE0yTGpGMk9XZ3RNVFl1TTNZdE9DNDVZeTB4TGprc01DNHlMVFF1TkN3eExUY3VOQ3d5TGpOc0xUVXVNUzAxTGpsb01USXVOSFl0TWk0M0RRb0pDV013TFRBdU9TMHdMamN0TVM0M0xUSXRNaTQwZGkweUxqTnNNVGd1TXkwekxqVjJNVEF1T0dnek5pNHhkaTB5TGpkak1DMHdMamN0TUM0NExURXVOQzB5TGpNdE1sWXhPR3d4T0M0MkxUTXVOWFl4TUM0NFF6RTROaTR5TERJMUxqUXNNVGc0TGpnc01qUXVOaXd4T1RJdU15d3lNeTR5ZWcwS0NRa2dUVEU1TVM0NUxEUTFMak5zTlM0eExEVXVPV2d0TmpVdU4zWXhOUzR6WXpJdU1TMHdMamtzTXk0eExURXVNeXd6TFRFdU0yTXpMakV0TVM0eExEWXVOeTB4TGpZc01URXRNUzQyYURNeExqaGpPUzR4TERBc01UTXVOaXd6TGpZc01UTXVOaXd4TUM0NGRqSXpMalFOQ2drSll5MHdMakVzTWk0NExURXVOeXcxTGpJdE5DNDNMRGN1TVdNdE1pNHpMREV1TXkwMUxqUXNNUzQ1TFRrdU5Dd3hMamxqTFRndU5Dd3dMVEUxTGpZdE1pNHpMVEl4TGpndE55NHhiREl0TVM0NVl6WXNNaTQ0TERFd0xqWXNOQzR6TERFMExEUXVNMk14TGpVc01Dd3lMakl0TVM0eUxESXVNeTB6TGpVTkNna0pWamN6WXpBdE15NDVMVEl0TlM0NUxUVXVPUzAxTGpsb0xUSXlMakZqTFRRdU1Td3dMVGN1TkN3d0xqVXRNVEF1TVN3eExqWnNMVE11T1N3eExqZDJNall1TjJNdE1DNDJMRFl1T0MwMExqTXNNVEF1TWkweE1TNHlMREV3TGpKakxUVXNNQzB4TUM0eExUSXVNUzB4TlM0eUxUWXVNMnd5TFRFdU9RMEtDUWxqTWk0MUxERXVNeXcwTGpZc01TNDVMRFl1TXl3eExqbGpNU3d3TERFdU5TMHdMamdzTVM0MUxUSXVNMVkxTVM0MVl5MHhMamtzTUM0MExUTXVPU3d4TGpFdE5pNHlMREpzTFRVdU1TMDFMamhvTkRJdU5HTXRNUzQ1TFRZdU1TMDBMall0TVRBdU5pMDRMakl0TVRNdU5td3dMamN0TWk0M0RRb0pDV015TGpJc01DdzFMamdzTUM0MUxERXdMamdzTVM0MFl6VXVNeXd4TGpFc09TNHhMREl1Tnl3eE1TNHlMRFF1T1dNeExqRXNNUzQxTERFdU55d3pMalVzTVM0M0xEVXVPR010TUM0MUxERXVPUzB4TGpNc015NHpMVEl1TlN3MExqTklNVGd6RFFvSkNVTXhPRFF1Tnl3ME55NDNMREU0Tnk0MkxEUTJMamtzTVRreExqa3NORFV1TTNvaUx6NE5DZ2s4Y0dGMGFDQmpiR0Z6Y3owaWMzUXdJaUJrUFNKTk1qUTFMaklzTXpGakxUQXVNeXd5TGpVdE1DNDVMRFF1TlMweExqWXNOaTR6WXpJdU5TMHdMalVzTkM0NExUQXVPQ3czTFRBdU9HZ3hOUzR5WXpFdU55d3dMRE11TlN3d0xqUXNOUzQwTERFdU1tTXlMallzTVM0eUxETXVPU3d6TERNdU9TdzFMalFOQ2drSll6QXNNUzQxTFRBdU55d3pMakl0TWk0eUxEVmpMVE11T1N3MExqSXRPU3c0TGpFdE1UVXVNeXd4TVM0MVl6VXVOeXd6TERFeUxqRXNOUzR6TERFNUxqRXNOeTR4ZGkwME1tTXdMVEl1TlMweExqZ3RNeTQ0TFRVdU5TMHpMamxvTFRFNExqWmpMVEl1TXl3d0xUVXVOU3d3TGpndE9TNDRMREl1TkEwS0NRbHNMVFV1TVMwMUxqbG9OREV1Tm1NNUxEQXNNVE11TlN3ekxERXpMallzT1hZM01TNDVZeTB3TGpnc05TNDJMVFF1Tnl3NExqY3RNVEV1Tml3NUxqSmpMVFl1TWkwd0xqRXRNVEV1T1MweUxqZ3RNVGN1TVMwNExqSnNNUzQyTFRFdU5XTXlMamtzTVM0MUxEVXNNaTR6TERZdU5pd3lMak1OQ2drSll6SXVOeXd3TERRdU1TMHdMamtzTkM0ekxUSXVOMVkyT0M0Mll5MHhNaTR4TFRBdU5TMHlNUzQ1TFRJdE1qa3VOQzAwTGpSakxUZ3VNeXd6TFRFM0xqRXNOQzQyTFRJMkxqVXNOQzQ1ZGpNNExqUm9MVEUxTGpKV05ERXVPR013TFRFdU9TMHdMamt0TXk0eUxUSXVOeTB6TGpsV016WU5DZ2tKYkRFM0xqa3ROQzR6ZGpNMVl6VXVPQzB4TGpVc01URXVNaTB6TGpjc01UWXVOQzAyTGpaakxUSXVNUzB4TGpFdE5DNHlMVEl1TWkwMkxqUXRNeTQxWXkweExqTXRNQzQyTFRJdU9TMHdMamt0TlM0eExUQXVPV3d0TUM0MExURXVNbXd4TlM0MkxUY3VPQTBLQ1Fsak1pNHlMREl1TXl3MExqUXNOQzR6TERZdU9DdzJMakpqTlMwMExEZ3VOUzA0TGpFc01UQXVOaTB4TW1Nd0xUQXVOeTB3TGpndE1TNHhMVEl1TXkweExqRm9MVFV1TldNdE15NHlMREF0Tmk0eUxEQXVOQzA0TGprc01TNHhZeTB3TGpjc01TNHlMVEV1Tml3eUxqSXRNaTQyTERNTkNna0pZeTB6TGprc015NDFMVGt1TXl3MUxqZ3RNVFl1TkN3MkxqaHNMVEF1T0MweExqVmpNaTB4TGpNc015NDRMVE11TXl3MUxqTXROUzQ1WXpFdU5DMHlMalVzTWk0eExUUXVNeXd5TGpFdE5TNDFZekF0TUM0NUxUQXVOaTB4TGpVdE1TNDVMVEV1T1hZdE1TNHlUREkwTlM0eUxETXhlZzBLQ1FrZ1RUSXhNUzQwTERFekxqVmpOeTR4TERFdU5pd3hNeTR5TERNdU5Td3hPQzR6TERVdU9HTTBMalFzTWk0eExEWXVOaXcwTGpVc05pNDJMRGN1TVdNdE1DNDJMRFF0TXk0eExEWXVNUzAzTGpRc05pNHpZeTB5TGpjc01DMDFMakl0TVM0MkxUY3VOUzAwTGpjTkNna0pZeTB6TGpRdE5TNDFMVGN1TlMwNUxqWXRNVEl0TVRJdU5Fd3lNVEV1TkN3eE15NDFlaUJOTWpReExqTXNOamd1TjNZekxqRmpNaTR4TFRBdU9DdzBMVEV1TWl3MUxqZ3RNUzR5YURFMExqUmpOeTQ0TERBc01URXVOaXd6TGprc01URXVOaXd4TVM0M2RqRTBMak5JTWpJMlZqYzRMak1OQ2drSll5MHdMakV0TVM0MUxURXRNaTQwTFRJdU55MHlMamQyTFRFdU5Vd3lOREV1TXl3Mk9DNDNlaUJOTWpReExqTXNPVE11TW1neE5TNDFWamM0TGpoak1DMHpMakV0TVM0MkxUUXVOaTAwTGpjdE5DNDJTREkwTjJNdE1TNDRMREF0TXk0M0xEQXVOQzAxTGpnc01TNHlUREkwTVM0ekxEa3pMaklOQ2drSlRESTBNUzR6TERrekxqSjZJaTgrRFFvSlBIQmhkR2dnWTJ4aGMzTTlJbk4wTUNJZ1pEMGlUVE01TUM0NExEVXdiRFV1TVN3MkxqTm9MVFEwTGpac0xUSTBMallzTkRJdU9HTXdMREV1TlN3d0xqa3NNaTR6TERJdU55d3lMak5vTXpWak15NHlMREFzT0M0eExURXVOU3d4TkM0MUxUUXVOUTBLQ1FsakxUUXVNaTB4TWk0eExUa3VNUzB5TVM0MUxURTBMalV0TWpndU1td3hMalV0TVM0Mll6Z3VNaXcwTGpNc01UVXVNU3c1TGpZc01qRXNNVFV1TjJNMUxEVXVPU3czTGpVc01USXVNeXczTGpVc01Ua3VNMk10TUM0MkxETXVOUzB5TGpnc05TNHpMVFl1Tnl3MUxqUU5DZ2tKWXkweUxqUXNNQzAwTGpZdE1TNDBMVFl1TmkwMExqTmpMVEF1TXkweExUQXVOeTB5TFRFdE0yTXROaTQ1TERNdU1TMHhNaTR4TERRdU5pMHhOUzQzTERRdU5tZ3ROVEF1TVdNdE5DNDJMREF0TnkweUxqRXROeTAyTGpKak1DMHdMallzTUM0MExURXVPQ3d4TGpJdE15NDJiREl6TGpJdE16Z3VPQTBLQ1FsSU16RTVZeTB5TGpZc01DMDJMalFzTUM0NUxURXhMaklzTWk0M2JDMDFMakV0Tmk0eWFEYzJMamxETXpneExqY3NOVEl1T0N3ek9EVXVOU3cxTVM0NUxETTVNQzQ0TERVd2VpQk5NemcwTGpjc01UZ3VObXcxTGpFc05TNDVhQzAyTnk0eVl5MHhMamtzTUMwMExqWXNNQzQ0TFRndU1pd3lMak1OQ2drSmJDMDFMakV0TlM0NWFEWTNMakpETXpjNExESXdMamtzTXpnd0xqZ3NNakF1TVN3ek9EUXVOeXd4T0M0MmVpSXZQZzBLQ1R4d1lYUm9JR05zWVhOelBTSnpkREFpSUdROUlrMDBNall1Tnl3eE5DNDNkakV6TGpsak1TNHpMVEF1TkN3eUxqY3RNQzQ1TERRdU15MHhMalZzTlM0eExEVXVPR2d0T1M0MFZqVTBZekl0TVM0MkxEUXRNeTR6TERVdU9DMDFMakZzTVM0eUxEQXVOdzBLQ1FsakxURXVNaXcwTGpndE15NDFMRGt1TlMwM0xERTBMak4yTXpRdU0yTXRNQzQ1TERZdE5DNDBMRGt1TWkweE1DNDFMRGt1TjJNdE5DNDBMVEF1TVMwNExqWXRNUzQ1TFRFeUxqUXROUzQwYkRFdU5pMHlZekV1Tnl3eExqRXNNeXd4TGpZc015NDVMREV1TmcwS0NRbGpNUzQzTERBc01pNDFMVEV1TWl3eUxqY3RNeTQxZGkweU1HTXRNUzQ1TERFdU5DMHpMamtzTWk0M0xUVXVPQ3d6TGpoc0xUTXVOUzB4Tnk0MWJERXVNUzB3TGpoak1DNDFMREF1T0N3eExqSXNNUzR5TERJc01TNHlZekV1TlMwd0xqRXNNeTQyTFRBdU9DdzJMakl0TVM0NWRpMHpNQTBLQ1FsakxURXVOaXd3TGpVdE15NDBMREV1TVMwMUxqUXNNbXd0TlM0eExUVXVPVWcwTVRKV01qWmpNQzB5TGpJdE1DNDVMVE11T0MweUxqY3ROQzQzZGkweExqbE1OREkyTGpjc01UUXVOM29nVFRRME5pNDVMREUxTGpWc09TNDJMRGhqTFRBdU1TMHhMalV0TVMweUxqWXRNaTQzTFRNdU0zWXRNUzQyRFFvSkNXd3hOeTR4TFRRdU0zWTJMakpvTVRJdU5HTTJMaklzTUN3NUxqUXNNeXc1TGpRc09DNDVkak15TGpOb0xUSXhMamgyTlM0MGFERTJMak5qTkM0eUxEQXNOaTR6TERFdU1pdzJMak1zTXk0MVl6QXNNaTQ0TFRFdU9DdzJMalF0TlM0ekxERXdMamNOQ2drSll5MDBMakVzTlMwNExqY3NPUzR5TFRFekxqZ3NNVEl1T0dNMkxqSXNOQzR4TERFekxqRXNOeTQ0TERJd0xqWXNNVEZzTFRBdU55d3hMalpqTFRndU1pMHhMak10TVRVdU5TMHlMamd0TWpFdU9DMDBMamhqTFRJdU5DMHdMamN0TkM0M0xURXVOaTAzTFRJdU5nMEtDUWxqTFRrdU9DdzBMalF0TWpBdU9DdzNMVE16TGpFc055NDRiQzB3TGpNdE1TNDJZemd0TWk0NUxERTFMakl0Tmk0NUxESXhMamd0TVRFdU9FTTBORGd1Tml3NU1DNDJMRFEwTXk0MkxEZzNMRFF6T1N3NE0yTXRNQzQzTFRBdU55MHhMall0TVM0eExUSXVOaTB4TGpFTkNna0pZeTB3TGpNc01DMHdMamtzTUM0eUxUSXNNQzQzYkMweExqSXRNaTR6YkRFM0xqVXROeTQ0WXpNdU5TdzBMalVzTnk0M0xEZ3VPU3d4TWk0MkxERXpMakZqTkM0MExUUXVNeXc0TGpNdE9DNDVMREV4TGpRdE1UTXVPV013TFRBdU9DMHdMalV0TVM0eUxURXVOUzB4TGpKb0xUSTNMamNOQ2drSll5MHlMak1zTUMwMUxqSXNNQzQzTFRndU5pd3liQzAwTGpNdE5TNDFhREl6TGpoMkxUVXVOR2d0TWpBdU1sWXlOeTQ1U0RRek5Hd3RNQzQwTFRFdU5tTTBMVEV1Tnl3M0xqWXROQ3d4TUM0M0xUZGpNUzR4TFRFdU1Td3hMamN0TWk0ekxERXVOeTB6TGpWTU5EUTJMamtzTVRVdU5Yb05DZ2tKSUUwME5UWXVOaXcwTVM0eFZqSTBMamhqTFRJdU1Td3dMamt0TkM0MUxERXVOUzAzTGpFc01uWXhNQzQxWXpFdU1pMHdMalVzTWk0MUxURXVNU3d6TGprdE1rdzBOVFl1Tml3ME1TNHhlaUJOTkRVMkxqWXNOVGd1TWxZME1TNDRhQzAzTGpGMk1UWXVNMHcwTlRZdU5pdzFPQzR5RFFvSkNVdzBOVFl1Tml3MU9DNHllaUJOTkRjd0xqa3NNalF1TVhZeE15NDBhRGN1T0hZdE1USmpMVEF1TVMweExUQXVPUzB4TGpVdE1pNHpMVEV1TlVnME56WmpMVEF1Tnl3d0xUSXNNQzQxTFRNdU9Td3hMalZNTkRjd0xqa3NNalF1TVhvZ1RUUTNNQzQ1TERNNUxqZDJNVGd1TldnM0xqaDJMVEUzRFFvSkNXTXRNUzR6TERBdU15MHlMamtzTUM0NUxUUXVOeXd4TGpoTU5EY3dMamtzTXprdU4zb2lMejROQ2p3dlp6NE5Danh3WVhSb0lHTnNZWE56UFNKemRERWlJR1E5SWsweE1UZ3VNU3d4TWpZdU5XdzVMamt0TUM0eWRqSXlZeTB3TGpNc05DNDBMVE11TWl3MkxqWXRPQzQxTERZdU9HTXROUzQzTERBdU9DMDRMalF0Tnk0ekxUTXRPR00wTFRBdU1pd3pMak1zTlM0MUxUQXVNeXcwTGprTkNnbGpNQzQ1TERJdU5TdzJMakVzTVM0eExEVXVOQzB5TGpGak1Dd3dMREF0TVRndU9Td3dMVEU0TGpsak1DNHlMVEl1TVMwd0xqa3RNeTR4TFRNdU5TMHlMamxETVRFNExqRXNNVEk0TGpFc01URTRMakVzTVRJMkxqVXNNVEU0TGpFc01USTJMalY2SUUweE1qQXVOeXd4TVRrdU9BMEtDV013TFRRdU9DdzNMalF0TkM0M0xEY3VNaXd3UXpFeU9Dd3hNalF1TkN3eE1qQXVPU3d4TWpRdU5Td3hNakF1Tnl3eE1Ua3VPSG9pTHo0TkNqeHdZWFJvSUdOc1lYTnpQU0p6ZERFaUlHUTlJazB4TkRZdU1pd3hORGN1TVdndE1UTXVOWFl0TVM0M1l6SXVOeXd3TGpFc015NDVMVEF1T1N3ekxqWXRNaTQ1VmpFek1XTXdMakl0TWk0eExURXRNeTR4TFRNdU5pMHlMamwyTFRFdU5td3hNQzB3TGpKMk1UWXVNUTBLQ1dNdE1DNHlMREl1TVN3d0xqa3NNeTR4TERNdU5Td3lMamxXTVRRM0xqRjZJRTB4TXpVdU5Td3hNVGt1T0dNd0xUUXVPQ3czTGpRdE5DNDNMRGN1TWl3d1F6RTBNaTQ1TERFeU5DNDBMREV6TlM0MUxERXlOQzQxTERFek5TNDFMREV4T1M0NGVpSXZQZzBLUEhCaGRHZ2dZMnhoYzNNOUluTjBNU0lnWkQwaVRURTNOaTR5TERFeU5pNDBkakV1T1dndE5TNDFkakUwTGpKakxUQXVOU3d5TGpJc01Td3pMaklzTkM0MUxESXVPWFl4TGpkb0xURTFMakYyTFRFdU4yTXpMREF1TWl3MExqTXRNQzQzTERRdE1pNDVkaTB4TkM0eWFDMDBkaTB4TGpsb05BMEtDV010TVM0NUxUa3VPU3d4TkM0MExURXlMallzTVRZdU1TMDFMak5qTUN3MkxURXdMak1zTVM0MUxUVXRNaTR5WXkwMExqZ3RNUzQwTFRRdU5pd3pMamt0TkM0MExEY3VORXd4TnpZdU1pd3hNall1TkV3eE56WXVNaXd4TWpZdU5Ib2lMejROQ2p4d1lYUm9JR05zWVhOelBTSnpkREVpSUdROUlrMHhPVFl1Tml3eE16RXVPWFl4TUM0eVl6QXNNeTQzTERJdU9Dd3pMalFzTXkwd0xqVm9NUzQyWXpFdU1pdzFMall0Tnk0NUxEZ3VNUzB4TUM0eUxETXVNV010TVRNdU5DdzVMakl0TWpFdE55NHpMVEF1T0MweE1DNDJEUW9KWXpBdU9DMDBMamd0TWk0eExUY3VOeTAyTGprdE5TNDFkakF1TW1NM0xqSXNNaTQxTFRNdU1Td3hNQzR5TFRRc01pNDFRekUzT0M0NUxERXlOQzQxTERFNU55NDNMREV5TXk0MUxERTVOaTQyTERFek1TNDVlaUJOTVRrd0xERTBNUzR4ZGkwMURRb0pRekUzT0M0MExERXpPUzR4TERFNE9DNHhMREUxTWk0eExERTVNQ3d4TkRFdU1Yb2lMejROQ2p4d1lYUm9JR05zWVhOelBTSnpkREVpSUdROUlrMHlNVFV1TVN3eE5EY3VNVWd5TURKMkxURXVOMk15TGpRc01DNHhMRE11TlMwd0xqa3NNeTR6TFRJdU9WWXhNekZqTUM0eUxUSXVNUzB3TGprdE15NHhMVE11TXkweUxqbDJMVEV1Tm13NUxqUXRNQzR5ZGpNdU1RMEtDV00wTGpFdE5TNDJMREV6TFRRdU9Dd3hNeXd5TGpoak1Dd3dMREFzTVRBdU1pd3dMREV3TGpKakxUQXVNaXd5TGpFc01DNDRMRE11TVN3ekxqRXNNaTQ1ZGpFdU4wZ3lNVGhqTFRBdU5pMHhMamNzTVM0M0xUSXdMakV0TVM0NUxURTVMakZqTFRRdU9Td3dMalF0TkM0MExERXdMak10TkM0ekxERTBMalFOQ2dsakxUQXVNaXd5TGpFc01DNDVMRE11TVN3ekxqVXNNaTQ1ZGpFdU9VZ3lNVFV1TVhvaUx6NE5Danh3WVhSb0lHTnNZWE56UFNKemRERWlJR1E5SWsweU5EY3VNaXd4TWpVdU1XTXRNQzQ1TERBdE1TNHpMREF1T1MweExqUXNNaTR6WXpZdU1TdzFMREl1TWl3eE1pNDFMVFl1TlN3eE1pNHpZeTB4TGpJc01DNHlMVFF1T0MweExqTXROU3d3TGpWak1Dd3dMamNzTVM0M0xERXVNaXcxTERFdU5BMEtDV00zTGpZc01DNHlMREV4TGpRc01pNHhMREV4TGpRc05TNDNZeTB3TGpVc05DNDFMVFF1TWl3Mkxqa3RNVEV1TXl3M0xqTmpMVGt1T0N3d0xqVXRNVFV1TlMwM0xqWXROUzA1WXkwMExqZ3RNUzAyTGpNdE5TNHlMVEF1TlMwM0xqTmpMVGt1T0MwMUxqZ3NNUzR6TFRFMUxqVXNPUzQ1TFRFeExqZ05DZ2xqTVM0ekxUY3VOU3d4TXk0eExURXNOUzR5TERFdU4wTXlORGNzTVRJNExqTXNNalEyTGpZc01USTJMallzTWpRM0xqSXNNVEkxTGpGNklFMHlORFF1T1N3eE5Ea3VOMk14TGpRdE15NDFMVEV4TGpVdE5DNHpMVEV4TGpFdE1DNDFEUW9KUXpJek15NHhMREUxTXk0ekxESTBOUzR5TERFMU5Dd3lORFF1T1N3eE5Ea3VOM29nVFRJek9TNDJMREV5Tnk0Mll5MDBMalV0TUM0M0xUUXVNeXd4TVM0MExEQXNNVEF1TmtNeU5ETXVOeXd4TXprc01qUXpMamdzTVRJMkxqa3NNak01TGpZc01USTNMalo2SWk4K0RRbzhjR0YwYUNCamJHRnpjejBpYzNReElpQmtQU0pOTWpnekxqWXNNVEkxTGpGakxUQXVPU3d3TFRFdU15d3dMamt0TVM0MExESXVNMk0yTGpFc05Td3lMaklzTVRJdU5TMDJMalVzTVRJdU0yTXRNUzR5TERBdU1pMDBMamd0TVM0ekxUVXNNQzQxWXpBc01DNDNMREV1Tnl3eExqSXNOU3d4TGpRTkNnbGpOeTQyTERBdU1pd3hNUzQwTERJdU1Td3hNUzQwTERVdU4yTXRNQzQxTERRdU5TMDBMaklzTmk0NUxURXhMak1zTnk0ell5MDVMamdzTUM0MUxURTFMalV0Tnk0MkxUVXRPV010TkM0NExURXROaTR6TFRVdU1pMHdMalV0Tnk0ell5MDVMamd0TlM0NExERXVNeTB4TlM0MUxEa3VPUzB4TVM0NERRb0pZekV1TXkwM0xqVXNNVE11TVMweExEVXVNaXd4TGpkRE1qZ3pMalFzTVRJNExqTXNNamd5TGprc01USTJMallzTWpnekxqWXNNVEkxTGpGNklFMHlPREV1TXl3eE5Ea3VOMk14TGpRdE15NDFMVEV4TGpVdE5DNHpMVEV4TGpFdE1DNDFEUW9KUXpJMk9TNDFMREUxTXk0ekxESTRNUzQyTERFMU5Dd3lPREV1TXl3eE5Ea3VOM29nVFRJM05TNDVMREV5Tnk0Mll5MDBMalV0TUM0M0xUUXVNeXd4TVM0MExEQXNNVEF1TmtNeU9EQXNNVE01TERJNE1DNHhMREV5Tmk0NUxESTNOUzQ1TERFeU55NDJlaUl2UGcwS1BIQmhkR2dnWTJ4aGMzTTlJbk4wTVNJZ1pEMGlUVE14TUM0NUxERXpOaTQzYUMweE5HTXRNQzQwTERFd0xEY3VOQ3d4TVM0MUxERXlMalVzTkM0MWJERXVOQ3d3TGpsakxUUXVOeXc1TGpRdE1qRXVNaXcxTGpNdE1qRXROUzQwRFFvSlF6STVNQzR5TERFeU15NDBMRE14TVM0MExERXlNUzQxTERNeE1DNDVMREV6Tmk0M2VpQk5NamsyTGprc01UTTBMamhvTmk0NVF6TXdOQzR6TERFeU5DNDBMREk1Tnk0eExERXlOUzR5TERJNU5pNDVMREV6TkM0NGVpSXZQZzBLUEhCaGRHZ2dZMnhoYzNNOUluTjBNU0lnWkQwaVRUTXhOUzQwTERFME15NDRZekF0TkM0MkxEY3VOQzAwTGpjc055NDBMREJETXpJekxERTBPQzR5TERNeE5TNHlMREUwT0M0eExETXhOUzQwTERFME15NDRlaUl2UGcwS1BHYytEUW9KUEhCaGRHZ2dZMnhoYzNNOUluTjBNU0lnWkQwaVRUTTFNQzR6TERFek5TNDJZeTB3TGpnc05pNHlMVFF1TkN3NUxqVXRNVEF1T0N3NUxqaGpMVFl1Tmkwd0xqTXRNVEF1TWkwekxqWXRNVEF1T0MwNUxqaGpNQzQ0TFRZdU15dzBMalF0T1M0M0xERXdMamd0TVRBdU1nMEtDUWxETXpRMUxqa3NNVEkxTGprc016UTVMalVzTVRJNUxqTXNNelV3TGpNc01UTTFMalo2SUUwek5ETXVNeXd4TXpVdU5tTXdMVFV1TnkweExqTXRPQzQyTFRNdU9TMDRMamRqTFRJdU5pd3dMakV0TXk0NUxETXRNeTQ1TERndU4yTXdMakVzTlM0M0xERXVOQ3c0TGpZc015NDVMRGd1TncwS0NRbERNelF4TGprc01UUTBMaklzTXpRekxqSXNNVFF4TGpNc016UXpMak1zTVRNMUxqWjZJaTgrRFFvSlBIQmhkR2dnWTJ4aGMzTTlJbk4wTVNJZ1pEMGlUVE0yTkN3eE5EVXVNMGd6TlRGMkxURXVObU15TGpRc01DNHhMRE11TkMwd0xqZ3NNeTR5TFRJdU4zWXRNVEF1TjJNd0xqSXRNUzQ1TFRBdU9TMHlMamt0TXk0eUxUSXVOM1l0TVM0MWJEZ3VOeTB3TGpKMk5DNDBhREF1TWcwS0NRbGpNUzR6TFRNdU1pd3pMakV0TkM0NExEVXVOUzAwTGpoak1pNDFMREF1TVN3ekxqZ3NNUzR6TERNdU9Td3pMalpqTFRBdU1Td3lMVEV1TVN3ekxqRXRNaTQ1TERNdU1tTXRNUzQ0TFRBdU1TMHlMamd0TVM0eExUSXVPUzB6TGpGak1DMHdMaklzTUM0eExUQXVOU3d3TGpJdE1DNDREUW9KQ1dNd0xUQXVNeXd3TFRBdU5Td3dMVEF1Tm1NdE1pNDBMREV1T0MwekxqWXNOUzQ1TFRNdU5pd3hNaTR4WXkwd0xqUXNNaTQ1TERBdU9TdzBMaklzTXk0NUxETXVPVll4TkRVdU0zb2lMejROQ2drOGNHRjBhQ0JqYkdGemN6MGljM1F4SWlCa1BTSk5NemcyTGpFc01USTBMamhvTFRBdU1tTXRNQzQyTERBdU1pMHhMREF1T1MweExqRXNNaTR4WXpFdU9Dd3hMalFzTWk0M0xETXVNU3d5TGpjc05TNHlZeTB3TGpJc05DMHpMakVzTmk0eExUZ3VOeXcyTGpNTkNna0pZeTB3TGpZc01DMHhMak10TUM0eExUSXVNUzB3TGpKakxUQXVNeTB3TGpFdE1DNDJMVEF1TWkweExUQXVNbU10TVM0eExEQXRNUzQyTERBdU15MHhMallzTUM0NFl6QXNNQzQyTERFdU5pd3hMakVzTkM0M0xERXVNMk0zTGpFc01DNHlMREV3TGpjc01pd3hNQzQzTERVdU13MEtDUWxqTFRBdU5DdzBMakl0TXk0NUxEWXVOUzB4TUM0MUxEWXVPR010Tmk0eUxUQXVNaTA1TGpZdE1TNDVMVEV3TFRVdU1tTXdMak10TVM0NExESXVNUzB5TGprc05TNHpMVE11TW1NdE1DNHlMVEF1TVMwd0xqWXRNQzR6TFRFdU1TMHdMalZqTFRJdE1DNDBMVE10TVM0MUxUSXVPUzB6TGpFTkNna0pZekF0TVM0eUxERXVNaTB5TGpNc015NDJMVE11TW1NdE1pNHpMVEV1TWkwekxqUXRNaTQ1TFRNdU5pMDFZekF1TXkwMExqRXNNeTR5TFRZdU15dzRMamN0Tmk0Mll6RXVOQ3d3TERJdU55d3dMaklzTkN3d0xqWmpNQzQxTFRJdU1pd3hMamd0TXk0eUxETXVPUzB6TGpJTkNna0pZekl1TWl3d0xqRXNNeTR6TERFc015NDBMREl1TjJNdE1DNHhMREV1TXkwd0xqa3NNaTB5TGpRc01pNHhZeTB4TGpNc01DMHhMamt0TUM0MkxURXVPUzB4TGpoRE16ZzFMamtzTVRJMUxqVXNNemcxTGprc01USTFMakVzTXpnMkxqRXNNVEkwTGpoNklFMHpPRFFzTVRRM0xqY05DZ2tKWXpBdU1TMHhMamt0TVM0NUxUSXVPUzAyTFRJdU4yTXRNeXd3TFRRdU5Td3dMamd0TkM0MExESXVNMk13TGpFc01pd3hMamtzTXk0eExEVXVOU3d6TGpKRE16Z3lMaklzTVRVd0xqUXNNemd6TGpnc01UUTVMalFzTXpnMExERTBOeTQzZWlCTk16YzRMamtzTVRJM0xqRU5DZ2tKWXkweUxEQXRNeTR4TERFdU5pMHpMakVzTkM0NFl6QXNNeTR6TERFc05Td3pMakVzTldNeExqa3NNQ3d5TGprdE1TNDNMREl1T1MwMVF6TTRNUzQ1TERFeU9DNDNMRE00TUM0NUxERXlOeTR4TERNM09DNDVMREV5Tnk0eGVpSXZQZzBLUEM5blBnMEtQQzl6ZG1jK0RRbz1cXFwiXFxuXFxuJC5leHBvcnRzLmltZzEgPSBpbWcxO1wifSx7XCJuYW1lXCI6XCLop6Plr4ZcIixcInBhdGhcIjpcImppZW1pXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBlbmNyeXB0RGF0YSh3b3JkKSB7XFxuZXZhbChnZXRDcnlwdG9KUygpKTtcXG5jb25zdCBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFwiMmQ0ZWJiN2NiNzY3ZGFiMVxcXCIpO1xcbmNvbnN0IGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIjc1NjNjYTRhZjQxYmQwZmJcXFwiKTtcXG4gIGNvbnN0IGVuY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHdvcmQsa2V5LCB7XFxuICAgIGl2OiBpdixcXG4gICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nLFxcbiAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQ1xcbiAgfSk7XFxuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGVuY3J5cHRlZC50b1N0cmluZygpKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKLng63or41cIixcInBhdGhcIjpcImpza2V5XCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcblxcbi8v4pGgXFxudmFyIGFjdCA9IEpTT04ucGFyc2UoZmV0Y2goZ2V0TXlWYXIoXFxcImhvbWVcXFwiKSArIFxcXCIvanNrZXlzLnBocD8yMDI0MDFcXFwiKS5tYXRjaCgvXFxcXFsuKlxcXFxdLylbMF0pO1xcbi8v4pGhdmFyIGFjdCA9IHBkZmEoZmV0Y2goXFxcImh0dHBzOi8vamZnLnhuLS0xNXF0MXhvemVtdGZyczNiLmNvbS9cXFwiKSxcXFwiLmxpc3QmJmFcXFwiKVxcbi8vbG9nKGFjdC5sZW5ndGgpXFxuLy/ikaBcXG5mb3IgKHZhciBpIGluIGFjdCkgeyAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxtaWRkbGU+PGZvbnQgY29sb3I9XFxcIiMwMDhCOEJcXFwiPicgKyBhY3RbaV0rICc8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgICAgIHVybDogYWN0W2ldICsgJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICByZXF1aXJlKCdoaWtlcjovL3BhZ2UvamllbWknKVxcbiAgICAgICAgICAgICAgICAgICBsZXQgICBpbmEgPSBlbmNyeXB0RGF0YShpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc3M/dXJsPScgKyBnZXRNeVZhcihcXFwiaG9tZVxcXCIpICsgJy9zZWFyY2gucGhwP2s9JyArIGluYSArICfvvIbvvIZwPWZ5cGFnZScgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgfSkgLCAgICAgICBcXG4gICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcbiAgICB9KVxcbn07XFxuLypcXG4vL+KRoVxcbmZvciAodmFyIGkgaW4gYWN0KSB7ICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cXFwiIzAwOEI4QlxcXCI+JyArIHBkZmgoYWN0W2ldLFxcXCJhJiZUZXh0XFxcIikrICc8L2ZvbnQ+PC9taWRkbGU+PC9iPicsXFxuICAgICAgICB1cmw6IHBkZmgoYWN0W2ldLFxcXCJhJiZocmVmXFxcIikgKyAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NzP3VybD0nICtpbnB1dCsn77yG77yGcD1meXBhZ2UnICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgIH0pICwgICAgICAgXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgfSlcXG59OyovXFxuc2V0UmVzdWx0KGQpXCJ9XSIsImljb24iOiJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvelN4dFUucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment