Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@抖阴Porn@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5oqW6Zi0UG9ybiIsImF1dGhvciI6Iua1geiLjyIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2Z5cGFnZSIsInZlcnNpb24iOjEsImNvbF90eXBlIjoibW92aWVfMiIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczogXG52YXIgZCA9IFtdO1xuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9ob21lJykpLnJ1bGUpO1xuc2V0UmVzdWx0KGQpIiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHk/cGFnZT1meXBhZ2Uma3c9KioiLCJncm91cCI6IueyvuWTgSIsInNlYXJjaEZpbmQiOiJqczpcbiQucmVxdWlyZShcInNlYWNoXCIpIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMyIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiKiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJhZXNcIixcInBhdGhcIjpcImFlc1wiLFwicnVsZVwiOlwiLy/liqDovb1DcnlwdG9KU+W6k1xcbmV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG52YXIgdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xcbi8v55Sf5oiQ6ZqP5py6dXVpZFxcbmZ1bmN0aW9uIGdlbmVyYXRlVVVJRCgpIHtcXG4gICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xcbiAgICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwO1xcbiAgICAgICAgdmFyIHYgPSBjID09PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xcbiAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xcbiAgICB9KTtcXG59XFxuLy/nlJ/miJDml7bpl7TmiLNcXG5mdW5jdGlvbiBnZXRDdXJyZW50VGltZXN0YW1wKCkge1xcbiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxufVxcbi8vbWQ15Yqg5a+GXFxuZnVuY3Rpb24gbWQ1KHN0cikge1xcbiAgICByZXR1cm4gQ3J5cHRvSlMuTUQ1KHN0cikudG9TdHJpbmcoKTtcXG59XFxuLy9zaGEyNTbliqDlr4ZcXG5mdW5jdGlvbiBzaGEyNTYoc3RyKSB7XFxuICAgIHJldHVybiBDcnlwdG9KUy5TSEEyNTYoc3RyKS50b1N0cmluZygpO1xcbn1cXG5cXG5cXG4vLyDop6Plr4blh73mlbBcXG5mdW5jdGlvbiBEZWNyeXB0KHdvcmQpIHtcXG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcImNjODhkZGM5MzU3ZmY0NjFlMDhmMDQ3YWVkZWU2OTJiXFxcIik7XFxuICAgIGNvbnN0IGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcImU4OTIyNWNmYmJpbWdrY3VcXFwiKTtcXG4gICAgbGV0IGVuY3J5cHRlZEhleFN0ciA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2Uod29yZCk7XFxuICAgIGxldCBkZWNyeXB0ID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoe1xcbiAgICAgICAgY2lwaGVydGV4dDogZW5jcnlwdGVkSGV4U3RyXFxuICAgIH0sIGtleSwge1xcbiAgICAgICAgaXY6IGl2LFxcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DRkIsXFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuTm9QYWRkaW5nIC8vIOazqOaEj+i/memHjOW6lOivpeaYr0NyeXB0b0pTLnBhZC5Ob1BhZGRpbmdcXG4gICAgfSk7XFxuICAgIGlmIChkZWNyeXB0KSB7XFxuICAgICAgICBsZXQgZGVjcnlwdGVkU3RyID0gZGVjcnlwdC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgICAgICByZXR1cm4gZGVjcnlwdGVkU3RyO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8g6Kej5a+G5aSx6LSl77yM6L+U5ZuebnVsbOaIlumUmeivr+S/oeaBr1xcbiAgICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG59XFxuXFxuLy8g5Yqg5a+G5Ye95pWwXFxuZnVuY3Rpb24gRW5jcnlwdChwbGFpbnRleHQpIHtcXG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcImNjODhkZGM5MzU3ZmY0NjFlMDhmMDQ3YWVkZWU2OTJiXFxcIik7XFxuICAgIGNvbnN0IGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcImU4OTIyNWNmYmJpbWdrY3VcXFwiKTtcXG4gICAgdmFyIGVuY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHBsYWludGV4dCwga2V5LCB7XFxuICAgICAgICBpdjogaXYsXFxuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNGQixcXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Ob1BhZGRpbmcgLy8g5rOo5oSP6L+Z6YeM5bqU6K+l5pivQ3J5cHRvSlMucGFkLk5vUGFkZGluZ1xcbiAgICB9KTtcXG4gICAgdmFyIGNpcGhlcnRleHQgPSBlbmNyeXB0ZWQuY2lwaGVydGV4dC50b1N0cmluZyhDcnlwdG9KUy5lbmMuSGV4KTtcXG4gICAgcmV0dXJuIGNpcGhlcnRleHQudG9VcHBlckNhc2UoKTtcXG59XFxuXFxudmFyIGxhenkgPSAkKCcnKS5pbWFnZSgoKSA9PiB7XFxuY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcXFwiKTtcXG5cXHRsZXQga2V5ID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlVVRGOChcXFwiZjVkOTY1ZGY3NTMzNjI3MFxcXCIpO1xcblxcdGxldCBpdiA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXFxcIjk3YjYwMzk0YWJjMmZiZTFcXFwiKTtcXG5cXHRsZXQgdGV4dERhdGEgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VJbnB1dFN0cmVhbShpbnB1dCk7XFxuXFx0bGV0IGVuY3J5cHRlZCA9IENyeXB0b1V0aWwuQUVTLmRlY3J5cHQodGV4dERhdGEsIGtleSwge1xcbiAgXFx0bW9kZTogXFxcIkFFUy9DQkMvUEtDUzdQYWRkaW5nXFxcIixcXG5cXHRcXHRpdjogaXZcXG5cXHR9KTtcXG5cXHRyZXR1cm4gZW5jcnlwdGVkLnRvSW5wdXRTdHJlYW0oKTtcXG59KVxcblxcblxcbmZ1bmN0aW9uIHBvc3QodXJsLGRhdGEwKXtcXG52YXIgZGF0YSA9IEVuY3J5cHQoZGF0YTApOyBcXG52YXIgc2lnbiA9IG1kNShzaGEyNTYoJ2NsaWVudD1wd2EmZGF0YT0nK2RhdGErJyZ0aW1lc3RhbXA9Jyt0KydjYzg4ZGRjOTM1N2ZmNDYxZTA4ZjA0N2FlZGVlNjkyYicpKTsgLy9sb2coc2lnbilcXG52YXIgYm9keSA9ICdjbGllbnQ9cHdhJnRpbWVzdGFtcD0nK3QrJyZkYXRhPScrZGF0YSsnJnNpZ249JytzaWduOyBcXG4vL2xvZyhib2R5KVxcbnZhciBodG1sID0gZmV0Y2godXJsLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxcbiAgICd1c2VyLWFnZW50JzonRGFydC8zLjQoZGFydDppbyknLFxcbiAgICB9LFxcbiAgICBib2R5OiBib2R5LFxcbiAgICBtZXRob2Q6ICdQT1NUJ1xcbn0pOyBcXG4vL2xvZyhodG1sKVxcbmxldCBodG1sMSA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YTsgXFxuLy9sb2coaHRtbDEpXFxubGV0IGh0bWwyID0gRGVjcnlwdChodG1sMSk7IFxcbnJldHVybiBodG1sMjtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLml7bpl7TmiLPovazmjaJcIixcInBhdGhcIjpcIuaXtumXtOaIs+i9rOaNolwiLFwicnVsZVwiOlwiZnVuY3Rpb24gdGltZXN0YW1wVG9UaW1lKHRtLCB0cykge1xcblxcdFxcdHVuZGVmaW5lZFxcblxcdFxcdHZhciBkYXRlID0gbmV3IERhdGUodG0gKiAxMDAwKTsgLy/ml7bpl7TmiLPkuLoxMOS9jemcgCoxMDAw77yM5pe26Ze05oiz5Li6MTPkvY3nmoTor53kuI3pnIDkuZgxMDAwXFxuXFx0XFx0dmFyIFkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuXFx0XFx0dmFyIE0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnLSc7XFxuXFx0XFx0dmFyIEQgPSBkYXRlLmdldERhdGUoKTtcXG5cXHRcXHR2YXIgaCA9ICcgfCAnICsgZGF0ZS5nZXRIb3VycygpICsgJzonO1xcblxcdFxcdHZhciBtID0gZGF0ZS5nZXRNaW51dGVzKCk7XFxuXFx0XFx0aWYobTwxMCkgbSA9ICcwJyttO1xcblxcdFxcdG0gPSBtICsgJzonXFxuXFx0XFx0dmFyIHMgPSBkYXRlLmdldFNlY29uZHMoKTtcXG5cXHRcXHRpZihzPDEwKSBzID0gJzAnK3M7XFxuXFx0XFx0aWYgKHRzID09IDApIHJldHVybiBZICsgTSArIEQ7XFxuXFx0XFx0aWYgKHRzID09IDEpIHJldHVybiBZICsgTSArIEQgKyBoICsgbSArIHM7XFxuXFx0fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiG57G7XCIsXCJwYXRoXCI6XCJDYXRlZ29yeVwiLFwicnVsZVwiOlwiZnVuY3Rpb24gc3Ryb25nKGQsIGMpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPSMnICsgKGMgfHwgJzAwMDAwMCcpICsgJz4nICsgZCArICc8L2ZvbnQ+PC9zdHJvbmc+JztcXG59XFxuZnVuY3Rpb24gQ2F0ZWdvcnkobGlzdCxuLGNvbCxkKSB7XFxuICAgICB2YXIgdGl0bGUgPSBsaXN0WzBdLnRpdGxlLnNwbGl0KCcmJyk7XFxuICAgICB2YXIga2V5ID0gbGlzdFswXS5rZXkuc3BsaXQoJyYnKTtcXG4gICAgICBpZihsaXN0WzBdLmltZyE9bnVsbCl7XFxuICAgICB2YXIgaW1nPWxpc3RbMF0uaW1nLnNwbGl0KCcmJyk7XFxuICAgIH1lbHNle1xcbiAgICB2YXIgaW1nPVtdO1xcbiAgICB9XFxuZm9yICh2YXIgaSBpbiB0aXRsZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogICAoZ2V0TXlWYXIoJ2NvbG9yJytuLCAnMCcpID09IGkpID8gc3Ryb25nKHRpdGxlW2ldLCAnRkY2Njk5JykgOiB0aXRsZVtpXSxcXG4gICAgICAgICAgICBpbWc6aW1nW2ldLFxcbiAgICAgICAgICAgIHVybDogJChrZXlbaV0pLmxhenlSdWxlKChpLG4sdGl0bGUsa2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgcHV0TXlWYXIobiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgIHB1dE15VmFyKCdjb2xvcicrbiwgaSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSwgaSwgbix0aXRsZVtpXSxrZXlbaV0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBjb2xcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJyxcXG4gICAgfSk7XFxuICAgIHJldHVybiBkO1xcbn1cXG4kLmV4cG9ydHMuQ2F0ZWdvcnkgPSBDYXRlZ29yeTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzJcIixcIm5hbWVcIjpcIuaQnOe0olwiLFwicGF0aFwiOlwic2VhY2hcIixcInJ1bGVcIjpcImpzOiBcXG52YXIgZCA9IFtdO1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciBjNj0gW3t0aXRsZTogJ+mVv+inhumikSbnn63op4bpopEm5biW5a2QJyxrZXk6ICc2JjEmMyd9XTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICQucmVxdWlyZShcXFwiQ2F0ZWdvcnlcXFwiKS5DYXRlZ29yeShjNiwnYzYnLCdzY3JvbGxfYnV0dG9uJyxkKTtcXG59XFxubGV0IGt5PU1ZX1VSTC5zcGxpdCgnPScpWzJdO1xcbmxldCBwZz1NWV9VUkwuc3BsaXQoJz0nKVsxXS5yZXBsYWNlKCcma3cnLCcnKTtcXG52YXIgdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApOyAvL2xvZyh0KVxcbnZhciBkYXRhMD0ne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJjb2RlXFxcIjpcXFwic2VhcmNoXFxcIixcXFwidHlwZVxcXCI6XFxcIicrZ2V0TXlWYXIoJ2M2JywgJzYnKSsnXFxcIixcXFwia2V5XFxcIjpcXFwiJytreSsnXFxcIixcXFwibW9kXFxcIjpcXFwiaW5kZXhcXFwiLFxcXCJwYWdlXFxcIjpcXFwiJytwZysnXFxcIn0nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxuaWYoZ2V0TXlWYXIoJ2M2JywgJzYnKT09Myl7XFxubGV0IGRhdGE9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuLy9sb2coaXRlbSlcXG5kYXRhLmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgIC8v55So5oi3XFxuICAgICAgdmFyIHVzZXI9ZGF0YS51c2VyO1xcbiAgICAgICAvL+WbvueJh1xcbiAgICAgIHZhciBwaG90b3M9ZGF0YS5waG90b3M7XFxuICAgICAgLy/kuLvpophcXG4gICAgICB2YXIgdG9waWM9ZGF0YS50b3BpYztcXG4gICAgICAvL+WciOWtkFxcbiAgICAgIHZhciBncm91cD1kYXRhLmdyb3VwO1xcbiAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB1c2VyLm5pY2tuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IHVzZXIudGh1bWJfdXJsK2xhenksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsIDogJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjJyt1c2VyLnV1aWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbDNcXFwiKScsXFxuICAgICAgIH0se1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzpkYXRhLmNvbnRlbnQsXFxuICAgICAgICAgICAgICAgIHVybDogICAgJ2hpa2VyOi8vZW1wdHkjIycrZGF0YS5pZCsnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsNFxcXCIpJyxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge2xpbmVWaXNpYmxlOiBmYWxzZX1cXG4gICAgICAgfSk7XFxuICAgICAgIHBob3Rvcy5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBpbWc6IGRhdGEubWVkaWFfdXJsX2Z1bGwrbGF6eSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJwaWNfM19jYXJkXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsIDogZGF0YS5tZWRpYV91cmxfZnVsbCxcXG4gICAgICAgfSlcXG4gICAgICB9KVxcbiAgICAgICBpZih0b3BpYyE9bnVsbCl7XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOnRvcGljLm5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjJyt0b3BpYy5pZCsnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9waWNcXFwiKScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgfSlcXG4gICAgICB9XFxuICAgICAgaWYoZ3JvdXAhPW51bGwpe1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOmdyb3VwLm5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjJytncm91cC5pZCsnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZ3JvdXBcXFwiKScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgfSlcXG4gICAgICB9XFxufSlcXG59ZWxzZXtcXG5sZXQgbGlzdD0gSlNPTi5wYXJzZShodG1sMikuZGF0YTtcXG5sb2cobGlzdCk7XFxuaWYobGlzdCE9bnVsbCl7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQrJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JytkYXRhLmR1cmF0aW9uU3RyKycgICcrZGF0YS50YWdzLFxcbiAgICAgICAgICAgIGltZzogZGF0YS50aHVtYkltZytsYXp5LFxcbiAgICAgICAgICAgIHVybDogZGF0YS5wbGF5VXJsLnJlcGxhY2UoL1xcXFwvXFxcXC8uKnBsYXlcXFxcLi8sJy8vbG9uZy4nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgfSlcXG4gfSlcXG59XFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMlwiLFwibmFtZVwiOlwi6aaW6aG16KeG6aKR5LqM57qnXCIsXCJwYXRoXCI6XCJlcmppXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZD1bXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2FlcycpKS5ydWxlKTtcXG52YXIgdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApOyAvL2xvZyh0KVxcbnZhciB0MD1NYXRoLmZsb29yKERhdGUubm93KCkpO1xcbnZhciBpZD1NWV9VUkwuc3BsaXQoJyMjJylbMl07XFxudmFyIHBnPU1ZX1VSTC5zcGxpdCgnIyMnKVsxXTtcXG52YXIgYzM9IFt7dGl0bGU6ICfmnIDmlrAm5pyA54OtJyxrZXk6ICduZXcmaG90J31dO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgJC5yZXF1aXJlKFxcXCJDYXRlZ29yeVxcXCIpLkNhdGVnb3J5KGMzLCdjMycsJ3Njcm9sbF9idXR0b24nLGQpO1xcbn1cXG52YXIgZGF0YTA9J3tcXFwib2F1dGhfdHlwZVxcXCI6XFxcInB3YVxcXCIsXFxcIm9hdXRoX2lkXFxcIjpcXFwicGpOQ1hUSTBJSWV0bHR5cl8xNzM0MDEwMzk0MzMwXFxcIixcXFwidmVyc2lvblxcXCI6XFxcIjMuMC4wXFxcIixcXFwibW9kXFxcIjpcXFwiZWxlbWVudFxcXCIsXFxcImNvZGVcXFwiOlxcXCJnZXRFbGVtZW50SXRlbWJ5SWRcXFwiLFxcXCJpZFxcXCI6JytpZCsnLFxcXCJwYWdlXFxcIjonK3BnKycsXFxcInR5cGVcXFwiOlxcXCInK2dldE15VmFyKCdjMycsICduZXcnKSsnXFxcIn0nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxubGV0IGxpc3Q9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGEubGlzdDtcXG4vL2xvZyhsaXN0KTtcXG5pZihsaXN0IT1udWxsKXtcXG5saXN0LmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEuY3JlYXRlZF9hdCsnXFxcXHRcXFxcdFxcXFx0XFxcXHQnK2RhdGEuZHVyYXRpb25TdHIrJyAgJytkYXRhLnRhZ3MsXFxuICAgICAgICAgICAgaW1nOiBkYXRhLnRodW1iSW1nK2xhenksXFxuICAgICAgICAgICAgdXJsOiBkYXRhLnBsYXlVcmwucmVwbGFjZSgvXFxcXC9cXFxcLy4qcGxheVxcXFwuLywnLy9sb25nLicpXFxuICAgICAgICB9KVxcbiB9KVxcbn1cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIummlumhteinhumikVwiLFwicGF0aFwiOlwidmlkZW9cIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciBjMj0gW3t0aXRsZTogJ+aOqOiNkCbnn63op4bpopEm54Ot54K5JuacgOaWsCbmipbpmLTljp/liJsm5LmxIOS8puaNouWmuyblm73kuqflrprliLYm5pel6Z+pJum7keaWmSbnvZHpu4Qm5ZCM5Z+OJuaal+e9kScsa2V5OiAnMSY2NiY2JjQmMiYxMSYzJjEwJjcmOCY1JjEyJ31dO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgJC5yZXF1aXJlKFxcXCJDYXRlZ29yeVxcXCIpLkNhdGVnb3J5KGMyLCdjMicsJ3Njcm9sbF9idXR0b24nLGQpO1xcbn1cXG5pZihnZXRNeVZhcignYzInLCAnMScpPT0yKXtcXG52YXIgZGF0YTAgPSAne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJlbGVtZW50XFxcIixcXFwiY29kZVxcXCI6XFxcImdldENvbnN0cnVjdEJ5SWRcXFwiLFxcXCJwYWdlXFxcIjonK3BnKycsXFxcImlkXFxcIjonK2dldE15VmFyKCdjMicsICcxJykrJ30nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxuLy9sb2coaHRtbDIpXFxubGV0IGRhdGE9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuLy9sb2coZGF0YSlcXG5kYXRhLmZvckVhY2goZGF0YSA9PiB7XFxuaWYoZGF0YS5jb250ZW50X3R5cGUhPTExKXtcXG52YXIgbGlzdD1kYXRhLmxpc3Q7XFxuLy9sb2cobGlzdCk7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEubmlja25hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogZGF0YS50aHVtYitsYXp5LFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fcm91bmRfNFxcXCIsXFxuICAgICAgICAgICAgICAgIHVybCA6ICAnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIyMnK2RhdGEudXVpZCsnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsNVxcXCIpJyxcXG4gfSlcXG59KVxcbn1cXG59KVxcbn1lbHNlIGlmKGdldE15VmFyKCdjMicsICcxJyk9PTQpe1xcbmlmKHBnPT0xKXtcXG52YXIgZGF0YTAgPSAne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJlbGVtZW50XFxcIixcXFwiY29kZVxcXCI6XFxcImdldENvbnN0cnVjdEJ5SWRcXFwiLFxcXCJwYWdlXFxcIjonK3BnKycsXFxcImlkXFxcIjonK2dldE15VmFyKCdjMicsICcxJykrJ30nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxuLy9sb2coaHRtbDIpXFxubGV0IGRhdGE9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuLy9sb2coZGF0YSlcXG5kYXRhLmZvckVhY2goZGF0YSA9PiB7XFxuaWYoZGF0YS5jb250ZW50X3R5cGUhPTExKXtcXG52YXIgbGlzdD1kYXRhLmxpc3Q7XFxuLy9sb2cobGlzdCk7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQrJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JytkYXRhLmR1cmF0aW9uU3RyKycgICcrZGF0YS50YWdzLFxcbiAgICAgICAgICAgIGltZzogZGF0YS50aHVtYkltZytsYXp5LFxcbiAgICAgICAgICAgIHVybDogZGF0YS5wbGF5VXJsLnJlcGxhY2UoL1xcXFwvXFxcXC8uKnBsYXlcXFxcLi8sJy8vbG9uZy4nKVxcbiAgICAgICAgfSlcXG4gfSlcXG59XFxufSlcXG59ZWxzZXtcXG52YXIgZGF0YTAgPSAne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJlbGVtZW50XFxcIixcXFwiY29kZVxcXCI6XFxcImdldEVsZW1lbnRJdGVtYnlJZFxcXCIsXFxcInBhZ2VcXFwiOicrcGcrJyxcXFwiaWRcXFwiOjMzfSc7XFxudmFyIHVybCA9ICdodHRwczovL3ppdnNzeS5oeml5aHV5LmNvbS9wd2EucGhwJztcXG4vL2xvZyh1cmwpXFxubGV0IGh0bWwyID0gcG9zdCh1cmwsZGF0YTApOyBcXG4vL2xvZyhodG1sMilcXG5sZXQgZGF0YT0gSlNPTi5wYXJzZShodG1sMikuZGF0YS5saXN0O1xcbmRhdGEuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5jcmVhdGVkX2F0KydcXFxcdFxcXFx0XFxcXHRcXFxcdCcrZGF0YS5kdXJhdGlvblN0cisnICAnK2RhdGEudGFncyxcXG4gICAgICAgICAgICBpbWc6IGRhdGEudGh1bWJJbWcrbGF6eSxcXG4gICAgICAgICAgICB1cmw6IGRhdGEucGxheVVybC5yZXBsYWNlKC9cXFxcL1xcXFwvLipwbGF5XFxcXC4vLCcvL2xvbmcuJyksXFxuICAgICAgICB9KVxcbiB9KVxcbn1cXG59ZWxzZSBpZihnZXRNeVZhcignYzInLCAnMScpPT04KXtcXG52YXIgZGF0YTAgPSAne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJhY3RvclxcXCIsXFxcImNvZGVcXFwiOlxcXCJpbmRleFxcXCIsXFxcInBhZ2VcXFwiOicrcGcrJ30nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxuLy9sb2coaHRtbDIpXFxubGV0IGRhdGE9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuLy9sb2coZGF0YSlcXG5kYXRhLmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLm5hbWUsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5icmllZixcXG4gICAgICAgICAgICBpbWc6IGRhdGEuY292ZXIrbGF6eSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrZGF0YS5pZCsnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsMlxcXCIpJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIixcXG4gICAgICAgIH0pXFxufSlcXG59ZWxzZSBpZihnZXRNeVZhcignYzInLCAnMScpPT02Nil7XFxuJC5yZXF1aXJlKFxcXCJtaW5pXFxcIilcXG59ZWxzZXtcXG52YXIgZGF0YTAgPSAne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJlbGVtZW50XFxcIixcXFwiY29kZVxcXCI6XFxcImdldENvbnN0cnVjdEJ5SWRcXFwiLFxcXCJwYWdlXFxcIjonK3BnKycsXFxcImlkXFxcIjonK2dldE15VmFyKCdjMicsICcxJykrJ30nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxubGV0IGh0bWwyID0gcG9zdCh1cmwsZGF0YTApOyBcXG5sZXQgZGF0YT0gSlNPTi5wYXJzZShodG1sMikuZGF0YTtcXG5kYXRhLmZvckVhY2goZGF0YSA9PiB7XFxuaWYoKGRhdGEuY29udGVudF90eXBlIT0xMSkmKGRhdGEuY29udGVudF90eXBlIT04KSl7XFxuICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIHVybCA6ICAnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIyMnK2RhdGEuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2VyamlcXFwiKScsXFxufSlcXG52YXIgbGlzdD1kYXRhLmxpc3Q7XFxuLy9sb2cobGlzdCk7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQrJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JytkYXRhLmR1cmF0aW9uU3RyKycgICcrZGF0YS50YWdzLFxcbiAgICAgICAgICAgIGltZzogZGF0YS50aHVtYkltZytsYXp5LFxcbiAgICAgICAgICAgIHVybDogZGF0YS5wbGF5VXJsLnJlcGxhY2UoL1xcXFwvXFxcXC8uKnBsYXlcXFxcLi8sJy8vbG9uZy4nKSxcXG4gICAgICAgIH0pXFxuIH0pXFxufVxcbn0pXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aaW6aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJqczpcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGQucHVzaCh7wqDCoMKgXFxuICAgICAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2Uvc2VhY2g/cGFnZT1meXBhZ2Uma3c9XFxcIiArIGlucHV0XFxuICAgIH0pLFxcbiAgICAgICAgwqDCoMKgZGVzYzogXFxcIuivt+i+k+WFpeaQnOe0ouWFs+mUruivjVxcXCIsXFxuICAgICAgICDCoMKgwqBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgfSlcXG59O1xcblxcbnZhciBwZz0gTVlfVVJMLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHkjIycsICcnKTtcXG52YXIgdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApOyAvL2xvZyh0KVxcbnZhciB0MD1NYXRoLmZsb29yKERhdGUubm93KCkpO1xcbnZhciBjMT0gW3t0aXRsZTogJ+eyvumAiSbljp/liJsm56S+5Yy6JueDreeCuSZ1cOS4uycsa2V5OiAnMSYyJjMmNCY1JyxpbWc6J2h0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xzMTI1NzgxMDAzL3R1Ymlhby9tYWluL21vdmllLzExMS5zdmcmaHR0cHM6Ly9naHByb3h5Lm5ldC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvdHViaWFvL21haW4vbW92aWUvMTEyLnN2ZyZodHRwczovL2docHJveHkubmV0L2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9sczEyNTc4MTAwMy90dWJpYW8vbWFpbi9tb3ZpZS8xMTMuc3ZnJmh0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xzMTI1NzgxMDAzL3R1Ymlhby9tYWluL21vdmllLzExNC5zdmcmaHR0cHM6Ly9naHByb3h5Lm5ldC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvdHViaWFvL21haW4vbW92aWUvMTIyLnN2Zyd9XTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICQucmVxdWlyZShcXFwiQ2F0ZWdvcnlcXFwiKS5DYXRlZ29yeShjMSwnYzEnLCdpY29uXzUnLGQpO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnbGluZScsXFxufSx7XFxuICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyxcXG59XFxuLHtcXG4gICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLFxcbn0pO1xcbn1cXG52YXIg5YiG57G7PWdldE15VmFyKCdjMScsICcxJyk7XFxuaWYo5YiG57G7PT0xKXtcXG4kLnJlcXVpcmUoXFxcInZpZGVvXFxcIilcXG59ZWxzZSBpZijliIbnsbs9PTIpe1xcbiQucmVxdWlyZShcXFwib3JnXFxcIilcXG59ZWxzZSBpZijliIbnsbs9PTMpe1xcbiQucmVxdWlyZShcXFwibmV3c1xcXCIpXFxufWVsc2UgaWYo5YiG57G7PT00KXtcXG4kLnJlcXVpcmUoXFxcImhvdFxcXCIpXFxufWVsc2UgaWYo5YiG57G7PT01KXtcXG4kLnJlcXVpcmUoXFxcInVwXFxcIilcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLng63ngrlcIixcInBhdGhcIjpcImhvdFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9hZXMnKSkucnVsZSk7XFxudmFyIGRhdGEwID0gJ3tcXFwib2F1dGhfdHlwZVxcXCI6XFxcInB3YVxcXCIsXFxcIm9hdXRoX2lkXFxcIjpcXFwicGpOQ1hUSTBJSWV0bHR5cl8xNzM0MDEwMzk0MzMwXFxcIixcXFwidmVyc2lvblxcXCI6XFxcIjMuMC4wXFxcIixcXFwibW9kXFxcIjpcXFwiaG90XFxcIixcXFwiY29kZVxcXCI6XFxcImluZGV4XFxcIn0nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxubGV0IGhvdD0gSlNPTi5wYXJzZShodG1sMikuZGF0YS5ob3Q7XFxubGV0IGxpc3Q9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGEuZmluZDtcXG4vL2xvZyhsaXN0KVxcbmhvdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS5uYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IGRhdGEuaW1nX3VybCtsYXp5LFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzNcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmwgOiAgJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjJytkYXRhLnR5cGUrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2VyamkyMlxcXCIpJyxcXG59KVxcbn0pXFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS5uYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IGRhdGEuaW1nX3VybCtsYXp5LFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzNcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmwgOiAgJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjJytkYXRhLm5hbWUrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2VyamkyXFxcIiknLFxcbn0pXFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzJcIixcIm5hbWVcIjpcIuivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZD1bXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2FlcycpKS5ydWxlKTtcXG52YXIgdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApOyAvL2xvZyh0KVxcbnZhciB0MD1NYXRoLmZsb29yKERhdGUubm93KCkpO1xcbnZhciBpZD1NWV9VUkwuc3BsaXQoJyMjJylbMl07XFxudmFyIHBnPU1ZX1VSTC5zcGxpdCgnIyMnKVsxXTtcXG52YXIgZGF0YTA9J3tcXFwib2F1dGhfdHlwZVxcXCI6XFxcInB3YVxcXCIsXFxcIm9hdXRoX2lkXFxcIjpcXFwicGpOQ1hUSTBJSWV0bHR5cl8xNzM0MDEwMzk0MzMwXFxcIixcXFwidmVyc2lvblxcXCI6XFxcIjMuMC4wXFxcIixcXFwiY29kZVxcXCI6XFxcImRldGFpbFxcXCIsXFxcImlkXFxcIjonK2lkKycsXFxcIm1vZFxcXCI6XFxcImNvbGxlY3Rpb25cXFwiLFxcXCJwYWdlXFxcIjonK3BnKyd9JztcXG52YXIgdXJsID0gJ2h0dHBzOi8veml2c3N5Lmh6aXlodXkuY29tL3B3YS5waHAnO1xcbi8vbG9nKHVybClcXG5sZXQgaHRtbDIgPSBwb3N0KHVybCxkYXRhMCk7IFxcbi8vbG9nKGh0bWwyKVxcbmxldCBsaXN0PSBKU09OLnBhcnNlKGh0bWwyKS5kYXRhLmxpc3Q7XFxuaWYobGlzdCE9bnVsbCl7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQrJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JytkYXRhLmR1cmF0aW9uU3RyKycgICcrZGF0YS50YWdzLFxcbiAgICAgICAgICAgIGltZzogZGF0YS50aHVtYkltZytsYXp5LFxcbiAgICAgICAgICAgIHVybDogZGF0YS5wbGF5VXJsLnJlcGxhY2UoL1xcXFwvXFxcXC8uKnBsYXlcXFxcLi8sJy8vbG9uZy4nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzNcXFwiLFxcbiAgICAgICAgfSlcXG4gfSlcXG59XFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8yXCIsXCJuYW1lXCI6XCLnn63op4bpopFcIixcInBhdGhcIjpcIm1pbmlcIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciBkYXRhMD0ne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJpbmRleFxcXCIsXFxcImNvZGVcXFwiOlxcXCJob21lXFxcIixcXFwicGFnZVxcXCI6JytwZysnLFxcXCJsaW1pdFxcXCI6MjB9JztcXG52YXIgdXJsID0gJ2h0dHBzOi8veml2c3N5Lmh6aXlodXkuY29tL3B3YS5waHAnO1xcbi8vbG9nKHVybClcXG5sZXQgaHRtbDIgPSBwb3N0KHVybCxkYXRhMCk7IFxcbmxldCBsaXN0PSBKU09OLnBhcnNlKGh0bWwyKS5kYXRhO1xcbi8vbG9nKGxpc3QpO1xcbmlmKGxpc3QhPW51bGwpe1xcbmxpc3QuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgIGlmKGRhdGFbJ2lzX2FkcyddPT1mYWxzZSl7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEuY3JlYXRlZF9hdCsnXFxcXHRcXFxcdFxcXFx0XFxcXHQnK2RhdGEuZHVyYXRpb25TdHIrJyAgJytkYXRhLnRhZ3MsXFxuICAgICAgICAgICAgaW1nOiBkYXRhLnRodW1iSW1nK2xhenksXFxuICAgICAgICAgICAgdXJsOiBkYXRhLnBsYXlVcmwucmVwbGFjZSgvXFxcXC9cXFxcLy4qcGxheVxcXFwuLywnLy9sb25nLicpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICB9KVxcbn1cXG4gfSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLljp/liJtcIixcInBhdGhcIjpcIm9yZ1wiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9hZXMnKSkucnVsZSk7XFxudmFyIGRhdGEwID0gJ3tcXFwib2F1dGhfdHlwZVxcXCI6XFxcInB3YVxcXCIsXFxcIm9hdXRoX2lkXFxcIjpcXFwicGpOQ1hUSTBJSWV0bHR5cl8xNzM0MDEwMzk0MzMwXFxcIixcXFwidmVyc2lvblxcXCI6XFxcIjMuMC4wXFxcIixcXFwibW9kXFxcIjpcXFwiYXV0aG9yXFxcIixcXFwiY29kZVxcXCI6XFxcImNvbGxlY3RSZWNvbW1lZFxcXCIsXFxcInR5cGVcXFwiOjEsXFxcInBhZ2VcXFwiOicrcGcrJyxcXFwibGltaXRcXFwiOjIwfSc7XFxudmFyIHVybCA9ICdodHRwczovL3ppdnNzeS5oeml5aHV5LmNvbS9wd2EucGhwJztcXG4vL2xvZyh1cmwpXFxubGV0IGh0bWwyID0gcG9zdCh1cmwsZGF0YTApOyBcXG5sZXQgaXRlbT0gSlNPTi5wYXJzZShodG1sMikuZGF0YS5pdGVtO1xcbi8vbG9nKGl0ZW0pXFxuaXRlbS5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICB2YXIgdXA9ZGF0YS51c2VyO1xcbiAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogdXAubmlja25hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogdXAudGh1bWIrbGF6eSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmwgOiAgJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjJytkYXRhLmlkKydAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kZXRhaWxcXFwiKScsXFxufSlcXG52YXIgbGlzdD1kYXRhLnZpZGVvX2xpc3RzO1xcbi8vbG9nKGxpc3QpO1xcbmxpc3QuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5jcmVhdGVkX2F0KydcXFxcdFxcXFx0XFxcXHRcXFxcdCcrZGF0YS5kdXJhdGlvblN0cisnICAnK2RhdGEudGFncyxcXG4gICAgICAgICAgICBpbWc6IGRhdGEudGh1bWJJbWcrbGF6eSxcXG4gICAgICAgICAgICB1cmw6IGRhdGEucGxheVVybC5yZXBsYWNlKC9cXFxcL1xcXFwvLipwbGF5XFxcXC4vLCcvL2xvbmcuJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8zXFxcIixcXG4gICAgICAgIH0pXFxuIH0pXFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzJcIixcIm5hbWVcIjpcIueDreeCueS6jOe6p1wiLFwicGF0aFwiOlwiZXJqaTJcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkPVtdO1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciB0ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7IC8vbG9nKHQpXFxudmFyIHQwPU1hdGguZmxvb3IoRGF0ZS5ub3coKSk7XFxudmFyIGlkPU1ZX1VSTC5zcGxpdCgnIyMnKVsyXTtcXG52YXIgcGc9TVlfVVJMLnNwbGl0KCcjIycpWzFdO1xcbnZhciBjND0gW3t0aXRsZTogJ+acgOaWsCbmnIDng60nLGtleTogJ25ldyZob3QnfV07XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAkLnJlcXVpcmUoXFxcIkNhdGVnb3J5XFxcIikuQ2F0ZWdvcnkoYzQsJ2M0Jywnc2Nyb2xsX2J1dHRvbicsZCk7XFxufVxcbnZhciBkYXRhMD0ne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJwak5DWFRJMElJZXRsdHlyXzE3MzQwMTAzOTQzMzBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJjb2RlXFxcIjpcXFwibGlzdEJ5VGFnXFxcIixcXFwidGFnc1xcXCI6XFxcIicraWQrJ1xcXCIsXFxcIm1vZFxcXCI6XFxcImluZGV4XFxcIixcXFwicGFnZVxcXCI6JytwZysnLFxcXCJ0eXBlXFxcIjpcXFwiJytnZXRNeVZhcignYzQnLCAnbmV3JykrJ1xcXCJ9JztcXG52YXIgdXJsID0gJ2h0dHBzOi8veml2c3N5Lmh6aXlodXkuY29tL3B3YS5waHAnO1xcbi8vbG9nKHVybClcXG5sZXQgaHRtbDIgPSBwb3N0KHVybCxkYXRhMCk7IFxcbmxldCBsaXN0PSBKU09OLnBhcnNlKGh0bWwyKS5kYXRhLml0ZW1zO1xcbi8vbG9nKGxpc3QpO1xcbmlmKGxpc3QhPW51bGwpe1xcbmxpc3QuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5jcmVhdGVkX2F0KydcXFxcdFxcXFx0XFxcXHRcXFxcdCcrZGF0YS5kdXJhdGlvblN0cisnICAnK2RhdGEudGFncyxcXG4gICAgICAgICAgICBpbWc6IGRhdGEudGh1bWJJbWcrbGF6eSxcXG4gICAgICAgICAgICB1cmw6IGRhdGEucGxheVVybC5yZXBsYWNlKC9cXFxcL1xcXFwvLipwbGF5XFxcXC4vLCcvL2xvbmcuJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgIH0pXFxuIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwidXDkuLtcIixcInBhdGhcIjpcInVwXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2FlcycpKS5ydWxlKTtcXG52YXIgYzU9IFt7dGl0bGU6ICfmjqjojZAm5qyi6L+OJuacgOaWsCcsa2V5OiAnMiYzJjQnfV07XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAkLnJlcXVpcmUoXFxcIkNhdGVnb3J5XFxcIikuQ2F0ZWdvcnkoYzUsJ2M1Jywnc2Nyb2xsX2J1dHRvbicsZCk7XFxufVxcbnZhciBkYXRhMCA9ICd7XFxcIm9hdXRoX3R5cGVcXFwiOlxcXCJwd2FcXFwiLFxcXCJvYXV0aF9pZFxcXCI6XFxcInBqTkNYVEkwSUlldGx0eXJfMTczNDAxMDM5NDMzMFxcXCIsXFxcInZlcnNpb25cXFwiOlxcXCIzLjAuMFxcXCIsXFxcIm1vZFxcXCI6XFxcImluZGV4XFxcIixcXFwiY29kZVxcXCI6XFxcInJhbmtMaXN0c1xcXCIsXFxcInR5cGVcXFwiOicrZ2V0TXlWYXIoJ2M1JywgJzInKSsnLFxcXCJwYWdlXFxcIjonK3BnKycsXFxcImxpbWl0XFxcIjoyMH0nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxuLy9sb2coaHRtbDIpXFxubGV0IGl0ZW09IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuLy9sb2coaXRlbSlcXG5pdGVtLmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLm5pY2tuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IGRhdGEudGh1bWIrbGF6eSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uX3JvdW5kXzRcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmwgOiAgJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjJytkYXRhLnV1aWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbDVcXFwiKScsXFxufSlcXG59KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMlwiLFwibmFtZVwiOlwi54Ot54K55LqM57qnMlwiLFwicGF0aFwiOlwiZXJqaTIyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZD1bXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2FlcycpKS5ydWxlKTtcXG52YXIgdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApOyAvL2xvZyh0KVxcbnZhciB0MD1NYXRoLmZsb29yKERhdGUubm93KCkpO1xcbnZhciBpZD1NWV9VUkwuc3BsaXQoJyMjJylbMl07XFxudmFyIHBnPU1ZX1VSTC5zcGxpdCgnIyMnKVsxXTtcXG52YXIgZGF0YTA9J3tcXFwib2F1dGhfdHlwZVxcXCI6XFxcInB3YVxcXCIsXFxcIm9hdXRoX2lkXFxcIjpcXFwicGpOQ1hUSTBJSWV0bHR5cl8xNzM0MDEwMzk0MzMwXFxcIixcXFwidmVyc2lvblxcXCI6XFxcIjMuMC4wXFxcIixcXFwibW9kXFxcIjpcXFwiaW5kZXhcXFwiLFxcXCJjb2RlXFxcIjpcXFwiaG90TGlzdHNcXFwiLFxcXCJ0eXBlXFxcIjpcXFwiJytpZCsnXFxcIixcXFwicGFnZVxcXCI6JytwZysnfSc7XFxudmFyIHVybCA9ICdodHRwczovL3ppdnNzeS5oeml5aHV5LmNvbS9wd2EucGhwJztcXG4vL2xvZyh1cmwpXFxubGV0IGh0bWwyID0gcG9zdCh1cmwsZGF0YTApOyBcXG5sZXQgbGlzdD0gSlNPTi5wYXJzZShodG1sMikuZGF0YTtcXG4vL2xvZyhsaXN0KTtcXG5pZihsaXN0IT1udWxsKXtcXG5saXN0LmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEuY3JlYXRlZF9hdCsnXFxcXHRcXFxcdFxcXFx0XFxcXHQnK2RhdGEuZHVyYXRpb25TdHIrJyAgJytkYXRhLnRhZ3MsXFxuICAgICAgICAgICAgaW1nOiBkYXRhLnRodW1iSW1nK2xhenksXFxuICAgICAgICAgICAgdXJsOiBkYXRhLnBsYXlVcmwucmVwbGFjZSgvXFxcXC9cXFxcLy4qcGxheVxcXFwuLywnLy9sb25nLicpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICB9KVxcbiB9KVxcbn1cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzJcIixcIm5hbWVcIjpcIua8lOWRmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsMlwiLFwicnVsZVwiOlwianM6XFxudmFyIGQ9W107XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9hZXMnKSkucnVsZSk7XFxudmFyIHQgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTsgLy9sb2codClcXG52YXIgdDA9TWF0aC5mbG9vcihEYXRlLm5vdygpKTtcXG52YXIgaWQ9TVlfVVJMLnNwbGl0KCcjIycpWzJdO1xcbnZhciBwZz1NWV9VUkwuc3BsaXQoJyMjJylbMV07XFxudmFyIGRhdGEwPSd7XFxcIm9hdXRoX3R5cGVcXFwiOlxcXCJwd2FcXFwiLFxcXCJvYXV0aF9pZFxcXCI6XFxcInBqTkNYVEkwSUlldGx0eXJfMTczNDAxMDM5NDMzMFxcXCIsXFxcInZlcnNpb25cXFwiOlxcXCIzLjAuMFxcXCIsXFxcIm1vZFxcXCI6XFxcImFjdG9yXFxcIixcXFwiY29kZVxcXCI6XFxcInZpZGVvc1xcXCIsXFxcInBhZ2VcXFwiOicrcGcrJyxcXFwiaWRcXFwiOicraWQrJ30nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxuLy9sb2coaHRtbDIpXFxubGV0IGxpc3Q9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuaWYobGlzdCE9bnVsbCl7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQrJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JytkYXRhLmR1cmF0aW9uU3RyKycgICcrZGF0YS50YWdzLFxcbiAgICAgICAgICAgIGltZzogZGF0YS50aHVtYkltZytsYXp5LFxcbiAgICAgICAgICAgIHVybDogZGF0YS5wbGF5VXJsLnJlcGxhY2UoL1xcXFwvXFxcXC8uKnBsYXlcXFxcLi8sJy8vbG9uZy4nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgfSlcXG4gfSlcXG59XFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8yXCIsXCJuYW1lXCI6XCLkvZzlk4Hor6bmg4VcIixcInBhdGhcIjpcImRldGFpbDNcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkPVtdO1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciB0ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7IC8vbG9nKHQpXFxudmFyIHQwPU1hdGguZmxvb3IoRGF0ZS5ub3coKSk7XFxudmFyIGlkPU1ZX1VSTC5zcGxpdCgnIyMnKVsyXTtcXG52YXIgcGc9TVlfVVJMLnNwbGl0KCcjIycpWzFdO1xcbnZhciDkvZzlk4E9IFt7dGl0bGU6ICfkvZzlk4Em5Zac5qyiJyxrZXk6ICd2aWRlb3MmbGlrZXMnfV07XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAkLnJlcXVpcmUoXFxcIkNhdGVnb3J5XFxcIikuQ2F0ZWdvcnko5L2c5ZOBLCfkvZzlk4EnLCdzY3JvbGxfYnV0dG9uJyxkKTtcXG59XFxudmFyIGRhdGEwPSd7XFxcIm9hdXRoX3R5cGVcXFwiOlxcXCJwd2FcXFwiLFxcXCJvYXV0aF9pZFxcXCI6XFxcInBqTkNYVEkwSUlldGx0eXJfMTczNDAxMDM5NDMzMFxcXCIsXFxcInZlcnNpb25cXFwiOlxcXCIzLjAuMFxcXCIsXFxcIm1vZFxcXCI6XFxcInVzZXJcXFwiLFxcXCJjb2RlXFxcIjpcXFwiJytnZXRNeVZhcign5L2c5ZOBJywndmlkZW9zJykrJ1xcXCIsXFxcImlzQWxsXFxcIjpmYWxzZSxcXFwicGFnZVxcXCI6JytwZysnLFxcXCJ1dWlkXFxcIjpcXFwiJytpZCsnXFxcIn0nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxubGV0IGxpc3Q9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuLy9sb2cobGlzdCk7XFxuaWYobGlzdCE9bnVsbCl7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQrJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JytkYXRhLmR1cmF0aW9uU3RyKycgICcrZGF0YS50YWdzLFxcbiAgICAgICAgICAgIGltZzogZGF0YS50aHVtYkltZytsYXp5LFxcbiAgICAgICAgICAgIHVybDogZGF0YS5wbGF5VXJsLnJlcGxhY2UoL1xcXFwvXFxcXC8uKnBsYXlcXFxcLi8sJy8vbG9uZy4nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzNcXFwiLFxcbiAgICAgICAgfSlcXG4gfSlcXG59XFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnpL7ljLpcIixcInBhdGhcIjpcIm5ld3NcIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciDnpL7ljLo9IFt7dGl0bGU6ICfmnIDmlrAm5pyA54OtJueyvumAiSbop4bpopEnLGtleTogJ25ldyZob3QmZXNzZW5jZSZ2aWRlbyd9XTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICQucmVxdWlyZShcXFwiQ2F0ZWdvcnlcXFwiKS5DYXRlZ29yeSjnpL7ljLosJ+ekvuWMuicsJ3Njcm9sbF9idXR0b24nLGQpO1xcbn1cXG52YXIgZGF0YTAgPSAne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJZbjFkR2NDdHF4THlrUTJyXzE3MzQwOTE5NzU1MTRcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJuZXdzXFxcIixcXFwiY29kZVxcXCI6XFxcImxpc3ROZXdzXFxcIixcXFwicGFnZVxcXCI6JytwZysnLFxcXCJ0eXBlXFxcIjpcXFwiJytnZXRNeVZhcign56S+5Yy6JywnbmV3JykrJ1xcXCJ9JztcXG52YXIgdXJsID0gJ2h0dHBzOi8veml2c3N5Lmh6aXlodXkuY29tL3B3YS5waHAnO1xcbi8vbG9nKHVybClcXG5sZXQgaHRtbDIgPSBwb3N0KHVybCxkYXRhMCk7IFxcbi8vbG9nKGh0bWwyKVxcbmxldCBkYXRhPSBKU09OLnBhcnNlKGh0bWwyKS5kYXRhO1xcbi8vbG9nKGl0ZW0pXFxuZGF0YS5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAvL+eUqOaIt1xcbiAgICAgIHZhciB1c2VyPWRhdGEudXNlcjtcXG4gICAgICAgLy/lm77niYdcXG4gICAgICB2YXIgcGhvdG9zPWRhdGEucGhvdG9zO1xcbiAgICAgIC8v5Li76aKYXFxuICAgICAgdmFyIHRvcGljPWRhdGEudG9waWM7XFxuICAgICAgLy/lnIjlrZBcXG4gICAgICB2YXIgZ3JvdXA9ZGF0YS5ncm91cDtcXG4gICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogdXNlci5uaWNrbmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiB1c2VyLnRodW1iX3VybCtsYXp5LFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIHVybCA6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrdXNlci51dWlkKydAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kZXRhaWwzXFxcIiknLFxcbiAgICAgICB9LHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ZGF0YS5jb250ZW50LFxcbiAgICAgICAgICAgICAgICB1cmw6ICAgICdoaWtlcjovL2VtcHR5IyMnK2RhdGEuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbDRcXFwiKScsXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtsaW5lVmlzaWJsZTogZmFsc2V9XFxuICAgICAgIH0pO1xcbiAgICAgICBwaG90b3MuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgaW1nOiBkYXRhLm1lZGlhX3VybF9mdWxsK2xhenksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicGljXzNfY2FyZFxcXCIsXFxuICAgICAgICAgICAgICAgIHVybCA6IGRhdGEubWVkaWFfdXJsX2Z1bGwsXFxuICAgICAgIH0pXFxuICAgICAgfSlcXG4gICAgICAgaWYodG9waWMhPW51bGwpe1xcbiAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTp0b3BpYy5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrdG9waWMuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3RvcGljXFxcIiknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgIH0pXFxuICAgICAgfVxcbiAgICAgIGlmKGdyb3VwIT1udWxsKXtcXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTpncm91cC5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrZ3JvdXAuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2dyb3VwXFxcIiknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgIH0pXFxuICAgICAgfVxcbn0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8yXCIsXCJuYW1lXCI6XCLnpL7ljLrkuoznuqdcIixcInBhdGhcIjpcImRldGFpbDRcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkPVtdO1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciB0ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7IC8vbG9nKHQpXFxudmFyIHQwPU1hdGguZmxvb3IoRGF0ZS5ub3coKSk7XFxudmFyIGlkPU1ZX1VSTC5zcGxpdCgnIyMnKVsxXTtcXG52YXIgZGF0YTA9J3tcXFwib2F1dGhfdHlwZVxcXCI6XFxcInB3YVxcXCIsXFxcIm9hdXRoX2lkXFxcIjpcXFwicGpOQ1hUSTBJSWV0bHR5cl8xNzM0MDEwMzk0MzMwXFxcIixcXFwidmVyc2lvblxcXCI6XFxcIjMuMC4wXFxcIixcXFwiY29kZVxcXCI6XFxcImRldGFpbFxcXCIsXFxcImlkXFxcIjonK2lkKycsXFxcIm1vZFxcXCI6XFxcIm5ld3NcXFwiLFxcXCJuZXdzX2lkXFxcIjonK2lkKyd9JztcXG52YXIgdXJsID0gJ2h0dHBzOi8veml2c3N5Lmh6aXlodXkuY29tL3B3YS5waHAnO1xcbi8vbG9nKHVybClcXG5sZXQgaHRtbDIgPSBwb3N0KHVybCxkYXRhMCk7IFxcbmxldCBkYXRhPSBKU09OLnBhcnNlKGh0bWwyKS5kYXRhLmRldGFpbDtcXG4gICAgICAgLy/nlKjmiLdcXG4gICAgICB2YXIgdXNlcj1kYXRhLnVzZXI7XFxuICAgICAgIC8v5Zu+54mHXFxuICAgICAgdmFyIHBob3Rvcz1kYXRhLnBob3RvcztcXG4gICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogdXNlci5uaWNrbmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiB1c2VyLnRodW1iX3VybCtsYXp5LFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIHVybCA6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrdXNlci51dWlkKydAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kZXRhaWwzXFxcIiknLFxcbiAgICAgICB9LHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuY29udGVudCxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsb25nX3RleHQnLFxcbiAgICAgICB9KTtcXG4gICAgICAgaWYoZGF0YS52aWRlb3MubGVuZ3RoICE9IDApe1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfop4bpopHilrbvuI8nLFxcbiAgICAgICAgICAgIGltZzpkYXRhLnZpZGVvc1swXS5jb3Zlcl91cmwrbGF6eSxcXG4gICAgICAgICAgICB1cmw6IGRhdGEudmlkZW9zWzBdWydtZWRpYV91cmxfZnVsbCddLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgICAgICB9KTtcXG4gICAgICB9XFxuICAgICAgIHBob3Rvcy5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBpbWc6IGRhdGEubWVkaWFfdXJsX2Z1bGwrbGF6eSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJwaWNfMV9mdWxsXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsIDogZGF0YS5tZWRpYV91cmxfZnVsbCxcXG4gICAgICAgfSlcXG4gICAgICB9KVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Li76aKYXCIsXCJwYXRoXCI6XCJ0b3BpY1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQ9W107XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9hZXMnKSkucnVsZSk7XFxudmFyIGlkPU1ZX1VSTC5zcGxpdCgnIyMnKVsyXTtcXG52YXIgcGc9TVlfVVJMLnNwbGl0KCcjIycpWzFdO1xcbnZhciDkuLvpopg9IFt7dGl0bGU6ICfmnIDmlrAm6YeR5biBJyxrZXk6ICduZXcmY29pbnMnfV07XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAkLnJlcXVpcmUoXFxcIkNhdGVnb3J5XFxcIikuQ2F0ZWdvcnko5Li76aKYLCfkuLvpopgnLCdzY3JvbGxfYnV0dG9uJyxkKTtcXG59XFxudmFyIGRhdGEwID0gJ3tcXFwib2F1dGhfdHlwZVxcXCI6XFxcInB3YVxcXCIsXFxcIm9hdXRoX2lkXFxcIjpcXFwiWHhTZDhwdHRCYUlrQUtyRl8xNzM0MDk3NTkxNzUwXFxcIixcXFwidmVyc2lvblxcXCI6XFxcIjMuMC4wXFxcIixcXFwibW9kXFxcIjpcXFwibmV3c1xcXCIsXFxcImNvZGVcXFwiOlxcXCJsaXN0TmV3c1xcXCIsXFxcInBhZ2VcXFwiOicrcGcrJyxcXFwidHlwZVxcXCI6XFxcIicrZ2V0TXlWYXIoJ+S4u+mimCcsJ25ldycpKydcXFwiLFxcXCJpZFxcXCI6JytpZCsnLFxcXCJjYXRlXFxcIjpcXFwidG9waWNcXFwifSc7XFxudmFyIHVybCA9ICdodHRwczovL3ppdnNzeS5oeml5aHV5LmNvbS9wd2EucGhwJztcXG4vL2xvZyh1cmwpXFxubGV0IGh0bWwyID0gcG9zdCh1cmwsZGF0YTApOyBcXG4vL2xvZyhodG1sMilcXG5sZXQgZGF0YT0gSlNPTi5wYXJzZShodG1sMikuZGF0YTtcXG4vL2xvZyhpdGVtKVxcbmRhdGEuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgLy/nlKjmiLdcXG4gICAgICB2YXIgdXNlcj1kYXRhLnVzZXI7XFxuICAgICAgIC8v5Zu+54mHXFxuICAgICAgdmFyIHBob3Rvcz1kYXRhLnBob3RvcztcXG4gICAgICAvL+S4u+mimFxcbiAgICAgIHZhciB0b3BpYz1kYXRhLnRvcGljO1xcbiAgICAgIC8v5ZyI5a2QXFxuICAgICAgdmFyIGdyb3VwPWRhdGEuZ3JvdXA7XFxuICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHVzZXIubmlja25hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogdXNlci50aHVtYl91cmwrbGF6eSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmwgOiAnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIyMnK3VzZXIudXVpZCsnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsM1xcXCIpJyxcXG4gICAgICAgfSx7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOmRhdGEuY29udGVudCxcXG4gICAgICAgICAgICAgICAgdXJsOiAgICAnaGlrZXI6Ly9lbXB0eSMjJytkYXRhLmlkKydAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw0XFxcIiknLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7bGluZVZpc2libGU6IGZhbHNlfVxcbiAgICAgICB9KTtcXG4gICAgICAgcGhvdG9zLmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGltZzogZGF0YS5tZWRpYV91cmxfZnVsbCtsYXp5LFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInBpY18zX2NhcmRcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmwgOiBkYXRhLm1lZGlhX3VybF9mdWxsLFxcbiAgICAgICB9KVxcbiAgICAgIH0pXFxuICAgICAgIGlmKHRvcGljIT1udWxsKXtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6dG9waWMubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIyMnK3RvcGljLmlkKydAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b3BpY1xcXCIpJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICB9KVxcbiAgICAgIH1cXG4gICAgICBpZihncm91cCE9bnVsbCl7XFxuICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6Z3JvdXAubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOidoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrZ3JvdXAuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2dyb3VwXFxcIiknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgIH0pXFxuICAgICAgfVxcbn0pXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlnIjlrZBcIixcInBhdGhcIjpcImdyb3VwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZD1bXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2FlcycpKS5ydWxlKTtcXG52YXIg5ZyI5a2QPSBbe3RpdGxlOiAn5pyA5pawJumHkeW4gScsa2V5OiAnbmV3JmNvaW5zJ31dO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgJC5yZXF1aXJlKFxcXCJDYXRlZ29yeVxcXCIpLkNhdGVnb3J5KOWciOWtkCwn5ZyI5a2QJywnc2Nyb2xsX2J1dHRvbicsZCk7XFxufVxcbnZhciBpZD1NWV9VUkwuc3BsaXQoJyMjJylbMl07XFxudmFyIHBnPU1ZX1VSTC5zcGxpdCgnIyMnKVsxXTtcXG52YXIgZGF0YTAgPSAne1xcXCJvYXV0aF90eXBlXFxcIjpcXFwicHdhXFxcIixcXFwib2F1dGhfaWRcXFwiOlxcXCJYeFNkOHB0dEJhSWtBS3JGXzE3MzQwOTc1OTE3NTBcXFwiLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiMy4wLjBcXFwiLFxcXCJtb2RcXFwiOlxcXCJuZXdzXFxcIixcXFwiY29kZVxcXCI6XFxcImxpc3ROZXdzXFxcIixcXFwicGFnZVxcXCI6JytwZysnLFxcXCJ0eXBlXFxcIjpcXFwiJytnZXRNeVZhcign5ZyI5a2QJywnbmV3JykrJ1xcXCIsXFxcImlkXFxcIjonK2lkKycsXFxcImNhdGVcXFwiOlxcXCJncm91cFxcXCJ9JztcXG52YXIgdXJsID0gJ2h0dHBzOi8veml2c3N5Lmh6aXlodXkuY29tL3B3YS5waHAnO1xcbi8vbG9nKHVybClcXG5sZXQgaHRtbDIgPSBwb3N0KHVybCxkYXRhMCk7IFxcbi8vbG9nKGh0bWwyKVxcbmxldCBkYXRhPSBKU09OLnBhcnNlKGh0bWwyKS5kYXRhO1xcbi8vbG9nKGl0ZW0pXFxuZGF0YS5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAvL+eUqOaIt1xcbiAgICAgIHZhciB1c2VyPWRhdGEudXNlcjtcXG4gICAgICAgLy/lm77niYdcXG4gICAgICB2YXIgcGhvdG9zPWRhdGEucGhvdG9zO1xcbiAgICAgIC8v5Li76aKYXFxuICAgICAgdmFyIHRvcGljPWRhdGEudG9waWM7XFxuICAgICAgLy/lnIjlrZBcXG4gICAgICB2YXIgZ3JvdXA9ZGF0YS5ncm91cDtcXG4gICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogdXNlci5uaWNrbmFtZSxcXG4gICAgICAgICAgICAgICAgaW1nOiB1c2VyLnRodW1iX3VybCtsYXp5LFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIHVybCA6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrdXNlci51dWlkKydAcnVsZT1qczokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kZXRhaWwzXFxcIiknLFxcbiAgICAgICB9LHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ZGF0YS5jb250ZW50LFxcbiAgICAgICAgICAgICAgICB1cmw6ICAgICdoaWtlcjovL2VtcHR5IyMnK2RhdGEuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbDRcXFwiKScsXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtsaW5lVmlzaWJsZTogZmFsc2V9XFxuICAgICAgIH0pO1xcbiAgICAgICBwaG90b3MuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgaW1nOiBkYXRhLm1lZGlhX3VybF9mdWxsK2xhenksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicGljXzNfY2FyZFxcXCIsXFxuICAgICAgICAgICAgICAgIHVybCA6IGRhdGEubWVkaWFfdXJsX2Z1bGwsXFxuICAgICAgIH0pXFxuICAgICAgfSlcXG4gICAgICAgaWYodG9waWMhPW51bGwpe1xcbiAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTp0b3BpYy5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrdG9waWMuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3RvcGljXFxcIiknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgIH0pXFxuICAgICAgfVxcbiAgICAgIGlmKGdyb3VwIT1udWxsKXtcXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTpncm91cC5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjIycrZ3JvdXAuaWQrJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2dyb3VwXFxcIiknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgIH0pXFxuICAgICAgfVxcbn0pXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8yXCIsXCJuYW1lXCI6XCLmipbpn7Pljp/liJvkuoznuqdcIixcInBhdGhcIjpcImRldGFpbDVcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkPVtdO1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvYWVzJykpLnJ1bGUpO1xcbnZhciB0ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7IC8vbG9nKHQpXFxudmFyIHQwPU1hdGguZmxvb3IoRGF0ZS5ub3coKSk7XFxudmFyIGlkPU1ZX1VSTC5zcGxpdCgnIyMnKVsyXTtcXG52YXIgcGc9TVlfVVJMLnNwbGl0KCcjIycpWzFdO1xcbnZhciDnsonkuJ3lm6I9IFt7dGl0bGU6ICfnsonkuJ3lm6Im5L2c5ZOBJyxrZXk6ICdjbHViJnVzZXInfV07XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAkLnJlcXVpcmUoXFxcIkNhdGVnb3J5XFxcIikuQ2F0ZWdvcnko57KJ5Lid5ZuiLCfnsonkuJ3lm6InLCdzY3JvbGxfYnV0dG9uJyxkKTtcXG59XFxudmFyIGRhdGEwPSd7XFxcIm9hdXRoX3R5cGVcXFwiOlxcXCJwd2FcXFwiLFxcXCJvYXV0aF9pZFxcXCI6XFxcInBqTkNYVEkwSUlldGx0eXJfMTczNDAxMDM5NDMzMFxcXCIsXFxcInZlcnNpb25cXFwiOlxcXCIzLjAuMFxcXCIsXFxcImNvZGVcXFwiOlxcXCJ2aWRlb3NcXFwiLFxcXCJtb2RcXFwiOlxcXCInK2dldE15VmFyKCfnsonkuJ3lm6InLCdjbHViJykrJ1xcXCIsXFxcImlzQWxsXFxcIjpmYWxzZSxcXFwicGFnZVxcXCI6JytwZysnLFxcXCJ1dWlkXFxcIjpcXFwiJytpZCsnXFxcIn0nO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly96aXZzc3kuaHppeWh1eS5jb20vcHdhLnBocCc7XFxuLy9sb2codXJsKVxcbmxldCBodG1sMiA9IHBvc3QodXJsLGRhdGEwKTsgXFxuaWYoZ2V0TXlWYXIoJ+eyieS4neWboicsJ2NsdWInKT09J2NsdWInKXtcXG5sZXQgbGlzdD0gSlNPTi5wYXJzZShodG1sMikuZGF0YS5pdGVtO1xcbmxpc3QuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5jcmVhdGVkX2F0KydcXFxcdFxcXFx0XFxcXHRcXFxcdCcrZGF0YS5kdXJhdGlvblN0cisnICAnK2RhdGEudGFncyxcXG4gICAgICAgICAgICBpbWc6IGRhdGEudGh1bWJJbWcrbGF6eSxcXG4gICAgICAgICAgICB1cmw6IGRhdGEucGxheVVybC5yZXBsYWNlKC9cXFxcL1xcXFwvLipwbGF5XFxcXC4vLCcvL2xvbmcuJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgIH0pXFxuIH0pXFxuXFxufWVsc2V7XFxubGV0IGxpc3Q9IEpTT04ucGFyc2UoaHRtbDIpLmRhdGE7XFxuLy9sb2cobGlzdCk7XFxuaWYobGlzdCE9bnVsbCl7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQrJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JytkYXRhLmR1cmF0aW9uU3RyKycgICcrZGF0YS50YWdzLFxcbiAgICAgICAgICAgIGltZzogZGF0YS50aHVtYkltZytsYXp5LFxcbiAgICAgICAgICAgIHVybDogZGF0YS5wbGF5VXJsLnJlcGxhY2UoL1xcXFwvXFxcXC8uKnBsYXlcXFxcLi8sJy8vbG9uZy4nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzNcXFwiLFxcbiAgICAgICAgfSlcXG4gfSlcXG59XFxufVxcbnNldFJlc3VsdChkKVwifV0iLCJpY29uIjoiaHR0cHM6Ly9tb2d1YS5jby9kb3dubG9hZC8wYTk4ZTE1NTczZTlkY2NiNjMwM2I5ZTRhNDY1MTg2Zi1pY29uLnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment