xiaomianao666

小程序:哔哩Ⓡ

Apr 7th, 2023
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序,SiVi¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjMwMzE0MDIsImNvbF90eXBlIjoibW92aWVfMSIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcbmlmIChfdHlwZSA9PSBcIuaWsOeJiFwiKSB7XG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7XG59IGVsc2UgaWYgKF90eXBlID09IFwi5pen54mIXCIpe1xuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9jb21tb24yXCIpKS5ydWxlKTtcbn0iLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlJmtleXdvcmQ9KioiLCJncm91cCI6IuWTlOWTqeWTlOWTqSIsInNlYXJjaEZpbmQiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9zXCIpKS5ydWxlKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8yIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS95Y2xcIikpLnJ1bGUpOyIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGg5LiA57qn5paw6aG16Z2iXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi8J+UjVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9zZWFyY2g/cnVsZT1cXFwiICsgTVlfUlVMRS50aXRsZSArIFxcXCImcz0nK2lucHV0XFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCLmkJzkvaDmg7PnnIsuLi5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCJcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6ICQoXFxcIuabtOWkmlxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICAvL3BpY191cmw6ICdodHRwczovL2ltZzAuYmFpZHUuY29tL2l0L3U9MTYxMjEwMTQyMywxMTQ1OTgyMTYzJmZtPTI1MyZhcHA9MTM4JmY9SlBFRz93PTUwMCZoPTQyNCcsXFxuICAgICAgICBpbWc6XFxcImh0dHBzOi8vd3d3LmhlbGxvaW1nLmNvbS9pbWFnZXMvMjAyMi8wNy8yMS9adllDRVMucG5nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsXFxuICAgICAgICBkZXNjOlxcXCIwXFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJChcXFwi5o6S6KGM5qacXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS81MC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnm7Tmkq1cXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIyLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aXtuWFieacuicsXFxuICAgICAgICB1cmw6ICQoXFxcIuaXtuWFieaculxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTYucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnVVAnLFxcbiAgICAgICAgdXJsOiAkKFxcXCJVUOS4u1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvOTgucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJChcXFwi57Si5byVXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS80Ny5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmlrDnlaonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmlrDnlapcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIzLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+a8q+a4uCcsXFxuICAgICAgICB1cmw6ICQoXFxcIua8q+a4uFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvODMucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcInBpY18xX2NhcmRcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmjpLooYzmppxcIixcInBhdGhcIjpcInBoYlwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxuICAgIGZvciAodmFyIGkgaW4gd29yZDEpIHtcXG4gICAgICAgIHZhciBhID0gd29yZDFbaV07XFxuICAgICAgICB2YXIgYiA9IGNsYXNzMVtpXTtcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAgYSA9PSBsYWIxID8gZ2V0SGVhZChhKSA6IGEsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwibGFiMVxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwia2V5MVxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbi8v5YiG57G7XFxuLy9sb2coTVlfUEFHRSlcXG5cXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcblxcbk1ZX1VSTCA9IHVybC5yZXBsYWNlKCdhbGwnLCBnZXRWYXIoJ2tleTEnKSk7XFxuXFxudmFyIHltID0gcmVxdWVzdChNWV9VUkwsIHt9KS5yZXBsYWNlKC9cXFxcXFxcXHUwMDJGL2csICcvJyk7XFxuaWYgKHltLmluY2x1ZGVzKCdyYW5rLXRpcHMnKSkge1xcblxcbiAgICAvKuaPkOekuuS/oeaBr1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOid0ZXh0XzEnXFxuICAgICAgfSk7XFxuICAgIOaPkOekuuS/oeaBryovXFxuXFxuICAgIHZhciBwaSA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJyYW5rTGlzdFxcXCI6JylbMV0uc3BsaXQoJyxcXFwicmFua05vdGVcXFwiJylbMF0pO1xcbiAgICBmb3IgKHZhciBpID0gMDsgcGkgIT0gbnVsbCAmJiBpIDwgcGkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBpICsgMTtcXG4gICAgICAgIHZhciBxID0gSlNPTi5zdHJpbmdpZnkocGlbaV0pO1xcbiAgICAgICAgaWYgKCFwaVtpXS51cmwpIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHBpW2ldLmJ2aWQ7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBydXJsID0gcGlbaV0udXJsO1xcbiAgICAgICAgfVxcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgZGVzID0gJ3VwOiAnICsgcGlbaV0ub3duZXIubmFtZTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICB2YXIgZGVzID0gcGlbaV0ubmV3X2VwLmluZGV4X3Nob3c7XFxuICAgICAgICB9XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwaVtpXS50aXRsZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiBwaVtpXS5waWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIC8vZGVzYzogKHBpW2ldLm5ld19lcC5pbmRleF9zaG93ID8gcGlbaV0ubmV3X2VwLmluZGV4X3Nob3cgOiAoJ3VwOiAnICsgcGlbaV0ub3duZXIubmFtZSkpLFxcbiAgICAgICAgICAgIGRlc2M6ZGVzLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBydXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfY2FyZCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOidOby4nK251bSsnXFxcXG5cXFxcbuKAmOKAmDxzbWFsbD4nK3BpW2ldLnRpdGxlKydcXFxcbicrKCFxLmluY2x1ZGVzKCduYW1lJyk/cGlbaV0ubmV3X2VwLmluZGV4X3Nob3c6KCd1cDogJytwaVtpXS5vd25lci5uYW1lKSkrJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgZGVzYzonMCcsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytydXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICovXFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzoioLliLbkuIDngrnvvIzkvJHmga/llabvvIHigJ3igJ0nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGhdXDwn5C3XCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwiY29uc3QgaGVhZENvbG9yID0gXFxcIiMzNThjY2RcXFwiO1xcblxcbi8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICByZXR1cm4gdGltZVxcbn1cXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG4vL+aXtumXtOaIs+i9rOaNolxcblxcbnZhciB1aWQgPSByZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwge30pO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgcHV0TXlWYXIoXFxcInBhcmFtXFxcIiwgXFxcIlxcXCIpO1xcbn1cXG52YXIgVVBfVVJMID0gJ2hpa2VyOi8vZW1wdHkvZnlwYWdlIyNodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zcGFjZS9hcmNoaXZlL2N1cnNvcj9haWQ9JyArIGdldE15VmFyKFxcXCJwYXJhbVxcXCIpICsgJyZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZ2bWlkPXVpZCc7XFxudmFyIHVwX3VybCA9IFVQX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXS5yZXBsYWNlKFxcXCJ1aWRcXFwiLCB1aWQpO1xcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuXFxuLy/ljrvpmaTlhbPms6jph4znmoTnqbrnmb3lhYPntKBcXG52YXIgeHggPSB4eC5maWx0ZXIoZnVuY3Rpb24ocykge1xcbiAgICByZXR1cm4gcyAmJiBzLnRyaW0oKTtcXG59KTtcXG5cXG4vL+abtOaWsOWktOWDj1xcbmZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgaWYgKCF4eFtrXS5zcGxpdCgnIyMnKVsxXSkge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSA/IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpIDogXFxcImQ1YWY1NTEzYWNiOTI5NDUzOWVjZGY3ZmZkNTViZjUxXFxcIiwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IGdldE15VmFyKFxcXCJVQVxcXCIpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBnZXRNeVZhcihcXFwiVUFcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGZhY2UgPSB4eFtrXSArICcjIycgKyBwaWM7XFxuICAgICAgICB2YXIgZmFjZSA9IHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkucmVwbGFjZSh4eFtrXSwgZmFjZSk7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCBmYWNlKTtcXG4gICAgfVxcbn1cXG5cXG5cXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBzX3RhYiA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgJiYgZ2V0VmFyKCdzdGFyaWQnKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aOqOiNkCcgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mjqjojZAnLFxcbiAgICAgICAgICAgIHVybDogJ+aOqOiNkCcgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aUtuiXjycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mlLbol48nLFxcbiAgICAgICAgICAgIHVybDogJ+aUtuiXjycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73nlaonLFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73liacnLFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8v6Ieq5bex55qE5L+h5oGvXFxuICAgIHRyeSB7XFxuICAgICAgICBsZXQgYWNjZXNzX2tleSA9IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgIGxldCBtaWQgPSBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgbGV0IHRzID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0VGltZSgpKS5zbGljZSgwLCAxMCk7XFxuICAgICAgICBsZXQgYWFhID0gXFxcImFjY2Vzc19rZXk9XFxcIiArIGFjY2Vzc19rZXkgKyBcXFwiJmFwcGtleT00NDA5ZTJjZThmZmQxMmI4JmJ1aWxkPTU1MjA0MDAmbWlkPVxcXCIgKyBtaWQgKyBcXFwiJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZ0cz1cXFwiICsgdHMgKyBcXFwiJnZtaWQ9XFxcIiArIG1pZDtcXG4gICAgICAgIGxldCBiYmIgPSBcXFwiNTliNDNlMDRhZDY5NjVmMzQzMTkwNjJiNDc4ZjgzZGRcXFwiO1xcbiAgICAgICAgbGV0IHNpZ24gPSBtZDUoYWFhICsgYmJiKTtcXG4gICAgICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc3BhY2U/JyArIGFhYSArICcmc2lnbj0nICsgc2lnbjtcXG4gICAgICAgIHZhciBzdGFyanNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogZ2V0TXlWYXIoXFxcIlVBXFxcIilcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG4gICAgICAgIH0pKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgPyAn4pi677iPJyA6ICcnKSArIHN0YXJqc29uLmRhdGEuY2FyZC5uYW1lLFxcbiAgICAgICAgICAgIHBpY191cmw6IHN0YXJqc29uLmRhdGEuY2FyZC5mYWNlICsgUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcpPT0n5YWz5rOoJz8n5oqY5Y+gJzon5YWz5rOoJyk7cHV0VmFyKCdzZXQnLCcnKTtjbGVhclZhcignaHRtJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignVVAnLCfkuJPms6gnKVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyA/ICfimLrvuI8nIDogJycpICsgXFxcIuaIkeS5n+S4jeefpemBk+S9oOaYr+iwgeWVilxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJyk9PSflhbPms6gnPyfmipjlj6AnOiflhbPms6gnKTtwdXRWYXIoJ3NldCcsJycpO2NsZWFyVmFyKCdodG0nKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdVUCcsJ+S4k+azqCcpXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJjigJhVUOKAmeKAmScgKyAnPC9zdHJvbmc+JyArIChnZXRWYXIoJ3VwJywgJ+aKmOWPoCcpID09ICflsZXlvIAnID8gJ/CfmYknIDogJ/CfmYgnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigndXAnLCBnZXRWYXIoJ3VwJyk9PSflsZXlvIAnPyfmipjlj6AnOiflsZXlvIAnKTtwdXRWYXIoJ3NldCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3VwJywn5bGV5byAJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ3NldCcpICE9ICcnID8gKGdldFZhcignc2V0JykgPT0gJ+e9rumhticgPyAnPHN0cm9uZz4nICsgJ+KAnOKAnOe9rumhticgKyAnPC9zdHJvbmc+JyA6ICc8c3Ryb25nPicgKyAn4oCc4oCc5Y+W5YWz4oCd4oCdJyArICc8L3N0cm9uZz4nKSA6ICforr7nva4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdzZXQnLCBnZXRWYXIoJ3NldCcsJ+WxleW8gCcpPT0n5Y+W5YWzJz8n572u6aG2Jzon5Y+W5YWzJyk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdzZXQnLCflsZXlvIAnKSsnaW5nfidcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICAvL+i0puWPt+WFs+azqOWIl+ihqFxcbiAgICBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJyB8fCBnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpIHtcXG4gICAgICAgICAgICB2YXIgdXJscyA9IFtdO1xcbiAgICAgICAgICAgIHZhciBzdXJsID0gJ2h0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvdz90eXBlPWZvbGxvdyZtaWQ9JyArIGdldFZhcignc3RhcmlkJyk7XFxuICAgICAgICAgICAgdmFyIGlkID0gc3VybC5zcGxpdCgnbWlkPScpWzFdO1xcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmVxdWVzdChzdXJsLCB7fSk7XFxuICAgICAgICAgICAgdmFyIHN0YXJsaXN0ID0gSlNPTi5wYXJzZSgne1xcXCJteScgKyBjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdICsgJ319Jyk7XFxuICAgICAgICAgICAgdmFyIHN0YXJscyA9IHN0YXJsaXN0WydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJyArIGlkXVsncmVzdWx0J107XFxuICAgICAgICAgICAgZm9yICh4IGluIHN0YXJscykge1xcbiAgICAgICAgICAgICAgICAvL3ZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyBzdGFybHNbeF0ubWlkICsgJyZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj1meXBhZ2Umb3JkZXI9cHViZGF0ZSZhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKTtcXG5cXG4gICAgICAgICAgICAgICAgdmFyIHl1cmwgPSAnaGlrZXI6Ly9lbXB0eS9meXBhZ2UjI2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NwYWNlL2FyY2hpdmUvY3Vyc29yP2FpZD0mYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmdm1pZD0nICsgc3RhcmxzW3hdLm1pZDtcXG5cXG4gICAgICAgICAgICAgICAgdXJscy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogeXVybC5zcGxpdChcXFwiIyNcXFwiKVsxXS5yZXBsYWNlKC9meXBhZ2UvZywgJzEnKSxcXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogZ2V0TXlWYXIoXFxcIlVBXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB5dXJsID0geXVybC5yZXBsYWNlKC9cXFxcJi9nLCBcXFwi77yG77yGXFxcIikucmVwbGFjZSgvXFxcXD8vZywgXFxcIu+8n++8n1xcXCIpO1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKVxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RhcmxzW3hdLnVuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogc3RhcmxzW3hdLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejI/dXJsPScgKyB5dXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v5YWz5rOo5YiX6KGoXFxuXFxuICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnKSB7XFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTtwdXRWYXIyKCd1aWQnLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLGlucHV0KTtwdXRWYXIoJ3VwJywn5oqY5Y+gJyk7cmVmcmVzaFBhZ2UoZmFsc2UpO3B1dE15VmFyKFxcXCJwYXJhbVxcXCIsXFxcIlxcXCIpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCI7YCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLy/lj5blhbPnm7jlhbNcXG5cXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+WPluWFsycpIHtcXG5cXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KdjCcgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICAvL3VybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/lj5blhbPmiJDlip/vvIHpk4HlrZDlho3op4Hwn6aGJ2AsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChtaWQsIGxpbmUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBzYyA9IGxpbmUgKyAnXFxcXG4nO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHhyID0gZ2V0VmFyKCdsYjInKSArICdcXFxcbic7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgeHogPSB4ci5yZXBsYWNlKHNjLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB4eik7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2xiMicsIHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSkpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmeSA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vbW9kaWZ5XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nfa2V5OiBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZDogbWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0OiBcXFwiMlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5jb2RlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZnkgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj5blhbPmiJDlip8o5pys5ZywJuS6keerrylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pys5Zyw5Y+W5YWz5oiQ5Yqf77yM5LqR56uv5bqU6K+lZ+S6hlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwicGFyYW1cXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnXFxuICAgICAgICAgICAgICAgIH0sIHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KFxcXCIjI1xcXCIpWzBdLCB4eFtrXSksXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v572u6aG255u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsc2MreHopO3JlZnJlc2hQYWdlKGZhbHNlKTtwdXRNeVZhcihcXFwicGFyYW1cXFwiLFxcXCJcXFwiKTsndG9hc3Q6Ly/nva7pobbmiJDlip/wn5SdJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxufVxcbi8vZC5wdXNoKHt0aXRsZTp4eH0pO1xcbmlmIChzX3RhYiA9PSAn5o6o6I2QJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2ZlZWRcXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn5pS26JePJykge1xcbiAgICBpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSAhPSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdzZXQnKSA9PSAnJykge1xcbiAgICB2YXIganNvbiA9IHt9O1xcbiAgICBldmFsKCdqc29uPScgKyByZXF1ZXN0KHVwX3VybCwge30pKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEuaXRlbS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLml0ZW1baV07XFxuICAgICAgICB2YXIgdCA9IE51bWJlcihqLmN0aW1lKSAqIDEwMDA7XFxuXFxuXFxuICAgICAgICB2YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG4gICAgICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXG4gICAgICAgICAgICB2YXIgcGxheSA9IChqLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbiAgICAgICAgdmFyIHBpY3MgPSAoai5jb3Zlci5pbmRleE9mKCc6JykgIT0gLTEpID8gai5jb3ZlciA6ICdodHRwczonICsgai5jb3ZlcjtcXG5cXG4gICAgICAgIHIucGljX3VybCA9IHBpY3MgKyBSZWZlcmVyO1xcbiAgICAgICAgci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXG4gICAgICAgIHIuY29sX3R5cGUgPSAnbW92aWVfMV92ZXJ0aWNhbF9waWMnO1xcbiAgICAgICAgci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIHRpbWU7XFxuICAgICAgICBpZiAoai5sZW5ndGggIT0gXFxcIjAwOjAwXFxcIikge1xcbiAgICAgICAgICAgIGQucHVzaChyKVxcbiAgICAgICAgfTtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJwYXJhbVxcXCIsIGoucGFyYW0pXFxuICAgICAgICAvL2xvZyhqLnBhcmFtKVxcbiAgICB9XFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnKSB7XFxuICAgIHRyeSB7XFxuXFxuICAgICAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJykge1xcbiAgICAgICAgICAgIGh0bSA9IFtdO1xcbiAgICAgICAgICAgIHZhciB5bSA9IGJhdGNoRmV0Y2godXJscykubWFwKGZ1bmN0aW9uKGEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGggPSBKU09OLnBhcnNlKGEpLmRhdGEuaXRlbTtcXG4gICAgICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBodG0gPSBodG0uc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBiLmN0aW1lIC0gYS5jdGltZTtcXG4gICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgICAgICBhLmN0aW1lID0gZ2V0TG9jYWxUaW1lKE51bWJlcihhLmN0aW1lKSAqIDEwMDApO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHB1dFZhcignaHRtJywgSlNPTi5zdHJpbmdpZnkoaHRtKSk7XFxuICAgICAgICB9IGVsc2UgaHRtID0gSlNPTi5wYXJzZShnZXRWYXIoJ2h0bScpKTtcXG4gICAgICAgIHZhciBpID0gMDtcXG4gICAgICAgIHZhciBrID0gMDtcXG4gICAgICAgIHZhciByID0gbmV3IERhdGUoKTtcXG4gICAgICAgIHZhciBNID0gci5nZXRNb250aCgpICsgMTtcXG4gICAgICAgIHZhciB0RCA9IHIuZ2V0RnVsbFllYXIoKSArICctJyArIChNIDwgMTAgPyAoJzAnICsgTSkgOiBNKSArICctJyArIChyLmdldERhdGUoKSA8IDEwID8gKCcwJyArIHIuZ2V0RGF0ZSgpKSA6IHIuZ2V0RGF0ZSgpKTtcXG5cXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaHRtLmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgdHJ5IHtcXG5cXG4gICAgICAgICAgICAgICAgaWYgKGogIT0gMCAmJiBodG1baiAtIDFdLmN0aW1lICE9IGh0bVtqXS5jdGltZSkgaSsrO1xcblxcbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChrID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IGh0bVtqXS5jdGltZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBrKys7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgPT0gdEQpIGRhdGUgPSAnPHN0cm9uZz7ku4rlpKk8L3N0cm9uZz4nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcIiMzNThjY2RcXFwiPicgKyBkYXRlICsgJzxcXFxcZm9udD4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VybDpgQGxhenlSdWxlPS5qczpjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIt+aWsOaIkOWKnyc7YFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0bVtqXS5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXkgPSAoaHRtW2pdLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtW2pdLnBsYXk7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1bal0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAoKGh0bVtqXS5jb3Zlci5pbmRleE9mKCc6JykgIT0gLTEpID8gaHRtW2pdLmNvdmVyIDogKCdodHRwczonICsgaHRtW2pdLmNvdmVyKSkgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICdVUDonICsgaHRtW2pdLmF1dGhvciArICcgIOaXtumVv++8micgKyBodG1bal0ubGVuZ3RoICsgJ1xcXFxu5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgaHRtW2pdLmN0aW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIueCuOS6hu+8iOS4jeeUqOWPjemmiO+8jOaaguaXtuS4jeS/ru+8iVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHml7blhYnwn5CUXCIsXCJwYXRoXCI6XCJzZ2pcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXG4gICAgdmFyIGEgPSB3b3JkMltpXTtcXG4gICAgdmFyIGIgPSBjbGFzczJbaV07XFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiBhPT1sYWIyPyBnZXRIZWFkKGEpOmEsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYyk9PntcXG4gICAgICAgIHB1dFZhcihcXFwibGFiMlxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgIHB1dFZhcihcXFwia2V5MlxcXCIsYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgYyksXFxuICAgIGNvbF90eXBlOidzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59XFxufVxcbi8v5YiG57G7XFxuXFxudmFyIG0gPSBOdW1iZXIoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0XFxcIix7fSkpO1xcbnZhciB0ID0gbTwwPzA6bTtcXG52YXIgbnVtMSA9IE51bWJlcih0KS0xMjtcXG52YXIgbnVtMiA9IE51bWJlcih0KSsxMjtcXG52YXIgbnVtMyA9IE51bWJlcih0KS0xO1xcbnZhciBudW00ID0gTnVtYmVyKHQpKzE7XFxuLy92YXIgdGltZXN0YW1wID0gRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKTtcXG52YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHN0YW1wMSA9IHRpbWVzdGFtcCAtIHQqMzAqMjQqNjAqNjAqMTAwMDtcXG52YXIgc3RhbXAyID0gdGltZXN0YW1wIC0gKHQrMSkqMzAqMjQqNjAqNjAqMTAwMDtcXG4vKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIG1tID0gc3NzLnNwbGl0KCflubQnKVsxXS5zcGxpdCgn5pyIJylbMF07XFxuICAgICB2YXIgZGQgPSBzc3Muc3BsaXQoJ+aciCcpWzFdLnNwbGl0KCfml6UnKVswXTtcXG4gICAgIHZhciBZWSA9IHNzcy5zcGxpdCgn5bm0JylbMF07XFxuICAgICB2YXIgTU0gPSAobW08IDEwID8gJzAnICsgbW06bW0pO1xcbiAgICAgdmFyIEREID0gKGRkPCAxMCA/ICcwJyArIGRkOmRkKTtcXG4gICAgIHJldHVybiAoWVkrTU0rREQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbnZhciBZWSA9IFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpOyBcXG52YXIgTU0gPSBTdHJpbmcoKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKTsgXFxudmFyIEREID0gU3RyaW5nKChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKSk7IFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbnJldHVybiB0aW1lXFxufVxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUxID0gZ2V0TG9jYWxUaW1lKHN0YW1wMSk7XFxudmFyIHRpbWUyID0gZ2V0TG9jYWxUaW1lKHN0YW1wMik7XFxudmFyIFNHSl9VUkwgPSAnaHR0cHM6Ly9zLnNlYXJjaC5iaWxpYmlsaS5jb20vY2F0ZS9zZWFyY2g/bWFpbl92ZXI9djMmc2VhcmNoX3R5cGU9dmlkZW8mdmlld190eXBlPWhvdF9yYW5rJm9yZGVyPWNsaWNrJmNvcHlfcmlnaHQ9LTEmY2F0ZV9pZD0yMiZwYWdlPScrcGFnZW51bSsnJnBhZ2VzaXplPTEwJnRpbWVfZnJvbT10aW1lMiZ0aW1lX3RvPXRpbWUxJztcXG52YXIgVVJMID0gU0dKX1VSTC5yZXBsYWNlKCd0aW1lMScsdGltZTEpLnJlcGxhY2UoJ3RpbWUyJyx0aW1lMikucmVwbGFjZSgnMjInLGdldFZhcigna2V5MicpIT0nJz9nZXRWYXIoJ2tleTInKTonMjInKTtcXG52YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChVUkwse30pKTtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTErYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMitgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW0zK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTQrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpnZXRIZWFkKCgn5b2T5YmN5pe26Ze057q/OiAnK3RpbWUyKyd+Jyt0aW1lMSkpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZSh0aW1lc3RhbXApLiBzcGxpdCgn5pelJylbMF0sXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG59XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHNzcyksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG5mb3IgKHZhciBpIGluIGpzb24ucmVzdWx0KVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLnJlc3VsdFtpXTtcXG4gaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbiBlbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcbiBkLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpqLnRpdGxlLFxcbiAgICAgICAgICBpbWc6J2h0dHBzOicrai5waWMrUmVmZXJlcixcXG4gICAgICAgICAgZGVzYzondXDwn5C3Oicrai5hdXRob3IrJ1xcXFxu5pKt5pS+6YePOiAnK3BsYXkrJyAgICAgICAg5Y+R5biD5pel5pyfOiAnK2oucHViZGF0ZS8qKydcXFxcbuaPj+i/sDonK2ouZGVzY3JpcHRpb24qLyxcXG4gICAgICAgICAgdXJsOlxcbidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8yJ1xcbiAgICAgICB9KTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5LqM57qnXCIsXCJwYXRoXCI6XCJkZXRhaWxcIixcInJ1bGVcIjpcImpzOmV2YWxQcml2YXRlSlMoXFxcIjcxNW8wSUJTeVlRTUw4SENyYm9oSWIwQnhtbTBZS1hNUVNYcVozclYzZFJPQjE2OVdZN2c5VmFHeER3bUJ3QjVUKzhSV0s2MXpNU2FiTHpuWnkxZGliYVVUUkNpRVBXdWF3aGFGMUJpOGZNY1NLZ3pGdGV5cXZ6aVo4cGZUM0pVQjg0b3ZkR3cyUUtveXA5bUZHUTF6cSs4Q0l3YWdMZSt6Tis3bTNGK3U3QUJ2bjZOL2Q2WXIvbCtPODdNRkRPMVdzTlBkbE9zZko3cUxaMlVPb2VZQnR4QkUyTVljV3Z4dlpTeWZCODgzZldneDY3RWZBSkdiVm8rb05sYks1K29VRGdnR2tBb3FObERmTmIwd3BkdGpVYjdpanZyeE1abnJZUkZJSktKemlRUmFob0UrM1pUTm4xSVNBUkREc082RklhSFIwN2F0SWhOS0IxanlPZUI0c2IzSWYvTjJNMFlvZVl4RVo4LzcyVml6ZXJMeHM2TGE1aEtVWWpVcnhPVllXQVJvU25EOE9QQldEbytkTTRrZXZzb2ZOQVpVY0dDTkF5VVMxeVowMTVRcUNjRkVqWExtbnZneTYvVEFHZU9Za1RNMEl5RkdLMEZrdXk4bjdzOHc0YjFTL0JwWkN5WTVWZ2xnZldBK2tzdjNlMWtLVGxEcDJ3cXdoTTVLSjhPMzBkMUFBTTl5dWVyc2d1ZGFnV2JMaXlFTGRIQUx0MWZ5OW92L2ZEYjRPRUFDbVgxN2JHVy9GQ0xRcTZ5T2d4eEw1QkxUS1cvUkMvNENnRkhmcHJuR0hTbVRDTTVqYVVGZzhCcjJocVRuQWx6UENMZ2VQdThjV1NnUTdRYnhyaVR1VkdONHJrMXo0cGFDZ0U3TCtwS1Q1dDd5elluVm1HNVBMcW5odHJkNUpIYnlSTDFzWE5SSDM0cGc5Ukc0TzBUMmFoYjFwY0tWWjB3OTNqMjkyVWltU0tDUWtQY1dXcmtXWEtnRFlXRXVTQXBrUDk4SHpPZUlDalk3dmNiaWRMaGo1b1VnU1VHMnJ1c05wdjk5TEFJaGFFRWhrZEZMS1U4dGtDL0Fxam9Cek1RSnhrRDVKWm9JblhlK3FPNmVkNjE2WVFua2pXODlka1I1M1NuT1FSZmdoS3pnQXFWdEtIWHJhbDhBVHN5M1Vpa1BJWkhENFVYZGtudGpvUjZnb01CRUN4NVUycEFBV0daYWtHTDRxRzZNZFFnZVZnYkR2MlJJam5Cd2hCcTFlM3d4TXNCK296VERYdjFGYVFteHBmZk5UM2VJeml2ZmdNYk84b1pqYmVRWlIybnFYaEk2dTBIaEpmMFR5Y0I4Um1UODI3MHdsNXpaNGIzVzJlQVpFQ0RaQXZPdS9YeDljVFFIb2ZLODdKQ0Y5eHhabXhQNEVCWnVDRHNWRUZqYmI4ZUFjYk9EVXh4Y3FGc005TXBJWjN4eFM1K0MybVY0Qm5Nc1BRR0ZhMFFZdVlORzlReEt1MHlnQ2dzZTlMZGN4amd2QXc4Z2ZHZkpLYk5zM3BxNXp1cGh4TXZsYlFNQitLeUpZb0tTSTNXdkdTMnI1Zk9rcHMvVERNUUJpOWhybDd6NkZlSFVsaEJjNXIzK2lVa1VuVjFwNnozS3RWMVI2Q0lrK2FJMWRHNGpvOFdMODhwOVpZcS81UVBma0MySXdVU09ZTzRVc3IwL3REeFFDbERRYUJsSjhoQjFBdHJtMGpiS2g4aERxVWk2VWt0UHhuMU1zMXQweElvZmw4d0toenN5MzU0d1dDdHZTVVROb2xjcUgxdmRnOVFUOVZQeHVobzVsL1RHMDNiQ3B2eDV1YW1YVi9ub2VSS3hJVkJJdi9CdE0wdFdmelhBdGc4c20rb3dsY0xKbHhUQlZ1eDROWGxDS2QwNnEwam84VWxHcFk1VHhYZXdGZ3BUbFZPUTJ1WnJHNkFsWWM4czduU2xoaHI4OWp3MUFqWmdhLzNDRlJDb0hTKzhRREN1SFFuZlhZbGR0bzhSVVBsaTAxc2pBajE2bXhGL09yM1h4NlYrd0IxR1hzRlZGYXE5SGVtUnR2V2VsVmFDOXpoQWVMVEgxSkQ3UVR4MmVvcXUveG1FcENhQmk2TmZRRDllLysrcnVpbGVkRzFUZ1czaThhY0dnK0RYWDUycXNPZDh5MHBEKzJhdWNGcDFOZnZZZWhvQm14MmxUVTFOZTlBY0t0aGd5bGFIcUg4RmpMNFJFTHlTR1BINHJJVTdYbXhuNDZyWmQyWHVIRll6eFA1M0hFRmJPamYxYWJKellSb1ZEd2dHNnpEYlNsMTlMak50Ky9qR1k2aTBjU3BzR1NWUHFPa25WMWIzNHZCT0g4WTBRczBENHBNQ0R4YUw0SlZsQThyYjRIa0piaUdaeXJPTndXMXhBT09ONlNYbnNFTW1HNnFkZVFDaEltM251VVhJbGFwaEZxcFB2endrTElRNHExZW9zZ2hKcGZscVpFOWV3bnJic3A4Zk5MUkZBY3E2djcwK3NXa2VrMkJpbXpwNkY3YmNhV1IydmVGS2FHaEdKb20rTWtOcTJqaWdjdERkajltd2NVRkVBWjNTYk1KemxNZmYxOEJGUkMzQzdkNUlTZFd6UnAxS0lrQTNWQ0dqV2E0ak1WT3N3TEpOVzVSYVNDdTdFUUxxa0JreUU3cFl6N2NpM0ZYOVJqNVZXQjhxS2NST1VSVDF6RDFLc3hKS1JUUVBMR3B0bEVxQXo3NE1iVlByL0Jkbzk5K3FySzNoaVkrTk5pL3F2LzBPcVM1S1BxdjBreHdEZDExWGo5bTF0dnJRSFFkR2JlOUUvVktTWWpsdGdHWHRFYWNuNWJ0SnR6Ty9QWnc1OUpRZS9aWDZkTzhmUmpkQWU0ZGNPNnBya1pUYnZLWnZDV2xyMmhBbGswOGVYOS9oc3pnUGdvRzhTSzB6NGhSVVBOQVpxV3RnOTViSEMxblhaRmtNSzhDcTVwS3BYcjhIK0RZNklKYnYzZ1Ewb1R6RzBkQkV1aXBNYWZ6YWRrU0pjdExHWE42N2UzSFhkK3Z3VHVCYlkyMGF4U2R6VzhQeFFRdW9Jd2N0Z3h4M0piQnUzR1ZUR2pMeTVjK3RRV2ZhUHZxOTRMNVl4UlJIL2F0NEp6bXZvcm00aitrcmNsUFRXMjFrMmJ3RzFVOVRRbjZRYW0wcDBvSHNTRVJFWDFsZjZXQ2thZWxxMkl1MjZZVjRNY2hvWDdOeWZOL0laaXZyT1g4Mk14Z2ZENlNRSTl2Z3paK2JkQmNENjBPa3FTdlpxZmtKVjg0TWhlWmtxNERNeDY4dTlkNlpsanNMTVAzS3RIS0NySi9PaUgyZkVSZFU4QWV6cU1OUkZqYzNWQTNMZXQ2NktRVUdRUmhqZzJ2VHVVVTVjTHNIWG4ramxlV21jQWtCQTdTQ2NiZFVFQWpUWHFLNWd1eWQzTEIwcUVESUpDdGpjY1c5ZVhCS1MyUFh5YksyaTFQbHlycGk3bkxMa3U4c2VoM0QxM3dkREFBTUlIQyt2UENhUmRreUkyd1VNQzZybjJYUjA1dWdwR3dDYkRwYmtaUm1TQmp6aHp4UHhLenBKZnY3a3pDZnZFbEtYQjdIZlFrck50KzlTeFRWZWM0KzVhOExZK2RJbXVDNmRHaGs5M2NFR0NtSlYyL1piKzVBS0p4a1B0SVEwR1FIYW5vNGQrU3dXcTZPeTZEYkRmRFlOeXhtaDdEcm45aWNtUEN4aEpWci9ZUG1aeGxjOGNybVdPMGxnMDVIUDQ0dDFNVFZMbFprRjREaGgwbW0vd3hweEZBR05CM29sUnQ2UGRZZ0htaHBkYmdVQ0N2cUJ0Y05kajR0UmZueDBKSWowMTFtSkJBN2QweDJWZkZydEdjZmtRSGpaVm9mMHRpMGcxMnczLy9NSEduc01uSGxSZWU3WkRWSTZpMlZOMHBFRThRREpUK21PSnhpNzFHc2pxSU01RWIwbG9YRHRXejRvM3lVb3E2NEhaSXgrZEt5d3pOUnp1WnNOVmZqNWxod1BwQ1AxMEhZRUs0b1Z6SFRURmhlS2JIN3BwQitnOUZ6Qnc1RXA3T2NYM040NGNMdTdlenJlQ2M1cjZLNXVJL3BLM0pUMDF0dGJub3Fza3FvUGNjZ3M5NUVKdmFKS3Z5TkE4dEdMVFlkbUk0dGh2ZVFhZm9YVk9QY1FFMVRUUGxzclpmUldCdXljRHA5V3dCdkoyOC9qaHNObHNZTFlDUGhVSUd5K1JjNGhlN3RnOEhWQ0xwNDRPNUdyOEhQSVppQ056d1cxUlFvWWlyTDZNQmRkemNONEdnSnNLbDZkYm9YbjEzNUdVd2gwMEIxc2FaRmVka2JTNEh2SEM2VHUzK0xheXlidTg2bjdBMXVyMjZnaWl1U3AvSE5DcyszUFdYc2ZCTTNQcGJveDhtV3YxaWxCVWxLWHZDUE5PTHhXVWpiNDBJWXNkelBOMC9Ga3RoQm5KZWI1djNZVkNHOVV6Zy96NkdnakN6YXl1VkNzOHp2UEgrUkVOTldCemMvWVJRcXJSN1ZxcDZVcDV3SzAyUVZpYVhBRXBlQXlaajZtSkhrb0dTZFc0bWZ6SzJnT1ROem5lZG9nckRhM0JCRDBmZWJzK1ljUkNjZVVyWldhSHJ2YWJ3dnZlUWdnY1k5aVE3Z3R0UVVnblNwYjR0TGdUSDBZbWhWODhublVsMVpUcGNLZEN5YTIvWEhES3BCUDloNkF3TzRDcm1iSFIySkdjZldlTzliL29QOVUzZnRwMzJHZlJMNWxGcm9iRG1RMXVxcFdsUHlmS1NldDJ6V0pielVnMGVZQ2VTNjdHZUlYRE12T09aU2hzOHI4cE5NdDc2eDFralJJR3BoSS9yaDErS1V0QmEwOUFVdEFOaTBzUmpTK0wwWDdMcVhaaW5nMlN6M3dzRHRYKzZHdXl3VXlqVms4RzZaOHFPSERibGRzLzJzYzFuQUU3emU2Nnl6UzhsSE40T2dMSERYdDZDZG1PZi9RNVlFUDgxSVEwN2locUhrUytKTnRuM3hQN2Q1bmNBbVNtdUlNRDdwNFBOcS91OHdLek42WXJnYTI5cjZaL3dEdHJMbkRUbys3Q29FU0ovOUdiRGo0aDlSZGZQSXVKTSthTHd1ZWptVFBEUU83ajVCZ1QzVzJwcjNKN2QrV0RlS01za2wxZXZnK3dpSXBiUk1oeTBiNmlSdThpbW44LzJ3SEtTZHZvUEZ5MXdEZEdyQjM5V0FwRDlRRzlzR3cvMGpwZ2w4eGR1R0U0Vjh4ZFlsVXNoaFBkVlhXaC9KaERaYURlY2Y1SlZpcTRFdmxkU0dkM2ZLWmZGRGgreHc4bHRsMmVLZDYzNWUrRDZrOEprVFFtZW1iOEhGc1J5MllXcFdacnh3VC9YZkRSZHlYbXNyWXRNMUFHdEJvck5UVTZoMmRXVTJwanYxVjI3TjRabGYxR0lDeTZkckZ0YURnNnhia2oyTGQrRE1QWWVlVWhJS01SeWdQc1hNSDRTLzhFbGh3Ulphc3hNMWdJc0hXbVBFRkJ1Z3BXc2phRTNDWVN3aWY2RFhKVXRWdis5bEx6SU13dDRISG1NeUZhaFJnWlI5YU5nUHB0cVAwRUJlNTJoU1ZqeEJVUDY2UDdwdUJGVVRzd3AzNVpidWZuSmFOSHVHMmFaekt4aUNNc2hYMGgwZ0dLZXV1cEZ2NzNKUm9sdkVjRURvemxtc3JzUGEzZmJ3WmlNWkI2SERLM1ptZytnZEFuSnNIWHpFcnZBeG1GampJWmpRaFJlWEl3NGFsSFlOQm91RWRiU3MvTktZbmVIVFRIK0krR0NTUmROSG1iUGt1eWwyRmxFZHdrVFBMWGdSWGR6M1M1c0FaNXVjai9IWWtiQXRpMHMyTjJ0cVJ4MnkwZCtaN2tRcytjOXJPVlc1N290b2cxdmtEeFZKcEVGV20zb241a1g4TXNSUGlrUkkycTFrd3ZsRkpHaHRGdlhLSDBFVTdrMlJ4VHgxMFhiTGVZY1RjOGdpUEZRM0NON2tDa2lyQTkydmVKQVc4V0lCN3U5d2ovRVBNcHY4N0k3ckVrcHc5WHVkSWJQUTU4dUl0L2hvK1hQMHpTRmhySzJEOEROUGNqMm1MekR4QWx0VWZ5Y3JEVERlSnFxcGlWb0sxSWp6VDNoVTFHM0JJNVp0WlR3Qk5mNGlKWWxvcVVYT0hJQ3huVXdyTnpzSEV4cGs2Uk1kMUhadFdvQnhYWXR4VkVJUDlybDNPRTBHSzJSeGJOL1hwbGZscWVLOGovdnhDbURZbG56VG1lNllNUllybDhTVkVsUkRjZUNRenFWS0Q4dHRhdStZVWY1dWNTV0M2WWZDT2I2SFlrY2ExVGtBeTJHY1Rxa2RaMVYrUzI2djFSRE9Cb1BUcmVUc2hxR085WW44aDhSN3kzWlN1aVJvL1g0UGptSUVTZ1hvV1JDWHN0c2gvZ01xdUt5Y05IdWFGYVBITVcwMkJuNDdyT0lwZm93OEZwUWNod0g4SFhjWnFKMW12Q0E5THBpSEtQS2llZzI4QWZDM0g0d1VXK1VpVndxUXhFdGJWMGszb1lqdS80RERuU2tKRUMrNFpidFdKRzEzMzAyVXJlRnV0enZBK1JYWDZmY0Nvdy9JM1RUM01JczdMTUxmV1dYREEyYmhWRDhHWkpZNU0yZnUwTEVwNUQxS3J2UG5OSlhWNHNxVmU5YWtFWi8vREp5aUZDaFFyc1F3Z1BHVTRaNUlVdVlqUTRJVnVsbDczZ2J3S2F4MGpLRmNHN2N0Tm5jUmxSQ0R6UkRJS0dRczhNNzB0M3RsNDFjRHFOTjduKzVBUVNobnBQNnRjYndzeXk1VUN1NW1tcTlqbzdqMDdCQ0FvenlqemkzTDhFZFR1UWowY2pxQzcvS3FyQUpzUVpKQ2pjUVM3M294VlBDSkdSOWticFB4Q1hxTXVJTWlYMUZVTGZtL3Z4cU1HeTBzeWNKSm9QYlM1TVZFL1ZLU1lqbHRnR1h0RWFjbjVidEp1blpwekdPK3E3RDNENWxXS0hDUURXYVE3TXJRYmY5d3AzM0hpN3duRVhIMkxmSnZtZklyenYrelNXTllHNVZnNTQxa1V1VUtmMXc2OEVYbGNKb3NmbFRZRlJmV0hWZk1ENmpyaGJrdE12SHdLZUJiVGJpZmpBaSt6b2V6alF6eDBBd3d4eS96bVpWSU44dEU3em53d2M5UGp0NnR6Z0NJbnpxNEZwOE5LNkxCYlV6cWVvUWVMVmxLZ2ZFSWdxd3phMFVqS1BkbDdKYkFETzcxUW0ybFhlMUdncVlYbjkvWmJxZTU4RDJKL3VvT3F4Um40YzJlQXBtMzhlNE8ySU12anlScXdZRTJQUzZpMW9jVXB4TVJlK1BvSjBDQVFFd2s1emwyS1cvYlRPS3N6OGNKMXZDZEI2enFieGZNdHJDU1RFNXBzTTM5UXlvaDZlVXlKbTc3cVhDc0NDaVpZVS80WmhYdENaNVVQS2NTS25QNFd5N1YxUkhaMjIwREFaL3lOQ2ZFWmVyZUc3RU1NOCtsNUdWRUJFWUNrS2VvMWltM091Z09YS2dWN0txbjlFZHNIOUs2SStQZldjbWJCSmFGYy9wdCtkRVFDb01rQmY4OFgvc2FXamc5Wk95dzhGVm5YRjd3Z0tCZGJnR1pCSkRSbGFLbktuZW9LTkZkT1RFcVdvZE16YVBDbGRiTFptbEVIVUI3dDF0WGM0bSs0d05PNEkyT01sbkVNL0NxQUVDcmNxc3ROWGJPTnFvYWxudG9HNjRlSVFORG55S1MvVVI3MkQ3R3crTVB6NFFoWWN2R1Q0WU5hZDVudHNXNVFUanZhWmNmb04ya0QxZWFLYlU0Ni9hYzNNYmdhWFpJY21hMTd3NW80SGRncVY0ak1namZsWXRQUzBzNHVVeTFWQjBFOCt5VnNzbGsxcWRMY0lQVGhnS1FwNmpXS2JjNjZBNWNxQlhzcXJIbklxeVcyV1dKVkwrTXBJTXdwZGRMcGR5My9qTnBESVlueGRSYzFWUU9tRmI0MzFkS280R3p2U2drWm9HQ3Fkc05vc1hyeDM5U2V4K3FmczR3SHFvcmJLWEpLWHo3dVk3Rm9sdEJlVjM0aEkvb3k4ZGtXSW1tS3g5NmNoRXdKcDZFL1dJL1o3cVFzZ3pGREVjbGFMSkRnN1QvWmJjZmJUZWdrZytndHl0WHhtNVJqMll4bWErMVV3YXVzVkNabTB5Y0NtN0h2NVhMV00xME5vamk0WW4yUWxpaTg0Wm1XWXhuSHpGZGVReUhxNmU0TzcxeENDcDA1REJVbHd0ZlhjUzdFMGxWa3ozQ3VDZUZ1SkYrV0VBeGpQVWNrRWJtc0hOR3dUcHJSMTlZZXRocHNuRWZFMklGc1hnZjE1S2c3MkUxai9TRFB3V0Z2bm1CTVlHR0xnYlRualhqbEJCUkR2ZWpWOVROb0NyVEV2KzhqUGNHRWVsa0N5RWwwTWphb3QweGVjZTA2ZUhNY2xiV25GN0h2Zyt6RzBwKzVFYUI1ZW5BcXBMbmppMEtCL0lzNFQ5aVJKUHYxNmpySlN6VG1ZR1F1a3BjWlIyWXJ4bVRwbit6aGVTNjFVanpqS2xySzU3M1pZZjFZaHpZTitIdkRJeGQyWjY3NUxYbGVkdzd0UmhNRGZ4Ymt6WWluNVlsM3gvUlNJTVNkSXNJdGVpaDhRM1hSZEJsb0wxUEE0blhVTjFwcVZjMytCOElVWE9pWkRmWXlZUlg1bU1UN3AweFU4cWpKczhzTkpLczZGV2JrdmRDSCs0aURLSWlOVzFaMUUvbFg0emNucjgvVFV1TXVDTlRnK09WR3M5eS9scVRYWHJ6bFN6THFCUGZyQmtRWmd2anVyYVVHU1JNRGV3RDZPeXVSdjNwOEFEWStnMElLUU4reXJUMllCMWEwMC9DVFQxbThmOWpkaHBWSTF0M1Bzd3lIK0xMMmNCTTRZRXdRZHlyQnZTM21qeVJpUk8vTkFabHNqQ01IRUx4K3hHTTNsbkRHMXFQaVRoWHc5VXlkdTZTWUlZSmwxSWdWS1lqNGp0NlgwVkR0MSt1cyt6OWxSRXNxNExsd1lJajVJeHNCZnlIM0lEYTV5TFA2UkRxbUxoTjZ5dzRuRExNVHpvNmlRUVg1NWRONVBlWmxDRHpOOExHOFFrTVg4eTFUMGpIc09zZk1uVnhIVkdxZEZmYUY2U2VSeHlveVoxTE5ERDhsMUl5bkxMQlNRZkJibXlKWmxHcDhMOU1YYXZJZVdscVZpNHNCK1VDNDRCUUdtdkpTckdyN29weUdZa2dTUUdsOEJIUUw2WWdFZVh2ZGx1T25kanlQMTU1eno3aDFNMGlMNFhRMHAzZjc2OGFmbko1NnRLUlBhWUhkRk5oNkdjcmt6c0U2MURXWXh5TGxMVGgralYraXNqSkszTjAyVXI0c1ZKaXVWNnFwMVRKUkFHcG0xQUV4bUUzUXdqcWlBN3ZLUGtZeWxuVVlpemozVzFyNExkckVmNGgvRGI4aDJPcnN5allJekdsWDFNb21uRWxVdTFHMDlrWUtqTlVmOEJxc05ITlJ3ZU1HR3VNbmRaeGpTUjA1TUtpTEtTTUhWenZtL2s4T2p1QWtuZ0hONlZESTJYUGJaTkhPaWNheXhNTDN5WjhoVDFNdXljdGZ1M0tJQ0JmZ3pFbnFoRDBVN2RjdmdqUnpRQzVsQ2ZuMldDYjZTdnVreWZMbDE0Si9teWhSQ3VWT3c3VHJNelpoeWFxYkUvSTVpQmNlRGhKTGtGV2Y1b2FRUi95V0V3TEczcG5pVFBHZmlJbnBaVlZEY0FIRmpHRlozVjdvNVFrc3B1c2ZvOU9ISDhzS0xEN1g1d1Q1WTFHVVMwTUJVRjBYREpTb2g2Y3NsV3hFZnRXeVN3bXFVRE50dVVMMktNSkQ4YWk4RndRQVhJY0Z4aWZ6b05OY0ZCZnRPaFY2RFBXeElyc2lZWGhxQllYTVpxQjhJQkJ1YkFhVU1RQjg2TEtxMm90RDNpeVBmV0t3UVFkYWFLRkE4Rzdta01zTjhRRU5oUFZPZnJqZHZuYjc2aDI0eFlPYXBhakEvZ0JPY3B4RDFHMG1CN1JuSXdOM3J2NVd0T1BxamppRzRQZGlKRHBMODY5anRJSTNzSnRDUENXQWJUMXZHbml6dmNkQVVmaEF5elpZM0lCOWdlNnh5VmcvUmt2WTZRbnh2MFp3eFVkbUgrSHZnVTJXVlFUUWwybnMwTDUrK1B0cjVpcGVnWkhoMHRFODJuSVBpQUt6SEZLd3ZqaUcrczBrY0pQMFFyK1VNeFBMVVZmN0l6OXJZamFNOGpZeUQvK3pCSklJa2tuT3BIeFBaRGdQU1QwYnN5RytqSkFTQjZrY3ZKY0pod3ZRdWx2NTJyeXBST2o4S0Z4aFBrSGtKYXNKZ1B2ZDZmVFRGT2lnMEo2bVlpaFFKUHZCVzlzWTVoYjFNbkYxQTR5UjNWdjBWaGx0RThUMnlNMHY4bWNObXE1MzgwWHBMK1ZTSWFPQ2JJeHF5SGM3TFhwT015b081ZFZCYjh0N1NKY1IybWRhTkpNekgwNjV4TDhYeHBwZ0R6L1g0K1VzOW0yaFZqeW94VGgvclFIa0lkNEJSQVZJajYyb1R0YkREUFlWUVBpOTAzblBYWm54NGRHZWk4SlZ0Q2ZmQ25IYWxOQndpOThJTkJrRmRQUUZybWtsTjljenhGcGppeWM1UFh0Kzl3cDRlQ3FpT2w1ekdVOFZTYTdBNWtONHd3ejQ4L0VISGJsSXJrV3IzQXI3U2dsU2s5T1dndkQ3TEROblo3WDRKQ1NhNTZISzZKd25EYmZ3MmtscjZzUDZhZXY3WlpHZ1pnbGpoT3BoVUdyWWF4cW04U0tKNUdsbURBSEpMQWVlaFppbUFmVmIvNEZBYTFDTHhsQjlLZ1UzczFTbFFwcEU5YlU4UmNQbUNKbTU5SkRxUFVJVkcrN0xDbXdwT1g1U0YwUzhoalNrRFNxSTlrdGJWOHZkZ2V5QTRybWhuRVc4MDM3Ri9WSDNZb3FUODJMUStzWjhwN2MzUG53R1ZlWElCZEhnaU92dWpCY0EyR3RudzhDVTZrRUhzZkxXN1hiU2Y4M2xreWRkV0xqZDlLSkc2UkxmenllcjRKUzVLd3BaSFNCQzRtWlpseEwwalZNTUlabUUvNlgxZksxaUdPTCtzTFJxb0RvTC9jT3d6UWZzVjVsQ2JKeFNBREIvdTZkbVJWVDBBTVhmV1k1bi9na3YzRGhRdEdRVUdCbWZudzZWVDZvU2VVLytWUm0yTVVOandxQnJEckJwYzc4L0dJUlZUYmJtUnlpS2hNU2tPS3VKVUtnQk4xcXc0aXhPUmh3dlBCSFBQVTVHcmRjUVRNVUlJK0JWMFNUUUR6NkQrQUR6UVlxeHFSS1pDdGxOSXlhd3VudllRM0xjamF5UGdJdTV3T2hwQ3pUdWxlQ2VqaHA3bzR1akF1UFRsZ0xSK0MrR2RzdldvVWl0RHJlNThuV3BCalJ2UjZsa3ZScWpSeHl2RWF4bGtQTFg1MEhFZkRzc2tqd3k4cjlBSUhCOUlHczU1VG0reTliaE11QXZWeXczZStSaTRWMVNCTEwyMFF2QTVQMWpFNVZjcXZibHo1YmhwbkY1OTlTTEUxNVJvbzdzTndXajlTdDc2SWFPd09ZSE9YdnlBVUdDT0RTanF5bHVwVHpzSXdoWmo3NS9NNTNzS1lYMnpSZ09TVDRPRHNsNGJ3dXVNRHB4T2xzbUZCRk9Jd05GbUcwS1gvbU8yNldNKzBnNTdNSjRjZG1STmRDaUorbXU4Z2ZZOTBqZmxSR1cvbGc2VktZYWY0S3pCaGVteFZjOWZxNi81Q2IxaWQ1aDF5V21CYlZYYnFpS1VWakpjVm42L3NRY1R3Q0F3azkveW52OU1icnQwZHNGVlVYOW9FRS9jb0FGNzlPSTVtTk5oVnd3bXVTbVVyeEJxZ1krQmZjTWloQVpGdk9VRy9qNGluajlzTndYYndVWFNGS3pSQi9kS3Jid1plRGE5eXZxVkJ1KzlwYlppSXg0VUE2Z1RwWVFYRHd5cXJUQUNwT3ZPZnFoSGNOa28wTnJhUGVkMWNGSHhnbEpTSTdQbHluaDJFRWEvTEs4dEkxbFp6K3dpZis5WklBZFQyTTlpcjgzdjlVUG5oN0MvYWM3cjZ5dVd5dUpmMnBFMjRldVJ2a3dmN2U1bUdkb1djL2FXZ0FQZXVja1FrVStoVXltRVY0dGdoRG8rYWduL05hcWY0TGFWMFRWRXUyakFCWGxuQUZrd2x2SDdMSzh0STFsWnord2lmKzlaSUFkVDJhZDZaV0dNQU00YTVpQW9DajZYd3Vzc3J5MGpXVm5QN0NKLzcxa2dCMVBiM2luanBTeitENks1WWNEYXgwZTRRQlk0eDhTT0VPalNSQ1pQdFRyekg1WFNGZVJrMHlWcUgwM0szUmNSY3NIUTcyTlR4QVMxbjFFMVJETjZHakZYRWE2eHZlb1ZCZXNMUG9HSG04QmtHaGNzcnkwaldWblA3Q0ovNzFrZ0IxUFl1RjNER2R2bitKVU90L1Jyb0Ewc1FMNUpQYm1jVThSaTNBT0VtQ1QvME9jWU1mMXM5aFd3U1FmTjh3YmhobFl2T2xETDdEdnp6c09RbksrL2JDYzRudzR4SVljQ3BRY1k0OE95RE1yU0NOOHNyeTBqV1ZuUDdDSi83MWtnQjFQWWNUYUZkNlpYUXVVUmViaWdYZkE2RktMWVFYRktlQTNSdDFkU1JqOGlUVG5Nd0p2NVE5YmpSalpyQnpQdHhxTWVPaFhlZTArL3dYYjg3QjRySFUvUGZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlodmFlNEVEUGtIc2VvWE5NNzV4Tm5ManA4SGtsOWRkWEkrOFhFVGQzZ2dEMC8zYXdvRDFJcjc4MGV5cC9YY0k2eWRIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZN1Noa3BwSFFMdGtmMXZXK3JIZmF2TGtaT25tbzlVOGZZNVhLdkdOaGFHK0szZWltbndRMUhteCtPd01QSVhnYllFMXpEcE8vOFJOOGVEUjd1SmdMUlJuSjV2VFgwZHdwaGZPeVYyMlFwNWtyYnd3UTVPN2E3WHllTEZMcVhPRzRQUXlHdVFLTGh5VFd0WGl0dG9neG1VVDkraW5UQ1hRSW8vV3FUZm5wK3dLVkVVVkVWYzE1RlpQYXFMT1VnNDYvMzdEUUxvVlJhYlpvb0V2TXFiZm9xU2lxWjZzNnB1K2phR3dpVkE0bTlQeDFNUWNUdE9udTBoK0pXKzFvV1RVZUcxNlJldFBwM21KTXNrZ0ZRaTN0eU8ycDBxQ0ozOUpaSnJLRmVVZ0Vnek5GUDNlNFhJYmZYQzJPR1FzMEtyVDlDb1ZRZ0I2VTBBRGk2cnZMQmdnQzRja2lhOWUrS1E1bnlIOWVReHVJMXRHTzlxVjJMeW5QQi9XOGFPR04zbDhCRTZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDB6QnN4ejRkNXhRSGU5Mk83WTFzaTBHbFBoWFJQVnBHQ3VGNFBXSFhoSS9MZnB0eWlMbzdQdC9JdkRiZlg2djhEZjFGODFwb1BrcnFiZ1h5ZWJzZVd0T0FYSC9aNWt6NTBJbDVGSTJmRGNPQ3ByWG5IUzBRZmExemlZdTkxVm55NG5ReEJtWm95a0lzNUdHV01nK2g2OFRwLzU1Y1Q2Z0VzaHM2NUNPcWV2K0ZIT1hCcThkMkdocUh6S0c3MXRiSFRLUnJWNVU2QmNHNmNMUFBCRWpjdElYSDB4M3NoUFM5Y282RDhQTXpRcDJTLy9yZ1ZHZzROWHcyVURSRVZRTXlKcWhKNjRyRGpqVE92WnNGVC9JaHFXcHRhZ2UwUmFSaCs1Yzd4ZllBUG16ZjlsZHhjQWdyZ0tyWFp6MVM0dDNLWUlDZXhBZjFreW1iYzdqWWhaTW1KcnBvRE4zT0greC9RMWdLZ1NiVWl0elpQazl3bE83Z1JTMk5SLzU3N25JeEszdzkrRVdXRDdJTlkzMG1OamRBMkkrSGcxSzJmNGtJWkJGR2NYYUV4UTZ5eXZMU05aV2Mvc0luL3ZXU0FIVTltcVB0UlEycHcycXR0ZWRFT2dHamF3a1ZuMkwxL2JQOHovNzI5T09PWmNaZWVJa2hiVHlNM3BpUmhUdEhQOXI3MXNhbEs0RktCMXdLeUlSSmlvejBIVHRFVlhpTTBXWUhkK2dqOUpDSHRMdHl5dkxTTlpXYy9zSW4vdldTQUhVOWxRMjdpdm5zU1FuMlJKMGF5akpkZG5PbERMN0R2enpzT1FuSysvYkNjNG55eXZMU05aV2Mvc0luL3ZXU0FIVTlvaTlOTVNub2VEUjI2eXlRMVQxRW5MeVI4L0JDWW43cldrQlFVdmkyUGpUVDdyZjdRNmpqMTR0ZGNydU0xZDk1OHNyeTBqV1ZuUDdDSi83MWtnQjFQYmlPMG16L0xiVFQwQWVuL0RBSXlISnl5dkxTTlpXYy9zSW4vdldTQUhVOXVzTGRkcW9obXdaR2prc3FZRjZ5M3Z6TmorempFcmdZSFpKaEl4SzM1ZjN5eXZMU05aV2Mvc0luL3ZXU0FIVTlwc0hqM3VOUjB5T2pJU1pRRlhmaGRYemJjblNwL2IrbzFjMmhDLy9KY28rTE4rQUM1bTNObi9pNjREMWlValRLVWdQcG9tNUU2WHNxWUVoL1FGWUtWdlRhb1ZkRmtOVzY2VEJnb3dUU1NuaXpwUXkrdzc4ODdEa0p5dnYyd25PSndhaHdqdStoVVM2bXJLRzNOdG1zZmd3SWQxSzZwRDBSbGgzRVQrdXMreFlBd1FPUml5SkdFcWlHaXNqZjlNZVNreDZPME81NHRNOUNoUi9WMXVqZGVQTEs4dEkxbFp6K3dpZis5WklBZFQyMEUyakZVdERkRHBGTHk0ejlWSXJZOHNyeTBqV1ZuUDdDSi83MWtnQjFQWk1oeTdjVmZjNlozR0xjVmdkL0JLZC9jQnFxTFo5WlNrOTcxRkQ2ckI3Z2dSVUtkbTg2Zi9PNkJHdmQ1NGsrd2tJWmZKQWtERUVIVVd1dHBFalJRWk95eXZMU05aV2Mvc0luL3ZXU0FIVTlqcWxtMVBaNFVJM1RGYSsydjR2RHYvWEpGYlY3MkJRbGp3VUs5NkdWM2FReXl2TFNOWldjL3NJbi92V1NBSFU5b0hyejlEeHViRitvRUdjL1E4V1FGTE9sREw3RHZ6enNPUW5LKy9iQ2M0bkEzV2N4eC9IQlhma0R6cDB3TUZDN3ZIcy9iNEJVeEFUTUFuQTcrNG5HU0FoU0xoMzVrcCt1SkMvMlF4MWVrazkxeFAycHcyeVVGb3hFbzBhbCt0Qll6cWxtMVBaNFVJM1RGYSsydjR2RHY4RVFzR2tsamtyU0RDQTVOWlRvYWM5RjF3ZllpYTgzTUN5VmNlUlNGQUlxdEV3K1pES1NSc1RzcFYwQjdJeTNFRWUxSVo1SFJ0QmxLQjd4N012ZlJzWlhsMFlkaG5kWW9ZS1NicTFkd2NyVlNCdTV3MmkvQUgralp4bVRub2ZFVFVLZWQ0RUJwb3BlenNLdDUrbldiMkc5dSsrR0hjNWQvWjZqYWcwMEkrbUI2V1gxWVlmZ0ZNejljV0diTVpwT2taZENJUDd4NjVYcVhLemdteUV4dUlIZ2FqMG5CV0hHUkJoOXcvaHlZSVEzT1cwV0MyWUxFT2tFVzJPN3dxY1RrUlNZK1FlcG5HTzJqWkpLblpKZ2tIQndnUEdVNFo1SVV1WWpRNElWdWxsNyt1VmdLeUhSTzFyQ1o2TkpoMTNwdFNVRm5CSkJxbTRjK0ttZ2JNc3cxMVlLUGtLbkNxbkJ2VlRsWjhJUzdQeE8xdjdkdzRSZnRkOXNYUzJhOGdEbnF3VnMvTDNYdjNUOGU2K2JhTCtmbEdjM2ZNc1BPNld6dWhubk9tWk93dVlNaFA5bkhyRnhRN0hnMnhGRWY3Z21ia0l0ZVFYSmhsUTZoUjBRTVRzT3d3WW5aUldoRzNvZjBmVFhWK1NIMzhYSUk5TnNuelJvZS9NcW9wQzU2NXI4YzJzL2Z0Q05jY1QrQStBQWE3TDA5eTI1VEQ1cEJQUTd3dk54eDB1WDZDQkpIZzhkbkRLVzhYbFN3QlgyUUE2bllzc29jdFpBd040aGRlRjNGNXdybXBSMWZCMW0xK3dtcDlFbG1aZzREMVNxeTNnbTNyY3FUV2ZOY29Uc3lRUG1WVGNkT1AwemZwcG9xMkc1Uk1DczRnVHlqYm9WRHN5QzAyakZhSi9EN3hmS2puR1FHZGNrYjZxMkxaYUF1NTBWNkVrUjd6SWdrTjlIZzZwOWZKR2dQTHNDbFJNMWhseDJ6YURITFNDcGplZTgrTy9nOU1vYVdNSHN5eEpaNFBDdW1UZ1ZoV2VJUVp1ZnkxdTVWWHNrSTVGNDE0dG9NZ0RLNTRzRUtJT0NocXdWSTc5cFludll1ZloxSUdPVm9JbEZSUEpkZFRZSXZEKzJ3bUQ3VmlPbjVVcVhSeFRYUXRucEJ6SG92amdTR1FEckN4aXRrZFNqd0JERWw4ZVduMXdabkRMSzh0STFsWnord2lmKzlaSUFkVDJ1dWFjSndaamJPOFlESWoxcGxUSmd3VWsrMi9JSzVOY2lYWjUzYUVlVzc5NU5GdEd6UTFCTThUOTN0RlhaVmo5OTRwNDZVcy9nK2l1V0hBMnNkSHVFSVgvNHJxbkh5R2t6R0IvYXoxZWRCdUNPMU5ZbnJScEVUMldma1NwRUQrWHBiYjJwSEk4L3Qzc24yWUVBQVA2aExNOVdZWHpJcjNSbzF0K2ZtZVNMOWh4OFFzMWtHVkYyVW5jcWRRL0lpZXJnUEZQTnlzcjl0eHFjaXNsb2ZGOGpqenZjdVhJRXJncjFEL1B1Z0ZtaE9YblAzNWQ5UTBHSEt4TDZGYnZFanVoT0xNK3pwRjFWcm9GMit1SnNBR1VHTXNyeTBqV1ZuUDdDSi83MWtnQjFQWnNZbHcxbjl6bTJpSFhUenlJSEdMNHd2eEZTVmdaRFk5TUx1Y0dhdnQ0Y2RoR0VSdmZQRkx3TlJEVlphelEzWTRlV3ZRR1hISmJFWExEelBmN3QzeE9rTGh0Q3FnSVlnQVlHS2x5ZnJnaDNzWFh5NGRlV2NraW1ML1ZkbWxBT3M0TnFtY0N3SndWOEp4ZEVXZWFDWEJ0Q3F3QXV5aHp0T3dBMXhnOVlIdmRTK3RrZi9JMi90SU5URUh1L25oblhMSGZoN3d5TVhkbWV1K1MxNVhuY083VVlUQTM4VzVNMklwK1dKZDhmMFVpREN3eStVeG81L0J1NXJhUys4NGIxNmpFTWcvRU1WeG5tUUszbUs3QXpTcWVEeDhmdnNPWXEwRjZuaFpqOVA1L2dyY1NEd2I0MEswY3g5bHptQXpjc1N5YjdjYzN0MWVScktGQWZFTnpCV3pERHgyc1F5T1VzSS96WnFoUzF3clNKcUNOaFhpZjQ4QStJOTlzRDIzMzhsdjRvdS93UklLNWVUN2VvcXFHMEExYkJpUnNhRUc3OVdjMEYwT0NOU2pKSjBnZDhHU0pTOGdNOWNyRDFibHNtWDIwOWErSjNHUnRWT0kwRVY2eU9yOEhjZkVMTlpCbFJkbEozS25VUHlJbnE5Y2tWdFh2WUZDV1BCUXIzb1pYZHBBUURIS2t0VzNHTktqMkhTWERXT3Z1Y3c4NUVCTVpReE5Xa2pIWjg4TndEYzZVTXZzTy9QT3c1Q2NyNzlzSnppZXdId0V0dEk4bDBPamo4cUhCaGNzRzJSdmdaV1BrTXYxZTB0eXozWGxTc05oR0VSdmZQRkx3TlJEVlphelEzWTVHVmpqUjJRTmt4NTZWNkZTV2VOQmtyY2p0YUk1dmVMRmNUbVJ2czEzV0pHQjFWRUtnczhGbG5KdEtmNkhoVy9kYlZYYnFpS1VWakpjVm42L3NRY1R3U3dXUmRSd2oyejRZbnhURjJrTi9IY0FZTkxKZG9ZNVhBcW1MOFdacWVHdFJqRVZWRE1DLzdSVU1PTDRMMUtRUVh5NGFydWM4bkV0WTJUdHRFRmNDWUtNRXgvK0RQc25oa0NubCswRmFjVE1XOFRjcVBnVE5MZ2NUMGVuVW9aVG1zMUZDNEZTUTZ1U1VmR1hGRk9helhOUDkyc0tBOVNLKy9OSHNxZjEzQ09zN2cyYmM0TjJZeWx0OC84eWx6R05qdWR6aWlqN3FUdXRBZ0h5Yk05OEVNQ3FSLy9Nb3RndlpWU3FnZ3Uxc1V2OHdaK0Noc2drMnVTWEFVYmRxUThObXB5UEkzNHFVaktRZS81TkpqbHZpYUY2S2dKL29yNEVud2plM0hCWUJnd2k2Ky95VENURkt1Wkx3M1QwZU80VkxoejlkSitERE1lTUowY2xOeUZzanhBa3djd3l1L2ZwUDZHNzJhS2huQVZnSVhpTzZ1WVExZ1AvOWNtc3ZHUVFNTkI2QzlFaWdmbVFrVk5MaHRiNXRvNVQ0WDhjcVJ4TE5ReW5wUjN3UG11WHBGVmw1ZHkzVURibEQyODY0VEpsWFdZQlRTK0VRbDlxNFdhbThod1FLYWdFN0preUhNTkdtQ3JCRnVQLytRL2dBRW8vekpXc3RXa3hCeW40eU85K1RGSllVc3IrcFd3NWV1Tlp2L01iNHZtNGZjeFZ0bkVpZlViMUQ3ZklBMDlwdzFiREZJZ0FjQW1JZEQyb2FUaWE4QlUrMS9QbGo4a0tFamNIQzJZV2llOW5vckNCcFZnNFVleFpKeitmTVdGcmFZaDFLaHgwWm1xYm5xWjJjRmxFTGp5dzRIUkxlclh2L3NGbkRwOVZDT2hXbGRrY2drZE83Y0tFcVFGOWhWUzdzaG45SXk1aFRhR3hvVUs2cE5NS0RjV3pGaXl1bXpCSzV6TGJFbCt4ZUVHRlhKNC9KcWJlNlBxdGtlQUpqU1pHNC9nSUZUMzc4S3dnSjZMcSs5djdKdy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdCsvSlFPRitidWxLSzRYNnJGN2hPQWU2aEhtNExwcWk4VTN3aVlWZ2VseFBPOXk1Y2dTdUN2VVA4KzZBV2FFNVM4dmY1OEh5ZjlrT2VwVWFaZEhBRFBDQVFibXdHbERFQWZPaXlxdHFMUTllVFJiUnMwTlFUUEUvZDdSVjJWWS9ZK2h5T21NQ2owMVpWTEdNQzhueEF1M1lBaWptNkRBRGU2N2hSOVFPb25KdkdJTDZEeGRCY2JXR0prTTRqcndzWW9UTjRCTmRFMXpJbDJBQW94YnJRaFhGWHZMWVZtS3J0UnR0RFBZTzJlSEJRYkpZbHZzbW8vMTRCSXQ1elFON2tMNFd1eG5ZWmZrR0NpN0I1dFI5cVdlcTZZUEswclVQSmVuSmRZRHdvNGtXTDd2VnM0UU9vcGNuNzFyeFdibEoxVGpEMVRNUktJcUpkdkI0cmlmaUdWdnFKRzd5S2Fmei9iQWNwSjIrZzhYQ3hNY2xHbXQrcFF0dC9Md3pNQ1pOK1IwaWZ1RzdRRjExOUpndmhLRU85WTlKemxPOEUrZFA3bnhPdDRkUG5JNEhDQ2x5bjdoZXBMTWZ4OW55ZXRjVCtpbk9JN1VBemxkOEhJUytMVTA3b0w4dVUydzRiT0hqVkNpMStuaXhJYkMvZmZXOFlpMmpKRVprNDkwYnQxTFFzc3J5MGpXVm5QN0NKLzcxa2dCMVBia09wb3k1NmVVVk9tV3pmY3JNVUxGYjRVTmVycnR2QnlaVFczeXFxb2NJdlhqajNlQ3o1d2NiZ1lXZG5ydFNGeGdMc1hYbEdHLys0ZUVnWTF0TlQ2T0xHVWpPS3RZelUzQ3djaHhqVjhLNjZraEppZ2RGZG02U1NrQUxXckdGNDBKZi9iL09hQ3Y5NmxPVWMwcUhmcFdmaWNnZmNGQzlmUENrRDg2NUgrUG9zc3J5MGpXVm5QN0NKLzcxa2dCMVBhQ21wNWhZemVaTjFsRHhGRVZocVFmUDR3Z05GWENDQ1VPcTMyVnFiSUwwckxTL3RvTnlIVzB3bmxtcU1JUVlUK3ZaLytERlNLb2lBYnFWUVFuUUp4T2lnZDdFQ2h3bW1XZGMxNHlyd3U5WTVrMHMrZktmRTR4OGtBK1cxUG1YdW45SVJNZUNEc3JIMnhDemdhVTVrUkJFeHpoaVhDOWlCYmRiZVBBZE40TC8zZnlMdFdIVVh5dnRRVUllQjNISmxKWEtINlVMOG13Q0pGWnFnUlVKR1Vma0NrTTVzSGVGNzhBNHE1QkN4VzJBZ1A0bUtIZlY2d1ZZSEh3RFp6MWtxQ0Fwbld2QkFXRG5pOUY5KzI4c2dYbjR4Q3R0YSs2MkNmK01yaXlOcFh2eWdaKzdBelI3S1UwOU45dm1YMUovSUhaOEJpcng1NUpLQTVyQWhLaFFEem5tWmhzNENDM0lQOUZmcVRIdHBhSlY4dEpLdnM2Y2lDcy90cFBZUHIyUnRLdk5VaDlZd1dDbG5hWG16QUNwOC96S1hjUElGVWRaOUU5Tk9sdm9TcmI5eTRyVk1YT3lBSTU0d0x3aHBJRGZtc1o0NFVVUm9IcXN6QXd5a2drdjRWWmtBVCtlTHFqbjlrdXNUdjNLbkdteHQwVUh4N2JEVHJQd1VMTWQ3RW8zSnVqZmpIdG04eTFCYW0rWjhpSWppY2lWSWhabmh2c05CQjIvQWN0V3VueGFSTGpkM1lIaU5Ia1V2alVnZVpKTW5nODczTGx5Qks0SzlRL3o3b0Jab1RsQ09JM0dLSHNwQlNNMjRrOEV2U21FbHpWaGt1dDBCTEltZDV0Wk54UU16YkxLOHRJMWxaeit3aWYrOVpJQWRUMnluMmVRdjZHSDdPK25RQ0VwT2tpOTRaL1lxSXkxREVhWnpYdmlKaDFIWW5MSzh0STFsWnord2lmKzlaSUFkVDJqbGNVZnBjSGNvNUxHVG9TYTlQQ3hjc3J5MGpXVm5QN0NKLzcxa2dCMVBhNWRFRm92V05UbFcrUTI1aUFMYThTdGR5NWI4cy9CdHQyMGtDK1NMZmZxUDE2aEFaWmUyM1p5OExmV0RnZzZ2WW1idVJKWVhYN0tkcFZjcXlHUngxRklOVkFOR2JHTUQxWVFscGNvL3IzQS9YamozZUN6NXdjYmdZV2RucnRTRnhHTzhGUDJnUE1zV1NzZmZmaCtjN2NpR1dCQU9oWnQ2Q2tLc1VwZzhqYWh0eHJiWHRSSzBFaWFrYjJGTVUvSGRrVTdINitOSm1IWklvbnpVTG00NzlaVlppT2g1ald1SzJKd0xaSTBXcmdOTkh5MUhiaWtNcEF2QTZGUHdPMnVyTDBKL240MmkxYnoyclFmM0Ywa0wrVzJFWVJHOTg4VXZBMUVOVmxyTkRkanVMVk1sckp2Y0VnamF5aFF2djlTSElGVDdYOCtXUHlRb1NOd2NMWmhhSjdIdG1PaWpjMkE2SThQblBTRTJjWis3bmhIMEk2cXZYTHo5RkM5WUdYVzM3QVlRcWhKZm1EQk5JaHhaLzVkUXBVVWhVTkhMcndsWmx6R1l6Q0JGRG9JY3NyeTBqV1ZuUDdDSi83MWtnQjFQWkxGdkcxYmVKWE5WWkwySzEwN0ZpWDdYN0V5eUczVWhCVFlxYVJLeGRFeDNieG9TcXl5SThtdGRjZ2FkaXpMY3dBWGZMSk4rMlJ0MWlXOUdzam0xUmFrMHVzV2VqelA2MmVWZWpkUHczdnRxQmhZdUlkK25KclBMMmJjazZOSXNnZmZHd21PSlZneDV6dnlFbTA4ekd0MkNzVWxRZFBjY3I3SGRWWnA0bEQrOHNyeTBqV1ZuUDdDSi83MWtnQjFQYWIzSjlaKzJuZS85WXNTOVppUUs3a1FQRjJRaUJ1VlBvaGhENFJaSkp1WVplQ1MveXdVbkxyaW1XTGJiSTRzb2Q3anFLOHlXUVZGdHFjemRTeEt6MjE4SUdIY0kvVUg3d2ZMbEtNNWNmMkxOdVFUSEhldmc1OUNyWnE0d3FWdmd4clVaRFJNN2todkpXVUJMM04xbC85RjBsT0RnUnJQc2pRZnpIZzU1M1BvbE95WFBJciszRzZ4aXJxOFhJeDNNbWRlT056dldXOXNaN3BxSU1VYmFIWlhsM2huOEI2a21Hdm1Ba3RCYzI3cDd0bDcwOXdMbmNRUVlERGxIU0J5S05YMXRVNVIwb1lGNnVmZGpLcUl0RGwrZTk0SloyUk9TWXBtZ2N4VmtEMWd0dHhQaGNrTmdIRnVKTzVtYkhoZ3FnTjFTTkZJNnduUEpmSU9qWStmZGNCQXR6Y0FmNjFtNWE2OHdqUEZQYmxDS1g5V2JUanpxT2VuOEk5OFlib1FOT1JoclE2dzNSQlZlQUIyeUxLNmxJZUpZY0VXV3JNVE5ZQ0xCMXBqeEJRYm9LVnJJMmhOd21Fc0luK2cxeVZMVmIvdlpTOHlETUxlQng1ak1oV29VWUdVZldqWUQ2YmFqOUJBWHVkb1VsWThRVkQrdWorNmJnUlZFN01LZCtXVzduNXlXalI3aHRtbWN5c1lnakxJVjlJZElCaW5ycnFSYis5eVVhSmJ4SEJBN2N2WUNHRTVHL0hwMHRTLzVxMjdWZk9jQWtSdGk2U0RWc0NjWUtoN1NHaE1TcG81WTNPZzlwYkFFUTNzZ05vRDkzemxSWW10ZDNlVUQ2ZFdKcU1wZFBGRitpOVZsemxGTVp6T1h5MklJaEFQbzE4anMzUVZNZnpNRUdXTFhyMW1ZS0xERFltQXdXMUdaaHIxRlFmV1AxRzQxaGNVNTh3NEFJZnJqOXNmM2lxY2M2b09SU2pMQWQrKzMvaXpQYUpnWEFFYlZoTUZuSEY2bmhWeG40ZHc0TExLOHRJMWxaeit3aWYrOVpJQWRUMlpRbmZKOGRBYm5wTUNtRmtUaFphemZ4V3c3bUtRbWVCcWkxZ1ozdnVzZjNGcnlkb2V2WmQva2JIVmVYRTNnQXRlZGM4cjVYZmptcUtjMjQ3a25uV2Njc3J5MGpXVm5QN0NKLzcxa2dCMVBZdUsxVFAxdGFrQUN0bXBzMndIVHlwbm5OaTBOTit2eHRpWEhIYTVrR3VEMUptNTBQa21KOUxERTFCMDhDNWxCbnlleDJrT29jMnBjd2RCQ3hMcmUyOXl5dkxTTlpXYy9zSW4vdldTQUhVOWhZQUx2UFdDTzlmYUNlRkNqSGdaMmFWZXpXdm9QaXdrZGlIcjd2SGVROUNZN3BMUGZITzM3Rm5HRC9xSDYxV3pwOTd3YWpGM1dFWEJWdlY5N1N4TVl4UVJDVGJPVU1ZS2NRQXpDNmIxWGhaenBReSt3Nzg4N0RrSnl2djJ3bk9KNXNNQ3FhQlFWWkVDL3JpUlRrTHgwd20yUGtoVTF4bmxaVTNHRGZNZSsxWFdORUo3NkRpQVJNakZkbTFSYll3WFQyVk9NZWRnMW5xUkRZcFp3MlQxcjZTTlJRbVNsZHIvOWNXMXJFeEMzd01Fb3h3WjR6YU10RnRQaDJKUjY4Z3l5U3N4U1FZUmZTeUJIUytpWXA2alErdWI4S0R6Nk1vR1NaanZFR25oY3RJTkZZTUsrZXpKQ0MwRkQ0NlJ0ZkREMk5Nc3BGdFdDcjZuMWc5bldnWnAyVFI1OFNVVUpZenBIVy9mTTEweU0zMDYvYkI2WWxpcFJDNmo0QnZuR3hoR3dQOUZnTGI2VDFKUVpMeEFkWHlMOGpycXFpanlkaUhFb0VQZ0h0V2JjR2RpTFM2NEVpV2tVcjZYem45S0FuLzlqMzloa0FOUzZGR2tFeThUR1ZPNWc1dE5CQlVMbDBDdTdXOFRmamQweHVHUmJXMVFyRFd6bVA5L1FrUjdwL2JGWGJ4b1NxeXlJOG10ZGNnYWRpekxjeStzK21SWEo2YVhWekE1S1ROb1FyTWtBYzNxZzhpemppaXRKMURjZ0piaGIvTG5XRERHR0VGSVk5RjJ6dUVEM0U3YWFOUjlSNG8zbk0zTVVzYnAvRHBzMnZ4MEU4Zk1qdXZ6cEVzU1pnbFcxZlhSQXdqVVZYUjRFOUlpZmRyeVB0R2lGdEJyU1EzakxJQjZ5M1prM24wZ0xaMDZoZ0RzL0tOUzJ0YTBMYU5jaER1dkhoU01NQTVUVzlHL3lBRjRURHBzQlN5ZzljNFRsRnVmN084SkY2c01xa0UvMkhvREE3Z0t1WnNkSFlrWjEyaTRZYytzaTV1dlpZQmVJT2orS1dYNHhZNUFDSE5BYWUrT01HbllGSmpPSUdXWjlXZ1BoU2p3QnpIVENtdGU5UjNGYVQ0TGlSS2R4TmZ5a1Yva2pXeVp6OVJJWnR5Z3hmd1JTa25qemhqdmxONWxnbUxxRjFYT0l4R2hiRHpkemNhWG9mUmUrd3cyQUdxZzN1ZFgrNnQzdWxpem1OeXVpa2t3WFc0eFhTZ29SZ0hYTE9DUmdNMUY4TzhYUzdCQWlhcDNpL0ZPYWZSY0U5eXBWanZTanA4YndpNGw1S3BpTnhzczlmYVlIV1QwMDZQbWNKNFg5THpaSTF5ZHM3VnRITjBOaWkxWEsvV2NKNUhLbEY3Ly8yMlN3ejlkeldSa1ZMZE9jTS9Kd0lHeXl2TFNOWldjL3NJbi92V1NBSFU5aFAxU2ttSTViWUJsN1JHbkorVzdTYkxLOHRJMWxaeit3aWYrOVpJQWRUMmw3L1MrbzdUSnl4T0dKdmovNGt4S1d0d3dqckI5Z3I0VjZQdHFwU3F2ZEZ6bVFmRlRVYmpCZ2lhZ1NiY0JlYnNGT3grdmpTWmgyU0tKODFDNXVPL1djNlVNdnNPL1BPdzVDY3I3OXNKemlkM1F3ZlhFOUs0enhKNnd3d2k1dEdSUVNDS3NmZDVicW9PS1hMR3FHaEVBc3NyeTBqV1ZuUDdDSi83MWtnQjFQWjBhc3liOGFiOU9xbmNiVTN3R3F0aUVwWGxTUlBnUW1pS0hlZlVURTR0QTd3dFF6cmVTdDNDOGtXNTFrREVWOWJMSzh0STFsWnord2lmKzlaSUFkVDJPNE5tM09EZG1NcGJmUC9NcGN4all4SmFkZ3MzN25hVTR0MDBobjg4T2NKK2JmUG1mcUNTdFBJNk1EbEhlUlFmaFNEY1hsUzAvbHFBMnludFRaOVIwZ0lRQVRQNWJnVmNEVGY3aDVkVWVHc0x6Mk16OEphMVAzSFovd2RsbVErSGR0dXJsR1Qwa21HOFVxZXdPZ3R2UUZHTVJWVU13TC90RlF3NHZndlVwQkRINEU2K2JKR04zSWhoa1RBRDNkR0pNT25BQW96L0dPSForczhEV0Q1N2ZkZjgyR3h3akRSU2ZlTmZqWnVVNDZPZXUybksranpkZmhkTGxoK0JZZitMOEM5NzIwdWZHYVAwOG8wekdhS3FQcUIvOExGOTBGRVl1bXRtMWxZcjJoZE5KSkFpOHhFMXRJVGVIM2x3b2o2bnl5dkxTTlpXYy9zSW4vdldTQUhVOXFXOXAzL2VUSStjZ2RlYVNkWThlZlptNjJVei9nbVBiSGJFTUwwUkFPQVp6cFF5K3c3ODg3RGtKeXZ2MnduT0o1cmZaaVQ3QVhGZXNPVm5xRlVCYlRTVUZNMmJnd0RTcERFZHoxQzdvcU1CV0JvR0lMN1BaS2x6RUgyQm5vWmZLcjVBZStDYnNwOEwwR08xK2FjMmJvdVAxVXBDejNsSzlHLzJnUndCS253OHl5dkxTTlpXYy9zSW4vdldTQUhVOWduRXp5dXFLMUpURjgzakxybWtGOWsvakNBMFZjSUlKUTZyZlpXcHNndlNzdEwrMmczSWRiVENlV2Fvd2hCaFA5QVFqeldub1JoZUVRcHcwQ2VsSEhWUnA1Vi92TnFMK0ZYczVwSVhGR2RMY0dhT0NqSzdDQm04cDNGVUQ3WE1leUozUUNQcWJMZGRhd09EOWtmTjQ4M3pnck9Yeld2YWpka0g2czZtdGRMc3BKcmpjVEFySm1SSDFwMGppZFk1T050eFBoY2tOZ0hGdUpPNW1iSGhncWdOMVNORkk2d25QSmZJT2pZK2ZkY0JoWGYrS2IrWmE5RWp1cnpkZXQ2cWI3aXNseGVhTlN6eWVGd3VDeGZnYzgrd0RQUFlvTlQ0UVlhRVkvY010d2RhZGswYTN0djhZR05DV3VQNjR0aW9odG5Ca21DblYvTzJ3RE5DM3dxNU5iWW9wMEhsc1VxcXZFbGtVTDA2YVFFakxpdFV4YzdJQWpuakF2Q0drZ04rYTJZWTdQT0hXOUw1Ny81VDk2SWRhMmlVa0J2ZThZMUNjcDdZajRVTGRKOVNqS3QxWS80b0p6MXdZZ0hTei9lbE9wckVzUTlFYXhDZHRGdnlPcXplNFpTVWI4a0dvZ1Rrc0xYK0NDeUQ0WFNMM0ROekRWbXVlNEpQY1BvVExyNUYrMmx0bUlqSGhRRHFCT2xoQmNQREtxdUpWS2ZaZm80cjNSRjhTcU9RTCtzaFI1a3c2VmlsZUh2TmVMSDBlUTFLNnNzcnkwaldWblA3Q0ovNzFrZ0IxUGJ5aWl1ZkZTR2Zrb2hEZ3RITEp3dHZsbjlyTytnSnQ5SENoMDR0dytxWlVjc3J5MGpXVm5QN0NKLzcxa2dCMVBaVkJpT1ZaS0FIc1FBeHF6YjdiTE1FeXl2TFNOWldjL3NJbi92V1NBSFU5bDhMRzVaVG5mUE9sKzVJT0VrRmRyK2VjMkxRMDM2L0cySmNjZHJtUWE0UFVtYm5RK1NZbjBzTVRVSFR3TG1VR2ZKN0hhUTZoemFsekIwRUxFdXQ3YjNMSzh0STFsWnord2lmKzlaSUFkVDJGZ0F1ODlZSTcxOW9KNFVLTWVCblpwVjdOYStnK0xDUjJJZXZ1OGQ1RDBJRWpXZlQ2Q2dUMFFRQngrUFlFRllYV09xQW5pTDZ2Q3Qvb1FmcFNNTXFpVFpCREkrcXJ1SC96SGFwd1pxYjg0dmVPRzRZZnFUbDhHcUJXMmx3SFlXeUw0Sll4QlEwd05jbUYyK0Zvd3NjY1FpTkFmRHZsSzU1ZElXY2JwUkNIODgyZjIzKzRqWnBneVk4RUZzN0h2VTB1M2FwYWNSZ0dNTnozQnlrcHhMczh5eWxqZHg5c1ZhVEx6eUZSYi9ZY0g5RlNWNnU1NkNZYWcxTWpJcEoxeWVoKzViY2dIUE9kd2xFM2Y4QlpBWU8wNnlzQ2Q1dDlZV1NJaFhqZzFXQ0I2ZGlBQURYdnFXaWw2RzRTOHdPMjhhZzAyMmNsK3kwZ1lUbEFPOHZhTVByeG9mdTBha25lOUc5OThnZnd1bUpFdDFhOUhXU3U4Y3IzV3BvVjVhbndMT3dBTEdqNWlQd2RGeE1SZXZBY3o5dU5WQmZybWI3VEdxYTJUVVBpcTRteTJnMCtIMkRrcER0dkl5dHB6aHY4UzNnWWJPUnZrMUV0eUpaK3M5VmVJVG9qZWNhZTVpNDRUZ2dUdSs5V3FjMk9uMk1qQlN0NCtCUnNYZUxzRGJNTFRMbDFoVGdJQ1oyWjBJTlcrK0dLKytzdFU0OWdEUUdlMS9zd0xhcFV5Rlp1QmRvSUhZaVpkbkpUcmI4ODRROG9iQlVQNGgzOFkyaFhzQ3Y3d3IxWU5SaDNGdVc4THgxdUIvQ3B5VWwwblJybWFHMTVwMDZSdGlzT2RpVlV6a2cyVW9rOFpTTTc5dnM3dDV5NFJPMTFOSUZRc21CSitRaHo1ajQ3UG1iKzZ2RHFMSjVMQ3NTT0R0SWF1ZWIyc3BpVnBlVTJJQ3Vpc21ZTTdHYmdkbk0yaTcrVFJJQk5BbWRiTDJjTFNna3hKbWlBU29ZUEVoWGNaSHp2S2ZySGcxL3YzeGZSUUJ0ZjRaSzgvV1lJUExXN2F6QUVEdlkxUEVCTFdmVVRWRU0zb2FNVmNSL0dMZjRhVG1ZNzlhbGxtNFBWNmc2eFJmb3ZWWmM1UlRHY3psOHRpQ0lRSDNqcEVrV28yc0pkOVdOODNvblE1bWVkS3BqVFJPUWNJbEhObTVWY0MrN3hhbVpnUkhhSzE2dm1aRXphbnVUREs5ZW1WUjhyQTFzam5uS0wrc1NKejFUTERmSWRpeHV4bG8xV0U3RkFqMGd0VE0wUzFsM1dQNGhibzVFTmp6ZE5qRlZjS20vMjdHYm5MQTJwZjZQQ2JETEs4dEkxbFp6K3dpZis5WklBZFQyd1dCZmswWXRyYlJZdzBRb3JpSnh0OFdwbVlFUjJpdGVyNW1STTJwN2t3eXZYcGxVZkt3TmJJNTV5aS9yRWljOVV5dzN5SFlzYnNaYU5WaE94UUk5SUNoZk5BQTFNcG1iemRja293ZnRxLzc5c2dSWjkxcVQvY3dLcFh4ak9BaFpjd0wyTnd3Mll3SjdGTWw4RFkzQWFOQ05yY3lCR3JhV3YvTFB3bE9EZ3VYdWRkNnVWOHc4YU1tTDBrNG5qTGI2VDJhSDN2Vnk1ZGN0RjBmWHRhQzNBd3pJQ0k4cllHcDVtYU5MNFp5VlVyT08zWWpTOG81WDRvYnNOclZEbERVWE42bzdZMDlFN1dBVXUzUDd5TU84R2ROeDBGNGJld0V2WjNuNDMyaENaNFN5dnY0TENQRm54SmdRVk9mYXBSYlE3dlQ5cVF4SGlNNWJtK1RjUkxNKzRXZ2lCUkVTQzJCRXJpNHgxNW9sanEzbFR5Q05sWXZCUzdTdVVQOXREdWNiazQ5OGxlQkQ5MWJPNmZxb1RhdCsrZjZJMmFoOWw4SUZiRGFFcy9NMS80blpHa0crRWVybXhva3FuOC96WFpVVVRXblB3N3JGeFlweldvWWlPVng1T0hEWVg0T3hRSlNIZUNCeEVXVkxoRjkvYnRGQUJwTHMxTk42Q0h0VnUwNWxQQzIvRWlHbWJTRWl2R1VBcVd5T054b2pNcHdnVE1QT1BkR2t2dE9YT3p0UHdNT1JYa3VBVk9qRFdoMU83VnJEeWFoSU9xa3ZoTUNaTWtBSjhEV0o2Z1REOEc1QlFlTmo1ZHJZdjVUeFg0cnJKcDZuNEtxcmE0UTJpbURRUFBGUFRuVHdxdEYrVHBsZ3BzL3Q3b0xrQ1VOQTV3SHRmcXdaZy9qaTdhcnByRXRNb0ZaL2pncE5zdVhBakgwY3A1ZG1sdm9rZm85VzFqZWVWYXNmbzEyem5NNlVNdnNPL1BPdzVDY3I3OXNKemllWGgyQklkaUNHRXVib0FuOXkyV3ZwbStuQW9zaEk5ajhrWGpzSmo5azl4dTRQTlZVdDlFdW1CWmJTTFpYT3pBME50RHRvcmRWaWR2QWhzSUpRYlBuTzI2VzVySnN1OE9LN2dGMlMrNGl6VjNPb0MzeFg4dEZJRktQWUhuaWhHNWdQRkVHUEJ4ZVVPVEhUUFU3aFNid3VsSjR0bFpQYjNaZ2I5eVhkamQ3TEhSM0VaQjBib3ZSNkJBQUhNeWtKWUd5aDJyakptK1V6c2tOU013VFYwWmNaWnlVbSswbUhzU3c1Z1JLNER3dStySUtaQURsODZVVncvMzIwNVlSUlBPV3BPYlRFeGhjbWc0MDIvT3VUZURKaTUxQXY5RFN5SnBlbkZMUjY2djJJTVFFUnhMbEhRMWNaS3lJT1B3emc5MU9YOVRZWllhUHJvTW5JemMwb25nVHV0aVhnUDFLaTNyU3ZFMHptUXRWR3l5MXUyaVFMemxrZ1Bsc3dIdHJIa3JVbVlONzJKZWV4eDZqWVhhdXZDMEI0c2o4YmdiS2wwUEZkYUNWOUw4eEVwcE5KSCtuNEgrRlB2ZmxmZTVJZG1vUlZpVlJXdGtrWGdScDhUeW94ckVoU2NjNm9PUlNqTEFkKyszL2l6UGFKZ1hBRWJWaE1GbkhGNm5oVnhuNGR3NExMSzh0STFsWnord2lmKzlaSUFkVDJrdDBzcGxza2RLRnc0Z3dpVXNIZHk0UER6aWNGNG5ueVpJNGcwUXNXeE90MWxJaDlyRWJ0b2xxVEdnVUozT3N0Z3lPdHNKcEY1aTlvZWpFOHhNVyt2VWxZOXlHUGJHSTdRd29UUWV5d2lseFBqZzZtNVVVVytMNVpmMWVmT0lLUCtEY1d2Uzl6RkMreER4M2ZvUkljYzBIdm9Nejkyam40TWtLdDc3MUd1azNkQVNmWk1HOXJ4RUNRbzFlZlFzZmg5bVMrM1ZhNjJzcUo5bDBBVUpuNCtFWnpsRWFHTUt1bGJxN2Z3enRKYUovT2xETDdEdnp6c09RbksrL2JDYzRuTnhrZmRaVERITUJwRjRlRTFGVW1Eb2lBYndYSlVrYjR0bkE1SjlXa3NQZWdZV0xpSGZweWF6eTltM0pPalNMSUgzeHNKamlWWU1lYzc4aEp0UE14clN1SElpWVg2L0VGc3hMZ0p5M3VjSGpMSzh0STFsWnord2lmKzlaSUFkVDJtZFh6MVV5c3N1a3JOWWFSMlBKUFFSekZ0TmdaK082emlLWDZNUEJhVUhJY0IvQjEzR2FpZFpyd2dQUzZZaHlqek1PREt5SXFIRmJmaHV0UzdpMXVXc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTEwQzNLT25HdWFFZWtQQ1lHVkh4a3RzQWd2RTNvYU9JM3ZRMzVaRzNDTjUrTnZEdmNGc2lvVFBBak81QURaSUJWVldJQ0k4S3NlZTVQMk5LR0tHeSt5eXZMU05aV2Mvc0luL3ZXU0FIVTlzTHYrSHY3dlBnWjRKZGJIOWJjenpVcjJ1algzNkpYd2FSUlZyRGJPeUZXdDcrYkJJVE9vemo3RjBYSE9mTWhjaks4WlV2anRZQWJRNFl1cUZOcWVlZ29IaUVjL2poNXB5aTV2L2xnajJ0T0JFTEJwSlk1SzBnd2dPVFdVNkduUGZWYk5obklnUEVkdXFvS3M0Y0xZQW5MSzh0STFsWnord2lmKzlaSUFkVDJhdThzWmRwbmxBekR2aklGemNENlgxMi9WZHBSMWEvd24vZEpKSjYxTlJINExjZndPaDhxUHhsSjNjRzZMVG1WUlR0UkxWMGV1Q2xWSTB0cmZrbGlWWVB5aFkrYmNDcmFEZ0xmM3EyUWl2UjJxM0RJelNiYzlxUjVmZG5oRTFmb3l5dkxTTlpXYy9zSW4vdldTQUhVOXZheFVnNnJkMEdiTGt1TmozU1Fjc29VMFVFTUxYOGtKV1AxS2QvU3ROZUN4YW1aZ1JIYUsxNnZtWkV6YW51VERLOWVtVlI4ckExc2pubktMK3NTSnoza1d3aXdIU1ZyWkZrWHFqVWdMRS9GZ2p2emtOLzdVdHNidkxjNmlCLzN0VHNzSk1aeUcrRytWRnlaV2twNE5ibVdwbUNsWDkyYWxTTHNtbFZMMVpORzNzd1hmYlVGdXpXRmduOW80eWxSU1RaNjIvNCtlZnIzbTV2T1RtT0oySURPbERMN0R2enpzT1FuSysvYkNjNG5WK1o0RFlJZmg4b2ZoOHkzSEEyZEtrUkp5djFJQ244dWFQVUZBUlNHUGo0SldTdVpOY3lzcktvd2IvQmJBdHBTUnB4b0tQVXR6UnkwS1YwSS90YkxZTXYxQUdoTy80M3ZVNkdaUWtETDdjdFZaYTEvWURsSGp2TnZ5ejkwWXg4YmNZSFM5YmJib2liYWd0cVEvUU1Sa09mVUlPaERoMEFTS05aWDR3azl4T1lOMjNhNmYyYytUdXRtT3lyczkvcUw1b0FuUHd5UkNLRXZibFN2bnk5cXIrc21ucWZncXF0cmhEYUtZTkE4OFUvZks5Z2p0Q2tISU0rR1VKQWFLOExleXl2TFNOWldjL3NJbi92V1NBSFU5c092MEJ3b3YyWllzd1JxKzRZbzhQbmFCdWdnZXMzTmo4L3dkaS9teXhZanl5dkxTTlpXYy9zSW4vdldTQUhVOXFWOGppR2p3aE9hZVdZc2VPcDVQUXg5UzBCaDFyRmtmdFdMd2txQmpwMWYxSkxqMnpHUXE5eVArRERpSXRNdnNTZ2VJUnorT0htbktMbS8rV0NQYTA0cXlCQVIveDZsekNnZndDa1ZjNWNWVisxMHFNTHcwdE1vTTdzazMwZ3hRcVgvanh4cGhrdmplOFBHall4a084bDI4YUVxc3NpUEpyWFhJR25Zc3kzTTBmZzREcW1hSDQxSVFFU0ZubnpDYmtBVlNlSkRHb0hidC9qZ1RRcEhLdC9DZk5GRklKUDhyT0ptNzBNc2tPOCt6cFF5K3c3ODg3RGtKeXZ2MnduT0o5T2FDVVB3RDdleE5talpiOU04MXV1cVkxeEhYa0xMbC9wdDZGdkJLOXduenBReSt3Nzg4N0RrSnl2djJ3bk9KN25oSDBJNnF2WEx6OUZDOVlHWFczNmczL0Q5akc3OTdvdkd6clh5bGRwcnl5dkxTTlpXYy9zSW4vdldTQUhVOXZCR3ZoODNuclNCQm1zWmphcVlGVlBlMVJpRGxWRmxJb2NaVmFINmVjL1h5eXZMU05aV2Mvc0luL3ZXU0FIVTloSDBWenkxWnpVVkUwNDVBZUgvcnBQTEs4dEkxbFp6K3dpZis5WklBZFQyQ3p3czY3VFNrSjhVSHl3R2t0U1RKTXN0ek9FcU40akRBNEdsUS9vTjZaeTNkTmtrRHFLNUNEVDI5TjFzYW1Ud2pVc3krTlJzd0lVR1g5ak5oekVnRXNzcnkwaldWblA3Q0ovNzFrZ0IxUFpmQ2txWlhOMXQ0MHVWNXVpUU9TaWF5eXZMU05aV2Mvc0luL3ZXU0FIVTlydTJla0puNTI2QXhuRWlOMWtJeW9RT0tzWDhIU2hnYUUvRk8wSmxSU1RocENDOW5BSjA5b1NTd0ZuQ0k5ZGlTaGo5cjY5RXBKblQ3UU43N3RtTHEvSExLOHRJMWxaeit3aWYrOVpJQWRUMlZGYXE5SGVtUnR2V2VsVmFDOXpoQWNzcnkwaldWblA3Q0ovNzFrZ0IxUFlLckFDN0tITzA3QURYR0QxZ2U5MUx5eXZMU05aV2Mvc0luL3ZXU0FIVTl0RXlvbThnRzNOU1hURWJFc2U0bGlJdTdOWktEc2lSSzM2bGJNcERYUjRhenBReSt3Nzg4N0RrSnl2djJ3bk9KMng4b0xzTGpJbFlCMU5yb2tJdmhvajE0NDkzZ3MrY0hHNEdGblo2N1VoY1Bqd0hUWXcvRTdBdjNld2V6OUtMWDJ6eExYUHByc2dWRSt2QXVybE9VVVRMSzh0STFsWnord2lmKzlaSUFkVDJvOU54YXppN3lZSTVvbEdFRTRLaVhVcVVrRmQzcXdrdkhJVlVJYVAwNzVUTEs4dEkxbFp6K3dpZis5WklBZFQyV2hSUWJyNElWckE3U29QM29ZdEhHQnRwaDJPa2kzcWE5VCtWZmc5REJiakMwRTBORUN6OVpub3ExOUIrdkRNT1lPcjFjSFp5bFJkV0hCdFR3dmp0dmNzcnkwaldWblA3Q0ovNzFrZ0IxUFlCN1dOYTkwRXk2ZFZIdzNaRVZJQTdCTVRNMDVnQkExVzM2ellwdmcwWG1jc3J5MGpXVm5QN0NKLzcxa2dCMVBiTEs4dEkxbFp6K3dpZis5WklBZFQycG05S21tMC9OdytxcC8ydHhwUjhoc1dwbVlFUjJpdGVyNW1STTJwN2t3eHRBamNrNFROZGpVUW53WERiTEZvSnl5dkxTTlpXYy9zSW4vdldTQUhVOXR4ZWpVRlFYOTZLTEJyL1V4TW5wenZMSzh0STFsWnord2lmKzlaSUFkVDJNdGE5OHRFb2lsdklZUFp0VThSbjJGVzF2eGEzREJqMDRTVHhDSlNxQjZiME0xejVhZVdsY0t6ZXlJU3FtVWhuTUFYZWdhNGNid3NYZklhTWZneVJ4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQYWx6Qkg5UzF1VHIvVzhvQ1JWdENiM3dIZWxEMWxvRWVzQ3lENTAxSDdSWXdBMytWYy8vZUhxaDc3NllOZUZod2tOcTlBZERKNG4vTFJEM1d0WUpYQVM1Um9vN3NOd1dqOVN0NzZJYU93T1lObUNHRFZZYTRISnJuTmtFMllZSUZ4TG9QMmMyTGM4Rm45dTFYSXFJTldXMC8zYXdvRDFJcjc4MGV5cC9YY0k2NlBjb2R2ZmNjOU1jeEhBRXVnWXdOL3RjSHZoLzJsQUNTaSszWFNnYVV0d3E0UmZuS1Zub3UzSEl2d01IdHdlc1NSdnJmMHQ2TGJZTDFWVFZ6T2RlY2trSVhTS2xkZHdIdENZMFdvekk5RE1kUUpTN2FWVVlwTXR0MnVBVlBuWFlDak5nQVFEZjNES2IwMjNQNytFbExmZlA0RVdiTHJJUm5TdnQyaHpTU3FUc1A3Sk10ZlRIT3FrajR4VGlibUNtTTZVTXZzTy9QT3c1Q2NyNzlzSnppZGRJU2g2UzdGdEZMcXltaUozSHZJU1Bac0pwRGM4Q2hvd2Y3aGxnSjc2RnVOME9KQ20ySXFzSkpuSFhKZDFmcnl5cVpZd09JNFBKYitOY0I3UjFIbFJsejk0N2F3NWJrNGc0WXlURm9SNEt2dXhHWmZTWnZGMXA0dnMzZkRGQmVpOURtYllkaW12ZzA5WTBsd2l3NnlQMjJmV2c5VmtVSUpoYTZqeWdwVjQ3Q2ZYMUJIRWgxcjVQSDZjcDhQZ1pHQkpBc0U4cFNhZ1p4MU9VNVJrMWd2d24zYkxkdG1jQkFacTUydllSOHZNR0x0MnFXbkVZQmpEYzl3Y3BLY1M3UFBrZEluN2h1MEJkZGZTWUw0U2hEdldQU2M1VHZCUG5UKzU4VHJlSFQ1eU9OVm01a3k3ZDV3TzM1NElDbWR0MU5jZ2k4aXZQVG5BamZQa2VmSkpIUU9sNHU2ZUgyUmZqRlU4UTZRNDFqTWhHT2tXU3Z4Yk9BK09kWVk1UHdqTHdKL2NGSmtnM00zSmo0Z2taTHFPaDBhdkM5TGF4MUUyb3hCSnE0Ky96amNZSzg2VU12c08vUE93NUNjcjc5c0p6aWZjUUdSUkRWdjJPSzhwVmZjUXdCZEliZFNVdVgzN253U3V3NXl2MlQrQXNHdXdRUlhRWE5Wbys5SXBvcDl4eS9PdjFRWGxndG5rWUZSbkZDK3piSVAxZ0lySTFoOXoxNk1rVUJsWHdEZTU0aE9sNjB5SFlWd2UzWkVpNWRpQ0J0b09PVitJTFFtZVhsSFhXYmlCOEtVeWhuYUZuUDJsb0FEM3JuSkVKRlBvVkh0RXRBajl2M1VneVV3ZE1ZWGhqaTROS3ZpNkxoQ3lNaEFTNHA1WmJBenpVK3NWY1BobnRybXNxOHpZWXM4QVFOakdiUThma0wybDVaZk5CTmRKT3JDUUg4dEM4Z2psM0J6am1nM0gvTUhCbEZiS1l6QSt6V0hQZzFvMUM5bTlyRVE5eGc3aDVoTXJiZXYyT0VJVFlLL0xLOHRJMWxaeit3aWYrOVpJQWRUMkJ6emtMQWs5N244bnM5WGVxaWJ4dnNCM3BROVphQkhyQXNnK2ROUiswV05VVnFyMGQ2WkcyOVo2VlZvTDNPRUJoWHlFNkVJT0FKdzZadkt1TzBYeUdZZ1FLRlEzNWtsNW5jdUVPTkdOWEFuRFVQZ2pDZ203S3VMZGVhVTFmdUtsRkozNDdPWFlPNWg0T2t2M0lwTkhVeWZMR1ErdzNhdU5ESCs2Q2dHZTdPU2VqeUFncGhOZnRYN2IrdWRDblcwd0gxTmlxY2drOEdldWFqdHlEeTN5bEpBVnQxSTJRbmMxYWx3Ym5vTnFNTWc0cWUrbzhtZjJ0MFQwZDRKbTFBTEJMSUtoTWpuRFZqblhPQTdKY00rWlY1ZnZlL3NvNFFSV3VibC9lblBNMGdvcTRBcXpWVXZhRkNwUXZqaG9UU2RvQUk1RG5wcVhCTDFBMnJvQjJJZTNFT1IwaWZ1RzdRRjExOUpndmhLRU85YVNOUlFtU2xkci85Y1cxckV4QzN3TXhsWjRCZG5mU1A0Q2h6ajc5aklCeVEyRk1nd1dzd01PeTBDSGdRYnJSWExtcXdmV2VtTXRsRlVLUkd4SG1EaUxScnhTTzNRK2NYclRMQ0ZQcDNEMEJYRTNkTitGRmdzZTFlYmx4eFYxVjI3blhWV0MrcW43Q05qajlKZXhycGpXU0Izd1pJbEx5QXoxeXNQVnVXeVpmWFhCREtuNk5WTmozczJ0Sk9BWHZ1dXNyQW5lYmZXRmtpSVY0NE5WZ2dlbkZURC94NW82ZW12bDRtSHBEWWVZd1JPN0VMU0VOcFU0WUhuMmFZVkwzZHNOS3ZpNkxoQ3lNaEFTNHA1WmJBenpndUJWU0FTNi9VaW82ZHhjaEIycGV2VDV0OFhIeUh0Z0dEVFFBeXpweUlxOHpmY3Z2Zlk1b2NEdVBYOHRYRk91R2dhUzNCdHkvdVhDQ2RxYjlBSGhDT3VMeCsxMnFUOE1DVmJXQWsrSEJDTTVBVUJsU29xQjllTGFVUldINXd6eDF1R01ob1djZkJDaFV1MExNSFUrTEhEa0NBL1dPTnFRdzdHMk5GRnoyZ01rck1Va0dFWDBzZ1Iwdm9tS2VvMFA1VEQ1cEJQUTd3dk54eDB1WDZDQkpIZzhkbkRLVzhYbFN3QlgyUUE2bll1bm5sRHE2VWdySjJHdVRsTUJQTXphNjJSLzhqYiswZzFNUWU3K2VHZGNzZCtIdkRJeGQyWjY3NUxYbGVkdzd0UmhNRGZ4Ymt6WWluNVlsM3gvUlNJTTh2NllMelZCdGhTMTNjTGZKckZPVXA5NUtsSFl1ZUF1cGxqUGtGdU5RSjdyUU0wSkcydU1RbUZaU3ZFcXZnQ29PbmlyV3dOQzdlMVdyNlVPV204ZlZwR0IySW5mVzZ3THU3R3REckg5WGVXdDI5dHdiL3pKbG9kbll6WlIvV1Q0VzFWMjZvaWxGWXlYRlordjdFSEU4THBNdWpOREVkZGorZWF4R00yZk14U25tM21yRGFJckpXSlNjZzJla21TMXl5dkxTTlpXYy9zSW4vdldTQUhVOXVGVXlJakhlcXJmTHlVMGxLUlpvR2JTRjdLMmtXZTNBR05mMDhoMEVzSGxJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN5YkI0OTdqVWRNam95RW1VQlYzNFhWdTNVcnpONnhudDFuUmMrVUl1cjRtVS9ITTN5OUljeXFSUjJhUGtvRVBXV1VWc3BqTUQ3TlljK0RXalVMMmIyc1RSdlYvTmdOOTBhR01WZVBjeERqY1I0NllYaHZkaElCQWw3WUxmb1UwbGZUYlp5WDdMU0JoT1VBN3k5b3crdkdFQXh5cExWdHhqU285aDBsdzFqcjdnUEZCZUJiOFBtK2dTZVB6VDlyQUlGcGJaaUl4NFVBNmdUcFlRWER3eXFyZE9kU3U2TUdSM0RyV09zSUVvMzhOVzM4QzFqQy84RUhVT3ZSVnQ1NTNRZk9sREw3RHZ6enNPUW5LKy9iQ2M0bjRjTEkyMmVJa0JYaW1kZEdYYmxYb0JieE55bytCTTB1QnhQUjZkU2hsT2FLdW55WDlsU3ZmNFJOZ1pnaUNzcFhNSVdZKytmek9kN0NtRjlzMFlEa2s2cjdlUVR4UW1MRWMzQURGYnlYa2w2dnZwdXViZzRQRlBvWDJFd0tEUENQLyt1SURQYU10UWNscjRRaGM2bzhObC9rM1k2bVpCbFQ3Qm1IeG4rdE8rakdGR0dXWjVPSDY5YjBWN0g3UG80MDBmTFVkdUtReWtDOERvVS9BN2E2c2lSOW9GQ2c1UkFRSTVISjRMUWhFR1NIVFByM25xYXBHRW9GMTJyaU95QWJjL0hWTTFDZVpvUGt3L2ZKOVZsd1NzRzVRNkF0SDJPVmREUVBUYStnOTFCVXJaMUo1dWo1TCtQZFl1YUgrT01zeVUzUFdXMXo0QURLSGQ5RkVhb0ZHSXVMZjN0aExNMk9xejh5ajcyeTJyak90ZUFKU1h0RTdQdHhUY0VBZjZySldKUDZIcTNlZm95MFQ5aWZrNDB0RHVMVk1sckp2Y0VnamF5aFF2djlTSElGVDdYOCtXUHlRb1NOd2NMWmhhSjc1b0lUb2NtbE9UcmhOZkg0ekNRVmk3bmhIMEk2cXZYTHo5RkM5WUdYVzM1ZjBlcGFQMjBzc1RiSXkyZERnVnlsVWhVTkhMcndsWmx6R1l6Q0JGRG9JY3NyeTBqV1ZuUDdDSi83MWtnQjFQWkxGdkcxYmVKWE5WWkwySzEwN0ZpWDdYN0V5eUczVWhCVFlxYVJLeGRFeDNieG9TcXl5SThtdGRjZ2FkaXpMY3dBWGZMSk4rMlJ0MWlXOUdzam0xUmFrMHVzV2VqelA2MmVWZWpkUHczdnRxQmhZdUlkK25KclBMMmJjazZOSXNnZmZHd21PSlZneDV6dnlFbTA4ekd0MkNzVWxRZFBjY3I3SGRWWnA0bEQrOHNyeTBqV1ZuUDdDSi83MWtnQjFQYWk4Yjk4MmREc2NSTXNuQmx4eWU5WlFQRjJRaUJ1VlBvaGhENFJaSkp1WVplQ1MveXdVbkxyaW1XTGJiSTRzb2Q3anFLOHlXUVZGdHFjemRTeEt6MjE4SUdIY0kvVUg3d2ZMbEtNNWNmMkxOdVFUSEhldmc1OUNyWnE0d3FWdmd5WXdpZ2M3bndLRzlCUmJld0ttZjFVbVNKak1kMERqK25zUmp2SEp1Zk8rc2JmQWtsZ0YxRy9jQ01pWFZEWTZUSkh4TXZHcCtZdjVFdFFWc1VucGFSc3BKcmpjVEFySm1SSDFwMGppZFk1T050eFBoY2tOZ0hGdUpPNW1iSGhncWdOMVNORkk2d25QSmZJT2pZK2ZkY0JiZjZxWExaQktWa2Noam9vM1poQjlyRHlNWEtSSlBNUEREem1iQVRZdm5xVkszdmY3TGVuTkJkSTF5QWp2NGV4QkY4TkhhNXlRVi9sYnE1cjFkcXJOc0tPOHR2V1VWaUtuZGJ1RGdVYWhKRXUyMDQyRDF4OUxnOTFJMHFpQ1F6RktyY1RaNFhtRTY5K3hqcGVoK29CdzQ5MUFwelBjcUFaY0RySlFoZ1lNVkp3UEVndEdxUUtDYkl4VkpVUWNTMEpsNi9YN0pGNWRvWklVVTdKMGlmMHI2QktZZGtuZGRZMlhqWHdqSllSbm5WM2hyd3BuYy92KzF0dGp3UnQ5c0xHRHo0QU1HWTFBMzFQcFRTaXIyUkYrSG1YZ1dHa2Y3eTFQKzVteXJQRzViWE9sREw3RHZ6enNPUW5LKy9iQ2M0bmpGb2NndlI0Vk1YWTBTazZTV2VYd2QxY0ZIeGdsSlNJN1BseW5oMkVFYS9MSzh0STFsWnord2lmKzlaSUFkVDJqZE1sK0p1R1UrREtQTkV1TFFkTzZJVFNQMUMxeGhheFZWcko2NnBKeGJITEs4dEkxbFp6K3dpZis5WklBZFQyRzlna0JXa1FGK3d5Mlp3RzlhQ2Yxc3NyeTBqV1ZuUDdDSi83MWtnQjFQWVJRZUE1VXZ5cWxQVVJ2Wm1qWkhuL2huYUZuUDJsb0FEM3JuSkVKRlBvVkVMbDNXRG9YZE1FY0lFRDdSNmFob25mU3pORlg0RTZjQTBqTWtmcjNsVlJuNXJSWVpxL0k0Tk16ZFBlZFNBbnczYnhvU3F5eUk4bXRkY2dhZGl6TGN6RnNlTXdoOUZxY3lhYzVyZVk2QTV4em5FMmcxZG1JUldoRFlaM3dmTkVYRzRIVFJjQ1R2OUVFWUdWWCtmMDAva3A4RGNoMmw5TDg2ZVpGSlZHZDBYVVQ3cmY3UTZqajE0dGRjcnVNMWQ5NS9pZkRoVC8rNG5qTis1cGtVeUhCcDlyQyt1VFZpclVyOHhKSUNESWtPbE85UTRFT2lRU0N6SVJDRmU2Y3BBdXlwayttN21hVHJ1STRtSCtNKzhOdVBIdlpiOHREQ0VqVnhucnNqalByeGhadExjY0ZpVEp3V1UwUjBqOUhwVkVtbjV0blQvaTZNakQ0eXM0WTQwZWJISkVweWdQamo2Tm1vQjIrQXNXdklGSm9NU2pnNm1rZ1doK1I2bmpuaGFBM3NzcnkwaldWblA3Q0ovNzFrZ0IxUGFsdmFkLzNreVBuSUhYbWtuV1BIbjJadXRsTS80SmoyeDJ4REM5RVFEZ0djNlVNdnNPL1BPdzVDY3I3OXNKemllYTMyWWsrd0Z4WHJEbFo2aFZBVzAwbEJUTm00TUEwcVF4SGM5UXU2S2pBVmdhQmlDK3oyU3BjeEI5Z1o2R1h5cStRSHZnbTdLZkM5Qmp0Zm1uTm02TGo5VktRczk1U3ZSdjlvRWNBU3A4UE1zcnkwaldWblA3Q0ovNzFrZ0IxUFlQKyt3MVFKeHRDOUdMdndJcVFHbWl5aFJ1SkV2bnFXODhia09ieDZvYXROYlNic0toTHdRYmdpYUtXdVBtaXBna1lwNG5zZTZoS1B0Nm9SNHVaS0NlbVFnK3o3QjBJbXViOHA0bnRsTEZPL2c0OWlxbmI4Tk1DSGhtWVBYR3pmeG1tTlJ5SUhnMmhmVzdzRE42L2k3THNwbTMyWGhRY3FCdVQzaEk1UXl0NzJISDBMMGg4UnZ3OWg5bTRBWDgyVjNmS3ZSVXhmUmwzTmMrcmpLWjdMdkowcWRqUDRMalEveEJEZ050UWZUMjA4bHdxSk1SeElHZ00xN1RTTXNGOURtRWdFMzJVNUE0ZVBYTXVUTVJrUVZ2NHhyaERKOGIzMFVlTG1FU0crTVc2eHJ5UWlyUkNtVzJpWi9wYlhHYkloL0d1VSt6S20wVk9LVmQ4Q0hBWktXZ3RXdm12aUFzSjVpT0Zmckl3aDRwQ1cvT1VXNUpyWGRmQ010MFZyTkVSV1p0NWNhRDNBNWoxL1VKUWRLc3NCb3c2S3M2TkxMT09sZkx1VFRWNjNNLzY3Zy9TbVhMUEtRLy9qVjFZaFMzV255UTU5S0pWM28xUUl3VHJRbXczeUpESjhmby96dkJsTTI3dGlXejFZQnJwT1VhMEJnZjVuWVhJaTNqZTQzOTZXRzRDK2tVcm80ZkVuYlNRR0pvWkJjYXd6SHJFRmV6L1lVQ1JWQXZJOGNXM1RiUWtLLzg3SWRsTnk4dHhla2ZWcmJhK1lRVzR4SHhpMjYrb2QzR3ZUbG1kUytXajJvYldyL2RDckJkTTQ2TjRvenFGbkRCZ0Q0djJVY3grNVhERzNmckpwNm40S3FyYTRRMmltRFFQUEZQMkc1eUE3Q1VUSFI5TEpnSWgwbkdUeWZUb1FtZ3RNVmg4bVpJN21DK29sUXBRaDlvUHBhSitFT1EzajJEMWtUaS9JREVGRStMUGdsWHBhL1dpTkNrdjErMGZZZjBvVE9XTjEzVVBJVG81K3ZMSzh0STFsWnord2lmKzlaSUFkVDJuUHg5dnBXVUZXMXV6ZUZRbVpMNUt5bmNvWHdKY0tmT1dtdWk3TFZnS2J2T2xETDdEdnp6c09RbksrL2JDYzRuNWZucmtJaENkd05ia3A5ZFJrczZkc3NyeTBqV1ZuUDdDSi83MWtnQjFQWjZDOEQ3ZXR1d1VFZit5M3pyQWxEb1VVeFRlcHNPbytheEhVTDVncit6UE43UVM4bFY2dGdIMWFWODQveFFIMkx3OHY5UEphaEo1QW9QSlg0dGp2N2F5eXZMU05aV2Mvc0luL3ZXU0FIVTlzMmowK0QvZ1pmT2hjMzJuS3kxUVdRUkdqalp5RmNKUS9RNmFKYnYwTHBFYWxqVHRYRjl0eW54ckdsMmY1bVBvR1ZKZytBbFY1Kyt1dzVnaWd2LzhYVWhDUE5tdFpSR2ZXbDliV2d0UnlXSHl5dkxTTlpXYy9zSW4vdldTQUhVOWdVR3lXSmI3SnFQOWVBU0xlYzBEZTR6WkRmdW85L3NQMXNiUlNSQlRWMlFhbjB1eExlQ2hBd1lJY2VHbE52U3dTSzc3RUhadEtJWlVGL3hTUVh6ckM2bHR2YWtjanorM2V5ZlpnUUFBL3FFODNQNEc2VHBjZElMQlk0VDhKOUxvVm5JT2VIdUt2OHdXblJLYnd0VHE5OEJhVDlFNjZ3V2pzRWxMTXVjRTZUTUpXa1NYZ2x1WHF3bERreGV5Wlk4dWJybUlOak14UGhId1Z5WUV4eVJPMm9sZy95V2lwSW5QZHZvMjAvN3U3dFdKaEprM2xRVk1Sc3ErTThmczlxRGQzeHFlZkZ6cnQ1NDBSM2U4UzNvenh0OGJ3aTRsNUtwaU54c3M5ZmFZSFdUYmJuZ21kNnkzcXpmZHIyRXlOeWN1dGNrVnRYdllGQ1dQQlFyM29aWGRwQTZwWnRUMmVGQ04weFd2dHIrTHc3L1Vub2N3bnJqU3Q5SWZMTGxuaU5aUCttNkdZbkpwMFdHSytTTHoyc3NvUm13dWJXQzNtRXZDVUI5N1QzNmpUTXZSWHFoT0pBNER4WmJoUC81cHJmUi90emQyRFdwSlJHNmZNNGZ5SFhqSTJUZmdHalBWaTVmajVtZWtHVkZMREpOY3ZvY0Rpamc1SDBFVmU1dWd5TFZIRkwrS0FYV0J0eXI5bnNXczNqbHZiSmd1L3JiUWZXM29TSSszTWlmaW44U1MrY1VtTUpqYVhpV0thZmdqWVlFOGtQcWVQeHM2STJTQUJHc2lEKzNQaW9IZ05WS1JveHhid0pNdk1rWmdCK0VyRnphNXpnN0FDdHJwZEpWYjdPZWM1VWZIV0ZpaFVmRnBLejZjTTAwYVJuQ0g3dzVySTl2MjVvRnZZV3kxb2tLYlFtQ1ZYaC9sS0NGdVcwKzEwNnAyLzV6RFMrNHNqK1U3U0dMekZUU2xKVHVGOXROandvOXJoUHRDK3lrQW1wMVh3QjJiMGJvQnA3R1lRR0hkVjZOdUJQNlZCa1YyMWhoRS9kdTVvUWYreXhJSEpGZjM2bTRPWlVtOXpqakRsSURIY2w1MGxoeURRNEMzdmJMNzFGYXB3elBKUitQUksvYXRiOSsrL2tKUzBxYUhsQ3AydWFkaUFNSExjb2VDRVoxTVZWd3FiL2JzWnVjc0RhbC9vOEpzTXhkWlZKU2RMUUYzbFBFMi93aHBLdFFaUnVFUm1PQ2YzdHI2ODNsWkdpWWhiTERTaFF0c3dxbThpamRNYTVKMmM2VU12c08vUE93NUNjcjc5c0p6aWNDcHQzY2ZnMUJLdHZsMTJWTnB3WlFFZXIyUzZ3TGxJeHEzYzhsVlRzdnl4M1lNdGRUdEVTR2lEbExFTGJISXJkTUtGMFB1U3ZQOEZ0UExkZEdFU3VRdjNBVHJLTjZTUmxZUVNQNmh0eUJNV3BxcTNhRWFZV1FPYmZScGNaV1dNR0JUbHFaY2RuclNNd2dleEtHSE9OaXBrYVBleEtwdlROOENQZlAzei9JRmpIYzFqNUY2eW11VDMxL0h3SFFrSEhGdGxpL3RBS3dKTVViOUZCRUFuUXdPdHo3Q214YlZMUTlkN1RrRGZ2RVNkQ21VeThUTGwzVXJ6eldRRGtWVHhPS09BeHlIV2RMRWtFeW44WDVUTUkzUWE2U0d0aTJ2bHBRSUU1WVdyYVdKQ2hFa1gzYVpnNEtheFZ4cXBWU2lHNkhKbmhud0M4YXM0eElaYjhuQTQrZVBaU2YwMUdmWFFST0h1T3dBMDdzenNZejFISkJHNXJCelJzRTZhMGRmV0dzbm1uRjJKZlNrSEFYc0tzMTR1OWlLQk5YdWwwYWdPZTJwSUlTY21zSEtGOEE4eFFxdlNmRXRUejlPNTM2dnJlL3BFU2JCcWtYRmMwMkZHUytkeTNzRHg5NTFDOUU0UW9OT0ZxTW1JenNVNTA1b3dxUkw3SGZUMHZMSTFwVHZMVExLOHRJMWxaeit3aWYrOVpJQWRUMmJzVkVFNjhEa1piNFgzVUphTWM5MHkxejgwdGV2RE5wVkRHNjBFczdoS1FoZmZRa1hmVW80ZjhYM3hkbUdQR0x3NHhJWWNDcFFjWTQ4T3lETXJTQ044c3J5MGpXVm5QN0NKLzcxa2dCMVBiTUowV2xlOTh1RDZGRW5OajFJZUtQWlhOUW1ZU0htQnc0YjdwLzU0SDVJcHNIajN1TlIweU9qSVNaUUZYZmhkVTVZbzgxcWk4aFhXRkcvc2tWaTFZVDkxanQ3N3FrRGM1cURIRTJzL3RVYkN2Z1BoaE9DdjBIWVpRdG4zYUsxSVNRUlRsR0QydC90RGQ3V3Uvdi90UWNxblVyOGhyMGZvNUdBY2EvMWRxOU9DZ1RWN3BkR29EbnRxU0NFbkpyQnlpcE9iVEV4aGNtZzQwMi9PdVRlREppNTFBdjlEU3lKcGVuRkxSNjZ2MklNWTNCY2lHdEtLL2lpY1RaWEEraTNYTHZ2bVNyOE0xaWk2YXZ2NnVOcTU4NE92SlZheU50QjB6b0V3eDBqQ1RyaGk5TVc2WWl3R28rUjlQR3FaUGhoOHhPZU5lT1VFRkVPOTZOWDFNMmdLdE03d1BrVjErbjNBcU1QeU4wMDl6Q0xPNTZsZFBYRWxmb0J3cTU4UTNMTnNScWRXZGlHOE4wNU5yZllpM3Z5Qnc4UHVzM0IzT0ZHeUJWOGJUcWoreVc2cGI1RkJEZVlvQ0lnLzJWVjZXL292dDJRSlNETHFYa05JbXRZbU41c1g4RXlBajVOMkZRbkVVUmtwRmd1Q2hvV280c3YxVHJmbm9ocHVhbDRoYmFGTEQydUNJNVRNTlh1VURLQWp0VWU4QXZyS3VRdW84bFMrQTZGVVFjVjNBaWZlS1NVS1JxMGhHdUhRSDVxVXQzSkJmckpwNm40S3FyYTRRMmltRFFQUEZQc1dvUW45am5hZWNFNTVMUUhJelNGSE4wTmlpMVhLL1djSjVIS2xGNy8vM2Jqa0VKUWVnTHppcFEweCtISzVoVnl5dkxTTlpXYy9zSW4vdldTQUhVOWxzVlZnT0thVzRJN1FBa2FTT3RkVk04NzNMbHlCSzRLOVEvejdvQlpvVGwxQWpaZ2EvM0NGUkNvSFMrOFFEQ3VHT0YrNC83VkJFZXJXdHBnY1dTblU2R2J6V29Sb0VKZ1FBbEhVcExKaTVpUXppMEgvMTBuMFFZUHhPTERrNHV4dVRRTkpNQVhVSVF2RTAyNUdQdjUrbVJHWWt6a3lLWGtwcVhSK1VwZWlkUm5tWGhmMFhVU0kyNFVjR2Z0V3dGN05EREgxRUc0cFlpTVhJMmR5TjQrNFU2cXl6ZFVjTnFGZDJiVkU2TlZSNW8vMGJMelNtMnFQNnlkd2htRmVFcnhlT0FpY2RmTXBhYnZrb2s0N0Rha2dZQlhqKzJ3VW5PcDd1SFA4UzZaaWtoeXl2TFNOWldjL3NJbi92V1NBSFU5ci9pZTBkL2FEeVRBWk85V0FpNEpKUEJNTnVpTm1SYXJaNC9xcklaR3lQeXFTRW1LQjBWMmJwSktRQXRhc1lYalFsLzl2ODVvSy8zcVU1UnpTb2QrbGIxaEdld3lkQXArT21IOFhDWnBBSFp5eXZMU05aV2Mvc0luL3ZXU0FIVTlxMzNmOWliT2VmKzJHdlNlYlo3bmJGSXZzMTVCZHBUTnpoVk5tcE9jQi9obEo0dGxaUGIzWmdiOXlYZGpkN0xIUTRSdmFQOUFnVDkzV3JNdUxFb1FIbk9sREw3RHZ6enNPUW5LKy9iQ2M0bjVmbnJrSWhDZHdOYmtwOWRSa3M2ZHNzcnkwaldWblA3Q0ovNzFrZ0IxUFpZOHRNNjhVbmV1QjR0eG02Vy9tOCs3NTQrWG05TklFckh5NE81RjN5NE1ybVFLRmR1NzJScm1YZHpnUk9PUHBiT2xETDdEdnp6c09RbksrL2JDYzRuYmNscnN4VFdLVGRyeVlsNkJWUlNiVDZ1Qk80cENXaCswdlJBblBlMmVQWExLOHRJMWxaeit3aWYrOVpJQWRUMmVMK2Q4MXcxSmN4bHczbElpUzU3N1ErNS9lYVM1WmNtMjJ1WnNGdStKY1RMSzh0STFsWnord2lmKzlaSUFkVDJHOXA3Z1FNK1FleDZoYzB6dm5FMmN2TUVkVHFwQnFiWmI5Rlp3b1J1NlpiTEs4dEkxbFp6K3dpZis5WklBZFQyanM1ekxqd1FqZzk0RWhUOWVHdDZRTDNPbmM4cjZGMEZNNW4wM1V1SVIxa0VMUitnbEVzUi93eER6dDZ5WmNzbXhHUnR1eXoxLy9xZHhwOWlXdW04Y3IwMndLVU5TSUtvTnlMZzZqQlBMbm85cmd0S2x5b0JWTkxOOFZsdGpSTXZkdkdoS3JMSWp5YTExeUJwMkxNdHpEdjh5aUs2RFliTDlHTUtKdytZVWREZFBRTnhROGNjTlI2OXVNWVhGLzBncXBCR1ByVnhFRFFlU3pNNEhVYms1cmgrMWxpcnNBVnJRaXhWbGhVNnVRd0tRR0c1SEI5NkNNSnZ0TDFaN3hpaTJMOW1kYWU0b3NicmRZUDZ2dmJDTXJMVk11blREQmZwNGZydU55KzV0eG1qZEdIbFErNEc3SmY1TEZtUkFPU1Q2eWFlcCtDcXEydUVOb3BnMER6eFQzaU9QSEFHWWRJaVB4RnVWK1J1Y2N3ME15aHNZTlAxQTVMR1VaVUpnVEtIeXl2TFNOWldjL3NJbi92V1NBSFU5bk82N2RnYVp4OWdicDRQNmYraVQrY09Lc1g4SFNoZ2FFL0ZPMEpsUlNUaHBDQzluQUowOW9TU3dGbkNJOWRpU29hWHVQVEZTVEFIQXNEcUkzY1NEdERMSzh0STFsWnord2lmKzlaSUFkVDJCd0xnNTVicXduNS8zcW1zNzd0WE14ZHo2K0RQNFVhUW5CZ05ERDlYOXBGOGJ3aTRsNUtwaU54c3M5ZmFZSFdUVUN1VkxFcVNDbGExcmtMZWtQTEdYc3NyeTBqV1ZuUDdDSi83MWtnQjFQYUt3L1VoaFQzOFpCVjVIWXNHN3d0VG5yNXdXdVF4OXloTWhVQWw3TDlHSGhTSVQxZk1hU3ZObFByS0hZTk1JWlRMSzh0STFsWnord2lmKzlaSUFkVDJDM1ZHZGdQVEFnRUlNNTVyTm10YlBqMTB3OU9tV01MZnhVaDBOcGJ3MWM0SWdpQ3NOTUF5eXFqT1BkeVdmVkIzeXl2TFNOWldjL3NJbi92V1NBSFU5ajQ4QjAyTVB4T3dMOTNzSHMvU2kxOEZ5WnBzNWFnaUNrbWtCNlMydnIxdnduelJSU0NUL0t6aVp1OURMSkR2UHM2VU12c08vUE93NUNjcjc5c0p6aWRjQmxaemhxcDJUMkZESEVVa1lGOW95eUZudlNkRTdnZlE0R3MvL2lHZjJIQXNwUDJEdDE1djBlajZPZ2cyM2JtVGwvbzE5QW0wMlIzVkdmZ1dEQXNFeXl2TFNOWldjL3NJbi92V1NBSFU5cDdvN1A3aXJvQURTSEI3K0xaYnE3QTNTdDZNSlhpQ3lXWnFLeE1MNzNwVXl5dkxTTlpXYy9zSW4vdldTQUhVOWoxS0NGNXNiS1ZQMUxwWjROcDQvd1EwNWQveFhzcFpZeklaVFo4WnJnbSt5eXZMU05aV2Mvc0luL3ZXU0FIVTl2Qkd2aDgzbnJTQkJtc1pqYXFZRlZQZTFSaURsVkZsSW9jWlZhSDZlYy9YeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRnl5dkxTTlpXYy9zSW4vdldTQUhVOXQvUm9TZzloaTFRcGxJblBrNFZkQU0zcHRUdW5ZTnhoTEVZSGN2YU96alVNYkxJYTBjYXpKazN5eFVvMEhqUkpreXN2YitubzhidXBGejR4QUg1Ly8vTEs4dEkxbFp6K3dpZis5WklBZFQyaE8rUkxMdzRXSXEwdlRWM0hRclRnY3NyeTBqV1ZuUDdDSi83MWtnQjFQYTd0bnBDWitkdWdNWnhJamRaQ01xRURpckYvQjBvWUdoUHhUdENaVVVrNGFRZ3Zad0NkUGFFa3NCWndpUFhZa29ZL2ErdlJLU1owKzBEZSs3Wmk2dnh5eXZMU05aV2Mvc0luL3ZXU0FIVTluSHhDeldRWlVYWlNkeXAxRDhpSjZ2TEs4dEkxbFp6K3dpZis5WklBZFQySjFRazZEN2RhOHRkR1JaeWxscVdEczZVTXZzTy9QT3c1Q2NyNzlzSnppZkZGK2k5Vmx6bEZNWnpPWHkySUloQXY5WlBrZC9VMmZ4eW04ZU1kL2huYWEwYi9PNXZyQVp1dzA1TXJQSXp2bEhMSzh0STFsWnord2lmKzlaSUFkVDJiSHlndXd1TWlWZ0hVMnVpUWkrR2lQWGpqM2VDejV3Y2JnWVdkbnJ0U0Z3VDJ5WHdWcHNMVEhhRHh6NkZlM28wVmRHQkFhdGt3REE5U1FLQ2NCSnpZY3NyeTBqV1ZuUDdDSi83MWtnQjFQYVZleld2b1Bpd2tkaUhyN3ZIZVE5QzR5V3oydHpXZkxETUYyWGZrSWhuRVREcHdBS00veGpoMmZyUEExZytlMzNMSzh0STFsWnord2lmKzlaSUFkVDJPMzI1UFJSNHFmWE9jeWxTWHJCeTVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiQzBFME5FQ3o5Wm5vcTE5Qit2RE1PWU9yMWNIWnlsUmRXSEJ0VHd2anR2Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWUxQQ3pydE5LUW54UWZMQWFTMUpNa2xMamJnSGVtU3dGaFNvU0ZUUW1rZzluTU4ydW92dmlLM1BsY2JvTzRCcmpMSzh0STFsWnord2lmKzlaSUFkVDJGM3NNUjlkNERyN1UrVVlRbUhoM0Z2MmxCWWsxV1UyT0tBc3ZiNlBkZWFieUtrWVpDVHpLK0FQOEpSU2huSUUzeXl2TFNOWldjL3NJbi92V1NBSFU5cXRPWmlidWc1bld2R1hSTWpXb2wwNkdkb1djL2FXZ0FQZXVja1FrVStoVXl5dkxTTlpXYy9zSW4vdldTQUhVOWpMV3ZmTFJLSXBieUdEMmJWUEVaOWhWdGI4V3R3d1k5T0VrOFFpVXFnZW05RE5jK1dubHBYQ3Mzc2lFcXBsSVp6QUYzb0d1SEc4TEYzeUdqSDRNa2NYTEs4dEkxbFp6K3dpZis5WklBZFQyNS8zRGpzdXVuWDA1RlBpOVBnQXNZTXNyeTBqV1ZuUDdDSi83MWtnQjFQYWJCNDk3alVkTWpveUVtVUJWMzRYVjBwNlZYU0pQdVRlYXdSUlE0YzNjclhlUW10Q0hDcFVnWEtWb3RjRGR6V0RsR2lqdXczQmFQMUszdm9obzdBNWcyWUlZTlZocmdjbXVjMlFUWmhnZ1hFdWcvWnpZdHp3V2YyN1ZjaW9nMVpiQ0FRYm13R2xERUFmT2l5cXRxTFE5S2ZBM0lkcGZTL09ubVJTVlJuZEYxSldTN0x3K0xmeWJ2R1FnSjZMdk1UNGI2QmhtMjJqc2NJcGNXcWE2MGQrTSt2TGx5aS9NSGlVODdlZklxQUZTQjg2VU12c08vUE93NUNjcjc5c0p6aWNlbDB6NTZPN3NGT3ZqT0xBNU1udWIwOU92YXdkUDlMeUNVVHV2YytMRGhGbHVVNWZkZ1ZkUFRNWkxEUXJlWDA5R1hlemdXQXlDVWlSNDd3VlNqSTJDT0hVQkRWZzVPY3k4dXluOUhqd2xRWFRwOVBCbmk4VE14UWxDZno4UE41UHhoU2dJVGFld2JsdmJ3NHRDQ2pOZTZGY3pOc0JNT0ZJZVJOT0dyY242eWVJMGpuN1RpVUFuTXd2Zk9CRysrejVidlRRQnlpUHAzRmR1YXNHQmZVWFd6TkZQVStmL0dpcUptY0hOS0RRYlh2dXhHWmZTWnZGMXA0dnMzZkRGQmVpOURtYllkaW12ZzA5WTBsd2l3NnlQMjJmV2c5VmtVSUpoYTZqeWdwVjQ3TXNyeTBqV1ZuUDdDSi83MWtnQjFQWU9GeHROWk5PNjVzb1FOYUNiSzJRa0lQQ2hLWWJqdm5JZ0ZZM09jeVdhMVhIeEN6V1FaVVhaU2R5cDFEOGlKNnZMSzh0STFsWnord2lmKzlaSUFkVDJQWlU0eDUyRFdlcEVOaWxuRFpQV3ZqMG5PVTd3VDUwL3VmRTYzaDArY2ppUGJrTUM1aWhGUkJjcUc4YkN1b2JWQWdUVitsUmlEaHRPNkdsUVllSzk3NG1DYndoNzdYOGd1aEJXRTBDZExrMnBJVVdQRTNWL1l1SGx1aWhGNDIzWEtpemtWSDYrNHlEWW5wT2hYM3JQc3FEOTk3M29JaXNRVW1KRjdPem80cnZMSzh0STFsWnord2lmKzlaSUFkVDJpdGhsVHhGT3ZxMHRlU2RCOXBBT1pidGdNRUNHcTczL3BLVXF4ZndmZjdSSXRCV1ducThWU2djS1Ezazk0YlpSRC9uSHArWHNYTXpna1NtWWtwOTllcytuYjIwSjQrTGIxd2REYkpYaHNLYkxLOHRJMWxaeit3aWYrOVpJQWRUMjBDSmI0T3Y1TEdsNVZsV1V1OU9OZDVvd0ZYdVp4Sk5YK29ycnhIdEJxRDZVdmpLUm9xcXkrZzNpTUxLN08rZlNFMitsY1FFWmpxM0QvZUFXU2tZN1VBejgxOCtCVUhlUXNjVk9sSUVPalZxMDFTZ3haa2dSNGVqOFRiazUvcXVzcGtZVHk5VEsrZlRkOGF4MXZCQTR6czZVTXZzTy9QT3c1Q2NyNzlzSnppZS9EeFVZdkphS3JTeUZibGY0YnFLRW4wTWJxcDJycXNxcGxDSktFNVFPQnhJWVVyamZpQ3o1YUFadzFWS0VPTnVHTVF4WGxLS0FkRzNNZUozSVgzdUd5eXZMU05aV2Mvc0luL3ZXU0FIVTlwRmYyNWJodUpTQklQTlgyaDdDTjl2T2xETDdEdnp6c09RbksrL2JDYzRubWRpSTBXMkdKZW9HUnJ3dVE1K2crTTZVTXZzTy9QT3c1Q2NyNzlzSnppZUtwTHAzMXh4VHl3dHlmT3pueXh1YzlGaXMvL2V4TENRd0RteThnZjFVODBGNGNGUXRxZURxdkw3OTFGWGszY1NhbTVxZCtLZWdra0VTT0c4a1FRZXA3R2ZzSU05ZEgxT3dQSXdLUlJTV0Z3YWlueHovT3VoWUdnMzlwVXFhZnl6em8wQ3NnRU0vUy9DcHBRdVo5NUhsckt3SjNtMzFoWklpRmVPRFZZSUhwLzdwVmVNMFFNaEhqTUpPWHN1MFVqZ2JGSkR0UnB1VE5sQzdzQWgxS0JYREhXam12WFBzUWdvaldGRExLL0RObTBVbCtPZmhKalNOWTJvbmNqMFhKTGpKVlZHbnBDYVg5SVV4RG9LMjFyN21SVWxlcnVlZ21Hb05USXlLU2Rjbm9iemxYRVVHUDlnNHB2c1VrcEdmeTU4YllaOHNSSUJ5Q1ZSeUpvTXhPeWlxMDErcnFTVS8zRTFzSUl4QnU4WlEwVW4yb29FNG05cjQrOEtSSFNQNVMwcStuRmt0U2l3eWt6K3JycnhQVEoxSzJUZ09oOGVUUmFsTEFJeW5pOFJGZnBxczFmeGkyZ2M5MjhnU1Z0a3ljdzVNZ3BMMkQ3MmMxK3BxNUFibGVRTGY4ajFVY3paaVVlSWp3S0pmbi8rcStaa1BKazJ1WCsyNUw4bHpCRmxxaURKMDZCSHRnUU9SdlhUUDEyOFY3cGR5VktqTXZHN2szdzh2cHRUOXUwVmFFQWllS3Z4UlQwVU1oYnUvSHA0S0xNZnB6ZFMxRk9PaktEU3ZVQjBnQnQxbVI5d1BRaEhSTGdrblF1VFJZYUJoN3hqSXduN0ptQk1tSk5IaEhFOUt6b0VLUEZEcHJ4R0hYbVg0bTJWVWdMSFdmalJpSGpxVXlMRGxpdGo2R2Z6MWxNL3dOcEZYa2NaUFlBS0xRSlpYTm1renNUT3JuSXlFcXpTczhuRmN1K1FYU2Y3bjVLbG9rbmtlZ3g3aEplUEV6eUs3N0VIWnRLSVpVRi94U1FYenJDNmx0dmFrY2p6KzNleWZaZ1FBQS9xRUo0QWgyWDNIK0hvTkxxVm9QMGFJRXg5RlVySWhHRnNzZ2hlc3d0cjlwN21qQW9QUGFDMXpGSEtHNzJ5ZHZPaUd5NjdVK201dEFtdUc0L1duVmVxZWxobzN5L0Y3ZTFMcXZuT1pnSTZXUmJpRG5XZzZ5c1pqL0ZZZUFWUGZIN0F5RlVmd1VHOTNQZWd0cDBhTy8zdkxFZHBPN3ExKzROSk5JdlVzZGdNMkdGTklIZkJraVV2SURQWEt3OVc1YkpsOTBvY3psbHhYdDFIejZab2lYRVprVjVVbVVodEV6TFJXWmh4WUxSY3FTaHdadENmeVE3RUpXdCtBTjFsZ3dWSHNVMzFQYTgwTEZ0MzlQSzBXS0lReDVSMEJmaDNEQkNlOG9VSExtNjlUL3dXaDNmWXVONFdzanBYdEYzd241ekU1RGlkZFEzV21wVnpmNEh3aFJjNkprUDQvQUFoU1l1d1BhNmFuSGx4OXNGQnE2OEdFakdQSCthY0dadmh3dlNwWncvQnNKU2dpRUpGbjZyOUNMNEFtY3FvMndpOUFiT1FIRGEwVThQZHpJRjY3ZHFscHhHQVl3M1BjSEtTbkV1enpqdXp4U0o0T0JwWmhRTnRkQW8wNThxUmJzTytqcUJHNUF2bG9EQm12TjNKOW5RbFVyZ29TNWZ4NExOc0JuOEg0NVExeTZDOFJKUllGUVZHWmZTN0J1eDVGcVZOTURkYkJIQll2ZTlrZzl6MU0vSVhzZzJYaGViUENtbmY3SmhVbzJVSzRIUFdRdmZhVlIwMCt1L2pvSXRCSGh5eTVxVTJ3dzM5cXZXUDlUSiswb1kvL0pzRjZzYXVpSFNueHZ1N1lCOUlHczU1VG0reTliaE11QXZWeXd3b1lBdXdqbXNEVVBYN2FvaytVdnBGNndHbEVkZFRIVzBvSkhmZXI5T3RhNFF0cmtZeXdDSkZQYnlVdFIyQncwOVh2T0l3NFdqR3A4K21td0pDOTRFU0E4anhrT2xVMTlFTjNMMTFpQ05XRDRJUEFucDZjU1dtR20zclpmS3BqcEtBKzdXZnByMzkwRE9Za0I0OVlSMVpnUmdsNC9SMGFUN2xyOFM5R1JJVFdsOHFXdDEyU2JYMVZYWk44RUZpR1hycm1Nd0J1ekF6ZlMzNm13Y1BrNTJuTXpjUGxFR3RNSllrSWtVUkszNWRpenBReSt3Nzg4N0RrSnl2djJ3bk9KODJEb2pPY1M4MHNxbE1Mck0vZHFEYXd3Z2E3TmpqS1crYlVzU3FJZVVQNlFTcTRCZCtNMkJDVVBlU2xRUHNMQm5mb3Z5VDd1Q2NoTldoL2tDRlVrMk93dkZVcHpFcnpWVzJiOHN1MTRDZDJ3OEFSMmZVTUtSc0YrMGFYY1YzTEorNFgyMDJQQ2oydUUrMEw3S1FDYW5WZkFIWnZSdWdHbnNaaEFZZDFYbzI0ZW5TRFdTNDVMS3E3QTh0TjVZMTg1cm0yeDhZdE90Vk90SHdsZmNxMks0YkxLOHRJMWxaeit3aWYrOVpJQWRUMldFdDdnaGNaQnN3VElVaS82K0IzRkRxVE5FanVjaDBPUjBBMld4YURrVUxEOEd3bEtDSVFrV2ZxdjBJdmdDWnlCa0VpMEpwcG10dVhnemhmR1RNVVpISHhDeldRWlVYWlNkeXAxRDhpSjZ2TEs4dEkxbFp6K3dpZis5WklBZFQyUFpVNHg1MkRXZXBFTmlsbkRaUFd2ajBuT1U3d1Q1MC91ZkU2M2gwK2NqZ1RVbUNmcUNRVkNOY21LZTNWK2prNjZxNzZTcnpDZFlXRDhxRHdUL2tEWkJKUHcwbk1qNWF0NW4vRFJXSkZ6VXYyYXN4ajA5V0dBRm9xbDJWU0dNMTRDODlqTS9DV3RUOXgyZjhIWlprUGg4TVVYczhzU1RxaVZ2V3M2VFhQTDFyT2xETDdEdnp6c09RbksrL2JDYzRuNGNMSTIyZUlrQlhpbWRkR1hibFhvRDEvM0FFd25jSUtvVlNLTGtDVjZUZlAxOGtncG45NStVSTVyUTZGS0FVK2RJdU5MY2dmMDd5Rk1WUitteDBzNGdKWVptSzZHaTQ1QjZkZ05lakMwQkpBNFl6RGFJZGVpMjIwWEhxZFdTMzF5eXZMU05aV2Mvc0luL3ZXU0FIVTlpMW9raDR4ZXpNTTYyeGpsVXVJazFQQkFjWFNCQ2hBNkRyb1AyTzZ4ME9KSVgzMEpGMzFLT0gvRjk4WFpoanhpNS9WQWFlZVRlKzdYRjhsR0VDd1Bpa0xlQ2k3MFY2UHVxUzBNaGFscFBKei96eElvTkxaODllTTJXRnZ5VlgrNnQzQ1k2dGxBQ0thM0xHNXc3RGtMY2NhQnBMY0czTCs1Y0lKMnB2MEFlRUlsRmJLWXpBK3pXSFBnMW8xQzltOXJHUWsvUVdsNHJFTmxHdGVYNFJveXRmUGtGUXAza1FKaTVud1N6NzVVWTRGTkVHVFdwQTFQRUltazF6VUlXTTFFZWw2NjlnK1ErQ1VVMndmcktMWkl6SmJzTmp1WGNJQVVwTnJ3eGF5aWZUUG96dnEyVDlVditkbC9Qa1VYOVJDYmM2VU12c08vUE93NUNjcjc5c0p6aWZEOEd3bEtDSVFrV2ZxdjBJdmdDWnkwYndmdzB6UEtVVjNERVo2aDZMdWxzc3J5MGpXVm5QN0NKLzcxa2dCMVBiWVJoRWIzenhTOERVUTFXV3MwTjJPMC8zYXdvRDFJcjc4MGV5cC9YY0k2NEpFNUMzbnVZV3M2UEk4ZmoycW4zdXZVWGZtbC8xa01DWmQyS21rKzFBYVdxL0hocnlCVXZRWmtlRzdFL3F2ZjBJa0NmVTVUcTNrM1dDeGh4ZmQ1V01JVFVhNDMvT3Y3Y0NWa2ZmTHJTWXhJZ0lJU3pHaU5VSEYrdmI1R2JCYXhNNlVNdnNPL1BPdzVDY3I3OXNKemllUG9janBqQW85TldWU3hqQXZKOFFMMlB6US9CRnFpR2Z3c1FQdDlmcExBTUpCM3JRVktaa0VQaVVydm1Gc3RXQjNPWFJ3K2V3Tm1jVjZhL2lrYnUyaXhjK1BHNGJZMTNBZjVaR3Vnb3RxaGplaWliNlJsNll6S0Q2cGt4NGoxa1BMSzh0STFsWnord2lmKzlaSUFkVDJvNXlOZi94Q3I1bkh1eFo2Z3Y4NThUQmdoVjJGOFp6NklrTVUzU2xkdXdZVDJ5WHdWcHNMVEhhRHh6NkZlM28wL1prcWF0ZGRZdDVqVHhjbGpKM3J1WTQ2ekdUTTJ5cnNGR3krRWkzU0lZamlCVEhMY3FMdklVQStGMHF2SUluK1RNaHErVFRhS0FzV0dRWGd6N1M0bkxQZnNNR3ZmQysweHdlYytPbktSb0ptMFBWcTNVKzdNdGprSHl1bXFxby93OTUwVFo2V1VsbEpkVW1qYjh3cGphV0p3K01OR2dJeXhmamJDb1ZCL3JnbFN5UGg5UFJNWkl6bXdvTjdnSTA0eXl2TFNOWldjL3NJbi92V1NBSFU5aUdzQmQyMEt4Um9zYnA0YjQ2d3ZTTzJQZSsyNkxMRE1Ob1VmT2lOZWx1b1ZGYXE5SGVtUnR2V2VsVmFDOXpoQWZUNXQ4WEh5SHRnR0RUUUF5enB5SXBhUTlOZE1EbFoxVDZzd2FyMWlqOFlVU3NYSEU3NWpkSWJ1dHhaNzUxeVVCZDNmOXZMVTZJMFRzaGFrY0Q2Y1NXUzVpeXJGRFBISlo4dUxYRk1ZRnc5XFxcIilcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gxXCIsXCJwYXRoXCI6XCJnejFcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciBpZCA9IE1ZX1VSTC5zcGxpdCgnbWlkPScpWzFdO1xcbnZhciBzdXJsID0gTVlfVVJMO1xcbnZhciBjb2RlID0gZmV0Y2goc3VybCx7fSk7XFxudmFyIHltID0gSlNPTi5wYXJzZSgne1xcXCJteScrY29kZS5zcGxpdCgne1xcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSsnfX0nKTtcXG5cXG52YXIgZXAgPSB5bVsnbGlzdCddWydnZXRGb2xsb3dMaXN0LXBhZ2UtbWlkLScraWRdWydyZXN1bHQnXTtcXG5mb3IgKCB4IGluIGVwKXtcXG4gIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JytlcFt4XS5taWQrJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSc7XFxuICAgIGQucHVzaCh7XFxuICAgICAgIHRpdGxlOmVwW3hdLnVuYW1lLFxcbiAgICAgICBpbWc6ZXBbeF0uZmFjZSxcXG4gICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZ3oyP3VybD0nK3l1cmwsXFxuICAgICAgIGNvbF90eXBlOidpY29uX3JvdW5kXzQnXFxuICAgICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5YWz5rOoMlwiLFwicGF0aFwiOlwiZ3oyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5jb25zdCBoZWFkQ29sb3IgPSBcXFwiIzM1OGNjZFxcXCI7XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBwdXRNeVZhcihcXFwicGFyYW0yXFxcIiwgXFxcIlxcXCIpO1xcbn1cXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyByZXF1ZXN0KE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXS5yZXBsYWNlKFxcXCJhaWQ9XFxcIixcXFwiYWlkPVxcXCIrZ2V0TXlWYXIoXFxcInBhcmFtMlxcXCIpKSwge30pKTtcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5pdGVtLmxlbmd0aDsgaSsrKSB7XFxuICAgIHZhciByID0ge307XFxuICAgIHZhciBqID0ganNvbi5kYXRhLml0ZW1baV07XFxuICAgIHZhciB0ID0gTnVtYmVyKGouY3RpbWUpICogMTAwMDtcXG5cXG4gICAgZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7XFxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG4gICAgICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXG4gICAgICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICAgICAgcmV0dXJuIHRpbWVcXG4gICAgfVxcbiAgICB2YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG4gICAgaWYgKGoucGxheSA+IDEwMDAwKVxcbiAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgZWxzZVxcbiAgICAgICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxuICAgIHZhciBwaWNzID0gKGouY292ZXIuaW5kZXhPZignOicpICE9IC0xKSA/IGouY292ZXIgOiAnaHR0cHM6JyArIGouY292ZXI7XFxuXFxuICAgIHIucGljX3VybCA9IHBpY3MgKyBSZWZlcmVyO1xcbiAgICByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgIHIuY29sX3R5cGUgPSAnbW92aWVfMV92ZXJ0aWNhbF9waWMnO1xcbiAgICByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgdGltZTtcXG4gICAgaWYgKGoubGVuZ3RoICE9IFxcXCIwMDowMFxcXCIpIHtcXG4gICAgICAgIGQucHVzaChyKVxcbiAgICB9O1xcbiAgICBwdXRNeVZhcihcXFwicGFyYW0yXFxcIiwgai5wYXJhbSlcXG4gICAgLy9sb2coai5wYXJhbSlcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIHlnZct5pCc57Si5LiA57qnXCIsXCJwYXRoXCI6XCJzXCIsXCJydWxlXCI6XCJ2YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgYiA9IFtdO1xcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG52YXIga2V5d29yZCA9IE1ZX1VSTC5zcGxpdCgnJmtleXdvcmQ9JylbMV07XFxudmFyIHBhZ2UgPSBNWV9QQUdFO1xcbi8vdmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvdHlwZT9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02MjcwMjAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9eGlhb21pJmhpZ2hsaWdodD0xJmtleXdvcmQ9JyArIGtleXdvcmQgKyAnJm1vYmlfYXBwPWFuZHJvaWQmb3JkZXI9dG90YWxyYW5rJnBsYXRmb3JtPWFuZHJvaWQmcG49MSZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjI3LjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYyMzA3NjE0MCZ0eXBlPTImdXNlcl90eXBlPTAmc2lnbj01MDY2MjE2ZmViYjI4YTYxOTgxMmU4OGU1ZmYxYTAzNCc7XFxudmFyIHZpZGVvX3VybCA9IFxcXCJodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2g/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjQwMDMwMCZrZXl3b3JkPVxcXCIgKyBrZXl3b3JkICsgXFxcIiZwbj1cXFwiICsgcGFnZTtcXG52YXIgYmFuZ3VtaV91cmwgPSBcXFwiaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoL3R5cGU/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjQwMDQwMCZrZXl3b3JkPVxcXCIgKyBrZXl3b3JkICsgXFxcIiZwbj1cXFwiICsgcGFnZSArIFxcXCImdHlwZT03XFxcIjtcXG52YXIgbGl2ZV91cmwgPSBcXFwiaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoL2xpdmU/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjQwMDQwMCZrZXl3b3JkPVxcXCIgKyBrZXl3b3JkICsgXFxcIiZwbj1cXFwiICsgcGFnZSArIFxcXCImdHlwZT00XFxcIjtcXG52YXIgdXNlcl91cmwgPSBcXFwiaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoL3R5cGU/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjQwMDQwMCZrZXl3b3JkPVxcXCIgKyBrZXl3b3JkICsgXFxcIiZwbj1cXFwiICsgcGFnZSArIFxcXCImdHlwZT0yXFxcIjtcXG52YXIgeWluZ3NoaV91cmwgPSBcXFwiaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoL3R5cGU/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjQwMDQwMCZrZXl3b3JkPVxcXCIgKyBrZXl3b3JkICsgXFxcIiZwbj1cXFwiICsgcGFnZSArIFxcXCImdHlwZT04XFxcIjtcXG5sZXQgdl9saXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCwge30pKS5kYXRhLml0ZW07XFxubGV0IGJfbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdChiYW5ndW1pX3VybCwge30pKS5kYXRhLml0ZW1zO1xcbmxldCBsX2xpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QobGl2ZV91cmwsIHt9KSkuZGF0YS5saXZlX3Jvb20uaXRlbXM7XFxubGV0IHVfbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1c2VyX3VybCwge30pKS5kYXRhLml0ZW1zO1xcbmxldCB5X2xpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QoeWluZ3NoaV91cmwsIHt9KSkuZGF0YS5pdGVtcztcXG50cnkge1xcbiAgICBiX2xpc3QuZm9yRWFjaCgoYikgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYi50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IGIuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGIuc3R5bGVzICsgXFxcIlxcXFxuXFxcIiArIGIuc3R5bGUsXFxuICAgICAgICAgICAgZGVzYzogYi5iYWRnZSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgYi51cmkgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pXFxufSBjYXRjaCAoZSkge31cXG50cnkge1xcbiAgICB2X2xpc3QuZm9yRWFjaCgodikgPT4ge1xcbiAgICAgICAgaWYgKHYubGlua3R5cGUgPT0gXFxcInZpZGVvXFxcIikge1xcbiAgICAgICAgICAgIGlmICh2LnBsYXkgPiAxMDAwMClcXG4gICAgICAgICAgICAgICAgdmFyIHBsYXkgPSAodi5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgICAgICBlbHNlXFxuICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gdi5wbGF5O1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB2LnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IHYuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi5pKt5pS+6YePOiBcXFwiICsgcGxheSArIFxcXCIgIOaXtumVvzogXFxcIiArIHYuZHVyYXRpb24gKyBcXFwiXFxcXG7lj5HluIPml6XmnJ9cXFwiICsgdi5zaG93X2NhcmRfZGVzY18yICsgXFxcIlxcXFxuVVA6IFxcXCIgKyB2LmF1dGhvcixcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuinhumikVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgdi5zaGFyZS52aWRlby5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0pXFxufSBjYXRjaCAoZSkge31cXG50cnkge1xcbiAgICB1X2xpc3QuZm9yRWFjaCgodSkgPT4ge1xcbiAgICAgICAgaWYgKHUuZmFucyA+IDEwMDAwKVxcbiAgICAgICAgICAgIHZhciBmYW5zID0gKHUuZmFucyAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICBlbHNlXFxuICAgICAgICAgICAgdmFyIGZhbnMgPSB1LmZhbnM7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB1LnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogdS5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgY29udGVudDogXFxcIueyieS4nTogXFxcIiArIGZhbnMgKyBcXFwiICDop4bpopE6IFxcXCIgKyB1LmFyY2hpdmVzICsgXFxcIiAg562J57qnOiBMVlxcXCIgKyB1LmxldmVsLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCJVUOS4uyhcXFwiICsgdS5taWQgKyBcXFwiKVxcXCIsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1oaWtlcjovL2VtcHR5IyNmeXBhZ2UnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbWlkOiB1Lm1pZCxcXG4gICAgICAgICAgICAgICAgbmFtZTogdS50aXRsZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbn0gY2F0Y2ggKGUpIHt9XFxudHJ5IHtcXG4gICAgeV9saXN0LmZvckVhY2goKHkpID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHkudGl0bGUsXFxuICAgICAgICAgICAgaW1nOiB5LmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBjb250ZW50OiB5LnN0eWxlcyArIFxcXCJcXFxcblxcXCIgKyB5LnN0eWxlLFxcbiAgICAgICAgICAgIGRlc2M6IHkuYmFkZ2UsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIHkudXJpICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbn0gY2F0Y2ggKGUpIHt9XFxudHJ5IHtcXG4gICAgbF9saXN0LmZvckVhY2goKGwpID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGwudGl0bGUsXFxuICAgICAgICAgICAgaW1nOiBsLmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBjb250ZW50OiBsLm5hbWUsXFxuICAgICAgICAgICAgZGVzYzogbC5iYWRnZSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIlxcXCIpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgLy/ok53lhYlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBiYXNldXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL2FwcC1yb29tL3YyL2luZGV4L2dldFJvb21QbGF5SW5mbz9hY2Nlc3Nfa2V5PVxcXCIgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSArIFxcXCImcW49MTAwMDAmcm9vbV9pZD1cXFwiICsgaWQgKyBcXFwiJnBsYXRmb3JtPWFuZHJvaWQmYnVpbGQ9NjQwMDMwMCZkZXZpY2VfbmFtZT1NMjAwN0ozU0MmZm9ybWF0PTAsMiZjb2RlYz0wLDEmaHR0cD0xJmNfbG9jYWxlPXpoX0NOJnByb3RvY29sPTAsMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2RlYyA9IEpTT04ucGFyc2UocmVxdWVzdChiYXNldXJsKSkuZGF0YVtcXFwicGxheXVybF9pbmZvXFxcIl1bXFxcInBsYXl1cmxcXFwiXVtcXFwic3RyZWFtXFxcIl1bMF1bXFxcImZvcm1hdFxcXCJdWzBdW1xcXCJjb2RlY1xcXCJdWzBdXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZWMudXJsX2luZm9bMF0uaG9zdCArIGNvZGVjLmJhc2VfdXJsICsgY29kZWMudXJsX2luZm9bMF0uZXh0cmFcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgaWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJ1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChidXJsKSkuZGF0YS5kdXJsWzBdLnVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgbC5yb29taWQpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pXFxufSBjYXRjaCAoZSkge31cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1wiLFwibmFtZVwiOlwi6aG16Z2iLeaQnOe0ouS6jOe6p1wiLFwicGF0aFwiOlwic3NcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgLypcXG4gICAgZC5wdXNoKHtcXG4gICAgdGl0bGU6J+KAnOKAnOWFs+azqOKAneKAnScsXFxuICAgIHVybDonaGlrZXI6Ly9lbXB0eSMnK01ZX1VSTC5zcGxpdCgnIycpWzFdKycmJicrTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV0uc3BsaXQoJyYnKVswXStgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnJiYnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgICovXFxuICAgIHB1dE15VmFyKFxcXCJwYXJhbTJcXFwiLCBcXFwiXFxcIilcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4q2Q77iPU3RhcuKAneKAnScsXFxuICAgICAgICAvL3VybDogJ2hpa2VyOi8vZW1wdHkjJyArIGNhcmQubmFtZSArICcmJicgKyBjYXJkLm1pZCArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG4gICAgICAgIHVybDogJCgpLmxhenlSdWxlKChtaWQsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAvL3ZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nICsgbWlkICsgJyZqc29ucD1qc29ucCZhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSwge30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgbGV0IGFjY2Vzc19rZXkgPSBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgbGV0IG15bWlkID0gZ2V0VmFyKCdzdGFyaWQnKTtcXG4gICAgICAgICAgICBsZXQgdHMgPSBTdHJpbmcobmV3IERhdGUoKS5nZXRUaW1lKCkpLnNsaWNlKDAsIDEwKTtcXG4gICAgICAgICAgICBsZXQgYWFhID0gXFxcImFjY2Vzc19rZXk9XFxcIiArIGFjY2Vzc19rZXkgKyBcXFwiJmFwcGtleT00NDA5ZTJjZThmZmQxMmI4JmJ1aWxkPTU1MjA0MDAmbWlkPVxcXCIgKyBteW1pZCArIFxcXCImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnRzPVxcXCIgKyB0cyArIFxcXCImdm1pZD1cXFwiICsgbXltaWQ7XFxuICAgICAgICAgICAgbGV0IGJiYiA9IFxcXCI1OWI0M2UwNGFkNjk2NWYzNDMxOTA2MmI0NzhmODNkZFxcXCI7XFxuICAgICAgICAgICAgbGV0IHNpZ24gPSBtZDUoYWFhICsgYmJiKTtcXG4gICAgICAgICAgICBsZXQgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NwYWNlPycgKyBhYWEgKyAnJnNpZ249JyArIHNpZ247XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBnZXRNeVZhcihcXFwiVUFcXFwiKVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFxcXCJHRVRcXFwiXFxuICAgICAgICAgICAgfSkpLmRhdGEuY2FyZC5mYWNlO1xcblxcbiAgICAgICAgICAgIGlmICghZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhtaWQpKSB7XFxuICAgICAgICAgICAgICAgIHZhciB4ciA9IGdldFZhcignbGIyJykgKyAnXFxcXG4nICsgbmFtZSArIFxcXCImJlxcXCIgKyBtaWQgKyAnIyMnICsgcGljO1xcbiAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB4cik7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignbGIyJywgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSkpO1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLmmK/lkKblkIzmraXkupHnq69cXFxcbijngrnlh7vlj5bmtojooajnpLrku4XmnKzlnLDlhbPms6gpXFxcIikuY29uZmlybSgobWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmeSA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vbW9kaWZ5XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nfa2V5OiBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZDogbWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0OiBcXFwiMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5jb2RlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZnkgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YWz5rOo5oiQ5YqfKOacrOWcsCbkupHnq68pXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKzlnLDlhbPms6jmiJDlip/vvIzkupHnq6/lupTor6Vn5LqGXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIG1pZClcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5YWz5rOo5oiQ5YqfKOS7heacrOWcsCknXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHh4ID0gZ2V0VmFyKCdsYjInKS5zcGxpdCgnXFxcXG4nKTtcXG4gICAgICAgICAgICAgICAgLy/ljrvpmaTlhbPms6jph4znmoTnqbrnmb3lhYPntKBcXG4gICAgICAgICAgICAgICAgdmFyIHh4ID0geHguZmlsdGVyKGZ1bmN0aW9uKHMpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzICYmIHMudHJpbSgpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHh4W2tdLmluY2x1ZGVzKG1pZCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2MgPSB4eFtrXSArICdcXFxcbic7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhyID0gZ2V0VmFyKCdsYjInKSArICdcXFxcbic7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHh6ID0geHIucmVwbGFjZShzYywgJycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHh6KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2xiMicsIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwge30pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmeSA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vbW9kaWZ5XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19rZXk6IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZDogbWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdDogXFxcIjJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5jb2RlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kaWZ5ID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj5blhbPmiJDlip8o5pys5ZywJuS6keerrylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pys5Zyw5Y+W5YWz5oiQ5Yqf77yM5LqR56uv5bqU6K+lZ+S6hlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lj5blhbPmiJDlip/vvIHpk4HlrZDlho3op4Hwn6aGJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ogJflrZDlsL7msYFcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgTVlfUEFSQU1TLm1pZCwgTVlfUEFSQU1TLm5hbWUpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XFxubGV0IHVybCA9IFxcXCJodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zcGFjZS9hcmNoaXZlL2N1cnNvcj9haWQ9XFxcIiArIGdldE15VmFyKFxcXCJwYXJhbTJcXFwiKSArIFxcXCImYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmdm1pZD1cXFwiICsgTVlfUEFSQU1TLm1pZDtcXG52YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKTtcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5pdGVtLmxlbmd0aDsgaSsrKSB7XFxuICAgIHZhciByID0ge307XFxuICAgIHZhciBqID0ganNvbi5kYXRhLml0ZW1baV07XFxuICAgIHZhciB0ID0gTnVtYmVyKGouY3RpbWUpICogMTAwMDtcXG4gICAgLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG4gICAgLypcXG4gICAgZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7XFxuICAgICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLCAxNyk7XFxuICAgICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCAnLScpLnJlcGxhY2UoJ+aciCcsICctJyk7XFxuICAgICAgICByZXR1cm4gKFlNRClcXG4gICAgfVxcbiAgICAqL1xcbiAgICBmdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbiAgICAgICAgdmFyIFlZID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nO1xcbiAgICAgICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICAgICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICAgICAgdmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxuICAgICAgICByZXR1cm4gdGltZVxcbiAgICB9XFxuICAgIC8v5pe26Ze05oiz6L2s5o2iXFxuICAgIHZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbiAgICBpZiAoai5wbGF5ID4gMTAwMDApXFxuICAgICAgICB2YXIgcGxheSA9IChqLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICBlbHNlXFxuICAgICAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG4gICAgdmFyIHBpY3MgPSAoai5jb3Zlci5pbmRleE9mKCc6JykgIT0gLTEpID8gai5jb3ZlciA6ICdodHRwczonICsgai5jb3ZlcjtcXG4gICAgci5waWNfdXJsID0gcGljcztcXG4gICAgci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXG4gICAgci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWU7XFxuICAgIGlmIChqLmxlbmd0aCAhPSBcXFwiMDA6MDBcXFwiKSB7XFxuICAgICAgICBkLnB1c2gocilcXG4gICAgfTtcXG4gICAgcHV0TXlWYXIoXFxcInBhcmFtMlxcXCIsIGoucGFyYW0pXFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLemihOWkhOeQhlwiLFwicGF0aFwiOlwieWNsXCIsXCJydWxlXCI6XCJwdXRWYXIyKCd1YScsICc7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9Jyk7XFxuXFxucHV0TXlWYXIoXFxcIlVBXFxcIiwgXFxcIk1vemlsbGEvNS4wIEJpbGlEcm9pZC82LjQwLjAgKGJiY2FsbGVuQGdtYWlsLmNvbSkgb3MvYW5kcm9pZCBtb2RlbC9NMjAwN0ozU0MgbW9iaV9hcHAvYW5kcm9pZCBidWlsZC82NDAwMzAwIGNoYW5uZWwvbWFzdGVyIGlubmVyVmVyLzY0MDAzMDAgb3NWZXIvMTAgbmV0d29yay8xXFxcIik7XFxuXFxucHV0VmFyKCdhY2Nlc3Nfa2V5JywgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKTtcXG5cXG5wdXRWYXIoJ1g1JywgXFxcIkBsYXp5UnVsZT0uanM6dmFyIGp4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dCcse30pO3JlZnJlc2hYNVdlYlZpZXcoangraW5wdXQpOyd0b2FzdDovL+aSreaUvuS4rSdcXFwiKTtcXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCAnVVDkuLsnKTtcXG59XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnKSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywgJ+inhumikScpO1xcbn1cXG5cXG5pZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSkgPT0gJycpIHtcXG4gICAgaWYgKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pICE9ICcnKSB7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPTEwMzI1Njg4MCZhY2Nlc3Nfa2V5PWQ1YWY1NTEzYWNiOTI5NDUzOWVjZGY3ZmZkNTViZjUxJywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBnZXRNeVZhcihcXFwiVUFcXFwiKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pKS5kYXRhLmZhY2U7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCBcXFwi5YyX5Z+OJiYxMDMyNTY4ODAjI1xcXCIgKyBwaWMpO1xcbiAgICB9XFxufVxcblxcbmlmICghZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCB7fSkpIHtcXG4gICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwgXFxcIjEwMzI1Njg4MFxcXCIpO1xcbn1cXG5cXG5wdXRWYXIyKCdsYjInLCBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHt9KSk7XFxuXFxuLypcXG5wdXRWYXIoXFxcIuino+aekOWPo1xcXCIsYGhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5I0BydWxlPWpzOnZhciBkID0gW107ZC5wdXNoKHtkZXNjOiAnMjAwJyx1cmw6ICdmaWxlOi8vL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9iaWxpL3VwanguaHRtbCcsY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSd9KTt2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KS5zcGxpdCgvXFxcXFxcXFxuLyk7Zm9yKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKyl7dmFyIHQgPSB0aXRsZXNbaV0uc3BsaXQoXFxcIiYmXFxcIik7ZC5wdXNoKHt0aXRsZTpmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix7fSkgPT0gdFsxXSA/IHRbMF0gKyBcXFwi4oCY4oCY77yI5b2T5YmN77yJ4oCZ4oCZXFxcIiA6IHRbMF0sZGVzYzp0WzFdLHVybDp0WzFdICsgJ0BsYXp5UnVsZT0uanM6cHV0VmFyMihcXFwidWlkXFxcIixpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLGlucHV0KTtiYWNrKCk7XFxcInRvYXN0Oi8v5L+u5pS55oiQ5YqfXFxcIicsY29sX3R5cGU6ICd0ZXh0XzEnfSk7fXNldFJlc3VsdChkKTtgKTtcXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwgXFxcIuWFqOe9kVZJUCYmaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFxcbuWKoOmAnyYmaHR0cHM6Ly93d3cuY3Vhbi5sYS9tM3U4LnBocD91cmw9XFxcIik7XFxufVxcblxcblxcbmxldCBsb2NhbEh0bWwyID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCB7fSk7XFxubGV0IGdpdEh0bWwyID0gZmV0Y2goXFxcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9acnVpcnkvaGlrZXJ2aWV3L2h0bWwvamlleGkuaHRtbFxcXCIsIHt9KS5yZXBsYWNlKC9qaWV4aVxcXFwvamlleGkvZyxcXFwiYmlsaS91cGp4XFxcIik7XFxuaWYgKCFsb2NhbEh0bWwyKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCBnaXRIdG1sMik7XFxuICB2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KTtcXG4gIHZhciB0ID0gdGl0bGVzLnNwbGl0KFxcXCImJlxcXCIpWzFdO1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHQpO1xcbn1cXG4qL1xcbi8v6YCa6L+H5pCc57Si5p+l55yL6Ieq5bex55qEdWlk77yM54S25ZCO5pu/5o2i5Y2z5Y+vXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLCB7fSkpIHtcXG4gICAgcHV0VmFyKCdzdGFyaWQnLCAnOTI4MTIzJyk7XFxufSBlbHNlIHtcXG4gICAgcHV0VmFyKCdzdGFyaWQnLCBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLCB7fSkpO1xcbn1cXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKSB7XFxuICAgIHB1dFZhcihcXFwia2V5XFxcIiwgXFxcImQ1YWY1NTEzYWNiOTI5NDUzOWVjZGY3ZmZkNTViZjUxXFxcIilcXG59IGVsc2Uge1xcbiAgICBwdXRWYXIoXFxcImtleVxcXCIsIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKTtcXG59XFxuLy/oh6rlt7Hljrti56uZ5a6i5oi356uv6aaW6aG15oqT5YyF77yM5om+5YiwYXBwLmJpbGliaWxpLmNvbeW8gOWktOeahOmTvuaOpe+8jOeEtuWQjuaKimFjY2Vzc19rZXnnmoTlgLzloavlhaXkuIrmlrknPSflkI7pnaLljbPlj69cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0JywgXFxcIuaWsOeJiFxcXCIpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmjqjojZBcIixcInBhdGhcIjpcImZlZWRcIixcInJ1bGVcIjpcIi8vdmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC9pbnRsL2ZlZWQvaW5kZXg/YWNjZXNzX2tleT0nICsgZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgKyAnJmF1dG9wbGF5X2NhcmQ9MiZidWlsZD02MjI1MzAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmNvbHVtbj0yJmRldmljZV9uYW1lPSZkZXZpY2VfdHlwZT0wJmZsdXNoPTgmZm52YWw9NDY0JmZudmVyPTAmZm9yY2VfaG9zdD0wJmZvdXJrPTEmZ3VpZGFuY2U9MCZodHRwc191cmxfcmVxPTAmbW9iaV9hcHA9YW5kcm9pZCZuZXR3b3JrPXdpZmkmcGxhdGZvcm09YW5kcm9pZCZwbGF5ZXJfbmV0PTEmcHVsbD1mYWxzZSZxbj04MCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjIyLjUlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QnO1xcbnRyeSB7XFxuICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvZmVlZC9pbmRleD9hY2Nlc3Nfa2V5PVxcXCIgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSArIFxcXCImYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzNcXFwiO1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiYXBwLWtleVxcXCI6IFxcXCJhbmRyb2lkXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YS5pdGVtcztcXG4gICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICB2YXIgdXJsID0geC5nb3RvID09IFxcXCJiYW5ndW1pXFxcIiA/IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmkuc3BsaXQoXFxcIj9cXFwiKVswXSArICcjaW1tZXJzaXZlVGhlbWUjJyA6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPVxcXCIgKyB4LnBhcmFtICsgXFxcIu+8hu+8hmJ2aWQ9XFxcIiArICcjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHguZ290byA9PSBcXFwiYmFuZ3VtaVxcXCIgPyBcXFwi8J+SsFxcXCIgKyB4LnRpdGxlIDogeC50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiB4LmNvdmVyX2xlZnRfMV9jb250ZW50X2Rlc2NyaXB0aW9uICsgXFxcIiBcXFwiICsgeC5jb3Zlcl9sZWZ0XzJfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXCIgIFxcXCIgKyB4LmNvdmVyX3JpZ2h0X3RleHQsXFxuICAgICAgICAgICAgcGljOiB4LmNvdmVyICsgXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLnnIvop4HmiJHmhI/lkbPnnYDkvaDopoHph43mlrDnmbvlvZXkuobvvIzpnZPku5RcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmlrDnlapcIixcInBhdGhcIjpcIm5ld2JnbVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG4gICAgbGV0IGFjY2Vzc19rZXkgPSBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiLFxcXCJcXFwiKVxcbiAgICBsZXQgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgbGV0IGFhYSA9ICdhY2Nlc3Nfa2V5PScgK2FjY2Vzc19rZXkgKyAnJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZmlsdGVyX3R5cGU9MCZtb2JpX2FwcD1hbmRyb2lkJm5pZ2h0X21vZGU9MCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nK3RzO1xcbiAgICBsZXQgYmJiID0gXFxcImMyZWQ1M2E3NGVlZWZlM2NmOTlmYmQwMWQ4YzljMzc1XFxcIjtcXG4gICAgbGV0IHNpZ24gPSBtZDUoYWFhICsgYmJiKTtcXG4gICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC90aW1lbGluZT8nK2FhYSsnJnNpZ249JytzaWduO1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIHNvdXJjZV9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKTtcXG4gICAgICAgIHZhciBkYXRlbGluZSA9IFt7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs0XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLliY3ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIwXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs1XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmKjml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIxXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNl0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5LuK5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMlxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzddLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuaYjuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjNcXFwiXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzhdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWQjuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjRcXFwiXFxuICAgICAgICB9XTtcXG4gICAgICAgIGlmICghZ2V0VmFyKCdpZCcpKSB7XFxuICAgICAgICAgICAgcHV0VmFyKCdpZCcsICcyJyk7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgaWQgPSBnZXRWYXIoJ2lkJyk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMCcgPyBnZXRIZWFkKCfliY3ml6UnKSA6ICfliY3ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzEnID8gZ2V0SGVhZCgn5pio5pelJykgOiAn5pio5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzEnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcyJyA/IGdldEhlYWQoJ+S7iuaXpScpIDogJ+S7iuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcyJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMycgPyBnZXRIZWFkKCfmmI7ml6UnKSA6ICfmmI7ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzQnID8gZ2V0SGVhZCgn5ZCO5pelJykgOiAn5ZCO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzQnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBsaXN0ID0gZGF0ZWxpbmVbaWRdLmNvZGUuZXBpc29kZXM7XFxuICAgICAgICBmb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgICAgICAgICBsZXQgdHlwZSA9ICh4LnB1Ymxpc2hlZCA9PSAnMScgPyAn5bey5Y+R5biDJyA6ICfmnKrlj5HluIMnKTtcXG4gICAgICAgICAgICBsZXQgZm9sbG93ID0gKHguZm9sbG93ID09ICcxJyA/IGdldEhlYWQoJ+KAouW3sui/veeVqicpIDogJycpO1xcbiAgICAgICAgICAgIC8vbG9nKHR5cGUpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfigJjigJgnICsgdHlwZSArICfigJnigJlcXFxcbicgKyB4LnB1Yl9pbmRleCArIGZvbGxvdyArICdcXFxcbuabtOaWsOaXtumXtO+8micgKyBnZXRIZWFkKHgucHViX3RpbWUpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGltZzogeC5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQoJ+mTvuaOpeeCuOS6hu+8jOetieS/ruWkjScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoee0ouW8lVwiLFwicGF0aFwiOlwic3lcIixcInJ1bGVcIjpcImNvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXJcXFwiKVxcbi8vY29uc3QgeyBDYXRlZ29yaWVzSGVhZGVyIH0gPSAkLnJlcXVpcmUoXFxcImh0dHBzOi8vcngzMTkuY29kaW5nLm5ldC9wL2JpbGkvZC9iaWxpX1IvZ2l0L3Jhdy9tYXN0ZXIvY2F0ZWdvcmllcy1oZWFkZXIuanM/ZG93bmxvYWQ9ZmFsc2VcXFwiKVxcblxcbi8qKlxcbiAqIOiOt+WPluWIhuexu+aVsOaNrua6kO+8jOWPr+WKqOaAgeWPr+mdmeaAge+8jOiHquW3seagueaNruWunumZheaDheWGteWkhOeQhlxcbiAqIGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC9cXG4gKi9cXG5sZXQgbUNhdGVnb3JpZXMgPSB7fVxcbmxldCBjYXRJblZhciA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKVxcbmlmIChnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJykpIHtcXG4gICAgbUNhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGNhdEluVmFyKVxcbn0gZWxzZSB7XFxuICAgIGxldCBjYXRVcmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4LydcXG4gICAgbGV0IGNhdFNyYyA9IHJlcXVlc3QoY2F0VXJsKVxcbiAgICAvLyBsb2coY2F0U3JjKVxcbiAgICBsZXQgY2F0UmVnZXggPSAvd2luZG93XFxcXC5fX0lOSVRJQUxfU1RBVEVfXz0oLio/KTtcXFxcKGZ1bmN0aW9uXFxcXChcXFxcKVxcXFx7L1xcbiAgICBpZiAoY2F0UmVnZXgudGVzdChjYXRTcmMpKSB7XFxuICAgICAgICAvLyBsb2coUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gSlNPTi5wYXJzZShSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgbUZpbHRlcnMgPSBjYXRlZ29yeS5maWx0ZXJzO1xcbiAgICAgICAgLy8gbG9nKG1GaWx0ZXJzKVxcbiAgICAgICAgbUZpbHRlcnMubWFwKGZpbHRlciA9PiBtQ2F0ZWdvcmllc1tmaWx0ZXIua2V5XSA9IGZpbHRlci5saXN0KVxcbiAgICAgICAgbGV0IG9yZGVycyA9IGNhdGVnb3J5Lm9yZGVyc1xcbiAgICAgICAgbGV0IG1PcmRlcnMgPSBbXVxcbiAgICAgICAgb3JkZXJzLm1hcChvcmRlciA9PiB7XFxuICAgICAgICAgICAgbGV0IG1PcmRlciA9IHt9XFxuICAgICAgICAgICAgbU9yZGVyLm5hbWUgPSBvcmRlci50aXRsZVxcbiAgICAgICAgICAgIG1PcmRlci52YWx1ZSA9IG9yZGVyLmtleVxcbiAgICAgICAgICAgIG1PcmRlcnMucHVzaChtT3JkZXIpXFxuICAgICAgICB9KVxcbiAgICAgICAgLy8gbG9nKG1PcmRlcnMpXFxuICAgICAgICBtQ2F0ZWdvcmllc1snb3JkZXInXSA9IG1PcmRlcnNcXG4gICAgfVxcbiAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCBKU09OLnN0cmluZ2lmeShtQ2F0ZWdvcmllcykpXFxufVxcbmxldCBrZXlzID0gT2JqZWN0LmtleXMobUNhdGVnb3JpZXMpXFxuLy8gbG9nKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhrZXlzKVxcbi8qKlxcbiAqIOe7hOWQiOW9k+WJjeWIhuexu+mTvuaOpVxcbiAqL1xcbmxldCB0cnVlX3VybCA9IGdldFZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxcbnRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD8nXFxuZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICBsZXQgY2F0X3VybCA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIGl0LCBpdCA9PT0gJ29yZGVycycgPyAnMycgOiAnLTEnKVxcbiAgICB0cnVlX3VybCArPSAoY2F0X3VybCA/ICcmJyArIGl0ICsgJz0nICsgY2F0X3VybCA6ICcnKVxcbn1cXG4vLyBsZXQgcGFnZSA9IDFcXG5jb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV1cXG5pZihwYWdlPT0xKXtcXG4gICAgXFxufVxcbnRydWVfdXJsID0gdHJ1ZV91cmwgK1xcbiAgICAnJnN0PTEmc29ydD0wJnNlYXNvbl90eXBlPTEmcGFnZXNpemU9MjAmdHlwZT0xJyArXFxuICAgICcmcGFnZT0nICsgcGFnZVxcbi8vIGxvZyh0cnVlX3VybClcXG5cXG5jb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbkNhdGVnb3JpZXNIZWFkZXJcXG4gICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KCduYW1lJywgJ3ZhbHVlJylcXG4gICAgLmdldChkLCBtQ2F0ZWdvcmllcywgcGFnZSlcXG4vKipcXG4gKiDojrflj5blvZPliY3liIbnsbvpobXpnaLmupDnoIFcXG4gKi9cXG50cnkge1xcbiAgICB2YXIgc3lsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHRydWVfdXJsLCB7fSkpLmRhdGEubGlzdDtcXG5cXG4gICAgLyoqXFxuICAgICAqIOWIl+ihqOaVsOaNrua6kFxcbiAgICAgKi9cXG4gICAgZm9yIChsZXQgZGF0YSBvZiBzeWxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgLyorICcvJyArIGRhdGEuaW5kZXhfc2hvdyovICxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLm9yZGVyLFxcbiAgICAgICAgICAgIGltZzogZGF0YS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBkYXRhLmxpbmsgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRouWKqOaAgeWIhuexu+aooeWdl1wiLFwicGF0aFwiOlwiY2F0ZWdvcmllcy1oZWFkZXJcIixcInJ1bGVcIjpcImpzOlxcbi8qKlxcbiAqIOS9v+eUqOivtOaYju+8mlxcbiAqIDEu5o+Q5YmN5bu656uL5aW9IOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqCDnmoTlr7nlupTlhbPns7vvvIzljbMgZ2V0IOWHveaVsOS4reeahCBjYXRlZ29yaWVzXFxuICogMi7orr7nva7lrZDliIbnsbvmlbDmja7nmoQga2V577yM6LCD55SoIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxuICogMy7nhLblkI7osIPnlKggQ2F0ZWdvcmllc0hlYWRlci5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcbiAqXFxuICog5pSv5oyB6ZO+5byP6LCD55So77yM5LiA5Y+l6K+d5Y2z5Y+v6LCD55So55Sf5oiQ5YiG57G777yM5Y2z77yaXFxuICogQ2F0ZWdvcmllc0hlYWRlclxcbiAqICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcbiAqICAgIC5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcbiAqXFxuICogQHR5cGUge3tzZXRTdWJDYXRlZ29yaWVzSXRlbUtleTogQ2F0ZWdvcmllc0hlYWRlci5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSwgZ2V0OiBDYXRlZ29yaWVzSGVhZGVyLmdldCwgY2F0ZWdvcmllc0tleToge3RpdGxlOiBzdHJpbmcsIHVybDogc3RyaW5nfX19XFxuICovXFxubGV0IENhdGVnb3JpZXNIZWFkZXIgPSB7XFxuICAgIGNhdGVnb3JpZXNLZXk6IHtcXG4gICAgICAgIHN1Yl9jYXRlZ29yaWVzOiAnJyxcXG4gICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgIHVybDogJycsXFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiAxLuiuvue9ruS7juWIhuexu+WIl+ihqOS4reaLv+eahOWtkOWIhuexu+eahOaVsOaNriBrZXnvvIxcXG4gICAgICogICDmoLnmja4ga2V5IOaLv+WIsOaVsOaNruWQju+8jFxcbiAgICAgKiAgIOS8muiHquWKqOi1i+WAvOe7mSBzY3JvbGxfYnV0dG9uIOeahCB7IHRpdGxlOiBpdGVtW3RpdGxlS2V5XSwgdXJsOiBpdGVtW3VybEtleV0gfVxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gdGl0bGVfa2V5IHRpdGxlIOeahCBrZXlcXG4gICAgICogQHBhcmFtIHVybF9rZXkgdXJsIOeahCBrZXlcXG4gICAgICovXFxuICAgIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5IDogKHRpdGxlX2tleSwgdXJsX2tleSkgPT4ge1xcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlID0gdGl0bGVfa2V5XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsID0gdXJsX2tleVxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxuICAgIH0sXFxuICAgIHNldFN1YkNhdGVnb3JpZXNLZXk6IChzdWJfY2F0ZWdvcmllc19rZXkpID0+IHtcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleVxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiAyLuiOt+WPluWIhuexu+WktOmDqFxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gbGF5b3V0IOW9k+WJjeeVjOmdou+8jOWNs+W4uOeUqOeahCBkLnB1c2gg55qEIGRcXG4gICAgICogQHBhcmFtIGNhdGVnb3JpZXMg5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGo55qE5a+55bqU5YWz57O76KGo77yMXFxuICAgICAqICAgICAgICDlpoLvvJpcXG4gICAgICogICAgICAgIHtcXG4gICAgICogICAgICAgICAgIFxcXCLlubTku71cXFwiOiBbeyBcXFwibmFtZVxcXCI6IFxcXCIyMDIxXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcIjIwMjFcXFwiIH0sIHsgXFxcIm5hbWVcXFwiOiBcXFwiMjAyMFxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCIyMDIwXFxcIiB9Li4uXSxcXG4gICAgICogICAgICAgICAgIFxcXCLmjpLluo9cXFwiOiBbeyBcXFwibmFtZVxcXCI6IFxcXCLng63luqZcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiaG90XFxcIiB9LCB7IFxcXCJuYW1lXFxcIjogXFxcIuaXtumXtFxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCJ0aW1lXFxcIiB9Li4uXSxcXG4gICAgICogICAgICAgIH1cXG4gICAgICogQHBhcmFtIHBhZ2Ug6aG156CBXFxuICAgICAqIEBwYXJhbSB1cmxMaXN0ZW5lciDpop3lpJblpITnkIYgYnV0dG9uIOeahCB1cmzvvIzpnIDopoEgcmV0dXJuXFxuICAgICAqL1xcbiAgICBnZXQ6IChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UsIHVybExpc3RlbmVyKSA9PiB7XFxuICAgICAgICAvLyBsb2coY2F0ZWdvcmllcylcXG4gICAgICAgIC8vIOWIhuexu+aJgOWxnuexu+Wei+eahOWIl+ihqO+8jOWmgu+8mlsgXFxcIuW5tOS7vVxcXCIsIFxcXCLmjpLluo9cXFwiIF1cXG4gICAgICAgIGxldCBjYXRlZ29yeV9uYW1lcyA9IE9iamVjdC5rZXlzKGNhdGVnb3JpZXMpXFxuICAgICAgICBsZXQgdHlwZXMgPSBbXVxcbiAgICAgICAgLy8g5qC55o2u5a+55bqU5YWz57O76KGo5ou/5YiG57G75YiX6KGoXFxuICAgICAgICBjYXRlZ29yeV9uYW1lcy5tYXAoY2F0ZWdvcnlfbmFtZSA9PiB7XFxuICAgICAgICAgICAgLy8g6L+Z6YeM5Lya5ou/5YiwIOW5tOS7vSDmjpLluo8uLi4g5YW25Lit5LiA5LiqXFxuICAgICAgICAgICAgdHlwZXMucHVzaChjYXRlZ29yaWVzW2NhdGVnb3J5X25hbWVdKTtcXG4gICAgICAgICAgICAvLyDov5nph4zkuIvpnaLlr7kgdHlwZXMg55qE5YC86L+b6KGM5aSE55CGXFxuICAgICAgICB9KVxcbiAgICAgICAgY2F0ZWdvcmllcyA9IHR5cGVzO1xcbiAgICAgICAgbGV0IGluaXRfY2F0ZSA9IFtdXFxuXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgICAgICAgICBpbml0X2NhdGUucHVzaChcXFwiMFxcXCIpXFxuICAgICAgICB9XFxuXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wID0gSlNPTi5wYXJzZShjYXRlX3RlbXBfanNvbilcXG5cXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIOmBjeWOhuesrCBpbmRleCDlsYLliIbnsbtcXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3J5X25hbWUgPSBjYXRlZ29yeV9uYW1lc1tpbmRleF1cXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzX2tleSA9IENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllc1xcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXkgPyBjYXRlZ29yeVtzdWJfY2F0ZWdvcmllc19rZXldIDogY2F0ZWdvcnk7XFxuICAgICAgICAgICAgICAgIC8vIGxvZyhjYXRlZ29yeSlcXG4gICAgICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICAgICAqIOWcqOesrCBpbmRleCDlsYLliIbnsbvkuK3pgY3ljobor6XlsYLmiYDmnInlrZDliIbnsbtcXG4gICAgICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGVdXFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gZXNjYXBlKGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybF0pXFxuICAgICAgICAgICAgICAgICAgICBpZiAodXJsTGlzdGVuZXIpIHVybCA9IHVybExpc3RlbmVyLm9uRGVhbChpdGVtLCBzdWJfY2F0ZWdvcnlfbmFtZSwgdXJsKVxcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICMwOThBQzFcXFwiPicgKyB0aXRsZSArICc8L3NwYW4+PC9iPicgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIHBhcmFtcy5zdWJfY2F0ZWdvcnlfbmFtZSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcnlfbmFtZTogc3ViX2NhdGVnb3J5X25hbWVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMuQ2F0ZWdvcmllc0hlYWRlcj1DYXRlZ29yaWVzSGVhZGVyXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6KeG6aKRXCIsXCJwYXRoXCI6XCJ2aWRlb1wiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvZm9sZGVyL3NwYWNlP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cF9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJnNpZ249MGE1MWI3NzJmODFkYzc4MTJjZDY2MjI2YTgzMjUzODMnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLmRhdGE7XFxuZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5uYW1lLFxcbiAgICAgICAgaW1nOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjXFxcIit4LmlkK1xcXCJAbGF6eVJ1bGU9LmpzOnB1dFZhcignY2hhbmdlJyxnZXRWYXIoJ2NoYW5nZScpPT1pbnB1dC5zcGxpdCgnIycpWzFdPycwJzppbnB1dC5zcGxpdCgnIycpWzFdKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3suWIt+aWsCdcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdjaGFuZ2UnKSA9PSB4LmlkKSB7XFxuICAgICAgICB2YXIgbGlzdDIgPSB4Lm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxuICAgICAgICBsb2cobGlzdDIpXFxuICAgICAgICBmb3IgKHZhciBhIGluIGxpc3QyKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QyW2FdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IGxpc3QyW2FdLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2NvbGxlY3Rpb24/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pZHPvvJ/vvJ9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJ++8hu+8hmFwcGtleT0yN2ViNTNmYzkwNThmOGMz77yG77yGYnVpbGQ9NjEzMDQwMO+8hu+8hmNfbG9jYWxlPXpoX0NO77yG77yGY2hhbm5lbD1tYXN0ZXLvvIbvvIZtZWRpYV9pZD0nK2xpc3QyW2FdLmlkKyfvvIbvvIZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKyfvvIbvvIZtb2JpX2FwcD1hbmRyb2lk77yG77yGcGxhdGZvcm09YW5kcm9pZO+8hu+8hnNfbG9jYWxlPXpoX0NO77yG77yGc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdE77yG77yGdHM9Jyt0cysn77yG77yGc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNycsXFxuICAgICAgICAgICAgICAgLy8gZGVzYzogYVsnbWVkaWFfY291bnQnXSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veeVqlwiLFwicGF0aFwiOlwiZmFuanVcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2Jhbmd1bWk/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcbnRyeSB7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLnJlc3VsdC5mb2xsb3dfbGlzdDtcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXCLlroznu5NcXFwiIDogXFxcIui/nui9vVxcXCI7XFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcIiB8IFxcXCIgKyB4LmJhZGdlO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73liadcIixcInBhdGhcIjpcImRzalwiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvY2luZW1hP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5hcmVhc1swXS5uYW1lO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3mlLbol49cIixcInBhdGhcIjpcImNvbGxlY3Rpb25cIixcInJ1bGVcIjpcImpzOnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KE1ZX1VSTCkpLmRhdGE7XFxudmFyIHJlc291cmNlcyA9ICcnO1xcbmZvciAodmFyIHggb2YgY29kZSl7XFxuICAgIHZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMgKyB4LmlkICsgJzonICsgeC50eXBlICsgJywnO1xcbn1cXG52YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzLnNsaWNlKDAscmVzb3VyY2VzLmxlbmd0aC0xKTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pbmZvcz9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJyZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGUmbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsnJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZyZXNvdXJjZXM9JytyZXNvdXJjZXMrJyZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9Jyt0cysnJnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7fSkpLmRhdGE7XFxuZm9yICh2YXIgeSBvZiBsaXN0ICl7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6eS50aXRsZSxcXG4gICAgaW1nOnkuY292ZXIsXFxuICAgIGRlc2M6J+aSreaUvumHjzogJyt5LmNudF9pbmZvLnBsYXkrJyAg5by55bmVOiAnK3kuY250X2luZm8uZGFubWFrdSxcXG4gICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHkuYnZpZCArJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBjb2xfdHlwZTonbW92aWVfMydcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaLnmbvlvZXvvIjlup/lvIPvvIlcIixcInBhdGhcIjpcImxvZ2luXCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKCdMbGUwbmF5ZHN6UTI1MEloT3lkUkExa0pyMFhuTmEvckZsc2ppRUtaVzdyZXRaRmV1SE5KbFBLV01FNGE5QmNmQjlCMGhUYXdZTTh2K2hFd3pGM1JWTjJzUi9pSDhOdnlIWTZ1ektOZ2pNYko4NUdMRWcwSnlqUEl0ZkdHUmd3SkZVVk5MMUlMZVJOYmFlMzlYVnJvRDdXS1VLQlBmdjdId3FqMkhZRkg1dVFMcE9WWnZHNFVjWU96QXM3ajhOaWFQRVVKTVM0MjRCa2JuczFOZjZGSURYbGZrTklJc1dCSFdSZE82bXA3M1Z5MnZ1NWhnMWFHMEFWZWs1K3BRY3Fha3hFTTljV0dnQ0pDNW1LcFVpWlNFdFA5MnNLQTlTSysvTkhzcWYxM0NPdFFSaWl4NmdGaHlGaExlejcrR3B1U2JMSDEzazFGRFVaa2lsWTdPQlA4eUNaUCtZbTQxWWhpL3lJVHgzRWxMbWdqaUJleGowcVRManJLSVhueDRERFhpaXBTdy9ZcFVOZHF0Z1VYSE5pOThhN2NHdExFKzk1QXFrMkRjVi9IM09HNWhwc3dTSEMyK2lsclJMUDgrVHlMVG9nckZVYUpZTXhPbXJXd0FqVU0xRmZMcy9NU3g2MDFXL3VlRkRBbWhPL1pab1Vad2YzTVliaHRrditCeGd5Ry83NldmREFRYkdBUko5NE5halo5cHp6dmN1WElFcmdyMUQvUHVnRm1oT1dIay9NU2RGRGxCcU1EcEU4eDk1WWo2dEw0d0ZzdzJPYUdPb2U4TWhzbmlGWUVGOEJxTVBSZWQwejdjQkM0Ukd4RDVOZ1YxRktXSEFQZ1pQWUZLamdPOWdsTkp2NzFJU2dJbzlTS1JCRWpLbUU0Y0V2Yi9rSkVPQ0VETGpCUXJWc09UMTFPdVpjWnVkQ1pFT1R6bXJpR0hkUGZmbEtCckZzRWg3eWxVdFBaWUVjRXBDeTFXaDFlMVl4TktaaGJPdWswMnd0QTdGZkhOUDBEcUlaODNGOFJGRzM4UlkzNmZGSS8vekxwQ01FTThVWGh6bGp3NXFvU1B2emZoZVIxL0dGM01qakZmc3pYWjNVQ3ZjQmcyd0MxT2tBVktwMHVTY0dMbWVxNlFhRWJRTjJ1bnowMnBwRlY3ZUs5SDczeUQxRUVsTktDUUNra21CNmR4cHF0a1Y2SmhSc3hpZ01jZVhuNGRVR3QrQXRma0EyS3Z5bWU1cmt1cHBCY2VGdk1maElGc3hZR1IyVUU5K294NmtmbFlCdFBwNTVRNnVsSUt5ZGhyazVUQVR6TTJpdjlmOXhxWXBKSUlCbnRJVklvZjNPYW5ISldyRXR4UTJjMWdjdk90L1diRS9sa05kclEzM0lPWXJPRmIyY2JaNE0vbGg1blZ0emlqdnBZZTBNNk81ditJb1pNcE9pVnFzZTd5TmlYaEFIeEUwNXppaVZjajlwaXpwV3pJZWJ6TzRnK0trYXFKckJTNnl6NVFYbWlGY1dWRVNJSUlvdllIZUNLUkRMZ0JvanFKZFRlSVhhUi9LZTQ5c3QwM1gySFJ3MnIwQjBNbmlmOHRFUGRhMWdsY0JMc1RFWkVXMmhia2R0b0VpY0lSRnZraTU1eDlIUXRRVDR6cDJUV3AzYXU3VEl6d0RpdENVYmJET1YxekZnU0hoMDg3M0xseUJLNEs5US96N29CWm9UbGg1UHpFblJRNVFhakE2UlBNZmVXSStyUytNQmJNTmptaGpxSHZESWJKNGlCcCt4WGhqYysycnZpRGFBT3lGQzl1bHZreHphK1RXNE1hdDBoeHRZRHJJbCtEcG91ZWp5SU1UVzhEc3ZYeFBYQ0FRYm13R2xERUFmT2l5cXRxTFE5SGY4Z0RYRTM1UTdheTB5QUJFZWoxcUtXZ3JqL1luQmJZL2RZQU9QU0hwbWxkZEZMSm5LcEFwZE1YdllCc3dyV0YwQ1JSU2IxczdDWlJnTWZPUXpLNkl6Ni90ZWhhc21PczdNbDl3L0hwbjVuS2gxMCtuMGlHWE12eDVJSStTR3BvTHVlQ3RSbUo3VVZWQ3RERzZ4ZXZ4WU1tMDRzQUdHR0phQ0RBaEdIOGljYmhJRTJiK29xREZFcG1VMGVZN1J0Rzc5aFBoTCtnWFlPeVlOVXZKcWVqbGJaMS9PZHZMNW5ZeTZtMzBHd2wzejd3NWVzbFpDVUEwa2FSczVrbVVPTHZMMFFRUEQ3NGZhZ0FkcUdzTEhVR0RXYjRCekNMRjJNWUxIeStEc2NrSzNGWUpNdzBVNXFON0w3MDBzVlNhbGY2dEs5NmRXcXpuNWVJcmV3ZjFpR284M0ljd3o5bzgxSm11S0ExTHBJU1M5MDk4bndBeDFxUDFGelBjd0loVFNWdVI4K0FvbzFwM0RpMFdMd05LUU5PSTh4NzVEbWFFNkJMUGlEa2FETEtKeWMrYnpYMGhJQzNzUGIyK2Rmdmxrc0NuSzIyY0doSzI1RnM5T0ZSM3JGL1ZGVlNSYkRHNys3QXFPa0UyNGJva0VVamQ4blM1SGpxcDNEL3VrKzBYekJ5OTIyMlg2YkptSmh3RmxLejQ2VEJWWGV6em0zZHpRVzdPbCswT3FmL0V4MkFZK3J3UCtNNnhGUkhVWC9qMkdjR2E1bWhiSlV6UlJCZE81SXByVTJOczZIdFNYQzlJcWN4VzFWbDViQ09iTUc5K0h2dnp1MHNHN0FXTmd1WkpDc3hrSlhoaGd3ZjJHQjZGUHU2K29GUno2RDRBMDVzc0RzTExWeW1aNWNnVGJEY2JlcTE5VW1pWWFtM1BuN3FXSWNqdWg5T3NONHRpRlRyclVFUFpJUlg5WGswVUdEWWZhYlExcFhmeE0vK3lTaDhxN2R3blZKL2c3bHVpaEdPZWVOd0hYQUZBeTRuM2FjUEgyWEJjL21zeDVYS2dJcmVPUk1WWS9jRmI5S2NtM29XWnp6SzYrSFNQODV0a0ZLS201NWhnOE14d2k1SXg5UlFFL3BHQXgxY3NvdlNwM2pSUDBoNjJvNk5oRmt0Q0RLV3pqRVVsOWJtYTI4Zlp5aVk0ZFhCRXNIQk9wS3ZCekFBMGxSa2V6VG5FdnZYczlaNTVVckFhOFpoQUZ1eDZaRU53NGNNVEl1U2tWZncrVi9VL21vbWx0Sjl2R1BnaXFiNW5abDlLdTdkMFJPVjE1SjNRQXNiaE94VDZTZ2tJVnVndVZhVFZSY2owSFcrbU1OWUtiUXluck5SQXFLRGVKcXVWeGM5SGxQTTZMOHFQblpJV2JiSEFmVWZHYncwbFJsd1N1T3BGNytBMldKTFo0WHpTZ0hiY01Ya3VselBQRFA5L2NhUklCOGUyVmt6RVpTUG5VaVpBcFdQNndXdXNIdUIzOVdBTTc4K05CaTRCcDJteFdqTEtITFdRTURlSVhYaGR4ZWNLNXFVVWZZTGdJVGloOURlRnBnTE5XY0JMR1FGYmRTTmtKM05XcGNHNTZEYWpESXVMVWE4azAwaTk0Y0p3QXpNa0pCeE5KYjVlaEJSa1Z2V1hvc210SkJNZFJmNk5FYnNWOXU4dnBaak5Fb2dVa25tbHRKOXZHUGdpcWI1blpsOUt1N2QxWnFUUHpvcHdaaGgraXREcFViMExyMjdjNXdOQUFFanJwaE9xZmUwTmozOUNOVzBMSDRXeGpmMmx3bHhNdE9LUjFIUUwvQ1B3NTF5eVlKL0xWclF6K2lmM2lJQk5VNG5DZ09idVc1SlVMVHZzUXNzMlJuZUxDdzZycGh4Z01zZGF3TUVnWjlxQ3JDTTd5VE0wRXlsRnhmamlJWktxYksxMEJhZTJOb0hEK0d1b1VLQVFwNVN1NEFxWFNmS0x6bXg0aFdibVNpTlY3bUNCL3JkdzF5YnNQdmdBRmNHODVONTNrTmp6Y1B2YktMT094SFhIWVZXQ2xCbUpwcndKdEhBNkIxV1pwR1dSeDVNL2dEbXNHelZSbVZ1QkR2bVNBWk13SWVWcjViekRFODZtME5xY21nVE5lcHh3cUIreUJCcDVLemQ0MkVBUWh0MkVLNVQyek14dmdUemVTL3ozSy9xNWxSSGwxekswSi9zUXdMeDl6OGxNVmc5UkJiQWUvZWIyMFZvd3pjcVBkZS9xaTBqSE13R2NNYUM5ZHV5VzU2d2xHT3Nua2JleUJRL1BmUlNTcmtVRy92Y2FDYlRhNElUODRaenRwTlFSdmJlVW5JQW9Qa1cvZVo2d09VaWE0SnN5YXc5OVdhOCtFNExqRG1aMHpSaG5TSGdVeUMveWI5clpUMmxFMVM3SkJJazdZWlBYeUEwMGEyTGdLRkc4OFl6VjgwaGkrQVZUd1JaUGs5d2xPN2dSUzJOUi81NzduSXhHMEgyMmxsRnNjbU4xTGhJOTFGRDJWYlZYYnFpS1VWakpjVm42L3NRY1R3d3o3dHZCNno5eU1tckRseUNNdnlVZHdHSTZ1cjlFYWM0cVc2RVV6MXhIMnk1VEk4QWZoeHh4T3JBUVpuRVJiVE1JQ2RmS0dRR0RKZS9UZEtSS1F0Z2JwYjVNYzJ2azF1REdyZEljYldBNnpEUHUyOEhyUDNJeWFzT1hJSXkvSlJOZHZzWDZEbEtkWXdMbkZVUWoydDZIUUhodGprT2xpK3RjT25SbGpBYTMyb3JmeDc5Vk91dmlOcSttT3FSMU4rQ0dSRjJibUtVMWtwREFyeDRWekRkV0pkZEVyYStPa0ZuT05FR3o0WWVjd0VSWlVkNzcrbm5QTDJNb0NNbUVEWWN2WElzMkV1Wkhka1RmbjFpd2VvZ0QwMVFmd3FaSE5GOEh2bEJXTVUvZjZFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FSNWViTnl4cUZYaExjMitvZWRLOEpFb0xvTUVRNUQzZkphcllnZDlqeTZmT2lCa0c4QzlJSVRCOG15dHl5c3djS3R3aHkxLzFXYkhPN0N6L1JkcVZjeUozNEEycTJaM3l1aTFRNWExb1BtTzBOV0xmbnlhNCtzUk5RcmtzaVE0SHVPMjZHYVpVUjhrV3pGMU94ZGR1YVBWeElOTWI2NThjc1hWdURHWjVNWXBXZGJja0ZXNmVZUEZpdSt4U0RDL2VEenNYQUg2RkwzUFY4T3BEVVBCbXBUZWsyWFhmZUtkcVUycFM5bTdTQ2lDQjV1MnFiaUtDMmM5dkJWMjRNNnM4UmE0aG1kK1BhajRGVHl0djM2U0gxYkxLOHRJMWxaeit3aWYrOVpJQWRUMjJjcjU3anEreXBNUGVOMXk1OURxdjdwc2hEK0pUSThVZ2RTNFFWbEN3RjE3WXJ2SkhQRDQyS0ZFYmdRWSsrMGowZGFseUhZY2dmNThReUFsOStubkJKWlZVVmxJaWxRNnFFUHNIemI2ck1iVjY3WVNxWkhjTHZmQ1RvYlJpNHBhQkNFVXhjeU5MUXZKU0tjS3BaQXVmMis4Szgxekt5ejNNZEVjdXJ0c2huc3hRQStvY0RDMk95NThpeUNLNmRTaklyVFBpRkZRODBCbXBhMkQzbHNjTFZtWTVJUjRvazl0Z2RCZVhJNlhaOHUyazlLTEpXZCtGcXNmOFlPUUd4TzZFSDJjQ0tPMnUwKzNGL0dPejYrL09ydXRMYWhxUjJta1ZHSWRKS3VYZVlHc1puREJnZUpnQkpaOHJJSEMwQzBOV0xMeGlqTExGSmZ6aTBwekdJUkhXNExBSkFoTy9mTHBTTDUwUmxyaE1ZdmJRczRvWnUxcGUrNzlYVDVSUjg4ZGxYczFyNkQ0c0pIWWg2Kzd4M2tQUXVNbHM5cmMxbnl3ekJkbDM1Q0laeEV3NmNBQ2pQOFk0ZG42endOWVBudDlRbUcySVY0WjRyTVZ3STVwWlFpbVY0Y0IxSnlwL3lLM3ZPY0ZlcFdiYTBpTkw3eEFoRUdEdHM4STdoSy81TkhTQ3p3czY3VFNrSjhVSHl3R2t0U1RKQ1QwMTV5cFFDYVNuS21PT3FVaW14Q2FoZlM0ZTRmOVh0ZkJsU2xHV2NaK3l5dkxTTlpXYy9zSW4vdldTQUhVOWp4c0NQMnBLOElwSDhqUnlhRHhhaUdGTHhNbVF4YzVrRGdnNnZHZFA2S3kyNEEyQTBlQmllWGJnUGZYeUhzODJSNDU2OTIySnowcFZBR3NqUDQ0M214aUUrbzZXdjNMbmRubTArRi9RMUhrdjc0UGR2SW1IRE40dXJHRjh0RUIrRGxDRlErbEZTcWgrYkNQSXZoemhlNk54enE4RGgraW96dW5aSW9mSXpyaW8xZ2NyQmZCMFFZZGpYRzBGVFI3cGRONTRtMk1wdkVIMHlmdEVvMTlucnZMSzh0STFsWnord2lmKzlaSUFkVDJ0SFYvQ1BTc0t0N3p3Y3l0YUdyTGFhbzQyRDIyc3N3VFJMUGFHL3E2R2k3RGpFaGh3S2xCeGpqdzdJTXl0SUkzTmtNOGNiK0p0RXlmOHdGa1RFRmlGTFVZaW1RL2hQWEk5M3pyWGsrK3Zxb2dMcnUwdGFYZ3RsTTE3cXRBZnpHUXU4eVVkSTRxcVl6ZUp4WHhmME5OWjJvQmplRHIyRGl3STlPWFBVdUJIYnNMNGMzL253MTBFbTJVNk1GQlVjclpqL0RNYVNGeFZjWjdNb1dsMm9uOEdtMFZvd3pjcVBkZS9xaTBqSE13R2NNZjl6NDllZ1pSUXpMN2hLU1VNNVRQdDM3QW1rMzc5Y2N3cEx0UFRUMjNCaDdVaG5rZEcwR1VvSHZIc3k5OUd4bVFhUjRuYXlPL3JRRmJvcXVzdFNGTHJPODAvUHRuSDhFSmN3UWFRWVpKek4xYjliRDZSckpsNnpRSW9td01mWXV1K204RnNPN3pkNC9jZnI2aGlPZWJIU0tabURQRmQzWFJKZS85Q05uTEdMWVhKTHJZdkV2dEZ6d0Q4QTNuM2RoWFdQaW1rQWlzRjBSKzdQaFE5VkpMV2NHaDh0cUtnb1ZvWjdrekJHdUQ3U2g5YysyU3IrU0FHSDZhSEJUNEZ0MWVzd1VuYitmbkpHaGFIU0MvU3ZvektDTG1XTnJQUTk0YVp1WXlPT3YwZmxQVTlQdjlLT1FVeSs1VXVkbE12dHFsN0JJSmZvNFBpaC9sSzhlMU5HOUpOMEQ5TUx1MmY3K1VCQmNnbmNCOUVodWNLUUNKc1JoUExnWnBYL3Irc0xnbmJTMUhjQks1NnY3cU5tUFFZemxNTHdnVUZRRjdBZGV3VG9lL1lpdUFicWNLY00xTXdMZkk0YmUvZ25HNGM4UjRVOUJQMUdsODFaNVRMWmZXZmUxeDZWOEd6Skk5ODdWdUsyWTcxMG5sRXNJVUFDcDBEQStwM2I2cXcvYkVVRzBib0xQem9OcklUR3RPSXdFYnVYaUFqeGt2aHMvSkF2d0lHNjV2Nm9OU2s3WXhKWnpGTm8rajFmSWF6MCtGQmpXNWNXZitzaU9wM3ZZaGtYV281U2w2YUM3blFyOUR6aE43MFRPaTluQnpIUVJGbFIzdnY2ZWM4dll5Z0l5WVFOaHk5Y2l6WVM1a2QyUk4rZldMQjZpQWRRL0RGN3d5SDk5eklwcklOVTROeGV2YjZIeVZKUGs1MVhGQjFTSWdTSXJycHozRWozSitWaWdwZ0ViaFZaNnFzRmw4QW4yVVlwQWwzeEx5MXVjQkYyeEJ1cVpLWWJwSlV0RDlGd0dlUmtWeUUxdEdxakh0UVloL0lNZ3F2ZmF5TFpCeGlPK1YzVEMyVlBGejJyb0N4eE44SUx6eUtDY2N4SVk2RVlzZzJ3TGIxYjlCK3JXSDRHOE4vcmdDOUQwclhyblFLRWJZcCtsWFhsdHdFU1FnUHpyYjVFb1JQdHk5ZGlibFNCYnhyNFB3RWwvR254UmxGWnBZazhEeWZGSmR1TjgxMjFYNW1SV0tVNjY5bXVHM2pJNExzWHJobDZCVlZNY1hOOWthcTlxek9yMnZUZjZJczVPelYreGdRTkJEc01pZHNKNS84K1UrWkxYb29rdFM3ekI5RGp5RW5UUXhXWE9uaEl3NGs3V3pqNnBtK1pJNVcxTjMwUWJWQitRZk9JZkZ6a0E4UjNrc29EdUl4ZmtnK3NZNmtQR3M3TWNyU1dFMncwV1paVGNpRG9tVE56L2EvQUFSR2FLTEUvZTRrZzFyMHBTRWQ1THFmdjJHUEQwQ1ZHK0lJUnNxOTVITUZyWERJZmYvdzliTEs4dEkxbFp6K3dpZis5WklBZFQyeDlKY2R4OC8rRU1MNnNGK1JCaFpPSWl6ZG5VQ2N2akx2RTNkdmpUMlhCaWNkUUZ6NzFHU09lZ2pnK0hmeXNUYTk0cDQ2VXMvZytpdVdIQTJzZEh1RUdZU0VuUWwvMVhrckdJMXdPcUxjNHhXL1R4ZmNKT1NCWTFmT0kyV05BeXBLU0ozWExxMWI0YkhscTZCVnhSbDdaR3BYSUErNFRqaGpjTldEM2hXMGhRcm8wNjgxdEh0ZzcrYmp3Q3NQa3ZNVXowRzVrUFpobS95cDFadWF5RzhhK2huTEFzdnUvTWxLblBZd3JsVEZQRUxQQ3pydE5LUW54UWZMQWFTMUpNa1J5Q0d2eGFUa2tRL2lmRjdLZHpWbnh5UTJjODh4UXdHY0p3YjVpRndUSXJMSzh0STFsWnord2lmKzlaSUFkVDJlbVd1NFdENUpMOXBZUXlzNnV1VGpwVW55M0dDQnF0bWxTRjdXQXFiL1NETk5HenlOUTdmYThjejZvMkJ1ZUg3bnNld3RMcldJODEzOWtEWTdidXdJSmxaUE5yUU8xNG5LQzRGUmRZVGQ2dEdMUnpkenBSUTNZU04xZWJvcUx5RGFpRHR0MkVlbzJTdU9OU1hES2tEUFV0RE4veUVYaENRY2dVTjdvTEowcDlUVGdzQTRJbTkzUkwvSFhuRVp2cXVlZWhFTjBSZ3V5aUVrNnhmcWp0Ry8vcXJvZGZYWWRaMlhldlVBMGUzUTFPRHF1c29nWjY5TlBUd2NNSUlFQjlPamxDZENYdERsR0Zpd1loOW5zS2FXWVoyaFp6OXBhQUE5NjV5UkNSVDZGU09MeGFuUmhvMkVzbEkvZXhkWTNtNmhuYUZuUDJsb0FEM3JuSkVKRlBvVktTZVY0SGMySytQSHBkbUFVN2xDaTBuQzh3UzZMVnBNU1MxMkI0em0ySml5Ly9yM3JGckNqODl3Q1ZNNHJXTWVIakdORXFJT2tjQUtJcGhUbjhOKzN0V3JMdWV2SkNXOHVDUG1ScU5CSXgzbzV1OUFnZzJDb3hCY2JlS2hTa2d4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWnM4UVgwdzMzMFJidCtuK3FmR09LZ2x0VGk5VFVJRStuYWtPd0JVd2xHekdDb3ZjakYvZXNlWWZpc1Qxa0FUWmE1Q0JwUkVoK2ZuYzNMZXRMaDZsSnpiUnpDT1U3aHZZbWZxQ2ZRSUVFMkxLL3dudW83eEtGTTV4dTd3ZGNiWWw3TEs4dEkxbFp6K3dpZis5WklBZFQyK2lGd0QwODdlblM5UW1uYys2VHRHd3lxY3N6dXo2ajAwQkZJUy9TYk1WaG5KQUMrWlFXU29PWVNzemtlblBZbWtTOXlGY1BsRmZqQlptaERpZHlLbnNzcnkwaldWblA3Q0ovNzFrZ0IxUGJHYTJJTDJ2MEpMKzA1eXFwRWsxUlhSc1BkZHF1OUcvZ1pCd1l0YjAyLzY0TEpVYzdtWnR3NUt2LzRVODRvZi9ad2w0YnBxRjlhejVOSnJLS2tGL3hpeXl2TFNOWldjL3NJbi92V1NBSFU5aCt0bDlReGk4N0syaCs1L0I5V0hnekg3WDFpeTI5T1pDb01lbFhEK0NsVnl5dkxTTlpXYy9zSW4vdldTQUhVOWlFU01Pb3ZNa0I3YXZXYWdxZFZBWlh6Yy9nYnBPbHgwZ3NGamhQd24wdWhMZTEyZWZhMG1vVTVaK3hhc2RaTC9HQ2o0M3RDVkJUbUZVTHJ2VGl5Z3BhR2RvV2MvYVdnQVBldWNrUWtVK2hVR2hHN0xqQU1YaGt0RVhidXJHUVpubWN0QkxhVC8zazh0TmJIQXBWZ0tYakxLOHRJMWxaeit3aWYrOVpJQWRUMjNsd0tyNmNoQmEwVjBCenRQekd1SXpGWGJsUHg5Q1BqaWFXWEhoL3NpTURMSzh0STFsWnord2lmKzlaSUFkVDJQNGwwMkJ1S0JERTMwa3Y5QmJGM1NuL3hJOHpzNDlyOFhJRTJUbkdUUVhqTEs4dEkxbFp6K3dpZis5WklBZFQyVDllNmxQcXVBVGUvd3hWM1hUU1RpVURORzVPem15MW56T01TcjBJYmpzNzArYmZGeDhoN1lCZzAwQU1zNmNpS3o0bW5XN2JydU9IbUM0NG5Ya2Zzd3JsNUVMaDRFdFpXU3FyaGZrYXBDb0tpZjNpSUJOVTRuQ2dPYnVXNUpVTFR3MUFJQ1p5QUNFeG45dzZXMmlCVklxMlVVY1dGNk41ZGtFT0RHQUl3SVdwNFlRQjZ3clMwYlR3WkwvWG9HVjlYc0p3M3J6L0UyNFZ6c0FNWUoxanBLQXhJMTJkNzBsL3pBQ1lDa2xVL2R0UkFnVW5LZkNDeHdjTFFxNEtRcUFMZHVteFF3dStkTkJCVW9YNG1QcER6aFRucFVjTldldWRsVGZ2ZEE2VmFmV0Z4eTBHbUxyaGJlTXFDT3E2VEhwN1ZPWlNWVURwNTZubks4T2owYnJybTlBZDNIemU0YWl0VHNnMlUvZmNIKzd6MXJjRUZRcndBU3VNRWdGVC9EYmcrMG4wK29jR0RYb2d6d3N4QVpEeWFTdWJSc210VjA1QlFGVEovQk52di91ZjVrU1k5aS85N0tVN0lGbVl4bDhzcHd6a1RyaW80akFSSDZad1RYcFJsSDk2VFpkZDk0cDJwVGFsTDJidElLSUs1V2s3NEs1d0gzMlNZVHNoVk9mL2l5eXZMU05aV2Mvc0luL3ZXU0FIVTlzUXNWSnptL3BZQWZOZlZoWEdSTUo2U29EMm9ma0g5SitaU25MZkRKRTgwajhuR1dTamZHcW5QOG0zUTdzY2w4Z2RjRXNWU0RWeHFRU3h3YWlSVXdEQmg1T1RDbDdEdm9acUR3b2l4cDBPNVZxS3Z5eDhXQ1V5T09mZnlPckFmNTVvZVVLbmE1cDJJQXdjdHloNElSblVuMTlRUnhJZGErVHgrbktmRDRHUmdFTVA1Szc4ZmIvbWVvUGtiQWRIUFViQ2Y2eUI4eU80Kzk2V21RTXFyRWlhektleVp0amJ2bGlrYk9lTVA1ZkM4bTdPMU8vQ0JuaGZuT3JHWXpIWndIa0NxY3d4QXFyQjlXa2JMTHlITVp2cDVnR2dySW9LR2hGSEQ1Ym5mOWZBenpwUXkrdzc4ODdEa0p5dnYyd25PSitLcWxtWkFveUhWaUg0M0Z6MFhhQTBSbW1CYnBISmZBQmNKbDJwQWtLb0hWVWNiZDZ4NUN6UlI4L09BdG5xT3ZOdEN6aWhtN1dsNzd2MWRQbEZIengzTEs4dEkxbFp6K3dpZis5WklBZFQybGhCRjNIMFBvOUZFV0NBeCt2MG5mZ1VzWVdkMml3aDg5eUFNcjZhcVJkd2JNWmZjYUlQcmZNR2loOFE2UlVTZEdOdDlyMmFXK1E4NXFIRkp0aTlBZldNK24rbHNnbHcyeWNXSm04SEJCa0ZMbVEwV3BzTmdFQWpkU2ovK3c4QmwxVVV3aHhuTGtjL3pzaXRLTFJ0ckhDck5XUmNQOVZMM1RkOEhhVU82ZlNscWgzNlJ1Y2Z3OFRRMUIxTVdvdXBqaFBSOE9UeitDVWtkeUtQYkU3VWoxVURwaDlrWWFxWFBNbDEvNm1wcTAyYkxLOHRJMWxaeit3aWYrOVpJQWRUMk9QZlpxZkVyUHd0OGZKbG9vM0ZIb1pzSGozdU5SMHlPaklTWlFGWGZoZFdZZ3RVbWIzWE5JREhvSEd4V25xNU02ZFIvaEJCbzVWNGkrVExadk1VcWVGSmNSNG55MVREUmQ4dE8zZEJkOTA2UnduL0JDcUhLT08wR0tNdnhGQTl2OGZUbTFNUGZ5cmdObHN3WEF1Wmp5SDlzcSs1MHdsWmhxb0pNVmxLMVVxK3QxQjhJS1llWTJkMy93NTN0ZWU5Z1M3dFFJRVNLVkxSUlNNZXljdUxnb29NSEpIZ2hMWmRieUpwMFkrK2tFcXExckFMdkVLY2Z1ZE91UzAyYTFPNkUzMUE5WXltUVB5VitvZ0E1UmE3WU1pTGdRNjBUMGVvU2srY2lpNGhQS0p4ZS80YmUvWDMyTjhwSUlCTEhuR3FUdGpFbG5NVTJqNlBWOGhyUFQ0VUdOYmx4Wi82eUk2bmU5aUdSZGFqbEtYcG9MdWRDdjBQT0UzdlJNNkwyY0hNZEJFV1ZIZSsvcDV6eTlqS0FqSmhBMkhMMXlMTmhMbVIzWkUzNTlZc0hxSUFlUHlDTnJESjM1ZHpVcThzcjc1azVwOXNmc045ZjZkenZ4QW9FZ056Z3dWektQRmx4V3F3elV3YXpXeWRHQ1NXcERsSEtnT0lMWUhpTHpaZGZINXB0Y2w2UGlDRGJVZ3R4TnJRUEtOZ1hVQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlCb2d5YkNvQVNwR1N2L2RQL05hOTlhYWZCKzN2QTZ4QzdzZzkxZ0dSbXh0bFhOdllpQ01tRER6Q1poTWZuZi9xaHgxZjh2SU9EcmpMNWlkNmp4SHJtaEFSY1VPeEQ0ajkvNThXdEpZdmFtdEN6d3M2N1RTa0o4VUh5d0drdFNUSk1wZ1p0aXpvQVhONTloUStVNUNoSVEwVVRqSXBDQ2hjQXZXcDkvQ0h5bzRSZzkvaXFpTkxTQk9XNDFwWXZnR1U3dEgxaVB1aGV4MTliWE01bzhFNldDak95bnA3TmdBQ1YzK1JBejRyYWwxaG5hRm5QMmxvQUQzcm5KRUpGUG9WQzFRT0NHRE8vbzF4WGI2OGdHaUhpQkNzc0g3V2tUc3hUZlBUcWl1WEcyTmlXc3VvTmNQLzg0NDdUT0R3QndRaHhhMWYzUkZMMHFWeWxxR3JiUGVxZmd3UVgwVE51QnE5RC9OVEhJeWhlVHV3QW9WWUc4djRsTWo3b3J2bnVuVXd3Z2s2VVgrM1VVYkxhQVo0S210ZFIzaFRzeEtpaUs0UnJpRXAwNzVFSDUybGRqUkpiNHViSS9RWCtxZHJUTHhGd0lkWWVQL3dpaWtOVk9YUE1DbTd1SHZyY0lwdmhxY1Z0VkVYK0c5YUw4dlBuemMraEhueEE3MDhiRDZMZkpOZ2EzRnlIS2lCUjNVZjluMERnSEdONVgxaHhHbFFibThVVEw5TElCdmlEOTYwVjdKUXZtcUFoL2s0cGRnRzlxdzRVZ2hPaGpFeTVEbUNwK2R2NFJXT1VPYW01cWQrS2Vna2tFU09HOGtRUWVwenBReSt3Nzg4N0RrSnl2djJ3bk9KOENKUmwxRU9ETTBRWXprek10djhYSExLOHRJMWxaeit3aWYrOVpJQWRUMkNvdHJvUlByOUxBTDFLdCtkN0QzTWR0eE5hc0xUdUpkREkrcU5iYjhQVHRQdXQvdERxT1BYaTExeXU0elYzM25SWTZGai9aUjVvSzhvdzdrV21iczArRThHT2hoR2pGNWE3c2IvUVh3MlFPRHF1c29nWjY5TlBUd2NNSUlFQjlPRENXT0tCKzF2ckZLVEZoOGZXb09CZ0xSSnJFNzUxazBTYUREbFZOM2lzTkpBT3NmWGp6R3ZvWXpXMmJhcGpHbHF5amo2ZnlCVSs1SXdOOEZxNGxCdmdOOFlJOFZNZDhiYndJanZKNXZLV0FTZkFBRUJ5K0xEVmM2c1h0Y3NQdld0MytzdXM5STIyeksyVGo3aFM2cDZNc3J5MGpXVm5QN0NKLzcxa2dCMVBieC9hTHpTTFFtdHdPNFdSb04yMktZVkpBMy9YelNFZ2JnbmVneHFxTk9CaTN0ZG5uMnRKcUZPV2ZzV3JIV1MvenY3cTJVMEhBbVNIY2IrbnR0bHNWTGpNalJ3amFPZ0F0UmVqM2RFdlNQVkZ3L2kwYUNLMHhNUWJMS2hXYnh0UUNCa2xmRmFZVkZMUFpaRTBuM1MveGoxQlBUbUZkYVVHeVpSWjI2UURHaE9Nc3J5MGpXVm5QN0NKLzcxa2dCMVBZekxOSVQ2N3N3aEoxVEVuSUFMY1VzKzVKbHdKdTdteFRSVTRXWEFuQlAxM2dlNWdWamoxTmFKNjh3dWFQaVZoN0FkNlVQV1dnUjZ3TElQblRVZnRGajBwNlZYU0pQdVRlYXdSUlE0YzNjclhlUW10Q0hDcFVnWEtWb3RjRGR6V0FUVG5PS0pWeVAybUxPbGJNaDV2TTcrdTRmTDdNMTZ6ODdTSkVIVFRUbW0rSzlOSE5wbVNtd0piaGFzWndkZ3gvQWQ2VVBXV2dSNndMSVBuVFVmdEZqT0lpaEYvQzMxZ3NLNEV2dHV1c21Vazg5Y2NrQVA1aXZtcHlHUkw2NnhLVDNiQkEvNTRsVk9pclZ4clpRQi93N1RTN2wvRWUvMm8xS0VVTDhwN0R0by9jNXNuUUpsQ1NVZkRERE91ZXhtWGpBT2JRZ3MzN2JMRHlFNzRZS0tiTFJkd3hKZUVrQ2pEZHdMdk11Skdyc0NPejJPdGpBUElRVGtqQ2hOSnlXQ3pTRWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRWjNYUGdsM3FUSWxhTUhvYkJRUm5QMDExdm9oNXk2REJNS0MxNmxZTkQ4VWZteWdjbFRZc1pDZWRlcDdVbG9EcXdjakhhNktIOFcxV0ZaOURYeFAzV3ZZRjBSRHJZVGI0am9RbUlWVi9jSm5lZDNjUDJVcnZwbHI2TG5kVHJrTnFCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SU9yejVzbVp1THZJWG1XT3BFWFdpR29JbGl5a3BuSGNtbFpaSGxKcFZ1dm9VejBHNWtQWmhtL3lwMVp1YXlHOGE5cVJvclZYSXQvaGE5NEtjMndmVGN2TEs4dEkxbFp6K3dpZis5WklBZFQyenVaaEZxSFZGUkpVY2owTy9lVEdMbDNCWUxWUERVUWFMOWZIdDM1U3Y2bUZJaTJFQlY3bGZrcGpsU0xSWFFPOUN6d3M2N1RTa0o4VUh5d0drdFNUSklISWF3M2dYa3FBbzBlandKWHIyMktyYllmSjlHNVg4OVBtQ0hpeXB6R0pBbzAzY0kyMHdMMkV3VzNqVGVZN2IvWVdZQ3Bsck5xTUNFbjhHb2s0bjZXZmIvbXZjM3VpU3oyU2RtNzlVaVhqSmpmTDMwNWhVMWIrQkhqeDJLclNDS2dFVm8vQkdSWVJ0L3V0eWt0cmk2WkJlSEJVTGFuZzZyeSsvZFJWNU4zRXNEdWJKUlg2SURaUHpqOHR3UTZTY3Zrdm40Y0tDMVFaK1RwTVVSck0vUlRoQk1FRVRwVGZxeU80Wk1helZzYkllUjA0ZUxHMnFaYmxHWHJUdjRVRWF4VDNKeWh0TkdaZVNoYmcrUGQ3OS8yNDN6WGJWZm1aRllwVHJyMmE0YmVNWnR5eWczeWFUTjl6dVJpcjRMVnpvbHRWZHVxSXBSV01seFdmcit4QnhQQlJSaFpBQUxlTVVBZ2I1eFVEejFTeHN0Y1l1Nm1yZkVoUGk4K2pqK0dka0tiaVFtMlZ5YzdkSlpWUDhVT1E3RHZheDk4VG8zanhRQUR1OWJ5WURpUXVkSCtMbEdidHJQUGsxQkc1c3RKMVMycC9ubVJYWjRJT0FOTG9FRG4yelNCRjNETUM2ZHM3NmpndjM1YjR5RlR4eXl2TFNOWldjL3NJbi92V1NBSFU5aFF2M3Jzd3NCSDVZbk5CTyswMS9Cbk9sREw3RHZ6enNPUW5LKy9iQ2M0bjRXRXhyaVM3RExDWmR1aUVPSmtYTXZmeW5wRXIxZE04cGtPNnc5elkrVHN0ZmdENGNRa3BUSXk1WStHeXBTbkhvRExpblIwaWZyU2p3QlJ4OC9jWW5NNlVNdnNPL1BPdzVDY3I3OXNKemlkeVM2bGJ2Y2RZeVU4YjhHNkhhejJTYXN2ZzVGZU5WdW1tY2Vpam9pOHpEVjF1SHpscEo5YnVVQWJtTFAxTndlTmV1cUs2WVZ2cDZ2Q2VFNEdoZkh5SFlLaTl5TVg5Nng1aCtLeFBXUUJObHZUdjM0YkpHd3NoN2NVWVh5MzF3WlRPbERMN0R2enpzT1FuSysvYkNjNG5pY2ZuSXJueW1NK1JoY1ZOZlp1dXUxNVJWeUdhNjRLUG00NVFLQVdldTBuaFRCRFFZd0ZGc0gvOVRaTVJOMmxiSHQ0WWgvY1ZFaDNIb0NZRmoyQWdNVW9iOEtuMUtWaURPc3ZlOGptaDY4dXBVaG1INkk3SGVYaTFZZFRIVWo2SmhuYUZuUDJsb0FEM3JuSkVKRlBvVktKZlB3aDJHa1hEN0ZxRjUwR1I5R2Jqd1g4ZmJmall3b3Jka1hzMzVEb3BBODgrWXU0K1Niemd6SktFd2lKZnExb0pTOENtZWh1Y09zTEZyUlRXbW5xQXpCOEQwOFRZdDRMb2xCS21PRkRwMVhWWFNWcW1heHBIa3h6c29HOTdocy85cHdXNVRsS0RGdWF3RiszU1BndGg4YkJsUXg2aklhWGVSb1NZdjRqN2tqbmhjenEvQkYyK3B5ZkR3U0FqU0JqWE4rQTRrNEY5NUlIWCtlUEV3Rnp1SnRtVENMZjl2VEF4V0U4b2NTNWVCUGVPK3NENFF3L0IyLzFvN0ZCaEJ5WXN0b0QzalRiK3N4OGdZL2M5SXZ2cjNLT2paZ09TRHpUdWZ5OE03VlhoUHUyWjdQU05yTDkva21BNnlzNXYxdEttK2pRYXd2My9RSFg0Mko5eThoQTJ1TGtGYU55TzRYeENWMHVyVHBpRVdjR01NcitsT0VKeWQ3K25ObUt3ajhaREVWK3pQbUxITGxDSElCdE11NHZMSzh0STFsWnord2lmKzlaSUFkVDJjdkk3Y09OT1V4dm5uL2hlMUlFUGs2WWFjajJyZTNoS3NybWNJOCttTzRqTEs4dEkxbFp6K3dpZis5WklBZFQyVm9UNVBYN1RuVm9MMzNLZXFyUjdicWN6Ri9GN2hjRS8wNEhsME4xdklzMlY4RlpRL3VoY3VTYnNOamN4QlFiL0huSDk2K3ZQL2wvYkgwMlF2M3RWaEhRdjljRnVxSlVFYXNyVHl6Q1hhMElyMWprTEY4L3JodmpjcTJqeTZpMTVyNkkxN2VpZkNpeStkWVc2cjZ2UVhXTzlwWWJPMnNuaVhYMnlUeFZzb2tFeVRMQmc4MVVEL2NDY1NtZms2cXV3Y0dRdHF6ejlTYnE2MjRvcnlRNnUyWkZZbm81LytGcWJoSFJxdk5wTGV3SUVRc0drbGprclNEQ0E1TlpUb2FjOTVFNU56ZWh3aDhTQ2t5b2hLT2hRYTFmQ1p1SGR2VzlEZUJxVThYaXMxTHZhRVhUQncwMEdnZG9LT09DU3FxVldkdkdoS3JMSWp5YTExeUJwMkxNdHpPcnM4bzMvOWtubHhTVmFFUnlwV1pkc3BBek1zRXlqeXpnZ0lUUGpaVFQrdmtCTXlkd20wdTY1TkxlU2plS0lmZXgyNFROMGh1bjBIbFdpSFFJVSszWXg2WXByaTF0RGh3ejM4M1FwaEV5S0ZodzBoWmcxcjdsR3YwbnBVb3B6UXZ1U1pjQ2J1NXNVMFZPRmx3SndUOWQ3cGdvUm5RaHVmRkRCeUVkL2prMEtNK0Y1K0U2azlKVnV0NUFxcXFJakRxTlRpbGtUY1pjaDN6MStZbk4zWXNIYlArQWpXSGpWY1lxSE1QZU02MXVpcWVRZHFQQlJVREFLcUh5WHpFb1J5TEpDR25uMzUwdWFJczhkeFB4WGNnbzhSLzRRNmlNcFlUYVZISU9wSEpuV2hKbUlyeDVIMmJjTGJmVDUvUW1NSU1XNUxnb3VzMTV5L0FKclIwblZtZVZjTUppeFVyOHhCOHdPYWVzcVlhZEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlrT1lvZ2d1bDQ0eklaNjFMcm9GZ1hLR2RvV2MvYVdnQVBldWNrUWtVK2hVUGJWYzA4MGFra2hMWE9yN2NnOFZFVXZaYnowSFg4aFBGc2FiVUQ2cithMk1MbDBGTnlaMkVIWWtWN3pBQi9XTkFFWkxxM2F1ditwN09idlg3cy9wTGxSNFlnS1ZDUk9CVnhsTjhnM1hXS24zNjlOMWpsb3NxUkJkRE1mSkJCYkRUemNrODgzRFlKMk5OZFZRWWpPcWdzYktubHE4WStQajI3ZDV3QythWktTNUMvN0NlU3U4ZnJJZ2JnaW5oZjdRK3cyMThoOUF0S1RYQ1FpbGdldVJMSTZvZkpUZFd0eUhCQ2NhTnI3WDloZ3ByUitaa1JFZXdRbTBqaW1ON25DN3l5dkxTTlpXYy9zSW4vdldTQUhVOWs4dVpFVVByQjJWMUxtOGxPeTNjODNISWNSVzRFMTZCN2xjcExIcVphZXBEaGt3b0MvTWF1UUxObzVpRVcyZXVjZWptZmdhWk5MRzFsRVFTOW9HWkJNRHhoblFncS9qbzduSll4V0docERGRTZTc2hTTnBrYyszdWtYbmdhZGZpSDlOODBBUFhJWHZ1OHFqKzc0Y0hMZk9sREw3RHZ6enNPUW5LKy9iQ2M0bmhBMDFrc05XUGlMamtBYjhVdEtKcTRpTk9MK0VERXo2cmZZbmE2RURZRDdudHMvU09MTjNTNXhVUXdGUVIvK0xUVHA3UmJ1Z1oyKzZiTXFBeVpxWWU4c3J5MGpXVm5QN0NKLzcxa2dCMVBiNXJPYVJ3bTFIZmdybGNnMVpFZzNSVW5uT2hGMFlZQnlVWVhkQk9EazdwUE1sNlMxYWw5U3JIZmd5bVRPZElNYlhKRmJWNzJCUWxqd1VLOTZHVjNhUW9oTWprMC9JK1JLZGkwODlEZ29NYndBMytWYy8vZUhxaDc3NllOZUZod2tOcTlBZERKNG4vTFJEM1d0WUpYQVN0M2l2QzR1OVFCVGZiL3ZDbU5KaS9memFlczRvSkFLdVNjMENvK2F1NlJaeXB4NUQ1akxObVhNM0Y4WVpwZzh5VmdRWHdHb3c5RjUzVFB0d0VMaEViQ2RVSk9nKzNXdkxYUmtXY3BaYWxnNEsxNTlhRU0vdndZd0NxMzRseGtTRmhsS3lUVWc1UnNYZlJMcGFNaG0wZVpTSGR1b0RITmY0WjFvZ2daR3ppa29Hb3A4Yy96cm9XQm9OL2FWS21uOHM0VHlFK1VCUWV6djFmTEJlVXlCR2JIOEpYQS81dTIxOEVaQkJRdHczb3FFdjh5SjJEY1ZkS054bXp0QjhMbW5IJylcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nmbvlvZXvvIjlup/lvIPvvIlcIixcInBhdGhcIjpcInB3ZC1sb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGlzbG9naW4gPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0Jywge30pO1xcbmlmIChpc2xvZ2luID09PSBcXFwiMVxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE6LSm5Y+35pivJyArIGlucHV0O1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn6LSm5Y+3JyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X2FjY291bnQnKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOWvhueggeaYrycgKyBpbnB1dFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn5a+G56CBJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9wYXNzd29yZCcpXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOWkp+S8muWRmO+8nyjlhYjngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuS4jeaYr+Wkp+S8muWRmOWIq+eCueehruiupO+8jOWQpuWImeWQjuaenOiHqui0n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXN2aXBcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6huWkp+S8muWRmOOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeZu+W9lSjlho3ngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwibG9naW5pbmdcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoXFxcImxvZ2luaW5nXFxcIikgPT09IFxcXCIxXFxcIikge1xcbiAgICAgICAgaWYgKGdldFZhcignbXlfYWNjb3VudCcpICE9ICcnICYmIGdldFZhcignbXlfcGFzc3dvcmQnKSAhPSAnJykge1xcbiAgICAgICAgICAgIC8vIFRPRE8g5ZCQ5L2s6K+06L+Z6YeM5Y+v5Lul5pS55oiQICQucmVxdWlyZSDnlKjms5UgICAgICAgICAgXFxuICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiZHRkMVAzZFRFSVRvbnNnck5GZm9CaWdpNWxqYXowUGVHbWJtTWpqcjlINW5mdnNuQnc3SkZwMzdjbjNlZ3F1MHkvMHdUVzJvVTdxdE13UUlBaUxoRVNWS0JsS2tSdlcwcG5QRGRIbDdQR3d3RFQ1R00xdkJzb2diN1lEcHdtd1Y4cnR0YWQwTzVZSkJ2cGpYMjloVUJwU3NpYW83bDNVZWJ6eE5BV1lpajdZd0hXaHQwalZiaDVTTDdQWFZvMTQ5ZlBTVHV4bDhBK3ZMVVdpKzJXeEdyT1orUXZ0cllJbjI4QnFTOFBTN3pmMFIweXI5aFh6amJNT09YMkNPZFZZS1BkYkdzeHprbFY1WDJMTG1LYlBnRWZRRWxDZ01acFl1bmUwSThPeUk1NUhMSzh0STFsWnord2lmKzlaSUFkVDJkVFF2Q0JiK2lIanBSNkswTXIwZGZjL2pyVGQvK25tc21XcmtqaXR1cTh4Mmg3VTNiWm1heGtxWXJ4U29wckxpWnZuQmtTdkVvSWlxVVVPS2ltQ3kwMWYzdFJmU1FCZVI1bGdUNUEveHFnZDI4YUVxc3NpUEpyWFhJR25Zc3kzTUxaUmhTTHc1a2RTVTNZK2R5Q2E2WmNJRHhsT0dlU0ZMbUkwT0NGYnBaZTliWTduS1VPYWkzK1RIc2FGaUVFcXBkLzZuVVFGNFRaUkJnVnFqWUVGd1dKeUtBSzZEQXFvUnZCMlQwaWYyd1V2T2xETDdEdnp6c09RbksrL2JDYzRueVp4ZERmUVhONlJxQitpNk5nVGJDak5kNFRGWDVmV0J2SGE1cEhyVFNaQWhUVzl3RkE1d3NBREI5NXkrSngyWDlRazRHTENHc3RnR2NtSG05NmFwMXVXcStLOHZHRVpFYkVqa1U1MnRNUzV6ejZnbTdZaFhmOGVCWUJtRWFpTHVNZVU3NUdlMnFTNnVPb2oyMklURVVjc3J5MGpXVm5QN0NKLzcxa2dCMVBZWk55blhMbDF0Zm9EWTNIWmdQYWtmNkQrQUR6UVlxeHFSS1pDdGxOSXlhOWs4QzRIN2ZiaExEWGRXQTNvVjV5VU9nYVNYSzFPTTQwRnhOeU5YcEEvWktTNmdZM0IxL1YyK3pweitRN0NtdWU1K3FhTzBYckRQMTVoalM0YnhuV3JPbERMN0R2enpzT1FuSysvYkNjNG5YeGVrdW9UVlVSWTdlaCtkSUY0UU9hWG1iTmpZTmtpcW5BZDg1RnJYS1hvZWdKWkM4NUI0SlZxT1djdWVpcE5hSHkvZHdBaEtwbksvNUpPN1o2eWEybHMyL0p2UE9DUDkxZTZnNEhPK1lxRXBMcUJqY0hYOVhiN09uUDVEc0thNW5wcmJrSVAya25EWFhxdE1ZR1JkY2lnZUlSeitPSG1uS0xtLytXQ1BhMDYxOEVxdk1zR2c5ZnB2dFVvMi90bTBSellZaThrdUZHb3BUeW9pa0R3aTNjc3J5MGpXVm5QN0NKLzcxa2dCMVBhMUFEa3ZpdmtuY0VoUFdQNHdYQ2FUd3dwWjBHNitZVHZ5cDY4dGhGZEFMNXh4OStuVWE1aldtSlV5eVErcjFVc0Q1c01xaW5ZNWIvZURVbnhSS0tCVHpwUXkrdzc4ODdEa0p5dnYyd25PSnlkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTcvcXQyTjBuOGxIRDgrNzJLVFVESXF1WDU2NUNJUW5jRFc1S2ZYVVpMT25aYnM2UlRxUjAwTHVQSEF4UElIaGlhYmprTnZTVlFPenYzYXdlcmFtZVNPOHNyeTBqV1ZuUDdDSi83MWtnQjFQYlpmQUErN2crWWRUTnBldTlMUlJvb2lGd1YvOWN1NUhwRWdaMlg2d2FXZG9vWTFnNXBDWEtwTXUvZDdjM2hkUWZMSzh0STFsWnord2lmKzlaSUFkVDJZOTZza0J0Tmx2TkF4NklHcHpLTjhlTjBPSkNtMklxc0pKbkhYSmQxZnJ5Q01tRUNGRWVhVmJwdUtHM1YwOXdBQzdTWWk3ai9iQ0IrREMxMUJTYVp2OEIzcFE5WmFCSHJBc2crZE5SKzBXTXRaaks0UWxmenNNdGdHcWRubC9EK1xcXCIpXFxuICAgICAgICB9XFxuICAgIH1cXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXCIyXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlt7LnmbvlvZXvvIHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k6YeN5paw55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjNcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOS9oOmcgOimgeWOu+WuouaIt+err+aUueS4i+WvhueggeaJjeiDveeZu+W9le+8ge+8ge+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc54K55Ye76L+b5YWl55m75b2V6aG16Z2i4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55m75b2V6aG16Z2iXCIsXCJwYXRoXCI6XCJuZXdsb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLigJzigJzmlrnms5XkuIDigJ3igJ1cXFwiLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcImxfaWRcXFwiLFxcXCIxXFxcIik7cmVmcmVzaFBhZ2UoKTtcXFwidG9hc3Q6Ly/liLfmlrDmiJDlip9cXFwiJyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLigJzigJzmlrnms5XkuozigJ3igJ1cXFwiLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcImxfaWRcXFwiLFxcXCIyXFxcIik7cmVmcmVzaFBhZ2UoKTtcXFwidG9hc3Q6Ly/liLfmlrDmiJDlip9cXFwiJyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSk7XFxuXFxuaWYgKGdldFZhcihcXFwibF9pZFxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9BUFAtS0VZLnR4dFxcXCIsIFxcXCJpcGhvbmVcXFwiKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pON5L2c5oyH5byVIOKRoOWFiOeCueWHu+S4i+aWueesrOS4gOatpei/m+WOu+WTlOWTqeaJi+acuueJiOe9kemhteeZu+W9lei0puWPtyDikaHov5Tlm57nm7TmjqXngrnnrKzkuozmraXnmbvlvZXnhLblkI7mjInmj5DnpLrnmbvlvZUg4oCc4oCc5rOoOuaWueazleS4gOS4jeWPr+eUqOWGjemHh+eUqOaWueazleS6jOKAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDEuIOeCueaIkeWOu+e9kemhteeZu+W9leWQjuiHquWKqOiOt+WPlmNvb2tpZeKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvY2tcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMi4g5YaN54K55oiR55m75b2V4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS93ZWJsb2dpblxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5pZiAoZ2V0VmFyKFxcXCJsX2lkXFxcIikgPT0gXFxcIjJcXFwiKSB7XFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL0FQUC1LRVkudHh0XFxcIiwgXFxcImlwaG9uZVxcXCIpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmk43kvZzmjIflvJUg4pGg5YWI54K55Ye75LiL5pa556ys5LiA5q2l6L+b5Y675ZOU5ZOp5omL5py654mI572R6aG155m75b2V6LSm5Y+3IOKRoeeCueWHu+WPs+S4i+inkuiuvue9ruKGkuafpeeci+a6kOeggeKGkuWOn+eUn+eVjOmdoiDikaLlpI3liLbmnIDkuIrmlrnovpPlhaXmoYbph4znmoTpk77mjqUg4pGj6L+U5Zue6aaW6aG15oqK6ZO+5o6l6L6T5YWl5qGG5YaFIOKRpOeCueWHu+esrOS6jOatpe+8jOaMieaPkOekuueZu+W9leWNs+WPr1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxuICAgICAgICB1cmw6IFxcXCJ2YXIgY2sgPSAnU0VTU0RBVEEnK2lucHV0LnNwbGl0KCdTRVNTREFUQScpWzFdLnNwbGl0KCdzaWQnKVswXS5yZXBsYWNlKCfvvJvvvJsnLCc7ICcpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLGNrLnJlcGxhY2UoJ++8m++8mycsJzsgJykpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5oKo55qEY29va2ll5pivOicrY2tcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl6ZO+5o6lJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMS4g54K55oiR5Y67572R6aG155m75b2V5ZCO5omL5Yqo6I635Y+WY29va2ll4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vbS5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDIuIOeCueaIkeeZu+W9leKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiY29va2ll6I635Y+W77yI55m75b2V5pa55byP5LiA77yJXCIsXCJwYXRoXCI6XCJja1wiLFwicnVsZVwiOlwianM6XFxuc2V0UmVzdWx0KFt7XFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICB1cmw6IFxcXCJodHRwczovL20uYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgZmJhLmxvZyhkb2N1bWVudC5jb29raWUpXFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC53cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0JywgZnlfYnJpZGdlX2FwcC5nZXRDb29raWUoJ2h0dHBzOi8vbS5iaWxpYmlsaS5jb20vJykpO1xcbiAgICAgICAgICAgIGFsZXJ0KFxcXCJjb29raWXojrflj5blrozmr5XvvIzor7fov5Tlm57nu6fnu61cXFwiKVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1dKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLXdlYueZu+W9le+8iOaWueW8j+S6jO+8iVwiLFwicGF0aFwiOlwid2VibG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBjayA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dFxcXCIpLnJlcGxhY2UoL++8m++8myAvZywnOyAnKTtcXG5sb2coY2spXFxudmFyIGxvZ2luX3VybCA9IFxcXCJodHRwczovL3Bhc3Nwb3J0LmJpbGliaWxpLmNvbS9sb2dpbi9hcHAvdGhpcmQ/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYXBpPWh0dHAlM0ElMkYlMkZsaW5rLmFjZy50diUyRmZvcnVtLnBocCZzaWduPTY3ZWM3OTgwMDQzNzMyNTNkNjAxMTRjYWFhZDg5YThjXFxcIjtcXG52YXIgbG9jYXRpb24gPSBKU09OLnBhcnNlKGZldGNoKGxvZ2luX3VybCwge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IE0yMDA3SjNTQyBCdWlsZC9RS1ExLjIwMDQxOS4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODMuMC40MTAzLjEwMSBNb2JpbGUgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICBcXFwiY29va2llXFxcIjogY2tcXG4gICAgfSxcXG4gICAgbWV0aG9kOiAnR0VUJ1xcbn0pKS5kYXRhWydjb25maXJtX3VyaSddO1xcbi8vbG9nKGxvY2F0aW9uKTtcXG5cXG52YXIgaW5mbyA9IEpTT04ucGFyc2UoZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBNMjAwN0ozU0MgQnVpbGQvUUtRMS4yMDA0MTkuMDAyOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDEgTW9iaWxlIFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgXFxcImNvb2tpZVxcXCI6IGNrXFxuICAgIH0sXFxuICAgIG1ldGhvZDogJ0dFVCcsXFxuICAgIG9ubHlIZWFkZXJzOiB0cnVlLFxcbiAgICByZWRpcmVjdDogZmFsc2VcXG59KSkuaGVhZGVycy5sb2NhdGlvblswXS5zcGxpdChcXFwiP1xcXCIpWzFdLnNwbGl0KFxcXCImXFxcIik7XFxucHV0VmFyKFxcXCJteWtleVxcXCIsaW5mb1swXS5zcGxpdChcXFwiPVxcXCIpWzFdKTtcXG5wdXRWYXIoXFxcIm15bWlkXFxcIixpbmZvWzFdLnNwbGl0KFxcXCI9XFxcIilbMV0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGluZm9bMF0sXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaW5mb1sxXSxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5aSn5Lya5ZGY54K55oiR4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0XFxcIixnZXRWYXIoXFxcIm15bWlkXFxcIikpO1xcbiAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5aSn5Lya5ZGY55m75b2V5oiQ5YqfXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOaXoOS8muWRmOeCueaIkeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIueCueWHu+eZu+W9lVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHRcXFwiLGdldFZhcihcXFwibXltaWRcXFwiKSk7XFxuICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvlvZXmiJDlip9cXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoeebtOaSrVwiLFwicGF0aFwiOlwiemJcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcbnZhciB6YncxID0gJ+WFqOmDqCbnvZHmuLgm5omL5ri4JuWNleacuiblqLHkuZAm55S15Y+wJuiZmuaLn+S4u+aSrSbnlJ/mtLsm5a2m5LmgJztcXG52YXIgemJjMiA9ICcwJjMzJztcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXG52YXIgemJ3b3JkMSA9IHpidzEuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczEgPSB6YmMxLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciB6YmtleTEgPSBnZXRWYXIoJ3pia2V5MScsICdhbGwnKTtcXG5cXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczIgPSB6YmMyLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMiA9IGdldFZhcignemJsYWIyJywgJ+m7mOiupOWwj+WIhuexuycpO1xcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxuXFxuICAgIC8qZm9yICh2YXIgaSBpbiB6YndvcmQxKSB7XFxuICAgICAgICB2YXIgYSA9IHpid29yZDFbaV07XFxuICAgICAgICB2YXIgYiA9IHpiY2xhc3MxW2ldO1xcbiAgICAgICAgdmFyIGMgPSBhICsgJyYnICsgYjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGEgPT0gemJsYWIxID8gZ2V0SGVhZChhKSA6IGEsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiemJsYWIxXFxcIiwgYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJ6YmtleTFcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBjKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0qL1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmkJzntKInLFxcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCd6YmsnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+ato+WcqOaQnOe0oic7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+S9oOaDs+eci+S7gOS5iOebtOaSre+8nydcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaydcXG4gICAgfSk7XFxuXFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogemJ3b3JkMVtpXSA9PSB6YmxhYjEgPyBnZXRIZWFkKHpid29yZDFbaV0pIDogemJ3b3JkMVtpXSxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJsYWIxJywgbmFtZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJrZXkxJywga2V5KTtcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB6YndvcmQxW2ldLCB6YmNsYXNzMVtpXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgIH0pO1xcbiAgICBmb3IgKHZhciBpIGluIHpid29yZDIpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDJbaV0gPT0gemJsYWIyID8gZ2V0SGVhZCh6YndvcmQyW2ldKSA6IHpid29yZDJbaV0sXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKG5hbWUsIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pibGFiMicsIG5hbWUpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MicsIGtleSk7XFxuICAgICAgICAgICAgICAgIGNsZWFyVmFyKCd6YmsnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgemJ3b3JkMltpXSwgemJjbGFzczJbaV0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbmlmIChnZXRWYXIoJ3piaycpICE9ICcnKSB7XFxuICAgIHZhciB6YnVybCA9IFxcXCJodHRwczovL3NlYXJjaC5iaWxpYmlsaS5jb20vbGl2ZT9rZXl3b3JkPVxcXCIgKyBnZXRWYXIoJ3piaycpO1xcbiAgICBsb2coemJ1cmwpXFxuICAgIHZhciBxeiA9IFxcXCJodHRwczovL3NlYXJjaC5iaWxpYmlsaS5jb21cXFwiO1xcbiAgICB2YXIgbGl2ZSA9IHF6ICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSksICdib2R5JiYuaGVhZGxpbmUtbGl2ZSYmYSYmaHJlZicpO1xcbiAgICBsb2coXFxcIjEyMzo6OlxcXCIgKyBsaXZlKVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfkuLvmkq0nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3piMj91cmw9XFxcIitsaXZlLnJlcGxhY2UoXFxcIj9cXFwiLFxcXCLvvJ/vvJ9cXFwiKS5yZXBsYWNlKFxcXCImXFxcIixcXFwi77yG77yGXFxcIikgKyAn77yG77yGcGFnZT1meXBhZ2UnLFxcbiAgICAgICAgZGVzYzogJ+WFseaciScgKyBwYXJzZURvbUZvckh0bWwoZmV0Y2goemJ1cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pLCAnYm9keSYmLmZsb3ctbG9hZGVyJiYuaGVhZGxpbmUtbGl2ZSYmLm51bS10eHQmJnNwYW4mJlRleHQnKS5yZXBsYWNlKFxcXCJcXFxcKFxcXCIsIFxcXCJcXFwiKS5yZXBsYWNlKFxcXCJcXFxcKVxcXCIsIFxcXCJcXFwiKSArICfkuLvmkq0nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfnm7Tmkq3kuK0nLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS96YjI/dXJsPVxcXCIrbGl2ZS5yZXBsYWNlKFxcXCI/XFxcIixcXFwi77yf77yfXFxcIikucmVwbGFjZShcXFwiJlxcXCIsXFxcIu+8hu+8hlxcXCIpLnJlcGxhY2UoXFxcInNlYXJjaF90eXBlPWxpdmVfdXNlclxcXCIsIFxcXCJcXFwiKSArICdwYWdlPWZ5cGFnZScsXFxuICAgICAgICAgICAgZGVzYzogJ+WFseaciScgKyBwYXJzZURvbUZvckh0bWwoZmV0Y2goemJ1cmwsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSksICdib2R5JiYuaGVhZGxpbmUtcm9vbSYmLm51bS10eHQmJnNwYW4mJlRleHQnKS5yZXBsYWNlKFxcXCJcXFxcKFxcXCIsIFxcXCJcXFwiKS5yZXBsYWNlKFxcXCJcXFxcKVxcXCIsIFxcXCJcXFwiKSArICfnm7Tmkq3pl7QnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9IGNhdGNoIChlKSB7fVxcbn0gZWxzZSB7XFxuICAgIHZhciBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20vcm9vbS92My9hcmVhL2dldFJvb21MaXN0P3BsYXRmb3JtPXdlYiZwYXJlbnRfYXJlYV9pZD1cXFwiICsgemJrZXkxICsgXFxcIiZjYXRlX2lkPTAmYXJlYV9pZD1cXFwiICsgemJrZXkyICsgXFxcIiZwYWdlPVxcXCIgKyBwYWdlICsgXFxcIiZwYWdlX3NpemU9MzAmdGFnX3ZlcnNpb249MVxcXCI7XFxuICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCkpO1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgciA9IHt9O1xcbiAgICAgICAgdmFyIGogPSBqc29uLmRhdGEubGlzdFtpXTtcXG4gICAgICAgIHIucGljX3VybCA9IGouc3lzdGVtX2NvdmVyICsgUmVmZXJlcjtcXG4gICAgICAgIHIudXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGoucm9vbWlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGA7XFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXG4gICAgICAgIHIuZGVzYyA9ICdVUPCfkLfvvJonICsgai51bmFtZTtcXG4gICAgICAgIHIuY29sX3R5cGUgPSBcXFwibW92aWVfMlxcXCI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6ICdVUPCfkLfvvJonICsgai51bmFtZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgICAgIHBpY191cmw6IGouc3lzdGVtX2NvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIC8v6JOd5YWJXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYmFzZXVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS9hcHAtcm9vbS92Mi9pbmRleC9nZXRSb29tUGxheUluZm8/YWNjZXNzX2tleT1cXFwiK2dldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpK1xcXCImYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmcW49MTAwMDAmcm9vbV9pZD1cXFwiICsgaWQgKyBcXFwiJnBsYXRmb3JtPWFuZHJvaWQmYnVpbGQ9NjQwMDMwMCZkZXZpY2VfbmFtZT1NMjAwN0ozU0MmZm9ybWF0PTAsMiZjb2RlYz0wLDEmaHR0cD0xJmNfbG9jYWxlPXpoX0NOJnByb3RvY29sPTAsMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2RlYyA9IEpTT04ucGFyc2UocmVxdWVzdChiYXNldXJsKSkuZGF0YVtcXFwicGxheXVybF9pbmZvXFxcIl1bXFxcInBsYXl1cmxcXFwiXVtcXFwic3RyZWFtXFxcIl1bMF1bXFxcImZvcm1hdFxcXCJdWzBdW1xcXCJjb2RlY1xcXCJdWzBdXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZWMudXJsX2luZm9bMF0uaG9zdCArIGNvZGVjLmJhc2VfdXJsICsgY29kZWMudXJsX2luZm9bMF0uZXh0cmFcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgaWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJ1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChidXJsKSkuZGF0YS5kdXJsWzBdLnVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgai5yb29taWQpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nm7Tmkq3vvIjmkJzntKLmi5PlsZXvvIlcIixcInBhdGhcIjpcInpiMlwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSBcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tXFxcIjtcXG5pZiAoTVlfVVJMLmluZGV4T2YoXFxcInNlYXJjaF90eXBlPWxpdmVfdXNlclxcXCIpICE9IC0xKSB7XFxuICAgIHZhciBsaXZlID0gcGFyc2VEb21Gb3JBcnJheShmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5saXZlLXVzZXItd3JhcCYmbGknKTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5pdGVtLXJpZ2h0JiZQJiZUZXh0JyksXFxuICAgICAgICAgICAgLy91cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgLFxcbiAgICAgICAgICAgIHVybDokKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAvL+iTneWFiVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2V1cmwgPSBcXFwiaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvYXBwLXJvb20vdjIvaW5kZXgvZ2V0Um9vbVBsYXlJbmZvP2FjY2Vzc19rZXk9XFxcIitnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKStcXFwiJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJnFuPTEwMDAwJnJvb21faWQ9XFxcIiArIGlkICsgXFxcIiZwbGF0Zm9ybT1hbmRyb2lkJmJ1aWxkPTY0MDAzMDAmZGV2aWNlX25hbWU9TTIwMDdKM1NDJmZvcm1hdD0wLDImY29kZWM9MCwxJmh0dHA9MSZjX2xvY2FsZT16aF9DTiZwcm90b2NvbD0wLDFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYmFzZXVybCkpLmRhdGFbXFxcInBsYXl1cmxfaW5mb1xcXCJdW1xcXCJwbGF5dXJsXFxcIl1bXFxcInN0cmVhbVxcXCJdWzBdW1xcXCJmb3JtYXRcXFwiXVswXVtcXFwiY29kZWNcXFwiXVswXVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVjLnVybF9pbmZvWzBdLmhvc3QgKyBjb2RlYy5iYXNlX3VybCArIGNvZGVjLnVybF9pbmZvWzBdLmV4dHJhXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBidXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCdcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYnVybCkpLmRhdGEuZHVybFswXS51cmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIHBhcnNlRG9tKGxpdmVbaV0sICdhJiZocmVmJykuc3BsaXQoXFxcImxpdmUuYmlsaWJpbGkuY29tL1xcXCIpWzFdLnNwbGl0KFxcXCI/XFxcIilbMF0pLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5sYXp5LWltZyYmaW1nJiZzcmMnKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmLnN0YXR1cyYmVGV4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBsaXZlID0gcGFyc2VEb21Gb3JBcnJheShmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5saXZlLXJvb20td3JhcCYmbGknKTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJ3AmJlRleHQnKSxcXG4gICAgICAgICAgICAvL3VybDogJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIHBhcnNlRG9tKGxpdmVbaV0sICdhJiZocmVmJykuc3BsaXQoXFxcImxpdmUuYmlsaWJpbGkuY29tL1xcXCIpWzFdLnNwbGl0KFxcXCI/ZnJvbVxcXCIpWzBdICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGAsXFxuICAgICAgICAgICAgdXJsOiQoKS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIC8v6JOd5YWJXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYmFzZXVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS9hcHAtcm9vbS92Mi9pbmRleC9nZXRSb29tUGxheUluZm8/YWNjZXNzX2tleT1cXFwiK2dldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpK1xcXCImYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmcW49MTAwMDAmcm9vbV9pZD1cXFwiICsgaWQgKyBcXFwiJnBsYXRmb3JtPWFuZHJvaWQmYnVpbGQ9NjQwMDMwMCZkZXZpY2VfbmFtZT1NMjAwN0ozU0MmZm9ybWF0PTAsMiZjb2RlYz0wLDEmaHR0cD0xJmNfbG9jYWxlPXpoX0NOJnByb3RvY29sPTAsMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2RlYyA9IEpTT04ucGFyc2UocmVxdWVzdChiYXNldXJsKSkuZGF0YVtcXFwicGxheXVybF9pbmZvXFxcIl1bXFxcInBsYXl1cmxcXFwiXVtcXFwic3RyZWFtXFxcIl1bMF1bXFxcImZvcm1hdFxcXCJdWzBdW1xcXCJjb2RlY1xcXCJdWzBdXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZWMudXJsX2luZm9bMF0uaG9zdCArIGNvZGVjLmJhc2VfdXJsICsgY29kZWMudXJsX2luZm9bMF0uZXh0cmFcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgaWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJ1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChidXJsKSkuZGF0YS5kdXJsWzBdLnVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9cXFwiKVswXSksXFxuICAgICAgICAgICAgLy9pbWc6IHBhcnNlRG9tKGxpdmVbaV0sICcubGF6eS1pbWcmJmltZyYmc3JjJykgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6ICdVUPCfkLfvvJonICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcudW5hbWUmJnNwYW4mJlRleHQnKSArICfCt+S6uuawlCcgKyBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5saXZlLW51bSYmc3BhbiYmVGV4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJBUElcIixcInBhdGhcIjpcImFwaVwiLFwicnVsZVwiOlwiZXZhbFByaXZhdGVKUyhcXFwiTDdBdko0MUMrK2tsbEJNUEc5SlJUVXpRdkVqSlh3UnJmUmlKbUVCdWZVUUEySEhXdFFMUmhBd3FTTXpNVWRJQXJXdVdGVE40NzFRN3Z1a2hYYlBiZVJ3aGRmaVFNK2ZkdEtHM05LaFF6S2RkN3JTQndpcFk5dDBtSjBxTzlEeDNNdGYxZFgzazF5LzhXdW9YUE1RbkNYWERNUTk3aHdlem90NTJJT3lLc0c2NE9xNWFHRk41ZGlxVDF0bTI5U3AvR3J0VkpYOGZ5am9OcTRUcnBmeGlIZzhZSFNCbEFQRGtFbFpqL3Rtai9hQzdLUnpJY253dE9vTGplQitBa2lvbS9TWnVzLysxUnJuWXB5bWJ0a0pOclk3MlB6T3RkWU5MMWpPb1E1LzRZa1QyWllacGxMbUkwY1ZnVzZLQlNRanFKMU5JYXdRZzBoNHFSTlcwYVlNV0RVMy9GR2p1YzVEQlNzaDBXNm1LOEdFMzRTWWxSNERna21NUm15R3ZxeWhjUnlvRmVEYUhkN2pJaWhkamN5Vmc0ay8rZGZxdnc3ZnJXWld1STF2YzlZTT1cXFwiKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeS4gOe6p+aWsOmhtemdou+8iOaLk+Wxle+8iVwiLFwicGF0aFwiOlwibmV3ZGV0aWFsXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcbn1cXG52YXIgc190eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpO1xcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChyeCA9PSAn5o6S6KGM5qacJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9waGJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICdVUOS4uycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdXBcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfml7blhYnmnLonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3NnalxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aWsOeVqicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbmV3YmdtXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn57Si5byVJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zeVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+ebtOaSrScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvemJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmm7TlpJonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09IFxcXCLmvKvmuLhcXFwiKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL215XFxcIikpLnJ1bGUpXFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaPmm7TlpJrvvIjmlrDpobXpnaLvvIlcIixcInBhdGhcIjpcIm1vcmVcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgdmFyIF90eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywge30pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpAnLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrJ2h0dHBzOi8vJytpbnB1dC5zcGxpdCgnaHR0cHM6Ly8nKVsxXSsnI2ltbWVyc2l2ZVRoZW1lIydcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl572R5Z2A5oiW6ICFYuermeWkjeWItueahOmTvuaOpSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIue+jumjn1xcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZm9vZFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdZUycpID09ICfpmo/mnLonID8gZ2V0SGVhZCgn6ZqP5py6JykgOiBnZXRIZWFkKCfpqprnsoknKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignWVMnLCBnZXRWYXIoJ1lTJyk9PSfpmo/mnLonPyfpqprnsoknOifpmo/mnLonKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+minOiJsi0tJytnZXRWYXIoJ1lTJywn6ZqP5py6JylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IF90eXBlID09IFxcXCLmlrDniYhcXFwiID8gZ2V0SGVhZChcXFwi5paw54mIXFxcIikgOiBcXFwi5paw54mIXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfmlrDniYgnKTtyZWZyZXNoUGFnZSgpO2JhY2sodHJ1ZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJztcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IF90eXBlID09IFxcXCLml6fniYhcXFwiID8gZ2V0SGVhZChcXFwi5pen54mIXFxcIikgOiBcXFwi5pen54mIXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfml6fniYgnKTtyZWZyZXNoUGFnZSgpO2JhY2sodHJ1ZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJztcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBpZiAocnggIT0gJ+aXtuWFieacuicgJiYgcnggIT0gJ+e0ouW8lScpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfoh6rlrppVSUQnLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpVVJRFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ5jaycsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcInJlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6L+Z5Liq5LiN5pSv5oyB6Ieq5a6a5LmJ5ZWK77yM6aqa5bm0J1xcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWNrKOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfop6PmnpBjaycsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljazIudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlY2so55So5LqO6Kej5p6QKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrMi50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ5rZXknLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+i/meS4quS4jeaUr+aMgeiHquWumuS5ieWViu+8jOmqmuW5tCdcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO54K56LWe5oqV5biBKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTsgICAgICAgIFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItueCuei1nmNrJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi26Kej5p6QY2snLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiICsgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2syLnR4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi254K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItuino+aekGtleScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5L2/55So5biu5YqpXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvaGVscFxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzkuIDplK7ph43nva5cXFwiLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmlsZVxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvYmlsaScpLnNsaWNlKDYpO1xcbiAgICAgICAgICAgICAgICBsZXQgZmlsZWxpc3QgPSBnZXRGaWxlUGF0aChwYXRoLCBcXFwiZmlsZVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGgyID0gZ2V0UGF0aCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpJykuc2xpY2UoNik7XFxuICAgICAgICAgICAgICAgIGxldCBmaWxlbGlzdDIgPSBnZXRGaWxlUGF0aChwYXRoMiwgXFxcImZpbGVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIC8vbG9nKGZpbGVsaXN0KTtcXG4gICAgICAgICAgICAgICAgZmlsZWxpc3QuZm9yRWFjaCgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGl0LnBhdGgpXFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGl0LnBhdGgpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBmaWxlbGlzdDIuZm9yRWFjaCgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGl0LnBhdGgpXFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGl0LnBhdGgpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBkZWxldGVGaWxlKFxcXCIvc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL3J1bGVzL2pzL3VwLmpzXFxcIik7XFxuICAgICAgICAgICAgICAgIGJhY2soKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+mHjee9ruWujOavle+8jOivt+i/lOWbnummlumhteWIt+aWsFxcXCJcXG4gICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGg5LiA57qn5pen6aG16Z2iXCIsXCJwYXRoXCI6XCJjb21tb24yXCIsXCJydWxlXCI6XCJ2YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsICflvIDlkK8s5YWz6ZetJyk7XFxufVxcbnZhciBzX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0Jyk7XFxucHV0VmFyKCdyZXBseV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMF0pO1xcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcblxcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXG5cXG52YXIgYzIgPSAnMjImMjEyJjcxJjE4MiYxMzgmMjgmMzMmMTg1JztcXG5cXG52YXIgdzIgPSAn6ay855WcJue+jumjnybnu7zoibom5b2x6KeGJueUn+a0uybpn7PkuZAm55Wq5YmnJueUteinhuWJpyc7XFxuXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MxID0gYzEuc3BsaXQoJyYnKTtcXG52YXIgbGFiMSA9IGdldFZhcignbGFiMScsICflhajpg6gnKTtcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXG5cXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcbnZhciBsYWIyID0gZ2V0VmFyKCdsYWIyJywgJ+msvOeVnCcpO1xcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxuXFxudmFyIHpiYzEgPSAnYWxsJjImMyY2JjEmNSY5JjEwJjExJztcXG52YXIgemJ3MSA9ICflhajpg6gm572R5ri4JuaJi+a4uCbljZXmnLom5aix5LmQJueUteWPsCbomZrmi5/kuLvmkq0m55Sf5rS7JuWtpuS5oCc7XFxudmFyIHpiYzIgPSAnMCYzMyc7XFxudmFyIHpidzIgPSAn6buY6K6k5bCP5YiG57G7JuW9semfs+mmhu+8iOeUn+a0u++8iSc7XFxudmFyIHpid29yZDEgPSB6YncxLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjEgPSBnZXRWYXIoJ3pibGFiMScsICflhajpg6gnKTtcXG52YXIgemJrZXkxID0gZ2V0VmFyKCd6YmtleTEnLCAnYWxsJyk7XFxuXFxudmFyIHpid29yZDIgPSB6YncyLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MyID0gemJjMi5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXG52YXIgemJrZXkyID0gZ2V0VmFyKCd6YmtleTInLCAnMCcpO1xcblxcblxcblxcbi8v5LiJ5ZCI5LiAXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcbnZhciB3ciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxudmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbnZhciBzciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICAvLy5yZXBsYWNlKCdtLmJpbGliaWxpLmNvbScsICd3d3cuYmlsaWJpbGkuY29tJykucmVwbGFjZSgvXFxcXD8vZywgJ++8n++8nycpLnJlcGxhY2UoL1xcXFwmL2csICfvvIbvvIYnKVxcbiAgICAvKlxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpAnLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrJ2h0dHBzOi8vJytpbnB1dC5zcGxpdCgnaHR0cHM6Ly8nKVsxXSsnI2ltbWVyc2l2ZVRoZW1lIydcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl572R5Z2A5oiW6ICFYuermeWkjeWItueahOmTvuaOpSdcXG4gICAgfSk7XFxuICAgICovXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIvCflI1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vc2VhcmNoP3J1bGU9XFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJnM9JytpbnB1dFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi5pCc5L2g5oOz55yLLi4uXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICdVUOS4uycgPyBnZXRIZWFkKCfpppbpobUnKSA6ICfpppbpobUnLFxcbiAgICAgICAgdXJsOiAnVVDkuLsnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aOkuihjOamnCcgPyBnZXRIZWFkKHJ4KSA6ICfmjpLooYzmppwnLFxcbiAgICAgICAgdXJsOiAn5o6S6KGM5qacJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmlrDnlaonID8gZ2V0SGVhZChyeCkgOiAn5paw55WqJyxcXG4gICAgICAgIHVybDogJ+aWsOeVqicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn55u05pKtJyA/IGdldEhlYWQocngpIDogJ+ebtOaSrScsXFxuICAgICAgICB1cmw6ICfnm7Tmkq0nICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+abtOWkmicgPyBnZXRIZWFkKHJ4KSA6ICfmm7TlpJonLFxcbiAgICAgICAgdXJsOiAn5pu05aSaJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICAvKlxcbiAgICAgICAgaWYgKHJ4ID09ICfmlLbol48nKSB7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gZ2V0SGVhZChzX3RhYikgOiAn6L+955WqJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73liacnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAqL1xcbn1cXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3piXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlMlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gXFxcIua8q+a4uFxcXCIpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbXlcXFwiKSkucnVsZSlcXG59XFxuLy/kuInlkIjkuIBcXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaPmm7TlpJrvvIjml6fpobXpnaLvvIlcIixcInBhdGhcIjpcIm1vcmUyXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5pe25YWJ5py6JyA/IGdldEhlYWQocngpIDogJ+aXtuWFifCfkKUnLFxcbiAgICAgICAgdXJsOiAn5pe25YWJ5py6JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJ+e0ouW8lScgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+a8q+a4uCcgPyBnZXRIZWFkKHJ4KSA6ICfmvKvmuLgnLFxcbiAgICAgICAgdXJsOiAn5ryr5ri4JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi576O6aOfXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9mb29kXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZSA9PSBcXFwi5paw54mIXFxcIiA/IGdldEhlYWQoXFxcIuaWsOeJiFxcXCIpIDogXFxcIuaWsOeJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5paw54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZSA9PSBcXFwi5pen54mIXFxcIiA/IGdldEhlYWQoXFxcIuaXp+eJiFxcXCIpIDogXFxcIuaXp+eJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5pen54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcbiAgICBpZiAocnggIT0gJ+aXtuWFieacuicgJiYgcnggIT0gJ+e0ouW8lScpIHtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfoh6rlrppVSUQnLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpVVJRFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ5jaycsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcInJlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6L+Z5Liq5LiN5pSv5oyB6Ieq5a6a5LmJ5ZWK77yM6aqa5bm0J1xcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWNrKOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfop6PmnpBjaycsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljazIudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlY2so55So5LqO6Kej5p6QKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrMi50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ5rZXknLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+i/meS4quS4jeaUr+aMgeiHquWumuS5ieWViu+8jOmqmuW5tCdcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO54K56LWe5oqV5biBKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTsgICAgICAgIFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItueCuei1nmNrJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi26Kej5p6QY2snLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiICsgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2syLnR4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi254K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItuino+aekGtleScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5L2/55So5biu5YqpXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvaGVscFxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzkuIDplK7ph43nva5cXFwiLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmlsZVxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvYmlsaScpLnNsaWNlKDYpO1xcbiAgICAgICAgICAgICAgICBsZXQgZmlsZWxpc3QgPSBnZXRGaWxlUGF0aChwYXRoLCBcXFwiZmlsZVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGgyID0gZ2V0UGF0aCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpJykuc2xpY2UoNik7XFxuICAgICAgICAgICAgICAgIGxldCBmaWxlbGlzdDIgPSBnZXRGaWxlUGF0aChwYXRoMiwgXFxcImZpbGVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIC8vbG9nKGZpbGVsaXN0KTtcXG4gICAgICAgICAgICAgICAgZmlsZWxpc3QuZm9yRWFjaCgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGl0LnBhdGgpXFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGl0LnBhdGgpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBmaWxlbGlzdDIuZm9yRWFjaCgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGl0LnBhdGgpXFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGl0LnBhdGgpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBkZWxldGVGaWxlKFxcXCIvc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL3J1bGVzL2pzL3VwLmpzXFxcIik7XFxuICAgICAgICAgICAgICAgIGJhY2soKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+mHjee9ruWujOavle+8jOivt+i/lOWbnummlumhteWIt+aWsFxcXCJcXG4gICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICAvKlxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeJiOacrFxcXCIrZ2V0SXRlbSgnVmVyc2lvbicsJzAnKSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIuaYr+WQpuabtOaWsOS+nei1llxcXCIpLmNvbmZpcm0oKCk9PntcXG4gICAgICAgICAgICAgICAgZGVsZXRlQ2FjaGUoKTtcXG4gICAgICAgICAgICAgICAgZXZhbChmZXRjaCgnaHR0cHM6Ly9yeDMxOS5jb2RpbmcubmV0L3AvYmlsaS9kL2JpbGlfUi9naXQvcmF3L21hc3Rlci92ZXJzaW9uLmpzP2Rvd25sb2FkPWZhbHNlJykpXFxuICAgICAgICAgICAgICAgIHB1dFZhcignVmVyc2lvbicsICctVicrbmV3VmVyc2lvbi52ZXIpO1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdWZXJzaW9uJywgJy1WJytuZXdWZXJzaW9uLnZlcik7XFxuICAgICAgICAgICAgICAgIGZldGNoQ2FjaGUoJ2h0dHBzOi8vcngzMTkuY29kaW5nLm5ldC9wL2JpbGkvZC9iaWxpX1IvZ2l0L3Jhdy9tYXN0ZXIvbW9yZS5qcz9kb3dubG9hZD1mYWxzZScsIDI0KVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICBsb2coJ+eJiOacrCcrZ2V0SXRlbSgnVmVyc2lvbicpKydcXFxcbicrbmV3VmVyc2lvbi5kZXNjKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pu05paw5oiQ5Yqf77yM5pu05paw5YaF5a6555yLbG9nXFxcIlxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgKi9cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmvKvmuLhcIixcInBhdGhcIjpcIm15XCIsXCJydWxlXCI6XCJkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLku4DkuYjkuZ/msqHmnInor7ZcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwidG9hc3Q6Ly/nnJ/nmoTku4DkuYjkuZ/msqHmnIlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3luK7liqlcIixcInBhdGhcIjpcImhlbHBcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiMS7nmbvlvZXop6PplIHlrozmlbTlip/og708YnI+MS4x55m75b2V6Zeu6aKY5rGH5oC7PGJyPueZu+W9leaWueazleacieS4pOenje+8jOS4gOenjeiHquWKqOiOt+WPlmNvb2tpZeS4gOenjeaJi+WKqOiOt+WPluOAgumDvemcgOimgei/m+ihjOe9kemhteeZu+W9leOAgjxicj7lpoLmnpzpgYfliLDml6Dms5Xojrflj5bpqozor4HnoIHmiJbogIXngrnlh7vlkI7msqHmnInlj43lupTnmoTpl67popjor7fnpoHnlKjmiYDmnInnvZHpobXmj5Lku7bjgII8YnI+55m75b2V55qE5pe25YCZ5LiN566h5piv5LiN5piv5aSn5Lya5ZGY6K+36YO96YCJ5oup4oCc5aSn5Lya5ZGY54K55oiR4oCd6L+Z5LiA6aG544CC55Sx5LqO5YaF572u57q/6Lev5Y+W5raI77yM5omA5Lul5LiN55m75b2V5peg5rOV5L2/55So55u06ZO+44CC55u06ZO+6Kej5p6Q5Y+W5Yaz5LqO5L2g55qE6LSm5Y+377yM5aSn5Lya5ZGY5Y+v5Lul55yL5Lya5ZGY6KeG6aKR77yM5Y+N5LmL5YiZ5LiN6IO944CCPGJyPjIu5aaC5p6c6YGH6KeB5aWH5aWH5oCq5oCq55qE6Zeu6aKY77yM5q+U5aaCXFxcXFxcXCJ2bGlzdFxcXFxcXFwiLFxcXFxcXFwiMFxcXFxcXFwiLFxcXFxcXFwibnVsbFxcXFxcXFwi5LuA5LmI55qE77yM6K+35bCd6K+V4oCc5pu05aSa4oCd6YeM6Z2i55qE4oCc5LiA6ZSu6YeN572u4oCd44CC5LiA6ZSu6YeN572u5Lya5bCG5bCP56iL5bqP5Yid5aeL5YyW77yM5YWz5rOo55qEdXDkuYvnsbvnmoTkuZ/kvJrph43nva7jgILmiYDku6Xor7fosKjmhY7kvb/nlKjjgIJcXFwiLFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG59KTtcXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt576O6aOfXCIsXCJwYXRoXCI6XCJmb29kXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcclxcbmQucHVzaCh7XFxyXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcclxcbiAgICB1cmw6IFxcXCJodHRwczovL2Nvb2sueXVueW91anVuLmNuLz93d3cuaGlxdWVyLmNvbVxcXCIsXFxyXFxuICAgIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsXFxyXFxuICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICBjYW5CYWNrOiB0cnVlLFxcclxcbiAgICAgICAgdXJsSW50ZXJjZXB0b3I6ICQudG9TdHJpbmcoKE1ZX1JVTEUpID0+IHtcXHJcXG4gICAgICAgICAgICBpZiAoaW5wdXQubWF0Y2goL3ZpZGVvLykpIHtcXHJcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgTVlfUlVMRSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgZmJhLmxvZyhNWV9SVUxFLnRpdGxlKVxcclxcbiAgICAgICAgICAgICAgICAgICAgZmJhLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGU6IE1ZX1JVTEUudGl0bGUsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCJcXFwiLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiBcXFwiXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVSdWxlOiBcXFwiXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU9XFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJnVybD1cXFwiICsgdXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcclxcbiAgICAgICAgICAgICAgICB9LCBpbnB1dCwgTVlfUlVMRSlcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgLy8g5oum5oiqYXBw5LiL6L296aG16Z2i4oCU4oCU6Z2e572R6aG15Luj56CBXFxyXFxuICAgICAgICAgICAgaWYgKGlucHV0LmluY2x1ZGVzKCdkb3dubG9hZCcpKSByZXR1cm4gdHJ1ZTtcXHJcXG4gICAgICAgIH0sIE1ZX1JVTEUpLFxcclxcbiAgICAgICAgYmxvY2tSdWxlczogWycnXSxcXHJcXG4gICAgICAgIHVhOiBNT0JJTEVfVUFcXHJcXG4gICAgfVxcclxcbn0pO1xcclxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaWh+S7tuaTjeS9nFwiLFwicGF0aFwiOlwiZmlsZVwiLFwicnVsZVwiOlwiY29uc3QgRmlsZSA9IGphdmEuaW8uRmlsZTtcXG5jb25zdCB7XFxuICAgIEZpbGVzLFxcbiAgICBQYXRocyxcXG4gICAgU3RhbmRhcmRDb3B5T3B0aW9uLFxcbiAgICBTdGFuZGFyZE9wZW5PcHRpb25cXG59ID0gamF2YS5uaW8uZmlsZTtcXG5jb25zdCBqYXZhU3RyaW5nID0gamF2YS5sYW5nLlN0cmluZztcXG5sZXQgamF2YVNjb3BlID0gbmV3IEphdmFJbXBvcnRlcihqYXZhLmlvLCBqYXZhLmxhbmcsIGphdmEubGFuZy5yZWZsZWN0LCBqYXZhLnV0aWwuVmVjdG9yKTtcXG5cXG5mdW5jdGlvbiBkZWxldGVGbGllcyhmaWxlTmFtZSkge1xcbiAgICBsZXQgZmlsZSA9IG5ldyBGaWxlKGZpbGVOYW1lKTtcXG4gICAgaWYgKCFmaWxlLmV4aXN0cygpKSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk5paH5Lu25aSx6LSl77yaXFxcIiArIGZpbGVOYW1lICsgXFxcIuaWh+S7tuS4jeWtmOWcqFxcXCIpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGZpbGUuaXNGaWxlKCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gZGVsZXRlRmlsZShmaWxlTmFtZSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBkZWxldGVEaXJlY3RvcnkoZmlsZU5hbWUpO1xcbiAgICAgICAgfVxcblxcbiAgICB9XFxuXFxufVxcbi8qKlxcbiAqIOWIoOmZpOWNleS4quaWh+S7tlxcbiAqIFxcbiAqIEBwYXJhbSBmaWxlTmFtZVxcbiAqICAgICAgICAgICAg6KKr5Yig6Zmk5paH5Lu255qE5paH5Lu25ZCNXFxuICogQHJldHVybiDljZXkuKrmlofku7bliKDpmaTmiJDlip/ov5Tlm550cnVlLOWQpuWImei/lOWbnmZhbHNlXFxuICovXFxuZnVuY3Rpb24gZGVsZXRlRmlsZShmaWxlTmFtZSkge1xcbiAgICBsZXQgZmlsZSA9IG5ldyBGaWxlKGZpbGVOYW1lKTtcXG4gICAgaWYgKGZpbGUuaXNGaWxlKCkgJiYgZmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgZmlsZS5kZWxldGUoKTtcXG4gICAgICAgIC8vbG9nKFxcXCLliKDpmaTljZXkuKrmlofku7ZcXFwiICsgZmlsZU5hbWUgKyBcXFwi5oiQ5Yqf77yBXFxcIik7XFxuICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIC8vbG9nKFxcXCLliKDpmaTljZXkuKrmlofku7ZcXFwiICsgZmlsZU5hbWUgKyBcXFwi5aSx6LSl77yBXFxcIik7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG5cXG59XFxuLyoqXFxuICog5Yig6Zmk55uu5b2V77yI5paH5Lu25aS577yJ5Lul5Y+K55uu5b2V5LiL55qE5paH5Lu2XFxuICogXFxuICogQHBhcmFtIGRpclxcbiAqICAgICAgICAgICAg6KKr5Yig6Zmk55uu5b2V55qE5paH5Lu26Lev5b6EXFxuICogQHJldHVybiDnm67lvZXliKDpmaTmiJDlip/ov5Tlm550cnVlLOWQpuWImei/lOWbnmZhbHNlXFxuICovXFxuZnVuY3Rpb24gZGVsZXRlRGlyZWN0b3J5KGRpcikge1xcbiAgICAvLyDlpoLmnpxkaXLkuI3ku6Xmlofku7bliIbpmpTnrKbnu5PlsL7vvIzoh6rliqjmt7vliqDmlofku7bliIbpmpTnrKZcXG4gICAgaWYgKCFkaXIuZW5kc1dpdGgoRmlsZS5zZXBhcmF0b3IpKSB7XFxuICAgICAgICBkaXIgPSBkaXIgKyBGaWxlLnNlcGFyYXRvcjtcXG4gICAgfVxcbiAgICBsZXQgZGlyRmlsZSA9IG5ldyBGaWxlKGRpcik7XFxuICAgIC8vIOWmguaenGRpcuWvueW6lOeahOaWh+S7tuS4jeWtmOWcqO+8jOaIluiAheS4jeaYr+S4gOS4quebruW9le+8jOWImemAgOWHulxcbiAgICBpZiAoIWRpckZpbGUuZXhpc3RzKCkgfHwgIWRpckZpbGUuaXNEaXJlY3RvcnkoKSkge1xcbiAgICAgICAgLy9sb2coXFxcIuWIoOmZpOebruW9leWksei0pVxcXCIgKyBkaXIgKyBcXFwi55uu5b2V5LiN5a2Y5Zyo77yBXFxcIik7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgbGV0IGZsYWcgPSB0cnVlO1xcbiAgICAvLyDliKDpmaTmlofku7blpLnkuIvnmoTmiYDmnInmlofku7Yo5YyF5ous5a2Q55uu5b2VKVxcbiAgICBsZXQgZmlsZXMgPSBkaXJGaWxlLmxpc3RGaWxlcygpO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAvLyDliKDpmaTlrZDmlofku7ZcXG4gICAgICAgIGlmIChmaWxlc1tpXS5pc0ZpbGUoKSkge1xcbiAgICAgICAgICAgIGZsYWcgPSBkZWxldGVGaWxlKGZpbGVzW2ldLmdldEFic29sdXRlUGF0aCgpKTtcXG4gICAgICAgICAgICBpZiAoIWZsYWcpIHtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHsgLy8g5Yig6Zmk5a2Q55uu5b2VXFxuICAgICAgICAgICAgZmxhZyA9IGRlbGV0ZURpcmVjdG9yeShmaWxlc1tpXS5nZXRBYnNvbHV0ZVBhdGgoKSk7XFxuICAgICAgICAgICAgaWYgKCFmbGFnKSB7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBpZiAoIWZsYWcpIHtcXG4gICAgICAgIC8vbG9nKFxcXCLliKDpmaTnm67lvZXlpLHotKVcXFwiKTtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbiAgICAvLyDliKDpmaTlvZPliY3nm67lvZVcXG4gICAgaWYgKGRpckZpbGUuZGVsZXRlKCkpIHtcXG4gICAgICAgIC8vbG9nKFxcXCLliKDpmaTnm67lvZVcXFwiICsgZGlyICsgXFxcIuaIkOWKn++8gVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk55uu5b2VXFxcIiArIGRpciArIFxcXCLlpLHotKXvvIFcXFwiKTtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbn1cXG5cXG5mdW5jdGlvbiBnZXRGaWxlVGltZShwYXRoKSB7XFxuICAgIGxldCBmaWxlID0gbmV3IEZpbGUocGF0aCk7XFxuICAgIGxldCBsYXN0TW9kaWZpZWQgPSBmaWxlLmxhc3RNb2RpZmllZCgpO1xcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGxhc3RNb2RpZmllZCk7XFxuICAgIHJldHVybiBkYXRlLmdldFRpbWUoKTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0TmFtZShwYXRoKSB7XFxuICAgIHJldHVybiBuZXcgRmlsZShwYXRoKS5nZXROYW1lKCkgKyBcXFwiXFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0RmlsZVBhdGgocGF0aCwgdHlwZSwgZXhwYW5kKSB7XFxuICAgIHR5cGUgPSB0eXBlIHx8IFxcXCJmaWxlXFxcIjtcXG4gICAgaWYgKCFbXFxcImZpbGVcXFwiLCBcXFwiZGlyXFxcIl0uaW5jbHVkZXModHlwZSkpIHRocm93IG5ldyBFcnJvcihcXFwi57G75Z6L6ZSZ6K+vXFxcIik7XFxuICAgIGxldCBmaWxlVHlwZSA9IHR5cGUgPT09IFxcXCJmaWxlXFxcIiA/IFxcXCJpc0ZpbGVcXFwiIDogXFxcImlzRGlyZWN0b3J5XFxcIjtcXG4gICAgbGV0IGZpbGUgPSBuZXcgRmlsZShwYXRoKTtcXG4gICAgbGV0IGFycmF5ID0gZmlsZS5saXN0RmlsZXMoKSB8fCBbXTtcXG4gICAgbGV0IHBhdGhMaXN0ID0gW107XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGlmIChhcnJheVtpXVtmaWxlVHlwZV0oKSkge1xcbiAgICAgICAgICAgIHBhdGhMaXN0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBuYW1lOiBhcnJheVtpXS5nZXROYW1lKCkgKyBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgcGF0aDogYXJyYXlbaV0uZ2V0UGF0aCgpICsgXFxcIlxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBpZiAoZXhwYW5kKSB7XFxuICAgICAgICBwYXRoTGlzdCA9IHBhdGhMaXN0LmZpbHRlcihpdCA9PiBpdC5uYW1lLmVuZHNXaXRoKGV4cGFuZCkpO1xcbiAgICB9XFxuICAgIHJldHVybiBwYXRoTGlzdDtcXG59XFxuXFxuZnVuY3Rpb24gcmVuYW1lRmlsZShmcm9tUGF0aCwgbmFtZSkge1xcbiAgICBsZXQgZnJvbUZpbGUgPSBuZXcgRmlsZShmcm9tUGF0aCk7XFxuICAgIGxldCB0b0ZpbGUgPSBuZXcgRmlsZShmcm9tRmlsZS5nZXRQYXJlbnQoKSArIFxcXCIvXFxcIiArIG5hbWUpO1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKCFmcm9tRmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0b0ZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgICAgICBpZiAoIWRlbGV0ZUZsaWVzKHRvUGF0aCkpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIEZpbGVzLm1vdmUoZnJvbUZpbGUudG9QYXRoKCksIHRvRmlsZS50b1BhdGgoKSwgU3RhbmRhcmRDb3B5T3B0aW9uLlJFUExBQ0VfRVhJU1RJTkcpO1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIG1vdmVGaWxlcyhmcm9tUGF0aCwgdG9QYXRoKSB7XFxuICAgIGxldCBmcm9tRmlsZSA9IG5ldyBGaWxlKGZyb21QYXRoKTtcXG4gICAgbGV0IHRvRmlsZSA9IG5ldyBGaWxlKHRvUGF0aCk7XFxuICAgIHRyeSB7XFxuICAgICAgICBpZiAoIWZyb21GaWxlLmV4aXN0cygpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHRvRmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgICAgIGlmICghZGVsZXRlRmxpZXModG9QYXRoKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgRmlsZXMubW92ZShmcm9tRmlsZS50b1BhdGgoKSwgdG9GaWxlLnRvUGF0aCgpLCBTdGFuZGFyZENvcHlPcHRpb24uUkVQTEFDRV9FWElTVElORyk7XFxuICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgbG9nKGUudG9TdHJpbmcoKSk7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gZmlsZVdyaXRlKHBhdGgsIGNvbnRlbnQpIHtcXG4gICAgd3JpdGVGaWxlKFxcXCJmaWxlOi8vXFxcIiArIHBhdGgsIGNvbnRlbnQpXFxufVxcblxcbmZ1bmN0aW9uIGZpbGVXcml0ZUFwcGVuZChwYXRoLCBjb250ZW50KSB7XFxuICAgIGxldCBmaWxlID0gbmV3IEZpbGUocGF0aCk7XFxuICAgIGxldCBwYXRocyA9IGZpbGUudG9QYXRoKCk7XFxuICAgIGlmIChmaWxlLmV4aXN0cygpKSB7XFxuICAgICAgICBGaWxlcy53cml0ZShwYXRocywgbmV3IGphdmFTdHJpbmcoY29udGVudCkuZ2V0Qnl0ZXMoKSwgU3RhbmRhcmRPcGVuT3B0aW9uLkFQUEVORCk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImZpbGU6Ly9cXFwiICsgcGF0aCwgY29udGVudCk7XFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gZ2V0VG90YWxTaXplT2ZGaWxlc0luRGlyKGZpbGUpIHtcXG4gICAgaWYgKGZpbGUuaXNGaWxlKCkpIHtcXG4gICAgICAgIHJldHVybiBmaWxlLmxlbmd0aCgpO1xcbiAgICB9XFxuICAgIGxldCBjaGlsZHJlbiA9IGZpbGUubGlzdEZpbGVzKCk7XFxuICAgIGxldCB0b3RhbCA9IDA7XFxuICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xcbiAgICAgICAgICAgIHRvdGFsICs9IGdldFRvdGFsU2l6ZU9mRmlsZXNJbkRpcihjaGlsZCk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHRvdGFsO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRGaWxlU2l6ZShmaWxlUGF0aCkge1xcbiAgICAvL0J5dGVcXG4gICAgbGV0IHNpemUgPSBnZXRUb3RhbFNpemVPZkZpbGVzSW5EaXIobmV3IEZpbGUoZmlsZVBhdGgpKTtcXG4gICAgaWYgKHNpemUgPCAwKSB7XFxuICAgICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICBsZXQgdW5pdEZvcm0gPSBbXFxcIkJ5dGVcXFwiLCBcXFwiS0JcXFwiLCBcXFwiTUJcXFwiLCBcXFwiR0JcXFwiLCBcXFwiVEJcXFwiXTtcXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHVuaXRGb3JtLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XFxuICAgICAgICBpZiAoc2l6ZSA+IDEwMjQpIHtcXG4gICAgICAgICAgICBzaXplIC89IDEwMjQ7XFxuICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwoc2l6ZSkgKyB1bml0Rm9ybVtpXTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIkVSUk9SOuaVsOWAvOi/h+Wkp1xcXCI7XFxufVxcbi8v5a6M5pW05ZCI5bm2XFxuLypcXG5mdW5jdGlvbiBmaWxlQ29tYmluZShmaWxlc0lucHV0LCBmaWxlT3V0LCBleHRlbnNpb24sIGludGVyY2VwdCkge1xcbiAgICB3aXRoKGphdmFTY29wZSkge1xcbiAgICAgICAgY29uc3QgVE1QX0JVRkZFUl9TSVpFID0gMHgzMDAwMDtcXG4gICAgICAgIGNvbnN0IEJVRkZFUl9TSVpFID0gMHgzMDAwMDA7XFxuICAgICAgICAvL+WQiOW5tuS4tOaXtuaWh+S7tlxcbiAgICAgICAgbGV0IGlucHV0RmlsZSA9IG5ldyBGaWxlKGZpbGVzSW5wdXQpO1xcbiAgICAgICAgbGV0IHRtcEZpbGUgPSBuZXcgRmlsZShmaWxlT3V0ICsgXFxcIi50bXBcXFwiKTtcXG4gICAgICAgIGxldCB0b3MgPSBuZXcgQnVmZmVyZWRPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0odG1wRmlsZSkpO1xcbiAgICAgICAgbGV0IGlucHV0RmlsZXMgPSBpbnB1dEZpbGUubGlzdEZpbGVzKCk7XFxuICAgICAgICBsZXQgdGJ5cyA9IEFycmF5Lm5ld0luc3RhbmNlKEJ5dGUuVFlQRSwgVE1QX0JVRkZFUl9TSVpFKTtcXG4gICAgICAgIGZvciAobGV0IGZpbGUgb2YgaW5wdXRGaWxlcykge1xcbiAgICAgICAgICAgIGlmIChmaWxlLmdldE5hbWUoKS5lbmRzV2l0aChleHRlbnNpb24pKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZSk7XFxuICAgICAgICAgICAgICAgIGxldCBsZW4gPSAwO1xcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGxlbiA9IGlzLnJlYWQodGJ5cykpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICB0b3Mud3JpdGUodGJ5cywgMCwgbGVuKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpcy5jbG9zZSgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHRvcy5jbG9zZSgpO1xcbiAgICAgICAgLy/op4TliJnmm7/mjaLop4TliJk7XFxuICAgICAgICBsZXQgb3V0RmlsZSA9IG5ldyBGaWxlKGZpbGVPdXQpO1xcbiAgICAgICAgaWYgKHR5cGVvZiBpbnRlcmNlcHQgPT09IFxcXCJmdW5jdGlvblxcXCIpIHtcXG4gICAgICAgICAgICBsZXQgdGlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbSh0bXBGaWxlKTtcXG4gICAgICAgICAgICBsZXQgb3MgPSBuZXcgQnVmZmVyZWRPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0RmlsZSkpO1xcbiAgICAgICAgICAgIGxldCBsZW4gPSAwO1xcbiAgICAgICAgICAgIGxldCBieXMgPSBBcnJheS5uZXdJbnN0YW5jZShCeXRlLlRZUEUsIEJVRkZFUl9TSVpFKTtcXG4gICAgICAgICAgICB3aGlsZSAoKGxlbiA9IHRpcy5yZWFkKGJ5cykpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgIGxldCBuYnlzID0gaW50ZXJjZXB0KG5ldyBTdHJpbmcoYnlzLDAsbGVuKSk7XFxuICAgICAgICAgICAgICAgIG9zLndyaXRlKG5ieXMsIDAsIG5ieXMubGVuZ3RoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdG1wRmlsZS5kZWxldGUoKTtcXG4gICAgICAgICAgICB0aXMuY2xvc2UoKTtcXG4gICAgICAgICAgICBvcy5jbG9zZSgpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAob3V0RmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgICAgICAgICBvdXRGaWxlLmRlbGV0ZSgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB0bXBGaWxlLnJlbmFtZVRvKG91dEZpbGUpO1xcbiAgICAgICAgfVxcbiAgICB9XFxufSovXFxuLy/mrotcXG5mdW5jdGlvbiBmaWxlUnVsZShmaWxlc0lucHV0LCBmaWxlT3V0LCBpbnRlcmNlcHQpIHtcXG4gICAgd2l0aChqYXZhU2NvcGUpIHtcXG4gICAgICAgIGNvbnN0IEJVRkZFUl9TSVpFID0gMHgzMDAwMDA7XFxuICAgICAgICBsZXQgdG1wRmlsZSA9IG5ldyBGaWxlKGZpbGVzSW5wdXQpO1xcbiAgICAgICAgaWYoISh0bXBGaWxlLmV4aXN0cygpJiZ0bXBGaWxlLmlzRmlsZSgpKSl7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IG91dEZpbGUgPSBuZXcgRmlsZShmaWxlT3V0KTtcXG5cXG4gICAgICAgIGxldCB0aXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKHRtcEZpbGUpO1xcbiAgICAgICAgbGV0IG9zID0gbmV3IEJ1ZmZlcmVkT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKG91dEZpbGUpKTtcXG4gICAgICAgIGxldCBsZW4gPSAwO1xcbiAgICAgICAgbGV0IGJ5cyA9IEFycmF5Lm5ld0luc3RhbmNlKEJ5dGUuVFlQRSwgQlVGRkVSX1NJWkUpO1xcbiAgICAgICAgd2hpbGUgKChsZW4gPSB0aXMucmVhZChieXMpKSAhPSAtMSkge1xcbiAgICAgICAgICAgIGxldCBuYnlzID0gaW50ZXJjZXB0KG5ldyBTdHJpbmcoYnlzLDAsbGVuKSk7XFxuICAgICAgICAgICAgb3Mud3JpdGUobmJ5cywgMCwgbmJ5cy5sZW5ndGgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgdG1wRmlsZS5kZWxldGUoKTtcXG4gICAgICAgIHRpcy5jbG9zZSgpO1xcbiAgICAgICAgb3MuY2xvc2UoKTtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9XFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgZ2V0RmlsZVRpbWU6IChwYXRoKSA9PiBnZXRGaWxlVGltZShwYXRoKSxcXG4gICAgZ2V0RmlsZVBhdGg6IChwYXRoLCB0eXBlLCBleHBhbmQpID0+IGdldEZpbGVQYXRoKHBhdGgsIHR5cGUsIGV4cGFuZCksXFxuICAgIGRlbGV0ZUZsaWVzOiAocGF0aCkgPT4gZGVsZXRlRmxpZXMocGF0aCksXFxuICAgIHJlbmFtZUZpbGU6IChwYXRoLCBuYW1lKSA9PiByZW5hbWVGaWxlKHBhdGgsIG5hbWUpLFxcbiAgICBtb3ZlRmlsZXM6IChmcm9tUGF0aCwgdG9QYXRoKSA9PiBtb3ZlRmlsZXMoZnJvbVBhdGgsIHRvUGF0aCksXFxuICAgIGZpbGVXcml0ZTogKHBhdGgsIGNvbnRlbnQpID0+IGZpbGVXcml0ZShwYXRoLCBjb250ZW50KSxcXG4gICAgZmlsZVdyaXRlQXBwZW5kOiAocGF0aCwgY29udGVudCkgPT4gZmlsZVdyaXRlQXBwZW5kKHBhdGgsIGNvbnRlbnQpLFxcbiAgICBnZXROYW1lOiAocGF0aCkgPT4gZ2V0TmFtZShwYXRoKSxcXG4gICAgZ2V0RmlsZVNpemU6IChmaWxlUGF0aCkgPT4gZ2V0RmlsZVNpemUoZmlsZVBhdGgpLFxcbiAgICBmaWxlUnVsZTogKGZpbGVzSW5wdXQsIGZpbGVPdXQsIGludGVyY2VwdCkgPT4gZmlsZVJ1bGUoZmlsZXNJbnB1dCwgZmlsZU91dCwgaW50ZXJjZXB0KVxcbn1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vd3d3LmhlbGxvaW1nLmNvbS9pbWFnZXMvMjAyMi8wNC8wNS9SbXRHU3ouZ2lmIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment