Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@Javmenu@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiSmF2bWVudSIsImF1dGhvciI6IlIiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyMvemgvY2Vuc29yZWQvb25saW5lP3BhZ2U9ZnlwYWdlIiwidmVyc2lvbiI6MjAyMzExMjEsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBkID0gW107XG5hZGRMaXN0ZW5lcihcIm9uQ2xvc2VcIiwgJC50b1N0cmluZygoKSA9PiB7XG4gICAgbGV0IGtleXMgPSBsaXN0TXlWYXJLZXlzKCk7XG4gICAgZm9yIChsZXQgaXQgb2Yga2V5cykge1xuICAgICAgICBjbGVhck15VmFyKGl0KTtcbiAgICB9XG59KSk7XG52YXIgZ2V0UmFuZ2VDb2xvcnMgPSBmdW5jdGlvbigpIHvCoMKgwqDCoMKgwqDCoFxuICAgIHJldHVybiAnIycgKyAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTvCoMKgwqDCoMKgXG59XG5jb25zdCDkuIvkuIDpobUgPSBcInBkKGh0bWwsICdhOm1hdGNoZXMo4oC6KSYmaHJlZicpXCI7XG5jb25zdCBwYWdlID0gTVlfUEFHRTtcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UveWknKSkucnVsZSlcblxudmFyIOWumuS9jeS/oeaBryA9IFt7XG4gICAg5aSn57G75a6a5L2NOiAnLm5hdi1pdGVtOmhhcygubmF2KScsXG4gICAg5bCP57G7OiAnYm9keSYmYTpub3QoOm1hdGNoZXMo8J+UpSkpJyxcbiAgICDpk77mjqXlpITnkIY6ICh1KSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSB1LnJlcGxhY2UoJ2h0dHBzOi8vamF2bWVudS5jb20vemgvY2Vuc29yZWQvb25saW5lP3BhZ2U9MSNvbmxpbmUnLCAnaHR0cHM6Ly9qYXZtZW51LmNvbS96aC9jZW5zb3JlZC9vbmxpbmU/b3JkZXI9cHVibGlzaCcpO1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgfVxufSwge1xuICAgIOS4gOe6p+WumuS9jTogJy5zaWRlYmFyLWJvZHkmJi5uYXYtaXRlbTpoYXMoLm5hdik6bm90KDpoYXMoOm1hdGNoZXMo562b6YCJ5ZmofOWcqOe6v+eci3zlkI3nq5nmjqjojZB85bCP6K+0fOWwj+a5v+WmuSkpKScsXG4gICAg5bCP57G7OiAnYm9keSYmYTpub3QoOm1hdGNoZXMo54Ot5pKtKSknLFxuICAgIC8v5qCH6aKYOiAnJyxcbiAgICAvL+mTvuaOpTogJycsXG59LCB7XG4gICAg5LiA57qn5a6a5L2NOiAnI3RhZ3MmJmR0JyxcbiAgICDlsI/nsbs6ICdib2R5JiZhOm5vdCg6bWF0Y2hlcyjli5XmvKt85pu05aSaKSknLFxuICAgIC8v5qCH6aKYOiAnJyxcbiAgICAvL+mTvuaOpTogJycsXG59XVxuXG52YXIgaG9zdCA9IGNvbmZpZy5ob3N0XG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgaG9zdClcbmxldCB0cnVlX3VybCA9IGdldFRydWVsaW5rKE1ZX1JVTEUudXJsLCBNWV9VUkwsIHBhZ2UpO1xuTVlfVVJMPXRydWVfdXJsO1xubG9nKHRydWVfdXJsKVxuXG52YXIgaHRtbCA9IHJlcXVlc3QodHJ1ZV91cmwpXG5jb25zdCBkYyA9IGR5bmFtaWNDbGFzcyh7XG4gICAg5YiG57G76aKc6ImyOiBnZXRSYW5nZUNvbG9ycygpXG59KTtcbmRjLuW8gOWQr+aKmOWPoChmYWxzZSlcbmRjLuW8gOWQr+aQnOe0oigpXG5kYy7liJvlu7rliqjmgIHliIbnsbso5a6a5L2N5L+h5oGvKVxuXG5cbnZhciBwYXJzZVJ1bGUgPSB7XG4gICAgbGlzdDogJ2JvZHkmJi52aWRlby1saXN0LWl0ZW0uY29sLXhsLTM6bm90KDptYXRjaGVzKOiJsuermeaQreW7uuacjeWKoXxWUikpJywgLy/nu5/kuIBpdGVtXG4gICAgdGl0bGU6ICcubGF6eWxvYWQmJmFsdCcsXG4gICAgZGVzYzogJy50ZXh0LW11dGVkJiZUZXh0JyxcbiAgICBpbWc6ICcubGF6eWxvYWR8fGEmJmRhdGEtc3JjfHxkYXRhLW9yaWdpbmFsJyxcbiAgICB1cmw6ICdhJiZocmVmJyxcbiAgICByZWY6ICdAUmVmZXJlcj0nLFxuICAgIGNvbF90eXBlOiAnbW92aWVfMicsXG4gICAgaW10OiBmYWxzZSxcbiAgICAvL2JhY2tpbWc6IHRydWUsXG59XG5cbnZhciBwYXJzZVJ1bGUxID0ge1xuICAgIGxpc3Q6ICdib2R5JiYudmlkZW8tbGlzdC1pdGVtLmNvbC14bC0xOm5vdCg6bWF0Y2hlcyjoibLnq5nmkK3lu7rmnI3liqF8VlIpKScsIC8v57uf5LiAaXRlbVxuICAgIHRpdGxlOiAnaDYmJlRleHQnLFxuICAgIGRlc2M6ICcudGV4dC1tdXRlZCYmVGV4dCcsXG4gICAgaW1nOiAnLmxhenlsb2FkfHxhJiZkYXRhLXNyY3x8ZGF0YS1vcmlnaW5hbCcsXG4gICAgdXJsOiAnYSYmaHJlZicsXG4gICAgcmVmOiAnQFJlZmVyZXI9JyxcbiAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsXG4gICAgaW10OiBmYWxzZSxcbiAgICAvL2JhY2tpbWc6IHRydWUsXG59XG5cbnZhciBwYXJzZVJ1bGUyID0ge1xuICAgIGxpc3Q6ICdib2R5JiYudmlkZW8tbGlzdC1pdGVtLmNvbC14bC0yOm5vdCg6bWF0Y2hlcyjoibLnq5nmkK3lu7rmnI3liqF8VlIpKScsIC8v57uf5LiAaXRlbVxuICAgIHRpdGxlOiAnaDQmJlRleHQnLFxuICAgIGRlc2M6ICcudGV4dC1tdXRlZCYmVGV4dCcsXG4gICAgaW1nOiAnLmxhenlsb2FkfHxhJiZkYXRhLXNyY3x8ZGF0YS1vcmlnaW5hbCcsXG4gICAgdXJsOiAnYSYmaHJlZicsXG4gICAgcmVmOiAnQFJlZmVyZXI9JyxcbiAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsXG4gICAgaW10OiBmYWxzZSxcbiAgICAvL2JhY2tpbWc6IHRydWUsXG59XG5cbnZhciBwYXJzZVJ1bGUzID0ge1xuICAgIGxpc3Q6ICdib2R5JiYuY29sLWxnLTInLCAvL+e7n+S4gGl0ZW1cbiAgICB0aXRsZTogJy5jYXJkLWJvZHkmJlRleHQnLFxuICAgIGRlc2M6ICdzcGFuJiZUZXh0JyxcbiAgICBpbWc6ICdhJiZocmVmLmpzOmlucHV0LnJlcGxhY2UoaW5wdXQsXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21vdmllLzMwLnN2Z1wiKScsXG4gICAgdXJsOiAnYSYmaHJlZicsXG4gICAgcmVmOiAnQFJlZmVyZXI9JyxcbiAgICBjb2xfdHlwZTogJ2F2YXRhcicsXG4gICAgaW10OiBmYWxzZSxcbiAgICAvL2JhY2tpbWc6IHRydWUsXG59XG5cbkNyZWF0ZS5MaXN0KGQsIGh0bWwsIHBhcnNlUnVsZSk7XG5DcmVhdGUucnVsZUxpc3QoZCwgaHRtbCwgcGFyc2VSdWxlMSk7XG5DcmVhdGUucnVsZUxpc3QoZCwgaHRtbCwgcGFyc2VSdWxlMik7XG5DcmVhdGUucnVsZUxpc3QoZCwgaHRtbCwgcGFyc2VSdWxlMyk7XG5hdXRvUGFnZSgpO1xuLypcbnRyeXtcbnZhciBrID0gcGRmaChodG1sLCdib2R5JiYucGFnZWluYXRpb24mJmEsLTImJlRleHQnKS5yZXBsYWNlKC9cXC4vZywnJyk7Ly/ojrflj5bmnIDlkI7kuIDpobXpobXnoIFcbmZvciAodmFyIGogPSBwYXJzZUludChrKTsgaiA+IDA7IGotLSl7XG4gICAgICBpZiAoTVlfVVJMLmluY2x1ZGVzKCctXFxkKy5odG1sJykpIHtcbiAgICAgICAgICB1cmwgPSBNWV9VUkwucmVwbGFjZSgvXFxkK1xcLmh0bWwvLCBqICsgJy5odG1sJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwgPSBNWV9VUkwucmVwbGFjZSgvXFwuaHRtbC8sJy0nICsgaiArICcuaHRtbCcpO1xufVxuLy92YXIgdXJsID0gTVlfVVJMLnJlcGxhY2UoL1xcZCtcXC5odG1sLywgaiArICcuaHRtbCcpOy8v5pu/5o2i57+76aG16aG156CBXG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICBqICsgJ+mhtScsICAgICBcbiAgICAgICAgdXJsOiQodXJsKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICBwdXRNeVZhcihNWV9SVUxFLnVybCwgaW5wdXQpO1xuICAgICAgICAgICAgcHV0TXlWYXIoJ3lpX2ZpcnN0cGFnZScsIGlucHV0KTtcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xuICAgICB9KSxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcbn0pXG59fWNhdGNoKGVycil7XG4gICAgY29uc29sZS5sb2coJ+WPquacieS4gOmhtSzlh5HlkIjnnIvlkKcnLCBlcnIpO1xufTtcbiovXG5cbnNldFJlc3VsdChkKSIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5IyMvc2VhcmNoP3dkPSoqIiwiZ3JvdXAiOiLikaBSIiwic2VhcmNoRmluZCI6ImpzOlxudmFyIGQgPSBbXTtcbnZhciBob3N0ID0gY29uZmlnLmhvc3Q7XG5sZXQga2V5ID0gTVlfVVJMLnNwbGl0KCc9JylbMV07XG5kLnB1c2goe1xuICAgIHRpdGxlOiBcIueCueaIkeW8gOWni+iBmuWQiOaQnOe0oiAgICBcIiArIGtleSxcbiAgICB1cmw6IFwiaGlrZXI6Ly9wYWdlL3lqP3VybD1cIiArIE1ZX1VSTC5yZXBsYWNlKFwiaGlrZXI6Ly9lbXB0eSMjXCIsaG9zdCkrXCLvvIbvvIZwYWdlPWZ5cGFnZVwiLFxuICAgIGV4dHJhOiB7XG4gICAgICAgIHBhZ2VUaXRsZTogXCLmkJzntKIgICAgXCIgKyBrZXksXG4gICAgICAgIGtleToga2V5XG4gICAgfVxufSk7XG5cbnNldFJlc3VsdChkKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIqIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiLy/msLjkuYXlnLDlnYAgICBodHRwczovL2phdm1lbnUuY29tL1xuLy/lj5HluIPlnLDlnYAgICBodHRwczovL2phdm1lbnUueHl6L1xuLy8gICAgaHR0cHM6Ly9qYXZtZW51LnRvcC9cblxudmFyIOabtOaWsOmXtOmalCA9IDIzXG5sZXQgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKClcbmxldCDml7bpl7Tpl7TpmpQgPSB0aW1lLWdldEl0ZW0oJ3RpbWUnLCBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpKVxuLy9sb2coXCLlvZPliY3ml7bpl7TmiLNcIit0aW1lKVxuLy9sb2coXCLpl7TpmpTml7bpl7TmiLNcIivml7bpl7Tpl7TpmpQpXG5sZXQg6Ze06ZqU5aSp5pWwID0gTWF0aC5mbG9vcijml7bpl7Tpl7TpmpQgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xubGV0IOmXtOmalOaXtuaVsCA9IE1hdGguZmxvb3Io5pe26Ze06Ze06ZqUIC8gKDYwICogNjAgKiAxMDAwKSk7XG5sZXQg6Ze06ZqU5YiG5pWwID0gTWF0aC5mbG9vcijml7bpl7Tpl7TpmpQgLyAoIDYwICogMTAwMCkpO1xubGV0IOmXtOmalOenkuaVsCA9IE1hdGguZmxvb3Io5pe26Ze06Ze06ZqUIC8gMTAwMCk7XG4gICAgLy9sb2coXCLpl7TpmpTml7bpl7Q9PT09XCIr6Ze06ZqU56eS5pWwK1wi56eSXCIpXG5zZXRJdGVtKCd0aW1lJywgdGltZSk7XG5cbmlmICjpl7TpmpTlpKnmlbA+PeabtOaWsOmXtOmalCB8fCAhZ2V0SXRlbSgnbGluaycsICcnKS5zdGFydHNXaXRoKCdodHRwJykpIHtcblxuICAgIGxldCBmYWJ1ID0gZmV0Y2goXCJodHRwczovL2phdm1lbnUueHl6L1wiKVxuICAgIGxldCBqcyA9IHBkZmgoZmFidSxcImJvZHkmJnNjcmlwdCwxJiZIdG1sXCIpLm1hdGNoKC8odmFyW1xcc1xcU10rKXZhciBxdWVyeS8pWzFdXG4gICAgZXZhbChqcylcbiAgICAgbGluayA9IHVybFxuXG4gICAgc2V0SXRlbSgnbGluaycsIGxpbmspO1xuICAgIC8vdG9hc3QoJ+abtOaWsOWfn+WQjScpO1xuICAgIGxvZyhcIuacgOaWsOWcsOWdgDpcIitsaW5rKVxuICAgICBjb25maXJtKHtcbiAgICAgICAgdGl0bGU6J0pBVuebruW9lScsIFxuICAgICAgICBjb250ZW50Oiflt7Lmm7TmlrDnvZHlnYDkuLpcXG4nK2xpbmssIFxuICAgICAgICBjb25maXJtOiQudG9TdHJpbmcoKCk9Pnt9KSwgXG4gICAgICAgIGNhbmNlbDokLnRvU3RyaW5nKCgpPT57fSlcbiAgICB9KVxuXG4gICAgfVxuXG5pbml0Q29uZmlnKHtcbiAgICBob3N0OiBnZXRJdGVtKCdsaW5rJywgJ2h0dHBzOi8vamF2bWVudS5jb20vJylcbn0pOyIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqfliIbnsbvliJfooahcIixcInBhdGhcIjpcInlpXCIsXCJydWxlXCI6XCJqczpcXG4vKlxcbuS4gOe6p+WwgeijhSBcXG7liqjmgIHliIbnsbsg5YiX6KGo5Yib5bu6IOiHquWKqOS4i+S4gOmhtVxcbnZlciAyMDIzMTAwNTAxIDEuMFxcbiovXFxudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XFxuICAgIHJldHVybiAnIycgKyAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTtcXG59XFxuXFxuZnVuY3Rpb24gZHluYW1pY0NsYXNzKG9wdGlvbnMpIHtcXG4gICAgY29uc3Qgb2JqID0ge1xcbiAgICAgICAgLy/pu5jorqTlgLxcXG4gICAgICAgIGxheW91dDogXFxcInVuZGVmaW5lZFxcXCIsXFxuICAgICAgICBodG1sOiBcXFwiZW1wdHlcXFwiLFxcbiAgICAgICAgcGFnZTogMCxcXG4gICAgICAgIOWIhuexu+minOiJsjogXFxcIiNGQTcyOThcXFwiLFxcbiAgICAgICAg5oqY5Y+gOiBcXFwi4oCc4oCc4oCd4oCdPGI+XFxcIiArIFxcXCLiiKdcXFwiLmZvbnRjb2xvcihcXFwiIzFhYWQxOVxcXCIpICsgXFxcIjwvYj5cXFwiLFxcbiAgICAgICAg5bGV5byAOiBcXFwi4oCc4oCc4oCd4oCdPGI+XFxcIiArIFxcXCLiiKhcXFwiLmZvbnRjb2xvcihcXFwiI0ZGMDAwMFxcXCIpICsgXFxcIjwvYj5cXFwiLFxcbiAgICAgICAgb3BlbjogdHJ1ZSxcXG4gICAgICAgIHN0YXRlOiBNWV9SVUxFLnVybCxcXG4gICAgICAgIHNlYXJjaDogZmFsc2UsXFxuICAgICAgICBjbGVhcnM6IFtdLFxcbiAgICAgICAgY2xlYXJhbGw6IFtcXFwieWlfZmlyc3RwYWdlXFxcIl0sXFxuICAgICAgICBkZWJ1ZzogZmFsc2UsXFxuXFxuICAgICAgICDpooTorr4ocGFyYW0pIHtcXG4gICAgICAgICAgICBpZiAocGFyYW0gPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIHBhcmFtID0gW107XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmFtKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAvLyDlr7nmr4/kuKrlsZ7mgKflkI3miafooYzmk43kvZxcXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbVtwcm9wZXJ0eV07IC8vIOiOt+WPluWxnuaAp+WAvFxcbiAgICAgICAgICAgICAgICAvLyDlnKjov5nph4zmiafooYzmgqjnmoTmk43kvZxcXG4gICAgICAgICAgICAgICAgdGhpc1twcm9wZXJ0eV0gPSB2YWx1ZTtcXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHByb3BlcnR5ICsgXFxcIjpcXFwiICsgdmFsdWUpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgZXZhbEpTUnVsZShpdGVtLCBqc1J1bGUpIHtcXG4gICAgICAgICAgICBsZXQgcnVsZSA9IGpzUnVsZS5yZXBsYWNlKFxcXCJAanM6XFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIHJ1bGUgPSBydWxlLnRyaW0oKTtcXG4gICAgICAgICAgICAvL2xvZygkLnN0cmluZ2lmeShydWxlKSlcXG4gICAgICAgICAgICBsZXQgaW5wdXQgPSBpdGVtO1xcbiAgICAgICAgICAgIGlmIChydWxlLnN0YXJ0c1dpdGgoXFxcIihcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBldmFsKFxcXCJyZXN1bHQgPSBcXFwiICsgcnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICAgICAqIOi/mOWOn+aIkCAkLnRvU3RyaW5nKC4uLikg55qE5pyA57uI57uT5p6c77yM6L6+5Yiw5pyA57uI5aSE55CG5pa55byP6Lef5LiK6Z2i55qEIGlmIOS4gOiHtOeahOebrueahFxcbiAgICAgICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICAgICAgZXZhbChcXFwicmVzdWx0ID0gXFxcIiArIFxcXCIoKCkgPT4ge1xcXCIgKyBydWxlICsgXFxcIn0pKClcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCB8fCBcXFwiXFxcIjtcXG4gICAgICAgIH0sXFxuICAgICAgICBnZXRUaXRsZShzcmMsIGNhdGVnb3J5KSB7XFxuICAgICAgICAgICAgbGV0IHRpdGxlID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgbGV0IHRpdGxlUnVsZSA9IGNhdGVnb3J5IHx8IFxcXCJhJiZUZXh0XFxcIjtcXG4gICAgICAgICAgICBpZiAodGl0bGVSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB0aXRsZSA9IHRoaXMuZXZhbEpTUnVsZShzcmMsIHRpdGxlUnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdGl0bGUgPSBwYXJzZURvbUZvckh0bWwoc3JjLCB0aXRsZVJ1bGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gdGl0bGUgfHwgXFxcIlxcXCI7XFxuICAgICAgICB9LFxcbiAgICAgICAgZ2V0VXJsKHNyYywgY2F0ZWdvcnkpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgbGV0IHVybFJ1bGUgPSBjYXRlZ29yeS7pk77mjqUgfHwgXFxcImEmJmhyZWZcXFwiO1xcbiAgICAgICAgICAgIGlmICh1cmxSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmV2YWxKU1J1bGUoc3JjLCB1cmxSdWxlKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB1cmwgPSBwZChzcmMsIHVybFJ1bGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNhdGVnb3J5LumTvuaOpeWkhOeQhiA9PSBcXFwiZnVuY3Rpb25cXFwiKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9IGNhdGVnb3J5LumTvuaOpeWkhOeQhih1cmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gdXJsIHx8IFxcXCJcXFwiO1xcbiAgICAgICAgfSxcXG4gICAgICAgIGlzTnVsbChwYXJhbSkge1xcbiAgICAgICAgICAgIGlmIChwYXJhbSA9PSBudWxsKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9LFxcbiAgICAgICAgaXNCb29sZWFuKHZhcmlhYmxlKSB7XFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YXJpYWJsZSAhPT0gXFxcImJvb2xlYW5cXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi5byA5ZCv5oqY5Y+g6K+35Lyg5YWl5biD5bCU5YC8XFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSxcXG4gICAgICAgIOa4hemZpChsaXN0KSB7XFxuICAgICAgICAgICAgaWYgKHRoaXMuaXNOdWxsKGxpc3QpKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAobGlzdC5jb25zdHJ1Y3RvciA9PSBTdHJpbmcpIHtcXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLmuIXpmaTmiqXplJk66K+35Lyg5YiX6KGoXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHRoaXMuY2xlYXJzID0gbGlzdDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDlhajmuIUobGlzdCkge1xcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTnVsbChsaXN0KSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLmNsZWFyYWxsO1xcbiAgICAgICAgICAgIGxpc3QgPSBjLmNvbmNhdChsaXN0KTtcXG4gICAgICAgICAgICB0aGlzLmNsZWFyYWxsID0gbGlzdDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDmupDnoIEoaW5wdXQpIHtcXG4gICAgICAgICAgICB0aGlzLmh0bWwgPSBpbnB1dDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDnlYzpnaIoaW5wdXQpIHtcXG4gICAgICAgICAgICB0aGlzLmxheW91dCA9IGlucHV0O1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgfSxcXG4gICAgICAgIOmhteeggShpbnB1dCkge1xcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IGlucHV0O1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgfSxcXG4gICAgICAgIOeKtuaAgShpbnB1dCkge1xcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBpbnB1dDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDlvIDlkK/mkJzntKIoaW5wdXQpIHtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gdHJ1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdGhpcy5zZWFyY2ggPSBpbnB1dDtcXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgICAgIH0sXFxuICAgICAgICDlvIDlkK/mipjlj6AoaW5wdXQpIHtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gdHJ1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdGhpcy5pc0Jvb2xlYW4oaW5wdXQpO1xcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGlucHV0O1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xcbiAgICAgICAgfSxcXG4gICAgICAgIHNldFRpdGxlKGssIGksIHQpIHtcXG4gICAgICAgICAgICByZXR1cm4gayA9PSBpID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyB0LmZvbnRjb2xvcih0aGlzLuWIhuexu+minOiJsikgOiB0O1xcbiAgICAgICAgfSxcXG4gICAgICAgIGFjdGlvbihvYmopIHtcXG4gICAgICAgICAgICByZXR1cm4gW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmuIXpmaTnirbmgIFcXFwiLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygob2JqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsb2cob2JqKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIob2JqLnN0YXRlKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgb2JqLmFsbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKTtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgb2JqLmNsLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICB9LCBvYmopLFxcbiAgICAgICAgICAgIH0sIF07XFxuICAgICAgICB9LFxcbiAgICAgICAgY2hlY2tQYXJhbSgpIHtcXG4gICAgICAgICAgICB2YXIgb2JqID0ge307XFxuICAgICAgICAgICAgaWYgKHRoaXMucGFnZSA9PSAwICYmIHR5cGVvZiBwYWdlID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl6aG156CBXFxcIik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYWdlID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIumhteeggVxcXCJdID0gdGhpcy5wYWdlO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgb2JqW1xcXCLpobXnoIFcXFwiXSA9IHBhZ2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHRoaXMuaHRtbCA9PSBcXFwiZW1wdHlcXFwiICYmIHR5cGVvZiBodG1sID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl5rqQ56CBXFxcIik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBodG1sID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIua6kOeggVxcXCJdID0gdGhpcy5odG1sO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgb2JqW1xcXCLmupDnoIFcXFwiXSA9IGh0bWw7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09IFxcXCJ1bmRlZmluZWRcXFwiICYmIHR5cGVvZiBkID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl55WM6Z2iXFxcIik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkID09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIueVjOmdolxcXCJdID0gdGhpcy5sYXlvdXQ7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBvYmpbXFxcIueVjOmdolxcXCJdID0gZDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xcbiAgICAgICAgfSxcXG4gICAgICAgIOWIm+W7uuWKqOaAgeWIhuexuyhydWxlT2JqKSB7XFxuICAgICAgICAgICAgaWYgKHJ1bGVPYmogPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIHJ1bGVPYmogPSBbXTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy/liJ3lp4vljJblj5jph4/lvIDlp4tcXG4gICAgICAgICAgICBjb25zdCBwYXJhbSA9IHRoaXMuY2hlY2tQYXJhbSgpO1xcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBwYXJhbS7pobXnoIE7XFxuICAgICAgICAgICAgY29uc3QgaHRtbCA9IHBhcmFtLua6kOeggTtcXG4gICAgICAgICAgICBjb25zdCBkID0gcGFyYW0u55WM6Z2iO1xcbiAgICAgICAgICAgIGNvbnN0IOeKtuaAgSA9IHRoaXMuc3RhdGU7XFxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2g7XFxuICAgICAgICAgICAgY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgY29uc3Qg5oqY5Y+g54q25oCBID0gdGhpcy5vcGVuO1xcbiAgICAgICAgICAgIHZhciDlsZXlvIAgPSB0aGlzLuWxleW8gDtcXG4gICAgICAgICAgICB2YXIg5oqY5Y+gID0gdGhpcy7mipjlj6A7XFxuICAgICAgICAgICAgdmFyIOWFqOa4hSA9IHRoaXMuY2xlYXJhbGw7XFxuICAgICAgICAgICAgdmFyIOa4hemZpCA9IHRoaXMuY2xlYXJzO1xcbiAgICAgICAgICAgIC8v5Yid5aeL5YyW5Y+Y6YeP57uT5p2fXFxuICAgICAgICAgICAgbGV0IGluaXRfY2F0ZSA9IG5ldyBBcnJheSgyMCkuZmlsbChcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgIGNvbnN0IGZvbGQgPSBnZXRNeVZhcihNWV9SVUxFLmdyb3VwLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoXFxuICAgICAgICAgICAgICAgIGdldE15VmFyKFxcXCJoZWFkLmNhdGVcXFwiLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbiAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgaWYgKHNlYXJjaCAmJiBwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcIidoaWtlcjovL3NlYXJjaD9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZzPScraW5wdXRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuaQnOe0ouWFs+mUruivjVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwia2V5d29yZFxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJrZXl3b3JkXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBbXTtcXG4gICAgICAgICAgICBydWxlT2JqLmZvckVhY2goKHgpID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBbXTtcXG4gICAgICAgICAgICAgICAgaWYgKHguanNvbiAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgICAgIHguanNvbi5tYXAoayA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKEpTT04uc3RyaW5naWZ5KGspLnJlcGxhY2UoL15cXFxcW3xcXFxcXSQvZywgJycpKVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoeC7kuIDnuqflrprkvY0pIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh4LuS4gOe6p+WumuS9jS5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gdGhpcy5ldmFsSlNSdWxlKGh0bWwsIHgu5LiA57qn5a6a5L2NKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IHBkZmEoaHRtbCwgeC7kuIDnuqflrprkvY0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmICh4LuWkp+exu+WumuS9jSkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHgu5aSn57G75a6a5L2NLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSB0aGlzLmV2YWxKU1J1bGUoaHRtbCwgeC7lpKfnsbvlrprkvY0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gW3BkZmEoaHRtbCwgeC7lpKfnsbvlrprkvY0pLmpvaW4oJ1xcXFxuJyldO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIC8vLS3pop3lpJblpITnkIYtLVxcbiAgICAgICAgICAgICAgICBpZiAoKCflop7liqAnIGluIHgpKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoeC7lop7liqAuY29uc3RydWN0b3IgPT0gU3RyaW5nKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgeC7lop7liqAgPSBldmFsKHgu5aKe5YqgKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNsaXN0ID0geC7lop7liqAuY29uY2F0KHNsaXN0KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoKCfooaXlhYUnIGluIHgpKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoeC7ooaXlhYUuY29uc3RydWN0b3IgPT0gU3RyaW5nKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgeC7ooaXlhYUgPSBldmFsKHgu6KGl5YWFKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNsaXN0ID0gc2xpc3QuY29uY2F0KHgu6KGl5YWFKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvLy0t6aKd5aSW5aSE55CGLS1cXG4gICAgICAgICAgICAgICAgdmFyIOS4gOe6pyA9IGxpc3QubWFwKChzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpc3QgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICghKFxcXCLlsI/nsbtcXFwiIGluIHgpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgeC7lsI/nsbsgPSBcXFwiYm9keSYmYTpub3QoOm1hdGNoZXMo6aaW6aG1KSk6bm90KGE6bm90KFtocmVmXSkpXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGlmICh4LuWwj+exuy5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlzdCA9IHRoaXMuZXZhbEpTUnVsZShzLCB4LuWwj+exuyk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaXN0ID0gcGRmYShzLCB4LuWwj+exuyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB2YXIg5a6a5L2NID0gc2xpc3QubWFwKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gdGhpcy5nZXRUaXRsZShpdGVtLCB4Luagh+mimCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMuZ2V0VXJsKGl0ZW0sIHgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmogPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4g5a6a5L2NO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgLy9sb2co5LiA57qnKVxcbiAgICAgICAgICAgICAgICAvL2xvZyjkuIDnuqcubGVuZ3RoKVxcbiAgICAgICAgICAgICAgICBpZiAo5LiA57qnLmxlbmd0aCA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2go5LiA57qnLmpvaW4oXFxcIlxcXFxuXFxcIikpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAg5LiA57qnLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2goaXRlbS5qb2luKFxcXCIsXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLy9sb2coY2F0ZWdvcmllcylcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAo5oqY5Y+g54q25oCBKSB7XFxuICAgICAgICAgICAgICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvbGQgPT09IFxcXCIxXFxcIiA/IOaKmOWPoCA6IOWxleW8gCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2xkLCB1LCBhbGwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKE1ZX1JVTEUuZ3JvdXAsIGZvbGQgPT09IFxcXCIxXFxcIiA/IFxcXCIwXFxcIiA6IFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmFsbC5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsqL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg54q25oCBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDlhajmuIVcXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiB0aGlzLmFjdGlvbih7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTog54q25oCBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiDlhajmuIUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbDog5riF6ZmkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coY2F0ZWdvcmllcylcXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgLyppZiAo5bCP57G75a6a5L2NLmluY2x1ZGVzKFxcXCI7XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0uc3BsaXQoXFxcIjtcXFwiKVswXSk7XFxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJfY2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NLnNwbGl0KFxcXCI7XFxcIilbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyovXFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpbmRleClcXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gSlNPTi5wYXJzZShgWyR7Y2F0ZWdvcnl9XWApO1xcbiAgICAgICAgICAgICAgICAgICAgLy8gc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0pO1xcbiAgICAgICAgICAgICAgICAgICAgLy99XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIF/lpKfnsbvmoIfpopgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdGVtLnRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIOaOkumZpCAhPSBcXFwidW5kZWZpbmVkXFxcIiAmJiDmjpLpmaQgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZShuZXdSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gaXRlbS51cmw7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyczog5riF6ZmkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoganNvbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiDnirbmgIEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxjbGVhcnM6IOWFqOa4hSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgdXJsID0gcGQoaXRlbSwgX+Wkp+exu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBpdGVtLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiAo5aSn57G75aSE55CGKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0g5LiA57qn5YiG57G75aSE55CGKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyh1cmwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5zZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfY2F0ZSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jbGVhcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hbGxjbGVhcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIsIEpTT04uc3RyaW5naWZ5KG5ld19jYXRlKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5qc29uLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImR0X1xcXCIgKyBwYXJhbXMuanNvbi50eXBlLCBwYXJhbXMuanNvbi52YWx1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnN0YXRlLCBwYXJhbXMuanNvbik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbXMpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9sZCA9PT0gXFxcIjFcXFwiIHx8IOaKmOWPoOeKtuaAgSA9PSBmYWxzZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXh0cmFwb3MgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiAoaXRlbS5pbmNsdWRlcygndHlwZT1cXFwiQGV4dHJhXFxcIicpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFwb3MgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKCfpmYTliqDlrprkvY0nKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki9cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhcG9zKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKGl0ZW0sIFxcXCJhJiZUZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIOaOkumZpCAhPSBcXFwidW5kZWZpbmVkXFxcIiAmJiDmjpLpmaQgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHBkZmgoaXRlbSwgXFxcImEmJnN0YXRlXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwgXFxcImEmJnZhbHVlXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBpdGVtLnRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiDmjpLpmaQgIT0gXFxcInVuZGVmaW5lZFxcXCIgJiYg5o6S6ZmkICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzd2l0Y2ggKHRydWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSDliIbnsbvpk77mjqUuaW5jbHVkZXMoXFxcIkBAQFxcXCIpOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdChcXFwiQEBAXFxcIilbMF0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwg5YiG57G76ZO+5o6lLnNwbGl0KFxcXCJAQEBcXFwiKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSDliIbnsbvpk77mjqUuaW5jbHVkZXMoXFxcIkBAXFxcIik6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IOWIhuexu+mTvuaOpS5zcGxpdChcXFwiQEBcXFwiKVswXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdChcXFwiQEBcXFwiKVsxXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gaXRlbS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ganNvbiA9IHBkKGl0ZW0sIOWIhuexu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki9cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSBpdGVtLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdmFyIGpzb2495YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQEAnKT97XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzBdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzFdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTpwZChpdGVtLOWIhuexu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uPeWIhuexu+mTvuaOpS5pbmNsdWRlcygnQEAnKT97XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOuWIhuexu+mTvuaOpS5zcGxpdCgnQEAnKVswXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAJylbMV0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OnBkKGl0ZW0s5YiG57G76ZO+5o6lKTsqL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IGpzb24sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTog54q25oCBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsY2xlYXJzOiDlhajmuIUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5zZXRUaXRsZShrZXkudG9TdHJpbmcoKSwgY2F0ZV90ZW1wW2luZGV4XSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5XFxcIiArIFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYWxsY2xlYXJzLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLmpzb24uY29uc3RydWN0b3IgPT09IE9iamVjdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiZHRfXFxcIiArIHBhcmFtcy5qc29uLnR5cGUsIHBhcmFtcy5qc29uLnZhbHVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMuc3RhdGUsIHBhcmFtcy5qc29uKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW1zKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LFxcbiAgICB9O1xcbiAgICBvYmou6aKE6K6+KG9wdGlvbnMpO1xcbiAgICByZXR1cm4gb2JqO1xcbn1cXG5cXG4vLy7nirbmgIEoXFxcInVybFxcXCIpXFxuLy8u55WM6Z2iKGQpXFxuLy8u5rqQ56CBKHhodG1sKVxcbi8vLuWFqOa4hShbXFxcIjFcXFwiLCBcXFwiMlxcXCJdKVxcbi8vLua4hemZpCgpXFxuLy8u5byA5ZCv5oqY5Y+gKClcXG4vLy7pobXnoIEocGFnZSlcXG4vLy7liJvlu7rliqjmgIHliIbnsbso5a6a5L2N5YiX6KGoKTtcXG5cXG5mdW5jdGlvbiBnZXRPYmpmdWMob2JqKSB7XFxuICAgIGNvbnN0IG1ldGhvZHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZpbHRlcihcXG4gICAgICAgIChuYW1lKSA9PiB0eXBlb2Ygb2JqW25hbWVdID09PSBcXFwiZnVuY3Rpb25cXFwiXFxuICAgICk7XFxuICAgIGlmIChtZXRob2RzLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBjb25zb2xlLmxvZyhvYmoudG9TdHJpbmcoKSk7XFxuICAgICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgY29uc3QgZm9ybWF0dGVkU3RyaW5nID0gbWV0aG9kc1xcbiAgICAgICAgLm1hcCgobmFtZSkgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IGZuID0gb2JqW25hbWVdO1xcbiAgICAgICAgICAgIGNvbnN0IGZuU3RyaW5nID0gYCR7bmFtZX06ICR7Zm4udG9TdHJpbmcoKX1gO1xcbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVkRm5TdHJpbmcgPSBmblN0cmluZy5yZXBsYWNlKFxcbiAgICAgICAgICAgICAgICAvXFxcXFxcXFx1KFtcXFxcZFxcXFx3XXs0fSkvZ2ksXFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKG1hdGNoLCBncnApIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGdycCwgMTYpKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgcmV0dXJuIHJlc3RvcmVkRm5TdHJpbmc7XFxuICAgICAgICB9KVxcbiAgICAgICAgLmpvaW4oXFxcIlxcXFxuXFxcIik7XFxuICAgIGNvbnNvbGUubG9nKGZvcm1hdHRlZFN0cmluZyk7XFxufVxcblxcbi8qXFxudmVyIDIwMjMtMDYtMTYgIDEuMFxcbiovXFxudmFyIOeKtuaAgSA9XFxuICAgIHR5cGVvZiDnirbmgIHmoIforrAgIT0gXFxcInVuZGVmaW5lZFxcXCIgJiYg54q25oCB5qCH6K6wICE9IFxcXCJcXFwiID8g54q25oCB5qCH6K6wIDogTVlfUlVMRS51cmw7XFxuXFxubGV0IGR0X2RlYnVnID0gZmFsc2U7XFxuXFxuYWRkTGlzdGVuZXIoXFxuICAgIFxcXCJvbkNsb3NlXFxcIixcXG4gICAgJC50b1N0cmluZygoKSA9PiB7fSlcXG4pO1xcblxcbnZhciBDcmVhdGUgPSB7XFxuICAgIHNwYWdlOiB7XFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgICAgIHJldHVybiBzdG9yYWdlMC5nZXRNeVZhcihcXFwic3BhZ2VcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICB9LFxcbiAgICAgICAgc2V0OiBmdW5jdGlvbih1cmwpIHtcXG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwic3BhZ2VcXFwiLCB1cmwpO1xcbiAgICAgICAgfSxcXG4gICAgfSxcXG4gICAgbmV4dFBhZ2U6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgbmV4dCA9IGV2YWwo5LiL5LiA6aG1KTtcXG4gICAgICAgICAgICAvL2xvZygnbjonK25leHQpXFxuICAgICAgICAgICAgaWYgKG5leHQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfkuIvkuIDpobXpk77mjqXkuLrnqbonKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xcbiAgICAgICAgICAgIGlmICh0cnVlX3VybCA9PSBuZXh0KSB7XFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAvL2xvZyhcXFwi5Y+v6IO95LiN5a2Y5Zyo5LiL5LiA6aG15oiW6ICF5LiL5LiA6aG15a6a5L2N5pyJ6Zeu6aKYXFxcIik7XFxuICAgICAgICAgICAgbG9nKFxcXCLplJnor6/kv6Hmga86XFxcIiArIGUubWVzc2FnZSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoKG5leHQgPT0gXFxcIlxcXCIgfHwgbmV4dCA9PSB1bmRlZmluZWQpICYmIHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIG5leHQgPSB0cnVlX3VybDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgLy9yZXN1bHQ9ZmFsc2U7XFxuICAgICAgICAgICAgbmV4dCA9IGdldE15VmFyKOeKtuaAgSk7XFxuICAgICAgICB9XFxuICAgICAgICAvL2xvZygnbCcrdHJ1ZV91cmwpXFxuICAgICAgICAvL2xvZygnbicrbmV4dClcXG4gICAgICAgIGlmIChwYWdlICE9IDEpIHtcXG4gICAgICAgICAgICBpZiAodHJ1ZV91cmwgPT0gbmV4dCAmJiAhcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcXG4gICAgICAgIC8vcHV0TXlWYXIo54q25oCBLCBuZXh0KTtcXG4gICAgfSxcXG4gICAgZ2V0QmFja0ltYWdlOiBmdW5jdGlvbihpbWd1cmwpIHtcXG4gICAgICAgIHZhciByZXN1bHQgPSBpbWd1cmw7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHJlc3VsdCA9IC91cmwoPzpcXFxccyspP1xcXFwoKC4qPylcXFxcKS9nXFxuICAgICAgICAgICAgICAgIC5leGVjKGltZ3VybClbMV1cXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLygnfFxcXCJ8JnF1b3Q7KS9nbSwgXFxcIlxcXCIpO1xcbiAgICAgICAgfSBjYXRjaCB7fVxcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcXG4gICAgfSxcXG4gICAgaHR0cEhhbmRsZTogZnVuY3Rpb24oaW5wdXQpIHtcXG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XFxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcIi8vXFxcIikpIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImh0dHBzOlxcXCIgKyBpbnB1dDtcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc3RhcnRzV2l0aChcXFwiL1xcXCIpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIE1ZX0hPTUUgKyBpbnB1dDtcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgaW1nSGFuZGxlOiBmdW5jdGlvbihpdGVtLCBydWxlKSB7XFxuICAgICAgICB2YXIgaW1nID0gXFxcIlxcXCI7XFxuICAgICAgICBpZiAocnVsZS5pbWcuc3RhcnRzV2l0aChcXFwicGRcXFwiKSkge1xcbiAgICAgICAgICAgIGltZyA9IGV2YWwocnVsZS5pbWcpO1xcbiAgICAgICAgfSBlbHNlIGlmIChydWxlLmJhY2tpbWcpIHtcXG4gICAgICAgICAgICBpbWcgPSBwZGZoKGl0ZW0sIHJ1bGUuaW1nKTtcXG4gICAgICAgICAgICBpbWcgPSB0aGlzLmdldEJhY2tJbWFnZShpbWcpO1xcbiAgICAgICAgICAgIGltZyA9IHRoaXMuaHR0cEhhbmRsZShpbWcpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpbWcgPSBwZGZoKGl0ZW0sIHJ1bGUuaW1nKTtcXG4gICAgICAgICAgICBpZiAoIWltZy5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgaW1nID0gcGQoaXRlbSwgcnVsZS5pbWcpO1xcbiAgICAgICAgICAgICAgICBpbWcgPSB0aGlzLmh0dHBIYW5kbGUoaW1nKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gaW1nICsgcnVsZS5yZWY7XFxuICAgIH0sXFxuICAgIHVybEhhbmRsZTogZnVuY3Rpb24oaXRlbSwgcnVsZSkge1xcbiAgICAgICAgdmFyIGhyZWYgPSBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChydWxlLnVybC5zdGFydHNXaXRoKFxcXCJwZFxcXCIpKSB7XFxuICAgICAgICAgICAgaHJlZiA9IGV2YWwocnVsZS51cmwpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBocmVmID0gcGQoaXRlbSwgcnVsZS51cmwpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaHJlZiA9IHJ1bGUuaW10ID8gaHJlZiArIFxcXCIjaW1tZXJzaXZlVGhlbWUjXFxcIiA6IGhyZWY7XFxuICAgICAgICByZXR1cm4gaHJlZjtcXG4gICAgfSxcXG4gICAgc2V0Q29udGVudDogZnVuY3Rpb24oaXRlbSwgaW5wdXQpIHtcXG4gICAgICAgIGxldCBvdXRwdXQgPSBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChpbnB1dCA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcInBkXFxcIikpIHtcXG4gICAgICAgICAgICBvdXRwdXQgPSBldmFsKGlucHV0KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgb3V0cHV0ID0gcGRmaChpdGVtLCBpbnB1dCk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gb3V0cHV0O1xcbiAgICB9LFxcbiAgICByZWZyZXNoOiBmdW5jdGlvbigpIHtcXG4gICAgICAgIGFkZExpc3RlbmVyKFxcbiAgICAgICAgICAgIFxcXCJvblJlZnJlc2hcXFwiLFxcbiAgICAgICAgICAgICQudG9TdHJpbmcoKHUpID0+IHtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwieWlsaXN0XFxcIik7XFxuICAgICAgICAgICAgICAgIC8vdmFyIHAgPSBzdG9yYWdlMC5nZXRNeVZhcignc3BhZ2UnLCAnJyk7XFxuICAgICAgICAgICAgICAgIC8vcHV0TXlWYXIodSwgcCk7XFxuICAgICAgICAgICAgfSwg54q25oCBKVxcbiAgICAgICAgKTtcXG4gICAgfSxcXG4gICAgZ2V0Qm9vbGVhblZhbHVlOiBmdW5jdGlvbih2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XFxuICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IEJvb2xlYW4odmFsdWUpIDogKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogdHJ1ZSk7XFxuICAgIH0sXFxuICAgIGpzb25MaXN0OiBmdW5jdGlvbihhcnIsIGpzb24sIHJ1bGUpIHtcXG4gICAgICAgIGlmIChqc29uLmNvbnN0cnVjdG9yICE9IE9iamVjdCkge1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGpzb24pO1xcbiAgICAgICAgICAgIH0gY2F0Y2gge31cXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBkZWJ1ZyA9IHRoaXMuZ2V0Qm9vbGVhblZhbHVlKHJ1bGUuZGVidWcsIGZhbHNlKTtcXG4gICAgICAgIHZhciBlbXB0eSA9IHRoaXMuZ2V0Qm9vbGVhblZhbHVlKHJ1bGUuZW1wdHkpO1xcbiAgICAgICAganNvbltydWxlLmxpc3RdLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICBpZiAoZGVidWcpIHtcXG4gICAgICAgICAgICAgICAgbG9nKGl0ZW0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBpbWcgPSBldmFsKHJ1bGUuaW1nKSArIHJ1bGUucmVmO1xcbiAgICAgICAgICAgIHZhciBocmVmID0gZXZhbChydWxlLnVybCk7XFxuICAgICAgICAgICAgaHJlZiA9IHJ1bGUuaW10ID8gaHJlZiArIFxcXCIjaW1tZXJzaXZlVGhlbWUjXFxcIiA6IGhyZWY7XFxuICAgICAgICAgICAgdmFyIGxhenkgPSBydWxlLmxhenkgPyBydWxlLmxhenkgOiBcXFwiXFxcIjtcXG4gICAgICAgICAgICB2YXIgZGQgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBldmFsKHJ1bGUudGl0bGUpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBldmFsKHJ1bGUuZGVzYyksXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGV2YWwocnVsZS5jb250ZW50KSxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaW1nLFxcbiAgICAgICAgICAgICAgICB1cmw6IChlbXB0eSA/IFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiIDogJycpICsgaHJlZixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IHJ1bGUuY29sX3R5cGUsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB9O1xcblxcbiAgICAgICAgICAgIGlmIChsYXp5ICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGRkW1xcXCJ1cmxcXFwiXSA9IGhyZWYgKyBsYXp5O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBhcnIucHVzaChkZCk7XFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgcnVsZUxpc3Q6IGZ1bmN0aW9uKGFyciwgaHRtbCwgcnVsZSkge1xcbiAgICAgICAgdmFyIGxpc3QgPSBwZGZhKGh0bWwsIHJ1bGUubGlzdCk7XFxuICAgICAgICB2YXIgZGVidWcgPSB0aGlzLmdldEJvb2xlYW5WYWx1ZShydWxlLmRlYnVnLCBmYWxzZSk7XFxuICAgICAgICB2YXIgZW1wdHkgPSB0aGlzLmdldEJvb2xlYW5WYWx1ZShydWxlLmVtcHR5KTtcXG4gICAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgIGlmIChkZWJ1Zykge1xcbiAgICAgICAgICAgICAgICBsb2coaXRlbSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gdGhpcy5zZXRDb250ZW50KGl0ZW0sIHJ1bGUudGl0bGUpO1xcbiAgICAgICAgICAgIHZhciBkZXNjID0gdGhpcy5zZXRDb250ZW50KGl0ZW0sIHJ1bGUuZGVzYyk7XFxuICAgICAgICAgICAgdmFyIGltZyA9IHRoaXMuaW1nSGFuZGxlKGl0ZW0sIHJ1bGUpO1xcbiAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLnVybEhhbmRsZShpdGVtLCBydWxlKTtcXG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuc2V0Q29udGVudChpdGVtLCBydWxlLmNvbnRlbnQpO1xcbiAgICAgICAgICAgIHZhciBsYXp5ID0gcnVsZS5sYXp5ID8gcnVsZS5sYXp5IDogXFxcIlxcXCI7XFxuICAgICAgICAgICAgdmFyIGRkID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGltZyxcXG4gICAgICAgICAgICAgICAgdXJsOiAoZW1wdHkgPyBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiA6ICcnKSArIHVybCArICc/cGFnZT1meXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS95alxcXCIpJyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogY29udGVudCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IHJ1bGUuY29sX3R5cGUsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGlmIChsYXp5ICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGRkW1xcXCJ1cmxcXFwiXSA9IHVybCArIGxhenk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGFyci5wdXNoKGRkKTtcXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBMaXN0OiBmdW5jdGlvbihhcnIsIGh0bWwsIHJ1bGUsIHBhcmFtKSB7XFxuICAgICAgICBwYXJhbSA9IHBhcmFtID8gcGFyYW0gOiB7fTtcXG4gICAgICAgIHZhciBhdXRvID0gcGFyYW0uYXV0byA/IHBhcmFtLmF1dG8gOiBmYWxzZTtcXG4gICAgICAgIHZhciBzaG93ID0gcGFyYW0uc2hvdyA/IHBhcmFtLnNob3cgOiBmYWxzZTtcXG4gICAgICAgIGlmIChwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAvL3RoaXMuc3BhZ2Uuc2V0KHRydWVfdXJsKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xcbiAgICAgICAgdmFyIGxpc3QgPSBwZGZhKGh0bWwsIHJ1bGUubGlzdCk7XFxuICAgICAgICAvL2xvZyh0aGlzLm5leHRQYWdlKCkpXFxuICAgICAgICBpZiAoKHN0b3JhZ2UwLmdldE15VmFyKCd5aV9pc25leHQnLCAndCcpID09ICd0JyAmJiBsaXN0Lmxlbmd0aCA+IDApIHx8IHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBkZWxldGVJdGVtKFxcXCJwYWdlbnVtXFxcIik7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oXFxcInBhZ2VsaW5lXFxcIik7XFxuICAgICAgICAgICAgICAgIHZhciBpZCA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICB2YXIgY2xzID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHRoaXMuc2V0Q29udGVudChpdGVtLCBydWxlLnRpdGxlKTtcXG4gICAgICAgICAgICAgICAgdmFyIGRlc2MgPSB0aGlzLnNldENvbnRlbnQoaXRlbSwgcnVsZS5kZXNjKTtcXG4gICAgICAgICAgICAgICAgdmFyIGltZyA9IHRoaXMuaW1nSGFuZGxlKGl0ZW0sIHJ1bGUpO1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gdGhpcy51cmxIYW5kbGUoaXRlbSwgcnVsZSk7XFxuICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5zZXRDb250ZW50KGl0ZW0sIHJ1bGUuY29udGVudCk7XFxuICAgICAgICAgICAgICAgIGlmIChpID09IGxpc3QubGVuZ3RoIC0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgaWQgPSBcXFwibGFzdGlkX1xcXCIgKyBwYWdlO1xcbiAgICAgICAgICAgICAgICAgICAgY2xzID0gXFxcImxhc3RtYXJrXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjI1xcXCIgKyB1cmwgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZWpcXFwiKScsXFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IHJ1bGUuY29sX3R5cGUsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBjbHMsXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgaWYgKGkgPT0gbGlzdC5sZW5ndGggLSAxICYmIHNob3cpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXFxcInBhZ2VsaW5lXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPuWKoOi9veS4rS4uLjwvc21hbGw+XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcXFwicGFnZW51bVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInBhZ2VudW1cXFwiLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPjxzbWFsbD7liLDlupXkuoY8L3NtYWxsPjwvZm9udD4nLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwibGFzdFxcXCIsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICAvKmlmIChsaXN0Lmxlbmd0aCA9PSAwICYmIHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+PHNtYWxsPuaXoOWGheWuuTwvc21hbGw+PC9mb250PicsXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge30sXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9Ki9cXG4gICAgICAgIGlmICh0aGlzLm5leHRQYWdlKCkpIHtcXG4gICAgICAgICAgICAvL2xvZygndCcpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCd5aV9pc25leHQnLCAndCcpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAvL2xvZygnZicpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCd5aV9pc25leHQnLCAnZicpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGF1dG8pIHtcXG4gICAgICAgICAgICAvL2NyZWF0ZU5leHRQYWdlKCk7XFxuICAgICAgICAgICAgYXV0b1BhZ2UoKTtcXG4gICAgICAgIH1cXG4gICAgfSxcXG59O1xcblxcbnZhciBleHRNZXRob2QgPSB7XFxuICAgIFRvUGFyYW1zOiBmdW5jdGlvbigpIHtcXG4gICAgICAgIHZhciBqc29uID0gYXJndW1lbnRzWzBdO1xcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGpzb24pXFxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBrZXkgKyBcXFwiPVxcXCIgKyBqc29uW2tleV0pXFxuICAgICAgICAgICAgLmpvaW4oXFxcIiZcXFwiKTtcXG4gICAgfSxcXG4gICAgdXJsUGFyc2U6IGZ1bmN0aW9uKHUpIHtcXG4gICAgICAgIHZhciBkaWN0ID0ge307XFxuICAgICAgICBkaWN0LlNvdXJjZSA9IHU7XFxuICAgICAgICBsZXQgcGFyYW1zID0gKHVybCkgPT4ge1xcbiAgICAgICAgICAgIGxldCBxdWVyeVBhcmFtcyA9IHt9O1xcbiAgICAgICAgICAgIGxldCByZWcgPSAvKFtePz0mXSspPShbXj89Jl0rKS9nO1xcbiAgICAgICAgICAgIHVybC5yZXBsYWNlKHJlZywgZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zW2FyZ3VtZW50c1sxXV0gPSBhcmd1bWVudHNbMl07XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHZhciBqYXZhVXJsID0gSmF2YUltcG9ydGVyKGphdmEubmV0LlVSTCk7XFxuICAgICAgICB3aXRoKGphdmFVcmwpIHtcXG4gICAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTCh1KTtcXG4gICAgICAgICAgICBkaWN0LlByb3RvY29sID0gdXJsLmdldFByb3RvY29sKCk7XFxuICAgICAgICAgICAgZGljdC5Ib3N0ID0gdXJsLmdldEhvc3QoKTtcXG4gICAgICAgICAgICBkaWN0LlBvcnQgPSB1cmwuZ2V0UG9ydCgpO1xcbiAgICAgICAgICAgIGRpY3QuRmlsZSA9IHVybC5nZXRGaWxlKCk7XFxuICAgICAgICAgICAgZGljdC5QYXRoID0gdXJsLmdldFBhdGgoKTtcXG4gICAgICAgICAgICBkaWN0LlJlZiA9IHVybC5nZXRSZWYoKTtcXG4gICAgICAgICAgICBkaWN0Lkhvc3RzID0gYCR7ZGljdC5Qcm90b2NvbH06Ly8ke3VybC5nZXRIb3N0KCl9YDtcXG4gICAgICAgIH1cXG4gICAgICAgIGRpY3QuUGFyYW1zID0gcGFyYW1zKHUpO1xcbiAgICAgICAgcmV0dXJuIGRpY3Q7XFxuICAgIH0sXFxuICAgIGlzRXF1YWw6IGZ1bmN0aW9uKHgsIHkpIHtcXG4gICAgICAgIGNvbnN0IG9rID0gT2JqZWN0LmtleXMsXFxuICAgICAgICAgICAgdHggPSB0eXBlb2YgeCxcXG4gICAgICAgICAgICB0eSA9IHR5cGVvZiB5O1xcbiAgICAgICAgcmV0dXJuIHggJiYgeSAmJiB0eCA9PT0gXFxcIm9iamVjdFxcXCIgJiYgdHggPT09IHR5ID9cXG4gICAgICAgICAgICBvayh4KS5sZW5ndGggPT09IG9rKHkpLmxlbmd0aCAmJlxcbiAgICAgICAgICAgIG9rKHgpLmV2ZXJ5KChrZXkpID0+IHRoaXMuaXNFcXVhbCh4W2tleV0sIHlba2V5XSkpIDpcXG4gICAgICAgICAgICB4ID09PSB5O1xcbiAgICB9LFxcbiAgICBmaW5kRGlmZmVyZW50SW5kZXg6IGZ1bmN0aW9uKHN0cjEsIHN0cjIpIHtcXG4gICAgICAgIGNvbnN0IGRpZmZDaGFycyA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgaWYgKHN0cjFbaV0gIT09IHN0cjJbaV0pIHtcXG4gICAgICAgICAgICAgICAgZGlmZkNoYXJzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXFxuICAgICAgICAgICAgICAgICAgICBzMTogc3RyMVtpXSxcXG4gICAgICAgICAgICAgICAgICAgIHMyOiBzdHIyW2ldLFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZGlmZkNoYXJzO1xcbiAgICB9LFxcbiAgICByZXBsYWNlQ2hhckF0OiBmdW5jdGlvbihzdHIsIGluZGV4LCByZXBsYWNlbWVudCkge1xcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzdHIubGVuZ3RoKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHN0cjtcXG4gICAgICAgIH1cXG4gICAgICAgIC8vbG9nKGluZGV4KVxcbiAgICAgICAgY29uc3QgYXJyID0gc3RyLnNwbGl0KFxcXCJcXFwiKTtcXG4gICAgICAgIGFycltpbmRleF0gPSByZXBsYWNlbWVudDtcXG4gICAgICAgIHJldHVybiBhcnIuam9pbihcXFwiXFxcIik7XFxuICAgIH0sXFxuICAgIGdldE9iamVjdEtleXNEaWZmOiBmdW5jdGlvbihvYmoxLCBvYmoyKSB7XFxuICAgICAgICBjb25zdCBkaWZmZXJlbnRLZXlzID0gW107XFxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqMSkge1xcbiAgICAgICAgICAgIGlmICghb2JqMi5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8IG9iajFba2V5XSAhPT0gb2JqMltrZXldKSB7XFxuICAgICAgICAgICAgICAgIGRpZmZlcmVudEtleXMucHVzaChrZXkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBvYmoyKSB7XFxuICAgICAgICAgICAgaWYgKCFvYmoxLmhhc093blByb3BlcnR5KGtleSkpIHtcXG4gICAgICAgICAgICAgICAgZGlmZmVyZW50S2V5cy5wdXNoKGtleSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGRpZmZlcmVudEtleXM7XFxuICAgIH0sXFxuICAgIGdldE5leHRVcmw6IGZ1bmN0aW9uKHNvdXJjZSwgdGFyZ2V0LCBwYXJhbXMpIHtcXG4gICAgICAgIHZhciB1MSA9IHRoaXMudXJsUGFyc2Uoc291cmNlKTtcXG4gICAgICAgIHZhciB1MiA9IHRoaXMudXJsUGFyc2UodGFyZ2V0KTtcXG4gICAgICAgIHZhciBwYSA9IHVuZGVmaW5lZDtcXG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW1zID09IFxcXCJvYmplY3RcXFwiKSB7XFxuICAgICAgICAgICAgcGEgPSBwYXJhbXMuaGFzT3duUHJvcGVydHkoXFxcIueJueW+gVxcXCIpID8gcGFyYW1zLueJueW+gSA6IHVuZGVmaW5lZDtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBuZXh0dXJsID0gc291cmNlO1xcbiAgICAgICAgdmFyIGNhID0gT2JqZWN0LmtleXModTIuUGFyYW1zKS5sZW5ndGggPT0gMCA/IFxcXCJcXFwiIDogXFxcIj9cXFwiO1xcbiAgICAgICAgaWYgKHBhICE9IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIHZhciBycyA9IFN0cmluZyh1Mi5QYXRoKS5yZXBsYWNlKG5ldyBSZWdFeHAocGEpLCBcXFwiJDFmeXBhZ2VcXFwiKTtcXG4gICAgICAgICAgICBuZXh0dXJsID0gdTIuSG9zdHMgKyBycyArIGNhICsgdGhpcy5Ub1BhcmFtcyh1Mi5QYXJhbXMpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAodGhpcy5pc0VxdWFsKHUxLlBhcmFtcywgdTIuUGFyYW1zKSkge1xcbiAgICAgICAgICAgICAgICBpZiAoZHRfZGVidWcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyh1MS5QYXRoKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyh1Mi5QYXRoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIgZGYgPSB0aGlzLmZpbmREaWZmZXJlbnRJbmRleChTdHJpbmcodTEuUGF0aCksIFN0cmluZyh1Mi5QYXRoKSk7XFxuICAgICAgICAgICAgICAgIGlmIChkdF9kZWJ1Zykge1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKGRmKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoZGYubGVuZ3RoID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciByZSA9IGRmWzBdLmluZGV4O1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBkZi5maWx0ZXIoKHgpID0+IC9cXFxcZCsvLnRlc3QoeC5zMikpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlID0gZlswXS5pbmRleDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIgZXEgPSB0aGlzLnJlcGxhY2VDaGFyQXQoU3RyaW5nKHUyLlBhdGgpLCByZSwgXFxcImZ5cGFnZVxcXCIpO1xcbiAgICAgICAgICAgICAgICBuZXh0dXJsID0gdTIuSG9zdHMgKyBlcSArIGNhICsgdGhpcy5Ub1BhcmFtcyh1Mi5QYXJhbXMpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBlcCA9IHRoaXMuZ2V0T2JqZWN0S2V5c0RpZmYodTEuUGFyYW1zLCB1Mi5QYXJhbXMpXFxuICAgICAgICAgICAgICAgIGlmIChlcC5sZW5ndGggPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgdTEuUGFyYW1zW2VwWzBdXSA9ICdmeXBhZ2UnXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsb2coZXApO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHZhciBlcSA9IFN0cmluZyh1MS5QYXRoKS5yZXBsYWNlKC9cXFxcZCsvLCBcXFwiZnlwYWdlXFxcIik7XFxuICAgICAgICAgICAgICAgIG5leHR1cmwgPSB1MS5Ib3N0cyArIGVxICsgY2EgKyB0aGlzLlRvUGFyYW1zKHUxLlBhcmFtcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgLy9sb2coJ25leHQ6JytuZXh0dXJsKVxcbiAgICAgICAgcmV0dXJuIG5leHR1cmw7XFxuICAgIH0sXFxufTtcXG5cXG5mdW5jdGlvbiBnZXRUcnVlbGluayhtYXJrLCB1cmwsIHBhZ2UpIHtcXG4gICAgdmFyIHAgPSBnZXRNeVZhcihtYXJrLCB1cmwpLnJlcGxhY2UoXFxcImZ5cGFnZVxcXCIsIHBhZ2UpO1xcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICByZXR1cm4gZ2V0TXlWYXIoXFxcInlpX2ZpcnN0cGFnZVxcXCIsIHApO1xcbiAgICB9IGVsc2UgaWYgKHAgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHJldHVybiBwO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmV0dXJuIHVybDtcXG4gICAgfVxcbn1cXG4vL+aehOW7ulxcbmZ1bmN0aW9uIGNyZWF0ZU5leHRQYWdlKCkge1xcbiAgICBsZXQgc3RhcnRudW0gPSAxO1xcbiAgICB2YXIgb2JqID0gYXJndW1lbnRzWzBdO1xcbiAgICBpZiAodHJ1ZV91cmwgIT0gZ2V0TXlWYXIoXFxcInlpX3BhZ2V1cmxcXFwiLCBcXFwiXFxcIikpIHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInlpX3BhZ2V1cmxcXFwiKTtcXG4gICAgfVxcbiAgICBpZiAocGFnZSA9PSBzdGFydG51bSAmJiBnZXRNeVZhcihcXFwieWlfcGFnZXVybFxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICBwdXRNeVZhcihcXFwieWlfZmlyc3RwYWdlXFxcIiwgdHJ1ZV91cmwpO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgbmV4dCA9IGV2YWwo5LiL5LiA6aG1KTtcXG4gICAgICAgICAgICAvL2xvZyhcXFwibmV4dFxcXCIpO1xcbiAgICAgICAgICAgIC8vbG9nKG5leHQpO1xcbiAgICAgICAgfSBjYXRjaCB7XFxuICAgICAgICAgICAgbG9nKFxcXCLlj6/og73kuI3lrZjlnKjkuIvkuIDpobXmiJbogIXkuIvkuIDpobXlrprkvY3mnInpl67pophcXFwiKTtcXG4gICAgICAgICAgICBuZXh0ID0gXFxcIlxcXCI7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAobmV4dCAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIHZhciBueHVybCA9IGV4dE1ldGhvZC5nZXROZXh0VXJsKHRydWVfdXJsLCBuZXh0LCBvYmopO1xcbiAgICAgICAgICAgIC8vbG9nKFxcXCJueHVybDpcXFwiICsgbnh1cmwpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKOeKtuaAgSwgbnh1cmwpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5aV9wYWdldXJsXFxcIiwgbnh1cmwpO1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIGF1dG9QYWdlKCkge1xcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxuICAgICAgICBwdXRNeVZhcihcXFwieWlfZmlyc3RwYWdlXFxcIiwgdHJ1ZV91cmwpO1xcbiAgICB9XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgbmV4dCA9IGV2YWwo5LiL5LiA6aG1KTtcXG4gICAgICAgIC8vbG9nKFxcXCJuZXh0XFxcIik7XFxuICAgICAgICAvL2xvZygnbmV4dDonK25leHQpO1xcbiAgICB9IGNhdGNoIHtcXG4gICAgICAgIGxvZyhcXFwi5Y+v6IO95LiN5a2Y5Zyo5LiL5LiA6aG15oiW6ICF5LiL5LiA6aG15a6a5L2N5pyJ6Zeu6aKYXFxcIik7XFxuICAgICAgICBuZXh0ID0gXFxcIlxcXCI7XFxuICAgIH1cXG4gICAgaWYgKG5leHQgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHB1dE15VmFyKOeKtuaAgSwgbmV4dCk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqflpJbpg6jmkJzntKJcIixcInBhdGhcIjpcInRvb2xcIixcInJ1bGVcIjpcIi8vdmFyIHRpdGxlID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsIOaQnOe0ouagh+etvik7XFxuLy92YXIgdGl0bGUgPSBNWV9QQVJBTVMudGl0bGU7XFxuLy9sb2codGl0bGUpXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48bWlkZGxlPjxmb250IGNvbG9yPVxcXCIjRkYwMDAwXFxcIj4gVGhpc0FWPC9mb250PjwvbWlkZGxlPicsXFxuICAgIHBpY191cmw6ICdodHRwczovL2NkbjQuaWNvbmZpbmRlci5jb20vZGF0YS9pY29ucy9sb2dvcy1hbmQtYnJhbmRzLzUxMi8yMzJfTmludGVuZG9fU3dpdGNoX2xvZ28tMTI4LnBuZycsXFxuICAgIHVybDogJCgnJykubGF6eVJ1bGUoKOeVquWPtykgPT4ge1xcbiAgICAgICAgICAgICAgICAgdmFyIGF2ID0gXFxcImh0dHBzOi8vdGhpc2F2LmNvbS9jbi9cXFwiICsg55Wq5Y+3OyBcXG4vL2xvZyhhdilcXG4gICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBodG1sID0gZmV0Y2goYXYsIHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9LHRpbWVvdXQ6MzAwMFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgZXZhbChodG1sLm1hdGNoKC9ldmFsLio/XFxcXG4vKVswXSlcXG4gICAgICAgICAgICAgICAgIHZhciBzb3VyY2UxOTIwID0gc291cmNlMTI4MC5yZXBsYWNlKFxcXCIxMjgweDcyMFxcXCIsXFxcIjE5MjB4MTA4MFxcXCIpXFxuICAgICAgICAgICAgICAgICB2YXIgY29kZSA9IEpTT04ucGFyc2UoZmV0Y2goc291cmNlMTkyMCx7b25seUhlYWRlcnM6dHJ1ZSx0aW1lb3V0OjMwMDB9KSkuc3RhdHVzQ29kZTtcXG4gICAgICAgICAgICAgICAgIGlmKGNvZGUgIT09IDIwMCl7XFxuICAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlMTI4MCArICc7e1JlZmVyZXJAaHR0cHM6Ly90aGlzYXYuY29tfSdcXG59ZWxzZXtcXG4gICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2UxOTIwICsgJzt7UmVmZXJlckBodHRwczovL3RoaXNhdi5jb219J1xcbiAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICB9Y2F0Y2h7cmV0dXJuIFxcXCJ0b2FzdDovL+aMguair+aIluayoeacieatpOW9seeJh1xcXCJ9XFxuICAgICAgICAgICAgICAgICAgfSznlarlj7cpLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fNScsXFxuICAgIGV4dHJhOiB7IGxvbmdDbGljazogW3t0aXRsZTogJ+afpeeci+e9keWdgCcsIGpzOiAkLnRvU3RyaW5nKCjnlarlj7cpPT57IHJldHVybiBcXFwiaHR0cHM6Ly90aGlzYXYuY29tL2NuL1xcXCIgKyDnlarlj7c7fSznlarlj7cpfV0gfVxcbn0pO1xcblxcbi8vTUlTU0FWXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48bWlkZGxlPjxmb250IGNvbG9yPVxcXCIjMDBGRjAwXFxcIj4gTUlTU0FWPC9mb250PjwvbWlkZGxlPicsXFxuICAgIHBpY191cmw6ICdodHRwczovL2NkbjEuaWNvbmZpbmRlci5jb20vZGF0YS9pY29ucy9mcnVpdHMtbi12ZWdldGFibGVzLWNvbG9yZWQtZ3JhZGllbnQvMTI4L2NhdWxpZmxvd2VyLTEyOC5wbmcnLFxcbiAgICB1cmw6ICQoJycpLmxhenlSdWxlKCjnlarlj7cpID0+IHtcXG4gICAgICAgdHJ5e1xcbiAgICAgICAgICAgICB2YXIgYXYgPSBcXFwiaHR0cHM6Ly9taXNzYXYudG8vc2VhcmNoL21vdmllL1xcXCIgKyDnlarlj7c7ICBcXG4gICAgICAgICAgICAgdmFyIHVybHMgPSBbXTsgICAgXFxuICAgICAgICAgICAgIHZhciBsaXN0ID0gcGRmYShmZXRjaChhdix7dGltZW91dDozMDAwfSksXFxcIi52aWRlb3MtbGlzdCYmYXJ0aWNsZVxcXCIpO1xcbiAgICAgICAgICAgIGZvcih2YXIgaiBpbiBsaXN0KXtcXG4gICAgICAgICAgICAgIHVybHMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBkZmgobGlzdFtqXSxcXFwiYSYmaHJlZlxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIHBsYXlzID0gYmYodXJscykubWFwKGg9PmgubWF0Y2goL3NyYz1cXFwiKC4qPylcXFwiLylbMV0uc3BsaXQoXFxcIiZcXFwiKVswXS5yZXBsYWNlKFxcXCI/aWQ9XFxcIixcXFwiaGxzL1xcXCIpICsgXFxcIi5tM3U4XFxcIikgICBcXG4gICAgICAgICAgICAgcmV0dXJuIHt1cmxzOnBsYXlzfVxcbiAgICAgICB9Y2F0Y2h7XFxuICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICB2YXIgYXYgPSBcXFwiaHR0cHM6Ly9taXNzYXYudG8vc2VhcmNoL21vdmllL1xcXCIgKyDnlarlj7cucmVwbGFjZSgvXFxcXC18XFxcXF8vLFxcXCIlMjBcXFwiKTsgIFxcbiAgICAgICAgICAgICB2YXIgdXJscyA9IFtdOyAgICBcXG4gICAgICAgICAgICAgdmFyIGxpc3QgPSBwZGZhKGZldGNoKGF2LHt0aW1lb3V0OjMwMDB9KSxcXFwiLnZpZGVvcy1saXN0JiZhcnRpY2xlXFxcIik7XFxuICAgICAgICAgICAgZm9yKHZhciBqIGluIGxpc3Qpe1xcbiAgICAgICAgICAgICAgdXJscy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgIHVybDogcGRmaChsaXN0W2pdLFxcXCJhJiZocmVmXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgcGxheXMgPSBiZih1cmxzKS5tYXAoaD0+aC5tYXRjaCgvc3JjPVxcXCIoLio/KVxcXCIvKVsxXS5zcGxpdChcXFwiJlxcXCIpWzBdLnJlcGxhY2UoXFxcIj9pZD1cXFwiLFxcXCJobHMvXFxcIikgKyBcXFwiLm0zdThcXFwiKSAgIFxcbiAgICAgICAgICAgICByZXR1cm4ge3VybHM6cGxheXN9XFxuICAgICAgICAgIH1jYXRjaHtyZXR1cm4gXFxcInRvYXN0Oi8v5rKh5pyJ5q2k5b2x54mHXFxcIn1cXG4gICAgICAgfSAgIFxcbiAgICAgICAgICAgICAgICAgIH0s55Wq5Y+3KSxcXG4gICAgY29sX3R5cGU6ICdpY29uXzUnLFxcbiAgICBleHRyYTogeyBsb25nQ2xpY2s6IFt7dGl0bGU6ICfmn6XnnIvnvZHlnYAnLCBqczogJC50b1N0cmluZygo55Wq5Y+3KT0+eyByZXR1cm4gXFxcImh0dHBzOi8vbWlzc2F2LnRvL3NlYXJjaC9tb3ZpZS9cXFwiICsg55Wq5Y+3fSznlarlj7cpfV0gfVxcbn0pO1xcblxcbi8vbmphdlxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cXFwiIzFFOTBGRlxcXCI+IG5KYXYudHY8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgcGljX3VybDogJ2h0dHBzOi8vY2RuMi5pY29uZmluZGVyLmNvbS9kYXRhL2ljb25zL3NvY2lhbC1pY29ucy0zMy8xMjgvRmFjZWJvb2tfTWVzc2VuZ2VyLTEyOC5wbmcnLFxcbiAgICB1cmw6ICQoJycpLmxhenlSdWxlKCjnlarlj7cpID0+IHtcXG4gICAgICAgICAgICAgICAgIHZhciBhdiA9IFxcXCJodHRwczovL25qYXYudHYvemgvdi9cXFwiICsg55Wq5Y+3OyBcXG4vL2xvZyhhdilcXG4gICAgICAgICAgICAgICAgIHZhciBjb2RlID0gSlNPTi5wYXJzZShmZXRjaChhdix7b25seUhlYWRlcnM6dHJ1ZSx0aW1lb3V0OjMwMDB9KSkuc3RhdHVzQ29kZVxcbiAgICAgICAgICAgICAgICAgaWYoY29kZSAhPT0gMjAwKXsgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5oyC5qKv5oiW5rKh5pyJ5q2k5b2x54mHXFxcIlxcbiAgICAgICAgICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgYXY7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgfSznlarlj7cpLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fNScsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHZpZGVvRXhjbHVkZVJ1bGVzOiBbJzI0MCddLFxcbiAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJyouZG9wcGlvY2RuLionXSxcXG4gICAgICAgICAgICAgICAgYmxvY2tSdWxlczogWydkbW0uY28uanAnXSxcXG4gICAgICAgICAgICAgICAgLy92aWRlb1J1bGVzOiBbJyptM3U4KiddLFxcbiAgICAgICAgICAgICAgICBjYWNoZU0zdTg6IHRydWUsXFxuICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe3RpdGxlOiAn5p+l55yL572R5Z2AJywganM6ICQudG9TdHJpbmcoKOeVquWPtyk9PnsgcmV0dXJuIFxcXCJodHRwczovL25qYXYudHYvemgvdi9cXFwiICsg55Wq5Y+3O30s55Wq5Y+3KX1dXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbn0pO1xcblxcbi8vYXYwMVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cXFwiI0ZGMDBGRlxcXCI+IEFWMDE8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgcGljX3VybDogJ2h0dHBzOi8vY2RuMi5pY29uZmluZGVyLmNvbS9kYXRhL2ljb25zL293bC0xMC81MDAvbmltNTMyXzExX3B1cnBsZV9vd2xfa2lkX2JpcnRoZGF5X2ZhY2VfZXllLTEyOC5wbmcnLFxcbiAgICB1cmw6ICQoJycpLmxhenlSdWxlKCjnlarlj7cpID0+IHtcXG4gICAgICAgICAgICAgICAgIHZhciBhdiA9IFxcXCJodHRwczovL3d3dy5hdjAxLnR2L1xcXCIgKyDnlarlj7c7IFxcbi8vbG9nKGF2KVxcbiAgICAgICAgICAgICAgICAgdmFyIGJ2ID0gSlNPTi5wYXJzZShmZXRjaChhdix7b25seUhlYWRlcnM6dHJ1ZSx0aW1lb3V0OjMwMDB9KSlcXG4vL2xvZyhidilcXG4gICAgICAgICAgICAgICAgIGlmKGJ2LnVybC5pbmNsdWRlcygnZXJyb3InKXx8YnYuc3RhdHVzQ29kZSAhPT0gMjAwKXsgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5oyC5qKv5oiW5rKh5pyJ5q2k5b2x54mHXFxcIlxcbiAgICAgICAgICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgYnYudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgIH0s55Wq5Y+3KSxcXG4gICAgY29sX3R5cGU6ICdpY29uXzUnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB2aWRlb0V4Y2x1ZGVSdWxlczogWydkb3BwaW9jZG4nXSxcXG4gICAgICAgICAgICAgICAgdmlkZW9FeGNsdWRlUnVsZXM6IFsnMjQwJ10sXFxuICAgICAgICAgICAgICAgIHZpZGVvRXhjbHVkZVJ1bGVzOiBbJzQ4MCddLFxcbiAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJy5kb3BwaW9jZG4uJ10sXFxuICAgICAgICAgICAgICAgIGJsb2NrUnVsZXM6IFsnZG1tLmNvLmpwJ10sXFxuICAgICAgICAgICAgICAgIC8vdmlkZW9SdWxlczogWycqbTN1OConXSxcXG4gICAgICAgICAgICAgICAgY2FjaGVNM3U4OiB0cnVlLFxcbiAgICAgICAgICAgICAgIGxvbmdDbGljazogW3t0aXRsZTogJ+afpeeci+e9keWdgCcsIGpzOiAkLnRvU3RyaW5nKCjnlarlj7cpPT57IHJldHVybiBcXFwiaHR0cHM6Ly93d3cuYXYwMS50di9cXFwiICsg55Wq5Y+3O30s55Wq5Y+3KX1dXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbn0pO1xcblxcbi8vSmFibGVcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XFxcIiNGRjhDMDBcXFwiPiBKYWJsZTwvZm9udD48L21pZGRsZT4nLFxcbiAgICBwaWNfdXJsOiAnaHR0cHM6Ly9jZG4zLmljb25maW5kZXIuY29tL2RhdGEvaWNvbnMvY2F0LXBvd2VyLXByZW1pdW0vMTIwL2NhdF9mb29kbG92ZS0xMjgucG5nJyxcXG4gICAgdXJsOiAkKCcnKS5sYXp5UnVsZSgo55Wq5Y+3KSA9PiB7XFxuICAgICAgICAgICAgICAgICB2YXIgYXYgPSBcXFwiaHR0cHM6Ly9qYWJsZS50di92aWRlb3MvXFxcIiArIOeVquWPtyArIFxcXCIvXFxcIjsgXFxuLy9sb2coYXYpXFxuICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QoXFxcImh0dHBzOi8vamFibGUudHYvXFxcIilcXG4gICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBodG1sID0gZmV0Y2goYXYse3RpbWVvdXQ6MzAwMH0pXFxuICAgICAgICAgICAgICAgICB2YXIgdXJsID0gaHRtbC5tYXRjaCgvaHR0cHM/OlxcXFwvXFxcXC9cXFxcUys/XFxcXC5tM3U4LylbMF1cXG4gICAgICAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgICAgICAgICAgIH1jYXRjaHtyZXR1cm4gXFxcInRvYXN0Oi8v5rKh5pyJ5oyC5qKv5a2Q5oiW5rKh5pyJ5q2k5b2x54mHXFxcIn1cXG4gICAgICAgICAgICAgICAgICB9LOeVquWPtyksXFxuICAgIGNvbF90eXBlOiAnaWNvbl81JyxcXG4gICAgZXh0cmE6IHsgbG9uZ0NsaWNrOiBbe3RpdGxlOiAn5p+l55yL572R5Z2AJywganM6ICQudG9TdHJpbmcoKOeVquWPtyk9PnsgcmV0dXJuIFxcXCJodHRwczovL2phYmxlLnR2L3ZpZGVvcy9cXFwiICsg55Wq5Y+3ICsgXFxcIi9cXFwiO30s55Wq5Y+3KX1dIH1cXG59KTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuino+aekFwiLFwicGF0aFwiOlwibGF6eVwiLFwicnVsZVwiOlwidmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoTVlfSE9NRSkgPT4ge1xcbiAgICB2YXIgaW5wID0gZmV0Y2goaW5wdXQse30pOyBcXG4gICAgcmV0dXJuIFxcXCJwaWNzOi8vXFxcIitwZGZhKGlucCwgJy5jb2wtMTI6bWF0Y2hlcyjlm77niYcpJiZhJykubWFwKGltZyA9PnBkKGltZywgJ2EmJmhyZWYnKStcXFwiQFJlZmVyZXI9XFxcIiwpLmpvaW4oXFxcIiYmXFxcIikgIFxcbn0sTVlfSE9NRSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p+mhtemdouWGheWuuVwiLFwicGF0aFwiOlwieWpcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuXFxuLypcXG5sb2coTVlfVVJMKVxcbnZhciBodG1sID0gcmVxdWVzdChNWV9VUkwpXFxuXFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAoKSA9PiB7XFxuICAgIGZvciAobGV0IGl0IG9mIGxpc3RNeVZhcktleXMoKSkge1xcbiAgICAgICAgY2xlYXJNeVZhcihpdCk7XFxuICAgIH1cXG59KTsqL1xcbmFkZExpc3RlbmVyKFxcXCJvblJlZnJlc2hcXFwiLCAoKSA9PiB7XFxuICAgIGNsZWFyTXlWYXIoXFxcIm5leHRQYWdlXFxcIik7XFxufSk7XFxuXFxuTVlfVVJMPU1ZX1VSTC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5IyMnLCcnKTtcXG5sZXQgdHJ1ZV91cmwgPSBnZXRNeVZhcihNWV9SVUxFLnVybCwgTVlfVVJMKTtcXG5jb25zdCBwYWdlID0gTVlfUEFHRTtcXG4vL+iOt+WPluS4iuasoee8k+WtmOeahOS4i+mhtemTvuaOpVxcbmxldCBuZXh0UGFnZSA9IGdldE15VmFyKFxcXCJuZXh0UGFnZVxcXCIsIFxcXCJcXFwiKTtcXG4vL+WmguaenOacieS4i+S4gOmhteS4lOS4jeaYr+esrOS4gOmhteWwseS9v+eUqOS4i+S4gOmhtemTvuaOpVxcbmlmIChuZXh0UGFnZSAmJiBNWV9QQUdFID4gMSkge1xcbiAgICB0cnVlX3VybCA9IG5leHRQYWdlO1xcbn1cXG5sb2codHJ1ZV91cmwpO1xcbnZhciBodG1sID0gcmVxdWVzdCh0cnVlX3VybCk7XFxuXFxudHJ5IHtcXG4gICAgLy/nvJPlrZjkuIvkuIDpobVcXG4gICAgbGV0IG5leHRVcmwgPSBwZChodG1sLCBcXFwiYTpjb250YWlucyjigLopJiZocmVmXFxcIik7XFxuICAgIHB1dE15VmFyKFxcXCJuZXh0UGFnZVxcXCIsIG5leHRVcmwgfHwgXFxcIlxcXCIpO1xcbiAgICAvL2xvZyhcXFwi5LiL5LiA6aG177yaXFxcIiArIG5leHRVcmwpXFxufSBjYXRjaCAoZSkge1xcbiAgICBjbGVhck15VmFyKFxcXCJuZXh0UGFnZVxcXCIpO1xcbiAgICB0b2FzdChcXFwi5aW95YOP5rKh5pyJ5LiL5LiA6aG15LqG77yBXFxcIik7XFxufVxcblxcblxcblxcbnRyeXtcXG4vL3ZhciBrID0gcGRmaChodG1sLCdib2R5JiYjcHJpY2UtY3VycmVuY3ksMCYmVGV4dCcpLnJlcGxhY2UoL1xcXFwvL2csJycpOy8vKGsgPiAxMDApID8gMTAwIDogcGFyc2VJbnQoaylcXG5mb3IgKHZhciBqID0gMTsgaiA8IDM3OyBqKyspe1xcbnZhciB1cmwgPSB0cnVlX3VybC5yZXBsYWNlKC9wYWdlPVxcXFxkKy8sICdwYWdlPScraik7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogIGogKyAn6aG1JywgICAgIFxcbiAgICAgICAgdXJsOiAkKHVybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKE1ZX1JVTEUudXJsLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbn0pXFxufX1jYXRjaChlcnIpe1xcbiAgICAvL2NvbnNvbGUubG9nKCflj6rmnInkuIDpobUs5YeR5ZCI55yL5ZCnJywgZXJyKTtcXG4gICAgICAvL3RvYXN0KCflj6rmnInkuIDpobUs5YeR5ZCI55yL5ZCnJywgZXJyKTtcXG59O1xcblxcblxcbmxldCBsaXN0ID0gcGRmYShodG1sLCAnYm9keSYmLnZpZGVvLWxpc3QtaXRlbTpub3QoOm1hdGNoZXMo6Imy56uZ5pCt5bu65pyN5YqhfFZSKSknKTtcXG5saXN0LmZvckVhY2goeCA9PiB7ICAgXFxuIGQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKHgsICcubGF6eWxvYWQmJmFsdCcpLFxcbiAgICBkZXNjOiBwZGZoKHgsJy50ZXh0LW11dGVkJiZUZXh0JyksXFxuICAgIGltZzogcGQoeCwnLmxhenlsb2FkfHxhJiZkYXRhLXNyY3x8ZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZWo/dXJsPScrcGQoeCwgJ2EmJmhyZWYnKSsnI25vSGlzdG9yeSMnLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcbiAgfSk7XFxufSlcXG5cXG5cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p+mhtemdouWGheWuuVwiLFwicGF0aFwiOlwiZWpcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW11cXG5NWV9VUkw9TVlfVVJMLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHkjIycsJycpO1xcbmxvZyhNWV9VUkwpXFxudmFyIGh0bWwgPSBmZXRjaChNWV9VUkwpO1xcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenknLCB7fSkpLnJ1bGUpO1xcblxcbnZhciBpbWcgPSBwYXJzZURvbShodG1sLCAndmlkZW8mJmRhdGEtcG9zdGVyJyk7XFxuaWYoaW1nKXtcXG5kLnB1c2goe1xcbiAgICBpbWc6IGltZyArICdAUmVmZXJlcj0nLFxcbiAgICB1cmw6IE1ZX1VSTCArIGxhenksXFxuICAgIGNvbF90eXBlOiBcXFwicGljXzFfZnVsbFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBncmFkaWVudDogdHJ1ZSwgICBcXG4gICAgfVxcbn0pXFxufWVsc2V7XFxuICBkLnB1c2goe1xcbiAgICBpbWc6IHBhcnNlRG9tKGh0bWwsICcubGF6eWxvYWQmJmltZyYmZGF0YS1zcmMnKSArICdAUmVmZXJlcj0nLFxcbiAgICB1cmw6IE1ZX1VSTCArIGxhenksXFxuICAgIGNvbF90eXBlOiBcXFwicGljXzFfZnVsbFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBncmFkaWVudDogdHJ1ZSwgICBcXG4gICAgfVxcbn0pXFxufVxcblxcbmZvciAodmFyIGIgPSAwOyBiIDwgMjsgYisrKSB7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snXFxufSlcXG59XFxuXFxudHJ5e1xcbnZhciBuYW1lcyA9IHBkZmEoaHRtbCwnI3BsYXllci10YWImJmxpJyk7XFxudmFyIHVybHMgPSBodG1sLm1hdGNoKC9odHRwcz86XFxcXC9cXFxcLy4qPyhcXFxcLm0zdTh8XFxcXC5tcDQpL2cpO1xcbmZvciAodmFyIGkgPSAwOyBpIDwgTWF0aC5taW4odXJscy5sZW5ndGgsIG5hbWVzLmxlbmd0aCk7IGkrKykge1xcbiAgIGQucHVzaCh7XFxuICAgICAgIHRpdGxlOiBwZGZoKG5hbWVzW2ldLCdUZXh0JyksXFxuICAgICAgIHVybDogdXJsc1tpXSxcXG4gICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbn0pXFxufVxcbn0gY2F0Y2ggKGVycikge1xcbiAgdG9hc3QoJ+ayoeaciemihOiniOWSjOWcqOe6v+aSreaUvicsIGVycik7XFxufTtcXG5cXG5kLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgfSk7XFxuXFxudmFyIOeVquWPtyA9IHBkZmgoaHRtbCwgJ2JvZHkmJi5jb2RlJiZUZXh0JykucmVwbGFjZSgn55Wq5Y+3OiAnLCcnKTtcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS90b29sJywge30pKS5ydWxlKTsvL+WklumDqOaQnOe0olxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PHNtYWxsPjxmb250IGNvbG9yPVxcXCIjMUU5MEZGXFxcIj4gJyArIHBkZmgoaHRtbCwgJ2gxJiZUZXh0JykucmVwbGFjZSgn5YWN6LS5QVblnKjnur/nnIsnLCcnKSArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICBkZXNjOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cXFwiIzhBMkJFMlxcXCI+ICcgKyBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5jb2RlJiZUZXh0JykgKydcXFxcdFxcXFx0XFxcXHRcXFxcdCcrIHBkZmgoaHRtbCwgJ2JvZHkmJi5kLWZsZXgubXQtMTpjb250YWlucyjml6XmnJ8pJiZUZXh0JykgKyAnXFxcXHRcXFxcdFxcXFx0XFxcXHQnICsgcGRmaChodG1sLCAnYm9keSYmLmQtZmxleC5tdC0xOmNvbnRhaW5zKOaXtumVvykmJlRleHQnKSArICc8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIlxcbn0pO1xcblxcbi8v57O75YiXXFxudHJ5IHtcXG5sZXQgdGl0bGUgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJ2JvZHkmJi5zZXJpZXMmJmEmJlRleHQnKTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XFxcImN5YW5cXFwiPicgKyB0aXRsZSArJzwvZm9udD48L21pZGRsZT48L2I+JyxcXG4gICAgdXJsOiBwYXJzZURvbShodG1sLCAnLnNlcmllcyYmYSYmaHJlZicpICsgJz9wYWdlPWZ5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWpcXFwiKScsLy/pk77mjqUsXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgIGV4dHJhOntcXG4gICAgICAgcGFnZVRpdGxlOiB0aXRsZSxcXG4gICAgIH1cXG59KVxcbn1jYXRjaCAoZXJyKSB7XFxuICBjb25zb2xlLmxvZygnVVJM6Kej5p6Q5Ye6546w6ZSZ6K+v77yaJywgZXJyKTtcXG59O1xcblxcbmQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICB9KTtcXG5cXG4vL+exu+WIq1xcbnZhciBhcnRzID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLmdlbnJlJyk7XFxuZm9yICh2YXIgaSBpbiBhcnRzKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XFxcIiNEQjRGMDBcXFwiPicrcGFyc2VEb21Gb3JIdG1sKGFydHNbaV0sICdUZXh0JykrJzwvZm9udD48L21pZGRsZT48L2I+JyxcXG4gICAgICAgIHVybDogcGFyc2VEb20oYXJ0c1tpXSwgJ2EmJmhyZWYnKSArICc/cGFnZT1meXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlqXFxcIiknLC8v6ZO+5o6lXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLC8v57uE5Lu25qC35byPXFxuICAgIGV4dHJhOntcXG4gICAgICAgcGFnZVRpdGxlOiBwYXJzZURvbUZvckh0bWwoYXJ0c1tpXSwgJ1RleHQnKSxcXG4gICAgIH1cXG59KVxcbn07XFxuXFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pO1xcblxcbmQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XFxcInllbGxvd1xcXCI+55Wq5Y+3PC9mb250PjwvbWlkZGxlPjwvYj4nLFxcbiAgICAgICAgdXJsOiAnY29weTovLycgKyBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5jb2RlJiZUZXh0JykucmVwbGFjZSgn55Wq5Y+3OiAnLCcnKSwvL+WkjeWItueVquWPt1xcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJywvL+e7hOS7tuagt+W8j1xcbn0pXFxuXFxuLy/mvJTlkZhcXG52YXIgYWN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLmFjdHJlc3MnKTtcXG5mb3IgKHZhciBpIGluIGFjdCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48bWlkZGxlPjxmb250IGNvbG9yPVxcXCIjRkY0QjY2XFxcIj4nK3BhcnNlRG9tRm9ySHRtbChhY3RbaV0sICdUZXh0JykrJzwvZm9udD48L21pZGRsZT48L2I+JyxcXG4gICAgICAgIHVybDogcGFyc2VEb20oYWN0W2ldLCAnYSYmaHJlZicpICsgJz9wYWdlPWZ5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWpcXFwiKScsLy/pk77mjqVcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsLy/nu4Tku7bmoLflvI9cXG4gICAgZXh0cmE6e1xcbiAgICAgICBwYWdlVGl0bGU6IHBhcnNlRG9tRm9ySHRtbChhY3RbaV0sICdUZXh0JyksXFxuICAgICB9XFxufSlcXG59XFxuXFxuLy/no4HlipvliJfooahcXG52YXIgY29udHMgPSBwZGZhKGh0bWwsICdib2R5JiZ0Ym9keSYmLmNvbCcpO1xcbmQucHVzaCh7XFxuICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGMDAwMFxcXCI+5o6S5bqP8J+RhuWFseaciScgKyBjb250cy5sZW5ndGggKyAn5p2h57q/6LevPC9zcGFuPjwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzFhYWQxOVxcXCI+5o6S5bqP8J+Rh+WFseaciScgKyBjb250cy5sZW5ndGggKyAn5p2h57q/6LevPC9zcGFuPjwvYj4nLFxcbiAgICAgICAgdXJsOiBgQGxhenlSdWxlPS5qczpsZXQgY29uZiA9IGdldFZhcignc2hzb3J0Jyk7aWYoY29uZj09JzEnKXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzAnfSk7fWVsc2V7cHV0VmFyKHtrZXk6J3Noc29ydCcsIHZhbHVlOicxJ30pfTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaOkuW6j+aIkOWKnydgLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KVxcbiAgICAgICBcXG4gaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxuICAgIGZvciAodmFyIGogPSBjb250cy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGRmaChjb250c1tqXSwgJ1RleHQnKS5yZXBsYWNlKCfopIfliLYnLCcnKS5yZXBsYWNlKC9eLSguKikvLCckMScpLnJlcGxhY2UoLyhcXFxcZCsp5Liq5paH5Lu2L2csJycpLnJlcGxhY2UoLy4qQC8sJycpLnJlcGxhY2UoL1xcXFxbLipcXFxcXS8sJycpLnNsaWNlKC0zNiksXFxuICAgICAgICAgICAgZGVzYzogcGRmaChjb250c1tqXSwgJy5kYXRlJiZUZXh0JyksXFxuICAgICAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9PY3Fwai5wbmcnLFxcbiAgICAgICAgICAgIHVybDogcGQoY29udHNbal0sICdhJiZocmVmJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICAnYXZhdGFyJ1xcbiAgICAgICAgfSk7XFxuICAgICB9IFxcbiAgfWVsc2Uge1xcbiAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb250cy5sZW5ndGg7IGorKyl7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwZGZoKGNvbnRzW2pdLCAnVGV4dCcpLnJlcGxhY2UoJ+ikh+WIticsJycpLnJlcGxhY2UoL14tKC4qKS8sJyQxJykucmVwbGFjZSgvKFxcXFxkKynkuKrmlofku7YvZywnJykucmVwbGFjZSgvLipALywnJykucmVwbGFjZSgvXFxcXFsuKlxcXFxdLywnJykuc2xpY2UoLTM2KSxcXG4gICAgICAgICAgICBkZXNjOiBwZGZoKGNvbnRzW2pdLCAnLmRhdGUmJlRleHQnKSxcXG4gICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL09jcXBqLnBuZycsXFxuICAgICAgICAgICAgdXJsOiBwZChjb250c1tqXSwgJ2EmJmhyZWYnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogICdhdmF0YXInXFxuICAgICAgICB9KTtcXG4gICAgIH1cXG4gIH1cXG5cXG4vL+aOqOiNkOWIl+ihqFxcbnZhciBsYXp5RUogPSAkKFxcXCJcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvZXJqJywge30pKS5ydWxlKTtcXG59KTsgXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6ICNGRjAwRkY7XFxcIj7lkIzlpbPkvJjkvZzlk4E8L3NwYW4+JyxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxufSk7XFxuXFxudHJ5e1xcbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLnZpZGVvLWxpc3QtaXRlbSwxOicpOy8v5YiX6KGoXFxubGlzdC5mb3JFYWNoKHZpZGVvID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAgcGFyc2VEb21Gb3JIdG1sKHZpZGVvLCAnaDUmJlRleHQnKSArIHBhcnNlRG9tRm9ySHRtbCh2aWRlbywgJ3AmJnRpdGxlJyksLy/moIfpophcXG4gICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbCh2aWRlbywgJy50ZXh0LW11dGVkJiZUZXh0JykgKyBwYXJzZURvbUZvckh0bWwodmlkZW8sICcudmlkZW8tbGlzdC1pdGVtLXRhZy13cmFwcGVyJiZUZXh0JyksXFxuICAgICAgICBpbWc6IHBhcnNlRG9tKHZpZGVvLCAnaW1nOmVxKDEpJiZkYXRhLXNyYycpICsgXFxcIkBSZWZlcmVyPVxcXCIsLy/lm77niYdcXG4gICAgICAgIHVybDogcGFyc2VEb20odmlkZW8sICdhJiZocmVmJykgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlalxcXCIpJywvL+mTvuaOpVxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJywvL+e7hOS7tuagt+W8j1xcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpbWc6IHBhcnNlRG9tKHZpZGVvLCAnaW1nOmVxKDEpJiZkYXRhLXNyYycpICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBwYXJzZURvbUZvckh0bWwodmlkZW8sICdoNSYmVGV4dCcpICsgcGFyc2VEb21Gb3JIdG1sKHZpZGVvLCAncCYmdGl0bGUnKSwvL+agh+mimFxcbiAgICAgICAgfVxcbiAgfSk7XFxufSkgICBcXG59IGNhdGNoIChlcnIpIHtcXG4gIGNvbnNvbGUubG9nKCfmsqHmnInmjqjojZDliJfooagnLCBlcnIpO1xcbn07XFxuXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6ICNGRjAwRkY7XFxcIj7lkIzkuLvpopjkvZzlk4E8L3NwYW4+JyxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxufSk7XFxuXFxudHJ5e1xcbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLmxpc3QtdW5zdHlsZWQmJmxpJyk7Ly/liJfooahcXG5saXN0LmZvckVhY2godmlkZW8gPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICBwYXJzZURvbUZvckh0bWwodmlkZW8sICdoNSYmVGV4dCcpLC8v5qCH6aKYXFxuICAgICAgICBkZXNjOiAnJyxcXG4gICAgICAgIGltZzogcGFyc2VEb20odmlkZW8sICdpbWcmJmRhdGEtc3JjJykgKyBcXFwiQFJlZmVyZXI9XFxcIiwvL+WbvueJh1xcbiAgICAgICAgdXJsOiBwYXJzZURvbSh2aWRlbywgJ2EmJmhyZWYnKSArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImVqXFxcIiknLC8v6ZO+5o6lXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLC8v57uE5Lu25qC35byPXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGltZzogcGFyc2VEb20odmlkZW8sICdpbWcmJmRhdGEtc3JjJykgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHBhcnNlRG9tRm9ySHRtbCh2aWRlbywgJ2g1JiZUZXh0JyksLy/moIfpophcXG4gICAgICAgIH1cXG4gIH0pO1xcbn0pICAgXFxufSBjYXRjaCAoZXJyKSB7XFxuICBjb25zb2xlLmxvZygn5rKh5pyJ5o6o6I2Q5YiX6KGoJywgZXJyKTtcXG59O1xcblxcblxcblxcbnNldFJlc3VsdChkKVwifV0iLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGd0FBQUJRQ0FZQUFBQ1VMUklqQUFBZWVVbEVRVlI0bk8xY2VYaFRkZForc3lmZDk3MkFVTnBDV1V1VlVoWUJGVmxFUUZFRXhCbG5CQjFFSDJBV2NRWm4wYy9QYndaUlo4WU5SSEJoRVVSd1YwU1dVbG9LcFJUb1NsdTY3Mm1icGt1U0pybjNmcy81NVFiU2ZRUGtqNzdQazZlUTNKdmN2UGZjOTd6bm5OOE5CakdJUVF4aUVJTVl4Q0FHTVFoQTRzakJwRW1UYmdkS0ZnTjRVaXFSekJDQURFRVF2Z053R01DVjIrRFlCb3piaFhBZkFLc2tFc2xUTW9sa3RONW9SRTFEQTlRcUZmemQzYUdReWNEeC9JOEFQZ2J3QlFETEwzV2dBNFhNY2YrZ29LQmIvZmxSQURiTHBOSVBwY0NpeW9ZRzN5S3RGdjZlbmxnUUd3c1B0UnJaNWVVb3JhdURYQ1lMYzFXcmw5S0pFUUF2QU9VQTZtLzFBUThVdjFTRXp3YXdSaTZWTG11MVdsRmNXd3V6MVlyb0VTT3crSzY3OEVoTURFSkRRNEdtSmlUbTVlR0g5SFFjdVhRSm1TVWxjTlZvRU9MbFJTZUE0M2grUDRCZEFINitWUWMrVU54S3d0VUFIcGRJSkUvS3BkSzRCb01CcGJXMWpNQ1pZOGZpa2NtVHNXVENCRWc4UFlHR0JxQ3hFVkFvQVBxL1dvMm1xaW9jdW5BQmg4NmZSM0pPRGxwYVd4SHE3UTEzSnllU20zT0NJTHdQWUE4QTg4MzhFZ1BGclNBOEZNQnZwUkxKcjZRU3liQ2F4a1pVNm5RSTl2Ykd2RW1Uc0dMS0ZFd1pQZHBHcmxZTG1FeUF6RUhwQkFIZ2VjRFpHZkQyQmd3R3hHZG00a0JLQ242NmVCSGx0YlVJOFBDQW41c2JlRUVvNEFWaEo0QVBBVlRkVk9iNmladEpPTDNac3pLcGREblA4K3F5K25vMEdvMklEQTNGa3NtVHNYTHlaTnd4ZkRqUTJnclUxUUVjQjBpbDNiOGpFUytYMjRoWEtGQmNYSXc5eWNrNG1KeU1LeVVsOEhCMlJyQ1hGeVFTU1JQSDh6c0F2QVBnNm8zOFVnUEZ6U0I4RG9EZnlXV3l4U2FMQmNWYUxUaEJ3T1NJQ0R3YUY0ZEhKMDJDdTcrL1RUSklPaVFTMjZNdm9LaW5oNGNINE80T2ZWVVY5cDQ3aC8xSlNUaC81UXBVU2lXRytmcENMcFdhT1o0blovTWVnTFJiVFc1bnVGR0VrejQvSnBGSW5wWkxwYkc2bGhhVTFOWEIwOWtaOTR3ZmoyVlRwbURCdUhHQWl3dFFYdyswdFBTWjZJTHFhcVJldFFYcjNWRlI4SE4zdjA2OGt4UGc0d1BvOVRpY2xvWjlTVWs0Y2ZreUtDSGY0ZWNISjZVU0ZvNzdDc0IvVTFOVGozWDFHYmZDTkF5VThHQlJuNSswNjNPRlRvZWh2cjZZUDJrU25vaUx3OFJSbzJ6RWtqNmJ6VzMxdVFkY0xpNUdTbDRlOXA0NmhlTTVPVzAyUHJCK1BlWkhSOE5acmJZOVFaS2tVZ0YrZm9ERndnai9LQ0VCUjFKVDBXdzBNdUpwV3l2SGZRL2dyZFRVMUtQdFAvMTJKbnc4Z05VeXFmUTN2Q0JveXVycW1ENlBHaktFNmZNVFU2WWdkT2hRV3dJa2ZTYnQ3VW1mUlNUbDVDQTVOeGZiZnZvSnVUVTEzVzRiN3VlSEgxNTZDY05Kb3V5Z3o2S1Q2dXZML3A3THlzS3VVNmZ3ZlVvS3RIbzlodmo0c0N2UHl2UHhnaUM4blpxYWVyQWYzNy9mNkN2aE13Q3NKZjlzNWpoUWtVSi9ZeU1pOEVoY0hKYkh4TUF0SU1DbXpYcDlyMlNqeFdUQzZleHNKT2JrWUg5aVlxY2tFN0dkUGIvMThjZXg4Y0VITzM5aklwNCttNlNHQ3FqY1hCYnhYeVFuTTJkRHhIdTV1RkRFbnhlQXJhbXBxWi9kVG9SVEl2eXpYQ2E3bXdncXJLbUJzMGFEMldQSFlsbGNIQlpQbkdqVFo0cG0wbWVLNW02SWRpVDVsY09IdTl6dXBTVkxNRFV5RXBtbHBmajk3dDBkWG50NStmS2V2NkdkZUM4dlppMkxDd3V4S3pFUiswK2ZSbEZWRmJPbnZxNnVGUEhrNWY4TFlIZlBiOXAvOUVRNFBmR1VSSUpuSUFBR3M1a2xxMGxoWVZnNmNTSml4NCszWGI0VWZUM29jNDFlei96em9lUmtmSmFjM09rMkZNbFB6NW1EcU5CUVRCczFpbW51RzE5LzNZSHN4Mkpqc1dQdDJ1djYzUnZZL1R3NUcwOVBsQmNYWTJkQ0F2WW5KQ0Mvb2dMQlBqN3dzeEZQRGJPM1JDOS9Td2wvV1M2VHZkUmliRVZGVFQzOHZEMWc1RnB4WjloSWZMNWxDMkEwQXJtNXR1anBRcC90enFJN2tpRktRMng0T09JaUk5czhQeEN5NlFRM20weHQ5UjBPeEpQTDhmUkViVmtaZGlRa1lBOFJYMTZPQUU5UDFqRGplUDZTU0R6WlNxSGJEK3NEdW1wZXZhcFN5amVYVmRhRHMzS1lQMmNLcWl1MGFEVlpVVnhmZzRzWDB2QlFkRFNnMFZ5WEVCRkVNaEg4eDQ4K3dvWlBQOFhueWNuSUtDdnI5b2lzWmpQdURBdERXR0RndGVjKy9QbG5yTnUxcTgxMmRBWHNYTGNPL2hTbDNZQWthKzMyN1ZqendRZW9iV2hBaUkvUDlYM3NBVUlGbDA0SEp4Y1hUSnM4R1k5T25BZ1BEdy9rVlZRZ283Z1lNcGtzd0YyaldTd0F5OFJQdW5BamlPOHN3bU1WY3RtWjR2SmErUHQ2WU50YmEzSFg1RWs0bjNnV2k1NzRKd1NKRk0wd0lpNHNISWRlZkpGNVhGUldvcWFsQmN1M2J1MWczeHp4N0gzM01ROU4xZURlaEFTOGMvUm9oOWZYekptRHl2cDZ6SDN0dFE1a2QzQWtuWURJZnVyZGR6dGNVVjBtV0h2RXU3a3huYWVlelllSmlmZzBQaDVaeGNWTVFnTTlQY0h6ZkE1L1hXcXNmV1phUkFmQ0pVQktpOGtjMDlCa1FPTCt2K0tPMkZGQStsVWdjaWd1bjcrQ2hTditGNjFtSzFwbEZrUUdCdUhyelp2aFM5RlRWc1pJM3gwZjMwWUc3SW5QcnNtT09KS1dobjhkUHR6dFNiSWo4ZVdYTzBoT1oraE1oZ2cvdnZnaTdxZmszaDNJeTFQeTkvVkZZM1UxZHA0K2pUM3g4VWd2S21LOW1pQXZMeUkrbnhlRWR3RzgzWisrZkh2Q28yVXlhV3I2bFZMODlma2wyUFR5YjRHTGVZQkNCbGc1SUNJVVYzUEw4T0RLLzBWVnRRNFNKd2tDM0QzdzdWLytnbUVoSVVCSkNVdWNKQ3VrbnlQOC9YdVYyRDVQU3NMbXZYdTc5TjI5SW11Z1pOdGhqM2dpM3NjSEJxMFdIeWNtNHVOVHA1QmVVQUF2VjFjRVU4UUxRaTR2Q0Z2RWlPKzExTFRYOE9kYUxkYnBDb1VjYi96aFViaHJGSUN4OWJydVZldmdGUmFFbFV1bUlmNTBPa3BMZFRCTHJkZ1hmd3B4RVJFSURnOW4vcHNLQzlKTUpUV2FlZ0Z5SmRUeCs3eVR4RW9WNVlOMzNkWGptOUJKVzcxOWU3LzN2d2I3ZDdWYW1jWXJsRXJjT1drU1Z0MTVKL3g4ZkhDMXVocVhpb3BvYTI5M0o2Y0hSWTNuQVp6dnpkdTNJVHc0S0doemRWM1RzTmh4dzdINjhYdUJodWEyNTA0bUJXcjFVUHQ3WXRXeVdVaTdkQlVabWFXUXFXVk1Ta1lIQnlPY3JHSlRrKzN5N0dXdmhLUmwwZXV2ZDNpZWRQZXBlKys5NmZ0M0NRZmk1VElaWXFLakdmR0IzdDY0VWwzTnBFWWlrZmk0T1RrdEVJQ0hLSVZRUjZLN3QyeExlRWp3M3l1MURSN3pabzdIUGZmSEFMcW1qcVFSNmZWTmtHaFVlSFRGUGFpc3FrZFNVZzZjWGRUWWR6b0IvazVPbUVnUlpURFlEcllIMGtsK0huL3JMZFNSMjNFQWFmK2ZseTd0a1JOcUJjeCs1WlVPejNkYmhYWUNTclk1NWVWd1VhczdYcGxFUEFVUUVTK1hJNFlpUGlZR1h0N2V5SzJzeE9XaUlraWxVbjlYaldZSkJJR0lid1Z3c2JQUGFVdDRjTkRmNm5UTm1ua3pKMkRLMURHTTJFNEpJOUliRFlEQVkvNnltVkJJSlBqNTJDVTRxMVU0bkhvT1Vvc0YwK1BpYkFkSi9aUnVmUHE4VjE3cG9OM2t0Zi8xeEJNOVNoTHQvOGpycjNjNFdiMGxtMGcra1o2T1QwNmVaSzdvL2FOSGNUQXhrY2tidFhlN0kxNmhVR0J5VEF4V1JFY3orZFFaRE5DM3RFQ1FTUHdsRXNraUFQY0RJSTNVdHFITzhUL0J3VUYvck5NMU9VMkxpY1RVcVZHZFIvaTFQYVdBMFF3MEdURnR5VFNFaC9yaXkrOVNvSkxLY1RUN01zcXJxdkhBOU9tMmdVRTdyMjdIcnVQSHNlL01tVGJQOWJhdzZlcGtrYlY4WmNXS0x2ZWpndWo3Q3hmdzNvOC9Zc25XcmRoOStqUk9PYmdrT25tVVM1S3pzekhQc1J2cENQb3VWRm5YMWtJVkdJaTdGaXhBbEpNVHZqbC9ubzMrVkxZVEZTcEtUQnZ2MitZVUNnSnFaWEtaZDFsbExXRHBXUTRZNmEwV0lMTUlTMWZNUm5DZ04xYXRlUk1XUFllUDQwK3lwUTU3Tm15QW1ncWF5a29iK1E2Z0tLUUs4Nlc5ZTVrMUpLLzk2c3FWUFpKTmtmbVhQWHM2dlRMK3VXcFZweVQzMUZaQUY2MkZEckQzNEducTVPeU1yQ3RYOE1IMjdUaVpsUVd6eFFLMVRBWkJFRWpiajRnVHB6Wm9id3MvYTJ3eEx2TjBjOGFwajE2QXlra0ZOQnU3SngyaUthSkxMWElJS2dvcjhmQ3Yvd1d5bGxKbkNVWUhCZVBBcGswWVFsM0U0dUlPcE50QnZXODJtNlNTdXh0MFZkaTB2eko2MjFhWUhSbUpGVE5tNE02Ukl6R09Xc3BkZ2F3aWdicVBUazdJeXNuQnRwTW44ZVhaczZpcHI0ZVhXZzEvTHk4b1ZLcmpqWTJOTHdPSWQzWjJKdUxaQ2JDalBlSExwRkxKWnhtNTVmaGt5eG9zZlhJdWtGRms4K0c5Z2RrS2pBaUMwV2pDeW1mZXdvL0hMa0xoS29XZmh3ZjJiZHlJbURGamJGNmREcUN2WXpVUjZ6NzRvRU9GYWllN1dxOW5tdHpad0tMOTlnL0Z4bUxTaUJFOVZxN3QyN3lYc3JQeFFYdzh2azFKUVZWZEhWUldLM3pjM1JFZUVZRXhZOGZDemMzdGdjckt5dSt1WExtQzh2SnlScmJVUVU3YkV5NlhTaVFWRmRvRzN6dEMvWkJ3OEcrQW9aWENxdDJXM1lDa0tNZ2JjSFBHK2orOGorMmYvQXkxcXdJS3BSVHZQL003TEprOUd5Z3RaVk9aM2c0bDdPaXNzQ0VaK05QaXhUMlMzRjNGMnluc1JOTWdRNlhDeGN4TWJJK1B4emZuemtIYjBNQ0lwaUxvN2xtek1IdjJiRFEyTnFLbHBRVldxM1d6UnFONXRiVzFsUTI1NmEvTW9ZdmFXUy9sV2JsYytuWnFSaEgrdS9seFBMUHBjZUJTTGlEdi9XZ01GZzd3ZEFGQ2ZiRjF5d0g4NDdWOWtEbkp3Y2s0L0dQWmNteDQ1QkdXY0poZjcrWElqWnBaVDNWUzJIUUZrb29GTVRHZGRpRzdSVHVpVXpJenNlUEVDWHlmbWdxdFRzZUk5blp6UTJ4Y0hCNVl1QkRUcGs2RndXREFnUU1IWURRYW9WS3AzaEFFNGZkRXNwT1RFNU1VZXRpanZOUDJyRVFpS1RJWVc0ZVdheHZ3OHllYkVETnpBcEJWRENoN1Z6a3ljRHlnVmdEaG9UajAyUW1zM2ZBZVdubGJEK1kzcys3QjIwOC9iY3YwTk92c3dmNVIwdk5mdmJySGp5U3B1SGZjT013YU83Wm5xV2dQTzlFMEUxVW9jRFlqQTl1T0g4ZVJDeGRRcjlkRGFiSEF4OE1EVTZkUHh3TVBQSUNZbUJpWXpXYlUxTlF3MlVoS1NtSlJybEtwZGdpQ3NKb0lKK3ZvNHVJQ2p1TmdJbnZjVFQrY2RReExLdXFnVU1pUThzTnI4UFgzQkFxckFFVWZTT2RGclI0OUJPY1NNN0JxOVp1c3Q4NnJCY3dhTXhaN04yeUFHL1VzcUgzYkM5SmZQbkNnMHc0amRTQ3ZUZkw3Q3Z1OGxTSmFvVUJTZWpwMm5qaUJIeTVjUUowb0hUNmVucGcyZlRvV0xGaHdqZWpLeWtwR05CVkM5RGg5K2pScWEydUo0SU5lWGw2UDBEWjZ2WjV0ZC9ueVpaU1NqUFl3Z0ZpdFVzcTNaK2FWSTJwa01PSy8raC9JcVhLc2FlaWJ2TmdkVEVRb3FzdHFzWExORzBoS3pZWEVXWUtJZ0FCOHNuRWp4b1NGMlpJcDBHTXlKVGR6cGJ3Y2JocE43L1c0TTlpSkZxK0VVK25wK1BEa1NkWW1hTkRyb2JaYTRldnR6WWltaUNadVNES3FxcXJhSkVLU0M1VktoVE5uenFDNnVob2FqZWJiOHZMeWhSVHhoWVdGVEc0YzBkT0k3UjJsUXI0Mk5hTVFLeFpPd2E1UFhnQ0txbTBGajdTUExvTWN6REIvUnVpdm5uc2JCNzVNaE5KTkRqY25EYmF2VzRkNVZKbjJNNW4yQ2ZhcFBra0hnQk1YTDJKWGZEeGJOa2VTb09RNCtIcDZZdnJkZHpPaW82T2pHZEVVcVdBMVQ5dGpJOEkxR2cwanZLbXBpVWpQZmZ2dHQrT29odXJzc0hwYXJ2dzl4L094Z1g0ZVlUL0VYNFlMTHlEdW9lbEFiVVA3YzlVenhCNE1TZEtTbGZkQXpuR0lqOCtDVmVCd0tEa0p6bElaSnNmRzJnanZwaDNRYjlCVlJySkZSWmhhalI5U1UvSGkzcjNZOHRWWFNNdkxZNzJmSUc5dnpKODNEK3VlZng2UExWdEdGbzlaT3lLU2lKWjBjZldSVmxkVVZNQmlzVUNuMDBsVFUxT3B3bFFBS0c2L2JXOEVlVEVFNUk4SkR3MTVZZXNCakFvUHdmekhaZ0dYQzN2dno2OGRtUnlvMDdPVzc2YS9yc0tRWWY1WS84SU9tRnV0MkxUN1U5YjZmSXVTSXkzb0lSZlR5L1p1dHlDaWFTcEZSRnNzK09ITUdYd1lIODhxeitibVppWWR0RWhvNXV6Wm1EZHZIc2FORzhmczNWVnhsVmQzUkxlSHFPbDZBQVp4U2ZZSUFOODQ5bE42ODQxYWVVRzQxMG10eUJnUzRDMWZ0ZkU5Skk4SXdzaXh3NEhjMHI0bFVRSmR6aVJKMmNWWThjUWNoTjhSeU5vQnBUVTZiUHZwQ0FvcksvSHArdlZ3Q3c0R3lzdjdUN3A5SlJaZHRVWWpEaVlrNEtOVHA1Q1VtUW1qd1FBMXh5RXNPQmd6WjgzQy9QbnpFUlVWeFNTbG9LQ0E3ZDVlT3JxQy9XVHdQTS8yc1Znc0ZOMTVBRXoyT3p1b0F3MGdFMzI0QTZLT0Y0UTBkMWVuRlEyTkJueDNMQTIvV2pJVlNtODNXODljMXNmTG53NlNrbWxWUFlMR2o4QkQ4eWNqNld3MktrdDFLR3pRNHB1VUZNeU1pb0lQcmE2bFJaOTlxVXdkaVpaSzJXRGlEM3Yyc0daVmZra0pGSzJ0R0JZVWhNV0xGK1BaZGV1d2FORWlLSlZLNWlJb3dmVWxvaUVTVGhhd3BLU0VTVXByYTZ2ODh1WEx4VmFyTlV2a2w4WndZd0EwVXFUMzVaYVRYSTduT1Y4dnQ5azVCUlU0ZHo0UEsxZmVZeU9DcXRHK0psR0oySFdyMGNFMXlCdS9lbXdXcmhaV0lmMVNDUm90UnJaUVo0U3ZIeUluVExEMTFudEtwa1EwT1piZ1lCWnRuNTQ2eGFyUzk0OGNRVUZwS1pSbU04SkNRL0h3MHFWNDdybm5XRUlrTzFkV1ZzWThjbCtKeG5VSmdWcXRSbTV1THZ2Y3hzWkdqZEZvdk1ka01tV1pUQ1lxZlpWaTF6QU1RRmxmNy9FNXhmRjhlS0NmeDlpRTg3blFWZGRqTHVsNWs5RTI4K3hQZjhRKzBGQXFzWGo1TEhBV0t4SVRzbUNWQ1BnaUpSbFNzd1hUS0ptU0ZIWFc1aVdpYWJrR1NaRFZ5anoweGoxN1dHVmFVbDRPRlJFOWRDZ2VYYllNYTlldXhkeTVjeGxSbEF3SFFqU0JtbFBrVVBMejgxa1pUMG0ycUtpSU9ScHZiKytvbXBxYXI4VnRMV0swcS9welU5VWhnUmNXQnZpNkJ4MCttZ29mdVF4M0xaNEthUFY5Tmk3WFFLUlRWOUxZaXBrUFQ4ZndFRjgyME9ETlBJNWR5VURHMVVMTWpZNkdrcXljZmMyaS9hNklvQ0FtQlR1UEhjUEczYnRaajcyc29vSWx3MUZoWVZpMmZEbVRqdnZ1dTQ5VmZFUTA5VGY2UXpSRXJTYVNYVjFkVVZkWGgzUG56aUVqSTRPUjdldnJpL1QwZE9iVlhWMWRYYlZhN1ZHcjFWb2pPaGFhQWtsNzh1RmR3VXNxbFdRWmpHYi8zS0lxZlB2aEh6Qm42UXdndmJCdlJWR0hieVBZRG1rVVZhYVplUEtaTjFGV3BZT2dFUkRtSDRCdGE5Zml6cWdvTm5HaEpXc3RXaTEySmlXeE5TNlhDd3RacThDSnJ0MndNTncvZHk3bXpKbkRiczZpZ3FTaG9ZRnBiWDlJaGtnMHlRY1JUZTRtSnljSGVYbDU3UGtoUTRhd2s1Nldsb2JzN0d4V3pwdk41b2EwdExURlBNOHJSSE5DSDJ3WnlQcncwWEtaTExPbXJoRzZaZ01TdnZnN3hrd0tCN0pMK3RaemFROTdaUm9lZ3JwcUhXdnpuajZURFkybkNsSUkrTWVLRlZnWUY0ZHZFaE94NC9oeFpGT0ZhamJEUlNwRlJHUWtJNXFpT1NBZ2dCRk56cU8vMFF4UlBtaC9JcHFTSXRuRnJLd3NSbnB3Y0REejRFVHloUXNYV0YvRm41YUdPRHRUT2IrdXZyNCtFVUNBdUhDSXROQTAwQVg1RHlrVjhpOEtTN1Z3ZGxiaDdQZXZ3ZHZISFNpczdMdGRiQStxVEVPcFk2ZkEybzN2NGJNdmsrQWY0TTdtaHY0K1BpaXBya1pyY3pPY3BWS01HajBhOHhjc1lHMVNQejgvcHFGVXJNZ0g0T1B0T2szUmFuY2hSQ3k5TjBtSHA2Y24wK3ZVMUZTbTMxVGUwMmRiclZaRGRuYjJlcDFPUjNkYWpCVHZxdVBFdTBTcWJzUXRKNzlYS3VXdlorYVdZK3pJWUJ6NzZoV29LRXdyNnZ0ZUdMVUh0WG5kbllBNzdzQ08vK3pGUy8vY2o1QmdIeFRTNUlqak1ISENCTXlkTjQ4UjdlWGx4Y2lnb2tYV2g3c3NPZ1BKQkxWV3lYMlFIaFBSUkNwRmJtQmdJTFJhTFl0b0dqTFF0dlRaOUpwZXI3K1lrNVB6UjZQUmVGVXNlcXdpMlhiQ0w5NkFVZzVieldicmlLaVJ3YjlMelNyQzhxZGV4Nkg5THdFK1Zsc3AzMWVQN2dqYWwzVGRvRWQrVVRXVUtpVktTMG9SRlJtSnBVdVhZc2FNR1d3QkppVkMwbE9LNklHUVRlU1JKNmVvMXVsMHVIVHBFbnRmd3ZEaHc1bE9VMU9La2lSSmlydTdPeU9hSktlMHRIVEgxYXRYM3hCRk1Vd3NmSGlSZExWNEcyUDlqYnlMN1N1NVRQYmcrWXhDckZrMkUrOXUyd0NVYW0zdVl5Q2toNGZnejMvYWpuOXQveDdlTGdJbVQ0N0ZsaTFiV0FSU3NVS05wUnNSMGZiZU5aRktObytpbDk0N0pDU0U2VDlGT1owQWltN2F6bjRGR0F5R29vS0NnbGZxNit1L0Z5ZjFycUlqc1VlMlREd0pkQmVkK1liZU5paVJJQVdReEZCM2NmUGFSWGg1NnpOQWJwbHRzdC9Yd29oOC9hZ2hPUEw1S1R6NHpML2g3aXhnVkhnNHRtM2Z6bXdkSlNnaWFTQndUSWhXcTVWcE1oRkxkbytrZzRnbDhpOWV2TWcwbk93Z1JUUmRCWFNTcTZxcVBpb29LUGczeDNGMURoSmlGU09iRXcrTkNwOXNBTlR4dStFL2J2Q1pWQ3A1eE5mTHpldmdqeW53a2dDVEYwK3pyVy9oeElsS2IwQUp5OHNWemZXTldQYjhPekFhbXRrTkFXKzgrU2I3d3FTckF5RmJYTWJBaUNieWlNeVVsQlJtOVloVXNua1V5UWtKQ1RoNzlpeVREMHFTOUJwRnRzRmd5TXJOemQxWVhsNytnU0FJemtTZEdOVjJ6YmFLVWEwUWI4eTk5aU1NTjBMREhkSEU4OElNaFVLV05Ub3MyR1BEcTN1aGNsSmp6ZnFIYlNNNnZwZWswOG54OThKLy8vWXhzdlBMNGVjbXhabzFUek1kSlZMNjZ6NGNLMFI2RDBxeUpCMUVPRDAzY3VSSU5yVTVUbll6TzV0ZFNaUWo2Q29nK2VCNW5pc3FLbnFycEtUa1EwRVFtZ0ZFaU9RYVJhTHRtaTBSdVMxb3YvTHFSaE5PcUNUU25UWEtzeEhEQWpUUC9tVW5OQm9WVmozOVFPOUlaOUh0aHZxc0luejZUUkkwQ2c0eE1aT3hjT0ZDTmtIcEQ5bDJvaWs2S2FKSmppZ1oydCtQVGlSRnNUMGhrbmUzSjBTNmt1aFJXMXY3VTBsSnlSdk56YzJwQUlZQThCVVRJK2NnSVp6b3R3bUZuZjI4eU0wZ25KQnU1Zmhacmk3cU0yRkQvU1dyLzdnTmNvVU15Mzh6cjJmU2lSdy9keHplZndJRkpUWHdjM2ZDb3NXTG1RVFFuTEF2Q2RKT05Fa0JSU2pKQkdreXRXRHBOYXBDU2J0Sm8ybnVTTnBOTXVQajQzTXRxbHRhV3ZLdlhyMzZaazFOelpmMFZsVHdpZDdhNEVDMC9hOWM3SnZRQUxPNXMyTzZXWVFUemxvNS9oNTNONmZqUTRPODhldjE3ektIdC9LM0l1a2tHNTBsVWlLMDJZVDQxRnlZVzQySWpMaVRqYmxJdDN0TGRudWlTU2JJWVJEUlJEQlZpQVNTRXlLYXBJVzJKYUloWGdsbXM5bFlYRnhNOHJGYkVBU0sxR0ZpOUJyczliQUQwWUxJWmJOSWRwZDNSdHhNd2drbnJGWnVqcWU3eTA4U1NQRGsrbmRnTVZ2dzY5OHRBcTVRU2Q1Snk5VkpqWmFLT2hiZFNybUF5RkdSckRGRXZyaW5vVUI3NmFDSUpVSkpPcWd6U0VTVGhKQ2NaR1ptTWx0SjIzbDdlN045cVZxa0s2bXFxbXAzU1VuSmRwUEpsQzFhdlRBeEtWcTZrWkJxOGRFdGJqYmhoS05XanJ2UHc4UDU2SEFwOFBTZnRzTmdOR1B0aG9lQmdrcWd4ZGgyTVpCS2dZcmlSdFRvbXRueTU0REFRT2FUdSt1RjJGMkhQUm1TZEJESjlwVlBaUEZJaHluQ2llaGkyMTFxekhsQW5FblNRNmZUblM0cksvdVBUcWM3Q1lCZUhDVVNiZXlFYUVGMGVhVGpOVjFKU0h2Y0NzSUpQMXV0M0d3UFY2ZGpZY1A4SmM5djNvbHFiUVArOFQrL0FTcnJnTnJHNjIwQXFRUW1rd1VXS3dlWlRBb25qVk9ieFpDT3NIZndpR2phaHBLaG5XaTdkQkN4NUsrSmFIcU5yaElQOFJaQzJwZWl1cm01T2Ird3NQQS9WVlZWWDRwRWhvdHV3K0JBZFB1b2xvaEpzVVo4clZlNFZZU0R5UXZIVDNIUnFMOGJFeEhpL2VxL0Q2R3FWbzl0YjY0Rk5DcWd0TWJXOE9JRmFOUktLT1V5NksxV1Z2bkpyaThCdmtZK0VVVzZTMUpCQk5PREp1ZUVRUEYrVHlLWTdCM1pQdHFQbklkOUpFYmFiaktaYWdvS0N0NnBxS2o0bk9mNVdsR25GZTNjQjk5T3E2Vml4TmVLazV3KzRWWVNUampMOGZ3a3BWeCtkT0xvb1NNLzJuY0N4WVZWK0dUYkJ2aU5IZ3JrbEFJR0U0WUVlQ0RBeHczRnhhWE1WVkJVMnF0Q0lwa2lrMVkxa1VRUW1TUWhSQ0JGTkxWUVNhUEpyNWVKTitSU0RuQWt1clcxdGFHa3BHUlhSVVhGSHJQWlhDamFQSHRuejlpSis3QVRiUldKN3ZldnlmMFNQNk9uRjRCOUVvbms3cUFBejVEVTlDSWMvaVlaWXlOQ01KUnVjOUUzUStibmlVc1hyK0xNcFVJWTliV1lHQjJOc1dQSHNpRUNPUTRpMDU0TUtlbFJSTk1KSWRkQkMzTElrVkRYa0lnbWd1a0VVU0xsZWQ1Y1dWbTVMUzh2YjFOZFhkMGhqdU0wWWxLRVF4dlYydTZ2VlB5ckZ4dFFmWTVxUi94U3YxdEkycmlENTRYUUlIL1BhRzI5SHJ2MkhvZXAyWVJaZDQ4SFBBTVFxdUt3KzlzVVdNeEdsSmFXWU5pd1lXeDhSV1FTOFpUd3lNYlJ2K2s1SXRwZUhaSjAyUHNkUkRUSGNjM1YxZFc3OHZQelg5QnF0Wjl4SENjVm8xcnFVSkszSjFvaVJuYVRxTlA2dm1oMVYvaWxmeWp5YTQ3bm16emNuZThuM2Y3cXUyU2NPSmVORVFFdWlKbXpFRjZ5Rmh6OE1RMm01bnJXNktmU215WTVKQzNVa2oxLy9qenJnWkIrMDNNVTBlUTJLS0pKZWppT2E2bXFxdHFabjUvL1o2MVd1OTlLbWRTbTAvSjJ2US9Pb2Vra0ZZbHVGc3R5M1VCdTlXNlBYNXB3d2htZUY3NVRLT1NUUWdLOWdxN2tsV1Bmd1FSVWxwWGkxeXRtZzIrMUlyZXdCb2FXSmxacDBpU0hWcXJhSzBPU0RQdFVoaElwL2Q5c05wZFZWbGJ1eU0vUGY2bTJ0dmFBMVdybFJlbFFPVWhIWjBUekRoR3R1eGsvdVhxNy9kanYvOGxrMGhjTXhsWVVGbGNqUEN3RXNlTkhJRGt0RDFLWmxEa1drZ3k3UTZHb3BnZkpCNkdwcVNsTnE5VWVxcW1wK2NGcXRSYUxLNSs4SFFvV3JsMHlsSWdQc3hqUmVqRnAzalRjVm9SVDRsTW9GQk9rVXVrbXE4VzhyTVZvaHNGa2hxK1hLOTBTQ2dFMmEyaGZrMDMvTnBsTXRYcTkvcVJXcS8xV3A5T2RFVmM0MGVEV1dTVGEyczUxQ0E2SjBDUkdkT090K2tYUDI0cHcreXlSeU5UcGRCT1ZTdVhqQUI0UUJDR2NUZ1pGTXBGc05Cb0xqVVpqZGtORHcybWRUcGRvTnB1THhPOFM0TkJBc2pwNGFEc0VVYnViUmFKYmJrUWk3QXR1TzhKSktraVBxVVZLQ1ZBc2RLTGtjdm1RcHFhbXdMS3lNcUdwcVNsWEVJUW1NU3JkeEdoMm5MWUlEZzBtaXhqSkJwSGc1aHVaQlB1S1cxMzQ5QmVaY3JrOGt4SW1uUWlSNEFCeGZzaUprc0E3SkVGN0FXTnkrSHRMSTNrUWd4akVJQVl4aUVFTVloQ0Q2QW9BL2gvUnN4MVNZVEdIbGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment