xiaomianao666

小程序:哔哩Ⓡ

Jun 12th, 2022
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjExMjExMTY0MywiY29sX3R5cGUiOiJtb3ZpZV8xIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJvdGhlciIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7Iiwic2VhcmNoX3VybCI6Imh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL2FsbC92Mj9rZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJnBhZ2VzaXplPTIwO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfSIsImdyb3VwIjoiI++4j+KDo+W4uOeUqCIsInNlYXJjaEZpbmQiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9zXCIpKS5ydWxlKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8yIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS95Y2xcIikpLnJ1bGUpO1xuLy/pgJrov4fmkJzntKLmn6XnnIvoh6rlt7HnmoR1aWTvvIznhLblkI7mm7/mjaLljbPlj69cbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jyx7fSkpe1xucHV0VmFyKCdzdGFyaWQnLCc5MjgxMjMnKTtcbn1lbHNle1xuXG5wdXRWYXIoJ3N0YXJpZCcsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jyx7fSkpO1xufVxucHV0VmFyKFwiYWNjZXNzX2tleVwiLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSk7XG4vL+iHquW3seWOu2Lnq5nlrqLmiLfnq6/pppbpobXmipPljIXvvIzmib7liLBhcHAuYmlsaWJpbGkuY29t5byA5aS055qE6ZO+5o6l77yM54S25ZCO5oqKYWNjZXNzX2tleeeahOWAvOWhq+WFpeS4iuaWuSc9J+WQjumdouWNs+WPryIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5LiA57qnXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxuXFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcblxcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5cXG4vL+S4ieWQiOS4gFxcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzon6K+36L6T5YWl572R5Z2A5oiW6ICFYuermeWkjeWItueahOmTvuaOpSdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ1VQ5Li7JyA/IGdldEhlYWQoJ+mmlumhtScpIDogJ+mmlumhtScsXFxuICAgICAgICB1cmw6ICdVUOS4uycgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5o6S6KGM5qacJyA/IGdldEhlYWQocngpIDogJ+aOkuihjOamnCcsXFxuICAgICAgICB1cmw6ICfmjpLooYzmppwnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aWsOeVqicgPyBnZXRIZWFkKHJ4KSA6ICfmlrDnlaonLFxcbiAgICAgICAgdXJsOiAn5paw55WqJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmm7TlpJonID8gZ2V0SGVhZChyeCkgOiAn5pu05aSaJyxcXG4gICAgICAgIHVybDogJ+abtOWkmicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4vKlxcbiAgICBpZiAocnggPT0gJ+aUtuiXjycpIHtcXG4gICAgICAgIFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73nlaonLFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73liacnLFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgXFxuICAgICAgICBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXCIpKS5ydWxlKVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxuICAgICAgICB9XFxuICAgIH1cXG4qL1xcbn1cXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmm7TlpJonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFwiKSkucnVsZSlcXG59XFxuXFxuXFxuLy/kuInlkIjkuIBcXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcInBpY18xX2NhcmRcIixcIm5hbWVcIjpcIuS7o+eggS3mjpLooYzmppxcIixcInBhdGhcIjpcInBoYlwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG4gaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbmZvciAodmFyIGkgaW4gd29yZDEpe1xcbiAgICB2YXIgYSA9IHdvcmQxW2ldO1xcbiAgICB2YXIgYiA9IGNsYXNzMVtpXTtcXG4gICAgdmFyIGMgPSBhICsgJyYnICsgYjtcXG4gICAgZC5wdXNoKHtcXG4gICAgdGl0bGU6IGE9PWxhYjE/IGdldEhlYWQoYSk6YSxcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKT0+e1xcbiAgICAgICAgcHV0VmFyKFxcXCJsYWIxXFxcIixjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgcHV0VmFyKFxcXCJrZXkxXFxcIixjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9LCBjKSxcXG4gICAgY29sX3R5cGU6J2ZsZXhfYnV0dG9uJ1xcbiAgICB9KTtcXG59XFxufVxcbi8v5YiG57G7XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzonMjU4JiZmbG9hdCcsXFxuICAgXFx0XFx0Y29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcblxcbnZhciBNWV9VUkwgPSB1cmwucmVwbGFjZSgnYWxsJyxnZXRWYXIoJ2tleTEnKSk7XFxuXFxudmFyIHltPXJlcXVlc3QoTVlfVVJMLHt9KS5yZXBsYWNlKC9cXFxcXFxcXHUwMDJGL2csJy8nKTtcXG5pZih5bS5pbmNsdWRlcygncmFuay10aXBzJykpe1xcblxcbi8q5o+Q56S65L+h5oGvXFxuICBkLnB1c2goe1xcbiAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXG4gICAgY29sX3R5cGU6J3RleHRfMSdcXG4gIH0pO1xcbuaPkOekuuS/oeaBryovXFxuXFxuICB2YXIgcGk9SlNPTi5wYXJzZSh5bS5zcGxpdCgnXFxcInJhbmtMaXN0XFxcIjonKVsxXS5zcGxpdCgnLFxcXCJyYW5rTm90ZVxcXCInKVswXSk7XFxuICBmb3IodmFyIGk9MDtwaSE9bnVsbCYmaTxwaS5sZW5ndGg7aSsrKXtcXG4gICAgdmFyIG51bSA9IGkrMTtcXG4gICAgdmFyIHE9SlNPTi5zdHJpbmdpZnkocGlbaV0pO1xcbiAgICBpZiAoIXBpW2ldLnVybCl7XFxuICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcGlbaV0uYnZpZDtcXG4gICAgICAgfWVsc2V7XFxuICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXG4gICAgfVxcblxcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTpwaVtpXS50aXRsZSxcXG4gICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICBkZXNjOighcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpLFxcbiAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nK3J1cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgfSk7XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J05vLicrbnVtKydcXFxcblxcXFxu4oCY4oCYPHNtYWxsPicrcGlbaV0udGl0bGUrJ1xcXFxuJysoIXEuaW5jbHVkZXMoJ25hbWUnKT9waVtpXS5uZXdfZXAuaW5kZXhfc2hvdzooJ3VwOiAnK3BpW2ldLm93bmVyLm5hbWUpKSsnPC9zbWFsbD4nLFxcbiAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgIGRlc2M6JzAnLFxcbiAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nK3J1cmwrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgY29sX3R5cGU6J2NhcmRfcGljXzEnXFxuICAgICAgfSk7XFxuKi9cXG4gICAgIH1cXG4gICB9ZWxzZXtcXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+KAnOKAnOiKguWItuS4gOeCue+8jOS8keaBr+WVpu+8geKAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEtdXDwn5C3XCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwiY29uc3QgaGVhZENvbG9yID0gXFxcIiMzNThjY2RcXFwiO1xcblxcbi8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICByZXR1cm4gdGltZVxcbn1cXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG4vL+aXtumXtOaIs+i9rOaNolxcblxcbnZhciB1aWQgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KTtcXG52YXIgVVBfVVJMID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPXVpZCZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj0nICsgcGFnZW51bSArICcmb3JkZXI9cHViZGF0ZSc7XFxudmFyIHVwX3VybCA9IFVQX1VSTC5yZXBsYWNlKFxcXCJ1aWRcXFwiLCB1aWQpO1xcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuLy/mm7TmlrDlpLTlg49cXG5mb3IgKHZhciBrIGluIHh4KSB7XFxuICAgIGlmICgheHhba10uc3BsaXQoJyMjJylbMV0pIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyAnJmpzb25wPWpzb25wJywge30pKS5kYXRhLmZhY2U7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgZmFjZSA9IHh4W2tdICsgJyMjJyArIHBpYztcXG4gICAgICAgIHZhciBmYWNlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkucmVwbGFjZSh4eFtrXSwgZmFjZSk7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCBmYWNlKTtcXG4gICAgfVxcbn1cXG5cXG5cXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG4gICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICYmIGdldFZhcignc3RhcmlkJykpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmjqjojZAnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5o6o6I2QJyxcXG4gICAgICAgICAgICB1cmw6ICfmjqjojZAnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmlLbol48nID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICfov73nlaonICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+95YmnJyxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL+iHquW3seeahOWFs+azqFxcbiAgICB2YXIgc3Rhcmpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJmpzb25wPWpzb25wJywge30pKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnID8gJ+KYuu+4jycgOiAnJykgKyBzdGFyanNvbi5kYXRhLm5hbWUsXFxuICAgICAgICBwaWNfdXJsOiBzdGFyanNvbi5kYXRhLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdVUCcsIGdldFZhcignVVAnKT09J+WFs+azqCc/J+aKmOWPoCc6J+WFs+azqCcpO3B1dFZhcignc2V0JywnJyk7Y2xlYXJWYXIoJ2h0bScpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ1VQJywn5LiT5rOoJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxuICAgIH0pO1xcbiAgICAvL+iHquW3seeahOWFs+azqFxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCY4oCYVVDigJnigJknICsgJzwvc3Ryb25nPicgKyAoZ2V0VmFyKCd1cCcsICfmipjlj6AnKSA9PSAn5bGV5byAJyA/ICfwn5mJJyA6ICfwn5mIJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3VwJywgZ2V0VmFyKCd1cCcpPT0n5bGV5byAJz8n5oqY5Y+gJzon5bGV5byAJyk7cHV0VmFyKCdzZXQnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCd1cCcsJ+WxleW8gCcpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdzZXQnKSAhPSAnJyA/IChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnID8gJzxzdHJvbmc+JyArICfigJzigJznva7pobYnICsgJzwvc3Ryb25nPicgOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOWPluWFs+KAneKAnScgKyAnPC9zdHJvbmc+JykgOiAn6K6+572uJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignc2V0JywgZ2V0VmFyKCdzZXQnLCflsZXlvIAnKT09J+WPluWFsyc/J+e9rumhtic6J+WPluWFsycpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignc2V0Jywn5bGV5byAJykrJ2luZ34nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJykge1xcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycgfHwgZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKSB7XFxuICAgICAgICAgICAgdmFyIHVybHMgPSBbXTtcXG4gICAgICAgICAgICB2YXIgc3VybCA9ICdodHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3c/dHlwZT1mb2xsb3cmbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgICAgIHZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXG4gICAgICAgICAgICB2YXIgY29kZSA9IGZldGNoKHN1cmwsIHt9KTtcXG4gICAgICAgICAgICB2YXIgc3Rhcmxpc3QgPSBKU09OLnBhcnNlKCd7XFxcIm15JyArIGNvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0gKyAnfX0nKTtcXG5cXG4gICAgICAgICAgICB2YXIgc3RhcmxzID0gc3Rhcmxpc3RbJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nICsgaWRdWydyZXN1bHQnXTtcXG4gICAgICAgICAgICBmb3IgKHggaW4gc3RhcmxzKSB7XFxuICAgICAgICAgICAgICAgIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyBzdGFybHNbeF0ubWlkICsgJyZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj1meXBhZ2Umb3JkZXI9cHViZGF0ZSc7XFxuICAgICAgICAgICAgICAgIHVybHMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHl1cmwucmVwbGFjZSgvZnlwYWdlL2csICcxJylcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGFybHNbeF0udW5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBzdGFybHNbeF0uZmFjZSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6Mj91cmw9JyArIHl1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLy/lhbPms6jliJfooahcXG5cXG4gICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJyAmJiBnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcpIHtcXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07cHV0VmFyMigndWlkJyxpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJ+aKmOWPoCcpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiO2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v5Y+W5YWz55u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICflj5blhbMnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KdjCcgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHh6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+e9rumhtuebuOWFs1xcblxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2Jykge1xcblxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsc2MreHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/nva7pobbmiJDlip/wn5SdJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxufVxcbi8vZC5wdXNoKHt0aXRsZTp4eH0pO1xcbmlmIChzX3RhYiA9PSAn5o6o6I2QJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mZWVkXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+aUtuiXjycpIHtcXG4gICAgaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnICYmIGdldFZhcignc2V0JykgPT0gJycpIHtcXG4gICAgdmFyIGpzb24gPSB7fTtcXG4gICAgZXZhbCgnanNvbj0nICsgZmV0Y2godXBfdXJsLCB7fSkpO1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgciA9IHt9O1xcbiAgICAgICAgdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gICAgICAgIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkgKiAxMDAwO1xcblxcblxcbiAgICAgICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuICAgICAgICBpZiAoai5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG4gICAgICAgIHZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLnBpYyA6ICdodHRwczonICsgai5waWM7XFxuXFxuICAgICAgICByLnBpY191cmwgPSBwaWNzICsgUmVmZXJlcjtcXG4gICAgICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXG4gICAgICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcbiAgICAgICAgaWYgKGoubGVuZ3RoICE9IFxcXCIwMDowMFxcXCIpIHtcXG4gICAgICAgICAgICBkLnB1c2gocilcXG4gICAgICAgIH07XFxuICAgIH1cXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcpIHtcXG5cXG4gICAgaWYgKGdldFZhcignaHRtJykgPT0gJycpIHtcXG4gICAgICAgIGh0bSA9IFtdO1xcbiAgICAgICAgdmFyIHltID0gYmF0Y2hGZXRjaCh1cmxzKS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIHZhciBoID0gSlNPTi5wYXJzZShhKS5kYXRhLmxpc3Qudmxpc3Q7XFxuICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaHRtID0gaHRtLnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBiLmNyZWF0ZWQgLSBhLmNyZWF0ZWQ7XFxuICAgICAgICB9KS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIGEuY3JlYXRlZCA9IGdldExvY2FsVGltZShOdW1iZXIoYS5jcmVhdGVkKSAqIDEwMDApO1xcbiAgICAgICAgICAgIHJldHVybiBhXFxuICAgICAgICB9KTtcXG4gICAgICAgIHB1dFZhcignaHRtJywgSlNPTi5zdHJpbmdpZnkoaHRtKSk7XFxuICAgIH0gZWxzZSBodG0gPSBKU09OLnBhcnNlKGdldFZhcignaHRtJykpO1xcbiAgICB2YXIgaSA9IDA7XFxuICAgIHZhciBrID0gMDtcXG4gICAgdmFyIHIgPSBuZXcgRGF0ZSgpO1xcbiAgICB2YXIgTSA9IHIuZ2V0TW9udGgoKSArIDE7XFxuICAgIHZhciB0RCA9IHIuZ2V0RnVsbFllYXIoKSArICctJyArIChNIDwgMTAgPyAoJzAnICsgTSkgOiBNKSArICctJyArIChyLmdldERhdGUoKSA8IDEwID8gKCcwJyArIHIuZ2V0RGF0ZSgpKSA6IHIuZ2V0RGF0ZSgpKTtcXG5cXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBodG0ubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgIHRyeSB7XFxuXFxuICAgICAgICAgICAgaWYgKGogIT0gMCAmJiBodG1baiAtIDFdLmNyZWF0ZWQgIT0gaHRtW2pdLmNyZWF0ZWQpIGkrKztcXG5cXG4gICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBodG1bal0uY3JlYXRlZDtcXG4gICAgICAgICAgICAgICAgICAgIGsrKztcXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlID09IHREKSBkYXRlID0gJzxzdHJvbmc+5LuK5aSpPC9zdHJvbmc+JztcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cXFwiIzM1OGNjZFxcXCI+JyArIGRhdGUgKyAnPFxcXFxmb250PicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3VybDpgQGxhenlSdWxlPS5qczpjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIt+aWsOaIkOWKnyc7YFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGh0bVtqXS5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IChodG1bal0ucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICAgICAgICAgIGVsc2VcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtW2pdLnBsYXk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaHRtW2pdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoKGh0bVtqXS5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGh0bVtqXS5waWMgOiAoJ2h0dHBzOicgKyBodG1bal0ucGljKSkgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBodG1bal0uYXV0aG9yICsgJyAg5pe26ZW/77yaJyArIGh0bVtqXS5sZW5ndGggKyAnXFxcXG7mkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyBodG1bal0uY3JlYXRlZCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgfVxcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ml7blhYnwn5CUXCIsXCJwYXRoXCI6XCJzZ2pcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxuXFxuZm9yICh2YXIgaSBpbiB3b3JkMil7XFxuICAgIHZhciBhID0gd29yZDJbaV07XFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcbiAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpPT57XFxuICAgICAgICBwdXRWYXIoXFxcImxhYjJcXFwiLGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICBwdXRWYXIoXFxcImtleTJcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGMpLFxcbiAgICBjb2xfdHlwZTonZmxleF9idXR0b24nXFxuICAgIH0pO1xcbn1cXG59XFxuLy/liIbnsbtcXG5cXG52YXIgbSA9IE51bWJlcihmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHRcXFwiLHt9KSk7XFxudmFyIHQgPSBtPDA/MDptO1xcbnZhciBudW0xID0gTnVtYmVyKHQpLTEyO1xcbnZhciBudW0yID0gTnVtYmVyKHQpKzEyO1xcbnZhciBudW0zID0gTnVtYmVyKHQpLTE7XFxudmFyIG51bTQgPSBOdW1iZXIodCkrMTtcXG4vL3ZhciB0aW1lc3RhbXAgPSBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpO1xcbnZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgc3RhbXAxID0gdGltZXN0YW1wIC0gdCozMCoyNCo2MCo2MCoxMDAwO1xcbnZhciBzdGFtcDIgPSB0aW1lc3RhbXAgLSAodCsxKSozMCoyNCo2MCo2MCoxMDAwO1xcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgbW0gPSBzc3Muc3BsaXQoJ+W5tCcpWzFdLnNwbGl0KCfmnIgnKVswXTtcXG4gICAgIHZhciBkZCA9IHNzcy5zcGxpdCgn5pyIJylbMV0uc3BsaXQoJ+aXpScpWzBdO1xcbiAgICAgdmFyIFlZID0gc3NzLnNwbGl0KCflubQnKVswXTtcXG4gICAgIHZhciBNTSA9IChtbTwgMTAgPyAnMCcgKyBtbTptbSk7XFxuICAgICB2YXIgREQgPSAoZGQ8IDEwID8gJzAnICsgZGQ6ZGQpO1xcbiAgICAgcmV0dXJuIChZWStNTStERClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gU3RyaW5nKGRhdGUuZ2V0RnVsbFllYXIoKSk7IFxcbnZhciBNTSA9IFN0cmluZygoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkpOyBcXG52YXIgREQgPSBTdHJpbmcoKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpKTsgXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxucmV0dXJuIHRpbWVcXG59XFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZTEgPSBnZXRMb2NhbFRpbWUoc3RhbXAxKTtcXG52YXIgdGltZTIgPSBnZXRMb2NhbFRpbWUoc3RhbXAyKTtcXG52YXIgU0dKX1VSTCA9ICdodHRwczovL3Muc2VhcmNoLmJpbGliaWxpLmNvbS9jYXRlL3NlYXJjaD9tYWluX3Zlcj12MyZzZWFyY2hfdHlwZT12aWRlbyZ2aWV3X3R5cGU9aG90X3Jhbmsmb3JkZXI9Y2xpY2smY29weV9yaWdodD0tMSZjYXRlX2lkPTIyJnBhZ2U9JytwYWdlbnVtKycmcGFnZXNpemU9MTAmdGltZV9mcm9tPXRpbWUyJnRpbWVfdG89dGltZTEnO1xcbnZhciBVUkwgPSBTR0pfVVJMLnJlcGxhY2UoJ3RpbWUxJyx0aW1lMSkucmVwbGFjZSgndGltZTInLHRpbWUyKS5yZXBsYWNlKCcyMicsZ2V0VmFyKCdrZXkyJykhPScnP2dldFZhcigna2V5MicpOicyMicpO1xcbnZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KFVSTCx7fSkpO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMStgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0yK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTMrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtNCtgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmdldEhlYWQoKCflvZPliY3ml7bpl7Tnur86ICcrdGltZTIrJ34nK3RpbWUxKSksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHRpbWVzdGFtcCkuIHNwbGl0KCfml6UnKVswXSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbn1cXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUoc3NzKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbmZvciAodmFyIGkgaW4ganNvbi5yZXN1bHQpXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24ucmVzdWx0W2ldO1xcbiBpZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuIGVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuIGQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmoudGl0bGUsXFxuICAgICAgICAgIGltZzonaHR0cHM6JytqLnBpYytSZWZlcmVyLFxcbiAgICAgICAgICBkZXNjOid1cPCfkLc6JytqLmF1dGhvcisnXFxcXG7mkq3mlL7ph486ICcrcGxheSsnICAgICAgICDlj5HluIPml6XmnJ86ICcrai5wdWJkYXRlLyorJ1xcXFxu5o+P6L+wOicrai5kZXNjcmlwdGlvbiovLFxcbiAgICAgICAgICB1cmw6XFxuJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgIH0pO1xcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3kuoznuqdcIixcInBhdGhcIjpcImRldGFpbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ2FwaS5iaWxpJykgPT0gLTEpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB2YXIgYiA9IEpTT04ucGFyc2UoYS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiWzBdLmJ2aWQ7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7XFxuICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciBiID0gYS5zcGxpdCgndmlkZW8vJylbMV0uc3BsaXQoJ1xcXCInKVswXS5zcGxpdChcXFwiP1xcXCIpWzBdO1xcbiAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGI7XFxuICAgIH1cXG4gICAgdmFyIGJhbmd1bWkgPSBmZXRjaChydXJsLCB7fSk7XFxufVxcbnZhciBqc29uID0gSlNPTi5wYXJzZShiYW5ndW1pKTtcXG52YXIgdiA9IGpzb24uZGF0YS5WaWV3O1xcbnZhciBwID0gdi5wYWdlcztcXG52YXIgY2FyZCA9IGpzb24uZGF0YS5DYXJkLmNhcmQ7XFxudmFyIHJlbGF0ZWQgPSBqc29uLmRhdGEuUmVsYXRlZDtcXG52YXIgdGFncyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHRcXFwiLCB7fSk7XFxudmFyIHNldHRpbmcxID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+ato+W4uOmhtemdouWIh+aNouaIkOWKn/CfkYzlj6/og73lubbmsqHmnInku4DkuYjlj5jljJYnYDtcXG52YXIgc2V0dGluZzIgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6ZqQ6JeP6aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBsaWtlX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2xpa2UnO1xcbnZhciBjb2luX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2NvaW4vYWRkJztcXG52YXIgYWRkX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvYWRkJztcXG52YXIgZGVsX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvZGVsJztcXG52YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxudmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxudmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcblxcbmlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICB2YXIgcmVkaXJlY3QgPSB2WydyZWRpcmVjdF91cmwnXTtcXG4gICAgdmFyIHltID0gZmV0Y2gocmVkaXJlY3QsIHt9KTtcXG5cXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiWFVpRlQxdlhZV3JVdytWaHBucWxnME4wdkFXZ3BnbGg4TWhaKzl2UEQ5OU5KNVZnZUZkSG13YUthd0l5NkMwaDZGRlFoRVE1UmhKbVYwRVFIbkw5eHliUEhBY2hBTDdoWkVaZCtoYkdIVjVqZUcrbks1UTNpZTc4cHVHRGIxVEo0ZkFJN2c2ZXpMSWpRTUJ4Ti8yWE05MllOTlBLREhkaExJTVFHVjY5TXE4Y1RPV2pLcFpRcDAvdmdOdXhhUFFLRXpTZEhRSnVlN3RUeGRTRXZEdDNzL3R4ZEVoL29HekZDQ05XZVpDVVU1M3poRWhDMDZxNlpGalpDTStkOEZzWjVjWGxOSmVtdGVnTWdKVUxkVHFhVmRSd1ZoVlgrMXVCUTlOeTBEcHNOR3gyTHdIZ09qbHM5aHcxNExoRXF0aEVlNzN5UEJHdlNnS0VCZFNZZ0c3Y0s3aFlWVEVOZUdUaVJBektQUTdqR0VxRUo4YWFkSE9IQWVTYTI1YUJiemM4MWhoeGdYdGlhbFg4VXFlcG43azRnMkdrc3FvRzNKVkkrcVRmV1p4UFdxTk0vMGpVWGJyVVRDUlpucnpHVm93Nk53UFFYS3EzQ0RLbDlpK2FadmVXejVJZjVFTkVaR2lXbFc1ejRhSlNFY2V4Q0RzaVpsbzEvUUpJajJyV29uRTB1NTRhaDIvWlovL1pHb01CSitkMTlHbWVwa0xCRDNuMnFvZ0tualpqMnJqV3FnUGFkRWVlMVpJaFozU0dibVRsSmYxQTRCWUl1dVB3djRkR1pkUm9EVzY0QmhDNWp1Q242d0RtN1lteTdCWGYxc1FhRmltRW5yU0lpSEdoTStXS2czSXlXZWN1aC9HaysrTW1ONkF4eGN2TkF5cDhiQzRoekJNdlpKL2w1dFJ5YXBvbWRDVjVCcGlYZmprV1JuYm9wSWpJK1dLQjNmQ2FZeVJkZU5MRVJLbkVsc2NEaXo3VWVuTHByaFljL2E0THNHZU1NRlZaOFlvOC93R1lIMzhKXFxcIilcXG5cXG52YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vJyArIHYuYnZpZDtcXG52YXIgbW9kZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dFxcXCIsIHt9KTtcXG52YXIgbW9kZV91cmwgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8sIOeCueS4quinhumikeivleivleWQpyheX14pICdgO1xcbnZhciB6bCA9IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3BhZ2UnLCBnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvic/J+WFs+mXrSc6J+ebtOmTvicpO3JlZnJlc2hQYWdlKCk7aWYoZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nKXsndG9hc3Q6Ly/ngrnlh7vkuIvmlrnliIfmjaLmuIXmmbDluqbwn6SfJ31lbHNleyd0b2FzdDovL+W3suWFs+mXrSd9XFxcIjtcXG5pZiAobW9kZSA9PSAneWhjJykge1xcbiAgICB2YXIgbGF6eSA9IHloY1xcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogdi50aXRsZSxcXG4gICAgZGVzYzogJ+aPj+i/sDogJyArIHYuZGVzYyArICfjgIDnsbvlnos6ICcgKyB2LnRuYW1lLFxcbiAgICB1cmw6IHRhZ3MgPT0gJ3VwJyA/ICdmYW4nICsgc2V0dGluZzIgOiAndXAnICsgc2V0dGluZzEsXFxuICAgIGltZzogdi5waWMgKyBSZWZlcmVyLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICcgICcgKyBjYXJkLm5hbWUsXFxuICAgIHBpY191cmw6IGNhcmQuZmFjZSArIFJlZmVyZXIsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejE/dXJsPWh0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvd++8n++8n3R5cGU9Zm9sbG9377yG77yGbWlkPScgKyBjYXJkLm1pZCxcXG4gICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzirZDvuI9TdGFy4oCd4oCdJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgY2FyZC5uYW1lICsgJyYmJyArIGNhcmQubWlkICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5cXG5mdW5jdGlvbiByZXF1ZXN0X2JpbGlfYXBpKGJhc2VVcmwsIFNlY3JldElkLCBTZWNyZXRLZXkpIHtcXG4gICAgaWYgKCFTZWNyZXRJZCB8fCAhU2VjcmV0S2V5KSByZXR1cm4gcmVxdWVzdChiYXNlVXJsKVxcbiAgICBldmFsKGdldENyeXB0b0pTKCkpXFxuICAgIGxldCBub3dEYXRlID0gbmV3IERhdGUoKTtcXG4gICAgbGV0IGRhdGVUaW1lID0gbm93RGF0ZS50b1VUQ1N0cmluZygpO1xcbiAgICBsZXQgc291cmNlID0gJ2JpbGktYXBpJztcXG4gICAgbGV0IGF1dGggPSBcXFwiaG1hYyBpZD1cXFxcXFxcIlxcXCIgKyBTZWNyZXRJZCArIFxcXCJcXFxcXFxcIiwgYWxnb3JpdGhtPVxcXFxcXFwiaG1hYy1zaGExXFxcXFxcXCIsIGhlYWRlcnM9XFxcXFxcXCJ4LWRhdGUgc291cmNlXFxcXFxcXCIsIHNpZ25hdHVyZT1cXFxcXFxcIlxcXCI7XFxuICAgIGxldCBzaWduU3RyID0gXFxcIngtZGF0ZTogXFxcIiArIGRhdGVUaW1lICsgXFxcIlxcXFxuXFxcIiArIFxcXCJzb3VyY2U6IFxcXCIgKyBzb3VyY2U7XFxuICAgIGxldCBzaWduID0gQ3J5cHRvSlMuSG1hY1NIQTEoc2lnblN0ciwgU2VjcmV0S2V5KVxcbiAgICBzaWduID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2lnbilcXG4gICAgc2lnbiA9IGF1dGggKyBzaWduICsgXFxcIlxcXFxcXFwiXFxcIlxcbiAgICByZXR1cm4gcmVxdWVzdChiYXNlVXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlNvdXJjZVxcXCI6IHNvdXJjZSxcXG4gICAgICAgICAgICBcXFwiWC1EYXRlXFxcIjogZGF0ZVRpbWUsXFxuICAgICAgICAgICAgXFxcIkF1dGhvcml6YXRpb25cXFwiOiBzaWduXFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcbmV2YWxQcml2YXRlSlMoXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVRwTHBod2hsNm00cUVmSkdORmNUcXZETm9UWmkrWFd6OEh4dTdVMlU1N3NzQW9CTWZvL2VBNjh6dVZEa1g4L01Wb3BsVHpPcWpVTzZWNXBFTFhZaUZXWFJ4RjJ2bzNWNnEyRENOc1hSUTB5ejR2aDFUcXlMR21RYUtaUkZYcHk1QVFkS1JQay82VXA5dnM5OWJ2YWw0ZVRJWUpxWVlmWXMrclBteGFIOG1pMzI0QThGWjdQNkZKd2UrUW9BMjdZVitXMDkzZEhJVS84R2hvVS9XNmtxMEwrZ2lES0E0WE8zQUNDRXE5a2lxV04vREQ1WWl1T0lXQncxZ296VWdOS3dXUVRkRmdMc01aTmsvajNXQTdoS29GZzhTR0RFenRiQkRoZmdXd0FicFFpVnEvS3NlMVNlaG9DUzd5bTJNMUVhaEp0eFNibUxPNEVnd3diTS9nc054Q2xIcmQ3c3AzMVcrNCttQk42d25wWUtvcmFWbGtTVDVpVFN1TGEyNzNjTTlObm1OZmZSMjlRR2crN3hPVzducTh5MEpuNS9iUEwwQlNaNUF0UnFMcnZyczZOWDlRYVhUaXlZQ1FSVS9HUmtwc280ZDZITXZLTUxXYWh4ak9uRkNSbXVNQitrRzVBWDRSdmNycVZ4ek5lQUp1S0M1bmxFZlhqRFJYb0U1bE04VUtiS1N1TmRSakhUUERwaUcwOFZucmo0TWZxMWFXb0RzbmRQWVVpSUo1T1NwMlpaTE84K0tZSVZlR1d5SVZRYStkaWtyRVM3K2FuRVViT3NMQ3hmZmRBZVRLcmNUVzU4VTZpbGFLcElHWm1BSkpJOTZxSzlaUnNNeU11WVpuUUU1R3BLZXgrMnQ0dzlZNXFGZHdpRDFkTDVhRm9qNmFlZmNaR0dWdy9ZOWdVK1l2bHBoYklSUDZTRUlzbFY5YUgvcU5MUHJrNjBWZnZMT2xNNTVNdmxNWnR5TkRKQmZDVlpZdlNyQUhZSHg5MVY5MmhtT1krMFFlVkVVZUFMbCtIQVVKTnUzV2tjbUYzT0xYWW9OTUh3eldcXFwiKVxcblxcbi8v6Ieq5a6a5LmJYXBp6aG5XFxudmFyIG1BcGkgPSB7XFxuICAgIGF1dGhvcjogJycsXFxuICAgIHR5cGU6ICcnLFxcbiAgICBpZDogJycsXFxuICAgIGJhc2VVcmw6ICcnLFxcbiAgICBzZWNyZXRJZDogJycsXFxuICAgIHNlY3JldEtleTogJydcXG59XFxuaWYgKG1BcGkuYmFzZVVybCAmJiBtQXBpLnNlY3JldElkICYmIG1BcGkuc2VjcmV0S2V5KSB7XFxuICAgIHB1dFZhcignYXBpJywgSlNPTi5zdHJpbmdpZnkobUFwaSkpXFxufVxcblxcbnZhciBhcGlJbmRleFN0ciA9IGdldFZhcignYXBpSW5kZXgnLCAnJylcXG52YXIgYXBpSW5kZXggPSBwYXJzZUludChhcGlJbmRleFN0cilcXG5cXG5cXG50cnkge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBwYXJ0ID0gdi52aWRlb3MgIT0gMSA/IHBbaV0ucGFydCA6ICflvZPliY3op4bpopHml6DpgInpm4bvvIzngrnlh7vmraTlpITmkq3mlL4nO1xcbiAgICAgICAgcHV0VmFyKCdVQScsICc7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFxcXFxc77ybXFxcXFxcXFzvvJsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNu+8hu+8hu+8hu+8hlJlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvfScpO1xcbiAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZjVSNU8zOTZKMjJGeGtiUWJrWFhDcGdnZnVhZDVvKzNwOTdMSFdiSXB0b3c0bytNUlF0YVAwLzh3aXlKQ3JaQ2FaWVc2NHdVMUI2MHhSQlF0YmRKQ0VnUnVIaG9ac2JHQVpCQTQzL1RYeEd3SWtDY2tiVjZuekhobTkzRGs1RGlDNUk1SG4rQ2ZpQk1FNHlRbzM5T1VKeTNwR0FXbGpEMXNucHpHaEJqMWIzSHJUdnlrakZhU1BnblMvTVVkSk1mMFFaSVNOR1U4ejVvdmFuUHNIK0Y1V3NRZ0hnSXF4VzlldlYzK3RneWZMVWRGUjBONERsdExZcnc3dkNQZ3pQUVgvdndCTVB5NlljVnRTVktqYjZRekZhdVROK0oySVJZcnBheTE1YWtBa29mYStZeC9mTlRlZjQrNlphVnptWGVaYUVhajBiUS9IUFppYnhUejNTK0RtVVZkZ1l1MEhYTXkwQ0ZDWFN0MytlT1VOOWMrRW1WQUxyTk44T3FXclBla3J2RjFxTjFVS3Y2a0JjQkVQL1N3a3VmczN2TTA3Zld2L1JOSllCN2hFaHNvSXh5dkhRT2lQWUNURCtlVXMrZmgrVTliUlJBVXpSU2xYQ3poV1hqRGZDSmpZLzlCMmw0UnBoL253b3BFTXFpaTVwSkNKVVBUYy9INFVmdzlGT0xabXhNSGJFaVdmZnAwcmdicEhvS25Sbnp3WWZnL1JLN245ekxBZEdBSy84dUdhMHNsWjVJVDFYVWVxclBzQ3F0M01INUcybXl4QkRscUQwWVFVYjZOV2hJN3BqanBpbjZiVzJ0aHd6SDROVC9UcDRDV3BIbFZ5Y0JWV3NTZ2hHeVNCRVFScEJRS0xPVHYxRXZPeGdGeGg5R1ljdTlUNldQdWZiRW5EZy9MSzlyZ3IycHdvSTNZSWowcDJCYkJtWDd2TWhQeEtLTHB4Wmk0M0p3VmY5SHhuMzFOYVlRaS8wUzF6VENnOVMyNnRVZ0FxNDhyaStFaTNNSFVrSTZXc01iQTczTG5mZ0JqNzdEQWxRbDVRT2tVdi9wSGh5WWxpaVEyWFlhWXhTSCtoRzQrdEErSzZ1UDBoREtlUUxrL2Y5dDdpKzZZTzBVKzhHaS9Yd0hBc3Q2Q0w3SS9LaUJmRlBuTllMeFpCeDlFMHNRZXJJKzhZS0YySmZUb3R2SGZjOWlTZjNMZUFjVXpXeS9Hc1lyMjBxekUxKzJocVVueFFicWlFamxhTXFlci8vUW81OE93K0ZtcFFwMXd1KzdoZ2ZyNlJrSzRZd3hrZXdlWGhPUmZDQk5xSUJKenR3WjFmQjBtYnBSTjNja256RGljcmFtbTNqV2tEaVl6Zi9KTTNoWXMzY3J5bGRHeVhxcjI4SjZ1OHhMYVNEWEYveVVRd2JTRldKTXN0NCtpalMzSDdEVTV3WWpna2hFemhCVkt4NzI0TFVta3BVVGFSVGowMEpnQ01zbEhEeXl2TFNOWldjL3NJbi92V1NBSFU5cTJDWVI3QzlDSWtHdUkwa09LSDBud0tLaTF4V2Y5WncxaXZnTHhrVWxPRUlGTnBROFhkNFJ2aWpqR0xyeFFSMnptc3JxTGpUaGpwblI5cnlsMnF1VG0rSG11aWVqc0dNV0dJWEtreXBkTFlQbnZjSGZIMmNsV2dVNzFWSnhXcno2S2s3TGpJR3o2bUZvajQ1Wlo3Ri9qMXRqWE1oOGxyWUJsS2RYanpsRGNzMmhzOUo5dUFjeEtXalJYbXk4dUtDNFp1N01mVkswa2NEZnZ0QWZja25lblJnd2haRktwU0h5Nkg4ZklsMFduSFBiVVNONS9RMUlpazhrYWFDME1TYlI4S1Y0NnZoRWV2UWRQb2V4WDdDanBTalprRkFLU0YvMmt1RFh5R3N6THoyaE5Pa0cwaTFCbWt4aGpjNjMvQVFseUtpemszME1KQmZOUFZFNnk5cURFc2RYbUxNc291SDhwNzBIeUgvS29lbHlBa2krVWZkbEtRTmoxN0hvWUdTaW5Ra2JiMmlGV0c5TkRPV3dyajhaUXVYVGlOS1RYSk9ySDhsVDErMTY0RUdqWGU1K2Z6ZlVtQU0wQ0xSTVRSL05xNXpOVmdlOVBGL1ZQTmZVMGROVmNvTG1ZUDZEVFU1T3pnMGJzb3gxYThTZ25keEZSOWJTTlJ6Wm56UEdKbzZIS0djZmJWYVNVRlFDVGQ2VWJ6VGRjcExEVFFxdVp3UEZiZGRTb1lqZHNGdWtuUENFMlVwNnJrL2UxZGg5S3I4bWFFOEZZOENPbkJ1N0IxV2RQZHl1V2V6N3hQdHNoekFJd1Jla0lPbUcwb21TbGJ4dVh3MGI5V3RQQVhSTVRlUGdhYkR1OEJyejAvNHMwZW9CQ1I2Y3ZYaXdLQVg4REZJOXZ6NGZudXJOTGQ3aFpJa0N2QW5UM1J3L3RTdHNTKzhyRlVtRzAzaWFRbUpuM3lYYWladzFNU0hrUlZxV3REWjh6U0FrcnFvWUE3UTN1eVhkSk02TXFDWEViQ2ZnWGxnUDRDQThnTHI4dHZ3aDRuWEZtWVNhYUdsRU1ZQ2hoVnNQMFRvbnNneUdjNlpIckYra0gybERHU3F4TU5lQitRVE5zTkhnckVScmh4NjZ4T3lsc0laRXdMQ2V2bmZtUXAvQ0x6NE1jQ3QwRld6aG5KUTJOQWg4MTFtT3diNDJpM1hPam50a3RIVDJ0UU1RUUtCZ2RUbllqR1lLdzBCNDE0MXVlQk5hd0dhWjNsTGFYV1Q3WXVHUWFGS3BYZHprbWk1c09kalZSeVNralZwQTlZZEVhblNRNTY4NFNqTFozQnV0V05reElwM2VReTQzayt4b2toUHZ3alRWWXBHa2JiQkdvQ004eklCRHhlcTIyTDlBa2NOWVh1ekpheS9OZzNUdVhXV0tBdjArOHpLZENSdHZhSVZZYjAwTTViQ3VQeGxDRElnVkNqVkNIWGlicXN1UDdqS3lSejN0cjluQ1pJWCsrWUNBYStaZFhLMFAyZWcxdGxKemVXZzIwelVnRWpPa25zSUZrazJ1QmZMMlVFak54ZGxsRE9JUzc0R3I0QkhicVRGT3ZGQmExalpsUGJyZnh1TlkxcS9KelNkY1ZHOTIxZTQ3T3o4ckZEUHVWRTdOZnRhMm1EZlFsN00wSlRON1RpZUJZamRhQVhQUzlET1lPUHNPVldVbE8xUXhjZXR2NWd3Z0kwZ0lWaHBhWFRJNkF5QzJuWTR2TGhmaFVaV3Jia2U2c2FHditOK1FjckFTL1hxek5WTzE4bnRiZk11ZWxGaVNuVEZTaXJZQk55TmJKMnl0T2s1SHFNSHh2TzdjRHpNUTdFMnplSkhqOFJ5dlNCbXZUcTBqQmRMQmlJQWg3ZUoreDJKb0VXLzNDYnJUYmZPeVp6K0hGUHNPN2hzeVR6S2FyRHBEdndkNkdsT0tnWDJTVmwzU1RENGFMdVhkMHZOd1ZacUg2RWlScmw4YWhTekx3QURjWU1JVUJEUndlR1kzbG50bXZDWDIxd0tWdGRlQkdUb1RLUnpET0FSTmZwR05iRkJLMHJ3cVB3SzN1WTR0aVh6aG1teUpsRDZLMm9XVTRnOVhZVzgyQUJsazUyTWxPZVFZZDFoV0hyYXdwR3BiSENFYzRpcXM4TjJTZGFhNUI5cU40VFlCM1hOTnRpK3JOSXRHZzlPcGFzdTVvZmZDRkZJYk5abWpUYzlFbEs0TXduT1c5OUNHbTQwMk1hNC9lazBsVUhQa3JNOFVXNk5DQURJb3ZDMGttclZVb3huUzBIUXhzZmdXUUlsa05QRDlGVWZPNGlKZjJmM2lUZ3p0OWhFMk9nVDJDakt3S3A4SENqdWhjYTVGY3MxU2xEbGhTQUtlSE1IOXcyVWYvbjV1UTZuQjBXVVdDTnNSdjlETjBNV2ZDeFY3Rk54VWxhMndjUEliVXRZUk5qb0U5Z295c0NxZkJ3bzdvWEdnQ1pGbHFtNzh2dHFDYmVLMjhpWHpqRmN0KzQ4dDBrYzZiRWlxUDI4S25ZRjhuQVZuRlFJMk9JZVF2S2JJSEFzL1RYbHMyNjNRbGFqZEhVcE1LWk5rL0FCS0cvK3FrVzJkV1FFOVdtUENlUE92ZFZtQWFQTXgyeTdMbjNqMjdVVlJQbElwbmlPNnI2V1AyZFQ0YW1mcGE0RFQ5dzhEa3RIMGozOVphNUtiQmpxWVQzMDhFYVgyN3hSdS9xL05YY1hoa1hQOUlEWnlSU0NjdVpreGY2VFo0UUtwSG41dnpqb3VJYWNTUE1UdGFTdHB5RkR2TkdIVCt4VjZFWXVCcTVyL2dDZDZPaFNiTERLcUh6dmNCQ0RCTE0yT1A0L0VSMnNodjdHckwySWJzd0tYUVk1U1VJRTF4OW5lSDJyNUd4NDFQMGJmT1ZwbWxMdEJOTVJFUGxNNGpUME9Kak11aEQvT3VHMmg0OVF4ZUpxVUtxQ3FyVzhyQVdiS0lxRjdESHhEMWx6MHpObTRqRWZzUzYvWUxTbFRwNHIzYytGZWREdmFSaUdTaUxuR0U4N3E1YkVkd0s3WWJuVkJZTVg2YmRDSXNLOFEwN1FKa095Y1VNZm1kQ2txVmU5N1JhQ25sYWNIUWFnMDI0ZUZuV0hHRk8vcngvdFV2VVppYzJ3QnE2L3g2ajhBSjhEMmxuZ244WDdhYUFyOVFWc25USldZVmtzMGh0MzRTWU9NZWsvaW5DbU10RHNrU3JPNytXVEVmQ3VDS2tpcDdWR3o1MkpNcTJ2enptbXlLeW8ycWE4UmhVY2N5WGh5bThXR3g2b3UrK1NpSnF1NmZNenN3TUc0VHRYL2pMUmZYMjRUOGFvWXBaM285M2k5U3hrUW8wdDNPUTIwTkgrNGxvQnJXeWt3QVNHRnFXT1gvNTU1SG5vS2pHdWhjKzZiTVZGZy9qUzNwREpzWG4rZk11N2VpZEphdnlaNlVaamgwQThLTDVyN2p6QVhuV2U2RWk1LzRQNlZwT1VIWVhLQTVzckVjekZwSFVQOVJkVjNJdWlLNzZHUHE2cGo1TTVMaktkd041S0JOWHVsMGFnT2UycElJU2Ntc0hLUE1yYjFNNDJzRGxvUlFobmVwTmlvOEFSdjBZRDJROUdKUE9jQkhVNkVUSFdZejJJaXluOVBpalpSN1lTcDJwN3lpUUJOR3FqV1lHV3U2TE1sUUlkWVJDSjlwVFJ6eHVVOHJuenh4azhQUUNENXBETVJFQzRaZE1vU1hjbWNWY0h5TUNtQVVHbWlUUitPckFDckxwZ3lkdnRMK2tNSFV0Wkh2SDRNYVI3SXh2aUhGQUVRY3p2cUo2TFVrc2kxRWRPTE1JL1JzUGNOK1A1RXhNcjJ4azE3NlBzZC91ZGp1aDVTU1lzaGZkQ3Fma285Tnhhemk3eVlJNW9sR0VFNEtpWFVxVWtGZDNxd2t2SElWVUlhUDA3NVFUMnlYd1Zwc0xUSGFEeHo2RmUzbzBoNExrbGlPOGdHV2EvaXFrRC9Ebm04c3J5MGpXVm5QN0NKLzcxa2dCMVBaWHdwZ2EwMXJEZllhVlRNVnl4R1NJeXl2TFNOWldjL3NJbi92V1NBSFU5alNJakloUmtncHhUL0tNdjZpSDhsbFdISjF0ajgvUlRDRjBDbDJmNld3VGJGSlljTWFGbG5tTWlzMkFMVk9OUHM2VU12c08vUE93NUNjcjc5c0p6aWVXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUJ6QVZCZEZ3eVVxSWVuTEpWc1JIN1Z2M05WNzNNcXJxbi9wa3pBWHRraVVBWHdwS21WemRiZU5MbGVib2tEa29tc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTNtVFJtU3RTa0hieEEvRnRjZmhiMzM0Qm96MVl1WDQrWm5wQmxSU3d5VFRFMXVHTFlmZXBaYTBKOXBUYzhZL0diRTZ6WHVhK2ZkM09Za2s0Q3BZNWhJTlZBTkdiR01EMVlRbHBjby9yM0E2djhIN3NkTzVLN1NqWjhJVDVKU0xWc3BCRlUzeXlxalBjZFZHOWR5RC9McEd4YlcyN1FCby84dTJWaHBrbTlMY013M2g4aGlwNkN6QjZUbHB3VDFUNjdYSGtHejhVYTFDK1NML0VFemVxOUs5OFZUU1c0RlB5ZWNGWTdJVWM0MEFYUG1wcUtJcXRhN1NjakFZdkQ4aFpIM2QzVTFVNTMvU29jSkhLRGo0WnYxamJuRlRzam9kalYwZkhlWU9kdDUwUEZXY094WFlhejhqZ2dkbDA0QkVGRlVrMFNwZnYyenJkTjI1NUtGcjFtNGdVeHkzS2k3eUZBUGhkS3J5Q0ovaGpUUkpRY1REbmE2eVBTZnNlQ0R0b1JrbUd2MHlOZEUwYmk5YzRwV1BRZ3JWaTBRamR6SDI1WDBObkpBa2w1WVVpa1BsbEZaWGhuMmRRekxtTWpLUDJSSzZMS1JBNUFwSGdPWFpXbkd0MEFtY2ZVeXV0dzBHWVJHOWV3b0tBWVEzOEp0S3ZSc2RWSWk2RmM0TXlqZTJCYnd1TG90K2w2WXh4UDJGZWtVa2tpOThnYlFxMENscHZiaFoybjV2YzVxSVoxZnZiU050ZU5IaTJOc0RXK2hVWEU4T1loM0F4OXdBSzZCaE0wRGlueG82T1ZvejhhbHhxNDR0dHFraUFSN0c4SFh6bXVNTmpMcythOStRSTlxZTZEU2JBQlFqN1VGRWhQY1YxZS9nUFQvd1IvczVveVNTTHYzMzB0anJ6d283cGxMb3VuYy9zYTdVZUF4QmVyUVVxeTJBbDQxRGF3RkxlSyttYSthT01iT2VaOGRJQmJHWmpXUko2alhaSWVNNWRrV29hWTVjUlJjQ3AwOXFGbW1obC9jV3NRVjIvS2ZxL0RhMnUzOFNmWHJJMVZLMmVnN0MyT3ZrNVNTY3Nsc1JOUTBRZ290Qys0TUNVUkVNODlSZTdJQjkvaXdXdis3OXFJM1MvSG5LZnhydUZ2T1dONC93V0hSNjlvY2FoR3hPLzF0OXVaUXNLTDhOaDRtRitMQUZZamhaK1I0SXBCVnRlWHk2ZkdsVzhhUVExc3ptL1M5aUlrK2pZY2trU25vVmlZWnRtMnZHc1pWQ0lPY2wwdnJMSG1aTVZ5aS9HSjhUOWwvaVNRcSs5TkFEbVdTd1JzVzlqcktSMnV5d0dzOUJoRmVzYlY0WEpYRXZ4TU1Lakhwd2h0WkRRQUZLS0xmalU0bEx1UDFrRzFHejNmUWdWRzBDS2dRckd4d3lnOUpORng4bEswcGRFT08rRGFYelRySG9YeE0wYklzZmNMWUN3SzVsbElDS0FrOFpNVDZNdGFITXYweTdldk1qQlovMVlsdlE5ZWtMMGY2KzdoVzdiR1RoRU95N3g5SXl5YmJvOXhVOGtHUTBJd1N5c2JINzk5ZXlmS25sWlpYZFUvbng0V24xYTFDUHlnSzE0S3RpWFRkRkRRMkxnQ09uMnFvUFpmN050SUZ4ZEw2eWFlcCtDcXEydUVOb3BnMER6eFR6SGJxWDZEbWNQN1B5ZWpITk9WVWczd0RGMlJ3ZDNJa3lZQ3FnWm5ONkVyVzFWMjZvaWxGWXlYRlordjdFSEU4QjZNaExueHRMR2tSWlowK0ZGSTZLbitYb2U3TEwrMlphRG80L3l5bmtWUjdCRnVTcWh0S0x2empkYnlZb1Rvd2ltODVjNlJxL1JDWHR3ZzlSZzRxU0VSR2pqWnlGY0pRL1E2YUpidjBMcEV5Um4zcXBwNzV1VDN6Y2JUU1JSVFZqenZjdVhJRXJncjFEL1B1Z0ZtaE9XZS8ycEIxNWpVNDBpZSszYzg5b3lpYWVJTy81c2tkd1FQemc2L1lITlYvMXNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRkFlMWpXdmRCTXVuVlI4TjJSRlNBTzhNa0lKNm84THZVb3pLRGtNUUJ0NXAvY1dzUVYyL0tmcS9EYTJ1MzhTZlhENTJnS0Q2SDhYVktGZm1ESGFvU2hNc3J5MGpXVm5QN0NKLzcxa2dCMVBhbWIwcWFiVDgzRDZxbi9hM0dsSHlHeGFtWmdSSGFLMTZ2bVpFemFudVRET3pHMWFVcHZFQ3RSQjhFTWdhcGFRWExLOHRJMWxaeit3aWYrOVpJQWRUMjZ2RnBnYTBaUkxXUlAzakgwdHlyTllBNzVlQ1RmOWRJcWpZR2NBQTFyc1UwemVlcGRNWjhNSlhkNSt4YkFhWEEvdUpmc0dqUEk3cHNRYzhKbitmbTNNTGsrTkNFRjhMc1EwT3RnbElYTCs2M0ZSdnlHN25NY2V2SDRpL1hUMEIxQlhOUEw2cjhpNmJuYmUrUUpLWU1BOTNQZGJCY0RzR1RWYUxpSmxZZEVPVGZqWWJwTFVSQ2RseDlLL3B1RVhXK1xcXCIpXFxuXFxuICAgICAgICBpZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgICAgICAgICB2YXIgZXAgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgICAgIHZhciBzZWFzb25faWQgPSB5bS5zcGxpdCgnXFxcInNlYXNvbl9pZFxcXCI6JylbMV0uc3BsaXQoJywnKVswXTtcXG4gICAgICAgICAgICBsb2coc2Vhc29uX2lkKVxcbiAgICAgICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKGVwWzBdLmFpZCkpO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn55u06ZO+JyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+e9kemhtScsXFxuICAgICAgICAgICAgICAgIHVybDogcHVybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJykgPT09ICflvIDlkK8nJiZnZXRWYXIoJ2FjY2Vzc19rZXknKSkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+i/veeVqicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoYWRkX3VybCkubGF6eVJ1bGUoKHNlYXNvbl9pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nK3NlYXNvbl9pZCsnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScrdHMrJyZzaWduPWM2NGI0YzUwODMyZDI5ZTQwYTNkZGVkZWQzNjY3MTM1JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBhZGRfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhhZGRfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBhZGRfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzZWFzb25faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflj5bmtognLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGRlbF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWFzb25faWQ9JytzZWFzb25faWQrJyZzdGF0aXN0aWNzPXtcXFwiYXBwSWRcXFwiOjEsXFxcInBsYXRmb3JtXFxcIjozLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiNi45LjFcXFwiLFxcXCJhYnRlc3RcXFwiOlxcXCJcXFwifSZ0cz0nK3RzKycmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogZGVsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgZGVsX2NvZGUucmVzdWx0LnRvYXN0O1xcbiAgICAgICAgICAgICAgICAgICAgfSwgc2Vhc29uX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pO1xcblxcblxcblxcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlVHlwZSA9IGVwW2ldWydiYWRnZVR5cGUnXSA9PT0gMCA/ICgoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnKSA6ICfwn5OiJztcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlID0gZXBbaV1bJ2JhZGdlJ10gPyAnWycgKyBlcFtpXVsnYmFkZ2UnXSArICddJyA6ICcnXFxuICAgICAgICAgICAgICAgIGlmIChtb2RlID09ICdYNScpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ3g1UnVsZTovLycgKyBqeCArICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddICsgJ0AnO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIgcGljcyA9IChlcFtpXVsnY292ZXInXS5pbmRleE9mKCc6JykgIT0gLTEpID8gZXBbaV1bJ2NvdmVyJ10gOiAnaHR0cHM6JyArIGVwW2ldWydjb3ZlciddO1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGVzID0gKGVwW2ldWyd0aXRsZUZvcm1hdCddKSA/IGVwW2ldWyd0aXRsZUZvcm1hdCddIDogZXBbaV1bJ3RpdGxlJ107XFxuICAgICAgICAgICAgICAgIHZhciBkZXNjID0gKGVwW2ldWydsb25nVGl0bGUnXSkgPyBlcFtpXVsnbG9uZ1RpdGxlJ10gOiAoZXBbaV1bJ2xvbmdfdGl0bGUnXSA/IGVwW2ldWydsb25nX3RpdGxlJ10gOiAnJyk7XFxuICAgICAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZMSzh0STFsWnord2lmKzlaSUFkVDJOS1hPeE1MMzR0UHNKY2JGZ1lxMkl3ZXFSV2xjdG5ubjQ2ZEpIR0FvUTZTK1R4c1dKWjNFTGJVQUVmMVZ2MnhvTXJrbDNLb3FXdG8xdTd1OVNVdk50ajF1eEM0ZW51WklFM0lPVkpZZnVsclNJdXFuTUU4K2hsVjM4QlN0WkNrSmYwaVczSGRGMmlzQkhFeFRaZjRscEMyS2Y0dUFzUGZScVU4TjlqYlA0K3F6UHJZckcrWWFXdCtpbnc5WmFHTmE2MDdGdXZMZ0grNHZaYm1mL3RHblJ6YVF2ZjByaHZQbmZCZUV5YU1Bem1tdkFNeDR1MG80MnJ4SG1OS1N4LzJWWmxJcStScUNaeEpKM2JLY1FINCtGL2QwRzVZbVh5T1BaUk5ZTTdSb0J6OHplUUUvaHFCclViclNkYjNWdzhTRHNFeFUyaFdPRXIvMDUybjc0U0VkV1dkYzM3azlCTGFWUEpyZFBGcTNyK1poOGY2aVdnNk5YQnJCK3RVbEdTVlRqWmZzTEQyckJmcHVQZVFRV2RBRXJRSmhJRk05NVB4aDNTNEJIdFVvZFozRjIybWl0TEVmODZJUG8xOHlyZ0hNV1ZhUWE0dVFBNFpNRFQxYWhNODVrNis3TFRtUHR6Nk9OQXh2eUlUNzVzQ3hTY2swWHNMbGhHOWdWOHJVMGZsRDNlK2lXZWtqazFYeXJtZGNLZkZIR3l2SWZxV0Q2ek1SQWRGSUl5WHhOM3N0YnROaTNiUU1VWmdiWW1tcjNRbGUwakFIb1pSTUhkbDFCclMxc2RtTGVwV3h5SEM4cjZVMzVIbUJRTkhwZHZ6aTc3V0dHcjQ0UTRNZ3Y1UlhiSjllSk9GR3psaHJUc0RRejN3QVNXelM3SnhHOGNrNWZWMHVUUmNqZ0pQRkNJODZleEQ2NFQ4dG1za2VrV1hNdFpVamxOSVRQOVJPUE5LR253enJoRlYyUnZWcU5HMEVGSXNXMVd1YmF0YXNpSjZmWG1CVEYwZ3RNbUJLMWFzM0pIV1JoS3JnWWdGQVNkK0U0S1VBdU1QTHRRYjBmdGx5UWlBVFZzYVJyRnpia3B1WWxNQXMxUDlWaVVqL0V4b1hxQU1hUThaSnpvdHNQdmp3K0tQRk1mbnc4QjlFUWN2WjdjQW9LS082K25EU3lIZU0xZXcvdW9XSDJYSk5HTDFQVWM5czFUVWJhS3RVYlMyNmhXTkdNckd6RzJ1MTZvVGxEZnh6QjdLTGpteUlpQ2hCNzQ2Q08zVG5aelhwNHMrdjEvcmZnUFl5QVNHakVqUk45cU1hejdJbC9tTFBpRVVEYWpyTitBVSs2VVpsU1VLWmFhbXpqLzR0SnRsbXBBM2kxOUQ3SXN3MWtEekh3THNZZm1ITVNra3YvOERKcFAyVkRQRzJGQW9SWmtsUmNjOWVVZGF1eUwrUWhDUnpSQUJxdnB6ZTJJWVVUTU1Ha1dtVzJ6VUZyZDdWU3NzcnkwaldWblA3Q0ovNzFrZ0IxUFk1WW84MXFpOGhYV0ZHL3NrVmkxWVRwYzBWNjVVZ1o2SkxJQjZLcDJPb3M4M29naVNGTURKaXNUMk9FQzZHVXhoYlZYYnFpS1VWakpjVm42L3NRY1R3eSszMndLVHpXVi8wM2gyUm9XZEoybm9sMHVDTUdZOWFEQ1BVYlpXVWVhZkxLOHRJMWxaeit3aWYrOVpJQWRUMkFMU1pvcGl2TU00SFZORjNtWTJYTDFBM2plc0lBdHhEUi92QjgvQUlsL1dMckdMYmtQMlNKeDhCS20xaFNOb2dXeWQ0eloxd2FKcXBOY0xiMGxwZnR6ajNCdzFrZ3lNWXBTL25GNS80ZDUyWkxrR0d6YVVNTzNLeGloUEkwdlY0LzZWZW1mRk9Md3pYa1JXcnhSeWhGeFBNY3NHQTZlQXBIbzFoYzFrOW0xVi9DVnVXV2N5Z3ErUjFwejRhV29xSktwdHZUUnVndjE0aHdKVCs3cndHV2l0T0ZWdUszTjEwYXJRS1ZaNmtUOVVDdkdLNEdSa3VaamwvZGJKZjRBeGFjOEZmTSt0Ty9vS05ZQjg1MGg2Z0NiVG1MM1RXMkV1RnVTRG9ZNXFrTXkyMmkxdTJlS095dFI0U1JMRkw0THYrcEVxZkhjc29MbWo3L3pJVXFPTkNrcGhTRk02ZGZ5ZENHOWM0VjVBc29tOHFPQm91enRnQnpLVUhUMG83MGJRM1VUaXQxN0Jab1ZjcWNiZUpleWR2VzNIQ2FWWnkyd2h3d04zYjE2VkhsLy9INGcwZ2lLZkY1N2hKZTR6aVNWbkYycFdzR3JSNWR6ck8wcGVxd0FnWnRvQkRvL21hTFhob3ptR2ZZQWM3d3pXbWJYUWVKdi9RQnJvdTI3T0tNRkRBWFAvY2p5RUVCZ0RIYjFyMVZYTUNpbVUwd3cyVlgwQ2o1WFYrZjBKNVc1N0tVT1NlQ2pidnIrVlV4cW8xNnh3OWtyOHRuUTJRejVrTUl3S2tNSVBpT0poSjJCQXArSmFYbGdNWElpNnJ6dDdJY1lkYnlib2M3RWpkdk0rc3EwQTVCZ1RMWTZFQzlCbmRIZWhodjBhajl1Tnp2b2p2a2d0OGQyKzV4TVliZFhCR1htZHl0aDVwQXluOG9MQkNXVURiV2U4MC85OWV0MWlIL0dESkVmb0RMRGY5cCtrNCswUWJ1V2RFcXVUTzFqQ0pGNTFoN1R4SGwvVVlhL21Kd3VkMC9ZOEQ0ZkVZWlgvVjNoR3BPRDlSMlptamc0SXJwUHB3ZWZqOHcwd2djZnlMejlaTW1zMVBvTW4wcUNubk0rVnU2bjZzeENsUGI4eVd4S2t6TWgwZXdFNG5Kb2NoV2JEazVyY2ZyRTAya3lrRlhGdHUremo4SEpnQUhNYldWbmpueVhJNzZVZ3FEUmVqQUh5Rm1XbVZLNldoR2s3bTZac0pxakppMkU1MzRlQjBqQVZZZjZKYnM3aEFxSlBnRWxlT2VBT1U0ekpNc0FWcmlzdDYzaVJKTWFFTVRqTzQ5OCthbU1Pcjc4V3JLRHpodzZSZ0IrTzlVaExQSzA0MllFN05mempDYjc5OTg3dTl3UVY0UWNyaHRsS09YY2w4TWJadEgwYm1iTmJBT3VYdUlGNWRySlVyallTd1ZRQkRBYVVhTFllemVTdXZyUXdGU0Nid2VUVUpHejFqN3VCVXEzbWFCNE9mSzJuN0cyTjFmQ0sxZUVhdzkyVW5sVkRPMFRmMUxJSTA4SEZ0c1JJbjZZMXAzczlWK0xKUTlpVWQ1WkcwTHdVOTA0RTc1UHB1VkxST0JZSFM0bXJCM1J2ck1oQVdDNmpkdFNURmtsdW12K2MyRUpScmJVcmpyNEErWTQwa0FOTjFVdDFyZHZNYi8wcFJPSlhWc0RmYy9BeU01bjNDZmx2RFZxU2dQSTlibEhGZTFtWjc1Q21JTFM2S3pkRjBZbDFNVkhpUFcwanZvZG54S1lUcHM4aEpOK2FJK2gxV1JHenJKS1pKaWNBdE5kc1dWaExmclZ4VkVQU2VtOWpHenNBYVdQa1ZCR1JPNmpXMlNXN20rYlZEdlJQYlZwYjZnU0JJOG9DVVlPbzcvUTBIYWJxbTdSUE1jc0dBNmVBcEhvMWhjMWs5bTFYdzUwSVJ2bjdWeVBKK3JEQjFHYWRLOXFvN0l1RHYxdC9Xano3ZHZwNGQ0UnB1R3Z5NFpRazlQd1Y1dFR0a1gyREdBdFE4ZmFpdkVJSDcwT2hrcHVDdG5Ia2JvelFDOUJZTHhVZGZJTHZQOHFFOTdyWllrK1hjcWE3aHZsQkc2bjNKZzU2czRycVdlWk5sQi9jRzU1Q1N0UlBFSTZSanJBRHB5L3NZblE0UkVONlVsQXltU3JlczJZWFJMVGFFY1lXa0pXOTgyQy9zZllzY2tiaXpsT3NZc0tBRnAzWHNnRFFSRGFhbyt5SE5KQXBlVlJLMW03aDE4cS9LYlF4RmNwbkRiR1gyTVJ1Y1U1UFVQSnBreXZDbEV2Uks3azF4Mm4wemF6QVE0Z1pmRHdzTS9pbnZNUVRLZVFldHpJcjYvWndUekhMQmdPbmdLUjZOWVhOWlBadFYvcUhNNXRZVTFod1JTcmQ4NUtIMk1wZHQ3TVB0V2ZxNE5kT1lXYk5oUFA4eGxMNkxnSEFXbE15QkRac3VHeUh6RTh4eXdZRHA0Q2tlaldGeldUMmJWYjJXSE0xTVZQZU5QMkp6V0tuVTBIUXViYW8vNDFQcUloK0NXQlIzSFVGWVJ4aXBFQlFiS0EvbUFwQk4xcEhDd0JQTWNzR0E2ZUFwSG8xaGMxazltMVVDUjY3aHY1OWVtNG5WUFptalU1azFCOWJJZHpJbDdXckoxZi9TVW13dnE4anlNR204VEpYaUtnRkV5NjIyZW5rVHpITEJnT25nS1I2TllYTlpQWnRWQ3JsUm5nVEVKQnFWMml5czZxeUxUSjFDcGJuNTFjS3RlNThlTktSa2xDRHVYRmMzR3FsWTBDZUc2RjNRTVZ1cUJNRU45cFhzbW53S3hzRTY1L2ErZWxxZWZMS3lsN0krT1p2K0tCSG5ZWDc5V2pCYjMyQkdoR1puZDFRa3kyeEhQdmY0U3grL3RZTjJ6bmNtcFFxU3d4UE1jc0dBNmVBcEhvMWhjMWs5bTFWVXVVR3hST1pTM0tDRTk2bmFVRjc0bVJtcmRPL2pwdElIZ01qQytHNlY3QnhaVEppdE5FTHN0MEZDSituK0FNWVR6SExCZ09uZ0tSNk5ZWE5aUFp0VkJDUytMZllxclNCR0hrZVlsYXFnYndJTXhFZDFPVlB5Smh1VnhBVW5EdHJLVzBDbnZ1cDh6QTNDVStpTVRsVFJmMk5mSmN4ZWo4ZGlqWTV5M2YxblJXUkVPcFltcllYenRmc1I4UitZK1RlWXhBZXV1N3Nnd3VpVENHcXhjeHE4Y1hGMk8remxhWGVtNUh3SE5XOUcvLzNlbnVrNk1LMkJ0dENRQkhyaXBZb0dBMSt2VStkSi9GK0xSMWlCTHQ0eS9Gc1B4ckpQMXh2djAwWkZrWGdjeUdFaWF1YW1Hd1lkbG4zLzgrdEZnWFJJODJyOWdjc0dYVHlnSU9URjl5aUYwZ29DaDROTnlyYTVTUHpTd2dvbjNjc24rTmhBUVJKdlNGc0xYTEg4Ri9mQ1NDandsL3BpMkdHWTRuQlVlazN3SzZjUUdXNkIrb08zaktTVzlRRUcwL09nSFRieXhiUjlFc3BvbG1ObEIvR3FTTDRLT01ZYXdOQzB2Z1ZaZEpCNWJIbHV0Z2puVHZ2N29ZeWZlYSttSU8xakdiWStqVThWTHgxWVpTSEVOU1RqaTI3NFFqMktPckZFenBYcWlRMkpLWmxtRGhiOUxKOE94Vkx4OEFISGNQNm55V09oaVljRnVRTUZ3ZjlVUklHSHJ6cmp6cHBmN2dzS25KbHRUYmtsbDFsc2ZVSFNkNVpTQUY2UUUzYjhvYjV4NUhtWkZVUVJrVTk0UGxDSHRXNUVGd3dIcUx3czF3M0d4ekdNaHRxZkU4eHl3WURwNENrZWpXRnpXVDJiVmVFN3lNN0x4cXc3NzEvM25OYjc4T3ZwNHViRmNpUnY2QnZYY1Y5MVgvd2xBYjY2Z0RxeXhtN0MrakRsODVQTEp3ZElSQmtlcTBVcG1LUnZsakFHVUlvTFAwb0NuakZ4UFZpbnF6bUFtUHlseFJmb3ZWWmM1UlRHY3psOHRpQ0lRRktlN2hQbno4UFVlVHhMMkdVUzk3NTN4UDB1Z2JKTkgwa3RNRkdxWExRck4yMGh5eGp5RktOT3k1R1FMMWRsMzJWOTZjalZRZXVsMms1WElST1BhV3hsNjBqNVh6NkdQVzB2c0NJcEsreGl5eXZMU05aV2Mvc0luL3ZXU0FIVTl1U3dCTXZQeGdqMlRXT0Q5MU5abDVLb0pjK3p1M2pwVlFCRWd5SEd4dGk3U3owT3lzVXRaZ0xFSVc5YWRTZnlpMncvc3JtVG04SDBNNkt6R3RuU2M4YTBWVndUMnFRb25uZ1NSNUs2UVQyc0VaSnJCczVCOFpEQmtqYWZRNHNScFJFYU9ObklWd2xEOURwb2x1L1F1a1RKR2ZlcW1udm01UGZOeHROSkZGTldQTzl5NWNnU3VDdlVQOCs2QVdhRTVlaW5PSTdVQXpsZDhISVMrTFUwN29MaER1Vklhc0k3QWdiZlljYnY4eVpCeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRnl5dkxTTlpXYy9zSW4vdldTQUhVOXQ1WGJxUGZMRzVBQVVFdnJjaFM0V1poY2xmTjBWcTAwMUVDLytVQVhhR1M1YjBoa0pWT1VDdEN3c3pWdXlBZVVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiTEs4dEkxbFp6K3dpZis5WklBZFQycG05S21tMC9OdytxcC8ydHhwUjhoc1dwbVlFUjJpdGVyNW1STTJwN2t3enN4dFdsS2J4QXJVUWZCRElHcVdrRnl5dkxTTlpXYy9zSW4vdldTQUhVOW5NeUdMSUhsQjJRUklZNkR0QWc0bHpMSzh0STFsWnord2lmKzlaSUFkVDJnRHZsNEpOLzEwaXFOZ1p3QURXdXhUVE41NmwweG53d2xkM243RnNCcGNEKzRsK3dhTThqdW14Qnp3bWY1K2Jjd3VUNDBJUVh3dXhEUTYyQ1VoY3Y3cmNWRy9JYnVjeHg2OGZpTDlkUFFIWFpSRWhjZGV4MUtNTGMrZzRJK2pjeHl5dkxTTlpXYy9zSW4vdldTQUhVOWdUdFZPRkY2a3dhbm1zR1NkSDJpYUdjMVluNUs3a0g1VlhENnl0Z3E2bzNKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemlkYmszNTQybWpMUkt0eWlFZXl2MXRzNnlhZXArQ3FxMnVFTm9wZzBEenhUenFIMXI4M0p5dXZRczRzVlhrcjNDZkxLOHRJMWxaeit3aWYrOVpJQWRUMnlBSXVNd0R4dklmVUlHOU9adURzSTlxQW5CVzFGaTB1ZGZiVDloZzZVNEI0bGxSdnVLeVM3WkVSekViZS9KZnY4Z05FZDhUU1lCOSs3MnZ5cGlsMnJUYjd5NldGbFpRYTArZkI0NFRFNnF6eGt4UG95MW9jeS9UTHQ2OHlNRm4vVmlXOUQxNlF2Ui9yN3VGYnRzWk9FUTdMdkgwakxKdHVqM0ZUeVFaRFFqQkxLeHNmdjMxN0o4cWVWbGxkMVQrZkhoYWZWclVJL0tBclhncTJKZE4wVUNQeTBkTnJpc3lzS09NdVVNUDRGcFlsSWxDeEF0OVFGYUlhSW9VdGxBYWlZQ3EzUW5NK1JZd2gvNnRKdzNjU3FobUhXazlyQmFqNzFOa0FDVXZPWHI0RFVYOUFaVzJtNGtvaVhkMVhKdUUyS3g3ekVqVzBhbWdmekJaREpvL1lLUitqU0J2cEk4QUJZNjJKTk5VTGEzbXRxV0RPMVhnTDJVbHNkT0RKbEl2VFVxM3oybHQraW51a0xsbGFtWmVmQitKdnFzcXYrTmVZYk9KeHhHbXRuUDdxOXBWMHJSbWYrMU5lKzFPK1I1VXNyYUpLWFBVeVlSYjB5N29vVGtMRzFoNGhHQWdFdFJqVE9rdGtYbkY1QlpUR005UnlRUnVhd2MwYkJPbXRIWDFoY1Q3cnQzdERrc1hKZmZsUHl5c1d6aFBYTE0rRmR4NWRDWVJ5WnpDL3hpeVpyZDFSb1BaMnUrMFF0YnNLMnVnUnB6UTQ2OWxuZHBKaHJ3YWV5aCtvSEJTOEZ5dytzL1hCMzFNSDlLSkFvMEpFQVlaSzIyNTJpRVlIZ28zWHVOMVo4YjlJNWJvb1B6dkwwMUlpK2tBYWhzc3J5MGpXVm5QN0NKLzcxa2dCMVBhanJ1cVkvYkw2djEyMDAybWE2MFN6WmhUbnl5UVpkWDlNNTJvQ0FraWoyL1lOdStIcFg2NzlkbFpTK1dhaHVRRWpqdjQvUk1hSlNmU0tERFI2eWx4TmhNWXdna3pGcFdRVFEwR3FMcWZ3TElJelZzMmdSM05PT3dzbDl5a2FDeGlmRTQ1T1NMUWFZK3NFQjIxTFhLZjJSV0lxYWJLaTdWbEJXdVZxeksvTXhiQ21qS1BXS1VGcEp6YTgwZ01YVW5GNEltM3lxRWZ0MXJmc0tVN1NnNmU0aFpxelJtYlFZZHZFN2NlekYrZjh4Y0Q2eVJja3hPUmRHNnJQT0JLaURNZmc2M2VIdlppVWp1bFBFNUl2SkR4b0tCTlh1bDBhZ09lMnBJSVNjbXNIS0FnVEZGamJ0YkNmZTFUaitpeDJHVVROd3JIVXpxWUozSXF4eUh0T2FyMkhGMW1MNUsvdXBTWTN6VDBiS2pjSHdjc3J5MGpXVm5QN0NKLzcxa2dCMVBaUHhkK3pYQmhJbGg4cHY0eVVyWGJNZ29zTU5pWURCYlVabUd2VVZCOVkvVXE1UXlZUjhqQmEzVDZxcXFkOVBjREdqclRJNlliaEVhNG10aXZWRjFuMUo5ZlVFY1NIV3ZrOGZweW53K0JrWU9lemhJWXdiaGNYcktKTjNYajRYQUEvanQ2SDMyNTRGYzRtUm91N2RZbFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlrS0FyVUtWRjJPbUFFT3RSUFRMb1VyTEs4dEkxbFp6K3dpZis5WklBZFQyaVZTbjJYNk9LOTBSZkVxamtDL3JJU1l6Lzd1Y3A2YU0zVDE5Y0pweEVySExLOHRJMWxaeit3aWYrOVpJQWRUMnNNaWRzSjUvOCtVK1pMWG9va3RTNy9abmEwMmZ2QWhKZ245Z1JqU3p3QzlkQ0J5b1V0OXBZWFBsTnVkZjdoNkJwejZxd1d2TUducjFmWllhMDdiZnI4c3J5MGpXVm5QN0NKLzcxa2dCMVBhanZ1Y3pyUVFVMEkyVUFhOFVKZFB1TWpCSHpZbVdPQm1qbDhLaDIzK1Q2cmx3V1JWZ0Y0N0hHeXdWblZ6cEdDYk9sREw3RHZ6enNPUW5LKy9iQ2M0bkpmanJndDZFblBqWFovbkNKTVB2V002VU12c08vUE93NUNjcjc5c0p6aWR3WjQ1Q1hOR3grUzhPTlJ1MGNRWXlFOWNzejRWM0hsMEpoSEpuTUwvR0xKbXQzVkdnOW5hNzdSQzF1d3JhNkJHbk5EanIyV2Qya21HdkJwN0tINmdjd3k3WW1NSEFEa3N1bU41SHJqbFY0TXNyeTBqV1ZuUDdDSi83MWtnQjFQWjk2dmVGZjVvMDZIbEZoRmtFYmpWTmFIaFZXZ0g0ZlRNdGt1ejViRG4rQUhnbmpwd3lHL2hJTDUwR0lQWG8rdnJZVEFhQnlBQlFXbzVQMXBWdUtEWmNcXFwiKVxcblxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlcyArIGJhZGdlVHlwZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogcGljcyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBiYWRnZSArIGRlc2MsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IG1vZGUgPT0gJ+ebtOmTvicgPyB0cnVlX3VybCA6IHB1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKHYuYWlkKSk7XFxuXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLCAvLyfnm7Tpk77mkq3mlL4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsIC8vbGF6eTEsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICd5aGMnID8gZ2V0SGVhZCgn6JCk54Gr6JmrJykgOiAn6JCk54Gr6JmrJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAneWhjJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICAgICAgaWYgKHYudmlkZW9zICE9IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2U7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAvKm1vZGUgPT0gJ1g1JyA/ICd4NVJ1bGU6Ly8nICsganggKyBydXJsICsgJ0AnICsgbGF6eSA6ICgqLyBtb2RlID09ICfnm7Tpk74nID8gbGF6eTEgOiBydXJsICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IHYudmlkZW9zICE9IDEgPyAndGV4dF9jZW50ZXJfMScgOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdyZXBseV90eXBlJykgPT09ICflvIDlkK8nJiZnZXRWYXIoJ2FjY2Vzc19rZXknKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzor4TorrrljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn6K+E6K66JyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xhYmVsJywgZ2V0VmFyKCdsYWJlbCcpPT0n6K+E6K66Jz8n5YWz6ZetJzon6K+E6K66Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignbGFiZWwnLCfor4TorronKVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc5o6o6I2Q5Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+aOqOiNkCcgPyAn4oCc4oCcIOKKmeKAneKAnScgOiAn4oCc4oCcIOKKleKAneKAnScpICsgJzwvc3Ryb25nPicsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+aOqOiNkCc/J+WFs+mXrSc6J+aOqOiNkCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn5o6o6I2QJylcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICBpZiAoZ2V0VmFyKFxcXCJsYWJlbFxcXCIpID09ICfor4TorronKSB7XFxuICAgICAgICAgICAgdmFyIHJlbHkgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9yZXBseS9tYWluP29pZD0nICsgdi5haWQgKyAnJnR5cGU9MScsIHt9KSk7XFxuICAgICAgICAgICAgdmFyIGNvdW50cyA9IHJlbHlbJ2RhdGEnXVsnY3Vyc29yJ11bJ2FsbF9jb3VudCddO1xcbiAgICAgICAgICAgIHZhciByZXBsaWVzID0gcmVseS5kYXRhLnJlcGxpZXM7XFxuICAgICAgICAgICAgZm9yICh2YXIgeCBpbiByZXBsaWVzKSB7XFxuICAgICAgICAgICAgICAgIHZhciByZXBsaWVzeCA9IHJlcGxpZXNbeF07XFxuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcmVwbGllc1t4XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgICAgIHZhciBtZW1iZXIgPSByZXBsaWVzW3hdLm1lbWJlcjtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtZW1iZXIudW5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IG1lbWJlci5hdmF0YXIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c3Ryb25nPicgKyBtZXNzYWdlICsgJzwvc3Ryb25nPjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgdmFyIHJlcGx5ID0gcmVwbGllc1t4XS5yZXBsaWVzO1xcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB6IGluIHJlcGx5KSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVzcyA9IHJlcGx5W3pdLmNvbnRlbnQubWVzc2FnZTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBtZW0gPSByZXBseVt6XS5tZW1iZXIudW5hbWU7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBtZW0gKyAnOicgKyBtZXNzICsgJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn5o6o6I2QJykge1xcbiAgICAgICAgICAgIGZvciAodmFyIHIgaW4gcmVsYXRlZCkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlbGF0ZWRbcl0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHJlbGF0ZWRbcl0ucGljLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogcmVsYXRlZFtyXS5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyByZWxhdGVkW3JdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDFcIixcInBhdGhcIjpcImd6MVwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV07XFxudmFyIHN1cmwgPSBNWV9VUkw7XFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXG52YXIgeW0gPSBKU09OLnBhcnNlKCd7XFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdKyd9fScpO1xcblxcbnZhciBlcCA9IHltWydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJytpZF1bJ3Jlc3VsdCddO1xcbmZvciAoIHggaW4gZXApe1xcbiAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK2VwW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6ZXBbeF0udW5hbWUsXFxuICAgICAgIGltZzplcFt4XS5mYWNlLFxcbiAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9nejI/dXJsPScreXVybCxcXG4gICAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gyXCIsXCJwYXRoXCI6XCJnejJcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbmNvbnN0IGhlYWRDb2xvcj1cXFwiIzM1OGNjZFxcXCI7XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBmZXRjaChNWV9VUkwse30pKTtcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG4gLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gZGF0ZS5nZXRGdWxsWWVhcigpKyctJzsgXFxudmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKyctJzsgXFxudmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbmlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG5lbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxuXFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7XFxuICAgIGQucHVzaCh7XFxuICAgICBwaWNfdXJsIDogcGljcyxcXG4gICAgIHVybCA6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICB0aXRsZSA6IGoudGl0bGUsXFxuICAgICBjb2xfdHlwZSA6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgIGRlc2MgOiAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZVxcbiAgICBcXG4gICAgfSk7XFxufVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggeWdly3mkJzntKLkuIDnuqdcIixcInBhdGhcIjpcInNcIixcInJ1bGVcIjpcInRyeSB7XFxuICAgIHZhciByZXMgPSB7fTtcXG4gICAgdmFyIGQgPSBbXTtcXG4gICAgdmFyIGNvZGUgPSBnZXRSZXNDb2RlKCk7XFxuICAgIHZhciB4cyA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgndmlkZW9cXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAvL2lmKE1ZX1VSTC5zcGxpdCgncGFnZT0nKVsxXT09JzEmcGFnZXNpemU9MjAnKXtcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJ3BhZ2U9JylbMV0uc3BsaXQoJyZwYWdlc2l6ZT0nKVswXTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciB3ID1cXG4gICAgICAgICAgICBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP2tleXdvcmQ9JyArIE1ZX1VSTC5zcGxpdCgna2V5d29yZD0nKVsxXS5zcGxpdCgnJicpWzBdICsgJyZwYWdlPScgKyBwYWdlICsgJyZzZWFyY2hfdHlwZT1iaWxpX3VzZXImb3JkZXI9dG90YWxyYW5rJnBhZ2VzaXplPTIwJywge30pKS5kYXRhLnJlc3VsdDtcXG4gICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IHcubGVuZ3RoICYmIGlpIDwgMjsgaWkrKykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAndXDvvJonICsgd1tpaV0udW5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOicgKyB3W2lpXS51cGljLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5YWz5rOo77yaJyArIHdbaWldLmZhbnMsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfop4bpopHmlbDvvJonICsgd1tpaV0udmlkZW9zLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIHdbaWldLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHdbaWldLnVuYW1lICsgJyMnLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY5om+5LiN5Yiw5L2g5oOz6KaB55qE5ZWK77yM6KaB5LiN5o2i5Liq5YWz6ZSu6K+N77yf4oCZ4oCZJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB2YXIgZmFuID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9iYW5ndW1pXFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ30se1xcXCJyZXN1bHRfdHlwZScpWzBdKTtcXG4gICAgZm9yICh4IGluIGZhbikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZmFuW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgaW1nOiBmYW5beF0uY292ZXIsXFxuICAgICAgICAgICAgZGVzYzogZmFuW3hdLmRlc2MsXFxuICAgICAgICAgICAgY29udGVudDogZmFuW3hdLmN2LnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhblt4XS5nb3RvX3VybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB2YXIgZmFuMiA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgnbWVkaWFfZnRcXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfSx7XFxcInJlc3VsdF90eXBlJylbMF0pO1xcbiAgICBmb3IgKHggaW4gZmFuMikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZmFuMlt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIGltZzogZmFuMlt4XS5jb3ZlcixcXG4gICAgICAgICAgICBkZXNjOiBmYW4yW3hdLmRlc2MsXFxuICAgICAgICAgICAgY29udGVudDogZmFuMlt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBmYW4yW3hdLmdvdG9fdXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8vfVxcblxcbiAgICBmb3IgKHggaW4geHMpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHhzW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgaW1nOiAnaHR0cDonICsgeHNbeF0ucGljLFxcbiAgICAgICAgICAgIGRlc2M6IHhzW3hdLmRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHhzW3hdLmF1dGhvcixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHhzW3hdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG4gICAgcmVzLmRhdGEgPSBkO1xcbiAgICBzZXRSZXN1bHQocmVzKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIHZhciByZXMgPSB7fTtcXG4gICAgdmFyIGQgPSBbXTtcXG4gICAgdmFyIGtleXdvcmQgPSBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyZwYWdlPScpWzBdO1xcbiAgICB2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYyNzAyMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD14aWFvbWkmaGlnaGxpZ2h0PTEma2V5d29yZD0nICsga2V5d29yZCArICcmbW9iaV9hcHA9YW5kcm9pZCZvcmRlcj10b3RhbHJhbmsmcGxhdGZvcm09YW5kcm9pZCZwbj0xJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjcuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjIzMDc2MTQwJnR5cGU9MiZ1c2VyX3R5cGU9MCZzaWduPTUwNjYyMTZmZWJiMjhhNjE5ODEyZTg4ZTVmZjFhMDM0JztcXG4gICAgdmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcbiAgICB2YXIgbGlzdCA9IGNvZGUuZGF0YS5pdGVtcztcXG4gICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogeC5jb3ZlcixcXG4gICAgICAgICAgICBkZXNjOiB4LnNpZ24sXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgeC5wYXJhbSArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHgudGl0bGUgKyAnIycgKyBnZXRWYXIoJ3VhJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzFfdmVydGljYWxfcGljXCIsXCJuYW1lXCI6XCLpobXpnaIt5pCc57Si5LqM57qnXCIsXCJwYXRoXCI6XCJzc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBnZXRSZXNDb2RlKCkpO1xcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuaW5kZXhPZigncG49MSYnKSE9LTEpe1xcbmQucHVzaCh7XFxudGl0bGU6J+KAnOKAnOWFs+azqOKAneKAnScsXFxudXJsOidoaWtlcjovL2VtcHR5IycrTVlfVVJMLnNwbGl0KCcjJylbMV0rJyYmJytNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXS5zcGxpdCgnJicpWzBdK2BAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcmJicpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG5jb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxufVxcblxcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxuIFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXG4gICAgIHJldHVybiAoWU1EKVxcbn1cXG5cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbmlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG5lbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxuXFxuIHIucGljX3VybCA9IHBpY3M7XFxuIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nK2ouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgIFxcblxcbiByLnRpdGxlID0gai50aXRsZTtcXG4gci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWU7XFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7ZC5wdXNoKHIpfTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt6aKE5aSE55CGXCIsXCJwYXRoXCI6XCJ5Y2xcIixcInJ1bGVcIjpcInB1dFZhcjIoJ3VhJywnO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfScpO1xcblxcbnB1dFZhcigna2V5JyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSk7XFxuXFxucHV0VmFyKCdYNScsXFxcIkBsYXp5UnVsZT0uanM6dmFyIGp4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dCcse30pO3JlZnJlc2hYNVdlYlZpZXcoangraW5wdXQpOyd0b2FzdDovL+aSreaUvuS4rSdcXFwiKTtcXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcpKSB7XFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7XFxuICAgfVxcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JykpIHtcXG4gICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywn6KeG6aKRJyk7XFxuICAgfVxcblxcbmlmIChmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHt9KT09Jycpe1xcbiAgICBpZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkhPScnKXtcXG4gICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIixmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KSk7XFxuICAgIH1cXG4gICAgZWxzZXtcXG4gICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPTEwMzI1Njg4MCZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgXFxcIuWMl+WfjiYmMTAzMjU2ODgwIyNcXFwiK3BpYyk7XFxuICAgICAgfVxcbn1cXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwge30pKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCBcXFwiMTAzMjU2ODgwXFxcIik7XFxufVxcblxcbnB1dFZhcjIoJ2xiMicsZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHt9KSk7XFxuXFxuLypcXG5wdXRWYXIoXFxcIuino+aekOWPo1xcXCIsYGhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5I0BydWxlPWpzOnZhciBkID0gW107ZC5wdXNoKHtkZXNjOiAnMjAwJyx1cmw6ICdmaWxlOi8vL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9iaWxpL3VwanguaHRtbCcsY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSd9KTt2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KS5zcGxpdCgvXFxcXFxcXFxuLyk7Zm9yKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKyl7dmFyIHQgPSB0aXRsZXNbaV0uc3BsaXQoXFxcIiYmXFxcIik7ZC5wdXNoKHt0aXRsZTpmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix7fSkgPT0gdFsxXSA/IHRbMF0gKyBcXFwi4oCY4oCY77yI5b2T5YmN77yJ4oCZ4oCZXFxcIiA6IHRbMF0sZGVzYzp0WzFdLHVybDp0WzFdICsgJ0BsYXp5UnVsZT0uanM6cHV0VmFyMihcXFwidWlkXFxcIixpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLGlucHV0KTtiYWNrKCk7XFxcInRvYXN0Oi8v5L+u5pS55oiQ5YqfXFxcIicsY29sX3R5cGU6ICd0ZXh0XzEnfSk7fXNldFJlc3VsdChkKTtgKTtcXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwgXFxcIuWFqOe9kVZJUCYmaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFxcbuWKoOmAnyYmaHR0cHM6Ly93d3cuY3Vhbi5sYS9tM3U4LnBocD91cmw9XFxcIik7XFxufVxcblxcblxcbmxldCBsb2NhbEh0bWwyID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCB7fSk7XFxubGV0IGdpdEh0bWwyID0gZmV0Y2goXFxcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9acnVpcnkvaGlrZXJ2aWV3L2h0bWwvamlleGkuaHRtbFxcXCIsIHt9KS5yZXBsYWNlKC9qaWV4aVxcXFwvamlleGkvZyxcXFwiYmlsaS91cGp4XFxcIik7XFxuaWYgKCFsb2NhbEh0bWwyKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCBnaXRIdG1sMik7XFxuICB2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KTtcXG4gIHZhciB0ID0gdGl0bGVzLnNwbGl0KFxcXCImJlxcXCIpWzFdO1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHQpO1xcbn1cXG4qL1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaOqOiNkFwiLFwicGF0aFwiOlwiZmVlZFwiLFwicnVsZVwiOlwidmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC9pbnRsL2ZlZWQvaW5kZXg/YWNjZXNzX2tleT0nK2dldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpKycmYXV0b3BsYXlfY2FyZD0yJmJ1aWxkPTYyMjUzMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImY29sdW1uPTImZGV2aWNlX25hbWU9JmRldmljZV90eXBlPTAmZmx1c2g9OCZmbnZhbD00NjQmZm52ZXI9MCZmb3JjZV9ob3N0PTAmZm91cms9MSZndWlkYW5jZT0wJmh0dHBzX3VybF9yZXE9MCZtb2JpX2FwcD1hbmRyb2lkJm5ldHdvcms9d2lmaSZwbGF0Zm9ybT1hbmRyb2lkJnBsYXllcl9uZXQ9MSZwdWxsPWZhbHNlJnFuPTgwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjIuNSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSkuZGF0YS5pdGVtcztcXG5mb3IgKGxldCB4IG9mIGxpc3Qpe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOngudGl0bGUsXFxuICAgIGRlc2M6eC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbitcXFwiIFxcXCIreC5jb3Zlcl9sZWZ0XzJfY29udGVudF9kZXNjcmlwdGlvbitcXFwiICBcXFwiK3guY292ZXJfcmlnaHRfdGV4dCxcXG4gICAgcGljOnguY292ZXIrXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICB1cmw6XFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3lk5Tlk6nik4cmdXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ9XFxcIit4LnBhcmFtK1xcXCLvvIbvvIZidmlkPVxcXCIrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBjb2xfdHlwZTonbW92aWVfMidcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeabtOWkmlwiLFwicGF0aFwiOlwibW9yZVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG5cXG4gICAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aXtuWFieacuicgPyBnZXRIZWFkKHJ4KSA6ICfml7blhYnwn5ClJyxcXG4gICAgICAgIHVybDogJ+aXtuWFieacuicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4vKlxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfov73nlaonLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9jb2xsZWN0aW9uP2dyb3VwPeKRoOi/veeVqicsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuKi8gXFxuZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn57Si5byVJyA/IGdldEhlYWQocngpIDogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICfntKLlvJUnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuLypcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5pS26JePJyA/IGdldEhlYWQocngpIDogJ+aUtuiXjycsXFxuICAgICAgICB1cmw6ICfmlLbol48nICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuKi9cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9wd2QtbG9naW4nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gIGlmKHJ4IT0n5pe25YWJ5py6JyYmcnghPSfntKLlvJUnKXsgXFxuICAgIFxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfoh6rlrppVSUQnLFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXG7kuI3nn6XpgZPmgI7kuYjmn6XvvJ9i56uZ54K55byA6Ieq5bex55qE5L+h5oGv77yM6ZW/5oyJdWlk5Y2z5Y+v77yM6K+35aGr5YWl57qv5pWw5a2XXFxcIn1gLFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcpKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn54K56LWea2V5JyxcXG4gICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknK2dldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScrZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOifor4TorrrljLo6IOKAnOKAnOW3sicrIGdldFZhcigncmVwbHlfdHlwZScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InK2dldFZhcignbGlrZV90eXBlJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaWsOeVqlwiLFwicGF0aFwiOlwibmV3YmdtXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJykge1xcblxcbiAgICBsZXQgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL3RpbWVsaW5lP2FjY2Vzc19rZXk9JmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZmlsdGVyX3R5cGU9MCZtb2JpX2FwcD1hbmRyb2lkJm5pZ2h0X21vZGU9MCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjM1OTUyODQwJnNpZ249NmU0ZGY0NTQyZDM4ZWVlMmZhYmYyMTI4ODViOTBjNjQnO1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIHNvdXJjZV9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKTtcXG4gICAgICAgIHZhciBkYXRlbGluZSA9IFt7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs0XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLliY3ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIwXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs1XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmKjml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIxXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNl0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5LuK5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMlxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzddLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuaYjuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjNcXFwiXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzhdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWQjuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjRcXFwiXFxuICAgICAgICB9XTtcXG4gICAgICAgIGlmICghZ2V0VmFyKCdpZCcpKSB7XFxuICAgICAgICAgICAgcHV0VmFyKCdpZCcsICcyJyk7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgaWQgPSBnZXRWYXIoJ2lkJyk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMCcgPyBnZXRIZWFkKCfliY3ml6UnKSA6ICfliY3ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzEnID8gZ2V0SGVhZCgn5pio5pelJykgOiAn5pio5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzEnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcyJyA/IGdldEhlYWQoJ+S7iuaXpScpIDogJ+S7iuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcyJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMycgPyBnZXRIZWFkKCfmmI7ml6UnKSA6ICfmmI7ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzQnID8gZ2V0SGVhZCgn5ZCO5pelJykgOiAn5ZCO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzQnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBsaXN0ID0gZGF0ZWxpbmVbaWRdLmNvZGUuZXBpc29kZXM7XFxuICAgICAgICBmb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgICAgICAgICBsZXQgdHlwZSA9ICh4LnB1Ymxpc2hlZCA9PSAnMScgPyAn5bey5Y+R5biDJyA6ICfmnKrlj5HluIMnKTtcXG4gICAgICAgICAgICBsb2codHlwZSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+KAmOKAmCcgKyB0eXBlICsgJ+KAmeKAmVxcXFxuJyArIHgucHViX2luZGV4ICsgJ1xcXFxu5pu05paw5pe26Ze077yaJyArIGdldEhlYWQoeC5wdWJfdGltZSksXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgaW1nOiB4LmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0SGVhZCgn6ZO+5o6l54K45LqG77yM562J5L+u5aSNJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt55Wq5Ymn57Si5byVXCIsXCJwYXRoXCI6XCJzeVwiLFwicnVsZVwiOlwiY29uc3QgeyBDYXRlZ29yaWVzSGVhZGVyIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jYXRlZ29yaWVzLWhlYWRlclxcXCIpXFxuXFxuLyoqXFxuICog6I635Y+W5YiG57G75pWw5o2u5rqQ77yM5Y+v5Yqo5oCB5Y+v6Z2Z5oCB77yM6Ieq5bex5qC55o2u5a6e6ZmF5oOF5Ya15aSE55CGXFxuICogaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4L1xcbiAqL1xcbmxldCBtQ2F0ZWdvcmllcyA9IHt9XFxubGV0IGNhdEluVmFyID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgJycpXFxuaWYgKGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKSkge1xcbiAgICBtQ2F0ZWdvcmllcyA9IEpTT04ucGFyc2UoY2F0SW5WYXIpXFxufSBlbHNlIHtcXG4gICAgbGV0IGNhdFVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvJ1xcbiAgICBsZXQgY2F0U3JjID0gcmVxdWVzdChjYXRVcmwpXFxuICAgIC8vIGxvZyhjYXRTcmMpXFxuICAgIGxldCBjYXRSZWdleCA9IC93aW5kb3dcXFxcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcXFwoZnVuY3Rpb25cXFxcKFxcXFwpXFxcXHsvXFxuICAgIGlmIChjYXRSZWdleC50ZXN0KGNhdFNyYykpIHtcXG4gICAgICAgIC8vIGxvZyhSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgY2F0ZWdvcnkgPSBKU09OLnBhcnNlKFJlZ0V4cC4kMSlcXG4gICAgICAgIGxldCBtRmlsdGVycyA9IGNhdGVnb3J5LmZpbHRlcnM7XFxuICAgICAgICAvLyBsb2cobUZpbHRlcnMpXFxuICAgICAgICBtRmlsdGVycy5tYXAoZmlsdGVyID0+IG1DYXRlZ29yaWVzW2ZpbHRlci5rZXldID0gZmlsdGVyLmxpc3QpXFxuICAgICAgICBsZXQgb3JkZXJzID0gY2F0ZWdvcnkub3JkZXJzXFxuICAgICAgICBsZXQgbU9yZGVycyA9IFtdXFxuICAgICAgICBvcmRlcnMubWFwKG9yZGVyID0+IHtcXG4gICAgICAgICAgICBsZXQgbU9yZGVyID0ge31cXG4gICAgICAgICAgICBtT3JkZXIubmFtZSA9IG9yZGVyLnRpdGxlXFxuICAgICAgICAgICAgbU9yZGVyLnZhbHVlID0gb3JkZXIua2V5XFxuICAgICAgICAgICAgbU9yZGVycy5wdXNoKG1PcmRlcilcXG4gICAgICAgIH0pXFxuICAgICAgICAvLyBsb2cobU9yZGVycylcXG4gICAgICAgIG1DYXRlZ29yaWVzWydvcmRlciddID0gbU9yZGVyc1xcbiAgICB9XFxuICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsIEpTT04uc3RyaW5naWZ5KG1DYXRlZ29yaWVzKSlcXG59XFxubGV0IGtleXMgPSBPYmplY3Qua2V5cyhtQ2F0ZWdvcmllcylcXG4vLyBsb2cobUNhdGVnb3JpZXMpXFxuLy8gbG9nKGtleXMpXFxuLyoqXFxuICog57uE5ZCI5b2T5YmN5YiG57G76ZO+5o6lXFxuICovXFxubGV0IHRydWVfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsLCBNWV9VUkwpXFxudHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0PydcXG5mb3IgKGxldCBpdCBvZiBrZXlzKSB7XFxuICAgIGxldCBjYXRfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNcXFwiICsgaXQsIGl0ID09PSAnb3JkZXJzJyA/ICczJyA6ICctMScpXFxuICAgIHRydWVfdXJsICs9IChjYXRfdXJsID8gJyYnICsgaXQgKyAnPScgKyBjYXRfdXJsIDogJycpXFxufVxcbi8vIGxldCBwYWdlID0gMVxcbmNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXVxcbmlmKHBhZ2U9PTEpe1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxufVxcbnRydWVfdXJsID0gdHJ1ZV91cmwgK1xcbiAgICAnJnN0PTEmc29ydD0wJnNlYXNvbl90eXBlPTEmcGFnZXNpemU9MjAmdHlwZT0xJyArXFxuICAgICcmcGFnZT0nICsgcGFnZVxcbi8vIGxvZyh0cnVlX3VybClcXG5cXG5jb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbkNhdGVnb3JpZXNIZWFkZXJcXG4gICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KCduYW1lJywgJ3ZhbHVlJylcXG4gICAgLmdldChkLCBtQ2F0ZWdvcmllcywgcGFnZSlcXG4vKipcXG4gKiDojrflj5blvZPliY3liIbnsbvpobXpnaLmupDnoIFcXG4gKi9cXG50cnkge1xcbiAgICB2YXIgc3lsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHRydWVfdXJsLCB7fSkpLmRhdGEubGlzdDtcXG5cXG4gICAgLyoqXFxuICAgICAqIOWIl+ihqOaVsOaNrua6kFxcbiAgICAgKi9cXG4gICAgZm9yIChsZXQgZGF0YSBvZiBzeWxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgLyorICcvJyArIGRhdGEuaW5kZXhfc2hvdyovICxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLm9yZGVyLFxcbiAgICAgICAgICAgIGltZzogZGF0YS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBkYXRhLmxpbmsgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeWKqOaAgeWIhuexu+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+PC9iPicgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIHBhcmFtcy5zdWJfY2F0ZWdvcnlfbmFtZSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcnlfbmFtZTogc3ViX2NhdGVnb3J5X25hbWVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMuQ2F0ZWdvcmllc0hlYWRlcj1DYXRlZ29yaWVzSGVhZGVyXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6KeG6aKRXCIsXCJwYXRoXCI6XCJ2aWRlb1wiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvZm9sZGVyL3NwYWNlP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cF9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJnNpZ249MGE1MWI3NzJmODFkYzc4MTJjZDY2MjI2YTgzMjUzODMnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLmRhdGE7XFxuZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5uYW1lLFxcbiAgICAgICAgaW1nOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjXFxcIit4LmlkK1xcXCJAbGF6eVJ1bGU9LmpzOnB1dFZhcignY2hhbmdlJyxnZXRWYXIoJ2NoYW5nZScpPT1pbnB1dC5zcGxpdCgnIycpWzFdPycwJzppbnB1dC5zcGxpdCgnIycpWzFdKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3suWIt+aWsCdcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdjaGFuZ2UnKSA9PSB4LmlkKSB7XFxuICAgICAgICB2YXIgbGlzdDIgPSB4Lm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxuICAgICAgICBsb2cobGlzdDIpXFxuICAgICAgICBmb3IgKHZhciBhIGluIGxpc3QyKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QyW2FdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IGxpc3QyW2FdLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2NvbGxlY3Rpb24/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pZHPvvJ/vvJ9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJ++8hu+8hmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM277yG77yGYnVpbGQ9NjEzMDQwMO+8hu+8hmNfbG9jYWxlPXpoX0NO77yG77yGY2hhbm5lbD1tYXN0ZXLvvIbvvIZtZWRpYV9pZD0nK2xpc3QyW2FdLmlkKyfvvIbvvIZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKyfvvIbvvIZtb2JpX2FwcD1hbmRyb2lk77yG77yGcGxhdGZvcm09YW5kcm9pZO+8hu+8hnNfbG9jYWxlPXpoX0NO77yG77yGc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdE77yG77yGdHM9Jyt0cysn77yG77yGc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNycsXFxuICAgICAgICAgICAgICAgLy8gZGVzYzogYVsnbWVkaWFfY291bnQnXSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73nlapcIixcInBhdGhcIjpcImZhbmp1XCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy92Mi9iYW5ndW1pP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5iYWRnZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6L+95YmnXCIsXCJwYXRoXCI6XCJkc2pcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2NpbmVtYT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcG49JyArIHBhZ2VudW0gKyAnJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuOS4xJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnN0YXR1cz0yJnRzPScgKyB0cyArICcmc2lnbj0xNjI0Zjk1OThkY2EwNmViMTI5NTM0ZTQ3NjVmOWIxYSc7XFxudHJ5IHtcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcbiAgICBmb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcIuWujOe7k1xcXCIgOiBcXFwi6L+e6L29XFxcIjtcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFwiIHwgXFxcIiArIHguYXJlYXNbMF0ubmFtZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t5pS26JePXCIsXCJwYXRoXCI6XCJjb2xsZWN0aW9uXCIsXCJydWxlXCI6XCJqczp2YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwpKS5kYXRhO1xcbnZhciByZXNvdXJjZXMgPSAnJztcXG5mb3IgKHZhciB4IG9mIGNvZGUpe1xcbiAgICB2YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzICsgeC5pZCArICc6JyArIHgudHlwZSArICcsJztcXG59XFxudmFyIHJlc291cmNlcyA9IHJlc291cmNlcy5zbGljZSgwLHJlc291cmNlcy5sZW5ndGgtMSk7XFxudmFyIHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaW5mb3M/YWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKycmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlJm1pZD0nK2dldFZhcignc3RhcmlkJykrJyZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcmVzb3VyY2VzPScrcmVzb3VyY2VzKycmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScrdHMrJyZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhO1xcbmZvciAodmFyIHkgb2YgbGlzdCApe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOnkudGl0bGUsXFxuICAgIGltZzp5LmNvdmVyLFxcbiAgICBkZXNjOifmkq3mlL7ph486ICcreS5jbnRfaW5mby5wbGF5KycgIOW8ueW5lTogJyt5LmNudF9pbmZvLmRhbm1ha3UsXFxuICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB5LmJ2aWQgKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeeZu+W9lVwiLFwicGF0aFwiOlwibG9naW5cIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoJ0xsZTBuYXlkc3pRMjUwSWhPeWRSQTFrSnIwWG5OYS9yRmxzamlFS1pXN3JldFpGZXVITkpsUEtXTUU0YTlCY2ZCOUIwaFRhd1lNOHYraEV3ekYzUlZOMnNSL2lIOE52eUhZNnV6S05nak1iSjg1R0xFZzBKeWpQSXRmR0dSZ3dKRlVWTkwxSUxlUk5iYWUzOVhWcm9EN1dLVUtCUGZ2N0h3cWoySFlGSDV1UUxwT1Zadkc0VWNZT3pBczdqOE5pYVBFVUpNUzQyNEJrYm5zMU5mNkZJRFhsZmtOSUlzV0JIV1JkTzZtcDczVnkydnU1aGcxYUcwQVZlazUrcFFjcWFreEVNOWNXR2dDSkM1bUtwVWlaU0V0UDkyc0tBOVNLKy9OSHNxZjEzQ090UVJpaXg2Z0ZoeUZoTGV6NytHcHVTYkxIMTNrMUZEVVpraWxZN09CUDh5Q1pQK1ltNDFZaGkveUlUeDNFbExtZ2ppQmV4ajBxVExqcktJWG54NEREWGlpcFN3L1lwVU5kcXRnVVhITmk5OGE3Y0d0TEUrOTVBcWsyRGNWL0gzT0c1aHBzd1NIQzIraWxyUkxQOCtUeUxUb2dyRlVhSllNeE9tcld3QWpVTTFGZkxzL01TeDYwMVcvdWVGREFtaE8vWlpvVVp3ZjNNWWJodGt2K0J4Z3lHLzc2V2ZEQVFiR0FSSjk0TmFqWjlwenp2Y3VYSUVyZ3IxRC9QdWdGbWhPV0hrL01TZEZEbEJxTURwRTh4OTVZajZ0TDR3RnN3Mk9hR09vZThNaHNuaUZZRUY4QnFNUFJlZDB6N2NCQzRSR3hENU5nVjFGS1dIQVBnWlBZRktqZ085Z2xOSnY3MUlTZ0lvOVNLUkJFakttRTRjRXZiL2tKRU9DRURMakJRclZzT1QxMU91WmNadWRDWkVPVHptcmlHSGRQZmZsS0JyRnNFaDd5bFV0UFpZRWNFcEN5MVdoMWUxWXhOS1poYk91azAyd3RBN0ZmSE5QMERxSVo4M0Y4UkZHMzhSWTM2ZkZJLy96THBDTUVNOFVYaHpsanc1cW9TUHZ6ZmhlUjEvR0YzTWpqRmZzelhaM1VDdmNCZzJ3QzFPa0FWS3AwdVNjR0xtZXE2UWFFYlFOMnVuejAycHBGVjdlSzlINzN5RDFFRWxOS0NRQ2trbUI2ZHhwcXRrVjZKaFJzeGlnTWNlWG40ZFVHdCtBdGZrQTJLdnltZTVya3VwcEJjZUZ2TWZoSUZzeFlHUjJVRTkrb3g2a2ZsWUJ0UHA1NVE2dWxJS3lkaHJrNVRBVHpNMml2OWY5eHFZcEpJSUJudElWSW9mM09hbkhKV3JFdHhRMmMxZ2N2T3QvV2JFL2xrTmRyUTMzSU9Zck9GYjJjYlo0TS9saDVuVnR6aWp2cFllME02TzV2K0lvWk1wT2lWcXNlN3lOaVhoQUh4RTA1emlpVmNqOXBpenBXekllYnpPNGcrS2thcUpyQlM2eXo1UVhtaUZjV1ZFU0lJSW92WUhlQ0tSRExnQm9qcUpkVGVJWGFSL0tlNDlzdDAzWDJIUncycjBCME1uaWY4dEVQZGExZ2xjQkxzVEVaRVcyaGJrZHRvRWljSVJGdmtpNTV4OUhRdFFUNHpwMlRXcDNhdTdUSXp3RGl0Q1ViYkRPVjF6RmdTSGgwODczTGx5Qks0SzlRL3o3b0Jab1RsaDVQekVuUlE1UWFqQTZSUE1mZVdJK3JTK01CYk1Oam1oanFIdkRJYko0aUJwK3hYaGpjKzJydmlEYUFPeUZDOXVsdmt4emErVFc0TWF0MGh4dFlEcklsK0Rwb3VlanlJTVRXOERzdlh4UFhDQVFibXdHbERFQWZPaXlxdHFMUTlIZjhnRFhFMzVRN2F5MHlBQkVlajFxS1dncmovWW5CYlkvZFlBT1BTSHBtbGRkRkxKbktwQXBkTVh2WUJzd3JXRjBDUlJTYjFzN0NaUmdNZk9Reks2SXo2L3RlaGFzbU9zN01sOXcvSHBuNW5LaDEwK24waUdYTXZ4NUlJK1NHcG9MdWVDdFJtSjdVVlZDdERHNnhldnhZTW0wNHNBR0dHSmFDREFoR0g4aWNiaElFMmIrb3FERkVwbVUwZVk3UnRHNzloUGhMK2dYWU95WU5VdkpxZWpsYloxL09kdkw1bll5Nm0zMEd3bDN6N3c1ZXNsWkNVQTBrYVJzNWttVU9MdkwwUVFQRDc0ZmFnQWRxR3NMSFVHRFdiNEJ6Q0xGMk1ZTEh5K0RzY2tLM0ZZSk13MFU1cU43TDcwMHNWU2FsZjZ0Szk2ZFdxem41ZUlyZXdmMWlHbzgzSWN3ejlvODFKbXVLQTFMcElTUzkwOThud0F4MXFQMUZ6UGN3SWhUU1Z1UjgrQW9vMXAzRGkwV0x3TktRTk9JOHg3NURtYUU2QkxQaURrYURMS0p5YytielgwaElDM3NQYjIrZGZ2bGtzQ25LMjJjR2hLMjVGczlPRlIzckYvVkZWU1JiREc3KzdBcU9rRTI0Ym9rRVVqZDhuUzVIanFwM0QvdWsrMFh6Qnk5MjIyWDZiSm1KaHdGbEt6NDZUQlZYZXp6bTNkelFXN09sKzBPcWYvRXgyQVkrcndQK002eEZSSFVYL2oyR2NHYTVtaGJKVXpSUkJkTzVJcHJVMk5zNkh0U1hDOUlxY3hXMVZsNWJDT2JNRzkrSHZ2enUwc0c3QVdOZ3VaSkNzeGtKWGhoZ3dmMkdCNkZQdTYrb0ZSejZENEEwNXNzRHNMTFZ5bVo1Y2dUYkRjYmVxMTlVbWlZYW0zUG43cVdJY2p1aDlPc040dGlGVHJyVUVQWklSWDlYazBVR0RZZmFiUTFwWGZ4TS8reVNoOHE3ZHduVkovZzdsdWloR09lZU53SFhBRkF5NG4zYWNQSDJYQmMvbXN4NVhLZ0lyZU9STVZZL2NGYjlLY20zb1daenpLNitIU1A4NXRrRktLbTU1aGc4TXh3aTVJeDlSUUUvcEdBeDFjc292U3AzalJQMGg2Mm82TmhGa3RDREtXempFVWw5Ym1hMjhmWnlpWTRkWEJFc0hCT3BLdkJ6QUEwbFJrZXpUbkV2dlhzOVo1NVVyQWE4WmhBRnV4NlpFTnc0Y01USXVTa1ZmdytWL1UvbW9tbHRKOXZHUGdpcWI1blpsOUt1N2QwUk9WMTVKM1FBc2JoT3hUNlNna0lWdWd1VmFUVlJjajBIVyttTU5ZS2JReW5yTlJBcUtEZUpxdVZ4YzlIbFBNNkw4cVBuWklXYmJIQWZVZkdidzBsUmx3U3VPcEY3K0EyV0pMWjRYelNnSGJjTVhrdWx6UFBEUDkvY2FSSUI4ZTJWa3pFWlNQblVpWkFwV1A2d1d1c0h1QjM5V0FNNzgrTkJpNEJwMm14V2pMS0hMV1FNRGVJWFhoZHhlY0s1cVVVZllMZ0lUaWg5RGVGcGdMTldjQkxHUUZiZFNOa0ozTldwY0c1NkRhakRJdUxVYThrMDBpOTRjSndBek1rSkJ4TkpiNWVoQlJrVnZXWG9zbXRKQk1kUmY2TkVic1Y5dTh2cFpqTkVvZ1Vrbm1sdEo5dkdQZ2lxYjVuWmw5S3U3ZDFacVRQem9wd1poaCtpdERwVWIwTHIyN2M1d05BQUVqcnBoT3FmZTBOajM5Q05XMExINFd4amYybHdseE10T0tSMUhRTC9DUHc1MXl5WUovTFZyUXoraWYzaUlCTlU0bkNnT2J1VzVKVUxUdnNRc3MyUm5lTEN3NnJwaHhnTXNkYXdNRWdaOXFDckNNN3lUTTBFeWxGeGZqaUlaS3FiSzEwQmFlMk5vSEQrR3VvVUtBUXA1U3U0QXFYU2ZLTHpteDRoV2JtU2lOVjdtQ0IvcmR3MXlic1B2Z0FGY0c4NU41M2tOanpjUHZiS0xPT3hIWEhZVldDbEJtSnByd0p0SEE2QjFXWnBHV1J4NU0vZ0Rtc0d6VlJtVnVCRHZtU0FaTXdJZVZyNWJ6REU4Nm0wTnFjbWdUTmVweHdxQit5QkJwNUt6ZDQyRUFRaHQyRUs1VDJ6TXh2Z1R6ZVMvejNLL3E1bFJIbDF6SzBKL3NRd0x4OXo4bE1WZzlSQmJBZS9lYjIwVm93emNxUGRlL3FpMGpITXdHY01hQzlkdXlXNTZ3bEdPc25rYmV5QlEvUGZSU1Nya1VHL3ZjYUNiVGE0SVQ4NFp6dHBOUVJ2YmVVbklBb1BrVy9lWjZ3T1VpYTRKc3lhdzk5V2E4K0U0TGpEbVowelJoblNIZ1V5Qy95YjlyWlQybEUxUzdKQklrN1laUFh5QTAwYTJMZ0tGRzg4WXpWODBoaStBVlR3UlpQazl3bE83Z1JTMk5SLzU3N25JeEcwSDIybGxGc2NtTjFMaEk5MUZEMlZiVlhicWlLVVZqSmNWbjYvc1FjVHd3ejd0dkI2ejl5TW1yRGx5Q012eVVkd0dJNnVyOUVhYzRxVzZFVXoxeEgyeTVUSThBZmh4eHhPckFRWm5FUmJUTUlDZGZLR1FHREplL1RkS1JLUXRnYnBiNU1jMnZrMXVER3JkSWNiV0E2ekRQdTI4SHJQM0l5YXNPWElJeS9KUk5kdnNYNkRsS2RZd0xuRlVRajJ0NkhRSGh0amtPbGkrdGNPblJsakFhMzJvcmZ4NzlWT3V2aU5xK21PcVIxTitDR1JGMmJtS1Uxa3BEQXJ4NFZ6RGRXSmRkRXJhK09rRm5PTkVHejRZZWN3RVJaVWQ3NytublBMMk1vQ01tRURZY3ZYSXMyRXVaSGRrVGZuMWl3ZW9nRDAxUWZ3cVpITkY4SHZsQldNVS9mNkVkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVI1ZWJOeXhxRlhoTGMyK29lZEs4SkVvTG9NRVE1RDNmSmFyWWdkOWp5NmZPaUJrRzhDOUlJVEI4bXl0eXlzd2NLdHdoeTEvMVdiSE83Q3ovUmRxVmN5SjM0QTJxMlozeXVpMVE1YTFvUG1PME5XTGZueWE0K3NSTlFya3NpUTRIdU8yNkdhWlVSOGtXekYxT3hkZHVhUFZ4SU5NYjY1OGNzWFZ1REdaNU1ZcFdkYmNrRlc2ZVlQRml1K3hTREMvZUR6c1hBSDZGTDNQVjhPcERVUEJtcFRlazJYWGZlS2RxVTJwUzltN1NDaUNCNXUycWJpS0MyYzl2QlYyNE02czhSYTRobWQrUGFqNEZUeXR2MzZTSDFiTEs4dEkxbFp6K3dpZis5WklBZFQyMmNyNTdqcSt5cE1QZU4xeTU5RHF2N3BzaEQrSlRJOFVnZFM0UVZsQ3dGMTdZcnZKSFBENDJLRkViZ1FZKyswajBkYWx5SFljZ2Y1OFF5QWw5K25uQkpaVlVWbElpbFE2cUVQc0h6YjZyTWJWNjdZU3FaSGNMdmZDVG9iUmk0cGFCQ0VVeGN5TkxRdkpTS2NLcFpBdWYyKzhLODF6S3l6M01kRWN1cnRzaG5zeFFBK29jREMyT3k1OGl5Q0s2ZFNqSXJUUGlGRlE4MEJtcGEyRDNsc2NMVm1ZNUlSNG9rOXRnZEJlWEk2WFo4dTJrOUtMSldkK0Zxc2Y4WU9RR3hPNkVIMmNDS08ydTArM0YvR096NisvT3J1dExhaHFSMm1rVkdJZEpLdVhlWUdzWm5EQmdlSmdCSlo4cklIQzBDME5XTEx4aWpMTEZKZnppMHB6R0lSSFc0TEFKQWhPL2ZMcFNMNTBSbHJoTVl2YlFzNG9adTFwZSs3OVhUNVJSODhkbFhzMXI2RDRzSkhZaDYrN3gza1BRdU1sczlyYzFueXd6QmRsMzVDSVp4RXc2Y0FDalA4WTRkbjZ6d05ZUG50OVFtRzJJVjRaNHJNVndJNXBaUWltVjRjQjFKeXAveUszdk9jRmVwV2JhMGlOTDd4QWhFR0R0czhJN2hLLzVOSFNDendzNjdUU2tKOFVIeXdHa3RTVEpDVDAxNXlwUUNhU25LbU9PcVVpbXhDYWhmUzRlNGY5WHRmQmxTbEdXY1oreXl2TFNOWldjL3NJbi92V1NBSFU5anhzQ1AycEs4SXBIOGpSeWFEeGFpR0ZMeE1tUXhjNWtEZ2c2dkdkUDZLeTI0QTJBMGVCaWVYYmdQZlh5SHM4MlI0NTY5MjJKejBwVkFHc2pQNDQzbXhpRStvNld2M0xuZG5tMCtGL1ExSGt2NzRQZHZJbUhETjR1ckdGOHRFQitEbENGUStsRlNxaCtiQ1BJdmh6aGU2Tnh6cThEaCtpb3p1blpJb2ZJenJpbzFnY3JCZkIwUVlkalhHMEZUUjdwZE41NG0yTXB2RUgweWZ0RW8xOW5ydkxLOHRJMWxaeit3aWYrOVpJQWRUMnRIVi9DUFNzS3Q3endjeXRhR3JMYWFvNDJEMjJzc3dUUkxQYUcvcTZHaTdEakVoaHdLbEJ4amp3N0lNeXRJSTNOa004Y2IrSnRFeWY4d0ZrVEVGaUZMVVlpbVEvaFBYSTkzenJYaysrdnFvZ0xydTB0YVhndGxNMTdxdEFmekdRdTh5VWRJNHFxWXplSnhYeGYwTk5aMm9CamVEcjJEaXdJOU9YUFV1Qkhic0w0YzMvbncxMEVtMlU2TUZCVWNyWmovRE1hU0Z4VmNaN01vV2wyb244R20wVm93emNxUGRlL3FpMGpITXdHY01mOXo0OWVnWlJRekw3aEtTVU01VFB0MzdBbWszNzljY3dwTHRQVFQyM0JoN1VobmtkRzBHVW9IdkhzeTk5R3htUWFSNG5heU8vclFGYm9xdXN0U0ZMck84MC9QdG5IOEVKY3dRYVFZWkp6TjFiOWJENlJySmw2elFJb213TWZZdXUrbThGc083emQ0L2NmcjZoaU9lYkhTS1ptRFBGZDNYUkplLzlDTm5MR0xZWEpMcll2RXZ0Rnp3RDhBM24zZGhYV1BpbWtBaXNGMFIrN1BoUTlWSkxXY0doOHRxS2dvVm9aN2t6Qkd1RDdTaDljKzJTcitTQUdINmFIQlQ0RnQxZXN3VW5iK2ZuSkdoYUhTQy9Tdm96S0NMbVdOclBROTRhWnVZeU9PdjBmbFBVOVB2OUtPUVV5KzVVdWRsTXZ0cWw3QklKZm80UGloL2xLOGUxTkc5Sk4wRDlNTHUyZjcrVUJCY2duY0I5RWh1Y0tRQ0pzUmhQTGdacFgvcitzTGduYlMxSGNCSzU2djdxTm1QUVl6bE1Md2dVRlFGN0FkZXdUb2UvWWl1QWJxY0tjTTFNd0xmSTRiZS9nbkc0YzhSNFU5QlAxR2w4MVo1VExaZldmZTF4NlY4R3pKSTk4N1Z1SzJZNzEwbmxFc0lVQUNwMERBK3AzYjZxdy9iRVVHMGJvTFB6b05ySVRHdE9Jd0VidVhpQWp4a3Zocy9KQXZ3SUc2NXY2b05TazdZeEpaekZObytqMWZJYXowK0ZCalc1Y1dmK3NpT3Azdlloa1hXbzVTbDZhQzduUXI5RHpoTjcwVE9pOW5CekhRUkZsUjN2djZlYzh2WXlnSXlZUU5oeTljaXpZUzVrZDJSTitmV0xCNmlBZFEvREY3d3lIOTl6SXBySU5VNE54ZXZiNkh5VkpQazUxWEZCMVNJZ1NJcnJwejNFajNKK1ZpZ3BnRWJoVlo2cXNGbDhBbjJVWXBBbDN4THkxdWNCRjJ4QnVxWktZYnBKVXREOUZ3R2VSa1Z5RTF0R3FqSHRRWWgvSU1ncXZmYXlMWkJ4aU8rVjNUQzJWUEZ6MnJvQ3h4TjhJTHp5S0NjY3hJWTZFWXNnMndMYjFiOUIrcldINEc4Ti9yZ0M5RDByWHJuUUtFYllwK2xYWGx0d0VTUWdQenJiNUVvUlB0eTlkaWJsU0JieHI0UHdFbC9HbnhSbEZacFlrOER5ZkZKZHVOODEyMVg1bVJXS1U2NjltdUczakk0THNYcmhsNkJWVk1jWE45a2FxOXF6T3IydlRmNklzNU96Vit4Z1FOQkRzTWlkc0o1LzgrVStaTFhvb2t0Uzd6QjlEanlFblRReFdYT25oSXc0azdXemo2cG0rWkk1VzFOMzBRYlZCK1FmT0lmRnprQThSM2tzb0R1SXhma2crc1k2a1BHczdNY3JTV0UydzBXWlpUY2lEb21UTnovYS9BQVJHYUtMRS9lNGtnMXIwcFNFZDVMcWZ2MkdQRDBDVkcrSUlSc3E5NUhNRnJYRElmZi93OWJMSzh0STFsWnord2lmKzlaSUFkVDJ4OUpjZHg4LytFTUw2c0YrUkJoWk9JaXpkblVDY3ZqTHZFM2R2alQyWEJpY2RRRno3MUdTT2VnamcrSGZ5c1RhOTRwNDZVcy9nK2l1V0hBMnNkSHVFR1lTRW5RbC8xWGtyR0kxd09xTGM0eFcvVHhmY0pPU0JZMWZPSTJXTkF5cEtTSjNYTHExYjRiSGxxNkJWeFJsN1pHcFhJQSs0VGpoamNOV0QzaFcwaFFybzA2ODF0SHRnNytiandDc1Brdk1VejBHNWtQWmhtL3lwMVp1YXlHOGEraG5MQXN2dS9NbEtuUFl3cmxURlBFTFBDenJ0TktRbnhRZkxBYVMxSk1rUnlDR3Z4YVRra1EvaWZGN0tkelZueHlRMmM4OHhRd0djSndiNWlGd1RJckxLOHRJMWxaeit3aWYrOVpJQWRUMmVtV3U0V0Q1Skw5cFlReXM2dXVUanBVbnkzR0NCcXRtbFNGN1dBcWIvU0ROTkd6eU5RN2ZhOGN6Nm8yQnVlSDduc2V3dExyV0k4MTM5a0RZN2J1d0lKbFpQTnJRTzE0bktDNEZSZFlUZDZ0R0xSemR6cFJRM1lTTjFlYm9xTHlEYWlEdHQyRWVvMlN1T05TWERLa0RQVXRETi95RVhoQ1FjZ1VON29MSjBwOVRUZ3NBNEltOTNSTC9IWG5FWnZxdWVlaEVOMFJndXlpRWs2eGZxanRHLy9xcm9kZlhZZFoyWGV2VUEwZTNRMU9EcXVzb2daNjlOUFR3Y01JSUVCOU9qbENkQ1h0RGxHRml3WWg5bnNLYVdZWjJoWno5cGFBQTk2NXlSQ1JUNkZTT0x4YW5SaG8yRXNsSS9leGRZM202aG5hRm5QMmxvQUQzcm5KRUpGUG9WS1NlVjRIYzJLK1BIcGRtQVU3bENpMG5DOHdTNkxWcE1TUzEyQjR6bTJKaXkvL3IzckZyQ2o4OXdDVk00cldNZUhqR05FcUlPa2NBS0lwaFRuOE4rM3RXckx1ZXZKQ1c4dUNQbVJxTkJJeDNvNXU5QWdnMkNveEJjYmVLaFNrZ3hjc3J5MGpXVm5QN0NKLzcxa2dCMVBaczhRWDB3MzMwUmJ0K24rcWZHT0tnbHRUaTlUVUlFK25ha093QlV3bEd6R0NvdmNqRi9lc2VZZmlzVDFrQVRaYTVDQnBSRWgrZm5jM0xldExoNmxKemJSekNPVTdodlltZnFDZlFJRUUyTEsvd251bzd4S0ZNNXh1N3dkY2JZbDdMSzh0STFsWnord2lmKzlaSUFkVDIraUZ3RDA4N2VuUzlRbW5jKzZUdEd3eXFjc3p1ejZqMDBCRklTL1NiTVZobkpBQytaUVdTb09ZU3N6a2VuUFlta1M5eUZjUGxGZmpCWm1oRGlkeUtuc3NyeTBqV1ZuUDdDSi83MWtnQjFQYkdhMklMMnYwSkwrMDV5cXBFazFSWFJzUGRkcXU5Ry9nWkJ3WXRiMDIvNjRMSlVjN21adHc1S3YvNFU4NG9mL1p3bDRicHFGOWF6NU5KcktLa0YveGl5eXZMU05aV2Mvc0luL3ZXU0FIVTloK3RsOVF4aTg3SzJoKzUvQjlXSGd6SDdYMWl5MjlPWkNvTWVsWEQrQ2xWeXl2TFNOWldjL3NJbi92V1NBSFU5aUVTTU9vdk1rQjdhdldhZ3FkVkFaWHpjL2dicE9seDBnc0ZqaFB3bjB1aExlMTJlZmEwbW9VNVoreGFzZFpML0dDajQzdENWQlRtRlVMcnZUaXlncGFHZG9XYy9hV2dBUGV1Y2tRa1UraFVHaEc3TGpBTVhoa3RFWGJ1ckdRWm5tY3RCTGFULzNrOHROYkhBcFZnS1hqTEs4dEkxbFp6K3dpZis5WklBZFQyM2x3S3I2Y2hCYTBWMEJ6dFB6R3VJekZYYmxQeDlDUGppYVdYSGgvc2lNRExLOHRJMWxaeit3aWYrOVpJQWRUMlA0bDAyQnVLQkRFMzBrdjlCYkYzU24veEk4enM0OXI4WElFMlRuR1RRWGpMSzh0STFsWnord2lmKzlaSUFkVDJUOWU2bFBxdUFUZS93eFYzWFRTVGlVRE5HNU96bXkxbnpPTVNyMElianM3MCtiZkZ4OGg3WUJnMDBBTXM2Y2lLejRtblc3YnJ1T0htQzQ0blhrZnN3cmw1RUxoNEV0WldTcXJoZmthcENvS2lmM2lJQk5VNG5DZ09idVc1SlVMVHcxQUlDWnlBQ0V4bjl3NlcyaUJWSXEyVVVjV0Y2TjVka0VPREdBSXdJV3A0WVFCNndyUzBiVHdaTC9Yb0dWOVhzSnczcnovRTI0VnpzQU1ZSjFqcEtBeEkxMmQ3MGwvekFDWUNrbFUvZHRSQWdVbktmQ0N4d2NMUXE0S1FxQUxkdW14UXd1K2ROQkJVb1g0bVBwRHpoVG5wVWNOV2V1ZGxUZnZkQTZWYWZXRnh5MEdtTHJoYmVNcUNPcTZUSHA3Vk9aU1ZVRHA1Nm5uSzhPajBicnJtOUFkM0h6ZTRhaXRUc2cyVS9mY0grN3oxcmNFRlFyd0FTdU1FZ0ZUL0RiZyswbjArb2NHRFhvZ3p3c3hBWkR5YVN1YlJzbXRWMDVCUUZUSi9CTnZ2L3VmNWtTWTlpLzk3S1U3SUZtWXhsOHNwd3prVHJpbzRqQVJINlp3VFhwUmxIOTZUWmRkOTRwMnBUYWxMMmJ0SUtJSzVXazc0SzV3SDMyU1lUc2hWT2YvaXl5dkxTTlpXYy9zSW4vdldTQUhVOXNRc1ZKem0vcFlBZk5mVmhYR1JNSjZTb0Qyb2ZrSDlKK1pTbkxmREpFODBqOG5HV1NqZkdxblA4bTNRN3NjbDhnZGNFc1ZTRFZ4cVFTeHdhaVJVd0RCaDVPVENsN0R2b1pxRHdvaXhwME81VnFLdnl4OFdDVXlPT2ZmeU9yQWY1NW9lVUtuYTVwMklBd2N0eWg0SVJuVW4xOVFSeElkYStUeCtuS2ZENEdSZ0VNUDVLNzhmYi9tZW9Qa2JBZEhQVWJDZjZ5Qjh5TzQrOTZXbVFNcXJFaWF6S2V5WnRqYnZsaWtiT2VNUDVmQzhtN08xTy9DQm5oZm5PckdZekhad0hrQ3Fjd3hBcXJCOVdrYkxMeUhNWnZwNWdHZ3JJb0tHaEZIRDVibmY5ZkF6enBReSt3Nzg4N0RrSnl2djJ3bk9KK0txbG1aQW95SFZpSDQzRnowWGFBMFJtbUJicEhKZkFCY0psMnBBa0tvSFZVY2JkNng1Q3pSUjgvT0F0bnFPdk50Q3ppaG03V2w3N3YxZFBsRkh6eDNMSzh0STFsWnord2lmKzlaSUFkVDJsaEJGM0gwUG85RkVXQ0F4K3YwbmZnVXNZV2QyaXdoODl5QU1yNmFxUmR3Yk1aZmNhSVByZk1HaWg4UTZSVVNkR050OXIyYVcrUTg1cUhGSnRpOUFmV00rbitsc2dsdzJ5Y1dKbThIQkJrRkxtUTBXcHNOZ0VBamRTai8rdzhCbDFVVXdoeG5Ma2MvenNpdEtMUnRySENyTldSY1A5VkwzVGQ4SGFVTzZmU2xxaDM2UnVjZnc4VFExQjFNV291cGpoUFI4T1R6K0NVa2R5S1BiRTdVajFVRHBoOWtZYXFYUE1sMS82bXBxMDJiTEs4dEkxbFp6K3dpZis5WklBZFQyT1BmWnFmRXJQd3Q4Zkpsb28zRkhvWnNIajN1TlIweU9qSVNaUUZYZmhkV1lndFVtYjNYTklESG9IR3hXbnE1TTZkUi9oQkJvNVY0aStUTFp2TVVxZUZKY1I0bnkxVERSZDh0TzNkQmQ5MDZSd24vQkNxSEtPTzBHS012eEZBOXY4ZlRtMU1QZnlyZ05sc3dYQXVaanlIOXNxKzUwd2xaaHFvSk1WbEsxVXErdDFCOElLWWVZMmQzL3c1M3RlZTlnUzd0UUlFU0tWTFJSU01leWN1TGdvb01ISkhnaExaZGJ5SnAwWSsra0VxcTFyQUx2RUtjZnVkT3VTMDJhMU82RTMxQTlZeW1RUHlWK29nQTVSYTdZTWlMZ1E2MFQwZW9TaytjaWk0aFBLSnhlLzRiZS9YMzJOOHBJSUJMSG5HcVR0akVsbk1VMmo2UFY4aHJQVDRVR05ibHhaLzZ5STZuZTlpR1JkYWpsS1hwb0x1ZEN2MFBPRTN2Uk02TDJjSE1kQkVXVkhlKy9wNXp5OWpLQWpKaEEySEwxeUxOaExtUjNaRTM1OVlzSHFJQWVQeUNOckRKMzVkelVxOHNyNzVrNXA5c2ZzTjlmNmR6dnhBb0VnTnpnd1Z6S1BGbHhXcXd6VXdheld5ZEdDU1dwRGxIS2dPSUxZSGlMelpkZkg1cHRjbDZQaUNEYlVndHhOclFQS05nWFVCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SUJvZ3liQ29BU3BHU3YvZFAvTmE5OWFhZkIrM3ZBNnhDN3NnOTFnR1JteHRsWE52WWlDTW1ERHpDWmhNZm5mL3FoeDFmOHZJT0Ryakw1aWQ2anhIcm1oQVJjVU94RDRqOS81OFd0Sll2YW10Q3p3czY3VFNrSjhVSHl3R2t0U1RKTXBnWnRpem9BWE41OWhRK1U1Q2hJUTBVVGpJcENDaGNBdldwOS9DSHlvNFJnOS9pcWlOTFNCT1c0MXBZdmdHVTd0SDFpUHVoZXgxOWJYTTVvOEU2V0NqT3lucDdOZ0FDVjMrUkF6NHJhbDFobmFGblAybG9BRDNybkpFSkZQb1ZDMVFPQ0dETy9vMXhYYjY4Z0dpSGlCQ3NzSDdXa1RzeFRmUFRxaXVYRzJOaVdzdW9OY1AvODQ0N1RPRHdCd1FoeGExZjNSRkwwcVZ5bHFHcmJQZXFmZ3dRWDBUTnVCcTlEL05USEl5aGVUdXdBb1ZZRzh2NGxNajdvcnZudW5Vd3dnazZVWCszVVViTGFBWjRLbXRkUjNoVHN4S2lpSzRScmlFcDA3NUVINTJsZGpSSmI0dWJJL1FYK3FkclRMeEZ3SWRZZVAvd2lpa05WT1hQTUNtN3VIdnJjSXB2aHFjVnRWRVgrRzlhTDh2UG56YytoSG54QTcwOGJENkxmSk5nYTNGeUhLaUJSM1VmOW4wRGdIR041WDFoeEdsUWJtOFVUTDlMSUJ2aUQ5NjBWN0pRdm1xQWgvazRwZGdHOXF3NFVnaE9oakV5NURtQ3ArZHY0UldPVU9hbTVxZCtLZWdra0VTT0c4a1FRZXB6cFF5K3c3ODg3RGtKeXZ2MnduT0o4Q0pSbDFFT0RNMFFZemt6TXR2OFhITEs4dEkxbFp6K3dpZis5WklBZFQyQ290cm9SUHI5TEFMMUt0K2Q3RDNNZHR4TmFzTFR1SmRESStxTmJiOFBUdFB1dC90RHFPUFhpMTF5dTR6VjMzblJZNkZqL1pSNW9LOG93N2tXbWJzMCtFOEdPaGhHakY1YTdzYi9RWHcyUU9EcXVzb2daNjlOUFR3Y01JSUVCOU9EQ1dPS0IrMXZyRktURmg4ZldvT0JnTFJKckU3NTFrMFNhRERsVk4zaXNOSkFPc2ZYanpHdm9ZelcyYmFwakdscXlqajZmeUJVKzVJd044RnE0bEJ2Z044WUk4Vk1kOGJid0lqdko1dktXQVNmQUFFQnkrTERWYzZzWHRjc1B2V3QzK3N1czlJMjJ6SzJUajdoUzZwNk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJ4L2FMelNMUW10d080V1JvTjIyS1lWSkEzL1h6U0VnYmduZWd4cXFOT0JpM3Rkbm4ydEpxRk9XZnNXckhXUy96djdxMlUwSEFtU0hjYitudHRsc1ZMak1qUndqYU9nQXRSZWozZEV2U1BWRncvaTBhQ0sweE1RYkxLaFdieHRRQ0JrbGZGYVlWRkxQWlpFMG4zUy94ajFCUFRtRmRhVUd5WlJaMjZRREdoT01zcnkwaldWblA3Q0ovNzFrZ0IxUFl6TE5JVDY3c3doSjFURW5JQUxjVXMrNUpsd0p1N214VFJVNFdYQW5CUDEzZ2U1Z1ZqajFOYUo2OHd1YVBpVmg3QWQ2VVBXV2dSNndMSVBuVFVmdEZqMHA2VlhTSlB1VGVhd1JSUTRjM2NyWGVRbXRDSENwVWdYS1ZvdGNEZHpXQVRUbk9LSlZ5UDJtTE9sYk1oNXZNNyt1NGZMN00xNno4N1NKRUhUVFRtbStLOU5ITnBtU213SmJoYXNad2RneC9BZDZVUFdXZ1I2d0xJUG5UVWZ0RmpPSWloRi9DMzFnc0s0RXZ0dXVzbVVrODljY2tBUDVpdm1weUdSTDY2eEtUM2JCQS81NGxWT2lyVnhyWlFCL3c3VFM3bC9FZS8ybzFLRVVMOHA3RHRvL2M1c25RSmxDU1VmRERET3VleG1YakFPYlFnczM3YkxEeUU3NFlLS2JMUmR3eEplRWtDakRkd0x2TXVKR3JzQ096Mk90akFQSVFUa2pDaE5KeVdDelNFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FaM1hQZ2wzcVRJbGFNSG9iQlFSblAwMTF2b2g1eTZEQk1LQzE2bFlORDhVZm15Z2NsVFlzWkNlZGVwN1Vsb0Rxd2NqSGE2S0g4VzFXRlo5RFh4UDNXdllGMFJEcllUYjRqb1FtSVZWL2NKbmVkM2NQMlVydnBscjZMbmRUcmtOcUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJT3J6NXNtWnVMdklYbVdPcEVYV2lHb0lsaXlrcG5IY21sWlpIbEpwVnV2b1V6MEc1a1BaaG0veXAxWnVheUc4YTlxUm9yVlhJdC9oYTk0S2Myd2ZUY3ZMSzh0STFsWnord2lmKzlaSUFkVDJ6dVpoRnFIVkZSSlVjajBPL2VUR0xsM0JZTFZQRFVRYUw5Zkh0MzVTdjZtRklpMkVCVjdsZmtwamxTTFJYUU85Q3p3czY3VFNrSjhVSHl3R2t0U1RKSUhJYXczZ1hrcUFvMGVqd0pYcjIyS3JiWWZKOUc1WDg5UG1DSGl5cHpHSkFvMDNjSTIwd0wyRXdXM2pUZVk3Yi9ZV1lDcGxyTnFNQ0VuOEdvazRuNldmYi9tdmMzdWlTejJTZG03OVVpWGpKamZMMzA1aFUxYitCSGp4MktyU0NLZ0VWby9CR1JZUnQvdXR5a3RyaTZaQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFc0R1YkpSWDZJRFpQemo4dHdRNlNjdmt2bjRjS0MxUVorVHBNVVJyTS9SVGhCTUVFVHBUZnF5TzRaTWF6VnNiSWVSMDRlTEcycVpibEdYclR2NFVFYXhUM0p5aHROR1plU2hiZytQZDc5LzI0M3pYYlZmbVpGWXBUcnIyYTRiZU1adHl5ZzN5YVROOXp1UmlyNExWem9sdFZkdXFJcFJXTWx4V2ZyK3hCeFBCUlJoWkFBTGVNVUFnYjV4VUR6MVN4c3RjWXU2bXJmRWhQaTgramorR2RrS2JpUW0yVnljN2RKWlZQOFVPUTdEdmF4OThUbzNqeFFBRHU5YnlZRGlRdWRIK0xsR2J0clBQazFCRzVzdEoxUzJwL25tUlhaNElPQU5Mb0VEbjJ6U0JGM0RNQzZkczc2amd2MzViNHlGVHh5eXZMU05aV2Mvc0luL3ZXU0FIVTloUXYzcnN3c0JINVluTkJPKzAxL0JuT2xETDdEdnp6c09RbksrL2JDYzRuNFdFeHJpUzdETENaZHVpRU9Ka1hNdmZ5bnBFcjFkTThwa082dzl6WStUc3RmZ0Q0Y1FrcFRJeTVZK0d5cFNuSG9ETGluUjBpZnJTandCUng4L2NZbk02VU12c08vUE93NUNjcjc5c0p6aWR5UzZsYnZjZFl5VThiOEc2SGF6MlNhc3ZnNUZlTlZ1bW1jZWlqb2k4ekRWMXVIemxwSjlidVVBYm1MUDFOd2VOZXVxSzZZVnZwNnZDZUU0R2hmSHlIWUtpOXlNWDk2eDVoK0t4UFdRQk5sdlR2MzRiSkd3c2g3Y1VZWHkzMXdaVE9sREw3RHZ6enNPUW5LKy9iQ2M0bmljZm5Jcm55bU0rUmhjVk5mWnV1dTE1UlZ5R2E2NEtQbTQ1UUtBV2V1MG5oVEJEUVl3RkZzSC85VFpNUk4ybGJIdDRZaC9jVkVoM0hvQ1lGajJBZ01Vb2I4S24xS1ZpRE9zdmU4am1oNjh1cFVobUg2STdIZVhpMVlkVEhVajZKaG5hRm5QMmxvQUQzcm5KRUpGUG9WS0pmUHdoMkdrWEQ3RnFGNTBHUjlHYmp3WDhmYmZqWXdvcmRrWHMzNURvcEE4OCtZdTQrU2J6Z3pKS0V3aUpmcTFvSlM4Q21laHVjT3NMRnJSVFdtbnFBekI4RDA4VFl0NExvbEJLbU9GRHAxWFZYU1ZxbWF4cEhreHpzb0c5N2hzLzlwd1c1VGxLREZ1YXdGKzNTUGd0aDhiQmxReDZqSWFYZVJvU1l2NGo3a2puaGN6cS9CRjIrcHlmRHdTQWpTQmpYTitBNGs0Rjk1SUhYK2VQRXdGenVKdG1UQ0xmOXZUQXhXRThvY1M1ZUJQZU8rc0Q0UXcvQjIvMW83RkJoQnlZc3RvRDNqVGIrc3g4Z1kvYzlJdnZyM0tPalpnT1NEelR1Znk4TTdWWGhQdTJaN1BTTnJMOS9rbUE2eXM1djF0S20ralFhd3YzL1FIWDQySjl5OGhBMnVMa0ZhTnlPNFh4Q1YwdXJUcGlFV2NHTU1yK2xPRUp5ZDcrbk5tS3dqOFpERVYrelBtTEhMbENISUJ0TXU0dkxLOHRJMWxaeit3aWYrOVpJQWRUMmN2STdjT05PVXh2bm4vaGUxSUVQazZZYWNqMnJlM2hLc3JtY0k4K21PNGpMSzh0STFsWnord2lmKzlaSUFkVDJWb1Q1UFg3VG5Wb0wzM0tlcXJSN2JxY3pGL0Y3aGNFLzA0SGwwTjF2SXMyVjhGWlEvdWhjdVNic05qY3hCUWIvSG5IOTYrdlAvbC9iSDAyUXYzdFZoSFF2OWNGdXFKVUVhc3JUeXpDWGEwSXIxamtMRjgvcmh2amNxMmp5NmkxNXI2STE3ZWlmQ2l5K2RZVzZyNnZRWFdPOXBZYk8yc25pWFgyeVR4VnNva0V5VExCZzgxVUQvY0NjU21mazZxdXdjR1F0cXp6OVNicTYyNG9yeVE2dTJaRllubzUvK0ZxYmhIUnF2TnBMZXdJRVFzR2tsamtyU0RDQTVOWlRvYWM5NUU1TnplaHdoOFNDa3lvaEtPaFFhMWZDWnVIZHZXOURlQnFVOFhpczFMdmFFWFRCdzAwR2dkb0tPT0NTcXFWV2R2R2hLckxJanlhMTF5QnAyTE10ek9yczhvMy85a25seFNWYUVSeXBXWmRzcEF6TXNFeWp5emdnSVRQalpUVCt2a0JNeWR3bTB1NjVOTGVTamVLSWZleDI0VE4waHVuMEhsV2lIUUlVKzNZeDZZcHJpMXREaHd6MzgzUXBoRXlLRmh3MGhaZzFyN2xHdjBucFVvcHpRdnVTWmNDYnU1c1UwVk9GbHdKd1Q5ZDdwZ29SblFodWZGREJ5RWQvamswS00rRjUrRTZrOUpWdXQ1QXFxcUlqRHFOVGlsa1RjWmNoM3oxK1luTjNZc0hiUCtBaldIalZjWXFITVBlTTYxdWlxZVFkcVBCUlVEQUtxSHlYekVvUnlMSkNHbm4zNTB1YUlzOGR4UHhYY2dvOFIvNFE2aU1wWVRhVkhJT3BISm5XaEptSXJ4NUgyYmNMYmZUNS9RbU1JTVc1TGdvdXMxNXkvQUpyUjBuVm1lVmNNSml4VXI4eEI4d09hZXNxWWFkRnl5dkxTTlpXYy9zSW4vdldTQUhVOWtPWW9nZ3VsNDR6SVo2MUxyb0ZnWEtHZG9XYy9hV2dBUGV1Y2tRa1UraFVQYlZjMDgwYWtraExYT3I3Y2c4VkVVdlpiejBIWDhoUEZzYWJVRDZyK2EyTUxsMEZOeVoyRUhZa1Y3ekFCL1dOQUVaTHEzYXV2K3A3T2J2WDdzL3BMbFI0WWdLVkNST0JWeGxOOGczWFdLbjM2OU4xamxvc3FSQmRETWZKQkJiRFR6Y2s4ODNEWUoyTk5kVlFZak9xZ3NiS25scThZK1BqMjdkNXdDK2FaS1M1Qy83Q2VTdThmcklnYmdpbmhmN1ErdzIxOGg5QXRLVFhDUWlsZ2V1UkxJNm9mSlRkV3R5SEJDY2FOcjdYOWhncHJSK1prUkVld1FtMGppbU43bkM3eXl2TFNOWldjL3NJbi92V1NBSFU5azh1WkVVUHJCMlYxTG04bE95M2M4M0hJY1JXNEUxNkI3bGNwTEhxWmFlcERoa3dvQy9NYXVRTE5vNWlFVzJldWNlam1mZ2FaTkxHMWxFUVM5b0daQk1EeGhuUWdxL2pvN25KWXhXR2hwREZFNlNzaFNOcGtjKzN1a1huZ2FkZmlIOU44MEFQWElYdnU4cWorNzRjSExmT2xETDdEdnp6c09RbksrL2JDYzRuaEEwMWtzTldQaUxqa0FiOFV0S0pxNGlOT0wrRURFejZyZlluYTZFRFlEN250cy9TT0xOM1M1eFVRd0ZRUi8rTFRUcDdSYnVnWjIrNmJNcUF5WnFZZThzcnkwaldWblA3Q0ovNzFrZ0IxUGI1ck9hUndtMUhmZ3JsY2cxWkVnM1JVbm5PaEYwWVlCeVVZWGRCT0RrN3BQTWw2UzFhbDlTckhmZ3ltVE9kSU1iWEpGYlY3MkJRbGp3VUs5NkdWM2FRb2hNamswL0krUktkaTA4OURnb01id0EzK1ZjLy9lSHFoNzc2WU5lRmh3a05xOUFkREo0bi9MUkQzV3RZSlhBU3QzaXZDNHU5UUJUZmIvdkNtTkppL2Z6YWVzNG9KQUt1U2MwQ28rYXU2Ulp5cHg1RDVqTE5tWE0zRjhZWnBnOHlWZ1FYd0dvdzlGNTNUUHR3RUxoRWJDZFVKT2crM1d2TFhSa1djcFphbGc0SzE1OWFFTS92d1l3Q3EzNGx4a1NGaGxLeVRVZzVSc1hmUkxwYU1obTBlWlNIZHVvREhOZjRaMW9nZ1pHemlrb0dvcDhjL3pyb1dCb04vYVZLbW44czRUeUUrVUJRZXp2MWZMQmVVeUJHYkg4SlhBLzV1MjE4RVpCQlF0dzNvcUV2OHlKMkRjVmRLTnhtenRCOExtbkgnKVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeeZu+W9lVwiLFwicGF0aFwiOlwicHdkLWxvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgaXNsb2dpbiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCB7fSk7XFxuaWYgKGlzbG9naW4gPT09IFxcXCIxXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTotKblj7fmmK8nICsgaW5wdXQ7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICfotKblj7cnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfYWNjb3VudCcpXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE5a+G56CB5pivJyArIGlucHV0XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICflr4bnoIEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X3Bhc3N3b3JkJylcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5aSn5Lya5ZGY77yfKOWFiOeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc3ZpcFxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG5aSn5Lya5ZGY44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc55m75b2VKOWGjeeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJsb2dpbmluZ1xcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcihcXFwibG9naW5pbmdcXFwiKSA9PT0gXFxcIjFcXFwiKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdteV9hY2NvdW50JykgIT0gJycgJiYgZ2V0VmFyKCdteV9wYXNzd29yZCcpICE9ICcnKSB7XFxuICAgICAgICAgICAgLy8gVE9ETyDlkJDkvazor7Tov5nph4zlj6/ku6XmlLnmiJAgJC5yZXF1aXJlIOeUqOazlSAgICAgICAgICBcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJkdGQxUDNkVEVJVG9uc2dyTkZmb0JpZ2k1bGphejBQZUdtYm1NampyOUg1bmZ2c25CdzdKRnAzN2NuM2VncXUweS8wd1RXMm9VN3F0TXdRSUFpTGhFU1ZLQmxLa1J2VzBwblBEZEhsN1BHd3dEVDVHTTF2QnNvZ2I3WURwd213VjhydHRhZDBPNVlKQnZwalgyOWhVQnBTc2lhbzdsM1VlYnp4TkFXWWlqN1l3SFdodDBqVmJoNVNMN1BYVm8xNDlmUFNUdXhsOEErdkxVV2krMld4R3JPWitRdnRyWUluMjhCcVM4UFM3emYwUjB5cjloWHpqYk1PT1gyQ09kVllLUGRiR3N4emtsVjVYMkxMbUtiUGdFZlFFbENnTVpwWXVuZTBJOE95STU1SExLOHRJMWxaeit3aWYrOVpJQWRUMmRUUXZDQmIraUhqcFI2SzBNcjBkZmMvanJUZC8rbm1zbVdya2ppdHVxOHgyaDdVM2JabWF4a3FZcnhTb3ByTGladm5Ca1N2RW9JaXFVVU9LaW1DeTAxZjN0UmZTUUJlUjVsZ1Q1QS94cWdkMjhhRXFzc2lQSnJYWElHbllzeTNNTFpSaFNMdzVrZFNVM1krZHlDYTZaY0lEeGxPR2VTRkxtSTBPQ0ZicFplOWJZN25LVU9haTMrVEhzYUZpRUVxcGQvNm5VUUY0VFpSQmdWcWpZRUZ3V0p5S0FLNkRBcW9SdkIyVDBpZjJ3VXZPbERMN0R2enpzT1FuSysvYkNjNG55WnhkRGZRWE42UnFCK2k2TmdUYkNqTmQ0VEZYNWZXQnZIYTVwSHJUU1pBaFRXOXdGQTV3c0FEQjk1eStKeDJYOVFrNEdMQ0dzdGdHY21IbTk2YXAxdVdxK0s4dkdFWkViRWprVTUydE1TNXp6NmdtN1loWGY4ZUJZQm1FYWlMdU1lVTc1R2UycVM2dU9vajIySVRFVWNzcnkwaldWblA3Q0ovNzFrZ0IxUFlaTnluWExsMXRmb0RZM0haZ1Bha2Y2RCtBRHpRWXF4cVJLWkN0bE5JeWE5azhDNEg3ZmJoTERYZFdBM29WNXlVT2dhU1hLMU9NNDBGeE55TlhwQS9aS1M2Z1kzQjEvVjIrenB6K1E3Q211ZTUrcWFPMFhyRFAxNWhqUzRieG5Xck9sREw3RHZ6enNPUW5LKy9iQ2M0blh4ZWt1b1RWVVJZN2VoK2RJRjRRT2FYbWJOallOa2lxbkFkODVGclhLWG9lZ0paQzg1QjRKVnFPV2N1ZWlwTmFIeS9kd0FoS3BuSy81Sk83WjZ5YTJsczIvSnZQT0NQOTFlNmc0SE8rWXFFcExxQmpjSFg5WGI3T25QNURzS2E1bnByYmtJUDJrbkRYWHF0TVlHUmRjaWdlSVJ6K09IbW5LTG0vK1dDUGEwNjE4RXF2TXNHZzlmcHZ0VW8yL3RtMFJ6WVlpOGt1RkdvcFR5b2lrRHdpM2NzcnkwaldWblA3Q0ovNzFrZ0IxUGExQURrdml2a25jRWhQV1A0d1hDYVR3d3BaMEc2K1lUdnlwNjh0aEZkQUw1eHg5K25VYTVqV21KVXl5UStyMVVzRDVzTXFpblk1Yi9lRFVueFJLS0JUenBReSt3Nzg4N0RrSnl2djJ3bk9KeWRIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZNy9xdDJOMG44bEhEOCs3MktUVURJcXVYNTY1Q0lRbmNEVzVLZlhVWkxPblpiczZSVHFSMDBMdVBIQXhQSUhoaWFiamtOdlNWUU96djNhd2VyYW1lU084c3J5MGpXVm5QN0NKLzcxa2dCMVBiWmZBQSs3ZytZZFROcGV1OUxSUm9vaUZ3Vi85Y3U1SHBFZ1oyWDZ3YVdkb29ZMWc1cENYS3BNdS9kN2MzaGRRZkxLOHRJMWxaeit3aWYrOVpJQWRUMlk5NnNrQnRObHZOQXg2SUdwektOOGVOME9KQ20ySXFzSkpuSFhKZDFmcnlDTW1FQ0ZFZWFWYnB1S0czVjA5d0FDN1NZaTdqL2JDQitEQzExQlNhWnY4QjNwUTlaYUJIckFzZytkTlIrMFdNdFpqSzRRbGZ6c010Z0dxZG5sL0QrXFxcIilcXG4gICAgICAgIH1cXG4gICAgfVxcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjJcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOW3sueZu+W9le+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTph43mlrDnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFwiM1xcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5L2g6ZyA6KaB5Y675a6i5oi356uv5pS55LiL5a+G56CB5omN6IO955m75b2V77yB77yB77yB4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzngrnlh7vov5vlhaXnmbvlvZXpobXpnaLigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYifQ==
Add Comment
Please, Sign In to add comment